Merge "Add 3D filetype for STL files"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 22 Jun 2017 16:49:40 +0000 (16:49 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 22 Jun 2017 16:49:40 +0000 (16:49 +0000)
4569 files changed:
.mailmap
.rubocop.yml [deleted file]
.travis.yml
CODE_OF_CONDUCT.md [new file with mode: 0644]
CREDITS
Gemfile [deleted file]
Gemfile.lock [deleted file]
HISTORY
RELEASE-NOTES-1.29 [deleted file]
RELEASE-NOTES-1.30 [new file with mode: 0644]
Rakefile [deleted file]
autoload.php
composer.json
docs/extension.schema.v1.json
docs/extension.schema.v2.json
docs/hooks.txt
includes/Autopromote.php
includes/Block.php
includes/Category.php
includes/CategoryViewer.php
includes/DefaultSettings.php
includes/EditPage.php
includes/GlobalFunctions.php
includes/Linker.php
includes/MediaWiki.php
includes/MediaWikiServices.php
includes/MimeMagic.php
includes/OutputPage.php
includes/PHPVersionCheck.php
includes/Preferences.php
includes/ReadOnlyMode.php [new file with mode: 0644]
includes/Revision.php
includes/Sanitizer.php
includes/ServiceWiring.php
includes/Setup.php
includes/SiteStats.php
includes/TemplateParser.php
includes/Title.php
includes/WatchedItemStore.php
includes/WebStart.php
includes/WikiMap.php
includes/WikiReference.php [new file with mode: 0644]
includes/Xml.php
includes/XmlJsCode.php [new file with mode: 0644]
includes/actions/Action.php
includes/actions/HistoryAction.php
includes/actions/InfoAction.php
includes/api/ApiBase.php
includes/api/ApiCSPReport.php
includes/api/ApiComparePages.php
includes/api/ApiDisabled.php
includes/api/ApiErrorFormatter.php
includes/api/ApiFeedContributions.php
includes/api/ApiFormatBase.php
includes/api/ApiHelp.php
includes/api/ApiHelpParamValueMessage.php
includes/api/ApiLogin.php
includes/api/ApiMain.php
includes/api/ApiOpenSearch.php
includes/api/ApiPageSet.php
includes/api/ApiParamInfo.php
includes/api/ApiParse.php
includes/api/ApiQueryAllImages.php
includes/api/ApiQueryAllUsers.php
includes/api/ApiQueryContributors.php
includes/api/ApiQueryDisabled.php
includes/api/ApiQueryPagePropNames.php
includes/api/ApiQueryRandom.php
includes/api/ApiQueryRevisions.php
includes/api/ApiQueryRevisionsBase.php
includes/api/ApiQuerySearch.php
includes/api/ApiQueryTags.php
includes/api/ApiQueryUserInfo.php
includes/api/ApiQueryUsers.php
includes/api/ApiResetPassword.php
includes/api/ApiSetPageLanguage.php [changed mode: 0755->0644]
includes/api/ApiUserrights.php
includes/api/i18n/cs.json
includes/api/i18n/de.json
includes/api/i18n/en-gb.json
includes/api/i18n/en.json
includes/api/i18n/es.json
includes/api/i18n/fa.json
includes/api/i18n/fr.json
includes/api/i18n/gl.json
includes/api/i18n/he.json
includes/api/i18n/hu.json
includes/api/i18n/it.json
includes/api/i18n/ja.json
includes/api/i18n/ko.json
includes/api/i18n/ksh.json
includes/api/i18n/lb.json
includes/api/i18n/lt.json
includes/api/i18n/mk.json
includes/api/i18n/nb.json
includes/api/i18n/nl.json
includes/api/i18n/pl.json
includes/api/i18n/pt-br.json
includes/api/i18n/pt.json
includes/api/i18n/qqq.json
includes/api/i18n/ru.json
includes/api/i18n/sv.json
includes/api/i18n/uk.json
includes/api/i18n/zh-hans.json
includes/auth/AuthManager.php
includes/auth/Throttler.php
includes/cache/BacklinkCache.php
includes/cache/FileCacheBase.php
includes/cache/MessageCache.php
includes/cache/localisation/LCStoreDB.php
includes/changes/ChangesList.php
includes/changes/ChangesListBooleanFilter.php
includes/changes/ChangesListBooleanFilterGroup.php
includes/changes/ChangesListFilter.php
includes/changes/ChangesListFilterGroup.php
includes/changes/ChangesListStringOptionsFilter.php
includes/changes/ChangesListStringOptionsFilterGroup.php
includes/changes/EnhancedChangesList.php
includes/changes/OldChangesList.php
includes/changes/RecentChange.php
includes/changetags/ChangeTags.php
includes/collation/BashkirUppercaseCollation.php [new file with mode: 0644]
includes/collation/Collation.php
includes/collation/CollationFa.php
includes/collation/CustomUppercaseCollation.php [new file with mode: 0644]
includes/config/EtcdConfig.php
includes/content/ContentHandler.php
includes/content/FileContentHandler.php
includes/content/WikiTextStructure.php
includes/context/ContextSource.php
includes/context/DerivativeContext.php
includes/context/IContextSource.php
includes/context/RequestContext.php
includes/db/DatabaseOracle.php
includes/db/MWLBFactory.php
includes/debug/logger/ConsoleLogger.php [new file with mode: 0644]
includes/debug/logger/ConsoleSpi.php [new file with mode: 0644]
includes/debug/logger/monolog/AvroFormatter.php
includes/deferred/DeferredUpdates.php
includes/deferred/LinksDeletionUpdate.php
includes/deferred/LinksUpdate.php
includes/deferred/SiteStatsUpdate.php
includes/exception/MWException.php
includes/exception/MWExceptionHandler.php
includes/exception/MWExceptionRenderer.php
includes/filebackend/filejournal/DBFileJournal.php
includes/filebackend/lockmanager/MySqlLockManager.php
includes/filerepo/FileBackendDBRepoWrapper.php
includes/filerepo/file/File.php
includes/filerepo/file/ForeignDBFile.php
includes/filerepo/file/LocalFile.php
includes/gallery/ImageGalleryBase.php
includes/gallery/TraditionalImageGallery.php
includes/htmlform/OOUIHTMLForm.php
includes/htmlform/fields/HTMLUsersMultiselectField.php
includes/http/Http.php
includes/import/WikiImporter.php
includes/installer/DatabaseUpdater.php
includes/installer/Installer.php
includes/installer/LocalSettingsGenerator.php
includes/installer/MssqlInstaller.php
includes/installer/MssqlUpdater.php
includes/installer/MysqlInstaller.php
includes/installer/OracleInstaller.php
includes/installer/PostgresInstaller.php
includes/installer/SqliteInstaller.php
includes/installer/WebInstallerLanguage.php
includes/installer/i18n/ar.json
includes/installer/i18n/ast.json
includes/installer/i18n/ba.json
includes/installer/i18n/bg.json
includes/installer/i18n/br.json
includes/installer/i18n/bs.json
includes/installer/i18n/ca.json
includes/installer/i18n/ce.json
includes/installer/i18n/es.json
includes/installer/i18n/eu.json
includes/installer/i18n/fa.json
includes/installer/i18n/fr.json
includes/installer/i18n/hi.json
includes/installer/i18n/hu.json
includes/installer/i18n/lij.json
includes/installer/i18n/lv.json
includes/installer/i18n/mk.json
includes/installer/i18n/mzn.json
includes/installer/i18n/nl.json
includes/installer/i18n/pt-br.json
includes/installer/i18n/pt.json
includes/installer/i18n/th.json
includes/installer/i18n/tr.json
includes/installer/i18n/yi.json
includes/installer/i18n/zh-hant.json
includes/interwiki/ClassicInterwikiLookup.php
includes/interwiki/Interwiki.php
includes/interwiki/InterwikiLookup.php
includes/interwiki/InterwikiLookupAdapter.php
includes/jobqueue/Job.php
includes/jobqueue/JobQueueDB.php
includes/jobqueue/JobQueueGroup.php
includes/jobqueue/JobQueueRedis.php
includes/jobqueue/JobRunner.php
includes/jobqueue/jobs/RecentChangesUpdateJob.php
includes/jobqueue/jobs/RefreshLinksJob.php
includes/jobqueue/jobs/ThumbnailRenderJob.php
includes/libs/CSSMin.php
includes/libs/CryptRand.php
includes/libs/IEUrlExtension.php
includes/libs/MultiHttpClient.php
includes/libs/filebackend/SwiftFileBackend.php
includes/libs/http/HttpAcceptNegotiator.php [new file with mode: 0644]
includes/libs/http/HttpAcceptParser.php [new file with mode: 0644]
includes/libs/lockmanager/DBLockManager.php
includes/libs/lockmanager/PostgreSqlLockManager.php
includes/libs/mime/IEContentAnalyzer.php
includes/libs/mime/MimeAnalyzer.php
includes/libs/objectcache/MemcachedClient.php
includes/libs/objectcache/MemcachedPeclBagOStuff.php
includes/libs/objectcache/MultiWriteBagOStuff.php
includes/libs/objectcache/WANObjectCache.php
includes/libs/rdbms/TransactionProfiler.php
includes/libs/rdbms/database/DBConnRef.php
includes/libs/rdbms/database/Database.php
includes/libs/rdbms/database/DatabaseMssql.php
includes/libs/rdbms/database/DatabaseMysql.php
includes/libs/rdbms/database/DatabaseMysqlBase.php
includes/libs/rdbms/database/DatabaseMysqli.php
includes/libs/rdbms/database/DatabasePostgres.php
includes/libs/rdbms/database/DatabaseSqlite.php
includes/libs/rdbms/database/IDatabase.php
includes/libs/rdbms/database/IMaintainableDatabase.php
includes/libs/rdbms/database/resultwrapper/IResultWrapper.php
includes/libs/rdbms/exception/DBAccessError.php
includes/libs/rdbms/exception/DBConnectionError.php
includes/libs/rdbms/exception/DBError.php
includes/libs/rdbms/exception/DBExpectedError.php
includes/libs/rdbms/exception/DBQueryError.php
includes/libs/rdbms/exception/DBReadOnlyError.php
includes/libs/rdbms/exception/DBReplicationWaitError.php
includes/libs/rdbms/exception/DBTransactionError.php
includes/libs/rdbms/exception/DBTransactionSizeError.php
includes/libs/rdbms/exception/DBUnexpectedError.php
includes/libs/rdbms/lbfactory/ILBFactory.php
includes/libs/rdbms/lbfactory/LBFactory.php
includes/libs/rdbms/loadbalancer/ILoadBalancer.php
includes/libs/rdbms/loadbalancer/LoadBalancer.php
includes/libs/rdbms/loadmonitor/LoadMonitor.php
includes/libs/rdbms/loadmonitor/LoadMonitorNull.php
includes/libs/redis/RedisConnectionPool.php
includes/libs/stats/BufferingStatsdDataFactory.php
includes/libs/stats/MediawikiStatsdDataFactory.php [new file with mode: 0644]
includes/libs/stats/NullStatsdDataFactory.php
includes/libs/stats/SamplingStatsdClient.php
includes/libs/xmp/XMP.php
includes/linkeddata/PageDataRequestHandler.php [new file with mode: 0644]
includes/logging/LogEntry.php
includes/logging/LogEventsList.php
includes/logging/LogPage.php
includes/logging/LogPager.php
includes/mail/EmailNotification.php
includes/media/BitmapMetadataHandler.php
includes/media/DjVu.php
includes/media/ExifBitmap.php
includes/media/FormatMetadata.php
includes/media/GIFMetadataExtractor.php
includes/media/Jpeg.php
includes/media/MediaHandler.php
includes/media/PNGMetadataExtractor.php
includes/media/SVGMetadataExtractor.php
includes/objectcache/SqlBagOStuff.php
includes/page/Article.php
includes/page/CategoryPage.php
includes/page/ImagePage.php
includes/page/WikiPage.php
includes/pager/RangeChronologicalPager.php [new file with mode: 0644]
includes/pager/ReverseChronologicalPager.php
includes/pager/TablePager.php
includes/parser/BlockLevelPass.php
includes/parser/MWTidy.php
includes/parser/Parser.php
includes/parser/ParserCache.php
includes/parser/ParserDiffTest.php
includes/parser/ParserOptions.php
includes/parser/ParserOutput.php
includes/parser/Preprocessor.php
includes/parser/Preprocessor_DOM.php
includes/parser/Preprocessor_Hash.php
includes/password/Pbkdf2Password.php
includes/profiler/output/ProfilerOutputDb.php
includes/registration/ExtensionProcessor.php
includes/registration/ExtensionRegistry.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderClientHtml.php
includes/resourceloader/ResourceLoaderContext.php
includes/resourceloader/ResourceLoaderModule.php
includes/resourceloader/ResourceLoaderOOUIFileModule.php [new file with mode: 0644]
includes/resourceloader/ResourceLoaderOOUIImageModule.php
includes/resourceloader/ResourceLoaderOOUIModule.php [new file with mode: 0644]
includes/revisiondelete/RevDelFileItem.php
includes/search/SearchEngine.php
includes/services/ServiceContainer.php
includes/session/SessionBackend.php
includes/session/SessionManager.php
includes/site/CachingSiteStore.php
includes/skins/BaseTemplate.php
includes/skins/Skin.php
includes/skins/SkinTemplate.php
includes/specialpage/ChangesListSpecialPage.php
includes/specialpage/PageQueryPage.php
includes/specialpage/QueryPage.php
includes/specialpage/SpecialPage.php
includes/specialpage/SpecialPageFactory.php
includes/specialpage/WantedQueryPage.php
includes/specials/SpecialAutoblockList.php
includes/specials/SpecialChangeContentModel.php
includes/specials/SpecialContributions.php
includes/specials/SpecialJavaScriptTest.php
includes/specials/SpecialMIMEsearch.php
includes/specials/SpecialMediaStatistics.php
includes/specials/SpecialMostinterwikis.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialNewimages.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialPageData.php [new file with mode: 0644]
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialSearch.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialUpload.php
includes/specials/SpecialUserrights.php
includes/specials/SpecialVersion.php
includes/specials/pagers/ActiveUsersPager.php
includes/specials/pagers/BlockListPager.php
includes/specials/pagers/ContribsPager.php
includes/specials/pagers/DeletedContribsPager.php
includes/specials/pagers/NewFilesPager.php
includes/specials/pagers/UsersPager.php
includes/templates/EnhancedChangesListGroup.mustache
includes/tidy/RaggettWrapper.php
includes/tidy/RemexCompatFormatter.php
includes/tidy/tidy.conf
includes/title/MalformedTitleException.php
includes/upload/UploadBase.php
includes/user/PasswordReset.php
includes/user/User.php
includes/user/UserGroupMembership.php
includes/utils/AutoloadGenerator.php
includes/utils/BatchRowIterator.php
includes/utils/ZipDirectoryReader.php
includes/utils/ZipDirectoryReaderError.php [new file with mode: 0644]
includes/widget/SelectWithInputWidget.php [new file with mode: 0644]
includes/widget/search/InterwikiSearchResultSetWidget.php
includes/widget/search/InterwikiSearchResultWidget.php
includes/widget/search/SearchFormWidget.php
includes/widget/search/SimpleSearchResultSetWidget.php
includes/widget/search/SimpleSearchResultWidget.php
languages/FakeConverter.php
languages/Language.php
languages/LanguageConverter.php
languages/MessageLocalizer.php [new file with mode: 0644]
languages/classes/LanguageEn.php [new file with mode: 0644]
languages/data/Names.php
languages/data/ZhConversion.php
languages/data/grammarTransformations/uk.json
languages/i18n/ace.json
languages/i18n/ady-cyrl.json
languages/i18n/aeb-arab.json
languages/i18n/af.json
languages/i18n/aln.json
languages/i18n/am.json
languages/i18n/an.json
languages/i18n/ang.json
languages/i18n/anp.json
languages/i18n/ar.json
languages/i18n/arc.json
languages/i18n/arn.json
languages/i18n/arq.json
languages/i18n/ary.json
languages/i18n/arz.json
languages/i18n/as.json
languages/i18n/ast.json
languages/i18n/atj.json
languages/i18n/av.json
languages/i18n/awa.json
languages/i18n/az.json
languages/i18n/azb.json
languages/i18n/ba.json
languages/i18n/ban.json
languages/i18n/bar.json
languages/i18n/bbc-latn.json
languages/i18n/bcc.json
languages/i18n/bcl.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bgn.json
languages/i18n/bho.json
languages/i18n/bjn.json
languages/i18n/bn.json
languages/i18n/bpy.json
languages/i18n/br.json
languages/i18n/brh.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/cdo.json
languages/i18n/ce.json
languages/i18n/ceb.json
languages/i18n/ch.json
languages/i18n/ckb.json
languages/i18n/co.json
languages/i18n/cps.json
languages/i18n/crh-cyrl.json
languages/i18n/crh-latn.json
languages/i18n/cs.json
languages/i18n/csb.json
languages/i18n/cu.json
languages/i18n/cv.json
languages/i18n/cy.json
languages/i18n/da.json
languages/i18n/de-formal.json
languages/i18n/de.json
languages/i18n/din.json [new file with mode: 0644]
languages/i18n/diq.json
languages/i18n/dsb.json
languages/i18n/dtp.json
languages/i18n/dty.json
languages/i18n/dz.json
languages/i18n/ee.json
languages/i18n/egl.json
languages/i18n/el.json
languages/i18n/en-gb.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es-formal.json [new file with mode: 0644]
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/ext.json
languages/i18n/fa.json
languages/i18n/ff.json
languages/i18n/fi.json
languages/i18n/fit.json
languages/i18n/fo.json
languages/i18n/fr.json
languages/i18n/frc.json
languages/i18n/frp.json
languages/i18n/frr.json
languages/i18n/fur.json
languages/i18n/fy.json
languages/i18n/ga.json
languages/i18n/gag.json
languages/i18n/gan-hans.json
languages/i18n/gan-hant.json
languages/i18n/gd.json
languages/i18n/gl.json
languages/i18n/glk.json
languages/i18n/gn.json
languages/i18n/gom-deva.json
languages/i18n/gom-latn.json
languages/i18n/gor.json
languages/i18n/got.json
languages/i18n/grc.json
languages/i18n/gsw.json
languages/i18n/gu.json
languages/i18n/gv.json
languages/i18n/ha.json
languages/i18n/hak.json
languages/i18n/haw.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hif-latn.json
languages/i18n/hil.json
languages/i18n/hr.json
languages/i18n/hrx.json
languages/i18n/hsb.json
languages/i18n/ht.json
languages/i18n/hu.json
languages/i18n/hy.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/ie.json
languages/i18n/ig.json
languages/i18n/ilo.json
languages/i18n/inh.json
languages/i18n/io.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jam.json
languages/i18n/jbo.json
languages/i18n/jut.json
languages/i18n/jv.json
languages/i18n/ka.json
languages/i18n/kaa.json
languages/i18n/kab.json
languages/i18n/kbd-cyrl.json
languages/i18n/kbp.json [new file with mode: 0644]
languages/i18n/khw.json
languages/i18n/kiu.json
languages/i18n/kk-arab.json
languages/i18n/kk-cyrl.json
languages/i18n/kk-latn.json
languages/i18n/kl.json
languages/i18n/km.json
languages/i18n/kn.json
languages/i18n/ko.json
languages/i18n/koi.json
languages/i18n/krc.json
languages/i18n/krl.json
languages/i18n/ksh.json
languages/i18n/ku-latn.json
languages/i18n/kw.json
languages/i18n/ky.json
languages/i18n/la.json
languages/i18n/lad.json
languages/i18n/lb.json
languages/i18n/lez.json
languages/i18n/lfn.json
languages/i18n/lg.json
languages/i18n/li.json
languages/i18n/lij.json
languages/i18n/liv.json
languages/i18n/lki.json
languages/i18n/lmo.json
languages/i18n/ln.json
languages/i18n/lo.json
languages/i18n/loz.json
languages/i18n/lrc.json
languages/i18n/lt.json
languages/i18n/ltg.json
languages/i18n/lus.json
languages/i18n/lv.json
languages/i18n/lzh.json
languages/i18n/lzz.json
languages/i18n/mai.json
languages/i18n/map-bms.json
languages/i18n/mdf.json
languages/i18n/mg.json
languages/i18n/mhr.json
languages/i18n/min.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/mn.json
languages/i18n/mo.json
languages/i18n/mr.json
languages/i18n/mrj.json
languages/i18n/ms.json
languages/i18n/mt.json
languages/i18n/mwl.json
languages/i18n/my.json
languages/i18n/myv.json
languages/i18n/mzn.json
languages/i18n/nah.json
languages/i18n/nan.json
languages/i18n/nap.json
languages/i18n/nb.json
languages/i18n/nds-nl.json
languages/i18n/nds.json
languages/i18n/ne.json
languages/i18n/nl-informal.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/nov.json
languages/i18n/nso.json
languages/i18n/oc.json
languages/i18n/olo.json
languages/i18n/or.json
languages/i18n/os.json
languages/i18n/pa.json
languages/i18n/pam.json
languages/i18n/pap.json
languages/i18n/pcd.json
languages/i18n/pdc.json
languages/i18n/pdt.json
languages/i18n/pfl.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/pnb.json
languages/i18n/pnt.json
languages/i18n/prg.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/qu.json
languages/i18n/qug.json
languages/i18n/rgn.json
languages/i18n/rif.json
languages/i18n/rm.json
languages/i18n/rmy.json
languages/i18n/ro.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/rue.json
languages/i18n/sa.json
languages/i18n/sah.json
languages/i18n/sat.json
languages/i18n/sc.json
languages/i18n/scn.json
languages/i18n/sco.json
languages/i18n/sd.json
languages/i18n/sdc.json
languages/i18n/sdh.json
languages/i18n/se.json
languages/i18n/sei.json
languages/i18n/ses.json
languages/i18n/sgs.json
languages/i18n/sh.json
languages/i18n/shi.json
languages/i18n/shn.json
languages/i18n/si.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/sli.json
languages/i18n/sma.json
languages/i18n/so.json
languages/i18n/sq.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/srn.json
languages/i18n/stq.json
languages/i18n/su.json
languages/i18n/sv.json
languages/i18n/sw.json
languages/i18n/szl.json
languages/i18n/ta.json
languages/i18n/tcy.json
languages/i18n/te.json
languages/i18n/tet.json
languages/i18n/tg-cyrl.json
languages/i18n/tg-latn.json
languages/i18n/th.json
languages/i18n/tk.json
languages/i18n/tl.json
languages/i18n/tly.json
languages/i18n/to.json
languages/i18n/tr.json
languages/i18n/tru.json
languages/i18n/ts.json
languages/i18n/tt-cyrl.json
languages/i18n/tt-latn.json
languages/i18n/tyv.json
languages/i18n/udm.json
languages/i18n/ug-arab.json
languages/i18n/uk.json
languages/i18n/ur.json
languages/i18n/uz.json
languages/i18n/vec.json
languages/i18n/vep.json
languages/i18n/vi.json
languages/i18n/vmf.json
languages/i18n/vo.json
languages/i18n/vot.json
languages/i18n/vro.json
languages/i18n/wa.json
languages/i18n/war.json
languages/i18n/wo.json
languages/i18n/wuu.json
languages/i18n/xal.json
languages/i18n/xmf.json
languages/i18n/yi.json
languages/i18n/yo.json
languages/i18n/yue.json
languages/i18n/zea.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesAr.php
languages/messages/MessagesArz.php
languages/messages/MessagesAtj.php
languages/messages/MessagesCa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDin.php [new file with mode: 0644]
languages/messages/MessagesEn.php
languages/messages/MessagesEs.php
languages/messages/MessagesKbp.php [new file with mode: 0644]
languages/messages/MessagesMy.php
languages/messages/MessagesPs.php
languages/messages/MessagesUk.php
maintenance/Maintenance.php
maintenance/addSite.php [changed mode: 0755->0644]
maintenance/backupPrefetch.inc
maintenance/benchmarks/Benchmarker.php
maintenance/benchmarks/README
maintenance/benchmarks/australia-untidy.html.gz [new file with mode: 0644]
maintenance/benchmarks/bench_HTTP_HTTPS.php
maintenance/benchmarks/bench_Wikimedia_base_convert.php
maintenance/benchmarks/bench_delete_truncate.php
maintenance/benchmarks/bench_if_switch.php
maintenance/benchmarks/bench_strtr_str_replace.php
maintenance/benchmarks/bench_utf8_title_check.php
maintenance/benchmarks/bench_wfIsWindows.php
maintenance/benchmarks/benchmarkCSSMin.php [new file with mode: 0644]
maintenance/benchmarks/benchmarkHooks.php
maintenance/benchmarks/benchmarkTidy.php [new file with mode: 0644]
maintenance/benchmarks/cssmin/circle.svg [new file with mode: 0644]
maintenance/benchmarks/cssmin/styles.css [new file with mode: 0644]
maintenance/benchmarks/cssmin/wiki.png [new file with mode: 0644]
maintenance/cleanupInvalidDbKeys.php [new file with mode: 0644]
maintenance/dumpTextPass.php
maintenance/eval.php
maintenance/importDump.php
maintenance/importImages.php
maintenance/language/zhtable/toTrad.manual
maintenance/language/zhtable/tradphrases.manual
maintenance/language/zhtable/tradphrases_exclude.manual
maintenance/mwdoc-filter.php
maintenance/mwdocgen.php
maintenance/oracle/alterSharedConstraints.php
maintenance/rebuildFileCache.php
maintenance/rebuildImages.php
maintenance/rebuildrecentchanges.php
maintenance/refreshFileHeaders.php
maintenance/refreshImageMetadata.php
maintenance/refreshLinks.php
maintenance/resources/update-oojs-ui.sh
maintenance/resources/update-oojs.sh
maintenance/shell.php
maintenance/sql.php
maintenance/sqlite.inc
maintenance/storage/trackBlobs.php
maintenance/tables.sql
maintenance/updateCredits.php
package.json
phpcs.xml
resources/Resources.php
resources/ResourcesOOUI.php [deleted file]
resources/lib/jquery.ui/PATCHES
resources/lib/jquery.ui/jquery.ui.core.js
resources/lib/jquery.ui/jquery.ui.widget.js
resources/lib/oojs-ui/i18n/af.json
resources/lib/oojs-ui/i18n/bs.json
resources/lib/oojs-ui/i18n/id.json
resources/lib/oojs-ui/i18n/jv.json
resources/lib/oojs-ui/i18n/sr-ec.json
resources/lib/oojs-ui/oojs-ui-apex.js
resources/lib/oojs-ui/oojs-ui-apex.js.map [new file with mode: 0644]
resources/lib/oojs-ui/oojs-ui-core-apex.css
resources/lib/oojs-ui/oojs-ui-core-mediawiki.css [deleted file]
resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css [new file with mode: 0644]
resources/lib/oojs-ui/oojs-ui-core.js
resources/lib/oojs-ui/oojs-ui-core.js.map [new file with mode: 0644]
resources/lib/oojs-ui/oojs-ui-mediawiki.js [deleted file]
resources/lib/oojs-ui/oojs-ui-toolbars-apex.css
resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css [deleted file]
resources/lib/oojs-ui/oojs-ui-toolbars-wikimediaui.css [new file with mode: 0644]
resources/lib/oojs-ui/oojs-ui-toolbars.js
resources/lib/oojs-ui/oojs-ui-toolbars.js.map [new file with mode: 0644]
resources/lib/oojs-ui/oojs-ui-widgets-apex.css
resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css [deleted file]
resources/lib/oojs-ui/oojs-ui-widgets-wikimediaui.css [new file with mode: 0644]
resources/lib/oojs-ui/oojs-ui-widgets.js
resources/lib/oojs-ui/oojs-ui-widgets.js.map [new file with mode: 0644]
resources/lib/oojs-ui/oojs-ui-wikimediaui.js [new file with mode: 0644]
resources/lib/oojs-ui/oojs-ui-wikimediaui.js.map [new file with mode: 0644]
resources/lib/oojs-ui/oojs-ui-windows-apex.css
resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css [deleted file]
resources/lib/oojs-ui/oojs-ui-windows-wikimediaui.css [new file with mode: 0644]
resources/lib/oojs-ui/oojs-ui-windows.js
resources/lib/oojs-ui/oojs-ui-windows.js.map [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/icons-interactions.json
resources/lib/oojs-ui/themes/apex/icons-moderation.json
resources/lib/oojs-ui/themes/apex/icons-movement.json
resources/lib/oojs-ui/themes/apex/icons-user.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/icons.json [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/caret-ltr.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/caret-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/caret-rtl.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/caret-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/caretDown.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/caretDown.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/caretUp.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/caretUp.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/circle.png [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/circle.svg [deleted file]
resources/lib/oojs-ui/themes/apex/images/icons/clip.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/clip.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/move-end-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/move-end-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/move-end-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/move-end-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/pushPin.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/pushPin.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/unClip.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/unClip.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/userAvatar.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/apex/images/icons/userAvatar.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/icons-accessibility.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/icons-alerts.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/icons-content.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/icons-editing-advanced.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/icons-editing-core.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/icons-editing-list.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/icons-editing-styling.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/icons-layout.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/icons-location.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/icons-media.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/icons-moderation.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/icons-movement.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/icons-user.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/icons-wikimedia.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/icons.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/add-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/add-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/add-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/add-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/add.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/add.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-warning.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-warning.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/alert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/alert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bell.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bell.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/block-destructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/block-destructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/block-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/block-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/block-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/block-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/block.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/block.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bright.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bright.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-destructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-destructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/check-constructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/check-constructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/check-destructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/check-destructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/check-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/check-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/check-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/check-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/check.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/check.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-constructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-constructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/circle.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/circle.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/clear.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/clear.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/clock.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/clock.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/close-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/close-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/close.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/close.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/code-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/code-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/code.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/code.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/comment.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/comment.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/expand.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/expand.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/eye.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/eye.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-constructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-constructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-constructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-constructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/heart.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/heart.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/history-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/history-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/history-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/history-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/history.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/history.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/info-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/info-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/info-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/info-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/info.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/info.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-destructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-destructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-destructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-destructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/markup.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/markup.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/menu.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/menu.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/moon.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/moon.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/move.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/notice.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/notice.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/settings.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/settings.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/star-constructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/star-constructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/star-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/star-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/star-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/star-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/star.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/star.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stop.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stop.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/table.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-constructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-constructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-destructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-destructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-warning.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-warning.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-destructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-destructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/trash.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/trash.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tray.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/tray.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-destructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-destructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-destructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-destructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-constructive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-constructive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/window-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/window-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/window-progressive.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/window-progressive.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/window.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/window.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/required.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/required.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/textures/pending.gif [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/textures/transparency.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/textures/transparency.svg [deleted file]
resources/lib/oojs-ui/themes/mediawiki/indicators.json [deleted file]
resources/lib/oojs-ui/themes/mediawiki/textures.json [deleted file]
resources/lib/oojs-ui/themes/wikimediaui/icons-accessibility.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/icons-alerts.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/icons-content.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/icons-editing-advanced.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/icons-editing-core.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/icons-editing-list.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/icons-editing-styling.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/icons-interactions.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/icons-layout.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/icons-location.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/icons-media.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/icons-moderation.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/icons-movement.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/icons-user.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/icons-wikimedia.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-constructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-constructive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/add.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/add.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-warning.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-warning.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-destructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-destructive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/block.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/block.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-destructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-destructive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-constructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-constructive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-destructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-destructive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/check.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/check.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/close.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/close.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/code.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/code.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-constructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-constructive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-constructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-constructive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/history.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/history.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/info.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/info.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-destructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-destructive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-destructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-destructive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/move.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-constructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-constructive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/star.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/star.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/table.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-constructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-constructive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-destructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-destructive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-warning.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-warning.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-destructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-destructive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-destructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-destructive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-destructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-destructive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-constructive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-constructive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-progressive.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-progressive.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/window.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/icons/window.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-down-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-down-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-down.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-down.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-up-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-up-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-up.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-up.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/textures/pending.gif [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/textures/transparency.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/images/textures/transparency.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/indicators.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/wikimediaui/textures.json [new file with mode: 0644]
resources/lib/oojs/AUTHORS.txt [new file with mode: 0644]
resources/lib/oojs/LICENSE-MIT [new file with mode: 0644]
resources/lib/oojs/README.md [new file with mode: 0644]
resources/lib/oojs/oojs.jquery.js
resources/src/jquery/jquery.getAttrs.js
resources/src/jquery/jquery.makeCollapsible.js
resources/src/jquery/jquery.tablesorter.js
resources/src/mediawiki.action/mediawiki.action.edit.js
resources/src/mediawiki.action/mediawiki.action.edit.preview.js
resources/src/mediawiki.action/mediawiki.action.edit.styles.css
resources/src/mediawiki.action/mediawiki.action.view.postEdit.css [deleted file]
resources/src/mediawiki.action/mediawiki.action.view.postEdit.js
resources/src/mediawiki.action/mediawiki.action.view.postEdit.less [new file with mode: 0644]
resources/src/mediawiki.action/templates/postEdit.html [deleted file]
resources/src/mediawiki.language/specialcharacters.json
resources/src/mediawiki.legacy/commonPrint.css
resources/src/mediawiki.legacy/shared.css
resources/src/mediawiki.less/mediawiki.mixins.less
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterItem.js
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ItemModel.js [new file with mode: 0644]
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js [new file with mode: 0644]
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueryItemModel.js [new file with mode: 0644]
resources/src/mediawiki.rcfilters/images/clip.svg [new file with mode: 0644]
resources/src/mediawiki.rcfilters/images/pushPin.svg [new file with mode: 0644]
resources/src/mediawiki.rcfilters/images/unClip.svg [new file with mode: 0644]
resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js [new file with mode: 0644]
resources/src/mediawiki.rcfilters/mw.rcfilters.init.js
resources/src/mediawiki.rcfilters/mw.rcfilters.js
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ChangesListWrapperWidget.less
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterFloatingMenuSelectWidget.less [deleted file]
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuHeaderWidget.less
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuOptionWidget.less
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuOptionWidget.monobook.less [new file with mode: 0644]
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterTagItemWidget.less [deleted file]
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterTagMultiselectWidget.less
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterWrapperWidget.less
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.HighlightColorPickerWidget.less
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ItemMenuOptionWidget.less [new file with mode: 0644]
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.MenuSelectWidget.less [new file with mode: 0644]
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.SaveFiltersPopupButtonWidget.less [new file with mode: 0644]
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.SavedLinksListItemWidget.less [new file with mode: 0644]
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.SavedLinksListWidget.less [new file with mode: 0644]
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.TagItemWidget.less [new file with mode: 0644]
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.less
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterFloatingMenuSelectWidget.js [deleted file]
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterItemHighlightButton.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuHeaderWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuOptionWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagItemWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ItemMenuOptionWidget.js [new file with mode: 0644]
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js [new file with mode: 0644]
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SaveFiltersPopupButtonWidget.js [new file with mode: 0644]
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SavedLinksListItemWidget.js [new file with mode: 0644]
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SavedLinksListWidget.js [new file with mode: 0644]
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.TagItemWidget.js [new file with mode: 0644]
resources/src/mediawiki.router/index.js
resources/src/mediawiki.skinning/content.parsoid.less
resources/src/mediawiki.special/images/special.search/book-icon.png [deleted file]
resources/src/mediawiki.special/images/special.search/book-icon.svg [deleted file]
resources/src/mediawiki.special/images/special.search/course-icon.png [deleted file]
resources/src/mediawiki.special/images/special.search/course-icon.svg [deleted file]
resources/src/mediawiki.special/images/special.search/definition-icon.png [deleted file]
resources/src/mediawiki.special/images/special.search/definition-icon.svg [deleted file]
resources/src/mediawiki.special/images/special.search/dna-icon.png [deleted file]
resources/src/mediawiki.special/images/special.search/dna-icon.svg [deleted file]
resources/src/mediawiki.special/images/special.search/image-icon.png [deleted file]
resources/src/mediawiki.special/images/special.search/image-icon.svg [deleted file]
resources/src/mediawiki.special/images/special.search/news-icon.png [deleted file]
resources/src/mediawiki.special/images/special.search/news-icon.svg [deleted file]
resources/src/mediawiki.special/images/special.search/quotation-icon.png [deleted file]
resources/src/mediawiki.special/images/special.search/quotation-icon.svg [deleted file]
resources/src/mediawiki.special/images/special.search/textbook-icon.png [deleted file]
resources/src/mediawiki.special/images/special.search/textbook-icon.svg [deleted file]
resources/src/mediawiki.special/images/special.search/travel-icon.png [deleted file]
resources/src/mediawiki.special/images/special.search/travel-icon.svg [deleted file]
resources/src/mediawiki.special/mediawiki.special.apisandbox.css
resources/src/mediawiki.special/mediawiki.special.apisandbox.js
resources/src/mediawiki.special/mediawiki.special.block.css [deleted file]
resources/src/mediawiki.special/mediawiki.special.contributions.js [new file with mode: 0644]
resources/src/mediawiki.special/mediawiki.special.css
resources/src/mediawiki.special/mediawiki.special.newFiles.js [new file with mode: 0644]
resources/src/mediawiki.special/mediawiki.special.preferences.js
resources/src/mediawiki.special/mediawiki.special.search.commonsInterwikiWidget.js
resources/src/mediawiki.special/mediawiki.special.search.interwikiwidget.styles.less
resources/src/mediawiki.toolbar/toolbar.js
resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.js
resources/src/mediawiki.widgets.datetime/ProlepticGregorianDateTimeFormatter.js
resources/src/mediawiki.widgets/MediaSearch/mw.widgets.MediaSearchWidget.js
resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js
resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js
resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.less
resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.styles.less [new file with mode: 0644]
resources/src/mediawiki.widgets/mw.widgets.SearchInputWidget.js [changed mode: 0755->0644]
resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.base.css [new file with mode: 0644]
resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.js [new file with mode: 0644]
resources/src/mediawiki.widgets/mw.widgets.UsersMultiselectWidget.js
resources/src/mediawiki/mediawiki.Upload.Dialog.js
resources/src/mediawiki/mediawiki.apihelp.css
resources/src/mediawiki/mediawiki.confirmCloseWindow.js
resources/src/mediawiki/mediawiki.diff.styles.css
resources/src/mediawiki/mediawiki.experiments.js
resources/src/mediawiki/mediawiki.hlist.css
resources/src/mediawiki/mediawiki.inspect.js
resources/src/mediawiki/mediawiki.pager.tablePager.less
resources/src/mediawiki/mediawiki.storage.js
resources/src/mediawiki/mediawiki.toc.js
resources/src/mediawiki/mediawiki.toc.print.css
resources/src/mediawiki/mediawiki.user.js
resources/src/mediawiki/mediawiki.util.js
resources/src/mediawiki/page/ready.js
resources/src/mediawiki/page/startup.js
resources/src/mediawiki/page/watch.js
resources/src/startup.js
tests/.gitignore [deleted file]
tests/browser/README.mediawiki [deleted file]
tests/browser/ci.yml [deleted file]
tests/browser/environments.yml [deleted file]
tests/browser/features/create_account.feature [deleted file]
tests/browser/features/create_and_follow_wiki_link.feature [deleted file]
tests/browser/features/edit_page.feature [deleted file]
tests/browser/features/file.feature [deleted file]
tests/browser/features/login.feature [deleted file]
tests/browser/features/main_page_links.feature [deleted file]
tests/browser/features/preferences.feature [deleted file]
tests/browser/features/step_definitions/create_account_steps.rb [deleted file]
tests/browser/features/step_definitions/create_and_follow_wiki_link_steps.rb [deleted file]
tests/browser/features/step_definitions/edit_page_steps.rb [deleted file]
tests/browser/features/step_definitions/file_steps.rb [deleted file]
tests/browser/features/step_definitions/login_steps.rb [deleted file]
tests/browser/features/step_definitions/main_page_links_steps.rb [deleted file]
tests/browser/features/step_definitions/preferences_appearance_steps.rb [deleted file]
tests/browser/features/step_definitions/preferences_editing_steps.rb [deleted file]
tests/browser/features/step_definitions/preferences_user_profile_steps.rb [deleted file]
tests/browser/features/step_definitions/view_history_steps.rb [deleted file]
tests/browser/features/support/env.rb [deleted file]
tests/browser/features/support/hooks.rb [deleted file]
tests/browser/features/support/pages/create_account_page.rb [deleted file]
tests/browser/features/support/pages/edit_page.rb [deleted file]
tests/browser/features/support/pages/file_does_not_exist_page.rb [deleted file]
tests/browser/features/support/pages/login_page.rb [deleted file]
tests/browser/features/support/pages/main_page.rb [deleted file]
tests/browser/features/support/pages/preferences_appearance_page.rb [deleted file]
tests/browser/features/support/pages/preferences_editing_page.rb [deleted file]
tests/browser/features/support/pages/preferences_page.rb [deleted file]
tests/browser/features/support/pages/preferences_user_profile_page.rb [deleted file]
tests/browser/features/support/pages/view_history_page.rb [deleted file]
tests/browser/features/support/pages/ztargetpage.rb [deleted file]
tests/browser/features/view_history.feature [deleted file]
tests/common/TestsAutoLoader.php
tests/integration/includes/http/MWHttpRequestTestCase.php
tests/parser/ParserTestRunner.php
tests/parser/parserTests.txt
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/data/helpers/WellProtectedClass.php [deleted file]
tests/phpunit/data/media/adobergb.jpg [new file with mode: 0644]
tests/phpunit/data/media/missingprofile.jpg [new file with mode: 0644]
tests/phpunit/data/media/srgb.jpg
tests/phpunit/data/media/tinyrgb.jpg
tests/phpunit/data/resourceloader/abc.gif [new file with mode: 0644]
tests/phpunit/data/resourceloader/add.gif [deleted file]
tests/phpunit/data/resourceloader/bold-a.svg [deleted file]
tests/phpunit/data/resourceloader/bold-b.svg [deleted file]
tests/phpunit/data/resourceloader/bold-f.svg [deleted file]
tests/phpunit/data/resourceloader/def.svg [new file with mode: 0644]
tests/phpunit/data/resourceloader/def_variantize.svg [new file with mode: 0644]
tests/phpunit/data/resourceloader/ghi.svg [new file with mode: 0644]
tests/phpunit/data/resourceloader/ghi_massage.svg [new file with mode: 0644]
tests/phpunit/data/resourceloader/help-ltr.svg [deleted file]
tests/phpunit/data/resourceloader/help-rtl.svg [deleted file]
tests/phpunit/data/resourceloader/jkl.svg [new file with mode: 0644]
tests/phpunit/data/resourceloader/mno-ltr.svg [new file with mode: 0644]
tests/phpunit/data/resourceloader/mno-rtl.svg [new file with mode: 0644]
tests/phpunit/data/resourceloader/next.svg [deleted file]
tests/phpunit/data/resourceloader/next_massage.svg [deleted file]
tests/phpunit/data/resourceloader/oouiimagemodule/apex/icons.json
tests/phpunit/data/resourceloader/oouiimagemodule/apex/images/icons/search.svg [deleted file]
tests/phpunit/data/resourceloader/oouiimagemodule/apex/images/icons/stu.svg [new file with mode: 0644]
tests/phpunit/data/resourceloader/oouiimagemodule/mediawiki/icons.json [deleted file]
tests/phpunit/data/resourceloader/oouiimagemodule/mediawiki/images/icons/search.svg [deleted file]
tests/phpunit/data/resourceloader/oouiimagemodule/wikimediaui/icons.json [new file with mode: 0644]
tests/phpunit/data/resourceloader/oouiimagemodule/wikimediaui/images/icons/stu.svg [new file with mode: 0644]
tests/phpunit/data/resourceloader/pqr-a.svg [new file with mode: 0644]
tests/phpunit/data/resourceloader/pqr-b.svg [new file with mode: 0644]
tests/phpunit/data/resourceloader/pqr-f.svg [new file with mode: 0644]
tests/phpunit/data/resourceloader/prev.svg [deleted file]
tests/phpunit/data/resourceloader/remove.svg [deleted file]
tests/phpunit/data/resourceloader/remove_variantize.svg [deleted file]
tests/phpunit/includes/AutopromoteTest.php [new file with mode: 0644]
tests/phpunit/includes/CollationTest.php [deleted file]
tests/phpunit/includes/ExtraParserTest.php
tests/phpunit/includes/GlobalFunctions/GlobalTest.php
tests/phpunit/includes/GlobalFunctions/wfArrayFilterTest.php [new file with mode: 0644]
tests/phpunit/includes/MediaWikiServicesTest.php
tests/phpunit/includes/MessageTest.php
tests/phpunit/includes/OutputPageTest.php
tests/phpunit/includes/PrefixSearchTest.php
tests/phpunit/includes/ReadOnlyModeTest.php [new file with mode: 0644]
tests/phpunit/includes/SanitizerTest.php
tests/phpunit/includes/TemplateCategoriesTest.php
tests/phpunit/includes/TestingAccessWrapper.php [deleted file]
tests/phpunit/includes/TestingAccessWrapperTest.php [deleted file]
tests/phpunit/includes/TitleTest.php
tests/phpunit/includes/WatchedItemQueryServiceUnitTest.php
tests/phpunit/includes/WatchedItemStoreUnitTest.php
tests/phpunit/includes/api/ApiBaseTest.php
tests/phpunit/includes/api/ApiComparePagesTest.php [new file with mode: 0644]
tests/phpunit/includes/api/ApiErrorFormatterTest.php
tests/phpunit/includes/api/ApiLoginTest.php
tests/phpunit/includes/api/ApiMainTest.php
tests/phpunit/includes/api/ApiMessageTest.php
tests/phpunit/includes/api/ApiParseTest.php
tests/phpunit/includes/api/ApiQueryWatchlistIntegrationTest.php
tests/phpunit/includes/auth/AbstractAuthenticationProviderTest.php
tests/phpunit/includes/auth/AbstractPasswordPrimaryAuthenticationProviderTest.php
tests/phpunit/includes/auth/AuthManagerTest.php
tests/phpunit/includes/auth/CheckBlocksSecondaryAuthenticationProviderTest.php
tests/phpunit/includes/auth/ConfirmLinkSecondaryAuthenticationProviderTest.php
tests/phpunit/includes/auth/EmailNotificationSecondaryAuthenticationProviderTest.php
tests/phpunit/includes/auth/LocalPasswordPrimaryAuthenticationProviderTest.php
tests/phpunit/includes/auth/RememberMeAuthenticationRequestTest.php
tests/phpunit/includes/auth/ResetPasswordSecondaryAuthenticationProviderTest.php
tests/phpunit/includes/auth/TemporaryPasswordPrimaryAuthenticationProviderTest.php
tests/phpunit/includes/auth/ThrottlePreAuthenticationProviderTest.php
tests/phpunit/includes/auth/ThrottlerTest.php
tests/phpunit/includes/changes/ChangesListBooleanFilterGroupTest.php
tests/phpunit/includes/changes/ChangesListFilterTest.php
tests/phpunit/includes/changes/ChangesListStringOptionsFilterGroupTest.php
tests/phpunit/includes/changes/EnhancedChangesListTest.php
tests/phpunit/includes/changes/OldChangesListTest.php
tests/phpunit/includes/collation/CollationTest.php [new file with mode: 0644]
tests/phpunit/includes/collation/CustomUppercaseCollationTest.php [new file with mode: 0644]
tests/phpunit/includes/config/EtcdConfigTest.php [new file with mode: 0644]
tests/phpunit/includes/config/GlobalVarConfigTest.php
tests/phpunit/includes/config/MultiConfigTest.php
tests/phpunit/includes/content/WikitextContentTest.php
tests/phpunit/includes/db/DatabaseMysqlBaseTest.php
tests/phpunit/includes/db/DatabaseSQLTest.php
tests/phpunit/includes/db/LBFactoryTest.php
tests/phpunit/includes/debug/logger/MonologSpiTest.php
tests/phpunit/includes/debug/logger/monolog/KafkaHandlerTest.php
tests/phpunit/includes/debug/logger/monolog/LineFormatterTest.php
tests/phpunit/includes/deferred/CdnCacheUpdateTest.php
tests/phpunit/includes/deferred/DeferredUpdatesTest.php
tests/phpunit/includes/deferred/LinksUpdateTest.php
tests/phpunit/includes/exception/MWExceptionTest.php
tests/phpunit/includes/filebackend/FileBackendTest.php
tests/phpunit/includes/filebackend/SwiftFileBackendTest.php
tests/phpunit/includes/interwiki/ClassicInterwikiLookupTest.php
tests/phpunit/includes/interwiki/InterwikiLookupAdapterTest.php
tests/phpunit/includes/interwiki/InterwikiTest.php
tests/phpunit/includes/jobqueue/JobTest.php
tests/phpunit/includes/libs/CSSMinTest.php
tests/phpunit/includes/libs/DnsSrvDiscovererTest.php
tests/phpunit/includes/libs/http/HttpAcceptNegotiatorTest.php [new file with mode: 0644]
tests/phpunit/includes/libs/http/HttpAcceptParserTest.php [new file with mode: 0644]
tests/phpunit/includes/libs/mime/MimeAnalyzerTest.php
tests/phpunit/includes/libs/objectcache/CachedBagOStuffTest.php
tests/phpunit/includes/libs/objectcache/HashBagOStuffTest.php
tests/phpunit/includes/libs/objectcache/MultiWriteBagOStuffTest.php
tests/phpunit/includes/libs/objectcache/WANObjectCacheTest.php
tests/phpunit/includes/linkeddata/PageDataRequestHandlerTest.php [new file with mode: 0644]
tests/phpunit/includes/logging/NewUsersLogFormatterTest.php
tests/phpunit/includes/media/ExifBitmapTest.php
tests/phpunit/includes/media/ExifTest.php
tests/phpunit/includes/media/JpegTest.php
tests/phpunit/includes/media/XCFTest.php
tests/phpunit/includes/objectcache/RedisBagOStuffTest.php
tests/phpunit/includes/page/WikiPageTest.php
tests/phpunit/includes/pager/RangeChronologicalPagerTest.php [new file with mode: 0644]
tests/phpunit/includes/parser/ParserOptionsTest.php [new file with mode: 0644]
tests/phpunit/includes/parser/TagHooksTest.php
tests/phpunit/includes/password/BcryptPasswordTest.php
tests/phpunit/includes/password/EncryptedPasswordTest.php [new file with mode: 0644]
tests/phpunit/includes/password/LayeredParameterizedPasswordTest.php
tests/phpunit/includes/password/MWOldPasswordTest.php [new file with mode: 0644]
tests/phpunit/includes/password/MWSaltedPasswordTest.php [new file with mode: 0644]
tests/phpunit/includes/password/PasswordFactoryTest.php [new file with mode: 0644]
tests/phpunit/includes/password/PasswordPolicyChecksTest.php
tests/phpunit/includes/password/PasswordTest.php
tests/phpunit/includes/password/PasswordTestCase.php
tests/phpunit/includes/password/Pbkdf2PasswordFallbackTest.php [new file with mode: 0644]
tests/phpunit/includes/password/Pbkdf2PasswordTest.php
tests/phpunit/includes/password/UserPasswordPolicyTest.php
tests/phpunit/includes/registration/ExtensionProcessorTest.php
tests/phpunit/includes/resourceloader/MessageBlobStoreTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderClientHtmlTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderImageModuleTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderImageTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderOOUIImageModuleTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderWikiModuleTest.php
tests/phpunit/includes/search/SearchEnginePrefixTest.php
tests/phpunit/includes/search/SearchIndexFieldTest.php
tests/phpunit/includes/session/BotPasswordSessionProviderTest.php
tests/phpunit/includes/session/CookieSessionProviderTest.php
tests/phpunit/includes/session/ImmutableSessionProviderWithCookieTest.php
tests/phpunit/includes/session/PHPSessionHandlerTest.php
tests/phpunit/includes/session/SessionBackendTest.php
tests/phpunit/includes/session/SessionManagerTest.php
tests/phpunit/includes/session/SessionProviderTest.php
tests/phpunit/includes/session/SessionTest.php
tests/phpunit/includes/session/TestBagOStuff.php
tests/phpunit/includes/session/TestUtils.php
tests/phpunit/includes/session/TokenTest.php
tests/phpunit/includes/specialpage/AbstractChangesListSpecialPageTestCase.php
tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php
tests/phpunit/includes/specials/ContribsPagerTest.php [new file with mode: 0644]
tests/phpunit/includes/specials/SpecialPageDataTest.php [new file with mode: 0644]
tests/phpunit/includes/specials/SpecialRecentchangesTest.php
tests/phpunit/includes/specials/SpecialWatchlistTest.php
tests/phpunit/includes/user/BotPasswordTest.php
tests/phpunit/includes/user/CentralIdLookupTest.php
tests/phpunit/includes/user/PasswordResetTest.php
tests/phpunit/includes/user/UserGroupMembershipTest.php
tests/phpunit/includes/user/UserTest.php
tests/phpunit/languages/LanguageTest.php
tests/phpunit/maintenance/backupTextPassTest.php
tests/phpunit/mocks/MockChangesListFilter.php
tests/phpunit/mocks/filebackend/MockFSFile.php
tests/phpunit/structure/ApiDocumentationTest.php
tests/phpunit/structure/ContentHandlerSanityTest.php
tests/qunit/QUnitTestResources.php
tests/qunit/data/testrunner.js
tests/qunit/suites/resources/jquery/jquery.byteLimit.test.js
tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js
tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js [new file with mode: 0644]
tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.loader.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.toc.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js
tests/selenium/.eslintrc.json
tests/selenium/wdio.conf.js
thumb.php

index f056219..e649fb1 100644 (file)
--- a/.mailmap
+++ b/.mailmap
@@ -196,6 +196,7 @@ Jackmcbarn <jackmcbarn@gmail.com>
 Jackmcbarn <jackmcbarn@gmail.com> <jackmcbarn@users.noreply.github.com>
 jagori <jagori79@gmail.com>
 James Forrester <jforrester@wikimedia.org>
+Jaime Crespo <jcrespo@wikimedia.org>
 Jan Gerber <j@thing.net> <j@users.mediawiki.org>
 Jan Luca Naumann <jan@jans-seite.de>
 Jan Luca Naumann <jan@jans-seite.de> <jan@users.mediawiki.org>
@@ -409,9 +410,11 @@ Steven Walling <swalling@wikimedia.org>
 Subramanya Sastry <ssastry@wikimedia.org>
 Sucheta Ghoshal <sghoshal@wikimedia.org>
 Sumit Asthana <asthana.sumit23@gmail.com>
+TerraCodes <terracodes@tools.wmflabs.org>
 Thalia Chan <thalia@cantorion.org>
-Thiemo Mättig (WMDE) <thiemo.maettig@wikimedia.de>
-Thiemo Mättig (WMDE) <thiemo.maettig@wikimedia.de> <mr.heat@gmx.de>
+Thalia Chan <thalia@cantorion.org> <thalia.e.chan@googlemail.com>
+Thiemo Mättig <thiemo.maettig@wikimedia.de>
+Thiemo Mättig <thiemo.maettig@wikimedia.de> <mr.heat@gmx.de>
 This, that and the other <at.light@live.com.au>
 tholam <t.lam@lamsinfosystem.com>
 Thomas Bleher <ThomasBleher@gmx.de> <tbleher@users.mediawiki.org>
diff --git a/.rubocop.yml b/.rubocop.yml
deleted file mode 100644 (file)
index 5b6c3f2..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-AllCops:
-  Exclude:
-    - 'extensions/**/*'
-    - 'node_modules/**/*'
-    - 'skins/**/*'
-    - 'tests/frontend/node_modules/**/*'
-    - 'vendor/**/*'
-  StyleGuideCopsOnly: true
-
-Metrics/LineLength:
-  Max: 100
-
-Metrics/MethodLength:
-  Enabled: false
-
-Style/Alias:
-  Enabled: false
-
-Style/SignalException:
-  Enabled: false
-
-Style/StringLiterals:
-  EnforcedStyle: single_quotes
-
-Style/TrivialAccessors:
-  ExactNameMatch: true
index baf7f03..5e2c7a0 100644 (file)
@@ -31,11 +31,6 @@ matrix:
       php: hhvm-3.12
     - env: dbtype=mysql dbuser=root
       php: 7
-  allow_failures:
-    # Postgres support for unit tests is still buggy
-    # https://phabricator.wikimedia.org/T75174
-    - env: dbtype=postgres dbuser=travis
-      php: 5.5
 
 services:
   - mysql
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644 (file)
index 0000000..d8e5d08
--- /dev/null
@@ -0,0 +1 @@
+The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Code_of_Conduct).
diff --git a/CREDITS b/CREDITS
index 80d4e0e..14c454e 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -16,6 +16,7 @@ The following list can be found parsed under Special:Version/Credits -->
 * Aashaka Shah
 * abhinand
 * Abhishek Das
+* Ad Huikeshoven
 * Adam Miller
 * Adam Roses Wight
 * addshore
@@ -48,6 +49,7 @@ The following list can be found parsed under Special:Version/Credits -->
 * ananay
 * Anders Wegge Jakobsen
 * Andre Engels
+* Andre Klapper
 * Andrew Bogott
 * Andrew Dunbar
 * Andrew Garrett
@@ -200,6 +202,7 @@ The following list can be found parsed under Special:Version/Credits -->
 * Erik Moeller
 * Erwin Dokter
 * Étienne Beaulé
+* Eugene Gvozdetsky
 * Evan McIntire
 * Evan Prodromou
 * ExplosiveHippo
@@ -257,6 +260,7 @@ The following list can be found parsed under Special:Version/Credits -->
 * Jacob Block
 * Jacob Clark
 * jagori
+* Jaime Crespo
 * Jakub Vrana
 * James Earl Douglas
 * James Forrester
@@ -355,6 +359,7 @@ The following list can be found parsed under Special:Version/Credits -->
 * Ltrlg
 * Luc Van Oostenryck
 * Lucas Garczewski
+* Lucas Werkmeister
 * Luigi Corsaro
 * Luis Felipe Schenone
 * Luke Faraone
@@ -366,6 +371,7 @@ The following list can be found parsed under Special:Version/Credits -->
 * Madman
 * madurangasiriwardena
 * Magnus Manske
+* mainframe98
 * Manuel Menal
 * Manuel Schneider
 * Marc Ordinas i Llopis
@@ -421,6 +427,7 @@ The following list can be found parsed under Special:Version/Credits -->
 * Michał Roszka
 * Michał Zieliński
 * Mike Horvath
+* Mikhail Popov
 * Minh Nguyễn
 * MinuteElectron
 * Misza13
@@ -429,6 +436,7 @@ The following list can be found parsed under Special:Version/Credits -->
 * Mohamed Magdy
 * Molly White
 * Moriel Schottlender
+* Moritz Oberhauser
 * Mormegil
 * Mr. E23
 * MrBlueSky
@@ -455,7 +463,6 @@ The following list can be found parsed under Special:Version/Credits -->
 * Nicolas Dumazet
 * Nicolas Weeger
 * Niharika Kohli
-* Nik
 * Nik Everett
 * Niklas Laxström
 * Nikola Kovacs
@@ -610,14 +617,15 @@ The following list can be found parsed under Special:Version/Credits -->
 * Subramanya Sastry
 * Sumit Asthana
 * svip
-* Swalling
 * Szymon Świerkosz
 * T.D. Corell
 * Tarquin
+* TerraCodes
+* Thalia Chan
 * The Discoverer
 * The Evil IP address
 * theopolisme
-* Thiemo Mättig (WMDE)
+* Thiemo Mättig
 * This, that and the other
 * tholam
 * Thomas Arrow
diff --git a/Gemfile b/Gemfile
deleted file mode 100644 (file)
index ee0cec0..0000000
--- a/Gemfile
+++ /dev/null
@@ -1,5 +0,0 @@
-source 'https://rubygems.org'
-
-gem 'mediawiki_selenium', '~> 1.8'
-gem 'rake', '~> 11.1', '>= 11.1.1'
-gem 'rubocop', '~> 0.32.1', require: false
diff --git a/Gemfile.lock b/Gemfile.lock
deleted file mode 100644 (file)
index 4992303..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-GEM
-  remote: https://rubygems.org/
-  specs:
-    ast (2.0.0)
-    astrolabe (1.3.0)
-      parser (>= 2.2.0.pre.3, < 3.0)
-    builder (3.2.3)
-    childprocess (0.6.2)
-      ffi (~> 1.0, >= 1.0.11)
-    cucumber (1.3.20)
-      builder (>= 2.1.2)
-      diff-lcs (>= 1.1.3)
-      gherkin (~> 2.12)
-      multi_json (>= 1.7.5, < 2.0)
-      multi_test (>= 0.1.2)
-    data_magic (1.0)
-      faker (>= 1.1.2)
-      yml_reader (>= 0.6)
-    diff-lcs (1.3)
-    domain_name (0.5.20170223)
-      unf (>= 0.0.5, < 1.0.0)
-    faker (1.7.3)
-      i18n (~> 0.5)
-    faraday (0.11.0)
-      multipart-post (>= 1.2, < 3)
-    faraday-cookie_jar (0.0.6)
-      faraday (>= 0.7.4)
-      http-cookie (~> 1.0.0)
-    faraday_middleware (0.11.0.1)
-      faraday (>= 0.7.4, < 1.0)
-    ffi (1.9.17)
-    gherkin (2.12.2)
-      multi_json (~> 1.3)
-    headless (2.3.1)
-    http-cookie (1.0.3)
-      domain_name (~> 0.5)
-    i18n (0.8.1)
-    json (2.0.3)
-    mediawiki_api (0.7.1)
-      faraday (~> 0.9, >= 0.9.0)
-      faraday-cookie_jar (~> 0.0, >= 0.0.6)
-      faraday_middleware (~> 0.10, >= 0.10.0)
-    mediawiki_selenium (1.8.0)
-      cucumber (~> 1.3, >= 1.3.20)
-      headless (~> 2.0, >= 2.1.0)
-      json (~> 2.0, >= 2.0.2)
-      mediawiki_api (~> 0.7, >= 0.7.0)
-      page-object (~> 2.0)
-      rest-client (~> 1.6, >= 1.6.7)
-      rspec-core (~> 2.14, >= 2.14.4)
-      rspec-expectations (~> 2.14, >= 2.14.4)
-      selenium-webdriver (~> 3.1.0)
-      syntax (~> 1.2, >= 1.2.0)
-      thor (~> 0.19, >= 0.19.1)
-    mime-types (2.99.3)
-    multi_json (1.12.1)
-    multi_test (0.1.2)
-    multipart-post (2.0.0)
-    net-http-persistent (2.9.4)
-    netrc (0.11.0)
-    page-object (2.0.0)
-      net-http-persistent (~> 2.9.4)
-      page_navigation (>= 0.9)
-      selenium-webdriver (~> 3.0)
-      watir (~> 6.0)
-    page_navigation (0.10)
-      data_magic (>= 0.22)
-    parser (2.2.2.6)
-      ast (>= 1.1, < 3.0)
-    powerpack (0.1.1)
-    rainbow (2.0.0)
-    rake (11.1.1)
-    rest-client (1.8.0)
-      http-cookie (>= 1.0.2, < 2.0)
-      mime-types (>= 1.16, < 3.0)
-      netrc (~> 0.7)
-    rspec-core (2.99.2)
-    rspec-expectations (2.99.2)
-      diff-lcs (>= 1.1.3, < 2.0)
-    rubocop (0.32.1)
-      astrolabe (~> 1.3)
-      parser (>= 2.2.2.5, < 3.0)
-      powerpack (~> 0.1)
-      rainbow (>= 1.99.1, < 3.0)
-      ruby-progressbar (~> 1.4)
-    ruby-progressbar (1.7.5)
-    rubyzip (1.2.1)
-    selenium-webdriver (3.1.0)
-      childprocess (~> 0.5)
-      rubyzip (~> 1.0)
-      websocket (~> 1.0)
-    syntax (1.2.1)
-    thor (0.19.4)
-    unf (0.1.4)
-      unf_ext
-    unf_ext (0.0.7.2)
-    watir (6.2.0)
-      selenium-webdriver (~> 3.0)
-    websocket (1.2.4)
-    yml_reader (0.7)
-
-PLATFORMS
-  ruby
-
-DEPENDENCIES
-  mediawiki_selenium (~> 1.8)
-  rake (~> 11.1, >= 11.1.1)
-  rubocop (~> 0.32.1)
-
-BUNDLED WITH
-   1.14.5
diff --git a/HISTORY b/HISTORY
index c6ce06c..9259814 100644 (file)
--- a/HISTORY
+++ b/HISTORY
@@ -1,4 +1,338 @@
-Change notes from older releases. For current info see RELEASE-NOTES-1.29.
+Change notes from older releases. For current info see RELEASE-NOTES-1.30.
+
+= MediaWiki 1.29 =
+
+== MediaWiki 1.29.0 ==
+
+=== Configuration changes in 1.29 ===
+* Default cookie expiration time has been reduced to 30 days. Login cookie
+  expiration time is kept at 180 days.
+* A new configuration variable has been added: $wgCookieSetOnAutoblock. This
+  determines whether to set a cookie when a user is autoblocked. Doing so means
+  that a blocked user, even after logging out and moving to a new IP address,
+  will still be blocked.
+* The resetpassword right and associated password reset capture feature has
+  been removed.
+* The $error parameter to the EmailUser hook should be set to a Status object
+  or boolean false. This should be compatible with at least MediaWiki 1.23 if
+  not earlier. Returning a raw HTML string is now deprecated.
+* The $message parameter to the ApiCheckCanExecute hook should be set to an
+  ApiMessage. This is compatible with MediaWiki 1.27 and later. Returning a
+  code for ApiBase::parseMsg() will no longer work.
+* ApiBase::$messageMap is no longer public. Code attempting to access it will
+  result in a PHP fatal error.
+* $wgUserEmailUseReplyTo is now true by default to work around restrictive DMARC
+  policies.
+* Subpages are now enabled by default in the Template namespace. Set
+  $wgNamespacesWithSubpages[NS_TEMPLATE] to false to keep the old behavior.
+* $wgRunJobsAsync is now false by default (T142751). This change only affects
+  wikis with $wgJobRunRate > 0.
+* (T158474) "Unknown user" has been added to $wgReservedUsernames.
+* (T156983) $wgRateLimitsExcludedIPs now accepts CIDR ranges as well as single IPs.
+* $wgDummyLanguageCodes is deprecated. Additional language code mappings may be
+  added to $wgExtraLanguageCodes instead.
+* (T161453) LocalisationCache will no longer use the temporary directory in it's
+  fallback chain when trying to work out where to write the cache.
+* The user right 'editusercssjs' (deprecated in 1.16) was removed. Use
+  'editusercss' and 'edituserjs' in $wgGroupPermissions and elsewhere instead.
+
+=== New features in 1.29 ===
+* (T5233) A cookie can now be set when a user is autoblocked, to track that user
+  if they move to a new IP address. This is disabled by default.
+* Added ILocalizedException interface to standardize the use of localized
+  exceptions, largely so the API can handle them more sensibly.
+* Blocks created automatically by MediaWiki, such as for configured proxies or
+  dnsbls, are now indicated as such and use a new i18n message when displayed.
+* Added new $wgHTTPImportTimeout setting. Sets timeout for
+  downloading the XML dump during a transwiki import in seconds.
+* Parser limit report is now available in machine-readable format to JavaScript
+  via mw.config.get('wgPageParseReport').
+* Added $wgSoftBlockRanges, to allow for automatically blocking anonymous edits
+  from certain IP ranges (e.g. private IPs).
+* (T59603) Added new magic word {{PAGELANGUAGE}} which returns the language code
+  of the page being parsed.
+* HTML5 form validation attributes will no longer be suppressed. Originally
+  browsers had poor support for them, but modern browsers handle them fine.
+  This might affect some forms that used them and only worked because the
+  attributes were not actually being set.
+* Expiry times can now be specified when users are added to user groups.
+* Completely new user interface for the RecentChanges page, which
+  structures filters into user-friendly groups.  This has corresponding
+  changes to how filters are registered by core and extensions.
+* The edit form now uses pretty OOjs UI buttons, checkboxes and summary input.
+  Because this change can cause problems for extensions and on-wiki
+  scripts depending on the exact HTML, the old version is still available
+  and can be used by setting $wgOOUIEditPage = false; in LocalSettings.php.
+  This will be removed later and OOjs UI will become the only option.
+  To make testing easier, users can also force either mode by adding
+  &ooui=true or &ooui=false to the action=edit URL.
+
+=== External library changes in 1.29 ===
+
+==== Upgraded external libraries ====
+* Updated QUnit from v1.22.0 to v1.23.1.
+* Updated cssjanus from v1.1.2 to v1.2.0.
+* Updated psr/log from v1.0.0 to v1.0.2.
+* Update Moment.js from v2.8.4 to v2.15.0.
+* Updated oyejorge/less.php from v1.7.0.10 to v1.7.0.14.
+* Updated monolog from v1.18.2 to 1.22.1.
+* Updated wikimedia/composer-merge-plugin from v1.3.1 to v1.4.0.
+* Updated OOjs from v1.1.10 to v2.0.0.
+* Updated jQuery from v1.11.3 to v3.2.1 (including jQuery Migrate v3.0.0).
+
+==== New external libraries ====
+* Added wikimedia/timestamp v1.0.0.
+* Added wikimedia/remex-html v1.0.1.
+
+==== Removed and replaced external libraries ====
+
+=== Bug fixes in 1.29 ===
+* (T62604) Core parser functions returning a number now format the number according
+  to the page content language, not wiki content language.
+* (T27187) Search suggestions based on jquery.suggestions will now correctly only
+  highlight prefix matches in the results.
+* (T157035) "new mw.Uri()" was ignoring options when using default URI.
+* Special:Allpages can no longer be filtered by redirect in miser mode.
+* (T160519) CACHE_ANYTHING will not be CACHE_ACCEL if no accelerator is installed.
+* (T109140) (T122209) SECURITY: Special:UserLogin and Special:Search allow redirect
+  to interwiki links.
+* (T144845) SECURITY: XSS in SearchHighlighter::highlightText() when
+  $wgAdvancedSearchHighlighting is true.
+* (T125177) SECURITY: API parameters may now be marked as "sensitive" to keep
+  their values out of the logs.
+* (T150044) SECURITY: "Mark all pages visited" on the watchlist now requires a CSRF
+  token.
+* (T156184) SECURITY: Escape content model/format url parameter in message.
+* (T151735) SECURITY: SVG filter evasion using default attribute values in DTD
+  declaration.
+* (T161453) SECURITY: LocalisationCache will no longer use the temporary directory
+  in it's fallback chain when trying to work out where to write the cache.
+* (T48143) SECURITY: Spam blacklist ineffective on encoded URLs inside file inclusion
+  syntax's link parameter.
+* (T108138) SECURITY: Sysops can undelete pages, although the page is protected against
+  it.
+
+=== Action API changes in 1.29 ===
+* Submitting sensitive authentication request parameters to action=login,
+  action=clientlogin, action=createaccount, action=linkaccount, and
+  action=changeauthenticationdata in the query string is now an error. They
+  should be submitted in the POST body instead.
+* The capture option for action=resetpassword has been removed
+* action=clearhasmsg now requires a POST.
+* (T47843) API errors and warnings may be requested in non-English languages
+  using the new 'errorformat', 'errorlang', and 'errorsuselocal' parameters.
+* API error codes may have changed. Most notably, errors from modules using
+  parameter prefixes (e.g. all query submodules) will no longer be prefixed.
+* ApiPageSet-using modules will report the 'invalidreason' using the specified
+  'errorformat'.
+* action=emailuser may return a "Warnings" status, and now returns 'warnings' and
+  'errors' subelements (as applicable) instead of 'message'.
+* action=imagerotate returns an 'errors' subelement rather than 'errormessage'.
+* action=move now reports errors when moving the talk page as an array under
+  key 'talkmove-errors', rather than using 'talkmove-error-code' and
+  'talkmove-error-info'. The format for subpage move errors has also changed.
+* action=revisiondelete no longer includes a "rendered" property on warnings
+  and errors for each item. Use errorformat=wikitext if you're wanting parsed
+  output.
+* action=rollback no longer returns a "messageHtml" property. Use
+  errorformat=html if you're wanting HTML formatting of error messages.
+* action=upload now reports optional stash failures as an array under key
+  'stasherrors' rather than a 'stashfailed' text string.
+* action=watch reports 'errors' and 'warnings' instead of a single 'error', and
+  no longer returns a 'message' on success.
+* Added action=validatepassword to validate passwords for the account creation
+  and password change forms.
+* action=purge now requires a POST.
+* There is a new `languagevariants` siprop for action=query&meta=siteinfo,
+  which returns a list of languages with active LanguageConverter instances.
+* action=query&query=allpages will no longer filter redirects using a database
+  query in miser mode. This may result in less results being returned than were
+  requested.
+
+=== Action API internal changes in 1.29 ===
+* New methods were added to ApiBase to handle errors and warnings using i18n
+  keys. Methods for using hard-coded English messages were deprecated:
+  * ApiBase::dieUsage() was deprecated
+  * ApiBase::dieUsageMsg() was deprecated
+  * ApiBase::dieUsageMsgOrDebug() was deprecated
+  * ApiBase::getErrorFromStatus() was deprecated
+  * ApiBase::parseMsg() was deprecated
+  * ApiBase::setWarning() was deprecated
+* ApiBase::$messageMap is no longer public. Code attempting to access it will
+  result in a PHP fatal error.
+* The $message parameter to the ApiCheckCanExecute hook should be set to an
+  ApiMessage. This is compatible with MediaWiki 1.27 and later. Returning a
+  code for ApiBase::parseMsg() will no longer work.
+* UsageException is deprecated in favor of ApiUsageException. For the time
+  being ApiUsageException is a subclass of UsageException to allow things that
+  catch only UsageException to still function properly.
+* If, for some strange reason, code was using an ApiErrorFormatter instead of
+  ApiErrorFormatter_BackCompat, note that the result format has changed and
+  various methods now take a module path rather than a module name.
+* ApiMessageTrait::getApiCode() now strips 'apierror-' and 'apiwarn-' prefixes
+  from the message key, and maps some message keys for backwards compatibility.
+* API parameters may now be marked as "sensitive" to keep their values out of
+  the logs.
+
+=== Languages updated in 1.29 ===
+
+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 Phabricator reports.
+
+* Based as always on linguistic studies on intelligibility and language
+  knowledge by geography, language fallbacks have been expanded. When a
+  translation is missing in the user's preferred interface language, the
+  corresponding translation for the fallback language will be used instead.
+  English will only be used as last resort when there are no translations.
+  Some configurations (such as date formats and gender namespaces) have also
+  been updated when using the fallback language's configuration was inadequate.
+  The new or reinstated language fallbacks are (after cs ↔ sk in 1.28):
+  ca ↔ oc; hsb ↔ dsb; io → eo; mdf → ru; pnt → el; roa-tara → it; rup → ro;
+  sh → bs, sr-el, hr.
+* (T137376) New language support: Atikamekw (atj).
+* (T163600) New language support: Dinka (din).
+* (T155957) Talk Namespaces for Javanese language (jv) have been updated.
+
+==== No fallback for Ukrainian ====
+* (T39314) The fallback from Ukrainian to Russian was removed. The Ukrainian
+  language will now use the default fallback language: English. When a translation
+  to Ukrainian is not available, an English string will be shown.
+
+=== Other changes in 1.29 ===
+* Database::getSearchEngine() (deprecated in 1.28) was removed. Use
+  SearchEngineFactory::getSearchEngineClass() instead.
+* $wgSessionsInMemcached (deprecated in 1.20) was removed. No replacement is
+  required as all sessions are stored in Object Cache now.
+* MWHttpRequest::execute() should be considered to return a StatusValue; the
+  Status return type is deprecated.
+* User::edits() (deprecated in 1.21) was removed.
+* Xml::escapeJsString() (deprecated in 1.21) was removed.
+* Article::getText() and Article::prepareTextForEdit() (deprecated in 1.21)
+  were removed.
+* Article::getAutosummary() and WikiPage::getAutosummary() (deprecated in 1.21)
+  were removed.
+* Hook ArticleViewCustom (deprecated in 1.21) was removed. Use ArticleContentViewCustom
+  instead.
+* Hooks EditPageGetDiffText and ShowRawCssJs (deprecated in 1.21) were removed.
+* Class RevisiondeleteAction (deprecated in 1.25) was removed.
+* WikiPage::prepareTextForEdit() (deprecated in 1.21) was removed.
+* WikiPage::getText() (deprecated in 1.21) was removed.
+* Article::fetchContent() (deprecated in 1.21) was removed.
+* User::getPassword() (deprecated in 1.27) was removed.
+* User::getTemporaryPassword() (deprecated in 1.27) was removed.
+* User::isPasswordReminderThrottled() (deprecated in 1.27) was removed.
+* Class FSRepo (deprecated in 1.19) was removed.
+* WebRequest::checkSessionCookie() (deprecated in 1.27) was removed. Use
+  \MediaWiki\Session\SessionManager::singleton()->getPersistedSessionId() instead.
+* Class ImageGallery (deprecated in 1.22) was removed.
+  Use ImageGalleryBase::factory instead.
+* Title::moveNoAuth() (deprecated in 1.25) was removed. Use MovePage class instead.
+* Hook UnknownAction (deprecated in 1.19) was actually deprecated (it will now
+  emit warnings). Create a subclass of Action and add it to $wgActions instead.
+* WikiRevision::getText() (deprecated since 1.21) is no longer marked deprecated.
+* Linker::getInterwikiLinkAttributes() (deprecated since 1.25) was removed.
+* Linker::getInternalLinkAttributes() (deprecated since 1.25) was removed.
+* Linker::getInternalLinkAttributesObj() (deprecated since 1.25) was removed.
+* Linker::getLinkAttributesInternal() (deprecated since 1.25) was removed.
+* RedisConnectionPool::handleException (deprecated since 1.23) was removed.
+* The static properties mw.Api.errors and mw.Api.warnings, containing incomplete
+  and outdated lists of errors/warnings returned by the API, are now deprecated.
+* wiki.phtml entry point was removed.  Refer to index.php instead. If you want "wiki.phtml"
+  URLs to continue to work, set up redirects. In Apache, this can be done by enabling
+  mod_rewrite and adding the following rules to your configuration:
+
+    RewriteEngine On
+    RewriteBase /
+    RewriteRule ^/w/wiki\.phtml$ /w/index.php [R=301,L]
+* Hook ArticleAfterFetchContent (deprecated in 1.21) was removed.
+  Use ArticleAfterFetchContentObject instead.
+* Hook ArticleInsertComplete (deprecated in 1.21) was removed.
+  Use PageContentInsertComplete instead.
+* Hook ArticleSave (deprecated in 1.21) was removed.
+  Use PageContentSave instead.
+* Hook ArticleSaveComplete (deprecated in 1.21) was removed.
+  Use PageContentSaveComplete instead.
+* Hook EditFilterMerged (deprecated in 1.21) was removed.
+  Use EditFilterMergedContent instead.
+* Hook EditPageGetPreviewText (deprecated in 1.21) was removed.
+  Use EditPageGetPreviewContent instead.
+* Hook TitleIsCssOrJsPage (deprecated in 1.21) was removed.
+  Use ContentHandlerDefaultModelFor instead.
+* Hook TitleIsWikitextPage (deprecated in 1.21) was removed.
+  Use ContentHandlerDefaultModelFor instead.
+* Article::getContent() (deprecated in 1.21) was removed.
+* Revision::getText() (deprecated in 1.21) was removed.
+* Article::doEdit() and WikiPage::doEdit() (deprecated in 1.21) were removed.
+* Parser::replaceUnusualEscapes() (deprecated in 1.24) was removed.
+* Article::doEditContent() was marked as deprecated, to be removed in 1.30
+  or later.
+* ContentHandler::runLegacyHooks() was removed.
+* refreshLinks.php now can be limited to a particular category with --category=...
+  or a tracking category with --tracking-category=...
+* User-like objects that are passed to SpecialUserRights and its subclasses are
+  now required to have a getGroupMemberships() method. See UserRightsProxy for
+  an example.
+* User::$mGroups (instance variable) was marked private. Use User::getGroups()
+  instead.
+* User::getGroupName(), User::getGroupMember(), User:getGroupPage(),
+  User::makeGroupLinkHTML(), and User::makeGroupLinkWiki() were deprecated.
+  Use equivalent methods on the UserGroupMembership class.
+* Maintenance scripts and tests that call User::addGroup() must now ensure that
+  User objects have been added to the database prior to calling addGroup().
+* Protected function UsersPager::getGroups() was removed, and protected function
+  UsersPager::buildGroupLink() was changed from a static to an instance method.
+* The third parameter ($cache) to the UsersPagerDoBatchLookups hook was changed;
+  see docs/hooks.txt.
+* User::crypt() (deprecated in 1.24) was removed.
+* User::comparePasswords() (deprecated in 1.24) was removed.
+* ArchivedFile::getUserText() (deprecated in 1.23) was removed.
+* HTMLFileCache::newFromTitle() (deprecated in 1.24) was removed.
+* BREAKING CHANGE: Internal signature changes to ChangesListSpecialPage
+  and subclasses.  It should only break if you call buildMainQueryConds
+  (changed to buildQuery with new signature) or doMainQuery (new
+  signature).  Subclasses are likely to call at least doMainQuery
+  (possibly both), but other classes might too, because they were
+  public.
+  Also, some related hooks were deprecated, but this is not yet a
+  breaking change.
+* Removed 'jquery.arrowSteps' module. (deprecated since 1.28)
+* The 'jquery.autoEllipsis' ResourceLoader module is now deprecated.
+* WikiRevision::$fileIsTemp was deprecated.
+* WikiRevision::$importer was deprecated.
+* WikiRevision::$user was deprecated.
+* Article::getLastPurgeTimestamp(), WikiPage::getLastPurgeTimestamp(), and the
+  WikiPage::PURGE_* constants are deprecated, and the functions will always
+  return false. They were a hack for an issue that has since been fixed.
+* Hook 'EditPageBeforeEditChecks' is now deprecated. Instead use the new hook
+  'EditPageGetCheckboxesDefinition', or 'EditPage::showStandardInputs:options'
+  if you don't actually care about checkboxes and just want to add some HTML
+  to the page.
+* Selflinks are now rendered as href-less <a> tags with the class mw-selflink
+  rather than <strong> tags. The old class name, "selflink", was deprecated
+  and will be removed in a future release. (T160480)
+* (T156184) $wgRawHtml will no longer apply to internationalization messages.
+* Browser support for non-ES5 JavaScript browsers, including Android 2,
+  Opera <12.10, and Internet Explorer 9, was lowered from Grade A to Grade C.
+* Removed wikibits global methods deprecated since MediaWiki 1.17 (T122755):
+  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,
+  ie6_bugs, clientPC, changeText, killEvt, addHandler, hookEvent,
+  addClickHandler, removeHandler, getElementsByClassName, getInnerText,
+  setupCheckboxShiftClick, addCheckboxClickHandlers, mwEditButtons,
+  mwCustomEditButtons, injectSpinner, removeSpinner, escapeQuotes,
+  escapeQuotesHTML, jsMsg, addPortletLink, appendCSS, tooltipAccessKeyPrefix,
+  tooltipAccessKeyRegexp, updateTooltipAccessKeys.
+* The ID of the <li> element containing the login link has changed from
+  'pt-login' to 'pt-login-private' in private wikis.
+* The old, neglected "bulletin board style toolbar" in the edit form is now
+  deprecated (T30856). This old code dates from 2006, and was replaced in the
+  MediaWiki release tarball and in Wikimedia production by the WikiEditor
+  extension in 2010. It is only shown to users if no other editor was
+  installed, and leads to confusion.
+* (T92459) Loading ResourceLoader modules containing JavaScript through
+  addModuleStyles() is deprecated and will log a warning server-side.
 
 = MediaWiki 1.28 =
 
diff --git a/RELEASE-NOTES-1.29 b/RELEASE-NOTES-1.29
deleted file mode 100644 (file)
index f9ff2e3..0000000
+++ /dev/null
@@ -1,385 +0,0 @@
-== MediaWiki 1.29 ==
-
-THIS IS NOT A RELEASE YET
-
-MediaWiki 1.29 is an alpha-quality branch and is not recommended for use in
-production.
-
-=== Configuration changes in 1.29 ===
-* Default cookie expiration time has been reduced to 30 days. Login cookie
-  expiration time is kept at 180 days.
-* A new configuration variable has been added: $wgCookieSetOnAutoblock. This
-  determines whether to set a cookie when a user is autoblocked. Doing so means
-  that a blocked user, even after logging out and moving to a new IP address,
-  will still be blocked.
-* The resetpassword right and associated password reset capture feature has
-  been removed.
-* The $error parameter to the EmailUser hook should be set to a Status object
-  or boolean false. This should be compatible with at least MediaWiki 1.23 if
-  not earlier. Returning a raw HTML string is now deprecated.
-* The $message parameter to the ApiCheckCanExecute hook should be set to an
-  ApiMessage. This is compatible with MediaWiki 1.27 and later. Returning a
-  code for ApiBase::parseMsg() will no longer work.
-* ApiBase::$messageMap is no longer public. Code attempting to access it will
-  result in a PHP fatal error.
-* $wgUserEmailUseReplyTo is now true by default to work around restrictive DMARC
-  policies.
-* Subpages are now enabled by default in the Template namespace. Set
-  $wgNamespacesWithSubpages[NS_TEMPLATE] to false to keep the old behavior.
-* $wgRunJobsAsync is now false by default (T142751). This change only affects
-  wikis with $wgJobRunRate > 0.
-* A temporary feature flag, $wgDisableUserGroupExpiry, is provided to disable
-  new features that rely on the schema changes to the user_groups table. This
-  feature flag will likely be removed before 1.29 is released.
-* (T158474) "Unknown user" has been added to $wgReservedUsernames.
-* (T156983) $wgRateLimitsExcludedIPs now accepts CIDR ranges as well as single IPs.
-* $wgDummyLanguageCodes is deprecated. Additional language code mappings may be
-  added to $wgExtraLanguageCodes instead.
-* (T161453) LocalisationCache will no longer use the temporary directory in it's
-  fallback chain when trying to work out where to write the cache.
-* The user right 'editusercssjs' (deprecated in 1.16) was removed. Use
-  'editusercss' and 'edituserjs' in $wgGroupPermissions and elsewhere instead.
-
-=== New features in 1.29 ===
-* (T5233) A cookie can now be set when a user is autoblocked, to track that user
-  if they move to a new IP address. This is disabled by default.
-* Added ILocalizedException interface to standardize the use of localized
-  exceptions, largely so the API can handle them more sensibly.
-* Blocks created automatically by MediaWiki, such as for configured proxies or
-  dnsbls, are now indicated as such and use a new i18n message when displayed.
-* Added new $wgHTTPImportTimeout setting. Sets timeout for
-  downloading the XML dump during a transwiki import in seconds.
-* Parser limit report is now available in machine-readable format to JavaScript
-  via mw.config.get('wgPageParseReport').
-* Added $wgSoftBlockRanges, to allow for automatically blocking anonymous edits
-  from certain IP ranges (e.g. private IPs).
-* (T59603) Added new magic word {{PAGELANGUAGE}} which returns the language code
-  of the page being parsed.
-* HTML5 form validation attributes will no longer be suppressed. Originally
-  browsers had poor support for them, but modern browsers handle them fine.
-  This might affect some forms that used them and only worked because the
-  attributes were not actually being set.
-* Expiry times can now be specified when users are added to user groups.
-* Completely new user interface for the RecentChanges page, which
-  structures filters into user-friendly groups.  This has corresponding
-  changes to how filters are registered by core and extensions.
-* The edit form now uses pretty OOjs UI buttons, checkboxes and summary input.
-  Because this change can cause problems for extensions and on-wiki
-  scripts depending on the exact HTML, the old version is still available
-  and can be used by setting $wgOOUIEditPage = false; in LocalSettings.php.
-  This will be removed later and OOjs UI will become the only option.
-  To make testing easier, users can also force either mode by adding
-  &ooui=true or &ooui=false to the action=edit URL.
-
-=== External library changes in 1.29 ===
-
-==== Upgraded external libraries ====
-* Updated QUnit from v1.22.0 to v1.23.1.
-* Updated cssjanus from v1.1.2 to v1.2.0.
-* Updated psr/log from v1.0.0 to v1.0.2.
-* Update Moment.js from v2.8.4 to v2.15.0.
-* Updated oyejorge/less.php from v1.7.0.10 to v1.7.0.14.
-* Updated monolog from v1.18.2 to 1.22.1.
-* Updated wikimedia/composer-merge-plugin from v1.3.1 to v1.4.0.
-* Updated OOjs from v1.1.10 to v2.0.0.
-* Updated jQuery from v1.11.3 to v3.2.1 (including jQuery Migrate v3.0.0).
-
-==== New external libraries ====
-* Added wikimedia/timestamp v1.0.0.
-* Added wikimedia/remex-html v1.0.1.
-
-==== Removed and replaced external libraries ====
-
-=== Bug fixes in 1.29 ===
-* (T62604) Core parser functions returning a number now format the number according
-  to the page content language, not wiki content language.
-* (T27187) Search suggestions based on jquery.suggestions will now correctly only
-  highlight prefix matches in the results.
-* (T157035) "new mw.Uri()" was ignoring options when using default URI.
-* Special:Allpages can no longer be filtered by redirect in miser mode.
-* (T160519) CACHE_ANYTHING will not be CACHE_ACCEL if no accelerator is installed.
-* (T109140) (T122209) SECURITY: Special:UserLogin and Special:Search allow redirect
-  to interwiki links.
-* (T144845) SECURITY: XSS in SearchHighlighter::highlightText() when
-  $wgAdvancedSearchHighlighting is true.
-* (T125177) SECURITY: API parameters may now be marked as "sensitive" to keep
-  their values out of the logs.
-* (T150044) SECURITY: "Mark all pages visited" on the watchlist now requires a CSRF
-  token.
-* (T156184) SECURITY: Escape content model/format url parameter in message.
-* (T151735) SECURITY: SVG filter evasion using default attribute values in DTD
-  declaration.
-* (T161453) SECURITY: LocalisationCache will no longer use the temporary directory
-  in it's fallback chain when trying to work out where to write the cache.
-* (T48143) SECURITY: Spam blacklist ineffective on encoded URLs inside file inclusion
-  syntax's link parameter.
-* (T108138) SECURITY: Sysops can undelete pages, although the page is protected against
-  it.
-
-=== Action API changes in 1.29 ===
-* Submitting sensitive authentication request parameters to action=login,
-  action=clientlogin, action=createaccount, action=linkaccount, and
-  action=changeauthenticationdata in the query string is now an error. They
-  should be submitted in the POST body instead.
-* The capture option for action=resetpassword has been removed
-* action=clearhasmsg now requires a POST.
-* (T47843) API errors and warnings may be requested in non-English languages
-  using the new 'errorformat', 'errorlang', and 'errorsuselocal' parameters.
-* API error codes may have changed. Most notably, errors from modules using
-  parameter prefixes (e.g. all query submodules) will no longer be prefixed.
-* ApiPageSet-using modules will report the 'invalidreason' using the specified
-  'errorformat'.
-* action=emailuser may return a "Warnings" status, and now returns 'warnings' and
-  'errors' subelements (as applicable) instead of 'message'.
-* action=imagerotate returns an 'errors' subelement rather than 'errormessage'.
-* action=move now reports errors when moving the talk page as an array under
-  key 'talkmove-errors', rather than using 'talkmove-error-code' and
-  'talkmove-error-info'. The format for subpage move errors has also changed.
-* action=revisiondelete no longer includes a "rendered" property on warnings
-  and errors for each item. Use errorformat=wikitext if you're wanting parsed
-  output.
-* action=rollback no longer returns a "messageHtml" property. Use
-  errorformat=html if you're wanting HTML formatting of error messages.
-* action=upload now reports optional stash failures as an array under key
-  'stasherrors' rather than a 'stashfailed' text string.
-* action=watch reports 'errors' and 'warnings' instead of a single 'error', and
-  no longer returns a 'message' on success.
-* Added action=validatepassword to validate passwords for the account creation
-  and password change forms.
-* action=purge now requires a POST.
-* There is a new `languagevariants` siprop for action=query&meta=siteinfo,
-  which returns a list of languages with active LanguageConverter instances.
-* action=query&query=allpages will no longer filter redirects using a database
-  query in miser mode. This may result in less results being returned than were
-  requested.
-
-=== Action API internal changes in 1.29 ===
-* New methods were added to ApiBase to handle errors and warnings using i18n
-  keys. Methods for using hard-coded English messages were deprecated:
-  * ApiBase::dieUsage() was deprecated
-  * ApiBase::dieUsageMsg() was deprecated
-  * ApiBase::dieUsageMsgOrDebug() was deprecated
-  * ApiBase::getErrorFromStatus() was deprecated
-  * ApiBase::parseMsg() was deprecated
-  * ApiBase::setWarning() was deprecated
-* ApiBase::$messageMap is no longer public. Code attempting to access it will
-  result in a PHP fatal error.
-* The $message parameter to the ApiCheckCanExecute hook should be set to an
-  ApiMessage. This is compatible with MediaWiki 1.27 and later. Returning a
-  code for ApiBase::parseMsg() will no longer work.
-* UsageException is deprecated in favor of ApiUsageException. For the time
-  being ApiUsageException is a subclass of UsageException to allow things that
-  catch only UsageException to still function properly.
-* If, for some strange reason, code was using an ApiErrorFormatter instead of
-  ApiErrorFormatter_BackCompat, note that the result format has changed and
-  various methods now take a module path rather than a module name.
-* ApiMessageTrait::getApiCode() now strips 'apierror-' and 'apiwarn-' prefixes
-  from the message key, and maps some message keys for backwards compatibility.
-* API parameters may now be marked as "sensitive" to keep their values out of
-  the logs.
-
-=== Languages updated in 1.29 ===
-
-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 Phabricator reports.
-
-* Based as always on linguistic studies on intelligibility and language
-  knowledge by geography, language fallbacks have been expanded. When a
-  translation is missing in the user's preferred interface language, the
-  corresponding translation for the fallback language will be used instead.
-  English will only be used as last resort when there are no translations.
-  Some configurations (such as date formats and gender namespaces) have also
-  been updated when using the fallback language's configuration was inadequate.
-  The new or reinstated language fallbacks are (after cs ↔ sk in 1.28):
-  ca ↔ oc; hsb ↔ dsb; io → eo; mdf → ru; pnt → el; roa-tara → it; rup → ro;
-  sh → bs, sr-el, hr.
-* (T137376) New language support: Atikamekw (atj).
-* (T155957) Talk Namespaces for Javanese language (jv) have been updated.
-
-==== No fallback for Ukrainian ====
-* (T39314) The fallback from Ukrainian to Russian was removed. The Ukrainian
-  language will now use the default fallback language: English. When a translation
-  to Ukrainian is not available, an English string will be shown.
-
-=== Other changes in 1.29 ===
-* Database::getSearchEngine() (deprecated in 1.28) was removed. Use
-  SearchEngineFactory::getSearchEngineClass() instead.
-* $wgSessionsInMemcached (deprecated in 1.20) was removed. No replacement is
-  required as all sessions are stored in Object Cache now.
-* MWHttpRequest::execute() should be considered to return a StatusValue; the
-  Status return type is deprecated.
-* User::edits() (deprecated in 1.21) was removed.
-* Xml::escapeJsString() (deprecated in 1.21) was removed.
-* Article::getText() and Article::prepareTextForEdit() (deprecated in 1.21)
-  were removed.
-* Article::getAutosummary() and WikiPage::getAutosummary() (deprecated in 1.21)
-  were removed.
-* Hook ArticleViewCustom (deprecated in 1.21) was removed. Use ArticleContentViewCustom
-  instead.
-* Hooks EditPageGetDiffText and ShowRawCssJs (deprecated in 1.21) were removed.
-* Class RevisiondeleteAction (deprecated in 1.25) was removed.
-* WikiPage::prepareTextForEdit() (deprecated in 1.21) was removed.
-* WikiPage::getText() (deprecated in 1.21) was removed.
-* Article::fetchContent() (deprecated in 1.21) was removed.
-* User::getPassword() (deprecated in 1.27) was removed.
-* User::getTemporaryPassword() (deprecated in 1.27) was removed.
-* User::isPasswordReminderThrottled() (deprecated in 1.27) was removed.
-* Class FSRepo (deprecated in 1.19) was removed.
-* WebRequest::checkSessionCookie() (deprecated in 1.27) was removed. Use
-  \MediaWiki\Session\SessionManager::singleton()->getPersistedSessionId() instead.
-* Class ImageGallery (deprecated in 1.22) was removed.
-  Use ImageGalleryBase::factory instead.
-* Title::moveNoAuth() (deprecated in 1.25) was removed. Use MovePage class instead.
-* Hook UnknownAction (deprecated in 1.19) was actually deprecated (it will now
-  emit warnings). Create a subclass of Action and add it to $wgActions instead.
-* WikiRevision::getText() (deprecated since 1.21) is no longer marked deprecated.
-* Linker::getInterwikiLinkAttributes() (deprecated since 1.25) was removed.
-* Linker::getInternalLinkAttributes() (deprecated since 1.25) was removed.
-* Linker::getInternalLinkAttributesObj() (deprecated since 1.25) was removed.
-* Linker::getLinkAttributesInternal() (deprecated since 1.25) was removed.
-* RedisConnectionPool::handleException (deprecated since 1.23) was removed.
-* The static properties mw.Api.errors and mw.Api.warnings, containing incomplete
-  and outdated lists of errors/warnings returned by the API, are now deprecated.
-* wiki.phtml entry point was removed.  Refer to index.php instead. If you want "wiki.phtml"
-  URLs to continue to work, set up redirects. In Apache, this can be done by enabling
-  mod_rewrite and adding the following rules to your configuration:
-
-    RewriteEngine On
-    RewriteBase /
-    RewriteRule ^/w/wiki\.phtml$ /w/index.php [R=301,L]
-* Hook ArticleAfterFetchContent (deprecated in 1.21) was removed.
-  Use ArticleAfterFetchContentObject instead.
-* Hook ArticleInsertComplete (deprecated in 1.21) was removed.
-  Use PageContentInsertComplete instead.
-* Hook ArticleSave (deprecated in 1.21) was removed.
-  Use PageContentSave instead.
-* Hook ArticleSaveComplete (deprecated in 1.21) was removed.
-  Use PageContentSaveComplete instead.
-* Hook EditFilterMerged (deprecated in 1.21) was removed.
-  Use EditFilterMergedContent instead.
-* Hook EditPageGetPreviewText (deprecated in 1.21) was removed.
-  Use EditPageGetPreviewContent instead.
-* Hook TitleIsCssOrJsPage (deprecated in 1.21) was removed.
-  Use ContentHandlerDefaultModelFor instead.
-* Hook TitleIsWikitextPage (deprecated in 1.21) was removed.
-  Use ContentHandlerDefaultModelFor instead.
-* Article::getContent() (deprecated in 1.21) was removed.
-* Revision::getText() (deprecated in 1.21) was removed.
-* Article::doEdit() and WikiPage::doEdit() (deprecated in 1.21) were removed.
-* Parser::replaceUnusualEscapes() (deprecated in 1.24) was removed.
-* Article::doEditContent() was marked as deprecated, to be removed in 1.30
-  or later.
-* ContentHandler::runLegacyHooks() was removed.
-* refreshLinks.php now can be limited to a particular category with --category=...
-  or a tracking category with --tracking-category=...
-* User-like objects that are passed to SpecialUserRights and its subclasses are
-  now required to have a getGroupMemberships() method. See UserRightsProxy for
-  an example.
-* User::$mGroups (instance variable) was marked private. Use User::getGroups()
-  instead.
-* User::getGroupName(), User::getGroupMember(), User:getGroupPage(),
-  User::makeGroupLinkHTML(), and User::makeGroupLinkWiki() were deprecated.
-  Use equivalent methods on the UserGroupMembership class.
-* Maintenance scripts and tests that call User::addGroup() must now ensure that
-  User objects have been added to the database prior to calling addGroup().
-* Protected function UsersPager::getGroups() was removed, and protected function
-  UsersPager::buildGroupLink() was changed from a static to an instance method.
-* The third parameter ($cache) to the UsersPagerDoBatchLookups hook was changed;
-  see docs/hooks.txt.
-* User::crypt() (deprecated in 1.24) was removed.
-* User::comparePasswords() (deprecated in 1.24) was removed.
-* ArchivedFile::getUserText() (deprecated in 1.23) was removed.
-* HTMLFileCache::newFromTitle() (deprecated in 1.24) was removed.
-* BREAKING CHANGE: Internal signature changes to ChangesListSpecialPage
-  and subclasses.  It should only break if you call buildMainQueryConds
-  (changed to buildQuery with new signature) or doMainQuery (new
-  signature).  Subclasses are likely to call at least doMainQuery
-  (possibly both), but other classes might too, because they were
-  public.
-  Also, some related hooks were deprecated, but this is not yet a
-  breaking change.
-* Removed 'jquery.arrowSteps' module. (deprecated since 1.28)
-* The 'jquery.autoEllipsis' ResourceLoader module is now deprecated.
-* WikiRevision::$fileIsTemp was deprecated.
-* WikiRevision::$importer was deprecated.
-* WikiRevision::$user was deprecated.
-* Article::getLastPurgeTimestamp(), WikiPage::getLastPurgeTimestamp(), and the
-  WikiPage::PURGE_* constants are deprecated, and the functions will always
-  return false. They were a hack for an issue that has since been fixed.
-* Hook 'EditPageBeforeEditChecks' is now deprecated. Instead use the new hook
-  'EditPageGetCheckboxesDefinition', or 'EditPage::showStandardInputs:options'
-  if you don't actually care about checkboxes and just want to add some HTML
-  to the page.
-* Selflinks are now rendered as href-less <a> tags with the class mw-selflink
-  rather than <strong> tags. The old class name, "selflink", was deprecated
-  and will be removed in a future release. (T160480)
-* (T156184) $wgRawHtml will no longer apply to internationalization messages.
-* Browser support for non-ES5 JavaScript browsers, including Android 2,
-  Opera <12.10, and Internet Explorer 9, was lowered from Grade A to Grade C.
-* Removed wikibits global methods deprecated since MediaWiki 1.17 (T122755):
-  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,
-  ie6_bugs, clientPC, changeText, killEvt, addHandler, hookEvent,
-  addClickHandler, removeHandler, getElementsByClassName, getInnerText,
-  setupCheckboxShiftClick, addCheckboxClickHandlers, mwEditButtons,
-  mwCustomEditButtons, injectSpinner, removeSpinner, escapeQuotes,
-  escapeQuotesHTML, jsMsg, addPortletLink, appendCSS, tooltipAccessKeyPrefix,
-  tooltipAccessKeyRegexp, updateTooltipAccessKeys.
-
-== Compatibility ==
-
-MediaWiki 1.29 requires PHP 5.5.9 or later. There is experimental support for
-HHVM 3.6.5 or later.
-
-MySQL/MariaDB 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 and Microsoft SQL Server.
-
-The supported versions are:
-
-* MySQL 5.0.3 or later
-* PostgreSQL 8.3 or later
-* SQLite 3.3.7 or later
-* Oracle 9.0.1 or later
-* Microsoft SQL Server 2005 (9.00.1399)
-
-== Upgrading ==
-
-1.29 has several database changes since 1.28, 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).
-
-Don't forget to always back up your database before upgrading!
-
-See the file UPGRADE for more detailed upgrade instructions, including
-important information when upgrading from versions prior to 1.11.
-
-For notes on 1.28.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/Special:MyLanguage/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.
diff --git a/RELEASE-NOTES-1.30 b/RELEASE-NOTES-1.30
new file mode 100644 (file)
index 0000000..6bd63d3
--- /dev/null
@@ -0,0 +1,177 @@
+== MediaWiki 1.30 ==
+
+THIS IS NOT A RELEASE YET
+
+MediaWiki 1.30 is an alpha-quality branch and is not recommended for use in
+production.
+
+=== Configuration changes in 1.30 ===
+* The C.UTF-8 locale should be used for $wgShellLocale, if available, to avoid
+  unexpected behavior when things use local-sensitive string comparisons. For
+  example, Scribunto considers "bar" < "Foo" in most locales since it ignores
+  case.
+* $wgShellLocale now affects LC_ALL rather than only LC_CTYPE. See
+  documentation of $wgShellLocale for details.
+* $wgJobClasses may now specify callback functions
+  as an alternative to plain class names.
+  This is intended for extensions that want control
+  over the instantiation of their jobs,
+  to allow for proper dependency injection.
+* $wgResourceModules may now specify callback functions as an alternative
+  to plain class names, using the 'factory' key in the module description
+  array. This allows dependency injection to be used for ResourceLoader modules.
+* $wgExceptionHooks has been removed.
+* $wgShellLocale is now applied for all requests. wfInitShellLocale() is
+  deprecated and a no-op, as it is no longer needed.
+* WikiPage::getParserOutput() will now throw an exception if passed
+  ParserOptions would pollute the parser cache. Callers should use
+  WikiPage::makeParserOptions() to create the ParserOptions object and only
+  change options that affect the parser cache key.
+* (T45547) $wgUsePigLatinVariant added (off by default).
+
+=== New features in 1.30 ===
+* (T37247) Output from Parser::parse() will now be wrapped in a div with
+  class="mw-parser-output" by default. This may be changed or disabled using
+  ParserOptions::setWrapOutputClass().
+* Added 'ChangeTagsAllowedAdd' hook, enabling extensions to allow software-
+  specific tags to be added by users.
+* Added a 'ParserOptionsRegister' hook to allow extensions to register
+  additional parser options.
+* (T45547) Included Pig Latin, a language game in English, as a
+  LanguageConverter variant.  This allows English-speaking developers
+  to develop and test LanguageConverter more easily.  Pig Latin can be
+  enabled by setting $wgUsePigLatinVariant to true.
+
+=== Languages updated in 1.30 ===
+
+* Support for kbp (Kabɩyɛ / Kabiyè) was added.
+
+=== External library changes in 1.30 ===
+
+==== Upgraded external libraries ====
+* …
+
+==== New external libraries ====
+* The class \TestingAccessWrapper has been moved to the external library
+  wikimedia/testing-access-wrapper and renamed \Wikimedia\TestingAccessWrapper.
+
+==== Removed and replaced external libraries ====
+* …
+
+=== Bug fixes in 1.30 ===
+* (T151633) Ordered list items use now Devanagari digits in Nepalese
+  (thanks to Sfic)
+
+=== Action API changes in 1.30 ===
+* (T37247) action=parse output will be wrapped in a div with
+  class="mw-parser-output" by default. This may be changed or disabled using
+  the new 'wrapoutputclass' parameter.
+* When errorformat is not 'bc', abort reasons from action=login will be
+  formatted as specified by the error formatter parameters.
+* action=compare can now handle arbitrary text, deleted revisions, and
+  returning users and edit comments.
+* (T164106) The 'rvdifftotext', 'rvdifftotextpst', 'rvdiffto',
+  'rvexpandtemplates', 'rvgeneratexml', 'rvparse', and 'rvprop=parsetree'
+  parameters to prop=revisions are deprecated, as are the similarly named
+  parameters to prop=deletedrevisions, list=allrevisions, and
+  list=alldeletedrevisions. Use action=compare, action=parse, or
+  action=expandtemplates instead.
+
+=== Action API internal changes in 1.30 ===
+* ApiBase::getDescriptionMessage() and the "apihelp-*-description" messages are
+  deprecated. The existing message should be split between "apihelp-*-summary"
+  and "apihelp-*-extended-description".
+* (T123931) Individual values of multi-valued parameters can now be marked as
+  deprecated.
+
+=== Languages updated in 1.30 ===
+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 Phabricator reports.
+
+* …
+
+==== Pig Latin added ====
+* (T45547) Added Pig Latin, a made-up English variant (en-x-piglatin),
+  for easier variant development and testing. Disabled by default. It can be
+  enabled by setting $wgUsePigLatinVariant to true.
+
+=== Other changes in 1.30 ===
+* The use of an associative array for $wgProxyList, where the IP address is in
+  the key instead of the value, is deprecated (e.g. [ '127.0.0.1' => 'value' ]).
+  Please convert these arrays to indexed/sequential ones (e.g. [ '127.0.0.1' ]).
+* mw.user.bucket (deprecated in 1.23) was removed.
+* LoadBalancer::getServerInfo() and LoadBalancer::setServerInfo() are
+  deprecated. There are no known callers.
+* File::getStreamHeaders() was deprecated.
+* MediaHandler::getStreamHeaders() was deprecated.
+* The ExtractThumbParameters hook (deprecated in 1.21) was removed.
+* The OutputPage::addParserOutputNoText and ::getHeadLinks methods (both
+  deprecated in 1.24) were removed.
+* wfMemcKey() and wfGlobalCacheKey() were deprecated. BagOStuff::makeKey() and
+  BagOStuff::makeGlobalKey() should be used instead.
+* (T146304) Preprocessor handling of LanguageConverter markup has been improved.
+  As a result of the new uniform handling, '-{' may need to be escaped
+  (for example, as '-<nowiki/>{') where it occurs inside template arguments
+  or wikilinks.
+* (T163966) Page moves are now counted as edits for the purposes of
+  autopromotion, i.e., they increment the user_editcount field in the database.
+* Two new hooks, LogEventsListLineEnding and NewPagesLineEnding were added for
+  manipulating Special:Log and Special:NewPages lines.
+* The OldChangesListRecentChangesLine, EnhancedChangesListModifyLineData,
+  PageHistoryLineEnding, ContributionsLineEnding and DeletedContributionsLineEnding
+  hooks have an additional parameter, for manipulating HTML data attributes of
+  RC/history lines. EnhancedChangesListModifyBlockLineData can do that via the
+  $data['attribs'] subarray.
+* (T130632) The OutputPage::enableTOC() method was removed.
+
+== Compatibility ==
+MediaWiki 1.30 requires PHP 5.5.9 or later. There is experimental support for
+HHVM 3.6.5 or later.
+
+MySQL/MariaDB 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 and Microsoft SQL Server.
+
+The supported versions are:
+
+* MySQL 5.0.3 or later
+* PostgreSQL 8.3 or later
+* SQLite 3.3.7 or later
+* Oracle 9.0.1 or later
+* Microsoft SQL Server 2005 (9.00.1399)
+
+== Upgrading ==
+1.30 has several database changes since 1.29, 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).
+
+Don't forget to always back up your database before upgrading!
+
+See the file UPGRADE for more detailed upgrade instructions, including
+important information when upgrading from versions prior to 1.11.
+
+For notes on 1.29.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/Special:MyLanguage/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.
diff --git a/Rakefile b/Rakefile
deleted file mode 100644 (file)
index 59f5480..0000000
--- a/Rakefile
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'bundler/setup'
-
-require 'rubocop/rake_task'
-RuboCop::RakeTask.new(:rubocop) do |task|
-  # if you use mediawiki-vagrant, rubocop will by default use it's .rubocop.yml
-  # the next line makes it explicit that you want .rubocop.yml from the directory
-  # where `bundle exec rake` is executed
-  task.options = ['-c', '.rubocop.yml']
-end
-
-require 'mediawiki_selenium/rake_task'
-MediawikiSelenium::RakeTask.new(site_tag: false)
-
-task default: [:test]
-
-desc 'Run all build/tests commands (CI entry point)'
-task test: [:rubocop]
index bfac50d..293bf6a 100644 (file)
@@ -177,6 +177,7 @@ $wgAutoloadLocalClasses = [
        'BagOStuff' => __DIR__ . '/includes/libs/objectcache/BagOStuff.php',
        'BaseDump' => __DIR__ . '/maintenance/backupPrefetch.inc',
        'BaseTemplate' => __DIR__ . '/includes/skins/BaseTemplate.php',
+       'BashkirUppercaseCollation' => __DIR__ . '/includes/collation/BashkirUppercaseCollation.php',
        'BatchRowIterator' => __DIR__ . '/includes/utils/BatchRowIterator.php',
        'BatchRowUpdate' => __DIR__ . '/includes/utils/BatchRowUpdate.php',
        'BatchRowWriter' => __DIR__ . '/includes/utils/BatchRowWriter.php',
@@ -188,10 +189,12 @@ $wgAutoloadLocalClasses = [
        'BenchUtf8TitleCheck' => __DIR__ . '/maintenance/benchmarks/bench_utf8_title_check.php',
        'BenchWfIsWindows' => __DIR__ . '/maintenance/benchmarks/bench_wfIsWindows.php',
        'BenchWikimediaBaseConvert' => __DIR__ . '/maintenance/benchmarks/bench_Wikimedia_base_convert.php',
+       'BenchmarkCSSMin' => __DIR__ . '/maintenance/benchmarks/benchmarkCSSMin.php',
        'BenchmarkDeleteTruncate' => __DIR__ . '/maintenance/benchmarks/bench_delete_truncate.php',
        'BenchmarkHooks' => __DIR__ . '/maintenance/benchmarks/benchmarkHooks.php',
        'BenchmarkParse' => __DIR__ . '/maintenance/benchmarks/benchmarkParse.php',
        'BenchmarkPurge' => __DIR__ . '/maintenance/benchmarks/benchmarkPurge.php',
+       'BenchmarkTidy' => __DIR__ . '/maintenance/benchmarks/benchmarkTidy.php',
        'Benchmarker' => __DIR__ . '/maintenance/benchmarks/Benchmarker.php',
        'BitmapHandler' => __DIR__ . '/includes/media/Bitmap.php',
        'BitmapHandler_ClientOnly' => __DIR__ . '/includes/media/Bitmap_ClientOnly.php',
@@ -258,6 +261,7 @@ $wgAutoloadLocalClasses = [
        'CleanupAncientTables' => __DIR__ . '/maintenance/cleanupAncientTables.php',
        'CleanupBlocks' => __DIR__ . '/maintenance/cleanupBlocks.php',
        'CleanupEmptyCategories' => __DIR__ . '/maintenance/cleanupEmptyCategories.php',
+       'CleanupInvalidDbKeys' => __DIR__ . '/maintenance/cleanupInvalidDbKeys.php',
        'CleanupPreferences' => __DIR__ . '/maintenance/cleanupPreferences.php',
        'CleanupRemovedModules' => __DIR__ . '/maintenance/cleanupRemovedModules.php',
        'CleanupSpam' => __DIR__ . '/maintenance/cleanupSpam.php',
@@ -285,6 +289,7 @@ $wgAutoloadLocalClasses = [
        'Config' => __DIR__ . '/includes/config/Config.php',
        'ConfigException' => __DIR__ . '/includes/config/ConfigException.php',
        'ConfigFactory' => __DIR__ . '/includes/config/ConfigFactory.php',
+       'ConfiguredReadOnlyMode' => __DIR__ . '/includes/ReadOnlyMode.php',
        'ConstantDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
        'Content' => __DIR__ . '/includes/content/Content.php',
        'ContentHandler' => __DIR__ . '/includes/content/ContentHandler.php',
@@ -311,6 +316,7 @@ $wgAutoloadLocalClasses = [
        'CssContentHandler' => __DIR__ . '/includes/content/CssContentHandler.php',
        'CsvStatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
        'CurlHttpRequest' => __DIR__ . '/includes/http/CurlHttpRequest.php',
+       'CustomUppercaseCollation' => __DIR__ . '/includes/collation/CustomUppercaseCollation.php',
        'DBAccessBase' => __DIR__ . '/includes/dao/DBAccessBase.php',
        'DBAccessError' => __DIR__ . '/includes/libs/rdbms/exception/DBAccessError.php',
        'DBAccessObjectUtils' => __DIR__ . '/includes/dao/DBAccessObjectUtils.php',
@@ -420,6 +426,7 @@ $wgAutoloadLocalClasses = [
        'EmailNotification' => __DIR__ . '/includes/mail/EmailNotification.php',
        'EmaillingJob' => __DIR__ . '/includes/jobqueue/jobs/EmaillingJob.php',
        'EmptyBagOStuff' => __DIR__ . '/includes/libs/objectcache/EmptyBagOStuff.php',
+       'EnConverter' => __DIR__ . '/languages/classes/LanguageEn.php',
        'EncryptedPassword' => __DIR__ . '/includes/password/EncryptedPassword.php',
        'EnhancedChangesList' => __DIR__ . '/includes/changes/EnhancedChangesList.php',
        'EnotifNotifyJob' => __DIR__ . '/includes/jobqueue/jobs/EnotifNotifyJob.php',
@@ -678,6 +685,7 @@ $wgAutoloadLocalClasses = [
        'JsonContentHandler' => __DIR__ . '/includes/content/JsonContentHandler.php',
        'KkConverter' => __DIR__ . '/languages/classes/LanguageKk.php',
        'KuConverter' => __DIR__ . '/languages/classes/LanguageKu.php',
+       'LBFactory' => __DIR__ . '/includes/libs/rdbms/lbfactory/LBFactory.php',
        'LCStore' => __DIR__ . '/includes/cache/localisation/LCStore.php',
        'LCStoreCDB' => __DIR__ . '/includes/cache/localisation/LCStoreCDB.php',
        'LCStoreDB' => __DIR__ . '/includes/cache/localisation/LCStoreDB.php',
@@ -694,6 +702,7 @@ $wgAutoloadLocalClasses = [
        'LanguageConverter' => __DIR__ . '/languages/LanguageConverter.php',
        'LanguageCu' => __DIR__ . '/languages/classes/LanguageCu.php',
        'LanguageDsb' => __DIR__ . '/languages/classes/LanguageDsb.php',
+       'LanguageEn' => __DIR__ . '/languages/classes/LanguageEn.php',
        'LanguageEs' => __DIR__ . '/languages/classes/LanguageEs.php',
        'LanguageEt' => __DIR__ . '/languages/classes/LanguageEt.php',
        'LanguageFi' => __DIR__ . '/languages/classes/LanguageFi.php',
@@ -873,6 +882,8 @@ $wgAutoloadLocalClasses = [
        'MediaWiki\\Linker\\LinkRenderer' => __DIR__ . '/includes/linker/LinkRenderer.php',
        'MediaWiki\\Linker\\LinkRendererFactory' => __DIR__ . '/includes/linker/LinkRendererFactory.php',
        'MediaWiki\\Linker\\LinkTarget' => __DIR__ . '/includes/linker/LinkTarget.php',
+       'MediaWiki\\Logger\\ConsoleLogger' => __DIR__ . '/includes/debug/logger/ConsoleLogger.php',
+       'MediaWiki\\Logger\\ConsoleSpi' => __DIR__ . '/includes/debug/logger/ConsoleSpi.php',
        'MediaWiki\\Logger\\LegacyLogger' => __DIR__ . '/includes/debug/logger/LegacyLogger.php',
        'MediaWiki\\Logger\\LegacySpi' => __DIR__ . '/includes/debug/logger/LegacySpi.php',
        'MediaWiki\\Logger\\LoggerFactory' => __DIR__ . '/includes/debug/logger/LoggerFactory.php',
@@ -948,9 +959,11 @@ $wgAutoloadLocalClasses = [
        'MediaWiki\\Widget\\Search\\SearchResultWidget' => __DIR__ . '/includes/widget/search/SearchResultWidget.php',
        'MediaWiki\\Widget\\Search\\SimpleSearchResultSetWidget' => __DIR__ . '/includes/widget/search/SimpleSearchResultSetWidget.php',
        'MediaWiki\\Widget\\Search\\SimpleSearchResultWidget' => __DIR__ . '/includes/widget/search/SimpleSearchResultWidget.php',
+       'MediaWiki\\Widget\\SelectWithInputWidget' => __DIR__ . '/includes/widget/SelectWithInputWidget.php',
        'MediaWiki\\Widget\\TitleInputWidget' => __DIR__ . '/includes/widget/TitleInputWidget.php',
        'MediaWiki\\Widget\\UserInputWidget' => __DIR__ . '/includes/widget/UserInputWidget.php',
        'MediaWiki\\Widget\\UsersMultiselectWidget' => __DIR__ . '/includes/widget/UsersMultiselectWidget.php',
+       'MediawikiStatsdDataFactory' => __DIR__ . '/includes/libs/stats/MediawikiStatsdDataFactory.php',
        'MemCachedClientforWiki' => __DIR__ . '/includes/compat/MemcachedClientCompat.php',
        'MemcLockManager' => __DIR__ . '/includes/libs/lockmanager/MemcLockManager.php',
        'MemcachedBagOStuff' => __DIR__ . '/includes/libs/objectcache/MemcachedBagOStuff.php',
@@ -968,6 +981,7 @@ $wgAutoloadLocalClasses = [
        'MessageBlobStore' => __DIR__ . '/includes/cache/MessageBlobStore.php',
        'MessageCache' => __DIR__ . '/includes/cache/MessageCache.php',
        'MessageContent' => __DIR__ . '/includes/content/MessageContent.php',
+       'MessageLocalizer' => __DIR__ . '/languages/MessageLocalizer.php',
        'MessageSpecifier' => __DIR__ . '/includes/libs/MessageSpecifier.php',
        'MigrateFileRepoLayout' => __DIR__ . '/maintenance/migrateFileRepoLayout.php',
        'MigrateUserGroup' => __DIR__ . '/maintenance/migrateUserGroup.php',
@@ -1059,6 +1073,7 @@ $wgAutoloadLocalClasses = [
        'PackedOverlayImageGallery' => __DIR__ . '/includes/gallery/PackedOverlayImageGallery.php',
        'Page' => __DIR__ . '/includes/page/Page.php',
        'PageArchive' => __DIR__ . '/includes/page/PageArchive.php',
+       'PageDataRequestHandler' => __DIR__ . '/includes/linkeddata/PageDataRequestHandler.php',
        'PageExists' => __DIR__ . '/maintenance/pageExists.php',
        'PageLangLogFormatter' => __DIR__ . '/includes/logging/PageLangLogFormatter.php',
        'PageProps' => __DIR__ . '/includes/PageProps.php',
@@ -1156,10 +1171,12 @@ $wgAutoloadLocalClasses = [
        'RESTBagOStuff' => __DIR__ . '/includes/libs/objectcache/RESTBagOStuff.php',
        'RSSFeed' => __DIR__ . '/includes/Feed.php',
        'RandomPage' => __DIR__ . '/includes/specials/SpecialRandompage.php',
+       'RangeChronologicalPager' => __DIR__ . '/includes/pager/RangeChronologicalPager.php',
        'RangeDifference' => __DIR__ . '/includes/diff/DiffEngine.php',
        'RawAction' => __DIR__ . '/includes/actions/RawAction.php',
        'RawMessage' => __DIR__ . '/includes/Message.php',
        'ReadOnlyError' => __DIR__ . '/includes/exception/ReadOnlyError.php',
+       'ReadOnlyMode' => __DIR__ . '/includes/ReadOnlyMode.php',
        'ReassignEdits' => __DIR__ . '/maintenance/reassignEdits.php',
        'RebuildAll' => __DIR__ . '/maintenance/rebuildall.php',
        'RebuildFileCache' => __DIR__ . '/maintenance/rebuildFileCache.php',
@@ -1208,7 +1225,9 @@ $wgAutoloadLocalClasses = [
        'ResourceLoaderLanguageDataModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderLanguageDataModule.php',
        'ResourceLoaderLanguageNamesModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderLanguageNamesModule.php',
        'ResourceLoaderModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderModule.php',
+       'ResourceLoaderOOUIFileModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderOOUIFileModule.php',
        'ResourceLoaderOOUIImageModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderOOUIImageModule.php',
+       'ResourceLoaderOOUIModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderOOUIModule.php',
        'ResourceLoaderRawFileModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderRawFileModule.php',
        'ResourceLoaderSiteModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderSiteModule.php',
        'ResourceLoaderSiteStylesModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderSiteStylesModule.php',
@@ -1363,6 +1382,7 @@ $wgAutoloadLocalClasses = [
        'SpecialNewpages' => __DIR__ . '/includes/specials/SpecialNewpages.php',
        'SpecialPage' => __DIR__ . '/includes/specialpage/SpecialPage.php',
        'SpecialPageAction' => __DIR__ . '/includes/actions/SpecialPageAction.php',
+       'SpecialPageData' => __DIR__ . '/includes/specials/SpecialPageData.php',
        'SpecialPageFactory' => __DIR__ . '/includes/specialpage/SpecialPageFactory.php',
        'SpecialPageLanguage' => __DIR__ . '/includes/specials/SpecialPageLanguage.php',
        'SpecialPagesWithProp' => __DIR__ . '/includes/specials/SpecialPagesWithProp.php',
@@ -1587,15 +1607,27 @@ $wgAutoloadLocalClasses = [
        'WikiImporter' => __DIR__ . '/includes/import/WikiImporter.php',
        'WikiMap' => __DIR__ . '/includes/WikiMap.php',
        'WikiPage' => __DIR__ . '/includes/page/WikiPage.php',
-       'WikiReference' => __DIR__ . '/includes/WikiMap.php',
+       'WikiReference' => __DIR__ . '/includes/WikiReference.php',
        'WikiRevision' => __DIR__ . '/includes/import/WikiRevision.php',
        'WikiStatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
        'WikiTextStructure' => __DIR__ . '/includes/content/WikiTextStructure.php',
+       'Wikimedia\\Http\\HttpAcceptNegotiator' => __DIR__ . '/includes/libs/http/HttpAcceptNegotiator.php',
+       'Wikimedia\\Http\\HttpAcceptParser' => __DIR__ . '/includes/libs/http/HttpAcceptParser.php',
        'Wikimedia\\Rdbms\\Blob' => __DIR__ . '/includes/libs/rdbms/encasing/Blob.php',
        'Wikimedia\\Rdbms\\ChronologyProtector' => __DIR__ . '/includes/libs/rdbms/ChronologyProtector.php',
        'Wikimedia\\Rdbms\\ConnectionManager' => __DIR__ . '/includes/libs/rdbms/connectionmanager/ConnectionManager.php',
+       'Wikimedia\\Rdbms\\DBAccessError' => __DIR__ . '/includes/libs/rdbms/exception/DBAccessError.php',
        'Wikimedia\\Rdbms\\DBConnRef' => __DIR__ . '/includes/libs/rdbms/database/DBConnRef.php',
+       'Wikimedia\\Rdbms\\DBConnectionError' => __DIR__ . '/includes/libs/rdbms/exception/DBConnectionError.php',
+       'Wikimedia\\Rdbms\\DBError' => __DIR__ . '/includes/libs/rdbms/exception/DBError.php',
+       'Wikimedia\\Rdbms\\DBExpectedError' => __DIR__ . '/includes/libs/rdbms/exception/DBExpectedError.php',
        'Wikimedia\\Rdbms\\DBMasterPos' => __DIR__ . '/includes/libs/rdbms/database/position/DBMasterPos.php',
+       'Wikimedia\\Rdbms\\DBQueryError' => __DIR__ . '/includes/libs/rdbms/exception/DBQueryError.php',
+       'Wikimedia\\Rdbms\\DBReadOnlyError' => __DIR__ . '/includes/libs/rdbms/exception/DBReadOnlyError.php',
+       'Wikimedia\\Rdbms\\DBReplicationWaitError' => __DIR__ . '/includes/libs/rdbms/exception/DBReplicationWaitError.php',
+       'Wikimedia\\Rdbms\\DBTransactionError' => __DIR__ . '/includes/libs/rdbms/exception/DBTransactionError.php',
+       'Wikimedia\\Rdbms\\DBTransactionSizeError' => __DIR__ . '/includes/libs/rdbms/exception/DBTransactionSizeError.php',
+       'Wikimedia\\Rdbms\\DBUnexpectedError' => __DIR__ . '/includes/libs/rdbms/exception/DBUnexpectedError.php',
        'Wikimedia\\Rdbms\\Database' => __DIR__ . '/includes/libs/rdbms/database/Database.php',
        'Wikimedia\\Rdbms\\DatabaseDomain' => __DIR__ . '/includes/libs/rdbms/database/DatabaseDomain.php',
        'Wikimedia\\Rdbms\\DatabaseMssql' => __DIR__ . '/includes/libs/rdbms/database/DatabaseMssql.php',
@@ -1652,11 +1684,11 @@ $wgAutoloadLocalClasses = [
        'XhprofData' => __DIR__ . '/includes/libs/XhprofData.php',
        'Xml' => __DIR__ . '/includes/Xml.php',
        'XmlDumpWriter' => __DIR__ . '/includes/export/XmlDumpWriter.php',
-       'XmlJsCode' => __DIR__ . '/includes/Xml.php',
+       'XmlJsCode' => __DIR__ . '/includes/XmlJsCode.php',
        'XmlSelect' => __DIR__ . '/includes/XmlSelect.php',
        'XmlTypeCheck' => __DIR__ . '/includes/libs/mime/XmlTypeCheck.php',
        'ZhConverter' => __DIR__ . '/languages/classes/LanguageZh.php',
        'ZipDirectoryReader' => __DIR__ . '/includes/utils/ZipDirectoryReader.php',
-       'ZipDirectoryReaderError' => __DIR__ . '/includes/utils/ZipDirectoryReader.php',
+       'ZipDirectoryReaderError' => __DIR__ . '/includes/utils/ZipDirectoryReaderError.php',
        'profile_point' => __DIR__ . '/profileinfo.php',
 ];
index 44a5eb4..7e107a4 100644 (file)
@@ -25,7 +25,7 @@
                "ext-xml": "*",
                "liuggio/statsd-php-client": "1.0.18",
                "mediawiki/at-ease": "1.1.0",
-               "oojs/oojs-ui": "0.21.0",
+               "oojs/oojs-ui": "0.22.1",
                "oyejorge/less.php": "1.7.0.14",
                "php": ">=5.5.9",
                "psr/log": "1.0.2",
        },
        "require-dev": {
                "composer/spdx-licenses": "1.1.4",
+               "hamcrest/hamcrest-php": "^2.0",
                "jakub-onderka/php-parallel-lint": "0.9.2",
-               "justinrainbow/json-schema": "~3.0",
-               "mediawiki/mediawiki-codesniffer": "0.7.2",
                "jetbrains/phpstorm-stubs": "dev-master#1b9906084d6635456fcf3f3a01f0d7d5b99a578a",
+               "justinrainbow/json-schema": "~3.0",
+               "mediawiki/mediawiki-codesniffer": "0.8.0",
                "monolog/monolog": "~1.22.1",
                "nikic/php-parser": "2.1.0",
                "nmred/kafka-php": "0.1.5",
                "phpunit/phpunit": "4.8.35",
+               "psy/psysh": "0.8.5",
                "wikimedia/avro": "1.7.7",
-               "hamcrest/hamcrest-php": "^2.0",
-               "wmde/hamcrest-html-matchers": "^0.1.0",
-               "psy/psysh": "0.8.3"
+               "wikimedia/testing-access-wrapper": "~1.0",
+               "wmde/hamcrest-html-matchers": "^0.1.0"
        },
        "suggest": {
                "ext-apc": "Local data and opcode cache",
index 3d6eda9..f241cf5 100644 (file)
                },
                "JobClasses": {
                        "type": "object",
-                       "description": "Job types this extension implements (mapping of job type to class name)"
+                       "description": "Job types this extension implements (mapping of job type to class name or factory function)"
                },
                "LogTypes": {
                        "type": "array",
index a2fdf65..518a65c 100644 (file)
@@ -2,6 +2,7 @@
        "$schema": "http://json-schema.org/schema#",
        "description": "MediaWiki extension.json schema",
        "type": "object",
+       "additionalProperties": false,
        "properties": {
                "manifest_version": {
                        "type": "integer",
                                                        }
                                                },
                                                {
-                                                       "description": "An arbitrary ResourceLoaderModule definition",
+                                                       "description": "An arbitrary ResourceLoaderModule definition by class",
                                                        "properties": {
                                                                "class": {
                                                                        "type": "string",
                                                                }
                                                        },
                                                        "required": ["class"]
+                                               },
+                                               {
+                                                       "description": "An arbitrary ResourceLoaderModule definition with instantiator",
+                                                       "properties": {
+                                                               "factory": {
+                                                                       "type": "string",
+                                                                       "description": "A static instantiator function for creating the ResourceLoaderModule object."
+                                                               }
+                                                       },
+                                                       "required": ["factory"]
                                                }
                                        ]
                                }
                },
                "JobClasses": {
                        "type": "object",
-                       "description": "Job types this extension implements (mapping of job type to class name)"
+                       "description": "Job types this extension implements (mapping of job type to class name or factory function)"
                },
                "LogTypes": {
                        "type": "array",
                        "description": "Available feeds objects"
                },
                "SkinOOUIThemes": {
-                       "type": "object"
+                       "type": "object",
+                       "description": "Map of skin names to OOjs UI themes to use. Same format as ResourceLoaderOOUIModule::$builtinSkinThemeMap."
                },
                "PasswordPolicy": {
                        "type": "object",
                        "type": "array",
                        "description": "List of service wiring files to be loaded by the default instance of MediaWikiServices"
                },
+               "attributes": {
+                       "description":"Registration information for other extensions",
+                       "type": "object",
+                       "patternProperties": {
+                               ".*": {
+                                       "type": "object",
+                                       "patternProperties": {
+                                               ".*": {
+                                                       "type": ["array", "object"]
+                                               }
+                                       }
+                               }
+                       }
+               },
                "load_composer_autoloader": {
                        "type": "boolean",
                        "description": "Load the composer autoloader for this extension, if one is present"
index 060af89..3d310c3 100644 (file)
@@ -1070,6 +1070,13 @@ $params: tag params
 $rc: RecentChange being tagged when the tagging accompanies the action or null
 $user: User who performed the tagging when the tagging is subsequent to the action or null
 
+'ChangeTagsAllowedAdd': Called when checking if a user can add tags to a change.
+&$allowedTags: List of all the tags the user is allowed to add. Any tags the
+  user wants to add ($addTags) that are not in this array will cause it to fail.
+  You may add or remove tags to this array as required.
+$addTags: List of tags user intends to add.
+$user: User who is adding the tags.
+
 'ChangeUserGroups': Called before user groups are changed.
 $performer: The User who will perform the change
 $user: The User whose groups will be changed
@@ -1148,6 +1155,9 @@ $page: SpecialPage object for contributions
 &$ret: the HTML line
 $row: the DB row for this line
 &$classes: the classes to add to the surrounding <li>
+&$attribs: associative array of other HTML attributes for the <li> element.
+  Currently only data attributes reserved to MediaWiki are allowed
+  (see Sanitizer::isReservedDataAttribute).
 
 'ContributionsToolLinks': Change tool links above Special:Contributions
 $id: User identifier
@@ -1193,6 +1203,9 @@ $page: SpecialPage object for DeletedContributions
 &$ret: the HTML line
 $row: the DB row for this line
 &$classes: the classes to add to the surrounding <li>
+&$attribs: associative array of other HTML attributes for the <li> element.
+  Currently only data attributes reserved to MediaWiki are allowed
+  (see Sanitizer::isReservedDataAttribute).
 
 'DifferenceEngineAfterLoadNewText': called in DifferenceEngine::loadNewText()
 after the new revision's content has been loaded into the class member variable
@@ -1417,7 +1430,8 @@ Allows modifying the edit checks below the textarea in the edit form.
 
 'EditPageBeforeEditToolbar': Allows modifying the edit toolbar above the
 textarea in the edit form.
-&$toolbar: The toolbar HTMl
+&$toolbar: The toolbar HTML
+Hook subscribers can return false to avoid the default toolbar code being loaded.
 
 'EditPageCopyrightWarning': Allow for site and per-namespace customization of
 contribution/copyright notice.
@@ -1504,6 +1518,9 @@ $changesList: EnhancedChangesList object
 $block: An array of RecentChange objects in that block
 $rc: The RecentChange object for this line
 &$classes: An array of classes to change
+&$attribs: associative array of other HTML attributes for the <tr> element.
+  Currently only data attributes reserved to MediaWiki are allowed
+  (see Sanitizer::isReservedDataAttribute).
 
 'EnhancedChangesListModifyBlockLineData': to alter data used to build
 a non-grouped recent change line in EnhancedChangesList.
@@ -1519,13 +1536,6 @@ $ip: The ip address of the user
 change the tables headers.
 &$extTypes: associative array of extensions types
 
-'ExtractThumbParameters': DEPRECATED! Media handler should override
-MediaHandler::parseParamString instead.
-Called when extracting thumbnail parameters from a thumbnail file name.
-$thumbname: the base name of the thumbnail file
-&$params: the currently extracted params (has source name, temp or archived
-zone)
-
 'FetchChangesList': When fetching the ChangesList derivative for a particular
 user.
 $user: User the list is being fetched for
@@ -1998,6 +2008,16 @@ $file: the File object or false if broken link
 &$attribs: the attributes to be applied
 &$ret: the value to return if your hook returns false
 
+'LogEventsListLineEnding': Called before a Special:Log line is finished
+$page: the LogEventsList object
+&$ret: the HTML line
+$entry: the DatabaseLogEntry object for this row
+&$classes: the classes to add to the surrounding <li>
+&$attribs: associative array of other HTML attributes for the <li> element.
+  Currently only data attributes reserved to MediaWiki are allowed
+  (see Sanitizer::isReservedDataAttribute).
+
+
 'HtmlPageLinkRendererBegin':
 Used when generating internal and interwiki links in
 LinkRenderer, before processing starts.  Return false to skip default
@@ -2283,6 +2303,16 @@ $title: the diff page title (nullable)
 $old: the ?old= param value from the url
 $new: the ?new= param value from the url
 
+'NewPagesLineEnding': Called before a NewPages line is finished.
+$page: the SpecialNewPages object
+&$ret: the HTML line
+$row: the database row for this page (the recentchanges record and a few extras - see
+  NewPagesPager::getQueryInfo)
+&$classes: the classes to add to the surrounding <li>
+&$attribs: associative array of other HTML attributes for the <li> element.
+  Currently only data attributes reserved to MediaWiki are allowed
+  (see Sanitizer::isReservedDataAttribute).
+
 'NewRevisionFromEditComplete': Called when a revision was inserted due to an
 edit.
 $wikiPage: the WikiPage edited
@@ -2295,7 +2325,10 @@ return false to omit the line from RecentChanges and Watchlist special pages.
 &$changeslist: The OldChangesList instance.
 &$s: HTML of the form "<li>...</li>" containing one RC entry.
 $rc: The RecentChange object.
-&$classes: array of css classes for the <li> element
+&$classes: array of css classes for the <li> element.
+&$attribs: associative array of other HTML attributes for the <li> element.
+  Currently only data attributes reserved to MediaWiki are allowed
+  (see Sanitizer::isReservedDataAttribute).
 
 'OpenSearchUrls': Called when constructing the OpenSearch description XML. Hooks
 can alter or append to the array of URLs for search & suggestion formats.
@@ -2403,6 +2436,9 @@ $historyAction: the action object
 &$row: the revision row for this line
 &$s: the string representing this parsed line
 &$classes: array containing the <li> element classes
+&$attribs: associative array of other HTML attributes for the <li> element.
+  Currently only data attributes reserved to MediaWiki are allowed
+  (see Sanitizer::isReservedDataAttribute).
 
 'PageHistoryPager::doBatchLookups': Called after the pager query was run, before
 any output is generated, to allow batch lookups for prefetching information
@@ -2416,7 +2452,8 @@ constructed.
 &$pager: the pager
 &$queryInfo: the query parameters
 
-'PageRenderingHash': Alter the parser cache option hash key. A parser extension
+'PageRenderingHash': NOTE: Consider using ParserOptionsRegister instead.
+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.
 &$confstr: reference to a hash key string which can be modified
@@ -2540,6 +2577,16 @@ $file: file object that will be used to create the image
 &$params: 2-D array of parameters
 $parser: Parser object that called the hook
 
+'ParserOptionsRegister': Register additional parser options. Note that if you
+change the default value for an option, all existing parser cache entries will
+be invalid. To avoid bugs, you'll need to handle that somehow (e.g. with the
+RejectParserCacheValue hook) because MediaWiki won't do it for you.
+&$defaults: Set the default value for your option here.
+&$inCacheKey: To fragment the parser cache on your option, set a truthy value here.
+&$lazyLoad: To lazy-initialize your option, set it null in $defaults and set a
+  callable here. The callable is passed the ParserOptions object and the option
+  name.
+
 'ParserSectionCreate': Called each time the parser creates a document section
 from wikitext. Use this to apply per-section modifications to HTML (like
 wrapping the section in a DIV).  Caveat: DIVs are valid wikitext, and a DIV
index 56fbb07..a01465e 100644 (file)
@@ -177,7 +177,13 @@ class Autopromote {
                                }
                                return false;
                        case APCOND_EDITCOUNT:
-                               return $user->getEditCount() >= $cond[1];
+                               $reqEditCount = $cond[1];
+
+                               // T157718: Avoid edit count lookup if specified edit count is 0 or invalid
+                               if ( $reqEditCount <= 0 ) {
+                                       return true;
+                               }
+                               return $user->getEditCount() >= $reqEditCount;
                        case APCOND_AGE:
                                $age = time() - wfTimestampOrNull( TS_UNIX, $user->getRegistration() );
                                return $age >= $cond[1];
index 0b7f7b2..a7e7308 100644 (file)
@@ -710,7 +710,7 @@ class Block {
                // than getting the msg raw and explode()'ing it.
                $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
                $lines = $cache->getWithSetCallback(
-                       wfMemcKey( 'ipb', 'autoblock', 'whitelist' ),
+                       $cache->makeKey( 'ipb', 'autoblock', 'whitelist' ),
                        $cache::TTL_DAY,
                        function ( $curValue, &$ttl, array &$setOpts ) {
                                $setOpts += Database::getCacheSetOptions( wfGetDB( DB_REPLICA ) );
index ece32ea..5c7cb8d 100644 (file)
@@ -40,15 +40,19 @@ class Category {
        /** Counts of membership (cat_pages, cat_subcats, cat_files) */
        private $mPages = null, $mSubcats = null, $mFiles = null;
 
+       const LOAD_ONLY = 0;
+       const LAZY_INIT_ROW = 1;
+
        private function __construct() {
        }
 
        /**
         * Set up all member variables using a database query.
+        * @param integer $mode
         * @throws MWException
         * @return bool True on success, false on failure.
         */
-       protected function initialize() {
+       protected function initialize( $mode = self::LOAD_ONLY ) {
                if ( $this->mName === null && $this->mID === null ) {
                        throw new MWException( __METHOD__ . ' has both names and IDs null' );
                } elseif ( $this->mID === null ) {
@@ -80,7 +84,7 @@ class Category {
                                $this->mFiles = 0;
 
                                # If the title exists, call refreshCounts to add a row for it.
-                               if ( $this->mTitle->exists() ) {
+                               if ( $mode === self::LAZY_INIT_ROW && $this->mTitle->exists() ) {
                                        DeferredUpdates::addCallableUpdate( [ $this, 'refreshCounts' ] );
                                }
 
@@ -104,7 +108,9 @@ class Category {
                        $this->mSubcats = max( $this->mSubcats, 0 );
                        $this->mFiles = max( $this->mFiles, 0 );
 
-                       DeferredUpdates::addCallableUpdate( [ $this, 'refreshCounts' ] );
+                       if ( $mode === self::LAZY_INIT_ROW ) {
+                               DeferredUpdates::addCallableUpdate( [ $this, 'refreshCounts' ] );
+                       }
                }
 
                return true;
@@ -247,7 +253,7 @@ class Category {
                        return $this->mTitle;
                }
 
-               if ( !$this->initialize() ) {
+               if ( !$this->initialize( self::LAZY_INIT_ROW ) ) {
                        return false;
                }
 
@@ -258,7 +264,7 @@ class Category {
        /**
         * Fetch a TitleArray of up to $limit category members, beginning after the
         * category sort key $offset.
-        * @param int $limit
+        * @param int|bool $limit
         * @param string $offset
         * @return TitleArray TitleArray object for category members.
         */
@@ -297,7 +303,7 @@ class Category {
         * @return bool
         */
        private function getX( $key ) {
-               if ( !$this->initialize() ) {
+               if ( !$this->initialize( self::LAZY_INIT_ROW ) ) {
                        return false;
                }
                return $this->{$key};
@@ -316,11 +322,18 @@ class Category {
                # If we have just a category name, find out whether there is an
                # existing row. Or if we have just an ID, get the name, because
                # that's what categorylinks uses.
-               if ( !$this->initialize() ) {
+               if ( !$this->initialize( self::LOAD_ONLY ) ) {
                        return false;
                }
 
                $dbw = wfGetDB( DB_MASTER );
+               # Avoid excess contention on the same category (T162121)
+               $name = __METHOD__ . ':' . md5( $this->mName );
+               $scopedLock = $dbw->getScopedLockAndFlush( $name, __METHOD__, 1 );
+               if ( !$scopedLock ) {
+                       return false;
+               }
+
                $dbw->startAtomic( __METHOD__ );
 
                $cond1 = $dbw->conditional( [ 'page_namespace' => NS_CATEGORY ], 1, 'NULL' );
index 0205d70..7086a48 100644 (file)
@@ -740,16 +740,7 @@ class CategoryViewer extends ContextSource {
                        // to refresh the incorrect category table entry -- which should be
                        // quick due to the small number of entries.
                        $totalcnt = $rescnt;
-                       $category = $this->cat;
-                       DeferredUpdates::addCallableUpdate( function () use ( $category ) {
-                               # Avoid excess contention on the same category (T162121)
-                               $dbw = wfGetDB( DB_MASTER );
-                               $name = __METHOD__ . ':' . md5( $this->mName );
-                               $scopedLock = $dbw->getScopedLockAndFlush( $name, __METHOD__, 1 );
-                               if ( $scopedLock ) {
-                                       $category->refreshCounts();
-                               }
-                       } );
+                       DeferredUpdates::addCallableUpdate( [ $this->cat, 'refreshCounts' ] );
                } else {
                        // Case 3: hopeless.  Don't give a total count at all.
                        // Messages: category-subcat-count-limited, category-article-count-limited,
index e38524f..00e26d9 100644 (file)
@@ -75,7 +75,7 @@ $wgConfigRegistry = [
  * MediaWiki version number
  * @since 1.2
  */
-$wgVersion = '1.29.0-alpha';
+$wgVersion = '1.30.0-alpha';
 
 /**
  * Name of the site. It must be changed in LocalSettings.php
@@ -1455,6 +1455,8 @@ $wgGalleryOptions = [
        'captionLength' => true,
        // Show the filesize in bytes in categories
        'showBytes' => true,
+       // Show the dimensions (width x height) in categories
+       'showDimensions' => true,
        'mode' => 'traditional',
 ];
 
@@ -3056,6 +3058,12 @@ $wgDisableTitleConversion = false;
  */
 $wgDefaultLanguageVariant = false;
 
+/**
+ * Whether to enable the pig latin variant of English (en-x-piglatin),
+ * used to ease variant development work.
+ */
+$wgUsePigLatinVariant = false;
+
 /**
  * Disabled variants array of language variant conversion.
  *
@@ -5912,15 +5920,6 @@ $wgBotPasswordsCluster = false;
  */
 $wgBotPasswordsDatabase = false;
 
-/**
- * Whether to disable user group expiry. This is a transitional feature flag
- * in accordance with WMF schema change policy, and will be removed later
- * (hopefully before MW 1.29 release).
- *
- * @since 1.29
- */
-$wgDisableUserGroupExpiry = false;
-
 /** @} */ # end of user rights settings
 
 /************************************************************************//**
@@ -5938,7 +5937,7 @@ $wgSecretKey = false;
  *
  * This can have the following formats:
  * - An array of addresses, either in the values
- *   or the keys (for backward compatibility)
+ *   or the keys (for backward compatibility, deprecated since 1.30)
  * - A string, in that case this is the path to a file
  *   containing the list of IP addresses, one per line
  */
@@ -6771,6 +6770,17 @@ $wgRCWatchCategoryMembership = false;
  */
 $wgUseRCPatrol = true;
 
+/**
+ * Whether to allow users to save their RecentChanges filters
+ */
+$wgStructuredChangeFiltersEnableSaving = true;
+
+/**
+ * Whether to show the new experimental views (like namespaces, tags, and users) in
+ * RecentChanges filters
+ */
+$wgStructuredChangeFiltersEnableExperimentalViews = false;
+
 /**
  * Use new page patrolling to check new pages on Special:Newpages
  */
@@ -7332,8 +7342,10 @@ $wgServiceWiringFiles = [
 ];
 
 /**
- * Maps jobs to their handling classes; extensions
- * can add to this to provide custom jobs
+ * Maps jobs to their handlers; extensions
+ * can add to this to provide custom jobs.
+ * A job handler should either be a class name to be instantiated,
+ * or (since 1.30) a callback to use for creating the job object.
  */
 $wgJobClasses = [
        'refreshLinks' => 'RefreshLinksJob',
@@ -7433,15 +7445,6 @@ $wgSpecialPageCacheUpdates = [
        'Statistics' => [ 'SiteStatsUpdate', 'cacheUpdate' ]
 ];
 
-/**
- * Hooks that are used for outputting exceptions.  Format is:
- *   $wgExceptionHooks[] = $funcname
- * or:
- *   $wgExceptionHooks[] = [ $class, $funcname ]
- * Hooks should return strings or false
- */
-$wgExceptionHooks = [];
-
 /**
  * Page property link table invalidation lists. When a page property
  * changes, this may require other link tables to be updated (eg
@@ -8162,11 +8165,40 @@ $wgShellCgroup = false;
 $wgPhpCli = '/usr/bin/php';
 
 /**
- * Locale for LC_CTYPE, to work around https://bugs.php.net/bug.php?id=45132
- * For Unix-like operating systems, set this to to a locale that has a UTF-8
- * character set. Only the character set is relevant.
- */
-$wgShellLocale = 'en_US.utf8';
+ * Locale for LC_ALL, to provide a known environment for locale-sensitive operations
+ *
+ * For Unix-like operating systems, this should be set to C.UTF-8 or an
+ * equivalent to provide the most consistent behavior for locale-sensitive
+ * C library operations across different-language wikis. If that locale is not
+ * available, use another locale that has a UTF-8 character set.
+ *
+ * This setting mainly affects the behavior of C library functions, including:
+ *  - String collation (order when sorting using locale-sensitive comparison)
+ *    - For example, whether "Å" and "A" are considered to be the same letter or
+ *      different letters and if different whether it comes after "A" or after
+ *      "Z", and whether sorting is case sensitive.
+ *  - String character set (how characters beyond basic ASCII are represented)
+ *    - We need this to be a UTF-8 character set to work around
+ *      https://bugs.php.net/bug.php?id=45132
+ *  - Language used for low-level error messages.
+ *  - Formatting of date/time and numeric values (e.g. '.' versus ',' as the
+ *    decimal separator)
+ *
+ * MediaWiki provides its own methods and classes to perform many
+ * locale-sensitive operations, which are designed to be able to vary locale
+ * based on wiki language or user preference:
+ *  - MediaWiki's Collation class should generally be used instead of the C
+ *    library collation functions when locale-sensitive sorting is needed.
+ *  - MediaWiki's Message class should be used for localization of messages
+ *    displayed to the user.
+ *  - MediaWiki's Language class should be used for formatting numeric and
+ *    date/time values.
+ *
+ * @note If multiple wikis are being served from the same process (e.g. the
+ *  same fastCGI or Apache server), this setting must be the same on all those
+ *  wikis.
+ */
+$wgShellLocale = 'C.UTF-8';
 
 /** @} */ # End shell }
 
@@ -8541,6 +8573,15 @@ $wgPopularPasswordFile = __DIR__ . '/../serialized/commonpasswords.cdb';
  */
 $wgMaxUserDBWriteDuration = false;
 
+/*
+ * Max time (in seconds) a job-generated transaction can spend in writes.
+ * If exceeded, the transaction is rolled back with an error instead of being committed.
+ *
+ * @var int|bool Disabled if false
+ * @since 1.30
+ */
+$wgMaxJobDBWriteDuration = false;
+
 /**
  * Mapping of event channels (or channel categories) to EventRelayer configuration.
  *
index f97f164..6be8771 100644 (file)
@@ -1452,10 +1452,8 @@ class EditPage {
         * This uses a temporary cookie for each revision ID so separate saves will never
         * interfere with each other.
         *
-        * The cookie is deleted in the mediawiki.action.view.postEdit JS module after
-        * the redirect.  It must be clearable by JavaScript code, so it must not be
-        * marked HttpOnly. The JavaScript code converts the cookie to a wgPostEdit config
-        * variable.
+        * Article::view deletes the cookie on server-side after the redirect and
+        * converts the value to the global JavaScript variable wgPostEdit.
         *
         * If the variable were set on the server, it would be cached, which is unwanted
         * since the post-edit state should only apply to the load right after the save.
@@ -1474,9 +1472,7 @@ class EditPage {
                }
 
                $response = RequestContext::getMain()->getRequest()->response();
-               $response->setCookie( $postEditKey, $val, time() + self::POST_EDIT_COOKIE_DURATION, [
-                       'httpOnly' => false,
-               ] );
+               $response->setCookie( $postEditKey, $val, time() + self::POST_EDIT_COOKIE_DURATION );
        }
 
        /**
@@ -2757,6 +2753,9 @@ class EditPage {
                $wgOut->addHTML( Html::hidden( 'format', $this->contentFormat ) );
                $wgOut->addHTML( Html::hidden( 'model', $this->contentModel ) );
 
+               // Preserve &ooui=1 / &ooui=0 from URL parameters after submitting the page for preview
+               $wgOut->addHTML( Html::hidden( 'ooui', $this->oouiEnabled ? '1' : '0' ) );
+
                // following functions will need OOUI, enable it only once; here.
                if ( $this->oouiEnabled ) {
                        $wgOut->enableOOUI();
@@ -2909,24 +2908,38 @@ class EditPage {
                                }
                        }
 
+                       $buttonLabel = $this->context->msg( $this->getSaveButtonLabel() )->text();
+
                        if ( $this->missingComment ) {
                                $wgOut->wrapWikiMsg( "<div id='mw-missingcommenttext'>\n$1\n</div>", 'missingcommenttext' );
                        }
 
                        if ( $this->missingSummary && $this->section != 'new' ) {
-                               $wgOut->wrapWikiMsg( "<div id='mw-missingsummary'>\n$1\n</div>", 'missingsummary' );
+                               $wgOut->wrapWikiMsg(
+                                       "<div id='mw-missingsummary'>\n$1\n</div>",
+                                       [ 'missingsummary', $buttonLabel ]
+                               );
                        }
 
                        if ( $this->missingSummary && $this->section == 'new' ) {
-                               $wgOut->wrapWikiMsg( "<div id='mw-missingcommentheader'>\n$1\n</div>", 'missingcommentheader' );
+                               $wgOut->wrapWikiMsg(
+                                       "<div id='mw-missingcommentheader'>\n$1\n</div>",
+                                       [ 'missingcommentheader', $buttonLabel ]
+                               );
                        }
 
                        if ( $this->blankArticle ) {
-                               $wgOut->wrapWikiMsg( "<div id='mw-blankarticle'>\n$1\n</div>", 'blankarticle' );
+                               $wgOut->wrapWikiMsg(
+                                       "<div id='mw-blankarticle'>\n$1\n</div>",
+                                       [ 'blankarticle', $buttonLabel ]
+                               );
                        }
 
                        if ( $this->selfRedirect ) {
-                               $wgOut->wrapWikiMsg( "<div id='mw-selfredirect'>\n$1\n</div>", 'selfredirect' );
+                               $wgOut->wrapWikiMsg(
+                                       "<div id='mw-selfredirect'>\n$1\n</div>",
+                                       [ 'selfredirect', $buttonLabel ]
+                               );
                        }
 
                        if ( $this->hookError !== '' ) {
@@ -3044,8 +3057,9 @@ class EditPage {
                // Note: the maxlength is overridden in JS to 255 and to make it use UTF-8 bytes, not characters.
                return ( is_array( $inputAttrs ) ? $inputAttrs : [] ) + [
                        'id' => 'wpSummary',
+                       'name' => 'wpSummary',
                        'maxlength' => '200',
-                       'tabindex' => '1',
+                       'tabindex' => 1,
                        'size' => 60,
                        'spellcheck' => 'true',
                ] + Linker::tooltipAndAccesskeyAttribs( 'summary' );
@@ -3105,6 +3119,10 @@ class EditPage {
                        $this->getSummaryInputAttributes( $inputAttrs )
                );
 
+               // For compatibility with old scripts and extensions, we want the legacy 'id' on the `<input>`
+               $inputAttrs['inputId'] = $inputAttrs['id'];
+               $inputAttrs['id'] = 'wpSummaryWidget';
+
                return new OOUI\FieldLayout(
                        new OOUI\TextInputWidget( [
                                'value' => $summary,
@@ -3155,7 +3173,6 @@ class EditPage {
                        );
                        $wgOut->addHTML( "{$label} {$input}" );
                }
-
        }
 
        /**
@@ -4096,11 +4113,14 @@ HTML
                }
 
                $script .= '});';
-               $wgOut->addScript( ResourceLoader::makeInlineScript( $script ) );
 
                $toolbar = '<div id="toolbar"></div>';
 
-               Hooks::run( 'EditPageBeforeEditToolbar', [ &$toolbar ] );
+               if ( Hooks::run( 'EditPageBeforeEditToolbar', [ &$toolbar ] ) ) {
+                       // Only add the old toolbar cruft to the page payload if the toolbar has not
+                       // been over-written by a hook caller
+                       $wgOut->addScript( ResourceLoader::makeInlineScript( $script ) );
+               };
 
                return $toolbar;
        }
@@ -4252,7 +4272,8 @@ HTML
                                new OOUI\CheckboxInputWidget( [
                                        'tabIndex' => ++$tabindex,
                                        'accessKey' => $accesskey,
-                                       'id' => $options['id'],
+                                       'id' => $options['id'] . 'Widget',
+                                       'inputId' => $options['id'],
                                        'name' => $name,
                                        'selected' => $options['default'],
                                        'infusable' => true,
@@ -4279,6 +4300,27 @@ HTML
                return $checkboxes;
        }
 
+       /**
+        * Get the message key of the label for the button to save the page
+        *
+        * @return string
+        */
+       private function getSaveButtonLabel() {
+               $labelAsPublish =
+                       $this->mArticle->getContext()->getConfig()->get( 'EditSubmitButtonLabelPublish' );
+
+               // Can't use $this->isNew as that's also true if we're adding a new section to an extant page
+               $newPage = !$this->mTitle->exists();
+
+               if ( $labelAsPublish ) {
+                       $buttonLabelKey =  $newPage ? 'publishpage' : 'publishchanges';
+               } else {
+                       $buttonLabelKey = $newPage ? 'savearticle' : 'savechanges';
+               }
+
+               return $buttonLabelKey;
+       }
+
        /**
         * Returns an array of html code of the following buttons:
         * save, diff and preview
@@ -4290,17 +4332,9 @@ HTML
        public function getEditButtons( &$tabindex ) {
                $buttons = [];
 
-               $labelAsPublish =
-                       $this->mArticle->getContext()->getConfig()->get( 'EditSubmitButtonLabelPublish' );
+               $buttonLabel = $this->context->msg( $this->getSaveButtonLabel() )->text();
 
-               // Can't use $this->isNew as that's also true if we're adding a new section to an extant page
-               if ( $labelAsPublish ) {
-                       $buttonLabelKey = !$this->mTitle->exists() ? 'publishpage' : 'publishchanges';
-               } else {
-                       $buttonLabelKey = !$this->mTitle->exists() ? 'savearticle' : 'savechanges';
-               }
                $attribs = [
-                       'id' => 'wpSave',
                        'name' => 'wpSave',
                        'tabindex' => ++$tabindex,
                ] + Linker::tooltipAndAccesskeyAttribs( 'save' );
@@ -4308,27 +4342,34 @@ HTML
                if ( $this->oouiEnabled ) {
                        $saveConfig = OOUI\Element::configFromHtmlAttributes( $attribs );
                        $buttons['save'] = new OOUI\ButtonInputWidget( [
+                               'id' => 'wpSaveWidget',
+                               'inputId' => 'wpSave',
+                               // Support: IE 6 – Use <input>, otherwise it can't distinguish which button was clicked
+                               'useInputTag' => true,
                                'flags' => [ 'constructive', 'primary' ],
-                               'label' => $this->context->msg( $buttonLabelKey )->text(),
+                               'label' => $buttonLabel,
                                'infusable' => true,
                                'type' => 'submit',
                        ] + $saveConfig );
                } else {
                        $buttons['save'] = Html::submitButton(
-                               $this->context->msg( $buttonLabelKey )->text(),
-                               $attribs,
+                               $buttonLabel,
+                               $attribs + [ 'id' => 'wpSave' ],
                                [ 'mw-ui-progressive' ]
                        );
                }
 
                $attribs = [
-                       'id' => 'wpPreview',
                        'name' => 'wpPreview',
                        'tabindex' => ++$tabindex,
                ] + Linker::tooltipAndAccesskeyAttribs( 'preview' );
                if ( $this->oouiEnabled ) {
                        $previewConfig = OOUI\Element::configFromHtmlAttributes( $attribs );
                        $buttons['preview'] = new OOUI\ButtonInputWidget( [
+                               'id' => 'wpPreviewWidget',
+                               'inputId' => 'wpPreview',
+                               // Support: IE 6 – Use <input>, otherwise it can't distinguish which button was clicked
+                               'useInputTag' => true,
                                'label' => $this->context->msg( 'showpreview' )->text(),
                                'infusable' => true,
                                'type' => 'submit'
@@ -4336,17 +4377,20 @@ HTML
                } else {
                        $buttons['preview'] = Html::submitButton(
                                $this->context->msg( 'showpreview' )->text(),
-                               $attribs
+                               $attribs + [ 'id' => 'wpPreview' ]
                        );
                }
                $attribs = [
-                       'id' => 'wpDiff',
                        'name' => 'wpDiff',
                        'tabindex' => ++$tabindex,
                ] + Linker::tooltipAndAccesskeyAttribs( 'diff' );
                if ( $this->oouiEnabled ) {
                        $diffConfig = OOUI\Element::configFromHtmlAttributes( $attribs );
                        $buttons['diff'] = new OOUI\ButtonInputWidget( [
+                               'id' => 'wpDiffWidget',
+                               'inputId' => 'wpDiff',
+                               // Support: IE 6 – Use <input>, otherwise it can't distinguish which button was clicked
+                               'useInputTag' => true,
                                'label' => $this->context->msg( 'showdiff' )->text(),
                                'infusable' => true,
                                'type' => 'submit',
@@ -4354,7 +4398,7 @@ HTML
                } else {
                        $buttons['diff'] = Html::submitButton(
                                $this->context->msg( 'showdiff' )->text(),
-                               $attribs
+                               $attribs + [ 'id' => 'wpDiff' ]
                        );
                }
 
@@ -4659,7 +4703,10 @@ HTML
         * @since 1.29
         */
        protected function addExplainConflictHeader( OutputPage $out ) {
-               $out->wrapWikiMsg( "<div class='mw-explainconflict'>\n$1\n</div>", 'explainconflict' );
+               $out->wrapWikiMsg(
+                       "<div class='mw-explainconflict'>\n$1\n</div>",
+                       [ 'explainconflict', $this->context->msg( $this->getSaveButtonLabel() )->text() ]
+               );
        }
 
        /**
index 243d066..089ed81 100644 (file)
@@ -27,7 +27,9 @@ if ( !defined( 'MEDIAWIKI' ) ) {
 use Liuggio\StatsdClient\Sender\SocketSender;
 use MediaWiki\Logger\LoggerFactory;
 use MediaWiki\Session\SessionManager;
+use MediaWiki\MediaWikiServices;
 use Wikimedia\ScopedCallback;
+use Wikimedia\Rdbms\DBReplicationWaitError;
 
 // Hide compatibility functions from Doxygen
 /// @cond
@@ -201,6 +203,38 @@ function wfArrayDiff2_cmp( $a, $b ) {
        }
 }
 
+/**
+ * Like array_filter with ARRAY_FILTER_USE_BOTH, but works pre-5.6.
+ *
+ * @param array $arr
+ * @param callable $callback Will be called with the array value and key (in that order) and
+ *   should return a bool which will determine whether the array element is kept.
+ * @return array
+ */
+function wfArrayFilter( array $arr, callable $callback ) {
+       if ( defined( 'ARRAY_FILTER_USE_BOTH' ) ) {
+               return array_filter( $arr, $callback, ARRAY_FILTER_USE_BOTH );
+       }
+       $filteredKeys = array_filter( array_keys( $arr ), function ( $key ) use ( $arr, $callback ) {
+               return call_user_func( $callback, $arr[$key], $key );
+       } );
+       return array_intersect_key( $arr, array_fill_keys( $filteredKeys, true ) );
+}
+
+/**
+ * Like array_filter with ARRAY_FILTER_USE_KEY, but works pre-5.6.
+ *
+ * @param array $arr
+ * @param callable $callback Will be called with the array key and should return a bool which
+ *   will determine whether the array element is kept.
+ * @return array
+ */
+function wfArrayFilterByKey( array $arr, callable $callback ) {
+       return wfArrayFilter( $arr, function ( $val, $key ) use ( $callback ) {
+               return call_user_func( $callback, $key );
+       } );
+}
+
 /**
  * Appends to second array if $value differs from that in $default
  *
@@ -809,10 +843,24 @@ function wfUrlProtocolsWithoutProtRel() {
  * 1) Does not raise warnings on bad URLs (just returns false).
  * 2) Handles protocols that don't use :// (e.g., mailto: and news:, as well as
  *    protocol-relative URLs) correctly.
- * 3) Adds a "delimiter" element to the array, either '://', ':' or '//' (see (2)).
+ * 3) Adds a "delimiter" element to the array (see (2)).
+ * 4) Verifies that the protocol is on the $wgUrlProtocols whitelist.
+ * 5) Rejects some invalid URLs that parse_url doesn't, e.g. the empty string or URLs starting with
+ *    a line feed character.
  *
  * @param string $url A URL to parse
- * @return string[]|bool Bits of the URL in an associative array, per PHP docs, false on failure
+ * @return string[]|bool Bits of the URL in an associative array, or false on failure.
+ *   Possible fields:
+ *   - scheme: URI scheme (protocol), e.g. 'http', 'mailto'. Lowercase, always present, but can
+ *       be an empty string for protocol-relative URLs.
+ *   - delimiter: either '://', ':' or '//'. Always present.
+ *   - host: domain name / IP. Always present, but could be an empty string, e.g. for file: URLs.
+ *   - user: user name, e.g. for HTTP Basic auth URLs such as http://user:pass@example.com/
+ *       Missing when there is no username.
+ *   - pass: password, same as above.
+ *   - path: path including the leading /. Will be missing when empty (e.g. 'http://example.com')
+ *   - query: query string (as a string; see wfCgiToArray() for parsing it), can be missing.
+ *   - fragment: the part after #, can be missing.
  */
 function wfParseUrl( $url ) {
        global $wgUrlProtocols; // Allow all protocols defined in DefaultSettings/LocalSettings.php
@@ -1189,7 +1237,8 @@ function wfLogProfilingData() {
        $profiler->logData();
 
        $config = $context->getConfig();
-       if ( $config->get( 'StatsdServer' ) ) {
+       $stats = MediaWikiServices::getInstance()->getStatsdDataFactory();
+       if ( $config->get( 'StatsdServer' ) && $stats->hasData() ) {
                try {
                        $statsdServer = explode( ':', $config->get( 'StatsdServer' ) );
                        $statsdHost = $statsdServer[0];
@@ -1197,7 +1246,7 @@ function wfLogProfilingData() {
                        $statsdSender = new SocketSender( $statsdHost, $statsdPort );
                        $statsdClient = new SamplingStatsdClient( $statsdSender, true, false );
                        $statsdClient->setSamplingRates( $config->get( 'StatsdSamplingRates' ) );
-                       $statsdClient->send( $context->getStats()->getBuffer() );
+                       $statsdClient->send( $stats->getData() );
                } catch ( Exception $ex ) {
                        MWExceptionHandler::logException( $ex );
                }
@@ -1262,7 +1311,7 @@ function wfLogProfilingData() {
  * @return void
  */
 function wfIncrStats( $key, $count = 1 ) {
-       $stats = RequestContext::getMain()->getStats();
+       $stats = MediaWikiServices::getInstance()->getStatsdDataFactory();
        $stats->updateCount( $key, $count );
 }
 
@@ -1272,7 +1321,8 @@ function wfIncrStats( $key, $count = 1 ) {
  * @return bool
  */
 function wfReadOnly() {
-       return wfReadOnlyReason() !== false;
+       return MediaWikiServices::getInstance()->getReadOnlyMode()
+               ->isReadOnly();
 }
 
 /**
@@ -1284,19 +1334,8 @@ function wfReadOnly() {
  * @return string|bool String when in read-only mode; false otherwise
  */
 function wfReadOnlyReason() {
-       $readOnly = wfConfiguredReadOnlyReason();
-       if ( $readOnly !== false ) {
-               return $readOnly;
-       }
-
-       static $lbReadOnly = null;
-       if ( $lbReadOnly === null ) {
-               // Callers use this method to be aware that data presented to a user
-               // may be very stale and thus allowing submissions can be problematic.
-               $lbReadOnly = wfGetLB()->getReadOnlyReason();
-       }
-
-       return $lbReadOnly;
+       return MediaWikiServices::getInstance()->getReadOnlyMode()
+               ->getReason();
 }
 
 /**
@@ -1306,18 +1345,8 @@ function wfReadOnlyReason() {
  * @since 1.27
  */
 function wfConfiguredReadOnlyReason() {
-       global $wgReadOnly, $wgReadOnlyFile;
-
-       if ( $wgReadOnly === null ) {
-               // Set $wgReadOnly for faster access next time
-               if ( is_file( $wgReadOnlyFile ) && filesize( $wgReadOnlyFile ) > 0 ) {
-                       $wgReadOnly = file_get_contents( $wgReadOnlyFile );
-               } else {
-                       $wgReadOnly = false;
-               }
-       }
-
-       return $wgReadOnly;
+       return MediaWikiServices::getInstance()->getConfiguredReadOnlyMode()
+               ->getReason();
 }
 
 /**
@@ -1452,7 +1481,6 @@ function wfMsgReplaceArgs( $message, $args ) {
 function wfHostname() {
        static $host;
        if ( is_null( $host ) ) {
-
                # Hostname overriding
                global $wgOverrideHostname;
                if ( $wgOverrideHostname !== false ) {
@@ -2210,8 +2238,6 @@ function wfIniGetBool( $setting ) {
  * @return string
  */
 function wfEscapeShellArg( /*...*/ ) {
-       wfInitShellLocale();
-
        $args = func_get_args();
        if ( count( $args ) === 1 && is_array( reset( $args ) ) ) {
                // If only one argument has been passed, and that argument is an array,
@@ -2326,8 +2352,6 @@ function wfShellExec( $cmd, &$retval = null, $environ = [],
        $includeStderr = isset( $options['duplicateStderr'] ) && $options['duplicateStderr'];
        $profileMethod = isset( $options['profileMethod'] ) ? $options['profileMethod'] : wfGetCaller();
 
-       wfInitShellLocale();
-
        $envcmd = '';
        foreach ( $environ as $k => $v ) {
                if ( wfIsWindows() ) {
@@ -2551,18 +2575,14 @@ function wfShellExecWithStderr( $cmd, &$retval = null, $environ = [], $limits =
 }
 
 /**
- * Workaround for https://bugs.php.net/bug.php?id=45132
- * escapeshellarg() destroys non-ASCII characters if LANG is not a UTF-8 locale
+ * Formerly set the locale for locale-sensitive operations
+ *
+ * This is now done in Setup.php.
+ *
+ * @deprecated since 1.30, no longer needed
+ * @see $wgShellLocale
  */
 function wfInitShellLocale() {
-       static $done = false;
-       if ( $done ) {
-               return;
-       }
-       $done = true;
-       global $wgShellLocale;
-       putenv( "LC_CTYPE=$wgShellLocale" );
-       setlocale( LC_CTYPE, $wgShellLocale );
 }
 
 /**
@@ -2972,6 +2992,7 @@ function wfGetPrecompiledData( $name ) {
 /**
  * Make a cache key for the local wiki.
  *
+ * @deprecated since 1.30 Call makeKey on a BagOStuff instance
  * @param string $args,...
  * @return string
  */
@@ -3008,6 +3029,7 @@ function wfForeignMemcKey( $db, $prefix /*...*/ ) {
  * instead. Must have a prefix as otherwise keys that use a database name
  * in the first segment will clash with wfMemcKey/wfForeignMemcKey.
  *
+ * @deprecated since 1.30 Call makeGlobalKey on a BagOStuff instance
  * @since 1.26
  * @param string $args,...
  * @return string
@@ -3089,9 +3111,9 @@ function wfGetDB( $db, $groups = [], $wiki = false ) {
  */
 function wfGetLB( $wiki = false ) {
        if ( $wiki === false ) {
-               return \MediaWiki\MediaWikiServices::getInstance()->getDBLoadBalancer();
+               return MediaWikiServices::getInstance()->getDBLoadBalancer();
        } else {
-               $factory = \MediaWiki\MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+               $factory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
                return $factory->getMainLB( $wiki );
        }
 }
@@ -3104,7 +3126,7 @@ function wfGetLB( $wiki = false ) {
  * @return \Wikimedia\Rdbms\LBFactory
  */
 function wfGetLBFactory() {
-       return \MediaWiki\MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+       return MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
 }
 
 /**
@@ -3523,7 +3545,9 @@ function wfIsBadImage( $name, $contextTitle = false, $blacklist = null ) {
        }
 
        $cache = ObjectCache::getLocalServerInstance( 'hash' );
-       $key = wfMemcKey( 'bad-image-list', ( $blacklist === null ) ? 'default' : md5( $blacklist ) );
+       $key = $cache->makeKey(
+               'bad-image-list', ( $blacklist === null ) ? 'default' : md5( $blacklist )
+       );
        $badImages = $cache->get( $key );
 
        if ( $badImages === false ) { // cache miss
index bed9957..b133ecd 100644 (file)
@@ -1561,7 +1561,7 @@ class Linker {
                $title = wfMessage( 'toc' )->inLanguage( $lang )->escaped();
 
                return '<div id="toc" class="toc">'
-                       . '<div id="toctitle" class="toctitle"><h2>' . $title . "</h2></div>\n"
+                       . '<div class="toctitle"><h2>' . $title . "</h2></div>\n"
                        . $toc
                        . "</ul>\n</div>\n";
        }
index ef0563e..364ed86 100644 (file)
@@ -25,6 +25,7 @@ use Psr\Log\LoggerInterface;
 use MediaWiki\MediaWikiServices;
 use Wikimedia\Rdbms\ChronologyProtector;
 use Wikimedia\Rdbms\LBFactory;
+use Wikimedia\Rdbms\DBConnectionError;
 
 /**
  * The MediaWiki class is the helper class for the index.php entry point.
@@ -281,7 +282,7 @@ class MediaWiki {
                        }
 
                        // Special pages ($title may have changed since if statement above)
-                       if ( NS_SPECIAL == $title->getNamespace() ) {
+                       if ( $title->isSpecialPage() ) {
                                // Actions that need to be made when we have a special pages
                                SpecialPageFactory::executePath( $title, $this->context );
                        } else {
@@ -897,12 +898,11 @@ class MediaWiki {
                        __METHOD__
                );
 
+               // Important: this must be the last deferred update added (T100085, T154425)
+               DeferredUpdates::addCallableUpdate( [ JobQueueGroup::class, 'pushLazyJobs' ] );
+
                // Do any deferred jobs
                DeferredUpdates::doUpdates( 'enqueue' );
-               DeferredUpdates::setImmediateMode( true );
-
-               // Make sure any lazy jobs are pushed
-               JobQueueGroup::pushLazyJobs();
 
                // Now that everything specific to this request is done,
                // try to occasionally run jobs (if enabled) from the queues
index e44fefe..b63c769 100644 (file)
@@ -9,9 +9,9 @@ use EventRelayerGroup;
 use GenderCache;
 use GlobalVarConfig;
 use Hooks;
+use MediawikiStatsdDataFactory;
 use Wikimedia\Rdbms\LBFactory;
 use LinkCache;
-use Liuggio\StatsdClient\Factory\StatsdDataFactory;
 use Wikimedia\Rdbms\LoadBalancer;
 use MediaHandlerFactory;
 use MediaWiki\Linker\LinkRenderer;
@@ -446,7 +446,7 @@ class MediaWikiServices extends ServiceContainer {
 
        /**
         * @since 1.27
-        * @return StatsdDataFactory
+        * @return MediawikiStatsdDataFactory
         */
        public function getStatsdDataFactory() {
                return $this->getService( 'StatsdDataFactory' );
@@ -656,6 +656,22 @@ class MediaWikiServices extends ServiceContainer {
                return $this->getService( 'VirtualRESTServiceClient' );
        }
 
+       /**
+        * @since 1.29
+        * @return \ConfiguredReadOnlyMode
+        */
+       public function getConfiguredReadOnlyMode() {
+               return $this->getService( 'ConfiguredReadOnlyMode' );
+       }
+
+       /**
+        * @since 1.29
+        * @return \ReadOnlyMode
+        */
+       public function getReadOnlyMode() {
+               return $this->getService( 'ReadOnlyMode' );
+       }
+
        ///////////////////////////////////////////////////////////////////////////
        // NOTE: When adding a service getter here, don't forget to add a test
        // case for it in MediaWikiServicesTest::provideGetters() and in
index f062d13..8670729 100644 (file)
@@ -28,7 +28,7 @@ class MimeMagic extends MimeAnalyzer {
        /**
         * Get an instance of this class
         * @return MimeMagic
-        * @deprecated since 1.28 get a MimeAnalyzer instance form MediaWikiServices
+        * @deprecated since 1.28 get a MimeAnalyzer instance from MediaWikiServices
         */
        public static function singleton() {
                // XXX: We know that the MimeAnalyzer is currently an instance of MimeMagic
index 5c05ad7..24a506c 100644 (file)
@@ -285,9 +285,9 @@ class OutputPage extends ContextSource {
        private $mTarget = null;
 
        /**
-        * @var bool Whether parser output should contain table of contents
+        * @var bool Whether parser output contains a table of contents
         */
-       private $mEnableTOC = true;
+       private $mEnableTOC = false;
 
        /**
         * @var bool Whether parser output should contain section edit links
@@ -1773,17 +1773,6 @@ class OutputPage extends ContextSource {
                $this->addParserOutput( $parserOutput );
        }
 
-       /**
-        * Add a ParserOutput object, but without Html.
-        *
-        * @deprecated since 1.24, use addParserOutputMetadata() instead.
-        * @param ParserOutput $parserOutput
-        */
-       public function addParserOutputNoText( $parserOutput ) {
-               wfDeprecated( __METHOD__, '1.24' );
-               $this->addParserOutputMetadata( $parserOutput );
-       }
-
        /**
         * Add all metadata associated with a ParserOutput object, but without the actual HTML. This
         * includes categories, language links, ResourceLoader modules, effects of certain magic words,
@@ -1850,6 +1839,14 @@ class OutputPage extends ContextSource {
                $outputPage = $this;
                Hooks::run( 'LanguageLinks', [ $this->getTitle(), &$this->mLanguageLinks, &$linkFlags ] );
                Hooks::run( 'OutputPageParserOutput', [ &$outputPage, $parserOutput ] );
+
+               // This check must be after 'OutputPageParserOutput' runs in addParserOutputMetadata
+               // so that extensions may modify ParserOutput to toggle TOC.
+               // This cannot be moved to addParserOutputText because that is not
+               // called by EditPage for Preview.
+               if ( $parserOutput->getTOCEnabled() && $parserOutput->getTOCHTML() ) {
+                       $this->mEnableTOC = true;
+               }
        }
 
        /**
@@ -1890,7 +1887,6 @@ class OutputPage extends ContextSource {
         */
        function addParserOutput( $parserOutput ) {
                $this->addParserOutputMetadata( $parserOutput );
-               $parserOutput->setTOCEnabled( $this->mEnableTOC );
 
                // Touch section edit links only if not previously disabled
                if ( $parserOutput->getEditSectionTokens() ) {
@@ -2388,7 +2384,14 @@ class OutputPage extends ContextSource {
                // jQuery etc. can work correctly.
                $response->header( 'X-UA-Compatible: IE=Edge' );
 
-               $this->addLogoPreloadLinkHeaders();
+               if ( !$this->mArticleBodyOnly ) {
+                       $sk = $this->getSkin();
+
+                       if ( $sk->shouldPreloadLogo() ) {
+                               $this->addLogoPreloadLinkHeaders();
+                       }
+               }
+
                $linkHeader = $this->getLinkHeader();
                if ( $linkHeader ) {
                        $response->header( $linkHeader );
@@ -2409,26 +2412,10 @@ class OutputPage extends ContextSource {
                        }
 
                        $sk = $this->getSkin();
-                       // add skin specific modules
-                       $modules = $sk->getDefaultModules();
-
-                       // Enforce various default modules for all pages and all skins
-                       $coreModules = [
-                               // Keep this list as small as possible
-                               'site',
-                               'mediawiki.page.startup',
-                               'mediawiki.user',
-                       ];
-
-                       // Support for high-density display images if enabled
-                       if ( $config->get( 'ResponsiveImages' ) ) {
-                               $coreModules[] = 'mediawiki.hidpi';
-                       }
-
-                       $this->addModules( $coreModules );
-                       foreach ( $modules as $group ) {
+                       foreach ( $sk->getDefaultModules() as $group ) {
                                $this->addModules( $group );
                        }
+
                        MWDebug::addModules( $this );
 
                        // Avoid PHP 7.1 warning of passing $this by reference
@@ -3021,7 +3008,7 @@ class OutputPage extends ContextSource {
                        && $this->userCanPreview();
        }
 
-       private function isUserCssPreview() {
+       protected function isUserCssPreview() {
                return $this->getConfig()->get( 'AllowUserCss' )
                        && $this->getTitle()
                        && $this->getTitle()->isCssSubpage()
@@ -3214,6 +3201,10 @@ class OutputPage extends ContextSource {
                $vars['wgIsProbablyEditable'] = $title->quickUserCan( 'edit', $user )
                        && ( $title->exists() || $title->quickUserCan( 'create', $user ) );
 
+               $vars['wgRelevantPageIsProbablyEditable'] = $relevantTitle
+                       && $relevantTitle->quickUserCan( 'edit', $user )
+                       && ( $relevantTitle->exists() || $relevantTitle->quickUserCan( 'create', $user ) );
+
                foreach ( $title->getRestrictionTypes() as $type ) {
                        $vars['wgRestriction' . ucfirst( $type )] = $title->getRestrictions( $type );
                }
@@ -3553,16 +3544,6 @@ class OutputPage extends ContextSource {
                return $tags;
        }
 
-       /**
-        * @return string HTML tag links to be put in the header.
-        * @deprecated since 1.24 Use OutputPage::headElement or if you have to,
-        *   OutputPage::getHeadLinksArray directly.
-        */
-       public function getHeadLinks() {
-               wfDeprecated( __METHOD__, '1.24' );
-               return implode( "\n", $this->getHeadLinksArray() );
-       }
-
        /**
         * Generate a "<link rel/>" for a feed.
         *
@@ -3663,10 +3644,21 @@ class OutputPage extends ContextSource {
                        [ 'name' => 'ResourceLoaderDynamicStyles', 'content' => '' ]
                );
 
+               $separateReq = [ 'site.styles', 'user.styles' ];
                foreach ( $this->rlExemptStyleModules as $group => $moduleNames ) {
-                       $chunks[] = $this->makeResourceLoaderLink( $moduleNames,
+                       // Combinable modules
+                       $chunks[] = $this->makeResourceLoaderLink(
+                               array_diff( $moduleNames, $separateReq ),
                                ResourceLoaderModule::TYPE_STYLES
                        );
+
+                       foreach ( array_intersect( $moduleNames, $separateReq ) as $name ) {
+                               // These require their own dedicated request in order to support "@import"
+                               // syntax, which is incompatible with concatenation. (T147667, T37562)
+                               $chunks[] = $this->makeResourceLoaderLink( $name,
+                                       ResourceLoaderModule::TYPE_STYLES
+                               );
+                       }
                }
 
                return self::combineWrappedStrings( array_merge( $chunks, $append ) );
@@ -3928,15 +3920,7 @@ class OutputPage extends ContextSource {
        }
 
        /**
-        * Enables/disables TOC, doesn't override __NOTOC__
-        * @param bool $flag
-        * @since 1.22
-        */
-       public function enableTOC( $flag = true ) {
-               $this->mEnableTOC = $flag;
-       }
-
-       /**
+        * Whether the output has a table of contents
         * @return bool
         * @since 1.22
         */
@@ -3968,12 +3952,10 @@ class OutputPage extends ContextSource {
         * @param String $skinName The Skin name to determine the correct OOUI theme
         * @param String $dir Language direction
         */
-       public static function setupOOUI( $skinName = '', $dir = 'ltr' ) {
-               $themes = ExtensionRegistry::getInstance()->getAttribute( 'SkinOOUIThemes' );
-               // Make keys (skin names) lowercase for case-insensitive matching.
-               $themes = array_change_key_case( $themes, CASE_LOWER );
-               $theme = isset( $themes[$skinName] ) ? $themes[$skinName] : 'MediaWiki';
-               // For example, 'OOUI\MediaWikiTheme'.
+       public static function setupOOUI( $skinName = 'default', $dir = 'ltr' ) {
+               $themes = ResourceLoaderOOUIModule::getSkinThemeMap();
+               $theme = isset( $themes[$skinName] ) ? $themes[$skinName] : $themes['default'];
+               // For example, 'OOUI\WikimediaUITheme'.
                $themeClass = "OOUI\\{$theme}Theme";
                OOUI\Theme::setSingleton( new $themeClass() );
                OOUI\Element::setDefaultDir( $dir );
@@ -3992,10 +3974,12 @@ class OutputPage extends ContextSource {
                );
                $this->addModuleStyles( [
                        'oojs-ui-core.styles',
-                       'oojs-ui.styles.icons',
                        'oojs-ui.styles.indicators',
                        'oojs-ui.styles.textures',
                        'mediawiki.widgets.styles',
+                       'oojs-ui.styles.icons-content',
+                       'oojs-ui.styles.icons-alerts',
+                       'oojs-ui.styles.icons-interactions',
                ] );
        }
 
index c56931e..5a440c4 100644 (file)
@@ -3,10 +3,6 @@
 // @codingStandardsIgnoreFile Generic.Files.LineLength
 // @codingStandardsIgnoreFile MediaWiki.Usage.DirUsage.FunctionFound
 /**
- * Check PHP Version, as well as for composer dependencies in entry points,
- * and display something vaguely comprehensible in the event of a totally
- * unrecoverable error.
- *
  * 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
  *
  * @file
  */
+
+/**
+ * Check PHP Version, as well as for composer dependencies in entry points,
+ * and display something vaguely comprehensible in the event of a totally
+ * unrecoverable error.
+ * @class
+ */
 class PHPVersionCheck {
        /* @var string The number of the MediaWiki version used */
-       var $mwVersion = '1.29';
-       /* @var string The minimum php version for MediaWiki to run */
-       var $minimumVersionPHP = '5.5.9';
+       var $mwVersion = '1.30';
        var $functionsExtensionsMapping = array(
                'mb_substr'   => 'mbstring',
                'utf8_encode' => 'xml',
@@ -63,10 +64,41 @@ class PHPVersionCheck {
        /**
         * Returns the version of the installed php implementation.
         *
-        * @return string
+        * @param string $impl By default, the function returns the info of the currently installed PHP
+        *  implementation. Using this parameter the caller can decide, what version info will be
+        *  returned. Valid values: HHVM, PHP
+        * @return array An array of information about the php implementation, containing:
+        *  - 'version': The version of the php implementation (specific to the implementation, not
+        *  the version of the implemented php version)
+        *  - 'implementation': The name of the implementation used
+        *  - 'vendor': The development group, vendor or developer of the implementation.
+        *  - 'upstreamSupported': The minimum version of the implementation supported by the named vendor.
+        *  - 'minSupported': The minimum version supported by MediWiki
+        *  - 'upgradeURL': The URL to the website of the implementation that contains
+        *  upgrade/installation instructions.
         */
-       function getPHPImplVersion() {
-               return PHP_VERSION;
+       function getPHPInfo( $impl = false ) {
+               if (
+                       ( defined( 'HHVM_VERSION' ) && $impl !== 'PHP' ) ||
+                       $impl === 'HHVM'
+               ) {
+                       return array(
+                               'implementation' => 'HHVM',
+                               'version' => defined( 'HHVM_VERSION' ) ? HHVM_VERSION : 'undefined',
+                               'vendor' => 'Facebook',
+                               'upstreamSupported' => '3.6.5',
+                               'minSupported' => '3.6.5',
+                               'upgradeURL' => 'https://docs.hhvm.com/hhvm/installation/introduction',
+                       );
+               }
+               return array(
+                       'implementation' => 'PHP',
+                       'version' => PHP_VERSION,
+                       'vendor' => 'the PHP Group',
+                       'upstreamSupported' => '5.5.0',
+                       'minSupported' => '5.5.9',
+                       'upgradeURL' => 'http://www.php.net/downloads.php',
+               );
        }
 
        /**
@@ -75,31 +107,44 @@ class PHPVersionCheck {
         * @return $this
         */
        function checkRequiredPHPVersion() {
+               $phpInfo = $this->getPHPInfo();
+               $minimumVersion = $phpInfo['minSupported'];
+               $otherInfo = $this->getPHPInfo( $phpInfo['implementation'] === 'HHVM' ? 'PHP' : 'HHVM' );
                if (
                        !function_exists( 'version_compare' )
-                       || version_compare( $this->getPHPImplVersion(), $this->minimumVersionPHP ) < 0
+                       || version_compare( $phpInfo['version'], $minimumVersion ) < 0
                ) {
-                       $shortText = "MediaWiki $this->mwVersion requires at least PHP version"
-                               . " $this->minimumVersionPHP, you are using PHP {$this->getPHPImplVersion()}.";
+                       $shortText = "MediaWiki $this->mwVersion requires at least {$phpInfo['implementation']}"
+                               . " version $minimumVersion or {$otherInfo['implementation']} version "
+                               . "{$otherInfo['minSupported']}, you are using {$phpInfo['implementation']} "
+                               . "{$phpInfo['version']}.";
 
-                       $longText = "Error: You might be using on older PHP version. \n"
-                               . "MediaWiki $this->mwVersion needs PHP $this->minimumVersionPHP or higher.\n\n"
-                               . "Check if you have a newer php executable with a different name, "
-                               . "such as php5.\n\n";
+                       $longText = "Error: You might be using an older {$phpInfo['implementation']} version. \n"
+                               . "MediaWiki $this->mwVersion needs {$phpInfo['implementation']}"
+                               . " $minimumVersion or higher or {$otherInfo['implementation']} version "
+                               . "{$otherInfo['minSupported']}.\n\nCheck if you have a"
+                               . " newer php executable with a different name, such as php5.\n\n";
 
                        $longHtml = <<<HTML
-                       Please consider <a href="http://www.php.net/downloads.php">upgrading your copy of PHP</a>.
-                       PHP versions less than 5.5.0 are no longer supported by the PHP Group and will not receive
+                       Please consider <a href="{$phpInfo['upgradeURL']}">upgrading your copy of
+                       {$phpInfo['implementation']}</a>.
+                       {$phpInfo['implementation']} versions less than {$phpInfo['upstreamSupported']} are no 
+                       longer supported by {$phpInfo['vendor']} and will not receive
                        security or bugfix updates.
                </p>
                <p>
-                       If for some reason you are unable to upgrade your PHP version, you will need to
-                       <a href="https://www.mediawiki.org/wiki/Download">download</a> an older version
-                       of MediaWiki from our website.  See our
-                       <a href="https://www.mediawiki.org/wiki/Compatibility#PHP">compatibility page</a>
-                       for details of which versions are compatible with prior versions of PHP.
+                       If for some reason you are unable to upgrade your {$phpInfo['implementation']} version,
+                       you will need to <a href="https://www.mediawiki.org/wiki/Download">download</a> an 
+                       older version of MediaWiki from our website.
+                       See our<a href="https://www.mediawiki.org/wiki/Compatibility#PHP">compatibility page</a>
+                       for details of which versions are compatible with prior versions of {$phpInfo['implementation']}.
 HTML;
-                       $this->triggerError( 'Supported PHP versions', $shortText, $longText, $longHtml );
+                       $this->triggerError(
+                               "Supported {$phpInfo['implementation']} versions",
+                               $shortText,
+                               $longText,
+                               $longHtml
+                       );
                }
        }
 
index b428e87..4017619 100644 (file)
@@ -915,6 +915,9 @@ class Preferences {
                        'label-message' => 'tog-hideminor',
                        'section' => 'rc/advancedrc',
                ];
+               $defaultPreferences['rcfilters-saved-queries'] = [
+                       'type' => 'api',
+               ];
 
                if ( $config->get( 'RCWatchCategoryMembership' ) ) {
                        $defaultPreferences['hidecategorization'] = [
diff --git a/includes/ReadOnlyMode.php b/includes/ReadOnlyMode.php
new file mode 100644 (file)
index 0000000..592d495
--- /dev/null
@@ -0,0 +1,140 @@
+<?php
+
+use Wikimedia\Rdbms\LoadBalancer;
+
+/**
+ * A service class for fetching the wiki's current read-only mode.
+ * To obtain an instance, use MediaWikiServices::getReadOnlyMode().
+ *
+ * @since 1.29
+ */
+class ReadOnlyMode {
+       /** @var ConfiguredReadOnlyMode */
+       private $configuredReadOnly;
+
+       /** @var LoadBalancer */
+       private $loadBalancer;
+
+       public function __construct( ConfiguredReadOnlyMode $cro, LoadBalancer $loadBalancer ) {
+               $this->configuredReadOnly = $cro;
+               $this->loadBalancer = $loadBalancer;
+       }
+
+       /**
+        * Check whether the wiki is in read-only mode.
+        *
+        * @return bool
+        */
+       public function isReadOnly() {
+               return $this->getReason() !== false;
+       }
+
+       /**
+        * Check if the site is in read-only mode and return the message if so
+        *
+        * This checks the configuration and registered DB load balancers for
+        * read-only mode. This may result in DB connection being made.
+        *
+        * @return string|bool String when in read-only mode; false otherwise
+        */
+       public function getReason() {
+               $reason = $this->configuredReadOnly->getReason();
+               if ( $reason !== false ) {
+                       return $reason;
+               }
+               $reason = $this->loadBalancer->getReadOnlyReason();
+               if ( $reason !== false && $reason !== null ) {
+                       return $reason;
+               }
+               return false;
+       }
+
+       /**
+        * Set the read-only mode, which will apply for the remainder of the
+        * request or until a service reset.
+        *
+        * @param string|null $msg
+        */
+       public function setReason( $msg ) {
+               $this->configuredReadOnly->setReason( $msg );
+       }
+
+       /**
+        * Clear the cache of the read only file
+        */
+       public function clearCache() {
+               $this->configuredReadOnly->clearCache();
+       }
+}
+
+/**
+ * A read-only mode service which does not depend on LoadBalancer.
+ * To obtain an instance, use MediaWikiServices::getConfiguredReadOnlyMode().
+ *
+ * @since 1.29
+ */
+class ConfiguredReadOnlyMode {
+       /** @var Config */
+       private $config;
+
+       /** @var string|bool|null */
+       private $fileReason;
+
+       /** @var string|null */
+       private $overrideReason;
+
+       public function __construct( Config $config ) {
+               $this->config = $config;
+       }
+
+       /**
+        * Check whether the wiki is in read-only mode.
+        *
+        * @return bool
+        */
+       public function isReadOnly() {
+               return $this->getReason() !== false;
+       }
+
+       /**
+        * Get the value of $wgReadOnly or the contents of $wgReadOnlyFile.
+        *
+        * @return string|bool String when in read-only mode; false otherwise
+        */
+       public function getReason() {
+               if ( $this->overrideReason !== null ) {
+                       return $this->overrideReason;
+               }
+               $confReason = $this->config->get( 'ReadOnly' );
+               if ( $confReason !== null ) {
+                       return $confReason;
+               }
+               if ( $this->fileReason === null ) {
+                       // Cache for faster access next time
+                       $readOnlyFile = $this->config->get( 'ReadOnlyFile' );
+                       if ( is_file( $readOnlyFile ) && filesize( $readOnlyFile ) > 0 ) {
+                               $this->fileReason = file_get_contents( $readOnlyFile );
+                       } else {
+                               $this->fileReason = false;
+                       }
+               }
+               return $this->fileReason;
+       }
+
+       /**
+        * Set the read-only mode, which will apply for the remainder of the
+        * request or until a service reset.
+        *
+        * @param string|null $msg
+        */
+       public function setReason( $msg ) {
+               $this->overrideReason = $msg;
+       }
+
+       /**
+        * Clear the cache of the read only file
+        */
+       public function clearCache() {
+               $this->fileReason = null;
+       }
+}
index b20f843..c3782ba 100644 (file)
@@ -1496,7 +1496,10 @@ class Revision implements IDBAccessObject {
 
                $dbw->insert( 'revision', $row, __METHOD__ );
 
-               $this->mId = $rev_id !== null ? $rev_id : $dbw->insertId();
+               if ( $this->mId === null ) {
+                       // Only if nextSequenceValue() was called
+                       $this->mId = $dbw->insertId();
+               }
 
                // Assertion to try to catch T92046
                if ( (int)$this->mId === 0 ) {
index e9519c3..8920e92 100644 (file)
@@ -782,15 +782,12 @@ class Sanitizer {
 
                        # Allow any attribute beginning with "data-"
                        # However:
-                       # * data-ooui is reserved for ooui
-                       # * data-mw and data-parsoid are reserved for parsoid
-                       # * data-mw-<name here> is reserved for extensions (or core) if
-                       #   they need to communicate some data to the client and want to be
-                       #   sure that it isn't coming from an untrusted user.
+                       # * Disallow data attributes used by MediaWiki code
                        # * Ensure that the attribute is not namespaced by banning
                        #   colons.
-                       if ( !preg_match( '/^data-(?!ooui|mw|parsoid)[^:]*$/i', $attribute )
+                       if ( !preg_match( '/^data-[^:]*$/i', $attribute )
                                && !isset( $whitelist[$attribute] )
+                               || self::isReservedDataAttribute( $attribute )
                        ) {
                                continue;
                        }
@@ -835,7 +832,7 @@ class Sanitizer {
 
                        # NOTE: even though elements using href/src are not allowed directly, supply
                        #       validation code that can be used by tag hook handlers, etc
-                       if ( $attribute === 'href' || $attribute === 'src' ) {
+                       if ( $attribute === 'href' || $attribute === 'src' || $attribute === 'poster' ) {
                                if ( !preg_match( $hrefExp, $value ) ) {
                                        continue; // drop any href or src attributes not using an allowed protocol.
                                        // NOTE: this also drops all relative URLs
@@ -858,6 +855,24 @@ class Sanitizer {
                return $out;
        }
 
+       /**
+        * Given an attribute name, checks whether it is a reserved data attribute
+        * (such as data-mw-foo) which is unavailable to user-generated HTML so MediaWiki
+        * core and extension code can safely use it to communicate with frontend code.
+        * @param string $attr Attribute name.
+        * @return bool
+        */
+       public static function isReservedDataAttribute( $attr ) {
+               // data-ooui is reserved for ooui.
+               // data-mw and data-parsoid are reserved for parsoid.
+               // data-mw-<name here> is reserved for extensions (or core) if
+               // they need to communicate some data to the client and want to be
+               // sure that it isn't coming from an untrusted user.
+               // We ignore the possibility of namespaces since user-generated HTML
+               // can't use them anymore.
+               return (bool)preg_match( '/^data-(ooui|mw|parsoid)/i', $attr );
+       }
+
        /**
         * Merge two sets of HTML attributes.  Conflicting items in the second set
         * will override those in the first, except for 'class' attributes which
@@ -1192,7 +1207,7 @@ class Sanitizer {
                ];
 
                $id = urlencode( strtr( $id, ' ', '_' ) );
-               $id = str_replace( array_keys( $replace ), array_values( $replace ), $id );
+               $id = strtr( $id, $replace );
 
                if ( !preg_match( '/^[a-zA-Z]/', $id ) && !in_array( 'noninitial', $options ) ) {
                        // Initial character must be a letter!
@@ -1760,6 +1775,10 @@ class Sanitizer {
                        # true
                        'img'        => array_merge( $common, [ 'alt', 'src', 'width', 'height' ] ),
 
+                       'video'      => array_merge( $common, [ 'poster', 'controls', 'preload', 'width', 'height' ] ),
+                       'source'     => array_merge( $common, [ 'type', 'src' ] ),
+                       'track'      => array_merge( $common, [ 'type', 'src', 'srclang', 'kind', 'label' ] ),
+
                        # 15.2.1
                        'tt'         => $common,
                        'b'          => $common,
index ce82702..6afabed 100644 (file)
@@ -48,7 +48,8 @@ return [
 
                $lbConf = MWLBFactory::applyDefaultConfig(
                        $mainConfig->get( 'LBFactoryConf' ),
-                       $mainConfig
+                       $mainConfig,
+                       $services->getConfiguredReadOnlyMode()
                );
                $class = MWLBFactory::getLBFactoryClass( $lbConf );
 
@@ -155,7 +156,8 @@ return [
        'WatchedItemStore' => function( MediaWikiServices $services ) {
                $store = new WatchedItemStore(
                        $services->getDBLoadBalancer(),
-                       new HashBagOStuff( [ 'maxKeys' => 100 ] )
+                       new HashBagOStuff( [ 'maxKeys' => 100 ] ),
+                       $services->getReadOnlyMode()
                );
                $store->setStatsdDataFactory( $services->getStatsdDataFactory() );
                return $store;
@@ -404,6 +406,17 @@ return [
                return $vrsClient;
        },
 
+       'ConfiguredReadOnlyMode' => function( MediaWikiServices $services ) {
+               return new ConfiguredReadOnlyMode( $services->getMainConfig() );
+       },
+
+       'ReadOnlyMode' => function( MediaWikiServices $services ) {
+               return new ReadOnlyMode(
+                       $services->getConfiguredReadOnlyMode(),
+                       $services->getDBLoadBalancer()
+               );
+       },
+
        ///////////////////////////////////////////////////////////////////////////
        // NOTE: When adding a service here, don't forget to add a getter function
        // in the MediaWikiServices class. The convenience getter should just call
index 5ea96dd..b10cf23 100644 (file)
@@ -49,6 +49,10 @@ if ( !isset( $wgVersion ) ) {
 
 mb_internal_encoding( 'UTF-8' );
 
+// Set the configured locale on all requests for consisteny
+putenv( "LC_ALL=$wgShellLocale" );
+setlocale( LC_ALL, $wgShellLocale );
+
 // Set various default paths sensibly...
 $ps_default = Profiler::instance()->scopedProfileIn( $fname . '-defaults' );
 
index 1c7730c..6ce1aed 100644 (file)
@@ -22,6 +22,7 @@
 
 use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
+use MediaWiki\MediaWikiServices;
 
 /**
  * Static accessor class for site_stats and related things
@@ -78,9 +79,12 @@ class SiteStats {
                $row = self::doLoad( wfGetDB( DB_REPLICA ) );
 
                if ( !self::isSane( $row ) ) {
-                       // Might have just been initialized during this request? Underflow?
-                       wfDebug( __METHOD__ . ": site_stats damaged or missing on replica DB\n" );
-                       $row = self::doLoad( wfGetDB( DB_MASTER ) );
+                       $lb = MediaWikiServices::getInstance()->getDBLoadBalancer();
+                       if ( $lb->hasOrMadeRecentMasterChanges() ) {
+                               // Might have just been initialized during this request? Underflow?
+                               wfDebug( __METHOD__ . ": site_stats damaged or missing on replica DB\n" );
+                               $row = self::doLoad( wfGetDB( DB_MASTER ) );
+                       }
                }
 
                if ( !$wgMiserMode && !self::isSane( $row ) ) {
@@ -98,6 +102,7 @@ class SiteStats {
                if ( !self::isSane( $row ) ) {
                        wfDebug( __METHOD__ . ": site_stats persistently nonsensical o_O\n" );
                }
+
                return $row;
        }
 
@@ -184,12 +189,11 @@ class SiteStats {
         * @return int
         */
        static function numberingroup( $group ) {
-               $cache = ObjectCache::getMainWANInstance();
+               $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
                return $cache->getWithSetCallback(
-                       wfMemcKey( 'SiteStats', 'groupcounts', $group ),
+                       $cache->makeKey( 'SiteStats', 'groupcounts', $group ),
                        $cache::TTL_HOUR,
                        function ( $oldValue, &$ttl, array &$setOpts ) use ( $group ) {
-                               global $wgDisableUserGroupExpiry;
                                $dbr = wfGetDB( DB_REPLICA );
 
                                $setOpts += Database::getCacheSetOptions( $dbr );
@@ -199,9 +203,7 @@ class SiteStats {
                                        'COUNT(*)',
                                        [
                                                'ug_group' => $group,
-                                               $wgDisableUserGroupExpiry ?
-                                                       '1' :
-                                                       'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() )
+                                               'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() )
                                        ],
                                        __METHOD__
                                );
index 924c347..2759ff9 100644 (file)
@@ -102,20 +102,22 @@ class TemplateParser {
                        $key = $cache->makeKey( 'template', $templateName, $fastHash );
                        $code = $this->forceRecompile ? null : $cache->get( $key );
 
-                       if ( !$code ) {
-                               $code = $this->compileForEval( $fileContents, $filename );
-
-                               // Prefix the cached code with a keyed hash (64 hex chars) as an integrity check
-                               $cache->set( $key, hash_hmac( 'sha256', $code, $secretKey ) . $code );
-                       } else {
+                       if ( $code ) {
                                // Verify the integrity of the cached PHP code
                                $keyedHash = substr( $code, 0, 64 );
                                $code = substr( $code, 64 );
                                if ( $keyedHash !== hash_hmac( 'sha256', $code, $secretKey ) ) {
-                                       // Generate a notice if integrity check fails
-                                       trigger_error( "Template failed integrity check: {$filename}" );
+                                       // If the integrity check fails, don't use the cached code
+                                       // We'll update the invalid cache below
+                                       $code = null;
                                }
                        }
+                       if ( !$code ) {
+                               $code = $this->compileForEval( $fileContents, $filename );
+
+                               // Prefix the cached code with a keyed hash (64 hex chars) as an integrity check
+                               $cache->set( $key, hash_hmac( 'sha256', $code, $secretKey ) . $code );
+                       }
                // If there is no secret key available, don't use cache
                } else {
                        $code = $this->compileForEval( $fileContents, $filename );
index dd6aaef..c9f09f7 100644 (file)
@@ -1419,13 +1419,22 @@ class Title implements LinkTarget {
         * @return string The prefixed text
         */
        private function prefix( $name ) {
+               global $wgContLang;
+
                $p = '';
                if ( $this->isExternal() ) {
                        $p = $this->mInterwiki . ':';
                }
 
                if ( 0 != $this->mNamespace ) {
-                       $p .= $this->getNsText() . ':';
+                       $nsText = $this->getNsText();
+
+                       if ( $nsText === false ) {
+                               // See T165149. Awkward, but better than erroneously linking to the main namespace.
+                               $nsText = $wgContLang->getNsText( NS_SPECIAL ) . ":Badtitle/NS{$this->mNamespace}";
+                       }
+
+                       $p .= $nsText . ':';
                }
                return $p . $name;
        }
@@ -2123,7 +2132,7 @@ class Title implements LinkTarget {
        private function checkSpecialsAndNSPermissions( $action, $user, $errors, $rigor, $short ) {
                # Only 'createaccount' can be performed on special pages,
                # which don't actually exist in the DB.
-               if ( NS_SPECIAL == $this->mNamespace && $action !== 'createaccount' ) {
+               if ( $this->isSpecialPage() && $action !== 'createaccount' ) {
                        $errors[] = [ 'ns-specialprotected' ];
                }
 
@@ -3426,7 +3435,7 @@ class Title implements LinkTarget {
                $this->mTextform = strtr( $this->mDbkeyform, '_', ' ' );
 
                # We already know that some pages won't be in the database!
-               if ( $this->isExternal() || $this->mNamespace == NS_SPECIAL ) {
+               if ( $this->isExternal() || $this->isSpecialPage() ) {
                        $this->mArticleID = 0;
                }
 
@@ -3994,29 +4003,52 @@ class Title implements LinkTarget {
        }
 
        /**
-        * Get the revision ID of the previous revision
-        *
+        * Get next/previous revision ID relative to another revision ID
         * @param int $revId Revision ID. Get the revision that was before this one.
         * @param int $flags Title::GAID_FOR_UPDATE
-        * @return int|bool Old revision ID, or false if none exists
-        */
-       public function getPreviousRevisionID( $revId, $flags = 0 ) {
-               /* This function and getNextRevisionID have bad performance when
-                  used on a page with many revisions on mysql. An explicit extended
-                  primary key may help in some cases, if the PRIMARY KEY is banned:
-                  T159319 */
+        * @param string $dir 'next' or 'prev'
+        * @return int|bool New revision ID, or false if none exists
+        */
+       private function getRelativeRevisionID( $revId, $flags, $dir ) {
+               $revId = (int)$revId;
+               if ( $dir === 'next' ) {
+                       $op = '>';
+                       $sort = 'ASC';
+               } elseif ( $dir === 'prev' ) {
+                       $op = '<';
+                       $sort = 'DESC';
+               } else {
+                       throw new InvalidArgumentException( '$dir must be "next" or "prev"' );
+               }
+
                if ( $flags & self::GAID_FOR_UPDATE ) {
                        $db = wfGetDB( DB_MASTER );
                } else {
                        $db = wfGetDB( DB_REPLICA, 'contributions' );
                }
+
+               // Intentionally not caring if the specified revision belongs to this
+               // page. We only care about the timestamp.
+               $ts = $db->selectField( 'revision', 'rev_timestamp', [ 'rev_id' => $revId ], __METHOD__ );
+               if ( $ts === false ) {
+                       $ts = $db->selectField( 'archive', 'ar_timestamp', [ 'ar_rev_id' => $revId ], __METHOD__ );
+                       if ( $ts === false ) {
+                               // Or should this throw an InvalidArgumentException or something?
+                               return false;
+                       }
+               }
+               $ts = $db->addQuotes( $ts );
+
                $revId = $db->selectField( 'revision', 'rev_id',
                        [
                                'rev_page' => $this->getArticleID( $flags ),
-                               'rev_id < ' . intval( $revId )
+                               "rev_timestamp $op $ts OR (rev_timestamp = $ts AND rev_id $op $revId)"
                        ],
                        __METHOD__,
-                       [ 'ORDER BY' => 'rev_id DESC', 'IGNORE INDEX' => 'PRIMARY' ]
+                       [
+                               'ORDER BY' => "rev_timestamp $sort, rev_id $sort",
+                               'IGNORE INDEX' => 'rev_timestamp', // Probably needed for T159319
+                       ]
                );
 
                if ( $revId === false ) {
@@ -4026,6 +4058,17 @@ class Title implements LinkTarget {
                }
        }
 
+       /**
+        * Get the revision ID of the previous revision
+        *
+        * @param int $revId Revision ID. Get the revision that was before this one.
+        * @param int $flags Title::GAID_FOR_UPDATE
+        * @return int|bool Old revision ID, or false if none exists
+        */
+       public function getPreviousRevisionID( $revId, $flags = 0 ) {
+               return $this->getRelativeRevisionID( $revId, $flags, 'prev' );
+       }
+
        /**
         * Get the revision ID of the next revision
         *
@@ -4034,25 +4077,7 @@ class Title implements LinkTarget {
         * @return int|bool Next revision ID, or false if none exists
         */
        public function getNextRevisionID( $revId, $flags = 0 ) {
-               if ( $flags & self::GAID_FOR_UPDATE ) {
-                       $db = wfGetDB( DB_MASTER );
-               } else {
-                       $db = wfGetDB( DB_REPLICA, 'contributions' );
-               }
-               $revId = $db->selectField( 'revision', 'rev_id',
-                       [
-                               'rev_page' => $this->getArticleID( $flags ),
-                               'rev_id > ' . intval( $revId )
-                       ],
-                       __METHOD__,
-                       [ 'ORDER BY' => 'rev_id', 'IGNORE INDEX' => 'PRIMARY' ]
-               );
-
-               if ( $revId === false ) {
-                       return false;
-               } else {
-                       return intval( $revId );
-               }
+               return $this->getRelativeRevisionID( $revId, $flags, 'next' );
        }
 
        /**
@@ -4069,8 +4094,8 @@ class Title implements LinkTarget {
                                [ 'rev_page' => $pageId ],
                                __METHOD__,
                                [
-                                       'ORDER BY' => 'rev_timestamp ASC',
-                                       'IGNORE INDEX' => 'rev_timestamp'
+                                       'ORDER BY' => 'rev_timestamp ASC, rev_id ASC',
+                                       'IGNORE INDEX' => 'rev_timestamp', // See T159319
                                ]
                        );
                        if ( $row ) {
index 70fdbf1..06f93c6 100644 (file)
@@ -7,6 +7,7 @@ use MediaWiki\MediaWikiServices;
 use Wikimedia\Assert\Assert;
 use Wikimedia\ScopedCallback;
 use Wikimedia\Rdbms\LoadBalancer;
+use Wikimedia\Rdbms\DBUnexpectedError;
 
 /**
  * Storage layer class for WatchedItems.
@@ -29,6 +30,11 @@ class WatchedItemStore implements StatsdAwareInterface {
         */
        private $loadBalancer;
 
+       /**
+        * @var ReadOnlyMode
+        */
+       private $readOnlyMode;
+
        /**
         * @var HashBagOStuff
         */
@@ -60,13 +66,16 @@ class WatchedItemStore implements StatsdAwareInterface {
        /**
         * @param LoadBalancer $loadBalancer
         * @param HashBagOStuff $cache
+        * @param ReadOnlyMode $readOnlyMode
         */
        public function __construct(
                LoadBalancer $loadBalancer,
-               HashBagOStuff $cache
+               HashBagOStuff $cache,
+               ReadOnlyMode $readOnlyMode
        ) {
                $this->loadBalancer = $loadBalancer;
                $this->cache = $cache;
+               $this->readOnlyMode = $readOnlyMode;
                $this->stats = new NullStatsdDataFactory();
                $this->deferredUpdatesAddCallableUpdateCallback = [ 'DeferredUpdates', 'addCallableUpdate' ];
                $this->revisionGetTimestampFromIdCallback = [ 'Revision', 'getTimestampFromId' ];
@@ -458,7 +467,7 @@ class WatchedItemStore implements StatsdAwareInterface {
                $item = new WatchedItem(
                        $user,
                        $target,
-                       $row->wl_notificationtimestamp
+                       wfTimestampOrNull( TS_MW, $row->wl_notificationtimestamp )
                );
                $this->cache( $item );
 
@@ -572,7 +581,8 @@ class WatchedItemStore implements StatsdAwareInterface {
                );
 
                foreach ( $res as $row ) {
-                       $timestamps[$row->wl_namespace][$row->wl_title] = $row->wl_notificationtimestamp;
+                       $timestamps[$row->wl_namespace][$row->wl_title] =
+                               wfTimestampOrNull( TS_MW, $row->wl_notificationtimestamp );
                }
 
                return $timestamps;
@@ -595,7 +605,7 @@ class WatchedItemStore implements StatsdAwareInterface {
         * @return bool success
         */
        public function addWatchBatchForUser( User $user, array $targets ) {
-               if ( $this->loadBalancer->getReadOnlyReason() !== false ) {
+               if ( $this->readOnlyMode->isReadOnly() ) {
                        return false;
                }
                // Only loggedin user can have a watchlist
@@ -653,7 +663,7 @@ class WatchedItemStore implements StatsdAwareInterface {
         */
        public function removeWatch( User $user, LinkTarget $target ) {
                // Only logged in user can have a watchlist
-               if ( $this->loadBalancer->getReadOnlyReason() !== false || $user->isAnon() ) {
+               if ( $this->readOnlyMode->isReadOnly() || $user->isAnon() ) {
                        return false;
                }
 
@@ -784,7 +794,7 @@ class WatchedItemStore implements StatsdAwareInterface {
         */
        public function resetNotificationTimestamp( User $user, Title $title, $force = '', $oldid = 0 ) {
                // Only loggedin user can have a watchlist
-               if ( $this->loadBalancer->getReadOnlyReason() !== false || $user->isAnon() ) {
+               if ( $this->readOnlyMode->isReadOnly() || $user->isAnon() ) {
                        return false;
                }
 
index 15804c7..e281b6f 100644 (file)
@@ -1,12 +1,11 @@
 <?php
 /**
  * This does the initial set up for a web request.
- * It does some security checks, starts the profiler and loads the
- * configuration, and optionally loads Setup.php depending on whether
- * MW_NO_SETUP is defined.
  *
- * Setup.php (if loaded) then sets up GlobalFunctions, the AutoLoader,
- * and the configuration globals.
+ * It does some security checks, loads autoloaders, constants, and
+ * global functions, starts the profiler, loads the configuration,
+ * and loads Setup.php, which loads extensions using the extension
+ * registration system and initializes the application's global state.
  *
  * 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 0f479ac..a03bc19 100644 (file)
@@ -175,106 +175,3 @@ class WikiMap {
                return false;
        }
 }
-
-/**
- * Reference to a locally-hosted wiki
- */
-class WikiReference {
-       private $mCanonicalServer; ///< canonical server URL, e.g. 'https://www.mediawiki.org'
-       private $mServer; ///< server URL, may be protocol-relative, e.g. '//www.mediawiki.org'
-       private $mPath; ///< path, '/wiki/$1'
-
-       /**
-        * @param string $canonicalServer
-        * @param string $path
-        * @param null|string $server
-        */
-       public function __construct( $canonicalServer, $path, $server = null ) {
-               $this->mCanonicalServer = $canonicalServer;
-               $this->mPath = $path;
-               $this->mServer = $server === null ? $canonicalServer : $server;
-       }
-
-       /**
-        * Get the URL in a way to be displayed to the user
-        * More or less Wikimedia specific
-        *
-        * @return string
-        */
-       public function getDisplayName() {
-               $parsed = wfParseUrl( $this->mCanonicalServer );
-               if ( $parsed ) {
-                       return $parsed['host'];
-               } else {
-                       // Invalid server spec.
-                       // There's no sane thing to do here, so just return the canonical server name in full.
-                       return $this->mCanonicalServer;
-               }
-       }
-
-       /**
-        * Helper function for getUrl()
-        *
-        * @todo FIXME: This may be generalized...
-        *
-        * @param string $page Page name (must be normalised before calling this function!
-        *  May contain a section part.)
-        * @param string|null $fragmentId
-        *
-        * @return string relative URL, without the server part.
-        */
-       private function getLocalUrl( $page, $fragmentId = null ) {
-               $page = wfUrlencode( str_replace( ' ', '_', $page ) );
-
-               if ( is_string( $fragmentId ) && $fragmentId !== '' ) {
-                       $page .= '#' . wfUrlencode( $fragmentId );
-               }
-
-               return str_replace( '$1', $page, $this->mPath );
-       }
-
-       /**
-        * Get a canonical (i.e. based on $wgCanonicalServer) URL to a page on this foreign wiki
-        *
-        * @param string $page Page name (must be normalised before calling this function!)
-        * @param string|null $fragmentId
-        *
-        * @return string Url
-        */
-       public function getCanonicalUrl( $page, $fragmentId = null ) {
-               return $this->mCanonicalServer . $this->getLocalUrl( $page, $fragmentId );
-       }
-
-       /**
-        * Get a canonical server URL
-        * @return string
-        */
-       public function getCanonicalServer() {
-               return $this->mCanonicalServer;
-       }
-
-       /**
-        * Alias for getCanonicalUrl(), for backwards compatibility.
-        * @param string $page
-        * @param string|null $fragmentId
-        *
-        * @return string
-        */
-       public function getUrl( $page, $fragmentId = null ) {
-               return $this->getCanonicalUrl( $page, $fragmentId );
-       }
-
-       /**
-        * Get a URL based on $wgServer, like Title::getFullURL() would produce
-        * when called locally on the wiki.
-        *
-        * @param string $page Page name (must be normalized before calling this function!)
-        * @param string|null $fragmentId
-        *
-        * @return string URL
-        */
-       public function getFullUrl( $page, $fragmentId = null ) {
-               return $this->mServer .
-                       $this->getLocalUrl( $page, $fragmentId );
-       }
-}
diff --git a/includes/WikiReference.php b/includes/WikiReference.php
new file mode 100644 (file)
index 0000000..724ba98
--- /dev/null
@@ -0,0 +1,124 @@
+<?php
+/**
+ * Tools for dealing with other locally-hosted wikis.
+ *
+ * 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
+ */
+
+/**
+ * Reference to a locally-hosted wiki
+ */
+class WikiReference {
+       private $mCanonicalServer; ///< canonical server URL, e.g. 'https://www.mediawiki.org'
+       private $mServer; ///< server URL, may be protocol-relative, e.g. '//www.mediawiki.org'
+       private $mPath; ///< path, '/wiki/$1'
+
+       /**
+        * @param string $canonicalServer
+        * @param string $path
+        * @param null|string $server
+        */
+       public function __construct( $canonicalServer, $path, $server = null ) {
+               $this->mCanonicalServer = $canonicalServer;
+               $this->mPath = $path;
+               $this->mServer = $server === null ? $canonicalServer : $server;
+       }
+
+       /**
+        * Get the URL in a way to be displayed to the user
+        * More or less Wikimedia specific
+        *
+        * @return string
+        */
+       public function getDisplayName() {
+               $parsed = wfParseUrl( $this->mCanonicalServer );
+               if ( $parsed ) {
+                       return $parsed['host'];
+               } else {
+                       // Invalid server spec.
+                       // There's no sane thing to do here, so just return the canonical server name in full.
+                       return $this->mCanonicalServer;
+               }
+       }
+
+       /**
+        * Helper function for getUrl()
+        *
+        * @todo FIXME: This may be generalized...
+        *
+        * @param string $page Page name (must be normalised before calling this function!
+        *  May contain a section part.)
+        * @param string|null $fragmentId
+        *
+        * @return string relative URL, without the server part.
+        */
+       private function getLocalUrl( $page, $fragmentId = null ) {
+               $page = wfUrlencode( str_replace( ' ', '_', $page ) );
+
+               if ( is_string( $fragmentId ) && $fragmentId !== '' ) {
+                       $page .= '#' . wfUrlencode( $fragmentId );
+               }
+
+               return str_replace( '$1', $page, $this->mPath );
+       }
+
+       /**
+        * Get a canonical (i.e. based on $wgCanonicalServer) URL to a page on this foreign wiki
+        *
+        * @param string $page Page name (must be normalised before calling this function!)
+        * @param string|null $fragmentId
+        *
+        * @return string Url
+        */
+       public function getCanonicalUrl( $page, $fragmentId = null ) {
+               return $this->mCanonicalServer . $this->getLocalUrl( $page, $fragmentId );
+       }
+
+       /**
+        * Get a canonical server URL
+        * @return string
+        */
+       public function getCanonicalServer() {
+               return $this->mCanonicalServer;
+       }
+
+       /**
+        * Alias for getCanonicalUrl(), for backwards compatibility.
+        * @param string $page
+        * @param string|null $fragmentId
+        *
+        * @return string
+        */
+       public function getUrl( $page, $fragmentId = null ) {
+               return $this->getCanonicalUrl( $page, $fragmentId );
+       }
+
+       /**
+        * Get a URL based on $wgServer, like Title::getFullURL() would produce
+        * when called locally on the wiki.
+        *
+        * @param string $page Page name (must be normalized before calling this function!)
+        * @param string|null $fragmentId
+        *
+        * @return string URL
+        */
+       public function getFullUrl( $page, $fragmentId = null ) {
+               return $this->mServer .
+                       $this->getLocalUrl( $page, $fragmentId );
+       }
+}
index 4e87967..8289b81 100644 (file)
@@ -827,27 +827,3 @@ class Xml {
        }
 }
 
-/**
- * A wrapper class which causes Xml::encodeJsVar() and Xml::encodeJsCall() to
- * interpret a given string as being a JavaScript expression, instead of string
- * data.
- *
- * Example:
- *
- *    Xml::encodeJsVar( new XmlJsCode( 'a + b' ) );
- *
- * Returns "a + b".
- *
- * @note As of 1.21, XmlJsCode objects cannot be nested inside objects or arrays. The sole
- *       exception is the $args argument to Xml::encodeJsCall() because Xml::encodeJsVar() is
- *       called for each individual element in that array.
- *
- * @since 1.17
- */
-class XmlJsCode {
-       public $value;
-
-       function __construct( $value ) {
-               $this->value = $value;
-       }
-}
diff --git a/includes/XmlJsCode.php b/includes/XmlJsCode.php
new file mode 100644 (file)
index 0000000..d1cd037
--- /dev/null
@@ -0,0 +1,44 @@
+<?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
+ */
+
+/**
+ * A wrapper class which causes Xml::encodeJsVar() and Xml::encodeJsCall() to
+ * interpret a given string as being a JavaScript expression, instead of string
+ * data.
+ *
+ * Example:
+ *
+ *    Xml::encodeJsVar( new XmlJsCode( 'a + b' ) );
+ *
+ * Returns "a + b".
+ *
+ * @note As of 1.21, XmlJsCode objects cannot be nested inside objects or arrays. The sole
+ *       exception is the $args argument to Xml::encodeJsCall() because Xml::encodeJsVar() is
+ *       called for each individual element in that array.
+ *
+ * @since 1.17
+ */
+class XmlJsCode {
+       public $value;
+
+       function __construct( $value ) {
+               $this->value = $value;
+       }
+}
index f06f828..844a0d6 100644 (file)
@@ -34,7 +34,7 @@
  * format (protect, delete, move, etc), and the just-do-something format (watch, rollback,
  * patrol, etc). The FormAction and FormlessAction classes represent these two groups.
  */
-abstract class Action {
+abstract class Action implements MessageLocalizer {
 
        /**
         * Page on which we're performing the action
@@ -253,7 +253,7 @@ abstract class Action {
         *
         * @return Message
         */
-       final public function msg() {
+       final public function msg( $key ) {
                $params = func_get_args();
                return call_user_func_array( [ $this->getContext(), 'msg' ], $params );
        }
index d1be7d4..7460340 100644 (file)
@@ -780,9 +780,11 @@ class HistoryPager extends ReverseChronologicalPager {
                        $s .= ' <span class="mw-changeslist-separator">. .</span> ' . $s2;
                }
 
-               Hooks::run( 'PageHistoryLineEnding', [ $this, &$row, &$s, &$classes ] );
+               $attribs = [ 'data-mw-revid' => $rev->getId() ];
+
+               Hooks::run( 'PageHistoryLineEnding', [ $this, &$row, &$s, &$classes, &$attribs ] );
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
 
-               $attribs = [];
                if ( $classes ) {
                        $attribs['class'] = implode( ' ', $classes );
                }
index df7afca..886bf37 100644 (file)
@@ -73,8 +73,9 @@ class InfoAction extends FormlessAction {
                        $revid = $revision ? $revision->getId() : null;
                }
                if ( $revid !== null ) {
-                       $key = self::getCacheKey( $title, $revid );
-                       ObjectCache::getMainWANInstance()->delete( $key );
+                       $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+                       $key = self::getCacheKey( $cache, $title, $revid );
+                       $cache->delete( $key );
                }
        }
 
@@ -389,7 +390,10 @@ class InfoAction extends FormlessAction {
                        $prefixIndex = SpecialPage::getTitleFor(
                                'Prefixindex', $title->getPrefixedText() . '/' );
                        $pageInfo['header-basic'][] = [
-                               Linker::link( $prefixIndex, $this->msg( 'pageinfo-subpages-name' )->escaped() ),
+                               $linkRenderer->makeLink(
+                                       $prefixIndex,
+                                       $this->msg( 'pageinfo-subpages-name' )->text()
+                               ),
                                $this->msg( 'pageinfo-subpages-value' )
                                        ->numParams(
                                                $pageCounts['subpages']['total'],
@@ -690,9 +694,10 @@ class InfoAction extends FormlessAction {
        protected function pageCounts( Page $page ) {
                $fname = __METHOD__;
                $config = $this->context->getConfig();
+               $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
 
-               return ObjectCache::getMainWANInstance()->getWithSetCallback(
-                       self::getCacheKey( $page->getTitle(), $page->getLatest() ),
+               return $cache->getWithSetCallback(
+                       self::getCacheKey( $cache, $page->getTitle(), $page->getLatest() ),
                        WANObjectCache::TTL_WEEK,
                        function ( $oldValue, &$ttl, &$setOpts ) use ( $page, $config, $fname ) {
                                $title = $page->getTitle();
@@ -903,11 +908,12 @@ class InfoAction extends FormlessAction {
        }
 
        /**
+        * @param WANObjectCache $cache
         * @param Title $title
         * @param int $revId
         * @return string
         */
-       protected static function getCacheKey( Title $title, $revId ) {
-               return wfMemcKey( 'infoaction', md5( $title->getPrefixedText() ), $revId, self::VERSION );
+       protected static function getCacheKey( WANObjectCache $cache, Title $title, $revId ) {
+               return $cache->makeKey( 'infoaction', md5( $title->getPrefixedText() ), $revId, self::VERSION );
        }
 }
index a6c4b2a..aa970f4 100644 (file)
@@ -188,13 +188,22 @@ abstract class ApiBase extends ContextSource {
         */
        const PARAM_EXTRA_NAMESPACES = 18;
 
-       /*
+       /**
         * (boolean) Is the parameter sensitive? Note 'password'-type fields are
         * always sensitive regardless of the value of this field.
         * @since 1.29
         */
        const PARAM_SENSITIVE = 19;
 
+       /**
+        * (array) When PARAM_TYPE is an array, this indicates which of the values are deprecated.
+        * Keys are the deprecated parameter values, values define the warning
+        * message to emit: either boolean true (to use a default message) or a
+        * $msg for ApiBase::makeMessage().
+        * @since 1.30
+        */
+       const PARAM_DEPRECATED_VALUES = 20;
+
        /**@}*/
 
        const ALL_DEFAULT_STRING = '*';
@@ -1025,6 +1034,9 @@ abstract class ApiBase extends ContextSource {
                $deprecated = isset( $paramSettings[self::PARAM_DEPRECATED] )
                        ? $paramSettings[self::PARAM_DEPRECATED]
                        : false;
+               $deprecatedValues = isset( $paramSettings[self::PARAM_DEPRECATED_VALUES] )
+                       ? $paramSettings[self::PARAM_DEPRECATED_VALUES]
+                       : [];
                $required = isset( $paramSettings[self::PARAM_REQUIRED] )
                        ? $paramSettings[self::PARAM_REQUIRED]
                        : false;
@@ -1266,6 +1278,29 @@ abstract class ApiBase extends ContextSource {
                                }
                                $this->addDeprecation( [ 'apiwarn-deprecation-parameter', $encParamName ], $feature );
                        }
+
+                       // Set a warning if a deprecated parameter value has been passed
+                       $usedDeprecatedValues = $deprecatedValues && $value !== false
+                               ? array_intersect( array_keys( $deprecatedValues ), (array)$value )
+                               : [];
+                       if ( $usedDeprecatedValues ) {
+                               $feature = "$encParamName=";
+                               $m = $this;
+                               while ( !$m->isMain() ) {
+                                       $p = $m->getParent();
+                                       $name = $m->getModuleName();
+                                       $param = $p->encodeParamName( $p->getModuleManager()->getModuleGroup( $name ) );
+                                       $feature = "{$param}={$name}&{$feature}";
+                                       $m = $p;
+                               }
+                               foreach ( $usedDeprecatedValues as $v ) {
+                                       $msg = $deprecatedValues[$v];
+                                       if ( $msg === true ) {
+                                               $msg = [ 'apiwarn-deprecation-parameter', "$encParamName=$v" ];
+                                       }
+                                       $this->addDeprecation( $msg, "$feature$v" );
+                               }
+                       }
                } elseif ( $required ) {
                        $this->dieWithError( [ 'apierror-missingparam', $paramName ] );
                }
@@ -1863,6 +1898,23 @@ abstract class ApiBase extends ContextSource {
                        throw new MWException( 'Successful status passed to ApiBase::dieStatus' );
                }
 
+               // ApiUsageException needs a fatal status, but this method has
+               // historically accepted any non-good status. Convert it if necessary.
+               $status->setOK( false );
+               if ( !$status->getErrorsByType( 'error' ) ) {
+                       $newStatus = Status::newGood();
+                       foreach ( $status->getErrorsByType( 'warning' ) as $err ) {
+                               call_user_func_array(
+                                       [ $newStatus, 'fatal' ],
+                                       array_merge( [ $err['message'] ], $err['params'] )
+                               );
+                       }
+                       if ( !$newStatus->getErrorsByType( 'error' ) ) {
+                               $newStatus->fatal( 'unknownerror-nocode' );
+                       }
+                       $status = $newStatus;
+               }
+
                throw new ApiUsageException( $this, $status );
        }
 
@@ -1987,12 +2039,62 @@ abstract class ApiBase extends ContextSource {
         */
 
        /**
-        * Return the description message.
+        * Return the summary message.
         *
+        * This is a one-line description of the module, suitable for display in a
+        * list of modules.
+        *
+        * @since 1.30
         * @return string|array|Message
         */
-       protected function getDescriptionMessage() {
-               return "apihelp-{$this->getModulePath()}-description";
+       protected function getSummaryMessage() {
+               return "apihelp-{$this->getModulePath()}-summary";
+       }
+
+       /**
+        * Return the extended help text message.
+        *
+        * This is additional text to display at the top of the help section, below
+        * the summary.
+        *
+        * @since 1.30
+        * @return string|array|Message
+        */
+       protected function getExtendedDescription() {
+               return [ [
+                       "apihelp-{$this->getModulePath()}-extended-description",
+                       'api-help-no-extended-description',
+               ] ];
+       }
+
+       /**
+        * Get final module summary
+        *
+        * Ideally this will just be the getSummaryMessage(). However, for
+        * backwards compatibility, if that message does not exist then the first
+        * line of wikitext from the description message will be used instead.
+        *
+        * @since 1.30
+        * @return Message
+        */
+       public function getFinalSummary() {
+               $msg = ApiBase::makeMessage( $this->getSummaryMessage(), $this->getContext(), [
+                       $this->getModulePrefix(),
+                       $this->getModuleName(),
+                       $this->getModulePath(),
+               ] );
+               if ( !$msg->exists() ) {
+                       wfDeprecated( 'API help "description" messages', '1.30' );
+                       $msg = ApiBase::makeMessage( $this->getDescriptionMessage(), $this->getContext(), [
+                               $this->getModulePrefix(),
+                               $this->getModuleName(),
+                               $this->getModulePath(),
+                       ] );
+                       $msg = ApiBase::makeMessage( 'rawmessage', $this->getContext(), [
+                               preg_replace( '/\n.*/s', '', $msg->text() )
+                       ] );
+               }
+               return $msg;
        }
 
        /**
@@ -2015,15 +2117,33 @@ abstract class ApiBase extends ContextSource {
                        $desc = (string)$desc;
                }
 
-               $msg = ApiBase::makeMessage( $this->getDescriptionMessage(), $this->getContext(), [
+               $summary = ApiBase::makeMessage( $this->getSummaryMessage(), $this->getContext(), [
                        $this->getModulePrefix(),
                        $this->getModuleName(),
                        $this->getModulePath(),
                ] );
-               if ( !$msg->exists() ) {
-                       $msg = $this->msg( 'api-help-fallback-description', $desc );
+               $extendedDescription = ApiBase::makeMessage(
+                       $this->getExtendedDescription(), $this->getContext(), [
+                               $this->getModulePrefix(),
+                               $this->getModuleName(),
+                               $this->getModulePath(),
+                       ]
+               );
+
+               if ( $summary->exists() ) {
+                       $msgs = [ $summary, $extendedDescription ];
+               } else {
+                       wfDeprecated( 'API help "description" messages', '1.30' );
+                       $description = ApiBase::makeMessage( $this->getDescriptionMessage(), $this->getContext(), [
+                               $this->getModulePrefix(),
+                               $this->getModuleName(),
+                               $this->getModulePath(),
+                       ] );
+                       if ( !$description->exists() ) {
+                               $description = $this->msg( 'api-help-fallback-description', $desc );
+                       }
+                       $msgs = [ $description ];
                }
-               $msgs = [ $msg ];
 
                Hooks::run( 'APIGetDescriptionMessages', [ $this, &$msgs ] );
 
@@ -2133,6 +2253,10 @@ abstract class ApiBase extends ContextSource {
                                }
 
                                $valueMsgs = $settings[ApiBase::PARAM_HELP_MSG_PER_VALUE];
+                               $deprecatedValues = isset( $settings[ApiBase::PARAM_DEPRECATED_VALUES] )
+                                       ? $settings[ApiBase::PARAM_DEPRECATED_VALUES]
+                                       : [];
+
                                foreach ( $settings[ApiBase::PARAM_TYPE] as $value ) {
                                        if ( isset( $valueMsgs[$value] ) ) {
                                                $msg = $valueMsgs[$value];
@@ -2145,7 +2269,8 @@ abstract class ApiBase extends ContextSource {
                                                $m = new ApiHelpParamValueMessage(
                                                        $value,
                                                        [ $m->getKey(), 'api-help-param-no-description' ],
-                                                       $m->getParams()
+                                                       $m->getParams(),
+                                                       isset( $deprecatedValues[$value] )
                                                );
                                                $msgs[$param][] = $m->setContext( $this->getContext() );
                                        } else {
@@ -2738,6 +2863,21 @@ abstract class ApiBase extends ContextSource {
                $this->dieWithErrorOrDebug( $this->parseMsgInternal( $error ) );
        }
 
+       /**
+        * Return the description message.
+        *
+        * This is additional text to display on the help page after the summary.
+        *
+        * @deprecated since 1.30
+        * @return string|array|Message
+        */
+       protected function getDescriptionMessage() {
+               return [ [
+                       "apihelp-{$this->getModulePath()}-description",
+                       "apihelp-{$this->getModulePath()}-summary",
+               ] ];
+       }
+
        /**@}*/
 }
 
index 4139019..3a78c13 100644 (file)
@@ -186,9 +186,9 @@ class ApiCSPReport extends ApiBase {
                        'method' => $method,
                        'user-agent' => $this->getRequest()->getHeader( 'user-agent' )
                ] );
-               // 500 so it shows up in browser's developer console.
+               // Return 400 on error for user agents to display, e.g. to the console.
                $this->dieWithError(
-                       [ 'apierror-csp-report', wfEscapeWikiText( $code ) ], 'cspreport-' . $code, [], 500
+                       [ 'apierror-csp-report', wfEscapeWikiText( $code ) ], 'cspreport-' . $code, [], 400
                );
        }
 
index d6867eb..953bc10 100644 (file)
@@ -1,9 +1,5 @@
 <?php
 /**
- *
- * Created on May 1, 2011
- *
- * Copyright © 2011 Sam Reed
  *
  * 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
 
 class ApiComparePages extends ApiBase {
 
+       private $guessed = false, $guessedTitle, $guessedModel, $props;
+
        public function execute() {
                $params = $this->extractRequestParams();
 
-               $rev1 = $this->revisionOrTitleOrId( $params['fromrev'], $params['fromtitle'], $params['fromid'] );
-               $rev2 = $this->revisionOrTitleOrId( $params['torev'], $params['totitle'], $params['toid'] );
+               // Parameter validation
+               $this->requireAtLeastOneParameter( $params, 'fromtitle', 'fromid', 'fromrev', 'fromtext' );
+               $this->requireAtLeastOneParameter( $params, 'totitle', 'toid', 'torev', 'totext', 'torelative' );
+
+               $this->props = array_flip( $params['prop'] );
+
+               // Cache responses publicly by default. This may be overridden later.
+               $this->getMain()->setCacheMode( 'public' );
+
+               // Get the 'from' Revision and Content
+               list( $fromRev, $fromContent, $relRev ) = $this->getDiffContent( 'from', $params );
 
-               $revision = Revision::newFromId( $rev1 );
+               // Get the 'to' Revision and Content
+               if ( $params['torelative'] !== null ) {
+                       if ( !$relRev ) {
+                               $this->dieWithError( 'apierror-compare-relative-to-nothing' );
+                       }
+                       switch ( $params['torelative'] ) {
+                               case 'prev':
+                                       // Swap 'from' and 'to'
+                                       $toRev = $fromRev;
+                                       $toContent = $fromContent;
+                                       $fromRev = $relRev->getPrevious();
+                                       $fromContent = $fromRev
+                                               ? $fromRev->getContent( Revision::FOR_THIS_USER, $this->getUser() )
+                                               : $toContent->getContentHandler()->makeEmptyContent();
+                                       if ( !$fromContent ) {
+                                               $this->dieWithError(
+                                                       [ 'apierror-missingcontent-revid', $fromRev->getId() ], 'missingcontent'
+                                               );
+                                       }
+                                       break;
+
+                               case 'next':
+                                       $toRev = $relRev->getNext();
+                                       $toContent = $toRev
+                                               ? $toRev->getContent( Revision::FOR_THIS_USER, $this->getUser() )
+                                               : $fromContent;
+                                       if ( !$toContent ) {
+                                               $this->dieWithError( [ 'apierror-missingcontent-revid', $toRev->getId() ], 'missingcontent' );
+                                       }
+                                       break;
+
+                               case 'cur':
+                                       $title = $relRev->getTitle();
+                                       $id = $title->getLatestRevID();
+                                       $toRev = $id ? Revision::newFromId( $id ) : null;
+                                       if ( !$toRev ) {
+                                               $this->dieWithError(
+                                                       [ 'apierror-missingrev-title', wfEscapeWikiText( $title->getPrefixedText() ) ], 'nosuchrevid'
+                                               );
+                                       }
+                                       $toContent = $toRev->getContent( Revision::FOR_THIS_USER, $this->getUser() );
+                                       if ( !$toContent ) {
+                                               $this->dieWithError( [ 'apierror-missingcontent-revid', $toRev->getId() ], 'missingcontent' );
+                                       }
+                                       break;
+                       }
+                       $relRev2 = null;
+               } else {
+                       list( $toRev, $toContent, $relRev2 ) = $this->getDiffContent( 'to', $params );
+               }
 
-               if ( !$revision ) {
+               // Should never happen, but just in case...
+               if ( !$fromContent || !$toContent ) {
                        $this->dieWithError( 'apierror-baddiff' );
                }
 
-               $contentHandler = $revision->getContentHandler();
-               $de = $contentHandler->createDifferenceEngine( $this->getContext(),
-                       $rev1,
-                       $rev2,
-                       null, // rcid
-                       true,
-                       false );
+               // Get the diff
+               $context = new DerivativeContext( $this->getContext() );
+               if ( $relRev && $relRev->getTitle() ) {
+                       $context->setTitle( $relRev->getTitle() );
+               } elseif ( $relRev2 && $relRev2->getTitle() ) {
+                       $context->setTitle( $relRev2->getTitle() );
+               } else {
+                       $this->guessTitleAndModel();
+                       if ( $this->guessedTitle ) {
+                               $context->setTitle( $this->guessedTitle );
+                       }
+               }
+               $de = $fromContent->getContentHandler()->createDifferenceEngine(
+                       $context,
+                       $fromRev ? $fromRev->getId() : 0,
+                       $toRev ? $toRev->getId() : 0,
+                       /* $rcid = */ null,
+                       /* $refreshCache = */ false,
+                       /* $unhide = */ true
+               );
+               $de->setContent( $fromContent, $toContent );
+               $difftext = $de->getDiffBody();
+               if ( $difftext === false ) {
+                       $this->dieWithError( 'apierror-baddiff' );
+               }
 
+               // Fill in the response
                $vals = [];
-               if ( isset( $params['fromtitle'] ) ) {
-                       $vals['fromtitle'] = $params['fromtitle'];
-               }
-               if ( isset( $params['fromid'] ) ) {
-                       $vals['fromid'] = $params['fromid'];
+               $this->setVals( $vals, 'from', $fromRev );
+               $this->setVals( $vals, 'to', $toRev );
+
+               if ( isset( $this->props['rel'] ) ) {
+                       if ( $fromRev ) {
+                               $rev = $fromRev->getPrevious();
+                               if ( $rev ) {
+                                       $vals['prev'] = $rev->getId();
+                               }
+                       }
+                       if ( $toRev ) {
+                               $rev = $toRev->getNext();
+                               if ( $rev ) {
+                                       $vals['next'] = $rev->getId();
+                               }
+                       }
                }
-               $vals['fromrevid'] = $rev1;
-               if ( isset( $params['totitle'] ) ) {
-                       $vals['totitle'] = $params['totitle'];
+
+               if ( isset( $this->props['diffsize'] ) ) {
+                       $vals['diffsize'] = strlen( $difftext );
                }
-               if ( isset( $params['toid'] ) ) {
-                       $vals['toid'] = $params['toid'];
+               if ( isset( $this->props['diff'] ) ) {
+                       ApiResult::setContentValue( $vals, 'body', $difftext );
                }
-               $vals['torevid'] = $rev2;
 
-               $difftext = $de->getDiffBody();
+               $this->getResult()->addValue( null, $this->getModuleName(), $vals );
+       }
 
-               if ( $difftext === false ) {
-                       $this->dieWithError( 'apierror-baddiff' );
+       /**
+        * Guess an appropriate default Title and content model for this request
+        *
+        * Fills in $this->guessedTitle based on the first of 'fromrev',
+        * 'fromtitle', 'fromid', 'torev', 'totitle', and 'toid' that's present and
+        * valid.
+        *
+        * Fills in $this->guessedModel based on the Revision or Title used to
+        * determine $this->guessedTitle, or the 'fromcontentmodel' or
+        * 'tocontentmodel' parameters if no title was guessed.
+        */
+       private function guessTitleAndModel() {
+               if ( $this->guessed ) {
+                       return;
                }
 
-               ApiResult::setContentValue( $vals, 'body', $difftext );
+               $this->guessed = true;
+               $params = $this->extractRequestParams();
 
-               $this->getResult()->addValue( null, $this->getModuleName(), $vals );
+               foreach ( [ 'from', 'to' ] as $prefix ) {
+                       if ( $params["{$prefix}rev"] !== null ) {
+                               $revId = $params["{$prefix}rev"];
+                               $rev = Revision::newFromId( $revId );
+                               if ( !$rev ) {
+                                       // Titles of deleted revisions aren't secret, per T51088
+                                       $row = $this->getDB()->selectRow(
+                                               'archive',
+                                               array_merge(
+                                                       Revision::selectArchiveFields(),
+                                                       [ 'ar_namespace', 'ar_title' ]
+                                               ),
+                                               [ 'ar_rev_id' => $revId ],
+                                               __METHOD__
+                                       );
+                                       if ( $row ) {
+                                               $rev = Revision::newFromArchiveRow( $row );
+                                       }
+                               }
+                               if ( $rev ) {
+                                       $this->guessedTitle = $rev->getTitle();
+                                       $this->guessedModel = $rev->getContentModel();
+                                       break;
+                               }
+                       }
+
+                       if ( $params["{$prefix}title"] !== null ) {
+                               $title = Title::newFromText( $params["{$prefix}title"] );
+                               if ( $title && !$title->isExternal() ) {
+                                       $this->guessedTitle = $title;
+                                       break;
+                               }
+                       }
+
+                       if ( $params["{$prefix}id"] !== null ) {
+                               $title = Title::newFromID( $params["{$prefix}id"] );
+                               if ( $title ) {
+                                       $this->guessedTitle = $title;
+                                       break;
+                               }
+                       }
+               }
+
+               if ( !$this->guessedModel ) {
+                       if ( $this->guessedTitle ) {
+                               $this->guessedModel = $this->guessedTitle->getContentModel();
+                       } elseif ( $params['fromcontentmodel'] !== null ) {
+                               $this->guessedModel = $params['fromcontentmodel'];
+                       } elseif ( $params['tocontentmodel'] !== null ) {
+                               $this->guessedModel = $params['tocontentmodel'];
+                       }
+               }
        }
 
        /**
-        * @param int $revision
-        * @param string $titleText
-        * @param int $titleId
-        * @return int
+        * Get the Revision and Content for one side of the diff
+        *
+        * This uses the appropriate set of 'rev', 'id', 'title', 'text', 'pst',
+        * 'contentmodel', and 'contentformat' parameters to determine what content
+        * should be diffed.
+        *
+        * Returns three values:
+        * - The revision used to retrieve the content, if any
+        * - The content to be diffed
+        * - The revision specified, if any, even if not used to retrieve the
+        *   Content
+        *
+        * @param string $prefix 'from' or 'to'
+        * @param array $params
+        * @return array [ Revision|null, Content, Revision|null ]
         */
-       private function revisionOrTitleOrId( $revision, $titleText, $titleId ) {
-               if ( $revision ) {
-                       return $revision;
-               } elseif ( $titleText ) {
-                       $title = Title::newFromText( $titleText );
-                       if ( !$title || $title->isExternal() ) {
-                               $this->dieWithError( [ 'apierror-invalidtitle', wfEscapeWikiText( $titleText ) ] );
-                       }
-
-                       return $title->getLatestRevID();
-               } elseif ( $titleId ) {
-                       $title = Title::newFromID( $titleId );
+       private function getDiffContent( $prefix, array $params ) {
+               $title = null;
+               $rev = null;
+               $suppliedContent = $params["{$prefix}text"] !== null;
+
+               // Get the revision and title, if applicable
+               $revId = null;
+               if ( $params["{$prefix}rev"] !== null ) {
+                       $revId = $params["{$prefix}rev"];
+               } elseif ( $params["{$prefix}title"] !== null || $params["{$prefix}id"] !== null ) {
+                       if ( $params["{$prefix}title"] !== null ) {
+                               $title = Title::newFromText( $params["{$prefix}title"] );
+                               if ( !$title || $title->isExternal() ) {
+                                       $this->dieWithError(
+                                               [ 'apierror-invalidtitle', wfEscapeWikiText( $params["{$prefix}title"] ) ]
+                                       );
+                               }
+                       } else {
+                               $title = Title::newFromID( $params["{$prefix}id"] );
+                               if ( !$title ) {
+                                       $this->dieWithError( [ 'apierror-nosuchpageid', $params["{$prefix}id"] ] );
+                               }
+                       }
+                       $revId = $title->getLatestRevID();
+                       if ( !$revId ) {
+                               $revId = null;
+                               // Only die here if we're not using supplied text
+                               if ( !$suppliedContent ) {
+                                       if ( $title->exists() ) {
+                                               $this->dieWithError(
+                                                       [ 'apierror-missingrev-title', wfEscapeWikiText( $title->getPrefixedText() ) ], 'nosuchrevid'
+                                               );
+                                       } else {
+                                               $this->dieWithError(
+                                                       [ 'apierror-missingtitle-byname', wfEscapeWikiText( $title->getPrefixedText() ) ],
+                                                       'missingtitle'
+                                               );
+                                       }
+                               }
+                       }
+               }
+               if ( $revId !== null ) {
+                       $rev = Revision::newFromId( $revId );
+                       if ( !$rev && $this->getUser()->isAllowedAny( 'deletedtext', 'undelete' ) ) {
+                               // Try the 'archive' table
+                               $row = $this->getDB()->selectRow(
+                                       'archive',
+                                       array_merge(
+                                               Revision::selectArchiveFields(),
+                                               [ 'ar_namespace', 'ar_title' ]
+                                       ),
+                                       [ 'ar_rev_id' => $revId ],
+                                       __METHOD__
+                               );
+                               if ( $row ) {
+                                       $rev = Revision::newFromArchiveRow( $row );
+                                       $rev->isArchive = true;
+                               }
+                       }
+                       if ( !$rev ) {
+                               $this->dieWithError( [ 'apierror-nosuchrevid', $revId ] );
+                       }
+                       $title = $rev->getTitle();
+
+                       // If we don't have supplied content, return here. Otherwise,
+                       // continue on below with the supplied content.
+                       if ( !$suppliedContent ) {
+                               $content = $rev->getContent( Revision::FOR_THIS_USER, $this->getUser() );
+                               if ( !$content ) {
+                                       $this->dieWithError( [ 'apierror-missingcontent-revid', $revId ], 'missingcontent' );
+                               }
+                               return [ $rev, $content, $rev ];
+                       }
+               }
+
+               // Override $content based on supplied text
+               $model = $params["{$prefix}contentmodel"];
+               $format = $params["{$prefix}contentformat"];
+
+               if ( !$model && $rev ) {
+                       $model = $rev->getContentModel();
+               }
+               if ( !$model && $title ) {
+                       $model = $title->getContentModel();
+               }
+               if ( !$model ) {
+                       $this->guessTitleAndModel();
+                       $model = $this->guessedModel;
+               }
+               if ( !$model ) {
+                       $model = CONTENT_MODEL_WIKITEXT;
+                       $this->addWarning( [ 'apiwarn-compare-nocontentmodel', $model ] );
+               }
+
+               if ( !$title ) {
+                       $this->guessTitleAndModel();
+                       $title = $this->guessedTitle;
+               }
+
+               try {
+                       $content = ContentHandler::makeContent( $params["{$prefix}text"], $title, $model, $format );
+               } catch ( MWContentSerializationException $ex ) {
+                       $this->dieWithException( $ex, [
+                               'wrap' => ApiMessage::create( 'apierror-contentserializationexception', 'parseerror' )
+                       ] );
+               }
+
+               if ( $params["{$prefix}pst"] ) {
                        if ( !$title ) {
-                               $this->dieWithError( [ 'apierror-nosuchpageid', $titleId ] );
+                               $this->dieWithError( 'apierror-compare-no-title' );
+                       }
+                       $popts = ParserOptions::newFromContext( $this->getContext() );
+                       $content = $content->preSaveTransform( $title, $this->getUser(), $popts );
+               }
+
+               return [ null, $content, $rev ];
+       }
+
+       /**
+        * Set value fields from a Revision object
+        * @param array &$vals Result array to set data into
+        * @param string $prefix 'from' or 'to'
+        * @param Revision|null $rev
+        */
+       private function setVals( &$vals, $prefix, $rev ) {
+               if ( $rev ) {
+                       $title = $rev->getTitle();
+                       if ( isset( $this->props['ids'] ) ) {
+                               $vals["{$prefix}id"] = $title->getArticleId();
+                               $vals["{$prefix}revid"] = $rev->getId();
+                       }
+                       if ( isset( $this->props['title'] ) ) {
+                               ApiQueryBase::addTitleInfo( $vals, $title, $prefix );
+                       }
+                       if ( isset( $this->props['size'] ) ) {
+                               $vals["{$prefix}size"] = $rev->getSize();
                        }
 
-                       return $title->getLatestRevID();
+                       $anyHidden = false;
+                       if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
+                               $vals["{$prefix}texthidden"] = true;
+                               $anyHidden = true;
+                       }
+
+                       if ( $rev->isDeleted( Revision::DELETED_USER ) ) {
+                               $vals["{$prefix}userhidden"] = true;
+                               $anyHidden = true;
+                       }
+                       if ( isset( $this->props['user'] ) &&
+                               $rev->userCan( Revision::DELETED_USER, $this->getUser() )
+                       ) {
+                               $vals["{$prefix}user"] = $rev->getUserText( Revision::RAW );
+                               $vals["{$prefix}userid"] = $rev->getUser( Revision::RAW );
+                       }
+
+                       if ( $rev->isDeleted( Revision::DELETED_COMMENT ) ) {
+                               $vals["{$prefix}commenthidden"] = true;
+                               $anyHidden = true;
+                       }
+                       if ( $rev->userCan( Revision::DELETED_COMMENT, $this->getUser() ) ) {
+                               if ( isset( $this->props['comment'] ) ) {
+                                       $vals["{$prefix}comment"] = $rev->getComment( Revision::RAW );
+                               }
+                               if ( isset( $this->props['parsedcomment'] ) ) {
+                                       $vals["{$prefix}parsedcomment"] = Linker::formatComment(
+                                               $rev->getComment( Revision::RAW ),
+                                               $rev->getTitle()
+                                       );
+                               }
+                       }
+
+                       if ( $anyHidden ) {
+                               $this->getMain()->setCacheMode( 'private' );
+                               if ( $rev->isDeleted( Revision::DELETED_RESTRICTED ) ) {
+                                       $vals["{$prefix}suppressed"] = true;
+                               }
+                       }
+
+                       if ( !empty( $rev->isArchive ) ) {
+                               $this->getMain()->setCacheMode( 'private' );
+                               $vals["{$prefix}archive"] = true;
+                       }
                }
-               $this->dieWithError( 'apierror-compare-inputneeded', 'inputneeded' );
        }
 
        public function getAllowedParams() {
-               return [
-                       'fromtitle' => null,
-                       'fromid' => [
+               // Parameters for the 'from' and 'to' content
+               $fromToParams = [
+                       'title' => null,
+                       'id' => [
                                ApiBase::PARAM_TYPE => 'integer'
                        ],
-                       'fromrev' => [
+                       'rev' => [
                                ApiBase::PARAM_TYPE => 'integer'
                        ],
-                       'totitle' => null,
-                       'toid' => [
-                               ApiBase::PARAM_TYPE => 'integer'
+                       'text' => [
+                               ApiBase::PARAM_TYPE => 'text'
                        ],
-                       'torev' => [
-                               ApiBase::PARAM_TYPE => 'integer'
+                       'pst' => false,
+                       'contentformat' => [
+                               ApiBase::PARAM_TYPE => ContentHandler::getAllContentFormats(),
                        ],
+                       'contentmodel' => [
+                               ApiBase::PARAM_TYPE => ContentHandler::getContentModels(),
+                       ]
                ];
+
+               $ret = [];
+               foreach ( $fromToParams as $k => $v ) {
+                       $ret["from$k"] = $v;
+               }
+               foreach ( $fromToParams as $k => $v ) {
+                       $ret["to$k"] = $v;
+               }
+
+               $ret = wfArrayInsertAfter(
+                       $ret,
+                       [ 'torelative' => [ ApiBase::PARAM_TYPE => [ 'prev', 'next', 'cur' ], ] ],
+                       'torev'
+               );
+
+               $ret['prop'] = [
+                       ApiBase::PARAM_DFLT => 'diff|ids|title',
+                       ApiBase::PARAM_TYPE => [
+                               'diff',
+                               'diffsize',
+                               'rel',
+                               'ids',
+                               'title',
+                               'user',
+                               'comment',
+                               'parsedcomment',
+                               'size',
+                       ],
+                       ApiBase::PARAM_ISMULTI => true,
+                       ApiBase::PARAM_HELP_MSG_PER_VALUE => [],
+               ];
+
+               return $ret;
        }
 
        protected function getExamplesMessages() {
index 41bf9b6..684c425 100644 (file)
@@ -45,6 +45,14 @@ class ApiDisabled extends ApiBase {
        }
 
        protected function getDescriptionMessage() {
-               return 'apihelp-disabled-description';
+               return 'apihelp-disabled-summary';
+       }
+
+       protected function getSummaryMessage() {
+               return 'apihelp-disabled-summary';
+       }
+
+       protected function getExtendedDescription() {
+               return 'apihelp-disabled-extended-description';
        }
 }
index c52b731..5484a78 100644 (file)
@@ -176,7 +176,8 @@ class ApiErrorFormatter {
                        } else {
                                $msg = new RawMessage( '$1' );
                                if ( !isset( $options['code'] ) ) {
-                                       $options['code'] = 'internal_api_error_' . get_class( $exception );
+                                       $class = preg_replace( '#^Wikimedia\\\Rdbms\\\#', '', get_class( $exception ) );
+                                       $options['code'] = 'internal_api_error_' . $class;
                                }
                        }
                        $params = [ wfEscapeWikiText( $exception->getMessage() ) ];
index 97720c6..cae1e15 100644 (file)
@@ -70,11 +70,16 @@ class ApiFeedContributions extends ApiBase {
                        $feedUrl
                );
 
+               // Convert year/month parameters to end parameter
+               $params['start'] = '';
+               $params['end'] = '';
+               $params = ContribsPager::processDateFilter( $params );
+
                $pager = new ContribsPager( $this->getContext(), [
                        'target' => $target,
                        'namespace' => $params['namespace'],
-                       'year' => $params['year'],
-                       'month' => $params['month'],
+                       'start' => $params['start'],
+                       'end' => $params['end'],
                        'tagFilter' => $params['tagfilter'],
                        'deletedOnly' => $params['deletedonly'],
                        'topOnly' => $params['toponly'],
index eb23bd6..36247dd 100644 (file)
@@ -219,7 +219,14 @@ abstract class ApiFormatBase extends ApiBase {
                        if ( !$this->getIsWrappedHtml() ) {
                                // When the format without suffix 'fm' is defined, there is a non-html version
                                if ( $this->getMain()->getModuleManager()->isDefined( $lcformat, 'format' ) ) {
-                                       $msg = $context->msg( 'api-format-prettyprint-header' )->params( $format, $lcformat );
+                                       if ( !$this->getRequest()->wasPosted() ) {
+                                               $nonHtmlUrl = strtok( $this->getRequest()->getFullRequestURL(), '?' )
+                                                       . '?' . $this->getRequest()->appendQueryValue( 'format', $lcformat );
+                                               $msg = $context->msg( 'api-format-prettyprint-header-hyperlinked' )
+                                                       ->params( $format, $lcformat, $nonHtmlUrl );
+                                       } else {
+                                               $msg = $context->msg( 'api-format-prettyprint-header' )->params( $format, $lcformat );
+                                       }
                                } else {
                                        $msg = $context->msg( 'api-format-prettyprint-header-only-html' )->params( $format );
                                }
index df9ca98..192c039 100644 (file)
@@ -25,6 +25,7 @@
  */
 
 use HtmlFormatter\HtmlFormatter;
+use MediaWiki\MediaWikiServices;
 
 /**
  * Class to output help for an API module
@@ -108,7 +109,7 @@ class ApiHelp extends ApiBase {
                }
                $out->setPageTitle( $context->msg( 'api-help-title' ) );
 
-               $cache = ObjectCache::getMainWANInstance();
+               $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
                $cacheKey = null;
                if ( count( $modules ) == 1 && $modules[0] instanceof ApiMain &&
                        $options['recursivesubmodules'] && $context->getLanguage() === $wgContLang
@@ -116,7 +117,7 @@ class ApiHelp extends ApiBase {
                        $cacheHelpTimeout = $context->getConfig()->get( 'APICacheHelpTimeout' );
                        if ( $cacheHelpTimeout > 0 ) {
                                // Get help text from cache if present
-                               $cacheKey = wfMemcKey( 'apihelp', $modules[0]->getModulePath(),
+                               $cacheKey = $cache->makeKey( 'apihelp', $modules[0]->getModulePath(),
                                        (int)!empty( $options['toc'] ),
                                        str_replace( ' ', '_', SpecialVersion::getVersion( 'nodb' ) ) );
                                $cached = $cache->get( $cacheKey );
@@ -488,12 +489,22 @@ class ApiHelp extends ApiBase {
 
                                                if ( is_array( $type ) ) {
                                                        $count = count( $type );
+                                                       $deprecatedValues = isset( $settings[ApiBase::PARAM_DEPRECATED_VALUES] )
+                                                               ? $settings[ApiBase::PARAM_DEPRECATED_VALUES]
+                                                               : [];
                                                        $links = isset( $settings[ApiBase::PARAM_VALUE_LINKS] )
                                                                ? $settings[ApiBase::PARAM_VALUE_LINKS]
                                                                : [];
-                                                       $values = array_map( function ( $v ) use ( $links ) {
-                                                               // We can't know whether this contains LTR or RTL text.
-                                                               $ret = $v === '' ? $v : Html::element( 'span', [ 'dir' => 'auto' ], $v );
+                                                       $values = array_map( function ( $v ) use ( $links, $deprecatedValues ) {
+                                                               $attr = [];
+                                                               if ( $v !== '' ) {
+                                                                       // We can't know whether this contains LTR or RTL text.
+                                                                       $attr['dir'] = 'auto';
+                                                               }
+                                                               if ( isset( $deprecatedValues[$v] ) ) {
+                                                                       $attr['class'] = 'apihelp-deprecated-value';
+                                                               }
+                                                               $ret = $attr ? Html::element( 'span', $attr, $v ) : $v;
                                                                if ( isset( $links[$v] ) ) {
                                                                        $ret = "[[{$links[$v]}|$ret]]";
                                                                }
index 45378ee..ebe4e26 100644 (file)
@@ -36,6 +36,7 @@
 class ApiHelpParamValueMessage extends Message {
 
        protected $paramValue;
+       protected $deprecated;
 
        /**
         * @see Message::__construct
@@ -43,11 +44,14 @@ class ApiHelpParamValueMessage extends Message {
         * @param string $paramValue Parameter value being documented
         * @param string $text Message to use.
         * @param array $params Parameters for the message.
+        * @param bool $deprecated Whether the value is deprecated
         * @throws InvalidArgumentException
+        * @since 1.30 Added the `$deprecated` parameter
         */
-       public function __construct( $paramValue, $text, $params = [] ) {
+       public function __construct( $paramValue, $text, $params = [], $deprecated = false ) {
                parent::__construct( $text, $params );
                $this->paramValue = $paramValue;
+               $this->deprecated = (bool)$deprecated;
        }
 
        /**
@@ -58,14 +62,32 @@ class ApiHelpParamValueMessage extends Message {
                return $this->paramValue;
        }
 
+       /**
+        * Fetch the 'deprecated' flag
+        * @since 1.30
+        * @return bool
+        */
+       public function isDeprecated() {
+               return $this->deprecated;
+       }
+
        /**
         * Fetch the message.
         * @return string
         */
        public function fetchMessage() {
                if ( $this->message === null ) {
+                       $dep = '';
+                       if ( $this->isDeprecated() ) {
+                               $msg = new Message( 'api-help-param-deprecated' );
+                               $msg->interface = $this->interface;
+                               $msg->language = $this->language;
+                               $msg->useDatabase = $this->useDatabase;
+                               $msg->title = $this->title;
+                               $dep = '<span class="apihelp-deprecated">' . $msg->fetchMessage() . '</span> ';
+                       }
                        $this->message = ";<span dir=\"ltr\" lang=\"en\">{$this->paramValue}</span>:"
-                               . parent::fetchMessage();
+                               . $dep . parent::fetchMessage();
                }
                return $this->message;
        }
index 41bec35..aa7e25e 100644 (file)
@@ -41,11 +41,28 @@ class ApiLogin extends ApiBase {
                parent::__construct( $main, $action, 'lg' );
        }
 
-       protected function getDescriptionMessage() {
+       protected function getExtendedDescription() {
                if ( $this->getConfig()->get( 'EnableBotPasswords' ) ) {
-                       return 'apihelp-login-description';
+                       return 'apihelp-login-extended-description';
                } else {
-                       return 'apihelp-login-description-nobotpasswords';
+                       return 'apihelp-login-extended-description-nobotpasswords';
+               }
+       }
+
+       /**
+        * Format a message for the response
+        * @param Message|string|array $message
+        * @return string|array
+        */
+       private function formatMessage( $message ) {
+               $message = Message::newFromSpecifier( $message );
+               $errorFormatter = $this->getErrorFormatter();
+               if ( $errorFormatter instanceof ApiErrorFormatter_BackCompat ) {
+                       return ApiErrorFormatter::stripMarkup(
+                               $message->useDatabase( false )->inLanguage( 'en' )->text()
+                       );
+               } else {
+                       return $errorFormatter->formatMessage( $message );
                }
        }
 
@@ -64,7 +81,7 @@ class ApiLogin extends ApiBase {
                if ( $this->lacksSameOriginSecurity() ) {
                        $this->getResult()->addValue( null, 'login', [
                                'result' => 'Aborted',
-                               'reason' => 'Cannot log in when the same-origin policy is not applied',
+                               'reason' => $this->formatMessage( 'api-login-fail-sameorigin' ),
                        ] );
 
                        return;
@@ -84,8 +101,10 @@ class ApiLogin extends ApiBase {
                if ( !$session->canSetUser() ) {
                        $this->getResult()->addValue( null, 'login', [
                                'result' => 'Aborted',
-                               'reason' => 'Cannot log in when using ' .
-                                       $session->getProvider()->describe( Language::factory( 'en' ) ),
+                               'reason' => $this->formatMessage( [
+                                       'api-login-fail-badsessionprovider',
+                                       $session->getProvider()->describe( $this->getErrorFormatter()->getLanguage() ),
+                               ] )
                        ] );
 
                        return;
@@ -190,25 +209,15 @@ class ApiLogin extends ApiBase {
                                break;
 
                        case 'Failed':
-                               $errorFormatter = $this->getErrorFormatter();
-                               if ( $errorFormatter instanceof ApiErrorFormatter_BackCompat ) {
-                                       $result['reason'] = ApiErrorFormatter::stripMarkup(
-                                               $message->useDatabase( false )->inLanguage( 'en' )->text()
-                                       );
-                               } else {
-                                       $result['reason'] = $errorFormatter->formatMessage( $message );
-                               }
+                               $result['reason'] = $this->formatMessage( $message );
                                break;
 
                        case 'Aborted':
-                               $result['reason'] = 'Authentication requires user interaction, ' .
-                                       'which is not supported by action=login.';
-                               if ( $this->getConfig()->get( 'EnableBotPasswords' ) ) {
-                                       $result['reason'] .= ' To be able to login with action=login, see [[Special:BotPasswords]].';
-                                       $result['reason'] .= ' To continue using main-account login, see action=clientlogin.';
-                               } else {
-                                       $result['reason'] .= ' To log in, see action=clientlogin.';
-                               }
+                               $result['reason'] = $this->formatMessage(
+                                       $this->getConfig()->get( 'EnableBotPasswords' )
+                                               ? 'api-login-fail-aborted'
+                                               : 'api-login-fail-aborted-nobotpw'
+                               );
                                break;
 
                        default:
index 4068a50..d7586e0 100644 (file)
@@ -1,7 +1,5 @@
 <?php
 /**
- *
- *
  * Created on Sep 4, 2006
  *
  * Copyright © 2006 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
@@ -28,6 +26,8 @@
 use MediaWiki\Logger\LoggerFactory;
 use MediaWiki\MediaWikiServices;
 use Wikimedia\Timestamp\TimestampException;
+use Wikimedia\Rdbms\DBQueryError;
+use Wikimedia\Rdbms\DBError;
 
 /**
  * This is the main API class, used for both external and internal processing.
@@ -236,6 +236,7 @@ class ApiMain extends ApiBase {
                                wfDebug( "API: stripping user credentials when the same-origin policy is not applied\n" );
                                $wgUser = new User();
                                $this->getContext()->setUser( $wgUser );
+                               $request->response()->header( 'MediaWiki-Login-Suppressed: true' );
                        }
                }
 
@@ -778,7 +779,8 @@ class ApiMain extends ApiBase {
 
                        if ( !$preflight ) {
                                $response->header(
-                                       'Access-Control-Expose-Headers: MediaWiki-API-Error, Retry-After, X-Database-Lag'
+                                       'Access-Control-Expose-Headers: MediaWiki-API-Error, Retry-After, X-Database-Lag, '
+                                       . 'MediaWiki-Login-Suppressed'
                                );
                        }
                }
@@ -1044,7 +1046,8 @@ class ApiMain extends ApiBase {
                } else {
                        // Something is seriously wrong
                        $config = $this->getConfig();
-                       $code = 'internal_api_error_' . get_class( $e );
+                       $class = preg_replace( '#^Wikimedia\\\Rdbms\\\#', '', get_class( $e ) );
+                       $code = 'internal_api_error_' . $class;
                        if ( ( $e instanceof DBQueryError ) && !$config->get( 'ShowSQLErrors' ) ) {
                                $params = [ 'apierror-databaseerror', WebRequest::getRequestId() ];
                        } else {
index dc1b4e7..ff65d0e 100644 (file)
@@ -25,7 +25,6 @@
  */
 
 use MediaWiki\MediaWikiServices;
-use Wikimedia\Rdbms\Database;
 
 /**
  * @ingroup API
index 5609ad8..599b3de 100644 (file)
@@ -1356,7 +1356,7 @@ class ApiPageSet extends ApiBase {
                        }
                }
                foreach ( $this->mGeneratorData as $ns => $dbkeys ) {
-                       if ( $ns === -1 ) {
+                       if ( $ns === NS_SPECIAL ) {
                                $pages = [];
                                foreach ( $this->mSpecialTitles as $id => $title ) {
                                        $pages[$title->getDBkey()] = $id;
index 39b5897..3be743d 100644 (file)
@@ -448,6 +448,16 @@ class ApiParamInfo extends ApiBase {
                        if ( !empty( $settings[ApiBase::PARAM_RANGE_ENFORCE] ) ) {
                                $item['enforcerange'] = true;
                        }
+                       if ( !empty( $settings[ApiBase::PARAM_DEPRECATED_VALUES] ) ) {
+                               $deprecatedValues = array_keys( $settings[ApiBase::PARAM_DEPRECATED_VALUES] );
+                               if ( is_array( $item['type'] ) ) {
+                                       $deprecatedValues = array_intersect( $deprecatedValues, $item['type'] );
+                               }
+                               if ( $deprecatedValues ) {
+                                       $item['deprecatedvalues'] = array_values( $deprecatedValues );
+                                       ApiResult::setIndexedTagName( $item['deprecatedvalues'], 'v' );
+                               }
+                       }
 
                        if ( !empty( $settings[ApiBase::PARAM_HELP_MSG_INFO] ) ) {
                                $item['info'] = [];
index d648968..031fbf7 100644 (file)
@@ -22,6 +22,8 @@
  * @file
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * @ingroup API
  */
@@ -36,6 +38,9 @@ class ApiParse extends ApiBase {
        /** @var Content $pstContent */
        private $pstContent = null;
 
+       /** @var bool */
+       private $contentIsDeleted = false, $contentIsSuppressed = false;
+
        public function execute() {
                // The data is hot but user-dependent, like page views, so we set vary cookies
                $this->getMain()->setCacheMode( 'anon-public-user-private' );
@@ -83,6 +88,9 @@ class ApiParse extends ApiBase {
 
                $redirValues = null;
 
+               $needContent = isset( $prop['wikitext'] ) ||
+                       isset( $prop['parsetree'] ) || $params['generatexml'];
+
                // Return result
                $result = $this->getResult();
 
@@ -108,27 +116,9 @@ class ApiParse extends ApiBase {
                                $wgTitle = $titleObj;
                                $pageObj = WikiPage::factory( $titleObj );
                                list( $popts, $reset, $suppressCache ) = $this->makeParserOptions( $pageObj, $params );
-
-                               // If for some reason the "oldid" is actually the current revision, it may be cached
-                               // Deliberately comparing $pageObj->getLatest() with $rev->getId(), rather than
-                               // checking $rev->isCurrent(), because $pageObj is what actually ends up being used,
-                               // and if its ->getLatest() is outdated, $rev->isCurrent() won't tell us that.
-                               if ( !$suppressCache && $rev->getId() == $pageObj->getLatest() ) {
-                                       // May get from/save to parser cache
-                                       $p_result = $this->getParsedContent( $pageObj, $popts,
-                                               $pageid, isset( $prop['wikitext'] ) );
-                               } else { // This is an old revision, so get the text differently
-                                       $this->content = $rev->getContent( Revision::FOR_THIS_USER, $this->getUser() );
-
-                                       if ( $this->section !== false ) {
-                                               $this->content = $this->getSectionContent(
-                                                       $this->content, $this->msg( 'revid', $rev->getId() )
-                                               );
-                                       }
-
-                                       // Should we save old revision parses to the parser cache?
-                                       $p_result = $this->content->getParserOutput( $titleObj, $rev->getId(), $popts );
-                               }
+                               $p_result = $this->getParsedContent(
+                                       $pageObj, $popts, $suppressCache, $pageid, $rev, $needContent
+                               );
                        } else { // Not $oldid, but $pageid or $page
                                if ( $params['redirects'] ) {
                                        $reqParams = [
@@ -170,25 +160,9 @@ class ApiParse extends ApiBase {
                                }
 
                                list( $popts, $reset, $suppressCache ) = $this->makeParserOptions( $pageObj, $params );
-
-                               // Don't pollute the parser cache when setting options that aren't
-                               // in ParserOptions::optionsHash()
-                               /// @todo: This should be handled closer to the actual cache instead of here, see T110269
-                               $suppressCache = $suppressCache ||
-                                       $params['disablepp'] ||
-                                       $params['disablelimitreport'] ||
-                                       $params['preview'] ||
-                                       $params['sectionpreview'] ||
-                                       $params['disabletidy'];
-
-                               if ( $suppressCache ) {
-                                       $this->content = $this->getContent( $pageObj, $pageid );
-                                       $p_result = $this->content->getParserOutput( $titleObj, null, $popts );
-                               } else {
-                                       // Potentially cached
-                                       $p_result = $this->getParsedContent( $pageObj, $popts, $pageid,
-                                               isset( $prop['wikitext'] ) );
-                               }
+                               $p_result = $this->getParsedContent(
+                                       $pageObj, $popts, $suppressCache, $pageid, null, $needContent
+                               );
                        }
                } else { // Not $oldid, $pageid, $page. Hence based on $text
                        $titleObj = Title::newFromText( $title );
@@ -247,6 +221,12 @@ class ApiParse extends ApiBase {
                        if ( $params['onlypst'] ) {
                                // Build a result and bail out
                                $result_array = [];
+                               if ( $this->contentIsDeleted ) {
+                                       $result_array['textdeleted'] = true;
+                               }
+                               if ( $this->contentIsSuppressed ) {
+                                       $result_array['textsuppressed'] = true;
+                               }
                                $result_array['text'] = $this->pstContent->serialize( $format );
                                $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'text';
                                if ( isset( $prop['wikitext'] ) ) {
@@ -277,6 +257,60 @@ class ApiParse extends ApiBase {
 
                $result_array['title'] = $titleObj->getPrefixedText();
                $result_array['pageid'] = $pageid ?: $pageObj->getId();
+               if ( $this->contentIsDeleted ) {
+                       $result_array['textdeleted'] = true;
+               }
+               if ( $this->contentIsSuppressed ) {
+                       $result_array['textsuppressed'] = true;
+               }
+
+               if ( $params['disabletoc'] ) {
+                       $p_result->setTOCEnabled( false );
+               }
+
+               if ( isset( $params['useskin'] ) ) {
+                       $factory = MediaWikiServices::getInstance()->getSkinFactory();
+                       $skin = $factory->makeSkin( Skin::normalizeKey( $params['useskin'] ) );
+               } else {
+                       $skin = null;
+               }
+
+               $outputPage = null;
+               if ( $skin || isset( $prop['headhtml'] ) || isset( $prop['categorieshtml'] ) ) {
+                       // Enabling the skin via 'useskin', 'headhtml', or 'categorieshtml'
+                       // gets OutputPage and Skin involved, which (among others) applies
+                       // these hooks:
+                       // - ParserOutputHooks
+                       // - Hook: LanguageLinks
+                       // - Hook: OutputPageParserOutput
+                       // - Hook: OutputPageMakeCategoryLinks
+                       $context = new DerivativeContext( $this->getContext() );
+                       $context->setTitle( $titleObj );
+                       $context->setWikiPage( $pageObj );
+
+                       if ( $skin ) {
+                               // Use the skin specified by 'useskin'
+                               $context->setSkin( $skin );
+                               // Context clones the skin, refetch to stay in sync. (T166022)
+                               $skin = $context->getSkin();
+                       } else {
+                               // Make sure the context's skin refers to the context. Without this,
+                               // $outputPage->getSkin()->getOutput() !== $outputPage which
+                               // confuses some of the output.
+                               $context->setSkin( $context->getSkin() );
+                       }
+
+                       $outputPage = new OutputPage( $context );
+                       $outputPage->addParserOutputMetadata( $p_result );
+                       $context->setOutput( $outputPage );
+
+                       if ( $skin ) {
+                               // Based on OutputPage::output()
+                               foreach ( $skin->getDefaultModules() as $group ) {
+                                       $outputPage->addModules( $group );
+                               }
+                       }
+               }
 
                if ( !is_null( $oldid ) ) {
                        $result_array['revid'] = intval( $oldid );
@@ -286,10 +320,6 @@ class ApiParse extends ApiBase {
                        $result_array['redirects'] = $redirValues;
                }
 
-               if ( $params['disabletoc'] ) {
-                       $p_result->setTOCEnabled( false );
-               }
-
                if ( isset( $prop['text'] ) ) {
                        $result_array['text'] = $p_result->getText();
                        $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'text';
@@ -303,26 +333,26 @@ class ApiParse extends ApiBase {
                }
 
                if ( isset( $prop['langlinks'] ) ) {
-                       $langlinks = $p_result->getLanguageLinks();
-
-                       if ( $params['effectivelanglinks'] ) {
-                               // Link flags are ignored for now, but may in the future be
-                               // included in the result.
-                               $linkFlags = [];
-                               Hooks::run( 'LanguageLinks', [ $titleObj, &$langlinks, &$linkFlags ] );
+                       if ( $skin ) {
+                               $langlinks = $outputPage->getLanguageLinks();
+                       } else {
+                               $langlinks = $p_result->getLanguageLinks();
+                               // The deprecated 'effectivelanglinks' option depredates OutputPage
+                               // support via 'useskin'. If not already applied, then run just this
+                               // one hook of OutputPage::addParserOutputMetadata here.
+                               if ( $params['effectivelanglinks'] ) {
+                                       $linkFlags = [];
+                                       Hooks::run( 'LanguageLinks', [ $titleObj, &$langlinks, &$linkFlags ] );
+                               }
                        }
-               } else {
-                       $langlinks = false;
-               }
 
-               if ( isset( $prop['langlinks'] ) ) {
                        $result_array['langlinks'] = $this->formatLangLinks( $langlinks );
                }
                if ( isset( $prop['categories'] ) ) {
                        $result_array['categories'] = $this->formatCategoryLinks( $p_result->getCategories() );
                }
                if ( isset( $prop['categorieshtml'] ) ) {
-                       $result_array['categorieshtml'] = $this->categoriesHtml( $p_result->getCategories() );
+                       $result_array['categorieshtml'] = $outputPage->getSkin()->getCategories();
                        $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'categorieshtml';
                }
                if ( isset( $prop['links'] ) ) {
@@ -350,38 +380,41 @@ class ApiParse extends ApiBase {
                }
 
                if ( isset( $prop['headitems'] ) ) {
-                       $result_array['headitems'] = $this->formatHeadItems( $p_result->getHeadItems() );
-                       $this->addDeprecation( 'apiwarn-deprecation-parse-headitems', 'action=parse&prop=headitems' );
+                       if ( $skin ) {
+                               $result_array['headitems'] = $this->formatHeadItems( $outputPage->getHeadItemsArray() );
+                       } else {
+                               $result_array['headitems'] = $this->formatHeadItems( $p_result->getHeadItems() );
+                       }
                }
 
                if ( isset( $prop['headhtml'] ) ) {
-                       $context = new DerivativeContext( $this->getContext() );
-                       $context->setTitle( $titleObj );
-                       $context->setWikiPage( $pageObj );
-
-                       // We need an OutputPage tied to $context, not to the
-                       // RequestContext at the root of the stack.
-                       $output = new OutputPage( $context );
-                       $output->addParserOutputMetadata( $p_result );
-
-                       $result_array['headhtml'] = $output->headElement( $context->getSkin() );
+                       $result_array['headhtml'] = $outputPage->headElement( $context->getSkin() );
                        $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'headhtml';
                }
 
                if ( isset( $prop['modules'] ) ) {
-                       $result_array['modules'] = array_values( array_unique( $p_result->getModules() ) );
-                       $result_array['modulescripts'] = array_values( array_unique( $p_result->getModuleScripts() ) );
-                       $result_array['modulestyles'] = array_values( array_unique( $p_result->getModuleStyles() ) );
+                       if ( $skin ) {
+                               $result_array['modules'] = $outputPage->getModules();
+                               $result_array['modulescripts'] = $outputPage->getModuleScripts();
+                               $result_array['modulestyles'] = $outputPage->getModuleStyles();
+                       } else {
+                               $result_array['modules'] = array_values( array_unique( $p_result->getModules() ) );
+                               $result_array['modulescripts'] = array_values( array_unique( $p_result->getModuleScripts() ) );
+                               $result_array['modulestyles'] = array_values( array_unique( $p_result->getModuleStyles() ) );
+                       }
                }
 
                if ( isset( $prop['jsconfigvars'] ) ) {
-                       $result_array['jsconfigvars'] =
-                               ApiResult::addMetadataToResultVars( $p_result->getJsConfigVars() );
+                       $jsconfigvars = $skin ? $outputPage->getJsConfigVars() : $p_result->getJsConfigVars();
+                       $result_array['jsconfigvars'] = ApiResult::addMetadataToResultVars( $jsconfigvars );
                }
 
                if ( isset( $prop['encodedjsconfigvars'] ) ) {
+                       $jsconfigvars = $skin ? $outputPage->getJsConfigVars() : $p_result->getJsConfigVars();
                        $result_array['encodedjsconfigvars'] = FormatJson::encode(
-                               $p_result->getJsConfigVars(), false, FormatJson::ALL_OK
+                               $jsconfigvars,
+                               false,
+                               FormatJson::ALL_OK
                        );
                        $result_array[ApiResult::META_SUBELEMENTS][] = 'encodedjsconfigvars';
                }
@@ -392,7 +425,11 @@ class ApiParse extends ApiBase {
                }
 
                if ( isset( $prop['indicators'] ) ) {
-                       $result_array['indicators'] = (array)$p_result->getIndicators();
+                       if ( $skin ) {
+                               $result_array['indicators'] = (array)$outputPage->getIndicators();
+                       } else {
+                               $result_array['indicators'] = (array)$p_result->getIndicators();
+                       }
                        ApiResult::setArrayType( $result_array['indicators'], 'BCkvp', 'name' );
                }
 
@@ -478,70 +515,81 @@ class ApiParse extends ApiBase {
                if ( $params['disabletidy'] ) {
                        $popts->setTidy( false );
                }
+               $popts->setWrapOutputClass(
+                       $params['wrapoutputclass'] === '' ? false : $params['wrapoutputclass']
+               );
 
                $reset = null;
                $suppressCache = false;
                Hooks::run( 'ApiMakeParserOptions',
                        [ $popts, $pageObj->getTitle(), $params, $this, &$reset, &$suppressCache ] );
 
+               // Force cache suppression when $popts aren't cacheable.
+               $suppressCache = $suppressCache || !$popts->isSafeToCache();
+
                return [ $popts, $reset, $suppressCache ];
        }
 
        /**
         * @param WikiPage $page
         * @param ParserOptions $popts
+        * @param bool $suppressCache
         * @param int $pageId
-        * @param bool $getWikitext
+        * @param Revision|null $rev
+        * @param bool $getContent
         * @return ParserOutput
         */
-       private function getParsedContent( WikiPage $page, $popts, $pageId = null, $getWikitext = false ) {
-               $this->content = $this->getContent( $page, $pageId );
+       private function getParsedContent(
+               WikiPage $page, $popts, $suppressCache, $pageId, $rev, $getContent
+       ) {
+               $revId = $rev ? $rev->getId() : null;
+               $isDeleted = $rev && $rev->isDeleted( Revision::DELETED_TEXT );
+
+               if ( $getContent || $this->section !== false || $isDeleted ) {
+                       if ( $rev ) {
+                               $this->content = $rev->getContent( Revision::FOR_THIS_USER, $this->getUser() );
+                               if ( !$this->content ) {
+                                       $this->dieWithError( [ 'apierror-missingcontent-revid', $revId ] );
+                               }
+                       } else {
+                               $this->content = $page->getContent( Revision::FOR_THIS_USER, $this->getUser() );
+                               if ( !$this->content ) {
+                                       $this->dieWithError( [ 'apierror-missingcontent-pageid', $pageId ] );
+                               }
+                       }
+                       $this->contentIsDeleted = $isDeleted;
+                       $this->contentIsSuppressed = $rev &&
+                               $rev->isDeleted( Revision::DELETED_TEXT | Revision::DELETED_RESTRICTED );
+               }
 
-               if ( $this->section !== false && $this->content !== null ) {
-                       // Not cached (save or load)
-                       return $this->content->getParserOutput( $page->getTitle(), null, $popts );
+               if ( $this->section !== false ) {
+                       $this->content = $this->getSectionContent(
+                               $this->content,
+                               $pageId === null ? $page->getTitle()->getPrefixedText() : $this->msg( 'pageid', $pageId )
+                       );
+                       return $this->content->getParserOutput( $page->getTitle(), $revId, $popts );
                }
 
-               // Try the parser cache first
-               // getParserOutput will save to Parser cache if able
-               $pout = $page->getParserOutput( $popts );
-               if ( !$pout ) {
-                       $this->dieWithError( [ 'apierror-nosuchrevid', $page->getLatest() ] );
+               if ( $isDeleted ) {
+                       // getParserOutput can't do revdeled revisions
+                       $pout = $this->content->getParserOutput( $page->getTitle(), $revId, $popts );
+               } else {
+                       // getParserOutput will save to Parser cache if able
+                       $pout = $page->getParserOutput( $popts, $revId, $suppressCache );
                }
-               if ( $getWikitext ) {
-                       $this->content = $page->getContent( Revision::RAW );
+               if ( !$pout ) {
+                       $this->dieWithError( [ 'apierror-nosuchrevid', $revId ?: $page->getLatest() ] );
                }
 
                return $pout;
        }
 
-       /**
-        * Get the content for the given page and the requested section.
-        *
-        * @param WikiPage $page
-        * @param int $pageId
-        * @return Content
-        */
-       private function getContent( WikiPage $page, $pageId = null ) {
-               $content = $page->getContent( Revision::RAW ); // XXX: really raw?
-
-               if ( $this->section !== false && $content !== null ) {
-                       $content = $this->getSectionContent(
-                               $content,
-                               !is_null( $pageId )
-                                       ? $this->msg( 'pageid', $pageId )
-                                       : $page->getTitle()->getPrefixedText()
-                       );
-               }
-               return $content;
-       }
-
        /**
         * Extract the requested section from the given Content
         *
         * @param Content $content
         * @param string|Message $what Identifies the content in error messages, e.g. page title.
-        * @return Content|bool
+        * @return Content
         */
        private function getSectionContent( Content $content, $what ) {
                // Not cached (save or load)
@@ -659,13 +707,6 @@ class ApiParse extends ApiBase {
                return $result;
        }
 
-       private function categoriesHtml( $categories ) {
-               $context = $this->getContext();
-               $context->getOutput()->addCategoryLinks( $categories );
-
-               return $context->getSkin()->getCategories();
-       }
-
        private function formatLinks( $links ) {
                $result = [];
                foreach ( $links as $ns => $nslinks ) {
@@ -770,7 +811,6 @@ class ApiParse extends ApiBase {
                                        'sections',
                                        'revid',
                                        'displaytitle',
-                                       'headitems',
                                        'headhtml',
                                        'modules',
                                        'jsconfigvars',
@@ -782,15 +822,23 @@ class ApiParse extends ApiBase {
                                        'limitreportdata',
                                        'limitreporthtml',
                                        'parsetree',
-                                       'parsewarnings'
+                                       'parsewarnings',
+                                       'headitems',
                                ],
                                ApiBase::PARAM_HELP_MSG_PER_VALUE => [
                                        'parsetree' => [ 'apihelp-parse-paramvalue-prop-parsetree', CONTENT_MODEL_WIKITEXT ],
                                ],
+                               ApiBase::PARAM_DEPRECATED_VALUES => [
+                                       'headitems' => 'apiwarn-deprecation-parse-headitems',
+                               ],
                        ],
+                       'wrapoutputclass' => 'mw-parser-output',
                        'pst' => false,
                        'onlypst' => false,
-                       'effectivelanglinks' => false,
+                       'effectivelanglinks' => [
+                               ApiBase::PARAM_DFLT => false,
+                               ApiBase::PARAM_DEPRECATED => true,
+                       ],
                        'section' => null,
                        'sectiontitle' => [
                                ApiBase::PARAM_TYPE => 'string',
@@ -812,6 +860,9 @@ class ApiParse extends ApiBase {
                        'preview' => false,
                        'sectionpreview' => false,
                        'disabletoc' => false,
+                       'useskin' => [
+                               ApiBase::PARAM_TYPE => array_keys( Skin::getAllowedSkins() ),
+                       ],
                        'contentformat' => [
                                ApiBase::PARAM_TYPE => ContentHandler::getAllContentFormats(),
                        ],
index daeedbe..250bee6 100644 (file)
@@ -205,9 +205,7 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase {
                                        [
                                                'ug_group' => User::getGroupsWithPermission( 'bot' ),
                                                'ug_user = img_user',
-                                               $this->getConfig()->get( 'DisableUserGroupExpiry' ) ?
-                                                       '1' :
-                                                       'ug_expiry IS NULL OR ug_expiry >= ' . $db->addQuotes( $db->timestamp() )
+                                               'ug_expiry IS NULL OR ug_expiry >= ' . $db->addQuotes( $db->timestamp() )
                                        ]
                                ] ] );
                                $groupCond = ( $params['filterbots'] == 'nobots' ? 'NULL' : 'NOT NULL' );
index 0f0b2af..fd95e17 100644 (file)
@@ -122,9 +122,7 @@ class ApiQueryAllUsers extends ApiQueryBase {
                                        [
                                                'ug1.ug_user=user_id',
                                                'ug1.ug_group' => $params['group'],
-                                               $this->getConfig()->get( 'DisableUserGroupExpiry' ) ?
-                                                       '1' :
-                                                       'ug1.ug_expiry IS NULL OR ug1.ug_expiry >= ' . $db->addQuotes( $db->timestamp() )
+                                               'ug1.ug_expiry IS NULL OR ug1.ug_expiry >= ' . $db->addQuotes( $db->timestamp() )
                                        ]
                                ]
                        ] );
@@ -147,9 +145,7 @@ class ApiQueryAllUsers extends ApiQueryBase {
                        $this->addJoinConds( [ 'ug1' => [ 'LEFT OUTER JOIN',
                                array_merge( [
                                        'ug1.ug_user=user_id',
-                                       $this->getConfig()->get( 'DisableUserGroupExpiry' ) ?
-                                               '1' :
-                                               'ug1.ug_expiry IS NULL OR ug1.ug_expiry >= ' . $db->addQuotes( $db->timestamp() )
+                                       'ug1.ug_expiry IS NULL OR ug1.ug_expiry >= ' . $db->addQuotes( $db->timestamp() )
                                ], $exclude )
                        ] ] );
                        $this->addWhere( 'ug1.ug_user IS NULL' );
@@ -165,9 +161,7 @@ class ApiQueryAllUsers extends ApiQueryBase {
                        $this->addFields( [ 'groups' =>
                                $db->buildGroupConcatField( '|', 'user_groups', 'ug_group', [
                                        'ug_user=user_id',
-                                       $this->getConfig()->get( 'DisableUserGroupExpiry' ) ?
-                                               '1' :
-                                               'ug_expiry IS NULL OR ug_expiry >= ' . $db->addQuotes( $db->timestamp() )
+                                       'ug_expiry IS NULL OR ug_expiry >= ' . $db->addQuotes( $db->timestamp() )
                                ] )
                        ] );
                }
index 183409d..693d954 100644 (file)
@@ -163,9 +163,7 @@ class ApiQueryContributors extends ApiQueryBase {
                                [
                                        'ug_user=rev_user',
                                        'ug_group' => $limitGroups,
-                                       $this->getConfig()->get( 'DisableUserGroupExpiry' ) ?
-                                               '1' :
-                                               'ug_expiry IS NULL OR ug_expiry >= ' . $db->addQuotes( $db->timestamp() )
+                                       'ug_expiry IS NULL OR ug_expiry >= ' . $db->addQuotes( $db->timestamp() )
                                ]
                        ] ] );
                        $this->addWhereIf( 'ug_user IS NULL', $excludeGroups );
index 9476066..a94af69 100644 (file)
@@ -45,6 +45,14 @@ class ApiQueryDisabled extends ApiQueryBase {
        }
 
        public function getDescriptionMessage() {
-               return 'apihelp-query+disabled-description';
+               return 'apihelp-query+disabled-summary';
+       }
+
+       public function getSummaryMessage() {
+               return 'apihelp-query+disabled-summary';
+       }
+
+       public function getExtendedDescription() {
+               return 'apihelp-query+disabled-extended-description';
        }
 }
index 4966bcd..ff97668 100644 (file)
@@ -57,7 +57,11 @@ class ApiQueryPagePropNames extends ApiQueryBase {
                }
 
                $limit = $params['limit'];
-               $this->addOption( 'LIMIT', $limit + 1 );
+
+               // mysql has issues with limit in loose index T115825
+               if ( $this->getDB()->getType() !== 'mysql' ) {
+                       $this->addOption( 'LIMIT', $limit + 1 );
+               }
 
                $result = $this->getResult();
                $count = 0;
index cc1fc89..ce62226 100644 (file)
@@ -48,7 +48,7 @@ class ApiQueryRandom extends ApiQueryGeneratorBase {
         * @param ApiPageSet|null $resultPageSet
         * @param int $limit Number of pages to fetch
         * @param string|null $start Starting page_random
-        * @param int|null $startId Starting page_id
+        * @param int $startId Starting page_id
         * @param string|null $end Ending page_random
         * @return array (int, string|null) Number of pages left to query and continuation string
         */
@@ -75,8 +75,8 @@ class ApiQueryRandom extends ApiQueryGeneratorBase {
 
                if ( $start !== null ) {
                        $start = $this->getDB()->addQuotes( $start );
-                       if ( $startId !== null ) {
-                               $startId = (int)$startId;
+                       if ( $startId > 0 ) {
+                               $startId = (int)$startId; // safety
                                $this->addWhere( "page_random = $start AND page_id >= $startId OR page_random > $start" );
                        } else {
                                $this->addWhere( "page_random >= $start" );
@@ -144,10 +144,19 @@ class ApiQueryRandom extends ApiQueryGeneratorBase {
                } else {
                        $rand = wfRandom();
                        $start = $rand;
-                       $startId = null;
+                       $startId = 0;
                        $end = null;
                }
 
+               // Set the non-continue if this is being used as a generator
+               // (as a list it doesn't matter because lists never non-continue)
+               if ( $resultPageSet !== null ) {
+                       $endFlag = $end === null ? 0 : 1;
+                       $this->getContinuationManager()->addGeneratorNonContinueParam(
+                               $this, 'continue', "$rand|$start|$startId|$endFlag"
+                       );
+               }
+
                list( $left, $continue ) =
                        $this->runQuery( $resultPageSet, $params['limit'], $start, $startId, $end );
                if ( $end === null && $continue === null ) {
index 7b8394f..a4f0315 100644 (file)
@@ -218,10 +218,75 @@ class ApiQueryRevisions extends ApiQueryRevisionsBase {
                                );
                        }
 
-                       $this->addTimestampWhereRange( 'rev_timestamp', $params['dir'],
-                               $params['start'], $params['end'] );
-                       $this->addWhereRange( 'rev_id', $params['dir'],
-                               $params['startid'], $params['endid'] );
+                       // Convert startid/endid to timestamps (T163532)
+                       $revids = [];
+                       if ( $params['startid'] !== null ) {
+                               $revids[] = (int)$params['startid'];
+                       }
+                       if ( $params['endid'] !== null ) {
+                               $revids[] = (int)$params['endid'];
+                       }
+                       if ( $revids ) {
+                               $db = $this->getDB();
+                               $sql = $db->unionQueries( [
+                                       $db->selectSQLText(
+                                               'revision',
+                                               [ 'id' => 'rev_id', 'ts' => 'rev_timestamp' ],
+                                               [ 'rev_id' => $revids ],
+                                               __METHOD__
+                                       ),
+                                       $db->selectSQLText(
+                                               'archive',
+                                               [ 'id' => 'ar_rev_id', 'ts' => 'ar_timestamp' ],
+                                               [ 'ar_rev_id' => $revids ],
+                                               __METHOD__
+                                       ),
+                               ], false );
+                               $res = $db->query( $sql, __METHOD__ );
+                               foreach ( $res as $row ) {
+                                       if ( (int)$row->id === (int)$params['startid'] ) {
+                                               $params['start'] = $row->ts;
+                                       }
+                                       if ( (int)$row->id === (int)$params['endid'] ) {
+                                               $params['end'] = $row->ts;
+                                       }
+                               }
+                               if ( $params['startid'] !== null && $params['start'] === null ) {
+                                       $p = $this->encodeParamName( 'startid' );
+                                       $this->dieWithError( [ 'apierror-revisions-badid', $p ], "badid_$p" );
+                               }
+                               if ( $params['endid'] !== null && $params['end'] === null ) {
+                                       $p = $this->encodeParamName( 'endid' );
+                                       $this->dieWithError( [ 'apierror-revisions-badid', $p ], "badid_$p" );
+                               }
+
+                               if ( $params['start'] !== null ) {
+                                       $op = ( $params['dir'] === 'newer' ? '>' : '<' );
+                                       $ts = $db->addQuotes( $db->timestampOrNull( $params['start'] ) );
+                                       if ( $params['startid'] !== null ) {
+                                               $this->addWhere( "rev_timestamp $op $ts OR "
+                                                       . "rev_timestamp = $ts AND rev_id $op= " . intval( $params['startid'] ) );
+                                       } else {
+                                               $this->addWhere( "rev_timestamp $op= $ts" );
+                                       }
+                               }
+                               if ( $params['end'] !== null ) {
+                                       $op = ( $params['dir'] === 'newer' ? '<' : '>' ); // Yes, opposite of the above
+                                       $ts = $db->addQuotes( $db->timestampOrNull( $params['end'] ) );
+                                       if ( $params['endid'] !== null ) {
+                                               $this->addWhere( "rev_timestamp $op $ts OR "
+                                                       . "rev_timestamp = $ts AND rev_id $op= " . intval( $params['endid'] ) );
+                                       } else {
+                                               $this->addWhere( "rev_timestamp $op= $ts" );
+                                       }
+                               }
+                       } else {
+                               $this->addTimestampWhereRange( 'rev_timestamp', $params['dir'],
+                                       $params['start'], $params['end'] );
+                       }
+
+                       $sort = ( $params['dir'] === 'newer' ? '' : 'DESC' );
+                       $this->addOption( 'ORDER BY', [ "rev_timestamp $sort", "rev_id $sort" ] );
 
                        // There is only one ID, use it
                        $ids = array_keys( $pageSet->getGoodTitles() );
index 696ec87..2ffd024 100644 (file)
@@ -104,6 +104,17 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
                $this->fld_tags = isset( $prop['tags'] );
                $this->fld_parsetree = isset( $prop['parsetree'] );
 
+               if ( $this->fld_parsetree ) {
+                       $encParam = $this->encodeParamName( 'prop' );
+                       $name = $this->getModuleName();
+                       $parent = $this->getParent();
+                       $parentParam = $parent->encodeParamName( $parent->getModuleManager()->getModuleGroup( $name ) );
+                       $this->addDeprecation(
+                               [ 'apiwarn-deprecation-parameter', "{$encParam}=parsetree" ],
+                               "action=query&{$parentParam}={$name}&{$encParam}=parsetree"
+                       );
+               }
+
                if ( !empty( $params['contentformat'] ) ) {
                        $this->contentFormat = $params['contentformat'];
                }
@@ -477,6 +488,7 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
                        'expandtemplates' => [
                                ApiBase::PARAM_DFLT => false,
                                ApiBase::PARAM_HELP_MSG => 'apihelp-query+revisions+base-param-expandtemplates',
+                               ApiBase::PARAM_DEPRECATED => true,
                        ],
                        'generatexml' => [
                                ApiBase::PARAM_DFLT => false,
@@ -486,19 +498,23 @@ abstract class ApiQueryRevisionsBase extends ApiQueryGeneratorBase {
                        'parse' => [
                                ApiBase::PARAM_DFLT => false,
                                ApiBase::PARAM_HELP_MSG => 'apihelp-query+revisions+base-param-parse',
+                               ApiBase::PARAM_DEPRECATED => true,
                        ],
                        'section' => [
                                ApiBase::PARAM_HELP_MSG => 'apihelp-query+revisions+base-param-section',
                        ],
                        'diffto' => [
                                ApiBase::PARAM_HELP_MSG => 'apihelp-query+revisions+base-param-diffto',
+                               ApiBase::PARAM_DEPRECATED => true,
                        ],
                        'difftotext' => [
                                ApiBase::PARAM_HELP_MSG => 'apihelp-query+revisions+base-param-difftotext',
+                               ApiBase::PARAM_DEPRECATED => true,
                        ],
                        'difftotextpst' => [
                                ApiBase::PARAM_DFLT => false,
                                ApiBase::PARAM_HELP_MSG => 'apihelp-query+revisions+base-param-difftotextpst',
+                               ApiBase::PARAM_DEPRECATED => true,
                        ],
                        'contentformat' => [
                                ApiBase::PARAM_TYPE => ContentHandler::getAllContentFormats(),
index 72b39b6..0dd8922 100644 (file)
@@ -62,18 +62,6 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                $searchInfo = array_flip( $params['info'] );
                $prop = array_flip( $params['prop'] );
 
-               // Deprecated parameters
-               if ( isset( $prop['hasrelated'] ) ) {
-                       $this->addDeprecation(
-                               [ 'apiwarn-deprecation-parameter', 'srprop=hasrelated' ], 'action=search&srprop=hasrelated'
-                       );
-               }
-               if ( isset( $prop['score'] ) ) {
-                       $this->addDeprecation(
-                               [ 'apiwarn-deprecation-parameter', 'srprop=score' ], 'action=search&srprop=score'
-                       );
-               }
-
                // Create search engine instance and set options
                $search = $this->buildSearchEngine( $params );
                $search->setFeatureData( 'rewrite', (bool)$params['enablerewrites'] );
@@ -386,6 +374,10 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                                ],
                                ApiBase::PARAM_ISMULTI => true,
                                ApiBase::PARAM_HELP_MSG_PER_VALUE => [],
+                               ApiBase::PARAM_DEPRECATED_VALUES => [
+                                       'score' => true,
+                                       'hasrelated' => true
+                               ],
                        ],
                        'interwiki' => false,
                        'enablerewrites' => false,
index be67dd2..1b154fa 100644 (file)
@@ -53,37 +53,24 @@ class ApiQueryTags extends ApiQueryBase {
                $softwareDefinedTags = array_fill_keys( ChangeTags::listSoftwareDefinedTags(), 0 );
                $explicitlyDefinedTags = array_fill_keys( ChangeTags::listExplicitlyDefinedTags(), 0 );
                $softwareActivatedTags = array_fill_keys( ChangeTags::listSoftwareActivatedTags(), 0 );
+               $tagStats = ChangeTags::tagUsageStatistics();
 
-               $definedTags = array_merge( $softwareDefinedTags, $explicitlyDefinedTags );
+               $tagHitcounts = array_merge( $softwareDefinedTags, $explicitlyDefinedTags, $tagStats );
+               $tags = array_keys( $tagHitcounts );
 
                # Fetch defined tags that aren't past the continuation
                if ( $params['continue'] !== null ) {
                        $cont = $params['continue'];
-                       $tags = array_filter( array_keys( $definedTags ), function ( $v ) use ( $cont ) {
+                       $tags = array_filter( $tags, function ( $v ) use ( $cont ) {
                                return $v >= $cont;
                        } );
-                       $tags = array_fill_keys( $tags, 0 );
-               } else {
-                       $tags = $definedTags;
-               }
-
-               # Merge in all used tags
-               $this->addTables( 'change_tag' );
-               $this->addFields( 'ct_tag' );
-               $this->addFields( [ 'hitcount' => $fld_hitcount ? 'COUNT(*)' : '0' ] );
-               $this->addOption( 'LIMIT', $limit + 1 );
-               $this->addOption( 'GROUP BY', 'ct_tag' );
-               $this->addWhereRange( 'ct_tag', 'newer', $params['continue'], null );
-               $res = $this->select( __METHOD__ );
-               foreach ( $res as $row ) {
-                       $tags[$row->ct_tag] = (int)$row->hitcount;
                }
 
                # Now make sure the array is sorted for proper continuation
-               ksort( $tags );
+               sort( $tags );
 
                $count = 0;
-               foreach ( $tags as $tagName => $hitcount ) {
+               foreach ( $tags as $tagName ) {
                        if ( ++$count > $limit ) {
                                $this->setContinueEnumParameter( 'continue', $tagName );
                                break;
@@ -102,7 +89,7 @@ class ApiQueryTags extends ApiQueryBase {
                        }
 
                        if ( $fld_hitcount ) {
-                               $tag['hitcount'] = $hitcount;
+                               $tag['hitcount'] = intval( $tagHitcounts[$tagName] );
                        }
 
                        $isSoftware = isset( $softwareDefinedTags[$tagName] );
index 1bb54c1..036515d 100644 (file)
@@ -182,17 +182,6 @@ class ApiQueryUserInfo extends ApiQueryBase {
                        $vals['options'][ApiResult::META_BC_BOOLS] = array_keys( $vals['options'] );
                }
 
-               if ( isset( $this->prop['preferencestoken'] ) ) {
-                       $p = $this->getModulePrefix();
-                       $this->addDeprecation(
-                               [
-                                       'apiwarn-deprecation-withreplacement',
-                                       "{$p}prop=preferencestoken",
-                                       'action=query&meta=tokens',
-                               ],
-                               "meta=userinfo&{$p}prop=preferencestoken"
-                       );
-               }
                if ( isset( $this->prop['preferencestoken'] ) &&
                        !$this->lacksSameOriginSecurity() &&
                        $user->isAllowed( 'editmyoptions' )
@@ -320,7 +309,6 @@ class ApiQueryUserInfo extends ApiQueryBase {
                                        'rights',
                                        'changeablegroups',
                                        'options',
-                                       'preferencestoken',
                                        'editcount',
                                        'ratelimits',
                                        'email',
@@ -329,6 +317,7 @@ class ApiQueryUserInfo extends ApiQueryBase {
                                        'registrationdate',
                                        'unreadcount',
                                        'centralids',
+                                       'preferencestoken',
                                ],
                                ApiBase::PARAM_HELP_MSG_PER_VALUE => [
                                        'unreadcount' => [
@@ -337,6 +326,13 @@ class ApiQueryUserInfo extends ApiQueryBase {
                                                self::WL_UNREAD_LIMIT . '+',
                                        ],
                                ],
+                               ApiBase::PARAM_DEPRECATED_VALUES => [
+                                       'preferencestoken' => [
+                                               'apiwarn-deprecation-withreplacement',
+                                               $this->getModulePrefix() . "prop=preferencestoken",
+                                               'action=query&meta=tokens',
+                                       ]
+                               ],
                        ],
                        'attachedwiki' => null,
                ];
index 4515f7f..a5d06c8 100644 (file)
@@ -172,10 +172,8 @@ class ApiQueryUsers extends ApiQueryBase {
                                $this->addJoinConds( [ 'user_groups' => [ 'INNER JOIN', 'ug_user=user_id' ] ] );
                                $this->addFields( [ 'user_name' ] );
                                $this->addFields( UserGroupMembership::selectFields() );
-                               if ( !$this->getConfig()->get( 'DisableUserGroupExpiry' ) ) {
-                                       $this->addWhere( 'ug_expiry IS NULL OR ug_expiry >= ' .
-                                               $db->addQuotes( $db->timestamp() ) );
-                               }
+                               $this->addWhere( 'ug_expiry IS NULL OR ug_expiry >= ' .
+                                       $db->addQuotes( $db->timestamp() ) );
                                $userGroupsRes = $this->select( __METHOD__ );
 
                                foreach ( $userGroupsRes as $row ) {
index 4f3fc0d..a4b51b5 100644 (file)
@@ -43,11 +43,11 @@ class ApiResetPassword extends ApiBase {
                return $this->hasAnyRoutes;
        }
 
-       protected function getDescriptionMessage() {
+       protected function getExtendedDescription() {
                if ( !$this->hasAnyRoutes() ) {
-                       return 'apihelp-resetpassword-description-noroutes';
+                       return 'apihelp-resetpassword-extended-description-noroutes';
                }
-               return parent::getDescriptionMessage();
+               return parent::getExtendedDescription();
        }
 
        public function execute() {
old mode 100755 (executable)
new mode 100644 (file)
index 2d6d9be..7e3f1ac
  */
 class ApiSetPageLanguage extends ApiBase {
        // Check if change language feature is enabled
-       protected function getDescriptionMessage() {
+       protected function getExtendedDescription() {
                if ( !$this->getConfig()->get( 'PageLanguageUseDB' ) ) {
-                       return 'apihelp-setpagelanguage-description-disabled';
+                       return 'apihelp-setpagelanguage-extended-description-disabled';
                }
-               return parent::getDescriptionMessage();
+               return parent::getExtendedDescription();
        }
 
        /**
index d857e4a..2a364d9 100644 (file)
@@ -58,7 +58,7 @@ class ApiUserrights extends ApiBase {
                $params = $this->extractRequestParams();
 
                // Figure out expiry times from the input
-               // @todo Remove this isset check when removing $wgDisableUserGroupExpiry
+               // $params['expiry'] may not be set in subclasses
                if ( isset( $params['expiry'] ) ) {
                        $expiry = (array)$params['expiry'];
                } else {
index a6f1a28..164a7c2 100644 (file)
@@ -10,7 +10,8 @@
                        "Macofe",
                        "Danny B.",
                        "LordMsz",
-                       "Dvorapa"
+                       "Dvorapa",
+                       "Matěj Suchánek"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Dokumentace]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api E-mailová konference]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Oznámení k API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Chyby a požadavky]\n</div>\n<strong>Stav:</strong> Všechny funkce uvedené na této stránce by měly fungovat, ale API se stále aktivně vyvíjí a může se kdykoli změnit. Upozornění na změny získáte přihlášením se k [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ e-mailové konferenci mediawiki-api-announce].\n\n<strong>Chybné požadavky:</strong> Pokud jsou do API zaslány chybné požadavky, bude vrácena HTTP hlavička s klíčem „MediaWiki-API-Error“ a hodnota této hlavičky a chybový kód budou nastaveny na stejnou hodnotu. Více informací najdete [[mw:Special:MyLanguage/API:Errors_and_warnings|v dokumentaci]].\n\n<strong>Testování:</strong> Pro jednoduché testování požadavků na API zkuste [[Special:ApiSandbox]].",
@@ -80,7 +81,7 @@
        "apihelp-edit-param-nocreate": "Pokud stránka neexistuje, vrátit chybu.",
        "apihelp-edit-param-watch": "Přidat stránku na seznam sledovaných.",
        "apihelp-edit-param-unwatch": "Odstranit stránku ze seznamu sledovaných.",
-       "apihelp-edit-param-watchlist": "Bezpodmíněnečně přidat nebo odstranit stránku ze sledovaných stránek aktuálního uživatele, použít nastavení nebo neměnit sledování.",
+       "apihelp-edit-param-watchlist": "Bezpodmínečně přidat nebo odstranit stránku ze sledovaných stránek aktuálního uživatele, použít nastavení nebo neměnit sledování.",
        "apihelp-edit-param-redirect": "Automaticky opravit přesměrování.",
        "apihelp-edit-example-edit": "Upravit stránku.",
        "apihelp-emailuser-description": "Poslat uživateli e-mail.",
index 074d69e..c8aeca4 100644 (file)
                        "Predatorix",
                        "Luke081515",
                        "Eddie",
-                       "Zenith"
+                       "Zenith",
+                       "Tacsipacsi"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Dokumentation]]\n* [[mw:Special:MyLanguage/API:FAQ|Häufig gestellte Fragen]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mailingliste]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API-Ankündigungen]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Fehlerberichte und Anfragen]\n</div>\n<strong>Status:</strong> Alle auf dieser Seite gezeigten Funktionen sollten funktionieren, allerdings ist die API in aktiver Entwicklung und kann sich zu jeder Zeit ändern. Abonniere die [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ MediaWiki-API-Ankündigungs-Mailingliste], um über Aktualisierungen informiert zu werden.\n\n<strong>Fehlerhafte Anfragen:</strong> Wenn fehlerhafte Anfragen an die API gesendet werden, wird ein HTTP-Header mit dem Schlüssel „MediaWiki-API-Error“ gesendet. Der Wert des Headers und der Fehlercode werden auf den gleichen Wert gesetzt. Für weitere Informationen siehe [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Fehler und Warnungen]].\n\n<strong>Testen:</strong> Zum einfachen Testen von API-Anfragen, siehe [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Auszuführende Aktion.",
        "apihelp-main-param-format": "Format der Ausgabe.",
        "apihelp-main-param-maxlag": "maxlag kann verwendet werden, wenn MediaWiki auf einem datenbankreplizierten Cluster installiert ist. Um weitere Replikationsrückstände zu verhindern, lässt dieser Parameter den Client warten, bis der Replikationsrückstand kleiner als der angegebene Wert (in Sekunden) ist. Bei einem größerem Rückstand wird der Fehlercode <samp>maxlag</samp> zurückgegeben mit einer Nachricht wie <samp>Waiting for $host: $lag seconds lagged</samp>.<br />Siehe [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Handbuch: Maxlag parameter]] für weitere Informationen.",
@@ -37,7 +37,7 @@
        "apihelp-main-param-uselang": "Zu verwendende Sprache für Nachrichtenübersetzungen. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> mit <kbd>siprop=languages</kbd> gibt eine Liste der Sprachcodes zurück. Gib <kbd>user</kbd> zum Verwenden der aktuellen Benutzerspracheinstellung oder <kbd>content</kbd> an, um die Inhaltssprache des Wikis zu verwenden.",
        "apihelp-main-param-errorformat": "Zu verwendendes Format zur Ausgabe von Warnungen und Fehlertexten.\n; plaintext: Wikitext mit entfernten HTML-Tags und ersetzten Entitäten.\n; wikitext: Ungeparster Wikitext.\n; html: HTML.\n; raw: Nachrichtenschlüssel und Parameter.\n; none: Keine Textausgabe, nur die Fehlercodes.\n; bc: Vor MediaWiki 1.29 verwendetes Format. <var>errorlang</var> und <var>errorsuselocal</var> werden ignoriert.",
        "apihelp-main-param-errorsuselocal": "Falls angegeben, verwenden Fehlertexte lokalisierte Nachrichten aus dem {{ns:MediaWiki}}-Namensraum.",
-       "apihelp-block-description": "Einen Benutzer sperren.",
+       "apihelp-block-summary": "Sperrt einen Benutzer.",
        "apihelp-block-param-user": "Benutzername, IP-Adresse oder IP-Adressbereich, der gesperrt werden soll. Kann nicht zusammen mit <var>$1userid</var> verwendet werden.",
        "apihelp-block-param-userid": "Die zu sperrende Benutzerkennung. Kann nicht zusammen mit <var>$1user</var> verwendet werden.",
        "apihelp-block-param-expiry": "Sperrdauer. Kann relativ (z.&nbsp;B. <kbd>5 months</kbd> oder <kbd>2 weeks</kbd>) oder absolut (z.&nbsp;B. <kbd>2014-09-18T12:34:56Z</kbd>) sein. Wenn auf <kbd>infinite</kbd>, <kbd>indefinite</kbd> oder <kbd>never</kbd> gesetzt, ist die Sperre unbegrenzt.",
        "apihelp-block-param-tags": "Auf den Eintrag im Sperr-Logbuch anzuwendende Änderungsmarkierungen.",
        "apihelp-block-example-ip-simple": "IP <kbd>192.0.2.5</kbd> für drei Tage mit der Begründung „First strike“ (erste Verwarnung) sperren",
        "apihelp-block-example-user-complex": "Benutzer <kbd>Vandal</kbd> unbeschränkt sperren mit der Begründung „Vandalism“ (Vandalismus), Erstellung neuer Benutzerkonten sowie Versand von E-Mails verhindern.",
-       "apihelp-changeauthenticationdata-description": "Ändert die Authentifizierungsdaten für den aktuellen Benutzer.",
        "apihelp-changeauthenticationdata-example-password": "Versucht, das Passwort des aktuellen Benutzers in <kbd>ExamplePassword</kbd> zu ändern.",
-       "apihelp-checktoken-description": "Überprüft die Gültigkeit eines über <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> erhaltenen Tokens.",
        "apihelp-checktoken-param-type": "Typ des Tokens, das getestet werden soll.",
        "apihelp-checktoken-param-token": "Token, das getestet werden soll.",
        "apihelp-checktoken-param-maxtokenage": "Maximal erlaubtes Alter des Tokens in Sekunden.",
        "apihelp-checktoken-example-simple": "Überprüft die Gültigkeit des <kbd>csrf</kbd>-Tokens.",
-       "apihelp-clearhasmsg-description": "Löschen des <code>hasmsg</code>-Flags („hat Nachrichten“-Flag) für den aktuellen Benutzer.",
        "apihelp-clearhasmsg-example-1": "<code>hasmsg</code>-Flags für den aktuellen Benutzer löschen",
        "apihelp-clientlogin-example-login": "Startet den Prozess der Anmeldung in dem Wiki als Benutzer <kbd>Example</kbd> mit dem Passwort <kbd>ExamplePassword</kbd>.",
-       "apihelp-compare-description": "Abrufen des Unterschieds zwischen zwei Seiten.\n\nDu musst eine Versionsnummer, einen Seitentitel oder eine Seitennummer für „from“ als auch „to“ angeben.",
+       "apihelp-compare-summary": "Ruft den Unterschied zwischen zwei Seiten ab.",
        "apihelp-compare-param-fromtitle": "Erster zu vergleichender Titel.",
        "apihelp-compare-param-fromid": "Erste zu vergleichende Seitennummer.",
        "apihelp-compare-param-fromrev": "Erste zu vergleichende Version.",
        "apihelp-compare-param-totitle": "Zweiter zu vergleichender Titel.",
        "apihelp-compare-param-toid": "Zweite zu vergleichende Seitennummer.",
        "apihelp-compare-param-torev": "Zweite zu vergleichende Version.",
+       "apihelp-compare-paramvalue-prop-title": "Die Seitentitel der Versionen „Von“ und „Nach“.",
        "apihelp-compare-example-1": "Unterschied zwischen Version 1 und 2 abrufen",
-       "apihelp-createaccount-description": "Erstellen eines neuen Benutzerkontos.",
+       "apihelp-createaccount-summary": "Erstellt ein neues Benutzerkonto.",
        "apihelp-createaccount-param-preservestate": "Falls <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> für <samp>hasprimarypreservedstate</samp> wahr ausgegeben hat, sollten Anfragen, die als <samp>primary-required</samp> markiert wurden, ausgelassen werden. Falls ein nicht-leerer Wert für <samp>preservedusername</samp> zurückgegeben wurde, muss dieser Benutzername für den Parameter <var>username</var> verwendet werden.",
        "apihelp-createaccount-param-name": "Benutzername.",
        "apihelp-createaccount-param-password": "Passwort (wird ignoriert, wenn <var>$1mailpassword</var> angegeben ist).",
@@ -84,7 +82,7 @@
        "apihelp-createaccount-param-language": "Festzulegender standardmäßiger Sprachcode für den Benutzer (optional, Standard ist Inhaltssprache).",
        "apihelp-createaccount-example-pass": "Benutzer <kbd>testuser</kbd> mit dem Passwort <kbd>test123</kbd> erstellen.",
        "apihelp-createaccount-example-mail": "Benutzer <kbd>testmailuser</kbd> erstellen und zufällig generiertes Passwort per E-Mail verschicken.",
-       "apihelp-delete-description": "Löschen einer Seite.",
+       "apihelp-delete-summary": "Löscht eine Seite.",
        "apihelp-delete-param-title": "Titel der Seite, die gelöscht werden soll. Kann nicht zusammen mit <var>$1pageid</var> verwendet werden.",
        "apihelp-delete-param-pageid": "Seitennummer der Seite, die gelöscht werden soll. Kann nicht zusammen mit <var>$1title</var> verwendet werden.",
        "apihelp-delete-param-reason": "Löschbegründung. Falls nicht festgelegt, wird eine automatisch generierte Begründung verwendet.",
@@ -95,8 +93,7 @@
        "apihelp-delete-param-oldimage": "Name des alten zu löschenden Bildes, wie von [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]] angegeben.",
        "apihelp-delete-example-simple": "<kbd>Main Page</kbd> löschen.",
        "apihelp-delete-example-reason": "<kbd>Main Page</kbd> löschen mit der Begründung <kbd>Preparing for move</kbd>.",
-       "apihelp-disabled-description": "Dieses Modul wurde deaktiviert.",
-       "apihelp-edit-description": "Erstellen und Bearbeiten von Seiten.",
+       "apihelp-disabled-summary": "Dieses Modul wurde deaktiviert.",
        "apihelp-edit-param-title": "Titel der Seite, die bearbeitet werden soll. Kann nicht zusammen mit <var>$1pageid</var> verwendet werden.",
        "apihelp-edit-param-pageid": "Seitennummer der Seite, die bearbeitet werden soll. Kann nicht zusammen mit <var>$1title</var> verwendet werden.",
        "apihelp-edit-param-section": "Abschnittsnummer. <kbd>0</kbd> für die Einleitung, <kbd>new</kbd> für einen neuen Abschnitt.",
        "apihelp-edit-example-edit": "Eine Seite bearbeiten",
        "apihelp-edit-example-prepend": "<kbd>_&#95;NOTOC_&#95;</kbd> bei einer Seite voranstellen",
        "apihelp-edit-example-undo": "Versionen 13579 bis 13585 mit automatischer Zusammenfassung rückgängig machen",
-       "apihelp-emailuser-description": "E-Mail an einen Benutzer senden.",
        "apihelp-emailuser-param-target": "Benutzer, an den die E-Mail gesendet werden soll.",
        "apihelp-emailuser-param-subject": "Betreffzeile.",
        "apihelp-emailuser-param-text": "E-Mail-Inhalt.",
        "apihelp-emailuser-param-ccme": "Eine Kopie dieser E-Mail an mich senden.",
        "apihelp-emailuser-example-email": "Eine E-Mail an den Benutzer <kbd>WikiSysop</kbd> mit dem Text <kbd>Content</kbd> senden.",
-       "apihelp-expandtemplates-description": "Alle Vorlagen innerhalb des Wikitextes expandieren.",
        "apihelp-expandtemplates-param-title": "Titel der Seite.",
        "apihelp-expandtemplates-param-text": "Zu konvertierender Wikitext.",
        "apihelp-expandtemplates-param-revid": "Versionsnummer, die für die Anzeige von <nowiki>{{REVISIONID}}</nowiki> und ähnlichen Variablen verwendet wird.",
        "apihelp-expandtemplates-param-includecomments": "Ob HTML-Kommentare in der Ausgabe eingeschlossen werden sollen.",
        "apihelp-expandtemplates-param-generatexml": "XML-Parserbaum erzeugen (ersetzt durch $1prop=parsetree).",
        "apihelp-expandtemplates-example-simple": "Den Wikitext <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd> expandieren.",
-       "apihelp-feedcontributions-description": "Gibt einen Benutzerbeiträge-Feed zurück.",
        "apihelp-feedcontributions-param-feedformat": "Das Format des Feeds.",
        "apihelp-feedcontributions-param-user": "Von welchen Benutzern die Beiträge abgerufen werden sollen.",
        "apihelp-feedcontributions-param-namespace": "Auf welchen Namensraum die Beiträge begrenzt werden sollen.",
        "apihelp-feedcontributions-param-hideminor": "Blendet Kleinigkeiten aus.",
        "apihelp-feedcontributions-param-showsizediff": "Zeigt den Größenunterschied zwischen Versionen an.",
        "apihelp-feedcontributions-example-simple": "Beiträge für die Benutzer <kbd>Beispiel<kbd> zurückgeben",
-       "apihelp-feedrecentchanges-description": "Gibt einen Letzte-Änderungen-Feed zurück.",
        "apihelp-feedrecentchanges-param-feedformat": "Das Format des Feeds.",
        "apihelp-feedrecentchanges-param-namespace": "Namensraum, auf den die Ergebnisse beschränkt werden sollen.",
        "apihelp-feedrecentchanges-param-invert": "Alle Namensräume außer dem ausgewählten.",
        "apihelp-feedrecentchanges-param-categories_any": "Zeigt stattdessen nur Änderungen auf Seiten in einer dieser Kategorien.",
        "apihelp-feedrecentchanges-example-simple": "Letzte Änderungen anzeigen",
        "apihelp-feedrecentchanges-example-30days": "Letzte Änderungen für 30 Tage anzeigen",
-       "apihelp-feedwatchlist-description": "Gibt einen Beobachtungslisten-Feed zurück.",
        "apihelp-feedwatchlist-param-feedformat": "Das Format des Feeds.",
        "apihelp-feedwatchlist-param-hours": "Seiten auflisten, die innerhalb dieser Anzahl Stunden ab jetzt geändert wurden.",
        "apihelp-feedwatchlist-param-linktosections": "Verlinke direkt zum veränderten Abschnitt, wenn möglich.",
        "apihelp-feedwatchlist-example-default": "Den Beobachtungslisten-Feed anzeigen",
        "apihelp-feedwatchlist-example-all6hrs": "Zeige alle Änderungen an beobachteten Seiten der letzten 6 Stunden.",
-       "apihelp-filerevert-description": "Eine Datei auf eine alte Version zurücksetzen.",
        "apihelp-filerevert-param-filename": "Ziel-Datei, ohne das Datei:-Präfix.",
        "apihelp-filerevert-param-comment": "Hochladekommentar.",
        "apihelp-filerevert-param-archivename": "Archivname der Version, auf die die Datei zurückgesetzt werden soll.",
        "apihelp-filerevert-example-revert": "<kbd>Wiki.png</kbd> auf die Version vom <kbd>2011-03-05T15:27:40Z</kbd> zurücksetzen.",
-       "apihelp-help-description": "Hilfe für die angegebenen Module anzeigen.",
        "apihelp-help-param-modules": "Module, zu denen eine Hilfe angezeigt werden soll (Werte der Parameter <var>action</var> und <var>format</var> oder <kbd>main</kbd>). Kann Submodule mit einem <kbd>+</kbd> angeben.",
        "apihelp-help-param-submodules": "Hilfe für Submodule des benannten Moduls einschließen.",
        "apihelp-help-param-recursivesubmodules": "Hilfe für Submodule rekursiv einschließen.",
        "apihelp-help-example-recursive": "Alle Hilfen in einer Seite",
        "apihelp-help-example-help": "Hilfe für das Hilfemodul selbst",
        "apihelp-help-example-query": "Hilfe für zwei Abfrage-Submodule",
-       "apihelp-imagerotate-description": "Ein oder mehrere Bilder drehen.",
        "apihelp-imagerotate-param-rotation": "Anzahl der Grad, um die das Bild im Uhrzeigersinn gedreht werden soll.",
        "apihelp-imagerotate-param-tags": "Auf den Eintrag im Datei-Logbuch anzuwendende Markierungen",
        "apihelp-imagerotate-example-simple": "<kbd>Datei:Beispiel.png</kbd> um <kbd>90</kbd> Grad drehen.",
        "apihelp-imagerotate-example-generator": "Alle Bilder in der <kbd>Kategorie:Flip</kbd> um <kbd>180</kbd> Grad drehen.",
-       "apihelp-import-description": "Importiert eine Seite aus einem anderen Wiki oder von einer XML-Datei.\n\nBitte beachte, dass der HTTP-POST-Vorgang als Dateiupload ausgeführt werden muss (z.B. durch multipart/form-data), um eine Datei über den <var>xml</var>-Parameter zu senden.",
        "apihelp-import-param-summary": "Importzusammenfassung des Logbucheintrags.",
        "apihelp-import-param-xml": "Hochgeladene XML-Datei.",
        "apihelp-import-param-interwikisource": "Für Interwiki-Importe: Wiki, von dem importiert werden soll.",
        "apihelp-import-param-rootpage": "Als Unterseite dieser Seite importieren. Kann nicht zusammen mit <var>$1namespace</var> verwendet werden.",
        "apihelp-import-param-tags": "Auf den Eintrag im Import-Logbuch und die Nullversion bei den importierten Seiten anzuwendende Änderungsmarkierungen.",
        "apihelp-import-example-import": "Importiere [[meta:Help:ParserFunctions]] mit der kompletten Versionsgeschichte in den Namensraum 100.",
-       "apihelp-linkaccount-description": "Verbindet ein Benutzerkonto von einem Drittanbieter mit dem aktuellen Benutzer.",
-       "apihelp-login-description": "Anmelden und Authentifizierungs-Cookies beziehen.\n\nDiese Aktion sollte nur in Kombination mit [[Special:BotPasswords]] verwendet werden. Die Verwendung für die Anmeldung beim Hauptkonto ist veraltet und kann ohne Warnung fehlschlagen. Um sich sicher beim Hauptkonto anzumelden, verwende <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
        "apihelp-login-param-name": "Benutzername.",
        "apihelp-login-param-password": "Passwort.",
        "apihelp-login-param-domain": "Domain (optional).",
        "apihelp-login-param-token": "Anmeldetoken, den du in der ersten Anfrage erhalten hast.",
        "apihelp-login-example-gettoken": "Ruft einen Anmelde-Token ab",
        "apihelp-login-example-login": "Anmelden",
-       "apihelp-logout-description": "Abmelden und alle Sitzungsdaten löschen.",
        "apihelp-logout-example-logout": "Meldet den aktuellen Benutzer ab",
-       "apihelp-managetags-description": "Ermöglicht Verwaltungsaufgaben zu Änderungsmarkierungen.",
        "apihelp-managetags-param-operation": "Welcher Vorgang soll ausgeführt werden:\n;create:Ein neues Änderungsschlagwort zum manuellen Gebrauch erstellen.\n;delete:Ein Änderungsschlagwort aus der Datenbank entfernen. Einschließlich dem Entfernen des Schlagworts von allen Überarbeitungen, kürzlichen Änderungseinträgen und Logbuch-Einträgen, in denen es genutzt wird.\n;activate:Ein Änderungsschlagwort aktivieren und damit Benutzern erlauben es manuell anzuwenden.\n;deactive:Ein Änderungsschlagwort deaktivieren und damit die manuelle Verwendung durch Benutzer unterbinden.",
        "apihelp-managetags-param-tag": "Schlagwort zum Erstellen, Löschen, Aktivieren oder Deaktivieren. Zum Erstellen darf das Schlagwort noch nicht vorhanden sein. Zur Löschung muss das Schlagwort vorhanden sein. Zur Aktivierung muss das Schlagwort vorhanden sein, darf aber nicht von einer Erweiterung in Gebrauch sein. Zur Deaktivierung muss das Schlagwort gegenwärtig aktiv und manuell definiert sein.",
        "apihelp-managetags-param-reason": "optionale Begründung für das Erstellen, Löschen, Aktivieren oder Deaktivieren der Markierung.",
        "apihelp-managetags-example-delete": "Löscht die <kbd>vandlaism</kbd>-Markierung mit der Begründung <kbd>Misspelt</kbd>.",
        "apihelp-managetags-example-activate": "Aktiviert eine Markierung namens <kbd>spam</kbd> mit der Begründung <kbd>For use in edit patrolling</kbd> (für die Eingangskontrolle).",
        "apihelp-managetags-example-deactivate": "Deaktiviert eine Markierung namens <kbd>spam</kbd> mit der Begründung <kbd>No longer required</kbd> (nicht mehr benötigt).",
-       "apihelp-mergehistory-description": "Führt Versionsgeschichten von Seiten zusammen.",
        "apihelp-mergehistory-param-reason": "Grund für die Zusammenführung der Versionsgeschichten",
        "apihelp-mergehistory-example-merge": "Fügt alle Versionen von <kbd>Oldpage</kbd> der Versionsgeschichte von <kbd>Newpage</kbd> hinzu.",
-       "apihelp-move-description": "Eine Seite verschieben.",
        "apihelp-move-param-from": "Titel der zu verschiebenden Seite. Kann nicht zusammen mit <var>$1fromid</var> verwendet werden.",
        "apihelp-move-param-fromid": "Seitenkennung der zu verschiebenden Seite. Kann nicht zusammen mit <var>$1from</var> verwendet werden.",
        "apihelp-move-param-to": "Titel, zu dem die Seite umbenannt werden soll.",
        "apihelp-move-param-ignorewarnings": "Alle Warnungen ignorieren.",
        "apihelp-move-param-tags": "Auf den Eintrag im Verschiebungs-Logbuch und die Nullversion der Zielseite anzuwendende Änderungsmarkierungen.",
        "apihelp-move-example-move": "<kbd>Badtitle</kbd> nach <kbd>Goodtitle</kbd> verschieben, ohne eine Weiterleitung zu erstellen.",
-       "apihelp-opensearch-description": "Das Wiki mithilfe des OpenSearch-Protokolls durchsuchen.",
        "apihelp-opensearch-param-search": "Such-Zeichenfolge.",
        "apihelp-opensearch-param-limit": "Maximale Anzahl zurückzugebender Ergebnisse.",
        "apihelp-opensearch-param-namespace": "Zu durchsuchende Namensräume.",
        "apihelp-opensearch-param-format": "Das Format der Ausgabe.",
        "apihelp-opensearch-param-warningsaserror": "Wenn Warnungen mit <kbd>format=json</kbd> auftreten, gib einen API-Fehler zurück, anstatt ihn zu ignorieren.",
        "apihelp-opensearch-example-te": "Seiten finden, die mit <kbd>Te</kbd> beginnen.",
-       "apihelp-options-description": "Die Voreinstellungen des gegenwärtigen Benutzers ändern.",
        "apihelp-options-param-reset": "Setzt die Einstellungen auf Websitestandards zurück.",
        "apihelp-options-param-resetkinds": "Liste von zurückzusetzenden Optionstypen, wenn die <var>$1reset</var>-Option ausgewählt ist.",
        "apihelp-options-param-change": "Liste von Änderungen, die mit name=wert formatiert sind (z.&nbsp;B. skin=vector). Falls kein Wert angegeben wurde (ohne einem Gleichheitszeichen), z.&nbsp;B. Optionname|AndereOption|…, wird die Option auf ihren Standardwert zurückgesetzt. Falls ein übergebener Wert ein Trennzeichen enthält (<kbd>|</kbd>), verwende den [[Special:ApiHelp/main#main/datatypes|alternativen Mehrfachwerttrenner]] zur korrekten Bedienung.",
        "apihelp-options-example-reset": "Alle Einstellungen zurücksetzen",
        "apihelp-options-example-change": "Ändert die Einstellungen <kbd>skin</kbd> und <kbd>hideminor</kbd>.",
        "apihelp-options-example-complex": "Setzt alle Einstellungen zurück, dann <kbd>skin</kbd> und <kbd>nickname</kbd> festlegen.",
-       "apihelp-paraminfo-description": "Ruft Informationen über API-Module ab.",
        "apihelp-paraminfo-param-modules": "Liste von Modulnamen (Werte der Parameter <var>action</var> und <var>format</var> oder <kbd>main</kbd>). Kann Untermodule mit einem <kbd>+</kbd> oder alle Untermodule mit <kbd>+*</kbd> oder alle Untermodule rekursiv mit <kbd>+**</kbd> bestimmen.",
        "apihelp-paraminfo-param-helpformat": "Format der Hilfe-Zeichenfolgen.",
        "apihelp-paraminfo-param-querymodules": "Liste von Abfragemodulnamen (Werte von <var>prop</var>-, <var>meta</var>- oder <var>list</var>-Parameter). Benutze <kbd>$1modules=query+foo</kbd> anstatt <kbd>$1querymodules=foo</kbd>.",
        "apihelp-parse-paramvalue-prop-wikitext": "Gibt den originalen Wikitext zurück, der geparst wurde.",
        "apihelp-parse-paramvalue-prop-properties": "Gibt verschiedene Eigenschaften zurück, die im geparsten Wikitext definiert sind.",
        "apihelp-parse-paramvalue-prop-parsewarnings": "Gibt die Warnungen aus, die beim Parsen des Inhalts aufgetreten sind.",
+       "apihelp-parse-param-wrapoutputclass": "Zu verwendende CSS-Klasse, in der die Parserausgabe verpackt werden soll.",
        "apihelp-parse-param-section": "Parst nur den Inhalt dieser Abschnittsnummer.\n\nFalls <kbd>new</kbd>, parst <var>$1text</var> und <var>$1sectiontitle</var>, als ob ein neuer Abschnitt der Seite hinzugefügt wird.\n\n<kbd>new</kbd> ist nur erlaubt mit der Angabe <var>text</var>.",
        "apihelp-parse-param-sectiontitle": "Überschrift des neuen Abschnittes, wenn <var>section</var> = <kbd>new</kbd> ist.\n\nAnders als beim Bearbeiten der Seite wird der Parameter nicht durch die <var>summary</var> ersetzt, wenn er weggelassen oder leer ist.",
        "apihelp-parse-param-disablepp": "Benutze <var>$1disablelimitreport</var> stattdessen.",
        "apihelp-parse-param-preview": "Im Vorschaumodus parsen.",
        "apihelp-parse-param-sectionpreview": "Im Abschnitt Vorschau-Modus parsen (aktiviert ebenfalls den Vorschau-Modus)",
        "apihelp-parse-param-disabletoc": "Inhaltsverzeichnis in der Ausgabe weglassen.",
+       "apihelp-parse-param-useskin": "Wendet die ausgewählte Benutzeroberfläche auf die Parserausgabe an. Kann Auswirkungen auf die folgenden Eigenschaften haben: <kbd>langlinks</kbd>, <kbd>headitems</kbd>, <kbd>modules</kbd>, <kbd>jsconfigvars</kbd>, <kbd>indicators</kbd>.",
        "apihelp-parse-param-contentmodel": "Inhaltsmodell des eingegebenen Textes. Fall ausgelassen, muss $1title angegeben werden und Standardwert wird das Modell des angegebenen Titels. Ist nur gültig im Zusammenhang mit $1text.",
        "apihelp-parse-example-page": "Eine Seite parsen.",
        "apihelp-parse-example-text": "Wikitext parsen.",
        "apihelp-parse-example-texttitle": "Parst den Wikitext über die Eingabe des Seitentitels.",
        "apihelp-parse-example-summary": "Parst eine Zusammenfassung.",
-       "apihelp-patrol-description": "Kontrolliert eine Seite oder Version.",
        "apihelp-patrol-param-rcid": "Letzte-Änderungen-Kennung, die kontrolliert werden soll.",
        "apihelp-patrol-param-revid": "Versionskennung, die kontrolliert werden soll.",
        "apihelp-patrol-param-tags": "Auf den Kontroll-Logbuch-Eintrag anzuwendende Änderungsmarkierungen.",
        "apihelp-patrol-example-rcid": "Kontrolliert eine kürzlich getätigte Änderung.",
        "apihelp-patrol-example-revid": "Kontrolliert eine Version",
-       "apihelp-protect-description": "Ändert den Schutzstatus einer Seite.",
        "apihelp-protect-param-title": "Titel der Seite, die du (ent-)sperren möchtest. Kann nicht zusammen mit $1pageid verwendet werden.",
        "apihelp-protect-param-pageid": "Seitenkennung der Seite, die du (ent-)sperren möchtest. Kann nicht zusammen mit $1title verwendet werden.",
        "apihelp-protect-param-protections": "Listet die Schutzebenen nach dem Format <kbd>Aktion=Ebene</kbd> (z.&nbsp;B. <kbd>edit=sysop</kbd>) auf. Die Ebene <kbd>all</kbd> bedeutet, dass jeder die Aktion ausführen darf, z.&nbsp;B. keine Beschränkung.\n\n<strong>HINWEIS:</strong> Wenn eine Aktion nicht angegeben wird, wird deren Schutz entfernt.",
        "apihelp-protect-param-expiry": "Zeitstempel des Schutzablaufs. Wenn nur ein Zeitstempel übergeben wird, ist dieser für alle Seitenschutze gültig. Um eine unendliche Schutzdauer festzulegen, kannst du die Werte <kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd> oder <kbd>never</kbd> übergeben.",
        "apihelp-protect-param-reason": "Grund für den Seitenschutz oder dessen Aufhebung.",
        "apihelp-protect-param-tags": "Auf den Seitenschutz-Logbuch-Eintrag anzuwendende Änderungsmarkierungen.",
-       "apihelp-protect-param-cascade": "Aktiviert den Kaskadenschutz (z.&nbsp;B. werden eingebundene Vorlagen und Bilder in dieser Seite geschützt). Wird ignoriert, falls keine der angegebenen Schutzebenen Kaskaden unterstützt.",
+       "apihelp-protect-param-cascade": "Aktiviert den Kaskadenschutz (d.&nbsp;h. in dieser Seite eingebundene Vorlagen und Bilder werden geschützt). Wird ignoriert, falls keine der angegebenen Schutzebenen Kaskaden unterstützt.",
        "apihelp-protect-param-watch": "Wenn vorhanden, fügt dieser Parameter die zu (ent-)sperrende Seite der Beobachtungsliste des aktuellen Benutzers hinzu.",
        "apihelp-protect-param-watchlist": "Die Seite bedingungslos zur Beobachtungsliste des aktuellen Benutzers hinzufügen oder von ihr entfernen, Einstellungen verwenden oder Beobachtung nicht ändern.",
        "apihelp-protect-example-protect": "Schützt eine Seite",
        "apihelp-protect-example-unprotect": "Entsperrt eine Seite, indem die Einschränkungen durch den Schutz auf <kbd>all</kbd> gestellt werden (z.&nbsp;B. darf jeder die Aktion ausführen).",
        "apihelp-protect-example-unprotect2": "Eine Seite entsperren, indem keine Einschränkungen übergeben werden",
-       "apihelp-purge-description": "Setzt den Cache der angegebenen Seiten zurück.",
        "apihelp-purge-param-forcelinkupdate": "Aktualisiert die Linktabellen.",
        "apihelp-purge-param-forcerecursivelinkupdate": "Aktualisiert die Linktabelle der Seite und alle Linktabellen der Seiten, die sie als Vorlage einbinden.",
        "apihelp-purge-example-simple": "Purgt die <kbd>Main Page</kbd> und die <kbd>API</kbd>-Seite.",
        "apihelp-purge-example-generator": "Purgt die ersten 10 Seiten des Hauptnamensraums.",
-       "apihelp-query-description": "Bezieht Daten von und über MediaWiki.\n\nAlle Änderungsvorgänge müssen unter Angabe eines Tokens ablaufen, um Missbrauch durch böswillige Anwendungen vorzubeugen.",
        "apihelp-query-param-prop": "Zurückzugebende Eigenschaften der abgefragten Seiten.",
        "apihelp-query-param-list": "Welche Listen abgerufen werden sollen.",
        "apihelp-query-param-meta": "Zurückzugebende Metadaten.",
        "apihelp-query-param-rawcontinue": "Gibt <samp>query-continue</samp>-Rohdaten zur Fortsetzung zurück.",
        "apihelp-query-example-revisions": "Bezieht [[Special:ApiHelp/query+siteinfo|Seiteninformationen]] und [[Special:ApiHelp/query+revisions|Versionen]] der <kbd>Main Page</kbd>.",
        "apihelp-query-example-allpages": "Bezieht Versionen von Seiten, die mit <kbd>API/</kbd> beginnen.",
-       "apihelp-query+allcategories-description": "Alle Kategorien aufzählen.",
        "apihelp-query+allcategories-param-from": "Kategorie, bei der die Auflistung beginnen soll.",
        "apihelp-query+allcategories-param-to": "Kategorie, bei der die Auflistung enden soll.",
        "apihelp-query+allcategories-param-prefix": "Listet alle Kategorien auf, die mit dem angegebenen Wert beginnen.",
        "apihelp-query+allcategories-paramvalue-prop-hidden": "Markiert über <code>_&#95;HIDDENCAT_&#95;</code> versteckte Kategorien.",
        "apihelp-query+allcategories-example-size": "Listet Kategorien mit der Anzahl ihrer Einträge auf.",
        "apihelp-query+allcategories-example-generator": "Bezieht Informationen über die Kategorieseite selbst für Kategorien, die mit <kbd>List</kbd> beginnen.",
-       "apihelp-query+alldeletedrevisions-description": "Bezieht alle gelöschten Versionen eines Benutzers oder eines Namensraumes.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Darf nur mit <var>$3user</var> verwendet werden.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Kann nicht zusammen mit <var>$3user</var> benutzt werden.",
        "apihelp-query+alldeletedrevisions-param-start": "Der Zeitstempel, bei dem die Auflistung beginnen soll.",
        "apihelp-query+alldeletedrevisions-param-generatetitles": "Wenn als Generator verwendet, werden eher Titel als Bearbeitungs-IDs erzeugt.",
        "apihelp-query+alldeletedrevisions-example-user": "Liste die letzten 50 gelöschten Beiträge, sortiert nach Benutzer <kbd>Beispiel</kbd>.",
        "apihelp-query+alldeletedrevisions-example-ns-main": "Liste die ersten 50 gelöschten Bearbeitungen im Hauptnamensraum.",
-       "apihelp-query+allfileusages-description": "Liste alle Dateiverwendungen, einschließlich nicht-vorhandener.",
        "apihelp-query+allfileusages-param-from": "Titel der Datei, bei der die Aufzählung beginnen soll.",
        "apihelp-query+allfileusages-param-to": "Titel der Datei, bei der die Aufzählung enden soll.",
        "apihelp-query+allfileusages-param-prefix": "Sucht nach allen Dateititeln, die mit diesem Wert beginnen.",
        "apihelp-query+allfileusages-example-unique": "Einheitliche Dateititel auflisten",
        "apihelp-query+allfileusages-example-unique-generator": "Ruft alle Dateititel ab und markiert die fehlenden.",
        "apihelp-query+allfileusages-example-generator": "Seiten abrufen, die die Dateien enthalten",
-       "apihelp-query+allimages-description": "Alle Bilder nacheinander auflisten.",
        "apihelp-query+allimages-param-sort": "Eigenschaft, nach der sortiert werden soll.",
        "apihelp-query+allimages-param-dir": "Aufzählungsrichtung.",
        "apihelp-query+allimages-param-from": "Der Bildtitel bei dem die Auflistung beginnen soll. Darf nur mit $1sort=Name verwendet werden.",
        "apihelp-query+allimages-example-recent": "Zeigt eine Liste von kürzlich hochgeladenen Dateien ähnlich zu [[Special:NewFiles]].",
        "apihelp-query+allimages-example-mimetypes": "Zeige eine Liste von Dateien mit den MIME-Typen  <kbd>image/png</kbd> oder <kbd>image/gif</kbd>",
        "apihelp-query+allimages-example-generator": "Zeige Informationen über 4 Dateien beginnend mit dem Buchstaben <kbd>T</kbd>.",
-       "apihelp-query+alllinks-description": "Liste alle Verknüpfungen auf, die auf einen bestimmten Namensraum verweisen.",
        "apihelp-query+alllinks-param-from": "Der Titel der Verknüpfung bei der die Auflistung beginnen soll.",
        "apihelp-query+alllinks-param-to": "Der Titel der Verknüpfung bei der die Auflistung enden soll.",
        "apihelp-query+alllinks-param-prefix": "Suche nach allen verknüpften Titeln die mit diesem Wert beginnen.",
        "apihelp-query+alllinks-example-unique": "Einheitlich verlinkte Titel auflisten",
        "apihelp-query+alllinks-example-unique-generator": "Ruft alle verknüpften Titel ab und markiert die fehlenden.",
        "apihelp-query+alllinks-example-generator": "Ruft Seiten ab welche die Verknüpfungen beinhalten.",
-       "apihelp-query+allmessages-description": "Gibt Nachrichten von dieser Website zurück.",
        "apihelp-query+allmessages-param-messages": "Welche Nachrichten ausgegeben werden sollen. <kbd>*</kbd> (Vorgabe) bedeutet alle Nachrichten.",
        "apihelp-query+allmessages-param-prop": "Zurückzugebende Eigenschaften.",
        "apihelp-query+allmessages-param-enableparser": "Setzen, um den Parser zu aktivieren. Dies wird den Wikitext der Nachricht vorverarbeiten (magische Worte ersetzen, Vorlagen berücksichtigen, usw.).",
        "apihelp-query+allmessages-param-prefix": "Gebe Nachrichten mit diesem Präfix zurück.",
        "apihelp-query+allmessages-example-ipb": "Zeige Nachrichten die mit <kbd>ipb-</kbd> beginnen.",
        "apihelp-query+allmessages-example-de": "Zeige Nachrichten <kbd>august</kbd> und <kbd>mainpage</kbd> auf deutsch.",
-       "apihelp-query+allpages-description": "Listet alle Seiten in einem Namensraum nacheinander auf.",
        "apihelp-query+allpages-param-from": "Seitentitel, bei dem die Auflistung beginnen soll.",
        "apihelp-query+allpages-param-to": "Seitentitel, bei dem die Auflistung enden soll.",
        "apihelp-query+allpages-param-prefix": "Nach Seitentiteln suchen, die mit diesem Wert beginnen.",
        "apihelp-query+allpages-example-B": "Bezieht eine Liste von Seiten, die mit dem Buchstaben <kbd>B</kbd> beginnen.",
        "apihelp-query+allpages-example-generator": "Gibt Informationen über vier Seiten mit dem Anfangsbuchstaben <kbd>T</kbd> zurück.",
        "apihelp-query+allpages-example-generator-revisions": "Übermittelt den Inhalt der ersten beiden Seiten, die mit <kbd>Re</kbd> beginnen und keine Weiterleitungen sind.",
-       "apihelp-query+allredirects-description": "Bezieht alle Weiterleitungen in einem Namensraum.",
        "apihelp-query+allredirects-param-from": "Titel der Weiterleitung, bei der die Auflistung beginnen soll.",
        "apihelp-query+allredirects-param-to": "Titel der Weiterleitung, bei der die Auflistung enden soll.",
        "apihelp-query+allredirects-param-prefix": "Weiterleitungen auflisten, deren Zielseiten mit diesem Wert beginnen.",
        "apihelp-query+allredirects-example-unique": "Einzigartige Zielseiten auflisten.",
        "apihelp-query+allredirects-example-unique-generator": "Bezieht alle Zielseiten und markiert die Fehlenden.",
        "apihelp-query+allredirects-example-generator": "Seiten abrufen, die die Weiterleitungen enthalten",
-       "apihelp-query+allrevisions-description": "Liste alle Bearbeitungen.",
        "apihelp-query+allrevisions-param-start": "Der Zeitstempel, bei dem die Auflistung beginnen soll.",
        "apihelp-query+allrevisions-param-end": "Der Zeitstempel, bei dem die Auflistung enden soll.",
        "apihelp-query+allrevisions-param-user": "Liste nur Bearbeitungen von diesem Benutzer auf.",
        "apihelp-query+mystashedfiles-param-prop": "Welche Eigenschaften für die Dateien abgerufen werden sollen.",
        "apihelp-query+mystashedfiles-paramvalue-prop-size": "Ruft die Dateigröße und Bildabmessungen ab.",
        "apihelp-query+mystashedfiles-param-limit": "Wie viele Dateien zurückgegeben werden sollen.",
-       "apihelp-query+alltransclusions-description": "Liste alle Transklusionen auf (eingebettete Seiten die &#123;&#123;x&#125;&#125; benutzen), einschließlich nicht vorhandener.",
        "apihelp-query+alltransclusions-param-from": "Der Titel der Transklusion bei dem die Auflistung beginnen soll.",
        "apihelp-query+alltransclusions-param-to": "Der Titel der Transklusion bei dem die Auflistung enden soll.",
        "apihelp-query+alltransclusions-param-prefix": "Suche nach allen transkludierten Titeln die mit diesem Wert beginnen.",
        "apihelp-query+alltransclusions-example-unique": "Einzigartige eingebundene Titel auflisten.",
        "apihelp-query+alltransclusions-example-unique-generator": "Ruft alle transkludierten Titel ab und markiert die fehlenden.",
        "apihelp-query+alltransclusions-example-generator": "Ruft Seiten ab welche die Transklusionen beinhalten.",
-       "apihelp-query+allusers-description": "Auflisten aller registrierten Benutzer.",
        "apihelp-query+allusers-param-from": "Der Benutzername, bei dem die Auflistung beginnen soll.",
        "apihelp-query+allusers-param-to": "Der Benutzername, bei dem die Auflistung enden soll.",
        "apihelp-query+allusers-param-prefix": "Sucht nach allen Benutzern, die mit diesem Wert beginnen.",
        "apihelp-query+authmanagerinfo-example-login": "Ruft die Anfragen ab, die beim Beginnen einer Anmeldung verwendet werden können.",
        "apihelp-query+authmanagerinfo-example-login-merged": "Ruft die Anfragen ab, die beim Beginnen einer Anmeldung verwendet werden können, mit zusammengeführten Formularfeldern.",
        "apihelp-query+authmanagerinfo-example-securitysensitiveoperation": "Testet, ob die Authentifizierung für die Aktion <kbd>foo</kbd> ausreichend ist.",
-       "apihelp-query+backlinks-description": "Alle Seiten finden, die auf die angegebene Seite verlinken.",
        "apihelp-query+backlinks-param-title": "Zu suchender Titel. Darf nicht zusammen mit <var>$1pageid</var> benutzt werden.",
        "apihelp-query+backlinks-param-pageid": "Zu suchende Seiten-ID. Darf nicht zusammen mit <var>$1title</var> benutzt werden.",
        "apihelp-query+backlinks-param-namespace": "Der aufzulistende Namensraum.",
        "apihelp-query+backlinks-param-redirect": "Falls die verweisende Seite eine Weiterleitung ist, finde alle Seiten, die auf diese Weiterleitung ebenfalls verweisen. Die maximale Grenze wird halbiert.",
        "apihelp-query+backlinks-example-simple": "Links auf <kbd>Main page</kbd> anzeigen.",
        "apihelp-query+backlinks-example-generator": "Hole Informationen über die Seiten, die auf die <kbd>Hauptseite</kbd> verweisen.",
-       "apihelp-query+blocks-description": "Liste alle gesperrten Benutzer und IP-Adressen auf.",
        "apihelp-query+blocks-param-start": "Der Zeitstempel, bei dem die Aufzählung beginnen soll.",
        "apihelp-query+blocks-param-end": "Der Zeitstempel, bei dem die Aufzählung beendet werden soll.",
        "apihelp-query+blocks-param-ids": "Liste von Sperren-IDs, die aufglistet werden sollen (optional).",
        "apihelp-query+blocks-param-show": "Zeige nur Elemente, die diese Kriterien erfüllen. Um zum Beispiel unbestimmte Sperren von IP-Adressen zu sehen, setzte <kbd>$1show=ip|!temp</kbd>.",
        "apihelp-query+blocks-example-simple": "Sperren auflisten",
        "apihelp-query+blocks-example-users": "Listet Sperren der Benutzer <kbd>Alice</kbd> und <kbd>Bob</kbd> auf.",
-       "apihelp-query+categories-description": "Liste alle Kategorien auf, zu denen die Seiten gehören.",
        "apihelp-query+categories-param-prop": "Zusätzlich zurückzugebende Eigenschaften jeder Kategorie:",
        "apihelp-query+categories-paramvalue-prop-timestamp": "Fügt einen Zeitstempel wann die Kategorie angelegt wurde hinzu.",
        "apihelp-query+categories-param-show": "Welche Art von Kategorien gezeigt werden soll.",
        "apihelp-query+categories-param-dir": "Die Auflistungsrichtung.",
        "apihelp-query+categories-example-simple": "Rufe eine Liste von Kategorien ab, zu denen die Seite <kbd>Albert Einstein</kbd> gehört.",
        "apihelp-query+categories-example-generator": "Rufe Informationen über alle Kategorien ab, die in der Seite <kbd>Albert Einstein</kbd> eingetragen sind.",
-       "apihelp-query+categoryinfo-description": "Gibt Informationen zu den angegebenen Kategorien zurück.",
        "apihelp-query+categoryinfo-example-simple": "Erhalte Informationen über <kbd>Category:Foo</kbd> und <kbd>Category:Bar</kbd>.",
-       "apihelp-query+categorymembers-description": "Liste alle Seiten in der angegebenen Kategorie auf.",
        "apihelp-query+categorymembers-param-pageid": "Seitenkennung der Kategorie, die aufgelistet werden soll. Darf nicht zusammen mit <var>$1title</var> verwendet werden.",
        "apihelp-query+categorymembers-param-prop": "Welche Informationsteile einbinden:",
        "apihelp-query+categorymembers-paramvalue-prop-ids": "Fügt die Seitenkennung hinzu.",
        "apihelp-query+categorymembers-param-endsortkey": "Stattdessen $1endhexsortkey verwenden.",
        "apihelp-query+categorymembers-example-simple": "Rufe die ersten 10 Seiten von <kbd>Category:Physics</kbd> ab.",
        "apihelp-query+categorymembers-example-generator": "Rufe die Seiteninformationen zu den ersten 10 Seiten von<kbd>Category:Physics</kbd> ab.",
-       "apihelp-query+contributors-description": "Rufe die Liste der angemeldeten Bearbeiter und die Zahl anonymer Bearbeiter einer Seite ab.",
        "apihelp-query+contributors-param-limit": "Wie viele Spender zurückgegeben werden sollen.",
        "apihelp-query+contributors-example-simple": "Zeige Mitwirkende der Seite <kbd>Main Page</kbd>.",
        "apihelp-query+deletedrevisions-param-start": "Der Zeitstempel bei dem die Auflistung beginnen soll. Wird bei der Verarbeitung einer Liste von Bearbeitungs-IDs ignoriert.",
        "apihelp-query+deletedrevisions-param-excludeuser": "Schließe Bearbeitungen dieses Benutzers bei der Auflistung aus.",
        "apihelp-query+deletedrevisions-example-titles": "Listet die gelöschten Bearbeitungen der Seiten <kbd>Main Page</kbd> und <kbd>Talk:Main Page</kbd> samt Inhalt auf.",
        "apihelp-query+deletedrevisions-example-revids": "Liste Informationen zur gelöschten Bearbeitung <kbd>123456</kbd>.",
-       "apihelp-query+deletedrevs-description": "Liste gelöschte Bearbeitungen.\n\nArbeitet in drei Modi:\n# Listet gelöschte Bearbeitungen des angegeben Titels auf, sortiert nach dem Zeitstempel.\n# Listet gelöschte Beiträge des angegebenen Benutzers auf, sortiert nach dem Zeitstempel (keine Titel bestimmt)\n# Listet alle gelöschten Bearbeitungen im angegebenen Namensraum auf, sortiert nach Titel und Zeitstempel (keine Titel bestimmt, $1user nicht gesetzt).\n\nBestimmte Parameter wirken nur bei bestimmten Modi und werden in anderen nicht berücksichtigt.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Modus|Modi}}: $2",
        "apihelp-query+deletedrevs-param-start": "Der Zeitstempel bei dem die Auflistung beginnen soll.",
        "apihelp-query+deletedrevs-param-end": "Der Zeitstempel bei dem die Auflistung enden soll.",
        "apihelp-query+deletedrevs-example-mode2": "Liste die letzten 50 gelöschten Beiträge von <kbd>Bob</kbd> auf (Modus 2).",
        "apihelp-query+deletedrevs-example-mode3-main": "Liste die ersten 50 gelöschten Bearbeitungen im Hauptnamensraum (Modus 3).",
        "apihelp-query+deletedrevs-example-mode3-talk": "Liste die ersten 50 gelöschten Seiten im {{ns:talk}}-Namensraum (Modus 3).",
-       "apihelp-query+disabled-description": "Dieses Abfrage-Modul wurde deaktiviert.",
-       "apihelp-query+duplicatefiles-description": "Liste alle Dateien auf die, basierend auf der Prüfsumme, Duplikate der angegebenen Dateien sind.",
        "apihelp-query+duplicatefiles-param-limit": "Wie viele doppelte Dateien zurückgeben.",
        "apihelp-query+duplicatefiles-param-dir": "Die Auflistungsrichtung.",
        "apihelp-query+duplicatefiles-param-localonly": "Sucht nur nach Dateien im lokalen Repositorium.",
        "apihelp-query+duplicatefiles-example-simple": "Sucht nach Duplikaten von [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+duplicatefiles-example-generated": "Sucht nach Duplikaten aller Dateien.",
-       "apihelp-query+embeddedin-description": "Finde alle Seiten, die den angegebenen Titel einbetten (transkludieren).",
        "apihelp-query+embeddedin-param-title": "Titel nach dem gesucht werden soll. Darf nicht zusammen mit $1pageid verwendet werden.",
        "apihelp-query+embeddedin-param-pageid": "Seitenkennung nach der gesucht werden soll. Darf nicht zusammen mit $1title verwendet werden.",
        "apihelp-query+embeddedin-param-namespace": "Der aufzulistende Namensraum.",
        "apihelp-query+embeddedin-param-limit": "Wie viele Seiten insgesamt zurückgegeben werden sollen.",
        "apihelp-query+embeddedin-example-simple": "Zeige Seiten, die <kbd>Template:Stub</kbd> transkludieren.",
        "apihelp-query+embeddedin-example-generator": "Rufe Informationen über Seiten ab, die <kbd>Template:Stub</kbd> transkludieren.",
-       "apihelp-query+extlinks-description": "Gebe alle externen URLs (nicht Interwiki) der angegebenen Seiten zurück.",
        "apihelp-query+extlinks-param-limit": "Wie viele Links zurückgegeben werden sollen.",
        "apihelp-query+extlinks-param-query": "Suchbegriff ohne Protokoll. Nützlich um zu prüfen, ob eine bestimmte Seite eine bestimmte externe URL enthält.",
        "apihelp-query+extlinks-example-simple": "Rufe eine Liste erxterner Verweise auf <kbd>Main Page</kbd> ab.",
-       "apihelp-query+exturlusage-description": "Listet Seiten auf, die die angegebene URL beinhalten.",
        "apihelp-query+exturlusage-param-prop": "Welche Informationsteile einbinden:",
        "apihelp-query+exturlusage-paramvalue-prop-ids": "Fügt die ID der Seite hinzu.",
        "apihelp-query+exturlusage-paramvalue-prop-title": "Fügt die Titel- und Namensraum-ID der Seite hinzu.",
        "apihelp-query+exturlusage-param-namespace": "Die aufzulistenden Seiten-Namensräume.",
        "apihelp-query+exturlusage-param-limit": "Wie viele Seiten zurückgegeben werden sollen.",
        "apihelp-query+exturlusage-example-simple": "Zeigt Seiten, die auf <kbd>http://www.mediawiki.org</kbd> verlinken.",
-       "apihelp-query+filearchive-description": "Alle gelöschten Dateien der Reihe nach auflisten.",
        "apihelp-query+filearchive-param-from": "Der Bildertitel, bei dem die Auflistung beginnen soll.",
        "apihelp-query+filearchive-param-to": "Der Bildertitel, bei dem die Auflistung enden soll.",
        "apihelp-query+filearchive-param-prefix": "Nach allen Bildtiteln, die mit diesem Wert beginnen suchen.",
        "apihelp-query+filearchive-paramvalue-prop-bitdepth": "Ergänzt die Bittiefe der Version.",
        "apihelp-query+filearchive-paramvalue-prop-archivename": "Fügt den Dateinamen der Archivversion für die nicht-neuesten Versionen hinzu.",
        "apihelp-query+filearchive-example-simple": "Eine Liste aller gelöschten Dateien auflisten",
-       "apihelp-query+filerepoinfo-description": "Gebe Metainformationen über Bild-Repositorien zurück, die im Wiki eingerichtet sind.",
        "apihelp-query+filerepoinfo-example-simple": "Ruft Informationen über Dateirepositorien ab.",
-       "apihelp-query+fileusage-description": "Alle Seiten finden, die die angegebenen Dateien verwenden.",
        "apihelp-query+fileusage-param-prop": "Zurückzugebende Eigenschaften:",
        "apihelp-query+fileusage-paramvalue-prop-pageid": "Seitenkennung jeder Seite.",
        "apihelp-query+fileusage-paramvalue-prop-title": "Titel jeder Seite.",
        "apihelp-query+fileusage-param-limit": "Wie viel zurückgegeben werden soll.",
        "apihelp-query+fileusage-example-simple": "Zeige eine Liste von Seiten, die [[:File:Example.jpg]] verwenden.",
        "apihelp-query+fileusage-example-generator": "Zeige Informationen über Seiten, die [[:File:Example.jpg]] verwenden.",
-       "apihelp-query+imageinfo-description": "Gibt Informationen und alle Versionen der Datei zurück.",
        "apihelp-query+imageinfo-param-prop": "Welche Dateiinformationen abgerufen werden sollen:",
        "apihelp-query+imageinfo-paramvalue-prop-timestamp": "Fügt einen Zeitstempel für die hochgeladene Version hinzu.",
        "apihelp-query+imageinfo-paramvalue-prop-user": "Fügt den Benutzer zu jeder hochgeladenen Dateiversion hinzu.",
        "apihelp-query+imageinfo-param-localonly": "Suche nur nach Dateien im lokalen Repositorium.",
        "apihelp-query+imageinfo-example-simple": "Rufe Informationen über die aktuelle Version von [[:File:Albert Einstein Head.jpg]] ab.",
        "apihelp-query+imageinfo-example-dated": "Rufe Informationen über Versionen von [[:File:Test.jpg]] von 2008 und später ab.",
-       "apihelp-query+images-description": "Gibt alle Dateien zurück, die in den angegebenen Seiten enthalten sind.",
        "apihelp-query+images-param-limit": "Wie viele Dateien zurückgegeben werden sollen.",
        "apihelp-query+images-param-images": "Nur diese Dateien auflisten. Nützlich um zu prüfen, ob eine bestimmte Seite eine bestimmte Datei enthält.",
        "apihelp-query+images-param-dir": "Die Auflistungsrichtung.",
        "apihelp-query+images-example-simple": "Rufe eine Liste von Dateien ab, die auf der [[Main Page]] verwendet werden.",
        "apihelp-query+images-example-generator": "Rufe Informationen über alle Dateien ab, die auf der [[Main Page]] verwendet werden.",
-       "apihelp-query+imageusage-description": "Finde alle Seiten, die den angegebenen Bildtitel verwenden.",
        "apihelp-query+imageusage-param-title": "Titel nach dem gesucht werden soll. Darf nicht zusammen mit $1pageid verwendet werden.",
        "apihelp-query+imageusage-param-pageid": "Seitenkennung nach der gesucht werden soll. Darf nicht zusammen mit $1title verwendet werden.",
        "apihelp-query+imageusage-param-namespace": "Der aufzulistende Namensraum.",
        "apihelp-query+imageusage-param-dir": "Die Auflistungsrichtung.",
        "apihelp-query+imageusage-param-redirect": "Falls die verweisende Seite eine Weiterleitung ist, finde alle Seiten, die ebenfalls auf diese Weiterleitung verweisen. Die maximale Grenze wird halbiert.",
        "apihelp-query+imageusage-example-simple": "Zeige Seiten, die [[:File:Albert Einstein Head.jpg]] verwenden.",
-       "apihelp-query+info-description": "Ruft Basisinformationen über die Seite ab.",
        "apihelp-query+info-param-prop": "Zusätzlich zurückzugebende Eigenschaften:",
        "apihelp-query+info-paramvalue-prop-protection": "Liste die Schutzstufe jeder Seite auf.",
        "apihelp-query+info-paramvalue-prop-talkid": "Die Seitenkennung der Diskussionsseite für jede Nicht-Diskussionsseite.",
        "apihelp-query+langlinks-paramvalue-prop-url": "Ergänzt die vollständige URL.",
        "apihelp-query+langlinks-paramvalue-prop-autonym": "Ergänzt den Namen der Muttersprache.",
        "apihelp-query+langlinks-param-dir": "Die Auflistungsrichtung.",
-       "apihelp-query+links-description": "Gibt alle Links von den angegebenen Seiten zurück.",
        "apihelp-query+links-param-namespace": "Zeigt nur Links in diesen Namensräumen.",
        "apihelp-query+links-param-limit": "Wie viele Links zurückgegeben werden sollen.",
        "apihelp-query+links-param-dir": "Die Auflistungsrichtung.",
        "apihelp-query+links-example-simple": "Links von der <kbd>Hauptseite</kbd> abrufen",
-       "apihelp-query+linkshere-description": "Alle Seiten finden, die auf die angegebenen Seiten verlinken.",
        "apihelp-query+linkshere-param-prop": "Zurückzugebende Eigenschaften:",
        "apihelp-query+linkshere-paramvalue-prop-pageid": "Die Seitenkennung jeder Seite.",
        "apihelp-query+linkshere-paramvalue-prop-title": "Titel jeder Seite.",
        "apihelp-query+linkshere-param-limit": "Wie viel zurückgegeben werden soll.",
        "apihelp-query+linkshere-example-simple": "Holt eine Liste von Seiten, die auf [[Main Page]] verlinken.",
-       "apihelp-query+logevents-description": "Ereignisse von den Logbüchern abrufen.",
        "apihelp-query+logevents-param-prop": "Zurückzugebende Eigenschaften:",
        "apihelp-query+logevents-paramvalue-prop-ids": "Ergänzt die Kennung des Logbuchereignisses.",
        "apihelp-query+logevents-paramvalue-prop-title": "Ergänzt den Titel der Seite für das Logbuchereignis.",
        "apihelp-query+protectedtitles-param-limit": "Wie viele Seiten insgesamt zurückgegeben werden sollen.",
        "apihelp-query+protectedtitles-param-prop": "Zurückzugebende Eigenschaften:",
        "apihelp-query+querypage-param-limit": "Anzahl der zurückzugebenden Ergebnisse.",
-       "apihelp-query+recentchanges-description": "Listet die letzten Änderungen auf.",
        "apihelp-query+recentchanges-param-user": "Listet nur Änderungen von diesem Benutzer auf.",
        "apihelp-query+recentchanges-param-excludeuser": "Listet keine Änderungen von diesem Benutzer auf.",
        "apihelp-query+recentchanges-param-tag": "Listet nur Änderungen auf, die mit dieser Markierung markiert sind.",
        "apihelp-query+search-param-limit": "Wie viele Seiten insgesamt zurückgegeben werden sollen.",
        "apihelp-query+search-example-simple": "Nach <kbd>meaning</kbd> suchen.",
        "apihelp-query+search-example-text": "Texte nach <kbd>meaning</kbd> durchsuchen.",
+       "apihelp-query+siteinfo-paramvalue-prop-specialpagealiases": "Liste von Spezialseiten-Aliasse.",
+       "apihelp-query+siteinfo-paramvalue-prop-magicwords": "Liste von magischen Wörtern und ihrer Aliasse.",
        "apihelp-query+siteinfo-paramvalue-prop-languagevariants": "Gibt eine Liste für die Sprachcodes zurück, bei denen der [[mw:Special:MyLanguage/LanguageConverter|Sprachkonverter]] aktiviert ist und die unterstützten Varianten für jede Sprache.",
        "apihelp-query+siteinfo-example-simple": "Websiteinformationen abrufen",
        "apihelp-query+stashimageinfo-param-sessionkey": "Alias für $1filekey, für die Rückwärtskompatibilität.",
        "apihelp-query+stashimageinfo-example-simple": "Gibt Informationen für eine gespeicherte Datei zurück.",
        "apihelp-query+stashimageinfo-example-params": "Gibt Vorschaubilder für zwei gespeicherte Dateien zurück.",
-       "apihelp-query+tags-description": "Änderungs-Tags auflisten.",
        "apihelp-query+tags-param-prop": "Zurückzugebende Eigenschaften:",
        "apihelp-query+tags-paramvalue-prop-name": "Ergänzt den Namen der Markierung.",
        "apihelp-query+tags-paramvalue-prop-displayname": "Ergänzt die Systemnachricht für die Markierung.",
        "apihelp-query+tokens-param-type": "Typen der Token, die abgerufen werden sollen.",
        "apihelp-query+transcludedin-param-prop": "Zurückzugebende Eigenschaften:",
        "apihelp-query+transcludedin-paramvalue-prop-pageid": "Seitenkennung jeder Seite.",
-       "apihelp-query+usercontribs-description": "Alle Bearbeitungen von einem Benutzer abrufen.",
        "apihelp-query+usercontribs-param-limit": "Die maximale Anzahl der zurückzugebenden Beiträge.",
        "apihelp-query+usercontribs-param-start": "Der zurückzugebende Start-Zeitstempel.",
        "apihelp-query+usercontribs-param-end": "Der zurückzugebende End-Zeitstempel.",
        "apihelp-query+usercontribs-paramvalue-prop-patrolled": "Markiert kontrollierte Bearbeitungen.",
        "apihelp-query+usercontribs-paramvalue-prop-tags": "Listet die Markierungen für die Bearbeitung auf.",
        "apihelp-query+userinfo-paramvalue-prop-blockinfo": "Markiert, ob der aktuelle Benutzer gesperrt ist, von wem und aus welchem Grund.",
+       "apihelp-query+userinfo-paramvalue-prop-options": "Listet alle Einstellungen auf, die der aktuelle Benutzer festgelegt hat.",
        "apihelp-query+userinfo-paramvalue-prop-editcount": "Ergänzt den Bearbeitungszähler des aktuellen Benutzers.",
        "apihelp-query+userinfo-paramvalue-prop-realname": "Fügt den bürgerlichen Namen des Benutzers hinzu.",
        "apihelp-query+userinfo-example-simple": "Informationen über den aktuellen Benutzer abrufen",
        "apihelp-query+userinfo-example-data": "Ruft zusätzliche Informationen über den aktuellen Benutzer ab.",
-       "apihelp-query+users-description": "Informationen über eine Liste von Benutzern abrufen.",
        "apihelp-query+users-param-prop": "Welche Informationsteile einbezogen werden sollen:",
        "apihelp-query+users-paramvalue-prop-blockinfo": "Markiert, ob der Benutzer gesperrt ist, von wem und aus welchem Grund.",
        "apihelp-query+users-paramvalue-prop-groups": "Listet alle Gruppen auf, zu denen jeder Benutzer gehört.",
        "apihelp-query+watchlist-paramvalue-prop-sizes": "Ergänzt die alten und neuen Längen der Seite.",
        "apihelp-query+watchlist-paramvalue-type-new": "Seitenerstellungen.",
        "apihelp-query+watchlist-paramvalue-type-log": "Logbucheinträge.",
-       "apihelp-query+watchlistraw-description": "Ruft alle Seiten der Beobachtungsliste des aktuellen Benutzers ab.",
        "apihelp-query+watchlistraw-param-prop": "Zusätzlich zurückzugebende Eigenschaften:",
        "apihelp-query+watchlistraw-param-fromtitle": "Titel (mit Namensraum-Präfix), bei dem die Aufzählung beginnen soll.",
        "apihelp-query+watchlistraw-param-totitle": "Titel (mit Namensraum-Präfix), bei dem die Aufzählung enden soll.",
        "apihelp-resetpassword-param-user": "Benutzer, der zurückgesetzt werden soll.",
-       "apihelp-revisiondelete-description": "Löscht und stellt Versionen wieder her.",
        "apihelp-revisiondelete-param-hide": "Was für jede Version versteckt werden soll.",
        "apihelp-revisiondelete-param-show": "Was für jede Version wieder eingeblendet werden soll.",
        "apihelp-revisiondelete-param-tags": "Auf den Eintrag im Lösch-Logbuch anzuwendende Markierungen.",
-       "apihelp-rsd-description": "Ein RSD-Schema (Really Simple Discovery) exportieren.",
        "apihelp-rsd-example-simple": "Das RSD-Schema exportieren",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "An allen beobachteten Seiten arbeiten.",
-       "apihelp-setpagelanguage-description": "Ändert die Sprache einer Seite.",
-       "apihelp-setpagelanguage-description-disabled": "Das Ändern der Sprache von Seiten ist auf diesem Wiki nicht erlaubt.\n\nAktiviere <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var>, um diese Aktion zu verwenden.",
        "apihelp-setpagelanguage-param-title": "Titel der Seite, deren Sprache du ändern möchtest. Kann nicht zusammen mit <var>$1pageid</var> verwendet werden.",
        "apihelp-setpagelanguage-param-pageid": "Kennung der Seite, deren Sprache du ändern möchtest. Kann nicht zusammen mit <var>$1title</var> verwendet werden.",
        "apihelp-setpagelanguage-param-lang": "Code der Sprache, auf den die Seite geändert werden soll. Verwende <kbd>default</kbd>, um die Seite auf die Standardinhaltssprache des Wikis zurückzusetzen.",
        "apihelp-tokens-param-type": "Abzufragende Tokentypen.",
        "apihelp-tokens-example-edit": "Ruft einen Bearbeitungstoken ab (Standard).",
        "apihelp-tokens-example-emailmove": "Ruft einen E-Mail- und Verschiebungstoken ab.",
-       "apihelp-unblock-description": "Einen Benutzer freigeben.",
        "apihelp-unblock-param-id": "Kennung der Sperre zur Freigabe (abgerufen durch <kbd>list=blocks</kbd>). Kann nicht zusammen mit <var>$1user</var> oder <var>$1userid</var> verwendet werden.",
        "apihelp-unblock-param-user": "Benutzername, IP-Adresse oder IP-Adressbereich, der freigegeben werden soll. Kann nicht zusammen mit <var>$1id</var> oder <var>$1userid</var> verwendet werden.",
        "apihelp-unblock-param-reason": "Grund für die Freigabe.",
        "apihelp-upload-param-checkstatus": "Ruft nur den Hochladestatus für den angegebenen Dateischlüssel ab.",
        "apihelp-upload-example-url": "Von einer URL hochladen",
        "apihelp-upload-example-filekey": "Vervollständigt einen Upload, der aufgrund von Warnungen fehlgeschlagen ist.",
-       "apihelp-userrights-description": "Ändert die Gruppenzugehörigkeit eines Benutzers.",
        "apihelp-userrights-param-user": "Benutzername.",
        "apihelp-userrights-param-userid": "Benutzerkennung.",
        "apihelp-userrights-param-add": "Fügt den Benutzer zu diesen Gruppen hinzu oder falls er bereits Mitglied ist, aktualisiert den Ablauf seiner Mitgliedschaft in dieser Gruppe.",
        "apihelp-userrights-param-remove": "Entfernt den Benutzer von diesen Gruppen.",
        "apihelp-userrights-param-reason": "Grund für die Änderung.",
        "apihelp-userrights-param-tags": "Auf den Eintrag im Benutzerrechte-Logbuch anzuwendende Änderungsmarkierungen.",
-       "apihelp-validatepassword-description": "Validiert ein Passwort gegen die Passwortrichtlinien des Wikis.\n\nDie Validität wird als <samp>Good</samp> gemeldet, falls das Passwort akzeptabel ist, <samp>Change</samp>, falls das Passwort zur Anmeldung verwendet werden kann, jedoch geändert werden muss oder <samp>Invalid</samp>, falls das Passwort nicht verwendbar ist.",
        "apihelp-validatepassword-param-password": "Zu validierendes Passwort.",
        "apihelp-validatepassword-param-user": "Der beim Austesten der Benutzerkontenerstellung verwendete Benutzername. Der angegebene Benutzer darf nicht vorhanden sein.",
        "apihelp-validatepassword-param-email": "Die beim Austesten der Benutzerkontenerstellung verwendete E-Mail-Adresse.",
        "apihelp-watch-example-watch": "Die Seite <kbd>Main Page</kbd> beobachten.",
        "apihelp-watch-example-unwatch": "Die Seite <kbd>Main Page</kbd> nicht beobachten.",
        "apihelp-format-example-generic": "Das Abfrageergebnis im $1-Format ausgeben.",
-       "apihelp-json-description": "Daten im JSON-Format ausgeben.",
        "apihelp-json-param-callback": "Falls angegeben, wird die Ausgabe in einen angegebenen Funktionsaufruf eingeschlossen. Aus Sicherheitsgründen sind benutzerspezifische Daten beschränkt.",
        "apihelp-json-param-utf8": "Falls angegeben, kodiert die meisten (aber nicht alle) Nicht-ASCII-Zeichen als UTF-8 anstatt sie mit hexadezimalen Escape-Sequenzen zu ersetzen. Standard, wenn <var>formatversion</var> nicht <kbd>1</kbd> ist.",
-       "apihelp-jsonfm-description": "Daten im JSON-Format ausgeben (schöngedruckt in HTML).",
-       "apihelp-none-description": "Nichts ausgeben.",
-       "apihelp-php-description": "Daten im serialisierten PHP-Format ausgeben.",
-       "apihelp-phpfm-description": "Daten im serialisierten PHP-Format ausgeben (schöngedruckt in HTML).",
-       "apihelp-rawfm-description": "Daten, einschließlich Fehlerbehebungselementen, im JSON-Format ausgeben (schöngedruckt in HTML).",
-       "apihelp-xml-description": "Daten im XML-Format ausgeben.",
        "apihelp-xml-param-xslt": "Falls angegeben, fügt die benannte Seite als XSL-Stylesheet hinzu. Der Wert muss ein Titel im Namensraum „{{ns:MediaWiki}}“ sein und mit <code>.xsl</code> enden.",
        "apihelp-xml-param-includexmlnamespace": "Falls angegeben, ergänzt einen XML-Namensraum.",
-       "apihelp-xmlfm-description": "Daten im XML-Format ausgeben (schöngedruckt in HTML).",
        "api-format-title": "MediaWiki-API-Ergebnis",
        "api-format-prettyprint-header": "Dies ist die Darstellung des $1-Formats in HTML. HTML ist gut zur Fehlerbehebung geeignet, aber unpassend für die Nutzung durch Anwendungen.\n\nGib den Parameter <var>format</var> an, um das Ausgabeformat zu ändern. Lege <kbd>format=$2</kbd> fest, um die von HTML abweichende Darstellung des $1-Formats zu erhalten.\n\nSiehe auch die [[mw:Special:MyLanguage/API|vollständige Dokumentation der API]] oder die [[Special:ApiHelp/main|API-Hilfe]] für weitere Informationen.",
        "api-format-prettyprint-status": "Diese Antwort wird mit dem HTTP-Status $1 $2 zurückgegeben.",
        "apierror-badparameter": "Ungültiger Wert für den Parameter <var>$1</var>.",
        "apierror-badquery": "Ungültige Abfrage.",
        "apierror-cannot-async-upload-file": "Die Parameter <var>async</var> und <var>file</var> können nicht kombiniert werden. Falls du eine asynchrone Verarbeitung deiner hochgeladenen Datei wünschst, lade sie zuerst mithilfe des Parameters <var>stash</var> auf den Speicher hoch. Veröffentliche anschließend die gespeicherte Datei asynchron mithilfe <var>filekey</var> und <var>async</var>.",
+       "apierror-emptypage": "Das Erstellen neuer leerer Seiten ist nicht erlaubt.",
+       "apierror-filedoesnotexist": "Die Datei ist nicht vorhanden.",
+       "apierror-import-unknownerror": "Unbekannter Fehler beim Importieren: $1.",
+       "apierror-invalid-file-key": "Kein gültiger Dateischlüssel.",
        "apierror-invalidsection": "Der Parameter <var>section</var> muss eine gültige Abschnittskennung oder <kbd>new</kbd> sein.",
        "apierror-invaliduserid": "Die Benutzerkennung <var>$1</var> ist nicht gültig.",
        "apierror-nosuchuserid": "Es gibt keinen Benutzer mit der Kennung $1.",
        "apierror-pagelang-disabled": "Das Ändern der Sprache von Seiten ist auf diesem Wiki nicht erlaubt.",
        "apierror-protect-invalidaction": "Ungültiger Schutztyp „$1“.",
        "apierror-readonly": "Das Wiki ist derzeit im schreibgeschützten Modus.",
+       "apierror-revisions-badid": "Für den Parameter <var>$1</var> wurde keine Version gefunden.",
        "apierror-revwrongpage": "Die Version $1 ist keine Version von $2.",
        "apierror-sectionreplacefailed": "Der aktualisierte Abschnitt konnte nicht zusammengeführt werden.",
        "apierror-stashinvalidfile": "Ungültige gespeicherte Datei.",
index f4373ab..93ee3e1 100644 (file)
        "apihelp-userrights-example-userid": "Add the user with ID <kbd>123</kbd> to group <kbd>bot</kbd>, and remove from groups <kbd>sysop</kbd> and <kbd>bureaucrat</kbd>.",
        "apihelp-watch-param-title": "The page to (un)watch. Use <var>$1titles</var> instead.",
        "apihelp-watch-example-unwatch": "Unwatch the page <kbd>Main Page</kbd>.",
-       "apihelp-dbg-description": "Output data in PHP's <code>var_export()</code> format.",
-       "apihelp-dbgfm-description": "Output data in PHP's <code>var_export()</code> format (pretty-print in HTML).",
        "apihelp-php-description": "Output data in serialised PHP format.",
        "apihelp-phpfm-description": "Output data in serialised PHP format (pretty-print in HTML).",
-       "apihelp-txt-description": "Output data in PHP's <code>print_r()</code> format.",
-       "apihelp-txtfm-description": "Output data in PHP's <code>print_r()</code> format (pretty-print in HTML).",
        "api-pageset-param-redirects-generator": "Automatically resolve redirects in <var>$1titles</var>, <var>$1pageids</var>, and <var>$1revids</var>, and in pages returned by <var>$1generator</var>.",
        "api-pageset-param-redirects-nogenerator": "Automatically resolve redirects in <var>$1titles</var>, <var>$1pageids</var>, and <var>$1revids</var>.",
        "api-help-param-multi-separate": "Separate values with <kbd>|</kbd>.",
-       "api-help-param-disabled-in-miser-mode": "Disabled due to [[mw:Manual:$wgMiserMode|miser mode]].",
-       "api-help-param-limited-in-miser-mode": "<strong>Note:</strong> Due to [[mw:Manual:$wgMiserMode|miser mode]], using this may result in fewer than <var>$1limit</var> results returned before continuing; in extreme cases, zero results may be returned."
+       "api-help-param-disabled-in-miser-mode": "Disabled due to [[mw:Special:MyLanguage/Manual:$wgMiserMode|miser mode]].",
+       "api-help-param-limited-in-miser-mode": "<strong>Note:</strong> Due to [[mw:Special:MyLanguage/Manual:$wgMiserMode|miser mode]], using this may result in fewer than <var>$1limit</var> results returned before continuing; in extreme cases, zero results may be returned."
 }
index 7a04caf..2a4dc0b 100644 (file)
@@ -6,7 +6,8 @@
                ]
        },
 
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Documentation]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mailing list]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API Announcements]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bugs & requests]\n</div>\n<strong>Status:</strong> All features shown on this page should be working, but the API is still in active development, and may change at any time. Subscribe to [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce mailing list] for notice of updates.\n\n<strong>Erroneous requests:</strong> When erroneous requests are sent to the API, an HTTP header will be sent with the key \"MediaWiki-API-Error\" and then both the value of the header and the error code sent back will be set to the same value. For more information see [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Errors and warnings]].\n\n<strong>Testing:</strong> For ease of testing API requests, see [[Special:ApiSandbox]].",
+       "apihelp-main-summary": "",
+       "apihelp-main-extended-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Documentation]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mailing list]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API Announcements]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bugs & requests]\n</div>\n<strong>Status:</strong> All features shown on this page should be working, but the API is still in active development, and may change at any time. Subscribe to [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce mailing list] for notice of updates.\n\n<strong>Erroneous requests:</strong> When erroneous requests are sent to the API, an HTTP header will be sent with the key \"MediaWiki-API-Error\" and then both the value of the header and the error code sent back will be set to the same value. For more information see [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Errors and warnings]].\n\n<strong>Testing:</strong> For ease of testing API requests, see [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Which action to perform.",
        "apihelp-main-param-format": "The format of the output.",
        "apihelp-main-param-maxlag": "Maximum lag can be used when MediaWiki is installed on a database replicated cluster. To save actions causing any more site replication lag, this parameter can make the client wait until the replication lag is less than the specified value. In case of excessive lag, error code <samp>maxlag</samp> is returned with a message like <samp>Waiting for $host: $lag seconds lagged</samp>.<br />See [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manual: Maxlag parameter]] for more information.",
@@ -24,7 +25,7 @@
        "apihelp-main-param-errorlang": "Language to use for warnings and errors. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> with <kbd>siprop=languages</kbd> returns a list of language codes, or specify <kbd>content</kbd> to use this wiki's content language, or specify <kbd>uselang</kbd> to use the same value as the <var>uselang</var> parameter.",
        "apihelp-main-param-errorsuselocal": "If given, error texts will use locally-customized messages from the {{ns:MediaWiki}} namespace.",
 
-       "apihelp-block-description": "Block a user.",
+       "apihelp-block-summary": "Block a user.",
        "apihelp-block-param-user": "Username, IP address, or IP address range to block. Cannot be used together with <var>$1userid</var>",
        "apihelp-block-param-userid": "User ID to block. Cannot be used together with <var>$1user</var>.",
        "apihelp-block-param-expiry": "Expiry time. May be relative (e.g. <kbd>5 months</kbd> or <kbd>2 weeks</kbd>) or absolute (e.g. <kbd>2014-09-18T12:34:56Z</kbd>). If set to <kbd>infinite</kbd>, <kbd>indefinite</kbd>, or <kbd>never</kbd>, the block will never expire.",
        "apihelp-block-example-ip-simple": "Block IP address <kbd>192.0.2.5</kbd> for three days with reason <kbd>First strike</kbd>.",
        "apihelp-block-example-user-complex": "Block user <kbd>Vandal</kbd> indefinitely with reason <kbd>Vandalism</kbd>, and prevent new account creation and email sending.",
 
-       "apihelp-changeauthenticationdata-description": "Change authentication data for the current user.",
+       "apihelp-changeauthenticationdata-summary": "Change authentication data for the current user.",
        "apihelp-changeauthenticationdata-example-password": "Attempt to change the current user's password to <kbd>ExamplePassword</kbd>.",
 
-       "apihelp-checktoken-description": "Check the validity of a token from <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
+       "apihelp-checktoken-summary": "Check the validity of a token from <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-checktoken-param-type": "Type of token being tested.",
        "apihelp-checktoken-param-token": "Token to test.",
        "apihelp-checktoken-param-maxtokenage": "Maximum allowed age of the token, in seconds.",
        "apihelp-checktoken-example-simple": "Test the validity of a <kbd>csrf</kbd> token.",
 
-       "apihelp-clearhasmsg-description": "Clears the <code>hasmsg</code> flag for the current user.",
+       "apihelp-clearhasmsg-summary": "Clears the <code>hasmsg</code> flag for the current user.",
        "apihelp-clearhasmsg-example-1": "Clear the <code>hasmsg</code> flag for the current user.",
 
-       "apihelp-clientlogin-description": "Log in to the wiki using the interactive flow.",
+       "apihelp-clientlogin-summary": "Log in to the wiki using the interactive flow.",
        "apihelp-clientlogin-example-login": "Start the process of logging in to the wiki as user <kbd>Example</kbd> with password <kbd>ExamplePassword</kbd>.",
        "apihelp-clientlogin-example-login2": "Continue logging in after a <samp>UI</samp> response for two-factor auth, supplying an <var>OATHToken</var> of <kbd>987654</kbd>.",
 
-       "apihelp-compare-description": "Get the difference between 2 pages.\n\nA revision number, a page title, or a page ID for both \"from\" and \"to\" must be passed.",
+       "apihelp-compare-summary": "Get the difference between two pages.",
+       "apihelp-compare-extended-description": "A revision number, a page title, a page ID, text, or a relative reference for both \"from\" and \"to\" must be passed.",
        "apihelp-compare-param-fromtitle": "First title to compare.",
        "apihelp-compare-param-fromid": "First page ID to compare.",
        "apihelp-compare-param-fromrev": "First revision to compare.",
+       "apihelp-compare-param-fromtext": "Use this text instead of the content of the revision specified by <var>fromtitle</var>, <var>fromid</var> or <var>fromrev</var>.",
+       "apihelp-compare-param-frompst": "Do a pre-save transform on <var>fromtext</var>.",
+       "apihelp-compare-param-fromcontentmodel": "Content model of <var>fromtext</var>. If not supplied, it will be guessed based on the other parameters.",
+       "apihelp-compare-param-fromcontentformat": "Content serialization format of <var>fromtext</var>.",
        "apihelp-compare-param-totitle": "Second title to compare.",
        "apihelp-compare-param-toid": "Second page ID to compare.",
        "apihelp-compare-param-torev": "Second revision to compare.",
+       "apihelp-compare-param-torelative": "Use a revision relative to the revision determined from <var>fromtitle</var>, <var>fromid</var> or <var>fromrev</var>. All of the other 'to' options will be ignored.",
+       "apihelp-compare-param-totext": "Use this text instead of the content of the revision specified by <var>totitle</var>, <var>toid</var> or <var>torev</var>.",
+       "apihelp-compare-param-topst": "Do a pre-save transform on <var>totext</var>.",
+       "apihelp-compare-param-tocontentmodel": "Content model of <var>totext</var>. If not supplied, it will be guessed based on the other parameters.",
+       "apihelp-compare-param-tocontentformat": "Content serialization format of <var>totext</var>.",
+       "apihelp-compare-param-prop": "Which pieces of information to get.",
+       "apihelp-compare-paramvalue-prop-diff": "The diff HTML.",
+       "apihelp-compare-paramvalue-prop-diffsize": "The size of the diff HTML, in bytes.",
+       "apihelp-compare-paramvalue-prop-rel": "The revision IDs of the revision previous to 'from' and after 'to', if any.",
+       "apihelp-compare-paramvalue-prop-ids": "The page and revision IDs of the 'from' and 'to' revisions.",
+       "apihelp-compare-paramvalue-prop-title": "The page titles of the 'from' and 'to' revisions.",
+       "apihelp-compare-paramvalue-prop-user": "The user name and ID of the 'from' and 'to' revisions.",
+       "apihelp-compare-paramvalue-prop-comment": "The comment on the 'from' and 'to' revisions.",
+       "apihelp-compare-paramvalue-prop-parsedcomment": "The parsed comment on the 'from' and 'to' revisions.",
+       "apihelp-compare-paramvalue-prop-size": "The size of the 'from' and 'to' revisions.",
        "apihelp-compare-example-1": "Create a diff between revision 1 and 2.",
 
-       "apihelp-createaccount-description": "Create a new user account.",
+       "apihelp-createaccount-summary": "Create a new user account.",
        "apihelp-createaccount-param-preservestate": "If <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> returned true for <samp>hasprimarypreservedstate</samp>, requests marked as <samp>primary-required</samp> should be omitted. If it returned a non-empty value for <samp>preservedusername</samp>, that username must be used for the <var>username</var> parameter.",
        "apihelp-createaccount-example-create": "Start the process of creating user <kbd>Example</kbd> with password <kbd>ExamplePassword</kbd>.",
        "apihelp-createaccount-param-name": "Username.",
        "apihelp-createaccount-param-language": "Language code to set as default for the user (optional, defaults to content language).",
        "apihelp-createaccount-example-pass": "Create user <kbd>testuser</kbd> with password <kbd>test123</kbd>.",
        "apihelp-createaccount-example-mail": "Create user <kbd>testmailuser</kbd> and email a randomly-generated password.",
-       "apihelp-cspreport-description": "Used by browsers to report violations of the Content Security Policy. This module should never be used, except when used automatically by a CSP compliant web browser.",
+
+       "apihelp-cspreport-summary": "Used by browsers to report violations of the Content Security Policy. This module should never be used, except when used automatically by a CSP compliant web browser.",
        "apihelp-cspreport-param-reportonly": "Mark as being a report from a monitoring policy, not an enforced policy",
        "apihelp-cspreport-param-source": "What generated the CSP header that triggered this report",
-       "apihelp-delete-description": "Delete a page.",
+
+       "apihelp-delete-summary": "Delete a page.",
        "apihelp-delete-param-title": "Title of the page to delete. Cannot be used together with <var>$1pageid</var>.",
        "apihelp-delete-param-pageid": "Page ID of the page to delete. Cannot be used together with <var>$1title</var>.",
        "apihelp-delete-param-reason": "Reason for the deletion. If not set, an automatically generated reason will be used.",
        "apihelp-delete-example-simple": "Delete <kbd>Main Page</kbd>.",
        "apihelp-delete-example-reason": "Delete <kbd>Main Page</kbd> with the reason <kbd>Preparing for move</kbd>.",
 
-       "apihelp-disabled-description": "This module has been disabled.",
+       "apihelp-disabled-summary": "This module has been disabled.",
 
-       "apihelp-edit-description": "Create and edit pages.",
+       "apihelp-edit-summary": "Create and edit pages.",
        "apihelp-edit-param-title": "Title of the page to edit. Cannot be used together with <var>$1pageid</var>.",
        "apihelp-edit-param-pageid": "Page ID of the page to edit. Cannot be used together with <var>$1title</var>.",
        "apihelp-edit-param-section": "Section number. <kbd>0</kbd> for the top section, <kbd>new</kbd> for a new section.",
        "apihelp-edit-example-prepend": "Prepend <kbd>_&#95;NOTOC_&#95;</kbd> to a page.",
        "apihelp-edit-example-undo": "Undo revisions 13579 through 13585 with autosummary.",
 
-       "apihelp-emailuser-description": "Email a user.",
+       "apihelp-emailuser-summary": "Email a user.",
        "apihelp-emailuser-param-target": "User to send email to.",
        "apihelp-emailuser-param-subject": "Subject header.",
        "apihelp-emailuser-param-text": "Mail body.",
        "apihelp-emailuser-param-ccme": "Send a copy of this mail to me.",
        "apihelp-emailuser-example-email": "Send an email to user <kbd>WikiSysop</kbd> with the text <kbd>Content</kbd>.",
 
-       "apihelp-expandtemplates-description": "Expands all templates within wikitext.",
+       "apihelp-expandtemplates-summary": "Expands all templates within wikitext.",
        "apihelp-expandtemplates-param-title": "Title of page.",
        "apihelp-expandtemplates-param-text": "Wikitext to convert.",
        "apihelp-expandtemplates-param-revid": "Revision ID, for <nowiki>{{REVISIONID}}</nowiki> and similar variables.",
        "apihelp-expandtemplates-param-generatexml": "Generate XML parse tree (replaced by $1prop=parsetree).",
        "apihelp-expandtemplates-example-simple": "Expand the wikitext <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd>.",
 
-       "apihelp-feedcontributions-description": "Returns a user contributions feed.",
+       "apihelp-feedcontributions-summary": "Returns a user contributions feed.",
        "apihelp-feedcontributions-param-feedformat": "The format of the feed.",
        "apihelp-feedcontributions-param-user": "What users to get the contributions for.",
        "apihelp-feedcontributions-param-namespace": "Which namespace to filter the contributions by.",
        "apihelp-feedcontributions-param-showsizediff": "Show the size difference between revisions.",
        "apihelp-feedcontributions-example-simple": "Return contributions for user <kbd>Example</kbd>.",
 
-       "apihelp-feedrecentchanges-description": "Returns a recent changes feed.",
+       "apihelp-feedrecentchanges-summary": "Returns a recent changes feed.",
        "apihelp-feedrecentchanges-param-feedformat": "The format of the feed.",
        "apihelp-feedrecentchanges-param-namespace": "Namespace to limit the results to.",
        "apihelp-feedrecentchanges-param-invert": "All namespaces but the selected one.",
        "apihelp-feedrecentchanges-example-simple": "Show recent changes.",
        "apihelp-feedrecentchanges-example-30days": "Show recent changes for 30 days.",
 
-       "apihelp-feedwatchlist-description": "Returns a watchlist feed.",
+       "apihelp-feedwatchlist-summary": "Returns a watchlist feed.",
        "apihelp-feedwatchlist-param-feedformat": "The format of the feed.",
        "apihelp-feedwatchlist-param-hours": "List pages modified within this many hours from now.",
        "apihelp-feedwatchlist-param-linktosections": "Link directly to changed sections if possible.",
        "apihelp-feedwatchlist-example-default": "Show the watchlist feed.",
        "apihelp-feedwatchlist-example-all6hrs": "Show all changes to watched pages in the past 6 hours.",
 
-       "apihelp-filerevert-description": "Revert a file to an old version.",
+       "apihelp-filerevert-summary": "Revert a file to an old version.",
        "apihelp-filerevert-param-filename": "Target filename, without the File: prefix.",
        "apihelp-filerevert-param-comment": "Upload comment.",
        "apihelp-filerevert-param-archivename": "Archive name of the revision to revert to.",
        "apihelp-filerevert-example-revert": "Revert <kbd>Wiki.png</kbd> to the version of <kbd>2011-03-05T15:27:40Z</kbd>.",
 
-       "apihelp-help-description": "Display help for the specified modules.",
+       "apihelp-help-summary": "Display help for the specified modules.",
        "apihelp-help-param-modules": "Modules to display help for (values of the <var>action</var> and <var>format</var> parameters, or <kbd>main</kbd>). Can specify submodules with a <kbd>+</kbd>.",
        "apihelp-help-param-submodules": "Include help for submodules of the named module.",
        "apihelp-help-param-recursivesubmodules": "Include help for submodules recursively.",
        "apihelp-help-example-help": "Help for the help module itself.",
        "apihelp-help-example-query": "Help for two query submodules.",
 
-       "apihelp-imagerotate-description": "Rotate one or more images.",
+       "apihelp-imagerotate-summary": "Rotate one or more images.",
        "apihelp-imagerotate-param-rotation": "Degrees to rotate image clockwise.",
        "apihelp-imagerotate-param-tags": "Tags to apply to the entry in the upload log.",
        "apihelp-imagerotate-example-simple": "Rotate <kbd>File:Example.png</kbd> by <kbd>90</kbd> degrees.",
        "apihelp-imagerotate-example-generator": "Rotate all images in <kbd>Category:Flip</kbd> by <kbd>180</kbd> degrees.",
 
-       "apihelp-import-description": "Import a page from another wiki, or from an XML file.\n\nNote that the HTTP POST must be done as a file upload (i.e. using multipart/form-data) when sending a file for the <var>xml</var> parameter.",
+       "apihelp-import-summary": "Import a page from another wiki, or from an XML file.",
+       "apihelp-import-extended-description": "Note that the HTTP POST must be done as a file upload (i.e. using multipart/form-data) when sending a file for the <var>xml</var> parameter.",
        "apihelp-import-param-summary": "Log entry import summary.",
        "apihelp-import-param-xml": "Uploaded XML file.",
        "apihelp-import-param-interwikisource": "For interwiki imports: wiki to import from.",
        "apihelp-import-param-tags": "Change tags to apply to the entry in the import log and to the null revision on the imported pages.",
        "apihelp-import-example-import": "Import [[meta:Help:ParserFunctions]] to namespace 100 with full history.",
 
-       "apihelp-linkaccount-description": "Link an account from a third-party provider to the current user.",
+       "apihelp-linkaccount-summary": "Link an account from a third-party provider to the current user.",
        "apihelp-linkaccount-example-link": "Start the process of linking to an account from <kbd>Example</kbd>.",
 
-       "apihelp-login-description": "Log in and get authentication cookies.\n\nThis action should only be used in combination with [[Special:BotPasswords]]; use for main-account login is deprecated and may fail without warning. To safely log in to the main account, use <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
-       "apihelp-login-description-nobotpasswords": "Log in and get authentication cookies.\n\nThis action is deprecated and may fail without warning. To safely log in, use <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
+       "apihelp-login-summary": "Log in and get authentication cookies.",
+       "apihelp-login-extended-description": "This action should only be used in combination with [[Special:BotPasswords]]; use for main-account login is deprecated and may fail without warning. To safely log in to the main account, use <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
+       "apihelp-login-extended-description-nobotpasswords": "This action is deprecated and may fail without warning. To safely log in, use <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
        "apihelp-login-param-name": "User name.",
        "apihelp-login-param-password": "Password.",
        "apihelp-login-param-domain": "Domain (optional).",
        "apihelp-login-example-gettoken": "Retrieve a login token.",
        "apihelp-login-example-login": "Log in.",
 
-       "apihelp-logout-description": "Log out and clear session data.",
+       "apihelp-logout-summary": "Log out and clear session data.",
        "apihelp-logout-example-logout": "Log the current user out.",
 
-       "apihelp-managetags-description": "Perform management tasks relating to change tags.",
+       "apihelp-managetags-summary": "Perform management tasks relating to change tags.",
        "apihelp-managetags-param-operation": "Which operation to perform:\n;create:Create a new change tag for manual use.\n;delete:Remove a change tag from the database, including removing the tag from all revisions, recent change entries and log entries on which it is used.\n;activate:Activate a change tag, allowing users to apply it manually.\n;deactivate:Deactivate a change tag, preventing users from applying it manually.",
        "apihelp-managetags-param-tag": "Tag to create, delete, activate or deactivate. For tag creation, the tag must not exist. For tag deletion, the tag must exist. For tag activation, the tag must exist and not be in use by an extension. For tag deactivation, the tag must be currently active and manually defined.",
        "apihelp-managetags-param-reason": "An optional reason for creating, deleting, activating or deactivating the tag.",
        "apihelp-managetags-example-activate": "Activate a tag named <kbd>spam</kbd> with the reason <kbd>For use in edit patrolling</kbd>",
        "apihelp-managetags-example-deactivate": "Deactivate a tag named <kbd>spam</kbd> with the reason <kbd>No longer required</kbd>",
 
-       "apihelp-mergehistory-description": "Merge page histories.",
+       "apihelp-mergehistory-summary": "Merge page histories.",
        "apihelp-mergehistory-param-from": "Title of the page from which history will be merged. Cannot be used together with <var>$1fromid</var>.",
        "apihelp-mergehistory-param-fromid": "Page ID of the page from which history will be merged. Cannot be used together with <var>$1from</var>.",
        "apihelp-mergehistory-param-to": "Title of the page to which history will be merged. Cannot be used together with <var>$1toid</var>.",
        "apihelp-mergehistory-example-merge": "Merge the entire history of <kbd>Oldpage</kbd> into <kbd>Newpage</kbd>.",
        "apihelp-mergehistory-example-merge-timestamp": "Merge the page revisions of <kbd>Oldpage</kbd> dating up to <kbd>2015-12-31T04:37:41Z</kbd> into <kbd>Newpage</kbd>.",
 
-       "apihelp-move-description": "Move a page.",
+       "apihelp-move-summary": "Move a page.",
        "apihelp-move-param-from": "Title of the page to rename. Cannot be used together with <var>$1fromid</var>.",
        "apihelp-move-param-fromid": "Page ID of the page to rename. Cannot be used together with <var>$1from</var>.",
        "apihelp-move-param-to": "Title to rename the page to.",
        "apihelp-move-param-tags": "Change tags to apply to the entry in the move log and to the null revision on the destination page.",
        "apihelp-move-example-move": "Move <kbd>Badtitle</kbd> to <kbd>Goodtitle</kbd> without leaving a redirect.",
 
-       "apihelp-opensearch-description": "Search the wiki using the OpenSearch protocol.",
+       "apihelp-opensearch-summary": "Search the wiki using the OpenSearch protocol.",
        "apihelp-opensearch-param-search": "Search string.",
        "apihelp-opensearch-param-limit": "Maximum number of results to return.",
        "apihelp-opensearch-param-namespace": "Namespaces to search.",
        "apihelp-opensearch-param-warningsaserror": "If warnings are raised with <kbd>format=json</kbd>, return an API error instead of ignoring them.",
        "apihelp-opensearch-example-te": "Find pages beginning with <kbd>Te</kbd>.",
 
-       "apihelp-options-description": "Change preferences of the current user.\n\nOnly options which are registered in core or in one of installed extensions, or options with keys prefixed with <code>userjs-</code> (intended to be used by user scripts), can be set.",
+       "apihelp-options-summary": "Change preferences of the current user.",
+       "apihelp-options-extended-description": "Only options which are registered in core or in one of installed extensions, or options with keys prefixed with <code>userjs-</code> (intended to be used by user scripts), can be set.",
        "apihelp-options-param-reset": "Resets preferences to the site defaults.",
        "apihelp-options-param-resetkinds": "List of types of options to reset when the <var>$1reset</var> option is set.",
        "apihelp-options-param-change": "List of changes, formatted name=value (e.g. skin=vector). If no value is given (not even an equals sign), e.g., optionname|otheroption|..., the option will be reset to its default value. If any value passed contains the pipe character (<kbd>|</kbd>), use the [[Special:ApiHelp/main#main/datatypes|alternative multiple-value separator]] for correct operation.",
        "apihelp-options-example-change": "Change <kbd>skin</kbd> and <kbd>hideminor</kbd> preferences.",
        "apihelp-options-example-complex": "Reset all preferences, then set <kbd>skin</kbd> and <kbd>nickname</kbd>.",
 
-       "apihelp-paraminfo-description": "Obtain information about API modules.",
+       "apihelp-paraminfo-summary": "Obtain information about API modules.",
        "apihelp-paraminfo-param-modules": "List of module names (values of the <var>action</var> and <var>format</var> parameters, or <kbd>main</kbd>). Can specify submodules with a <kbd>+</kbd>, or all submodules with <kbd>+*</kbd>, or all submodules recursively with <kbd>+**</kbd>.",
        "apihelp-paraminfo-param-helpformat": "Format of help strings.",
        "apihelp-paraminfo-param-querymodules": "List of query module names (value of <var>prop</var>, <var>meta</var> or <var>list</var> parameter). Use <kbd>$1modules=query+foo</kbd> instead of <kbd>$1querymodules=foo</kbd>.",
        "apihelp-paraminfo-example-1": "Show info for <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd>, and <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>.",
        "apihelp-paraminfo-example-2": "Show info for all submodules of <kbd>[[Special:ApiHelp/query|action=query]]</kbd>.",
 
-       "apihelp-parse-description": "Parses content and returns parser output.\n\nSee the various prop-modules of <kbd>[[Special:ApiHelp/query|action=query]]</kbd> to get information from the current version of a page.\n\nThere are several ways to specify the text to parse:\n# Specify a page or revision, using <var>$1page</var>, <var>$1pageid</var>, or <var>$1oldid</var>.\n# Specify content explicitly, using <var>$1text</var>, <var>$1title</var>, and <var>$1contentmodel</var>.\n# Specify only a summary to parse. <var>$1prop</var> should be given an empty value.",
+       "apihelp-parse-summary": "Parses content and returns parser output.",
+       "apihelp-parse-extended-description": "See the various prop-modules of <kbd>[[Special:ApiHelp/query|action=query]]</kbd> to get information from the current version of a page.\n\nThere are several ways to specify the text to parse:\n# Specify a page or revision, using <var>$1page</var>, <var>$1pageid</var>, or <var>$1oldid</var>.\n# Specify content explicitly, using <var>$1text</var>, <var>$1title</var>, and <var>$1contentmodel</var>.\n# Specify only a summary to parse. <var>$1prop</var> should be given an empty value.",
        "apihelp-parse-param-title": "Title of page the text belongs to. If omitted, <var>$1contentmodel</var> must be specified, and [[API]] will be used as the title.",
        "apihelp-parse-param-text": "Text to parse. Use <var>$1title</var> or <var>$1contentmodel</var> to control the content model.",
        "apihelp-parse-param-summary": "Summary to parse.",
        "apihelp-parse-paramvalue-prop-sections": "Gives the sections in the parsed wikitext.",
        "apihelp-parse-paramvalue-prop-revid": "Adds the revision ID of the parsed page.",
        "apihelp-parse-paramvalue-prop-displaytitle": "Adds the title of the parsed wikitext.",
-       "apihelp-parse-paramvalue-prop-headitems": "<span class=\"apihelp-deprecated\">Deprecated.</span> Gives items to put in the <code>&lt;head&gt;</code> of the page.",
+       "apihelp-parse-paramvalue-prop-headitems": "Gives items to put in the <code>&lt;head&gt;</code> of the page.",
        "apihelp-parse-paramvalue-prop-headhtml": "Gives parsed <code>&lt;head&gt;</code> of the page.",
        "apihelp-parse-paramvalue-prop-modules": "Gives the ResourceLoader modules used on the page. To load, use <code>mw.loader.using()</code>. Either <kbd>jsconfigvars</kbd> or <kbd>encodedjsconfigvars</kbd> must be requested jointly with <kbd>modules</kbd>.",
        "apihelp-parse-paramvalue-prop-jsconfigvars": "Gives the JavaScript configuration variables specific to the page. To apply, use <code>mw.config.set()</code>.",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "Gives the HTML version of the limit report. Gives no data, when <var>$1disablelimitreport</var> is set.",
        "apihelp-parse-paramvalue-prop-parsetree": "The XML parse tree of revision content (requires content model <code>$1</code>)",
        "apihelp-parse-paramvalue-prop-parsewarnings": "Gives the warnings that occurred while parsing content.",
+       "apihelp-parse-param-wrapoutputclass": "CSS class to use to wrap the parser output.",
        "apihelp-parse-param-pst": "Do a pre-save transform on the input before parsing it. Only valid when used with text.",
        "apihelp-parse-param-onlypst": "Do a pre-save transform (PST) on the input, but don't parse it. Returns the same wikitext, after a PST has been applied. Only valid when used with <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Includes language links supplied by extensions (for use with <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-preview": "Parse in preview mode.",
        "apihelp-parse-param-sectionpreview": "Parse in section preview mode (enables preview mode too).",
        "apihelp-parse-param-disabletoc": "Omit table of contents in output.",
+       "apihelp-parse-param-useskin": "Apply the selected skin to the parser output. May affect the following properties: <kbd>langlinks</kbd>, <kbd>headitems</kbd>, <kbd>modules</kbd>, <kbd>jsconfigvars</kbd>, <kbd>indicators</kbd>.",
        "apihelp-parse-param-contentformat": "Content serialization format used for the input text. Only valid when used with $1text.",
        "apihelp-parse-param-contentmodel": "Content model of the input text. If omitted, $1title must be specified, and default will be the model of the specified title. Only valid when used with $1text.",
        "apihelp-parse-example-page": "Parse a page.",
        "apihelp-parse-example-texttitle": "Parse wikitext, specifying the page title.",
        "apihelp-parse-example-summary": "Parse a summary.",
 
-       "apihelp-patrol-description": "Patrol a page or revision.",
+       "apihelp-patrol-summary": "Patrol a page or revision.",
        "apihelp-patrol-param-rcid": "Recentchanges ID to patrol.",
        "apihelp-patrol-param-revid": "Revision ID to patrol.",
        "apihelp-patrol-param-tags": "Change tags to apply to the entry in the patrol log.",
        "apihelp-patrol-example-rcid": "Patrol a recent change.",
        "apihelp-patrol-example-revid": "Patrol a revision.",
 
-       "apihelp-protect-description": "Change the protection level of a page.",
+       "apihelp-protect-summary": "Change the protection level of a page.",
        "apihelp-protect-param-title": "Title of the page to (un)protect. Cannot be used together with $1pageid.",
        "apihelp-protect-param-pageid": "ID of the page to (un)protect. Cannot be used together with $1title.",
        "apihelp-protect-param-protections": "List of protection levels, formatted <kbd>action=level</kbd> (e.g. <kbd>edit=sysop</kbd>). A level of <kbd>all</kbd> means everyone is allowed to take the action, i.e. no restriction.\n\n<strong>Note:</strong> Any actions not listed will have restrictions removed.",
        "apihelp-protect-example-unprotect": "Unprotect a page by setting restrictions to <kbd>all</kbd> (i.e. everyone is allowed to take the action).",
        "apihelp-protect-example-unprotect2": "Unprotect a page by setting no restrictions.",
 
-       "apihelp-purge-description": "Purge the cache for the given titles.",
+       "apihelp-purge-summary": "Purge the cache for the given titles.",
        "apihelp-purge-param-forcelinkupdate": "Update the links tables.",
        "apihelp-purge-param-forcerecursivelinkupdate": "Update the links table, and update the links tables for any page that uses this page as a template.",
        "apihelp-purge-example-simple": "Purge the <kbd>Main Page</kbd> and the <kbd>API</kbd> page.",
        "apihelp-purge-example-generator": "Purge the first 10 pages in the main namespace.",
 
-       "apihelp-query-description": "Fetch data from and about MediaWiki.\n\nAll data modifications will first have to use query to acquire a token to prevent abuse from malicious sites.",
+       "apihelp-query-summary": "Fetch data from and about MediaWiki.",
+       "apihelp-query-extended-description": "All data modifications will first have to use query to acquire a token to prevent abuse from malicious sites.",
        "apihelp-query-param-prop": "Which properties to get for the queried pages.",
        "apihelp-query-param-list": "Which lists to get.",
        "apihelp-query-param-meta": "Which metadata to get.",
        "apihelp-query-example-revisions": "Fetch [[Special:ApiHelp/query+siteinfo|site info]] and [[Special:ApiHelp/query+revisions|revisions]] of <kbd>Main Page</kbd>.",
        "apihelp-query-example-allpages": "Fetch revisions of pages beginning with <kbd>API/</kbd>.",
 
-       "apihelp-query+allcategories-description": "Enumerate all categories.",
+       "apihelp-query+allcategories-summary": "Enumerate all categories.",
        "apihelp-query+allcategories-param-from": "The category to start enumerating from.",
        "apihelp-query+allcategories-param-to": "The category to stop enumerating at.",
        "apihelp-query+allcategories-param-prefix": "Search for all category titles that begin with this value.",
        "apihelp-query+allcategories-example-size": "List categories with information on the number of pages in each.",
        "apihelp-query+allcategories-example-generator": "Retrieve info about the category page itself for categories beginning <kbd>List</kbd>.",
 
-       "apihelp-query+alldeletedrevisions-description": "List all deleted revisions by a user or in a namespace.",
+       "apihelp-query+alldeletedrevisions-summary": "List all deleted revisions by a user or in a namespace.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "May only be used with <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Cannot be used with <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-param-start": "The timestamp to start enumerating from.",
        "apihelp-query+alldeletedrevisions-example-user": "List the last 50 deleted contributions by user <kbd>Example</kbd>.",
        "apihelp-query+alldeletedrevisions-example-ns-main": "List the first 50 deleted revisions in the main namespace.",
 
-       "apihelp-query+allfileusages-description": "List all file usages, including non-existing.",
+       "apihelp-query+allfileusages-summary": "List all file usages, including non-existing.",
        "apihelp-query+allfileusages-param-from": "The title of the file to start enumerating from.",
        "apihelp-query+allfileusages-param-to": "The title of the file to stop enumerating at.",
        "apihelp-query+allfileusages-param-prefix": "Search for all file titles that begin with this value.",
        "apihelp-query+allfileusages-example-unique-generator": "Gets all file titles, marking the missing ones.",
        "apihelp-query+allfileusages-example-generator": "Gets pages containing the files.",
 
-       "apihelp-query+allimages-description": "Enumerate all images sequentially.",
+       "apihelp-query+allimages-summary": "Enumerate all images sequentially.",
        "apihelp-query+allimages-param-sort": "Property to sort by.",
        "apihelp-query+allimages-param-dir": "The direction in which to list.",
        "apihelp-query+allimages-param-from": "The image title to start enumerating from. Can only be used with $1sort=name.",
        "apihelp-query+allimages-example-mimetypes": "Show a list of files with MIME type <kbd>image/png</kbd> or <kbd>image/gif</kbd>",
        "apihelp-query+allimages-example-generator": "Show info about 4 files starting at the letter <kbd>T</kbd>.",
 
-       "apihelp-query+alllinks-description": "Enumerate all links that point to a given namespace.",
+       "apihelp-query+alllinks-summary": "Enumerate all links that point to a given namespace.",
        "apihelp-query+alllinks-param-from": "The title of the link to start enumerating from.",
        "apihelp-query+alllinks-param-to": "The title of the link to stop enumerating at.",
        "apihelp-query+alllinks-param-prefix": "Search for all linked titles that begin with this value.",
        "apihelp-query+alllinks-example-unique-generator": "Gets all linked titles, marking the missing ones.",
        "apihelp-query+alllinks-example-generator": "Gets pages containing the links.",
 
-       "apihelp-query+allmessages-description": "Return messages from this site.",
+       "apihelp-query+allmessages-summary": "Return messages from this site.",
        "apihelp-query+allmessages-param-messages": "Which messages to output. <kbd>*</kbd> (default) means all messages.",
        "apihelp-query+allmessages-param-prop": "Which properties to get.",
        "apihelp-query+allmessages-param-enableparser": "Set to enable parser, will preprocess the wikitext of message (substitute magic words, handle templates, etc.).",
        "apihelp-query+allmessages-example-ipb": "Show messages starting with <kbd>ipb-</kbd>.",
        "apihelp-query+allmessages-example-de": "Show messages <kbd>august</kbd> and <kbd>mainpage</kbd> in German.",
 
-       "apihelp-query+allpages-description": "Enumerate all pages sequentially in a given namespace.",
+       "apihelp-query+allpages-summary": "Enumerate all pages sequentially in a given namespace.",
        "apihelp-query+allpages-param-from": "The page title to start enumerating from.",
        "apihelp-query+allpages-param-to": "The page title to stop enumerating at.",
        "apihelp-query+allpages-param-prefix": "Search for all page titles that begin with this value.",
        "apihelp-query+allpages-example-generator": "Show info about 4 pages starting at the letter <kbd>T</kbd>.",
        "apihelp-query+allpages-example-generator-revisions": "Show content of first 2 non-redirect pages beginning at <kbd>Re</kbd>.",
 
-       "apihelp-query+allredirects-description": "List all redirects to a namespace.",
+       "apihelp-query+allredirects-summary": "List all redirects to a namespace.",
        "apihelp-query+allredirects-param-from": "The title of the redirect to start enumerating from.",
        "apihelp-query+allredirects-param-to": "The title of the redirect to stop enumerating at.",
        "apihelp-query+allredirects-param-prefix": "Search for all target pages that begin with this value.",
        "apihelp-query+allredirects-example-unique-generator": "Gets all target pages, marking the missing ones.",
        "apihelp-query+allredirects-example-generator": "Gets pages containing the redirects.",
 
-       "apihelp-query+allrevisions-description": "List all revisions.",
+       "apihelp-query+allrevisions-summary": "List all revisions.",
        "apihelp-query+allrevisions-param-start": "The timestamp to start enumerating from.",
        "apihelp-query+allrevisions-param-end": "The timestamp to stop enumerating at.",
        "apihelp-query+allrevisions-param-user": "Only list revisions by this user.",
        "apihelp-query+allrevisions-example-user": "List the last 50 contributions by user <kbd>Example</kbd>.",
        "apihelp-query+allrevisions-example-ns-main": "List the first 50 revisions in the main namespace.",
 
-       "apihelp-query+mystashedfiles-description": "Get a list of files in the current user's upload stash.",
+       "apihelp-query+mystashedfiles-summary": "Get a list of files in the current user's upload stash.",
        "apihelp-query+mystashedfiles-param-prop": "Which properties to fetch for the files.",
        "apihelp-query+mystashedfiles-paramvalue-prop-size": "Fetch the file size and image dimensions.",
        "apihelp-query+mystashedfiles-paramvalue-prop-type": "Fetch the file's MIME type and media type.",
        "apihelp-query+mystashedfiles-param-limit": "How many files to get.",
        "apihelp-query+mystashedfiles-example-simple": "Get the filekey, file size, and pixel size of files in the current user's upload stash.",
 
-       "apihelp-query+alltransclusions-description": "List all transclusions (pages embedded using &#123;&#123;x&#125;&#125;), including non-existing.",
+       "apihelp-query+alltransclusions-summary": "List all transclusions (pages embedded using &#123;&#123;x&#125;&#125;), including non-existing.",
        "apihelp-query+alltransclusions-param-from": "The title of the transclusion to start enumerating from.",
        "apihelp-query+alltransclusions-param-to": "The title of the transclusion to stop enumerating at.",
        "apihelp-query+alltransclusions-param-prefix": "Search for all transcluded titles that begin with this value.",
        "apihelp-query+alltransclusions-example-unique-generator": "Gets all transcluded titles, marking the missing ones.",
        "apihelp-query+alltransclusions-example-generator": "Gets pages containing the transclusions.",
 
-       "apihelp-query+allusers-description": "Enumerate all registered users.",
+       "apihelp-query+allusers-summary": "Enumerate all registered users.",
        "apihelp-query+allusers-param-from": "The user name to start enumerating from.",
        "apihelp-query+allusers-param-to": "The user name to stop enumerating at.",
        "apihelp-query+allusers-param-prefix": "Search for all users that begin with this value.",
        "apihelp-query+allusers-param-attachedwiki": "With <kbd>$1prop=centralids</kbd>, also indicate whether the user is attached with the wiki identified by this ID.",
        "apihelp-query+allusers-example-Y": "List users starting at <kbd>Y</kbd>.",
 
-       "apihelp-query+authmanagerinfo-description": "Retrieve information about the current authentication status.",
+       "apihelp-query+authmanagerinfo-summary": "Retrieve information about the current authentication status.",
        "apihelp-query+authmanagerinfo-param-securitysensitiveoperation": "Test whether the user's current authentication status is sufficient for the specified security-sensitive operation.",
        "apihelp-query+authmanagerinfo-param-requestsfor": "Fetch information about the authentication requests needed for the specified authentication action.",
        "apihelp-query+authmanagerinfo-example-login": "Fetch the requests that may be used when beginning a login.",
        "apihelp-query+authmanagerinfo-example-login-merged": "Fetch the requests that may be used when beginning a login, with form fields merged.",
        "apihelp-query+authmanagerinfo-example-securitysensitiveoperation": "Test whether authentication is sufficient for action <kbd>foo</kbd>.",
 
-       "apihelp-query+backlinks-description": "Find all pages that link to the given page.",
+       "apihelp-query+backlinks-summary": "Find all pages that link to the given page.",
        "apihelp-query+backlinks-param-title": "Title to search. Cannot be used together with <var>$1pageid</var>.",
        "apihelp-query+backlinks-param-pageid": "Page ID to search. Cannot be used together with <var>$1title</var>.",
        "apihelp-query+backlinks-param-namespace": "The namespace to enumerate.",
        "apihelp-query+backlinks-example-simple": "Show links to <kbd>Main page</kbd>.",
        "apihelp-query+backlinks-example-generator": "Get information about pages linking to <kbd>Main page</kbd>.",
 
-       "apihelp-query+blocks-description": "List all blocked users and IP addresses.",
+       "apihelp-query+blocks-summary": "List all blocked users and IP addresses.",
        "apihelp-query+blocks-param-start": "The timestamp to start enumerating from.",
        "apihelp-query+blocks-param-end": "The timestamp to stop enumerating at.",
        "apihelp-query+blocks-param-ids": "List of block IDs to list (optional).",
        "apihelp-query+blocks-example-simple": "List blocks.",
        "apihelp-query+blocks-example-users": "List blocks of users <kbd>Alice</kbd> and <kbd>Bob</kbd>.",
 
-       "apihelp-query+categories-description": "List all categories the pages belong to.",
+       "apihelp-query+categories-summary": "List all categories the pages belong to.",
        "apihelp-query+categories-param-prop": "Which additional properties to get for each category:",
        "apihelp-query+categories-paramvalue-prop-sortkey": "Adds the sortkey (hexadecimal string) and sortkey prefix (human-readable part) for the category.",
        "apihelp-query+categories-paramvalue-prop-timestamp": "Adds timestamp of when the category was added.",
        "apihelp-query+categories-example-simple": "Get a list of categories the page <kbd>Albert Einstein</kbd> belongs to.",
        "apihelp-query+categories-example-generator": "Get information about all categories used in the page <kbd>Albert Einstein</kbd>.",
 
-       "apihelp-query+categoryinfo-description": "Returns information about the given categories.",
+       "apihelp-query+categoryinfo-summary": "Returns information about the given categories.",
        "apihelp-query+categoryinfo-example-simple": "Get information about <kbd>Category:Foo</kbd> and <kbd>Category:Bar</kbd>.",
 
-       "apihelp-query+categorymembers-description": "List all pages in a given category.",
+       "apihelp-query+categorymembers-summary": "List all pages in a given category.",
        "apihelp-query+categorymembers-param-title": "Which category to enumerate (required). Must include the <kbd>{{ns:category}}:</kbd> prefix. Cannot be used together with <var>$1pageid</var>.",
        "apihelp-query+categorymembers-param-pageid": "Page ID of the category to enumerate. Cannot be used together with <var>$1title</var>.",
        "apihelp-query+categorymembers-param-prop": "Which pieces of information to include:",
        "apihelp-query+categorymembers-example-simple": "Get first 10 pages in <kbd>Category:Physics</kbd>.",
        "apihelp-query+categorymembers-example-generator": "Get page info about first 10 pages in <kbd>Category:Physics</kbd>.",
 
-       "apihelp-query+contributors-description": "Get the list of logged-in contributors and the count of anonymous contributors to a page.",
+       "apihelp-query+contributors-summary": "Get the list of logged-in contributors and the count of anonymous contributors to a page.",
        "apihelp-query+contributors-param-group": "Only include users in the given groups. Does not include implicit or auto-promoted groups like *, user, or autoconfirmed.",
        "apihelp-query+contributors-param-excludegroup": "Exclude users in the given groups. Does not include implicit or auto-promoted groups like *, user, or autoconfirmed.",
        "apihelp-query+contributors-param-rights": "Only include users having the given rights. Does not include rights granted by implicit or auto-promoted groups like *, user, or autoconfirmed.",
        "apihelp-query+contributors-param-limit": "How many contributors to return.",
        "apihelp-query+contributors-example-simple": "Show contributors to the page <kbd>Main Page</kbd>.",
 
-       "apihelp-query+deletedrevisions-description": "Get deleted revision information.\n\nMay be used in several ways:\n# Get deleted revisions for a set of pages, by setting titles or pageids. Ordered by title and timestamp.\n# Get data about a set of deleted revisions by setting their IDs with revids. Ordered by revision ID.",
+       "apihelp-query+deletedrevisions-summary": "Get deleted revision information.",
+       "apihelp-query+deletedrevisions-extended-description": "May be used in several ways:\n# Get deleted revisions for a set of pages, by setting titles or pageids. Ordered by title and timestamp.\n# Get data about a set of deleted revisions by setting their IDs with revids. Ordered by revision ID.",
        "apihelp-query+deletedrevisions-param-start": "The timestamp to start enumerating from. Ignored when processing a list of revision IDs.",
        "apihelp-query+deletedrevisions-param-end": "The timestamp to stop enumerating at. Ignored when processing a list of revision IDs.",
        "apihelp-query+deletedrevisions-param-tag": "Only list revisions tagged with this tag.",
        "apihelp-query+deletedrevisions-example-titles": "List the deleted revisions of the pages <kbd>Main Page</kbd> and <kbd>Talk:Main Page</kbd>, with content.",
        "apihelp-query+deletedrevisions-example-revids": "List the information for deleted revision <kbd>123456</kbd>.",
 
-       "apihelp-query+deletedrevs-description": "List deleted revisions.\n\nOperates in three modes:\n# List deleted revisions for the given titles, sorted by timestamp.\n# List deleted contributions for the given user, sorted by timestamp (no titles specified).\n# List all deleted revisions in the given namespace, sorted by title and timestamp (no titles specified, $1user not set).\n\nCertain parameters only apply to some modes and are ignored in others.",
+       "apihelp-query+deletedrevs-summary": "List deleted revisions.",
+       "apihelp-query+deletedrevs-extended-description": "Operates in three modes:\n# List deleted revisions for the given titles, sorted by timestamp.\n# List deleted contributions for the given user, sorted by timestamp (no titles specified).\n# List all deleted revisions in the given namespace, sorted by title and timestamp (no titles specified, $1user not set).\n\nCertain parameters only apply to some modes and are ignored in others.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Mode|Modes}}: $2",
        "apihelp-query+deletedrevs-param-start": "The timestamp to start enumerating from.",
        "apihelp-query+deletedrevs-param-end": "The timestamp to stop enumerating at.",
        "apihelp-query+deletedrevs-example-mode3-main": "List the first 50 deleted revisions in the main namespace (mode 3).",
        "apihelp-query+deletedrevs-example-mode3-talk": "List the first 50 deleted pages in the {{ns:talk}} namespace (mode 3).",
 
-       "apihelp-query+disabled-description": "This query module has been disabled.",
+       "apihelp-query+disabled-summary": "This query module has been disabled.",
 
-       "apihelp-query+duplicatefiles-description": "List all files that are duplicates of the given files based on hash values.",
+       "apihelp-query+duplicatefiles-summary": "List all files that are duplicates of the given files based on hash values.",
        "apihelp-query+duplicatefiles-param-limit": "How many duplicate files to return.",
        "apihelp-query+duplicatefiles-param-dir": "The direction in which to list.",
        "apihelp-query+duplicatefiles-param-localonly": "Look only for files in the local repository.",
        "apihelp-query+duplicatefiles-example-simple": "Look for duplicates of [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+duplicatefiles-example-generated": "Look for duplicates of all files.",
 
-       "apihelp-query+embeddedin-description": "Find all pages that embed (transclude) the given title.",
+       "apihelp-query+embeddedin-summary": "Find all pages that embed (transclude) the given title.",
        "apihelp-query+embeddedin-param-title": "Title to search. Cannot be used together with $1pageid.",
        "apihelp-query+embeddedin-param-pageid": "Page ID to search. Cannot be used together with $1title.",
        "apihelp-query+embeddedin-param-namespace": "The namespace to enumerate.",
        "apihelp-query+embeddedin-example-simple": "Show pages transcluding <kbd>Template:Stub</kbd>.",
        "apihelp-query+embeddedin-example-generator": "Get information about pages transcluding <kbd>Template:Stub</kbd>.",
 
-       "apihelp-query+extlinks-description": "Returns all external URLs (not interwikis) from the given pages.",
+       "apihelp-query+extlinks-summary": "Returns all external URLs (not interwikis) from the given pages.",
        "apihelp-query+extlinks-param-limit": "How many links to return.",
        "apihelp-query+extlinks-param-protocol": "Protocol of the URL. If empty and <var>$1query</var> is set, the protocol is <kbd>http</kbd>. Leave both this and <var>$1query</var> empty to list all external links.",
        "apihelp-query+extlinks-param-query": "Search string without protocol. Useful for checking whether a certain page contains a certain external url.",
        "apihelp-query+extlinks-param-expandurl": "Expand protocol-relative URLs with the canonical protocol.",
        "apihelp-query+extlinks-example-simple": "Get a list of external links on <kbd>Main Page</kbd>.",
 
-       "apihelp-query+exturlusage-description": "Enumerate pages that contain a given URL.",
+       "apihelp-query+exturlusage-summary": "Enumerate pages that contain a given URL.",
        "apihelp-query+exturlusage-param-prop": "Which pieces of information to include:",
        "apihelp-query+exturlusage-paramvalue-prop-ids": "Adds the ID of page.",
        "apihelp-query+exturlusage-paramvalue-prop-title": "Adds the title and namespace ID of the page.",
        "apihelp-query+exturlusage-param-expandurl": "Expand protocol-relative URLs with the canonical protocol.",
        "apihelp-query+exturlusage-example-simple": "Show pages linking to <kbd>http://www.mediawiki.org</kbd>.",
 
-       "apihelp-query+filearchive-description": "Enumerate all deleted files sequentially.",
+       "apihelp-query+filearchive-summary": "Enumerate all deleted files sequentially.",
        "apihelp-query+filearchive-param-from": "The image title to start enumerating from.",
        "apihelp-query+filearchive-param-to": "The image title to stop enumerating at.",
        "apihelp-query+filearchive-param-prefix": "Search for all image titles that begin with this value.",
        "apihelp-query+filearchive-paramvalue-prop-archivename": "Adds the filename of the archive version for non-latest versions.",
        "apihelp-query+filearchive-example-simple": "Show a list of all deleted files.",
 
-       "apihelp-query+filerepoinfo-description": "Return meta information about image repositories configured on the wiki.",
+       "apihelp-query+filerepoinfo-summary": "Return meta information about image repositories configured on the wiki.",
        "apihelp-query+filerepoinfo-param-prop": "Which repository properties to get (there may be more available on some wikis):\n;apiurl:URL to the repository API - helpful for getting image info from the host.\n;name:The key of the repository - used in e.g. <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> and [[Special:ApiHelp/query+imageinfo|imageinfo]] return values.\n;displayname:The human-readable name of the repository wiki.\n;rooturl:Root URL for image paths.\n;local:Whether that repository is the local one or not.",
        "apihelp-query+filerepoinfo-example-simple": "Get information about file repositories.",
 
-       "apihelp-query+fileusage-description": "Find all pages that use the given files.",
+       "apihelp-query+fileusage-summary": "Find all pages that use the given files.",
        "apihelp-query+fileusage-param-prop": "Which properties to get:",
        "apihelp-query+fileusage-paramvalue-prop-pageid": "Page ID of each page.",
        "apihelp-query+fileusage-paramvalue-prop-title": "Title of each page.",
        "apihelp-query+fileusage-example-simple": "Get a list of pages using [[:File:Example.jpg]].",
        "apihelp-query+fileusage-example-generator": "Get information about pages using [[:File:Example.jpg]].",
 
-       "apihelp-query+imageinfo-description": "Returns file information and upload history.",
+       "apihelp-query+imageinfo-summary": "Returns file information and upload history.",
        "apihelp-query+imageinfo-param-prop": "Which file information to get:",
        "apihelp-query+imageinfo-paramvalue-prop-timestamp": "Adds timestamp for the uploaded version.",
        "apihelp-query+imageinfo-paramvalue-prop-user": "Adds the user who uploaded each file version.",
        "apihelp-query+imageinfo-example-simple": "Fetch information about the current version of [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+imageinfo-example-dated": "Fetch information about versions of [[:File:Test.jpg]] from 2008 and later.",
 
-       "apihelp-query+images-description": "Returns all files contained on the given pages.",
+       "apihelp-query+images-summary": "Returns all files contained on the given pages.",
        "apihelp-query+images-param-limit": "How many files to return.",
        "apihelp-query+images-param-images": "Only list these files. Useful for checking whether a certain page has a certain file.",
        "apihelp-query+images-param-dir": "The direction in which to list.",
        "apihelp-query+images-example-simple": "Get a list of files used in the [[Main Page]].",
        "apihelp-query+images-example-generator": "Get information about all files used in the [[Main Page]].",
 
-       "apihelp-query+imageusage-description": "Find all pages that use the given image title.",
+       "apihelp-query+imageusage-summary": "Find all pages that use the given image title.",
        "apihelp-query+imageusage-param-title": "Title to search. Cannot be used together with $1pageid.",
        "apihelp-query+imageusage-param-pageid": "Page ID to search. Cannot be used together with $1title.",
        "apihelp-query+imageusage-param-namespace": "The namespace to enumerate.",
        "apihelp-query+imageusage-example-simple": "Show pages using [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+imageusage-example-generator": "Get information about pages using [[:File:Albert Einstein Head.jpg]].",
 
-       "apihelp-query+info-description": "Get basic page information.",
+       "apihelp-query+info-summary": "Get basic page information.",
        "apihelp-query+info-param-prop": "Which additional properties to get:",
        "apihelp-query+info-paramvalue-prop-protection": "List the protection level of each page.",
        "apihelp-query+info-paramvalue-prop-talkid": "The page ID of the talk page for each non-talk page.",
        "apihelp-query+info-example-simple": "Get information about the page <kbd>Main Page</kbd>.",
        "apihelp-query+info-example-protection": "Get general and protection information about the page <kbd>Main Page</kbd>.",
 
-       "apihelp-query+iwbacklinks-description": "Find all pages that link to the given interwiki link.\n\nCan be used to find all links with a prefix, or all links to a title (with a given prefix). Using neither parameter is effectively \"all interwiki links\".",
+       "apihelp-query+iwbacklinks-summary": "Find all pages that link to the given interwiki link.",
+       "apihelp-query+iwbacklinks-extended-description": "Can be used to find all links with a prefix, or all links to a title (with a given prefix). Using neither parameter is effectively \"all interwiki links\".",
        "apihelp-query+iwbacklinks-param-prefix": "Prefix for the interwiki.",
        "apihelp-query+iwbacklinks-param-title": "Interwiki link to search for. Must be used with <var>$1blprefix</var>.",
        "apihelp-query+iwbacklinks-param-limit": "How many total pages to return.",
        "apihelp-query+iwbacklinks-example-simple": "Get pages linking to [[wikibooks:Test]].",
        "apihelp-query+iwbacklinks-example-generator": "Get information about pages linking to [[wikibooks:Test]].",
 
-       "apihelp-query+iwlinks-description": "Returns all interwiki links from the given pages.",
+       "apihelp-query+iwlinks-summary": "Returns all interwiki links from the given pages.",
        "apihelp-query+iwlinks-param-url": "Whether to get the full URL (cannot be used with $1prop).",
        "apihelp-query+iwlinks-param-prop": "Which additional properties to get for each interlanguage link:",
        "apihelp-query+iwlinks-paramvalue-prop-url": "Adds the full URL.",
        "apihelp-query+iwlinks-param-dir": "The direction in which to list.",
        "apihelp-query+iwlinks-example-simple": "Get interwiki links from the page <kbd>Main Page</kbd>.",
 
-       "apihelp-query+langbacklinks-description": "Find all pages that link to the given language link.\n\nCan be used to find all links with a language code, or all links to a title (with a given language). Using neither parameter is effectively \"all language links\".\n\nNote that this may not consider language links added by extensions.",
+       "apihelp-query+langbacklinks-summary": "Find all pages that link to the given language link.",
+       "apihelp-query+langbacklinks-extended-description": "Can be used to find all links with a language code, or all links to a title (with a given language). Using neither parameter is effectively \"all language links\".\n\nNote that this may not consider language links added by extensions.",
        "apihelp-query+langbacklinks-param-lang": "Language for the language link.",
        "apihelp-query+langbacklinks-param-title": "Language link to search for. Must be used with $1lang.",
        "apihelp-query+langbacklinks-param-limit": "How many total pages to return.",
        "apihelp-query+langbacklinks-example-simple": "Get pages linking to [[:fr:Test]].",
        "apihelp-query+langbacklinks-example-generator": "Get information about pages linking to [[:fr:Test]].",
 
-       "apihelp-query+langlinks-description": "Returns all interlanguage links from the given pages.",
+       "apihelp-query+langlinks-summary": "Returns all interlanguage links from the given pages.",
        "apihelp-query+langlinks-param-limit": "How many langlinks to return.",
        "apihelp-query+langlinks-param-url": "Whether to get the full URL (cannot be used with <var>$1prop</var>).",
        "apihelp-query+langlinks-param-prop": "Which additional properties to get for each interlanguage link:",
        "apihelp-query+langlinks-param-inlanguagecode": "Language code for localised language names.",
        "apihelp-query+langlinks-example-simple": "Get interlanguage links from the page <kbd>Main Page</kbd>.",
 
-       "apihelp-query+links-description": "Returns all links from the given pages.",
+       "apihelp-query+links-summary": "Returns all links from the given pages.",
        "apihelp-query+links-param-namespace": "Show links in these namespaces only.",
        "apihelp-query+links-param-limit": "How many links to return.",
        "apihelp-query+links-param-titles": "Only list links to these titles. Useful for checking whether a certain page links to a certain title.",
        "apihelp-query+links-example-generator": "Get information about the link pages in the page <kbd>Main Page</kbd>.",
        "apihelp-query+links-example-namespaces": "Get links from the page <kbd>Main Page</kbd> in the {{ns:user}} and {{ns:template}} namespaces.",
 
-       "apihelp-query+linkshere-description": "Find all pages that link to the given pages.",
+       "apihelp-query+linkshere-summary": "Find all pages that link to the given pages.",
        "apihelp-query+linkshere-param-prop": "Which properties to get:",
        "apihelp-query+linkshere-paramvalue-prop-pageid": "Page ID of each page.",
        "apihelp-query+linkshere-paramvalue-prop-title": "Title of each page.",
        "apihelp-query+linkshere-example-simple": "Get a list of pages linking to the [[Main Page]].",
        "apihelp-query+linkshere-example-generator": "Get information about pages linking to the [[Main Page]].",
 
-       "apihelp-query+logevents-description": "Get events from logs.",
+       "apihelp-query+logevents-summary": "Get events from logs.",
        "apihelp-query+logevents-param-prop": "Which properties to get:",
        "apihelp-query+logevents-paramvalue-prop-ids": "Adds the ID of the log event.",
        "apihelp-query+logevents-paramvalue-prop-title": "Adds the title of the page for the log event.",
        "apihelp-query+logevents-param-limit": "How many total event entries to return.",
        "apihelp-query+logevents-example-simple": "List recent log events.",
 
-       "apihelp-query+pagepropnames-description": "List all page property names in use on the wiki.",
+       "apihelp-query+pagepropnames-summary": "List all page property names in use on the wiki.",
        "apihelp-query+pagepropnames-param-limit": "The maximum number of names to return.",
        "apihelp-query+pagepropnames-example-simple": "Get first 10 property names.",
 
-       "apihelp-query+pageprops-description": "Get various page properties defined in the page content.",
+       "apihelp-query+pageprops-summary": "Get various page properties defined in the page content.",
        "apihelp-query+pageprops-param-prop": "Only list these page properties (<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd> returns page property names in use). Useful for checking whether pages use a certain page property.",
        "apihelp-query+pageprops-example-simple": "Get properties for the pages <kbd>Main Page</kbd> and <kbd>MediaWiki</kbd>.",
 
-       "apihelp-query+pageswithprop-description": "List all pages using a given page property.",
+       "apihelp-query+pageswithprop-summary": "List all pages using a given page property.",
        "apihelp-query+pageswithprop-param-propname": "Page property for which to enumerate pages (<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd> returns page property names in use).",
        "apihelp-query+pageswithprop-param-prop": "Which pieces of information to include:",
        "apihelp-query+pageswithprop-paramvalue-prop-ids": "Adds the page ID.",
        "apihelp-query+pageswithprop-example-simple": "List the first 10 pages using <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+pageswithprop-example-generator": "Get additional information about the first 10 pages using <code>_&#95;NOTOC_&#95;</code>.",
 
-       "apihelp-query+prefixsearch-description": "Perform a prefix search for page titles.\n\nDespite the similarity in names, this module is not intended to be equivalent to [[Special:PrefixIndex]]; for that, see <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> with the <kbd>apprefix</kbd> parameter. The purpose of this module is similar to <kbd>[[Special:ApiHelp/opensearch|action=opensearch]]</kbd>: to take user input and provide the best-matching titles. Depending on the search engine backend, this might include typo correction, redirect avoidance, or other heuristics.",
+       "apihelp-query+prefixsearch-summary": "Perform a prefix search for page titles.",
+       "apihelp-query+prefixsearch-extended-description": "Despite the similarity in names, this module is not intended to be equivalent to [[Special:PrefixIndex]]; for that, see <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> with the <kbd>apprefix</kbd> parameter. The purpose of this module is similar to <kbd>[[Special:ApiHelp/opensearch|action=opensearch]]</kbd>: to take user input and provide the best-matching titles. Depending on the search engine backend, this might include typo correction, redirect avoidance, or other heuristics.",
        "apihelp-query+prefixsearch-param-search": "Search string.",
        "apihelp-query+prefixsearch-param-namespace": "Namespaces to search.",
        "apihelp-query+prefixsearch-param-limit": "Maximum number of results to return.",
        "apihelp-query+prefixsearch-example-simple": "Search for page titles beginning with <kbd>meaning</kbd>.",
        "apihelp-query+prefixsearch-param-profile": "Search profile to use.",
 
-       "apihelp-query+protectedtitles-description": "List all titles protected from creation.",
+       "apihelp-query+protectedtitles-summary": "List all titles protected from creation.",
        "apihelp-query+protectedtitles-param-namespace": "Only list titles in these namespaces.",
        "apihelp-query+protectedtitles-param-level": "Only list titles with these protection levels.",
        "apihelp-query+protectedtitles-param-limit": "How many total pages to return.",
        "apihelp-query+protectedtitles-example-simple": "List protected titles.",
        "apihelp-query+protectedtitles-example-generator": "Find links to protected titles in the main namespace.",
 
-       "apihelp-query+querypage-description": "Get a list provided by a QueryPage-based special page.",
+       "apihelp-query+querypage-summary": "Get a list provided by a QueryPage-based special page.",
        "apihelp-query+querypage-param-page": "The name of the special page. Note, this is case sensitive.",
        "apihelp-query+querypage-param-limit": "Number of results to return.",
        "apihelp-query+querypage-example-ancientpages": "Return results from [[Special:Ancientpages]].",
 
-       "apihelp-query+random-description": "Get a set of random pages.\n\nPages are listed in a fixed sequence, only the starting point is random. This means that if, for example, <samp>Main Page</samp> is the first random page in the list, <samp>List of fictional monkeys</samp> will <em>always</em> be second, <samp>List of people on stamps of Vanuatu</samp> third, etc.",
+       "apihelp-query+random-summary": "Get a set of random pages.",
+       "apihelp-query+random-extended-description": "Pages are listed in a fixed sequence, only the starting point is random. This means that if, for example, <samp>Main Page</samp> is the first random page in the list, <samp>List of fictional monkeys</samp> will <em>always</em> be second, <samp>List of people on stamps of Vanuatu</samp> third, etc.",
        "apihelp-query+random-param-namespace": "Return pages in these namespaces only.",
        "apihelp-query+random-param-limit": "Limit how many random pages will be returned.",
        "apihelp-query+random-param-redirect": "Use <kbd>$1filterredir=redirects</kbd> instead.",
        "apihelp-query+random-example-simple": "Return two random pages from the main namespace.",
        "apihelp-query+random-example-generator": "Return page info about two random pages from the main namespace.",
 
-       "apihelp-query+recentchanges-description": "Enumerate recent changes.",
+       "apihelp-query+recentchanges-summary": "Enumerate recent changes.",
        "apihelp-query+recentchanges-param-start": "The timestamp to start enumerating from.",
        "apihelp-query+recentchanges-param-end": "The timestamp to end enumerating.",
        "apihelp-query+recentchanges-param-namespace": "Filter changes to only these namespaces.",
        "apihelp-query+recentchanges-example-simple": "List recent changes.",
        "apihelp-query+recentchanges-example-generator": "Get page info about recent unpatrolled changes.",
 
-       "apihelp-query+redirects-description": "Returns all redirects to the given pages.",
+       "apihelp-query+redirects-summary": "Returns all redirects to the given pages.",
        "apihelp-query+redirects-param-prop": "Which properties to get:",
        "apihelp-query+redirects-paramvalue-prop-pageid": "Page ID of each redirect.",
        "apihelp-query+redirects-paramvalue-prop-title": "Title of each redirect.",
        "apihelp-query+redirects-example-simple": "Get a list of redirects to the [[Main Page]].",
        "apihelp-query+redirects-example-generator": "Get information about all redirects to the [[Main Page]].",
 
-       "apihelp-query+revisions-description": "Get revision information.\n\nMay be used in several ways:\n# Get data about a set of pages (last revision), by setting titles or pageids.\n# Get revisions for one given page, by using titles or pageids with start, end, or limit.\n# Get data about a set of revisions by setting their IDs with revids.",
+       "apihelp-query+revisions-summary": "Get revision information.",
+       "apihelp-query+revisions-extended-description": "May be used in several ways:\n# Get data about a set of pages (last revision), by setting titles or pageids.\n# Get revisions for one given page, by using titles or pageids with start, end, or limit.\n# Get data about a set of revisions by setting their IDs with revids.",
        "apihelp-query+revisions-paraminfo-singlepageonly": "May only be used with a single page (mode #2).",
-       "apihelp-query+revisions-param-startid": "From which revision ID to start enumeration.",
-       "apihelp-query+revisions-param-endid": "Stop revision enumeration on this revision ID.",
+       "apihelp-query+revisions-param-startid": "Start enumeration from this revision's timestamp. The revision must exist, but need not belong to this page.",
+       "apihelp-query+revisions-param-endid": "Stop enumeration at this revision's timestamp. The revision must exist, but need not belong to this page.",
        "apihelp-query+revisions-param-start": "From which revision timestamp to start enumeration.",
        "apihelp-query+revisions-param-end": "Enumerate up to this timestamp.",
        "apihelp-query+revisions-param-user": "Only include revisions made by user.",
        "apihelp-query+revisions+base-paramvalue-prop-parsedcomment": "Parsed comment by the user for the revision.",
        "apihelp-query+revisions+base-paramvalue-prop-content": "Text of the revision.",
        "apihelp-query+revisions+base-paramvalue-prop-tags": "Tags for the revision.",
-       "apihelp-query+revisions+base-paramvalue-prop-parsetree": "The XML parse tree of revision content (requires content model <code>$1</code>).",
+       "apihelp-query+revisions+base-paramvalue-prop-parsetree": "<span class=\"apihelp-deprecated\">Deprecated.</span> Use <kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> or <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd> instead. The XML parse tree of revision content (requires content model <code>$1</code>).",
        "apihelp-query+revisions+base-param-limit": "Limit how many revisions will be returned.",
-       "apihelp-query+revisions+base-param-expandtemplates": "Expand templates in revision content (requires $1prop=content).",
-       "apihelp-query+revisions+base-param-generatexml": "Generate XML parse tree for revision content (requires $1prop=content; replaced by <kbd>$1prop=parsetree</kbd>).",
-       "apihelp-query+revisions+base-param-parse": "Parse revision content (requires $1prop=content). For performance reasons, if this option is used, $1limit is enforced to 1.",
+       "apihelp-query+revisions+base-param-expandtemplates": "Use <kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> instead. Expand templates in revision content (requires $1prop=content).",
+       "apihelp-query+revisions+base-param-generatexml": "Use <kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> or <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd> instead. Generate XML parse tree for revision content (requires $1prop=content).",
+       "apihelp-query+revisions+base-param-parse": "Use <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd> instead. Parse revision content (requires $1prop=content). For performance reasons, if this option is used, $1limit is enforced to 1.",
        "apihelp-query+revisions+base-param-section": "Only retrieve the content of this section number.",
-       "apihelp-query+revisions+base-param-diffto": "Revision ID to diff each revision to. Use <kbd>prev</kbd>, <kbd>next</kbd> and <kbd>cur</kbd> for the previous, next and current revision respectively.",
-       "apihelp-query+revisions+base-param-difftotext": "Text to diff each revision to. Only diffs a limited number of revisions. Overrides <var>$1diffto</var>. If <var>$1section</var> is set, only that section will be diffed against this text.",
-       "apihelp-query+revisions+base-param-difftotextpst": "Perform a pre-save transform on the text before diffing it. Only valid when used with <var>$1difftotext</var>.",
+       "apihelp-query+revisions+base-param-diffto": "Use <kbd>[[Special:ApiHelp/compare|action=compare]]</kbd> instead. Revision ID to diff each revision to. Use <kbd>prev</kbd>, <kbd>next</kbd> and <kbd>cur</kbd> for the previous, next and current revision respectively.",
+       "apihelp-query+revisions+base-param-difftotext": "Use <kbd>[[Special:ApiHelp/compare|action=compare]]</kbd> instead. Text to diff each revision to. Only diffs a limited number of revisions. Overrides <var>$1diffto</var>. If <var>$1section</var> is set, only that section will be diffed against this text.",
+       "apihelp-query+revisions+base-param-difftotextpst": "Use <kbd>[[Special:ApiHelp/compare|action=compare]]</kbd> instead. Perform a pre-save transform on the text before diffing it. Only valid when used with <var>$1difftotext</var>.",
        "apihelp-query+revisions+base-param-contentformat": "Serialization format used for <var>$1difftotext</var> and expected for output of content.",
 
-       "apihelp-query+search-description": "Perform a full text search.",
+       "apihelp-query+search-summary": "Perform a full text search.",
        "apihelp-query+search-param-search": "Search for page titles or content matching this value. You can use the search string to invoke special search features, depending on what the wiki's search backend implements.",
        "apihelp-query+search-param-namespace": "Search only within these namespaces.",
        "apihelp-query+search-param-what": "Which type of search to perform.",
        "apihelp-query+search-paramvalue-prop-sectiontitle": "Adds the title of the matching section.",
        "apihelp-query+search-paramvalue-prop-categorysnippet": "Adds a parsed snippet of the matching category.",
        "apihelp-query+search-paramvalue-prop-isfilematch": "Adds a boolean indicating if the search matched file content.",
-       "apihelp-query+search-paramvalue-prop-score": "<span class=\"apihelp-deprecated\">Deprecated and ignored.</span>",
-       "apihelp-query+search-paramvalue-prop-hasrelated": "<span class=\"apihelp-deprecated\">Deprecated and ignored.</span>",
+       "apihelp-query+search-paramvalue-prop-score": "Ignored.",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "Ignored.",
        "apihelp-query+search-param-limit": "How many total pages to return.",
        "apihelp-query+search-param-interwiki": "Include interwiki results in the search, if available.",
        "apihelp-query+search-param-backend": "Which search backend to use, if not the default.",
-       "apihelp-query+search-param-enablerewrites": "Enable internal query rewriting. Some search backends can rewrite the query into one its thinks gives better results, such as correcting spelling errors.",
+       "apihelp-query+search-param-enablerewrites": "Enable internal query rewriting. Some search backends can rewrite the query into another which is thought to provide better results, for instance by correcting spelling errors.",
        "apihelp-query+search-example-simple": "Search for <kbd>meaning</kbd>.",
        "apihelp-query+search-example-text": "Search texts for <kbd>meaning</kbd>.",
        "apihelp-query+search-example-generator": "Get page info about the pages returned for a search for <kbd>meaning</kbd>.",
 
-       "apihelp-query+siteinfo-description": "Return general information about the site.",
+       "apihelp-query+siteinfo-summary": "Return general information about the site.",
        "apihelp-query+siteinfo-param-prop": "Which information to get:",
        "apihelp-query+siteinfo-paramvalue-prop-general": "Overall system information.",
        "apihelp-query+siteinfo-paramvalue-prop-namespaces": "List of registered namespaces and their canonical names.",
        "apihelp-query+siteinfo-example-interwiki": "Fetch a list of local interwiki prefixes.",
        "apihelp-query+siteinfo-example-replag": "Check the current replication lag.",
 
-       "apihelp-query+stashimageinfo-description": "Returns file information for stashed files.",
+       "apihelp-query+stashimageinfo-summary": "Returns file information for stashed files.",
        "apihelp-query+stashimageinfo-param-filekey": "Key that identifies a previous upload that was stashed temporarily.",
        "apihelp-query+stashimageinfo-param-sessionkey": "Alias for $1filekey, for backward compatibility.",
        "apihelp-query+stashimageinfo-example-simple": "Returns information for a stashed file.",
        "apihelp-query+stashimageinfo-example-params": "Returns thumbnails for two stashed files.",
 
-       "apihelp-query+tags-description": "List change tags.",
+       "apihelp-query+tags-summary": "List change tags.",
        "apihelp-query+tags-param-limit": "The maximum number of tags to list.",
        "apihelp-query+tags-param-prop": "Which properties to get:",
        "apihelp-query+tags-paramvalue-prop-name": "Adds name of tag.",
        "apihelp-query+tags-paramvalue-prop-active": "Whether the tag is still being applied.",
        "apihelp-query+tags-example-simple": "List available tags.",
 
-       "apihelp-query+templates-description": "Returns all pages transcluded on the given pages.",
-       "apihelp-query+templates-param-namespace": "Show templates in this namespaces only.",
+       "apihelp-query+templates-summary": "Returns all pages transcluded on the given pages.",
+       "apihelp-query+templates-param-namespace": "Show templates in these namespaces only.",
        "apihelp-query+templates-param-limit": "How many templates to return.",
        "apihelp-query+templates-param-templates": "Only list these templates. Useful for checking whether a certain page uses a certain template.",
        "apihelp-query+templates-param-dir": "The direction in which to list.",
        "apihelp-query+templates-example-generator": "Get information about the template pages used on <kbd>Main Page</kbd>.",
        "apihelp-query+templates-example-namespaces": "Get pages in the {{ns:user}} and {{ns:template}} namespaces that are transcluded on the page <kbd>Main Page</kbd>.",
 
-       "apihelp-query+tokens-description": "Gets tokens for data-modifying actions.",
+       "apihelp-query+tokens-summary": "Gets tokens for data-modifying actions.",
        "apihelp-query+tokens-param-type": "Types of token to request.",
        "apihelp-query+tokens-example-simple": "Retrieve a csrf token (the default).",
        "apihelp-query+tokens-example-types": "Retrieve a watch token and a patrol token.",
 
-       "apihelp-query+transcludedin-description": "Find all pages that transclude the given pages.",
+       "apihelp-query+transcludedin-summary": "Find all pages that transclude the given pages.",
        "apihelp-query+transcludedin-param-prop": "Which properties to get:",
        "apihelp-query+transcludedin-paramvalue-prop-pageid": "Page ID of each page.",
        "apihelp-query+transcludedin-paramvalue-prop-title": "Title of each page.",
        "apihelp-query+transcludedin-example-simple": "Get a list of pages transcluding <kbd>Main Page</kbd>.",
        "apihelp-query+transcludedin-example-generator": "Get information about pages transcluding <kbd>Main Page</kbd>.",
 
-       "apihelp-query+usercontribs-description": "Get all edits by a user.",
+       "apihelp-query+usercontribs-summary": "Get all edits by a user.",
        "apihelp-query+usercontribs-param-limit": "The maximum number of contributions to return.",
        "apihelp-query+usercontribs-param-start": "The start timestamp to return from.",
        "apihelp-query+usercontribs-param-end": "The end timestamp to return to.",
        "apihelp-query+usercontribs-example-user": "Show contributions of user <kbd>Example</kbd>.",
        "apihelp-query+usercontribs-example-ipprefix": "Show contributions from all IP addresses with prefix <kbd>192.0.2.</kbd>.",
 
-       "apihelp-query+userinfo-description": "Get information about the current user.",
+       "apihelp-query+userinfo-summary": "Get information about the current user.",
        "apihelp-query+userinfo-param-prop": "Which pieces of information to include:",
        "apihelp-query+userinfo-paramvalue-prop-blockinfo": "Tags if the current user is blocked, by whom, and for what reason.",
        "apihelp-query+userinfo-paramvalue-prop-hasmsg": "Adds a tag <samp>messages</samp> if the current user has pending messages.",
        "apihelp-query+userinfo-paramvalue-prop-rights": "Lists all the rights the current user has.",
        "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Lists the groups the current user can add to and remove from.",
        "apihelp-query+userinfo-paramvalue-prop-options": "Lists all preferences the current user has set.",
-       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "<span class=\"apihelp-deprecated\">Deprecated.</span> Get a token to change current user's preferences.",
+       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "Get a token to change current user's preferences.",
        "apihelp-query+userinfo-paramvalue-prop-editcount": "Adds the current user's edit count.",
        "apihelp-query+userinfo-paramvalue-prop-ratelimits": "Lists all rate limits applying to the current user.",
        "apihelp-query+userinfo-paramvalue-prop-realname": "Adds the user's real name.",
        "apihelp-query+userinfo-example-simple": "Get information about the current user.",
        "apihelp-query+userinfo-example-data": "Get additional information about the current user.",
 
-       "apihelp-query+users-description": "Get information about a list of users.",
+       "apihelp-query+users-summary": "Get information about a list of users.",
        "apihelp-query+users-param-prop": "Which pieces of information to include:",
        "apihelp-query+users-paramvalue-prop-blockinfo": "Tags if the user is blocked, by whom, and for what reason.",
        "apihelp-query+users-paramvalue-prop-groups": "Lists all the groups each user belongs to.",
        "apihelp-query+users-param-token": "Use <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> instead.",
        "apihelp-query+users-example-simple": "Return information for user <kbd>Example</kbd>.",
 
-       "apihelp-query+watchlist-description": "Get recent changes to pages in the current user's watchlist.",
+       "apihelp-query+watchlist-summary": "Get recent changes to pages in the current user's watchlist.",
        "apihelp-query+watchlist-param-allrev": "Include multiple revisions of the same page within given timeframe.",
        "apihelp-query+watchlist-param-start": "The timestamp to start enumerating from.",
        "apihelp-query+watchlist-param-end": "The timestamp to end enumerating.",
        "apihelp-query+watchlist-example-generator-rev": "Fetch revision info for recent changes to pages on the current user's watchlist.",
        "apihelp-query+watchlist-example-wlowner": "List the top revision for recently changed pages on the watchlist of user <kbd>Example</kbd>.",
 
-       "apihelp-query+watchlistraw-description": "Get all pages on the current user's watchlist.",
+       "apihelp-query+watchlistraw-summary": "Get all pages on the current user's watchlist.",
        "apihelp-query+watchlistraw-param-namespace": "Only list pages in the given namespaces.",
        "apihelp-query+watchlistraw-param-limit": "How many total results to return per request.",
        "apihelp-query+watchlistraw-param-prop": "Which additional properties to get:",
        "apihelp-query+watchlistraw-example-simple": "List pages on the current user's watchlist.",
        "apihelp-query+watchlistraw-example-generator": "Fetch page info for pages on the current user's watchlist.",
 
-       "apihelp-removeauthenticationdata-description": "Remove authentication data for the current user.",
+       "apihelp-removeauthenticationdata-summary": "Remove authentication data for the current user.",
        "apihelp-removeauthenticationdata-example-simple": "Attempt to remove the current user's data for <kbd>FooAuthenticationRequest</kbd>.",
 
-       "apihelp-resetpassword-description": "Send a password reset email to a user.",
-       "apihelp-resetpassword-description-noroutes": "No password reset routes are available.\n\nEnable routes in <var>[[mw:Special:MyLanguage/Manual:$wgPasswordResetRoutes|$wgPasswordResetRoutes]]</var> to use this module.",
+       "apihelp-resetpassword-summary": "Send a password reset email to a user.",
+       "apihelp-resetpassword-extended-description-noroutes": "No password reset routes are available.\n\nEnable routes in <var>[[mw:Special:MyLanguage/Manual:$wgPasswordResetRoutes|$wgPasswordResetRoutes]]</var> to use this module.",
        "apihelp-resetpassword-param-user": "User being reset.",
        "apihelp-resetpassword-param-email": "Email address of the user being reset.",
        "apihelp-resetpassword-example-user": "Send a password reset email to user <kbd>Example</kbd>.",
        "apihelp-resetpassword-example-email": "Send a password reset email for all users with email address <kbd>user@example.com</kbd>.",
 
-       "apihelp-revisiondelete-description": "Delete and undelete revisions.",
+       "apihelp-revisiondelete-summary": "Delete and undelete revisions.",
        "apihelp-revisiondelete-param-type": "Type of revision deletion being performed.",
        "apihelp-revisiondelete-param-target": "Page title for the revision deletion, if required for the type.",
        "apihelp-revisiondelete-param-ids": "Identifiers for the revisions to be deleted.",
        "apihelp-revisiondelete-example-revision": "Hide content for revision <kbd>12345</kbd> on the page <kbd>Main Page</kbd>.",
        "apihelp-revisiondelete-example-log": "Hide all data on log entry <kbd>67890</kbd> with the reason <kbd>BLP violation</kbd>.",
 
-       "apihelp-rollback-description": "Undo the last edit to the page.\n\nIf the last user who edited the page made multiple edits in a row, they will all be rolled back.",
+       "apihelp-rollback-summary": "Undo the last edit to the page.",
+       "apihelp-rollback-extended-description": "If the last user who edited the page made multiple edits in a row, they will all be rolled back.",
        "apihelp-rollback-param-title": "Title of the page to roll back. Cannot be used together with <var>$1pageid</var>.",
        "apihelp-rollback-param-pageid": "Page ID of the page to roll back. Cannot be used together with <var>$1title</var>.",
        "apihelp-rollback-param-tags": "Tags to apply to the rollback.",
        "apihelp-rollback-example-simple": "Roll back the last edits to page <kbd>Main Page</kbd> by user <kbd>Example</kbd>.",
        "apihelp-rollback-example-summary": "Roll back the last edits to page <kbd>Main Page</kbd> by IP user <kbd>192.0.2.5</kbd> with summary <kbd>Reverting vandalism</kbd>, and mark those edits and the revert as bot edits.",
 
-       "apihelp-rsd-description": "Export an RSD (Really Simple Discovery) schema.",
+       "apihelp-rsd-summary": "Export an RSD (Really Simple Discovery) schema.",
        "apihelp-rsd-example-simple": "Export the RSD schema.",
 
-       "apihelp-setnotificationtimestamp-description": "Update the notification timestamp for watched pages.\n\nThis affects the highlighting of changed pages in the watchlist and history, and the sending of email when the \"{{int:tog-enotifwatchlistpages}}\" preference is enabled.",
+       "apihelp-setnotificationtimestamp-summary": "Update the notification timestamp for watched pages.",
+       "apihelp-setnotificationtimestamp-extended-description": "This affects the highlighting of changed pages in the watchlist and history, and the sending of email when the \"{{int:tog-enotifwatchlistpages}}\" preference is enabled.",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "Work on all watched pages.",
        "apihelp-setnotificationtimestamp-param-timestamp": "Timestamp to which to set the notification timestamp.",
        "apihelp-setnotificationtimestamp-param-torevid": "Revision to set the notification timestamp to (one page only).",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "Set the notification timestamp for <kbd>Main page</kbd> so all edits since 1 January 2012 are unviewed.",
        "apihelp-setnotificationtimestamp-example-allpages": "Reset the notification status for pages in the <kbd>{{ns:user}}</kbd> namespace.",
 
-       "apihelp-setpagelanguage-description": "Change the language of a page.",
-       "apihelp-setpagelanguage-description-disabled": "Changing the language of a page is not allowed on this wiki.\n\nEnable <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> to use this action.",
+       "apihelp-setpagelanguage-summary": "Change the language of a page.",
+       "apihelp-setpagelanguage-extended-description-disabled": "Changing the language of a page is not allowed on this wiki.\n\nEnable <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> to use this action.",
        "apihelp-setpagelanguage-param-title": "Title of the page whose language you wish to change. Cannot be used together with <var>$1pageid</var>.",
        "apihelp-setpagelanguage-param-pageid": "Page ID of the page whose language you wish to change. Cannot be used together with <var>$1title</var>.",
        "apihelp-setpagelanguage-param-lang": "Language code of the language to change the page to. Use <kbd>default</kbd> to reset the page to the wiki's default content language.",
        "apihelp-setpagelanguage-example-language": "Change the language of <kbd>Main Page</kbd> to Basque.",
        "apihelp-setpagelanguage-example-default": "Change the language of the page with ID 123 to the wiki's default content language.",
 
-       "apihelp-stashedit-description": "Prepare an edit in shared cache.\n\nThis is intended to be used via AJAX from the edit form to improve the performance of the page save.",
+       "apihelp-stashedit-summary": "Prepare an edit in shared cache.",
+       "apihelp-stashedit-extended-description": "This is intended to be used via AJAX from the edit form to improve the performance of the page save.",
        "apihelp-stashedit-param-title": "Title of the page being edited.",
        "apihelp-stashedit-param-section": "Section number. <kbd>0</kbd> for the top section, <kbd>new</kbd> for a new section.",
        "apihelp-stashedit-param-sectiontitle": "The title for a new section.",
        "apihelp-stashedit-param-baserevid": "Revision ID of the base revision.",
        "apihelp-stashedit-param-summary": "Change summary.",
 
-       "apihelp-tag-description": "Add or remove change tags from individual revisions or log entries.",
+       "apihelp-tag-summary": "Add or remove change tags from individual revisions or log entries.",
        "apihelp-tag-param-rcid": "One or more recent changes IDs from which to add or remove the tag.",
        "apihelp-tag-param-revid": "One or more revision IDs from which to add or remove the tag.",
        "apihelp-tag-param-logid": "One or more log entry IDs from which to add or remove the tag.",
        "apihelp-tag-example-rev": "Add the <kbd>vandalism</kbd> tag to revision ID 123 without specifying a reason",
        "apihelp-tag-example-log": "Remove the <kbd>spam</kbd> tag from log entry ID 123 with the reason <kbd>Wrongly applied</kbd>",
 
-       "apihelp-tokens-description": "Get tokens for data-modifying actions.\n\nThis module is deprecated in favor of [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
+       "apihelp-tokens-summary": "Get tokens for data-modifying actions.",
+       "apihelp-tokens-extended-description": "This module is deprecated in favor of [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
        "apihelp-tokens-param-type": "Types of token to request.",
        "apihelp-tokens-example-edit": "Retrieve an edit token (the default).",
        "apihelp-tokens-example-emailmove": "Retrieve an email token and a move token.",
 
-       "apihelp-unblock-description": "Unblock a user.",
+       "apihelp-unblock-summary": "Unblock a user.",
        "apihelp-unblock-param-id": "ID of the block to unblock (obtained through <kbd>list=blocks</kbd>). Cannot be used together with <var>$1user</var> or <var>$1userid</var>.",
        "apihelp-unblock-param-user": "Username, IP address or IP address range to unblock. Cannot be used together with <var>$1id</var> or <var>$1userid</var>.",
        "apihelp-unblock-param-userid": "User ID to unblock. Cannot be used together with <var>$1id</var> or <var>$1user</var>.",
        "apihelp-unblock-example-id": "Unblock block ID #<kbd>105</kbd>.",
        "apihelp-unblock-example-user": "Unblock user <kbd>Bob</kbd> with reason <kbd>Sorry Bob</kbd>.",
 
-       "apihelp-undelete-description": "Restore revisions of a deleted page.\n\nA list of deleted revisions (including timestamps) can be retrieved through [[Special:ApiHelp/query+deletedrevisions|prop=deletedrevisions]], and a list of deleted file IDs can be retrieved through [[Special:ApiHelp/query+filearchive|list=filearchive]].",
+       "apihelp-undelete-summary": "Restore revisions of a deleted page.",
+       "apihelp-undelete-extended-description": "A list of deleted revisions (including timestamps) can be retrieved through [[Special:ApiHelp/query+deletedrevisions|prop=deletedrevisions]], and a list of deleted file IDs can be retrieved through [[Special:ApiHelp/query+filearchive|list=filearchive]].",
        "apihelp-undelete-param-title": "Title of the page to restore.",
        "apihelp-undelete-param-reason": "Reason for restoring.",
        "apihelp-undelete-param-tags": "Change tags to apply to the entry in the deletion log.",
        "apihelp-undelete-example-page": "Undelete page <kbd>Main Page</kbd>.",
        "apihelp-undelete-example-revisions": "Undelete two revisions of page <kbd>Main Page</kbd>.",
 
-       "apihelp-unlinkaccount-description": "Remove a linked third-party account from the current user.",
+       "apihelp-unlinkaccount-summary": "Remove a linked third-party account from the current user.",
        "apihelp-unlinkaccount-example-simple": "Attempt to remove the current user's link for the provider associated with <kbd>FooAuthenticationRequest</kbd>.",
 
-       "apihelp-upload-description": "Upload a file, or get the status of pending uploads.\n\nSeveral methods are available:\n* Upload file contents directly, using the <var>$1file</var> parameter.\n* Upload the file in pieces, using the <var>$1filesize</var>, <var>$1chunk</var>, and <var>$1offset</var> parameters.\n* Have the MediaWiki server fetch a file from a URL, using the <var>$1url</var> parameter.\n* Complete an earlier upload that failed due to warnings, using the <var>$1filekey</var> parameter.\nNote that the HTTP POST must be done as a file upload (i.e. using <code>multipart/form-data</code>) when sending the <var>$1file</var>.",
+       "apihelp-upload-summary": "Upload a file, or get the status of pending uploads.",
+       "apihelp-upload-extended-description": "Several methods are available:\n* Upload file contents directly, using the <var>$1file</var> parameter.\n* Upload the file in pieces, using the <var>$1filesize</var>, <var>$1chunk</var>, and <var>$1offset</var> parameters.\n* Have the MediaWiki server fetch a file from a URL, using the <var>$1url</var> parameter.\n* Complete an earlier upload that failed due to warnings, using the <var>$1filekey</var> parameter.\nNote that the HTTP POST must be done as a file upload (i.e. using <code>multipart/form-data</code>) when sending the <var>$1file</var>.",
        "apihelp-upload-param-filename": "Target filename.",
        "apihelp-upload-param-comment": "Upload comment. Also used as the initial page text for new files if <var>$1text</var> is not specified.",
        "apihelp-upload-param-tags": "Change tags to apply to the upload log entry and file page revision.",
        "apihelp-upload-example-url": "Upload from a URL.",
        "apihelp-upload-example-filekey": "Complete an upload that failed due to warnings.",
 
-       "apihelp-userrights-description": "Change a user's group membership.",
+       "apihelp-userrights-summary": "Change a user's group membership.",
        "apihelp-userrights-param-user": "User name.",
        "apihelp-userrights-param-userid": "User ID.",
        "apihelp-userrights-param-add": "Add the user to these groups, or if they are already a member, update the expiry of their membership in that group.",
        "apihelp-userrights-example-userid": "Add the user with ID <kbd>123</kbd> to group <kbd>bot</kbd>, and remove from groups <kbd>sysop</kbd> and <kbd>bureaucrat</kbd>.",
        "apihelp-userrights-example-expiry": "Add user <kbd>SometimeSysop</kbd> to group <kbd>sysop</kbd> for 1 month.",
 
-       "apihelp-validatepassword-description": "Validate a password against the wiki's password policies.\n\nValidity is reported as <samp>Good</samp> if the password is acceptable, <samp>Change</samp> if the password may be used for login but must be changed, or <samp>Invalid</samp> if the password is not usable.",
+       "apihelp-validatepassword-summary": "Validate a password against the wiki's password policies.",
+       "apihelp-validatepassword-extended-description": "Validity is reported as <samp>Good</samp> if the password is acceptable, <samp>Change</samp> if the password may be used for login but must be changed, or <samp>Invalid</samp> if the password is not usable.",
        "apihelp-validatepassword-param-password": "Password to validate.",
        "apihelp-validatepassword-param-user": "User name, for use when testing account creation. The named user must not exist.",
        "apihelp-validatepassword-param-email": "Email address, for use when testing account creation.",
        "apihelp-validatepassword-example-1": "Validate the password <kbd>foobar</kbd> for the current user.",
        "apihelp-validatepassword-example-2": "Validate the password <kbd>qwerty</kbd> for creating user <kbd>Example</kbd>.",
 
-       "apihelp-watch-description": "Add or remove pages from the current user's watchlist.",
+       "apihelp-watch-summary": "Add or remove pages from the current user's watchlist.",
        "apihelp-watch-param-title": "The page to (un)watch. Use <var>$1titles</var> instead.",
        "apihelp-watch-param-unwatch": "If set the page will be unwatched rather than watched.",
        "apihelp-watch-example-watch": "Watch the page <kbd>Main Page</kbd>.",
 
        "apihelp-format-example-generic": "Return the query result in the $1 format.",
        "apihelp-format-param-wrappedhtml": "Return the pretty-printed HTML and associated ResourceLoader modules as a JSON object.",
-       "apihelp-json-description": "Output data in JSON format.",
+       "apihelp-json-summary": "Output data in JSON format.",
        "apihelp-json-param-callback": "If specified, wraps the output into a given function call. For safety, all user-specific data will be restricted.",
        "apihelp-json-param-utf8": "If specified, encodes most (but not all) non-ASCII characters as UTF-8 instead of replacing them with hexadecimal escape sequences. Default when <var>formatversion</var> is not <kbd>1</kbd>.",
        "apihelp-json-param-ascii": "If specified, encodes all non-ASCII using hexadecimal escape sequences. Default when <var>formatversion</var> is <kbd>1</kbd>.",
        "apihelp-json-param-formatversion": "Output formatting:\n;1:Backwards-compatible format (XML-style booleans, <samp>*</samp> keys for content nodes, etc.).\n;2:Experimental modern format. Details may change!\n;latest:Use the latest format (currently <kbd>2</kbd>), may change without warning.",
-       "apihelp-jsonfm-description": "Output data in JSON format (pretty-print in HTML).",
-       "apihelp-none-description": "Output nothing.",
-       "apihelp-php-description": "Output data in serialized PHP format.",
+       "apihelp-jsonfm-summary": "Output data in JSON format (pretty-print in HTML).",
+       "apihelp-none-summary": "Output nothing.",
+       "apihelp-php-summary": "Output data in serialized PHP format.",
        "apihelp-php-param-formatversion": "Output formatting:\n;1:Backwards-compatible format (XML-style booleans, <samp>*</samp> keys for content nodes, etc.).\n;2:Experimental modern format. Details may change!\n;latest:Use the latest format (currently <kbd>2</kbd>), may change without warning.",
-       "apihelp-phpfm-description": "Output data in serialized PHP format (pretty-print in HTML).",
-       "apihelp-rawfm-description": "Output data, including debugging elements, in JSON format (pretty-print in HTML).",
-       "apihelp-xml-description": "Output data in XML format.",
+       "apihelp-phpfm-summary": "Output data in serialized PHP format (pretty-print in HTML).",
+       "apihelp-rawfm-summary": "Output data, including debugging elements, in JSON format (pretty-print in HTML).",
+       "apihelp-xml-summary": "Output data in XML format.",
        "apihelp-xml-param-xslt": "If specified, adds the named page as an XSL stylesheet. The value must be a title in the {{ns:MediaWiki}} namespace ending in <code>.xsl</code>.",
        "apihelp-xml-param-includexmlnamespace": "If specified, adds an XML namespace.",
-       "apihelp-xmlfm-description": "Output data in XML format (pretty-print in HTML).",
+       "apihelp-xmlfm-summary": "Output data in XML format (pretty-print in HTML).",
 
        "api-format-title": "MediaWiki API result",
        "api-format-prettyprint-header": "This is the HTML representation of the $1 format. HTML is good for debugging, but is unsuitable for application use.\n\nSpecify the <var>format</var> parameter to change the output format. To see the non-HTML representation of the $1 format, set <kbd>format=$2</kbd>.\n\nSee the [[mw:Special:MyLanguage/API|complete documentation]], or the [[Special:ApiHelp/main|API help]] for more information.",
        "api-format-prettyprint-header-only-html": "This is an HTML representation intended for debugging, and is unsuitable for application use.\n\nSee the [[mw:Special:MyLanguage/API|complete documentation]], or the [[Special:ApiHelp/main|API help]] for more information.",
+       "api-format-prettyprint-header-hyperlinked": "This is the HTML representation of the $1 format. HTML is good for debugging, but is unsuitable for application use.\n\nSpecify the <var>format</var> parameter to change the output format. To see the non-HTML representation of the $1 format, set [$3 <kbd>format=$2</kbd>].\n\nSee the [[mw:API|complete documentation]], or the [[Special:ApiHelp/main|API help]] for more information.",
        "api-format-prettyprint-status": "This response would be returned with HTTP status $1 $2.",
 
+       "api-login-fail-aborted": "Authentication requires user interaction, which is not supported by <kbd>action=login</kbd>. To be able to login with <kbd>action=login</kbd>, see [[Special:BotPasswords]]. To continue using main-account login, see <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
+       "api-login-fail-aborted-nobotpw": "Authentication requires user interaction, which is not supported by <kbd>action=login</kbd>. To log in, see <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
+       "api-login-fail-badsessionprovider": "Cannot log in when using $1.",
+       "api-login-fail-sameorigin": "Cannot log in when the same-origin policy is not applied.",
+
        "api-pageset-param-titles": "A list of titles to work on.",
        "api-pageset-param-pageids": "A list of page IDs to work on.",
        "api-pageset-param-revids": "A list of revision IDs to work on.",
        "api-help-permissions-granted-to": "{{PLURAL:$1|Granted to}}: $2",
        "api-help-right-apihighlimits": "Use higher limits in API queries (slow queries: $1; fast queries: $2). The limits for slow queries also apply to multivalue parameters.",
        "api-help-open-in-apisandbox": "<small>[open in sandbox]</small>",
+       "api-help-no-extended-description": "",
 
        "api-help-authmanager-general-usage": "The general procedure to use this module is:\n# Fetch the fields available from <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> with <kbd>amirequestsfor=$4</kbd>, and a <kbd>$5</kbd> token from <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.\n# Present the fields to the user, and obtain their submission.\n# Post to this module, supplying <var>$1returnurl</var> and any relevant fields.\n# Check the <samp>status</samp> in the response.\n#* If you received <samp>PASS</samp> or <samp>FAIL</samp>, you're done. The operation either succeeded or it didn't.\n#* If you received <samp>UI</samp>, present the new fields to the user and obtain their submission. Then post to this module with <var>$1continue</var> and the relevant fields set, and repeat step 4.\n#* If you received <samp>REDIRECT</samp>, direct the user to the <samp>redirecttarget</samp> and wait for the return to <var>$1returnurl</var>. Then post to this module with <var>$1continue</var> and any fields passed to the return URL, and repeat step 4.\n#* If you received <samp>RESTART</samp>, that means the authentication worked but we don't have a linked user account. You might treat this as <samp>UI</samp> or as <samp>FAIL</samp>.",
        "api-help-authmanagerhelper-requests": "Only use these authentication requests, by the <samp>id</samp> returned from <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> with <kbd>amirequestsfor=$1</kbd> or from a previous response from this module.",
        "apierror-changeauth-norequest": "Failed to create change request.",
        "apierror-chunk-too-small": "Minimum chunk size is $1 {{PLURAL:$1|byte|bytes}} for non-final chunks.",
        "apierror-cidrtoobroad": "$1 CIDR ranges broader than /$2 are not accepted.",
-       "apierror-compare-inputneeded": "A title, a page ID, or a revision number is needed for both the <var>from</var> and the <var>to</var> parameters.",
+       "apierror-compare-no-title": "Cannot pre-save transform without a title. Try specifying <var>fromtitle</var> or <var>totitle</var>.",
+       "apierror-compare-relative-to-nothing": "No 'from' revision for <var>torelative</var> to be relative to.",
        "apierror-contentserializationexception": "Content serialization failed: $1",
        "apierror-contenttoobig": "The content you supplied exceeds the article size limit of $1 {{PLURAL:$1|kilobyte|kilobytes}}.",
        "apierror-copyuploadbaddomain": "Uploads by URL are not allowed from this domain.",
        "apierror-maxlag": "Waiting for $2: $1 {{PLURAL:$1|second|seconds}} lagged.",
        "apierror-mimesearchdisabled": "MIME search is disabled in Miser Mode.",
        "apierror-missingcontent-pageid": "Missing content for page ID $1.",
+       "apierror-missingcontent-revid": "Missing content for revision ID $1.",
        "apierror-missingparam-at-least-one-of": "{{PLURAL:$2|The parameter|At least one of the parameters}} $1 is required.",
        "apierror-missingparam-one-of": "{{PLURAL:$2|The parameter|One of the parameters}} $1 is required.",
        "apierror-missingparam": "The <var>$1</var> parameter must be set.",
        "apierror-missingrev-pageid": "No current revision of page ID $1.",
+       "apierror-missingrev-title": "No current revision of title $1.",
        "apierror-missingtitle-createonly": "Missing titles can only be protected with <kbd>create</kbd>.",
        "apierror-missingtitle": "The page you specified doesn't exist.",
        "apierror-missingtitle-byname": "The page $1 doesn't exist.",
        "apierror-revdel-mutuallyexclusive": "The same field cannot be used in both <var>hide</var> and <var>show</var>.",
        "apierror-revdel-needtarget": "A target title is required for this RevDel type.",
        "apierror-revdel-paramneeded": "At least one value is required for <var>hide</var> and/or <var>show</var>.",
+       "apierror-revisions-badid": "No revision was found for parameter <var>$1</var>.",
        "apierror-revisions-norevids": "The <var>revids</var> parameter may not be used with the list options (<var>$1limit</var>, <var>$1startid</var>, <var>$1endid</var>, <kbd>$1dir=newer</kbd>, <var>$1user</var>, <var>$1excludeuser</var>, <var>$1start</var>, and <var>$1end</var>).",
        "apierror-revisions-singlepage": "<var>titles</var>, <var>pageids</var> or a generator was used to supply multiple pages, but the <var>$1limit</var>, <var>$1startid</var>, <var>$1endid</var>, <kbd>$1dir=newer</kbd>, <var>$1user</var>, <var>$1excludeuser</var>, <var>$1start</var>, and <var>$1end</var> parameters may only be used on a single page.",
        "apierror-revwrongpage": "r$1 is not a revision of $2.",
        "apiwarn-badurlparam": "Could not parse <var>$1urlparam</var> for $2. Using only width and height.",
        "apiwarn-badutf8": "The value passed for <var>$1</var> contains invalid or non-normalized data. Textual data should be valid, NFC-normalized Unicode without C0 control characters other than HT (\\t), LF (\\n), and CR (\\r).",
        "apiwarn-checktoken-percentencoding": "Check that symbols such as \"+\" in the token are properly percent-encoded in the URL.",
+       "apiwarn-compare-nocontentmodel": "No content model could be determined, assuming $1.",
        "apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd> has been deprecated. Please use <kbd>prop=deletedrevisions</kbd> or <kbd>list=alldeletedrevisions</kbd> instead.",
        "apiwarn-deprecation-expandtemplates-prop": "Because no values have been specified for the <var>prop</var> parameter, a legacy format has been used for the output. This format is deprecated, and in the future, a default value will be set for the <var>prop</var> parameter, causing the new format to always be used.",
        "apiwarn-deprecation-httpsexpected": "HTTP used when HTTPS was expected.",
index a2fbb48..78fc440 100644 (file)
                        "Hamilton Abreu",
                        "Pompilos",
                        "Igv",
-                       "Fortega"
+                       "Fortega",
+                       "Luzcaru",
+                       "Javiersanp"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentación]]\n* [[mw:API:FAQ|Preguntas frecuentes]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista de correo]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Anuncios de la API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Errores y peticiones]\n</div>\n<strong>Estado:</strong> Todas las características que se muestran en esta página deberían funcionar, pero la API aún se encuentra en desarrollo activo y puede cambiar en cualquier momento. Suscríbete a [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ la lista de correo de mediawiki-api-announce] para estar al día de las actualizaciones.\n\n<strong>Solicitudes erróneas:</strong> Cuando se envían solicitudes erróneas a la API, se envía una cabecera HTTP con la clave \"MediaWiki-API-Error\". El valor de la cabecera y el código de error devuelto tomarán el mismo valor. Para más información, véase [[mw:API:Errors_and_warnings|API: Errores y advertencias]].\n\n<strong>Pruebas:</strong> para facilitar las pruebas de solicitudes a la API, consulta [[Special:ApiSandbox]].",
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Documentation]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mailing list]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API Announcements]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bugs & requests]\n</div>\n<strong>Status:</strong> Todas las funciones mostradas en esta página deberían estar funcionando, pero la API aún está en desarrollo activo, y puede cambiar en cualquier momento. Suscribase a [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce mailing list] para aviso de actualizaciones.\n\n<strong>Erroneous requests:</strong> Cuando se envían solicitudes erróneas a la API, se enviará un encabezado HTTP con la clave \"MediaWiki-API-Error\" y, luego, el valor del encabezado y el código de error devuelto se establecerán en el mismo valor. Para más información ver [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Errors and warnings]].\n\n<strong>Testing:</strong> Para facilitar la comprobación de las solicitudes de API, consulte [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Qué acción se realizará.",
        "apihelp-main-param-format": "El formato de la salida.",
-       "apihelp-main-param-maxlag": "El retraso (lag) máximo puede ser utilizado cuando MediaWiki está instalado en un conjunto de bases de datos replicadas. Para evitar cualquier acción que pudiera causar un retraso aún mayor en la replicación del sitio, este parámetro puede causar que el cliente espere hasta que el retraso de replicación sea menor que el valor especificado. En caso de exceso de retraso, se devuelve un código de error <samp>maxlag</samp> con un mensaje similar a <samp>Esperando a $host: $lag segundos de retraso</samp>.<br />Véase [[mw:Manual:Maxlag_parameter|Manual:Parámetro maxlag]] para más información.",
-       "apihelp-main-param-smaxage": "Establece el encabezado HTTP <code>s-maxage</code> de control de caché a esta cantidad de segundos. Los errores nunca se almacenan en caché.",
-       "apihelp-main-param-maxage": "Establece el encabezado HTTP <code>max-age</code> de control de caché a esta cantidad de segundos. Los errores nunca se almacenan en caché.",
+       "apihelp-main-param-maxlag": "El retraso máximo puede utilizarse cuando MediaWiki se instala en un clúster replicado de base de datos. Para guardar las acciones que causan más retardo de replicación de sitio, este parámetro puede hacer que el cliente espere hasta que el retardo de replicación sea menor que el valor especificado. En caso de retraso excesivo, se devuelve el código de error <samp>maxlag</samp> con un mensaje como <samp>Esperando a $host: $lag segundos de retraso</samp>.<br />Consulta [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manual: parámetro Maxlag]] para más información.",
+       "apihelp-main-param-smaxage": "Establece la cabecera HTTP <code>s-maxage</code> de control de antememoria a esta cantidad de segundos. Los errores nunca se almacenan en la antememoria.",
+       "apihelp-main-param-maxage": "Establece la cabecera HTTP <code>max-age</code> de control de antememoria a esta cantidad de segundos. Los errores nunca se almacenan en la antememoria.",
        "apihelp-main-param-assert": "Comprobar que el usuario haya iniciado sesión si el valor es <kbd>user</kbd> o si tiene el permiso de bot si es <kbd>bot</kbd>.",
        "apihelp-main-param-assertuser": "Verificar el usuario actual es el usuario nombrado.",
        "apihelp-main-param-requestid": "Cualquier valor dado aquí se incluirá en la respuesta. Se puede utilizar para distinguir solicitudes.",
@@ -57,7 +59,7 @@
        "apihelp-block-param-autoblock": "Bloquear automáticamente la última dirección IP y todas las direcciones IP que traten de iniciar sesión posteriormente.",
        "apihelp-block-param-noemail": "Evitar que el usuario envíe correos a través de la wiki (es necesario el derecho <code>blockemail</code>).",
        "apihelp-block-param-hidename": "Ocultar el nombre de usuario del registro de bloqueo (es necesario el derecho <coɗe>hideuser</code>).",
-       "apihelp-block-param-allowusertalk": "Permitir que el usuario edite su propia página de discusión (depende de <var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
+       "apihelp-block-param-allowusertalk": "Permitir que el usuario edite su propia página de discusión (depende de <var>[[mw:Special:MyLanguage/Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
        "apihelp-block-param-reblock": "Si la cuenta ya está bloqueada, sobrescribir el bloqueo existente.",
        "apihelp-block-param-watchuser": "Vigilar las páginas de usuario y de discusión del usuario o de la dirección IP.",
        "apihelp-block-param-tags": "Cambiar las etiquetas que aplicar a la entrada en el registro de bloqueos.",
@@ -97,8 +99,8 @@
        "apihelp-createaccount-param-language": "Código de idioma a establecer como predeterminado para el usuario (opcional, predeterminado al contenido del idioma).",
        "apihelp-createaccount-example-pass": "Crear usuario <kbd>testuser</kbd> con la contraseña <kbd>test123</kbd>.",
        "apihelp-createaccount-example-mail": "Crear usuario <kbd>testmailuser</kbd> y enviar una contraseña generada aleatoriamente.",
-       "apihelp-cspreport-description": "Utilizado por los navegadores para reportar violaciones de la política de seguridad de contenidos. Este módulo no debe usarse nunca, excepto cuando se usa automáticamente por un navegador web CSP compatible.",
-       "apihelp-cspreport-param-reportonly": "Marcar un informe de una política de vigilancia y no a una política forzada",
+       "apihelp-cspreport-description": "Utilizado por los navegadores para informar de violaciones a la normativa de seguridad de contenidos. Este módulo no debe usarse nunca, excepto cuando se usa automáticamente por un navegador web compatible con CSP.",
+       "apihelp-cspreport-param-reportonly": "Marcar como informe proveniente de una normativa de vigilancia, no una impuesta",
        "apihelp-cspreport-param-source": "Qué generó la cabecera CSP que provocó este informe",
        "apihelp-delete-description": "Borrar una página.",
        "apihelp-delete-param-title": "Título de la página a eliminar. No se puede utilizar junto a <var>$1pageid</var>.",
        "apihelp-delete-param-reason": "Motivo de la eliminación. Si no se especifica, se generará uno automáticamente.",
        "apihelp-delete-param-tags": "Cambio de etiquetas para aplicar a la entrada en la eliminación del registro.",
        "apihelp-delete-param-watch": "Añadir esta página a la lista de seguimiento del usuario actual.",
-       "apihelp-delete-param-watchlist": "Incondicionalmente agregar o remover la página de la lista de seguimiento del usuario actual, usar las preferencias o no cambiar el seguimiento.",
+       "apihelp-delete-param-watchlist": "Añadir o quitar incondicionalmente la página de la lista de seguimiento del usuario actual, usar preferencias o no cambiar el estado de seguimiento.",
        "apihelp-delete-param-unwatch": "Quitar la página de la lista de seguimiento del usuario actual.",
        "apihelp-delete-param-oldimage": "El nombre de la imagen antigua es proporcionado conforme a lo dispuesto por [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]].",
        "apihelp-delete-example-simple": "Borrar <kbd>Main Page</kbd>.",
        "apihelp-edit-example-undo": "Deshacer intervalo de revisiones 13579-13585 con resumen automático",
        "apihelp-emailuser-description": "Enviar un mensaje de correo electrónico a un usuario.",
        "apihelp-emailuser-param-target": "Cuenta de usuario destinatario.",
-       "apihelp-emailuser-param-subject": "Encabezamiento de asunto.",
+       "apihelp-emailuser-param-subject": "Cabecera de asunto.",
        "apihelp-emailuser-param-text": "Cuerpo del mensaje.",
        "apihelp-emailuser-param-ccme": "Enviarme una copia de este mensaje.",
        "apihelp-emailuser-example-email": "Enviar un correo al usuario <kbd>WikiSysop</kbd> con el texto <kbd>Content</kbd>.",
        "apihelp-help-param-recursivesubmodules": "Incluir ayuda para submódulos recursivamente.",
        "apihelp-help-param-helpformat": "Formato de salida de la ayuda.",
        "apihelp-help-param-wrap": "Envolver el producto en una estructura de respuesta de la API estándar.",
-       "apihelp-help-param-toc": "Incluir una tabla de contenidos en la salida HTML.",
+       "apihelp-help-param-toc": "Incluir un sumario en la salida HTML.",
        "apihelp-help-example-main": "Ayuda del módulo principal",
        "apihelp-help-example-submodules": "Ayuda para <kbd>action=query</kbd> y todos sus submódulos.",
        "apihelp-help-example-recursive": "Toda la ayuda en una página",
        "apihelp-opensearch-param-search": "Buscar cadena.",
        "apihelp-opensearch-param-limit": "Número máximo de resultados que devolver.",
        "apihelp-opensearch-param-namespace": "Espacio de nombres que buscar.",
-       "apihelp-opensearch-param-suggest": "No hacer nada si <var>[[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> es falso.",
+       "apihelp-opensearch-param-suggest": "No hacer nada si <var>[[mw:Special:MyLanguage/Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> es falso.",
        "apihelp-opensearch-param-redirects": "Cómo manejar las redirecciones:\n;return: Volver a la propia redirección.\n;resolve: Volver a la página de destino. Puede devolver menos de $1limit resultados.\nPor motivos históricos, se utiliza \"return\" para $1format=json y \"resolve\" para otros formatos.",
        "apihelp-opensearch-param-format": "El formato de salida.",
        "apihelp-opensearch-param-warningsaserror": "Si las advertencias están planteadas con <kbd>format=json</kbd>, devolver un error de API en lugar de hacer caso omiso de ellas.",
        "apihelp-parse-paramvalue-prop-revid": "Añade la ID de revisión de la página analizada.",
        "apihelp-parse-paramvalue-prop-displaytitle": "Añade el título del wikitexto analizado.",
        "apihelp-parse-paramvalue-prop-headitems": "<span class=\"apihelp-deprecated\">Obsoleto.</span> Proporciona elementos para colocar en el <code>&lt;head&gt;</code> de la página.",
-       "apihelp-parse-paramvalue-prop-headhtml": "Da el <code>&lt;encabezado&gt;</code> analizado de la página.",
+       "apihelp-parse-paramvalue-prop-headhtml": "Proporciona la <code>&lt;head&gt;</code> analizada de la página.",
        "apihelp-parse-paramvalue-prop-modules": "Proporciona los módulos de ResourceLoader utilizados en la página. Para cargar, utiliza <code>mw.loader.using()</code>. <kbd>jsconfigvars</kbd> o bien <kbd>encodedjsconfigvars</kbd> deben solicitarse en conjunto con <kbd>modules</kbd>.",
        "apihelp-parse-paramvalue-prop-jsconfigvars": "Proporciona las variables de configuración de JavaScript específicas de la página. Para obtenerlas, utiliza <code>mw.config.set()</code>.",
        "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "Da la configuración JavaScript de variables específica para la página como cadena JSON.",
        "apihelp-parse-paramvalue-prop-limitreportdata": "Da el informe del límite de forma estructurada. No da datos si <var>$1disablelimitreport</var> está establecido.",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "Da la versión HTML del informe del límite. No da datos si <var>$1disablelimitreport</var> está establecido.",
        "apihelp-parse-paramvalue-prop-parsetree": "El árbol de análisis sintáctico XML del contenido de la revisión (requiere modelo de contenido <code>$1</code>)",
+       "apihelp-parse-paramvalue-prop-parsewarnings": "Da las advertencias que se produjeron al analizar el contenido.",
        "apihelp-parse-param-pst": "Guardar previamente los cambios antes de transformar la entrada antes de analizarla. Sólo es válido cuando se utiliza con el texto.",
        "apihelp-parse-param-onlypst": "Guardar previamente los cambios antes de transformar (PST) en la entrada. Devuelve el mismo wikitexto, después de que un PST se ha aplicado. Sólo es válido cuando se utiliza con <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Incluye enlaces de idiomas proporcionados por las extensiones (para utilizar con <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-generatexml": "Generar árbol de análisis sintáctico XML (requiere modelo de contenido <code>$1</code>; sustituido por <kbd>$2prop=parsetree</kbd>).",
        "apihelp-parse-param-preview": "Analizar en modo de vista previa.",
        "apihelp-parse-param-sectionpreview": "Analizar sección en modo de vista previa (también activa el modo de vista previa).",
-       "apihelp-parse-param-disabletoc": "Omitir la tabla de contenidos en la salida.",
+       "apihelp-parse-param-disabletoc": "Omitir el sumario en la salida.",
+       "apihelp-parse-param-useskin": "Aplicar la piel seleccionada a la salida del analizador. Puede afectar a las siguientes propiedades: <kbd>langlinks</kbd>, <kbd>headitems</kbd>, <kbd>módulos</kbd>, <kbd>jsconfigvars</kbd>, <kbd>indicadores</kbd>.",
        "apihelp-parse-param-contentformat": "Formato de serialización de contenido utilizado para la introducción de texto. Sólo es válido cuando se utiliza con $1text.",
        "apihelp-parse-param-contentmodel": "Modelo de contenido del texto de entrada. Si se omite, se debe especificar $1title, y el valor por defecto será el modelo del título especificado. Solo es válido cuando se use junto con $1text.",
        "apihelp-parse-example-page": "Analizar una página.",
        "apihelp-purge-param-forcerecursivelinkupdate": "Actualizar la tabla de enlaces y todas las tablas de enlaces de cualquier página que use esta página como una plantilla.",
        "apihelp-purge-example-simple": "Purgar la <kbd>Main Page</kbd> y la página <kbd>API</kbd>.",
        "apihelp-purge-example-generator": "Purgar las 10 primeras páginas del espacio de nombres principal.",
+       "apihelp-query-description": "Obtener datos de y sobre MediaWiki.\n\nTodas las modificaciones de datos tendrán que utilizar primero la consulta para adquirir un token para evitar el abuso desde sitios maliciosos.",
        "apihelp-query-param-prop": "Qué propiedades obtener para las páginas consultadas.",
        "apihelp-query-param-list": "Qué listas obtener.",
        "apihelp-query-param-meta": "Qué metadatos obtener.",
        "apihelp-query-param-exportnowrap": "Devuelve el XML de exportación sin envolverlo en un resultado XML (mismo formato que [[Special:Export]]). Solo se puede usar junto con $1export.",
        "apihelp-query-param-iwurl": "Si la URL completa si el título es un interwiki.",
        "apihelp-query-param-rawcontinue": "Devuelve los datos <samp>query-continue</samp> en bruto para continuar.",
+       "apihelp-query-example-revisions": "Busque [[Special:ApiHelp/query+siteinfo|información del sitio]] y [[Special:ApiHelp/query+revisions|revisiones]] de <kbd>Main Page</kbd>.",
        "apihelp-query-example-allpages": "Obtener revisiones de páginas que comiencen por <kbd>API/</kbd>.",
        "apihelp-query+allcategories-description": "Enumerar todas las categorías.",
        "apihelp-query+allcategories-param-from": "La categoría para comenzar la enumeración",
        "apihelp-query+alldeletedrevisions-param-user": "Listar solo las revisiones de este usuario.",
        "apihelp-query+alldeletedrevisions-param-excludeuser": "No listar las revisiones de este usuario.",
        "apihelp-query+alldeletedrevisions-param-namespace": "Listar solo las páginas en este espacio de nombres.",
-       "apihelp-query+alldeletedrevisions-param-miser-user-namespace": "<strong>Nota:</strong> Debido al [[mw:Manual:$wgMiserMode|modo avaro]], usar juntos <var>$1user</var> y <var>$1namespace</var> puede dar lugar a que se devuelvan menos de <var>$1limit</var> antes de continuar. En casos extremos, podrían devolverse cero resultados.",
+       "apihelp-query+alldeletedrevisions-param-miser-user-namespace": "<strong>Nota:</strong> debido al [[mw:Special:MyLanguage/Manual:$wgMiserMode|modo avaro]], usar juntos <var>$1user</var> y <var>$1namespace</var> puede dar lugar a que se devuelvan menos de <var>$1limit</var> resultados antes de continuar. En casos extremos, podrían devolverse cero resultados.",
        "apihelp-query+alldeletedrevisions-param-generatetitles": "Cuando se utiliza como generador, generar títulos en lugar de identificadores de revisión.",
        "apihelp-query+alldeletedrevisions-example-user": "Listar las últimas 50 contribuciones borradas del usuario <kbd>Example</kbd>.",
        "apihelp-query+alldeletedrevisions-example-ns-main": "Listar las primeras 50 revisiones borradas en el espacio de nombres principal.",
-       "apihelp-query+allfileusages-description": "Listar todos los usos del archivo, incluyendo los que no existen.",
+       "apihelp-query+allfileusages-description": "Enumerar todos los usos del archivo, incluidos los que no existen.",
        "apihelp-query+allfileusages-param-from": "El título del archivo para comenzar la enumeración.",
        "apihelp-query+allfileusages-param-to": "El título del archivo para detener la enumeración.",
        "apihelp-query+allfileusages-param-prefix": "Buscar todos los títulos de los archivos que comiencen con este valor.",
        "apihelp-query+allfileusages-param-unique": "Mostrar solo títulos únicos de archivo. No se puede usar junto con $1prop=ids. Cuando se use como generador, devuelve páginas de destino en vez de páginas de origen.",
        "apihelp-query+allfileusages-param-prop": "Qué piezas de información incluir:",
+       "apihelp-query+allfileusages-paramvalue-prop-ids": "Agrega los ID de página de las páginas en uso (no se puede usar con $1unique).",
        "apihelp-query+allfileusages-paramvalue-prop-title": "Agrega el título del archivo.",
        "apihelp-query+allfileusages-param-limit": "Cuántos elementos en total se devolverán.",
        "apihelp-query+allfileusages-param-dir": "La dirección en la que se listará.",
        "apihelp-query+alllinks-param-prefix": "Buscar todos los títulos vinculados que comiencen con este valor.",
        "apihelp-query+alllinks-param-unique": "Mostrar solo títulos únicos enlazados. No se puede usar junto con $1prop=ids. Cuando se use como generador, devuelve páginas de destino en vez de páginas de origen.",
        "apihelp-query+alllinks-param-prop": "Qué piezas de información incluir:",
+       "apihelp-query+alllinks-paramvalue-prop-ids": "Agrega el ID de página de la página de enlace (no se puede usar con <var>$1unique</var>).",
        "apihelp-query+alllinks-paramvalue-prop-title": "Añade el título del enlace.",
        "apihelp-query+alllinks-param-namespace": "El espacio de nombres que enumerar.",
        "apihelp-query+alllinks-param-limit": "Cuántos elementos en total se devolverán.",
        "apihelp-query+allpages-param-limit": "Cuántas páginas en total se devolverán.",
        "apihelp-query+allpages-param-dir": "La dirección en la que se listará.",
        "apihelp-query+allpages-param-filterlanglinks": "Filtrar en función de si una página tiene langlinks. Tenga en cuenta que esto no puede considerar langlinks agregados por extensiones.",
+       "apihelp-query+allpages-param-prexpiry": "¿Cuál término de protección para filtrar la página en:\n; Indefinida: Obtener sólo páginas con protección de vencimiento indefinida.\n; Definida: Obtener sólo las páginas con un definitivo (específico) vencimiento.\n; Todos: Obtener páginas con cualquier caducidad.",
        "apihelp-query+allpages-example-B": "Mostrar una lista de páginas que empiecen con la letra <kbd>B</kbd>.",
        "apihelp-query+allpages-example-generator": "Mostrar información acerca de 4 páginas que empiecen por la letra <kbd>T</kbd>.",
        "apihelp-query+allpages-example-generator-revisions": "Mostrar el contenido de las 2 primeras páginas que no redirijan y empiecen por <kbd>Re</kbd>.",
        "apihelp-query+mystashedfiles-paramvalue-prop-size": "Buscar el tamaño del archivo y las dimensiones de la imagen.",
        "apihelp-query+mystashedfiles-paramvalue-prop-type": "Obtener el tipo MIME y tipo multimedia del archivo.",
        "apihelp-query+mystashedfiles-param-limit": "Cuántos archivos obtener.",
+       "apihelp-query+mystashedfiles-example-simple": "Obtenga la clave de archivo, el tamaño del archivo y el tamaño de los archivos en pixeles en el caché de carga del usuario actual.",
        "apihelp-query+alltransclusions-description": "Mostrar todas las transclusiones (páginas integradas mediante &#123;&#123;x&#125;&#125;), incluidas las inexistentes.",
        "apihelp-query+alltransclusions-param-from": "El título de la transclusión por la que empezar la enumeración.",
        "apihelp-query+alltransclusions-param-to": "El título de la transclusión por la que terminar la enumeración.",
        "apihelp-query+alltransclusions-param-prefix": "Buscar todos los títulos transcluidos que comiencen con este valor.",
        "apihelp-query+alltransclusions-param-unique": "Mostrar solo títulos únicos transcluidos. No se puede usar junto con $1prop=ids. Cuando se use como generador, devuelve páginas de destino en vez de páginas de origen.",
        "apihelp-query+alltransclusions-param-prop": "Qué piezas de información incluir:",
+       "apihelp-query+alltransclusions-paramvalue-prop-ids": "Agrega el ID de página de la página de redirección (no se puede usar con $1unique).",
        "apihelp-query+alltransclusions-paramvalue-prop-title": "Añade el título de la transclusión.",
        "apihelp-query+alltransclusions-param-namespace": "El espacio de nombres que enumerar.",
        "apihelp-query+alltransclusions-param-limit": "Número de elementos que se desea obtener.",
        "apihelp-query+allusers-param-attachedwiki": "Con <kbd>$1prop=centralids</kbd>, indicar también si el usuario está conectado con el wiki identificado por el ID.",
        "apihelp-query+allusers-example-Y": "Listar usuarios que empiecen por <kbd>Y</kbd>.",
        "apihelp-query+authmanagerinfo-description": "Recuperar información sobre el estado de autenticación actual.",
+       "apihelp-query+authmanagerinfo-param-securitysensitiveoperation": "Compruebe si el estado de autenticación actual del usuario es suficiente para la operación  sensible-seguridad especificada.",
        "apihelp-query+authmanagerinfo-param-requestsfor": "Obtener información sobre las peticiones de autentificación requeridas para la acción de autentificación especificada.",
        "apihelp-query+authmanagerinfo-example-login": "Captura de las solicitudes que puede ser utilizadas al comienzo de inicio de sesión.",
        "apihelp-query+authmanagerinfo-example-login-merged": "Obtener las peticiones que podrían utilizarse al empezar un inicio de sesión, con los campos de formulario integrados.",
        "apihelp-query+contributors-param-excluderights": "Excluir usuarios con los derechos especificados. No incluye derechos concedidos a grupos implícitos o autopromocionados, como *, usuario o autoconfirmado.",
        "apihelp-query+contributors-param-limit": "Cuántos contribuyentes se devolverán.",
        "apihelp-query+contributors-example-simple": "Mostrar los contribuyentes de la página <kbd>Main Page</kbd>.",
+       "apihelp-query+deletedrevisions-description": "Obtener información de revisión eliminada.\n\nPuede ser utilizada de varias maneras:\n# Obtenga las revisiones eliminadas de un conjunto de páginas, estableciendo títulos o ID de paginas. Ordenadas por título y marca horaria.\n# Obtener datos sobre un conjunto de revisiones eliminadas estableciendo sus ID con identificación de revisión. Ordenado por ID de revisión.",
        "apihelp-query+deletedrevisions-param-start": "Marca de tiempo por la que empezar la enumeración. Se ignora cuando se esté procesando una lista de ID de revisión.",
        "apihelp-query+deletedrevisions-param-end": "Marca de tiempo por la que terminar la enumeración. Se ignora cuando se esté procesando una lista de ID de revisión.",
        "apihelp-query+deletedrevisions-param-tag": "Listar solo las revisiones con esta etiqueta.",
        "apihelp-query+filearchive-paramvalue-prop-archivename": "Añade el nombre de archivo de la versión archivada para las versiones que no son las últimas.",
        "apihelp-query+filearchive-example-simple": "Mostrar una lista de todos los archivos eliminados.",
        "apihelp-query+filerepoinfo-description": "Devuelve metainformación sobre los repositorios de imágenes configurados en el wiki.",
+       "apihelp-query+filerepoinfo-param-prop": "Propiedades del repositorio a obtener (puede haber más disponibles en algunos wikis):\n;apiurl:URL del repositorio API - útil para obtener información de imagen del servidor.\n;name:La clave del repositorio - usado in e.g. <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> y [[Special:ApiHelp/query+imageinfo|imageinfo]] devuelve valores.\n;displayname:El nombre legible del repositorio  wiki.\n;rooturl:Raíz URL para rutas de  imágenes.\n;local:Si ese repositorio es local o no.",
        "apihelp-query+filerepoinfo-example-simple": "Obtener información acerca de los repositorios de archivos.",
        "apihelp-query+fileusage-description": "Encontrar todas las páginas que utilizan los archivos dados.",
        "apihelp-query+fileusage-param-prop": "Qué propiedades se obtendrán:",
        "apihelp-query+imageinfo-paramvalue-prop-parsedcomment": "Analizar el comentario de la versión.",
        "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "Agrega el título canónico del archivo.",
        "apihelp-query+imageinfo-paramvalue-prop-url": "Devuelve la URL para el archivo y la página de descripción.",
+       "apihelp-query+imageinfo-paramvalue-prop-size": "Agrega el tamaño del archivo en bytes y la altura, el ancho y el número de páginas (si aplica).",
        "apihelp-query+imageinfo-paramvalue-prop-dimensions": "Alias para el tamaño.",
        "apihelp-query+imageinfo-paramvalue-prop-sha1": "Añade el hash SHA-1 para la imagen.",
        "apihelp-query+imageinfo-paramvalue-prop-mime": "Añade el tipo MIME del archivo.",
        "apihelp-query+imageinfo-paramvalue-prop-extmetadata": "Enumera metadatos con formato combinados de múltiples fuentes. Los resultados están en formato HTML.",
        "apihelp-query+imageinfo-paramvalue-prop-archivename": "Añade el nombre del archivo de la versión archivada para las versiones anteriores a la última.",
        "apihelp-query+imageinfo-paramvalue-prop-bitdepth": "Añade la profundidad de bits de la versión.",
+       "apihelp-query+imageinfo-paramvalue-prop-uploadwarning": "Usado por la página de Carga Especial para obtener información sobre un archivo existente. No está diseñado para ser utilizado fuera del núcleo MediaWiki.",
+       "apihelp-query+imageinfo-paramvalue-prop-badfile": "Añade si el archivo está en la [[MediaWiki:Bad image list]]",
        "apihelp-query+imageinfo-param-limit": "Cuántos revisiones de archivos se devolverán por perfil.",
        "apihelp-query+imageinfo-param-start": "Marca de tiempo por la que empezar la enumeración.",
        "apihelp-query+imageinfo-param-end": "Marca de tiempo por la que terminar la enumeración.",
+       "apihelp-query+imageinfo-param-urlwidth": "Si se establece $2prop=url, se devolverá una URL a una imagen escalada a este ancho.\nPor razones de rendimiento, si se utiliza esta opción, no se devolverán más de $1 imágenes escaladas.",
        "apihelp-query+imageinfo-param-urlheight": "Similar a $1urlwidth.",
        "apihelp-query+imageinfo-param-metadataversion": "Versión de los metadatos que se utilizará. Si se especifica <kbd>latest</kbd>, utilizará la última versión. El valor predeterminado es <kbd>1</kbd>, por motivo de retrocompatibilidad.",
+       "apihelp-query+imageinfo-param-extmetadatalanguage": "En qué idioma obtener «extmetadata». Esto afecta tanto la traducción que se obtendrá ―si hay varias― como el formato de elementos como los números y algunos valores.",
+       "apihelp-query+imageinfo-param-extmetadatamultilang": "Si las traducciones para la propiedad extmetadata están disponibles, busque todas ellas.",
        "apihelp-query+imageinfo-param-extmetadatafilter": "Si se especifica y no vacío, sólo estas claves serán devueltos por $1prop=extmetadata.",
        "apihelp-query+imageinfo-param-urlparam": "Un controlador específico de la cadena de parámetro. Por ejemplo, los archivos Pdf pueden utilizar <kbd>page15-100px</kbd>. <var>$1urlwidth</var> debe ser utilizado y debe ser consistente con <var>$1urlparam</var>.",
+       "apihelp-query+imageinfo-param-badfilecontexttitle": "Si <kbd>$2prop=badfile</kbd> está establecido, este es el título de la página utilizado al evaluar la [[MediaWiki:Bad image list]]",
        "apihelp-query+imageinfo-param-localonly": "Buscar solo archivos en el repositorio local.",
        "apihelp-query+imageinfo-example-simple": "Obtener información sobre la versión actual de [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+imageinfo-example-dated": "Obtener información sobre las versiones de [[:File:Test.jpg]] a partir de 2008.",
        "apihelp-query+info-param-prop": "Qué propiedades adicionales se obtendrán:",
        "apihelp-query+info-paramvalue-prop-protection": "Listar el nivel de protección de cada página.",
        "apihelp-query+info-paramvalue-prop-talkid": "El identificador de la página de discusión correspondiente a cada página que no es de discusión.",
+       "apihelp-query+info-paramvalue-prop-watched": "Muestra el estado de seguimiento de cada página.",
+       "apihelp-query+info-paramvalue-prop-watchers": "El número de observadores, si se permite.",
+       "apihelp-query+info-paramvalue-prop-visitingwatchers": "El número de observadores de cada página que ha visitado ediciones recientes a esa página, si se permite.",
+       "apihelp-query+info-paramvalue-prop-notificationtimestamp": "La hora de notificación de la lista de seguimiento de cada página.",
        "apihelp-query+info-paramvalue-prop-subjectid": "La ID de página de la página principal de cada página de discusión.",
        "apihelp-query+info-paramvalue-prop-url": "Muestra una URL completa, una URL de edición y la URL canónica de cada página.",
        "apihelp-query+info-paramvalue-prop-readable": "Si el usuario puede leer esta página.",
        "apihelp-query+iwbacklinks-example-simple": "Obtener las páginas enlazadas a [[wikibooks:Test]]",
        "apihelp-query+iwbacklinks-example-generator": "Obtener información sobre las páginas que enlacen a [[wikibooks:Test]].",
        "apihelp-query+iwlinks-description": "Devuelve todos los enlaces interwiki de las páginas dadas.",
+       "apihelp-query+iwlinks-param-url": "Si desea obtener la URL completa (no se puede usar con $1prop).",
        "apihelp-query+iwlinks-param-prop": "Qué propiedades adicionales obtener para cada enlace interlingüe:",
        "apihelp-query+iwlinks-paramvalue-prop-url": "Añade el URL completo.",
        "apihelp-query+iwlinks-param-limit": "Cuántos enlaces interwiki se desea devolver.",
        "apihelp-query+iwlinks-param-prefix": "Devolver únicamente enlaces interwiki con este prefijo.",
+       "apihelp-query+iwlinks-param-title": "El enlace Interwiki para buscar. Debe utilizarse con <var>$1prefix </var>.",
        "apihelp-query+iwlinks-param-dir": "La dirección en que ordenar la lista.",
        "apihelp-query+iwlinks-example-simple": "Obtener los enlaces interwiki de la página <kbd>Main Page</kbd>.",
+       "apihelp-query+langbacklinks-description": "Encuentra todas las páginas que conectan con el enlace de idioma dado.\n\nPuede utilizarse para encontrar todos los enlaces con un código de idioma, o todos los enlaces a un título (con un idioma dado). El uso de ninguno de los parámetros es efectivamente \"todos los enlaces de idioma\".\n\nTenga en cuenta que esto no puede considerar los enlaces de idiomas agregados por extensiones.",
        "apihelp-query+langbacklinks-param-lang": "Idioma del enlace de idioma.",
+       "apihelp-query+langbacklinks-param-title": "Enlace de idioma para buscar. Debe utilizarse con $1lang.",
        "apihelp-query+langbacklinks-param-limit": "Cuántas páginas en total se devolverán.",
        "apihelp-query+langbacklinks-param-prop": "Qué propiedades se obtendrán:",
        "apihelp-query+langbacklinks-paramvalue-prop-lllang": "Agrega el código de idioma del enlace de idioma.",
        "apihelp-query+links-param-titles": "Devolver solo los enlaces a estos títulos. Útil para comprobar si una determinada página enlaza a un determinado título.",
        "apihelp-query+links-param-dir": "La dirección en que ordenar la lista.",
        "apihelp-query+links-example-simple": "Obtener los enlaces de la página <kbd>Main Page</kbd>",
+       "apihelp-query+links-example-generator": "Obtenga información sobre las páginas de enlace en la página <kbd>Página principal</kbd>.",
        "apihelp-query+links-example-namespaces": "Obtener enlaces de la página <kbd>Main Page</kbd> de los espacios de nombres {{ns:user}} and {{ns:template}}.",
        "apihelp-query+linkshere-description": "Buscar todas las páginas que enlazan a las páginas dadas.",
        "apihelp-query+linkshere-param-prop": "Qué propiedades se obtendrán:",
        "apihelp-query+pageswithprop-param-dir": "Dirección en la que se desea ordenar.",
        "apihelp-query+pageswithprop-example-simple": "Listar las 10 primeras páginas que utilicen <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+pageswithprop-example-generator": "Obtener información adicional acerca de las 10 primeras páginas que utilicen <code>_&#95;NOTOC_&#95;</code>.",
+       "apihelp-query+prefixsearch-description": "Realice una búsqueda de prefijo de títulos de página.\n\nA pesar de la similitud en los nombres, este módulo no pretende ser equivalente a [[Special:PrefixIndex]]; para eso, vea <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> con el parámetro <kbd> apprefix</kbd>. El propósito de este módulo es similar a <kbd>[[Special:ApiHelp/opensearch|action=opensearch]]</kbd>: para tomar la entrada del usuario y proporcionar los mejores títulos coincidentes. Dependiendo del motor de búsqueda backend, esto puede incluir la corrección de errores, redirigir la evasión, u otras heurísticas.",
        "apihelp-query+prefixsearch-param-search": "Buscar cadena.",
        "apihelp-query+prefixsearch-param-namespace": "Espacio de nombres que buscar.",
        "apihelp-query+prefixsearch-param-limit": "Número máximo de resultados que devolver.",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "Agrega el nivel de protección.",
        "apihelp-query+protectedtitles-example-simple": "Listar títulos protegidos.",
        "apihelp-query+protectedtitles-example-generator": "Encuentra enlaces a títulos protegidos en el espacio de nombres principal.",
-       "apihelp-query+querypage-param-page": "El nombre de la página especial. Recuerda, es sensible a mayúsculas y minúsculas.",
+       "apihelp-query+querypage-description": "Obtenga una lista proporcionada por una página especial basada en QueryPage.",
+       "apihelp-query+querypage-param-page": "El nombre de la página especial. Recuerda, distingue mayúsculas y minúsculas.",
        "apihelp-query+querypage-param-limit": "Número de resultados que se devolverán.",
        "apihelp-query+querypage-example-ancientpages": "Devolver resultados de [[Special:Ancientpages]].",
        "apihelp-query+random-description": "Obtener un conjunto de páginas aleatorias.\n\nLas páginas aparecen enumeradas en una secuencia fija, solo que el punto de partida es aleatorio. Esto quiere decir que, si, por ejemplo, <samp>Portada</samp> es la primera página aleatoria de la lista, <samp>Lista de monos ficticios</samp> <em>siempre</em> será la segunda, <samp>Lista de personas en sellos de Vanuatu</samp> la tercera, etc.",
        "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Etiqueta ediciones verificables como verificadas o no verificadas.",
        "apihelp-query+recentchanges-paramvalue-prop-loginfo": "Añade información de registro (identificador de registro, tipo de registro, etc.) a las entradas de registro.",
        "apihelp-query+recentchanges-paramvalue-prop-tags": "Muestra las etiquetas de la entrada.",
+       "apihelp-query+recentchanges-paramvalue-prop-sha1": "Añade la suma de comprobación de contenido para las entradas asociadas a una revisión.",
        "apihelp-query+recentchanges-param-token": "Usa <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> en su lugar.",
        "apihelp-query+recentchanges-param-show": "Muestra solo los elementos que cumplan estos criterios. Por ejemplo, para ver solo ediciones menores realizadas por usuarios conectados, introduce $1show=minor|!anon.",
        "apihelp-query+recentchanges-param-limit": "Cuántos cambios en total se devolverán.",
        "apihelp-query+redirects-paramvalue-prop-fragment": "Fragmento de cada redirección, si los hubiere.",
        "apihelp-query+redirects-param-namespace": "Incluir solo páginas de estos espacios de nombres.",
        "apihelp-query+redirects-param-limit": "Cuántas redirecciones se devolverán.",
+       "apihelp-query+redirects-param-show": "Mostrar únicamente los elementos que cumplan con estos criterios:\n;fragment: mostrar solo redirecciones con fragmento.\n;!fragment: mostrar solo redirecciones sin fragmento.",
        "apihelp-query+redirects-example-simple": "Mostrar una lista de las redirecciones a la [[Main Page|Portada]]",
        "apihelp-query+redirects-example-generator": "Obtener información sobre todas las redirecciones a la [[Main Page|Portada]].",
+       "apihelp-query+revisions-description": "Obtener información de la revisión.\n\nPuede ser utilizado de varias maneras:\n# Obtener datos sobre un conjunto de páginas (última revisión), estableciendo títulos o ID de paginas.\n# Obtener revisiones para una página determinada, usando títulos o ID de páginas con inicio, fin o límite.\n# Obtener datos sobre un conjunto de revisiones estableciendo sus ID con revids.",
        "apihelp-query+revisions-paraminfo-singlepageonly": "Solo se puede usar con una sola página (modo n.º 2).",
        "apihelp-query+revisions-param-startid": "Identificador de revisión a partir del cual empezar la enumeración.",
        "apihelp-query+revisions-param-endid": "Identificador de revisión en el que detener la enumeración.",
        "apihelp-query+search-param-limit": "Cuántas páginas en total se devolverán.",
        "apihelp-query+search-param-interwiki": "Incluir resultados interwiki en la búsqueda, si es posible.",
        "apihelp-query+search-param-backend": "Qué servidor de búsqueda utilizar, si no es el servidor por defecto.",
-       "apihelp-query+search-param-enablerewrites": "Habilita la reescritura de consultas internas. Algunos servidores de búsqueda pueden reescribir la consulta a una que considere que da mejores resultados, por ejemplo, corrigiendo las faltas ortográficas.",
+       "apihelp-query+search-param-enablerewrites": "Habilitar la reescritura de consultas internas. Algunos servidores de búsqueda pueden reescribir la consulta a una que considere que da mejores resultados, por ejemplo, corrigiendo las faltas ortográficas.",
        "apihelp-query+search-example-simple": "Buscar <kbd>meaning</kbd>.",
        "apihelp-query+search-example-text": "Buscar <kbd>meaning</kbd> en los textos.",
        "apihelp-query+search-example-generator": "Obtener información acerca de las páginas devueltas por una búsqueda de <kbd>meaning</kbd>.",
        "apihelp-query+siteinfo-paramvalue-prop-restrictions": "Devuelve información sobre tipos de restricciones (protección) disponible.",
        "apihelp-query+siteinfo-paramvalue-prop-languages": "Devuelve una lista de los idiomas que admite MediaWiki (opcionalmente localizada mediante el uso de <var>$1inlanguagecode</var>).",
        "apihelp-query+siteinfo-paramvalue-prop-skins": "Devuelve una lista de todos las apariencias habilitadas (opcionalmente localizada mediante el uso de <var>$1inlanguagecode</var>, de lo contrario en el idioma del contenido).",
+       "apihelp-query+siteinfo-paramvalue-prop-extensiontags": "Devuelve una lista de las etiquetas extensoras del analizador.",
        "apihelp-query+siteinfo-paramvalue-prop-variables": "Devuelve una lista de identificadores variables.",
        "apihelp-query+siteinfo-paramvalue-prop-protocols": "Devuelve una lista de los protocolos que se permiten en los enlaces externos.",
        "apihelp-query+siteinfo-paramvalue-prop-defaultoptions": "Devuelve los valores predeterminados de las preferencias del usuario.",
        "apihelp-query+usercontribs-paramvalue-prop-flags": "Añade las marcas de la edición.",
        "apihelp-query+usercontribs-paramvalue-prop-patrolled": "Etiqueta ediciones verificadas.",
        "apihelp-query+usercontribs-paramvalue-prop-tags": "Lista las etiquetas para la edición.",
-       "apihelp-query+usercontribs-param-show": "Mostrar solo los elementos que coinciden con estos criterios. Por ejemplo, solo ediciones no menores: <kbd>$2show=!minor</kbd>.\n\nSi se establece <kbd>$2show=patrolled</kbd> o <kbd>$2show=!patrolled</kbd>, las revisiones más antiguas que <var>[[mw:Manual:$wgRCMaxAge|$wgRCMaxAge]]</var> ($1 {{PLURAL:$1|segundo|segundos}}) no se mostrarán.",
+       "apihelp-query+usercontribs-param-show": "Mostrar solo los elementos que coinciden con estos criterios. Por ejemplo, solo ediciones no menores: <kbd>$2show=!minor</kbd>.\n\nSi se establece <kbd>$2show=patrolled</kbd> o <kbd>$2show=!patrolled</kbd>, no se mostrarán las revisiones con una antigüedad mayor que <var>[[mw:Special:MyLanguage/Manual:$wgRCMaxAge|$wgRCMaxAge]]</var> ($1 {{PLURAL:$1|segundo|segundos}}).",
        "apihelp-query+usercontribs-param-tag": "Enumerar solo las revisiones con esta etiqueta.",
        "apihelp-query+usercontribs-param-toponly": "Enumerar solo las modificaciones que sean las últimas revisiones.",
        "apihelp-query+usercontribs-example-user": "Mostrar contribuciones del usuario <kbd>Example</kbd>.",
        "apihelp-query+userinfo-paramvalue-prop-blockinfo": "Etiqueta si el usuario está bloqueado, por quién y por qué motivo.",
        "apihelp-query+userinfo-paramvalue-prop-hasmsg": "Añade una etiqueta <samp>messages</samp> si el usuario actual tiene mensajes pendientes.",
        "apihelp-query+userinfo-paramvalue-prop-groups": "Lista todos los grupos al que pertenece el usuario actual.",
+       "apihelp-query+userinfo-paramvalue-prop-groupmemberships": "Enumera los grupos a los que se ha asignado explícitamente al usuario actual, incluida la fecha de expiración de la pertenencia a cada grupo.",
        "apihelp-query+userinfo-paramvalue-prop-implicitgroups": "Enumera todos los grupos a los que pertenece automáticamente el usuario actual.",
        "apihelp-query+userinfo-paramvalue-prop-rights": "Lista todos los permisos que tiene el usuario actual.",
        "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Enumera los grupos a los que el usuario actual se puede unir o retirar.",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "Fijar la marca de tiempo de notificación de <kbd>Main page</kbd> para que todas las ediciones posteriores al 1 de enero de 2012 estén consideradas como no vistas.",
        "apihelp-setnotificationtimestamp-example-allpages": "Restablecer el estado de notificación de las páginas del espacio de nombres <kbd>{{ns:user}}</kbd>.",
        "apihelp-setpagelanguage-description": "Cambiar el idioma de una página.",
-       "apihelp-setpagelanguage-description-disabled": "En este wiki no se permite modificar el idioma de las páginas.\n\nActiva <var>[[mw:Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> para utilizar esta acción.",
+       "apihelp-setpagelanguage-description-disabled": "En este wiki no se permite modificar el idioma de las páginas.\n\nActiva <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> para utilizar esta acción.",
        "apihelp-setpagelanguage-param-title": "Título de la página cuyo idioma deseas cambiar. No se puede usar junto con <var>$1pageid</var>.",
        "apihelp-setpagelanguage-param-pageid": "Identificador de la página cuyo idioma deseas cambiar. No se puede usar junto con <var>$1title</var>.",
        "apihelp-setpagelanguage-param-lang": "Código del idioma al que se desea cambiar la página. Usa <kbd>default</kbd> para restablecer la página al idioma predeterminado para el contenido del wiki.",
        "apihelp-xml-param-includexmlnamespace": "Si se especifica, añade un espacio de nombres XML.",
        "apihelp-xmlfm-description": "Producir los datos de salida en formato XML (con resaltado sintáctico en HTML).",
        "api-format-title": "Resultado de la API de MediaWiki",
-       "api-format-prettyprint-header": "Esta es la representación en HTML del formato $1. HTML es adecuado para realizar tareas de depuración, pero no para utilizarlo en aplicaciones.\n\nUtiliza el parámetro <var>format</var> para modificar el formato de salida. Para ver la representación no HTML del formato $1, emplea <kbd>format=$2</kbd>.\n\nPara obtener más información, consulta la [[mw:API|documentación completa]] o la [[Special:ApiHelp/main|ayuda de API]].",
-       "api-format-prettyprint-header-only-html": "Esta es una representación en HTML destinada a la depuración, y no es adecuada para el uso de la aplicación.\n\nVéase la [[mw:API|documentación completa]] o la [[Special:ApiHelp/main|página de ayuda de la API]] para más información.",
+       "api-format-prettyprint-header": "Esta es la representación en HTML del formato $1. HTML es adecuado para realizar tareas de depuración, pero no para utilizarlo en aplicaciones.\n\nUtiliza el parámetro <var>format</var> para modificar el formato de salida. Para ver la representación no HTML del formato $1, emplea <kbd>format=$2</kbd>.\n\nPara obtener más información, consulta la [[mw:Special:MyLanguage/API|documentación completa]] o la [[Special:ApiHelp/main|ayuda de API]].",
+       "api-format-prettyprint-header-only-html": "Esta es una representación en HTML destinada a la depuración, y no es adecuada para el uso de la aplicación.\n\nVéase la [[mw:Special:MyLanguage/API|documentación completa]] o la [[Special:ApiHelp/main|página de ayuda de la API]] para más información.",
        "api-format-prettyprint-status": "Esta respuesta se devolvería con el estado HTTP $1 $2.",
+       "api-login-fail-badsessionprovider": "No se puede acceder mientras esté utilizándose $1.",
        "api-pageset-param-titles": "Una lista de títulos en los que trabajar.",
        "api-pageset-param-pageids": "Una lista de identificadores de páginas en las que trabajar.",
        "api-pageset-param-revids": "Una lista de identificadores de revisiones en las que trabajar.",
        "api-help-param-multi-all": "Para especificar todos los valores, utiliza <kbd>$1</kbd>.",
        "api-help-param-default": "Predeterminado: $1",
        "api-help-param-default-empty": "Predeterminado: <span class=\"apihelp-empty\">(vacío)</span>",
-       "api-help-param-disabled-in-miser-mode": "Deshabilitado debido al [[mw:Manual:$wgMiserMode|modo avaro]].",
-       "api-help-param-limited-in-miser-mode": "<strong>Nota:</strong> Debido al [[mw:Manual:$wgMiserMode|modo avaro]], usar esto puede dar lugar a que se devuelvan menos de <var>$1limit</var> antes de continuar. En casos extremos, podrían devolverse cero resultados.",
+       "api-help-param-disabled-in-miser-mode": "Deshabilitado debido al [[mw:Special:MyLanguage/Manual:$wgMiserMode|modo avaro]].",
+       "api-help-param-limited-in-miser-mode": "strong>Nota:</strong> Debido al [[mw:Special:MyLanguage/Manual:$wgMiserMode|modo avaro]], usar esto puede dar lugar a que se devuelvan menos de <var>$1limit</var> antes de continuar. En casos extremos, podrían devolverse cero resultados.",
        "api-help-param-direction": "En qué sentido hacer la enumeración:\n;newer: De más antiguos a más recientes. Nota: $1start debe ser anterior a $1end.\n;older: De más recientes a más antiguos (orden predefinido). Nota: $1start debe ser posterior a $1end.",
        "api-help-param-continue": "Cuando haya más resultados disponibles, utiliza esto para continuar.",
        "api-help-param-no-description": "<span class=\"apihelp-empty\">(sin descripción)</span>",
        "apierror-cantsend": "No estás conectado, no tienes una dirección de correo electrónico confirmada o no tienes permiso para enviar correo electrónico a otros usuarios, así que no puedes enviar correo electrónico.",
        "apierror-cantundelete": "No se ha podido restaurar: puede que las revisiones solicitadas no existan o que ya se hayan restaurado.",
        "apierror-changeauth-norequest": "No se ha podido crear la petición de modificación.",
-       "apierror-compare-inputneeded": "Se necesita un título, un identificador de página o un número de revisión tanto para el parámetro <var>from</var> como para el parámetro <var>to</var>.",
        "apierror-contentserializationexception": "La serialización de contenido falló: $1",
-       "apierror-contenttoobig": "El contenido que has suministrado supera el tamaño máximo de archivo de $1 {{PLURAL:$1|kilobytes|kilobytes}}.",
+       "apierror-contenttoobig": "El contenido que has suministrado supera el tamaño máximo de archivo de $1 {{PLURAL:$1|kilobyte|kilobytes}}.",
+       "apierror-copyuploadbaddomain": "No se permite realizar cargas a partir de este dominio.",
+       "apierror-copyuploadbadurl": "No se permite realizar cargas a partir de este URL.",
        "apierror-create-titleexists": "Los títulos existentes no se pueden proteger con <kbd>create</kbd>.",
        "apierror-csp-report": "Error de procesamiento del informe CSP: $1.",
        "apierror-databaseerror": "[$1] Error en la consulta de la base de datos.",
        "apierror-reauthenticate": "No te has autentificado recientemente en esta sesión. Por favor, vuelve a autentificarte.",
        "apierror-revdel-mutuallyexclusive": "No se puede usar el mismo campo en <var>hide</var> y <var>show</var>.",
        "apierror-revdel-paramneeded": "Se requiere al menos un valor para <var>hide</var> y/o <var>show</var>.",
+       "apierror-revisions-badid": "No se encontró ninguna revisión para el parámetro <var>$1</var>.",
        "apierror-revisions-norevids": "El parámetro <var>revids</var> no se puede utilizar junto con las opciones de lista (<var>$1limit</var>, <var>$1startid</var>, <var>$1endid</var>, <kbd>$1dir=newer</kbd>, <var>$1user</var>, <var>$1excludeuser</var>, <var>$1start</var> y <var>$1end</var>).",
        "apierror-revisions-singlepage": "Se utilizó <var>titles</var>, <var>pageids</var> o un generador para proporcionar múltiples páginas, pero los parámetros <var>$1limit</var>, <var>$1startid</var>, <var>$1endid</var>, <kbd>$1dir=newer</kbd>, <var>$1user</var>, <var>$1excludeuser</var>, <var>$1start</var> y <var>$1end</var> solo se pueden utilizar en una sola página.",
        "apierror-revwrongpage": "r$1 no es una revisión de $2.",
+       "apierror-searchdisabled": "Se ha desactivado la búsqueda de «<var>$1</var>».",
        "apierror-sectionreplacefailed": "No se ha podido combinar la sección actualizada.",
        "apierror-sectionsnotsupported": "Las secciones no son compatibles con el modelo de contenido $1.",
        "apierror-sectionsnotsupported-what": "Las secciones no son compatibles con $1.",
index 2ae81d4..daaf0c0 100644 (file)
        "apihelp-help-param-helpformat": "قالب‌بندی خروجی راهنما.",
        "apihelp-help-example-main": "راهنما برای پودمان اصلی",
        "apihelp-help-example-recursive": "همهٔ راهنما در یک صفحه",
-       "apihelp-help-example-help": "راهنما برای خود ماژول راهنما",
-       "apihelp-help-example-query": "راهنما برای دو زیر پودمان کوئری",
+       "apihelp-help-example-help": "راهنمایی برای خود راهنما.",
+       "apihelp-help-example-query": "راهنما برای دو زیرپودمانِ پرسمان",
        "apihelp-imagerotate-description": "چرخاندن یک یا چند تصویر",
        "apihelp-imagerotate-param-rotation": "درجه برای چرخاندن تصویر در جهت ساعت‌گرد.",
        "apihelp-imagerotate-example-simple": "چرخاندن <kbd>۹۰</kbd> درجه برای <kbd>File:Example.png</kbd>",
index 4c028b2..bf0f8e5 100644 (file)
@@ -20,7 +20,6 @@
                        "Wladek92",
                        "Ash Crow",
                        "L",
-                       "Umherirrender",
                        "Elfix",
                        "Lbayle",
                        "Verdy p",
@@ -36,7 +35,7 @@
        "apihelp-main-param-maxlag": "La latence maximale peut être utilisée quand MédiaWiki est installé sur un cluster de base de données répliqué. Pour éviter des actions provoquant un supplément de latence de réplication de site, ce paramètre peut faire attendre le client jusqu’à ce que la latence de réplication soit inférieure à une valeur spécifiée. En cas de latence excessive, le code d’erreur <samp>maxlag</samp> est renvoyé avec un message tel que <samp>Attente de $host : $lag secondes de délai</samp>.<br />Voyez [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manuel: Maxlag parameter]] pour plus d’information.",
        "apihelp-main-param-smaxage": "Fixer l’entête HTTP de contrôle de cache <code>s-maxage</code> à ce nombre de secondes. Les erreurs ne sont jamais mises en cache.",
        "apihelp-main-param-maxage": "Fixer l’entête HTTP de contrôle de cache <code>max-age</code> à ce nombre de secondes. Les erreurs ne sont jamais mises en cache.",
-       "apihelp-main-param-assert": "Vérifier si l’utilisateur est connecté si positionné à <kbd>user</kbd>, ou s'il a le droit d'un utilisateur robot si positionné à <kbd>bot</kbd>.",
+       "apihelp-main-param-assert": "Vérifier si l’utilisateur est connecté si la valeur est <kbd>user</kbd>, ou s’il a le droit d’un utilisateur robot si la valeur est <kbd>bot</kbd><!-- {{int:group-bot}} ? -->.",
        "apihelp-main-param-assertuser": "Vérifier que l’utilisateur actuel est l’utilisateur nommé.",
        "apihelp-main-param-requestid": "Toute valeur fournie ici sera incluse dans la réponse. Peut être utilisé pour distinguer des demandes.",
        "apihelp-main-param-servedby": "Inclure le nom d’hôte qui a renvoyé la requête dans les résultats.",
        "apihelp-compare-param-fromtitle": "Premier titre à comparer.",
        "apihelp-compare-param-fromid": "ID de la première page à comparer.",
        "apihelp-compare-param-fromrev": "Première révision à comparer.",
+       "apihelp-compare-param-fromtext": "Utiliser ce texte au lieu du contenu de la révision spécifié par <var>fromtitle</var>, <var>fromid</var> ou <var>fromrev</var>.",
+       "apihelp-compare-param-frompst": "Faire une transformation avant enregistrement sur <var>fromtext</var>.",
+       "apihelp-compare-param-fromcontentmodel": "Modèle de contenu de <var>fromtext</var>. Si non fourni, il sera deviné d’après les autres paramètres.",
+       "apihelp-compare-param-fromcontentformat": "Sérialisation du contenu de <var>fromtext</var>.",
        "apihelp-compare-param-totitle": "Second titre à comparer.",
        "apihelp-compare-param-toid": "ID de la seconde page à comparer.",
        "apihelp-compare-param-torev": "Seconde révision à comparer.",
+       "apihelp-compare-param-torelative": "Utiliser une révision relative à la révision déterminée de <var>fromtitle</var>, <var>fromid</var> ou <var>fromrev</var>. Toutes les autres options 'to' seront ignorées.",
+       "apihelp-compare-param-totext": "Utiliser ce texte au lieu du contenu de la révision spécifié par <var>totitle</var>, <var>toid</var> ou <var>torev</var>.",
+       "apihelp-compare-param-topst": "Faire une transformation avant enregistrement sur <var>totext</var>.",
+       "apihelp-compare-param-tocontentmodel": "Modèle de contenu de <var>totext</var>. Si non fourni, il sera deviné d’après les autres paramètres.",
+       "apihelp-compare-param-tocontentformat": "Sérialisation du contenu de <var>totext</var>.",
+       "apihelp-compare-param-prop": "Quelles informations obtenir.",
+       "apihelp-compare-paramvalue-prop-diff": "Le diff HTML.",
+       "apihelp-compare-paramvalue-prop-diffsize": "La taille du diff HTML en octets.",
+       "apihelp-compare-paramvalue-prop-rel": "L’ID des révisions précédant 'depuis' et 'vers', s’il y en a.",
+       "apihelp-compare-paramvalue-prop-ids": "L’ID de page et de révision des révisions 'depuis' et 'vers'.",
+       "apihelp-compare-paramvalue-prop-title": "Le titre de page des révisions 'depuis' et 'vers'.",
+       "apihelp-compare-paramvalue-prop-user": "Le nom et l’ID d’utilisateur des révisions 'depuis' et 'vers'.",
+       "apihelp-compare-paramvalue-prop-comment": "Le commentaire des révisions 'depuis' et 'vers'.",
+       "apihelp-compare-paramvalue-prop-parsedcomment": "Le commentaire analysé des révisions 'depuis' et 'vers'.",
+       "apihelp-compare-paramvalue-prop-size": "La taille des révisions 'depuis' et 'vers'.",
        "apihelp-compare-example-1": "Créer une différence entre les révisions 1 et 2",
        "apihelp-createaccount-description": "Créer un nouveau compte utilisateur.",
        "apihelp-createaccount-param-preservestate": "Si <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> a retourné true pour <samp>hasprimarypreservedstate</samp>, les demandes marquées comme <samp>primary-required</samp> doivent être omises. Si elle a retourné une valeur non vide pour <samp>preservedusername</samp>, ce nom d'utilisateur doit être utilisé pour le paramètre <var>username</var>.",
        "apihelp-expandtemplates-param-title": "Titre de la page.",
        "apihelp-expandtemplates-param-text": "Wikitexte à convertir.",
        "apihelp-expandtemplates-param-revid": "ID de révision, pour <nowiki>{{REVISIONID}}</nowiki> et les variables semblables.",
-       "apihelp-expandtemplates-param-prop": "Quelles informations récupérer.\n\nNoter que si aucune valeur n’est sélectionnée, le résultat contiendra le wikitexte, mais la sortie sera dans un format obsolète.",
+       "apihelp-expandtemplates-param-prop": "Quelles informations récupérer.\n\nNoter que si aucune valeur n’est sélectionnée, le résultat contiendra le wikitexte, mais la sortie sera dans un format désuet.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "Le wikitexte développé",
        "apihelp-expandtemplates-paramvalue-prop-categories": "Toutes les catégories présentes dans l’entrée qui ne sont pas représentées dans la sortie du wikitexte.",
        "apihelp-expandtemplates-paramvalue-prop-properties": "Propriétés de la page définies par le développement des mots magiques dans le wikitexte.",
        "apihelp-feedwatchlist-example-all6hrs": "Afficher toutes les modifications sur les pages suivies dans les dernières 6 heures",
        "apihelp-filerevert-description": "Rétablir un fichier dans une ancienne version.",
        "apihelp-filerevert-param-filename": "Nom de fichier cible, sans le préfixe File:.",
-       "apihelp-filerevert-param-comment": "Télécharger le commentaire.",
+       "apihelp-filerevert-param-comment": "Téléverser le commentaire.",
        "apihelp-filerevert-param-archivename": "Nom d’archive de la révision à rétablir.",
        "apihelp-filerevert-example-revert": "Rétablir <kbd>Wiki.png</kbd> dans la version du <kbd>2011-03-05T15:27:40Z</kbd>.",
        "apihelp-help-description": "Afficher l’aide pour les modules spécifiés.",
        "apihelp-help-example-query": "Aide pour deux sous-modules de recherche.",
        "apihelp-imagerotate-description": "Faire pivoter une ou plusieurs images.",
        "apihelp-imagerotate-param-rotation": "Degrés de rotation de l’image dans le sens des aiguilles d’une montre.",
-       "apihelp-imagerotate-param-tags": "Balises à appliquer à l’entrée dans le journal de téléchargement.",
+       "apihelp-imagerotate-param-tags": "Balises à appliquer à l’entrée dans le journal de téléversement.",
        "apihelp-imagerotate-example-simple": "Faire pivoter <kbd>File:Example.png</kbd> de <kbd>90</kbd> degrés.",
        "apihelp-imagerotate-example-generator": "Faire pivoter toutes les images de <kbd>Category:Flip</kbd> de <kbd>180</kbd> degrés.",
        "apihelp-import-description": "Importer une page depuis un autre wiki, ou depuis un fichier XML.\n\nNoter que le POST HTTP doit être effectué comme un import de fichier (c’est-à-dire en utilisant multipart/form-data) lors de l’envoi d’un fichier pour le paramètre <var>xml</var>.",
        "apihelp-import-param-summary": "Résumé de l’importation de l’entrée de journal.",
-       "apihelp-import-param-xml": "Fichier XML téléchargé.",
+       "apihelp-import-param-xml": "Fichier XML téléversé.",
        "apihelp-import-param-interwikisource": "Pour les importations interwiki : wiki depuis lequel importer.",
        "apihelp-import-param-interwikipage": "Pour les importations interwiki : page à importer.",
        "apihelp-import-param-fullhistory": "Pour les importations interwiki : importer tout l’historique, et pas seulement la version courante.",
        "apihelp-parse-paramvalue-prop-sections": "Fournit les sections dans le wikitexte analysé.",
        "apihelp-parse-paramvalue-prop-revid": "Ajoute l’ID de révision de la page analysée.",
        "apihelp-parse-paramvalue-prop-displaytitle": "Ajoute le titre du wikitexte analysé.",
-       "apihelp-parse-paramvalue-prop-headitems": "<span class=\"apihelp-deprecated\">Obsolète.</span> Fournit les éléments à mettre dans le <code>&lt;head&gt;</code> de la page.",
+       "apihelp-parse-paramvalue-prop-headitems": "<span class=\"apihelp-deprecated\">Désuet.</span> Fournit les éléments à mettre dans le <code>&lt;head&gt;</code> de la page.",
        "apihelp-parse-paramvalue-prop-headhtml": "Fournit le <code>&lt;head&gt;</code> analysé de la page.",
        "apihelp-parse-paramvalue-prop-modules": "Fournit les modules ResourceLoader utilisés sur la page. Pour les charger, utiliser <code>mw.loader.using()</code>. Soit <kbd>jsconfigvars</kbd> soit <kbd>encodedjsconfigvars</kbd> doit être demandé avec <kbd>modules</kbd>.",
        "apihelp-parse-paramvalue-prop-jsconfigvars": "Fournit les variables de configuration JavaScript spécifiques à la page. Pour les appliquer, utiliser <code>mw.config.set()</code>.",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "Fournit la version HTML du rapport de limite. Ne fournit aucune donnée, si <var>$1disablelimitreport</var> est positionné.",
        "apihelp-parse-paramvalue-prop-parsetree": "L’arbre d’analyse XML du contenu de la révision (nécessite le modèle de contenu <code>$1</code>)",
        "apihelp-parse-paramvalue-prop-parsewarnings": "Fournit les messages d'avertissement qui sont apparus lors de l'analyse de contenu.",
+       "apihelp-parse-param-wrapoutputclass": "classe CSS à utiliser pour formater la sortie de l'analyseur.",
        "apihelp-parse-param-pst": "Faire une transformation avant enregistrement de l’entrée avant de l’analyser. Valide uniquement quand utilisé avec du texte.",
        "apihelp-parse-param-onlypst": "Faire une transformation avant enregistrement (PST) de l’entrée, mais ne pas l’analyser. Renvoie le même wikitexte, après que la PST a été appliquée. Valide uniquement quand utilisé avec <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Inclut les liens de langue fournis par les extensions (à utiliser avec <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-preview": "Analyser en mode aperçu.",
        "apihelp-parse-param-sectionpreview": "Analyser en mode aperçu de section (active aussi le mode aperçu).",
        "apihelp-parse-param-disabletoc": "Omettre la table des matières dans la sortie.",
+       "apihelp-parse-param-useskin": "Appliquer l’habillage sélectionné sur la sortie de l’analyseur. Cela peut affecter les propriétés suivantes : <kbd>langlinks</kbd>, <kbd>headitems</kbd>, <kbd>modules</kbd>, <kbd>jsconfigvars</kbd>, <kbd>indicators</kbd>.",
        "apihelp-parse-param-contentformat": "Format de sérialisation du contenu utilisé pour le texte d’entrée. Valide uniquement si utilisé avec $1text.",
        "apihelp-parse-param-contentmodel": "Modèle de contenu du texte d’entrée. Si omis, $1title doit être spécifié, et la valeur par défaut sera le modèle du titre spécifié. Valide uniquement quand utilisé avec $1text.",
        "apihelp-parse-example-page": "Analyser une page.",
        "apihelp-query+allimages-param-maxsize": "Restreindre aux images avec au plus ce nombre d’octets.",
        "apihelp-query+allimages-param-sha1": "Hachage SHA1 de l’image. Écrase $1sha1base36.",
        "apihelp-query+allimages-param-sha1base36": "Hachage SHA1 de l’image en base 36 (utilisé dans MediaWiki).",
-       "apihelp-query+allimages-param-user": "Renvoyer seulement les fichiers téléchargés par cet utilisateur. Utilisable uniquement avec $1sort=timestamp. Impossible à utiliser avec $1filterbots.",
-       "apihelp-query+allimages-param-filterbots": "Comment filtrer les fichiers téléchargés par des robots. Peut être utilisé uniquement avec $1sort=timestamp. Impossible à utiliser avec $1user.",
+       "apihelp-query+allimages-param-user": "Renvoyer seulement les fichiers téléversés par cet utilisateur. Utilisable uniquement avec $1sort=timestamp. Impossible à utiliser avec $1filterbots.",
+       "apihelp-query+allimages-param-filterbots": "Comment filtrer les fichiers téléversés par des robots. Peut être utilisé uniquement avec $1sort=timestamp. Impossible à utiliser avec $1user.",
        "apihelp-query+allimages-param-mime": "Quels types MIME rechercher, par ex. <kbd>image/jpeg</kbd>.",
        "apihelp-query+allimages-param-limit": "Combien d’images renvoyer au total.",
        "apihelp-query+allimages-example-B": "Afficher une liste des fichiers commençant par la lettre <kbd>B</kbd>.",
-       "apihelp-query+allimages-example-recent": "Afficher une liste de fichiers récemment téléchargés, semblable à [[Special:NewFiles]].",
+       "apihelp-query+allimages-example-recent": "Afficher une liste de fichiers récemment téléversés, semblable à [[Special:NewFiles]].",
        "apihelp-query+allimages-example-mimetypes": "Afficher une liste de fichiers avec le type MIME <kbd>image/png</kbd> ou <kbd>image/gif</kbd>",
        "apihelp-query+allimages-example-generator": "Afficher l’information sur 4 fichiers commençant par la lettre <kbd>T</kbd>.",
        "apihelp-query+alllinks-description": "Énumérer tous les liens pointant vers un espace de noms donné.",
        "apihelp-query+allrevisions-param-generatetitles": "Utilisé comme générateur, génère des titres plutôt que des IDs de révision.",
        "apihelp-query+allrevisions-example-user": "Lister les 50 dernières contributions de l’utilisateur <kbd>Example</kbd>.",
        "apihelp-query+allrevisions-example-ns-main": "Lister les 50 premières révisions dans l’espace de noms principal.",
-       "apihelp-query+mystashedfiles-description": "Obtenir une liste des fichiers dans le cache de téléchargement de l’utilisateur actuel",
+       "apihelp-query+mystashedfiles-description": "Obtenir une liste des fichiers dans le cache de téléversement de l’utilisateur actuel",
        "apihelp-query+mystashedfiles-param-prop": "Quelles propriétés récupérer pour les fichiers.",
        "apihelp-query+mystashedfiles-paramvalue-prop-size": "Récupérer la taille du fichier et les dimensions de l’image.",
        "apihelp-query+mystashedfiles-paramvalue-prop-type": "Récupérer le type MIME du fichier et son type de média.",
        "apihelp-query+mystashedfiles-param-limit": "Combien de fichiers obtenir.",
-       "apihelp-query+mystashedfiles-example-simple": "Obtenir la clé du fichier, sa taille, et la taille en pixel des fichiers dans le cache de téléchargement de l’utilisateur actuel.",
+       "apihelp-query+mystashedfiles-example-simple": "Obtenir la clé du fichier, sa taille, et la taille en pixels des fichiers dans le cache de téléversement de l’utilisateur actuel.",
        "apihelp-query+alltransclusions-description": "Lister toutes les transclusions (pages intégrées en utilisant &#123;&#123;x&#125;&#125;), y compris les inexistantes.",
        "apihelp-query+alltransclusions-param-from": "Le titre de la transclusion depuis lequel commencer l’énumération.",
        "apihelp-query+alltransclusions-param-to": "Le titre de la transclusion auquel arrêter l’énumération.",
        "apihelp-query+deletedrevs-param-excludeuser": "Ne pas lister les révisions par cet utilisateur.",
        "apihelp-query+deletedrevs-param-namespace": "Lister uniquement les pages dans cet espace de noms.",
        "apihelp-query+deletedrevs-param-limit": "Le nombre maximal de révisions à lister.",
-       "apihelp-query+deletedrevs-param-prop": "Quelles propriétés obtenir :\n;revid:Ajoute l’ID de la révision supprimée.\n;parentid:Ajoute l’ID de la révision précédente de la page.\n;user:Ajoute l’utilisateur ayant fait la révision.\n;userid:Ajoute l’ID de l’utilisateur qui a fait la révision.\n;comment:Ajoute le commentaire de la révision.\n;parsedcomment:Ajoute le commentaire analysé de la révision.\n;minor:Marque si la révision est mineure.\n;len:Ajoute la longueur (en octets) de la révision.\n;sha1:Ajoute le SHA-1 (base 16) de la révision.\n;content:Ajoute le contenu de la révision.\n;token:<span class=\"apihelp-deprecated\">Obsolète.</span> Fournit le jeton de modification.\n;tags:Balises pour la révision.",
+       "apihelp-query+deletedrevs-param-prop": "Quelles propriétés obtenir :\n;revid : Ajoute l’ID de la révision supprimée.\n;parentid : Ajoute l’ID de la révision précédente de la page.\n;user : Ajoute l’utilisateur ayant fait la révision.\n;userid : Ajoute l’ID de l’utilisateur qui a fait la révision.\n;comment : Ajoute le commentaire de la révision.\n;parsedcomment : Ajoute le commentaire analysé de la révision.\n;minor : Marque si la révision est mineure.\n;len : Ajoute la longueur (en octets) de la révision.\n;sha1 : Ajoute le SHA-1 (base 16) de la révision.\n;content : Ajoute le contenu de la révision.\n;token : <span class=\"apihelp-deprecated\">Désuet.</span> Fournit le jeton de modification.\n;tags : Balises pour la révision.",
        "apihelp-query+deletedrevs-example-mode1": "Lister les dernières révisions supprimées des pages <kbd>Main Page</kbd> et <kbd>Talk:Main Page</kbd>, avec le contenu (mode 1).",
        "apihelp-query+deletedrevs-example-mode2": "Lister les 50 dernières contributions de <kbd>Bob</kbd> supprimées (mode 2).",
        "apihelp-query+deletedrevs-example-mode3-main": "Lister les 50 premières révisions supprimées dans l’espace de noms principal (mode 3)",
        "apihelp-query+filearchive-param-sha1base36": "Hachage SHA1 de l’image en base 36 (utilisé dans MédiaWiki).",
        "apihelp-query+filearchive-param-prop": "Quelle information obtenir sur l’image :",
        "apihelp-query+filearchive-paramvalue-prop-sha1": "Ajoute le hachage SHA-1 pour l’image.",
-       "apihelp-query+filearchive-paramvalue-prop-timestamp": "Ajoute l’horodatage pour la version téléchargée.",
-       "apihelp-query+filearchive-paramvalue-prop-user": "Ajoute l’utilisateur qui a téléchargé la version de l’image.",
+       "apihelp-query+filearchive-paramvalue-prop-timestamp": "Ajoute l’horodatage à la version téléversée.",
+       "apihelp-query+filearchive-paramvalue-prop-user": "Ajoute l’utilisateur qui a téléversé la version de l’image.",
        "apihelp-query+filearchive-paramvalue-prop-size": "Ajoute la taille de l’image en octets et la hauteur, la largeur et le nombre de page (si c’est applicable).",
        "apihelp-query+filearchive-paramvalue-prop-dimensions": "Alias pour la taille.",
        "apihelp-query+filearchive-paramvalue-prop-description": "Ajoute la description de la version de l’image.",
        "apihelp-query+fileusage-param-show": "Afficher uniquement les éléments qui correspondent à ces critères :\n;redirect:Afficher uniquement les redirections.\n;!redirect:Afficher uniquement les non-redirections.",
        "apihelp-query+fileusage-example-simple": "Obtenir une liste des pages utilisant [[:File:Example.jpg]]",
        "apihelp-query+fileusage-example-generator": "Obtenir l’information sur les pages utilisant [[:File:Example.jpg]]",
-       "apihelp-query+imageinfo-description": "Renvoyer l’information de fichier et l’historique de téléchargement.",
+       "apihelp-query+imageinfo-description": "Renvoyer l’information de fichier et l’historique de téléversement.",
        "apihelp-query+imageinfo-param-prop": "Quelle information obtenir du fichier :",
-       "apihelp-query+imageinfo-paramvalue-prop-timestamp": "Ajoute l’horodatage à la version téléchargée.",
-       "apihelp-query+imageinfo-paramvalue-prop-user": "Ajoute l’utilisateur qui a téléchargé chaque version du fichier.",
-       "apihelp-query+imageinfo-paramvalue-prop-userid": "Ajouter l’ID de l’utilisateur qui a téléchargé chaque version du fichier.",
+       "apihelp-query+imageinfo-paramvalue-prop-timestamp": "Ajoute l’horodatage à la version téléversée.",
+       "apihelp-query+imageinfo-paramvalue-prop-user": "Ajoute l’utilisateur qui a téléversé chaque version du fichier.",
+       "apihelp-query+imageinfo-paramvalue-prop-userid": "Ajouter l’ID de l’utilisateur qui a téléversé chaque version du fichier.",
        "apihelp-query+imageinfo-paramvalue-prop-comment": "Commentaire sur la version.",
        "apihelp-query+imageinfo-paramvalue-prop-parsedcomment": "Analyser le commentaire de la version.",
        "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "Ajoute le titre canonique du fichier.",
        "apihelp-query+langlinks-paramvalue-prop-autonym": "Ajoute le nom natif de la langue.",
        "apihelp-query+langlinks-param-lang": "Renvoyer uniquement les liens interlangue avec ce code de langue.",
        "apihelp-query+langlinks-param-title": "Lien à rechercher. Doit être utilisé avec <var>$1lang</var>.",
-       "apihelp-query+langlinks-param-dir": "La direction dans laquelle énumérer.",
+       "apihelp-query+langlinks-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+langlinks-param-inlanguagecode": "Code de langue pour les noms de langue localisés.",
        "apihelp-query+langlinks-example-simple": "Obtenir les liens interlangue de la page <kbd>Main Page</kbd>.",
        "apihelp-query+links-description": "Renvoie tous les liens des pages fournies.",
        "apihelp-query+redirects-example-generator": "Obtenir des informations sur toutes les redirections vers [[Main Page]]",
        "apihelp-query+revisions-description": "Obtenir des informations sur la révision.\n\nPeut être utilisé de différentes manières :\n# Obtenir des données sur un ensemble de pages (dernière révision), en mettant les titres ou les ids de page.\n# Obtenir les révisions d’une page donnée, en utilisant les titres ou les ids de page avec rvstart, rvend ou rvlimit.\n# Obtenir des données sur un ensemble de révisions en donnant leurs IDs avec revids.",
        "apihelp-query+revisions-paraminfo-singlepageonly": "Utilisable uniquement avec une seule page (mode #2).",
-       "apihelp-query+revisions-param-startid": "À quel ID de révision démarrer l’énumération.",
-       "apihelp-query+revisions-param-endid": "Arrêter l’énumération des révisions à cet ID.",
+       "apihelp-query+revisions-param-startid": "Commencer l'énumération à partir de la date de cette revue. La revue doit exister, mais ne concerne pas forcément cette page.",
+       "apihelp-query+revisions-param-endid": "Arrêter l’énumération à la date de cette revue. La revue doit exister mais ne concerne pas forcément cette page.",
        "apihelp-query+revisions-param-start": "À quel horodatage de révision démarrer l’énumération.",
        "apihelp-query+revisions-param-end": "Énumérer jusqu’à cet horodatage.",
        "apihelp-query+revisions-param-user": "Inclure uniquement les révisions faites par l’utilisateur.",
        "apihelp-query+search-paramvalue-prop-sectiontitle": "Ajoute le titre de la section correspondante.",
        "apihelp-query+search-paramvalue-prop-categorysnippet": "Ajoute un extrait analysé de la catégorie correspondante.",
        "apihelp-query+search-paramvalue-prop-isfilematch": "Ajoute un booléen indiquant si la recherche correspond au contenu du fichier.",
-       "apihelp-query+search-paramvalue-prop-score": "<span class=\"apihelp-deprecated\">Obsolète et ignoré.</span>",
-       "apihelp-query+search-paramvalue-prop-hasrelated": "<span class=\"apihelp-deprecated\">Obsolète et ignoré.</span>",
+       "apihelp-query+search-paramvalue-prop-score": "<span class=\"apihelp-deprecated\">Désuet et ignoré.</span>",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "<span class=\"apihelp-deprecated\">Désuet et ignoré.</span>",
        "apihelp-query+search-param-limit": "Combien de pages renvoyer au total.",
        "apihelp-query+search-param-interwiki": "Inclure les résultats interwiki dans la recherche, s’ils sont disponibles.",
        "apihelp-query+search-param-backend": "Quel serveur de recherche utiliser, si ce n’est pas celui par défaut.",
-       "apihelp-query+search-param-enablerewrites": "Activer la réécriture interne de la requête. Les serveurs de recherche peuvent changer la requête en une autre dont ils estiment qu'elle donne de meilleurs résultats, par exemple en corrigeant l'orthographe.",
+       "apihelp-query+search-param-enablerewrites": "Activer la réécriture interne de la requête. Les serveurs de recherche peuvent réécrire la requête en une autre qui est censée donner de meilleurs résultats, par exemple en corrigeant les erreurs d’orthographe.",
        "apihelp-query+search-example-simple": "Rechercher <kbd>meaning</kbd>.",
        "apihelp-query+search-example-text": "Rechercher des textes pour <kbd>meaning</kbd>.",
        "apihelp-query+search-example-generator": "Obtenir les informations sur les pages renvoyées par une recherche de <kbd>meaning</kbd>.",
        "apihelp-query+siteinfo-paramvalue-prop-usergroups": "Renvoie les groupes utilisateur et les droits associés.",
        "apihelp-query+siteinfo-paramvalue-prop-libraries": "Renvoie les bibliothèques installées sur le wiki.",
        "apihelp-query+siteinfo-paramvalue-prop-extensions": "Renvoie les extensions installées sur le wiki.",
-       "apihelp-query+siteinfo-paramvalue-prop-fileextensions": "Renvoie la liste des extensions de fichier (types de fichier) autorisées au téléchargement.",
+       "apihelp-query+siteinfo-paramvalue-prop-fileextensions": "Renvoie la liste des extensions de fichier (types de fichier) autorisées au téléversement.",
        "apihelp-query+siteinfo-paramvalue-prop-rightsinfo": "Renvoie l’information sur les droits du wiki (sa licence), si elle est disponible.",
        "apihelp-query+siteinfo-paramvalue-prop-restrictions": "Renvoie l’information sur les types de restriction disponibles (protection).",
        "apihelp-query+siteinfo-paramvalue-prop-languages": "Renvoie une liste des langues que MédiaWiki prend en charge (éventuellement localisée en utilisant <var>$1inlanguagecode</var>).",
-       "apihelp-query+siteinfo-paramvalue-prop-languagevariants": "Renvoie une liste de codes de langue pour lesquels [[mw:Special:MyLanguage/LanguageConverter|LanguageConverter]] est activé, et les variantes supportées pour chacun.",
+       "apihelp-query+siteinfo-paramvalue-prop-languagevariants": "Renvoie une liste de codes de langue pour lesquels [[mw:Special:MyLanguage/LanguageConverter|LanguageConverter]] est activé, et les variantes prises en charge pour chacun.",
        "apihelp-query+siteinfo-paramvalue-prop-skins": "Renvoie une liste de tous les habillages activés (éventuellement localisé en utilisant <var>$1inlanguagecode</var>, sinon dans la langue du contenu).",
        "apihelp-query+siteinfo-paramvalue-prop-extensiontags": "Renvoie une liste des balises d’extension de l’analyseur.",
        "apihelp-query+siteinfo-paramvalue-prop-functionhooks": "Renvoie une liste des accroches de fonction de l’analyseur.",
        "apihelp-query+siteinfo-example-interwiki": "Extraire une liste des préfixes interwiki locaux.",
        "apihelp-query+siteinfo-example-replag": "Vérifier la latence de réplication actuelle.",
        "apihelp-query+stashimageinfo-description": "Renvoie les informations de fichier des fichiers mis en réserve.",
-       "apihelp-query+stashimageinfo-param-filekey": "Clé qui identifie un téléchargement précédent qui a été temporairement mis en réserve.",
+       "apihelp-query+stashimageinfo-param-filekey": "Clé qui identifie un téléversement précédent qui a été temporairement mis en réserve.",
        "apihelp-query+stashimageinfo-param-sessionkey": "Alias pour $1filekey, pour la compatibilité ascendante.",
        "apihelp-query+stashimageinfo-example-simple": "Renvoie les informations sur un fichier mis en réserve.",
        "apihelp-query+stashimageinfo-example-params": "Renvoie les vignettes pour deux fichiers mis de côté.",
        "apihelp-query+tags-paramvalue-prop-defined": "Indique si la balise est définie.",
        "apihelp-query+tags-paramvalue-prop-source": "Retourne les sources de la balise, ce qui comprend <samp>extension</samp> pour les balises définies par une extension et <samp>manual</samp> pour les balises pouvant être appliquées manuellement par les utilisateurs.",
        "apihelp-query+tags-paramvalue-prop-active": "Si la balise est encore appliquée.",
-       "apihelp-query+tags-example-simple": "Lister les balises disponibles",
+       "apihelp-query+tags-example-simple": "Lister les balises disponibles.",
        "apihelp-query+templates-description": "Renvoie toutes les pages incluses dans les pages fournies.",
        "apihelp-query+templates-param-namespace": "Afficher les modèles uniquement dans ces espaces de noms.",
        "apihelp-query+templates-param-limit": "Combien de modèles renvoyer.",
        "apihelp-query+templates-param-templates": "Lister uniquement ces modèles. Utile pour vérifier si une certaine page utilise un modèle donné.",
        "apihelp-query+templates-param-dir": "La direction dans laquelle lister.",
-       "apihelp-query+templates-example-simple": "Obtenir les modèles utilisés sur la page <kbd>Accueil</kbd>.",
+       "apihelp-query+templates-example-simple": "Obtenir les modèles utilisés sur la page <kbd>Main Page</kbd>.",
        "apihelp-query+templates-example-generator": "Obtenir des informations sur les pages modèle utilisé sur <kbd>Main Page</kbd>.",
-       "apihelp-query+templates-example-namespaces": "Obtenir les pages des espaces de nom {{ns:user}} et {{ns:template}} qui sont inclues dans la page <kdb>Main Page<kdb>.",
+       "apihelp-query+templates-example-namespaces": "Obtenir les pages des espaces de noms {{ns:user}} et {{ns:template}} qui sont inclues dans la page <kdb>Main Page<kdb>.",
        "apihelp-query+tokens-description": "Récupère les jetons pour les actions de modification de données.",
        "apihelp-query+tokens-param-type": "Types de jeton à demander.",
        "apihelp-query+tokens-example-simple": "Récupérer un jeton csrf (par défaut).",
        "apihelp-query+usercontribs-param-user": "Utilisateurs pour lesquels il faut récupérer les contributions.   Ne peut pas être utilisé avec <var>$1userid</var> ou <var>$1userprefix</var>.",
        "apihelp-query+usercontribs-param-userprefix": "Récupérer les contributions pour tous les utilisateurs dont les noms commencent par cette valeur. Ne peut pas être utilisé avec <var>$1user</var> ou <var>$1userids</var>.",
        "apihelp-query+usercontribs-param-userids": "Utilisateurs pour lesquels il faut récupérer les contributions.   Ne peut pas être utilisé avec <var>$1user</var> ou <var>$1userprefix</var>.",
-       "apihelp-query+usercontribs-param-namespace": "Lister uniquement les contributions dans ces espaces de nom.",
+       "apihelp-query+usercontribs-param-namespace": "Lister uniquement les contributions dans ces espaces de noms.",
        "apihelp-query+usercontribs-param-prop": "Inclure des informations supplémentaires:",
        "apihelp-query+usercontribs-paramvalue-prop-ids": "Ajoute l’ID de page et l’ID de révision.",
        "apihelp-query+usercontribs-paramvalue-prop-title": "Ajoute le titre et l’ID d’espace de noms de la page.",
        "apihelp-query+userinfo-paramvalue-prop-centralids": "Ajoute les IDs centraux et l’état d’attachement de l’utilisateur.",
        "apihelp-query+userinfo-param-attachedwiki": "Avec <kbd>$1prop=centralids</kbd>, indiquer si l’utilisateur est attaché au wiki identifié par cet ID.",
        "apihelp-query+userinfo-example-simple": "Obtenir des informations sur l’utilisateur actuel.",
-       "apihelp-query+userinfo-example-data": "Obtenir des informations supplémentaires sur l’utilisateur actuel",
+       "apihelp-query+userinfo-example-data": "Obtenir des informations supplémentaires sur l’utilisateur actuel.",
        "apihelp-query+users-description": "Obtenir des informations sur une liste d’utilisateurs",
        "apihelp-query+users-param-prop": "Quelles informations inclure :",
        "apihelp-query+users-paramvalue-prop-blockinfo": "Marque si l’utilisateur est bloqué, par qui, et pour quelle raison.",
        "apihelp-query+users-paramvalue-prop-centralids": "Ajoute les IDs centraux et l’état d’attachement de l’utilisateur.",
        "apihelp-query+users-paramvalue-prop-cancreate": "Indique si un compte peut être créé pour les noms d’utilisateurs valides mais non enregistrés.",
        "apihelp-query+users-param-attachedwiki": "Avec <kbd>$1prop=centralids</kbd>, indiquer si l’utilisateur est attaché au wiki identifié par cet ID.",
-       "apihelp-query+users-param-users": "Une liste des utilisateurs sur lesquels obtenir de l’information.",
+       "apihelp-query+users-param-users": "Une liste d'utilisateurs pour lesquels obtenir des l’informations.",
        "apihelp-query+users-param-userids": "Une liste d’ID utilisateur pour lesquels obtenir des informations.",
-       "apihelp-query+users-param-token": "Utiliser plutôt <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
+       "apihelp-query+users-param-token": "Utiliser <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> à la place.",
        "apihelp-query+users-example-simple": "Renvoyer des informations pour l'utilisateur <kbd>Example</kbd>.",
-       "apihelp-query+watchlist-description": "Obtenir les modifications récentes des pages dans la liste de suivi de l’utilisateur actuel.",
+       "apihelp-query+watchlist-description": "Obtenir les modifications récentes des pages de la liste de suivi de l’utilisateur actuel.",
        "apihelp-query+watchlist-param-allrev": "Inclure les multiples révisions de la même page dans l’intervalle de temps fourni.",
        "apihelp-query+watchlist-param-start": "L’horodatage auquel démarrer l’énumération.",
        "apihelp-query+watchlist-param-end": "L’horodatage auquel arrêter l’énumération.",
        "apihelp-query+watchlist-param-excludeuser": "Ne pas lister les modifications faites par cet utilisateur.",
        "apihelp-query+watchlist-param-limit": "Combien de résultats au total renvoyer par demande.",
        "apihelp-query+watchlist-param-prop": "Quelles propriétés supplémentaires obtenir :",
-       "apihelp-query+watchlist-paramvalue-prop-ids": "Ajoute les IDs de révision et de page",
+       "apihelp-query+watchlist-paramvalue-prop-ids": "Ajoute les IDs de révision et de page.",
        "apihelp-query+watchlist-paramvalue-prop-title": "Ajoute le titre de la page.",
        "apihelp-query+watchlist-paramvalue-prop-flags": "Ajoute les marqueurs de la modification.",
        "apihelp-query+watchlist-paramvalue-prop-user": "Ajoute l’utilisateur ayant fait la modification.",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "Ajoute l’information de trace le cas échéant.",
        "apihelp-query+watchlist-param-show": "Afficher uniquement les éléments qui correspondent à ces critères. Par exemple, pour voir uniquement les modifications mineures faites par des utilisateurs connectés, mettre $1show=minor|!anon.",
        "apihelp-query+watchlist-param-type": "Quels types de modification afficher :",
-       "apihelp-query+watchlist-paramvalue-type-edit": "Modifications normales de page",
+       "apihelp-query+watchlist-paramvalue-type-edit": "Modifications normales de page.",
        "apihelp-query+watchlist-paramvalue-type-external": "Modifications externes.",
        "apihelp-query+watchlist-paramvalue-type-new": "Créations de pages.",
        "apihelp-query+watchlist-paramvalue-type-log": "Entrées du journal.",
        "apihelp-query+watchlist-paramvalue-type-categorize": "Modifications d’appartenance aux catégories.",
        "apihelp-query+watchlist-param-owner": "Utilisé avec $1token pour accéder à la liste de suivi d’un autre utilisateur.",
-       "apihelp-query+watchlist-param-token": "Un jeton de sécurité (disponible dans les [[Special:Preferences#mw-prefsection-watchlist|préférences]] de l’utilsiateur) pour autoriser l’accès à la liste de suivi d&un autre utilisateur.",
+       "apihelp-query+watchlist-param-token": "Un jeton de sécurité (disponible dans les [[Special:Preferences#mw-prefsection-watchlist|préférences]] de l’utilsateur) pour autoriser l’accès à la liste de suivi d'un autre utilisateur.",
        "apihelp-query+watchlist-example-simple": "Lister la révision de tête des pages récemment modifiées dans la liste de suivi de l’utilisateur actuel.",
        "apihelp-query+watchlist-example-props": "Chercher des informations supplémentaires sur la révision de tête des pages récemment modifiées de la liste de suivi de l’utilisateur actuel.",
        "apihelp-query+watchlist-example-allrev": "Chercher les informations sur toutes les modifications récentes des pages de la liste de suivi de l’utilisateur actuel",
        "apihelp-query+watchlist-example-generator-rev": "Chercher l’information de la révision pour les modifications récentes des pages de la liste de suivi de l’utilisateur actuel.",
        "apihelp-query+watchlist-example-wlowner": "Lister la révision de tête des pages récemment modifiées de la liste de suivi de l'utilisateur <kbd>Exemple</kbd>.",
        "apihelp-query+watchlistraw-description": "Obtenir toutes les pages de la liste de suivi de l’utilisateur actuel.",
-       "apihelp-query+watchlistraw-param-namespace": "Lister uniquement les pages dans les espaces de nom fournis.",
+       "apihelp-query+watchlistraw-param-namespace": "Lister uniquement les pages dans les espaces de noms fournis.",
        "apihelp-query+watchlistraw-param-limit": "Combien de résultats renvoyer au total par requête.",
        "apihelp-query+watchlistraw-param-prop": "Quelles propriétés supplémentaires obtenir :",
        "apihelp-query+watchlistraw-paramvalue-prop-changed": "Ajoute l’horodatage de la dernière notification de l’utilisateur à propos de la modification.",
        "apihelp-resetpassword-param-user": "Utilisateur ayant été réinitialisé.",
        "apihelp-resetpassword-param-email": "Adresse courriel de l’utilisateur ayant été réinitialisé.",
        "apihelp-resetpassword-example-user": "Envoyer un courriel de réinitialisation du mot de passe à l’utilisateur <kbd>Exemple</kbd>.",
-       "apihelp-resetpassword-example-email": "Envoyer un courriel pour la réinitialisation de mot de passe à tous les utilisateurs avec une adresse email <kbd>user@example.com</kbd>.",
+       "apihelp-resetpassword-example-email": "Envoyer un courriel pour la réinitialisation de mot de passe à tous les utilisateurs avec l’adresse <kbd>user@example.com</kbd>.",
        "apihelp-revisiondelete-description": "Supprimer et rétablir des révisions.",
        "apihelp-revisiondelete-param-type": "Type de suppression de révision en cours de traitement.",
        "apihelp-revisiondelete-param-target": "Titre de page pour la suppression de révision, s’il est nécessaire pour le type.",
        "apihelp-revisiondelete-param-suppress": "S’il faut supprimer les données aux administrateurs comme aux autres.",
        "apihelp-revisiondelete-param-reason": "Motif de suppression ou d’annulation de suppression.",
        "apihelp-revisiondelete-param-tags": "Balises à appliquer à l’entrée dans le journal de suppression.",
-       "apihelp-revisiondelete-example-revision": "Masquer le contenu de la révision <kbd>12345</kbd> de la page <kbd>Main Page</kbd>",
+       "apihelp-revisiondelete-example-revision": "Masquer le contenu de la révision <kbd>12345</kbd> de la page <kbd>Main Page</kbd>.",
        "apihelp-revisiondelete-example-log": "Masquer toutes les données de l’entrée de journal <kbd>67890</kbd> avec le motif <kbd>Violation de Biographie de Personne Vivante</kbd>.",
        "apihelp-rollback-description": "Annuler la dernière modification de la page.\n\nSi le dernier utilisateur à avoir modifié la page a fait plusieurs modifications sur une ligne, elles seront toutes annulées.",
        "apihelp-rollback-param-title": "Titre de la page à restaurer. Impossible à utiliser avec <var>$1pageid</var>.",
        "apihelp-rollback-param-summary": "Personnaliser le résumé de la modification. S’il est vide, le résumé par défaut sera utilisé.",
        "apihelp-rollback-param-markbot": "Marquer les modifications annulées et les modifications annulées comme robot.",
        "apihelp-rollback-param-watchlist": "Ajouter ou supprimer la page de la liste de suivi de l’utilisateur actuel sans condition, utiliser les préférences ou ne pas modifier le suivi.",
-       "apihelp-rollback-example-simple": "Annuler les dernières modifications à [<kbd>Main Page</kbd> par l’utilisateur <kbd>Exemple</kbd>.",
+       "apihelp-rollback-example-simple": "Annuler les dernières modifications à <kbd>Main Page</kbd> par l’utilisateur <kbd>Example</kbd>.",
        "apihelp-rollback-example-summary": "Annuler les dernières modifications de la page <kbd>Main Page</kbd> par l’utilisateur à l’adresse IP <kbd>192.0.2.5</kbd> avec le résumé <kbd>Annulation de vandalisme<kbd>, et marquer ces modifications et l’annulation comme modifications de robots.",
        "apihelp-rsd-description": "Exporter un schéma RSD (Découverte Très Simple).",
        "apihelp-rsd-example-simple": "Exporter le schéma RSD",
        "apihelp-stashedit-param-summary": "Résumé du changement",
        "apihelp-tag-description": "Ajouter ou enlever des balises de modification aux révisions ou ou aux entrées de journal individuelles.",
        "apihelp-tag-param-rcid": "Un ou plus IDs de modification récente à partir desquels ajouter ou supprimer la balise.",
-       "apihelp-tag-param-revid": "Un ou plus IDs de révision à partir desquels ajouter ou supprimer la balise.",
-       "apihelp-tag-param-logid": "Un ou plus IDs d’entrée de journal à partir desquels ajouter ou supprimer la balise.",
+       "apihelp-tag-param-revid": "Un ou plusieurs IDs de révision à partir desquels ajouter ou supprimer la balise.",
+       "apihelp-tag-param-logid": "Un ou plusieurs IDs d’entrée de journal à partir desquels ajouter ou supprimer la balise.",
        "apihelp-tag-param-add": "Balises à ajouter. Seules les balises définies manuellement peuvent être ajoutées.",
        "apihelp-tag-param-remove": "Balises à supprimer. Seules les balises qui sont soit définies manuellement soit pas du tout définies peuvent être supprimées.",
        "apihelp-tag-param-reason": "Motif de la modification.",
        "apihelp-tag-param-tags": "Balises à appliquer à l’entrée de journal qui sera créée en résultat de cette action.",
        "apihelp-tag-example-rev": "Ajoute la balise <kbd>vandalism</kbd> à partir de l’ID de révision 123 sans indiquer de motif",
        "apihelp-tag-example-log": "Supprimer la balise <kbd>spam</kbd> à partir de l’ID d’entrée de journal 123 avec le motif <kbd>Wrongly applied</kbd>",
-       "apihelp-tokens-description": "Obtenir les jetons pour les actions modifiant les données.\n\nCe module est obsolète, remplacé par [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
+       "apihelp-tokens-description": "Obtenir les jetons pour les actions modifiant les données.\n\nCe module est désuet, remplacé par [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
        "apihelp-tokens-param-type": "Types de jeton à demander.",
        "apihelp-tokens-example-edit": "Récupérer un jeton de modification (par défaut).",
        "apihelp-tokens-example-emailmove": "Récupérer un jeton de courriel et un jeton de déplacement.",
        "apihelp-unlinkaccount-example-simple": "Essayer de supprimer le lien de l’utilisateur actuel pour le fournisseur associé avec <kbd>FooAuthenticationRequest</kbd>.",
        "apihelp-upload-description": "Téléverser un fichier, ou obtenir l’état des téléversements en cours.\n\nPlusieurs méthodes sont disponibles :\n* Téléverser directement le contenu du fichier, en utilisant le paramètre <var>$1file</var>.\n* Téléverser le fichier par morceaux, en utilisant les paramètres <var>$1filesize</var>, <var>$1chunk</var>, and <var>$1offset</var>.\n* Pour que le serveur MédiaWiki cherche un fichier depuis une URL, utilisez le paramètre <var>$1url</var>.\n* Terminer un téléversement précédent qui a échoué à cause d’avertissements, en utilisant le paramètre <var>$1filekey</var>.\nNoter que le POST HTTP doit être fait comme un téléversement de fichier (par ex. en utilisant <code>multipart/form-data</code>) en envoyant le <code>multipart/form-data</code>.",
        "apihelp-upload-param-filename": "Nom de fichier cible.",
-       "apihelp-upload-param-comment": "Télécharger le commentaire. Utilisé aussi comme texte de la page initiale pour les nouveaux fichiers si <var>$1text</var> n’est pas spécifié.",
-       "apihelp-upload-param-tags": "Modifier les balises à appliquer à l’entrée du journal de téléchargement et à la révision de la page du fichier.",
+       "apihelp-upload-param-comment": "Téléverser le commentaire. Utilisé aussi comme texte de la page initiale pour les nouveaux fichiers si <var>$1text</var> n’est pas spécifié.",
+       "apihelp-upload-param-tags": "Modifier les balises à appliquer à l’entrée du journal de téléversement et à la révision de la page du fichier.",
        "apihelp-upload-param-text": "Texte de page initiale pour les nouveaux fichiers.",
        "apihelp-upload-param-watch": "Suivre la page.",
        "apihelp-upload-param-watchlist": "Ajouter ou supprimer sans condition la page de la liste de suivi de l’utilisateur actuel, utiliser les préférences ou ne pas changer le suivi.",
        "apihelp-upload-param-ignorewarnings": "Ignorer tous les avertissements.",
        "apihelp-upload-param-file": "Contenu du fichier.",
        "apihelp-upload-param-url": "URL où chercher le fichier.",
-       "apihelp-upload-param-filekey": "Clé identifiant un téléchargement précédent temporairement mis en attente.",
+       "apihelp-upload-param-filekey": "Clé identifiant un téléversement précédent temporairement mis en attente.",
        "apihelp-upload-param-sessionkey": "Comme $1filekey, conservé pour des raisons de compatibilité descendante.",
        "apihelp-upload-param-stash": "Si positionné, le serveur conservera temporairement le fichier au lieu de l’ajouter au dépôt.",
-       "apihelp-upload-param-filesize": "Taille du fichier de tout le téléchargement.",
+       "apihelp-upload-param-filesize": "Taille du téléversement entier.",
        "apihelp-upload-param-offset": "Décalage du bloc en octets.",
        "apihelp-upload-param-chunk": "Partie du contenu.",
-       "apihelp-upload-param-async": "Faire de façon asynchrone les grosses opérations sur les fichiers quand c’est possible.",
-       "apihelp-upload-param-checkstatus": "Récupérer uniquement l’état de téléchargement pour la clé de fichier donnée.",
-       "apihelp-upload-example-url": "Télécharger depuis une URL",
-       "apihelp-upload-example-filekey": "Terminer un téléchargement qui a échoué à cause d’avertissements",
+       "apihelp-upload-param-async": "Faire les grosses opérations de fichiers de façon asynchrone quand c’est possible.",
+       "apihelp-upload-param-checkstatus": "Récupérer uniquement l’état de téléversement pour la clé de fichier donnée.",
+       "apihelp-upload-example-url": "Téléverser depuis une URL",
+       "apihelp-upload-example-filekey": "Terminer un téléversement qui a échoué à cause d’avertissements",
        "apihelp-userrights-description": "Modifier l’appartenance d’un utilisateur à un groupe.",
        "apihelp-userrights-param-user": "Nom d’utilisateur.",
        "apihelp-userrights-param-userid": "ID de l’utilisateur.",
        "apihelp-userrights-param-remove": "Supprimer l’utilisateur de ces groupes.",
        "apihelp-userrights-param-reason": "Motif pour la modification.",
        "apihelp-userrights-param-tags": "Modifier les balises à appliquer à l’entrée dans le journal des droits utilisateur.",
-       "apihelp-userrights-example-user": "Ajouter l’utilisateur <kbd>FooBot</kbd> au groupe <kbd>bot</kbd>, et le supprimer des groupes <kbd>sysop</kbd> et <kbd>bureaucrat</kbd>.",
+       "apihelp-userrights-example-user": "Ajouter l’utilisateur <kbd>FooBot</kbd> au groupe <kbd>bot</kbd><!-- {{int:group-bot}} ? -->, et le supprimer des groupes <kbd>sysop</kbd> et <kbd>bureaucrat</kbd>.",
        "apihelp-userrights-example-userid": "Ajouter l’utilisateur d’ID <kbd>123</kbd> au groupe <kbd>robot</kbd>, et le supprimer des groupes <kbd>sysop</kbd> et <kbd>bureaucrate</kbd>.",
        "apihelp-userrights-example-expiry": "Ajouter l'utilisateur <kbd>SometimeSysop</kbd> au groupe <kbd>sysop</kbd> pour 1 mois.",
        "apihelp-validatepassword-description": "Valider un mot de passe en suivant les règles des mots de passe du wiki.\n\nLa validation est <samp>Good</samp> si le mot de passe est acceptable, <samp>Change</samp> s'il peut être utilisé pour se connecter et doit être changé, ou  <samp>Invalid</samp> s'il n'est pas utilisable.",
        "api-format-prettyprint-header": "Voici la représentation HTML du format $1. HTML est utile pour le débogage, mais inapproprié pour être utilisé dans une application.\n\nSpécifiez le paramètre <var>format</var> pour modifier le format de sortie. Pour voir la représentation non HTML du format $1, mettez <kbd>format=$2</kbd>.\n\nVoyez la [[mw:Special:MyLanguage/API|documentation complète]], ou l’[[Special:ApiHelp/main|aide de l’API]] pour plus d’information.",
        "api-format-prettyprint-header-only-html": "Ceci est une représentation HTML à des fins de débogage, et n’est pas approprié pour une utilisation applicative.\n\nVoir la [[mw:Special:MyLanguage/API|documentation complète]], ou l’[[Special:ApiHelp/main|aide de l’API]] pour plus d’information.",
        "api-format-prettyprint-status": "Cette réponse serait retournée avec l'état HTTP $1 $2.",
+       "api-login-fail-aborted": "L’authentification nécessite une interaction avec l’utilisateur, qui n’est pas prise en charge par <kbd>action=login</kbd>. Pour pouvoir se connecter avec <kbd>action=login</kbd>, voyez [[Special:BotPasswords]]. Pour continuer à utiliser la connexion du compte principal, voyez <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
+       "api-login-fail-aborted-nobotpw": "L’authentification nécessite une interaction avec l’utilisateur, qui n’est pas prise en charge par <kbd>action=login</kbd>. Pour se connecter, voyez <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
+       "api-login-fail-badsessionprovider": "Impossible de se connecter en utilisant $1.",
+       "api-login-fail-sameorigin": "Impossible de se connecter quand la politique de même origine n’est pas appliquée.",
        "api-pageset-param-titles": "Une liste des titres sur lesquels travailler.",
        "api-pageset-param-pageids": "Une liste des IDs de page sur lesquelles travailler.",
        "api-pageset-param-revids": "Une liste des IDs de révision sur lesquelles travailler.",
        "api-help-title": "Aide de l’API de MediaWiki",
        "api-help-lead": "Ceci est une page d’aide de l’API de MediaWiki générée automatiquement.\n\nDocumentation et exemples : https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "Module principal",
-       "api-help-flag-deprecated": "Ce module est obsolète.",
+       "api-help-flag-deprecated": "Ce module est désuet.",
        "api-help-flag-internal": "<strong>Ce module est interne ou instable.</strong> Son fonctionnement peut être modifié sans préavis.",
        "api-help-flag-readrights": "Ce module nécessite des droits de lecture.",
        "api-help-flag-writerights": "Ce module nécessite des droits d’écriture.",
        "api-help-license-noname": "Licence : [[$1|Voir le lien]]",
        "api-help-license-unknown": "Licence : <span class=\"apihelp-unknown\">inconnue</span>",
        "api-help-parameters": "{{PLURAL:$1|Paramètre|Paramètres}} :",
-       "api-help-param-deprecated": "Obsolète.",
+       "api-help-param-deprecated": "Désuet.",
        "api-help-param-required": "Ce paramètre est obligatoire.",
        "api-help-datatypes-header": "Type de données",
        "api-help-datatypes": "Les entrées dans MédiaWiki doivent être en UTF-8 à la norme NFC. MédiaWiki peut tenter de convertir d’autres types d’entrée, mais cela peut faire échouer certaines opérations (comme les [[Special:ApiHelp/edit|modifications]] avec contrôles MD5) to fail.\n\nCertains types de paramètre dans les requêtes de l’API nécessitent plus d’explication :\n;boolean\n:Les paramètres booléens fonctionnent comme des cases à cocher HTML : si le paramètre est spécifié, quelle que soit sa valeur, il est considéré comme vrai. Pour une valeur fausse, enlever complètement le paramètre.\n;timestamp\n:Les horodatages peuvent être spécifiés sous différentes formes. Date et heure ISO 8601 est recommandé. Toutes les heures sont en UTC, tout fuseau horaire inclus est ignoré.\n:* Date et heure ISO 8601, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>Z</kbd> (la ponctuation et <kbd>Z</kbd> sont facultatifs)\n:* Date et heure ISO 8601 avec fractions de seconde (ignorées), <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>.<var>00001</var>Z</kbd> (tirets, deux-points et <kbd>Z</kbd> sont facultatifs)\n:* Format MédiaWiki, <kbd><var>2001</var><var>01</var><var>15</var><var>14</var><var>56</var><var>00</var></kbd>\n:* Format numérique générique, <kbd><var>2001</var>-<var>01</var>-<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd> (fuseau horaire facultatif en <kbd>GMT</kbd>, <kbd>+<var>##</var></kbd>, ou <kbd>-<var>##</var></kbd> sont ignorés)\n:* Format EXIF, <kbd><var>2001</var>:<var>01</var>:<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:*Format RFC 2822 (le fuseau horaire est facultatif), <kbd><var>Mon</var>, <var>15</var> <var>Jan</var> <var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Format RFC 850 (le fuseau horaire est facultatif), <kbd><var>Monday</var>, <var>15</var>-<var>Jan</var>-<var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Format ctime C, <kbd><var>Mon</var> <var>Jan</var> <var>15</var> <var>14</var>:<var>56</var>:<var>00</var> <var>2001</var></kbd>\n:* Secondes depuis 1970-01-01T00:00:00Z sous forme d’entier de 1 à 13 chiffres (sans <kbd>0</kbd>)\n:* La chaîne <kbd>now</kbd>",
        "apierror-badcontinue": "Paramètre de continuation non valide. Vous devez passer la valeur d’origine renvoyée par la requête précédente.",
        "apierror-baddiff": "La différence ne peut être récupérée. Une ou les deux révisions n’existent pas ou vous n’avez pas le droit de les voir.",
        "apierror-baddiffto": "<var>$1diffto</var> doit être fixé à un nombre positif ou nul, <kbd>prev</kbd>, <kbd>next</kbd> ou <kbd>cur</kbd>.",
-       "apierror-badformat-generic": "Le format demandé $1 n’est pas supporté pour le modèle de contenu $2.",
-       "apierror-badformat": "Le format demandé $1 n’est pas supporté pour le modèle de contenu $2 utilisé par $3.",
+       "apierror-badformat-generic": "Le format demandé $1 n’est pas pris en charge pour le modèle de contenu $2.",
+       "apierror-badformat": "Le format demandé $1 n’est pas pris en charge pour le modèle de contenu $2 utilisé par $3.",
        "apierror-badgenerator-notgenerator": "Le module <kbd>$1</kbd> ne peut pas être utilisé comme générateur.",
        "apierror-badgenerator-unknown": "<kbd>generator=$1</kbd> inconnu.",
        "apierror-badip": "Paramètre IP non valide.",
        "apierror-badquery": "Requête invalide.",
        "apierror-badtimestamp": "Valeur non valide « $2 » pour le paramètre de référence horaire  <var>$1</var>.",
        "apierror-badtoken": "Jeton CSRF non valide.",
-       "apierror-badupload": "Le paramètre de téléchargement de fichier <var>$1</var> n’est pas un téléchargement de fichier ; assurez-vous d’utiliser <code>multipart/form-data</code> pour votre POST et d’inclure un nom de fichier dans l’entête <code>Content-Disposition</code>.",
+       "apierror-badupload": "Le paramètre de téléversement de fichier <var>$1</var> n’est pas un téléversement de fichier ; assurez-vous d’utiliser <code>multipart/form-data</code> pour votre POST et d’inclure un nom de fichier dans l’entête <code>Content-Disposition</code>.",
        "apierror-badurl": "Valeur « $2 » non valide pour le paramètre d’URL <var>$1</var>.",
        "apierror-baduser": "Valeur « $2 » non valide pour le paramètre utilisateur <var>$1</var>.",
        "apierror-badvalue-notmultivalue": "La séparation multi-valeur U+001F ne peut être utilisée que pour des paramètres multi-valeurs.",
        "apierror-bad-watchlist-token": "Jeton de liste de suivi fourni non valide. Veuillez mettre un jeton valide dans [[Special:Preferences]].",
        "apierror-blockedfrommail": "Vous avez été bloqué pour l’envoi de courriel.",
        "apierror-blocked": "Vous avez été bloqué pour modifier.",
-       "apierror-botsnotsupported": "Cette interface n’est pas supportée pour les robots.",
-       "apierror-cannot-async-upload-file": "Les paramètres <var>async</var> et <var>file</var> ne peuvent pas être combinés. Si vous voulez un traitement asynchrone de votre fichier téléchargé, importez-le d’abord dans la réserve (en utilisant le paramètre <var>stash</var>) puis publiez le fichier importé de façon asynchrone (en utilisant <var>filekey</var> et <var>async</var>).",
+       "apierror-botsnotsupported": "Cette interface n’est pas prise en charge pour les robots.",
+       "apierror-cannot-async-upload-file": "Les paramètres <var>async</var> et <var>file</var> ne peuvent pas être combinés. Si vous voulez un traitement asynchrone de votre fichier téléversé, importez-le d’abord dans la réserve (en utilisant le paramètre <var>stash</var>) puis publiez le fichier importé de façon asynchrone (en utilisant <var>filekey</var> et <var>async</var>).",
        "apierror-cannotreauthenticate": "Cette action n’est pas disponible car votre identité ne peut pas être vérifiée.",
        "apierror-cannotviewtitle": "Vous n’êtes pas autorisé à voir $1.",
        "apierror-cantblock-email": "Vous n’avez pas le droit de bloquer des utilisateurs pour envoyer des courriels via ce wiki.",
        "apierror-cantblock": "Vous n’avez pas le droit de bloquer des utilisateurs.",
        "apierror-cantchangecontentmodel": "Vous n’avez pas le droit de modifier le modèle de contenu d’une page.",
-       "apierror-canthide": "Vous n’avez pas le droit de masquer les noms d’utilisateur du journal de blog.",
-       "apierror-cantimport-upload": "Vous n’avez pas le droit d’importer des pages téléchargées.",
+       "apierror-canthide": "Vous n’avez pas le droit de masquer les noms d’utilisateur du journal de blocages.",
+       "apierror-cantimport-upload": "Vous n’avez pas le droit d’importer des pages téléversées.",
        "apierror-cantimport": "Vous n’avez pas le droit d’importer des pages.",
        "apierror-cantoverwrite-sharedfile": "Le fichier cible existe dans un dépôt partagé et vous n’avez pas le droit de l’écraser.",
        "apierror-cantsend": "Vous n’êtes pas connecté, vous n’avez pas d’adresse de courriel confirmée, ou vous n’êtes pas autorisé à envoyer des courriels aux autres utilisateurs, donc vous ne pouvez envoyer de courriel.",
        "apierror-changeauth-norequest": "Échec à la création de la requête de modification.",
        "apierror-chunk-too-small": "La taille minimale d’un segment est de $1 {{PLURAL:$1|octet|octets}} pour les segments hors le dernier.",
        "apierror-cidrtoobroad": "Les plages CIDR $1 plus large que /$2 ne sont pas acceptées.",
-       "apierror-compare-inputneeded": "Un titre, un ID de page ou un numéro de révision est nécessaire pour les paramètres <var>from</var> et <var>to</var>.",
+       "apierror-compare-no-title": "Impossible de faire une transformation avant enregistrement sans titre. Essayez de spécifier <var>fromtitle</var> ou <var>totitle</var>.",
+       "apierror-compare-relative-to-nothing": "Pas de révision 'depuis' pour <var>torelative</var> à laquelle se rapporter.",
        "apierror-contentserializationexception": "Échec de sérialisation du contenu : $1",
        "apierror-contenttoobig": "Le contenu que vous avez fourni dépasse la limite de taille d’un article, qui est de $1 {{PLURAL:$1|kilooctet|kilooctets}}.",
-       "apierror-copyuploadbaddomain": "Les téléchargements par URL ne sont pas autorisés pour ce domaine.",
-       "apierror-copyuploadbadurl": "Les téléchargements ne sont pas autorisés depuis cette URL.",
+       "apierror-copyuploadbaddomain": "Les téléversements par URL ne sont pas autorisés pour ce domaine.",
+       "apierror-copyuploadbadurl": "Les téléversements ne sont pas autorisés depuis cette URL.",
        "apierror-create-titleexists": "Les titres existants ne peuvent pas être protégés avec <kbd>create</kbd>.",
        "apierror-csp-report": "Erreur lors du traitement du rapport CSP: $1.",
        "apierror-databaseerror": "[$1] erreur de requête de base de données.",
        "apierror-maxlag": "Attente de $2 : $1 {{PLURAL:$1|seconed|secondes}} de délai.",
        "apierror-mimesearchdisabled": "La recherche MIME est désactivée en mode Misère.",
        "apierror-missingcontent-pageid": "Contenu manquant pour la page d’ID $1.",
+       "apierror-missingcontent-revid": "Contenu de la révision d’ID $1 manquant.",
        "apierror-missingparam-at-least-one-of": "{{PLURAL:$2|Le paramètre|Au moins un des paramètres}} $1 est obligatoire.",
        "apierror-missingparam-one-of": "{{PLURAL:$2|Le paramètre|Un des paramètres}} $1 est obligatoire.",
        "apierror-missingparam": "Le paramètre <var>$1</var> doit être défini.",
        "apierror-missingrev-pageid": "Aucune révision actuelle de la page d’ID $1.",
+       "apierror-missingrev-title": "Aucune révision actuelle de titre $1.",
        "apierror-missingtitle-createonly": "Les titres manquants ne peuvent être protégés qu’avec <kbd>create</kbd>.",
        "apierror-missingtitle": "La page que vous avez spécifié n’existe pas.",
        "apierror-missingtitle-byname": "La page $1 n’existe pas.",
        "apierror-mustbeloggedin-generic": "Vous devez être connecté.",
        "apierror-mustbeloggedin-linkaccounts": "Vous devez être connecté pour lier des comptes.",
        "apierror-mustbeloggedin-removeauth": "Vous devez être connecté pour supprimer les données d’authentification.",
-       "apierror-mustbeloggedin-uploadstash": "La réserve de téléchargement n’est disponible que pour les utilisateurs connectés.",
+       "apierror-mustbeloggedin-uploadstash": "La réserve de téléversement n’est disponible que pour les utilisateurs connectés.",
        "apierror-mustbeloggedin": "Vous devez être connecté pour $1.",
        "apierror-mustbeposted": "Le module <kbd>$1</kbd> nécessite une requête POST.",
        "apierror-mustpostparams": "{{PLURAL:$2|Le paramètre suivant a été trouvé|Les paramètres suivants ont été trouvés}} dans la chaîne de requête, mais doit être dans le corps du POST : $1.",
        "apierror-noapiwrite": "La modification de ce wiki via l’API est désactivée. Assurez-vous que la déclaration <code>$wgEnableWriteAPI=true;</code> st inclue dans le fichier <code>LocalSettings.php</code> du wiki.",
        "apierror-nochanges": "Aucun changement n’a été demandé.",
        "apierror-nodeleteablefile": "Pas de telle ancienne version du fichier.",
-       "apierror-no-direct-editing": "La modification directe via l’API n’est pas supportée pour le modèle de contenu $1 utilisée par $2.",
+       "apierror-no-direct-editing": "La modification directe via l’API n’est pas prise en charge pour le modèle de contenu $1 utilisé par $2.",
        "apierror-noedit-anon": "Les utilisateurs anonymes ne peuvent pas modifier les pages.",
        "apierror-noedit": "Vous n’avez pas le droit de modifier les pages.",
        "apierror-noimageredirect-anon": "Les utilisateurs anonymes ne peut pas créer des redirections d’image.",
        "apierror-nosuchuserid": "Il n'y a pas d'utilisateur ayant l'ID $1.",
        "apierror-notarget": "Vous n’avez pas spécifié une cible valide pour cette action.",
        "apierror-notpatrollable": "La révision r$1 ne peut pas être patrouillée car elle est trop ancienne.",
-       "apierror-nouploadmodule": "Aucun module de téléchargement défini.",
+       "apierror-nouploadmodule": "Aucun module de téléversement défini.",
        "apierror-opensearch-json-warnings": "Les avertissements ne peuvent pas être représentés dans le format JSON OpenSearch.",
        "apierror-pagecannotexist": "L’espace de noms ne permet pas de pages réelles.",
        "apierror-pagedeleted": "La page a été supprimée depuis que vous avez récupéré son horodatage.",
        "apierror-pagelang-disabled": "Il n'est pas possible de modifier la langue d'une page sur ce wiki.",
        "apierror-paramempty": "Le paramètre <var>$1</var> ne peut pas être vide.",
-       "apierror-parsetree-notwikitext": "<kbd>prop=parsetree</kbd> n’est supporté que pour le contenu wikitexte.",
-       "apierror-parsetree-notwikitext-title": "<kbd>prop=parsetree</kbd> n’est supporté que pour le contenu wikitexte. $1 utilise le modèle de contenu $2.",
+       "apierror-parsetree-notwikitext": "<kbd>prop=parsetree</kbd> n’est pris en charge que pour le contenu wikitexte.",
+       "apierror-parsetree-notwikitext-title": "<kbd>prop=parsetree</kbd> n’est pris en charge que pour le contenu wikitexte. $1 utilise le modèle de contenu $2.",
        "apierror-pastexpiry": "Le temps d’expiration « $1 » est dans le passé.",
        "apierror-permissiondenied": "Vous n’avez pas le droit de $1.",
        "apierror-permissiondenied-generic": "Autorisation refusée.",
        "apierror-revdel-mutuallyexclusive": "Le même champ ne peut pas être utilisé à la fois en <var>hide</var> et <var>show</var>.",
        "apierror-revdel-needtarget": "Un titre cible est nécessaire pour ce type RevDel.",
        "apierror-revdel-paramneeded": "Au moins une valeur est nécessaire pour <var>hide</var> ou <var>show</var>.",
+       "apierror-revisions-badid": "Pas de correction trouvée pour le paramètre <var>$1</var>.",
        "apierror-revisions-norevids": "Le paramètre <var>revids</var> ne peut pas être utilisé avec les options de liste (<var>$1limit</var>, <var>$1startid</var>, <var>$1endid</var>, <kbd>$1dir=newer</kbd>, <var>$1user</var>, <var>$1excludeuser</var>, <var>$1start</var>, et <var>$1end</var>).",
        "apierror-revisions-singlepage": "<var>titles</var>, <var>pageids</var> ou un générateur a été utilisé pour fournir plusieurs pages, mais les paramètres <var>$1limit</var>, <var>$1startid</var>, <var>$1endid</var>, <kbd>$1dir=newer</kbd>, <var>$1user</var>, <var>$1excludeuser</var>, <var>$1start</var> et <var>$1end</var> ne peuvent être utilisés que sur une seule page.",
        "apierror-revwrongpage": "r$1 n'est pas une révision de $2.",
        "apierror-show": "Paramètre incorrect - des valeurs mutuellement exclusives ne peuvent pas être fournies.",
        "apierror-siteinfo-includealldenied": "Impossible d’afficher toutes les informatiosn du serveur, sauf si <var>$wgShowHostNames</var> vaut vrai.",
        "apierror-sizediffdisabled": "La différence de taille est désactivée dans le mode Miser.",
-       "apierror-spamdetected": "Votre modification a été refusée parce qu'elle contenait un fragment de spam: <code>$1</code>.",
+       "apierror-spamdetected": "Votre modification a été refusée parce qu’elle contenait un fragment de pourriel : <code>$1</code>.",
        "apierror-specialpage-cantexecute": "Vous n'avez pas l'autorisation d'afficher les résultats de cette page spéciale.",
        "apierror-stashedfilenotfound": "Impossible de trouver le fichier dans la réserve: $1.",
        "apierror-stashedit-missingtext": "Pas de texte en réserve associé à la donnée de hachage.",
-       "apierror-stashfailed-complete": "Un téléchargement par morceaux est déjà achevé, vérifiez l’état pour plus de détails.",
-       "apierror-stashfailed-nosession": "Aucune session de téléchargement par morceaux avec cette clé.",
-       "apierror-stashfilestorage": "Impossible de mettre le téléchargement en réserve: $1",
+       "apierror-stashfailed-complete": "Un téléversement par morceaux est déjà achevé, vérifiez l’état pour plus de détails.",
+       "apierror-stashfailed-nosession": "Aucune session de téléversement par morceaux avec cette clé.",
+       "apierror-stashfilestorage": "Impossible de mettre le téléversement en réserve: $1",
        "apierror-stashinvalidfile": "Fichier de réserve invalide.",
        "apierror-stashnosuchfilekey": "Filekey inconnue: $1.",
        "apierror-stashpathinvalid": "La clé du fichier n'a pas le bon format ou est invalide: $1 .",
        "apiwarn-badurlparam": "Impossible d'analyser <var>$1urlparam</var> pour $2. En utilisant seulement la largeur et la hauteur.",
        "apiwarn-badutf8": "La valeur passée pour <var>$1</var> contient des données non valides ou non normalisées. Les données textuelles doivent être de l’Unicode valide normalisé en NFC sans caractères de contrôle c0 autres que HT (\\t), LF (\\n) et CR (\\r).",
        "apiwarn-checktoken-percentencoding": "Vérifier que les symboles tels que \"+\" dans le jeton sont correctement  codés avec des pourcents dans l'URL.",
-       "apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd> est devenu obsolète. Veuillez utiliser <kbd>prop=deletedrevisions</kbd> ou <kbd>list=alldeletedrevisions</kbd> à la place.",
-       "apiwarn-deprecation-expandtemplates-prop": "Comme aucune valeur n’a été spécifiée pour le paramètre <var>prop</var>, un format d’héritage a été utilisé pour la sortie. Ce format est obsolète et, dans le futur, une valeur par défaut sera fixée pour le paramètre <var>prop</var>, provoquant ainsi l’utilisation systématique du nouveau format.",
+       "apiwarn-compare-nocontentmodel": "Aucun modèle de contenu n’a pu être déterminé, $1 est supposé.",
+       "apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd> est devenu désuet. Veuillez utiliser <kbd>prop=deletedrevisions</kbd> ou <kbd>list=alldeletedrevisions</kbd> à la place.",
+       "apiwarn-deprecation-expandtemplates-prop": "Comme aucune valeur n’a été spécifiée pour le paramètre <var>prop</var>, un format patrimonial a été utilisé pour la sortie. Ce format est désuet et, dans le futur, une valeur par défaut sera fixée pour le paramètre <var>prop</var>, provoquant ainsi l’utilisation systématique du nouveau format.",
        "apiwarn-deprecation-httpsexpected": "HTTP est utilisé alors que HTTPS est attendu.",
-       "apiwarn-deprecation-login-botpw": "La connexion au compte principal via <kbd>action=login</kbd> est obsolète et peut ne plus fonctionner sans avertissement. Pour continuer à vous connecter avec <kbd>action=login</kbd>, voyez [[Special:BotPasswords]]. Pour continuer à utiliser la connexion au compte principal en toute sécurité, voyez <kbd>action=clientlogin</kbd>.",
-       "apiwarn-deprecation-login-nobotpw": "La connexion au compte principal via <kbd>action=login</kbd> est obsolète et peut ne plus fonctionner sans avertissement. Pour vous connecter en toute sécurité, voyez <kbd>action=clientlogin</kbd>.",
-       "apiwarn-deprecation-login-token": "La récupération d’un jeton via <kbd>action=login</kbd> est obsolète. Utilisez <kbd>action=query&meta=tokens&type=login</kbd> à la place.",
-       "apiwarn-deprecation-parameter": "Le paramètre <var>$1</var> est obsolète.",
-       "apiwarn-deprecation-parse-headitems": "<kbd>prop=headitems</kbd> est obsolète depuis MédiaWiki 1.28. Utilisez <kbd>prop=headhtml</kbd> lors de la création de nouveaux documents HTML, ou <kbd>prop=modules|jsconfigvars</kbd> lors de la mise à jour d’un document côté client.",
-       "apiwarn-deprecation-purge-get": "L'utilisation de <kbd>action=purge</kbd> via un GET est obsolète. Utiliser POST à la place.",
-       "apiwarn-deprecation-withreplacement": "<kbd>$1</kbd> est obsolète. Veuillez utiliser <kbd>$2</kbd> à la place.",
+       "apiwarn-deprecation-login-botpw": "La connexion au compte principal via <kbd>action=login</kbd> est désuète et peut cesser de fonctionner sans avertissement. Pour continuer à vous connecter avec <kbd>action=login</kbd>, voyez [[Special:BotPasswords]]. Pour continuer à utiliser la connexion au compte principal en toute sécurité, voyez <kbd>action=clientlogin</kbd>.",
+       "apiwarn-deprecation-login-nobotpw": "La connexion au compte principal via <kbd>action=login</kbd> est désuète et peut cesser de fonctionner sans avertissement. Pour vous connecter en toute sécurité, voyez <kbd>action=clientlogin</kbd>.",
+       "apiwarn-deprecation-login-token": "La récupération d’un jeton via <kbd>action=login</kbd> est désuète. Utilisez <kbd>action=query&meta=tokens&type=login</kbd> à la place.",
+       "apiwarn-deprecation-parameter": "Le paramètre <var>$1</var> est désuet.",
+       "apiwarn-deprecation-parse-headitems": "<kbd>prop=headitems</kbd> est désuet depuis MédiaWiki 1.28. Utilisez <kbd>prop=headhtml</kbd> lors de la création de nouveaux documents HTML, ou <kbd>prop=modules|jsconfigvars</kbd> lors de la mise à jour d’un document côté client.",
+       "apiwarn-deprecation-purge-get": "L’utilisation de <kbd>action=purge</kbd> via un GET est désuète. Utiliser POST à la place.",
+       "apiwarn-deprecation-withreplacement": "<kbd>$1</kbd> est désuet. Veuillez utiliser <kbd>$2</kbd> à la place.",
        "apiwarn-difftohidden": "Impossible de faire un diff avec r$1 : le contenu est masqué.",
        "apiwarn-errorprinterfailed": "Erreur échec imprimante. Nouvel essai sans paramètres.",
        "apiwarn-errorprinterfailed-ex": "Erreur d’échec de l’impression (réessayera sans paramètres) : $1",
        "apiwarn-tokens-origin": "Les jetons ne peuvent pas être obtenus quand la politique de même origine n’est pas appliquée.",
        "apiwarn-toomanyvalues": "Trop de valeurs fournies pour le paramètre <var>$1</var>. La  limite est $2.",
        "apiwarn-truncatedresult": "Ce résultat a été tronqué parce que sinon, il dépasserait la limite de $1 octets.",
-       "apiwarn-unclearnowtimestamp": "Passer « $2 » comme paramètre d’horodatage <var>$1</var> a été rendu obsolète. Si, pour une raison quelconque, vous avez besoin de spécifier explicitement l’heure courante sans la recalculer du côté client, utilisez <kbd>now</kbd>.",
+       "apiwarn-unclearnowtimestamp": "Passer « $2 » comme paramètre d’horodatage <var>$1</var> a été rendu désuet. Si, pour une raison quelconque, vous avez besoin de spécifier explicitement l’heure courante sans la recalculer du côté client, utilisez <kbd>now</kbd>.",
        "apiwarn-unrecognizedvalues": "{{PLURAL:$3|Valeur non reconnue|Valeurs non reconnues}} pour le paramètre <var>$1</var> : $2.",
        "apiwarn-unsupportedarray": "Le paramètre <var>$1</var> utilise une syntaxe PHP de tableau non prise en charge.",
        "apiwarn-urlparamwidth": "Valeur de la largeur définie dans <var>$1urlparam</var> ($2) ignorée en faveur de la largeur calculée à partir de <var>$1urlwidth</var>/<var>$1urlheight</var> ($3).",
index bfaef7a..e2f8f51 100644 (file)
@@ -8,13 +8,12 @@
                        "Banjo",
                        "Fisterraeomar",
                        "Toliño",
-                       "Umherirrender",
                        "Amire80",
                        "Macofe",
-                       "Hamilton Abreu"
+                       "Hamilton Abreu",
+                       "Umherirrender"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Documentación]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista de discusión]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Anuncios da API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Erros e solicitudes]\n</div>\n<strong>Estado:</strong> Tódalas funcionalidades mostradas nesta páxina deberían estar funcionanado, pero a API aínda está desenrolo, e pode ser modificada en calquera momento. Apúntese na [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ lista de discusión mediawiki-api-announce] para estar informado acerca das actualizacións.\n\n<strong>Solicitudes incorrectas:</strong> Cando se envían solicitudes incorrectas á API, envíase unha cabeceira HTTP coa chave \"MediaWiki-API-Error\" e, a seguir, tanto o valor da cabeceira como o código de erro retornado serán definidos co mesmo valor. Para máis información, consulte [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Erros e avisos]].\n\n<strong>Test:</strong> Para facilitar as probas das peticións da API, consulte [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Que acción se realizará.",
        "apihelp-main-param-format": "O formato de saída.",
        "apihelp-main-param-maxlag": "O retardo máximo pode usarse cando MediaWiki está instalada nun cluster de base de datos replicadas. Para gardar accións que causen calquera retardo máis de replicación do sitio, este parámetro pode facer que o cliente espere ata que o retardo de replicación sexa menor que o valor especificado. No caso de retardo excesivo, é devolto o código de erro <samp>maxlag</samp> cunha mensaxe como <samp>esperando por $host: $lag segundos de retardo</samp>.<br />Para máis información, ver [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manual: Maxlag parameter]].",
@@ -31,7 +30,6 @@
        "apihelp-main-param-errorformat": "Formato a usar para a saída do texto de aviso e de erroː\n; plaintext:  texto wiki sen as etiquetas HTML e coas entidades substituídas.\n; wikitext: texto wiki sen analizar.\n; html: HTML.\n; raw: Clave de mensaxe e parámetros.\n; none: Sen saída de texto, só os códigos de erro.\n; bc: Formato utilizado antes de MediaWiki 1.29. <var>errorlang</var> e <var>errorsuselocal</var> non se teñen en conta.",
        "apihelp-main-param-errorlang": "Lingua usada para advertencias e erros. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> con <kbd>siprop=languages</kbd> devolve unha lista de códigos de lingua. Pode especificar <kbd>content</kbd> para utilizar a lingua do contido deste wiki ou <kbd>uselang</kbd> para utilizar o mesmo valor que o do parámetro <var>uselang</var>.",
        "apihelp-main-param-errorsuselocal": "Se se indica, os textos de erro empregarán mensaxes adaptadas á lingua do espazo de nomes {{ns:MediaWiki}}.",
-       "apihelp-block-description": "Bloquear un usuario.",
        "apihelp-block-param-user": "Nome de usuario, dirección ou rango de IPs que quere bloquear. Non pode usarse xunto con <var>$1userid</var>",
        "apihelp-block-param-userid": "Identificador de usuario a bloquear. Non pode usarse xunto con <var>$1user</var>.",
        "apihelp-block-param-expiry": "Tempo de caducidade. Pode ser relativo (p. ex.<kbd>5 meses</kbd> ou <kbd>2 semanas</kbd>) ou absoluto (p. ex. 2014-09-18T12:34:56Z</kbd>). Se se pon kbd>infinite</kbd>, <kbd>indefinite</kbd>, ou <kbd>never</kbd>, o bloqueo nunca caducará.",
        "apihelp-block-param-tags": "Cambiar as etiquetas a aplicar á entrada no rexistro de bloqueos.",
        "apihelp-block-example-ip-simple": "Bloquear dirección IP <kbd>192.0.2.5</kbd> durante tres días coa razón <kbd>Primeiro aviso</kbd>.",
        "apihelp-block-example-user-complex": "Bloquear indefinidamente ó usuario <kbd>Vandal</kbd> coa razón <kbd>Vandalism</kbd>, e impedir a creación de novas contas e envío de correos electrónicos.",
-       "apihelp-changeauthenticationdata-description": "Cambiar os datos de autenticación do usuario actual.",
        "apihelp-changeauthenticationdata-example-password": "Intento de cambiar o contrasinal do usuario actua a <kbd>ExemploContrasinal</kbd>.",
-       "apihelp-checktoken-description": "Verificar a validez dun identificador de <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-checktoken-param-type": "Tipo de identificador a probar.",
        "apihelp-checktoken-param-token": "Símbolo a testar",
        "apihelp-checktoken-param-maxtokenage": "Tempo máximo autorizado para o identificador, en segundos.",
        "apihelp-checktoken-example-simple": "Verificar a validez de un identificador   <kbd>csrf</kbd>.",
-       "apihelp-clearhasmsg-description": "Limpar a bandeira <code>hasmsg</code> para o usuario actual",
        "apihelp-clearhasmsg-example-1": "Limpar a bandeira <code>hasmsg</code> para o usuario actual",
-       "apihelp-clientlogin-description": "Conectarse á wiki usando o fluxo interactivo.",
        "apihelp-clientlogin-example-login": "Comezar o proceso de conexión á wiki como o usuario <kbd>Exemplo</kbd> con contrasinal <kbd>ExemploContrasinal</kbd>.",
        "apihelp-clientlogin-example-login2": "Continuar a conexión despois dunha resposta de <samp>UI</samp> para unha autenticación de dous factores, proporcionando un <var>OATHToken</var> con valor <kbd>987654</kbd>.",
-       "apihelp-compare-description": "Obter as diferencias entre dúas páxinas.\n\nDebe indicar un número de revisión, un título de páxina, ou un ID de páxina tanto para \"from\" como para \"to\".",
        "apihelp-compare-param-fromtitle": "Primeiro título para comparar.",
        "apihelp-compare-param-fromid": "Identificador da primeira páxina a comparar.",
        "apihelp-compare-param-fromrev": "Primeira revisión a comparar.",
+       "apihelp-compare-param-fromtext": "Uso este texto en vez do contido da revisión especificada por <var>fromtitle</var>, <var>fromid</var> ou <var>fromrev</var>.",
        "apihelp-compare-param-totitle": "Segundo título para comparar.",
        "apihelp-compare-param-toid": "Identificador da segunda páxina a comparar.",
        "apihelp-compare-param-torev": "Segunda revisión a comparar.",
+       "apihelp-compare-param-prop": "Que información obter.",
+       "apihelp-compare-paramvalue-prop-diff": "O diff HTML.",
+       "apihelp-compare-paramvalue-prop-diffsize": "O tamaño do diff HTML, en bytes.",
+       "apihelp-compare-paramvalue-prop-size": "Tamaño das revisións 'desde' e 'a'.",
        "apihelp-compare-example-1": "Mostrar diferencias entre a revisión 1 e a 2",
-       "apihelp-createaccount-description": "Crear unha nova conta de usuario.",
        "apihelp-createaccount-param-preservestate": "SE <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> devolve o valor \"certo\" para  <samp>hasprimarypreservedstate</samp>, as consultas marcadas como <samp>primary-required</samp> deben ser omitidas. Se devolve un valor non baleiro para <samp>preservedusername</samp>, ese nome de usuario debe usarse para o parámetro <var>username</var>.",
        "apihelp-createaccount-example-create": "Comezar o proceso de crear un usuario <kbd>Exemplo</kbd> con contrasinal <kbd>ExemploContrasinal</kbd>.",
        "apihelp-createaccount-param-name": "Nome de usuario.",
        "apihelp-createaccount-param-language": "Código de lingua para usar como defecto polo usuario (de xeito opcional, usarase a lingua por defecto)",
        "apihelp-createaccount-example-pass": "Crear usuario <kbd>testuser</kbd> con contrasinal <kbd>test123</kbd>.",
        "apihelp-createaccount-example-mail": "Crear usuario <kbd>testmailuser</kbd>\"testmailuser\" e enviar por correo electrónico un contrasinal xenerado de forma aleatoria.",
-       "apihelp-cspreport-description": "Usado polos navegadores para informar de violacións da política de confidencialidade de contido. Este módulo non debe se usado nunca, excepto cando é usado automaticamente por un navegador web compatible con CSP.",
        "apihelp-cspreport-param-reportonly": "Marcar un informe dunha política de vixiancia e non unha política esixida",
        "apihelp-cspreport-param-source": "Que xerou a cabeceira CSP que lanzou este informe",
-       "apihelp-delete-description": "Borrar a páxina.",
        "apihelp-delete-param-title": "Título da páxina a eliminar. Non pode usarse xunto con <var>$1pageid</var>.",
        "apihelp-delete-param-pageid": "Identificador da páxina a eliminar. Non pode usarse xunto con <var>$1title</var>.",
        "apihelp-delete-param-reason": "Razón para o borrado. Se non se indica, usarase unha razón xenerada automaticamente.",
@@ -95,8 +90,6 @@
        "apihelp-delete-param-oldimage": "Nome da imaxe antiga a borrar como se proporciona en [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]].",
        "apihelp-delete-example-simple": "Borrar <kbd>Main Page</kbd>.",
        "apihelp-delete-example-reason": "Eliminar <kbd>Main Page</kbd>  coa razón <kbd>Preparing for move</kbd>.",
-       "apihelp-disabled-description": "Este módulo foi desactivado.",
-       "apihelp-edit-description": "Crear e editar páxinas.",
        "apihelp-edit-param-title": "Título da páxina que quere editar. Non pode usarse xunto con <var>$1pageid</var>.",
        "apihelp-edit-param-pageid": "Identificador da páxina que quere editar. Non pode usarse xunto con <var>$1title</var>.",
        "apihelp-edit-param-section": "Número de selección. O <kbd>0</kbd> é para a sección superior, <kbd>new</kbd> para unha sección nova.",
        "apihelp-edit-example-edit": "Editar a páxina",
        "apihelp-edit-example-prepend": "Antepor <kbd>_&#95;NOTOC_&#95;</kbd> a unha páxina.",
        "apihelp-edit-example-undo": "Desfacer revisións 13579 a 13585 con resumo automático.",
-       "apihelp-emailuser-description": "Enviar un correo electrónico a un usuario.",
        "apihelp-emailuser-param-target": "Usuario ó que lle mandar correo electrónico.",
        "apihelp-emailuser-param-subject": "Asunto.",
        "apihelp-emailuser-param-text": "Corpo do correo.",
        "apihelp-emailuser-param-ccme": "Enviarme unha copia deste correo.",
        "apihelp-emailuser-example-email": "Enviar un correo electrónico ó usuario <kbd>WikiSysop</kbd> co texto <kbd>Content</kbd>.",
-       "apihelp-expandtemplates-description": "Expandir tódolos modelos dentro do wikitexto.",
        "apihelp-expandtemplates-param-title": "Título da páxina.",
        "apihelp-expandtemplates-param-text": "Sintaxis wiki a converter.",
        "apihelp-expandtemplates-param-revid": "ID de revisión, para <nowiki>{{REVISIONID}}</nowiki> e variables similares.",
        "apihelp-expandtemplates-param-includecomments": "Cando queria incluír comentarios HTML na saída.",
        "apihelp-expandtemplates-param-generatexml": "Xenerar árbore de análise XML (reemprazado por $1prop=parsetree).",
        "apihelp-expandtemplates-example-simple": "Expandir o wikitexto <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd>.",
-       "apihelp-feedcontributions-description": "Devolve a lista de contribucións dun usuario.",
        "apihelp-feedcontributions-param-feedformat": "O formato de alimentación.",
        "apihelp-feedcontributions-param-user": "Para que usuarios recuperar as contribucións.",
        "apihelp-feedcontributions-param-namespace": "Que espazo de nomes filtrar polas contribucións.",
        "apihelp-feedcontributions-param-hideminor": "Ocultar edicións menores.",
        "apihelp-feedcontributions-param-showsizediff": "Mostrar diferenza de tamaño entre edicións.",
        "apihelp-feedcontributions-example-simple": "Mostrar as contribucións do usuario <kbd>Example</kbd>.",
-       "apihelp-feedrecentchanges-description": "Devolve un ficheiro de cambios recentes.",
        "apihelp-feedrecentchanges-param-feedformat": "O formato da saída.",
        "apihelp-feedrecentchanges-param-namespace": "Espazo de nomes ó que limitar os resultados.",
        "apihelp-feedrecentchanges-param-invert": "Tódolos nomes de espazos agás o seleccionado",
        "apihelp-feedrecentchanges-param-categories_any": "Só mostrar cambios en páxinas pertencentes a calquera das categorías.",
        "apihelp-feedrecentchanges-example-simple": "Mostrar os cambios recentes",
        "apihelp-feedrecentchanges-example-30days": "Mostrar os cambios recentes limitados a 30 días",
-       "apihelp-feedwatchlist-description": "Devolve o fluxo dunha lista de vixiancia.",
        "apihelp-feedwatchlist-param-feedformat": "O formato da saída.",
        "apihelp-feedwatchlist-param-hours": "Lista as páxinas modificadas desde estas horas ata agora.",
        "apihelp-feedwatchlist-param-linktosections": "Ligar directamente ás seccións modificadas se é posible.",
        "apihelp-feedwatchlist-example-default": "Mostar o fluxo da lista de vixiancia.",
        "apihelp-feedwatchlist-example-all6hrs": "Amosar tódolos cambios feitos ás páxinas vixiadas nas últimas 6 horas.",
-       "apihelp-filerevert-description": "Revertir o ficheiro a unha versión anterior.",
        "apihelp-filerevert-param-filename": "Nome de ficheiro final, sen o prefixo Ficheiro:",
        "apihelp-filerevert-param-comment": "Comentario de carga.",
        "apihelp-filerevert-param-archivename": "Nome de ficheiro da revisión á que reverter.",
        "apihelp-filerevert-example-revert": "Reverter <kbd>Wiki.png</kbd> á versión do <kbd>2011-03-05T15:27:40Z</kbd>.",
-       "apihelp-help-description": "Mostrar axuda para os módulos indicados.",
        "apihelp-help-param-modules": "Módulos para mostar axuda (valores dos parámetros <var>acción</var> e <var>formato</var>, ou <kbd>principal</kbd>). Pode especificar submódulos con un <kbd>+</kbd>.",
        "apihelp-help-param-submodules": "Incluír axuda para os submódulos do módulo nomeado.",
        "apihelp-help-param-recursivesubmodules": "Incluír axuda para os submódulos de forma recursiva.",
        "apihelp-help-example-recursive": "Toda a axuda nunha páxina",
        "apihelp-help-example-help": "Axuda do módulo de axuda en si",
        "apihelp-help-example-query": "Axuda para dous submódulos de consulta.",
-       "apihelp-imagerotate-description": "Xirar unha ou máis imaxes.",
        "apihelp-imagerotate-param-rotation": "Graos a rotar a imaxe no sentido do reloxio.",
        "apihelp-imagerotate-param-tags": "Etiquetas aplicar á entrada no rexistro de subas.",
        "apihelp-imagerotate-example-simple": "Rotar <kbd>File:Example.png</kbd> <kbd>90</kbd> graos.",
        "apihelp-imagerotate-example-generator": "Rotar tódalas imaxes en <kbd>Category:Flip</kbd> <kbd>180</kbd> graos",
-       "apihelp-import-description": "Importar unha páxina doutra wiki, ou dun ficheiro XML.\n\nDecátese de que o POST HTTP debe facerse como unha carga de ficheiro (p. ex. usando multipart/form-data) cando se envíe un ficheiro para o parámetro <var>xml</var>.",
        "apihelp-import-param-summary": "Resume de importación de entrada no rexistro.",
        "apihelp-import-param-xml": "Subido ficheiro XML.",
        "apihelp-import-param-interwikisource": "Para importacións interwiki: wiki da que importar.",
        "apihelp-import-param-rootpage": "Importar como subpáxina desta páxina. Non se pode usar de forma conxunta con <var>$1namespace</var>.",
        "apihelp-import-param-tags": "Cambiar as etiquetas a aplicar á entrada no rexistro de importacións e á revisión nula das páxinas importadas.",
        "apihelp-import-example-import": "Importar [[meta:Help:ParserFunctions]] ó espazo de nomes 100 con todo o historial.",
-       "apihelp-linkaccount-description": "Vincular unha conta dun provedor externo ó usuario actual.",
        "apihelp-linkaccount-example-link": "Comezar o proceso de vincular a unha conta de <kbd>Exemplo</kbd>.",
-       "apihelp-login-description": "Iniciar sesión e obter as cookies de autenticación.\n\nEsta acción só debe utilizarse en combinación con [[Special:BotPasswords]]; para a cuenta de inicio de sesión non se utiliza e pode fallar sen previo aviso. Para iniciar a sesión de forma segura na conta principal, utilice <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
-       "apihelp-login-description-nobotpasswords": "Conectarse e obter as cookies de autenticación. \n\nEsta acción está obsoleta e pode fallar sen avisar. Para conectarse sen problema use <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
        "apihelp-login-param-name": "Nome de usuario.",
        "apihelp-login-param-password": "Contrasinal",
        "apihelp-login-param-domain": "Dominio (opcional).",
        "apihelp-login-param-token": "Identificador de conexión obtido na primeira petición.",
        "apihelp-login-example-gettoken": "Recuperar un identificador de conexión.",
        "apihelp-login-example-login": "Identificarse",
-       "apihelp-logout-description": "Terminar e limpar datos de sesión.",
        "apihelp-logout-example-logout": "Cerrar a sesión do usuario actual",
-       "apihelp-managetags-description": "Realizar tarefas de xestión relacionadas coa modificación de etiquetas.",
        "apihelp-managetags-param-operation": "Que operación realizar:\n;create:Crear unha nova etiqueta de modificación para uso manual.\n;delete:Borar unha etiqueta de modificación da base de datos, incluíndo o borrado da etiqueta de todas as revisións, entradas de cambios recentes e entradas de rexistro onde estea a usarse.\n;activate:Activar unha etiqueta de modificación, permitindo que os usuarios a usen manualmente.\n;deactivate:Desactivar unha etiqueta de modificación, impedindo que os usuarios a usen manualmente.",
        "apihelp-managetags-param-tag": "Etiqueta para crear, borrar, activar ou desactivar. Para a creación da etiqueta, a etiqueta non pode existir previamente. Para o borrado da etiqueta, a etiqueta debe existir. Para a activación da etiqueta, a etiqueta debe existir e non pode ser usada por unha extensión. Para desactivar unha etiqueta, a etiqueta debe estar activa e definida manualmente.",
        "apihelp-managetags-param-reason": "Un motivo opcional para crear, borrar, activar ou desactivar a etiqueta.",
        "apihelp-managetags-example-delete": "Borrar a etiqueta <kbd>vandalismo</kbd> coa razón <kbd>Erros ortográficos</kbd>",
        "apihelp-managetags-example-activate": "Activar a etiqueta chamada <kbd>spam</kbd> coa razón <kbd>For use in edit patrolling</kbd>",
        "apihelp-managetags-example-deactivate": "Desactivar a etiqueta chamada <kbd>spam</kbd> coa razón <kbd>No longer required</kbd>",
-       "apihelp-mergehistory-description": "Fusionar os historiais das páxinas.",
        "apihelp-mergehistory-param-from": "Título da páxina desde a que se fusionará o historial. Non pode usarse xunto con <var>$1fromid</var>.",
        "apihelp-mergehistory-param-fromid": "Identificador da páxina desde a que se fusionará o historial. Non pode usarse xunto con <var>$1from</var>.",
        "apihelp-mergehistory-param-to": "Título da páxina á que se fusionará o historial. Non pode usarse xunto con <var>$1toid</var>.",
        "apihelp-mergehistory-param-reason": "Razón para a fusión de historiais.",
        "apihelp-mergehistory-example-merge": "Fusionar o historial enteiro de <kbd>PáxinaVella</kbd> en <kbd>PáxinaNova</kbd>.",
        "apihelp-mergehistory-example-merge-timestamp": "Fusionar as revisións da páxina <kbd>PáxinaVella</kbd> con data <kbd>2015-12-31T04:37:41Z</kbd> en <kbd>PáxinaNova</kbd>.",
-       "apihelp-move-description": "Mover unha páxina.",
        "apihelp-move-param-from": "Título da páxina que quere renomear. Non pode usarse xunto con <var>$1fromid</var>.",
        "apihelp-move-param-fromid": "Identificador da páxina que quere renomear. Non pode usarse xunto con <var>$1from</var>.",
        "apihelp-move-param-to": "Título ó que renomear a páxina.",
        "apihelp-move-param-ignorewarnings": "Ignorar as advertencias.",
        "apihelp-move-param-tags": "Cambiar as etiquetas a aplicar á entrada do rexistro de traslados e na revisión nula da páxina de destino.",
        "apihelp-move-example-move": "Mover <kbd>Badtitle</kbd> a <kbd>Goodtitle</kbd> sen deixar unha redirección.",
-       "apihelp-opensearch-description": "Buscar no wiki mediante o protocolo OpenSearch.",
        "apihelp-opensearch-param-search": "Buscar texto.",
        "apihelp-opensearch-param-limit": "Número máximo de resultados a visualizar.",
        "apihelp-opensearch-param-namespace": "Espazo de nomes no que buscar.",
        "apihelp-opensearch-param-format": "O formato de saída.",
        "apihelp-opensearch-param-warningsaserror": "Se os avisos son recibidos con <kbd>format=json</kbd>, devolver un erro de API no canto de ignoralos.",
        "apihelp-opensearch-example-te": "Atopar páxinas que comezan por <kbd>Te</kbd>.",
-       "apihelp-options-description": "Cambiar as preferencias do usuario actual.\n\nSó se poden cambiar opcións que estean rexistradas no núcleo ou nunha das extensións instaladas, ou aquelas opcións con claves prefixadas con <code>userjs-</code> (previstas para ser usadas por escrituras de usuario).",
        "apihelp-options-param-reset": "Reinicia as preferencias ás iniciais do sitio.",
        "apihelp-options-param-resetkinds": "Lista de tipos de opcións a reinicializar cando a opción <var>$1reset</var> está definida.",
        "apihelp-options-param-change": "Lista de cambios, con formato nome=valor (p. ex. skin=vector). Se non se da un valor (sen un símbolo de igual), p.ex. optionname|otheroption|..., a opción pasará ó valor por defecto. Para calquera valor que conteña o carácter (<kbd>|</kbd>), use o [[Special:ApiHelp/main#main/datatypes|separador alternativo para valores múltiples]] para unha operación correcta.",
        "apihelp-options-example-reset": "Restablecer todas as preferencias.",
        "apihelp-options-example-change": "Cambiar as preferencias <kbd>skin</kbd> and <kbd>hideminor</kbd>.",
        "apihelp-options-example-complex": "Restaurar todas as preferencias, logo fixar <kbd>skin</kbd> e <kbd>nickname</kbd>.",
-       "apihelp-paraminfo-description": "Obter información sobre módulos API.",
        "apihelp-paraminfo-param-modules": "Lista de nomes de módulos (valores dos parámetros <var>acción</var e <var>formato</var>, ou <kbd>principal</kbd>). Pode especificar submódulos con <kbd>+</kbd>, ou tódolos submódulos con <kbd>+*</kbd>, ou tódolos submódulos recursivamente con <kbd>+**</kbd>.",
        "apihelp-paraminfo-param-helpformat": "Formato das cadeas de axuda.",
        "apihelp-paraminfo-param-querymodules": "Lista dos nomes de módulos de consulta (valores dos parámetros <var>prop</var>, <var>meta</var> ou <var>list</var>). Use <kbd>$1modules=query+foo</kbd> no canto de <kbd>$1querymodules=foo</kbd>.",
        "apihelp-paraminfo-param-formatmodules": "Lista dos nomes de módulo de formato (valores do parámetro <var>formato</var>). No canto use <var>$1modules</var>.",
        "apihelp-paraminfo-example-1": "Amosar información para <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd>, e <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>.",
        "apihelp-paraminfo-example-2": "Mostrar a información para tódolos submódulos de <kbd>[[Special:ApiHelp/query|action=query]]</kbd>.",
-       "apihelp-parse-description": "Analiza o contido e devolve o resultado do analizador.\n\nVexa varios módulos propostos de <kbd>[[Special:ApiHelp/query|action=query]]</kbd> para obter información sobre a versión actual dunha páxina.\n\nHai varias formas de especificar o texto a analizar:\n# Especificar unha páxina ou revisión, usando <var>$1page</var>, <var>$1pageid</var>, ou <var>$1oldid</var>.\n# Especificando contido explícitamente, usando <var>$1text</var>, <var>$1title</var>, and <var>$1contentmodel</var>.\n# Especificando só un resumo a analizar. <var>$1prop</var> debe ter un valor baleiro.",
        "apihelp-parse-param-title": "Título da páxina á que pertence o texto. Se non se indica, debe especificarse <var>$1contentmodel</var>, e [[API]] usarase como o título.",
        "apihelp-parse-param-text": "Texto a analizar. Use <var>$1title</var> ou <var>$1contentmodel</var> para controlar o modelo de contido.",
        "apihelp-parse-param-summary": "Resumo a analizar.",
        "apihelp-parse-paramvalue-prop-limitreportdata": "Devolve o informe de límite de forma estruturada. Non devolve datos cando <var>$1disablelimitreport</var> está fixado.",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "Devolve a versión HTML do informe de límite. Non devolve datos cando <var>$1disablelimitreport</var> está fixado.",
        "apihelp-parse-paramvalue-prop-parsetree": "Árbores de análise XML do contido da revisión (precisa o modelo de contido <code>$1</code>)",
+       "apihelp-parse-paramvalue-prop-parsewarnings": "Devolve os avisos que ocorreron ó analizar o contido.",
+       "apihelp-parse-param-wrapoutputclass": "Clase CSS a usar para formatar a saída do analizador sintáctico.",
        "apihelp-parse-param-pst": "Fai unha transformación antes de gardar a entrada antes de analizala. Válida unicamente para usar con texto.",
        "apihelp-parse-param-onlypst": "Facer unha transformación antes de gardar (PST) a entrada, pero sen analizala. Devolve o mesmo wikitexto, despois de que a PST foi aplicada. Só válida cando se usa con <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Inclúe ligazóns de idioma proporcionadas polas extensións (para usar con <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-preview": "Analizar en modo vista previa.",
        "apihelp-parse-param-sectionpreview": "Analizar en modo vista previa de sección (activa tamén o modo de vista previa).",
        "apihelp-parse-param-disabletoc": "Omitir o índice na saída.",
+       "apihelp-parse-param-useskin": "Aplicar o tema seleccionado á saída do analizador. Pode afectar ás seguintes propiedades: <kbd>langlinks</kbd>, <kbd>headitems</kbd>, <kbd>módulos</kbd>, <kbd>jsconfigvars</kbd>, <kbd>indicadores</kbd>.",
        "apihelp-parse-param-contentformat": "Formato de serialización do contido usado para o texto de entrada. Só válido cando se usa con $1text.",
        "apihelp-parse-param-contentmodel": "Modelo de contido do texto de entrada. Se se omite, debe especificarse $1title, e o valor por defecto será o modelo do título especificado. Só válido cando se usa con $1text.",
        "apihelp-parse-example-page": "Analizar unha páxina.",
        "apihelp-parse-example-text": "Analizar un wikitexto.",
        "apihelp-parse-example-texttitle": "Analizar wikitexto, especificando o título da páxina.",
        "apihelp-parse-example-summary": "Analizar un resumo.",
-       "apihelp-patrol-description": "Patrullar unha páxina ou edición.",
        "apihelp-patrol-param-rcid": "ID de modificación recente a vixiar.",
        "apihelp-patrol-param-revid": "ID de revisión a vixiar.",
        "apihelp-patrol-param-tags": "Cambiar as etiquetas a aplicar na entrada do rexistro de patrullas.",
        "apihelp-patrol-example-rcid": "Patrullar un cambio recente",
        "apihelp-patrol-example-revid": "Patrullar unha revisión",
-       "apihelp-protect-description": "Cambiar o nivel de protección dunha páxina.",
        "apihelp-protect-param-title": "Título da páxina que quere (des)protexer. Non pode usarse xunto con $1pageid.",
        "apihelp-protect-param-pageid": "Identificador da páxina que quere (des)protexer. Non pode usarse xunto con $1title.",
        "apihelp-protect-param-protections": "Lista dos niveis de protección, con formato <kbd>action=level</kbd> (p.ex. <kbd>edit=sysop</kbd>). Un nivel de <kbd>all</kbd> quere dicir que todo o mundo ten permiso para realizar a acción, sen restricións.\n\n<strong>Nota:</strong> Todas as accións que non estean listadas terán restriccións para ser eliminadas.",
        "apihelp-protect-example-protect": "Protexer unha páxina",
        "apihelp-protect-example-unprotect": "Desprotexer unha páxina poñendo as restricións a <kbd>all</kbd>. (isto quere dicir que todo o mundo pode realizar a acción).",
        "apihelp-protect-example-unprotect2": "Desprotexer unha páxina quitando as restricións.",
-       "apihelp-purge-description": "Borrar a caché para os títulos indicados.",
        "apihelp-purge-param-forcelinkupdate": "Actualizar as táboas de ligazóns.",
        "apihelp-purge-param-forcerecursivelinkupdate": "Actualizar a táboa de ligazóns, e actualizar as táboas de ligazóns para calquera páxina que use esta páxina como modelo.",
        "apihelp-purge-example-simple": "Purgar a <kbd>Main Page</kbd> e páxina da <kbd>API</kbd>.",
        "apihelp-purge-example-generator": "Purgar as primeiras 10 páxinas no espazo de nomes principal.",
-       "apihelp-query-description": "Consultar datos de e sobre MediaWiki.\n\nTodas as modificacións de datos primeiro teñen que facer unha busca para obter un identificador para evitar  abusos de sitios maliciosos.",
        "apihelp-query-param-prop": "Que propiedades obter para as páxinas buscadas.",
        "apihelp-query-param-list": "Que lista obter.",
        "apihelp-query-param-meta": "Que metadatos obter.",
        "apihelp-query-param-rawcontinue": "Devolver os datos en bruto de <samp>query-continue</samp> para continuar.",
        "apihelp-query-example-revisions": "Consultar [[Special:ApiHelp/query+siteinfo|información do sitio]] e [[Special:ApiHelp/query+revisions|as revisións]] da <kbd>Páxina Principal</kbd>.",
        "apihelp-query-example-allpages": "Buscar revisións de páxinas que comecen por <kbd>API/</kbd>.",
-       "apihelp-query+allcategories-description": "Numerar tódalas categorías",
        "apihelp-query+allcategories-param-from": "Categoría pola que comezar a enumeración.",
        "apihelp-query+allcategories-param-to": "Categoría pola que rematar a enumeración.",
        "apihelp-query+allcategories-param-prefix": "Buscar todos os títulos de categoría que comezan con este valor.",
        "apihelp-query+allcategories-paramvalue-prop-hidden": "Marca as categorías que están ocultas con <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+allcategories-example-size": "Listar categorías con información do número de páxinas en cada unha.",
        "apihelp-query+allcategories-example-generator": "Obter información sobre a páxina de categoría para categorías que comezan por <kbd>List</kbd>.",
-       "apihelp-query+alldeletedrevisions-description": "Listar todas as revisións borradas por un usuario ou nun espazo de nomes.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Só pode usarse con <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Non pode usarse con <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-param-start": "Selo de tempo para comezar a enumeración.",
        "apihelp-query+alldeletedrevisions-param-generatetitles": "Usado como xenerador, xenera títulos no canto de IDs de revisión.",
        "apihelp-query+alldeletedrevisions-example-user": "Listar as últimas 50 contribucións borradas do usuario <kbd>Example</kbd>.",
        "apihelp-query+alldeletedrevisions-example-ns-main": "Listar as 50 primeiras revisións borradas no espazo de nomes principal.",
-       "apihelp-query+allfileusages-description": "Lista todos os usos de ficheiro, incluído os que non existen.",
        "apihelp-query+allfileusages-param-from": "Título do ficheiro no que comezar a enumerar.",
        "apihelp-query+allfileusages-param-to": "Título do ficheiro no que rematar de enumerar.",
        "apihelp-query+allfileusages-param-prefix": "Buscar tódolos títulos de ficheiro que comezan con este valor.",
        "apihelp-query+allfileusages-example-unique": "Listar títulos únicos de ficheiros.",
        "apihelp-query+allfileusages-example-unique-generator": "Obter todos os títulos de ficheiro, marcando os que faltan.",
        "apihelp-query+allfileusages-example-generator": "Obtén as páxinas que conteñen os ficheiros.",
-       "apihelp-query+allimages-description": "Enumerar tódalas imaxes secuencialmente.",
        "apihelp-query+allimages-param-sort": "Propiedade pola que ordenar.",
        "apihelp-query+allimages-param-dir": "Dirección na cal listar.",
        "apihelp-query+allimages-param-from": "Título da imaxe no que comezar a enumerar. Só pode usarse con $1sort=name.",
        "apihelp-query+allimages-example-recent": "Mostrar unha lista de ficheiros subidos recentemente, similares a [[Special:NewFiles]].",
        "apihelp-query+allimages-example-mimetypes": "Mostrar unha lista de ficheiros con tipo MIME <kbd>image/png</kbd> ou <kbd>image/gif</kbd>",
        "apihelp-query+allimages-example-generator": "Mostar información sobre catro ficheiros que comecen pola letra <kbd>T</kbd>.",
-       "apihelp-query+alllinks-description": "Numerar tódalas ligazóns que apuntan a un nome de espazos determinado.",
        "apihelp-query+alllinks-param-from": "Título da ligazón na que comezar a enumerar.",
        "apihelp-query+alllinks-param-to": "Título da ligazón na que rematar de enumerar.",
        "apihelp-query+alllinks-param-prefix": "Buscar tódolos títulos ligados que comezan con este valor.",
        "apihelp-query+alllinks-example-unique": "Listar títulos ligados únicos",
        "apihelp-query+alllinks-example-unique-generator": "Obtén tódolos títulos ligados, marcando  os eliminados.",
        "apihelp-query+alllinks-example-generator": "Obtén as páxinas que conteñen as ligazóns.",
-       "apihelp-query+allmessages-description": "Devolver mensaxes deste sitio.",
        "apihelp-query+allmessages-param-messages": "Que mensaxes devolver. <kbd>*</kbd> (por defecto) significa todas as mensaxes",
        "apihelp-query+allmessages-param-prop": "Que propiedades obter.",
        "apihelp-query+allmessages-param-enableparser": "Marcar para activar o analizador, isto preprocesará o texto wiki da mensaxe (substituir palabras máxicas, xestionar modelo, etc.)",
        "apihelp-query+allmessages-param-prefix": "Devolver mensaxes con este prefixo.",
        "apihelp-query+allmessages-example-ipb": "Mostar mensaxes que comecen por <kbd>ipb-</kbd>.",
        "apihelp-query+allmessages-example-de": "Mostrar mensaxes <kbd>august</kbd> e <kbd>mainpage</kbd> en Alemán.",
-       "apihelp-query+allpages-description": "Numerar tódalas páxinas secuencialmente nun espazo de nomes determinado.",
        "apihelp-query+allpages-param-from": "Título da páxina na que comezar a enumerar.",
        "apihelp-query+allpages-param-to": "Título da páxina na que rematar de enumerar.",
        "apihelp-query+allpages-param-prefix": "Buscar tódolos títulos de páxinas que comezan con este valor.",
        "apihelp-query+allpages-example-B": "Mostrar unha lista de páxinas que comezan pola letra <kbd>B</kbd>.",
        "apihelp-query+allpages-example-generator": "Mostrar inforfmación sobre 4 páxinas que comecen pola letra <kbd>T</kbd>.",
        "apihelp-query+allpages-example-generator-revisions": "Motrar o contido das dúas primeiras páxinas que non sexan redirección que comecen por <kbd>Re</kbd>.",
-       "apihelp-query+allredirects-description": "Lista tódalas redireccións a un espazo de nomes.",
        "apihelp-query+allredirects-param-from": "Título da redirección na que comezar a enumerar.",
        "apihelp-query+allredirects-param-to": "Título da redirección na que rematar de enumerar.",
        "apihelp-query+allredirects-param-prefix": "Buscar todas as páxinas que comecen con este valor.",
        "apihelp-query+allredirects-example-unique": "Lista páxinas obxectivo únicas.",
        "apihelp-query+allredirects-example-unique-generator": "Obtén tódalas páxinas obxectivo, marcando as eliminadas.",
        "apihelp-query+allredirects-example-generator": "Obtén as páxinas que conteñen as redireccións.",
-       "apihelp-query+allrevisions-description": "Listar todas as revisións.",
        "apihelp-query+allrevisions-param-start": "Selo de tempo no que comezar a enumeración.",
        "apihelp-query+allrevisions-param-end": "Selo de tempo para rematar a enumeración.",
        "apihelp-query+allrevisions-param-user": "Só listar revisións deste usuario.",
        "apihelp-query+allrevisions-param-generatetitles": "Usado como xenerador, xenera títulos no canto de IDs de revisión.",
        "apihelp-query+allrevisions-example-user": "Listar as últimas 50 contribucións do usuario <kbd>Example</kbd>.",
        "apihelp-query+allrevisions-example-ns-main": "Listar as 50 primeiras revisións do espazo de nomes principal.",
-       "apihelp-query+mystashedfiles-description": "Obter unha lista dos ficheiros da caché de carga do usuario actual.",
        "apihelp-query+mystashedfiles-param-prop": "Que propiedades obter para os ficheiros.",
        "apihelp-query+mystashedfiles-paramvalue-prop-size": "Consultar o tamaño de ficheiro e as dimensións da imaxe.",
        "apihelp-query+mystashedfiles-paramvalue-prop-type": "Consultar o tipo MIME do ficheiro e tipo multimedia.",
        "apihelp-query+mystashedfiles-param-limit": "Cantos ficheiros devolver.",
        "apihelp-query+mystashedfiles-example-simple": "Obter a clave de ficheiro, tamaño de ficheiro, e tamaño en pixels dos ficheiros na caché de carga do usuario actual.",
-       "apihelp-query+alltransclusions-description": "Listar todas as transclusións (páxinas integradas usando &#123;&#123;x&#125;&#125;), incluíndo as eliminadas.",
        "apihelp-query+alltransclusions-param-from": "Título da transclusión na que comezar a enumerar.",
        "apihelp-query+alltransclusions-param-to": "Título da transclusión na que rematar de enumerar.",
        "apihelp-query+alltransclusions-param-prefix": "Buscar todos os títulos transcluídos que comezan con este valor.",
        "apihelp-query+alltransclusions-example-unique": "Lista os títulos transcluídos únicos.",
        "apihelp-query+alltransclusions-example-unique-generator": "Obtén tódolos títulos transcluídos, marcando  os eliminados.",
        "apihelp-query+alltransclusions-example-generator": "Obtén as páxinas que conteñen as transclusións.",
-       "apihelp-query+allusers-description": "Enumerar tódolos usuarios rexistrados.",
        "apihelp-query+allusers-param-from": "Nome de usuario para comezar a enumeración",
        "apihelp-query+allusers-param-to": "Nome de usuario para rematar a enumeración.",
        "apihelp-query+allusers-param-prefix": "Buscar tódolos nomes de usuario que comezan con este valor.",
        "apihelp-query+allusers-param-activeusers": "Só listar usuarios activos {{PLURAL:$1|no último día|nos $1 últimos días}}.",
        "apihelp-query+allusers-param-attachedwiki": "Con <kbd>$1prop=centralids</kbd>, \ntamén indica se o usuario está acoplado á wiki identificada por este identificador.",
        "apihelp-query+allusers-example-Y": "Listar usuarios que comecen por <kbd>Y</kbd>.",
-       "apihelp-query+authmanagerinfo-description": "Recuperar información sobre o estado de autenticación actual.",
        "apihelp-query+authmanagerinfo-param-securitysensitiveoperation": "Comprobar se o estado de autenticación actual do usuario é abondo para a operación especificada como sensible dende o punto de vista da seguridade.",
        "apihelp-query+authmanagerinfo-param-requestsfor": "Recuperar a información sobre as peticións de autenticación necesarias para a acción de autenticación especificada.",
        "apihelp-query+authmanagerinfo-example-login": "Recuperar as peticións que poden ser usadas ó comezo dunha conexión.",
        "apihelp-query+authmanagerinfo-example-login-merged": "Recuperar as peticións que poden ser usadas ó comezo dunha conexión, xunto cos campos de formulario integrados.",
        "apihelp-query+authmanagerinfo-example-securitysensitiveoperation": "Probar se a autenticación é abondo para a acción <kbd>foo</kbd>.",
-       "apihelp-query+backlinks-description": "Atopar todas as páxinas que ligan coa páxina dada.",
        "apihelp-query+backlinks-param-title": "Título a buscar. Non pode usarse xunto con <var>$1pageid</var>.",
        "apihelp-query+backlinks-param-pageid": "Identificador de páxina a buscar. Non pode usarse xunto con <var>$1title</var>.",
        "apihelp-query+backlinks-param-namespace": "Espazo de nomes a enumerar.",
        "apihelp-query+backlinks-param-redirect": "Se a ligazón sobre unha páxina é unha redirección, atopa tamén todas as páxinas que ligan con esa redirección. O límite máximo divídese á metade.",
        "apihelp-query+backlinks-example-simple": "Mostrar ligazóns á <kbd>Main page</kbd>.",
        "apihelp-query+backlinks-example-generator": "Obter a información das páxinas que ligan á <kbd>Main page</kbd>.",
-       "apihelp-query+blocks-description": "Listar todos os usuarios e direccións IP bloqueados.",
        "apihelp-query+blocks-param-start": "Selo de tempo para comezar a enumeración.",
        "apihelp-query+blocks-param-end": "Selo de tempo para rematar a enumeración.",
        "apihelp-query+blocks-param-ids": "Lista de IDs de bloque a listar (opcional).",
        "apihelp-query+blocks-param-show": "Só mostrar elementos correspondentes a eses criterios.\nPor exemplo, para ver só bloques indefinidos en direccións IP, ponga <kbd>$1show=ip|!temp</kbd>.",
        "apihelp-query+blocks-example-simple": "Listar bloques.",
        "apihelp-query+blocks-example-users": "Lista de bloques de usuarios <kbd>Alice</kbd> e <kbd>Bob</kbd>.",
-       "apihelp-query+categories-description": "Listar todas as categorías ás que pertencen as páxinas.",
        "apihelp-query+categories-param-prop": "Que propiedades adicionais obter para cada categoría:",
        "apihelp-query+categories-paramvalue-prop-sortkey": "Engade a clave de ordenación (cadea hexadecimal) e o prefixo da clave de ordenación (parte lexible) da categoría.",
        "apihelp-query+categories-paramvalue-prop-timestamp": "Engade o selo de tempo de cando se engadíu a categoría.",
        "apihelp-query+categories-param-dir": "Dirección na cal listar.",
        "apihelp-query+categories-example-simple": "Obter a lista de categorías ás que pertence a páxina <kbd>Albert Einstein</kbd>",
        "apihelp-query+categories-example-generator": "Obter a información de todas as categorías usadas na páxina <kbd>Albert Einstein</kbd>.",
-       "apihelp-query+categoryinfo-description": "Devolver información sobre as categorías dadas.",
        "apihelp-query+categoryinfo-example-simple": "Obter información sobre <kbd>Category:Foo</kbd> e <kbd>Category:Bar</kbd>",
-       "apihelp-query+categorymembers-description": "Listar tódalas páxinas nunha categoría determinada.",
        "apihelp-query+categorymembers-param-title": "Que categoría enumerar (obrigatorio). Debe incluír o prefixo <kbd>{{ns:category}}:</kbd>. Non pode usarse xunto con <var>$1pageid</var>.",
        "apihelp-query+categorymembers-param-pageid": "ID de páxina da categoría a enumerar. Non se pode usar xunto con <var>$1title</var>.",
        "apihelp-query+categorymembers-param-prop": "Que información incluír:",
        "apihelp-query+categorymembers-param-endsortkey": "Usar $1endhexsortkey no seu lugar.",
        "apihelp-query+categorymembers-example-simple": "Obter as dez primeiras páxinas de <kbd>Category:Physics</kbd>.",
        "apihelp-query+categorymembers-example-generator": "Obter a información das primeiras dez páxinas de <kbd>Category:Physics</kbd>.",
-       "apihelp-query+contributors-description": "Obter a lista de contribuidores conectados e o número de contribuidores anónimos dunha páxina.",
        "apihelp-query+contributors-param-group": "Incluír só ós usuarios dos grupos dados. Non se inclúen grupos implícitos nin autopromocionados como *, usuario ou autoconfirmado.",
        "apihelp-query+contributors-param-excludegroup": "Excluír usuarios nos grupos dados. Non se inclúen grupos implícitos nin autopromocionados como *, usuario ou autoconfirmado.",
        "apihelp-query+contributors-param-rights": "Incluír só ós usuarios cos dereitos dados. Non se inclúen os dereitos dados a grupos implícitos nin autopromocionados como *, usuario ou autoconfirmado.",
        "apihelp-query+contributors-param-excluderights": "Excluír usuarios cos dereitos dados. Non se inclúen os dereitos dados a grupos implícitos nin autopromocionados como *, usuario ou autoconfirmado.",
        "apihelp-query+contributors-param-limit": "Número total de contribuidores a devolver.",
        "apihelp-query+contributors-example-simple": "Mostrar os contribuidores á páxina <kbd>Main Page</kbd>.",
-       "apihelp-query+deletedrevisions-description": "Obter a información da revisión eliminada.\n\nPode usarse de varias formas:\n#Obter as revisións borradas dun conxunto de páxinas, indicando os títulos ou os IDs das páxinas. Ordenado por título e selo de tempo.\n#Obter datos sobre un conxunto de revisións borradas, indicando os seus IDs e os seus IDs de revisión. Ordenado por ID de revisión.",
        "apihelp-query+deletedrevisions-param-start": "Selo de tempo no que comezar a enumeración. Ignorado cando se está procesando unha lista de IDs de revisións.",
        "apihelp-query+deletedrevisions-param-end": "Selo de tempo no que rematar a enumeración. Ignorado cando se está procesando unha lista de IDs de revisións.",
        "apihelp-query+deletedrevisions-param-tag": "Só listar revisións marcadas con esta etiqueta.",
        "apihelp-query+deletedrevisions-param-excludeuser": "Non listar revisións deste usuario.",
        "apihelp-query+deletedrevisions-example-titles": "Listar as revisións borradas das páxinas <kbd>Main Page</kbd> e <kbd>Talk:Main Page</kbd>, con contido.",
        "apihelp-query+deletedrevisions-example-revids": "Listar a información para a revisión borrada <kbd>123456</kbd>.",
-       "apihelp-query+deletedrevs-description": "Lista as modificación borradas.\n\nOpera según tres modos:\n#Lista as modificacións borradas dos títulos indicados, ordenados por selo de tempo.\n#Lista as contribucións borradas do usuario indicado, ordenadas por selo de tempo (sen indicar títulos).\n#Lista todas as modificacións borradas no espazo de nomes indicado, ordenadas por título e selo de tempo (sen indicar títulos, sen fixar $1user).\n\nCertos parámetros só se aplican a algúns modos e son ignorados noutros.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Modo|Modos}}: $2",
        "apihelp-query+deletedrevs-param-start": "Selo de tempo no que comezar a enumeración.",
        "apihelp-query+deletedrevs-param-end": "Selo de tempo para rematar a enumeración.",
        "apihelp-query+deletedrevs-example-mode2": "Listar as últimas 50 contribucións borradas de <kbd>Bob</kbd> (modo 2).",
        "apihelp-query+deletedrevs-example-mode3-main": "Listar as primeiras 50 revisións borradas no espazo de nomes principal (modo 3)",
        "apihelp-query+deletedrevs-example-mode3-talk": "Listar as primeiras 50 páxinas no espazo de nomes {{ns:talk}} (modo 3).",
-       "apihelp-query+disabled-description": "Este módulo de consulta foi desactivado.",
-       "apihelp-query+duplicatefiles-description": "Listar todos os ficheiros que son duplicados dos fichieros dados baseado nos valores da función hash.",
        "apihelp-query+duplicatefiles-param-limit": "Cantos ficheiros duplicados devolver.",
        "apihelp-query+duplicatefiles-param-dir": "Dirección na cal listar.",
        "apihelp-query+duplicatefiles-param-localonly": "Só buscar por ficheiros no repositorio local.",
        "apihelp-query+duplicatefiles-example-simple": "Buscar duplicados de [[:File:Albert Einstein Head.jpg]]",
        "apihelp-query+duplicatefiles-example-generated": "Buscar duplicados de tódolos ficheiros",
-       "apihelp-query+embeddedin-description": "Atopar todas as páxinas que inclúen (por transclusión) o título dado.",
        "apihelp-query+embeddedin-param-title": "Título a buscar. Non pode usarse xunto con $1pageid.",
        "apihelp-query+embeddedin-param-pageid": "Identificador de páxina a buscar. Non pode usarse xunto con $1title.",
        "apihelp-query+embeddedin-param-namespace": "Espazo de nomes a enumerar.",
        "apihelp-query+embeddedin-param-limit": "Número total de páxinas a devolver.",
        "apihelp-query+embeddedin-example-simple": "Mostrar as páxinas que inclúan <kbd>Template:Stub</kbd>.",
        "apihelp-query+embeddedin-example-generator": "Obter información sobre as páxinas que inclúen <kbd>Template:Stub</kbd>.",
-       "apihelp-query+extlinks-description": "Devolve todas as URLs externas (sen ser interwikis) das páxinas dadas.",
        "apihelp-query+extlinks-param-limit": "Cantas ligazóns devolver.",
        "apihelp-query+extlinks-param-protocol": "Protocolo da URL. Se está baleiro e está activo <var>$1query</var>, o protocolo é <kbd>http</kbd>. Deixar esa variable e a <var>$1query</var> baleiras para listar todas as ligazóns externas.",
        "apihelp-query+extlinks-param-query": "Buscar cadea sen protocolo. Útil para verificar se unha páxina determinada contén unha URL externa determinada.",
        "apihelp-query+extlinks-param-expandurl": "Expandir as URLs relativas a un protocolo co protocolo canónico.",
        "apihelp-query+extlinks-example-simple": "Obter unha de ligazóns externas á <kbd>Main Page</kbd>.",
-       "apihelp-query+exturlusage-description": "Enumerar páxinas que conteñen unha dirección URL dada.",
        "apihelp-query+exturlusage-param-prop": "Que información incluír:",
        "apihelp-query+exturlusage-paramvalue-prop-ids": "Engade o ID da páxina.",
        "apihelp-query+exturlusage-paramvalue-prop-title": "Engade o título e o ID do espazo de nomes da páxina.",
        "apihelp-query+exturlusage-param-limit": "Cantas páxinas devolver.",
        "apihelp-query+exturlusage-param-expandurl": "Expandir as URLs relativas a un protocolo co protocolo canónico.",
        "apihelp-query+exturlusage-example-simple": "Mostrar páxinas ligando a <kbd>http://www.mediawiki.org</kbd>.",
-       "apihelp-query+filearchive-description": "Enumerar secuencialmente todos os ficheiros borrados.",
        "apihelp-query+filearchive-param-from": "Título da imaxe coa que comezar a enumeración.",
        "apihelp-query+filearchive-param-to": "Título da imaxe coa que rematar a enumeración.",
        "apihelp-query+filearchive-param-prefix": "Buscar tódolos títulos de imaxes que comezan con este valor.",
        "apihelp-query+filearchive-paramvalue-prop-bitdepth": "Engade a profundidade de bit da versión.",
        "apihelp-query+filearchive-paramvalue-prop-archivename": "Engade o nome do ficheiro da versión do ficheiro para as versións que non son a última.",
        "apihelp-query+filearchive-example-simple": "Mostrar unha lista de tódolos fichieiros eliminados.",
-       "apihelp-query+filerepoinfo-description": "Devolver a meta información sobre os repositorios de imaxes configurados na wiki.",
        "apihelp-query+filerepoinfo-param-prop": "Que propiedades do repositorio mostrar (pode haber máis dispoñible nalgunhas wikis):\n;apiurl:URL ó API do repositorio - útil para obter información das imaxes no host.\n;name:A clave do repositorio - usada p. ex. nas variables de retorno de <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> e [[Special:ApiHelp/query+imageinfo|imageinfo]]\n;displayname:O nome lexible do wiki repositorio.\n;rooturl:URL raíz dos camiños de imaxe.\n;local:Se o repositorio é o repositorio local ou non.",
        "apihelp-query+filerepoinfo-example-simple": "Obter infomación sobre os repositorios de ficheiros",
-       "apihelp-query+fileusage-description": "Atopar tódalas páxinas que usan os ficheiros dados.",
        "apihelp-query+fileusage-param-prop": "Que propiedades obter:",
        "apihelp-query+fileusage-paramvalue-prop-pageid": "ID de cada páxina.",
        "apihelp-query+fileusage-paramvalue-prop-title": "Título de cada páxina.",
        "apihelp-query+fileusage-param-show": "Mostrar só elementos que cumpren estes criterios:\n;redirect:Só mostra redireccións.\n;!redirect:Só mostra as que non son redireccións.",
        "apihelp-query+fileusage-example-simple": "Obter unha lista de páxinas usando [[:File:Example.jpg]]",
        "apihelp-query+fileusage-example-generator": "Obter infomación sobre páxinas que usan [[:File:Example.jpg]]",
-       "apihelp-query+imageinfo-description": "Devolve información de ficheiros e historial de subidas.",
        "apihelp-query+imageinfo-param-prop": "Que información do ficheiro obter:",
        "apihelp-query+imageinfo-paramvalue-prop-timestamp": "Engade selo de tempo á versión subida.",
        "apihelp-query+imageinfo-paramvalue-prop-user": "Engade o usuario que subiu cada versión do ficheiro.",
        "apihelp-query+imageinfo-param-localonly": "Só buscar ficheiros no repositorio local.",
        "apihelp-query+imageinfo-example-simple": "Busca a información sobre a versión actual de [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+imageinfo-example-dated": "Busca información sobre as versións de [[:File:Test.jpg]] posteriores a 2008.",
-       "apihelp-query+images-description": "Devolve todos os ficheiros contidos nas páxinas dadas.",
        "apihelp-query+images-param-limit": "Cantos ficheiros devolver.",
        "apihelp-query+images-param-images": "Listar só eses ficheiros. Útil para verificar se unha páxina concreta ten un ficheiro determinado.",
        "apihelp-query+images-param-dir": "Dirección na cal listar.",
        "apihelp-query+images-example-simple": "Obter unha lista de arquivos empregados na [[Main Page]].",
        "apihelp-query+images-example-generator": "Obter información sobre todos os ficheiros usados na [[Main Page]].",
-       "apihelp-query+imageusage-description": "Atopar tódalas páxinas que usan o título da imaxe dada.",
        "apihelp-query+imageusage-param-title": "Título a buscar. Non pode usarse xunto con $1pageid.",
        "apihelp-query+imageusage-param-pageid": "ID de páxina a buscar. Non pode usarse xunto con $1title.",
        "apihelp-query+imageusage-param-namespace": "Nome de espazos a numerar.",
        "apihelp-query+imageusage-param-redirect": "Se a ligazón sobre unha páxina é unha redirección, atopa tamén todas as páxinas que ligan con esa redirección. O límite máximo divídese á metade.",
        "apihelp-query+imageusage-example-simple": "Mostrar as páxinas que usan [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+imageusage-example-generator": "Obter información sobre as páxinas que usan [[:File:Albert Einstein Head.jpg]].",
-       "apihelp-query+info-description": "Obter información básica da páxina.",
        "apihelp-query+info-param-prop": "Que propiedades adicionais obter:",
        "apihelp-query+info-paramvalue-prop-protection": "Listar o nivel de protección de cada páxina.",
        "apihelp-query+info-paramvalue-prop-talkid": "O ID de páxina da páxina de conversa para cada páxina que non é páxina de conversa.",
        "apihelp-query+info-param-token": "Usar  [[Special:ApiHelp/query+tokens|action=query&meta=tokens]] no canto diso.",
        "apihelp-query+info-example-simple": "Obter información sobre a páxina <kbd>Main Page</kbd>.",
        "apihelp-query+info-example-protection": "Obter información xeral e de protección  sobre a páxina <kbd>Main Page</kbd>.",
-       "apihelp-query+iwbacklinks-description": "Atopar todas as páxina que ligan á ligazón interwiki indicada.\n\nPode usarse para atopar todas as ligazóns cun prefixo, ou todas as ligazóns a un título (co prefixo indicado). Se non se usa ningún parámetro funciona como \"todas as ligazóns interwiki\".",
        "apihelp-query+iwbacklinks-param-prefix": "Prefixo para a interwiki.",
        "apihelp-query+iwbacklinks-param-title": "Ligazón interwiki a buscar. Debe usarse con <var>$1blprefix</var>.",
        "apihelp-query+iwbacklinks-param-limit": "Número total de páxinas a devolver.",
        "apihelp-query+iwbacklinks-param-dir": "Dirección na cal listar.",
        "apihelp-query+iwbacklinks-example-simple": "Obter as páxinas ligadas a [[wikibooks:Test]]",
        "apihelp-query+iwbacklinks-example-generator": "Obter información sobre as páxinas que ligan a [[wikibooks:Test]].",
-       "apihelp-query+iwlinks-description": "Devolve todas as ligazóns interwiki ás páxinas indicadas.",
        "apihelp-query+iwlinks-param-url": "Se obter a URL completa (non pode usarse con $1prop).",
        "apihelp-query+iwlinks-param-prop": "Que propiedades adicionais obter para cada ligazón interwiki:",
        "apihelp-query+iwlinks-paramvalue-prop-url": "Engade a URL completa.",
        "apihelp-query+iwlinks-param-title": "Ligazón interwiki a buscar. Debe usarse con <var>$1prefix</var>.",
        "apihelp-query+iwlinks-param-dir": "Dirección na cal listar.",
        "apihelp-query+iwlinks-example-simple": "Obter as ligazóns interwiki da páxina <kbd>Main Page</kbd>.",
-       "apihelp-query+langbacklinks-description": "Atopar todas as páxinas que ligan coa ligazón de lingua dada. \n\nPode usarse para atopar todas as ligazóns cun código de lingua, ou todas as ligazón a un título (cunha lingua dada). Non usar cun parámetro que sexa \"todas as ligazóns de lingua\".\n\nDecátese que isto pode non considerar as ligazóns de idioma engadidas polas extensións.",
        "apihelp-query+langbacklinks-param-lang": "Lingua para a ligazón de lingua.",
        "apihelp-query+langbacklinks-param-title": "Ligazón de lingua a buscar. Debe usarse con $1lang.",
        "apihelp-query+langbacklinks-param-limit": "Número total de páxinas a devolver.",
        "apihelp-query+langbacklinks-param-dir": "Dirección na cal listar.",
        "apihelp-query+langbacklinks-example-simple": "Obter as páxinas ligadas a [[:fr:Test]].",
        "apihelp-query+langbacklinks-example-generator": "Obter información sobre as páxinas que ligan a [[:fr:Test]].",
-       "apihelp-query+langlinks-description": "Devolve todas as ligazóns interwiki ás páxinas indicadas.",
        "apihelp-query+langlinks-param-limit": "Cantas ligazóns de lingua devolver.",
        "apihelp-query+langlinks-param-url": "Se obter a URL completa (non pode usarse con <var>$1prop</var>).",
        "apihelp-query+langlinks-param-prop": "Que propiedades adicionais obter para cada ligazón interlingüística:",
        "apihelp-query+langlinks-param-dir": "Dirección na cal listar.",
        "apihelp-query+langlinks-param-inlanguagecode": "Código de lingua para nomes de lingua localizados.",
        "apihelp-query+langlinks-example-simple": "Obter ligazóns interlingua da páxina <kbd>Main Page</kbd>.",
-       "apihelp-query+links-description": "Devolve todas as ligazóns das páxinas indicadas.",
        "apihelp-query+links-param-namespace": "Mostra ligazóns só neste espazo de nomes.",
        "apihelp-query+links-param-limit": "Cantas ligazóns devolver.",
        "apihelp-query+links-param-titles": "Listar só as ligazóns a eses títulos. Útil para verificar se unha páxina concreta liga a un título determinado.",
        "apihelp-query+links-example-simple": "Obter as ligazóns da páxina <kbd>Main Page</kbd>.",
        "apihelp-query+links-example-generator": "Obter información sobre as ligazóns de páxina da <kbd>Main Page</kbd>.",
        "apihelp-query+links-example-namespaces": "Obter as ligazóns á páxina <kbd>Main Page</kbd> nos espazos de nome {{ns:user}} e {{ns:template}}.",
-       "apihelp-query+linkshere-description": "Atopar todas as páxinas que ligan coas páxinas dadas.",
        "apihelp-query+linkshere-param-prop": "Que propiedades obter:",
        "apihelp-query+linkshere-paramvalue-prop-pageid": "ID de cada páxina.",
        "apihelp-query+linkshere-paramvalue-prop-title": "Título de cada páxina.",
        "apihelp-query+linkshere-param-show": "Mostrar só elementos que cumpren estes criterios:\n;redirect:Só mostra redireccións.\n;!redirect:Só mostra as que non son redireccións.",
        "apihelp-query+linkshere-example-simple": "Obter unha lista que ligan á [[Main Page]]",
        "apihelp-query+linkshere-example-generator": "Obter a información das páxinas que ligan á [[Main Page]].",
-       "apihelp-query+logevents-description": "Obter os eventos dos rexistros.",
        "apihelp-query+logevents-param-prop": "Que propiedades obter:",
        "apihelp-query+logevents-paramvalue-prop-ids": "Engade o identificador do evento.",
        "apihelp-query+logevents-paramvalue-prop-title": "Engade o título da páxina para o evento.",
        "apihelp-query+logevents-param-tag": "Só listar entradas de evento marcadas con esta etiqueta.",
        "apihelp-query+logevents-param-limit": "Número total de entradas de evento a devolver.",
        "apihelp-query+logevents-example-simple": "Lista de eventos recentes do rexistro.",
-       "apihelp-query+pagepropnames-description": "Listar os nomes de todas as propiedades de páxina usados na wiki.",
        "apihelp-query+pagepropnames-param-limit": "Máximo número de nomes a retornar.",
        "apihelp-query+pagepropnames-example-simple": "Obter os dez primeiros nomes de propiedade.",
-       "apihelp-query+pageprops-description": "Obter varias propiedades de páxina definidas no contido da páxina.",
        "apihelp-query+pageprops-param-prop": "Listar só estas propiedades de páxina (<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd> devolve os nomes das propiedades de páxina usados). Útil para verificar se as páxinas usan unha determinada propiedade de páxina.",
        "apihelp-query+pageprops-example-simple": "Obter as propiedades para as páxinas <kbd>Main Page</kbd> e <kbd>MediaWiki</kbd>",
-       "apihelp-query+pageswithprop-description": "Mostrar a lista de páxinas que empregan unha propiedade determinada.",
        "apihelp-query+pageswithprop-param-propname": "Propiedade de páxina para a que enumerar as páxinas  (<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd> devolve os nomes das propiedades de páxina en uso).",
        "apihelp-query+pageswithprop-param-prop": "Que información incluír:",
        "apihelp-query+pageswithprop-paramvalue-prop-ids": "Engade o ID da páxina.",
        "apihelp-query+pageswithprop-param-dir": "En que dirección ordenar.",
        "apihelp-query+pageswithprop-example-simple": "Lista as dez primeiras páxinas que usan  <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+pageswithprop-example-generator": "Obter información adicional das dez primeiras páxinas que usan <code>_&#95;NOTOC_&#95;</code>.",
-       "apihelp-query+prefixsearch-description": "Facer unha busca de prefixo nos títulos das páxinas.\nA pesar das semellanzas nos nomes, este módulo non pretende ser equivalente a [[Special:PrefixIndex]]; para iso consulte <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> co parámetro <kbd>apprefix</kbd>. O propósito deste módulo é semellante ó de <kbd>[[Special:ApiHelp/opensearch|action=opensearch]]</kbd>: para coller a entrada do usuario e proporcionar mellores os títulos que mellor se lle adapten. Dependendo do motor de buscas do servidor, isto pode incluír corrección de erros, evitar as redireccións, ou outras heurísticas.",
        "apihelp-query+prefixsearch-param-search": "Buscar texto.",
        "apihelp-query+prefixsearch-param-namespace": "Espazo de nomes no que buscar.",
        "apihelp-query+prefixsearch-param-limit": "Número máximo de resultados a visualizar.",
        "apihelp-query+prefixsearch-param-offset": "Número de resultados a saltar.",
        "apihelp-query+prefixsearch-example-simple": "Buscar títulos de páxina que comecen con <kbd>meaning</kbd>.",
        "apihelp-query+prefixsearch-param-profile": "Buscar o perfil a usar.",
-       "apihelp-query+protectedtitles-description": "Listar todos os títulos protexidos en creación.",
        "apihelp-query+protectedtitles-param-namespace": "Só listar títulos nestes espazos de nomes.",
        "apihelp-query+protectedtitles-param-level": "Só listar títulos con estos niveis de protección.",
        "apihelp-query+protectedtitles-param-limit": "Número total de páxinas a devolver.",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "Engade o nivel de protección.",
        "apihelp-query+protectedtitles-example-simple": "Listar títulos protexidos",
        "apihelp-query+protectedtitles-example-generator": "Atopar ligazóns ós títulos protexidos no espazo de nomes principal",
-       "apihelp-query+querypage-description": "Obtén unha lista proporcionada por unha páxina especial basada en QueryPage.",
        "apihelp-query+querypage-param-page": "Nome da páxina especial. Teña en conta que diferencia entre maiúsculas e minúsculas.",
        "apihelp-query+querypage-param-limit": "Número de resultados a visualizar.",
        "apihelp-query+querypage-example-ancientpages": "Resultados devoltos de [[Special:Ancientpages]].",
-       "apihelp-query+random-description": "Obter un conxunto de páxinas aleatorias.\n\nAs páxinas están listadas nunha secuencia fixa, só o punto de comezo é aleatorio. Isto significa que se, por exemplo, a <samp>Main Page</samp> é a primeira páxina aleatoria da lista, a <samp>Lista de monos ficticios</samp> será <em>sempre</em> a segunda, <samp>Lista de xente en selos de Vanuatu</samp> será a terceira, etc.",
        "apihelp-query+random-param-namespace": "Devolver páxinas só neste espazo de nomes.",
        "apihelp-query+random-param-limit": "Limitar cantas páxinas aleatorias se van devolver.",
        "apihelp-query+random-param-redirect": "No canto use <kbd>$1filterredir=redirects</kbd>.",
        "apihelp-query+random-param-filterredir": "Como filtrar para redireccións.",
        "apihelp-query+random-example-simple": "Obter dúas páxinas aleatorias do espazo de nomes principal.",
        "apihelp-query+random-example-generator": "Obter a información da páxina de dúas páxinas aleatorias do espazo de nomes principal.",
-       "apihelp-query+recentchanges-description": "Enumerar cambios recentes.",
        "apihelp-query+recentchanges-param-start": "Selo de tempo para comezar a enumeración.",
        "apihelp-query+recentchanges-param-end": "Selo de tempo para rematar a enumeración.",
        "apihelp-query+recentchanges-param-namespace": "Filtrar os cambios a só eses espazos de nomes.",
        "apihelp-query+recentchanges-param-generaterevisions": "Cando é usado como xerador, xera identificadore de revisión no canto de títulos. As entradas de modificacións recentes sen identificadores de revisión asociados (p. ex. a maioría das entradas de rexistro) non xerarán nada.",
        "apihelp-query+recentchanges-example-simple": "Listar cambios recentes.",
        "apihelp-query+recentchanges-example-generator": "Obter a información de páxina sobre cambios recentes sen vixiancia.",
-       "apihelp-query+redirects-description": "Devolve todas as redireccións das páxinas indicadas.",
        "apihelp-query+redirects-param-prop": "Que propiedades recuperar:",
        "apihelp-query+redirects-paramvalue-prop-pageid": "ID de páxina de cada redirección.",
        "apihelp-query+redirects-paramvalue-prop-title": "Título de cada redirección.",
        "apihelp-query+redirects-param-show": "Só mostrar elementos que cumpran estos criterios:\n;fragment:Só mostrar redireccións que teñan un fragmento.\n;!fragment:Só mostrar redireccións que non teñan un fragmento.",
        "apihelp-query+redirects-example-simple": "Obter unha lista de redireccións á [[Main Page]]",
        "apihelp-query+redirects-example-generator": "Obter información sobre tódalas redireccións á [[Main Page]]",
-       "apihelp-query+revisions-description": "Obter información da modificación.\n\nPode usarse de varias formas:\n#Obter datos sobre un conxunto de páxinas (última modificación), fixando os títulos ou os IDs das páxinas.\n#Obter as modificacións da páxina indicada, usando os títulos ou os IDs de páxinas con comezar, rematar ou límite.\n#Obter os datos sobre un conxunto de modificacións fixando os seus IDs cos seus IDs de modificación.",
        "apihelp-query+revisions-paraminfo-singlepageonly": "Só pode usarse cunha única páxina (mode #2).",
        "apihelp-query+revisions-param-startid": "Desde que ID de revisión comezar a enumeración.",
        "apihelp-query+revisions-param-endid": "Rematar a enumeración de revisión neste ID de revisión.",
        "apihelp-query+revisions+base-param-difftotext": "Texto co que comparar cada revisión. Só compara un número limitado de revisións. Ignora <var>$1diffto</var>.  Se <var>$1section</var> ten valor, só se comparará co texto esa sección.",
        "apihelp-query+revisions+base-param-difftotextpst": "Facer unha transformación  sobre o texto antes do gardado e antes de comparalo. Só válidoo cando se usa con <var>$1difftotext</var>.",
        "apihelp-query+revisions+base-param-contentformat": "Formato de serialización usado por <var>$1difftotext</var> e esperado para a saída do contido.",
-       "apihelp-query+search-description": "Facer unha busca por texto completo.",
        "apihelp-query+search-param-search": "Buscar os títulos de páxina ou contido que coincidan con este valor. Pode usar a cadea de busca para invocar funcións especiais de busca, dependendo do motor de busca que teña a wiki.",
        "apihelp-query+search-param-namespace": "Buscar só nestes espazos de nomes.",
        "apihelp-query+search-param-what": "Que tipo de busca lanzar.",
        "apihelp-query+search-example-simple": "Buscar <kbd>meaning</kbd>.",
        "apihelp-query+search-example-text": "Buscar texto por <kbd>significado</kbd>.",
        "apihelp-query+search-example-generator": "Obter información da páxina sobre as páxinas devoltas por unha busca por <kbd>meaning</kbd>.",
-       "apihelp-query+siteinfo-description": "Devolver información xeral sobre o sitio.",
        "apihelp-query+siteinfo-param-prop": "Que información obter:",
        "apihelp-query+siteinfo-paramvalue-prop-general": "Información xeral do sistema.",
        "apihelp-query+siteinfo-paramvalue-prop-namespaces": "Lista dos espazos de nomes rexistrados e os seus nomes canónicos.",
        "apihelp-query+siteinfo-example-simple": "Obter información do sitio.",
        "apihelp-query+siteinfo-example-interwiki": "Obter unha lista de prefixos interwiki locais.",
        "apihelp-query+siteinfo-example-replag": "Revisar o retardo de replicación actual.",
-       "apihelp-query+stashimageinfo-description": "Devolve a información dos ficheiros almacenados.",
        "apihelp-query+stashimageinfo-param-filekey": "Clave que identifica unha subida precedente e que foi almacenada temporalmente.",
        "apihelp-query+stashimageinfo-param-sessionkey": "Alias para $1filekey, para compatibilidade con versións antigas.",
        "apihelp-query+stashimageinfo-example-simple": "Devolve a información dun ficheiro almacenado.",
        "apihelp-query+stashimageinfo-example-params": "Devolve as miniaturas de dous ficheiros almacenados.",
-       "apihelp-query+tags-description": "Lista de marcas de cambios.",
        "apihelp-query+tags-param-limit": "Máximo número de etiquetas a listar.",
        "apihelp-query+tags-param-prop": "Que propiedades recuperar:",
        "apihelp-query+tags-paramvalue-prop-name": "Engade o nome da etiqueta.",
        "apihelp-query+tags-paramvalue-prop-source": "Obtén as fontes da etiqueta, que poden incluír <samp>extension</samp> para etiquetas definidas en extensión e <samp>manual</samp> para etiquetas que poden ser aplicadas manualmente polos usuarios.",
        "apihelp-query+tags-paramvalue-prop-active": "Se a etiqueta aínda está a ser usada.",
        "apihelp-query+tags-example-simple": "Listar as marcas dispoñibles",
-       "apihelp-query+templates-description": "Devolve todas as páxinas incluídas na páxina indicada.",
        "apihelp-query+templates-param-namespace": "Mostrar os modelos só nestes espazos de nomes.",
        "apihelp-query+templates-param-limit": "Número de modelos a devolver.",
        "apihelp-query+templates-param-templates": "Listar só eses modelos. Útil para verificar se unha páxina concreta ten un modelo determinado.",
        "apihelp-query+templates-example-simple": "Coller os modelos usado na <kbd>Páxina Principal</kbd>.",
        "apihelp-query+templates-example-generator": "Obter información sobre os modelos usados na <kbd>Páxina Principal</kbd>.",
        "apihelp-query+templates-example-namespaces": "Obter páxinas nos espazos de nomes {{ns:user}} e {{ns:template}} que se transclúen na <kbd>Páxina Principal</kbd>.",
-       "apihelp-query+tokens-description": "Recupera os identificadores das accións de modificación de datos.",
        "apihelp-query+tokens-param-type": "Tipos de identificadores a consultar.",
        "apihelp-query+tokens-example-simple": "Recuperar un identificador csrf (por defecto).",
        "apihelp-query+tokens-example-types": "Recuperar un identificador vixiancia e un de patrulla.",
-       "apihelp-query+transcludedin-description": "Atopar todas as páxinas que inclúen ás páxinas indicadas.",
        "apihelp-query+transcludedin-param-prop": "Que propiedades obter:",
        "apihelp-query+transcludedin-paramvalue-prop-pageid": "ID de páxina de cada páxina.",
        "apihelp-query+transcludedin-paramvalue-prop-title": "Título de cada páxina.",
        "apihelp-query+transcludedin-param-show": "Mostrar só elementos que cumpren estes criterios:\n;redirect:Só mostra redireccións.\n;!redirect:Só mostra as que non son redireccións.",
        "apihelp-query+transcludedin-example-simple": "Obter unha lista de páxinas que inclúen a <kbd>Main Page</kbd>.",
        "apihelp-query+transcludedin-example-generator": "Obter información sobre as páxinas que inclúen <kbd>Main Page</kbd>.",
-       "apihelp-query+usercontribs-description": "Mostrar tódalas edicións dun usuario.",
        "apihelp-query+usercontribs-param-limit": "Máximo número de contribucións a mostar.",
        "apihelp-query+usercontribs-param-start": "Selo de tempo de comezo ó que volver.",
        "apihelp-query+usercontribs-param-end": "Selo de tempo de fin ó que volver.",
        "apihelp-query+usercontribs-param-toponly": "Listar só cambios que son a última revisión.",
        "apihelp-query+usercontribs-example-user": "Mostrar as contribucións do usuario <kbd>Exemplo</kbd>.",
        "apihelp-query+usercontribs-example-ipprefix": "Mostrar contribucións de tódalas direccións IP que comezan por <kbd>192.0.2.</kbd>.",
-       "apihelp-query+userinfo-description": "Obter información sobre o usuario actual.",
        "apihelp-query+userinfo-param-prop": "Que pezas de información incluír:",
        "apihelp-query+userinfo-paramvalue-prop-blockinfo": "Marca se o usuario actual está bloqueado, por que, e por que razón.",
        "apihelp-query+userinfo-paramvalue-prop-hasmsg": "Engade unha etiqueta <samp>messages</samp> (mensaxe) se o usuario actual ten mensaxes pendentes.",
        "apihelp-query+userinfo-param-attachedwiki": "Con <kbd>$1prop=centralids</kbd>, \nindica que o usuario está acoplado á wiki identificada por este identificador.",
        "apihelp-query+userinfo-example-simple": "Obter información sobre o usuario actual.",
        "apihelp-query+userinfo-example-data": "Obter información adicional sobre o usuario actual.",
-       "apihelp-query+users-description": "Obter información sobre unha lista de usuarios.",
        "apihelp-query+users-param-prop": "Que información incluír:",
        "apihelp-query+users-paramvalue-prop-blockinfo": "Etiquetas se o usuario está bloqueado, por quen, e por que razón.",
        "apihelp-query+users-paramvalue-prop-groups": "Lista todos os grupos ós que pertence cada usuario.",
        "apihelp-query+users-param-userids": "Unha lista de identificadores de usuarios dos que obter información.",
        "apihelp-query+users-param-token": "Usar <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> no canto diso.",
        "apihelp-query+users-example-simple": "Mostar información para o usuario <kbd>Example</kbd>.",
-       "apihelp-query+watchlist-description": "Ver os cambios recentes das páxinas na lista de vixiancia do usuario actual.",
        "apihelp-query+watchlist-param-allrev": "Incluír múltiples revisións da mesma páxina dentro do intervalo de tempo indicado.",
        "apihelp-query+watchlist-param-start": "Selo de tempo para comezar a enumeración",
        "apihelp-query+watchlist-param-end": "Selo de tempo para rematar a enumeración.",
        "apihelp-query+watchlist-example-generator": "Buscar a información de páxina das páxinas cambiadas recentemente da lista de vixiancia do usuario actual.",
        "apihelp-query+watchlist-example-generator-rev": "Buscar a información da revisión dos cambios recentes de páxinas na lista de vixiancia do usuario actual.",
        "apihelp-query+watchlist-example-wlowner": "Listar a última revisión das páxinas cambiadas recentemente da lista de vixiancia do usuario <kbd>Example</kbd>.",
-       "apihelp-query+watchlistraw-description": "Obter todas as páxinas da lista de vixiancia do usuario actual.",
        "apihelp-query+watchlistraw-param-namespace": "Só listar páxinas nestes espazos de nomes.",
        "apihelp-query+watchlistraw-param-limit": "Cantos resultados totais mostrar por petición.",
        "apihelp-query+watchlistraw-param-prop": "Que propiedades adicionais obter:",
        "apihelp-query+watchlistraw-param-totitle": "Título (co prefixo de espazo de nomes) no que rematar de enumerar.",
        "apihelp-query+watchlistraw-example-simple": "Listar páxinas na lista de vixiancia do usuario actual.",
        "apihelp-query+watchlistraw-example-generator": "Buscar a información de páxina das páxinas da lista de vixiancia do usuario actual.",
-       "apihelp-removeauthenticationdata-description": "Elimina os datos de autenticación do usuario actual.",
        "apihelp-removeauthenticationdata-example-simple": "Intenta eliminar os datos de usuario actual para <kbd>FooAuthenticationRequest</kbd>.",
-       "apihelp-resetpassword-description": "Envía un correo de inicialización de contrasinal a un usuario.",
-       "apihelp-resetpassword-description-noroutes": "Non están dispoñibles as rutas de reinicio de contrasinal \n\nActive as rutas en <var>[[mw:Special:MyLanguage/Manual:$wgPasswordResetRoutes|$wgPasswordResetRoutes]]</var> para usar este módulo.",
        "apihelp-resetpassword-param-user": "Usuario sendo reinicializado.",
        "apihelp-resetpassword-param-email": "Está reinicializándose o enderezo de correo electrónico do usuario.",
        "apihelp-resetpassword-example-user": "Enviar un correo de reinicialización de contrasinal ó usuario <kbd>Exemplo</kbd>.",
        "apihelp-resetpassword-example-email": "Enviar un correo de reinicialización de contrasinal a todos os usuarios con enderezo de correo electrónico <kbd>usario@exemplo.com</kbd>.",
-       "apihelp-revisiondelete-description": "Borrar e restaurar revisións.",
        "apihelp-revisiondelete-param-type": "Tipo de borrado de revisión a ser tratada.",
        "apihelp-revisiondelete-param-target": "Título de páxina para o borrado da revisión, se requerido para o tipo.",
        "apihelp-revisiondelete-param-ids": "Identificadores para as revisións a ser  borradas.",
        "apihelp-revisiondelete-param-tags": "Etiquetas a aplicar á entrada no rexistro de borrados.",
        "apihelp-revisiondelete-example-revision": "Ocultar contido para revisión <kbd>12345</kbd> na <kbd>Páxina Principal</kbd>.",
        "apihelp-revisiondelete-example-log": "Ocultar todos os datos da entrada de rexistro <kbd>67890</kbd> coa razón <kbd>BLP violation</kbd>.",
-       "apihelp-rollback-description": "Desfacer a última modificación da páxina.\n\nSe o último usuario que modificou a páxina fixo varias modificacións nunha fila, desfaranse todas.",
        "apihelp-rollback-param-title": "Título da páxina a desfacer. Non pode usarse xunto con <var>$1pageid</var>.",
        "apihelp-rollback-param-pageid": "ID da páxina a desfacer. Non pode usarse xunto con <var>$1title</var>.",
        "apihelp-rollback-param-tags": "Etiquetas a aplicar á reversión.",
        "apihelp-rollback-param-watchlist": "Engadir ou eliminar sen condicións a páxina da lista de vixiancia do usuario actual, use as preferencias ou non cambie a vixiancia.",
        "apihelp-rollback-example-simple": "Desfacer as últimas edicións á <kbd>Páxina Principal</kbd> do usuario <kbd>Exemplo</kbd>.",
        "apihelp-rollback-example-summary": "Desfacer as últimas edicións á páxina <kbd>Main Page</kbd> polo usuario da dirección IP <kbd>192.0.2.5</kbd> co resumo de edición <kbd>Revertindo vandalismo</kbd>, marcar esas edicións e a reversión como edicións de bot.",
-       "apihelp-rsd-description": "Exportar un esquema RSD (Really Simple Discovery, Descubrimento Moi Simple).",
        "apihelp-rsd-example-simple": "Exportar o esquema RSD.",
-       "apihelp-setnotificationtimestamp-description": "Actualizar a data e hora da notificación das páxinas vixiadas.\n\nIsto afecta ao realce das páxinas modificadas na lista de vixiancia e no historial, e ao envío de correos cando a preferencia \"{{int:tog-enotifwatchlistpages}}\" está activada.",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "Traballar en tódalas páxinas vixiadas.",
        "apihelp-setnotificationtimestamp-param-timestamp": "Selo de tempo ó que fixar a notificación.",
        "apihelp-setnotificationtimestamp-param-torevid": "Modificación á que fixar o selo de tempo de modificación (só unha páxina).",
        "apihelp-setnotificationtimestamp-example-page": "Restaurar o estado de notificación para a <kbd>Páxina Principal</kbd>.",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "Fixar o selo de tempo de notificación para a <kbd>Main page</kbd> de forma que todas as edicións dende o 1 se xaneiro de 2012 queden sen revisar.",
        "apihelp-setnotificationtimestamp-example-allpages": "Restaurar o estado de notificación para as páxinas no espazo de nomes de <kbd>{{ns:user}}</kbd>.",
-       "apihelp-setpagelanguage-description": "Cambiar a lingua dunha páxina.",
-       "apihelp-setpagelanguage-description-disabled": "Neste wiki non se permite modificar a lingua das páxinas.\n\nActive <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> para utilizar esta acción.",
        "apihelp-setpagelanguage-param-title": "Título da páxina cuxa lingua quere cambiar. Non se pode usar xunto con <var>$1pageid</var>.",
        "apihelp-setpagelanguage-param-pageid": "Identificador da páxina cuxa lingua quere cambiar. Non se pode usar xunto con <var>$1title</var>.",
        "apihelp-setpagelanguage-param-lang": "Código da lingua á que se quere cambiar a páxina. Use <kbd>default</kbd> para restablecer a páxina á lingua por defecto do contido da wiki.",
        "apihelp-setpagelanguage-param-tags": "Cambiar as etiquetas a aplicar á entrada de rexistro resultante desta acción.",
        "apihelp-setpagelanguage-example-language": "Cambiar a lingua de <kbd>Main Page</kbd> ó éuscaro.",
        "apihelp-setpagelanguage-example-default": "Cambiar a lingua da páxina con identificador 123 á lingua predeterminada para o contido da wiki.",
-       "apihelp-stashedit-description": "Preparar unha edición na caché compartida.\n\nEstá previsto que sexa usado vía AJAX dende o formulario de edición para mellorar o rendemento de gardado da páxina.",
        "apihelp-stashedit-param-title": "Título da páxina que se está a editar.",
        "apihelp-stashedit-param-section": "Número de selección. O <kbd>0</kbd> é para a sección superior, <kbd>novo</kbd> para unha sección nova.",
        "apihelp-stashedit-param-sectiontitle": "Título para unha nova sección.",
        "apihelp-stashedit-param-contentformat": "Formato de serialización de contido utilizado para o texto de entrada.",
        "apihelp-stashedit-param-baserevid": "Identificador da revisión da revisión de base.",
        "apihelp-stashedit-param-summary": "Resumo do cambio.",
-       "apihelp-tag-description": "Engadir ou eliminar etiquetas de cambio de revisións individuais ou entradas de rexistro.",
        "apihelp-tag-param-rcid": "Identificadores de un ou máis cambios recentes nos que engadir ou eliminar a etiqueta.",
        "apihelp-tag-param-revid": "Identificadores de unha ou máis revisións nas que engadir ou eliminar a etiqueta.",
        "apihelp-tag-param-logid": "Identificadores de unha ou máis entradas do rexistro nas que engadir ou eliminar a etiqueta.",
        "apihelp-tag-param-tags": "Etiquetas a aplicar á entrada de rexistro que será creada como resultado desta acción.",
        "apihelp-tag-example-rev": "Engadir a etiqueta <kbd>vandalismo</kbd> á revisión con identificador 123 sen indicar un motivo",
        "apihelp-tag-example-log": "Eliminar a etiqueta <kbd>publicidade</kbd> da entrada do rexistro con identificador 123 co motivo <kbd>aplicada incorrectamente</kbd>",
-       "apihelp-tokens-description": "Obter os identificadores para accións de modificación de datos.\n\nEste módulo está obsoleto e foi reemprazado por [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
        "apihelp-tokens-param-type": "Tipos de identificadores a consultar.",
        "apihelp-tokens-example-edit": "Recuperar un identificador de modificación (por defecto).",
        "apihelp-tokens-example-emailmove": "Recuperar un identificador de correo e un identificador de movemento.",
-       "apihelp-unblock-description": "Desbloquear un usuario.",
        "apihelp-unblock-param-id": "ID do bloque a desbloquear (obtido de <kbd>list=blocks</kbd>). Non pode usarse xunto con <var>$1user</var> ou <var>$1userid</var>.",
        "apihelp-unblock-param-user": "Nome de usuario, enderezo IP ou rango de enderezos IP a desbloquear. Non pode usarse xunto con <var>$1id</var> ou <var>$1userid</var>.",
        "apihelp-unblock-param-userid": "ID de usuario a desbloquear. Non pode usarse xunto con <var>$1id</var> ou <var>$1user</var>.",
        "apihelp-unblock-param-tags": "Cambiar as etiquetas a aplicar na entrada do rexistro de bloqueo.",
        "apihelp-unblock-example-id": "Desbloquear bloqueo ID #<kbd>105</kbd>.",
        "apihelp-unblock-example-user": "Desbloquear usuario <kbd>Bob</kbd> con razón <kbd>Síntoo Bob</kbd>.",
-       "apihelp-undelete-description": "Restaurar modificacións dunha páxina borrada.\n\nUnha lista de modificacións borradas (incluíndo os seus selos de tempo) pode consultarse a través de [[Special:ApiHelp/query+deletedrevisions|prop=deletedrevisions]], e unha lista de IDs de ficheiros borrados pode consultarse a través de [[Special:ApiHelp/query+filearchive|list=filearchive]].",
        "apihelp-undelete-param-title": "Título da páxina a restaurar.",
        "apihelp-undelete-param-reason": "Razón para restaurar.",
        "apihelp-undelete-param-tags": "Cambiar as etiquetas a aplicar na entrada do rexistro de borrado.",
        "apihelp-undelete-param-watchlist": "Engadir ou eliminar a páxina da lista de vixiancia do usuario actual sen condicións, use as preferencias ou non cambie a vixiancia.",
        "apihelp-undelete-example-page": "Restaurar a <kbd>Páxina Principal</kbd>.",
        "apihelp-undelete-example-revisions": "Restaurar dúas revisións de <kbd>Main Page</kbd>.",
-       "apihelp-unlinkaccount-description": "Elimina unha conta vinculada do usuario actual.",
        "apihelp-unlinkaccount-example-simple": "Tentar eliminar a ligazón do usuario actual co provedor asociado con <kbd>FooAuthenticationRequest</kbd>.",
-       "apihelp-upload-description": "Subir un ficheiro, ou obter o estado de subas pedentes.\n\nHai varios métodos dispoñibles:\n*Subir o contido do ficheiro directamente, usando o parámetro <var>$1file</var>.\n*Subir o ficheiro por partes, usando os parámetros <var>$1filesize</var>, <var>$1chunk</var>, e <var>$1offset</var>.\n*Mandar ó servidor MediaWiki que colla un ficheiro dunha URL, usando o parámetro <var>$1url</var>.\n*Completar unha suba anterior que fallou a causa dos avisos, usando o parámetro <var>$1filekey</var>. \nTeña en conta que o HTTP POST debe facerse como suba de ficheiro (p.ex. usando <code>multipart/form-data</code>)cando se envie o <var>$1file</var>.",
        "apihelp-upload-param-filename": "Nome de ficheiro obxectivo.",
        "apihelp-upload-param-comment": "Subir comentario. Tamén usado como texto da páxina inicial para ficheiros novos se non se especifica <var>$1text</var>.",
        "apihelp-upload-param-tags": "Cambiar etiquetas a aplicar á entrada do rexistro de subas e á revisión de páxina de ficheiro.",
        "apihelp-upload-param-checkstatus": "Só buscar o estado da subida da clave de ficheiro indicada.",
        "apihelp-upload-example-url": "Carga dunha URL",
        "apihelp-upload-example-filekey": "Completar carga que fallou debido a avisos",
-       "apihelp-userrights-description": "Cambiar a pertencia dun usuario a un grupo.",
        "apihelp-userrights-param-user": "Nome de usuario.",
        "apihelp-userrights-param-userid": "ID de usuario.",
        "apihelp-userrights-param-add": "Engadir o usuario a estes grupos, ou se xa é membro, actualizar a caducidade da súa afiliación.",
        "apihelp-userrights-example-user": "Engadir o usuario <kbd>FooBot</kbd> ó grupo <kbd>bot</kbd>, e eliminar dos grupos <kbd>sysop</kbd> e <kbd>bureaucrat</kbd>.",
        "apihelp-userrights-example-userid": "Engadir ó usuario con ID <kbd>123</kbd> ó grupo <kbd>bot</kbd>, e borralo dos grupos <kbd>sysop</kbd> e <kbd>burócrata</kbd>.",
        "apihelp-userrights-example-expiry": "Engadir o usuario <kbd>SometimeSysop</kbd> ó grupo <kbd>sysop</kbd> por 1 mes.",
-       "apihelp-validatepassword-description": "Valida un contrasinal contra as políticas de contrasinais da wiki.\n\nA validez é <samp>Good</samp> se o contrasinal é aceptable, <samp>Change</samp> se o contrasinal pode usarse para iniciar sesión pero debe cambiarse ou <samp>Invalid</samp> se o contrasinal non se pode usar.",
        "apihelp-validatepassword-param-password": "Contrasinal a validar.",
        "apihelp-validatepassword-param-user": "Nome de usuario, para probas de creación de contas. O usuario nomeado non debe existir.",
        "apihelp-validatepassword-param-email": "Enderezo de correo electrónico, para probas de creación de contas.",
        "apihelp-validatepassword-param-realname": "Nome real, para probas de creación de contas.",
        "apihelp-validatepassword-example-1": "Validar o contrasinal <kbd>foobar</kbd> para o usuario actual.",
        "apihelp-validatepassword-example-2": "Validar o contrasinal <kbd>qwerty</kbd> para a creación do usuario <kbd>Example</kbd>.",
-       "apihelp-watch-description": "Engadir ou borrar páxinas da lista de vixiancia do usuario actual.",
        "apihelp-watch-param-title": "Páxina a vixiar/deixar de vixiar. Usar no canto <var>$1titles</var>.",
        "apihelp-watch-param-unwatch": "Se está definido, a páxina deixará de estar vixiada en vez de vixiada.",
        "apihelp-watch-example-watch": "Vixiar a páxina <kbd>Main Page</kbd>.",
        "apihelp-watch-example-generator": "Vixiar as primeiras páxinas no espazo de nomes principal",
        "apihelp-format-example-generic": "Devolver o resultado da consulta no formato $1.",
        "apihelp-format-param-wrappedhtml": "Devolver o HTML formatado e os módulos ResourceLoader asociados como un obxecto JSON.",
-       "apihelp-json-description": "Datos de saída en formato JSON.",
        "apihelp-json-param-callback": "Se está especificado, inclúe a saída na chamada da función indicada. Para maior seguridade, todos os datos específicos do usuario serán restrinxidos.",
        "apihelp-json-param-utf8": "Se está especificado, codifica a maioría (pero non todos) dos caracteres ASCII como UTF-8 no canto de reemprazalos con secuencias de escape hexadecimais. Por defecto cando <var>formatversion</var> non é <kbd>1</kbd>.",
        "apihelp-json-param-ascii": "Se está indicado, codifica todos os caracteres que non sexan ASCII usando secuencias de escape hexadecimais. Por defecto cando <var>formatversion</var> é <kbd>1</kbd>.",
        "apihelp-json-param-formatversion": "Formato de saída:\n;1:Formato compatible con versións anteriores(booleanos estilo XML,claves <samp>*</samp> para nodos, etc.).\n;2:Formato moderno experimental. Os detalles poden cambiar!\n;latest:Usa o último formato (actualmente kbd>2</kbd>), pode cambiar sen aviso previo.",
-       "apihelp-jsonfm-description": "Datos de saída en formato JSON(impresión en HTML).",
-       "apihelp-none-description": "Ningunha saída.",
-       "apihelp-php-description": "Datos de saída en formato serializado de PHP.",
        "apihelp-php-param-formatversion": "Formato de saída:\n;1:Formato compatible con versións anteriores(booleanos estilo XML,claves <samp>*</samp> para nodos, etc.).\n;2:Formato moderno experimental. Os detalles poden cambiar!\n;latest:Usa o último formato (actualmente kbd>2</kbd>), pode cambiar sen aviso previo.",
-       "apihelp-phpfm-description": "Datos de saída en formato serializado de PHP(impresión en HTML).",
-       "apihelp-rawfm-description": "Datos de saída, incluíndo os elementos de depuración, en formato JSON (impresión en HTML).",
-       "apihelp-xml-description": "Datos de saída en formato XML.",
        "apihelp-xml-param-xslt": "Se está indicado, engade o nome da páxina como unha folla de estilo XSL. O valor debe ser un título no espazo de nomes {{ns:MediaWiki}} rematando con <code>.xsl</code>.",
        "apihelp-xml-param-includexmlnamespace": "Se está indicado, engade un espazo de nomes XML.",
-       "apihelp-xmlfm-description": "Datos de saída en formato XML(impresión en HTML).",
        "api-format-title": "Resultado de API de MediaWiki",
        "api-format-prettyprint-header": "Esta é a representación HTML do formato $1. HTML é bó para depurar, pero non é axeitado para usar nunha aplicación.\n\nEspecifique o parámetro <var>format</var> para cambiar o formato de saída. Para ver a representación non-HTML do formato $1, fixe <kbd>format=$2</kbd>.\n\n\nRevise a [[mw:Special:MyLanguage/API|documentación completa]], ou a [[Special:ApiHelp/main|axuda da API]] para obter máis información.",
        "api-format-prettyprint-header-only-html": "Esta é unha representación HTML empregada para a depuración de erros, e non é axeitada para o uso de aplicacións.\n\nVexa a [[mw:Special:MyLanguage/API|documentación completa]], ou a [[Special:ApiHelp/main|axuda da API]] para máis información.",
        "api-format-prettyprint-status": "Esta resposta será devolta co estado de HTTP $1 $2.",
+       "api-login-fail-badsessionprovider": "Non é posible conectarse usando $1.",
        "api-pageset-param-titles": "Lista de títulos nos que traballar.",
        "api-pageset-param-pageids": "Lista de identificadores de páxina nos que traballar.",
        "api-pageset-param-revids": "Unha lista de IDs de modificacións sobre as que traballar.",
        "apierror-changeauth-norequest": "Erro ó crear a petición de modificación.",
        "apierror-chunk-too-small": "O tamaño mínimo dun segmento é de  $1 {{PLURAL:$1|byte|bytes}} para os segmentos non finais.",
        "apierror-cidrtoobroad": "Os rangos CIDR $1 maiores que /$2 non son aceptados.",
-       "apierror-compare-inputneeded": "É necesario un título, un ID de páxina ou un número de revisión para os parámetros <var>from</var> e <var>to</var>.",
        "apierror-contentserializationexception": "Erro de serialización do contidoː $1",
        "apierror-contenttoobig": "O contido que achegou excede o límite de tamaño dun artigo, que é de  {{PLURAL:$1|kilobyte|kilobytes}}.",
        "apierror-copyuploadbaddomain": "As subas por URL non están permitidas para este dominio.",
        "apierror-nosuchuserid": "Non hai ningún usuario con identificador $1.",
        "apierror-notarget": "Non indicou un destino válido para esta acción.",
        "apierror-notpatrollable": "A revisión r$1 non pode patrullarse por ser demasiado antiga.",
+       "apierror-nouploadmodule": "Non se definiu un módulo de carga.",
        "apierror-opensearch-json-warnings": "Non se poden representar os avisos en formato JSON de OpenSearch.",
        "apierror-pagecannotexist": "O espazo de nomes non permite as páxinas actuais.",
        "apierror-pagedeleted": "A páxina foi borrada dende que obtivo o selo de tempo.",
        "apierror-revdel-mutuallyexclusive": "Non se pode usar o mesmo campo en <var>hide</var> e <var>show</var>.",
        "apierror-revdel-needtarget": "É necesario un título obxectivo para este tipo RevDel.",
        "apierror-revdel-paramneeded": "Requírese polo menos un valor para <var>hide</var> e/ou <var>show</var>.",
+       "apierror-revisions-badid": "Non se atoparon modificacións para o parámetro <var>$1</var>.",
        "apierror-revisions-norevids": "O parámetro <var>revids</var> non se pode utilizar xunto coas opción de lista (<var>$1limit</var>, <var>$1startid</var>, <var>$1endid</var>, <kbd>$1dir=newer</kbd>, <var>$1user</var>, <var>$1excludeuser</var>, <var>$1start</var> e <var>$1end</var>).",
        "apierror-revisions-singlepage": "Utilizouse <var>titles</var>, <var>pageids</var> ou un xerador para proporcionar múltiples páxinas, pero os parámetros <var>$1limit</var>, <var>$1startid</var>, <var>$1endid</var>, <kbd>$1dir=newer</kbd>, <var>$1user</var>, <var>$1excludeuser</var>, <var>$1start</var> e <var>$1end</var> só poden utilizarse nunha soa páxina.",
        "apierror-revwrongpage": "r$1 non é unha revisión de $2.",
        "apierror-stashfailed-nosession": "Non hai sesión de suba por partes con esa clave.",
        "apierror-stashfilestorage": "Non se puido almacenar a suba na reservaː $1",
        "apierror-stashinvalidfile": "Ficheiro de reserva incorrecto.",
+       "apierror-stashnosuchfilekey": "A chave de ficheiro non existe: $1.",
        "apierror-stashpathinvalid": "Clave de ficheiro con formato incorrecto ou non válidaː $1.",
        "apierror-stashwrongowner": "Erro de propietarioː $1",
        "apierror-stashzerolength": "Ficheiro de lonxitude cero, non pode ser almacenado na reservaː $1.",
        "apiwarn-badurlparam": "Non se puido analizar <var>$1urlparam</var> para $2. Só se usará a anchura e a altura.",
        "apiwarn-badutf8": "O valor pasado para <var>$1</var> contén datos non válidos ou non normalizados. Os datos de texto deberían estar en formato Unicode válido, normalizado en NFC e sen caracteres de control C0 distintos de HT (\\t), LF (\\n) e CR (\\r).",
        "apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd> quedou obsoleto. No seu lugar, utilice <kbd>prop=deletedrevisions</kbd> ou <kbd>list=alldeletedrevisions</kbd>.",
+       "apiwarn-deprecation-expandtemplates-prop": "Como non se especificou ningún valor para o parámetro <var>prop</var>, utilizouse un formato herdado para a saída. Este formato está en desuso e, no futuro, o parámetro <var>prop</var> terá un valor predeterminado, de forma que sempre se utilizará o formato novo.",
        "apiwarn-deprecation-httpsexpected": "Utilizouse HTTP cando esperábase HTTPS.",
+       "apiwarn-deprecation-login-botpw": "O inicio de sesión coa conta principal mediante <kbd>action=login</kbd> está en desuso e pode deixar de funcionar sen aviso previo. Para proseguir o inicio de sesión mediante <kbd>action=login</kbd>, consulte [[Special:BotPasswords]]. Para proseguir o inicio de sesión coa conta principal de forma segura, consulte <kbd>action=clientlogin</kbd>.",
+       "apiwarn-deprecation-login-nobotpw": "O inicio de sesión coa conta principal mediante <kbd>action=login</kbd> está en desuso e pode deixar de funcionar sen aviso previo. Para iniciar sesión de forma segura, consulte <kbd>action=clientlogin</kbd>.",
        "apiwarn-deprecation-parameter": "O parámetro <var>$1</var> está obsoleto.",
+       "apiwarn-deprecation-parse-headitems": "<kbd>prop=headitems</kbd> está en desuso desde MediaWiki 1.28. Use <kbd>prop=headhtml</kbd> cando cree novos documentos HTML, ou <kbd>prop=módulos|jsconfigvars</kbd> cando actualice un documento no lado do cliente.",
        "apiwarn-deprecation-purge-get": "O uso de <kbd>action=purge</kbd> mediante GET está obsoleto. Use POST no seu lugar.",
        "apiwarn-deprecation-withreplacement": "<kbd>$1</kbd> está obsoleto. No seu lugar, utilice <kbd>$2</kbd>.",
+       "apiwarn-difftohidden": "Imposible facer un diff con r$1: o contido está oculto.",
        "apiwarn-invalidcategory": "\"$1\" non é unha categoría.",
        "apiwarn-invalidtitle": "\"$1\" non é un título válido.",
        "apiwarn-invalidxmlstylesheetext": "As follas de estilo deben ter a extensión <code>.xsl</code>.",
        "apiwarn-toomanyvalues": "Demasiados valores para o parámetro <var>$1</var>. O límite é $2.",
        "apiwarn-truncatedresult": "Truncouse este resultado porque doutra maneira sobrepasaría o límite de $1 bytes.",
        "apiwarn-unrecognizedvalues": "{{PLURAL:$3|Valor non recoñecido|Valores non recoñecidos}} para o parámetro <var>$1</var>: $2.",
+       "apiwarn-unsupportedarray": "O parámetro <var>$1</var> usa unha sintaxe PHP de matriz que non está soportada.",
        "apiwarn-validationfailed-badchars": "caracteres non válidos na clave (só se admiten os caracteres <code>a-z</code>, <code>A-Z</code>, <code>0-9</code>, <code>_</code> e <code>-</code>).",
        "apiwarn-validationfailed-badpref": "non é unha preferencia válida.",
        "apiwarn-validationfailed-cannotset": "non pode ser establecido por este módulo.",
        "apiwarn-wgDebugAPI": "<strong>Aviso de seguridade</strong>: <var>$wgDebugAPI</var> está habilitado.",
        "api-feed-error-title": "Erro ($1)",
        "api-usage-docref": "Consulte $1 para ver o uso da API.",
+       "api-usage-mailinglist-ref": "Subscribirse á lista de correo mediawiki-api-announce en &lt;https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce&gt;  para obter avisos de obsolescencia da API ou de modificacións importantes.",
        "api-exception-trace": "$1 en $2($3)\n$4",
        "api-credits-header": "Créditos",
        "api-credits": "Desenvolvedores da API:\n* Roan Kattouw (desenvolvedor principal, set. 2007-2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (creador e desenvolvedor principal, set. 2006-sep. 2007)\n* Brad Jorsch (desenvolvedor principal, 2013-actualidade)\n\nEnvía comentarios, suxerencias e preguntas a mediawiki-api@lists.wikimedia.org\nou informa dun erro en https://phabricator.wikimedia.org/."
index a948c85..d5bcbf2 100644 (file)
@@ -9,15 +9,15 @@
                        "ערן",
                        "LaG roiL",
                        "Elyashiv",
-                       "Umherirrender",
                        "Macofe",
                        "MojoMann",
                        "Mikey641",
                        "Esh77",
-                       "שמזן"
+                       "שמזן",
+                       "Or",
+                       "Umherirrender"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|תיעוד]]\n* [[mw:Special:MyLanguage/API:FAQ|שו\"ת]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api רשימת דיוור]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce הודעות על API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R באגים ובקשות]\n</div>\n<strong>מצב:</strong> כל האפשרויות שמוצגות בדף הזה אמורות לעבוד, אבל ה־API עדיין בפיתוח פעיל, ויכול להשתנות בכל זמן. עשו מינוי ל[https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ רשימת הדיוור mediawiki-api-announce] להודעות על עדכונים.\n\n<strong>בקשות שגויות:</strong> כשבקשות שגויות נשלחות ל־API, תישלח כותרת HTTP עם המפתח \"MediaWiki-API-Error\" ואז גם הערך של הכותרת וגם קוד השגיאה יוגדרו לאותו ערך. למידע נוסף ר' [[mw:Special:MyLanguage/API:Errors_and_warnings|API: שגיאות ואזהרות]].\n\n<strong>בדיקה:</strong> לבדיקה קלה יותר של בקשות ר' [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "איזו פעולה לבצע.",
        "apihelp-main-param-format": "תסדיר הפלט.",
        "apihelp-main-param-maxlag": "שיהוי מרבי יכול לשמש כשמדיה־ויקי מותקנת בצביר עם מסד נתונים משוכפל. כדי לחסוך בפעולות שגורמות יותר שיהוי בשכפול אתר, הפרמטר הזה יכול לגרום ללקוח להמתין עד ששיהוי השכפול יורד מתחת לערך שצוין. במקרה של שיהוי מוגזם, קוד השגיאה <samp>maxlag</samp> מוחזר עם הודעה כמו <samp>Waiting for $host: $lag seconds lagged</samp>.<br />ר' [[mw:Special:MyLanguage/Manual:Maxlag_parameter|מדריך למשתמש: פרמטר maxlag]] למידע נוסף.",
@@ -34,7 +34,6 @@
        "apihelp-main-param-errorformat": "תסדיר לשימוש בפלט טקסט אזהרות ושגיאות.\n; plaintext: קוד ויקי ללא תגי HTML ועם ישויות מוחלפות.\n; wikitext: קוד ויקי לא מפוענח.\n; html: קוד HTML.\n; raw: מפתח הודעה ופרמטרים.\n; none: ללא פלט טקסט, רק הודעות השגיאה.\n; bc: התסדיר ששימש לפני מדיה־ויקי 1.29. התעלמות מ־<var>errorlang</var> ו־ <var>errorsuselocal</var>.",
        "apihelp-main-param-errorlang": "השפה שתשמש לאזהרות לשגיאות <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> עם <kbd>siprop=languages</kbd> תחזיר רשימת קודי שפה, ואפשר גם לציין <kbd>content</kbd> כדי להשתמש בשפת התוכן של הוויקי הזה, או לציין <kbd>uselang</kbd> עם אותו הערך הפרמטר <var>uselang</var>.",
        "apihelp-main-param-errorsuselocal": "אם ניתן, הטקסטים של השגיאות ישתמשו בהודעות מותאמות מקומית ממרחב השם {{ns:MediaWiki}}.",
-       "apihelp-block-description": "חסימת משתמש.",
        "apihelp-block-param-user": "שם משתמש, כתובת IP, או טווח כתובות IP שברצונך לחסום. אי־אפשר להשתמש בזה יחד עם <var>$1userid</var>",
        "apihelp-block-param-userid": "מזהה המשתמש לחסימה. לא יכול לשמש יחד עם <var>$1user</var>.",
        "apihelp-block-param-expiry": "זמן תפוגה. יכול להיות יחסי (למשל <kbd>5 months</kbd> או <kbd>2 weeks</kbd>) או מוחלט (למשל <kbd>2014-09-18T12:34:56Z</kbd>). אם זה מוגדר ל־<kbd>infinite</kbd>‏, <kbd>indefinite</kbd>, או <kbd>never</kbd>, החסימה לא תפוג לעולם.",
        "apihelp-block-param-tags": "תגי שינוי שיחולו על העיול ביומן החסימה.",
        "apihelp-block-example-ip-simple": "חסימת כתובת ה־IP‏ <kbd>192.0.2.5</kbd> לשלושה ימים עם הסיבה <kbd>First strike</kbd>.",
        "apihelp-block-example-user-complex": "חסימת המשתמש <kbd>Vandal</kbd> ללא הגבלת זמן עם הסיבה <kbd>Vandalism</kbd>, ומניעת יצירת חשבונות חדשים ושליחת דוא\"ל.",
-       "apihelp-changeauthenticationdata-description": "שינוי נתוני אימות עבור המשתמש הנוכחי.",
        "apihelp-changeauthenticationdata-example-password": "ניסיון לשנות את הססמה של המשתמש הנוכחי ל־<kbd>ExamplePassword</kbd>.",
-       "apihelp-checktoken-description": "בדיקת התקינות של האסימון מ־<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-checktoken-param-type": "סוג האסימון שבבדיקה.",
        "apihelp-checktoken-param-token": "איזה אסימון לבדוק.",
        "apihelp-checktoken-param-maxtokenage": "הגיל המרבי המותר של האסימון, בשניות.",
        "apihelp-checktoken-example-simple": "בדיקת התקינות של אסימון <kbd>csrf</kbd>.",
-       "apihelp-clearhasmsg-description": "מנקה את דגל <code>hasmsg</code> עבור המשתמש הנוכחי.",
        "apihelp-clearhasmsg-example-1": "לנקות את דגל <code>hasmsg</code> עבור המשתמש הנוכחי.",
-       "apihelp-clientlogin-description": "כניסה לוויקי באמצעות זרימה הידודית.",
        "apihelp-clientlogin-example-login": "תחילת תהליך כניסה לוויקי בתור משתמש <kbd>Example</kbd> עם הססמה <kbd>ExamplePassword</kbd>.",
        "apihelp-clientlogin-example-login2": "המשך כניסה אחרי תשובת <samp>UI</samp> לאימות דו־גורמי, עם <var>OATHToken</var> של <kbd>987654</kbd>.",
-       "apihelp-compare-description": "קבלת ההבדל בין 2 דפים.\n\nיש להעביר מספר גרסה, כותרת דף או מזהה דף גם ל־\"from\" וגם ל־\"to\".",
        "apihelp-compare-param-fromtitle": "כותרת ראשונה להשוואה.",
        "apihelp-compare-param-fromid": "מס׳ זיהוי של העמוד הראשון להשוואה.",
        "apihelp-compare-param-fromrev": "גרסה ראשונה להשוואה.",
+       "apihelp-compare-param-fromtext": "להשתמש בטקסט הזה במקום תוכן הגרסה שהוגדרה על־ידי <var dir=\"ltr\">fromtitle</var>, <var dir=\"ltr\">fromid</var> או <var dir=\"ltr\">fromrev</var>.",
+       "apihelp-compare-param-frompst": "לעשות התמרה לפני שמירה ב־<var>fromtext</var>.",
+       "apihelp-compare-param-fromcontentmodel": "מודל התוכן של <var>fromtext</var>. אם זה לא סופק, ייעשה ניחוש על סמך פרמטרים אחרים.",
+       "apihelp-compare-param-fromcontentformat": "תסדיר הסדרת תוכן של <var>fromtext</var>.",
        "apihelp-compare-param-totitle": "כותרת שנייה להשוואה.",
        "apihelp-compare-param-toid": "מס׳ מזהה של העמוד השני להשוואה.",
        "apihelp-compare-param-torev": "גרסה שנייה להשוואה.",
+       "apihelp-compare-param-torelative": "להשתמש בגרסה יחסית לגרסה שהוסקה מ<var dir=\"ltr\">fromtitle</var>, <var dir=\"ltr\">fromid</var> או <var dir=\"ltr\">fromrev</var>. לכל אפשריות ה־\"to\" האחרות לא תהיה השפעה.",
+       "apihelp-compare-param-totext": "להשתמש בטקסט הזה במקום התוכן של הגרסה שהוגדר ב־<var dir=\"ltr\">totitle</var>, <var dir=\"ltr\">toid</var> or <var dir=\"ltr\">torev</var>.",
+       "apihelp-compare-param-topst": "לעשות התמרה לפני שמירה ב־<var>totext</var>.",
+       "apihelp-compare-param-tocontentmodel": "מודל התוכן של <var>totext</var>. אם זה לא סופק, ייעשה ניחוש על סמך פרמטרים אחרים.",
+       "apihelp-compare-param-tocontentformat": "תסדיר הסדרת תוכן של <var>fromtext</var>.",
+       "apihelp-compare-param-prop": "אילו פריטי מידע לקבל.",
+       "apihelp-compare-paramvalue-prop-diff": "ה־HTML של ההשוואה.",
+       "apihelp-compare-paramvalue-prop-diffsize": "גודל ה־HTML של ההשוואה, בבתים.",
+       "apihelp-compare-paramvalue-prop-rel": "מזהי הגרסאות של הגרסאות לפני \"from\" ואחרי \"to\", אם יש כאלה.",
+       "apihelp-compare-paramvalue-prop-ids": "מזהי הדף והגרסה של גרסאות ה־\"from\" וה־\"to\".",
+       "apihelp-compare-paramvalue-prop-title": "כותרות הדפים של גרסאות ה־\"from\" וה־\"to\".",
+       "apihelp-compare-paramvalue-prop-user": "השם והמזהה של המשתמש של גרסאות ה־\"from\" וה־\"to\".",
+       "apihelp-compare-paramvalue-prop-comment": "התקציר על גרסאות ה־\"from\" וה־\"to\".",
+       "apihelp-compare-paramvalue-prop-parsedcomment": "התקציר המפוענח על גרסאות ה־\"from\" וה־\"to\".",
+       "apihelp-compare-paramvalue-prop-size": "הגודל של גרסאות ה־\"from\" וה־\"to\".",
        "apihelp-compare-example-1": "יצירת תיעוד שינוי בין גרסה 1 ל־2.",
-       "apihelp-createaccount-description": "יצירת חשבון משתמש חדש.",
        "apihelp-createaccount-param-preservestate": "אם <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> החזיר true עבור <samp>hasprimarypreservedstate</samp>, בקשות שמסומנות בתור <samp>primary-required</samp> אמורות להיות מושמטות. אם מוחזר ערך לא ריק ל־<samp>preservedusername</samp>, שם המשתמש הזה ישמש לפרמטר <var>username</var>.",
        "apihelp-createaccount-example-create": "תחילת תהליך יצירת המשתמש <kbd>Example</kbd> עם הססמה <kbd>ExamplePassword</kbd>.",
        "apihelp-createaccount-param-name": "שם משתמש.",
        "apihelp-createaccount-param-language": "קוד השפה שיוגדר כבררת המחדל למשתמש (רשות, בררת המחדל היא שפת התוכן).",
        "apihelp-createaccount-example-pass": "יצירת המשתמש <kbd>testuser</kbd> עם הססמה <kbd>test123</kbd>.",
        "apihelp-createaccount-example-mail": "יצירת המשתמש <kbd>testmailuser</kbd> ושליחת ססמה שיוצרה אקראית בדוא״ל.",
-       "apihelp-cspreport-description": "משמש דפדפנים לדיווח הפרות של מדיניות אבטחת תוכן. המודול הזה לעולם לא ישמש אלא אם הוא משמש עם דפדפן תומך CSP.",
        "apihelp-cspreport-param-reportonly": "לסמן בתור דיווח ממדיניות מנטרת, לא מדיניות כפויה",
        "apihelp-cspreport-param-source": "מה ייצר את כותרת ה־CSP שייצרה את הדו״ח הזה",
-       "apihelp-delete-description": "מחיקת דף.",
        "apihelp-delete-param-title": "כותרת העמוד למחיקה. לא ניתן להשתמש בשילוב עם <var>$1pageid</var>.",
        "apihelp-delete-param-pageid": "מס׳ הזיהוי של העמוד למחיקה. לא ניתן להשתמש בשילוב עם <var>$1title</var>.",
        "apihelp-delete-param-reason": "סיבת המחיקה. אם לא הוגדרה, תתווסף סיבה שנוצרה אוטומטית.",
        "apihelp-delete-param-oldimage": "שם התמונה הישנה למחיקה כפי שסופק ל־[[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]].",
        "apihelp-delete-example-simple": "מחיקת <kbd>Main Page</kbd>.",
        "apihelp-delete-example-reason": "מחיקת <kbd>Main Page</kbd>. סיבה: <kbd>Preparing for move</kbd>.",
-       "apihelp-disabled-description": "היחידה הזאת כובתה.",
-       "apihelp-edit-description": "יצירה ועריכה של דפים.",
        "apihelp-edit-param-title": "שם הדף לעריכה. לא לשימוש עם <var>$1pageid</var>.",
        "apihelp-edit-param-pageid": "מזהה הדף לעריכה. לא לשימוש עם <var>$1title</var>.",
        "apihelp-edit-param-section": "מספר הפסקה <kbd>0</kbd> לפסקה העליונה, <kbd>new</kbd> לפסקה חדשה.",
        "apihelp-edit-example-edit": "עריכת דף",
        "apihelp-edit-example-prepend": "הוספת <kbd>_&#95;NOTOC_&#95;</kbd> לתחילת העמוד.",
        "apihelp-edit-example-undo": "ביטול גרסאות מ־13579 עד 13585 עם תקציר אוטומטי.",
-       "apihelp-emailuser-description": "שליחת דוא\"ל למשתמש.",
        "apihelp-emailuser-param-target": "לאיזה משתמש לשלוח דוא\"ל.",
        "apihelp-emailuser-param-subject": "כותרת נושא.",
        "apihelp-emailuser-param-text": "גוף הדואר.",
        "apihelp-emailuser-param-ccme": "שליחת עותק של הדואר הזה אליי.",
        "apihelp-emailuser-example-email": "שליחת דוא\"ל למשתמש <kbd>WikiSysop</kbd> עם הטקסט <kbd>Content</kbd>.",
-       "apihelp-expandtemplates-description": "הרחבת כל התבניות בתוך קוד הוויקי.",
        "apihelp-expandtemplates-param-title": "כותרת הדף.",
        "apihelp-expandtemplates-param-text": "איזה קוד ויקי להמיר.",
        "apihelp-expandtemplates-param-revid": "מזהה גרסה, עבור <nowiki>{{REVISIONID}}</nowiki> ומשתנים דומים.",
        "apihelp-expandtemplates-param-includecomments": "האם לכלול הערות HTML בפלט.",
        "apihelp-expandtemplates-param-generatexml": "יצירת עץ פענוח XML (מוחלף ב־$1prop=parsetree).",
        "apihelp-expandtemplates-example-simple": "להרחיב את קוד הוויקי <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd>.",
-       "apihelp-feedcontributions-description": "להחזיר הזנת תרומות משתמש.",
        "apihelp-feedcontributions-param-feedformat": "תסדיר ההזנה.",
        "apihelp-feedcontributions-param-user": "לקבל תרומות של אילו משמשים.",
        "apihelp-feedcontributions-param-namespace": "לפי איזה מרחב שם לסנן את התרומות.",
        "apihelp-feedcontributions-param-hideminor": "להסתיר עריכות משניות.",
        "apihelp-feedcontributions-param-showsizediff": "להציג את ההבדל בגודל בין גרסאות.",
        "apihelp-feedcontributions-example-simple": "החזרת תרומות עבור המשתמש <kbd>Example</kbd>.",
-       "apihelp-feedrecentchanges-description": "להחזיר הזנת שינויים אחרונים.",
        "apihelp-feedrecentchanges-param-feedformat": "תסדיר ההזנה.",
        "apihelp-feedrecentchanges-param-namespace": "לאיזה מרחב שם להגביל את התוצאות.",
        "apihelp-feedrecentchanges-param-invert": "כל מרחבי השם למעט זה שנבחר.",
        "apihelp-feedrecentchanges-param-categories_any": "להציג רק שינויים בדפים בכל הקטגוריות במקום.",
        "apihelp-feedrecentchanges-example-simple": "הצגת שינויים אחרונים.",
        "apihelp-feedrecentchanges-example-30days": "הצגת שינויים אחרונים עבור 30 ימים.",
-       "apihelp-feedwatchlist-description": "החזרת הזנת רשימת מעקב.",
        "apihelp-feedwatchlist-param-feedformat": "תסדיר ההזנה.",
        "apihelp-feedwatchlist-param-hours": "רשימת דפים ששונו בתוך מספר כזה של שעות מעכשיו.",
        "apihelp-feedwatchlist-param-linktosections": "לקשר ישר לפסקאות ששונו אם אפשר.",
        "apihelp-feedwatchlist-example-default": "הצגת הזנת רשימת מעקב.",
        "apihelp-feedwatchlist-example-all6hrs": "להציג את כל השינויים בדפים שבמעקב ב־6 השעות האחרונות.",
-       "apihelp-filerevert-description": "לשחזר את הקובץ לגרסה ישנה יותר.",
        "apihelp-filerevert-param-filename": "שם קובץ היעד, ללא התחילית File:.",
        "apihelp-filerevert-param-comment": "הערת העלאה.",
        "apihelp-filerevert-param-archivename": "שם הארכיון של הגרסה שאליה ישוחזר הקובץ.",
        "apihelp-filerevert-example-revert": "לשחזר את <kbd>Wiki.png</kbd> לגרסה מ־<kbd>2011-03-05T15:27:40Z</kbd>.",
-       "apihelp-help-description": "הצגת עזרה עבור היחידות שצוינו.",
        "apihelp-help-param-modules": "עזרה של אילו יחידות להציג (ערכים של הפרמטרים <var>action</var> ו־<var>format</var>, או <kbd>main</kbd>). אפשר להגדיר תת־יחידות עם <kbd>+</kbd>.",
        "apihelp-help-param-submodules": "לכלול עזרה לתת־יחידות ליחידה שצוינה.",
        "apihelp-help-param-recursivesubmodules": "לכלול עזרה לתת־יחידות באופן רקורסיבי.",
        "apihelp-help-example-recursive": "כל העזרה בדף אחד.",
        "apihelp-help-example-help": "עזרה ליחידת העזרה עצמה.",
        "apihelp-help-example-query": "עזרה לשתי תת־יחידות של שאילתה.",
-       "apihelp-imagerotate-description": "סיבוב של תמונה אחת או יותר.",
        "apihelp-imagerotate-param-rotation": "בכמה מעלות לסובב בכיוון השעון.",
        "apihelp-imagerotate-param-tags": "אילו תגים להחיל על העיול ביומן ההעלאות.",
        "apihelp-imagerotate-example-simple": "לסובב את <kbd>File:Example.png</kbd> ב־<kbd>90</kbd> מעלות.",
        "apihelp-imagerotate-example-generator": "לסובב את כל התמונות ב־<kbd>Category:Flip</kbd> ב־<kbd>180</kbd> מעלות.",
-       "apihelp-import-description": "לייבא דף מוויקי אחר או מקובץ XML.\n\nיש לשים לב לכך שפעולת HTTP POST צריכה להיעשות בתור העלאת קובץ (כלומר, עם multipart/form-data) בזמן שליחת קובץ לפרמטר <var>xml</var>.",
        "apihelp-import-param-summary": "תקציר ייבוא עיולי יומן.",
        "apihelp-import-param-xml": "קובץ XML שהועלה.",
        "apihelp-import-param-interwikisource": "ליבוא בין אתרי ויקי: מאיזה ויקי לייבא.",
        "apihelp-import-param-rootpage": "לייבא בתור תת־משנה של הדף הזה. לא ניתן להשתמש בזה יחד עם <var>$1namespace</var>.",
        "apihelp-import-param-tags": "תגי שינוי שיחולו על העיול ביומן הייבוא ולגרסה הריקה בדפים המיובאים.",
        "apihelp-import-example-import": "לייבא את [[meta:Help:ParserFunctions]] למרחב השם 100 עם היסטוריה מלאה.",
-       "apihelp-linkaccount-description": "קישור חשבון של ספק צד־שלישי למשתמש הנוכחי.",
        "apihelp-linkaccount-example-link": "תחילת תהליך הקישור לחשבון מ־<kbd>Example</kbd>.",
-       "apihelp-login-description": "להיכנס ולקבל עוגיות אימות.\n\nהפעולה הזאת צריכה לשמש רק בשילוב [[Special:BotPasswords]]; שימוש לכניסה לחשבון ראשי מיושן ועשוי להיכשל ללא אזהרה. כדי להיכנס בבטחה לחשבון הראשי, יש להשתמש ב־<kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
-       "apihelp-login-description-nobotpasswords": "להיכנס ולקבל עוגיות אימות.\n\nהפעולה הזאת מיושנת ועשויה להיכשל ללא אזהרה. כדי להיכנס בבטחה, יש להשתמש ב־<kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
        "apihelp-login-param-name": "שם משתמש.",
        "apihelp-login-param-password": "ססמה.",
        "apihelp-login-param-domain": "שם מתחם (רשות).",
        "apihelp-login-param-token": "אסימון כניסה התקבל בבקשה הראשונה.",
        "apihelp-login-example-gettoken": "קבלת אסימון כניסה.",
        "apihelp-login-example-login": "כניסה.",
-       "apihelp-logout-description": "יציאה וניקוי של נתוני הפעילות.",
        "apihelp-logout-example-logout": "הוצאת המשתמש הנוכחי.",
-       "apihelp-managetags-description": "ביצוע פעולות ניהוליות הקשורות בשינוי תגיות.",
        "apihelp-managetags-param-operation": "איזו פעולה לבצע:\n;create:יצירת תג שינוי חדש לשימוש ידני.\n;delete:הסרת תג שינוי ממסד הנתונים, כולל הסרת התג מכל הגרסאות, עיולי שינויים אחרונים ועיולי יומן שהוא משמש בהן.\n;activate:הפעלת תג שינוי, ואפשור למשתמש להחיל אותו ידנית.\n;deactivate:כיבוי תג שינוי, ומניעה ממשתמשים להחיל אותו ידנית.",
        "apihelp-managetags-param-tag": "תג ליצירה, מחיקה, הפעלה או כיבוי. ליצירת תג, התג לא צריך להיות קיים. למחיקת תג, התג צריך להיות קיים. להפעלת תג, התג צריך להתקיים ולא להיות בשימוש של הרחבה. לכיבוי תג, התג צריך להיות קיים ומוגדר ידנית.",
        "apihelp-managetags-param-reason": "סיבה אופציונלית ליצירה, מחיקה, הפעלה או כיבוי של תג.",
        "apihelp-managetags-example-delete": "מחיקת התג <kbd>vandlaism</kbd> עם הסיבה <kbd>Misspelt</kbd>",
        "apihelp-managetags-example-activate": "הפעלת התג <kbd>spam</kbd> עם הסיבה <kbd>For use in edit patrolling</kbd>",
        "apihelp-managetags-example-deactivate": "כיבוי התג <kbd>spam</kbd> עם הסיבה <kbd>No longer required</kbd>",
-       "apihelp-mergehistory-description": "מיזוג גרסאות של דפים.",
        "apihelp-mergehistory-param-from": "כותרת הדף שההיסטוריה שלו תמוזג. לא ניתן להשתמש בזה יחד עם <var>$1fromid</var>.",
        "apihelp-mergehistory-param-fromid": "מזהה הדף שממנו תמוזג ההיסטוריה. לא ניתן להשתמש בזה יחד עם <var>$1from</var>.",
        "apihelp-mergehistory-param-to": "כותרת הדף שההיסטוריה תמוזג אליו. לא ניתן להשתמש בזה יחד עם <var>$1toid</var>.",
        "apihelp-mergehistory-param-reason": "סיבה למיזוג ההיסטוריה.",
        "apihelp-mergehistory-example-merge": "מיזוג כל ההיסטוריה של <kbd>Oldpage</kbd> אל <kbd>Newpage</kbd>.",
        "apihelp-mergehistory-example-merge-timestamp": "מיזוג גרסאות הדפים של <kbd>Oldpage</kbd> עד <kbd dir=\"ltr\">2015-12-31T04:37:41Z</kbd> אל <kbd>Newpage</kbd>.",
-       "apihelp-move-description": "העברת עמוד.",
        "apihelp-move-param-from": "שם הדף ששמו ישונה. לא יכול לשמש יחד עם <var>$1fromid</var>.",
        "apihelp-move-param-fromid": "מזהה הדף של הדף שצריך לשנות את שמו. לא יכול לשמש עם <var>$1from</var>.",
        "apihelp-move-param-to": "לאיזו כותרת לשנות את שם הדף.",
        "apihelp-move-param-ignorewarnings": "להתעלם מכל האזהרות.",
        "apihelp-move-param-tags": "תגי שינוי שיחולו על העיול ביומן ההעברות ולגרסה הריקה בדף היעד.",
        "apihelp-move-example-move": "העברת <kbd>Badtitle</kbd> ל־<kbd>Goodtitle</kbd> בלי להשאיר הפניה.",
-       "apihelp-opensearch-description": "חיפוש בוויקי בפרוטוקול OpenSearch.",
        "apihelp-opensearch-param-search": "מחרוזת לחיפוש.",
        "apihelp-opensearch-param-limit": "המספר המרבי של התוצאות שתוחזרנה.",
        "apihelp-opensearch-param-namespace": "שמות מתחם לחיפוש.",
        "apihelp-opensearch-param-format": "תסדיר הפלט.",
        "apihelp-opensearch-param-warningsaserror": "אם אזהרות מוּעלות עם <kbd>format=json</kbd>, להחזיר שגיאת API במקום להתעלם מהן.",
        "apihelp-opensearch-example-te": "חיפוש דפים שמתחילים ב־<kbd>Te</kbd>.",
-       "apihelp-options-description": "שינוי העדפות של המשתמש הנוכחי.\n\nרק אפשרויות שמוגדרות בליבה או באחת מההרחבות המותקנות, או אפשרויות עם מפתחות עם התחילית \"<code dir=\"ltr\">userjs-</code>\" (שמיועדות לשימוש תסריטי משתמשים) יכולות להיות מוגדרות.",
        "apihelp-options-param-reset": "אתחול ההעדפות לבררות המחדל של האתר.",
        "apihelp-options-param-resetkinds": "רשימת סוגי אפשרויות לאתחל כאשר מוגדרת האפשרות <var>$1reset</var>.",
        "apihelp-options-param-change": "רשימת שינויים, בתסדיר name=value (למשל skin=vector). אם לא ניתן ערך, אפילו לא סימן שווה, למשל optionname|otheroption|...‎, האפשרות תאופס לערך בררת המחדל שלה. אם ערך מועבר כלשהו מכיל את תו המקל (<kbd>|</kbd>), יש להשתמש ב[[Special:ApiHelp/main#main/datatypes|מפריד ערכים מרובים חלופי]] בשביל פעולה נכונה.",
        "apihelp-options-example-reset": "אתחול כל ההעדפות.",
        "apihelp-options-example-change": "לשנות את ההעדפות <kbd>skin</kbd> ו־<kbd>hideminor</kbd>.",
        "apihelp-options-example-complex": "לאתחל את כל ההעדפות ואז להגדיר את <kbd>skin</kbd> ואת <kbd>nickname</kbd>.",
-       "apihelp-paraminfo-description": "קבלת מידע על יחידות של API.",
        "apihelp-paraminfo-param-modules": "רשימה של שמות יחידות (ערכים של הפרמטרים <var>action</var> ו־<var>format</var>, או <kbd>main</kbd>). אפשר להגדיר תת־יחידות עם <kbd>+</kbd>, או כל התת־מודולים עם <kbd dir=\"ltr\">+*</kbd>, או כל התת־מודולים באופן רקורסיבי עם <kbd dir=\"ltr\">+**</kbd>.",
        "apihelp-paraminfo-param-helpformat": "תסדיר מחרוזות העזרה.",
        "apihelp-paraminfo-param-querymodules": "רשימת שמות יחידות query (ערך של הפרמטר <var>prop</var>‏, <var>meta</var> או <var>list</var>). יש להשתמש ב־<kbd>$1modules=query+foo</kbd> במקום <kbd>$1querymodules=foo</kbd>.",
        "apihelp-paraminfo-param-formatmodules": "רשימת שמות תסדירים (ערכים של הפרמטר <var>format</var>). יש להשתמש ב־<var>$1modules</var> במקום זה.",
        "apihelp-paraminfo-example-1": "הצגת מידע עבור <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>‏, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>‏, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd>‏, ו־<kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>.",
        "apihelp-paraminfo-example-2": "הצגת מידע עבור כל התת־מודולים של <kbd>[[Special:ApiHelp/query|action=query]]</kbd>.",
-       "apihelp-parse-description": "מפענח את התוכן ומחזיר פלט מפענח.\n\nר' את יחידת ה־prop השיונות של <kbd>[[Special:ApiHelp/query|action=query]]</kbd> כדי לקבל מידע על הגרסה הנוכחית של הדף.\n\nיש מספר דרכים לציין טקסט לפענוח:\n# ציון דף או גרסה באמצעות <var>$1page</var>‏, <var>$1pageid</var>, או <var>$1oldid</var>.\n# ציון התוכן במפורש, באמצעות <var>$1text</var>‏, <var>$1title</var>, ו־<var>$1contentmodel</var>.\n# ציון רק של  התקציר לפענוח. ל־<var>$1prop</var> צריך לתת ערך ריק.",
        "apihelp-parse-param-title": "שם הדף שהטקסט שייך אליו. אם זה מושמט, יש לציין את <var>$1contentmodel</var>, ו־[[API]] ישמש ככותרת.",
        "apihelp-parse-param-text": "הטקסט לפענוח. יש להשתמש ב־<var>$1title</var> או ב־<var>$1contentmodel</var>.",
        "apihelp-parse-param-summary": "התקציר שצריך לפענח.",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "נותן את גרסת ה־HTML של דו\"ח ההגבלות. לא נותן שום נתונים כאשר מוגדר <var>$1disablelimitreport</var>.",
        "apihelp-parse-paramvalue-prop-parsetree": "עץ פענוח XML של תוכן הגרסה (דורש מודל תוכן <code>$1</code>)",
        "apihelp-parse-paramvalue-prop-parsewarnings": "נותן אזהרות שאירעו בזמן פענוח התוכן.",
+       "apihelp-parse-param-wrapoutputclass": "מחלקה של CSS שתשמש לעטיפת פלט המפענח.",
        "apihelp-parse-param-pst": "לעשות התמרה לפני שמירה על הקלט לפני פענוחו. תקין רק בשימוש עם טקסט.",
        "apihelp-parse-param-onlypst": "לעשות התמרה לפני שמירה (pre-save transform‏, PST) על הקלט, אבל לא לפענח אותו. מחזיר את אותו קוד הוויקי אחרי החלת PST. תקף רק בשימוש עם <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "כולל קישור שפה שמספקות הרחבות (לשימוש עם <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-preview": "לפענח במצב תצוגה מקדימה.",
        "apihelp-parse-param-sectionpreview": "לפענח במצב תצוגה מקדימה של פסקה (מדליק גם את מצב תצוגה מקדימה).",
        "apihelp-parse-param-disabletoc": "להשמיט את תוכן העניינים בפלט.",
+       "apihelp-parse-param-useskin": "להחיל את העיצוב שנבחר לפלט המפענח. יכול להשפיע על המאפיינים הבאים: <kbd dir=\"ltr\">langlinks</kbd>, <kbd dir=\"ltr\">headitems</kbd>, <kbd dir=\"ltr\">modules</kbd>, <kbd dir=\"ltr\">jsconfigvars</kbd>, <kbd dir=\"ltr\">indicators</kbd>.",
        "apihelp-parse-param-contentformat": "תסדיר הסדרת תוכן שישמש לטקסט הקלט. תקף רק עם $1text.",
        "apihelp-parse-param-contentmodel": "מודל התוכן של טקסט הקלט. אם זה מושמט, יש לציין את $1title והערך ההתחלתי יהיה המודל של הכותרת שצוינה. תקין רק כאשר משמש עם $1text.",
        "apihelp-parse-example-page": "לפענח דף.",
        "apihelp-parse-example-text": "לפענח קוד ויקי.",
        "apihelp-parse-example-texttitle": "לפענח קוד, עם ציון כותרת דף.",
        "apihelp-parse-example-summary": "לפענח תקציר.",
-       "apihelp-patrol-description": "לנטר דף או גרסה.",
        "apihelp-patrol-param-rcid": "מזהה שינויים אחרונים לניטור.",
        "apihelp-patrol-param-revid": "מזהה גרסה לניטור.",
        "apihelp-patrol-param-tags": "תגי שינוי שיחולו על העיול ביומן הניטור.",
        "apihelp-patrol-example-rcid": "לנטר רשומה משינויים אחרונים.",
        "apihelp-patrol-example-revid": "לנטר גרסה.",
-       "apihelp-protect-description": "לשנות את רמת ההגנה של דף.",
        "apihelp-protect-param-title": "כותרת הדף להגנה או הסרת הגנה. לא ניתן להשתמש בזה יחד עם $1pageid.",
        "apihelp-protect-param-pageid": "מזהה הדף להגנה או הסרת הגנה. לא ניתן להשתמש בזה יחד עם $1title.",
        "apihelp-protect-param-protections": "רשימת רמות הגנה, בתסדיר <kbd>action=level</kbd> (למשל <kbd>edit=sysop</kbd>). רמת <kbd>all</kbd> פירושה שכולם מורשים לבצע את הפעולה, כלומר אין הגנה.\n\n<strong>הערה:</strong> ההגבלות יוסרו מכל הפעולות שלא כתובות ברשימה.",
        "apihelp-protect-example-protect": "הגנה על דף.",
        "apihelp-protect-example-unprotect": "להסיר את ההגנה מהדף על־ידי הגדרת מגבלות על <kbd>all</kbd> (למשל: כולם מורשים לבצע את הפעולה).",
        "apihelp-protect-example-unprotect2": "הסרת הגנה מדף על־ידי הגדרה של אפס הגבלות.",
-       "apihelp-purge-description": "ניקוי המטמון לכותרות שניתנו.",
        "apihelp-purge-param-forcelinkupdate": "עדכון טבלאות הקישורים.",
        "apihelp-purge-param-forcerecursivelinkupdate": "עדכון טבלת הקישורים ועדכון טבלאות הקישורים עבור כל דף שמשתמש בדף הזה בתור תבנית.",
        "apihelp-purge-example-simple": "ניקוי המטמון של הדפים <kbd>Main Page</kbd> ו־<kbd>API</kbd>.",
        "apihelp-purge-example-generator": "ניקוי 10 הדפים הראשונים במרחב הראשי.",
-       "apihelp-query-description": "אחזור נתונים ממדיה־ויקי ועליה.\n\nכל שינויי הנתונים יצטרכו תחילה להשתמש ב־query כדי לקבל אסימון למניעת שימוש לרעה מאתרים זדוניים.",
        "apihelp-query-param-prop": "אילו מאפיינים לקבל על הדפים בשאילתה.",
        "apihelp-query-param-list": "אילו רשימות לקבל.",
        "apihelp-query-param-meta": "אילו מטא־נתונים לקבל.",
        "apihelp-query-param-rawcontinue": "להחזיר נתוני <samp>query-continue</samp> גולמיים להמשך.",
        "apihelp-query-example-revisions": "אחזור [[Special:ApiHelp/query+siteinfo|site info]] ו־[[Special:ApiHelp/query+revisions|revisions]] של <kbd>Main Page</kbd>.",
        "apihelp-query-example-allpages": "אחזור גרסאת של דפים שמתחילים ב־<kbd>API/</kbd>.",
-       "apihelp-query+allcategories-description": "למנות את כל הקטגוריות.",
        "apihelp-query+allcategories-param-from": "מאיזו קטגוריה להתחיל למנות.",
        "apihelp-query+allcategories-param-to": "באיזו קטגוריה להפסיק למנות.",
        "apihelp-query+allcategories-param-prefix": "חיפוש כל כותרות הקטגוריות שמתחילות בערך הזה.",
        "apihelp-query+allcategories-paramvalue-prop-hidden": "מתייג קטגוריות מוסתרות עם <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+allcategories-example-size": "רשימת קטגוריות עם מידע על מספר הדפים בכל אחת מהן.",
        "apihelp-query+allcategories-example-generator": "אחזור מידע על דף הקטגוריה עצמו עבור קטגוריות שמתחילות ב־<kbd>List</kbd>.",
-       "apihelp-query+alldeletedrevisions-description": "רשימת כל הגרסאות המחוקות על־ידי משתמש או במרחב.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "יכול לשמש רק <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "לא יכול לשמש עם <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-param-start": "מאיזה חותם־זמן להתחיל למנות.",
        "apihelp-query+alldeletedrevisions-param-generatetitles": "בעת שימוש בתור מחולל, לחולל כותרת במקום מזהי גרסה.",
        "apihelp-query+alldeletedrevisions-example-user": "לרשום את 50 התרומות המחוקות האחרונות של משתמש <kbd>Example</kbd>.",
        "apihelp-query+alldeletedrevisions-example-ns-main": "רשימת 50 הגרסאות המחוקות הראשונות במרחב הראשי.",
-       "apihelp-query+allfileusages-description": "לרשום את כל שימושי הקובץ, כולל בלתי־קיימים.",
        "apihelp-query+allfileusages-param-from": "מאיזה שם קובץ להתחיל למנות.",
        "apihelp-query+allfileusages-param-to": "שם הקובץ שהמנייה תסתיים בו.",
        "apihelp-query+allfileusages-param-prefix": "חיפוש כל שמות הקבצים שמתחילים עם הערך הזה.",
        "apihelp-query+allfileusages-example-unique": "רשימת שמות קבצים ייחודיים.",
        "apihelp-query+allfileusages-example-unique-generator": "קבלת כל שמות הקבצים, כולל חסרים.",
        "apihelp-query+allfileusages-example-generator": "קבלת דפים שמכילים את הקבצים.",
-       "apihelp-query+allimages-description": "למנות את כל התמונות לפי הסדר.",
        "apihelp-query+allimages-param-sort": "לפי איזה מאפיין למיין.",
        "apihelp-query+allimages-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+allimages-param-from": "מאיזה שם תמונה להתחיל למנות. יכול לשמש רק עם $1sort=name.",
        "apihelp-query+allimages-example-recent": "הצגת רשימת קבצים שהועלו לאחרונה, דומה ל־[[Special:NewFiles]].",
        "apihelp-query+allimages-example-mimetypes": "להציג רשימה של קבצות שסוג ה־MIME שלהם הוא <kbd>image/png</kbd> או <kbd>image/gif</kbd>.",
        "apihelp-query+allimages-example-generator": "הצגת מידע על 4 קבצים המתחילים באות <kbd>T</kbd>.",
-       "apihelp-query+alllinks-description": "למנות את כל הקישורים שמצביעים למרחב שם נתון.",
        "apihelp-query+alllinks-param-from": "מאיזה שם קישור להתחיל למנות.",
        "apihelp-query+alllinks-param-to": "כותרת הקישור שהמנייה תסתיים בו.",
        "apihelp-query+alllinks-param-prefix": "חיפוש כל הכותרות המקושרות שמתחילות בערך הזה.",
        "apihelp-query+alllinks-example-unique": "רשימת כותרות מקושרים ייחודיות.",
        "apihelp-query+alllinks-example-unique-generator": "קבלת כל הכותרות המקושרות, וסימון החסרות.",
        "apihelp-query+alllinks-example-generator": "קבלת דפים שמכילים את הקישורים.",
-       "apihelp-query+allmessages-description": "החזרת הודעות מהאתר הזה.",
        "apihelp-query+allmessages-param-messages": "אילו הודעות לפלוט. כתיבת <kbd>*</kbd> (בררת מחדל) תפלוט את כל ההודעות.",
        "apihelp-query+allmessages-param-prop": "אלו מאפיינים לקבל.",
        "apihelp-query+allmessages-param-enableparser": "יש להגדיר כדי להפעיל את המפענח, יעשה קדם־עיבוד לקוד ויקי של ההודעה (יחליף מילות קסם, יטפל בתבניות, וכו').",
        "apihelp-query+allmessages-param-prefix": "החזרת הודעת עם התחילית הזאת.",
        "apihelp-query+allmessages-example-ipb": "להציג הודעות שמתחילות ב־<kbd dir=\"ltr\">ipb-</kbd>.",
        "apihelp-query+allmessages-example-de": "להציג את ההודעות <kbd>august</kbd> ו־<kbd>mainpage</kbd> בגרמנית.",
-       "apihelp-query+allpages-description": "למנות את כל הדפים לפי הסדר במרחב שם נתון.",
        "apihelp-query+allpages-param-from": "מאיזה שם דף להתחיל למנות.",
        "apihelp-query+allpages-param-to": "כותרת הדף שהמנייה תסתיים בו.",
        "apihelp-query+allpages-param-prefix": "חיפוש כל שמות הדפים שמתחילים בערך הזה.",
        "apihelp-query+allpages-example-B": "להציג רשימה של דפים במתחילים באות <kbd>B</kbd>.",
        "apihelp-query+allpages-example-generator": "להציג מידע על 4 דפים שמתחילים באות <kbd>T</kbd>.",
        "apihelp-query+allpages-example-generator-revisions": "להציג את תוכן של 2 הדפים הראשונים שמתחילים ב־<kbd>Re</kbd> ושאינם דפי הפניה.",
-       "apihelp-query+allredirects-description": "רשימה של כל ההפניות למרחב שם.",
        "apihelp-query+allredirects-param-from": "מאיזו כותרת הפניה להתחיל את מנייה.",
        "apihelp-query+allredirects-param-to": "כותרת ההפניה שהמנייה תיפסק בה.",
        "apihelp-query+allredirects-param-prefix": "חיפוש על דפי היעד שמתחילים בערך הזה.",
        "apihelp-query+allredirects-example-unique": "רשימת דפי יעד ייחודיים.",
        "apihelp-query+allredirects-example-unique-generator": "קבלת על דפי היעד, תוך כדי סימון החסרים.",
        "apihelp-query+allredirects-example-generator": "קבלת דפים שמכילים את ההפניות.",
-       "apihelp-query+allrevisions-description": "רשימת כל הגרסאות.",
        "apihelp-query+allrevisions-param-start": "מאיזה חותם־זמן להתחיל למנות.",
        "apihelp-query+allrevisions-param-end": "באיזה חותם־זמן להפסיק למנות.",
        "apihelp-query+allrevisions-param-user": "לרשום רק גרסאות מאת המשתמש הזה.",
        "apihelp-query+allrevisions-param-generatetitles": "בעת שימוש בתור מחולל, לחולל כותרת במקום מזהי גרסה.",
        "apihelp-query+allrevisions-example-user": "לרשום את 50 התרומות האחרונות של משתמש <kbd>Example</kbd>.",
        "apihelp-query+allrevisions-example-ns-main": "רשימת 50 הגרסאות הראשונות במרחב הראשי.",
-       "apihelp-query+mystashedfiles-description": "קבלת רשימת קבצים בסליק ההעלאה של המשתמש הנוכחי.",
        "apihelp-query+mystashedfiles-param-prop": "אילו מאפיינים לאחזר עבור הקבצים.",
        "apihelp-query+mystashedfiles-paramvalue-prop-size": "אחזור גודל הקובץ וממדי התמונה.",
        "apihelp-query+mystashedfiles-paramvalue-prop-type": "אחזור סוג ה־MIME של הקובץ וסוג המדיה.",
        "apihelp-query+mystashedfiles-param-limit": "כמה קבצים לקבל.",
        "apihelp-query+mystashedfiles-example-simple": "לקבל מפתח קובץ, גודל קובץ וגודל בפיקסלים של קבצים בסליק ההעלאה של המשתמש הנוכחי.",
-       "apihelp-query+alltransclusions-description": "רשימת כל ההכללות (דפים שמוטבעים באמצעות &#123;&#123;x&#125;&#125;), כולל כאלה שאינם קיימים.",
        "apihelp-query+alltransclusions-param-from": "מאיזו כותרת ההכללה להתחיל למנות.",
        "apihelp-query+alltransclusions-param-to": "כותרת ההכללה שהמנייה תיפסק בה.",
        "apihelp-query+alltransclusions-param-prefix": "חיפוש כל הכותרות המוכללות שמתחילות הערך הזה.",
        "apihelp-query+alltransclusions-example-unique": "רשימת כותרת מוכללות ייחודיות.",
        "apihelp-query+alltransclusions-example-unique-generator": "קבלת כל כל הכותרות המוכללות, תוך כדי סימון החסרות.",
        "apihelp-query+alltransclusions-example-generator": "קבלת דפים שמכילים את ההכללות.",
-       "apihelp-query+allusers-description": "למנות את כל המשתמשים הרשומים.",
        "apihelp-query+allusers-param-from": "מאיזה שם משתמש להתחיל למנות.",
        "apihelp-query+allusers-param-to": "באיזה שם משתמש להפסיק למנות.",
        "apihelp-query+allusers-param-prefix": "חיפוש כל המשתמשים שמתחילים בערך הזה.",
        "apihelp-query+allusers-param-activeusers": "לרשום רק משתמשים שהיו פעילים {{PLURAL:$1|ביום האחרון|ביומיים האחרונים|ב־$1 הימים האחרונים}}.",
        "apihelp-query+allusers-param-attachedwiki": "עם <kbd>$1prop=centralids</kbd>, לציין גם האם המשתמש משויך לוויקי עם המזהה הזה.",
        "apihelp-query+allusers-example-Y": "לרשום משתמשים שמתחילים ב־<kbd>Y</kbd>.",
-       "apihelp-query+authmanagerinfo-description": "אחזור מידע אודות מצב האימות הנוכחי.",
        "apihelp-query+authmanagerinfo-param-securitysensitiveoperation": "בדיקה האם מצב האימות הנוכחי של המשתמש מספיק בשביל הפעולה הרגישה מבחינת אבטחה שצוינה.",
        "apihelp-query+authmanagerinfo-param-requestsfor": "אחזור מידע על בקשות האימות הדרושות לפעולת האימות המבוקשת.",
        "apihelp-query+authmanagerinfo-example-login": "אחזור הבקשות שיכולות לשמש לתחילת הכניסה.",
        "apihelp-query+authmanagerinfo-example-login-merged": "אחזור הבקשות שיכולות לשמש לתחילת הכניסה, עם שדות טופס ממוזגים.",
        "apihelp-query+authmanagerinfo-example-securitysensitiveoperation": "בדיקה האם האימות מספיק בשביל הפעולה <kbd>foo</kbd>.",
-       "apihelp-query+backlinks-description": "מציאת כל הדפים שמקשרים לדף הנתון.",
        "apihelp-query+backlinks-param-title": "איזו כותרת לחפש. לא ניתן להשתמש בזה יחד עם <var>$1pageid</var>.",
        "apihelp-query+backlinks-param-pageid": "מזהה דף לחיפוש. לא ניתן להשתמש בזה יחד עם <var>$1title</var>.",
        "apihelp-query+backlinks-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+backlinks-param-redirect": "אם הדף המקשר הוא הפניה, למצוא גם את כל הדפים שמקשרים לאותה ההפניה. ההגבלה המרבית מוקטנת בחצי.",
        "apihelp-query+backlinks-example-simple": "הצגת קישורים ל־<kbd>Main Page</kbd>.",
        "apihelp-query+backlinks-example-generator": "קבל מידע על דפים שמקשרים ל־<kbd>Main page</kbd>.",
-       "apihelp-query+blocks-description": "לרשום את כל המשתמשים וכתובות ה־IP שנחסמו.",
        "apihelp-query+blocks-param-start": "מאיזה חותם‏־זמן להתחיל למנות.",
        "apihelp-query+blocks-param-end": "באיזה חותם זמן להפסיק למנות.",
        "apihelp-query+blocks-param-ids": "רשימת מזהי חסימות לרשום (לא חובה).",
        "apihelp-query+blocks-param-show": "להציג רק פריטים שמתאימים לאמות המידה האלו.\nלמשל, כדי לראות רק חסימות ללא לצמיתות על כתובות IP יש להגדיר <kbd>$1show=ip|!temp</kbd>.",
        "apihelp-query+blocks-example-simple": "רשימת חסימות.",
        "apihelp-query+blocks-example-users": "רשימת חסימות של המשתמשים <kbd>Alice</kbd> ו־<kbd>Bob</kbd>.",
-       "apihelp-query+categories-description": "לרשום את כל הקטגוריות שהדף שייך אליהן.",
        "apihelp-query+categories-param-prop": "אילו מאפיינים נוספים לקבל עבור כל קטגוריה:",
        "apihelp-query+categories-paramvalue-prop-sortkey": "הוספת מפתח מיון (מחרוזת הקסדצימלית) ותחילית מפתח מיון (החלק הקריא) עבור קטגוריה.",
        "apihelp-query+categories-paramvalue-prop-timestamp": "הוספת חותם־הזמן של יצירת הקטגוריה.",
        "apihelp-query+categories-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+categories-example-simple": "קבלת רשימת קטגוריות שהם <kbd>Albert Einstein</kbd> שייך אליהן.",
        "apihelp-query+categories-example-generator": "קבלת מידע על כל הקטגוריות שמשמשות בדף <kbd>Albert Einstein</kbd>.",
-       "apihelp-query+categoryinfo-description": "החזרת מידע על הקטגוריות הנתונות.",
        "apihelp-query+categoryinfo-example-simple": "קבחצ מידע על <kbd>Category:Foo</kbd> ועל <kbd>Category:Bar</kbd>.",
-       "apihelp-query+categorymembers-description": "רשימת כל הדפים בקטגוריה נתונה.",
        "apihelp-query+categorymembers-param-title": "איזו קטגוריה למנות (נדרש). חייב לכלול את התחילית <kbd>{{ns:category}}:</kbd>. לא יכול לשמש יחד עם <var>$1pageid</var>.",
        "apihelp-query+categorymembers-param-pageid": "מזהה הדף של הקטגוריה שצריך למנות. לא יכול לשמש יחד עם <var>$1title</var>.",
        "apihelp-query+categorymembers-param-prop": "אילו חלקי מידע לכלול:",
        "apihelp-query+categorymembers-param-endsortkey": "כדאי להשתמש ב־$1endhexsortkey במקום.",
        "apihelp-query+categorymembers-example-simple": "קבלת עשרת העמודים הראשונים שתחת <kbd>Category:Physics</kbd>.",
        "apihelp-query+categorymembers-example-generator": "קבל מידע על הדף עבור 10 הדפים הראשונים ב־<kbd>Category:Physics</kbd>.",
-       "apihelp-query+contributors-description": "קבלת רשימה של תורמים שנכנסו לחשבון ומניין של תורמים אלמוניים לדף.",
        "apihelp-query+contributors-param-group": "לכלול רק משתמשים בקבוצות הנתונות. לא כולל קבוצות משתמעות או אוטומטיות כגון *, user או autoconfirmed.",
        "apihelp-query+contributors-param-excludegroup": "לא לכלול משתמשים בקבוצות הנתונות. לא כולל קבוצות משתמעות או אוטומטיות כגון *, user או autoconfirmed.",
        "apihelp-query+contributors-param-rights": "לכלול רק משתמשים עם ההרשאות הנתונות. לא כולל הרשאות שניתנו בקבוצות משתמעות או אוטומטיות כגון *, user או autoconfirmed.",
        "apihelp-query+contributors-param-excluderights": "לא לכלול משתמשים עם ההרשאות הנתונות. לא כולל הרשאות שניתנו בקבוצות משתמעות או אוטומטיות כגון *, user או autoconfirmed.",
        "apihelp-query+contributors-param-limit": "כמה תורמים להחזיר.",
        "apihelp-query+contributors-example-simple": "הצגת תורמים לדף <kbd>Main Page</kbd>.",
-       "apihelp-query+deletedrevisions-description": "קבלת מידע על גרסה מחוקה.\n\nיכול לשמש במספר דרכים:\n# קבלת גרסאות מחוקות עבור ערכת דפים, על־ידי הגדרת שמות או מזהי דף. ממוין לפי שם וחותם־זמן.\n# קבלת מידע על ערכת גרסאות מחוקות באמצעות הגדרת המזהים שלהם עם revid־ים. ממוין לפי מזהה גרסה.",
        "apihelp-query+deletedrevisions-param-start": "מאיזה חותם־זמן להתחיל למנות. לא תקף בעיבוד רשימת מזהי גרסה.",
        "apihelp-query+deletedrevisions-param-end": "באיזה חותם־זמן להפסיק למנות. לא תקף בעת עיבוד רשימת מזהי גרסה.",
        "apihelp-query+deletedrevisions-param-tag": "לרשום רק גרסאות עם התג הזה.",
        "apihelp-query+deletedrevisions-param-excludeuser": "לא לרשום גרסאות מאת המשתמש הזה.",
        "apihelp-query+deletedrevisions-example-titles": "רשימת גרסאות מחוקות של הדפים <kbd>Main Page</kbd> ו־<kbd>Talk:Main Page</kbd>, עם תוכן.",
        "apihelp-query+deletedrevisions-example-revids": "קבלת מידע לגרסה המחוקה <kbd>123456</kbd>.",
-       "apihelp-query+deletedrevs-description": "רשימת גרסאות מחוקות.\n\nפועל בשלושה אופנים:\n# רשימת גרסאות מחוקות לשמות שניתנו, ממוינות לפי חותם־זמן.\n# רשימת תרומות מחוקות של המשתמש שניתן, ממוינות לפי חותם־זמן (בלי לציין שמות).\n# רשימת כל הגרסאות המחוקות במרחב השם שניתן, ממוינות לפי שם וחותם־זמן (בלי לציין שמות, בלי להגדיר $1user).\n\nפרמטרים מסוימים חלים רק על חלק מהאופנים ולא תקפים באחרים.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|מצב|מצבים}}: $2",
        "apihelp-query+deletedrevs-param-start": "באיזה חותם־זמן להתחיל למנות.",
        "apihelp-query+deletedrevs-param-end": "באיזה חותם־זמן להפסיק למנות.",
        "apihelp-query+deletedrevs-example-mode2": "רשימת 50 העריכות המחוקות האחרונות של <kbd>Bob</kbd>‏ (mode 2).",
        "apihelp-query+deletedrevs-example-mode3-main": "רשימת 50 הגרסאות המחוקות הראשונות במרחב הראשי (mode 3).",
        "apihelp-query+deletedrevs-example-mode3-talk": "רשימת 50 הדפים המחוקים הראשונים במרחב השם {{ns:talk}}‏ (mode 3).",
-       "apihelp-query+disabled-description": "יחידת ה־query הזאת כובתה.",
-       "apihelp-query+duplicatefiles-description": "רשימת כל הקבצים שהם כפולים של קבצים נתונים לפי ערכי הגיבוב.",
        "apihelp-query+duplicatefiles-param-limit": "כמה קבצים כפולים להחזיר.",
        "apihelp-query+duplicatefiles-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+duplicatefiles-param-localonly": "חיפוש אחר קבצים במאגר המקומי בלבד.",
        "apihelp-query+duplicatefiles-example-simple": "חיפוש אחר כפילויות של [[:קובץ:Albert Einstein Head.jpg]].",
        "apihelp-query+duplicatefiles-example-generated": "חיפוש אחר כפילויות בין כל הקבצים.",
-       "apihelp-query+embeddedin-description": "חיפוש כל הדפים שמטמיעים (מכלילים) את הכותרת הנתונה.",
        "apihelp-query+embeddedin-param-title": "איזו כותרת לחפש. לא ניתן להשתמש בזה יחד עם $1pageid.",
        "apihelp-query+embeddedin-param-pageid": "מזהה דף לחיפוש. לא יכול לשמש יחד עם $1title.",
        "apihelp-query+embeddedin-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+embeddedin-param-limit": "כמה דפים להחזיר בסך הכול.",
        "apihelp-query+embeddedin-example-simple": "הצגת דפים שמכלילים את <kbd>Template:Stub</kbd>.",
        "apihelp-query+embeddedin-example-generator": "קבלת מידע על דפים שמכלילים את <kbd>Template:Stub</kbd>.",
-       "apihelp-query+extlinks-description": "החזרת כל ה־URL־ים החיצוניים (לא בינוויקי) מהדפים הנתונים.",
        "apihelp-query+extlinks-param-limit": "כמה קישורים להחזיר.",
        "apihelp-query+extlinks-param-protocol": "הפרוטוקול של ה־URL. אם זה ריק, ו־<var>$1query</var> מוגדר, הפרוטוקול הוא <kbd>http</kbd>. יש להשאיר את זה ואת <var>$1query</var> ריק כדי לרשום את כל הקישורים החיצוניים.",
        "apihelp-query+extlinks-param-query": "מחרוזת חיפוש ללא פרוטוקול. שימושי לבדיקה האם דף מסוים מכיל url חיצוני מסוים.",
        "apihelp-query+extlinks-param-expandurl": "הרחבת URL־ים בעלי פרוטוקול יחסי בפרוטוקול קנוני.",
        "apihelp-query+extlinks-example-simple": "קבלת רשימת קישורים חיצוניים ב־<kbd>Main Page</kbd>.",
-       "apihelp-query+exturlusage-description": "למנות דפים שמכילים URL נתון.",
        "apihelp-query+exturlusage-param-prop": "אילו חלקי מידע לכלול:",
        "apihelp-query+exturlusage-paramvalue-prop-ids": "הוספת מזהה הדף.",
        "apihelp-query+exturlusage-paramvalue-prop-title": "הוספת השם ומזהה מרחב השם של הדף.",
        "apihelp-query+exturlusage-param-limit": "כמה דפים להחזיר.",
        "apihelp-query+exturlusage-param-expandurl": "הרחבת URL־ים בעלי פרוטוקול יחסי בפרוטוקול קנוני.",
        "apihelp-query+exturlusage-example-simple": "הצגת דפים שמקשרים ל־<kbd>http://www.mediawiki.org</kbd>.",
-       "apihelp-query+filearchive-description": "למנות את כל הקבצים המחוקים לפי הסדר.",
        "apihelp-query+filearchive-param-from": "מאיזו כותרת תמונה להתחיל למנות.",
        "apihelp-query+filearchive-param-to": "באיזו כותרת תמונה להפסיק למנות.",
        "apihelp-query+filearchive-param-prefix": "חיפוש כל שמות התמונות שמתחילים בערך הזה.",
        "apihelp-query+filearchive-paramvalue-prop-bitdepth": "הוספת עומק הביטים של הגרסה.",
        "apihelp-query+filearchive-paramvalue-prop-archivename": "הוספת שם הקובץ של גרסה מאורכבת עבור גרסאות שאינן האחרונה.",
        "apihelp-query+filearchive-example-simple": "הצגת רשימת כל הקבצים המחוקים.",
-       "apihelp-query+filerepoinfo-description": "החזרת מידע מטא על מאגרי תמונות שמוגדרים בוויקי.",
        "apihelp-query+filerepoinfo-param-prop": "אילו מאפייני מאגר לקבל (יכולים להיות יותר מזה באתרי ויקי אחדים):\n;apiurl:URL ל־API של המאגר – מועיל לקבלת מידע על התמונה מהמארח.\n;name:המפתח של המאגר – משמש למשל בערכים המוחזרים מ־<var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> ומ־[[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname:שם קריא של אתר הוויקי של המאגר.\n;rooturl:URL שורש לנתיבי תמונות.\n;local:האם המאגר הוא מקומי או לא.",
        "apihelp-query+filerepoinfo-example-simple": "קבלת מידע על מאגרי קבצים.",
-       "apihelp-query+fileusage-description": "מציאת כל הדפים שמשתמשים בקבצים הנתונים.",
        "apihelp-query+fileusage-param-prop": "אילו מאפיינים לקבל:",
        "apihelp-query+fileusage-paramvalue-prop-pageid": "מזהה הדף של כל דף.",
        "apihelp-query+fileusage-paramvalue-prop-title": "השם של כל דף.",
        "apihelp-query+fileusage-param-show": "לחפש רק פריטים שמתאימים לאמות המידה הבאות:\n;redirect:להציג רק הפניות.\n;!redirect:לא להציג הפניות.",
        "apihelp-query+fileusage-example-simple": "קבלת רשימת דפים שמשתמשים ב־[[:File:Example.jpg]].",
        "apihelp-query+fileusage-example-generator": "קבלת מידע על דפים שמשתמשים ב־[[:File:Example.jpg]].",
-       "apihelp-query+imageinfo-description": "החזרת מידע על קובץ והיסטורייה העלאה.",
        "apihelp-query+imageinfo-param-prop": "איזה מידע על הקובץ לקבל:",
        "apihelp-query+imageinfo-paramvalue-prop-timestamp": "הוספת חותם־זמן לגרסה שהועלתה.",
        "apihelp-query+imageinfo-paramvalue-prop-user": "הוספה המשתמש שהעלה כל גרסה של קובץ.",
        "apihelp-query+imageinfo-param-localonly": "חיפוש אחר קבצים במאגר המקומי בלבד.",
        "apihelp-query+imageinfo-example-simple": "קבלת מידע על הגרסה הנוכחית של [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+imageinfo-example-dated": "אחזור מידע על גרסאות של [[:File:Test.jpg]] מ־2008 ואחרי‏־כן.",
-       "apihelp-query+images-description": "להחזיר את כל הקבצים שמכילים הדפים הנתונים.",
        "apihelp-query+images-param-limit": "כמה קבצים להחזיר.",
        "apihelp-query+images-param-images": "לרשום רק את הקבצים האלה. שימוש לבדיקת האם לדף מסוים יש קובץ מסוים.",
        "apihelp-query+images-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+images-example-simple": "קבלת רשימת קבצים שמשמשים ב־[[Main Page]].",
        "apihelp-query+images-example-generator": "קבלת מידע על כל הקבצים שמשמשים ב־[[Main Page]].",
-       "apihelp-query+imageusage-description": "מציאת כל הדפים שמתמשים בשם התמונה הנתונה.",
        "apihelp-query+imageusage-param-title": "איזו כותרת לחפש. לא ניתן להשתמש בזה יחד עם $1pageid.",
        "apihelp-query+imageusage-param-pageid": "מזהה דף לחיפוש. לא יכול לשמש יחד עם $1title.",
        "apihelp-query+imageusage-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+imageusage-param-redirect": "אם הדף המקשר הוא הפניה, למצוא גם את כל הדפים שמקשרים לאותה ההפניה. ההגבלה המרבית מוקטנת בחצי.",
        "apihelp-query+imageusage-example-simple": "הצגת דפים שמשתמשים ב־[[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+imageusage-example-generator": "קבלת פרטים על דפים שמשתמשים ב־[[:File:Albert Einstein Head.jpg]].",
-       "apihelp-query+info-description": "קבלת מידע בסיסי על הדף.",
        "apihelp-query+info-param-prop": "אילו מאפיינים נוספים לקבל:",
        "apihelp-query+info-paramvalue-prop-protection": "לרשום את רמת ההגנה של כל דף.",
        "apihelp-query+info-paramvalue-prop-talkid": "מזהה הדף של דף השיחה עבור כל דף שאינו דף שיחה.",
        "apihelp-query+info-param-token": "להשתמש ב־[[Special:ApiHelp/query+tokens|action=query&meta=tokens]] במקום.",
        "apihelp-query+info-example-simple": "קבלת מידע על הדף <kbd>Main Page</kbd>",
        "apihelp-query+info-example-protection": "קבלת מידע כללי ומידע על הגנה של הדף <kbd>Main Page</kbd>.",
-       "apihelp-query+iwbacklinks-description": "מציאות כל הדפים שמקשרים לקישור הבינוויקי הנתון.\n\nיכול לשמש למציאת כל הקישורים עם התחילית, או כל הקישורים לכותרת (עם תחילית נתונה). אי־שימוש בשום פרמטר אומר \"כל קישורי בינוויקי\".",
        "apihelp-query+iwbacklinks-param-prefix": "תחילית לבינוויקי.",
        "apihelp-query+iwbacklinks-param-title": "איזה קישור בינוויקי לחפש. צריך להשתמש בזה יחד עם <var>$1blprefix</var>.",
        "apihelp-query+iwbacklinks-param-limit": "כמה דפים להחזיר בסך הכול.",
        "apihelp-query+iwbacklinks-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+iwbacklinks-example-simple": "קבלת דפים שמקשרים ל־[[wikibooks:Test]].",
        "apihelp-query+iwbacklinks-example-generator": "קבלת מידע על דפים שמקשרים ל־[[wikibooks:Test]].",
-       "apihelp-query+iwlinks-description": "החזרת כל קישורי הבינוויקי מהדפים הנתונים.",
        "apihelp-query+iwlinks-param-url": "האם לקבל את ה־URL המלא (לא יכול לשמש עם $1prop).",
        "apihelp-query+iwlinks-param-prop": "אילו מאפיינים נוספים לקבל עבור כל קישור בין־לשוני:",
        "apihelp-query+iwlinks-paramvalue-prop-url": "הוספת ה־URL המלא.",
        "apihelp-query+iwlinks-param-title": "איזה קישור בינוויקי לחפש. צריך להשתמש בזה יחד עם <var>$1prefix</var>.",
        "apihelp-query+iwlinks-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+iwlinks-example-simple": "קבלת קישורי בינוויקי מהדף <kbd>Main Page</kbd>.",
-       "apihelp-query+langbacklinks-description": "מציאת כל הדפים שמקשרים לקישור השפה הנתון.\n\nיכול לשמש למציאת כל הקישורים עם קוד שפה, או כל הקישורים לכותרת (עם שפה נתונה). אי־שימוש בשום פרמטר פירושו \"כל קישורי שפה\".\n\nנא לשים לב לכך שזה עשוי לא להתייחס לקישורי שפה שמוסיפות הרחבות.",
        "apihelp-query+langbacklinks-param-lang": "שפה עבור קישור שפה.",
        "apihelp-query+langbacklinks-param-title": "איזה קישור שפה לחפש. חייב לשמש עם $1lang.",
        "apihelp-query+langbacklinks-param-limit": "כמה דפים להחזיר בסך הכול.",
        "apihelp-query+langbacklinks-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+langbacklinks-example-simple": "קבלת דפים שמקשרים ל־[[:fr:Test]].",
        "apihelp-query+langbacklinks-example-generator": "קבלת מידע על דפים שמקשרים ל־[[:fr:Test]].",
-       "apihelp-query+langlinks-description": "החזרת כל הקישורים הבין־לשוניים מהדפים הנתונים.",
        "apihelp-query+langlinks-param-limit": "כמה קישורי שפה להחזיר.",
        "apihelp-query+langlinks-param-url": "האם לקבל את ה־URL המלא (לא יכול לשמש עם <var>$1prop</var>).",
        "apihelp-query+langlinks-param-prop": "אילו מאפיינים נוספים לקבל עבור כל קישור בין־לשוני:",
        "apihelp-query+langlinks-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+langlinks-param-inlanguagecode": "קוד שפה ששמות שפות מתורגמות.",
        "apihelp-query+langlinks-example-simple": "קבלת קישורים בין־לשוניים מהדף <kbd>Main Page</kbd>.",
-       "apihelp-query+links-description": "החזרת כל הקישורים מהדפים שצוינו.",
        "apihelp-query+links-param-namespace": "להציג קישורים רק במרחבי השם האלה.",
        "apihelp-query+links-param-limit": "כמה קישורים להחזיר.",
        "apihelp-query+links-param-titles": "לרשום רק קישורים לכותרות האלו. שימושי לבדיקה האם דף מסוים מקשר לכותרת מסוימת.",
        "apihelp-query+links-example-simple": "קבלת קישורים מהדף <kbd>Main Page</kbd>",
        "apihelp-query+links-example-generator": "קבלת מידע על דפי הקישור בדף <kbd>Main Page</kbd>.",
        "apihelp-query+links-example-namespaces": "קבלת קישורים מהדף <kbd>Main Page</kbd> במרחבי השם {{ns:user}} ו־{{ns:template}}.",
-       "apihelp-query+linkshere-description": "מציאת כל הדפים שמקשרים לדפים הנתונים.",
        "apihelp-query+linkshere-param-prop": "אילו מאפיינים לקבל:",
        "apihelp-query+linkshere-paramvalue-prop-pageid": "מזהה הדף של כל דף.",
        "apihelp-query+linkshere-paramvalue-prop-title": "השם של כל דף.",
        "apihelp-query+linkshere-param-show": "הצגת פריטים שתואמים את הדרישות הללו בלבד:\n;redirect:הצגת הפניות בלבד.\n;!redirect:הצגת קישורים שאינם הפניות בלבד.",
        "apihelp-query+linkshere-example-simple": "קבלת רשימת דפים שמקשרים ל־[[Main Page]].",
        "apihelp-query+linkshere-example-generator": "קבל מידע על דפים שמקשרים ל־[[Main Page]].",
-       "apihelp-query+logevents-description": "קבלת אירועים מהרישומים.",
        "apihelp-query+logevents-param-prop": "אילו מאפיינים לקבל:",
        "apihelp-query+logevents-paramvalue-prop-ids": "הוספת המזהה של אירוע היומן.",
        "apihelp-query+logevents-paramvalue-prop-title": "הוספת שם הדף של אירוע היומן.",
        "apihelp-query+logevents-param-tag": "לרשום רק אירועים שמתויגם בתג הזה.",
        "apihelp-query+logevents-param-limit": "כמה עיולי אירועים להחזיר בסך הכול.",
        "apihelp-query+logevents-example-simple": "רשימת אירועי יומן אחרונים.",
-       "apihelp-query+pagepropnames-description": "רשימת כל שמות המאפיינים שמשמשים בוויקי.",
        "apihelp-query+pagepropnames-param-limit": "המספר המרבי של השמות להחזיר.",
        "apihelp-query+pagepropnames-example-simple": "לתת את 10 שמות המאפיינים הראשונים.",
-       "apihelp-query+pageprops-description": "קבלת מאפייני דף שונים שמוגדרים בתוכן הדף.",
        "apihelp-query+pageprops-param-prop": "לרשום רק את המאפיינים האלה (שימוש ב־<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd> מחזיר רשימת שמות מאפייני דף בשימוש). זה שימושי לבדיקה האם דפים משתמשים במאפיין דף מסוים.",
        "apihelp-query+pageprops-example-simple": "קבלת מאפיינים עבור הדפים <kbd>Main Page</kbd> ו־<kbd>MediaWiki</kbd>.",
-       "apihelp-query+pageswithprop-description": "לרשום את כל הדפים שמשתמשים במאפיין דף נתון.",
        "apihelp-query+pageswithprop-param-propname": "מאפיין דף שעבורו למנות דפים (<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd> מחזיר רשימת שמות מאפייני דף בשימוש).",
        "apihelp-query+pageswithprop-param-prop": "אילו חלקי מידע לכלול:",
        "apihelp-query+pageswithprop-paramvalue-prop-ids": "הוספת מזהה הדף.",
        "apihelp-query+pageswithprop-param-dir": "באיזה כיוון לסדר.",
        "apihelp-query+pageswithprop-example-simple": "הצגת עשרת הדפים הראשונים שעושים שימוש ב־<code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+pageswithprop-example-generator": "קבלת מידע נוסף על עשרת הדפים הראשונים המשתמשים ב־<code>_&#95;NOTOC_&#95;</code>.",
-       "apihelp-query+prefixsearch-description": "ביצוע חיפוש תחילית של כותרות דפים.\n\nלמרות הדמיון בשם, המודול הזה אינו אמור להיות שווה ל־[[Special:PrefixIndex]] (\"מיוחד:דפים המתחילים ב\"); לדבר כזה, ר' <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> עם הפרמטר <kbd>apprefix</kbd>. מטרת המודול הזה דומה ל־<kbd>[[Special:ApiHelp/opensearch|action=opensearch]]</kbd>: לקבל קלט ממשתמש ולספק את הכותרות המתאימות ביותר. בהתאם לשרת מנוע החיפוש, זה יכול לכלול תיקון שגיאות כתיב, הימנעות מדפי הפניה והירסטיקות אחרות.",
        "apihelp-query+prefixsearch-param-search": "מחרוזת לחיפוש.",
        "apihelp-query+prefixsearch-param-namespace": "שמות מתחם לחיפוש.",
        "apihelp-query+prefixsearch-param-limit": "מספר התוצאות המרבי להחזרה.",
        "apihelp-query+prefixsearch-param-offset": "מספר תוצאות לדילוג.",
        "apihelp-query+prefixsearch-example-simple": "חיפוש שםות דפים שמתחילים ב־<kbd>meaning</kbd>.",
        "apihelp-query+prefixsearch-param-profile": "באיזה פרופיל חיפוש להשתמש.",
-       "apihelp-query+protectedtitles-description": "לרשום את כל הכותרות שמוגנות מפני יצירה.",
        "apihelp-query+protectedtitles-param-namespace": "לרשום רק כותרות במרחבי השם האלה.",
        "apihelp-query+protectedtitles-param-level": "לרשום רק שמות עם רמת ההגנה הזאת.",
        "apihelp-query+protectedtitles-param-limit": "כמה דפים להחזיר בסך הכול.",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "הוספת רמת ההגנה.",
        "apihelp-query+protectedtitles-example-simple": "רשימת כותרות מוגנות.",
        "apihelp-query+protectedtitles-example-generator": "חיפוש קישורים לכותרות מוגנות במרחב הראשי.",
-       "apihelp-query+querypage-description": "קבלת רשימה שמסופקת על־ידי דף מיוחד מבוסס־QueryPage.",
        "apihelp-query+querypage-param-page": "שם הדף המיוחד. לתשומת לבך, זה תלוי־רישיות.",
        "apihelp-query+querypage-param-limit": "מספר תוצאות להחזרה.",
        "apihelp-query+querypage-example-ancientpages": "מחזיר תוצאות מ־[[Special:Ancientpages]].",
-       "apihelp-query+random-description": "קבלת ערכת דפים אקראיים.\n\nהדפים רשומים בסדר קבוע, ורק נקודת ההתחלה אקראית. זה אומר שאם, למשל, <samp>Main Page</samp> הוא הדף האקראי הראשון הרשימה, <samp>List of fictional monkeys</samp> יהיה <em>תמיד</em> השני, <samp>List of people on stamps of Vanuatu</samp> שלישי, וכו'.",
        "apihelp-query+random-param-namespace": "מחזיר דפים רק במרחבי השם האלה.",
        "apihelp-query+random-param-limit": "להגביל את מספר הדפים האקראיים שיוחזרו.",
        "apihelp-query+random-param-redirect": "נא להשתמש ב־<kbd>$1filterredir=redirects</kbd> במקום.",
        "apihelp-query+random-param-filterredir": "איך לסנן הפניות.",
        "apihelp-query+random-example-simple": "להחזיר שני דפים אקראיים מהמרחב הראשי.",
        "apihelp-query+random-example-generator": "החזרת מידע על הדף על שני דפים אקראיים מהמרחב הראשי.",
-       "apihelp-query+recentchanges-description": "למנות שינויים אחרונים.",
        "apihelp-query+recentchanges-param-start": "מאיזה חותם־זמן להתחיל למנות.",
        "apihelp-query+recentchanges-param-end": "באיזה חותם זמן להפסיק לרשום.",
        "apihelp-query+recentchanges-param-namespace": "לסנן את השינויים רק למרחבי השם האלה.",
        "apihelp-query+recentchanges-param-generaterevisions": "בעת שימוש בתור מחולל, לחולל מזהי גרסה במקום כותרות. עיולי שינויים אחרונים ללא מזהה גרסה משויך (למשל רוב עיולי היומן) לא יחוללו דבר.",
        "apihelp-query+recentchanges-example-simple": "הצגת השינויים האחרונים.",
        "apihelp-query+recentchanges-example-generator": "קבלת מידע על הדף על שינויים אחרונים שלא נבדקו.",
-       "apihelp-query+redirects-description": "מחזיר את כל ההפניות לדפים הנתונים.",
        "apihelp-query+redirects-param-prop": "אילו מאפיינים לקבל:",
        "apihelp-query+redirects-paramvalue-prop-pageid": "מזהה הדף של כל הפניה.",
        "apihelp-query+redirects-paramvalue-prop-title": "השם של כל הפניה.",
        "apihelp-query+redirects-param-show": "לחפש רק פריטים שמתאימים לאמות המידה הבאות:\n;fragment:להציג רק הפניות עם מקטע.\n;!fragment:להציג רק הפניות ללא מקטע.",
        "apihelp-query+redirects-example-simple": "קבלת רשימת הפניות ל־[[Main Page]]",
        "apihelp-query+redirects-example-generator": "קבלת מידע על כל ההפניות ל־[[Main Page]].",
-       "apihelp-query+revisions-description": "קבלת מידע על גרסה.\n\nיכול לשמש במספר דרכים:\n# קבלת נתונים על ערכת דפים (גרסה אחרונה), באמצעות כותרות או מזהי דף.\n# קבלת גרסאות עבור דף נתון אחד, באמצעות שימוש בכותרות או במזהי דף עם start‏, end או limit.\n# קבלת נתונים על ערכת גרסאות באמצעות הגדרת המזהים שלהם עם revid־ים.",
        "apihelp-query+revisions-paraminfo-singlepageonly": "יכול לשמש רק עם דף בודד (mode #2).",
-       "apihelp-query+revisions-param-startid": "×\9e×\90×\99×\96×\94 ×\9e×\96×\94×\94 ×\92רס×\94 ×\9c×\94ת×\97×\99×\9c ×\9c×\9e× ×\95ת.",
-       "apihelp-query+revisions-param-endid": "×\91×\90×\99×\96×\94 ×\9e×\96×\94×\94 ×\92רס×\94 ×\9c×\94פס×\99ק ×\90ת ×\9e× ×\99×\99ת ×\94×\92רס×\90×\95ת.",
+       "apihelp-query+revisions-param-startid": "×\9c×\94ת×\97×\99×\9c ×\9c×\9e× ×\95ת ×\9e×\97×\95ת×\9d ×\94×\96×\9e×\9f ×©×\9c ×\94×\92רס×\94 ×\94×\96×\90ת. ×\94×\92רס×\94 ×¦×¨×\99×\9b×\94 ×\9c×\94×\99×\95ת ×§×\99×\99×\9eת, ×\90×\91×\9c ×\9c×\90 ×\97×\99×\99×\91ת ×\9c×\94×\99×\95ת ×©×\99×\99×\9bת ×\9c×\93×£ ×\94×\96×\94.",
+       "apihelp-query+revisions-param-endid": "×\9c×\94פס×\99ק ×\9c×\9e× ×\95ת ×\9e×\97×\95ת×\9d ×\94×\96×\9e×\9f ×©×\9c ×\94×\92רס×\94 ×\94×\96×\90ת. ×\94×\92רס×\94 ×¦×¨×\99×\9b×\94 ×\9c×\94×\99×\95ת ×§×\99×\99×\9eת, ×\90×\91×\9c ×\9c×\90 ×\97×\99×\99×\91ת ×\9c×\94×\99×\95ת ×©×\99×\99×\9bת ×\9c×\93×£ ×\94×\96×\94.",
        "apihelp-query+revisions-param-start": "מאיזה חותם־זמן של גרסה להתחיל למנות.",
        "apihelp-query+revisions-param-end": "למנות עד חותם־הזמן הזה.",
        "apihelp-query+revisions-param-user": "לכלול רק גרסאות מאת משתמש.",
        "apihelp-query+revisions+base-paramvalue-prop-ids": "מזהה הגרסה.",
        "apihelp-query+revisions+base-paramvalue-prop-flags": "דגלי גרסה (משני).",
        "apihelp-query+revisions+base-paramvalue-prop-timestamp": "חותם־הזמן של הגרסה.",
-       "apihelp-query+revisions+base-paramvalue-prop-user": "המתמש שעשה את הגרסה",
+       "apihelp-query+revisions+base-paramvalue-prop-user": "×\94×\9eשת×\9eש ×©×¢×©×\94 ×\90ת ×\94×\92רס×\94",
        "apihelp-query+revisions+base-paramvalue-prop-userid": "מזהה המשתמש של יוצר הגרסה.",
        "apihelp-query+revisions+base-paramvalue-prop-size": "אורך (בבייטים) של הגרסה.",
        "apihelp-query+revisions+base-paramvalue-prop-sha1": "SHA-1 (בבסיס 16) של הגרסה.",
        "apihelp-query+revisions+base-paramvalue-prop-parsedcomment": "הערה מפוענחת מאת המשתמש על הגרסה.",
        "apihelp-query+revisions+base-paramvalue-prop-content": "הטקסט של הגרסה.",
        "apihelp-query+revisions+base-paramvalue-prop-tags": "התגים עבור הגרסה.",
-       "apihelp-query+revisions+base-paramvalue-prop-parsetree": "עץ פענוח XML של תוכן הגרסה (דורש מודל תוכן <code>$1</code>).",
+       "apihelp-query+revisions+base-paramvalue-prop-parsetree": "<span class=\"apihelp-deprecated\">מיושן.</span> יש להשתמש ב־ <kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> או ב־ <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd> במקום בזה.\n\nעץ פענוח XML של תוכן הגרסה (דורש מודל תוכן <code>$1</code>).",
        "apihelp-query+revisions+base-param-limit": "הגבלת מספר הגרסאות שיוחזרו.",
-       "apihelp-query+revisions+base-param-expandtemplates": "להרחיב תבניות בתוכן הגרסה (דורש $1prop=content).",
-       "apihelp-query+revisions+base-param-generatexml": "יצירת עץ פענוח XML עבור תוכן הגרסה (דורש את $1prop=content; מוחלף ב־<kbd>$1prop=parsetree</kbd>).",
-       "apihelp-query+revisions+base-param-parse": "פענוח תוכן הגרסה (דורש $1prop=content). מסיבות של ביצועים, אם האפשרות הזאת משמשת, $1limit נכפה לערך 1.",
+       "apihelp-query+revisions+base-param-expandtemplates": "×\99ש ×\9c×\94שת×\9eש ×\91Ö¾<kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> ×\91×\9eק×\95×\9d ×\91×\96×\94. ×\9c×\94ר×\97×\99×\91 ×ª×\91× ×\99×\95ת ×\91ת×\95×\9b×\9f ×\94×\92רס×\94 (×\93×\95רש $1prop=content).",
+       "apihelp-query+revisions+base-param-generatexml": "×\99ש ×\9c×\94שת×\9eש ×\91Ö¾<kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> ×\90×\95 ×\91Ö¾<kbd>[[Special:ApiHelp/parse|action=parse]]</kbd> ×\91×\9eק×\95×\9d ×\91×\96×\94. ×\99צ×\99רת ×¢×¥ ×¤×¢× ×\95×\97 XML ×¢×\91×\95ר ×ª×\95×\9b×\9f ×\94×\92רס×\94 (×\93×\95רש ×\90ת $1prop=content; ×\9e×\95×\97×\9c×£ ×\91Ö¾<kbd>$1prop=parsetree</kbd>).",
+       "apihelp-query+revisions+base-param-parse": "×\99ש ×\9c×\94שת×\9eש ×\91Ö¾<kbd>[[Special:ApiHelp/parse|action=parse]]</kbd> ×\91×\9eק×\95×\9d ×\91×\96×\94. ×¤×¢× ×\95×\97 ×ª×\95×\9b×\9f ×\94×\92רס×\94 (×\93×\95רש $1prop=content). ×\9eס×\99×\91×\95ת ×©×\9c ×\91×\99צ×\95×¢×\99×\9d, ×\90×\9d ×\94×\90פשר×\95ת ×\94×\96×\90ת ×\9eש×\9eשת, $1limit × ×\9bפ×\94 ×\9cער×\9a 1.",
        "apihelp-query+revisions+base-param-section": "לאחזר רק את התוכן של הפִסקה עם המספר הזה.",
-       "apihelp-query+revisions+base-param-diffto": "×\9e×\96×\94×\94 ×\94×\92רס×\94 ×©×\90×\9c×\99×\95 ×ª×\95ש×\95×\95×\94 ×\9b×\9c ×\92רס×\94. ×\99ש ×\9c×\94שת×\9eש ×\91Ö¾<kbd>prev</kbd>â\80\8f, <kbd>next</kbd> ×\95Ö¾<kbd>cur</kbd> עבור הגרסה הקודמת, הבא והנוכחית, בהתאמה.",
-       "apihelp-query+revisions+base-param-difftotext": "×\94×\98קס×\98 ×©×\90×\9c×\99×\95 ×ª×\95ש×\95×\95×\94 ×\9b×\9c ×\92רס×\94. מבצע השוואה רק של מספר מוגבל של גרסאות. דורס את <var>$1diffto</var>. אם מוגדר <var>$1section</var>, רק הפסקה הזאת תושווה אל מול הטקסט הזה.",
-       "apihelp-query+revisions+base-param-difftotextpst": "ביצוע התמרה לפני שמירה על הטקסט לפני הרצת השוואה. תקף רק כשמשמש עם <var>$1difftotext</var>.",
+       "apihelp-query+revisions+base-param-diffto": "×\99ש ×\9c×\94שת×\9eש ×\91Ö¾<kbd>[[Special:ApiHelp/compare|action=compare]]</kbd> ×\91×\9eק×\95×\9d ×\91×\96×\94. ×\9e×\96×\94×\94 ×\94×\92רס×\94 ×©×\9b×\9c ×\92רס×\94 ×ª×\95ש×\95×\95×\94 ×\90×\9c×\99×\94. ×\99ש ×\9c×\94שת×\9eש ×\91Ö¾<kbd dir=\"ltr\">prev</kbd>â\80\8f, <kbd dir=\"ltr\">next</kbd> ×\95Ö¾<kbd dir=\"ltr\">cur</kbd> עבור הגרסה הקודמת, הבא והנוכחית, בהתאמה.",
+       "apihelp-query+revisions+base-param-difftotext": "×\99ש ×\9c×\94שת×\9eש ×\91Ö¾<kbd>[[Special:ApiHelp/compare|action=compare]]</kbd> ×\91×\9eק×\95×\9d ×\91×\96×\94. ×\94×\98קס×\98 ×©×\9b×\9c ×\92רס×\94 ×\92רס×\94 ×ª×\95ש×\95×\95×\94 ×\90×\9c×\99×\95. מבצע השוואה רק של מספר מוגבל של גרסאות. דורס את <var>$1diffto</var>. אם מוגדר <var>$1section</var>, רק הפסקה הזאת תושווה אל מול הטקסט הזה.",
+       "apihelp-query+revisions+base-param-difftotextpst": "×\99ש ×\9c×\94שת×\9eש ×\91Ö¾<kbd>[[Special:ApiHelp/compare|action=compare]]</kbd> ×\91×\9eק×\95×\9d ×\91×\96×\94. ×\91×\99צ×\95×¢ ×\94ת×\9eר×\94 ×\9cפנ×\99 ×©×\9e×\99ר×\94 ×¢×\9c ×\94×\98קס×\98 ×\9cפנ×\99 ×\94רצת ×\94ש×\95×\95×\90×\94. ×ª×§×£ ×¨×§ ×\9bש×\9eש×\9eש ×¢×\9d <var>$1difftotext</var>.",
        "apihelp-query+revisions+base-param-contentformat": "תסדיר ההסדרה שמשמש את <var>$1difftotext</var> וצפוי לפלט של תוכן.",
-       "apihelp-query+search-description": "ביצוע חיפוש בכל הטקסט.",
        "apihelp-query+search-param-search": "חיפוש שמות דפים או תוכן שמתאים לערך הזה. אפשר להשתמש בחיפוש מחרוזת כדי לקרוא לאפשרויות חיפוש מתקדמות, בהתאם למה שממומש בשרת החיפוש של הוויקי.",
        "apihelp-query+search-param-namespace": "חיפוש רק במרחבי השם האלה.",
        "apihelp-query+search-param-what": "איזה סוג חיפוש לבצע.",
        "apihelp-query+search-param-limit": "כמה דפים להחזיר בסך הכול.",
        "apihelp-query+search-param-interwiki": "לכלול תוצאות בינוויקי בחיפוש, אם זמין.",
        "apihelp-query+search-param-backend": "באיזה שרת חיפוש להשתמש אם לא בבררת המחדל.",
-       "apihelp-query+search-param-enablerewrites": "×\94פע×\9cת ×©×\9bת×\95×\91 ×©×\90×\99×\9cת×\95ת ×¤× ×\99×\9e×\99. ×©×¨×ª×\99 ×\97×\99פ×\95ש ×\90×\97×\93×\99×\9d ×\99×\9b×\95×\9c×\99×\9d ×\9cש×\9bת×\91 ×\90ת ×\94ש×\90×\99×\9cת×\94 ×\9cצ×\95ר×\94 ×©×\9c×\93עת×\9d × ×\95תנת ×ª×\95צ×\90×\95ת ×\98×\95×\91×\95ת ×\99×\95תר, ×\9c×\9eש×\9c תיקון שגיאות כתיב.",
+       "apihelp-query+search-param-enablerewrites": "×\94פע×\9cת ×©×\9bת×\95×\91 ×©×\90×\99×\9cת×\95ת ×¤× ×\99×\9e×\99. ×©×¨×ª×\99 ×\97×\99פ×\95ש ×\90×\97×\93×\99×\9d ×\99×\9b×\95×\9c×\99×\9d ×\9cש×\9bת×\91 ×\90ת ×\94ש×\90×\99×\9cת×\94 ×\9cצ×\95ר×\94 ×\90×\97רת ×©× ×\97ש×\91ת ×\9c×\9b×\96×\90ת ×©×\9eספקת ×ª×\95צ×\90×\95ת ×\98×\95×\91×\95ת ×\99×\95תר, ×\9c×\9eש×\9c ×\91×\90×\9eצע×\95ת תיקון שגיאות כתיב.",
        "apihelp-query+search-example-simple": "חיפוש <kbd>meaning</kbd>.",
        "apihelp-query+search-example-text": "חיפוש טקסטים עבור <kbd>meaning</kbd>.",
        "apihelp-query+search-example-generator": "קבלת מידע על הדף עבור שמוחזרים מחיפוש אחרי <kbd>meaning</kbd>.",
-       "apihelp-query+siteinfo-description": "החזרת מידע כללי על האתר.",
        "apihelp-query+siteinfo-param-prop": "איזה מיד לקבל:",
        "apihelp-query+siteinfo-paramvalue-prop-general": "מידע מערכת כללי.",
        "apihelp-query+siteinfo-paramvalue-prop-namespaces": "רשימת מרחבי שם רשומים והשמות הקנוניים שלהם.",
        "apihelp-query+siteinfo-example-simple": "איזור מידע על האתר.",
        "apihelp-query+siteinfo-example-interwiki": "אחזור תחיליות בינוויקי מקומיות.",
        "apihelp-query+siteinfo-example-replag": "בדיקת שיהוי השכפול הנוכחי.",
-       "apihelp-query+stashimageinfo-description": "החזרת מידע על הקובץ עבור הקבצים המוסלקים.",
        "apihelp-query+stashimageinfo-param-filekey": "מפתח שמזהה העלאה קודמת שהוסלקה באופן זמני.",
        "apihelp-query+stashimageinfo-param-sessionkey": "כינוי ל־$1filekey, לתאימות אחורה.",
        "apihelp-query+stashimageinfo-example-simple": "החזרת מידע על קובץ מוסלק.",
        "apihelp-query+stashimageinfo-example-params": "החזרת תמונות ממוזערות עבור שני קבצים מוסלקים.",
-       "apihelp-query+tags-description": "רשימת תגי שינוי.",
        "apihelp-query+tags-param-limit": "המספר המרבי של תגים לרשום.",
        "apihelp-query+tags-param-prop": "אילו מאפיינים לקבל:",
        "apihelp-query+tags-paramvalue-prop-name": "הוספת שם התג.",
        "apihelp-query+tags-paramvalue-prop-source": "קבלת מקורות התג, שיכולים להיות <samp>extension</samp> עבור תגים שמגדירות הרחבות ו־<samp>manual</samp> עבור תגים שמשתמשים יכולים להחיל ידנית.",
        "apihelp-query+tags-paramvalue-prop-active": "האם התג עדיין מוּחל.",
        "apihelp-query+tags-example-simple": "רשימת תגים זמינים.",
-       "apihelp-query+templates-description": "החזרת כל הדפים המוכללים בדפים הנתונים.",
        "apihelp-query+templates-param-namespace": "הצגת תבניות רק במרחב השם הזה.",
        "apihelp-query+templates-param-limit": "כמה תבניות להחזיר.",
        "apihelp-query+templates-param-templates": "לרשום רק את התבניות האלו. שימושי לבדיקה האם דף מסוים משתמש בתבנית מסוימת.",
        "apihelp-query+templates-example-simple": "קבלת התבניות המשמשות בדף <kbd>Main Page</kbd>.",
        "apihelp-query+templates-example-generator": "קבלת מידע על דפי התבנית שמשמשים ב־<kbd>Main Page</kbd>.",
        "apihelp-query+templates-example-namespaces": "קבלת מידע במרחבי השם {{ns:user}} ו־{{ns:template}} שמוכללים בדף <kbd>Main Page</kbd>.",
-       "apihelp-query+tokens-description": "קבלת אסימונים לפעולות שמשנות נתונים.",
        "apihelp-query+tokens-param-type": "סוגי האסימונים לבקש.",
        "apihelp-query+tokens-example-simple": "אחזור אסימון csrf (בררת המחדל).",
        "apihelp-query+tokens-example-types": "אחזור אסימון של רשימת המעקב ואסימון של ניטור",
-       "apihelp-query+transcludedin-description": "מציאת כל הדפים שמכלילים את הדפים הנתונים.",
        "apihelp-query+transcludedin-param-prop": "אילו מאפיינים לקבל:",
        "apihelp-query+transcludedin-paramvalue-prop-pageid": "מזהה הדף של כל דף.",
        "apihelp-query+transcludedin-paramvalue-prop-title": "השם של כל דף.",
        "apihelp-query+transcludedin-param-show": "לחפש רק פריטים שמתאימים לאמות המידה הבאות:\n;redirect:להציג רק הפניות.\n;!redirect:לא להציג הפניות.",
        "apihelp-query+transcludedin-example-simple": "קבלת רשימה של דפים שמכלילים את <kbd>Main Page</kbd>.",
        "apihelp-query+transcludedin-example-generator": "קבלת מידע על הדפים שמכלילים את <kbd>Main Page</kbd>.",
-       "apihelp-query+usercontribs-description": "קבלת כל העריכות של המשתמש.",
        "apihelp-query+usercontribs-param-limit": "המספר המרבי של התרומות להחזיר.",
        "apihelp-query+usercontribs-param-start": "באיזה חותם־הזמן להתחיל.",
        "apihelp-query+usercontribs-param-end": "באיזה חותם־הזמן לסיים",
        "apihelp-query+usercontribs-param-toponly": "לרשום רק שינויים שהם הגרסה האחרונה.",
        "apihelp-query+usercontribs-example-user": "הצגת התרומות של המשתמש <kbd>Example</kbd>.",
        "apihelp-query+usercontribs-example-ipprefix": "הצגת תרומות מכל כתובות ה־IP שמתחילות ב־<kbd dir=\"ltr\">192.0.2.</kbd>.",
-       "apihelp-query+userinfo-description": "קבלת מידע על המשתמש הנוכחי.",
        "apihelp-query+userinfo-param-prop": "אילו חלקי מידע לכלול:",
        "apihelp-query+userinfo-paramvalue-prop-blockinfo": "מתייג אם המשתמש הנוכחי נחסם, על־ידי מי ומאיזו סיבה.",
        "apihelp-query+userinfo-paramvalue-prop-hasmsg": "הוספת התג <samp>messages</samp> אם למשתמש הנוכחי יש הודעות ממתינות.",
        "apihelp-query+userinfo-param-attachedwiki": "עם <kbd>$1prop=centralids</kbd>, לציין האם המשתמש משויך לוויקי עם המזהה הזה.",
        "apihelp-query+userinfo-example-simple": "קבלת מידע על המשתמש הנוכחי.",
        "apihelp-query+userinfo-example-data": "קבלת מידע נוסף על המשתמש הנוכחי.",
-       "apihelp-query+users-description": "קבלת מידע על רשימת משתמשים.",
        "apihelp-query+users-param-prop": "אילו חלקי מידע לקבל:",
        "apihelp-query+users-paramvalue-prop-blockinfo": "מתייג אם המשתמש חסום, על־ידי מי, ומאיזו סיבה.",
        "apihelp-query+users-paramvalue-prop-groups": "רשימת כל הקבוצות שהמשתמש שייך אליהן.",
        "apihelp-query+users-param-userids": "רשימת מזהי משתמש שעבורם יתקבל המידע.",
        "apihelp-query+users-param-token": "יש להשתמש ב־<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> במקום.",
        "apihelp-query+users-example-simple": "החזרת מידע עבור המשתמש <kbd>Example</kbd>.",
-       "apihelp-query+watchlist-description": "קבלת שינויים אחרונים לדפים ברשימת המעקב של המשתמש הנוכחי.",
        "apihelp-query+watchlist-param-allrev": "לכלול גרסאות מרובות של אותו הדף בתוך מסגרת הזמן הנתונה.",
        "apihelp-query+watchlist-param-start": "מאיזה חותם־זמן להתחיל למנות.",
        "apihelp-query+watchlist-param-end": "באיזה חותם זמן להפסיק לרשום.",
        "apihelp-query+watchlist-example-generator": "אחזור מידע על הדף עבור דפים שהשתנו לאחרונה ברשימת המעקב של המשתמש הנוכחי.",
        "apihelp-query+watchlist-example-generator-rev": "אחזור מידע על הגרסה עבור דפים שהשתנו לאחרונה ברשימת המעקב של המשתמש הנוכחי.",
        "apihelp-query+watchlist-example-wlowner": "לרשום את הגרסה האחרונה עבור דפים שהשתנו לאחרונה ברשימת המעקב של משתמש <kbd>Example</kbd>.",
-       "apihelp-query+watchlistraw-description": "קבלת כל הדפים ברשימת המעקב של המשתמש הנוכחי.",
        "apihelp-query+watchlistraw-param-namespace": "לרשום רק דפים במרחב השם הנתון.",
        "apihelp-query+watchlistraw-param-limit": "כמה תוצאות סך הכול להחזיר בכל בקשה.",
        "apihelp-query+watchlistraw-param-prop": "אילו מאפיינים נוספים לקבל:",
        "apihelp-query+watchlistraw-param-totitle": "באיזו כותרת (עם תחילית מרחב שם) להפסיק למנות.",
        "apihelp-query+watchlistraw-example-simple": "לרשום דפים ברשימת המעקב של המשתמש הנוכחי.",
        "apihelp-query+watchlistraw-example-generator": "אחזור מידע על הדפים עבור דפים ברשימת המעקב של המשתמש הנוכחי.",
-       "apihelp-removeauthenticationdata-description": "הסרת נתוני אימות עבור המשתמש הנוכחי.",
        "apihelp-removeauthenticationdata-example-simple": "לנסות להסיר את נתוני המשתמש הנוכחי בשביל <kbd>FooAuthenticationRequest</kbd>.",
-       "apihelp-resetpassword-description": "שליחת דוא\"ל איפוס סיסמה למשתמש.",
-       "apihelp-resetpassword-description-noroutes": "אין מסלולים לאיפוס ססמה.\n\nכדי להשתמש במודול הזה, יש להפעיל מסלולים ב־<var>[[mw:Special:MyLanguage/Manual:$wgPasswordResetRoutes|$wgPasswordResetRoutes]]</var>.",
        "apihelp-resetpassword-param-user": "המשתמש שמאופס.",
        "apihelp-resetpassword-param-email": "כתובת הדוא\"ל של המשתמש שהסיסמה שלו מאופסת.",
        "apihelp-resetpassword-example-user": "שליחת מכתב איפוס ססמה למשתמש <kbd>Example</kbd>.",
        "apihelp-resetpassword-example-email": "שליחת מכתב איפוס ססמה לכל המשתמשים שהכתובת שלהם היא <kbd>user@example.com</kbd>.",
-       "apihelp-revisiondelete-description": "מחיקה ושחזור ממחיקה של גרסאות.",
        "apihelp-revisiondelete-param-type": "סוג מחיקת הגרסה שמתבצע.",
        "apihelp-revisiondelete-param-target": "שם הדף למחיקת גרסה, אם זה נחוץ לסוג.",
        "apihelp-revisiondelete-param-ids": "מזהים של הגרסה שתימחק.",
        "apihelp-revisiondelete-param-tags": "אילו תגים להחיל על העיול ביומן המחיקה.",
        "apihelp-revisiondelete-example-revision": "הסתרת התוכן של הגרסה <kbd>12345</kbd> בדף <kbd>Main Page</kbd>.",
        "apihelp-revisiondelete-example-log": "הסתרת כל הנתונים על רשומת היומן <kbd>67890</kbd> עם הסיבה <kbd>BLP violation</kbd>.",
-       "apihelp-rollback-description": "ביטול העריכה האחרונה לדף.\n\nאם המשמש האחרון שערך את הדף עשה מספר עריכות זו אחר זו, הן תשוחזרנה.",
        "apihelp-rollback-param-title": "שם הדף לשחזור. לא יכול לשמש יחד עם <var>$1pageid</var>.",
        "apihelp-rollback-param-pageid": "מזהה הדף לשחזור. לא יכול לשמש יחד עם <var>$1title</var>.",
        "apihelp-rollback-param-tags": "אילו תגים להחיל על השחזור.",
        "apihelp-rollback-param-watchlist": "הוספה או הסרה של הדף ללא תנאי מרשימת המעקב של המשתמש הנוכחי, להשתמש בהעדפות או לא לשנות את המעקב.",
        "apihelp-rollback-example-simple": "שחזור העריכות האחרונות לדף <kbd>Main Page</kbd> על־ידי המשתמש <kbd>Example</kbd>.",
        "apihelp-rollback-example-summary": "שחזור העריכות האחרונות לדף <kbd>Main Page</kbd> מאת משתמש ה־IP‏ <kbd>192.0.2.5</kbd> עם התקציר <kbd>Reverting vandalism</kbd> וסימון של העריכות האלה ושל השחזור בתור עריכות בוט.",
-       "apihelp-rsd-description": "יצוא סכמת RSD‏ (Really Simple Discovery).",
        "apihelp-rsd-example-simple": "יצוא סכמת ה־RSD.",
-       "apihelp-setnotificationtimestamp-description": "עדכון חותם־הזמן של ההודעה עבור דפים במעקב.\n\nזה משפיע על הדגשת הדפים שהשתנו ברשימת המעקב ובהיסטוריה, ושליחת דואר אלקטרוני כאשר ההעדפה \"{{int:tog-enotifwatchlistpages}}\" מופעלת.",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "לעבוד על כל הדפים שבמעקב.",
        "apihelp-setnotificationtimestamp-param-timestamp": "חותם־הזמן להגדרת חותם־זמן של הודעה.",
        "apihelp-setnotificationtimestamp-param-torevid": "לאיזו גרסה להגדיר את חותם הזמן (רק דף אחד).",
        "apihelp-setnotificationtimestamp-example-page": "אתחול מצב ההודעה עבור <kbd>Main Page</kbd>.",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "הגדרת חותם־הזמן להודעה ל־<kbd>Main page</kbd> כך שכל העריכות מאז 1 בינואר 2012 מוגדרות בתור כאלה שלא נצפו.",
        "apihelp-setnotificationtimestamp-example-allpages": "אתחול מצב ההודעה עבור דפים במרחב השם <kbd>{{ns:user}}</kbd>.",
-       "apihelp-setpagelanguage-description": "שנה את השפה של דף",
-       "apihelp-setpagelanguage-description-disabled": "שינוי השפה של דף לא מורשה בוויקי זה.\n\nהפעל את <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> על מנת להשתמש בפעולה זו",
        "apihelp-setpagelanguage-param-title": "כותרת הדף שאת שפתו ברצונך לשנות. לא אפשרי להשתמש באפשרות עם <var>$1pageid</var>.",
        "apihelp-setpagelanguage-param-pageid": "מזהה הדף שאת שפתו ברצונך לשנות. לא אפשרי להשתמש באפשרות עם <var>$1title</var>.",
        "apihelp-setpagelanguage-param-lang": "קוד השפה של השפה שאליה צריך לשנות את הדף. יש להשתמש ב־<kbd>default</kbd> כדי לאתחל את הדף לשפת בררת המחדל של הוויקי.",
        "apihelp-setpagelanguage-param-tags": "אילו תגי שינוי להחיל על העיול ביומן שמתבצע כתוצאה מהפעולה הזאת.",
        "apihelp-setpagelanguage-example-language": "שינוי השפה של <kbd>Main Page</kbd> לבסקית.",
        "apihelp-setpagelanguage-example-default": "שינוי השפה של הדף בעל המזהה 123 לשפה הרגילה של הוויקי.",
-       "apihelp-stashedit-description": "הכנת עריכה במטמון משותף.\n\nזה מיועד לשימוש דרך AJAX מתוך ערך כדי לשפר את הביצועים של שמירת הדף.",
        "apihelp-stashedit-param-title": "כותרת הדף הנערך.",
        "apihelp-stashedit-param-section": "מספר הפסקה. <kbd>0</kbd> עבור הפסקה הראשונה, <kbd>new</kbd> עבור פסקה חדשה.",
        "apihelp-stashedit-param-sectiontitle": "כותרת הפסקה החדשה.",
        "apihelp-stashedit-param-contentformat": "תסדיר הסדרת תוכן עבור טקסט הקלט.",
        "apihelp-stashedit-param-baserevid": "מזהה גסה של גרסת הבסיס.",
        "apihelp-stashedit-param-summary": "לשנות תקציר.",
-       "apihelp-tag-description": "הוספת או הסרה של תגים מגרסאות בודדות או עיולי יומן בודדים.",
        "apihelp-tag-param-rcid": "מזהה שינוי אחרון אחד או יותר שתג יתווסף אליו או יוסר ממנו.",
        "apihelp-tag-param-revid": "מזהה גרסה אחד או יותר שתג יתווסף אליה או יוסר ממנה.",
        "apihelp-tag-param-logid": "מזהה רשומת יומן אחת או יותר שתג יתווסף אליה או יוסר ממנה.",
        "apihelp-tag-param-tags": "אילו תגים להחיל על רשומת היומן שתיווצר כתוצאה מהפעולה הזאת.",
        "apihelp-tag-example-rev": "הוספת התג <kbd>vandalism</kbd> לגרסה עם המזהה 123 בלי לציין סיבה",
        "apihelp-tag-example-log": "הסרת התג <kbd>spam</kbd> מעיול עם המזהה 123 עם הסיבה <kbd>Wrongly applied</kbd>",
-       "apihelp-tokens-description": "קבלת אסימונים לפעולות שמשנות נתונים.\n\nהיחידה הזאת הוכרזה בתור מיושנת לטובת [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
        "apihelp-tokens-param-type": "סוגי האסימונים לבקש.",
        "apihelp-tokens-example-edit": "אחזור אסימון עריכה (בררת המחדל).",
        "apihelp-tokens-example-emailmove": "אחזור אסימון דוא\"ל ואסימון העברה.",
-       "apihelp-unblock-description": "שחרור משתמש מחסימה.",
        "apihelp-unblock-param-id": "מזהה החסימה לשחרור (מתקבל דרך <kbd>list=blocks</kbd>). לא יכול לשמש יחד עם <var>$1user</var> או <var>$1userid</var>.",
        "apihelp-unblock-param-user": "שם משתמש, כתובת IP או טווח כתובות IP לחסימה. לא יכול לשמש יחד עם <var>$1id</var> או <var>$1userid</var>.",
        "apihelp-unblock-param-userid": "מזהה המשתמש שישוחרר מחסימה. לא יכול לשמש יחד עם <var>$1id</var> או <var>$1user</var>.",
        "apihelp-unblock-param-tags": "תגי שינוי שיחולו על העיול ביומן החסימה.",
        "apihelp-unblock-example-id": "לשחרר את החסימה עם מזהה #<kbd>105</kbd>.",
        "apihelp-unblock-example-user": "לשחרר את החסימה של המשתמש <kbd>Bob</kbd> עם הסיבה <kbd>Sorry Bob</kbd>.",
-       "apihelp-undelete-description": "שחזור גרסאות של דף מחוק.\n\nאפשר לאחזר רשימת גרסאות מחוקות (כולל חותמי־זמן) דרך [[Special:ApiHelp/query+deletedrevisions|prop=deletedrevisions]], ואפשר לאחזר רשימת מזהי קבצים מחוקים דרך [[Special:ApiHelp/query+filearchive|list=filearchive]].",
        "apihelp-undelete-param-title": "שם הדף לשחזור ממחיקה.",
        "apihelp-undelete-param-reason": "סיבה לשחזור.",
        "apihelp-undelete-param-tags": "תגי שינוי שיחולו על העיול ביומן המחיקה.",
        "apihelp-undelete-param-watchlist": "הוספה או הסרה של הדף ללא תנאי מרשימת המעקב של המשתמש הנוכחי, להשתמש בהעדפות או לא לשנות את המעקב.",
        "apihelp-undelete-example-page": "שחזור ממחיקה של הדף <kbd>Main Page</kbd>.",
        "apihelp-undelete-example-revisions": "שחזור שתי גרסאות של הדף <kbd>Main Page</kbd>.",
-       "apihelp-unlinkaccount-description": "ביטול קישור של חשבון צד־שלישי מהמשתמש הנוכחי.",
        "apihelp-unlinkaccount-example-simple": "לנסות להסיר את הקישור של המשתמש הנוכחי לספק המשויך עם <kbd>FooAuthenticationRequest</kbd>.",
-       "apihelp-upload-description": "העלאת קובץ, או קבלת מצב ההעלאות הממתינות.\n\nיש מספר שיטות:\n* להעלות את הקובץ ישירות, באמצעות הפרמטר <var>$1file</var>.\n* להעלות את הקובץ בחלקים, באמצעות הפרמטרים <var>$1filesize</var>‏, <var>$1chunk</var> ו־<var>$1offset</var>.\n* לגרום לשרת מדיה־ויקי לאחזר את הקובץ מ־URL באמצעות הפרמטר <var>$1url</var>.\n* להשלים העלאה קודמת שנכשלה בשל אזהרות באמצעות הפרמטר <var>$1filekey</var>.\nלתשומך לבך, יש לעשות את HTTP POST בתור העלאת קובץ (כלומר באמצעות <code>multipart/form-data</code>) בעת שליחת ה־<var>$1file</var>.",
        "apihelp-upload-param-filename": "שם קובץ היעד.",
        "apihelp-upload-param-comment": "הערת העלאה. משמש גם בתור טקסט הדף ההתחלתי עבור קבצים חדשים אם <var>$1text</var> אינו מצוין.",
        "apihelp-upload-param-tags": "שינוי תגים להחלה לרשומות ההעלאה ולגרסאות דף הקובץ.",
        "apihelp-upload-param-checkstatus": "לאחזר רק מצב העלאה עבור מפתח הקובץ שניתן.",
        "apihelp-upload-example-url": "להעלות מ־URL.",
        "apihelp-upload-example-filekey": "להשלים העלאה שנכשלה בשל אזהרות.",
-       "apihelp-userrights-description": "שינוי חברות בקבוצות של המשתמש.",
        "apihelp-userrights-param-user": "שם משתמש.",
        "apihelp-userrights-param-userid": "מזהה משתמש.",
        "apihelp-userrights-param-add": "הוספת המשתמש לקבוצות האלו, ואם הוא כבר חבר, עדכון זמן התפוגה של החברות בקבוצה הזאת.",
        "apihelp-userrights-example-user": "הוספת המשתמש <kbd>FooBot</kbd> לקבוצה <kbd>bot</kbd> והסרתו מהקבוצות <kbd>sysop</kbd> ו־<kbd>bureaucrat</kbd>.",
        "apihelp-userrights-example-userid": "הוספת המשתמש עם המזהה <kbd>123</kbd> לקבוצה <kbd>bot</kbd> והסרתו מהקבוצות <kbd>sysop</kbd> ו־<kbd>bureaucrat</kbd>.",
        "apihelp-userrights-example-expiry": "להוסיף את <kbd>SometimeSysop</kbd> לקבוצה <kbd>sysop</kbd> לחודש אחד.",
-       "apihelp-validatepassword-description": "לבדוק תקינות ססמה אל מול מדיניות הססמאות של הוויקי.\n\nהתקינות מדווחת כ־<samp>Good</samp> אם הססמה קבילה, <samp>Change</samp> אם הססמה יכולה לשמש לכניסה, אבל צריכה להשתנות, או <samp>Invalid</samp> אם הססמה אינה שמישה.",
        "apihelp-validatepassword-param-password": "ססמה שתקינותה תיבדק.",
        "apihelp-validatepassword-param-user": "שם משתמש, לשימוש בעת בדיקת יצירת חשבון. המשתמש ששמו ניתן צריך לא להיות קיים.",
        "apihelp-validatepassword-param-email": "כתובת הדוא\"ל, לשימוש בעת בדיקת יצירת חשבון.",
        "apihelp-validatepassword-param-realname": "שם אמתי, לשימוש בעת בדיקת יצירת חשבון.",
        "apihelp-validatepassword-example-1": "לבדוק את תקינות הססמה <kbd>foobar</kbd> עבור המשתמש הנוכחי.",
        "apihelp-validatepassword-example-2": "לבדוק את תקינות הססמה <kbd>qwerty</kbd> ליצירת החשבון <kbd>Example</kbd>.",
-       "apihelp-watch-description": "להוסיף דפים לרשימת המעקב של המשתמש הנוכחי או הסרתם ממנה.",
        "apihelp-watch-param-title": "הדף להוסיף לרשימת המעקב או להסיר ממנה. יש להשתמש במקום זאת ב־<var>$1titles</var>.",
        "apihelp-watch-param-unwatch": "אם זה מוגדר, הדף יהיה לא במעקב במקום להיות במעקב.",
        "apihelp-watch-example-watch": "לעקוב אחרי הדף <kbd>Main Page</kbd>.",
        "apihelp-watch-example-generator": "לעקוב אחרי הדפים הראשונים במרחב הראשי.",
        "apihelp-format-example-generic": "להחזיר את תוצאות השאילתה בתסדיר $1.",
        "apihelp-format-param-wrappedhtml": "החזרת HTML מעוצב ומודולי ResourceLoader משויכים בתור עצם JSON.",
-       "apihelp-json-description": "לפלוט נתונים בתסדיר JSON.",
        "apihelp-json-param-callback": "אם זה צוין, עוטף את הפלט לתוך קריאת פונקציה נתונה. למען הבטיחות, כל הנתונים הייחודיים למשתמש יוגבלו.",
        "apihelp-json-param-utf8": "אם זה צוין, רוב התווים שאינם ASCII (אבל לא כולם) יקודדו בתור UTF-8 במקום להתחלף בסדרות חילוף הקסדצימליות. זאת בררת המחדל אם הערך של <var>formatversion</var> הוא לא <kbd>1</kbd>.",
        "apihelp-json-param-ascii": "אם זה צוין, לקודד את כל מה שאינו ASCII בסדרות חילוף הקסדצימליות. זאת בררת המחדל כש־<var>formatversion</var> היא <kbd>1</kbd>.",
        "apihelp-json-param-formatversion": "תסדיר הפלט:\n;1:תסדיר עם תאימות אחורה (ערכים בוליאניים בסגנון XML, מפתחות <samp>*</samp> לצומתי תוכן, וכו').\n;2:תסדיר מודרני ניסיוני. הפרטים יכולים להשתנות!\n;latest:להשתמש בתסדיר החדש ביותר (כרגע <kbd>2</kbd>), יכול להשתנות ללא התראה.",
-       "apihelp-jsonfm-description": "לפלוט נתונים בתסדיר JSON (עם הדפסה יפה ב־HTML).",
-       "apihelp-none-description": "לא לפלוט שום דבר.",
-       "apihelp-php-description": "לפלוט נתונים בתסדיר PHP מוסדר.",
        "apihelp-php-param-formatversion": "תסדיר הפלט:\n;1:תסדיר עם תאימות אחורה (ערכים בוליאניים בסגנון XML, מפתחות <samp>*</samp> לצומתי תוכן, וכו').\n;2:תסדיר מודרני ניסיוני. הפרטים יכולים להשתנות!\n;latest:להשתמש בתסדיר החדש ביותר (כרגע <kbd>2</kbd>), יכול להשתנות ללא התראה.",
-       "apihelp-phpfm-description": "לפלוט נתונים בתסדיר PHP מוסדר (עם הדפסה יפה ב־HTML).",
-       "apihelp-rawfm-description": "לפלוט את הנתונים, כולל אלמנטים לניפוי שגיאות, בתסדיר JSON (עם הדפסה יפה ב־HTML).",
-       "apihelp-xml-description": "לפלוט נתונים בתסדיר XML.",
        "apihelp-xml-param-xslt": "אם צוין, יש להוסיף את שם הדף כגיליון עיצוב XSL. על הערך להיות כותרת ב {{ns:MediaWiki}} במרחב שם המשתמש, המסתיים ב-  <code>.xsl</code>.",
        "apihelp-xml-param-includexmlnamespace": "אם זה צוין, מוסיף מרחב שם של XML.",
-       "apihelp-xmlfm-description": "לפלוט נתונים בתסדיר XML (עם הדפסה יפה ב־HTML).",
        "api-format-title": "תוצאה של API של מדיה־ויקי",
        "api-format-prettyprint-header": "זהו ייצוג ב־HTML של תסדיר $1. תסדיר HTML טוב לתיקון שגיאות, אבל אינו מתאים ליישומים.\n\nיש לציין את הפרמטר <var>format</var> כדי לשנות את תסדיר הפלט. כדי לראות ייצוג של תסדיר $1 לא ב־HTML יש לרשום <kbd>format=$2</kbd>.\n\nר' את [[mw:Special:MyLanguage/API|התיעוד המלא]], או את [[Special:ApiHelp/main|העזרה של API]] למידע נוסף.",
        "api-format-prettyprint-header-only-html": "זה ייצוג HTML שמיועד לניפוי שגיאות ואינו מתאים לשימוש ביישומים.\n\nר' את [[mw:Special:MyLanguage/API|התיעוד המלא]] או את [[Special:ApiHelp/main|העזרה של API]] למידע נוסף.",
+       "api-format-prettyprint-header-hyperlinked": "זהו ייצוג ב־HTML של תסדיר $1. תסדיר HTML טוב לתיקון שגיאות, אבל אינו מתאים ליישומים.\n\nיש לציין את הפרמטר <var>format</var> כדי לשנות את תסדיר הפלט. כדי לראות ייצוג של תסדיר $1 לא ב־HTML יש להגדיר [$3 <kbd>format=$2</kbd>].\n\nר' את [[mw:API|התיעוד המלא]], או את [[Special:ApiHelp/main|העזרה של API]] למידע נוסף.",
        "api-format-prettyprint-status": "התשובה הזאת הייתה מוחזרת עם סטטוס ה־HTTP מס' $1 עם הטקסט $2.",
+       "api-login-fail-aborted": "אימות דורש הידוד עם המשתמש, שאינו נתמך ב־<kbd>action=login</kbd>. כדי שיהיה אפשר להיכנס לחשבון עם <kbd>action=login</kbd>, נא לראות את [[Special:BotPasswords]]. כדי להמשיך להשתמש בכניסה עם חשבון ראשי, ר' <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
+       "api-login-fail-aborted-nobotpw": "אימות דורש הידוד עם המשתמש, שאינו נתמך ב־<kbd>action=login</kbd>. כדי להיכנס לחשבון, ר' <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
+       "api-login-fail-badsessionprovider": "לא ניתן להיכנס לחשבון באמצעות $1.",
+       "api-login-fail-sameorigin": "לא ניתן להיכנס לחשבון כאשר מדיניות מקור זהה אינה חלה.",
        "api-pageset-param-titles": "רשימת כותרות.",
        "api-pageset-param-pageids": "רשימת מזהי דף לעבוד עליהם.",
        "api-pageset-param-revids": "רשימת מזהי גרסה לעבוד עליהם.",
        "apierror-changeauth-norequest": "יצירת בקשת השינוי נכשלה.",
        "apierror-chunk-too-small": "גודל הפלח המזערי הוא {{PLURAL:$1|בית אחד|$1 בתים}} בשביל פלחים לא סופיים.",
        "apierror-cidrtoobroad": "טווחי CIDR של $1 שרחבים יותר מ־/$2 אינם קבילים.",
-       "apierror-compare-inputneeded": "כותרת, מזהה דף, או מספר גרסה נחוצים בשביל הפרמטרים <var>from</var> ו־<var>to</var>.",
+       "apierror-compare-no-title": "לא ניתן לעשות התמרה לפני שמירה ללא כותרת. נא לנסות לציין <var>fromtitle</var> או <var>totitle</var>.",
+       "apierror-compare-relative-to-nothing": "אין גרסת \"from\" עבור <var>torelative</var> שתהיה יחסית.",
        "apierror-contentserializationexception": "הסדרת התוכן נכשלה: $1",
        "apierror-contenttoobig": "התוכן שסיפקת חורג מגודל הערך המרבי של {{PLURAL:$1|קילובייט אחד|$1 קילובייטים}}.",
        "apierror-copyuploadbaddomain": "העלאות לפי URL אינם מורשות מהמתחם הזה.",
        "apierror-maxlag": "ממתין ל־$2: שיהוי של {{PLURAL:$1|שנייה אחת|$1 שניות}}.",
        "apierror-mimesearchdisabled": "חיפוש MIME כבוי במצב קמצן.",
        "apierror-missingcontent-pageid": "תוכן חסר עבור מזהה הדף $1.",
+       "apierror-missingcontent-revid": "תוכן חסר עבור מזהה הגרסה $1.",
        "apierror-missingparam-at-least-one-of": "דרוש {{PLURAL:$2|הפרמטר|לפחות אחד מהפרמטרים}} $1.",
        "apierror-missingparam-one-of": "דרוש {{PLURAL:$2|הפרמטר|אחד מהפרמטרים}} $1.",
        "apierror-missingparam": "הפרמטר <var>$1</var> צריך להיות מוגדר.",
        "apierror-missingrev-pageid": "אין גרסה נוכחית של דף עם המזהה $1.",
+       "apierror-missingrev-title": "אין גרסה נוכחית לכותרת $1.",
        "apierror-missingtitle-createonly": "כותרות חסרות יכולות להיות מוגנות עם <kbd>create</kbd>.",
        "apierror-missingtitle": "הדף שנתת אינו קיים.",
        "apierror-missingtitle-byname": "הדף $1 אינו קיים.",
        "apierror-revdel-mutuallyexclusive": "אותו השדה אינו יכול לשמש עם <var>hide</var> ועם <var>show</var>.",
        "apierror-revdel-needtarget": "כותרת יעד נחוצה בשביל סוג ה־RevDel הזה.",
        "apierror-revdel-paramneeded": "לפחות ערך אחד נחוץ בשביל <var>hide</var> או <var>show</var>.",
+       "apierror-revisions-badid": "לא נמצאה גרסה לפרמטר <var>$1</var>.",
        "apierror-revisions-norevids": "הפרמטר <var>revids</var> אינו יכול לשמש עם אפשרויות הרשימה (<var>$1limit</var>‏, <var>$1startid</var>‏, <var>$1endid</var>‏, <kbd>$1dir=newer</kbd>‏, <var>$1user</var>‏, <var>$1excludeuser</var>‏, <var>$1start</var>, ו־<var>$1end</var>).",
        "apierror-revisions-singlepage": "<var>titles</var>‏, <var>pageids</var> או מחולל שימשו לאספקת דפים מרובים, אבל הפרמטרים <var>$1limit</var>‏, <var>$1startid</var>‏, <var>$1endid</var>‏, <kbd>$1dir=newer</kbd>‏, <var>$1user</var>‏, <var>$1excludeuser</var>‏, <var>$1start</var>, ו־<var>$1end</var> יכולים לשמש רק בדף בודד.",
        "apierror-revwrongpage": "הגרסה $1 אינה גרסה של $2.",
        "apiwarn-badurlparam": "לא היה אפשר לפענח את <var>$1urlparam</var> עבור $2. משתמשים רק ב־width ו־height.",
        "apiwarn-badutf8": "הערך הערך שהועבר ל־<var>$1</var> מכיל נתונים בלתי־תקינים או בלתי־מנורמלים. נתונים טקסט אמורים להיות תקינים, מנורמלי NFC ללא תווי בקרה C0 למעט HT (\\t)‏, LF (\\n), ו־CR (\\r).",
        "apiwarn-checktoken-percentencoding": "נא לבדוק שסימנים כמו \"+\" באסימון מקודדים עם אחוזים בצורה נכונה ב־URL.",
+       "apiwarn-compare-nocontentmodel": "לא היה אפשר לקבוע את מודל התוכן, נניח שזה $1.",
        "apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd> הוצהר בתור מיושן. נא להשתמש ב־ <kbd>prop=deletedrevisions</kbd> או ב־<kbd>list=alldeletedrevisions</kbd> במקום זה.",
        "apiwarn-deprecation-expandtemplates-prop": "מכיוון שלא ניתנו ערכים לפרמטר <var>prop</var>, תסדיר מיושן ישמש לפלט. התסדיר הזה מיושן, ובעתיד יינתן ערך בררת מחדל לפרמטר <var>prop</var>, כך שתמיד ישמש התסדיר החדש.",
        "apiwarn-deprecation-httpsexpected": "משמש HTTP כשהיה צפוי HTTPS.",
index 232386e..5d997be 100644 (file)
                        "Dj"
                ]
        },
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Dokumentáció]]\n* [[mw:Special:MyLanguage/API:FAQ|GYIK]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Levelezőlista]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API-bejelentések]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Hibabejelentések és kérések]\n</div>\n<strong>Státusz:</strong> Minden ezen a lapon látható funkciónak működnie kell, de az API jelenleg is aktív fejlesztés alatt áll, és bármikor változhat. Iratkozz fel a [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ mediawiki-api-announce levelezőlistára] a frissítések követéséhez.\n\n<strong>Hibás kérések:</strong> Ha az API hibás kérést kap, egy HTTP-fejlécet küld vissza „MediaWiki-API-Error” kulccsal, és a fejléc értéke és a visszaküldött hibakód ugyanarra az értékre lesz állítva. További információért lásd: [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Hibák és figyelmeztetések]].\n\n<strong>Tesztelés:</strong> Az API-kérések könnyebb teszteléséhez használható az [[Special:ApiSandbox|API-homokozó]].",
        "apihelp-main-param-action": "Milyen műveletet hajtson végre.",
        "apihelp-main-param-format": "A kimenet formátuma.",
+       "apihelp-main-param-smaxage": "Az <code>s-maxage</code> gyorsítótár-vezérlő HTTP-fejléc beállítása ennyi másodpercre. A hibák soha nincsenek gyorsítótárazva.",
+       "apihelp-main-param-maxage": "Az <code>maxage</code> gyorsítótár-vezérlő HTTP-fejléc beállítása ennyi másodpercre. A hibák soha nincsenek gyorsítótárazva.",
+       "apihelp-main-param-assert": "Annak ellenőrzése, hogy a felhasználó be van-e jelentkezve <kbd>user</kbd> érték esetén, vagy botjog ellenőrzése <kbd>bot</kbd> érték esetén.",
+       "apihelp-main-param-assertuser": "Annak ellenőrzése, hogy a jelenlegi felhasználó a megadott-e.",
        "apihelp-main-param-requestid": "Az itt megadott bármilyen érték szerepelni fog a válaszban. Több kérés megkülönböztetésére használható.",
        "apihelp-main-param-servedby": "Tartalmazza a válasz kérést kiszolgáló gép nevét.",
        "apihelp-main-param-curtimestamp": "Tartalmazza a válasz az aktuális időbélyeget.",
+       "apihelp-main-param-responselanginfo": "A válasz tartalmazza <var>uselang</var> és <var>errorlang</var> paraméterekben használt nyelveket.",
+       "apihelp-main-param-uselang": "Az üzenetfordításokhoz használandó nyelv. A <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> a <kbd>siprop=languages</kbd> paraméterrel visszaadja a lehetséges nyelvkódok listáját, vagy <kbd>user</kbd> az aktuális felhasználó, illetve <kbd>content</kbd> a wiki nyelvbeállításához.",
+       "apihelp-main-param-errorformat": "A figyelmeztetések és hibaüzenetek formátuma.\n; plaintext: Wikiszöveg eltávolított HTML-címkékkel és a HTML-entitások (pl. &amp;amp;) kicserélésével.\n; wikitext: Feldolgozatlan wikiszöveg.\n; html: HTML.\n; raw: Az üzenet azonosítója és paraméterei.\n; none: Szöveges kimenet mellőzése, csak hibakódok.\n; bc: A MediaWiki 1.29 előtti formátum. A <var>errorlang</var> és <var> erroruselocal</var> paraméterek figyelmen kívül lesznek hagyva.",
+       "apihelp-main-param-errorlang": "A figyelmeztetésekhez és hibaüzenetekhez használandó nyelv. A <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> a <kbd>siprop=languages</kbd> paraméterrel visszaadja a lehetséges nyelvkódok listáját, vagy <kbd>content</kbd> a wiki nyelvbeállításához, illetve <kbd>uselang</kbd> a <var>uselang</var> paraméter értékéhez.",
+       "apihelp-main-param-errorsuselocal": "Ha meg van adva, a hibaüzenetek a helyileg testreszabott üzeneteket fogják használni a {{ns:MediaWiki}} névtérből.",
        "apihelp-block-description": "Szerkesztő blokkolása",
-       "apihelp-block-param-user": "Blokkolandó felhasználónév, IP-cím vagy IP-címtartomány.",
+       "apihelp-block-param-user": "Blokkolandó felhasználónév, IP-cím vagy IP-címtartomány. Nem használható együtt a <var>$1userid</var> paraméterrel.",
+       "apihelp-block-param-userid": "A blokkolandó felhasználó numerikus azonosítója. Nem használható a <var>$1user</var> paraméterrel együtt.",
        "apihelp-block-param-expiry": "Lejárat ideje. Lehet relatív (pl. <kbd>5 months</kbd>, <kbd>2 weeks</kbd>) vagy abszolút (pl. <kbd>2014-09-18T12:34:56Z</kbd>). Ha <kbd>infinite</kbd>-re, <kbd>indefinite</kbd>-re vagy <kbd>never</kbd>-re állítod, a blokk soha nem fog lejárni.",
        "apihelp-block-param-reason": "Blokkolás oka.",
+       "apihelp-block-param-anononly": "Csak anonim felhasználók blokkolása (anonim szerkesztések megakadályozása erről az IP-címről).",
        "apihelp-block-param-nocreate": "Új regisztráció megakadályozása",
+       "apihelp-block-param-autoblock": "Az utoljára használt IP-cím blokkolása, valamint bármilyen további IP-cím, amiről a felhasználó megpróbál bejelentkezni.",
+       "apihelp-block-param-noemail": "A wiki e-mail-küldő rendszerének letiltása a felhasználó számára (<code>blockemail</code> jogosultság szükséges hozzá).",
+       "apihelp-block-param-hidename": "A felhasználónév elrejtése a blokknaplóból (<code>hideuser</code> jog szükséges hozzá).",
+       "apihelp-block-param-allowusertalk": "A felhasználó szerkeszthesse a saját vitalapját (a <var>[[mw:Special:MyLanguage/Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var> beállítástól függ).",
+       "apihelp-block-param-reblock": "Jelenlegi blokk felülírása, ha a felhasználó már blokkolva van.",
        "apihelp-block-param-watchuser": "A szerkesztő vagy IP-cím szerkesztői- és vitalapjának figyelése.",
+       "apihelp-block-example-ip-simple": "A <kbd>192.0.2.5</kbd> IP-cím blokkolása három napra <kbd>First strike</kbd> indoklással.",
+       "apihelp-block-example-user-complex": "<kbd>Vandal</kbd> blokkolása határozatlan időre <kbd>Vandalism</kbd> indoklással, új fiók létrehozásának és e-mail küldésének megakadályozása.",
+       "apihelp-checktoken-description": "Egy <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> kéréssel szerzett token érvényességének vizsgálata.",
+       "apihelp-checktoken-param-type": "A tesztelendő token típusa.",
+       "apihelp-checktoken-param-token": "A tesztelendő token.",
+       "apihelp-checktoken-param-maxtokenage": "A token megengedett legnagyobb kora másodpercekben.",
+       "apihelp-checktoken-example-simple": "Egy <kbd>csrf</kbd> token érvényességének vizsgálata.",
+       "apihelp-clearhasmsg-description": "A <code>hasmsg</code> jelzés törlése az aktuális felhasználónak.",
+       "apihelp-clearhasmsg-example-1": "A <code>hasmsg</code> jelzés törlése az aktuális felhasználónak.",
+       "apihelp-clientlogin-example-login": "A bejelentkezési folyamat elkezdése <kbd>Example</kbd> felhasználónévvel és <kbd>ExamplePassword</kbd> jelszóval.",
+       "apihelp-clientlogin-example-login2": "A bejelentkezés folytatása <samp>UI</samp> válasz után a kétlépcsős azonosításra, az <var>OATHToken</var> paraméternek <kbd>987654</kbd> értéket megadva.",
+       "apihelp-compare-description": "Két lap közötti különbség kiszámítása.\n\nMindkét laphoz kötelező megadni egy lapváltozat-azonosítót, címet vagy lapazonosítót.",
+       "apihelp-compare-param-fromtitle": "Az első összehasonlítandó lap címe.",
+       "apihelp-compare-param-fromid": "Az első összehasonlítandó lap lapazonosítója.",
+       "apihelp-compare-param-fromrev": "Az első összehasonlítandó lapváltozat azonosítója.",
+       "apihelp-compare-param-totitle": "A második összehasonlítandó lap címe.",
+       "apihelp-compare-param-toid": "A második összehasonlítandó lap lapazonosítója.",
+       "apihelp-compare-param-torev": "A második összehasonlítandó lapváltozat azonosítója.",
+       "apihelp-compare-example-1": "Az 1-es és 2-es lapváltozat összehasonlítása.",
+       "apihelp-createaccount-description": "Új felhasználói fiók létrehozása.",
+       "apihelp-createaccount-example-create": "<kbd>Example</kbd> felhasználói fiók létrehozásának elkezdése <kbd>ExamplePassword</kbd> jelszóval.",
        "apihelp-createaccount-param-name": "Felhasználónév.",
+       "apihelp-createaccount-param-password": "Jelszó (figyelmen kívül hagyva, ha a <var>$1mailpassword</var> be van állítva).",
+       "apihelp-createaccount-param-domain": "Tartomány külső hitelesítéshez (opcionális).",
+       "apihelp-createaccount-param-token": "Felhasználólétrehozási token az első kérésből",
        "apihelp-createaccount-param-email": "A szerkesztő e-mail-címe (nem kötelező).",
        "apihelp-createaccount-param-realname": "A szerkesztő valódi neve (nem kötelező).",
+       "apihelp-createaccount-param-mailpassword": "Ha bármilyen értéket kap, egy véletlenszerű jelszót kap a felhasználó e-mailben.",
+       "apihelp-createaccount-param-reason": "Opcionális indoklás a fióklétrehozáshoz a naplókba.",
+       "apihelp-createaccount-param-language": "A felhasználó alapértelmezett nyelvkódja (opcionális, alapértelmezetten a tartalom nyelve).",
+       "apihelp-createaccount-example-pass": "<kbd>testuser</kbd> felhasználó létrehozása <kbd>test123</kbd> jelszóval.",
+       "apihelp-createaccount-example-mail": "<kbd>testmailuser</kbd> felhasználó létrehozása, véletlenszerű jelszó elküldése e-mailben.",
        "apihelp-delete-description": "Lap törlése.",
+       "apihelp-delete-param-title": "A törlendő lap címe. Nem használható együtt a <var>$1pageid</var> paraméterrel.",
+       "apihelp-delete-param-pageid": "A törlendő lap lapazonosítója. Nem használható együtt a <var>$1title</var> paraméterrel.",
+       "apihelp-delete-param-reason": "A törlés indoka. Ha nincs beállítva, automatikusan generált indoklás helyettesíti.",
+       "apihelp-delete-param-watch": "A lap hozzáadása a felhasználó figyelőlistájához.",
+       "apihelp-delete-param-watchlist": "A lap hozzáadása a figyelőlistához vagy eltávolítása onnan feltétel nélkül, a beállítások használata vagy a figyelőlista érintetlenül hagyása.",
        "apihelp-delete-param-unwatch": "A lap törlése a szerkesztő figyelőlistájáról.",
+       "apihelp-delete-param-oldimage": "A törlendő régi kép neve az [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]] által adott formátumban.",
        "apihelp-delete-example-simple": "<kbd>Main Page</kbd> törlése.",
+       "apihelp-delete-example-reason": "<kbd>Main Page</kbd> törlése <kbd>Preparing for move</kbd> indoklással.",
        "apihelp-disabled-description": "Ez a modul le lett tiltva.",
        "apihelp-edit-description": "Lapok létrehozása és szerkesztése.",
+       "apihelp-edit-param-title": "A szerkesztendő lap címe. Nem használható együtt a <var>$1pageid</var> paraméterrel.",
+       "apihelp-edit-param-pageid": "A szerkesztendő lap lapazonosítója. Nem használható együtt a <var>$1title</var> paraméterrel.",
+       "apihelp-edit-param-section": "A szerkesztendő szakasz száma. <kbd>0</kbd> a bevezetőhöz, <kbd>new</kbd> új szakaszhoz.",
        "apihelp-edit-param-sectiontitle": "Az új szakasz címe.",
+       "apihelp-edit-param-text": "A lap tartalma.",
+       "apihelp-edit-param-summary": "Szerkesztési összefoglaló. A szakasz címe is, ha $1section=new és a $1sectiontitle paraméter nincs beállítva.",
        "apihelp-edit-param-minor": "Apró változtatás.",
+       "apihelp-edit-param-notminor": "Nem apró változtatás.",
        "apihelp-edit-param-bot": "Szerkesztés megjelölése botszerkesztésként.",
+       "apihelp-edit-param-basetimestamp": "Az alapváltozat időbélyege, a szerkesztési ütközések felismerésére szolgál. Az [[Special:ApiHelp/query+revisions|action=query&prop=revisions&rvprop=timestamp]] kéréssel szerezhető meg.",
+       "apihelp-edit-param-starttimestamp": "A szerkesztési folyamat kezdetének időbélyege, a szerkesztési ütközések felismerésére szolgál. Egy megfelelő érték lekérhető a <var>[[Special:ApiHelp/main|curtimestamp]]</var> paraméterrel a folyamat kezdetén (pl. a szerkesztendő lap tartalmának letöltésekor).",
+       "apihelp-edit-param-recreate": "Bármilyen hiba felülírása arról, hogy a lapot a szerkesztés közben törölték.",
        "apihelp-edit-param-createonly": "Ne szerkeszd a lapot, ha már létezik.",
+       "apihelp-edit-param-watch": "A lap hozzáadása a felhasználó figyelőlistájához.",
+       "apihelp-edit-param-unwatch": "A lap törlése a szerkesztő figyelőlistájáról.",
+       "apihelp-edit-param-watchlist": "A lap hozzáadása a figyelőlistához vagy eltávolítása onnan feltétel nélkül, a beállítások használata vagy a figyelőlista érintetlenül hagyása.",
+       "apihelp-edit-param-prependtext": "Ezen szöveg hozzáadása a lap elejére. Felülírja a <var>$1text</var> paramétert.",
+       "apihelp-edit-param-appendtext": "Ezen szöveg hozzáadása a lap végére. Felülírja a <var>$1text</var> paramétert.\n\nHasználd a <kbd>$1section=new</kbd> paramétert új szakasz hozzáadásához ezen paraméter helyett.",
+       "apihelp-edit-param-undo": "Ezen változat visszavonása. Felülírja a <var>$1text</var>, <var>$1prependtext</var> és <var>$1appendtext</var> paramétereket.",
+       "apihelp-edit-param-undoafter": "Minden változtatás visszavonása az <var>$1undo</var> paraméterben szereplőtől eddig. Ha nincs megadva, csak egy változtatás visszavonása.",
+       "apihelp-edit-param-redirect": "Átirányítások automatikus feloldása.",
+       "apihelp-edit-param-contentmodel": "Az új tartalom tartalommodellje.",
+       "apihelp-edit-param-token": "A tokennek mindig az utolsó paraméternek, vagy legalább a <var>$1text</var> után kell lennie.",
        "apihelp-edit-example-edit": "Lap szerkesztése",
+       "apihelp-edit-example-prepend": "<kbd>_&#95;NOTOC_&#95;</kbd> hozzáadása a lap elejére.",
+       "apihelp-edit-example-undo": "Az 13579–13585. változatok visszavonása automatikus szerkesztési összefoglalóval.",
        "apihelp-emailuser-description": "E-mail küldése",
+       "apihelp-emailuser-param-target": "Az e-mail címzettje.",
+       "apihelp-emailuser-param-subject": "A levél tárgya.",
        "apihelp-emailuser-param-text": "Szövegtörzs.",
        "apihelp-emailuser-param-ccme": "Másolat küldése magamnak.",
+       "apihelp-emailuser-example-email": "E-mail küldése <kbd>WikiSysop</kbd> felhasználónak <kbd>Content</kbd> szöveggel.",
+       "apihelp-expandtemplates-description": "Minden sablon kibontása a wikiszövegben.",
        "apihelp-expandtemplates-param-title": "Lap címe.",
+       "apihelp-expandtemplates-param-text": "Az átalakítandó wikiszöveg.",
+       "apihelp-expandtemplates-param-revid": "Változatazonosító a <nowiki>{{REVISIONID}}</nowiki> és hasonló változók kibontásához.",
+       "apihelp-expandtemplates-param-prop": "A lekérendő információk.\n\nHa nincs megadva érték, a válasz tartalmazni fogja a wikiszöveget, de a kimenet elavult formátumú lesz.",
+       "apihelp-expandtemplates-paramvalue-prop-wikitext": "A kibontott wikiszöveg.",
+       "apihelp-expandtemplates-paramvalue-prop-categories": "Bármilyen, a bemenetben szereplő kategória, ami nem jelenik meg a wikiszöveges kimenetben.",
+       "apihelp-expandtemplates-paramvalue-prop-properties": "A wikiszövegben kibontott varázsszavak által meghatározott laptulajdonságok.",
+       "apihelp-expandtemplates-paramvalue-prop-ttl": "Maximális idő, ami után az eredmény gyorsítótárazása érvénytelenítendő.",
+       "apihelp-expandtemplates-paramvalue-prop-jsconfigvars": "A lapra vonatkozó JavaScript-változók.",
+       "apihelp-expandtemplates-param-includecomments": "A HTML-megjegyzések szerepeljenek-e a kimenetben.",
+       "apihelp-expandtemplates-example-simple": "A <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd> wikiszöveg kibontása.",
+       "apihelp-feedcontributions-description": "Egy felhasználó közreműködéseinek lekérése hírcsatornaként.",
+       "apihelp-feedcontributions-param-feedformat": "A hírcsatorna formátuma.",
+       "apihelp-feedcontributions-param-user": "A lekérendő felhasználók.",
+       "apihelp-feedcontributions-param-namespace": "A közreműködések szűrése ezen névtérre.",
+       "apihelp-feedcontributions-param-year": "Közreműködések lekérése eddig az évig.",
+       "apihelp-feedcontributions-param-month": "Közreműködések lekérése ennek a hónapnak a végéig.",
+       "apihelp-feedcontributions-param-tagfilter": "A közreműködések szűrése az ezen címkével ellátottakra.",
+       "apihelp-feedcontributions-param-deletedonly": "Csak a törölt szerkesztések lekérése.",
+       "apihelp-feedcontributions-param-toponly": "Csak a jelenleg utolsónak számító változtatások lekérése.",
+       "apihelp-feedcontributions-param-newonly": "Csak az új oldalt létrehozó szerkesztések lekérése.",
+       "apihelp-feedcontributions-param-hideminor": "Apró szerkesztések kihagyása.",
+       "apihelp-feedcontributions-param-showsizediff": "A változatok közötti méretkülönbség lekérése.",
+       "apihelp-feedcontributions-example-simple": "<kbd>Example</kbd> felhasználó közreműködéseinek lekérése.",
+       "apihelp-feedrecentchanges-description": "A friss változtatások lekérése hírcsatornaként.",
+       "apihelp-feedrecentchanges-param-feedformat": "A hírcsatorna formátuma.",
+       "apihelp-feedrecentchanges-param-namespace": "Az eredmények szűrése erre a névtérre.",
+       "apihelp-feedrecentchanges-param-invert": "Minden névtér a kiválasztott kivételével.",
+       "apihelp-feedrecentchanges-param-associated": "A kapcsolódó (vita- vagy tartalmi) névtér befoglalása.",
+       "apihelp-feedrecentchanges-param-days": "Az eredmények szűrése az elmúlt ennyi napra.",
+       "apihelp-feedrecentchanges-param-limit": "Találatok maximális száma.",
+       "apihelp-feedrecentchanges-param-from": "Szerkesztések megjelenítése ekkortól.",
        "apihelp-feedrecentchanges-param-hideminor": "Apró változtatások elrejtése.",
        "apihelp-feedrecentchanges-param-hidebots": "Botszerkesztések elrejtése.",
+       "apihelp-feedrecentchanges-param-hideanons": "Anonim felhasználók szerkesztéseinek elrejtése.",
+       "apihelp-feedrecentchanges-param-hideliu": "Bejelentkezett felhasználók szerkesztéseinek elrejtése.",
        "apihelp-feedrecentchanges-param-hidepatrolled": "Ellenőrzött változtatások elrejtése.",
+       "apihelp-feedrecentchanges-param-hidemyself": "A jelenlegi felhasználó szerkesztéseinek elrejtése.",
+       "apihelp-feedrecentchanges-param-hidecategorization": "Kategóriaváltoztatások elrejtése.",
+       "apihelp-feedrecentchanges-param-tagfilter": "Szűrés címke szerint.",
+       "apihelp-feedrecentchanges-param-target": "Csak a megadott lapról hivatkozott lapok szerkesztéseinek megjelenítése.",
+       "apihelp-feedrecentchanges-param-showlinkedto": "Inkább a megadott lap''ra'' hivatkozó lapok szerkesztéseinek megjelenítése.",
+       "apihelp-feedrecentchanges-param-categories": "Csak a megadott kategóriák mindegyikében szereplő lapok szerkesztéseinek megjelenítése.",
+       "apihelp-feedrecentchanges-param-categories_any": "Inkább a megadott kategóriák bármelyikében szereplő lapok szerkesztéseinek megjelenítése.",
+       "apihelp-feedrecentchanges-example-simple": "Friss változtatások megjelenítése.",
+       "apihelp-feedrecentchanges-example-30days": "Az elmúlt 30 nap friss változtatásainak megjelenítése.",
+       "apihelp-feedwatchlist-description": "A figyelőlista lekérése hírcsatornaként.",
+       "apihelp-feedwatchlist-param-feedformat": "A hírcsatorna formátuma.",
+       "apihelp-feedwatchlist-param-hours": "Az utóbbi ennyi órában szerkesztett lapok listázása.",
+       "apihelp-feedwatchlist-param-linktosections": "Hivatkozás közvetlenül a módosított szakaszra, ha lehetséges.",
+       "apihelp-feedwatchlist-example-default": "A figyelőlista-hírcsatorna megjelenítése.",
+       "apihelp-feedwatchlist-example-all6hrs": "A figyelt lapok összes változtatásának megjelenítése az elmúlt 6 órában.",
+       "apihelp-filerevert-description": "Egy fájl visszaállítása egy régebbi verzióra.",
+       "apihelp-filerevert-param-filename": "Célfájlnév, {{ns:6}}: (File:) előtag nélkül",
+       "apihelp-filerevert-param-comment": "Feltöltési összefoglaló.",
+       "apihelp-filerevert-param-archivename": "A visszaállítandó változat archív neve.",
+       "apihelp-filerevert-example-revert": "<kbd>Wiki.png</kbd> visszaállítása a <kbd>2011-03-05T15:27:40Z</kbd>-kori változatra.",
+       "apihelp-help-description": "Súgó megjelenítése a megadott modulokhoz.",
+       "apihelp-help-param-submodules": "Súgó megjelenítése a megadott modul almoduljaihoz is.",
+       "apihelp-help-param-recursivesubmodules": "Súgó megjelenítése az almodulokhoz rekurzívan.",
+       "apihelp-help-param-helpformat": "A súgó kimeneti formátuma.",
+       "apihelp-help-param-wrap": "Az eredmény visszaadása a szabványos API-válaszstruktúrában.",
+       "apihelp-help-param-toc": "A HTML-kimenet tartalmazzon egy tartalomjegyzéket.",
+       "apihelp-help-example-main": "Súgó megjelenítése a fő modulhoz.",
+       "apihelp-help-example-submodules": "Súgó az <kbd>action=query</kbd> modulhoz és összes almoduljához.",
+       "apihelp-help-example-recursive": "Minden súgó egy lapon.",
+       "apihelp-help-example-help": "Súgó magához a súgó modulhoz.",
+       "apihelp-help-example-query": "Súgó két lekérdező almodulhoz.",
+       "apihelp-imagerotate-description": "Egy vagy több kép elforgatása.",
+       "apihelp-imagerotate-param-rotation": "A kép forgatása ennyi fokkal az óramutató járásával megegyező irányban.",
+       "apihelp-imagerotate-example-simple": "<kbd>Example.png</kbd> elforgatása <kbd>90</kbd> fokkal.",
+       "apihelp-imagerotate-example-generator": "Az összes kép elforgatása a <kbd>Category:Flip</kbd> kategóriában <kbd>180</kbd> fokkal.",
+       "apihelp-import-description": "Egy lap importálása egy másik wikiből vagy XML-fájlból.\n\nA HTTP POST-kérést fájlfeltöltésként kell elküldeni (multipart/form-data használatával) a <var>xml</var> paraméter használatakor.",
+       "apihelp-import-param-xml": "Feltöltött XML-fájl.",
+       "apihelp-import-param-interwikisource": "Wikiközi importálásnál: forráswiki.",
+       "apihelp-import-param-interwikipage": "Wikiközi importálásnál: az importálandó lap.",
+       "apihelp-import-param-fullhistory": "Wikiközi importálásnál: teljes laptörténet importálása, nem csak az aktuális változat.",
+       "apihelp-import-param-templates": "Wikiközi importálásnál: importálás a lapon használt sablonokkal együtt.",
+       "apihelp-import-param-namespace": "Importálás ebbe a névtérbe. Nem használható együtt a <var>$1rootpage</var> paraméterrel.",
+       "apihelp-import-param-rootpage": "Importálás ennek a lapnak az allapjaként. Nem használható együtt a <var>$1namespace</var> paraméterrel.",
+       "apihelp-import-example-import": "[[meta:Help:ParserFunctions]] importálása a 100-as névtérbe teljes laptörténettel.",
+       "apihelp-linkaccount-description": "Egy harmadik fél szolgáltató fiókjának kapcsolása a jelenlegi felhasználóhoz.",
+       "apihelp-linkaccount-example-link": "Összekapcsolás elkezdése <kbd>Example</kbd> szolgáltató fiókjával.",
+       "apihelp-login-description": "Bejelentkezés és hitelesítő sütik lekérése.\n\nEz a művelet csak [[Special:BotPasswords|botjelszavakkal]] használandó; a fő fiókkal való használat elavult és figyelmeztetés nélkül sikertelen lehet. A fő fiókkal való biztonságos bejelentkezéshez használd az <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd> paramétert.",
+       "apihelp-login-description-nobotpasswords": "Bejelentkezés és hitelesítő sütik lekérése.\n\nEz a művelet elavult és figyelmeztetés nélkül sikertelen lehet. A biztonságos bejelentkezéshez használd az <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd> paramétert.",
        "apihelp-login-param-name": "Szerkesztőnév.",
        "apihelp-login-param-password": "Jelszó.",
        "apihelp-login-param-domain": "Tartomány (opcionális)",
+       "apihelp-login-param-token": "Az első kérésben megszerzett bejelentkezési token.",
+       "apihelp-login-example-gettoken": "Egy bejelentkezés token lekérése.",
        "apihelp-login-example-login": "Bejelentkezés.",
+       "apihelp-logout-description": "Kijelentkezés és munkamenetadatok törlése.",
        "apihelp-logout-example-logout": "Aktuális felhasználó kijelentkeztetése.",
+       "apihelp-managetags-description": "A változtatáscímkék kezelése.",
+       "apihelp-managetags-param-operation": "A végrehajtandó feladat:\n;create: Új változtatáscímke létrehozása kézi használatra.\n;delete: Egy változtatáscímke eltávolítása az adatbázisból, beleértve az eltávolítását minden lapváltozatról, frissváltoztatások-bejegyzésről és naplóbejegyzésről, ahol használatban van.\n;activate: Egy változtatáscímke aktiválása, lehetővé téve a felhasználóknak a kézi használatát.\n;deactivate: Egy változtatáscímke deaktiválása, a felhasználók megakadályozása a kézi használatban.",
+       "apihelp-managetags-param-tag": "A létrehozandó, törlendő, aktiválandó vagy deaktiválandó címke. Létrehozás esetén adott nevű címke nem létezhet. Törlés esetén a címkének léteznie kell. Aktiválás esetén a címkének léteznie kell, és nem használhatja más kiterjesztés. Deaktiválás esetén a címkének aktívnak és kézzel definiáltnak  kell lennie.",
+       "apihelp-managetags-param-reason": "Opcionális indoklás a címke létrehozásához, törléséhez, aktiválásához vagy deaktiválásához.",
+       "apihelp-managetags-param-ignorewarnings": "Figyelmeztetések figyelmen kívül hagyása a művelet közben.",
+       "apihelp-managetags-example-create": "<kbd>spam</kbd> címke létrehozása <kbd>For use in edit patrolling</kbd> indoklással",
+       "apihelp-managetags-example-delete": "<kbd>vandlaism</kbd> címke törlése <kbd>Misspelt</kbd> indoklással",
+       "apihelp-managetags-example-activate": "<kbd>spam</kbd> címke aktiválása <kbd>For use in edit patrolling</kbd> indoklással",
+       "apihelp-managetags-example-deactivate": "<kbd>spam</kbd> címke deaktiválása <kbd>No longer required</kbd> indoklással",
        "apihelp-mergehistory-description": "Laptörténetek egyesítése",
        "apihelp-mergehistory-param-reason": "Laptörténet egyesítésének oka.",
        "apihelp-move-description": "Egy lap átnevezése.",
+       "apihelp-move-param-from": "Az átnevezendő lap címe. Nem használható együtt a <var>$1fromid</var> paraméterrel.",
+       "apihelp-move-param-fromid": "Az átnevezendő lap lapazonosítója. Nem használható együtt a <var>$1from</var> paraméterrel.",
+       "apihelp-move-param-to": "A lap új címe.",
        "apihelp-move-param-reason": "Az átnevezés oka.",
        "apihelp-move-param-movetalk": "Nevezd át a vitalapot is, ha létezik.",
        "apihelp-move-param-movesubpages": "Nevezd át az allapokat is, ha lehetséges.",
        "apihelp-move-param-noredirect": "Ne készíts átirányítást.",
+       "apihelp-move-param-watch": "A lap és az átirányítás hozzáadása a jelenlegi felhasználó figyelőlistájához.",
+       "apihelp-move-param-unwatch": "A lap és az átirányítás eltávolítása a jelenlegi felhasználó figyelőlistájáról.",
+       "apihelp-move-param-watchlist": "A lap hozzáadása a figyelőlistához vagy eltávolítása onnan feltétel nélkül, a beállítások használata vagy a figyelőlista érintetlenül hagyása.",
        "apihelp-move-param-ignorewarnings": "Figyelmeztetések figyelmen kívül hagyása.",
+       "apihelp-move-example-move": "<kbd>Badtitle</kbd> átnevezése <kbd>Goodtitle</kbd> címre átirányítás készítése nélkül.",
+       "apihelp-opensearch-description": "Keresés a wikin az OpenSearch protokoll segítségével.",
+       "apihelp-opensearch-param-search": "A keresőkifejezés.",
        "apihelp-opensearch-param-limit": "Találatok maximális száma.",
+       "apihelp-opensearch-param-namespace": "A keresendő névterek.",
+       "apihelp-opensearch-param-suggest": "Ne csináljon semmit, ha a <var>[[mw:Special:MyLanguage/Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> hamis.",
+       "apihelp-opensearch-param-redirects": "Hogyan kezelje az átirányításokat:\n;return: Magának az átirányításnak a visszaadása.\n;resolve: A céllap visszaadása. Lehet, hogy kevesebb mint <var>$1limit</var> találatot ad vissza.\nTörténeti okokból az alapértelmezés „return” <kbd>$1format=json</kbd> esetén és „resolve” más formátumoknál.",
+       "apihelp-opensearch-param-format": "A kimenet formátuma.",
+       "apihelp-opensearch-example-te": "<kbd>Te</kbd>-vel kezdődő lapok keresése.",
+       "apihelp-options-description": "A jelenlegi felhasználó beállításainak módosítása.\n\nCsak a MediaWiki vagy kiterjesztései által kínált, valamint a <code>userjs-</code> előtagú (felhasználói parancsfájloknak szánt) beállítások állíthatók be.",
+       "apihelp-options-param-reset": "Beállítások visszaállítása a wiki alapértelmezéseire.",
+       "apihelp-options-param-resetkinds": "A visszaállítandó beállítások típusa(i) a <var>$1reset</var> paraméter használatakor.",
+       "apihelp-options-param-change": "Változtatások listája név=érték formátumban (pl. <kbd>skin=vector</kbd>). Ha nincs érték megadva (egyenlőségjel sem szerepel – pl. <kbd>beállítás|másik|…</kbd>), a beállítások visszaállnak az alapértelmezett értékre. Ha bármilyen érték tartalmaz függőleges vonal karaktert (<kbd>|</kbd>), használd az [[Special:ApiHelp/main#main/datatypes|alternatív elválasztókaraktert]] a megfelelő működéshez.",
+       "apihelp-options-param-optionname": "Az <var>$1optionvalue</var> értékre állítandó beállítás neve.",
+       "apihelp-options-param-optionvalue": "Az <var>$1optionname</var> beállítás értéke.",
        "apihelp-options-example-reset": "Minden beállítás visszaállítása",
+       "apihelp-options-example-change": "A <kbd>skin</kbd> és a <kbd>hideminor</kbd> beállítások módosítása.",
+       "apihelp-options-example-complex": "Minden beállítás visszaállítása, majd a <kbd>skin</kbd> és a <kbd>nickname</kbd> beállítása.",
+       "apihelp-paraminfo-description": "Információk lekérése API-modulokról.",
+       "apihelp-paraminfo-param-modules": "Modulnevek (az <var>action</var> és <var>format</var> paraméterek értékei vagy <kbd>main</kbd>). Megadhatók almodulok <kbd>+</kbd> elválasztással vagy minden almodul <kbd>+*</kbd>, illetve rekurzívan minden almodul <kbd>+**</kbd> végződéssel.",
+       "apihelp-paraminfo-param-helpformat": "A súgószövegek formátuma.",
+       "apihelp-paraminfo-param-querymodules": "Lekérdező modul(ok) neve (a <var>prop</var>, <var>meta</var> vagy <var>list</var> paraméter értéke). Használd a <kbd>$1modules=query+foo</kbd> formát a <kbd>$1querymodules=foo</kbd> helyett.",
+       "apihelp-paraminfo-param-mainmodule": "Információk lekérése a fő (legfelső szintű) modulról is. Használd a <kbd>$1modules=main</kbd> paramétert helyette.",
+       "apihelp-paraminfo-param-pagesetmodule": "Információk lekérése a pageset modulról is (ez szolgáltatja a <var>titles</var> paramétert és társait).",
+       "apihelp-paraminfo-param-formatmodules": "Formázómodul(ok) neve (a <var>format</var> paraméter értéke). Használd a <var>$1modules</var> paramétert helyette.",
+       "apihelp-paraminfo-example-1": "Információk megjelenítése az <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> és <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> lekérdezésekhez.",
+       "apihelp-paraminfo-example-2": "Információk megjelenítése az <kbd>[[Special:ApiHelp/query|action=query]]</kbd> összes almoduljához.",
+       "apihelp-parse-description": "Tartalom feldolgozása.\n\nLásd az <kbd>[[Special:ApiHelp/query|action=query]]</kbd> számos prop-modulját a információk lekérésére a lap aktuális változatáról.\n\nTöbbféle módon megadható a feldolgozandó szöveg:\n# Egy lap vagy lapváltozat megadásával, a <var>$1page</var>, <var>$1pageid</var> vagy <var>$1oldid</var> paraméterrel.\n# Magának a tartalomnak a megadásával, a <var>$1text</var>, <var>$1title</var> és <var>$1contentmodel</var> paraméterrel.\n# Csak egy összefoglaló feldolgozása. A <var>$1prop</var> paraméternek üresnek kell lennie.",
+       "apihelp-parse-param-title": "A lapnak a címe, amihez a szöveg tartozik. Ha nincs megadva, a <var>$1contentmodel</var> paraméter kötelező, és a cím [[API]] lesz.",
+       "apihelp-parse-param-text": "A feldolgozandó szöveg. Használd a <var>$1title</var> vagy <var>$1contentmodel</var> paramétert a tartalommodell megadásához.",
+       "apihelp-parse-param-summary": "Feldolgozandó szerkesztési összefoglaló.",
+       "apihelp-parse-param-page": "Ezen lap tartalmának feldolgozása. Nem használható együtt a <var>$1text</var> és <var>$1title</var> paraméterrel.",
+       "apihelp-parse-param-pageid": "Ezen lap tartalmának feldolgozása. Felülírja a <var>$1page</var> paramétert.",
+       "apihelp-parse-param-redirects": "Ha a <var>$1page</var> vagy <var>$1pageid</var> átirányítás, annak feloldása.",
+       "apihelp-parse-param-oldid": "Ezen lapváltozat feldolgozása. Felülírja a <var>$1page</var> és <var>$1pageid</var> paramétert.",
+       "apihelp-parse-param-prop": "A lekérendő információk:",
+       "apihelp-parse-paramvalue-prop-text": "A feldolgozott wikiszöveg.",
+       "apihelp-parse-paramvalue-prop-langlinks": "A feldolgozott wikiszövegben talált nyelvközi hivatkozások.",
+       "apihelp-parse-paramvalue-prop-categories": "A feldolgozott wikiszövegben talált kategóriák.",
+       "apihelp-parse-paramvalue-prop-categorieshtml": "A kategóriák HTML-verziója.",
+       "apihelp-parse-paramvalue-prop-links": "A feldolgozott wikiszövegben talált belső linkek.",
+       "apihelp-parse-paramvalue-prop-templates": "A feldolgozott wikiszövegben használt sablonok.",
+       "apihelp-parse-paramvalue-prop-images": "A feldolgozott wikiszövegben használt képek.",
+       "apihelp-parse-paramvalue-prop-externallinks": "A feldolgozott wikiszövegben talált külső linkek.",
+       "apihelp-parse-paramvalue-prop-sections": "A feldolgozott wikiszövegben talált szakaszok.",
+       "apihelp-parse-paramvalue-prop-revid": "A feldolgozott lap lapváltozat-azonosítója.",
+       "apihelp-parse-paramvalue-prop-displaytitle": "A feldolgozott wikiszöveghez tartozó cím.",
+       "apihelp-parse-paramvalue-prop-headitems": "<span class=\"apihelp-deprecated\">Elavult.</span> A <code>&lt;head&gt;</code> HTML-címkébe kerülő elemek.",
+       "apihelp-parse-paramvalue-prop-headhtml": "A lap feldolgozott <code>&lt;head&gt;</code> HTML-címkéje.",
+       "apihelp-parse-paramvalue-prop-modules": "A lapon használt ResourceLoader-modulok. A betöltésükhöz használd a <code>mw.loader.using()</code> függvényt. Vagy a <kbd>jsconfigvars</kbd>, vagy az <kbd>encodedjsconfigvars</kbd> paramétert kötelező együtt használni ezzel a paraméterrel.",
+       "apihelp-parse-paramvalue-prop-jsconfigvars": "A lapra jellemző JavaScript-változók. A használatukhoz állítsd be őket az <code>mw.config.set()</code> függvénnyel.",
+       "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "A lapra jellemző JavaScript-változók JSON-szövegként.",
+       "apihelp-parse-paramvalue-prop-indicators": "A lap státuszindikátorainak HTML-kódja.",
+       "apihelp-parse-paramvalue-prop-iwlinks": "A feldolgozott wikiszövegben talált interwikihivatkozások.",
+       "apihelp-parse-paramvalue-prop-wikitext": "Az eredeti wikiszöveg.",
+       "apihelp-parse-paramvalue-prop-properties": "A feldolgozott wikiszövegben definiált különböző tulajdonságok.",
+       "apihelp-parse-paramvalue-prop-parsewarnings": "A tartalom feldolgozása közben előforduló hibák visszaadása.",
+       "apihelp-parse-param-wrapoutputclass": "Az értelmező kimenetének körülvétele ezzel a CSS-osztállyal.",
+       "apihelp-parse-param-pst": "Mentés előtti átalakítások elvégzése a bemeneten a feldolgozás előtt. Csak szöveggel használva érvényes.",
+       "apihelp-parse-param-onlypst": "Mentés előtti átalakítások (pre-save transform, PST) végrehajtása a bemeneten, de a feldolgozás mellőzése. Csak a <var>$1text</var> paraméterrel használva érvényes.",
+       "apihelp-parse-param-section": "Csak a megadott sorszámú szakasz feldolgozása.\n\nHa <kbd>new</kbd>, a <var>$1text</var> és <var>$1sectiontitle</var> feldolgozása úgy, mintha egy új szakaszt adnál a laphoz.\n\nA <kbd>new</kbd> csak a <var>text</var> paraméter megadásakor engedélyezett.",
+       "apihelp-parse-param-sectiontitle": "Az új szakasz címe, ha a <var>section</var> paraméter <kbd>new</kbd>.\n\nA szerkesztéssel ellentétben itt nem a <var>summary</var> tartalma az alapértelmezett értéke.",
+       "apihelp-parse-param-disablepp": "Használd a <var>$1disablelimitreport</var> paramétert helyette.",
+       "apihelp-parse-param-disableeditsection": "A szakaszok szerkesztőlinkjeinek elhagyása a kimenetből.",
+       "apihelp-parse-param-preview": "Feldolgozás előnézetmódban.",
+       "apihelp-parse-param-sectionpreview": "Feldolgozás szakaszelőnézet-módban (az előnézetmódot is engedélyezi).",
+       "apihelp-parse-param-disabletoc": "Tartalomjegyzék elhagyása a kimenetből.",
+       "apihelp-parse-param-contentmodel": "A bemeneti szöveg tartalommodellje. Ha nincs megadva, a $1title paraméter kötelező, és az alapértelmezés a megadott cím tartalommodellje lesz. Csak a $1text paraméterrel együtt használva érvényes.",
+       "apihelp-parse-example-page": "Egy lap feldolgozása.",
+       "apihelp-parse-example-text": "Wikiszöveg feldolgozása.",
+       "apihelp-parse-example-texttitle": "Wikiszöveg feldolgozása a lapcím megadásával.",
+       "apihelp-parse-example-summary": "Egy szerkesztési összefoglaló feldolgozása.",
+       "apihelp-patrol-description": "Egy lap vagy lapváltozat ellenőrzöttnek jelölése (patrol).",
+       "apihelp-patrol-param-rcid": "Az ellenőrzendő frissváltoztatások-azonosító.",
+       "apihelp-patrol-param-revid": "Az ellenőrzendő lapváltozat azonosítója (oldid).",
+       "apihelp-patrol-example-rcid": "Egy friss változtatás ellenőrzöttnek jelölése.",
+       "apihelp-patrol-example-revid": "Egy lapváltozat ellenőrzöttnek jelölése.",
+       "apihelp-protect-description": "Egy lap védelmi szintjének változtatása.",
+       "apihelp-protect-param-title": "A levédendő/feloldandó lap címe. Nem használható együtt a <var>$1pageid</var> paraméterrel.",
+       "apihelp-protect-param-pageid": "A levédendő/feloldandó lap lapazonosítója. Nem használható együtt a <var>$1title</var> paraméterrel.",
+       "apihelp-protect-param-protections": "Védelmi szintek, <kbd>típus=szint</kbd> formátumban (pl. <kbd>edit=sysop</kbd>). Az <kbd>all</kbd> szint azt jelenti, hogy mindenki végrehajthatja az adott műveletet, vagyis nincs korlátozás.\n\n<strong>Megjegyzés:</strong> Minden nem listázott művelet védelme el lesz távolítva.",
+       "apihelp-protect-param-expiry": "A lejáratok időbélyege. Ha csak egy időbélyeg van megadva, az vonatkozik minden védelemre. Használj <kbd>infinite</kbd> (végtelen), <kbd>indefinite</kbd> (határozatlan), <kbd>infinity</kbd> (végtelen) vagy <kbd>never</kbd> (soha) értéket le nem járó védelemhez.",
+       "apihelp-protect-param-reason": "A levédés/feloldás oka.",
+       "apihelp-protect-param-cascade": "Kaszkádolt védelem engedélyezése (a lapon használt sablonok és képek védelme). Nincs hatása, ha egyetlen megadott védelmi szint sem támogatja a kaszkádolt védelmet.",
+       "apihelp-protect-param-watch": "A levédett/feloldott lap címe hozzáadása az aktuális felhasználó figyelőlistájához.",
+       "apihelp-protect-param-watchlist": "A lap hozzáadása a figyelőlistához vagy eltávolítása onnan feltétel nélkül, a beállítások használata vagy a figyelőlista érintetlenül hagyása.",
        "apihelp-protect-example-protect": "Lap levédése.",
+       "apihelp-protect-example-unprotect": "Egy lap védelmének feloldása a korlátozások <kbd>all</kbd>-ra állításával (vagyis mindenki végrehajthatja a műveleteket).",
+       "apihelp-protect-example-unprotect2": "Egy lap védelmének feloldása semmilyen védelem beállításával.",
+       "apihelp-purge-description": "A gyorsítótár ürítése a megadott lapoknál.",
+       "apihelp-purge-param-forcelinkupdate": "A linktáblák frissítése.",
+       "apihelp-purge-param-forcerecursivelinkupdate": "A linktábla frissítése a megadott lapokra és minden olyan lapra, ami a megadott lapokat beilleszti sablonként.",
+       "apihelp-purge-example-simple": "A gyorsítótár ürítése a <kbd>Main Page</kbd> és <kbd>API</kbd> lapoknál.",
+       "apihelp-purge-example-generator": "A gyorsítótár ürítése az első 10 fő névtérbeli lapnál.",
+       "apihelp-query-description": "Adatok lekérése a MediaWikiből és a MediaWikiről.\n\nMinden adatmódosításhoz először a <kbd>query</kbd> segítségével szereznie kell egy tokent a rosszindulatú oldalak visszaéléseinek elhárítására.",
+       "apihelp-query-param-prop": "A lapokról lekérendő tulajdonságok.",
+       "apihelp-query-param-list": "Lekérendő listák.",
+       "apihelp-query-param-meta": "Lekérendő metaadatok.",
+       "apihelp-query-param-indexpageids": "Egy <samp>pageids</samp> szakasz hozzáadása a kimenethez az összes visszaadott lapazonosítóval.",
+       "apihelp-query-param-export": "Az összes megadott vagy generált lap aktuális változatának exportálása.",
+       "apihelp-query-param-exportnowrap": "Az exportált XML visszaadása normál eredményszerkezetbe (JSON, XML stb.) burkolás nélkül (a [[Special:Export]] kimenetével megegyező formátum). Csak az <var>$1export</var> paraméterrel együtt használható.",
+       "apihelp-query-param-iwurl": "A teljes URL visszaadása, ha a cím egy interwikilink.",
+       "apihelp-query-param-rawcontinue": "Nyers <samp>query-continue</samp> adatok visszaadása a folytatáshoz.",
+       "apihelp-query-example-revisions": "[[Special:ApiHelp/query+siteinfo|Wikiinformációk]] és a <kbd>Main Page</kbd> [[Special:ApiHelp/query+revisions|laptörténetének]] lekérése.",
+       "apihelp-query-example-allpages": "Az <kbd>API/</kbd> kezdetű lapok laptörténetének lekérése.",
+       "apihelp-query+allcategories-description": "Az összes kategória visszaadása.",
+       "apihelp-query+allcategories-param-from": "A kategóriák listázása ettől a címtől.",
+       "apihelp-query+allcategories-param-to": "A kategóriák listázása eddig a címig.",
+       "apihelp-query+allcategories-param-prefix": "Ezzel kezdődő című kategóriák keresése.",
        "apihelp-query+allcategories-param-dir": "A rendezés iránya.",
+       "apihelp-query+allcategories-param-min": "Csak legalább ennyi taggal rendelkező kategóriák visszaadása.",
+       "apihelp-query+allcategories-param-max": "Csak legfeljebb ennyi taggal rendelkező kategóriák visszaadása.",
+       "apihelp-query+allcategories-param-limit": "A visszaadandó kategóriák száma.",
+       "apihelp-query+allcategories-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+allcategories-paramvalue-prop-size": "A kategóriában lévő lapok száma.",
+       "apihelp-query+allcategories-paramvalue-prop-hidden": "Rejtett-e a kategória a <code>_&#95;HIDDENCAT_&#95;</code> kapcsolóval.",
+       "apihelp-query+allcategories-example-size": "Kategóriák listázása a bennük lévő lapok számával.",
+       "apihelp-query+allcategories-example-generator": "Információk lekérése magukról a kategórialapokról, amiknek a címe <kbd>List</kbd> kezdetű.",
+       "apihelp-query+alldeletedrevisions-description": "Egy felhasználó vagy egy névtér összes törölt szerkesztésének listázása.",
+       "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Csak az <var>$3user</var> paraméterrel együtt használható.",
+       "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Nem használható együtt az <var>$3user</var> paraméterrel.",
+       "apihelp-query+alldeletedrevisions-param-start": "A listázás kezdő időbélyege.",
+       "apihelp-query+alldeletedrevisions-param-end": "A lista végét jelentő időbélyeg.",
+       "apihelp-query+alldeletedrevisions-param-from": "Listázás ettől a címtől.",
+       "apihelp-query+alldeletedrevisions-param-to": "Listázás eddig a címig.",
+       "apihelp-query+alldeletedrevisions-param-prefix": "Ezzel kezdődő című lapok keresése.",
+       "apihelp-query+alldeletedrevisions-param-tag": "Csak ezzel a címkével ellátott változatok listázása.",
+       "apihelp-query+alldeletedrevisions-param-user": "Csak ezen felhasználó szerkesztéseinek listázása.",
+       "apihelp-query+alldeletedrevisions-param-excludeuser": "Ezen felhasználó szerkesztéseinek kihagyása.",
+       "apihelp-query+alldeletedrevisions-param-namespace": "Lapok listázása csak ebben a névtérben.",
+       "apihelp-query+alldeletedrevisions-param-generatetitles": "Generátorként használva címek visszaadása lapváltozat-azonosítók helyett.",
+       "apihelp-query+alldeletedrevisions-example-user": "<kbd>Example</kbd> 50 legutóbbi törölt szerkesztésének listázása.",
+       "apihelp-query+alldeletedrevisions-example-ns-main": "A fő névtér első 50 törölt szerkesztésének listázása.",
+       "apihelp-query+allfileusages-description": "Az összes fájlhasználat listázása, beleértve a nem létező fájlokét is.",
+       "apihelp-query+allfileusages-param-from": "Listázás ettől a címtől vagy fájltól.",
+       "apihelp-query+allfileusages-param-to": "Listázás eddig a címig vagy fájlig.",
+       "apihelp-query+allfileusages-param-prefix": "Ezzel kezdődő nevű fájlok keresése.",
+       "apihelp-query+allfileusages-param-unique": "Csak különböző fájlnevek listázása. Nem használható együtt az <kbd>$1prop=id</kbd> paraméterrel.",
+       "apihelp-query+allfileusages-param-prop": "Visszaadandó információk:",
+       "apihelp-query+allfileusages-paramvalue-prop-ids": "A képeket használó lapok lapazonosítói (nem használható együtt az <var>$1unique</var> paraméterrel).",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "A fájl neve.",
+       "apihelp-query+allfileusages-param-limit": "A visszaadandó elemek maximális száma.",
+       "apihelp-query+allfileusages-param-dir": "A listázás iránya.",
+       "apihelp-query+allfileusages-example-B": "Fájlnevek listázása, a hiányzókat is beleértve, a forráslapok lapazonosítójával, <kbd>B</kbd>-től kezdve.",
+       "apihelp-query+allfileusages-example-unique": "Különböző fájlnevek listázása.",
+       "apihelp-query+allfileusages-example-unique-generator": "Az összes fájlnév lekérése, hiányzók megjelölése.",
+       "apihelp-query+allfileusages-example-generator": "A fájlokat használó lapok lekérése.",
+       "apihelp-query+allimages-description": "Az összes kép visszaadása.",
+       "apihelp-query+allimages-param-sort": "Rendezési szempont.",
+       "apihelp-query+allimages-param-dir": "A listázás iránya.",
+       "apihelp-query+allimages-param-from": "Listázás ettől a fájlnévtől. Csak az <kbd>$1sort=name</kbd> paraméterrel együtt használható.",
+       "apihelp-query+allimages-param-to": "Listázás eddig a fájlnévig. Csak az <kbd>$1sort=name</kbd> paraméterrel együtt használható.",
+       "apihelp-query+allimages-param-start": "Listázás ettől az időbélyegtől. Csak az <kbd>$1sort=timestamp</kbd> paraméterrel együtt használható.",
+       "apihelp-query+allimages-param-end": "Listázás eddig az időbélyegig. Csak az <kbd>$1sort=timestamp</kbd> paraméterrel együtt használható.",
+       "apihelp-query+allimages-param-prefix": "Ezzel kezdődő nevű fájlok keresése. Csak az <kbd>$1sort=name</kbd> paraméterrel együtt használható.",
+       "apihelp-query+allimages-param-minsize": "A fájlok minimális fájlmérete bájtban.",
+       "apihelp-query+allimages-param-maxsize": "A fájlok maximális fájlmérete bájtban.",
+       "apihelp-query+allimages-param-user": "Ezen felhasználó által feltöltött fájlok visszaadása. Csak az <kbd>$1sort=timestamp</kbd> paraméterrel együtt használható. Nem használható együtt az <var>$1filterbots</var> paraméterrel.",
+       "apihelp-query+allimages-param-filterbots": "Botok által feltöltött fájlok szűrése. Csak az <kbd>$1sort=timestamp</kbd> paraméterrel együtt használható. Nem használható együtt az <var>$1user</var> paraméterrel.",
+       "apihelp-query+allimages-param-mime": "Szűrés MIME-típus alapján, pl. <kbd>image/jpeg</kbd>.",
+       "apihelp-query+allimages-param-limit": "A visszaadandó képek száma.",
+       "apihelp-query+allimages-example-B": "Fájlok listázása <kbd>B</kbd>-től kezdve.",
+       "apihelp-query+allimages-example-recent": "A legutóbb feltöltött fájlok listázása, hasonló a [[Special:NewFiles]] laphoz.",
+       "apihelp-query+allimages-example-mimetypes": "<kbd>image/png</kbd> vagy <kbd>image/gif</kbd> MIME-típusú fájlok listázása",
+       "apihelp-query+allimages-example-generator": "Információk 4 fájlról <kbd>T</kbd>-től kezdve.",
+       "apihelp-query+alllinks-description": "Egy adott névtérbe mutató összes hivatkozás visszaadása.",
+       "apihelp-query+alllinks-param-from": "Listázás ettől a hivatkozástól.",
+       "apihelp-query+alllinks-param-to": "Listázás eddig a hivatkozásig.",
+       "apihelp-query+alllinks-param-prefix": "Ezzel kezdődő című hivatkozott lapok keresése.",
+       "apihelp-query+alllinks-param-unique": "Csak különböző címek listázása. Nem használható együtt az <kbd>$1prop=ids</kbd> paraméterrel.\nGenerátorként használva a céllapokat adja vissza a forráslapok helyett.",
+       "apihelp-query+alllinks-param-prop": "Visszaadandó információk:",
+       "apihelp-query+alllinks-paramvalue-prop-ids": "A hivatkozó lapok lapazonosítói (nem használható együtt az <var>$1unique</var> paraméterrel).",
+       "apihelp-query+alllinks-paramvalue-prop-title": "A hivatkozott lap címe.",
+       "apihelp-query+alllinks-param-namespace": "A listázandó névtér.",
+       "apihelp-query+alllinks-param-limit": "A visszaadandó elemek maximális száma.",
+       "apihelp-query+alllinks-param-dir": "A listázás iránya.",
+       "apihelp-query+alllinks-example-B": "Hivatkozott lapok listázása, a hiányzókat is beleértve, a forráslapok lapazonosítójával, <kbd>B</kbd>-től kezdve.",
+       "apihelp-query+alllinks-example-unique": "Különböző hivatkozott lapok listázása.",
+       "apihelp-query+alllinks-example-unique-generator": "Az összes hivatkozott lap lekérése, hiányzók megjelölése.",
+       "apihelp-query+alllinks-example-generator": "A hivatkozásokat tartalmazó lapok lekérése.",
+       "apihelp-query+allmessages-description": "A wiki felületüzeneteinek lekérése.",
+       "apihelp-query+allmessages-param-messages": "A visszaadandó üzenetek. A <kbd>*</kbd> (alapértelmezés) az összes üzenetet jelenti.",
+       "apihelp-query+allmessages-param-prop": "A lekérendő tulajdonságok.",
+       "apihelp-query+allmessages-param-nocontent": "Ne tartalmazza a kimenet az üzenetek tartalmát.",
+       "apihelp-query+allmessages-param-includelocal": "Helyi üzenetek befoglalása (a szoftverben nem, de a {{ns:MediaWiki}} névtérben létező üzenetek).\nEz az összes lapot listázza a {{ns:MediaWiki}} névtérben, így a nem valódi üzeneteket is, mint a [[MediaWiki:Common.js|Common.js]] fájl.",
+       "apihelp-query+allmessages-param-args": "Az üzenetben behelyettesítendő paraméterek.",
+       "apihelp-query+allmessages-param-filter": "Csak az ezen szöveget tartalmazó nevű üzenetek visszaadása.",
+       "apihelp-query+allmessages-param-customised": "Az üzenetek szűrése módosítási állapot alapján.",
+       "apihelp-query+allmessages-param-lang": "A visszaadott üzenetek nyelve.",
+       "apihelp-query+allmessages-param-from": "Listázás ettől az üzenettől.",
+       "apihelp-query+allmessages-param-to": "Listázás eddig az üzenetig.",
+       "apihelp-query+allmessages-param-prefix": "Ezzel kezdődő nevű üzenetek visszaadása.",
+       "apihelp-query+allmessages-example-ipb": "<kbd>ipb-</kbd> előtagú üzenetek lekérése.",
+       "apihelp-query+allmessages-example-de": "Az <kbd>august</kbd> és <kbd>mainpage</kbd> üzenetek lekérése német nyelven.",
+       "apihelp-query+allpages-description": "Egy adott névtér összes lapjának visszaadása.",
+       "apihelp-query+allpages-param-from": "A lapok listázása ettől a címtől.",
+       "apihelp-query+allpages-param-to": "A lapok listázása eddig a címig.",
+       "apihelp-query+allpages-param-prefix": "Ezzel kezdődő című lapok keresése.",
+       "apihelp-query+allpages-param-namespace": "A listázandó névtér.",
+       "apihelp-query+allpages-param-filterredir": "A listázandó lapok.",
+       "apihelp-query+allpages-param-minsize": "A lapok minimális hossza bájtban.",
+       "apihelp-query+allpages-param-maxsize": "A lapok maximális hossza bájtban.",
+       "apihelp-query+allpages-param-prtype": "Csak védett lapok listázása.",
+       "apihelp-query+allpages-param-prlevel": "A védelmek szűrése a védelmi szint alapján (csak az <var>$1prtype=</var> paraméterrel együtt használható).",
+       "apihelp-query+allpages-param-limit": "A visszaadandó lapok maximális száma.",
+       "apihelp-query+allpages-param-dir": "A listázás iránya.",
+       "apihelp-query+allpages-param-filterlanglinks": "Szűrés az alapján, hogy vannak-e nyelvközi hivatkozások a lapon. Nem biztos, hogy figyelembe veszi a kiterjesztések által hozzáadott nyelvközi hivatkozásokat.",
+       "apihelp-query+allpages-param-prexpiry": "Szűrés a védelem lejárata alapján:\n;indefinite: Csak meghatározatlan idejű védelemmel ellátott lapok.\n;definite: Csak meghatározott idejű (konkrét lejáratú) védelemmel ellátott lapok.\n;all: Bármilyen lejáratú védelemmel ellátott lapok.",
+       "apihelp-query+allpages-example-B": "Lapok listázása <kbd>B</kbd>-től kezdve.",
+       "apihelp-query+allpages-example-generator": "Információk 4 lapról <kbd>T</kbd>-től kezdve.",
+       "apihelp-query+allpages-example-generator-revisions": "Az első két nem átirányító lap tartalmának megjelenítése <kbd>Re</kbd>-től kezdve.",
+       "apihelp-query+allredirects-description": "Egy adott névtérbe mutató összes átirányítás listázása.",
+       "apihelp-query+allredirects-param-from": "Listázás ettől az átirányításcímtől.",
+       "apihelp-query+allredirects-param-to": "Listázás eddig az átirányításcímig.",
+       "apihelp-query+allredirects-param-prefix": "Ezzel kezdődő című céllapok keresése.",
+       "apihelp-query+allredirects-param-unique": "Csak különböző céllapok listázása. Nem használható együtt az <kbd>$1prop=ids|fragment|interwiki</kbd> paraméterrel.\nGenerátorként használva a céllapokat adja vissza a forráslapok helyett.",
+       "apihelp-query+allredirects-param-prop": "Visszaadandó információk:",
+       "apihelp-query+allredirects-paramvalue-prop-ids": "Az átirányító lapok lapazonosítói (nem használható együtt az <var>$1unique</var> paraméterrel).",
+       "apihelp-query+allredirects-paramvalue-prop-title": "Az átirányítás címe.",
+       "apihelp-query+allredirects-paramvalue-prop-fragment": "Az átirányítás célszakasza, ha van (nem használható együtt az <var>$1unique</var> paraméterrel).",
+       "apihelp-query+allredirects-paramvalue-prop-interwiki": "Az átirányítás céljának interwiki-előtagja, ha van (nem használható együtt az <var>$1unique</var> paraméterrel).",
+       "apihelp-query+allredirects-param-namespace": "A listázandó névtér.",
+       "apihelp-query+allredirects-param-limit": "A visszaadandó elemek maximális száma.",
+       "apihelp-query+allredirects-param-dir": "A listázás iránya.",
+       "apihelp-query+allredirects-example-B": "Céllapok listázása, a hiányzókat is beleértve, a forráslapok lapazonosítójával, <kbd>B</kbd>-től kezdve.",
+       "apihelp-query+allredirects-example-unique": "Különböző céllapok listázása.",
+       "apihelp-query+allredirects-example-unique-generator": "Az összes céllap lekérése, hiányzók megjelölése.",
+       "apihelp-query+allredirects-example-generator": "Az átirányításokat tartalmazó lapok lekérése.",
+       "apihelp-query+allrevisions-description": "Az összes lapváltozat listázása.",
+       "apihelp-query+allrevisions-param-start": "A listázás kezdő időbélyege.",
+       "apihelp-query+allrevisions-param-end": "A lista végét jelentő időbélyeg.",
+       "apihelp-query+allrevisions-param-user": "Csak ezen felhasználó szerkesztéseinek listázása.",
+       "apihelp-query+allrevisions-param-excludeuser": "Ezen felhasználó szerkesztéseinek kihagyása.",
+       "apihelp-query+allrevisions-param-namespace": "Lapok listázása csak ebben a névtérben.",
+       "apihelp-query+allrevisions-param-generatetitles": "Generátorként használva címek visszaadása lapváltozat-azonosítók helyett.",
+       "apihelp-query+allrevisions-example-user": "<kbd>Example</kbd> 50 legutóbbi szerkesztésének listázása.",
+       "apihelp-query+allrevisions-example-ns-main": "A fő névtér első 50 szerkesztésének listázása.",
+       "apihelp-query+mystashedfiles-param-prop": "A fájlok lekérendő tulajdonságai.",
+       "apihelp-query+mystashedfiles-paramvalue-prop-size": "A fájlméret és a kép dimenziói (szélessége és magassága).",
+       "apihelp-query+mystashedfiles-paramvalue-prop-type": "A fájl MIME-típusa és médiatípusa.",
+       "apihelp-query+mystashedfiles-param-limit": "A lekérendő fájlok száma.",
+       "apihelp-query+alltransclusions-description": "Az összes beillesztés listázása (&#123;&#123;x&#125;&#125; kóddal beillesztett lapok), beleértve a nem létező lapokét is.",
+       "apihelp-query+alltransclusions-param-from": "Listázás ettől a beillesztett laptól.",
+       "apihelp-query+alltransclusions-param-to": "Listázás eddig a beillesztett lapig.",
+       "apihelp-query+alltransclusions-param-prefix": "Ezzel kezdődő című beillesztett lapok keresése.",
+       "apihelp-query+alltransclusions-param-unique": "Csak különböző beillesztett címek listázása. Nem használható együtt az <kbd>$1prop=ids</kbd> paraméterrel.\nGenerátorként használva a céllapokat adja vissza a forráslapok helyett.",
+       "apihelp-query+alltransclusions-param-prop": "Visszaadandó információk:",
+       "apihelp-query+alltransclusions-paramvalue-prop-ids": "A lapokat beillesztő lapok lapazonosítói (nem használható együtt az <var>$1unique</var> paraméterrel).",
+       "apihelp-query+alltransclusions-paramvalue-prop-title": "A beillesztés címe.",
+       "apihelp-query+alltransclusions-param-namespace": "A listázandó névtér.",
+       "apihelp-query+alltransclusions-param-limit": "A visszaadandó elemek maximális száma.",
+       "apihelp-query+alltransclusions-param-dir": "A listázás iránya.",
+       "apihelp-query+alltransclusions-example-B": "Beillesztett lapok listázása, a hiányzókat is beleértve, a forráslapok lapazonosítójával, <kbd>B</kbd>-től kezdve.",
+       "apihelp-query+alltransclusions-example-unique": "Különböző beillesztett címek listázása.",
+       "apihelp-query+alltransclusions-example-unique-generator": "Az összes beillesztett lap lekérése, hiányzók megjelölése.",
+       "apihelp-query+alltransclusions-example-generator": "A beillesztéseket tartalmazó lapok lekérése.",
+       "apihelp-query+allusers-description": "Az összes regisztrált felhasználó visszaadása.",
+       "apihelp-query+allusers-param-from": "A felhasználók listázása ettől a névtől.",
+       "apihelp-query+allusers-param-to": "A felhasználók listázása eddig a névig.",
+       "apihelp-query+allusers-param-prefix": "Ezzel kezdődő nevű felhasználók keresése.",
+       "apihelp-query+allusers-param-dir": "A rendezés iránya.",
+       "apihelp-query+allusers-param-group": "Csak megadott csoportokba tartozó felhasználók visszaadása.",
+       "apihelp-query+allusers-param-excludegroup": "Csak a megadott csoportokba <em>nem</em> tartozó felhasználók visszaadása.",
+       "apihelp-query+allusers-param-rights": "Csak a megadott jogosultságokkal rendelkező felhasználók visszaadása. Ez nem tartalmazza azokat a jogosultságokat, amiket implicit vagy automatikusan hozzáadott csoportok adnak meg, mint a *, a user vagy az autoconfirmed.",
+       "apihelp-query+allusers-param-prop": "Visszaadandó információk:",
+       "apihelp-query+allusers-paramvalue-prop-blockinfo": "Információk a felhasználó jelenleg érvényes blokkjáról.",
+       "apihelp-query+allusers-paramvalue-prop-groups": "A felhasználó csoportjai. Ez több szervererőforrást használ, és lehet, hogy a limitnél kevesebb eredményt ad vissza.",
+       "apihelp-query+allusers-paramvalue-prop-implicitgroups": "A felhasználó automatikus csoportjai.",
+       "apihelp-query+allusers-paramvalue-prop-rights": "A felhasználó jogosultságai.",
+       "apihelp-query+allusers-paramvalue-prop-editcount": "A felhasználó szerkesztésszáma.",
+       "apihelp-query+allusers-paramvalue-prop-registration": "A felhasználó regisztrációjának időbélyege, ha elérhető (lehet üres).",
+       "apihelp-query+allusers-paramvalue-prop-centralids": "A felhasználó központi azonosítói és az összekapcsolási státusza.",
+       "apihelp-query+allusers-param-limit": "A visszaadandó felhasználónevek maximális száma.",
+       "apihelp-query+allusers-param-witheditsonly": "Csak szerkesztéssel rendelkező felhasználók listázása.",
+       "apihelp-query+allusers-param-activeusers": "Csak az elmúlt $1 napban aktív felhasználók listázása.",
+       "apihelp-query+allusers-param-attachedwiki": "Az <kbd>$1prop=centralids</kbd> paraméter mellett annak jelzése, hogy a felhasználó össze van-e kapcsolva a megadott wikivel.",
+       "apihelp-query+allusers-example-Y": "A felhasználók listázása <kbd>Y</kbd>-tól kezdve.",
+       "apihelp-query+authmanagerinfo-description": "Információk lekérése az aktuális azonosítási státuszról.",
+       "apihelp-query+authmanagerinfo-param-securitysensitiveoperation": "Annak ellenőrzése, hogy a felhasználó jelenlegi azonosítási státusza megfelelő-e a megadott biztonságkritikus művelethez.",
+       "apihelp-query+authmanagerinfo-param-requestsfor": "Információk lekérése a megadott azonosítási művelethez szükséges azonosítási kérésekről.",
+       "apihelp-query+authmanagerinfo-example-login": "Egy bejelentkezés elkezdéséhez használható kérések lekérése.",
+       "apihelp-query+authmanagerinfo-example-login-merged": "Egy bejelentkezés elkezdéséhez használható kérések lekérése, az űrlapmezők összevonásával.",
+       "apihelp-query+authmanagerinfo-example-securitysensitiveoperation": "Annak ellenőrzése, hogy a hitelesítés megfelelő-e a <kbd>foo</kbd> művelethez.",
+       "apihelp-query+backlinks-description": "Egy adott lapra hivatkozó más lapok megkeresése.",
+       "apihelp-query+backlinks-param-title": "A keresendő cím. Nem használható együtt a <var>$1pageid</var> paraméterrel.",
+       "apihelp-query+backlinks-param-pageid": "A keresendő lapazonosító. Nem használható együtt a <var>$1title</var> paraméterrel.",
+       "apihelp-query+backlinks-param-namespace": "A listázandó névtér.",
+       "apihelp-query+backlinks-param-dir": "A listázás iránya.",
+       "apihelp-query+backlinks-param-filterredir": "Az átirányítások szűrése. Ha <kbd>nonredirects</kbd>, és a <var>$1redirect</var> paraméter engedélyezett, csak a második szintre érvényes.",
+       "apihelp-query+backlinks-param-limit": "A visszaadandó lapok maximális száma. Ha a <var>$1redirect</var> engedélyezve van, ez a limit minden szintre külön érvényes (vagyis összesen 2 × <var>$1limit</var> eredmény lehet a válaszban).",
+       "apihelp-query+backlinks-param-redirect": "Ha a hivatkozó lap átirányítás, az arra hivatkozó lapok keresése szintén. A maximális limit feleződik.",
+       "apihelp-query+backlinks-example-simple": "A <kbd>Main Page</kbd> lapra mutató hivatkozások keresése.",
+       "apihelp-query+backlinks-example-generator": "Információk lekérése a <kbd>Main Page</kbd>-re hivatkozó lapokról.",
+       "apihelp-query+blocks-description": "Az összes blokkolt felhasználó és IP-cím listázása.",
+       "apihelp-query+blocks-param-start": "A listázás kezdő időbélyege.",
+       "apihelp-query+blocks-param-end": "A lista végét jelentő időbélyeg.",
+       "apihelp-query+blocks-param-ids": "A listázandó blokkok blokkazonosítói (opcionális).",
+       "apihelp-query+blocks-param-users": "A keresendő felhasználók (opcionális).",
+       "apihelp-query+blocks-param-ip": "Minden erre az IP-címre vagy CIDR tartományra vonatkozó blokk listázása, a tartományblokkokat is beleértve. Nem használható együtt a <var>$3users</var> paraméterrel. A CIDR tartományok maximális szélessége IPv4 esetén /$1, IPv6 esetén /$2.",
+       "apihelp-query+blocks-param-limit": "A listázandó blokkok maximális száma.",
+       "apihelp-query+blocks-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+blocks-paramvalue-prop-id": "A blokk azonosítója.",
+       "apihelp-query+blocks-paramvalue-prop-user": "A blokkolt felhasználó felhasználóneve.",
+       "apihelp-query+blocks-paramvalue-prop-userid": "A blokkolt felhasználó felhasználóazonosítója.",
+       "apihelp-query+blocks-paramvalue-prop-by": "A blokkoló felhasználó felhasználóneve.",
+       "apihelp-query+blocks-paramvalue-prop-byid": "A blokkoló felhasználó felhasználóazonosítója.",
+       "apihelp-query+blocks-paramvalue-prop-timestamp": "A blokkolás időbélyege.",
+       "apihelp-query+blocks-paramvalue-prop-expiry": "A blokk lejáratának időbélyege.",
+       "apihelp-query+blocks-paramvalue-prop-reason": "A blokk indoklása.",
+       "apihelp-query+blocks-paramvalue-prop-range": "A blokk által érintett IP-címek tartománya.",
+       "apihelp-query+blocks-param-show": "Csak a megadott feltételeknek megfelelő elemek megjelenítése.\nPéldául csak IP-címek végtelen blokkjainak megjelenítéséhez állítsd <kbd>$1show=ip|!temp</kbd> értékre.",
+       "apihelp-query+blocks-example-simple": "Blokkok listázása.",
+       "apihelp-query+blocks-example-users": "<kbd>Alice</kbd> és <kbd>Bob</kbd> blokkjainak listázása.",
+       "apihelp-query+categories-description": "A lapok összes kategóriájának listázása.",
+       "apihelp-query+categories-param-prop": "A kategóriákhoz lekérendő további tulajdonságok:",
+       "apihelp-query+categories-paramvalue-prop-timestamp": "A kategória hozzáadásának időbélyege.",
+       "apihelp-query+categories-paramvalue-prop-hidden": "A <code>_&#95;HIDDENCAT_&#95;</code> kapcsolóval elrejtett kategóriák megjelölése.",
+       "apihelp-query+categories-param-show": "A megjelenítendő kategóriatípusok.",
+       "apihelp-query+categories-param-limit": "A visszaadandó kategóriák száma.",
+       "apihelp-query+categories-param-categories": "Csak ezen kategóriák listázása. Annak ellenőrzésére alkalmas, hogy egy lap benne van-e egy adott kategóriában.",
+       "apihelp-query+categories-param-dir": "A listázás iránya.",
+       "apihelp-query+categories-example-simple": "Az <kbd>Albert Einstein</kbd> lap kategóriáinak lekérése.",
+       "apihelp-query+categories-example-generator": "Információk lekérése az <kbd>Albert Einstein</kbd> lap kategóriáiról.",
+       "apihelp-query+categoryinfo-description": "Információk lekérése a megadott kategóriákról.",
+       "apihelp-query+categoryinfo-example-simple": "Információk lekérése a <kbd>Category:Foo</kbd> és a <kbd>Category:Bar</kbd> kategóriáról.",
+       "apihelp-query+categorymembers-description": "Egy kategória összes tagjának listázása.",
+       "apihelp-query+categorymembers-param-title": "A listázandó kategória (kötelező). Tartalmaznia kell a <kbd>{{ns:category}}:</kbd> előtagot. Nem használható együtt a <var>$1pageid</var> paraméterrel.",
+       "apihelp-query+categorymembers-param-pageid": "A listázandó kategória lapazonosítója. Nem használható együtt a <var>$1title</var> paraméterrel.",
+       "apihelp-query+categorymembers-param-prop": "Visszaadandó információk:",
+       "apihelp-query+categorymembers-paramvalue-prop-ids": "A lap lapazonosítója.",
+       "apihelp-query+categorymembers-paramvalue-prop-title": "A lap címe és névterének azonosítója.",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "A lap kategorizálási típusa (<samp>page</samp>, <samp>subcat</samp> vagy <samp>file</samp>).",
+       "apihelp-query+categorymembers-paramvalue-prop-timestamp": "A lap bekategorizálásának időbélyege.",
+       "apihelp-query+categorymembers-param-namespace": "Csak ezen névterekben található lapok visszaadása. A <kbd>$1namespace=14</kbd> és <kbd>$1namespace=6</kbd> helyett használható <kbd>$1type=subcat</kbd>, illetve <kbd>$1type=file</kbd>.",
+       "apihelp-query+categorymembers-param-type": "A megadott kategorizálási típusú lapok visszaadása. Nincs hatása, ha a <var>$1sort</var> paraméter értéke <kbd>timestamp</kbd>.",
+       "apihelp-query+categorymembers-param-limit": "A lekérdezendő lapok maximális száma.",
+       "apihelp-query+categorymembers-param-sort": "Rendezési szempont.",
+       "apihelp-query+categorymembers-param-dir": "A rendezés iránya.",
+       "apihelp-query+categorymembers-param-start": "A listázás kezdő időbélyege. Csak <kbd>$1sort=timestamp</kbd> paraméterrel együtt használható.",
+       "apihelp-query+categorymembers-param-end": "A lista végét jelentő időbélyeg. Csak <kbd>$1sort=timestamp</kbd> paraméterrel együtt használható.",
+       "apihelp-query+categorymembers-param-startsortkey": "Használd a <var>$1starthexsortkey</var> paramétert helyette.",
+       "apihelp-query+categorymembers-param-endsortkey": "Használd a <var>$1endhexsortkey</var> paramétert helyette.",
+       "apihelp-query+categorymembers-example-simple": "A <kbd>Category:Physics</kbd> első 10 tagjának lekérése.",
+       "apihelp-query+categorymembers-example-generator": "Információk lekérése a <kbd>Category:Physics</kbd> első 10 tagjáról.",
+       "apihelp-query+contributors-description": "Egy lap bejelentkezett közreműködői listájának, valamint az anonim közreműködők számának lekérése.",
+       "apihelp-query+contributors-param-group": "Csak a megadott felhasználócsoportok tagjainak visszaadása. Ez nem tartalmazza az implicit vagy automatikusan hozzáadott csoportokat, mint a *, a user vagy az autoconfirmed.",
+       "apihelp-query+contributors-param-excludegroup": "A megadott felhasználócsoportok tagjainak kihagyása. Ez nem tartalmazza az implicit vagy automatikusan hozzáadott csoportokat, mint a *, a user vagy az autoconfirmed.",
+       "apihelp-query+contributors-param-rights": "Csak a megadott jogosultságokkal rendelkező felhasználók visszaadása. Ez nem tartalmazza azokat a jogosultságokat, amiket implicit vagy automatikusan hozzáadott csoportok adnak meg, mint a *, a user vagy az autoconfirmed.",
+       "apihelp-query+contributors-param-excluderights": "A megadott jogosultságokkal rendelkező felhasználók kizárása. Ez nem tartalmazza azokat a jogosultságokat, amiket implicit vagy automatikusan hozzáadott csoportok adnak meg, mint a *, a user vagy az autoconfirmed.",
+       "apihelp-query+contributors-param-limit": "A visszaadandó közreműködők maximális száma.",
+       "apihelp-query+contributors-example-simple": "A <kbd>Main Page</kbd> lap közreműködőinek lekérése.",
+       "apihelp-query+deletedrevisions-param-start": "Listázás ettől az időbélyegtől. Nincs hatása, ha lapváltozat-azonosítók vannak megadva.",
+       "apihelp-query+deletedrevisions-param-end": "A lista végét jelentő időbélyeg. Nincs hatása, ha lapváltozat-azonosítók vannak megadva.",
+       "apihelp-query+deletedrevisions-param-tag": "Csak ezzel a címkével ellátott változatok listázása.",
+       "apihelp-query+deletedrevisions-param-user": "Csak ezen felhasználó szerkesztéseinek listázása.",
+       "apihelp-query+deletedrevisions-param-excludeuser": "Ezen felhasználó szerkesztéseinek kihagyása.",
+       "apihelp-query+deletedrevisions-example-titles": "A <kbd>Main Page</kbd> és <kbd>Talk:Main Page</kbd> lapok törölt lapváltozatainak listázása tartalommal.",
+       "apihelp-query+deletedrevisions-example-revids": "Információk listázása az <kbd>123456</kbd> törölt lapváltozatról.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Mód|Módok}}: $2",
+       "apihelp-query+deletedrevs-param-start": "A listázás kezdő időbélyege.",
+       "apihelp-query+deletedrevs-param-end": "A lista végét jelentő időbélyeg.",
+       "apihelp-query+deletedrevs-param-from": "Listázás ettől a címtől.",
+       "apihelp-query+deletedrevs-param-to": "Listázás eddig a címig.",
+       "apihelp-query+deletedrevs-param-prefix": "Ezzel kezdődő című lapok keresése.",
+       "apihelp-query+deletedrevs-param-unique": "Egyetlen lapváltozat listázása minden laphoz.",
+       "apihelp-query+deletedrevs-param-tag": "Csak ezzel a címkével ellátott változatok listázása.",
+       "apihelp-query+deletedrevs-param-user": "Csak ezen felhasználó szerkesztéseinek listázása.",
+       "apihelp-query+deletedrevs-param-excludeuser": "Ezen felhasználó szerkesztéseinek kihagyása.",
+       "apihelp-query+deletedrevs-param-namespace": "Lapok listázása csak ebben a névtérben.",
+       "apihelp-query+deletedrevs-param-limit": "A listázandó lapváltozatok maximális száma.",
+       "apihelp-query+deletedrevs-example-mode1": "<kbd>Main Page</kbd> és <kbd>Talk:Main Page</kbd> utolsó törölt lapváltozatainak listázása tartalommal (1. mód).",
+       "apihelp-query+deletedrevs-example-mode2": "<kbd>Bob</kbd> felhasználó utolsó 50 törölt szerkesztésének listázása (2. mód).",
+       "apihelp-query+deletedrevs-example-mode3-main": "Az első 50 törölt lapváltozat listázása a fő névtérben (3. mód).",
+       "apihelp-query+deletedrevs-example-mode3-talk": "Az első 50 törölt lapváltozat listázása a {{ns:talk}} névtérben (3. mód).",
+       "apihelp-query+disabled-description": "Ez a lekérdezőmodul le lett tiltva.",
+       "apihelp-query+duplicatefiles-param-limit": "A visszaadandó duplikátumok száma.",
+       "apihelp-query+duplicatefiles-param-dir": "A listázás iránya.",
+       "apihelp-query+duplicatefiles-param-localonly": "Csak helyi fájlok keresése.",
+       "apihelp-query+duplicatefiles-example-simple": "[[:File:Albert Einstein Head.jpg]] duplikátumainak keresése.",
+       "apihelp-query+duplicatefiles-example-generated": "Az összes fájl duplikátumainak keresése.",
+       "apihelp-query+embeddedin-description": "A megadott lapot beillesztő összes lap lekérése.",
+       "apihelp-query+embeddedin-param-title": "A keresendő lap címe. Nem használható együtt az <var>$1pageid</var> paraméterrel.",
+       "apihelp-query+embeddedin-param-pageid": "A keresendő lap lapazonosítója. Nem használható együtt az <var>$1title</var> paraméterrel.",
+       "apihelp-query+embeddedin-param-namespace": "A listázandó névtér.",
+       "apihelp-query+embeddedin-param-dir": "A listázás iránya.",
+       "apihelp-query+embeddedin-param-filterredir": "Szűrés átirányítások alapján.",
+       "apihelp-query+embeddedin-param-limit": "A visszaadandó lapok maximális száma.",
+       "apihelp-query+embeddedin-example-simple": "A <kbd>Template:Stub</kbd> lapot beillesztő lapok megjelenítése.",
+       "apihelp-query+embeddedin-example-generator": "Információk lekérése a <kbd>Template:Stub</kbd> lapot beillesztő lapokról.",
+       "apihelp-query+extlinks-description": "A megadott lapokon található összes külső (nem interwiki) link visszaadása.",
+       "apihelp-query+extlinks-param-limit": "A visszaadandó linkek száma.",
+       "apihelp-query+extlinks-param-protocol": "Az URL protokollja. Ha üres és az <var>$1query</var> paraméter meg van adva, a protokoll <kbd>http</kbd>. Hagyd ezt és az <var>$1query</var> paramétert is üresen az összes külső link listázásához.",
+       "apihelp-query+extlinks-example-simple": "A <kbd>Main Page</kbd> lapon található összes külső hivatkozás listájának lekérése.",
+       "apihelp-query+exturlusage-description": "Egy megadott URL-t tartalmazó lapok visszaadása.",
+       "apihelp-query+exturlusage-param-prop": "Visszaadandó információk:",
+       "apihelp-query+exturlusage-paramvalue-prop-ids": "A lap lapazonosítója.",
+       "apihelp-query+exturlusage-paramvalue-prop-title": "A lap címe és névterének azonosítója.",
+       "apihelp-query+exturlusage-paramvalue-prop-url": "A lapon használt URL.",
+       "apihelp-query+exturlusage-param-protocol": "Az URL protokollja. Ha üres és az <var>$1query</var> paraméter meg van adva, a protokoll <kbd>http</kbd>. Hagyd ezt és az <var>$1query</var> paramétert is üresen az összes külső link listázásához.",
+       "apihelp-query+exturlusage-param-namespace": "A listázandó névtér.",
+       "apihelp-query+exturlusage-param-limit": "A visszaadandó lapok száma.",
+       "apihelp-query+exturlusage-example-simple": "A <kbd>http://www.mediawiki.org</kbd> URL-re hivatkozó lapok megjelenítése.",
+       "apihelp-query+filearchive-description": "Az összes törölt fájl visszaadása.",
+       "apihelp-query+filearchive-param-from": "A fájlok listázása ettől a címtől.",
+       "apihelp-query+filearchive-param-to": "A fájlok listázása eddig a címig.",
+       "apihelp-query+filearchive-param-prefix": "Ezzel kezdődő című fájlok keresése.",
+       "apihelp-query+filearchive-param-limit": "A visszaadandó fájlok száma.",
+       "apihelp-query+filearchive-param-dir": "A listázás iránya.",
+       "apihelp-query+filearchive-param-prop": "A lekérendő információk:",
+       "apihelp-query+filearchive-paramvalue-prop-timestamp": "A feltöltött verzió időbélyege.",
+       "apihelp-query+filearchive-paramvalue-prop-user": "A fájlverzió feltöltője.",
+       "apihelp-query+filearchive-paramvalue-prop-size": "A fájl mérete bájtban, magassága, szélessége és oldalszáma (ha értelmezhető).",
+       "apihelp-query+filearchive-paramvalue-prop-description": "A fájlverzió leírása.",
+       "apihelp-query+filearchive-paramvalue-prop-mime": "A fájl MIME-típusa.",
+       "apihelp-query+filearchive-paramvalue-prop-mediatype": "A fájl médiatípusa.",
+       "apihelp-query+filearchive-paramvalue-prop-metadata": "A fájlverzió EXIF-metaadatai.",
+       "apihelp-query+filearchive-paramvalue-prop-bitdepth": "A verzió bitmélysége.",
+       "apihelp-query+filearchive-paramvalue-prop-archivename": "Az archivált verzió fájlneve a nem legújabb verziók esetén.",
+       "apihelp-query+filearchive-example-simple": "Az összes törölt fájl listázása.",
+       "apihelp-query+filerepoinfo-description": "Metainformációk visszaadása a wikin beállított fájltárolókról.",
+       "apihelp-query+filerepoinfo-example-simple": "Információk lekérése a fájltárolókról.",
+       "apihelp-query+fileusage-description": "A megadott fájlokat használó lapok lekérése.",
+       "apihelp-query+fileusage-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+fileusage-paramvalue-prop-pageid": "A lapok lapazonosítói.",
+       "apihelp-query+fileusage-paramvalue-prop-title": "A lapok címei.",
+       "apihelp-query+fileusage-paramvalue-prop-redirect": "Az átirányítások megjelölése.",
+       "apihelp-query+fileusage-param-namespace": "Lapok listázása ezekben a névterekben.",
+       "apihelp-query+fileusage-param-limit": "A visszaadandó lapok száma.",
+       "apihelp-query+fileusage-param-show": "Szűrés az átirányítások alapján:\n;redirect: Csak átirányítások visszaadása.\n;!redirect: Átirányítások elrejtése.",
+       "apihelp-query+fileusage-example-simple": "A [[:File:Example.jpg]] képet használó lapok listázása.",
+       "apihelp-query+fileusage-example-generator": "Információk lekérése a [[:File:Example.jpg]] képet használó lapokról.",
+       "apihelp-query+imageinfo-description": "Fájlinformációk és fájltörténet lekérése.",
+       "apihelp-query+imageinfo-param-prop": "A lekérendő fájlinformációk:",
+       "apihelp-query+imageinfo-paramvalue-prop-timestamp": "A feltöltött verzió időbélyege.",
+       "apihelp-query+imageinfo-paramvalue-prop-user": "Az egyes fájlverziók feltöltői.",
+       "apihelp-query+imageinfo-paramvalue-prop-userid": "Az egyes fájlverziók feltöltőinek felhasználóazonosítói.",
+       "apihelp-query+imageinfo-paramvalue-prop-comment": "A verzió feltöltési összefoglalója.",
+       "apihelp-query+imageinfo-paramvalue-prop-url": "A fájlra és a leírólapra mutató URL.",
+       "apihelp-query+imageinfo-paramvalue-prop-size": "A fájl mérete bájtban, magassága, szélessége és oldalszáma (ha értelmezhető).",
        "apihelp-query+imageinfo-paramvalue-prop-sha1": "SHA-1 hash hozzáadása a fájlhoz.",
        "apihelp-query+imageinfo-paramvalue-prop-mime": "MIME-típus hozzáadása a fájlhoz.",
+       "apihelp-query+imageinfo-paramvalue-prop-mediatype": "A fájl médiatípusa.",
+       "apihelp-query+imageinfo-paramvalue-prop-metadata": "A fájlverzió EXIF-metaadatai.",
+       "apihelp-query+imageinfo-paramvalue-prop-extmetadata": "A formázott metaadatok több forrásból kombinálva. A kimenet HTML-formázott.",
+       "apihelp-query+imageinfo-paramvalue-prop-archivename": "Az archivált verzió fájlneve a nem legújabb verziók esetén.",
+       "apihelp-query+imageinfo-paramvalue-prop-bitdepth": "A verzió bitmélysége.",
+       "apihelp-query+imageinfo-paramvalue-prop-uploadwarning": "A Speciális:Feltöltés lap használja egy létező fájl információinak lekéréséhez. Nem készült a MediaWiki magján kívüli használatra.",
+       "apihelp-query+imageinfo-paramvalue-prop-badfile": "A fájl szerepel-e a [[MediaWiki:Bad image list]] listán.",
+       "apihelp-query+imageinfo-param-limit": "A fájlonként visszaadandó verziók száma.",
+       "apihelp-query+imageinfo-param-start": "A listázás kezdő időbélyege.",
+       "apihelp-query+imageinfo-param-end": "A lista végét jelentő időbélyeg.",
+       "apihelp-query+imageinfo-param-urlwidth": "Ha az <kbd>$2prop=url</kbd> meg van adva, erre a szélességre méretezett kép URL-jét adja vissza.\nTeljesítményi okokból ezen opció használatakor legfeljebb $1 átméretezett képet ad vissza.",
+       "apihelp-query+imageinfo-param-urlheight": "Az <var>$1urlwidth</var> paraméterhez hasonló.",
+       "apihelp-query+imageinfo-param-metadataversion": "A használandó metaadat-verzió. Ha <kbd>latest</kbd>, a legfrissebb verzió használata. Alapértelmezetten <kbd>1</kbd> a visszamenőleges kompatibilitás érdekében.",
+       "apihelp-query+imageinfo-param-extmetadatamultilang": "Ha elérhetők fordítások az <var>extmetadata</var> tulajdonsághoz, az összes lekérése.",
+       "apihelp-query+imageinfo-param-extmetadatafilter": "Ha meg van adva és nem üres, csak ezeket a tulajdonságokat adja vissza az <kbd>$1prop=extmetadata</kbd> paraméter esetén.",
+       "apihelp-query+imageinfo-param-badfilecontexttitle": "Ha a <kbd>$2prop=badfile</kbd> meg van adva, ezen cím használata a [[MediaWiki:Bad image list]] kiértékeléskor.",
+       "apihelp-query+imageinfo-param-localonly": "Csak helyi fájlok keresése.",
+       "apihelp-query+imageinfo-example-simple": "Információk lekérése a [[:File:Albert Einstein Head.jpg]] aktuális verziójáról.",
+       "apihelp-query+imageinfo-example-dated": "Információk lekérése a [[:File:Test.jpg]] 2008-as és korábbi verzióiról.",
+       "apihelp-query+images-description": "A megadott lapokon használt összes fájl visszaadása.",
+       "apihelp-query+images-param-limit": "A visszaadandó fájlok száma.",
+       "apihelp-query+images-param-images": "Csak ezen fájlok listázása. Annak ellenőrzésére alkalmas, hogy egy lap használ-e egy adott fájlt.",
+       "apihelp-query+images-param-dir": "A listázás iránya.",
+       "apihelp-query+images-example-simple": "A [[Main Page]] lapon használt fájlok listázása.",
+       "apihelp-query+images-example-generator": "Információk lekérése a [[Main Page]] lapon használt fájlokról.",
+       "apihelp-query+imageusage-description": "A megadott képcímet használó lapok lekérése.",
+       "apihelp-query+imageusage-param-title": "A keresendő cím. Nem használható együtt az <var>$1pageid</var> paraméterrel.",
+       "apihelp-query+imageusage-param-pageid": "A keresendő lapazonosító. Nem használható együtt az <var>$1title</var> paraméterrel.",
+       "apihelp-query+imageusage-param-namespace": "A listázandó névtér.",
+       "apihelp-query+imageusage-param-dir": "A listázás iránya.",
+       "apihelp-query+imageusage-param-filterredir": "Az átirányítások szűrése. Ha <kbd>nonredirects</kbd>, és az <var>$1redirect</var> paraméter engedélyezett, csak a második szintre érvényes.",
+       "apihelp-query+imageusage-param-limit": "A visszaadandó lapok maximális száma. Ha az <var>$1redirect</var> engedélyezve van, ez a limit minden szintre külön érvényes (vagyis összesen 2 × <var>$1limit</var> eredmény lehet a válaszban).",
+       "apihelp-query+imageusage-param-redirect": "Ha a hivatkozó lap átirányítás, az arra hivatkozó lapok keresése szintén. A maximális limit feleződik.",
+       "apihelp-query+imageusage-example-simple": "A [[:File:Albert Einstein Head.jpg]] képet használó lapok megjelenítése.",
+       "apihelp-query+imageusage-example-generator": "Információk lekérése a [[:File:Albert Einstein Head.jpg]] képet használó lapokról.",
+       "apihelp-query+info-description": "Alapvető lapinformációk lekérése.",
+       "apihelp-query+info-param-prop": "További lekérendő tulajdonságok:",
+       "apihelp-query+info-paramvalue-prop-protection": "A lapok védelmi szintjeinek listázása.",
+       "apihelp-query+info-paramvalue-prop-talkid": "A vitalap lapazonosítója a nem-vitalapoknál.",
+       "apihelp-query+info-paramvalue-prop-watched": "A lapok figyelési státusza.",
        "apihelp-query+info-paramvalue-prop-watchers": "A lapot figyelők száma, ha lehetséges.",
+       "apihelp-query+info-paramvalue-prop-visitingwatchers": "A figyelők száma, akik látták a lap friss változtatásait, ha engedélyezett.",
+       "apihelp-query+info-paramvalue-prop-notificationtimestamp": "A figyelőlista értesítési időbélyege.",
+       "apihelp-query+info-paramvalue-prop-subjectid": "A tartalmi lap lapazonosítója a vitalapoknál.",
+       "apihelp-query+info-paramvalue-prop-readable": "A felhasználó olvashatja-e a lapot.",
+       "apihelp-query+info-paramvalue-prop-displaytitle": "A lap ténylegesen megjelenített címe.",
+       "apihelp-query+info-param-testactions": "Annak ellenőrzése, hogy a felhasználó végrehajthat-e bizonyos műveleteket a lapon.",
+       "apihelp-query+info-param-token": "Használd a <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> lekérdezést helyette.",
+       "apihelp-query+info-example-simple": "Információk lekérése a <kbd>Main Page</kbd> lapról.",
+       "apihelp-query+info-example-protection": "Alapvető és lapvédelmi információk lekérése a <kbd>Main Page</kbd> lapról.",
+       "apihelp-query+iwbacklinks-description": "Egy adott interwikilinkre hivatkozó lapok lekérése.\n\nHasználható adott előtagú vagy egy adott címre mutató (megadott előtagú) linkek keresésére. Mindkét paraméter elhagyásával az összes interwikilinket visszaadja.",
+       "apihelp-query+iwbacklinks-param-prefix": "Az interwiki előtagja.",
+       "apihelp-query+iwbacklinks-param-title": "A keresendő interwikilink. Az <var>$1blprefix</var> paraméterrel együtt használandó.",
+       "apihelp-query+iwbacklinks-param-limit": "A visszaadandó lapok maximális száma.",
+       "apihelp-query+iwbacklinks-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Az interwiki előtagja.",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Az interwiki címe.",
+       "apihelp-query+iwbacklinks-param-dir": "A listázás iránya.",
+       "apihelp-query+iwbacklinks-example-simple": "A [[wikibooks:Test]] könyvre hivatkozó lapok lekérése.",
+       "apihelp-query+iwbacklinks-example-generator": "Információk lekérése a [[wikibooks:Test]] könyvre hivatkozó lapokról.",
+       "apihelp-query+iwlinks-description": "A megadott lapokon található összes interwikilink lekérése.",
+       "apihelp-query+iwlinks-param-prop": "A nyelvközi hivatkozásokhoz lekérendő további tulajdonságok:",
+       "apihelp-query+iwlinks-param-limit": "A visszaadandó interwikilinkek száma.",
+       "apihelp-query+iwlinks-param-prefix": "Csak a megadott előtagú interwikilinkek visszaadása.",
+       "apihelp-query+iwlinks-param-title": "A keresendő interwikilink. Az <var>$1prefix</var> paraméterrel együtt használandó.",
+       "apihelp-query+iwlinks-param-dir": "A listázás iránya.",
+       "apihelp-query+iwlinks-example-simple": "A <kbd>Main Page</kbd> lapon található interwikilinkek lekérése.",
+       "apihelp-query+langbacklinks-description": "A megadott nyelvközi hivatkozásra hivatkozó lapok lekérése.\n\nHasználható adott előtagú vagy egy adott címre mutató (megadott előtagú) linkek keresésére. Mindkét paraméter elhagyásával az összes nyelvközi hivatkozást visszaadja.\n\nEz a lekérdezés nem feltétlenül veszi figyelembe a kiterjesztések által hozzáadott nyelvközi hivatkozásokat.",
+       "apihelp-query+langbacklinks-param-lang": "A nyelvközi hivatkozás nyelve.",
+       "apihelp-query+langbacklinks-param-title": "A keresendő nyelvközi hivatkozás. Az <var>$1lang</var> paraméterrel együtt használandó.",
+       "apihelp-query+langbacklinks-param-limit": "A visszaadandó lapok maximális száma.",
+       "apihelp-query+langbacklinks-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+langbacklinks-paramvalue-prop-lllang": "A nyelvközi hivatkozás nyelvkódja.",
+       "apihelp-query+langbacklinks-paramvalue-prop-lltitle": "A nyelvközi hivatkozás címe.",
+       "apihelp-query+langbacklinks-param-dir": "A listázás iránya.",
+       "apihelp-query+langbacklinks-example-simple": "A [[:fr:Test]] lapra hivatkozó lapok lekérése.",
+       "apihelp-query+langbacklinks-example-generator": "Információk lekérése a [[:fr:Test]] lapra hivatkozó lapokról.",
+       "apihelp-query+langlinks-description": "A megadott lapokon található összes nyelvközi hivatkozás lekérése.",
+       "apihelp-query+langlinks-param-limit": "A visszaadandó nyelvközi hivatkozások száma.",
+       "apihelp-query+langlinks-param-prop": "A nyelvközi hivatkozásokhoz lekérendő további tulajdonságok:",
+       "apihelp-query+langlinks-param-lang": "Csak ezen nyelvű nyelvközi hivatkozások visszaadása.",
+       "apihelp-query+langlinks-param-title": "A keresendő hivatkozás. Az <var>$1prefix</var> paraméterrel együtt használandó.",
+       "apihelp-query+langlinks-param-dir": "A listázás iránya.",
+       "apihelp-query+langlinks-param-inlanguagecode": "Nyelvkód a lefordított nyelvneveknek.",
+       "apihelp-query+langlinks-example-simple": "A <kbd>Main Page</kbd> lapon található nyelvközi hivatkozások lekérése.",
+       "apihelp-query+links-description": "A megadott lapokon található összes hivatkozás lekérése.",
+       "apihelp-query+links-param-namespace": "Csak az ezen névterekbe mutató hivatkozások visszaadása.",
+       "apihelp-query+links-param-limit": "A visszaadandó hivatkozások száma.",
+       "apihelp-query+links-param-titles": "Csak ezen címekre mutató hivatkozások listázása. Annak ellenőrzésére alkalmas, hogy egy lap hivatkozik-e egy adott lapra.",
+       "apihelp-query+links-param-dir": "A listázás iránya.",
+       "apihelp-query+links-example-simple": "A <kbd>Main Page</kbd> lapon található hivatkozások lekérése.",
+       "apihelp-query+links-example-generator": "Információk lekérése a <kbd>Main Page</kbd> lapon lévő hivatkozások céllapjairól.",
+       "apihelp-query+links-example-namespaces": "A <kbd>Main Page</kbd> lapon található, {{ns:user}} és {{ns:template}} névterekbe mutató hivatkozások lekérése.",
+       "apihelp-query+linkshere-description": "A megadott lapra hivatkozó lapok lekérése.",
+       "apihelp-query+linkshere-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+linkshere-paramvalue-prop-pageid": "A lapok lapazonosítói.",
+       "apihelp-query+linkshere-paramvalue-prop-title": "A lapok címei.",
+       "apihelp-query+linkshere-paramvalue-prop-redirect": "Az átirányítások megjelölése.",
+       "apihelp-query+linkshere-param-namespace": "Lapok listázása ezekben a névterekben.",
+       "apihelp-query+linkshere-param-limit": "A visszaadandó lapok száma.",
+       "apihelp-query+linkshere-param-show": "Szűrés az átirányítások alapján:\n;redirect: Csak átirányítások visszaadása.\n;!redirect: Átirányítások elrejtése.",
+       "apihelp-query+linkshere-example-simple": "A [[Main Page]] lapra hivatkozó lapok listázása.",
+       "apihelp-query+linkshere-example-generator": "Információk lekérése a [[Main Page]] lapra hivatkozó lapokról.",
+       "apihelp-query+logevents-description": "Naplóbejegyzések lekérése.",
+       "apihelp-query+logevents-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+logevents-paramvalue-prop-ids": "A naplóbejegyzés azonosítója.",
+       "apihelp-query+logevents-paramvalue-prop-title": "Az eseményben érintett lap címe.",
+       "apihelp-query+logevents-paramvalue-prop-type": "A naplóbejegyzés típusa.",
+       "apihelp-query+logevents-paramvalue-prop-user": "Az eseményért felelős felhasználó.",
+       "apihelp-query+logevents-paramvalue-prop-userid": "Az eseményért felelős felhasználó azonosítója.",
+       "apihelp-query+logevents-paramvalue-prop-timestamp": "A naplóbejegyzés időbélyege.",
+       "apihelp-query+logevents-paramvalue-prop-comment": "A naplóbejegyzéshez tartozó megjegyzés.",
+       "apihelp-query+logevents-paramvalue-prop-details": "További részletek a naplóbejegyzésről.",
+       "apihelp-query+logevents-paramvalue-prop-tags": "A naplóbejegyzés címkéi.",
+       "apihelp-query+logevents-param-type": "Csak ezen típusú naplóbejegyzések visszaadása.",
+       "apihelp-query+logevents-param-start": "A listázás kezdő időbélyege.",
+       "apihelp-query+logevents-param-end": "A lista végét jelentő időbélyeg.",
+       "apihelp-query+logevents-param-user": "A bejegyzések szűrése az ezen felhasználó által végrehajtottakra.",
+       "apihelp-query+logevents-param-title": "A bejegyzések szűrése az ezen laphoz kapcsolódóakra.",
+       "apihelp-query+logevents-param-namespace": "A bejegyzések szűrése névtér alapján.",
+       "apihelp-query+logevents-param-prefix": "A bejegyzések szűrése az ezzel az előtaggal kezdődőekre.",
+       "apihelp-query+logevents-param-tag": "Csak ezzel a címkével ellátott bejegyzések listázása.",
+       "apihelp-query+logevents-param-limit": "A visszaadandó bejegyzések száma.",
+       "apihelp-query+logevents-example-simple": "A legutóbbi naplóbejegyzések listázása.",
+       "apihelp-query+pagepropnames-description": "A wikin elérhető laptulajdonságnevek listázása.",
+       "apihelp-query+pagepropnames-param-limit": "A visszaadandó nevek maximális száma.",
+       "apihelp-query+pagepropnames-example-simple": "Az első 10 tulajdonságnév lekérése.",
+       "apihelp-query+pageprops-description": "A lap tartalmában meghatározott különböző laptulajdonságok lekérése.",
+       "apihelp-query+pageprops-param-prop": "Csak ezen laptulajdonságok listázása (az [[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]] visszaadja a használatban lévő laptulajdonságokat). Annak ellenőrzésére alkalmas, hogy egy lap benne használ-e egy adott laptulajdonságot.",
+       "apihelp-query+pageprops-example-simple": "A <kbd>Main Page</kbd> és <kbd>MediaWiki</kbd> lap tulajdonságainak lekérése.",
+       "apihelp-query+pageswithprop-description": "Egy adott laptulajdonságot használó lapok listázása.",
+       "apihelp-query+pageswithprop-param-propname": "A listázandó laptulajdonság (az [[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]] visszaadja a használatban lévő laptulajdonságokat).",
+       "apihelp-query+pageswithprop-param-prop": "Visszaadandó információk:",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "A lap lapazonosítója.",
+       "apihelp-query+pageswithprop-paramvalue-prop-title": "A lap címe és névterének azonosítója.",
+       "apihelp-query+pageswithprop-paramvalue-prop-value": "A laptulajdonság értéke.",
+       "apihelp-query+pageswithprop-param-limit": "A lekérdezendő lapok maximális száma.",
+       "apihelp-query+pageswithprop-param-dir": "A rendezés iránya.",
+       "apihelp-query+pageswithprop-example-simple": "Az első 10 <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>-t használó lap listázása.",
+       "apihelp-query+pageswithprop-example-generator": "További információk lekérése az első 10 <code>_&#95;NOTOC_&#95;</code> kapcsolót használó lapról.",
+       "apihelp-query+prefixsearch-param-search": "A keresőkifejezés.",
+       "apihelp-query+prefixsearch-param-namespace": "A keresendő névterek.",
+       "apihelp-query+prefixsearch-param-limit": "Találatok maximális száma.",
+       "apihelp-query+prefixsearch-param-offset": "Kihagyandó találatok száma.",
+       "apihelp-query+prefixsearch-example-simple": "<kbd>meaning</kbd> kezdetű lapcímek keresése.",
+       "apihelp-query+prefixsearch-param-profile": "Használandó keresőprofil.",
+       "apihelp-query+protectedtitles-description": "Létrehozás ellen védett lapok listázása.",
+       "apihelp-query+protectedtitles-param-namespace": "Címek listázása csak ezekben a névterekben.",
+       "apihelp-query+protectedtitles-param-level": "Csak ilyen védelmi szintű címek listázása.",
+       "apihelp-query+protectedtitles-param-limit": "A visszaadandó lapok maximális száma.",
+       "apihelp-query+protectedtitles-param-start": "Listázás ettől a védelem-időbélyegtől.",
+       "apihelp-query+protectedtitles-param-end": "Listázás eddig a védelem-időbélyegig.",
+       "apihelp-query+protectedtitles-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+protectedtitles-paramvalue-prop-timestamp": "A levédés időbélyege.",
+       "apihelp-query+protectedtitles-paramvalue-prop-user": "A levédő felhasználó.",
+       "apihelp-query+protectedtitles-paramvalue-prop-userid": "A levédő felhasználó azonosítója.",
+       "apihelp-query+protectedtitles-paramvalue-prop-comment": "A védelem indoka.",
+       "apihelp-query+protectedtitles-paramvalue-prop-expiry": "A védelem lejáratának időbélyege.",
+       "apihelp-query+protectedtitles-paramvalue-prop-level": "Védelmi szint.",
+       "apihelp-query+protectedtitles-example-simple": "A védett címek listázása.",
+       "apihelp-query+protectedtitles-example-generator": "A fő névtérben lévő védett címekre mutató hivatkozások lekérése.",
+       "apihelp-query+querypage-description": "Egy QueryPage-alapú speciális lap listájának lekérése.",
+       "apihelp-query+querypage-param-limit": "Megjelenítendő találatok száma.",
+       "apihelp-query+querypage-example-ancientpages": "A [[Special:Ancientpages]] eredményeinek lekérése.",
+       "apihelp-query+random-param-namespace": "Lapok visszaadása csak ezekből a névterekből.",
+       "apihelp-query+random-param-limit": "A visszaadandó véletlenszerű lapok száma.",
+       "apihelp-query+random-param-redirect": "Használd a <kbd>$1filterredir=redirects</kbd> paramétert helyette.",
+       "apihelp-query+random-param-filterredir": "Szűrés átirányítások alapján.",
+       "apihelp-query+random-example-simple": "Két lap visszaadása találomra a fő névtérből.",
+       "apihelp-query+random-example-generator": "Lapinformációk lekérése két véletlenszerűen kiválasztott fő névtérbeli lapról.",
+       "apihelp-query+recentchanges-description": "A friss változtatások listázása.",
+       "apihelp-query+recentchanges-param-start": "Listázás ettől az időbélyegtől.",
+       "apihelp-query+recentchanges-param-end": "Listázás eddig az időbélyegig.",
+       "apihelp-query+recentchanges-param-namespace": "A változtatások szűrése ezekre a névterekre.",
+       "apihelp-query+recentchanges-param-user": "Csak ezen felhasználó szerkesztéseinek listázása.",
+       "apihelp-query+recentchanges-param-excludeuser": "Ezen felhasználó szerkesztéseinek kihagyása.",
+       "apihelp-query+recentchanges-param-tag": "Csak ezzel a címkével ellátott szerkesztések listázása.",
+       "apihelp-query+recentchanges-param-prop": "További információk visszaadása:",
+       "apihelp-query+recentchanges-paramvalue-prop-user": "A szerkesztést végrehajtó felhasználó, és hogy anonim-e.",
+       "apihelp-query+recentchanges-paramvalue-prop-userid": "A szerkesztést végrehajtó felhasználó azonosítója.",
+       "apihelp-query+recentchanges-paramvalue-prop-comment": "A szerkesztési összefoglaló.",
+       "apihelp-query+recentchanges-paramvalue-prop-timestamp": "A szerkesztés időbélyege.",
+       "apihelp-query+recentchanges-paramvalue-prop-title": "A szerkesztett lap címe.",
+       "apihelp-query+recentchanges-paramvalue-prop-ids": "A lapazonosító, frissváltoztatások-azonosító, valamint a régi és az új lapváltozat-azonosító.",
+       "apihelp-query+recentchanges-paramvalue-prop-sizes": "A lap régi és új hossza bájtban.",
+       "apihelp-query+recentchanges-paramvalue-prop-redirect": "A lap átirányítás-e.",
+       "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Az ellenőrizhető (patrol) szerkesztések megjelölése ellenőrzöttként vagy ellenőrizetlenként.",
+       "apihelp-query+recentchanges-paramvalue-prop-loginfo": "Naplóinformációk (naplóazonosító, naplótípus stb.) a naplóbejegyzésekhez.",
+       "apihelp-query+recentchanges-paramvalue-prop-tags": "A változtatás címkéi.",
+       "apihelp-query+recentchanges-param-token": "Használd a <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> lekérdezést helyette.",
+       "apihelp-query+recentchanges-param-show": "Csak a kritériumoknak megfelelő elemek visszaadása. Például csak bejelentkezett felhasználók apró változtatásainak megtekintéséhez használd az <kbd>$1show=minor|!anon</kbd> értéket.",
+       "apihelp-query+recentchanges-param-limit": "A visszaadandó változások maximális száma.",
+       "apihelp-query+recentchanges-param-type": "A visszaadandó változások típusai.",
+       "apihelp-query+recentchanges-param-toponly": "Csak a lapok legfrissebb változtatásának visszaadása.",
+       "apihelp-query+recentchanges-example-simple": "Friss változtatások listázása.",
+       "apihelp-query+recentchanges-example-generator": "Lapinformációk lekérése az ellenőrizetlen változtatásokról (patrol).",
+       "apihelp-query+redirects-description": "A megadott lapokra mutató átirányítások lekérése.",
+       "apihelp-query+redirects-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+redirects-paramvalue-prop-pageid": "Az átirányítások lapazonosítói.",
+       "apihelp-query+redirects-paramvalue-prop-title": "Az átirányítások címei.",
+       "apihelp-query+redirects-param-namespace": "Lapok listázása csak ezekben a névterekben.",
+       "apihelp-query+redirects-param-limit": "A visszaadandó átirányítások száma.",
+       "apihelp-query+redirects-example-simple": "A [[Main Page]] lapra mutató átirányítások listázása.",
+       "apihelp-query+redirects-example-generator": "Információk lekérése a [[Main Page]] lapra mutató átirányításokról.",
+       "apihelp-query+revisions-paraminfo-singlepageonly": "Csak egyetlen lappal használható (2. mód).",
+       "apihelp-query+revisions-param-startid": "Listázás ennek a lapváltozatnak az időbélyegétől. A lapváltozatnak léteznie kell, de nem szükséges ehhez a laphoz tartoznia.",
+       "apihelp-query+revisions-param-endid": "Listázás ennek a lapváltozatnak az időbélyegéig. A lapváltozatnak léteznie kell, de nem szükséges ehhez a laphoz tartoznia.",
+       "apihelp-query+revisions-param-start": "Listázás ettől az időbélyegtől.",
+       "apihelp-query+revisions-param-end": "Listázás eddig az időbélyegig.",
+       "apihelp-query+revisions-param-user": "Csak ezen felhasználó szerkesztéseinek listázása.",
+       "apihelp-query+revisions-param-excludeuser": "Ezen felhasználó szerkesztéseinek kihagyása.",
+       "apihelp-query+revisions-param-tag": "Csak ezzel a címkével ellátott változatok listázása.",
+       "apihelp-query+revisions-param-token": "Az egyes lapváltozatokhoz lekérendő tokenek.",
+       "apihelp-query+revisions-example-content": "Adatok lekérése tartalommal az <kbd>API</kbd> és <kbd>Main Page</kbd> lapok legfrissebb változatáról.",
+       "apihelp-query+revisions-example-last5": "A <kbd>Main Page</kbd> 5 legfrissebb változatának lekérése.",
+       "apihelp-query+revisions-example-first5": "A <kbd>Main Page</kbd> első 5 változatának lekérése.",
+       "apihelp-query+revisions-example-first5-after": "A <kbd>Main Page</kbd> 2006. május 1-jét követő első 5 változatának lekérése.",
+       "apihelp-query+revisions-example-first5-not-localhost": "A <kbd>Main Page</kbd> első 5 változatának lekérése, amit nem <kbd>127.0.0.1</kbd> anonim felhasználó készített.",
+       "apihelp-query+revisions-example-first5-user": "A <kbd>Main Page</kbd> első 5 változatának lekérése, amit a <kbd>MediaWiki default</kbd> felhasználó készített.",
+       "apihelp-query+revisions+base-param-prop": "Az egyes lapváltozatokhoz lekérendő tulajdonságok:",
+       "apihelp-query+revisions+base-paramvalue-prop-ids": "A változat azonosítója.",
+       "apihelp-query+revisions+base-paramvalue-prop-timestamp": "A változat időbélyege.",
+       "apihelp-query+revisions+base-paramvalue-prop-user": "A változatot létrehozó felhasználó.",
+       "apihelp-query+revisions+base-paramvalue-prop-userid": "A változatot létrehozó felhasználó azonosítója.",
+       "apihelp-query+revisions+base-paramvalue-prop-size": "A változat hossza bájtban.",
+       "apihelp-query+revisions+base-paramvalue-prop-contentmodel": "A változat tartalommodell-azonosítója.",
+       "apihelp-query+revisions+base-paramvalue-prop-comment": "A szerkesztési összefoglaló.",
+       "apihelp-query+revisions+base-paramvalue-prop-content": "A változat szövege.",
+       "apihelp-query+revisions+base-paramvalue-prop-tags": "A változat címkéi.",
+       "apihelp-query+revisions+base-param-limit": "A visszaadandó változatok maximális száma.",
+       "apihelp-query+revisions+base-param-expandtemplates": "A sablonok kibontása a változat tartalmában (az <kbd>$1prop=content</kbd> paraméterrel együtt használandó).",
+       "apihelp-query+revisions+base-param-section": "Csak ezen szakasz tartalmának lekérése.",
+       "apihelp-query+search-description": "Teljes szöveges keresés végrehajtása.",
+       "apihelp-query+search-param-search": "Erre az értékre illeszkedő lapcímek és tartalom keresése. Használható lehet speciális keresési funkciók meghívására a wiki keresőmotorjától függően.",
+       "apihelp-query+search-param-namespace": "Keresés csak ezekben a névterekben.",
+       "apihelp-query+search-param-what": "A végrehajtandó keresési típus.",
+       "apihelp-query+search-param-info": "A visszaadandó metaadatok.",
+       "apihelp-query+search-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+search-paramvalue-prop-size": "A lap mérete bájtban.",
+       "apihelp-query+search-paramvalue-prop-wordcount": "A lap szószáma.",
+       "apihelp-query+search-paramvalue-prop-timestamp": "A lap utolsó szerkesztésének időbélyege.",
+       "apihelp-query+search-paramvalue-prop-redirecttitle": "Az illeszkedő átirányítás címe.",
+       "apihelp-query+search-paramvalue-prop-sectiontitle": "Az illeszkedő szakaszcím.",
+       "apihelp-query+search-paramvalue-prop-isfilematch": "A fájl tartalma illeszkedik-e.",
+       "apihelp-query+search-paramvalue-prop-score": "<span class=\"apihelp-deprecated\">Elavult és figyelmen kívül hagyva.</span>",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "<span class=\"apihelp-deprecated\">Elavult és figyelmen kívül hagyva.</span>",
+       "apihelp-query+search-param-limit": "A visszaadandó lapok maximális száma.",
+       "apihelp-query+search-param-interwiki": "Interwiki-találatok befoglalása az eredménybe, ha elérhetők.",
+       "apihelp-query+search-param-backend": "A használandó keresőmotor, ha nem az alapértelmezett.",
+       "apihelp-query+search-param-enablerewrites": "A keresőkifejezés átírásának engedélyezése. Bizonyos keresőmotorok át tudják írni a keresőkifejezést egy jobb találatokat adónak ítéltre, például elgépelések javításával.",
+       "apihelp-query+search-example-simple": "Keresés a <kbd>meaning</kbd> szóra.",
+       "apihelp-query+search-example-text": "Keresés a <kbd>meaning</kbd> szóra a lapok szövegében.",
+       "apihelp-query+search-example-generator": "Lapinformációk lekérése a <kbd>meaning</kbd> szóra kapott találatokról.",
+       "apihelp-query+siteinfo-description": "Általános információk lekérése a wikiről.",
+       "apihelp-query+siteinfo-param-prop": "A lekérendő információk:",
+       "apihelp-query+siteinfo-paramvalue-prop-general": "Általános rendszerinformációk.",
+       "apihelp-query+siteinfo-paramvalue-prop-statistics": "Wikistatisztikák.",
+       "apihelp-query+siteinfo-paramvalue-prop-usergroups": "Felhasználócsoportok és jogaik.",
+       "apihelp-query+siteinfo-paramvalue-prop-libraries": "A wikin telepített függvénykönyvtárak.",
+       "apihelp-query+siteinfo-paramvalue-prop-extensions": "A wikin telepített kiterjesztések.",
+       "apihelp-query+siteinfo-paramvalue-prop-fileextensions": "A feltölthető fájlkiterjesztések (fájltípusok) listája.",
+       "apihelp-query+siteinfo-paramvalue-prop-rightsinfo": "A wiki szerzői jogi (licenc-) információi, ha elérhetők.",
+       "apihelp-query+siteinfo-paramvalue-prop-restrictions": "Információk az elérhető korlátozási (lapvédelmi) típusokról.",
+       "apihelp-query+siteinfo-paramvalue-prop-variables": "Az elérhető változónevek listája.",
+       "apihelp-query+siteinfo-paramvalue-prop-protocols": "A külső hivatkozásokban engedélyezett protokollok listája.",
+       "apihelp-query+siteinfo-paramvalue-prop-defaultoptions": "A felhasználói beállítások alapértelmezett értékei.",
+       "apihelp-query+siteinfo-param-filteriw": "Csak helyi vagy csak nem helyi interwikik visszaadása az interwikitérképben.",
+       "apihelp-query+siteinfo-param-numberingroup": "A egyes felhasználócsoportokba tartozó felhasználók számának listázása.",
+       "apihelp-query+siteinfo-example-simple": "Wikiinformációk lekérése.",
+       "apihelp-query+siteinfo-example-interwiki": "A helyi interwiki-előtagok listájának lekérése.",
+       "apihelp-query+tags-description": "Változtatáscímkék listázása.",
+       "apihelp-query+tags-param-limit": "A listázandó címkék maximális száma.",
+       "apihelp-query+tags-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+tags-paramvalue-prop-name": "A címke neve.",
+       "apihelp-query+tags-paramvalue-prop-displayname": "A címke rendszerüzenete.",
+       "apihelp-query+tags-paramvalue-prop-description": "A címke leírása.",
+       "apihelp-query+tags-paramvalue-prop-hitcount": "A címkével rendelkező lapváltozatok és naplóbejegyzések száma.",
+       "apihelp-query+tags-paramvalue-prop-defined": "A címke definiálva van-e.",
+       "apihelp-query+tags-example-simple": "Az elérhető címkék listázása.",
+       "apihelp-query+templates-description": "A megadott lapokra beillesztett összes lap visszaadása.",
+       "apihelp-query+templates-param-namespace": "Csak ezekben a névterekben található sablonok visszaadása.",
+       "apihelp-query+templates-param-limit": "A visszaadandó sablonok száma.",
+       "apihelp-query+templates-param-templates": "Csak ezen sablonok listázása. Annak ellenőrzésére alkalmas, hogy egy lap beilleszt-e egy adott sablont.",
+       "apihelp-query+templates-param-dir": "A listázás iránya.",
+       "apihelp-query+templates-example-simple": "A <kbd>Main Page</kbd> lapon használt sablonok lekérése.",
+       "apihelp-query+templates-example-generator": "Információk lekérése a <kbd>Main Page</kbd> lapon használt sablonlapokról.",
+       "apihelp-query+templates-example-namespaces": "A <kbd>Main Page</kbd> lapon használt {{ns:user}} és {{ns:template}} névtérbeli sablonok lekérése.",
+       "apihelp-query+tokens-description": "Tokenek lekérése adatmódosító műveletekhez.",
+       "apihelp-query+tokens-param-type": "Lekérendő tokentípusok.",
+       "apihelp-query+tokens-example-simple": "Egy csrf token lekérése (alapértelmezett).",
+       "apihelp-query+tokens-example-types": "Egy watch és egy patrol token lekérése.",
+       "apihelp-query+transcludedin-description": "A megadott lapokat beillesztő lapok lekérése.",
+       "apihelp-query+transcludedin-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+transcludedin-paramvalue-prop-pageid": "A lapok lapazonosítói.",
+       "apihelp-query+transcludedin-paramvalue-prop-title": "A lapok címei.",
+       "apihelp-query+transcludedin-paramvalue-prop-redirect": "Az átirányítások megjelölése.",
+       "apihelp-query+transcludedin-param-namespace": "Lapok listázása csak ezekben a névterekben.",
+       "apihelp-query+transcludedin-param-limit": "A visszaadandó lapok száma.",
+       "apihelp-query+transcludedin-param-show": "Szűrés az átirányítások alapján:\n;redirect: Csak átirányítások visszaadása.\n;!redirect: Átirányítások elrejtése.",
+       "apihelp-query+transcludedin-example-simple": "A <kbd>Main Page</kbd> lapot beillesztő lapok listájának lekérése.",
+       "apihelp-query+transcludedin-example-generator": "Információk lekérése a <kbd>Main Page</kbd> lapot beillesztő lapokról.",
+       "apihelp-query+usercontribs-description": "Egy felhasználó összes szerkesztésének lekérése.",
+       "apihelp-query+usercontribs-param-limit": "A visszaadott szerkesztések maximális száma.",
+       "apihelp-query+usercontribs-param-start": "Visszaadás ettől az időbélyegtől.",
+       "apihelp-query+usercontribs-param-end": "Visszaadás eddig az időbélyegig.",
+       "apihelp-query+usercontribs-param-namespace": "Szerkesztések listázása csak ezekben a névterekben.",
+       "apihelp-query+usercontribs-param-prop": "További információk visszaadása:",
+       "apihelp-query+usercontribs-paramvalue-prop-ids": "A lap- és lapváltozat-azonosító.",
+       "apihelp-query+usercontribs-paramvalue-prop-title": "A lap címe és névterének azonosítója.",
+       "apihelp-query+usercontribs-paramvalue-prop-timestamp": "A szerkesztés időbélyege.",
+       "apihelp-query+usercontribs-paramvalue-prop-comment": "A szerkesztési összefoglaló.",
+       "apihelp-query+usercontribs-paramvalue-prop-size": "A szerkesztett lap új mérete.",
+       "apihelp-query+usercontribs-paramvalue-prop-patrolled": "Az ellenőrzött szerkesztések megjelölése (patrol).",
+       "apihelp-query+usercontribs-paramvalue-prop-tags": "A szerkesztés címkéi.",
+       "apihelp-query+usercontribs-param-show": "Csak a kritériumoknak megfelelő szerkesztések mutatása, pl. csak nem apró szerkesztések: <kbd>$2show=!minor</kbd>.\n\nHa az <kbd>$2show=patrolled</kbd> vagy <kbd>$2show=!patrolled</kbd> meg van adva, a <var>[[mw:Special:MyLanguage/Manual:$wgRCMaxAge|$wgRCMaxAge]]</var>-nél ($1 másodperc) régebbi szerkesztések nem jelennek meg.",
+       "apihelp-query+usercontribs-param-tag": "Csak ezzel a címkével ellátott változatok listázása.",
+       "apihelp-query+usercontribs-param-toponly": "Csak a legfrissebbnek számító szerkesztések visszaadása.",
+       "apihelp-query+usercontribs-example-user": "<kbd>Example</kbd> szerkesztéseinek megjelenítése.",
+       "apihelp-query+usercontribs-example-ipprefix": "<kbd>192.0.2.</kbd> kezdetű IP-címek szerkesztéseinek megjelenítése.",
+       "apihelp-query+userinfo-description": "Információk lekérése az aktuális felhasználóról.",
+       "apihelp-query+userinfo-param-prop": "Visszaadandó információk:",
+       "apihelp-query+userinfo-paramvalue-prop-blockinfo": "Blokkolva van-e az aktuális felhasználó, és ha igen, akkor ki és miért blokkolta.",
+       "apihelp-query+userinfo-paramvalue-prop-groups": "A jelenlegi felhasználó összes csoportjának listája.",
+       "apihelp-query+userinfo-paramvalue-prop-groupmemberships": "A jelenlegi felhasználó explicit csoportjainak listája, az egyes csoporttagságok lejárati idejével.",
+       "apihelp-query+userinfo-paramvalue-prop-implicitgroups": "Azoknak a csoportoknak a listája, amiknek a jelenlegi felhasználó automatikusan tagja.",
+       "apihelp-query+userinfo-paramvalue-prop-rights": "A jelenlegi felhasználó jogosultságainak listája.",
+       "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "A jelenlegi felhasználó által hozzáadható és eltávolítható csoportok listája.",
+       "apihelp-query+userinfo-paramvalue-prop-options": "A jelenlegi felhasználó beállításai.",
+       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "<span class=\"apihelp-deprecated\">Elavult.</span> A jelenlegi felhasználó beállításainak megváltoztatásához szükséges token lekérése.",
+       "apihelp-query+userinfo-paramvalue-prop-editcount": "A jelenlegi felhasználó szerkesztésszáma.",
+       "apihelp-query+userinfo-paramvalue-prop-ratelimits": "A jelenlegi felhasználóra érvényes sebességkorlátozások.",
+       "apihelp-query+userinfo-paramvalue-prop-realname": "A felhasználó valódi neve.",
+       "apihelp-query+userinfo-paramvalue-prop-email": "A felhasználó e-mail-címe és megerősítésének dátuma.",
+       "apihelp-query+userinfo-paramvalue-prop-registrationdate": "A felhasználó regisztrációjának dátuma.",
+       "apihelp-query+userinfo-paramvalue-prop-unreadcount": "A felhasználó figyelőlistáján levő olvasatlan lapok száma (legfeljebb $1; <samp>$2</samp> értéket ad vissza, ha több).",
+       "apihelp-query+userinfo-paramvalue-prop-centralids": "A felhasználó központi azonosítói és az összekapcsolási státusza.",
+       "apihelp-query+userinfo-param-attachedwiki": "A felhasználó össze van-e kapcsolva az ezen azonosítójú wikivel, az <kbd>$1prop=centralids</kbd> paraméterrel együtt használandó.",
+       "apihelp-query+userinfo-example-simple": "Információk lekérése az aktuális felhasználóról.",
+       "apihelp-query+userinfo-example-data": "További információk lekérése az aktuális felhasználóról.",
+       "apihelp-query+users-description": "Információk lekérése felhasználók listájáról.",
+       "apihelp-query+users-param-prop": "Visszaadandó információk:",
+       "apihelp-query+users-paramvalue-prop-blockinfo": "Blokkolva van-e a felhasználó, és ha igen, akkor ki és miért blokkolta.",
+       "apihelp-query+users-paramvalue-prop-groups": "A felhasználó összes csoportjának listája.",
+       "apihelp-query+users-paramvalue-prop-groupmemberships": "A felhasználó explicit csoportjainak listája, az egyes csoporttagságok lejárati idejével.",
+       "apihelp-query+users-paramvalue-prop-implicitgroups": "Azoknak a csoportoknak a listája, amiknek a felhasználó automatikusan tagja.",
+       "apihelp-query+users-paramvalue-prop-rights": "A felhasználó jogosultságainak listája.",
+       "apihelp-query+users-paramvalue-prop-editcount": "A felhasználó szerkesztésszáma.",
+       "apihelp-query+users-paramvalue-prop-registration": "A felhasználó regisztrációjának időbélyege.",
+       "apihelp-query+users-paramvalue-prop-emailable": "A felhasználó szeretne-e e-mailt fogadni a [[Special:Emailuser]] lapon keresztül.",
+       "apihelp-query+users-paramvalue-prop-gender": "A felhasználó neme („male”, „female” vagy „unknown”).",
+       "apihelp-query+users-paramvalue-prop-centralids": "A felhasználó központi azonosítói és az összekapcsolási státusza.",
+       "apihelp-query+users-paramvalue-prop-cancreate": "Létrehozható-e fiók az érvényes, de nem regisztrált felhasználóneveken.",
+       "apihelp-query+users-param-attachedwiki": "A felhasználó össze van-e kapcsolva az ezen azonosítójú wikivel, az <kbd>$1prop=centralids</kbd> paraméterrel együtt használandó.",
+       "apihelp-query+users-param-users": "A lekérendő felhasználók listája.",
+       "apihelp-query+users-param-userids": "A lekérendő felhasználók azonosítóinak listája.",
+       "apihelp-query+users-param-token": "Használd a <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> lekérdezést helyette.",
+       "apihelp-query+users-example-simple": "Információk lekérése <kbd>Example</kbd> felhasználóról.",
+       "apihelp-query+watchlist-description": "A felhasználó figyelőlistáján szereplő lapok friss változtatásainak lekérése.",
+       "apihelp-query+watchlist-param-allrev": "Egy lap összes változtatásának lekérése a megadott időszakból.",
+       "apihelp-query+watchlist-param-start": "Listázás ettől az időbélyegtől.",
+       "apihelp-query+watchlist-param-end": "Listázás eddig az időbélyegig.",
+       "apihelp-query+watchlist-param-namespace": "A változtatások szűrése ezekre a névterekre.",
+       "apihelp-query+watchlist-param-user": "Csak ezen felhasználó szerkesztéseinek listázása.",
+       "apihelp-query+watchlist-param-excludeuser": "Ezen felhasználó szerkesztéseinek kihagyása.",
+       "apihelp-query+watchlist-param-limit": "A kérésenként visszaadandó eredmények száma.",
+       "apihelp-query+watchlist-param-prop": "További lekérendő tulajdonságok:",
+       "apihelp-query+watchlist-paramvalue-prop-ids": "Lapváltozat- és lapazonosítók.",
+       "apihelp-query+watchlist-paramvalue-prop-title": "A lap címe.",
+       "apihelp-query+watchlist-paramvalue-prop-user": "A szerkesztést végrehajtó felhasználó.",
+       "apihelp-query+watchlist-paramvalue-prop-userid": "A szerkesztést végrehajtó felhasználó azonosítója.",
+       "apihelp-query+watchlist-paramvalue-prop-comment": "A szerkesztési összefoglaló.",
+       "apihelp-query+watchlist-paramvalue-prop-timestamp": "A szerkesztés időbélyege.",
+       "apihelp-query+watchlist-paramvalue-prop-patrol": "Az ellenőrzött szerkesztések megjelölése (patrol).",
+       "apihelp-query+watchlist-paramvalue-prop-sizes": "A lap régi és új hossza.",
+       "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "Annak időbélyege, amikor a felhasználó utoljára értesítést kapott a szerkesztésről.",
+       "apihelp-query+watchlist-param-show": "Csak a kritériumoknak megfelelő elemek visszaadása. Például csak bejelentkezett felhasználók apró változtatásainak megtekintéséhez használd az <kbd>$1show=minor|!anon</kbd> értéket.",
+       "apihelp-query+watchlist-param-type": "A megjelenítendő változtatások típusai:",
+       "apihelp-query+watchlist-paramvalue-type-edit": "Normál lapszerkesztések.",
+       "apihelp-query+watchlist-paramvalue-type-external": "Külső változtatások.",
+       "apihelp-query+watchlist-paramvalue-type-new": "Laplétrehozások.",
+       "apihelp-query+watchlist-paramvalue-type-log": "Naplóbejegyzések.",
+       "apihelp-query+watchlist-paramvalue-type-categorize": "Kategóriaváltoztatások.",
+       "apihelp-query+watchlist-param-owner": "A <var>$1token</var> paraméterrel együtt használandó egy másik felhasználó figyelőlistájának elérésére.",
+       "apihelp-query+watchlist-param-token": "Egy biztonsági token (elérhető a felhasználó [[Special:Preferences#mw-prefsection-watchlist|beállításaiban]]) egy másik felhasználó figyelőlistájának eléréséhez.",
+       "apihelp-query+watchlist-example-simple": "A jelenlegi felhasználó figyelőlistáján szereplő nemrég módosított lapok legfrissebb változatának listázása.",
+       "apihelp-query+watchlist-example-props": "További információk lekérése a jelenlegi felhasználó figyelőlistáján szereplő nemrég módosított lapok legfrissebb változatáról.",
+       "apihelp-query+watchlist-example-allrev": "További információk lekérése a jelenlegi felhasználó figyelőlistáján szereplő összes friss változtatásról.",
+       "apihelp-query+watchlist-example-generator": "Lapinformációk lekérése a jelenlegi felhasználó figyelőlistáján szereplő nemrég módosított lapokról.",
+       "apihelp-query+watchlist-example-generator-rev": "Lapváltozat-információk lekérése a jelenlegi felhasználó figyelőlistáján szereplő friss változtatásokról.",
+       "apihelp-query+watchlist-example-wlowner": "<kbd>Exapmle</kbd> felhasználó figyelőlistáján szereplő nemrég módosított lapok legfrissebb változatának listázása.",
+       "apihelp-query+watchlistraw-description": "A jelenlegi felhasználó figyelőlistáján szereplő összes lap lekérése.",
+       "apihelp-query+watchlistraw-param-namespace": "Lapok listázása csak ezekben a névterekben.",
+       "apihelp-query+watchlistraw-param-limit": "A kérésenként visszaadandó eredmények száma.",
+       "apihelp-query+watchlistraw-param-prop": "További lekérendő tulajdonságok:",
+       "apihelp-query+watchlistraw-paramvalue-prop-changed": "Annak időbélyege, amikor a felhasználó utoljára értesítést kapott a szerkesztésről.",
+       "apihelp-query+watchlistraw-param-show": "Csak a kritériumoknak megfelelő elemek listázása.",
+       "apihelp-query+watchlistraw-param-owner": "A <var>$1token</var> paraméterrel együtt használandó egy másik felhasználó figyelőlistájának elérésére.",
+       "apihelp-query+watchlistraw-param-token": "Egy biztonsági token (elérhető a felhasználó [[Special:Preferences#mw-prefsection-watchlist|beállításaiban]]) egy másik felhasználó figyelőlistájának eléréséhez.",
+       "apihelp-query+watchlistraw-param-dir": "A listázás iránya.",
+       "apihelp-query+watchlistraw-param-fromtitle": "Listázás ettől a címtől (névtérelőtaggal).",
+       "apihelp-query+watchlistraw-param-totitle": "Listázás eddig a címig (névtérelőtaggal).",
+       "apihelp-query+watchlistraw-example-simple": "A jelenlegi felhasználó figyelőlistáján szereplő lapok lekérése.",
+       "apihelp-query+watchlistraw-example-generator": "Lapinformációk lekérése a jelenlegi felhasználó figyelőlistáján szereplő lapokról.",
+       "apihelp-removeauthenticationdata-description": "A jelenlegi felhasználó hitelesítési adatainak eltávolítása.",
+       "apihelp-removeauthenticationdata-example-simple": "Kísérlet a jelenlegi felhasználó <kbd>FooAuthenticationRequest</kbd> kéréshez kapcsolódó adatainak eltávolítására.",
+       "apihelp-resetpassword-description": "Jelszó-visszaállító e-mail küldése a felhasználónak.",
+       "apihelp-resetpassword-description-noroutes": "Nem érhetők el jelszó-visszaállítási módok.\n\nEngedélyezz néhány módot a <var>[[mw:Special:MyLanguage/Manual:$wgPasswordResetRoutes|$wgPasswordResetRoutes]]</var> PHP-változóval a modul használatához.",
+       "apihelp-resetpassword-param-user": "A visszaállítandó felhasználó.",
+       "apihelp-resetpassword-param-email": "A visszaállítandó felhasználó e-mail-címe.",
+       "apihelp-resetpassword-example-user": "Jelszó-visszaállító e-mail küldése <kbd>Example</kbd> felhasználónak.",
+       "apihelp-resetpassword-example-email": "Jelszó-visszaállító e-mail küldése az összes <kbd>user@example.com</kbd> e-mail-című felhasználónak.",
+       "apihelp-revisiondelete-description": "Változatok törlése és helyreállítása.",
+       "apihelp-revisiondelete-param-ids": "A törlendő lapváltozatok azonosítói.",
+       "apihelp-revisiondelete-param-reason": "A törlés vagy helyreállítás indoklása.",
+       "apihelp-revisiondelete-example-revision": "A <kbd>12345</kbd> lapváltozat tartalmának elrejtése a <kbd>Main Page</kbd> lapon.",
+       "apihelp-revisiondelete-example-log": "A <kbd>67890</kbd> naplóbejegyzés összes adatának elrejtése <kbd>BLP violation</kbd> indoklással.",
+       "apihelp-rollback-description": "A lap legutóbbi változtatásának visszavonása.\n\nHa a lap utolsó szerkesztője egymás után több szerkesztést végzett, az összes visszavonása.",
+       "apihelp-rollback-param-title": "A visszaállítandó lap címe. Nem használható együtt a <var>$1pageid</var> paraméterrel.",
+       "apihelp-rollback-param-pageid": "A visszaállítandó lap lapazonosítója. Nem használható együtt a <var>$1title</var> paraméterrel.",
+       "apihelp-rollback-param-summary": "Egyéni szerkesztési összefoglaló. Ha üres, az alapértelmezett összefoglaló lesz használatban.",
+       "apihelp-rollback-param-markbot": "A visszavont és a visszavonó szerkesztések botszerkesztésnek jelölése.",
+       "apihelp-rollback-param-watchlist": "A lap hozzáadása a figyelőlistához vagy eltávolítása onnan feltétel nélkül, a beállítások használata vagy a figyelőlista érintetlenül hagyása.",
+       "apihelp-rsd-description": "Egy RSD-séma (Really Simple Discovery) exportálása.",
+       "apihelp-rsd-example-simple": "Az RSD-séma exportálása.",
+       "apihelp-setnotificationtimestamp-description": "A figyelt lapok értesítési időbélyegének frissítése.\n\nEz érinti a módosított lapok kiemelését a figyelőlistán és a laptörténetekben, valamint az e-mail-küldést a „{{int:tog-enotifwatchlistpages}}” beállítás engedélyezése esetén.",
+       "apihelp-setnotificationtimestamp-param-entirewatchlist": "Dolgozás az összes figyelt lapon.",
+       "apihelp-setnotificationtimestamp-param-timestamp": "Az értesítési időbélyeg állítása erre az időbélyegre.",
+       "apihelp-setnotificationtimestamp-param-torevid": "Az értesítési időbélyeg állítása erre a lapváltozatra (csak egy lap esetén).",
+       "apihelp-setnotificationtimestamp-param-newerthanrevid": "Az értesítési időbélyeg állítása ennél a lapváltozatnál újabbra (csak egy lap esetén).",
+       "apihelp-setnotificationtimestamp-example-all": "Az értesítési állapot visszaállítása a teljes figyelőlistára.",
+       "apihelp-setnotificationtimestamp-example-page": "A <kbd>Main page</kbd> értesítési állapotának visszaállítása.",
+       "apihelp-setnotificationtimestamp-example-pagetimestamp": "A <kbd>Main page</kbd> értesítési időbélyegének módosítása, hogy a 2012. január 1-jét követő szerkesztések nem megtekintettek legyenek.",
+       "apihelp-setnotificationtimestamp-example-allpages": "A <kbd>{{ns:user}}</kbd> névtérbeli lapok értesítési állapotának visszaállítása.",
+       "apihelp-setpagelanguage-description": "Egy lap nyelvének módosítása.",
+       "apihelp-setpagelanguage-description-disabled": "A lapnyelv módosítása nem engedélyezett ezen a wikin.\n\nEngedélyezd a <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> PHP-változót ezen művelet használatához.",
+       "apihelp-setpagelanguage-param-title": "A módosítandó lap címe. Nem használható együtt a <var>$1pageid</var> paraméterrel.",
+       "apihelp-setpagelanguage-param-pageid": "A módosítandó lap azonosítója. Nem használható együtt a <var>$1title</var> paraméterrel.",
+       "apihelp-setpagelanguage-param-lang": "A lap nyelvének módosítása erre a nyelvkódra. Használd a <kbd>default</kbd> értéket a wiki alapértelmezett tartalomnyelvére való visszaállításhoz.",
+       "apihelp-setpagelanguage-param-reason": "A módosítás oka.",
+       "apihelp-setpagelanguage-example-language": "A <kbd>Main Page</kbd> nyelvének módosítása baszkra.",
+       "apihelp-setpagelanguage-example-default": "A 123 azonosítójú lap nyelvének módosítása a wiki alapértelmezett tartalomnyelvére.",
        "apihelp-userrights-param-userid": "Felhasználói azonosító.",
        "api-help-title": "MediaWiki API súgó",
        "api-help-lead": "Ez egy automatikusan generált MediaWiki API-dokumentációs lap.\n\nDokumentáció és példák: https://www.mediawiki.org/wiki/API",
        "api-help-param-type-boolean": "Típus: logikai ([[Special:ApiHelp/main#main/datatypes|részletek]])",
        "api-help-param-type-timestamp": "Típus: {{PLURAL:$1|1=időbélyeg|2=időbélyegek listája}} ([[Special:ApiHelp/main#main/datatypes|engedélyezett formátumok]])",
        "api-help-param-type-user": "Típus: {{PLURAL:$1|1=felhasználónév|2=felhasználónevek listája}}",
-       "api-help-param-list": "{{PLURAL:$1|1=A következő értékek egyike|2=Értékek (elválasztó: <kbd>{{!}}</kbd>)}}: $2",
+       "api-help-param-list": "{{PLURAL:$1|1=A következő értékek egyike|2=Értékek (elválasztó: <kbd>{{!}}</kbd> vagy [[Special:ApiHelp/main#main/datatypes|más]])}}: $2",
        "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=Üresnek kell lennie|Lehet üres vagy $2}}",
        "api-help-param-limit": "Nem engedélyezett több mint $1.",
        "api-help-param-limit2": "Nem engedélyezett több mint $1 (botoknak $2).",
index 22b23f0..0cc154f 100644 (file)
        "apihelp-query+redirects-param-namespace": "Includi solo le pagine in questi namespace.",
        "apihelp-query+redirects-param-limit": "Quanti reindirizzamenti restituire.",
        "apihelp-query+redirects-example-simple": "Ottieni un elenco di redirect a [[Main Page]].",
-       "apihelp-query+revisions-param-startid": "L'ID versione da cui iniziare l'elenco.",
+       "apihelp-query+revisions-param-startid": "Inizia l'elenco dal timestamp di questa versione. La versione deve esistere, ma non necessariamente deve appartenere a questa pagina.",
        "apihelp-query+revisions-param-start": "Il timestamp della versione da cui iniziare l'elenco.",
        "apihelp-query+revisions-param-tag": "Elenca solo le versioni etichettate con questa etichetta.",
        "apihelp-query+revisions+base-paramvalue-prop-ids": "L'ID della versione.",
index d2f595d..dcf14ab 100644 (file)
        "apihelp-rollback-example-simple": "利用者 <kbd>Example</kbd> による <kbd>Main Page</kbd> への最後の一連の編集を巻き戻す。",
        "apihelp-rollback-example-summary": "IP利用者 <kbd>192.0.2.5</kbd> による <kbd>Main Page</kbd> への最後の一連の編集を <kbd>Reverting vandalism</kbd> という理由で、それらの編集とその差し戻しをボットの編集としてマークして差し戻す。",
        "apihelp-stashedit-param-title": "編集されているページのページ名。",
+       "apihelp-stashedit-param-section": "節番号です。先頭の節の場合は <kbd>0</kbd>、新しい節の場合は <kbd>new</kbd>を指定します。",
+       "apihelp-stashedit-param-sectiontitle": "新しい節の名前です。",
        "apihelp-stashedit-param-text": "ページの本文。",
        "apihelp-stashedit-param-contentmodel": "新しいコンテンツのコンテンツ・モデル。",
        "apihelp-tag-description": "個々の版または記録項目に対しタグの追加または削除を行います。",
        "apihelp-userrights-param-userid": "利用者ID。",
        "apihelp-userrights-param-add": "利用者をこのグループに追加します。",
        "apihelp-userrights-param-reason": "変更の理由。",
+       "apihelp-userrights-example-expiry": "利用者 <kbd>SometimeSysop</kbd> を 1ヶ月間 <kbd>sysop</kbd> グループに追加する。",
        "apihelp-watch-description": "現在の利用者のウォッチリストにページを追加/除去します。",
        "apihelp-watch-example-watch": "<kbd>Main Page</kbd> をウォッチする。",
        "apihelp-watch-example-unwatch": "<kbd>Main Page</kbd> のウォッチを解除する。",
        "apihelp-xml-param-includexmlnamespace": "指定すると、XML 名前空間を追加します。",
        "apihelp-xmlfm-description": "データを XML 形式 (HTML に埋め込んだ形式) で出力します。",
        "api-format-title": "MediaWiki API の結果",
-       "api-format-prettyprint-header": "このページは $1 形式を HTML で表現したものです。HTML はデバッグに役立ちますが、アプリケーションでの使用には適していません。\n\n<var>format</var> パラメーターを指定すると出力形式を変更できます 。$1 形式の非 HTML 版を閲覧するには、format=$2 を設定してください。\n\n詳細情報については [[mw:API|完全な説明文書]]または [[Special:ApiHelp/main|API のヘルプ]]を参照してください。",
+       "api-format-prettyprint-header": "このページは $1 形式を HTML で表現したものです。HTML はデバッグに役立ちますが、アプリケーションでの使用には適していません。\n\n<var>format</var> パラメーターを指定すると出力形式を変更できます 。$1 形式の非 HTML 版を閲覧するには、format=$2 を設定してください。\n\n詳細情報については [[mw:Special:MyLanguage/API|完全な説明文書]]または [[Special:ApiHelp/main|API のヘルプ]]を参照してください。",
        "api-pageset-param-titles": "対象のページ名のリスト。",
        "api-pageset-param-pageids": "対象のページIDのリスト。",
        "api-pageset-param-revids": "対象の版IDのリスト。",
        "api-help-param-default-empty": "既定値: <span class=\"apihelp-empty\">(空)</span>",
        "api-help-param-token": "[[Special:ApiHelp/query+tokens|action=query&meta=tokens]] から取得した「$1」トークン",
        "api-help-param-token-webui": "互換性のために、ウェブUIで使用されるトークンも受理されます。",
-       "api-help-param-limited-in-miser-mode": "<strong>注意:</strong> [[mw:Manual:$wgMiserMode|miser mode]] により、これを使用すると継続する前に <var>$1limit</var> より返される結果が少なくなることがあります; 極端な場合では、ゼロ件の結果が返ることもあります。",
+       "api-help-param-limited-in-miser-mode": "<strong>注意:</strong> [[mw:Special:MyLanguage/Manual:$wgMiserMode|miser mode]] により、これを使用すると継続する前に <var>$1limit</var> より返される結果が少なくなることがあります; 極端な場合では、ゼロ件の結果が返ることもあります。",
        "api-help-param-direction": "列挙の方向:\n;newer:古いものを先に表示します。注意: $1start は $1end 以前でなければなりません。\n;older:新しいものを先に表示します (既定)。注意: $1start は $1end 以降でなければなりません。",
        "api-help-param-no-description": "<span class=\"apihelp-empty\">(説明なし)</span>",
        "api-help-examples": "{{PLURAL:$1|例}}:",
        "api-help-permissions-granted-to": "{{PLURAL:$1|権限を持つグループ}}: $2",
        "api-help-open-in-apisandbox": "<small>[サンドボックスで開く]</small>",
        "apierror-missingparam": "パラメーター <var>$1</var> を設定してください。",
+       "apiwarn-invalidcategory": "「$1」はカテゴリではありません。",
+       "apiwarn-notfile": "「$1」はファイルではありません。",
        "api-credits-header": "クレジット",
        "api-credits": "API の開発者:\n* Roan Kattouw (2007年9月-2009年の主任開発者)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (作成者、2006年9月-2007年9月の主任開発者)\n* Brad Jorsch (2013年-現在の主任開発者)\n\nコメント、提案、質問は mediawiki-api@lists.wikimedia.org にお送りください。\nバグはこちらへご報告ください: https://phabricator.wikimedia.org/"
 }
index a14b81e..efa5267 100644 (file)
                        "Ykhwong",
                        "Jonghaya",
                        "Jerrykim306",
-                       "코코아"
+                       "코코아",
+                       "Macofe"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|설명문서]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api 메일링 리스트]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API 알림 사항]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R 버그 및 요청]\n</div>\n<strong>상태:</strong> 이 페이지에 보이는 모든 기능은 정상적으로 작동하지만, API는 여전히 활발하게 개발되고 있으며, 언제든지 변경될 수 있습니다. 업데이트 공지를 받아보려면 [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ mediawiki-api-announce 메일링 리스트]를 구독하십시오.\n\n<strong>잘못된 요청:</strong> API에 잘못된 요청이 전송되면 \"MediaWiki-API-Error\" 키가 포함된 HTTP 헤더가 전송되며 반환되는 헤더와 오류 코드의 값은 모두 동일한 값으로 설정됩니다. 자세한 정보에 대해서는 [[mw:API:Errors and warnings/ko|API:오류와 경고]]를 참조하십시오.\n\n<strong>테스트하기:</strong> API 요청 테스트를 용이하게 하려면, [[Special:ApiSandbox]]를 보십시오.",
        "apihelp-main-param-action": "수행할 동작",
        "apihelp-main-param-format": "출력값의 형식.",
-       "apihelp-main-param-maxlag": "최대 랙은 미디어위키가 데이터베이스 복제된 클러스터에 설치되었을 때 사용될 수 있습니다. 특정한 행동이 사이트 복제 랙을 유발할 때, 이 변수는 클라이언트가 복제 랙이 설정된 숫자 아래로 내려갈 때까지 기다리도록 지시합니다. 과도한 랙의 경우, <samp>maxlag</samp> 오류 코드와 <samp>Waiting for $host: $lag seconds lagged</samp> 메시지가 제공됩니다.<br />[[mw:Manual:Maxlag_parameter|매뉴얼: Maxlag 변수]] 에서 더 많은 정보를 얻을 수 있습니다.",
+       "apihelp-main-param-maxlag": "최대 랙은 미디어위키가 데이터베이스 복제된 클러스터에 설치되었을 때 사용될 수 있습니다. 특정한 행동이 사이트 복제 랙을 유발할 때, 이 변수는 클라이언트가 복제 랙이 설정된 숫자 아래로 내려갈 때까지 기다리도록 지시합니다. 과도한 랙의 경우, <samp>maxlag</samp> 오류 코드와 <samp>$host 대기 중: $lag초 지연되었습니다</samp> 메시지가 제공됩니다.<br />[[mw:Special:MyLanguage/Manual:Maxlag_parameter|매뉴얼: Maxlag 변수]]에서 더 많은 정보를 얻을 수 있습니다.",
        "apihelp-main-param-smaxage": "<code>s-maxage</code> HTTP 캐시 컨트롤 헤더를 설정합니다. 오류는 캐시되지 않습니다.",
        "apihelp-main-param-maxage": "<code>max-age</code> HTTP 캐시 컨트롤 헤더를 설정합니다. 오류는 캐시되지 않습니다.",
        "apihelp-main-param-assert": "<kbd>user</kbd> 플래그가 설정되어 있다면 로그인 여부를 체크하며, <kbd>bot</kbd>  플래그가 설정되어 있다면 봇 사용자 권한이 설정되어 있는지 확인합니다.",
@@ -35,7 +35,6 @@
        "apihelp-main-param-errorformat": "경고 및 오류 텍스트 출력을 위해 사용할 형식입니다.\n; plaintext: HTML 태그가 제거되고 엔티티가 치환된 위키텍스트입니다.\n; wikitext: 구문 분석되지 않은 위키텍스트입니다.\n; html: HTML입니다.\n; raw: 메시지 키와 변수입니다.\n; none: 텍스트 없이 오류 코드만 출력합니다.\n; bc: 미디어위키 1.29 이전에 사용된 형식입니다. <var>errorlang</var> 및 <var>errorsuselocal</var>은 무시됩니다.",
        "apihelp-main-param-errorlang": "경고와 오류를 위해 사용할 언어입니다. <kbd>siprop=languages</kbd>가 포함된 <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>는 언어 코드의 목록을 반환하고, <kbd>content</kbd>를 지정하면 이 위키의 내용 상의 언어를 사용하며, <kbd>uselang</kbd>을 지정하면 <var>uselang</var> 변수와 동일한 값을 사용합니다.",
        "apihelp-main-param-errorsuselocal": "지정하면 오류 텍스트가 {{ns:MediaWiki}} 이름공간에서 지역적으로 정의된 메시지를 사용합니다.",
-       "apihelp-block-description": "사용자를 차단합니다.",
        "apihelp-block-param-user": "차단할 사용자 이름, IP 주소, 또는 IP 주소 대역입니다. <var>$1userid</var>와(과) 함께 사용할 수 없습니다.",
        "apihelp-block-param-userid": "차단할 사용자 ID입니다. <var>$1user</var>와(과) 함께 사용할 수 없습니다.",
        "apihelp-block-param-expiry": "기한. 상대값(예시: <kbd>5 months</kbd> 또는 </kbd>2 weeks</kbd>) 또는 절대값(예시: <kbd>2014-09-18T12:34:56Z</kbd>)이 될 수 있습니다. <kbd>infinite</kbd>, <kbd>indefinite</kbd> 또는 <kbd>never</kbd>로 설정하면 무기한으로 설정됩니다.",
        "apihelp-block-param-tags": "차단 기록의 항목에 적용할 태그를 변경합니다.",
        "apihelp-block-example-ip-simple": "IP <kbd>192.0.2.5</kbd>에 대해 <kbd>First strike</kbd>라는 이유로 3일 간 차단하기",
        "apihelp-block-example-user-complex": "사용자 <kbd>Vandal</kbd>을 <kbd>Vandalism</kbd>이라는 이유로 무기한 차단하며 계정 생성 및 이메일 발송을 막기",
-       "apihelp-changeauthenticationdata-description": "현재 사용자의 인증 데이터를 변경합니다.",
        "apihelp-changeauthenticationdata-example-password": "현재 사용자의 비밀번호를 <kbd>ExamplePassword</kbd>로 바꾸는 것을 시도합니다.",
-       "apihelp-checktoken-description": "<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>의 토큰의 유효성을 확인합니다.",
        "apihelp-checktoken-param-type": "테스트되는 토큰의 종류.",
        "apihelp-checktoken-param-token": "테스트할 토큰",
        "apihelp-checktoken-param-maxtokenage": "초로 계산된 토큰의 최대 나이.",
        "apihelp-checktoken-example-simple": "<kbd>csrf</kbd> 토큰의 유효성을 테스트합니다.",
-       "apihelp-clearhasmsg-description": "현재 사용자의 <code>hasmsg</code> 플래그를 비웁니다.",
        "apihelp-clearhasmsg-example-1": "현재 계정의 <code>hasmsg</code> 플래그를 삭제합니다.",
-       "apihelp-clientlogin-description": "상호작용 플로우를 이용하여 위키에 로그인합니다.",
        "apihelp-clientlogin-example-login": "사용자 <kbd>Example</kbd>, 비밀번호 <kbd>ExamplePassword</kbd>로 위키 로그인 과정을 시작합니다.",
        "apihelp-clientlogin-example-login2": "<kbd>987654</kbd>의 <var>OATHToken</var>을 지정하여 2요소 인증을 위한 <samp>UI</samp> 응답 이후에 로그인을 계속합니다.",
-       "apihelp-compare-description": "두 문서 간의 차이를 가져옵니다.\n\n대상이 되는 두 문서의 판 번호나 문서 제목 또는 문서 ID를 지정해야 합니다.",
        "apihelp-compare-param-fromtitle": "비교할 첫 이름.",
        "apihelp-compare-param-fromid": "비교할 첫 문서 ID.",
        "apihelp-compare-param-fromrev": "비교할 첫 판.",
        "apihelp-compare-param-totitle": "비교할 두 번째 제목.",
        "apihelp-compare-param-toid": "비교할 두 번째 문서 ID.",
        "apihelp-compare-param-torev": "비교할 두 번째 판.",
+       "apihelp-compare-param-prop": "가져올 정보입니다.",
        "apihelp-compare-example-1": "판 1과 2의 차이를 생성합니다.",
-       "apihelp-createaccount-description": "새 사용자 계정을 만듭니다.",
        "apihelp-createaccount-example-create": "비밀번호 <kbd>ExamplePassword</kbd>로 된 사용자 <kbd>Example</kbd>의 생성 과정을 시작합니다.",
        "apihelp-createaccount-param-name": "사용자 이름",
        "apihelp-createaccount-param-password": "비밀번호입니다. (<var>$1mailpassword</var>가 설정되어 있으면 무시됩니다)",
        "apihelp-createaccount-param-language": "사용자에게 기본으로 설정할 언어 코드. (선택 사항, 기본값으로는 본문의 언어입니다)",
        "apihelp-createaccount-example-pass": "사용자 <kbd>testuser</kbd>를 만들고 비밀번호를 <kbd>test123</kbd>으로 설정합니다.",
        "apihelp-createaccount-example-mail": "사용자 <kbd>testmailuser</kbd>를 만들고 자동 생성된 비밀번호를 이메일로 보냅니다.",
-       "apihelp-cspreport-description": "브라우저가 콘텐츠 보안 정책의 위반을 보고하기 위해 사용합니다. 이 모듈은 SCP를 준수하는 웹 브라우저에 의해 자동으로 사용될 때를 제외하고는 사용해서는 안 됩니다.",
        "apihelp-cspreport-param-reportonly": "강제적 정책이 아닌, 모니터링 정책에서 나온 보고서인 것으로 표시합니다",
-       "apihelp-delete-description": "문서 삭제",
        "apihelp-delete-param-title": "삭제할 문서의 제목. <var>$1pageid</var>과 함께 사용할 수 없습니다.",
        "apihelp-delete-param-pageid": "삭제할 문서의 ID. <var>$1title</var>과 함께 사용할 수 없습니다.",
        "apihelp-delete-param-reason": "삭제의 이유. 설정하지 않으면 자동 생성되는 이유를 사용합니다.",
        "apihelp-delete-param-watch": "문서를 현재 사용자의 주시문서 목록에 추가합니다.",
+       "apihelp-delete-param-watchlist": "현재 사용자의 주시목록에서 문서를 무조건적으로 추가하거나 제거하거나, 환경 설정을 사용하거나 주시를 변경하지 않습니다.",
        "apihelp-delete-param-unwatch": "문서를 현재 사용자의 주시문서 목록에서 제거합니다.",
        "apihelp-delete-example-simple": "<kbd>Main Page</kbd>를 삭제합니다.",
        "apihelp-delete-example-reason": "<kbd>Preparing for move</kbd> 라는 이유로 <kbd>Main Page</kbd>를 삭제하기.",
-       "apihelp-disabled-description": "이 모듈은 해제되었습니다.",
-       "apihelp-edit-description": "문서를 만들고 편집합니다.",
        "apihelp-edit-param-title": "편집할 문서의 제목. <var>$1pageid</var>과 같이 사용할 수 없습니다.",
        "apihelp-edit-param-section": "문단 번호입니다. <kbd>0</kbd>은 최상위 문단, <kbd>new</kbd>는 새 문단입니다.",
        "apihelp-edit-param-sectiontitle": "새 문단을 위한 제목.",
        "apihelp-edit-param-nocreate": "페이지가 존재하지 않으면 오류를 출력합니다.",
        "apihelp-edit-param-watch": "문서를 현재 사용자의 주시문서 목록에 추가합니다.",
        "apihelp-edit-param-unwatch": "문서를 현재 사용자의 주시문서 목록에서 제거합니다.",
+       "apihelp-edit-param-watchlist": "현재 사용자의 주시목록에서 문서를 무조건적으로 추가하거나 제거하거나, 환경 설정을 사용하거나 주시를 변경하지 않습니다.",
        "apihelp-edit-param-redirect": "자동으로 넘겨주기 처리하기.",
        "apihelp-edit-param-contentmodel": "새 콘텐츠의 콘텐츠 모델.",
        "apihelp-edit-example-edit": "문서 편집",
        "apihelp-edit-example-undo": "자동 편집요약으로 13579판에서 13585판까지 되돌리기.",
-       "apihelp-emailuser-description": "사용자에게 이메일을 보냅니다.",
        "apihelp-emailuser-param-target": "이메일을 받을 사용자.",
        "apihelp-emailuser-param-subject": "제목 헤더.",
        "apihelp-emailuser-param-text": "메일 본문.",
        "apihelp-emailuser-param-ccme": "자신에게 메일의 복사본을 보냅니다.",
        "apihelp-emailuser-example-email": "<kbd>WikiSysop</kbd> 사용자에게 텍스트 <kbd>Content</kbd>로 이메일을 보냅니다.",
-       "apihelp-expandtemplates-description": "위키텍스트 안에 모든 틀을 확장합니다.",
        "apihelp-expandtemplates-param-title": "문서 제목",
        "apihelp-expandtemplates-param-text": "변환할 위키텍스트.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "확장된 위키텍스트.",
        "apihelp-expandtemplates-param-includecomments": "출력에 HTML 주석을 포함할 것인지의 여부.",
        "apihelp-expandtemplates-param-generatexml": "XML 구문 분석 트리를 생성합니다. ($1prop=parsetree로 대체함)",
        "apihelp-expandtemplates-example-simple": "위키텍스트 <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd>를 확장합니다.",
-       "apihelp-feedcontributions-description": "사용자 기여 피드를 반환합니다.",
        "apihelp-feedcontributions-param-feedformat": "피드 포맷.",
        "apihelp-feedcontributions-param-user": "기여를 읽을 사용자 이름.",
        "apihelp-feedcontributions-param-namespace": "기여를 분류할 이름공간",
+       "apihelp-feedcontributions-param-year": "년부터 (혹은 그 이전).",
+       "apihelp-feedcontributions-param-month": "달부터 (혹은 그 이전).",
        "apihelp-feedcontributions-param-deletedonly": "삭제된 기여만 봅니다.",
        "apihelp-feedcontributions-param-toponly": "최신 판인 편집만 봅니다.",
        "apihelp-feedcontributions-param-newonly": "새 글인 편집만 봅니다.",
        "apihelp-feedcontributions-param-hideminor": "사소한 편집을 숨깁니다.",
        "apihelp-feedcontributions-param-showsizediff": "판 사이의 크기 차이를 보여줍니다.",
-       "apihelp-feedrecentchanges-description": "최근 바뀜 피드를 반환합니다.",
        "apihelp-feedrecentchanges-param-feedformat": "피드 포맷.",
        "apihelp-feedrecentchanges-param-namespace": "결과를 제한할 이름공간.",
        "apihelp-feedrecentchanges-param-invert": "선택한 항목을 제외한 모든 이름공간.",
        "apihelp-feedrecentchanges-param-tagfilter": "태그로 분류",
        "apihelp-feedrecentchanges-example-simple": "최근 바뀜을 봅니다.",
        "apihelp-feedrecentchanges-example-30days": "30일간의 최근 바뀜을 봅니다.",
-       "apihelp-feedwatchlist-description": "주시문서 목록 피드를 반환합니다.",
        "apihelp-feedwatchlist-param-feedformat": "피드 포맷.",
        "apihelp-feedwatchlist-example-default": "주시문서 목록 피드를 보여줍니다.",
-       "apihelp-filerevert-description": "파일을 이전 판으로 되돌립니다.",
        "apihelp-filerevert-param-filename": "파일: 접두어가 없는 대상 파일 이름.",
        "apihelp-filerevert-param-comment": "업로드 댓글입니다.",
        "apihelp-filerevert-example-revert": "<kbd>Wiki.png</kbd>를 <kbd>2011-03-05T15:27:40Z</kbd> 판으로 되돌립니다.",
-       "apihelp-help-description": "지정된 모듈의 도움말을 표시합니다.",
        "apihelp-help-param-modules": "(<var>action</var>, <var>format</var> 변수의 값 또는 <kbd>main</kbd>)에 대한 도움말을 표시하는 모듈입니다. <kbd>+</kbd>로 하위 모듈을 지정할 수 있습니다.",
        "apihelp-help-param-submodules": "명명된 모듈의 하위 모듈의 도움말을 포함합니다.",
        "apihelp-help-param-recursivesubmodules": "하위 모듈의 도움말을 반복하여 포함합니다.",
        "apihelp-help-example-recursive": "모든 도움말을 한 페이지로 모읍니다.",
        "apihelp-help-example-help": "도움말 모듈 자체에 대한 도움말입니다.",
        "apihelp-help-example-query": "2개의 쿼리 하위 모듈의 도움말입니다.",
-       "apihelp-imagerotate-description": "하나 이상의 그림을 회전합니다.",
        "apihelp-imagerotate-param-rotation": "시계 방향으로 회전할 그림의 각도.",
        "apihelp-import-param-xml": "업로드한 XML 파일.",
        "apihelp-login-param-name": "사용자 이름.",
        "apihelp-login-param-token": "처음 요청에서 로그인 토큰을 취득했습니다.",
        "apihelp-login-example-gettoken": "로그인 토큰을 검색합니다.",
        "apihelp-login-example-login": "로그인.",
-       "apihelp-logout-description": "로그아웃하고 세션 데이터를 지웁니다.",
        "apihelp-logout-example-logout": "현재 사용자를 로그아웃합니다.",
-       "apihelp-mergehistory-description": "문서 역사를 합칩니다.",
        "apihelp-mergehistory-param-reason": "문서 병합 이유.",
-       "apihelp-move-description": "문서 이동하기.",
        "apihelp-move-param-reason": "제목을 변경하는 이유",
        "apihelp-move-param-movetalk": "토론 문서가 존재한다면, 토론 문서도 이름을 변경해주세요.",
        "apihelp-move-param-movesubpages": "하위 문서가 있다면, 하위 문서도 이름을 변경해주세요.",
        "apihelp-move-param-noredirect": "넘겨주기 문서 만들지 않기",
        "apihelp-move-param-watch": "현재 사용자의 주시 문서에 이 문서와 넘겨주기 문서를 추가하기",
        "apihelp-move-param-unwatch": "현재 사용자의 주시 문서에 이 문서와 넘겨주기 문서를 제거하기",
+       "apihelp-move-param-watchlist": "현재 사용자의 주시목록에서 문서를 무조건적으로 추가하거나 제거하거나, 환경 설정을 사용하거나 주시를 변경하지 않습니다.",
        "apihelp-move-param-ignorewarnings": "모든 경고 무시하기",
        "apihelp-move-example-move": "<kbd>기존 제목</kbd>에서 <kbd>대상 제목</kbd>으로 넘겨주기를 만들지 않고 이동하기.",
-       "apihelp-opensearch-description": "OpenSearch 프로토콜을 이용하여 위키 검색하기",
        "apihelp-opensearch-param-search": "문자열 검색",
        "apihelp-opensearch-param-limit": "반환할 결과의 최대 수",
        "apihelp-opensearch-param-namespace": "검색할 이름공간.",
        "apihelp-opensearch-example-te": "<kbd>Te</kbd>로 시작하는 문서를 찾기.",
        "apihelp-options-param-reset": "사이트 기본으로 설정 초기화",
        "apihelp-options-example-reset": "모든 설정 초기화",
-       "apihelp-paraminfo-description": "API 모듈의 정보를 가져옵니다.",
        "apihelp-paraminfo-param-helpformat": "도움말 문자열 포맷.",
        "apihelp-parse-param-summary": "구문 분석할 요약입니다.",
        "apihelp-parse-paramvalue-prop-text": "위키텍스트의 구문 분석된 텍스트를 제공합니다.",
        "apihelp-parse-param-preview": "미리 보기 모드에서 구문 분석을 합니다.",
        "apihelp-parse-param-sectionpreview": "문단 미리 보기 모드에서 구문 분석을 합니다. (미리 보기 모드도 활성화함)",
        "apihelp-parse-param-disabletoc": "출력에서 목차를 제외합니다.",
+       "apihelp-parse-param-useskin": "선택한 스킨을 파서 출력에 적용합니다. 다음의 속성에 영향을 줄 수 있습니다: <kbd>langlinks</kbd>, <kbd>headitems</kbd>, <kbd>modules</kbd>, <kbd>jsconfigvars</kbd>, <kbd>indicators</kbd>.",
        "apihelp-parse-example-page": "페이지의 구문을 분석합니다.",
        "apihelp-parse-example-text": "위키텍스트의 구문을 분석합니다.",
        "apihelp-parse-example-summary": "요약을 구문 분석합니다.",
        "apihelp-patrol-param-revid": "점검할 판 ID입니다.",
        "apihelp-patrol-example-rcid": "최근의 변경사항을 점검합니다.",
        "apihelp-patrol-example-revid": "판을 점검합니다.",
-       "apihelp-protect-description": "문서의 보호 수준을 변경합니다.",
        "apihelp-protect-param-reason": "보호 또는 보호 해제의 이유.",
+       "apihelp-protect-param-watchlist": "현재 사용자의 주시목록에서 문서를 무조건적으로 추가하거나 제거하거나, 환경 설정을 사용하거나 주시를 변경하지 않습니다.",
        "apihelp-protect-example-protect": "문서 보호",
-       "apihelp-purge-description": "주어진 제목을 위한 캐시를 새로 고침.",
        "apihelp-purge-param-forcelinkupdate": "링크 테이블을 업데이트합니다.",
        "apihelp-purge-example-simple": "<kbd>Main Page</kbd>와 <kbd>API</kbd> 문서를 새로 고침.",
        "apihelp-query-param-prop": "조회된 페이지에 대해 가져올 속성입니다.",
        "apihelp-query-param-exportnowrap": "XML 결과물로 래핑하지 않고 엑스포트 XML을 반환합니다. $1export와만 같이 사용할 수 있습니다.",
        "apihelp-query-param-iwurl": "제목이 인터위키 링크인 경우 전체 URL을 가져올지의 여부입니다.",
        "apihelp-query-param-rawcontinue": "계속하기 위해 순수 <samp>query-continue</samp> 데이터를 반환합니다.",
-       "apihelp-query+allcategories-description": "모든 분류를 열거합니다.",
        "apihelp-query+allcategories-param-prefix": "이 값으로 시작하는 모든 분류 제목을 검색합니다.",
        "apihelp-query+allcategories-param-dir": "정렬 방향.",
        "apihelp-query+allcategories-param-limit": "반환할 분류의 갯수입니다.",
        "apihelp-query+allcategories-param-prop": "얻고자 하는 속성:",
        "apihelp-query+allcategories-paramvalue-prop-size": "페이지 수를 분류에 추가합니다.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "<var>$3user</var>와 함께 사용할 수 없습니다.",
+       "apihelp-query+alldeletedrevisions-param-from": "이 제목부터 목록을 보이기.",
+       "apihelp-query+alldeletedrevisions-param-to": "이 제목까지 목록을 보이기.",
        "apihelp-query+alldeletedrevisions-param-prefix": "이 값으로 시작하는 모든 문서 제목을 검색합니다.",
        "apihelp-query+alldeletedrevisions-param-tag": "이 태그로 태그된 판만을 나열합니다.",
        "apihelp-query+alldeletedrevisions-param-user": "이 사용자에 대한 판만 나열합니다.",
        "apihelp-query+allfileusages-example-unique": "고유한 파일 제목을 나열합니다.",
        "apihelp-query+allfileusages-example-unique-generator": "모든 파일 제목을 가져오되, 존재하지 않는 항목을 표시합니다.",
        "apihelp-query+allfileusages-example-generator": "파일을 포함하는 문서를 가져옵니다.",
-       "apihelp-query+allimages-description": "모든 그림을 순차적으로 열거합니다.",
        "apihelp-query+allimages-example-recent": "최근 업로드된 파일을 보여줍니다. [[Special:NewFiles]]와 유사합니다.",
        "apihelp-query+alllinks-paramvalue-prop-title": "링크의 제목을 추가합니다.",
        "apihelp-query+alllinks-param-namespace": "열거할 이름공간.",
        "apihelp-query+alllinks-param-limit": "반환할 총 항목 수입니다.",
-       "apihelp-query+allmessages-description": "이 사이트에서 반환할 메시지.",
        "apihelp-query+allmessages-example-ipb": "<kbd>ipb-</kbd>로 시작하는 메시지를 보입니다.",
        "apihelp-query+allpages-param-namespace": "열거할 이름공간.",
        "apihelp-query+allredirects-paramvalue-prop-title": "넘겨주기의 제목을 추가합니다.",
        "apihelp-query+allredirects-param-namespace": "열거할 이름공간.",
        "apihelp-query+allredirects-param-limit": "반환할 총 항목 수입니다.",
-       "apihelp-query+allrevisions-description": "모든 판 표시.",
        "apihelp-query+mystashedfiles-param-limit": "가져올 파일의 갯수.",
        "apihelp-query+alltransclusions-param-prop": "포함할 정보:",
        "apihelp-query+alltransclusions-param-namespace": "열거할 이름공간.",
        "apihelp-query+alltransclusions-param-limit": "반환할 총 항목 수입니다.",
-       "apihelp-query+allusers-description": "등록된 모든 사용자를 열거합니다.",
        "apihelp-query+allusers-param-dir": "정렬 방향.",
        "apihelp-query+allusers-param-prop": "포함할 정보:",
        "apihelp-query+allusers-paramvalue-prop-blockinfo": "현재 차단된 사용자의 정보를 추가함.",
        "apihelp-query+allusers-paramvalue-prop-editcount": "사용자의 편집 수를 추가합니다.",
        "apihelp-query+allusers-param-witheditsonly": "편집을 한 사용자만 나열합니다.",
        "apihelp-query+allusers-example-Y": "<kbd>Y</kbd>로 시작하는 사용자를 나열합니다.",
-       "apihelp-query+authmanagerinfo-description": "현재의 인증 상태에 대한 정보를 검색합니다.",
        "apihelp-query+backlinks-param-namespace": "열거할 이름공간.",
        "apihelp-query+backlinks-example-simple": "<kbd>Main Page</kbd>를 가리키는 링크를 보이기.",
        "apihelp-query+backlinks-example-generator": "<kbd>Main Page</kbd>를 가리키는 문서의 정보를 보기.",
-       "apihelp-query+blocks-description": "차단된 모든 사용자와 IP 주소를 나열합니다.",
        "apihelp-query+blocks-param-start": "나열을 시작할 타임스탬프",
        "apihelp-query+blocks-param-end": "나열을 끝낼 타임스탬프",
        "apihelp-query+blocks-param-ids": "나열할 차단 ID 목록 (선택 사항).",
        "apihelp-query+deletedrevs-param-start": "나열을 시작할 타임스탬프",
        "apihelp-query+deletedrevs-param-end": "나열을 끝낼 타임스탬프",
        "apihelp-query+deletedrevs-param-limit": "나열할 판의 최대 양.",
-       "apihelp-query+disabled-description": "이 쿼리 모듈은 비활성화되었습니다.",
-       "apihelp-query+duplicatefiles-description": "해시 값 기반으로 주어진 파일들 중 중복된 모든 파일을 나열합니다.",
        "apihelp-query+duplicatefiles-param-limit": "반환할 중복 파일의 수.",
        "apihelp-query+embeddedin-param-namespace": "열거할 이름공간.",
        "apihelp-query+extlinks-param-limit": "반환할 링크의 수.",
        "apihelp-query+exturlusage-paramvalue-prop-url": "문서에 사용된 URL을 추가합니다.",
        "apihelp-query+exturlusage-param-namespace": "열거할 문서 이름공간.",
        "apihelp-query+exturlusage-param-limit": "반환할 문서 수.",
-       "apihelp-query+filearchive-description": "삭제된 모든 파일을 순서대로 열거합니다.",
        "apihelp-query+filearchive-paramvalue-prop-sha1": "그림에 대한 SHA-1 해시를 추가합니다.",
        "apihelp-query+filearchive-paramvalue-prop-user": "그림 판을 올린 사용자를 추가합니다.",
        "apihelp-query+filearchive-paramvalue-prop-description": "그림 판의 설명을 추가합니다.",
        "apihelp-query+filearchive-paramvalue-prop-mediatype": "그림의 미디어 유형을 추가합니다.",
        "apihelp-query+filearchive-paramvalue-prop-metadata": "그림의 버전에 대한 Exif 메타데이터를 나열합니다.",
        "apihelp-query+filearchive-example-simple": "삭제된 모든 파일의 목록을 표시합니다.",
-       "apihelp-query+filerepoinfo-description": "위키에 구성된 그림 저장소에 대한 메타 정보를 반환합니다.",
        "apihelp-query+filerepoinfo-example-simple": "파일 저장소의 정보를 가져옵니다.",
        "apihelp-query+fileusage-param-prop": "얻고자 하는 속성:",
        "apihelp-query+fileusage-paramvalue-prop-pageid": "각 문서의 페이지 ID.",
        "apihelp-query+images-example-generator": "[[Main Page|대문]]에 사용된 모든 파일에 관한 정보를 가져옵니다.",
        "apihelp-query+imageusage-param-namespace": "열거할 이름공간.",
        "apihelp-query+imageusage-example-generator": "[[:File:Albert Einstein Head.jpg]]를 이용하여 페이지의 정보를 가져옵니다.",
-       "apihelp-query+info-description": "기본 페이지 정보를 가져옵니다.",
        "apihelp-query+info-param-prop": "얻고자 하는 추가 속성:",
        "apihelp-query+info-paramvalue-prop-protection": "각 문서의 보호 수준을 나열합니다.",
        "apihelp-query+info-paramvalue-prop-readable": "사용자가 이 문서를 읽을 수 있는지의 여부.",
        "apihelp-query+recentchanges-paramvalue-prop-user": "편집에 임할 사용자를 추가하고 IP인 경우 태그합니다.",
        "apihelp-query+recentchanges-paramvalue-prop-userid": "편집에 임할 사용자를 추가합니다.",
        "apihelp-query+recentchanges-paramvalue-prop-flags": "편집에 대한 플래그를 추가합니다.",
+       "apihelp-query+revisions-param-startid": "이 판의 타임스탬프에서 열거를 시작합니다. 이 판은 존재해야 하지만 이 문서에 속할 필요는 없습니다.",
+       "apihelp-query+revisions-param-endid": "이 판의 타임스탬프에서 열거를 중단합니다. 이 판은 존재해야 하지만 이 문서에 속할 필요는 없습니다.",
        "apihelp-query+revisions+base-paramvalue-prop-size": "판의 길이. (바이트)",
        "apihelp-query+revisions+base-paramvalue-prop-sha1": "판의 SHA-1 (base 16).",
        "apihelp-query+revisions+base-paramvalue-prop-contentmodel": "판의 콘텐츠 모델 ID.",
        "apihelp-query+revisions+base-paramvalue-prop-content": "판의 텍스트.",
        "apihelp-query+revisions+base-paramvalue-prop-tags": "판의 태그.",
-       "apihelp-query+search-description": "전문 검색을 수행합니다.",
        "apihelp-query+search-param-qiprofile": "쿼리 독립적인 프로파일 사용(순위 알고리즘에 영향있음)",
        "apihelp-query+search-paramvalue-prop-size": "바이트 단위로 문서의 크기를 추가합니다.",
        "apihelp-query+search-paramvalue-prop-wordcount": "문서의 낱말 수를 추가합니다.",
        "apihelp-query+search-paramvalue-prop-timestamp": "문서가 마지막으로 편집된 시기의 타임스탬프를 추가합니다.",
        "apihelp-query+search-example-simple": "<kbd>meaning</kbd>을 검색합니다.",
        "apihelp-query+search-example-text": "<kbd>meaning</kbd>의 텍스트를 검색합니다.",
-       "apihelp-query+siteinfo-description": "사이트의 전반적인 정보를 반환합니다.",
        "apihelp-query+siteinfo-param-prop": "가져올 정보:",
        "apihelp-query+siteinfo-paramvalue-prop-general": "전반적인 시스템 정보입니다.",
        "apihelp-query+siteinfo-paramvalue-prop-namespaces": "등록된 이름공간 및 기본 이름의 목록입니다.",
        "apihelp-query+tags-paramvalue-prop-name": "태그의 이름을 추가합니다.",
        "apihelp-query+tags-paramvalue-prop-description": "태그의 설명을 추가합니다.",
        "apihelp-query+tags-paramvalue-prop-hitcount": "판의 수와 이 판을 가진 로그 엔트리를 추가합니다.",
+       "apihelp-query+templates-param-namespace": "이 이름공간에 속한 틀만 표시합니다.",
        "apihelp-query+templates-param-limit": "반환할 틀 수.",
        "apihelp-query+tokens-param-type": "요청할 토큰의 종류.",
        "apihelp-query+tokens-example-simple": "csrf 토큰을 가져옵니다. (기본값)",
        "apihelp-query+transcludedin-param-namespace": "이 이름공간의 문서만 포함합니다.",
        "apihelp-query+transcludedin-param-limit": "반환할 항목 수.",
        "apihelp-query+transcludedin-param-show": "이 기준을 충족하는 항목만 표시합니다:\n;redirect:넘겨주기만 표시합니다.\n;!redirect:넘겨주기가 아닌 항목만 표시합니다.",
-       "apihelp-query+usercontribs-description": "한 사용자의 모든 편집을 가져옵니다.",
        "apihelp-query+usercontribs-param-limit": "반환할 기여의 최대 수.",
        "apihelp-query+usercontribs-paramvalue-prop-ids": "페이지 ID와 판 ID를 추가합니다.",
        "apihelp-query+usercontribs-paramvalue-prop-title": "문서의 제목과 이름공간 ID를 추가합니다.",
        "apihelp-query+usercontribs-param-toponly": "최신 판인 변경 사항만 나열합니다.",
        "apihelp-query+usercontribs-example-user": "사용자 <kbd>Example</kbd>의 기여를 표시합니다.",
        "apihelp-query+usercontribs-example-ipprefix": "<kbd>192.0.2.</kbd>로 시작하는 모든 IP 주소의 기여를 표시합니다.",
-       "apihelp-query+userinfo-description": "현재 사용자의 정보를 가져옵니다.",
        "apihelp-query+userinfo-param-prop": "포함할 정보:",
        "apihelp-query+userinfo-paramvalue-prop-blockinfo": "현재 사용자가 차단되면 누구에 의해 무슨 이유로 차단되었는지 태그합니다.",
        "apihelp-query+userinfo-paramvalue-prop-hasmsg": "현재 사용자가 대기 중인 메시지가 있다면 <samp>messages</samp> 태그를 추가합니다.",
        "apihelp-query+userinfo-paramvalue-prop-registrationdate": "사용자의 등록 날짜를 추가합니다.",
        "apihelp-query+userinfo-example-simple": "현재 사용자의 정보를 가져옵니다.",
        "apihelp-query+userinfo-example-data": "현재 사용자의 추가 정보를 가져옵니다.",
-       "apihelp-query+users-description": "사용자 목록에 대한 정보를 가져옵니다.",
        "apihelp-query+users-param-prop": "포함할 정보:",
        "apihelp-query+users-paramvalue-prop-editcount": "사용자의 편집 수를 추가합니다.",
        "apihelp-query+users-paramvalue-prop-registration": "사용자의 등록 타임스탬프를 추가합니다.",
        "apihelp-query+users-param-userids": "정보를 가져올 사용자 ID의 목록입니다.",
        "apihelp-query+users-param-token": "<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>을 대신 사용하십시오.",
        "apihelp-query+users-example-simple": "사용자 <kbd>Example</kbd>의 정보를 반환합니다.",
-       "apihelp-query+watchlist-description": "현재 사용자의 주시목록의 문서의 최근 바뀜을 가져옵니다.",
        "apihelp-query+watchlist-param-user": "이 사용자의 변경 사항만 나열합니다.",
        "apihelp-query+watchlist-param-excludeuser": "이 사용자의 변경사항을 나열하지 않습니다.",
        "apihelp-query+watchlist-paramvalue-prop-ids": "판 ID와 페이지 ID를 추가합니다.",
        "apihelp-query+watchlist-paramvalue-prop-title": "문서의 제목을 추가합니다.",
        "apihelp-query+watchlist-paramvalue-prop-flags": "편집에 대한 플래그를 추가합니다.",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "적절한 곳에 로그 정보를 추가합니다.",
-       "apihelp-removeauthenticationdata-description": "현재 사용자의 인증 데이터를 제거합니다.",
-       "apihelp-resetpassword-description": "비밀번호 재설정 이메일을 사용자에게 보냅니다.",
        "apihelp-resetpassword-param-user": "재설정할 사용자입니다.",
        "apihelp-resetpassword-param-email": "재설정할 사용자의 이메일 주소입니다.",
        "apihelp-resetpassword-example-user": "사용자 <kbd>Example</kbd>에게 비밀번호 재설정 이메일을 보냅니다.",
        "apihelp-resetpassword-example-email": "<kbd>user@example.com</kbd> 이메일 주소를 가진 모든 사용자에 대해 비밀번호 재설정 이메일을 보냅니다.",
-       "apihelp-revisiondelete-description": "판을 삭제하거나 되살립니다.",
        "apihelp-revisiondelete-param-reason": "삭제 또는 복구 이유.",
        "apihelp-rollback-param-tags": "되돌리기를 적용하기 위해 태그합니다.",
+       "apihelp-rollback-param-watchlist": "현재 사용자의 주시목록에서 문서를 무조건적으로 추가하거나 제거하거나, 환경 설정을 사용하거나 주시를 변경하지 않습니다.",
        "apihelp-rollback-example-simple": "<kbd>Project:대문</kbd> 문서의 <kbd>예시</kbd>의 마지막 판을 되돌리기",
-       "apihelp-setpagelanguage-description": "문서의 언어를 변경합니다.",
-       "apihelp-setpagelanguage-description-disabled": "이 위키에서 문서의 언어 변경은 허용되지 않습니다.\n\n이 동작을 사용하려면 <var>[[mw:Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var>을 활성화하십시오.",
+       "apihelp-setpagelanguage-param-title": "언어를 변경하려는 문서의 제목입니다. <var>$1pageid</var>와 함께 사용할 수 없습니다.",
+       "apihelp-setpagelanguage-param-pageid": "언어를 변경하려는 문서의 ID입니다. <var>$1title</var>과 함께 사용할 수 없습니다.",
+       "apihelp-setpagelanguage-param-lang": "문서를 변경할 언어의 언어 코드입니다. 문서를 위키의 기본 콘텐츠 언어로 재설정하려면 <kbd>default</kbd>를 사용하십시오.",
        "apihelp-setpagelanguage-param-reason": "변경 이유.",
        "apihelp-setpagelanguage-example-language": "<kbd>Main Page</kbd>의 언어를 바스크어로 변경합니다.",
        "apihelp-stashedit-param-sectiontitle": "새 문단을 위한 제목.",
        "apihelp-stashedit-param-contentmodel": "새 콘텐츠의 콘텐츠 모델.",
        "apihelp-tag-param-reason": "변경 이유.",
        "apihelp-tokens-param-type": "요청할 토큰의 종류.",
-       "apihelp-unblock-description": "사용자를 차단 해제합니다.",
+       "apihelp-tokens-example-edit": "편집 토큰을 검색합니다. (기본값)",
+       "apihelp-tokens-example-emailmove": "편집 토큰과 이동 토큰을 검색합니다.",
+       "apihelp-unblock-param-id": "차단을 해제할 차단 ID입니다. (<kbd>list=blocks</kbd>를 통해 가져옴) <var>$1user</var> 또는 <var>$1userid</var>와 함께 사용할 수 없습니다.",
        "apihelp-unblock-param-user": "차단을 해제할 사용자 이름, IP 주소, IP 주소 대역입니다. <var>$1id</var> 또는 <var>$1userid</var>와(과) 함께 사용할 수 없습니다.",
        "apihelp-unblock-param-userid": "차단을 해제할 사용자 ID입니다. <var>$1id</var> 또는 <var>$1user</var>와(과) 함께 사용할 수 없습니다.",
        "apihelp-unblock-param-reason": "차단 해제 이유.",
        "apihelp-unblock-param-tags": "차단 기록의 항목에 적용할 태그를 변경합니다.",
+       "apihelp-unblock-example-id": "차단 ID #<kbd>105</kbd>의 차단을 해제합니다.",
+       "apihelp-unblock-example-user": "<kbd>Sorry Bob</kbd>이 이유인 <kbd>Bob</kbd> 사용자의 차단을 해제합니다.",
+       "apihelp-undelete-param-title": "복구할 문서의 제목입니다.",
+       "apihelp-undelete-param-reason": "복구할 이유입니다.",
+       "apihelp-undelete-param-tags": "삭제 기록의 항목에 적용할 태그를 변경합니다.",
+       "apihelp-undelete-param-timestamps": "복구할 판의 타임스탬프입니다. <var>$1timestamps</var>와 <var>$1fileids</var>가 둘 다 비어있으면 모든 판이 복구됩니다.",
+       "apihelp-undelete-param-fileids": "복구할 파일 판의 ID입니다. <var>$1timestamps</var>와 <var>$1fileids</var>가 둘 다 비어있으면 모든 판이 복구됩니다.",
+       "apihelp-undelete-param-watchlist": "현재 사용자의 주시목록에서 문서를 무조건적으로 추가하거나 제거하거나, 환경 설정을 사용하거나 주시를 변경하지 않습니다.",
+       "apihelp-undelete-example-page": "<kbd>대문</kbd> 문서를 복구합니다.",
+       "apihelp-undelete-example-revisions": "<kbd>대문</kbd> 문서의 두 판을 복구합니다.",
+       "apihelp-unlinkaccount-example-simple": "<kbd>FooAuthenticationRequest</kbd>와 연결된 제공자에 대한 현재 사용자의 토론 링크 제거를 시도합니다.",
        "apihelp-upload-param-filename": "대상 파일 이름.",
+       "apihelp-upload-param-comment": "업로드 주석입니다. 또, <var>$1text</var>가 지정되지 않은 경우 새로운 파일들의 초기 페이지 텍스트로 사용됩니다.",
+       "apihelp-upload-param-tags": "업로드 기록 항목과 파일 문서 판에 적용할 태그를 변경합니다.",
+       "apihelp-upload-param-text": "새로운 파일들에 대한 초기 문서 텍스트.",
+       "apihelp-upload-param-watch": "문서를 주시합니다.",
+       "apihelp-upload-param-watchlist": "현재 사용자의 주시목록에서 문서를 무조건적으로 추가하거나 제거하거나, 환경 설정을 사용하거나 주시를 변경하지 않습니다.",
        "apihelp-upload-param-ignorewarnings": "모든 경고를 무시합니다.",
+       "apihelp-upload-param-file": "파일의 내용입니다.",
+       "apihelp-upload-param-url": "파일을 가져올 URL입니다.",
+       "apihelp-upload-param-filekey": "임시로 보관한 이전의 업로드를 식별하는 키입니다.",
+       "apihelp-upload-param-sessionkey": "$1filekey와 동일하며, 하위 호환성을 위해 유지됩니다.",
+       "apihelp-upload-param-stash": "설정하면 서버는 저장소에 파일을 추가하는 대신 임시로 파일을 보관합니다.",
+       "apihelp-upload-param-filesize": "전체 업로드의 파일 크기입니다.",
+       "apihelp-upload-param-offset": "바이트 단위의 청크 오프셋.",
+       "apihelp-upload-param-chunk": "청크의 내용입니다.",
+       "apihelp-upload-param-async": "가능하면 잠재적으로 큰 파일 작업을 비동기로 처리합니다.",
+       "apihelp-upload-param-checkstatus": "제공된 파일 키의 업로드 상태만 가져옵니다.",
+       "apihelp-upload-example-url": "URL에서 업로드합니다.",
+       "apihelp-upload-example-filekey": "경고로 인해 실패한 업로드를 마칩니다.",
        "apihelp-userrights-param-user": "사용자 이름.",
        "apihelp-userrights-param-userid": "사용자 ID.",
+       "apihelp-userrights-param-add": "이 그룹에 사용자를 추가하지만, 이미 회원이라면 해당 그룹의 회원 만료 날짜를 업데이트합니다.",
+       "apihelp-userrights-param-expiry": "만료 타임스탬프입니다. 상대값(예: <kbd>5 months</kbd> 또는 <kbd>2 weeks</kbd>)이거나 절대값(예: <kbd>2014-09-18T12:34:56Z</kbd>)이다. 타임스탬프만 설정할 경우, <var>$1add</var> 변수에 전달되는 모든 그룹에 사용됩니다. 만료되지 않는 사용자 그룹으로 지정하려면 <kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd>, 또는 <kbd>never</kbd>를 사용하십시오.",
+       "apihelp-userrights-param-remove": "이 그룹에서 사용자를 제거합니다.",
+       "apihelp-userrights-param-reason": "변경 이유입니다.",
+       "apihelp-userrights-param-tags": "사용자 권한 기록의 항목에 적용할 태그를 변경합니다.",
+       "apihelp-userrights-example-user": "<kbd>FooBot</kbd> 사용자를 <kbd>bot</kbd> 그룹에 추가하며 <kbd>sysop</kbd>과 <kbd>bureaucrat</kbd> 그룹에서 제거합니다.",
+       "apihelp-userrights-example-userid": "ID가 <kbd>123</kbd>인 사용자를 <kbd>bot</kbd> 그룹에 추가하며, <kbd>sysop</kbd>과 <kbd>bureaucrat</kbd> 그룹에서 제거합니다.",
+       "apihelp-userrights-example-expiry": "사용자 <kbd>SometimeSysop</kbd>을 <kbd>sysop</kbd> 그룹에 1개월 간 추가합니다.",
+       "apihelp-validatepassword-param-password": "확인할 비밀번호.",
+       "apihelp-validatepassword-param-user": "계정 생성을 테스트할 때 사용할 사용자 이름입니다. 명명된 사용자는 존재하지 않습니다.",
        "apihelp-validatepassword-param-email": "계정 생성을 테스트할 때 사용할 이메일 주소입니다.",
        "apihelp-validatepassword-param-realname": "계정 생성을 테스트할 때 사용할 실명입니다.",
-       "apihelp-json-description": "데이터를 JSON 형식으로 출력합니다.",
+       "apihelp-validatepassword-example-1": "현재 사용자에 대해 비밀번호 <kbd>foobar</kbd>를 확인합니다.",
+       "apihelp-validatepassword-example-2": "사용자 <kbd>Example</kbd>를 만들기 위해 비밀번호 <kbd>qwerty</kbd>를 확인합니다.",
+       "apihelp-watch-param-title": "주시하거나 주시를 해제할 문서입니다. <var>$1titles</var>를 대신 사용하세요.",
+       "apihelp-watch-param-unwatch": "설정하면 문서의 주시는 해제됩니다.",
+       "apihelp-watch-example-watch": "<kbd>대문</kbd> 문서를 주시합니다.",
+       "apihelp-watch-example-unwatch": "<kbd>대문</kbd> 문서의 주시를 해제합니다.",
+       "apihelp-watch-example-generator": "일반 이름공간의 일부 첫 문서들을 주시합니다.",
        "apihelp-json-param-formatversion": "출력 형식:\n;1:하위 호환 포맷 (XML 스타일 불린, 콘텐츠 노드를 위한 <samp>*</samp> 키 등).\n;2:실험적인 모던 포맷. 상세 내용은 바뀔 수 있습니다!\n;latest:최신 포맷(현재 <kbd>2</kbd>)을 이용하지만 경고 없이 바뀔 수 있습니다.",
-       "apihelp-jsonfm-description": "데이터를 JSON 포맷으로 출력합니다. (HTML의 가독성 증가)",
-       "apihelp-rawfm-description": "디버깅 요소를 포함하여 데이터를 JSON 형식으로 출력합니다. (HTML의 가독성 증가)",
        "apihelp-xml-param-includexmlnamespace": "지정하면 XML 이름공간을 추가합니다.",
        "api-format-title": "미디어위키 API 결과",
+       "api-login-fail-aborted": "인증은 사용자의 상호작용이 필요하지만, <kbd>action=login</kbd>에 의해 지원되지 않습니다. <kbd>action=login</kbd>으로 로그인할 수 있게 하려면 [[Special:BotPasswords]]를 참조하십시오. 주 계정 로그인의 사용을 계속하려면 <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>을 참조하십시오.",
+       "api-login-fail-aborted-nobotpw": "인증은 사용자의 상호작용이 필요하지만, <kbd>action=login</kbd>에 의해 지원되지 않습니다. 로그인하려면 <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>을 참조하십시오.",
+       "api-login-fail-badsessionprovider": "$1을(를) 사용할 경우 로그인할 수 없습니다.",
+       "api-login-fail-sameorigin": "기원이 동일한 정책이 적용되지 않으면 로그인할 수 없습니다.",
        "api-pageset-param-titles": "작업할 제목의 목록입니다.",
        "api-pageset-param-pageids": "작업할 페이지 ID의 목록입니다.",
        "api-pageset-param-revids": "작업할 판 ID의 목록입니다.",
        "api-pageset-param-generator": "특정 쿼리 모듈을 실행함으로써 작업할 페이지의 목록입니다.\n\n<strong>참고:</strong> 발생기 변수명은 \"g\"로 시작해야 합니다. 예시를 참고하십시오.",
+       "api-pageset-param-redirects-generator": "<var>$1titles</var>, <var>$1pageids</var>, <var>$1revids</var> 및 <var>$1generator</var>가 반환한 문서들의 넘겨주기를 자동으로 결정합니다.",
+       "api-pageset-param-redirects-nogenerator": "<var>$1titles</var>, <var>$1pageids</var>, <var>$1revids</var>의 넘겨주기를 자동으로 결정합니다.",
+       "api-pageset-param-converttitles": "필요하면 제목을 다른 형태로 변환합니다. 위키의 내용 언어가 형태 변환을 지원하는 경우에만 동작합니다. 형태 변환을 지원하는 언어는 $1을(를) 포함합니다.",
        "api-help-title": "미디어위키 API 도움말",
        "api-help-lead": "이 페이지는 자동으로 생성된 미디어위키 API 도움말 문서입니다.\n\n설명 문서 및 예시: https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "메인 모듈",
        "api-help-param-type-limit": "유형: 정수 또는 <kbd>max</kbd>",
        "api-help-param-type-integer": "유형: {{PLURAL:$1|1=정수|2=정수 목록}}",
        "api-help-param-type-boolean": "유형: 부울 ([[Special:ApiHelp/main#main/datatypes|자세한 정보]])",
+       "api-help-param-type-timestamp": "유형: {{PLURAL:$1|1=타임스탬프|2=타임스탬프 목록}} ([[Special:ApiHelp/main#main/datatypes|허용되는 포맷]])",
        "api-help-param-type-user": "유형: {{PLURAL:$1|1=사용자 이름|2=사용자 이름 목록}}",
        "api-help-param-list": "{{PLURAL:$1|1=다음 값 중 하나|2=값 (<kbd>{{!}}</kbd>로 구분)}}: $2 또는 [[Special:ApiHelp/main#main/datatypes|alternative]]: $2",
        "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=비어 있어야 함|비어 있을 수 있거나 $2}}",
        "api-help-param-integer-min": "{{PLURAL:$1|1=값|2=값들}}은 $2 이상이어야 합니다.",
        "api-help-param-integer-max": "{{PLURAL:$1|1=값|2=값들}}은 $3 이하여야 합니다.",
        "api-help-param-integer-minmax": "{{PLURAL:$1|1=값|2=값들}}은 $2와 $3 사이여야 합니다.",
+       "api-help-param-upload": "여러 부분/폼 데이터를 사용한 파일 업로드로 게시되어야 합니다.",
        "api-help-param-multi-separate": "<kbd>|</kbd> 또는 [[Special:ApiHelp/main#main/datatypes|대안]]으로 값을 구분합니다.",
        "api-help-param-multi-max": "값들의 최대 수는 {{PLURAL:$1|$1}}입니다. (봇의 경우 {{PLURAL:$2|$2}})",
        "api-help-param-default": "기본값: $1",
        "apierror-invaliduserid": "<var>$1</var> 사용자 ID는 유효하지 않습니다.",
        "apierror-maxlag-generic": "데이터베이스 서버 대기 중: $1 {{PLURAL:$1|초}} 지연되었습니다.",
        "apierror-maxlag": "$2 대기 중: $1 {{PLURAL:$1|초}} 지연되었습니다.",
+       "apierror-missingcontent-revid": "ID $1 판에 해당하는 내용이 없습니다.",
        "apierror-missingparam": "<var>$1</var> 변수는 설정해야 합니다.",
        "apierror-missingtitle": "지정한 페이지가 존재하지 않습니다.",
        "apierror-missingtitle-byname": "$1 문서가 존재하지 않습니다.",
        "apierror-ratelimited": "속도 제한을 초과했습니다. 잠시 기다렸다가 다시 시도하십시오.",
        "apierror-readapidenied": "이 모듈을 사용하려면 읽기 권한이 필요합니다.",
        "apierror-readonly": "위키는 현재 읽기 전용 모드입니다.",
+       "apierror-revisions-badid": "<var>$1</var> 변수에 대한 판을 발견하지 못했습니다.",
        "apierror-revwrongpage": "r$1은(는) $2의 판이 아닙니다.",
        "apierror-specialpage-cantexecute": "특수 문서의 결과를 볼 권한이 없습니다.",
        "apierror-stashwrongowner": "잘못된 소유자: $1",
index 7db9665..85cab4e 100644 (file)
@@ -1,7 +1,8 @@
 {
        "@metadata": {
                "authors": [
-                       "Purodha"
+                       "Purodha",
+                       "Macofe"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page/de|Dokemäntazjohn]]\n* [[mw:API:FAQ/de|Öff jefrohch]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mäileng_Leß]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Aanköndejonge zom <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i>]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Jemäldte Fähler un Wönsch]\n</div>\n<strong>Status:</strong> Alle op heh dä Sigg aanjzeischte Ußwahle sullte donn, ävver et <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> weed jrahd noch äntwekeld un et kann sesch alle Nahslangs jädd ändere. Holl Der de [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ Mäileng_Leß med Aanköndejonge], öm automattesch övver Neujeschkeite enfommehrt ze wähde.\n\n<strong>Kapodde Aanfrohre:</strong> Wam_mer kapodde Aanfroheaan et API <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> schek, kritt mer ene <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Transfer Protocol\">HTTP</i>-Kopp ußjejovve met däm Täx „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">MediaWiki-API-Error</code>“ dren, dä mer als ene Schlößel bedraachte kann. Mih dohzoh fengk met op dä Sigg [[mw:API:Errors_and_warnings|<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i>: Fähler un Warnonge]].",
        "apihelp-xml-param-includexmlnamespace": "Wann aanjejovve, deihd en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Extensible Markup Language\">XML</i>-Appachtemand derbei.",
        "apihelp-xmlfm-description": "Donn de Dahte em <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Extensible Markup Language\">XML</i>-Fommahd schöhn jemaht met <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Markup Language\">HTML</i> ußjävve.",
        "api-format-title": "Wat et <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> ußjohv.",
-       "api-format-prettyprint-header-only-html": "Dat heh es en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Markup Language\">HTML</i>_Daaschtällong un för et Fähersöhke jedaach. Dadd is för Aanwändongsprojramme nit ze bruche.\n\nEn de [[mw:API|complete Dokkemäntazjohn]] un de [[Special:ApiHelp/main|API Hölp_Sigg]] kam_mer doh mih drövver lässe.",
+       "api-format-prettyprint-header-only-html": "Dat heh es en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Markup Language\">HTML</i>_Daaschtällong un för et Fähersöhke jedaach. Dadd is för Aanwändongsprojramme nit ze bruche.\n\nEn de [[mw:Special:MyLanguage/API|complete Dokkemäntazjohn]] un de [[Special:ApiHelp/main|API Hölp_Sigg]] kam_mer doh mih drövver lässe.",
        "api-pageset-param-titles": "En Leß vun Övverschreffte för ze beärbeide.",
        "api-pageset-param-pageids": "En Leß vun Kännonge vun Sigge för ze beärbeide.",
        "api-pageset-param-revids": "En Leß vun Kännonge vun Väsjohne för ze beärbeide.",
        "api-help-param-multi-max": "De jrühßte müjjelesche Zahl es {{PLURAL:$1|$1}}, un {{PLURAL:$2|$2}} för Botprojramme.",
        "api-help-param-default": "Schtandatt: $1",
        "api-help-param-default-empty": "Schtandatt: <span class=\"apihelp-empty\">(läddesch)</span>",
-       "api-help-param-disabled-in-miser-mode": "Dadd es wäje em [[mw:Manual:$wgMiserMode|miser mode]] affjeschalldt.",
-       "api-help-param-limited-in-miser-mode": "<strong>Opjepaß:</strong> Weil der [[mw:Manual:$wgMiserMode|miser mode]] enjeschalld es, künne heh winnijer wi <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1limit</var> Äjehpneße ußjejejovve wähde, vör em Wigger_Mache. En Jränzfäll künne et Noll sin.",
+       "api-help-param-disabled-in-miser-mode": "Dadd es wäje em [[mw:Special:MyLanguage/Manual:$wgMiserMode|miser mode]] affjeschalldt.",
+       "api-help-param-limited-in-miser-mode": "<strong>Opjepaß:</strong> Weil der [[mw:Special:MyLanguage/Manual:$wgMiserMode|miser mode]] enjeschalld es, künne heh winnijer wi <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1limit</var> Äjehpneße ußjejejovve wähde, vör em Wigger_Mache. En Jränzfäll künne et Noll sin.",
        "api-help-param-direction": "En wälsche Reihjefollsch opleßte:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">newer</code>:De Ählsde et eez. Opjepaß: „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1start</code>“ moß fröhjer sin wi „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1end</code>“.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">older</code>:De Neuste et eez, der Schtanndatt. Opjepaß: „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1start</code>“ moß schpääder sin wi „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1end</code>“.",
        "api-help-param-continue": "Wann mih ze holle es, nemm dat för wigger ze maache.",
        "api-help-param-no-description": "<span class=\"apihelp-empty\">(nix drövver bikannt)</span>",
index 34699d6..4dfd1c7 100644 (file)
        "apihelp-query+search-param-namespace": "Nëmmen an dësen Nummräim sichen.",
        "apihelp-query+search-paramvalue-prop-wordcount": "Setzt d'Zuel vun de Wierder vun der Säit derbäi.",
        "apihelp-query+search-paramvalue-prop-timestamp": "Setzt den Zäitstempel vun der leschter Ännerung vun der Säit derbäi.",
+       "apihelp-query+templates-param-namespace": "Schablounen nëmmen an dësen Nummräim weisen.",
        "apihelp-query+transcludedin-paramvalue-prop-title": "Titel vun all Säit.",
        "apihelp-query+usercontribs-description": "All Ännerunge vun engem Benotzer kréien.",
        "apihelp-query+usercontribs-paramvalue-prop-timestamp": "Setzt den Zäitstempel vun derÄnnerung derbäi.",
        "apihelp-validatepassword-param-password": "Passwuert fir ze validéieren.",
        "apihelp-validatepassword-example-1": "Validéiert d'Passwuert <kbd>foobar</kbd> fir den aktuelle Benotzer.",
        "apihelp-watch-example-watch": "D'Säit <kbd>Main Page</kbd> iwwerwaachen.",
+       "api-login-fail-badsessionprovider": "Net méiglech sech anzelogge mat $1.",
        "api-help-source": "Quell: $1",
        "api-help-source-unknown": "Quell: <span class=\"apihelp-unknown\">onbekannt</span>",
        "api-help-license": "Lizenz: [[$1|$2]]",
        "apierror-invalidcategory": "Den Numm vun der Kategorie deen Dir aginn hutt ass net valabel.",
        "apierror-invalidtitle": "Schlechten Titel \"$1\".",
        "apierror-invaliduserid": "Benotzer ID <var>$1</var> ass net valabel.",
+       "apierror-missingrev-title": "Keng aktuell Versioun vum Titel $1.",
        "apierror-missingtitle": "D'Säit déi Dir spezifizéiert hutt gëtt et net.",
        "apierror-missingtitle-byname": "D'Säit $1 gëtt et net.",
        "apierror-moduledisabled": "De(n) <kbd>$1</kbd> Modul gouf ausgeschalt.",
        "apierror-permissiondenied-generic": "Autorisatioun refuséiert.",
        "apierror-permissiondenied-unblock": "Dir hutt net d'Recht fir d'Spär vu Benotzer opzehiewen.",
        "apierror-readonly": "D'Wiki kann elo just geliest ginn.",
+       "apierror-revisions-badid": "Fir de Parameter <var>$1</var> gouf keng Versioun fonnt.",
        "apierror-revwrongpage": "r$1 ass keng Versioun vu(n) $2.",
        "apierror-stashwrongowner": "Falsche Besëtzer: $1",
        "apierror-systemblocked": "Dir gouft automatesch vu MediaWiki gespaart.",
index 0935c59..f923e18 100644 (file)
@@ -14,6 +14,7 @@
        "apihelp-compare-param-fromid": "Pirmojo lyginamo puslapio ID.",
        "apihelp-compare-param-totitle": "Antrasis pavadinimas palyginimui.",
        "apihelp-compare-param-toid": "Antrojo lyginamo puslapio ID.",
+       "apihelp-compare-param-prop": "Kokią informaciją gauti.",
        "apihelp-createaccount-description": "Kurti naują vartotojo paskyrą.",
        "apihelp-createaccount-param-name": "Naudotojo vardas.",
        "apihelp-createaccount-param-email": "Vartotojo el. pašto adresas (nebūtina).",
index 3045332..fa5dd2a 100644 (file)
        "apihelp-xml-param-includexmlnamespace": "Ако е укажано, додава именски простор XML.",
        "apihelp-xmlfm-description": "Давај го изводот во XML-формат (подобрен испис во HTML).",
        "api-format-title": "Исход од Извршникот на МедијаВики",
-       "api-format-prettyprint-header": "Ова е HTML-претстава на форматот $1. HTML е добар за отстранување на грешки, но не е погоден за употреба во извршник.\n\nУкажете го параметарот <var>format</var> за да го смените изводниот формат. За да ги видите претставите на форматот $1 вон HTML, задајте <kbd>format=$2</kbd>.\n\nПовеќе информации ќе најдете на [[mw:API|целосната документација]], или пак [[Special:ApiHelp/main|помош со извршникот]].",
+       "api-format-prettyprint-header": "Ова е HTML-претстава на форматот $1. HTML е добар за отстранување на грешки, но не е погоден за употреба во извршник.\n\nУкажете го параметарот <var>format</var> за да го смените изводниот формат. За да ги видите претставите на форматот $1 вон HTML, задајте <kbd>format=$2</kbd>.\n\nПовеќе информации ќе најдете на [[mw:Special:MyLanguage/API|целосната документација]], или пак [[Special:ApiHelp/main|помош со извршникот]].",
        "api-pageset-param-titles": "Список на наслови на кои ќе се работи",
        "api-pageset-param-pageids": "Список на назнаки за страници на кои ќе се работи",
        "api-pageset-param-revids": "Список на назнаки на преработки на кои ќе се работи",
        "api-help-param-default-empty": "По основно: <span class=\"apihelp-empty\">(празно)</span>",
        "api-help-param-token": "Шифра „$1“ добиена од [[Special:ApiHelp/query+tokens|action=query&meta=tokens]]",
        "api-help-param-token-webui": "За складност, се прифаќа и шифрата што се користи за обичниот кориснички посредник.",
-       "api-help-param-disabled-in-miser-mode": "Исклучено поради [[mw:Manual:$wgMiserMode|скржавиот режим]].",
-       "api-help-param-limited-in-miser-mode": "<strong>Напомена:</strong> Бидејќи сте во [[mw:Manual:$wgMiserMode|скржав режим]], користејќи го ова може да добиете помалку од <var>$1limit</var> исходни ставки пред да продолжите; во крајни случаи може да не добиете ниедна ставка.",
+       "api-help-param-disabled-in-miser-mode": "Исклучено поради [[mw:Special:MyLanguage/Manual:$wgMiserMode|скржавиот режим]].",
+       "api-help-param-limited-in-miser-mode": "<strong>Напомена:</strong> Бидејќи сте во [[mw:Special:MyLanguage/Manual:$wgMiserMode|скржав режим]], користејќи го ова може да добиете помалку од <var>$1limit</var> исходни ставки пред да продолжите; во крајни случаи може да не добиете ниедна ставка.",
        "api-help-param-direction": "Во која насока да се набројува:\n;понови:Прво најстарите. Напомена: $1start мора да биде пред $1end.\n;постари:Прво најновите (по основно). Напомена: $1start мора да биде подоцна од $1end.",
        "api-help-param-continue": "Употребете го ова за да продолжите кога има повеќе расположиви ставки.",
        "api-help-param-no-description": "<span class=\"apihelp-empty\">(нема опис)</span>",
index 5ba174a..72a5fda 100644 (file)
@@ -9,7 +9,7 @@
                        "Kingu"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Dokumentasjon]]\n* [[mw:Special:MyLanguage/API:FAQ|Ofte stilte spørsmål]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api E-post-liste]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API-kunngjøringer]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Feil & forespørsler]\n</div>\n<strong>Status:</strong> Alle funksjonene som vises på denne siden skal virke, men API-en er fortsatt i aktiv utvikling, og kan bli endret når som helst. Abonner på [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ MediaWiki sin API-kunnkjøringsepostliste] for nyheter om oppdateringer.\n\n<strong>Feile kall:</strong> Hvis det blir sendt feile kall til API-et, blir det sendt en HTTP-header med nøkkelen \"MediaWiki-API-Error\" og da blir både header-verdien og feilkoden sendt tilbake med samme verdi. For mer informasjon se [[mw:API:Errors_and_warnings|API: Feil og advarsler]].\n\n<strong>Testing:</strong> For enkelt å teste API-kall, se [[Special:ApiSandbox]].",
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Dokumentasjon]]\n* [[mw:Special:MyLanguage/API:FAQ|Ofte stilte spørsmål]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api E-post-liste]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API-kunngjøringer]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Feil & forespørsler]\n</div>\n<strong>Status:</strong> Alle funksjonene som vises på denne siden skal virke, men API-en er fortsatt i aktiv utvikling, og kan bli endret når som helst. Abonner på [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ MediaWiki sin API-kunnkjøringsepostliste] for nyheter om oppdateringer.\n\n<strong>Feile kall:</strong> Hvis det blir sendt feile kall til API-et, blir det sendt en HTTP-header med nøkkelen \"MediaWiki-API-Error\" og da blir både header-verdien og feilkoden sendt tilbake med samme verdi. For mer informasjon se [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Feil og advarsler]].\n\n<strong>Testing:</strong> For enkelt å teste API-kall, se [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Hvilken handling skal utføres",
        "apihelp-main-param-format": "Resultatets format.",
        "apihelp-main-param-maxlag": "Maksimal forsinkelse kan brukes når MediaWiki er installert på et database-replikert cluster. For å unngå operasjoner som forårsaker replikasjonsforsinkelser, kan denne parameteren få klienten til å vente til replikasjonsforinkelsen er mindre enn angitt verdi. I tilfelle ytterliggående forsinkelser, blir feilkoden <samp>maxlag</samp> returnert med en melding som <samp>Venter på $host: $lag sekunders forsinkelse</samp>.<br />Se [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manual: Maxlag parameter]] for mer informasjon.",
        "apihelp-main-param-origin": "Når man aksesserer API-en som bruker en domene-kryssende AJAX-forespørsel (CORS), sett denne til det opprinnelige domenet. Denne må tas med i alle pre-flight-forespørsler, og derfor være en del av spørre-URI-en (ikke POST-kroppen).\n\nFor autentiserte forespørsler må denne stemme helt med en av de opprinnelige i <code>Origin</code>-headeren, slik at den må settes til noe a la <kbd>https://en.wikipedia.org</kbd> eller <kbd>https://meta.wikimedia.org</kbd>. Hvis denne parameteren ikke stemmer med <code>Origin</code>-headeren, returneres et 403-svar. Hvis denne parameteren stemmer med <code>Origin</code>-headeren og originalen er hvitlistet, vil <code>Access-Control-Allow-Origin</code> og <code>Access-Control-Allow-Credentials</code>-headere bli satt.\n\nFor ikke-autentiserte forepørsler, spesifiser <kbd>*</kbd>. Denne vil gjøre at <code>Access-Control-Allow-Origin</code>-headeren blir satt, men <code>Access-Control-Allow-Credentials</code> blir <code>false</code> og alle bruerspesifikke data blir begrenset.",
        "apihelp-main-param-uselang": "Språk å bruke for meldingsoversettelser. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> med <kbd>siprop=languages</kbd> returnerer en liste over språkkoder, eller spesifiser <kbd>user</kbd> for å bruke den nåværende brukerens språkpreferanser, eller spesifiser <kbd>content</kbd> for å bruke denne wikiens innholdsspråk.",
        "apihelp-main-param-errorformat": "Formater som kan brukes for advarsels- og feiltekster.\n; plaintext: Wikitext der HTML-tagger er fjernet og elementer byttet ut.\n; wikitext: Ubehandlet wikitext.\n; html: HTML.\n; raw: Meldingsnøkler og -parametre.\n; none: Ingen tekst, bare feilkoder.\n; bc: Format brukt før MediaWiki 1.29. <var>errorlang</var> og <var>errorsuselocal</var> ses bort fra.",
+       "apihelp-main-param-errorlang": "Språk som skal brukes for advarsler og feil. <kbd>[[Specia:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> med <kbd>siprop=languages/<kbd> returnerer ei liste over språkkoder, eller angi <kbd>content</kbd> for å bruke wikiens innholdsspråk, eller angi <kbd>uselang</kbd> for å bruke samme verdi som <var>uselang</var>-parameteren.",
        "apihelp-main-param-errorsuselocal": "Hvis gitt, vil feiltekster bruke lokalt tilpassede meldinger fra {{ns:MediaWiki}}-navnerommet.",
        "apihelp-block-description": "Blokker en bruker.",
        "apihelp-block-param-user": "Brukernavn, IP-adresse eller IP-intervall som skal blokkeres. Kan ikke brukes sammen med <var>$1userid</var>",
+       "apihelp-block-param-userid": "Bruker-ID som skal blokkeres. Kan ikke brukes sammen med <var>$1user</var>.",
        "apihelp-block-param-expiry": "Utløpstid. Kan være relativ (f.eks. <kbd>5 months</kbd> eller <kbd>2 weeks</kbd>) eller absolutt (f.eks. <kbd>2014-09-18T12:34:56Z</kbd>). Om den er satt til <kbd>infinite</kbd>, <kbd>indefinite</kbd> eller <kbd>never</kbd> vil blokkeringen ikke ha noen utløpsdato.",
        "apihelp-block-param-reason": "Årsak for blokkering.",
        "apihelp-block-param-anononly": "Blokker bare anonyme brukere (dvs. hindre anonyme redigeringer fra denne IP-adressen).",
@@ -34,7 +36,7 @@
        "apihelp-block-param-autoblock": "Blokker automatisk sist brukte IP-adresse og alle etterfølgende IP-adresser de prøver å logge inn fra.",
        "apihelp-block-param-noemail": "Hindre brukeren å sende e-post via wikien. (Krever rettigheten <code>blockemail</code>).",
        "apihelp-block-param-hidename": "Skjul brukernavnet fra blokkeringsloggen. (Krever rettigheten <code>hideuser</code>).",
-       "apihelp-block-param-allowusertalk": "La brukeren redigere sin egen diskusjonsside (avhenger av <var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
+       "apihelp-block-param-allowusertalk": "La brukeren redigere sin egen diskusjonsside (avhenger av <var>[[mw:Special:MyLanguage/Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
        "apihelp-block-param-reblock": "Overstyr den gamle blokkeringen om brukeren allerede er blokkert.",
        "apihelp-block-param-watchuser": "Overvåk brukerens eller IP-adressas bruker- og brukerdiskusjonssider.",
        "apihelp-block-param-tags": "Endre taggene slik at de brukes på elementet i blokk-loggen.",
@@ -56,6 +58,9 @@
        "apihelp-compare-param-fromtitle": "Første tittel å sammenligne.",
        "apihelp-compare-param-fromid": "Første side-ID å sammenligne.",
        "apihelp-compare-param-fromrev": "Første revisjon å sammenligne.",
+       "apihelp-compare-param-fromtext": "Bruk denne teksten i stedet for innholdet i revisjonen som angis med <var>fromtitle</var>, <var>fromid</var> eller <var>fromrev</var>.",
+       "apihelp-compare-param-fromcontentmodel": "Innholdsmodell for <var>fromtext</var>. Om den ikke angis vil den gjettes basert på de andre parameterne.",
+       "apihelp-compare-param-fromcontentformat": "Innholdsserialiseringsformat for <var>fromtext</var>.",
        "apihelp-compare-param-totitle": "Andre tittel å sammenligne.",
        "apihelp-compare-param-toid": "Andre side-ID å sammenligne.",
        "apihelp-compare-param-torev": "Andre revisjon å sammenligne.",
index a5291c7..c4e7f89 100644 (file)
        "api-help-param-deprecated": "Verouderd.",
        "api-help-datatypes-header": "Gegevenstypen",
        "api-help-param-default": "Standaard: $1",
+       "api-help-examples": "{{PLURAL:$1|Voorbeeld|Voorbeelden}}:",
        "apierror-autoblocked": "Uw IP-adres is automatisch geblokeerd, omdat het gebruikt is door een geblokkeerde gebruiker.",
        "apierror-badmodule-nosubmodules": "De module <kbd>$1</kbd> heeft geen submodules.",
        "apierror-blockedfrommail": "U bent geblokkeerd en kunt geen emails verzenden.",
index 87cacb9..6bdaaeb 100644 (file)
                        "Woytecr"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Dokumentacja]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista dyskusyjna]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Ogłoszenia dotyczące API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Błędy i propozycje]\n</div>\n<strong>Stan:</strong> Wszystkie funkcje opisane na tej stronie powinny działać, ale API nadal jest aktywnie rozwijane i mogą się zmienić w dowolnym czasie. Subskrybuj [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ listę dyskusyjną mediawiki-api-announce], aby móc na bieżąco dowiadywać się o aktualizacjach.\n\n<strong>Błędne żądania:</strong> Gdy zostanie wysłane błędne żądanie do API, zostanie wysłany w odpowiedzi nagłówek HTTP z kluczem \"MediaWiki-API-Error\" i zarówno jego wartość jak i wartość kodu błędu wysłanego w odpowiedzi będą miały taką samą wartość. Aby uzyskać więcej informacji, zobacz [[mw:API:Errors_and_warnings|API: Błędy i ostrzeżenia]].\n\n<strong>Testowanie:</strong> Aby łatwo testować żądania API, zobacz [[Special:ApiSandbox]].",
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Dokumentacja]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista dyskusyjna]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Ogłoszenia dotyczące API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Błędy i propozycje]\n</div>\n<strong>Stan:</strong> Wszystkie funkcje opisane na tej stronie powinny działać, ale API nadal jest aktywnie rozwijane i mogą się zmienić w dowolnym czasie. Subskrybuj [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ listę dyskusyjną mediawiki-api-announce], aby móc na bieżąco dowiadywać się o aktualizacjach.\n\n<strong>Błędne żądania:</strong> Gdy zostanie wysłane błędne żądanie do API, zostanie wysłany w odpowiedzi nagłówek HTTP z kluczem \"MediaWiki-API-Error\" i zarówno jego wartość jak i wartość kodu błędu wysłanego w odpowiedzi będą miały taką samą wartość. Aby uzyskać więcej informacji, zobacz [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Błędy i ostrzeżenia]].\n\n<strong>Testowanie:</strong> Aby łatwo testować żądania API, zobacz [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Wybierz akcję do wykonania.",
        "apihelp-main-param-format": "Format danych wyjściowych.",
-       "apihelp-main-param-maxlag": "Maksymalne opóźnienie mogą być używane kiedy MediaWiki jest zainstalowana w klastrze zreplikowanej bazy danych. By zapisać działania powodujące większe opóźnienie replikacji, ten parametr może wymusić czekanie u klienta, dopóki opóźnienie replikacji jest mniejsze niż określona wartość. W przypadku nadmiernego opóźnienia, kod błędu <samp>maxlag</samp> jest zwracany z wiadomością jak <samp>Oczekiwanie na $host: $lag sekund opóźnienia</samp>.<br />Zobacz [[mw:Manual:Maxlag_parameter|Podręcznik:Parametr Maxlag]] by uzyskać więcej informacji.",
+       "apihelp-main-param-maxlag": "Maksymalne opóźnienie mogą być używane kiedy MediaWiki jest zainstalowana w klastrze zreplikowanej bazy danych. By zapisać działania powodujące większe opóźnienie replikacji, ten parametr może wymusić czekanie u klienta, dopóki opóźnienie replikacji jest mniejsze niż określona wartość. W przypadku nadmiernego opóźnienia, kod błędu <samp>maxlag</samp> jest zwracany z wiadomością jak <samp>Oczekiwanie na $host: $lag sekund opóźnienia</samp>.<br />Zobacz [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Podręcznik:Parametr Maxlag]] by uzyskać więcej informacji.",
        "apihelp-main-param-smaxage": "Ustaw nagłówek HTTP kontrolujący pamięć podręczną <code>s-maxage</code> na taką ilość sekund. Błędy nie będą nigdy przechowywane w pamięci podręcznej.",
        "apihelp-main-param-maxage": "Ustaw nagłówek HTTP kontrolujący pamięć podręczną <code>maxage</code> na taką ilość sekund. Błędy nie będą nigdy przechowywane w pamięci podręcznej.",
        "apihelp-main-param-assert": "Zweryfikuj, czy użytkownik jest zalogowany, jeżeli wybrano <kbd>user</kbd>, lub czy ma uprawnienia bota, jeżeli wybrano <kbd>bot</kbd>.",
        "apihelp-block-param-nocreate": "Zapobiegnij utworzeniu konta.",
        "apihelp-block-param-autoblock": "Zablokuj ostatni adres IP tego użytkownika i automatycznie wszystkie kolejne, z których będzie się logował.",
        "apihelp-block-param-noemail": "Uniemożliwia użytkownikowi wysyłanie wiadomości e-mail za pośrednictwem interfejsu wiki. (Wymagane uprawnienie <code>blockemail</code>).",
-       "apihelp-block-param-hidename": "Ukryj nazwę użytkownika z rejestru blokad. (Wymagane uprawnienia <code>hideuser</code>)",
+       "apihelp-block-param-hidename": "Ukryj nazwę użytkownika z rejestru blokad. (Wymagane uprawnienie <code>hideuser</code>)",
        "apihelp-block-param-allowusertalk": "Pozwala użytkownikowi edytować własną stronę dyskusji (zależy od <var>[[mw:Special:MyLanguage/Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
        "apihelp-block-param-reblock": "Jeżeli ten użytkownik jest już zablokowany, nadpisz blokadę.",
-       "apihelp-block-param-watchuser": "Obserwuj stronę użytkownika i jego IP oraz ich strony dyskusji.",
+       "apihelp-block-param-watchuser": "Obserwuj stronę użytkownika lub IP oraz ich strony dyskusji.",
        "apihelp-block-example-ip-simple": "Zablokuj IP <kbd>192.0.2.5</kbd> na 3 dni z powodem <kbd>First strike</kbd>.",
        "apihelp-block-example-user-complex": "Zablokuj użytkownika <kbd>Vandal</kbd> na zawsze z powodem <kbd>Vandalism</kbd> i uniemożliw utworzenie nowego konta oraz wysyłanie emaili.",
        "apihelp-changeauthenticationdata-description": "Zmień dane logowania bieżącego użytkownika.",
        "apihelp-compare-param-torev": "Druga wersja do porównania.",
        "apihelp-createaccount-description": "Utwórz nowe konto.",
        "apihelp-createaccount-param-name": "Nazwa użytkownika",
-       "apihelp-createaccount-param-password": "Hasło (ignorowane jeśli <var>$1mailpassword</var> jest ustawione).",
+       "apihelp-createaccount-param-password": "Hasło (ignorowane jeśli ustawiono <var>$1mailpassword</var>).",
        "apihelp-createaccount-param-domain": "Domena uwierzytelniania zewnętrznego (opcjonalnie).",
        "apihelp-createaccount-param-token": "Token tworzenia konta uzyskany w pierwszym zapytaniu.",
        "apihelp-createaccount-param-email": "Adres email użytkownika (opcjonalne).",
        "apihelp-createaccount-param-realname": "Prawdziwe imię i nazwisko użytkownika (opcjonalne).",
-       "apihelp-createaccount-param-reason": "Opcjionalny powód tworzenia konta (aby został umieszczony w logu).",
+       "apihelp-createaccount-param-reason": "Opcjonalny powód tworzenia konta, który zostanie umieszczony w rejestrze.",
        "apihelp-createaccount-example-pass": "Utwórz użytkownika <kbd>testuser</kbd> z hasłem <kbd>test123</kbd>.",
        "apihelp-createaccount-example-mail": "Utwórz użytkownika <kbd>testmailuser</kbd> i wyślij losowo wygenerowane hasło na emaila.",
        "apihelp-delete-description": "Usuń stronę.",
-       "apihelp-delete-param-reason": "Powód usuwania. Jeśli pozostaiwsz to pole puste, zostanie on wygenerowany automatycznie.",
+       "apihelp-delete-param-reason": "Powód usuwania. Jeśli pozostawisz to pole puste, zostanie użyty powód wygenerowany automatycznie.",
        "apihelp-delete-param-watch": "Dodaj stronę do obecnej listy obserwowanych.",
        "apihelp-delete-param-unwatch": "Usuń stronę z obecnej listy obserwowanych.",
        "apihelp-delete-example-simple": "Usuń <kbd>Main Page</kbd>.",
@@ -88,7 +88,7 @@
        "apihelp-edit-param-basetimestamp": "Czas wersji, która jest edytowana. Służy do wykrywania konfliktów edycji. Można pobrać poprzez [[Special:ApiHelp/query+revisions|action=query&prop=revisions&rvprop=timestamp]].",
        "apihelp-edit-param-starttimestamp": "Czas rozpoczęcia procesu edycji. Służy do wykrywania konfliktów edycji. Odpowiednia wartość może być pobrana za pomocą <var>[[Special:ApiHelp/main|curtimestamp]]</var> podczas rozpoczynania procesu edycji (np. podczas ładowania zawartości strony do edycji).",
        "apihelp-edit-param-recreate": "Ignoruj błędy o usunięciu strony w międzyczasie.",
-       "apihelp-edit-param-createonly": "Nie edytuj strony, jesli już istnieje.",
+       "apihelp-edit-param-createonly": "Nie edytuj strony, jeśli już istnieje.",
        "apihelp-edit-param-nocreate": "Zwróć błąd, jeśli strona nie istnieje.",
        "apihelp-edit-param-watch": "Dodaj stronę do listy obserwowanych bieżącego użytkownika.",
        "apihelp-edit-param-unwatch": "Usuń stronę z listy obserwowanych bieżącego użytkownika.",
        "apihelp-edit-example-edit": "Edytuj stronę.",
        "apihelp-edit-example-prepend": "Dopisz <kbd>_&#95;NOTOC_&#95;</kbd> na początku strony.",
        "apihelp-emailuser-description": "Wyślij e‐mail do użytkownika.",
-       "apihelp-emailuser-param-target": "Użytkownik, do którego wysyłany jest e-mail.",
+       "apihelp-emailuser-param-target": "Użytkownik, do którego wysłać e-mail.",
        "apihelp-emailuser-param-subject": "Nagłówek tematu.",
        "apihelp-emailuser-param-text": "Treść emaila.",
        "apihelp-emailuser-param-ccme": "Wyślij kopię wiadomości do mnie.",
        "apihelp-expandtemplates-param-title": "Tytuł strony.",
        "apihelp-expandtemplates-param-text": "Wikitext do przekonwertowania.",
        "apihelp-expandtemplates-param-revid": "ID wersji, dla <nowiki>{{REVISIONID}}</nowiki> i podobnych zmiennych.",
-       "apihelp-expandtemplates-paramvalue-prop-wikitext": "Rozszerzony wikitext.",
+       "apihelp-expandtemplates-paramvalue-prop-wikitext": "Rozwinięty wikitekst.",
        "apihelp-feedcontributions-description": "Zwraca kanał wkładu użytkownika.",
        "apihelp-feedcontributions-param-feedformat": "Format danych wyjściowych.",
        "apihelp-feedcontributions-param-user": "Jakich użytkowników pobrać wkład.",
        "apihelp-imagerotate-example-generator": "Obróć wszystkie obrazki w <kbd>Kategorii:Flip</kbd> o <kbd>180</kbd> stopni.",
        "apihelp-import-param-summary": "Podsumowanie importu rekordów dziennika.",
        "apihelp-import-param-xml": "Przesłany plik XML.",
-       "apihelp-import-param-interwikisource": "Dla importów mediawiki: źródłowa wiki.",
+       "apihelp-import-param-interwikisource": "Dla importów interwiki: wiki, z której importować.",
        "apihelp-import-param-interwikipage": "Dla importów interwiki: strona do importu.",
        "apihelp-import-param-fullhistory": "Dla importów interwiki: importuj całą historię, a nie tylko obecną wersję.",
-       "apihelp-import-param-templates": "Dla importów mediawiki: importuj też wszystkie użyte szablony.",
+       "apihelp-import-param-templates": "Dla importów interwiki: importuj też wszystkie użyte szablony.",
        "apihelp-import-param-namespace": "Importuj do tej przestrzeni nazw. Nie może być użyte razem z <var>$1rootpage</var>.",
        "apihelp-import-param-rootpage": "Importuj jako podstronę tej strony. Nie może być użyte razem z <var>$1namespace</var>.",
        "apihelp-login-param-name": "Nazwa użytkownika.",
        "apihelp-options-example-complex": "Zresetuj wszystkie preferencje, a następnie ustaw <kbd>skin</kbd> i <kbd>nickname</kbd>.",
        "apihelp-paraminfo-description": "Zdobądź informacje o modułach API.",
        "apihelp-paraminfo-param-modules": "Lista nazw modułów (wartości parametrów <var>action</var> i <var>format</var> lub <kbd>main</kbd>). Można określić podmoduły za pomocą <kbd>+</kbd> lub wszystkie podmoduły, wpisując <kbd>+*</kbd>, lub wszystkie podmoduły rekursywnie <kbd>+**</kbd>.",
-       "apihelp-paraminfo-param-helpformat": "Format tekstów pomocnicznych.",
+       "apihelp-paraminfo-param-helpformat": "Format tekstów pomocy.",
        "apihelp-paraminfo-param-querymodules": "Lista nazw modułów zapytań (wartość parametrów <var>prop</var>, <var>meta</var> lub <var>list</var>). Użyj <kbd>$1modules=query+foo</kbd> zamiast <kbd>$1querymodules=foo</kbd>.",
-       "apihelp-parse-param-summary": "Powód do analizy.",
+       "apihelp-parse-param-summary": "Powód do sparsowania.",
        "apihelp-parse-param-prop": "Jakie porcje informacji otrzymać:",
        "apihelp-parse-paramvalue-prop-text": "Przetworzony tekst z wikitekstu.",
        "apihelp-parse-paramvalue-prop-langlinks": "Linki językowe z przetworzonego wikitekstu.",
        "apihelp-parse-paramvalue-prop-externallinks": "Linki zewnętrzne z przetworzonego wikitekstu.",
        "apihelp-parse-paramvalue-prop-sections": "Sekcje z przetworzonego wikitekstu.",
        "apihelp-parse-paramvalue-prop-displaytitle": "Dodaje tytuł parsowanego wikitekstu.",
-       "apihelp-parse-paramvalue-prop-wikitext": "Zwróć oryginalny wikitext, który został przeanalizowany.",
-       "apihelp-parse-param-preview": "Analizuj w trybie podglądu.",
+       "apihelp-parse-paramvalue-prop-wikitext": "Zwróć oryginalny wikitekst, który został sparsowany.",
+       "apihelp-parse-param-preview": "Parsuj w trybie podglądu.",
        "apihelp-parse-param-disabletoc": "Pomiń spis treści na wyjściu.",
        "apihelp-parse-example-page": "Przeanalizuj stronę.",
-       "apihelp-parse-example-text": "Analizuj wikitext.",
-       "apihelp-parse-example-summary": "Analizuj powód.",
+       "apihelp-parse-example-text": "Parsuj wikitekst.",
+       "apihelp-parse-example-summary": "Parsuj powód.",
        "apihelp-patrol-description": "Sprawdź stronę lub edycję.",
-       "apihelp-patrol-param-rcid": "ID ostatnich zmian do patrolowania.",
+       "apihelp-patrol-param-rcid": "ID z ostatnich zmian do oznaczenia jako sprawdzone.",
        "apihelp-patrol-param-revid": "Numer edycji do sprawdzenia.",
        "apihelp-patrol-example-rcid": "Sprawdź ostatnią zmianę.",
        "apihelp-patrol-example-revid": "Sprawdź edycje.",
        "apihelp-purge-param-forcerecursivelinkupdate": "Uaktualnij tabele linków włącznie z linkami dotyczącymi każdej strony wykorzystywanej jako szablon na tej stronie.",
        "apihelp-purge-example-simple": "Wyczyść strony <kbd>Main Page</kbd> i <kbd>API</kbd>.",
        "apihelp-purge-example-generator": "Przeczyść pierwsze 10 stron w przestrzeni głównej.",
-       "apihelp-query+allcategories-description": "Emuluj wszystkie kategorie.",
+       "apihelp-query+allcategories-description": "Wymień wszystkie kategorie.",
        "apihelp-query+allcategories-param-from": "Kategoria, od której rozpocząć wyliczanie.",
        "apihelp-query+allcategories-param-to": "Kategoria, na której zakończyć wyliczanie.",
        "apihelp-query+allcategories-param-dir": "Kierunek sortowania.",
-       "apihelp-query+allcategories-param-limit": "Liczba kategorii do zwórcenia.",
+       "apihelp-query+allcategories-param-limit": "Liczba kategorii do zwcenia.",
        "apihelp-query+allcategories-param-prop": "Jakie właściwości otrzymać:",
        "apihelp-query+allcategories-paramvalue-prop-size": "Dodaje liczbę stron w kategorii.",
        "apihelp-query+allcategories-paramvalue-prop-hidden": "Oznacza kategorie ukryte za pomocą <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Nie może być używane z <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-param-start": "Znacznik czasu, od którego rozpocząć wyliczanie.",
        "apihelp-query+alldeletedrevisions-param-end": "Znacznik czasu, na którym zakończyć wyliczanie.",
-       "apihelp-query+alldeletedrevisions-param-from": "Zacznij nasłuchiwanie na tym tytule.",
-       "apihelp-query+alldeletedrevisions-param-to": "Skończ nasłuchiwanie na tym tytule.",
+       "apihelp-query+alldeletedrevisions-param-from": "Zacznij listowanie na tym tytule.",
+       "apihelp-query+alldeletedrevisions-param-to": "Skończ listowanie na tym tytule.",
        "apihelp-query+alldeletedrevisions-param-prefix": "Szukaj tytułów stron zaczynających się na tę wartość.",
        "apihelp-query+alldeletedrevisions-param-tag": "Pokazuj tylko zmiany oznaczone tym znacznikiem.",
        "apihelp-query+alldeletedrevisions-param-user": "Pokazuj tylko zmiany dokonane przez tego użytkownika.",
        "apihelp-query+alllinks-param-to": "Nazwa linku, na którym zakończyć wyliczanie.",
        "apihelp-query+alllinks-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+alllinks-paramvalue-prop-title": "Dodaje tytuł linku.",
-       "apihelp-query+alllinks-param-namespace": "Przestrzeń nazw do emulacji.",
+       "apihelp-query+alllinks-param-namespace": "Przestrzeń nazw, z której wymieniać.",
        "apihelp-query+alllinks-param-limit": "Łączna liczba obiektów do zwrócenia.",
        "apihelp-query+alllinks-example-unique": "Lista unikatowych tytułów plików.",
        "apihelp-query+allmessages-param-prop": "Właściwości do odczytu.",
        "apihelp-query+allredirects-param-to": "Nazwa przekierowania, na którym zakończyć wyliczanie.",
        "apihelp-query+allredirects-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+allredirects-paramvalue-prop-title": "Dodaje tytuł przekierowania.",
-       "apihelp-query+allredirects-param-namespace": "Przestrzeń nazw do emulacji.",
+       "apihelp-query+allredirects-param-namespace": "Przestrzeń nazw, z której wymieniać.",
        "apihelp-query+allredirects-param-limit": "Łączna liczba obiektów do zwrócenia.",
        "apihelp-query+allrevisions-description": "Wyświetl wszystkie wersje.",
        "apihelp-query+allrevisions-param-start": "Znacznik czasu, od którego rozpocząć wyliczanie.",
        "apihelp-query+mystashedfiles-param-limit": "Liczba plików do pobrania.",
        "apihelp-query+alltransclusions-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+alltransclusions-paramvalue-prop-title": "Dodaje tytuł osadzenia.",
-       "apihelp-query+alltransclusions-param-namespace": "Przestrzeń nazw do emulacji.",
+       "apihelp-query+alltransclusions-param-namespace": "Przestrzeń nazw, z której wymieniać.",
        "apihelp-query+alltransclusions-param-limit": "Łączna liczba elementów do zwrócenia.",
        "apihelp-query+allusers-param-from": "Nazwa użytkownika, od którego rozpocząć wyliczanie.",
        "apihelp-query+allusers-param-to": "Nazwa użytkownika, na którym zakończyć wyliczanie.",
        "apihelp-query+allusers-param-activeusers": "Wyświetl tylko użytkowników, aktywnych w ciągu {{PLURAL:$1|ostatniego dnia|ostatnich $1 dni}}.",
        "apihelp-query+allusers-example-Y": "Wyświetl użytkowników zaczynających się na <kbd>Y</kbd>.",
        "apihelp-query+backlinks-description": "Znajdź wszystkie strony, które linkują do danej strony.",
-       "apihelp-query+backlinks-param-namespace": "Przestrzeń nazw do emulacji.",
+       "apihelp-query+backlinks-param-namespace": "Przestrzeń nazw, z której wymieniać.",
        "apihelp-query+backlinks-example-simple": "Pokazuj linki do <kbd>Main page</kbd>.",
        "apihelp-query+blocks-description": "Lista wszystkich zablokowanych użytkowników i adresów IP.",
        "apihelp-query+blocks-param-start": "Znacznik czasu, od którego rozpocząć wyliczanie.",
        "apihelp-query+categorymembers-param-limit": "Maksymalna liczba zwracanych wyników.",
        "apihelp-query+categorymembers-param-sort": "Sortowanie według właściwości.",
        "apihelp-query+categorymembers-param-dir": "W jakim kierunku sortować.",
-       "apihelp-query+deletedrevisions-param-tag": "Pokazuj tylko zmiany oznaczone tym tagiem.",
+       "apihelp-query+deletedrevisions-param-tag": "Pokazuj tylko zmiany oznaczone tym znacznikiem.",
        "apihelp-query+deletedrevisions-param-user": "Pokazuj tylko zmiany dokonane przez tego użytkownika.",
        "apihelp-query+deletedrevisions-param-excludeuser": "Nie pokazuj zmian dokonanych przez tego użytkownika.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Tryb|Tryby}}: $2",
        "apihelp-query+deletedrevs-param-start": "Znacznik czasu, od którego rozpocząć wyliczanie.",
        "apihelp-query+deletedrevs-param-end": "Znacznik czasu, na którym zakończyć wyliczanie.",
-       "apihelp-query+deletedrevs-param-unique": "Liatuj tylko jedną edycję dla każdej strony.",
-       "apihelp-query+deletedrevs-param-tag": "Pokazuj tylko zmiany oznaczone tym tagiem.",
+       "apihelp-query+deletedrevs-param-unique": "Listuj tylko jedną edycję dla każdej strony.",
+       "apihelp-query+deletedrevs-param-tag": "Pokazuj tylko zmiany oznaczone tym znacznikiem.",
        "apihelp-query+deletedrevs-param-user": "Listuj tylko zmiany dokonane przez tego użytkownika.",
        "apihelp-query+deletedrevs-param-excludeuser": "Nie listuj zmian dokonanych przez tego użytkownika.",
        "apihelp-query+deletedrevs-param-namespace": "Listuj tylko strony z tej przestrzeni nazw.",
        "apihelp-query+deletedrevs-param-limit": "Maksymalna liczba zmian do wylistowania.",
        "apihelp-query+disabled-description": "Ten moduł zapytań został wyłączony.",
-       "apihelp-query+duplicatefiles-example-generated": "Szukaj duplikatów wszystkich plików.",
-       "apihelp-query+embeddedin-param-filterredir": "Jaki filtrować przekierowania.",
+       "apihelp-query+duplicatefiles-example-generated": "Szukaj duplikatów wśród wszystkich plików.",
+       "apihelp-query+embeddedin-param-filterredir": "Jak filtrować przekierowania.",
        "apihelp-query+embeddedin-param-limit": "Łączna liczba stron do zwrócenia.",
        "apihelp-query+extlinks-param-limit": "Liczba linków do zwrócenia.",
        "apihelp-query+exturlusage-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+imageinfo-description": "Zwraca informacje o pliku i historię przesyłania.",
        "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "Dodaje kanoniczny tytuł pliku.",
        "apihelp-query+imageinfo-paramvalue-prop-dimensions": "Alias rozmiaru.",
-       "apihelp-query+imageinfo-paramvalue-prop-sha1": "Dodaj sumę kontrolną SHA-1 dla tego pliku.",
+       "apihelp-query+imageinfo-paramvalue-prop-sha1": "Dołączy sumę kontrolną SHA-1 dla tego pliku.",
        "apihelp-query+imageinfo-paramvalue-prop-mime": "Dodaje typ MIME pliku.",
        "apihelp-query+imageinfo-param-urlheight": "Podobne do $1urlwidth.",
        "apihelp-query+images-param-limit": "Liczba plików do zwrócenia.",
        "apihelp-query+linkshere-paramvalue-prop-title": "Nazwa każdej strony.",
        "apihelp-query+linkshere-paramvalue-prop-redirect": "Oznacz, jeśli strona jest przekierowaniem.",
        "apihelp-query+linkshere-param-limit": "Liczba do zwrócenia.",
-       "apihelp-query+logevents-description": "Pobierz eventy z logu.",
+       "apihelp-query+logevents-description": "Pobierz zdarzenia z rejestru.",
        "apihelp-query+logevents-example-simple": "Lista ostatnich zarejestrowanych zdarzeń.",
        "apihelp-query+pagepropnames-param-limit": "Maksymalna liczba zwracanych nazw.",
        "apihelp-query+pageswithprop-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+protectedtitles-param-namespace": "Listuj tylko strony z tych przestrzeni nazw.",
        "apihelp-query+protectedtitles-param-limit": "Łączna liczba stron do zwrócenia.",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "Dodaje poziom zabezpieczeń.",
-       "apihelp-query+protectedtitles-example-simple": "Lista chronionych nagłówków",
+       "apihelp-query+protectedtitles-example-simple": "Wymień zabezpieczone tytuły.",
        "apihelp-query+querypage-param-page": "Nazwa strony specjalnej. Należy pamiętać o wielkości liter.",
        "apihelp-query+querypage-param-limit": "Liczba zwracanych wyników.",
        "apihelp-query+random-param-namespace": "Zwraca strony tylko w tych przestrzeniach nazw.",
        "apihelp-query+random-example-simple": "Zwraca dwie losowe strony z głównej przestrzeni nazw.",
        "apihelp-query+recentchanges-param-user": "Listuj tylko zmiany dokonane przez tego użytkownika.",
        "apihelp-query+recentchanges-param-excludeuser": "Nie listuj zmian dokonanych przez tego użytkownika.",
-       "apihelp-query+recentchanges-param-tag": "Pokazuj tylko zmiany oznaczone tym tagiem.",
+       "apihelp-query+recentchanges-param-tag": "Pokazuj tylko zmiany oznaczone tym znacznikiem.",
        "apihelp-query+recentchanges-paramvalue-prop-comment": "Dodaje komentarz do edycji.",
        "apihelp-query+recentchanges-example-simple": "Lista ostatnich zmian.",
        "apihelp-query+redirects-description": "Zwraca wszystkie przekierowania do danej strony.",
        "apihelp-query+siteinfo-param-numberingroup": "Wyświetla liczbę użytkowników w grupach użytkowników.",
        "apihelp-query+siteinfo-example-simple": "Pobierz informacje o stronie.",
        "apihelp-query+stashimageinfo-param-sessionkey": "Alias dla $1filekey, dla kompatybilności wstecznej.",
-       "apihelp-query+tags-description": "Lista zmian tagów.",
-       "apihelp-query+tags-param-limit": "Maksymalna liczba tagów do wyświetlenia.",
+       "apihelp-query+tags-description": "Lista znaczników zmian.",
+       "apihelp-query+tags-param-limit": "Maksymalna liczba znaczników do wyświetlenia.",
        "apihelp-query+tags-paramvalue-prop-name": "Dodaje nazwę znacznika.",
        "apihelp-query+tags-paramvalue-prop-displayname": "Dodaje komunikat systemowy dla znacznika.",
        "apihelp-query+tags-paramvalue-prop-description": "Dodaje opis znacznika.",
        "apihelp-query+tags-paramvalue-prop-active": "Czy znacznik jest nadal stosowany.",
-       "apihelp-query+tags-example-simple": "Lista dostęnych tagów.",
+       "apihelp-query+tags-example-simple": "Wymień dostępne znaczniki.",
        "apihelp-query+templates-description": "Zwraca wszystkie strony osadzone w danych stronach.",
        "apihelp-query+templates-param-namespace": "Pokaż szablony tylko w tych przestrzeniach nazw.",
        "apihelp-query+templates-param-limit": "Ile szablonów zwrócić?",
        "apihelp-upload-param-file": "Zawartość pliku.",
        "apihelp-userrights-param-user": "Nazwa użytkownika.",
        "apihelp-userrights-param-userid": "Identyfikator użytkownika.",
-       "apihelp-userrights-param-add": "Dodaj użytkownika do tych grup.",
+       "apihelp-userrights-param-add": "Dodaj użytkownika do tych grup, lub, jeżeli jest już ich członkiem, zmień czas wygaśnięcia członkostwa w tych grupach.",
        "apihelp-userrights-param-remove": "Usuń użytkownika z tych grup.",
        "apihelp-userrights-param-reason": "Powód zmiany.",
        "apihelp-validatepassword-param-password": "Hasło do walidacji.",
index 3d0ea17..a0d2676 100644 (file)
@@ -26,7 +26,7 @@
        "apihelp-main-param-curtimestamp": "Inclui a data atual no resultado.",
        "apihelp-main-param-origin": "Ao acessar a API usando uma solicitação AJAX por domínio cruzado (CORS), defina isto como o domínio de origem. Isto deve estar incluso em toda solicitação ''pre-flight'', sendo portanto parte do URI da solicitação (ao invés do corpo do POST).\n\nPara solicitações autenticadas, isto deve corresponder a uma das origens no cabeçalho <code>Origin</code>, para que seja algo como <kbd>https://pt.wikipedia.org</kbd> ou <kbd>https://meta.wikimedia.org</kbd>. Se este parâmetro não corresponder ao cabeçalho <code>Origin</code>, uma resposta 403 será retornada. Se este parâmetro corresponder ao cabeçalho <code>Origin</code> e a origem for permitida (''whitelisted''), os cabeçalhos <code>Access-Control-Allow-Origin</code> e <code>Access-Control-Allow-Credentials</code> serão definidos.\n\nPara solicitações não autenticadas, especifique o valor <kbd>*</kbd>. Isto fará com que o cabeçalho <code>Access-Control-Allow-Origin</code> seja definido, porém o <code>Access-Control-Allow-Credentials</code> será <code>false</code> e todos os dados específicos para usuários tornar-se-ão restritos.",
        "apihelp-block-description": "Bloquear um usuário",
-       "apihelp-block-param-user": "Nome de usuário, endereço IP ou faixa de IP para bloquear.",
+       "apihelp-block-param-user": "Nome de usuário, endereço IP ou faixa de IP para bloquear. Não pode ser usado junto com <var>$1userid</var>",
        "apihelp-block-param-reason": "Razão do bloqueio.",
        "apihelp-block-param-anononly": "Bloqueia apenas usuários anônimos (ou seja desativa edições anônimas para este endereço IP).",
        "apihelp-block-param-nocreate": "Prevenir a criação de conta.",
@@ -65,7 +65,7 @@
        "apihelp-edit-param-text": "Conteúdo da página",
        "apihelp-edit-param-minor": "Edição menor.",
        "apihelp-edit-param-notminor": "Edição não-menor.",
-       "apihelp-edit-param-bot": "Marcar esta edição como feita por bot.",
+       "apihelp-edit-param-bot": "Marcar esta edição como uma edição de bot.",
        "apihelp-edit-param-createonly": "Não editar a página se já existir.",
        "apihelp-edit-param-nocreate": "Mostra um erro se a página não existir.",
        "apihelp-edit-param-watch": "Adiciona a página para a lista de vigiados do usuário atual.",
        "apihelp-move-description": "Mover uma página.",
        "apihelp-move-param-from": "Título da página para renomear. Não pode ser usado em conjunto com <var>$1fromid</var>.",
        "apihelp-move-param-fromid": "ID da página a se renomear. Não pode ser usado em conjunto com <var>$1from</var>.",
+       "apihelp-move-param-reason": "Motivo para a alteração do nome.",
        "apihelp-move-param-movetalk": "Renomear a página de discussão, se existir.",
        "apihelp-move-param-movesubpages": "Renomeia subpáginas, se aplicável.",
        "apihelp-move-param-noredirect": "Não cria um redirecionamento.",
        "apihelp-query+allfileusages-param-dir": "A direção na qual listar.",
        "apihelp-query+allfileusages-example-unique": "Listar títulos únicos de arquivos",
        "apihelp-query+allfileusages-example-generator": "Obter as páginas contendo os arquivos",
+       "apihelp-query+allimages-description": "Enumera todas as imagens sequencialmente.",
+       "apihelp-query+allimages-param-sort": "Propriedade pela qual ordenar.",
        "apihelp-query+allimages-param-dir": "A direção de listagem.",
        "apihelp-query+allimages-param-user": "Retorna apenas os arquivos enviados por este usuário. Só pode ser usado com $1sort=timestamp. Não pode ser usado em conjunto com $1filterbots.",
        "apihelp-query+allimages-param-filterbots": "Como filtrar arquivos enviados por bots. Só pode ser usado com $1sort=timestamp. Não pode ser usado em conjunto com $1user.",
        "apihelp-query+alltransclusions-param-limit": "Quantos itens retornar.",
        "apihelp-query+alltransclusions-param-dir": "A direção na qual listar.",
        "apihelp-query+allusers-param-prop": "Que informações incluir:",
+       "apihelp-query+allusers-paramvalue-prop-rights": "Lista os direitos que o usuário possui.",
        "apihelp-query+allusers-param-limit": "Quantos nomes de usuário a serem retornados.",
        "apihelp-query+backlinks-param-title": "Título a se pesquisar. Não pode ser usado em conjunto com <var>$1pageid</var>.",
        "apihelp-query+backlinks-param-pageid": "ID da página a se pesquisar. Não pode ser usado em conjunto com <var>$1title</var>.",
        "apihelp-query+revisions-example-first5-not-localhost": "Mostrar as 5 primeiras revisões do <kbd>Main Page</kbd> que não foram feitas pelo usuário anônimo <kbd>127.0.0.1</kbd>.",
        "apihelp-query+revisions-example-first5-user": "Mostrar as 5 primeiras revisões da <kbd>Main Page</kbd> que foram feitas pelo usuário <kbd>MediaWiki default</kbd>.",
        "apihelp-query+revisions+base-param-prop": "Que propriedades mostrar para cada modificação:",
+       "apihelp-query+revisions+base-paramvalue-prop-ids": "O ID da revisão.",
        "apihelp-query+revisions+base-paramvalue-prop-content": "Texto da revisão.",
        "apihelp-query+revisions+base-paramvalue-prop-tags": "Etiquetas para a revisão.",
        "apihelp-query+revisions+base-param-limit": "Limita quantas revisões serão retornadas.",
        "apihelp-query+siteinfo-paramvalue-prop-statistics": "Voltar às estatísticas do site.",
        "apihelp-query+siteinfo-param-numberingroup": "Listar o número de usuários nos grupos de usuário.",
        "apihelp-query+siteinfo-example-simple": "Obter informação do site.",
+       "apihelp-query+tags-param-limit": "O número máximo de tags a serem listadas.",
        "apihelp-query+tags-param-prop": "Quais propriedades obter:",
        "apihelp-query+templates-param-limit": "Quantas predefinições retornar.",
        "apihelp-query+templates-param-dir": "A direção na qual listar.",
        "api-help-parameters": "{{PLURAL:$1|Parâmetro|Parâmetros}}:",
        "api-help-param-deprecated": "Obsoleto",
        "api-help-param-required": "Este parâmetro é obrigatório.",
+       "api-help-param-default": "Padrão: $1",
+       "api-help-param-default-empty": "Padrão: <span class=\"apihelp-empty\">(vazio)</span>",
        "apierror-badurl": "Valor \"$2\" não é válido para o parâmetro <var>$1</var> da URL.",
+       "apierror-cantblock-email": "Você não tem permissão para impedir que os usuários enviem e-mails através da wiki.",
+       "apierror-cantblock": "Você não tem permissão para bloquear usuários.",
+       "apierror-cantchangecontentmodel": "Você não tem permissão para mudar o modelo de conteúdo de uma página.",
+       "apierror-canthide": "Você não tem permissão para ocultar nomes de usuários do registro de bloqueios.",
+       "apierror-cantimport-upload": "Você não tem permissão para importar páginas enviadas.",
+       "apierror-cantimport": "Você não tem permissão para importar páginas.",
+       "apierror-filedoesnotexist": "Arquivo não existe.",
+       "apierror-invalidexpiry": "Tempo de expiração \"$1\" não válido.",
+       "apierror-invalidtitle": "Título incorreto \"$1\".",
+       "apierror-invaliduser": "Nome de usuário \"$1\" é inválido.",
+       "apierror-missingtitle-byname": "A página $1 não existe.",
+       "apierror-mustbeloggedin-generic": "Você deve estar logado.",
+       "apierror-noedit": "Você não tem permissão para editar páginas.",
+       "apierror-noimageredirect": "Você não tem permissão para criar redirecionamentos de imagens.",
+       "apierror-permissiondenied": "Você não tem permissão para $1.",
+       "apierror-permissiondenied-unblock": "Você não tem permissão para desbloquear usuários.",
+       "apierror-specialpage-cantexecute": "Você não tem permissão para ver os resultados desta página especial.",
        "apiwarn-invalidcategory": "\"$1\" não é uma categoria.",
        "apiwarn-invalidtitle": "\"$1\" não é um título válido.",
        "apiwarn-notfile": "\"$1\" não é um arquivo.",
        "apiwarn-tokennotallowed": "A ação \"$1\" não é permitida para o usuário atual.",
+       "api-feed-error-title": "Erro ($1)",
        "api-credits-header": "Créditos"
 }
index c595f24..2c12880 100644 (file)
                        "Felipe L. Ewald"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentação]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista de discussão]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Anúncios da API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Erros e pedidos]\n</div>\n<strong>Estado:</strong> Todas as funcionalidades mostradas nesta página devem ter o comportamento documentado mas a API ainda está em desenvolvimento ativo e pode ser alterada a qualquer momento. Inscreva-se na [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ lista de discussão mediawiki-api-announce] para ser informado acerca das atualizações.\n\n<strong>Pedidos incorretos:</strong> Quando são enviados pedidos incorretos à API, será devolvido um cabeçalho HTTP com a chave \"MediaWiki-API-Error\" e depois tanto o valor desse cabeçalho como o código de erro devolvido serão definidos com o mesmo valor. Para mais informação, consulte [[mw:API:Errors_and_warnings|API:Erros e avisos]].\n\n<strong>Testes:</strong> Para testar facilmente pedidos à API, visite [[Special:ApiSandbox|Testes da API]].",
        "apihelp-main-param-action": "A operação a ser realizada.",
        "apihelp-main-param-format": "O formato do resultado.",
-       "apihelp-main-param-maxlag": "O atraso máximo pode ser usado quando o MediaWiki é instalado num ''cluster'' de bases de dados replicadas. Para impedir que as operações causem ainda mais atrasos de replicação do ''site'', este parâmetro pode fazer o cliente aguardar até que o atraso de replicação seja inferior ao valor especificado. Caso o atraso atual exceda esse valor, o código de erro <samp>maxlag</samp> é devolvido com uma mensagem como <samp>À espera do servidor $host: $lag segundos de atraso</samp>.<br />Consulte [[mw:Manual:Maxlag_parameter|Manual: Parâmetro maxlag]] para mais informações.",
+       "apihelp-main-param-maxlag": "O atraso máximo pode ser usado quando o MediaWiki é instalado num ''cluster'' de bases de dados replicadas. Para impedir que as operações causem ainda mais atrasos de replicação do ''site'', este parâmetro pode fazer o cliente aguardar até que o atraso de replicação seja inferior ao valor especificado. Caso o atraso atual exceda esse valor, o código de erro <samp>maxlag</samp> é devolvido com uma mensagem como <samp>À espera do servidor $host: $lag segundos de atraso</samp>.<br />Consulte [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manual: Parâmetro maxlag]] para mais informações.",
        "apihelp-main-param-smaxage": "Definir no cabeçalho HTTP <code>s-maxage</code> de controlo da ''cache'' este número de segundos. Os erros nunca são armazenados na ''cache''.",
        "apihelp-main-param-maxage": "Definir no cabeçalho HTTP <code>max-age</code> de controlo da ''cache'' este número de segundos. Os erros nunca são armazenados na ''cache''.",
        "apihelp-main-param-assert": "Se definido com o valor <kbd>user</kbd>, verificar que o utilizador está autenticado. Se definido com o valor <kbd>bot</kbd>, verificar que o utilizador tem o privilégio de conta robô.",
@@ -27,7 +26,6 @@
        "apihelp-main-param-errorformat": "O formato a ser usado no texto de avisos e erros.\n; plaintext: Texto wiki com os elementos HTML removidos e as entidades substituídas.\n; wikitext: Texto wiki sem análise sintática.\n; html: HTML.\n; raw: Chave e parâmetros da mensagem.\n; none: Sem saída de texto, só os códigos de erro.\n; bc: Formato usado antes do MediaWiki 1.29. <var>errorlang</var> e <var>errorsuselocal</var> são ignorados.",
        "apihelp-main-param-errorlang": "A língua a ser usada para avisos e erros. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> com <kbd>siprop=languages</kbd> devolve uma lista de códigos de língua, ou especifique <kbd>content</kbd> para usar a língua de conteúdo desta wiki, ou especifique <kbd>uselang</kbd> para usar o mesmo valor que o parâmetro <var>uselang</var>.",
        "apihelp-main-param-errorsuselocal": "Se fornecido, os textos de erro utilizarão mensagens personalizadas localmente do espaço nominal {{ns:MediaWiki}}.",
-       "apihelp-block-description": "Bloquear um utilizador.",
        "apihelp-block-param-user": "O nome de utilizador, endereço IP ou gama de endereços IP a serem bloqueados. Não pode ser usado em conjunto com <var>$1userid</var>",
        "apihelp-block-param-userid": "O identificador do utilizador a ser bloqueado. Não pode ser usado em conjunto com <var>$1user</var>.",
        "apihelp-block-param-expiry": "O período de expiração. Pode ser relativo (p. ex. <kbd>5 meses</kbd> ou <kbd>2 semanas</kbd>) ou absoluto (p. ex. <kbd>2014-09-18T12:34:56Z</kbd>). Se definido como <kbd>infinite</kbd>, <kbd>indefinite</kbd> ou <kbd>never</kbd>, o bloqueio nunca expirará.",
        "apihelp-block-param-autoblock": "Bloquear automaticamente o último endereço IP usado e quaisquer outros endereços IP subsequentes a partir do quais o utilizador tente iniciar uma sessão.",
        "apihelp-block-param-noemail": "Impedir o utilizador de enviar correio eletrónico através da wiki. (Requer o privilégio <code>blockemail</code>).",
        "apihelp-block-param-hidename": "Ocultar o nome do utilizador do registo de bloqueios. (Requer o privilégio <code>hideuser</code>).",
-       "apihelp-block-param-allowusertalk": "Permitir que o utilizador edite a sua própria página de discussão (depende de <var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
+       "apihelp-block-param-allowusertalk": "Permitir que o utilizador edite a sua própria página de discussão (depende de <var>[[mw:Special:MyLanguage/Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
        "apihelp-block-param-reblock": "Se o utilizador já está bloqueado, sobrescrever o bloco existente.",
        "apihelp-block-param-watchuser": "Vigiar as páginas de utilizador e de discussão, do utilizador ou do endereço IP.",
        "apihelp-block-param-tags": "Etiquetas de modificação a aplicar à entrada no registo de bloqueios.",
        "apihelp-block-example-ip-simple": "Bloquear o endereço IP <kbd>192.0.2.5</kbd> por três dias com o motivo <kbd>First strike</kbd>.",
        "apihelp-block-example-user-complex": "Bloquear o utilizador <kbd>Vandal</kbd> indefinidamente com o motivo <kbd>Vandalism</kbd>, e impedir a criação de nova conta e o envio de correio eletrónico.",
-       "apihelp-changeauthenticationdata-description": "Alterar os dados de autenticação do utilizador atual.",
        "apihelp-changeauthenticationdata-example-password": "Tentar alterar a palavra-passe do utilizador atual para <kbd>ExamplePassword</kbd>.",
-       "apihelp-checktoken-description": "Verificar a validade de uma chave a partir de <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-checktoken-param-type": "Tipo de chave que está a ser testado.",
        "apihelp-checktoken-param-token": "Chave a testar.",
        "apihelp-checktoken-param-maxtokenage": "Validade máxima da chave, em segundos.",
        "apihelp-checktoken-example-simple": "Testar a validade de uma chave <kbd>csrf</kbd>.",
-       "apihelp-clearhasmsg-description": "Limpa a indicação <code>hasmsg</code> do utilizador atual.",
        "apihelp-clearhasmsg-example-1": "Limpar a indicação <code>hasmsg</code> do utilizador atual.",
-       "apihelp-clientlogin-description": "Entrar na wiki usando o processo interativo.",
        "apihelp-clientlogin-example-login": "Inicia o processo de entrada na wiki com o utilizador <kbd>Example</kbd> e a palavra-passe <kbd>ExamplePassword</kbd>.",
        "apihelp-clientlogin-example-login2": "Continuar o processo de autenticação após uma resposta  <samp>UI</samp> para autenticação de dois fatores, fornecendo uma <var>OATHToken</var> de <kbd>987654</kbd>.",
-       "apihelp-compare-description": "Obter a diferença entre 2 páginas.\n\nTêm de ser passados um número de revisão, um título de página ou um identificador de página para o \"from\" e o \"to\".",
        "apihelp-compare-param-fromtitle": "Primeiro título a comparar.",
        "apihelp-compare-param-fromid": "Primeiro identificador de página a comparar.",
        "apihelp-compare-param-fromrev": "Primeira revisão a comparar.",
+       "apihelp-compare-param-fromtext": "Usar este texto em vez do conteúdo da revisão especificada por <var>fromtitle</var>, <var>fromid</var> ou <var>fromrev</var>.",
+       "apihelp-compare-param-frompst": "Fazer uma transformação anterior à gravação, de <var>fromtext</var>.",
+       "apihelp-compare-param-fromcontentmodel": "Modelo de conteúdo de <var>fromtext</var>. Se não for fornecido, ele será deduzido a partir dos outros parâmetros.",
+       "apihelp-compare-param-fromcontentformat": "Formato de seriação do conteúdo de <var>fromtext</var>.",
        "apihelp-compare-param-totitle": "Segundo título a comparar.",
        "apihelp-compare-param-toid": "Segundo identificador de página a comparar.",
        "apihelp-compare-param-torev": "Segunda revisão a comparar.",
+       "apihelp-compare-param-torelative": "Usar uma revisão relativa à revisão determinada a partir de <var>fromtitle</var>, <var>fromid</var> ou <var>fromrev</var>. Todas as outras opções 'to' serão ignoradas.",
+       "apihelp-compare-param-totext": "Usar este texto em vez do conteúdo da revisão especificada por <var>totitle</var>, <var>toid</var> ou <var>torev</var>.",
+       "apihelp-compare-param-topst": "Fazer uma transformação anterior à gravação, de <var>totext</var>.",
+       "apihelp-compare-param-tocontentmodel": "Modelo de conteúdo de <var>totext</var>. Se não for fornecido, ele será deduzido a partir dos outros parâmetros.",
+       "apihelp-compare-param-tocontentformat": "Formato de seriação do conteúdo de <var>totext</var>.",
+       "apihelp-compare-param-prop": "As informações que devem ser obtidas.",
+       "apihelp-compare-paramvalue-prop-diff": "O HTML da lista de diferenças.",
+       "apihelp-compare-paramvalue-prop-diffsize": "O tamanho do HTML da lista de diferenças, em bytes.",
+       "apihelp-compare-paramvalue-prop-rel": "Os identificadores da revisão anterior a 'from' e da posterior a 'to', se existirem.",
+       "apihelp-compare-paramvalue-prop-ids": "Os identificadores de página e de revisão das revisões 'from' e 'to'.",
+       "apihelp-compare-paramvalue-prop-title": "Os títulos de página das revisões 'from' e 'to'.",
+       "apihelp-compare-paramvalue-prop-user": "O nome e o identificador de utilizador das revisões 'from' e 'to'.",
+       "apihelp-compare-paramvalue-prop-comment": "O comentário das revisões 'from' e 'to'.",
+       "apihelp-compare-paramvalue-prop-parsedcomment": "O comentário após análise sintática, das revisões 'from' e 'to'.",
+       "apihelp-compare-paramvalue-prop-size": "O tamanho das revisões 'from' e 'to'.",
        "apihelp-compare-example-1": "Criar uma lista de diferenças entre as revisões 1 e 2.",
-       "apihelp-createaccount-description": "Criar uma conta nova.",
        "apihelp-createaccount-param-preservestate": "Se <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> devolveu o valor verdadeiro para <samp>hasprimarypreservedstate</samp>, pedidos marcados como <samp>primary-required</samp> devem ser omitidos. Se devolveu um valor não vazio em <samp>preservedusername</samp>, esse nome de utilizador tem de ser usado no parâmetro <var>username</var>.",
        "apihelp-createaccount-example-create": "Iniciar o processo de criação do utilizador <kbd>Example</kbd> com a palavra-passe <kbd>ExamplePassword</kbd>.",
        "apihelp-createaccount-param-name": "Nome de utilizador.",
        "apihelp-createaccount-param-language": "Código da língua a definir como padrão para o utilizador (opcional, por omissão é a língua de conteúdo).",
        "apihelp-createaccount-example-pass": "Criar o utilizador <kbd>testuser</kbd> com a palavra-passe <kbd>test123</kbd>.",
        "apihelp-createaccount-example-mail": "Criar o utilizador <kbd>testmailuser</kbd> e enviar por correio eletrónico uma palavra-passe gerada aleatoriamente.",
-       "apihelp-cspreport-description": "Usado por '' browsers'' para reportar violações da norma \"Content Security Policy\". Este módulo nunca deve ser usado, exceto quando utilizado automaticamente por um ''browser'' compatível com a CSP.",
        "apihelp-cspreport-param-reportonly": "Marcar como sendo um relatório vindo de uma norma de monitorização e não de uma norma exigida.",
        "apihelp-cspreport-param-source": "Aquilo que gerou o cabeçalho CSP que desencadeou este relatório.",
-       "apihelp-delete-description": "Eliminar uma página.",
        "apihelp-delete-param-title": "Título da página a eliminar. Não pode ser usado em conjunto com <var>$1pageid</var>.",
        "apihelp-delete-param-pageid": "Identificador da página a eliminar. Não pode ser usado em conjunto com <var>$1title</var>.",
        "apihelp-delete-param-reason": "Motivo para a eliminação. Se não for definido, será usado um motivo gerado automaticamente.",
        "apihelp-delete-param-oldimage": "O nome da imagem antiga a ser eliminada, tal como fornecido por [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]].",
        "apihelp-delete-example-simple": "Eliminar a página <kbd>Main Page</kbd>.",
        "apihelp-delete-example-reason": "Eliminar <kbd>Main Page</kbd> com o motivo <kbd>Preparing for move</kbd>.",
-       "apihelp-disabled-description": "Este módulo foi desativado.",
-       "apihelp-edit-description": "Criar e editar páginas.",
        "apihelp-edit-param-title": "Título da página a ser editada. Não pode ser usado em conjunto com <var>$1pageid</var>.",
        "apihelp-edit-param-pageid": "Identificador da página a ser editada. Não pode ser usado em conjunto com <var>$1title</var>.",
        "apihelp-edit-param-section": "Número da secção. <kbd>0</kbd> para a secção de topo, <kbd>new</kbd> para uma secção nova.",
        "apihelp-edit-example-edit": "Editar uma página.",
        "apihelp-edit-example-prepend": "Acrescentar <kbd>_&#95;NOTOC_&#95;</kbd> ao início de uma página.",
        "apihelp-edit-example-undo": "Desfazer desde a revisão 13579 até à 13585 com resumo automático.",
-       "apihelp-emailuser-description": "Enviar correio eletrónico a um utilizador.",
        "apihelp-emailuser-param-target": "Utilizador a quem enviar correio eletrónico.",
        "apihelp-emailuser-param-subject": "Assunto.",
        "apihelp-emailuser-param-text": "Texto.",
        "apihelp-emailuser-param-ccme": "Enviar-me uma cópia desta mensagem.",
        "apihelp-emailuser-example-email": "Enviar uma mensagem de correio ao utilizador <kbd>WikiSysop</kbd> com o texto <kbd>Content</kbd>.",
-       "apihelp-expandtemplates-description": "Expande todas as predefinições incluídas num texto em notação wiki.",
        "apihelp-expandtemplates-param-title": "Título da página.",
        "apihelp-expandtemplates-param-text": "Texto em notação wiki a converter.",
        "apihelp-expandtemplates-param-revid": "Identificador da revisão, para <nowiki>{{REVISIONID}}</nowiki> e variáveis semelhantes.",
        "apihelp-expandtemplates-param-includecomments": "Indica se devem ser incluídos comentários HTML no resultado.",
        "apihelp-expandtemplates-param-generatexml": "Gerar a árvore de análise sintática em XML (substituído por $1prop=parsetree).",
        "apihelp-expandtemplates-example-simple": "Expandir o texto em notação wiki <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd>.",
-       "apihelp-feedcontributions-description": "Devolve um ''feed'' das contribuições do utilizador.",
        "apihelp-feedcontributions-param-feedformat": "O formato do ''feed''.",
        "apihelp-feedcontributions-param-user": "Os utilizadores dos quais serão obtidas as contribuições.",
        "apihelp-feedcontributions-param-namespace": "O espaço nominal pelo qual as contribuições serão filtradas.",
        "apihelp-feedcontributions-param-hideminor": "Ocultar edições menores.",
        "apihelp-feedcontributions-param-showsizediff": "Mostrar diferença de tamanho entre edições.",
        "apihelp-feedcontributions-example-simple": "Devolver as contribuições do utilizador <kbd>Example</kbd>.",
-       "apihelp-feedrecentchanges-description": "Devolve um ''feed'' das mudanças recentes.",
        "apihelp-feedrecentchanges-param-feedformat": "O formato do ''feed''.",
        "apihelp-feedrecentchanges-param-namespace": "O espaço nominal ao qual os resultados serão limitados.",
        "apihelp-feedrecentchanges-param-invert": "Todos os espaços nominais exceto o selecionado.",
        "apihelp-feedrecentchanges-param-categories_any": "Mostrar mudanças nas páginas que estão em qualquer uma destas categorias.",
        "apihelp-feedrecentchanges-example-simple": "Mostrar mudanças recentes.",
        "apihelp-feedrecentchanges-example-30days": "Mostrar as mudanças recentes de 30 dias.",
-       "apihelp-feedwatchlist-description": "Devolve um ''feed'' das páginas vigiadas.",
        "apihelp-feedwatchlist-param-feedformat": "O formato do ''feed''.",
        "apihelp-feedwatchlist-param-hours": "Mostrar as mudanças recentes desde há este número de horas.",
        "apihelp-feedwatchlist-param-linktosections": "Ligar diretamente às secções alteradas, se possível.",
        "apihelp-feedwatchlist-example-default": "Mostrar o ''feed'' das páginas vigiadas.",
        "apihelp-feedwatchlist-example-all6hrs": "Mostrar todas as mudanças às páginas vigiadas nas últimas 6 horas.",
-       "apihelp-filerevert-description": "Reverter um ficheiro para uma versão antiga.",
        "apihelp-filerevert-param-filename": "Nome do ficheiro de destino, sem o prefixo File:.",
        "apihelp-filerevert-param-comment": "Comentário do carregamento.",
        "apihelp-filerevert-param-archivename": "Nome de arquivo da revisão para a qual o ficheiro será revertido.",
        "apihelp-filerevert-example-revert": "Reverter <kbd>Wiki.png</kbd> para a revisão de <kbd>2011-03-05T15:27:40Z</kbd>.",
-       "apihelp-help-description": "Apresentar ajuda para os módulos especificados.",
        "apihelp-help-param-modules": "Módulos para os quais apresentar ajuda (valores dos parâmetros <var>action</var> e <var>format</var>, ou <kbd>main</kbd>). Pode-se especificar submódulos com um <kbd>+</kbd>.",
        "apihelp-help-param-submodules": "Incluir ajuda para submódulos do módulo nomeado.",
        "apihelp-help-param-recursivesubmodules": "Incluir ajuda para os submódulos de forma recursiva.",
        "apihelp-help-example-recursive": "Toda a ajuda numa página.",
        "apihelp-help-example-help": "Ajuda para o próprio módulo de ajuda.",
        "apihelp-help-example-query": "Ajuda para dois submódulos de consulta.",
-       "apihelp-imagerotate-description": "Rodar uma ou mais imagens.",
        "apihelp-imagerotate-param-rotation": "Graus de rotação da imagem no sentido horário.",
        "apihelp-imagerotate-param-tags": "Etiquetas a aplicar à entrada no registo de carregamentos.",
        "apihelp-imagerotate-example-simple": "Rodar <kbd>File:Example.png</kbd> <kbd>90</kbd> graus.",
        "apihelp-imagerotate-example-generator": "Rodar todas as imagens na categoria <kbd>Category:Flip</kbd> em <kbd>180</kbd> graus.",
-       "apihelp-import-description": "Importar uma página de outra wiki ou de um ficheiro XML.\n\nNote que o POST do HTTP tem de ser feito como um carregamento de ficheiro (isto é, com multipart/form-data como Content-Type) ao enviar um ficheiro para o parâmetro <var>xml</var>.",
        "apihelp-import-param-summary": "Resumo da importação para a entrada do registo.",
        "apihelp-import-param-xml": "Ficheiro XML carregado.",
        "apihelp-import-param-interwikisource": "Para importações interwikis: a wiki de onde importar.",
        "apihelp-import-param-rootpage": "Importar como subpágina desta página. Não pode ser usado em conjunto com <var>$1namespace</var>.",
        "apihelp-import-param-tags": "Etiquetas de modificação a aplicar à entrada no registo de importações e à revisão nula nas páginas importadas.",
        "apihelp-import-example-import": "Importar [[meta:Help:ParserFunctions]] para o espaço nominal 100 com o historial completo.",
-       "apihelp-linkaccount-description": "Ligar uma conta de um fornecedor terceiro ao utilizador atual.",
        "apihelp-linkaccount-example-link": "Iniciar o processo de ligação a uma conta do fornecedor <kbd>Example</kbd>.",
-       "apihelp-login-description": "Entrar e obter ''cookies'' de autenticação.\n\nEsta operação só deve ser usada em combinação com [[Special:BotPasswords]]; a sua utilização para entrar com a conta principal é obsoleta e poderá falhar sem aviso. Para entrar com a conta principal de forma segura, use <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
-       "apihelp-login-description-nobotpasswords": "Entrar e obter ''cookies'' de autenticação.\n\nEsta operação é obsoleta e poderá falhar sem aviso. Para entrar de forma segura, use <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
        "apihelp-login-param-name": "Nome de utilizador.",
        "apihelp-login-param-password": "Palavra-passe.",
        "apihelp-login-param-domain": "Domínio (opcional).",
        "apihelp-login-param-token": "Chave de início de sessão obtida no primeiro pedido.",
        "apihelp-login-example-gettoken": "Obter uma chave de início de sessão.",
        "apihelp-login-example-login": "Entrar.",
-       "apihelp-logout-description": "Terminar a sessão e limpar os dados da sessão.",
        "apihelp-logout-example-logout": "Terminar a sessão do utilizador atual.",
-       "apihelp-managetags-description": "Executar tarefas de gestão relacionadas com etiquetas de modificação.",
        "apihelp-managetags-param-operation": "A operação que será realizada:\n;create:Criar uma nova etiqueta de modificação para uso manual.\n;delete:Remover da base de dados uma etiqueta de modificação, incluindo remover a etiqueta de todas as revisões, entradas nas mudanças recentes e entradas do registo onde ela é utilizada.\n;activate:Ativar uma etiqueta de modificação, permitindo que os utilizadores a apliquem manualmente.\n;deactivate:Desativar uma etiqueta de modificação, impedindo que os utilizadores a apliquem manualmente.",
        "apihelp-managetags-param-tag": "Etiqueta a ser criada, eliminada, ativada ou desativada. Para criar uma etiqueta ela não pode existir. Para eliminar uma etiqueta, ela tem de existir. Para ativar uma etiqueta, ela tem de existir e não estar a ser utilizada por nenhuma extensão. Para desativar uma etiqueta, ela tem de estar ativa e definida manualmente.",
        "apihelp-managetags-param-reason": "Um motivo, opcional, para a criação, eliminação, ativação ou desativação da etiqueta.",
        "apihelp-managetags-example-delete": "Eliminar a etiqueta <kbd>vandlaism</kbd> com o motivo <kbd>Misspelt</kbd>",
        "apihelp-managetags-example-activate": "Ativar uma etiqueta com o nome <kbd>spam</kbd> e o motivo <kbd>For use in edit patrolling</kbd>",
        "apihelp-managetags-example-deactivate": "Desativar uma etiqueta com o nome <kbd>spam</kbd> e o motivo <kbd>No longer required</kbd>",
-       "apihelp-mergehistory-description": "Fundir o historial de páginas.",
        "apihelp-mergehistory-param-from": "Título da página cujo historial será fundido. Não pode ser usado em conjunto com <var>$1fromid</var>.",
        "apihelp-mergehistory-param-fromid": "Identificador da página cujo historial será fundido. Não pode ser usado em conjunto com <var>$1from</var>.",
        "apihelp-mergehistory-param-to": "Título da página à qual o historial será fundido. Não pode ser usado em conjunto com <var>$1toid</var>.",
        "apihelp-mergehistory-param-reason": "Motivo para fundir o historial.",
        "apihelp-mergehistory-example-merge": "Fundir todo o historial da página <kbd>Oldpage</kbd> com o da página <kbd>Newpage</kbd>.",
        "apihelp-mergehistory-example-merge-timestamp": "Fundir as revisões de <kbd>Oldpage</kbd> até à data e hora <kbd>2015-12-31T04:37:41Z</kbd> com <kbd>Newpage</kbd>.",
-       "apihelp-move-description": "Mover uma página.",
        "apihelp-move-param-from": "Título da página cujo nome será alterado. Não pode ser usado em conjunto com <var>$1fromid</var>.",
        "apihelp-move-param-fromid": "Identificador da página cujo nome será alterado. Não pode ser usado em conjunto com <var>$1from</var>.",
        "apihelp-move-param-to": "Novo título da página.",
        "apihelp-move-param-ignorewarnings": "Ignorar quaisquer avisos.",
        "apihelp-move-param-tags": "Etiquetas de modificação a aplicar à entrada no registo de movimentações e à revisão nula na página de destino.",
        "apihelp-move-example-move": "Mover <kbd>Badtitle</kbd> para <kbd>Goodtitle</kbd> sem deixar um redirecionamento.",
-       "apihelp-opensearch-description": "Pesquisar a wiki usando o protocolo OpenSearch.",
        "apihelp-opensearch-param-search": "Texto a pesquisar.",
        "apihelp-opensearch-param-limit": "O número máximo de resultados a serem devolvidos.",
        "apihelp-opensearch-param-namespace": "Espaços nominais a pesquisar.",
-       "apihelp-opensearch-param-suggest": "Não fazer nada se <var>[[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> for falso.",
+       "apihelp-opensearch-param-suggest": "Não fazer nada se <var>[[mw:Special:MyLanguage/Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> for falso.",
        "apihelp-opensearch-param-redirects": "Como tratar redirecionamentos:\n;return:Devolver o próprio redirecionamento.\n;resolve:Devolver a página de destino. Pode devolver menos de $1limit resultados.\nPor razões históricas, o valor por omissão é \"return\" para o formato $1format=json e \"resolve\" para outros formatos.",
        "apihelp-opensearch-param-format": "O formato do resultado.",
        "apihelp-opensearch-param-warningsaserror": "Se forem gerados avisos com <kbd>format=json</kbd>, devolver um erro da API em vez de ignorá-los.",
        "apihelp-opensearch-example-te": "Encontrar as páginas que começam por <kbd>Te</kbd>.",
-       "apihelp-options-description": "Alterar as preferências do utilizador atual.\n\nSó podem ser definidas as opções que estão registadas no núcleo do MediaWiki ou numa das extensões instaladas, ou opções cuja chave tem o prefixo <code>userjs-</code> (que são supostas ser usadas por ''scripts'' de utilizador).",
        "apihelp-options-param-reset": "Reiniciar preferências para os valores por omissão do ''site''.",
        "apihelp-options-param-resetkinds": "Lista dos tipos de opções a reiniciar quando a opção <var>$1reset</var> está definida.",
        "apihelp-options-param-change": "Listas das alterações, na forma nome=valor (isto é, skin=vector). Se não for fornecido nenhum valor (nem sequer um sinal de igualdade), por exemplo, nomedaopção|outraopção|..., a opção será reiniciada para o seu valor por omissão. Se qualquer dos valores passados contém uma barra vertical (<kbd>|</kbd>), use um [[Special:ApiHelp/main#main/datatypes|separador alternativo para valores múltiplos]] de forma a obter o comportamento correto.",
        "apihelp-options-example-reset": "Reiniciar todas as preferências.",
        "apihelp-options-example-change": "Alterar as preferências <kbd>skin</kbd> e <kbd>hideminor</kbd>.",
        "apihelp-options-example-complex": "Reiniciar todas as preferências e depois definir <kbd>skin</kbd> e <kbd>nickname</kbd>.",
-       "apihelp-paraminfo-description": "Obter informação sobre os módulos da API.",
        "apihelp-paraminfo-param-modules": "Lista dos nomes dos módulos (valores dos parâmetros <var>action</var> e <var>format</var>, ou <kbd>main</kbd>). Podem ser especificados submódulos com <kbd>+</kbd>, ou todos os submódulos com <kbd>+*</kbd>, ou todos os submódulos de forma recursiva com <kbd>+**</kbd>.",
        "apihelp-paraminfo-param-helpformat": "Formato dos textos de ajuda.",
        "apihelp-paraminfo-param-querymodules": "Lista de nomes dos módulos a consultar (valores dos parâmetros <var>prop</var>, <var>meta</var> ou <var>list</var>). Usar <kbd>$1modules=query+foo</kbd> em vez de <kbd>$1querymodules=foo</kbd>.",
        "apihelp-paraminfo-param-formatmodules": "Lista de nomes de módulos de formato (valor do parâmetro <var>format</var>). Em vez de usá-lo, use <var>$1modules</var>.",
        "apihelp-paraminfo-example-1": "Mostrar informação para <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> e <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>.",
        "apihelp-paraminfo-example-2": "Mostrar informação de todos os módulos de <kbd>[[Special:ApiHelp/query|action=query]]</kbd>.",
-       "apihelp-parse-description": "Faz a análise sintática do conteúdo e devolve o resultado da análise.\n\nConsulte os vários módulos disponíveis no parâmetro prop de <kbd>[[Special:ApiHelp/query|action=query]]</kbd> para obter informação da versão atual de uma página.\n\nHá várias formas de especificar o texto a analisar:\n# Especificar uma página ou revisão, usando <var>$1page</var>, <var>$1pageid</var> ou <var>$1oldid</var>.\n# Especificar o conteúdo de forma explícita, usando <var>$1text</var>, <var>$1title</var> e <var>$1contentmodel</var>.\n# Especificar só um resumo a analisar. <var>$1prop</var> deve receber o valor vazio.",
        "apihelp-parse-param-title": "Título da página à qual o texto pertence. Se omitido, é preciso especificar <var>$1contentmodel</var> e deve usar [[API]] como título.",
        "apihelp-parse-param-text": "Texto a analisar. Usar <var>$1title</var> ou <var>$1contentmodel</var> para controlar o modelo de conteúdo.",
        "apihelp-parse-param-summary": "Resumo a analisar.",
        "apihelp-parse-paramvalue-prop-limitreportdata": "Fornece o relatório de limites de forma estruturada. Não fornece dados quando <var>$1disablelimitreport</var> está definido.",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "Fornece a versão HTML do relatório de limites. Não fornece dados quando <var>$1disablelimitreport</var> está definido.",
        "apihelp-parse-paramvalue-prop-parsetree": "A árvore de análise XML do conteúdo da revisão (requer o modelo de conteúdo <code>$1</code>).",
-       "apihelp-parse-param-pst": "Fazer uma transformação de pré-gravação ao texto de entrada, antes de analisá-lo. Só é válido quando usado com texto.",
-       "apihelp-parse-param-onlypst": "Fazer uma transformação de pré-gravação (PST, ''pre-save transform'') ao texto de entrada, mas não o analisar. Devolve o mesmo texto após aplicação da PST. Só é válido quando usado com <var>$1text</var>.",
+       "apihelp-parse-paramvalue-prop-parsewarnings": "Fornece os avisos gerados durante a análise sintática do conteúdo.",
+       "apihelp-parse-param-wrapoutputclass": "A classe CSS a utilizar para envolver o resultado do analisador sintático.",
+       "apihelp-parse-param-pst": "Fazer uma transformação anterior à gravação do texto de entrada, antes de analisá-lo. Só é válido quando usado com texto.",
+       "apihelp-parse-param-onlypst": "Fazer uma transformação anterior à gravação (PST, ''pre-save transform'') do texto de entrada, mas não o analisar. Devolve o mesmo texto após aplicação da PST. Só é válido quando usado com <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Inclui links interlínguas fornecidos por extensões (para ser usado com <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-section": "Analisar apenas o conteúdo desta secção.\n\nQuando tiver o valor <kbd>new</kbd>, analisar <var>$1text</var> e <var>$1sectiontitle</var> como se fosse adicionar uma nova secção à página.\n\n<kbd>new</kbd> só é permitido quando se especifica <var>text</var>.",
        "apihelp-parse-param-sectiontitle": "O novo título da secção quando <var>section</var> tem o valor <kbd>new</kbd>.\n\nAo contrário da edição de páginas, este não toma o valor de <var>summary</var> se for omitido ou estiver vazio.",
        "apihelp-parse-param-preview": "Executar a análise em modo de antevisão.",
        "apihelp-parse-param-sectionpreview": "Executar a análise em modo de antevisão (também ativa o modo de antevisão).",
        "apihelp-parse-param-disabletoc": "Omitir a tabela de conteúdo no resultado.",
+       "apihelp-parse-param-useskin": "Aplicar o tema selecionado ao resultado do analisador sintático. Pode afetar as seguintes propriedades: <kbd>langlinks</kbd>, <kbd>headitems</kbd>, <kbd>modules</kbd>, <kbd>jsconfigvars</kbd>, <kbd>indicators</kbd>.",
        "apihelp-parse-param-contentformat": "O formato da seriação de conteúdo, usado para o texto de entrada. Só é válido quando usado com $1text.",
        "apihelp-parse-param-contentmodel": "Modelo de conteúdo do texto de entrada. Se omitido, $1title tem de ser especificado e o valor por omissão será o modelo do título especificado. Só é válido quando usado com $1text.",
        "apihelp-parse-example-page": "Fazer a análise sintática de uma página.",
        "apihelp-parse-example-text": "Fazer a análise sintática do texto com notação wiki.",
        "apihelp-parse-example-texttitle": "Fazer a análise sintática do texto com notação wiki, especificando o título da página.",
        "apihelp-parse-example-summary": "Fazer a análise sintática de um resumo.",
-       "apihelp-patrol-description": "Patrulhar uma página ou revisão.",
        "apihelp-patrol-param-rcid": "Identificador da mudança recente a patrulhar.",
        "apihelp-patrol-param-revid": "Identificador da revisão a patrulhar.",
        "apihelp-patrol-param-tags": "Etiquetas de modificação a aplicar à entrada no registo de edições patrulhadas.",
        "apihelp-patrol-example-rcid": "Patrulhar uma mudança recente.",
        "apihelp-patrol-example-revid": "Patrulhar uma revisão.",
-       "apihelp-protect-description": "Alterar o nível de proteção de uma página.",
        "apihelp-protect-param-title": "Título da página a proteger ou desproteger. Não pode ser usado em conjunto com $1pageid.",
        "apihelp-protect-param-pageid": "Identificador da página a proteger ou desproteger. Não pode ser usado em conjunto com $1title.",
        "apihelp-protect-param-protections": "Lista de níveis de proteção, na forma <kbd>action=level</kbd> (por exemplo, <kbd>edit=sysop</kbd>). O nível <kbd>all</kbd> significada que todos podem executar a operação, isto é, sem restrição.\n\n<strong>Nota:</strong> Serão removidas as restrições de quaisquer operações não listadas.",
        "apihelp-protect-example-protect": "Proteger uma página.",
        "apihelp-protect-example-unprotect": "Desproteger uma página definindo a restrição <kbd>all</kbd> (isto é, todos podem executar a operação).",
        "apihelp-protect-example-unprotect2": "Desproteger uma página definindo que não há restrições.",
-       "apihelp-purge-description": "Limpar a ''cache'' para os títulos especificados.",
        "apihelp-purge-param-forcelinkupdate": "Atualizar as tabelas de ligações.",
        "apihelp-purge-param-forcerecursivelinkupdate": "Atualizar a tabela de ligações, e atualizar as tabelas de ligações de qualquer página que usa esta página como modelo.",
        "apihelp-purge-example-simple": "Purgar as páginas <kbd>Main Page</kbd> e <kbd>API</kbd>.",
        "apihelp-purge-example-generator": "Purgar as primeiras 10 páginas no espaço nominal principal.",
-       "apihelp-query-description": "Obter dados do MediaWiki e acerca dele.\n\nTodas as modificações de dados têm primeiro que usar um pedido para adquirir uma chave, de forma a impedir ações abusivas de ''sites'' maliciosos.",
        "apihelp-query-param-prop": "As propriedades a serem obtidas para as páginas consultadas.",
        "apihelp-query-param-list": "As listas a serem obtidas.",
        "apihelp-query-param-meta": "Os metadados a serem obtidos.",
        "apihelp-query-param-rawcontinue": "Devolver os dados em bruto de <samp>query-continue</samp> para continuar.",
        "apihelp-query-example-revisions": "Obter [[Special:ApiHelp/query+siteinfo|informação do ''site'']] e as [[Special:ApiHelp/query+revisions|revisões]] da página <kbd>Main Page</kbd>.",
        "apihelp-query-example-allpages": "Obter as revisões das páginas que começam por <kbd>API/</kbd>.",
-       "apihelp-query+allcategories-description": "Enumerar todas as categorias.",
        "apihelp-query+allcategories-param-from": "A categoria a partir da qual será começada a enumeração.",
        "apihelp-query+allcategories-param-to": "A categoria na qual será terminada a enumeração.",
        "apihelp-query+allcategories-param-prefix": "Procurar todos os títulos de categorias que começam por este valor.",
        "apihelp-query+allcategories-paramvalue-prop-hidden": "Etiqueta as categorias ocultadas com <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+allcategories-example-size": "Lista as categorias com informação sobre o número de páginas em cada uma delas.",
        "apihelp-query+allcategories-example-generator": "Obter informação sobre a própria página de categoria, para as categorias que começam por <kbd>List</kbd>.",
-       "apihelp-query+alldeletedrevisions-description": "Listar todas as revisões eliminadas por um utilizador ou de um espaço nominal.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Só pode ser usado com <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Não pode ser usado com <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-param-start": "A data e hora da revisão a partir da qual será começada a enumeração.",
        "apihelp-query+alldeletedrevisions-param-user": "Listar só as revisões feitas por este utilizador.",
        "apihelp-query+alldeletedrevisions-param-excludeuser": "Não listar as revisões feitas por este utilizador.",
        "apihelp-query+alldeletedrevisions-param-namespace": "Listar só as páginas neste espaço nominal.",
-       "apihelp-query+alldeletedrevisions-param-miser-user-namespace": "<strong>Nota:</strong> Devido ao [[mw:Manual:$wgMiserMode|modo avarento]], o uso de <var>$1user</var> e <var>$1namespace</var> em conjunto pode resultar na devolução de menos de <var>$1limit</var> resultados antes de continuar; em casos extremos pode não ser devolvido qualquer resultado.",
+       "apihelp-query+alldeletedrevisions-param-miser-user-namespace": "<strong>Nota:</strong> Devido ao [[mw:Special:MyLanguage/Manual:$wgMiserMode|modo avarento]], o uso de <var>$1user</var> e <var>$1namespace</var> em conjunto pode resultar na devolução de menos de <var>$1limit</var> resultados antes de continuar; em casos extremos pode não ser devolvido qualquer resultado.",
        "apihelp-query+alldeletedrevisions-param-generatetitles": "Ao ser usado como gerador, gerar títulos em vez de identificadores de revisões.",
        "apihelp-query+alldeletedrevisions-example-user": "Listar as últimas 50 contribuições eliminadas do utilizador <kbd>Example</kbd>.",
        "apihelp-query+alldeletedrevisions-example-ns-main": "Listar as primeiras 50 revisões eliminadas no espaço nominal principal.",
-       "apihelp-query+allfileusages-description": "Listar todas as utilizações de ficheiros, incluindo ficheiros que não existam.",
        "apihelp-query+allfileusages-param-from": "O título do ficheiro a partir do qual será começada a enumeração.",
        "apihelp-query+allfileusages-param-to": "O título do ficheiro no qual será terminada a enumeração.",
        "apihelp-query+allfileusages-param-prefix": "Procurar todos os títulos de ficheiro que começam por este valor.",
        "apihelp-query+allfileusages-example-unique": "Listar os títulos de ficheiro únicos.",
        "apihelp-query+allfileusages-example-unique-generator": "Obtém todos os títulos de ficheiros, marcando aqueles em falta.",
        "apihelp-query+allfileusages-example-generator": "Obtém as páginas que contêm os ficheiros.",
-       "apihelp-query+allimages-description": "Enumerar todas as imagens sequencialmente.",
        "apihelp-query+allimages-param-sort": "Propriedade pela qual fazer a ordenação.",
        "apihelp-query+allimages-param-dir": "A direção de listagem.",
        "apihelp-query+allimages-param-from": "O título da imagem a partir do qual será começada a enumeração. Só pode ser usado com $1sort=name.",
        "apihelp-query+allimages-example-recent": "Mostrar uma lista dos ficheiros carregados recentemente, semelhante a [[Special:NewFiles]].",
        "apihelp-query+allimages-example-mimetypes": "Mostrar uma lista dos ficheiros com os tipos MIME <kbd>image/png</kbd> ou <kbd>image/gif</kbd>.",
        "apihelp-query+allimages-example-generator": "Mostrar informação sobre 4 ficheiros, começando pela letra <kbd>T</kbd>.",
-       "apihelp-query+alllinks-description": "Enumerar todos os ''links'' que apontam para um determinado espaço nominal.",
        "apihelp-query+alllinks-param-from": "O título do ''link'' a partir do qual será começada a enumeração.",
        "apihelp-query+alllinks-param-to": "O título do ''link'' no qual será terminada a enumeração.",
        "apihelp-query+alllinks-param-prefix": "Procurar todos os títulos ligados que começam por este valor.",
        "apihelp-query+alllinks-example-unique": "Listar os títulos únicos para os quais existem ligações.",
        "apihelp-query+alllinks-example-unique-generator": "Obtém todos os títulos para os quais existem ligações, marcando aqueles em falta.",
        "apihelp-query+alllinks-example-generator": "Obtém as páginas que contêm as ligações.",
-       "apihelp-query+allmessages-description": "Devolver as mensagens deste ''site''.",
        "apihelp-query+allmessages-param-messages": "Mensagens a serem produzidas no resultado. <kbd>*</kbd> (o valor por omissão) significa todas as mensagens.",
        "apihelp-query+allmessages-param-prop": "As propriedades a serem obtidas:",
        "apihelp-query+allmessages-param-enableparser": "Definir, para ativar o analisador sintático e pré-processar o texto da mensagem com notação wiki (substituir palavras mágicas, processar predefinições, etc.).",
        "apihelp-query+allmessages-param-prefix": "Devolver as mensagens com este prefixo.",
        "apihelp-query+allmessages-example-ipb": "Mostrar mensagens que começam por <kbd>ipb-</kbd>.",
        "apihelp-query+allmessages-example-de": "Mostrar as mensagens <kbd>august</kbd> e <kbd>mainpage</kbd> em Alemão.",
-       "apihelp-query+allpages-description": "Enumerar sequencialmente todas as páginas de um determinado espaço nominal.",
        "apihelp-query+allpages-param-from": "O título de página a partir do qual será começada a enumeração.",
        "apihelp-query+allpages-param-to": "O título de página no qual será terminada a enumeração.",
        "apihelp-query+allpages-param-prefix": "Procurar todos os títulos de páginas que comecem com este valor.",
        "apihelp-query+allpages-example-B": "Mostrar uma lista de páginas, começando na letra <kbd>B</kbd>.",
        "apihelp-query+allpages-example-generator": "Mostrar informação sobre 4 páginas, começando na letra <kbd>T</kbd>.",
        "apihelp-query+allpages-example-generator-revisions": "Mostrar o conteúdo das primeiras 2 páginas que não sejam redirecionamentos, começando na página <kbd>Re</kbd>.",
-       "apihelp-query+allredirects-description": "Listar todos os redirecionamentos para um espaço nominal.",
        "apihelp-query+allredirects-param-from": "O título do redirecionamento a partir do qual será começada a enumeração.",
        "apihelp-query+allredirects-param-to": "O título do redirecionamento no qual será terminada a enumeração.",
        "apihelp-query+allredirects-param-prefix": "Procurar todas as páginas de destino que começam por este valor.",
        "apihelp-query+allredirects-example-unique": "Listar as páginas de destino únicas.",
        "apihelp-query+allredirects-example-unique-generator": "Obtém todas as páginas de destino, marcando aquelas em falta.",
        "apihelp-query+allredirects-example-generator": "Obtém as páginas que contêm os redirecionamentos.",
-       "apihelp-query+allrevisions-description": "Listar todas as revisões.",
        "apihelp-query+allrevisions-param-start": "A data e hora a partir da qual será começada a enumeração.",
        "apihelp-query+allrevisions-param-end": "A data e hora na qual será terminada a enumeração.",
        "apihelp-query+allrevisions-param-user": "Listar só as revisões deste utilizador.",
        "apihelp-query+allrevisions-param-generatetitles": "Ao ser usado como gerador, gerar títulos em vez de identificadores de revisões.",
        "apihelp-query+allrevisions-example-user": "Listar as últimas 50 contribuições do utilizador <kbd>Example</kbd>.",
        "apihelp-query+allrevisions-example-ns-main": "Listar as primeiras 50 revisões no espaço nominal principal.",
-       "apihelp-query+mystashedfiles-description": "Obter uma lista dos ficheiros que estão na área de ficheiros escondidos do utilizador atual.",
        "apihelp-query+mystashedfiles-param-prop": "As propriedades a serem obtidas para os ficheiros.",
        "apihelp-query+mystashedfiles-paramvalue-prop-size": "Obter o tamanho do ficheiro e as dimensões da imagem.",
        "apihelp-query+mystashedfiles-paramvalue-prop-type": "Obter o tipo MIME e o tipo de multimédia do ficheiro.",
        "apihelp-query+mystashedfiles-param-limit": "Quantos ficheiros a serem obtidos.",
        "apihelp-query+mystashedfiles-example-simple": "Obter a chave, o tamanho e as dimensões em píxeis dos ficheiros na área de ficheiros escondidos do utilizador.",
-       "apihelp-query+alltransclusions-description": "Listar todas as transclusões (páginas incorporadas utilizando &#123;&#123;x&#125;&#125;), incluindo as que estejam em falta.",
        "apihelp-query+alltransclusions-param-from": "O título da transclusão a partir do qual será começada a enumeração.",
        "apihelp-query+alltransclusions-param-to": "O título da transclusão no qual será terminada a enumeração.",
        "apihelp-query+alltransclusions-param-prefix": "Procurar todos os títulos transcluídos que começam por este valor.",
        "apihelp-query+alltransclusions-example-unique": "Listar os títulos transcluídos únicos.",
        "apihelp-query+alltransclusions-example-unique-generator": "Obtém todos os títulos transcluídos, marcando aqueles em falta.",
        "apihelp-query+alltransclusions-example-generator": "Obtém as páginas que contêm as transclusões.",
-       "apihelp-query+allusers-description": "Enumerar todos os utilizadores registados.",
        "apihelp-query+allusers-param-from": "O nome de utilizador a partir do qual será começada a enumeração.",
        "apihelp-query+allusers-param-to": "O nome de utilizador no qual será terminada a enumeração.",
        "apihelp-query+allusers-param-prefix": "Procurar todos os nomes de utilizador que começam por este valor.",
        "apihelp-query+allusers-param-activeusers": "Listar só os utilizadores ativos {{PLURAL:$1|no último dia|nos últimos $1 dias}}.",
        "apihelp-query+allusers-param-attachedwiki": "Com <kbd>$1prop=centralids</kbd>, indicar também se o utilizador tem ligação com a wiki designada por este identificador.",
        "apihelp-query+allusers-example-Y": "Listar utilizadores, começando pelo <kbd>Y</kbd>.",
-       "apihelp-query+authmanagerinfo-description": "Obter informação sobre o atual estado de autenticação.",
        "apihelp-query+authmanagerinfo-param-securitysensitiveoperation": "Testar se o estado atual de autenticação do utilizador é suficiente para a operação especificada, que exige condições seguras.",
        "apihelp-query+authmanagerinfo-param-requestsfor": "Obter informação sobre os pedidos de autenticação que são necessários para a operação de autenticação especificada.",
        "apihelp-query+authmanagerinfo-example-login": "Obter os pedidos que podem ser usados ao iniciar uma sessão.",
        "apihelp-query+authmanagerinfo-example-login-merged": "Obter os pedidos que podem ser usados ao iniciar uma sessão, com os campos combinados.",
        "apihelp-query+authmanagerinfo-example-securitysensitiveoperation": "Testar se a autenticação é suficiente para a operação <kbd>foo</kbd>.",
-       "apihelp-query+backlinks-description": "Encontrar todas as páginas que contêm ligações para a página indicada.",
        "apihelp-query+backlinks-param-title": "O título a ser procurado. Não pode ser usado em conjunto com <var>$1pageid</var>.",
        "apihelp-query+backlinks-param-pageid": "O identificador do título a ser procurado. Não pode ser usado em conjunto com <var>$1title</var>.",
        "apihelp-query+backlinks-param-namespace": "O espaço nominal a ser enumerado.",
        "apihelp-query+backlinks-param-redirect": "Se a página que contém a ligação é um redirecionamento, procurar também todas as páginas que contêm ligações para esse redirecionamento. O limite máximo é reduzido para metade.",
        "apihelp-query+backlinks-example-simple": "Mostrar as ligações para <kbd>Main page</kbd>.",
        "apihelp-query+backlinks-example-generator": "Obter informações sobre as páginas com ligações para <kbd>Main page</kbd>.",
-       "apihelp-query+blocks-description": "Listar todos os utilizadores e endereços IP bloqueados.",
        "apihelp-query+blocks-param-start": "A data e hora a partir da qual será começada a enumeração.",
        "apihelp-query+blocks-param-end": "A data e hora na qual será terminada a enumeração.",
        "apihelp-query+blocks-param-ids": "Lista dos identificadores de bloqueios a serem listados (opcional).",
        "apihelp-query+blocks-param-show": "Mostrar só os bloqueios que preenchem estes critérios.\nPor exemplo, para ver só bloqueios indefinidos de endereços IP, defina <kbd>$1show=ip|!temp</kbd>.",
        "apihelp-query+blocks-example-simple": "Listar bloqueios.",
        "apihelp-query+blocks-example-users": "Listar os bloqueios dos utilizadores <kbd>Alice</kbd> e <kbd>Bob</kbd>.",
-       "apihelp-query+categories-description": "Listar todas as categorias às quais as páginas pertencem.",
        "apihelp-query+categories-param-prop": "As propriedades adicionais que devem ser obtidas para cada categoria:",
        "apihelp-query+categories-paramvalue-prop-sortkey": "Adiciona a chave de ordenação (''string'' hexadecimal) e o prefixo da chave de ordenação (parte legível) da categoria.",
        "apihelp-query+categories-paramvalue-prop-timestamp": "Adiciona a data e hora a que a categoria foi adicionada.",
        "apihelp-query+categories-param-dir": "A direção de listagem.",
        "apihelp-query+categories-example-simple": "Obter uma lista das categorias às quais pertence a página <kbd>Albert Einstein</kbd>.",
        "apihelp-query+categories-example-generator": "Obter informação sobre todas as categorias usadas na página <kbd>Albert Einstein</kbd>.",
-       "apihelp-query+categoryinfo-description": "Devolve informação sobre as categorias indicadas.",
        "apihelp-query+categoryinfo-example-simple": "Obter informações sobre <kbd>Category:Foo</kbd> e <kbd>Category:Bar</kbd>.",
-       "apihelp-query+categorymembers-description": "Listar todas as páginas numa categoria específica.",
        "apihelp-query+categorymembers-param-title": "A categoria que será enumerada (obrigatório). Tem de incluir o prefixo <kbd>{{ns:category}}:</kbd>. Não pode ser usado em conjunto com <var>$1pageid</var>.",
        "apihelp-query+categorymembers-param-pageid": "Identificador da categoria a ser enumerada. Não pode ser usado em conjunto com <var>$1title</var>.",
        "apihelp-query+categorymembers-param-prop": "As informações que devem ser incluídas:",
        "apihelp-query+categorymembers-param-endsortkey": "Em vez dele, usar $1endhexsortkey.",
        "apihelp-query+categorymembers-example-simple": "Obter as primeiras 10 páginas na categoria <kbd>Category:Physics</kbd>.",
        "apihelp-query+categorymembers-example-generator": "Obter informações sobre as primeiras 10 páginas na categoria <kbd>Category:Physics</kbd>.",
-       "apihelp-query+contributors-description": "Obter a lista do contribuidores autenticados e a contagem dos contribuidores anónimos de uma página.",
        "apihelp-query+contributors-param-group": "Incluir só os utilizadores nos grupos indicados. Não inclui os grupos implícitos ou de promoção automática como *, utilizador, ou autoconfirmado.",
        "apihelp-query+contributors-param-excludegroup": "Excluir os utilizadores nos grupos indicados. Não inclui os grupos implícitos ou de promoção automática como *, utilizador, ou autoconfirmado.",
        "apihelp-query+contributors-param-rights": "Incluir só os utilizadores com as permissões indicadas. Não inclui as permissões atribuídas por grupos implícitos ou de promoção automática como *, utilizador, ou autoconfirmado.",
        "apihelp-query+contributors-param-excluderights": "Excluir os utilizadores com as permissões indicadas. Não inclui as permissões atribuídas por grupos implícitos ou de promoção automática como *, utilizador, ou autoconfirmado.",
        "apihelp-query+contributors-param-limit": "O número de contribuidores a serem devolvidos.",
        "apihelp-query+contributors-example-simple": "Mostrar os contribuidores da página <kbd>Main Page</kbd>.",
-       "apihelp-query+deletedrevisions-description": "Obter informações sobre as revisões eliminadas.\n\nPode ser usado de várias maneiras:\n# Obter as revisões eliminadas para um conjunto de páginas, definindo títulos ou identificadores de página. Ordenados por título e data e hora.\n# Obter dados sobre um conjunto de revisões eliminadas definindo os respetivos ids: com identificadores de revisão. Ordenados pelo identificador de revisão.",
        "apihelp-query+deletedrevisions-param-start": "A data e hora da revisão a partir da qual será começada a enumeração. Ignorado ao processar uma lista de identificadores de revisão.",
        "apihelp-query+deletedrevisions-param-end": "A data e hora da revisão na qual será terminada a enumeração. Ignorado ao processar uma lista de identificadores de revisão.",
        "apihelp-query+deletedrevisions-param-tag": "Listar só as revisões marcadas com esta etiqueta.",
        "apihelp-query+deletedrevisions-param-excludeuser": "Não listar as revisões deste utilizador.",
        "apihelp-query+deletedrevisions-example-titles": "Listar as revisões eliminadas das páginas <kbd>Main Page</kbd> e <kbd>Talk:Main Page</kbd>, com o conteúdo.",
        "apihelp-query+deletedrevisions-example-revids": "Listar a informação da revisão eliminada <kbd>123456</kbd>.",
-       "apihelp-query+deletedrevs-description": "Listar as revisões eliminadas.\n\nOpera em três modos:\n# Listar as revisões eliminadas dos títulos indicados, ordenadas por data e hora.\n# Listar as contribuições eliminadas do utilizador indicado, ordenadas por data e hora (sem especificar títulos).\n# Listar todas as revisões eliminadas no espaço nominal indicado, ordenadas por título e por data e hora (sem especificar títulos, sem definir $1user).\n\nAlguns parâmetros só se aplicam a alguns modos e são ignorados noutros.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Modo|Modos}}: $2",
        "apihelp-query+deletedrevs-param-start": "A data e hora da revisão a partir da qual será começada a enumeração.",
        "apihelp-query+deletedrevs-param-end": "A data e hora da revisão na qual será terminada a enumeração.",
        "apihelp-query+deletedrevs-example-mode2": "Listar as últimas 50 contribuições eliminadas do utilizador <kbd>Bob</kbd> (modo 2).",
        "apihelp-query+deletedrevs-example-mode3-main": "Listar as primeiras 50 revisões eliminadas no espaço nominal principal (modo 3).",
        "apihelp-query+deletedrevs-example-mode3-talk": "Listar as primeiras 50 páginas eliminadas no espaço nominal {{ns:talk}} (modo 3).",
-       "apihelp-query+disabled-description": "Este módulo de consulta foi desativado.",
-       "apihelp-query+duplicatefiles-description": "Listar todos os ficheiros que são duplicados dos ficheiros indicados com base no seu resumo criptográfico.",
        "apihelp-query+duplicatefiles-param-limit": "O número de ficheiros duplicados a serem devolvidos.",
        "apihelp-query+duplicatefiles-param-dir": "A direção de listagem.",
        "apihelp-query+duplicatefiles-param-localonly": "Procurar ficheiros só no repositório local.",
        "apihelp-query+duplicatefiles-example-simple": "Procurar os ficheiros duplicados de [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+duplicatefiles-example-generated": "Procurar duplicados de todos os ficheiros.",
-       "apihelp-query+embeddedin-description": "Encontrar todas as páginas que incorporam (transcluem) o título indicado.",
        "apihelp-query+embeddedin-param-title": "O título a procurar. Não pode ser usado em conjunto com $1pageid.",
        "apihelp-query+embeddedin-param-pageid": "O identificador da página a procurar. Não pode ser usado em conjunto com $1title.",
        "apihelp-query+embeddedin-param-namespace": "O espaço nominal a ser enumerado.",
        "apihelp-query+embeddedin-param-limit": "O número total de páginas a serem devolvidas.",
        "apihelp-query+embeddedin-example-simple": "Mostrar as páginas que transcluem <kbd>Template:Stub</kbd>.",
        "apihelp-query+embeddedin-example-generator": "Obter informação sobre as páginas que transcluem <kbd>Template:Stub</kbd>.",
-       "apihelp-query+extlinks-description": "Devolve todos os URL externos (que não sejam interwikis) das páginas especificadas.",
        "apihelp-query+extlinks-param-limit": "O número de ''links'' a serem devolvidos.",
        "apihelp-query+extlinks-param-protocol": "Protocolo do URL. Se vazio e <var>$1query</var> está definido, o protocolo é <kbd>http</kbd>. Deixe isto e  <var>$1query</var> vazios para listar todos os ''links'' externos.",
        "apihelp-query+extlinks-param-query": "Texto de pesquisa sem protocolo. Útil para verificar se uma determinada página contém um determinado URL externo.",
        "apihelp-query+extlinks-param-expandurl": "Expandir os URL relativos a protocolo com o protocolo canónico.",
        "apihelp-query+extlinks-example-simple": "Obter uma lista das ligações externas na <kbd>Main Page</kbd>.",
-       "apihelp-query+exturlusage-description": "Enumerar as páginas que contêm um determinado URL.",
        "apihelp-query+exturlusage-param-prop": "As informações que devem ser incluídas:",
        "apihelp-query+exturlusage-paramvalue-prop-ids": "Adiciona o identificador da página.",
        "apihelp-query+exturlusage-paramvalue-prop-title": "Adiciona o título e o identificador do espaço nominal da página.",
        "apihelp-query+exturlusage-param-limit": "O número de páginas a serem devolvidas.",
        "apihelp-query+exturlusage-param-expandurl": "Expandir os URL relativos a protocolo com o protocolo canónico.",
        "apihelp-query+exturlusage-example-simple": "Mostrar as páginas com ligações para <kbd>http://www.mediawiki.org</kbd>.",
-       "apihelp-query+filearchive-description": "Enumerar todos os ficheiros eliminados sequencialmente.",
        "apihelp-query+filearchive-param-from": "O título da imagem a partir do qual será começada a enumeração.",
        "apihelp-query+filearchive-param-to": "O título da imagem no qual será terminada a enumeração.",
        "apihelp-query+filearchive-param-prefix": "Procurar todos os títulos de imagem que começam por este valor.",
        "apihelp-query+filearchive-paramvalue-prop-bitdepth": "Adiciona a profundidade em ''bits'' da versão.",
        "apihelp-query+filearchive-paramvalue-prop-archivename": "Adiciona o nome de ficheiro da versão arquivada das versões anteriores à última.",
        "apihelp-query+filearchive-example-simple": "Mostrar uma lista de todos os ficheiros eliminados.",
-       "apihelp-query+filerepoinfo-description": "Devolver meta informação sobre os repositórios de imagens configurados na wiki.",
-       "apihelp-query+filerepoinfo-param-prop": "As propriedades do repositório que devem ser obtidas (em algumas wikis poderão haver mais disponíveis):\n;apiurl:URL para a API do repositório - útil para obter informação de imagens do servidor.\n;name:A chave para o repositório - usada, por exemplo, em <var>[[mw:Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> e nos valores de retorno de [[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname:O nome legível da wiki repositório.\n;rooturl:URL de raiz para endereços de imagens.\n;local:Se o repositório é o local ou não.",
+       "apihelp-query+filerepoinfo-param-prop": "As propriedades do repositório que devem ser obtidas (em algumas wikis poderão haver mais disponíveis):\n;apiurl:URL para a API do repositório - útil para obter informação de imagens do servidor.\n;name:A chave para o repositório - usada, por exemplo, em <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> e nos valores de retorno de [[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname:O nome legível da wiki repositório.\n;rooturl:URL de raiz para endereços de imagens.\n;local:Se o repositório é o local ou não.",
        "apihelp-query+filerepoinfo-example-simple": "Obter informações sobre os repositórios de ficheiros.",
-       "apihelp-query+fileusage-description": "Encontrar todas as páginas que usam os ficheiros indicados.",
        "apihelp-query+fileusage-param-prop": "As propriedades a serem obtidas:",
        "apihelp-query+fileusage-paramvalue-prop-pageid": "O identificador de cada página.",
        "apihelp-query+fileusage-paramvalue-prop-title": "O título de cada página.",
        "apihelp-query+fileusage-param-show": "Mostrar só as páginas que correspondem a estes critérios:\n;redirect:Mostrar só os redirecionamentos.\n;!redirect:Mostrar só os não redirecionamentos.",
        "apihelp-query+fileusage-example-simple": "Obter uma lista das páginas que usam [[:File:Example.jpg]].",
        "apihelp-query+fileusage-example-generator": "Obter informação sobre as páginas que usam [[:File:Example.jpg]].",
-       "apihelp-query+imageinfo-description": "Devolve informação do ficheiro e o historial de carregamentos.",
        "apihelp-query+imageinfo-param-prop": "As informações do ficheiro que devem ser obtidas:",
        "apihelp-query+imageinfo-paramvalue-prop-timestamp": "Adiciona a data e hora da versão carregada.",
        "apihelp-query+imageinfo-paramvalue-prop-user": "Adiciona o utilizador que carregou cada versão de ficheiro.",
        "apihelp-query+imageinfo-param-localonly": "Procurar ficheiros só no repositório local.",
        "apihelp-query+imageinfo-example-simple": "Obter informação sobre a versão atual do ficheiro [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+imageinfo-example-dated": "Obter informação sobre as versões de [[:File:Test.jpg]] a partir de 2008.",
-       "apihelp-query+images-description": "Devolve todos os ficheiros contidos nas páginas indicadas.",
        "apihelp-query+images-param-limit": "O número de ficheiros a serem devolvidos.",
        "apihelp-query+images-param-images": "Listar só estes ficheiros. Útil para verificar se uma determinada página tem um determinado ficheiro.",
        "apihelp-query+images-param-dir": "A direção de listagem.",
        "apihelp-query+images-example-simple": "Obter uma lista dos ficheiros usados na página [[Main Page]].",
        "apihelp-query+images-example-generator": "Obter informação sobre todos os ficheiros usados na página [[Main Page]].",
-       "apihelp-query+imageusage-description": "Encontrar todas as páginas que utilizam o título da imagem indicada.",
        "apihelp-query+imageusage-param-title": "O título a procurar. Não pode ser usado em conjunto com $1pageid.",
        "apihelp-query+imageusage-param-pageid": "O identificador da página a procurar. Não pode ser usado em conjunto com $1title.",
        "apihelp-query+imageusage-param-namespace": "O espaço nominal a ser enumerado.",
        "apihelp-query+imageusage-param-redirect": "Se a página que contém a ligação é um redirecionamento, procurar também todas as páginas que contêm ligações para esse redirecionamento. O limite máximo é reduzido para metade.",
        "apihelp-query+imageusage-example-simple": "Mostrar as páginas que usam [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+imageusage-example-generator": "Obter informações sobre as páginas que usam o ficheiro [[:File:Albert Einstein Head.jpg]].",
-       "apihelp-query+info-description": "Obter a informação básica da página.",
        "apihelp-query+info-param-prop": "As propriedades adicionais que devem ser obtidas:",
        "apihelp-query+info-paramvalue-prop-protection": "Listar o nível de proteção de cada página.",
        "apihelp-query+info-paramvalue-prop-talkid": "O identificador da página de discussão de cada página que não seja de discussão.",
        "apihelp-query+info-param-token": "Em substituição, usar [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
        "apihelp-query+info-example-simple": "Obter informações sobre a página <kbd>Main Page</kbd>.",
        "apihelp-query+info-example-protection": "Obter informação geral e de proteção sobre a página <kbd>Main Page</kbd>.",
-       "apihelp-query+iwbacklinks-description": "Encontrar todas as páginas que contêm o ''link'' interwikis indicado.\n\nPode ser usado para encontrar todos os ''links'' com um determinado prefixo, ou todos os ''links'' para um título (com um prefixo indicado). Não usar nenhum dos dois parâmetros significa efetivamente ''todos os ''links'' interwikis''.",
        "apihelp-query+iwbacklinks-param-prefix": "O prefixo interwikis.",
        "apihelp-query+iwbacklinks-param-title": "O ''link'' interwikis a ser procurado. Tem de ser usado em conjunto com <var>$1blprefix</var>.",
        "apihelp-query+iwbacklinks-param-limit": "O número total de páginas a serem devolvidas.",
        "apihelp-query+iwbacklinks-param-dir": "A direção de listagem.",
        "apihelp-query+iwbacklinks-example-simple": "Obter as páginas que contêm ligações para [[wikibooks:Test]].",
        "apihelp-query+iwbacklinks-example-generator": "Obter informação sobre as páginas que contêm ligações para [[wikibooks:Test]].",
-       "apihelp-query+iwlinks-description": "Devolve todos os ''links'' interwikis das páginas indicadas.",
        "apihelp-query+iwlinks-param-url": "Indica se deve ser obtido o URL completo (não pode ser usado com $1prop).",
        "apihelp-query+iwlinks-param-prop": "As propriedades adicionais que devem ser obtidas para cada ''link'' interlínguas:",
        "apihelp-query+iwlinks-paramvalue-prop-url": "Adiciona o URL completo.",
        "apihelp-query+iwlinks-param-title": "Link interwikis a ser procurado. Tem de ser usado em conjunto com <var>$1prefix</var>.",
        "apihelp-query+iwlinks-param-dir": "A direção de listagem.",
        "apihelp-query+iwlinks-example-simple": "Obter os ''links'' interwikis da página <kbd>Main Page</kbd>.",
-       "apihelp-query+langbacklinks-description": "Encontrar todas as páginas que contêm ligações para o ''link'' interlínguas indicado.\n\nPode ser usado para encontrar todos os ''links'' para um determinado código de língua, ou todos os ''links'' para um determinado título (de uma língua). Se nenhum for usado, isso efetivamente significa \"todos os ''links'' interlínguas\".\n\nNote que os ''links'' interlínguas adicionados por extensões podem não ser considerados.",
        "apihelp-query+langbacklinks-param-lang": "A língua do ''link'' interlínguas.",
        "apihelp-query+langbacklinks-param-title": "Link interlínguas a ser procurado. Tem de ser usado com $1lang.",
        "apihelp-query+langbacklinks-param-limit": "O número total de páginas a serem devolvidas.",
        "apihelp-query+langbacklinks-param-dir": "A direção de listagem.",
        "apihelp-query+langbacklinks-example-simple": "Obter as páginas que contêm ligações para [[:fr:Test]].",
        "apihelp-query+langbacklinks-example-generator": "Obter informações sobre as páginas que contêm ligações para [[:fr:Test]].",
-       "apihelp-query+langlinks-description": "Devolve todos os ''links'' interlínguas das páginas indicadas.",
        "apihelp-query+langlinks-param-limit": "O número de ''links'' interlínguas a serem devolvidos.",
        "apihelp-query+langlinks-param-url": "Indica se deve ser obtido o URL completo (não pode ser usado com $1prop).",
        "apihelp-query+langlinks-param-prop": "As propriedades adicionais que devem ser obtidas para cada ''link'' interlínguas:",
        "apihelp-query+langlinks-param-dir": "A direção de listagem.",
        "apihelp-query+langlinks-param-inlanguagecode": "O código de língua para os nomes de língua localizados.",
        "apihelp-query+langlinks-example-simple": "Obter os ''links'' interlínguas da página <kbd>Main Page</kbd>.",
-       "apihelp-query+links-description": "Devolve todos os ''links'' das páginas indicadas.",
        "apihelp-query+links-param-namespace": "Mostrar apenas os ''links'' destes espaços nominais.",
        "apihelp-query+links-param-limit": "O número de ''links'' a serem devolvidos.",
        "apihelp-query+links-param-titles": "Listar só as ligações para estes títulos. Útil para verificar se uma determinada página contém ligações para um determinado título.",
        "apihelp-query+links-example-simple": "Obter os ''links'' da página <kbd>Main Page</kbd>.",
        "apihelp-query+links-example-generator": "Obter informação sobre as páginas ligadas na página <kbd>Main Page</kbd>.",
        "apihelp-query+links-example-namespaces": "Obter os ''links'' da página <kbd>Main Page</kbd> nos espaços nominais {{ns:user}} e {{ns:template}}.",
-       "apihelp-query+linkshere-description": "Encontrar todas as páginas que contêm ''links'' para as páginas indicadas.",
        "apihelp-query+linkshere-param-prop": "As propriedades a serem obtidas:",
        "apihelp-query+linkshere-paramvalue-prop-pageid": "O identificador de cada página.",
        "apihelp-query+linkshere-paramvalue-prop-title": "O título de cada página.",
        "apihelp-query+linkshere-param-show": "Mostrar só as páginas que correspondem a estes critérios:\n;redirect:Mostrar só os redirecionamentos.\n;!redirect:Mostrar só os não redirecionamentos.",
        "apihelp-query+linkshere-example-simple": "Obter uma lista das páginas com ligações para a página [[Main Page]].",
        "apihelp-query+linkshere-example-generator": "Obter informação sobre as páginas com ligações para a página [[Main Page]].",
-       "apihelp-query+logevents-description": "Obter eventos dos registos.",
        "apihelp-query+logevents-param-prop": "As propriedades a serem obtidas:",
        "apihelp-query+logevents-paramvalue-prop-ids": "Adiciona o identificador do evento do registo.",
        "apihelp-query+logevents-paramvalue-prop-title": "Adiciona o título da página do evento do registo.",
        "apihelp-query+logevents-param-tag": "Listar só as entradas de eventos marcadas com esta etiqueta.",
        "apihelp-query+logevents-param-limit": "O número total de entradas de eventos a serem devolvidas.",
        "apihelp-query+logevents-example-simple": "Listar os eventos recentes do registo.",
-       "apihelp-query+pagepropnames-description": "Listar todos os nomes de propriedades de páginas em uso nesta wiki.",
        "apihelp-query+pagepropnames-param-limit": "O número máximo de nomes a serem devolvidos.",
        "apihelp-query+pagepropnames-example-simple": "Obter os primeiros 10 nomes de propriedades.",
-       "apihelp-query+pageprops-description": "Obter várias propriedades de página definidas no conteúdo da página.",
        "apihelp-query+pageprops-param-prop": "Listar só estas propriedades de página (<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd> devolve os nomes das propriedades de página em uso). Útil para verificar se as páginas usam uma determinada propriedade de página.",
        "apihelp-query+pageprops-example-simple": "Obter as propriedades das páginas <kbd>Main Page</kbd> e <kbd>MediaWiki</kbd>.",
-       "apihelp-query+pageswithprop-description": "Listar todas as páginas que usam uma determinada propriedade.",
        "apihelp-query+pageswithprop-param-propname": "A propriedade de página a partir da qual as páginas serão enumeradas (<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd> devolve os nomes das propriedades de página que estão a ser usadas).",
        "apihelp-query+pageswithprop-param-prop": "As informações que devem ser incluídas:",
        "apihelp-query+pageswithprop-paramvalue-prop-ids": "Adiciona o identificador da página.",
        "apihelp-query+pageswithprop-param-dir": "A direção da ordenação.",
        "apihelp-query+pageswithprop-example-simple": "Listar as primeiras 10 páginas que usam a propriedade <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+pageswithprop-example-generator": "Obter informação adicional sobre as primeiras 10 páginas que usam <code>_&#95;NOTOC_&#95;</code>.",
-       "apihelp-query+prefixsearch-description": "Realizar uma procura de prefixo nos títulos de página.\n\nApesar da semelhança de nomes, este módulo não pretende ser equivalente a [[Special:PrefixIndex]]; para este, consulte <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> com o parâmetro <kbd>apprefix</kbd>. O propósito deste módulo é semelhante a <kbd>[[Special:ApiHelp/opensearch|action=opensearch]]</kbd>: receber dados introduzidos pelo utilizador e devolver os títulos com melhor correspondência. Dependendo do motor de busca do servidor, isto pode incluir correções de erros ortográficos, evitar redirecionamentos, e outras heurísticas.",
        "apihelp-query+prefixsearch-param-search": "O texto a ser pesquisado.",
        "apihelp-query+prefixsearch-param-namespace": "Os espaços nominais onde realizar a pesquisa.",
        "apihelp-query+prefixsearch-param-limit": "O número máximo de resultados a serem devolvidos.",
        "apihelp-query+prefixsearch-param-offset": "O número de resultados a serem omitidos.",
        "apihelp-query+prefixsearch-example-simple": "Procurar os títulos de página que começam por <kbd>meaning</kbd>.",
        "apihelp-query+prefixsearch-param-profile": "O perfil de pesquisa a ser utilizado.",
-       "apihelp-query+protectedtitles-description": "Listar todos os títulos cuja criação está impedida.",
        "apihelp-query+protectedtitles-param-namespace": "Listar só os títulos nestes espaços nominais.",
        "apihelp-query+protectedtitles-param-level": "Listar só os títulos com estes níveis de proteção.",
        "apihelp-query+protectedtitles-param-limit": "O número total de páginas a serem devolvidas.",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "Adiciona o nível de proteção.",
        "apihelp-query+protectedtitles-example-simple": "Lista os títulos protegidos.",
        "apihelp-query+protectedtitles-example-generator": "Encontrar as ligações para os títulos protegidos que pertencem ao espaço nominal principal.",
-       "apihelp-query+querypage-description": "Obter uma lista fornecida por uma página especial baseada em consultas (''QueryPage'').",
        "apihelp-query+querypage-param-page": "O nome da página especial. Note que este é sensível a maiúsculas e minúsculas.",
        "apihelp-query+querypage-param-limit": "O número de resultados a serem devolvidos.",
        "apihelp-query+querypage-example-ancientpages": "Devolver os resultados da página [[Special:Ancientpages]].",
-       "apihelp-query+random-description": "Obter um conjunto de páginas aleatórias.\n\nAs páginas são listadas em sequência fixa, só o ponto de início da listagem é aleatório. Isto significa, por exemplo, que se a primeira página aleatória na lista é <samp>Main Page</samp>, a página <samp>List of fictional monkeys</samp> será <em>sempre</em> a segunda, a página <samp>List of people on stamps of Vanuatu</samp> a terceira, etc.",
        "apihelp-query+random-param-namespace": "Devolver só as páginas que estão nestes espaços nominais.",
        "apihelp-query+random-param-limit": "Limitar o número de páginas aleatórias que serão devolvidas.",
        "apihelp-query+random-param-redirect": "Em vez dele, usar <kbd>$1filterredir=redirects</kbd>.",
        "apihelp-query+random-param-filterredir": "Como filtrar redirecionamentos.",
        "apihelp-query+random-example-simple": "Devolver duas páginas aleatórias do espaço nominal principal.",
        "apihelp-query+random-example-generator": "Devolver informação de página sobre duas páginas aleatórias do espaço nominal principal.",
-       "apihelp-query+recentchanges-description": "Enumerar as mudanças recentes.",
        "apihelp-query+recentchanges-param-start": "A data e hora a partir da qual será começada a enumeração.",
        "apihelp-query+recentchanges-param-end": "A data e hora na qual será terminada a enumeração.",
        "apihelp-query+recentchanges-param-namespace": "Filtrar as mudanças para produzir só as destes espaços nominais.",
        "apihelp-query+recentchanges-param-generaterevisions": "Ao ser usado como gerador, gerar identificadores de revisões em vez de títulos. As entradas das mudanças recentes que não tenham identificadores de revisão associados (por exemplo, a maioria das entradas do registo) não geram nada.",
        "apihelp-query+recentchanges-example-simple": "Listar as mudanças recentes.",
        "apihelp-query+recentchanges-example-generator": "Obter informação de página acerca das mudanças recentes não patrulhadas.",
-       "apihelp-query+redirects-description": "Devolve todos os redirecionamentos para as páginas indicadas.",
        "apihelp-query+redirects-param-prop": "As propriedades a serem obtidas:",
        "apihelp-query+redirects-paramvalue-prop-pageid": "O identificador de página de cada redirecionamento.",
        "apihelp-query+redirects-paramvalue-prop-title": "O título de cada redirecionamento.",
        "apihelp-query+redirects-param-show": "Mostrar só as páginas que correspondem a estes critérios:\n;fragment:Mostrar só os redirecionamentos com um fragmento.\n;!fragment:Mostrar só os redirecionamentos sem um fragmento.",
        "apihelp-query+redirects-example-simple": "Obter uma lista dos redirecionamentos para a página [[Main Page]].",
        "apihelp-query+redirects-example-generator": "Obter informação sobre todos os redirecionamentos para a página [[Main Page]].",
-       "apihelp-query+revisions-description": "Obter informação da revisão.\n\nPode ser usado de várias maneiras:\n# Obter dados sobre um conjunto de páginas (última revisão), definindo títulos ou identificadores de páginas.\n# Obter as revisões de uma página indicada, usando títulos ou identificadores de páginas, com start, end ou limit.\n# Obter dados sobre um conjunto de revisões definindo os respetivos identificadores de revisões.",
        "apihelp-query+revisions-paraminfo-singlepageonly": "Só pode ser usado com uma única página (modo #2)",
-       "apihelp-query+revisions-param-startid": "O identificador de revisão a partir do qual será começada a enumeração.",
-       "apihelp-query+revisions-param-endid": "Terminar a enumeração de revisões neste identificador de revisão.",
+       "apihelp-query+revisions-param-startid": "Iniciar a enumeração a partir da data e hora desta revisão. A revisão tem de existir, mas não precisa de pertencer a esta página.",
+       "apihelp-query+revisions-param-endid": "Terminar a enumeração na data e hora desta revisão. A revisão tem de existir, mas não precisa de pertencer a esta página.",
        "apihelp-query+revisions-param-start": "A data e hora da revisão a partir da qual será começada a enumeração.",
        "apihelp-query+revisions-param-end": "A data e hora da revisão na qual será terminada a enumeração.",
        "apihelp-query+revisions-param-user": "Incluir só as revisões deste utilizador.",
        "apihelp-query+revisions+base-param-section": "Obter apenas o conteúdo da secção que tem este número.",
        "apihelp-query+revisions+base-param-diffto": "O identificador da revisão contra a qual será tirada uma lista de diferenças de cada revisão. Usar <kbd>prev</kbd> (anterior), <kbd>next</kbd> (seguinte) e <kbd>cur</kbd> (atual).",
        "apihelp-query+revisions+base-param-difftotext": "O texto contra o qual será tirada uma lista de diferenças de cada revisão. Só produz as diferenças para um número limitado de revisões. Tem precedência sobre <var>$1diffto</var>. Se <var>$1section</var> estiver definido, só o conteúdo dessa secção será comparado contra o texto.",
-       "apihelp-query+revisions+base-param-difftotextpst": "Fazer uma transformação de pré-gravação ao texto antes de calcular as diferenças. Só é válido quando usado com <var>$1difftotext</var>.",
+       "apihelp-query+revisions+base-param-difftotextpst": "Fazer uma transformação anterior à gravação do texto, antes de calcular as diferenças. Só é válido quando usado com <var>$1difftotext</var>.",
        "apihelp-query+revisions+base-param-contentformat": "O formato de seriação usado para <var>$1difftotext</var> e esperado para o conteúdo produzido.",
-       "apihelp-query+search-description": "Efetuar uma pesquisa do texto integral.",
        "apihelp-query+search-param-search": "Procurar os títulos de página ou o conteúdo que corresponda a este valor. Pode usar o texto da pesquisa para invocar funcionalidades de pesquisa especiais, dependendo dos meios de pesquisa do servidor da wiki.",
        "apihelp-query+search-param-namespace": "Pesquisar só nestes espaços nominais.",
        "apihelp-query+search-param-what": "O tipo de pesquisa a executar.",
        "apihelp-query+search-param-limit": "O número total de páginas a serem devolvidas.",
        "apihelp-query+search-param-interwiki": "Incluir resultados interwikis na pesquisa, se disponíveis.",
        "apihelp-query+search-param-backend": "O servidor de pesquisas a ser usado, se diferente do servidor padrão.",
-       "apihelp-query+search-param-enablerewrites": "Ativar a reescrita da pesquisa interna. Alguns motores de pesquisa podem reescrever a pesquisa, substituindo-a por outra que consideram que dará melhores resultados, como acontece na correção de erros de ortografia.",
+       "apihelp-query+search-param-enablerewrites": "Ativar a reescrita da pesquisa interna. Alguns motores de pesquisa podem reescrever a pesquisa substituindo-a por outra que consideram que dará melhores resultados, por exemplo, por corrigir erros de ortografia.",
        "apihelp-query+search-example-simple": "Pesquisar <kbd>meaning</kbd>.",
        "apihelp-query+search-example-text": "Pesquisar <kbd>meaning</kbd> nos textos.",
        "apihelp-query+search-example-generator": "Obter informação sobre as páginas devolvidas por uma pesquisa do termo <kbd>meaning</kbd>.",
-       "apihelp-query+siteinfo-description": "Devolver informação geral sobre o ''site''.",
        "apihelp-query+siteinfo-param-prop": "A informação a ser obtida:",
        "apihelp-query+siteinfo-paramvalue-prop-general": "Informação global do sistema.",
        "apihelp-query+siteinfo-paramvalue-prop-namespaces": "Uma lista dos espaços nominais registados e dos seus nomes canónicos.",
        "apihelp-query+siteinfo-paramvalue-prop-rightsinfo": "Devolve informação sobre os direitos (a licença) da wiki, se disponível.",
        "apihelp-query+siteinfo-paramvalue-prop-restrictions": "Devolve informação sobre os tipos de restrição (proteção) disponíveis.",
        "apihelp-query+siteinfo-paramvalue-prop-languages": "Devolve uma lista das línguas que o MediaWiki suporta (opcionalmente localizada, usando <var>$1inlanguagecode</var>).",
-       "apihelp-query+siteinfo-paramvalue-prop-languagevariants": "Devolve uma lista dos códigos de língua para os quais o [[mw:LanguageConverter|LanguageConverter]] está ativado, e as variantes suportadas para cada código.",
+       "apihelp-query+siteinfo-paramvalue-prop-languagevariants": "Devolve uma lista dos códigos de língua para os quais o [[mw:Special:MyLanguage/LanguageConverter|LanguageConverter]] está ativado, e as variantes suportadas para cada código.",
        "apihelp-query+siteinfo-paramvalue-prop-skins": "Devolve uma lista de todos os temas ativados (opcionalmente localizada, usando <var>$1inlanguagecode</var>, ou então na língua do conteúdo).",
        "apihelp-query+siteinfo-paramvalue-prop-extensiontags": "Devolve uma lista dos elementos de extensões do analisador sintático.",
        "apihelp-query+siteinfo-paramvalue-prop-functionhooks": "Devolve uma lista dos ''hooks'' de funções do analisador sintático.",
-       "apihelp-query+siteinfo-paramvalue-prop-showhooks": "Devolve uma lista de todos os ''hooks'' subscritos (conteúdo de <var>[[mw:Manual:$wgHooks|$wgHooks]]</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-showhooks": "Devolve uma lista de todos os ''hooks'' subscritos (conteúdo de <var>[[mw:Special:MyLanguage/Manual:$wgHooks|$wgHooks]]</var>).",
        "apihelp-query+siteinfo-paramvalue-prop-variables": "Devolve uma lista de identificadores de variáveis.",
        "apihelp-query+siteinfo-paramvalue-prop-protocols": "Devolve uma lista dos protocolos permitidos nos ''links'' externos.",
        "apihelp-query+siteinfo-paramvalue-prop-defaultoptions": "Devolve os valores padrão para as preferências dos utilizadores.",
        "apihelp-query+siteinfo-example-simple": "Obter as informações do ''site''.",
        "apihelp-query+siteinfo-example-interwiki": "Obter uma lista dos prefixos interwikis locais.",
        "apihelp-query+siteinfo-example-replag": "Verificar o atraso de replicação atual.",
-       "apihelp-query+stashimageinfo-description": "Devolve informações dos ficheiros escondidos.",
        "apihelp-query+stashimageinfo-param-filekey": "Chave que identifica um carregamento anterior que foi escondido temporariamente.",
        "apihelp-query+stashimageinfo-param-sessionkey": "Nome alternativo de $1filekey, para compatibilidade com versões anteriores.",
        "apihelp-query+stashimageinfo-example-simple": "Devolve informação sobre um ficheiro escondido.",
        "apihelp-query+stashimageinfo-example-params": "Devolve as miniaturas de dois ficheiros escondidos.",
-       "apihelp-query+tags-description": "Listar as etiquetas de modificação.",
        "apihelp-query+tags-param-limit": "O número máximo de etiquetas a serem listadas.",
        "apihelp-query+tags-param-prop": "As propriedades a serem obtidas:",
        "apihelp-query+tags-paramvalue-prop-name": "Adiciona o nome da etiqueta.",
        "apihelp-query+tags-paramvalue-prop-source": "Obter as fontes da etiqueta, que podem incluir <samp>extension</samp> para etiquetas definidas por extensões e <samp>manual</samp> para etiquetas que podem ser manualmente aplicadas pelos utilizadores.",
        "apihelp-query+tags-paramvalue-prop-active": "Indica se a etiqueta ainda está a ser aplicada.",
        "apihelp-query+tags-example-simple": "Listar as etiquetas disponíveis.",
-       "apihelp-query+templates-description": "Devolve todas as páginas que são transcluídas nas páginas indicadas.",
        "apihelp-query+templates-param-namespace": "Mostrar só as predefinições nestes espaços nominais.",
        "apihelp-query+templates-param-limit": "O número de predefinições a serem devolvidas.",
        "apihelp-query+templates-param-templates": "Listar só estas predefinições. Útil para verificar se uma determinada página contém uma determinada predefinição.",
        "apihelp-query+templates-example-simple": "Obter as predefinições usadas na página <kbd>Main Page</kbd>.",
        "apihelp-query+templates-example-generator": "Obter informação sobre as páginas das predefinições usadas na página <kbd>Main Page</kbd>.",
        "apihelp-query+templates-example-namespaces": "Obter as páginas dos espaços nominais {{ns:user}} e {{ns:template}} que são transcluídas na página <kbd>Main Page</kbd>.",
-       "apihelp-query+tokens-description": "Obtêm tokens para ações de modificação de dados.",
        "apihelp-query+tokens-param-type": "Tipos de chave a pedir.",
        "apihelp-query+tokens-example-simple": "Obter uma chave csfr (padrão).",
        "apihelp-query+tokens-example-types": "Obter uma chave de vigilância e uma chave de patrulha.",
-       "apihelp-query+transcludedin-description": "Obter todas as páginas que transcluem as páginas indicadas.",
        "apihelp-query+transcludedin-param-prop": "As propriedades a serem obtidas:",
        "apihelp-query+transcludedin-paramvalue-prop-pageid": "O identificador de cada página.",
        "apihelp-query+transcludedin-paramvalue-prop-title": "O título de cada página.",
        "apihelp-query+transcludedin-param-show": "Mostrar só as entradas que correspondem a estes critérios:\n;redirect:Mostrar só os redirecionamentos.\n;!redirect:Mostrar só as que não são redirecionamentos.",
        "apihelp-query+transcludedin-example-simple": "Obter uma lista das páginas que transcluem <kbd>Main Page</kbd>.",
        "apihelp-query+transcludedin-example-generator": "Obter informação sobre as páginas que transcluem <kbd>Main Page</kbd>.",
-       "apihelp-query+usercontribs-description": "Obter todas as edições de um utilizador.",
        "apihelp-query+usercontribs-param-limit": "O número máximo de contribuições a serem devolvidas.",
        "apihelp-query+usercontribs-param-start": "A data e hora da contribuição pela qual será começada a devolução de resultados.",
        "apihelp-query+usercontribs-param-end": "A data e hora da contribuição na qual será terminada a devolução de resultados.",
        "apihelp-query+usercontribs-paramvalue-prop-flags": "Adiciona as etiquetas da edição.",
        "apihelp-query+usercontribs-paramvalue-prop-patrolled": "Etiqueta as edições patrulhadas.",
        "apihelp-query+usercontribs-paramvalue-prop-tags": "Lista as etiquetas da edição.",
-       "apihelp-query+usercontribs-param-show": "Mostrar só as contribuições que correspondem a estes critérios; por exemplo, só as edições não menores: <kbd>$2show=!minor</kbd>.\n\nSe um dos valores <kbd>$2show=patrolled</kbd> ou <kbd>$2show=!patrolled</kbd> estiver definido, as revisões feitas há mais de <var>[[mw:Manual:$wgRCMaxAge|$wgRCMaxAge]]</var> ($1 {{PLURAL:$1|segundo|segundos}}) não serão mostradas.",
+       "apihelp-query+usercontribs-param-show": "Mostrar só as contribuições que correspondem a estes critérios; por exemplo, só as edições não menores: <kbd>$2show=!minor</kbd>.\n\nSe um dos valores <kbd>$2show=patrolled</kbd> ou <kbd>$2show=!patrolled</kbd> estiver definido, as revisões feitas há mais de <var>[[mw:Special:MyLanguage/Manual:$wgRCMaxAge|$wgRCMaxAge]]</var> ($1 {{PLURAL:$1|segundo|segundos}}) não serão mostradas.",
        "apihelp-query+usercontribs-param-tag": "Listar só as revisões marcadas com esta etiqueta.",
        "apihelp-query+usercontribs-param-toponly": "Listar só as alterações que são a revisão mais recente.",
        "apihelp-query+usercontribs-example-user": "Mostrar as contribuições do utilizador <kbd>Example</kbd>.",
        "apihelp-query+usercontribs-example-ipprefix": "Mostrar as contribuições de todos os endereços IP com o prefixo <kbd>192.0.2.</kbd>.",
-       "apihelp-query+userinfo-description": "Obter informações sobre o utilizador atual.",
        "apihelp-query+userinfo-param-prop": "As informações que devem ser incluídas:",
        "apihelp-query+userinfo-paramvalue-prop-blockinfo": "Etiquetas que indicam se o utilizador atual está bloqueado, por quem, e qual o motivo.",
        "apihelp-query+userinfo-paramvalue-prop-hasmsg": "Adiciona uma etiqueta <samp>messages</samp> se o utilizador atual tem mensagens pendentes.",
        "apihelp-query+userinfo-paramvalue-prop-groups": "Lista todos os grupos aos quais o utilizador atual pertence.",
+       "apihelp-query+userinfo-paramvalue-prop-groupmemberships": "Lista os grupos aos quais o utilizador atual foi explicitamente atribuído, incluindo a data de expiração da sua pertença a cada grupo.",
        "apihelp-query+userinfo-paramvalue-prop-implicitgroups": "Lista todos os grupos aos quais o utilizador atual pertence automaticamente.",
        "apihelp-query+userinfo-paramvalue-prop-rights": "Lista todas as permissões que o utilizador atual tem.",
        "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Lista os grupos aos quais o utilizador atual pode ser adicionado ou de onde pode ser removido.",
        "apihelp-query+userinfo-param-attachedwiki": "Com <kbd>$1prop=centralids</kbd>, indicar se o utilizador tem ligação com a wiki designada por este identificador.",
        "apihelp-query+userinfo-example-simple": "Obter informações sobre o utilizador atual.",
        "apihelp-query+userinfo-example-data": "Obter informações adicionais sobre o utilizador atual.",
-       "apihelp-query+users-description": "Obter informações sobre uma lista de utilizadores.",
        "apihelp-query+users-param-prop": "As informações que devem ser incluídas:",
        "apihelp-query+users-paramvalue-prop-blockinfo": "Etiquetas que indicam se o utilizador está bloqueado, por quem, e qual o motivo.",
        "apihelp-query+users-paramvalue-prop-groups": "Lista todos os grupos aos quais cada utilizador pertence.",
+       "apihelp-query+users-paramvalue-prop-groupmemberships": "Lista os grupos aos quais cada utilizador foi explicitamente atribuído, incluindo a data de expiração da sua pertença a cada grupo.",
        "apihelp-query+users-paramvalue-prop-implicitgroups": "Lista todos os grupos aos quais um utilizador pertence automaticamente.",
        "apihelp-query+users-paramvalue-prop-rights": "Lista todas as permissões que cada utilizador tem.",
        "apihelp-query+users-paramvalue-prop-editcount": "Adiciona a contagem de edições do utilizador.",
        "apihelp-query+users-param-userids": "Uma lista de identificadores dos utilizadores de que serão obtidas informações.",
        "apihelp-query+users-param-token": "Em substituição, usar <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-query+users-example-simple": "Devolver informações sobre o utilizador <kbd>Example</kbd>.",
-       "apihelp-query+watchlist-description": "Obter mudanças recentes das páginas vigiadas do utilizador atual.",
        "apihelp-query+watchlist-param-allrev": "Incluir múltiplas revisões da mesma página dentro do intervalo de tempo indicado.",
        "apihelp-query+watchlist-param-start": "A data e hora da mudança recente a partir da qual será começada a enumeração.",
        "apihelp-query+watchlist-param-end": "A data e hora da mudança recente na qual será terminada a enumeração.",
        "apihelp-query+watchlist-example-generator": "Obter informações das páginas na lista de páginas vigiadas do utilizador atual que tenham sido recentemente alteradas.",
        "apihelp-query+watchlist-example-generator-rev": "Obter informações de revisão para as mudanças recentes às páginas vigiadas do utilizador atual.",
        "apihelp-query+watchlist-example-wlowner": "Listar a revisão mais recente das páginas na lista de páginas vigiadas do utilizador <kbd>Example</kbd> que tenham sido recentemente alteradas.",
-       "apihelp-query+watchlistraw-description": "Obter todas as páginas na lista de páginas vigiadas do utilizador atual.",
        "apihelp-query+watchlistraw-param-namespace": "Listar só as páginas nos espaços nominais indicados.",
        "apihelp-query+watchlistraw-param-limit": "O número total de resultados a serem devolvidos por pedido.",
        "apihelp-query+watchlistraw-param-prop": "As propriedades adicionais que devem ser obtidas:",
        "apihelp-query+watchlistraw-param-totitle": "O título (com o prefixo do espaço nominal) no qual será terminada a enumeração.",
        "apihelp-query+watchlistraw-example-simple": "Listar as páginas na lista de páginas vigiadas do utilizador atual.",
        "apihelp-query+watchlistraw-example-generator": "Obter informações das páginas na lista de páginas vigiadas do utilizador atual.",
-       "apihelp-removeauthenticationdata-description": "Remover os dados de autenticação do utilizador atual.",
        "apihelp-removeauthenticationdata-example-simple": "Tentar remover os dados do utilizador atual para o pedido de autenticação <kbd>FooAuthenticationRequest</kbd>.",
-       "apihelp-resetpassword-description": "Enviar a um utilizador uma mensagem eletrónica de reinício da palavra-passe.",
-       "apihelp-resetpassword-description-noroutes": "Não estão disponíveis rotas de reinício da palavra-passe.\n\nPara usar este módulo, ative uma rota em <var>[[mw:Manual:$wgPasswordResetRoutes|$wgPasswordResetRoutes]]</var>.",
        "apihelp-resetpassword-param-user": "O utilizar cuja palavra-passe será reiniciada.",
        "apihelp-resetpassword-param-email": "O correio eletrónico do utilizador cuja palavra-passe será reiniciada.",
        "apihelp-resetpassword-example-user": "Enviar uma mensagem eletrónica para reinício da palavra-passe ao utilizador <kbd>Example</kbd>.",
        "apihelp-resetpassword-example-email": "Enviar uma mensagem eletrónica para reinício da palavra-passe a todos os utilizadores com o correio eletrónico <kbd>user@example.com</kbd>.",
-       "apihelp-revisiondelete-description": "Eliminar e restaurar revisões.",
        "apihelp-revisiondelete-param-type": "O tipo de eliminação de revisão que está a ser feito.",
        "apihelp-revisiondelete-param-target": "O título de página para a eliminação da revisão, se for necessário para o tipo de eliminação.",
        "apihelp-revisiondelete-param-ids": "Os identificadores das revisões a serem eliminadas.",
        "apihelp-revisiondelete-param-tags": "Etiquetas a aplicar à entrada no registo de eliminações.",
        "apihelp-revisiondelete-example-revision": "Ocultar o conteúdo da revisão <kbd>12345</kbd> na página <kbd>Main Page</kbd>.",
        "apihelp-revisiondelete-example-log": "Ocultar todos os dados na entrada <kbd>67890</kbd> do registo com o motivo <kbd>BLP violation</kbd>.",
-       "apihelp-rollback-description": "Desfazer a última edição da página.\n\nSe o último utilizador a editar a página realizou várias edições em sequência, estas serão todas desfeitas.",
        "apihelp-rollback-param-title": "O título da página a reverter. Não pode ser usado em conjunto com <var>$1pageid</var>.",
        "apihelp-rollback-param-pageid": "O identificador da página a reverter. Não pode ser usado em conjunto com <var>$1title</var>.",
        "apihelp-rollback-param-tags": "As etiquetas a aplicar à reversão.",
        "apihelp-rollback-param-watchlist": "Adicionar ou remover incondicionalmente a página da lista de páginas vigiadas do utilizador atual, usar as preferências ou não alterar o estado de vigilância.",
        "apihelp-rollback-example-simple": "Reverter as últimas edições da página <kbd>Main Page</kbd> pelo utilizador <kbd>Example</kbd>.",
        "apihelp-rollback-example-summary": "Reverter as últimas edições da página <kbd>Main Page</kbd> pelo utilizador IP <kbd>192.0.2.5</kbd> com o resumo <kbd>Reverting vandalism</kbd>, e marcar essas edições e a reversão como edições de robôs.",
-       "apihelp-rsd-description": "Exportar um esquema (''schema'') RSD (Really Simple Discovery).",
        "apihelp-rsd-example-simple": "Exportar o esquema RSD.",
-       "apihelp-setnotificationtimestamp-description": "Atualizar a data e hora de notificação de alterações às páginas vigiadas.\n\nIsto afeta o realce das páginas alteradas, na lista de páginas vigiadas e no histórico, e o envio de mensagens de correio quando a preferência \"{{int:tog-enotifwatchlistpages}}\" está ativada.",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "Trabalhar em todas as páginas vigiadas.",
        "apihelp-setnotificationtimestamp-param-timestamp": "A data e hora a definir como data e hora da notificação.",
        "apihelp-setnotificationtimestamp-param-torevid": "A revisão para a qual definir a data e hora de notificação (só uma página).",
        "apihelp-setnotificationtimestamp-example-page": "Reiniciar o estado de notificação da página <kbd>Main page</kbd>.",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "Definir a data e hora de notificação para a página <kbd>Main page</kbd> de forma a que todas as edições desde 1 de janeiro de 2012 passem a ser consideradas não vistas",
        "apihelp-setnotificationtimestamp-example-allpages": "Reiniciar o estado de notificação das páginas no espaço nominal <kbd>{{ns:user}}</kbd>.",
-       "apihelp-setpagelanguage-description": "Alterar a língua de uma página.",
-       "apihelp-setpagelanguage-description-disabled": "Não é permitido alterar a língua de uma página nesta wiki.\n\nAtivar <var>[[mw:Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> para usar esta operação.",
        "apihelp-setpagelanguage-param-title": "O título da página cuja língua pretende alterar. Não pode ser usado em conjunto com <var>$1pageid</var>.",
        "apihelp-setpagelanguage-param-pageid": "O identificador da página cuja língua pretende alterar. Não pode ser usado em conjunto com <var>$1title</var>.",
        "apihelp-setpagelanguage-param-lang": "O código de língua, da língua para a qual a página será alterada. Usar <kbd>default</kbd> para redefinir a língua da página para a língua padrão de conteúdo da wiki.",
        "apihelp-setpagelanguage-param-tags": "As etiquetas de modificação a aplicar à entrada no registo que resultar desta operação.",
        "apihelp-setpagelanguage-example-language": "Alterar a língua da página <kbd>Main Page</kbd> para basco.",
        "apihelp-setpagelanguage-example-default": "Alterar a língua da página com o identificador 123 para a língua padrão de conteúdo da wiki.",
-       "apihelp-stashedit-description": "Preparar uma edição na ''cache'' partilhada.\n\nIsto destina-se a ser usado via AJAX a partir do formulário de edição, para melhorar o desempenho da gravação da página.",
        "apihelp-stashedit-param-title": "Título da página que está a ser editada.",
        "apihelp-stashedit-param-section": "Número da secção. <kbd>0</kbd> para a secção do topo, <kbd>new</kbd> para uma secção nova.",
        "apihelp-stashedit-param-sectiontitle": "O título para uma secção nova.",
        "apihelp-stashedit-param-contentformat": "O formato de seriação do conteúdo usado para o texto de entrada.",
        "apihelp-stashedit-param-baserevid": "O identificador de revisão da revisão de base.",
        "apihelp-stashedit-param-summary": "O resumo da mudança.",
-       "apihelp-tag-description": "Adicionar ou remover as etiquetas de modificação aplicadas a revisões individuais ou a entradas do registo.",
        "apihelp-tag-param-rcid": "Um ou mais identificadores de mudanças recentes às quais adicionar ou remover a etiqueta.",
        "apihelp-tag-param-revid": "Um ou mais identificadores de revisões às quais adicionar ou remover a etiqueta.",
        "apihelp-tag-param-logid": "Um ou mais identificadores de entradas do registo às quais adicionar ou remover a etiqueta.",
        "apihelp-tag-param-tags": "As etiquetas de modificação a aplicar à entrada no registo que será criada em resultado desta operação.",
        "apihelp-tag-example-rev": "Adicionar a etiqueta <kbd>vandalism</kbd> à revisão com o identificador 123, sem especificar um motivo.",
        "apihelp-tag-example-log": "Remover a etiqueta <kbd>spam</kbd> da entrada do registo com o identificador 123, com o motivo <kbd>Wrongly applied</kbd>.",
-       "apihelp-tokens-description": "Obter chaves para operações de modificação de dados.\n\nEste módulo é obsoleto e foi substituído por [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
        "apihelp-tokens-param-type": "Tipos de chave a pedir.",
        "apihelp-tokens-example-edit": "Obter uma chave de edição (padrão).",
        "apihelp-tokens-example-emailmove": "Obter uma chave de correio eletrónico e uma chave de movimentação.",
-       "apihelp-unblock-description": "Desbloquear um utilizador.",
        "apihelp-unblock-param-id": "Identificador do bloqueio a desfazer (obtido com <kbd>list=blocks</kbd>). Não pode ser usado em conjunto com <var>$1user</var> ou <var>$1userid</var>.",
        "apihelp-unblock-param-user": "O nome de utilizador, endereço IP ou gama de endereços IP a ser desbloqueado. Não pode ser usado em conjunto com <var>$1id</var> ou <var>$1userid</var>.",
        "apihelp-unblock-param-userid": "O identificador do utilizador a ser desbloqueado. Não pode ser usado em conjunto com <var>$1id</var> ou <var>$1user</var>.",
        "apihelp-unblock-param-tags": "As etiquetas de modificação a aplicar à entrada no registo de bloqueios.",
        "apihelp-unblock-example-id": "Desfazer o bloqueio com o identificador #<kbd>105</kbd>.",
        "apihelp-unblock-example-user": "Desbloquear o utilizador <kbd>Bob</kbd> com o motivo <kbd>Sorry Bob</kbd>.",
-       "apihelp-undelete-description": "Restaurar revisões de uma página eliminada.\n\nPode obter-se uma lista de revisões eliminadas (incluindo as datas e horas de eliminação) com [[Special:ApiHelp/query+deletedrevisions|prop=deletedrevisions]] e uma lista de identificadores de ficheiros eliminados com [[Special:ApiHelp/query+filearchive|list=filearchive]].",
        "apihelp-undelete-param-title": "Título da página a restaurar.",
        "apihelp-undelete-param-reason": "Motivo para restaurar a página.",
        "apihelp-undelete-param-tags": "Etiquetas de modificação a aplicar à entrada no registo de eliminações.",
        "apihelp-undelete-param-watchlist": "Adicionar ou remover incondicionalmente a página da lista de páginas vigiadas do utilizador atual, usar as preferências ou não alterar o estado de vigilância.",
        "apihelp-undelete-example-page": "Restaurar a página <kbd>Main Page</kbd>.",
        "apihelp-undelete-example-revisions": "Restaurar duas revisões da página <kbd>Main Page</kbd>.",
-       "apihelp-unlinkaccount-description": "Remover do utilizador atual uma conta ligada de uma wiki terceira.",
        "apihelp-unlinkaccount-example-simple": "Tentar remover a ligação do utilizador atual ao fornecedor associado com <kbd>FooAuthenticationRequest</kbd>.",
-       "apihelp-upload-description": "Atualizar um ficheiro, ou obter o estado de carregamentos pendentes.\n\nEstão disponíveis vários métodos:\n* Carregar diretamente o conteúdo do ficheiro, usando o parâmetro <var>$1file</var>.\n* Carregar o ficheiro por segmentos, usando os parâmetros <var>$1filesize</var>, <var>$1chunk</var> e <var>$1offset</var>.\n* Instruir o servidor do MediaWiki para obter o ficheiro a partir de um URL, usando o parâmetro <var>$1url</var>.\n* Terminar um carregamento anterior que falhou devido a avisos, usando o parâmetro <var>$1filekey</var>.\nNote que o POST do HTTP tem de ser feito como um carregamento de ficheiro (isto é, usando <code>multipart/form-data</code>) ao enviar o <var>$1file</var>.",
        "apihelp-upload-param-filename": "O nome de destino do ficheiro.",
        "apihelp-upload-param-comment": "O comentário do carregamento. Também é usado como texto da página inicial para ficheiros novos se <var>$1text</var> não for especificado.",
        "apihelp-upload-param-tags": "Etiquetas de modificação a aplicar à entrada do carregamento no registo e à revisão da página de ficheiro.",
        "apihelp-upload-param-checkstatus": "Obter só o estado de carregamento para a chave de ficheiro indicada.",
        "apihelp-upload-example-url": "Carregar de um URL.",
        "apihelp-upload-example-filekey": "Prosseguir um carregamento que falhou devido a avisos.",
-       "apihelp-userrights-description": "Alterar os grupos a que um utilizador pertence.",
        "apihelp-userrights-param-user": "O nome de utilizador.",
        "apihelp-userrights-param-userid": "O identificador de utilizador.",
        "apihelp-userrights-param-add": "Adicionar o utilizador a estes grupos ou, se já for membro de um grupo, atualizar a data de expiração da sua pertença a esse grupo.",
+       "apihelp-userrights-param-expiry": "Datas e horas de expiração. Podem ser relativas (por exemplo, <kbd>5 meses</kbd> ou <kbd>2 semanas</kbd>) ou absolutas (p. ex., <kbd>2014-09-18T12:34:56Z</kbd>). Se só estiver definida uma data e hora, ela será usada para todos os grupos passados ao parâmetro <var>$1add</var>. Use <kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd> ou <kbd>never</kbd> quando a pertença a um grupo não tem expiração.",
        "apihelp-userrights-param-remove": "Remover o utilizador destes grupos.",
        "apihelp-userrights-param-reason": "O motivo da alteração.",
        "apihelp-userrights-param-tags": "Etiquetas de modificação a aplicar à entrada no registo de privilégios de utilizadores.",
        "apihelp-userrights-example-user": "Adicionar o utilizador <kbd>FooBot</kbd> ao grupo <kbd>bot</kbd> e removê-lo dos grupos <kbd>sysop</kbd> e <kbd>bureaucrat</kbd>.",
        "apihelp-userrights-example-userid": "Adicionar o utilizador com o identificador <kbd>123</kbd> ao grupo <kbd>bot</kbd> e removê-lo dos grupos <kbd>sysop</kbd> e <kbd>bureaucrat</kbd>.",
-       "apihelp-validatepassword-description": "Validar uma palavra-passe face às regras para palavras-passe da wiki.\n\nA validade é reportada <samp>Good</samp> (Boa) se a palavra-passe é aceitável, <samp>Change</samp> (Alterar) se a palavra-passe pode ser usada para iniciar uma sessão mas terá de ser alterada, ou <samp>Invalid</samp> (Inválida) se a palavra-passe não é utilizável.",
+       "apihelp-userrights-example-expiry": "Adicionar o utilizador <kbd>SometimeSysop</kbd> ao grupo <kbd>sysop</kbd> por 1 mês.",
        "apihelp-validatepassword-param-password": "A palavra-passe a ser validada.",
        "apihelp-validatepassword-param-user": "O nome de utilizador, para ser usado ao testar a criação de conta. O nome de utilizador não pode existir.",
        "apihelp-validatepassword-param-email": "O endereço de correio eletrónico, para ser usado ao testar a criação de conta.",
        "apihelp-validatepassword-param-realname": "O nome verdadeiro, para ser usado ao testar a criação de conta.",
        "apihelp-validatepassword-example-1": "Validar a palavra-passe <kbd>foobar</kbd> para o utilizador atual.",
        "apihelp-validatepassword-example-2": "Validar a palavra-passe <kbd>qwerty</kbd> para a criação do utilizador <kbd>Example</kbd>.",
-       "apihelp-watch-description": "Adicionar ou remover páginas da lista de páginas vigiadas do utilizador atual.",
        "apihelp-watch-param-title": "A página a vigiar ou deixar de ser vigiada. Em vez disto, usar <var>$1titles</var>.",
        "apihelp-watch-param-unwatch": "Se definido, a página deixará de ser vigiada, em vez de o ser.",
        "apihelp-watch-example-watch": "Vigiar a página <kbd>Main Page</kbd>.",
        "apihelp-watch-example-generator": "Vigiar as primeiras páginas do espaço nominal principal.",
        "apihelp-format-example-generic": "Devolver o resultado da consulta no formato $1.",
        "apihelp-format-param-wrappedhtml": "Devolver o HTML com realce sintático e os módulos ResourceLoader associados, na forma de um objeto JSON.",
-       "apihelp-json-description": "Produzir os dados de saída no formato JSON.",
        "apihelp-json-param-callback": "Se especificado, envolve o resultado de saída na forma de uma chamada para uma função. Por segurança, todos os dados específicos do utilizador estarão restringidos.",
        "apihelp-json-param-utf8": "Se especificado, codifica a maioria dos caracteres não ASCII (mas não todos) em UTF-8, em vez de substitui-los por sequências de escape hexadecimais. É o comportamento padrão quando <var>formatversion</var> não tem o valor <kbd>1</kbd>.",
        "apihelp-json-param-ascii": "Se especificado, codifica todos caracteres não ASCII usando sequências de escape hexadecimais. É o comportamento padrão quando <var>formatversion</var> tem o valor <kbd>1</kbd>.",
        "apihelp-json-param-formatversion": "Formatação do resultado de saída:\n;1:Formato compatível com versões anteriores (booleanos ao estilo XML, <samp>*</samp> chaves para nodos de conteúdo, etc.).\n;2:Formato moderno experimental. As especificações podem mudar!\n;latest:Usar o formato mais recente (atualmente <kbd>2</kbd>), mas pode ser alterado sem aviso prévio.",
-       "apihelp-jsonfm-description": "Produzir os dados de saída em formato JSON (realce sintático em HTML).",
-       "apihelp-none-description": "Não produzir nada.",
-       "apihelp-php-description": "Produzir os dados de saída em formato PHP seriado.",
        "apihelp-php-param-formatversion": "Formatação do resultado de saída:\n;1:Formato compatível com versões anteriores (booleanos ao estilo XML, <samp>*</samp> chaves para nodos de conteúdo, etc.).\n;2:Formato moderno experimental. As especificações podem mudar!\n;latest:Usar o formato mais recente (atualmente <kbd>2</kbd>), mas pode ser alterado sem aviso prévio.",
-       "apihelp-phpfm-description": "Produzir os dados de saída em formato PHP seriado (realce sintático em HTML).",
-       "apihelp-rawfm-description": "Produzir os dados de saída, incluindo elementos para despiste de erros, em formato JSON (realce sintático em HTML).",
-       "apihelp-xml-description": "Produzir os dados de saída em formato XML.",
        "apihelp-xml-param-xslt": "Se especificado, adiciona a página nomeada como uma folha de estilo XSL. O valor tem de ser um título no espaço nominal {{ns:MediaWiki}} e acabar em <code>.xsl</code>.",
        "apihelp-xml-param-includexmlnamespace": "Se especificado, adiciona um espaço nominal XML.",
-       "apihelp-xmlfm-description": "Produzir os dados de saída em formato XML (realce sintático em HTML).",
        "api-format-title": "Resultado da API do MediaWiki.",
-       "api-format-prettyprint-header": "Esta é a representação em HTML do formato $1. O HTML é bom para o despiste de erros, mas inadequado para uso na aplicação.\n\nEspecifique o parâmetro <var>format</var> para alterar o formato de saída. Para ver a representação que não é em HTML do formato $1, defina <kbd>format=$2</kbd>.\n\nConsulte a [[mw:API|documentação completa]], ou a [[Special:ApiHelp/main|ajuda da API]] para mais informação.",
-       "api-format-prettyprint-header-only-html": "Esta é uma representação em HTML para ser usada no despiste de erros, mas inadequada para uso na aplicação.\n\nConsulte a [[mw:API|documentação completa]], ou a [[Special:ApiHelp/main|ajuda da API]] para mais informação.",
+       "api-format-prettyprint-header": "Esta é a representação em HTML do formato $1. O HTML é bom para o despiste de erros, mas inadequado para uso na aplicação.\n\nEspecifique o parâmetro <var>format</var> para alterar o formato de saída. Para ver a representação que não é em HTML do formato $1, defina <kbd>format=$2</kbd>.\n\nConsulte a [[mw:Special:MyLanguage/API|documentação completa]], ou a [[Special:ApiHelp/main|ajuda da API]] para mais informação.",
+       "api-format-prettyprint-header-only-html": "Esta é uma representação em HTML para ser usada no despiste de erros, mas inadequada para uso na aplicação.\n\nConsulte a [[mw:Special:MyLanguage/API|documentação completa]], ou a [[Special:ApiHelp/main|ajuda da API]] para mais informação.",
+       "api-format-prettyprint-header-hyperlinked": "Esta é a representação em HTML do formato $1. O HTML é bom para o despiste de erros, mas inadequado para uso na aplicação.\n\nEspecifique o parâmetro <var>format</var> para alterar o formato de saída. Para ver a representação que não é em HTML do formato $1, defina [$3 <kbd>format=$2</kbd>].\n\nConsulte a [[mw:API|documentação completa]], ou a [[Special:ApiHelp/main|ajuda da API]] para mais informação.",
        "api-format-prettyprint-status": "Esta resposta seria devolvida com o estado de HTTP: $1 $2.",
+       "api-login-fail-aborted": "A autenticação requer interação com o utilizador, que não é suportada por <kbd>action=login</kbd>. Para poder entrar com <kbd>action=login</kbd>, consulte [[Special:BotPasswords]]. Para continuar a usar a autenticação da conta principal, consulte <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
+       "api-login-fail-aborted-nobotpw": "A autenticação requer interação com o utilizador, que não é suportada por <kbd>action=login</kbd>. Para entrar, consulte <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
+       "api-login-fail-badsessionprovider": "Não é possível entrar usando $1.",
+       "api-login-fail-sameorigin": "Não é possível entrar quando a norma da mesma origem não é aplicada.",
        "api-pageset-param-titles": "Uma lista dos títulos a serem trabalhados.",
        "api-pageset-param-pageids": "Uma lista dos identificadores de página a serem trabalhados.",
        "api-pageset-param-revids": "Uma lista dos identificadores de revisões a serem trabalhados.",
        "api-help-param-default": "Valor por omissão: $1",
        "api-help-param-default-empty": "Padrão: <span class=\"apihelp-empty\">(vazio)</span>",
        "api-help-param-token": "Uma chave \"$1\" obtida de [[Special:ApiHelp/query+tokens|action=query&meta=tokens]]",
-       "api-help-param-token-webui": "Para efeitos de compatibilidade, o token usado na interface ''web'' também é aceito.",
-       "api-help-param-disabled-in-miser-mode": "Desativado devido ao [[mw:Manual:$wgMiserMode|modo avarento]] (''miser mode'').",
-       "api-help-param-limited-in-miser-mode": "<strong>Nota:</strong> devido ao [[mw:Manual:$wgMiserMode|modo avarento]] (''miser mode''), usar isto pode resultar na devolução de menos de <var>$1limit</var> resultados antes de continuar; em casos extremos pode não ser devolvido qualquer resultado.",
+       "api-help-param-token-webui": "Para efeitos de compatibilidade, a chave usada na interface ''web'' também é aceite.",
+       "api-help-param-disabled-in-miser-mode": "Desativado devido ao [[mw:Special:MyLanguage/Manual:$wgMiserMode|modo avarento]] (''miser mode'').",
+       "api-help-param-limited-in-miser-mode": "<strong>Nota:</strong> devido ao [[mw:Special:MyLanguage/Manual:$wgMiserMode|modo avarento]] (''miser mode''), usar isto pode resultar na devolução de menos de <var>$1limit</var> resultados antes de continuar; em casos extremos pode não ser devolvido qualquer resultado.",
        "api-help-param-direction": "A direção da enumeração:\n;newer:Listar o mais antigo primeiro. Nota: $1start tem de estar antes de $1end.\n;older:Listar o mais recente primeiro (padrão). Nota: $1start tem de estar depois de $1end.",
        "api-help-param-continue": "Quando houver mais resultados disponíveis, usar isto para continuar",
        "api-help-param-no-description": "<span class=\"apihelp-empty\">(sem descrição)</span>",
        "api-help-authmanagerhelper-returnurl": "O URL de retorno para processos de autenticação por terceiros tem de ser absoluto. É obrigatório fornecer este URL ou <var>$1continue</var>.\n\nTipicamente, após receber uma resposta <samp>REDIRECT</samp>, abrirá um ''browser'' ou uma ''web view'' para o URL <samp>redirecttarget</samp> especificado, para dar lugar ao processo de autenticação por terceiros. Quando esse processo terminar, a terceira entidade encaminhará o ''browser'' ou a ''web view'' para este URL. Deve extrair do URL quaisquer parâmetros de consulta ou de POST, e passá-los como um pedido <var>$1continue</var> a este módulo da API.",
        "api-help-authmanagerhelper-continue": "Este pedido é uma continuação após uma resposta anterior com o valor <samp>UI</samp> ou <samp>REDIRECT</samp>. É obrigatório fornecer este parâmetro ou o parâmetro <var>$1returnurl</var>.",
        "api-help-authmanagerhelper-additional-params": "Este módulo aceita parâmetros adicionais, dependendo dos pedidos de autenticação disponíveis. Use <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> com <kbd>amirequestsfor=$1</kbd> (ou uma resposta anterior deste módulo, se aplicável) para determinar os pedidos disponíveis e os campos que estes utilizam.",
+       "apierror-allimages-redirect": "Usar <kbd>gaifilterredir=nonredirects</kbd> em vez de <var>redirects</var> ao utilizar <kbd>allimages</kbd> como gerador.",
+       "apierror-allpages-generator-redirects": "Usar <kbd>gapfilterredir=nonredirects</kbd> em vez de <var>redirects</var> ao utilizar <kbd>allpages</kbd> como gerador.",
+       "apierror-appendnotsupported": "Não é possível acrescentar conteúdo a páginas que usam o modelo de conteúdo $1.",
+       "apierror-articleexists": "O artigo que tentou criar já existe.",
+       "apierror-assertbotfailed": "A asserção de que o utilizador tem o privilégio <code>bot</code> falhou.",
+       "apierror-assertnameduserfailed": "A asserção de que o utilizador é \"$1\" falhou.",
+       "apierror-assertuserfailed": "A asserção de que o utilizador está autenticado falhou.",
+       "apierror-autoblocked": "O seu endereço IP foi bloqueado automaticamente, porque foi usado por um utilizador bloqueado.",
+       "apierror-badconfig-resulttoosmall": "O valor de <code>$wgAPIMaxResultSize</code> nesta wiki é demasiado pequeno para conter informação básica de resultados.",
+       "apierror-badcontinue": "Parâmetro de continuação inválido. Deve passar o valor original devolvido pela consulta anterior.",
+       "apierror-baddiff": "Não foi possível obter a lista de diferenças. Uma das revisões, ou ambas, não existem, ou não tem permissão para vê-las.",
+       "apierror-baddiffto": "<var>$1diffto</var> tem de ser um número não negativo, <kbd>prev</kbd>, <kbd>next</kbd> ou <kbd>cur</kbd>.",
+       "apierror-badformat-generic": "O formato solicitado $1 não é suportado pelo modelo de conteúdo $2.",
+       "apierror-badformat": "O formato solicitado $1 não é suportado pelo modelo de conteúdo $2 usado por $3.",
+       "apierror-badgenerator-notgenerator": "O módulo <kbd>$1</kbd> não pode ser usado como gerador.",
+       "apierror-badgenerator-unknown": "<kbd>generator=$1</kbd> desconhecido.",
+       "apierror-badip": "O parâmetro IP não é válido.",
+       "apierror-badmd5": "A chave MD5 fornecida estava incorreta.",
+       "apierror-badmodule-badsubmodule": "O módulo <kbd>$1</kbd> não tem um submódulo \"$2\".",
+       "apierror-badmodule-nosubmodules": "O módulo <kbd>$1</kbd> não tem submódulos.",
+       "apierror-badparameter": "Valor inválido para o parâmetro <var>$1</var>.",
+       "apierror-badquery": "Consulta inválida.",
+       "apierror-badtimestamp": "Valor inválido \"$2\" para o parâmetro de data e hora <var>$1</var>.",
+       "apierror-badtoken": "Chave CSRF inválida.",
+       "apierror-badupload": "O parâmetro para carregamento de ficheiros <var>$1</var> não é um carregamento de ficheiro; verifique que usou <code>multipart/form-data</code> no seu POST e inclua um nome de ficheiro no cabeçalho <code>Content-Disposition</code>.",
+       "apierror-badurl": "Valor inválido \"$2\" para o parâmetro <var>$1</var> do URL.",
+       "apierror-baduser": "Valor inválido \"$2\" para o parâmetro de utilizador <var>$1</var>.",
+       "apierror-badvalue-notmultivalue": "O separador de valores múltiplos U+001F só pode ser usado em parâmetros de valores múltiplos.",
+       "apierror-bad-watchlist-token": "A chave secreta da lista de páginas vigiadas que foi fornecida está incorreta. Configure uma chave correta em [[Special:Preferences]], por favor.",
+       "apierror-blockedfrommail": "Foi-lhe bloqueada a capacidade de enviar correio eletrónico.",
+       "apierror-blocked": "Foi-lhe bloqueada a capacidade de editar.",
+       "apierror-botsnotsupported": "Esta interface não é suportada para robôs.",
+       "apierror-cannot-async-upload-file": "Os parâmetros <var>async</var> e <var>file</var> não podem ser combinados. Se pretende o processamento assíncrono do seu ficheiro carregado, carregue-o primeiro na área de ficheiros escondidos (usando o parâmetro <var>stash</var>) e depois publique de forma assíncrona este ficheiro escondido (usando <var>filekey</var> e <var>async</var>).",
+       "apierror-cannotreauthenticate": "Esta operação não está disponível porque não é possível verificar a sua identidade.",
+       "apierror-cannotviewtitle": "Não tem permissão para ver $1.",
+       "apierror-cantblock-email": "Não tem permissão para bloquear a capacidade dos utilizadores enviarem correio eletrónico através da wiki.",
+       "apierror-cantblock": "Não tem permissão para bloquear utilizadores.",
+       "apierror-cantchangecontentmodel": "Não tem permissão para alterar o modelo de conteúdo de uma página.",
+       "apierror-canthide": "Não tem permissão para ocultar nomes de utilizadores no registo de bloqueios.",
+       "apierror-cantimport-upload": "Não tem permissão para importar páginas carregadas.",
+       "apierror-cantimport": "Não tem permissão para importar páginas.",
+       "apierror-cantoverwrite-sharedfile": "O ficheiro alvo existe num repositório partilhado e você não tem permissão para o substituir.",
+       "apierror-cantsend": "Não está autenticado, não tem um endereço de correio eletrónico confirmado, ou não lhe é permitido enviar correio a outros utilizadores, por isso não pode enviar correios eletrónicos.",
+       "apierror-cantundelete": "Não foi possível restaurar: as revisões solicitadas podem não existir ou podem já ter sido restauradas.",
+       "apierror-changeauth-norequest": "A criação do pedido de modificação falhou.",
+       "apierror-chunk-too-small": "O tamanho de segmento mínimo é $1 {{PLURAL:$1|byte|bytes}} para segmentos que não sejam segmentos finais.",
+       "apierror-cidrtoobroad": "Não são aceites intervalos CIDR $1 maiores do que /$2.",
+       "apierror-compare-no-title": "Não é possível transformar antes da gravação, sem um título. Tente especificar <var>fromtitle</var> ou <var>totitle</var>.",
+       "apierror-compare-relative-to-nothing": "Não existe uma revisão 'from' em relação à qual <var>torelative</var> possa ser relativo.",
+       "apierror-contentserializationexception": "A seriação do conteúdo falhou: $1",
+       "apierror-contenttoobig": "O conteúdo que forneceu excede o tamanho máximo dos artigos que é $1 {{PLURAL:$1|kilobyte|kilobytes}}.",
+       "apierror-copyuploadbaddomain": "Não são permitidos carregamentos por URL a partir deste domínio.",
+       "apierror-copyuploadbadurl": "Não são permitidos carregamentos a partir deste URL.",
+       "apierror-create-titleexists": "Os títulos existentes não podem ser protegidos com  <kbd>create</kbd>.",
+       "apierror-csp-report": "Ocorreu um erro no processamento do relatório CSP: $1.",
+       "apierror-databaseerror": "[$1] Erro na consulta da base de dados.",
+       "apierror-deletedrevs-param-not-1-2": "O parâmetro <var>$1</var> não pode ser usado nos modos 1 e 2.",
+       "apierror-deletedrevs-param-not-3": "O parâmetro <var>$1</var> não pode ser usado no modo 3.",
+       "apierror-emptynewsection": "Não é possível criar secções novas vazias.",
+       "apierror-emptypage": "Não é permitido criar páginas novas vazias.",
+       "apierror-exceptioncaught": "[$1] Exceção intercetada: $2",
+       "apierror-filedoesnotexist": "O ficheiro não existe.",
+       "apierror-fileexists-sharedrepo-perm": "O ficheiro de destino já existe num repositório partilhado. Use o parâmetro <var>ignorewarnings</var> para substituí-lo.",
+       "apierror-filenopath": "Não é possível obter o caminho local do ficheiro.",
+       "apierror-filetypecannotberotated": "O tipo do ficheiro não pode ser rodado.",
+       "apierror-formatphp": "Esta resposta não pode ser representada com <kbd>format=php</kbd>. Consulte https://phabricator.wikimedia.org/T68776.",
+       "apierror-imageusage-badtitle": "O título para <kbd>$1</kbd> tem de ser um ficheiro.",
+       "apierror-import-unknownerror": "Ocorreu um erro desconhecido na importação: $1.",
+       "apierror-integeroutofrange-abovebotmax": "<var>$1</var> não pode ultrapassar $2 (definido como $3) para robôs e administradores.",
+       "apierror-integeroutofrange-abovemax": "<var>$1</var> não pode ultrapassar $2 (definido como $3) para utilizadores.",
+       "apierror-integeroutofrange-belowminimum": "<var>$1</var> não pode ser inferior a $2 (definido como $3).",
+       "apierror-invalidcategory": "O nome de categoria que introduziu não é válido.",
+       "apierror-invalid-chunk": "A posição mais o segmento atual ultrapassam o tamanho do ficheiro.",
+       "apierror-invalidexpiry": "A hora de expiração \"$1\" é inválida.",
+       "apierror-invalid-file-key": "Não é uma chave de ficheiro válida.",
+       "apierror-invalidlang": "Código de língua inválido para o parâmetro <var>$1</var>.",
+       "apierror-invalidoldimage": "O parâmetro <var>oldimage</var> tem um formato inválido.",
+       "apierror-invalidparammix-cannotusewith": "O parâmetro <kbd>$1</kbd> não pode ser usado com <kbd>$2</kbd>.",
+       "apierror-invalidparammix-mustusewith": "O parâmetro <kbd>$1</kbd> só pode ser usado com <kbd>$2</kbd>.",
+       "apierror-invalidparammix-parse-new-section": "<kbd>section=new</kbd> não pode ser combinado com os parâmetros <var>oldid</var>, <var>pageid</var> e <var>page</var>. Use <var>title</var> e <var>text</var>, por favor.",
+       "apierror-invalidparammix": "{{PLURAL:$2||Os parâmetros}} $1 não podem ser usados em conjunto.",
+       "apierror-invalidsection": "O parâmetro <var>section</var> tem de ser um identificador de secção válido ou <kbd>new</kbd>.",
+       "apierror-invalidsha1base36hash": "O resumo criptográfico SHA1Base36 fornecido não é válido.",
+       "apierror-invalidsha1hash": "O resumo criptográfico SHA1 fornecido não é válido.",
+       "apierror-invalidtitle": "Título inválido \"$1\".",
+       "apierror-invalidurlparam": "Valor inválido para <var>$1urlparam</var> (<kbd>$2=$3</kbd>).",
+       "apierror-invaliduser": "Nome de utilizador inválido \"$1\".",
+       "apierror-invaliduserid": "O identificador de utilizador <var>$1</var> não é válido.",
+       "apierror-maxlag-generic": "À espera de um servidor de base de dados: $1 {{PLURAL:$1|segundo|segundos}} de atraso.",
+       "apierror-maxlag": "À espera de $2: $1 {{PLURAL:$1|segundo|segundos}} de atraso.",
+       "apierror-mimesearchdisabled": "A pesquisa MIME é desativada no modo avarento.",
+       "apierror-missingcontent-pageid": "Conteúdo em falta para a página com o identificador $1.",
+       "apierror-missingcontent-revid": "Conteúdo em falta para a revisão com o identificador $1.",
+       "apierror-missingparam-at-least-one-of": "{{PLURAL:$2|O parâmetro|Pelo menos um dos parâmetros}} $1 é obrigatório.",
+       "apierror-missingparam-one-of": "{{PLURAL:$2|O parâmetro|Um dos parâmetros}} $1 é obrigatório.",
+       "apierror-missingparam": "O parâmetro <var>$1</var> tem de ser definido.",
+       "apierror-missingrev-pageid": "Não há nenhuma revisão atual da página com o identificador $1.",
+       "apierror-missingrev-title": "Não há nenhuma revisão atual do título $1.",
+       "apierror-missingtitle-createonly": "Os títulos em falta só podem ser protegidos com <kbd>create</kbd>.",
+       "apierror-missingtitle": "A página que especificou não existe.",
+       "apierror-missingtitle-byname": "A página $1 não existe.",
+       "apierror-moduledisabled": "O módulo <kbd>$1</kbd> foi desativado.",
+       "apierror-multival-only-one-of": "Só é permitido {{PLURAL:$3|o valor|um dos valores}} $2 para o parâmetro <var>$1</var>.",
+       "apierror-multival-only-one": "Só é permitido um valor para o parâmetro <var>$1</var>.",
+       "apierror-multpages": "<var>$1</var> só pode ser usado com uma única página.",
+       "apierror-mustbeloggedin-changeauth": "Tem de estar autenticado para alterar dados de autenticação.",
+       "apierror-mustbeloggedin-generic": "Tem de estar autenticado.",
+       "apierror-mustbeloggedin-linkaccounts": "Tem de estar autenticado para ligar contas.",
+       "apierror-mustbeloggedin-removeauth": "Tem de estar autenticado para remover dados de autenticação.",
+       "apierror-mustbeloggedin-uploadstash": "A área dos ficheiros escondidos só está disponível para utilizadores autenticados.",
+       "apierror-mustbeloggedin": "Tem de ter uma sessão iniciada para $1.",
+       "apierror-mustbeposted": "O módulo <kbd>$1</kbd> requer um pedido POST.",
+       "apierror-mustpostparams": "{{PLURAL:$2|O seguinte parâmetro foi encontrado|Os seguintes parâmetros foram encontrados}} no texto da pesquisa, mas têm de estar no corpo do POST: $1.",
+       "apierror-noapiwrite": "A edição desta wiki através da API foi impossibilitada. Certifique-se de que a declaração <code>$wgEnableWriteAPI=true;</code> está incluída no ficheiro <code>LocalSettings.php</code> da wiki.",
+       "apierror-nochanges": "Não foi pedida nenhuma mudança.",
+       "apierror-nodeleteablefile": "Essa versão antiga do ficheiro não existe.",
+       "apierror-no-direct-editing": "A edição direta através da API não é suportada para o modelo de conteúdo $1 usado por $2.",
+       "apierror-noedit-anon": "Os utilizadores anónimos não podem editar páginas.",
+       "apierror-noedit": "Não tem permissão para editar páginas.",
+       "apierror-noimageredirect-anon": "Os utilizadores anónimos não podem criar redirecionamentos de imagens.",
+       "apierror-noimageredirect": "Não tem permissão para criar redirecionamentos de imagens.",
+       "apierror-nosuchlogid": "Não existe nenhuma entrada de registo com o identificador $1.",
+       "apierror-nosuchpageid": "Não existe nenhuma página com o identificador $1.",
+       "apierror-nosuchrcid": "Não existe nenhuma mudança recente com o identificador $1.",
+       "apierror-nosuchrevid": "Não existe nenhuma revisão com o identificador $1.",
+       "apierror-nosuchsection": "Não existe nenhuma secção $1.",
+       "apierror-nosuchsection-what": "Não existe nenhuma secção $1 em $2.",
+       "apierror-nosuchuserid": "Não existe nenhum utilizador com o identificador $1.",
+       "apierror-notarget": "Não especificou um destino válido para esta operação.",
+       "apierror-notpatrollable": "A revisão r$1 não pode ser patrulhada porque é demasiado antiga.",
+       "apierror-nouploadmodule": "Não foi definido nenhum módulo de carregamento.",
+       "apierror-opensearch-json-warnings": "Os avisos não podem ser representados no formato OpenSearch JSON.",
+       "apierror-pagecannotexist": "O espaço nominal não permite páginas reais.",
+       "apierror-pagedeleted": "A página foi eliminada depois de obter a data e hora da mesma.",
+       "apierror-pagelang-disabled": "Nesta wiki não é permitido alterar a língua de uma página.",
+       "apierror-paramempty": "O parâmetro <var>$1</var> não pode estar vazio.",
+       "apierror-parsetree-notwikitext": "<kbd>prop=parsetree</kbd> só é suportado para conteúdo em texto wiki.",
+       "apierror-parsetree-notwikitext-title": "<kbd>prop=parsetree</kbd> só é suportado para conteúdo em texto wiki. A página $1 usa o modelo de conteúdo $2.",
+       "apierror-pastexpiry": "A data de expiração \"$1\" é uma data passada.",
+       "apierror-permissiondenied": "Não tem permissão para $1.",
+       "apierror-permissiondenied-generic": "Permissão negada.",
+       "apierror-permissiondenied-patrolflag": "Necessita ter a permissão <code>patrol</code> ou <code>patrolmarks</code> para solicitar a marca de patrulhado.",
+       "apierror-permissiondenied-unblock": "Não tem permissão para desbloquear utilizadores.",
+       "apierror-prefixsearchdisabled": "A pesquisa por prefixo está desativada no modo avarento.",
+       "apierror-promised-nonwrite-api": "O cabeçalho HTTP <code>Promise-Non-Write-API-Action</code> não pode ser enviado a módulos da API em modo de escrita.",
+       "apierror-protect-invalidaction": "O tipo de proteção \"$1\" é inválido.",
+       "apierror-protect-invalidlevel": "O nível de proteção \"$1\" é inválido.",
+       "apierror-ratelimited": "Excedeu a sua frequência limite de edições. Aguarde um pouco e tente novamente, por favor.",
+       "apierror-readapidenied": "Precisa de ter permissão de leitura para usar este módulo.",
+       "apierror-readonly": "A wiki está em modo exclusivo de leitura.",
+       "apierror-reauthenticate": "Não se autenticou recentemente nesta sessão. Volte a autenticar-se, por favor.",
+       "apierror-redirect-appendonly": "Tentou editar usando o modo de seguimento de redirecionamentos, que só pode ser usado em conjunto com <kbd>section=new</kbd>, <var>prependtext</var>, ou <var>appendtext</var>.",
+       "apierror-revdel-mutuallyexclusive": "Não pode usar o mesmo campo em <var>hide</var> e em <var>show</var>.",
+       "apierror-revdel-needtarget": "É necessário um título de destino para este tipo RevDel.",
+       "apierror-revdel-paramneeded": "É necessário pelo menos um valor para <var>hide</var> ou <var>show</var>.",
+       "apierror-revisions-badid": "Não foi encontrada nenhuma revisão para o parâmetro <var>$1</var>.",
+       "apierror-revisions-norevids": "O parâmetro <var>revids</var> não pode ser usado com as opções de listagem (<var>$1limit</var>, <var>$1startid</var>, <var>$1endid</var>, <kbd>$1dir=newer</kbd>, <var>$1user</var>, <var>$1excludeuser</var>, <var>$1start</var> e <var>$1end</var>).",
+       "apierror-revisions-singlepage": "Foi usado <var>titles</var>, <var>pageids</var> ou um gerador para fornecer diversas páginas, mas os parâmetros <var>$1limit</var>, <var>$1startid</var>, <var>$1endid</var>, <kbd>$1dir=newer</kbd>, <var>$1user</var>, <var>$1excludeuser</var>, <var>$1start</var> e <var>$1end</var> só podem ser usados sobre uma única página.",
+       "apierror-revwrongpage": "r$1 não é uma revisão de $2.",
+       "apierror-searchdisabled": "A pesquisa <var>$1</var> está desativada.",
+       "apierror-sectionreplacefailed": "Não foi possível combinar a secção atualizada.",
+       "apierror-sectionsnotsupported": "Secções não são suportadas pelo modelo de conteúdo $1.",
+       "apierror-sectionsnotsupported-what": "Secções não são suportadas por $1.",
+       "apierror-show": "Parâmetro incorreto - não podem ser fornecidos valores mutuamente exclusivos.",
+       "apierror-siteinfo-includealldenied": "Não é possível ver a informação de todos os servidores, a menos que <var>$wgShowHostNames</var> tenha o valor \"true\".",
+       "apierror-sizediffdisabled": "A diferença de tamanho está desativada no modo avarento.",
+       "apierror-spamdetected": "A sua edição foi recusada porque continha um fragmento de spam: <code>$1</code>.",
+       "apierror-specialpage-cantexecute": "Não tem permissão para ver os resultados desta página especial.",
+       "apierror-stashedfilenotfound": "O ficheiro não foi encontrado na área de ficheiros escondidos: $1.",
+       "apierror-stashedit-missingtext": "Não foi encontrado nenhum texto na área de ficheiros escondidos com a chave criptográfica fornecida.",
+       "apierror-stashfailed-complete": "O carregamento por segmentos já terminou. Para mais detalhes, verifique o estado.",
+       "apierror-stashfailed-nosession": "Não há nenhuma sessão de carregamento por segmentos com esta chave.",
+       "apierror-stashfilestorage": "Não foi possível armazenar na área de ficheiros escondidos o ficheiro enviado: $1.",
+       "apierror-stashinvalidfile": "Ficheiro escondido inválido.",
+       "apierror-stashnosuchfilekey": "A chave de ficheiro não existe: $1.",
+       "apierror-stashpathinvalid": "A chave de ficheiro tem um formato incorreto ou é inválida: $1.",
+       "apierror-stashwrongowner": "Proprietário incorreto: $1",
+       "apierror-stashzerolength": "O ficheiro tem comprimento zero e não foi possível armazená-lo na área de ficheiros escondidos: $1.",
+       "apierror-systemblocked": "Foi automaticamente bloqueado pelo MediaWiki.",
+       "apierror-templateexpansion-notwikitext": "A expansão de predefinições só é suportada para conteúdo em texto wiki. A página $1 usa o modelo de conteúdo $2.",
+       "apierror-toofewexpiries": "{{PLURAL:$1|Foi fornecida $1 data e hora|Foram fornecidas $1 datas e horas}} de expiração quando {{PLURAL:$2|era necessária|eram necessárias}} $2.",
+       "apierror-unknownaction": "A operação especificada, <kbd>$1</kbd>, não é reconhecida.",
+       "apierror-unknownerror-editpage": "Erro EditPage desconhecido: $1.",
+       "apierror-unknownerror-nocode": "Erro desconhecido.",
+       "apierror-unknownerror": "Erro desconhecido: \"$1\".",
+       "apierror-unknownformat": "Formato não reconhecido \"$1\".",
+       "apierror-unrecognizedparams": "{{PLURAL:$2|Parâmetro não reconhecido|Parâmetros não reconhecidos}}: $1.",
+       "apierror-unrecognizedvalue": "Valor não reconhecido para o parâmetro <var>$1</var>: $2.",
+       "apierror-unsupportedrepo": "O repositório de ficheiros local não suporta consultas sobre todas as imagens.",
+       "apierror-upload-filekeyneeded": "Tem de ser fornecida uma <var>filekey</var> quando o <var>offset</var> é diferente de zero.",
+       "apierror-upload-filekeynotallowed": "Não pode ser fornecida uma <var>filekey</var> quando o <var>offset</var> é 0.",
+       "apierror-upload-inprogress": "O carregamento a partir da área de ficheiros escondidos já está em progresso.",
+       "apierror-upload-missingresult": "Não há nenhum resultado nos dados de estado.",
+       "apierror-urlparamnormal": "Não foi possível normalizar os parâmetros de imagem para $1.",
+       "apierror-writeapidenied": "Não lhe é permitido editar esta wiki através da API.",
+       "apiwarn-alldeletedrevisions-performance": "Para obter um desempenho melhor ao gerar títulos, defina <kbd>$1dir=newer</kbd>.",
+       "apiwarn-badurlparam": "Não foi possível analisar <var>$1urlparam</var> para $2. Serão utilizadas somente a largura e a altura.",
+       "apiwarn-badutf8": "O valor passado para <var>$1</var> contém dados inválidos ou não normalizados. Os dados textuais devem estar em formato Unicode válido, normalizado em NFC, sem caracteres de controlo C0 exceto HT (\\t), LF (\\n) e CR (\\r).",
+       "apiwarn-checktoken-percentencoding": "Verifique que símbolos como \"+\" na chave estão devidamente codificados com percentagem no URL.",
+       "apiwarn-compare-nocontentmodel": "Não foi possível determinar nenhum modelo de conteúdo; será assumido $1.",
+       "apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd> foi descontinuado. Em substituição, use <kbd>prop=deletedrevisions</kbd> ou <kbd>list=alldeletedrevisions</kbd>, por favor.",
+       "apiwarn-deprecation-expandtemplates-prop": "Dado que não foi especificado nenhum valor para o parâmetro <var>prop</var> foi usado um formato antigo para o resultado. Esse formato está descontinuado e, de futuro, será definido um valor por omissão para o parâmetro <var>prop</var>, de forma que seja sempre usado um formato novo.",
+       "apiwarn-deprecation-httpsexpected": "Foi usado HTTP quando era esperado HTTPS.",
+       "apiwarn-deprecation-login-botpw": "O início de sessões com uma conta principal através de <kbd>action=login</kbd> foi descontinuado e poderá deixar de funcionar sem aviso prévio. Para continuar a iniciar sessões com <kbd>action=login</kbd>, consulte [[Special:BotPasswords]]. Para continuar a iniciar sessões com a conta principal de forma segura, consulte <kbd>action=clientlogin</kbd>.",
+       "apiwarn-deprecation-login-nobotpw": "O início de sessões com uma conta principal através de <kbd>action=login</kbd> foi descontinuado e poderá deixar de funcionar sem aviso prévio. Para iniciar uma sessão de forma segura, consulte <kbd>action=clientlogin</kbd>.",
+       "apiwarn-deprecation-login-token": "A obtenção de uma chave através de <kbd>action=login</kbd> foi descontinuada. Em substituição, use <kbd>action=query&meta=tokens&type=login</kbd>.",
+       "apiwarn-deprecation-parameter": "O parâmetro <var>$1</var> foi descontinuado.",
+       "apiwarn-deprecation-parse-headitems": "<kbd>prop=headitems</kbd> é obsoleto desde o MediaWiki 1.28. Use <kbd>prop=headhtml</kbd> ao criar novos documentos de HTML, ou <kbd>prop=modules|jsconfigvars</kbd> ao atualizar um documento no lado do cliente.",
+       "apiwarn-deprecation-purge-get": "O uso de <kbd>action=purge</kbd> através de um GET foi descontinuado. Em substituição, use um POST.",
+       "apiwarn-deprecation-withreplacement": "<kbd>$1</kbd> foi descontinuado. Em substituição, use <kbd>$2</kbd>, por favor.",
+       "apiwarn-difftohidden": "Não foi possível criar uma lista das diferenças em relação à r$1: o conteúdo está ocultado.",
+       "apiwarn-errorprinterfailed": "A impressora de erros falhou. Será feita nova tentativa sem parâmetros.",
+       "apiwarn-errorprinterfailed-ex": "A impressora de erros falhou (será feita nova tentativa sem parâmetros): $1",
+       "apiwarn-invalidcategory": "\"$1\" não é uma categoria.",
+       "apiwarn-invalidtitle": "\"$1\" não é um título válido.",
+       "apiwarn-invalidxmlstylesheetext": "Uma folha de estilos deve ter a extensão <code>.xsl</code>.",
+       "apiwarn-invalidxmlstylesheet": "Foi especificada uma folha de estilos inválida ou inexistente.",
+       "apiwarn-invalidxmlstylesheetns": "A folha de estilos deveria estar no espaço nominal {{ns:MediaWiki}}.",
+       "apiwarn-moduleswithoutvars": "A propriedade <kbd>modules</kbd> foi definida mas <kbd>jsconfigvars</kbd> ou <kbd>encodedjsconfigvars</kbd> não o foram. Variáveis de configuração são necessárias para utilização correta de módulos.",
+       "apiwarn-notfile": "\"$1\" não é um ficheiro.",
+       "apiwarn-nothumb-noimagehandler": "Não foi possível criar a miniatura porque $1 não tem uma rotina associada de tratamento de imagens.",
+       "apiwarn-parse-nocontentmodel": "Não foi fornecido um <var>title</var> ou <var>contentmodel</var>, será assumido $1.",
+       "apiwarn-parse-titlewithouttext": "<var>title</var> foi usado sem <var>text</var>, e foram pedidas as propriedades da página analisada. Pretendia usar <var>page</var> em vez de <var>title</var>?",
+       "apiwarn-redirectsandrevids": "Resolução de redirecionamentos não pode ser usada em conjunto com o parâmetro <var>revids</var>. Quaisquer redirecionamentos para os quais <var>revids</var> aponta não foram resolvidos.",
+       "apiwarn-tokennotallowed": "A operação \"$1\" não é permitida para o utilizador atual.",
+       "apiwarn-tokens-origin": "Não é possível obter chaves quando a norma da mesma origem não é aplicada.",
+       "apiwarn-toomanyvalues": "Foram fornecidos demasiados valores para o parâmetro <var>$1</var>. O limite é $2.",
+       "apiwarn-truncatedresult": "Este resultado foi truncado porque ultrapassaria o limite de $1 bytes.",
+       "apiwarn-unclearnowtimestamp": "A passagem de \"$2\" no parâmetro de data e hora <var>$1</var> foi tornada obsoleta. Se, por qualquer razão, precisa de especificar de forma explícita a hora atual sem a calcular no lado do cliente, use <kbd>now</kbd>.",
+       "apiwarn-unrecognizedvalues": "{{PLURAL:$3|Valor não reconhecido|Valores não reconhecidos}} para o parâmetro <var>$1</var>: $2.",
+       "apiwarn-unsupportedarray": "O parâmetro <var>$1</var> usa sintaxe PHP de matrizes não suportada.",
+       "apiwarn-urlparamwidth": "O valor da largura definido em <var>$1urlparam</var> ($2) foi ignorado em favor da largura obtida a partir de <var>$1urlwidth</var>/<var>$1urlheight</var> ($3).",
+       "apiwarn-validationfailed-badchars": "caracteres inválidos na chave (só são permitidos <code>a-z</code>, <code>A-Z</code>, <code>0-9</code>, <code>_</code>, e <code>-</code>).",
+       "apiwarn-validationfailed-badpref": "não é uma preferência válida.",
+       "apiwarn-validationfailed-cannotset": "não pode ser definido por este módulo.",
+       "apiwarn-validationfailed-keytoolong": "chave demasiado longa (não pode ter mais de $1 bytes).",
+       "apiwarn-validationfailed": "Erro de validação de <kbd>$1</kbd>: $2",
+       "apiwarn-wgDebugAPI": "<strong>Aviso de segurança</strong>: <var>$wgDebugAPI</var> está ativado.",
+       "api-feed-error-title": "Erro ($1)",
+       "api-usage-docref": "Consulte $1 para a utilização da API.",
+       "api-usage-mailinglist-ref": "Subscreva a lista de distribuição mediawiki-api-announce em &lt;https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce&gt; para receber anúncios de descontinuação e de alterações disruptivas da API.",
+       "api-exception-trace": "$1 em $2($3)\n$4",
        "api-credits-header": "Créditos",
        "api-credits": "Programadores da API:\n* Yuri Astrakhan (criador, programador principal, set 2006–set 2007)\n* Roan Kattouw (programador principal, set 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Brad Jorsch (programador principal, 2013–presente)\n\nPode enviar os seus comentários, sugestões e perguntas para o endereço mediawiki-api@lists.wikimedia.org, ou reportar quaisquer defeitos que encontre em https://phabricator.wikimedia.org/."
 }
index 6e70653..9bcfdb0 100644 (file)
@@ -16,7 +16,8 @@
                        "D41D8CD98F"
                ]
        },
-       "apihelp-main-description": "{{doc-apihelp-description|main}}",
+       "apihelp-main-summary": "{{doc-apihelp-summary|main}}",
+       "apihelp-main-extended-description": "{{doc-apihelp-extended-description|main}}",
        "apihelp-main-param-action": "{{doc-apihelp-param|main|action}}",
        "apihelp-main-param-format": "{{doc-apihelp-param|main|format}}",
        "apihelp-main-param-maxlag": "{{doc-apihelp-param|main|maxlag}}",
@@ -33,7 +34,7 @@
        "apihelp-main-param-errorformat": "{{doc-apihelp-param|main|errorformat}}",
        "apihelp-main-param-errorlang": "{{doc-apihelp-param|main|errorlang}}",
        "apihelp-main-param-errorsuselocal": "{{doc-apihelp-param|main|errorsuselocal}}",
-       "apihelp-block-description": "{{doc-apihelp-description|block}}",
+       "apihelp-block-summary": "{{doc-apihelp-summary|block}}",
        "apihelp-block-param-user": "{{doc-apihelp-param|block|user}}",
        "apihelp-block-param-userid": "{{doc-apihelp-param|block|userid}}",
        "apihelp-block-param-expiry": "{{doc-apihelp-param|block|expiry}}\n{{doc-important|Do not translate \"5 months\", \"2 weeks\", \"infinite\", \"indefinite\" or \"never\"!}}",
        "apihelp-block-param-tags": "{{doc-apihelp-param|block|tags}}",
        "apihelp-block-example-ip-simple": "{{doc-apihelp-example|block}}",
        "apihelp-block-example-user-complex": "{{doc-apihelp-example|block}}",
-       "apihelp-changeauthenticationdata-description": "{{doc-apihelp-description|changeauthenticationdata}}",
+       "apihelp-changeauthenticationdata-summary": "{{doc-apihelp-summary|changeauthenticationdata}}",
        "apihelp-changeauthenticationdata-example-password": "{{doc-apihelp-example|changeauthenticationdata}}",
-       "apihelp-checktoken-description": "{{doc-apihelp-description|checktoken}}",
+       "apihelp-checktoken-summary": "{{doc-apihelp-summary|checktoken}}",
        "apihelp-checktoken-param-type": "{{doc-apihelp-param|checktoken|type}}",
        "apihelp-checktoken-param-token": "{{doc-apihelp-param|checktoken|token}}",
        "apihelp-checktoken-param-maxtokenage": "{{doc-apihelp-param|checktoken|maxtokenage}}",
        "apihelp-checktoken-example-simple": "{{doc-apihelp-example|checktoken}}",
-       "apihelp-clearhasmsg-description": "{{doc-apihelp-description|clearhasmsg}}",
+       "apihelp-clearhasmsg-summary": "{{doc-apihelp-summary|clearhasmsg}}",
        "apihelp-clearhasmsg-example-1": "{{doc-apihelp-example|clearhasmsg}}",
-       "apihelp-clientlogin-description": "{{doc-apihelp-description|clientlogin}}",
+       "apihelp-clientlogin-summary": "{{doc-apihelp-summary|clientlogin}}",
        "apihelp-clientlogin-example-login": "{{doc-apihelp-example|clientlogin}}",
        "apihelp-clientlogin-example-login2": "{{doc-apihelp-example|clientlogin}}",
-       "apihelp-compare-description": "{{doc-apihelp-description|compare}}",
+       "apihelp-compare-summary": "{{doc-apihelp-summary|compare}}",
+       "apihelp-compare-extended-description": "{{doc-apihelp-extended-description|compare}}",
        "apihelp-compare-param-fromtitle": "{{doc-apihelp-param|compare|fromtitle}}",
        "apihelp-compare-param-fromid": "{{doc-apihelp-param|compare|fromid}}",
        "apihelp-compare-param-fromrev": "{{doc-apihelp-param|compare|fromrev}}",
+       "apihelp-compare-param-fromtext": "{{doc-apihelp-param|compare|fromtext}}",
+       "apihelp-compare-param-frompst": "{{doc-apihelp-param|compare|frompst}}",
+       "apihelp-compare-param-fromcontentmodel": "{{doc-apihelp-param|compare|fromcontentmodel}}",
+       "apihelp-compare-param-fromcontentformat": "{{doc-apihelp-param|compare|fromcontentformat}}",
        "apihelp-compare-param-totitle": "{{doc-apihelp-param|compare|totitle}}",
        "apihelp-compare-param-toid": "{{doc-apihelp-param|compare|toid}}",
        "apihelp-compare-param-torev": "{{doc-apihelp-param|compare|torev}}",
+       "apihelp-compare-param-torelative": "{{doc-apihelp-param|compare|torelative}}",
+       "apihelp-compare-param-totext": "{{doc-apihelp-param|compare|totext}}",
+       "apihelp-compare-param-topst": "{{doc-apihelp-param|compare|topst}}",
+       "apihelp-compare-param-tocontentmodel": "{{doc-apihelp-param|compare|tocontentmodel}}",
+       "apihelp-compare-param-tocontentformat": "{{doc-apihelp-param|compare|tocontentformat}}",
+       "apihelp-compare-param-prop": "{{doc-apihelp-param|compare|prop}}",
+       "apihelp-compare-paramvalue-prop-diff": "{{doc-apihelp-paramvalue|compare|prop|diff}}",
+       "apihelp-compare-paramvalue-prop-diffsize": "{{doc-apihelp-paramvalue|compare|prop|diffsize}}",
+       "apihelp-compare-paramvalue-prop-rel": "{{doc-apihelp-paramvalue|compare|prop|rel}}",
+       "apihelp-compare-paramvalue-prop-ids": "{{doc-apihelp-paramvalue|compare|prop|ids}}",
+       "apihelp-compare-paramvalue-prop-title": "{{doc-apihelp-paramvalue|compare|prop|title}}",
+       "apihelp-compare-paramvalue-prop-user": "{{doc-apihelp-paramvalue|compare|prop|user}}",
+       "apihelp-compare-paramvalue-prop-comment": "{{doc-apihelp-paramvalue|compare|prop|comment}}",
+       "apihelp-compare-paramvalue-prop-parsedcomment": "{{doc-apihelp-paramvalue|compare|prop|parsedcomment}}",
+       "apihelp-compare-paramvalue-prop-size": "{{doc-apihelp-paramvalue|compare|prop|size}}",
        "apihelp-compare-example-1": "{{doc-apihelp-example|compare}}",
-       "apihelp-createaccount-description": "{{doc-apihelp-description|createaccount}}",
+       "apihelp-createaccount-summary": "{{doc-apihelp-summary|createaccount}}",
        "apihelp-createaccount-param-preservestate": "{{doc-apihelp-param|createaccount|preservestate|info=This message is displayed in addition to {{msg-mw|api-help-authmanagerhelper-preservestate}}.}}",
        "apihelp-createaccount-example-create": "{{doc-apihelp-example|createaccount}}",
        "apihelp-createaccount-param-name": "{{doc-apihelp-param|createaccount|name}}\n{{Identical|Username}}",
        "apihelp-createaccount-param-language": "{{doc-apihelp-param|createaccount|language}}",
        "apihelp-createaccount-example-pass": "{{doc-apihelp-example|createaccount}}",
        "apihelp-createaccount-example-mail": "{{doc-apihelp-example|createaccount}}",
-       "apihelp-cspreport-description": "{{doc-apihelp-description|cspreport}}",
+       "apihelp-cspreport-summary": "{{doc-apihelp-summary|cspreport}}",
        "apihelp-cspreport-param-reportonly": "{{doc-apihelp-param|cspreport|reportonly}}",
        "apihelp-cspreport-param-source": "{{doc-apihelp-param|cspreport|source}}",
-       "apihelp-delete-description": "{{doc-apihelp-description|delete}}",
+       "apihelp-delete-summary": "{{doc-apihelp-summary|delete}}",
        "apihelp-delete-param-title": "{{doc-apihelp-param|delete|title}}",
        "apihelp-delete-param-pageid": "{{doc-apihelp-param|delete|pageid}}",
        "apihelp-delete-param-reason": "{{doc-apihelp-param|delete|reason}}",
        "apihelp-delete-param-oldimage": "{{doc-apihelp-param|delete|oldimage}}",
        "apihelp-delete-example-simple": "{{doc-apihelp-example|delete}}",
        "apihelp-delete-example-reason": "{{doc-apihelp-example|delete}}",
-       "apihelp-disabled-description": "{{doc-apihelp-description|disabled}}",
-       "apihelp-edit-description": "{{doc-apihelp-description|edit}}",
+       "apihelp-disabled-summary": "{{doc-apihelp-summary|disabled}}",
+       "apihelp-edit-summary": "{{doc-apihelp-summary|edit}}",
        "apihelp-edit-param-title": "{{doc-apihelp-param|edit|title}}",
        "apihelp-edit-param-pageid": "{{doc-apihelp-param|edit|pageid}}",
        "apihelp-edit-param-section": "{{doc-apihelp-param|edit|section}}",
        "apihelp-edit-example-edit": "{{doc-apihelp-example|edit}}",
        "apihelp-edit-example-prepend": "{{doc-apihelp-example|edit}}",
        "apihelp-edit-example-undo": "{{doc-apihelp-example|edit}}",
-       "apihelp-emailuser-description": "{{doc-apihelp-description|emailuser}}",
+       "apihelp-emailuser-summary": "{{doc-apihelp-summary|emailuser}}",
        "apihelp-emailuser-param-target": "{{doc-apihelp-param|emailuser|target}}",
        "apihelp-emailuser-param-subject": "{{doc-apihelp-param|emailuser|subject}}",
        "apihelp-emailuser-param-text": "{{doc-apihelp-param|emailuser|text}}",
        "apihelp-emailuser-param-ccme": "{{doc-apihelp-param|emailuser|ccme}}",
        "apihelp-emailuser-example-email": "{{doc-apihelp-example|emailuser}}",
-       "apihelp-expandtemplates-description": "{{doc-apihelp-description|expandtemplates}}",
+       "apihelp-expandtemplates-summary": "{{doc-apihelp-summary|expandtemplates}}",
        "apihelp-expandtemplates-param-title": "{{doc-apihelp-param|expandtemplates|title}}",
        "apihelp-expandtemplates-param-text": "{{doc-apihelp-param|expandtemplates|text}}",
        "apihelp-expandtemplates-param-revid": "{{doc-apihelp-param|expandtemplates|revid}}\n{{doc-important|Do not translate <code><<nowiki />nowiki>{{<nowiki />REVISIONID}}<<nowiki />/nowiki></code>}}",
        "apihelp-expandtemplates-param-includecomments": "{{doc-apihelp-param|expandtemplates|includecomments}}",
        "apihelp-expandtemplates-param-generatexml": "{{doc-apihelp-param|expandtemplates|generatexml}}",
        "apihelp-expandtemplates-example-simple": "{{doc-apihelp-example|expandtemplates}}",
-       "apihelp-feedcontributions-description": "{{doc-apihelp-description|feedcontributions}}",
+       "apihelp-feedcontributions-summary": "{{doc-apihelp-summary|feedcontributions}}",
        "apihelp-feedcontributions-param-feedformat": "{{doc-apihelp-param|feedcontributions|feedformat}}",
        "apihelp-feedcontributions-param-user": "{{doc-apihelp-param|feedcontributions|user}}",
        "apihelp-feedcontributions-param-namespace": "{{doc-apihelp-param|feedcontributions|namespace}}",
        "apihelp-feedcontributions-param-hideminor": "{{doc-apihelp-param|feedcontributions|hideminor}}",
        "apihelp-feedcontributions-param-showsizediff": "{{doc-apihelp-param|feedcontributions|showsizediff}}",
        "apihelp-feedcontributions-example-simple": "{{doc-apihelp-example|feedcontributions}}",
-       "apihelp-feedrecentchanges-description": "{{doc-apihelp-description|feedrecentchanges}}",
+       "apihelp-feedrecentchanges-summary": "{{doc-apihelp-summary|feedrecentchanges}}",
        "apihelp-feedrecentchanges-param-feedformat": "{{doc-apihelp-param|feedrecentchanges|feedformat}}",
        "apihelp-feedrecentchanges-param-namespace": "{{doc-apihelp-param|feedrecentchanges|namespace}}",
        "apihelp-feedrecentchanges-param-invert": "{{doc-apihelp-param|feedrecentchanges|invert}}",
        "apihelp-feedrecentchanges-param-categories_any": "{{doc-apihelp-param|feedrecentchanges|categories_any}}",
        "apihelp-feedrecentchanges-example-simple": "{{doc-apihelp-example|feedrecentchanges}}",
        "apihelp-feedrecentchanges-example-30days": "{{doc-apihelp-example|feedrecentchanges}}",
-       "apihelp-feedwatchlist-description": "{{doc-apihelp-description|feedwatchlist}}",
+       "apihelp-feedwatchlist-summary": "{{doc-apihelp-summary|feedwatchlist}}",
        "apihelp-feedwatchlist-param-feedformat": "{{doc-apihelp-param|feedwatchlist|feedformat}}",
        "apihelp-feedwatchlist-param-hours": "{{doc-apihelp-param|feedwatchlist|hours}}",
        "apihelp-feedwatchlist-param-linktosections": "{{doc-apihelp-param|feedwatchlist|linktosections}}",
        "apihelp-feedwatchlist-example-default": "{{doc-apihelp-example|feedwatchlist}}",
        "apihelp-feedwatchlist-example-all6hrs": "{{doc-apihelp-example|feedwatchlist}}",
-       "apihelp-filerevert-description": "{{doc-apihelp-description|filerevert}}",
+       "apihelp-filerevert-summary": "{{doc-apihelp-summary|filerevert}}",
        "apihelp-filerevert-param-filename": "{{doc-apihelp-param|filerevert|filename}}",
        "apihelp-filerevert-param-comment": "Translate as \"a comment about the upload\".\n\n{{doc-apihelp-param|filerevert|comment}}",
        "apihelp-filerevert-param-archivename": "{{doc-apihelp-param|filerevert|archivename}}",
        "apihelp-filerevert-example-revert": "{{doc-apihelp-example|filerevert}}",
-       "apihelp-help-description": "{{doc-apihelp-description|help}}",
+       "apihelp-help-summary": "{{doc-apihelp-summary|help}}",
        "apihelp-help-param-modules": "{{doc-apihelp-param|help|modules}}",
        "apihelp-help-param-submodules": "{{doc-apihelp-param|help|submodules}}",
        "apihelp-help-param-recursivesubmodules": "{{doc-apihelp-param|help|recursivesubmodules}}",
        "apihelp-help-example-recursive": "{{doc-apihelp-example|help}}",
        "apihelp-help-example-help": "{{doc-apihelp-example|help}}",
        "apihelp-help-example-query": "{{doc-apihelp-example|help}}",
-       "apihelp-imagerotate-description": "{{doc-apihelp-description|imagerotate}}",
+       "apihelp-imagerotate-summary": "{{doc-apihelp-summary|imagerotate}}",
        "apihelp-imagerotate-param-rotation": "{{doc-apihelp-param|imagerotate|rotation}}",
        "apihelp-imagerotate-param-tags": "{{doc-apihelp-param|imagerotate|tags}}",
        "apihelp-imagerotate-example-simple": "{{doc-apihelp-example|imagerotate}}",
        "apihelp-imagerotate-example-generator": "{{doc-apihelp-example|imagerotate}}",
-       "apihelp-import-description": "{{doc-apihelp-description|import}}",
+       "apihelp-import-summary": "{{doc-apihelp-summary|import}}",
+       "apihelp-import-extended-description": "{{doc-apihelp-extended-description|import}}",
        "apihelp-import-param-summary": "{{doc-apihelp-param|import|summary|info=The parameter being documented here provides the summary used on the log messages about the import. The phrase \"Import summary\" here is grammatically equivalent to a phrase such as \"science book\", not \"eat food\".}}",
        "apihelp-import-param-xml": "{{doc-apihelp-param|import|xml}}",
        "apihelp-import-param-interwikisource": "{{doc-apihelp-param|import|interwikisource}}",
        "apihelp-import-param-rootpage": "{{doc-apihelp-param|import|rootpage}}",
        "apihelp-import-param-tags": "{{doc-apihelp-param|import|tags}}",
        "apihelp-import-example-import": "{{doc-apihelp-example|import}}",
-       "apihelp-linkaccount-description": "{{doc-apihelp-description|linkaccount}}",
+       "apihelp-linkaccount-summary": "{{doc-apihelp-summary|linkaccount}}",
        "apihelp-linkaccount-example-link": "{{doc-apihelp-example|linkaccount}}",
-       "apihelp-login-description": "{{doc-apihelp-description|login|info=This message is used when <code>$wgEnableBotPasswords</code> is true.|seealso=* {{msg-mw|apihelp-login-description-nobotpasswords}}}}",
-       "apihelp-login-description-nobotpasswords": "{{doc-apihelp-description|login|info=This message is used when <code>$wgEnableBotPasswords</code> is false.|seealso=* {{msg-mw|apihelp-login-description}}}}",
+       "apihelp-login-summary": "{{doc-apihelp-summary|login}}",
+       "apihelp-login-extended-description": "{{doc-apihelp-extended-description|login|info=This message is used when <code>$wgEnableBotPasswords</code> is true.|seealso=* {{msg-mw|apihelp-login-extended-description-nobotpasswords}}}}",
+       "apihelp-login-extended-description-nobotpasswords": "{{doc-apihelp-extended-description|login|info=This message is used when <code>$wgEnableBotPasswords</code> is false.|seealso=* {{msg-mw|apihelp-login-extended-description}}}}",
        "apihelp-login-param-name": "{{doc-apihelp-param|login|name}}\n{{Identical|Username}}",
        "apihelp-login-param-password": "{{doc-apihelp-param|login|password}}\n{{Identical|Password}}",
        "apihelp-login-param-domain": "{{doc-apihelp-param|login|domain}}",
        "apihelp-login-param-token": "{{doc-apihelp-param|login|token}}",
        "apihelp-login-example-gettoken": "{{doc-apihelp-example|login}}",
        "apihelp-login-example-login": "{{doc-apihelp-example|login}}\n{{Identical|Log in}}",
-       "apihelp-logout-description": "{{doc-apihelp-description|logout}}",
+       "apihelp-logout-summary": "{{doc-apihelp-summary|logout}}",
        "apihelp-logout-example-logout": "{{doc-apihelp-example|logout}}",
-       "apihelp-managetags-description": "{{doc-apihelp-description|managetags}}",
+       "apihelp-managetags-summary": "{{doc-apihelp-summary|managetags}}",
        "apihelp-managetags-param-operation": "{{doc-apihelp-param|managetags|operation}}",
        "apihelp-managetags-param-tag": "{{doc-apihelp-param|managetags|tag}}",
        "apihelp-managetags-param-reason": "{{doc-apihelp-param|managetags|reason}}",
        "apihelp-managetags-example-delete": "{{doc-apihelp-example|managetags|info={{doc-important|The text \"vandlaism\" in this message is intentionally misspelled; the example being documented by this message is the deletion of a misspelled tag.}}}}",
        "apihelp-managetags-example-activate": "{{doc-apihelp-example|managetags}}",
        "apihelp-managetags-example-deactivate": "{{doc-apihelp-example|managetags}}",
-       "apihelp-mergehistory-description": "{{doc-apihelp-description|mergehistory}}",
+       "apihelp-mergehistory-summary": "{{doc-apihelp-summary|mergehistory}}",
        "apihelp-mergehistory-param-from": "{{doc-apihelp-param|mergehistory|from}}",
        "apihelp-mergehistory-param-fromid": "{{doc-apihelp-param|mergehistory|fromid}}",
        "apihelp-mergehistory-param-to": "{{doc-apihelp-param|mergehistory|to}}",
        "apihelp-mergehistory-param-reason": "{{doc-apihelp-param|mergehistory|reason}}",
        "apihelp-mergehistory-example-merge": "{{doc-apihelp-example|mergehistory}}",
        "apihelp-mergehistory-example-merge-timestamp": "{{doc-apihelp-example|mergehistory}}",
-       "apihelp-move-description": "{{doc-apihelp-description|move}}",
+       "apihelp-move-summary": "{{doc-apihelp-summary|move}}",
        "apihelp-move-param-from": "{{doc-apihelp-param|move|from}}",
        "apihelp-move-param-fromid": "{{doc-apihelp-param|move|fromid}}",
        "apihelp-move-param-to": "{{doc-apihelp-param|move|to}}",
        "apihelp-move-param-ignorewarnings": "{{doc-apihelp-param|move|ignorewarnings}}",
        "apihelp-move-param-tags": "{{doc-apihelp-param|move|tags}}",
        "apihelp-move-example-move": "{{doc-apihelp-example|move}}",
-       "apihelp-opensearch-description": "{{doc-apihelp-description|opensearch}}",
+       "apihelp-opensearch-summary": "{{doc-apihelp-summary|opensearch}}",
        "apihelp-opensearch-param-search": "{{doc-apihelp-param|opensearch|search}}",
        "apihelp-opensearch-param-limit": "{{doc-apihelp-param|opensearch|limit}}",
        "apihelp-opensearch-param-namespace": "{{doc-apihelp-param|opensearch|namespace}}",
        "apihelp-opensearch-param-format": "{{doc-apihelp-param|opensearch|format}}",
        "apihelp-opensearch-param-warningsaserror": "{{doc-apihelp-param|opensearch|warningsaserror}}",
        "apihelp-opensearch-example-te": "{{doc-apihelp-example|opensearch}}",
-       "apihelp-options-description": "{{doc-apihelp-description|options}}",
+       "apihelp-options-summary": "{{doc-apihelp-summary|options}}",
+       "apihelp-options-extended-description": "{{doc-apihelp-extended-description|options}}",
        "apihelp-options-param-reset": "{{doc-apihelp-param|options|reset}}",
        "apihelp-options-param-resetkinds": "{{doc-apihelp-param|options|resetkinds}}",
        "apihelp-options-param-change": "{{doc-apihelp-param|options|change}}",
        "apihelp-options-example-reset": "{{doc-apihelp-example|options}}",
        "apihelp-options-example-change": "{{doc-apihelp-example|options}}",
        "apihelp-options-example-complex": "{{doc-apihelp-example|options}}",
-       "apihelp-paraminfo-description": "{{doc-apihelp-description|paraminfo}}",
+       "apihelp-paraminfo-summary": "{{doc-apihelp-summary|paraminfo}}",
        "apihelp-paraminfo-param-modules": "{{doc-apihelp-param|paraminfo|modules}}",
        "apihelp-paraminfo-param-helpformat": "{{doc-apihelp-param|paraminfo|helpformat}}",
        "apihelp-paraminfo-param-querymodules": "{{doc-apihelp-param|paraminfo|querymodules}}",
        "apihelp-paraminfo-param-formatmodules": "{{doc-apihelp-param|paraminfo|formatmodules}}",
        "apihelp-paraminfo-example-1": "{{doc-apihelp-example|paraminfo}}",
        "apihelp-paraminfo-example-2": "{{doc-apihelp-example|paraminfo}}",
-       "apihelp-parse-description": "{{doc-apihelp-description|parse}}",
+       "apihelp-parse-summary": "{{doc-apihelp-summary|parse}}",
+       "apihelp-parse-extended-description": "{{doc-apihelp-extended-description|parse}}",
        "apihelp-parse-param-title": "{{doc-apihelp-param|parse|title}}",
        "apihelp-parse-param-text": "{{doc-apihelp-param|parse|text}}",
        "apihelp-parse-param-summary": "{{doc-apihelp-param|parse|summary}}",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "{{doc-apihelp-paramvalue|parse|prop|limitreporthtml}}",
        "apihelp-parse-paramvalue-prop-parsetree": "{{doc-apihelp-paramvalue|parse|prop|parsetree|params=* $1 - Value of the constant CONTENT_MODEL_WIKITEXT|paramstart=2}}",
        "apihelp-parse-paramvalue-prop-parsewarnings": "{{doc-apihelp-paramvalue|parse|prop|parsewarnings}}",
+       "apihelp-parse-param-wrapoutputclass": "{{doc-apihelp-param|parse|wrapoutputclass}}",
        "apihelp-parse-param-pst": "{{doc-apihelp-param|parse|pst}}",
        "apihelp-parse-param-onlypst": "{{doc-apihelp-param|parse|onlypst}}",
        "apihelp-parse-param-effectivelanglinks": "{{doc-apihelp-param|parse|effectivelanglinks}}",
        "apihelp-parse-param-preview": "{{doc-apihelp-param|parse|preview}}",
        "apihelp-parse-param-sectionpreview": "{{doc-apihelp-param|parse|sectionpreview}}",
        "apihelp-parse-param-disabletoc": "{{doc-apihelp-param|parse|disabletoc}}",
+       "apihelp-parse-param-useskin": "{{doc-apihelp-param|parse|useskin}}",
        "apihelp-parse-param-contentformat": "{{doc-apihelp-param|parse|contentformat}}",
        "apihelp-parse-param-contentmodel": "{{doc-apihelp-param|parse|contentmodel}}",
        "apihelp-parse-example-page": "{{doc-apihelp-example|parse}}",
        "apihelp-parse-example-text": "{{doc-apihelp-example|parse}}",
        "apihelp-parse-example-texttitle": "{{doc-apihelp-example|parse}}",
        "apihelp-parse-example-summary": "{{doc-apihelp-example|parse}}",
-       "apihelp-patrol-description": "{{doc-apihelp-description|patrol}}",
+       "apihelp-patrol-summary": "{{doc-apihelp-summary|patrol}}",
        "apihelp-patrol-param-rcid": "{{doc-apihelp-param|patrol|rcid}}",
        "apihelp-patrol-param-revid": "{{doc-apihelp-param|patrol|revid}}",
        "apihelp-patrol-param-tags": "{{doc-apihelp-param|patrol|tags}}",
        "apihelp-patrol-example-rcid": "{{doc-apihelp-example|patrol}}",
        "apihelp-patrol-example-revid": "{{doc-apihelp-example|patrol}}",
-       "apihelp-protect-description": "{{doc-apihelp-description|protect}}",
+       "apihelp-protect-summary": "{{doc-apihelp-summary|protect}}",
        "apihelp-protect-param-title": "{{doc-apihelp-param|protect|title}}",
        "apihelp-protect-param-pageid": "{{doc-apihelp-param|protect|pageid}}",
        "apihelp-protect-param-protections": "{{doc-apihelp-param|protect|protections}}",
        "apihelp-protect-example-protect": "{{doc-apihelp-example|protect}}",
        "apihelp-protect-example-unprotect": "{{doc-apihelp-example|protect}}",
        "apihelp-protect-example-unprotect2": "{{doc-apihelp-example|protect}}",
-       "apihelp-purge-description": "{{doc-apihelp-description|purge}}",
+       "apihelp-purge-summary": "{{doc-apihelp-summary|purge}}",
        "apihelp-purge-param-forcelinkupdate": "{{doc-apihelp-param|purge|forcelinkupdate}}",
        "apihelp-purge-param-forcerecursivelinkupdate": "{{doc-apihelp-param|purge|forcerecursivelinkupdate}}",
        "apihelp-purge-example-simple": "{{doc-apihelp-example|purge}}",
        "apihelp-purge-example-generator": "{{doc-apihelp-example|purge}}",
-       "apihelp-query-description": "{{doc-apihelp-description|query}}",
+       "apihelp-query-summary": "{{doc-apihelp-summary|query}}",
+       "apihelp-query-extended-description": "{{doc-apihelp-extended-description|query}}",
        "apihelp-query-param-prop": "{{doc-apihelp-param|query|prop}}",
        "apihelp-query-param-list": "{{doc-apihelp-param|query|list}}",
        "apihelp-query-param-meta": "{{doc-apihelp-param|query|meta}}",
        "apihelp-query-param-rawcontinue": "{{doc-apihelp-param|query|rawcontinue}}",
        "apihelp-query-example-revisions": "{{doc-apihelp-example|query}}",
        "apihelp-query-example-allpages": "{{doc-apihelp-example|query}}",
-       "apihelp-query+allcategories-description": "{{doc-apihelp-description|query+allcategories}}",
+       "apihelp-query+allcategories-summary": "{{doc-apihelp-summary|query+allcategories}}",
        "apihelp-query+allcategories-param-from": "{{doc-apihelp-param|query+allcategories|from}}",
        "apihelp-query+allcategories-param-to": "{{doc-apihelp-param|query+allcategories|to}}",
        "apihelp-query+allcategories-param-prefix": "{{doc-apihelp-param|query+allcategories|prefix}}",
        "apihelp-query+allcategories-paramvalue-prop-hidden": "{{doc-apihelp-paramvalue|query+allcategories|prop|hidden}}",
        "apihelp-query+allcategories-example-size": "{{doc-apihelp-example|query+allcategories}}",
        "apihelp-query+allcategories-example-generator": "{{doc-apihelp-example|query+allcategories}}",
-       "apihelp-query+alldeletedrevisions-description": "{{doc-apihelp-description|query+alldeletedrevisions}}",
+       "apihelp-query+alldeletedrevisions-summary": "{{doc-apihelp-summary|query+alldeletedrevisions}}",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "{{doc-apihelp-paraminfo|query+alldeletedrevisions|useronly}}",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "{{doc-apihelp-paraminfo|query+alldeletedrevisions|nonuseronly}}",
        "apihelp-query+alldeletedrevisions-param-start": "{{doc-apihelp-param|query+alldeletedrevisions|start}}",
        "apihelp-query+alldeletedrevisions-param-generatetitles": "{{doc-apihelp-param|query+alldeletedrevisions|generatetitles}}",
        "apihelp-query+alldeletedrevisions-example-user": "{{doc-apihelp-example|query+alldeletedrevisions}}",
        "apihelp-query+alldeletedrevisions-example-ns-main": "{{doc-apihelp-example|query+alldeletedrevisions}}",
-       "apihelp-query+allfileusages-description": "{{doc-apihelp-description|query+allfileusages}}",
+       "apihelp-query+allfileusages-summary": "{{doc-apihelp-summary|query+allfileusages}}",
        "apihelp-query+allfileusages-param-from": "{{doc-apihelp-param|query+allfileusages|from}}",
        "apihelp-query+allfileusages-param-to": "{{doc-apihelp-param|query+allfileusages|to}}",
        "apihelp-query+allfileusages-param-prefix": "{{doc-apihelp-param|query+allfileusages|prefix}}",
        "apihelp-query+allfileusages-example-unique": "{{doc-apihelp-example|query+allfileusages}}",
        "apihelp-query+allfileusages-example-unique-generator": "{{doc-apihelp-example|query+allfileusages}}",
        "apihelp-query+allfileusages-example-generator": "{{doc-apihelp-example|query+allfileusages}}",
-       "apihelp-query+allimages-description": "{{doc-apihelp-description|query+allimages}}",
+       "apihelp-query+allimages-summary": "{{doc-apihelp-summary|query+allimages}}",
        "apihelp-query+allimages-param-sort": "{{doc-apihelp-param|query+allimages|sort}}",
        "apihelp-query+allimages-param-dir": "{{doc-apihelp-param|query+allimages|dir}}",
        "apihelp-query+allimages-param-from": "{{doc-apihelp-param|query+allimages|from}}",
        "apihelp-query+allimages-example-recent": "{{doc-apihelp-example|query+allimages}}",
        "apihelp-query+allimages-example-mimetypes": "{{doc-apihelp-example|query+allimages}}",
        "apihelp-query+allimages-example-generator": "{{doc-apihelp-example|query+allimages}}",
-       "apihelp-query+alllinks-description": "{{doc-apihelp-description|query+alllinks}}",
+       "apihelp-query+alllinks-summary": "{{doc-apihelp-summary|query+alllinks}}",
        "apihelp-query+alllinks-param-from": "{{doc-apihelp-param|query+alllinks|from}}",
        "apihelp-query+alllinks-param-to": "{{doc-apihelp-param|query+alllinks|to}}",
        "apihelp-query+alllinks-param-prefix": "{{doc-apihelp-param|query+alllinks|prefix}}",
        "apihelp-query+alllinks-example-unique": "{{doc-apihelp-example|query+alllinks}}",
        "apihelp-query+alllinks-example-unique-generator": "{{doc-apihelp-example|query+alllinks}}",
        "apihelp-query+alllinks-example-generator": "{{doc-apihelp-example|query+alllinks}}",
-       "apihelp-query+allmessages-description": "{{doc-apihelp-description|query+allmessages}}",
+       "apihelp-query+allmessages-summary": "{{doc-apihelp-summary|query+allmessages}}",
        "apihelp-query+allmessages-param-messages": "{{doc-apihelp-param|query+allmessages|messages}}",
        "apihelp-query+allmessages-param-prop": "{{doc-apihelp-param|query+allmessages|prop}}",
        "apihelp-query+allmessages-param-enableparser": "{{doc-apihelp-param|query+allmessages|enableparser}}",
        "apihelp-query+allmessages-param-prefix": "{{doc-apihelp-param|query+allmessages|prefix}}",
        "apihelp-query+allmessages-example-ipb": "{{doc-apihelp-example|query+allmessages}}",
        "apihelp-query+allmessages-example-de": "{{doc-apihelp-example|query+allmessages}}",
-       "apihelp-query+allpages-description": "{{doc-apihelp-description|query+allpages}}",
+       "apihelp-query+allpages-summary": "{{doc-apihelp-summary|query+allpages}}",
        "apihelp-query+allpages-param-from": "{{doc-apihelp-param|query+allpages|from}}",
        "apihelp-query+allpages-param-to": "{{doc-apihelp-param|query+allpages|to}}",
        "apihelp-query+allpages-param-prefix": "{{doc-apihelp-param|query+allpages|prefix}}",
        "apihelp-query+allpages-example-B": "{{doc-apihelp-example|query+allpages}}",
        "apihelp-query+allpages-example-generator": "{{doc-apihelp-example|query+allpages}}",
        "apihelp-query+allpages-example-generator-revisions": "{{doc-apihelp-example|query+allpages}}",
-       "apihelp-query+allredirects-description": "{{doc-apihelp-description|query+allredirects}}",
+       "apihelp-query+allredirects-summary": "{{doc-apihelp-summary|query+allredirects}}",
        "apihelp-query+allredirects-param-from": "{{doc-apihelp-param|query+allredirects|from}}",
        "apihelp-query+allredirects-param-to": "{{doc-apihelp-param|query+allredirects|to}}",
        "apihelp-query+allredirects-param-prefix": "{{doc-apihelp-param|query+allredirects|prefix}}",
        "apihelp-query+allredirects-example-unique": "{{doc-apihelp-example|query+allredirects}}",
        "apihelp-query+allredirects-example-unique-generator": "{{doc-apihelp-example|query+allredirects}}",
        "apihelp-query+allredirects-example-generator": "{{doc-apihelp-example|query+allredirects}}",
-       "apihelp-query+allrevisions-description": "{{doc-apihelp-description|query+allrevisions}}",
+       "apihelp-query+allrevisions-summary": "{{doc-apihelp-summary|query+allrevisions}}",
        "apihelp-query+allrevisions-param-start": "{{doc-apihelp-param|query+allrevisions|start}}",
        "apihelp-query+allrevisions-param-end": "{{doc-apihelp-param|query+allrevisions|end}}",
        "apihelp-query+allrevisions-param-user": "{{doc-apihelp-param|query+allrevisions|user}}",
        "apihelp-query+allrevisions-param-generatetitles": "{{doc-apihelp-param|query+allrevisions|generatetitles}}",
        "apihelp-query+allrevisions-example-user": "{{doc-apihelp-example|query+allrevisions}}",
        "apihelp-query+allrevisions-example-ns-main": "{{doc-apihelp-example|query+allrevisions}}",
-       "apihelp-query+mystashedfiles-description": "{{doc-apihelp-description|query+mystashedfiles}}",
+       "apihelp-query+mystashedfiles-summary": "{{doc-apihelp-summary|query+mystashedfiles}}",
        "apihelp-query+mystashedfiles-param-prop": "{{doc-apihelp-param|query+mystashedfiles|prop|paramvalues=1}}",
        "apihelp-query+mystashedfiles-paramvalue-prop-size": "{{doc-apihelp-paramvalue|query+mystashedfiles|prop|size}}",
        "apihelp-query+mystashedfiles-paramvalue-prop-type": "{{doc-apihelp-paramvalue|query+mystashedfiles|prop|type}}",
        "apihelp-query+mystashedfiles-param-limit": "{{doc-apihelp-param|query+mystashedfiles|limit}}",
        "apihelp-query+mystashedfiles-example-simple": "{{doc-apihelp-example|query+mystashedfiles}}",
-       "apihelp-query+alltransclusions-description": "{{doc-apihelp-description|query+alltransclusions}}",
+       "apihelp-query+alltransclusions-summary": "{{doc-apihelp-summary|query+alltransclusions}}",
        "apihelp-query+alltransclusions-param-from": "{{doc-apihelp-param|query+alltransclusions|from}}",
        "apihelp-query+alltransclusions-param-to": "{{doc-apihelp-param|query+alltransclusions|to}}",
        "apihelp-query+alltransclusions-param-prefix": "{{doc-apihelp-param|query+alltransclusions|prefix}}",
        "apihelp-query+alltransclusions-example-unique": "{{doc-apihelp-example|query+alltransclusions}}",
        "apihelp-query+alltransclusions-example-unique-generator": "{{doc-apihelp-example|query+alltransclusions}}",
        "apihelp-query+alltransclusions-example-generator": "{{doc-apihelp-example|query+alltransclusions}}",
-       "apihelp-query+allusers-description": "{{doc-apihelp-description|query+allusers}}",
+       "apihelp-query+allusers-summary": "{{doc-apihelp-summary|query+allusers}}",
        "apihelp-query+allusers-param-from": "{{doc-apihelp-param|query+allusers|from}}",
        "apihelp-query+allusers-param-to": "{{doc-apihelp-param|query+allusers|to}}",
        "apihelp-query+allusers-param-prefix": "{{doc-apihelp-param|query+allusers|prefix}}",
        "apihelp-query+allusers-param-activeusers": "{{doc-apihelp-param|query+allusers|activeusers|params=* $1 - Value of [[mw:Manual:$wgActiveUserDays]]|paramstart=2}}",
        "apihelp-query+allusers-param-attachedwiki": "{{doc-apihelp-param|query+allusers|attachedwiki}}",
        "apihelp-query+allusers-example-Y": "{{doc-apihelp-example|query+allusers}}",
-       "apihelp-query+authmanagerinfo-description": "{{doc-apihelp-description|query+authmanagerinfo}}",
+       "apihelp-query+authmanagerinfo-summary": "{{doc-apihelp-summary|query+authmanagerinfo}}",
        "apihelp-query+authmanagerinfo-param-securitysensitiveoperation": "{{doc-apihelp-param|query+authmanagerinfo|securitysensitiveoperation}}",
        "apihelp-query+authmanagerinfo-param-requestsfor": "{{doc-apihelp-param|query+authmanagerinfo|requestsfor}}",
        "apihelp-query+authmanagerinfo-example-login": "{{doc-apihelp-example|query+authmanagerinfo}}",
        "apihelp-query+authmanagerinfo-example-login-merged": "{{doc-apihelp-example|query+authmanagerinfo}}",
        "apihelp-query+authmanagerinfo-example-securitysensitiveoperation": "{{doc-apihelp-example|query+authmanagerinfo}}",
-       "apihelp-query+backlinks-description": "{{doc-apihelp-description|query+backlinks}}",
+       "apihelp-query+backlinks-summary": "{{doc-apihelp-summary|query+backlinks}}",
        "apihelp-query+backlinks-param-title": "{{doc-apihelp-param|query+backlinks|title}}",
        "apihelp-query+backlinks-param-pageid": "{{doc-apihelp-param|query+backlinks|pageid}}",
        "apihelp-query+backlinks-param-namespace": "{{doc-apihelp-param|query+backlinks|namespace}}",
        "apihelp-query+backlinks-param-redirect": "\"Is halved\" means that the limits are half of the usual ones.\n----\n{{doc-apihelp-param|query+backlinks|redirect}}",
        "apihelp-query+backlinks-example-simple": "{{doc-apihelp-example|query+backlinks}}",
        "apihelp-query+backlinks-example-generator": "{{doc-apihelp-example|query+backlinks}}",
-       "apihelp-query+blocks-description": "{{doc-apihelp-description|query+blocks}}",
+       "apihelp-query+blocks-summary": "{{doc-apihelp-summary|query+blocks}}",
        "apihelp-query+blocks-param-start": "{{doc-apihelp-param|query+blocks|start}}",
        "apihelp-query+blocks-param-end": "{{doc-apihelp-param|query+blocks|end}}",
        "apihelp-query+blocks-param-ids": "{{doc-apihelp-param|query+blocks|ids}}",
        "apihelp-query+blocks-param-show": "{{doc-apihelp-param|query+blocks|show}}",
        "apihelp-query+blocks-example-simple": "{{doc-apihelp-example|query+blocks}}",
        "apihelp-query+blocks-example-users": "{{doc-apihelp-example|query+blocks}}",
-       "apihelp-query+categories-description": "{{doc-apihelp-description|query+categories}}",
+       "apihelp-query+categories-summary": "{{doc-apihelp-summary|query+categories}}",
        "apihelp-query+categories-param-prop": "{{doc-apihelp-param|query+categories|prop|paramvalues=1}}",
        "apihelp-query+categories-paramvalue-prop-sortkey": "{{doc-apihelp-paramvalue|query+categories|prop|sortkey}}",
        "apihelp-query+categories-paramvalue-prop-timestamp": "{{doc-apihelp-paramvalue|query+categories|prop|timestamp}}",
        "apihelp-query+categories-param-dir": "{{doc-apihelp-param|query+categories|dir}}",
        "apihelp-query+categories-example-simple": "{{doc-apihelp-example|query+categories}}",
        "apihelp-query+categories-example-generator": "{{doc-apihelp-example|query+categories}}",
-       "apihelp-query+categoryinfo-description": "{{doc-apihelp-description|query+categoryinfo}}",
+       "apihelp-query+categoryinfo-summary": "{{doc-apihelp-summary|query+categoryinfo}}",
        "apihelp-query+categoryinfo-example-simple": "{{doc-apihelp-example|query+categoryinfo}}",
-       "apihelp-query+categorymembers-description": "{{doc-apihelp-description|query+categorymembers}}",
+       "apihelp-query+categorymembers-summary": "{{doc-apihelp-summary|query+categorymembers}}",
        "apihelp-query+categorymembers-param-title": "{{doc-apihelp-param|query+categorymembers|title}}",
        "apihelp-query+categorymembers-param-pageid": "{{doc-apihelp-param|query+categorymembers|pageid}}",
        "apihelp-query+categorymembers-param-prop": "{{doc-apihelp-param|query+categorymembers|prop|paramvalues=1}}",
        "apihelp-query+categorymembers-param-endsortkey": "{{doc-apihelp-param|query+categorymembers|endsortkey}}",
        "apihelp-query+categorymembers-example-simple": "{{doc-apihelp-example|query+categorymembers}}",
        "apihelp-query+categorymembers-example-generator": "{{doc-apihelp-example|query+categorymembers}}",
-       "apihelp-query+contributors-description": "{{doc-apihelp-description|query+contributors}}",
+       "apihelp-query+contributors-summary": "{{doc-apihelp-summary|query+contributors}}",
        "apihelp-query+contributors-param-group": "{{doc-apihelp-param|query+contributors|group}}",
        "apihelp-query+contributors-param-excludegroup": "{{doc-apihelp-param|query+contributors|excludegroup}}",
        "apihelp-query+contributors-param-rights": "{{doc-apihelp-param|query+contributors|rights}}",
        "apihelp-query+contributors-param-excluderights": "{{doc-apihelp-param|query+contributors|excluderights}}",
        "apihelp-query+contributors-param-limit": "{{doc-apihelp-param|query+contributors|limit}}",
        "apihelp-query+contributors-example-simple": "{{doc-apihelp-example|query+contributors}}",
-       "apihelp-query+deletedrevisions-description": "{{doc-apihelp-description|query+deletedrevisions}}",
+       "apihelp-query+deletedrevisions-summary": "{{doc-apihelp-summary|query+deletedrevisions}}",
+       "apihelp-query+deletedrevisions-extended-description": "{{doc-apihelp-extended-description|query+deletedrevisions}}",
        "apihelp-query+deletedrevisions-param-start": "{{doc-apihelp-param|query+deletedrevisions|start}}",
        "apihelp-query+deletedrevisions-param-end": "{{doc-apihelp-param|query+deletedrevisions|end}}",
        "apihelp-query+deletedrevisions-param-tag": "{{doc-apihelp-param|query+deletedrevisions|tag}}",
        "apihelp-query+deletedrevisions-param-excludeuser": "{{doc-apihelp-param|query+deletedrevisions|excludeuser}}",
        "apihelp-query+deletedrevisions-example-titles": "{{doc-apihelp-example|query+deletedrevisions}}",
        "apihelp-query+deletedrevisions-example-revids": "{{doc-apihelp-example|query+deletedrevisions}}",
-       "apihelp-query+deletedrevs-description": "{{doc-apihelp-description|query+deletedrevs}}",
+       "apihelp-query+deletedrevs-summary": "{{doc-apihelp-summary|query+deletedrevs}}",
+       "apihelp-query+deletedrevs-extended-description": "{{doc-apihelp-extended-description|query+deletedrevs}}",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{doc-apihelp-paraminfo|query+deletedrevs|modes}}\n{{Identical|Mode}}",
        "apihelp-query+deletedrevs-param-start": "{{doc-apihelp-param|query+deletedrevs|start}}",
        "apihelp-query+deletedrevs-param-end": "{{doc-apihelp-param|query+deletedrevs|end}}",
        "apihelp-query+deletedrevs-example-mode2": "{{doc-apihelp-example|query+deletedrevs}}",
        "apihelp-query+deletedrevs-example-mode3-main": "{{doc-apihelp-example|query+deletedrevs}}",
        "apihelp-query+deletedrevs-example-mode3-talk": "{{doc-apihelp-example|query+deletedrevs}}",
-       "apihelp-query+disabled-description": "{{doc-apihelp-description|query+disabled}}",
-       "apihelp-query+duplicatefiles-description": "{{doc-apihelp-description|query+duplicatefiles}}",
+       "apihelp-query+disabled-summary": "{{doc-apihelp-summary|query+disabled}}",
+       "apihelp-query+duplicatefiles-summary": "{{doc-apihelp-summary|query+duplicatefiles}}",
        "apihelp-query+duplicatefiles-param-limit": "{{doc-apihelp-param|query+duplicatefiles|limit}}",
        "apihelp-query+duplicatefiles-param-dir": "{{doc-apihelp-param|query+duplicatefiles|dir}}",
        "apihelp-query+duplicatefiles-param-localonly": "{{doc-apihelp-param|query+duplicatefiles|localonly}}",
        "apihelp-query+duplicatefiles-example-simple": "{{doc-apihelp-example|query+duplicatefiles}}",
        "apihelp-query+duplicatefiles-example-generated": "{{doc-apihelp-example|query+duplicatefiles}}",
-       "apihelp-query+embeddedin-description": "{{doc-apihelp-description|query+embeddedin}}",
+       "apihelp-query+embeddedin-summary": "{{doc-apihelp-summary|query+embeddedin}}",
        "apihelp-query+embeddedin-param-title": "{{doc-apihelp-param|query+embeddedin|title}}",
        "apihelp-query+embeddedin-param-pageid": "{{doc-apihelp-param|query+embeddedin|pageid}}",
        "apihelp-query+embeddedin-param-namespace": "{{doc-apihelp-param|query+embeddedin|namespace}}",
        "apihelp-query+embeddedin-param-limit": "{{doc-apihelp-param|query+embeddedin|limit}}",
        "apihelp-query+embeddedin-example-simple": "{{doc-apihelp-example|query+embeddedin}}",
        "apihelp-query+embeddedin-example-generator": "{{doc-apihelp-example|query+embeddedin}}",
-       "apihelp-query+extlinks-description": "{{doc-apihelp-description|query+extlinks}}",
+       "apihelp-query+extlinks-summary": "{{doc-apihelp-summary|query+extlinks}}",
        "apihelp-query+extlinks-param-limit": "{{doc-apihelp-param|query+extlinks|limit}}",
        "apihelp-query+extlinks-param-protocol": "{{doc-apihelp-param|query+extlinks|protocol}}",
        "apihelp-query+extlinks-param-query": "{{doc-apihelp-param|query+extlinks|query}}",
        "apihelp-query+extlinks-param-expandurl": "{{doc-apihelp-param|query+extlinks|expandurl}}",
        "apihelp-query+extlinks-example-simple": "{{doc-apihelp-example|query+extlinks}}",
-       "apihelp-query+exturlusage-description": "{{doc-apihelp-description|query+exturlusage}}",
+       "apihelp-query+exturlusage-summary": "{{doc-apihelp-summary|query+exturlusage}}",
        "apihelp-query+exturlusage-param-prop": "{{doc-apihelp-param|query+exturlusage|prop|paramvalues=1}}",
        "apihelp-query+exturlusage-paramvalue-prop-ids": "{{doc-apihelp-paramvalue|query+exturlusage|prop|ids}}",
        "apihelp-query+exturlusage-paramvalue-prop-title": "{{doc-apihelp-paramvalue|query+exturlusage|prop|title}}",
        "apihelp-query+exturlusage-param-limit": "{{doc-apihelp-param|query+exturlusage|limit}}",
        "apihelp-query+exturlusage-param-expandurl": "{{doc-apihelp-param|query+exturlusage|expandurl}}",
        "apihelp-query+exturlusage-example-simple": "{{doc-apihelp-example|query+exturlusage}}",
-       "apihelp-query+filearchive-description": "{{doc-apihelp-description|query+filearchive}}",
+       "apihelp-query+filearchive-summary": "{{doc-apihelp-summary|query+filearchive}}",
        "apihelp-query+filearchive-param-from": "{{doc-apihelp-param|query+filearchive|from}}",
        "apihelp-query+filearchive-param-to": "{{doc-apihelp-param|query+filearchive|to}}",
        "apihelp-query+filearchive-param-prefix": "{{doc-apihelp-param|query+filearchive|prefix}}",
        "apihelp-query+filearchive-paramvalue-prop-bitdepth": "{{doc-apihelp-paramvalue|query+filearchive|prop|bitdepth}}",
        "apihelp-query+filearchive-paramvalue-prop-archivename": "{{doc-apihelp-paramvalue|query+filearchive|prop|archivename}}",
        "apihelp-query+filearchive-example-simple": "{{doc-apihelp-example|query+filearchive}}",
-       "apihelp-query+filerepoinfo-description": "{{doc-apihelp-description|query+filerepoinfo}}",
+       "apihelp-query+filerepoinfo-summary": "{{doc-apihelp-summary|query+filerepoinfo}}",
        "apihelp-query+filerepoinfo-param-prop": "{{doc-apihelp-param|query+filerepoinfo|prop}}",
        "apihelp-query+filerepoinfo-example-simple": "{{doc-apihelp-example|query+filerepoinfo}}",
-       "apihelp-query+fileusage-description": "{{doc-apihelp-description|query+fileusage}}",
+       "apihelp-query+fileusage-summary": "{{doc-apihelp-summary|query+fileusage}}",
        "apihelp-query+fileusage-param-prop": "{{doc-apihelp-param|query+fileusage|prop|paramvalues=1}}",
        "apihelp-query+fileusage-paramvalue-prop-pageid": "{{doc-apihelp-paramvalue|query+fileusage|prop|pageid}}",
        "apihelp-query+fileusage-paramvalue-prop-title": "{{doc-apihelp-paramvalue|query+fileusage|prop|title}}",
        "apihelp-query+fileusage-param-show": "{{doc-apihelp-param|query+fileusage|show}}",
        "apihelp-query+fileusage-example-simple": "{{doc-apihelp-example|query+fileusage}}",
        "apihelp-query+fileusage-example-generator": "{{doc-apihelp-example|query+fileusage}}",
-       "apihelp-query+imageinfo-description": "{{doc-apihelp-description|query+imageinfo}}",
+       "apihelp-query+imageinfo-summary": "{{doc-apihelp-summary|query+imageinfo}}",
        "apihelp-query+imageinfo-param-prop": "{{doc-apihelp-param|query+imageinfo|prop|paramvalues=1}}",
        "apihelp-query+imageinfo-paramvalue-prop-timestamp": "{{doc-apihelp-paramvalue|query+imageinfo|prop|timestamp}}",
        "apihelp-query+imageinfo-paramvalue-prop-user": "{{doc-apihelp-paramvalue|query+imageinfo|prop|user}}",
        "apihelp-query+imageinfo-param-localonly": "{{doc-apihelp-param|query+imageinfo|localonly}}",
        "apihelp-query+imageinfo-example-simple": "{{doc-apihelp-example|query+imageinfo}}",
        "apihelp-query+imageinfo-example-dated": "{{doc-apihelp-example|query+imageinfo}}",
-       "apihelp-query+images-description": "{{doc-apihelp-description|query+images}}",
+       "apihelp-query+images-summary": "{{doc-apihelp-summary|query+images}}",
        "apihelp-query+images-param-limit": "{{doc-apihelp-param|query+images|limit}}",
        "apihelp-query+images-param-images": "{{doc-apihelp-param|query+images|images}}",
        "apihelp-query+images-param-dir": "{{doc-apihelp-param|query+images|dir}}",
        "apihelp-query+images-example-simple": "{{doc-apihelp-example|query+images}}",
        "apihelp-query+images-example-generator": "{{doc-apihelp-example|query+images}}",
-       "apihelp-query+imageusage-description": "{{doc-apihelp-description|query+imageusage}}",
+       "apihelp-query+imageusage-summary": "{{doc-apihelp-summary|query+imageusage}}",
        "apihelp-query+imageusage-param-title": "{{doc-apihelp-param|query+imageusage|title}}",
        "apihelp-query+imageusage-param-pageid": "{{doc-apihelp-param|query+imageusage|pageid}}",
        "apihelp-query+imageusage-param-namespace": "{{doc-apihelp-param|query+imageusage|namespace}}",
        "apihelp-query+imageusage-param-redirect": "{{doc-apihelp-param|query+imageusage|redirect}}",
        "apihelp-query+imageusage-example-simple": "{{doc-apihelp-example|query+imageusage}}",
        "apihelp-query+imageusage-example-generator": "{{doc-apihelp-example|query+imageusage}}",
-       "apihelp-query+info-description": "{{doc-apihelp-description|query+info}}",
+       "apihelp-query+info-summary": "{{doc-apihelp-summary|query+info}}",
        "apihelp-query+info-param-prop": "{{doc-apihelp-param|query+info|prop|paramvalues=1}}",
        "apihelp-query+info-paramvalue-prop-protection": "{{doc-apihelp-paramvalue|query+info|prop|protection}}",
        "apihelp-query+info-paramvalue-prop-talkid": "{{doc-apihelp-paramvalue|query+info|prop|talkid}}",
        "apihelp-query+info-param-token": "{{doc-apihelp-param|query+info|token}}",
        "apihelp-query+info-example-simple": "{{doc-apihelp-example|query+info}}",
        "apihelp-query+info-example-protection": "{{doc-apihelp-example|query+info}}",
-       "apihelp-query+iwbacklinks-description": "{{doc-apihelp-description|query+iwbacklinks}}",
+       "apihelp-query+iwbacklinks-summary": "{{doc-apihelp-summary|query+iwbacklinks}}",
+       "apihelp-query+iwbacklinks-extended-description": "{{doc-apihelp-extended-description|query+iwbacklinks}}",
        "apihelp-query+iwbacklinks-param-prefix": "{{doc-apihelp-param|query+iwbacklinks|prefix}}",
        "apihelp-query+iwbacklinks-param-title": "{{doc-apihelp-param|query+iwbacklinks|title}}",
        "apihelp-query+iwbacklinks-param-limit": "{{doc-apihelp-param|query+iwbacklinks|limit}}",
        "apihelp-query+iwbacklinks-param-dir": "{{doc-apihelp-param|query+iwbacklinks|dir}}",
        "apihelp-query+iwbacklinks-example-simple": "{{doc-apihelp-example|query+iwbacklinks}}",
        "apihelp-query+iwbacklinks-example-generator": "{{doc-apihelp-example|query+iwbacklinks}}",
-       "apihelp-query+iwlinks-description": "{{doc-apihelp-description|query+iwlinks}}",
+       "apihelp-query+iwlinks-summary": "{{doc-apihelp-summary|query+iwlinks}}",
        "apihelp-query+iwlinks-param-url": "{{doc-apihelp-param|query+iwlinks|url}}",
        "apihelp-query+iwlinks-param-prop": "{{doc-apihelp-param|query+iwlinks|prop|paramvalues=1}}",
        "apihelp-query+iwlinks-paramvalue-prop-url": "{{doc-apihelp-paramvalue|query+iwlinks|prop|url}}",
        "apihelp-query+iwlinks-param-title": "{{doc-apihelp-param|query+iwlinks|title}}",
        "apihelp-query+iwlinks-param-dir": "{{doc-apihelp-param|query+iwlinks|dir}}",
        "apihelp-query+iwlinks-example-simple": "{{doc-apihelp-example|query+iwlinks}}",
-       "apihelp-query+langbacklinks-description": "{{doc-apihelp-description|query+langbacklinks}}",
+       "apihelp-query+langbacklinks-summary": "{{doc-apihelp-summary|query+langbacklinks}}",
+       "apihelp-query+langbacklinks-extended-description": "{{doc-apihelp-extended-description|query+langbacklinks}}",
        "apihelp-query+langbacklinks-param-lang": "{{doc-apihelp-param|query+langbacklinks|lang}}",
        "apihelp-query+langbacklinks-param-title": "{{doc-apihelp-param|query+langbacklinks|title}}",
        "apihelp-query+langbacklinks-param-limit": "{{doc-apihelp-param|query+langbacklinks|limit}}",
        "apihelp-query+langbacklinks-param-dir": "{{doc-apihelp-param|query+langbacklinks|dir}}",
        "apihelp-query+langbacklinks-example-simple": "{{doc-apihelp-example|query+langbacklinks}}",
        "apihelp-query+langbacklinks-example-generator": "{{doc-apihelp-example|query+langbacklinks}}",
-       "apihelp-query+langlinks-description": "{{doc-apihelp-description|query+langlinks}}",
+       "apihelp-query+langlinks-summary": "{{doc-apihelp-summary|query+langlinks}}",
        "apihelp-query+langlinks-param-limit": "{{doc-apihelp-param|query+langlinks|limit}}",
        "apihelp-query+langlinks-param-url": "{{doc-apihelp-param|query+langlinks|url}}",
        "apihelp-query+langlinks-param-prop": "{{doc-apihelp-param|query+langlinks|prop|paramvalues=1}}",
        "apihelp-query+langlinks-param-dir": "{{doc-apihelp-param|query+langlinks|dir}}",
        "apihelp-query+langlinks-param-inlanguagecode": "{{doc-apihelp-param|query+langlinks|inlanguagecode}}",
        "apihelp-query+langlinks-example-simple": "{{doc-apihelp-example|query+langlinks}}",
-       "apihelp-query+links-description": "{{doc-apihelp-description|query+links}}",
+       "apihelp-query+links-summary": "{{doc-apihelp-summary|query+links}}",
        "apihelp-query+links-param-namespace": "{{doc-apihelp-param|query+links|namespace}}",
        "apihelp-query+links-param-limit": "{{doc-apihelp-param|query+links|limit}}",
        "apihelp-query+links-param-titles": "{{doc-apihelp-param|query+links|titles}}",
        "apihelp-query+links-example-simple": "{{doc-apihelp-example|query+links}}",
        "apihelp-query+links-example-generator": "{{doc-apihelp-example|query+links}}",
        "apihelp-query+links-example-namespaces": "{{doc-apihelp-example|query+links}}",
-       "apihelp-query+linkshere-description": "{{doc-apihelp-description|query+linkshere}}",
+       "apihelp-query+linkshere-summary": "{{doc-apihelp-summary|query+linkshere}}",
        "apihelp-query+linkshere-param-prop": "{{doc-apihelp-param|query+linkshere|prop|paramvalues=1}}",
        "apihelp-query+linkshere-paramvalue-prop-pageid": "{{doc-apihelp-paramvalue|query+linkshere|prop|pageid}}",
        "apihelp-query+linkshere-paramvalue-prop-title": "{{doc-apihelp-paramvalue|query+linkshere|prop|title}}",
        "apihelp-query+linkshere-param-show": "{{doc-apihelp-param|query+linkshere|show}}",
        "apihelp-query+linkshere-example-simple": "{{doc-apihelp-example|query+linkshere}}",
        "apihelp-query+linkshere-example-generator": "{{doc-apihelp-example|query+linkshere}}",
-       "apihelp-query+logevents-description": "{{doc-apihelp-description|query+logevents}}",
+       "apihelp-query+logevents-summary": "{{doc-apihelp-summary|query+logevents}}",
        "apihelp-query+logevents-param-prop": "{{doc-apihelp-param|query+logevents|prop|paramvalues=1}}",
        "apihelp-query+logevents-paramvalue-prop-ids": "{{doc-apihelp-paramvalue|query+logevents|prop|ids}}",
        "apihelp-query+logevents-paramvalue-prop-title": "{{doc-apihelp-paramvalue|query+logevents|prop|title}}",
        "apihelp-query+logevents-param-tag": "{{doc-apihelp-param|query+logevents|tag}}",
        "apihelp-query+logevents-param-limit": "{{doc-apihelp-param|query+logevents|limit}}",
        "apihelp-query+logevents-example-simple": "{{doc-apihelp-example|query+logevents}}",
-       "apihelp-query+pagepropnames-description": "{{doc-apihelp-description|query+pagepropnames}}",
+       "apihelp-query+pagepropnames-summary": "{{doc-apihelp-summary|query+pagepropnames}}",
        "apihelp-query+pagepropnames-param-limit": "{{doc-apihelp-param|query+pagepropnames|limit}}",
        "apihelp-query+pagepropnames-example-simple": "{{doc-apihelp-example|query+pagepropnames}}",
-       "apihelp-query+pageprops-description": "{{doc-apihelp-description|query+pageprops}}",
+       "apihelp-query+pageprops-summary": "{{doc-apihelp-summary|query+pageprops}}",
        "apihelp-query+pageprops-param-prop": "{{doc-apihelp-param|query+pageprops|prop}}",
        "apihelp-query+pageprops-example-simple": "{{doc-apihelp-example|query+pageprops}}",
-       "apihelp-query+pageswithprop-description": "{{doc-apihelp-description|query+pageswithprop}}",
+       "apihelp-query+pageswithprop-summary": "{{doc-apihelp-summary|query+pageswithprop}}",
        "apihelp-query+pageswithprop-param-propname": "{{doc-apihelp-param|query+pageswithprop|propname}}",
        "apihelp-query+pageswithprop-param-prop": "{{doc-apihelp-param|query+pageswithprop|prop|paramvalues=1}}",
        "apihelp-query+pageswithprop-paramvalue-prop-ids": "{{doc-apihelp-paramvalue|query+pageswithprop|prop|ids}}",
        "apihelp-query+pageswithprop-param-dir": "{{doc-apihelp-param|query+pageswithprop|dir}}",
        "apihelp-query+pageswithprop-example-simple": "{{doc-apihelp-example|query+pageswithprop}}",
        "apihelp-query+pageswithprop-example-generator": "{{doc-apihelp-example|query+pageswithprop}}",
-       "apihelp-query+prefixsearch-description": "{{doc-apihelp-description|query+prefixsearch}}",
+       "apihelp-query+prefixsearch-summary": "{{doc-apihelp-summary|query+prefixsearch}}",
+       "apihelp-query+prefixsearch-extended-description": "{{doc-apihelp-extended-description|query+prefixsearch}}",
        "apihelp-query+prefixsearch-param-search": "{{doc-apihelp-param|query+prefixsearch|search}}",
        "apihelp-query+prefixsearch-param-namespace": "{{doc-apihelp-param|query+prefixsearch|namespace}}",
        "apihelp-query+prefixsearch-param-limit": "{{doc-apihelp-param|query+prefixsearch|limit}}",
        "apihelp-query+prefixsearch-param-offset": "{{doc-apihelp-param|query+prefixsearch|offset}}",
        "apihelp-query+prefixsearch-example-simple": "{{doc-apihelp-example|query+prefixsearch}}",
        "apihelp-query+prefixsearch-param-profile": "{{doc-apihelp-param|query+prefixsearch|profile|paramvalues=1}}",
-       "apihelp-query+protectedtitles-description": "{{doc-apihelp-description|query+protectedtitles}}",
+       "apihelp-query+protectedtitles-summary": "{{doc-apihelp-summary|query+protectedtitles}}",
        "apihelp-query+protectedtitles-param-namespace": "{{doc-apihelp-param|query+protectedtitles|namespace}}",
        "apihelp-query+protectedtitles-param-level": "{{doc-apihelp-param|query+protectedtitles|level}}",
        "apihelp-query+protectedtitles-param-limit": "{{doc-apihelp-param|query+protectedtitles|limit}}",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "{{doc-apihelp-paramvalue|query+protectedtitles|prop|level}}",
        "apihelp-query+protectedtitles-example-simple": "{{doc-apihelp-example|query+protectedtitles}}",
        "apihelp-query+protectedtitles-example-generator": "{{doc-apihelp-example|query+protectedtitles}}",
-       "apihelp-query+querypage-description": "{{doc-apihelp-description|query+querypage}}",
+       "apihelp-query+querypage-summary": "{{doc-apihelp-summary|query+querypage}}",
        "apihelp-query+querypage-param-page": "{{doc-apihelp-param|query+querypage|page}}",
        "apihelp-query+querypage-param-limit": "{{doc-apihelp-param|query+querypage|limit}}",
        "apihelp-query+querypage-example-ancientpages": "{{doc-apihelp-example|query+querypage}}",
-       "apihelp-query+random-description": "{{doc-apihelp-description|query+random}}",
+       "apihelp-query+random-summary": "{{doc-apihelp-summary|query+random}}",
+       "apihelp-query+random-extended-description": "{{doc-apihelp-extended-description|query+random}}",
        "apihelp-query+random-param-namespace": "{{doc-apihelp-param|query+random|namespace}}",
        "apihelp-query+random-param-limit": "{{doc-apihelp-param|query+random|limit}}",
        "apihelp-query+random-param-redirect": "{{doc-apihelp-param|query+random|redirect}}",
        "apihelp-query+random-param-filterredir": "{{doc-apihelp-param|query+random|filterredir}}",
        "apihelp-query+random-example-simple": "{{doc-apihelp-example|query+random}}",
        "apihelp-query+random-example-generator": "{{doc-apihelp-example|query+random}}",
-       "apihelp-query+recentchanges-description": "{{doc-apihelp-description|query+recentchanges}}",
+       "apihelp-query+recentchanges-summary": "{{doc-apihelp-summary|query+recentchanges}}",
        "apihelp-query+recentchanges-param-start": "{{doc-apihelp-param|query+recentchanges|start}}",
        "apihelp-query+recentchanges-param-end": "{{doc-apihelp-param|query+recentchanges|end}}",
        "apihelp-query+recentchanges-param-namespace": "{{doc-apihelp-param|query+recentchanges|namespace}}",
        "apihelp-query+recentchanges-param-generaterevisions": "{{doc-apihelp-param|query+recentchanges|generaterevisions}}",
        "apihelp-query+recentchanges-example-simple": "{{doc-apihelp-example|query+recentchanges}}",
        "apihelp-query+recentchanges-example-generator": "{{doc-apihelp-example|query+recentchanges}}",
-       "apihelp-query+redirects-description": "{{doc-apihelp-description|query+redirects}}",
+       "apihelp-query+redirects-summary": "{{doc-apihelp-summary|query+redirects}}",
        "apihelp-query+redirects-param-prop": "{{doc-apihelp-param|query+redirects|prop|paramvalues=1}}",
        "apihelp-query+redirects-paramvalue-prop-pageid": "{{doc-apihelp-paramvalue|query+redirects|prop|pageid}}",
        "apihelp-query+redirects-paramvalue-prop-title": "{{doc-apihelp-paramvalue|query+redirects|prop|title}}",
        "apihelp-query+redirects-param-show": "{{doc-apihelp-param|query+redirects|show}}",
        "apihelp-query+redirects-example-simple": "{{doc-apihelp-example|query+redirects}}",
        "apihelp-query+redirects-example-generator": "{{doc-apihelp-example|query+redirects}}",
-       "apihelp-query+revisions-description": "{{doc-apihelp-description|query+revisions}}",
+       "apihelp-query+revisions-summary": "{{doc-apihelp-summary|query+revisions}}",
+       "apihelp-query+revisions-extended-description": "{{doc-apihelp-extended-description|query+revisions}}",
        "apihelp-query+revisions-paraminfo-singlepageonly": "{{doc-apihelp-paraminfo|query+revisions|singlepageonly}}",
        "apihelp-query+revisions-param-startid": "{{doc-apihelp-param|query+revisions|startid}}",
        "apihelp-query+revisions-param-endid": "{{doc-apihelp-param|query+revisions|endid}}",
        "apihelp-query+revisions+base-param-difftotext": "{{doc-apihelp-param|query+revisions+base|difftotext|description=the \"difftotext\" parameter to revision querying modules|noseealso=1}}",
        "apihelp-query+revisions+base-param-difftotextpst": "{{doc-apihelp-param|query+revisions+base|difftotextpst|description=the \"difftotextpst\" parameter to revision querying modules|noseealso=1}}",
        "apihelp-query+revisions+base-param-contentformat": "{{doc-apihelp-param|query+revisions+base|contentformat|description=the \"contentformat\" parameter to revision querying modules|noseealso=1}}",
-       "apihelp-query+search-description": "{{doc-apihelp-description|query+search}}",
+       "apihelp-query+search-summary": "{{doc-apihelp-summary|query+search}}",
        "apihelp-query+search-param-search": "{{doc-apihelp-param|query+search|search}}",
        "apihelp-query+search-param-namespace": "{{doc-apihelp-param|query+search|namespace}}",
        "apihelp-query+search-param-what": "{{doc-apihelp-param|query+search|what}}",
        "apihelp-query+search-example-simple": "{{doc-apihelp-example|query+search}}",
        "apihelp-query+search-example-text": "{{doc-apihelp-example|query+search}}",
        "apihelp-query+search-example-generator": "{{doc-apihelp-example|query+search}}",
-       "apihelp-query+siteinfo-description": "{{doc-apihelp-description|query+siteinfo}}",
+       "apihelp-query+siteinfo-summary": "{{doc-apihelp-summary|query+siteinfo}}",
        "apihelp-query+siteinfo-param-prop": "{{doc-apihelp-param|query+siteinfo|prop|paramvalues=1}}",
        "apihelp-query+siteinfo-paramvalue-prop-general": "{{doc-apihelp-paramvalue|query+siteinfo|prop|general}}",
        "apihelp-query+siteinfo-paramvalue-prop-namespaces": "{{doc-apihelp-paramvalue|query+siteinfo|prop|namespaces}}",
        "apihelp-query+siteinfo-example-simple": "{{doc-apihelp-example|query+siteinfo}}",
        "apihelp-query+siteinfo-example-interwiki": "{{doc-apihelp-example|query+siteinfo}}",
        "apihelp-query+siteinfo-example-replag": "{{doc-apihelp-example|query+siteinfo}}",
-       "apihelp-query+stashimageinfo-description": "{{doc-apihelp-description|query+stashimageinfo}}",
+       "apihelp-query+stashimageinfo-summary": "{{doc-apihelp-summary|query+stashimageinfo}}",
        "apihelp-query+stashimageinfo-param-filekey": "{{doc-apihelp-param|query+stashimageinfo|filekey}}",
        "apihelp-query+stashimageinfo-param-sessionkey": "{{doc-apihelp-param|query+stashimageinfo|sessionkey}}",
        "apihelp-query+stashimageinfo-example-simple": "{{doc-apihelp-example|query+stashimageinfo}}",
        "apihelp-query+stashimageinfo-example-params": "{{doc-apihelp-example|query+stashimageinfo}}",
-       "apihelp-query+tags-description": "{{doc-apihelp-description|query+tags}}",
+       "apihelp-query+tags-summary": "{{doc-apihelp-summary|query+tags}}",
        "apihelp-query+tags-param-limit": "{{doc-apihelp-param|query+tags|limit}}",
        "apihelp-query+tags-param-prop": "{{doc-apihelp-param|query+tags|prop|paramvalues=1}}",
        "apihelp-query+tags-paramvalue-prop-name": "{{doc-apihelp-paramvalue|query+tags|prop|name}}",
        "apihelp-query+tags-paramvalue-prop-source": "{{doc-apihelp-paramvalue|query+tags|prop|source}}",
        "apihelp-query+tags-paramvalue-prop-active": "{{doc-apihelp-paramvalue|query+tags|prop|active}}",
        "apihelp-query+tags-example-simple": "{{doc-apihelp-example|query+tags}}",
-       "apihelp-query+templates-description": "{{doc-apihelp-description|query+templates}}",
+       "apihelp-query+templates-summary": "{{doc-apihelp-summary|query+templates}}",
        "apihelp-query+templates-param-namespace": "{{doc-apihelp-param|query+templates|namespace}}",
        "apihelp-query+templates-param-limit": "{{doc-apihelp-param|query+templates|limit}}",
        "apihelp-query+templates-param-templates": "{{doc-apihelp-param|query+templates|templates}}",
        "apihelp-query+templates-example-simple": "{{doc-apihelp-example|query+templates}}",
        "apihelp-query+templates-example-generator": "{{doc-apihelp-example|query+templates}}",
        "apihelp-query+templates-example-namespaces": "{{doc-apihelp-example|query+templates}}",
-       "apihelp-query+tokens-description": "{{doc-apihelp-description|query+tokens}}",
+       "apihelp-query+tokens-summary": "{{doc-apihelp-summary|query+tokens}}",
        "apihelp-query+tokens-param-type": "{{doc-apihelp-param|query+tokens|type}}",
        "apihelp-query+tokens-example-simple": "{{doc-apihelp-example|query+tokens}}",
        "apihelp-query+tokens-example-types": "{{doc-apihelp-example|query+tokens}}",
-       "apihelp-query+transcludedin-description": "{{doc-apihelp-description|query+transcludedin}}",
+       "apihelp-query+transcludedin-summary": "{{doc-apihelp-summary|query+transcludedin}}",
        "apihelp-query+transcludedin-param-prop": "{{doc-apihelp-param|query+transcludedin|prop|paramvalues=1}}",
        "apihelp-query+transcludedin-paramvalue-prop-pageid": "{{doc-apihelp-paramvalue|query+transcludedin|prop|pageid}}",
        "apihelp-query+transcludedin-paramvalue-prop-title": "{{doc-apihelp-paramvalue|query+transcludedin|prop|title}}",
        "apihelp-query+transcludedin-param-show": "{{doc-apihelp-param|query+transcludedin|show}}",
        "apihelp-query+transcludedin-example-simple": "{{doc-apihelp-example|query+transcludedin}}",
        "apihelp-query+transcludedin-example-generator": "{{doc-apihelp-example|query+transcludedin}}",
-       "apihelp-query+usercontribs-description": "{{doc-apihelp-description|query+usercontribs}}",
+       "apihelp-query+usercontribs-summary": "{{doc-apihelp-summary|query+usercontribs}}",
        "apihelp-query+usercontribs-param-limit": "{{doc-apihelp-param|query+usercontribs|limit}}",
        "apihelp-query+usercontribs-param-start": "{{doc-apihelp-param|query+usercontribs|start}}",
        "apihelp-query+usercontribs-param-end": "{{doc-apihelp-param|query+usercontribs|end}}",
        "apihelp-query+usercontribs-param-toponly": "{{doc-apihelp-param|query+usercontribs|toponly}}",
        "apihelp-query+usercontribs-example-user": "{{doc-apihelp-example|query+usercontribs}}",
        "apihelp-query+usercontribs-example-ipprefix": "{{doc-apihelp-example|query+usercontribs}}",
-       "apihelp-query+userinfo-description": "{{doc-apihelp-description|query+userinfo}}",
+       "apihelp-query+userinfo-summary": "{{doc-apihelp-summary|query+userinfo}}",
        "apihelp-query+userinfo-param-prop": "{{doc-apihelp-param|query+userinfo|prop|paramvalues=1}}",
        "apihelp-query+userinfo-paramvalue-prop-blockinfo": "{{doc-apihelp-paramvalue|query+userinfo|prop|blockinfo}}",
        "apihelp-query+userinfo-paramvalue-prop-hasmsg": "{{doc-apihelp-paramvalue|query+userinfo|prop|hasmsg}}",
        "apihelp-query+userinfo-param-attachedwiki": "{{doc-apihelp-param|query+userinfo|attachedwiki}}",
        "apihelp-query+userinfo-example-simple": "{{doc-apihelp-example|query+userinfo}}",
        "apihelp-query+userinfo-example-data": "{{doc-apihelp-example|query+userinfo}}",
-       "apihelp-query+users-description": "{{doc-apihelp-description|query+users}}",
+       "apihelp-query+users-summary": "{{doc-apihelp-summary|query+users}}",
        "apihelp-query+users-param-prop": "{{doc-apihelp-param|query+users|prop|paramvalues=1}}",
        "apihelp-query+users-paramvalue-prop-blockinfo": "{{doc-apihelp-paramvalue|query+users|prop|blockinfo}}",
        "apihelp-query+users-paramvalue-prop-groups": "{{doc-apihelp-paramvalue|query+users|prop|groups}}",
        "apihelp-query+users-param-userids": "{{doc-apihelp-param|query+users|userids}}",
        "apihelp-query+users-param-token": "{{doc-apihelp-param|query+users|token}}",
        "apihelp-query+users-example-simple": "{{doc-apihelp-example|query+users}}",
-       "apihelp-query+watchlist-description": "{{doc-apihelp-description|query+watchlist}}",
+       "apihelp-query+watchlist-summary": "{{doc-apihelp-summary|query+watchlist}}",
        "apihelp-query+watchlist-param-allrev": "{{doc-apihelp-param|query+watchlist|allrev}}",
        "apihelp-query+watchlist-param-start": "{{doc-apihelp-param|query+watchlist|start}}",
        "apihelp-query+watchlist-param-end": "{{doc-apihelp-param|query+watchlist|end}}",
        "apihelp-query+watchlist-example-generator": "{{doc-apihelp-example|query+watchlist}}",
        "apihelp-query+watchlist-example-generator-rev": "{{doc-apihelp-example|query+watchlist}}",
        "apihelp-query+watchlist-example-wlowner": "{{doc-apihelp-example|query+watchlist}}",
-       "apihelp-query+watchlistraw-description": "{{doc-apihelp-description|query+watchlistraw}}",
+       "apihelp-query+watchlistraw-summary": "{{doc-apihelp-summary|query+watchlistraw}}",
        "apihelp-query+watchlistraw-param-namespace": "{{doc-apihelp-param|query+watchlistraw|namespace}}",
        "apihelp-query+watchlistraw-param-limit": "{{doc-apihelp-param|query+watchlistraw|limit}}",
        "apihelp-query+watchlistraw-param-prop": "{{doc-apihelp-param|query+watchlistraw|prop|paramvalues=1}}",
        "apihelp-query+watchlistraw-param-totitle": "{{doc-apihelp-param|query+watchlistraw|totitle}}",
        "apihelp-query+watchlistraw-example-simple": "{{doc-apihelp-example|query+watchlistraw}}",
        "apihelp-query+watchlistraw-example-generator": "{{doc-apihelp-example|query+watchlistraw}}",
-       "apihelp-removeauthenticationdata-description": "{{doc-apihelp-description|removeauthenticationdata}}",
+       "apihelp-removeauthenticationdata-summary": "{{doc-apihelp-summary|removeauthenticationdata}}",
        "apihelp-removeauthenticationdata-example-simple": "{{doc-apihelp-example|removeauthenticationdata}}",
-       "apihelp-resetpassword-description": "{{doc-apihelp-description|resetpassword|seealso=* {{msg-mw|apihelp-resetpassword-description-noroutes}}}}",
-       "apihelp-resetpassword-description-noroutes": "{{doc-apihelp-description|resetpassword|info=This message is used when no known routes are enabled in <var>[[mw:Manual:$wgPasswordResetRoutes|$wgPasswordResetRoutes]]</var>.|seealso={{msg-mw|apihelp-resetpassword-description}}}}",
+       "apihelp-resetpassword-summary": "{{doc-apihelp-summary|resetpassword}}",
+       "apihelp-resetpassword-extended-description-noroutes": "{{doc-apihelp-extended-description|resetpassword|info=This message is used when no known routes are enabled in <var>[[mw:Manual:$wgPasswordResetRoutes|$wgPasswordResetRoutes]]</var>.|seealso={{msg-mw|apihelp-resetpassword-extended-description}}}}",
        "apihelp-resetpassword-param-user": "{{doc-apihelp-param|resetpassword|user}}",
        "apihelp-resetpassword-param-email": "{{doc-apihelp-param|resetpassword|email}}",
        "apihelp-resetpassword-example-user": "{{doc-apihelp-example|resetpassword}}",
        "apihelp-resetpassword-example-email": "{{doc-apihelp-example|resetpassword}}",
-       "apihelp-revisiondelete-description": "{{doc-apihelp-description|revisiondelete}}",
+       "apihelp-revisiondelete-summary": "{{doc-apihelp-summary|revisiondelete}}",
        "apihelp-revisiondelete-param-type": "{{doc-apihelp-param|revisiondelete|type}}",
        "apihelp-revisiondelete-param-target": "{{doc-apihelp-param|revisiondelete|target}}",
        "apihelp-revisiondelete-param-ids": "{{doc-apihelp-param|revisiondelete|ids}}",
        "apihelp-revisiondelete-param-tags": "{{doc-apihelp-param|revisiondelete|tags}}",
        "apihelp-revisiondelete-example-revision": "{{doc-apihelp-example|revisiondelete}}",
        "apihelp-revisiondelete-example-log": "{{doc-apihelp-example|revisiondelete}}",
-       "apihelp-rollback-description": "{{doc-apihelp-description|rollback}}",
+       "apihelp-rollback-summary": "{{doc-apihelp-summary|rollback}}",
+       "apihelp-rollback-extended-description": "{{doc-apihelp-extended-description|rollback}}",
        "apihelp-rollback-param-title": "{{doc-apihelp-param|rollback|title}}",
        "apihelp-rollback-param-pageid": "{{doc-apihelp-param|rollback|pageid}}",
        "apihelp-rollback-param-tags": "{{doc-apihelp-param|rollback|tags}}",
        "apihelp-rollback-param-watchlist": "{{doc-apihelp-param|rollback|watchlist}}",
        "apihelp-rollback-example-simple": "{{doc-apihelp-example|rollback}}",
        "apihelp-rollback-example-summary": "{{doc-apihelp-example|rollback}}",
-       "apihelp-rsd-description": "{{doc-apihelp-description|rsd}}",
+       "apihelp-rsd-summary": "{{doc-apihelp-summary|rsd}}",
        "apihelp-rsd-example-simple": "{{doc-apihelp-example|rsd}}",
-       "apihelp-setnotificationtimestamp-description": "{{doc-apihelp-description|setnotificationtimestamp}}",
+       "apihelp-setnotificationtimestamp-summary": "{{doc-apihelp-summary|setnotificationtimestamp}}",
+       "apihelp-setnotificationtimestamp-extended-description": "{{doc-apihelp-extended-description|setnotificationtimestamp}}",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "{{doc-apihelp-param|setnotificationtimestamp|entirewatchlist}}",
        "apihelp-setnotificationtimestamp-param-timestamp": "{{doc-apihelp-param|setnotificationtimestamp|timestamp}}",
        "apihelp-setnotificationtimestamp-param-torevid": "{{doc-apihelp-param|setnotificationtimestamp|torevid}}",
        "apihelp-setnotificationtimestamp-example-page": "{{doc-apihelp-example|setnotificationtimestamp}}",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "{{doc-apihelp-example|setnotificationtimestamp}}",
        "apihelp-setnotificationtimestamp-example-allpages": "{{doc-apihelp-example|setnotificationtimestamp}}",
-       "apihelp-setpagelanguage-description": "{{doc-apihelp-description|setpagelanguage}}",
-       "apihelp-setpagelanguage-description-disabled": "{{doc-apihelp-description|setpagelanguage|info=This message is used when changing the language of a page is not allowed on the wiki because <var>[[mw:Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> is not enabled.|seealso={{msg-mw|apihelp-setpagelanguage-description}}}}",
+       "apihelp-setpagelanguage-summary": "{{doc-apihelp-summary|setpagelanguage}}",
+       "apihelp-setpagelanguage-extended-description-disabled": "{{doc-apihelp-extended-description|setpagelanguage|info=This message is used when changing the language of a page is not allowed on the wiki because <var>[[mw:Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> is not enabled.|seealso={{msg-mw|apihelp-setpagelanguage-extended-description}}}}",
        "apihelp-setpagelanguage-param-title": "{{doc-apihelp-param|setpagelanguage|title}}",
        "apihelp-setpagelanguage-param-pageid": "{{doc-apihelp-param|setpagelanguage|pageid}}",
        "apihelp-setpagelanguage-param-lang": "{{doc-apihelp-param|setpagelanguage|lang}}",
        "apihelp-setpagelanguage-param-tags": "{{doc-apihelp-param|setpagelanguage|tags}}",
        "apihelp-setpagelanguage-example-language": "{{doc-apihelp-example|setpagelanguage}}",
        "apihelp-setpagelanguage-example-default": "{{doc-apihelp-example|setpagelanguage}}",
-       "apihelp-stashedit-description": "{{doc-apihelp-description|stashedit}}",
+       "apihelp-stashedit-summary": "{{doc-apihelp-summary|stashedit}}",
+       "apihelp-stashedit-extended-description": "{{doc-apihelp-extended-description|stashedit}}",
        "apihelp-stashedit-param-title": "{{doc-apihelp-param|stashedit|title}}",
        "apihelp-stashedit-param-section": "{{doc-apihelp-param|stashedit|section}}",
        "apihelp-stashedit-param-sectiontitle": "{{doc-apihelp-param|stashedit|sectiontitle}}",
        "apihelp-stashedit-param-contentformat": "{{doc-apihelp-param|stashedit|contentformat}}",
        "apihelp-stashedit-param-baserevid": "{{doc-apihelp-param|stashedit|baserevid}}",
        "apihelp-stashedit-param-summary": "{{doc-apihelp-param|stashedit|summary}}",
-       "apihelp-tag-description": "{{doc-apihelp-description|tag}}",
+       "apihelp-tag-summary": "{{doc-apihelp-summary|tag}}",
        "apihelp-tag-param-rcid": "{{doc-apihelp-param|tag|rcid}}",
        "apihelp-tag-param-revid": "{{doc-apihelp-param|tag|revid}}",
        "apihelp-tag-param-logid": "{{doc-apihelp-param|tag|logid}}",
        "apihelp-tag-param-tags": "{{doc-apihelp-param|tag|tags}}",
        "apihelp-tag-example-rev": "{{doc-apihelp-example|tag}}",
        "apihelp-tag-example-log": "{{doc-apihelp-example|tag}}",
-       "apihelp-tokens-description": "{{doc-apihelp-description|tokens}}",
+       "apihelp-tokens-summary": "{{doc-apihelp-summary|tokens}}",
+       "apihelp-tokens-extended-description": "{{doc-apihelp-extended-description|tokens}}",
        "apihelp-tokens-param-type": "{{doc-apihelp-param|tokens|type}}",
        "apihelp-tokens-example-edit": "{{doc-apihelp-example|tokens}}",
        "apihelp-tokens-example-emailmove": "{{doc-apihelp-example|tokens}}",
-       "apihelp-unblock-description": "{{doc-apihelp-description|unblock}}",
+       "apihelp-unblock-summary": "{{doc-apihelp-summary|unblock}}",
        "apihelp-unblock-param-id": "{{doc-apihelp-param|unblock|id}}",
        "apihelp-unblock-param-user": "{{doc-apihelp-param|unblock|user}}",
        "apihelp-unblock-param-userid": "{{doc-apihelp-param|unblock|userid}}",
        "apihelp-unblock-param-tags": "{{doc-apihelp-param|unblock|tags}}",
        "apihelp-unblock-example-id": "{{doc-apihelp-example|unblock}}",
        "apihelp-unblock-example-user": "{{doc-apihelp-example|unblock}}",
-       "apihelp-undelete-description": "{{doc-apihelp-description|undelete}}",
+       "apihelp-undelete-summary": "{{doc-apihelp-summary|undelete}}",
+       "apihelp-undelete-extended-description": "{{doc-apihelp-extended-description|undelete}}",
        "apihelp-undelete-param-title": "{{doc-apihelp-param|undelete|title}}",
        "apihelp-undelete-param-reason": "{{doc-apihelp-param|undelete|reason}}",
        "apihelp-undelete-param-tags": "{{doc-apihelp-param|undelete|tags}}",
        "apihelp-undelete-param-watchlist": "{{doc-apihelp-param|undelete|watchlist}}",
        "apihelp-undelete-example-page": "{{doc-apihelp-example|undelete}}",
        "apihelp-undelete-example-revisions": "{{doc-apihelp-example|undelete}}",
-       "apihelp-unlinkaccount-description": "{{doc-apihelp-description|unlinkaccount}}",
+       "apihelp-unlinkaccount-summary": "{{doc-apihelp-summary|unlinkaccount}}",
        "apihelp-unlinkaccount-example-simple": "{{doc-apihelp-example|unlinkaccount}}",
-       "apihelp-upload-description": "{{doc-apihelp-description|upload}}",
+       "apihelp-upload-summary": "{{doc-apihelp-summary|upload}}",
+       "apihelp-upload-extended-description": "{{doc-apihelp-extended-description|upload}}",
        "apihelp-upload-param-filename": "{{doc-apihelp-param|upload|filename}}",
        "apihelp-upload-param-comment": "{{doc-apihelp-param|upload|comment}}",
        "apihelp-upload-param-tags": "{{doc-apihelp-param|upload|tags}}",
        "apihelp-upload-param-checkstatus": "{{doc-apihelp-param|upload|checkstatus}}",
        "apihelp-upload-example-url": "{{doc-apihelp-example|upload}}",
        "apihelp-upload-example-filekey": "{{doc-apihelp-example|upload}}",
-       "apihelp-userrights-description": "{{doc-apihelp-description|userrights}}",
+       "apihelp-userrights-summary": "{{doc-apihelp-summary|userrights}}",
        "apihelp-userrights-param-user": "{{doc-apihelp-param|userrights|user}}\n{{Identical|Username}}",
        "apihelp-userrights-param-userid": "{{doc-apihelp-param|userrights|userid}}\n{{Identical|User ID}}",
        "apihelp-userrights-param-add": "{{doc-apihelp-param|userrights|add}}",
        "apihelp-userrights-example-user": "{{doc-apihelp-example|userrights}}",
        "apihelp-userrights-example-userid": "{{doc-apihelp-example|userrights}}",
        "apihelp-userrights-example-expiry": "{{doc-apihelp-example|userrights}}",
-       "apihelp-validatepassword-description": "{{doc-apihelp-description|validatepassword}}",
+       "apihelp-validatepassword-summary": "{{doc-apihelp-summary|validatepassword}}",
+       "apihelp-validatepassword-extended-description": "{{doc-apihelp-extended-description|validatepassword}}",
        "apihelp-validatepassword-param-password": "{{doc-apihelp-param|validatepassword|password}}",
        "apihelp-validatepassword-param-user": "{{doc-apihelp-param|validatepassword|user}}",
        "apihelp-validatepassword-param-email": "{{doc-apihelp-param|validatepassword|email}}",
        "apihelp-validatepassword-param-realname": "{{doc-apihelp-param|validatepassword|realname}}",
        "apihelp-validatepassword-example-1": "{{doc-apihelp-example|validatepassword}}",
        "apihelp-validatepassword-example-2": "{{doc-apihelp-example|validatepassword}}",
-       "apihelp-watch-description": "{{doc-apihelp-description|watch}}",
+       "apihelp-watch-summary": "{{doc-apihelp-summary|watch}}",
        "apihelp-watch-param-title": "{{doc-apihelp-param|watch|title}}",
        "apihelp-watch-param-unwatch": "{{doc-apihelp-param|watch|unwatch}}",
        "apihelp-watch-example-watch": "{{doc-apihelp-example|watch}}",
        "apihelp-watch-example-generator": "{{doc-apihelp-example|watch}}",
        "apihelp-format-example-generic": "{{doc-apihelp-example|format|params=* $1 - Format name|paramstart=2|noseealso=1}}",
        "apihelp-format-param-wrappedhtml": "{{doc-apihelp-param|format|wrappedhtml|description=the \"wrappedhtml\" parameter in pretty-printing format modules}}",
-       "apihelp-json-description": "{{doc-apihelp-description|json|seealso=* {{msg-mw|apihelp-jsonfm-description}}}}",
+       "apihelp-json-summary": "{{doc-apihelp-summary|json|seealso=* {{msg-mw|apihelp-jsonfm-summary}}}}",
        "apihelp-json-param-callback": "{{doc-apihelp-param|json|callback}}",
        "apihelp-json-param-utf8": "{{doc-apihelp-param|json|utf8}}",
        "apihelp-json-param-ascii": "{{doc-apihelp-param|json|ascii}}",
        "apihelp-json-param-formatversion": "{{doc-apihelp-param|json|formatversion}}",
-       "apihelp-jsonfm-description": "{{doc-apihelp-description|jsonfm|seealso=* {{msg-mw|apihelp-json-description}}}}",
-       "apihelp-none-description": "{{doc-apihelp-description|none}}",
-       "apihelp-php-description": "{{doc-apihelp-description|php|seealso=* {{msg-mw|apihelp-phpfm-description}}}}",
+       "apihelp-jsonfm-summary": "{{doc-apihelp-summary|jsonfm|seealso=* {{msg-mw|apihelp-json-summary}}}}",
+       "apihelp-none-summary": "{{doc-apihelp-summary|none}}",
+       "apihelp-php-summary": "{{doc-apihelp-summary|php|seealso=* {{msg-mw|apihelp-phpfm-summary}}}}",
        "apihelp-php-param-formatversion": "{{doc-apihelp-param|php|formatversion}}",
-       "apihelp-phpfm-description": "{{doc-apihelp-description|phpfm|seealso=* {{msg-mw|apihelp-php-description}}}}",
-       "apihelp-rawfm-description": "{{doc-apihelp-description|rawfm|seealso=* {{msg-mw|apihelp-raw-description}}}}",
-       "apihelp-xml-description": "{{doc-apihelp-description|xml|seealso=* {{msg-mw|apihelp-xmlfm-description}}}}",
+       "apihelp-phpfm-summary": "{{doc-apihelp-summary|phpfm|seealso=* {{msg-mw|apihelp-php-summary}}}}",
+       "apihelp-rawfm-summary": "{{doc-apihelp-summary|rawfm|seealso=* {{msg-mw|apihelp-raw-summary}}}}",
+       "apihelp-xml-summary": "{{doc-apihelp-summary|xml|seealso=* {{msg-mw|apihelp-xmlfm-summary}}}}",
        "apihelp-xml-param-xslt": "{{doc-apihelp-param|xml|xslt}}",
        "apihelp-xml-param-includexmlnamespace": "{{doc-apihelp-param|xml|includexmlnamespace}}",
-       "apihelp-xmlfm-description": "{{doc-apihelp-description|xmlfm|seealso=* {{msg-mw|apihelp-xml-description}}}}",
+       "apihelp-xmlfm-summary": "{{doc-apihelp-summary|xmlfm|seealso=* {{msg-mw|apihelp-xml-summary}}}}",
        "api-format-title": "{{technical}}\nPage title when API output is pretty-printed in HTML.",
-       "api-format-prettyprint-header": "{{technical}} Displayed as a header when API output is pretty-printed in HTML.\n\nParameters:\n* $1 - Format name\n* $2 - Non-pretty-printing module name",
+       "api-format-prettyprint-header": "{{technical}} Displayed as a header when API output is pretty-printed in HTML, but a post request is received.\n\nParameters:\n* $1 - Format name\n* $2 - Non-pretty-printing module name",
        "api-format-prettyprint-header-only-html": "{{technical}} Displayed as a header when API output is pretty-printed in HTML, but there is no non-html module.\n\nParameters:\n* $1 - Format name",
+       "api-format-prettyprint-header-hyperlinked": "{{technical}} Displayed as a header when API output is pretty-printed in HTML.\n\nParameters:\n* $1 - Format name\n* $2 - Non-pretty-printing module name\n* $3 - URL to Non-pretty-printing module",
        "api-format-prettyprint-status": "{{technical}} Displayed as a header when API pretty-printed output is used for a response that uses an unusual HTTP status code.\n\nParameters:\n* $1 - HTTP status code (integer)\n* $2 - Standard English text for the status code.",
+       "api-login-fail-aborted": "{{technical}} Displayed as an error when API login fails due to AuthManager requiring user interaction.\n\nSee also:\n* {{msg-mw|api-login-fail-aborted-nobotpw}}",
+       "api-login-fail-aborted-nobotpw": "{{technical}} Displayed as an error when API login fails due to AuthManager requiring user interaction. Used when BotPasswords is disabled.\n\nSee also:\n* {{msg-mw|api-login-fail-aborted}}",
+       "api-login-fail-badsessionprovider": "{{technical}} Displayed as an error when API login is not possible due to a session provider that doesn't support login.\n\nParameters:\n* $1 - Session type in use that makes it not possible to log in, from a message like {{msg-mw|sessionprovider-mediawiki-session-cookiesessionprovider}}.",
+       "api-login-fail-sameorigin": "{{technical}} Displayed as an error when API login is not possible because the request does not enforce the Same-Origin policy.",
        "api-pageset-param-titles": "{{doc-apihelp-param|pageset|titles|description=the \"titles\" parameter in pageset-using modules}}",
        "api-pageset-param-pageids": "{{doc-apihelp-param|pageset|pageids|description=the \"pageids\" parameter in pageset-using modules}}",
        "api-pageset-param-revids": "{{doc-apihelp-param|pageset|revids|description=the \"revids\" parameter in pageset-using modules}}",
        "api-help-permissions-granted-to": "Used to introduce the list of groups each permission is assigned to.\n\nParameters:\n* $1 - Number of groups\n* $2 - List of group names, comma-separated",
        "api-help-right-apihighlimits": "{{technical}}{{doc-right|apihighlimits|prefix=api-help}}\nThis message is used instead of {{msg-mw|right-apihighlimits}} in the API help to display the actual limits.\n\nParameters:\n* $1 - Limit for slow queries\n* $2 - Limit for fast queries",
        "api-help-open-in-apisandbox": "Text for the link to open an API example in [[Special:ApiSandbox]].",
+       "api-help-no-extended-description": "{{notranslate}} Message used when no extended description is provided. Should be empty.",
        "api-help-authmanager-general-usage": "{{doc-important|Do not translate text that either quoted, or inside <nowiki><var></var></nowiki>, <nowiki><kbd></kbd></nowiki>, <nowiki><samp></samp></nowiki>, or <nowiki><code></code></nowiki> in this message.}}\nText giving a brief overview of how to use an AuthManager-using API module. Parameters:\n* $1 - Module parameter prefix, e.g. \"login\"\n* $2 - Module name, e.g. \"clientlogin\"\n* $3 - Module path, e.g. \"clientlogin\"\n* $4 - AuthManager action to use with this module.\n* $5 - Token type needed by the module.",
        "api-help-authmanagerhelper-requests": "{{doc-apihelp-param|description=the \"requests\" parameter for AuthManager-using API modules|params=* $1 - AuthManager action used by this module|paramstart=2|noseealso=1}}",
        "api-help-authmanagerhelper-request": "{{doc-apihelp-param|description=the \"request\" parameter for AuthManager-using API modules|params=* $1 - AuthManager action used by this module|paramstart=2|noseealso=1}}",
        "apierror-changeauth-norequest": "{{doc-apierror}}",
        "apierror-chunk-too-small": "{{doc-apierror}}\n\nParameters:\n* $1 - Minimum size in bytes.",
        "apierror-cidrtoobroad": "{{doc-apierror}}\n\nParameters:\n* $1 - \"IPv4\" or \"IPv6\"\n* $2 - Minimum CIDR mask length.",
-       "apierror-compare-inputneeded": "{{doc-apierror}}",
+       "apierror-compare-no-title": "{{doc-apierror}}",
+       "apierror-compare-relative-to-nothing": "{{doc-apierror}}",
        "apierror-contentserializationexception": "{{doc-apierror}}\n\nParameters:\n* $1 - Exception text, may end with punctuation. Currently this is probably English, hopefully we'll fix that in the future.",
        "apierror-contenttoobig": "{{doc-apierror}}\n\nParameters:\n* $1 - Maximum article size in kilobytes.",
        "apierror-copyuploadbaddomain": "{{doc-apierror}}",
        "apierror-create-titleexists": "{{doc-apierror}}",
        "apierror-csp-report": "{{doc-apierror}}\n\nParameters:\n* $1 - Error code, e.g. \"toobig\".",
        "apierror-databaseerror": "{{doc-apierror}}\n\nParameters:\n* $1 - Exception log ID code. This is meaningless to the end user, but can be used by people with access to the logs to easily find the logged error.",
-       "apierror-deletedrevs-param-not-1-2": "{{doc-apierror}}\n\nParameters:\n* $1 - Parameter name.\n\nSee also:\n* {{msg-mw|apihelp-query+deletedrevs-description}}",
-       "apierror-deletedrevs-param-not-3": "{{doc-apierror}}\n\nParameters:\n* $1 - Parameter name.\n\nSee also:\n* {{msg-mw|apihelp-query+deletedrevs-description}}",
+       "apierror-deletedrevs-param-not-1-2": "{{doc-apierror}}\n\nParameters:\n* $1 - Parameter name.\n\nSee also:\n* {{msg-mw|apihelp-query+deletedrevs-extended-description}}",
+       "apierror-deletedrevs-param-not-3": "{{doc-apierror}}\n\nParameters:\n* $1 - Parameter name.\n\nSee also:\n* {{msg-mw|apihelp-query+deletedrevs-extended-description}}",
        "apierror-emptynewsection": "{{doc-apierror}}",
        "apierror-emptypage": "{{doc-apierror}}",
        "apierror-exceptioncaught": "{{doc-apierror}}\n\nParameters:\n* $1 - Exception log ID code. This is meaningless to the end user, but can be used by people with access to the logs to easily find the logged error.\n* $2 - Exception message, which may end with punctuation. Probably in English.",
        "apierror-maxlag": "{{doc-apierror}}\n\nParameters:\n* $1 - Database lag in seconds.\n* $2 - Database server that is lagged.",
        "apierror-mimesearchdisabled": "{{doc-apierror}}",
        "apierror-missingcontent-pageid": "{{doc-apierror}}\n\nParameters:\n* $1 - Page ID number.",
+       "apierror-missingcontent-revid": "{{doc-apierror}}\n\nParameters:\n* $1 - Revision ID number",
        "apierror-missingparam-at-least-one-of": "{{doc-apierror}}\n\nParameters:\n* $1 - List of parameter names.\n* $2 - Number of parameters.",
        "apierror-missingparam-one-of": "{{doc-apierror}}\n\nParameters:\n* $1 - List of parameter names.\n* $2 - Number of parameters.",
        "apierror-missingparam": "{{doc-apierror}}\n\nParameters:\n* $1 - Parameter name.",
        "apierror-missingrev-pageid": "{{doc-apierror}}\n\nParameters:\n* $1 - Page ID number.",
+       "apierror-missingrev-title": "{{doc-apierror}}\n\nParameters:\n* $1 - Page title.",
        "apierror-missingtitle-createonly": "{{doc-apierror}}",
        "apierror-missingtitle": "{{doc-apierror}}",
        "apierror-missingtitle-byname": "{{doc-apierror}}",
        "apierror-revdel-mutuallyexclusive": "{{doc-apierror}}",
        "apierror-revdel-needtarget": "{{doc-apierror}}",
        "apierror-revdel-paramneeded": "{{doc-apierror}}",
+       "apierror-revisions-badid": "{{doc-apierror}}\n\nParameters:\n* $1 - Parameter in question, e.g. \"rvstartid\".",
        "apierror-revisions-norevids": "{{doc-apierror}}\n\nParameters:\n* $1 - Module parameter prefix, e.g. \"bl\".",
        "apierror-revisions-singlepage": "{{doc-apierror}}\n\nParameters:\n* $1 - Module parameter prefix, e.g. \"bl\".",
        "apierror-revwrongpage": "{{doc-apierror}}\n\nParameters:\n* $1 - Revision ID number.\n* $2 - Page title.",
        "apiwarn-badurlparam": "{{doc-apierror}}\n\nParameters:\n* $1 - Module parameter prefix, e.g. \"bl\".\n* $2 - Image title.",
        "apiwarn-badutf8": "{{doc-apierror}}\n\nParameters:\n* $1 - Parameter name.\n{{doc-important|Do not translate \"\\t\", \"\\n\", and \"\\r\"}}",
        "apiwarn-checktoken-percentencoding": "{{doc-apierror}}",
+       "apiwarn-compare-nocontentmodel": "{{doc-apierror}}\n\nParameters:\n* $1 - Content model being assumed.",
        "apiwarn-deprecation-deletedrevs": "{{doc-apierror}}",
        "apiwarn-deprecation-expandtemplates-prop": "{{doc-apierror}}",
        "apiwarn-deprecation-httpsexpected": "{{doc-apierror}}",
index 671ac98..cdfd446 100644 (file)
                        "Ping08",
                        "Ivan-r",
                        "Redredsonia",
-                       "Alexey zakharenkov"
+                       "Alexey zakharenkov",
+                       "Facenapalm"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Документация]]\n* [[mw:Special:MyLanguage/API:FAQ|ЧаВО]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Почтовая рассылка]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Новости API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Ошибки и запросы]\n</div>\n<strong>Статус:</strong> Все отображаемые на этой странице функции должны работать, однако API находится в статусе активной разработки и может измениться в любой момент. Подпишитесь на [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ почтовую рассылку mediawiki-api-announce], чтобы быть в курсе обновлений.\n\n<strong>Ошибочные запросы:</strong> Если API получает запрос с ошибкой, вернётся заголовок HTTP с ключом «MediaWiki-API-Error», после чего значение заголовка и код ошибки будут отправлены обратно и установлены в то же значение. Более подробную информацию см. [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Ошибки и предупреждения]].\n\n<strong>Тестирование:</strong> для удобства тестирования API-запросов, см. [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Действие, которое следует выполнить.",
        "apihelp-main-param-format": "Формат вывода.",
-       "apihelp-main-param-maxlag": "Ð\97наÑ\87ение Ð¼Ð°ÐºÑ\81ималÑ\8cного Ð¾Ñ\82Ñ\81Ñ\82аваниÑ\8f Ð¼Ð¾Ð¶ÐµÑ\82 Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8cÑ\81Ñ\8f, ÐºÐ¾Ð³Ð´Ð° MediaWiki Ñ\83Ñ\81Ñ\82анавливаеÑ\82Ñ\81Ñ\8f Ð½Ð° ÐºÐ»Ð°Ñ\81Ñ\82еÑ\80 Ð¸Ð· Ñ\80еплиÑ\86иÑ\80Ñ\83емÑ\8bÑ\85 Ð±Ð°Ð· Ð´Ð°Ð½Ð½Ñ\8bÑ\85. Ð§Ñ\82обÑ\8b Ð¸Ð·Ð±ÐµÐ¶Ð°Ñ\82Ñ\8c Ñ\83Ñ\85Ñ\83дÑ\88ениÑ\8f Ñ\81иÑ\82Ñ\83аÑ\86ии Ñ\81 Ð¾Ñ\82Ñ\81Ñ\82аванием Ñ\80епликаÑ\86ии Ñ\81айÑ\82а, Ñ\8dÑ\82оÑ\82 Ð¿Ð°Ñ\80амеÑ\82Ñ\80 Ð¼Ð¾Ð¶ÐµÑ\82 Ð·Ð°Ñ\81Ñ\82авиÑ\82Ñ\8c ÐºÐ»Ð¸ÐµÐ½Ñ\82а Ð¶Ð´Ð°Ñ\82Ñ\8c, ÐºÐ¾Ð³Ð´Ð° Ð·Ð°Ð´ÐµÑ\80жка Ñ\80епликаÑ\86ии Ñ\81Ñ\82анеÑ\82 Ð½Ð¸Ð¶Ðµ Ñ\83казанного Ð·Ð½Ð°Ñ\87ениÑ\8f. Ð\92 Ñ\81лÑ\83Ñ\87ае Ñ\87Ñ\80езмеÑ\80ной Ð·Ð°Ð´ÐµÑ\80жки Ð²Ð¾Ð·Ð²Ñ\80аÑ\89аеÑ\82Ñ\81Ñ\8f ÐºÐ¾Ð´ Ð¾Ñ\88ибки Â«<samp>maxlag</samp>» Ñ\81 Ñ\81ообÑ\89ением Â«<samp>Waiting for $host: $lag seconds lagged</samp>».<br />См. Ð¿Ð¾Ð´Ñ\80обнее Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86е Ñ\81 Ð¾Ð¿Ð¸Ñ\81анием [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manual: Ð¿Ð°Ñ\80амеÑ\82Ñ\80а Maxlag ]].",
-       "apihelp-main-param-smaxage": "УÑ\81Ñ\82анавливаеÑ\82 значение HTTP-заголовка Cache-Control <code>s-maxage</code> в заданное число секунд. Ошибки никогда не кэшируются.",
-       "apihelp-main-param-maxage": "УÑ\81Ñ\82анавливаеÑ\82 Ð·Ð½Ð°Ñ\87ение HTTP-заголовка Cache-Control <code>s-maxage</code> в заданное число секунд. Ошибки никогда не кэшируются.",
-       "apihelp-main-param-assert": "УдоÑ\81Ñ\82овеÑ\80иÑ\82Ñ\8cÑ\81Ñ\8f, Ñ\87Ñ\82о Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8c Ð°Ð²Ñ\82оÑ\80изован, ÐµÑ\81ли Ð·Ð°Ð´Ð°Ð½Ð¾ <kbd>user</kbd>, Ð¸Ð»Ð¸ Ñ\87Ñ\82о имеет права бота, если задано <kbd>bot</kbd>.",
-       "apihelp-main-param-assertuser": "УбедиÑ\82еÑ\81Ñ\8c, Ñ\87Ñ\82о Ñ\82екÑ\83Ñ\89ий Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8c Ñ\8fвлÑ\8fеÑ\82Ñ\81Ñ\8f Ð¸Ð¼ÐµÐ½ÐµÐ¼ Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f.",
+       "apihelp-main-param-maxlag": "Ð\97наÑ\87ение Ð¼Ð°ÐºÑ\81ималÑ\8cного Ð¾Ñ\82Ñ\81Ñ\82аваниÑ\8f Ð¼Ð¾Ð¶ÐµÑ\82 Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8cÑ\81Ñ\8f, ÐºÐ¾Ð³Ð´Ð° MediaWiki Ñ\83Ñ\81Ñ\82ановлена Ð½Ð° ÐºÐ»Ð°Ñ\81Ñ\82еÑ\80 Ð¸Ð· Ñ\80еплиÑ\86иÑ\80Ñ\83емÑ\8bÑ\85 Ð±Ð°Ð· Ð´Ð°Ð½Ð½Ñ\8bÑ\85. Ð§Ñ\82обÑ\8b Ð¸Ð·Ð±ÐµÐ¶Ð°Ñ\82Ñ\8c Ñ\83Ñ\85Ñ\83дÑ\88ениÑ\8f Ñ\81иÑ\82Ñ\83аÑ\86ии Ñ\81 Ð¾Ñ\82Ñ\81Ñ\82аванием Ñ\80епликаÑ\86ии Ñ\81айÑ\82а, Ñ\8dÑ\82оÑ\82 Ð¿Ð°Ñ\80амеÑ\82Ñ\80 Ð¼Ð¾Ð¶ÐµÑ\82 Ð·Ð°Ñ\81Ñ\82авиÑ\82Ñ\8c ÐºÐ»Ð¸ÐµÐ½Ñ\82а Ð¶Ð´Ð°Ñ\82Ñ\8c, ÐºÐ¾Ð³Ð´Ð° Ð·Ð°Ð´ÐµÑ\80жка Ñ\80епликаÑ\86ии Ñ\81Ñ\82анеÑ\82 Ð½Ð¸Ð¶Ðµ Ñ\83казанного Ð·Ð½Ð°Ñ\87ениÑ\8f. Ð\92 Ñ\81лÑ\83Ñ\87ае Ñ\87Ñ\80езмеÑ\80ной Ð·Ð°Ð´ÐµÑ\80жки Ð²Ð¾Ð·Ð²Ñ\80аÑ\89аеÑ\82Ñ\81Ñ\8f ÐºÐ¾Ð´ Ð¾Ñ\88ибки Â«<samp>maxlag</samp>» Ñ\81 Ñ\81ообÑ\89ением Â«<samp>Waiting for $host: $lag seconds lagged</samp>».<br>См. Ð¿Ð¾Ð´Ñ\80обнее Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86е Ñ\81 Ð¾Ð¿Ð¸Ñ\81анием [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manual: Ð¿Ð°Ñ\80амеÑ\82Ñ\80а Maxlag]].",
+       "apihelp-main-param-smaxage": "УÑ\81Ñ\82ановиÑ\82Ñ\8c значение HTTP-заголовка Cache-Control <code>s-maxage</code> в заданное число секунд. Ошибки никогда не кэшируются.",
+       "apihelp-main-param-maxage": "УÑ\81Ñ\82ановиÑ\82Ñ\8c Ð·Ð½Ð°Ñ\87ение HTTP-заголовка Cache-Control <code>max-age</code> в заданное число секунд. Ошибки никогда не кэшируются.",
+       "apihelp-main-param-assert": "Ð\9fÑ\80овеÑ\80иÑ\82Ñ\8c, Ñ\87Ñ\82о Ñ\83Ñ\87аÑ\81Ñ\82ник Ð°Ð²Ñ\82оÑ\80изован, ÐµÑ\81ли Ð·Ð°Ð´Ð°Ð½Ð¾ <kbd>user</kbd>, Ð¸Ð»Ð¸ Ñ\87Ñ\82о Ð¾Ð½ имеет права бота, если задано <kbd>bot</kbd>.",
+       "apihelp-main-param-assertuser": "Ð\9fÑ\80овеÑ\80иÑ\82Ñ\8c, Ñ\87Ñ\82о Ð½Ð¸Ðº Ñ\82екÑ\83Ñ\89его Ñ\83Ñ\87аÑ\81Ñ\82ника Ñ\81овпадаеÑ\82 Ñ\81 Ð·Ð°Ð´Ð°Ð½Ð½Ñ\8bм.",
        "apihelp-main-param-requestid": "Любое заданное здесь значение будет включено в ответ. Может быть использовано для различения запросов.",
        "apihelp-main-param-servedby": "Включить в результаты имя хоста, обработавшего запрос.",
-       "apihelp-main-param-curtimestamp": "Включить в результаты временную метку.",
-       "apihelp-main-param-origin": "При обращении к API, используя кросс-доменный AJAX-запрос (CORS), задайте параметру значение исходного домена. Он должен быть включён в любой предварительный запрос и таким образом должен быть частью URI-запроса (не тела POST).\n\nДля аутентифицированных запросов он должен точно соответствовать одному из источников в заголовке <code>Origin</code>, так что он должен быть задан наподобие <kbd>https://ru.wikipedia.org</kbd> или <kbd>https://meta.wikimedia.org</kbd>. Если параметр не соответствует заголовку <code>Origin</code>, будет возвращён ответ с кодом ошибки 403. Если параметр соответствует заголовку <code>Origin</code>, и источник находится в белом списке, будут установлены заголовки <code>Access-Control-Allow-Origin</code> и <code>Access-Control-Allow-Credentials</code>.\n\nДля неаутентифицированных запросов укажите значение <kbd>*</kbd>. Это приведёт к установке заголовка <code>Access-Control-Allow-Origin</code> заголовка должен быть установлен, но <code>Access-Control-Allow-Credentials</code> примет значение <code>false</code> и все пользовательские данные будут ограничены.",
-       "apihelp-main-param-uselang": "Язык, используемый для перевода сообщений. Запрос «<kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>» с «<kbd>siprop=languages</kbd>» возвращает список кодов языков; укажите «<kbd>user</kbd>», чтобы использовать текущие языковые настройки пользователя, или «<kbd>content</kbd>» для использования основного языка этой вики.",
+       "apihelp-main-param-curtimestamp": "Включить в результат временную метку.",
+       "apihelp-main-param-responselanginfo": "Включить языки, использованные для <var>uselang</var> и <var>errorlang</var>, в результат.",
+       "apihelp-main-param-origin": "При обращении к API с использованием кросс-доменного AJAX-запроса (CORS), задайте параметру значение исходного домена. Он должен быть включён в любой предварительный запрос и таким образом должен быть частью URI-запроса (не тела POST).\n\nДля аутентифицированных запросов он должен точно соответствовать одному из источников в заголовке <code>Origin</code>, так что он должен быть задан наподобие <kbd>https://ru.wikipedia.org</kbd> или <kbd>https://meta.wikimedia.org</kbd>. Если параметр не соответствует заголовку <code>Origin</code>, будет возвращён ответ с кодом ошибки 403. Если параметр соответствует заголовку <code>Origin</code>, и источник находится в белом списке, будут установлены заголовки <code>Access-Control-Allow-Origin</code> и <code>Access-Control-Allow-Credentials</code>.\n\nДля неаутентифицированных запросов укажите значение <kbd>*</kbd>. В результате заголовок <code>Access-Control-Allow-Origin</code> будет установлен, но <code>Access-Control-Allow-Credentials</code> примет значение <code>false</code> и все пользовательские данные будут ограничены.",
+       "apihelp-main-param-uselang": "Язык, используемый для перевода сообщений. Запрос «<kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>» с «<kbd>siprop=languages</kbd>» возвращает список кодов языков; укажите «<kbd>user</kbd>», чтобы использовать текущие языковые настройки участника, или «<kbd>content</kbd>» для использования основного языка этой вики.",
+       "apihelp-main-param-errorformat": "Формат, используемый для вывода текста предупреждений и ошибок.\n; plaintext: Вики-текст с удалёнными HTML-тегами и замещёнными мнемониками.\n; wikitext: Нераспарсенный вики-текст.\n; html: HTML.\n; raw: Ключ сообщения и параметры.\n; none: Без текстового вывода, только коды ошибок.\n; bc: Формат, используемый до MediaWiki 1.29. <var>errorlang</var> и <var>errorsuselocal</var> игнорируются.",
        "apihelp-main-param-errorlang": "Язык, используемый для вывода предупреждений и сообщений об ошибках. Запрос «<kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>» с «<kbd>siprop=languages</kbd>» возвращает список кодов языков; укажите «<kbd>content</kbd>» для использования основного языка этой вики, или «<kbd>uselang</kbd>» для использования того же значения, что и в параметре «<var>uselang</var>».",
-       "apihelp-block-description": "Блокировка участника.",
+       "apihelp-main-param-errorsuselocal": "Если задан, тексты ошибок будут использовать локально модифицированные сообщения из пространства имён {{ns:MediaWiki}}.",
        "apihelp-block-param-user": "Имя участника, IP-адрес или диапазон IP-адресов, которые вы хотите заблокировать. Нельзя использовать вместе с <var>$1userid</var>",
-       "apihelp-block-param-userid": "ID участника, которого вы хотите заблокировать. Нельзя использовать одновременно вместе с <var>$1user</var>.",
-       "apihelp-block-param-expiry": "Ð\92Ñ\80емÑ\8f Ð¸Ñ\81Ñ\82еÑ\87ениÑ\8f Ñ\81Ñ\80ока Ð´ÐµÐ¹Ñ\81Ñ\82виÑ\8f. Ð\9cогÑ\83Ñ\82 Ð±Ñ\8bÑ\82Ñ\8c Ð¾Ñ\82ноÑ\81иÑ\82елÑ\8cнÑ\8bми (напÑ\80имеÑ\80, <kbd>5 Ð¼ÐµÑ\81Ñ\8fÑ\86ев</kbd> Ð¸Ð»Ð¸ <kbd>2 Ð½ÐµÐ´ÐµÐ»Ð¸</kbd>) Ð¸Ð»Ð¸ Ð°Ð±Ñ\81олÑ\8eÑ\82нÑ\8bми (напÑ\80имеÑ\80, <kbd>2014-09-18T12:34:56Z</kbd>). Ð\95Ñ\81ли Ð·Ð°Ð´Ð°Ð½Ð¾ <kbd>беÑ\81Ñ\81Ñ\80оÑ\87но</kbd>, <kbd>беÑ\81Ñ\81Ñ\80оÑ\87но</kbd>, Ð¸Ð»Ð¸ <kbd>не</kbd>, Ð±Ð»Ð¾Ðº Ð½Ð¸ÐºÐ¾Ð³Ð´Ð° Ð½Ðµ Ð¸Ñ\81Ñ\82екает.",
+       "apihelp-block-param-userid": "Идентификатор блокируемого участника. Нельзя использовать одновременно с <var>$1user</var>.",
+       "apihelp-block-param-expiry": "Ð\92Ñ\80емÑ\8f Ð¸Ñ\81Ñ\82еÑ\87ениÑ\8f Ñ\81Ñ\80ока Ð´ÐµÐ¹Ñ\81Ñ\82виÑ\8f. Ð\9cожеÑ\82 Ð±Ñ\8bÑ\82Ñ\8c Ð¾Ñ\82ноÑ\81иÑ\82елÑ\8cнÑ\8bми (напÑ\80имеÑ\80, <kbd>5 months</kbd> Ð¸Ð»Ð¸ <kbd>2 weeks</kbd>) Ð¸Ð»Ð¸ Ð°Ð±Ñ\81олÑ\8eÑ\82нÑ\8bми (напÑ\80имеÑ\80, <kbd>2014-09-18T12:34:56Z</kbd>). Ð\95Ñ\81ли Ð·Ð°Ð´Ð°Ð½Ð¾ <kbd>infinite</kbd>, <kbd>indefinite</kbd>, Ð¸Ð»Ð¸ <kbd>never</kbd>, Ð±Ð»Ð¾Ðº Ð½Ð¸ÐºÐ¾Ð³Ð´Ð° Ð½Ðµ Ð¸Ñ\81Ñ\82еÑ\87Ñ\91т.",
        "apihelp-block-param-reason": "Причина блокировки.",
-       "apihelp-block-param-anononly": "Ð\91локиÑ\80оваÑ\82Ñ\8c Ñ\82олÑ\8cко Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ñ\8bÑ\85 Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елей (т. е. запретить анонимные правки для этого IP-адреса).",
+       "apihelp-block-param-anononly": "Ð\97аблокиÑ\80оваÑ\82Ñ\8c Ñ\82олÑ\8cко Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ñ\8bÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ников (т. е. запретить анонимные правки для этого IP-адреса).",
        "apihelp-block-param-nocreate": "Запретить создание учётных записей.",
        "apihelp-block-param-autoblock": "Автоматически блокировать последний использованный IP-адрес и все последующие, с которых будут совершаться попытки авторизации.",
        "apihelp-block-param-noemail": "Запретить участнику отправлять электронную почту через интерфейс вики. (Требуется право <code>blockemail</code>).",
        "apihelp-block-param-hidename": "Скрыть имя участника из журнала блокировок. (Требуется право <code>hideuser</code>).",
        "apihelp-block-param-allowusertalk": "Позволяет участникам редактировать их собственные страницы обсуждения (зависит от <var>[[mw:Special:MyLanguage/Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
        "apihelp-block-param-reblock": "Если участник уже заблокирован, перезаписать существующую блокировку.",
-       "apihelp-block-param-watchuser": "Следить за страницей пользователя или IP-участника и страницей обсуждения.",
-       "apihelp-block-example-ip-simple": "Заблокировать IP-адрес <kbd>192.0.2.5</kbd> в течение трех дней с причиной <kbd>первого удара</kbd>.",
-       "apihelp-block-example-user-complex": "Заблокировать пользователя <kbd>Вандал</kbd> на бессрочно срок по причине <kbd>вандализма</kbd>, и предотвратить появление новых счет создания и отправки электронной почты.",
-       "apihelp-changeauthenticationdata-description": "Изменить данные проверки подлинности для текущего пользователя.",
-       "apihelp-changeauthenticationdata-example-password": "Попытка изменить текущий пароль пользователя в <kbd>ExamplePassword</kbd>.",
-       "apihelp-checktoken-description": "Проверить валидность токена от <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=token]]</kbd>.",
-       "apihelp-checktoken-param-type": "Тип маркера проходит тестирование.",
-       "apihelp-checktoken-param-token": "токен для проверки",
+       "apihelp-block-param-watchuser": "Следить за страницей участника или IP-участника и страницей обсуждения.",
+       "apihelp-block-param-tags": "Изменить метки записи в журнале блокировок.",
+       "apihelp-block-example-ip-simple": "Заблокировать IP-адрес <kbd>192.0.2.5</kbd> на три дня с причиной <kbd>First strike</kbd>.",
+       "apihelp-block-example-user-complex": "Бессрочно заблокировать участника <kbd>Vandal</kbd> по причине <kbd>Vandalism</kbd> и предотвратить создание новых аккаунтов и отправку электронной почты.",
+       "apihelp-changeauthenticationdata-example-password": "Попытаться изменить текущий пароль участника на <kbd>ExamplePassword</kbd>.",
+       "apihelp-checktoken-param-type": "Тип проверяемого токена.",
+       "apihelp-checktoken-param-token": "Проверяемый токен.",
        "apihelp-checktoken-param-maxtokenage": "Максимально допустимый возраст токена (в секундах).",
-       "apihelp-checktoken-example-simple": "Проверить годность <kbd>csrf</kbd>-токена.",
-       "apihelp-clearhasmsg-description": "Очищает флаг <code>hasmsg</code> для текущего участника.",
+       "apihelp-checktoken-example-simple": "Проверить корректность <kbd>csrf</kbd>-токена.",
        "apihelp-clearhasmsg-example-1": "Очистить флаг <code>hasmsg</code> для текущего участника.",
-       "apihelp-clientlogin-description": "Войдите в вики с помощью интерактивного потока.",
-       "apihelp-clientlogin-example-login": "Начать процесс регистрации в вики в качестве пользователя <kbd>пример</kbd> с паролем <kbd>ExamplePassword</kbd>.",
-       "apihelp-clientlogin-example-login2": "Продолжить ведение журнала в после <samp>интерфейс</samp> ответ для двухфакторной аутентификации, поставляя <var>OATHToken</var> из <kbd>987654</kbd>.",
-       "apihelp-compare-description": "Сделать разницу между 2 страницами.\n\nНомер редакции, Заголовок страницы, или страницы с ID для обоих \"из\" и \"в\" должны быть переданы.",
-       "apihelp-compare-param-fromtitle": "Первый заголовок для сравнения.",
-       "apihelp-compare-param-fromid": "Первый идентификатор страницы для сравнения.",
-       "apihelp-compare-param-fromrev": "Первая редакция для сравнения.",
-       "apihelp-compare-param-totitle": "Второй заголовок для сравнения.",
-       "apihelp-compare-param-toid": "Второй идентификатор страницы для сравнения",
-       "apihelp-compare-param-torev": "Вторая версия для сравнения",
-       "apihelp-compare-example-1": "Создание различий между версиями 1 и 2.",
-       "apihelp-createaccount-description": "Создайте новую учётную запись.",
-       "apihelp-createaccount-param-preservestate": "Если <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> возвращается True для <samp>hasprimarypreservedstate</samp>, просит отмечен как <samp>основной-обязательно</samp> должен быть опущен. Если он возвращает непустое значение для <samp>preservedusername</samp>, что имя пользователя должно быть использовано для <var>пользователя</var> параметр.",
-       "apihelp-createaccount-example-create": "Запустить процесс создания пользователя <kbd>пример</kbd> с паролем <kbd>ExamplePassword</kbd>.",
+       "apihelp-clientlogin-example-login": "Начать вход в вики в качестве участника <kbd>Example</kbd> с паролем <kbd>ExamplePassword</kbd>.",
+       "apihelp-clientlogin-example-login2": "Продолжить вход после ответа <samp>UI</samp> для двухфакторной авторизации, предоставив <kbd>987654</kbd> в качестве токена <var>OATHToken</var>.",
+       "apihelp-compare-param-fromtitle": "Заголовок первой сравниваемой страницы.",
+       "apihelp-compare-param-fromid": "Идентификатор первой сравниваемой страницы.",
+       "apihelp-compare-param-fromrev": "Первая сравниваемая версия.",
+       "apihelp-compare-param-fromtext": "Используйте этот текст вместо содержимого версии, заданной <var>fromtitle</var>, <var>fromid</var> или <var>fromrev</var>.",
+       "apihelp-compare-param-frompst": "Выполнить преобразование перед записью правки (PST) над <var>fromtext</var>.",
+       "apihelp-compare-param-fromcontentmodel": "Модель содержимого <var>fromtext</var>. Если не задана, будет угадана по другим параметрам.",
+       "apihelp-compare-param-fromcontentformat": "Формат сериализации содержимого <var>fromtext</var>.",
+       "apihelp-compare-param-totitle": "Заголовок второй сравниваемой страницы.",
+       "apihelp-compare-param-toid": "Идентификатор второй сравниваемой страницы.",
+       "apihelp-compare-param-torev": "Вторая сравниваемая версия.",
+       "apihelp-compare-param-torelative": "Использовать версию, относящуюся к определённой<var>fromtitle</var>, <var>fromid</var> или <var>fromrev</var> Все другие опции 'to' будут проигнорированы.",
+       "apihelp-compare-param-totext": "Используйте этот текст вместо содержимого версии, заданной <var>totitle</var>, <var>toid</var> или <var>torev</var>.",
+       "apihelp-compare-param-topst": "Выполнить преобразование перед записью правки (PST) над <var>totext</var>.",
+       "apihelp-compare-param-tocontentmodel": "Модель содержимого <var>totext</var>. Если не задана, будет угадана по другим параметрам.",
+       "apihelp-compare-param-tocontentformat": "Формат сериализации содержимого <var>totext</var>.",
+       "apihelp-compare-param-prop": "Какую информацию получить.",
+       "apihelp-compare-paramvalue-prop-diff": "HTML разницы.",
+       "apihelp-compare-paramvalue-prop-diffsize": "Размер HTML разницы в байтах.",
+       "apihelp-compare-paramvalue-prop-rel": "Идентификаторы предыдущей к 'from' и следующей за 'to' версий.",
+       "apihelp-compare-paramvalue-prop-ids": "Идентификаторы страниц и версий 'from' и 'to'.",
+       "apihelp-compare-paramvalue-prop-title": "Названия страниц для версий 'from' и 'to'.",
+       "apihelp-compare-paramvalue-prop-user": "Имя и идентификатор участника для версий 'from' и 'to'.",
+       "apihelp-compare-paramvalue-prop-comment": "Описания правок для версий 'from' и 'to'.",
+       "apihelp-compare-paramvalue-prop-parsedcomment": "Распарсенные описания правок для версий 'from' и 'to'.",
+       "apihelp-compare-paramvalue-prop-size": "Размер версий 'from' и 'to'.",
+       "apihelp-compare-example-1": "Создать разницу между версиями 1 и 2.",
+       "apihelp-createaccount-param-preservestate": "Если запрос <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> возвращает true для <samp>hasprimarypreservedstate</samp>, то запросы, отмеченные как <samp>primary-required</samp>, должны быть пропущены. Если запрос возвращает непустое значение поля <samp>preservedusername</samp>, то это значение должно быть использовано в параметре <samp>username</var>.",
+       "apihelp-createaccount-example-create": "Начать создание участника <kbd>Example</kbd> с паролем <kbd>ExamplePassword</kbd>.",
        "apihelp-createaccount-param-name": "Имя участника.",
-       "apihelp-createaccount-param-password": "Пароль (ignored if <var>$1mailpassword</var> is set).",
-       "apihelp-createaccount-param-domain": "Домен для внешней аутентификации (дополнительно).",
-       "apihelp-createaccount-param-token": "Создание учетной записи токена, полученные в первом запросе.",
-       "apihelp-createaccount-param-email": "Адрес электронной почты пользователя (дополнительно).",
-       "apihelp-createaccount-param-realname": "Настоящее имя пользователя (дополнительно).",
-       "apihelp-createaccount-param-mailpassword": "Если установлено любое значение, случайный пароль будет выслан пользователю.",
-       "apihelp-createaccount-param-reason": "Дополнительная причина создания учетной записи для записи в журнал.",
-       "apihelp-createaccount-param-language": "Установить код языка по умолчанию для пользователя (необязательный, по умолчанию используется язык содержимого).",
-       "apihelp-createaccount-example-pass": "Создать пользователя <kbd>testuser</kbd> с паролем <kbd>test123</kbd>.",
-       "apihelp-createaccount-example-mail": "Создать пользователя <kbd>testmailuser</kbd> и адрес электронной почты, сгенерировать случайный пароль.",
-       "apihelp-cspreport-description": "Используемые браузеры сообщать о нарушениях политики безопасности. Этот модуль никогда не должно использоваться, за исключением, когда автоматически используется совместимый КРИПТОПРОВАЙДЕР веб-браузер.",
-       "apihelp-cspreport-param-reportonly": "Отметить как доклад по мониторингу политики, а не принудительная политика",
-       "apihelp-cspreport-param-source": "Что генерируется Заголовок СКП, которые вызвали этот доклад",
-       "apihelp-delete-description": "Удалить страницу.",
-       "apihelp-delete-param-title": "Заголовок страницы удалить. Совместное использование с <var>$1страницы</var> невозможно.",
-       "apihelp-delete-param-pageid": "Идентификатор страницы для удаления. Нельзя использовать вместе с <var>$1титул</var>.",
-       "apihelp-delete-param-reason": "Причиной для удаления. Если не задано, автоматически сгенерированный причина будет использоваться.",
-       "apihelp-delete-param-tags": "Изменить теги для подачи заявки на запись в журнале удаления.",
-       "apihelp-delete-param-watch": "Добавить страницу к текущему списку наблюдения пользователя.",
-       "apihelp-delete-param-watchlist": "Безоговорочно добавить или удалить страницы из списка наблюдения текущего пользователя, используйте предпочтения или не менять часы.",
-       "apihelp-delete-param-unwatch": "Удалить страницу из списка наблюдения текущего пользователя.",
-       "apihelp-delete-example-simple": "удалить <kbd>Main Page</kbd>.",
-       "apihelp-delete-example-reason": "Удалить <kbd>Main Page</kbd> причина <kbd>Preparing for move</kbd>.",
-       "apihelp-disabled-description": "Этот модуль был отключен.",
-       "apihelp-edit-description": "Создать и отредактировать страницы.",
-       "apihelp-edit-param-sectiontitle": "Заголовок для нового раздела.",
-       "apihelp-edit-param-text": "Содержание страницы.",
-       "apihelp-edit-param-tags": "Изменить теги для подачи заявки на пересмотр.",
-       "apihelp-edit-param-minor": "Незначительное изменение (малая правка).",
-       "apihelp-edit-param-notminor": "Значительное изменение (обычная, не «малая», правка).",
+       "apihelp-createaccount-param-password": "Пароль (будет проигнорирован, если задан параметр <var>$1mailpassword</var>).",
+       "apihelp-createaccount-param-domain": "Домен для внешней аутентификации (необязательно).",
+       "apihelp-createaccount-param-token": "Токен создания учётной записи, полученный в первом запросе.",
+       "apihelp-createaccount-param-email": "Адрес электронной почты участника (необязательно).",
+       "apihelp-createaccount-param-realname": "Настоящее имя участника (необязательно).",
+       "apihelp-createaccount-param-mailpassword": "При установке любого значения, случайный пароль будет выслан участнику по электронной почте.",
+       "apihelp-createaccount-param-reason": "Причина создания учетной записи для записи в журнал (необязательно).",
+       "apihelp-createaccount-param-language": "Языковой код, который будет установлен в качестве основного языка участника (необязательно, по умолчанию используется основной язык вики).",
+       "apihelp-createaccount-example-pass": "Создать участника <kbd>testuser</kbd> с паролем <kbd>test123</kbd>.",
+       "apihelp-createaccount-example-mail": "Создать участника <kbd>testmailuser</kbd> и прислать на электронную почту случайно сгенерированный пароль.",
+       "apihelp-cspreport-param-reportonly": "Отметить как доклад от политики мониторинга, не от принудительной политики",
+       "apihelp-cspreport-param-source": "Что сгенерировало заголовок SCP, вызвавший этот доклад",
+       "apihelp-delete-param-title": "Заголовок удаляемой страницы. Нельзя использовать одновременно с <var>$1pageid</var>.",
+       "apihelp-delete-param-pageid": "Идентификатор удаляемой страницы. Нельзя использовать одновременно с <var>$1title</var>.",
+       "apihelp-delete-param-reason": "Причина удаления. Если не задана, будет использована автоматически сгенерированная причина.",
+       "apihelp-delete-param-tags": "Изменить метки записи в журнале удалений.",
+       "apihelp-delete-param-watch": "Добавить страницу в список наблюдения текущего участника.",
+       "apihelp-delete-param-watchlist": "Безусловно добавить или удалить страницу из списка наблюдения текущего участника, использовать настройки или не менять наблюдение.",
+       "apihelp-delete-param-unwatch": "Удалить страницу из списка наблюдения текущего участника.",
+       "apihelp-delete-param-oldimage": "Название старого удаляемого изображения, предоставляемое [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]].",
+       "apihelp-delete-example-simple": "Удалить <kbd>Main Page</kbd>.",
+       "apihelp-delete-example-reason": "Удалить <kbd>Main Page</kbd> с причиной <kbd>Preparing for move</kbd>.",
+       "apihelp-edit-param-title": "Название редактируемой страницы. Нельзя использовать одновременно с <var>$1pageid</var>.",
+       "apihelp-edit-param-pageid": "Идентификатор редактируемой страницы. Нельзя использовать одновременно с <var>$1title</var>.",
+       "apihelp-edit-param-section": "Номер раздела. <kbd>0</kbd> для верхнего раздела, <kbd>new</kbd> для нового раздела.",
+       "apihelp-edit-param-sectiontitle": "Заголовок нового раздела.",
+       "apihelp-edit-param-text": "Содержимое страницы.",
+       "apihelp-edit-param-summary": "Описание изменений. Также является заголовком раздела, когда используется $1section=new, а $1sectiontitle не задано.",
+       "apihelp-edit-param-tags": "Изменить метки записи в истории изменений.",
+       "apihelp-edit-param-minor": "Малая правка.",
+       "apihelp-edit-param-notminor": "Не малая правка.",
        "apihelp-edit-param-bot": "Пометить правку как сделанную ботом.",
-       "apihelp-edit-param-recreate": "Возвращает сообщение об ошибке не, если страница тем временем был удален.",
+       "apihelp-edit-param-basetimestamp": "Временная метка редактируемой версии, используется для обнаружения конфликтов редактирования. Может быть получена посредством [[Special:ApiHelp/query+revisions|action=query&prop=revisions&rvprop=timestamp]].",
+       "apihelp-edit-param-starttimestamp": "Метка времени начала редактирования, используется для обнаружения конфликтов редактирования. Необходимое значение может быть получено с помощью <var>[[Special:ApiHelp/main|curtimestamp]]</var> в начале редактирования (то есть, после загрузки содержимого редактируемой страницы).",
+       "apihelp-edit-param-recreate": "Игнорировать предупреждение о том, что страница была удалена во время редактирования.",
        "apihelp-edit-param-createonly": "Не редактировать страницу, если она уже существует.",
        "apihelp-edit-param-nocreate": "Выбрасывать ошибку, если страницы не существует.",
-       "apihelp-edit-param-watch": "Ð\94обавиÑ\82Ñ\8c Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ðº Ñ\82екÑ\83Ñ\89емÑ\83 Ñ\81пиÑ\81кÑ\83 Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f.",
-       "apihelp-edit-param-unwatch": "Удалить страницу из списка наблюдения текущего пользователя.",
-       "apihelp-edit-param-watchlist": "Безоговорочно добавить или удалить страницы из списка наблюдения текущего пользователя, используйте предпочтения или не менять часы.",
-       "apihelp-edit-param-md5": "MD5-хеша $1текстовый параметр, или $1prependtext и $1appendtext параметры объединяются. Если установлен, то изменение не будет сделано, если хэш является правильным.",
-       "apihelp-edit-param-prependtext": "Добавьте этот текст в начале страницы. Переопределяет $1текст.",
-       "apihelp-edit-param-appendtext": "Добавьте этот текст внизу страницы. Переопределяет $1текст.\n\nИспользуйте вместо этого параметра $1раздел = new, чтобы добавить новый раздел.",
-       "apihelp-edit-param-undo": "Отменить это изменение. Переопределяет $1текст, $1prependtext и $1appendtext.",
-       "apihelp-edit-param-undoafter": "Отменить все изменения от $1, чтобы отменить это. Если не набор, просто отменить одну ревизию.",
-       "apihelp-edit-param-redirect": "Автоматически разрешать редиректы.",
-       "apihelp-edit-param-contentformat": "ФоÑ\80маÑ\82 Ñ\81еÑ\80иализаÑ\86ии Ñ\81одеÑ\80жимого, Ð¸Ñ\81полÑ\8cзÑ\83емÑ\8bй Ð´Ð»Ñ\8f Ð²Ð²Ð¾Ð´Ð° текста.",
-       "apihelp-edit-param-contentmodel": "Ð\9aонÑ\82енÑ\82наÑ\8f Ð¼одель нового содержимого.",
-       "apihelp-edit-param-token": "Ð\9cаÑ\80кеÑ\80 Ð²Ñ\81егда Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ\8bÑ\82Ñ\8c Ð¿Ð¾Ñ\81лан Ð² ÐºÐ°Ñ\87еÑ\81Ñ\82ве Ð¿Ð¾Ñ\81леднего Ð¿Ð°Ñ\80амеÑ\82Ñ\80а, Ð¸Ð»Ð¸, Ð¿Ð¾ ÐºÑ\80айней Ð¼ÐµÑ\80е, Ð¿Ð¾Ñ\81ле $1Ñ\82екÑ\81Ñ\82овÑ\8bй Ð¿Ð°Ñ\80амеÑ\82Ñ\80.",
-       "apihelp-edit-example-edit": "Редактировать страницу",
+       "apihelp-edit-param-watch": "Ð\94обавиÑ\82Ñ\8c Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð² Ñ\81пиÑ\81ок Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f Ñ\82екÑ\83Ñ\89его Ñ\83Ñ\87аÑ\81Ñ\82ника.",
+       "apihelp-edit-param-unwatch": "Удалить страницу из списка наблюдения текущего участника.",
+       "apihelp-edit-param-watchlist": "Безусловно добавить или удалить страницу из списка наблюдения текущего участника, использовать настройки или не менять наблюдение.",
+       "apihelp-edit-param-md5": "MD5-хеш параметра $1text, или конкатенации параметров $1prependtext и $1apendtext. Если задан, правка не будет выполнена, если хеш некорректен.",
+       "apihelp-edit-param-prependtext": "Добавить этот текст в начало страницы. Переопределяет $1text.",
+       "apihelp-edit-param-appendtext": "Добавить этот текст в конец страницы. Переопределяет $text.\n\nДля создания нового раздела, используйте $1section=new, а не этот параметр.",
+       "apihelp-edit-param-undo": "Отменить это изменение. Переопределяет $text, $1prependtext и $1appendtext.",
+       "apihelp-edit-param-undoafter": "Отменить все изменения от $1undo до данного. Если не задано, просто отменить одно изменение.",
+       "apihelp-edit-param-redirect": "Автоматически разрешать перенаправления.",
+       "apihelp-edit-param-contentformat": "ФоÑ\80маÑ\82 Ñ\81еÑ\80иализаÑ\86ии Ñ\81одеÑ\80жимого, Ð¸Ñ\81полÑ\8cзÑ\83емÑ\8bй Ð´Ð»Ñ\8f Ð²Ð²ÐµÐ´Ñ\91нного текста.",
+       "apihelp-edit-param-contentmodel": "Ð\9cодель нового содержимого.",
+       "apihelp-edit-param-token": "Токен Ð²Ñ\81егда Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ\8bÑ\82Ñ\8c Ð¿Ð¾Ñ\81лан Ð² ÐºÐ°Ñ\87еÑ\81Ñ\82ве Ð¿Ð¾Ñ\81леднего Ð¿Ð°Ñ\80амеÑ\82Ñ\80а, Ð¸Ð»Ð¸, Ð¿Ð¾ ÐºÑ\80айней Ð¼ÐµÑ\80е, Ð¿Ð¾Ñ\81ле Ð¿Ð°Ñ\80амеÑ\82Ñ\80а $1text.",
+       "apihelp-edit-example-edit": "Редактировать страницу.",
        "apihelp-edit-example-prepend": "Добавить магическое слово <kbd>_&#95;NOTOC_&#95;</kbd> в начало страницы.",
-       "apihelp-edit-example-undo": "Отменить изменения с 13579 по 13585 с добавлением автоматического описания правки.",
-       "apihelp-emailuser-description": "Письмо участнику",
-       "apihelp-emailuser-param-target": "Адресат электронного письма",
+       "apihelp-edit-example-undo": "Отменить изменения с 13579 по 13585 с автоматическим описанием правки.",
+       "apihelp-emailuser-param-target": "Адресат электронного письма.",
        "apihelp-emailuser-param-subject": "Заголовок темы.",
-       "apihelp-emailuser-param-text": "Содержание письма",
+       "apihelp-emailuser-param-text": "Содержание письма.",
        "apihelp-emailuser-param-ccme": "Отправить копию этого сообщения мне.",
-       "apihelp-emailuser-example-email": "Отправить письмо пользователю <kbd>WikiSysop</kbd> с текстом <kbd>Content</kbd>.",
-       "apihelp-expandtemplates-description": "Разворачивает все шаблоны в викитекст.",
+       "apihelp-emailuser-example-email": "Отправить письмо участнику <kbd>WikiSysop</kbd> с текстом <kbd>Content</kbd>.",
        "apihelp-expandtemplates-param-title": "Заголовок страницы.",
-       "apihelp-expandtemplates-param-text": "Ð\92икиÑ\82екÑ\81Ñ\82 Ð´Ð»Ñ\8f ÐºÐ¾Ð½Ð²ÐµÑ\80Ñ\82иÑ\80ованиÑ\8f",
+       "apihelp-expandtemplates-param-text": "Ð\9aонвеÑ\80Ñ\82иÑ\80Ñ\83емÑ\8bй Ð²Ð¸ÐºÐ¸-Ñ\82екÑ\81Ñ\82.",
        "apihelp-expandtemplates-param-revid": "Номер версии, для <nowiki>{{REVISIONID}}</nowiki> и аналогичных переменных.",
-       "apihelp-expandtemplates-param-prop": "Какие фрагменты информации получить.\n\nОбратите внимание, что если ни одно из значений не выбрано, результат будет содержать викитекст, но вывод будет в устаревшем формате.",
-       "apihelp-expandtemplates-paramvalue-prop-wikitext": "Расширенный викитекст",
-       "apihelp-expandtemplates-paramvalue-prop-categories": "Любой категории присутствуют во входных данных, которые не представлены в тексте вывод.",
-       "apihelp-expandtemplates-paramvalue-prop-properties": "Страница свойств определяются расширенные волшебные слова в тексте.",
-       "apihelp-expandtemplates-paramvalue-prop-volatile": "Ð\95Ñ\81Ñ\82Ñ\8c Ð»Ð¸ Ð²Ñ\8bÑ\85од Ð»ÐµÑ\82Ñ\83Ñ\87иÑ\85 Ð¸ Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ñ\8b Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8cÑ\81Ñ\8f Ð¿Ð¾Ð²Ñ\82оÑ\80но Ð² Ð´Ñ\80Ñ\83гом Ð¼ÐµÑ\81Ñ\82е на странице.",
+       "apihelp-expandtemplates-param-prop": "Какую информацию включить.\n\nОбратите внимание, что если ни одно из значений не выбрано, результат будет содержать вики-текст, но вывод будет в устаревшем формате.",
+       "apihelp-expandtemplates-paramvalue-prop-wikitext": "Расширенный вики-текст.",
+       "apihelp-expandtemplates-paramvalue-prop-categories": "Любые категории, присутствующие во входных данных, но не попавшие в вики-текстовый результат.",
+       "apihelp-expandtemplates-paramvalue-prop-properties": "Свойства страницы, определённые раскрытыми магическими словами в вики-тексте.",
+       "apihelp-expandtemplates-paramvalue-prop-volatile": "ЯвлÑ\8fеÑ\82Ñ\81Ñ\8f Ð»Ð¸ Ð²Ñ\8bвод Ð½ÐµÑ\81Ñ\82абилÑ\8cнÑ\8bм Ð¸ Ñ\81ледÑ\83еÑ\82 Ð»Ð¸ Ð¾Ñ\82казаÑ\82Ñ\8cÑ\81Ñ\8f Ð¾Ñ\82 ÐµÐ³Ð¾ Ð¿Ð¾Ð²Ñ\82оÑ\80ного Ð¸Ñ\81полÑ\8cзованиÑ\8f Ð³Ð´Ðµ-либо на странице.",
        "apihelp-expandtemplates-paramvalue-prop-ttl": "Максимальное время, по прошествии которого кэш результата должен быть признан недействительным.",
-       "apihelp-expandtemplates-paramvalue-prop-jsconfigvars": "Дает переменные конфигурации JavaScript конкретной странице.",
-       "apihelp-expandtemplates-paramvalue-prop-encodedjsconfigvars": "Дает переменные конфигурации JavaScript, определенных на страницу в виде строки JSON.",
-       "apihelp-expandtemplates-paramvalue-prop-parsetree": "Дерево разбора XML входных данных.",
-       "apihelp-expandtemplates-param-includecomments": "Нужно ли включать комментарии HTML на выходе.",
-       "apihelp-expandtemplates-param-generatexml": "Создать XML-дерево разбора (заменить $1prop=parsetree).",
-       "apihelp-feedcontributions-description": "Возвращает список правок участника.",
-       "apihelp-feedcontributions-param-feedformat": "Биреү форматы",
-       "apihelp-feedcontributions-param-user": "Что пользователи, чтобы получить взносы.",
-       "apihelp-feedcontributions-param-namespace": "По какому пространству имён фильтровать вклад.",
+       "apihelp-expandtemplates-paramvalue-prop-modules": "Любые модули ResourceLoader, запрашиваемые функциями парсера на добавление в результат. Одновременно с <kbd>modules</kbd> должен быть запрошен либо <kbd>jsconfigvars</kbd>, либо <kbd>encodedjsconfigvars</kbd>.",
+       "apihelp-expandtemplates-paramvalue-prop-jsconfigvars": "Возвращает переменные JavaScript с данными настроек для этой страницы",
+       "apihelp-expandtemplates-paramvalue-prop-encodedjsconfigvars": "Возвращает переменные JavaScript с данными настроек для этой страницы в виде JSON-строки.",
+       "apihelp-expandtemplates-paramvalue-prop-parsetree": "Дерево парсинга XML входных данных.",
+       "apihelp-expandtemplates-param-includecomments": "Нужно ли включать комментарии HTML в результат.",
+       "apihelp-expandtemplates-param-generatexml": "Создать дерево парсинга XML (заменено $1prop=parsetree).",
+       "apihelp-expandtemplates-example-simple": "Развернуть вики-текст <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd>.",
+       "apihelp-feedcontributions-param-feedformat": "Формат ленты.",
+       "apihelp-feedcontributions-param-user": "Вклад каких участников получить.",
+       "apihelp-feedcontributions-param-namespace": "Вклад в каком пространстве имён показать.",
        "apihelp-feedcontributions-param-year": "От года (и ранее).",
        "apihelp-feedcontributions-param-month": "От месяца (и ранее).",
-       "apihelp-feedcontributions-param-tagfilter": "Ð\92зноÑ\81Ñ\8b Ñ\84илÑ\8cÑ\82Ñ\80а, ÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ð¸Ð¼ÐµÑ\8eÑ\82 Ñ\8dÑ\82и Ñ\82еги.",
+       "apihelp-feedcontributions-param-tagfilter": "Ð\9fоказаÑ\82Ñ\8c Ð²ÐºÐ»Ð°Ð´, Ñ\81одеÑ\80жаÑ\89ий Ð´Ð°Ð½Ð½Ñ\8bе Ð¼ÐµÑ\82ки.",
        "apihelp-feedcontributions-param-deletedonly": "Показать только удалённые правки.",
        "apihelp-feedcontributions-param-toponly": "Показать только правки, являющиеся последними версиями.",
-       "apihelp-feedcontributions-param-newonly": "Показывать только правки, являющиеся созданием страниц.",
+       "apihelp-feedcontributions-param-newonly": "Показать только правки, являющиеся созданием страниц.",
        "apihelp-feedcontributions-param-hideminor": "Скрыть малые правки.",
-       "apihelp-feedcontributions-param-showsizediff": "Показать размер различия между версиями.",
+       "apihelp-feedcontributions-param-showsizediff": "Показать объём изменений между версиями.",
        "apihelp-feedcontributions-example-simple": "Показать вклад участника <kbd>Example</kbd>.",
+       "apihelp-feedrecentchanges-param-feedformat": "Формат ленты.",
+       "apihelp-feedrecentchanges-param-namespace": "Пространство имён, которым ограничить результат.",
        "apihelp-feedrecentchanges-param-invert": "Все пространства имён, кроме выбранного.",
+       "apihelp-feedrecentchanges-param-associated": "Включить связанное (обсуждения или основное) пространство имён.",
+       "apihelp-feedrecentchanges-param-days": "Сколькими днями ограничить результат.",
        "apihelp-feedrecentchanges-param-limit": "Максимальное число возвращаемых результатов.",
        "apihelp-feedrecentchanges-param-from": "Показать изменения с тех пор.",
        "apihelp-feedrecentchanges-param-hideminor": "Скрыть малые правки.",
        "apihelp-feedrecentchanges-param-hidebots": "Скрыть правки ботов.",
-       "apihelp-feedrecentchanges-param-hideanons": "СкÑ\80Ñ\8bÑ\82Ñ\8c Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f, Ð²Ð½ÐµÑ\81Ñ\91ннÑ\8bе Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ñ\8bми Ñ\83Ñ\87аÑ\81Ñ\82никами.",
+       "apihelp-feedrecentchanges-param-hideanons": "СкÑ\80Ñ\8bÑ\82Ñ\8c Ð¿Ñ\80авки Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ñ\8bÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ников.",
        "apihelp-feedrecentchanges-param-hideliu": "Скрыть правки зарегистрированных участников.",
-       "apihelp-feedrecentchanges-param-hidepatrolled": "Скрыть отпатруллированные правки.",
-       "apihelp-feedrecentchanges-param-hidemyself": "Скрыть изменения, сделанные текущим участником.",
-       "apihelp-feedrecentchanges-param-tagfilter": "Фильтр по тегам.",
+       "apihelp-feedrecentchanges-param-hidepatrolled": "Скрыть отпатрулированные правки.",
+       "apihelp-feedrecentchanges-param-hidemyself": "Скрыть правки текущего участника.",
+       "apihelp-feedrecentchanges-param-hidecategorization": "Скрыть категоризацию страниц.",
+       "apihelp-feedrecentchanges-param-tagfilter": "Фильтр по меткам.",
        "apihelp-feedrecentchanges-param-target": "Показать только правки на страницах, на которые ссылается данная.",
        "apihelp-feedrecentchanges-param-showlinkedto": "Показать правки на страницах, ссылающихся на данную.",
+       "apihelp-feedrecentchanges-param-categories": "Показать только правки на страницах, включённых во все данные категории.",
+       "apihelp-feedrecentchanges-param-categories_any": "Показать только правки на страницах, включённых в хотя бы одну из данных категорий.",
        "apihelp-feedrecentchanges-example-simple": "Список последних изменений.",
-       "apihelp-feedrecentchanges-example-30days": "Ð\9fоказаÑ\82Ñ\8c Ð¿Ð¾Ñ\81ледние Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f Ð² Ñ\82еÑ\87ение 30 дней.",
-       "apihelp-feedwatchlist-param-feedformat": "Ð\91иÑ\80еү Ñ\84оÑ\80маты.",
-       "apihelp-feedwatchlist-param-hours": "Ð\91Ñ\8bл Ð²Ð°Ò¡Ñ\8bÑ\82Ñ\82ан Ð°Ð»Ñ\8bп Ò¯Ò\99гÓ\99Ñ\80Ñ\82елгÓ\99н Ð±Ð¸Ñ\82Ñ\82Ó\99Ñ\80 Ð¸Ñ\81емлеге",
+       "apihelp-feedrecentchanges-example-30days": "СпиÑ\81ок Ð¿Ð¾Ñ\81ледниÑ\85 Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ Ð·Ð° 30 дней.",
+       "apihelp-feedwatchlist-param-feedformat": "ФоÑ\80маÑ\82 Ð»ÐµÐ½ты.",
+       "apihelp-feedwatchlist-param-hours": "СпиÑ\81ок Ñ\81Ñ\82Ñ\80аниÑ\86, Ð¾Ñ\82Ñ\80едакÑ\82иÑ\80ованнÑ\8bÑ\85 Ñ\81Ñ\82олÑ\8cко Ñ\87аÑ\81ов Ð½Ð°Ð·Ð°Ð´.",
        "apihelp-feedwatchlist-param-linktosections": "Ссылаться прямо на разделы с изменениями, если возможно.",
-       "apihelp-feedwatchlist-example-default": "Ð\9aÒ¯Ò\99Ó\99Ñ\82еү ÐºÐ°Ð½Ð°Ð»Ñ\8bн ÐºÒ¯Ñ\80Ò»Ó\99Ñ\82еÑ\80гÓ\99",
-       "apihelp-feedwatchlist-example-all6hrs": "Ð\9aÒ¯Ò\99Ó\99Ñ\82елгÓ\99н Ð±Ð¸Ñ\82Ñ\82Ó\99Ñ\80Ò\99Ó\99 Ò»Ñ\83Ò£Ò\93Ñ\8b 6 Ñ\81Ó\99Ò\93Ó\99Ñ\82 Ñ\8dÑ\81ендÓ\99ге Ò¯Ò\99гÓ\99Ñ\80еÑ\88Ñ\82Ó\99Ñ\80Ò\99е ÐºÒ¯Ñ\80Ò»Ó\99Ñ\82еÑ\80гÓ\99.",
-       "apihelp-filerevert-description": "Файлды иҫке версияға ҡайтарырға.",
-       "apihelp-filerevert-param-filename": "Целевое имя файла без префикса File:.",
-       "apihelp-filerevert-param-comment": "Загрузить комментарий.",
+       "apihelp-feedwatchlist-example-default": "Ð\9fоказаÑ\82Ñ\8c Ð»ÐµÐ½Ñ\82Ñ\83 Ñ\81пиÑ\81ка Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f.",
+       "apihelp-feedwatchlist-example-all6hrs": "Ð\9fоказаÑ\82Ñ\8c Ð²Ñ\81е Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f Ð½Ð° Ð½Ð°Ð±Ð»Ñ\8eдаемÑ\8bÑ\85 Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\85 Ð·Ð° Ð¿Ð¾Ñ\81ледние 6 Ñ\87аÑ\81ов.",
+       "apihelp-filerevert-param-filename": "Целевое имя файла без префикса «Файл:».",
+       "apihelp-filerevert-param-comment": "Комментарий загрузки.",
+       "apihelp-filerevert-param-archivename": "Архивное название возвращаемой версии.",
        "apihelp-filerevert-example-revert": "Откат <kbd>Wiki.png</kbd> к версии от <kbd>2011-03-05T15:27:40Z</kbd>.",
-       "apihelp-help-param-helpformat": "Белешмә яҙыу форматы.",
+       "apihelp-help-param-modules": "Модули, справку которых необходимо отобразить (значения параметров <var>action</var> и <var>format</var>, или <kbd>main</kbd>). Можно указывать подмодули с помощью <kbd>+</kbd>.",
+       "apihelp-help-param-submodules": "Включить справку подмодулей заданного модуля.",
+       "apihelp-help-param-recursivesubmodules": "Включить справку подмодулей рекурсивно.",
+       "apihelp-help-param-helpformat": "Формат вывода справки.",
+       "apihelp-help-param-wrap": "Обернуть вывод в стандартную структуру API-ответа.",
+       "apihelp-help-param-toc": "Включить содержание в вывод HTML.",
        "apihelp-help-example-main": "Помощь по главному модулю.",
-       "apihelp-help-example-recursive": "Вся справка в одном разделе.",
-       "apihelp-imagerotate-description": "Поворот одного или нескольких изображений.",
+       "apihelp-help-example-submodules": "Помощь по модулю <kbd>action=query</kbd> и его подмодулям.",
+       "apihelp-help-example-recursive": "Вся справка на одной странице.",
+       "apihelp-help-example-help": "Справка по самому модулю справки.",
+       "apihelp-help-example-query": "Справка по двум подмодулям query.",
        "apihelp-imagerotate-param-rotation": "На сколько градусов по часовой стрелке повернуть изображение.",
+       "apihelp-imagerotate-param-tags": "Изменить метки записи в журнале загрузок.",
        "apihelp-imagerotate-example-simple": "Повернуть <kbd>File:Example.png</kbd> на <kbd>90</kbd> градусов.",
        "apihelp-imagerotate-example-generator": "Повернуть все изображения в <kbd>Category:Flip</kbd> на <kbd>180</kbd> градусов.",
        "apihelp-import-param-summary": "Описание записи журнала импорта.",
        "apihelp-import-param-xml": "Загруженный XML-файл.",
-       "apihelp-import-example-import": "Импортировать [[meta:Help:ParserFunctions]] с полной историей в пространство имён 100.",
+       "apihelp-import-param-interwikisource": "Для импорта из других вики: импортируемая вики.",
+       "apihelp-import-param-interwikipage": "Для импорта из других вики: импортируемая страница.",
+       "apihelp-import-param-fullhistory": "Для импорта из других вики: импортировать полную историю, а не только текущую страницу.",
+       "apihelp-import-param-templates": "Для импорта из других вики: также импортировать все включённые шаблоны.",
+       "apihelp-import-param-namespace": "Импортировать в это пространство имён. Не может быть использовано одновременно с <var>$1rootpage</var>.",
+       "apihelp-import-param-rootpage": "Импортировать в качестве подстраницы данной страницы. Не может быть использовано одновременно с <var>$1namespace</var>.",
+       "apihelp-import-param-tags": "Изменить метки записи в журнале импорта и нулевой правки в импортируемых страницах.",
+       "apihelp-import-example-import": "Импортировать [[meta:Help:ParserFunctions]] с полной историей правок в пространство имён 100.",
+       "apihelp-linkaccount-example-link": "Начать связывание аккаунта с <kbd>Example</kdb>.",
        "apihelp-login-param-name": "Имя участника.",
        "apihelp-login-param-password": "Пароль.",
        "apihelp-login-param-domain": "Домен (необязательно).",
+       "apihelp-login-param-token": "Токен входа, полученный при первом запросе.",
        "apihelp-login-example-gettoken": "Получить токен входа.",
        "apihelp-login-example-login": "Войти",
-       "apihelp-logout-description": "Выйти и очистить данные сессии.",
-       "apihelp-mergehistory-description": "Объединение историй правок",
+       "apihelp-logout-example-logout": "Выйти из текущего участника.",
+       "apihelp-managetags-param-operation": "Какую операцию выполнить:\n;create: Создать новую метку для ручного использования.\n;delete: Удалить метку из базы данных, что включает в себя удаление метки со всех версий и записей журналов, где она использовалось.\n;activate: Активировать изменение метки, позволив участникам устанавливать её вручную.\n;deactivate: Деактивировать изменение метки, запретив участникам устанавливать её вручную.",
+       "apihelp-managetags-param-tag": "Создаваемая, удаляемая, активируемая или деактивируемая метка. Создаваемая метка должна не существовать. Удаляемая метка должна существовать. Активируемая метка должна существовать и не быть использованной в каком-либо расширении. Деактивируемая метка должна существовать и быть заданной вручную.",
+       "apihelp-managetags-param-reason": "Причина создания, удаления, активирования или деактивирования метки (необязательно).",
+       "apihelp-managetags-param-ignorewarnings": "Игнорировать ли все предупреждения, возникающие во время операции.",
+       "apihelp-managetags-param-tags": "Изменить метки записи в журнале управления метками.",
+       "apihelp-managetags-example-create": "Создать метку с названием <kbd>spam</kbd> с причиной <kbd>For use in edit patrolling</kbd>.",
+       "apihelp-managetags-example-delete": "Удалить метку <kbd>vandlaism</kbd> с причиной <kbd>Misspelt</kbd>.",
+       "apihelp-managetags-example-activate": "Активировать метку <kbd>spam</kbd> с причиной <kbd>For use in edit patrolling</kbd>.",
+       "apihelp-managetags-example-deactivate": "Деактивировать метку <kbd>spam</kbd> с причиной <kbd>No longer required</kbd>.",
+       "apihelp-mergehistory-param-from": "Название страницы, история из которой будет объединяться. Не может быть использовано одновременно с <var>$1fromid</var>.",
+       "apihelp-mergehistory-param-fromid": "Идентификатор страницы, история из которой будет объединяться. Не может быть использовано одновременно с <var>$1from</var>.",
+       "apihelp-mergehistory-param-to": "Название страницы, в историю которой будет добавлено объединяемое. Не может быть использовано одновременно с <var>$1toid</var>.",
+       "apihelp-mergehistory-param-toid": "Идентификатор страницы, в историю которой будет добавлено объединяемое. Не может быть использовано одновременно с <var>$1to</var>.",
+       "apihelp-mergehistory-param-timestamp": "Временная метка, до которой версии будут перемещены из истории страницы-источника в историю целевой страницы. Если опущено, в целевую страницу будет перемещена вся история правок страницы-источника.",
        "apihelp-mergehistory-param-reason": "Причина для объединения истории.",
-       "apihelp-move-description": "Переместить страницу.",
-       "apihelp-move-param-to": "Заголовок, в который следует переименовать страницу.",
+       "apihelp-mergehistory-example-merge": "Переместить всю историю правок страницы <kbd>Oldpage</kbd> на страницу <kbd>Newpage</kdb>.",
+       "apihelp-mergehistory-example-merge-timestamp": "Переместить историю правок из <kbd>Oldpage</kbd>, совершённых до <kbd>2015-12-31T04:37:41Z</kbd>, на страницу <kbd>Newpage</kdb>.",
+       "apihelp-move-param-from": "Название переименовываемой страницы. Нельзя использовать одновременно с <var>$1fromid</var>.",
+       "apihelp-move-param-fromid": "Идентификатор переименовываемой страницы. Нельзя использовать одновременно с <var>$1from</var>.",
+       "apihelp-move-param-to": "Новое название страницы.",
        "apihelp-move-param-reason": "Причина переименования.",
        "apihelp-move-param-movetalk": "Переименовать страницу обсуждения, если она есть.",
        "apihelp-move-param-movesubpages": "Переименовать подстраницы, если это применимо.",
        "apihelp-move-param-noredirect": "Не создавать перенаправление.",
-       "apihelp-move-param-watch": "Добавить страницу и перенаправление в список наблюдения текущего пользователя.",
-       "apihelp-move-param-unwatch": "Удалить страницу и перенаправление из списка наблюдения текущего пользователя.",
-       "apihelp-move-param-ignorewarnings": "Игнорировать предупреждения",
+       "apihelp-move-param-watch": "Добавить страницу и перенаправление в список наблюдения текущего участника.",
+       "apihelp-move-param-unwatch": "Удалить страницу и перенаправление из списка наблюдения текущего участника.",
+       "apihelp-move-param-watchlist": "Безусловно добавить или удалить страницу из списка наблюдения текущего участника, использовать настройки или не менять наблюдение.",
+       "apihelp-move-param-ignorewarnings": "Игнорировать все предупреждения.",
+       "apihelp-move-param-tags": "Изменить метки записи в журнале переименований и нулевой правки на переименованной странице.",
        "apihelp-move-example-move": "Переименовать <kbd>Badtitle</kbd> в <kbd>Goodtitle</kbd> без оставления перенаправления.",
        "apihelp-opensearch-param-search": "Строка поиска.",
        "apihelp-opensearch-param-limit": "Максимальное число возвращаемых результатов.",
        "apihelp-opensearch-param-namespace": "Пространства имён для поиска.",
+       "apihelp-opensearch-param-suggest": "Ничего не делать, если <var>[[mw:Special:MyLanguage/Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> ложно.",
+       "apihelp-opensearch-param-redirects": "Как обрабатывать перенаправления:\n;return: Вернуть само перенаправление.\n;resolve: Вернуть целевую страницу. Может вернуть меньше $1limit результатов.\nПо историческим причинам значением по умолчанию является «return» для $1format=json и «resolve» для остальных форматов.",
        "apihelp-opensearch-param-format": "Формат вывода.",
+       "apihelp-opensearch-param-warningsaserror": "Если предупреждения возникают при <kbd>format=json</kbd>, вернуть ошибку API вместо того, чтобы игнорировать их.",
+       "apihelp-opensearch-example-te": "Найти страницы, начинающиеся с <kbd>Te</kbd>.",
        "apihelp-options-param-reset": "Сбрасывает настройки на установленные по умолчанию.",
+       "apihelp-options-param-resetkinds": "Список типов сбрасываемых настроек, если задана опция <var>$1reset</var>.",
+       "apihelp-options-param-change": "Список изменений в формате название=значение (например, skin=vector). Если значения не даётся (нет даже знака равенства), например, названиенастройки|другаянастройка|, настройка будет возвращена в своё значение по умолчанию. Если какое-либо значение должно содержать знак пайпа (<kbd>|</kbd>), используйте [[Special:ApiHelp/main#main/datatypes|альтернативный разделитель значений]] для корректного проведения операции.",
+       "apihelp-options-param-optionname": "Название настройки, которая должна быть установлена в значение, переданное через <var>$1optionvalue</var>.",
+       "apihelp-options-param-optionvalue": "Значение настройки, заданной <var>$1optionname</var>.",
        "apihelp-options-example-reset": "Сбросить все настройки.",
-       "apihelp-paraminfo-description": "Получить информацию о модулях API.",
+       "apihelp-options-example-change": "Изменить настройки <kbd>skin</kbd> и <kbd>hideminor</kbd>.",
+       "apihelp-options-example-complex": "Сбросить все настройки, а затем изменить <kbd>skin</kbd> и <kbd>nickname</kbd>.",
+       "apihelp-paraminfo-param-modules": "Список названий модулей (значения параметров <var>action</var> и <var>format</var>, или <kbd>main</kbd>). Можно указать подмодули с помощью <kbd>+</kbd>, все подмодули с помощью <kbd>+*</kbd>, или все подмодули рекурсивно с помощью <kbd>+**</kbd>.",
        "apihelp-paraminfo-param-helpformat": "Формат строк справки.",
-       "apihelp-parse-param-prop": "Какие части информации получить:",
-       "apihelp-parse-paramvalue-prop-text": "Дает разобранного текста в тексте.",
-       "apihelp-parse-paramvalue-prop-langlinks": "Возвращает язык ссылки в анализируемой wikitext.",
+       "apihelp-paraminfo-param-querymodules": "Список модулей query (значения параметров <var>prop</var>, <var>meta</var> или <var>list</var>). Используйте <kbd>$1modules=query+foo</kbd> вместо <kbd>$1querymodules=foo</kbd>.",
+       "apihelp-paraminfo-param-mainmodule": "Также получить информацию о главном модуле. Вместо этого используйте <kbd>$1modules=main</kbd>.",
+       "apihelp-paraminfo-param-pagesetmodule": "Также получить информацию о модуле pageset (предоставляющем titles= и синонимы).",
+       "apihelp-paraminfo-param-formatmodules": "Список названий форматных модулей (значения параметра <var>format</var>). Вместо этого используйте <var>$1modules</var>.",
+       "apihelp-paraminfo-example-1": "Показать информацию для <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd>, и <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>.",
+       "apihelp-paraminfo-example-2": "Показать информацию для всех подмодулей <kbd>[[Special:ApiHelp/query|action=query]]</kbd>.",
+       "apihelp-parse-param-title": "Название страницы, которой принадлежит текст. Если опущено, должен быть указан параметр <var>$1contentmodel</var>, и в качестве заголовка будет использовано [[API]].",
+       "apihelp-parse-param-text": "Распарсиваемый текст. Используйте <var>$1title</var> или <var>$1contentmodel</var> для управления моделью содержимого.",
+       "apihelp-parse-param-summary": "Анализируемое описание правки.",
+       "apihelp-parse-param-page": "Распарсить содержимое этой страницы. Не может быть использовано совместно с <var>$1text</var> и <var>$1title</var>.",
+       "apihelp-parse-param-pageid": "Анализировать содержимое этой страницы. Переопределяет <var>$1page</var>.",
+       "apihelp-parse-param-redirects": "Если значением <var>$1page</var> или <var>$1pageid</var> указано перенаправление, разрешить его.",
+       "apihelp-parse-param-oldid": "Распарсить содержимое этой версии. Переопределяет <var>$1page</var> и <var>$1pageid</var>.",
+       "apihelp-parse-param-prop": "Какую информацию включить:",
+       "apihelp-parse-paramvalue-prop-text": "Возвращает текст распарсенного вики-текста.",
+       "apihelp-parse-paramvalue-prop-langlinks": "Возвращает языковые ссылки из распарсенного вики-текста.",
+       "apihelp-parse-paramvalue-prop-categories": "Возвращает категории из проанализированного вики-текста.",
        "apihelp-parse-paramvalue-prop-categorieshtml": "Возвращает HTML-версию категорий.",
-       "apihelp-parse-param-disablepp": "Урынына <var>$1disablelimitreport</var> ҡулланырға.",
-       "apihelp-parse-param-preview": "Алдан ҡарау режимында синтаксик анализ",
-       "apihelp-parse-param-disabletoc": "Не включать в вывод таблицу содержания.",
-       "apihelp-parse-example-page": "анализ страницы",
-       "apihelp-parse-example-text": "Анализ wikitext.",
-       "apihelp-parse-example-summary": "Һығымтаны тикшереү.",
-       "apihelp-patrol-param-rcid": "Яңы үҙгәртеүҙәрҙе ҡарау идентификаторы.",
-       "apihelp-patrol-param-revid": "Ҡарау версияһы идентификаторы.",
+       "apihelp-parse-paramvalue-prop-links": "Возвращает внутренние ссылки из распарсенного вики-текста.",
+       "apihelp-parse-paramvalue-prop-templates": "Возвращает шаблоны из проанализированного вики-текста.",
+       "apihelp-parse-paramvalue-prop-images": "Возвращает изображения из распарсенного вики-текста.",
+       "apihelp-parse-paramvalue-prop-externallinks": "Возвращает внешние ссылки из распарсенного вики-текста.",
+       "apihelp-parse-paramvalue-prop-sections": "Возвращает разделы из проанализированного вики-текста.",
+       "apihelp-parse-paramvalue-prop-revid": "Добавляет идентификатор версии распарсенной страницы.",
+       "apihelp-parse-paramvalue-prop-displaytitle": "Добавляет название проанализированного вики-текста.",
+       "apihelp-parse-paramvalue-prop-headitems": "<span class=\"apihelp-deprecated\">Не поддерживается.</span> Возвращает элементы, которые следует поместить в <code>&lt;head&gt;</code> страницы.",
+       "apihelp-parse-paramvalue-prop-headhtml": "Возвращает распарсенный <code>&lt;head&gt;</code> страницы.",
+       "apihelp-parse-paramvalue-prop-modules": "Возвращает использованные на странице модули ResourceLoader. Для загрузки, используйте <code>mw.loader.using()</code>. Одновременно с <kbd>modules</kbd> должно быть запрошено либо <kbd>jsconfigvars</kbd>, либо <kbd>encodedjsconfigvars</kbd>.",
+       "apihelp-parse-paramvalue-prop-jsconfigvars": "Возвращает переменные JavaScript с данными настроек для этой страницы. Для их применения используйте <code>mw.condig.set()</code>.",
+       "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "Возвращает переменные JavaScript с данными настроек для этой страницы в виде JSON-строки.",
+       "apihelp-parse-paramvalue-prop-indicators": "Возвращает HTML-код индикаторов, использованных на данной странице.",
+       "apihelp-parse-paramvalue-prop-iwlinks": "Возвращает интервики-ссылки из распарсенного вики-текста.",
+       "apihelp-parse-paramvalue-prop-wikitext": "Возвращает исходный распарсиваемый вики-текст.",
+       "apihelp-parse-paramvalue-prop-properties": "Возвращает различные свойства, объявленные в проанализированном вики-тексте.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "Возвращает структурированный отчёт о лимите. Не возвращает данных, если задан <var>$1disablelimitreport</var>.",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "Возвращает HTML-версию отчёта о лимите. Не возвращает данных, если задан <var>$1disablelimitreport</var>.",
+       "apihelp-parse-paramvalue-prop-parsetree": "Дерево парсинга XML содержимого версии (требуется модель содержимого <code>$1</code>).",
+       "apihelp-parse-paramvalue-prop-parsewarnings": "Возвращает предупреждения, возникшие во время анализа.",
+       "apihelp-parse-param-wrapoutputclass": "CSS-класс, используемый для оборачивания вывода парсера.",
+       "apihelp-parse-param-pst": "Выполнить преобразование перед записью правки (PST) до того, как начать анализировать текст. Доступно только когда используется с текстом.",
+       "apihelp-parse-param-onlypst": "Выполнить преобразование перед записью правки (PST) входных данных, но не парсить их. Возвращает тот же вики-текст после применения PST. Доступно только при применении с <var>$1text</var>.",
+       "apihelp-parse-param-effectivelanglinks": "Включает языковые ссылки, обеспечиваемые расширениями (для использования с <kbd>$1prop=langlinks</kbd>).",
+       "apihelp-parse-param-section": "Распарсить содержимое только секции с заданным номером.\n\nЕсли задан <kbd>new</kbd>, распарсить <var>$1text</var> и <var>$1sectiontitle</var> так, как будто добавлена новая секция на страницу.\n\n<kbd>new</kbd> доступен только при заданном <var>text</var>.",
+       "apihelp-parse-param-sectiontitle": "Название новой секции, когда <var>section</var> имеет значение <kbd>new</kbd>.\n\nВ отличие от редактирования страницы, оно не примет значение параметра <var>summary</var>, если опустить его или оставить пустым.",
+       "apihelp-parse-param-disablelimitreport": "Опустить отчёт о лимите («NewPP limit report») из результата парсинга.",
+       "apihelp-parse-param-disablepp": "Вместо этого используйте <var>$1disablelimitreport</var>.",
+       "apihelp-parse-param-disableeditsection": "Опустить ссылки на редактирование разделов из результата парсинга.",
+       "apihelp-parse-param-disabletidy": "Не проводить очистку HTML (например, с помощью tidy) результатов парсинга.",
+       "apihelp-parse-param-generatexml": "Сгенерировать дерево парсинга XML (требуется модель содержимого <code>$1</code>, замещено <kbd>$2prop=parsetree</kbd>).",
+       "apihelp-parse-param-preview": "Проанализировать в режиме препросмотра.",
+       "apihelp-parse-param-sectionpreview": "Распарсить в режиме предпросмотра раздела (также активирует режим предпросмотра).",
+       "apihelp-parse-param-disabletoc": "Не включать в вывод содержание.",
+       "apihelp-parse-param-useskin": "Применить выбранную тему оформления к результату работы парсера. Может затронуть следующие свойства: <kbd>langlinks</kbd>, <kbd>headitems</kbd>, <kbd>modules</kbd>, <kbd>jsconfigvars</kbd>, <kbd>indicators</kbd>.",
+       "apihelp-parse-param-contentformat": "Формат сериализации содержимого, использующийся во входном тексте. Доступен только при использовании с $1text.",
+       "apihelp-parse-param-contentmodel": "Модель содержимого входного текста. Если пропущена, должен быть задан $1title, и значение по умолчанию будет взято в зависимости от указанного названия. Доступно только при использовании с $1text.",
+       "apihelp-parse-example-page": "Парсинг страницы.",
+       "apihelp-parse-example-text": "Анализ вики-текста.",
+       "apihelp-parse-example-texttitle": "Парсинг вики-текста с заданным заголовком страницы.",
+       "apihelp-parse-example-summary": "Анализ описания правки.",
+       "apihelp-patrol-param-rcid": "Идентификатор патрулируемой последней правки.",
+       "apihelp-patrol-param-revid": "Идентификатор патрулируемой версии.",
+       "apihelp-patrol-param-tags": "Изменить метки записи в журнале патрулирования.",
        "apihelp-patrol-example-rcid": "Патрулировать недавние изменения.",
-       "apihelp-patrol-example-revid": "Патрулировать версию.",
-       "apihelp-protect-description": "Изменить уровень защиты страницы.",
-       "apihelp-protect-param-title": "Бит атамаһы. $1pageid менән бергә ҡулланылмай.",
-       "apihelp-protect-param-reason": "(ООН) һағы сәбәптәре.",
+       "apihelp-patrol-example-revid": "Отпатрулировать версию.",
+       "apihelp-protect-param-title": "Название (раз)защищаемой страницы. Не может использоваться одновременно с $1pageid.",
+       "apihelp-protect-param-pageid": "Идентификатор (раз)защищаемой страницы. Не может использоваться одновременно с $1title.",
+       "apihelp-protect-param-protections": "Список уровней защиты в формате <kbd>действие=уровень</kbd> (например, <kbd>edit=sysop</kbd>). Уровень <kbd>all</kbd> означает, что кто угодно может осуществлять действие, то есть, нет ограничений.\n\n<strong>Примечания:</strong> Все неперечисленные действия потеряют уровни защиты.",
+       "apihelp-protect-param-expiry": "Временная метка истечения защиты. Если задана только одна метка, она будет использована для всех защит. Используйте <kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd> или <kbd>never</kbd> для бессрочных защит.",
+       "apihelp-protect-param-reason": "Причина (раз)защиты.",
+       "apihelp-protect-param-tags": "Изменить метки записи в журнале защиты.",
+       "apihelp-protect-param-cascade": "Активировать каскадную защиту (то есть, защитить включённые шаблоны и использованные изображения). Игнорируется, если ни один из заданных уровней не поддерживает каскадную защиту.",
+       "apihelp-protect-param-watch": "Если задан, добавить (раз)защищаемую страницу в список наблюдения текущего участника.",
+       "apihelp-protect-param-watchlist": "Безусловно добавить или удалить страницу из списка наблюдения текущего участника, использовать настройки или не менять наблюдение.",
        "apihelp-protect-example-protect": "Защитить страницу.",
-       "apihelp-protect-example-unprotect": "Снять защиту страницы, установив ограничения <kbd>all</kbd> (т. е. любой желающий может принять меры).",
-       "apihelp-protect-example-unprotect2": "Ð\91еÑ\80 Ð½Ð¸Ð½Ð´Ó\99й Ñ\81иклÓ\99Ò¯Ò\99Ó\99Ñ\80 Ò¡Ñ\83ймай Ð±Ð¸Ñ\82Ñ\82Ó\99н Ò»Ð°Ò¡Ð»Ð°Ñ\83Ò\99Ñ\8b Ð°Ð»Ñ\8bÑ\80Ò\93а.",
-       "apihelp-purge-param-forcelinkupdate": "Ð\9eбновление Ñ\81вÑ\8fзей Ñ\82аблиÑ\86.",
+       "apihelp-protect-example-unprotect": "Снять защиту страницы, установив ограничения <kbd>all</kbd> (то есть, позволив всем проводить действия над страницей).",
+       "apihelp-protect-example-unprotect2": "СнÑ\8fÑ\82Ñ\8c Ð·Ð°Ñ\89иÑ\82Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83, Ð½Ðµ Ñ\83казав Ð¾Ð³Ñ\80аниÑ\87ений.",
+       "apihelp-purge-param-forcelinkupdate": "Ð\9eбновиÑ\82Ñ\8c Ñ\82аблиÑ\86Ñ\8b Ñ\81Ñ\81Ñ\8bлок.",
        "apihelp-purge-param-forcerecursivelinkupdate": "Обновить таблицу ссылок для данной страницы, а также всех страниц, использующих данную как шаблон.",
-       "apihelp-purge-example-generator": "Продувка первые 10 страниц в основном пространстве имен.",
-       "apihelp-query-param-list": "Какие списки использовать",
-       "apihelp-query-param-meta": "Какие метаданные использовать",
-       "apihelp-query+allcategories-description": "Перечислить все категории.",
-       "apihelp-query+allcategories-param-prefix": "Был мәғәнәнән башланған бар атамаларҙы категориялар буйынса эҙләргә.",
-       "apihelp-query+allcategories-param-dir": "Сортлау йүнәлештәре.",
+       "apihelp-purge-example-simple": "Очистить кэш для страниц <kbd>Main Page</kbd> и <kbd>API</kbd>.",
+       "apihelp-purge-example-generator": "Очистить кэш первых 10 страниц в основном пространстве имен.",
+       "apihelp-query-param-prop": "Какие использовать свойства для запрашиваемых страниц.",
+       "apihelp-query-param-list": "Какие списки использовать.",
+       "apihelp-query-param-meta": "Какие метаданные использовать.",
+       "apihelp-query-param-indexpageids": "Включить дополнительную секцию pageids, содержащую список идентификаторов всех возвращённых страниц.",
+       "apihelp-query-param-export": "Экспортировать текущую версию для всех данных или сгенерированных страниц.",
+       "apihelp-query-param-exportnowrap": "Вернуть экспортируемый XML без оборачивания его в XML-результат (тот же формат, что и в [[Special:Export]]). Можно использовать только одновременно с $1export.",
+       "apihelp-query-param-iwurl": "Возвращать ли полную ссылку, если названием является интервики-ссылка.",
+       "apihelp-query-param-rawcontinue": "Вернуть сырые данные в <samp>query-continue</samp> для продолжения.",
+       "apihelp-query-example-revisions": "Получить [[Special:ApiHelp/query+siteinfo|site info]] и [[Special:ApiHelp/query+revisions|последнее изменение]] для <kbd>Main Page</kbd>.",
+       "apihelp-query-example-allpages": "Получить последнее изменение для страниц, начиная с <kbd>API/</kbd>.",
+       "apihelp-query+allcategories-param-from": "Категория, с которой начать перечисление.",
+       "apihelp-query+allcategories-param-to": "Категория, на которой закончить перечисление.",
+       "apihelp-query+allcategories-param-prefix": "Найти все названия категорий, начинающиеся с этого значения.",
+       "apihelp-query+allcategories-param-dir": "Порядок сортировки.",
+       "apihelp-query+allcategories-param-min": "Вернуть только категории, в которых не меньше заданного числа страниц.",
+       "apihelp-query+allcategories-param-max": "Вернуть только категории, в которых не больше заданного числа страниц.",
        "apihelp-query+allcategories-param-limit": "Сколько категорий вернуть.",
        "apihelp-query+allcategories-param-prop": "Какие свойства получить:",
-       "apihelp-query+allcategories-paramvalue-prop-size": "Категорияларға биттәр һаны өҫтәү",
-       "apihelp-query+allcategories-example-size": "Биттәр һаны буйынса мәғлүмәтле категориялар исемлеге.",
-       "apihelp-query+allcategories-example-generator": "<kbd>исемлек</kbd> категориялар битенән мәғлүмәт алырға.",
-       "apihelp-query+alldeletedrevisions-description": "Бар мөхәррирләү исемлеге ҡулланыусы тарафынан юйылған.",
-       "apihelp-query+alldeletedrevisions-paraminfo-useronly": "<var>$3ҡулланыусының</var> менән генә ҡулланыла ала.",
-       "apihelp-query+alldeletedrevisions-param-start": "Һанауҙы башлау ваҡытын билдәләү",
-       "apihelp-query+alldeletedrevisions-param-end": "Һанай башлау ваҡытын билдәләү.",
-       "apihelp-query+alldeletedrevisions-param-prefix": "Был мәғәнәнән башланған бар атамаларҙы категориялар буйынса эҙләргә.",
-       "apihelp-query+alldeletedrevisions-param-user": "Бары тик был ҡулланыусының үҙгәртеүҙәр исемлеге.",
-       "apihelp-query+alldeletedrevisions-param-excludeuser": "Был ҡулланыусының үҙгәртеүҙәр исемлеге түгел.",
-       "apihelp-query+alldeletedrevisions-param-namespace": "Бары тик был исемдәр арауығындағы биттәр исемлеге.",
-       "apihelp-query+alldeletedrevisions-example-ns-main": "Төп исемдәр арауығында юйылған тәүге 50 үҙгәртеү исемлеге.",
-       "apihelp-query+allfileusages-description": "Юйылғандар менән бергә барлыҡ файлдар тәртибе исемлеге.",
-       "apihelp-query+allfileusages-param-from": "Һанауҙы башлау өсөн файл атамаһы.",
-       "apihelp-query+allfileusages-param-to": "Һанауҙы туҡтатыу файлы атамаһы.",
-       "apihelp-query+allfileusages-param-prefix": "Был мәғәнәнән башланған бар атамаларҙы категориялар буйынса эҙләргә.",
-       "apihelp-query+allfileusages-param-prop": "Ҡайһы мәғлүмәтте күрһәтергә:",
-       "apihelp-query+allfileusages-paramvalue-prop-title": "Файл атамаһына ҡуша.",
-       "apihelp-query+allfileusages-param-limit": "Нисә битте тергеҙергә?",
-       "apihelp-query+allfileusages-param-dir": "Һанау йүнәлеше.",
-       "apihelp-query+allfileusages-example-unique": "Атамаларҙың уҙенсәлекле файлдары исемлеге.",
-       "apihelp-query+allfileusages-example-unique-generator": "Төшөп ҡалғандарҙы айырып, барлыҡ исем-һылтанмаларҙы алырға.",
-       "apihelp-query+allfileusages-example-generator": "Файлдар менән биттәр бар.",
-       "apihelp-query+allimages-description": "Бер-бер артлы бөтә образдарҙы һанап сығырға.",
-       "apihelp-query+allimages-param-sort": "Сортировкалау үҙенсәлектәре.",
-       "apihelp-query+allimages-param-dir": "Һанау йүнәлеше.",
-       "apihelp-query+allimages-param-minsize": "Һүрәттәр лимиты (байттарҙа).",
-       "apihelp-query+allimages-param-maxsize": "Бар һүрәттәр лимиты (байттарҙа).",
-       "apihelp-query+allimages-param-limit": "Кире ҡайтыу өсөн образдар һаны.",
-       "apihelp-query+allimages-example-B": "<kbd>Б</kbd> хәрефенән башланған файлдар исемлеген күрһәтергә.",
+       "apihelp-query+allcategories-paramvalue-prop-size": "Добавляет количество страниц в категории.",
+       "apihelp-query+allcategories-paramvalue-prop-hidden": "Отмечает категории, скрытые магическим словом <code>_&#95;HIDDENCAT_&#95;</code>.",
+       "apihelp-query+allcategories-example-size": "Составить список категорий с информацией о числе страниц в каждой из них.",
+       "apihelp-query+allcategories-example-generator": "Получить информацию о самой странице категории для категорий, начинающихся с <kbd>List</kbd>.",
+       "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Может быть использовано только одновременно с <var>$3user</var>.",
+       "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Не может быть использовано одновременно с <var>$3user</var>.",
+       "apihelp-query+alldeletedrevisions-param-start": "Временная метка, с которой начать перечисление.",
+       "apihelp-query+alldeletedrevisions-param-end": "Временная метка, на которой закончить перечисление.",
+       "apihelp-query+alldeletedrevisions-param-from": "Начать перечисление на этом заголовке.",
+       "apihelp-query+alldeletedrevisions-param-to": "Закончить перечисление на этом заголовке.",
+       "apihelp-query+alldeletedrevisions-param-prefix": "Найти все названия страниц, начинающиеся с этого значения.",
+       "apihelp-query+alldeletedrevisions-param-tag": "Только правки с заданной меткой.",
+       "apihelp-query+alldeletedrevisions-param-user": "Только правки данного участника.",
+       "apihelp-query+alldeletedrevisions-param-excludeuser": "Не перечислять правки данного участника.",
+       "apihelp-query+alldeletedrevisions-param-namespace": "Перечислять только страницы этого пространства имён.",
+       "apihelp-query+alldeletedrevisions-param-miser-user-namespace": "<strong>Примечание:</strong> Из-за [[mw:Special:MyLanguage/Manual:$wgMiserMode|жадного режима]] одновременное использование <var>$1user</var> и <var>$1namespace</var> может привести к меньшему, чем <var>$1limit</var>, числу результатов перед продолжением; в крайнем случае, может вернуться и ноль результатов.",
+       "apihelp-query+alldeletedrevisions-param-generatetitles": "При использовании в качестве генератора, генерирует названия страниц вместо идентификаторов версий.",
+       "apihelp-query+alldeletedrevisions-example-user": "Перечислить последние 50 удалённых правок участника <kbd>Example</kbd>.",
+       "apihelp-query+alldeletedrevisions-example-ns-main": "Перечислить первые 50 удалённых правок в основном пространстве.",
+       "apihelp-query+allfileusages-param-from": "Название файла, с которого начать перечисление.",
+       "apihelp-query+allfileusages-param-to": "Название файла, на котором закончить перечисление.",
+       "apihelp-query+allfileusages-param-prefix": "Найти все названия файлов, начинающиеся с этого значения.",
+       "apihelp-query+allfileusages-param-unique": "Показывать только уникальные названия файлов. Не может быть использовано одновременно с $1prop=ids.\nПри использовании в качестве генератора, перечисляет целевые страницы вместо исходных.",
+       "apihelp-query+allfileusages-param-prop": "Какую информацию включить:",
+       "apihelp-query+allfileusages-paramvalue-prop-ids": "Добавляет идентификаторы страниц, использующих файл (не может быть использовано одновременно с $1unique).",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "Добавляет название файла.",
+       "apihelp-query+allfileusages-param-limit": "Сколько элементов вернуть.",
+       "apihelp-query+allfileusages-param-dir": "Порядок перечисления.",
+       "apihelp-query+allfileusages-example-B": "Список названий файлов, включая несуществующих, с идентификаторами использующих их страниц, начиная с <kbd>B</kbd>.",
+       "apihelp-query+allfileusages-example-unique": "Список уникальных названий файлов.",
+       "apihelp-query+allfileusages-example-unique-generator": "Список всех названий файлов с отметкой несуществующих.",
+       "apihelp-query+allfileusages-example-generator": "Список страниц, содержащих файлы.",
+       "apihelp-query+allimages-param-sort": "Свойство для сортировки.",
+       "apihelp-query+allimages-param-dir": "Порядок перечисления.",
+       "apihelp-query+allimages-param-from": "Название изображения, с которого начать перечисление. Можно использовать только одновременно с $1sort=name.",
+       "apihelp-query+allimages-param-to": "Название изображения, на котором закончить перечисление. Можно использовать только одновременно с $1sort=name.",
+       "apihelp-query+allimages-param-start": "Временная метка, с которой начать перечисление. Можно использовать только одновременно с $1sort=timestamp.",
+       "apihelp-query+allimages-param-end": "Временная метка, на которой закончить перечисление. Можно использовать только одновременно с $1sort=timestamp.",
+       "apihelp-query+allimages-param-prefix": "Найти все названия файлов, начинающиеся с этого значения. Можно использовать только одновременно с $1sort=name.",
+       "apihelp-query+allimages-param-minsize": "Ограничить изображения этим числом байт снизу.",
+       "apihelp-query+allimages-param-maxsize": "Ограничить изображения этим числом байт сверху.",
+       "apihelp-query+allimages-param-sha1": "SHA1-хэш этого изображения. Переопределяет $1sha1base36.",
+       "apihelp-query+allimages-param-sha1base36": "SHA1-хэш этого изображения в base 36 (используется в MediaWiki).",
+       "apihelp-query+allimages-param-user": "Вернуть только файлы, загруженные этим участником. Может быть использовано только одновременно с $1sort=timestamp и не может одновременно с $1filterbots.",
+       "apihelp-query+allimages-param-filterbots": "Как отфильтровывать файлы, загруженные ботами. Может быть использовано только одновременно с $1sort=timestamp и не может одновременно с $1user.",
+       "apihelp-query+allimages-param-mime": "Какие типы MIME искать, например, <kbd>image/jpeg</kbd>.",
+       "apihelp-query+allimages-param-limit": "Сколько изображений вернуть.",
+       "apihelp-query+allimages-example-B": "Показать список файлов, начиная с буквы <kbd>B</kbd>.",
        "apihelp-query+allimages-example-recent": "Показать список недавно загруженных файлов, аналогично [[Special:NewFiles]].",
-       "apihelp-query+allimages-example-generator": "<kbd>Т</kbd> хәрефенән башланған 4 файл хаҡында мәғлүмәтте  күрһәтергә.",
-       "apihelp-query+alllinks-description": "Бирелгән исемдәр арауығына йүнәлткән барлыҡ һылтанмаларҙы һанап сығырға.",
-       "apihelp-query+alllinks-param-from": "Һанауҙы башлау өсөн һылтанма атамаһы.",
-       "apihelp-query+alllinks-param-to": "Һанауҙы туҡтатыу һылтанмаһы атамаһы.",
-       "apihelp-query+alllinks-param-prefix": "Был мәғәнәнән башланған бәйләнешле бар атамаларҙы эҙләргә.",
-       "apihelp-query+alllinks-param-prop": "Ҡайһы мәғлүмәтте күрһәтергә:",
-       "apihelp-query+alllinks-paramvalue-prop-title": "Һылтанма атамаһын ҡуша.",
-       "apihelp-query+alllinks-param-namespace": "Һанау өсөн исемдәр арауығы.",
-       "apihelp-query+alllinks-param-limit": "Нисә элементты тергеҙергә?",
-       "apihelp-query+alllinks-param-dir": "Һанау йүнәлеше.",
-       "apihelp-query+alllinks-example-unique": "Атамаларҙың үҙенсәлекле исемдәре бәйләнгән.",
-       "apihelp-query+alllinks-example-unique-generator": "Получить все названия-ссылки, выделяя пропущенные.",
-       "apihelp-query+alllinks-example-generator": "Һылтанмалы биттәр бар.",
-       "apihelp-query+allmessages-description": "Был сайттан хәбәр ҡайтарыу.",
-       "apihelp-query+allmessages-param-prop": "Ниндәй үҙенсәлектәрҙе ҡайтарырға.",
-       "apihelp-query+allmessages-param-args": "Аргументтар Хәбәрҙәрҙә биреләсәк.",
+       "apihelp-query+allimages-example-mimetypes": "Показать список файлов с MIME-типом <kbd>image/png</kbd> или <kbd>image/gif</kbd>.",
+       "apihelp-query+allimages-example-generator": "Показать информацию о 4 файлах, начиная с буквы <kbd>T</kbd>.",
+       "apihelp-query+alllinks-param-from": "Название ссылки, с которой начать перечисление.",
+       "apihelp-query+alllinks-param-to": "Название ссылки, на которой закончить перечисление.",
+       "apihelp-query+alllinks-param-prefix": "Найти все названия ссылаемых страниц, начинающиеся с этого значения.",
+       "apihelp-query+alllinks-param-unique": "Показывать только уникальные названия ссылаемых страниц. Не может быть использовано одновременно с $1prop=ids.\nПри использовании в качестве генератора, перечисляет целевые страницы вместо исходных.",
+       "apihelp-query+alllinks-param-prop": "Какую информацию включить:",
+       "apihelp-query+alllinks-paramvalue-prop-ids": "Добавляет идентификатор ссылаемой страницы (не может быть использовано одновременно с <var>$1unique</var>).",
+       "apihelp-query+alllinks-paramvalue-prop-title": "Добавляет название ссылки.",
+       "apihelp-query+alllinks-param-namespace": "Пространство имён для перечисления.",
+       "apihelp-query+alllinks-param-limit": "Сколько элементов вернуть.",
+       "apihelp-query+alllinks-param-dir": "Порядок перечисления.",
+       "apihelp-query+alllinks-example-B": "Список заголовков ссылаемых страниц, включая несуществующих, с идентификаторами страниц, ссылающихся на них, начиная с <kbd>B</kbd>.",
+       "apihelp-query+alllinks-example-unique": "Список уникальных названий ссылаемых страниц.",
+       "apihelp-query+alllinks-example-unique-generator": "Список всех ссылаемых страниц с отметкой несуществующих.",
+       "apihelp-query+alllinks-example-generator": "Список страниц, содержащих ссылки.",
+       "apihelp-query+allmessages-param-messages": "Какие сообщения выводить. <kbd>*</kbd> (по умолчанию) означает «все сообщения».",
+       "apihelp-query+allmessages-param-prop": "Какие свойства получить:",
+       "apihelp-query+allmessages-param-enableparser": "Установите, чтобы активировать парсер, который будет обрабатывать вики-текст сообщений (подставлять магические слова, обрабатывать шаблоны, и так далее).",
+       "apihelp-query+allmessages-param-nocontent": "Если установлен, ничего не делать с содержимым сообщений перед выводом.",
+       "apihelp-query+allmessages-param-includelocal": "Также включить локальные сообщения, то есть, сообщения, не существующие в программе, но существующие в пространстве имён {{ns:MediaWiki}}. Это перечислит все страницы из пространства {{ns:MediaWiki}}, поэтому в результат также могут попасть страницы, не являющимися сообщениями — например, [[MediaWiki:Common.js|Common.js]].",
+       "apihelp-query+allmessages-param-args": "Аргументы, подставляемые в сообщение.",
+       "apihelp-query+allmessages-param-filter": "Вернуть только сообщения, чьи названия содержат эту подстроку.",
+       "apihelp-query+allmessages-param-customised": "Вернуть только сообщения в этом состоянии кастомизации.",
        "apihelp-query+allmessages-param-lang": "Вернуть сообщения на этом языке.",
-       "apihelp-query+blocks-example-simple": "Список блоков.",
-       "apihelp-query+categories-param-limit": "Сколько категорий на возврат.",
+       "apihelp-query+allmessages-param-from": "Вернуть сообщения, начиная с данного.",
+       "apihelp-query+allmessages-param-to": "Вернуть сообщения, заканчивая на данном.",
+       "apihelp-query+allmessages-param-title": "Название страницы, используемой для контекста при анализе сообщения (для опции $1enableparser).",
+       "apihelp-query+allmessages-param-prefix": "Вернуть сообщения с заданным префиксом.",
+       "apihelp-query+allmessages-example-ipb": "Показать сообщения, начинающиеся с <kbd>ipb-</kbd>.",
+       "apihelp-query+allmessages-example-de": "Показать сообщения <kbd>august</kbd> и <kbd>mainpage</kbd> на немецком языке.",
+       "apihelp-query+allpages-param-from": "Название страницы, с которой начать перечисление.",
+       "apihelp-query+allpages-param-to": "Название страницы, на которой закончить перечисление.",
+       "apihelp-query+allpages-param-prefix": "Найти все названия страниц, начинающиеся с этого значения.",
+       "apihelp-query+allpages-param-namespace": "Пространство имён для перечисления.",
+       "apihelp-query+allpages-param-filterredir": "Какие страницы перечислять.",
+       "apihelp-query+allpages-param-minsize": "Ограничить страницы этим числом байт снизу.",
+       "apihelp-query+allpages-param-maxsize": "Ограничить страницы этим числом байт сверху.",
+       "apihelp-query+allpages-param-prtype": "Перечислить только защищённые страницы.",
+       "apihelp-query+allpages-param-prlevel": "Отфильтровывать страницы, основываясь на уровне защиты (должно быть использовано одновременно с параметром $1prtype=).",
+       "apihelp-query+allpages-param-prfiltercascade": "Отфильтровывать страницы, основываясь на каскадности (игнорируется, если $1prtype не задан).",
+       "apihelp-query+allpages-param-limit": "Сколько страниц вернуть.",
+       "apihelp-query+allpages-param-dir": "Порядок перечисления.",
+       "apihelp-query+allpages-param-filterlanglinks": "Отфильтровывать страницы, основываясь на наличие на странице языковых ссылок. Обратите внимание: языковые ссылки, добавленные расширениями, могут не учитываться.",
+       "apihelp-query+allpages-param-prexpiry": "Отфильтровывать страницы, основываясь на длительности защиты:\n;indefinite: Получить только страницы с неограниченной защитой.\n;definite: Получить только страницы с заданной длительностью защиты.\n;all: Получить страницы с любой длительностью защиты.",
+       "apihelp-query+allpages-example-B": "Показать список страниц, начиная с буквы <kbd>B</kbd>.",
+       "apihelp-query+allpages-example-generator": "Получить информацию о четырёх страницах, начиная с буквы <kbd>T</kbd>.",
+       "apihelp-query+allpages-example-generator-revisions": "Показать содержимое первых двух страниц, не являющихся перенаправлениями, начиная с <kbd>Re</kbd>.",
+       "apihelp-query+allredirects-param-from": "Название перенаправления, с которого начать перечисление.",
+       "apihelp-query+allredirects-param-to": "Название перенаправления, на котором закончить перечисление.",
+       "apihelp-query+allredirects-param-prefix": "Найти все названия целевых страниц, начинающихся с этого значения.",
+       "apihelp-query+allredirects-param-unique": "Показывать только уникальные целевые страницы. Не может быть использовано одновременно с $1prop=ids|fragment|interwiki. При использовании в качестве генератора, перечисляет целевые страницы вместо исходных.",
+       "apihelp-query+allredirects-param-prop": "Какую информацию включить:",
+       "apihelp-query+allredirects-paramvalue-prop-ids": "Добавляет идентификатор перенаправляемой страницы (не может быть использовано одновременно с <var>$1unique</var>).",
+       "apihelp-query+allredirects-paramvalue-prop-title": "Добавляет название перенаправления.",
+       "apihelp-query+allredirects-paramvalue-prop-fragment": "Добавляет фрагмент из перенаправления при наличии (не может быть использовано одновременно с <var>$1unique</var>).",
+       "apihelp-query+allredirects-paramvalue-prop-interwiki": "Добавляет префикс интервики к редиректу при наличии (не может быть использовано одновременно с <var>$1unique</var>).",
+       "apihelp-query+allredirects-param-namespace": "Пространство имён для перечисления.",
+       "apihelp-query+allredirects-param-limit": "Сколько элементов вернуть.",
+       "apihelp-query+allredirects-param-dir": "Порядок перечисления.",
+       "apihelp-query+allredirects-example-B": "Список целевых страниц, в включая несуществующих, с идентификаторами перенаправлений, начиная с буквы <kbd>B</kbd>.",
+       "apihelp-query+allredirects-example-unique": "Список уникальных целевых страниц.",
+       "apihelp-query+allredirects-example-unique-generator": "Список всех целевых страниц с отметкой несуществующих.",
+       "apihelp-query+allredirects-example-generator": "Список страниц, содержащих перенаправления.",
+       "apihelp-query+allrevisions-param-start": "Временная метка, с которой начать перечисление.",
+       "apihelp-query+allrevisions-param-end": "Временная метка, на которой закончить перечисление.",
+       "apihelp-query+allrevisions-param-user": "Только правки данного участника.",
+       "apihelp-query+allrevisions-param-excludeuser": "Не перечислять правки данного участника.",
+       "apihelp-query+allrevisions-param-namespace": "Перечислять только страницы этого пространства имён.",
+       "apihelp-query+allrevisions-param-generatetitles": "При использовании в качестве генератора, генерирует названия страниц вместо идентификаторов версий.",
+       "apihelp-query+allrevisions-example-user": "Перечислить последние 50 правок участника <kbd>Example</kbd>.",
+       "apihelp-query+allrevisions-example-ns-main": "Перечислить первые 50 правок в основном пространстве.",
+       "apihelp-query+mystashedfiles-param-prop": "Какие свойства файлов запрашивать.",
+       "apihelp-query+mystashedfiles-paramvalue-prop-size": "Запросить размер и разрешение изображения.",
+       "apihelp-query+mystashedfiles-paramvalue-prop-type": "Запросить MIME- и медиа-тип файла.",
+       "apihelp-query+mystashedfiles-param-limit": "Сколько файлов получить.",
+       "apihelp-query+mystashedfiles-example-simple": "Получить ключ, размер и разрешение файлов в тайнике текущего участника.",
+       "apihelp-query+alltransclusions-param-from": "Название включения, с которого начать перечисление.",
+       "apihelp-query+alltransclusions-param-to": "Название включения, на котором закончить перечисление.",
+       "apihelp-query+alltransclusions-param-prefix": "Найти все названия включений, начинающиеся с этого значения.",
+       "apihelp-query+alltransclusions-param-unique": "Показывать только уникальные названия включений. Не может быть использовано одновременно с $1prop=ids.\nПри использовании в качестве генератора, перечисляет целевые страницы вместо исходных.",
+       "apihelp-query+alltransclusions-param-prop": "Какую информацию включить:",
+       "apihelp-query+alltransclusions-paramvalue-prop-ids": "Добавляет идентификаторы включающих страниц (не может быть использовано одновременно с $1unique).",
+       "apihelp-query+alltransclusions-paramvalue-prop-title": "Добавляет название включения.",
+       "apihelp-query+alltransclusions-param-namespace": "Пространство имён для перечисления.",
+       "apihelp-query+alltransclusions-param-limit": "Сколько элементов вернуть.",
+       "apihelp-query+alltransclusions-param-dir": "Порядок перечисления.",
+       "apihelp-query+alltransclusions-example-B": "Списки заголовков включаемых страниц, в том числе несуществующих, с идентификаторами включающих их страниц, начиная с буквы <kbd>B</kbd>.",
+       "apihelp-query+alltransclusions-example-unique": "Список уникальных включаемых названий.",
+       "apihelp-query+alltransclusions-example-unique-generator": "Список всех включаемых страниц с отметкой несуществующих.",
+       "apihelp-query+alltransclusions-example-generator": "Список страниц, содержащих включения.",
+       "apihelp-query+allusers-param-from": "Ник, с которого начать перечисление.",
+       "apihelp-query+allusers-param-to": "Ник, на котором закончить перечисление.",
+       "apihelp-query+allusers-param-prefix": "Найти все ники, начинающиеся с этого значения.",
+       "apihelp-query+allusers-param-dir": "Порядок сортировки.",
+       "apihelp-query+allusers-param-group": "Включать участников только из данных групп.",
+       "apihelp-query+allusers-param-excludegroup": "Исключать участников из данных групп.",
+       "apihelp-query+allusers-param-rights": "Включать только участников с данными правами. Участники с правами, предоставляемыми автоматически присваиваемыми группами — такими, как *, user или autoconfirmed, — не включаются.",
+       "apihelp-query+allusers-param-prop": "Какую информацию включить:",
+       "apihelp-query+allusers-paramvalue-prop-blockinfo": "Добавляет информацию о текущих блокировках участника.",
+       "apihelp-query+allusers-paramvalue-prop-groups": "Перечисляет группы, в которые входит участник. Это значительно нагружает сервера, что может привести к возвращению меньшего числа результатов, чем указанный лимит.",
+       "apihelp-query+allusers-paramvalue-prop-implicitgroups": "Перечисляет группы, в которые участник был включён автоматически.",
+       "apihelp-query+allusers-paramvalue-prop-rights": "Перечисляет права, которые есть у участника.",
+       "apihelp-query+allusers-paramvalue-prop-editcount": "Добавляет счётчик правок участника.",
+       "apihelp-query+allusers-paramvalue-prop-registration": "Добавляет метку времени, когда участник был зарегистрирован, если она доступна (может быть пустым).",
+       "apihelp-query+allusers-paramvalue-prop-centralids": "Добавляет центральный идентификатор и статус прикрепления участника.",
+       "apihelp-query+allusers-param-limit": "Сколько ников вернуть.",
+       "apihelp-query+allusers-param-witheditsonly": "Перечислять только участников, совершавших правки.",
+       "apihelp-query+allusers-param-activeusers": "Перечислять только участников, которые были активны в последние $1 {{PLURAL:$1|день|дня|дней}}.",
+       "apihelp-query+allusers-param-attachedwiki": "С <kbd>$1prop=centralids</kbd>, также отображает, прикреплён ли к вики участник с этим идентификатором.",
+       "apihelp-query+allusers-example-Y": "Список участников, начиная с <kbd>Y</kbd>.",
+       "apihelp-query+authmanagerinfo-param-securitysensitiveoperation": "Проверить, достаточен ли текущий статус для осуществления чувствительных к безопасности операций.",
+       "apihelp-query+authmanagerinfo-param-requestsfor": "Получить информацию о аутентификационных запросах, необходимых для указанного действия аутентификации.",
+       "apihelp-query+authmanagerinfo-example-login": "Получить запросы, которые могут быть использованы на момент начала входа.",
+       "apihelp-query+authmanagerinfo-example-login-merged": "Получить запросы, которые могут быть использованы в момент начала авторизации с объединёнными полями формы.",
+       "apihelp-query+authmanagerinfo-example-securitysensitiveoperation": "Проверить, необходима ли аутентификация для действия <kbd>foo</kbd>.",
+       "apihelp-query+backlinks-param-title": "Заголовок для поиска. Не может быть использован одновременно с <var>$1pageid</var>.",
+       "apihelp-query+backlinks-param-pageid": "Идентификатор страницы для поиска. Не может быть использован одновременно с <var>$1title</var>.",
+       "apihelp-query+backlinks-param-namespace": "Пространство имён для перечисления.",
+       "apihelp-query+backlinks-param-dir": "Порядок перечисления.",
+       "apihelp-query+backlinks-param-filterredir": "Как обрабатывать перенаправления. Если присвоено значение <kbd>nonredirects</kbd> при заданном <var>$1redirect</var>, это применяется только ко второму уровню.",
+       "apihelp-query+backlinks-param-limit": "Сколько страниц вернуть. Если задан <var>$1redirect</var>, лимит применяется к каждому уровню по отдельности (что означает, что всего может вернуться до 2 * <var>$1limit</var> результатов).",
+       "apihelp-query+backlinks-param-redirect": "Если ссылающаяся страница является перенаправлением, найти также все страницы, которые ссылаются на это перенаправление. Максимальный лимит становится в два раза меньше.",
+       "apihelp-query+backlinks-example-simple": "Показать ссылки на <kbd>Main page</kbd>.",
+       "apihelp-query+backlinks-example-generator": "Получить информацию о страницах, ссылающихся на <kbd>Main page</kbd>.",
+       "apihelp-query+blocks-param-start": "Временная метка, с которой начать перечисление.",
+       "apihelp-query+blocks-param-end": "Временная метка, на которой закончить перечисление.",
+       "apihelp-query+blocks-param-ids": "Список идентификаторов блокировки (необязательно).",
+       "apihelp-query+blocks-param-users": "Список искомых участников (необязательно).",
+       "apihelp-query+blocks-param-ip": "Получить все блокировки, применённые к этому IP-адресу или диапазону CIDR, включая блокировки диапазонов.\nНе может быть использовано одновременно с <var>$3users</var>. Диапазоны CIDR шире IPv4/$1 или IPv6/$2 не поддерживаются.",
+       "apihelp-query+blocks-param-limit": "Максимальное число блокировок в списке.",
+       "apihelp-query+blocks-param-prop": "Какие свойства получить:",
+       "apihelp-query+blocks-paramvalue-prop-id": "Добавляет идентификатор блокировки.",
+       "apihelp-query+blocks-paramvalue-prop-user": "Добавляет ник заблокированного участника.",
+       "apihelp-query+blocks-paramvalue-prop-userid": "Добавляет идентификатор заблокированного участника.",
+       "apihelp-query+blocks-paramvalue-prop-by": "Добавляет ник заблокировавшего участника.",
+       "apihelp-query+blocks-paramvalue-prop-byid": "Добавляет идентификатор заблокировавшего участника.",
+       "apihelp-query+blocks-paramvalue-prop-timestamp": "Добавляет метку времени, когда была дана блокировка.",
+       "apihelp-query+blocks-paramvalue-prop-expiry": "Добавляет метку времени, когда блокировка истечёт.",
+       "apihelp-query+blocks-paramvalue-prop-reason": "Добавляет причину блокировки.",
+       "apihelp-query+blocks-paramvalue-prop-range": "Добавляет диапазон IP-адресов, затронутых блокировкой.",
+       "apihelp-query+blocks-paramvalue-prop-flags": "Добавляет бану метку (autoblock, anonoly, и так далее).",
+       "apihelp-query+blocks-param-show": "Показать только элементы, удовлетворяющие этим критериям.\nНапример, чтобы отобразить только бессрочные блокировки IP-адресов, установите <kbd>$1show=ip|!temp</kbd>.",
+       "apihelp-query+blocks-example-simple": "Список блокировок.",
+       "apihelp-query+blocks-example-users": "Список блокировок участников <kbd>Alice</kbd> и <kbd>Bob</kbd>.",
+       "apihelp-query+categories-param-prop": "Какие дополнительные свойства получить для каждой категории:",
+       "apihelp-query+categories-paramvalue-prop-sortkey": "Добавляет ключ сортировки (шестнадцатеричная строка) и префикс ключа сортировки (человеко-читаемая часть) для категории.",
+       "apihelp-query+categories-paramvalue-prop-timestamp": "Добавляет метку времени, когда категория была добавлена.",
+       "apihelp-query+categories-paramvalue-prop-hidden": "Отмечает категории, скрытые магическим словом <code>_&#95;HIDDENCAT_&#95;</code>.",
+       "apihelp-query+categories-param-show": "Какие типы категорий показать.",
+       "apihelp-query+categories-param-limit": "Сколько категорий вернуть.",
+       "apihelp-query+categories-param-categories": "Перечислять только данные категории. Полезно для проверки, включена ли конкретная страница в конкретную категорию.",
+       "apihelp-query+categories-param-dir": "Порядок перечисления.",
+       "apihelp-query+categories-example-simple": "Получить список категорий, в которые включена страница <kbd>Albert Einstein</kbd>.",
+       "apihelp-query+categories-example-generator": "Получить информацию о всех категориях, использованных на странице <kbd>Albert Einstein</kbd>.",
+       "apihelp-query+categoryinfo-example-simple": "Получить информацию о <kbd>Category:Foo</kbd> и <kbd>Category:Bar</kbd>.",
+       "apihelp-query+categorymembers-param-title": "Страницы какой категории перечислять (обязательно). Префикс <kbd>{{ns:category}}:</kbd> должен быть включён. Не может быть использовано одновременно с <var>$1pageid</var>.",
+       "apihelp-query+categorymembers-param-pageid": "Идентификатор перечисляемой категории. Не может быть использовано одновременно с <var>$1title</var>.",
+       "apihelp-query+categorymembers-param-prop": "Какую информацию включить:",
+       "apihelp-query+categorymembers-paramvalue-prop-ids": "Добавляет идентификатор страницы.",
+       "apihelp-query+categorymembers-paramvalue-prop-title": "Добавляет заголовок и идентификатор пространства имён страницы.",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkey": "Добавляет ключ, используемый для сортировки внутри категории (шестнадцатеричная строка).",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkeyprefix": "Добавляет префикс ключа, используемого для сортировки внутри категории (человеко-читаемая часть ключа).",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "Добавляет тип категоризованной страницы (<samp>page</samp>, <samp>subcat</samp> или <samp>file</samp>).",
+       "apihelp-query+categorymembers-paramvalue-prop-timestamp": "Добавляет метку времени, когда страница была включена.",
+       "apihelp-query+categorymembers-param-namespace": "Включать только страница из этих пространств имён. Обратите внимание, что вместо <kbd>$1namespace=14</kbd> или <kbd>6</kbd> могут быть использованы <kbd>$1type=subcat</kbd> или <kbd>$1type=file</kbd>.",
+       "apihelp-query+categorymembers-param-type": "Какие типы страниц включать. Игнорируется при <kbd>$1sort=timestamp</kbd>.",
+       "apihelp-query+categorymembers-param-limit": "Максимальное число возвращаемых страниц.",
        "apihelp-query+categorymembers-param-sort": "Свойство для сортировки.",
-       "apihelp-query+categorymembers-param-startsortkey": "Использовать $1starthexsortkey вместо.",
-       "apihelp-query+categorymembers-param-endsortkey": "Использовать $1endhexsortkey вместо.",
-       "apihelp-query+deletedrevs-param-limit": "Исемлектәге яҙмаларҙың иң күбе.",
-       "apihelp-query+deletedrevs-example-mode1": "Юҡ ителгән һуңғы биттәрҙең исемлеге, баш биттең<kbd>-һы </kbd> һәм<kbd>әйтергә:баш биттең /kbd>-һы,континент менән(режим 1).",
-       "apihelp-query+deletedrevs-example-mode3-talk": "Юҡ ителгән тәүге 50 биттең исемлеге {{НС:фекер алышыу}} исемдәр арауығы(режим 3).",
+       "apihelp-query+categorymembers-param-dir": "Порядок сортировки.",
+       "apihelp-query+categorymembers-param-start": "Временная метка, с которой начать перечисление. Может быть использовано только одновременно с <kbd>$1sort=timestamp</kbd>.",
+       "apihelp-query+categorymembers-param-end": "Временная метка, на которой закончить перечисление. Может быть использовано только одновременно с <kbd>$1sort=timestamp</kbd>.",
+       "apihelp-query+categorymembers-param-starthexsortkey": "Ключ сортировки, с которого начать перечисление, возвращённый <kbd>$1prop=sortkey</kbd>. Может быть использовано только одновременно с <kbd>$1sort=sortkey</kbd>.",
+       "apihelp-query+categorymembers-param-endhexsortkey": "Ключ сортировки, на котором закончить перечисление, возвращённый <kbd>$1prop=sortkey</kbd>. Может быть использовано только одновременно с <kbd>$1sort=sortkey</kbd>.",
+       "apihelp-query+categorymembers-param-startsortkeyprefix": "Префикс ключа сортировки, с которого начать перечисление. Может быть использовано только с <kbd>$1sort=sortkey</kbd>. Переопределяет <var>$1starthexsortkey</var>.",
+       "apihelp-query+categorymembers-param-endsortkeyprefix": "Префикс ключа сортировки, <strong>перед</strong> которым закончить перечисление (не <strong>на<strong> котором; если это значение существует, оно не будет включено!). Может быть использовано только одновременно с $1sort=sortkey. Переопределяет $1endhexsortkey.",
+       "apihelp-query+categorymembers-param-startsortkey": "Используйте вместо этого $1starthexsortkey.",
+       "apihelp-query+categorymembers-param-endsortkey": "Используйте вместо этого $1endhexsortkey.",
+       "apihelp-query+categorymembers-example-simple": "Получить первые 10 страниц в <kbd>Category:Physics</kbd>.",
+       "apihelp-query+categorymembers-example-generator": "Получить информацию о первых 10 страницах в <kbd>Category:Physics</kbd>.",
+       "apihelp-query+contributors-param-group": "Включать только участников из данных групп. Неявные или автоматически присваиваемые группы, вроде *, user или autoconfirmed, не считаются.",
+       "apihelp-query+contributors-param-excludegroup": "Исключать участников из заданных групп. Неявные или автоматически присваиваемые группы, вроде *, user или autoconfirmed, не считаются.",
+       "apihelp-query+contributors-param-rights": "Включать только участников с данными правами. Участники с правами, предоставляемыми неявными или автоматически присваиваемыми группами — такими, как *, user или autoconfirmed, — не считаются.",
+       "apihelp-query+contributors-param-excluderights": "Исключать участников с данными правами. Участники с правами, предоставляемыми неявными или автоматически присваиваемыми группами — такими, как *, user или autoconfirmed, — не считаются.",
+       "apihelp-query+contributors-param-limit": "Сколько редакторов вернуть.",
+       "apihelp-query+contributors-example-simple": "Показать редакторов страницы <kbd>Main Page</kbd>.",
+       "apihelp-query+deletedrevisions-param-start": "Временная метка, с которой начать перечисление. Игнорируется при обработке списка идентификаторов версий.",
+       "apihelp-query+deletedrevisions-param-end": "Временная метка, на которой закончить перечисление. Игнорируется при обработке списка идентификаторов версий.",
+       "apihelp-query+deletedrevisions-param-tag": "Только правки с заданной меткой.",
+       "apihelp-query+deletedrevisions-param-user": "Только правки данного участника.",
+       "apihelp-query+deletedrevisions-param-excludeuser": "Не перечислять правки данного участника.",
+       "apihelp-query+deletedrevisions-example-titles": "Список удалённых правок страниц <kbd>Main Page</kbd> и <kbd>Talk:Main Page</kbd> с содержимым.",
+       "apihelp-query+deletedrevisions-example-revids": "Список информации для удалённой правки <kbd>123456</kbd>.",
+       "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Мод|Моды}}: $2",
+       "apihelp-query+deletedrevs-param-start": "Временная метка, с которой начать перечисление.",
+       "apihelp-query+deletedrevs-param-end": "Временная метка, на которой закончить перечисление.",
+       "apihelp-query+deletedrevs-param-from": "Начать перечисление на этом заголовке.",
+       "apihelp-query+deletedrevs-param-to": "Закончить перечисление на этом заголовке.",
+       "apihelp-query+deletedrevs-param-prefix": "Найти все названия страниц, начинающиеся с этого значения.",
+       "apihelp-query+deletedrevs-param-unique": "Перечислять только одну правку на каждую страницу.",
+       "apihelp-query+deletedrevs-param-tag": "Только правки с заданной меткой.",
+       "apihelp-query+deletedrevs-param-user": "Только правки данного участника.",
+       "apihelp-query+deletedrevs-param-excludeuser": "Не перечислять правки данного участника.",
+       "apihelp-query+deletedrevs-param-namespace": "Перечислять только страницы этого пространства имён.",
+       "apihelp-query+deletedrevs-param-limit": "Максимальное количество правок в списке.",
+       "apihelp-query+deletedrevs-param-prop": "Какие свойства возвращать:\n;revid: Добавляет идентификатор удалённой правки.\n;parentid: Добавляет идентификатор предыдущей версии страницы.\n;user: Добавляет ник участника, сделавшего правку.\n;userid: Добавляет идентификатор участника, сделавшего правку.\n;comment: Добавляет описание правки.\n;parsedcomment: Добавляет распарсенное описание правки.\n;minor: Отмечает, была ли правка малым.\n;len: Добавляет длину (в байтах) правки.\n;sha1: Добавляет хэш SHA-1 (base 16) правки.\n;content: Добавляет содержимое правки.\n;token: <span class=\"apihelp-deprecated\">Не поддерживается.</span> Возвращает токен редактирования.\n;tags: Теги правки.",
+       "apihelp-query+deletedrevs-example-mode1": "Список последних удалённых правок страниц <kbd>Main Page</kbd> и <kbd>Talk:Main Page</kbd> с содержимым (режим 1).",
+       "apihelp-query+deletedrevs-example-mode2": "Список последних 50 удалённых правок участника <kbd>Bob</kbd> (режим 2).",
+       "apihelp-query+deletedrevs-example-mode3-main": "Список последних 50 удалённых правок в основном пространстве имён (режим 3)",
+       "apihelp-query+deletedrevs-example-mode3-talk": "Список последних 50 удалённых страниц в пространстве имён {{ns:talk}} (режим 3).",
+       "apihelp-query+duplicatefiles-param-limit": "Сколько дубликатов вернуть.",
+       "apihelp-query+duplicatefiles-param-dir": "Порядок перечисления.",
+       "apihelp-query+duplicatefiles-param-localonly": "Искать только файлы в локальном репозитории.",
+       "apihelp-query+duplicatefiles-example-simple": "Поиск дубликатов [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+duplicatefiles-example-generated": "Поиск дубликатов всех файлов.",
+       "apihelp-query+embeddedin-param-title": "Искомое название. Не может использоваться вместе с $1pageid.",
+       "apihelp-query+embeddedin-param-pageid": "Искомый идентификатор страницы. Не может быть использован одновременно с $1title.",
+       "apihelp-query+embeddedin-param-namespace": "Пространство имён для перечисления.",
+       "apihelp-query+embeddedin-param-dir": "Порядок перечисления.",
+       "apihelp-query+embeddedin-param-filterredir": "Как фильтровать перенаправления.",
+       "apihelp-query+embeddedin-param-limit": "Сколько страниц вернуть.",
+       "apihelp-query+embeddedin-example-simple": "Показать включения <kbd>Template:Stub</kbd>.",
+       "apihelp-query+embeddedin-example-generator": "Получить информацию о страницах, включающих <kbd>Template:Stub</kbd>.",
+       "apihelp-query+extlinks-param-limit": "Сколько ссылок вернуть.",
+       "apihelp-query+extlinks-param-protocol": "Протокол ссылки. Если оставлено пустым, а <var>$1query</var> задано, будут найдены ссылки с протоколом <kbd>http</kbd>. Оставьте пустым и <var>$1query</var>, и данный параметр, чтобы получить список всех внешних ссылок.",
+       "apihelp-query+extlinks-param-query": "Поисковый запрос без протокола. Полезно для проверки, содержит ли определённая страница определённую внешнюю ссылку.",
+       "apihelp-query+extlinks-param-expandurl": "Раскрыть зависимые от протокола ссылки с какноничным протоколом.",
+       "apihelp-query+extlinks-example-simple": "Получить внешние ссылки на странице <kbd>Main Page</kbd>.",
+       "apihelp-query+exturlusage-param-prop": "Какую информацию включить:",
+       "apihelp-query+exturlusage-paramvalue-prop-ids": "Добавляет идентификатор страницы.",
+       "apihelp-query+exturlusage-paramvalue-prop-title": "Добавляет заголовок и идентификатор пространства имён страницы.",
+       "apihelp-query+exturlusage-paramvalue-prop-url": "Добавляет ссылку, использованную на этой странице.",
+       "apihelp-query+exturlusage-param-protocol": "Протокол ссылки. Если оставлено пустым, а <var>$1query</var> задано, будут найдены ссылки с протоколом <kbd>http</kbd>. Оставьте пустым и <var>$1query</var>, и данный параметр, чтобы получить список всех внешних ссылок.",
+       "apihelp-query+exturlusage-param-query": "Поисковый запрос без протокола. См. [[Special:LinkSearch]]. Оставьте пустым для получение списка всех внешних ссылок.",
+       "apihelp-query+exturlusage-param-namespace": "Пространства имён для перечисления.",
+       "apihelp-query+exturlusage-param-limit": "Сколько страниц вернуть.",
+       "apihelp-query+exturlusage-param-expandurl": "Раскрыть зависимые от протокола ссылки с какноничным протоколом.",
+       "apihelp-query+exturlusage-example-simple": "Показать страницы, ссылающиеся на <kbd>http://www.mediawiki.org</kbd>.",
+       "apihelp-query+filearchive-param-from": "Название изображения, с которого начать перечисление.",
+       "apihelp-query+filearchive-param-to": "Название изображения, на котором закончить перечисление.",
+       "apihelp-query+filearchive-param-prefix": "Найти все названия файлов, начинающиеся с этого значения.",
+       "apihelp-query+filearchive-param-limit": "Сколько всего изображений вернуть.",
+       "apihelp-query+filearchive-param-dir": "Порядок перечисления.",
+       "apihelp-query+filearchive-param-sha1": "SHA1-хэш этого изображения. Переопределяет $1sha1base36.",
+       "apihelp-query+filearchive-param-sha1base36": "SHA1-хэш этого изображения в base 36 (используется в MediaWiki).",
+       "apihelp-query+filearchive-param-prop": "Какую информацию получить:",
+       "apihelp-query+filearchive-paramvalue-prop-sha1": "Добавляет SHA1-хэш изображения.",
+       "apihelp-query+filearchive-paramvalue-prop-timestamp": "Добавляет метку времени загрузки файловой версии.",
+       "apihelp-query+filearchive-paramvalue-prop-user": "Добавляет участника, загрузившего изображение.",
+       "apihelp-query+filearchive-paramvalue-prop-size": "Добавляет размер изображения в байтах, высоту, ширину и количество использующих страниц (если применимо).",
+       "apihelp-query+filearchive-paramvalue-prop-dimensions": "Синоним для size.",
+       "apihelp-query+filearchive-paramvalue-prop-description": "Добавляет описание файловой версии.",
+       "apihelp-query+filearchive-paramvalue-prop-parseddescription": "Распарсить описание файловой версии.",
+       "apihelp-query+filearchive-paramvalue-prop-mime": "Добавляет MIME-тип изображения.",
+       "apihelp-query+filearchive-paramvalue-prop-mediatype": "Добавляет медиа-тип изображения.",
+       "apihelp-query+filearchive-paramvalue-prop-metadata": "Перечисляет метаданные Exif для файловой версии.",
+       "apihelp-query+filearchive-paramvalue-prop-bitdepth": "Добавляет глубину цвета файловой версии.",
+       "apihelp-query+filearchive-paramvalue-prop-archivename": "Добавляет имя архивной версии файла.",
+       "apihelp-query+filearchive-example-simple": "Список всех удалённых файлов.",
+       "apihelp-query+filerepoinfo-param-prop": "Какие свойства хранилища получить (на некоторых вики может быть доступно больше):\n;apiutl: Ссылка на API хранилища — полезно для получения информации об изображении с хоста.\n;name: Ключ хранилища — используется, например, <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> и возвращаемых [[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname: Человеко-читаемое название хранилища.\n;rooturl: Корневая ссылка для путей к файлам.\n;local: Определяет, является ли хранилище локальным, или нет.",
+       "apihelp-query+filerepoinfo-example-simple": "Получить информацию о файловых репозиториях.",
+       "apihelp-query+fileusage-param-prop": "Какие свойства получить:",
+       "apihelp-query+fileusage-paramvalue-prop-pageid": "Идентификатор каждой страницы.",
+       "apihelp-query+fileusage-paramvalue-prop-title": "Заголовок каждой страницы.",
+       "apihelp-query+fileusage-paramvalue-prop-redirect": "Метка, является ли страница перенаправлением.",
+       "apihelp-query+fileusage-param-namespace": "Включить страницы только из данных пространств имён.",
+       "apihelp-query+fileusage-param-limit": "Сколько страниц вернуть.",
+       "apihelp-query+fileusage-param-show": "Показать только элементы, соответствующие этим критериям:\n;redirect: Показать только перенаправления.\n;!redirect: Показать только не перенаправления.",
+       "apihelp-query+fileusage-example-simple": "Получить список страниц, использующих [[:File:Example.jpg]].",
+       "apihelp-query+fileusage-example-generator": "Получить информацию о страницах, использующих [[:File:Example.jpg]].",
+       "apihelp-query+imageinfo-param-prop": "Какую информацию о файле получить:",
+       "apihelp-query+imageinfo-paramvalue-prop-timestamp": "Добавляет метку времени загрузки файловой версии.",
+       "apihelp-query+imageinfo-paramvalue-prop-user": "Добавляет участников, загрузивших каждую файловую версию.",
+       "apihelp-query+imageinfo-paramvalue-prop-userid": "Добавляет идентификаторы участников, загрузивших каждую файловую версию.",
+       "apihelp-query+imageinfo-paramvalue-prop-comment": "Комментарий к версии.",
+       "apihelp-query+imageinfo-paramvalue-prop-parsedcomment": "Распарсенный комментарий к версии.",
+       "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "Добавляет каноничное название файла.",
+       "apihelp-query+imageinfo-paramvalue-prop-url": "Возвращает ссылку на файл и страницу описания.",
+       "apihelp-query+imageinfo-paramvalue-prop-size": "Добавляет размер файла в байтах, высоту, ширину и количество использующих страниц (если применимо).",
+       "apihelp-query+imageinfo-paramvalue-prop-dimensions": "Синоним для size.",
+       "apihelp-query+imageinfo-paramvalue-prop-sha1": "Добавляет SHA1-хэш файла.",
+       "apihelp-query+imageinfo-paramvalue-prop-mime": "Добавляет MIME-тип файла.",
+       "apihelp-query+imageinfo-paramvalue-prop-thumbmime": "Добавляет MIME-тип миниатюры файла (требуется url и параметр $1urlwidth).",
+       "apihelp-query+imageinfo-paramvalue-prop-mediatype": "Добавляет медиа-тип файла.",
+       "apihelp-query+imageinfo-paramvalue-prop-metadata": "Перечисляет метаданные Exif для файловой версии.",
+       "apihelp-query+imageinfo-paramvalue-prop-commonmetadata": "Перечисляет общие для данного формата метаданные для файловой версии.",
+       "apihelp-query+imageinfo-paramvalue-prop-extmetadata": "Перечисляет структурированные метаданные, собранные из нескольких источников. Результат отдаётся в формате HTML.",
+       "apihelp-query+imageinfo-paramvalue-prop-archivename": "Добавляет имя архивной версии файла.",
+       "apihelp-query+imageinfo-paramvalue-prop-bitdepth": "Добавляет глубину цвета файловой версии.",
+       "apihelp-query+imageinfo-paramvalue-prop-uploadwarning": "Используется страницей Special:Upload для получения информации о существовании файла. Не предназначено для использования за пределами ядра MediaWiki.",
        "apihelp-query+imageinfo-paramvalue-prop-badfile": "Добавляет указание на то, находится ли файл в списке [[MediaWiki:Bad image list]]",
-       "apihelp-query+logevents-description": "Получать события из журналов.",
-       "apihelp-query+logevents-example-simple": "Список последних зарегистрированных событий.",
-       "apihelp-query+pagepropnames-example-simple": "Получить первые 10 имен свойств.",
-       "apihelp-query+pageswithprop-param-limit": "Максимальное количество страниц для возврата",
-       "apihelp-query+pageswithprop-param-dir": "В каком направлении сортировать",
-       "apihelp-query+prefixsearch-param-search": "Строка поиска.",
-       "apihelp-query+prefixsearch-param-offset": "Количество результатов для пропуска",
+       "apihelp-query+imageinfo-param-limit": "Сколько версий каждого файла вернуть.",
+       "apihelp-query+imageinfo-param-start": "Временная метка, с которой начать перечисление.",
+       "apihelp-query+imageinfo-param-end": "Временная метка, на которой закончить перечисление.",
+       "apihelp-query+imageinfo-param-urlwidth": "Если задан $2prop=url, будет возвращена ссылка на изображение, масштабированное до указанной ширины. Из соображений производительности, при использовании этой опции будет возвращено не более $1 файлов.",
+       "apihelp-query+imageinfo-param-urlheight": "Аналогично $1urlwidth.",
+       "apihelp-query+imageinfo-param-metadataversion": "Какую версию метаданных использовать. Если указано <kbd>latest</kbd>, будет использована последняя версия. Для обратной совместимости, значение по умолчанию — <kbd>1</kbd>.",
+       "apihelp-query+imageinfo-param-extmetadatalanguage": "На каком языке запрашивать расширенные метаданные. Это затрагивает как переводы, если их доступно несколько, так и способ форматирования чисел и других значений.",
+       "apihelp-query+imageinfo-param-extmetadatamultilang": "Если для свойства расширенных метаданных доступны переводы, запросить их все.",
+       "apihelp-query+imageinfo-param-extmetadatafilter": "Если задано и непустое, только эти ключи будут возвращены для $1prop=extmetadata.",
+       "apihelp-query+imageinfo-param-urlparam": "Строковой параметр, зависящий от обработчика. Например, для PDF можно использовать <kbd>page15-100px</kbd>. Должен быть использован <var>$1urlwidth</var>, не противоречащий с <var>$1urlparam</var>.",
+       "apihelp-query+imageinfo-param-badfilecontexttitle": "Если задан <kbd>$2prop=badfile</kbd>, этот заголовок страницы будет использован для анализа [[MediaWiki:Bad image list]].",
+       "apihelp-query+imageinfo-param-localonly": "Искать только файлы в локальном репозитории.",
+       "apihelp-query+imageinfo-example-simple": "Заросить информацию о текущей версии [[:File:Albert Einstein Head.jpg]].",
+       "apihelp-query+imageinfo-example-dated": "Запросить информацию о версиях [[:File:Test.jpg]] с 2008 года и позже.",
+       "apihelp-query+images-param-limit": "Сколько файлов вернуть.",
+       "apihelp-query+images-param-images": "Перечислять только данные файлы. Полезно для проверки, включает ли конкретная страница конкретный файл.",
+       "apihelp-query+images-param-dir": "Порядок перечисления.",
+       "apihelp-query+images-example-simple": "Получить список файлов, использованных на [[Main Page]].",
+       "apihelp-query+images-example-generator": "Получить информацию о всех файлах, использованных на [[Main Page]].",
+       "apihelp-query+imageusage-param-title": "Искомое название. Не может использоваться вместе с $1pageid.",
+       "apihelp-query+imageusage-param-pageid": "Искомый идентификатор страницы. Не может быть использован одновременно с $1title.",
+       "apihelp-query+imageusage-param-namespace": "Пространство имён для перечисления.",
+       "apihelp-query+imageusage-param-dir": "Порядок перечисления.",
+       "apihelp-query+imageusage-param-filterredir": "Как обрабатывать перенаправления. Если присвоено значение nonredirects при заданном $1redirect, это применяется только ко второму уровню.",
+       "apihelp-query+imageusage-param-limit": "Сколько страниц вернуть. Если задан <var>$1redirect</var>, лимит применяется к каждому уровню по отдельности (что означает, что всего может вернуться до 2 * <var>$1limit</var> результатов).",
+       "apihelp-query+imageusage-param-redirect": "Если ссылающаяся страница является перенаправлением, найти также все страницы, которые ссылаются на это перенаправление. Максимальный лимит становится в два раза меньше.",
+       "apihelp-query+imageusage-example-simple": "Показать страницы, использующие [[:File:Albert Einstein Head.jpg]].",
+       "apihelp-query+imageusage-example-generator": "Получить информацию о страницах, использующих [[:File:Albert Einstein Head.jpg]].",
+       "apihelp-query+info-param-prop": "Какие дополнительные свойства получить:",
+       "apihelp-query+info-paramvalue-prop-protection": "Перечисление уровней защиты каждой страницы.",
+       "apihelp-query+info-paramvalue-prop-talkid": "Идентификатор страницы обсуждения для каждой страницы не-обсуждения.",
+       "apihelp-query+info-paramvalue-prop-watched": "Перечислить статус наблюдения за каждой страницей.",
+       "apihelp-query+info-paramvalue-prop-watchers": "Количество наблюдающих, если разрешено.",
+       "apihelp-query+info-paramvalue-prop-visitingwatchers": "Количество наблюдающих за каждой страницей, просмотревших последние правки, если разрешено.",
+       "apihelp-query+info-paramvalue-prop-notificationtimestamp": "Временная метка уведомления для списка наблюдения для каждой страницы.",
+       "apihelp-query+info-paramvalue-prop-subjectid": "Идентификатор родительской страницы для каждой страницы обсуждения.",
+       "apihelp-query+info-paramvalue-prop-url": "Возвращает полную ссылку, ссылку на редактирование и каноничную ссылку для каждой страницы.",
+       "apihelp-query+info-paramvalue-prop-readable": "Может ли участник просматривать эту страницу.",
+       "apihelp-query+info-paramvalue-prop-preload": "Текст, возвращённый EditFormPreloadText.",
+       "apihelp-query+info-paramvalue-prop-displaytitle": "Возвращает стиль отображения заголовка страницы.",
+       "apihelp-query+info-param-testactions": "Проверить, может ли текущий участник провести указанные действия над страницей.",
+       "apihelp-query+info-param-token": "Вместо этого используйте [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
+       "apihelp-query+info-example-simple": "Получить информацию о странице <kbd>Main Page</kbd>.",
+       "apihelp-query+info-example-protection": "Получить основную информацию и информацию о защите страницы <kbd>Main Page</kbd>.",
+       "apihelp-query+iwbacklinks-param-prefix": "Префикс интервики.",
+       "apihelp-query+iwbacklinks-param-title": "Искомая интервики-ссылка. Должна быть использована вместе с <var>$1blprefix</var>.",
+       "apihelp-query+iwbacklinks-param-limit": "Сколько страниц вернуть.",
+       "apihelp-query+iwbacklinks-param-prop": "Какие свойства получить:",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Добавляет префикс интервики.",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Добавляет название интервики.",
+       "apihelp-query+iwbacklinks-param-dir": "Порядок перечисления.",
+       "apihelp-query+iwbacklinks-example-simple": "Получить список страниц, ссылающихся на [[wikibooks:Test]].",
+       "apihelp-query+iwbacklinks-example-generator": "Получить информацию о страницах, ссылающихся на [[wikibooks:Test]].",
+       "apihelp-query+iwlinks-param-url": "Следует ли возвращать полный URL (не может быть использовано одновременно с $1prop).",
+       "apihelp-query+iwlinks-param-prop": "Какие дополнительные свойства получить для каждой межъязыковой ссылки:",
+       "apihelp-query+iwlinks-paramvalue-prop-url": "Добавляет полный URL.",
+       "apihelp-query+iwlinks-param-limit": "Сколько интервики-ссылок вернуть.",
+       "apihelp-query+iwlinks-param-prefix": "Вернуть только интервики с этим префиксом.",
+       "apihelp-query+iwlinks-param-title": "Искомая интервики-ссылка. Должна быть использована вместе с <var>$1prefix</var>.",
+       "apihelp-query+iwlinks-param-dir": "Порядок перечисления.",
+       "apihelp-query+iwlinks-example-simple": "Получить интервики-ссылки со страницы <kbd>Main Page</kbd>.",
+       "apihelp-query+langbacklinks-param-lang": "Язык ссылки.",
+       "apihelp-query+langbacklinks-param-title": "Искомая языковая ссылка. Должно быть использовано с $1lang.",
+       "apihelp-query+langbacklinks-param-limit": "Сколько страниц вернуть.",
+       "apihelp-query+langbacklinks-param-prop": "Какие свойства получить:",
+       "apihelp-query+langbacklinks-paramvalue-prop-lllang": "Добавляет языковой код ссылки.",
+       "apihelp-query+langbacklinks-paramvalue-prop-lltitle": "Добавляет название ссылки.",
+       "apihelp-query+langbacklinks-param-dir": "Порядок перечисления.",
+       "apihelp-query+langbacklinks-example-simple": "Получить список страниц, ссылающихся на [[:fr:Test]].",
+       "apihelp-query+langbacklinks-example-generator": "Получить информацию о страницах, ссылающихся на [[:fr:Test]].",
+       "apihelp-query+langlinks-param-limit": "Сколько ссылок вернуть.",
+       "apihelp-query+langlinks-param-url": "Следует ли вернуть полный URL (не может быть использовано одновременно с <var>$1prop</var>).",
+       "apihelp-query+langlinks-param-prop": "Какие дополнительные свойства получить для каждой межъязыковой ссылки:",
+       "apihelp-query+langlinks-paramvalue-prop-url": "Добавляет полный URL.",
+       "apihelp-query+langlinks-paramvalue-prop-langname": "Добавляет локализованное название языка (лучший вариант). Используйте <var>$1inlanguagecode</var> для указания языка.",
+       "apihelp-query+langlinks-paramvalue-prop-autonym": "Добавляет самоназвание языка.",
+       "apihelp-query+langlinks-param-lang": "Возвращает только ссылки с данным языковым кодом.",
+       "apihelp-query+langlinks-param-title": "Искомая ссылка. Должна быть использована вместе с <var>$1lang</var>.",
+       "apihelp-query+langlinks-param-dir": "Порядок перечисления.",
+       "apihelp-query+langlinks-param-inlanguagecode": "Языковой код для локализованных названий языков.",
+       "apihelp-query+langlinks-example-simple": "Получить межъязыковые ссылки со страницы <kbd>Main Page</kbd>.",
+       "apihelp-query+links-param-namespace": "Показывать ссылки только на данные пространства имён.",
+       "apihelp-query+links-param-limit": "Сколько ссылок вернуть.",
+       "apihelp-query+links-param-titles": "Перечислять только данные ссылки. Полезно для проверки, содержит ли конкретная страница конкретную ссылку.",
+       "apihelp-query+links-param-dir": "Порядок перечисления.",
+       "apihelp-query+links-example-simple": "Получить ссылки со страницы <kbd>Main Page</kbd>.",
+       "apihelp-query+links-example-generator": "Получить информацию о страницах, на которые ссылается <kbd>Main Page</kbd>.",
+       "apihelp-query+links-example-namespaces": "Получить ссылки с <kbd>Main Page</kbd> на пространства имён {{ns:user}} и {{ns:template}}.",
+       "apihelp-query+linkshere-param-prop": "Какие свойства получить:",
+       "apihelp-query+linkshere-paramvalue-prop-pageid": "Идентификатор каждой страницы.",
+       "apihelp-query+linkshere-paramvalue-prop-title": "Заголовок каждой страницы.",
+       "apihelp-query+linkshere-paramvalue-prop-redirect": "Метка, является ли страница перенаправлением.",
+       "apihelp-query+linkshere-param-namespace": "Включить страницы только из данных пространств имён.",
+       "apihelp-query+linkshere-param-limit": "Сколько страниц вернуть.",
+       "apihelp-query+linkshere-param-show": "Показать только элементы, соответствующие этим критериям:\n;redirect: Показать только перенаправления.\n;!redirect: Показать только не перенаправления.",
+       "apihelp-query+linkshere-example-simple": "Получить список страниц, ссылающихся на [[Main Page]].",
+       "apihelp-query+linkshere-example-generator": "Получить информацию о страницах, ссылающихся на [[Main Page]].",
+       "apihelp-query+logevents-param-prop": "Какие свойства получить:",
+       "apihelp-query+logevents-paramvalue-prop-ids": "Добавляет идентификатор записи журнала.",
+       "apihelp-query+logevents-paramvalue-prop-title": "Добавляет заголовок страницы, связанной с записью журнала.",
+       "apihelp-query+logevents-paramvalue-prop-type": "Добавляет тип записи журнала.",
+       "apihelp-query+logevents-paramvalue-prop-user": "Добавляет участника, ответственного за запись журнала.",
+       "apihelp-query+logevents-paramvalue-prop-userid": "Добавляет идентификатор участника, ответственного за запись журнала.",
+       "apihelp-query+logevents-paramvalue-prop-timestamp": "Добавляет временную метку записи журнала.",
+       "apihelp-query+logevents-paramvalue-prop-comment": "Добавляет комментарий записи журнала.",
+       "apihelp-query+logevents-paramvalue-prop-parsedcomment": "Добавляет распарсенный комментарий записи журнала.",
+       "apihelp-query+logevents-paramvalue-prop-details": "Перечисляет дополнительные сведения о записи в журнале.",
+       "apihelp-query+logevents-paramvalue-prop-tags": "Перечисляет метки записи журнала.",
+       "apihelp-query+logevents-param-type": "Вернуть только записи этого типа.",
+       "apihelp-query+logevents-param-action": "Вернуть только указанные действия журнала. Переопределяет <var>$1type</var>. В списке возможных значений можно использовать звёздочку, например, <kbd>action/*</kbd> найдёт различные подстроки после слэша (/).",
+       "apihelp-query+logevents-param-start": "Временная метка, с которой начать перечисление.",
+       "apihelp-query+logevents-param-end": "Временная метка, на которой закончить перечисление.",
+       "apihelp-query+logevents-param-user": "Вернуть записи, созданные указанным участником.",
+       "apihelp-query+logevents-param-title": "Вернуть записи, связанные с указанными страницами.",
+       "apihelp-query+logevents-param-namespace": "Вернуть записи, связанные с указанными пространствами имён.",
+       "apihelp-query+logevents-param-prefix": "Вернуть записи, начинающиеся с заданного префикса.",
+       "apihelp-query+logevents-param-tag": "Только записи с заданной меткой.",
+       "apihelp-query+logevents-param-limit": "Сколько записей вернуть.",
+       "apihelp-query+logevents-example-simple": "Список последних записей.",
+       "apihelp-query+pagepropnames-param-limit": "Максимальное число возвращаемых названий.",
+       "apihelp-query+pagepropnames-example-simple": "Получить первые 10 названий свойств.",
+       "apihelp-query+pageprops-param-prop": "Перечислить только эти свойства страницы (<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd> возвращает список используемых названий свойств). Полезно для проверки, используют ли страницы конкретные свойства.",
+       "apihelp-query+pageprops-example-simple": "Получить свойства страниц <kbd>Main Page</kbd> и <kbd>MediaWiki</kbd>.",
+       "apihelp-query+pageswithprop-param-propname": "Искомое свойство (<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd> возвращает список используемых названий свойств).",
+       "apihelp-query+pageswithprop-param-prop": "Какую информацию включить:",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "Добавляет идентификатор страницы.",
+       "apihelp-query+pageswithprop-paramvalue-prop-title": "Добавляет заголовок и идентификатор пространства имён страницы.",
+       "apihelp-query+pageswithprop-paramvalue-prop-value": "Добавляет значение свойства страницы.",
+       "apihelp-query+pageswithprop-param-limit": "Максимальное число возвращаемых страниц.",
+       "apihelp-query+pageswithprop-param-dir": "Порядок сортировки.",
+       "apihelp-query+pageswithprop-example-simple": "Список первых 10 страниц, использующих <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
+       "apihelp-query+pageswithprop-example-generator": "Получение дополнительной информации о первых десяти страницах, использующих <code>_&#95;NOTOC_&#95;</code>.",
+       "apihelp-query+prefixsearch-param-search": "Поисковый запрос.",
+       "apihelp-query+prefixsearch-param-namespace": "Пространства имён для поиска.",
+       "apihelp-query+prefixsearch-param-limit": "Максимальное число возвращаемых результатов.",
+       "apihelp-query+prefixsearch-param-offset": "Количество пропускаемых результатов.",
+       "apihelp-query+prefixsearch-example-simple": "Поиск названий страниц, начинающихся с <kbd>meaning</kbd>.",
+       "apihelp-query+prefixsearch-param-profile": "Используемый поисковый профиль.",
+       "apihelp-query+protectedtitles-param-namespace": "Перечислять только страницы этих пространств имён.",
+       "apihelp-query+protectedtitles-param-level": "Перечислять только названия с этим уровнем защиты.",
+       "apihelp-query+protectedtitles-param-limit": "Сколько страниц вернуть.",
+       "apihelp-query+protectedtitles-param-start": "Начать перечисление с этой метки времени защиты.",
+       "apihelp-query+protectedtitles-param-end": "Закончить перечисление на этой метке времени защиты.",
+       "apihelp-query+protectedtitles-param-prop": "Какие свойства получить:",
+       "apihelp-query+protectedtitles-paramvalue-prop-timestamp": "Добавляет метку времени установки защиты.",
+       "apihelp-query+protectedtitles-paramvalue-prop-user": "Добавляет участника, установившего защиту.",
+       "apihelp-query+protectedtitles-paramvalue-prop-userid": "Добавляет идентификатор участника, установившего защиту.",
+       "apihelp-query+protectedtitles-paramvalue-prop-comment": "Добавляет описание защиты.",
+       "apihelp-query+protectedtitles-paramvalue-prop-parsedcomment": "Добавляет распарсенное описание защиты.",
+       "apihelp-query+protectedtitles-paramvalue-prop-expiry": "Добавляет метку времени снятия защиты.",
+       "apihelp-query+protectedtitles-paramvalue-prop-level": "Добавляет уровень защиты.",
        "apihelp-query+protectedtitles-example-simple": "Список защищенных заголовков",
+       "apihelp-query+protectedtitles-example-generator": "Поиск ссылок на защищённые заголовки в основном пространстве имён.",
+       "apihelp-query+querypage-param-page": "Название служебной страницы. Обратите внимание: чувствительно к регистру.",
        "apihelp-query+querypage-param-limit": "Количество возвращаемых результатов.",
-       "apihelp-query+recentchanges-param-limit": "Какое общее количество возвращать",
-       "apihelp-query+recentchanges-param-type": "Какие типы изменений показать.",
+       "apihelp-query+querypage-example-ancientpages": "Вернуть результаты [[Special:Ancientpages]].",
+       "apihelp-query+random-param-namespace": "Вернуть только страницы этих пространств имён.",
+       "apihelp-query+random-param-limit": "Ограничение на количество возвращаемых страниц.",
+       "apihelp-query+random-param-redirect": "Вместо этого, используйте <kbd>$1filterredir=redirects</kbd>.",
+       "apihelp-query+random-param-filterredir": "Как фильтровать перенаправления.",
+       "apihelp-query+random-example-simple": "Вернуть две случайные страницы из основного пространства имён.",
+       "apihelp-query+random-example-generator": "Вернуть информацию о двух случайных страницах из основного пространства имён.",
+       "apihelp-query+recentchanges-param-start": "Временная метка, с которой начать перечисление.",
+       "apihelp-query+recentchanges-param-end": "Временная метка, на которой закончить перечисление.",
+       "apihelp-query+recentchanges-param-namespace": "Только правки в этих пространствах имён.",
+       "apihelp-query+recentchanges-param-user": "Только правки данного участника.",
+       "apihelp-query+recentchanges-param-excludeuser": "Не перечислять правки данного участника.",
+       "apihelp-query+recentchanges-param-tag": "Только правки с заданной меткой.",
+       "apihelp-query+recentchanges-param-prop": "Включить дополнительную информацию:",
+       "apihelp-query+recentchanges-paramvalue-prop-user": "Добавить анонимных участников, ответственных за правку или метку.",
+       "apihelp-query+recentchanges-paramvalue-prop-userid": "Добавить идентификатор ответственного за правку участника.",
+       "apihelp-query+recentchanges-paramvalue-prop-comment": "Добавляет описание правки.",
+       "apihelp-query+recentchanges-paramvalue-prop-parsedcomment": "Добавляет распарсенное описание правки.",
+       "apihelp-query+recentchanges-paramvalue-prop-flags": "Добавляет метки правки.",
+       "apihelp-query+recentchanges-paramvalue-prop-timestamp": "Добавляет временную метку правки.",
+       "apihelp-query+recentchanges-paramvalue-prop-title": "Добавляет заголовок отредактированной страницы.",
+       "apihelp-query+recentchanges-paramvalue-prop-ids": "Добавляет идентификаторы страницы, правки, старой и новой версии.",
+       "apihelp-query+recentchanges-paramvalue-prop-sizes": "Добавляет старую и новую длину страницы в байтах.",
+       "apihelp-query+recentchanges-paramvalue-prop-redirect": "Отмечает правку, если страница является перенаправлением.",
+       "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Отмечает патрулируемые правки как отпатрулированные или неотпатрулированные.",
+       "apihelp-query+recentchanges-paramvalue-prop-loginfo": "Добавляет информацию о записи журнала (идентификатор записи, её тип, и так далее).",
+       "apihelp-query+recentchanges-paramvalue-prop-tags": "Перечисляет теги записи.",
+       "apihelp-query+recentchanges-paramvalue-prop-sha1": "Добавляет значение контрольных сумм для записей, связанных с версией.",
+       "apihelp-query+recentchanges-param-token": "Вместо этого используйте <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
+       "apihelp-query+recentchanges-param-show": "Показать только элементы, удовлетворяющие данным критериям. Например, чтобы отобразить только малые правки, сделанные зарегистрированными участниками, установите $1show=minor|!anon.",
+       "apihelp-query+recentchanges-param-limit": "Сколько правок вернуть.",
+       "apihelp-query+recentchanges-param-type": "Какие типы правок показать.",
+       "apihelp-query+recentchanges-param-toponly": "Перечислять только последние правки страниц.",
+       "apihelp-query+recentchanges-param-generaterevisions": "При использовании в качестве генератора, генерировать идентификаторы версий вместо их названий. Записи последних изменений без привязанного идентификатора версии (например, большинство записей журналов) не сгенерируют ничего.",
        "apihelp-query+recentchanges-example-simple": "Список последних изменений.",
+       "apihelp-query+recentchanges-example-generator": "Получить информацию о последних страницах с неотпатрулированными изменениями.",
+       "apihelp-query+redirects-param-prop": "Какие свойства получить:",
+       "apihelp-query+redirects-paramvalue-prop-pageid": "Идентификатор каждого перенаправления.",
+       "apihelp-query+redirects-paramvalue-prop-title": "Название каждого перенаправления.",
+       "apihelp-query+redirects-paramvalue-prop-fragment": "Фрагемнт каждого перенаправления, если доступен.",
+       "apihelp-query+redirects-param-namespace": "Включить страницы только из данных пространств имён.",
        "apihelp-query+redirects-param-limit": "Сколько перенаправлений вернуть.",
+       "apihelp-query+redirects-param-show": "Показывать только элементы, удовлетворяющие данным критериям:\n;fragment: Показывать только перенаправления с фрагментами.\n;!fragment: Показывать только перенаправления без фрагментов.",
+       "apihelp-query+redirects-example-simple": "Получить список перенаправлений на [[Main Page]].",
+       "apihelp-query+redirects-example-generator": "Получить информацию о всех перенаправлениях на [[Main Page]].",
+       "apihelp-query+revisions-paraminfo-singlepageonly": "Может быть использовано только с одной страницей (режим №2).",
+       "apihelp-query+revisions-param-startid": "Начать перечисление с этой временной метки версии. Версия обязана существовать, но не обязана принадлежать этой странице.",
+       "apihelp-query+revisions-param-endid": "Закончить перечисление на этой временной метке версии. Версия обязана существовать, но не обязана принадлежать этой странице.",
+       "apihelp-query+revisions-param-start": "С какой временной метки начать перечисление.",
+       "apihelp-query+revisions-param-end": "Перечислять до данной временной метки.",
+       "apihelp-query+revisions-param-user": "Только версии данного участника.",
+       "apihelp-query+revisions-param-excludeuser": "Исключить версии данного участника.",
+       "apihelp-query+revisions-param-tag": "Только версии с заданной меткой.",
+       "apihelp-query+revisions-param-token": "Какие токены получить для каждой версии.",
+       "apihelp-query+revisions-example-content": "Получить данные с содержимым для последних версий страниц <kbd>API</kbd> и <kbd>Main Page</kbd>.",
        "apihelp-query+revisions-example-last5": "Получить последние 5 версий <kbd>Main Page</kbd>.",
-       "apihelp-query+revisions-example-first5": "Получить 5 первых версий <kbd>Main Page</kbd>.",
-       "apihelp-query+revisions-example-first5-after": "Получить 5 первых версий <kbd>Main Page</kbd> созданных после 2006-05-01.",
-       "apihelp-query+revisions-example-first5-not-localhost": "Получить 5 первых версий <kbd>Main Page</kbd> которые не созданы анонимными пользователями <kbd>127.0.0.1</kbd>.",
-       "apihelp-query+revisions-example-first5-user": "Получить 5 первых версий <kbd>Main Page</kbd> которые созданы пользователями <kbd>MediaWiki default</kbd>.",
-       "apihelp-query+revisions+base-param-limit": "Ограничение на количество версий которое будут вовзращено",
-       "apihelp-query+search-description": "Выполнить полнотекстовый поиск.",
-       "apihelp-query+siteinfo-paramvalue-prop-fileextensions": "Возвращает список расширений (типы файлов), которые доступны к загрузке",
-       "apihelp-query+siteinfo-paramvalue-prop-languagevariants": "Возвращает список кодов языков, для которых включён [[mw:Special:MyLanguage/LanguageConverter|LanguageConverter]], а также варианты,поддерживаемые для каждого языка.",
-       "apihelp-query+tags-description": "Список изменерий тегов.",
-       "apihelp-query+tags-example-simple": "Лист доступных тегов",
-       "apihelp-query+templates-param-namespace": "Показывать шаблоны только из данного списка имен",
-       "apihelp-query+templates-param-limit": "Как много шаблонов для возврата",
-       "apihelp-query+transcludedin-param-limit": "Сколько возвращать",
-       "apihelp-query+usercontribs-description": "Получить все правки пользователя",
-       "apihelp-revisiondelete-description": "удалить и восстановить редакции",
+       "apihelp-query+revisions-example-first5": "Получить первые 5 версий <kbd>Main Page</kbd>.",
+       "apihelp-query+revisions-example-first5-after": "Получить первые 5 версий <kbd>Main Page</kbd> созданных после 2006-05-01.",
+       "apihelp-query+revisions-example-first5-not-localhost": "Получить первые 5 версий <kbd>Main Page</kbd>, сделанных не анонимным участником <kbd>127.0.0.1</kbd>.",
+       "apihelp-query+revisions-example-first5-user": "Получить первые 5 версий <kbd>Main Page</kbd>, сделанных участником <kbd>MediaWiki default</kbd>.",
+       "apihelp-query+revisions+base-param-prop": "Какие свойства каждой версии получить:",
+       "apihelp-query+revisions+base-paramvalue-prop-ids": "Идентификатор версии.",
+       "apihelp-query+revisions+base-paramvalue-prop-flags": "Флаги версии (малая правка).",
+       "apihelp-query+revisions+base-paramvalue-prop-timestamp": "Временная метка версии.",
+       "apihelp-query+revisions+base-paramvalue-prop-user": "Участник, создавший версию.",
+       "apihelp-query+revisions+base-paramvalue-prop-userid": "Идентификатор создателя версии.",
+       "apihelp-query+revisions+base-paramvalue-prop-size": "Длина версии (в байтах).",
+       "apihelp-query+revisions+base-paramvalue-prop-sha1": "SHA-1-хэш (base 16) версии.",
+       "apihelp-query+revisions+base-paramvalue-prop-contentmodel": "Идентификатор модели содержимого версии.",
+       "apihelp-query+revisions+base-paramvalue-prop-comment": "Описание правки.",
+       "apihelp-query+revisions+base-paramvalue-prop-parsedcomment": "Распарсенное описание правки.",
+       "apihelp-query+revisions+base-paramvalue-prop-content": "Текст версии.",
+       "apihelp-query+revisions+base-paramvalue-prop-tags": "Метки версии.",
+       "apihelp-query+revisions+base-paramvalue-prop-parsetree": "Дерево парсинга XML содержимого версии (требуется модель содержимого <code>$1</code>).",
+       "apihelp-query+revisions+base-param-limit": "Сколько версий вернуть.",
+       "apihelp-query+revisions+base-param-expandtemplates": "Раскрыть шаблоны в содержимом версии (требуется $1prop=content).",
+       "apihelp-query+revisions+base-param-generatexml": "Сгенерировать дерево парсинга XML содержимого версии (требуется $1prop=content; заменено на <kbd>$1prop=parsetree</kbd>).",
+       "apihelp-query+revisions+base-param-parse": "Распарсить содержимое версии (требуется $1prop=content). Из соображений производительности, при использовании этой опции, в качестве $1limit принудительно устанавливается 1.",
+       "apihelp-query+revisions+base-param-section": "Вернуть содержимое только секции с заданным номером.",
+       "apihelp-query+revisions+base-param-diffto": "Идентификатор версии, с которым сравнивать каждую версию. Используйте <kbd>prev</kbd>, <kbd>next</kbd> и <kbd>cur</kbd> для предыдущей, следующей и текущей версии соответственно.",
+       "apihelp-query+revisions+base-param-difftotext": "Текст, с которым сравнивать каждую версию. Сравнивает ограниченное число версий. Переопределяет <var>$1diffto</var>. Если задано <var>$1section</var>, сравнение будет произведено только с этой секцией.",
+       "apihelp-query+revisions+base-param-difftotextpst": "Выполнить преобразование перед записью правки до сравнения. Доступно только при использовании с <var>$1difftotext</var>.",
+       "apihelp-query+revisions+base-param-contentformat": "Формат серилиализации, использованный в <var>$1difftotext</var> и ожидаемый в результате.",
+       "apihelp-query+search-param-search": "Искать страницы, названия или тексты которых содержат это значение. Вы можете использовать в поисковом запросе служебные функции в зависимости от того, какой поисковый движок используется на сервере.",
+       "apihelp-query+search-param-namespace": "Искать только в этих пространствах имён.",
+       "apihelp-query+search-param-what": "Какой тип поиска осуществить.",
+       "apihelp-query+search-param-info": "Какие метаданные вернуть.",
+       "apihelp-query+search-param-prop": "Какие свойства вернуть:",
+       "apihelp-query+search-param-qiprofile": "Используемый запросонезависимый профиль (затрагивает оценивающий алгоритм).",
+       "apihelp-query+search-paramvalue-prop-size": "Добавляет размер страницы в байтах.",
+       "apihelp-query+search-paramvalue-prop-wordcount": "Добавляет количество слов на странице.",
+       "apihelp-query+search-paramvalue-prop-timestamp": "Добавляет метку времени последнего редактирования страницы.",
+       "apihelp-query+search-paramvalue-prop-snippet": "Добавляет распарсенный фрагмент страницы.",
+       "apihelp-query+search-paramvalue-prop-titlesnippet": "Добавляет распарсенный фрагмент названия страницы.",
+       "apihelp-query+search-paramvalue-prop-redirectsnippet": "Добавляет распарсенный фрагмент названия перенаправления.",
+       "apihelp-query+search-paramvalue-prop-redirecttitle": "Добавляет название найденного перенаправления.",
+       "apihelp-query+search-paramvalue-prop-sectionsnippet": "Добавляет распарсенный фрагмент заголовка найденного раздела.",
+       "apihelp-query+search-paramvalue-prop-sectiontitle": "Добавляет заголовок найденного раздела.",
+       "apihelp-query+search-paramvalue-prop-categorysnippet": "Добавляет распарсенный фрагмент найденной категории.",
+       "apihelp-query+search-paramvalue-prop-isfilematch": "Добавляет логическое значение, обозначающее, удовлетворяет ли поисковому запросу содержимое файла.",
+       "apihelp-query+search-paramvalue-prop-score": "<span class=\"apihelp-deprecated\">Не поддерживается и игнорируется.</span>",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "<span class=\"apihelp-deprecated\">Не поддерживается и игнорируется.</span>",
+       "apihelp-query+search-param-limit": "Сколько страниц вернуть.",
+       "apihelp-query+search-param-interwiki": "Включить результаты из других вики, если доступны.",
+       "apihelp-query+search-param-backend": "Какой поисковый движок использовать, если не стандартный.",
+       "apihelp-query+search-param-enablerewrites": "Разрешить редактирование запроса. Некоторые поисковые движки могут отредактировать запрос, например, исправив опечатку, если посчитают, что это приведёт к лучшим результатам.",
+       "apihelp-query+search-example-simple": "Найти <kbd>meaning</kbd>.",
+       "apihelp-query+search-example-text": "Найти тексты, содержащие <kbd>meaning</kbd>.",
+       "apihelp-query+search-example-generator": "Получить информацию о страницах, возвращённых по поисковому запросу <kbd>meaning</kbd>.",
+       "apihelp-query+siteinfo-param-prop": "Какую информацию получить:",
+       "apihelp-query+siteinfo-paramvalue-prop-general": "Общую системную информацию.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespaces": "Список зарегистрированных пространств имён и их каноничные имена.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespacealiases": "Список зарегистрированных синонимов пространств имён.",
+       "apihelp-query+siteinfo-paramvalue-prop-specialpagealiases": "Список синонимов служебных страниц.",
+       "apihelp-query+siteinfo-paramvalue-prop-magicwords": "Список магических слов и их синонимы.",
+       "apihelp-query+siteinfo-paramvalue-prop-statistics": "Статистика сайта.",
+       "apihelp-query+siteinfo-paramvalue-prop-interwikimap": "Карта интервик (может быть отфильтрована, или локализована с помощью <var>$1inlanguagecode</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-dbrepllag": "Возвращает сервер базы данных с наибольшим отставанием репликации.",
+       "apihelp-query+siteinfo-paramvalue-prop-usergroups": "Список групп участников и связанных прав.",
+       "apihelp-query+siteinfo-paramvalue-prop-libraries": "Библиотеки, установленные в вики.",
+       "apihelp-query+siteinfo-paramvalue-prop-extensions": "Расширения, установленные в вики.",
+       "apihelp-query+siteinfo-paramvalue-prop-fileextensions": "Список файловых расширений, разрешённых к загрузке.",
+       "apihelp-query+siteinfo-paramvalue-prop-rightsinfo": "Возвращает правовую информацию (лицензию), если доступно.",
+       "apihelp-query+siteinfo-paramvalue-prop-restrictions": "Возвращает информацию о доступных типах защиты страниц.",
+       "apihelp-query+siteinfo-paramvalue-prop-languages": "Возвращает список языков, поддерживаемых MediaWiki (опционально локализованных с помощью <var>$1inlanguagecode</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-languagevariants": "Возвращает список языковых кодов, для которых включён [[mw:Special:MyLanguage/LanguageConverter|LanguageConverter]], а также варианты, поддерживаемые для каждого языка.",
+       "apihelp-query+siteinfo-paramvalue-prop-skins": "Возвращает список доступных скинов (опционально локализованных с помощью <var>$1inlanguagecode</var>, в противном случае — на языке вики).",
+       "apihelp-query+siteinfo-paramvalue-prop-extensiontags": "Возвращает список тегов рашсирений парсера.",
+       "apihelp-query+siteinfo-paramvalue-prop-functionhooks": "Возвращает список перехватчиков функций парсера.",
+       "apihelp-query+siteinfo-paramvalue-prop-showhooks": "Возвращает список всех подписанных перехватчиков (содержимое <var>[[mw:Special:MyLanguage/Manual:$wgHooks|$wgHooks]]</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-variables": "Возвращает список идентификаторов переменных.",
+       "apihelp-query+siteinfo-paramvalue-prop-protocols": "Возвращает список протоколов, разрешённых во внешних ссылках.",
+       "apihelp-query+siteinfo-paramvalue-prop-defaultoptions": "Возвращает значения по умолчанию настроек участников.",
+       "apihelp-query+siteinfo-paramvalue-prop-uploaddialog": "Возвращает конфигурацию диалога загрузки.",
+       "apihelp-query+siteinfo-param-filteriw": "Вернуть только локальные или только нелокальные записи карты интервик.",
+       "apihelp-query+siteinfo-param-showalldb": "Перечисляет все сервера баз данных, а не только самый отстающий.",
+       "apihelp-query+siteinfo-param-numberingroup": "Перечисляет количество участников в группах.",
+       "apihelp-query+siteinfo-param-inlanguagecode": "Языковой код для перевода названий языков и скинов.",
+       "apihelp-query+siteinfo-example-simple": "Запросить информацию о сайте.",
+       "apihelp-query+siteinfo-example-interwiki": "Запросить список локальных префиксов интервик.",
+       "apihelp-query+siteinfo-example-replag": "Проверить текущее отставание репликации.",
+       "apihelp-query+stashimageinfo-param-filekey": "Ключ, идентифицирующий предыдущую временную загрузку.",
+       "apihelp-query+stashimageinfo-param-sessionkey": "Синоним $1filekey для обратной совместимости.",
+       "apihelp-query+stashimageinfo-example-simple": "Вернуть информацию о файле в тайнике.",
+       "apihelp-query+stashimageinfo-example-params": "Вернуть эскизы двух файлов в тайнике.",
+       "apihelp-query+tags-param-limit": "Максимальное количество меток в списке.",
+       "apihelp-query+tags-param-prop": "Какие свойства получить:",
+       "apihelp-query+tags-paramvalue-prop-name": "Добавляет название метки.",
+       "apihelp-query+tags-paramvalue-prop-displayname": "Добавляет системное сообщение метки.",
+       "apihelp-query+tags-paramvalue-prop-description": "Добавляет описание метки.",
+       "apihelp-query+tags-paramvalue-prop-hitcount": "Добавляет количество правок и записей в журналах, использующих эту метку.",
+       "apihelp-query+tags-paramvalue-prop-defined": "Показывает, определена ли метка.",
+       "apihelp-query+tags-paramvalue-prop-source": "Получить источники меток, которыми могут быть <samp>extension</samp> для меток, определённых расширениями, и <samp>manual</samp> для меток, определённых участниками вручную.",
+       "apihelp-query+tags-paramvalue-prop-active": "Применима ли метка до сих пор.",
+       "apihelp-query+tags-example-simple": "Список доступных меток.",
+       "apihelp-query+templates-param-namespace": "Показать шаблоны только данного пространства имён.",
+       "apihelp-query+templates-param-limit": "Сколько шаблонов вернуть.",
+       "apihelp-query+templates-param-templates": "Перечислять только эти шаблоны. Полезно для проверки, включает ли конкретная страница конкретный шаблон.",
+       "apihelp-query+templates-param-dir": "Порядок перечисления.",
+       "apihelp-query+templates-example-simple": "Получить список шаблонов, использующихся на <kbd>Main Page</kbd>.",
+       "apihelp-query+templates-example-generator": "Получить информацию о шаблонах, использующихся на <kbd>Main Page</kbd>.",
+       "apihelp-query+templates-example-namespaces": "Получить страницы из пространств имён {{ns:user}} и {{ns:template}}, включённые в <kbd>Main Page</kbd>.",
+       "apihelp-query+tokens-param-type": "Типы запрашиваемых токенов.",
+       "apihelp-query+tokens-example-simple": "Получить csrf-токен (по умолчанию).",
+       "apihelp-query+tokens-example-types": "Получить токен наблюдения и токен патрулирования.",
+       "apihelp-query+transcludedin-param-prop": "Какие свойства получить:",
+       "apihelp-query+transcludedin-paramvalue-prop-pageid": "Идентификатор каждой страницы.",
+       "apihelp-query+transcludedin-paramvalue-prop-title": "Заголовок каждой страницы.",
+       "apihelp-query+transcludedin-paramvalue-prop-redirect": "Метка, является ли страница перенаправлением.",
+       "apihelp-query+transcludedin-param-namespace": "Включить страницы только из данных пространств имён.",
+       "apihelp-query+transcludedin-param-limit": "Сколько страниц вернуть.",
+       "apihelp-query+transcludedin-param-show": "Показать только элементы, соответствующие этим критериям:\n;redirect: Показать только перенаправления.\n;!redirect: Показать только не перенаправления.",
+       "apihelp-query+transcludedin-example-simple": "Получить список страниц, включающих <kbd>Main Page</kbd>.",
+       "apihelp-query+transcludedin-example-generator": "Получить информацию о страницах, включающих <kbd>Main Page</kbd>.",
+       "apihelp-query+usercontribs-param-limit": "Максимальное количество возвращаемых правок.",
+       "apihelp-query+usercontribs-param-start": "Временная метка, с которой начать возврат.",
+       "apihelp-query+usercontribs-param-end": "Временная метка, на которой закончить возврат.",
+       "apihelp-query+usercontribs-param-user": "Участники, чей вклад необходимо получить. Не может быть использовано с <var>$1userids</var> или <var>$1userprefix</var>.",
+       "apihelp-query+usercontribs-param-userprefix": "Получить вклад всех участников, имена которых начинаются с этого значения. Не может быть использовано с <var>$1user</var> или <var>$1userids</var>.",
+       "apihelp-query+usercontribs-param-userids": "Идентификаторы участников, чей вклад необходимо получить. Не может быть использовано с <var>$1user</var> или <var>$1userprefix</var>.",
+       "apihelp-query+usercontribs-param-namespace": "Перечислять только правки в этих пространствах имён.",
+       "apihelp-query+usercontribs-param-prop": "Включить дополнительную информацию:",
+       "apihelp-query+usercontribs-paramvalue-prop-ids": "Добавляет идентификатор страницы и версии.",
+       "apihelp-query+usercontribs-paramvalue-prop-title": "Добавляет заголовок и идентификатор пространства имён страницы.",
+       "apihelp-query+usercontribs-paramvalue-prop-timestamp": "Добавляет временную метку правки.",
+       "apihelp-query+usercontribs-paramvalue-prop-comment": "Добавляет описание правки.",
+       "apihelp-query+usercontribs-paramvalue-prop-parsedcomment": "Добавляет распарсенное описание правки.",
+       "apihelp-query+usercontribs-paramvalue-prop-size": "Добавляет новый размер страницы.",
+       "apihelp-query+usercontribs-paramvalue-prop-sizediff": "Добавляет разницу между размерами страницы до и после правки.",
+       "apihelp-query+usercontribs-paramvalue-prop-flags": "Добавляет флаги правки.",
+       "apihelp-query+usercontribs-paramvalue-prop-patrolled": "Отмечает отпатрулированные правки.",
+       "apihelp-query+usercontribs-paramvalue-prop-tags": "Перечисляет метки правки.",
+       "apihelp-query+usercontribs-param-show": "Показать только элементы, удовлетворяющие данным критериям, например, только не малые правки: <kbd>$2show=!minor</kbd>.\n\nЕсли установлено <kbd>$2show=patrolled</kbd> или <kbd>$2show=!patrolled</kbd>, правки старее <var>[[mw:Special:MyLanguage/Manual:$wgRCMaxAge|$wgRCMaxAge]]</var> ($1 {{PLURAL:$1|секунды|секунд}}) не будут показаны.",
+       "apihelp-query+usercontribs-param-tag": "Только правки с заданной меткой.",
+       "apihelp-query+usercontribs-param-toponly": "Перечислять только последние правки страниц.",
+       "apihelp-query+usercontribs-example-user": "Показать вклад участника <kbd>Example</kbd>.",
+       "apihelp-query+usercontribs-example-ipprefix": "Показать вклад со всех IP-адресов, начинающихся на <kbd>192.0.2.</kbd>.",
+       "apihelp-query+userinfo-param-prop": "Какую информацию включить:",
+       "apihelp-query+userinfo-paramvalue-prop-blockinfo": "Определяет, заблокирован ли текущий участник, кем и по какой причине.",
+       "apihelp-query+userinfo-paramvalue-prop-hasmsg": "Добавляет метку <samp>messages</samp>, если у текущего участника есть непрочитанные сообщения.",
+       "apihelp-query+userinfo-paramvalue-prop-groups": "Перечисляет все группы, в которые входит участник.",
+       "apihelp-query+userinfo-paramvalue-prop-groupmemberships": "Возвращает группы, в которые участник был явно включён, включая дату окончания членства для каждой группы.",
+       "apihelp-query+userinfo-paramvalue-prop-implicitgroups": "Перечисляет все группы, в которые участник был включён автоматически.",
+       "apihelp-query+userinfo-paramvalue-prop-rights": "Перечисляет все права текущего участника.",
+       "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Перечисляет группы, в которые или из которых участник может добавить или удалить других участников.",
+       "apihelp-query+userinfo-paramvalue-prop-options": "Перечисляет все настройки, установленные текущим участником.",
+       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "<span class=\"apihelp-deprecated\">Не поддерживается.</span> Возвращает токен для смены настроек текущего участника.",
+       "apihelp-query+userinfo-paramvalue-prop-editcount": "Добавляет счётчик правок текущего участника.",
+       "apihelp-query+userinfo-paramvalue-prop-ratelimits": "Добавляет все скоростные лимиты, применимые к текущему участнику.",
+       "apihelp-query+userinfo-paramvalue-prop-realname": "Добавляет настоящее имя участника.",
+       "apihelp-query+userinfo-paramvalue-prop-email": "Добавляет электронный адрес участника и дату проверки его подлинности.",
+       "apihelp-query+userinfo-paramvalue-prop-acceptlang": "Возвращает назад заголовок <code>Accept-Language</code>, отосланный клиентом, в структурированном формате.",
+       "apihelp-query+userinfo-paramvalue-prop-registrationdate": "Добавляет дату регистрации участника.",
+       "apihelp-query+userinfo-paramvalue-prop-unreadcount": "Добавляет число непрочитанных страниц в странице наблюдения участника (максимум $1; возвращает <samp>$2</samp>, если их больше).",
+       "apihelp-query+userinfo-paramvalue-prop-centralids": "Добавляет центральный идентификатор и статус прикрепления участника.",
+       "apihelp-query+userinfo-param-attachedwiki": "Вместе с <kbd>$1prop=centralids</kbd> отображает, прикреплён ли к вики участник с этим идентификатором.",
+       "apihelp-query+userinfo-example-simple": "Получение информации о текущем участнике.",
+       "apihelp-query+userinfo-example-data": "Получение дополнительной информации о текущем участнике.",
+       "apihelp-query+users-param-prop": "Какую информацию включить:",
+       "apihelp-query+users-paramvalue-prop-blockinfo": "Определяет, заблокирован ли участник, кем и по какой причине.",
+       "apihelp-query+users-paramvalue-prop-groups": "Перечисляет все группы, в которые входит каждый участник.",
+       "apihelp-query+users-paramvalue-prop-groupmemberships": "Возвращает группы, в которые каждый участник был явно включён, включая дату окончания членства для каждой группы.",
+       "apihelp-query+users-paramvalue-prop-implicitgroups": "Перечисляет группы, в которые участник был включён автоматически.",
+       "apihelp-query+users-paramvalue-prop-rights": "Перечисляет все права каждого участника.",
+       "apihelp-query+users-paramvalue-prop-editcount": "Добавляет счётчики правок участников.",
+       "apihelp-query+users-paramvalue-prop-registration": "Добавляет даты регистрации участников.",
+       "apihelp-query+users-paramvalue-prop-emailable": "Отмечает, может ли и хочет ли участник получать электронную почту посредством [[Special:Emailuser]].",
+       "apihelp-query+users-paramvalue-prop-gender": "Отмечает пол текущего участника. Возвращает «male», «female» или «unknown».",
+       "apihelp-query+users-paramvalue-prop-centralids": "Добавляет центральный идентификатор и статус прикрепления участника.",
+       "apihelp-query+users-paramvalue-prop-cancreate": "Определяет, могут ли быть созданы аккаунты с корректными, но незарегистрированными именами.",
+       "apihelp-query+users-param-attachedwiki": "Вместе с <kbd>$1prop=centralids</kbd> отображает, прикреплён ли к вики участник с этим идентификатором.",
+       "apihelp-query+users-param-users": "Список участников, для которых получить информацию.",
+       "apihelp-query+users-param-userids": "Список идентификаторов участников, для которых получить информацию.",
+       "apihelp-query+users-param-token": "Вместо этого используйте <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
+       "apihelp-query+users-example-simple": "Вернуть информацию о участнике <kbd>Example</kbd>.",
+       "apihelp-query+watchlist-param-allrev": "Включить несколько правок одной страницы из заданного временного промежутка.",
+       "apihelp-query+watchlist-param-start": "Временная метка, с которой начать перечисление.",
+       "apihelp-query+watchlist-param-end": "Временная метка, на которой закончить перечисление.",
+       "apihelp-query+watchlist-param-namespace": "Только правки в этих пространствах имён.",
+       "apihelp-query+watchlist-param-user": "Только правки данного участника.",
+       "apihelp-query+watchlist-param-excludeuser": "Не перечислять правки данного участника.",
+       "apihelp-query+watchlist-param-limit": "Сколько результатов возвращать за один запрос.",
+       "apihelp-query+watchlist-param-prop": "Какие дополнительные свойства получить:",
+       "apihelp-query+watchlist-paramvalue-prop-ids": "Добавляет идентификаторы страницы и версии.",
+       "apihelp-query+watchlist-paramvalue-prop-title": "Добавляет заголовок страницы.",
+       "apihelp-query+watchlist-paramvalue-prop-flags": "Добавляет флаги правки.",
+       "apihelp-query+watchlist-paramvalue-prop-user": "Добавляет участника, сделавшего правку.",
+       "apihelp-query+watchlist-paramvalue-prop-userid": "Добавляет идентификатор участника, сделавшего правку.",
+       "apihelp-query+watchlist-paramvalue-prop-comment": "Добавляет описание правки.",
+       "apihelp-query+watchlist-paramvalue-prop-parsedcomment": "Добавляет распарсенное описание правки.",
+       "apihelp-query+watchlist-paramvalue-prop-timestamp": "Добавляет временную метку правки.",
+       "apihelp-query+watchlist-paramvalue-prop-patrol": "Определяет, была ли правка отпатрулирована.",
+       "apihelp-query+watchlist-paramvalue-prop-sizes": "Добавляет старую и новую длину страницы.",
+       "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "Добавляет метку времени, когда участник был уведомлён о правке.",
+       "apihelp-query+watchlist-paramvalue-prop-loginfo": "Добавляет информацию о журнале, где уместно.",
+       "apihelp-query+watchlist-param-show": "Показать только элементы, удовлетворяющие данным критериям. Например, чтобы отобразить только малые правки, сделанные зарегистрированными участниками, установите $1show=minor|!anon.",
+       "apihelp-query+watchlist-param-type": "Какие типы правок показать:",
+       "apihelp-query+watchlist-paramvalue-type-edit": "Обычные правки страниц.",
+       "apihelp-query+watchlist-paramvalue-type-external": "Внешние правки.",
+       "apihelp-query+watchlist-paramvalue-type-new": "Создания страниц.",
+       "apihelp-query+watchlist-paramvalue-type-log": "Записи журнала.",
+       "apihelp-query+watchlist-paramvalue-type-categorize": "Правки категоризации.",
+       "apihelp-query+watchlist-param-owner": "Используется вместе с $1token для получения списка наблюдения другого участника.",
+       "apihelp-query+watchlist-param-token": "Токен безопасности (доступен в [[Special:Preferences#mw-prefsection-watchlist|настройках]] участника), предоставляющий доступ к списку наблюдения другого участника.",
+       "apihelp-query+watchlist-example-simple": "Список последних правок недавно отредактированных страниц из списка наблюдения текущего участника.",
+       "apihelp-query+watchlist-example-props": "Запросить дополнительную информацию о последних правках недавно отредактированных страниц из списка наблюдения текущего участника.",
+       "apihelp-query+watchlist-example-allrev": "Запросить информацию о всех недавних правках страниц из списка наблюдения текущего участника.",
+       "apihelp-query+watchlist-example-generator": "Запросить информацию о страницах для недавно отредактированных страниц из списка наблюдения текущего участника.",
+       "apihelp-query+watchlist-example-generator-rev": "Запросить информацию о версиях для последних правок страниц из списка наблюдения текущего участника.",
+       "apihelp-query+watchlist-example-wlowner": "Список последних правок недавно отредактированных страниц из списка наблюдения участника <kbd>Example</kbd>.",
+       "apihelp-query+watchlistraw-param-namespace": "Перечислять только страницы этих пространств имён.",
+       "apihelp-query+watchlistraw-param-limit": "Сколько результатов возвращать за один запрос.",
+       "apihelp-query+watchlistraw-param-prop": "Какие дополнительные свойства получить:",
+       "apihelp-query+watchlistraw-paramvalue-prop-changed": "Добавляет метку времени, когда участник был уведомлён о правке.",
+       "apihelp-query+watchlistraw-param-show": "Перечислять только элементы, соответствующие этим критериям.",
+       "apihelp-query+watchlistraw-param-owner": "Используется вместе с $1token для получения списка наблюдения другого участника.",
+       "apihelp-query+watchlistraw-param-token": "Токен безопасности (доступен в [[Special:Preferences#mw-prefsection-watchlist|настройках]] участника), предоставляющий доступ к списку наблюдения другого участника.",
+       "apihelp-query+watchlistraw-param-dir": "Порядок перечисления.",
+       "apihelp-query+watchlistraw-param-fromtitle": "Название (с префиксом пространства имён), с которого начать перечисление.",
+       "apihelp-query+watchlistraw-param-totitle": "Название (с префиксом пространства имён), на котором закончить перечисление.",
+       "apihelp-query+watchlistraw-example-simple": "Получение страниц из списка наблюдения текущего участника.",
+       "apihelp-query+watchlistraw-example-generator": "Запросить информацию о страницах из списка наблюдения текущего участника.",
+       "apihelp-removeauthenticationdata-example-simple": "Попытка удалить данные текущего участника для <kbd>FooAuthenticationRequest</kbd>.",
+       "apihelp-resetpassword-param-user": "Сбрасываемый участник.",
+       "apihelp-resetpassword-param-email": "Электронный адрес сбрасываемого участника.",
+       "apihelp-resetpassword-example-user": "Послать письмо для сброса пароля участнику <kbd>Example</kbd>.",
+       "apihelp-resetpassword-example-email": "Послать письмо для сброса пароля всем участникам с электронным адресом <kbd>user@example.com</kbd>.",
+       "apihelp-revisiondelete-param-type": "Тип осуществляемого удаления версии.",
+       "apihelp-revisiondelete-param-target": "Название страницы удаляемой версии, если это требуется для выбранного типа.",
+       "apihelp-revisiondelete-param-ids": "Идентификаторы удаляемых версий.",
+       "apihelp-revisiondelete-param-hide": "Что скрыть для каждой версии.",
+       "apihelp-revisiondelete-param-show": "Что показать для каждой версии.",
+       "apihelp-revisiondelete-param-suppress": "Следует ли скрыть данные от администраторов так же, как и от остальных участников.",
+       "apihelp-revisiondelete-param-reason": "Причина удаления или восстановления.",
+       "apihelp-revisiondelete-param-tags": "Изменить метки записи в журнале удалений.",
+       "apihelp-revisiondelete-example-revision": "Скрыть содержимое версии <kbd>12345</kbd> страницы <kbd>Main Page</kbd>.",
+       "apihelp-revisiondelete-example-log": "Скрыть все данные записи <kbd>67890</kbd> в журнале с причиной <kbd>BLP violation</kbd>.",
+       "apihelp-rollback-param-title": "Заголовок откатываемой страницы. Не может быть использовано одновременно с <var>$1pageid</var>.",
+       "apihelp-rollback-param-pageid": "Идентификатор откатываемой страницы. Не может быть использовано одновременно с <var>$1title</var>.",
+       "apihelp-rollback-param-tags": "Метки, применяемые к откату.",
+       "apihelp-rollback-param-user": "Имя участника, чьи правки следует откатить.",
+       "apihelp-rollback-param-summary": "Пользовательское описание правки. При пустом значении будет использовано стандартное описание.",
+       "apihelp-rollback-param-markbot": "Отметить откатываемые правки и откат как правки бота.",
+       "apihelp-rollback-param-watchlist": "Безусловно добавить или удалить страницу из списка наблюдения текущего участника, использовать настройки или не менять наблюдение.",
+       "apihelp-rollback-example-simple": "Откатить последние изменения страницы <kbd>Main Page</kbd> участника <kbd>Example</kbd>.",
+       "apihelp-rollback-example-summary": "Откатить последние правки страницы <kbd>Main Page</kbd> анонимного участника <kbd>192.0.2.5</kbd> с описанием <kbd>Reverting vandalism</kbd>, и отметить эти правки и их откат как правки ботов.",
+       "apihelp-rsd-example-simple": "Экспортировать схему RSD.",
+       "apihelp-setnotificationtimestamp-param-entirewatchlist": "Работать над всеми отслеживаемыми страницами.",
+       "apihelp-setnotificationtimestamp-param-timestamp": "Новая временная метка уведомления.",
+       "apihelp-setnotificationtimestamp-param-torevid": "Версия, к временной метке которой приравнять временную метку уведомления (только для одной страницы).",
+       "apihelp-setnotificationtimestamp-param-newerthanrevid": "Версия, новее которой сделать временную метку уведомления (только для одной страницы).",
+       "apihelp-setnotificationtimestamp-example-all": "Сбросить статус уведомления для всего списка наблюдения.",
+       "apihelp-setnotificationtimestamp-example-page": "Сбросить статус уведомления для <kbd>Main page</kbd>.",
+       "apihelp-setnotificationtimestamp-example-pagetimestamp": "Установить временную метку уведомления для страницы <kbd>Main page</kbd> таким образом, чтобы сделать все правки с 1 января 2012 года непросмотренными.",
+       "apihelp-setnotificationtimestamp-example-allpages": "Сбросить статус уведомления для страниц из пространства имён <kbd>{{ns:user}}</kbd>.",
+       "apihelp-setpagelanguage-param-title": "Название страницы, язык которой вы желаете поменять. Не может быть использовано одновременно с <var>$1pageid</var>.",
+       "apihelp-setpagelanguage-param-pageid": "Идентификатор страницы, язык которой вы желаете поменять. Не может быть использовано одновременно с <var>$1title</var>.",
+       "apihelp-setpagelanguage-param-lang": "Код нового языка. Используйте <kbd>default</kbd> для смены на язык содержимого по умолчанию для этой вики.",
+       "apihelp-setpagelanguage-param-reason": "Причина изменения.",
+       "apihelp-setpagelanguage-param-tags": "Изменить теги записей в журнале, возникающих в результате этого действия.",
+       "apihelp-setpagelanguage-example-language": "Изменить язык <kbd>Main Page</kbd> на баскский.",
+       "apihelp-setpagelanguage-example-default": "Изменить язык страницы с идентификатором 123 на язык по умолчанию.",
+       "apihelp-stashedit-param-title": "Заголовок редактируемой страницы.",
+       "apihelp-stashedit-param-section": "Номер раздела. <kbd>0</kbd> для верхнего раздела, <kbd>new</kbd> для нового раздела.",
        "apihelp-stashedit-param-sectiontitle": "Заголовок нового раздела.",
-       "apihelp-unblock-description": "Разблокировать участника.",
-       "apihelp-unblock-param-user": "Имя участника, IP-адрес или диапазон IP-адресов, которые вы хотите разблокировать. Нельзя использовать одновременно с <var>$1id</var> или <var>$1userid</var>.",
-       "apihelp-unblock-param-userid": "ID участника, которого вы хотите разблокировать. Нельзя использовать одновременно с <var>$1id</var> или <var>$1user</var>.",
-       "apihelp-unblock-param-reason": "Причина разблокировки",
-       "apihelp-unblock-example-id": "Разблокировать блок с идентификатором #<kbd>105</kbd>.",
-       "apihelp-unblock-example-user": "Разблокировать пользователя <kbd>Bob</kbd> по причине <kbd>Sorry Bob</kbd>.",
-       "apihelp-undelete-param-title": "Заголовок страницы для восстановления.",
-       "apihelp-undelete-param-reason": "Причины восстановления.",
+       "apihelp-stashedit-param-text": "Содержимое страницы.",
+       "apihelp-stashedit-param-stashedtexthash": "Хэш содержимого страницы в кэше.",
+       "apihelp-stashedit-param-contentmodel": "Модель нового содержимого.",
+       "apihelp-stashedit-param-contentformat": "Формат сериализации содержимого, используемый для введённого текста.",
+       "apihelp-stashedit-param-baserevid": "Идентификатор предыдущей версии.",
+       "apihelp-stashedit-param-summary": "Описание правки.",
+       "apihelp-tag-param-rcid": "Один или более идентификаторов правок, метки которых нужно добавить или удалить.",
+       "apihelp-tag-param-revid": "Один или более идентификаторов версий, метки которых нужно добавить или удалить.",
+       "apihelp-tag-param-logid": "Один или более идентификаторов записей журналов, метки которых нужно добавить или удалить.",
+       "apihelp-tag-param-add": "Добавляемые метки. Добавлять можно только метки, заданные вручную.",
+       "apihelp-tag-param-remove": "Удаляемые метки. Удалять можно только метки, заданные вручную или не заданные.",
+       "apihelp-tag-param-reason": "Причина изменения.",
+       "apihelp-tag-param-tags": "Метки, применяемые к записи в журнале, создаваемой в результате этого действия.",
+       "apihelp-tag-example-rev": "Добавить метку <kbd>vandalism</kbd> к версии с идентификатором 123 без указания причины.",
+       "apihelp-tag-example-log": "Удаление метки <kbd>spam</kbd> из записи журнала с идентификатором 123 с причиной <kbd>Wrongly applied</kbd>.",
+       "apihelp-tokens-param-type": "Типы запрашиваемых токенов.",
+       "apihelp-tokens-example-edit": "Получить токен редактирования (по умолчанию).",
+       "apihelp-tokens-example-emailmove": "Получить токен электронной почты и переименования.",
+       "apihelp-unblock-param-id": "Идентификатор снимаемой блокировки (получается с помощью <kbd>list=blocks</kbd>). Не может быть использовано одновременно с <var>$1user</var> или <var>$1userid</var>.",
+       "apihelp-unblock-param-user": "Имя участника, IP-адрес или диапазон IP-адресов, которые вы хотите разблокировать. Нельзя использовать одновременно с <var>$1userid</var>",
+       "apihelp-unblock-param-userid": "Идентификатор участника, которого вы хотите разблокировать. Нельзя использовать одновременно с <var>$1id</var> или <var>$1user</var>.",
+       "apihelp-unblock-param-reason": "Причина разблокировки.",
+       "apihelp-unblock-param-tags": "Изменить метки записи в журнале блокировок.",
+       "apihelp-unblock-example-id": "Снять блокировку с идентификатором #<kbd>105</kbd>.",
+       "apihelp-unblock-example-user": "Разблокировать участника <kbd>Bob</kbd> по причине <kbd>Sorry Bob</kbd>.",
+       "apihelp-undelete-param-title": "Заголовок восстанавливаемой страницы.",
+       "apihelp-undelete-param-reason": "Причина восстановления.",
+       "apihelp-undelete-param-tags": "Изменить метки записи в журнале удалений.",
+       "apihelp-undelete-param-timestamps": "Временные метки восстанавливаемых версий. Если и <var>$1timestamps</var>, и <var>$1fileids</var> пустые, все версии будут восстановлены.",
+       "apihelp-undelete-param-fileids": "Идентификаторы восстанавливаемых файловых версий. Если и <var>$1timestamps</var>, и <var>$1fileids</var> пустые, все версии будут восстановлены.",
+       "apihelp-undelete-param-watchlist": "Безусловно добавить или удалить страницу из списка наблюдения текущего участника, использовать настройки или не менять наблюдение.",
        "apihelp-undelete-example-page": "Восстановить страницу <kbd>Main Page</kbd>.",
        "apihelp-undelete-example-revisions": "Восстановить две версии страницы <kbd>Main Page</kbd>.",
-       "apihelp-upload-param-filename": "целевое название файла",
-       "apihelp-upload-param-text": "Первоначальный текст страницы для новых файлов.",
+       "apihelp-unlinkaccount-example-simple": "Попытаться удалить связь между текущим участником и <kbd>FooAuthenticationRequest</kbd>.",
+       "apihelp-upload-param-filename": "Целевое название файла.",
+       "apihelp-upload-param-comment": "Описание загрузки. Также используется как начальный текст страницы при загрузке нового файла, если параметр <var>$1text</var> не задан.",
+       "apihelp-upload-param-tags": "Изменить метки записи в журнале загрузок и версии файловой страницы.",
+       "apihelp-upload-param-text": "Начальный текст страницы для новых файлов.",
        "apihelp-upload-param-watch": "Наблюдать за этой страницей",
-       "apihelp-upload-param-ignorewarnings": "Игнорируйте любые предупреждения.",
+       "apihelp-upload-param-watchlist": "Безусловно добавить или удалить страницу из списка наблюдения текущего участника, использовать настройки или не менять наблюдение.",
+       "apihelp-upload-param-ignorewarnings": "Игнорировать все предупреждения.",
        "apihelp-upload-param-file": "Содержимое файла.",
-       "apihelp-upload-param-url": "URL-Адрес для извлечения файла из.",
+       "apihelp-upload-param-url": "Ссылка на запрашиваемый файл.",
+       "apihelp-upload-param-filekey": "Ключ, идентифицирующий предыдущую временную загрузку.",
+       "apihelp-upload-param-sessionkey": "Синоним $1filekey, обслуживаемый для обратной совместимости.",
+       "apihelp-upload-param-stash": "Если задано, сервер временно поместит файл в тайник вместо загрузки его в хранилище.",
+       "apihelp-upload-param-filesize": "Полны размер файла.",
        "apihelp-upload-param-offset": "Смещение блока в байтах.",
-       "apihelp-upload-param-chunk": "Кусок содержимого.",
-       "apihelp-upload-example-url": "Загрузить через URL",
-       "apihelp-userrights-description": "Изменить членство в группе пользователей.",
-       "apihelp-userrights-param-user": "Имя учётной записи.",
-       "apihelp-userrights-param-userid": "Идентификатор пользователя.",
-       "apihelp-userrights-param-add": "Добавить пользователя в эти группы.",
-       "apihelp-userrights-param-remove": "Удалить пользователя из этих групп.",
-       "apihelp-userrights-param-reason": "Причина изменений",
-       "apihelp-userrights-param-tags": "Изменить теги для подачи заявки на запись в журнале прав пользователей.",
+       "apihelp-upload-param-chunk": "Содержимое кусочка.",
+       "apihelp-upload-param-async": "Сделать операции над потенциально большими файлами асинхронными, когда это возможно.",
+       "apihelp-upload-param-checkstatus": "Только запросить статус загрузки для данного файлового ключа.",
+       "apihelp-upload-example-url": "Загрузка через URL.",
+       "apihelp-upload-example-filekey": "Завершение загрузки, провалившейся из-за предупреждений.",
+       "apihelp-userrights-param-user": "Имя участника.",
+       "apihelp-userrights-param-userid": "Идентификатор участника.",
+       "apihelp-userrights-param-add": "Добавить участника в эти группы, или, если они уже являются её членами, обновить дату истечения членства в этих группах.",
+       "apihelp-userrights-param-expiry": "Временная метка истечения. Может быть относительной (например, <kbd>5 months</kbd> или <kbd>2 weeks</kbd>) или абсолютной (например, <kbd>2014-09-18T12:34:56Z</kbd>). Если задана только одна временная метка, она будет использована для всех групп, переданных в параметре <var>$1add</var>. Используйте <kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd> или <kbd>never</kbd> для неистекаемой группы.",
+       "apihelp-userrights-param-remove": "Удалить участника из этих групп.",
+       "apihelp-userrights-param-reason": "Причина изменения.",
+       "apihelp-userrights-param-tags": "Изменить метки записи в журнале прав.",
+       "apihelp-userrights-example-user": "Добавить участника <kbd>FooBot</kbd> в группу <kbd>bot</kbd> и удалить его из групп <kbd>sysop</kbd> и <kbd>bureaucrat</kbd>.",
+       "apihelp-userrights-example-userid": "Добавить участника с идентификатором <kbd>123</kbd> в группу <kbd>bot</kbd> и удалить его из групп <kbd>sysop</kbd> и <kbd>bureaucrat</kbd>.",
+       "apihelp-userrights-example-expiry": "Добавить участника <kbd>SometimeSysop</kbd> в группу <kbd>sysop</kbd> на один месяц.",
+       "apihelp-validatepassword-param-password": "Проверяемый пароль.",
+       "apihelp-validatepassword-param-user": "Имя участника, при использовании во время создания аккаунта. Такого участника не должно существовать.",
+       "apihelp-validatepassword-param-email": "Электронная почта, при использовании во время создания аккаунта.",
+       "apihelp-validatepassword-param-realname": "Настоящее имя, при использовании во время создания аккаунта.",
+       "apihelp-validatepassword-example-1": "Проверка пароля <kbd>foobar</kbd> для текущего участника.",
+       "apihelp-validatepassword-example-2": "Проверка пароля <kbd>querty</kbd> для создаваемого участника <kbd>Example</kbd>.",
+       "apihelp-watch-param-title": "Название страницы. Используйте <var>$1titles</var> вместо этого.",
+       "apihelp-watch-param-unwatch": "Если установлено, страницы будут удалены из списка наблюдения, а не добавлены в него.",
        "apihelp-watch-example-watch": "Следить за страницей <kbd>Main Page</kbd>.",
        "apihelp-watch-example-unwatch": "Не следить за страницей <kbd>Main Page</kbd>.",
-       "apihelp-json-description": "Выходные данные в формате json.",
-       "apihelp-jsonfm-description": "Выходные данные в JSON формате (pretty-print in HTML).",
-       "apihelp-none-description": "Нечего выводить",
-       "apihelp-php-description": "Выходные данные в сериализованном формате PHP.",
-       "apihelp-phpfm-description": "Выходные данные в сериализованном формате PHP (pretty-print in HTML).",
-       "apihelp-xml-description": "Выходные данные в формате XML.",
+       "apihelp-watch-example-generator": "Следить за первым несколькими страницами основного пространства имён.",
+       "apihelp-format-example-generic": "Вернуть результат запроса в формате $1.",
+       "apihelp-format-param-wrappedhtml": "Вернуть хорошо читаемый HTML со связанными модулями ResourceLoader  в виде объекта JSON.",
+       "apihelp-json-param-callback": "Если задано, оборачивает вывод в вызов данной функции. Из соображении безопасности, вся пользовательская информация будет удалена.",
+       "apihelp-json-param-utf8": "Если задано, кодирует большинство (но не все) не-ASCII символов в UTF-8 вместо замены их на шестнадцатеричные коды. Применяется по умолчанию, когда <var>formatversion</var> не равно <kbd>1</kbd>.",
+       "apihelp-json-param-ascii": "Если задано, заменяет все не-ASCII-символы на шестнадцатеричные коды. Применяется по умолчанию, когда <var>formatversion</var> равно <kbd>1</kbd>.",
+       "apihelp-json-param-formatversion": "Формат вывода:\n;1: Обратно совместимый формат (логические значения в стиле XML, ключи <samp>*</samp> для узлов данных, и так далее).\n;2: Экспериментальный современный формат. Детали могут меняться!\n;latest: Использовать последний формат (сейчас <kbd>2</kbd>), может меняться без предупреждения.",
+       "apihelp-php-param-formatversion": "Формат вывода:\n;1: Обратно совместимый формат (логические значения в стиле XML, ключи <samp>*</samp> для узлов данных, и так далее).\n;2: Экспериментальный современный формат. Детали могут меняться!\n;latest: Использовать последний формат (сейчас <kbd>2</kbd>), может меняться без предупреждения.",
+       "apihelp-xml-param-xslt": "Если задано, добавляет названную страницу в качестве листа XSL. Значением должно быть название в пространстве имён {{ns:MediaWiki}}, заканчивающееся на <code>.xsl</code>.",
+       "apihelp-xml-param-includexmlnamespace": "Если задано, добавляет пространство имён XML.",
        "api-format-title": "Результат MediaWiki API",
+       "api-format-prettyprint-header": "Это HTML-представление формата $1. HTML хорош для отладки, но неудобен для практического применения.\n\nУкажите параметр <var>format</var> для изменения формата вывода. Для отображения не-HTML-представления формата $1, присвойте <kbd>format=$2</kbd>.\n\nСм. [[mw:Special:MyLanguage/API|полную документацию]] или [[Special:ApiHelp/main|справку API]] для получения дополнительной информации.",
+       "api-format-prettyprint-header-only-html": "Это HTML-представление для отладки, не рассчитанное на практическое применение.\n\nСм. [[mw:Special:MyLanguage/API|полную документацию]] или [[Special:ApiHelp/main|справку API]] для получения дополнительной информации.",
+       "api-format-prettyprint-header-hyperlinked": "Это HTML-представление формата $1. HTML хорош для отладки, но неудобен для практического применения.\n\nУкажите параметр <var>format</var> для изменения формата вывода. Для отображения не-HTML-представления формата $1, присвойте [$3 <kbd>format=$2</kbd>].\n\nСм. [[mw:API|полную документацию]] или [[Special:ApiHelp/main|справку API]] для получения дополнительной информации.",
+       "api-format-prettyprint-status": "Этот ответ будет возвращён HTTP статусом $1 $2.",
+       "api-login-fail-aborted": "Аутентификация требует взаимодействия с пользователем, что не поддерживается <kbd>action=login</kbd>. Чтобы авторизовываться через <kbd>action=login</kbd>, см. [[Special:BotPasswords]]. Для продолжения использования авторизации основного аккаунта см. <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
+       "api-login-fail-aborted-nobotpw": "Аутентификация требует взаимодействия с пользователем, что не поддерживается <kbd>action=login</kbd>. Для авторизации см. <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
+       "api-login-fail-badsessionprovider": "Авторизация при использовании $1 невозможна.",
+       "api-login-fail-sameorigin": "Авторизация при использовании правила ограничения домена невозможна.",
        "api-pageset-param-titles": "Список заголовков для работы.",
-       "api-pageset-param-pageids": "Список страниц идентификаторов для работы.",
+       "api-pageset-param-pageids": "Список идентификаторов страниц для работы.",
        "api-pageset-param-revids": "Список идентификаторов версий для работы.",
+       "api-pageset-param-generator": "Получить список страниц для работы, запустив указанный запрос-модуль.\n\n<strong>Примечание:</strong> названия параметров генераторов должны начинаться с «g», см. примеры.",
+       "api-pageset-param-redirects-generator": "Автоматически разрешать перенаправления в <var>$1titles</var>, <var>$1pageids</var> и <var>$1revids</var>, а также на страницах, возвращённых <var>$1generator</var>.",
+       "api-pageset-param-redirects-nogenerator": "Автоматически разрешать перенаправления в <var>$1titles</var>, <var>$1pageids</var> и <var>$1revids</var>.",
+       "api-pageset-param-converttitles": "Преобразовать заголовки в другой вариант, если это необходимо. Работает только если язык содержимого вики поддерживает преобразование вариантов. Языки, поддерживающие преобразование, включают в себя $1.",
        "api-help-title": "Справка MediaWiki API",
+       "api-help-lead": "Это автоматически сгенерированная страница документации MediaWiki API.\n\nДокументация и примеры: https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "Главный модуль",
-       "api-help-flag-deprecated": "Этот модуль устарел.",
+       "api-help-flag-deprecated": "Этот модуль не поддерживается.",
+       "api-help-flag-internal": "<strong>Этот модуль внутренний или нестабильный.</strong> Его операции могут измениться без предупреждения.",
        "api-help-flag-readrights": "Этот модуль требует прав на чтение.",
-       "api-help-flag-writerights": "Этот модуль требует права на запись.",
-       "api-help-flag-mustbeposted": "Этот модуль принимает только Post-запросы.",
+       "api-help-flag-writerights": "Этот модуль требует прав на запись.",
+       "api-help-flag-mustbeposted": "Этот модуль принимает только POST-запросы.",
        "api-help-flag-generator": "Этот модуль может быть использован в качестве генератора.",
        "api-help-source": "Источник: $1",
        "api-help-source-unknown": "Источник: <span class=\"apihelp-unknown\">unknown</span>",
        "api-help-license": "Лицензия: [[$1|$2]]",
-       "api-help-license-noname": "Лицензия: [[$1|See link]]",
+       "api-help-license-noname": "Лицензия: [[$1|см. ссылку]]",
        "api-help-license-unknown": "Лицензия: <span class=\"apihelp-unknown\">unknown</span>",
        "api-help-parameters": "Параметр{{PLURAL:$1||ы}}:",
-       "api-help-param-deprecated": "УÑ\81Ñ\82аÑ\80евÑ\88ий.",
+       "api-help-param-deprecated": "Ð\9dе Ð¿Ð¾Ð´Ð´ÐµÑ\80живаеÑ\82Ñ\81Ñ\8f.",
        "api-help-param-required": "Это обязательный параметр.",
        "api-help-datatypes-header": "Типы данных",
+       "api-help-datatypes": "Ввод в MediaWiki должен быть NFC-нормализованным UTF-8. MediaWiki может попытаться преобразовать другой ввод, но это приведёт к провалу некоторых операций (таких, как [[Special:ApiHelp/edit|редактирование]] со сверкой MD5).\n\nНекоторые типы параметров в запросах API требуют дополнительных пояснений:\n;логический\n:Логические параметры работают как флажки (checkboxes) в HTML: если параметр задан, независимо от его значения, он воспринимается за истину. Для передачи ложного значения просто опустите параметр.\n;временные метки\n:Временные метки могут быть заданы в нескольких форматах. Рекомендуемым является дата и время ISO 8601. Всё время считается в UTC, любые включённые часовые пояса игнорируются.\n:* Дата и время ISO 8601: <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>Z</kbd> (знаки препинания и <kbd>Z</kbd> необязательны)\n:* Дата и время ISO 8601 с (игнорируемой) дробной частью секунд: <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>.<var>00001</var>Z</kbd> (дефисы, двоеточия и <kbd>Z</kbd> необязательны)\n:* Формат MediaWiki: <kbd><var>2001</var><var>01</var><var>15</var><var>14</var><var>56</var><var>00</var></kbd>\n:* Общий числовой формат: <kbd><var>2001</var>-<var>01</var>-<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd> (необязательный часовой пояс <kbd>GMT</kbd>, <kbd>+<var>##</var></kbd> или <kbd>-<var>##</var></kbd> игнорируется)\n:* Формат EXIF: <kbd><var>2001</var>:<var>01</var>:<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Формат RFC 2822 (часовой пояс может быть опущен): <kbd><var>Mon</var>, <var>15</var> <var>Jan</var> <var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Формат RFC 850 (часовой пояс может быть опущен): <kbd><var>Monday</var>, <var>15</var>-<var>Jan</var>-<var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Формат ctime языка программирования C: <kbd><var>Mon</var> <var>Jan</var> <var>15</var> <var>14</var>:<var>56</var>:<var>00</var> <var>2001</var></kbd>\n:* Количество секунд, прошедших с 1970-01-01T00:00:00Z, в виде челого числа с от 1 до 13 знаками (исключая <kbd>0</kbd>)\n:* Строка <kbd>now</kbd>\n;альтернативный разделитель значений\n:Параметры, принимающие несколько значений, обычно отправляются со значениями, разделёнными с помощью символа пайпа, например, <kbd>param=value1|value2</kbd> или <kbd>param=value1%7Cvalue2</kbd>. Если значение должно содержать символ пайпа, используйте U+001F (Unit Separator) в качестве разделителя ''и'' добавьте в начало значения U+001F, например, <kbd>param=%1Fvalue1%1Fvalue2</kbd>.",
        "api-help-param-type-limit": "Тип: целое число или <kbd>max</kbd>",
-       "api-help-param-type-integer": "Тип: {{PLURAL:$1|1=integer|2=list of integers}}",
-       "api-help-param-type-boolean": "Тип: двоичный ([[Special:ApiHelp/main#main/datatypes|details]])",
-       "api-help-param-type-timestamp": "Тип: {{PLURAL:$1|1=timestamp|2=list of timestamps}} ([[Special:ApiHelp/main#main/datatypes|allowed formats]])",
-       "api-help-param-type-user": "Тип: {{PLURAL:$1|1=user name|2=list of user names}}",
-       "api-help-param-list": "{{PLURAL:$1|1=Одно из следующих значений|2=Значения (разделённые с помощью <kbd>{{!}}</kbd> или [[Special:ApiHelp/main#main/datatypes|альтернативного варианта]])}}: $2",
-       "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=Должен быть пустым|может быть пустым, или $2}}",
-       "api-help-param-limit": "Не более чем $1 разрешено.",
-       "api-help-param-limit2": "Разрешено не более чем $1 ($2 для ботов).",
-       "api-help-param-integer-min": "{{PLURAL:$1|1=value|2=values}} должен быть не меньше чем $2.",
-       "api-help-param-integer-max": "{{PLURAL:$1|1=value|2=values}} должен быть не больше чем $3.",
-       "api-help-param-integer-minmax": "{{PLURAL:$1|1=value|2=values}} должен быть между $2 и $3.",
-       "api-help-param-multi-separate": "Разделяйте значения с помощью <kbd>|</kbd> или [[Special:ApiHelp/main#main/datatypes|альтернативного варианта]].",
-       "api-help-param-multi-max": "Максимальное количество значений должно быть {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} для ботов).",
+       "api-help-param-type-integer": "Тип: {{PLURAL:$1|1=целое число|2=список целых чисел}}",
+       "api-help-param-type-boolean": "Тип: логический ([[Special:ApiHelp/main#main/datatypes|подробнее]])",
+       "api-help-param-type-timestamp": "Тип: {{PLURAL:$1|1=временная метка|2=список временных меток}} ([[Special:ApiHelp/main#main/datatypes|разрешённые форматы]])",
+       "api-help-param-type-user": "Тип: {{PLURAL:$1|1=имя участника|2=список имён участников}}",
+       "api-help-param-list": "{{PLURAL:$1|1=Одно из следующих значений|2=Значения (разделённые с помощью <kbd>{{!}}</kbd> или [[Special:ApiHelp/main#main/datatypes|альтернативного разделителя]])}}: $2",
+       "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=Должен быть пустым|Может быть пустым или $2}}",
+       "api-help-param-limit": "Разрешено не более $1.",
+       "api-help-param-limit2": "Разрешено не более $1 ($2 для ботов).",
+       "api-help-param-integer-min": "{{PLURAL:$1|1=Значение должно|2=Значения должны}} быть не меньше $2.",
+       "api-help-param-integer-max": "{{PLURAL:$1|1=Значение должно|2=Значения должны}} быть не больше $3.",
+       "api-help-param-integer-minmax": "{{PLURAL:$1|1=Значение должно|2=Значения должны}} быть между $2 и $3.",
+       "api-help-param-upload": "Должно быть отправлено как файл с использованием multipart/form-data.",
+       "api-help-param-multi-separate": "Разделяйте значения с помощью <kbd>|</kbd> или [[Special:ApiHelp/main#main/datatypes|альтернативного разделителя]].",
+       "api-help-param-multi-max": "Максимально разрешённое количество значений — {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} для ботов).",
+       "api-help-param-multi-all": "Для указания всех значений, используйте <kbd>$1</kbd>.",
        "api-help-param-default": "По умолчанию: $1",
        "api-help-param-default-empty": "По умолчанию: <span class=\"apihelp-empty\">(пусто)</span>",
-       "api-help-param-continue": "Когда доступно больше результатов, использовать этот чтобы продолжить.",
+       "api-help-param-token": "Токен «$1», полученный из [[Special:ApiHelp/query+tokens|action=query&meta=tokens]]",
+       "api-help-param-token-webui": "Для обратной совместимости, токен, используемый в веб-интерфейсе, также применим.",
+       "api-help-param-disabled-in-miser-mode": "Отключено из-за [[mw:Special:MyLanguage/Manual:$wgMiserMode|жадного режима]].",
+       "api-help-param-limited-in-miser-mode": "<strong>Примечание:</strong> Из-за [[mw:Special:MyLanguage/Manual:$wgMiserMode|жадного режима]], использование этого может привести к меньшему, чем <var>$1limit</var>, числу результатов перед продолжением; в крайнем случае, может вернуться и ноль результатов.",
+       "api-help-param-direction": "В каком порядке перечислять:\n;newer: Начать с самых старых. Обратите внимание: $1start должно быть раньше $1end.\n;older: Начать с самых новых (по умолчанию). Обратите внимание: $1start должно быть позже $1end.",
+       "api-help-param-continue": "Когда доступно больше результатов, используйте это для продолжения.",
        "api-help-param-no-description": "<span class=\"apihelp-empty\">(описание отсутствует)</span>",
        "api-help-examples": "Пример{{PLURAL:$1||ы}}:",
        "api-help-permissions": "{{PLURAL:$1|Разрешение|Разрешения}}:",
-       "api-help-permissions-granted-to": "{{PLURAL:$1|Granted to}}: $2",
-       "apierror-integeroutofrange-abovemax": "<var>$1</var> не может быть более $2 (на $3) для пользователей.",
+       "api-help-permissions-granted-to": "{{PLURAL:$1|Гарантируется}}: $2",
+       "api-help-right-apihighlimits": "Использовать высокие лимиты в запросах API (медленные запросы: $1, быстрые запросы: $2). Лимиты для медленных запросов также применимы к параметрам со множеством значений.",
+       "api-help-open-in-apisandbox": "<small>[открыть в песочнице]</small>",
+       "api-help-authmanager-general-usage": "Стандартная процедура использования этого модуля такова:\n# Запрос полей, доступных из <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> с <kbd>amirequestsfor=$4</kbd>, и токена <kbd>$5</kbd> из <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.\n# Предоставление полей пользователю и получение его данных.\n# Запрос к этому модулю, содержащий <var>$1returnurl</var> или аналогичное поле.\n# Проверка поля <samp>status</samp> ответа.\n#* Если вы получили <samp>PASS</samp> или <samp>FAIL</samp>, вы закончили. Операция либо завершилась успехом, либо нет.\n#* Если вы получили <samp>UI</samp>, предоставьте новые поля польззователю и получите новые данные. Затем совершите новый запрос с параметром <var>$1continue</var> и новыми полями, после чего повторите пункт 4.\n#* Если вы получили <samp>REDIRECT</samp>, отправьте пользователя на <samp>redirecttarget</samp> и подождите возвращения на <var>$1returnurl</var>. Затем совершите запрос к этому модулю с параметром <var>$1continue</var> и всеми полями, содержащимися в возвращённой ссылке, и повторите пункт 4.\n#* Если вы получили <samp>RESTART</samp>, это означает, что аутентификация работает, но мы не привязали пользовательский аккаунт. Вы можете рассматривать это как <samp>UI</samp> или <samp>FAIL</samp>.",
+       "api-help-authmanagerhelper-requests": "Использовать только эти аутентификационные запросы, с <samp>id</samp>, возвращённом из <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> с <kbd>amirequestsfor=$1</kbd>, или из предыдущего ответа этого модуля.",
+       "api-help-authmanagerhelper-request": "Использовать этот аутентификационный запрос, с <samp>id</samp>, возвращённом из <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> с <kbd>amirequestsfor=$1</kbd>.",
+       "api-help-authmanagerhelper-messageformat": "Формат, используемый для возвращаемых сообщений.",
+       "api-help-authmanagerhelper-mergerequestfields": "Слить поля информации со всех аутентификационных запросов в один массив.",
+       "api-help-authmanagerhelper-preservestate": "Сохранить состояние с предыдущей провалившейся попытки авторизации, если возможно.",
+       "api-help-authmanagerhelper-returnurl": "Вернуть ссылку для стороннего процесса аутентификации, должна быть абсолютной. Либо этот параметр, либо <var>$1continue</var>, обязателен.\n\nПосле получения ответа <samp>REDIRECT</samp>, вы, как правило, должны открыть в браузере или вэб-просмотрщике указанную в <samp>redirecttarget</samp> ссылку для продолжения стороннего процесса аутентификации. По завершению, сторонний сервис отошлёт браузеру или веб-просмотрщику эту ссылку. Вы должны извлечь все параметры из ссылки и отослать их в параметр <var>$1continue</var> запроса к этому модулю.",
+       "api-help-authmanagerhelper-continue": "Этот запрос — продолжение после предшествующего ответа <samp>UI</samp> или <samp>REDIRECT</samp>. Либо этот параметр, либо <var>$1returnurl</var>, обязателен.",
+       "api-help-authmanagerhelper-additional-params": "Этот модуль принимает дополнительные параметры в зависимости от доступных аутентификационных запросов. Используйте <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> с <kbd>amirequestsfor=$1</kbd> (или предыдущий ответ этого модуля, если доступен) для определения, какие запросы доступны и какие поля они используют.",
+       "apierror-allimages-redirect": "Используйте <kbd>gaifilterredir=nonredirects</kbd> вместо <var>redirects</var> при использовании <kbd>allimages</kbd> в качестве генератора.",
+       "apierror-allpages-generator-redirects": "Используйте <kbd>gaifilterredir=nonredirects</kbd> вместо <var>redirects</var> при использовании <kbd>allpages</kbd> в качестве генератора.",
+       "apierror-appendnotsupported": "Невозможно дописать страницы, использующие модель содержимого $1.",
+       "apierror-articleexists": "Статья, которую вы пытаетесь создать, уже создана.",
+       "apierror-assertbotfailed": "Проверка того, что у участника есть право <code>bot</code>, провалилась.",
+       "apierror-assertnameduserfailed": "Проверка того, что участник — «$1», провалилась.",
+       "apierror-assertuserfailed": "Проверка того, что участник авторизован, провалилась.",
+       "apierror-autoblocked": "Ваш IP-адрес был автоматически заблокирован, потому что он был использован заблокированным участником.",
+       "apierror-badconfig-resulttoosmall": "Значение <code>$wgAPIMaxResultSize</code> этой вики слишком мало, чтобы вместить базовую информацию о результате.",
+       "apierror-badcontinue": "Некорректный параметр continue. Вы должны передать значение, возвращённое предыдущим запросом.",
+       "apierror-baddiff": "Сравнение версий не может быть проведено. Одна или обе версии не существуют или у вас не достаточно прав чтобы просматривать их.",
+       "apierror-baddiffto": "<var>$1diffto</var> должно быть неотрицательным числом, <kbd>prev</kbd>, <kbd>next</kbd> или <kbd>cur</kbd>.",
+       "apierror-badformat-generic": "Запрашиваемый формат $1 не поддерживается моделью содержимого $2.",
+       "apierror-badformat": "Запрашиваемый формат $1 не поддерживается моделью содержимого $2, используемой $3.",
+       "apierror-badgenerator-notgenerator": "Модуль <kbd>$1</kbd> не может быть использован в качестве генератора.",
+       "apierror-badgenerator-unknown": "Неизвестный <kbd>generator=$1</kbd>.",
+       "apierror-badip": "Параметр IP некорректен.",
+       "apierror-badmd5": "Предоставленный хэш MD5 был некорректным.",
+       "apierror-badmodule-badsubmodule": "У модуля <kbd>$1</kbd> нет подмодуля «$2».",
+       "apierror-badmodule-nosubmodules": "У модуля <kbd>$1</kbd> нет подмодулей.",
+       "apierror-badparameter": "Некорректное значение параметра <var>$1</var>.",
+       "apierror-badquery": "Некорректный запрос.",
+       "apierror-badtimestamp": "Некорректное значение «$2» параметра временной метки <var>$1</var>.",
+       "apierror-badtoken": "Некорректный токен CSRF.",
+       "apierror-badupload": "Параметр загрузки файла <var>$1</var> не является загрузкой файла; убедитесь, что вы используете <code>multipart/form-data</code> в вашем POST запросе и включаете название файла в заголовок <code>Content-Disposition</code>.",
+       "apierror-badurl": "Некорректное значения «$2» параметра ссылки <var>$1</var>.",
+       "apierror-baduser": "Некорректное значение «$2» параметра участника <var>$1</var>.",
+       "apierror-badvalue-notmultivalue": "Разделение значений с помощью U+001F может быть использовано только в параметрах, принимающих несколько значений.",
+       "apierror-bad-watchlist-token": "Предоставлен некорректный токен списка наблюдения. Пожалуйста, установите корректный токен в [[Special:Preferences]].",
+       "apierror-blockedfrommail": "Отправка электронной почты была для вас заблокирована.",
+       "apierror-blocked": "Редактирование было для вас заблокировано.",
+       "apierror-botsnotsupported": "Этот интерфейс не поддерживается для ботов.",
+       "apierror-cannot-async-upload-file": "Параметры <var>async</var> и <var>file</var> не могут применяться вместе. Если вы хотите ассинхронно обработать загруженный файл, сначала загрузите его в тайник (используя параметр <var>stash</var>), а затем опубликуйте этот файл ассинхронно (используя параметры <var>filekey</var> и <var>async</var>).",
+       "apierror-cannotreauthenticate": "Это действие недоступно, так как ваша личность не может быть подтверждена.",
+       "apierror-cannotviewtitle": "У вас нет прав на просмотр $1.",
+       "apierror-cantblock-email": "У вас нет прав блокировать участникам отправку электронной почты через интерфейс вики.",
+       "apierror-cantblock": "У вас нет прав блокировать участников.",
+       "apierror-cantchangecontentmodel": "У вас нет прав изменять модель содержимого страницы.",
+       "apierror-canthide": "У вас нет прав скрывать имена участников из журнала блокировок.",
+       "apierror-cantimport-upload": "У вас нет прав импортировать загруженные страницы.",
+       "apierror-cantimport": "У вас нет прав импортировать страницы.",
+       "apierror-cantoverwrite-sharedfile": "Целевой файл существует в общем репозитории и у вас нет прав перезаписать его.",
+       "apierror-cantsend": "Вы не авторизованы, ваш электронный адрес не подтверждён или у вас нет прав на отправку электронной почты другим участникам, поэтому вы не можете отправить электронное письмо.",
+       "apierror-cantundelete": "Невозможно восстановить: возможно, запрашиваемые версии не существуют или уже были восстановлены.",
+       "apierror-changeauth-norequest": "Попытка создать запрос правки провалилась.",
+       "apierror-chunk-too-small": "Минимальный размер кусочка — $1 {{PLURAL:$1|байт|байта|байтов}}, если кусочек не является последним.",
+       "apierror-cidrtoobroad": "Диапазоны $1 CIDR, шире /$2, не разрешены.",
+       "apierror-compare-no-title": "Невозможно выполнить преобразование перед записью правки без заголовка. Попробуйте задать <var>fromtitle</var> или <var>totitle</var>.",
+       "apierror-compare-relative-to-nothing": "Нет версии 'from', к которой относится <var>torelative</var>.",
+       "apierror-contentserializationexception": "Сериализация содержимого провалилась: $1",
+       "apierror-contenttoobig": "Предоставленное вами содержимое превышает максимальный размер страницы в $1 {{PLURAL:$1|килобайт|килобайта|килобайтов}}.",
+       "apierror-copyuploadbaddomain": "Загрузка по ссылке недоступна с этого домена.",
+       "apierror-copyuploadbadurl": "Загрузка по этой ссылке недоступна.",
+       "apierror-create-titleexists": "Существующие названия не могут быть защищены с помощью <kbd>create</kbd>.",
+       "apierror-csp-report": "Ошибка при обработке отчёта CSP: $1.",
+       "apierror-databaseerror": "[$1] Ошибка запроса к базе данных.",
+       "apierror-deletedrevs-param-not-1-2": "Параметр <var>$1</var> не может быть использован в режимах 1 и 2.",
+       "apierror-deletedrevs-param-not-3": "Параметр <var>$1</var> не может быть использован в третьем режиме.",
+       "apierror-emptynewsection": "Создание пустых секций невозможно.",
+       "apierror-emptypage": "Создание новых пустых страниц не разрешено.",
+       "apierror-exceptioncaught": "[$1] Поймано исключение: $2",
+       "apierror-filedoesnotexist": "Файл не существует.",
+       "apierror-fileexists-sharedrepo-perm": "Целевой файл существует в общем репозитории. Используйте параметр <var>ignorewarnings</var>, чтобы перезаписать его.",
+       "apierror-filenopath": "Невозможно получить локальный путь к файлу.",
+       "apierror-filetypecannotberotated": "Этот тип файлов не может быть повёрнут.",
+       "apierror-formatphp": "Этот ответ не может быть представлен с использованием <kbd>format=php</kbd>. См. https://phabricator.wikimedia.org/T68776.",
+       "apierror-imageusage-badtitle": "Название для модуля <kbd>$1</kbd> должно быть файлом.",
+       "apierror-import-unknownerror": "Неизвестная ошибка при импорте: $1.",
+       "apierror-integeroutofrange-abovebotmax": "<var>$1</var> не может быть больше $2 (присвоено $3) для ботов и администраторов.",
+       "apierror-integeroutofrange-abovemax": "<var>$1</var> не может быть больше $2 (присвоено $3) для участников.",
+       "apierror-integeroutofrange-belowminimum": "<var>$1</var> не может быть меньше $2 (присвоено $3).",
+       "apierror-invalidcategory": "Введённое вами название категории некорректно.",
+       "apierror-invalid-chunk": "Сумма смещения и размера текущего кусочка превышает заявленный размер файла.",
+       "apierror-invalidexpiry": "Некорректное время истечения «$1».",
+       "apierror-invalid-file-key": "Некорректный ключ файла.",
+       "apierror-invalidlang": "Некорректный код языка для параметра <var>$1</var>.",
        "apierror-invalidoldimage": "Параметр <var>oldimage</var> имеет недопустимый формат.",
-       "apierror-nosuchuserid": "Нет пользователя с ID $1.",
-       "apierror-pagelang-disabled": "Меняется язык страницы не допускается в этой Вики.",
-       "apierror-protect-invalidaction": "Недопустимый тип защиты \"$1\".",
-       "apierror-systemblocked": "Вы были заблокированы автоматически Медиавики.",
-       "apierror-unknownformat": "Неизвестный Формат \"$1\".",
-       "apierror-urlparamnormal": "Не могли нормализовать параметры изображения для $1.",
+       "apierror-invalidparammix-cannotusewith": "Параметр <kbd>$1</kbd> не может быть использован одновременно с <kbd>$2</kbd>.",
+       "apierror-invalidparammix-mustusewith": "Параметр <kbd>$1</kbd> может быть использован только одновременно с <kbd>$2</kbd>.",
+       "apierror-invalidparammix-parse-new-section": "<kbd>section=new</kbd> не может быть совмещено с параметрами <var>oldid</var>, <var>pageid</var> или <var>page</var>. Пожалуйста, используйте <var>title</var> и <var>text</var>.",
+       "apierror-invalidparammix": "{{PLURAL:$2|Параметры}} $1 не могут быть использованы одновременно.",
+       "apierror-invalidsection": "Параметр <var>section</var> должен быть корректным идентификатором секции или <kbd>new</kbd>.",
+       "apierror-invalidsha1base36hash": "Предоставленный хэш SHA1Base36 некорректен.",
+       "apierror-invalidsha1hash": "Предоставленный хэш SHA1 некорректен.",
+       "apierror-invalidtitle": "Плохой заголовок «$1».",
+       "apierror-invalidurlparam": "Некорректное значение <var>$1urlparam</var> (<kbd>$2=$3</kbd>).",
+       "apierror-invaliduser": "Некорректное имя участника «$1».",
+       "apierror-invaliduserid": "Некорректный идентификатор участника <var>$1</var>.",
+       "apierror-maxlag-generic": "Ожидание сервера базы данных: $1 {{PLURAL:$1|секунда|секунды|секунд}} задержки.",
+       "apierror-maxlag": "Ожидание $2: $1 {{PLURAL:$1|секунда|секунды|секунд}} задержки.",
+       "apierror-mimesearchdisabled": "Поиск по MIME отключен в жадном режиме.",
+       "apierror-missingcontent-pageid": "Отсутствует содержимое страницы с идентификатором $1.",
+       "apierror-missingcontent-revid": "Отсутствует содержимое версии с идентификатором $1.",
+       "apierror-missingparam-at-least-one-of": "{{PLURAL:$2|Параметр|Как минимум один из параметров}} $1 обязателен.",
+       "apierror-missingparam-one-of": "{{PLURAL:$2|Параметр|Один из параметров}} $1 обязателен.",
+       "apierror-missingparam": "Параметр <var>$1</var> должен быть задан.",
+       "apierror-missingrev-pageid": "Нет текущей версии страницы с идентификатором $1.",
+       "apierror-missingrev-title": "Нет текущей версии для заголовка $1.",
+       "apierror-missingtitle-createonly": "Несуществующие названия страниц могут быть защищены только с помощью <kbd>create</kbd>.",
+       "apierror-missingtitle": "Указанная вами страница не существует.",
+       "apierror-missingtitle-byname": "Страница $1 не существует.",
+       "apierror-moduledisabled": "Модуль <kbd>$1</kbd> был отключён.",
+       "apierror-multival-only-one-of": "Параметру <var>$1</var> может быть присвоено только {{PLURAL:$3|значение|одно из значений}} $2.",
+       "apierror-multival-only-one": "Параметру <var>$1</var> может быть присвоено только одно значение.",
+       "apierror-multpages": "Параметр <var>$1</var> может быть применён только к одной странице.",
+       "apierror-mustbeloggedin-changeauth": "Вы должны быть авторизованы для смены аутентификационных данных.",
+       "apierror-mustbeloggedin-generic": "Вы должны быть авторизованы.",
+       "apierror-mustbeloggedin-linkaccounts": "Вы должны быть авторизованы для привязывания аккаунтов.",
+       "apierror-mustbeloggedin-removeauth": "Вы должны быть авторизованы для удаления аутентификационных данных.",
+       "apierror-mustbeloggedin-uploadstash": "Тайник загрузки (upload stash) доступен только для авторизованных участников.",
+       "apierror-mustbeloggedin": "Вы должны быть авторизованы в $1.",
+       "apierror-mustbeposted": "Модуль <kbd>$1</kbd> требует запроса POST.",
+       "apierror-mustpostparams": "{{PLURAL:$2|Следующий параметр был найден|Следующие параметры были найдены}} в строке запроса, но {{PLURAL:$2|должен|должны}} находиться в теле POST: $1.",
+       "apierror-noapiwrite": "Редактирование этой вики посредством API отключено. Убедитесь, что инструкция <code>$wgEnableWriteAPI=true;</code> включена в файл <code>LocalSettings.php</code> вики.",
+       "apierror-nochanges": "Никаких правок запрошено не было.",
+       "apierror-nodeleteablefile": "Нет такой старой версии файла.",
+       "apierror-no-direct-editing": "Прямое редактирование посредством API не поддерживается моделью содержимого $1, используемой $2.",
+       "apierror-noedit-anon": "Анонимные участники не могут редактировать страницы.",
+       "apierror-noedit": "У вас нет прав на редактирование страниц.",
+       "apierror-noimageredirect-anon": "Анонимные участники не могут создавать перенаправления на изображения.",
+       "apierror-noimageredirect": "У вас нет прав на создание перенаправлений на изображения.",
+       "apierror-nosuchlogid": "Нет записей журналов с идентификатором $1.",
+       "apierror-nosuchpageid": "Нет страницы с идентификатором $1.",
+       "apierror-nosuchrcid": "Нет недавней правки с идентификатором $1.",
+       "apierror-nosuchrevid": "Нет версии с идентификатором $1.",
+       "apierror-nosuchsection": "Нет секции $1.",
+       "apierror-nosuchsection-what": "Нет секции $1 в $2.",
+       "apierror-nosuchuserid": "Нет участника с идентификатором $1.",
+       "apierror-notarget": "Вы не указали корректной цели этого действия.",
+       "apierror-notpatrollable": "Версия r$1 не может быть отпатрулирована, так как она слишком стара.",
+       "apierror-nouploadmodule": "Модуль загрузки не задан.",
+       "apierror-opensearch-json-warnings": "Предупреждения не могут быть представлены в формате OpenSearch JSON.",
+       "apierror-pagecannotexist": "Данное пространство имён не может содержать эти страницы.",
+       "apierror-pagedeleted": "Страница была удалена с тех пор, как вы запросили её временную метку.",
+       "apierror-pagelang-disabled": "Смена языка страницы не разрешена в этой вики.",
+       "apierror-paramempty": "Параметр <var>$1</var> не может быть пустым.",
+       "apierror-parsetree-notwikitext": "<kbd>prop=parsetree</kbd> разрешён только для вики-текстового содержимого.",
+       "apierror-parsetree-notwikitext-title": "<kbd>prop=parsetree</kbd> разрешён только для вики-текстового содержимого. $1 использует модель содержимого $2.",
+       "apierror-pastexpiry": "Время окончания «$1» находится в прошлом.",
+       "apierror-permissiondenied": "У вас нет прав на $1.",
+       "apierror-permissiondenied-generic": "Доступ запрещён.",
+       "apierror-permissiondenied-patrolflag": "Вам нужно право <code>patrol</code> или <code>patrolmarks</code> для запроса статуса патрулирования.",
+       "apierror-permissiondenied-unblock": "У вас нет прав снимать блокировку с участников.",
+       "apierror-prefixsearchdisabled": "Поиск по префиксу отключен в жадном режиме.",
+       "apierror-promised-nonwrite-api": "Заголовок HTTP <code>Promise-Non-Write-API-Action</code> не может быть передан в записывающие модули API.",
+       "apierror-protect-invalidaction": "Недопустимый тип защиты «$1».",
+       "apierror-protect-invalidlevel": "Недопустимый уровень защиты «$1».",
+       "apierror-ratelimited": "Вы превысили ваше ограничение скорости. Пожалуйста, подождите некоторое время и попробуйте снова.",
+       "apierror-readapidenied": "Вам нужны права на чтение для использования этого модуля.",
+       "apierror-readonly": "Эта вики находится в режиме «только для чтения».",
+       "apierror-reauthenticate": "Вы ещё не авторизовывались в этой сессии, пожалуйста, переавторизуйтесь.",
+       "apierror-redirect-appendonly": "Вы попытались отредактировать страницу в режиме следования по перенаправлениям, который должен быть использован в связке с <kbd>section=new</kbd>, <var>prependtext</var> или <var>appendtext</var>.",
+       "apierror-revdel-mutuallyexclusive": "Одно и то же поле не может быть использовано и в <var>hide</var>, и в <var>show</var>.",
+       "apierror-revdel-needtarget": "Для этого типа RevDel требуется указание целевого названия страницы.",
+       "apierror-revdel-paramneeded": "Как минимум одно значение требуется в <var>hide</var> и/или <var>show</var>.",
+       "apierror-revisions-badid": "Не было найдено версий по параметру <var>$1</var>.",
+       "apierror-revisions-norevids": "Параметр <var>revids</var> не может быть использован с настройками списка  (<var>$1limit</var>, <var>$1startid</var>, <var>$1endid</var>, <kbd>$1dir=newer</kbd>, <var>$1user</var>, <var>$1excludeuser</var>, <var>$1start</var> и <var>$1end</var>).",
+       "apierror-revisions-singlepage": "Параметры <var>titles</var> и <var>pageids</var> и генераторы используются для обработки множества страниц, но параметры <var>$1limit</var>, <var>$1startid</var>, <var>$1endid</var>, <kbd>$1dir=newer</kbd>, <var>$1user</var>, <var>$1excludeuser</var>, <var>$1start</var> и <var>$1end</var> могут быть применены только к одной странице.",
+       "apierror-revwrongpage": "r$1 не является версией $2.",
+       "apierror-searchdisabled": "Поисковый параметр <var>$1</var> отключён.",
+       "apierror-sectionreplacefailed": "Невозможно слить обновлённую секцию.",
+       "apierror-sectionsnotsupported": "Разбиение на секции не поддерживается моделью содержимого $1.",
+       "apierror-sectionsnotsupported-what": "Разбиение на секции не поддерживается $1.",
+       "apierror-show": "Некорректный параметр — вручную исключённые значения не могут быть обработаны.",
+       "apierror-siteinfo-includealldenied": "Невозможно отобразить информацию о всех серверах, если <var>$wgShowHostNames</var> не истинно.",
+       "apierror-sizediffdisabled": "Подсчёт разницы размеров отключён в жадном режиме.",
+       "apierror-spamdetected": "Ваша правка была отклонена, так как содержит спам: <code>$1</code>.",
+       "apierror-specialpage-cantexecute": "У вас нет прав, чтобы просматривать результаты этой служебной страницы.",
+       "apierror-stashedfilenotfound": "Невозможно найти файл в тайнике: $1.",
+       "apierror-stashedit-missingtext": "Не найдено содержимого тайника для данного хэша.",
+       "apierror-stashfailed-complete": "Загрузка по кусочкам уже завершена, проверьте статус для получения подробной информации.",
+       "apierror-stashfailed-nosession": "Не найдено сессии загрузки по кусочкам с заданным ключом.",
+       "apierror-stashfilestorage": "Невозможно сохранить загрузку в тайник: $1",
+       "apierror-stashinvalidfile": "Некорректный файл в тайнике.",
+       "apierror-stashnosuchfilekey": "Нет такого ключа файла: $1.",
+       "apierror-stashpathinvalid": "Ключ файла относится к некорректному формату или сам некорректен: $1.",
+       "apierror-stashwrongowner": "Некорректный владелец: $1",
+       "apierror-stashzerolength": "Файл имеет нулевую длину и не может быть сохранён в тайник: $1",
+       "apierror-systemblocked": "Вы были заблокированы автоматически MediaWiki.",
+       "apierror-templateexpansion-notwikitext": "Раскрытие шаблонов разрешено только для вики-текстового содержимого. $1 использует модель содержимого $2.",
+       "apierror-toofewexpiries": "Задано $1 {{PLURAL:$1|временная метка|временные метки|временных меток}} истечения, необходимо $2.",
+       "apierror-unknownaction": "Заданное действие, <kbd>$1</kbd>, не распознано.",
+       "apierror-unknownerror-editpage": "Неизвестная ошибка EditPage: $1.",
+       "apierror-unknownerror-nocode": "Неизвестная ошибка.",
+       "apierror-unknownerror": "Неизвестная ошибка: «$1».",
+       "apierror-unknownformat": "Нераспознанный формат «$1».",
+       "apierror-unrecognizedparams": "{{PLURAL:$2|Нераспознанный параметр|Нераспознанные параметры}}: $1",
+       "apierror-unrecognizedvalue": "Нераспознанное значение параметра <var>$1</var>: $2.",
+       "apierror-unsupportedrepo": "Локальное хранилище файлов не поддерживает запрос всех изображений.",
+       "apierror-upload-filekeyneeded": "Необходимо задать <var>filekey</var>, если <var>offset</var> не ноль.",
+       "apierror-upload-filekeynotallowed": "Невозможно обработать <var>filekey</var>, если <var>offset</var> равен 0.",
+       "apierror-upload-inprogress": "Процесс загрузки из тайника уже запущен.",
+       "apierror-upload-missingresult": "Нет результатов данных статуса.",
+       "apierror-urlparamnormal": "Невозможно нормализовать параметры изображения для $1.",
+       "apierror-writeapidenied": "У вас нет прав на редактирование этой вики через API.",
+       "apiwarn-alldeletedrevisions-performance": "Для повышения производительности, при генерировании заголовков установите <kbd>$1dir=newer</kbd>.",
+       "apiwarn-badurlparam": "Невозможно распарсить $2 из <var>$1urlparam</var>. Используется только ширина и высота.",
+       "apiwarn-badutf8": "Значение, переданное <var>$1</var>, содержит некорректные или ненормализованные данные. Текстовые данные должны быть корректным NFC-нормализованным Юникодом без символов управления C0, кроме HT (\\t), LF (\\n) и CR (\\r).",
+       "apiwarn-checktoken-percentencoding": "Проверьте, что символы вроде «+» в токене корректно закодированы %-последовательностями в ссылке.",
+       "apiwarn-compare-nocontentmodel": "Модель содержимого не может быть определена, предполагается $1.",
+       "apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd> не поддерживается. Пожалуйста, вместо него используйте <kbd>prop=deletedrevisions</kbd> или <kbd>list=alldeletedrevisions</kbd>.",
+       "apiwarn-deprecation-expandtemplates-prop": "Поскольку никакие значения не были указаны в параметре <var>prop</var>, был использован наследованный формат. Этот формат является устаревшим, и в будущем параметру <var>prop</var> будет присвоено значение по умолчанию, что приведёт к повсеместному использованию нового формата.",
+       "apiwarn-deprecation-httpsexpected": "Использован HTTP, где ожидался HTTPS.",
+       "apiwarn-deprecation-login-botpw": "Вход в основной аккаунт через <kbd>action=login</kbd> не поддерживается и может быть отключен без предупреждения. Для продолжения авторизации с <kbd>action=login</kbd>, см.\n[[Special:BotPasswords]]. Для безопасного продолжения использования входа в основной аккаунт, см. <kbd>action=clientlogin</kbd>.",
+       "apiwarn-deprecation-login-nobotpw": "Вход в основной аккаунт через <kbd>action=login</kbd> не поддерживается и может быть отключен без предупреждения. Для безопасной авторизации, см. <kbd>action=clientlogin</kbd>.",
+       "apiwarn-deprecation-login-token": "Запрос токена через <kbd>action=login</kbd> не поддерживается. Вместо этого, см. <kbd>action=query&meta=tokens&type=login</kbd>.",
+       "apiwarn-deprecation-parameter": "Параметр <var>$1</var> не поддерживается.",
+       "apiwarn-deprecation-parse-headitems": "<kbd>prop=headitems</kbd> не поддерживается с MediaWiki 1.28. Используйте <kbd>prop=headhtml</kbd> при создании новых HTML документов, или <kbd>prop=modules|jsconfigvars</kbd> при обновлении документов на стороне клиента.",
+       "apiwarn-deprecation-purge-get": "Использование <kbd>action=purge</kbd> посредством GET не поддерживается. Используйте POST.",
+       "apiwarn-deprecation-withreplacement": "<kbd>$1</kbd> не поддерживается. Пожалуйста, используйте <kbd>$2</kbd>.",
+       "apiwarn-difftohidden": "Невозможно сравнить с r$1: содержимое скрыто.",
+       "apiwarn-errorprinterfailed": "Сборщик ошибок упал. Будет совершена повторная попытка без параметров.",
+       "apiwarn-errorprinterfailed-ex": "Сборщик ошибок упал (будет совершена повторная попытка без параметров): $1",
+       "apiwarn-invalidcategory": "«$1» не является категорией.",
+       "apiwarn-invalidtitle": "«$1» не является некорректным заголовком.",
+       "apiwarn-invalidxmlstylesheetext": "Таблицы стилей должны иметь расширение <code>.xsl</code>.",
+       "apiwarn-invalidxmlstylesheet": "Задана некорректная или несуществующая таблица стилей.",
+       "apiwarn-invalidxmlstylesheetns": "Таблица стилей должна находиться в пространстве имён {{ns:MediaWiki}}.",
+       "apiwarn-moduleswithoutvars": "Было задано свойство kbd>modules</kbd>, но не были —<kbd>jsconfigvars</kbd> или <kbd>encodedjsconfigvars</kbd>. Конфигурационные переменные обязательны для корректного использования модуля.",
+       "apiwarn-notfile": "«$1» не является файлом.",
+       "apiwarn-nothumb-noimagehandler": "Невозможно создать эскиз, поскольку у $1 нет связанного обработчика изображений.",
+       "apiwarn-parse-nocontentmodel": "Параметры <var>title</var> или <var>contentmodel</var> не заданы, предполагается $1.",
+       "apiwarn-parse-titlewithouttext": "<var>title</var> использован без <var>text</var>, при этом запрошены распарсенные свойства страницы. Возможно, вы хотели использовать <var>page</var> вместо <var>title</var>?",
+       "apiwarn-redirectsandrevids": "Раскрытие перенаправлений не может быть использовано вместе с параметром <var>revids</var>. Все перенаправления на точку <var>revids</var> не должны быть раскрыты.",
+       "apiwarn-tokennotallowed": "Действие «$1» не разрешено для текущего участника.",
+       "apiwarn-tokens-origin": "Токены не могут быть получены, пока не применено правило ограничения домена.",
+       "apiwarn-toomanyvalues": "Слишком много значений передано параметру <var>$1</var>. Максимальное число — $2.",
+       "apiwarn-truncatedresult": "Результат был усечён, поскольку в противном случае он был бы больше лимита в $1 байт.",
+       "apiwarn-unclearnowtimestamp": "Передача «$2» в качестве параметра временной метки <var>$1</var> не поддерживается. Если по какой-то причине вы хотите прямо указать текущее время без вычисления его на стороне клиента, используйте <kbd>now</kbd>.",
+       "apiwarn-unrecognizedvalues": "{{PLURAL:$3|Нераспознанное значение|Нераспознанные значения}} параметра <var>$1</var>: $2.",
+       "apiwarn-unsupportedarray": "Параметр <var>$1</var> использует неподдерживаемый синтаксис массивов PHP.",
+       "apiwarn-urlparamwidth": "Значение ширины ($2), переданное в <var>$1urlparam</var>, было проигнорировано в пользу значения ($3), полученного из параметров <var>$1urlwidth</var>/<var>$1urlheight</var>.",
+       "apiwarn-validationfailed-badchars": "некорректные символы в ключе (разрешены только <code>a-z</code>, <code>A-Z</code>, <code>0-9</code>, <code>_</code> и <code>-</code>).",
+       "apiwarn-validationfailed-badpref": "некорректная настройка.",
+       "apiwarn-validationfailed-cannotset": "не может быть задано этим модулем.",
+       "apiwarn-validationfailed-keytoolong": "ключ слишком длинен (разрешено не более $1 байт).",
+       "apiwarn-validationfailed": "Ошибка проверки для <kbd>$1</kbd>: $2",
+       "apiwarn-wgDebugAPI": "<strong>Предупреждение безопасности</strong>: активирован <var>$wgDebugAPI</var>.",
        "api-feed-error-title": "Ошибка ($1)",
-       "api-credits-header": "Создатели"
+       "api-usage-docref": "См. $1 для использования API.",
+       "api-usage-mailinglist-ref": "Подпишитесь на электронную рассылку MediaWiki API на &lt;https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce&gt;, чтобы получать информацию о неподдерживаемых функциях и ломающих изменениях.",
+       "api-exception-trace": "$1 в $2($3)\n$4",
+       "api-credits-header": "Создатели",
+       "api-credits": "Разработчики API:\n* Yuri Astrakhan (создатель, ведущий разработчик с сентября 2006 по сентябрь 2007)\n* Roan Kattouw (ведущий разработчик 2007—2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Brad Jorsch (ведущий разработчик с 2013)\n\nПожалуйста, присылайте ваши комментарии, предложения и вопросы на адрес mediawiki-api@lists.wikimedia.org\nили присылайте отчёты об ошибках на https://phabricator.wikimedia.org/."
 }
index fb6698f..2876ff9 100644 (file)
        "apihelp-query+stashimageinfo-param-filekey": "Nyckel som identifierar en tidigare uppladdning som lagrats temporärt.",
        "apihelp-query+stashimageinfo-example-simple": "Returnerar information för en temporär fil",
        "apihelp-query+tags-example-simple": "Lista tillgängliga taggar.",
+       "apihelp-query+templates-param-namespace": "Visa mallar i endast denna namnrymd.",
        "apihelp-query+userinfo-example-simple": "Få information om den aktuella användaren.",
        "apihelp-query+userinfo-example-data": "Få ytterligare information om den aktuella användaren.",
        "apihelp-query+watchlist-description": "Hämta de senaste ändringarna på sidor i den nuvarande användarens bevakningslista.",
        "apihelp-upload-param-stash": "Om angiven, kommer servern att temporärt lagra filen istället för att lägga till den i centralförvaret.",
        "apihelp-upload-example-url": "Ladda upp från URL.",
        "apihelp-upload-example-filekey": "Slutför en uppladdning som misslyckades på grund av varningar.",
+       "api-login-fail-badsessionprovider": "Kan inte logga in med $1.",
        "api-help-main-header": "Huvudmodul",
        "api-help-flag-deprecated": "Denna modul är föråldrad.",
        "api-help-flag-internal": "<strong>Denna modul är intern eller instabil.</strong> Dess funktion kan ändras utan föregående meddelande.",
        "apierror-invalidsection": "Parametern <var>section</var> måste vara ett giltigt avsnitts-ID eller <kbd>new</kbd>.",
        "apierror-nosuchuserid": "Det finns ingen användare med ID $1.",
        "apierror-protect-invalidaction": "Ogiltig skyddstyp \"$1\".",
+       "apierror-revisions-badid": "Ingen revision hittades för parametern <var>$1</var>.",
        "apierror-systemblocked": "Du har blockerats automatiskt av MediaWiki.",
        "apierror-unknownformat": "Okänt format \"$1\".",
        "api-feed-error-title": "Fel ($1)"
index cd547fe..981091a 100644 (file)
@@ -6,16 +6,15 @@
                        "Ahonc",
                        "Base",
                        "Dars",
-                       "Umherirrender",
                        "Macofe",
                        "Mix Gerder",
                        "Piramidion",
                        "Andriykopanytsia",
                        "Максим Підліснюк",
-                       "AS"
+                       "AS",
+                       "Umherirrender"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Документація]]\n* [[mw:Special:MyLanguage/API:FAQ|ЧаПи]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Список розсилки]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Оголошення API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Баґи і запити]\n</div>\n<strong>Статус:</strong> Усі функції, вказані на цій сторінці, мають працювати, але API далі перебуває в активній розробці і може змінитися у будь-який момент. Підпишіться на [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ список розсилки mediawiki-api-announce], щоб помічати оновлення.\n\n<strong>Хибні запити:</strong> Коли до API надсилаються хибні запити, буде відіслано HTTP-шапку з ключем «MediaWiki-API-Error», а тоді і значення шапки, і код помилки, надіслані назад, будуть встановлені з тим же значенням. Більше інформації див. на [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Errors and warnings]].\n\n<strong>Тестування:</strong> Для зручності тестування запитів API, див. [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Яку дію виконати.",
        "apihelp-main-param-format": "Формат виводу.",
        "apihelp-main-param-maxlag": "Максимальна затримка може використовуватися, коли MediaWiki інстальовано на реплікований кластер бази даних. Щоб зберегти дії, які спричиняють більшу затримку реплікації, цей параметр може змусити клієнт почекати, поки затримка реплікації не буде меншою за вказане значення. У випадку непомірної затримки, видається код помилки <samp>maxlag</samp> з повідомленням на зразок <samp>Очікування на $host: $lag секунд(и) затримки</samp>.<br />Див. [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manual: Maxlag parameter]] для детальнішої інформації.",
@@ -32,7 +31,6 @@
        "apihelp-main-param-errorformat": "Формат попереджень і тексту помилок.\n; plaintext: вікітекст із прираними HTML-тегами і заміненими HTML-мнемоніками.\n; wikitext: неопрацьований вікітекст.\n; html: HTML.\n; raw: лише ключ і параметри повідомлення.\n; none: без тексту, тільки коди помилок.\n; bc: формат, який використовувався до MediaWiki 1.29. <var>errorlang</var> і <var>errorsuselocal</var> ігноруються.",
        "apihelp-main-param-errorlang": "Мова, яку використовувати для попереджень і помилок. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> із <kbd>siprop=languages</kbd> повертає список кодів мов, або ж вкажіть <kbd>content</kbd>, щоб використати мову вмісту поточної вікі, або вкажіть <kbd>uselang</kbd>, щоб використовувати те ж значення, що й параметр <var>uselang</var>.",
        "apihelp-main-param-errorsuselocal": "Якщо задано, тексти помилок використовуватимуть локальні повідомлення з простору назв {{ns:MediaWiki}}.",
-       "apihelp-block-description": "Заблокувати користувача.",
        "apihelp-block-param-user": "Ім'я користувача, IP-адреса або діапазон IP-адрес для блокування. Не може бути використано разом із <var>$1userid</var>",
        "apihelp-block-param-userid": "Ідентифікатор користувача, який заблокувати. Не може бути використано разом із <var>$1user</var>.",
        "apihelp-block-param-expiry": "Закінчення часу. Може бути відносним (напр., <kbd>5 місяців</kbd> або <kbd>2 тижні</kbd>) чи абсолютним (напр., <kbd>2014-09-18T12:34:56Z</kbd>). Якщо вказано <kbd>infinite</kbd>, <kbd>indefinite</kbd> або <kbd>never</kbd>, блокування не закінчиться ніколи.",
        "apihelp-block-param-tags": "Змінити теги для застосування їх до запису в журналі блокувань.",
        "apihelp-block-example-ip-simple": "Блокувати IP-адресу <kbd>192.0.2.5</kbd> на три дні з причиною <kbd>First strike</kbd>.",
        "apihelp-block-example-user-complex": "Блокувати користувача<kbd>Vandal</kbd> на невизначений термін з причиною <kbd>Vandalism</kbd> і заборонити створення нових облікових записів та надсилання електронної пошти.",
-       "apihelp-changeauthenticationdata-description": "Зміна параметрів аутентифікації для поточного користувача.",
        "apihelp-changeauthenticationdata-example-password": "Спроба змінити поточний пароль користувача на <kbd>ExamplePassword</kbd>.",
-       "apihelp-checktoken-description": "Перевірити коректність токена з <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-checktoken-param-type": "Тип токена, який тестується.",
        "apihelp-checktoken-param-token": "Токен для тесту.",
        "apihelp-checktoken-param-maxtokenage": "Максимально допустимий вік токена (у секундах).",
        "apihelp-checktoken-example-simple": "Перевірити дійсність токена <kbd>csrf</kbd>.",
-       "apihelp-clearhasmsg-description": "Очищає прапорець <code>hasmsg</code> для поточного користувача.",
        "apihelp-clearhasmsg-example-1": "Очистити прапорець <code>hasmsg</code> для поточного користувача.",
-       "apihelp-clientlogin-description": "Увійдіть у вікі з допомогою інтерактивного потоку.",
        "apihelp-clientlogin-example-login": "Почати процес входу у вікі як користувач <kbd>Example</kbd> з паролем <kbd>ExamplePassword</kbd>.",
        "apihelp-clientlogin-example-login2": "Продовжити вхід в систему після відповіді <samp>UI</samp> для двофакторної автентифікації, надаючи <var>OATHToken</var> як <kbd>987654</kbd>.",
-       "apihelp-compare-description": "Отримати порівняння двох сторінок.\n\nПовинні бути номер версії, назва сторінки або ID сторінки для «від» і «до».",
        "apihelp-compare-param-fromtitle": "Перший заголовок для порівняння.",
        "apihelp-compare-param-fromid": "Перший ID сторінки для порівняння.",
        "apihelp-compare-param-fromrev": "Перша версія для порівняння.",
+       "apihelp-compare-param-fromtext": "Використати цей текст замість контенту версії, вказаної через <var>fromtitle</var>, <var>fromid</var> або <var>fromrev</var>.",
+       "apihelp-compare-param-frompst": "Зробити трансформацію перед збереженням на <var>fromtext</var>.",
+       "apihelp-compare-param-fromcontentmodel": "Контентна модель <var>fromtext</var>. Якщо не вказано, буде використано припущення на основі інших параметрів.",
+       "apihelp-compare-param-fromcontentformat": "Формат серіалізації контенту <var>fromtext</var>.",
        "apihelp-compare-param-totitle": "Другий заголовок для порівняння.",
        "apihelp-compare-param-toid": "Другий ID сторінки для порівняння.",
        "apihelp-compare-param-torev": "Друга версія для порівняння.",
+       "apihelp-compare-param-torelative": "Використати версію, яка стосується версії, визначеної через <var>fromtitle</var>, <var>fromid</var> або <var>fromrev</var>. Усі інші опції 'to' буде проігноровано.",
+       "apihelp-compare-param-totext": "Використати цей текст замість контенту версії, вказаної через <var>totitle</var>, <var>toid</var> або <var>torev</var>.",
+       "apihelp-compare-param-topst": "Виконати трансформацію перед збереженням на <var>totext</var>.",
+       "apihelp-compare-param-tocontentmodel": "Контентна модель <var>totext</var>. Якщо не вказано, буде використано припущення на основі інших параметрів.",
+       "apihelp-compare-param-tocontentformat": "Формат серіалізації контенту <var>totext</var>.",
+       "apihelp-compare-param-prop": "Які уривки інформації отримати.",
+       "apihelp-compare-paramvalue-prop-diff": "HTML різниці версій.",
+       "apihelp-compare-paramvalue-prop-diffsize": "Розмір HTML різниці версій, у байтах.",
+       "apihelp-compare-paramvalue-prop-rel": "Іддентифікатори версій, які передують 'from' і йдуть після 'to', якщо такі взагалі існують.",
+       "apihelp-compare-paramvalue-prop-ids": "Ідентифікатори сторінки й версій 'from' і 'to'.",
+       "apihelp-compare-paramvalue-prop-title": "Назви сторінок версій 'from' і 'to'.",
+       "apihelp-compare-paramvalue-prop-user": "Ім'я користувача й ідентифікатор версій 'from' і 'to'.",
+       "apihelp-compare-paramvalue-prop-comment": "Опис редагування версій 'from' і 'to'.",
+       "apihelp-compare-paramvalue-prop-parsedcomment": "Опрацьований опис редагування версій 'from' і 'to'.",
+       "apihelp-compare-paramvalue-prop-size": "Розмір версій 'from' і 'to'.",
        "apihelp-compare-example-1": "Створити порівняння версій 1 і 2.",
-       "apihelp-createaccount-description": "Створити новий обліковий запис користувача.",
        "apihelp-createaccount-param-preservestate": "Якщо запит <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> повернув істину для <samp>hasprimarypreservedstate</samp>, запити позначені як <samp>primary-required</samp> повинні бути пропущені. Якщо він повернув не порожнє значення для <samp>preservedusername</samp>, це ім'я користувача повинно бути використано для параметру <var>username</var>.",
        "apihelp-createaccount-example-create": "Почати процес створення користувача <kbd>Example</kbd> з паролем <kbd>ExamplePassword</kbd>.",
        "apihelp-createaccount-param-name": "Ім'я користувача.",
        "apihelp-createaccount-param-language": "Код мови для встановлення за замовчуванням для користувача (необов'язково, за замовчуванням — мова вмісту).",
        "apihelp-createaccount-example-pass": "Створити користувача <kbd>testuser</kbd> з паролем <kbd>test123</kbd>.",
        "apihelp-createaccount-example-mail": "Створити користувача <kbd>testmailuser</kbd> і надіслати на електронну пошту випадково-згенерований пароль.",
-       "apihelp-cspreport-description": "Використовується браузерами для повідомлення порушень Правил безпеки контенту (Content Security Policy). Цей модуль не повинен використовуватися, окрім випадків автоматичного використання веб-браузером для CSP-скарги.",
        "apihelp-cspreport-param-reportonly": "Позначити як доповідь із моніторингової політики, не примусової політики",
        "apihelp-cspreport-param-source": "Що згенерувало CSP-заголовок, який запустив цю доповідь",
-       "apihelp-delete-description": "Вилучити сторінку.",
        "apihelp-delete-param-title": "Назва сторінки для вилучення. Не можна використати разом з <var>$1pageid</var>.",
        "apihelp-delete-param-pageid": "ID-сторінки на вилучення. Не можна використати разом з <var>$1title</var>.",
        "apihelp-delete-param-reason": "Причина вилучення. Якщо не вказана, буде використано автоматично-згенеровану.",
        "apihelp-delete-param-oldimage": "Назва старого зображення на вилучення, як вказано у [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]].",
        "apihelp-delete-example-simple": "Вилучити <kbd>Main Page</kbd>.",
        "apihelp-delete-example-reason": "Вилучити <kbd>Main Page</kbd> з причиною <kbd>Preparing for move</kbd>.",
-       "apihelp-disabled-description": "Цей модуль було вимкнено.",
-       "apihelp-edit-description": "Створювати і редагувати сторінки.",
        "apihelp-edit-param-title": "Назва сторінки для редагування. Не можна використати разом з <var>$1pageid</var>.",
        "apihelp-edit-param-pageid": "ID-сторінки для редагування. Не можна використати разом з <var>$1title</var>.",
        "apihelp-edit-param-section": "Номер розділу. <kbd>0</kbd> для вступного розділу, <kbd>new</kbd> для нового розділу.",
        "apihelp-edit-example-edit": "Редагувати сторінку",
        "apihelp-edit-example-prepend": "Додати зміст на початок сторінки",
        "apihelp-edit-example-undo": "Скасувати версії з 13579 по 13585 з автоматичним описом змін",
-       "apihelp-emailuser-description": "Надіслати електронного листа користувачеві",
        "apihelp-emailuser-param-target": "Користувач, якому відправляється електронний лист.",
        "apihelp-emailuser-param-subject": "Заголовок теми.",
        "apihelp-emailuser-param-text": "Тіло листа.",
        "apihelp-emailuser-param-ccme": "Надіслати копію цього повідомлення мені.",
        "apihelp-emailuser-example-email": "Відправити листа користувачу <kbd>WikiSysop</kbd> з текстом <kbd>Content</kbd>.",
-       "apihelp-expandtemplates-description": "Розгортає усі шаблони в межах вікірозмітки.",
        "apihelp-expandtemplates-param-title": "Заголовок сторінки.",
        "apihelp-expandtemplates-param-text": "Вікітекст для перетворення.",
        "apihelp-expandtemplates-param-revid": "ID версії, для <nowiki>{{REVISIONID}}</nowiki> і подібних змінних.",
        "apihelp-expandtemplates-param-includecomments": "Чи включати HTML-коментарі у результат.",
        "apihelp-expandtemplates-param-generatexml": "Дерево парсу XML вхідних даних (замінене на $1prop=parsetree).",
        "apihelp-expandtemplates-example-simple": "Розгорнути вікітекст <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd>.",
-       "apihelp-feedcontributions-description": "Повертає стрічку внеску користувача.",
        "apihelp-feedcontributions-param-feedformat": "Формат стрічки.",
        "apihelp-feedcontributions-param-user": "Для яких користувачів отримати внесок.",
        "apihelp-feedcontributions-param-namespace": "За яким простором назв фільтрувати внески.",
        "apihelp-feedcontributions-param-hideminor": "Приховати незначні редагування.",
        "apihelp-feedcontributions-param-showsizediff": "Показати різницю розміру між версіями.",
        "apihelp-feedcontributions-example-simple": "Вивести внесок для користувача <kbd>Example</kbd>.",
-       "apihelp-feedrecentchanges-description": "Видає стрічку нових редагувань.",
        "apihelp-feedrecentchanges-param-feedformat": "Формат стрічки.",
        "apihelp-feedrecentchanges-param-namespace": "Простір назв, до якого обмежити результати.",
        "apihelp-feedrecentchanges-param-invert": "Усі простори назв, крім вибраного.",
        "apihelp-feedrecentchanges-param-categories_any": "Показати натомість лише зміни на сторінках у будь-якій з цих категорій.",
        "apihelp-feedrecentchanges-example-simple": "Показати нещодавні зміни.",
        "apihelp-feedrecentchanges-example-30days": "Показати нещодавні зміни за 30 днів.",
-       "apihelp-feedwatchlist-description": "Видає стрічку списку спостереження.",
        "apihelp-feedwatchlist-param-feedformat": "Формат стрічки.",
        "apihelp-feedwatchlist-param-hours": "Список сторінок, змінених за цю кількість годин від зараз.",
        "apihelp-feedwatchlist-param-linktosections": "За можливості, посилатися безпосередньо на змінені розділи.",
        "apihelp-feedwatchlist-example-default": "Показати стрічку списку спостереження.",
        "apihelp-feedwatchlist-example-all6hrs": "Показати всі зміни до спостережуваних сторінок за останні 6 годин.",
-       "apihelp-filerevert-description": "Повернути файл до старої версії.",
        "apihelp-filerevert-param-filename": "Цільова назва файлу, без префіксу File:.",
        "apihelp-filerevert-param-comment": "Завантажити коментар.",
        "apihelp-filerevert-param-archivename": "Архівна назва версії, до якої повернути.",
        "apihelp-filerevert-example-revert": "Повернути <kbd>Wiki.png</kbd> до версії <kbd>2011-03-05T15:27:40Z</kbd>.",
-       "apihelp-help-description": "Відображати довідку для зазначених модулів.",
        "apihelp-help-param-modules": "Модулі, для яких відображати довідку (значення параметрів <var>action</var> і <var>format</var> або <kbd>main</kbd>). Можна вказати підмодулі через <kbd>+</kbd>.",
        "apihelp-help-param-submodules": "Включити довідку для підмодулів вказаного модуля.",
        "apihelp-help-param-recursivesubmodules": "Включити довідку для підмодулів рекурсивно.",
        "apihelp-help-example-recursive": "Уся довідка на одній сторінці.",
        "apihelp-help-example-help": "Довідка для самого модуля довідки.",
        "apihelp-help-example-query": "Довідка для двох підмодулів запитів.",
-       "apihelp-imagerotate-description": "Поворот одного або декількох зображень.",
        "apihelp-imagerotate-param-rotation": "Градуси для повороту зображення за годинниковою стрілкою.",
        "apihelp-imagerotate-param-tags": "Теги для застосування до запису в журналі завантажень.",
        "apihelp-imagerotate-example-simple": "Повернути <kbd>File:Example.png</kbd> на <kbd>90</kbd> градусів.",
        "apihelp-imagerotate-example-generator": "Повернути усі зображення у <kbd>Category:Flip</kbd> на <kbd>180</kbd> градусів.",
-       "apihelp-import-description": "Імпортувати сторінку з іншої вікі або з XML-файлу.\n\nЗважте, що HTTP POST має бути виконано як завантаження файлу (тобто з використанням даних різних частин/форм) під час надсилання файлу для параметра <var>xml</var>.",
        "apihelp-import-param-summary": "Підсумок імпорту записів журналу.",
        "apihelp-import-param-xml": "Завантажено XML-файл.",
        "apihelp-import-param-interwikisource": "Для інтервікі-імпорту: вікі, з якої імпортувати.",
        "apihelp-import-param-rootpage": "Імпортувати як підсторінку цієї сторінки. Не можна використати разом з <var>$1namespace</var>.",
        "apihelp-import-param-tags": "Змінити теги для застосування до запису в журналі імпорту і до нульової версії імпортованих сторінок.",
        "apihelp-import-example-import": "Імпортувати [[meta:Help:ParserFunctions]] у простір назв 100 з повною історією.",
-       "apihelp-linkaccount-description": "Пов'язати обліковий запис третьої сторони з поточним користувачем.",
        "apihelp-linkaccount-example-link": "Почати процес пов'язування з обліковм записом з <kbd>Example</kbd>.",
-       "apihelp-login-description": "Увійти в систему й отримати куки автентифікації.\n\nЦю дію треба використовувати лише в комбінації з [[Special:BotPasswords]]; використання для входу в основний обліковий запис застаріле і може ламатися без попередження. Щоб безпечно увійти в основний обліковий запис, використовуйте <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
-       "apihelp-login-description-nobotpasswords": "Увійти й отримати куки автентифікації.\n\nЦя дія застаріла і може ламатися без попередження. Щоб безпечно входити в систему, використовуйте <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
        "apihelp-login-param-name": "Ім'я користувача.",
        "apihelp-login-param-password": "Пароль.",
        "apihelp-login-param-domain": "Домен (необов'язково).",
        "apihelp-login-param-token": "Токен входу в систему, отриманий у першому запиті.",
        "apihelp-login-example-gettoken": "Отримати токен входу в систему.",
        "apihelp-login-example-login": "Увійти в систему.",
-       "apihelp-logout-description": "Вийти й очистити дані сесії.",
        "apihelp-logout-example-logout": "Вийти з поточного облікового запису.",
-       "apihelp-managetags-description": "Виконати керівні завдання щодо зміни теґів.",
        "apihelp-managetags-param-operation": "Яку операцію виконати:\n;create:Створити нову мітку редагування для використання вручну.\n;delete:Вилучити мітку редагування з бази даних, включно з вилученням її з усіх версій, записів нових редагувань та записів журналів, де вона використана.\n;activate:Активувати мітку редагування, дозволивши користувачам застосовувати її вручну.\n;deactivate:Деактивувати мітку редагування, заборонивши користувачам застосовувати її вручну.",
        "apihelp-managetags-param-tag": "Мітка для створення, вилучення, активування чи деактивування. Для створення мітки, вона повинна не існувати. Для вилучення мітки, вона повинна існувати. Для активування мітки, вона повинна існувати і не використовуватися жодним розширенням. Для деактивування мітки, вона має бути жива і визначена вручну.",
        "apihelp-managetags-param-reason": "Необов'язкова причина створення, вилучення, активування чи деактивування мітки.",
        "apihelp-managetags-example-delete": "Вилучити мітку <kbd>vandlaism</kbd> з причиною <kbd>Misspelt</kbd>",
        "apihelp-managetags-example-activate": "Активувати мітку з назвою <kbd>spam</kbd> з причиною <kbd>For use in edit patrolling</kbd>",
        "apihelp-managetags-example-deactivate": "Деактивувати мітку з назвою <kbd>spam</kbd> з причиною <kbd>No longer required</kbd>",
-       "apihelp-mergehistory-description": "Об'єднання історій редагувань.",
        "apihelp-mergehistory-param-from": "Назва сторінки, з якої буде приєднана історія редагувань. Не можна використовувати разом із <var>$1fromid</var>.",
        "apihelp-mergehistory-param-fromid": "ID сторінки, з якої буде приєднана історія редагувань. Не можна використовувати разом із <var>$1from</var>.",
        "apihelp-mergehistory-param-to": "Назва сторінки, до якої буде приєднана історія редагувань. Не можна використовувати разом із <var>$1toid</var>.",
        "apihelp-mergehistory-param-reason": "Причина об'єднання історій.",
        "apihelp-mergehistory-example-merge": "Приєднання всієї історії редагувань сторінки <kbd>Oldpage</kbd> до <kbd>Newpage</kbd>.",
        "apihelp-mergehistory-example-merge-timestamp": "Приєднання версій до <kbd>2015-12-31T04:37:41Z</kbd> із <kbd>Oldpage</kbd> до <kbd>Newpage</kbd>.",
-       "apihelp-move-description": "Перейменувати сторінку.",
        "apihelp-move-param-from": "Назва сторінки для перейменування. Не можна використати разом з <var>$1fromid</var>.",
        "apihelp-move-param-fromid": "ID сторінки для перейменування. Не можна використати разом з <var>$1from</var>.",
        "apihelp-move-param-to": "Назва сторінки, на яку перейменувати.",
        "apihelp-move-param-ignorewarnings": "Ігнорувати всі попередження",
        "apihelp-move-param-tags": "Змінити теги для застосування до запису в журналі перейменувань і до нульової версії цільової сторінки.",
        "apihelp-move-example-move": "Перейменувати <kbd>Badtitle</kbd> на <kbd>Goodtitle</kbd> без збереження перенаправлення.",
-       "apihelp-opensearch-description": "Шукати у вікі з використанням протоколу OpenSearch.",
        "apihelp-opensearch-param-search": "Рядок пошуку.",
        "apihelp-opensearch-param-limit": "Максимальна кількість результатів для виведення.",
        "apihelp-opensearch-param-namespace": "Простори назв, у яких шукати.",
        "apihelp-opensearch-param-format": "Формат виводу.",
        "apihelp-opensearch-param-warningsaserror": "Якщо при <kbd>format=json</kbd> з'являються попередження, видати помилку API замість того, щоб їх ігнорувати.",
        "apihelp-opensearch-example-te": "Знайти сторінки, що починаються з <kbd>Te</kbd>.",
-       "apihelp-options-description": "Змінити налаштування поточного користувача.\n\nМожна встановити лише опції, які зареєстровані у ядрі або в одному з інстальованих розширень, або опції з префіксом ключів <code>userjs-</code> (призначені для використання користувацькими скриптами).",
        "apihelp-options-param-reset": "Встановлює налаштування сайту за замовчуванням.",
        "apihelp-options-param-resetkinds": "Список типів опцій для перевстановлення, коли вказана опція <var>$1reset</var>.",
        "apihelp-options-param-change": "Список змін, відформатованих як назва=значення (напр., skin=vector). Якщо значення не вказане (навіть немає знака рівності) , напр., optionname|otheroption|…, опцію буде перевстановлено до її значення за замовчуванням. Якщо будь-яке зі значень містить символ вертикальної риски (<kbd>|</kbd>), використайте [[Special:ApiHelp/main#main/datatypes|альтернативний розділювач значень]] для коректного виконання операції.",
        "apihelp-options-example-reset": "Скинути всі налаштування.",
        "apihelp-options-example-change": "Змінити налаштування <kbd>skin</kbd> та <kbd>hideminor</kbd>.",
        "apihelp-options-example-complex": "Скинути всі налаштування, потім встановити <kbd>skin</kbd> та <kbd>nickname</kbd>.",
-       "apihelp-paraminfo-description": "Отримати інформацію про модулі API.",
        "apihelp-paraminfo-param-modules": "Список назв модулів (значення параметрів <var>action</var> і <var>format</var> або <kbd>main</kbd>). Можна вказати підмодулі через <kbd>+</kbd>, усі підмодулі через <kbd>+*</kbd> або усі підмодулі рекурсивно через <kbd>+**</kbd>.",
        "apihelp-paraminfo-param-helpformat": "Формат рядків довідки.",
        "apihelp-paraminfo-param-querymodules": "Список назв модулів запитів (значення параметра <var>prop</var>, <var>meta</var> або <var>list</var>). Використати <kbd>$1modules=query+foo</kbd> замість <kbd>$1querymodules=foo</kbd>.",
        "apihelp-paraminfo-param-formatmodules": "Список назв модулів форматування (значення параметра <var>format</var>). Використати натомість <var>$1modules</var>.",
        "apihelp-paraminfo-example-1": "Показати інформацію для <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> та <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>.",
        "apihelp-paraminfo-example-2": "Показати інформацію про всі підмодулі <kbd>[[Special:ApiHelp/query|action=query]]</kbd>.",
-       "apihelp-parse-description": "Аналізує вміст і видає парсер виходу.\n\nДив. різні prop-модулі <kbd>[[Special:ApiHelp/query|action=query]]</kbd>, щоб отримати інформацію з поточної версії сторінки.\n\nЄ декілька способів вказати текст для аналізу:\n# Вказати сторінку або версію, використавши <var>$1page</var>, <var>$1pageid</var> або <var>$1oldid</var>.\n# Вказати безпосередньо, використавши <var>$1text</var>, <var>$1title</var> і <var>$1contentmodel</var>.\n# Вказати лише підсумок аналізу. <var>$1prop</var> повинен мати порожнє значення.",
        "apihelp-parse-param-title": "Назва сторінки, якій належить текст. Якщо пропущена, має бути вказано <var>$1contentmodel</var>, а як назву буде вжито [[API]].",
        "apihelp-parse-param-text": "Текст для аналізу. Використати <var>$1title</var> або <var>$1contentmodel</var> для контролю моделі вмісту.",
        "apihelp-parse-param-summary": "Підсумок для аналізу.",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "Дає HTML-версію звіту по обмеженнях. Не видає даних, якщо встановлено <var>$1disablelimitreport</var>.",
        "apihelp-parse-paramvalue-prop-parsetree": "Синтаксичне дерево XML вмісту версії (передбачає модель вмісту <code>$1</code>)",
        "apihelp-parse-paramvalue-prop-parsewarnings": "Виводить попередження, які з'явилися при обробці контенту.",
+       "apihelp-parse-param-wrapoutputclass": "CSS-клас для загортання в нього виводу парсера.",
        "apihelp-parse-param-pst": "Зробіть трансформацію вхідних даних перед збереженням і аналізом. Дійсне лише при використанні з текстом.",
        "apihelp-parse-param-onlypst": "Зробіть трансформацію вхідних даних перед збереженням (PST), але не аналізуйте. Видає той самий вікітекст, після застосування PST. Дійсне лише у разі використання з <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Включає мовні посилання, додані розширеннями (для використання з <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-preview": "Аналізувати у режимі попереднього перегляду.",
        "apihelp-parse-param-sectionpreview": "Аналізувати у режимі попереднього перегляду розділу (також вмикає попередній перегляд).",
        "apihelp-parse-param-disabletoc": "Пропустити зміст на виході.",
+       "apihelp-parse-param-useskin": "Застосувати вибрану тему оформлення до виводу парсера. Може вплинути на такі властивості: <kbd>langlinks</kbd>, <kbd>headitems</kbd>, <kbd>modules</kbd>, <kbd>jsconfigvars</kbd>, <kbd>indicators</kbd>.",
        "apihelp-parse-param-contentformat": "Формат серіалізації вмісту, використаний у вхідному тексті. Дійсний лише при використанні разом з $1text.",
        "apihelp-parse-param-contentmodel": "Модель вмісту вхідного тексту. Якщо пропущено, має бути вказано $1title, і за замовчуванням буде модель вказаного заголовка. Дійсне лише при використанні з $1text.",
        "apihelp-parse-example-page": "Аналізувати сторінку.",
        "apihelp-parse-example-text": "Аналізувати вікітекст.",
        "apihelp-parse-example-texttitle": "Аналізувати вікітекст, вказуючи назву сторінки.",
        "apihelp-parse-example-summary": "Аналізувати опис.",
-       "apihelp-patrol-description": "Відпатрулювати сторінку чи версію.",
        "apihelp-patrol-param-rcid": "ID нещодавніх змін для патрулювання.",
        "apihelp-patrol-param-revid": "Ідентифікатор версії для патрулювання.",
        "apihelp-patrol-param-tags": "Змінити теги, що мають бути застосовані до запису в журналі патрулювання.",
        "apihelp-patrol-example-rcid": "Відпатрулювати останню зміну.",
        "apihelp-patrol-example-revid": "Відпатрулювати версію.",
-       "apihelp-protect-description": "Змінити рівень захисту сторінки.",
        "apihelp-protect-param-title": "Заголовок сторінки для (зняття) захисту. Не може використовуватися разом із $1pageid.",
        "apihelp-protect-param-pageid": "ID сторінки для (зняття) захисту. Не може використовуватися разом з $1title.",
        "apihelp-protect-param-protections": "Список рівнів захисту у форматі <kbd>action=level</kbd> (напр., <kbd>edit=sysop</kbd>). Рівень <kbd>all</kbd> означає, що будь-хто може робити дію, тобто обмежень немає.\n\n<strong>Примітка:</strong> Обмеження на дії, яких нема в списку, буде знято.",
        "apihelp-protect-example-protect": "Захистити сторінку.",
        "apihelp-protect-example-unprotect": "Зняти захист зі сторінки, встановивши обмеження для <kbd>all</kbd> (тобто будь-хто зможе робити дії).",
        "apihelp-protect-example-unprotect2": "Зняти захист з сторінки, встановивши відсутність обмежень.",
-       "apihelp-purge-description": "Очистити кеш для вказаних заголовків.",
        "apihelp-purge-param-forcelinkupdate": "Оновити таблиці посилань.",
        "apihelp-purge-param-forcerecursivelinkupdate": "Оновити таблицю посилань, і оновити таблиці посилань для кожної сторінки, що використовує цю сторінку як шаблон.",
        "apihelp-purge-example-simple": "Очистити кеш <kbd>Main Page</kbd> і сторінки <kbd>API</kbd>.",
        "apihelp-purge-example-generator": "Очистити кеш перших десяти сторінок у головному просторі назв.",
-       "apihelp-query-description": "Вибірка даних з і про MediaWiki.\n\nУсі зміни даних у першу чергу мають використовувати запит на отримання токена, щоб запобігти зловживанням зі шкідливих сайтів.",
        "apihelp-query-param-prop": "Властивості, які потрібно отримати для запитуваних сторінок.",
        "apihelp-query-param-list": "Які списки отримати.",
        "apihelp-query-param-meta": "Які метадані отримати.",
        "apihelp-query-param-rawcontinue": "Видати сирі дані <samp>query-continue</samp> для продовження.",
        "apihelp-query-example-revisions": "Вибірка [[Special:ApiHelp/query+siteinfo|інформації про сайт]] та [[Special:ApiHelp/query+revisions|версій]] <kbd>Main Page</kbd>.",
        "apihelp-query-example-allpages": "Вибрати версії сторінок, які починаються з <kbd>API/</kbd>.",
-       "apihelp-query+allcategories-description": "Перерахувати всі категорії.",
        "apihelp-query+allcategories-param-from": "Категорія, з якої почати перелічувати.",
        "apihelp-query+allcategories-param-to": "Категорія, на якій закінчити перелічувати.",
        "apihelp-query+allcategories-param-prefix": "Шукати усі назви категорій, які починаються з цього значення.",
        "apihelp-query+allcategories-paramvalue-prop-hidden": "Теґує категорії, приховані з <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+allcategories-example-size": "Перерахувати категорії з інформацією про кількість сторінок у кожній.",
        "apihelp-query+allcategories-example-generator": "Отримати інформацію про саму сторінку категорії для категорій, що починаються з <kbd>List</kbd>.",
-       "apihelp-query+alldeletedrevisions-description": "Перерахувати усі вилучені версії за користувачем або у просторі назв.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Може використовуватися лише з <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Не може використовуватися з <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-param-start": "Часова мітка початку переліку.",
        "apihelp-query+alldeletedrevisions-param-generatetitles": "Коли використовується як генератор, генерувати заголовки замість ідентифікаторів версій.",
        "apihelp-query+alldeletedrevisions-example-user": "Перерахувати останні 50 вилучених редагувань користувача <kbd>Example</kbd>.",
        "apihelp-query+alldeletedrevisions-example-ns-main": "Перерахувати останні 50 вилучених версій у головному просторі назв.",
-       "apihelp-query+allfileusages-description": "Перерахувати усі використання файлів, включно з тими, що не існують.",
        "apihelp-query+allfileusages-param-from": "Назва файлу, з якої почати перераховувати.",
        "apihelp-query+allfileusages-param-to": "Назва файлу, якою закінчувати перераховувати.",
        "apihelp-query+allfileusages-param-prefix": "Шукати усі назви файлів, які починаються з цього значення.",
        "apihelp-query+allfileusages-example-unique": "Перерахувати унікальні назви файлів.",
        "apihelp-query+allfileusages-example-unique-generator": "Отримує всі назви файлів, позначаючи відсутні.",
        "apihelp-query+allfileusages-example-generator": "Отримує сторінки, на яких є файли.",
-       "apihelp-query+allimages-description": "Перерахувати усі зображення послідовно.",
        "apihelp-query+allimages-param-sort": "Властивість, за якою сортувати.",
        "apihelp-query+allimages-param-dir": "Напрямок, у якому перелічити.",
        "apihelp-query+allimages-param-from": "Назва зображення, з якої почати перерахунок. Можна використати лише з $1sort=name.",
        "apihelp-query+allimages-example-recent": "Показати список нещодавно завантажених файлів, подібно до [[Special:NewFiles]].",
        "apihelp-query+allimages-example-mimetypes": "Показати список файлів з MIME-типом <kbd>image/png</kbd> або <kbd>image/gif</kbd>",
        "apihelp-query+allimages-example-generator": "Показати інформацію про 4 файли, що починаються на літеру <kbd>T</kbd>.",
-       "apihelp-query+alllinks-description": "Перераховувати всі посилання, які вказують на заданий простір назв.",
        "apihelp-query+alllinks-param-from": "Назва посилання, з якої почати перераховувати.",
        "apihelp-query+alllinks-param-to": "Назва посилання, якою закінчити перераховувати.",
        "apihelp-query+alllinks-param-prefix": "Шукати усі пов'язані назви, які починаються з цього значення.",
        "apihelp-query+alllinks-example-unique": "Перерахувати унікальні назви з посиланнями.",
        "apihelp-query+alllinks-example-unique-generator": "Отримує всі назви з посиланнями, позначаючи відсутні.",
        "apihelp-query+alllinks-example-generator": "Отримує сторінки, на яких є посилання.",
-       "apihelp-query+allmessages-description": "Видати повідомлення від цього сайту.",
        "apihelp-query+allmessages-param-messages": "Які повідомлення виводити. <kbd>*</kbd> (за замовчуванням) означає усі повідомлення.",
        "apihelp-query+allmessages-param-prop": "Які властивості отримати.",
        "apihelp-query+allmessages-param-enableparser": "Встановити увімкнення парсеру, це попередньо обробить вікітекст повідомлення (підставити магічні слова, розкрити шаблони тощо).",
        "apihelp-query+allmessages-param-prefix": "Видати повідомлення з цим префіксом.",
        "apihelp-query+allmessages-example-ipb": "Показати повідомлення, які починаються на <kbd>ipb-</kbd>.",
        "apihelp-query+allmessages-example-de": "Показати повідомлення <kbd>august</kbd> і <kbd>mainpage</kbd> німецькою.",
-       "apihelp-query+allpages-description": "Перераховувати всі сторінки послідовно в заданому просторі назв.",
        "apihelp-query+allpages-param-from": "Заголовок сторінки, з якого почати перелічувати.",
        "apihelp-query+allpages-param-to": "Заголовок сторінки, яким закінчувати перелічувати.",
        "apihelp-query+allpages-param-prefix": "Шукати усі назви сторінок, які починаються з цього значення.",
        "apihelp-query+allpages-example-B": "Показати список сторінок, які починаються на літеру <kbd>B</kbd>.",
        "apihelp-query+allpages-example-generator": "Показати інформацію про 4 сторінки, що починаються на літеру <kbd>T</kbd>.",
        "apihelp-query+allpages-example-generator-revisions": "Показати вміст перших двох сторінок, що не є перенаправленнями і починаються на <kbd>Re</kbd>.",
-       "apihelp-query+allredirects-description": "Перерахувати усі перенаправлення на простір назв.",
        "apihelp-query+allredirects-param-from": "Назва перенаправлення, з якої почати перераховувати.",
        "apihelp-query+allredirects-param-to": "Назва перенаправлення, якою закінчувати перераховувати.",
        "apihelp-query+allredirects-param-prefix": "Шукати усі цільові сторінки, які починаються з цього значення.",
        "apihelp-query+allredirects-example-unique": "Перерахувати унікальні цільові сторінки.",
        "apihelp-query+allredirects-example-unique-generator": "Отримує всі цільові сторінки, позначаючи відсутні.",
        "apihelp-query+allredirects-example-generator": "Отримує сторінки, які містять перенаправлення.",
-       "apihelp-query+allrevisions-description": "Список усіх версій.",
        "apihelp-query+allrevisions-param-start": "Часова мітка, з якої почати перелік.",
        "apihelp-query+allrevisions-param-end": "Часова мітка закінчення переліку.",
        "apihelp-query+allrevisions-param-user": "Перерахувати лише версії цього користувача.",
        "apihelp-query+allrevisions-param-generatetitles": "Коли використовується як генератор, генерувати заголовки замість ідентифікаторів версій.",
        "apihelp-query+allrevisions-example-user": "Перерахувати останні 50 редагувань користувача <kbd>Example</kbd>.",
        "apihelp-query+allrevisions-example-ns-main": "Перерахувати перші 50 версій у головному просторі назв.",
-       "apihelp-query+mystashedfiles-description": "Отримати список файлів у сховку завантажень поточного користувача.",
        "apihelp-query+mystashedfiles-param-prop": "Які властивості файлів отримати.",
        "apihelp-query+mystashedfiles-paramvalue-prop-size": "Отримати розмір файлу та виміри зображення.",
        "apihelp-query+mystashedfiles-paramvalue-prop-type": "Отримати MIME-тип та тип даних файлу.",
        "apihelp-query+mystashedfiles-param-limit": "Скільки файлів виводити.",
        "apihelp-query+mystashedfiles-example-simple": "Отримати ключі файлів (filekey), розміри файлів та піксельні виміри файлів у сховку завантажень поточного користувача.",
-       "apihelp-query+alltransclusions-description": "Список усіх включень (сторінки, вставлені з використанням &#123;&#123;x&#125;&#125;), включно з неіснуючими.",
        "apihelp-query+alltransclusions-param-from": "Назва включення, з якої почати перераховувати.",
        "apihelp-query+alltransclusions-param-to": "Назва включення, якою закінчити перераховувати.",
        "apihelp-query+alltransclusions-param-prefix": "Шукати усі включені назви, які починаються з цього значення.",
        "apihelp-query+alltransclusions-example-unique": "Перерахувати унікальні включені назв.",
        "apihelp-query+alltransclusions-example-unique-generator": "Отримує всі включені назви, позначаючи відсутні.",
        "apihelp-query+alltransclusions-example-generator": "Отримує сторінки, на яких є включення.",
-       "apihelp-query+allusers-description": "Перерахувати усіх зареєстрованих користувачів.",
        "apihelp-query+allusers-param-from": "Ім'я користувача, з якого почати перелічувати.",
        "apihelp-query+allusers-param-to": "Ім'я користувача, на якому закінчити перелічувати.",
        "apihelp-query+allusers-param-prefix": "Шукати усіх користувачів, які починаються з цього значення.",
        "apihelp-query+allusers-param-activeusers": "Перерахувати лише користувачів, що були активні $1 {{PLURAL:$1|останній день|останні дні|останніх днів}}.",
        "apihelp-query+allusers-param-attachedwiki": "Із <kbd>$1prop=centralids</kbd>, також вказати, чи користувач має приєднану вікі, визначену цим ідентифікатором.",
        "apihelp-query+allusers-example-Y": "Перерахувати користувачів, починаючи з <kbd>Y</kbd>.",
-       "apihelp-query+authmanagerinfo-description": "Отримати інформацію про поточний стан автентифікації.",
        "apihelp-query+authmanagerinfo-param-securitysensitiveoperation": "Перевірити, чи поточний стан автентифікації користувача є достатнім для даної конфіденційної операції.",
        "apihelp-query+authmanagerinfo-param-requestsfor": "Отримати інформацію про запити автентифікації, потрібні для даної дії автентифікації.",
        "apihelp-query+authmanagerinfo-example-login": "Вибірка запитів, що можуть бути використані при початку входу.",
        "apihelp-query+authmanagerinfo-example-login-merged": "Отримати запити, які можуть бути використані при початку входу, з об'єднаними полями форми.",
        "apihelp-query+authmanagerinfo-example-securitysensitiveoperation": "Перевірити чи автентифікація є достатньою для дії <kbd>foo</kbd>.",
-       "apihelp-query+backlinks-description": "Знайти усі сторінки, що посилаються на подану сторінку.",
        "apihelp-query+backlinks-param-title": "Назва для пошуку. Не можна використати разом з <var>$1pageid</var>.",
        "apihelp-query+backlinks-param-pageid": "ID сторінки для пошуку. Не можна використати разом з <var>$1title</var>.",
        "apihelp-query+backlinks-param-namespace": "Простір назв для переліку.",
        "apihelp-query+backlinks-param-redirect": "Якщо сторінка, яка посилається, є перенаправленням, знайти всі сторінки, які посилаються на це перенаправлення, теж. Максимальний ліміт зменшується наполовину.",
        "apihelp-query+backlinks-example-simple": "Показати посилання на <kbd>Main page</kbd>.",
        "apihelp-query+backlinks-example-generator": "Отримати інформацію про сторінки, що посилаються на <kbd>Main page</kbd>.",
-       "apihelp-query+blocks-description": "Перерахувати усіх заблокованих користувачів і IP-адреси.",
        "apihelp-query+blocks-param-start": "Часова мітка, з якої почати перелік.",
        "apihelp-query+blocks-param-end": "Часова мітка закінчення переліку.",
        "apihelp-query+blocks-param-ids": "Вивести список заблокованих ID (необов'язково).",
        "apihelp-query+blocks-param-show": "Показувати лише елементи, які відповідають цим критеріям.\nНаприклад, щоб побачити лише незалежні блокування IP-адрес, встановіть <kbd>$1show=ip|!temp</kbd>.",
        "apihelp-query+blocks-example-simple": "Вивести список блокувань.",
        "apihelp-query+blocks-example-users": "Вивести список блокувань користувачів <kbd>Alice</kbd> та <kbd>Bob</kbd>.",
-       "apihelp-query+categories-description": "Перерахувати категорії, до яких сторінки належать.",
        "apihelp-query+categories-param-prop": "Які додаткові властивості отримати для кожної категорії:",
        "apihelp-query+categories-paramvalue-prop-sortkey": "Додає ключ сортування (шістнадцятковий рядок) і префікс ключа сортування (людиночитна частина) для категорії.",
        "apihelp-query+categories-paramvalue-prop-timestamp": "Додає мітку часу, коли категорію було додано.",
        "apihelp-query+categories-param-dir": "Напрямок, у якому перелічити.",
        "apihelp-query+categories-example-simple": "Отримати список категорій, до яких належить сторінка <kbd>Albert Einstein</kbd>.",
        "apihelp-query+categories-example-generator": "Отримати інформацію про усі категорії, використані на сторінці <kbd>Albert Einstein</kbd>.",
-       "apihelp-query+categoryinfo-description": "Видає інформацію про подані категорії.",
        "apihelp-query+categoryinfo-example-simple": "Отримати інформацію про <kbd>Category:Foo</kbd> і <kbd>Category:Bar</kbd>.",
-       "apihelp-query+categorymembers-description": "Перерахувати усі сторінки у поданій категорії.",
        "apihelp-query+categorymembers-param-title": "Яку категорію вивести (обов'язково). Мусить включати префікс <kbd>{{ns:category}}:</kbd>. Не можна використати разом з <var>$1pageid</var>.",
        "apihelp-query+categorymembers-param-pageid": "ID сторінки категорії для виведення. Не можна використати разом з <var>$1title</var>.",
        "apihelp-query+categorymembers-param-prop": "Які відомості включати:",
        "apihelp-query+categorymembers-param-endsortkey": "Використати натомість $1endhexsortkey.",
        "apihelp-query+categorymembers-example-simple": "Отримати перші 10 сторінок у <kbd>Category:Physics</kbd>.",
        "apihelp-query+categorymembers-example-generator": "Отримати інформацію про перші 10 сторінок у <kbd>Category:Physics</kbd>.",
-       "apihelp-query+contributors-description": "Отримати список залогінених дописувачів і кількість анонімних дописувачів до сторінки.",
        "apihelp-query+contributors-param-group": "Включати лише користувачів з даних груп. Не включає безумовні або автоматичні групи на зразок *, користувач або автопідтверджені.",
        "apihelp-query+contributors-param-excludegroup": "Виключати користувачів з даних груп. Не включає безумовні або автоматичні групи на зразок *, користувач або автопідтверджені.",
        "apihelp-query+contributors-param-rights": "Включати лише користувачів з даними правами. Не включає права, надані безумовними або автоматичними групами на зразок *, користувач або автопідтверджені.",
        "apihelp-query+contributors-param-excluderights": "Виключати користувачів з даними правами. Не включає права, надані безумовними або автоматичними групами на зразок *, користувач або автопідтверджені.",
        "apihelp-query+contributors-param-limit": "Скільки дописувачів виводити.",
        "apihelp-query+contributors-example-simple": "Показати дописувачів до сторінки <kbd>Main Page</kbd>.",
-       "apihelp-query+deletedrevisions-description": "Отримати інформацію про вилучену версію.\n\nМожна використати кількома способами:\n# Отримати вилучені версії набору сторінок, вказавши заголовки або ідентифікатори сторінок. Сортується за назвою і часовою міткою.\n# Отримати дані про набір вилучених версій, вказавши їх ID з ідентифікаторами версій. Сортується за ID версії.",
        "apihelp-query+deletedrevisions-param-start": "Мітка часу, з якої почати перелік. Ігнорується, якщо обробляється список ідентифікаторів версій.",
        "apihelp-query+deletedrevisions-param-end": "Мітка часу, якою закінчити перелік. Ігнорується, якщо обробляється список ідентифікаторів версій.",
        "apihelp-query+deletedrevisions-param-tag": "Перерахувати лише версії, помічені цим теґом.",
        "apihelp-query+deletedrevisions-param-excludeuser": "Не перераховувати версії цього користувача.",
        "apihelp-query+deletedrevisions-example-titles": "Перерахувати вилучені версії сторінок <kbd>Main Page</kbd> і <kbd>Talk:Main Page</kbd>, з вмістом.",
        "apihelp-query+deletedrevisions-example-revids": "Вивести інформацію вилученої версії <kbd>123456</kbd>.",
-       "apihelp-query+deletedrevs-description": "Перелічити вилучені версії.\n\nПрацює у трьох режимах:\n# Перелічити вилучені версії поданих назв, відсортованих за часовою міткою.\n# Перелічити вилучений внесок поданого користувача, відсортований за часовою міткою (без вказання заголовків).\n# Перелічити усі вилучені версії у поданому просторі назв, відсортовані за назвою та часовою міткою (без вказання заголовків, $1user не вказаний).\n\nОкремі параметри можуть застосовуватися в одному режимі й ігноруватися в іншому.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Режим|Режими}}: $2",
        "apihelp-query+deletedrevs-param-start": "Часова мітка початку переліку.",
        "apihelp-query+deletedrevs-param-end": "Часова мітка закінчення переліку.",
        "apihelp-query+deletedrevs-example-mode2": "Перерахувати останні 50 вилучених редагувань <kbd>Bob</kbd> (режим 2).",
        "apihelp-query+deletedrevs-example-mode3-main": "Перерахувати перші 50 вилучених версій у головному просторі назв (режим 3).",
        "apihelp-query+deletedrevs-example-mode3-talk": "Перерахувати перші 50 вилучених сторінок у просторі назв {{ns:talk}} (режим 3).",
-       "apihelp-query+disabled-description": "Цей модуль запитів було вимкнено.",
-       "apihelp-query+duplicatefiles-description": "Перерахувати усі файли, які є дублікатами поданих файлів з огляду на значення хешу.",
        "apihelp-query+duplicatefiles-param-limit": "Скільки файлів-дублікатів виводити.",
        "apihelp-query+duplicatefiles-param-dir": "Напрямок, у якому перелічити.",
        "apihelp-query+duplicatefiles-param-localonly": "Шукати лише файли у локальному репозиторії.",
        "apihelp-query+duplicatefiles-example-simple": "Шукати дублікати [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+duplicatefiles-example-generated": "Шукати дублікати усіх файлів.",
-       "apihelp-query+embeddedin-description": "Знайти всі сторінки, які вбудовують (включають) подану назву.",
        "apihelp-query+embeddedin-param-title": "Назва для пошуку. Не можна використати разом з $1pageid.",
        "apihelp-query+embeddedin-param-pageid": "ID сторінки для пошуку. Не можна використати разом з $1title.",
        "apihelp-query+embeddedin-param-namespace": "Простір назв для переліку.",
        "apihelp-query+embeddedin-param-limit": "Скільки всього сторінок виводити.",
        "apihelp-query+embeddedin-example-simple": "Показати сторінки, які включають <kbd>Template:Stub</kbd>.",
        "apihelp-query+embeddedin-example-generator": "Отримати інформацію про сторінки, які включають <kbd>Template:Stub</kbd>.",
-       "apihelp-query+extlinks-description": "Видати усі зовнішні URL (не інтервікі) з поданих сторінок.",
        "apihelp-query+extlinks-param-limit": "Скільки посилань виводити.",
        "apihelp-query+extlinks-param-protocol": "Протокол URL. Якщо пусто і вказано <var>$1query</var>, протокол <kbd>http</kbd>. Залиште пустими і це, і <var>$1query</var>, щоб перелічити усі зовнішні посилання.",
        "apihelp-query+extlinks-param-query": "Шукати рядок без протоколу. Корисно для перевірки, чи містить певна сторінка певне зовнішнє посилання.",
        "apihelp-query+extlinks-param-expandurl": "Розгорнути протокол-залежні URL за канонічним протоколом.",
        "apihelp-query+extlinks-example-simple": "Отримати список зовнішніх посилань на <kbd>Main Page</kbd>.",
-       "apihelp-query+exturlusage-description": "Перерахувати сторінки, які містять поданий URL.",
        "apihelp-query+exturlusage-param-prop": "Які відомості включати:",
        "apihelp-query+exturlusage-paramvalue-prop-ids": "Додає ID сторінки.",
        "apihelp-query+exturlusage-paramvalue-prop-title": "Додає заголовок і ID простору назв сторінки.",
        "apihelp-query+exturlusage-param-limit": "Скільки сторінок виводити.",
        "apihelp-query+exturlusage-param-expandurl": "Розгорнути протокол-залежні URL за канонічним протоколом.",
        "apihelp-query+exturlusage-example-simple": "Показати сторінки, які посилаються на <kbd>http://www.mediawiki.org</kbd>.",
-       "apihelp-query+filearchive-description": "Перерахувати всі вилучені файли послідовно.",
        "apihelp-query+filearchive-param-from": "Назва зображення, з якої почати перелічувати.",
        "apihelp-query+filearchive-param-to": "Назва зображення, якою закінчити перелічувати.",
        "apihelp-query+filearchive-param-prefix": "Шукати усі назви зображень, які починаються з цього значення.",
        "apihelp-query+filearchive-paramvalue-prop-bitdepth": "Додає бітну глибину версії.",
        "apihelp-query+filearchive-paramvalue-prop-archivename": "Додає до імені версію архіву для неостаточного варіанту файлу.",
        "apihelp-query+filearchive-example-simple": "Показати список усіх вилучених файлів.",
-       "apihelp-query+filerepoinfo-description": "Видати мета-інформацію про репозиторії зображень, налаштовані на вікі.",
        "apihelp-query+filerepoinfo-param-prop": "Які властивості репозиторію отримати (на деяких вікі може бути більше):\n;apiurl:URL до репозиторію API — корисне для отримання інформації про зображення з хосту.\n;name:Ключ репозиторію — використано в e.g. <var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> і значення [[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname:Людиночита назва репозиторію вікі.\n;rooturl:Корінний URL для шляху зображення.\n;local:Чи репозиторій локальний, чи ні.",
        "apihelp-query+filerepoinfo-example-simple": "Отримати інформацію про репозиторії файлів.",
-       "apihelp-query+fileusage-description": "Знайти всі сторінки, що використовують дані файли.",
        "apihelp-query+fileusage-param-prop": "Які властивості отримати:",
        "apihelp-query+fileusage-paramvalue-prop-pageid": "ID кожної сторінки.",
        "apihelp-query+fileusage-paramvalue-prop-title": "Назва кожної сторінки.",
        "apihelp-query+fileusage-param-show": "Показати лише елементи, що відповідають цим критеріям:\n;redirect:Показати лише перенаправлення.\n;!redirect:Показати лише не перенаправлення.",
        "apihelp-query+fileusage-example-simple": "Отримати список сторінок, які використовують [[:File:Example.jpg]].",
        "apihelp-query+fileusage-example-generator": "Отримати інформацію про сторінки, які використовують [[:File:Example.jpg]].",
-       "apihelp-query+imageinfo-description": "Видає інформацію про файл й історію завантаження.",
        "apihelp-query+imageinfo-param-prop": "Яку інформацію отримати:",
        "apihelp-query+imageinfo-paramvalue-prop-timestamp": "Додає мітку часу для завантаженої версії.",
        "apihelp-query+imageinfo-paramvalue-prop-user": "Додає користувача, який завантажив кожну версію файлу.",
        "apihelp-query+imageinfo-param-localonly": "Шукати лише файли у локальному репозиторії.",
        "apihelp-query+imageinfo-example-simple": "Вибрати інформацію про поточну версію [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+imageinfo-example-dated": "Вибрати інформацію про версії [[:File:Test.jpg]] від 2008 і раніше.",
-       "apihelp-query+images-description": "Видає усі файли, які містяться на вказаних сторінках.",
        "apihelp-query+images-param-limit": "Скільки файлів виводити.",
        "apihelp-query+images-param-images": "Перерахувати лише ці файли. Корисно для перевірки, чи певна сторінка має певний файл.",
        "apihelp-query+images-param-dir": "Напрямок, у якому перелічити.",
        "apihelp-query+images-example-simple": "Отримати список файлів, використаних на [[Main Page]].",
        "apihelp-query+images-example-generator": "Отримати інформацію про всі файли, використані на [[Main Page]].",
-       "apihelp-query+imageusage-description": "Знайти всі сторінки, що використовують дану назву зображення.",
        "apihelp-query+imageusage-param-title": "Назва для пошуку. Не можна використати разом з $1pageid.",
        "apihelp-query+imageusage-param-pageid": "ID сторінки для пошуку. Не можна використати разом з $1title.",
        "apihelp-query+imageusage-param-namespace": "Простір назв для переліку.",
        "apihelp-query+imageusage-param-redirect": "Якщо сторінка, яка посилається, є перенаправленням, знайти всі сторінки, які посилаються на це перенаправлення, теж. Максимальний ліміт зменшується наполовину.",
        "apihelp-query+imageusage-example-simple": "Показати сторінки, які використовують [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+imageusage-example-generator": "Отримати інформацію про сторінки, які використовують [[:File:Albert Einstein Head.jpg]].",
-       "apihelp-query+info-description": "Отримати основні відомості про сторінку.",
        "apihelp-query+info-param-prop": "Які додаткові властивості отримати:",
        "apihelp-query+info-paramvalue-prop-protection": "Вивести рівень захисту кожної сторінки.",
        "apihelp-query+info-paramvalue-prop-talkid": "Ідентифікатор сторінки обговорення для кожної сторінки, що не є обговоренням.",
        "apihelp-query+info-param-token": "Використати натомість [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
        "apihelp-query+info-example-simple": "Отримати інформацію про сторінку <kbd>Main Page</kbd>.",
        "apihelp-query+info-example-protection": "Отримати загальну інформацію і дані про захист сторінки <kbd>Main Page</kbd>.",
-       "apihelp-query+iwbacklinks-description": "Знайти всі сторінки, які посилаються на дане інтервікі-посилання.\n\nМоже використовуватися, щоб знайти всі посилання з префіксом або всі посилання на назву (з даним префіксом). Без використання жодного параметра це, по суті, «всі інтервікі-посилання».",
        "apihelp-query+iwbacklinks-param-prefix": "Префікс для інтервікі.",
        "apihelp-query+iwbacklinks-param-title": "Інтервікі-посилання для пошуку. Повинно використовуватися з <var>$1blprefix</var>.",
        "apihelp-query+iwbacklinks-param-limit": "Скільки всього сторінок виводити.",
        "apihelp-query+iwbacklinks-param-dir": "Напрямок, у якому перелічити.",
        "apihelp-query+iwbacklinks-example-simple": "Отримати сторінки, що посилаються на [[wikibooks:Test]].",
        "apihelp-query+iwbacklinks-example-generator": "Отримати інформацію про сторінки, що посилаються на [[wikibooks:Test]].",
-       "apihelp-query+iwlinks-description": "Видає усі інтервікі-посилання із вказаних сторінок.",
        "apihelp-query+iwlinks-param-url": "Чи отримувати повну URL-адресу (не може використовуватися з $1prop).",
        "apihelp-query+iwlinks-param-prop": "Які додаткові властивості отримати для кожного міжмовного посилання:",
        "apihelp-query+iwlinks-paramvalue-prop-url": "Додає повну URL-адресу.",
        "apihelp-query+iwlinks-param-title": "Інтервікі-посилання для пошуку. Повинно використовуватися з <var>$1prefix</var>.",
        "apihelp-query+iwlinks-param-dir": "Напрямок, у якому перелічити.",
        "apihelp-query+iwlinks-example-simple": "Отримати інтервікі-посилання зі сторінки <kbd>Main Page</kbd>.",
-       "apihelp-query+langbacklinks-description": "Знайти всі сторінки, які посилаються на дане мовне посилання.\n\nМоже бути використано для пошуку всіх посилань з кодом мови або всіх посилань на назву (з урахуванням мови). \nБез жодного параметра це «усі мовні посилання».\n\nЗверніть увагу, що це може не розглядати мовні посилання, додані розширеннями.",
        "apihelp-query+langbacklinks-param-lang": "Мова мовного посилання.",
        "apihelp-query+langbacklinks-param-title": "Мовне посилання для пошуку. Мусить бути використане з $1lang.",
        "apihelp-query+langbacklinks-param-limit": "Скільки всього сторінок виводити.",
        "apihelp-query+langbacklinks-param-dir": "Напрямок, у якому перелічити.",
        "apihelp-query+langbacklinks-example-simple": "Отримати сторінки, що посилаються на [[:fr:Test]].",
        "apihelp-query+langbacklinks-example-generator": "Отримати інформацію про сторінки, що посилаються на [[:fr:Test]].",
-       "apihelp-query+langlinks-description": "Видає усі міжмовні посилання із вказаних сторінок.",
        "apihelp-query+langlinks-param-limit": "Скільки мовних посилань виводити.",
        "apihelp-query+langlinks-param-url": "Чи отримувати повну URL-адресу (не може використовуватися з <var>$1prop</var>).",
        "apihelp-query+langlinks-param-prop": "Які додаткові властивості для отримання кожного із міжмовного посилання:",
        "apihelp-query+langlinks-param-dir": "Напрямок, у якому перелічити.",
        "apihelp-query+langlinks-param-inlanguagecode": "Код мови для локалізованих назв мов.",
        "apihelp-query+langlinks-example-simple": "Отримати міжмовні посилання зі сторінки <kbd>Main Page</kbd>.",
-       "apihelp-query+links-description": "Видає усі посилання із вказаних сторінок.",
        "apihelp-query+links-param-namespace": "Показати посилання лише у цих просторах назв.",
        "apihelp-query+links-param-limit": "Скільки посилань виводити.",
        "apihelp-query+links-param-titles": "Перерахувати лише посилання на ці назви. Корисно для перевірки, чи певна сторінка посилається на певну назву.",
        "apihelp-query+links-example-simple": "Отримати посилання зі сторінки <kbd>Main Page</kbd>.",
        "apihelp-query+links-example-generator": "Отримати інформацію про сторінки посилань на сторінці <kbd>Main Page</kbd>.",
        "apihelp-query+links-example-namespaces": "Отримати посилання зі сторінки <kbd>Main Page</kbd> у просторах назв {{ns:user}} і {{ns:template}}.",
-       "apihelp-query+linkshere-description": "Знайти усі сторінки, що посилаються на подані сторінки.",
        "apihelp-query+linkshere-param-prop": "Які властивості отримати:",
        "apihelp-query+linkshere-paramvalue-prop-pageid": "ID кожної сторінки.",
        "apihelp-query+linkshere-paramvalue-prop-title": "Назва кожної сторінки.",
        "apihelp-query+linkshere-param-show": "Показати лише елементи, що відповідають цим критеріям:\n;redirect:Показати лише перенаправлення.\n;!redirect:Показати лише не перенаправлення.",
        "apihelp-query+linkshere-example-simple": "Отримати список сторінок, що посилаються на [[Main Page]].",
        "apihelp-query+linkshere-example-generator": "Отримати інформацію про сторінки, що посилаються на [[Main Page]].",
-       "apihelp-query+logevents-description": "Отримати події з журналів.",
        "apihelp-query+logevents-param-prop": "Які властивості отримати:",
        "apihelp-query+logevents-paramvalue-prop-ids": "Додає ID події в журналі.",
        "apihelp-query+logevents-paramvalue-prop-title": "Додає назву сторінки події в журналі.",
        "apihelp-query+logevents-param-tag": "Перерахувати лише записи подій, помічені цим теґом.",
        "apihelp-query+logevents-param-limit": "Скільки всього виводити записів подій.",
        "apihelp-query+logevents-example-simple": "Перелічити останні подій в журналі.",
-       "apihelp-query+pagepropnames-description": "Перелічити усі назви властивостей сторінки, що використовуються у вікі.",
        "apihelp-query+pagepropnames-param-limit": "Максимальна кількість назв для виведення.",
        "apihelp-query+pagepropnames-example-simple": "Отримати перші 10 назв властивостей.",
-       "apihelp-query+pageprops-description": "Дає різні властивості сторінки, визначені у вмісті сторінки.",
        "apihelp-query+pageprops-param-prop": "Перерахувати лише ці властивості сторінки. (<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd> видає назви властивостей сторінки, що використовуються). Корисно для перевірки, чи сторінка використовує певну властивість сторінки.",
        "apihelp-query+pageprops-example-simple": "Отримати властивості для сторінок <kbd>Main Page</kbd> і <kbd>MediaWiki</kbd>.",
-       "apihelp-query+pageswithprop-description": "Перелічити усі сторінки, що використовують подану властивість сторінки.",
        "apihelp-query+pageswithprop-param-propname": "Властивість сторі́нки, для якої перелічити сторінки́ (<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd> видає назви властивостей сторінки, що використовуються).",
        "apihelp-query+pageswithprop-param-prop": "Які відомості включати:",
        "apihelp-query+pageswithprop-paramvalue-prop-ids": "Додає ID сторінки.",
        "apihelp-query+pageswithprop-param-dir": "У якому напрямку сортувати.",
        "apihelp-query+pageswithprop-example-simple": "Перелічити перші 10, що використовують <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+pageswithprop-example-generator": "Отримати додаткову інформацію про перші 10 сторінок, що використовують <code>_&#95;NOTOC_&#95;</code>.",
-       "apihelp-query+prefixsearch-description": "Виконати пошук назв сторінок за префіксом.\n\nНезважаючи на подібність назв, цей модуль не призначений для того, аби бути еквівалентом [[Special:PrefixIndex]]; щодо цього, перегляньте <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> із параметром <kbd>apprefix</kbd>. Мета цього модуля така ж, як і <kbd>[[Special:ApiHelp/opensearch|action=opensearch]]</kbd>: взяти текст, введений користувачем, і вивести найбільш відповідні назви. Залежно від програмної підоснови пошукової системи, сюди можуть також входити виправлення орфографії, уникнення перенаправлень чи інша евристика.",
        "apihelp-query+prefixsearch-param-search": "Рядок пошуку.",
        "apihelp-query+prefixsearch-param-namespace": "Простори назв, у яких шукати.",
        "apihelp-query+prefixsearch-param-limit": "Максимальна кількість результатів для виведення.",
        "apihelp-query+prefixsearch-param-offset": "Кількість результатів, які пропустити.",
        "apihelp-query+prefixsearch-example-simple": "Шукати назви сторінок, які починаються з <kbd>meaning</kbd>.",
        "apihelp-query+prefixsearch-param-profile": "Профіль пошуку для використання.",
-       "apihelp-query+protectedtitles-description": "Вивести список усіх назв, захищених від створення.",
        "apihelp-query+protectedtitles-param-namespace": "Перерахувати назви лише в цих просторах назв.",
        "apihelp-query+protectedtitles-param-level": "Перерахувати лише назви з цими рівням захисту.",
        "apihelp-query+protectedtitles-param-limit": "Скільки всього сторінок виводити.",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "Додає рівень захисту.",
        "apihelp-query+protectedtitles-example-simple": "Вивести список захищених назв.",
        "apihelp-query+protectedtitles-example-generator": "Знайти посилання на захищені назви в основному просторі назв.",
-       "apihelp-query+querypage-description": "Отримати список, кий дає спеціальна сторінка на базі QueryPage.",
        "apihelp-query+querypage-param-page": "Назва спеціальної сторінки. Зважте, що чутлива до регістру.",
        "apihelp-query+querypage-param-limit": "Кількість результатів, які виводити.",
        "apihelp-query+querypage-example-ancientpages": "Видати результати з [[Special:Ancientpages]].",
-       "apihelp-query+random-description": "Отримати набір випадкових сторінок.\n\nСторінки перелічені у певній послідовності, лише початкова точка рандомна. Це означає, що якщо, наприклад, <samp>Main Page</samp> є першою випадковою сторінкою у списку, <samp>List of fictional monkeys</samp> <em>завжди</em> буде другою, <samp>List of people on stamps of Vanuatu</samp> — третьою, і т. д.",
        "apihelp-query+random-param-namespace": "Вивести сторінки лише у цих просторах назв.",
        "apihelp-query+random-param-limit": "Обмежити кількість випадкових сторінок, які буде видано.",
        "apihelp-query+random-param-redirect": "Використати натомість <kbd>$1filterredir=redirects</kbd>.",
        "apihelp-query+random-param-filterredir": "Як фільтрувати перенаправлення.",
        "apihelp-query+random-example-simple": "Отримати дві випадкові сторінки з основного простору назв.",
        "apihelp-query+random-example-generator": "Видати інформацію про дві випадкові сторінки з основного простору назв.",
-       "apihelp-query+recentchanges-description": "Перерахувати нещодавні зміни.",
        "apihelp-query+recentchanges-param-start": "Часова мітка початку переліку.",
        "apihelp-query+recentchanges-param-end": "Часова мітка завершення переліку.",
        "apihelp-query+recentchanges-param-namespace": "Відфільтрувати до змін лише у цих просторах назв.",
        "apihelp-query+recentchanges-param-generaterevisions": "Коли використовується як генератор, генерувати ідентифікатори версій замість заголовків. Записи нещодавніх редагувань без прив'язаних ID версій (наприклад, більшість записів журналів) не згенерують нічого.",
        "apihelp-query+recentchanges-example-simple": "Вивести нещодавні зміни.",
        "apihelp-query+recentchanges-example-generator": "Отримати інформацію про сторінки з недавніми невідпатрульованими змінами.",
-       "apihelp-query+redirects-description": "Видає усі перенаправлення на дані сторінки.",
        "apihelp-query+redirects-param-prop": "Які властивості отримати:",
        "apihelp-query+redirects-paramvalue-prop-pageid": "Ідентифікатор сторінки кожного перенаправлення.",
        "apihelp-query+redirects-paramvalue-prop-title": "Назва кожного перенаправлення.",
        "apihelp-query+redirects-param-show": "Показати лише елементи, які відповідають цим критеріям:\n;fragment:Показати лише перенаправлення з фрагментом.\n;!fragment:Показати лише перенаправлення без фрагмента.",
        "apihelp-query+redirects-example-simple": "Отримати список перенаправлень на [[Main Page]].",
        "apihelp-query+redirects-example-generator": "Отримати інформацію про всі перенаправлення на [[Main Page]].",
-       "apihelp-query+revisions-description": "Отримати інформацію про версію.\n\nМоже бути використано кількома способами:\n# Отримати дані про набір сторінок (останні версії), вказавши назви або ідентифікатори сторінок.\n# Отримати версії для однієї вказаної сторінки, використавши назви або ідентифікатори і початок, кінець чи ліміт.\n# Отримати дані про набір версій, встановивши їх ID й ідентифікатори версій.",
        "apihelp-query+revisions-paraminfo-singlepageonly": "Може використовуватися тільки з однією сторінкою (режим #2).",
-       "apihelp-query+revisions-param-startid": "Ð\97 Ñ\8fкого ID Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97 Ð¿Ð¾Ñ\87аÑ\82и Ð¿ÐµÑ\80елÑ\96к.",
-       "apihelp-query+revisions-param-endid": "Ð\97Ñ\83пиниÑ\82и Ð¿ÐµÑ\80елÑ\96к Ð²ÐµÑ\80Ñ\81Ñ\96й Ð½Ð° Ñ\86Ñ\8cомÑ\83 ID Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97.",
+       "apihelp-query+revisions-param-startid": "Ð\9fоÑ\87аÑ\82и Ð½Ñ\83меÑ\80аÑ\86Ñ\96Ñ\8e Ð· Ð¼Ñ\96Ñ\82ки Ñ\87аÑ\81Ñ\83 Ñ\86Ñ\96Ñ\94Ñ\97 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97. Ð\92еÑ\80Ñ\81Ñ\96Ñ\8f Ð¿Ð¾Ð²Ð¸Ð½Ð½Ð° Ñ\96Ñ\81нÑ\83ваÑ\82и, Ð°Ð»Ðµ Ð½Ðµ Ð¾Ð±Ð¾Ð²'Ñ\8fзково Ð¼Ð°Ñ\94 Ð½Ð°Ð»ÐµÐ¶Ð°Ñ\82и Ð´Ð¾ Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81Ñ\82оÑ\80Ñ\96нки.",
+       "apihelp-query+revisions-param-endid": "Ð\97Ñ\83пиниÑ\82и Ð½Ñ\83меÑ\80аÑ\86Ñ\96Ñ\8e Ð½Ð° Ð¼Ñ\96Ñ\82Ñ\86Ñ\96 Ñ\87аÑ\81Ñ\83 Ñ\86Ñ\96Ñ\94Ñ\97 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97. Ð¦Ñ\8f Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\8f Ð¿Ð¾Ð²Ð¸Ð½Ð½Ð° Ñ\96Ñ\81нÑ\83ваÑ\82и, Ð°Ð»Ðµ Ð½Ðµ Ð¾Ð±Ð¾Ð²'Ñ\8fзково Ð¼Ñ\83Ñ\81иÑ\82Ñ\8c Ð½Ð°Ð»ÐµÐ¶Ð°Ñ\82и Ð´Ð¾ Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81Ñ\82оÑ\80Ñ\96нки.",
        "apihelp-query+revisions-param-start": "З якої часової мітки версії почати перелік.",
        "apihelp-query+revisions-param-end": "Перелічувати до цієї часової мітки.",
        "apihelp-query+revisions-param-user": "Включати лише версій, зроблені цим користувачем.",
        "apihelp-query+revisions+base-paramvalue-prop-parsedcomment": "Проаналізований коментар користувача до версії.",
        "apihelp-query+revisions+base-paramvalue-prop-content": "Текст версії.",
        "apihelp-query+revisions+base-paramvalue-prop-tags": "Мітки версії.",
-       "apihelp-query+revisions+base-paramvalue-prop-parsetree": "Синтаксичне дерево XML вмісту версії (передбачає модель вмісту <code>$1</code>).",
+       "apihelp-query+revisions+base-paramvalue-prop-parsetree": "<span class=\"apihelp-deprecated\">Deprecated.</span> Використовуйте натомість <kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> або <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>. Синтаксичне дерево XML вмісту версії (передбачає модель вмісту <code>$1</code>).",
        "apihelp-query+revisions+base-param-limit": "Обмежити кількість версій, які буде видано.",
-       "apihelp-query+revisions+base-param-expandtemplates": "Розгорнути шаблони у вмісті версії (передбачає $1prop=content).",
-       "apihelp-query+revisions+base-param-generatexml": "Генерувати синтаксичне дерево XML для вмісту версії (передбачає $1prop=content; замінено на <kbd>$1prop=parsetree</kbd>).",
-       "apihelp-query+revisions+base-param-parse": "Аналізувати вміст версії (передбачає $1prop=content). З причин продуктивності, якщо використовується ця опція, $1limit встановлюється як 1.",
+       "apihelp-query+revisions+base-param-expandtemplates": "Ð\92икоÑ\80иÑ\81Ñ\82овÑ\83йÑ\82е Ð½Ð°Ñ\82омÑ\96Ñ\81Ñ\82Ñ\8c <kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd>. Ð Ð¾Ð·Ð³Ð¾Ñ\80нÑ\83Ñ\82и Ñ\88аблони Ñ\83 Ð²Ð¼Ñ\96Ñ\81Ñ\82Ñ\96 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97 (пеÑ\80едбаÑ\87аÑ\94 $1prop=content).",
+       "apihelp-query+revisions+base-param-generatexml": "Ð\92икоÑ\80иÑ\81Ñ\82овÑ\83йÑ\82е Ð½Ð°Ñ\82омÑ\96Ñ\81Ñ\82Ñ\8c <kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> Ð°Ð±Ð¾ <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>. Ð\93енеÑ\80Ñ\83ваÑ\82и Ñ\81инÑ\82акÑ\81иÑ\87не Ð´ÐµÑ\80ево XML Ð´Ð»Ñ\8f Ð²Ð¼Ñ\96Ñ\81Ñ\82Ñ\83 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97 (пеÑ\80едбаÑ\87аÑ\94 $1prop=content; Ð·Ð°Ð¼Ñ\96нено Ð½Ð° <kbd>$1prop=parsetree</kbd>).",
+       "apihelp-query+revisions+base-param-parse": "Ð\92икоÑ\80иÑ\81Ñ\82овÑ\83йÑ\82е Ð½Ð°Ñ\82омÑ\96Ñ\81Ñ\82Ñ\8c <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>. Ð\90налÑ\96зÑ\83ваÑ\82и Ð²Ð¼Ñ\96Ñ\81Ñ\82 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97 (пеÑ\80едбаÑ\87аÑ\94 $1prop=content). Ð\97 Ð¿Ñ\80иÑ\87ин Ð¿Ñ\80одÑ\83кÑ\82ивноÑ\81Ñ\82Ñ\96, Ñ\8fкÑ\89о Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83Ñ\94Ñ\82Ñ\8cÑ\81Ñ\8f Ñ\86Ñ\8f Ð¾Ð¿Ñ\86Ñ\96Ñ\8f, $1limit Ð²Ñ\81Ñ\82ановлÑ\8eÑ\94Ñ\82Ñ\8cÑ\81Ñ\8f Ñ\8fк 1.",
        "apihelp-query+revisions+base-param-section": "Витягнути вміст лише розділу з цим номером.",
-       "apihelp-query+revisions+base-param-diffto": "ID версії, з якою порівняти кожну версію. Використайте <kbd>prev</kbd>, <kbd>next</kbd> і <kbd>cur</kbd> для попередньої, наступної та поточної версій відповідно.",
-       "apihelp-query+revisions+base-param-difftotext": "Текст, з яким порівняти кожну версію. Порівнює лише обмежену кількість версій. Перевизначає <var>$1diffto</var>. Якщо вказано <var>$1section</var>, лише ця версія буде порівняна з цим текстом.",
-       "apihelp-query+revisions+base-param-difftotextpst": "Виконати попередню трансформацію тексту перед виведенням дифу. Дійсне лише з використанням <var>$1difftotext</var>.",
+       "apihelp-query+revisions+base-param-diffto": "Використовуйте натомість <kbd>[[Special:ApiHelp/compare|action=compare]]</kbd>. ID версії, з якою порівняти кожну версію. Використайте <kbd>prev</kbd>, <kbd>next</kbd> і <kbd>cur</kbd> для попередньої, наступної та поточної версій відповідно.",
+       "apihelp-query+revisions+base-param-difftotext": "Ð\92икоÑ\80иÑ\81Ñ\82овÑ\83йÑ\82е Ð½Ð°Ñ\82омÑ\96Ñ\81Ñ\82Ñ\8c <kbd>[[Special:ApiHelp/compare|action=compare]]</kbd>. Ð¢ÐµÐºÑ\81Ñ\82, Ð· Ñ\8fким Ð¿Ð¾Ñ\80Ñ\96внÑ\8fÑ\82и ÐºÐ¾Ð¶Ð½Ñ\83 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\8e. Ð\9fоÑ\80Ñ\96внÑ\8eÑ\94 Ð»Ð¸Ñ\88е Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ñ\83 ÐºÑ\96лÑ\8cкÑ\96Ñ\81Ñ\82Ñ\8c Ð²ÐµÑ\80Ñ\81Ñ\96й. Ð\9fеÑ\80евизнаÑ\87аÑ\94 <var>$1diffto</var>. Ð¯ÐºÑ\89о Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ <var>$1section</var>, Ð»Ð¸Ñ\88е Ñ\86Ñ\8f Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\8f Ð±Ñ\83де Ð¿Ð¾Ñ\80Ñ\96внÑ\8fна Ð· Ñ\86им Ñ\82екÑ\81Ñ\82ом.",
+       "apihelp-query+revisions+base-param-difftotextpst": "Використовуйте натомість <kbd>[[Special:ApiHelp/compare|action=compare]]</kbd>. Виконати попередню трансформацію тексту перед виведенням дифу. Дійсне лише з використанням <var>$1difftotext</var>.",
        "apihelp-query+revisions+base-param-contentformat": "Формат серіалізації, використаний для <var>$1difftotext</var> й очікуваний для контенту-результату.",
-       "apihelp-query+search-description": "Виконати повнотекстовий пошук.",
        "apihelp-query+search-param-search": "Шукати назви сторінок або вміст, що співпадає з цим значенням. Ви можете використати рядок пошуку для виклику спеціальних функцій пошуку, залежно від внутрішніх установок пошуку у вікі.",
        "apihelp-query+search-param-namespace": "Шукати лише в межах цих просторів назв.",
        "apihelp-query+search-param-what": "Який тип пошуку виконати.",
        "apihelp-query+search-param-limit": "Скільки всього сторінок виводити.",
        "apihelp-query+search-param-interwiki": "Включати інтервікі в результатах пошуку, якщо доступно.",
        "apihelp-query+search-param-backend": "Який бекенд пошуку використовувати, якщо не за замовчуванням.",
-       "apihelp-query+search-param-enablerewrites": "Ð\92клÑ\8eÑ\87иÑ\82и Ð²Ð½Ñ\83Ñ\82Ñ\80Ñ\96Ñ\88нÑ\94 Ð¿ÐµÑ\80епиÑ\81Ñ\83ваннÑ\8f Ð·Ð°Ð¿Ð¸Ñ\82Ñ\83. Ð\94еÑ\8fкÑ\96 Ð¿Ð¾Ñ\88Ñ\83ковÑ\96 Ð±ÐµÐºÐµÐ½Ð´Ð¸ Ð¼Ð¾Ð¶Ñ\83Ñ\82Ñ\8c Ð¿ÐµÑ\80епиÑ\81аÑ\82и Ð·Ð°Ð¿Ð¸Ñ\82 Ñ\82ак, Ñ\8fк, Ð½Ð° Ð¹Ð¾Ð³Ð¾ Ð´Ñ\83мкÑ\83, Ð²Ñ\96н Ð´Ð°Ñ\81Ñ\82Ñ\8c кращі результати, наприклад, виправивши орфографічні помилки.",
+       "apihelp-query+search-param-enablerewrites": "Ð\92клÑ\8eÑ\87иÑ\82и Ð²Ð½Ñ\83Ñ\82Ñ\80Ñ\96Ñ\88нÑ\94 Ð¿ÐµÑ\80епиÑ\81Ñ\83ваннÑ\8f Ð·Ð°Ð¿Ð¸Ñ\82Ñ\83. Ð\94еÑ\8fкÑ\96 Ð¿Ð¾Ñ\88Ñ\83ковÑ\96 Ð±ÐµÐºÐµÐ½Ð´Ð¸ Ð¼Ð¾Ð¶Ñ\83Ñ\82Ñ\8c Ð¿ÐµÑ\80епиÑ\81аÑ\82и Ð·Ð°Ð¿Ð¸Ñ\82 Ñ\82ак, Ñ\89об Ð²Ð¾Ð½Ð¸, Ñ\82еоÑ\80еÑ\82иÑ\87но, Ð´Ð°Ð²Ð°Ð»Ð¸ кращі результати, наприклад, виправивши орфографічні помилки.",
        "apihelp-query+search-example-simple": "Шукати <kbd>meaning</kbd>.",
        "apihelp-query+search-example-text": "Шукати в текстах <kbd>meaning</kbd>.",
        "apihelp-query+search-example-generator": "Отримати інформацію про сторінки, на яких знайдено <kbd>meaning</kbd>.",
-       "apihelp-query+siteinfo-description": "Видати загальну інформацію про сайт.",
        "apihelp-query+siteinfo-param-prop": "Яку інформацію отримати:",
        "apihelp-query+siteinfo-paramvalue-prop-general": "Загальна системна інформація.",
        "apihelp-query+siteinfo-paramvalue-prop-namespaces": "Список зареєстрованих просторів назв та їхні канонічні назви.",
        "apihelp-query+siteinfo-example-simple": "Вибрати інформацію про сайт.",
        "apihelp-query+siteinfo-example-interwiki": "Отримати список локальних інтервікі-префіксів.",
        "apihelp-query+siteinfo-example-replag": "Перевірити поточне відставання реплікації.",
-       "apihelp-query+stashimageinfo-description": "Видає інформацію про приховані файли.",
        "apihelp-query+stashimageinfo-param-filekey": "Ключ, який ідентифікує попереднє завантаження, що було тимчасово приховане.",
        "apihelp-query+stashimageinfo-param-sessionkey": "Аліас для $1filekey, для зворотної сумісності.",
        "apihelp-query+stashimageinfo-example-simple": "Видає інформацію про прихований файл.",
        "apihelp-query+stashimageinfo-example-params": "Видає мініатюри для двох прихованих файлів.",
-       "apihelp-query+tags-description": "Перелічити мітки змін.",
        "apihelp-query+tags-param-limit": "Максимальна кількість міток у списку.",
        "apihelp-query+tags-param-prop": "Які властивості отримати:",
        "apihelp-query+tags-paramvalue-prop-name": "Додає назву мітки.",
        "apihelp-query+tags-paramvalue-prop-source": "Отримує джерела мітки, що може включати <samp>extension</samp> для визначених розширеннями міток і <samp>manual</samp> для міток, які користувачі можуть застосовувати вручну.",
        "apihelp-query+tags-paramvalue-prop-active": "І все ж позначка досі задіяна.",
        "apihelp-query+tags-example-simple": "Перелічити доступні мітки.",
-       "apihelp-query+templates-description": "Видає усі сторінки, які включені на вказаних сторінках.",
        "apihelp-query+templates-param-namespace": "Показати шаблони лише у цьому просторі назв.",
        "apihelp-query+templates-param-limit": "Скільки шаблонів виводити.",
        "apihelp-query+templates-param-templates": "Перерахувати лише ці шаблони. Корисно для перевірки, чи певна сторінка використовує певний шаблон.",
        "apihelp-query+templates-example-simple": "Отримати шаблони, використані на сторінці <kbd>Main Page</kbd>.",
        "apihelp-query+templates-example-generator": "Отримати інформацію про сторінки шаблонів, використаних на сторінці <kbd>Main Page</kbd>.",
        "apihelp-query+templates-example-namespaces": "Отримати сторінки у просторах назв {{ns:user}} і {{ns:template}}, які включені на сторінці <kbd>Main Page</kbd>.",
-       "apihelp-query+tokens-description": "Отримує токени для дій, що змінюють дані.",
        "apihelp-query+tokens-param-type": "Типи токена для запиту.",
        "apihelp-query+tokens-example-simple": "Отримати csrf-токен (за замовчуванням).",
        "apihelp-query+tokens-example-types": "Отримати токен спостереження і токен патрулювання.",
-       "apihelp-query+transcludedin-description": "Знайти усі сторінки, що включають подані сторінки.",
        "apihelp-query+transcludedin-param-prop": "Які властивості отримати:",
        "apihelp-query+transcludedin-paramvalue-prop-pageid": "ID кожної сторінки.",
        "apihelp-query+transcludedin-paramvalue-prop-title": "Назва кожної сторінки.",
        "apihelp-query+transcludedin-param-show": "Показати лише елементи, що відповідають цим критеріям:\n;redirect:Показати лише перенаправлення.\n;!redirect:Показати лише не перенаправлення.",
        "apihelp-query+transcludedin-example-simple": "Отримати список сторінок, що включають <kbd>Main Page</kbd>.",
        "apihelp-query+transcludedin-example-generator": "Отримати інформацію про сторінки, які включають <kbd>Main Page</kbd>.",
-       "apihelp-query+usercontribs-description": "Отримати всі редагування користувача.",
        "apihelp-query+usercontribs-param-limit": "Максимальна кількість елементів внеску для виведення.",
        "apihelp-query+usercontribs-param-start": "З якої часової мітки виводити.",
        "apihelp-query+usercontribs-param-end": "До якої часової мітки виводити.",
        "apihelp-query+usercontribs-param-toponly": "Виводити лише зміни, які є останньою версією.",
        "apihelp-query+usercontribs-example-user": "Показати внесок користувача <kbd>Example</kbd>.",
        "apihelp-query+usercontribs-example-ipprefix": "Показати внесок з усіх IP-адрес з префіксом <kbd>192.0.2.</kbd>.",
-       "apihelp-query+userinfo-description": "Отримати інформацію про поточного користувача.",
        "apihelp-query+userinfo-param-prop": "Які саме відомості включати:",
        "apihelp-query+userinfo-paramvalue-prop-blockinfo": "Позначає, чи поточний користувач заблокований, ким, з якої причини.",
        "apihelp-query+userinfo-paramvalue-prop-hasmsg": "Додає мітку <samp>messages</samp>, якщо у користувача є непроглянуті повідомлення.",
        "apihelp-query+userinfo-param-attachedwiki": "Із <kbd>$1prop=centralids</kbd>, вказати, чи користувач має приєднану вікі, визначену цим ідентифікатором.",
        "apihelp-query+userinfo-example-simple": "Отримати інформацію про поточного користувача.",
        "apihelp-query+userinfo-example-data": "Отримати додаткову інформацію про поточного користувача.",
-       "apihelp-query+users-description": "Отримати інформацію про список користувачів.",
        "apihelp-query+users-param-prop": "Яку інформацію включити:",
        "apihelp-query+users-paramvalue-prop-blockinfo": "Мітки про те чи є користувач заблокованим, ким, і з якою причиною.",
        "apihelp-query+users-paramvalue-prop-groups": "Перелічує всі групи, до яких належить кожен з користувачів.",
        "apihelp-query+users-param-userids": "Список ідентифікаторів користувачів, щодо яких треба отримати інформацію.",
        "apihelp-query+users-param-token": "Використати натомість <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-query+users-example-simple": "Вивести інформацію для користувача <kbd>Example</kbd>.",
-       "apihelp-query+watchlist-description": "Отримати нещодавні зміни сторінок у списку спостереження поточного користувача.",
        "apihelp-query+watchlist-param-allrev": "Включити декілька версій тієї з сторінки у поданому часовому діапазоні.",
        "apihelp-query+watchlist-param-start": "Часова мітка, з якої почати перелік.",
        "apihelp-query+watchlist-param-end": "Часова мітка завершення переліку.",
        "apihelp-query+watchlist-example-generator": "Видати інформацію про сторінку для нещодавно змінених сторінок у списку спостереження поточного користувача.",
        "apihelp-query+watchlist-example-generator-rev": "Вибрати інформацію про версію для усіх нещодавніх змін на сторінках у списку спостереження поточного користувача.",
        "apihelp-query+watchlist-example-wlowner": "Перелічити верхні версії для нещодавно змінених сторінок у списку спостереження користувача <kbd>Example</kbd>.",
-       "apihelp-query+watchlistraw-description": "Отримати усі сторінки у списку спостереження поточного користувача.",
        "apihelp-query+watchlistraw-param-namespace": "Перерахувати сторінки лише в поданих просторах назв.",
        "apihelp-query+watchlistraw-param-limit": "Скільки всього видати результатів за один запит.",
        "apihelp-query+watchlistraw-param-prop": "Які додаткові властивості отримати:",
        "apihelp-query+watchlistraw-param-totitle": "Назва (з префіксом простору назв), якою закінчити перерахування.",
        "apihelp-query+watchlistraw-example-simple": "Перелічити сторінки у списку спостереження поточного користувача.",
        "apihelp-query+watchlistraw-example-generator": "Вибрати інформацію про сторінку для сторінок у списку спостереження поточного користувача.",
-       "apihelp-removeauthenticationdata-description": "Вилучити параметри автентифікації для поточного користувача.",
        "apihelp-removeauthenticationdata-example-simple": "Спроба вилучити дані поточного користувача для <kbd>FooAuthenticationRequest</kbd>.",
-       "apihelp-resetpassword-description": "Відправити користувачу лист для відновлення пароля.",
-       "apihelp-resetpassword-description-noroutes": "Немає доступних способів відновити пароль.\n\nУвімкніть способи у <var>[[mw:Special:MyLanguage/Manual:$wgPasswordResetRoutes|$wgPasswordResetRoutes]]</var>, щоб використовувати цей модуль.",
        "apihelp-resetpassword-param-user": "Користувача відновлено.",
        "apihelp-resetpassword-param-email": "Адреса електронної пошти користувача відновлено.",
        "apihelp-resetpassword-example-user": "Надіслати лист для скидання пароля користувачу <kbd>Example</kbd>.",
        "apihelp-resetpassword-example-email": "Надіслати лист для скидання пароля усім користувачам з адресою електронної пошти <kbd>user@example.com</kbd>.",
-       "apihelp-revisiondelete-description": "Вилучити або відновити версії.",
        "apihelp-revisiondelete-param-type": "Тип здійснюваного вилучення версії.",
        "apihelp-revisiondelete-param-target": "Назва сторінки, версію якої вилучити, якщо вимагається для цього типу.",
        "apihelp-revisiondelete-param-ids": "Ідентифікатори версій, які слід вилучити.",
        "apihelp-revisiondelete-param-tags": "Теги для застосування до запису в журналі вилучень",
        "apihelp-revisiondelete-example-revision": "Приховати вміст версії <kbd>12345</kbd> сторінки <kbd>Main Page</kbd>.",
        "apihelp-revisiondelete-example-log": "Приховати всі дані у записі журналу <kbd>67890</kbd> з причиною <kbd>BLP violation</kbd>.",
-       "apihelp-rollback-description": "Скасувати останнє редагування цієї сторінки.\n\nЯкщо користувач, який редагував сторінку, зробив декілька редагувань підряд, їх усі буде відкочено.",
        "apihelp-rollback-param-title": "Назва сторінки, у якій здійснити відкіт. Не може використовуватись разом з <var>$1pageid</var>.",
        "apihelp-rollback-param-pageid": "Ідентифікатор сторінки у якій здійснити відкіт. Не може використовуватись разом з <var>$1title</var>.",
        "apihelp-rollback-param-tags": "Теги, які будуть застосовані до відкоту.",
        "apihelp-rollback-param-watchlist": "Безумовно додати або вилучити сторінку із списку спостереження поточного користувача, використати налаштування, або не змінювати статус (не)спостереження.",
        "apihelp-rollback-example-simple": "Відкинути останні редагування сторінки <kbd>Main Page</kbd> здійснені користувачем <kbd>Example</kbd>.",
        "apihelp-rollback-example-summary": "Відкинути останні редагування сторінки <kbd>Main Page</kbd> здійснені IP-користувачем <kbd>192.0.2.5</kbd> з причиною <kbd>Reverting vandalism</kbd>, та позначити ці редагування та відкіт як редагування бота.",
-       "apihelp-rsd-description": "Експортувати як схему RSD (Really Simple Discovery).",
        "apihelp-rsd-example-simple": "Експортувати RSD-схему.",
-       "apihelp-setnotificationtimestamp-description": "Оновити часову мітку сповіщень для сторінок, що спостерігаються.\n\nЦе зачепить підсвічування змінених сторінок у списку спостереження та історії, а також надсилання електронного листа якщо опція налаштувань «{{int:tog-enotifwatchlistpages}}» увімкнена.",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "Опрацювати всі сторінки, що спостерігаються.",
        "apihelp-setnotificationtimestamp-param-timestamp": "Часова мітка, яку вказати у якості часової мітки сповіщень.",
        "apihelp-setnotificationtimestamp-param-torevid": "Версія до якої вказати часову мітку сповіщень (лише одна сторінка).",
        "apihelp-setnotificationtimestamp-example-page": "Стерти статус сповіщень для <kbd>Main page</kbd>.",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "Встановити часову мітку сповіщень для <kbd>Main page</kbd> так, що всі редагування після 1 січня 2012 будуть виглядати як не переглянуті.",
        "apihelp-setnotificationtimestamp-example-allpages": "Стерти статус сповіщень для сторінок у просторі назв <kbd>{{ns:user}}</kbd>.",
-       "apihelp-setpagelanguage-description": "Змінити мову сторінки.",
-       "apihelp-setpagelanguage-description-disabled": "Зміна мови сторінки заборонена в цій вікі. \n\nУвімкніть <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var>, щоб використовувати цю дію.",
        "apihelp-setpagelanguage-param-title": "Назва сторінки, мову якої Ви хочете змінити. Не можна використовувати разом з <var>$1pageid</var>.",
        "apihelp-setpagelanguage-param-pageid": "Ідентифікатор сторінки, мову якої Ви хочете змінити. Не можна використовувати разом з <var>$1title</var>.",
        "apihelp-setpagelanguage-param-lang": "Код мови, якою треба замінити поточну мову сторінки. Використовуйте <kbd>default</kbd>, щоб встановити стандартну мову вмісту цієї вікі як мову сторінки.",
        "apihelp-setpagelanguage-param-tags": "Змінити теги для застосування до запису в журналі, який буде результатом цієї дії.",
        "apihelp-setpagelanguage-example-language": "Змінити мову сторінки <kbd>Main Page</kbd> на «баскська».",
        "apihelp-setpagelanguage-example-default": "Змінити мову сторінки з ідентифікатором 123 на стандартну мову вмісту вікі.",
-       "apihelp-stashedit-description": "Підготувати редагування в загальний кеш.\n\nЦе призначено для використання через AJAX з форми редагування, щоб поліпшити продуктивність збереження сторінки.",
        "apihelp-stashedit-param-title": "Назва редагованої сторінки.",
        "apihelp-stashedit-param-section": "Номер розділу. <kbd>0</kbd> для вступного розділу, <kbd>new</kbd> для нового розділу.",
        "apihelp-stashedit-param-sectiontitle": "Назва нового розділу.",
        "apihelp-stashedit-param-contentformat": "Формат серіалізації вмісту, використовуваний для введеного тексту.",
        "apihelp-stashedit-param-baserevid": "Ідентифікатор базової версії.",
        "apihelp-stashedit-param-summary": "Змінити опис.",
-       "apihelp-tag-description": "Додати або вилучити зміни міток з окремих версій або записів журналу.",
        "apihelp-tag-param-rcid": "Один або більше ідентифікаторів останніх змін, до яких додати або вилучити мітки.",
        "apihelp-tag-param-revid": "Один або більше ідентифікатор з якого додати або вилучити мітку.",
        "apihelp-tag-param-logid": "Один або більше ідентифікатор запису журналу з якого вилучити або додати мітку.",
        "apihelp-tag-param-tags": "Теги для застосування до запису в журналі, що буде створений в результаті цієї дії.",
        "apihelp-tag-example-rev": "Додати мітку <kbd>vandalism</kbd> до версії з ідентифікатором 123 без вказання причини",
        "apihelp-tag-example-log": "Вилучити мітку <kbd>spam</kbd> з запису журналу з ідентифікатором 123 з причиною <kbd>Wrongly applied</kbd>",
-       "apihelp-tokens-description": "Отримати жетони для дій пов'язаних зі зміною даних.\n\nЦей модуль застарів на користь [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
        "apihelp-tokens-param-type": "Які типи жетонів запитати.",
        "apihelp-tokens-example-edit": "Отримати жетон редагування (за замовчуванням).",
        "apihelp-tokens-example-emailmove": "Отримати жетон електронної пошти та жетон перейменування.",
-       "apihelp-unblock-description": "Розблокувати користувача.",
        "apihelp-unblock-param-id": "Ідентифікатор блоку чи розблокування (отриманий через <kbd>list=blocks</kbd>). Не може бути використано разом із <var>$1user</var> або <var>$1userid</var>.",
        "apihelp-unblock-param-user": "Ім'я користувача, IP-адреса чи IP-діапазон до розблокування. Не може бути використано разом із <var>$1id</var> або <var>$1userid</var>.",
        "apihelp-unblock-param-userid": "Ідентифікатор користувача до розблокування. Не може бути використано разом із <var>$1id</var> або <var>$1user</var>.",
        "apihelp-unblock-param-tags": "Змінити теги, що мають бути застосовані до запису в журналі блокувань.",
        "apihelp-unblock-example-id": "Зняти блокування з ідентифікатором #<kbd>105</kbd>.",
        "apihelp-unblock-example-user": "Розблокувати користувача <kbd>Bob</kbd> з причиною <kbd>Sorry Bob</kbd>.",
-       "apihelp-undelete-description": "Відновити версії вилученої сторінки.\n\nСписок вилучених версій (включено з часовими мітками) може бути отримано через [[Special:ApiHelp/query+deletedrevisions|prop=deletedrevisions]], а список ідентифікаторів вилучених файлів може бути отримано через [[Special:ApiHelp/query+filearchive|list=filearchive]].",
        "apihelp-undelete-param-title": "Назва сторінки, яку слід відновити.",
        "apihelp-undelete-param-reason": "Причина відновлення.",
        "apihelp-undelete-param-tags": "Змінити теги, що мають бути застосовані до запису в журналі вилучень.",
        "apihelp-undelete-param-watchlist": "Безумовно додати або вилучити сторінку із списку спостереження поточного користувача, використати налаштування, або не змінювати статус (не)спостереження.",
        "apihelp-undelete-example-page": "Відновити сторінку <kbd>Main Page</kbd>.",
        "apihelp-undelete-example-revisions": "Відновити дві версії сторінки <kbd>Main Page</kbd>.",
-       "apihelp-unlinkaccount-description": "Вилучити пов'язаний обліковий запис третьої сторони з поточного користувача.",
        "apihelp-unlinkaccount-example-simple": "Здійснити спробу вилучити посилання поточного користувача для провайдера, асоційованого з <kbd>FooAuthenticationRequest</kbd>.",
-       "apihelp-upload-description": "Завантажити файл, або отримати статус завантажень у процесі.\n\nДоступні декілька методів:\n* Завантажити вміст файлу напряму, використовуючи параметр <var>$1file</var>.\n* Завантажити файл шматками, використовуючи параметри <var>$1filesize</var>, <var>$1chunk</var>, та <var>$1offset</var>.\n* Змусити сервер Медіавікі отримати файл за URL, використовуючи параметр <var>$1url</var>.\n* Завершити раніше розпочате завантаження, яке не вдалось через попередження, використовуючи параметр <var>$1filekey</var>.\nЗауважте, що HTTP POST повинен бути здійснений як завантаження файлу (наприклад, використовуючи <code>multipart/form-data</code>)",
        "apihelp-upload-param-filename": "Цільова назва файлу.",
        "apihelp-upload-param-comment": "Коментар завантаження. Також використовується як початковий текст сторінок для нових файлів, якщо <var>$1text</var> не вказано.",
        "apihelp-upload-param-tags": "Змінити теги, які будуть застосовані до запису журналу завантажень та відповідної версії в історії редагувань сторінки файлу.",
        "apihelp-upload-param-checkstatus": "Отримувати статус завантаження лише для даного ключа файлу.",
        "apihelp-upload-example-url": "Завантаження з URL.",
        "apihelp-upload-example-filekey": "Завершити завантаження, що не вдалось через попередження.",
-       "apihelp-userrights-description": "Змінити членство користувача у групах.",
        "apihelp-userrights-param-user": "Ім'я користувача.",
        "apihelp-userrights-param-userid": "Ідентифікатор користувача.",
        "apihelp-userrights-param-add": "Додати користувача до цих груп. Якщо він вже є членом групи, оновити термін дії членства.",
        "apihelp-userrights-example-user": "Додати користувача <kbd>FooBot</kbd> до групи <kbd>bot</kbd> та вилучити із груп <kbd>sysop</kbd> та <kbd>bureaucrat</kbd>.",
        "apihelp-userrights-example-userid": "Додати користувача з ідентифікатором <kbd>123</kbd> до групи <kbd>bot</kbd> та вилучити із груп <kbd>sysop</kbd> та <kbd>bureaucrat</kbd>.",
        "apihelp-userrights-example-expiry": "Додати користувача <kbd>SometimeSysop</kbd> в групу <kbd>sysop</kbd> на 1 місяць.",
-       "apihelp-validatepassword-description": "Перевірити пароль на предмет відповідності політикам вікі щодо паролів.\n\nРезультати перевірки вказуються як <samp>Good</samp> якщо пароль прийнятний, <samp>Change</samp> якщо пароль може використовуватись для входу, але його треба змінити, і <samp>Invalid</samp> — якщо пароль використовувати не можна.",
        "apihelp-validatepassword-param-password": "Пароль до перевірки.",
        "apihelp-validatepassword-param-user": "Ім'я користувача, для використання при тестуванні створення облікового запису. Вказаний користувач не повинен існувати.",
        "apihelp-validatepassword-param-email": "Адреса електронної пошти, для використання при тестуванні створення облікового запису.",
        "apihelp-validatepassword-param-realname": "Справжнє ім'я, для використання при тестуванні створення облікового запису.",
        "apihelp-validatepassword-example-1": "Перевірити пароль <kbd>foobar</kbd> для поточного користувача.",
        "apihelp-validatepassword-example-2": "Перевірити пароль <kbd>qwerty</kbd> для створення користувача <kbd>Example</kbd>.",
-       "apihelp-watch-description": "Додати або вилучити сторінки з списку спостереження поточного користувача.",
        "apihelp-watch-param-title": "Сторінки до додання/вилучення. Використовуйте <var>$1titles</var> натомість.",
        "apihelp-watch-param-unwatch": "Якщо вказано, сторінку буде вилучено зі списку спостереження замість додання до нього.",
        "apihelp-watch-example-watch": "Спостерігати за сторінкою <kbd>Main Page</kbd>.",
        "apihelp-watch-example-generator": "Додати перші декілька сторінок основного простору назв до списку спостереження.",
        "apihelp-format-example-generic": "Повернути результат запиту у форматі $1.",
        "apihelp-format-param-wrappedhtml": "Повернути візуально пристосований HTML та пов'язані модулі ResourceLoader як об'єкт JSON.",
-       "apihelp-json-description": "Вивести дані у форматі JSON.",
        "apihelp-json-param-callback": "Якщо вказано, огортає вивід викликом даної функції. З міркувань безпеки, усі специфічні до користувача дані буде утримано.",
        "apihelp-json-param-utf8": "Якщо вказано, кодує більшість (але не всі) не-ASCII символів як UTF-8, замість заміни їх шістнадцятковими екрануючими послідовностями. За замовчуванням коли <var>formatversion</var> не є <kbd>1</kbd>.",
        "apihelp-json-param-ascii": "Якщо вказано, кодує всі не-ASCII використовуючи шістнадцяткові екрануючі послідовності. За замовчуванням коли <var>formatversion</var> є <kbd>1</kbd>.",
        "apihelp-json-param-formatversion": "Форматування виводу:\n;1:Формат зворотної сумісності (булеви XML-стилю, <samp>*</samp> ключі для вузлів вмісту тощо).\n;2:Експериментальний сучасний формат. Деталі можуть змінюватись.\n;latest:Використовувати найостанніший формат (наразі <kbd>2</kbd>). Може змінюватись без попередження.",
-       "apihelp-jsonfm-description": "Вивести дані у форматі JSON (вивід відформатованого коду за допомогою HTML).",
-       "apihelp-none-description": "Нічого не виводити.",
-       "apihelp-php-description": "Виводити дані у форматі серіалізованого PHP.",
        "apihelp-php-param-formatversion": "Форматування виводу:\n;1:Формат зворотної сумісності (булеви XML-стилю, <samp>*</samp> ключі для вузлів вмісту тощо).\n;2:Експериментальний сучасний формат. Деталі можуть змінюватись.\n;latest:Використовувати найостанніший формат (наразі <kbd>2</kbd>). Може змінюватись без попередження.",
-       "apihelp-phpfm-description": "Виводити дані у форматі серіалізованого PHP (вивід відформатованого коду за допомогою HTML).",
-       "apihelp-rawfm-description": "Виводити дані, включно з елементами налагодження, у форматі JSON (вивід відформатованого коду за допомогою HTML).",
-       "apihelp-xml-description": "Виводити дані у форматі XML.",
        "apihelp-xml-param-xslt": "Якщо вказано, додає названу сторінку як таблицю стилів XSL. Це значення повинне бути назвою у просторі назв {{ns:MediaWiki}}, що закінчується на <code>.xsl</code>.",
        "apihelp-xml-param-includexmlnamespace": "Якщо вказано, додає простір назв XML.",
-       "apihelp-xmlfm-description": "Вивести дані у форматі XML (вивід відформатованого коду за допомогою HTML).",
        "api-format-title": "Результат запиту до API MediaWiki",
        "api-format-prettyprint-header": "Це HTML-представлення формату $1. HTML є гарним для налагодження, однак не придатний для прикладного використання.\n\nУкажіть значення для параметра <var>format</var>, для того щоб змінити формат. Для перегляду не-HTML-представлення формату, $1, вкажіть <kbd>format=$2</kbd>.\n\nДив. [[mw:Special:MyLanguage/API|повну документацію]], або [[Special:ApiHelp/main|довідку з API]] для детальнішої інформації.",
        "api-format-prettyprint-header-only-html": "Це HTML-представлення призначене для налагодження, однак не придатне для прикладного використання.\n\nДив. [[mw:Special:MyLanguage/API|повну документацію]], або [[Special:ApiHelp/main|довідку з API]] для детальнішої інформації.",
+       "api-format-prettyprint-header-hyperlinked": "Це — HTML-репрезентація формату $1. HTML добрий для виправлення помилок, але непридатний для використання додатків.\n\nВкажіть параметр <var>format</var>, щоб змінити формат виводу. Щоб побачити репрезентацію формату $1 не у формі HTML, вкажіть [$3 <kbd>format=$2</kbd>].\nДив. [[mw:API|повну документацію]], або [[Special:ApiHelp/main|довідку API]], щоб дізнатися більше.",
        "api-format-prettyprint-status": "Відповідь повернеться із HTTP-статусом $1 $2.",
        "api-pageset-param-titles": "Список назв над якими працювати.",
        "api-pageset-param-pageids": "Список ідентифікаторів сторінок над якими працювати.",
        "apierror-changeauth-norequest": "Не вдалося створити запит на зміну.",
        "apierror-chunk-too-small": "Мінімальний розмір шматка становить $1 {{PLURAL:$1|байт|байти|байтів}} для некінцевих шматків.",
        "apierror-cidrtoobroad": "$1 CIDR-діапазони, ширші ніж /$2, недозволені.",
-       "apierror-compare-inputneeded": "Назва, ідентифікатор сторінки, або номер версії потрібні як для параметра <var>from</var>, так і для <var>to</var>.",
        "apierror-contentserializationexception": "Невдача серіалізації вмісту: $1",
        "apierror-contenttoobig": "Наданий Вами вміст перевищує ліміт у $1 {{PLURAL:$1|кілобайт|кілобайти|кілобайтів}} розміру сторінки.",
        "apierror-copyuploadbaddomain": "Завантаження за URL-адресою недозволені з цього домену.",
        "apierror-revdel-mutuallyexclusive": "Одне й те ж поле не може використовуватись у <var>hide</var> і <var>show</var> водночас.",
        "apierror-revdel-needtarget": "Для цього типу RevDel необхідна цільова назва.",
        "apierror-revdel-paramneeded": "Щонайменше одне значення необхідне для <var>hide</var> та/або <var>show</var>.",
+       "apierror-revisions-badid": "Для параметра <var>$1</var> не знайдено жодної версії.",
        "apierror-revisions-norevids": "Параметр <var>revids</var> не можна використовувати з опціями списку (<var>$1limit</var>, <var>$1startid</var>, <var>$1endid</var>, <kbd>$1dir=newer</kbd>, <var>$1user</var>, <var>$1excludeuser</var>, <var>$1start</var>, і <var>$1end</var>).",
        "apierror-revisions-singlepage": "Було використано <var>titles</var>, <var>pageids</var> або генератор для постачання декількох сторінок, але параметри <var>$1limit</var>, <var>$1startid</var>, <var>$1endid</var>, <kbd>$1dir=newer</kbd>, <var>$1user</var>, <var>$1excludeuser</var>, <var>$1start</var>, і <var>$1end</var> можуть використовуватися тільки на одній сторінці.",
        "apierror-revwrongpage": "r$1 не є версією сторінки $2.",
index 152f1df..19d2e68 100644 (file)
                        "Zhxy 519",
                        "御坂美琴",
                        "RyRubyy",
-                       "Umherirrender",
                        "Apflu",
                        "Hzy980512",
                        "PhiLiP",
                        "Arthur2e5",
                        "損齋",
                        "Myy730",
-                       "D41D8CD98F"
+                       "D41D8CD98F",
+                       "Umherirrender"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|文档]]\n* [[mw:Special:MyLanguage/API:FAQ|常见问题]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api 邮件列表]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API公告]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R 程序错误与功能请求]\n</div>\n<strong>状态信息:</strong>本页所展示的所有特性都应正常工作,但是API仍在开发当中,将会随时变化。请订阅[https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ mediawiki-api-announce 邮件列表]以便获得更新通知。\n\n<strong>错误请求:</strong>当API收到错误请求时,HTTP header将会返回一个包含\"MediaWiki-API-Error\"的值,随后header的值与error code将会送回并设置为相同的值。详细信息请参阅[[mw:Special:MyLanguage/API:Errors_and_warnings|API: 错误与警告]]。\n\n<strong>测试中:</strong>测试API请求的易用性,请参见[[Special:ApiSandbox]]。",
        "apihelp-main-param-action": "要执行的操作。",
        "apihelp-main-param-format": "输出的格式。",
        "apihelp-main-param-maxlag": "最大延迟可被用于MediaWiki安装于数据库复制集中。要保存导致更多网站复制延迟的操作,此参数可使客户端等待直到复制延迟少于指定值时。万一发生过多延迟,错误代码<samp>maxlag</samp>会返回消息,例如<samp>等待$host中:延迟$lag秒</samp>。<br />参见[[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manual: Maxlag parameter]]以获取更多信息。",
@@ -42,7 +41,6 @@
        "apihelp-main-param-errorformat": "用于警告和错误文本输出的格式。\n; plaintext:已移除HTML标签,并被替换实体的Wiki文本。\n; wikitext:未解析的wiki文本。\n; html:HTML。\n; raw:消息关键词和参数。\n; none:无文本输出,仅包含错误代码。\n; bc:在MediaWiki 1.29以前版本使用的格式。<var>errorlang</var>和<var>errorsuselocal</var>会被忽略。",
        "apihelp-main-param-errorlang": "用于警告和错误的语言。<kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>带<kbd>siprop=languages</kbd>返回语言代码的列表,或指定<kbd>content</kbd>以使用此wiki的内容语言,或指定<kbd>uselang</kbd>以使用与<var>uselang</var>参数相同的值。",
        "apihelp-main-param-errorsuselocal": "如果指定,错误文本将使用来自{{ns:MediaWiki}}名字空间的本地自定义消息。",
-       "apihelp-block-description": "封禁一位用户。",
        "apihelp-block-param-user": "要封禁的用户、IP地址或IP地址段。不能与<var>$1userid</var>一起使用",
        "apihelp-block-param-userid": "要封禁的用户ID。不能与<var>$1user</var>一起使用。",
        "apihelp-block-param-expiry": "到期时间。可以是相对时间(例如<kbd>5 months</kbd>或<kbd>2 weeks</kbd>)或绝对时间(例如<kbd>2014-09-18T12:34:56Z</kbd>)。如果设置为<kbd>infinite</kbd>、<kbd>indefinite</kbd>或<kbd>never</kbd>,封禁将无限期。",
        "apihelp-block-param-tags": "要在封禁日志中应用到实体的更改标签。",
        "apihelp-block-example-ip-simple": "封禁IP地址<kbd>192.0.2.5</kbd>三天,原因<kbd>First strike</kbd>。",
        "apihelp-block-example-user-complex": "无限期封禁用户<kbd>Vandal</kbd>,原因<kbd>Vandalism</kbd>,并阻止新账户创建和电子邮件发送。",
-       "apihelp-changeauthenticationdata-description": "更改当前用户的身份验证数据。",
        "apihelp-changeauthenticationdata-example-password": "尝试更改当前用户的密码至<kbd>ExamplePassword</kbd>。",
-       "apihelp-checktoken-description": "从<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>检查令牌有效性。",
        "apihelp-checktoken-param-type": "已开始测试的令牌类型。",
        "apihelp-checktoken-param-token": "要测试的令牌。",
        "apihelp-checktoken-param-maxtokenage": "令牌的最大允许年龄,以秒计。",
        "apihelp-checktoken-example-simple": "测试<kbd>csrf</kbd>令牌的有效性。",
-       "apihelp-clearhasmsg-description": "清除当前用户的<code>hasmsg</code>标记。",
        "apihelp-clearhasmsg-example-1": "清除当前用户的<code>hasmsg</code>标记。",
-       "apihelp-clientlogin-description": "使用交互式流登录wiki。",
        "apihelp-clientlogin-example-login": "开始作为用户<kbd>Example</kbd>和密码<kbd>ExamplePassword</kbd>登录至wiki的过程。",
        "apihelp-clientlogin-example-login2": "在<samp>UI</samp>响应双因素验证后继续登录,补充<var>OATHToken</var> <kbd>987654</kbd>。",
-       "apihelp-compare-description": "获取2个页面之间的差别。\n\n必须传递用于“from”和“to”的修订版本号、页面标题或页面 ID 。",
        "apihelp-compare-param-fromtitle": "要比较的第一个标题。",
        "apihelp-compare-param-fromid": "要比较的第一个页面 ID。",
        "apihelp-compare-param-fromrev": "要比较的第一个修订版本。",
+       "apihelp-compare-param-fromtext": "使用该文本而不是由<var>fromtitle</var>、<var>fromid</var>或<var>fromrev</var>指定的修订版本内容。",
+       "apihelp-compare-param-frompst": "在<var>fromtext</var>执行预保存转变。",
+       "apihelp-compare-param-fromcontentmodel": "<var>fromtext</var>的内容模型。如果未指定,这将基于其他参数猜想。",
+       "apihelp-compare-param-fromcontentformat": "<var>fromtext</var>的内容序列化格式。",
        "apihelp-compare-param-totitle": "要比较的第二个标题。",
        "apihelp-compare-param-toid": "要比较的第二个页面 ID。",
        "apihelp-compare-param-torev": "要比较的第二个修订版本。",
+       "apihelp-compare-param-topst": "在<var>totext</var>执行预保存转变。",
+       "apihelp-compare-param-tocontentmodel": "<var>totext</var>的内容模型。如果未指定,这将基于其他参数猜想。",
+       "apihelp-compare-param-tocontentformat": "<var>totext</var>的内容序列化格式。",
+       "apihelp-compare-param-prop": "要获取的信息束。",
+       "apihelp-compare-paramvalue-prop-diff": "差异HTML。",
+       "apihelp-compare-paramvalue-prop-diffsize": "差异HTML的大小(字节)。",
+       "apihelp-compare-paramvalue-prop-title": "“from”和“to”修订版本的页面标题。",
+       "apihelp-compare-paramvalue-prop-user": "“from”和“to”修订版本的用户名和ID。",
+       "apihelp-compare-paramvalue-prop-comment": "“from”和“to”修订版本的注释。",
+       "apihelp-compare-paramvalue-prop-parsedcomment": "“from”和“to”修订版本的已解析注释。",
+       "apihelp-compare-paramvalue-prop-size": "“from”和“to”修订版本的大小。",
        "apihelp-compare-example-1": "在版本1和2中创建差异。",
-       "apihelp-createaccount-description": "创建一个新用户账户。",
        "apihelp-createaccount-param-preservestate": "如果<kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd>返回用于<samp>hasprimarypreservedstate</samp>的真值,标记为<samp>primary-required</samp>的请求应被忽略。如果它返回用于<samp>preservedusername</samp>的非空值,用户名必须用于<var>username</var>参数。",
        "apihelp-createaccount-example-create": "开始创建用户<kbd>Example</kbd>和密码<kbd>ExamplePassword</kbd>的过程。",
        "apihelp-createaccount-param-name": "用户名。",
        "apihelp-createaccount-param-language": "要为用户设置为默认值的语言代码(可选,默认为内容语言)。",
        "apihelp-createaccount-example-pass": "创建用户<kbd>testuser</kbd>和密码<kbd>test123</kbd>。",
        "apihelp-createaccount-example-mail": "创建用户<kbd>testmailuser</kbd>并电邮发送一个随机生成的密码。",
-       "apihelp-cspreport-description": "由浏览器使用以报告违反内容安全方针的内容。此模块应永不使用,除了在被CSP兼容的浏览器自动使用时。",
        "apihelp-cspreport-param-reportonly": "标记作为来自监视方针的报告,而不是执行方针的报告",
        "apihelp-cspreport-param-source": "生成引发此报告的CSP标头的事物",
-       "apihelp-delete-description": "删除一个页面。",
        "apihelp-delete-param-title": "要删除的页面标题。不能与<var>$1pageid</var>一起使用。",
        "apihelp-delete-param-pageid": "要删除的页面的页面 ID。不能与<var>$1title</var>一起使用。",
        "apihelp-delete-param-reason": "删除原因。如果未设置,将使用一个自动生成的原因。",
        "apihelp-delete-param-oldimage": "由[[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]]提供的要删除的旧图片名称。",
        "apihelp-delete-example-simple": "删除<kbd>Main Page</kbd>。",
        "apihelp-delete-example-reason": "删除<kbd>Main Page</kbd>,原因<kbd>Preparing for move</kbd>。",
-       "apihelp-disabled-description": "此模块已禁用。",
-       "apihelp-edit-description": "创建和编辑页面。",
        "apihelp-edit-param-title": "要编辑的页面标题。不能与<var>$1pageid</var>一起使用。",
        "apihelp-edit-param-pageid": "要编辑的页面的页面 ID。不能与<var>$1title</var>一起使用。",
        "apihelp-edit-param-section": "段落数。<kbd>0</kbd>用于首段,<kbd>new</kbd>用于新的段落。",
        "apihelp-edit-example-edit": "编辑一个页面。",
        "apihelp-edit-example-prepend": "页面中预置<kbd>_&#95;NOTOC_&#95;</kbd>。",
        "apihelp-edit-example-undo": "撤销修订版本13579至13585并自动填写编辑摘要。",
-       "apihelp-emailuser-description": "电子邮件联系一位用户。",
        "apihelp-emailuser-param-target": "电子邮件的目标用户。",
        "apihelp-emailuser-param-subject": "主题页眉。",
        "apihelp-emailuser-param-text": "邮件正文。",
        "apihelp-emailuser-param-ccme": "给我发送一份该邮件的副本。",
        "apihelp-emailuser-example-email": "向用户<kbd>WikiSysop</kbd>发送邮件,带文字<kbd>Content</kbd>。",
-       "apihelp-expandtemplates-description": "展开维基文本中的所有模板。",
        "apihelp-expandtemplates-param-title": "页面标题。",
        "apihelp-expandtemplates-param-text": "要转换的wiki文本。",
        "apihelp-expandtemplates-param-revid": "修订版本ID,用于<nowiki>{{REVISIONID}}</nowiki>和类似变体。",
        "apihelp-expandtemplates-param-includecomments": "输出时是否包含HTML注释。",
        "apihelp-expandtemplates-param-generatexml": "生成XML解析树(取代自$1prop=parsetree)。",
        "apihelp-expandtemplates-example-simple": "展开wiki文本<kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd>。",
-       "apihelp-feedcontributions-description": "返回用户贡献纲要。",
        "apihelp-feedcontributions-param-feedformat": "纲要的格式。",
        "apihelp-feedcontributions-param-user": "获取哪些用户的贡献。",
        "apihelp-feedcontributions-param-namespace": "过滤哪些命名空间的贡献。",
        "apihelp-feedcontributions-param-hideminor": "隐藏小编辑。",
        "apihelp-feedcontributions-param-showsizediff": "显示修订版本之间的大小差别。",
        "apihelp-feedcontributions-example-simple": "返回用户<kbd>Example</kbd>的贡献。",
-       "apihelp-feedrecentchanges-description": "返回最近更改的摘要。",
        "apihelp-feedrecentchanges-param-feedformat": "纲要的格式。",
        "apihelp-feedrecentchanges-param-namespace": "用于限制结果的命名空间。",
        "apihelp-feedrecentchanges-param-invert": "除所选定者外的所有命名空间。",
        "apihelp-feedrecentchanges-param-categories_any": "只显示这些分类以外页面的更改。",
        "apihelp-feedrecentchanges-example-simple": "显示最近更改。",
        "apihelp-feedrecentchanges-example-30days": "显示最近30天的更改。",
-       "apihelp-feedwatchlist-description": "返回监视列表纲要。",
        "apihelp-feedwatchlist-param-feedformat": "纲要的格式。",
        "apihelp-feedwatchlist-param-hours": "列出从现在起数小时内修改的页面。",
        "apihelp-feedwatchlist-param-linktosections": "如果可能的话,直接链接到已变更的小节。",
        "apihelp-feedwatchlist-example-default": "显示监视列表订阅。",
        "apihelp-feedwatchlist-example-all6hrs": "显示过去6小时内受监视页面的所有更改。",
-       "apihelp-filerevert-description": "回退一个文件至某一旧版本。",
        "apihelp-filerevert-param-filename": "目标文件名,不包含前缀“File:”。",
        "apihelp-filerevert-param-comment": "上传评论。",
        "apihelp-filerevert-param-archivename": "恢复到修订版存档名称。",
        "apihelp-filerevert-example-revert": "回退<kbd>Wiki.png</kbd>至<kbd>2011-03-05T15:27:40Z</kbd>的版本。",
-       "apihelp-help-description": "显示指定模块的帮助。",
        "apihelp-help-param-modules": "用于显示帮助的模块(<var>action</var>和<var>format</var>参数值,或<kbd>main</kbd>)。可通过<kbd>+</kbd>指定子模块。",
        "apihelp-help-param-submodules": "包括给定名称模块的子模块的帮助。",
        "apihelp-help-param-recursivesubmodules": "包括递归子模块的帮助。",
        "apihelp-help-example-recursive": "一个页面中的所有帮助。",
        "apihelp-help-example-help": "帮助模块本身的帮助。",
        "apihelp-help-example-query": "两个查询子模块的帮助。",
-       "apihelp-imagerotate-description": "旋转一幅或多幅图像。",
        "apihelp-imagerotate-param-rotation": "顺时针旋转图像的度数。",
        "apihelp-imagerotate-param-tags": "要在上传日志中应用到实体的标签。",
        "apihelp-imagerotate-example-simple": "<kbd>90</kbd>度旋转<kbd>File:Example.png</kbd>。",
        "apihelp-imagerotate-example-generator": "将<kbd>Category:Flip</kbd>之中的所有图像旋转<kbd>180</kbd>度。",
-       "apihelp-import-description": "从另一个wiki或从一个XML文件导入页面。\n\n注意当发送一个用于<var>xml</var>参数的文件时,HTTP POST必须作为一次文件上传完成(也就是使用multipart/form-data)。",
        "apihelp-import-param-summary": "日志记录导入摘要。",
        "apihelp-import-param-xml": "上传的XML文件。",
        "apihelp-import-param-interwikisource": "用于跨wiki导入:导入的来源wiki。",
        "apihelp-import-param-rootpage": "作为此页面的子页面导入。不能与<var>$1namespace</var>一起使用。",
        "apihelp-import-param-tags": "要在导入日志,以及在导入页面的空修订版本中应用到实体的更改标签。",
        "apihelp-import-example-import": "将页面[[meta:Help:ParserFunctions]]连带完整历史导入至100名字空间。",
-       "apihelp-linkaccount-description": "将来自第三方提供商的账户链接至当前用户。",
        "apihelp-linkaccount-example-link": "开始从<kbd>Example</kbd>链接至账户的过程。",
-       "apihelp-login-description": "登录并获取身份验证Cookie。\n\n此操作只应与[[Special:BotPasswords]]一起使用;用于主账户登录的方式已弃用,并可能在没有警告的情况下失败。要安全登录主账户,请使用<kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>。",
-       "apihelp-login-description-nobotpasswords": "登录并获取身份验证Cookie。\n\n此操作已弃用,并可能在没有警告的情况下失败。要安全登录,请使用<kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>。",
        "apihelp-login-param-name": "用户名。",
        "apihelp-login-param-password": "密码。",
        "apihelp-login-param-domain": "域名(可选)。",
        "apihelp-login-param-token": "在首个请求中获得的登录令牌。",
        "apihelp-login-example-gettoken": "检索登录令牌。",
        "apihelp-login-example-login": "登录。",
-       "apihelp-logout-description": "退出并清除会话数据。",
        "apihelp-logout-example-logout": "退出当前用户。",
-       "apihelp-managetags-description": "执行有关更改标签的管理任务。",
        "apihelp-managetags-param-operation": "要执行哪个操作:\n;create:创建一个新的更改标签供手动使用。\n;delete:从数据库中移除一个更改标签,包括移除已使用在所有修订版本、最近更改记录和日志记录上的该标签。\n;activate:激活一个更改标签,允许用户手动应用它。\n;deactivate:停用一个更改标签,阻止用户手动应用它。",
        "apihelp-managetags-param-tag": "要创建、删除、激活或取消激活的标签。要创建标签,标签必须不存在。要删除标签,标签必须存在。要激活标签,标签必须存在,且不被任何扩展使用。要取消激活标签,标签必须当前处于激活状态,且被手动定义。",
        "apihelp-managetags-param-reason": "一个创建、删除、激活或停用标签时的原因,可选。",
        "apihelp-managetags-example-delete": "删除<kbd>vandlaism</kbd>标签,原因<kbd>Misspelt</kbd>",
        "apihelp-managetags-example-activate": "激活一个名为<kbd>spam</kbd>的标签,原因<kbd>For use in edit patrolling</kbd>",
        "apihelp-managetags-example-deactivate": "停用一个名为<kbd>spam</kbd>的标签,原因<kbd>No longer required</kbd>",
-       "apihelp-mergehistory-description": "合并页面历史。",
        "apihelp-mergehistory-param-from": "将被合并历史的页面的标题。不能与<var>$1fromid</var>一起使用。",
        "apihelp-mergehistory-param-fromid": "将被合并历史的页面的页面ID。不能与<var>$1from</var>一起使用。",
        "apihelp-mergehistory-param-to": "将要合并历史的页面的标题。不能与<var>$1toid</var>一起使用。",
        "apihelp-mergehistory-param-reason": "历史合并的原因。",
        "apihelp-mergehistory-example-merge": "将<kbd>Oldpage</kbd>的完整历史合并至<kbd>Newpage</kbd>。",
        "apihelp-mergehistory-example-merge-timestamp": "将<kbd>Oldpage</kbd>直到<kbd>2015-12-31T04:37:41Z</kbd>的页面修订版本合并至<kbd>Newpage</kbd>。",
-       "apihelp-move-description": "移动一个页面。",
        "apihelp-move-param-from": "要重命名的页面标题。不能与<var>$1fromid</var>一起使用。",
        "apihelp-move-param-fromid": "您希望移动的页面ID。不能与<var>$1from</var>一起使用。",
        "apihelp-move-param-to": "页面重命名的目标标题。",
        "apihelp-move-param-ignorewarnings": "忽略任何警告。",
        "apihelp-move-param-tags": "要在移动日志,以及在目标页面的空修订版本中应用到实体的更改标签。",
        "apihelp-move-example-move": "移动<kbd>Badtitle</kbd>到<kbd>Goodtitle</kbd>,不保留重定向。",
-       "apihelp-opensearch-description": "使用OpenSearch协议搜索wiki。",
        "apihelp-opensearch-param-search": "搜索字符串。",
        "apihelp-opensearch-param-limit": "要返回的结果最大数。",
        "apihelp-opensearch-param-namespace": "搜索的名字空间。",
        "apihelp-opensearch-param-format": "输出格式。",
        "apihelp-opensearch-param-warningsaserror": "如果警告通过<kbd>format=json</kbd>提升,返回一个API错误而不是忽略它们。",
        "apihelp-opensearch-example-te": "查找以<kbd>Te</kbd>开头的页面。",
-       "apihelp-options-description": "更改当前用户的偏好设置。\n\n只有注册在核心或者已安装扩展中的选项,或者具有<code>userjs-</code>键值前缀(旨在被用户脚本使用)的选项可被设置。",
        "apihelp-options-param-reset": "将参数设置重置为网站默认值。",
        "apihelp-options-param-resetkinds": "当<var>$1reset</var>选项被设置时,要重置的选项类型列表。",
        "apihelp-options-param-change": "更改列表,以name=value格式化(例如skin=vector)。如果没提供值(甚至没有等号),例如optionname|otheroption|...,选项将重置为默认值。如果任何传递的值包含管道字符(<kbd>|</kbd>),请改用[[Special:ApiHelp/main#main/datatypes|替代多值分隔符]]以正确操作。",
        "apihelp-options-example-reset": "重置所有用户设置。",
        "apihelp-options-example-change": "更改<kbd>skin</kbd>和<kbd>hideminor</kbd>设置。",
        "apihelp-options-example-complex": "重置所有设置,然后设置<kbd>skin</kbd>和<kbd>nickname</kbd>。",
-       "apihelp-paraminfo-description": "获得关于API模块的信息。",
        "apihelp-paraminfo-param-modules": "模块名称(<var>action</var>和<var>format</var>参数值,或<kbd>main</kbd>)的列表。可通过<kbd>+</kbd>指定子模块,或通过<kbd>+*</kbd>指定所有子模块,或通过<kbd>+**</kbd>指定所有递归子模块。",
        "apihelp-paraminfo-param-helpformat": "帮助字符串的格式。",
        "apihelp-paraminfo-param-querymodules": "查询模块名称(<var>prop</var>、<var>meta</var>或<var>list</var>参数值)的列表。使用<kbd>$1modules=query+foo</kbd>而不是<kbd>$1querymodules=foo</kbd>。",
        "apihelp-paraminfo-param-formatmodules": "格式模块名称(<var>format</var>参数的值)的列表。也可使用<var>$1modules</var>。",
        "apihelp-paraminfo-example-1": "显示<kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>、<kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>、<kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd>和<kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>的信息。",
        "apihelp-paraminfo-example-2": "显示<kbd>[[Special:ApiHelp/query|action=query]]</kbd>的所有子模块的信息。",
-       "apihelp-parse-description": "解析内容并返回解析器输出。\n\n参见<kbd>[[Special:ApiHelp/query|action=query]]</kbd>的各种prop-module以从页面的当前版本获得信息。\n\n这里有几种方法可以指定解析的文本:\n# 指定一个页面或修订,使用<var>$1page</var>、<var>$1pageid</var>或<var>$1oldid</var>。\n# 明确指定内容,使用<var>$1text</var>、<var>$1title</var>和<var>$1contentmodel</var>。\n# 只指定一段摘要解析。<var>$1prop</var>应提供一个空值。",
        "apihelp-parse-param-title": "文本属于的页面标题。如果省略,<var>$1contentmodel</var>就必须被指定,且[[API]]将作为标题使用。",
        "apihelp-parse-param-text": "要解析的文本。使用<var>$1title</var>或<var>$1contentmodel</var>以控制内容模型。",
        "apihelp-parse-param-summary": "要解析的摘要。",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "提供限制报告的HTML版本。当<var>$1disablelimitreport</var>被设置时不会提供数据。",
        "apihelp-parse-paramvalue-prop-parsetree": "修订内容的XML解析树(需要内容模型<code>$1</code>)",
        "apihelp-parse-paramvalue-prop-parsewarnings": "在解析内容时提供发生的警告",
+       "apihelp-parse-param-wrapoutputclass": "要用于包裹解析输出的CSS类。",
        "apihelp-parse-param-pst": "在解析输入前,对输入做一次保存前变换处理。仅当使用文本时有效。",
        "apihelp-parse-param-onlypst": "在输入内容中执行预保存转换(PST),但不解析它。在PST被应用后返回相同的wiki文本。只当与<var>$1text</var>一起使用时有效。",
        "apihelp-parse-param-effectivelanglinks": "包含由扩展提供的语言链接(用于与<kbd>$1prop=langlinks</kbd>一起使用)。",
        "apihelp-parse-param-preview": "在预览模式下解析。",
        "apihelp-parse-param-sectionpreview": "在段落预览模式下解析(同时要启用预览模式)。",
        "apihelp-parse-param-disabletoc": "在输出中省略目录。",
+       "apihelp-parse-param-useskin": "为解析器输出应用选择的皮肤。会影响以下属性:<kbd>langlinks</kbd>、<kbd>headitems</kbd>、<kbd>modules</kbd>、<kbd>jsconfigvars</kbd>和<kbd>indicators</kbd>。",
        "apihelp-parse-param-contentformat": "用于输入文本的内容序列化格式。只当与$1text一起使用时有效。",
        "apihelp-parse-param-contentmodel": "输入文本的内容模型。如果省略,$1title必须指定,并且默认将为指定标题的模型。只当与$1text一起使用时有效。",
        "apihelp-parse-example-page": "解析一个页面。",
        "apihelp-parse-example-text": "解析wiki文本。",
        "apihelp-parse-example-texttitle": "解析wiki文本,指定页面标题。",
        "apihelp-parse-example-summary": "解析一个摘要。",
-       "apihelp-patrol-description": "巡查页面或修订版本。",
        "apihelp-patrol-param-rcid": "要巡查的最近更改 ID。",
        "apihelp-patrol-param-revid": "要巡查的修订版本ID。",
        "apihelp-patrol-param-tags": "要在巡查日志中应用到实体的更改标签。",
        "apihelp-patrol-example-rcid": "巡查一次最近更改。",
        "apihelp-patrol-example-revid": "巡查一次修订。",
-       "apihelp-protect-description": "更改页面的保护等级。",
        "apihelp-protect-param-title": "要(解除)保护的页面标题。不能与$1pageid一起使用。",
        "apihelp-protect-param-pageid": "要(解除)保护的页面ID。不能与$1title一起使用。",
        "apihelp-protect-param-protections": "保护等级列表,格式:<kbd>action=level</kbd>(例如<kbd>edit=sysop</kbd>)。等级<kbd>all</kbd>意味着任何人都可以执行操作,也就是说没有限制。\n\n<strong>注意:</strong>未列出的操作将移除限制。",
        "apihelp-protect-example-protect": "保护一个页面。",
        "apihelp-protect-example-unprotect": "通过设置限制为<kbd>all</kbd>解除保护一个页面(就是说任何人都可以执行操作)。",
        "apihelp-protect-example-unprotect2": "通过设置没有限制解除保护一个页面。",
-       "apihelp-purge-description": "为指定标题刷新缓存。",
        "apihelp-purge-param-forcelinkupdate": "更新链接表。",
        "apihelp-purge-param-forcerecursivelinkupdate": "更新链接表中,并更新任何使用此页作为模板的页面的链接表。",
        "apihelp-purge-example-simple": "刷新<kbd>Main Page</kbd>和<kbd>API</kbd>页面。",
        "apihelp-purge-example-generator": "刷新主名字空间的前10个页面。",
-       "apihelp-query-description": "获取来自和有关MediaWiki的数据。\n\n所有数据修改将首先要使用查询以获得令牌以阻止来自恶意网站的滥用破坏。",
        "apihelp-query-param-prop": "要为已查询页面获取的属性。",
        "apihelp-query-param-list": "要获取的列表。",
        "apihelp-query-param-meta": "要获取的元数据。",
        "apihelp-query-param-rawcontinue": "为继续返回原始<samp>query-continue</samp>数据。",
        "apihelp-query-example-revisions": "获取<kbd>Main Page</kbd>的[[Special:ApiHelp/query+siteinfo|网站信息]]和[[Special:ApiHelp/query+revisions|修订版本]]。",
        "apihelp-query-example-allpages": "获取以<kbd>API/</kbd>开头的页面的修订版本。",
-       "apihelp-query+allcategories-description": "列举所有分类。",
        "apihelp-query+allcategories-param-from": "要作为枚举起始点的类别。",
        "apihelp-query+allcategories-param-to": "要作为枚举终止点的类别。",
        "apihelp-query+allcategories-param-prefix": "搜索所有以此值开头的分类标题。",
        "apihelp-query+allcategories-paramvalue-prop-hidden": "标记由<code>_&#95;HIDDENCAT_&#95;</code>隐藏的分类。",
        "apihelp-query+allcategories-example-size": "列出分类及其含有多少页面的信息。",
        "apihelp-query+allcategories-example-generator": "为以<kbd>List</kbd>的分类检索有关分类页面本身的信息。",
-       "apihelp-query+alldeletedrevisions-description": "列举由一位用户或在一个名字空间中所有已删除的修订。",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "只可以与<var>$3user</var>一起使用。",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "不能与<var>$3user</var>一起使用。",
        "apihelp-query+alldeletedrevisions-param-start": "枚举的起始时间戳。",
        "apihelp-query+alldeletedrevisions-param-generatetitles": "当作为生成器使用时,生成标题而不是修订ID。",
        "apihelp-query+alldeletedrevisions-example-user": "列出由<kbd>Example</kbd>作出的最近50次已删除贡献。",
        "apihelp-query+alldeletedrevisions-example-ns-main": "列出前50次已删除的主名字空间修订。",
-       "apihelp-query+allfileusages-description": "列出所有文件用途,包括不存在的。",
        "apihelp-query+allfileusages-param-from": "要列举的起始文件标题。",
        "apihelp-query+allfileusages-param-to": "要列举的最终文件标题。",
        "apihelp-query+allfileusages-param-prefix": "搜索所有以此值开头的文件标题。",
        "apihelp-query+allfileusages-example-unique": "列出唯一文件标题。",
        "apihelp-query+allfileusages-example-unique-generator": "获取所有文件标题,并标记出缺失者。",
        "apihelp-query+allfileusages-example-generator": "获取包含这些文件的页面。",
-       "apihelp-query+allimages-description": "按顺序枚举所有图像。",
        "apihelp-query+allimages-param-sort": "要作为排序方式的属性。",
        "apihelp-query+allimages-param-dir": "罗列所采用的方向。",
        "apihelp-query+allimages-param-from": "要列举的起始图片标题。只能与$1sort=name一起使用。",
        "apihelp-query+allimages-example-recent": "显示一个最近上传文件的列表,类似[[Special:NewFiles]]。",
        "apihelp-query+allimages-example-mimetypes": "显示带MIME类型<kbd>image/png</kbd>或<kbd>image/gif</kbd>的文件列表",
        "apihelp-query+allimages-example-generator": "显示有关4个以<kbd>T</kbd>开头的文件的信息。",
-       "apihelp-query+alllinks-description": "列举所有指向至指定名字空间的链接。",
        "apihelp-query+alllinks-param-from": "要列举的起始标题链接。",
        "apihelp-query+alllinks-param-to": "要列举的最终标题链接。",
        "apihelp-query+alllinks-param-prefix": "搜索所有以此值开头的已链接标题。",
        "apihelp-query+alllinks-example-unique": "列出唯一的链接标题。",
        "apihelp-query+alllinks-example-unique-generator": "获取所有已链接的标题,标记缺少的。",
        "apihelp-query+alllinks-example-generator": "获取包含这些链接的页面。",
-       "apihelp-query+allmessages-description": "返回来自该网站的消息。",
        "apihelp-query+allmessages-param-messages": "要输出的消息。<kbd>*</kbd>(默认)表示所有消息。",
        "apihelp-query+allmessages-param-prop": "要获取的属性。",
        "apihelp-query+allmessages-param-enableparser": "设置以启用解析器,将处理消息的wiki文本(替代魔术字、处理模板等)。",
        "apihelp-query+allmessages-param-prefix": "返回带有该前缀的消息。",
        "apihelp-query+allmessages-example-ipb": "显示以<kbd>ipb-</kbd>开始的消息。",
        "apihelp-query+allmessages-example-de": "显示德语版的<kbd>august</kbd>和<kbd>mainpage</kbd>消息。",
-       "apihelp-query+allpages-description": "循序列举在指定名字空间中的所有页面。",
        "apihelp-query+allpages-param-from": "枚举的起始页面标题。",
        "apihelp-query+allpages-param-to": "枚举的结束页面标题。",
        "apihelp-query+allpages-param-prefix": "搜索所有以此值开头的页面标题。",
        "apihelp-query+allpages-example-B": "显示以字母<kbd>B</kbd>开头的页面的列表。",
        "apihelp-query+allpages-example-generator": "显示有关4个以字母<kbd>T</kbd>开头的页面的信息。",
        "apihelp-query+allpages-example-generator-revisions": "显示前2个以<kbd>Re</kbd>开头的非重定向页面的内容。",
-       "apihelp-query+allredirects-description": "列出至一个名字空间的重定向。",
        "apihelp-query+allredirects-param-from": "要列举的起始重定向标题。",
        "apihelp-query+allredirects-param-to": "要列举的最终重定向标题。",
        "apihelp-query+allredirects-param-prefix": "搜索所有以此值开头的目标页面。",
        "apihelp-query+allredirects-example-unique": "列出孤立目标页面。",
        "apihelp-query+allredirects-example-unique-generator": "获取所有目标页面,标记丢失的。",
        "apihelp-query+allredirects-example-generator": "获取包含重定向的页面。",
-       "apihelp-query+allrevisions-description": "列举所有修订。",
        "apihelp-query+allrevisions-param-start": "枚举的起始时间戳。",
        "apihelp-query+allrevisions-param-end": "枚举的结束时间戳。",
        "apihelp-query+allrevisions-param-user": "只列出此用户做出的修订。",
        "apihelp-query+allrevisions-param-generatetitles": "当作为生成器使用时,生成标题而不是修订ID。",
        "apihelp-query+allrevisions-example-user": "列出由用户<kbd>Example</kbd>作出的最近50次贡献。",
        "apihelp-query+allrevisions-example-ns-main": "列举主名字空间中的前50次修订。",
-       "apihelp-query+mystashedfiles-description": "获取当前用户上传暂存库中的文件列表。",
        "apihelp-query+mystashedfiles-param-prop": "要检索文件的属性。",
        "apihelp-query+mystashedfiles-paramvalue-prop-size": "检索文件大小和图片尺寸。",
        "apihelp-query+mystashedfiles-paramvalue-prop-type": "检索文件的MIME类型和媒体类型。",
        "apihelp-query+mystashedfiles-param-limit": "要获取文件的数量。",
        "apihelp-query+mystashedfiles-example-simple": "获取当前用户上传暂存库中的文件的filekey、大小和像素尺寸。",
-       "apihelp-query+alltransclusions-description": "列出所有嵌入页面(使用&#123;&#123;x&#125;&#125;嵌入的页面),包括不存在的。",
        "apihelp-query+alltransclusions-param-from": "要列举的起始嵌入标题。",
        "apihelp-query+alltransclusions-param-to": "要列举的最终嵌入标题。",
        "apihelp-query+alltransclusions-param-prefix": "搜索所有以此值开头的嵌入的标题。",
        "apihelp-query+alltransclusions-example-unique": "列出孤立嵌入标题",
        "apihelp-query+alltransclusions-example-unique-generator": "获取所有嵌入的标题,并标记缺失的。",
        "apihelp-query+alltransclusions-example-generator": "获得包含嵌入内容的页面。",
-       "apihelp-query+allusers-description": "列举所有注册用户。",
        "apihelp-query+allusers-param-from": "枚举的起始用户名。",
        "apihelp-query+allusers-param-to": "枚举的结束用户名。",
        "apihelp-query+allusers-param-prefix": "搜索所有以此值开头的用户。",
        "apihelp-query+allusers-param-activeusers": "只列出最近$1{{PLURAL:$1|天}}内活跃的用户。",
        "apihelp-query+allusers-param-attachedwiki": "与<kbd>$1prop=centralids</kbd>一起使用,也表明用户是否附加于此ID定义的wiki。",
        "apihelp-query+allusers-example-Y": "列出以<kbd>Y</kbd>开头的用户。",
-       "apihelp-query+authmanagerinfo-description": "检索有关当前身份验证状态的信息。",
        "apihelp-query+authmanagerinfo-param-securitysensitiveoperation": "测试用户当前的身份验证状态是否足够用于指定的安全敏感操作。",
        "apihelp-query+authmanagerinfo-param-requestsfor": "取得指定身份验证操作所需的有关身份验证请求的信息。",
        "apihelp-query+authmanagerinfo-example-login": "检索当开始登录时可能使用的请求。",
        "apihelp-query+authmanagerinfo-example-login-merged": "检索当开始登录时可能使用的请求,并合并表单字段。",
        "apihelp-query+authmanagerinfo-example-securitysensitiveoperation": "测试身份验证对操作<kbd>foo</kbd>是否足够。",
-       "apihelp-query+backlinks-description": "查找所有链接至指定页面的页面。",
        "apihelp-query+backlinks-param-title": "要搜索的标题。不能与<var>$1pageid</var>一起使用。",
        "apihelp-query+backlinks-param-pageid": "要搜索的页面ID。不能与<var>$1title</var>一起使用。",
        "apihelp-query+backlinks-param-namespace": "要列举的名字空间。",
        "apihelp-query+backlinks-param-redirect": "如果链入页面是一个重定向,则寻找所有链接至此重定向的页面。最大限制减半。",
        "apihelp-query+backlinks-example-simple": "显示至<kbd>Main page</kbd>的链接。",
        "apihelp-query+backlinks-example-generator": "获取关于链接至<kbd>Main page</kbd>的页面的信息。",
-       "apihelp-query+blocks-description": "列出所有被封禁的用户和IP地址。",
        "apihelp-query+blocks-param-start": "枚举的起始时间戳。",
        "apihelp-query+blocks-param-end": "枚举的结束时间戳。",
        "apihelp-query+blocks-param-ids": "要列出的封禁ID列表(可选)。",
        "apihelp-query+blocks-param-show": "只显示符合这些标准的项目。\n例如,要只查看IP地址的无限期封禁,设置<kbd>$1show=ip|!temp</kbd>。",
        "apihelp-query+blocks-example-simple": "封禁列表。",
        "apihelp-query+blocks-example-users": "列出用户<kbd>Alice</kbd>和<kbd>Bob</kbd>的封禁。",
-       "apihelp-query+categories-description": "页面属于的所有分类列表。",
        "apihelp-query+categories-param-prop": "要为每个分类获取的额外属性:",
        "apihelp-query+categories-paramvalue-prop-sortkey": "为每个分类添加关键词(十六进制字符串)和关键词前缀(人类可读部分)。",
        "apihelp-query+categories-paramvalue-prop-timestamp": "添加分类添加时的时间戳。",
        "apihelp-query+categories-param-dir": "罗列所采用的方向。",
        "apihelp-query+categories-example-simple": "获取属于<kbd>Albert Einstein</kbd>的分类列表。",
        "apihelp-query+categories-example-generator": "获得有关用于<kbd>Albert Einstein</kbd>的分类的信息。",
-       "apihelp-query+categoryinfo-description": "返回有关给定分类的信息。",
        "apihelp-query+categoryinfo-example-simple": "获取有关<kbd>Category:Foo</kbd>和<kbd>Category:Bar</kbd>的信息。",
-       "apihelp-query+categorymembers-description": "在指定的分类中列出所有页面。",
        "apihelp-query+categorymembers-param-title": "要列举的分类(必需)。必须包括<kbd>{{ns:category}}:</kbd>前缀。不能与<var>$1pageid</var>一起使用。",
        "apihelp-query+categorymembers-param-pageid": "要枚举的分类的页面 ID。不能与<var>$1title</var>一起使用。",
        "apihelp-query+categorymembers-param-prop": "要包含的信息束:",
        "apihelp-query+categorymembers-param-endsortkey": "请改用$1endhexsortkey。",
        "apihelp-query+categorymembers-example-simple": "获取<kbd>Category:Physics</kbd>中的前10个页面。",
        "apihelp-query+categorymembers-example-generator": "获取有关<kbd>Category:Physics</kbd>中的前10个页面的页面信息。",
-       "apihelp-query+contributors-description": "获取对一个页面的登录贡献者列表和匿名贡献数。",
        "apihelp-query+contributors-param-group": "只包括指定用户组中的用户。不包括隐性的或自动提升的用户组,例如*、用户或自动确认用户。",
        "apihelp-query+contributors-param-excludegroup": "排除指定用户组中的用户。不包括隐性的或自动提升的用户组,例如*、用户或自动确认用户。",
        "apihelp-query+contributors-param-rights": "只包括拥有指定权限的用户。不包括隐性的或自动提升的用户组,例如*、用户或自动确认用户。",
        "apihelp-query+contributors-param-excluderights": "排除拥有指定权限的用户。不包括隐性的或自动提升的用户组,例如*、用户或自动确认用户。",
        "apihelp-query+contributors-param-limit": "返回的贡献数。",
        "apihelp-query+contributors-example-simple": "显示<kbd>Main Page</kbd>的贡献。",
-       "apihelp-query+deletedrevisions-description": "获得删除修订版本信息。\n\n可在很多途径中使用:\n# 获得一组页面的已删除修订,通过设置标题或页面ID。以标题和时间戳排序。\n# 通过设置它们的ID与修订ID获得关于一组已删除修订。以修订ID排序。",
        "apihelp-query+deletedrevisions-param-start": "要开始枚举的时间戳。当处理修订ID列表时会被忽略。",
        "apihelp-query+deletedrevisions-param-end": "要停止枚举的时间戳。当处理修订ID列表时会被忽略。",
        "apihelp-query+deletedrevisions-param-tag": "只列出被此标签标记的修订。",
        "apihelp-query+deletedrevisions-param-excludeuser": "不要列出此用户做出的修订。",
        "apihelp-query+deletedrevisions-example-titles": "列出页面<kbd>Main Page</kbd>和<kbd>Talk:Main Page</kbd>的已删除修订,包含内容。",
        "apihelp-query+deletedrevisions-example-revids": "列出已删除修订<kbd>123456</kbd>的信息。",
-       "apihelp-query+deletedrevs-description": "列出被删除修订。\n\n操作于三种模式中:\n# 为指定标题列举已删除修订,按时间戳排列。\n# 为指定用户列举已删除贡献,按时间戳排列(未指定标题)。\n# 在指定名字空间中列举所有已删除修订,按标题和时间戳排列(无指定标题,未设置$1user)。\n\n任一参数只应用于一些模式,并忽略其他参数。",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|模式}}:$2",
        "apihelp-query+deletedrevs-param-start": "枚举的起始时间戳。",
        "apihelp-query+deletedrevs-param-end": "枚举的结束时间戳。",
        "apihelp-query+deletedrevs-example-mode2": "列出由<kbd>Bob</kbd>作出的最近50次已删除贡献(模式2)。",
        "apihelp-query+deletedrevs-example-mode3-main": "列出前50次主名字空间已删除贡献(模式3)。",
        "apihelp-query+deletedrevs-example-mode3-talk": "列出前50次{{ns:talk}}名字空间已删除页面(模式3)。",
-       "apihelp-query+disabled-description": "此查询模块已被禁用。",
-       "apihelp-query+duplicatefiles-description": "根据哈希值列出此给定文件的所有副本。",
        "apihelp-query+duplicatefiles-param-limit": "返回多少重复文件。",
        "apihelp-query+duplicatefiles-param-dir": "罗列所采用的方向。",
        "apihelp-query+duplicatefiles-param-localonly": "只看本地存储库的文件。",
        "apihelp-query+duplicatefiles-example-simple": "查找与[[:File:Albert Einstein Head.jpg]]重复的文件。",
        "apihelp-query+duplicatefiles-example-generated": "查找所有文件的重复文件。",
-       "apihelp-query+embeddedin-description": "查找所有嵌入指定标题的页面。",
        "apihelp-query+embeddedin-param-title": "要搜索的标题。不能与$1pageid一起使用。",
        "apihelp-query+embeddedin-param-pageid": "要搜索的页面ID。不能与$1title一起使用。",
        "apihelp-query+embeddedin-param-namespace": "列举的名字空间。",
        "apihelp-query+embeddedin-param-limit": "返回的总计页面数。",
        "apihelp-query+embeddedin-example-simple": "显示嵌入<kbd>Template:Stub</kbd>的页面。",
        "apihelp-query+embeddedin-example-generator": "获取有关显示嵌入<kbd>Template:Stub</kbd>的页面的信息。",
-       "apihelp-query+extlinks-description": "从指定页面返回所有外部URL(非跨wiki链接)。",
        "apihelp-query+extlinks-param-limit": "返回多少链接。",
        "apihelp-query+extlinks-param-protocol": "URL协议。如果为空并且<var>$1query</var>被设置,协议为<kbd>http</kbd>。将此和<var>$1query</var>都留空以列举所有外部链接。",
        "apihelp-query+extlinks-param-query": "不使用协议搜索字符串。对于检查某一页面是否包含某一外部URL很有用。",
        "apihelp-query+extlinks-param-expandurl": "扩展协议相对URL与规范协议。",
        "apihelp-query+extlinks-example-simple": "获取<kbd>Main Page</kbd>的外部链接列表。",
-       "apihelp-query+exturlusage-description": "列举包含一个指定URL的页面。",
        "apihelp-query+exturlusage-param-prop": "要包含的信息束:",
        "apihelp-query+exturlusage-paramvalue-prop-ids": "添加页面ID。",
        "apihelp-query+exturlusage-paramvalue-prop-title": "添加页面的标题和名字空间ID。",
        "apihelp-query+exturlusage-param-limit": "返回多少页面。",
        "apihelp-query+exturlusage-param-expandurl": "用标准协议展开协议相关URL。",
        "apihelp-query+exturlusage-example-simple": "显示链接至<kbd>http://www.mediawiki.org</kbd>的页面。",
-       "apihelp-query+filearchive-description": "循序列举所有被删除的文件。",
        "apihelp-query+filearchive-param-from": "枚举的起始图片标题。",
        "apihelp-query+filearchive-param-to": "枚举的结束图片标题。",
        "apihelp-query+filearchive-param-prefix": "搜索所有以此值开头的图像标题。",
        "apihelp-query+filearchive-paramvalue-prop-bitdepth": "添加版本的字节深度。",
        "apihelp-query+filearchive-paramvalue-prop-archivename": "添加用于非最新版本的存档版本的文件名。",
        "apihelp-query+filearchive-example-simple": "显示已删除文件列表。",
-       "apihelp-query+filerepoinfo-description": "返回有关wiki配置的图片存储库的元信息。",
        "apihelp-query+filerepoinfo-param-prop": "要获取的存储库属性(这在一些wiki上可能有更多可用选项):\n;apiurl:链接至API的URL - 对从主机获取图片信息有用。\n;name:存储库关键词 - 用于例如<var>[[mw:Special:MyLanguage/Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var>,并且[[Special:ApiHelp/query+imageinfo|imageinfo]]会返回值。\n;displayname:人类可读的存储库wiki名称。\n;rooturl:图片路径的根URL。\n;local:存储库是否在本地。",
        "apihelp-query+filerepoinfo-example-simple": "获得有关文件存储库的信息。",
-       "apihelp-query+fileusage-description": "查找所有使用指定文件的页面。",
        "apihelp-query+fileusage-param-prop": "要获取的属性:",
        "apihelp-query+fileusage-paramvalue-prop-pageid": "每个页面的页面ID。",
        "apihelp-query+fileusage-paramvalue-prop-title": "每个页面的标题。",
        "apihelp-query+fileusage-param-show": "只显示符合以下标准的项:\n;redirect:只显示重定向。\n;!redirect:只显示非重定向。",
        "apihelp-query+fileusage-example-simple": "获取使用[[:File:Example.jpg]]的页面列表。",
        "apihelp-query+fileusage-example-generator": "获取有关使用[[:File:Example.jpg]]的页面的信息。",
-       "apihelp-query+imageinfo-description": "返回文件信息和上传历史。",
        "apihelp-query+imageinfo-param-prop": "要获取的文件信息:",
        "apihelp-query+imageinfo-paramvalue-prop-timestamp": "添加时间戳至上传的版本。",
        "apihelp-query+imageinfo-paramvalue-prop-user": "添加上传了每个文件版本的用户。",
        "apihelp-query+imageinfo-param-localonly": "只看本地存储库的文件。",
        "apihelp-query+imageinfo-example-simple": "取得有关[[:File:Albert Einstein Head.jpg]]的当前版本的信息。",
        "apihelp-query+imageinfo-example-dated": "取得有关[[:File:Test.jpg]]自2008年以来版本的信息。",
-       "apihelp-query+images-description": "返回指定页面上包含的所有文件。",
        "apihelp-query+images-param-limit": "返回多少文件。",
        "apihelp-query+images-param-images": "只列出这些文件。对于检查某一页面是否使用某一文件很有用。",
        "apihelp-query+images-param-dir": "罗列所采用的方向。",
        "apihelp-query+images-example-simple": "获取[[Main Page]]使用的文件列表。",
        "apihelp-query+images-example-generator": "获取有关[[Main Page]]使用的文件的信息。",
-       "apihelp-query+imageusage-description": "查找所有使用指定图片标题的页面。",
        "apihelp-query+imageusage-param-title": "要搜索的标题。不能与$1pageid一起使用。",
        "apihelp-query+imageusage-param-pageid": "要搜索的页面ID。不能与$1title一起使用。",
        "apihelp-query+imageusage-param-namespace": "要列举的名字空间。",
        "apihelp-query+imageusage-param-redirect": "如果链接页面是重定向,则查找所有链接至该重定向的页面。最大限制减半。",
        "apihelp-query+imageusage-example-simple": "显示使用[[:File:Albert Einstein Head.jpg]]的页面。",
        "apihelp-query+imageusage-example-generator": "获取有关使用[[:File:Albert Einstein Head.jpg]]的页面的信息。",
-       "apihelp-query+info-description": "获取基本页面信息。",
        "apihelp-query+info-param-prop": "要获取的额外属性:",
        "apihelp-query+info-paramvalue-prop-protection": "列出每个页面的保护等级。",
        "apihelp-query+info-paramvalue-prop-talkid": "每个非讨论页面的讨论页的页面ID。",
        "apihelp-query+info-param-token": "请改用[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]。",
        "apihelp-query+info-example-simple": "获取有关页面<kbd>Main Page</kbd>的信息。",
        "apihelp-query+info-example-protection": "获取<kbd>Main Page</kbd>相关的常规和保护信息。",
-       "apihelp-query+iwbacklinks-description": "查找所有链接至指定跨wiki链接的页面。\n\n可被用于查找带某一前缀的所有链接,或所有至某一标题的链接(带指定前缀)。两参数都不使用就意味着“所有跨wiki链接”。",
        "apihelp-query+iwbacklinks-param-prefix": "跨维基前缀。",
        "apihelp-query+iwbacklinks-param-title": "要搜索的跨wiki链接。必须与<var>$1blprefix</var>一起使用。",
        "apihelp-query+iwbacklinks-param-limit": "返回的总计页面数。",
        "apihelp-query+iwbacklinks-param-dir": "罗列所采用的方向。",
        "apihelp-query+iwbacklinks-example-simple": "获取链接至[[wikibooks:Test]]的页面。",
        "apihelp-query+iwbacklinks-example-generator": "获取有关链接至[[wikibooks:Test]]的页面的信息。",
-       "apihelp-query+iwlinks-description": "从指定页面返回所有跨wiki链接。",
        "apihelp-query+iwlinks-param-url": "是否获取完整URL(不能与$1prop一起使用)。",
        "apihelp-query+iwlinks-param-prop": "要为每个跨语言链接获取的额外属性:",
        "apihelp-query+iwlinks-paramvalue-prop-url": "添加完整URL。",
        "apihelp-query+iwlinks-param-title": "用于搜索的跨wiki链接。必须与<var>$1prefix</var>一起使用。",
        "apihelp-query+iwlinks-param-dir": "罗列所采用的方向。",
        "apihelp-query+iwlinks-example-simple": "从页面<kbd>Main Page</kbd>获得跨wiki链接。",
-       "apihelp-query+langbacklinks-description": "发现所有链接至指定语言链接的页面。\n\n可被用于查找所有带某一语言代码的链接,或所有至某一标题的链接(带指定语言)。不使用任何参数就意味着“所有语言链接”。\n\n注意这可能不考虑由扩展添加的语言链接。",
        "apihelp-query+langbacklinks-param-lang": "用于语言链接的语言。",
        "apihelp-query+langbacklinks-param-title": "要搜索的语言链接。必须与$1lang一起使用。",
        "apihelp-query+langbacklinks-param-limit": "返回的总计页面数。",
        "apihelp-query+langbacklinks-param-dir": "罗列所采用的方向。",
        "apihelp-query+langbacklinks-example-simple": "获取链接至[[:fr:Test]]的页面。",
        "apihelp-query+langbacklinks-example-generator": "获取链接至[[:fr:Test]]的页面的信息。",
-       "apihelp-query+langlinks-description": "从指定页面返回所有跨语言链接。",
        "apihelp-query+langlinks-param-limit": "返回多少语言链接。",
        "apihelp-query+langlinks-param-url": "是否获取完整URL(不能与<var>$1prop</var>一起使用)。",
        "apihelp-query+langlinks-param-prop": "要为每个跨语言链接获取的额外属性:",
        "apihelp-query+langlinks-param-dir": "罗列所采用的方向。",
        "apihelp-query+langlinks-param-inlanguagecode": "本地化语言名称的语言代码。",
        "apihelp-query+langlinks-example-simple": "从页面<kbd>Main Page</kbd>获取跨语言链接。",
-       "apihelp-query+links-description": "从指定页面返回所有链接。",
        "apihelp-query+links-param-namespace": "只显示这些名字空间的链接。",
        "apihelp-query+links-param-limit": "返回多少链接。",
        "apihelp-query+links-param-titles": "只列出这些标题。对于检查某一页面是否使用某一标题很有用。",
        "apihelp-query+links-example-simple": "从页面<kbd>Main Page</kbd>获取链接。",
        "apihelp-query+links-example-generator": "获取有关在页面<kbd>Main Page</kbd>中连接的页面的信息。",
        "apihelp-query+links-example-namespaces": "获取在{{ns:user}}和{{ns:template}}名字空间中来自页面<kbd>Main Page</kbd>的链接。",
-       "apihelp-query+linkshere-description": "查找所有链接至指定页面的页面。",
        "apihelp-query+linkshere-param-prop": "要获取的属性:",
        "apihelp-query+linkshere-paramvalue-prop-pageid": "每个页面的页面ID。",
        "apihelp-query+linkshere-paramvalue-prop-title": "每个页面的标题。",
        "apihelp-query+linkshere-param-show": "只显示符合以下标准的项:\n;redirect:只显示重定向。\n;!redirect:只显示非重定向。",
        "apihelp-query+linkshere-example-simple": "获取链接至[[Main Page]]的页面列表。",
        "apihelp-query+linkshere-example-generator": "获取有关链接至[[Main Page]]的页面的信息。",
-       "apihelp-query+logevents-description": "从日志获取事件。",
        "apihelp-query+logevents-param-prop": "要获取的属性:",
        "apihelp-query+logevents-paramvalue-prop-ids": "添加日志活动的ID。",
        "apihelp-query+logevents-paramvalue-prop-title": "为日志事件添加页面标题。",
        "apihelp-query+logevents-param-tag": "只列举带此标签的事件日志记录。",
        "apihelp-query+logevents-param-limit": "返回的事件日志记录总数。",
        "apihelp-query+logevents-example-simple": "列出最近日志事件。",
-       "apihelp-query+pagepropnames-description": "列出wiki中所有使用中的页面属性名称。",
        "apihelp-query+pagepropnames-param-limit": "返回名称的最大数量。",
        "apihelp-query+pagepropnames-example-simple": "获取前10个属性名称。",
-       "apihelp-query+pageprops-description": "获取页面内容中定义的各种页面属性。",
        "apihelp-query+pageprops-param-prop": "只列出这些页面属性(<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd>返回使用中的页面属性名称)。在检查页面是否使用某一页面属性时有用。",
        "apihelp-query+pageprops-example-simple": "获取用于页面<kbd>Main Page</kbd>和<kbd>MediaWiki</kbd>的属性。",
-       "apihelp-query+pageswithprop-description": "列出所有使用指定页面属性的页面。",
        "apihelp-query+pageswithprop-param-propname": "要用于列举页面的页面属性(<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd>返回正在使用中的页面属性名称)。",
        "apihelp-query+pageswithprop-param-prop": "要包含的信息束:",
        "apihelp-query+pageswithprop-paramvalue-prop-ids": "添加页面ID。",
        "apihelp-query+pageswithprop-param-dir": "排序的方向。",
        "apihelp-query+pageswithprop-example-simple": "列出前10个使用<code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>的页面。",
        "apihelp-query+pageswithprop-example-generator": "获取有关前10个使用<code>_&#95;NOTOC_&#95;</code>的页面的额外信息。",
-       "apihelp-query+prefixsearch-description": "执行页面标题的带前缀搜索。\n\n尽管名称类似,但此模块不等于[[Special:PrefixIndex]];详见<kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd>中的<kbd>apprefix</kbd>参数。此模块的目的类似<kbd>[[Special:ApiHelp/opensearch|action=opensearch]]</kbd>:基于用户的输入提供最佳匹配的标题。取决于搜索引擎后端,这可能包括错拼纠正、避免重定向和其他启发性行为。",
        "apihelp-query+prefixsearch-param-search": "搜索字符串。",
        "apihelp-query+prefixsearch-param-namespace": "搜索的名字空间。",
        "apihelp-query+prefixsearch-param-limit": "要返回的结果最大数。",
        "apihelp-query+prefixsearch-param-offset": "跳过的结果数。",
        "apihelp-query+prefixsearch-example-simple": "搜索以<kbd>meaning</kbd>开头的页面标题。",
        "apihelp-query+prefixsearch-param-profile": "搜索要使用的配置文件。",
-       "apihelp-query+protectedtitles-description": "列出所有被限制创建的标题。",
        "apihelp-query+protectedtitles-param-namespace": "只列出这些名字空间的标题。",
        "apihelp-query+protectedtitles-param-level": "只列出带这些保护级别的标题。",
        "apihelp-query+protectedtitles-param-limit": "返回的总计页面数。",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "添加保护级别。",
        "apihelp-query+protectedtitles-example-simple": "受保护标题列表。",
        "apihelp-query+protectedtitles-example-generator": "找到主命名空间中已保护的标题的链接。",
-       "apihelp-query+querypage-description": "获取由基于QueryPage的特殊页面提供的列表。",
        "apihelp-query+querypage-param-page": "特殊页面的名称。注意其区分大小写。",
        "apihelp-query+querypage-param-limit": "返回的结果数。",
        "apihelp-query+querypage-example-ancientpages": "返回[[Special:Ancientpages]]的结果。",
-       "apihelp-query+random-description": "获取一组随机页面。\n\n页面列举在一个固定序列中,只有起始点是随机的。这意味着如果<samp>Main Page</samp>是列表中第一个随机页面的话,<samp>List of fictional monkeys</samp>将<em>总是</em>第二个,<samp>List of people on stamps of Vanuatu</samp>是第三个等。",
        "apihelp-query+random-param-namespace": "只返回这些名字空间的页面。",
        "apihelp-query+random-param-limit": "限制返回多少随机页面。",
        "apihelp-query+random-param-redirect": "请改用<kbd>$1filterredir=redirects</kbd>。",
        "apihelp-query+random-param-filterredir": "如何过滤重定向。",
        "apihelp-query+random-example-simple": "从主名字空间返回两个随机页面。",
        "apihelp-query+random-example-generator": "返回有关来自主名字空间的两个随机页面的页面信息。",
-       "apihelp-query+recentchanges-description": "列举最近更改。",
        "apihelp-query+recentchanges-param-start": "枚举的起始时间戳。",
        "apihelp-query+recentchanges-param-end": "枚举的结束时间戳。",
        "apihelp-query+recentchanges-param-namespace": "过滤更改为仅限这些名字空间。",
        "apihelp-query+recentchanges-param-generaterevisions": "当作为生成器使用时,生成修订ID而不是标题。不带关联修订ID的最近更改记录(例如大多数日志记录)将不会生成任何东西。",
        "apihelp-query+recentchanges-example-simple": "最近更改列表。",
        "apihelp-query+recentchanges-example-generator": "获取有关最近未巡查更改的页面信息。",
-       "apihelp-query+redirects-description": "返回至指定页面的所有重定向。",
        "apihelp-query+redirects-param-prop": "要获取的属性:",
        "apihelp-query+redirects-paramvalue-prop-pageid": "每个重定向的页面ID。",
        "apihelp-query+redirects-paramvalue-prop-title": "每个重定向的标题。",
        "apihelp-query+redirects-param-show": "只显示符合这些标准的项目:\n;fragment:只显示带碎片的重定向。\n;!fragment:只显示不带碎片的重定向。",
        "apihelp-query+redirects-example-simple": "获取至[[Main Page]]的重定向列表。",
        "apihelp-query+redirects-example-generator": "获取所有重定向至[[Main Page]]的信息。",
-       "apihelp-query+revisions-description": "获取修订版本信息。\n\n可用于以下几个方面:\n# 通过设置标题或页面ID获取一批页面(最新修订)的数据。\n# 通过使用带start、end或limit的标题或页面ID获取给定页面的多个修订。\n# 通过revid设置一批修订的ID获取它们的数据。",
        "apihelp-query+revisions-paraminfo-singlepageonly": "可能只能与单一页面使用(模式#2)。",
-       "apihelp-query+revisions-param-startid": "从哪个修订版本ID开始列举。",
-       "apihelp-query+revisions-param-endid": "在此修订版本ID停止修订列举。",
+       "apihelp-query+revisions-param-startid": "从这个修订版本时间戳开始列举。修订版本必须存在,但未必与该页面相关。",
+       "apihelp-query+revisions-param-endid": "在这个修订版本时间戳停止列举。修订版本必须存在,但未必与该页面相关。",
        "apihelp-query+revisions-param-start": "从哪个修订版本时间戳开始列举。",
        "apihelp-query+revisions-param-end": "列举直至此时间戳。",
        "apihelp-query+revisions-param-user": "只包含由用户做出的修订。",
        "apihelp-query+revisions+base-paramvalue-prop-parsedcomment": "由用户对修订做出的被解析的摘要。",
        "apihelp-query+revisions+base-paramvalue-prop-content": "修订文本。",
        "apihelp-query+revisions+base-paramvalue-prop-tags": "修订标签。",
-       "apihelp-query+revisions+base-paramvalue-prop-parsetree": "修订内容的XML解析树(需要内容模型<code>$1</code>)。",
+       "apihelp-query+revisions+base-paramvalue-prop-parsetree": "<span class=\"apihelp-deprecated\">已弃用。</span>请改用<kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> or <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>。修订内容的XML解析树(需要内容模型<code>$1</code>)。",
        "apihelp-query+revisions+base-param-limit": "限制返回多少修订。",
-       "apihelp-query+revisions+base-param-expandtemplates": "展开修订内容中的模板(需要$1prop=content)。",
-       "apihelp-query+revisions+base-param-generatexml": "生成用于修订内容的XML解析树(需要$1prop=content;被<kbd>$1prop=parsetree</kbd>所取代)。",
-       "apihelp-query+revisions+base-param-parse": "解析修订内容(需要$1prop=content)。由于性能原因,如果此选项被使用,$1limit会被强制为1。",
+       "apihelp-query+revisions+base-param-expandtemplates": "请改用<kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd>。展开修订内容中的模板(需要$1prop=content)。",
+       "apihelp-query+revisions+base-param-generatexml": "请改用<kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd>或<kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>。生成用于修订内容的XML解析树(需要$1prop=content;被<kbd>$1prop=parsetree</kbd>所取代)。",
+       "apihelp-query+revisions+base-param-parse": "请æ\94¹ç\94¨<kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>ã\80\82解æ\9e\90修订å\86\85容ï¼\88é\9c\80è¦\81$1prop=contentï¼\89ã\80\82ç\94±äº\8eæ\80§è\83½å\8e\9få\9b ï¼\8cå¦\82æ\9e\9cæ­¤é\80\89项被使ç\94¨ï¼\8c$1limitä¼\9a被强å\88¶ä¸º1ã\80\82",
        "apihelp-query+revisions+base-param-section": "只检索此段落数的内容。",
-       "apihelp-query+revisions+base-param-diffto": "要比较修订差异的修订ID。使用<kbd>prev</kbd>、<kbd>next</kbd>和<kbd>cur</kbd>分别用于上个、下个和当前修订。",
-       "apihelp-query+revisions+base-param-difftotext": "要比较修订差异的文本。只有修订的有限数字内的差异。覆盖<var>$1diffto</var>。如果<var>$1section</var>被设置,只有那个段落将与此文本之间比较差异",
-       "apihelp-query+revisions+base-param-difftotextpst": "在编辑文本前对其执行预保存转换。只当与<var>$1difftotext</var>一起使用时有效。",
+       "apihelp-query+revisions+base-param-diffto": "请æ\94¹ç\94¨<kbd>[[Special:ApiHelp/compare|action=compare]]</kbd>ã\80\82è¦\81æ¯\94è¾\83修订差å¼\82ç\9a\84修订IDã\80\82使ç\94¨<kbd>prev</kbd>ã\80\81<kbd>next</kbd>å\92\8c<kbd>cur</kbd>å\88\86å\88«ç\94¨äº\8eä¸\8a个ã\80\81ä¸\8b个å\92\8cå½\93å\89\8d修订ã\80\82",
+       "apihelp-query+revisions+base-param-difftotext": "请æ\94¹ç\94¨<kbd>[[Special:ApiHelp/compare|action=compare]]</kbd>ã\80\82è¦\81æ¯\94è¾\83修订差å¼\82ç\9a\84æ\96\87æ\9c¬ã\80\82å\8fªæ\9c\89修订ç\9a\84æ\9c\89é\99\90æ\95°å­\97å\86\85ç\9a\84å·®å¼\82ã\80\82è¦\86ç\9b\96<var>$1diffto</var>ã\80\82å¦\82æ\9e\9c<var>$1section</var>被设置ï¼\8cå\8fªæ\9c\89é\82£ä¸ªæ®µè\90½å°\86ä¸\8eæ­¤æ\96\87æ\9c¬ä¹\8bé\97´æ¯\94è¾\83å·®å¼\82",
+       "apihelp-query+revisions+base-param-difftotextpst": "请改用<kbd>[[Special:ApiHelp/compare|action=compare]]</kbd>。在编辑文本前对其执行预保存转换。只当与<var>$1difftotext</var>一起使用时有效。",
        "apihelp-query+revisions+base-param-contentformat": "序列化用于<var>$1difftotext</var>的格式并预估内容输出。",
-       "apihelp-query+search-description": "执行一次全文本搜索。",
        "apihelp-query+search-param-search": "搜索所有匹配此值的页面标题或内容。根据wiki的搜索后端工具,您可以使用搜索字符串以调用特殊搜索功能。",
        "apihelp-query+search-param-namespace": "只在这些名字空间搜索。",
        "apihelp-query+search-param-what": "要执行的搜索类型。",
        "apihelp-query+search-param-limit": "返回的总计页面数。",
        "apihelp-query+search-param-interwiki": "搜索结果中包含跨wiki结果,如果可用。",
        "apihelp-query+search-param-backend": "要使用的搜索后端,如果没有则为默认。",
-       "apihelp-query+search-param-enablerewrites": "å\90¯ç\94¨å\86\85é\83¨æ\9f¥è¯¢é\87\8då\86\99ã\80\82ä¸\80äº\9bæ\90\9cç´¢å\90\8e端å\8f¯ä»¥é\87\8då\86\99æ\9f¥è¯¢å\88°å®\83认为ä¼\9aç»\99å\87ºæ\9b´å¥½ç»\93æ\9e\9cç\9a\84å\9c°æ\96¹,例如纠正拼写错误。",
+       "apihelp-query+search-param-enablerewrites": "å\90¯ç\94¨å\86\85é\83¨æ\9f¥è¯¢é\87\8då\86\99ã\80\82ä¸\80äº\9bæ\90\9cç´¢å\90\8e端å\8f¯ä»¥é\87\8då\86\99æ\9f¥è¯¢å\88°å\8f¦ä¸\80个被认为è\83½æ\8f\90ä¾\9bæ\9b´å¥½ç»\93æ\9e\9cç\9a\84ä½\8dç½®,例如纠正拼写错误。",
        "apihelp-query+search-example-simple": "搜索<kbd>meaning</kbd>。",
        "apihelp-query+search-example-text": "搜索文本<kbd>meaning</kbd>。",
        "apihelp-query+search-example-generator": "获取有关搜索<kbd>meaning</kbd>返回页面的页面信息。",
-       "apihelp-query+siteinfo-description": "返回有关网站的一般信息。",
        "apihelp-query+siteinfo-param-prop": "要获取的信息:",
        "apihelp-query+siteinfo-paramvalue-prop-general": "全部系统信息。",
        "apihelp-query+siteinfo-paramvalue-prop-namespaces": "注册的名字空间及其规范名称列表。",
        "apihelp-query+siteinfo-example-simple": "取得网站信息。",
        "apihelp-query+siteinfo-example-interwiki": "取得本地跨wiki前缀列表。",
        "apihelp-query+siteinfo-example-replag": "检查当前的响应延迟。",
-       "apihelp-query+stashimageinfo-description": "返回用于藏匿文件的文件信息。",
        "apihelp-query+stashimageinfo-param-filekey": "用于识别一次临时藏匿的早前上传的关键字。",
        "apihelp-query+stashimageinfo-param-sessionkey": "$1filekey的别名,用于向后兼容。",
        "apihelp-query+stashimageinfo-example-simple": "返回藏匿文件的信息。",
        "apihelp-query+stashimageinfo-example-params": "返回两个藏匿文件的缩略图。",
-       "apihelp-query+tags-description": "列出更改标签。",
        "apihelp-query+tags-param-limit": "列出标签的最大数量。",
        "apihelp-query+tags-param-prop": "要获取的属性:",
        "apihelp-query+tags-paramvalue-prop-name": "添加标签名称。",
        "apihelp-query+tags-paramvalue-prop-source": "获得标签来源,它可能包括用于扩展定义的标签的<samp>extension</samp>,以及用于可被用户手动应用的标签的<samp>manual</samp>。",
        "apihelp-query+tags-paramvalue-prop-active": "标签是否仍可被应用。",
        "apihelp-query+tags-example-simple": "可用标签列表。",
-       "apihelp-query+templates-description": "返回指定页面上所有被嵌入的页面。",
        "apihelp-query+templates-param-namespace": "只显示此名字空间的模板。",
        "apihelp-query+templates-param-limit": "返回的模板数量。",
        "apihelp-query+templates-param-templates": "只列出这些模板。对于检查某一页面使用某一模板很有用。",
        "apihelp-query+templates-example-simple": "获取在页面<kbd>Main Page</kbd>使用的模板。",
        "apihelp-query+templates-example-generator": "获取有关<kbd>Main Page</kbd>中使用的模板页面的信息。",
        "apihelp-query+templates-example-namespaces": "获取在{{ns:user}}和{{ns:template}}名字空间中,嵌入在<kbd>Main Page</kbd>页面的页面。",
-       "apihelp-query+tokens-description": "获取可修改数据的操作的令牌。",
        "apihelp-query+tokens-param-type": "要请求的令牌类型。",
        "apihelp-query+tokens-example-simple": "检索一个csrf令牌(默认)。",
        "apihelp-query+tokens-example-types": "检索一个监视令牌和一个巡查令牌。",
-       "apihelp-query+transcludedin-description": "查找所有嵌入指定页面的页面。",
        "apihelp-query+transcludedin-param-prop": "要获取的属性:",
        "apihelp-query+transcludedin-paramvalue-prop-pageid": "每个页面的页面ID。",
        "apihelp-query+transcludedin-paramvalue-prop-title": "每个页面的标题。",
        "apihelp-query+transcludedin-param-show": "只显示符合以下标准的项:\n;redirect:只显示重定向。\n;!redirect:只显示非重定向。",
        "apihelp-query+transcludedin-example-simple": "获取嵌入<kbd>Main Page</kbd>的页面列表。",
        "apihelp-query+transcludedin-example-generator": "获取有关嵌入<kbd>Main Page</kbd>的页面的信息。",
-       "apihelp-query+usercontribs-description": "获取一位用户的所有编辑。",
        "apihelp-query+usercontribs-param-limit": "返回贡献的最大数量。",
        "apihelp-query+usercontribs-param-start": "返回的起始时间戳。",
        "apihelp-query+usercontribs-param-end": "返回的最终时间戳。",
        "apihelp-query+usercontribs-param-toponly": "只列举作为最新修订的更改。",
        "apihelp-query+usercontribs-example-user": "显示用户<kbd>Example</kbd>的贡献。",
        "apihelp-query+usercontribs-example-ipprefix": "显示来自<kbd>192.0.2.</kbd>前缀所有 IP 地址的贡献。",
-       "apihelp-query+userinfo-description": "获取有关当前用户的信息。",
        "apihelp-query+userinfo-param-prop": "要包含的信息束:",
        "apihelp-query+userinfo-paramvalue-prop-blockinfo": "如果当前用户被封禁就标记,并注明是谁封禁,以何种原因封禁的。",
        "apihelp-query+userinfo-paramvalue-prop-hasmsg": "如果当前用户有等待中的消息的话,添加标签<samp>messages</samp>。",
        "apihelp-query+userinfo-param-attachedwiki": "与<kbd>$1prop=centralids</kbd>一起使用,表明用户是否附加于此ID定义的wiki。",
        "apihelp-query+userinfo-example-simple": "获取有关当前用户的信息。",
        "apihelp-query+userinfo-example-data": "获取有关当前用户的额外信息。",
-       "apihelp-query+users-description": "获取有关列出用户的信息。",
        "apihelp-query+users-param-prop": "要包含的信息束:",
        "apihelp-query+users-paramvalue-prop-blockinfo": "如果用户被封禁就标记,并注明是谁封禁,以何种原因封禁的。",
        "apihelp-query+users-paramvalue-prop-groups": "列举每位用户属于的所有组。",
        "apihelp-query+users-param-userids": "要获得信息的用户ID列表。",
        "apihelp-query+users-param-token": "请改用<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>。",
        "apihelp-query+users-example-simple": "返回用户<kbd>Example</kbd>的信息。",
-       "apihelp-query+watchlist-description": "在当前用户的监视列表中获取对页面的最近更改。",
        "apihelp-query+watchlist-param-allrev": "将同一页面的多个修订包含于指定的时间表内。",
        "apihelp-query+watchlist-param-start": "枚举的起始时间戳。",
        "apihelp-query+watchlist-param-end": "枚举的结束时间戳。",
        "apihelp-query+watchlist-example-generator": "在当前用户的监视列表中检索用于最近更改页面的页面信息。",
        "apihelp-query+watchlist-example-generator-rev": "在当前用户的监视列表中检索用于对页面最近更改的修订信息。",
        "apihelp-query+watchlist-example-wlowner": "在用户<kbd>Example</kbd>的监视列表中列出用于最近更改页面的最新修订。",
-       "apihelp-query+watchlistraw-description": "获得当前用户的监视列表上的所有页面。",
        "apihelp-query+watchlistraw-param-namespace": "只列出指定名字空间的页面。",
        "apihelp-query+watchlistraw-param-limit": "根据结果返回的结果总数。",
        "apihelp-query+watchlistraw-param-prop": "要获取的额外属性:",
        "apihelp-query+watchlistraw-param-totitle": "要列举的最终标题(带名字空间前缀)。",
        "apihelp-query+watchlistraw-example-simple": "列出当前用户的监视列表中的页面。",
        "apihelp-query+watchlistraw-example-generator": "检索当前用户监视列表上的页面的页面信息。",
-       "apihelp-removeauthenticationdata-description": "从当前用户移除身份验证数据。",
        "apihelp-removeauthenticationdata-example-simple": "尝试移除当前用户的<kbd>FooAuthenticationRequest</kbd>数据。",
-       "apihelp-resetpassword-description": "向用户发送密码重置邮件。",
-       "apihelp-resetpassword-description-noroutes": "没有密码重置路由可用。\n\n在<var>[[mw:Special:MyLanguage/Manual:$wgPasswordResetRoutes|$wgPasswordResetRoutes]]</var>中启用路由以使用此模块。",
        "apihelp-resetpassword-param-user": "正在重置的用户。",
        "apihelp-resetpassword-param-email": "正在重置用户的电子邮件地址。",
        "apihelp-resetpassword-example-user": "向用户<kbd>Example</kbd>发送密码重置邮件。",
        "apihelp-resetpassword-example-email": "向所有电子邮件地址为<kbd>user@example.com</kbd>的用户发送密码重置邮件。",
-       "apihelp-revisiondelete-description": "删除和恢复修订版本。",
        "apihelp-revisiondelete-param-type": "正在执行的修订版本删除类型。",
        "apihelp-revisiondelete-param-target": "要进行修订版本删除的页面标题,如果对某一类型需要。",
        "apihelp-revisiondelete-param-ids": "用于将被删除的修订的标识符。",
        "apihelp-revisiondelete-param-tags": "要在删除日志中应用到实体的标签。",
        "apihelp-revisiondelete-example-revision": "隐藏<kbd>首页</kbd>的修订版本<kbd>12345</kbd>的内容。",
        "apihelp-revisiondelete-example-log": "隐藏日志记录<kbd>67890</kbd>上的所有数据,原因<kbd>BLP violation</kbd>。",
-       "apihelp-rollback-description": "撤销对页面的最近编辑。\n\n如果最近编辑页面的用户在一行中进行多次编辑,所有编辑将被回退。",
        "apihelp-rollback-param-title": "要回退的页面标题。不能与<var>$1pageid</var>一起使用。",
        "apihelp-rollback-param-pageid": "要回退的页面的页面 ID。不能与<var>$1title</var>一起使用。",
        "apihelp-rollback-param-tags": "要应用在回退上的标签。",
        "apihelp-rollback-param-watchlist": "无条件地将页面加入至当前用户的监视列表或将其移除,使用设置或不更改监视。",
        "apihelp-rollback-example-simple": "回退由用户<kbd>Example</kbd>对<kbd>Main Page</kbd>做出的最近编辑。",
        "apihelp-rollback-example-summary": "回退由IP用户<kbd>192.0.2.5</kbd>对页面<kbd>Main Page</kbd>做出的最近编辑,带编辑摘要<kbd>Reverting vandalism</kbd>,并将这些编辑和回退标记为机器人编辑。",
-       "apihelp-rsd-description": "导出一个RSD(Really Simple Discovery)架构。",
        "apihelp-rsd-example-simple": "导出RSD架构。",
-       "apihelp-setnotificationtimestamp-description": "更新用于监视页面的通知时间戳。\n\n这会影响监视列表和历史中已更改页面的高亮度,并且如果“{{int:tog-enotifwatchlistpages}}”设置被启用的话,也会影响电子邮件的发送。",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "工作于所有已监视页面。",
        "apihelp-setnotificationtimestamp-param-timestamp": "要设置通知时间戳的时间戳。",
        "apihelp-setnotificationtimestamp-param-torevid": "要设置通知时间戳的修订(只限一个页面)。",
        "apihelp-setnotificationtimestamp-example-page": "重置用于<kbd>Main page</kbd>的通知状态。",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "设置<kbd>Main page</kbd>的通知时间戳,这样所有从2012年1月1日起的编辑都会是未复核的。",
        "apihelp-setnotificationtimestamp-example-allpages": "重置在<kbd>{{ns:user}}</kbd>名字空间中的页面的通知状态。",
-       "apihelp-setpagelanguage-description": "更改页面的语言。",
-       "apihelp-setpagelanguage-description-disabled": "此wiki不允许更改页面的语言。\n\n启用<var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var>以使用此操作。",
        "apihelp-setpagelanguage-param-title": "您希望更改语言的页面标题。不能与<var>$1pageid</var>一起使用。",
        "apihelp-setpagelanguage-param-pageid": "您希望更改语言的页面ID。不能与<var>$1title</var>一起使用。",
        "apihelp-setpagelanguage-param-lang": "更改页面的目标语言的语言代码。使用<kbd>default</kbd>以重置页面为wiki的默认内容语言。",
        "apihelp-setpagelanguage-param-tags": "要应用到此操作导致的日志记录的更改标签。",
        "apihelp-setpagelanguage-example-language": "更改<kbd>Main Page</kbd>的语言为巴斯克语。",
        "apihelp-setpagelanguage-example-default": "更改ID为123的页面的语言为wiki的默认内容语言。",
-       "apihelp-stashedit-description": "在分享的缓存中准备一次编辑。\n\n这是为了从编辑表单中通过AJAX使用,以改进页面保存的性能。",
        "apihelp-stashedit-param-title": "已开始编辑的页面标题。",
        "apihelp-stashedit-param-section": "段落数。<kbd>0</kbd>用于首段,<kbd>new</kbd>用于新的段落。",
        "apihelp-stashedit-param-sectiontitle": "新段落的标题。",
        "apihelp-stashedit-param-contentformat": "用于输入文本的内容序列化格式。",
        "apihelp-stashedit-param-baserevid": "基础修订的修订ID。",
        "apihelp-stashedit-param-summary": "更改摘要。",
-       "apihelp-tag-description": "从个别修订或日志记录中添加或移除更改标签。",
        "apihelp-tag-param-rcid": "要添加或移除标签的一个或更多的最近更改ID。",
        "apihelp-tag-param-revid": "要添加或移除标签的一个或更多的修订ID。",
        "apihelp-tag-param-logid": "要添加或移除标签的一个或更多的日志记录ID。",
        "apihelp-tag-param-tags": "要应用到将被创建为此操作结果的日志实体的标签。",
        "apihelp-tag-example-rev": "将<kbd>vandalism</kbd>标签添加至修订ID 123,而不指定原因",
        "apihelp-tag-example-log": "从日志记录ID 123移除<kbd>spam</kbd>标签,原因为<kbd>Wrongly applied</kbd>",
-       "apihelp-tokens-description": "获取可修改数据的操作的令牌。\n\n此模块被弃用以有利于[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]。",
        "apihelp-tokens-param-type": "要请求的令牌类型。",
        "apihelp-tokens-example-edit": "检索一个编辑令牌(默认)。",
        "apihelp-tokens-example-emailmove": "检索一个电子邮件令牌和一个移动令牌。",
-       "apihelp-unblock-description": "解封一位用户。",
        "apihelp-unblock-param-id": "解封时需要的封禁ID(通过<kbd>list=blocks</kbd>获得)。不能与<var>$1user</var>或<var>$1userid</var>一起使用。",
        "apihelp-unblock-param-user": "要解封的用户名、IP地址或IP地址段。不能与<var>$1id</var>或<var>$1userid</var>一起使用。",
        "apihelp-unblock-param-userid": "要封禁的用户ID。不能与<var>$1id</var>或<var>$1user</var>一起使用。",
        "apihelp-unblock-param-tags": "要在封禁日志中应用到实体的更改标签。",
        "apihelp-unblock-example-id": "解封封禁ID #<kbd>105</kbd>。",
        "apihelp-unblock-example-user": "解封用户<kbd>Bob</kbd>,原因<kbd>Sorry Bob</kbd>。",
-       "apihelp-undelete-description": "恢复一个被删除页面的修订。\n\n被删除修订的列表(包括时间戳)可通过[[Special:ApiHelp/query+deletedrevisions|prop=deletedrevisions]]检索到,并且被删除的文件ID列表可通过[[Special:ApiHelp/query+filearchive|list=filearchive]]检索到。",
        "apihelp-undelete-param-title": "要恢复的页面标题。",
        "apihelp-undelete-param-reason": "恢复的原因。",
        "apihelp-undelete-param-tags": "要在删除日志中应用到实体的更改标签。",
        "apihelp-undelete-param-watchlist": "无条件地将页面加入至当前用户的监视列表或将其移除,使用设置或不更改监视。",
        "apihelp-undelete-example-page": "恢复页面<kbd>Main Page</kbd>。",
        "apihelp-undelete-example-revisions": "恢复<kbd>Main Page</kbd>的两个修订。",
-       "apihelp-unlinkaccount-description": "从当前用户移除已连接的第三方账户。",
        "apihelp-unlinkaccount-example-simple": "尝试移除当前用户的,与<kbd>FooAuthenticationRequest</kbd>相关联提供方的链接。",
-       "apihelp-upload-description": "上传一个文件,或获取正在等待中的上传的状态。\n\n可以使用的几种方法:\n* 直接上传文件内容,使用<var>$1file</var>参数。\n* 成批上传文件,使用<var>$1filesize</var>、<var>$1chunk</var>和<var>$1offset</var>参数。\n* 有MediaWiki服务器从URL检索一个文件,使用<var>$1url</var>参数。\n* 完成一次由于警告而失败的早前上传,使用<var>$1filekey</var>参数。\n需要注意,当发送<var>$1file</var>时,HTTP POST必须做为一次文件上传(也就是使用<code>multipart/form-data</code>)完成。",
        "apihelp-upload-param-filename": "目标文件名。",
        "apihelp-upload-param-comment": "上传注释。如果没有指定<var>$1text</var>,那么它也被用于新文件的初始页面文本。",
        "apihelp-upload-param-tags": "更改标签以应用于上传日志记录和文件页面修订中。",
        "apihelp-upload-param-checkstatus": "只检索指定文件密钥的上传状态。",
        "apihelp-upload-example-url": "从URL上传。",
        "apihelp-upload-example-filekey": "完成一次由于警告而失败的上传。",
-       "apihelp-userrights-description": "更改一位用户的组成员。",
        "apihelp-userrights-param-user": "用户名。",
        "apihelp-userrights-param-userid": "用户ID。",
        "apihelp-userrights-param-add": "将用户加入至这些组中,或如果其已作为成员,更新其所在用户组成员资格的终止时间。",
        "apihelp-userrights-example-user": "将用户<kbd>FooBot</kbd>添加至<kbd>bot</kbd>用户组,并从<kbd>sysop</kbd>和<kbd>bureaucrat</kbd>组移除。",
        "apihelp-userrights-example-userid": "将ID为<kbd>123</kbd>的用户加入至<kbd>机器人</kbd>组,并将其从<kbd>管理员</kbd>和<kbd>行政员</kbd>组移除。",
        "apihelp-userrights-example-expiry": "添加用户<kbd>SometimeSysop</kbd>至用户组<kbd>sysop</kbd>,为期1个月。",
-       "apihelp-validatepassword-description": "验证密码是否符合wiki的密码方针。\n\n如果密码可以接受,就报告有效性为<samp>Good</samp>,如果密码可用于登录但必须更改,则报告为<samp>Change</samp>,或如果密码不可使用,则报告为<samp>Invalid</samp>。",
        "apihelp-validatepassword-param-password": "要验证的密码。",
        "apihelp-validatepassword-param-user": "用户名,供测试账户创建时使用。命名的用户必须不存在。",
        "apihelp-validatepassword-param-email": "电子邮件,供测试账户创建时使用。",
        "apihelp-validatepassword-param-realname": "真实姓名,供测试账户创建时使用。",
        "apihelp-validatepassword-example-1": "验证当前用户的密码<kbd>foobar</kbd>。",
        "apihelp-validatepassword-example-2": "为创建用户<kbd>Example</kbd>验证密码<kbd>qwerty</kbd>。",
-       "apihelp-watch-description": "从当前用户的监视列表中添加或移除页面。",
        "apihelp-watch-param-title": "要(取消)监视的页面。也可使用<var>$1titles</var>。",
        "apihelp-watch-param-unwatch": "如果设置页面将被取消监视而不是被监视。",
        "apihelp-watch-example-watch": "监视页面<kbd>Main Page</kbd>。",
        "apihelp-watch-example-generator": "监视主名字空间中的最少几个页面。",
        "apihelp-format-example-generic": "返回查询结果为$1格式。",
        "apihelp-format-param-wrappedhtml": "作为一个JSON对象返回优质打印的HTML和关联的ResouceLoader模块。",
-       "apihelp-json-description": "输出数据为JSON格式。",
        "apihelp-json-param-callback": "如果指定,将输出内容包裹在一个指定的函数调用中。出于安全考虑,所有用户相关的数据将被限制。",
        "apihelp-json-param-utf8": "如果指定,使用十六进制转义序列将大多数(但不是全部)非ASCII的字符编码为UTF-8,而不是替换它们。默认当<var>formatversion</var>不是<kbd>1</kbd>时。",
        "apihelp-json-param-ascii": "如果指定,使用十六进制转义序列将所有非ASCII编码。默认当<var>formatversion</var>为<kbd>1</kbd>时。",
        "apihelp-json-param-formatversion": "输出格式:\n;1:向后兼容格式(XML样式布尔值、用于内容节点的<samp>*</samp>键等)。\n;2:实验现代格式。细节可能更改!\n;latest:使用最新格式(当前为<kbd>2</kbd>),格式可能在没有警告的情况下更改。",
-       "apihelp-jsonfm-description": "输出数据为JSON格式(HTML优质打印效果)。",
-       "apihelp-none-description": "不输出任何东西。",
-       "apihelp-php-description": "输出数据为序列化PHP格式。",
        "apihelp-php-param-formatversion": "输出格式:\n;1:向后兼容格式(XML样式布尔值、用于内容节点的<samp>*</samp>键等)。\n;2:实验现代格式。细节可能更改!\n;latest:使用最新格式(当前为<kbd>2</kbd>),格式可能在没有警告的情况下更改。",
-       "apihelp-phpfm-description": "输出数据为序列化PHP格式(HTML优质打印效果)。",
-       "apihelp-rawfm-description": "输出数据为JSON格式,包含调试元素(HTML优质打印效果)。",
-       "apihelp-xml-description": "输出数据为XML格式。",
        "apihelp-xml-param-xslt": "如果指定,加入已命名的页面作为一个XSL样式表。值必须是在{{ns:MediaWiki}}名字空间以<code>.xsl</code>为结尾的标题。",
        "apihelp-xml-param-includexmlnamespace": "如果指定,添加一个XML名字空间。",
-       "apihelp-xmlfm-description": "输出数据为XML格式(HTML优质打印效果)。",
        "api-format-title": "MediaWiki API 结果",
        "api-format-prettyprint-header": "这是$1格式的HTML实现。HTML对调试很有用,但不适合应用程序使用。\n\n指定<var>format</var>参数以更改输出格式。要查看$1格式的非HTML实现,设置<kbd>format=$2</kbd>。\n\n参见[[mw:Special:MyLanguage/API|完整文档]],或[[Special:ApiHelp/main|API帮助]]以获取更多信息。",
        "api-format-prettyprint-header-only-html": "这是用来调试的HTML实现,不适合实际使用。\n\n参见[[mw:Special:MyLanguage/API|完整文档]],或[[Special:ApiHelp/main|API帮助]]以获取更多信息。",
+       "api-format-prettyprint-header-hyperlinked": "这是$1格式的HTML实现。HTML对调试很有用,但不适合应用程序使用。\n\n指定<var>format</var>参数以更改输出格式。要查看$1格式的非HTML实现,设置[$3 <kbd>format=$2</kbd>]。\n\n参见[[mw:API|完整文档]],或[[Special:ApiHelp/main|API帮助]]以获取更多信息。",
        "api-format-prettyprint-status": "此响应将会返回HTTP状态$1 $2。",
+       "api-login-fail-aborted": "身份验证需要用户交互,而其不被<kbd>action=login</kbd>支持。要通过<kbd>action=login</kbd>登录,请参见[[Special:BotPasswords]]。要继续使用主账户登录,请参见<kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>。",
+       "api-login-fail-aborted-nobotpw": "身份验证需要用户交互,而其不被<kbd>action=login</kbd>支持。要登录,请参见<kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>。",
+       "api-login-fail-badsessionprovider": "当使用$1时不能登录。",
+       "api-login-fail-sameorigin": "当同源协议未应用时不能登录。",
        "api-pageset-param-titles": "要工作的标题列表。",
        "api-pageset-param-pageids": "要工作的页面ID列表。",
        "api-pageset-param-revids": "要工作的修订ID列表。",
        "apierror-changeauth-norequest": "创建更改请求失败。",
        "apierror-chunk-too-small": "对于非最终块,最小块大小为$1{{PLURAL:$1|字节}}。",
        "apierror-cidrtoobroad": "比/$2更宽的$1 CIDR地址段不被接受。",
-       "apierror-compare-inputneeded": "需要标题、页面ID或修订版本号以用于<var>from</var>和<var>to</var>参数。",
+       "apierror-compare-relative-to-nothing": "没有与<var>torelative</var>的“来源”修订版本相对的版本。",
        "apierror-contentserializationexception": "内容序列化失败:$1",
        "apierror-contenttoobig": "您提供的内容超过了$1{{PLURAL:$1|千字节}}的条目大小限制。",
        "apierror-copyuploadbaddomain": "不允许从此域名通过URL上传。",
        "apierror-maxlag": "正在等待$2:已延迟$1{{PLURAL:$1|秒}}。",
        "apierror-mimesearchdisabled": "MIME搜索在Miser模式中被禁用。",
        "apierror-missingcontent-pageid": "丢失ID为$1的页面的内容。",
+       "apierror-missingcontent-revid": "丢失ID为$1的修订版本的内容。",
        "apierror-missingparam-at-least-one-of": "需要{{PLURAL:$2|参数$1|$1中的至少一个参数}}。",
        "apierror-missingparam-one-of": "需要{{PLURAL:$2|参数$1|$1中的一个参数}}。",
        "apierror-missingparam": "<var>$1</var>参数必须被设置。",
        "apierror-missingrev-pageid": "没有ID为$1的页面的当前修订版本。",
+       "apierror-missingrev-title": "没有标题$1的当前修订版本。",
        "apierror-missingtitle-createonly": "丢失标题只可以通过<kbd>create</kbd>保护。",
        "apierror-missingtitle": "您指定的页面不存在。",
        "apierror-missingtitle-byname": "页面$1不存在。",
        "apierror-revdel-mutuallyexclusive": "同一字段不能同时用于<var>hide</var>和<var>show</var>。",
        "apierror-revdel-needtarget": "此修订版本删除类型需要目标标题。",
        "apierror-revdel-paramneeded": "需要<var>hide</var>和/或<var>show</var>的至少一个值。",
+       "apierror-revisions-badid": "未找到参数<var>$1</var>的修订版本。",
        "apierror-revisions-norevids": "<var>revids</var>参数不能与列表选项(<var>$1limit</var>、<var>$1startid</var>、<var>$1endid</var>、<kbd>$1dir=newer</kbd>、<var>$1user</var>、<var>$1excludeuser</var>、<var>$1start</var>和<var>$1end</var>)一起使用",
        "apierror-revisions-singlepage": "<var>titles</var>、<var>pageids</var>或发生器用于提供多个页面,但<var>$1limit</var>、<var>$1startid</var>、<var>$1endid</var>、<kbd>$1dir=newer</kbd>、<var>$1user</var>、<var>$1excludeuser</var>、<var>$1start</var>和<var>$1end</var>参数只能在一个页面上使用。",
        "apierror-revwrongpage": "r$1不是$2的修订版本。",
        "apiwarn-alldeletedrevisions-performance": "当生成标题时,为获得更好性能,请设置<kbd>$1dir=newer</kbd>。",
        "apiwarn-badurlparam": "不能为$2解析<var>$1urlparam</var>。请只使用宽和高。",
        "apiwarn-badutf8": "<var>$1</var>通过的值包含无效或非标准化数据。正文数据应为有效的NFC标准化Unicode,没有除HT(\\t)、LF(\\n)和CR(\\r)以外的C0控制字符。",
+       "apiwarn-compare-nocontentmodel": "没有可以定义的模型,假定为$1。",
        "apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd>已被弃用。请改用<kbd>prop=deletedrevisions</kbd>或<kbd>list=alldeletedrevisions</kbd>。",
        "apiwarn-deprecation-expandtemplates-prop": "因为没有为<var>prop</var>参数指定值,所以在输出上使用了遗留格式。这种格式已弃用,并且将来会为<var>prop</var>参数设置默认值,这会导致新格式总会被使用。",
        "apiwarn-deprecation-httpsexpected": "当应为HTTPS时,HTTP被使用。",
index e9a6edc..c3f798f 100644 (file)
@@ -1660,7 +1660,7 @@ class AuthManager implements LoggerAwareInterface {
                        }
                }
 
-               $backoffKey = wfMemcKey( 'AuthManager', 'autocreate-failed', md5( $username ) );
+               $backoffKey = $cache->makeKey( 'AuthManager', 'autocreate-failed', md5( $username ) );
                if ( $cache->get( $backoffKey ) ) {
                        $this->logger->debug( __METHOD__ . ': {username} denied by prior creation attempt failures', [
                                'username' => $username,
index 8a10ecb..3125bd3 100644 (file)
@@ -127,7 +127,7 @@ class Throttler implements LoggerAwareInterface {
                                continue;
                        }
 
-                       $throttleKey = wfGlobalCacheKey( 'throttler', $this->type, $index, $ipKey, $userKey );
+                       $throttleKey = $this->cache->makeGlobalKey( 'throttler', $this->type, $index, $ipKey, $userKey );
                        $throttleCount = $this->cache->get( $throttleKey );
 
                        if ( !$throttleCount ) { // counter not started yet
@@ -170,7 +170,7 @@ class Throttler implements LoggerAwareInterface {
                $userKey = $username ? md5( $username ) : null;
                foreach ( $this->conditions as $index => $specificThrottle ) {
                        $ipKey = isset( $specificThrottle['allIPs'] ) ? null : $ip;
-                       $throttleKey = wfGlobalCacheKey( 'throttler', $this->type, $index, $ipKey, $userKey );
+                       $throttleKey = $this->cache->makeGlobalKey( 'throttler', $this->type, $index, $ipKey, $userKey );
                        $this->cache->delete( $throttleKey );
                }
        }
index e171bc7..3ee6330 100644 (file)
@@ -339,7 +339,11 @@ class BacklinkCache {
                        return min( $max, $this->fullResultCache[$table]->numRows() );
                }
 
-               $memcKey = wfMemcKey( 'numbacklinks', md5( $this->title->getPrefixedDBkey() ), $table );
+               $memcKey = $cache->makeKey(
+                       'numbacklinks',
+                       md5( $this->title->getPrefixedDBkey() ),
+                       $table
+               );
 
                // 3) ... fallback to memcached ...
                $count = $cache->get( $memcKey );
@@ -393,7 +397,7 @@ class BacklinkCache {
                        return $cacheEntry['batches'];
                }
 
-               $memcKey = wfMemcKey(
+               $memcKey = $cache->makeKey(
                        'backlinks',
                        md5( $this->title->getPrefixedDBkey() ),
                        $table,
@@ -436,7 +440,11 @@ class BacklinkCache {
                $cache->set( $memcKey, $cacheEntry, self::CACHE_EXPIRY );
 
                // Save backlink count to memcached
-               $memcKey = wfMemcKey( 'numbacklinks', md5( $this->title->getPrefixedDBkey() ), $table );
+               $memcKey = $cache->makeKey(
+                       'numbacklinks',
+                       md5( $this->title->getPrefixedDBkey() ),
+                       $table
+               );
                $cache->set( $memcKey, $cacheEntry['numRows'], self::CACHE_EXPIRY );
 
                wfDebug( __METHOD__ . ": got from database\n" );
index 0a302b6..f2da08a 100644 (file)
@@ -242,14 +242,14 @@ abstract class FileCacheBase {
                                : IP::sanitizeRange( "$ip/16" );
 
                        # Bail out if a request already came from this range...
-                       $key = wfMemcKey( static::class, 'attempt', $this->mType, $this->mKey, $ip );
+                       $key = $cache->makeKey( static::class, 'attempt', $this->mType, $this->mKey, $ip );
                        if ( $cache->get( $key ) ) {
                                return; // possibly the same user
                        }
                        $cache->set( $key, 1, self::MISS_TTL_SEC );
 
                        # Increment the number of cache misses...
-                       $key = $this->cacheMissKey();
+                       $key = $this->cacheMissKey( $cache );
                        if ( $cache->get( $key ) === false ) {
                                $cache->set( $key, 1, self::MISS_TTL_SEC );
                        } else {
@@ -265,13 +265,14 @@ abstract class FileCacheBase {
        public function getMissesRecent() {
                $cache = ObjectCache::getLocalClusterInstance();
 
-               return self::MISS_FACTOR * $cache->get( $this->cacheMissKey() );
+               return self::MISS_FACTOR * $cache->get( $this->cacheMissKey( $cache ) );
        }
 
        /**
+        * @param BagOStuff $cache Instance that the key will be used with
         * @return string
         */
-       protected function cacheMissKey() {
-               return wfMemcKey( static::class, 'misses', $this->mType, $this->mKey );
+       protected function cacheMissKey( BagOStuff $cache ) {
+               return $cache->makeKey( static::class, 'misses', $this->mType, $this->mKey );
        }
 }
index 355aff4..ad1fffb 100644 (file)
@@ -193,6 +193,7 @@ class MessageCache {
                                $po = ParserOptions::newFromAnon();
                                $po->setEditSection( false );
                                $po->setAllowUnsafeRawHtml( false );
+                               $po->setWrapOutputClass( false );
                                return $po;
                        }
 
@@ -202,6 +203,11 @@ class MessageCache {
                        // from malicious sources. As a precaution, disable
                        // the <html> parser tag when parsing messages.
                        $this->mParserOptions->setAllowUnsafeRawHtml( false );
+                       // Wrapping messages in an extra <div> is probably not expected. If
+                       // they're outside the content area they probably shouldn't be
+                       // targeted by CSS that's targeting the parser output, and if
+                       // they're inside they already are from the outer div.
+                       $this->mParserOptions->setWrapOutputClass( false );
                }
 
                return $this->mParserOptions;
@@ -214,7 +220,7 @@ class MessageCache {
         * @return array|bool The cache array, or false if not in cache.
         */
        protected function getLocalCache( $code ) {
-               $cacheKey = wfMemcKey( __CLASS__, $code );
+               $cacheKey = $this->srvCache->makeKey( __CLASS__, $code );
 
                return $this->srvCache->get( $cacheKey );
        }
@@ -226,7 +232,7 @@ class MessageCache {
         * @param array $cache The cache array
         */
        protected function saveToLocalCache( $code, $cache ) {
-               $cacheKey = wfMemcKey( __CLASS__, $code );
+               $cacheKey = $this->srvCache->makeKey( __CLASS__, $code );
                $this->srvCache->set( $cacheKey, $cache );
        }
 
@@ -302,7 +308,7 @@ class MessageCache {
                }
 
                if ( !$success ) {
-                       $cacheKey = wfMemcKey( 'messages', $code ); # Key in memc for messages
+                       $cacheKey = $this->clusterCache->makeKey( 'messages', $code ); # Key in memc for messages
                        # Try the global cache. If it is empty, try to acquire a lock. If
                        # the lock can't be acquired, wait for the other thread to finish
                        # and then try the global cache a second time.
@@ -396,7 +402,7 @@ class MessageCache {
        protected function loadFromDBWithLock( $code, array &$where, $mode = null ) {
                # If cache updates on all levels fail, give up on message overrides.
                # This is to avoid easy site outages; see $saveSuccess comments below.
-               $statusKey = wfMemcKey( 'messages', $code, 'status' );
+               $statusKey = $this->clusterCache->makeKey( 'messages', $code, 'status' );
                $status = $this->clusterCache->get( $statusKey );
                if ( $status === 'error' ) {
                        $where[] = "could not load; method is still globally disabled";
@@ -410,7 +416,7 @@ class MessageCache {
                # This lock is non-blocking so stale cache can quickly be used.
                # Note that load() will call a blocking getReentrantScopedLock()
                # after this if it really need to wait for any current thread.
-               $cacheKey = wfMemcKey( 'messages', $code );
+               $cacheKey = $this->clusterCache->makeKey( 'messages', $code );
                $scopedLock = $this->getReentrantScopedLock( $cacheKey, 0 );
                if ( !$scopedLock ) {
                        $where[] = 'could not acquire main lock';
@@ -458,7 +464,11 @@ class MessageCache {
        protected function loadFromDB( $code, $mode = null ) {
                global $wgMaxMsgCacheEntrySize, $wgLanguageCode, $wgAdaptiveMessageCache;
 
-               $dbr = wfGetDB( ( $mode == self::FOR_UPDATE ) ? DB_MASTER : DB_REPLICA );
+               // (T164666) The query here performs really poorly on WMF's
+               // contributions replicas. We don't have a way to say "any group except
+               // contributions", so for the moment let's specify 'api'.
+               // @todo: Get rid of this hack.
+               $dbr = wfGetDB( ( $mode == self::FOR_UPDATE ) ? DB_MASTER : DB_REPLICA, 'api' );
 
                $cache = [];
 
@@ -509,15 +519,18 @@ class MessageCache {
 
                # Conditions to load the remaining pages with their contents
                $smallConds = $conds;
-               $smallConds[] = 'page_latest=rev_id';
-               $smallConds[] = 'rev_text_id=old_id';
                $smallConds[] = 'page_len <= ' . intval( $wgMaxMsgCacheEntrySize );
 
                $res = $dbr->select(
                        [ 'page', 'revision', 'text' ],
                        [ 'page_title', 'old_id', 'old_text', 'old_flags' ],
                        $smallConds,
-                       __METHOD__ . "($code)-small"
+                       __METHOD__ . "($code)-small",
+                       [],
+                       [
+                               'revision' => [ 'JOIN', 'page_latest=rev_id' ],
+                               'text' => [ 'JOIN', 'rev_text_id=old_id' ],
+                       ]
                );
 
                foreach ( $res as $row ) {
@@ -583,7 +596,9 @@ class MessageCache {
                        function () use ( $title, $msg, $code ) {
                                global $wgContLang, $wgMaxMsgCacheEntrySize;
                                // Allow one caller at a time to avoid race conditions
-                               $scopedLock = $this->getReentrantScopedLock( wfMemcKey( 'messages', $code ) );
+                               $scopedLock = $this->getReentrantScopedLock(
+                                       $this->clusterCache->makeKey( 'messages', $code )
+                               );
                                if ( !$scopedLock ) {
                                        LoggerFactory::getInstance( 'MessageCache' )->error(
                                                __METHOD__ . ': could not acquire lock to update {title} ({code})',
@@ -615,7 +630,7 @@ class MessageCache {
 
                                // Relay the purge. Touching this check key expires cache contents
                                // and local cache (APC) validation hash across all datacenters.
-                               $this->wanCache->touchCheckKey( wfMemcKey( 'messages', $code ) );
+                               $this->wanCache->touchCheckKey( $this->wanCache->makeKey( 'messages', $code ) );
                                // Also delete cached sidebar... just in case it is affected
                                // @TODO: shouldn't this be $code === $wgLanguageCode?
                                if ( $code === 'en' ) {
@@ -626,7 +641,7 @@ class MessageCache {
                                        $codes = [ $code ];
                                }
                                foreach ( $codes as $code ) {
-                                       $this->wanCache->delete( wfMemcKey( 'sidebar', $code ) );
+                                       $this->wanCache->delete( $this->wanCache->makeKey( 'sidebar', $code ) );
                                }
 
                                // Purge the message in the message blob store
@@ -671,7 +686,7 @@ class MessageCache {
         */
        protected function saveToCaches( array $cache, $dest, $code = false ) {
                if ( $dest === 'all' ) {
-                       $cacheKey = wfMemcKey( 'messages', $code );
+                       $cacheKey = $this->clusterCache->makeKey( 'messages', $code );
                        $success = $this->clusterCache->set( $cacheKey, $cache );
                        $this->setValidationHash( $code, $cache );
                } else {
@@ -694,7 +709,7 @@ class MessageCache {
                $value = $this->wanCache->get(
                        $this->wanCache->makeKey( 'messages', $code, 'hash', 'v1' ),
                        $curTTL,
-                       [ wfMemcKey( 'messages', $code ) ]
+                       [ $this->wanCache->makeKey( 'messages', $code ) ]
                );
 
                if ( $value ) {
@@ -1199,7 +1214,7 @@ class MessageCache {
                $langs = Language::fetchLanguageNames( null, 'mw' );
                foreach ( array_keys( $langs ) as $code ) {
                        # Global and local caches
-                       $this->wanCache->touchCheckKey( wfMemcKey( 'messages', $code ) );
+                       $this->wanCache->touchCheckKey( $this->wanCache->makeKey( 'messages', $code ) );
                }
 
                $this->mLoadedLanguages = [];
index 52611ec..c57145c 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\DBQueryError;
 
 /**
  * LCStore implementation which uses the standard DB functions to store data.
index 92a3d3f..5aa693d 100644 (file)
@@ -177,6 +177,8 @@ class ChangesList extends ContextSource {
                } else {
                        $classes[] = Sanitizer::escapeClass( self::CSS_CLASS_PREFIX . 'ns' .
                                $rc->mAttribs['rc_namespace'] . '-' . $rc->mAttribs['rc_title'] );
+                       $classes[] = Sanitizer::escapeClass( self::CSS_CLASS_PREFIX . 'ns-' .
+                               $rc->mAttribs['rc_namespace'] );
                }
 
                // Indicate watched status on the line to allow for more
@@ -739,4 +741,26 @@ class ChangesList extends ContextSource {
                        && intval( $rcObj->getAttribute( 'rc_this_oldid' ) ) === 0;
        }
 
+       /**
+        * Get recommended data attributes for a change line.
+        * @param RecentChange $rc
+        * @return string[] attribute name => value
+        */
+       protected function getDataAttributes( RecentChange $rc ) {
+               $type = $rc->getAttribute( 'rc_source' );
+               switch ( $type ) {
+                       case RecentChange::SRC_EDIT:
+                       case RecentChange::SRC_NEW:
+                               return [
+                                       'data-mw-revid' => $rc->mAttribs['rc_this_oldid'],
+                               ];
+                       case RecentChange::SRC_LOG:
+                               return [
+                                       'data-mw-logid' => $rc->mAttribs['rc_logid'],
+                                       'data-mw-logaction' => $rc->mAttribs['rc_log_type'] . '/' . $rc->mAttribs['rc_log_action'],
+                               ];
+                       default:
+                               return [];
+               }
+       }
 }
index 851d173..73c0fb0 100644 (file)
@@ -30,12 +30,6 @@ use Wikimedia\Rdbms\IDatabase;
  * @since 1.29
  */
 class ChangesListBooleanFilter extends ChangesListFilter {
-       /**
-        * Name.  Used as URL parameter
-        *
-        * @var string $name
-        */
-
        // This can sometimes be different on Special:RecentChanges
        // and Special:Watchlist, due to the double-legacy hooks
        // (SpecialRecentChangesFilters and SpecialWatchlistFilters)
@@ -84,32 +78,31 @@ class ChangesListBooleanFilter extends ChangesListFilter {
         * it's for.
         *
         * @param array $filterDefinition ChangesListFilter definition
-        *
-        * $filterDefinition['name'] string Name.  Used as URL parameter.
-        * $filterDefinition['group'] ChangesListFilterGroup Group.  Filter group this
-        *  belongs to.
-        * $filterDefinition['label'] string i18n key of label for structured UI.
-        * $filterDefinition['description'] string i18n key of description for structured
-        *  UI.
-        * $filterDefinition['showHide'] string Main i18n key used for unstructured UI.
-        * $filterDefinition['isReplacedInStructuredUi'] bool Whether there is an
-        *  equivalent feature available in the structured UI; this is optional, defaulting
-        *  to true.  It does not need to be set if the exact same filter is simply visible
-        *  on both.
-        * $filterDefinition['default'] bool Default
-        * $filterDefinition['priority'] int Priority integer.  Higher value means higher
-        *  up in the group's filter list.
-        * $filterDefinition['queryCallable'] callable Callable accepting parameters, used
-        *  to implement filter's DB query modification.  Callback parameters:
-        *   string $specialPageClassName Class name of current special page
-        *   IContextSource $context Context, for e.g. user
-        *   IDatabase $dbr Database, for addQuotes, makeList, and similar
-        *   array &$tables Array of tables; see IDatabase::select $table
-        *   array &$fields Array of fields; see IDatabase::select $vars
-        *   array &$conds Array of conditions; see IDatabase::select $conds
-        *   array &$query_options Array of query options; see IDatabase::select $options
-        *   array &$join_conds Array of join conditions; see IDatabase::select $join_conds
-        *   Optional only for legacy filters that still use the query hooks directly
+        * * $filterDefinition['name'] string Name.  Used as URL parameter.
+        * * $filterDefinition['group'] ChangesListFilterGroup Group.  Filter group this
+        *     belongs to.
+        * * $filterDefinition['label'] string i18n key of label for structured UI.
+        * * $filterDefinition['description'] string i18n key of description for structured
+        *     UI.
+        * * $filterDefinition['showHide'] string Main i18n key used for unstructured UI.
+        * * $filterDefinition['isReplacedInStructuredUi'] bool Whether there is an
+        *     equivalent feature available in the structured UI; this is optional, defaulting
+        *     to true.  It does not need to be set if the exact same filter is simply visible
+        *     on both.
+        * * $filterDefinition['default'] bool Default
+        * * $filterDefinition['priority'] int Priority integer.  Higher value means higher
+        *     up in the group's filter list.
+        * * $filterDefinition['queryCallable'] callable Callable accepting parameters, used
+        *     to implement filter's DB query modification.  Required, except for legacy
+        *     filters that still use the query hooks directly.  Callback parameters:
+        *      * string $specialPageClassName Class name of current special page
+        *      * IContextSource $context Context, for e.g. user
+        *      * IDatabase $dbr Database, for addQuotes, makeList, and similar
+        *      * array &$tables Array of tables; see IDatabase::select $table
+        *      * array &$fields Array of fields; see IDatabase::select $vars
+        *      * array &$conds Array of conditions; see IDatabase::select $conds
+        *      * array &$query_options Array of query options; see IDatabase::select $options
+        *      * array &$join_conds Array of join conditions; see IDatabase::select $join_conds
         */
        public function __construct( $filterDefinition ) {
                parent::__construct( $filterDefinition );
@@ -150,7 +143,7 @@ class ChangesListBooleanFilter extends ChangesListFilter {
        /**
         * Sets default
         *
-        * @param bool Default value
+        * @param bool $defaultValue
         */
        public function setDefault( $defaultValue ) {
                $this->defaultValue = $defaultValue;
@@ -223,4 +216,13 @@ class ChangesListBooleanFilter extends ChangesListFilter {
                return $output;
        }
 
+       /**
+        * @inheritdoc
+        */
+       public function isSelected( FormOptions $opts ) {
+               return !$opts[ $this->getName() ] &&
+                       array_filter( $this->getSiblings(), function ( $sibling ) use ( $opts ) {
+                               return $opts[ $sibling->getName() ];
+                       } );
+       }
 }
index 1fdcd00..951c407 100644 (file)
@@ -19,13 +19,21 @@ class ChangesListBooleanFilterGroup extends ChangesListFilterGroup {
         * @param array $groupDefinition Configuration of group
         * * $groupDefinition['name'] string Group name
         * * $groupDefinition['title'] string i18n key for title (optional, can be omitted
-        * *  only if none of the filters in the group display in the structured UI)
+        *     only if none of the filters in the group display in the structured UI)
         * * $groupDefinition['priority'] int Priority integer.  Higher means higher in the
-        * *  group list.
+        *     group list.
         * * $groupDefinition['filters'] array Numeric array of filter definitions, each of which
-        * *  is an associative array to be passed to the filter constructor.  However,
-        * *  'priority' is optional for the filters.  Any filter that has priority unset
-        * *  will be put to the bottom, in the order given.
+        *     is an associative array to be passed to the filter constructor.  However,
+        *    'priority' is optional for the filters.  Any filter that has priority unset
+        *     will be put to the bottom, in the order given.
+        * * $groupDefinition['whatsThisHeader'] string i18n key for header of "What's
+        *     This" popup (optional).
+        * * $groupDefinition['whatsThisBody'] string i18n key for body of "What's This"
+        *     popup (optional).
+        * * $groupDefinition['whatsThisUrl'] string URL for main link of "What's This"
+        *     popup (optional).
+        * * $groupDefinition['whatsThisLinkText'] string i18n key of text for main link of
+        *     "What's This" popup (optional).
         */
        public function __construct( array $groupDefinition ) {
                $groupDefinition['isFullCoverage'] = true;
index b3a16a8..bd895bb 100644 (file)
@@ -74,25 +74,25 @@ abstract class ChangesListFilter {
        protected $description;
 
        /**
-        * List of conflicting groups
+        * Array of associative arrays with conflict information.  See
+        * setUnidirectionalConflict
         *
-        * @var array $conflictingGroups Array of associative arrays with conflict
-        *   information.  See setUnidirectionalConflict
+        * @var array $conflictingGroups
         */
        protected $conflictingGroups = [];
 
        /**
-        * List of conflicting filters
+        * Array of associative arrays with conflict information.  See
+        * setUnidirectionalConflict
         *
-        * @var array $conflictingFilters Array of associative arrays with conflict
-        *   information.  See setUnidirectionalConflict
+        * @var array $conflictingFilters
         */
        protected $conflictingFilters = [];
 
        /**
-        * List of filters that are a subset of the current filter
+        * Array of associative arrays with subset information
         *
-        * @var array $subsetFilters Array of associative arrays with subset information
+        * @var array $subsetFilters
         */
        protected $subsetFilters = [];
 
@@ -117,23 +117,22 @@ abstract class ChangesListFilter {
         * UI it's for.
         *
         * @param array $filterDefinition ChangesListFilter definition
-        *
-        * $filterDefinition['name'] string Name of filter; use lowercase with no
-        *  punctuation
-        * $filterDefinition['cssClassSuffix'] string CSS class suffix, used to mark
-        *  that a particular row belongs to this filter (when a row is included by the
-        *  filter) (optional)
-        * $filterDefinition['isRowApplicableCallable'] Callable taking two parameters, the
-        *  IContextSource, and the RecentChange object for the row, and returning true if
-        *  the row is attributed to this filter.  The above CSS class will then be
-        *  automatically added (optional, required if cssClassSuffix is used).
-        * $filterDefinition['group'] ChangesListFilterGroup Group.  Filter group this
-        *  belongs to.
-        * $filterDefinition['label'] string i18n key of label for structured UI.
-        * $filterDefinition['description'] string i18n key of description for structured
-        *  UI.
-        * $filterDefinition['priority'] int Priority integer.  Higher value means higher
-        *  up in the group's filter list.
+        * * $filterDefinition['name'] string Name of filter; use lowercase with no
+        *     punctuation
+        * * $filterDefinition['cssClassSuffix'] string CSS class suffix, used to mark
+        *     that a particular row belongs to this filter (when a row is included by the
+        *     filter) (optional)
+        * * $filterDefinition['isRowApplicableCallable'] Callable taking two parameters, the
+        *     IContextSource, and the RecentChange object for the row, and returning true if
+        *     the row is attributed to this filter.  The above CSS class will then be
+        *     automatically added (optional, required if cssClassSuffix is used).
+        * * $filterDefinition['group'] ChangesListFilterGroup Group.  Filter group this
+        *     belongs to.
+        * * $filterDefinition['label'] string i18n key of label for structured UI.
+        * * $filterDefinition['description'] string i18n key of description for structured
+        *     UI.
+        * * $filterDefinition['priority'] int Priority integer.  Higher value means higher
+        *     up in the group's filter list.
         */
        public function __construct( array $filterDefinition ) {
                if ( isset( $filterDefinition['group'] ) ) {
@@ -227,6 +226,7 @@ abstract class ChangesListFilter {
                if ( $other instanceof ChangesListFilterGroup ) {
                        $this->conflictingGroups[] = [
                                'group' => $other->getName(),
+                               'groupObject' => $other,
                                'globalDescription' => $globalDescription,
                                'contextDescription' => $contextDescription,
                        ];
@@ -234,6 +234,7 @@ abstract class ChangesListFilter {
                        $this->conflictingFilters[] = [
                                'group' => $other->getGroup()->getName(),
                                'filter' => $other->getName(),
+                               'filterObject' => $other,
                                'globalDescription' => $globalDescription,
                                'contextDescription' => $contextDescription,
                        ];
@@ -249,7 +250,7 @@ abstract class ChangesListFilter {
         * This means that anything in the results for the other filter is also in the
         * results for this one.
         *
-        * @param ChangesListFilter The filter the current instance is a superset of
+        * @param ChangesListFilter $other The filter the current instance is a superset of
         */
        public function setAsSupersetOf( ChangesListFilter $other ) {
                if ( $other->getGroup() !== $this->getGroup() ) {
@@ -344,7 +345,7 @@ abstract class ChangesListFilter {
         *
         * @param IContextSource $ctx Context source
         * @param RecentChange $rc Recent changes object
-        * @param Non-associative array of CSS class names; appended to if needed
+        * @param array &$classes Non-associative array of CSS class names; appended to if needed
         */
        public function applyCssClassIfNeeded( IContextSource $ctx, RecentChange $rc, array &$classes ) {
                if ( $this->isRowApplicableCallable === null ) {
@@ -385,6 +386,8 @@ abstract class ChangesListFilter {
                );
 
                foreach ( $conflicts as $conflictInfo ) {
+                       unset( $conflictInfo['filterObject'] );
+                       unset( $conflictInfo['groupObject'] );
                        $output['conflicts'][] = $conflictInfo;
                        array_push(
                                $output['messageKeys'],
@@ -395,4 +398,105 @@ abstract class ChangesListFilter {
 
                return $output;
        }
+
+       /**
+        * Checks whether this filter is selected in the provided options
+        *
+        * @param FormOptions $opts
+        * @return bool
+        */
+       abstract public function isSelected( FormOptions $opts );
+
+       /**
+        * Get groups conflicting with this filter
+        *
+        * @return ChangesListFilterGroup[]
+        */
+       public function getConflictingGroups() {
+               return array_map(
+                       function ( $conflictDesc ) {
+                               return $conflictDesc[ 'groupObject' ];
+                       },
+                       $this->conflictingGroups
+               );
+       }
+
+       /**
+        * Get filters conflicting with this filter
+        *
+        * @return ChangesListFilter[]
+        */
+       public function getConflictingFilters() {
+               return array_map(
+                       function ( $conflictDesc ) {
+                               return $conflictDesc[ 'filterObject' ];
+                       },
+                       $this->conflictingFilters
+               );
+       }
+
+       /**
+        * Check if the conflict with a group is currently "active"
+        *
+        * @param ChangesListFilterGroup $group
+        * @param FormOptions $opts
+        * @return bool
+        */
+       public function activelyInConflictWithGroup( ChangesListFilterGroup $group, FormOptions $opts ) {
+               if ( $group->anySelected( $opts ) && $this->isSelected( $opts ) ) {
+                       /** @var ChangesListFilter $siblingFilter */
+                       foreach ( $this->getSiblings() as $siblingFilter ) {
+                               if ( $siblingFilter->isSelected( $opts ) && !$siblingFilter->hasConflictWithGroup( $group ) ) {
+                                       return false;
+                               }
+                       }
+                       return true;
+               }
+               return false;
+       }
+
+       private function hasConflictWithGroup( ChangesListFilterGroup $group ) {
+               return in_array( $group, $this->getConflictingGroups() );
+       }
+
+       /**
+        * Check if the conflict with a filter is currently "active"
+        *
+        * @param ChangesListFilter $filter
+        * @param FormOptions $opts
+        * @return bool
+        */
+       public function activelyInConflictWithFilter( ChangeslistFilter $filter, FormOptions $opts ) {
+               if ( $this->isSelected( $opts ) && $filter->isSelected( $opts ) ) {
+                       /** @var ChangesListFilter $siblingFilter */
+                       foreach ( $this->getSiblings() as $siblingFilter ) {
+                               if (
+                                       $siblingFilter->isSelected( $opts ) &&
+                                       !$siblingFilter->hasConflictWithFilter( $filter )
+                               ) {
+                                       return false;
+                               }
+                       }
+                       return true;
+               }
+               return false;
+       }
+
+       private function hasConflictWithFilter( ChangeslistFilter $filter ) {
+               return in_array( $filter, $this->getConflictingFilters() );
+       }
+
+       /**
+        * Get filters in the same group
+        *
+        * @return ChangesListFilter[]
+        */
+       protected function getSiblings() {
+               return array_filter(
+                       $this->getGroup()->getFilters(),
+                       function ( $filter ) {
+                               return $filter !== $this;
+                       }
+               );
+       }
 }
index 4ff5520..3555158 100644 (file)
@@ -106,18 +106,18 @@ abstract class ChangesListFilterGroup {
        protected $isFullCoverage;
 
        /**
-        * List of conflicting groups
+        * Array of associative arrays with conflict information.  See
+        * setUnidirectionalConflict
         *
-        * @var array $conflictingGroups Array of associative arrays with conflict
-        *   information.  See setUnidirectionalConflict
+        * @var array $conflictingGroups
         */
        protected $conflictingGroups = [];
 
        /**
-        * List of conflicting filters
+        * Array of associative arrays with conflict information.  See
+        * setUnidirectionalConflict
         *
-        * @var array $conflictingFilters Array of associative arrays with conflict
-        *   information.  See setUnidirectionalConflict
+        * @var array $conflictingFilters
         */
        protected $conflictingFilters = [];
 
@@ -131,17 +131,25 @@ abstract class ChangesListFilterGroup {
         * @param array $groupDefinition Configuration of group
         * * $groupDefinition['name'] string Group name; use camelCase with no punctuation
         * * $groupDefinition['title'] string i18n key for title (optional, can be omitted
-        * *  only if none of the filters in the group display in the structured UI)
+        *     only if none of the filters in the group display in the structured UI)
         * * $groupDefinition['type'] string A type constant from a subclass of this one
         * * $groupDefinition['priority'] int Priority integer.  Higher value means higher
-        * *  up in the group list (optional, defaults to -100).
+        *     up in the group list (optional, defaults to -100).
         * * $groupDefinition['filters'] array Numeric array of filter definitions, each of which
-        * *  is an associative array to be passed to the filter constructor.  However,
-        * *  'priority' is optional for the filters.  Any filter that has priority unset
-        * *  will be put to the bottom, in the order given.
+        *     is an associative array to be passed to the filter constructor.  However,
+        *     'priority' is optional for the filters.  Any filter that has priority unset
+        *     will be put to the bottom, in the order given.
         * * $groupDefinition['isFullCoverage'] bool Whether the group is full coverage;
-        * *  if true, this means that checking every item in the group means no
-        * *  changes list entries are filtered out.
+        *     if true, this means that checking every item in the group means no
+        *     changes list entries are filtered out.
+        * * $groupDefinition['whatsThisHeader'] string i18n key for header of "What's
+        *     This" popup (optional).
+        * * $groupDefinition['whatsThisBody'] string i18n key for body of "What's This"
+        *     popup (optional).
+        * * $groupDefinition['whatsThisUrl'] string URL for main link of "What's This"
+        *     popup (optional).
+        * * $groupDefinition['whatsThisLinkText'] string i18n key of text for main link of
+        *     "What's This" popup (optional).
         */
        public function __construct( array $groupDefinition ) {
                if ( strpos( $groupDefinition['name'], self::RESERVED_NAME_CHAR ) !== false ) {
@@ -261,6 +269,7 @@ abstract class ChangesListFilterGroup {
                if ( $other instanceof ChangesListFilterGroup ) {
                        $this->conflictingGroups[] = [
                                'group' => $other->getName(),
+                               'groupObject' => $other,
                                'globalDescription' => $globalDescription,
                                'contextDescription' => $contextDescription,
                        ];
@@ -268,6 +277,7 @@ abstract class ChangesListFilterGroup {
                        $this->conflictingFilters[] = [
                                'group' => $other->getGroup()->getName(),
                                'filter' => $other->getName(),
+                               'filterObject' => $other,
                                'globalDescription' => $globalDescription,
                                'contextDescription' => $contextDescription,
                        ];
@@ -305,7 +315,8 @@ abstract class ChangesListFilterGroup {
        }
 
        /**
-        * @return array Associative array of ChangesListFilter objects, with filter name as key
+        * @return ChangesListFilter[] Associative array of ChangesListFilter objects, with
+        *   filter name as key
         */
        public function getFilters() {
                return $this->filters;
@@ -390,6 +401,8 @@ abstract class ChangesListFilterGroup {
 
                foreach ( $conflicts as $conflictInfo ) {
                        $output['conflicts'][] = $conflictInfo;
+                       unset( $conflictInfo['filterObject'] );
+                       unset( $conflictInfo['groupObject'] );
                        array_push(
                                $output['messageKeys'],
                                $conflictInfo['globalDescription'],
@@ -399,4 +412,47 @@ abstract class ChangesListFilterGroup {
 
                return $output;
        }
+
+       /**
+        * Get groups conflicting with this filter group
+        *
+        * @return ChangesListFilterGroup[]
+        */
+       public function getConflictingGroups() {
+               return array_map(
+                       function ( $conflictDesc ) {
+                               return $conflictDesc[ 'groupObject' ];
+                       },
+                       $this->conflictingGroups
+               );
+       }
+
+       /**
+        * Get filters conflicting with this filter group
+        *
+        * @return ChangesListFilter[]
+        */
+       public function getConflictingFilters() {
+               return array_map(
+                       function ( $conflictDesc ) {
+                               return $conflictDesc[ 'filterObject' ];
+                       },
+                       $this->conflictingFilters
+               );
+       }
+
+       /**
+        * Check if any filter in this group is selected
+        *
+        * @param FormOptions $opts
+        * @return bool
+        */
+       public function anySelected( FormOptions $opts ) {
+               return !!count( array_filter(
+                       $this->getFilters(),
+                       function ( ChangesListFilter $filter ) use ( $opts ) {
+                               return $filter->isSelected( $opts );
+                       }
+               ) );
+       }
 }
index 1c977b9..6754d67 100644 (file)
@@ -14,4 +14,15 @@ class ChangesListStringOptionsFilter extends ChangesListFilter {
        public function displaysOnUnstructuredUi() {
                return false;
        }
+
+       /**
+        * @inheritdoc
+        */
+       public function isSelected( FormOptions $opts ) {
+               $values = explode(
+                       ChangesListStringOptionsFilterGroup::SEPARATOR,
+                       $opts[ $this->getGroup()->getName() ]
+               );
+               return in_array( $this->getName(), $values );
+       }
 }
index 723ef39..86b4a8b 100644 (file)
@@ -60,12 +60,6 @@ class ChangesListStringOptionsFilterGroup extends ChangesListFilterGroup {
         */
        const NONE = '';
 
-       /**
-        * Group name; used as form parameter.
-        *
-        * @var string $name
-        */
-
        /**
         * Defaul parameter value
         *
@@ -86,27 +80,35 @@ class ChangesListStringOptionsFilterGroup extends ChangesListFilterGroup {
         * @param array $groupDefinition Configuration of group
         * * $groupDefinition['name'] string Group name
         * * $groupDefinition['title'] string i18n key for title (optional, can be omitted
-        * *  only if none of the filters in the group display in the structured UI)
+        *     only if none of the filters in the group display in the structured UI)
         * * $groupDefinition['priority'] int Priority integer.  Higher means higher in the
-        * *  group list.
+        *     group list.
         * * $groupDefinition['filters'] array Numeric array of filter definitions, each of which
-        * *  is an associative array to be passed to the filter constructor.  However,
-        * *  'priority' is optional for the filters.  Any filter that has priority unset
-        * *  will be put to the bottom, in the order given.
+        *     is an associative array to be passed to the filter constructor.  However,
+        *     'priority' is optional for the filters.  Any filter that has priority unset
+        *     will be put to the bottom, in the order given.
         * * $groupDefinition['default'] string Default for group.
         * * $groupDefinition['isFullCoverage'] bool Whether the group is full coverage;
-        * *  if true, this means that checking every item in the group means no
-        * *  changes list entries are filtered out.
+        *     if true, this means that checking every item in the group means no
+        *     changes list entries are filtered out.
         * * $groupDefinition['queryCallable'] callable Callable accepting parameters:
-        * *  string $specialPageClassName Class name of current special page
-        * *  IContextSource $context Context, for e.g. user
-        * *  IDatabase $dbr Database, for addQuotes, makeList, and similar
-        * *  array &$tables Array of tables; see IDatabase::select $table
-        * *  array &$fields Array of fields; see IDatabase::select $vars
-        * *  array &$conds Array of conditions; see IDatabase::select $conds
-        * *  array &$query_options Array of query options; see IDatabase::select $options
-        * *  array &$join_conds Array of join conditions; see IDatabase::select $join_conds
-        * *  array $selectedValues The allowed and requested values, lower-cased and sorted
+        *      * string $specialPageClassName Class name of current special page
+        *      * IContextSource $context Context, for e.g. user
+        *      * IDatabase $dbr Database, for addQuotes, makeList, and similar
+        *      * array &$tables Array of tables; see IDatabase::select $table
+        *      * array &$fields Array of fields; see IDatabase::select $vars
+        *      * array &$conds Array of conditions; see IDatabase::select $conds
+        *      * array &$query_options Array of query options; see IDatabase::select $options
+        *      * array &$join_conds Array of join conditions; see IDatabase::select $join_conds
+        *      * array $selectedValues The allowed and requested values, lower-cased and sorted
+        * * $groupDefinition['whatsThisHeader'] string i18n key for header of "What's
+        *     This" popup (optional).
+        * * $groupDefinition['whatsThisBody'] string i18n key for body of "What's This"
+        *     popup (optional).
+        * * $groupDefinition['whatsThisUrl'] string URL for main link of "What's This"
+        *     popup (optional).
+        * * $groupDefinition['whatsThisLinkText'] string i18n key of text for main link of
+        *     "What's This" popup (optional).
         */
        public function __construct( array $groupDefinition ) {
                if ( !isset( $groupDefinition['isFullCoverage'] ) ) {
index b8a2ac8..cbbbfeb 100644 (file)
@@ -32,6 +32,11 @@ class EnhancedChangesList extends ChangesList {
         */
        protected $rc_cache;
 
+       /**
+        * @var TemplateParser
+        */
+       protected $templateParser;
+
        /**
         * @param IContextSource|Skin $obj
         * @param array $filterGroups Array of ChangesListFilterGroup objects (currently optional)
@@ -58,6 +63,7 @@ class EnhancedChangesList extends ChangesList {
                        $this->message,
                        $this->linkRenderer
                );
+               $this->templateParser = new TemplateParser();
        }
 
        /**
@@ -237,8 +243,7 @@ class EnhancedChangesList extends ChangesList {
                        $text = $userlink;
                        $text .= $this->getLanguage()->getDirMark();
                        if ( $count > 1 ) {
-                               // @todo FIXME: Hardcoded '×'. Should be a message.
-                               $formattedCount = $this->getLanguage()->formatNum( $count ) . '×';
+                               $formattedCount = $this->msg( 'ntimes' )->numParams( $count )->escaped();
                                $text .= ' ' . $this->msg( 'parentheses' )->rawParams( $formattedCount )->escaped();
                        }
                        array_push( $users, $text );
@@ -340,8 +345,7 @@ class EnhancedChangesList extends ChangesList {
 
                $this->rcCacheIndex++;
 
-               $templateParser = new TemplateParser();
-               return $templateParser->processTemplate(
+               return $this->templateParser->processTemplate(
                        'EnhancedChangesListGroup',
                        $templateParams
                );
@@ -442,13 +446,16 @@ class EnhancedChangesList extends ChangesList {
                # Tags
                $data['tags'] = $this->getTags( $rcObj, $classes );
 
+               $attribs = $this->getDataAttributes( $rcObj );
+
                // give the hook a chance to modify the data
                $success = Hooks::run( 'EnhancedChangesListModifyLineData',
-                       [ $this, &$data, $block, $rcObj, &$classes ] );
+                       [ $this, &$data, $block, $rcObj, &$classes, &$attribs ] );
                if ( !$success ) {
                        // skip entry if hook aborted it
                        return [];
                }
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
 
                $lineParams['recentChangesFlagsRaw'] = [];
                if ( isset( $data['recentChangesFlags'] ) ) {
@@ -464,6 +471,7 @@ class EnhancedChangesList extends ChangesList {
                }
 
                $lineParams['classes'] = array_values( $classes );
+               $lineParams['attribs'] = Html::expandAttributes( $attribs );
 
                // everything else: makes it easier for extensions to add or remove data
                $lineParams['data'] = array_values( $data );
@@ -666,6 +674,8 @@ class EnhancedChangesList extends ChangesList {
                # Show how many people are watching this if enabled
                $data['watchingUsers'] = $this->numberofWatchingusers( $rcObj->numberofWatchingusers );
 
+               $data['attribs'] = array_merge( $this->getDataAttributes( $rcObj ), [ 'class' => $classes ] );
+
                // give the hook a chance to modify the data
                $success = Hooks::run( 'EnhancedChangesListModifyBlockLineData',
                        [ $this, &$data, $rcObj ] );
@@ -673,9 +683,13 @@ class EnhancedChangesList extends ChangesList {
                        // skip entry if hook aborted it
                        return '';
                }
+               $attribs = $data['attribs'];
+               unset( $data['attribs'] );
+               $attribs = wfArrayFilterByKey( $attribs, function( $key ) {
+                       return $key === 'class' || Sanitizer::isReservedDataAttribute( $key );
+               } );
 
-               $line = Html::openElement( 'table', [ 'class' => $classes ] ) .
-                       Html::openElement( 'tr' );
+               $line = Html::openElement( 'table', $attribs ) . Html::openElement( 'tr' );
                $line .= '<td class="mw-enhanced-rc"><span class="mw-enhancedchanges-arrow-space"></span>';
 
                if ( isset( $data['recentChangesFlags'] ) ) {
@@ -712,6 +726,11 @@ class EnhancedChangesList extends ChangesList {
                if ( $rc->getAttribute( 'rc_type' ) == RC_CATEGORIZE ) {
                        // For categorizations we must swap the category title with the page title!
                        $pageTitle = Title::newFromID( $rc->getAttribute( 'rc_cur_id' ) );
+                       if ( !$pageTitle ) {
+                               // The page has been deleted, but the RC entry
+                               // deletion job has not run yet. Just skip.
+                               return '';
+                       }
                }
 
                $retVal = ' ' . $this->msg( 'parentheses' )
index a5d5191..2a53d66 100644 (file)
@@ -50,16 +50,23 @@ class OldChangesList extends ChangesList {
                                $rc->mAttribs['rc_namespace'] . '-' . $rc->mAttribs['rc_title'] );
                }
 
+               $attribs = $this->getDataAttributes( $rc );
+
                // Avoid PHP 7.1 warning from passing $this by reference
                $list = $this;
-               if ( !Hooks::run( 'OldChangesListRecentChangesLine', [ &$list, &$html, $rc, &$classes ] ) ) {
+               if ( !Hooks::run( 'OldChangesListRecentChangesLine',
+                       [ &$list, &$html, $rc, &$classes, &$attribs ] )
+               ) {
                        return false;
                }
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
 
                $dateheader = ''; // $html now contains only <li>...</li>, for hooks' convenience.
                $this->insertDateHeader( $dateheader, $rc->mAttribs['rc_timestamp'] );
 
-               return "$dateheader<li class=\"" . implode( ' ', $classes ) . "\">" . $html . "</li>\n";
+               $attribs['class'] = implode( ' ', $classes );
+
+               return $dateheader . Html::rawElement( 'li', $attribs,  $html ) . "\n";
        }
 
        /**
index 35f8b3b..e8e35a3 100644 (file)
@@ -911,7 +911,16 @@ class RecentChange {
        public function loadFromRow( $row ) {
                $this->mAttribs = get_object_vars( $row );
                $this->mAttribs['rc_timestamp'] = wfTimestamp( TS_MW, $this->mAttribs['rc_timestamp'] );
-               $this->mAttribs['rc_deleted'] = $row->rc_deleted; // MUST be set
+               // rc_deleted MUST be set
+               $this->mAttribs['rc_deleted'] = $row->rc_deleted;
+
+               if ( isset( $this->mAttribs['rc_ip'] ) ) {
+                       // Clean up CIDRs for Postgres per T164898. ("127.0.0.1" casts to "127.0.0.1/32")
+                       $n = strpos( $this->mAttribs['rc_ip'], '/' );
+                       if ( $n !== false ) {
+                               $this->mAttribs['rc_ip'] = substr( $this->mAttribs['rc_ip'], 0, $n );
+                       }
+               }
        }
 
        /**
index ca3c28b..6ba9c10 100644 (file)
@@ -21,6 +21,7 @@
  * @ingroup Change tagging
  */
 
+use MediaWiki\MediaWikiServices;
 use Wikimedia\Rdbms\Database;
 
 class ChangeTags {
@@ -119,6 +120,32 @@ class ChangeTags {
                return $msg->parse();
        }
 
+       /**
+        * Get the message object for the tag's long description.
+        *
+        * Checks if message key "mediawiki:tag-$tag-description" exists. If it does not,
+        * or if message is disabled, returns false. Otherwise, returns the message object
+        * for the long description.
+        *
+        * @param string $tag Tag
+        * @param IContextSource $context
+        * @return Message|bool Message object of the tag long description or false if
+        *  there is no description.
+        */
+       public static function tagLongDescriptionMessage( $tag, IContextSource $context ) {
+               $msg = $context->msg( "tag-$tag-description" );
+               if ( !$msg->exists() ) {
+                       return false;
+               }
+               if ( $msg->isDisabled() ) {
+                       // The message exists but is disabled, hide the description.
+                       return false;
+               }
+
+               // Message exists and isn't disabled, use it.
+               return $msg;
+       }
+
        /**
         * Add tags to a change given its rc_id, rev_id and/or log_id
         *
@@ -404,8 +431,8 @@ class ChangeTags {
                }
 
                // to be applied, a tag has to be explicitly defined
-               // @todo Allow extensions to define tags that can be applied by users...
                $allowedTags = self::listExplicitlyDefinedTags();
+               Hooks::run( 'ChangeTagsAllowedAdd', [ &$allowedTags, $tags, $user ] );
                $disallowedTags = array_diff( $tags, $allowedTags );
                if ( $disallowedTags ) {
                        return self::restrictedTagError( 'tags-apply-not-allowed-one',
@@ -660,7 +687,7 @@ class ChangeTags {
 
                        $tables[] = 'change_tag';
                        $join_conds['change_tag'] = [ 'INNER JOIN', $join_cond ];
-                       $conds['ct_tag'] = $filter_tag;
+                       $conds['ct_tag'] = explode( '|', $filter_tag );
                }
        }
 
@@ -924,6 +951,37 @@ class ChangeTags {
                return Status::newGood( $logId );
        }
 
+       /**
+        * Is the tag name valid?
+        *
+        * @param string $tag Tag that you are interested in creating
+        * @return Status
+        * @since 1.30
+        */
+       public static function isTagNameValid( $tag ) {
+               // no empty tags
+               if ( $tag === '' ) {
+                       return Status::newFatal( 'tags-create-no-name' );
+               }
+
+               // tags cannot contain commas (used as a delimiter in tag_summary table),
+               // pipe (used as a delimiter between multiple tags in
+               // modifyDisplayQuery), or slashes (would break tag description messages in
+               // MediaWiki namespace)
+               if ( strpos( $tag, ',' ) !== false || strpos( $tag, '|' ) !== false
+                       || strpos( $tag, '/' ) !== false ) {
+                       return Status::newFatal( 'tags-create-invalid-chars' );
+               }
+
+               // could the MediaWiki namespace description messages be created?
+               $title = Title::makeTitleSafe( NS_MEDIAWIKI, "Tag-$tag-description" );
+               if ( is_null( $title ) ) {
+                       return Status::newFatal( 'tags-create-invalid-title-chars' );
+               }
+
+               return Status::newGood();
+       }
+
        /**
         * Is it OK to allow the user to create this tag?
         *
@@ -942,21 +1000,9 @@ class ChangeTags {
                        }
                }
 
-               // no empty tags
-               if ( $tag === '' ) {
-                       return Status::newFatal( 'tags-create-no-name' );
-               }
-
-               // tags cannot contain commas (used as a delimiter in tag_summary table) or
-               // slashes (would break tag description messages in MediaWiki namespace)
-               if ( strpos( $tag, ',' ) !== false || strpos( $tag, '/' ) !== false ) {
-                       return Status::newFatal( 'tags-create-invalid-chars' );
-               }
-
-               // could the MediaWiki namespace description messages be created?
-               $title = Title::makeTitleSafe( NS_MEDIAWIKI, "Tag-$tag-description" );
-               if ( is_null( $title ) ) {
-                       return Status::newFatal( 'tags-create-invalid-title-chars' );
+               $status = self::isTagNameValid( $tag );
+               if ( !$status->isGood() ) {
+                       return $status;
                }
 
                // does the tag already exist?
@@ -1158,8 +1204,9 @@ class ChangeTags {
                if ( !Hooks::isRegistered( 'ChangeTagsListActive' ) ) {
                        return $tags;
                }
-               return ObjectCache::getMainWANInstance()->getWithSetCallback(
-                       wfMemcKey( 'active-tags' ),
+               $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+               return $cache->getWithSetCallback(
+                       $cache->makeKey( 'active-tags' ),
                        WANObjectCache::TTL_MINUTE * 5,
                        function ( $oldValue, &$ttl, array &$setOpts ) use ( $tags ) {
                                $setOpts += Database::getCacheSetOptions( wfGetDB( DB_REPLICA ) );
@@ -1169,7 +1216,7 @@ class ChangeTags {
                                return $tags;
                        },
                        [
-                               'checkKeys' => [ wfMemcKey( 'active-tags' ) ],
+                               'checkKeys' => [ $cache->makeKey( 'active-tags' ) ],
                                'lockTSE' => WANObjectCache::TTL_MINUTE * 5,
                                'pcTTL' => WANObjectCache::TTL_PROC_LONG
                        ]
@@ -1212,8 +1259,9 @@ class ChangeTags {
        public static function listExplicitlyDefinedTags() {
                $fname = __METHOD__;
 
-               return ObjectCache::getMainWANInstance()->getWithSetCallback(
-                       wfMemcKey( 'valid-tags-db' ),
+               $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+               return $cache->getWithSetCallback(
+                       $cache->makeKey( 'valid-tags-db' ),
                        WANObjectCache::TTL_MINUTE * 5,
                        function ( $oldValue, &$ttl, array &$setOpts ) use ( $fname ) {
                                $dbr = wfGetDB( DB_REPLICA );
@@ -1225,7 +1273,7 @@ class ChangeTags {
                                return array_filter( array_unique( $tags ) );
                        },
                        [
-                               'checkKeys' => [ wfMemcKey( 'valid-tags-db' ) ],
+                               'checkKeys' => [ $cache->makeKey( 'valid-tags-db' ) ],
                                'lockTSE' => WANObjectCache::TTL_MINUTE * 5,
                                'pcTTL' => WANObjectCache::TTL_PROC_LONG
                        ]
@@ -1247,8 +1295,9 @@ class ChangeTags {
                if ( !Hooks::isRegistered( 'ListDefinedTags' ) ) {
                        return $tags;
                }
-               return ObjectCache::getMainWANInstance()->getWithSetCallback(
-                       wfMemcKey( 'valid-tags-hook' ),
+               $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+               return $cache->getWithSetCallback(
+                       $cache->makeKey( 'valid-tags-hook' ),
                        WANObjectCache::TTL_MINUTE * 5,
                        function ( $oldValue, &$ttl, array &$setOpts ) use ( $tags ) {
                                $setOpts += Database::getCacheSetOptions( wfGetDB( DB_REPLICA ) );
@@ -1257,7 +1306,7 @@ class ChangeTags {
                                return array_filter( array_unique( $tags ) );
                        },
                        [
-                               'checkKeys' => [ wfMemcKey( 'valid-tags-hook' ) ],
+                               'checkKeys' => [ $cache->makeKey( 'valid-tags-hook' ) ],
                                'lockTSE' => WANObjectCache::TTL_MINUTE * 5,
                                'pcTTL' => WANObjectCache::TTL_PROC_LONG
                        ]
@@ -1281,11 +1330,11 @@ class ChangeTags {
         * @since 1.25
         */
        public static function purgeTagCacheAll() {
-               $cache = ObjectCache::getMainWANInstance();
+               $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
 
-               $cache->touchCheckKey( wfMemcKey( 'active-tags' ) );
-               $cache->touchCheckKey( wfMemcKey( 'valid-tags-db' ) );
-               $cache->touchCheckKey( wfMemcKey( 'valid-tags-hook' ) );
+               $cache->touchCheckKey( $cache->makeKey( 'active-tags' ) );
+               $cache->touchCheckKey( $cache->makeKey( 'valid-tags-db' ) );
+               $cache->touchCheckKey( $cache->makeKey( 'valid-tags-hook' ) );
 
                self::purgeTagUsageCache();
        }
@@ -1295,9 +1344,9 @@ class ChangeTags {
         * @since 1.25
         */
        public static function purgeTagUsageCache() {
-               $cache = ObjectCache::getMainWANInstance();
+               $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
 
-               $cache->touchCheckKey( wfMemcKey( 'change-tag-statistics' ) );
+               $cache->touchCheckKey( $cache->makeKey( 'change-tag-statistics' ) );
        }
 
        /**
@@ -1312,8 +1361,9 @@ class ChangeTags {
         */
        public static function tagUsageStatistics() {
                $fname = __METHOD__;
-               return ObjectCache::getMainWANInstance()->getWithSetCallback(
-                       wfMemcKey( 'change-tag-statistics' ),
+               $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+               return $cache->getWithSetCallback(
+                       $cache->makeKey( 'change-tag-statistics' ),
                        WANObjectCache::TTL_MINUTE * 5,
                        function ( $oldValue, &$ttl, array &$setOpts ) use ( $fname ) {
                                $dbr = wfGetDB( DB_REPLICA, 'vslow' );
@@ -1336,7 +1386,7 @@ class ChangeTags {
                                return $out;
                        },
                        [
-                               'checkKeys' => [ wfMemcKey( 'change-tag-statistics' ) ],
+                               'checkKeys' => [ $cache->makeKey( 'change-tag-statistics' ) ],
                                'lockTSE' => WANObjectCache::TTL_MINUTE * 5,
                                'pcTTL' => WANObjectCache::TTL_PROC_LONG
                        ]
diff --git a/includes/collation/BashkirUppercaseCollation.php b/includes/collation/BashkirUppercaseCollation.php
new file mode 100644 (file)
index 0000000..33ed9bc
--- /dev/null
@@ -0,0 +1,71 @@
+<?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
+ *
+ * @since 1.30
+ *
+ * @file
+ */
+
+class BashkirUppercaseCollation extends CustomUppercaseCollation {
+
+       public function __construct() {
+               parent::__construct( [
+                       'А',
+                       'Б',
+                       'В',
+                       'Г',
+                       'Ғ',
+                       'Д',
+                       'Ҙ',
+                       'Е',
+                       'Ё',
+                       'Ж',
+                       'З',
+                       'И',
+                       'Й',
+                       'К',
+                       'Ҡ',
+                       'Л',
+                       'М',
+                       'Н',
+                       'Ң',
+                       'О',
+                       'Ө',
+                       'П',
+                       'Р',
+                       'С',
+                       'Ҫ',
+                       'Т',
+                       'У',
+                       'Ү',
+                       'Ф',
+                       'Х',
+                       'Һ',
+                       'Ц',
+                       'Ч',
+                       'Ш',
+                       'Щ',
+                       'Ъ',
+                       'Ы',
+                       'Ь',
+                       'Э',
+                       'Ә',
+                       'Ю',
+                       'Я',
+               ], Language::factory( 'ba' ) );
+       }
+}
index d67bc7e..d009168 100644 (file)
@@ -65,6 +65,8 @@ abstract class Collation {
                                return new CollationEt;
                        case 'xx-uca-fa':
                                return new CollationFa;
+                       case 'uppercase-ba':
+                               return new BashkirUppercaseCollation;
                        default:
                                $match = [];
                                if ( preg_match( '/^uca-([A-Za-z@=-]+)$/', $collationName, $match ) ) {
index 9cce087..fb46ab4 100644 (file)
 /**
  * Temporary workaround for incorrect collation of Persian language ('fa') in ICU 52 (bug T139110).
  *
- * All of the following will be considered separate letters for category headings in Persian:
+ * Replace with other letters that appear in an okish spot in the alphabet
+ *
  *  - Characters 'و' 'ا' (often appear at the beginning of words)
  *  - Characters 'ٲ' 'ٳ' (may appear at the beginning of words in loanwords)
- *  - Characters 'ء' 'ئ' (don't appear at the beginning of words, but it's easier to implement)
  *
  * @since 1.29
  */
 class CollationFa extends IcuCollation {
-       private $tertiaryCollator;
+
+       // Really hacky - replace with stuff from other blocks.
+       private $override = [
+               "\xd8\xa7" => "\xd8\xa1",
+               "\xd9\x88" => "\xd9\x89",
+               "\xd9\xb2" => "\xF3\xB3\x80\x81",
+               "\xd9\xb3" => "\xF3\xB3\x80\x82",
+       ];
 
        public function __construct() {
                parent::__construct( 'fa' );
-               $this->tertiaryCollator = Collator::create( 'fa' );
        }
 
-       public function getPrimarySortKey( $string ) {
-               $primary = parent::getPrimarySortKey( $string );
-               // We have to use a tertiary sortkey for everything with the primary sortkey of 2627.
-               // Otherwise, the "Remove duplicate prefixes" logic in IcuCollation would remove them.
-               // This matches sortkeys for the following characters: ء ئ ا و ٲ ٳ
-               if ( substr( $primary, 0, 2 ) === "\x26\x27" ) {
-                       wfDebug( "Using tertiary sortkey for '$string'\n" );
-                       return $this->tertiaryCollator->getSortKey( $string );
+       public function getSortKey( $string ) {
+               $modified = strtr( $string, $this->override );
+               return parent::getSortKey( $modified );
+       }
+
+       public function getFirstLetter( $string ) {
+               if ( isset( $this->override[substr( $string, 0, 2 )] ) ) {
+                       return substr( $string, 0, 2 );
                }
-               return $primary;
+               return parent::getFirstLetter( $string );
        }
 }
diff --git a/includes/collation/CustomUppercaseCollation.php b/includes/collation/CustomUppercaseCollation.php
new file mode 100644 (file)
index 0000000..1b96bff
--- /dev/null
@@ -0,0 +1,87 @@
+<?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
+ *
+ * @since 1.30
+ *
+ * @file
+ */
+
+/**
+ * Resort normal UTF-8 order by putting a bunch of stuff in PUA
+ *
+ * This takes a bunch of characters (The alphabet) that should,
+ * be together, and converts them all to private-use-area characters
+ * so that they are all sorted in the right order relative to each
+ * other.
+ *
+ * This renumbers characters starting at U+F3000 (Chosen to avoid
+ * conflicts with other people using private use area)
+ *
+ * This does not support fancy things like secondary differences, etc.
+ *
+ * It is expected most people will subclass this and just override the
+ * constructor to hard-code an alphabet.
+ */
+class CustomUppercaseCollation extends NumericUppercaseCollation {
+
+       /** @var array $alphabet Sorted array of letters */
+       private $alphabet;
+
+       /** @var array $puaSubset List of private use area codes */
+       private $puaSubset;
+
+       /**
+        * @note This assumes $alphabet does not contain U+F3000-U+F303F
+        *
+        * @param array $alphabet Sorted array of uppercase characters.
+        * @param Language $language What language for number sorting.
+        */
+       public function __construct( array $alphabet, Language $lang ) {
+               // It'd be trivial to extend this past 64, you'd just
+               // need a bit of bit-fiddling. Doesn't seem necessary right
+               // now.
+               if ( count( $alphabet ) < 1 || count( $alphabet ) >= 64 ) {
+                       throw new UnexpectedValueException( "Alphabet must be < 64 items" );
+               }
+               $this->alphabet = $alphabet;
+
+               $this->puaSubset = [];
+               $len = count( $alphabet );
+               for ( $i = 0; $i < $len; $i++ ) {
+                       $this->puaSubset[] = "\xF3\xB3\x80" . chr( $i + 128 );
+               }
+               parent::__construct( $lang );
+       }
+
+       private function convertToPua( $string ) {
+               return str_replace( $this->alphabet, $this->puaSubset, $string );
+       }
+
+       public function getSortKey( $string ) {
+               return $this->convertToPua( parent::getSortKey( $string ) );
+       }
+
+       public function getFirstLetter( $string ) {
+               // In case a title has a PUA code in it, make it sort
+               // under the header for the character it would replace
+               // to avoid inconsistent behaviour. This class mostly
+               // assumes that people will not use PUA codes.
+               return parent::getFirstLetter(
+                       str_replace( $this->puaSubset, $this->alphabet, $string )
+               );
+       }
+}
index 0f2f641..ae3df49 100644 (file)
@@ -54,20 +54,18 @@ class EtcdConfig implements Config, LoggerAwareInterface {
        private $skewCacheTTL;
        /** @var integer */
        private $timeout;
-       /** @var string */
-       private $directoryHash;
 
        /**
         * @param array $params Parameter map:
         *   - host: the host address and port
         *   - protocol: either http or https
         *   - directory: the etc "directory" were MediaWiki specific variables are located
-        *   - encoding: one of ("JSON", "YAML")
+        *   - encoding: one of ("JSON", "YAML"). Defaults to JSON. [optional]
         *   - cache: BagOStuff instance or ObjectFactory spec thereof for a server cache.
-        *            The cache will also be used as a fallback if etcd is down.
-        *   - cacheTTL: logical cache TTL in seconds
-        *   - skewTTL: maximum seconds to randomly lower the assigned TTL on cache save
-        *   - timeout: seconds to wait for etcd before throwing an error
+        *            The cache will also be used as a fallback if etcd is down. [optional]
+        *   - cacheTTL: logical cache TTL in seconds [optional]
+        *   - skewTTL: maximum seconds to randomly lower the assigned TTL on cache save [optional]
+        *   - timeout: seconds to wait for etcd before throwing an error [optional]
         */
        public function __construct( array $params ) {
                $params += [
@@ -75,20 +73,19 @@ class EtcdConfig implements Config, LoggerAwareInterface {
                        'encoding' => 'JSON',
                        'cacheTTL' => 10,
                        'skewTTL' => 1,
-                       'timeout' => 10
+                       'timeout' => 2
                ];
 
                $this->host = $params['host'];
                $this->protocol = $params['protocol'];
                $this->directory = trim( $params['directory'], '/' );
-               $this->directoryHash = sha1( $this->directory );
                $this->encoding = $params['encoding'];
                $this->skewCacheTTL = $params['skewTTL'];
                $this->baseCacheTTL = max( $params['cacheTTL'] - $this->skewCacheTTL, 0 );
                $this->timeout = $params['timeout'];
 
                if ( !isset( $params['cache'] ) ) {
-                       $this->srvCache = new HashBagOStuff( [] );
+                       $this->srvCache = new HashBagOStuff();
                } elseif ( $params['cache'] instanceof BagOStuff ) {
                        $this->srvCache = $params['cache'];
                } else {
@@ -98,12 +95,14 @@ class EtcdConfig implements Config, LoggerAwareInterface {
                $this->logger = new Psr\Log\NullLogger();
                $this->http = new MultiHttpClient( [
                        'connTimeout' => $this->timeout,
-                       'reqTimeout' => $this->timeout
+                       'reqTimeout' => $this->timeout,
+                       'logger' => $this->logger
                ] );
        }
 
        public function setLogger( LoggerInterface $logger ) {
                $this->logger = $logger;
+               $this->http->setLogger( $logger );
        }
 
        public function has( $name ) {
@@ -122,13 +121,20 @@ class EtcdConfig implements Config, LoggerAwareInterface {
                return $this->procCache['config'][$name];
        }
 
+       /**
+        * @throws ConfigException
+        */
        private function load() {
                if ( $this->procCache !== null ) {
                        return; // already loaded
                }
 
                $now = microtime( true );
-               $key = $this->srvCache->makeKey( 'variable', $this->directoryHash );
+               $key = $this->srvCache->makeGlobalKey(
+                       __CLASS__,
+                       $this->host,
+                       $this->directory
+               );
 
                // Get the cached value or block until it is regenerated (by this or another thread)...
                $data = null; // latest config info
@@ -148,24 +154,24 @@ class EtcdConfig implements Config, LoggerAwareInterface {
                                if ( $this->srvCache->lock( $key, 0, $this->baseCacheTTL ) ) {
                                        try {
                                                list( $config, $error, $retry ) = $this->fetchAllFromEtcd();
-                                               if ( $config === null ) {
-                                                       $this->logger->error( "Failed to fetch configuration: $error" );
-                                                       // Fail fast if the error is likely to just keep happening
-                                                       return $retry
-                                                               ? WaitConditionLoop::CONDITION_CONTINUE
-                                                               : WaitConditionLoop::CONDITION_FAILED;
-                                               }
-
-                                               // Avoid having all servers expire cache keys at the same time
-                                               $expiry = microtime( true ) + $this->baseCacheTTL;
-                                               $expiry += mt_rand( 0, 1e6 ) / 1e6 * $this->skewCacheTTL;
+                                               if ( is_array( $config ) ) {
+                                                       // Avoid having all servers expire cache keys at the same time
+                                                       $expiry = microtime( true ) + $this->baseCacheTTL;
+                                                       $expiry += mt_rand( 0, 1e6 ) / 1e6 * $this->skewCacheTTL;
 
-                                               $data = [ 'config' => $config, 'expires' => $expiry ];
-                                               $this->srvCache->set( $key, $data, BagOStuff::TTL_INDEFINITE );
+                                                       $data = [ 'config' => $config, 'expires' => $expiry ];
+                                                       $this->srvCache->set( $key, $data, BagOStuff::TTL_INDEFINITE );
 
-                                               $this->logger->info( "Refreshed stale etcd configuration cache." );
+                                                       $this->logger->info( "Refreshed stale etcd configuration cache." );
 
-                                               return WaitConditionLoop::CONDITION_REACHED;
+                                                       return WaitConditionLoop::CONDITION_REACHED;
+                                               } else {
+                                                       $this->logger->error( "Failed to fetch configuration: $error" );
+                                                       if ( !$retry ) {
+                                                               // Fail fast since the error is likely to keep happening
+                                                               return WaitConditionLoop::CONDITION_FAILED;
+                                                       }
+                                               }
                                        } finally {
                                                $this->srvCache->unlock( $key ); // release mutex
                                        }
@@ -211,7 +217,7 @@ class EtcdConfig implements Config, LoggerAwareInterface {
                        }
 
                        // Avoid the server next time if that failed
-                       $dsd->removeServer( $server, $servers );
+                       $servers = $dsd->removeServer( $server, $servers );
                } while ( $servers );
 
                return [ $config, $error, $retry ];
@@ -251,7 +257,7 @@ class EtcdConfig implements Config, LoggerAwareInterface {
 
                        $name = basename( $node['key'] );
                        $value = $this->unserialize( $node['value'] );
-                       if ( !is_array( $value ) || !isset( $value['val'] ) ) {
+                       if ( !is_array( $value ) || !array_key_exists( 'val', $value ) ) {
                                return [ null, "Failed to parse value for '$name'.", false ];
                        }
 
index bccb147..85894ed 100644 (file)
@@ -1007,22 +1007,22 @@ abstract class ContentHandler {
         * @return ParserOptions
         */
        public function makeParserOptions( $context ) {
-               global $wgContLang, $wgEnableParserLimitReporting;
+               global $wgContLang;
 
                if ( $context instanceof IContextSource ) {
-                       $options = ParserOptions::newFromContext( $context );
+                       $user = $context->getUser();
+                       $lang = $context->getLanguage();
                } elseif ( $context instanceof User ) { // settings per user (even anons)
-                       $options = ParserOptions::newFromUser( $context );
+                       $user = $context;
+                       $lang = null;
                } elseif ( $context === 'canonical' ) { // canonical settings
-                       $options = ParserOptions::newFromUserAndLang( new User, $wgContLang );
+                       $user = new User;
+                       $lang = $wgContLang;
                } else {
                        throw new MWException( "Bad context for parser options: $context" );
                }
 
-               $options->enableLimitReport( $wgEnableParserLimitReporting ); // show inclusion/loop reports
-               $options->setTidy( true ); // fix bad HTML
-
-               return $options;
+               return ParserOptions::newCanonical( $user, $lang );
        }
 
        /**
index 843d540..3028dfd 100644 (file)
@@ -6,7 +6,7 @@
  * but instead manually called by WikitextHandler.
  * This should be fixed in the future.
  */
-class FileContentHandler extends WikitextContentHandler  {
+class FileContentHandler extends WikitextContentHandler {
 
        public function getFieldsForSearchIndex( SearchEngine $engine ) {
                $fields['file_media_type'] =
index 9f79aa8..afa03b8 100644 (file)
@@ -37,6 +37,9 @@ class WikiTextStructure {
                'h1', 'h2', 'h3', 'h4', 'h5', 'h6',
                // Collapsed fields are hidden by default so we don't want them showing up.
                '.autocollapse',
+               // Content explicitly decided to be not searchable by editors such
+               // as custom navigation templates.
+               '.navigation-not-searchable'
        ];
 
        /**
index 135c9b2..36d6df2 100644 (file)
@@ -170,7 +170,7 @@ abstract class ContextSource implements IContextSource {
         * @deprecated since 1.27 use a StatsdDataFactory from MediaWikiServices (preferably injected)
         *
         * @since 1.25
-        * @return StatsdDataFactory
+        * @return MediawikiStatsdDataFactory
         */
        public function getStats() {
                return MediaWikiServices::getInstance()->getStatsdDataFactory();
@@ -181,10 +181,12 @@ abstract class ContextSource implements IContextSource {
         * Parameters are the same as wfMessage()
         *
         * @since 1.18
+        * @param string|string[]|MessageSpecifier $key Message key, or array of keys,
+        *   or a MessageSpecifier.
         * @param mixed ...
         * @return Message
         */
-       public function msg( /* $args */ ) {
+       public function msg( $key /* $args */ ) {
                $args = func_get_args();
 
                return call_user_func_array( [ $this->getContext(), 'msg' ], $args );
index e77a058..9c3c42a 100644 (file)
@@ -109,7 +109,7 @@ class DerivativeContext extends ContextSource implements MutableContext {
         *
         * @deprecated since 1.27 use a StatsdDataFactory from MediaWikiServices (preferably injected)
         *
-        * @return StatsdDataFactory
+        * @return MediawikiStatsdDataFactory
         */
        public function getStats() {
                return MediaWikiServices::getInstance()->getStatsdDataFactory();
@@ -324,10 +324,12 @@ class DerivativeContext extends ContextSource implements MutableContext {
         * it would set only the original context, and not take
         * into account any changes.
         *
+        * @param string|string[]|MessageSpecifier $key Message key, or array of keys,
+        *   or a MessageSpecifier.
         * @param mixed $args,... Arguments to wfMessage
         * @return Message
         */
-       public function msg() {
+       public function msg( $key ) {
                $args = func_get_args();
 
                return call_user_func_array( 'wfMessage', $args )->setContext( $this );
index ccefc72..d13e1a5 100644 (file)
@@ -52,7 +52,7 @@ use Liuggio\StatsdClient\Factory\StatsdDataFactory;
  * belong here either. Session state changes should only be propagated on
  * shutdown by separate persistence handler objects, for example.
  */
-interface IContextSource {
+interface IContextSource extends MessageLocalizer {
        /**
         * Get the WebRequest object
         *
@@ -131,7 +131,7 @@ interface IContextSource {
         * @deprecated since 1.27 use a StatsdDataFactory from MediaWikiServices (preferably injected)
         *
         * @since 1.25
-        * @return StatsdDataFactory
+        * @return MediawikiStatsdDataFactory
         */
        public function getStats();
 
@@ -143,14 +143,6 @@ interface IContextSource {
         */
        public function getTiming();
 
-       /**
-        * Get a Message object with context set.  See wfMessage for parameters.
-        *
-        * @param mixed ...
-        * @return Message
-        */
-       public function msg();
-
        /**
         * Export the resolved user IP, HTTP headers, user ID, and session ID.
         * The result will be reasonably sized to allow for serialization.
index 3dfa456..2cabfe1 100644 (file)
@@ -138,7 +138,7 @@ class RequestContext implements IContextSource, MutableContext {
         *
         * @deprecated since 1.27 use a StatsdDataFactory from MediaWikiServices (preferably injected)
         *
-        * @return StatsdDataFactory
+        * @return MediawikiStatsdDataFactory
         */
        public function getStats() {
                return MediaWikiServices::getInstance()->getStatsdDataFactory();
@@ -449,10 +449,12 @@ class RequestContext implements IContextSource, MutableContext {
         * Get a Message object with context set
         * Parameters are the same as wfMessage()
         *
+        * @param string|string[]|MessageSpecifier $key Message key, or array of keys,
+        *   or a MessageSpecifier.
         * @param mixed ...
         * @return Message
         */
-       public function msg() {
+       public function msg( $key ) {
                $args = func_get_args();
 
                return call_user_func_array( 'wfMessage', $args )->setContext( $this );
index a0d7ad8..556fe75 100644 (file)
@@ -24,6 +24,8 @@
 use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\Blob;
 use Wikimedia\Rdbms\ResultWrapper;
+use Wikimedia\Rdbms\DBConnectionError;
+use Wikimedia\Rdbms\DBUnexpectedError;
 
 /**
  * @ingroup Database
@@ -556,19 +558,9 @@ class DatabaseOracle extends Database {
        }
 
        function nativeInsertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
-               $insertOptions = [], $selectOptions = []
+               $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
                $destTable = $this->tableName( $destTable );
-               if ( !is_array( $selectOptions ) ) {
-                       $selectOptions = [ $selectOptions ];
-               }
-               list( $startOpts, $useIndex, $tailOpts, $ignoreIndex ) =
-                       $this->makeSelectOptions( $selectOptions );
-               if ( is_array( $srcTable ) ) {
-                       $srcTable = implode( ',', array_map( [ $this, 'tableName' ], $srcTable ) );
-               } else {
-                       $srcTable = $this->tableName( $srcTable );
-               }
 
                $sequenceData = $this->getSequenceData( $destTable );
                if ( $sequenceData !== false &&
@@ -583,13 +575,16 @@ class DatabaseOracle extends Database {
                        $val = $val . ' field' . ( $i++ );
                }
 
-               $sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
-                       " SELECT $startOpts " . implode( ',', $varMap ) .
-                       " FROM $srcTable $useIndex $ignoreIndex ";
-               if ( $conds != '*' ) {
-                       $sql .= ' WHERE ' . $this->makeList( $conds, LIST_AND );
-               }
-               $sql .= " $tailOpts";
+               $selectSql = $this->selectSQLText(
+                       $srcTable,
+                       array_values( $varMap ),
+                       $conds,
+                       $fname,
+                       $selectOptions,
+                       $selectJoinConds
+               );
+
+               $sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ') ' . $selectSql;
 
                if ( in_array( 'IGNORE', $insertOptions ) ) {
                        $this->ignoreDupValOnIndex = true;
index fe063f2..464a918 100644 (file)
@@ -33,9 +33,12 @@ abstract class MWLBFactory {
        /**
         * @param array $lbConf Config for LBFactory::__construct()
         * @param Config $mainConfig Main config object from MediaWikiServices
+        * @param ConfiguredReadOnlyMode $readOnlyMode
         * @return array
         */
-       public static function applyDefaultConfig( array $lbConf, Config $mainConfig ) {
+       public static function applyDefaultConfig( array $lbConf, Config $mainConfig,
+               ConfiguredReadOnlyMode $readOnlyMode
+       ) {
                global $wgCommandLineMode;
 
                static $typesWithSchema = [ 'postgres', 'msssql' ];
@@ -55,8 +58,7 @@ abstract class MWLBFactory {
                        'errorLogger' => [ MWExceptionHandler::class, 'logException' ],
                        'cliMode' => $wgCommandLineMode,
                        'hostname' => wfHostname(),
-                       // TODO: replace the global wfConfiguredReadOnlyReason() with a service.
-                       'readOnlyReason' => wfConfiguredReadOnlyReason(),
+                       'readOnlyReason' => $readOnlyMode->getReason(),
                ];
 
                // When making changes here, remember to also specify MediaWiki-specific options
diff --git a/includes/debug/logger/ConsoleLogger.php b/includes/debug/logger/ConsoleLogger.php
new file mode 100644 (file)
index 0000000..5a5e507
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+namespace MediaWiki\Logger;
+
+use Psr\Log\AbstractLogger;
+
+/**
+ * A logger which writes to the terminal. The output is supposed to be
+ * human-readable, and should be changed as necessary to better achieve that
+ * goal.
+ */
+class ConsoleLogger extends AbstractLogger {
+       public function __construct( $channel ) {
+               $this->channel = $channel;
+       }
+
+       public function log( $level, $message, array $context = [] ) {
+               fwrite( STDERR, "[$level] " .
+                       LegacyLogger::format( $this->channel, $message, $context ) );
+       }
+}
diff --git a/includes/debug/logger/ConsoleSpi.php b/includes/debug/logger/ConsoleSpi.php
new file mode 100644 (file)
index 0000000..e29b98d
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+namespace MediaWiki\Logger;
+
+class ConsoleSpi implements Spi {
+       public function __construct( $config = [] ) {
+       }
+
+       public function getLogger( $channel ) {
+               return new ConsoleLogger( $channel );
+       }
+}
index 2700daa..2a50566 100644 (file)
@@ -23,7 +23,6 @@ namespace MediaWiki\Logger\Monolog;
 use AvroIODatumWriter;
 use AvroIOBinaryEncoder;
 use AvroIOTypeException;
-use AvroNamedSchemata;
 use AvroSchema;
 use AvroStringIO;
 use AvroValidator;
index bbe8687..a3a37f6 100644 (file)
@@ -55,8 +55,6 @@ class DeferredUpdates {
        private static $preSendUpdates = [];
        /** @var DeferrableUpdate[] Updates to be deferred until after request end */
        private static $postSendUpdates = [];
-       /** @var bool Whether to just run updates in addUpdate() */
-       private static $immediateMode = false;
 
        const ALL = 0; // all updates; in web requests, use only after flushing the output buffer
        const PRESEND = 1; // for updates that should run before flushing output buffer
@@ -90,12 +88,6 @@ class DeferredUpdates {
                        self::push( self::$postSendUpdates, $update );
                }
 
-               if ( self::$immediateMode ) {
-                       // No more explicit doUpdates() calls will happen, so run this now
-                       self::doUpdates( 'run' );
-                       return;
-               }
-
                // Try to run the updates now if in CLI mode and no transaction is active.
                // This covers scripts that don't/barely use the DB but make updates to other stores.
                if ( $wgCommandLineMode ) {
@@ -140,9 +132,10 @@ class DeferredUpdates {
        /**
         * @param bool $value Whether to just immediately run updates in addUpdate()
         * @since 1.28
+        * @deprecated 1.29 Causes issues in Web-executed jobs - see T165714 and T100085.
         */
        public static function setImmediateMode( $value ) {
-               self::$immediateMode = (bool)$value;
+               wfDeprecated( __METHOD__, '1.29' );
        }
 
        /**
@@ -293,7 +286,7 @@ class DeferredUpdates {
                }
 
                // Avoiding running updates without them having outer scope
-               if ( !self::getBusyDbConnections() ) {
+               if ( !self::areDatabaseTransactionsActive() ) {
                        self::doUpdates( $mode );
                        return true;
                }
@@ -339,6 +332,7 @@ class DeferredUpdates {
 
        /**
         * @param integer $stage DeferredUpdates constant (PRESEND, POSTSEND, or ALL)
+        * @return DeferrableUpdate[]
         * @since 1.29
         */
        public static function getPendingUpdates( $stage = self::ALL ) {
@@ -362,16 +356,19 @@ class DeferredUpdates {
        }
 
        /**
-        * @return IDatabase[] Connection where commit() cannot be called yet
+        * @return bool If a transaction round is active or connection is not ready for commit()
         */
-       private static function getBusyDbConnections() {
-               $connsBusy = [];
-
+       private static function areDatabaseTransactionsActive() {
                $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+               if ( $lbFactory->hasTransactionRound() ) {
+                       return true;
+               }
+
+               $connsBusy = false;
                $lbFactory->forEachLB( function ( LoadBalancer $lb ) use ( &$connsBusy ) {
                        $lb->forEachOpenMasterConnection( function ( IDatabase $conn ) use ( &$connsBusy ) {
                                if ( $conn->writesOrCallbacksPending() || $conn->explicitTrxActive() ) {
-                                       $connsBusy[] = $conn;
+                                       $connsBusy = true;
                                }
                        } );
                } );
index ca29078..3dd9de6 100644 (file)
@@ -106,7 +106,11 @@ class LinksDeletionUpdate extends DataUpdate implements EnqueueableDataUpdate {
                                __METHOD__
                        );
                        if ( $row ) {
-                               Category::newFromRow( $row, $title )->refreshCounts();
+                               $cat = Category::newFromRow( $row, $title );
+                               // T166757: do the update after the main job DB commit
+                               DeferredUpdates::addCallableUpdate( function () use ( $cat ) {
+                                       $cat->refreshCounts();
+                               } );
                        }
                }
 
index a629458..072c1e0 100644 (file)
@@ -364,21 +364,24 @@ class LinksUpdate extends DataUpdate implements EnqueueableDataUpdate {
        private function updateCategoryCounts( array $added, array $deleted ) {
                global $wgUpdateRowsPerQuery;
 
+               if ( !$added && !$deleted ) {
+                       return;
+               }
+
+               $wikiId = $this->getDB()->getWikiID();
                $wp = WikiPage::factory( $this->mTitle );
-               $factory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+               $lbf = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+               // T163801: try to release any row locks to reduce contention
+               $lbf->commitAndWaitForReplication( __METHOD__, $this->ticket, [ 'wiki' => $wikiId ] );
 
                foreach ( array_chunk( array_keys( $added ), $wgUpdateRowsPerQuery ) as $addBatch ) {
                        $wp->updateCategoryCounts( $addBatch, [], $this->mId );
-                       $factory->commitAndWaitForReplication(
-                               __METHOD__, $this->ticket, [ 'wiki' => $this->getDB()->getWikiID() ]
-                       );
+                       $lbf->commitAndWaitForReplication( __METHOD__, $this->ticket, [ 'wiki' => $wikiId ] );
                }
 
                foreach ( array_chunk( array_keys( $deleted ), $wgUpdateRowsPerQuery ) as $deleteBatch ) {
                        $wp->updateCategoryCounts( [], $deleteBatch, $this->mId );
-                       $factory->commitAndWaitForReplication(
-                               __METHOD__, $this->ticket, [ 'wiki' => $this->getDB()->getWikiID() ]
-                       );
+                       $lbf->commitAndWaitForReplication( __METHOD__, $this->ticket, [ 'wiki' => $wikiId ] );
                }
        }
 
@@ -399,7 +402,7 @@ class LinksUpdate extends DataUpdate implements EnqueueableDataUpdate {
        private function incrTableUpdate( $table, $prefix, $deletions, $insertions ) {
                $services = MediaWikiServices::getInstance();
                $bSize = $services->getMainConfig()->get( 'UpdateRowsPerQuery' );
-               $factory = $services->getDBLoadBalancerFactory();
+               $lbf = $services->getDBLoadBalancerFactory();
 
                if ( $table === 'page_props' ) {
                        $fromField = 'pp_page';
@@ -451,7 +454,7 @@ class LinksUpdate extends DataUpdate implements EnqueueableDataUpdate {
 
                foreach ( $deleteWheres as $deleteWhere ) {
                        $this->getDB()->delete( $table, $deleteWhere, __METHOD__ );
-                       $factory->commitAndWaitForReplication(
+                       $lbf->commitAndWaitForReplication(
                                __METHOD__, $this->ticket, [ 'wiki' => $this->getDB()->getWikiID() ]
                        );
                }
@@ -459,7 +462,7 @@ class LinksUpdate extends DataUpdate implements EnqueueableDataUpdate {
                $insertBatches = array_chunk( $insertions, $bSize );
                foreach ( $insertBatches as $insertBatch ) {
                        $this->getDB()->insert( $table, $insertBatch, __METHOD__, 'IGNORE' );
-                       $factory->commitAndWaitForReplication(
+                       $lbf->commitAndWaitForReplication(
                                __METHOD__, $this->ticket, [ 'wiki' => $this->getDB()->getWikiID() ]
                        );
                }
index aefa7f5..8c38d8b 100644 (file)
@@ -94,7 +94,7 @@ class SiteStatsUpdate implements DeferrableUpdate, MergeableUpdate {
                global $wgSiteStatsAsyncFactor;
 
                $dbw = wfGetDB( DB_MASTER );
-               $lockKey = wfMemcKey( 'site_stats' ); // prepend wiki ID
+               $lockKey = wfWikiID() . ':site_stats'; // prepend wiki ID
                $pd = [];
                if ( $wgSiteStatsAsyncFactor ) {
                        // Lock the table so we don't have double DB/memcached updates
@@ -207,12 +207,13 @@ class SiteStatsUpdate implements DeferrableUpdate, MergeableUpdate {
        }
 
        /**
+        * @param BagOStuff $cache
         * @param string $type
         * @param string $sign ('+' or '-')
         * @return string
         */
-       private function getTypeCacheKey( $type, $sign ) {
-               return wfMemcKey( 'sitestatsupdate', 'pendingdelta', $type, $sign );
+       private function getTypeCacheKey( BagOStuff $cache, $type, $sign ) {
+               return $cache->makeKey( 'sitestatsupdate', 'pendingdelta', $type, $sign );
        }
 
        /**
@@ -222,11 +223,11 @@ class SiteStatsUpdate implements DeferrableUpdate, MergeableUpdate {
         * @param int $delta Delta (positive or negative)
         */
        protected function adjustPending( $type, $delta ) {
-               $cache = ObjectCache::getMainStashInstance();
+               $cache = MediaWikiServices::getInstance()->getMainObjectStash();
                if ( $delta < 0 ) { // decrement
-                       $key = $this->getTypeCacheKey( $type, '-' );
+                       $key = $this->getTypeCacheKey( $cache, $type, '-' );
                } else { // increment
-                       $key = $this->getTypeCacheKey( $type, '+' );
+                       $key = $this->getTypeCacheKey( $cache, $type, '+' );
                }
 
                $magnitude = abs( $delta );
@@ -238,7 +239,7 @@ class SiteStatsUpdate implements DeferrableUpdate, MergeableUpdate {
         * @return array Positive and negative deltas for each type
         */
        protected function getPendingDeltas() {
-               $cache = ObjectCache::getMainStashInstance();
+               $cache = MediaWikiServices::getInstance()->getMainObjectStash();
 
                $pending = [];
                foreach ( [ 'ss_total_edits',
@@ -246,8 +247,8 @@ class SiteStatsUpdate implements DeferrableUpdate, MergeableUpdate {
                ) {
                        // Get pending increments and pending decrements
                        $flg = BagOStuff::READ_LATEST;
-                       $pending[$type]['+'] = (int)$cache->get( $this->getTypeCacheKey( $type, '+' ), $flg );
-                       $pending[$type]['-'] = (int)$cache->get( $this->getTypeCacheKey( $type, '-' ), $flg );
+                       $pending[$type]['+'] = (int)$cache->get( $this->getTypeCacheKey( $cache, $type, '+' ), $flg );
+                       $pending[$type]['-'] = (int)$cache->get( $this->getTypeCacheKey( $cache, $type, '-' ), $flg );
                }
 
                return $pending;
@@ -258,12 +259,12 @@ class SiteStatsUpdate implements DeferrableUpdate, MergeableUpdate {
         * @param array $pd Result of getPendingDeltas(), used for DB update
         */
        protected function removePendingDeltas( array $pd ) {
-               $cache = ObjectCache::getMainStashInstance();
+               $cache = MediaWikiServices::getInstance()->getMainObjectStash();
 
                foreach ( $pd as $type => $deltas ) {
                        foreach ( $deltas as $sign => $magnitude ) {
                                // Lower the pending counter now that we applied these changes
-                               $cache->decr( $this->getTypeCacheKey( $type, $sign ), $magnitude );
+                               $cache->decr( $this->getTypeCacheKey( $cache, $type, $sign ), $magnitude );
                        }
                }
        }
index 4ff8636..8c1f8dc 100644 (file)
@@ -63,17 +63,6 @@ class MWException extends Exception {
                return $wgLang instanceof Language;
        }
 
-       /**
-        * Run hook to allow extensions to modify the text of the exception
-        *
-        * @param string $name Class name of the exception
-        * @param array $args Arguments to pass to the callback functions
-        * @return string|null String to output or null if any hook has been called
-        */
-       public function runHooks( $name, $args = [] ) {
-               return MWExceptionRenderer::runHooks( $this, $name, $args );
-       }
-
        /**
         * Get a message from i18n
         *
@@ -164,12 +153,7 @@ class MWException extends Exception {
                if ( $this->useOutputPage() ) {
                        $wgOut->prepareErrorPage( $this->getPageTitle() );
 
-                       $hookResult = $this->runHooks( static::class );
-                       if ( $hookResult ) {
-                               $wgOut->addHTML( $hookResult );
-                       } else {
-                               $wgOut->addHTML( $this->getHTML() );
-                       }
+                       $wgOut->addHTML( $this->getHTML() );
 
                        $wgOut->output();
                } else {
@@ -183,12 +167,7 @@ class MWException extends Exception {
                                '<style>body { font-family: sans-serif; margin: 0; padding: 0.5em 2em; }</style>' .
                                "</head><body>\n";
 
-                       $hookResult = $this->runHooks( static::class . 'Raw' );
-                       if ( $hookResult ) {
-                               echo $hookResult;
-                       } else {
-                               echo $this->getHTML();
-                       }
+                       echo $this->getHTML();
 
                        echo "</body></html>\n";
                }
index 749be3c..433274e 100644 (file)
@@ -21,6 +21,7 @@
 use MediaWiki\Logger\LoggerFactory;
 use MediaWiki\MediaWikiServices;
 use Psr\Log\LogLevel;
+use Wikimedia\Rdbms\DBError;
 
 /**
  * Handler class for MWExceptions
index a569bcd..5162a1f 100644 (file)
  * @author Aaron Schulz
  */
 
+use Wikimedia\Rdbms\DBConnectionError;
+use Wikimedia\Rdbms\DBError;
+use Wikimedia\Rdbms\DBReadOnlyError;
+use Wikimedia\Rdbms\DBExpectedError;
+
 /**
  * Class to expose exceptions to the client (API bots, users, admins using CLI scripts)
  * @since 1.28
@@ -42,10 +47,10 @@ class MWExceptionRenderer {
                } elseif ( self::isCommandLine() ) {
                        self::printError( self::getText( $e ) );
                } elseif ( $mode === self::AS_PRETTY ) {
+                       self::statusHeader( 500 );
                        if ( $e instanceof DBConnectionError ) {
                                self::reportOutageHTML( $e );
                        } else {
-                               self::statusHeader( 500 );
                                self::header( "Content-Type: $wgMimeType; charset=utf-8" );
                                self::reportHTML( $e );
                        }
@@ -79,51 +84,6 @@ class MWExceptionRenderer {
                }
        }
 
-       /**
-        * Run hook to allow extensions to modify the text of the exception
-        *
-        * Called by MWException for b/c
-        *
-        * @param Exception|Throwable $e
-        * @param string $name Class name of the exception
-        * @param array $args Arguments to pass to the callback functions
-        * @return string|null String to output or null if any hook has been called
-        */
-       public static function runHooks( $e, $name, $args = [] ) {
-               global $wgExceptionHooks;
-
-               if ( !isset( $wgExceptionHooks ) || !is_array( $wgExceptionHooks ) ) {
-                       return null; // Just silently ignore
-               }
-
-               if ( !array_key_exists( $name, $wgExceptionHooks ) ||
-                       !is_array( $wgExceptionHooks[$name] )
-               ) {
-                       return null;
-               }
-
-               $hooks = $wgExceptionHooks[$name];
-               $callargs = array_merge( [ $e ], $args );
-
-               foreach ( $hooks as $hook ) {
-                       if (
-                               is_string( $hook ) ||
-                               ( is_array( $hook ) && count( $hook ) >= 2 && is_string( $hook[0] ) )
-                       ) {
-                               // 'function' or [ 'class', 'hook' ]
-                               $result = call_user_func_array( $hook, $callargs );
-                       } else {
-                               $result = null;
-                       }
-
-                       if ( is_string( $result ) ) {
-                               return $result;
-                       }
-               }
-
-               return null;
-       }
-
        /**
         * @param Exception|Throwable $e
         * @return bool Should the exception use $wgOut to output the error?
@@ -136,9 +96,14 @@ class MWExceptionRenderer {
                        }
                }
 
+               // Don't even bother with OutputPage if there's no Title context set,
+               // (e.g. we're in RL code on load.php) - the Skin system (and probably
+               // most of MediaWiki) won't work.
+
                return (
                        !empty( $GLOBALS['wgFullyInitialised'] ) &&
                        !empty( $GLOBALS['wgOut'] ) &&
+                       RequestContext::getMain()->getTitle() &&
                        !defined( 'MEDIAWIKI_INSTALL' )
                );
        }
@@ -162,16 +127,11 @@ class MWExceptionRenderer {
                                $wgOut->prepareErrorPage( self::msg( 'internalerror', 'Internal error' ) );
                        }
 
-                       $hookResult = self::runHooks( $e, get_class( $e ) );
-                       if ( $hookResult ) {
-                               $wgOut->addHTML( $hookResult );
-                       } else {
-                               // Show any custom GUI message before the details
-                               if ( $e instanceof MessageSpecifier ) {
-                                       $wgOut->addHTML( Message::newFromSpecifier( $e )->escaped() );
-                               }
-                               $wgOut->addHTML( self::getHTML( $e ) );
+                       // Show any custom GUI message before the details
+                       if ( $e instanceof MessageSpecifier ) {
+                               $wgOut->addHTML( Message::newFromSpecifier( $e )->escaped() );
                        }
+                       $wgOut->addHTML( self::getHTML( $e ) );
 
                        $wgOut->output();
                } else {
@@ -186,12 +146,7 @@ class MWExceptionRenderer {
                                '<style>body { font-family: sans-serif; margin: 0; padding: 0.5em 2em; }</style>' .
                                "</head><body>\n";
 
-                       $hookResult = self::runHooks( $e, get_class( $e ) . 'Raw' );
-                       if ( $hookResult ) {
-                               echo $hookResult;
-                       } else {
-                               echo self::getHTML( $e );
-                       }
+                       echo self::getHTML( $e );
 
                        echo "</body></html>\n";
                }
@@ -288,7 +243,7 @@ class MWExceptionRenderer {
                        $vars[] = '$wgShowDBErrorBacktrace = true;';
                }
                $vars = implode( ' and ', $vars );
-               return "Set $vars at the bottom of LocalSettings.php to show detailed debugging information";
+               return "Set $vars at the bottom of LocalSettings.php to show detailed debugging information\n";
        }
 
        /**
index d09c245..aa97c9a 100644 (file)
@@ -24,6 +24,7 @@
 
 use MediaWiki\MediaWikiServices;
 use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\DBError;
 
 /**
  * Version of FileJournal that logs to a DB table
index 8510d0c..2108aed 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 
 use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\DBError;
 
 /**
  * MySQL version of DBLockManager that supports shared locks.
index 856dc36..2394704 100644 (file)
@@ -24,7 +24,6 @@
  */
 
 use Wikimedia\Rdbms\DBConnRef;
-use Wikimedia\Rdbms\MaintainableDBConnRef;
 
 /**
  * @brief Proxy backend that manages file layout rewriting for FileRepo.
index e367812..9aa2b18 100644 (file)
@@ -2149,15 +2149,34 @@ abstract class File implements IDBAccessObject {
        }
 
        /**
-        * @return array HTTP header name/value map to use for HEAD/GET request responses
+        * @deprecated since 1.30, use File::getContentHeaders instead
         */
        function getStreamHeaders() {
+               wfDeprecated( __METHOD__, '1.30' );
+               return $this->getContentHeaders();
+       }
+
+       /**
+        * @return array HTTP header name/value map to use for HEAD/GET request responses
+        * @since 1.30
+        */
+       function getContentHeaders() {
                $handler = $this->getHandler();
                if ( $handler ) {
-                       return $handler->getStreamHeaders( $this->getMetadata() );
-               } else {
-                       return [];
+                       $metadata = $this->getMetadata();
+
+                       if ( is_string( $metadata ) ) {
+                               $metadata = MediaWiki\quietCall( 'unserialize', $metadata );
+                       }
+
+                       if ( !is_array( $metadata ) ) {
+                               $metadata = [];
+                       }
+
+                       return $handler->getContentHeaders( $metadata );
                }
+
+               return [];
        }
 
        /**
index f6f44e6..cf21161 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup FileAbstraction
  */
 
+use Wikimedia\Rdbms\DBUnexpectedError;
+
 /**
  * Foreign file with an accessible MediaWiki database
  *
index 292fc80..8d715e8 100644 (file)
@@ -1200,7 +1200,13 @@ class LocalFile extends File {
                $options = [];
                $handler = MediaHandler::getHandler( $props['mime'] );
                if ( $handler ) {
-                       $options['headers'] = $handler->getStreamHeaders( $props['metadata'] );
+                       $metadata = MediaWiki\quietCall( 'unserialize', $props['metadata'] );
+
+                       if ( !is_array( $metadata ) ) {
+                               $metadata = [];
+                       }
+
+                       $options['headers'] = $handler->getContentHeaders( $metadata );
                } else {
                        $options['headers'] = [];
                }
index 6884f65..eeb8a8f 100644 (file)
@@ -38,6 +38,11 @@ abstract class ImageGalleryBase extends ContextSource {
         */
        protected $mShowBytes;
 
+       /**
+        * @var bool Whether to show the dimensions in categories
+        */
+       protected $mShowDimensions;
+
        /**
         * @var bool Whether to show the filename. Default: true
         */
@@ -136,6 +141,7 @@ abstract class ImageGalleryBase extends ContextSource {
                $galleryOptions = $this->getConfig()->get( 'GalleryOptions' );
                $this->mImages = [];
                $this->mShowBytes = $galleryOptions['showBytes'];
+               $this->mShowDimensions = $galleryOptions['showDimensions'];
                $this->mShowFilename = true;
                $this->mParser = false;
                $this->mHideBadImages = false;
@@ -283,6 +289,16 @@ abstract class ImageGalleryBase extends ContextSource {
                return empty( $this->mImages );
        }
 
+       /**
+        * Enable/Disable showing of the dimensions of an image in the gallery.
+        * Enabled by default.
+        *
+        * @param bool $f Set to false to disable
+        */
+       function setShowDimensions( $f ) {
+               $this->mShowDimensions = (bool)$f;
+       }
+
        /**
         * Enable/Disable showing of the file size of an image in the gallery.
         * Enabled by default.
index 1fd7b0a..a0059ce 100644 (file)
@@ -174,15 +174,20 @@ class TraditionalImageGallery extends ImageGalleryBase {
                        // ":{$ut}" );
                        // $ul = Linker::link( $linkTarget, $ut );
 
-                       if ( $this->mShowBytes ) {
-                               if ( $img ) {
-                                       $fileSize = htmlspecialchars( $lang->formatSize( $img->getSize() ) );
-                               } else {
-                                       $fileSize = $this->msg( 'filemissing' )->escaped();
+                       $meta = [];
+                       if ( $img ) {
+                               if ( $this->mShowDimensions ) {
+                                       $meta[] = $img->getDimensionsString();
                                }
-                               $fileSize = "$fileSize<br />\n";
-                       } else {
-                               $fileSize = '';
+                               if ( $this->mShowBytes ) {
+                                       $meta[] = htmlspecialchars( $lang->formatSize( $img->getSize() ) );
+                               }
+                       } elseif ( $this->mShowDimensions || $this->mShowBytes ) {
+                               $meta[] = $this->msg( 'filemissing' )->escaped();
+                       }
+                       $meta = $lang->semicolonList( $meta );
+                       if ( $meta ) {
+                               $meta .= "<br />\n";
                        }
 
                        $textlink = $this->mShowFilename ?
@@ -201,7 +206,7 @@ class TraditionalImageGallery extends ImageGalleryBase {
                                ) . "\n" :
                                '';
 
-                       $galleryText = $textlink . $text . $fileSize;
+                       $galleryText = $textlink . $text . $meta;
                        $galleryText = $this->wrapGalleryText( $galleryText, $thumb );
 
                        # Weird double wrapping (the extra div inside the li) needed due to FF2 bug
index 549edde..ed99802 100644 (file)
@@ -191,15 +191,16 @@ class OOUIHTMLForm extends HTMLForm {
         * @return string
         */
        public function getErrorsOrWarnings( $elements, $elementsType ) {
-               if ( !in_array( $elementsType, [ 'error', 'warning' ] ) ) {
+               if ( $elements === '' ) {
+                       return '';
+               }
+
+               if ( !in_array( $elementsType, [ 'error', 'warning' ], true ) ) {
                        throw new DomainException( $elementsType . ' is not a valid type.' );
                }
-               if ( !$elements ) {
-                       $errors = [];
-               } elseif ( $elements instanceof Status ) {
-                       if ( $elements->isGood() ) {
-                               $errors = [];
-                       } else {
+               $errors = [];
+               if ( $elements instanceof Status ) {
+                       if ( !$elements->isGood() ) {
                                $errors = $elements->getErrorsByType( $elementsType );
                                foreach ( $errors as &$error ) {
                                        // Input:  [ 'message' => 'foo', 'errors' => [ 'a', 'b', 'c' ] ]
@@ -207,13 +208,12 @@ class OOUIHTMLForm extends HTMLForm {
                                        $error = array_merge( [ $error['message'] ], $error['params'] );
                                }
                        }
-               } elseif ( $elementsType === 'errors' ) {
-                       $errors = $elements;
-                       if ( !is_array( $errors ) ) {
-                               $errors = [ $errors ];
+               } elseif ( $elementsType === 'error' ) {
+                       if ( is_array( $elements ) ) {
+                               $errors = $elements;
+                       } elseif ( is_string( $elements ) ) {
+                               $errors = [ $elements ];
                        }
-               } else {
-                       $errors = [];
                }
 
                foreach ( $errors as &$error ) {
index 8c1241d..8829f66 100644 (file)
@@ -72,7 +72,13 @@ class HTMLUsersMultiselectField extends HTMLUserTextField {
                        $params['default'] = $values;
                }
 
-               return new UsersMultiselectWidget( $params );
+               // Make the field auto-infusable when it's used inside a legacy HTMLForm rather than OOUIHTMLForm
+               $params['infusable'] = true;
+               $params['classes'] = [ 'mw-htmlform-field-autoinfuse' ];
+               $widget = new UsersMultiselectWidget( $params );
+               $widget->setAttributes( [ 'data-mw-modules' => implode( ',', $this->getOOUIModules() ) ] );
+
+               return $widget;
        }
 
        protected function shouldInfuseOOUI() {
index 889cb60..4f21ce2 100644 (file)
@@ -59,7 +59,8 @@ class Http {
         * @return string|bool (bool)false on failure or a string on success
         */
        public static function request( $method, $url, $options = [], $caller = __METHOD__ ) {
-               wfDebug( "HTTP: $method: $url\n" );
+               $logger = LoggerFactory::getInstance( 'http' );
+               $logger->debug( "$method: $url" );
 
                $options['method'] = strtoupper( $method );
 
@@ -77,7 +78,6 @@ class Http {
                        return $req->getContent();
                } else {
                        $errors = $status->getErrorsByType( 'error' );
-                       $logger = LoggerFactory::getInstance( 'http' );
                        $logger->warning( Status::wrap( $status )->getWikiText( false, false, 'en' ),
                                [ 'error' => $errors, 'caller' => $caller, 'content' => $req->getContent() ] );
                        return false;
@@ -164,4 +164,20 @@ class Http {
 
                return "";
        }
+
+       /**
+        * Get a configured MultiHttpClient
+        * @param array $options
+        */
+       public static function createMultiClient( $options = [] ) {
+               global $wgHTTPConnectTimeout, $wgHTTPTimeout, $wgHTTPProxy;
+
+               return new MultiHttpClient( $options + [
+                       'connTimeout' => $wgHTTPConnectTimeout,
+                       'reqTimeout' => $wgHTTPTimeout,
+                       'userAgent' => self::userAgent(),
+                       'proxy' => $wgHTTPProxy,
+                       'logger' => LoggerFactory::getInstance( 'http' )
+               ] );
+       }
 }
index 06b579a..2fc9f5e 100644 (file)
@@ -39,6 +39,7 @@ class WikiImporter {
        private $mNoticeCallback, $mDebug;
        private $mImportUploads, $mImageBasePath;
        private $mNoUpdates = false;
+       private $pageOffset = 0;
        /** @var Config */
        private $config;
        /** @var ImportTitleFactory */
@@ -146,6 +147,16 @@ class WikiImporter {
                $this->mNoUpdates = $noupdates;
        }
 
+       /**
+        * Sets 'pageOffset' value. So it will skip the first n-1 pages
+        * and start from the nth page. It's 1-based indexing.
+        * @param int $nthPage
+        * @since 1.29
+        */
+       function setPageOffset( $nthPage ) {
+               $this->pageOffset = $nthPage;
+       }
+
        /**
         * Set a callback that displays notice messages
         *
@@ -562,9 +573,19 @@ class WikiImporter {
                $keepReading = $this->reader->read();
                $skip = false;
                $rethrow = null;
+               $pageCount = 0;
                try {
                        while ( $keepReading ) {
                                $tag = $this->reader->localName;
+                               if ( $this->pageOffset ) {
+                                       if ( $tag === 'page' ) {
+                                               $pageCount++;
+                                       }
+                                       if ( $pageCount < $this->pageOffset ) {
+                                               $keepReading = $this->reader->next();
+                                               continue;
+                                       }
+                               }
                                $type = $this->reader->nodeType;
 
                                if ( !Hooks::run( 'ImportHandleToplevelXMLTag', [ $this ] ) ) {
index a4cb695..e5cbb7c 100644 (file)
@@ -926,11 +926,41 @@ abstract class DatabaseUpdater {
                } elseif ( $this->updateRowExists( $updateKey ) ) {
                        $this->output( "...$field in table $table already modified by patch $patch.\n" );
                } else {
-                       $this->insertUpdateRow( $updateKey );
+                       $apply = $this->applyPatch( $patch, $fullpath, "Modifying $field field of table $table" );
+                       if ( $apply ) {
+                               $this->insertUpdateRow( $updateKey );
+                       }
+                       return $apply;
+               }
+               return true;
+       }
 
-                       return $this->applyPatch( $patch, $fullpath, "Modifying $field field of table $table" );
+       /**
+        * Modify an existing table, similar to modifyField. Intended for changes that
+        *  touch more than one column on a table.
+        *
+        * @param string $table Name of the table to modify
+        * @param string $patch Name of the patch file to apply
+        * @param string $fullpath Whether to treat $patch path as relative or not, defaults to false
+        * @return bool False if this was skipped because of schema changes being skipped
+        */
+       public function modifyTable( $table, $patch,  $fullpath = false ) {
+               if ( !$this->doTable( $table ) ) {
+                       return true;
                }
 
+               $updateKey = "$table-$patch";
+               if ( !$this->db->tableExists( $table, __METHOD__ ) ) {
+                       $this->output( "...$table table does not exist, skipping modify table patch.\n" );
+               } elseif ( $this->updateRowExists( $updateKey ) ) {
+                       $this->output( "...table $table already modified by patch $patch.\n" );
+               } else {
+                       $apply = $this->applyPatch( $patch, $fullpath, "Modifying table $table" );
+                       if ( $apply ) {
+                               $this->insertUpdateRow( $updateKey );
+                       }
+                       return $apply;
+               }
                return true;
        }
 
index 0a2b808..7028224 100644 (file)
@@ -724,6 +724,7 @@ abstract class Installer {
                                'ss_good_articles' => 0,
                                'ss_total_pages' => 0,
                                'ss_users' => 0,
+                               'ss_active_users' => 0,
                                'ss_images' => 0
                        ],
                        __METHOD__, 'IGNORE'
@@ -1015,7 +1016,7 @@ abstract class Installer {
                }
 
                # Try the most common ones.
-               $commonLocales = [ 'en_US.UTF-8', 'en_US.utf8', 'de_DE.UTF-8', 'de_DE.utf8' ];
+               $commonLocales = [ 'C.UTF-8', 'en_US.UTF-8', 'en_US.utf8', 'de_DE.UTF-8', 'de_DE.utf8' ];
                foreach ( $commonLocales as $commonLocale ) {
                        if ( isset( $candidatesByLocale[$commonLocale] ) ) {
                                $this->setVar( 'wgShellLocale', $commonLocale );
index 697188e..a9710eb 100644 (file)
@@ -69,7 +69,7 @@ class LocalSettingsGenerator {
                        $db->getGlobalNames()
                );
 
-               $unescaped = [ 'wgRightsIcon', 'wgLogo' ];
+               $unescaped = [ 'wgRightsIcon', 'wgLogo', '_Caches' ];
                $boolItems = [
                        'wgEnableEmail', 'wgEnableUserEmail', 'wgEnotifUserTalk',
                        'wgEnotifWatchlist', 'wgEmailAuthentication', 'wgEnableUploads', 'wgUseInstantCommons',
@@ -241,7 +241,7 @@ class LocalSettingsGenerator {
                }
 
                if ( !$this->values['wgShellLocale'] ) {
-                       $this->values['wgShellLocale'] = 'en_US.UTF-8';
+                       $this->values['wgShellLocale'] = 'C.UTF-8';
                        $locale = '#';
                } else {
                        $locale = '';
index 8307d8b..43d3574 100644 (file)
@@ -22,6 +22,8 @@
  */
 
 use Wikimedia\Rdbms\Database;
+use Wikimedia\Rdbms\DBQueryError;
+use Wikimedia\Rdbms\DBConnectionError;
 
 /**
  * Class for setting up the MediaWiki database using Microsoft SQL Server.
@@ -575,7 +577,7 @@ class MssqlInstaller extends DatabaseInstaller {
                                        $grantableNames[] = $dbUser;
                                } catch ( DBQueryError $dqe ) {
                                        $this->db->rollback();
-                                       $status->warning( 'config-install-user-create-failed', $dbUser, $dqe->getText() );
+                                       $status->warning( 'config-install-user-create-failed', $dbUser, $dqe->getMessage() );
                                }
                        } elseif ( !$this->userExists( $dbUser ) ) {
                                try {
@@ -586,7 +588,7 @@ class MssqlInstaller extends DatabaseInstaller {
                                        $grantableNames[] = $dbUser;
                                } catch ( DBQueryError $dqe ) {
                                        $this->db->rollback();
-                                       $status->warning( 'config-install-user-create-failed', $dbUser, $dqe->getText() );
+                                       $status->warning( 'config-install-user-create-failed', $dbUser, $dqe->getMessage() );
                                }
                        } else {
                                $status->warning( 'config-install-user-alreadyexists', $dbUser );
@@ -618,7 +620,7 @@ class MssqlInstaller extends DatabaseInstaller {
                                        $this->db->commit();
                                } catch ( DBQueryError $dqe ) {
                                        $this->db->rollback();
-                                       $status->fatal( 'config-install-user-grant-failed', $dbUser, $dqe->getText() );
+                                       $status->fatal( 'config-install-user-grant-failed', $dbUser, $dqe->getMessage() );
                                }
                                // Also try to grant SHOWPLAN on the db, but don't fail if we can't
                                // (just makes a couple things in mediawiki run slower since
@@ -644,7 +646,7 @@ class MssqlInstaller extends DatabaseInstaller {
                                $this->db->query( "CREATE FULLTEXT INDEX ON $searchindex (si_title, si_text) "
                                        . "KEY INDEX si_page ON $schema" );
                        } catch ( DBQueryError $dqe ) {
-                               $status->fatal( 'config-install-tables-failed', $dqe->getText() );
+                               $status->fatal( 'config-install-tables-failed', $dqe->getMessage() );
                        }
                }
 
index dfe595e..1a9915d 100644 (file)
@@ -114,7 +114,9 @@ class MssqlUpdater extends DatabaseUpdater {
 
        /**
         * General schema update for a table that touches more than one field or requires
-        * destructive actions (such as dropping and recreating the table).
+        * destructive actions (such as dropping and recreating the table). NOTE: Usage of
+        * this function is highly discouraged, use it's successor DatabaseUpdater::modifyTable
+        * instead.
         *
         * @param string $table
         * @param string $updatekey
@@ -127,9 +129,11 @@ class MssqlUpdater extends DatabaseUpdater {
                } elseif ( $this->updateRowExists( $updatekey ) ) {
                        $this->output( "...$table already had schema updated by $patch.\n" );
                } else {
-                       $this->insertUpdateRow( $updatekey );
-
-                       return $this->applyPatch( $patch, $fullpath, "Updating schema of table $table" );
+                       $apply = $this->applyPatch( $patch, $fullpath, "Updating schema of table $table" );
+                       if ( $apply ) {
+                               $this->insertUpdateRow( $updatekey );
+                       }
+                       return $apply;
                }
 
                return true;
index c0731e7..cbb79f8 100644 (file)
@@ -22,6 +22,8 @@
  */
 
 use Wikimedia\Rdbms\Database;
+use Wikimedia\Rdbms\DBQueryError;
+use Wikimedia\Rdbms\DBConnectionError;
 
 /**
  * Class for setting up the MediaWiki database using MySQL.
@@ -177,8 +179,8 @@ class MysqlInstaller extends DatabaseInstaller {
 
                # Determine existing default character set
                if ( $conn->tableExists( "revision", __METHOD__ ) ) {
-                       $revision = $conn->buildLike( $this->getVar( 'wgDBprefix' ) . 'revision' );
-                       $res = $conn->query( "SHOW TABLE STATUS $revision", __METHOD__ );
+                       $revision = $this->escapeLikeInternal( $this->getVar( 'wgDBprefix' ) . 'revision', '\\' );
+                       $res = $conn->query( "SHOW TABLE STATUS LIKE '$revision'", __METHOD__ );
                        $row = $conn->fetchObject( $res );
                        if ( !$row ) {
                                $this->parent->showMessage( 'config-show-table-status' );
@@ -219,6 +221,16 @@ class MysqlInstaller extends DatabaseInstaller {
                $wgDBpassword = $this->getVar( '_InstallPassword' );
        }
 
+       /**
+        * @param string $s
+        * @return string
+        */
+       protected function escapeLikeInternal( $s, $escapeChar = '`' ) {
+               return str_replace( [ $escapeChar, '%', '_' ],
+                       [ "{$escapeChar}{$escapeChar}", "{$escapeChar}%", "{$escapeChar}_" ],
+                       $s );
+       }
+
        /**
         * Get a list of storage engines that are available and supported
         *
@@ -572,7 +584,7 @@ class MysqlInstaller extends DatabaseInstaller {
                                                        // If we couldn't create for some bizzare reason and the
                                                        // user probably doesn't exist, skip the grant
                                                        $this->db->rollback( __METHOD__ );
-                                                       $status->warning( 'config-install-user-create-failed', $dbUser, $dqe->getText() );
+                                                       $status->warning( 'config-install-user-create-failed', $dbUser, $dqe->getMessage() );
                                                }
                                        }
                                } else {
@@ -592,7 +604,7 @@ class MysqlInstaller extends DatabaseInstaller {
                                $this->db->commit( __METHOD__ );
                        } catch ( DBQueryError $dqe ) {
                                $this->db->rollback( __METHOD__ );
-                               $status->fatal( 'config-install-user-grant-failed', $dbUser, $dqe->getText() );
+                               $status->fatal( 'config-install-user-grant-failed', $dbUser, $dqe->getMessage() );
                        }
                }
 
index b8fc4e7..14683d6 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup Deployment
  */
 
+use Wikimedia\Rdbms\DBConnectionError;
+
 /**
  * Class for setting up the MediaWiki database using Oracle.
  *
index bd7cfb3..b501cb3 100644 (file)
@@ -22,6 +22,8 @@
  */
 
 use Wikimedia\Rdbms\Database;
+use Wikimedia\Rdbms\DBQueryError;
+use Wikimedia\Rdbms\DBConnectionError;
 
 /**
  * Class for setting up the MediaWiki database using Postgres.
index e9d3ad4..3943374 100644 (file)
@@ -23,6 +23,7 @@
 
 use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\DatabaseSqlite;
+use Wikimedia\Rdbms\DBConnectionError;
 
 /**
  * Class for setting up the MediaWiki database using SQLLite.
index cfd4a86..bce07d3 100644 (file)
@@ -98,17 +98,19 @@ class WebInstallerLanguage extends WebInstallerPage {
         * @return string
         */
        public function getLanguageSelector( $name, $label, $selectedCode, $helpHtml = '' ) {
-               global $wgDummyLanguageCodes;
+               global $wgExtraLanguageCodes;
 
                $output = $helpHtml;
 
                $select = new XmlSelect( $name, $name, $selectedCode );
                $select->setAttribute( 'tabindex', $this->parent->nextTabIndex() );
 
+               $unwantedLanguageCodes = $wgExtraLanguageCodes +
+                       LanguageCode::getDeprecatedCodeMapping();
                $languages = Language::fetchLanguageNames();
                ksort( $languages );
                foreach ( $languages as $code => $lang ) {
-                       if ( isset( $wgDummyLanguageCodes[$code] ) ) {
+                       if ( isset( $unwantedLanguageCodes[$code] ) ) {
                                continue;
                        }
                        $select->addOption( "$code - $lang", $code );
index 84c580f..8ba3cef 100644 (file)
@@ -52,6 +52,7 @@
        "config-restart": "نعم، إعادة التشغيل",
        "config-welcome": "=== التحقق من البيئة ===\nسوف يتم الآن التحقق من أن البيئة مناسبة لتنصيب ميديا ويكي.\nتذكر تضمين هذه المعلومات اذا اردت طلب المساعدة عن كيفية إكمال التنصيب.",
        "config-copyright": "=== حقوق النسخ والشروط ===\n\n$1\n\nهذا البرنامج هو برنامج حر؛ يمكنك إعادة توزيعه و/أو تعديله تحت شروط رخصة جنو العامة على أن هذا البرنامج قد نُشر من قِبل مؤسسة البرمجيات الحرة؛ إما النسخة 2 من الرخصة، أو أي نسخة أخرى بعدها (من إختيارك)\n\nتم توزيع هذا البرنامج على أمل ان يكون مفيدًا ولكن <strong> دون أية ضمانات</strong>؛ دون حتى أية ضمانات مفهومة ضمنيًا أو رواجات أو أية أسباب محددة.\nأنظر رخصة جنو العامة لمزيد من المعلومات.\n\nمن المفترض أنك إستملت <doclink href=Copying> نسخة عن رخصة جنو العامة </doclink> مع هذا البرنامج؛ اذا لم تقعل إكتب رسالة إلى مؤسسة البرمجيات الحرة المحدودة، شارع 51 فرانكلين الطابق الخامس، بوسطن  MA 02110-1301 الولايات المتخدة أو [http://www.gnu.org/copyleft/gpl.html read it online].",
+       "config-sidebar": "* [https://www.mediawiki.org موقع ميدياويكي]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents دليل المستخدم]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents دليل الإداري]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ الأسئلة المتكررة]\n----\n* <doclink href=Readme>إقراءني</doclink>\n* <doclink href=ReleaseNotes>ملاحظات الإصدار</doclink>\n* <doclink href=Copying>النسخ</doclink>\n* <doclink href=UpgradeDoc>الترقية</doclink>",
        "config-env-good": "جرى التحقق من البيئة. يمكنك تنصيب ميدياويكي.",
        "config-env-bad": "جرى التحقق من البيئة. لا يمكنك تنصيب ميدياويكي.",
        "config-env-php": "بي إتش بي $1 مثبت.",
        "config-optional-continue": "اسألني المزيد من الأسئلة",
        "config-optional-skip": "إنني أشعر بالملل بالفعل، فقط قم بتثبيت الويكي",
        "config-profile": "ملف صلاحيات المستخدم:",
-       "config-profile-wiki": "افتح ويكي",
+       "config-profile-wiki": "ويكي مفتوحة",
        "config-profile-no-anon": "إنشاء الحساب مطلوب",
        "config-profile-fishbowl": "المحررون المخولون فقط",
        "config-profile-private": "ويكي خاص",
        "config-email-watchlist": "تمكين إشعارات قائمة المراقبة",
        "config-email-watchlist-help": "السماح للمستخدمين بالحصول على إشعارات حول صفحاتهم المراقبة إذا كانوا قد مكنوها في تفضيلاتهم.",
        "config-email-auth": "تمكين مصادقة البريد الإلكتروني",
-       "config-email-sender": "يرجع عنوان البريد الإلكتروني:",
+       "config-email-sender": "عنوان البريد الإلكتروني المُرسِل:",
        "config-upload-settings": "الصور وتحميل الملفات",
        "config-upload-enable": "تمكين تحميل الملفات",
        "config-upload-deleted": "المجلد للملفات المحذوفة:",
        "config-cc-not-chosen": "اختر أي ترخيص تريده ثم اضغط على \"متابعة\".",
        "config-advanced-settings": "ضبط متقدم",
        "config-cache-options": "إعدادات التخزين المؤقت الكائن:",
-       "config-cache-none": "Ù\84ا Ù\8aÙ\88جد ØªØ®Ø²Ù\8aÙ\86 Ù\85ؤÙ\82ت (Ù\84Ù\85 ØªØªÙ\85 Ø¥Ø²Ø§Ù\84Ø© Ø£Ù\8aØ© Ù\88ظÙ\8aÙ\81Ø©Ø\8c Ù\84Ù\83Ù\86 Ù\82د ØªØªØ£Ø«Ø± Ø§Ù\84سرعة Ø¹Ù\84Ù\89 Ù\85Ù\88اÙ\82ع Ù\88Ù\8aÙ\83Ù\8a Ø£Ù\83بر)",
+       "config-cache-none": "Ù\84ا Ù\8aÙ\88جد ØªØ®Ø²Ù\8aÙ\86 Ù\85ؤÙ\82ت (Ù\87ذا Ù\84ا Ù\8aزÙ\8aÙ\84 Ø£Ù\8aØ© Ù\88ظÙ\8aÙ\81Ø©Ø\8c Ù\84Ù\83Ù\86 Ù\82د ØªØªØ£Ø«Ø± Ø§Ù\84سرعة Ø¹Ù\84Ù\89 Ù\85Ù\88اÙ\82ع Ø§Ù\84Ù\88Ù\8aÙ\83Ù\8a Ø§Ù\84Ù\83بÙ\8aرة)",
        "config-cache-accel": "كائن التخزين المؤقت PHP (APC أو APCu أو  XCache أو WinCache)",
+       "config-cache-memcached": "استخدم Memcached (يتطلب إعدادت إضافية)",
+       "config-memcached-servers": "خوادم Memcached:",
        "config-extensions": "امتدادات",
        "config-extensions-help": "تم الكشف عن الملحقات المذكورة أعلاه في دليل <code>./ملحقاتك</code>، ويمكن أن يتطلب تكوينا إضافيا، ولكن يمكنك تمكينها الآن.",
        "config-skins": "الواجهات",
        "config-skins-use-as-default": "استخدم هذه الواجهة كافتراضية",
        "config-install-alreadydone": "<strong>تحذير:</strong> يبدو أنك قد قمت بالفعل بتثبيت ميدياويكي وتحاول تثبيته مرة أخرى. الرجاء التوجه إلى الصفحة التالية.",
        "config-install-begin": "عن طريق الضغط على \"{{int:config-continue}}\"، سوف تبدأ تثبيت ميدياويكي. إذا كنت لا تزال ترغب في إجراء تغييرات، اضغط على \"{{int:config-back}}\".",
-       "config-install-step-done": "نفذ",
+       "config-install-step-done": "تم بنجاح",
        "config-install-step-failed": "فشل",
        "config-install-extensions": "متضمنا الامتدادات",
        "config-install-database": "إنشاء قاعدة البيانات",
        "config-install-subscribe-fail": "غير قادر على الاشتراك في ميدياويكي-إعلان: $1",
        "config-install-subscribe-notpossible": "لم يتم تثبيت cURL و <code>allow_url_fopen</code> غير متوفر.",
        "config-install-mainpage": "إنشاء صفحة رئيسية بالمحتوى الافتراضي",
+       "config-install-mainpage-exists": "الصفحة الرئيسية موجودة بالفعل، تم تجاهل هذا الأمر",
        "config-install-extension-tables": "إنشاء جداول للامتدادات المفعلة",
        "config-install-mainpage-failed": "لم يتمكن من إدراج الصفحة الرئيسية: $1",
+       "config-install-done": "<strong>مبروك!</strong>\nلقد قمت بتثبيت ميدياوكي.\n\nقام المثبت بتوليد ملف <code>LocalSettings.php</code>.\nيحتوي هذا الملف على كل تضبيطاتك.\n\nسيتطلب تشغيل الويكي منك تنزيل هذا الملف ووضعه في مجلد التثبيت الخاص بالويكي (نفس المجلد المحتوي على <code>index.php</code>). سيبدأ التنزيل تلقائيا.\n\nلو لم يُعرض عليك التنزيل أو قمت أنت بالغائه، يمكنك تنزيله بالضغط على الوصلة أدناه:\n\n$3\n\n<strong>تنبيه:</strong> لو لم تقم بهذا الآن، لن يكن ملف الضبط متاحا لك لاحقا إذا غادرت التثبيت بدون تنزيله.\n\nعندما تنتهي من وضع الملف بمكانه، يمكنك <strong>[$2 دخول الويكي]</strong>.",
+       "config-install-done-path": "<strong>مبروك!</strong>\nلقد قمت بتثبيت ميدياوكي.\n\nقام المثبت بتوليد ملف <code>LocalSettings.php</code>.\nيحتوي هذا الملف على كل تضبيطاتك.\n\nسيتطلب تشغيل الويكي منك تنزيل هذا الملف ووضعه في <code>$4</code> (نفس المجلد المحتوي على index.php). سيبدأ التنزيل تلقائيا.\n\nلو لم يُعرض عليك التنزيل أو قمت أنت بالغائه، يمكنك تنزيله بالضغط على الوصلة أدناه:\n\n$3\n\n<strong>تنبيه:</strong> لو لم تقم بهذا الآن، لن يكن ملف الضبط متاحا لك لاحقا إذا غادرت التثبيت بدون تنزيله.\n\nعندما تنتهي من وضع الملف بمكانه، يمكنك <code>[$2 دخول الويكي]</strong>.",
        "config-download-localsettings": "تنزيل <code>LocalSettings.php</code>",
        "config-help": "مساعدة",
        "config-help-tooltip": "اضغط للتوسيع",
        "config-nofile": "لا يمكن العثور على الملف \"$1\". هل حُذف؟",
+       "config-extension-link": "هل كنت تعلم أن الويكي الخاصة بك تدعم [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions الامتدادات]؟\n\nيمكنك تصفح [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category الامتدادات حسب التصنيف] أو [https://www.mediawiki.org/wiki/Extension_Matrix مصفوفة الامتدادت] لترى القائمة الكاملة للامتدادات.",
        "mainpagetext": "<strong>تم تثبيت ميدياويكي بنجاح.</strong>",
        "mainpagedocfooter": "استشر [https://meta.wikimedia.org/wiki/Help:Contents دليل المستخدم] لمعلومات حول استخدام برنامج الويكي.\n\n== البداية ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings قائمة إعدادات الضبط]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ أسئلة متكررة حول ميدياويكي]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce القائمة البريدية الخاصة بإصدار ميدياويكي]"
 }
index d47334c..1b2831f 100644 (file)
        "config-db-schema-help": "Esti esquema de vezu va tar bien.\nCamúdalos solo si sabes que lo precises.",
        "config-pg-test-error": "Nun puede coneutase cola base de datos <strong>$1</strong>: $2",
        "config-sqlite-dir": "Direutoriu de datos SQLite:",
+       "config-oracle-def-ts": "Espaciu de tables predetermináu:",
+       "config-oracle-temp-ts": "Espaciu de tables temporal:",
        "config-type-mysql": "MySQL (o compatible)",
        "config-type-mssql": "Microsoft SQL Server",
+       "config-support-info": "MediaWiki ye compatible colos siguientes sistemes de bases de datos:\n\n$1\n\nSi nun atopes na llista el sistema de base de datos que tas intentando utilizar, sigue les instrucciones enllazaes enriba p'activar la compatibilidá.",
+       "config-header-mysql": "Configuración de MySQL",
+       "config-header-postgres": "Configuración de PostgreSQL",
+       "config-header-sqlite": "Configuración de SQLite",
+       "config-header-oracle": "Configuración d'Oracle",
+       "config-header-mssql": "Configuración de Microsoft SQL Server",
        "config-invalid-db-type": "Triba non válida de base de datos.",
        "config-missing-db-name": "Tienes d'introducir un valor pa «{{int:config-db-name}}».",
+       "config-missing-db-host": "Tienes d'escribir un valor pa «{{int:config-db-host}}».",
+       "config-missing-db-server-oracle": "Tienes d'escribir un valor pa «{{int:config-db-host-oracle}}».",
+       "config-invalid-db-server-oracle": "TNS inválidu pa la base de datos «$1».\nUsa una cadena «TNS Name» o «Easy Connect» ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Métodos de nomenclatura d'Oracle]).",
+       "config-invalid-db-name": "Nome inválidu de la base de datos «$1».\nUsa sólo lletres ASCII (a-z, A-Z), númberos (0-9), guiones baxos (_) y guiones (-).",
+       "config-invalid-db-prefix": "Prefixu inválidu pa la base de datos «$1».\nUsa sólo lletres ASCII (a-z, A-Z), númberos (0-9), guiones baxos (_) y guiones (-).",
+       "config-connection-error": "$1.\n\nComprueba'l sirvidor, el nome d'usuariu y la contraseña, y tenta nuevamente.",
+       "config-invalid-schema": "Esquema inválidu «$1» pa MediaWiki.\nUsa sólo lletres ASCII (a-z, A-Z), númberos (0-9) y guiones baxos (_).",
+       "config-db-sys-create-oracle": "L'instalador sólo almite l'emplegu d'una cuenta SYSDBA pa crear una cuenta nueva.",
+       "config-db-sys-user-exists-oracle": "La cuenta d'usuariu «$1» yá esiste. ¡SYSDBA sólo puede utilizase pa crear una nueva cuenta!",
+       "config-postgres-old": "Ríquese PostgreSQL $1 o posterior. Tienes la versión $2.",
+       "config-mssql-old": "Ríquese Microsoft SQL Server $1 o posterior. Tienes la versión $2.",
+       "config-sqlite-name-help": "Escueye'l nome qu'identifica la to wiki.\nNun uses espacios o guiones.\nEsti va usase como nome del ficheru de datos pa SQLite.",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
        "config-mysql-utf8": "UTF-8",
index 606b97b..909a1a2 100644 (file)
        "config-license-help": "Күпселек дөйөм ҡулланыуҙағы викиҙар үҙ материалдарын [http://freedomdefined.org/Definition/Ru ирекле лицензия] шарттарында файҙаланыуға рөхсәт бирә.\nБыл берҙәмлек тойғоһон булдыррыға ярҙам итә, ҡатнашыу ваҡытын оҙайтыуға дәртләндерә. Әммә шәхси йәки корпоратив викиҙар өсөн бындай ихтыяж юҡ. \n\nӘгәр һеҙ Википедия текстарын файҙаланырға йәки Википедияға үҙ викиғыҙҙан текстар күсереү мөмкинлеге булыуын теләһәгеҙ, \n<strong>{{int:config-license-cc-by-sa}}</strong> һайлағыҙ.\nВикипедия элек  GNU Free Documentation License лицензияһын файҙалана ине.\nGFDL файҙаланыла ала, әммә ул аңлау өсөн ҡатмарлы һәм материалдарҙы ҡабатлап ҡулланыуҙы ауырлаштыра.",
        "config-email-settings": "Электрон почта көйләүҙәре",
        "config-enable-email": "e-mail сығыусы почтаны рәхсәт итергә",
-       "config-enable-email-help": "Электрон почта эшләһен өсөн [http://www.php.net/manual/ru/mail.configuration.php PHP көйләүҙәрен] башҡарырға кәрәк.\nӘгәр электорон поста мөмкинлектәре кәрәкмәһә, һүндерергә була.",
+       "config-enable-email-help": "Электрон почта эшләһен өсөн, [http://www.php.net/manual/ru/mail.configuration.php PHP көйләүҙәрен] башҡарырға кәрәк.\nӘгәр электрон почта мөмкинлектәре кәрәкмәһә, һүндерергә була.",
        "config-email-user": "Ҡатнашыусынан ҡатнашыусыға почтаны рөхсәт итергә",
        "config-email-user-help": "Әгәр профилдә тейешле көйләү булһа, бөтә ҡатнашыусыларға электрон хат ебәрергә рөхсәт итергә.",
        "config-email-usertalk": "Ҡулланыусыларҙы уларҙың фекерләшеү битендәге хәбәрҙәр хаҡында белдереүҙәрҙе файҙаланыу",
        "config-email-watchlist": "Күҙәтеү исемлеген үҙгәртеү хаҡында электрон почтаға белдереү ебәрергә",
        "config-email-watchlist-help": "Ҡулланыусылар үҙ көйләүҙәрендә рөхсәт бирһә, уларға фекерләү биттәрендәге үҙгәрештәр хаҡында белдереүҙәр алырға рөхсәт итеү.",
        "config-email-auth": "Электрон почта аша аутентификация (ҡулланыусы тәҡдим иткән идентификаторҙы тикшереү) үткәреү",
-       "config-email-auth-help": "Был опция ҡабыҙырған булһа, ҡатнашыусылар үҙ адресын раҫлап e-mail адресындағы һылтанма буйынса күсергә тейеш. Электорон йәшникте алыштырған осраҡта раҫлау талап ителә.Тик почта йәшниге раҫланған ҡатнашыусылар ғына хат ала.\nБыл опцияны почтаны урынһыҙ ҡулланыуҙарҙы булдырмаҫ өсөн ҡулланырға \"тәҡдим\" ителә.",
+       "config-email-auth-help": "Был опция ҡабыҙылған булһа, ҡатнашыусылар үҙ адресын раҫлап, e-mail адресындағы һылтанма буйынса күсергә тейеш. Электрон йәшникте алыштырған осраҡта раҫлау талап ителә.Тик почта йәшнигенә раҫланған ҡатнашыусылар ғына хат ала.\nБыл опцияны почтаны урынһыҙ ҡулланыуҙарҙы булдырмаҫ өсөн ҡулланырға \"тәҡдим\" ителә.",
        "config-email-sender": "Электрон почта адресығыҙ",
        "config-email-sender-help": "Баһалама алыу өсөн электрон почта адресын яҙығыҙ. Унда кире ҡағылған баһаламалар ебәреләсәк.Почта серверы домен исемен дөрөҫ яҙыуҙы талап ите.",
        "config-upload-settings": "Рәсем-һүрәттәрҙе һәм файлдарҙы тултырыу",
index 7a03c87..a908290 100644 (file)
        "config-env-php": "Инсталирана е версия на PHP $1.",
        "config-env-hhvm": "HHVM $1 е инсталиран.",
        "config-unicode-using-intl": "Използване на разширението [http://pecl.php.net/intl intl PECL] за нормализация на Уникод.",
-       "config-unicode-pure-php-warning": "'''Предупреждение''': [http://pecl.php.net/intl Разширението intl PECL] не е налично за справяне с нормализацията на Уникод, превключване към по-бавното изпълнение на чист PHP.\nАко сайтът е с голям трафик, препоръчително е запознаването с [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations нормализацията на Уникод].",
+       "config-unicode-pure-php-warning": "<strong>Внимание:</strong> [http://pecl.php.net/intl Разширението intl PECL] не е налично за справяне с нормализацията на Уникод, превключване към по-бавното изпълнение на чист PHP.\nАко сайтът е с голям трафик, препоръчително е запознаването с [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations нормализацията на Уникод].",
        "config-unicode-update-warning": "'''Предупреждение''': Инсталираната версия на Обвивката за нормализация на Unicode използва по-старата версия на библиотеката на [http://site.icu-project.org/ проекта ICU].\nНеобходимо е да [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations инсталирате по-нова верия], в случай че сте загрижени за използването на Unicode.",
        "config-no-db": "Не може да бъде открит подходящ драйвер за база данни! Необходимо е да инсталирате драйвер за база данни за PHP.\n{{PLURAL:$2|Поддържа се следния тип|Поддържат се следните типове}} бази от данни: $1.\n\nАко сами сте компилирали PHP, преконфигурирайте го с включен клиент за база данни, например чрез използване на <code>./configure --with-mysqli</code>.\nАко сте инсталирали PHP от пакет за Debian или Ubuntu, необходимо е също така да инсталирате и модула <code>php5-mysql</code>.",
-       "config-outdated-sqlite": "<strong>Ð\9fÑ\80едÑ\83пÑ\80еждение:</strong> имате инсталиран SQLite  $1, а минималната допустима версия е $2. SQLite ще бъде недостъпна за ползване.",
+       "config-outdated-sqlite": "<strong>Ð\92нимание:</strong> имате инсталиран SQLite  $1, а минималната допустима версия е $2. SQLite ще бъде недостъпна за ползване.",
        "config-no-fts3": "'''Предупреждение''': SQLite е компилирана без [//sqlite.org/fts3.html модула FTS3], затова възможностите за търсене няма да са достъпни.",
        "config-pcre-old": "<strong>Фатална грешка:</strong> Изисква се PCRE версия $1 или по-нова.\nИзпълнимият файл на PHP е свързан с PCRE версия $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/Повече информация за PCRE].",
        "config-pcre-no-utf8": "'''Фатално''': Модулът PCRE на PHP изглежда е компилиран без поддръжка на PCRE_UTF8.\nЗа да функционира правилно, МедияУики изисква поддръжка на UTF-8.",
        "config-memory-raised": "<code>memory_limit</code> на PHP е $1, увеличаване до $2.",
-       "config-memory-bad": "<strong>Ð\9fÑ\80едÑ\83пÑ\80еждение:<strong> <code>memory_limit</code> на PHP е $1.\nСтойността вероятно е твърде ниска.\nВъзможно е инсталацията да се провали!",
+       "config-memory-bad": "<strong>Ð\92нимание:</strong> <code>memory_limit</code> на PHP е $1.\nСтойността вероятно е твърде ниска.\nВъзможно е инсталацията да се провали!",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] е инсталиран",
        "config-apc": "[http://www.php.net/apc APC] е инсталиран",
        "config-apcu": "[http://www.php.net/apc APC] е инсталиран",
@@ -77,7 +77,7 @@
        "config-no-cli-uri": "<strong>Внимание:</strong> Не е зададен параметър <code>--scriptpath</code>, стойност по подразбиране: <code>$1</code>.",
        "config-using-server": "Използване на сървърното име \"<nowiki>$1</nowiki>\".",
        "config-using-uri": "Използване на сървърния адрес (URL) \"<nowiki>$1$2</nowiki>\".",
-       "config-uploads-not-safe": "'''Предупреждение:''' Папката по подразбиране за качване <code>$1</code> е уязвима от изпълнение на зловредни скриптове.\nВъпреки че МедияУики извършва проверка за заплахи в сигурността на всички качени файлове, силно препоръчително е да се [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security затвори тази уязвимост в сигурността] преди разрешаване за качване на файлове.",
+       "config-uploads-not-safe": "<strong>Внимание:</strong> Папката по подразбиране за качване <code>$1</code> е уязвима от изпълнение на зловредни скриптове.\nВъпреки че МедияУики извършва проверка за заплахи в сигурността на всички качени файлове, силно препоръчително е да се [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security затвори тази уязвимост в сигурността] преди разрешаване за качване на файлове.",
        "config-no-cli-uploads-check": "<strong>Предупреждение:</strong> Директорията по подразбиране за качване на файлове (<code>$1</code>) не е проверена за уязвимости при изпълнение на произволен скрипт по време на инсталацията от командния ред.",
        "config-brokenlibxml": "Вашата система използва комбинация от версии на PHP и libxml2, които са с много грешки и могат да причинят скрити повреди на данните в МедияУики или други уеб приложения.\nНеобходимо е обновяване до libxml2 2.7.3 или по-нова версия ([https://bugs.php.net/bug.php?id=45996 докладвана грешка при PHP]).\nИнсталацията беше прекратена.",
        "config-suhosin-max-value-length": "Suhosin е инсталиран и ограничава дължината GET параметъра <code>length</code> на $1 байта. Компонентът на МедияУики ResourceLoader ще може да пренебрегне частично това ограничение, но това ще намали производителността. По възможност е препоръчително да се настрои <code>suhosin.get.max_value_length</code> на 1024 или по-голяма стойност в <code>php.ini</code> и в LocalSettings.php да се настрои <code>$wgResourceLoaderMaxQueryLength</code> със същата стойност.",
        "config-mysql-engine": "Хранилище на данни:",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
-       "config-mysql-myisam-dep": "'''Предупреждение''': Избрана е MyISAM като система за складиране в MySQL, която не се препоръчва за използване с МедияУики, защото:\n* почти не поддържа паралелност заради заключване на таблиците\n* е по-податлива на повреди в сравнение с други системи\n* кодът на МедияУики не винаги поддържа MyISAM коректно\n\nАко инсталацията на MySQL поддържа InnoDB, силно е препоръчително да се използва тя.\nАко инсталацията на MySQL не поддържа InnoDB, вероятно е време за обновяване.",
+       "config-mysql-myisam-dep": "<strong>Внимание:</strong> Избрана е MyISAM като система за складиране в MySQL, която не се препоръчва за използване с МедияУики, защото:\n* почти не поддържа паралелност заради заключване на таблиците\n* е по-податлива на повреди в сравнение с други системи\n* кодът на МедияУики не винаги поддържа MyISAM коректно\n\nАко инсталацията на MySQL поддържа InnoDB, силно е препоръчително да се използва тя.\nАко инсталацията на MySQL не поддържа InnoDB, вероятно е време за обновяване.",
        "config-mysql-only-myisam-dep": "<strong>Внимание:</strong> MyISAM e единственият наличен на тази машина тип на таблиците за MySQL и не е препоръчителен за употреба при МедияУики защото:\n* има слаба поддръжка на конкурентност на заявките, поради закючването на таблиците\n* е много по-податлив на грешки в базите от данни от другите типове таблици\n* кодът на МедияУики не винаги работи с MyISAM както трябва\n\nВашият MySQL не поддържа InnoDB, така че може би е дошло време за актуализиране.",
        "config-mysql-engine-help": "'''InnoDB''' почти винаги е най-добрата възможност заради навременната си поддръжка.\n\n'''MyISAM''' може да е по-бърза при инсталации с един потребител или само за четене.\nБазите от данни MyISAM се повреждат по-често от InnoDB.",
        "config-mysql-charset": "Набор от символи в базата от данни:",
        "config-skins-missing": "Не са открити облици; МедияУики ще използва авариен облик, докато инсталирате подходящ.",
        "config-skins-must-enable-some": "Трябва да изберете поне един облик.",
        "config-skins-must-enable-default": "Обликът по-подразбиране трябва да бъде включен.",
-       "config-install-alreadydone": "'''Предупреждение:''' Изглежда вече сте инсталирали МедияУики и се опитвате да го инсталирате отново.\nПродължете към следващата страница.",
+       "config-install-alreadydone": "<strong>Внимание:</strong> Изглежда вече сте инсталирали МедияУики и се опитвате да го инсталирате отново.\nПродължете към следващата страница.",
        "config-install-begin": "Инсталацията на МедияУики ще започне след натискане на бутона „{{int:config-continue}}“.\nВ случай, че е необходимо да се направят промени, използва се бутона „{{int:config-back}}“.",
        "config-install-step-done": "готово",
        "config-install-step-failed": "неуспешно",
        "config-install-user-missing": "Посоченият потребител \" $1 \"не съществува.",
        "config-install-user-missing-create": "Посоченият потребител \"$1\" не съществува.\nАко желаете да го създадете, поставете отметка на \"създаване на сметка\".",
        "config-install-tables": "Създаване на таблиците",
-       "config-install-tables-exist": "'''Предупреждение''': Таблиците за МедияУики изглежда вече съществуват.\nПропускане на създаването им.",
+       "config-install-tables-exist": "<strong>Внимание:</strong> Таблиците за МедияУики изглежда вече съществуват.\nПропускане на създаването им.",
        "config-install-tables-failed": "'''Грешка''': Създаването на таблиците пропадна и върна следната грешка: $1",
        "config-install-interwiki": "Попълване на таблицата с междууикитата по подразбиране",
        "config-install-interwiki-list": "Файлът <code>interwiki.list</code> не можа да бъде открит.",
-       "config-install-interwiki-exists": "'''Предупреждение''': Таблицата с междууикита изглежда вече съдържа данни.\nПропускане на списъка по подразбиране.",
+       "config-install-interwiki-exists": "<strong>Внимание:</strong> Таблицата с междууикита изглежда вече съдържа данни.\nПропускане на списъка по подразбиране.",
        "config-install-stats": "Инициализиране на статистиките",
        "config-install-keys": "Генериране на тайни ключове",
-       "config-insecure-keys": "'''Предупреждение:''' {{PLURAL:$2|Сигурният ключ, създаден по време на инсталацията, не е напълно надежден|Сигурните ключове, създадени по време на инсталацията, не са напълно надеждни}} $1 . Обмислете да {{PLURAL:$2|го|ги}} смените ръчно.",
+       "config-insecure-keys": "<strong>Внимание:</strong> {{PLURAL:$2|Сигурният ключ, създаден по време на инсталацията, не е напълно надежден|Сигурните ключове, създадени по време на инсталацията, не са напълно надеждни}} $1 . Обмислете да {{PLURAL:$2|го|ги}} смените ръчно.",
        "config-install-updates": "Предотвратяване стартирането на ненужни актуализации",
        "config-install-updates-failed": "<strong>Грешка:</strong> Вмъкването на обновяващи ключове в таблиците се провали по следната причина: $1",
        "config-install-sysop": "Създаване на администраторска сметка",
index 64f6197..f38c769 100644 (file)
        "config-mssql-old": "Stumm $1 Microsoft SQL Server, pe unan nevesoc'h, zo rekis. Ganeoc'h emañ ar stumm $2.",
        "config-sqlite-name-help": "Dibabit un anv dibar d'ho wiki.\nArabat ober gant esaouennoù pe barrennigoù-stagañ.\nImplijet e vo evit ar restr roadennoù SQLite.",
        "config-sqlite-parent-unwritable-group": "N'haller ket krouiñ ar c'havlec'h roadennoù <code><nowiki>$1</nowiki></code> peogwir n'hall ket ar servijer Web skrivañ war ar c'havlec'h kar <code><nowiki>$2</nowiki></code>.\n\nKavet eo bet gant ar stalier an anv implijer m'eo oberiant ar servijer drezañ. Evit gallout kenderc'hel, lakait ar c'havlec'h <code><nowiki>$3</nowiki></code> da vezañ tizhus evit ar skrivañ.\nWar ur reizhiad Unix/Linux system ober :\n\n<pre>cd $2\nmkdir $3\nchgrp $4 $3\nchmod g+w $3</pre>",
+       "config-sqlite-parent-unwritable-nogroup": "N'haller ket krouiñ ar c'havlec'h roadennoù <code><nowiki>$1</nowiki></code> peogwir n'hall ket ar servijer Web skrivañ war ar c'havlec'h kar <code><nowiki>$2</nowiki></code>.\n\nN'eo ket bet ar servijer evit kavout anv an implijer ma tro ar servijer. Evit kenderc'hel, lakaat ar c'havlec'h <code><nowiki>$3</nowiki></code> da vezañ tizhus evit ar skrivañ dre vras.\nWar ur reizhiad Unix/Linux merkañ :\n\n<pre>cd $2\nmkdir $3\nchmod a+w $3</pre>",
        "config-sqlite-mkdir-error": "Ur fazi zo bet e-ser krouiñ ar c'havlec'h roadennoù \"$1\".\nGwiriañ al lec'hiadur ha klask en-dro.",
        "config-sqlite-dir-unwritable": "Dibosupl skrivañ er c'havlec'h \"$1\".\nCheñchit ar aotreoù evit ma c'hallfe ar servijer web skrivañ ennañ ha klaskit en-dro.",
        "config-sqlite-connection-error": "$1.\n\nGwiriañ ar c'havlec'h roadennoù hag anv an diaz roadennoù a-is ha klaskit en-dro.",
        "config-sqlite-cant-create-db": "N'haller ket krouiñ restr an diaz roadennoù <code>$1</code>.",
        "config-sqlite-fts3-downgrade": "N'eo ket kenglotus ar PHP gant FTS3, o lakaat an taolennoù da glotañ gant ur stumm koshoc'h",
        "config-can-upgrade": "Taolennoù MediaWiki zo en diaz titouroù.\nDa hizivaat anezho da VediaWiki $1, klikañ war '''Kenderc'hel'''.",
+       "config-upgrade-done": "Hizivadenn bet kaset da benn vat.\n\nGallout a rit [$1 kregiñ da implijout ho wiki].\n\nMar fell deoc'h adc'henel ho restr <code>LocalSettings.php</code>, klikit war ar bouton dindan.\n<strong>N'eo ket un dra erbedet</strong> nemet ho pefe kudennoù gant ho wiki.",
        "config-upgrade-done-no-regenerate": "Hizivadenn kaset da benn.\n\nGallout a rit [$1 kregiñ da implijout ho wiki].",
        "config-regenerate": "Adgenel LocalSettings.php →",
        "config-show-table-status": "C'hwitet ar reked <code>SHOW TABLE STATUS</code> !",
        "config-mysql-engine": "Lusker stokañ :",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
+       "config-mysql-myisam-dep": "<strong>Diwallit :</strong> Diuzet eo bet ganeoc'h MyISAM evel keflusker stokañ evit MySQL, ar pezh n'eo ket erbedet evit implijout gant MediaWiki, rak :\n* a-boan m'eo skoret gantañ ober meur a dra war un dro peogwir eo prennet an taolennoù\n* techetoc'h eo d'ar gwastoù eget kefluskerioù all\n* kod diazez MediaWiki n'eo ket atav embreget MyISAM gantañ evel m'eo dleet\n\nM'eo skoret InnoDB gant ho staliadur MySQL, ez eo kuzuliet c'hwek deoc'h dibab hennezh kentoc'h.\nMa n'eo ket skoret InnoDB gant ho staliadur MySQL, e c'hallfe bezañ poent deoc'h ober un hizivadenn.",
+       "config-mysql-only-myisam-dep": "<strong>Taolit evezh :</strong> MyISAM eo ar c'heflusker stokañ nemetañ a c'haller ober gantañ war ar mekanik-mañ evit MySQL, padal n'eo ket erbedet e implij gant MediaWiki, rak :\n* a-boan ma skor ar c'hevezerezh abalamour m'eo prennet an taolennoù\n* aesoc'h eo e wastañ eget kefluskerioù all\n* n'eo ket atav embreget MyIsam evel ma tlefe bezañ gant kod diazez MediaWiki\n\nN'eo ket skoret InnoDB gant ho staliadur MySQL. Poent eo hizivaat anezhañ marteze.",
+       "config-mysql-engine-help": "<strong>InnoDB</strong> eo an dibab gwellañ koulz lavaret atav, kemer a ra e kont ar monedoù kevezus.\n\n<strong>MyISAM</strong> a c'hall bezañ fonnusoc'h evit ar staliadurioù unpost pe ar re lenn hepken.\nDiazoù roadennoù MyISAM zo techet da vezañ gwastet aliesoc'h eget re InnoDB.",
        "config-mysql-charset": "Strobad arouezennoù an diaz roadennoù :",
        "config-mysql-binary": "Binarel",
        "config-mysql-utf8": "UTF-8",
+       "config-mysql-charset-help": "Er <strong>mod binarel</strong> eo stoket an destenn UTF-8 gant MediaWiki en diaz roadennoù e maeziennoù binarel.\nEfedusoc'h eo an dra-se eget mod UTF-8 MySQL; leuskel a ra ac'hanoc'h da implijout skalfad klok arouezennoù Unicode.\n\nEr <strong>mod UTF-8</strong>, MySQL a ouio anavezout ar rikoù arouezennoù emañ ho roadennoù ennañ hag e c'hallo o c'hinnig hag o amdreiñ en doare a zere met ne aotreo ket ac'hanoc'h da stokañ arouezennoù a-us d'ar [https://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Steuñv liesyezhek diazez] (e saozneg).",
        "config-mssql-auth": "Seut anaoudadur :",
+       "config-mssql-install-auth": "Diuzañ ar seurt dilesa a vo implijet evit kevreañ ouzh an diaz roadennoù e-pad ar staliañ.\nMa tibabit \"{{int:config-mssql-windowsauth}}\", e vo implijet titouroù anaout an implijer a laka ar servijer da dreiñ.",
+       "config-mssql-web-auth": "Diuzañ ar seurt dilesa a vo implijet gant ar servijer web evit kevreañ ouzh diaz roadennoù ar servijer e-pad oberiadennoù boas ar wiki.\nMa tibabit \"{{int:config-mssql-windowsauth}}\", e vo implijet titouroù anaout an implijer a laka ar servijer da dreiñ.",
        "config-mssql-sqlauth": "Anaoudadur SQL Server",
        "config-mssql-windowsauth": "Anaoudadur Windows",
        "config-site-name": "Anv ar wiki :",
index c122b2a..6613972 100644 (file)
                ]
        },
        "config-desc": "Instalacija za MediaWiki",
-       "config-title": "MediaWiki $1 instalacija",
+       "config-title": "Instalacija MediaWikija $1",
        "config-information": "Informacija",
-       "config-localsettings-upgrade": "Otkrivena je datoteka <code>LocalSettings.php</code>.\nDa biste unaprijedili vaš softver, molimo vas upišite vrijednost od <code>$wgUpgradeKey</code> u okvir ispod.\nNaći ćete ga u <code>LocalSettings.php</code>.",
-       "config-localsettings-cli-upgrade": "Datoteka <code>LocalSettings.php</code> file je otkrivena.\nZa nadogradnju ove instalacije, molimo da pokrenete <code>update.php</code> umjesto toga",
-       "config-localsettings-key": "Ključ za nadgradnju:",
-       "config-localsettings-badkey": "Ključ koji ste dali je pogrešan.",
-       "config-upgrade-key-missing": "Postojeća instalacije MediaWiki je pronađena.\nZa nadogradnju ove instalacije, molimo da stavite sljedeće liniju na dno vašeg <code>LocalSettings.php</code>:\n\n$1",
-       "config-localsettings-incomplete": "Postojeći <code>LocalSettings.php</code> se čini da je nepotpun.\nVarijabla $1 nije podešena.\nMolimo da zamjenite <code>LocalSettings.php</code> tako da je varijabla podešena, i kliknite \"{{int:Config-continue}}\".",
+       "config-localsettings-upgrade": "Otkrivena je datoteka <code>LocalSettings.php</code>.\nDa biste nadogradili instalaciju, upišite vrijednost od <code>$wgUpgradeKey</code> u okvir ispod.\nNaći ćete ga u <code>LocalSettings.php</code>.",
+       "config-localsettings-cli-upgrade": "Otkrivena je datoteka <code>LocalSettings.php</code>.\nDa biste nadogradili instalaciju, pokrenite <code>update.php</code> umjesto toga",
+       "config-localsettings-key": "Ključ za nadogradnju:",
+       "config-localsettings-badkey": "Ključ za nadogradnju koji ste naveli je pogrešan.",
+       "config-upgrade-key-missing": "Pronađena je postojeća instalacija MediaWikija.\nDa biste je nadogradili, umetnite sljedeći red na dno datoteke <code>LocalSettings.php</code>:\n\n$1",
+       "config-localsettings-incomplete": "Postojeća datoteka <code>LocalSettings.php</code> djeluje nepotpuna.\nNije postavljena varijabla $1.\nIzmijenite datoteku <code>LocalSettings.php</code> tako što ćete varijabli zadati vrijednost, pa kliknite na \"{{int:Config-continue}}\".",
        "config-session-error": "Greška pri pokretanju sesije: $1",
-       "config-no-session": "Vaši podaci sesije su izgubljeni!\nProvjerite vaš php.ini i provjerite da li je <code>session.save_path</code> postavljen na pravilni direktorijum.",
+       "config-no-session": "Vaši podaci o sesiji su izgubljeni!\nProvjerite je li <code>session.save_path</code> postavljen na pravilni direktorijum u php.ini.",
        "config-your-language": "Vaš jezik:",
-       "config-your-language-help": "Odaberite jezik koji ćete koristiti tokom procesa instalacije.",
-       "config-wiki-language": "Wiki jezik:",
-       "config-wiki-language-help": "Odaberite jezik na kojem će wiki biti najvećim dijelim pisana.",
+       "config-your-language-help": "Izaberite jezik koji želite koristiti tokom instalacije.",
+       "config-wiki-language": "Jezik wikija:",
+       "config-wiki-language-help": "Izaberite jezik na kojem će biti sadržaj wikija.",
        "config-back": "← Nazad",
        "config-continue": "Nastavi →",
        "config-page-language": "Jezik",
-       "config-page-welcome": "Dobrodošli u MediaWiki!",
-       "config-page-dbconnect": "Poveži sa bazom podataka",
-       "config-page-upgrade": "Unaprijedi postojeću instalaciju",
+       "config-page-welcome": "Dobro došli na MediaWiki!",
+       "config-page-dbconnect": "Povezivanje s bazom podataka",
+       "config-page-upgrade": "Nadogradnja postojeće instalacije",
        "config-page-dbsettings": "Postavke baze podataka",
        "config-page-name": "Naziv",
        "config-page-options": "Opcije",
        "config-page-install": "Instaliraj",
        "config-page-complete": "Završeno!",
-       "config-page-restart": "Ponovi instalaciju ispočetka",
+       "config-page-restart": "Ponovno pokretanje instalacije",
        "config-page-readme": "Pročitaj me",
-       "config-page-releasenotes": "Napomene izdanja",
-       "config-page-copying": "Kopiram",
-       "config-page-upgradedoc": "Nadograđujem",
+       "config-page-releasenotes": "Napomene o izdanju",
+       "config-page-copying": "Kopiranje",
+       "config-page-upgradedoc": "Nadogradnja",
        "config-page-existingwiki": "Postojeća wiki",
-       "config-help-restart": "Da li želite očistiti sve spremljene podatke koje ste unijeli i da započnete ponovo proces instalacije?",
+       "config-help-restart": "Želite li obrisati sve sačuvane podatke koje ste unijeli i ponovo pokrenuti instalaciju?",
        "config-restart": "Da, pokreni ponovo",
-       "config-sidebar": "* [https://www.mediawiki.org MediaWiki Početna strana]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Vodič za korisnike]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Vodič za administratore]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ NPP]\n----\n* <doclink href=Readme>Pročitaj me</doclink>\n* <doclink href=ReleaseNotes>Napomene izdanja</doclink>\n* <doclink href=Copying>Kopiranje</doclink>\n* <doclink href=UpgradeDoc>Poboljšavanje</doclink>",
+       "config-sidebar": "* [https://www.mediawiki.org Početna strana MediaWikija]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Vodič za korisnike]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Vodič za administratore]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ ČPP]\n----\n* <doclink href=Readme>Pročitaj me</doclink>\n* <doclink href=ReleaseNotes>Napomene o izdanju</doclink>\n* <doclink href=Copying>Kopiranje</doclink>\n* <doclink href=UpgradeDoc>Nadogradnja</doclink>",
        "config-env-good": "Okruženje je provjereno.\nMožete instalirati MediaWiki.",
+       "config-env-bad": "Okruženje je provjereno.\nNe možete instalirati MediaWiki.",
        "config-env-php": "PHP $1 je instaliran.",
        "config-env-hhvm": "HHVM $1 je instaliran.",
-       "config-no-db": "Nije mogao biti pronađen pogodan driver za bazu podataka! Morate instalirati driver baze podataka za PHP.\nSljedeće vrste baza podataka {{PLURAL:$2|type is|types are}}su podržane: $1.\n\nAko se sami kompajlirali PHP, podesite ga sa omogućenim klijentom baze podataka, koristeći naprimjer, <code>./configure --with-mysqli</code>.\nAko ste instalirali PHP iz Debian ili Ubuntu paketa, tada morate instalirati, naprimjer, i paket <code>php5-mysql</code>.",
+       "config-no-db": "Ne mogu pronaći pogodan upravljački program za bazu podataka! Morate ga instalirati za PHP-bazu.\n{{PLURAL:$2|Podržana je sljedeća vrsta|Podržane su sljedeće vrste}} baze podataka: $1.\n\nAko se sami kompajlirali PHP, omogućite klijent baze podataka u postavkama koristeći, naprimjer, <code>./configure --with-mysqli</code>.\nAko ste instalirali PHP iz paketa za Debian ili Ubuntu, onda također morate instalirati, naprimjer, paket <code>php5-mysql</code>.",
+       "config-memory-raised": "<code>memory_limit</code> za PHP iznosi $1, povišen na $2.",
+       "config-memory-bad": "<strong>Upozorenje:</strong> <code>memory_limit</code> za PHP iznosi $1.\nOvo je vjerovatno premalo.\nInstalacija možda neće uspjeti!",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] je instaliran",
        "config-apc": "[http://www.php.net/apc APC] je instaliran",
+       "config-apcu": "[http://www.php.net/apcu APCu] je instaliran",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] je instaliran",
        "config-diff3-bad": "GNU diff3 nije pronađen.",
+       "config-git": "Pronađen je Git program za kontrolu verzija: <code>$1</code>.",
+       "config-git-bad": "Nije pronađen Git program za kontrolu verzija.",
+       "config-imagemagick": "Pronađen je ImageMagick: <code>$1</code>.\nAko omogućite postavljanje, bit će omogućena minijaturizacija slika.",
+       "config-gd": "Utvrđeno je da je ugrađena grafička biblioteka GD.\nAko omogućite postavljanje, bit će omogućena minijaturizacija slika.",
+       "config-no-scaling": "Ne mogu pronaći biblioteku GD niti ImageMagick.\nMinijaturizacija slika bit će onemogućena.",
+       "config-no-uri": "<strong>Greška:</strong> Ne mogu utvrditi trenutni URI.\nInstalacija je prekinuta.",
        "config-db-type": "Vrsta baze podataka:",
        "config-db-host": "Domaćin baze podataka:",
        "config-db-wiki-settings": "Identificiraj ovu wiki",
        "config-db-name": "Naziv baze podataka:",
        "config-db-name-oracle": "Šema baze podataka:",
+       "config-db-install-account": "Korisnički račun za instalaciju",
        "config-db-username": "Korisničko ime baze podataka:",
        "config-db-password": "Lozinka baze podataka:",
+       "config-db-wiki-account": "Korisnički račun za redovan rad",
+       "config-db-prefix": "Prefiks tabele u bazi podataka:",
+       "config-mysql-old": "Zahtijeva se MySQL $1 ili noviji. Vi imate $2.",
        "config-db-port": "Port baze podataka:",
-       "config-header-mysql": "Postavke MySQL",
-       "config-header-postgres": "Postavke PostgreSQL",
-       "config-header-sqlite": "Postavke SQLite",
-       "config-header-oracle": "Postavke Oracle",
-       "config-header-mssql": "Postavke za Microsoft SQL Server",
-       "config-invalid-db-type": "Invalidna vrsta baze podataka.",
+       "config-db-schema": "Šema za MediaWiki:",
+       "config-pg-test-error": "Ne mogu se povezati na bazu podataka <strong>$1</strong>: $2",
+       "config-sqlite-dir": "Folder za SQLite-podatke:",
+       "config-oracle-def-ts": "Predodređeni tabelarni prostor:",
+       "config-oracle-temp-ts": "Privremeni tabelarni prostor:",
+       "config-type-mysql": "MySQL (ili kompaktibilan)",
+       "config-type-mssql": "Microsoft SQL Server",
+       "config-header-mysql": "Postavke MySQL-a",
+       "config-header-postgres": "Postavke PostgreSQL-a",
+       "config-header-sqlite": "Postavke SQLite-a",
+       "config-header-oracle": "Postavke Oraclea",
+       "config-header-mssql": "Postavke Microsoft SQL Servera",
+       "config-invalid-db-type": "Nevažeća vrsta baze podataka.",
        "config-missing-db-name": "Morate unijeti vrijednost za \"{{int:config-db-name}}\".",
-       "config-upgrade-done": "Nadogradnja završena.\n\nSada možete [$1 početi koristiti vašu wiki].\n\nAko želite regenerisati vašu datoteku <code>LocalSettings.php</code>, kliknite na dugme ispod.\nOvo '''nije preporučeno''' osim ako nemate problema s vašom wiki.",
+       "config-missing-db-host": "Morate unijeti vrijednost za \"{{int:config-db-host}}\".",
+       "config-missing-db-server-oracle": "Morate unijeti vrijednost za \"{{int:config-db-host-oracle}}\".",
+       "config-db-sys-create-oracle": "Program za instalaciju podržava samo upotrebu SYSDBA-računa za pravljenje novih računa.",
+       "config-postgres-old": "Zahtijeva se PostgreSQL $1 ili noviji. Vi imate $2.",
+       "config-mssql-old": "Zahtijeva se Microsoft SQL Server $1 ili noviji. Vi imate $2.",
+       "config-sqlite-name-help": "Izaberite ime koje će predstavljati Vaš wiki.\nNemojte koristiti razmake i crte.\nOvo će se koristiti za ime datoteke SQLite-podataka.",
+       "config-sqlite-readonly": "Datoteka <code>$1</code> nije zapisiva.",
+       "config-sqlite-cant-create-db": "Ne mogu napraviti datoteku <code>$1</code> za bazu podataka.",
+       "config-sqlite-fts3-downgrade": "PHP ne podržava FTS3, poništavam nadogradnju tabela.",
+       "config-upgrade-done": "Nadogradnja završena.\n\nSada možete [$1 početi koristiti Vaš wiki].\n\nAko želite regenerirati Vašu datoteku <code>LocalSettings.php</code>, kliknite na dugme ispod.\nOvo <strong>nije preporučeno</strong> osim ako nemate problema s Vašim wikijem.",
+       "config-upgrade-done-no-regenerate": "Nadogradnja završena.\n\nSad možete [$1 početi da koristite svoj wiki].",
+       "config-regenerate": "Regeneriraj LocalSettings.php →",
+       "config-unknown-collation": "<strong>Upozorenje:</strong> Baza podataka koristi nepoznatu kolaciju.",
+       "config-db-web-account": "Račun baze podataka za mrežni pristup",
+       "config-db-web-account-same": "Koristi isti račun kao i za instalaciju",
+       "config-db-web-create": "Napravi račun ako već ne postoji",
+       "config-mysql-engine": "Skladišni pogon:",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
        "config-mysql-binary": "Binarni",
-       "config-site-name": "Ime wiki:",
+       "config-mysql-utf8": "UTF-8",
+       "config-mssql-auth": "Vrsta autentifikacije:",
+       "config-site-name": "Ime wikija:",
+       "config-site-name-blank": "Upišite ime sajta.",
+       "config-project-namespace": "Imenski prostor projekta:",
+       "config-ns-generic": "Projekt",
+       "config-ns-site-name": "Isti kao ime wikija: $1",
+       "config-ns-other": "Drugo (navedite)",
        "config-ns-other-default": "MyWiki",
+       "config-admin-box": "Administratorski račun",
        "config-admin-name": "Vaše korisničko ime:",
        "config-admin-password": "Lozinka:",
-       "config-admin-password-confirm": "Ponovno unesite lozinku:",
+       "config-admin-password-confirm": "Ponovo unesite lozinku:",
+       "config-admin-help": "Ovdje upišite željeno korisničko ime; naprimjer, \"Petar Petrović\".\nOvo ćete ime koristiti za prijavu na wiki.",
+       "config-admin-name-blank": "Upišite administratorsko korisničko ime.",
+       "config-admin-name-invalid": "Navedeno korisničko ime \"<nowiki>$1</nowiki>\" nije ispravno.\nNavedite drugo.",
+       "config-admin-password-blank": "Upišite lozinku za administratorski račun.",
+       "config-admin-password-mismatch": "Lozinke koje ste upisali se ne poklapaju.",
        "config-admin-email": "Adresa e-pošte:",
-       "config-profile-wiki": "Otvori wiki",
-       "config-profile-private": "Privatna wiki",
+       "config-admin-error-bademail": "Upisali ste neispravnu adresu e-pošte.",
+       "config-pingback": "Podijeli podatke o instalaciji s programerima MediaWikija.",
+       "config-optional-continue": "Postavi mi još pitanja.",
+       "config-optional-skip": "Već mi je dosadilo, daj samo instaliraj wiki.",
+       "config-profile": "Profil korisničkih prava:",
+       "config-profile-wiki": "Otvoren wiki",
+       "config-profile-no-anon": "Potrebno je napraviti račun",
+       "config-profile-fishbowl": "Samo ovlašteni korisnici",
+       "config-profile-private": "Privatni wiki",
+       "config-license": "Autorska prava i licenca:",
+       "config-license-none": "Bez podnožja za licencu",
        "config-license-pd": "Javno vlasništvo",
-       "config-logo": "Logo URL:",
-       "config-cc-again": "Odaberi ponovno...",
+       "config-email-settings": "Postavke e-pošte",
+       "config-enable-email": "Omogući odlaznu e-poštu",
+       "config-upload-enable": "Omogući postavljanje datoteka",
+       "config-upload-deleted": "Folder za obrisane datoteke:",
+       "config-logo": "URL logotipa:",
+       "config-instantcommons": "Omogući Instant Commons",
+       "config-cc-again": "Izaberite ponovo...",
+       "config-advanced-settings": "Napredna konfiguracija",
+       "config-extensions": "Proširenja",
        "config-skins": "Teme",
+       "config-skins-use-as-default": "Koristi temu kao predodređenu",
+       "config-skins-missing": "Nije pronađena nijedna tema. MediaWiki će koristiti rezervnu temu dok ne instalirate druge.",
+       "config-skins-must-enable-some": "Morate izabrati barem jednu temu.",
+       "config-skins-must-enable-default": "Tema koju ste izabrali za predodređenu mora se omogućiti.",
+       "config-install-alreadydone": "<strong>Upozorenje:</strong> Izgleda da već imate instaliran MediaWiki i da ga ponovo pokušavate instalirati.\nIdite na sljedeću stranicu.",
        "config-install-step-done": "završeno",
        "config-install-step-failed": "neuspješno",
-       "config-install-extensions": "Uključujući ekstenzije",
-       "config-install-tables": "Kreiranje tabela",
+       "config-install-extensions": "Uključujem proširenja",
+       "config-install-database": "Postavljam bazu podataka",
+       "config-install-schema": "Pravim šemu",
+       "config-install-pg-plpgsql": "Provjeravam jezik PL/pgSQL",
+       "config-pg-no-plpgsql": "Morate instalirati jezik PL/pgSQL u bazu podataka $1",
+       "config-install-user": "Pravim korisnika baze podataka",
+       "config-install-user-alreadyexists": "Korisnik \"$1\" već postoji",
+       "config-install-user-create-failed": "Pravljenje korisnika \"$1\" nije uspjelo: $2",
+       "config-install-user-grant-failed": "Dodjeljivanje dozvola korisniku \"$1\" nije uspjelo: $2",
+       "config-install-user-missing": "Navedeni korisnik \"$1\" ne postoji.",
+       "config-install-tables": "Pravim tabele",
+       "config-install-interwiki": "Popunjavam predodređenu međuprojektnu tabelu",
+       "config-install-stats": "Pokrećem statistiku",
+       "config-install-keys": "Stvaram tajne ključeve",
+       "config-install-updates": "Spriječi pokretanje nepotrebnih ažuriranja",
+       "config-install-sysop": "Pravim administratorski korisnički račun",
+       "config-install-subscribe-fail": "Ne mogu Vas pretplatiti na mediawiki-announce: $1",
+       "config-install-subscribe-notpossible": "cURL nije instaliran, a <code>allow_url_fopen</code> nije dostupno.",
+       "config-install-mainpage": "Pravim početnu stranicu sa standardnim sadržajem",
+       "config-install-mainpage-exists": "Početna strana već postoji. Prelazim na sljedeće.",
+       "config-install-mainpage-failed": "Ne mogu umetnuti početnu stranu: $1",
+       "config-download-localsettings": "Preuzmi <code>LocalSettings.php</code>",
        "config-help": "pomoć",
-       "config-help-tooltip": "klikni za proširenje",
-       "mainpagetext": "'''MediaWiki softver je uspješno instaliran.'''",
-       "mainpagedocfooter": "Kontaktirajte [https://meta.wikimedia.org/wiki/Help:Sadržaj uputstva za korisnike] za informacije o upotrebi wiki programa.\n\n== Početak ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista postavki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki najčešće postavljana pitanja]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista E-Mail adresa MediaWiki]"
+       "config-help-tooltip": "kliknite da proširite",
+       "config-nofile": "Datoteka \"$1\" nije pronađena. Da nije obrisana?",
+       "mainpagetext": "<strong>MediaWiki je instaliran.</strong>",
+       "mainpagedocfooter": "Pogledajte [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents korisnički vodič] za uputstva o upotrebi wiki softvera.\n\n== Prvi koraci ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Spisak postavki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Često postavljana pitanja o MediaWikiju]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Dopisna lista o izdanjima MediaWikija]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Lokalizirajte MediaWiki za svoj jezik]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Naučite kako se boriti protiv neželjenog sadržaja na svom wikiju]"
 }
index 559e7dd..c86b824 100644 (file)
@@ -62,6 +62,7 @@
        "config-memory-bad": "<strong>Avís:</strong> El <code>memory_limit</code> del PHP és $1.\nAixò és probablement massa baix.\nLa instal·lació pot fallar!",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] està instal·lat",
        "config-apc": "L’[http://www.php.net/apc APC] està instal·lat",
+       "config-apcu": "[http://www.php.net/apcu APCu] està instal·lat",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] està instal·lat",
        "config-diff3-bad": "No s'ha trobat el GNU diff3.",
        "config-git": "S'ha trobat el programari de control de versions Git: <code>$1</code>.",
        "config-cache-options": "Configuració per a la memòria cau dels objectes:",
        "config-cache-help": "L'encauament d'objectes s'utilitza per a millorar la rapidesa del MediaWiki afegint a la memòria cau les dades que s'utilitzen de forma freqüent. És recomanable que els llocs web mitjans o grans ho habilitin. També els llocs web petits en veuran els beneficis.",
        "config-cache-none": "Sense encauament (no se suprimeix cap funcionalitat, però la velocitat pot veure's afectada en els llocs wiki més grans)",
+       "config-cache-accel": "Emmagatzemament en memòria cau d'objectes de PHP (APC, APCu, XCache o WinCache)",
        "config-cache-memcached": "Utilitza Memcached (requereix una instal·lació i configuració addicionals)",
        "config-memcached-servers": "Servidors de Memcache:",
        "config-memcache-badip": "Heu introduït una adreça IP no vàlida per al Memcached: $1.",
        "config-memcache-badport": "Els números de port de Memcached han de ser entre $1 i $2.",
        "config-extensions": "Extensions",
        "config-skins": "Aparences",
+       "config-skins-help": "S'han detectat els temes llistats a dalt en el directori <code>./skins</code>. Heu d'habilitar-ne com a mínim un i trieu-ne el predeterminat.",
        "config-skins-use-as-default": "Utilitza aquest tema per defecte",
        "config-skins-missing": "No s'ha trobat cap tema; MediaWiki utilitzarà el tema per defecte fins que hi instal·leu alguns adequats.",
        "config-skins-must-enable-some": "Heu de triar com a mínim un tema per habilitar.",
        "config-skins-must-enable-default": "Cal habilitar el tema triat per defecte.",
+       "config-install-alreadydone": "<strong>Avís:</strong> Sembla que ja havíeu instal·lat MediaWiki i esteu provant d'instal·lar-lo de nou.\nProcediu a la pàgina següent.",
        "config-install-begin": "En fer clic a «{{int:config-continue}}» s’iniciarà la instal·lació del MediaWiki. Si encara voleu fer canvis, feu clic a «{{int:config-back}}».",
        "config-install-step-done": "fet",
        "config-install-step-failed": "ha fallat",
        "config-help": "ajuda",
        "config-help-tooltip": "feu clic per ampliar",
        "config-nofile": "No s'ha pogut trobar el fitxer «$1». S'ha suprimit?",
+       "config-extension-link": "Sabíeu que el vostre wiki permet l'ús d'[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensions]?\n\nPodeu navegar les [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensions per categoria] o la [https://www.mediawiki.org/wiki/Extension_Matrix matriu d'extensions] per a veure'n una llista sencera.",
        "mainpagetext": "<strong>MediaWiki s'ha instal·lat.</strong>",
-       "mainpagedocfooter": "Consulteu la [https://meta.wikimedia.org/wiki/Help:Contents Guia d'Usuari] per a més informació sobre com utilitzar-lo.\n\n== Per a començar ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Llista de característiques configurables]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ PMF del MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de correu (''listserv'') per a anuncis del MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traduïu MediaWiki en la vostra llengua]"
+       "mainpagedocfooter": "Consulteu la [https://meta.wikimedia.org/wiki/Help:Contents Guia d'Usuari] per a més informació sobre com utilitzar aquest programari wiki.\n\n== Primers passos ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Llista de paràmetres configurables]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ PMF del MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de correu per a anuncis del MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traducció de MediaWiki en la vostra llengua]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprengueu com combatre la brossa que pot atacar el vostre wiki]"
 }
index cb7e392..e11fae2 100644 (file)
@@ -29,7 +29,7 @@
        "config-page-existingwiki": "Йолуш йолу вики",
        "config-copyright": "=== Авторан бакъонаш а хьал а ===\n\n$1\nMediaWiki ю маьрша программин латораг, шу йиш ю фондас арахецна йолу GNU General Public License лицензица и яржо я хийца а.\n\nMediaWiki яржош ю и шуна пайдане хир яц те аьлла, амма цхьа юкъарахилар доцуш. Хь. кхин. лицензи мадарра GNU General Public License .\n\nШоьга кхача езаш яра [{{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 еша и онлайнехь].",
        "config-no-fts3": "'''Тергам бе''': SQLite гулйина хуттург йоцуш [//sqlite.org/fts3.html FTS3] — лахар болхбеш хир дац оцу бухца.",
-       "config-no-cli-uri": "'''ДӀахьедар''': <code>--scriptpath</code> параметр язйина яц, иза Ӏад йитарца лелош ю: <code>$1</code> .",
+       "config-no-cli-uri": "'''ДӀахьедар''': <code>--scriptpath</code> параметр язйина яц, иза Ӏадйитаран кепаца лелош ю: <code>$1</code> .",
        "config-db-name": "Хаамийн базан цӀе:",
        "config-type-mssql": "Microsoft SQL Server",
        "config-header-mssql": "Microsoft SQL Server параметраш",
@@ -66,9 +66,9 @@
        "config-logo": "Логотипан URL:",
        "config-cc-again": "Хьаржа кхин цӀа…",
        "config-skins": "Кечяран тема",
-       "config-skins-use-as-default": "ХӀара тема Ӏад йитарца лелае",
+       "config-skins-use-as-default": "ХӀара тема Ӏадйитаран кепара лелае",
        "config-skins-must-enable-some": "Ахьа цхьаъ мукъа тема латина йита езаш ю.",
-       "config-skins-must-enable-default": "Ӏад йитарца йолу тема латина хила еза.",
+       "config-skins-must-enable-default": "Ӏадйитаран кепаца йолу тема латина хила еза.",
        "config-install-step-done": "кхочушдина",
        "config-install-step-failed": "тар цаделира",
        "config-install-user": "Декъашхочун хаамийн база кхоллар",
index 8c4914c..279e26a 100644 (file)
@@ -45,7 +45,7 @@
        "config-localsettings-badkey": "La clave de actualización proporcionada es incorrecta.",
        "config-upgrade-key-missing": "Se ha detectado una instalación existente de MediaWiki.\nPara actualizar la instalación, añade la siguiente línea al final de tu  <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "El archivo <code>LocalSettings.php</code> existente parece estar incompleto.\nLa variable $1 no está definida.\nCambia <code>LocalSettings.php</code> para que esta variable quede establecida y haz clic en \"{{int:Config-continue}}\".",
-       "config-localsettings-connection-error": "Se ha producido un error al conectar a la base de datos utilizando la configuración especificada en <code>LocalSettings.php</code>. Corrige estos ajustes e inténtalo de nuevo.\n\n$1",
+       "config-localsettings-connection-error": "Se ha producido un error al conectar con la base de datos a través de la configuración especificada en <code>LocalSettings.php</code>. Corrige estos ajustes e inténtalo de nuevo.\n\n$1",
        "config-session-error": "Error al iniciar la sesión: $1",
        "config-session-expired": "Tus datos de sesión parecen haber expirado.\nLas sesiones están configuradas por una duración de $1.\nPuedes incrementar esto configurando <code>session.gc_maxlifetime</code> en php.ini.\nReiniciar el proceso de instalación.",
        "config-no-session": "Se han perdido los datos de sesión.\nVerifica tu php.ini y comprueba que <code>session.save_path</code> está establecido en un directorio apropiado.",
@@ -57,7 +57,7 @@
        "config-continue": "Continuar →",
        "config-page-language": "Idioma",
        "config-page-welcome": "Te damos la bienvenida a MediaWiki.",
-       "config-page-dbconnect": "Conectar a la base de datos",
+       "config-page-dbconnect": "Conectar con la base de datos",
        "config-page-upgrade": "Actualizar instalación existente",
        "config-page-dbsettings": "Configuración de la base de datos",
        "config-page-name": "Nombre",
@@ -98,7 +98,7 @@
        "config-diff3-bad": "GNU diff3 no se encuentra.",
        "config-git": "Se encontró el software de control de versiones Git: <code>$1</code>.",
        "config-git-bad": "No se encontró el software de control de versiones Git.",
-       "config-imagemagick": "ImageMagick encontrado: <code>$1</code>.\nLa miniaturización de imágenes se habilitará si habilitas las cargas.",
+       "config-imagemagick": "ImageMagick encontrado: <code>$1</code>.\nLa miniaturización de imágenes se habilitará si habilitas la subida de archivos.",
        "config-gd": "Se ha encontrado una biblioteca de gráficos GD integrada.\nLa miniaturización de imágenes se habilitará si habilitas las subidas.",
        "config-no-scaling": "No se ha encontrado la biblioteca GD o ImageMagik.\nSe desactivará la miniaturización de imágenes.",
        "config-no-uri": "<strong>Error:</strong> no se pudo determinar el URI actual.\nSe interrumpió la instalación.",
        "config-db-port": "Puerto de la base de datos:",
        "config-db-schema": "Esquema para MediaWiki",
        "config-db-schema-help": "Este esquema usualmente estará bien.\nCámbialos solo si lo necesitas.",
-       "config-pg-test-error": "No se puede conectar a la base de datos <strong>$1</strong>: $2",
+       "config-pg-test-error": "No se puede conectar con la base de datos <strong>$1</strong>: $2",
        "config-sqlite-dir": "Directorio de datos SQLite:",
        "config-sqlite-dir-help": "SQLite almacena todos los datos en un único archivo.\n\nEl directorio que proporciones debe poder escribirse por el servidor web durante la instalación.\n\n'''No''' debería ser accesible a través de Internet. Por eso no vamos a ponerlo en el sitio donde están los archivos PHP.\n\nEl instalador escribirá un archivo <code>.htaccess</code> junto con él, pero si falla alguien podría tener acceso a la base de datos en bloque.\nEso incluye los datos de usuario en bloque (direcciones de correo electrónico, las contraseñas con hash) así como revisiones eliminadas y otros datos restringidos del wiki.\n\nConsidera poner la base de datos en algún otro sitio, por ejemplo en <code>/var/lib/mediawiki/tuwiki</code> .",
        "config-oracle-def-ts": "Espacio de tablas predeterminado:",
        "config-dbsupport-postgres": "[{{int:version-db-postgres-url}} PostgreSQL] es un sistema de base de datos popular de código abierto, alternativa a MySQL. ([http://www.php.net/manual/es/pgsql.installation.php Cómo compilar PHP con compatibilidad PostgreSQL]).",
        "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] es un sistema de base de datos ligero con gran compatibilidad con MediaWiki. ([http://www.php.net/manual/es/pdo.installation.php Cómo compilar PHP con compatibilidad SQLite], usando PDO)",
        "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] es una base de datos comercial a nivel empresarial. ([http://www.php.net/manual/es/oci8.installation.php Cómo compilar PHP con compatibilidad con OCI8])",
-       "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] es una base de datos comercial a nivel empresarial para Windows. ([http://www.php.net/manual/en/sqlsrv.installation.php Cómo compilar PHP con soporte para SQLSRV])",
+       "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] es un sistema comercial de base de datos empresariales para Windows. ([http://www.php.net/manual/en/sqlsrv.installation.php Cómo compilar PHP con compatibilidad con SQLSRV])",
        "config-header-mysql": "Configuración de MySQL",
        "config-header-postgres": "Configuración de PostgreSQL",
        "config-header-sqlite": "Configuración de SQLite",
index 7690b01..430345e 100644 (file)
        "config-env-hhvm": "HHVM $1 instalatuta dago.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] instalatuta dago",
        "config-apc": "[http://www.php.net/apc APC] instalatuta dago",
+       "config-apcu": "[http://www.php.net/apcu APCu] instalatuta dago",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] instalatuta dago",
        "config-diff3-bad": "GNU diff3 ez da aurkitu.",
+       "config-using-server": "\"<nowiki>$1</nowiki>\" zerbitzari-izena erabiltzen.",
+       "config-using-uri": "\"<nowiki>$1$2</nowiki>\" zerbitzariaren URLa erabiltzen.",
        "config-db-type": "Datu-base mota:",
        "config-db-host": "Datu-basearen zerbitzaria:",
        "config-db-host-oracle": "Datu-baseko TNS:",
@@ -64,6 +67,8 @@
        "config-header-mssql": "Microsoft SQL Server-en ezarpenak",
        "config-invalid-db-type": "Datu-base mota baliogabea.",
        "config-db-sys-user-exists-oracle": "$1 erabiltzaile kontua dagoeneko existitzen da. SYSDBA kontu berri bat sortzeko erabili daiteke soilik!",
+       "config-sqlite-readonly": "Ezin da idatzi <code>$1</code> fitxategian.",
+       "config-regenerate": "Birsortu LocalSettings.php →",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
        "config-mysql-binary": "Bitarra",
        "config-download-localsettings": "Jaitsi <code>LocalSettings.php</code>",
        "config-help": "Laguntza",
        "config-help-tooltip": "sakatu zabaltzeko",
+       "config-nofile": "Ezin da \"$1\" fitxategia aurkitu. Ezabatua izan da?",
        "mainpagetext": "<strong>MediaWiki instalatu da.</strong>",
        "mainpagedocfooter": "Ikus [https://meta.wikimedia.org/wiki/Help:Contents Erabiltzaile Gida] wiki softwarea erabiltzen hasteko informazio gehiagorako.\n\n== Nola hasi ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Konfigurazio balioen zerrenda]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ (Maiz egindako galderak)]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWikiren argitalpenen posta zerrenda]"
 }
index 411b2d0..6282ca1 100644 (file)
@@ -68,7 +68,7 @@
        "config-outdated-sqlite": "''' هشدار:''' شما اس‌کیولایت $1 دارید، که پایین‌تر از حداقل نسخهٔ $2 مورد نیاز است.اس‌کیولایت در دسترس نخواهد بود.",
        "config-no-fts3": "'''هشدار:''' اس‌کیولایت بدون [//sqlite.org/fts3.html FTS3 module] تهیه شده‌است ، جستجوی ویژگی‌ها در این بخش پیشین در دسترس نخواهد‌بود.",
        "config-pcre-old": "''' خطای اساسی:'' ' PCRE  $1  یا بعدا مورد نیاز است.\nکد باینری پی‌اچ‌پی‌تان با PCRE  $2 پیوند دارد.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE اطلاعات بیشتر].",
-       "config-pcre-no-utf8": "'''مخرب:''' به‌ نظر می‌رسد ماژول پی‌سی‌آرایی پی‌اچ‌پی بدون پشتیبانی پی‌سی‌آرایی_یو‌تی‌اف۸ تهیه شده‌است.\nمدیاویکی برای درست عمل کردن نیازمند پشتیبانی یوتی‌اف-۸ است.",
+       "config-pcre-no-utf8": "<strong>مخرب:</strong> به‌ نظر می‌رسد پودمان پی‌سی‌آراییِ پی‌اچ‌پی بدون پشتیبانی پی‌سی‌آرایی_یو‌تی‌اف۸ تهیه شده‌است.\nمدیاویکی برای درست عمل کردن نیازمند پشتیبانی یوتی‌اف-۸ است.",
        "config-memory-raised": "PHP's <code>memory_limit</code>, نسخهٔ $1 است، به نسخهٔ $2 ارتقاء داده شده‌است.",
        "config-memory-bad": "'''هشدار:''' PHP's <code>memory_limit</code> نسخهٔ $1 است.\nاین ممکن است خیلی پایین باشد.\nممکن است نصب با مشکل رو‌به‌رو شود.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] نصب شده‌است.",
index 953d427..db21da6 100644 (file)
        "config-sqlite-connection-error": "$1.\n\nVérifier le répertoire des données et le nom de la base de données ci-dessous et réessayer.",
        "config-sqlite-readonly": "Le fichier <code>$1</code> n'est pas accessible en écriture.",
        "config-sqlite-cant-create-db": "Impossible de créer le fichier de base de données <code>$1</code>.",
-       "config-sqlite-fts3-downgrade": "PHP n'a pas trouvé le support FTS3, les tables sont restreintes.",
+       "config-sqlite-fts3-downgrade": "PHP n’a pas trouvé la prise en charge FTS3, les tables sont restreintes.",
        "config-can-upgrade": "Il y a des tables MediaWiki dans cette base de données.\nPour les mettre au niveau de MediaWiki $1, cliquez sur '''Continuer'''.",
        "config-upgrade-done": "Mise à jour terminée.\n\nVous pouvez maintenant [$1 commencer à utiliser votre wiki].\n\nSi vous souhaitez régénérer votre fichier <code>LocalSettings.php</code>, cliquez sur le bouton ci-dessous.\nCeci '''n'est pas recommandé''' sauf si vous rencontrez des problèmes avec votre wiki.",
        "config-upgrade-done-no-regenerate": "Mise à jour terminée.\n\nVous pouvez maintenant [$1 commencer à utiliser votre wiki].",
        "config-profile-no-anon": "Création de compte requise",
        "config-profile-fishbowl": "Éditeurs autorisés seulement",
        "config-profile-private": "Wiki privé",
-       "config-profile-help": "Les wikis fonctionnent au mieux lorsque vous laissez un maximum de personnes les modifier.\nAvec MediaWiki, il est facile de vérifier les modifications récentes et de révoquer tout dommage créé par des utilisateurs débutants ou mal intentionnés.\n\nCependant, MediaWiki est utilisé dans bien d'autres cas et il n’est pas toujours facile de convaincre chacun des bénéfices de l’esprit wiki.\nVous avez donc le choix.\n\nLe modèle <strong>{{int:config-profile-wiki}}</strong> autorise toute personne à modifier, y compris sans s’identifier.\n<strong>{{int:config-profile-no-anon}}</strong> fournit plus de contrôle, mais peut rebuter les contributeurs occasionnels.\n\n<strong>{{int:config-profile-fishbowl}}</strong> autorise la modification par les utilisateurs approuvés mais le public peut toujours consulter les pages et leur historique.\n<strong>{{int:config-profile-private}}</strong> n’autorise que les utilisateurs approuvés à voir et éditer les pages.\n\nDes configurations de droits d’utilisateurs plus complexes sont disponibles après l'installation, voir la [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights page correspondante du manuel].",
+       "config-profile-help": "Les wikis fonctionnent au mieux lorsque vous laissez un maximum de personnes les modifier.\nAvec MediaWiki, il est facile de vérifier les modifications récentes et de révoquer tout dommage créé par des utilisateurs débutants ou mal intentionnés.\n\nCependant, MediaWiki est utilisé dans bien d’autres cas et il n’est pas toujours facile de convaincre chacun des bénéfices de l’esprit wiki.\nVous avez donc le choix.\n\nLe modèle <strong>{{int:config-profile-wiki}}</strong> autorise toute personne à modifier, y compris sans s’identifier.\n<strong>{{int:config-profile-no-anon}}</strong> fournit plus de contrôle, mais peut rebuter les contributeurs occasionnels.\n\n<strong>{{int:config-profile-fishbowl}}</strong> autorise la modification par les utilisateurs approuvés mais le public peut toujours consulter les pages et leur historique.\n<strong>{{int:config-profile-private}}</strong> n’autorise que les utilisateurs approuvés à voir et modifier les pages.\n\nDes configurations de droits d’utilisateurs plus complexes sont disponibles après l’installation, voir la [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights page correspondante du manuel].",
        "config-license": "Droits d'auteur et licence :",
        "config-license-none": "Aucune licence en bas de page",
        "config-license-cc-by-sa": "Creative Commons attribution partage à l'identique",
        "config-email-auth-help": "Si cette option est activée, les utilisateurs doivent confirmer leur adresse de courriel en utilisant l'hyperlien envoyé à chaque fois qu'ils la définissent ou la modifient.\nSeules les adresses authentifiées peuvent recevoir des courriels des autres utilisateurs ou lorsqu'il y a des notifications de modification.\nL'activation de cette option est '''recommandée''' pour les wikis publics en raison d'abus potentiels des fonctionnalités de courriels.",
        "config-email-sender": "Adresse de courriel de retour :",
        "config-email-sender-help": "Entrez l'adresse de courriel à utiliser comme adresse de retour des courriels sortant.\nLes courriels rejetés y seront envoyés.\nDe nombreux serveurs de courriels exigent au moins un [http://fr.wikipedia.org/wiki/Nom_de_domaine nom de domaine] valide.",
-       "config-upload-settings": "Téléchargement des images et des fichiers",
-       "config-upload-enable": "Activer le téléchargement des fichiers",
+       "config-upload-settings": "Téléversement des images et des fichiers",
+       "config-upload-enable": "Activer le téléversement des fichiers",
        "config-upload-help": "Le téléversement de fichiers expose votre serveur à des risques de sécurité.\nPour plus d'informations, lire la section [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security ''Security''] du manuel d'installation (en anglais).\n\nPour autoriser le téléversement de fichiers, modifier les permissions du sous-répertoire <code>images</code> qui se situe sous le répertoire racine de MediaWiki de sorte à ce que le serveur web puisse écrire dedans.\nEnsuite, activez cette option.",
        "config-upload-deleted": "Répertoire pour les fichiers supprimés :",
        "config-upload-deleted-help": "Choisissez un répertoire qui servira à archiver les fichiers supprimés.\nIdéalement, il ne devrait pas être accessible depuis le web.",
        "config-logo": "URL du logo :",
-       "config-logo-help": "L’habillage par défaut de MediaWiki comprend l’espace pour un logo de 135x160 pixels au-dessus de la barre de menu latérale.\nTéléchargez une image de la taille appropriée, et entrez son URL ici.\n\nVous pouvez utiliser <code>$wgStylePath</code> ou <code>$wgScriptPath</code> si votre logo est relatif à ces chemins.\n\nSi vous ne voulez pas de logo, laissez cette case vide.",
+       "config-logo-help": "L’habillage par défaut de MediaWiki comprend l’espace pour un logo de 135x160 pixels au-dessus de la barre de menu latérale.\nTéléversez une image de la taille appropriée, et entrez son URL ici.\n\nVous pouvez utiliser <code>$wgStylePath</code> ou <code>$wgScriptPath</code> si votre logo est relatif à ces chemins.\n\nSi vous ne voulez pas de logo, laissez cette case vide.",
        "config-instantcommons": "Activer ''InstantCommons''",
        "config-instantcommons-help": "[https://www.mediawiki.org/wiki/InstantCommons/fr InstantCommons] est un service qui permet d’utiliser les images, les sons et les autres médias disponibles sur le site [https://meta.wikimedia.org/wiki/Wikimedia_Commons/fr Wikimédia Commons].\nPour ce faire, il faut que MediaWiki accède à Internet.\n\nPour plus d’informations sur ce service, y compris les instructions sur la façon de le configurer pour d’autres wikis que Wikimedia Commons, consultez le [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos manuel].",
        "config-cc-error": "Le sélection d'une licence ''Creative Commons'' n'a donné aucun résultat.\nEntrez le nom de la licence manuellement.",
index 98af267..b443950 100644 (file)
@@ -6,7 +6,8 @@
                        "Phoenix303",
                        "संजीव कुमार",
                        "Sahilrathod",
-                       "Shyamal"
+                       "Shyamal",
+                       "Sfic"
                ]
        },
        "config-desc": "साँचा लिए इंस्टॉलर",
        "config-localsettings-cli-upgrade": "<code>LocalSettings.php</code> फ़ाइल पाया गया है ।\nइस स्थापना को अपग्रेड करने के लिए, बदले में कृपया करके ये चलाए <code>update.php</code>",
        "config-localsettings-key": "नवीनीकरण कुंजी",
        "config-localsettings-badkey": "आपकी दी गई कुंजी ग़लत है।",
+       "config-session-error": "सत्र शुरू करने में त्रुटि: $1",
+       "config-session-expired": "लग रहा है कि आपका सत्र डाटा समाप्त हो चुका है।\n$1 हेतु आप इस डाटा को हमेशा के लिए भी कर सकते हैं।\nइसे बढ़ाने हेतु आपको php.ini में <code>session.gc_maxlifetime</code> को बढ़ाना होगा।\nउसके बाद आपको स्थापित करने का कार्य फिर से करना होगा।",
+       "config-no-session": "आपका सत्र डाटा गुम हो गया।\nअपने php.ini को देखें कि <code>session.save_path</code> ठीक तरीके से सही पते पर तो है ना?",
        "config-your-language": "आपकी भाषा:",
        "config-your-language-help": "स्थापन के लिए भाषा चुनें",
-       "config-wiki-language": "विà¤\95à¥\80 भाषा:",
+       "config-wiki-language": "विà¤\95ि भाषा:",
        "config-wiki-language-help": "भाषा चुनें जिस  में अधिकतर लेख लिखा जाएगा",
        "config-back": "← वापस",
        "config-continue": "आगे बढ़ें →",
        "config-page-language": "भाषा",
-       "config-page-welcome": "मà¥\80डियाविà¤\95à¥\80 à¤ªà¤° आपका स्वागत है!",
-       "config-page-dbconnect": "डà¥\87à¤\9fाबà¥\87स à¤¸à¥\87 à¤\9cà¥\81ड़ें",
+       "config-page-welcome": "मà¥\80डियाविà¤\95ि à¤®à¥\87à¤\82 आपका स्वागत है!",
+       "config-page-dbconnect": "डà¥\87à¤\9fाबà¥\87स à¤¸à¥\87 à¤\9cà¥\8bड़ें",
        "config-page-upgrade": "मौजूदा स्थापना का नवीनीकरण",
-       "config-page-dbsettings": "डà¥\87à¤\9fाबà¥\87स à¤µà¤°à¤¿à¤¯à¤¤à¤¾à¤¯à¥\87à¤\82",
+       "config-page-dbsettings": "डà¥\87à¤\9fाबà¥\87स à¤¸à¥\87à¤\9fिà¤\82à¤\97 (पसà¤\82द)",
        "config-page-name": "नाम",
        "config-page-options": "विकल्प",
        "config-page-install": "स्थापित करें",
        "config-page-copying": "अनुकरण",
        "config-page-upgradedoc": "उन्नयन",
        "config-page-existingwiki": "मौजूदा विकि",
+       "config-help-restart": "क्या आप अपने द्वारा दिये सभी डाटा को मिटाना चाहते हैं और फिर से स्थापित करना चाहते हैं?",
        "config-restart": "हाँ, इसे पुनः आरंभ करें",
        "config-env-php": "PHP $1 स्थापित किया गया है।",
+       "config-env-hhvm": "एचएचवीएम $1 स्थापित किया गया है।",
+       "config-memory-raised": "पीएचपी की <code>memory_limit</code> सीमा $1 है, जो $2 तक बढ़ गई है।",
+       "config-xcache": "[http://xcache.lighttpd.net/ एक्सकैश] स्थापित है।",
+       "config-apc": "[http://www.php.net/apc एपीसी] स्थापित है।",
+       "config-apcu": "[http://www.php.net/apcu एपीसीयू] स्थापित है।",
+       "config-wincache": "[http://www.iis.net/download/WinCacheForPhp विनकैश] स्थापित है।",
+       "config-db-type": "डेटाबेस प्रकार:",
+       "config-db-host": "डेटाबेस होस्ट:",
+       "config-db-host-oracle": "डेटाबेस टीएनएस:",
        "config-db-wiki-settings": "इस विकि को पहचानें",
-       "config-db-install-account": "इंस्टालेशन के लिए उपयोगकर्ता खाता",
+       "config-db-name": "डेटाबेस का नाम:",
+       "config-db-install-account": "इसे स्थापित करने हेतु सदस्य खाता",
+       "config-db-username": "डेटाबेस सदस्यनाम:",
+       "config-db-password": "डेटाबेस पासवर्ड:",
+       "config-db-port": "डेटाबेस पोर्ट:",
+       "config-type-mssql": "माइक्रोसॉफ़्ट एसक्यूएल सर्वर",
+       "config-invalid-db-type": "अमान्य डेटाबेस प्रकार",
+       "config-regenerate": "LocalSettings.php फिर से निर्मित करें →",
+       "config-db-web-account": "वेब पहुँच हेतु डेटाबेस खाता",
+       "config-mysql-innodb": "इनोडीबी",
+       "config-mysql-binary": "बाइनरी",
+       "config-mysql-utf8": "UTF-8",
        "config-mssql-auth": "प्रमाणन प्रकार:",
        "config-mssql-sqlauth": "SQL सर्वर प्रमाणन",
        "config-site-name": "विकि का नाम:",
        "config-ns-other": "अन्य (निर्दिष्ट करें)",
        "config-ns-other-default": "मेरा विकि",
        "config-admin-box": "व्यवस्थापक खाता",
-       "config-admin-name": "à¤\86पà¤\95ा à¤\89पयà¥\8bà¤\97à¤\95रà¥\8dता नाम:",
+       "config-admin-name": "à¤\86पà¤\95ा à¤¸à¤¦à¤¸à¥\8dय नाम:",
        "config-admin-password": "कूटशब्द:",
        "config-admin-password-confirm": "फिर से कूटशब्द:",
+       "config-admin-name-blank": "प्रबन्धक का सदस्य नाम लिखें।",
        "config-admin-email": "ईमेल पता:",
        "config-optional-continue": "मुझसे और सवाल पूछें।",
        "config-optional-skip": "मैं पहले से ही ऊब चुका हूँ, बस विकि स्थापित करें।",
        "config-profile-fishbowl": "केवल प्रमाषित संपादक ही",
        "config-profile-private": "निजी विकि",
        "config-license-cc-by": "क्रिएटिव कॉमन्स ऍट्रीब्यूशन",
+       "config-license-pd": "सार्वजनिक डोमैन",
        "config-email-watchlist": "ध्यानसूची अधिसूचना को सक्षम करें",
+       "config-upload-enable": "फ़ाइल अपलोड सक्रिय करें",
+       "config-upload-help": "यदि आप अपने सर्वर में फ़ाइल अपलोड की सेवा दे रहे हैं तो आपको सुरक्षा से समझौता करना पड़ सकता है।\n\nअधिक जानकारी के लिए मार्गदर्शक में [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security सुरक्षा अनुभाग] देखें।\n\nयदि आप फ़ाइल अपलोड को सक्रिय करना चाहते हैं तो आपको मीडियाविकि के फोंल्डर के <code>images</code> फोंल्डर में जाने के बाद उसे सर्वर द्वारा लिखने लायक बनाना होगा।\nउसके बाद ही आप इस विकल्प को सक्रिय कर सकते हैं।",
+       "config-logo": "''लोगो'' का पता:",
+       "config-instantcommons": "''कॉमन्स'' सक्रिय करें",
+       "config-instantcommons-help": "[https://www.mediawiki.org/wiki/InstantCommons कॉमन्स] एक प्रकार की विशेषता प्रदान करता है, जिससे आप विकि में [https://commons.wikimedia.org/ विकिमीडिया कॉमन्स] साइट के किसी भी तस्वीर, आवाज या अन्य फ़ाइल का उपयोग अपने मीडियाविकि में कर सकते हैं। इसके लिए मीडियाविकि को इंटरनेट से जुड़ा होना चाहिए।\n\nइस विशेषता की अधिक जानकारी के लिए और इसे किस प्रकार आप अपने विकि में सक्रिय कर सकते हैं आदि जानने के लिए [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos मार्गदर्शक] देखें।",
        "config-extensions": "एक्सटेंशन",
+       "config-skins": "त्वचा",
+       "config-install-step-done": "पूरा हुआ",
+       "config-install-step-failed": "विफल हुआ",
+       "config-install-user-alreadyexists": "सदस्य \"$1\" पहले से उपस्थित है।",
+       "config-install-user-create-failed": "सदस्य \"$1\" का निर्माण विफल हुआ: $2",
+       "config-install-keys": "गुप्त कुंजी बना रहा",
+       "config-install-sysop": "प्रबन्धक सदस्य खाता बना रहा",
+       "config-download-localsettings": "<code>LocalSettings.php</code> को डाउनलोड करें।",
        "config-help": "सहायता",
+       "config-help-tooltip": "विस्तार हेतु क्लिक करें",
        "config-nofile": "फ़ाइल \"$1\" नहीं पाई जा सकी। क्या इसे हटा दिया गया है?",
-       "mainpagetext": "'''मीडियाविकिका इन्स्टॉलेशन पूरा हो गया हैं ।'''",
-       "mainpagedocfooter": "विà¤\95ि à¤¸à¥\89फà¥\8dà¤\9fवà¥\87यरà¤\95à¥\87 à¤\87सà¥\8dतà¥\87माल à¤\95à¥\87 à¤²à¤¿à¤¯à¥\87 [https://meta.wikimedia.org/wiki/Help:Contents à¤\89पयà¥\8bà¤\97à¤\95रà¥\8dता à¤\97ाà¤\88ड] à¤¦à¥\87à¤\96à¥\87à¤\82 à¥¤\n\n== à¤¶à¥\81रà¥\81वात à¤\95रà¥\87à¤\82 ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings à¤\95à¥\89नà¥\8dफिà¤\97रà¥\87शन à¤¸à¥\87à¤\9fà¥\80à¤\82à¤\97à¤\95à¥\80 à¤¸à¥\82à¤\9aà¥\80]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ à¤®à¥\80डियाविà¤\95िà¤\95à¥\87 à¤¬à¤¾à¤°à¥\87 à¤®à¥\87à¤\82 à¤ªà¥\8dराय: à¤ªà¥\82à¤\9bà¥\87 à¤\9cानà¥\87 à¤µà¤¾à¤²à¥\87 à¤¸à¤µà¤¾à¤²]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce à¤®à¥\80डियाविà¤\95ि à¤®à¥\87लिà¤\82à¤\97 à¤²à¤¿à¤¸à¥\8dà¤\9f]"
+       "mainpagetext": "<strong>मीडियाविकि का अब स्थापित हो चुका है।</strong>",
+       "mainpagedocfooter": "à¤\87स à¤µà¤¿à¤\95ि à¤¸à¥\89फà¥\8dà¤\9fवà¥\87यर à¤\95ा à¤\95िस à¤ªà¥\8dरà¤\95ार à¤\86प à¤\87सà¥\8dतà¥\87माल à¤\95र à¤¸à¤\95तà¥\87 à¤¹à¥\88à¤\82, à¤\87सà¤\95à¥\80 à¤\9cानà¤\95ारà¥\80 à¤\95à¥\87 à¤²à¤¿à¤\8f [https://meta.wikimedia.org/wiki/Help:Contents à¤\89पयà¥\8bà¤\97 à¤®à¤¾à¤°à¥\8dà¤\97दरà¥\8dशà¤\95] à¤¦à¥\87à¤\96à¥\87à¤\82।\n== à¤¶à¥\81रà¥\81à¤\86त à¤\95रà¥\87à¤\82 ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings à¤µà¤¿à¤\95ि à¤®à¥\87à¤\82 à¤¬à¤¦à¤²à¤¾à¤µ à¤\95à¥\80 à¤¸à¥\82à¤\9aà¥\80]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ à¤®à¥\80डियाविà¤\95ि à¤\95à¥\87 à¤¬à¤¾à¤°à¥\87 à¤®à¥\87à¤\82 à¤ªà¥\8dराय: à¤ªà¥\82à¤\9bà¥\87 à¤\9cानà¥\87 à¤µà¤¾à¤²à¥\87 à¤¸à¤µà¤¾à¤²]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce à¤®à¥\80डियाविà¤\95ि à¤\95à¥\80 à¤®à¥\87ल à¤¸à¥\82à¤\9aà¥\80]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources à¤®à¥\80डियाविà¤\95ि à¤\95ा à¤\86पà¤\95à¥\87 à¤­à¤¾à¤·à¤¾ à¤®à¥\87à¤\82 à¤\85नà¥\81वाद]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam à¤\85पनà¥\87 à¤µà¤¿à¤\95ि à¤\95à¥\8b à¤\95िस à¤ªà¥\8dरà¤\95ार à¤¸à¥\87 à¤µà¤¿à¤\9cà¥\8dà¤\9eापन à¤¡à¤¾à¤²à¤¨à¥\87 à¤µà¤¾à¤²à¥\87 à¤\94र à¤¬à¤°à¥\8dबरता à¤\95रनà¥\87 à¤µà¤¾à¤²à¥\8bà¤\82 à¤¸à¥\87 à¤¬à¤\9aा à¤¸à¤\95तà¥\87 à¤¹à¥\88à¤\82]"
 }
index 5aece05..759b82d 100644 (file)
@@ -10,7 +10,8 @@
                        "Dorgan",
                        "Macofe",
                        "Máté",
-                       "Seb35"
+                       "Seb35",
+                       "Urbalazs"
                ]
        },
        "config-desc": "A MediaWiki telepítője",
        "config-env-php": "A PHP verziója: $1",
        "config-env-hhvm": "HHVM verziója: $1",
        "config-unicode-using-intl": "A rendszer Unicode normalizálására az [http://pecl.php.net/intl intl PECL kiterjesztést] használja.",
-       "config-unicode-pure-php-warning": "<strong>Figyelmeztetés:</strong> Az Unicode normalizáláshoz szükséges [http://pecl.php.net/intl intl PECL kiterjesztés] nem érhető el, helyette a lassú, PHP-alapú implementáció lesz használatban.\nHa nagy látogatottságú oldalt üzemeltetsz, [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations itt] találhatsz további információkat a témáról.",
-       "config-unicode-update-warning": "<strong>Figyelmeztetés:</strong> Az Unicode normalizáláshoz szükséges burkolókönyvtár [http://site.icu-project.org/ ICU projekt] függvénykönyvtárának régebbi változatát használja.\nHa ügyelni kívánsz a Unicode használatára, fontold meg a [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations frissítését].",
-       "config-no-db": "Nem sikerült egyetlen használható adatbázis-illesztőprogramot sem találni. Telepítened kell egyet a PHP-hez.\nA következő {{PLURAL:$2|adatbázistípus támogatott|adatbázistípusok támogatottak}}: $1.\n\nHa a PHP-t magad fordítottad, konfiguráld újra úgy, hogy engedélyezve legyen egy adatbáziskliens, pl. a <code>./configure --with-mysqli</code> parancs használatával.\nHa a PHP-t Debian vagy Ubuntu csomaggal telepítetted, akkor szükséged lesz például a php5-mysql csomagra is.",
+       "config-unicode-pure-php-warning": "<strong>Figyelmeztetés:</strong> A Unicode-normalizáláshoz szükséges [http://pecl.php.net/intl intl PECL kiterjesztés] nem érhető el, helyette a lassú, PHP-alapú implementáció lesz használatban.\nHa nagy látogatottságú oldalt üzemeltetsz, [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations itt] találhatsz további információkat a témáról.",
+       "config-unicode-update-warning": "<strong>Figyelmeztetés:</strong> A Unicode normalizáláshoz szükséges burkolókönyvtár [http://site.icu-project.org/ az ICU projekt] függvénykönyvtárának régebbi változatát használja.\nHa ügyelni kívánsz a Unicode használatára, fontold meg a [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations frissítését].",
+       "config-no-db": "Nem sikerült egyetlen használható adatbázis-illesztőprogramot sem találni. Telepítened kell egyet a PHP-hez.\nA következő {{PLURAL:$2|adatbázistípus támogatott|adatbázistípusok támogatottak}}: $1.\n\nHa a PHP-t magad fordítottad, konfiguráld újra úgy, hogy engedélyezve legyen egy adatbáziskliens, pl. a <code>./configure --with-mysqli</code> parancs használatával.\nHa a PHP-t Debian vagy Ubuntu csomaggal telepítetted, akkor szükséged lesz például a <code>php5-mysql</code> csomagra is.",
        "config-outdated-sqlite": "<strong>Figyelmeztetés:</strong> SQLite $1 verziód van, ami alacsonyabb a legalább szükséges $2 verziónál. Az SQLite nem lesz elérhető.",
-       "config-no-fts3": "'''Figyelmeztetés''': Az SQLite [//sqlite.org/fts3.html FTS3 modul] nélkül lett fordítva, a keresési funkciók nem fognak működni ezen a rendszeren.",
+       "config-no-fts3": "<strong>Figyelmeztetés:</strong> Az SQLite [//sqlite.org/fts3.html FTS3 modul] nélkül lett fordítva, a keresési funkciók nem fognak működni ezen a rendszeren.",
        "config-pcre-old": "<strong>Kritikus hiba:</strong> PCRE $1 vagy későbbi szükséges.\nA Te PHP binárisod PCRE $2-vel lett linkelve.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE További információ].",
-       "config-pcre-no-utf8": "'''Kritikus hiba''': Úgy tűnik, hogy a PHP PRCE modulja PRCE_UTF8 támogatás nélkül lett fordítva.\nA MediaWikinek UTF-8-támogatásra van szüksége a helyes működéshez.",
+       "config-pcre-no-utf8": "<strong>Kritikus hiba:</strong> Úgy tűnik, hogy a PHP PRCE modulja PRCE_UTF8 támogatás nélkül lett fordítva.\nA MediaWikinek UTF-8-támogatásra van szüksége a helyes működéshez.",
        "config-memory-raised": "A PHP <code>memory_limit</code> beállításának értéke: $1. Meg lett növelve a következő értékre: $2.",
-       "config-memory-bad": "'''Figyelmeztetés:''' A PHP <code>memory_limit</code> beállításának értéke $1.\nEz az érték valószínűleg túl kevés, a telepítés sikertelen lehet.",
+       "config-memory-bad": "<strong>Figyelmeztetés:</strong> A PHP <code>memory_limit</code> beállításának értéke $1.\nEz az érték valószínűleg túl kevés, a telepítés sikertelen lehet.",
        "config-xcache": "Az [http://xcache.lighttpd.net/ XCache] telepítve van",
        "config-apc": "Az [http://www.php.net/apc APC] telepítve van",
        "config-apcu": "Az [http://www.php.net/apcu APCu] telepítve van",
        "config-wincache": "A [http://www.iis.net/download/WinCacheForPhp WinCache] telepítve van",
+       "config-no-cache-apcu": "<strong>Figyelmeztetés:</strong> nem találhatók a következők: [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] vagy [http://www.iis.net/download/WinCacheForPhp WinCache].\nAz objektum gyorsítótárazása nincs engedélyezve.",
        "config-diff3-bad": "GNU diff3 nem található.",
        "config-git": "Megtaláltam a Git verziókezelő szoftvert: <code>$1</code>.",
        "config-git-bad": "A Git verziókezelő rendszer nem található.",
        "config-imagemagick": "Az ImageMagick megtalálható a rendszeren: <code>$1</code>.\nA bélyegképek készítése engedélyezve lesz a feltöltések engedélyezése esetén.",
        "config-gd": "A GD grafikai könyvtár elérhető.\nBélyegképek készítése működni fog, miután engedélyezted a fájlfeltöltést.",
        "config-no-scaling": "Nem található a GD könyvtár és az ImageMagick.\nA bélyegképek készítése le lesz tiltva.",
-       "config-no-uri": "'''Hiba:''' Nem sikerült megállapítani a jelenlegi URI-t.\nTelepítés megszakítva.",
+       "config-no-uri": "<strong>Hiba:</strong> Nem sikerült megállapítani a jelenlegi URI-t.\nA telepítés megszakítva.",
        "config-no-cli-uri": "<strong>Figyelmeztetés:</strong> Nincs <code>--scriptpath</code> megadva, használom az alapértelmezettet: <code>$1</code>.",
        "config-using-server": "A következő szervernév használata: „<nowiki>$1</nowiki>”.",
-       "config-using-uri": "A következő szerver URL-cím használata: „<nowiki>$1$2</nowiki>”.",
-       "config-uploads-not-safe": "'''Figyelmeztetés:''' a feltöltésekhez használt alapértelmezett könyvtárban (<code>$1</code>) tetszőleges külső szkript futtatható.\nHabár a MediaWiki ellenőrzi a feltöltött fájlokat az efféle biztonsági veszélyek megtalálása érdekében, a feltöltés engedélyezése előtt erősen ajánlott a [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security a sérülékenység megszüntetése].",
+       "config-using-uri": "A következő szerver-URL használata: „<nowiki>$1$2</nowiki>”.",
+       "config-uploads-not-safe": "<strong>Figyelmeztetés:</strong> a feltöltésekhez használt alapértelmezett könyvtárban (<code>$1</code>) tetszőleges külső szkript futtatható.\nHabár a MediaWiki ellenőrzi a feltöltött fájlokat az efféle biztonsági veszélyek megtalálása érdekében, a feltöltés engedélyezése előtt erősen ajánlott [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security a sérülékenység megszüntetése].",
        "config-brokenlibxml": "A rendszereden a PHP és libxml2 verziók olyan kombinációja található meg, ami hibásan működik, és észrevehetetlen adatkárosodást okoz a MediaWikiben és más webalkalmazásokban.\nFrissíts a libxml2 2.7.3 vgy újabb verziójára ([https://bugs.php.net/bug.php?id=45996 A hiba bejelentése a PHP-nél]).\nTelepítés megszakítva.",
        "config-suhosin-max-value-length": "A Suhosin telepítve van, és a GET <code>length</code> paraméterét $1 bájtra korlátozza.\nA MediaWiki ResourceLoader (erőforrásbetöltő) összetevője megkerüli a problémát, de így csökkenni fog a teljesítmény.\nHa lehetséges, állítsd be a <code>suhosin.get.max_value_length</code> értékét legalább 1024-re a <code>php.ini</code>-ben, és állítsd be a <code>$wgResourceLoaderMaxQueryLength</code> változót ugyanerre az értékre a <code>LocalSettings.php</code>-ban.",
        "config-db-type": "Adatbázis típusa:",
index 3670744..0ecc097 100644 (file)
        "config-unicode-using-intl": "Adoeuvia [http://pecl.php.net/intl l'estenscion PECL intl] pe-a normalizzaçion Unicode.",
        "config-unicode-pure-php-warning": "'''Attençion:''' [http://pecl.php.net/intl l'estenscion PECL intl] a no l'è disponibile pe gestî a normalizzaçion Unicode, quindi se torna a-a lenta implementaçion in PHP puo.\nSe ti esegui un scito a ato traffego, ti doviesci leze arcun-e conscidiaçioin in sciâ [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations normalizzaçion Unicode].",
        "config-unicode-update-warning": "'''Attençion:''' a verscion installaa do gestô pe-a normalizzaçion Unicode a l'adoeuvia una vegia verscion da libraia [http://site.icu-project.org/ do progetto ICU].\nTi doviesci [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations aggiornâ] se ti voeu doeuviâ l'Unicode.",
-       "config-no-db": "Imposcibile trovâ un driver adatto pe-o database! L'è necessaio installâ un driver pe PHP.\n{{PLURAL:$2|O seguente formato de database o l'è supportou|I seguenti formati de database son supportæ}}: $1.\n\nSe ti compilli PHP aotonomamente, riconfiguilo attivando un client database, presempio utilizzando <code>./configure --with-mysqli</code>.\nQualoa t'avesci installou PHP pe mezo de 'n pacchetto Debian ò Ubuntu, alloa ti devi installâ o pacchetto <code>php5-mysql</code> ascì."
+       "config-no-db": "Imposcibile trovâ un driver adatto pe-o database! L'è necessaio installâ un driver pe PHP.\n{{PLURAL:$2|O seguente formato de database o l'è supportou|I seguenti formati de database son supportæ}}: $1.\n\nSe ti compilli PHP aotonomamente, riconfiguilo attivando un client database, presempio utilizzando <code>./configure --with-mysqli</code>.\nQualoa t'avesci installou PHP pe mezo de 'n pacchetto Debian ò Ubuntu, alloa ti devi installâ o pacchetto <code>php5-mysql</code> ascì.",
+       "config-outdated-sqlite": "'''Atençion''': ti g'hæ SQLite $1, ma te ghe voeu comme minnimo a verscion $2. SQLite o no saiâ disponibile.",
+       "config-no-fts3": "'''Atençion''': SQLite o l'è compilou sença o [//sqlite.org/fts3.html modulo FTS3], e fonçioin de çerchia no saian disponibile insce sto motô.",
+       "config-pcre-old": "<strong>Fatale:</strong> se richiede PCRE  $1 o succescivo.\nO to PHP binaio o l'è conligou con PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/Ciu informaçioin insce PCRE].",
+       "config-pcre-no-utf8": "'''Fatale''': o modulo PCRE de PHP pâ ch'o segge stæto compilou sença o supporto PCRE_UTF8. A MediaWiki a-o richiede pe fonçionâ corettamente.",
+       "config-memory-raised": "O valô <code>memory_limit</code> de PHP o l'è $1, aomentou a $2.",
+       "config-memory-bad": "''Atençion:''' O valô de <code>memory_limit</code> do PHP o l'è $1.\nFoscia o l'è troppo basso.\nL'installaçion a porriæ fallî!",
+       "config-xcache": "[http://xcache.lighttpd.net/ XCache] o l'è installou",
+       "config-apc": "[http://www.php.net/apc APC] o l'è installou",
+       "config-apcu": "[http://www.php.net/apc APC] o l'è installou",
+       "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] o l'è installou",
+       "config-no-cache-apcu": "'''Atençion:''' [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] ò [http://www.iis.net/download/WinCacheForPhp WinCache] no son stæti trovæ.\nA caching di ogetti a no l'è attivâ.",
+       "config-mod-security": "<strong>Atençion:</strong> O to serviou web o g'ha o [http://modsecurity.org/ mod_security] abilitou. Gh'è tante configuaçioin che crean di problemi a-a MediaWiki ò a atro software ch'o permette a-i utenti de pubbricâ quâ-se-segge contegnuo. Se poscibbile o doviæ ese disabilitou.\nFanni rifeimento a-a [http://modsecurity.org/documentation/ documentaçion insce-o mod_security] ò contatta o supporto tecnico do to provider de hosting se se veifica di erroî.",
+       "config-diff3-bad": "GNU diff3 non trovou.",
+       "config-git": "Trovou software de controllo da verscion Git: <code>$1</code>.",
+       "config-git-bad": "Software de controllo da verscion Git non trovou.",
+       "config-imagemagick": "Trovou ImageMagick: <code>$1</code>.\nE miniatue de inmaggine saian presente se i upload vegnan abilitæ.",
+       "config-gd": "Trovou a libraja graffica GD integrâ.\nE miniatue de inmaggine saian presente se i upload vegnan abilitæ.",
+       "config-no-scaling": "Imposcibbile trovâ a libraja GD ò ImageMagick.\nE miniatue de inmaggine saian disabilitæ.",
+       "config-no-uri": "'''Errô:''' Imposcibbile determinâ l'URI attoale.\nInstallaçion interotta.",
+       "config-no-cli-uri": "'''Atençion''': <code>--scriptpath</code> non specificou, s'adoeuvia o valô predefinio: <code>$1</code>.",
+       "config-using-server": "Nomme do serviou in uso \"<nowiki>$1</nowiki>\".",
+       "config-using-uri": "URL do serviou in uso \"<nowiki>$1$2</nowiki>\".",
+       "config-uploads-not-safe": "<strong>Atençion:</strong> a directory predefinia pe-i caregamenti <code>$1</code> a l'è vulnerabile a l'execuçion arbitraia de script.\nSciben che, a difeisa da segueçça, a MediaWiki a controlla tutti i file caregæ, l'è fortemente racomandou de [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security serâ questa menaçça] primma d'abilitâ i caregamenti.",
+       "config-no-cli-uploads-check": "<strong>Atençion:</strong> a directory predefinia pe-i caregamenti (<code>$1</code>) a no l'è stæta veificâ pe-a vulnerabilitæ insce l'esecuçion arbitraia de script durante l'installaçion da linnia de comando.",
+       "config-brokenlibxml": "O to scistema o g'ha 'na combinaçion de verscioin de PHP e libxml2 ch'a l'è difettosa e ch'a poeu provocâ un danno ascozo a-i dæti da MediaWiki e d'atre apricaçioin web.\nAgiorna a libxml2 2.7.3 ò succescivo ([https://bugs.php.net/bug.php?id=45996 o babollo o l'è studiou da-o lao PHP]).\nInstallaçion interotta.",
+       "config-suhosin-max-value-length": "Suhosin o l'è installou e o limmita o parammetro GET <code>length</code> a $1 byte.\nO componente MediaWiki ResourceLoader o fonçioniâ inte sto limmite, ma questo o reduiâ e prestaçioin.\nSe poscibbile, ti doviesci impostâ <code>suhosin.get.max_value_length</code> a 1024 ò ciu in <code>php.ini</code>, e impostâ <code>$wgResourceLoaderMaxQueryLength</code> a-o mæximo valô in <code>LocalSettings.php</code>.",
+       "config-db-type": "Tipo de database:",
+       "config-db-host": "Host do database:",
+       "config-db-host-help": "Se o serviou do to database o l'è insce 'n serviou despægio, inmetti chì o nomme de l'host ò o so adresso IP.\n\nSe ti doeuvi un web hosting condiviso, o to hosting provider o doviæ fornite o nomme host corretto inta so documentaçion.\n\nSe t'ê aproeuvo a instalâ insce 'n serviou Windows con uso de MySQL, l'uso de \"localhost\" o porriæ no fonçionâ correttamente comme nomme do serviou. In caxo de problemi, proeuva a impostâ \"127.0.0.1\" comme adresso IP locale.\n\nSe ti t'adoeuvi PostgreSQL, lascia questo campo voeuo pe consentî de connettise trammite un socket Unix.",
+       "config-db-host-oracle": "TNS do database:",
+       "config-db-host-oracle-help": "Inseisci un vallido [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Local Connect Name]; un file tnsnames.ora o dev'ese vixibbile a questa installaçion.<br />Se ti t'adoeuvi a libraia cliente 10g o ciù reçente ti poeu ascì doeuviâ o mettodo de denominaçion [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].",
+       "config-db-wiki-settings": "Identiffica questo wiki",
+       "config-db-name": "Nomme do database:",
+       "config-db-name-help": "Çerni un nomme ch'o l'identiffiche o to wiki.\nO no deve contegnî de spaççi.\n\nSe ti doeuvi un web hosting condiviso, o to hosting provider o te fornisce un speciffico nomme de database da doeuviâ, opû o ti consentiâ de creâ o database trammite un panello de controllo.",
+       "config-db-name-oracle": "Schema do database:",
+       "config-db-account-oracle-warn": "Gh'è trei scenarri supportæ pe instalâ l'Oracle comme database de backend:\n\nSe t'oeu creâ 'n'utença de database comme parte do processo d'instalaçion, fornisci un account con rollo SYSDBA comme utença de database pe l'instalaçion e speciffica e credençiæ vosciue pe l'utença d'accesso web, sedonque l'è poscibbile creâ manoalmente l'utença d'accesso web e fornî solo quell'account (s'o g'ha e aotorizaçioin necessaie pe creâ i ogetti do schema) ò fornî doe utençe despæge, un-a co-i permissi de creaçion e un-a pe l'accesso web.\n\nO Script pe creâ un'utença co-e aotorizaçioin necessaie o se troeuva inta directory \"maintenance/oracle/\" de questa instalaçion. Tegnit'amente che l'uzo de 'n'utença con restriçioin o dizabilitiâ tutte e fonçionalitæ de manutençion con l'account predefinio.",
+       "config-db-install-account": "Account utente pe l'instalaçion",
+       "config-db-username": "Nomme utente do database:",
+       "config-db-password": "Password do database:",
+       "config-db-install-username": "Inseisci o nomme utente ch'o saiâ doeuviou pe conettise a-o database durante o processo d'installaçion.\nQuesto o no l'è o nomme utente de l'account MediaWiki; ma quello pe-o to database.",
+       "config-db-install-password": "Inseisci a password ch'a saiâ doeuviâ pe connettise a-o database into processo d'installaçion.\nQuesta a no l'è a password de l'account MediaWiki; ma quella pe-o to database.",
+       "config-db-install-help": "Insei o nomme utente e a password che saian doeuviæ pe-a conescion a-o database durante o processo d'instalaçion.",
+       "config-db-account-lock": "Doeuvia o mæximo nomme utente e password durante o normale fonçionamento",
+       "config-db-wiki-account": "Account utente pe-o normale fonçionamento",
+       "config-db-wiki-help": "Insei o nomme utente e a password che saiâ doeuviou pe connettise a-o database durante o normale fonçionamento da wiki.\nSe l'account o no l'existe, e l'account d'instalaçion o g'ha assæ privileggi, st'account utente o saiâ creou con privileggi minnimi necessai pe operâ in sciâ wiki.",
+       "config-db-prefix": "Prefisso da tabella do database:",
+       "config-db-prefix-help": "Se ti g'hæ de bezoeugno de condividde un database tra ciu wiki, ò tra MediaWiki e un'atra apricaçion web, ti poeu çerne d'azonze un prefisso a tutti i nommi de tabella, pe evitâ confliti.\nNo doeuviâ spaççi.\n\nA l'uzo sto campo o l'è lasciou voeuo.",
+       "config-mysql-old": "L'è necessaio MySQL $1 ò 'na verscion succesciva. Ti ti g'hæ a $2.",
+       "config-db-port": "Porta do database:",
+       "config-db-schema": "Schema pe MediaWiki:",
+       "config-db-schema-help": "Questo schema in genere o l'aniâ ben.\nCangilo solo se t'ê seguo de doveilo fâ.",
+       "config-pg-test-error": "Imposcibbile conettise a-o database '''$1''': $2",
+       "config-sqlite-dir": "Cartella dæti de SQLite:",
+       "config-sqlite-dir-help": "SQLite o memorizza tutti i dæti inte 'n unnico file.\n\nA directory che t'indichiæ a dev'ese scrivibile da-o serviou web durante l'instalaçion.\n\nA dev'ese <strong>non acescibbile via web</strong>, l'è pe questo che no a mettemmo donde gh'è i file PHP.\n\nL'instalou o ghe scriviâ insemme un file <code>.htaccess</code>, ma se o tentativo o falisse quarcun poriæ avei accesso a-o database sgroeuzzo.\nQuesto o l'includde di dæti utente sgroeuzzi (adressi, password çiffræ) coscì comme de vercsioin eliminæ e atri dæti a accesso limitou da wiki.\n\nConsciddera a-a dreitua l'oportunitæ d'alugâ o database da quarch'atra parte, prezempio in <code>/var/lib/mediawiki/tuowiki</code>.",
+       "config-oracle-def-ts": "Tablespace pe difetto:",
+       "config-oracle-temp-ts": "Tablespace tempoannio:",
+       "config-type-mysql": "MySQL (ò compatibbile)",
+       "config-type-mssql": "Microsoft SQL Server",
+       "config-support-info": "MediaWiki o supporta i seguenti scistemi de database:\n\n$1\n\nSe fra quelli elencæ chì de sotta no ti veddi o scistema de database che ti voriesci doeuviâ, segui e instruçioin inganciæ de d'ato pe abilitâ o supporto.",
+       "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] a l'è a primma scelta pe MediaWiki e a l'è quella megio suportâ. MediaWiki a fonçion-a ascì con [{{int:version-db-mariadb-url}} MariaDB] e [{{int:version-db-percona-url}} Percona Server], che son compatibbili con MySQL.([http://www.php.net/manual/en/mysqli.installation.php Comme compilâ PHP con suporto MySQL])",
+       "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] o l'è un popolare scistema de database open source comme alternativa a MySQL. ([http://www.php.net/manual/en/pgsql.installation.php Comme compilâ PHP con suporto PostgreSQL])",
+       "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] o l'è un scistema de database leggio, ch'o l'è suportou molto ben. ([http://www.php.net/manual/en/pdo.installation.php Comme compilâ PHP con suporto SQLite], o l'utilizza PDO)",
+       "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] o l'è un database de un'impreiza comerciâ. ([http://www.php.net/manual/en/oci8.installation.php Comme compilâ PHP con suporto OCI8])",
+       "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] o l'è un database de un'impreiza commerciâ per Windows. ([http://www.php.net/manual/en/sqlsrv.installation.php Comme compilâ PHP con supporto SQLSRV])",
+       "config-header-mysql": "Impostaçioin MySQL",
+       "config-header-postgres": "Impostaçioin PostgreSQL",
+       "config-header-sqlite": "Impostaçioin SQLite",
+       "config-header-oracle": "Impostaçioin Oracle",
+       "config-header-mssql": "Impostaçioin do Microsoft SQL Server",
+       "config-invalid-db-type": "Tipo de database non vallido",
+       "config-missing-db-name": "Ti g'hæ da mettighe un valô pe \"{{int:config-db-name}}\".",
+       "config-missing-db-host": "Ti g'hæ da mettighe un valô pe \"{{int:config-db-host}}\".",
+       "config-missing-db-server-oracle": "L'è necessaio inmettere un valô pe \"{{int:config-db-host-oracle}}\".",
+       "config-invalid-db-server-oracle": "TNS database \"$1\" non vallido.\nAdoeuvia \"TNS Name\" ò 'na stringa \"Easy Connect\" ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Oracle Naming Methods]).",
+       "config-invalid-db-name": "Nomme de database \"$1\" non vallido.\nAdoeuvia solo che di caratteri ASCII comme lettie (a-z, A-Z), nummeri (0-9), sottoliniatua (_) e trattin (-).",
+       "config-invalid-db-prefix": "Prefisso database \"$1\" non vallido.\nChe ti doeuvi solo di caratteri ASCII comme lettie (a-z, A-Z), nummeri (0-9), sottoliniatua (_) e trattin (-).",
+       "config-connection-error": "$1.\n\nControlla l'host, o nomme utente e a password, e proeuva torna.",
+       "config-invalid-schema": "Schema MediaWiki \"$1\" non vallido.\nChe ti doeuvi solo lettie ASCII (a-z, A-Z), nummeri (0-9) ò caratteri de sottoliniatua (_).",
+       "config-db-sys-create-oracle": "O programma d'instalaçion o suporta solo l'utilizzo de 'n account SYSDBA pe-a creaçion de 'n noeuvo account.",
+       "config-db-sys-user-exists-oracle": "L'utença \"$1\" a l'existe za. SYSDBA o poeu vese doeuviou solo che pe-a creaçion de 'na noeuva utença!",
+       "config-postgres-old": "Ghe voeu MySQL $1 ò 'na verscion succesciva. Ti ti g'hæ a $2.",
+       "config-mssql-old": "Ghe voeu Microsoft SQL Server $1 ò succescivo. Ti ti g'hæ a verscion $2.",
+       "config-sqlite-name-help": "Çerni un nomme ch'o l'identiffiche a to wiki.\nNo doeuviâ spaÇçi ò trattin.\nQuesto o serviâ pe-o nomme do file di dæti SQLite.",
+       "config-sqlite-parent-unwritable-group": "No se poeu creâ a directory dæti <code><nowiki>$1</nowiki></code>, percose a directory supeiô <code><nowiki>$2</nowiki></code> a no l'è scrivibbile da-o webserver.\n\nO programma d'instalaÇion o l'ha determinou l'utente con chi o serviou web o l'è in esecuçion.\nDagghe a poscibilitæ de scrive inta directory <code><nowiki>$3</nowiki></code> pe continoâ.\nInsce un scistema Unix/Linux fanni:\n\n<pre>cd $2\nmkdir $3\nchgrp $4 $3\nchmod g+w $3</pre>",
+       "config-sqlite-parent-unwritable-nogroup": "No se poeu creâ a directory dæti <code><nowiki>$1</nowiki></code>, percose a directory supeiô <code><nowiki>$2</nowiki></code> a no l'è scrivibbile da-o webserver.\n\nO programma d'instalaçion o no l'ha posciuo determinâ l'utente con chi o serviou web o l'è in esecuçion.\nRendi a directory <code><nowiki>$3</nowiki></code> scrivibbile globalmente, da esso (e da atri) pe continoâ.\nInsce un scistema Unix/Linux fanni:\n\n<pre>cd $2\nmkdir $3\nchmod a+w $3</pre>",
+       "config-sqlite-mkdir-error": "Errô durante a creaçion da directory dæti \"$1\".\nControlla a poxiçion e proeuva torna.",
+       "config-sqlite-dir-unwritable": "Imposcibile scrive inta directory \"$1\".\nCangia i aotoizaçioin de mainea che o webserver o ghe  posse scrive e proeuva torna.",
+       "config-sqlite-connection-error": "$1.\n\nControlla a directory dæti e o nomme do database chì de sotta, e proeuva torna.",
+       "config-sqlite-readonly": "O file <code>$1</code> o no l'è scrivibbile.",
+       "config-sqlite-cant-create-db": "Imposcibile creâ o file do database <code>$1</code> .",
+       "config-sqlite-fts3-downgrade": "A-o PHP gh'amanca o suporto FTS3, declassamento tabelle in corso",
+       "config-can-upgrade": "Gh'è de tabelle da MediaWiki in questo database.\nPe agiornâle a MediaWiki $1, clicca insce '''continnoa'''.",
+       "config-upgrade-done": "Agiornamento completo.\n\nAoa ti poeu [$1 començâ a doeuviâ a to wiki].\n\nSe t'oeu rigenerâ o to file <code>LocalSettings.php</code>, clicca in sciô pomello de sotta. Questa opiaçion '''a no l'è racomandâ''', a meno che no ti gh'aggi di problemi co-a to wiki.",
+       "config-upgrade-done-no-regenerate": "Agiornamento completo.\n\nAoa ti poeu [$1 començâ a doeuviâ a to wiki].",
+       "config-regenerate": "Rigennera LocalSettings.php →",
+       "config-show-table-status": "A query <code>SHOW TABLE STATUS</code> a l'è fallia!",
+       "config-unknown-collation": "'''Atençion:''' o database o doeuvia de reggole de confronto non riconosciue.",
+       "config-db-web-account": "Account do database pe l'acesso web",
+       "config-db-web-help": "Seleçion-a o nomme utente e a password che o serviou web o l'adoeuviâ pe conettise a-o serviou de database, durante o normale fonçionamento da wiki.",
+       "config-db-web-account-same": "Doeuvia o mæximo account de l'instalaçion",
+       "config-db-web-create": "Crea l'account s'o no l'existe ancon",
+       "config-db-web-no-create-privs": "L'account doeuviou pe l'installaçion o no dispon-e di privileggi necessai pe creâ un atro account.\nL'account indicou chì o deve za existe.",
+       "config-mysql-engine": "Motô d'archiviaçion:",
+       "config-mysql-innodb": "InnoDB",
+       "config-mysql-myisam": "MyISAM",
+       "config-mysql-myisam-dep": "<strong>Atençion:</strong> t'hæ seleçionou MyISAM comme motô d'archiviaçion pe MySQL, ch'o no l'è racomandou pe l'uso con  MediaWiki, percose:\n* o supporta debolmente a concorença pe-o blocco da tabella\n* o l'è ciu inclinou a-a corruçion di atri motoî\n* o codiçe de base MediaWiki o no gestisce sempre MyISAM comm'o doviæ\n\nSe a to instalaçion MySQL a supporta InnoDB, l'è atamente racomandou che ti o çerni a-o so posto.\nSe a to installaçion MySQL a no supporta InnoDB, foscia l'è o momento pe 'n agiornamento.",
+       "config-mysql-only-myisam-dep": "<strong>Atençion:</strong> MyISAM o l'è l'unnico motô d'archiviaçion disponibbile pe MySQL insce sta macchina, e questo no l'è consegiou pe doeuviâlo con MediaWiki, percose:\n* o supporta debolmente a concorenza pe-o blocco da tabella\n* o l''è ciu inclinou a-a corruçion di atri motoî\n* o coddiçe de base MediaWiki MyISAM  o no-o gestisce sempre comm'o doviæ\n\nS'a to installaçion MySQL a no supporta InnoDB, foscia l'è o momento pe 'n agiornamento.",
+       "config-mysql-engine-help": "<strong>InnoDB</strong> o l'è quæxi sempre a megio opçion, in quante o g'ha 'n bon supporto da concorença.\n\n<strong>MyISAM</strong> o poriæ vese ciu veloçe inte installaçioin mono-utente ò in sola-lettua.\nI database MyISAM tendan a dannezâse ciu soventi di database InnoDB.",
+       "config-mysql-charset": "Set di caratteri do database:",
+       "config-mysql-binary": "Binaio",
+       "config-mysql-utf8": "UTF-8",
+       "config-mysql-charset-help": "In <strong>modalitæ binaia</strong>, MediaWiki a l'archivvia o testo UTF-8 into database in campi binai.\nQuest'o l'è ciu efficaçe che a modalitæ UTF-8 do MySQL, e o consente de doeuviâ a gamma completa de caratteri Unicode.\n\nIn <strong>modalitæ UTF-8</strong>, MySQL o saviâ inte quæ set de caratteri l'è che son i to dæti, e o poriâ presentâli e convertîli in moddo apropiou, ma o no te permetiâ de memorizâ i caratteri de d'ato a-o [https://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Cian de base murtilenguistego].",
+       "config-mssql-auth": "Tipo d'aotenticaçion:",
+       "config-mssql-install-auth": "Seleçion-a o tipo d'aotenticaçion ch'o saiâ doeuviou pe conettise a-o database durante o processo de instalaçion.\nSe ti seleçion-i \"{{int:config-mssql-windowsauth}}\", saiâ doeuviou e credençiæ de quæ se segge utente segge aproeuv'a fâ giâ o serviou web.",
+       "config-mssql-web-auth": "Seleçion-a o tipo d'aotenticaçion che o serviou web o doeuviâ pe conettise a-o database. \nSe ti seleçion-i \"{{int:config-mssql-windowsauth}}\", saiâ doeuviou e credençiæ de quæ se segge utente segge aproeuv'a fâ giâ o serviou web.",
+       "config-mssql-sqlauth": "Aotenticaçion de SQL Server",
+       "config-mssql-windowsauth": "Aotenticaçion de Windows",
+       "config-site-name": "Nomme da wiki:",
+       "config-site-name-help": "Questo saiâ vixualizou inta bara do tittolo do navegatô e in atri varri recanti.",
+       "config-site-name-blank": "Inseisci o nomme de 'n scito.",
+       "config-project-namespace": "Namespace do progetto:",
+       "config-ns-generic": "Progetto",
+       "config-ns-site-name": "Pægio che o nomme do wiki: $1",
+       "config-ns-other": "Atro (specificâ)",
+       "config-ns-other-default": "MyWiki",
+       "config-project-namespace-help": "Aproeuvo a l'exempio da Wikipedia, molte wiki tegnan e so paggine co-e reggole separæ da-e paggine de contegnuo, inte 'n '''namespace de progetto'''.\nTutti i tittoli de paggine inte sto namespace començan co-in çerto prefisso, che ti poeu indicâ chie.\nA l'uzo, sto prefisso o deriva da-o nomme da wiki, ma o no poeu contegnî di caratteri de pontezatua comme \"#\" ò \":\".",
+       "config-ns-invalid": "O namespace indicou \"<nowiki>$1</nowiki>\" o no l'è vallido.\nSpecificâ un despægio namespace de progetto.",
+       "config-ns-conflict": "O namespace indicou \"<nowiki>$1</nowiki>\" o l'è in conflito co-in namespace predefinio MediaWiki.\nSpecificâ un despægio namespace de progetto.",
+       "config-admin-box": "Account amministratô",
+       "config-admin-name": "O to nomme utente:",
+       "config-admin-password": "Poula segretta:",
+       "config-admin-password-confirm": "Ripeti a poula segretta:",
+       "config-admin-help": "Inseisci chì o to nomme utente prefeio, presempio \"Giobatta Parodi\".\nSto chì o l'è o nomme che ti doeuviæ pe acede a-a wiki.",
+       "config-admin-name-blank": "Inseisci un nomme pe l'aministratô.",
+       "config-admin-name-invalid": "O nomme utente indicou \"<nowiki>$1</nowiki>\" o no l'è vallido.\nSpecificâ un nomme utente despægio.",
+       "config-admin-password-blank": "Inseisci 'na password pe l'account d'aministratô.",
+       "config-admin-password-mismatch": "E doe password inseie no corispondan.",
+       "config-admin-email": "Adresso e-mail:",
+       "config-admin-email-help": "Inseisci chì 'n adresso e-mail pe poei riçeive di e-mail da-i atri utenti da wiki, rimpostâ a to password, e vese informou de modiffiche aportæ a-e to paggine sotta oservaçion. Se no te interessa, ti poeu lasciâ voeuo questo campo.",
+       "config-admin-error-user": "Erô interno durante a creaçion de 'n aministratô co-o nomme \"<nowiki>$1</nowiki>\".",
+       "config-admin-error-password": "Erô interno durante l'impostaçion de 'na password pe aministratô \"<nowiki>$1</nowiki>\": <pre>$2</pre>",
+       "config-admin-error-bademail": "T'hæ inseio un adresso e-mail non vallido.",
+       "config-subscribe": "Sottoscrivi a [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce mailing list di anonçi de release].",
+       "config-subscribe-help": "Se tratta de 'na mailing list a basso traffego dedicâ a-i anonçi de sciortie de noeuve verscioin, compreize de importante segnalaçioin pe-a segueçça.\nSe conseggia de inscrivise e agiornâ a proppia instalaçion de MediaWiki quande sciorte 'na noeuva verscion.",
+       "config-subscribe-noemail": "T'hæ provou a inscrivite a-a mailing list dedicâ a-i anonçi de noeuve verscioin sença fornî un adresso e-mail.\nInseisci un adresso e-mail se ti dexidei efetoâ l'inscriçion a-a mailing list.",
+       "config-pingback": "Condividdi i dæti insce questa installaçion co-i svilupatoî da MediaWiki.",
+       "config-pingback-help": "Se ti seleçion-i questa opçion, MediaWiki a contattiâ periodicamente https://www.mediawiki.org co-i dæti base insce questa instançia MediaWiki. Queta categoria de dæti a l'includde, prexempio, o tipo de scistema, a verscion de PHP e o database de backend çernuo. A Wikimedia Foundation a condividde questi dæti co-i sviluppatoî Mediawiki pe agiutâla a guidâ i futuri sforsci de sviluppo. Pe-o to scistema saiâ inviou i seguenti dæti:\n<pre>$1</pre>",
+       "config-almost-done": "T'hæ quæxi a tio!\nAoa ti poeu sâtâ a restante parte da configuaçion e instalâ a wiki subbito.",
+       "config-optional-continue": "Famme di atre domande.",
+       "config-optional-skip": "Son za stuffo, installa a wiki e basta.",
+       "config-profile": "Profî di driti utente:",
+       "config-profile-wiki": "Wiki averta",
+       "config-profile-no-anon": "Creaçion utença obrigatoia",
+       "config-profile-fishbowl": "Solo utenti aotorizæ",
+       "config-profile-private": "Wiki privâ",
+       "config-profile-help": "E wiki fonçion-an megio se ti permetti a tante person-e de poeili modificâ.\nIn MediaWiki, l'è sempliçe controlâ i urtime modiffiche, e ripristinâ i danni caosæ da di utenti inesperti ò malintençionæ.\n\nTuttavia, tanti han trovou a MediaWiki uttile inte 'n'ampia varietæ de rolli, e de volte no l'è faççile convinçe tutti di vantaggi da modalitæ wiki.\nPerciò, fanni a to scelta.\n\nO modello <strong>{{int:config-profile-wiki}}</strong> o consente a chi se segge de modificâ, anche sença efetoâ l'acesso.\nUna wiki con <strong>{{int:config-profile-no-anon}}</strong> a l'ofre 'na magiô responsabilitæ, ma a poriæ scoragî i contributoî ocaxonæ.\n\nO scenario <strong>{{int:config-profile-fishbowl}}</strong> o consente a-i utenti aotorizæ de modificâ, ma o pubbrico o poeu vixualizâ e paggine, compreiso a cronologia.\nUn <strong>{{int:config-profile-private}}</strong> o consente solo ch'a-i utenti aotorizæ de vixualizâ e paggine, o mæximo groppo o poeu modificâle.\n\nDe configuaçioin di driti utente ciu complesse son disponibbile doppo l'instalaçion, amia a  [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights parte relativa do manoâ].",
+       "config-license": "Driti d'aotô e liçençia:",
+       "config-license-none": "Nisciun pê de paggina pe-a liçençia",
+       "config-license-cc-by-sa": "Creative Commons Attribuçion-Condividdi pægio",
+       "config-license-cc-by": "Creative Commons Attribuçion",
+       "config-license-cc-by-nc-sa": "Creative Commons Attribuçion-Non comerciale-Condividdi Pægio",
+       "config-license-cc-0": "Creative Commons Zero (pubbrico dominnio)",
+       "config-license-gfdl": "GNU Free Documentation License 1.3 o verscioin sucescive",
+       "config-license-pd": "Pubbrico dominnio",
+       "config-license-cc-choose": "Seleçion-a un-a de liçençie Creative Commons",
+       "config-license-help": "Tante wiki pubbriche rilascian i so contributi co-ina [http://freedomdefined.org/Definition liçençia libbera]. Sto fæto o l'agiutta a creâ un senso de propietæ condivisa inta comunitæ e o l'incoragisce a contriboî a longo termine. O no l'è generalmente necessaio pe 'na wiki privâ ò aziendale.\n\nSe ti voeu doeuviâ di scriti da Wikipedia, ò ti dexiddei che a Wikipedia a posse vese in graddo de acetâ di scriti copiæ da-a to wiki, ti doviesci scellie <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nIn precedença a Wikipedia a l'ha doeuviou a GNU Free Documentation License. A GFDL a l'è 'na liçençia vallida, ma a l'è difiççile da capî e a complica o riutilizzo di contegnui.",
+       "config-email-settings": "Impostaçioin e-mail",
+       "config-enable-email": "Abillita a sciortia da posta elettronica",
+       "config-enable-email-help": "Se ti voeu che fonçion-e l'e-mail, e [http://www.php.net/manual/en/mail.configuration.php PHP's impostaçioin della posta] dev'esan configuæ corettamente.\nSe non ti dexiddei arcun-a fonçionalitæ de posta eletronnica, ti a poeu disabilitâ chie.",
+       "config-email-user": "Abillita e-mail fra utenti",
+       "config-email-user-help": "Consente a tutti i utenti de inviâse l'un l'atro l'e-mail, se l'han abilitou inte so preferençe.",
+       "config-email-usertalk": "Abillita e notiffiche pe-e paggine de discuscion utente",
+       "config-email-usertalk-help": "Consente a-i utenti de riçeive de notiffiche pe-e modiffiche de so paggine de discuscion, se l'han abilitou inte so preferençe.",
+       "config-email-watchlist": "Abillita e notiffiche pe-a lista sott'oservaçion",
+       "config-email-watchlist-help": "Consente a-i utenti de riçeive de notiffiche pe-e pagine da lista sott'oservaçion, se l'han abilitou inte so preferençe.",
+       "config-email-auth": "Abillita aotenticaçion via e-mail",
+       "config-email-auth-help": "Se questa opçion a l'è attivâ, i utenti dovian confermâ o so adresso e-mail doeouviando un ingancio ch'o ven inviou ogni votta che l'impostan ò o cangian.\nSolo i adressi de posta elettronica aotenticæ poeuan riçeive de e-mail da di atri utenti ò cangiâ e e-mail de notiffica.\nImpostâ st'opçion l'è <strong>raccomandou</strong> pe-e wiki pubbriche pe via do potençiale abuso dee fonçioin de posta elettronica.",
+       "config-email-sender": "Adresso e-mail de ritorno:",
+       "config-email-sender-help": "Inseisci l'adresso e-mail da doeuviâ comme adresso de ritorno pe-a posta ch'a sciorte.\nChì l'è donde ghe saiâ inviou i eventoali eroî.\nMolti server de posta richiedan che armeno a parte do nomme de dominnio a segge vallida.",
+       "config-upload-settings": "Caregamenti de inmaggine e file",
+       "config-upload-enable": "Consentî o caregamento di file",
+       "config-upload-help": "O caregamento di file o poriæ espon-e o to serviou a di reizeghi de segueçça.\nPe magioî informaçioin, lezi a  [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security seçion in sciâ segueçça] into manoâ.\n\nPe consentî o caregamento di file, modiffica a modalitæ inta sottodirectory <code>images</code> da directory prinçipâ da MediaWiki coscì che o serviou web o posse scrive lì.\nPoi attiva questa opçion.",
+       "config-upload-deleted": "Directory pe-i file scassæ:",
+       "config-upload-deleted-help": "Çerni 'na directory onde archiviâ i file scassæ.\nIdealmente, questa a no doviæ ese accescibbile da-o web.",
+       "config-logo": "URL do logo:",
+       "config-logo-help": "O tema predefinio da MediaWiki o l'includde o spaççio pe 'n logo de 135 x 160 pixel sorve o menù laterâ.\nCarrega 'n'inmaggine de dimenscioin apropiæ e inseisci l'URL chie.\n\nL'è poscibbile doeuviâ <code>$wgStylePath</code> o <code>$wgScriptPath</code> se o logo o l'è relativo a sti percorsci.\n\nSe un logo no ti o voeu, lascia sta casella voeua.",
+       "config-instantcommons": "Abillita Instant Commons",
+       "config-instantcommons-help": "[https://www.mediawiki.org/wiki/InstantCommons Instant Commons] a l'è 'na fonçionalitæ ch'a consente a-i wiki de doeuviâ inmaggine, soin e atri file murtimediæ ch'atroæ 'n sciô scito [https://commons.wikimedia.org/ Wikimedia Commons].\nPe fâ questo, a MediaWiki a richiede l'accesso a l'Internet.\n\nPe ciu informaçioin insce sta fonçionalitæ, con tanto de instruçioin sciu comme configuâlo pe de wiki despæge da-a Wikimedia Commons, consurtæ [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos o manoâ].",
+       "config-cc-error": "O selettô de liçençie Creative Commons o no l'ha reizo arcun resultato.\nInseisci manoalmente o nomme da liçençia.",
+       "config-cc-again": "Çerni torna...",
+       "config-cc-not-chosen": "Çerni quæ liçençia Creative Commons ti voeu e sciacca \"proceed\".",
+       "config-advanced-settings": "Configuaçion avançâ",
+       "config-cache-options": "Impostaçioin pe-a cache di ogetti:",
+       "config-cache-help": "A memorizaçion di ogetti inta cache a serve pe fâ anâ ciu fito a MediaWiki sarvando inta cache i dæti che ti doeuvi soventi.\nPe di sciti de dimenscioin mezan-e e grende l'è cadamente consegiou attivâ a cache, ma pe-i piccin ascì se ne vediâ i benefiççi.",
+       "config-cache-none": "Nisciun-a memorizaçion inta cache (nisciun-a fonçionalitæ a l'è impedia, ma in scî sciti wiki ciu grendi a veloçitæ a poriæ risentîne)",
+       "config-cache-accel": "Mette in cache ogetti PHP (APC, APCu, XCache ò WinCache)",
+       "config-cache-memcached": "Doeuvia Memcached (a richiede urteioî attivitæ de instalaçion e configuaçion)",
+       "config-memcached-servers": "Serviou de Memcached:",
+       "config-memcached-help": "Lista de adressi IP da doeuviâ pe Memcached.\nTi doviesci specificâne un pe riga e indicâ a porta da doeuviâ. Presempio:\n 127.0.0.1:11211\n 192.168.1.25:1234",
+       "config-memcache-needservers": "L'è stæto seleçionou o tipo de caching Memcached, ma no l'è stæto impostou arcun serviou.",
+       "config-memcache-badip": "L'è stæto inseio un adresso IP non vallido pe Memcached: $1.",
+       "config-memcache-noport": "Non l'è stæto specificou 'na porta da doeuviâ pe-o serviou Memcached: $1.\nSe no ti sæ quæ a l'è a porta, o valô pe difetto o l'è 11211.",
+       "config-memcache-badport": "I nummeri de porta pe Memcached dovieivan ese tra $1 e $2.",
+       "config-extensions": "Estenscioin",
+       "config-extensions-help": "I estenscioin elencæ de d'ato son stæte rilevæ inta to directory <code>./extensions</code>.\n\nQueste poririvan richiede 'n urteiô configuaçion, ma l'è poscibbile attivâle aoa",
+       "config-skins": "Pelle",
+       "config-skins-help": "E pelle elencæ de d'ato son stæte rilevæ inta to directory <code>./skins</code>. Ti devi attivâne aomanco un-a e scellie quella predefinia.",
+       "config-skins-use-as-default": "Doeuvia sta pelle comme predefinia",
+       "config-skins-missing": "No l'è stæto trovou arcun-a pelle; a MediaWiki a l'adoeuviâ 'na soluçion de ripiego pe scin che no ti ne instaliæ un-a apropiâ.",
+       "config-skins-must-enable-some": "Ti devi çerne armeno 'na pelle da attivâ.",
+       "config-skins-must-enable-default": "A pelle çernua comme predefinia a dev'ese attivâ.",
+       "config-install-alreadydone": "'''Attençion:''' pâ che t'aggi za instalou a MediaWiki e ti çerchi de instalâla torna.\nProcedi a-a paggina succesciva.",
+       "config-install-begin": "Sciacando \"{{int:config-continue}}\", t'inçiæ l'instalaçion da MediaWiki.\nSe primma ti voesci fâ di atri cangiamenti, premmi \"{{int:config-back}}\".",
+       "config-install-step-done": "fæto",
+       "config-install-step-failed": "no ariescio",
+       "config-install-extensions": "Estenscioin compreize",
+       "config-install-database": "Configuaçion do database",
+       "config-install-schema": "Creaçion do schema",
+       "config-install-pg-schema-not-exist": "O schema PostgreSQL o no l'existe.",
+       "config-install-pg-schema-failed": "Creaçion tabelle non riuscia.\nAsseguite che l'utente \"$1\" o posse scrive into schema \"$2\".",
+       "config-install-pg-commit": "Commetti i cangiamenti",
+       "config-install-pg-plpgsql": "Controllo do lenguaggio PL/pgSQL",
+       "config-pg-no-plpgsql": "Bezoeugna che t'installi o lenguaggio PL/pgSQL into database $1",
+       "config-pg-no-create-privs": "L'utença indicâ pe l'instalaçion a no dispon-e di privileggi necessai pe creâ 'n'utença.",
+       "config-pg-not-in-role": "L'utença indicâ pe l'utente web a l'existe za.\nL'utença indicâ pe l'instalaçion a no l'è un super-utente e a no l'è un membro do rollo di utenti web, quindi a no l'è in graddo de creâ di ogetti de propietæ de l'utente web.\n\nMediaWiki atoalmente a richiede che e tabelle seggian de propietæ de l'utente web. Indica 'n atro account web, ò clicca \"inderê\" e speciffica un utente pe l'instalaçion oportunamente privilegiou.",
+       "config-install-user": "Creaçion de utente do database",
+       "config-install-user-alreadyexists": "L'utente $1 o l'existe za.",
+       "config-install-user-create-failed": "Creaçion de l'utente \"$1\" no ariescia: $2",
+       "config-install-user-grant-failed": "Erô durante a concescion de l'aotorizaçion a l'utente \"$1\": $2",
+       "config-install-user-missing": "L'utente indicou \"$1\" o no l'existe.",
+       "config-install-user-missing-create": "L'utente indicou \"$1\" o no l'existe.\nSeleçion-a a casella \"crea utença\" chì de sotta, se ti a voeu creâ.",
+       "config-install-tables": "Creaçion tabelle",
+       "config-install-tables-exist": "'''Atençion:''' pâ che e tabelle da MediaWiki ghe seggian za.\nSato a creaçion.",
+       "config-install-tables-failed": "'''Erô''': a creaçion da tabella a no l'è ariescia: $1",
+       "config-install-interwiki": "Impimento da tabella interwiki predefinia",
+       "config-install-interwiki-list": "Imposcibbile leze o file <code>interwiki.list</code>.",
+       "config-install-interwiki-exists": "'''Atençion:''' pâ che inta tabella interwiki ghe segge za di elementi.\nA lista predefinia a se sata.",
+       "config-install-stats": "Iniçializaçion de statisteghe",
+       "config-install-keys": "Generaçion de ciave segrette",
+       "config-insecure-keys": "'''Atençion:''' {{PLURAL:$2|Una ciave segûa|De ciave segûe}} ($1) {{PLURAL:$2|generâ|generæ}} durante l'instalaçion {{PLURAL:$2|a|}} no {{PLURAL:$2|l'è|son}} completamente {{PLURAL:$2|segûa|segûe}}. Consciddera de cangiâ{{PLURAL:$2|la|le}} manoalmente.",
+       "config-install-updates": "Impedî l'esecuçion di agiornamenti non necessai",
+       "config-install-updates-failed": "<strong>Erô:</strong> l'inseimento de ciave de agiornamento inte tabelle o no l'è ariescio pe-o seguente erô: $1",
+       "config-install-sysop": "Creaçion de l'utença pe l'aministratô",
+       "config-install-subscribe-fail": "Imposcibbile sottoscrive mediawiki-announce: $1",
+       "config-install-subscribe-notpossible": "cURL o no l'è instalou e <code>allow_url_fopen</code> o no l'è disponibbile.",
+       "config-install-mainpage": "Creaçion da paggina prinçipâ con contegnuo predefinio",
+       "config-install-mainpage-exists": "A paggina prinçipâ a l'existe za, ignorou",
+       "config-install-extension-tables": "Creaçion de tabelle pe i estenscioin attivæ",
+       "config-install-mainpage-failed": "Imposcibbile insei a paggina prinçipâ: $1",
+       "config-install-done": "<strong>Complimenti!</strong>\nT'hæ instalou MediaWiki.\n\nO programma d'instalaçion o l'ha generou un file <code>LocalSettings.php</code> ch'o conten tutte e impostaçioin.\n\nTi devi scaregâlo e inseilo inta directory base da to wiki (a mæxima dovve gh'è index.php). O download o doviæ partî aotomaticamente.\n\nSe o download o no s'inandia, ò s'o l'è stæto annulou, ti poeu ricomençâ clicando in sce l'ingancio chì aproeuvo:\n\n$3\n\n<strong>Notta:</strong> se ti sciorti aoa da l'installaçion sença scaregâ o file de configuaçion ch'o l'è stæto generou, questo doppo o no saiâ ciu disponibbile.\n\nQuande t'hæ fæto, ti poeu <strong>[$2 intrâ inta to wiki]</strong>.",
+       "config-install-done-path": "<strong>Complimenti!</strong>\nT'hæ instalou MediaWiki.\n\nO programma d'instalaçion o l'ha generou un file <code>LocalSettings.php</code> ch'o conten tutte e impostaçioin.\n\nTi devi scaregâlo e inseilo in <code>$4</code>. O download o doviæ partî aotomaticamente.\n\nSe o download o no s'inandia, ò s'o l'è stæto annulou, ti poeu inandiâlo torna clicando in sce l'ingancio chì de sotta:\n\n$3\n\n<strong>Notta:</strong> se ti sciorti aoa da l'installaçion sença scaregâ o file de configuaçion ch'o l'è stæto generou, questo doppo o no saiâ ciu disponibbile.\n\nQuande t'hæ fæto, ti poeu <strong>[$2 intrâ inta to wiki]</strong>.",
+       "config-download-localsettings": "Scarega <code>LocalSettings.php</code>",
+       "config-help": "agiutto",
+       "config-help-tooltip": "clicca pe espande",
+       "config-nofile": "O file \"$1\" o no poeu vese atrovou. O l'è stæto eliminou?",
+       "config-extension-link": "Ti o saveivi che o to wiki o suporta i  [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions estenscioin]?\n\nTi poeu navegâ tra i [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category estenscioin pe categoria].",
+       "mainpagetext": "<strong>MediaWiki o l'è stæto instalou.</strong>",
+       "mainpagedocfooter": "Consurta a [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents guidda utente] pe ciu informaçioin in sce l'uso de questo software wiki.\n\n== Pe començâ ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Impostaçioin de configuaçion]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Domande frequente sciu MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list anonçi MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Troeuva MediaWiki inta to lengoa]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Imprendi a combatte o spam in sciâ to wiki]"
 }
index 23f3de1..671d073 100644 (file)
@@ -29,6 +29,7 @@
        "config-env-hhvm": "HHVM $1 ir uzstādīts.",
        "config-apcu": "[http://www.php.net/apcu APCu] ir uzstādīts",
        "config-diff3-bad": "GNU diff3 nav atrasts.",
+       "config-db-host-oracle": "Datubāzes TNS:",
        "config-db-name": "Datubāzes nosaukums:",
        "config-db-username": "Datubāzes lietotājvārds:",
        "config-db-password": "Datubāzes parole:",
index b8dab21..728a9a8 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Bjankuloski06",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Srdjan m"
                ]
        },
        "config-desc": "Воспоставувачот на МедијаВики",
@@ -58,7 +59,7 @@
        "config-pcre-old": "'''Кобно:''' Се бара PCRE $1 или понова верзија.\nВашиот PHP-бинарен е сврзан со PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Повеќе информации].",
        "config-pcre-no-utf8": "<strong>Кобно</strong>: PCRE-модулот на PHP е срочен без поддршка за PCRE_UTF8.\nМедијаВики бара поддршка за UTF-8 за да може да работи правилно.",
        "config-memory-raised": "<code>memory_limit</code> за PHP изнесува $1, зголемен на $2.",
-       "config-memory-bad": "'''Предупредување:''' <code>memory_limit</code> за PHP изнесува $1.\nОва е веројатно премалку.\nВоспоставката може да не успее!",
+       "config-memory-bad": "<strong>Предупредување:</strong> <code>memory_limit</code> за PHP изнесува $1.\nОва е веројатно премалку.\nВоспоставката може да не успее!",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] е воспоставен",
        "config-apc": "[http://www.php.net/apc APC] е воспоставен",
        "config-apcu": "[http://www.php.net/apcu APCu] е воспоставен",
@@ -71,7 +72,7 @@
        "config-imagemagick": "Пронајден е ImageMagick: <code>$1</code>.\nАко овозможите подигање, тогаш ќе биде овозможена минијатуризација на сликите.",
        "config-gd": "Утврдив дека има вградена GD графичка библиотека.\nАко овозможите подигање, тогаш ќе биде овозможена минијатураизација на сликите.",
        "config-no-scaling": "Не можев да пронајдам GD-библиотека или ImageMagick.\nМинијатуризацијата на сликите ќе биде оневозможена.",
-       "config-no-uri": "'''Грешка:''' Не можев да го утврдам тековниот URI.\nВоспоставката е откажана.",
+       "config-no-uri": "<strong>Грешка:</strong> Не можев да го утврдам тековниот URI.\nВоспоставката е откажана.",
        "config-no-cli-uri": "'''Предупредување''': Нема наведено <code>--scriptpath</code>. Ќе се користи основниот: <code>$1</code>.",
        "config-using-server": "Користите опслужувач под името „<nowiki>$1</nowiki>“.",
        "config-using-uri": "Користите опслужувач со URL-адреса „<nowiki>$1$2</nowiki>“.",
        "config-db-port": "Порта на базата:",
        "config-db-schema": "Шема за МедијаВики",
        "config-db-schema-help": "Оваа шема обично по правило ќе работи нормално.\nСменете ја само ако знаете дека треба да се смени.",
-       "config-pg-test-error": "Не можам да се поврзам со базата '''$1''': $2",
+       "config-pg-test-error": "Не можам да се поврзам со базата <strong>$1</strong>: $2",
        "config-sqlite-dir": "Папка на SQLite-податоци:",
        "config-sqlite-dir-help": "SQLite ги складира сите податоци во една податотека.\n\nПапката што ќе ја наведете мора да е запислива од мрежниот опслужувач во текот на воспоставката.\n\nТаа '''не''' смее да биде достапна преку семрежјето, и затоа не ја ставаме кајшто ви се наоѓаат PHP-податотеките.\n\nВоспоставувачот воедно ќе создаде податотека <code>.htaccess</code>, но ако таа не функционира како што треба, тогаш некој ќе може да ви влезе во вашата необработена (сирова) база на податоци.\nТука спаѓаат необработени кориснички податоци (е-поштенски адреси, хеширани лозинки) како и избришани преработки и други податоци за викито до кои се има ограничен пристап.\n\nСе препорачува целата база да ја сместите некаде, како на пр. <code>/var/lib/mediawiki/вашетовики</code>.",
        "config-oracle-def-ts": "Стандарден таблеарен простор:",
index c257481..b821846 100644 (file)
@@ -4,5 +4,56 @@
                        "محک"
                ]
        },
+       "config-information": "اطلاعات",
+       "config-localsettings-key": "آپگریت کلید:",
+       "config-your-language": "شمه زوون:",
+       "config-wiki-language": "ویکی زوون:",
+       "config-back": "→ دِگِرِستِن",
+       "config-continue": "دمباله ←",
+       "config-page-language": "زوون",
+       "config-page-welcome": "مدیاویکی ره خِش بمونی!",
+       "config-page-dbconnect": "اتصال به دیتابیس",
+       "config-page-name": "نوم",
+       "config-page-options": "تنظیمات",
+       "config-page-install": "نصب",
+       "config-page-complete": "کامل!",
+       "config-page-restart": "دِباره نصب هاکردن",
+       "config-page-readme": "مه ره ونگ هاکن",
+       "config-page-releasenotes": "انتشار یادداشتون",
+       "config-page-copying": "کپی هاکردن",
+       "config-page-upgradedoc": "آپگریت هاکردن",
+       "config-page-existingwiki": "دیی ویکی",
+       "config-help-restart": "خانی تموم اطلاعاتی که ذخیره بینه ره حذف هاکنین و اَی این صوه سَری دِباره نصب هاکردن ره شروع هاکنین؟",
+       "config-restart": "اره. دِباره",
+       "config-env-good": "محیط بررسی بیّه.\nشما توندی مدیاویکی ره نصب هاکنی.",
+       "config-env-bad": "محیط بررسی بیه.\nشما نتوندی مدیاویکی ره نصب هاکنی.",
+       "config-env-php": "پی‌اچ‌پی $1 نصب بیه.",
+       "config-env-hhvm": "اچ‌اچ‌وی‌ام $1 نصب بیه.",
+       "config-unicode-using-intl": "عادی یونیکد وسه [http://pecl.php.net/intl افزونهٔ intl برای PECL] جه استفاده هاکن.",
+       "config-memory-raised": "PHP's <code>memory_limit</code>, نسخهٔ $1 هسته، ونه نسخهٔ $2 ره بَیری آپگریت هاکنی.",
+       "config-xcache": "[http://xcache.lighttpd.net/ XCache] نصب بیه.",
+       "config-apc": "[http://www.php.net/apc APC] نصب بیه.",
+       "config-apcu": "[http://www.php.net/apcu APCu] نصب بیه.",
+       "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] نصب بیه.",
+       "config-diff3-bad": "GNU diff3 پیدا نیه.",
+       "config-mysql-binary": "باینری",
+       "config-mysql-utf8": "UTF-8",
+       "config-mssql-auth": "نوع تأیید:",
+       "config-ns-generic": "پروژه",
+       "config-ns-other": "دیگه ( تعیین هاکنین)",
+       "config-ns-other-default": "مه‌ویکی",
+       "config-admin-box": "مدیر ِکاروری حیساب",
+       "config-admin-name": "شمه کاروری نوم:",
+       "config-admin-password": "پسوُرد:",
+       "config-admin-password-confirm": "دِباره پسورد:",
+       "config-admin-password-mismatch": "دِتا پسوردی که بنویشتی اتجور نینه",
+       "config-admin-email": "ایمیل آدرس:",
+       "config-admin-error-bademail": "شمه ایمیل آدرس مشکل دارنه.",
+       "config-optional-continue": "مه جه ویشته سوال هاپرس.",
+       "config-optional-skip": "اسا خستومه، زودته ویکی ره نصب هاکن.",
+       "config-profile-wiki": "ویکی ره دیار هاکن",
+       "config-profile-private": "خصوصی ویکی",
+       "config-license-pd": "عمومی دامنه",
+       "config-email-settings": "ایمیل تنظیمات",
        "config-help": "راهنما"
 }
index a499553..ca02841 100644 (file)
        "config-unknown-collation": "'''Waarschuwing:''' de database gebruikt een collatie die niet wordt herkend.",
        "config-db-web-account": "Databaseaccount voor webtoegang",
        "config-db-web-help": "Selecteer de gebruikersnaam en het wachtwoord die de webserver gebruikt om verbinding te maken met de databaseserver na de installatie.",
-       "config-db-web-account-same": "Dezelfde account gebruiken als voor de installatie",
+       "config-db-web-account-same": "Hetzelfde account gebruiken als voor de installatie",
        "config-db-web-create": "Maak de gebruiker aan als deze nog niet bestaat",
        "config-db-web-no-create-privs": "De gebruiker die u hebt opgegeven voor de installatie heeft niet voldoende rechten om een gebruiker aan te maken.\nDe gebruiker die u hier opgeeft moet al bestaan.",
        "config-mysql-engine": "Opslagmethode:",
index 770a2a8..965c92d 100644 (file)
        "config-type-oracle": "Oracle",
        "config-type-mssql": "Microsoft SQL Server",
        "config-support-info": "O MediaWiki suporta os sistemas de banco de dados a seguir:\n\n$1\n\nSe você não vê o sistema de banco de dados que você está tentando usar listados abaixo, siga as instruções relacionadas acima, para ativar o suporte.",
+       "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] é o principal alvo para MediaWiki e é melhor suportado. O MediaWiki também funciona com [{{int:version-db-mariadb-url}} MariaDB] e [{{int:version-db-percona-url}} Percona Server], que são compatíveis com MySQL.\n ([Http://www.php.net/manual/en/mysqli.installation.php Como compilar PHP com suporte a MySQL])",
+       "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] é um popular sistema de banco de dados de código aberto como uma alternativa para o MySQL. ([http://www.php.net/manual/en/pgsql.installation.php Como compilar o PHP com suporte PostgreSQL])",
        "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] é um sistema de banco de dados leve que é muito bem suportado. ([http://www.php.net/manual/en/pdo.installation.php como compilar o PHP com suporte a SQLite], usa DOP)",
+       "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] é um banco de dados comercial de empresas. ([http://www.php.net/manual/en/oci8.installation.php Como compilar o PHP com suporte OCI8])",
+       "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] é uma banco de dados comercial do Windows para empresas. ([http://www.php.net/manual/en/sqlsrv.installation.php Como compilar o PHP com suporte SQLSRV])",
        "config-header-mysql": "Configurações MySQL",
        "config-header-postgres": "Configurações PostgreSQL",
        "config-header-sqlite": "Configurações SQLite",
        "config-missing-db-name": "Você deve inserir um valor para \"{{int:config-db-name}}\".",
        "config-missing-db-host": "Você deve inserir um valor para \"{{int:config-db-host}}\".",
        "config-missing-db-server-oracle": "Você deve inserir um valor para \"{{int:config-db-host-oracle}}\".",
+       "config-invalid-db-server-oracle": "Banco de dados TNS inválido \"$1\".\nUse \"TNS Name\" ou \"Easy Connect\" ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Métodos de nomeação da Oracle]).",
+       "config-invalid-db-name": "O nome do banco de dados é inválido \"$1\".\nUse apenas letras ASCII (a-z, A-Z), números (0-9), underscores (_) e hifens (-).",
+       "config-invalid-db-prefix": "O prefixo do banco de dados é inválido \"$1\".\nUse apenas letras ASCII (a-z, A-Z), números (0-9), underscores (_) e hifens (-).",
        "config-connection-error": "$1\n\nVerifique o servidor, nome de usuário e senha e tente novamente.",
+       "config-invalid-schema": "Schema inválido para o MediaWiki \"$1\".\nUse apenas letras ASCII (a-z, A-Z), números (0-9) e underscores (_).",
        "config-db-sys-create-oracle": "O instalador só permite criar uma conta nova usando uma conta SYSDBA.",
        "config-db-sys-user-exists-oracle": "A conta de usuário $1 já existe. SYSDBA somente pode ser utilizado na criação de uma nova conta!",
        "config-postgres-old": "PostgreSQL $1 ou posterior é necessário. Você tem $2.",
        "config-sqlite-readonly": "Não é possível escrever no arquivo <code>$1</code>.",
        "config-sqlite-cant-create-db": "Não foi possível criar o arquivo da base de dados <code>$1</code>.",
        "config-sqlite-fts3-downgrade": "O PHP não tem suporte FTS3; revertendo o esquema das tabelas para versão anterior",
+       "config-can-upgrade": "Este banco de dados contém tabelas do MediaWiki.\nPara atualizá-las para o MediaWiki $1, clique em <strong>Continuar</strong>.",
        "config-upgrade-done-no-regenerate": "Atualização completa.\n\nAgora pode [$1 começar a usar a sua wiki].",
        "config-regenerate": "Regenerar arquivo LocalSettings.php →",
        "config-show-table-status": "Consulta <code>SHOW TABLE STATUS</code> falhou!",
        "config-advanced-settings": "Configuração avançada",
        "config-cache-options": "Configuração da cache de objetos:",
        "config-cache-help": "A cache de objetos é usada para melhorar o desempenho do MediaWiki. Armazena dados usados com frequência.\nSites de tamanho médio ou grande são altamente encorajados a ativar esta funcionalidade e os sites pequenos também terão alguns benefícios em fazê-lo.",
+       "config-cache-none": "Sem cache (nenhuma funcionalidade é removida, mas a velocidade pode ser afetada em wikis maiores)",
        "config-cache-accel": "Cache de objetos PHP (APC, APCu, XCache ou WinCache)",
        "config-cache-memcached": "Usar Memcached (requer instalação e configurações adicionais)",
        "config-memcached-servers": "Servidores Memcached:",
        "config-install-schema": "Criando esquema",
        "config-install-pg-schema-not-exist": "O esquema ''(schema)'' PostgreSQL não existe.",
        "config-install-pg-commit": "Enviando alterações",
+       "config-pg-no-create-privs": "A conta que você especificou para a instalação não tem privilégios suficientes para criar uma conta.",
        "config-install-user": "Criando usuário de banco de dados",
        "config-install-user-alreadyexists": "O usuário \"$1\" já existe!",
        "config-install-user-create-failed": "Criando usuário \"$1\" falhou: $2",
index 779a32f..d68e5a2 100644 (file)
        "config-desc": "O instalador do MediaWiki",
        "config-title": "Instalação da MediaWiki $1",
        "config-information": "Informação",
-       "config-localsettings-upgrade": "Foi detectado um ficheiro <code>LocalSettings.php</code>.\nPara atualizar esta instalação, por favor introduza o valor de <code>$wgUpgradeKey</code> na caixa abaixo.\nEncontra este valor em <code>LocalSettings.php</code>.",
-       "config-localsettings-cli-upgrade": "Foi detectado um ficheiro <code>LocalSettings.php</code>.\nPara atualizar esta instalação, execute o <code>update.php</code>, por favor",
+       "config-localsettings-upgrade": "Foi detetado um ficheiro <code>LocalSettings.php</code>.\nPara atualizar esta instalação, por favor introduza o valor de <code>$wgUpgradeKey</code> na caixa abaixo.\nEncontra este valor em <code>LocalSettings.php</code>.",
+       "config-localsettings-cli-upgrade": "Foi detetado um ficheiro <code>LocalSettings.php</code>.\nPara atualizar esta instalação, execute o <code>update.php</code>, por favor",
        "config-localsettings-key": "Chave de atualização:",
        "config-localsettings-badkey": "A chave de atualização que forneceu está incorreta.",
-       "config-upgrade-key-missing": "Foi detectada uma instalação existente do MediaWiki.\nPara atualizar esta instalação, por favor coloque a seguinte linha no final do seu <code>LocalSettings.php</code>:\n\n$1",
+       "config-upgrade-key-missing": "Foi detetada uma instalação existente do MediaWiki.\nPara atualizar esta instalação, por favor coloque a seguinte linha no final do seu <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "O ficheiro <code>LocalSettings.php</code> existente parece estar incompleto.\nA variável $1 não está definida.\nPor favor, defina esta variável no <code>LocalSettings.php</code> e clique \"{{int:Config-continue}}\".",
        "config-localsettings-connection-error": "Ocorreu um erro ao ligar à base de dados usando as configurações especificadas no <code>LocalSettings.php</code>. Por favor corrija essas configurações e tente novamente.\n\n$1",
        "config-session-error": "Erro ao iniciar a sessão: $1",
@@ -37,7 +37,7 @@
        "config-your-language": "A sua língua:",
        "config-your-language-help": "Selecione o idioma que será usado durante o processo de instalação.",
        "config-wiki-language": "Língua da wiki:",
-       "config-wiki-language-help": "Selecione o idioma que será predominante na wiki.",
+       "config-wiki-language-help": "Selecione a língua que será predominante na wiki.",
        "config-back": "← Voltar",
        "config-continue": "Continuar →",
        "config-page-language": "Língua",
        "config-memcache-noport": "Não especificou a porta a usar para o servidor Memcached: $1.\nSe não sabe qual é a porta, a predefinida é a 11211.",
        "config-memcache-badport": "Os números das portas do Memcached devem estar entre $1 e $2.",
        "config-extensions": "Extensões",
-       "config-extensions-help": "Foi detectada a existência das extensões listadas acima, no seu diretório <code>./extensions</code>.\n\nEstas talvez necessitem de configurações adicionais, mas pode ativá-las agora",
+       "config-extensions-help": "Foi detetada a existência das extensões listadas acima, no seu diretório <code>./extensions</code>.\n\nEstas talvez necessitem de configurações adicionais, mas pode ativá-las agora.",
        "config-skins": "Temas",
        "config-skins-help": "Os temas listados abaixo foram detetados no seu diretório <code>./skins</code>. Deverá ativar pelo menos um e escolher qual o escolhido por padrão.",
        "config-skins-use-as-default": "Usar este tema como padrão",
index ccc7455..b60f2a6 100644 (file)
                        "Korrawit",
                        "Horus",
                        "Octahedron80",
-                       "Aefgh39622"
+                       "Aefgh39622",
+                       "Ans"
                ]
        },
-       "config-desc": "ตัวติดตั้งสำหรับมีเดียวิกิ",
-       "config-title": "การติดตั้งมีเดียวิกิ $1",
+       "config-desc": "ตัวติดตั้ง MediaWiki",
+       "config-title": "การติดตั้ง MediaWiki $1",
        "config-information": "ข้อมูล",
-       "config-localsettings-upgrade": "à¸\95รวà¸\88à¸\9eà¸\9aà¹\84à¸\9fลà¹\8c <code>LocalSettings.php</code>\nà¹\80à¸\9eืà¹\88ออัà¸\9bà¹\80à¸\81รà¸\94à¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87à¸\99ีà¹\89 à¸\81รุà¸\93าà¸\81รอà¸\81à¸\84à¹\88าà¸\82อà¸\87 <code>$wgUpgradeKey</code> à¹\83à¸\99à¸\81ลà¹\88อà¸\87à¸\94à¹\89าà¸\99ลà¹\88าà¸\87\nà¸\84ุà¸\93à¸\88ะà¸\9eà¸\9aมัà¸\99ได้ใน <code>LocalSettings.php</code>",
-       "config-localsettings-cli-upgrade": "à¸\95รวà¸\88à¸\9eà¸\9aà¹\84à¸\9fลà¹\8c <code>LocalSettings.php</code>\nà¹\80à¸\9eืà¹\88ออัà¸\9bà¹\80à¸\81รà¸\94à¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87à¸\99ีà¹\89 à¸\81รุà¸\93าà¸\94ำà¹\80à¸\99ิà¸\99à¸\87าà¸\99 <code>update.php</code> แทน",
+       "config-localsettings-upgrade": "à¸\95รวà¸\88à¸\9eà¸\9aà¹\84à¸\9fลà¹\8c <code>LocalSettings.php</code>\nà¹\80มืà¹\88อà¸\95à¹\89อà¸\87à¸\81ารอัà¸\9bà¹\80à¸\81รà¸\94à¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87à¸\99ีà¹\89 à¹\82à¸\9bรà¸\94à¸\9bà¹\89อà¸\99à¸\84à¹\88าà¸\82อà¸\87 <code>$wgUpgradeKey</code> à¹\83à¸\99à¸\81ลà¹\88อà¸\87à¸\94à¹\89าà¸\99ลà¹\88าà¸\87\nà¸\84ุà¸\93สามารà¸\96à¸\9eà¸\9aà¸\84à¹\88าà¸\99ีà¹\89ได้ใน <code>LocalSettings.php</code>",
+       "config-localsettings-cli-upgrade": "à¸\95รวà¸\88à¸\9eà¸\9aà¹\84à¸\9fลà¹\8c <code>LocalSettings.php</code>\nà¹\80มืà¹\88อà¸\95à¹\89อà¸\87à¸\81ารอัà¸\9bà¹\80à¸\81รà¸\94à¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87à¸\99ีà¹\89 à¹\82à¸\9bรà¸\94à¹\80รียà¸\81à¹\83à¸\8aà¹\89 <code>update.php</code> แทน",
        "config-localsettings-key": "คีย์อัปเกรด:",
-       "config-localsettings-badkey": "à¸\84ียà¹\8cอัà¸\9bà¹\80à¸\81รà¸\94à¸\97ีà¹\88à¸\84ุà¸\93à¸\81รอà¸\81ไม่ถูกต้อง",
-       "config-upgrade-key-missing": "ตรวจพบการติดตั้งมีเดียวิกิที่มีอยู่แล้ว\nเพื่ออัปเกรดการติดตั้งนี้ กรุณาใส่บรรทัดต่อไปนี้ที่ท้ายไฟล์ <code>LocalSettings.php</code> ของคุณ:\n\n$1",
-       "config-localsettings-incomplete": "<code>LocalSettings.php</code> ที่มีอยู่ดูเหมือนว่าไม่สมบูรณ์\nตัวแปร $1 ไม่ถูกกำหนด\nกรุณาเปลี่ยนแปลง <code>LocalSettings.php</code> เพื่อกำหนดตัวแปรนี้ และคลิก \"{{int:Config-continue}}\"",
-       "config-localsettings-connection-error": "à¸\84วามà¸\9cิà¸\94à¸\9eลาà¸\94à¹\80à¸\81ิà¸\94à¸\82ึà¹\89à¸\99à¹\80มืà¹\88อà¹\80à¸\8aืà¹\88อมà¸\95à¹\88อà¸\90าà¸\99à¸\82à¹\89อมูลà¹\82à¸\94ยà¹\83à¸\8aà¹\89à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88าà¸\97ีà¹\88ระà¸\9aุà¹\83à¸\99 <code>LocalSettings.php</code> à¸\81รุà¸\93าà¹\81à¸\81à¹\89à¹\84à¸\82à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88าà¹\80หลà¹\88าà¸\99ีà¹\89à¹\81ละลอà¸\87อีกครั้ง\n\n$1",
-       "config-session-error": "à¸\84วามผิดพลาดการเริ่มต้นช่วงเวลาสื่อสาร: $1",
-       "config-session-expired": "à¸\8aà¹\88วà¸\87à¹\80วลาสืà¹\88อสารà¸\82อà¸\87à¸\84ุà¸\93à¸\94ูà¹\80หมือà¸\99วà¹\88าหมà¸\94อายุà¹\81ลà¹\89ว\nà¸\8aà¹\88วà¸\87à¹\80วลาสืà¹\88อสารà¸\96ูà¸\81à¸\95ัà¹\89à¸\87à¹\84วà¹\89à¹\83หà¹\89มีà¸\8aà¹\88วà¸\87อายุà¹\80à¸\9bà¹\87à¸\99 $1\nà¸\84ุà¸\93สามารà¸\96à¹\80à¸\9eิà¹\88มà¸\84à¹\88าสิà¹\88à¸\87à¸\99ีà¹\89à¹\82à¸\94ยà¸\81ำหà¸\99à¸\94 <code>session.gc_maxlifetime</code> à¹\83à¸\99 php.ini\nà¹\83หà¹\89à¹\80ริà¹\88มà¸\81ระà¸\9aวà¸\99à¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87อีกครั้ง",
-       "config-no-session": "à¸\82à¹\89อมูลà¸\8aà¹\88วà¸\87à¹\80วลาสืà¹\88อสารà¸\82อà¸\87à¸\84ุà¸\93สูà¸\8dหาย!\nà¹\83หà¹\89à¸\95รวà¸\88สอà¸\9a php.ini à¸\82อà¸\87à¸\84ุà¸\93à¹\81ละà¹\81à¸\99à¹\88à¹\83à¸\88วà¹\88า <code>session.save_path</code> à¸\96ูà¸\81à¸\81ำหà¸\99à¸\94ไปยังไดเรกทอรีที่เหมาะสม",
+       "config-localsettings-badkey": "à¸\84ียà¹\8cอัà¸\9bà¹\80à¸\81รà¸\94à¸\97ีà¹\88à¸\84ุà¸\93ระà¸\9aุไม่ถูกต้อง",
+       "config-upgrade-key-missing": "ตรวจพบการติดตั้ง MediaWiki ที่มีอยู่แล้ว\nเมื่อต้องการอัปเกรดการติดตั้งนี้ โปรดใส่บรรทัดต่อไปนี้ที่ท้ายไฟล์\n<code>LocalSettings.php</code> ของคุณ:\n\n$1",
+       "config-localsettings-incomplete": "ไฟล์ <code>LocalSettings.php</code> ที่มีอยู่ดูเหมือนว่าไม่สมบูรณ์\nไม่ได้ตั้งค่าตัวแปร $1\nโปรดเปลี่ยนแปลง <code>LocalSettings.php</code> เพื่อตั้งค่าตัวแปรนี้ และคลิก \"{{int:Config-continue}}\"",
+       "config-localsettings-connection-error": "à¹\80à¸\81ิà¸\94à¸\82à¹\89อà¸\9cิà¸\94à¸\9eลาà¸\94à¸\82ึà¹\89à¸\99à¹\80มืà¹\88อà¹\80à¸\8aืà¹\88อมà¸\95à¹\88อà¸\90าà¸\99à¸\82à¹\89อมูลà¹\82à¸\94ยà¹\83à¸\8aà¹\89à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88าà¸\97ีà¹\88ระà¸\9aุà¹\83à¸\99 <code>LocalSettings.php</code>\nà¹\82à¸\9bรà¸\94à¹\81à¸\81à¹\89à¹\84à¸\82à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88าà¹\80หลà¹\88าà¸\99ีà¹\89à¹\81ลà¹\89วลอà¸\87à¹\83หมà¹\88อีกครั้ง\n\n$1",
+       "config-session-error": "à¸\82à¹\89อผิดพลาดการเริ่มต้นช่วงเวลาสื่อสาร: $1",
+       "config-session-expired": "à¸\8aà¹\88วà¸\87à¹\80วลาสืà¹\88อสารà¸\82อà¸\87à¸\84ุà¸\93à¸\94ูà¹\80หมือà¸\99วà¹\88าหมà¸\94อายุà¹\81ลà¹\89ว\nà¸\8aà¹\88วà¸\87à¹\80วลาสืà¹\88อสารà¸\96ูà¸\81à¸\95ัà¹\89à¸\87à¹\84วà¹\89à¹\83หà¹\89มีà¸\8aà¹\88วà¸\87อายุà¹\80à¸\9bà¹\87à¸\99 $1\nà¸\84ุà¸\93สามารà¸\96à¹\81à¸\81à¹\89à¹\84à¸\82à¸\9bัà¸\8dหาà¸\99ีà¹\89à¹\84à¸\94à¹\89à¹\82à¸\94ยà¸\95ัà¹\89à¸\87à¸\84à¹\88า <code>session.gc_maxlifetime</code> à¹\83à¸\99 php.ini\nà¹\83หà¹\89à¹\80ริà¹\88มà¸\81ระà¸\9aวà¸\99à¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87à¹\83หมà¹\88อีกครั้ง",
+       "config-no-session": "à¸\82à¹\89อมูลà¸\8aà¹\88วà¸\87à¹\80วลาสืà¹\88อสารà¸\82อà¸\87à¸\84ุà¸\93สูà¸\8dหาย!\nà¹\83หà¹\89à¸\95รวà¸\88สอà¸\9a php.ini à¸\82อà¸\87à¸\84ุà¸\93à¹\81ละà¹\81à¸\99à¹\88à¹\83à¸\88วà¹\88า <code>session.save_path</code> à¸\96ูà¸\81à¸\95ัà¹\89à¸\87à¸\84à¹\88าไปยังไดเรกทอรีที่เหมาะสม",
        "config-your-language": "ภาษาของคุณ:",
-       "config-your-language-help": "เลือกภาษาที่จะใช้ระหว่างกระบวนการติดตั้ง",
-       "config-wiki-language": "ภาษาวิกิ:",
-       "config-wiki-language-help": "เลือกภาษาที่จะใช้เขียนเป็นหลักในวิกิ",
+       "config-your-language-help": "à¹\82à¸\9bรà¸\94à¹\80ลือà¸\81ภาษาà¸\97ีà¹\88à¸\88ะà¹\83à¸\8aà¹\89ระหวà¹\88าà¸\87à¸\81ระà¸\9aวà¸\99à¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87",
+       "config-wiki-language": "ภาษาà¸\82อà¸\87วิà¸\81ิ:",
+       "config-wiki-language-help": "à¹\82à¸\9bรà¸\94à¹\80ลือà¸\81ภาษาà¸\97ีà¹\88à¸\88ะà¹\83à¸\8aà¹\89à¹\80à¸\82ียà¸\99à¹\80à¸\9bà¹\87à¸\99หลัà¸\81à¹\83à¸\99วิà¸\81ิ",
        "config-back": "← ย้อนกลับ",
        "config-continue": "ดำเนินการต่อ →",
        "config-page-language": "ภาษา",
-       "config-page-welcome": "ยินดีต้อนรับสู่มีเดียวิกิ!",
+       "config-page-welcome": "ยินดีต้อนรับสู่ MediaWiki!",
        "config-page-dbconnect": "เชื่อมต่อไปยังฐานข้อมูล",
        "config-page-upgrade": "อัปเกรดการติดตั้งที่มีอยู่",
        "config-page-dbsettings": "การตั้งค่าฐานข้อมูล",
        "config-page-name": "ชื่อ",
        "config-page-options": "ตัวเลือก",
        "config-page-install": "ติดตั้ง",
-       "config-page-complete": "สมบูรณ์!",
-       "config-page-restart": "เริ่มการติดตั้งอีกครั้ง",
+       "config-page-complete": "à¹\80สรà¹\87à¸\88สมà¸\9aูรà¸\93à¹\8c!",
+       "config-page-restart": "à¹\80ริà¹\88มà¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87à¹\83หมà¹\88อีà¸\81à¸\84รัà¹\89à¸\87",
        "config-page-readme": "อ่านเอกสารกำกับ",
        "config-page-releasenotes": "บันทึกการเผยแพร่",
        "config-page-copying": "การคัดลอก",
        "config-page-upgradedoc": "การอัปเกรด",
        "config-page-existingwiki": "วิกิที่มีอยู่",
-       "config-help-restart": "คุณต้องการล้างข้อมูลทั้งหมดที่คุณกรอกและเริ่มกระบวนการติดตั้งอีกครั้งหรือไม่?",
+       "config-help-restart": "à¸\84ุà¸\93à¸\95à¹\89อà¸\87à¸\81ารลà¹\89าà¸\87à¸\82à¹\89อมูลà¸\97ัà¹\89à¸\87หมà¸\94à¸\97ีà¹\88à¸\84ุà¸\93à¸\81รอà¸\81à¹\81ละà¹\80ริà¹\88มà¸\81ระà¸\9aวà¸\99à¸\81ารà¸\95ิà¸\94à¸\95ัà¹\89à¸\87à¹\83หมà¹\88อีà¸\81à¸\84รัà¹\89à¸\87หรือà¹\84มà¹\88?",
        "config-restart": "ใช่ เริ่มใหม่อีกครั้ง",
-       "config-welcome": "=== การตรวจสอบสภาพแวดล้อม ===\nการตรวจสอบเบื้องต้นจะกระทำขึ้นเพื่อดูว่าสภาพแวดล้อมนี้เหมาะสมสำหรับการติดตั้งมีเดียวิกิหรือไม่\nจำไว้ว่าให้รวบรวมสารสนเทศนี้ ถ้าคุณแสวงหาการสนับสนุนเพื่อที่จะติดตั้งให้สมบูรณ์",
-       "config-sidebar": "* [https://www.mediawiki.org โฮมเพจมีเดียวิกิ]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents แนวปฏิบัติของผู้ใช้]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents แนวปฏิบัติของผู้ดูแลระบบ]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ คำถามที่ถามบ่อย]\n----\n* <doclink href=Readme>อ่านเอกสารกำกับ</doclink>\n* <doclink href=ReleaseNotes>บันทึกการเผยแพร่</doclink>\n* <doclink href=Copying>การคัดลอก</doclink>\n* <doclink href=UpgradeDoc>การอัปเกรด</doclink>",
-       "config-env-good": "สภาพแวดล้อมถูกตรวจสอบแล้ว\nคุณสามารถติดตั้งมีเดียวิกิ",
-       "config-env-bad": "สภาพแวดล้อมถูกตรวจสอบแล้ว\nคุณไม่สามารถติดตั้งมีเดียวิกิ",
-       "config-env-php": "PHP $1 ติดตั้งแล้ว",
-       "config-env-hhvm": "HHVM $1 ติดตั้งแล้ว",
+       "config-welcome": "=== การตรวจสอบสภาพแวดล้อม ===\nการตรวจสอบเบื้องต้นจะกระทำขึ้น เพื่อยืนยันว่าสภาพแวดล้อมปัจจุบันเหมาะสมสำหรับการติดตั้ง MediaWiki หรือไม่\nโปรดจำไว้ว่าให้รวบรวมผลลัพธ์การตรวจสอบนี้ ถ้าคุณต้องการแสวงหาการสนับสนุนเพื่อที่จะติดตั้งให้สมบูรณ์",
+       "config-copyright": "=== ลิขสิทธิ์และเงื่อนไข ===\n\n$1\n\nโปรแกรมนี้เป็นซอฟต์แวร์เสรี คุณสามารถนำโปรแกรมนี้มาเผยแพร่ซ้ำและ/หรือดัดแปลงได้ภายใต้เงื่อนไขของสัญญาอนุญาตสาธารณะทั่วไปของ GNU (GNU General Public License) ซึ่งเผยแพร่โดย Free Software Foundation (สัญญาอนุญาตรุ่น 2 ขึ้นไป)\n\nโปรแกรมนี้ถูกเผยแพร่โดยหวังว่าจะเป็นประโยชน์แก่ผู้ใช้ แต่<strong>จะไม่มีการรับประกันใด ๆ</strong> แม้แต่การรับประกันเกี่ยวกับ<strong>การนำไปใช้ในการซื้อขาย</strong> หรือ<strong>ความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ</strong>\nสำหรับรายละเอียดเพิ่มเติม โปรดดูที่สัญญาอนุญาตสาธารณะทั่วไปของ GNU\n\nคุณควรได้รับ<doclink href=Copying>สำเนาของสัญญาอนุญาตสาธารณะทั่วไปของ GNU</doclink> มาพร้อมกับโปรแกรมนี้ ถ้าไม่ได้รับ ให้ขอได้ที่ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, \nหรือ[http://www.gnu.org/copyleft/gpl.html อ่านออนไลน์ที่นี่]",
+       "config-sidebar": "* [https://www.mediawiki.org โฮมเพจของ MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents แนวปฏิบัติของผู้ใช้]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents แนวปฏิบัติของผู้ดูแลระบบ]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ คำถามที่ถามบ่อย]\n----\n* <doclink href=Readme>อ่านเอกสารกำกับ</doclink>\n* <doclink href=ReleaseNotes>บันทึกการเผยแพร่</doclink>\n* <doclink href=Copying>การคัดลอก</doclink>\n* <doclink href=UpgradeDoc>การอัปเกรด</doclink>",
+       "config-env-good": "ตรวจสอบสภาพแวดล้อมแล้ว\nคุณสามารถติดตั้ง MediaWiki",
+       "config-env-bad": "ตรวจสอบสภาพแวดล้อมแล้ว\nคุณไม่สามารถติดตั้ง MediaWiki",
+       "config-env-php": "มี PHP $1 ติดตั้งอยู่",
+       "config-env-hhvm": "มี HHVM $1 ติดตั้งอยู่",
+       "config-unicode-using-intl": "ใช้[http://pecl.php.net/intl ส่วนขยาย intl PECL] สำหรับการปรับ Unicode เข้าสู่รูปปกติ (Unicode normalization)",
+       "config-unicode-pure-php-warning": "<strong>คำเตือน:</strong> [http://pecl.php.net/intl intl ส่วนขยาย PECL] ไม่พร้อมใช้งานสำหรับการจัดมาตรฐาน Unicode กำลังกลับไปใช้ PHP ที่แท้จริงแบบช้า\nถ้าคุณเปิดดำเนินการไซต์ที่มีปริมาณการใช้งานสูง คุณควรอ่านดูเกี่ยวกับ[https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations การจัดมาตรฐาน Unicode] สักเล็กน้อย",
+       "config-no-db": "ไม่พบไดรเวอร์ฐานข้อมูลที่เหมาะสม! คุณจำเป็นต้องติดตั้งไดรเวอร์ฐานข้อมูลสำหรับ PHP\nชนิดฐานข้อมูลต่อไปนี้ได้รับการสนับสนุน: $1\n\nถ้าคุณคอมไพล์ PHP ด้วยตนเอง ให้กำหนดค่าใหม่อีกครั้งโดยเปิดใช้งานไคลเอนต์ฐานข้อมูล ตัวอย่างเช่น ใช้ <code>./configure --with-mysqli</code>\nถ้าคุณติดตั้ง PHP จากแพกเกจ Debian หรือ Ubuntu คุณก็จำเป็นต้องติดตั้งแพกเกจต่อไปนี้ ตัวอย่างเช่น แพกเกจ <code>php5-mysql</code>",
+       "config-outdated-sqlite": "<strong>คำเตือน:</strong> คุณมี SQLite $1 ซึ่งต่ำกว่ารุ่นขั้นต่ำที่ต้องการ $2 ดังนั้น SQLite จะไม่พร้อมให้ใช้งาน",
+       "config-no-fts3": "<strong>คำเตือน:</strong> SQLite ถูกคอมไพล์โดยไม่มี[//sqlite.org/fts3.html โมดูล FTS3] คุณลักษณะการค้นหาจะไม่พร้อมใช้งานบนแบ็กเอนด์นี้",
+       "config-pcre-old": "<strong>ข้อผิดพลาดร้ายแรง:</strong> ต้องใช้ PCRE $1 หรือสูงกว่า\nไบนารี PHP ของคุณถูกเชื่อมโยงกับ PCRE $2\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE ข้อมูลเพิ่มเติม]",
+       "config-pcre-no-utf8": "<strong>ข้อผิดพลาดร้ายแรง:</strong> โมดูล PCRE ของ PHP ดูเหมือนจะถูกคอมไพล์โดยไม่มีการรองรับ PCRE_UTF8\nMediaWiki ต้องการการรองรับ UTF-8 เพื่อให้ทำงานได้อย่างถูกต้อง",
        "config-memory-raised": "<code>memory_limit</code> ของ PHP คือ $1 ได้เพิ่มเป็น $2",
        "config-memory-bad": "<strong>คำเตือน:</strong> <code>memory_limit</code> ของ PHP คือ $1.\nเป็นไปได้ว่ามันอาจต่ำเกินไป\nการติดตั้งอาจล้มเหลวได้!",
-       "config-xcache": "[http://xcache.lighttpd.net/ XCache] ติดตั้งแล้ว",
-       "config-apc": "[http://www.php.net/apc APC] ติดตั้งแล้ว",
-       "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] ติดตั้งแล้ว",
-       "config-mod-security": "<strong>คำเตือน:</strong> เว็บเซิร์ฟเวอร์ของคุณมี [http://modsecurity.org/ mod_security]/mod_security2 เปิดใช้งานอยู่ การตั้งค่าทั่วไปหลายอย่างของสิ่งนี้จะก่อให้เกิดปัญหาสำหรับมีเดียวิกิ และซอฟต์แวร์อื่นที่อนุญาตให้ผู้ใช้สามารถโพสต์เนื้อหาได้ตามใจ\nหากเป็นไปได้ สิ่งนี้ควรปิดใช้งาน หรือมิฉะนั้นก็ อ้างไปยัง[http://modsecurity.org/documentation/ เอกสารกำกับการใช้งาน mod_security] หรือติดต่อการสนับสนุนจากโฮสต์ของคุณ ถ้าคุณพบความผิดพลาดโดยสุ่ม",
+       "config-xcache": "มี [http://xcache.lighttpd.net/ XCache] ติดตั้งอยู่",
+       "config-apc": "มี [http://www.php.net/apc APC] ติดตั้งอยู่",
+       "config-apcu": "มี [http://www.php.net/apcu APCu] ติดตั้งอยู่",
+       "config-wincache": "มี [http://www.iis.net/download/WinCacheForPhp WinCache] ติดตั้งอยู่",
+       "config-no-cache-apcu": "<strong>คำเตือน:</strong> ไม่พบ [http://www.php.net/apcu APCu] [http://xcache.lighttpd.net/ XCache] หรือ [http://www.iis.net/download/WinCacheForPhp WinCache]\nการแคชวัตถุไม่ได้ถูกเปิดใช้งาน",
+       "config-mod-security": "<strong>คำเตือน:</strong> เว็บเซิร์ฟเวอร์ของคุณมี [http://modsecurity.org/ mod_security]/mod_security2 เปิดใช้งานอยู่ การตั้งค่าทั่วไปหลายอย่างของสิ่งนี้จะก่อให้เกิดปัญหาสำหรับ MediaWiki และซอฟต์แวร์อื่นที่อนุญาตให้ผู้ใช้สามารถโพสต์เนื้อหาได้ตามที่ผู้ใช้\nหากเป็นไปได้ ควรปิดใช้งานคุณลักษณะนี้ หรือมิฉะนั้นก็ อ้างไปยัง[http://modsecurity.org/documentation/ เอกสารกำกับการใช้งาน mod_security] หรือติดต่อการสนับสนุนจากโฮสต์ของคุณ ถ้าคุณพบข้อผิดพลาดโดยสุ่ม",
        "config-diff3-bad": "ไม่พบ GNU diff3",
        "config-git": "พบซอฟต์แวร์ควบคุมรุ่น Git: <code>$1</code>",
        "config-git-bad": "ไม่พบซอฟต์แวร์ควบคุมรุ่น Git",
        "config-imagemagick": "พบ ImageMagick: <code>$1</code>\nการย่อรูปภาพจะถูกเปิดใช้งาน ถ้าคุณเปิดใช้งานการอัปโหลด",
-       "config-gd": "à¸\9eà¸\9aà¹\84ลà¸\9aรารีà¸\81ราà¸\9fิà¸\81 GD à¸ à¸²à¸¢à¹\83à¸\99\nการย่อรูปภาพจะถูกเปิดใช้งาน ถ้าคุณเปิดใช้งานการอัปโหลด",
+       "config-gd": "à¸\9eà¸\9aà¹\84ลà¸\9aรารีà¸\81ราà¸\9fิà¸\81 GD à¹\83à¸\99à¸\95ัว\nการย่อรูปภาพจะถูกเปิดใช้งาน ถ้าคุณเปิดใช้งานการอัปโหลด",
        "config-no-scaling": "ไม่พบไลบรารี GD หรือ ImageMagick\nการย่อรูปภาพจะถูกปิดใช้งาน",
        "config-no-uri": "<strong>ข้อผิดพลาด:</strong> ไม่สามารถทำการตรวจสอบ URI ปัจจุบันได้\nการติดตั้งถูกยกเลิกแล้ว",
+       "config-no-cli-uri": "<strong>คำเตือน:</strong> ไม่ได้ระบุ <code>--scriptpath</code> กำลังใช้ค่าเริ่มต้น: <code>$1</code>",
        "config-using-server": "ใช้ชื่อเซิร์ฟเวอร์ \"<nowiki>$1</nowiki>\"",
        "config-using-uri": "ใช้ยูอาร์แอลของเซิร์ฟเวอร์ \"<nowiki>$1$2</nowiki>\"",
+       "config-uploads-not-safe": "<strong>คำเตือน:</strong> ไดเรกทอรีเริ่มต้นของคุณสำหรับการอัปโหลด <code>$1</code> มีช่องโหว่ที่มีต่อการดำเนินการสคริปต์ด้วยตัวเอง\nถึงแม้ว่า MediaWiki จะมีการตรวจสอบช่องโหว่ด้านความปลอดภัยในไฟล์ที่อัปโหลดทั้งหมด แต่ขอแนะนำอย่างยิ่งว่าให้[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security ปิดช่องโหว่ด้านความปลอดภัยนี้]ก่อนเปิดใช้งานการอัปโหลด",
+       "config-no-cli-uploads-check": "<strong>คำเตือน:</strong> ไดเรกทอรีสำหรับอัปโหลดเริ่มต้นของคุณ (<code>$1</code>) ยังไม่ได้ถูกตรวจสอบช่องโหว่ด้านความปลอดภัย\nที่มีต่อการดำเนินการสคริปต์เองระหว่างการติดตั้ง CLI",
+       "config-brokenlibxml": "การใช้รุ่น PHP และ libxml2 ร่วมกันในระบบของคุณเป็นคู่รุ่นที่มีบักมากและอาจทำให้เกิดการเสียหายของข้อมูลแอบแฝงอยู่ใน MediaWiki และเว็บแอปพลิเคชั่นอื่นๆ ได้\nอัปเกรดเป็น libxml2 2.7.3 หรือสูงกว่า ([https://bugs.php.net/bug.php?id=45996 บักที่รายงานด้วย PHP])\nการติดตั้งถูกยกเลิกแล้ว",
+       "config-suhosin-max-value-length": "Suhosin ถูกติดตั้งแล้วและจำกัด<code>ความยาว</code>พารามิเตอร์ GET เป็น $1 ไบต์\nองค์ประกอบ ResourceLoader ของ MediaWiki จะยังคงทำงานภายใต้การจำกัดนี้ แต่อาจลดระดับประสิทธิภาพลงได้\nถ้าเป็นไปได้ คุณควรตั้ง <code>suhosin.get.max_value_length</code> เป็น 1024 หรือสูงกว่าใน <code>php.ini</code> และตั้งค่า <code>$wgResourceLoaderMaxQueryLength</code> ให้เป็นค่าเดียวกับใน <code>LocalSettings.php</code>",
+       "config-db-type": "ชนิดฐานข้อมูล:",
+       "config-db-host": "โฮสต์ฐานข้อมูล:",
+       "config-db-host-help": "ถ้าเซิร์ฟเวอร์ฐานข้อมูลของคุณอยู่บนเซิร์ฟเวอร์อื่น ให้ป้อนชื่อโฮสต์หรือที่อยู่ IP ที่นี่\n\nถ้าคุณกำลังใช้งานโฮสต์เว็บที่ใช้ร่วมกัน ผู้ให้บริการโฮสต์ควรให้ชื่อโฮสต์ที่ถูกต้องแก่คุณในเอกสารคู่มือ\n\nถ้าคุณกำลังติดตั้งบนเซิร์ฟเวอร์ Windows และกำลังใช้ MySQL การใช้ \"localhost\" อาจไม่สามารถใช้ได้สำหรับชื่อเซิร์ฟเวอร์ ถ้าไม่สามารถใช้ได้ ให้ลองใช้ \"127.0.0.1\" สำหรับที่อยู่ IP เฉพาะที่",
+       "config-db-host-oracle": "TNS ฐานข้อมูล:",
+       "config-db-host-oracle-help": "ป้อน [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Local Connect Name] ที่ถูกต้อง; ไฟล์ tnsnames.ora ต้องสามารถมองเห็นได้โดยการติดตัั้งนี้<br />ถ้าคุณกำลังใช้ไลบรารีไคลเอนต์ 10g หรือใหม่กว่า คุณก็สามารถใช้วิธีการตั้งชื่อแบบ [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect] ได้เช่นกัน",
+       "config-db-wiki-settings": "ระบุวิกินี้",
        "config-db-name": "ชื่อฐานข้อมูล:",
-       "config-mysql-innodb": "อินโนดีบี",
-       "config-mysql-myisam": "มายไอแซม",
+       "config-db-name-help": "เลือกชื่อที่ระบุวิกิของคุณ\nชื่อไม่ควรมีช่องว่าง\n\nถ้าคุณกำลังใช้โฮสต์เว็บที่ใช้ร่วมกัน ผู้ให้บริการโฮสต์ของคุณจะระบุชื่อฐานข้อมูลให้คุณ หรือให้คุณสร้างฐานข้อมูลโดยใช้แผงควบคุม",
+       "config-db-name-oracle": "แบบแผนฐานข้อมูล:",
+       "config-db-account-oracle-warn": "มีสถานการณ์สมมติสามสถานการณ์ที่สนับสนุนสำหรับการติดตั้ง Oracle เป็นแบ็กเอนด์ฐานข้อมูล:\n\nถ้าคุณต้องการสร้างบัญชีฐานข้อมูลเป็นส่วนหนึ่งของกระบวนการติดตั้ง โปรดจัดหาบัญชีที่มีบทบาท SYSDBA เป็นบัญชีฐานข้อมูลสำหรับการติดตั้งและระบุข้อมูลประจำตัวที่ต้องการสำหรับบัญชีการเข้าถึงเว็บ หรือคุณสามารถสร้างบัญชีการเข้าถึงเว็บด้วยตนเองและจัดหาเฉพาะบัญชีนั้น (ถ้ามีสิทธิ์ที่ต้องการในการสร้างวัตถุแบบแผน) หรือจัดหาบัญชีสองบัญชี โดยบัญชีหนึ่งใช้สร้างสิทธิ์ และบัญชีที่จำกัดอีกบัญชีหนึ่งสำหรับการเข้าถึงเว็บ\n\nสคริปต์ที่ใช้สำหรับการสร้างบัญชีพร้อมสิทธิ์ที่ต้องการสามารถพบได้ในไดเรกทอรี \"maintenance/oracle/\" ของการติดตั้งนี้\nอย่าลืมว่าการใช้บัญชีที่จำกัดจะเป็นการปิดใช้งานความสามารถในการบำรุงรักษาทั้งหมดด้วยบัญชีเริ่มต้น",
+       "config-db-install-account": "บัญชีผู้ใช้สำหรับการติดตั้ง",
+       "config-db-username": "ชื่อผู้ใช้ฐานข้อมูล:",
+       "config-db-password": "รหัสผ่านฐานข้อมูล:",
+       "config-db-install-username": "ป้อนชื่อผู้ใช้ที่จะใช้เชื่อมต่อไปยังฐานข้อมูลในระหว่างกระบวนการติดตั้ง\nชื่อผู้ใช้นี้ไม่ใช่ชื่อผู้ใช้สำหรับบัญชี MediaWiki แต่เป็นชื่อผู้ใช้สำหรับฐานข้อมูลของคุณ",
+       "config-db-install-password": "ป้อนรหัสผ่านที่จะใช้เชื่อมต่อไปยังฐานข้อมูลในระหว่างกระบวนการติดตั้ง\nรหัสผ่านนี้ไม่ใช่รหัสผ่านสำหรับบัญชี MediaWiki แต่เป็นรหัสผ่านสำหรับฐานข้อมูลของคุณ",
+       "config-db-install-help": "ป้อนชื่อผู้ใช้และรหัสผ่านที่จะใช้เชื่อมต่อไปยังฐานข้อมูลในระหว่างกระบวนการติดตั้ง",
+       "config-db-account-lock": "ใช้ชื่อผู้ใช้และรหัสผ่านเดียวกันในระหว่างการใช้งานปกติ",
+       "config-db-wiki-account": "บัญชีผู้ใช้สำหรับการใช้งานปกติ",
+       "config-db-wiki-help": "ป้อนชื่อผู้ใช้และรหัสผ่านที่จะใช้เชื่อมต่อไปยังฐานข้อมูลในระหว่างการใช้งานวิกิตามปกติ\nถ้าไม่มีบัญชีอยู่ และบัญชีการติดตั้งมีสิทธิ์เพียงพอ บัญชีผู้ใช้นี้จะถูกสร้างพร้อมสิทธิ์ขั้นต่ำที่จำเป็นต้องใช้ดำเนินการกับวิกิ",
+       "config-db-prefix": "คำนำหน้าตารางฐานข้อมูล:",
+       "config-db-prefix-help": "ถ้าคุณต้องการใช้ฐานข้อมูลเดียวร่วมกันระหว่างหลายวิกิ หรือระหว่าง MediaWiki กับเว็บแอปพลิเคชันอื่นๆ คุณอาจต้องเลือกเพิ่มคำนำหน้าให้กับชื่อตารางทั้งหมดเพื่อป้องกันความขัดแย้ง\nอย่าใช้ช่องว่าง\n\nโดยปกติ เขตข้อมูลนี้มักจะถูกปล่อยให้ว่างเปล่า",
+       "config-mysql-old": "จำเป็นต้องใช้ MySQL $1 หรือสูงกว่า คุณมี $2",
+       "config-db-port": "พอร์ตฐานข้อมูล:",
+       "config-db-schema": "แบบแผนสำหรับ MediaWiki:",
+       "config-db-schema-help": "โดยปกติ แบบแผนนี้จะไม่มีปัญหาใดๆ อยู่แล้ว\nเปลี่ยนเฉพาะก็ต่อเมื่อคุณรู้ว่าคุณจำเป็นต้องดำเนินการนี้",
+       "config-pg-test-error": "ไม่สามารถเชื่อมต่อไปยังฐานข้อมูล <strong>$1</strong>: $2",
+       "config-sqlite-dir": "ไดเรกทอรีข้อมูล SQLite:",
+       "config-sqlite-dir-help": "SQLite จัดเก็บข้อมูลทั้งหมดในไฟล์เดียว\n\nไดเรกทอรีที่คุณระบุจะต้องสามารถเขียนได้โดยเว็บเซิร์ฟเวอร์ระหว่างการติดตั้ง\n\nไดเรกทอรีดังกล่าว<strong>ไม่</strong>ควรสามารถเข้าถึงได้ผ่านเว็บ นี่คือเหตุผลที่เราไม่นำไฟล์ข้อมูลดังกล่าวไปไว้ในตำแหน่งที่มีไฟล์ PHP ของคุณอยู่\n\nโปรแกรมติดตั้งจะเขียนไฟล์ <code>.htaccess</code> ไปพร้อมกับไฟล์ข้อมูลดังกล่าว แต่ถ้าเกิดความล้มเหลว ทุกคนจะสามารถเข้าถึงฐานข้อมูลดิบของคุณได้\nซึ่งรวมถึงข้อมูลผู้ใช้ดิบ (ที่อยู่อีเมล ข้อมูลแฮช) รวมถึงรุ่นปรับปรุงที่ถูกลบไปแล้ว และข้อมูลที่ถูกจำกัดอื่นๆ บนวิกิ\n\nให้พิจารณานำฐานข้อมูลไปไว้ในตำแหน่งอื่น ตัวอย่างเช่น ใน <code>/var/lib/mediawiki/yourwiki</code>",
+       "config-oracle-def-ts": "พื้นที่ตารางเริ่มต้น:",
+       "config-oracle-temp-ts": "พื้นที่ตารางชั่วคราว:",
+       "config-type-mysql": "MySQL (หรือที่เข้ากันได้)",
+       "config-type-mssql": "Microsoft SQL Server",
+       "config-support-info": "MediaWiki สนับสนุนระบบฐานข้อมูลต่อไปนี้:\n\n$1\n\nถ้าคุณไม่พบระบบฐานข้อมูลที่คุณกำลังพยายามใช้ในรายการด้านล่างนี้ ให้ทำตามคำแนะนำที่เชื่อมโยงด้านบนเพื่อเปิดใช้งานการสนับสนุน",
+       "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] คือเป้าหมายหลักสำหรับ MediaWiki และได้รับการสนับสนุนดีที่สุด MediaWiki ยังคงสามารถใช้ได้ร่วมกับ [{{int:version-db-mariadb-url}} MariaDB] และ [{{int:version-db-percona-url}} Percona Server] ซึ่งเข้ากันได้กับ MySQL ([http://www.php.net/manual/en/mysqli.installation.php วิธีการคอมไพล์ PHP ด้วยการสนับสนุน MySQL])",
+       "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] คือระบบฐานข้อมูลแบบโอเพนซอร์สที่ได้รับความนิยมสูงที่สามารถใช้แทน MySQL ได้ ([http://www.php.net/manual/en/pgsql.installation.php วิธีการคอมไพล์ PHP ด้วยการสนับสนุน PostgreSQL])",
+       "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] คือระบบฐานข้อมูลขนาดเล็กที่ได้รับการสนับสนุนดีมาก ([http://www.php.net/manual/en/pdo.installation.php วิธีการคอมไพล์ PHP ด้วยการสนับสนุน SQLite], ใช้ PDO)",
+       "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] คือฐานข้อมูลสำหรับองค์กรพาณิชย์ ([http://www.php.net/manual/en/oci8.installation.php วิธีการคอมไพล์ PHP ด้วยการสนับสนุน OCI8])",
+       "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] คือฐานข้อมูลสำหรับองค์กรพาณิชย์สำหรับ Windows. ([http://www.php.net/manual/en/sqlsrv.installation.php วิธีการคอมไพล์ PHP ด้วยการสนับสนุน SQLSRV])",
+       "config-header-mysql": "การตั้งค่า MySQL",
+       "config-header-postgres": "การตั้งค่า PostgreSQL",
+       "config-header-sqlite": "การตั้งค่า SQLite",
+       "config-header-oracle": "การตั้งค่า Oracle",
+       "config-header-mssql": "การตั้งค่า Microsoft SQL Server",
+       "config-invalid-db-type": "ชนิดฐานข้อมูลไม่ถูกต้อง",
+       "config-missing-db-name": "คุณต้องป้อนค่าสำหรับ \"{{int:config-db-name}}\"",
+       "config-missing-db-host": "คุณต้องป้อนค่าสำหรับ \"{{int:config-db-host}}\"",
+       "config-missing-db-server-oracle": "คุณต้องป้อนค่าสำหรับ \"{{int:config-db-host-oracle}}\"",
+       "config-invalid-db-server-oracle": "TNS ฐานข้อมูล \"$1\" ไม่ถูกต้อง\nให้ใช้สตริง \"ชื่อ TNS\" หรือ \"Easy Connect\"\n ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm วิธีการตั้งชื่อของ Oracle])",
+       "config-invalid-db-name": "ชื่อฐานข้อมูล \"$1\" ไม่ถูกต้อง\nให้ใช้เฉพาะอักษร ASCII (a-z, A-Z) ตัวเลข (0-9) ขีดล่าง (_) และยัติภังค์ (-)",
+       "config-invalid-db-prefix": "คำนำหน้าฐานข้อมูล \"$1\" ไม่ถูกต้อง\nให้ใช้เฉพาะอักษร ASCII (a-z, A-Z) ตัวเลข (0-9) ขีดล่าง (_) และยัติภังค์ (-)",
+       "config-connection-error": "$1\n\nตรวจสอบโฮสต์ ชื่อผู้ใช้และรหัสผ่าน และลองอีกครั้ง",
+       "config-invalid-schema": "แบบแผนสำหรับ MediaWiki \"$1\" ไม่ถูกต้อง\nให้ใช้เฉพาะอักษร ASCII (a-z, A-Z) ตัวเลข (0-9) และขีดล่าง (_)",
+       "config-db-sys-create-oracle": "โปรแกรมติดตั้งสนับสนุนเฉพาะการใช้บัญชี SYSDBA สำหรับการสร้างบัญชีใหม่เท่านั้น",
+       "config-db-sys-user-exists-oracle": "มีบัญชีผู้ใช้ \"$1\" อยู่แล้ว คุณสามารถใช้เฉพาะ SYSDBA สำหรับการสร้างบัญชีใหม่ได้เท่านั้น!",
+       "config-postgres-old": "จำเป็นต้องใช้ PostgreSQL $1 หรือสูงกว่า คุณมี $2",
+       "config-mssql-old": "จำเป็นต้องใช้ Microsoft SQL Server $1 หรือสูงกว่า คุณมี $2.",
+       "config-sqlite-name-help": "เลือกชื่อที่จะระบุวิกิของคุณ\nอย่าใช้ช่องว่างหรือยัติภังค์\nชื่อนี้จะถูกใช้สำหรับชื่อไฟล์ข้อมูล SQLite",
+       "config-sqlite-parent-unwritable-group": "ไม่สามารถสร้างไดเรกทอรีข้อมูล <code><nowiki>$1</nowiki></code> ได้ เนื่องจากไดเรกทอรีหลัก <code><nowiki>$2</nowiki></code> ไม่สามารถเขียนได้โดยเว็บเซิร์ฟเวอร์\n\nโปรแกรมติดตั้งได้ทำการตรวจสอบแล้วว่าเว็บเซิร์ฟเวอร์ของคุณกำลังทำงานในฐานะผู้ใช้ใด\nทำให้ไดเรกทอรี <code><nowiki>$3</nowiki></code> สามารถเขียนโดยผู้ใช้ดังกล่าวได้เพื่อดำเนินการต่อ\nถ้าคุณใช้ระบบ Unix/Linux ให้่ทำเช่นนี้:\n\n<pre>cd $2\nmkdir $3\nchgrp $4 $3\nchmod g+w $3</pre>",
+       "config-sqlite-parent-unwritable-nogroup": "ไม่สามารถสร้างไดเรกทอรีข้อมูล <code><nowiki>$1</nowiki></code> ได้ เนื่องจากไดเรกทอรีหลัก <code><nowiki>$2</nowiki></code> ไม่สามารถเขียนได้โดยเว็บเซิร์ฟเวอร์\n\nโปรแกรมติดตั้งไม่สามารถทำการตรวจสอบได้ว่าเว็บเซิร์ฟเวอร์ของคุณกำลังทำงานในฐานะผู้ใช้ใด\nทำให้ไดเรกทอรี <code><nowiki>$3</nowiki></code> สามารถเขียนโดยส่วนกลาง (ุผู้ใช้ดังกล่าว รวมถึงคนอื่นๆ ด้วย!) ได้เพื่อดำเนินการต่อ\nถ้าคุณใช้ระบบ Unix/Linux ให้่ทำเช่นนี้:\n\n<pre>cd $2\nmkdir $3\nchmod a+w $3</pre>",
+       "config-sqlite-mkdir-error": "ไม่สามารถสร้างไดเรกทอรีข้อมูล \"$1\" ได้\nให้ตรวจสอบตำแหน่งที่ตั้ง และลองอีกครั้ง",
+       "config-sqlite-dir-unwritable": "ไม่สามารถเขียนข้อมูลลงในไดเรกทอรี \"$1\" ได้\nให้เปลี่ยนสิทธิ์ เพื่อให้เว็บเซิร์ฟเวอร์สามารถเขียนข้อมูลลงในไดเรกทอรีดังกล่าวได้ และลองอีกครั้ง",
+       "config-sqlite-connection-error": "$1\n\nตรวจสอบไดเรกทอรีข้อมูลและชื่อฐานข้อมูลด้านล่าง และลองอีกครั้ง",
+       "config-sqlite-readonly": "ไม่สามารถเขียนไฟล์ <code>$1</code> ได้",
+       "config-sqlite-cant-create-db": "ไม่สามารถสร้างไฟล์ฐานข้อมูล <code>$1</code> ได้",
+       "config-sqlite-fts3-downgrade": "PHP กำลังขาดการสนับสนุน FTS3 กำลังดาวน์เกรดตารางข้อมูล",
+       "config-can-upgrade": "มีตารางข้อมูล MediaWiki tables ในฐานข้อมูลนี้\nเมื่อต้องการอัปเกรดตารางข้อมูลเหล่านั้นไปเป็น MediaWiki $1 ให้คลิก <strong>ดำเนินการต่อ</strong>",
+       "config-upgrade-done": "การอัปเกรดเสร็จสมบูรณ์\n\nคุณสามารถ[$1 เริ่มใช้วิกิของคุณ]ได้ในขณะนี้\n\nถ้าคุณต้องการสร้างไฟล์ <code>LocalSettings.php</code> ของคุณใหม่ ให้คลิกปุ่มด้านล่างนี้\n<strong>ไม่แนะนำ</strong>ให้ดำเนินการนี้นอกจากว่าคุณกำลังมีปัญหากับวิกิของคุณ",
+       "config-upgrade-done-no-regenerate": "การอัปเกรดเสร็จสมบูรณ์\n\nคุณสามารถ[$1 เริ่มใช้วิกิของคุณ]ได้ในขณะนี้",
+       "config-regenerate": "สร้าง LocalSettings.php ใหม่ →",
+       "config-show-table-status": "คิวรี <code>SHOW TABLE STATUS</code> ล้มเหลว!",
+       "config-unknown-collation": "<strong>คำเตือน:</strong> ฐานข้อมูลกำลังใช้การจัดเรียงที่ไม่รู้จัก",
+       "config-db-web-account": "บัญชีฐานข้อมูลสำหรับการเข้าถึงเว็บ",
+       "config-db-web-help": "เลือกชื่อผู้ใช้และรหัสผ่านที่เว็บเซิร์ฟเวอร์จะใช้เชื่อมต่อไปยังเซิร์ฟเวอร์ฐานข้อมูล ในระหว่างการใช้งานวิกิตามปกติ",
+       "config-db-web-account-same": "ใช้บัญชีเดียวกับที่ใช้ในการติดตั้ง",
+       "config-db-web-create": "สร้างบัญชี ถ้าบัญชีดังกล่าวไม่มีอยู่",
+       "config-db-web-no-create-privs": "บัญชีที่คุณระบุไว้สำหรับการติดตั้งมีสิทธิ์ไม่เพียงพอที่จะสร้างบัญชี\nบัญชีที่คุณระบุไว้ที่นี่จะต้องมีอยู่แล้ว",
+       "config-mysql-engine": "กลไกที่จัดเก็บข้อมูล:",
+       "config-mysql-innodb": "InnoDB",
+       "config-mysql-myisam": "MyISAM",
+       "config-mysql-myisam-dep": "<strong>คำเตือน:</strong> คุณได้เลือก MyISAM เป็นกลไกที่จัดเก็บข้อมูลสำหรับ MySQL ซึ่่งไม่แนะนำให้ใช้กับ MediaWiki เนื่องจาก:\n* ไม่ค่อยสนับสนุนกระบวนการทำงานพร้อมกันเนื่องจากการล็อกตารางข้อมูล\n* มีแนวโน้มที่จะเสียหายมากกว่ากลไกอื่น\n* Codebase ของ MediaWiki ไม่สามารถจัดการ MyISAM ได้ดีเท่าที่ควร\n\nถ้าการติดตั้ง MySQL ของคุณสนับสนุน InnoDB แนะนำอย่างยิ่งว่าให้คุณเลือก InnoDB แทน\nถ้าการติดตั้ง MySQL ของคุณไม่สนับสนุน InnoDB อาจถึงเวลาที่คุณต้องอัปเกรดแล้ว",
+       "config-mysql-only-myisam-dep": "<strong>คำเตือน:</strong> กลไกที่จัดเก็บข้อมูลสำหรับ MySQL ที่พร้อมใช้งานบนเครื่องนี้มีเพียง MyISAM ซึ่่งไม่แนะนำให้ใช้กับ MediaWiki เนื่องจาก:\n* ไม่ค่อยสนับสนุนกระบวนการทำงานพร้อมกันเนื่องจากการล็อกตารางข้อมูล\n* มีแนวโน้มที่จะเสียหายมากกว่ากลไกอื่น\n* Codebase ของ MediaWiki ไม่สามารถจัดการ MyISAM ได้ดีเท่าที่ควร\n\nการติดตั้ง MySQL ของคุณไม่สนับสนุน InnoDB อาจถึงเวลาที่คุณต้องอัปเกรดแล้ว",
+       "config-mysql-engine-help": "<strong>InnoDB</strong> เป็นตัวเลือกที่เกือบดีที่สุดเสมอ เนื่องจากมีการสนับสนุนกระบวนการทำงานพร้อมกัน\n\n<strong>MyISAM</strong> อาจทำงานได้เร็วกว่าในการติดตั้งแบบผู้ใช้คนเดียวหรือแบบอ่านอย่างเดียว\nฐานข้อมูล MyISAM มักจะได้รับความเสียหายบ่อยมากกว่าฐานข้อมูล InnoDB",
+       "config-mysql-charset": "ชุดอักขระของฐานข้อมูล:",
        "config-mysql-binary": "ไบนารี",
-       "config-mysql-utf8": "ยูทีเอฟ-8",
+       "config-mysql-utf8": "UTF-8",
+       "config-mysql-charset-help": "ใน<strong>โหมดไบนารี</strong> MediaWiki จะจัดเก็บข้อความ UTF-8 ไว้ในฐานข้อมูลในเขตข้อมูลไบนารี\nการใช้โหมดไบนารีจะมีประสิทธิภาพมากกว่าการใช้โหมด UTF-8 ของ MySQL และจะอนุญาตให้คุณสามารถใช้อักขระที่มีใน Unicode ได้หมดทุกช่วง\n\nใน<strong>โหมด UTF-8</strong> MySQL จะทราบว่าข้อมูลของคุณอยู่ในชุดอักขระได้ และจะสามารถเสนอและแปลงข้อมูลดังกล่าวได้อย่างเหมาะสม แต่จะไม่อนุญาตให้คุณจัดเก็บข้อมูลที่มีอักขระนอกเหนือจากในช่วง[https://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes เพลนหลายภาษาพื้นฐาน]",
+       "config-mssql-auth": "ชนิดการยืนยันตัวตน:",
+       "config-mssql-install-auth": "เลือกชนิดการยืนยันตัวตนที่จะใช้เชื่อมต่อไปยังฐานข้อมูลในระหว่างกระบวนการติดตั้ง\nถ้าคุณเลือก \"{{int:config-mssql-windowsauth}}\" ข้อมูลประจำตัวที่ระบุว่าเว็บเซิร์ฟเวอร์กำลังทำงานในฐานะผู้ใช้ใดจะถูกใช้",
+       "config-mssql-web-auth": "เลือกชนิดการยืนยันตัวตนที่จะใช้เชื่อมต่อไปยังฐานข้อมูลในระหว่างการใช้งานวิกิตามปกติ\nถ้าคุณเลือก \"{{int:config-mssql-windowsauth}}\" ข้อมูลประจำตัวที่ระบุว่าเว็บเซิร์ฟเวอร์กำลังทำงานในฐานะผู้ใช้ใดจะถูกใช้",
+       "config-mssql-sqlauth": "การยืนยันตัวตนโดย SQL Server",
+       "config-mssql-windowsauth": "การยืนยันตัวตนโดย Windows",
        "config-site-name": "ชื่อของวิกิ:",
+       "config-site-name-help": "ชื่อนี้จะปรากฏในแถบชื่อเรื่องของเบราว์เซอร์และในที่อื่นๆ อีกหลายแห่ง",
+       "config-site-name-blank": "ป้อนชื่อไซต์",
+       "config-project-namespace": "เนมสเปซโครงการ:",
        "config-ns-generic": "โครงการ",
+       "config-ns-site-name": "เหมือนกับชื่อวิกิ: $1",
+       "config-ns-other": "อื่นๆ (ระบุ)",
        "config-ns-other-default": "วิกิของฉัน",
-       "config-admin-box": "บัญชีผู้ดูแลระบบ",
+       "config-project-namespace-help": "ตามตัวอย่างในวิกิพีเดีย วิกิหลายแห่งจะแยกหน้านโยบายออกจากหน้าเนื้อหาต่างๆ ใน '''เนมสเปซโครงการ'''\nชื่อเรื่องหน้าทั้งหมดในเนมสเปซนี้จะขึ้นต้นด้วยคำนำหน้าบางคำ ซึ่งคุณสามารถระบุได้ที่นี่\nโดยปกติ คำนำหน้านี้จะถูกสืบทอดมาจากชื่อของวิกิ แต่ไม่สามารถมีอักขระเครื่องหมายวรรคตอนได้ เช่น \"#\" หรือ \":\"",
+       "config-ns-invalid": "เนมสเปซ \"<nowiki>$1</nowiki>\" ที่ระบุไม่ถูกต้อง\nระบุเนมสเปซโครงการอื่น",
+       "config-ns-conflict": "เนมสเปซ \"<nowiki>$1</nowiki>\" ที่ระบุขัดแย้งกับเนมสเปซเริ่มต้นของ MediaWiki\nระบุเนมสเปซโครงการอื่น",
+       "config-admin-box": "บัญชีผู้ดูแล",
        "config-admin-name": "ชื่อผู้ใช้ของคุณ:",
        "config-admin-password": "รหัสผ่าน:",
        "config-admin-password-confirm": "รหัสผ่านอีกครั้ง:",
+       "config-admin-help": "ป้อนชื่อผู้ใช้ที่ต้องการของคุณที่นี่ ตัวอย่างเช่น \"Joe Bloggs\"\nชื่อนี้จะเป็นชื่อที่คุณจะใช้สำหรับเข้าสู่ระบบวิกิ",
+       "config-admin-name-blank": "ป้อนชื่อผู้ใช้ของผู้ดูแล",
+       "config-admin-name-invalid": "ชื่อผู้ใช้ \"<nowiki>$1</nowiki>\" ที่ระบุไม่ถูกต้อง\nระบุชื่อผู้ใช้อื่น",
+       "config-admin-password-blank": "ป้อนรหัสผ่านสำหรับบัญชีผู้ดูแล",
+       "config-admin-password-mismatch": "รหัสผ่านสองรหัสที่คุณป้อนไม่ตรงกัน",
        "config-admin-email": "ที่อยู่อีเมล:",
+       "config-admin-email-help": "ป้อนที่อยู่อีเมลที่นี่เพื่อให้คุณสามารถรับอีเมลจากผู้ใช้อื่นๆ บนวิกิ ตั้งค่ารหัสผ่านใหม่ และรับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงในหน้าที่อยู่บนรายการเฝ้าดูของคุณ คุณสามารถปล่อยเขตข้อมูลนี้ให้ว่างไว้ได้",
+       "config-admin-error-user": "เกิดข้อผิดพลาดภายในขณะสร้างผู้ดูแลด้วยชื่อ \"<nowiki>$1</nowiki>\"",
+       "config-admin-error-password": "เกิดข้อผิดพลาดภายในขณะตั้งค่ารหัสผ่านสำหรับผู้ดูแล \"<nowiki>$1</nowiki>\": <pre>$2</pre>",
+       "config-admin-error-bademail": "คุณป้อนที่อยู่อีเมลที่ไม่ถูกต้อง",
+       "config-subscribe": "สมัครรับข้อมูลกับ[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce รายชื่อผู้รับจดหมายเกี่ยวกับการประกาศการออกรุ่น]",
+       "config-subscribe-help": "รายชื่อนี้เป็นรายชื่อผู้รับจดหมายที่มีปริมาณต่ำสำหรับแจ้งข่าวเกี่ยวกับการประกาศการออกรุ่น รวมถึงการประกาศความปลอดภัยที่สำคัญ\nคุณควรสมัครรับข้อมูล และทำการอัปเดตการติดตั้ง MediaWiki ของคุณเมื่อมีรุ่นใหม่ออกมา",
+       "config-subscribe-noemail": "คุณได้พยายามสมัครรับข้อมูลกับรายชื่อผู้รับจดหมายการประกาศการออกรุ่นโดยไม่ได้ระบุที่อยู่อีเมล\nโปรดระบุที่อยู่อีเมล ถ้าคุณต้องการสมัครรับข้อมูลกับรายชื่อผู้รับจดหมาย",
+       "config-pingback": "แบ่งปันข้อมูลเกี่ยวกับการติดตั้งนี้ให้กับผู้พัฒนา MediaWiki",
+       "config-almost-done": "คุณใกล้จะเสร็จสมบูรณ์แล้ว!\nคุณสามารถข้ามการกำหนดค่าที่เหลืออยู่และติดตั้งวิกิได้ในขณะนี้",
        "config-optional-continue": "ถามคำถามฉันอีก",
+       "config-optional-skip": "ฉันเบื่อแล้ว ติดตั้งวิกิให้ฉันเถอะ",
+       "config-profile": "โปรไฟล์สิทธิ์ผู้ใช้:",
+       "config-profile-wiki": "วิกิเปิด",
+       "config-profile-no-anon": "จำเป็นต้องสร้างบัญชี",
+       "config-profile-fishbowl": "เฉพาะผู้แก้ไขที่ได้รับอนุญาตเท่านั้น",
+       "config-profile-private": "วิกิส่วนตัว",
+       "config-profile-help": "วิกิต่างๆ จะใช้งานได้ดีที่สุดถ้าคุณเปิดให้หลายๆ คนร่วมแก้ไขวิกิของคุณได้มากเท่าที่จะได้\nใน MediaWiki มันง่ายที่จะตรวจทานการแก้ไขล่าสุด และแปลงกลับความเสียหายใดๆ ที่ถูกกระทำโดยผู้ใช้ที่ไม่มีมารยาทหรือที่เป็นอันตราย\n\nอย่างไรก็ตาม หลายคนได้พบว่า MediaWiki to be useful มีประโยชน์ในหลากหลายบทบาท และในบางครั้งมันไม่ง่ายที่จะทำให้ทุกๆ คนเชื่อว่า MediaWiki นั้นมีประโยชน์ในทางวิกิ\nดังนั้น คุณมีตัวเลือก\n\nแบบจำลอง <strong>{{int:config-profile-wiki}}</strong> อนุญาตให้ทุกๆ คนร่วมแก้ไขได้ โดยไม่จำเป็นต้องเข้าสู่ระบบ\nวิกิที่มี <strong>{{int:config-profile-no-anon}}</strong> จะจัดเตรียมการดำเนินงานพิเศษ แต่อาจห้ามไม่ให้ผู้คนเข้ามามีส่วนร่วม\n\nสถานการณ์จำลอง <strong>{{int:config-profile-fishbowl}}</strong> อนุญาตให้ผู้แก้ไขที่ได้รับการอนุมัติสามารถทำการแก้ไขได้ แต่ทุกคนสามารถมองเห็นหน้า รวมถึงประวัติได้\n<strong>{{int:config-profile-private}}</strong> อนุญาตให้เฉพาะผู้แก้ไขที่ได้รับการอนุมัติดูหน้า และแก้ไขได้\n\nการกำหนดค่าสิทธิ์ผู้ใช้ที่ซับซ้อนขึ้นจะพร้อมใช้งานหลังจากการติดตั้ง ดูที่ [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights รายการคู่มือที่เกี่ยวข้อง]",
+       "config-license": "ลิขสิทธิ์และสัญญาอนุญาต:",
+       "config-license-none": "ไม่มีส่วนท้ายของใบอนุญาต",
+       "config-license-cc-by-sa": "Creative Commons Attribution-ShareAlike",
+       "config-license-cc-by": "Creative Commons Attribution",
+       "config-license-cc-by-nc-sa": "Creative Commons Attribution-NonCommercial-ShareAlike",
+       "config-license-cc-0": "Creative Commons Zero (สาธารณสมบัติ)",
+       "config-license-gfdl": "GNU Free Documentation License 1.3 หรือสูงกว่า",
        "config-license-pd": "สาธารณสมบัติ",
+       "config-license-cc-choose": "เลือกสัญญาอนุญาต Creative Commons เอง",
        "config-extensions": "ส่วนขยาย",
        "config-install-step-done": "เสร็จสิ้น",
        "config-install-step-failed": "ล้มเหลว",
index f7394c8..c3a7539 100644 (file)
@@ -58,7 +58,7 @@
        "config-restart": "Evet, yeniden başlat",
        "config-welcome": "===Ortam Kontrolleri===\nOrtamın Mediawiki kurulumuna uygun olup olmadığını anlamak için basit kontroller yapılacak.\nKurulumu nasıl tamamlayacağınız konusunda destek isterken bu bilgileri eklemeyi unutmayın.",
        "config-copyright": "=== Telif Hakları ve Koşulları ===\n\n$1\n\nBu program ücretsiz bir yazılımdır; yeniden dağıtabilir veya Özgür Yazılım Kuruluşu tarafından yayınlanan (GNU) Genel Kamu Lisansı koşulları altında değiştirebilirsiniz; isterseniz ikinci lisans sürümünü veya (sizin seçeneğiniz) herhangi bir sonraki lisans sürümünü kullanabilirsiniz.\n\nBu program, faydalı olacağı umuduyla dağıtılmaktadır, ancak ''' herhangi bir garantisi yoktur '''; ''' uygunluk ''' veya ''' belirli bir amaca uygunluk ''' gibi dolaylı garantileri bile yoktur.\nDaha fazla ayrıntı için (GNU) Genel Kamu Lisansına bakınız.\n\nBu program ile birlikte <doclink href=\"Copying\">bir (GNU) Genel Kamu Lisansının bir kopyasını </doclink> almış olmanız gerekir; bu program (GNU) Genel Kamu Lisansı ile dağıtılmadıysa, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, ABD adresine yazın veya [http://www.gnu.org/copyleft/gpl.html online olarak okuyun].",
-       "config-sidebar": "* [https://www.mediawiki.org MediaWiki ana sayfa]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Kullanıcı Rehberi]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Yetkili Rehberi]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ SSS]\n----\n* <doclink href=Readme>Beni oku</doclink>\n* <doclink href=ReleaseNotes>Sürüm notları</doclink>\n* <doclink href=Copying>Kopyalama</doclink>\n* <doclink href=UpgradeDoc>Yükseltme</doclink>",
+       "config-sidebar": "* [https://www.mediawiki.org MediaWiki anasayfa]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Kullanıcı Kılavuzu]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Hizmetli Rehberi]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ SSS]\n----\n* <doclink href=Readme>Beni oku</doclink>\n* <doclink href=ReleaseNotes>Sürüm notları</doclink>\n* <doclink href=Copying>Kopyalama</doclink>\n* <doclink href=UpgradeDoc>Yükseltme</doclink>",
        "config-env-good": "Ortam kontrol edildi.\nMediaWiki'yi kurabilirsiniz.",
        "config-env-bad": "Ortam kontrol edildi.\nMediaWiki'yi kuramazsınız.",
        "config-env-php": "PHP $1 kurulu.",
        "config-install-stats": "İstatistik başlatılıyor",
        "config-install-keys": "Gizli anahtar oluşturma",
        "config-install-subscribe-notpossible": "cURL yüklü değil ve <code>allow_url_fopen</code> kullanılamaz.",
-       "config-install-mainpage": "Varsayılan içerik ile ana sayfa oluşturma",
+       "config-install-mainpage": "Varsayılan içerik ile anasayfa oluşturma",
        "config-install-extension-tables": "Uzantılar için etkinleştirilmiş tablolar oluşturma",
-       "config-install-mainpage-failed": "Ana sayfa eklenemedi:$1",
+       "config-install-mainpage-failed": "Anasayfa eklenemedi: $1",
        "config-download-localsettings": "İndir <code>LocalSettings.php</code>",
        "config-help": "Yardım",
        "config-help-tooltip": "genişletmek için tıklayın",
index 4a24408..e89113c 100644 (file)
@@ -50,6 +50,7 @@
        "config-db-host-oracle": "דאטנבאזע־TNS:",
        "config-db-wiki-settings": "אידענטיפיצירן די דאזיקע וויקי",
        "config-db-name": "דאטנבאזע נאָמען:",
+       "config-db-name-oracle": "דאטנבאזע סכעמע:",
        "config-db-install-account": "באניצער־קאנטע פאר אינסטאלאציע",
        "config-db-username": "דאטנבאזע באניצער־נאָמען:",
        "config-db-password": "דאטנבאזע־פאסווארט:",
index faf5194..ab365ec 100644 (file)
@@ -18,7 +18,8 @@
                        "Reke",
                        "Suchichi02",
                        "Winstonyin",
-                       "Wehwei"
+                       "Wehwei",
+                       "Wwycheuk"
                ]
        },
        "config-desc": "MediaWiki 安裝程式",
@@ -41,7 +42,7 @@
        "config-back": "← 返回",
        "config-continue": "繼續 →",
        "config-page-language": "語言",
-       "config-page-welcome": "歡迎您來到 MediaWiki!",
+       "config-page-welcome": "歡迎使用 MediaWiki!",
        "config-page-dbconnect": "連線到資料庫",
        "config-page-upgrade": "升級目前安裝的版本",
        "config-page-dbsettings": "資料庫設定",
        "config-instantcommons-help": "[https://www.mediawiki.org/wiki/InstantCommons 即時共享資源] 是允許 Wiki 使用來自 [https://commons.wikimedia.org/ Wikimedia Commons] 網站上的圖片、聲音以及其他媒體的一項功能。\n若要開啟此功能,您的 MediaWiki 必須能夠連線網際網路。\n更多有關此功能的訊息,包含如何存除了 Wikimedia Commons 之外其他網站的說明,請參考 \n[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos 操作手冊]。",
        "config-cc-error": "查無該創作共用授權條款,\n請手動輸入您的授權條款名稱。",
        "config-cc-again": "請重新選取...",
-       "config-cc-not-chosen": "請選擇您要使用的創作共享授權條款,然後點選 \"proceed\"。",
+       "config-cc-not-chosen": "請選擇您要使用的創用CC授權條款,然後點選 \"proceed\"。",
        "config-advanced-settings": "進階設定",
        "config-cache-options": "物件快取設定:",
        "config-cache-help": "物件快取是用來增進 MediaWiki 速度的一項功能,透過快取經常使用的資料。\n中型到大型的網站我們會建議開啟這個選項,對小型的網站也有一定程度的效果。",
index 5226aa0..d9c0424 100644 (file)
@@ -383,8 +383,6 @@ class ClassicInterwikiLookup implements InterwikiLookup {
                                . $e->getMessage() );
                }
 
-               ksort( $data );
-
                return array_values( $data );
        }
 
index 558e32c..8dd6193 100644 (file)
@@ -92,12 +92,12 @@ class Interwiki {
        }
 
        /**
-        * Returns all interwiki prefixes
+        * Returns all interwiki prefix definitions.
         *
         * @deprecated since 1.28, unused. Use InterwikiLookup instead.
         *
         * @param string|null $local If set, limits output to local/non-local interwikis
-        * @return array List of prefixes
+        * @return array[] List of interwiki rows
         * @since 1.19
         */
        public static function getAllPrefixes( $local = null ) {
index d0a7719..697e39d 100644 (file)
@@ -47,10 +47,21 @@ interface InterwikiLookup {
        public function fetch( $prefix );
 
        /**
-        * Returns all interwiki prefixes
+        * Returns information about all interwiki prefixes, in the form of rows
+        * of the interwiki table. Each row may have the following keys:
+        *
+        * - iw_prefix: the prefix. Always present.
+        * - iw_url: the URL to use for linking, with $1 as a placeholder for the target page.
+        *           Always present.
+        * - iw_api: the URL of the API. Optional.
+        * - iw_wikiid: the wiki ID (usually the database name for local wikis). Optional.
+        * - iw_local: whether the wiki is local, and the "magic redirect" mechanism should apply.
+        *             Defaults to false.
+        * - iw_trans: whether "scary transclusion" is allowed for this site.
+        *             Defaults to false.
         *
         * @param string|null $local If set, limits output to local/non-local interwikis
-        * @return string[] List of prefixes
+        * @return array[] interwiki rows.
         */
        public function getAllPrefixes( $local = null );
 
index 60d6f43..3baea1a 100644 (file)
@@ -87,16 +87,20 @@ class InterwikiLookupAdapter implements InterwikiLookup {
         * See InterwikiLookup::getAllPrefixes
         *
         * @param string|null $local If set, limits output to local/non-local interwikis
-        * @return string[] List of prefixes
+        * @return array[] interwiki rows
         */
        public function getAllPrefixes( $local = null ) {
-               if ( $local === null ) {
-                       return array_keys( $this->getInterwikiMap() );
-               }
                $res = [];
                foreach ( $this->getInterwikiMap() as $interwikiId => $interwiki ) {
-                       if ( $interwiki->isLocal() === $local ) {
-                               $res[] = $interwikiId;
+                       if ( $local === null || $interwiki->isLocal() === $local ) {
+                               $res[] = [
+                                       'iw_prefix' => $interwikiId,
+                                       'iw_url' => $interwiki->getURL(),
+                                       'iw_api' => $interwiki->getAPI(),
+                                       'iw_wikiid' => $interwiki->getWikiID(),
+                                       'iw_local' => $interwiki->isLocal(),
+                                       'iw_trans' => $interwiki->isTranscludable(),
+                               ];
                        }
                }
                return $res;
index f814cee..703e485 100644 (file)
@@ -69,12 +69,22 @@ abstract class Job implements IJobSpecification {
                global $wgJobClasses;
 
                if ( isset( $wgJobClasses[$command] ) ) {
-                       $class = $wgJobClasses[$command];
-
-                       $job = new $class( $title, $params );
-                       $job->command = $command;
+                       $handler = $wgJobClasses[$command];
+
+                       if ( is_callable( $handler ) ) {
+                               $job = call_user_func( $handler, $title, $params );
+                       } elseif ( class_exists( $handler ) ) {
+                               $job = new $handler( $title, $params );
+                       } else {
+                               $job = null;
+                       }
 
-                       return $job;
+                       if ( $job instanceof Job ) {
+                               $job->command = $command;
+                               return $job;
+                       } else {
+                               throw new InvalidArgumentException( "Cannot instantiate job '$command': bad spec!" );
+                       }
                }
 
                throw new InvalidArgumentException( "Invalid job command '{$command}'" );
index 540b8c5..9b9928d 100644 (file)
  * @author Aaron Schulz
  */
 use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\DBConnRef;
+use Wikimedia\Rdbms\DBConnectionError;
+use Wikimedia\Rdbms\DBError;
 use MediaWiki\MediaWikiServices;
 use Wikimedia\ScopedCallback;
-use Wikimedia\Rdbms\DBConnRef;
 
 /**
  * Class to handle job queues stored in the DB
@@ -183,14 +185,15 @@ class JobQueueDB extends JobQueue {
         * @return void
         */
        protected function doBatchPush( array $jobs, $flags ) {
-               $dbw = $this->getMasterDB();
-
-               $method = __METHOD__;
-               $dbw->onTransactionIdle(
-                       function () use ( $dbw, $jobs, $flags, $method ) {
-                               $this->doBatchPushInternal( $dbw, $jobs, $flags, $method );
-                       },
-                       __METHOD__
+               DeferredUpdates::addUpdate(
+                       new AutoCommitUpdate(
+                               $this->getMasterDB(),
+                               __METHOD__,
+                               function ( IDatabase $dbw, $fname ) use ( $jobs, $flags ) {
+                                       $this->doBatchPushInternal( $dbw, $jobs, $flags, $fname );
+                               }
+                       ),
+                       DeferredUpdates::PRESEND
                );
        }
 
index 9f78404..5d5ea26 100644 (file)
@@ -163,7 +163,9 @@ class JobQueueGroup {
        /**
         * Buffer jobs for insertion via push() or call it now if in CLI mode
         *
-        * Note that MediaWiki::restInPeace() calls pushLazyJobs()
+        * Note that pushLazyJobs() is registered as a deferred update just before
+        * DeferredUpdates::doUpdates() in MediaWiki and JobRunner classes in order
+        * to be executed as the very last deferred update (T100085, T154425).
         *
         * @param IJobSpecification|IJobSpecification[] $jobs A single Job or a list of Jobs
         * @return void
index c2c9d66..eb91680 100644 (file)
@@ -75,6 +75,8 @@ class JobQueueRedis extends JobQueue {
        /** @var string Compression method to use */
        protected $compression;
 
+       const MAX_PUSH_SIZE = 25; // avoid tying up the server
+
        /**
         * @param array $params Possible keys:
         *   - redisConfig : An array of parameters to RedisConnectionPool::__construct().
@@ -212,7 +214,7 @@ class JobQueueRedis extends JobQueue {
                        if ( $flags & self::QOS_ATOMIC ) {
                                $batches = [ $items ]; // all or nothing
                        } else {
-                               $batches = array_chunk( $items, 100 ); // avoid tying up the server
+                               $batches = array_chunk( $items, self::MAX_PUSH_SIZE );
                        }
                        $failed = 0;
                        $pushed = 0;
index baff288..49b7a45 100644 (file)
@@ -28,6 +28,8 @@ use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerInterface;
 use Wikimedia\ScopedCallback;
 use Wikimedia\Rdbms\LBFactory;
+use Wikimedia\Rdbms\DBError;
+use Wikimedia\Rdbms\DBReplicationWaitError;
 
 /**
  * Job queue runner utility methods
@@ -36,6 +38,8 @@ use Wikimedia\Rdbms\LBFactory;
  * @since 1.24
  */
 class JobRunner implements LoggerAwareInterface {
+       /** @var Config */
+       protected $config;
        /** @var callable|null Debug output handler */
        protected $debug;
 
@@ -72,6 +76,7 @@ class JobRunner implements LoggerAwareInterface {
                        $logger = LoggerFactory::getInstance( 'runJobs' );
                }
                $this->setLogger( $logger );
+               $this->config = MediaWikiServices::getInstance()->getMainConfig();
        }
 
        /**
@@ -99,7 +104,8 @@ class JobRunner implements LoggerAwareInterface {
         * @return array Summary response that can easily be JSON serialized
         */
        public function run( array $options ) {
-               global $wgJobClasses, $wgTrxProfilerLimits;
+               $jobClasses = $this->config->get( 'JobClasses' );
+               $profilerLimits = $this->config->get( 'TrxProfilerLimits' );
 
                $response = [ 'jobs' => [], 'reached' => 'none-ready' ];
 
@@ -109,7 +115,7 @@ class JobRunner implements LoggerAwareInterface {
                $noThrottle = isset( $options['throttle'] ) && !$options['throttle'];
 
                // Bail if job type is invalid
-               if ( $type !== false && !isset( $wgJobClasses[$type] ) ) {
+               if ( $type !== false && !isset( $jobClasses[$type] ) ) {
                        $response['reached'] = 'none-possible';
                        return $response;
                }
@@ -134,7 +140,7 @@ class JobRunner implements LoggerAwareInterface {
                // Catch huge single updates that lead to replica DB lag
                $trxProfiler = Profiler::instance()->getTransactionProfiler();
                $trxProfiler->setLogger( LoggerFactory::getInstance( 'DBPerformance' ) );
-               $trxProfiler->setExpectations( $wgTrxProfilerLimits['JobRunner'], __METHOD__ );
+               $trxProfiler->setExpectations( $profilerLimits['JobRunner'], __METHOD__ );
 
                // Some jobs types should not run until a certain timestamp
                $backoffs = []; // map of (type => UNIX expiry)
@@ -287,6 +293,8 @@ class JobRunner implements LoggerAwareInterface {
                        $status = $job->run();
                        $error = $job->getLastError();
                        $this->commitMasterChanges( $lbFactory, $job, $fnameTrxOwner );
+                       // Important: this must be the last deferred update added (T100085, T154425)
+                       DeferredUpdates::addCallableUpdate( [ JobQueueGroup::class, 'pushLazyJobs' ] );
                        // Run any deferred update tasks; doUpdates() manages transactions itself
                        DeferredUpdates::doUpdates();
                } catch ( Exception $e ) {
@@ -358,15 +366,13 @@ class JobRunner implements LoggerAwareInterface {
         * @see $wgJobBackoffThrottling
         */
        private function getBackoffTimeToWait( Job $job ) {
-               global $wgJobBackoffThrottling;
+               $throttling = $this->config->get( 'JobBackoffThrottling' );
 
-               if ( !isset( $wgJobBackoffThrottling[$job->getType()] ) ||
-                       $job instanceof DuplicateJob // no work was done
-               ) {
+               if ( !isset( $throttling[$job->getType()] ) || $job instanceof DuplicateJob ) {
                        return 0; // not throttled
                }
 
-               $itemsPerSecond = $wgJobBackoffThrottling[$job->getType()];
+               $itemsPerSecond = $throttling[$job->getType()];
                if ( $itemsPerSecond <= 0 ) {
                        return 0; // not throttled
                }
@@ -514,17 +520,17 @@ class JobRunner implements LoggerAwareInterface {
         * @throws DBError
         */
        private function commitMasterChanges( LBFactory $lbFactory, Job $job, $fnameTrxOwner ) {
-               global $wgJobSerialCommitThreshold;
+               $syncThreshold = $this->config->get( 'JobSerialCommitThreshold' );
 
                $time = false;
                $lb = $lbFactory->getMainLB( wfWikiID() );
-               if ( $wgJobSerialCommitThreshold !== false && $lb->getServerCount() > 1 ) {
+               if ( $syncThreshold !== false && $lb->getServerCount() > 1 ) {
                        // Generally, there is one master connection to the local DB
                        $dbwSerial = $lb->getAnyOpenConnection( $lb->getWriterIndex() );
                        // We need natively blocking fast locks
                        if ( $dbwSerial && $dbwSerial->namedLocksEnqueue() ) {
                                $time = $dbwSerial->pendingWriteQueryDuration( $dbwSerial::ESTIMATE_DB_APPLY );
-                               if ( $time < $wgJobSerialCommitThreshold ) {
+                               if ( $time < $syncThreshold ) {
                                        $dbwSerial = false;
                                }
                        } else {
@@ -536,7 +542,12 @@ class JobRunner implements LoggerAwareInterface {
                }
 
                if ( !$dbwSerial ) {
-                       $lbFactory->commitMasterChanges( $fnameTrxOwner );
+                       $lbFactory->commitMasterChanges(
+                               $fnameTrxOwner,
+                               // Abort if any transaction was too big
+                               [ 'maxWriteDuration' => $this->config->get( 'MaxJobDBWriteDuration' ) ]
+                       );
+
                        return;
                }
 
@@ -561,7 +572,11 @@ class JobRunner implements LoggerAwareInterface {
                }
 
                // Actually commit the DB master changes
-               $lbFactory->commitMasterChanges( $fnameTrxOwner );
+               $lbFactory->commitMasterChanges(
+                       $fnameTrxOwner,
+                       // Abort if any transaction was too big
+                       [ 'maxWriteDuration' => $this->config->get( 'MaxJobDBWriteDuration' ) ]
+               );
                ScopedCallback::consume( $unlocker );
        }
 }
index 5c73308..eb367af 100644 (file)
@@ -20,6 +20,7 @@
  * @ingroup JobQueue
  */
 use MediaWiki\MediaWikiServices;
+use Wikimedia\Rdbms\DBReplicationWaitError;
 
 /**
  * Job for pruning recent changes
@@ -230,7 +231,6 @@ class RecentChangesUpdateJob extends Job {
                                        ],
                                        __METHOD__
                                );
-
                        },
                        __METHOD__
                );
index f9284a5..02bb829 100644 (file)
@@ -21,6 +21,7 @@
  * @ingroup JobQueue
  */
 use MediaWiki\MediaWikiServices;
+use Wikimedia\Rdbms\DBReplicationWaitError;
 
 /**
  * Job to update link tables for pages
@@ -86,7 +87,7 @@ class RefreshLinksJob extends Job {
                        // When the base job branches, wait for the replica DBs to catch up to the master.
                        // From then on, we know that any template changes at the time the base job was
                        // enqueued will be reflected in backlink page parses when the leaf jobs run.
-                       if ( !isset( $params['range'] ) ) {
+                       if ( !isset( $this->params['range'] ) ) {
                                try {
                                        $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
                                        $lbFactory->waitForReplication( [
@@ -112,7 +113,7 @@ class RefreshLinksJob extends Job {
                        JobQueueGroup::singleton()->push( $jobs );
                // Job to update link tables for a set of titles
                } elseif ( isset( $this->params['pages'] ) ) {
-                       foreach ( $this->params['pages'] as $pageId => $nsAndKey ) {
+                       foreach ( $this->params['pages'] as $nsAndKey ) {
                                list( $ns, $dbKey ) = $nsAndKey;
                                $this->runForTitle( Title::makeTitleSafe( $ns, $dbKey ) );
                        }
@@ -252,7 +253,7 @@ class RefreshLinksJob extends Job {
                // This avoids snapshot-clearing errors in LinksUpdate::acquirePageLock().
                $lbFactory->commitAndWaitForReplication( __METHOD__, $ticket );
 
-               foreach ( $updates as $key => $update ) {
+               foreach ( $updates as $update ) {
                        // FIXME: This code probably shouldn't be here?
                        // Needed by things like Echo notifications which need
                        // to know which user caused the links update
index 081e114..cf3155d 100644 (file)
@@ -77,7 +77,7 @@ class ThumbnailRenderJob extends Job {
                }
        }
 
-       protected function hitThumbUrl( $file, $transformParams, &$thumbUrl ) {
+       protected function hitThumbUrl( LocalFile $file, $transformParams, &$thumbUrl ) {
                global $wgUploadThumbnailRenderHttpCustomHost, $wgUploadThumbnailRenderHttpCustomDomain;
 
                $thumbName = $file->thumbName( $transformParams );
index bba07e2..c504f35 100644 (file)
@@ -38,7 +38,7 @@ class CSSMin {
         * Internet Explorer data URI length limit. See encodeImageAsDataURI().
         */
        const DATA_URI_SIZE_LIMIT = 32768;
-       const URL_REGEX = 'url\(\s*[\'"]?(?P<file>[^\?\)\'"]*?)(?P<query>\?[^\)\'"]*?|)[\'"]?\s*\)';
+
        const EMBED_REGEX = '\/\*\s*\@embed\s*\*\/';
        const COMMENT_REGEX = '\/\*.*?\*\/';
 
@@ -72,8 +72,9 @@ class CSSMin {
                $files = [];
 
                $rFlags = PREG_OFFSET_CAPTURE | PREG_SET_ORDER;
-               if ( preg_match_all( '/' . self::URL_REGEX . '/', $stripped, $matches, $rFlags ) ) {
+               if ( preg_match_all( '/' . self::getUrlRegex() . '/', $stripped, $matches, $rFlags ) ) {
                        foreach ( $matches as $match ) {
+                               self::processUrlMatch( $match, $rFlags );
                                $url = $match['file'][0];
 
                                // Skip fully-qualified and protocol-relative URLs and data URIs
@@ -266,7 +267,7 @@ class CSSMin {
                // 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 . '[^;}]*(?=[;}]|$)/';
+               $pattern = '/(?:^|[;{])\K[^;{}]*' . self::getUrlRegex() . '[^;}]*(?=[;}]|$)/';
 
                $source = preg_replace_callback(
                        $pattern,
@@ -290,13 +291,14 @@ class CSSMin {
 
                                // 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 . '/';
+                               $pattern = '/(?P<embed>' . CSSMin::EMBED_REGEX . '\s*|)' . self::getUrlRegex() . '/';
 
                                $ruleWithRemapped = preg_replace_callback(
                                        $pattern,
                                        function ( $match ) use ( $local, $remote ) {
-                                               $remapped = CSSMin::remapOne( $match['file'], $match['query'], $local, $remote, false );
+                                               self::processUrlMatch( $match );
 
+                                               $remapped = CSSMin::remapOne( $match['file'], $match['query'], $local, $remote, false );
                                                return CSSMin::buildUrlValue( $remapped );
                                        },
                                        $rule
@@ -309,6 +311,8 @@ class CSSMin {
                                        $ruleWithEmbedded = preg_replace_callback(
                                                $pattern,
                                                function ( $match ) use ( $embedAll, $local, $remote, &$mimeTypes ) {
+                                                       self::processUrlMatch( $match );
+
                                                        $embed = $embedAll || $match['embed'];
                                                        $embedded = CSSMin::remapOne(
                                                                $match['file'],
@@ -385,6 +389,69 @@ class CSSMin {
                return false;
        }
 
+       private static function getUrlRegex() {
+               static $urlRegex;
+               if ( $urlRegex === null ) {
+                       // Match these three variants separately to avoid broken urls when
+                       // e.g. a double quoted url contains a parenthesis, or when a
+                       // single quoted url contains a double quote, etc.
+                       // Note: PCRE doesn't support multiple capture groups with the same name by default.
+                       // - PCRE 6.7 introduced the "J" modifier (PCRE_INFO_JCHANGED for PCRE_DUPNAMES).
+                       //   https://secure.php.net/manual/en/reference.pcre.pattern.modifiers.php
+                       //   However this isn't useful since it just ignores all but the first one.
+                       //   Also, while the modifier was introduced in PCRE 6.7 (PHP 5.2+) it was
+                       //   not exposed to public preg_* functions until PHP 5.6.0.
+                       // - PCRE 8.36 fixed this to work as expected (e.g. merge conceptually to
+                       //   only return the one matched in the part that actually matched).
+                       //   However MediaWiki supports 5.5.9, which has PCRE 8.32
+                       //   Per https://secure.php.net/manual/en/pcre.installation.php:
+                       //   - PCRE 8.32 (PHP 5.5.0)
+                       //   - PCRE 8.34 (PHP 5.5.10, PHP 5.6.0)
+                       //   - PCRE 8.37 (PHP 5.5.26, PHP 5.6.9, PHP 7.0.0)
+                       //   Workaround by using different groups and merge via processUrlMatch().
+                       // - Using string concatenation for class constant or member assignments
+                       //   is only supported in PHP 5.6. Use a getter method for now.
+                       $urlRegex = '(' .
+                               // Unquoted url
+                               'url\(\s*(?P<file0>[^\'"][^\?\)]*?)(?P<query0>\?[^\)]*?|)\s*\)' .
+                               // Single quoted url
+                               '|url\(\s*\'(?P<file1>[^\?\']*?)(?P<query1>\?[^\']*?|)\'\s*\)' .
+                               // Double quoted url
+                               '|url\(\s*"(?P<file2>[^\?"]*?)(?P<query2>\?[^"]*?|)"\s*\)' .
+                               ')';
+               }
+               return $urlRegex;
+       }
+
+       private static function processUrlMatch( array &$match, $flags = 0 ) {
+               if ( $flags & PREG_SET_ORDER ) {
+                       // preg_match_all with PREG_SET_ORDER will return each group in each
+                       // match array, and if it didn't match, instead of the sub array
+                       // being an empty array it is `[ '', -1 ]`...
+                       if ( isset( $match['file0'] ) && $match['file0'][1] !== -1 ) {
+                               $match['file'] = $match['file0'];
+                               $match['query'] = $match['query0'];
+                       } elseif ( isset( $match['file1'] ) && $match['file1'][1] !== -1 ) {
+                               $match['file'] = $match['file1'];
+                               $match['query'] = $match['query1'];
+                       } else {
+                               $match['file'] = $match['file2'];
+                               $match['query'] = $match['query2'];
+                       }
+               } else {
+                       if ( isset( $match['file0'] ) && $match['file0'] !== '' ) {
+                               $match['file'] = $match['file0'];
+                               $match['query'] = $match['query0'];
+                       } elseif ( isset( $match['file1'] ) && $match['file1'] !== '' ) {
+                               $match['file'] = $match['file1'];
+                               $match['query'] = $match['query1'];
+                       } else {
+                               $match['file'] = $match['file2'];
+                               $match['query'] = $match['query2'];
+                       }
+               }
+       }
+
        /**
         * Remap or embed a CSS URL path.
         *
index 0d3613a..4b4a913 100644 (file)
@@ -247,8 +247,11 @@ class CryptRand {
                        // On Linux, getrandom syscall will be used if available.
                        // On Windows CryptGenRandom will always be used
                        // On other platforms, /dev/urandom will be used.
+                       // Avoids polyfills from before php 7.0
                        // All error situations will throw Exceptions and or Errors
-                       if ( function_exists( 'random_bytes' ) ) {
+                       if ( PHP_VERSION_ID >= 70000
+                               || ( defined( 'HHVM_VERSION_ID' ) && HHVM_VERSION_ID >= 31101 )
+                       ) {
                                $rem = $bytes - strlen( $buffer );
                                $buffer .= random_bytes( $rem );
                        }
index 4a6e3fb..e55bebc 100644 (file)
@@ -63,8 +63,8 @@ class IEUrlExtension {
                // Check QUERY_STRING or REQUEST_URI
                if ( isset( $vars['SERVER_SOFTWARE'] )
                        && isset( $vars['REQUEST_URI'] )
-                       && self::haveUndecodedRequestUri( $vars['SERVER_SOFTWARE'] ) )
-               {
+                       && self::haveUndecodedRequestUri( $vars['SERVER_SOFTWARE'] )
+               {
                        $urlPart = $vars['REQUEST_URI'];
                } elseif ( isset( $vars['QUERY_STRING'] ) ) {
                        $urlPart = $vars['QUERY_STRING'];
@@ -79,8 +79,8 @@ class IEUrlExtension {
                // Some servers have PATH_INFO but not REQUEST_URI, so we check both
                // to be on the safe side.
                if ( isset( $vars['PATH_INFO'] )
-                       && self::isUrlExtensionBad( $vars['PATH_INFO'], $extWhitelist ) )
-               {
+                       && self::isUrlExtensionBad( $vars['PATH_INFO'], $extWhitelist )
+               {
                        return true;
                }
 
@@ -223,8 +223,8 @@ class IEUrlExtension {
                                // If the extension is NOT exe, dll or cgi, return it
                                $extension = substr( $url, $pos, $nextPos - $pos );
                                if ( strcasecmp( $extension, 'exe' ) && strcasecmp( $extension, 'dll' ) &&
-                                       strcasecmp( $extension, 'cgi' ) )
-                               {
+                                       strcasecmp( $extension, 'cgi' )
+                               {
                                        return $extension;
                                }
                                // Else continue looking
index f0b44a5..e9922b9 100644 (file)
  * @file
  */
 
+use Psr\Log\LoggerAwareInterface;
+use Psr\Log\LoggerInterface;
+use Psr\Log\NullLogger;
+
 /**
  * Class to handle concurrent HTTP requests
  *
@@ -42,7 +46,7 @@
  * @author Aaron Schulz
  * @since 1.23
  */
-class MultiHttpClient {
+class MultiHttpClient implements LoggerAwareInterface {
        /** @var resource */
        protected $multiHandle = null; // curl_multi handle
        /** @var string|null SSL certificates path  */
@@ -59,6 +63,8 @@ class MultiHttpClient {
        protected $proxy;
        /** @var string */
        protected $userAgent = 'wikimedia/multi-http-client v1.0';
+       /** @var LoggerInterface */
+       protected $logger;
 
        /**
         * @param array $options
@@ -78,13 +84,17 @@ class MultiHttpClient {
                        }
                }
                static $opts = [
-                       'connTimeout', 'reqTimeout', 'usePipelining', 'maxConnsPerHost', 'proxy', 'userAgent'
+                       'connTimeout', 'reqTimeout', 'usePipelining', 'maxConnsPerHost',
+                       'proxy', 'userAgent', 'logger'
                ];
                foreach ( $opts as $key ) {
                        if ( isset( $options[$key] ) ) {
                                $this->$key = $options[$key];
                        }
                }
+               if ( $this->logger === null ) {
+                       $this->logger = new NullLogger;
+               }
        }
 
        /**
@@ -162,6 +172,7 @@ class MultiHttpClient {
                        } elseif ( !isset( $req['url'] ) ) {
                                throw new Exception( "Request has no 'url' field set." );
                        }
+                       $this->logger->debug( "{$req['method']}: {$req['url']}" );
                        $req['query'] = isset( $req['query'] ) ? $req['query'] : [];
                        $headers = []; // normalized headers
                        if ( isset( $req['headers'] ) ) {
@@ -235,6 +246,8 @@ class MultiHttpClient {
                                        if ( function_exists( 'curl_strerror' ) ) {
                                                $req['response']['error'] .= " " . curl_strerror( $errno );
                                        }
+                                       $this->logger->warning( "Error fetching URL \"{$req['url']}\": " .
+                                               $req['response']['error'] );
                                }
                        } else {
                                $req['response']['error'] = "(curl error: no status set)";
@@ -420,6 +433,15 @@ class MultiHttpClient {
                return $this->multiHandle;
        }
 
+       /**
+        * Register a logger
+        *
+        * @param LoggerInterface
+        */
+       public function setLogger( LoggerInterface $logger ) {
+               $this->logger = $logger;
+       }
+
        function __destruct() {
                if ( $this->multiHandle ) {
                        curl_multi_close( $this->multiHandle );
index ae0ad6f..029f94c 100644 (file)
 class SwiftFileBackend extends FileBackendStore {
        /** @var MultiHttpClient */
        protected $http;
-
        /** @var int TTL in seconds */
        protected $authTTL;
-
        /** @var string Authentication base URL (without version) */
        protected $swiftAuthUrl;
-
+       /** @var string Override of storage base URL */
+       protected $swiftStorageUrl;
        /** @var string Swift user (account:user) to authenticate as */
        protected $swiftUser;
-
        /** @var string Secret key for user */
        protected $swiftKey;
-
        /** @var string Shared secret value for making temp URLs */
        protected $swiftTempUrlKey;
-
        /** @var string S3 access key (RADOS Gateway) */
        protected $rgwS3AccessKey;
-
        /** @var string S3 authentication key (RADOS Gateway) */
        protected $rgwS3SecretKey;
 
@@ -65,10 +60,8 @@ class SwiftFileBackend extends FileBackendStore {
 
        /** @var array */
        protected $authCreds;
-
        /** @var int UNIX timestamp */
        protected $authSessionTimestamp = 0;
-
        /** @var int UNIX timestamp */
        protected $authErrorTimestamp = null;
 
@@ -84,6 +77,8 @@ 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.
+        *   - swiftStorageUrl    : Swift storage URL (overrides that of the authentication response).
+        *                          This is useful to set if a TLS proxy is in use.
         *   - 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)
@@ -116,6 +111,9 @@ class SwiftFileBackend extends FileBackendStore {
                $this->swiftTempUrlKey = isset( $config['swiftTempUrlKey'] )
                        ? $config['swiftTempUrlKey']
                        : '';
+               $this->swiftStorageUrl = isset( $config['swiftStorageUrl'] )
+                       ? $config['swiftStorageUrl']
+                       : null;
                $this->shardViaHashLevels = isset( $config['shardViaHashLevels'] )
                        ? $config['shardViaHashLevels']
                        : '';
@@ -1674,8 +1672,11 @@ class SwiftFileBackend extends FileBackendStore {
                                if ( $rcode >= 200 && $rcode <= 299 ) { // OK
                                        $this->authCreds = [
                                                'auth_token' => $rhdrs['x-auth-token'],
-                                               'storage_url' => $rhdrs['x-storage-url']
+                                               'storage_url' => ( $this->swiftStorageUrl !== null )
+                                                       ? $this->swiftStorageUrl
+                                                       : $rhdrs['x-storage-url']
                                        ];
+
                                        $this->srvCache->set( $cacheKey, $this->authCreds, ceil( $this->authTTL / 2 ) );
                                        $this->authSessionTimestamp = time();
                                } elseif ( $rcode === 401 ) {
diff --git a/includes/libs/http/HttpAcceptNegotiator.php b/includes/libs/http/HttpAcceptNegotiator.php
new file mode 100644 (file)
index 0000000..5f8d9a6
--- /dev/null
@@ -0,0 +1,139 @@
+<?php
+
+/**
+ * Utility for negotiating a value from a set of supported values using a preference list.
+ * This is intended for use with HTTP headers like Accept, Accept-Language, Accept-Encoding, etc.
+ * See RFC 2616 section 14 for details.
+ *
+ * To use this with a request header, first parse the header value into an array of weights
+ * using HttpAcceptParser, then call getBestSupportedKey.
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ * @author Thiemo Mättig
+ */
+
+namespace Wikimedia\Http;
+
+class HttpAcceptNegotiator {
+
+       /**
+        * @var string[]
+        */
+       private $supportedValues;
+
+       /**
+        * @var string
+        */
+       private $defaultValue;
+
+       /**
+        * @param string[] $supported A list of supported values.
+        */
+       public function __construct( array $supported ) {
+               $this->supportedValues = $supported;
+               $this->defaultValue = reset( $supported );
+       }
+
+       /**
+        * Returns the best supported key from the given weight map. Of the keys from the
+        * $weights parameter that are also in the list of supported values supplied to
+        * the constructor, this returns the key that has the highest weight associated
+        * with it. If two keys have the same weight, the more specific key is preferred,
+        * as required by RFC2616 section 14. Keys that map to 0 or false are ignored.
+        * If no matching key is found, $default is returned.
+        *
+        * @param float[] $weights An associative array mapping accepted values to their
+        *              respective weights.
+        *
+        * @param null|string $default The value to return if non of the keys in $weights
+        *              is supported (null per default).
+        *
+        * @return null|string The best supported key from the $weights parameter.
+        */
+       public function getBestSupportedKey( array $weights, $default = null ) {
+               // Make sure we correctly bias against wildcards and ranges, see RFC2616, section 14.
+               foreach ( $weights as $name => &$weight ) {
+                       if ( $name === '*' || $name === '*/*' ) {
+                               $weight -= 0.000002;
+                       } elseif ( substr( $name, -2 ) === '/*' ) {
+                               $weight -= 0.000001;
+                       }
+               }
+
+               // Sort $weights by value and...
+               asort( $weights );
+
+               // remove any keys with values equal to 0 or false (HTTP/1.1 section 3.9)
+               $weights = array_filter( $weights );
+
+               // ...use the ordered list of keys
+               $preferences = array_reverse( array_keys( $weights ) );
+
+               $value = $this->getFirstSupportedValue( $preferences, $default );
+               return $value;
+       }
+
+       /**
+        * Returns the first supported value from the given preference list. Of the values from
+        * the $preferences parameter that are also in the list of supported values supplied
+        * to the constructor, this returns the value that has the lowest index in the list.
+        * If no such value is found, $default is returned.
+        *
+        * @param string[] $preferences A list of acceptable values, in order of preference.
+        *
+        * @param null|string $default The value to return if non of the keys in $weights
+        *              is supported (null per default).
+        *
+        * @return null|string The best supported key from the $weights parameter.
+        */
+       public function getFirstSupportedValue( array $preferences, $default = null ) {
+               foreach ( $preferences as $value ) {
+                       foreach ( $this->supportedValues as $supported ) {
+                               if ( $this->valueMatches( $value, $supported ) ) {
+                                       return $supported;
+                               }
+                       }
+               }
+
+               return $default;
+       }
+
+       /**
+        * Returns true if the given acceptable value matches the given supported value,
+        * according to the HTTP specification. The following rules are used:
+        *
+        * - comparison is case-insensitive
+        * - if $accepted and $supported are equal, they match
+        * - if $accepted is `*` or `*` followed by `/*`, it matches any $supported value.
+        * - if both $accepted and $supported contain a `/`, and $accepted ends with `/*`,
+        *   they match if the part before the first `/` is equal.
+        *
+        * @param string $accepted An accepted value (may contain wildcards)
+        * @param string  $supported A supported value.
+        *
+        * @return bool Whether the given supported value matches the given accepted value.
+        */
+       private function valueMatches( $accepted, $supported ) {
+               // RDF 2045: MIME types are case insensitive.
+               // full match
+               if ( strcasecmp( $accepted, $supported ) === 0 ) {
+                       return true;
+               }
+
+               // wildcard match (HTTP/1.1 section 14.1, 14.2, 14.3)
+               if ( $accepted === '*' || $accepted === '*/*' ) {
+                       return true;
+               }
+
+               // wildcard match (HTTP/1.1 section 14.1)
+               if ( substr( $accepted, -2 ) === '/*'
+                       && strncasecmp( $accepted, $supported, strlen( $accepted ) - 2 ) === 0
+               ) {
+                       return true;
+               }
+
+               return false;
+       }
+
+}
diff --git a/includes/libs/http/HttpAcceptParser.php b/includes/libs/http/HttpAcceptParser.php
new file mode 100644 (file)
index 0000000..bce071e
--- /dev/null
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * Utility for parsing a HTTP Accept header value into a weight map. May also be used with
+ * other, similar headers like Accept-Language, Accept-Encoding, etc.
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ */
+
+namespace Wikimedia\Http;
+
+class HttpAcceptParser {
+
+       /**
+        * Parses an HTTP header into a weight map, that is an associative array
+        * mapping values to their respective weights. Any header name preceding
+        * weight spec is ignored for convenience.
+        *
+        * This implementation is partially based on the code at
+        * http://www.thefutureoftheweb.com/blog/use-accept-language-header
+        *
+        * Note that type parameters and accept extension like the "level" parameter
+        * are not supported, weights are derived from "q" values only.
+        *
+        * @todo: If additional type parameters are present, ignore them cleanly.
+        *        At present, they often confuse the result.
+        *
+        * See HTTP/1.1 section 14 for details.
+        *
+        * @param string $rawHeader
+        *
+        * @return array
+        */
+       public function parseWeights( $rawHeader ) {
+               //FIXME: The code below was copied and adapted from WebRequest::getAcceptLang.
+               //       Move this utility class into core for reuse!
+
+               // first, strip header name
+               $rawHeader = preg_replace( '/^[-\w]+:\s*/', '', $rawHeader );
+
+               // Return values in lower case
+               $rawHeader = strtolower( $rawHeader );
+
+               // Break up string into pieces (values and q factors)
+               $value_parse = null;
+               preg_match_all( '@([a-z\d*]+([-+/.][a-z\d*]+)*)\s*(;\s*q\s*=\s*(1(\.0{0,3})?|0(\.\d{0,3})?)?)?@',
+                       $rawHeader, $value_parse );
+
+               if ( !count( $value_parse[1] ) ) {
+                       return [];
+               }
+
+               $values = $value_parse[1];
+               $qvalues = $value_parse[4];
+               $indices = range( 0, count( $value_parse[1] ) - 1 );
+
+               // Set default q factor to 1
+               foreach ( $indices as $index ) {
+                       if ( $qvalues[$index] === '' ) {
+                               $qvalues[$index] = 1;
+                       } elseif ( $qvalues[$index] == 0 ) {
+                               unset( $values[$index], $qvalues[$index], $indices[$index] );
+                       } else {
+                               $qvalues[$index] = (float)$qvalues[$index];
+                       }
+               }
+
+               // Sort list. First by $qvalues, then by order. Reorder $values the same way
+               array_multisort( $qvalues, SORT_DESC, SORT_NUMERIC, $indices, $values );
+
+               // Create a list like "en" => 0.8
+               $weights = array_combine( $values, $qvalues );
+
+               return $weights;
+       }
+
+}
index ddb8521..26e25f9 100644 (file)
@@ -23,6 +23,7 @@
 
 use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\DBError;
 
 /**
  * Version of LockManager based on using named/row DB locks.
index d6b1ce8..65c6993 100644 (file)
@@ -1,4 +1,7 @@
 <?php
+
+use Wikimedia\Rdbms\DBError;
+
 /**
  * PostgreSQL version of DBLockManager that supports shared locks.
  * All locks are non-blocking, which avoids deadlocks.
index 0d1e527..badcb2b 100644 (file)
@@ -399,8 +399,8 @@ class IEContentAnalyzer {
                $proposedFormat = $this->getDataFormat( $version, $proposed );
                if ( $proposedFormat == 'unknown'
                        && $proposed != 'multipart/mixed'
-                       && $proposed != 'multipart/x-mixed-replace' )
-               {
+                       && $proposed != 'multipart/x-mixed-replace'
+               {
                        return $proposed;
                }
                if ( strval( $chunk ) === '' ) {
@@ -426,15 +426,15 @@ class IEContentAnalyzer {
                        return 'image/gif';
                }
                if ( ( $proposed == 'image/pjpeg' || $proposed == 'image/jpeg' )
-                       && $binaryType == 'image/pjpeg' )
-               {
+                       && $binaryType == 'image/pjpeg'
+               {
                        return $proposed;
                }
                // PNG check added in IE 7
                if ( $version >= 'ie07'
                        && ( $proposed == 'image/x-png' || $proposed == 'image/png' )
-                       && $binaryType == 'image/x-png' )
-               {
+                       && $binaryType == 'image/x-png'
+               {
                        return $proposed;
                }
 
@@ -450,8 +450,8 @@ class IEContentAnalyzer {
                }
                if ( isset( $sampleFound['rdf-tag'] )
                        && isset( $sampleFound['rdf-url'] )
-                       && isset( $sampleFound['rdf-purl'] ) )
-               {
+                       && isset( $sampleFound['rdf-purl'] )
+               {
                        return 'application/rss+xml';
                }
                if ( isset( $sampleFound['atom'] ) ) {
@@ -497,8 +497,8 @@ class IEContentAnalyzer {
                // Freaky heuristics to determine if the data is text or binary
                // The heuristic is of course broken for non-ASCII text
                if ( $counters['ctrl'] != 0 && ( $counters['ff'] + $counters['low'] )
-                       < ( $counters['ctrl'] + $counters['high'] ) * 16 )
-               {
+                       < ( $counters['ctrl'] + $counters['high'] ) * 16
+               {
                        $kindOfBinary = true;
                        $type = $binaryType ? $binaryType : $textType;
                        if ( $type === false ) {
@@ -599,13 +599,13 @@ class IEContentAnalyzer {
 
                if ( $chunk2 == 'BM'
                        && substr( $chunk, 6, 2 ) == "\000\000"
-                       && substr( $chunk, 8, 2 ) == "\000\000" )
-               {
+                       && substr( $chunk, 8, 2 ) == "\000\000"
+               {
                        return 'image/bmp'; // another non-standard MIME
                }
                if ( $chunk4 == 'RIFF'
-                       && substr( $chunk, 8, 4 ) == 'WAVE' )
-               {
+                       && substr( $chunk, 8, 4 ) == 'WAVE'
+               {
                        return 'audio/wav';
                }
                // These were integer literals in IE
@@ -613,8 +613,8 @@ class IEContentAnalyzer {
                if ( $chunk4 == ".sd\000"
                        || $chunk4 == ".snd"
                        || $chunk4 == "\000ds."
-                       || $chunk4 == "dns." )
-               {
+                       || $chunk4 == "dns."
+               {
                        return 'audio/basic';
                }
                if ( $chunk3 == "MM\000" ) {
@@ -648,8 +648,8 @@ class IEContentAnalyzer {
                        return 'video/mpeg';
                }
                if ( $chunk4 == "\001\000\000\000"
-                       && substr( $chunk, 40, 4 ) == ' EMF' )
-               {
+                       && substr( $chunk, 40, 4 ) == ' EMF'
+               {
                        return 'image/x-emf';
                }
                if ( $chunk4 == "\xd7\xcd\xc6\x9a" ) {
@@ -789,8 +789,8 @@ class IEContentAnalyzer {
                        if ( !strncasecmp( $remainder, $rdfUrl, strlen( $rdfUrl ) ) ) {
                                $found['rdf-url'] = true;
                                if ( isset( $found['rdf-tag'] )
-                                       && isset( $found['rdf-purl'] ) // [sic]
-                               {
+                                       && isset( $found['rdf-purl'] ) // [sic]
+                               {
                                        break;
                                }
                                continue;
@@ -798,8 +798,8 @@ class IEContentAnalyzer {
 
                        if ( !strncasecmp( $remainder, $rdfPurl, strlen( $rdfPurl ) ) ) {
                                if ( isset( $found['rdf-tag'] )
-                                       && isset( $found['rdf-url'] ) // [sic]
-                               {
+                                       && isset( $found['rdf-url'] ) // [sic]
+                               {
                                        break;
                                }
                                continue;
index 4cd8e4e..0083e4b 100644 (file)
@@ -529,7 +529,7 @@ EOT;
                        // Formats we recognize magic numbers for
                        'djvu', 'ogx', 'ogg', 'ogv', 'oga', 'spx', 'opus',
                        'mid', 'pdf', 'wmf', 'xcf', 'webm', 'mkv', 'mka',
-                       'webp',
+                       'webp', 'mp3',
 
                        // XML formats we sure hope we recognize reliably
                        'svg',
@@ -673,6 +673,10 @@ EOT;
                        // Multimedia...
                        'MThd'             => 'audio/midi',
                        'OggS'             => 'application/ogg',
+                       'ID3'              => 'audio/mpeg',
+                       "\xff\xfb"         => 'audio/mpeg', // MPEG-1 layer 3
+                       "\xff\xf3"         => 'audio/mpeg', // MPEG-2 layer 3 (lower sample rates)
+                       "\xff\xe3"         => 'audio/mpeg', // MPEG-2.5 layer 3 (very low sample rates)
 
                        // Image formats...
                        // Note that WMF may have a bare header, no magic number.
@@ -738,8 +742,8 @@ EOT;
                        ( strpos( $head, "<\x00?\x00 " ) !== false ) ||
                        ( strpos( $head, "<\x00?\x00\n" ) !== false ) ||
                        ( strpos( $head, "<\x00?\x00\t" ) !== false ) ||
-                       ( strpos( $head, "<\x00?\x00=" ) !== false ) ) {
-
+                       ( strpos( $head, "<\x00?\x00=" ) !== false )
+               ) {
                        $this->logger->info( __METHOD__ . ": recognized $file as application/x-php\n" );
                        return 'application/x-php';
                }
@@ -1055,7 +1059,6 @@ EOT;
                // Special code for ogg - detect if it's video (theora),
                // else label it as sound.
                if ( $mime == 'application/ogg' && file_exists( $path ) ) {
-
                        // Read a chunk of the file
                        $f = fopen( $path, "rt" );
                        if ( !$f ) {
@@ -1161,6 +1164,15 @@ EOT;
                return MEDIATYPE_UNKNOWN;
        }
 
+       /**
+        * Returns an array of media types (MEDIATYPE_xxx constants)
+        *
+        * @return array
+        */
+       public function getMediaTypes() {
+               return array_keys( $this->mediaTypes );
+       }
+
        /**
         * Get the MIME types that various versions of Internet Explorer would
         * detect from a chunk of the content.
index c3fcab9..a94f86a 100644 (file)
@@ -1114,9 +1114,13 @@ class MemcachedClient {
                if ( $this->_debug ) {
                        $this->_debugprint( sprintf( "%s %s (%s)", $cmd, $key, $line ) );
                }
-               if ( $line == "STORED" ) {
+               if ( $line === "STORED" ) {
+                       return true;
+               } elseif ( $line === "NOT_STORED" && $cmd === "set" ) {
+                       // "Not stored" is always used as the mcrouter response with AllAsyncRoute
                        return true;
                }
+
                return false;
        }
 
index 5983c1b..c568e7b 100644 (file)
@@ -149,7 +149,12 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
 
        public function set( $key, $value, $exptime = 0, $flags = 0 ) {
                $this->debugLog( "set($key)" );
-               return $this->checkResult( $key, parent::set( $key, $value, $exptime ) );
+               $result = parent::set( $key, $value, $exptime );
+               if ( $result === false && $this->client->getResultCode() === Memcached::RES_NOTSTORED ) {
+                       // "Not stored" is always used as the mcrouter response with AllAsyncRoute
+                       return true;
+               }
+               return $this->checkResult( $key, $result );
        }
 
        protected function cas( $casToken, $key, $value, $exptime = 0 ) {
@@ -163,9 +168,8 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                if ( $result === false && $this->client->getResultCode() === Memcached::RES_NOTFOUND ) {
                        // "Not found" is counted as success in our interface
                        return true;
-               } else {
-                       return $this->checkResult( $key, $result );
                }
+               return $this->checkResult( $key, $result );
        }
 
        public function add( $key, $value, $exptime = 0 ) {
index 9dcfa7c..687c67c 100644 (file)
@@ -226,4 +226,12 @@ class MultiWriteBagOStuff extends BagOStuff {
 
                return $ret;
        }
+
+       public function makeKey() {
+               return call_user_func_array( [ $this->caches[0], __FUNCTION__ ], func_get_args() );
+       }
+
+       public function makeGlobalKey() {
+               return call_user_func_array( [ $this->caches[0], __FUNCTION__ ], func_get_args() );
+       }
 }
index f0a439a..0842e04 100644 (file)
@@ -97,6 +97,8 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
        private $callbackDepth = 0;
        /** @var mixed[] Temporary warm-up cache */
        private $warmupCache = [];
+       /** @var integer Key fetched */
+       private $warmupKeyMisses = 0;
 
        /** Max time expected to pass between delete() and DB commit finishing */
        const MAX_COMMIT_DELAY = 3;
@@ -200,8 +202,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
        public static function newEmpty() {
                return new self( [
                        'cache'   => new EmptyBagOStuff(),
-                       'pool'    => 'empty',
-                       'relayer' => new EventRelayerNull( [] )
+                       'pool'    => 'empty'
                ] );
        }
 
@@ -265,7 +266,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         * @param array $checkKeys List of check keys to apply to all $keys. May also apply "check"
         *  keys to specific cache keys only by using cache keys as keys in the $checkKeys array.
         * @param float[] &$asOfs Map of (key =>  UNIX timestamp of cached value; null on failure)
-        * @return array Map of (key => value) for keys that exist
+        * @return array Map of (key => value) for keys that exist and are not tombstoned
         */
        final public function getMulti(
                array $keys, &$curTTLs = [], array $checkKeys = [], array &$asOfs = []
@@ -298,10 +299,13 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
                if ( $this->warmupCache ) {
                        $wrappedValues = array_intersect_key( $this->warmupCache, array_flip( $keysGet ) );
                        $keysGet = array_diff( $keysGet, array_keys( $wrappedValues ) ); // keys left to fetch
+                       $this->warmupKeyMisses += count( $keysGet );
                } else {
                        $wrappedValues = [];
                }
-               $wrappedValues += $this->cache->getMulti( $keysGet );
+               if ( $keysGet ) {
+                       $wrappedValues += $this->cache->getMulti( $keysGet );
+               }
                // Time used to compare/init "check" keys (derived after getMulti() to be pessimistic)
                $now = microtime( true );
 
@@ -1044,7 +1048,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
        }
 
        /**
-        * Method to fetch/regenerate multiple cache keys at once
+        * Method to fetch multiple cache keys at once with regeneration
         *
         * This works the same as getWithSetCallback() except:
         *   - a) The $keys argument expects the result of WANObjectCache::makeMultiKeys()
@@ -1059,6 +1063,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         *   - c) The return value is a map of (cache key => value) in the order of $keyedIds
         *
         * @see WANObjectCache::getWithSetCallback()
+        * @see WANObjectCache::getMultiWithUnionSetCallback()
         *
         * Example usage:
         * @code
@@ -1073,7 +1078,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         *         // Time-to-live (in seconds)
         *         $cache::TTL_DAY,
         *         // Function that derives the new key value
-        *         return function ( $id, $oldValue, &$ttl, array &$setOpts ) {
+        *         function ( $id, $oldValue, &$ttl, array &$setOpts ) {
         *             $dbr = wfGetDB( DB_REPLICA );
         *             // Account for any snapshot/replica DB lag
         *             $setOpts += Database::getCacheSetOptions( $dbr );
@@ -1103,27 +1108,145 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
        final public function getMultiWithSetCallback(
                ArrayIterator $keyedIds, $ttl, callable $callback, array $opts = []
        ) {
-               $keysWarmUp = iterator_to_array( $keyedIds, true );
+               $valueKeys = array_keys( $keyedIds->getArrayCopy() );
                $checkKeys = isset( $opts['checkKeys'] ) ? $opts['checkKeys'] : [];
-               foreach ( $checkKeys as $i => $checkKeyOrKeys ) {
-                       if ( is_int( $i ) ) {
-                               $keysWarmUp[] = $checkKeyOrKeys;
-                       } else {
-                               $keysWarmUp = array_merge( $keysWarmUp, $checkKeyOrKeys );
+
+               // Load required keys into process cache in one go
+               $this->warmupCache = $this->getRawKeysForWarmup(
+                       $this->getNonProcessCachedKeys( $valueKeys, $opts ),
+                       $checkKeys
+               );
+               $this->warmupKeyMisses = 0;
+
+               // Wrap $callback to match the getWithSetCallback() format while passing $id to $callback
+               $id = null; // current entity ID
+               $func = function ( $oldValue, &$ttl, &$setOpts, $oldAsOf ) use ( $callback, &$id ) {
+                       return $callback( $id, $oldValue, $ttl, $setOpts, $oldAsOf );
+               };
+
+               $values = [];
+               foreach ( $keyedIds as $key => $id ) { // preserve order
+                       $values[$key] = $this->getWithSetCallback( $key, $ttl, $func, $opts );
+               }
+
+               $this->warmupCache = [];
+
+               return $values;
+       }
+
+       /**
+        * Method to fetch/regenerate multiple cache keys at once
+        *
+        * This works the same as getWithSetCallback() except:
+        *   - a) The $keys argument expects the result of WANObjectCache::makeMultiKeys()
+        *   - b) The $callback argument expects a callback returning a map of (ID => new value)
+        *        for all entity IDs in $regenById and it takes the following arguments:
+        *          - $ids: a list of entity IDs to regenerate
+        *          - &$ttls: a reference to the (entity ID => new TTL) map
+        *          - &$setOpts: a reference to options for set() which can be altered
+        *   - c) The return value is a map of (cache key => value) in the order of $keyedIds
+        *   - d) The "lockTSE" and "busyValue" options are ignored
+        *
+        * @see WANObjectCache::getWithSetCallback()
+        * @see WANObjectCache::getMultiWithSetCallback()
+        *
+        * Example usage:
+        * @code
+        *     $rows = $cache->getMultiWithUnionSetCallback(
+        *         // Map of cache keys to entity IDs
+        *         $cache->makeMultiKeys(
+        *             $this->fileVersionIds(),
+        *             function ( $id, WANObjectCache $cache ) {
+        *                 return $cache->makeKey( 'file-version', $id );
+        *             }
+        *         ),
+        *         // Time-to-live (in seconds)
+        *         $cache::TTL_DAY,
+        *         // Function that derives the new key value
+        *         function ( array $ids, array &$ttls, array &$setOpts ) {
+        *             $dbr = wfGetDB( DB_REPLICA );
+        *             // Account for any snapshot/replica DB lag
+        *             $setOpts += Database::getCacheSetOptions( $dbr );
+        *
+        *             // Load the rows for these files
+        *             $rows = [];
+        *             $res = $dbr->select( 'file', '*', [ 'id' => $ids ], __METHOD__ );
+        *             foreach ( $res as $row ) {
+        *                 $rows[$row->id] = $row;
+        *                 $mtime = wfTimestamp( TS_UNIX, $row->timestamp );
+        *                 $ttls[$row->id] = $this->adaptiveTTL( $mtime, $ttls[$row->id] );
+        *             }
+        *
+        *             return $rows;
+        *         },
+        *         ]
+        *     );
+        *     $files = array_map( [ __CLASS__, 'newFromRow' ], $rows );
+        * @endcode
+        *
+        * @param ArrayIterator $keyedIds Result of WANObjectCache::makeMultiKeys()
+        * @param integer $ttl Seconds to live for key updates
+        * @param callable $callback Callback the yields entity regeneration callbacks
+        * @param array $opts Options map
+        * @return array Map of (cache key => value) in the same order as $keyedIds
+        * @since 1.30
+        */
+       final public function getMultiWithUnionSetCallback(
+               ArrayIterator $keyedIds, $ttl, callable $callback, array $opts = []
+       ) {
+               $idsByValueKey = $keyedIds->getArrayCopy();
+               $valueKeys = array_keys( $idsByValueKey );
+               $checkKeys = isset( $opts['checkKeys'] ) ? $opts['checkKeys'] : [];
+               unset( $opts['lockTSE'] ); // incompatible
+               unset( $opts['busyValue'] ); // incompatible
+
+               // Load required keys into process cache in one go
+               $keysGet = $this->getNonProcessCachedKeys( $valueKeys, $opts );
+               $this->warmupCache = $this->getRawKeysForWarmup( $keysGet, $checkKeys );
+               $this->warmupKeyMisses = 0;
+
+               // IDs of entities known to be in need of regeneration
+               $idsRegen = [];
+
+               // Find out which keys are missing/deleted/stale
+               $curTTLs = [];
+               $asOfs = [];
+               $curByKey = $this->getMulti( $keysGet, $curTTLs, $checkKeys, $asOfs );
+               foreach ( $keysGet as $key ) {
+                       if ( !array_key_exists( $key, $curByKey ) || $curTTLs[$key] < 0 ) {
+                               $idsRegen[] = $idsByValueKey[$key];
                        }
                }
 
-               $this->warmupCache = $this->cache->getMulti( $keysWarmUp );
-               $this->warmupCache += array_fill_keys( $keysWarmUp, false );
+               // Run the callback to populate the regeneration value map for all required IDs
+               $newSetOpts = [];
+               $newTTLsById = array_fill_keys( $idsRegen, $ttl );
+               $newValsById = $idsRegen ? $callback( $idsRegen, $newTTLsById, $newSetOpts ) : [];
 
                // Wrap $callback to match the getWithSetCallback() format while passing $id to $callback
-               $id = null;
-               $func = function ( $oldValue, &$ttl, array $setOpts, $oldAsOf ) use ( $callback, &$id ) {
-                       return $callback( $id, $oldValue, $ttl, $setOpts, $oldAsOf );
+               $id = null; // current entity ID
+               $func = function ( $oldValue, &$ttl, &$setOpts, $oldAsOf )
+                       use ( $callback, &$id, $newValsById, $newTTLsById, $newSetOpts )
+               {
+                       if ( array_key_exists( $id, $newValsById ) ) {
+                               // Value was already regerated as expected, so use the value in $newValsById
+                               $newValue = $newValsById[$id];
+                               $ttl = $newTTLsById[$id];
+                               $setOpts = $newSetOpts;
+                       } else {
+                               // Pre-emptive/popularity refresh and version mismatch cases are not detected
+                               // above and thus $newValsById has no entry. Run $callback on this single entity.
+                               $ttls = [ $id => $ttl ];
+                               $newValue = $callback( [ $id ], $ttls, $setOpts )[$id];
+                               $ttl = $ttls[$id];
+                       }
+
+                       return $newValue;
                };
 
+               // Run the cache-aside logic using warmupCache instead of persistent cache queries
                $values = [];
-               foreach ( $keyedIds as $key => $id ) {
+               foreach ( $idsByValueKey as $key => $id ) { // preserve order
                        $values[$key] = $this->getWithSetCallback( $key, $ttl, $func, $opts );
                }
 
@@ -1316,6 +1439,14 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
                return (int)min( $maxTTL, max( $minTTL, $factor * $age ) );
        }
 
+       /**
+        * @return integer Number of warmup key cache misses last round
+        * @since 1.30
+        */
+       public function getWarmupKeyMisses() {
+               return $this->warmupKeyMisses;
+       }
+
        /**
         * Do the actual async bus purge of a key
         *
@@ -1478,7 +1609,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         *
         * @param array|string|bool $wrapped
         * @param float $now Unix Current timestamp (preferrably pre-query)
-        * @return array (mixed; false if absent/invalid, current time left)
+        * @return array (mixed; false if absent/tombstoned/invalid, current time left)
         */
        protected function unwrap( $wrapped, $now ) {
                // Check if the value is a tombstone
@@ -1573,4 +1704,59 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
 
                return $this->processCaches[$group];
        }
+
+       /**
+        * @param array $keys
+        * @param array $opts
+        * @return array List of keys
+        */
+       private function getNonProcessCachedKeys( array $keys, array $opts ) {
+               $keysFound = [];
+               if ( isset( $opts['pcTTL'] ) && $opts['pcTTL'] > 0 && $this->callbackDepth == 0 ) {
+                       $pcGroup = isset( $opts['pcGroup'] ) ? $opts['pcGroup'] : self::PC_PRIMARY;
+                       $procCache = $this->getProcessCache( $pcGroup );
+                       foreach ( $keys as $key ) {
+                               if ( $procCache->get( $key ) !== false ) {
+                                       $keysFound[] = $key;
+                               }
+                       }
+               }
+
+               return array_diff( $keys, $keysFound );
+       }
+
+               /**
+        * @param array $keys
+        * @param array $checkKeys
+        * @return array Map of (cache key => mixed)
+        */
+       private function getRawKeysForWarmup( array $keys, array $checkKeys ) {
+               if ( !$keys ) {
+                       return [];
+               }
+
+               $keysWarmUp = [];
+               // Get all the value keys to fetch...
+               foreach ( $keys as $key ) {
+                       $keysWarmUp[] = self::VALUE_KEY_PREFIX . $key;
+               }
+               // Get all the check keys to fetch...
+               foreach ( $checkKeys as $i => $checkKeyOrKeys ) {
+                       if ( is_int( $i ) ) {
+                               // Single check key that applies to all value keys
+                               $keysWarmUp[] = self::TIME_KEY_PREFIX . $checkKeyOrKeys;
+                       } else {
+                               // List of check keys that apply to value key $i
+                               $keysWarmUp = array_merge(
+                                       $keysWarmUp,
+                                       self::prefixCacheKeys( $checkKeyOrKeys, self::TIME_KEY_PREFIX )
+                               );
+                       }
+               }
+
+               $warmupCache = $this->cache->getMulti( $keysWarmUp );
+               $warmupCache += array_fill_keys( $keysWarmUp, false );
+
+               return $warmupCache;
+       }
 }
index 5d3534f..823e0dc 100644 (file)
@@ -265,8 +265,9 @@ class TransactionProfiler implements LoggerAwareInterface {
         * @param string $db DB name
         * @param string $id ID string of transaction
         * @param float $writeTime Time spent in write queries
+        * @param integer $affected Number of rows affected by writes
         */
-       public function transactionWritingOut( $server, $db, $id, $writeTime = 0.0 ) {
+       public function transactionWritingOut( $server, $db, $id, $writeTime = 0.0, $affected = 0 ) {
                $name = "{$server} ({$db}) (TRX#$id)";
                if ( !isset( $this->dbTrxMethodTimes[$name] ) ) {
                        $this->logger->info( "Detected no transaction for '$name' - out of sync." );
@@ -284,6 +285,14 @@ class TransactionProfiler implements LoggerAwareInterface {
                        );
                        $slow = true;
                }
+               // Warn if too many rows were changed...
+               if ( $affected > $this->expect['maxAffected'] ) {
+                       $this->reportExpectationViolated(
+                               'maxAffected',
+                               "[transaction $id writes to {$server} ({$db})]",
+                               $affected
+                       );
+               }
                // Fill in the last non-query period...
                $lastQuery = end( $this->dbTrxMethodTimes[$name] );
                if ( $lastQuery ) {
index 6481c92..fb4122d 100644 (file)
@@ -8,7 +8,7 @@ use InvalidArgumentException;
  * Helper class to handle automatically marking connections as reusable (via RAII pattern)
  * as well handling deferring the actual network connection until the handle is used
  *
- * @note: proxy methods are defined explicity to avoid interface errors
+ * @note: proxy methods are defined explicitly to avoid interface errors
  * @ingroup Database
  * @since 1.22
  */
@@ -124,6 +124,10 @@ class DBConnRef implements IDatabase {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
 
+       public function pendingWriteRowsAffected() {
+               return $this->__call( __FUNCTION__, func_get_args() );
+       }
+
        public function isOpen() {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
@@ -243,13 +247,13 @@ class DBConnRef implements IDatabase {
        }
 
        public function selectField(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = []
+               $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
        ) {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
 
        public function selectFieldValues(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = []
+               $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
        ) {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
@@ -349,6 +353,10 @@ class DBConnRef implements IDatabase {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
 
+       public function databasesAreIndependent() {
+               return $this->__call( __FUNCTION__, func_get_args() );
+       }
+
        public function selectDB( $db ) {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
@@ -403,7 +411,7 @@ class DBConnRef implements IDatabase {
 
        public function insertSelect(
                $destTable, $srcTable, $varMap, $conds,
-               $fname = __METHOD__, $insertOptions = [], $selectOptions = []
+               $fname = __METHOD__, $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
index 6fafe71..afeffb3 100644 (file)
@@ -33,10 +33,6 @@ use MediaWiki;
 use BagOStuff;
 use HashBagOStuff;
 use InvalidArgumentException;
-use DBQueryError;
-use DBUnexpectedError;
-use DBConnectionError;
-use DBReadOnlyError;
 use Exception;
 use RuntimeException;
 
@@ -204,6 +200,10 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
         * @var integer Number of write queries for the current transaction
         */
        private $mTrxWriteQueryCount = 0;
+       /**
+        * @var integer Number of rows affected by write queries for the current transaction
+        */
+       private $mTrxWriteAffectedRows = 0;
        /**
         * @var float Like mTrxWriteQueryCount but excludes lock-bound, easy to replicate, queries
         */
@@ -420,6 +420,13 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                return $conn;
        }
 
+       /**
+        * Set the PSR-3 logger interface to use for query logging. (The logger
+        * interfaces for connection logging and error logging can be set with the
+        * constructor.)
+        *
+        * @param LoggerInterface $logger
+        */
        public function setLogger( LoggerInterface $logger ) {
                $this->queryLogger = $logger;
        }
@@ -580,6 +587,16 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                return $this->mTrxLevel ? $this->mTrxWriteCallers : [];
        }
 
+       public function pendingWriteRowsAffected() {
+               return $this->mTrxWriteAffectedRows;
+       }
+
+       /**
+        * Get the list of method names that have pending write queries or callbacks
+        * for this transaction
+        *
+        * @return array
+        */
        protected function pendingWriteAndCallbackCallers() {
                if ( !$this->mTrxLevel ) {
                        return [];
@@ -668,6 +685,9 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
         */
        abstract function strencode( $s );
 
+       /**
+        * Set a custom error handler for logging errors during database connection
+        */
        protected function installErrorHandler() {
                $this->mPHPError = false;
                $this->htmlErrors = ini_set( 'html_errors', '0' );
@@ -675,6 +695,8 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
        }
 
        /**
+        * Restore the previous error handler and return the last PHP error for this DB
+        *
         * @return bool|string
         */
        protected function restoreErrorHandler() {
@@ -701,6 +723,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
        }
 
        /**
+        * Error handler for logging errors during database connection
         * This method should not be used outside of Database classes
         *
         * @param int $errno
@@ -821,7 +844,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
        /**
         * @param string $sql A SQL query
-        * @return bool Whether $sql is SQL for creating/dropping a new TEMPORARY table
+        * @return bool Whether $sql is SQL for TEMPORARY table operation
         */
        protected function registerTempTableOperation( $sql ) {
                if ( preg_match(
@@ -837,9 +860,16 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                        $sql,
                        $matches
                ) ) {
+                       $isTemp = isset( $this->mSessionTempTables[$matches[1]] );
                        unset( $this->mSessionTempTables[$matches[1]] );
 
-                       return true;
+                       return $isTemp;
+               } elseif ( preg_match(
+                       '/^TRUNCATE\s+(?:TEMPORARY\s+)?TABLE\s+(?:IF\s+EXISTS\s+)?[`"\']?(\w+)[`"\']?/i',
+                       $sql,
+                       $matches
+               ) ) {
+                       return isset( $this->mSessionTempTables[$matches[1]] );
                } elseif ( preg_match(
                        '/^(?:INSERT\s+(?:\w+\s+)?INTO|UPDATE|DELETE\s+FROM)\s+[`"\']?(\w+)[`"\']?/i',
                        $sql,
@@ -855,8 +885,16 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                $priorWritesPending = $this->writesOrCallbacksPending();
                $this->mLastQuery = $sql;
 
-               $isWrite = $this->isWriteQuery( $sql ) && !$this->registerTempTableOperation( $sql );
+               $isWrite = $this->isWriteQuery( $sql );
                if ( $isWrite ) {
+                       $isNonTempWrite = !$this->registerTempTableOperation( $sql );
+               } else {
+                       $isNonTempWrite = false;
+               }
+
+               if ( $isWrite ) {
+                       # In theory, non-persistent writes are allowed in read-only mode, but due to things
+                       # like https://bugs.mysql.com/bug.php?id=33669 that might not work anyway...
                        $reason = $this->getReadOnlyReason();
                        if ( $reason !== false ) {
                                throw new DBReadOnlyError( $this, "Database is read-only: $reason" );
@@ -865,8 +903,8 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                        $this->mLastWriteTime = microtime( true );
                }
 
-               // Add trace comment to the begin of the sql string, right after the operator.
-               // Or, for one-word queries (like "BEGIN" or COMMIT") add it to the end (T44598)
+               # Add trace comment to the begin of the sql string, right after the operator.
+               # Or, for one-word queries (like "BEGIN" or COMMIT") add it to the end (T44598)
                $commentedSql = preg_replace( '/\s|$/', " /* $fname {$this->agent} */ ", $sql, 1 );
 
                # Start implicit transactions that wrap the request if DBO_TRX is enabled
@@ -892,7 +930,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                $this->assertOpen();
 
                # Send the query to the server
-               $ret = $this->doProfiledQuery( $sql, $commentedSql, $isWrite, $fname );
+               $ret = $this->doProfiledQuery( $sql, $commentedSql, $isNonTempWrite, $fname );
 
                # Try reconnecting if the connection was lost
                if ( false === $ret && $this->wasErrorReissuable() ) {
@@ -913,7 +951,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                                        $this->reportQueryError( $lastError, $lastErrno, $sql, $fname );
                                } else {
                                        # Should be safe to silently retry the query
-                                       $ret = $this->doProfiledQuery( $sql, $commentedSql, $isWrite, $fname );
+                                       $ret = $this->doProfiledQuery( $sql, $commentedSql, $isNonTempWrite, $fname );
                                }
                        } else {
                                $msg = __METHOD__ . ": lost connection to {$this->getServer()} permanently";
@@ -942,6 +980,17 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                return $res;
        }
 
+       /**
+        * Helper method for query() that handles profiling and logging and sends
+        * the query to doQuery()
+        *
+        * @param string $sql Original SQL query
+        * @param string $commentedSql SQL query with debugging/trace comment
+        * @param bool $isWrite Whether the query is a (non-temporary) write operation
+        * @param string $fname Name of the calling function
+        * @return bool|ResultWrapper True for a successful write query, ResultWrapper
+        *     object for a successful read query, or false on failure
+        */
        private function doProfiledQuery( $sql, $commentedSql, $isWrite, $fname ) {
                $isMaster = !is_null( $this->getLBInfo( 'master' ) );
                # generalizeSQL() will probably cut down the query to reasonable
@@ -970,7 +1019,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                if ( $ret !== false ) {
                        $this->lastPing = $startTime;
                        if ( $isWrite && $this->mTrxLevel ) {
-                               $this->updateTrxWriteQueryTime( $sql, $queryRuntime );
+                               $this->updateTrxWriteQueryTime( $sql, $queryRuntime, $this->affectedRows() );
                                $this->mTrxWriteCallers[] = $fname;
                        }
                }
@@ -1001,8 +1050,9 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
         *
         * @param string $sql A SQL write query
         * @param float $runtime Total runtime, including RTT
+        * @param integer $affected Affected row count
         */
-       private function updateTrxWriteQueryTime( $sql, $runtime ) {
+       private function updateTrxWriteQueryTime( $sql, $runtime, $affected ) {
                // Whether this is indicative of replica DB runtime (except for RBR or ws_repl)
                $indicativeOfReplicaRuntime = true;
                if ( $runtime > self::SLOW_WRITE_SEC ) {
@@ -1017,12 +1067,23 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
                $this->mTrxWriteDuration += $runtime;
                $this->mTrxWriteQueryCount += 1;
+               $this->mTrxWriteAffectedRows += $affected;
                if ( $indicativeOfReplicaRuntime ) {
                        $this->mTrxWriteAdjDuration += $runtime;
                        $this->mTrxWriteAdjQueryCount += 1;
                }
        }
 
+       /**
+        * Determine whether or not it is safe to retry queries after a database
+        * connection is lost
+        *
+        * @param string $sql SQL query
+        * @param bool $priorWritesPending Whether there is a transaction open with
+        *     possible write queries or transaction pre-commit/idle callbacks
+        *     waiting on it to finish.
+        * @return bool True if it is safe to retry the query, false otherwise
+        */
        private function canRecoverFromDisconnect( $sql, $priorWritesPending ) {
                # Transaction dropped; this can mean lost writes, or REPEATABLE-READ snapshots.
                # Dropped connections also mean that named locks are automatically released.
@@ -1043,6 +1104,11 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                return true;
        }
 
+       /**
+        * Clean things up after transaction loss due to disconnection
+        *
+        * @return null|Exception
+        */
        private function handleSessionLoss() {
                $this->mTrxLevel = 0;
                $this->mTrxIdleCallbacks = []; // T67263
@@ -1084,7 +1150,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
        }
 
        public function selectField(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = []
+               $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
        ) {
                if ( $var === '*' ) { // sanity
                        throw new DBUnexpectedError( $this, "Cannot use a * field: got '$var'" );
@@ -1096,7 +1162,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
                $options['LIMIT'] = 1;
 
-               $res = $this->select( $table, $var, $cond, $fname, $options );
+               $res = $this->select( $table, $var, $cond, $fname, $options, $join_conds );
                if ( $res === false || !$this->numRows( $res ) ) {
                        return false;
                }
@@ -1694,6 +1760,10 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                return $field;
        }
 
+       public function databasesAreIndependent() {
+               return false;
+       }
+
        public function selectDB( $db ) {
                # Stub. Shouldn't cause serious problems if it's not overridden, but
                # if your database engine supports a concept similar to MySQL's
@@ -1732,8 +1802,31 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                }
 
                # Split database and table into proper variables.
-               # We reverse the explode so that database.table and table both output
-               # the correct table.
+               list( $database, $schema, $prefix, $table ) = $this->qualifiedTableComponents( $name );
+
+               # Quote $table and apply the prefix if not quoted.
+               # $tableName might be empty if this is called from Database::replaceVars()
+               $tableName = "{$prefix}{$table}";
+               if ( $format === 'quoted'
+                       && !$this->isQuotedIdentifier( $tableName )
+                       && $tableName !== ''
+               ) {
+                       $tableName = $this->addIdentifierQuotes( $tableName );
+               }
+
+               # Quote $schema and $database and merge them with the table name if needed
+               $tableName = $this->prependDatabaseOrSchema( $schema, $tableName, $format );
+               $tableName = $this->prependDatabaseOrSchema( $database, $tableName, $format );
+
+               return $tableName;
+       }
+
+       /**
+        * @param string $name Table name
+        * @return array (DB name, schema name, table prefix, table name)
+        */
+       protected function qualifiedTableComponents( $name ) {
+               # We reverse the explode so that database.table and table both output the correct table.
                $dbDetails = explode( '.', $name, 3 );
                if ( count( $dbDetails ) == 3 ) {
                        list( $database, $schema, $table ) = $dbDetails;
@@ -1763,21 +1856,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                        }
                }
 
-               # Quote $table and apply the prefix if not quoted.
-               # $tableName might be empty if this is called from Database::replaceVars()
-               $tableName = "{$prefix}{$table}";
-               if ( $format === 'quoted'
-                       && !$this->isQuotedIdentifier( $tableName )
-                       && $tableName !== ''
-               ) {
-                       $tableName = $this->addIdentifierQuotes( $tableName );
-               }
-
-               # Quote $schema and $database and merge them with the table name if needed
-               $tableName = $this->prependDatabaseOrSchema( $schema, $tableName, $format );
-               $tableName = $this->prependDatabaseOrSchema( $database, $tableName, $format );
-
-               return $tableName;
+               return [ $database, $schema, $prefix, $table ];
        }
 
        /**
@@ -2023,8 +2102,10 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
         * @param string $s
         * @return string
         */
-       protected function escapeLikeInternal( $s ) {
-               return addcslashes( $s, '\%_' );
+       protected function escapeLikeInternal( $s, $escapeChar = '`' ) {
+               return str_replace( [ $escapeChar, '%', '_' ],
+                       [ "{$escapeChar}{$escapeChar}", "{$escapeChar}%", "{$escapeChar}_" ],
+                       $s );
        }
 
        public function buildLike() {
@@ -2036,15 +2117,21 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
                $s = '';
 
+               // We use ` instead of \ as the default LIKE escape character, since addQuotes()
+               // may escape backslashes, creating problems of double escaping. The `
+               // character has good cross-DBMS compatibility, avoiding special operators
+               // in MS SQL like ^ and %
+               $escapeChar = '`';
+
                foreach ( $params as $value ) {
                        if ( $value instanceof LikeMatch ) {
                                $s .= $value->toString();
                        } else {
-                               $s .= $this->escapeLikeInternal( $value );
+                               $s .= $this->escapeLikeInternal( $value, $escapeChar );
                        }
                }
 
-               return " LIKE {$this->addQuotes( $s )} ";
+               return ' LIKE ' . $this->addQuotes( $s ) . ' ESCAPE ' . $this->addQuotes( $escapeChar ) . ' ';
        }
 
        public function anyChar() {
@@ -2278,7 +2365,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
        public function insertSelect(
                $destTable, $srcTable, $varMap, $conds,
-               $fname = __METHOD__, $insertOptions = [], $selectOptions = []
+               $fname = __METHOD__, $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
                if ( $this->cliMode ) {
                        // For massive migrations with downtime, we don't want to select everything
@@ -2290,7 +2377,8 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                                $conds,
                                $fname,
                                $insertOptions,
-                               $selectOptions
+                               $selectOptions,
+                               $selectJoinConds
                        );
                }
 
@@ -2302,7 +2390,9 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                        $fields[] = $this->fieldNameWithAlias( $sourceColumnOrSql, $dstColumn );
                }
                $selectOptions[] = 'FOR UPDATE';
-               $res = $this->select( $srcTable, implode( ',', $fields ), $conds, $fname, $selectOptions );
+               $res = $this->select(
+                       $srcTable, implode( ',', $fields ), $conds, $fname, $selectOptions, $selectJoinConds
+               );
                if ( !$res ) {
                        return false;
                }
@@ -2315,9 +2405,15 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                return $this->insert( $destTable, $rows, $fname, $insertOptions );
        }
 
+       /**
+        * Native server-side implementation of insertSelect() for situations where
+        * we don't want to select everything into memory
+        *
+        * @see IDatabase::insertSelect()
+        */
        protected function nativeInsertSelect( $destTable, $srcTable, $varMap, $conds,
                $fname = __METHOD__,
-               $insertOptions = [], $selectOptions = []
+               $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
                $destTable = $this->tableName( $destTable );
 
@@ -2327,32 +2423,18 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
                $insertOptions = $this->makeInsertOptions( $insertOptions );
 
-               if ( !is_array( $selectOptions ) ) {
-                       $selectOptions = [ $selectOptions ];
-               }
-
-               list( $startOpts, $useIndex, $tailOpts, $ignoreIndex ) = $this->makeSelectOptions(
-                       $selectOptions );
-
-               if ( is_array( $srcTable ) ) {
-                       $srcTable = implode( ',', array_map( [ $this, 'tableName' ], $srcTable ) );
-               } else {
-                       $srcTable = $this->tableName( $srcTable );
-               }
+               $selectSql = $this->selectSQLText(
+                       $srcTable,
+                       array_values( $varMap ),
+                       $conds,
+                       $fname,
+                       $selectOptions,
+                       $selectJoinConds
+               );
 
                $sql = "INSERT $insertOptions" .
-                       " INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
-                       " SELECT $startOpts " . implode( ',', $varMap ) .
-                       " FROM $srcTable $useIndex $ignoreIndex ";
-
-               if ( $conds != '*' ) {
-                       if ( is_array( $conds ) ) {
-                               $conds = $this->makeList( $conds, self::LIST_AND );
-                       }
-                       $sql .= " WHERE $conds";
-               }
-
-               $sql .= " $tailOpts";
+                       " INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ') ' .
+                       $selectSql;
 
                return $this->query( $sql, $fname );
        }
@@ -2731,6 +2813,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                $this->mTrxShortId = sprintf( '%06x', mt_rand( 0, 0xffffff ) );
                $this->mTrxWriteDuration = 0.0;
                $this->mTrxWriteQueryCount = 0;
+               $this->mTrxWriteAffectedRows = 0;
                $this->mTrxWriteAdjDuration = 0.0;
                $this->mTrxWriteAdjQueryCount = 0;
                $this->mTrxWriteCallers = [];
@@ -2797,7 +2880,12 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                if ( $this->mTrxDoneWrites ) {
                        $this->mLastWriteTime = microtime( true );
                        $this->trxProfiler->transactionWritingOut(
-                               $this->mServer, $this->mDBname, $this->mTrxShortId, $writeTime );
+                               $this->mServer,
+                               $this->mDBname,
+                               $this->mTrxShortId,
+                               $writeTime,
+                               $this->mTrxWriteAffectedRows
+                       );
                }
 
                $this->runOnTransactionIdleCallbacks( self::TRIGGER_COMMIT );
@@ -2842,7 +2930,10 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                $this->mTrxAtomicLevels = [];
                if ( $this->mTrxDoneWrites ) {
                        $this->trxProfiler->transactionWritingOut(
-                               $this->mServer, $this->mDBname, $this->mTrxShortId );
+                               $this->mServer,
+                               $this->mDBname,
+                               $this->mTrxShortId
+                       );
                }
 
                $this->mTrxIdleCallbacks = []; // clear
@@ -2959,7 +3050,9 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
        }
 
        /**
-        * @return bool
+        * Close existing database connection and open a new connection
+        *
+        * @return bool True if new connection is opened successfully, false if error
         */
        protected function reconnect() {
                $this->closeConnection();
@@ -3327,6 +3420,14 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                return $this->doLockTables( $read, $write, $method );
        }
 
+       /**
+        * Helper function for lockTables() that handles the actual table locking
+        *
+        * @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
+        * @return true
+        */
        protected function doLockTables( array $read, array $write, $method ) {
                return true;
        }
@@ -3341,6 +3442,12 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                return $this->doUnlockTables( $method );
        }
 
+       /**
+        * Helper function for unlockTables() that handles the actual table unlocking
+        *
+        * @param string $method Name of caller
+        * @return true
+        */
        protected function doUnlockTables( $method ) {
                return true;
        }
index bbd2400..8f3cab8 100644 (file)
@@ -28,9 +28,6 @@
 namespace Wikimedia\Rdbms;
 
 use MediaWiki;
-use DBConnectionError;
-use DBUnexpectedError;
-use DBQueryError;
 use Exception;
 use stdClass;
 
@@ -720,11 +717,12 @@ class DatabaseMssql extends Database {
         * @param string $fname
         * @param array $insertOptions
         * @param array $selectOptions
+        * @param array $selectJoinConds
         * @return null|ResultWrapper
         * @throws Exception
         */
        public function nativeInsertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
-               $insertOptions = [], $selectOptions = []
+               $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
                $this->mScrollableCursor = false;
                try {
@@ -735,7 +733,8 @@ class DatabaseMssql extends Database {
                                $conds,
                                $fname,
                                $insertOptions,
-                               $selectOptions
+                               $selectOptions,
+                               $selectJoinConds
                        );
                } catch ( Exception $e ) {
                        $this->mScrollableCursor = true;
@@ -1113,27 +1112,11 @@ class DatabaseMssql extends Database {
         * @param string $s
         * @return string
         */
-       protected function escapeLikeInternal( $s ) {
-               return addcslashes( $s, '\%_[]^' );
-       }
-
-       /**
-        * MS SQL requires specifying the escape character used in a LIKE query
-        * or using Square brackets to surround characters that are to be escaped
-        * https://msdn.microsoft.com/en-us/library/ms179859.aspx
-        * Here we take the Specify-Escape-Character approach since it's less
-        * invasive, renders a query that is closer to other DB's and better at
-        * handling square bracket escaping
-        *
-        * @return string Fully built LIKE statement
-        */
-       public function buildLike() {
-               $params = func_get_args();
-               if ( count( $params ) > 0 && is_array( $params[0] ) ) {
-                       $params = $params[0];
-               }
-
-               return parent::buildLike( $params ) . " ESCAPE '\' ";
+       protected function escapeLikeInternal( $s, $escapeChar = '`' ) {
+               return str_replace( [ $escapeChar, '%', '_', '[', ']', '^' ],
+                       [ "{$escapeChar}{$escapeChar}", "{$escapeChar}%", "{$escapeChar}_",
+                               "{$escapeChar}[", "{$escapeChar}]", "{$escapeChar}^" ],
+                       $s );
        }
 
        /**
index c0c9223..77e797d 100644 (file)
@@ -22,8 +22,6 @@
  */
 namespace Wikimedia\Rdbms;
 
-use DBConnectionError;
-
 /**
  * Database abstraction object for PHP extension mysql.
  *
index b09516c..50ead83 100644 (file)
@@ -26,10 +26,6 @@ use DateTime;
 use DateTimeZone;
 use MediaWiki;
 use InvalidArgumentException;
-use DBError;
-use DBExpectedError;
-use DBUnexpectedError;
-use DBConnectionError;
 use Exception;
 use stdClass;
 
@@ -536,9 +532,11 @@ abstract class DatabaseMysqlBase extends Database {
                        return true; // already known to exist and won't show in SHOW TABLES anyway
                }
 
-               $encLike = $this->buildLike( $table );
+               // We can't use buildLike() here, because it specifies an escape character
+               // other than the backslash, which is the only one supported by SHOW TABLES
+               $encLike = $this->escapeLikeInternal( $table, '\\' );
 
-               return $this->query( "SHOW TABLES $encLike", $fname )->numRows() > 0;
+               return $this->query( "SHOW TABLES LIKE '$encLike'", $fname )->numRows() > 0;
        }
 
        /**
index be25489..fcd29c3 100644 (file)
@@ -23,7 +23,6 @@
 namespace Wikimedia\Rdbms;
 
 use mysqli;
-use DBConnectionError;
 use IP;
 
 /**
index 5049f9b..bdac06c 100644 (file)
@@ -25,8 +25,6 @@ namespace Wikimedia\Rdbms;
 use Wikimedia\Timestamp\ConvertibleTimestamp;
 use Wikimedia\WaitConditionLoop;
 use MediaWiki;
-use DBUnexpectedError;
-use DBConnectionError;
 use Exception;
 
 /**
@@ -107,7 +105,10 @@ class DatabasePostgres extends Database {
                $this->mDBname = $dbName;
 
                $connectVars = [
-                       'dbname' => $dbName,
+                       // pg_connect() user $user as the default database. Since a database is *required*,
+                       // at least pick a "don't care" database that is more likely to exist. This case
+                       // arrises when LoadBalancer::getConnection( $i, [], '' ) is used.
+                       'dbname' => strlen( $dbName ) ? $dbName : 'postgres',
                        'user' => $user,
                        'password' => $password
                ];
@@ -167,11 +168,16 @@ class DatabasePostgres extends Database {
                return $this->mConn;
        }
 
+       public function databasesAreIndependent() {
+               return true;
+       }
+
        /**
         * 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
         * @param string $db
         * @return bool
+        * @throws DBUnexpectedError
         */
        public function selectDB( $db ) {
                if ( $this->mDBname !== $db ) {
@@ -250,7 +256,10 @@ class DatabasePostgres extends Database {
                }
                /* Transaction stays in the ERROR state until rolled back */
                if ( $this->mTrxLevel ) {
-                       $this->rollback( __METHOD__ );
+                       // Throw away the transaction state, then raise the error as normal.
+                       // Note that if this connection is managed by LBFactory, it's already expected
+                       // that the other transactions LBFactory manages will be rolled back.
+                       $this->rollback( __METHOD__, self::FLUSHING_INTERNAL );
                }
                parent::reportQueryError( $error, $errno, $sql, $fname, false );
        }
@@ -675,14 +684,13 @@ __INDEXATTR__;
         * @param string $fname
         * @param array $insertOptions
         * @param array $selectOptions
+        * @param array $selectJoinConds
         * @return bool
         */
        public function nativeInsertSelect(
                $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
-               $insertOptions = [], $selectOptions = []
+               $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
-               $destTable = $this->tableName( $destTable );
-
                if ( !is_array( $insertOptions ) ) {
                        $insertOptions = [ $insertOptions ];
                }
@@ -699,28 +707,9 @@ __INDEXATTR__;
                        $savepoint->savepoint();
                }
 
-               if ( !is_array( $selectOptions ) ) {
-                       $selectOptions = [ $selectOptions ];
-               }
-               list( $startOpts, $useIndex, $tailOpts, $ignoreIndex ) =
-                       $this->makeSelectOptions( $selectOptions );
-               if ( is_array( $srcTable ) ) {
-                       $srcTable = implode( ',', array_map( [ $this, 'tableName' ], $srcTable ) );
-               } else {
-                       $srcTable = $this->tableName( $srcTable );
-               }
-
-               $sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
-                       " SELECT $startOpts " . implode( ',', $varMap ) .
-                       " FROM $srcTable $useIndex $ignoreIndex ";
+               $res = parent::nativeInsertSelect( $destTable, $srcTable, $varMap, $conds, $fname,
+                       $insertOptions, $selectOptions, $selectJoinConds );
 
-               if ( $conds != '*' ) {
-                       $sql .= ' WHERE ' . $this->makeList( $conds, LIST_AND );
-               }
-
-               $sql .= " $tailOpts";
-
-               $res = (bool)$this->query( $sql, $fname, $savepoint );
                if ( $savepoint ) {
                        $bar = pg_result_error( $this->mLastResult );
                        if ( $bar != false ) {
@@ -770,7 +759,7 @@ __INDEXATTR__;
                $safeseq = str_replace( "'", "''", $seqName );
                $res = $this->query( "SELECT nextval('$safeseq')" );
                $row = $this->fetchRow( $res );
-               $this->mInsertId = $row[0];
+               $this->mInsertId = is_null( $row[0] ) ? null : (int)$row[0];
 
                return $this->mInsertId;
        }
@@ -822,7 +811,7 @@ __INDEXATTR__;
                $oldName = $this->addIdentifierQuotes( $oldName );
 
                return $this->query( 'CREATE ' . ( $temporary ? 'TEMPORARY ' : '' ) . " TABLE $newName " .
-                       "(LIKE $oldName INCLUDING DEFAULTS)", $fname );
+                       "(LIKE $oldName INCLUDING DEFAULTS INCLUDING INDEXES)", $fname );
        }
 
        public function listTables( $prefix = null, $fname = __METHOD__ ) {
@@ -1053,6 +1042,7 @@ __INDEXATTR__;
                if ( $schema === false ) {
                        $schema = $this->getCoreSchema();
                }
+               $table = $this->realTableName( $table, 'raw' );
                $etable = $this->addQuotes( $table );
                $eschema = $this->addQuotes( $schema );
                $sql = "SELECT 1 FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n "
@@ -1380,6 +1370,13 @@ SQL;
                return false;
        }
 
+       public function serverIsReadOnly() {
+               $res = $this->query( "SHOW default_transaction_read_only", __METHOD__ );
+               $row = $this->fetchObject( $res );
+
+               return $row ? ( strtolower( $row->default_transaction_read_only ) === 'on' ) : false;
+       }
+
        /**
         * @param string $lockName
         * @return string Integer
index 6d187b8..60b6855 100644 (file)
@@ -27,11 +27,8 @@ use PDO;
 use PDOException;
 use LockManager;
 use FSLockManager;
-use DBConnectionError;
-use DBReadOnlyError;
 use InvalidArgumentException;
 use RuntimeException;
-use DBError;
 use stdClass;
 
 /**
@@ -815,18 +812,6 @@ class DatabaseSqlite extends Database {
                }
        }
 
-       /**
-        * @return string
-        */
-       function buildLike() {
-               $params = func_get_args();
-               if ( count( $params ) > 0 && is_array( $params[0] ) ) {
-                       $params = $params[0];
-               }
-
-               return parent::buildLike( $params ) . "ESCAPE '\' ";
-       }
-
        /**
         * @param string $field Field or column to cast
         * @return string
index feaf5cf..7c6413c 100644 (file)
 namespace Wikimedia\Rdbms;
 
 use Wikimedia\ScopedCallback;
-use DBError;
-use DBConnectionError;
-use DBUnexpectedError;
-use DBQueryError;
 use Exception;
 use RuntimeException;
 use UnexpectedValueException;
@@ -278,6 +274,14 @@ interface IDatabase {
         */
        public function pendingWriteCallers();
 
+       /**
+        * Get the number of affected rows from pending write queries
+        *
+        * @return integer
+        * @since 1.30
+        */
+       public function pendingWriteRowsAffected();
+
        /**
         * Is a connection to the database open?
         * @return bool
@@ -564,11 +568,12 @@ interface IDatabase {
         * @param string|array $cond The condition array. See IDatabase::select() for details.
         * @param string $fname The function name of the caller.
         * @param string|array $options The query options. See IDatabase::select() for details.
+        * @param string|array $join_conds The query join conditions. See IDatabase::select() for details.
         *
         * @return bool|mixed The value from the field, or false on failure.
         */
        public function selectField(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = []
+               $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
        );
 
        /**
@@ -585,12 +590,13 @@ interface IDatabase {
         * @param string|array $cond The condition array. See IDatabase::select() for details.
         * @param string $fname The function name of the caller.
         * @param string|array $options The query options. See IDatabase::select() for details.
+        * @param string|array $join_conds The query join conditions. See IDatabase::select() for details.
         *
         * @return bool|array The values from the field, or false on failure
         * @since 1.25
         */
        public function selectFieldValues(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = []
+               $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
        );
 
        /**
@@ -1033,11 +1039,25 @@ interface IDatabase {
         */
        public function buildStringCast( $field );
 
+       /**
+        * Returns true if DBs are assumed to be on potentially different servers
+        *
+        * In systems like mysql/mariadb, different databases can easily be referenced on a single
+        * connection merely by name, even in a single query via JOIN. On the other hand, Postgres
+        * treats databases as fully separate, only allowing mechanisms like postgres_fdw to
+        * effectively "mount" foreign DBs. This is true even among DBs on the same server.
+        *
+        * @return bool
+        * @since 1.29
+        */
+       public function databasesAreIndependent();
+
        /**
         * Change the current database
         *
         * @param string $db
         * @return bool Success or failure
+        * @throws DBConnectionError If databasesAreIndependent() is true and an error occurs
         */
        public function selectDB( $db );
 
@@ -1229,12 +1249,14 @@ interface IDatabase {
         *    IDatabase::insert() for details.
         * @param array $selectOptions Options for the SELECT part of the query, see
         *    IDatabase::select() for details.
+        * @param array $selectJoinConds Join conditions for the SELECT part of the query, see
+        *    IDatabase::select() for details.
         *
         * @return IResultWrapper
         */
        public function insertSelect( $destTable, $srcTable, $varMap, $conds,
                $fname = __METHOD__,
-               $insertOptions = [], $selectOptions = []
+               $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        );
 
        /**
@@ -1266,7 +1288,7 @@ interface IDatabase {
        public function conditional( $cond, $trueVal, $falseVal );
 
        /**
-        * Returns a comand for str_replace function in SQL query.
+        * Returns a command for str_replace function in SQL query.
         * Uses REPLACE() in MySQL
         *
         * @param string $orig Column to modify
index 5666170..fbc2774 100644 (file)
@@ -26,7 +26,6 @@ namespace Wikimedia\Rdbms;
 
 use Exception;
 use RuntimeException;
-use DBUnexpectedError;
 
 /**
  * Advanced database interface for IDatabase handles that include maintenance methods
index 864dea0..97e03b2 100644 (file)
@@ -19,6 +19,8 @@
  * @ingroup Database
  */
 
+namespace Wikimedia\Rdbms;
+
 /**
  * Exception class for attempted DB access
  * @ingroup Database
@@ -28,3 +30,5 @@ class DBAccessError extends DBUnexpectedError {
                parent::__construct( null, "Database access has been disabled." );
        }
 }
+
+class_alias( DBAccessError::class, 'DBAccessError' );
index dca1302..0091524 100644 (file)
@@ -18,7 +18,7 @@
  * @file
  * @ingroup Database
  */
-use Wikimedia\Rdbms\IDatabase;
+namespace Wikimedia\Rdbms;
 
 /**
  * @ingroup Database
@@ -37,3 +37,5 @@ class DBConnectionError extends DBExpectedError {
                parent::__construct( $db, $msg );
        }
 }
+
+class_alias( DBConnectionError::class, 'DBConnectionError' );
index 226c675..d65e2d3 100644 (file)
  * @file
  * @ingroup Database
  */
-use Wikimedia\Rdbms\IDatabase;
+
+namespace Wikimedia\Rdbms;
+
+use Exception;
 
 /**
  * Database error base class
@@ -38,3 +41,5 @@ class DBError extends Exception {
                parent::__construct( $error );
        }
 }
+
+class_alias( DBError::class, 'DBError' );
index 57538a8..f6b9bd5 100644 (file)
  * @file
  * @ingroup Database
  */
-use Wikimedia\Rdbms\IDatabase;
+
+namespace Wikimedia\Rdbms;
+
+use MessageSpecifier;
+use ILocalizedException;
+use Message;
 
 /**
  * Base class for the more common types of database errors. These are known to occur
@@ -52,3 +57,5 @@ class DBExpectedError extends DBError implements MessageSpecifier, ILocalizedExc
                return Message::newFromSpecifier( $this );
        }
 }
+
+class_alias( DBExpectedError::class, 'DBExpectedError' );
index 89b9cea..bc2a865 100644 (file)
@@ -18,8 +18,8 @@
  * @file
  * @ingroup Database
  */
-use Wikimedia\Rdbms\Database;
-use Wikimedia\Rdbms\IDatabase;
+
+namespace Wikimedia\Rdbms;
 
 /**
  * @ingroup Database
@@ -63,3 +63,5 @@ class DBQueryError extends DBExpectedError {
                $this->fname = $fname;
        }
 }
+
+class_alias( DBQueryError::class, 'DBQueryError' );
index d4dce1e..4393343 100644 (file)
  * @ingroup Database
  */
 
+namespace Wikimedia\Rdbms;
+
 /**
  * @ingroup Database
  */
 class DBReadOnlyError extends DBExpectedError {
 }
+
+class_alias( DBReadOnlyError::class, 'DBReadOnlyError' );
index c5e1ed7..457431e 100644 (file)
  * @ingroup Database
  */
 
+namespace Wikimedia\Rdbms;
+
 /**
  * Exception class for replica DB wait timeouts
  * @ingroup Database
  */
 class DBReplicationWaitError extends DBExpectedError {
 }
+
+class_alias( DBReplicationWaitError::class, 'DBReplicationWaitError' );
index a488667..fd79773 100644 (file)
  * @ingroup Database
  */
 
+namespace Wikimedia\Rdbms;
+
 /**
  * @ingroup Database
  */
 class DBTransactionError extends DBExpectedError {
 }
+
+class_alias( DBTransactionError::class, 'DBTransactionError' );
+
index 4e467b2..e45b9f3 100644 (file)
@@ -19,6 +19,8 @@
  * @ingroup Database
  */
 
+namespace Wikimedia\Rdbms;
+
 /**
  * @ingroup Database
  */
@@ -27,3 +29,5 @@ class DBTransactionSizeError extends DBTransactionError {
                return 'transaction-duration-limit-exceeded';
        }
 }
+
+class_alias( DBTransactionSizeError::class, 'DBTransactionSizeError' );
index 5a12671..9c67eb5 100644 (file)
  * @ingroup Database
  */
 
+namespace Wikimedia\Rdbms;
+
 /**
  * @ingroup Database
  */
 class DBUnexpectedError extends DBError {
 }
+
+class_alias( DBUnexpectedError::class, 'DBUnexpectedError' );
index faf7fb1..6e328f4 100644 (file)
@@ -24,8 +24,6 @@
 namespace Wikimedia\Rdbms;
 
 use InvalidArgumentException;
-use DBTransactionError;
-use DBReplicationWaitError;
 
 /**
  * An interface for generating database load balancers
@@ -194,6 +192,13 @@ interface ILBFactory {
         */
        public function rollbackMasterChanges( $fname = __METHOD__ );
 
+       /**
+        * Check if a transaction round is active
+        * @return bool
+        * @since 1.29
+        */
+       public function hasTransactionRound();
+
        /**
         * Determine if any master connection has pending changes
         * @return bool
index 86547b9..3567204 100644 (file)
@@ -30,8 +30,6 @@ use EmptyBagOStuff;
 use WANObjectCache;
 use Exception;
 use RuntimeException;
-use DBTransactionError;
-use DBReplicationWaitError;
 
 /**
  * An interface for generating database load balancers
@@ -252,6 +250,10 @@ abstract class LBFactory implements ILBFactory {
                } );
        }
 
+       public function hasTransactionRound() {
+               return ( $this->trxRoundId !== false );
+       }
+
        /**
         * Log query info if multi DB transactions are going to be committed now
         */
@@ -579,3 +581,5 @@ abstract class LBFactory implements ILBFactory {
                $this->destroy();
        }
 }
+
+class_alias( LBFactory::class, 'LBFactory' );
index cbd0ff3..79827a2 100644 (file)
  */
 namespace Wikimedia\Rdbms;
 
-use DBError;
-use DBAccessError;
-use DBTransactionError;
-use DBExpectedError;
 use Exception;
 use InvalidArgumentException;
 
@@ -290,6 +286,8 @@ interface ILoadBalancer {
         * Return the server info structure for a given index, or false if the index is invalid.
         * @param int $i
         * @return array|bool
+        *
+        * @deprecated Since 1.30, no alternative
         */
        public function getServerInfo( $i );
 
@@ -298,6 +296,8 @@ interface ILoadBalancer {
         * is created if it doesn't exist
         * @param int $i
         * @param array $serverInfo
+        *
+        * @deprecated Since 1.30, construct new object
         */
        public function setServerInfo( $i, array $serverInfo );
 
@@ -444,13 +444,17 @@ interface ILoadBalancer {
        /**
         * @note This method will trigger a DB connection if not yet done
         * @param string|bool $domain Domain ID, or false for the current domain
-        * @return bool Whether the generic connection for reads is highly "lagged"
+        * @return bool Whether the database for generic connections this request is highly "lagged"
         */
        public function getLaggedReplicaMode( $domain = false );
 
        /**
+        * Checks whether the database for generic connections this request was both:
+        *   - a) Already choosen due to a prior connection attempt
+        *   - b) Considered highly "lagged"
+        *
         * @note This method will never cause a new DB connection
-        * @return bool Whether any generic connection used for reads was highly "lagged"
+        * @return bool
         */
        public function laggedReplicaUsed();
 
index e8069c0..0fc00a8 100644 (file)
@@ -29,13 +29,6 @@ use BagOStuff;
 use EmptyBagOStuff;
 use WANObjectCache;
 use ArrayUtils;
-use DBError;
-use DBAccessError;
-use DBExpectedError;
-use DBUnexpectedError;
-use DBTransactionError;
-use DBTransactionSizeError;
-use DBConnectionError;
 use InvalidArgumentException;
 use RuntimeException;
 use Exception;
@@ -276,11 +269,11 @@ class LoadBalancer implements ILoadBalancer {
                                $host = $this->getServerName( $i );
                                if ( $lag === false && !is_infinite( $maxServerLag ) ) {
                                        $this->replLogger->error(
-                                               "Server {host} (#$i) is not replicating?", [ 'host' => $host ] );
+                                               "Server {host} is not replicating?", [ 'host' => $host ] );
                                        unset( $loads[$i] );
                                } elseif ( $lag > $maxServerLag ) {
                                        $this->replLogger->warning(
-                                               "Server {host} (#$i) has {lag} seconds of lag (>= {maxlag})",
+                                               "Server {host} has {lag} seconds of lag (>= {maxlag})",
                                                [ 'host' => $host, 'lag' => $lag, 'maxlag' => $maxServerLag ]
                                        );
                                        unset( $loads[$i] );
@@ -311,60 +304,99 @@ class LoadBalancer implements ILoadBalancer {
 
        public function getReaderIndex( $group = false, $domain = false ) {
                if ( count( $this->mServers ) == 1 ) {
-                       # Skip the load balancing if there's only one server
+                       // Skip the load balancing if there's only one server
                        return $this->getWriterIndex();
                } elseif ( $group === false && $this->mReadIndex >= 0 ) {
-                       # Shortcut if generic reader exists already
+                       // Shortcut if the generic reader index was already cached
                        return $this->mReadIndex;
                }
 
-               # Find the relevant load array
                if ( $group !== false ) {
+                       // Use the server weight array for this load group
                        if ( isset( $this->mGroupLoads[$group] ) ) {
-                               $nonErrorLoads = $this->mGroupLoads[$group];
+                               $loads = $this->mGroupLoads[$group];
                        } else {
-                               # No loads for this group, return false and the caller can use some other group
+                               // No loads for this group, return false and the caller can use some other group
                                $this->connLogger->info( __METHOD__ . ": no loads for group $group" );
 
                                return false;
                        }
                } else {
-                       $nonErrorLoads = $this->mLoads;
+                       // Use the generic load group
+                       $loads = $this->mLoads;
                }
 
-               if ( !count( $nonErrorLoads ) ) {
-                       throw new InvalidArgumentException( "Empty server array given to LoadBalancer" );
+               // Scale the configured load ratios according to each server's load and state
+               $this->getLoadMonitor()->scaleLoads( $loads, $domain );
+
+               // Pick a server to use, accounting for weights, load, lag, and mWaitForPos
+               list( $i, $laggedReplicaMode ) = $this->pickReaderIndex( $loads, $domain );
+               if ( $i === false ) {
+                       // Replica DB connection unsuccessful
+                       return false;
                }
 
-               # Scale the configured load ratios according to the dynamic load if supported
-               $this->getLoadMonitor()->scaleLoads( $nonErrorLoads, $domain );
+               if ( $this->mWaitForPos && $i != $this->getWriterIndex() ) {
+                       // Before any data queries are run, wait for the server to catch up to the
+                       // specified position. This is used to improve session consistency. Note that
+                       // when LoadBalancer::waitFor() sets mWaitForPos, the waiting triggers here,
+                       // so update laggedReplicaMode as needed for consistency.
+                       if ( !$this->doWait( $i ) ) {
+                               $laggedReplicaMode = true;
+                       }
+               }
 
-               $laggedReplicaMode = false;
+               if ( $this->mReadIndex <= 0 && $this->mLoads[$i] > 0 && $group === false ) {
+                       // Cache the generic reader index for future ungrouped DB_REPLICA handles
+                       $this->mReadIndex = $i;
+                       // Record if the generic reader index is in "lagged replica DB" mode
+                       if ( $laggedReplicaMode ) {
+                               $this->laggedReplicaMode = true;
+                       }
+               }
+
+               $serverName = $this->getServerName( $i );
+               $this->connLogger->debug( __METHOD__ . ": using server $serverName for group '$group'" );
+
+               return $i;
+       }
+
+       /**
+        * @param array $loads List of server weights
+        * @param string|bool $domain
+        * @return array (reader index, lagged replica mode) or false on failure
+        */
+       private function pickReaderIndex( array $loads, $domain = false ) {
+               if ( !count( $loads ) ) {
+                       throw new InvalidArgumentException( "Empty server array given to LoadBalancer" );
+               }
 
-               # No server found yet
+               /** @var $i int|bool Index of selected server */
                $i = false;
-               # First try quickly looking through the available servers for a server that
-               # meets our criteria
-               $currentLoads = $nonErrorLoads;
+               /** @var $laggedReplicaMode bool Whether server is considered lagged */
+               $laggedReplicaMode = false;
+
+               // Quickly look through the available servers for a server that meets criteria...
+               $currentLoads = $loads;
                while ( count( $currentLoads ) ) {
                        if ( $this->mAllowLagged || $laggedReplicaMode ) {
                                $i = ArrayUtils::pickRandom( $currentLoads );
                        } else {
                                $i = false;
                                if ( $this->mWaitForPos && $this->mWaitForPos->asOfTime() ) {
-                                       # ChronologyProtecter causes mWaitForPos to be set via sessions.
-                                       # This triggers doWait() after connect, so it's especially good to
-                                       # avoid lagged servers so as to avoid just blocking in that method.
+                                       // ChronologyProtecter sets mWaitForPos for session consistency.
+                                       // This triggers doWait() after connect, so it's especially good to
+                                       // avoid lagged servers so as to avoid excessive delay in that method.
                                        $ago = microtime( true ) - $this->mWaitForPos->asOfTime();
-                                       # Aim for <= 1 second of waiting (being too picky can backfire)
+                                       // Aim for <= 1 second of waiting (being too picky can backfire)
                                        $i = $this->getRandomNonLagged( $currentLoads, $domain, $ago + 1 );
                                }
                                if ( $i === false ) {
-                                       # Any server with less lag than it's 'max lag' param is preferable
+                                       // Any server with less lag than it's 'max lag' param is preferable
                                        $i = $this->getRandomNonLagged( $currentLoads, $domain );
                                }
                                if ( $i === false && count( $currentLoads ) != 0 ) {
-                                       # All replica DBs lagged. Switch to read-only mode
+                                       // All replica DBs lagged. Switch to read-only mode
                                        $this->replLogger->error( "All replica DBs lagged. Switch to read-only mode" );
                                        $i = ArrayUtils::pickRandom( $currentLoads );
                                        $laggedReplicaMode = true;
@@ -372,12 +404,12 @@ class LoadBalancer implements ILoadBalancer {
                        }
 
                        if ( $i === false ) {
-                               # pickRandom() returned false
-                               # This is permanent and means the configuration or the load monitor
-                               # wants us to return false.
+                               // pickRandom() returned false.
+                               // This is permanent and means the configuration or the load monitor
+                               // wants us to return false.
                                $this->connLogger->debug( __METHOD__ . ": pickRandom() returned false" );
 
-                               return false;
+                               return [ false, false ];
                        }
 
                        $serverName = $this->getServerName( $i );
@@ -386,8 +418,7 @@ class LoadBalancer implements ILoadBalancer {
                        $conn = $this->openConnection( $i, $domain );
                        if ( !$conn ) {
                                $this->connLogger->warning( __METHOD__ . ": Failed connecting to $i/$domain" );
-                               unset( $nonErrorLoads[$i] );
-                               unset( $currentLoads[$i] );
+                               unset( $currentLoads[$i] ); // avoid this server next iteration
                                $i = false;
                                continue;
                        }
@@ -398,38 +429,16 @@ class LoadBalancer implements ILoadBalancer {
                                $this->reuseConnection( $conn );
                        }
 
-                       # Return this server
+                       // Return this server
                        break;
                }
 
-               # If all servers were down, quit now
-               if ( !count( $nonErrorLoads ) ) {
+               // If all servers were down, quit now
+               if ( !count( $currentLoads ) ) {
                        $this->connLogger->error( "All servers down" );
                }
 
-               if ( $i !== false ) {
-                       # Replica DB connection successful.
-                       # Wait for the session master pos for a short time.
-                       if ( $this->mWaitForPos && $i > 0 ) {
-                               # When LoadBalancer::waitFor() set mWaitForPos, the wait will happen here.
-                               # Be sure to update laggedReplicaMode accordingly for consistency.
-                               if ( !$this->doWait( $i ) ) {
-                                       $laggedReplicaMode = true;
-                               }
-                       }
-                       if ( $this->mReadIndex <= 0 && $this->mLoads[$i] > 0 && $group === false ) {
-                               $this->mReadIndex = $i;
-                               # Record if the generic reader index is in "lagged replica DB" mode
-                               if ( $laggedReplicaMode ) {
-                                       $this->laggedReplicaMode = true;
-                               }
-                       }
-                       $serverName = $this->getServerName( $i );
-                       $this->connLogger->debug(
-                               __METHOD__ . ": using server $serverName for group '$group'" );
-               }
-
-               return $i;
+               return [ $i, $laggedReplicaMode ];
        }
 
        public function waitFor( $pos ) {
@@ -1024,7 +1033,11 @@ class LoadBalancer implements ILoadBalancer {
                return ( $name != '' ) ? $name : 'localhost';
        }
 
+       /**
+        * @deprecated Since 1.30, no alternative
+        */
        public function getServerInfo( $i ) {
+               wfDeprecated( __METHOD__, '1.30' );
                if ( isset( $this->mServers[$i] ) ) {
                        return $this->mServers[$i];
                } else {
@@ -1032,7 +1045,11 @@ class LoadBalancer implements ILoadBalancer {
                }
        }
 
+       /**
+        * @deprecated Since 1.30, construct new object
+        */
        public function setServerInfo( $i, array $serverInfo ) {
+               wfDeprecated( __METHOD__, '1.30' );
                $this->mServers[$i] = $serverInfo;
        }
 
index d120b6f..4300e9f 100644 (file)
@@ -161,7 +161,10 @@ class LoadMonitor implements ILoadMonitor {
                        if ( !$conn ) {
                                $lagTimes[$i] = false;
                                $host = $this->parent->getServerName( $i );
-                               $this->replLogger->error( __METHOD__ . ": host $host is unreachable" );
+                               $this->replLogger->error(
+                                       __METHOD__ . ": host {db_server} is unreachable",
+                                       [ 'db_server' => $host ]
+                               );
                                continue;
                        }
 
@@ -171,7 +174,10 @@ class LoadMonitor implements ILoadMonitor {
                                $lagTimes[$i] = $conn->getLag();
                                if ( $lagTimes[$i] === false ) {
                                        $host = $this->parent->getServerName( $i );
-                                       $this->replLogger->error( __METHOD__ . ": host $host is not replicating?" );
+                                       $this->replLogger->error(
+                                               __METHOD__ . ": host {db_server} is not replicating?",
+                                               [ 'db_server' => $host ]
+                                       );
                                }
                        }
 
index 613dac5..8bbf9e5 100644 (file)
@@ -28,14 +28,12 @@ class LoadMonitorNull implements ILoadMonitor {
        public function __construct(
                ILoadBalancer $lb, BagOStuff $sCache, BagOStuff $cCache, array $options = []
        ) {
-
        }
 
        public function setLogger( LoggerInterface $logger ) {
        }
 
        public function scaleLoads( array &$loads, $domain ) {
-
        }
 
        public function getLagTimes( array $serverIndexes, $domain ) {
@@ -43,6 +41,5 @@ class LoadMonitorNull implements ILoadMonitor {
        }
 
        public function clearCaches() {
-
        }
 }
index 7f43436..e3fc1a6 100644 (file)
@@ -49,6 +49,8 @@ class RedisConnectionPool implements LoggerAwareInterface {
        protected $persistent;
        /** @var int Serializer to use (Redis::SERIALIZER_*) */
        protected $serializer;
+       /** @var string ID for persistent connections */
+       protected $id;
 
        /** @var int Current idle pool size */
        protected $idlePoolSize = 0;
@@ -71,9 +73,10 @@ class RedisConnectionPool implements LoggerAwareInterface {
 
        /**
         * @param array $options
+        * @param string $id
         * @throws Exception
         */
-       protected function __construct( array $options ) {
+       protected function __construct( array $options, $id ) {
                if ( !class_exists( 'Redis' ) ) {
                        throw new RuntimeException(
                                __CLASS__ . ' requires a Redis client library. ' .
@@ -95,6 +98,7 @@ class RedisConnectionPool implements LoggerAwareInterface {
                } else {
                        throw new InvalidArgumentException( "Invalid serializer specified." );
                }
+               $this->id = $id;
        }
 
        /**
@@ -148,7 +152,7 @@ class RedisConnectionPool implements LoggerAwareInterface {
                $id = sha1( serialize( $options ) );
                // Initialize the object at the hash as needed...
                if ( !isset( self::$instances[$id] ) ) {
-                       self::$instances[$id] = new self( $options );
+                       self::$instances[$id] = new self( $options, $id );
                }
 
                return self::$instances[$id];
@@ -230,7 +234,7 @@ class RedisConnectionPool implements LoggerAwareInterface {
                $conn = new Redis();
                try {
                        if ( $this->persistent ) {
-                               $result = $conn->pconnect( $host, $port, $this->connectTimeout );
+                               $result = $conn->pconnect( $host, $port, $this->connectTimeout, $this->id );
                        } else {
                                $result = $conn->connect( $host, $port, $this->connectTimeout );
                        }
index 9c18b10..f687254 100644 (file)
@@ -32,8 +32,17 @@ use Liuggio\StatsdClient\Factory\StatsdDataFactory;
  *
  * @since 1.25
  */
-class BufferingStatsdDataFactory extends StatsdDataFactory {
+class BufferingStatsdDataFactory extends StatsdDataFactory implements MediawikiStatsdDataFactory {
        protected $buffer = [];
+       /**
+        * Collection enabled?
+        * @var bool
+        */
+       protected $enabled = true;
+       /**
+        * @var string
+        */
+       private $prefix;
 
        public function __construct( $prefix ) {
                parent::__construct();
@@ -49,6 +58,7 @@ class BufferingStatsdDataFactory extends StatsdDataFactory {
         *
         * @param string $key
         * @since 1.26
+        * @return string
         */
        private static function normalizeMetricKey( $key ) {
                $key = preg_replace( '/[:.]+/', '.', $key );
@@ -61,6 +71,9 @@ class BufferingStatsdDataFactory extends StatsdDataFactory {
                $key, $value = 1, $metric = StatsdDataInterface::STATSD_METRIC_COUNT
        ) {
                $entity = $this->produceStatsdDataEntity();
+               if ( !$this->enabled ) {
+                       return $entity;
+               }
                if ( $key !== null ) {
                        $key = self::normalizeMetricKey( "{$this->prefix}.{$key}" );
                        $entity->setKey( $key );
@@ -79,9 +92,35 @@ class BufferingStatsdDataFactory extends StatsdDataFactory {
        }
 
        /**
+        * @deprecated Use getData()
         * @return StatsdData[]
         */
        public function getBuffer() {
                return $this->buffer;
        }
+
+       /**
+        * Check whether this data factory has any data.
+        * @return boolean
+        */
+       public function hasData() {
+               return !empty( $this->buffer );
+       }
+
+       /**
+        * Return data from the factory.
+        * @return StatsdData[]
+        */
+       public function getData() {
+               return $this->buffer;
+       }
+
+       /**
+        * Set collection enable status.
+        * @param bool $enabled Will collection be enabled?
+        * @return void
+        */
+       public function setEnabled( $enabled ) {
+               $this->enabled = $enabled;
+       }
 }
diff --git a/includes/libs/stats/MediawikiStatsdDataFactory.php b/includes/libs/stats/MediawikiStatsdDataFactory.php
new file mode 100644 (file)
index 0000000..d560f18
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+use Liuggio\StatsdClient\Entity\StatsdData;
+use Liuggio\StatsdClient\Factory\StatsdDataFactoryInterface;
+
+/**
+ * Mediawiki adaptation of Statsd data factory.
+ */
+interface MediawikiStatsdDataFactory extends StatsdDataFactoryInterface {
+       /**
+        * Check whether this data factory has any data.
+        * @return boolean
+        */
+       public function hasData();
+
+       /**
+        * Return data from the factory.
+        * @return StatsdData[]
+        */
+       public function getData();
+
+       /**
+        * Set collection enable status.
+        * @param bool $enabled Will collection be enabled?
+        * @return void
+        */
+       public function setEnabled( $enabled );
+
+}
index fee792f..4fa0248 100644 (file)
@@ -8,7 +8,7 @@ use Liuggio\StatsdClient\Factory\StatsdDataFactoryInterface;
  * @author Addshore
  * @since 1.27
  */
-class NullStatsdDataFactory implements StatsdDataFactoryInterface {
+class NullStatsdDataFactory implements MediawikiStatsdDataFactory {
 
        /**
         * This function creates a 'timing' StatsdData.
@@ -108,4 +108,28 @@ class NullStatsdDataFactory implements StatsdDataFactoryInterface {
                return $data;
        }
 
+       /**
+        * Check whether this data factory has any data.
+        * @return boolean
+        */
+       public function hasData() {
+               return false;
+       }
+
+       /**
+        * Return data from the factory.
+        * @return StatsdData[]
+        */
+       public function getData() {
+               return [];
+       }
+
+       /**
+        * Set collection enable status.
+        * @param bool $enabled Will collection be enabled?
+        * @return void
+        */
+       public function setEnabled( $enabled ) {
+               // Nothing to do, null factory is always disabled.
+       }
 }
index dd1976c..a8af714 100644 (file)
@@ -69,7 +69,7 @@ class SamplingStatsdClient extends StatsdClient {
                return $data;
        }
 
-       /*
+       /**
         * Send the metrics over UDP
         * Sample the metrics according to their sample rate and send the remaining ones.
         *
index f1df7f1..9d886bf 100644 (file)
@@ -272,7 +272,6 @@ class XMPReader implements LoggerAwareInterface {
                if ( isset( $data['xmp-exif']['GPSAltitudeRef'] )
                        && isset( $data['xmp-exif']['GPSAltitude'] )
                ) {
-
                        // Must convert to a real before multiplying by -1
                        // XMPValidate guarantees there will always be a '/' in this value.
                        list( $nom, $denom ) = explode( '/', $data['xmp-exif']['GPSAltitude'] );
@@ -1004,7 +1003,6 @@ class XMPReader implements LoggerAwareInterface {
         */
        private function startElementModeInitial( $ns, $tag, $attribs ) {
                if ( $ns !== self::NS_RDF ) {
-
                        if ( isset( $this->items[$ns][$tag] ) ) {
                                if ( isset( $this->items[$ns][$tag]['structPart'] ) ) {
                                        // If this element is supposed to appear only as
@@ -1066,7 +1064,6 @@ class XMPReader implements LoggerAwareInterface {
         */
        private function startElementModeStruct( $ns, $tag, $attribs ) {
                if ( $ns !== self::NS_RDF ) {
-
                        if ( isset( $this->items[$ns][$tag] ) ) {
                                if ( isset( $this->items[$ns][$this->ancestorStruct]['children'] )
                                        && !isset( $this->items[$ns][$this->ancestorStruct]['children'][$tag] )
diff --git a/includes/linkeddata/PageDataRequestHandler.php b/includes/linkeddata/PageDataRequestHandler.php
new file mode 100644 (file)
index 0000000..d26b304
--- /dev/null
@@ -0,0 +1,172 @@
+<?php
+
+use Wikimedia\Http\HttpAcceptParser;
+use Wikimedia\Http\HttpAcceptNegotiator;
+
+/**
+ * Request handler implementing a data interface for mediawiki pages.
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ * @author Amir Sarabadanai
+ */
+
+class PageDataRequestHandler {
+
+       /**
+        * Checks whether the request is complete, i.e. whether it contains all information needed
+        * to reply with page data.
+        *
+        * This does not check whether the request is valid and will actually produce a successful
+        * response.
+        *
+        * @param string|null $subPage
+        * @param WebRequest $request
+        *
+        * @return bool
+        * @throws HttpError
+        */
+       public function canHandleRequest( $subPage, WebRequest $request ) {
+               if ( $subPage === '' || $subPage === null ) {
+                       if ( $request->getText( 'target', '' ) === '' ) {
+                               return false;
+                       } else {
+                               return true;
+                       }
+               }
+
+               $parts = explode( '/', $subPage, 2 );
+               if ( $parts !== 2 ) {
+                       $slot = $parts[0];
+                       if ( $slot === 'main' or $slot === '' ) {
+                               return true;
+                       }
+               }
+
+               return false;
+       }
+
+       /**
+        * Main method for handling requests.
+        *
+        * @param string $subPage
+        * @param WebRequest $request The request parameters. Known parameters are:
+        *        - title: the page title
+        *        - format: the format
+        *        - oldid|revision: the revision ID
+        * @param OutputPage $output
+        *
+        * @note: Instead of an output page, a WebResponse could be sufficient, but
+        *        redirect logic is currently implemented in OutputPage.
+        *
+        * @throws HttpError
+        */
+       public function handleRequest( $subPage, WebRequest $request, OutputPage $output ) {
+               // No matter what: The response is always public
+               $output->getRequest()->response()->header( 'Access-Control-Allow-Origin: *' );
+
+               if ( !$this->canHandleRequest( $subPage, $request ) ) {
+                       throw new HttpError( 400, wfMessage( 'pagedata-bad-title', $subPage ) );
+               }
+
+               $revision = 0;
+
+               $parts = explode( '/', $subPage, 2 );
+               if ( $subPage !== '' ) {
+                       $title = $parts[1];
+               } else {
+                       $title = $request->getText( 'target', '' );
+               }
+
+               $revision = $request->getInt( 'oldid', $revision );
+               $revision = $request->getInt( 'revision', $revision );
+
+               if ( $title === null || $title === '' ) {
+                       //TODO: different error message?
+                       throw new HttpError( 400, wfMessage( 'pagedata-bad-title', $title ) );
+               }
+
+               try {
+                       $title = Title::newFromTextThrow( $title );
+               } catch ( MalformedTitleException $ex ) {
+                       throw new HttpError( 400, wfMessage( 'pagedata-bad-title', $title ) );
+               }
+
+               $this->httpContentNegotiation( $request, $output, $title, $revision );
+       }
+
+       /**
+        * Applies HTTP content negotiation.
+        * If the negotiation is successful, this method will set the appropriate redirect
+        * in the OutputPage object and return. Otherwise, an HttpError is thrown.
+        *
+        * @param WebRequest $request
+        * @param OutputPage $output
+        * @param Title $title
+        * @param int $revision The desired revision
+        *
+        * @throws HttpError
+        */
+       public function httpContentNegotiation(
+               WebRequest $request,
+               OutputPage $output,
+               Title $title,
+               $revision = 0
+       ) {
+               $contentHandler = ContentHandler::getForTitle( $title );
+               $mimeTypes = $contentHandler->getSupportedFormats();
+
+               $headers = $request->getAllHeaders();
+               if ( isset( $headers['ACCEPT'] ) ) {
+                       $parser = new HttpAcceptParser();
+                       $accept = $parser->parseWeights( $headers['ACCEPT'] );
+               } else {
+                       // anything goes
+                       $accept = [
+                               '*' => 0.1 // just to make extra sure
+                       ];
+                       // prefer the default
+                       $accept[$mimeTypes[0]] = 1;
+               }
+
+               $negotiator = new HttpAcceptNegotiator( $mimeTypes );
+               $format = $negotiator->getBestSupportedKey( $accept, null );
+
+               if ( $format === null ) {
+                       $format = isset( $accept['text/html'] ) ? 'text/html' : null;
+               }
+
+               if ( $format === null ) {
+                       $msg = wfMessage( 'pagedata-not-acceptable', implode( ', ', $mimeTypes ) );
+                       throw new HttpError( 406, $msg );
+               }
+
+               $url = $this->getDocUrl( $title, $format, $revision );
+               $output->redirect( $url, 303 );
+       }
+
+       /**
+        * Returns a url representing the given title.
+        *
+        * @param Title $title
+        * @param string|null $format The (normalized) format name, or ''
+        * @param int $revision
+        * @return string
+        */
+       private function getDocUrl( Title $title, $format = '', $revision = 0 ) {
+               $params = [];
+
+               if ( $revision > 0 ) {
+                       $params['oldid'] = $revision;
+               }
+
+               if ( $format === 'text/html' ) {
+                       return $title->getFullURL( $params );
+               }
+
+               $params[ 'action' ] = 'raw';
+
+               return $title->getFullURL( $params );
+       }
+
+}
index 1c5899b..e7095f0 100644 (file)
@@ -634,7 +634,7 @@ class ManualLogEntry extends LogEntryBase {
                }
 
                $dbw->insert( 'logging', $data, __METHOD__ );
-               $this->id = !is_null( $id ) ? $id : $dbw->insertId();
+               $this->id = $dbw->insertId();
 
                $rows = [];
                foreach ( $relations as $tag => $values ) {
index 317652a..c5501cb 100644 (file)
@@ -390,9 +390,18 @@ class LogEventsList extends ContextSource {
                        [ 'mw-logline-' . $entry->getType() ],
                        $newClasses
                );
+               $attribs = [
+                       'data-mw-logid' => $entry->getId(),
+                       'data-mw-logaction' => $entry->getFullType(),
+               ];
+               $ret = "$del $time $action $comment $revert $tagDisplay";
+
+               // Let extensions add data
+               Hooks::run( 'LogEventsListLineEnding', [ $this, &$ret, $entry, &$classes, &$attribs ] );
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
+               $attribs['class'] = implode( ' ', $classes );
 
-               return Html::rawElement( 'li', [ 'class' => $classes ],
-                       "$del $time $action $comment $revert $tagDisplay" ) . "\n";
+               return Html::rawElement( 'li', $attribs, $ret ) . "\n";
        }
 
        /**
index 64102b7..f2b1670 100644 (file)
@@ -110,7 +110,7 @@ class LogPage {
                        'log_params' => $this->params
                ];
                $dbw->insert( 'logging', $data, __METHOD__ );
-               $newId = !is_null( $log_id ) ? $log_id : $dbw->insertId();
+               $newId = $dbw->insertId();
 
                # And update recentchanges
                if ( $this->updateRecentChanges ) {
index ea28ff2..e02b8a6 100644 (file)
@@ -305,14 +305,13 @@ class LogPager extends ReverseChronologicalPager {
                $options = $basic['options'];
                $joins = $basic['join_conds'];
 
-               $index = [];
                # Add log_search table if there are conditions on it.
                # This filters the results to only include log rows that have
                # log_search records with the specified ls_field and ls_value values.
                if ( array_key_exists( 'ls_field', $this->mConds ) ) {
                        $tables[] = 'log_search';
-                       $index['log_search'] = 'ls_field_val';
-                       $index['logging'] = 'PRIMARY';
+                       $options['IGNORE INDEX'] = [ 'log_search' => 'ls_log_id' ];
+                       $options['USE INDEX'] = [ 'logging' => 'PRIMARY' ];
                        if ( !$this->hasEqualsClause( 'ls_field' )
                                || !$this->hasEqualsClause( 'ls_value' )
                        ) {
@@ -322,9 +321,6 @@ class LogPager extends ReverseChronologicalPager {
                                $options[] = 'DISTINCT';
                        }
                }
-               if ( count( $index ) ) {
-                       $options['USE INDEX'] = $index;
-               }
                # Don't show duplicate rows when using log_search
                $joins['log_search'] = [ 'INNER JOIN', 'ls_log_id=log_id' ];
 
index d66e7e3..932797a 100644 (file)
@@ -43,7 +43,8 @@ use MediaWiki\MediaWikiServices;
  * of sending out bulk mails (bcc:user1,user2...) for all these users having the
  * same timeoffset in their preferences.
  *
- * Visit the documentation pages under http://meta.wikipedia.com/Enotif
+ * Visit the documentation pages under
+ * https://www.mediawiki.org/wiki/Help:Watching_pages
  */
 class EmailNotification {
 
index 7999bbb..c5f9cbb 100644 (file)
@@ -160,6 +160,7 @@ class BitmapMetadataHandler {
                $meta = new self();
 
                $seg = JpegMetadataExtractor::segmentSplitter( $filename );
+
                if ( isset( $seg['COM'] ) && isset( $seg['COM'][0] ) ) {
                        $meta->addMetadata( [ 'JPEGFileComment' => $seg['COM'] ], 'native' );
                }
@@ -182,9 +183,8 @@ class BitmapMetadataHandler {
                                $meta->addMetadata( $array, $type );
                        }
                }
-               if ( isset( $seg['byteOrder'] ) ) {
-                       $meta->getExif( $filename, $seg['byteOrder'] );
-               }
+
+               $meta->getExif( $filename, isset( $seg['byteOrder'] ) ? $seg['byteOrder'] : 'BE' );
 
                return $meta->getMetadataArray();
        }
index a852215..aae66d3 100644 (file)
@@ -304,11 +304,28 @@ class DjVuHandler extends ImageHandler {
                        return false;
                }
 
+               $trees = $this->extractTreesFromMetadata( $metadata );
+               $image->djvuTextTree = $trees['TextTree'];
+               $image->dejaMetaTree = $trees['MetaTree'];
+
+               if ( $gettext ) {
+                       return $image->djvuTextTree;
+               } else {
+                       return $image->dejaMetaTree;
+               }
+       }
+
+       /**
+        * Extracts metadata and text trees from metadata XML in string form
+        * @param string $metadata XML metadata as a string
+        * @return array
+        */
+       protected function extractTreesFromMetadata( $metadata ) {
                MediaWiki\suppressWarnings();
                try {
                        // Set to false rather than null to avoid further attempts
-                       $image->dejaMetaTree = false;
-                       $image->djvuTextTree = false;
+                       $metaTree = false;
+                       $textTree = false;
                        $tree = new SimpleXMLElement( $metadata, LIBXML_PARSEHUGE );
                        if ( $tree->getName() == 'mw-djvu' ) {
                                /** @var SimpleXMLElement $b */
@@ -316,23 +333,20 @@ class DjVuHandler extends ImageHandler {
                                        if ( $b->getName() == 'DjVuTxt' ) {
                                                // @todo File::djvuTextTree and File::dejaMetaTree are declared
                                                // dynamically. Add a public File::$data to facilitate this?
-                                               $image->djvuTextTree = $b;
+                                               $textTree = $b;
                                        } elseif ( $b->getName() == 'DjVuXML' ) {
-                                               $image->dejaMetaTree = $b;
+                                               $metaTree = $b;
                                        }
                                }
                        } else {
-                               $image->dejaMetaTree = $tree;
+                               $metaTree = $tree;
                        }
                } catch ( Exception $e ) {
-                       wfDebug( "Bogus multipage XML metadata on '{$image->getName()}'\n" );
+                       wfDebug( "Bogus multipage XML metadata\n" );
                }
                MediaWiki\restoreWarnings();
-               if ( $gettext ) {
-                       return $image->djvuTextTree;
-               } else {
-                       return $image->dejaMetaTree;
-               }
+
+               return [ 'MetaTree' => $metaTree, 'TextTree' => $textTree ];
        }
 
        function getImageSize( $image, $path ) {
@@ -394,30 +408,39 @@ class DjVuHandler extends ImageHandler {
                        $cache::TTL_INDEFINITE,
                        function () use ( $file ) {
                                $tree = $this->getMetaTree( $file );
-                               if ( !$tree ) {
-                                       return false;
-                               }
-
-                               $dimsByPage = [];
-                               $count = count( $tree->xpath( '//OBJECT' ) );
-                               for ( $i = 0; $i < $count; $i++ ) {
-                                       $o = $tree->BODY[0]->OBJECT[$i];
-                                       if ( $o ) {
-                                               $dimsByPage[$i] = [
-                                                       'width' => (int)$o['width'],
-                                                       'height' => (int)$o['height'],
-                                               ];
-                                       } else {
-                                               $dimsByPage[$i] = false;
-                                       }
-                               }
-
-                               return [ 'pageCount' => $count, 'dimensionsByPage' => $dimsByPage ];
+                               return $this->getDimensionInfoFromMetaTree( $tree );
                        },
                        [ 'pcTTL' => $cache::TTL_INDEFINITE ]
                );
        }
 
+       /**
+        * Given an XML metadata tree, returns dimension information about the document
+        * @param bool|SimpleXMLElement $metatree The file's XML metadata tree
+        * @return bool|array
+        */
+       protected function getDimensionInfoFromMetaTree( $metatree ) {
+               if ( !$metatree ) {
+                       return false;
+               }
+
+               $dimsByPage = [];
+               $count = count( $metatree->xpath( '//OBJECT' ) );
+               for ( $i = 0; $i < $count; $i++ ) {
+                       $o = $metatree->BODY[0]->OBJECT[$i];
+                       if ( $o ) {
+                               $dimsByPage[$i] = [
+                                       'width' => (int)$o['width'],
+                                       'height' => (int)$o['height'],
+                               ];
+                       } else {
+                               $dimsByPage[$i] = false;
+                       }
+               }
+
+               return [ 'pageCount' => $count, 'dimensionsByPage' => $dimsByPage ];
+       }
+
        /**
         * @param File $image
         * @param int $page Page number to get information for
index 7aeefa0..0e10abb 100644 (file)
@@ -30,7 +30,6 @@
 class ExifBitmapHandler extends BitmapHandler {
        const BROKEN_FILE = '-1'; // error extracting metadata
        const OLD_BROKEN_FILE = '0'; // outdated error extracting metadata.
-       const SRGB_ICC_PROFILE_NAME = 'IEC 61966-2.1 Default RGB colour space - sRGB';
 
        function convertMetadataVersion( $metadata, $version = 1 ) {
                // basically flattens arrays.
@@ -243,75 +242,4 @@ class ExifBitmapHandler extends BitmapHandler {
 
                return 0;
        }
-
-       protected function transformImageMagick( $image, $params ) {
-               global $wgUseTinyRGBForJPGThumbnails;
-
-               $ret = parent::transformImageMagick( $image, $params );
-
-               if ( $ret ) {
-                       return $ret;
-               }
-
-               if ( $params['mimeType'] === 'image/jpeg' && $wgUseTinyRGBForJPGThumbnails ) {
-                       // T100976 If the profile embedded in the JPG is sRGB, swap it for the smaller
-                       // (and free) TinyRGB
-
-                       $this->swapICCProfile(
-                               $params['dstPath'],
-                               self::SRGB_ICC_PROFILE_NAME,
-                               realpath( __DIR__ ) . '/tinyrgb.icc'
-                       );
-               }
-
-               return false;
-       }
-
-       /**
-        * Swaps an embedded ICC profile for another, if found.
-        * Depends on exiftool, no-op if not installed.
-        * @param string $filepath File to be manipulated (will be overwritten)
-        * @param string $oldProfileString Exact name of color profile to look for
-        *  (the one that will be replaced)
-        * @param string $profileFilepath ICC profile file to apply to the file
-        * @since 1.26
-        * @return bool
-        */
-       public function swapICCProfile( $filepath, $oldProfileString, $profileFilepath ) {
-               global $wgExiftool;
-
-               if ( !$wgExiftool || !is_executable( $wgExiftool ) ) {
-                       return false;
-               }
-
-               $cmd = wfEscapeShellArg( $wgExiftool,
-                       '-DeviceModelDesc',
-                       '-S',
-                       '-T',
-                       $filepath
-               );
-
-               $output = wfShellExecWithStderr( $cmd, $retval );
-
-               if ( $retval !== 0 || strcasecmp( trim( $output ), $oldProfileString ) !== 0 ) {
-                       // We can't establish that this file has the expected ICC profile, don't process it
-                       return false;
-               }
-
-               $cmd = wfEscapeShellArg( $wgExiftool,
-                       '-overwrite_original',
-                       '-icc_profile<=' . $profileFilepath,
-                       $filepath
-               );
-
-               $output = wfShellExecWithStderr( $cmd, $retval );
-
-               if ( $retval !== 0 ) {
-                       $this->logErrorForExternalProcess( $retval, $output, $cmd );
-
-                       return false;
-               }
-
-               return true;
-       }
 }
index f237287..69982c2 100644 (file)
@@ -24,6 +24,7 @@
  * @see http://exif.org/Exif2-2.PDF The Exif 2.2 specification
  * @file
  */
+use MediaWiki\MediaWikiServices;
 use Wikimedia\Timestamp\TimestampException;
 
 /**
@@ -1581,14 +1582,14 @@ class FormatMetadata extends ContextSource {
         * @since 1.23
         */
        public function fetchExtendedMetadata( File $file ) {
-               $cache = ObjectCache::getMainWANInstance();
+               $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
 
                // If revision deleted, exit immediately
                if ( $file->isDeleted( File::DELETED_FILE ) ) {
                        return [];
                }
 
-               $cacheKey = wfMemcKey(
+               $cacheKey = $cache->makeKey(
                        'getExtendedMetadata',
                        $this->getLanguage()->getCode(),
                        (int)$this->singleLang,
index de409e7..ac5fc81 100644 (file)
@@ -54,9 +54,9 @@ class GIFMetadataExtractor {
         * @return array
         */
        static function getMetadata( $filename ) {
-               self::$gifFrameSep = pack( "C", ord( "," ) );
-               self::$gifExtensionSep = pack( "C", ord( "!" ) );
-               self::$gifTerm = pack( "C", ord( ";" ) );
+               self::$gifFrameSep = pack( "C", ord( "," ) ); // 2C
+               self::$gifExtensionSep = pack( "C", ord( "!" ) ); // 21
+               self::$gifTerm = pack( "C", ord( ";" ) ); // 3B
 
                $frameCount = 0;
                $duration = 0.0;
@@ -82,8 +82,11 @@ class GIFMetadataExtractor {
                        throw new Exception( "Not a valid GIF file; header: $buf" );
                }
 
-               // Skip over width and height.
-               fread( $fh, 4 );
+               // Read width and height.
+               $buf = fread( $fh, 2 );
+               $width = unpack( 'v', $buf )[1];
+               $buf = fread( $fh, 2 );
+               $height = unpack( 'v', $buf )[1];
 
                // Read BPP
                $buf = fread( $fh, 1 );
index c9f0dfa..29f0d7c 100644 (file)
@@ -31,6 +31,8 @@
  * @ingroup Media
  */
 class JpegHandler extends ExifBitmapHandler {
+       const SRGB_EXIF_COLOR_SPACE = 'sRGB';
+       const SRGB_ICC_PROFILE_DESCRIPTION = 'sRGB IEC61966-2.1';
 
        function normaliseParams( $image, &$params ) {
                if ( !parent::normaliseParams( $image, $params ) ) {
@@ -171,4 +173,118 @@ class JpegHandler extends ExifBitmapHandler {
 
                return $params;
        }
+
+       /**
+        * {@inheritdoc}
+        */
+       protected function transformImageMagick( $image, $params ) {
+               global $wgUseTinyRGBForJPGThumbnails;
+
+               $ret = parent::transformImageMagick( $image, $params );
+
+               if ( $ret ) {
+                       return $ret;
+               }
+
+               if ( $wgUseTinyRGBForJPGThumbnails ) {
+                       // T100976 If the profile embedded in the JPG is sRGB, swap it for the smaller
+                       // (and free) TinyRGB
+
+                       /**
+                        * We'll want to replace the color profile for JPGs:
+                        * * in the sRGB color space, or with the sRGB profile
+                        *   (other profiles will be left untouched)
+                        * * without color space or profile, in which case browsers
+                        *   should assume sRGB, but don't always do (e.g. on wide-gamut
+                        *   monitors (unless it's meant for low bandwith)
+                        * @see https://phabricator.wikimedia.org/T134498
+                        */
+                       $colorSpaces = [ self::SRGB_EXIF_COLOR_SPACE, '-' ];
+                       $profiles = [ self::SRGB_ICC_PROFILE_DESCRIPTION ];
+
+                       // we'll also add TinyRGB profile to images lacking a profile, but
+                       // only if they're not low quality (which are meant to save bandwith
+                       // and we don't want to increase the filesize by adding a profile)
+                       if ( isset( $params['quality'] ) && $params['quality'] > 30 ) {
+                               $profiles[] = '-';
+                       }
+
+                       $this->swapICCProfile(
+                               $params['dstPath'],
+                               $colorSpaces,
+                               $profiles,
+                               realpath( __DIR__ ) . '/tinyrgb.icc'
+                       );
+               }
+
+               return false;
+       }
+
+       /**
+        * Swaps an embedded ICC profile for another, if found.
+        * Depends on exiftool, no-op if not installed.
+        * @param string $filepath File to be manipulated (will be overwritten)
+        * @param array $colorSpaces Only process files with this/these Color Space(s)
+        * @param array $oldProfileStrings Exact name(s) of color profile to look for
+        *  (the one that will be replaced)
+        * @param string $profileFilepath ICC profile file to apply to the file
+        * @since 1.26
+        * @return bool
+        */
+       public function swapICCProfile( $filepath, array $colorSpaces,
+                                                                       array $oldProfileStrings, $profileFilepath
+       ) {
+               global $wgExiftool;
+
+               if ( !$wgExiftool || !is_executable( $wgExiftool ) ) {
+                       return false;
+               }
+
+               $cmd = wfEscapeShellArg( $wgExiftool,
+                       '-EXIF:ColorSpace',
+                       '-ICC_Profile:ProfileDescription',
+                       '-S',
+                       '-T',
+                       $filepath
+               );
+
+               $output = wfShellExecWithStderr( $cmd, $retval );
+
+               // Explode EXIF data into an array with [0 => Color Space, 1 => Device Model Desc]
+               $data = explode( "\t", trim( $output ) );
+
+               if ( $retval !== 0 ) {
+                       return false;
+               }
+
+               // Make a regex out of the source data to match it to an array of color
+               // spaces in a case-insensitive way
+               $colorSpaceRegex = '/'.preg_quote( $data[0], '/' ).'/i';
+               if ( empty( preg_grep( $colorSpaceRegex, $colorSpaces ) ) ) {
+                       // We can't establish that this file matches the color space, don't process it
+                       return false;
+               }
+
+               $profileRegex = '/'.preg_quote( $data[1], '/' ).'/i';
+               if ( empty( preg_grep( $profileRegex, $oldProfileStrings ) ) ) {
+                       // We can't establish that this file has the expected ICC profile, don't process it
+                       return false;
+               }
+
+               $cmd = wfEscapeShellArg( $wgExiftool,
+                       '-overwrite_original',
+                       '-icc_profile<=' . $profileFilepath,
+                       $filepath
+               );
+
+               $output = wfShellExecWithStderr( $cmd, $retval );
+
+               if ( $retval !== 0 ) {
+                       $this->logErrorForExternalProcess( $retval, $output, $cmd );
+
+                       return false;
+               }
+
+               return true;
+       }
 }
index 6a23bd6..8896264 100644 (file)
@@ -305,13 +305,11 @@ 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
-        */
+       * @deprecated since 1.30, use MediaHandler::getContentHeaders instead
+       */
        public function getStreamHeaders( $metadata ) {
-               return [];
+               wfDeprecated( __METHOD__, '1.30' );
+               return $this->getContentHeaders( $metadata );
        }
 
        /**
@@ -868,4 +866,60 @@ abstract class MediaHandler {
        public function getWarningConfig( $file ) {
                return null;
        }
+
+       /**
+        * Converts a dimensions array about a potentially multipage document from an
+        * exhaustive list of ordered page numbers to a list of page ranges
+        * @param Array $pagesByDimensions
+        * @return String
+        * @since 1.30
+       */
+       public static function getPageRangesByDimensions( $pagesByDimensions ) {
+               $pageRangesByDimensions = [];
+
+               foreach ( $pagesByDimensions as $dimensions => $pageList ) {
+                       $ranges = [];
+                       $firstPage = $pageList[0];
+                       $lastPage = $firstPage - 1;
+
+                       foreach ( $pageList as $page ) {
+                               if ( $page > $lastPage + 1 ) {
+                                       if ( $firstPage != $lastPage ) {
+                                               $ranges[] = "$firstPage-$lastPage";
+                                       } else {
+                                               $ranges[] = "$firstPage";
+                                       }
+
+                                       $firstPage = $page;
+                               }
+
+                               $lastPage = $page;
+                       }
+
+                       if ( $firstPage != $lastPage ) {
+                               $ranges[] = "$firstPage-$lastPage";
+                       } else {
+                               $ranges[] = "$firstPage";
+                       }
+
+                       $pageRangesByDimensions[ $dimensions ] = $ranges;
+               }
+
+               $dimensionsString = [];
+               foreach ( $pageRangesByDimensions as $dimensions => $pageRanges ) {
+                       $dimensionsString[] = "$dimensions:" . implode( ',', $pageRanges );
+               }
+
+               return implode( '/', $dimensionsString );
+       }
+
+       /**
+       * Get useful response headers for GET/HEAD requests for a file with the given metadata
+       * @param $metadata Array Contains this handler's unserialized getMetadata() for a file
+       * @return Array
+       * @since 1.30
+       */
+       public function getContentHeaders( $metadata ) {
+               return [];
+       }
 }
index d0517d7..c12ca0b 100644 (file)
@@ -121,6 +121,8 @@ class PNGMetadataExtractor {
                                if ( !$buf || strlen( $buf ) < $chunk_size ) {
                                        throw new Exception( __METHOD__ . ": Read error" );
                                }
+                               $width = unpack( 'N', substr( $buf, 0, 4 ) )[1];
+                               $height = unpack( 'N', substr( $buf, 4, 4 ) )[1];
                                $bitDepth = ord( substr( $buf, 8, 1 ) );
                                // Detect the color type in British English as per the spec
                                // https://www.w3.org/TR/PNG/#11IHDR
index 4087fb3..2cf4d23 100644 (file)
@@ -307,12 +307,6 @@ class SVGReader {
                }
        }
 
-       // @todo FIXME: Unused, remove?
-       private function throwXmlError( $err ) {
-               $this->debug( "FAILURE: $err" );
-               wfDebug( "SVGReader XML error: $err\n" );
-       }
-
        private function debug( $data ) {
                if ( $this->mDebug ) {
                        wfDebug( "SVGReader: $data\n" );
index 141a375..6c10301 100644 (file)
@@ -23,6 +23,9 @@
 
 use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\DBError;
+use Wikimedia\Rdbms\DBQueryError;
+use Wikimedia\Rdbms\DBConnectionError;
 use \MediaWiki\MediaWikiServices;
 use \Wikimedia\WaitConditionLoop;
 use \Wikimedia\Rdbms\TransactionProfiler;
@@ -585,7 +588,7 @@ class SqlBagOStuff extends BagOStuff {
                                        while ( true ) {
                                                $conds = $baseConds;
                                                if ( $maxExpTime !== false ) {
-                                                       $conds[] = 'exptime > ' . $db->addQuotes( $maxExpTime );
+                                                       $conds[] = 'exptime >= ' . $db->addQuotes( $maxExpTime );
                                                }
                                                $rows = $db->select(
                                                        $this->getTableNameByShard( $i ),
index ee0ff22..dd54232 100644 (file)
@@ -653,7 +653,17 @@ class Article implements Page {
                $this->showViewFooter();
                $this->mPage->doViewUpdates( $user, $oldid );
 
-               $outputPage->addModules( 'mediawiki.action.view.postEdit' );
+               # Load the postEdit module if the user just saved this revision
+               # See also EditPage::setPostEditCookie
+               $request = $this->getContext()->getRequest();
+               $cookieKey = EditPage::POST_EDIT_COOKIE_KEY_PREFIX . $this->getRevIdFetched();
+               $postEdit = $request->getCookie( $cookieKey );
+               if ( $postEdit ) {
+                       # Clear the cookie. This also prevents caching of the response.
+                       $request->response()->clearCookie( $cookieKey );
+                       $outputPage->addJsConfigVars( 'wgPostEdit', $postEdit );
+                       $outputPage->addModules( 'mediawiki.action.view.postEdit' );
+               }
        }
 
        /**
@@ -970,8 +980,8 @@ class Article implements Page {
                }
 
                // Check for cached results
-               $key = wfMemcKey( 'unpatrollable-page', $title->getArticleID() );
-               $cache = ObjectCache::getMainWANInstance();
+               $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+               $key = $cache->makeKey( 'unpatrollable-page', $title->getArticleID() );
                if ( $cache->get( $key ) ) {
                        return false;
                }
@@ -1111,8 +1121,8 @@ class Article implements Page {
         * @since 1.27
         */
        public static function purgePatrolFooterCache( $articleID ) {
-               $cache = ObjectCache::getMainWANInstance();
-               $cache->delete( wfMemcKey( 'unpatrollable-page', $articleID ) );
+               $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+               $cache->delete( $cache->makeKey( 'unpatrollable-page', $articleID ) );
        }
 
        /**
@@ -1167,8 +1177,8 @@ class Article implements Page {
                # Show delete and move logs if there were any such events.
                # The logging query can DOS the site when bots/crawlers cause 404 floods,
                # so be careful showing this. 404 pages must be cheap as they are hard to cache.
-               $cache = ObjectCache::getMainStashInstance();
-               $key = wfMemcKey( 'page-recent-delete', md5( $title->getPrefixedText() ) );
+               $cache = MediaWikiServices::getInstance()->getMainObjectStash();
+               $key = $cache->makeKey( 'page-recent-delete', md5( $title->getPrefixedText() ) );
                $loggedIn = $this->getContext()->getUser()->isLoggedIn();
                if ( $loggedIn || $cache->get( $key ) ) {
                        $logTypes = [ 'delete', 'move' ];
index ccc50f7..7dea271 100644 (file)
@@ -27,7 +27,7 @@
  */
 class CategoryPage extends Article {
        # Subclasses can change this to override the viewer class.
-       protected $mCategoryViewerClass = 'CategoryViewer';
+       public $mCategoryViewerClass = 'CategoryViewer';
 
        /**
         * @var WikiCategoryPage
index f8202a6..6a751ac 100644 (file)
@@ -434,7 +434,7 @@ class ImagePage extends Article {
                                        $count = $this->displayImg->pageCount();
 
                                        if ( $page > 1 ) {
-                                               $label = $out->parse( $this->getContext()->msg( 'imgmultipageprev' )->text(), false );
+                                               $label = $this->getContext()->msg( 'imgmultipageprev' )->text();
                                                // on the client side, this link is generated in ajaxifyPageNavigation()
                                                // in the mediawiki.page.image.pagination module
                                                $link = Linker::linkKnown(
@@ -494,6 +494,7 @@ class ImagePage extends Article {
                                                Xml::openElement( 'form', $formParams ) .
                                                Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) .
                                                $this->getContext()->msg( 'imgmultigoto' )->rawParams( $select )->parse() .
+                                               $this->getContext()->msg( 'word-separator' )->escaped() .
                                                Xml::submitButton( $this->getContext()->msg( 'imgmultigo' )->text() ) .
                                                Xml::closeElement( 'form' ) .
                                                "<hr />$thumb1\n$thumb2<br style=\"clear: both\" /></div></td></tr></table>"
index 7044e6a..0e23a88 100644 (file)
@@ -24,6 +24,8 @@ use \MediaWiki\Logger\LoggerFactory;
 use \MediaWiki\MediaWikiServices;
 use Wikimedia\Rdbms\FakeResultWrapper;
 use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\DBError;
+use Wikimedia\Rdbms\DBUnexpectedError;
 
 /**
  * Class representing a MediaWiki article and history.
@@ -1053,6 +1055,13 @@ class WikiPage implements Page, IDBAccessObject {
        ) {
                $useParserCache =
                        ( !$forceParse ) && $this->shouldCheckParserCache( $parserOptions, $oldid );
+
+               if ( $useParserCache && !$parserOptions->isSafeToCache() ) {
+                       throw new InvalidArgumentException(
+                               'The supplied ParserOptions are not safe to cache. Fix the options or set $forceParse = true.'
+                       );
+               }
+
                wfDebug( __METHOD__ .
                        ': using parser cache: ' . ( $useParserCache ? 'yes' : 'no' ) . "\n" );
                if ( $parserOptions->getStubThreshold() ) {
@@ -1175,7 +1184,7 @@ class WikiPage implements Page, IDBAccessObject {
                );
 
                if ( $dbw->affectedRows() > 0 ) {
-                       $newid = $pageId ?: $dbw->insertId();
+                       $newid = $pageId ? (int)$pageId : $dbw->insertId();
                        $this->mId = $newid;
                        $this->mTitle->resetArticleID( $newid );
 
@@ -2899,8 +2908,8 @@ class WikiPage implements Page, IDBAccessObject {
                $status->value = $logid;
 
                // Show log excerpt on 404 pages rather than just a link
-               $cache = ObjectCache::getMainStashInstance();
-               $key = wfMemcKey( 'page-recent-delete', md5( $logTitle->getPrefixedText() ) );
+               $cache = MediaWikiServices::getInstance()->getMainObjectStash();
+               $key = $cache->makeKey( 'page-recent-delete', md5( $logTitle->getPrefixedText() ) );
                $cache->set( $key, 1, $cache::TTL_DAY );
 
                return $status;
@@ -3250,6 +3259,9 @@ class WikiPage implements Page, IDBAccessObject {
 
                MediaWikiServices::getInstance()->getLinkCache()->invalidateTitle( $title );
 
+               // Invalidate caches of articles which include this page
+               DeferredUpdates::addUpdate( new HTMLCacheUpdate( $title, 'templatelinks' ) );
+
                if ( $title->getNamespace() == NS_CATEGORY ) {
                        // Load the Category object, which will schedule a job to create
                        // the category table row if necessary. Checking a replica DB is ok
@@ -3491,7 +3503,10 @@ class WikiPage implements Page, IDBAccessObject {
                        );
                        foreach ( $rows as $row ) {
                                $cat = Category::newFromRow( $row );
-                               $cat->refreshCounts();
+                               // T166757: do the update after this DB commit
+                               DeferredUpdates::addCallableUpdate( function () use ( $cat ) {
+                                       $cat->refreshCounts();
+                               } );
                        }
                }
        }
diff --git a/includes/pager/RangeChronologicalPager.php b/includes/pager/RangeChronologicalPager.php
new file mode 100644 (file)
index 0000000..901d576
--- /dev/null
@@ -0,0 +1,121 @@
+<?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
+ * @ingroup Pager
+ */
+use Wikimedia\Timestamp\TimestampException;
+
+/**
+ * Pager for filtering by a range of dates.
+ * @ingroup Pager
+ */
+abstract class RangeChronologicalPager extends ReverseChronologicalPager {
+
+       protected $rangeConds = [];
+
+       /**
+        * Set and return a date range condition using timestamps provided by the user.
+        * We want the revisions between the two timestamps.
+        * Also supports only having a start or end timestamp.
+        * Assumes that the start timestamp comes before the end timestamp.
+        *
+        * @param string $startStamp Timestamp of the beginning of the date range (or empty)
+        * @param string $endStamp Timestamp of the end of the date range (or empty)
+        * @return array|null Database conditions to satisfy the specified date range
+        *     or null if dates are invalid
+        */
+       public function getDateRangeCond( $startStamp, $endStamp ) {
+               $this->rangeConds = [];
+
+               try {
+                       if ( $startStamp !== '' ) {
+                               $startTimestamp = MWTimestamp::getInstance( $startStamp );
+                               $startTimestamp->setTimezone( $this->getConfig()->get( 'Localtimezone' ) );
+                               $startOffset = $this->mDb->timestamp( $startTimestamp->getTimestamp() );
+                               $this->rangeConds[] = $this->mIndexField . '>=' . $this->mDb->addQuotes( $startOffset );
+                       }
+
+                       if ( $endStamp !== '' ) {
+                               $endTimestamp = MWTimestamp::getInstance( $endStamp );
+                               $endTimestamp->setTimezone( $this->getConfig()->get( 'Localtimezone' ) );
+                               $endOffset = $this->mDb->timestamp( $endTimestamp->getTimestamp() );
+                               $this->rangeConds[] = $this->mIndexField . '<=' . $this->mDb->addQuotes( $endOffset );
+
+                               // populate existing variables for compatibility with parent
+                               $this->mYear = (int)$endTimestamp->format( 'Y' );
+                               $this->mMonth = (int)$endTimestamp->format( 'm' );
+                               $this->mDay = (int)$endTimestamp->format( 'd' );
+                               $this->mOffset = $endOffset;
+                       }
+               } catch ( TimestampException $ex ) {
+                       return null;
+               }
+
+               return $this->rangeConds;
+       }
+
+       /**
+        * Takes ReverseChronologicalPager::getDateCond parameters and repurposes
+        * them to work with timestamp-based getDateRangeCond.
+        *
+        * @param int $year Year up to which we want revisions
+        * @param int $month Month up to which we want revisions
+        * @param int $day [optional] Day up to which we want revisions. Default is end of month.
+        * @return string|null Timestamp or null if year and month are false/invalid
+        */
+       public function getDateCond( $year, $month, $day = -1 ) {
+               // run through getDateRangeCond so rangeConds, mOffset, ... are set
+               $legacyTimestamp = self::getOffsetDate( $year, $month, $day );
+               // ReverseChronologicalPager uses strict inequality for the end date ('<'),
+               // but this class uses '<=' and expects extending classes to handle modifying the end date.
+               // Therefore, we need to subtract one second from the output of getOffsetDate to make it
+               // work with the '<=' inequality used in this class.
+               $legacyTimestamp->timestamp = $legacyTimestamp->timestamp->modify( '-1 second' );
+               $this->getDateRangeCond( '', $legacyTimestamp->getTimestamp( TS_MW ) );
+               return $this->mOffset;
+       }
+
+       /**
+        * Build variables to use by the database wrapper.
+        *
+        * @param string $offset Index offset, inclusive
+        * @param int $limit Exact query limit
+        * @param bool $descending Query direction, false for ascending, true for descending
+        * @return array
+        */
+       protected function buildQueryInfo( $offset, $limit, $descending ) {
+               if ( count( $this->rangeConds ) > 0 ) {
+                       // If range conditions are set, $offset is not used.
+                       // However, if range conditions aren't set, (such as when using paging links)
+                       // use the provided offset to get the proper query.
+                       $offset = '';
+               }
+
+               list( $tables, $fields, $conds, $fname, $options, $join_conds ) = parent::buildQueryInfo(
+                       $offset,
+                       $limit,
+                       $descending
+               );
+
+               if ( $this->rangeConds ) {
+                       $conds = array_merge( $conds, $this->rangeConds );
+               }
+
+               return [ $tables, $fields, $conds, $fname, $options, $join_conds ];
+       }
+}
index 76f3470..9eef728 100644 (file)
@@ -1,7 +1,5 @@
 <?php
 /**
- * Efficient paging for SQL queries.
- *
  * 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
@@ -23,7 +21,8 @@
 use Wikimedia\Timestamp\TimestampException;
 
 /**
- * IndexPager with a formatted navigation bar
+ * Efficient paging for SQL queries.
+ * IndexPager with a formatted navigation bar.
  * @ingroup Pager
  */
 abstract class ReverseChronologicalPager extends IndexPager {
@@ -32,7 +31,7 @@ abstract class ReverseChronologicalPager extends IndexPager {
        public $mMonth;
        public $mDay;
 
-       function getNavigationBar() {
+       public function getNavigationBar() {
                if ( !$this->isNavigationBarShown() ) {
                        return '';
                }
@@ -65,52 +64,79 @@ abstract class ReverseChronologicalPager extends IndexPager {
        /**
         * Set and return the mOffset timestamp such that we can get all revisions with
         * a timestamp up to the specified parameters.
+        *
         * @param int $year Year up to which we want revisions
         * @param int $month Month up to which we want revisions
         * @param int $day [optional] Day up to which we want revisions. Default is end of month.
         * @return string|null Timestamp or null if year and month are false/invalid
         */
-       function getDateCond( $year, $month, $day = -1 ) {
-               $year = intval( $year );
-               $month = intval( $month );
-               $day = intval( $day );
+       public function getDateCond( $year, $month, $day = -1 ) {
+               $year = (int)$year;
+               $month = (int)$month;
+               $day = (int)$day;
 
                // Basic validity checks for year and month
-               $this->mYear = $year > 0 ? $year : false;
-               $this->mMonth = ( $month > 0 && $month < 13 ) ? $month : false;
+               // If year and month are invalid, don't update the mOffset
+               if ( $year <= 0 && ( $month <= 0 || $month >= 13 ) ) {
+                       return null;
+               }
 
-               // If year and month are false, don't update the mOffset
-               if ( !$this->mYear && !$this->mMonth ) {
+               // Treat the given time in the wiki timezone and get a UTC timestamp for the database lookup
+               $timestamp = self::getOffsetDate( $year, $month, $day );
+               $timestamp->setTimezone( $this->getConfig()->get( 'Localtimezone' ) );
+
+               try {
+                       $this->mYear = (int)$timestamp->format( 'Y' );
+                       $this->mMonth = (int)$timestamp->format( 'm' );
+                       $this->mDay = (int)$timestamp->format( 'd' );
+                       $this->mOffset = $this->mDb->timestamp( $timestamp->getTimestamp() );
+               } catch ( TimestampException $e ) {
+                       // Invalid user provided timestamp (T149257)
                        return null;
                }
 
+               return $this->mOffset;
+       }
+
+       /**
+        * Core logic of determining the mOffset timestamp such that we can get all items with
+        * a timestamp up to the specified parameters. Given parameters for a day up to which to get
+        * items, this function finds the timestamp of the day just after the end of the range for use
+        * in an database strict inequality filter.
+        *
+        * This is separate from getDateCond so we can use this logic in other places, such as in
+        * RangeChronologicalPager, where this function is used to convert year/month/day filter options
+        * into a timestamp.
+        *
+        * @param int $year Year up to which we want revisions
+        * @param int $month Month up to which we want revisions
+        * @param int $day [optional] Day up to which we want revisions. Default is end of month.
+        * @return MWTimestamp Timestamp or null if year and month are false/invalid
+        */
+       public static function getOffsetDate( $year, $month, $day = -1 ) {
                // Given an optional year, month, and day, we need to generate a timestamp
                // to use as "WHERE rev_timestamp <= result"
                // Examples: year = 2006      equals < 20070101 (+000000)
                // year=2005, month=1         equals < 20050201
                // year=2005, month=12        equals < 20060101
                // year=2005, month=12, day=5 equals < 20051206
-               if ( $this->mYear ) {
-                       $year = $this->mYear;
-               } else {
+               if ( $year <= 0 ) {
                        // If no year given, assume the current one
                        $timestamp = MWTimestamp::getInstance();
                        $year = $timestamp->format( 'Y' );
                        // If this month hasn't happened yet this year, go back to last year's month
-                       if ( $this->mMonth > $timestamp->format( 'n' ) ) {
+                       if ( $month > $timestamp->format( 'n' ) ) {
                                $year--;
                        }
                }
 
-               if ( $this->mMonth ) {
-                       $month = $this->mMonth;
-
+               if ( $month && $month > 0 && $month < 13 ) {
                        // Day validity check after we have month and year checked
-                       $this->mDay = checkdate( $month, $day, $year ) ? $day : false;
+                       $day = checkdate( $month, $day, $year ) ? $day : false;
 
-                       if ( $this->mDay ) {
+                       if ( $day && $day > 0 ) {
                                // If we have a day, we want up to the day immediately afterward
-                               $day = $this->mDay + 1;
+                               $day++;
 
                                // Did we overflow the current month?
                                if ( !checkdate( $month, $day, $year ) ) {
@@ -147,17 +173,6 @@ abstract class ReverseChronologicalPager extends IndexPager {
                        $ymd = 20320101;
                }
 
-               // Treat the given time in the wiki timezone and get a UTC timestamp for the database lookup
-               $timestamp = MWTimestamp::getInstance( "${ymd}000000" );
-               $timestamp->setTimezone( $this->getConfig()->get( 'Localtimezone' ) );
-
-               try {
-                       $this->mOffset = $this->mDb->timestamp( $timestamp->getTimestamp() );
-               } catch ( TimestampException $e ) {
-                       // Invalid user provided timestamp (T149257)
-                       return null;
-               }
-
-               return $this->mOffset;
+               return MWTimestamp::getInstance( "${ymd}000000" );
        }
 }
index 770c1c6..70055da 100644 (file)
@@ -293,35 +293,36 @@ abstract class TablePager extends IndexPager {
                        return '';
                }
 
-               $labels = [
-                       'first' => 'table_pager_first',
-                       'prev' => 'table_pager_prev',
-                       'next' => 'table_pager_next',
-                       'last' => 'table_pager_last',
-               ];
-
-               $linkTexts = [];
-               $disabledTexts = [];
-               foreach ( $labels as $type => $label ) {
-                       $msgLabel = $this->msg( $label )->escaped();
-                       $linkTexts[$type] = "<div class='TablePager_nav-enabled'>$msgLabel</div>";
-                       $disabledTexts[$type] = "<div class='TablePager_nav-disabled'>$msgLabel</div>";
+               $this->getOutput()->enableOOUI();
+
+               $types = [ 'first', 'prev', 'next', 'last' ];
+
+               $queries = $this->getPagingQueries();
+               $links = [];
+
+               $buttons = [];
+
+               $title = $this->getTitle();
+
+               foreach ( $types as $type ) {
+                       $buttons[] = new \OOUI\ButtonWidget( [
+                               // Messages used here:
+                               // * table_pager_first
+                               // * table_pager_prev
+                               // * table_pager_next
+                               // * table_pager_last
+                               'label' => $this->msg( 'table_pager_' . $type )->text(),
+                               'href' => $queries[ $type ] ?
+                                       $title->getLinkURL( $queries[ $type ] + $this->getDefaultQuery() ) :
+                                       null,
+                               'icon' => $type === 'prev' ? 'previous' : $type,
+                               'disabled' => $queries[ $type ] === false
+                       ] );
                }
-               $links = $this->getPagingLinks( $linkTexts, $disabledTexts );
-
-               $s = Html::openElement( 'table', [ 'class' => $this->getNavClass() ] );
-               $s .= Html::openElement( 'tr' ) . "\n";
-               $width = 100 / count( $links ) . '%';
-               foreach ( $labels as $type => $label ) {
-                       // We want every cell to have the same width. We could use table-layout: fixed; in CSS,
-                       // but it only works if we specify the width of a cell or the table and we don't want to.
-                       // There is no better way. <https://www.w3.org/TR/CSS2/tables.html#fixed-table-layout>
-                       $s .= Html::rawElement( 'td',
-                               [ 'style' => "width: $width;", 'class' => "TablePager_nav-$type" ],
-                               $links[$type] ) . "\n";
-               }
-               $s .= Html::closeElement( 'tr' ) . Html::closeElement( 'table' ) . "\n";
-               return $s;
+               return new \OOUI\ButtonGroupWidget( [
+                       'classes' => [ $this->getNavClass() ],
+                       'items' => $buttons,
+               ] );
        }
 
        /**
@@ -330,7 +331,7 @@ abstract class TablePager extends IndexPager {
         * @return string[]
         */
        public function getModuleStyles() {
-               return [ 'mediawiki.pager.tablePager' ];
+               return [ 'mediawiki.pager.tablePager', 'oojs-ui.styles.icons-movement' ];
        }
 
        /**
index 2023d13..599fbf6 100644 (file)
@@ -286,14 +286,14 @@ class BlockLevelPass {
                                # @todo consider using a stack for nestable elements like span, table and div
                                $openMatch = preg_match(
                                        '/(?:<table|<h1|<h2|<h3|<h4|<h5|<h6|<pre|<tr|'
-                                               . '<p|<ul|<ol|<dl|<li|<\\/tr|<\\/td|<\\/th)/iS',
+                                               . '<p|<ul|<ol|<dl|<li|<\\/tr|<\\/td|<\\/th)\\b/iS',
                                        $t
                                );
                                $closeMatch = preg_match(
                                        '/(?:<\\/table|<\\/h1|<\\/h2|<\\/h3|<\\/h4|<\\/h5|<\\/h6|'
                                                . '<td|<th|<\\/?blockquote|<\\/?div|<hr|<\\/pre|<\\/p|<\\/mw:|'
                                                . Parser::MARKER_PREFIX
-                                               . '-pre|<\\/li|<\\/ul|<\\/ol|<\\/dl|<\\/?center)/iS',
+                                               . '-pre|<\\/li|<\\/ul|<\\/ol|<\\/dl|<\\/?center)\\b/iS',
                                        $t
                                );
 
index 01bf2d0..ffc884e 100644 (file)
@@ -83,7 +83,7 @@ class MWTidy {
        /**
         * @return bool|\MediaWiki\Tidy\TidyDriverBase
         */
-       protected static function singleton() {
+       public static function singleton() {
                global $wgUseTidy, $wgTidyInternal, $wgTidyConf, $wgDebugTidy, $wgTidyConfig,
                        $wgTidyBin, $wgTidyOpts;
 
index 19f368a..d8722ba 100644 (file)
@@ -245,7 +245,7 @@ class Parser {
        public $currentRevisionCache;
 
        /**
-        * @var bool Recursive call protection.
+        * @var bool|string Recursive call protection.
         * This variable should be treated as if it were private.
         */
        public $mInParse = false;
@@ -589,6 +589,14 @@ class Parser {
                                        $this->mTitle->getPrefixedDBkey() );
                        }
                }
+
+               # Wrap non-interface parser output in a <div> so it can be targeted
+               # with CSS (T37247)
+               $class = $this->mOptions->getWrapOutputClass();
+               if ( $class !== false && !$this->mOptions->getInterfaceMessage() ) {
+                       $text = Html::rawElement( 'div', [ 'class' => $class ], $text );
+               }
+
                $this->mOutput->setText( $text );
 
                $this->mRevisionId = $oldRevisionId;
@@ -3476,7 +3484,7 @@ class Parser {
 
                if ( !$title->equals( $cacheTitle ) ) {
                        $this->mTplRedirCache[$cacheTitle->getPrefixedDBkey()] =
-                               [ $title->getNamespace(), $cdb = $title->getDBkey() ];
+                               [ $title->getNamespace(), $title->getDBkey() ];
                }
 
                return [ $dom, $title ];
@@ -4392,7 +4400,6 @@ class Parser {
                        $toc = Linker::tocList( $toc, $this->mOptions->getUserLangObj() );
                        $this->mOutput->setTOCHTML( $toc );
                        $toc = self::TOC_START . $toc . self::TOC_END;
-                       $this->mOutput->addModules( 'mediawiki.toc' );
                }
 
                if ( $isMain ) {
@@ -4967,6 +4974,7 @@ class Parser {
 
                $ig->setContextTitle( $this->mTitle );
                $ig->setShowBytes( false );
+               $ig->setShowDimensions( false );
                $ig->setShowFilename( false );
                $ig->setParser( $this );
                $ig->setHideBadImages();
@@ -6065,9 +6073,13 @@ class Parser {
        protected function lock() {
                if ( $this->mInParse ) {
                        throw new MWException( "Parser state cleared while parsing. "
-                               . "Did you call Parser::parse recursively?" );
+                               . "Did you call Parser::parse recursively? Lock is held by: " . $this->mInParse );
                }
-               $this->mInParse = true;
+
+               // Save the backtrace when locking, so that if some code tries locking again,
+               // we can print the lock owner's backtrace for easier debugging
+               $e = new Exception;
+               $this->mInParse = $e->getTraceAsString();
 
                $recursiveCheck = new ScopedCallback( function() {
                        $this->mInParse = false;
index f76c0b5..1f0e19e 100644 (file)
@@ -67,7 +67,7 @@ class ParserCache {
                $pageid = $article->getId();
                $renderkey = (int)( $wgRequest->getVal( 'action' ) == 'render' );
 
-               $key = wfMemcKey( 'pcache', 'idhash', "{$pageid}-{$renderkey}!{$hash}" );
+               $key = $this->mMemc->makeKey( 'pcache', 'idhash', "{$pageid}-{$renderkey}!{$hash}" );
                return $key;
        }
 
@@ -76,7 +76,7 @@ class ParserCache {
         * @return mixed|string
         */
        protected function getOptionsKey( $page ) {
-               return wfMemcKey( 'pcache', 'idoptions', $page->getId() );
+               return $this->mMemc->makeKey( 'pcache', 'idoptions', $page->getId() );
        }
 
        /**
@@ -138,6 +138,20 @@ class ParserCache {
         * @return bool|mixed|string
         */
        public function getKey( $article, $popts, $useOutdated = true ) {
+               $dummy = null;
+               return $this->getKeyReal( $article, $popts, $useOutdated, $dummy );
+       }
+
+       /**
+        * Temporary internal function to allow accessing $usedOptions
+        * @todo Merge this back to self::getKey() when ParserOptions::optionsHashPre30() is removed
+        * @param WikiPage $article
+        * @param ParserOptions $popts
+        * @param bool $useOutdated (default true)
+        * @param array &$usedOptions Don't use this, it will go away soon
+        * @return bool|mixed|string
+        */
+       private function getKeyReal( $article, $popts, $useOutdated, &$usedOptions ) {
                global $wgCacheEpoch;
 
                if ( $popts instanceof User ) {
@@ -204,7 +218,8 @@ class ParserCache {
 
                $touched = $article->getTouched();
 
-               $parserOutputKey = $this->getKey( $article, $popts, $useOutdated );
+               $usedOptions = null;
+               $parserOutputKey = $this->getKeyReal( $article, $popts, $useOutdated, $usedOptions );
                if ( $parserOutputKey === false ) {
                        wfIncrStats( 'pcache.miss.absent' );
                        return false;
@@ -213,6 +228,13 @@ class ParserCache {
                $casToken = null;
                /** @var ParserOutput $value */
                $value = $this->mMemc->get( $parserOutputKey, $casToken, BagOStuff::READ_VERIFIED );
+               if ( !$value ) {
+                       $parserOutputKey = $this->getParserOutputKey(
+                               $article,
+                               $popts->optionsHashPre30( $usedOptions, $article->getTitle() )
+                       );
+                       $value = $this->mMemc->get( $parserOutputKey, $casToken, BagOStuff::READ_VERIFIED );
+               }
                if ( !$value ) {
                        wfDebug( "ParserOutput cache miss.\n" );
                        wfIncrStats( "pcache.miss.absent" );
@@ -305,6 +327,13 @@ class ParserCache {
                        // ...and its pointer
                        $this->mMemc->set( $this->getOptionsKey( $page ), $optionsKey, $expire );
 
+                       // Normally, when there was no key change, the above would have
+                       // overwritten the old entry. Delete that old entry to save disk
+                       // space.
+                       $oldParserOutputKey = $this->getParserOutputKey( $page,
+                               $popts->optionsHashPre30( $optionsKey->mUsedOptions, $page->getTitle() ) );
+                       $this->mMemc->delete( $oldParserOutputKey );
+
                        Hooks::run(
                                'ParserCacheSaveComplete',
                                [ $this, $parserOutput, $page->getTitle(), $popts, $revId ]
index d0b66f8..353825a 100644 (file)
@@ -24,8 +24,7 @@
 /**
  * @ingroup Parser
  */
-class ParserDiffTest
-{
+class ParserDiffTest {
        public $parsers;
        public $conf;
        public $shortOutput = false;
index 2cdd8c7..5be0321 100644 (file)
@@ -25,391 +25,641 @@ use Wikimedia\ScopedCallback;
 /**
  * @brief Set options of the Parser
  *
- * All member variables are supposed to be private in theory, although in
- * practice this is not the case.
+ * How to add an option in core:
+ *  1. Add it to one of the arrays in ParserOptions::setDefaults()
+ *  2. If necessary, add an entry to ParserOptions::$inCacheKey
+ *  3. Add a getter and setter in the section for that.
+ *
+ * How to add an option in an extension:
+ *  1. Use the 'ParserOptionsRegister' hook to register it.
+ *  2. Where necessary, use $popt->getOption() and $popt->setOption()
+ *     to access it.
  *
  * @ingroup Parser
  */
 class ParserOptions {
 
        /**
-        * Interlanguage links are removed and returned in an array
+        * Default values for all options that are relevant for caching.
+        * @see self::getDefaults()
+        * @var array|null
         */
-       private $mInterwikiMagic;
+       private static $defaults = null;
 
        /**
-        * Allow external images inline?
+        * Lazy-loaded options
+        * @var callback[]
         */
-       private $mAllowExternalImages;
+       private static $lazyOptions = [
+               'dateformat' => [ __CLASS__, 'initDateFormat' ],
+       ];
 
        /**
-        * If not, any exception?
+        * Specify options that are included in the cache key
+        * @var array
         */
-       private $mAllowExternalImagesFrom;
+       private static $inCacheKey = [
+               'dateformat' => true,
+               'numberheadings' => true,
+               'thumbsize' => true,
+               'stubthreshold' => true,
+               'printable' => true,
+               'userlang' => true,
+               'wrapclass' => true,
+       ];
 
        /**
-        * If not or it doesn't match, should we check an on-wiki whitelist?
+        * Current values for all options that are relevant for caching.
+        * @var array
         */
-       private $mEnableImageWhitelist;
+       private $options;
 
        /**
-        * Date format index
+        * Timestamp used for {{CURRENTDAY}} etc.
+        * @var string|null
+        * @note Caching based on parse time is handled externally
         */
-       private $mDateFormat = null;
+       private $mTimestamp;
 
        /**
-        * Create "edit section" links?
+        * The edit section flag is in ParserOptions for historical reasons, but
+        * doesn't actually affect the parser output since Feb 2015.
+        * @var bool
         */
        private $mEditSection = true;
 
        /**
-        * Allow inclusion of special pages?
+        * Stored user object
+        * @var User
+        * @todo Track this for caching somehow without fragmenting the cache insanely
         */
-       private $mAllowSpecialInclusion;
+       private $mUser;
 
        /**
-        * Use tidy to cleanup output HTML?
+        * Function to be called when an option is accessed.
+        * @var callable|null
+        * @note Used for collecting used options, does not affect caching
         */
-       private $mTidy = false;
+       private $onAccessCallback = null;
 
        /**
-        * Which lang to call for PLURAL and GRAMMAR
+        * If the page being parsed is a redirect, this should hold the redirect
+        * target.
+        * @var Title|null
+        * @todo Track this for caching somehow
         */
-       private $mInterfaceMessage = false;
+       private $redirectTarget = null;
 
        /**
-        * Overrides $mInterfaceMessage with arbitrary language
+        * Appended to the options hash
         */
-       private $mTargetLanguage = null;
+       private $mExtraKey = '';
 
        /**
-        * Maximum size of template expansions, in bytes
+        * @name Option accessors
+        * @{
         */
-       private $mMaxIncludeSize;
 
        /**
-        * Maximum number of nodes touched by PPFrame::expand()
+        * Fetch an option, generically
+        * @since 1.30
+        * @param string $name Option name
+        * @return mixed
         */
-       private $mMaxPPNodeCount;
+       public function getOption( $name ) {
+               if ( !array_key_exists( $name, $this->options ) ) {
+                       throw new InvalidArgumentException( "Unknown parser option $name" );
+               }
 
-       /**
-        * Maximum number of nodes generated by Preprocessor::preprocessToObj()
-        */
-       private $mMaxGeneratedPPNodeCount;
+               if ( isset( self::$lazyOptions[$name] ) && $this->options[$name] === null ) {
+                       $this->options[$name] = call_user_func( self::$lazyOptions[$name], $this, $name );
+               }
+               if ( !empty( self::$inCacheKey[$name] ) ) {
+                       $this->optionUsed( $name );
+               }
+               return $this->options[$name];
+       }
 
        /**
-        * Maximum recursion depth in PPFrame::expand()
+        * Set an option, generically
+        * @since 1.30
+        * @param string $name Option name
+        * @param mixed $value New value. Passing null will set null, unlike many
+        *  of the existing accessors which ignore null for historical reasons.
+        * @return mixed Old value
         */
-       private $mMaxPPExpandDepth;
+       public function setOption( $name, $value ) {
+               if ( !array_key_exists( $name, $this->options ) ) {
+                       throw new InvalidArgumentException( "Unknown parser option $name" );
+               }
+               $old = $this->options[$name];
+               $this->options[$name] = $value;
+               return $old;
+       }
 
        /**
-        * Maximum recursion depth for templates within templates
+        * Legacy implementation
+        * @since 1.30 For implementing legacy setters only. Don't use this in new code.
+        * @deprecated since 1.30
+        * @param string $name Option name
+        * @param mixed $value New value. Passing null does not set the value.
+        * @return mixed Old value
         */
-       private $mMaxTemplateDepth;
+       protected function setOptionLegacy( $name, $value ) {
+               if ( !array_key_exists( $name, $this->options ) ) {
+                       throw new InvalidArgumentException( "Unknown parser option $name" );
+               }
+               return wfSetVar( $this->options[$name], $value );
+       }
 
        /**
-        * Maximum number of calls per parse to expensive parser functions
+        * Whether to extract interlanguage links
+        *
+        * When true, interlanguage links will be returned by
+        * ParserOutput::getLanguageLinks() instead of generating link HTML.
+        *
+        * @return bool
         */
-       private $mExpensiveParserFunctionLimit;
+       public function getInterwikiMagic() {
+               return $this->getOption( 'interwikiMagic' );
+       }
 
        /**
-        * Remove HTML comments. ONLY APPLIES TO PREPROCESS OPERATIONS
+        * Specify whether to extract interlanguage links
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
         */
-       private $mRemoveComments = true;
+       public function setInterwikiMagic( $x ) {
+               return $this->setOptionLegacy( 'interwikiMagic', $x );
+       }
 
        /**
-        * @var callable Callback for current revision fetching; first argument to call_user_func().
+        * Allow all external images inline?
+        * @return bool
         */
-       private $mCurrentRevisionCallback =
-               [ 'Parser', 'statelessFetchRevision' ];
+       public function getAllowExternalImages() {
+               return $this->getOption( 'allowExternalImages' );
+       }
 
        /**
-        * @var callable Callback for template fetching; first argument to call_user_func().
+        * Allow all external images inline?
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
         */
-       private $mTemplateCallback =
-               [ 'Parser', 'statelessFetchTemplate' ];
+       public function setAllowExternalImages( $x ) {
+               return $this->setOptionLegacy( 'allowExternalImages', $x );
+       }
 
        /**
-        * @var callable|null Callback to generate a guess for {{REVISIONID}}
+        * External images to allow
+        *
+        * When self::getAllowExternalImages() is false
+        *
+        * @return string|string[] URLs to allow
         */
-       private $mSpeculativeRevIdCallback;
+       public function getAllowExternalImagesFrom() {
+               return $this->getOption( 'allowExternalImagesFrom' );
+       }
 
        /**
-        * Enable limit report in an HTML comment on output
+        * External images to allow
+        *
+        * When self::getAllowExternalImages() is false
+        *
+        * @param string|string[]|null $x New value (null is no change)
+        * @return string|string[] Old value
         */
-       private $mEnableLimitReport = false;
+       public function setAllowExternalImagesFrom( $x ) {
+               return $this->setOptionLegacy( 'allowExternalImagesFrom', $x );
+       }
 
        /**
-        * Timestamp used for {{CURRENTDAY}} etc.
+        * Use the on-wiki external image whitelist?
+        * @return bool
         */
-       private $mTimestamp;
+       public function getEnableImageWhitelist() {
+               return $this->getOption( 'enableImageWhitelist' );
+       }
 
        /**
-        * Target attribute for external links
+        * Use the on-wiki external image whitelist?
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
         */
-       private $mExternalLinkTarget;
+       public function setEnableImageWhitelist( $x ) {
+               return $this->setOptionLegacy( 'enableImageWhitelist', $x );
+       }
 
        /**
-        * Clean up signature texts?
-        * @see Parser::cleanSig
+        * Automatically number headings?
+        * @return bool
         */
-       private $mCleanSignatures;
+       public function getNumberHeadings() {
+               return $this->getOption( 'numberheadings' );
+       }
 
        /**
-        * Transform wiki markup when saving the page?
+        * Automatically number headings?
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
         */
-       private $mPreSaveTransform = true;
+       public function setNumberHeadings( $x ) {
+               return $this->setOptionLegacy( 'numberheadings', $x );
+       }
 
        /**
-        * Whether content conversion should be disabled
+        * Allow inclusion of special pages?
+        * @return bool
         */
-       private $mDisableContentConversion;
+       public function getAllowSpecialInclusion() {
+               return $this->getOption( 'allowSpecialInclusion' );
+       }
 
        /**
-        * Whether title conversion should be disabled
+        * Allow inclusion of special pages?
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
         */
-       private $mDisableTitleConversion;
+       public function setAllowSpecialInclusion( $x ) {
+               return $this->setOptionLegacy( 'allowSpecialInclusion', $x );
+       }
 
        /**
-        * Automatically number headings?
+        * Use tidy to cleanup output HTML?
+        * @return bool
         */
-       private $mNumberHeadings;
+       public function getTidy() {
+               return $this->getOption( 'tidy' );
+       }
 
        /**
-        * Thumb size preferred by the user.
+        * Use tidy to cleanup output HTML?
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
         */
-       private $mThumbSize;
+       public function setTidy( $x ) {
+               return $this->setOptionLegacy( 'tidy', $x );
+       }
 
        /**
-        * Maximum article size of an article to be marked as "stub"
+        * Parsing an interface message?
+        * @return bool
         */
-       private $mStubThreshold;
+       public function getInterfaceMessage() {
+               return $this->getOption( 'interfaceMessage' );
+       }
 
        /**
-        * Language object of the User language.
+        * Parsing an interface message?
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
         */
-       private $mUserLang;
+       public function setInterfaceMessage( $x ) {
+               return $this->setOptionLegacy( 'interfaceMessage', $x );
+       }
 
        /**
-        * @var User
-        * Stored user object
+        * Target language for the parse
+        * @return Language|null
         */
-       private $mUser;
+       public function getTargetLanguage() {
+               return $this->getOption( 'targetLanguage' );
+       }
 
        /**
-        * Parsing the page for a "preview" operation?
+        * Target language for the parse
+        * @param Language|null $x New value
+        * @return Language|null Old value
         */
-       private $mIsPreview = false;
+       public function setTargetLanguage( $x ) {
+               return $this->setOption( 'targetLanguage', $x );
+       }
 
        /**
-        * Parsing the page for a "preview" operation on a single section?
+        * Maximum size of template expansions, in bytes
+        * @return int
         */
-       private $mIsSectionPreview = false;
+       public function getMaxIncludeSize() {
+               return $this->getOption( 'maxIncludeSize' );
+       }
 
        /**
-        * Parsing the printable version of the page?
+        * Maximum size of template expansions, in bytes
+        * @param int|null $x New value (null is no change)
+        * @return int Old value
         */
-       private $mIsPrintable = false;
+       public function setMaxIncludeSize( $x ) {
+               return $this->setOptionLegacy( 'maxIncludeSize', $x );
+       }
 
        /**
-        * Extra key that should be present in the caching key.
+        * Maximum number of nodes touched by PPFrame::expand()
+        * @return int
         */
-       private $mExtraKey = '';
+       public function getMaxPPNodeCount() {
+               return $this->getOption( 'maxPPNodeCount' );
+       }
 
        /**
-        * Are magic ISBN links enabled?
+        * Maximum number of nodes touched by PPFrame::expand()
+        * @param int|null $x New value (null is no change)
+        * @return int Old value
         */
-       private $mMagicISBNLinks = true;
+       public function setMaxPPNodeCount( $x ) {
+               return $this->setOptionLegacy( 'maxPPNodeCount', $x );
+       }
 
        /**
-        * Are magic PMID links enabled?
+        * Maximum number of nodes generated by Preprocessor::preprocessToObj()
+        * @return int
         */
-       private $mMagicPMIDLinks = true;
+       public function getMaxGeneratedPPNodeCount() {
+               return $this->getOption( 'maxGeneratedPPNodeCount' );
+       }
 
        /**
-        * Are magic RFC links enabled?
+        * Maximum number of nodes generated by Preprocessor::preprocessToObj()
+        * @param int|null $x New value (null is no change)
+        * @return int
         */
-       private $mMagicRFCLinks = true;
+       public function setMaxGeneratedPPNodeCount( $x ) {
+               return $this->setOptionLegacy( 'maxGeneratedPPNodeCount', $x );
+       }
 
        /**
-        * Function to be called when an option is accessed.
+        * Maximum recursion depth in PPFrame::expand()
+        * @return int
         */
-       private $onAccessCallback = null;
+       public function getMaxPPExpandDepth() {
+               return $this->getOption( 'maxPPExpandDepth' );
+       }
 
        /**
-        * If the page being parsed is a redirect, this should hold the redirect
-        * target.
-        * @var Title|null
+        * Maximum recursion depth for templates within templates
+        * @return int
         */
-       private $redirectTarget = null;
+       public function getMaxTemplateDepth() {
+               return $this->getOption( 'maxTemplateDepth' );
+       }
 
        /**
-        * If the wiki is configured to allow raw html ($wgRawHtml = true)
-        * is it allowed in the specific case of parsing this page.
-        *
-        * This is meant to disable unsafe parser tags in cases where
-        * a malicious user may control the input to the parser.
-        *
-        * @note This is expected to be true for normal pages even if the
-        *  wiki has $wgRawHtml disabled in general. The setting only
-        *  signifies that raw html would be unsafe in the current context
-        *  provided that raw html is allowed at all.
-        * @var boolean
+        * Maximum recursion depth for templates within templates
+        * @param int|null $x New value (null is no change)
+        * @return int Old value
         */
-       private $allowUnsafeRawHtml = true;
-
-       public function getInterwikiMagic() {
-               return $this->mInterwikiMagic;
-       }
-
-       public function getAllowExternalImages() {
-               return $this->mAllowExternalImages;
-       }
-
-       public function getAllowExternalImagesFrom() {
-               return $this->mAllowExternalImagesFrom;
-       }
-
-       public function getEnableImageWhitelist() {
-               return $this->mEnableImageWhitelist;
-       }
-
-       public function getEditSection() {
-               return $this->mEditSection;
+       public function setMaxTemplateDepth( $x ) {
+               return $this->setOptionLegacy( 'maxTemplateDepth', $x );
        }
 
-       public function getNumberHeadings() {
-               $this->optionUsed( 'numberheadings' );
-
-               return $this->mNumberHeadings;
+       /**
+        * Maximum number of calls per parse to expensive parser functions
+        * @since 1.20
+        * @return int
+        */
+       public function getExpensiveParserFunctionLimit() {
+               return $this->getOption( 'expensiveParserFunctionLimit' );
        }
 
-       public function getAllowSpecialInclusion() {
-               return $this->mAllowSpecialInclusion;
+       /**
+        * Maximum number of calls per parse to expensive parser functions
+        * @since 1.20
+        * @param int|null $x New value (null is no change)
+        * @return int Old value
+        */
+       public function setExpensiveParserFunctionLimit( $x ) {
+               return $this->setOptionLegacy( 'expensiveParserFunctionLimit', $x );
        }
 
-       public function getTidy() {
-               return $this->mTidy;
+       /**
+        * Remove HTML comments
+        * @warning Only applies to preprocess operations
+        * @return bool
+        */
+       public function getRemoveComments() {
+               return $this->getOption( 'removeComments' );
        }
 
-       public function getInterfaceMessage() {
-               return $this->mInterfaceMessage;
+       /**
+        * Remove HTML comments
+        * @warning Only applies to preprocess operations
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
+        */
+       public function setRemoveComments( $x ) {
+               return $this->setOptionLegacy( 'removeComments', $x );
        }
 
-       public function getTargetLanguage() {
-               return $this->mTargetLanguage;
+       /**
+        * Enable limit report in an HTML comment on output
+        * @return bool
+        */
+       public function getEnableLimitReport() {
+               return $this->getOption( 'enableLimitReport' );
        }
 
-       public function getMaxIncludeSize() {
-               return $this->mMaxIncludeSize;
+       /**
+        * Enable limit report in an HTML comment on output
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
+        */
+       public function enableLimitReport( $x = true ) {
+               return $this->setOptionLegacy( 'enableLimitReport', $x );
        }
 
-       public function getMaxPPNodeCount() {
-               return $this->mMaxPPNodeCount;
+       /**
+        * Clean up signature texts?
+        * @see Parser::cleanSig
+        * @return bool
+        */
+       public function getCleanSignatures() {
+               return $this->getOption( 'cleanSignatures' );
        }
 
-       public function getMaxGeneratedPPNodeCount() {
-               return $this->mMaxGeneratedPPNodeCount;
+       /**
+        * Clean up signature texts?
+        * @see Parser::cleanSig
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
+        */
+       public function setCleanSignatures( $x ) {
+               return $this->setOptionLegacy( 'cleanSignatures', $x );
        }
 
-       public function getMaxPPExpandDepth() {
-               return $this->mMaxPPExpandDepth;
+       /**
+        * Target attribute for external links
+        * @return string
+        */
+       public function getExternalLinkTarget() {
+               return $this->getOption( 'externalLinkTarget' );
        }
 
-       public function getMaxTemplateDepth() {
-               return $this->mMaxTemplateDepth;
+       /**
+        * Target attribute for external links
+        * @param string|null $x New value (null is no change)
+        * @return string Old value
+        */
+       public function setExternalLinkTarget( $x ) {
+               return $this->setOptionLegacy( 'externalLinkTarget', $x );
        }
 
-       /* @since 1.20 */
-       public function getExpensiveParserFunctionLimit() {
-               return $this->mExpensiveParserFunctionLimit;
+       /**
+        * Whether content conversion should be disabled
+        * @return bool
+        */
+       public function getDisableContentConversion() {
+               return $this->getOption( 'disableContentConversion' );
        }
 
-       public function getRemoveComments() {
-               return $this->mRemoveComments;
+       /**
+        * Whether content conversion should be disabled
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
+        */
+       public function disableContentConversion( $x = true ) {
+               return $this->setOptionLegacy( 'disableContentConversion', $x );
        }
 
-       /* @since 1.24 */
-       public function getCurrentRevisionCallback() {
-               return $this->mCurrentRevisionCallback;
+       /**
+        * Whether title conversion should be disabled
+        * @return bool
+        */
+       public function getDisableTitleConversion() {
+               return $this->getOption( 'disableTitleConversion' );
        }
 
-       public function getTemplateCallback() {
-               return $this->mTemplateCallback;
+       /**
+        * Whether title conversion should be disabled
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
+        */
+       public function disableTitleConversion( $x = true ) {
+               return $this->setOptionLegacy( 'disableTitleConversion', $x );
        }
 
-       /** @since 1.28 */
-       public function getSpeculativeRevIdCallback() {
-               return $this->mSpeculativeRevIdCallback;
+       /**
+        * Thumb size preferred by the user.
+        * @return int
+        */
+       public function getThumbSize() {
+               return $this->getOption( 'thumbsize' );
        }
 
-       public function getEnableLimitReport() {
-               return $this->mEnableLimitReport;
+       /**
+        * Thumb size preferred by the user.
+        * @param int|null $x New value (null is no change)
+        * @return int Old value
+        */
+       public function setThumbSize( $x ) {
+               return $this->setOptionLegacy( 'thumbsize', $x );
        }
 
-       public function getCleanSignatures() {
-               return $this->mCleanSignatures;
+       /**
+        * Thumb size preferred by the user.
+        * @return int
+        */
+       public function getStubThreshold() {
+               return $this->getOption( 'stubthreshold' );
        }
 
-       public function getExternalLinkTarget() {
-               return $this->mExternalLinkTarget;
+       /**
+        * Thumb size preferred by the user.
+        * @param int|null $x New value (null is no change)
+        * @return int Old value
+        */
+       public function setStubThreshold( $x ) {
+               return $this->setOptionLegacy( 'stubthreshold', $x );
        }
 
-       public function getDisableContentConversion() {
-               return $this->mDisableContentConversion;
+       /**
+        * Parsing the page for a "preview" operation?
+        * @return bool
+        */
+       public function getIsPreview() {
+               return $this->getOption( 'isPreview' );
        }
 
-       public function getDisableTitleConversion() {
-               return $this->mDisableTitleConversion;
+       /**
+        * Parsing the page for a "preview" operation?
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
+        */
+       public function setIsPreview( $x ) {
+               return $this->setOptionLegacy( 'isPreview', $x );
        }
 
-       public function getThumbSize() {
-               $this->optionUsed( 'thumbsize' );
-
-               return $this->mThumbSize;
+       /**
+        * Parsing the page for a "preview" operation on a single section?
+        * @return bool
+        */
+       public function getIsSectionPreview() {
+               return $this->getOption( 'isSectionPreview' );
        }
 
-       public function getStubThreshold() {
-               $this->optionUsed( 'stubthreshold' );
-
-               return $this->mStubThreshold;
+       /**
+        * Parsing the page for a "preview" operation on a single section?
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
+        */
+       public function setIsSectionPreview( $x ) {
+               return $this->setOptionLegacy( 'isSectionPreview', $x );
        }
 
-       public function getIsPreview() {
-               return $this->mIsPreview;
+       /**
+        * Parsing the printable version of the page?
+        * @return bool
+        */
+       public function getIsPrintable() {
+               return $this->getOption( 'printable' );
        }
 
-       public function getIsSectionPreview() {
-               return $this->mIsSectionPreview;
+       /**
+        * Parsing the printable version of the page?
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
+        */
+       public function setIsPrintable( $x ) {
+               return $this->setOptionLegacy( 'printable', $x );
        }
 
-       public function getIsPrintable() {
-               $this->optionUsed( 'printable' );
-
-               return $this->mIsPrintable;
+       /**
+        * Transform wiki markup when saving the page?
+        * @return bool
+        */
+       public function getPreSaveTransform() {
+               return $this->getOption( 'preSaveTransform' );
        }
 
-       public function getUser() {
-               return $this->mUser;
+       /**
+        * Transform wiki markup when saving the page?
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
+        */
+       public function setPreSaveTransform( $x ) {
+               return $this->setOptionLegacy( 'preSaveTransform', $x );
        }
 
-       public function getPreSaveTransform() {
-               return $this->mPreSaveTransform;
+       /**
+        * Date format index
+        * @return string
+        */
+       public function getDateFormat() {
+               return $this->getOption( 'dateformat' );
        }
 
-       public function getDateFormat() {
-               $this->optionUsed( 'dateformat' );
-               if ( !isset( $this->mDateFormat ) ) {
-                       $this->mDateFormat = $this->mUser->getDatePreference();
-               }
-               return $this->mDateFormat;
+       /**
+        * Lazy initializer for dateFormat
+        */
+       private static function initDateFormat( $popt ) {
+               return $popt->mUser->getDatePreference();
        }
 
-       public function getTimestamp() {
-               if ( !isset( $this->mTimestamp ) ) {
-                       $this->mTimestamp = wfTimestampNow();
-               }
-               return $this->mTimestamp;
+       /**
+        * Date format index
+        * @param string|null $x New value (null is no change)
+        * @return string Old value
+        */
+       public function setDateFormat( $x ) {
+               return $this->setOptionLegacy( 'dateformat', $x );
        }
 
        /**
@@ -430,8 +680,7 @@ class ParserOptions {
         * @since 1.19
         */
        public function getUserLangObj() {
-               $this->optionUsed( 'userlang' );
-               return $this->mUserLang;
+               return $this->getOption( 'userlang' );
        }
 
        /**
@@ -451,182 +700,188 @@ class ParserOptions {
        }
 
        /**
+        * Set the user language used by the parser for this page and split the parser cache.
+        * @param string|Language $x New value
+        * @return Language Old value
+        */
+       public function setUserLang( $x ) {
+               if ( is_string( $x ) ) {
+                       $x = Language::factory( $x );
+               }
+
+               return $this->setOptionLegacy( 'userlang', $x );
+       }
+
+       /**
+        * Are magic ISBN links enabled?
         * @since 1.28
         * @return bool
         */
        public function getMagicISBNLinks() {
-               return $this->mMagicISBNLinks;
+               return $this->getOption( 'magicISBNLinks' );
        }
 
        /**
+        * Are magic PMID links enabled?
         * @since 1.28
         * @return bool
         */
        public function getMagicPMIDLinks() {
-               return $this->mMagicPMIDLinks;
+               return $this->getOption( 'magicPMIDLinks' );
        }
        /**
+        * Are magic RFC links enabled?
         * @since 1.28
         * @return bool
         */
        public function getMagicRFCLinks() {
-               return $this->mMagicRFCLinks;
+               return $this->getOption( 'magicRFCLinks' );
        }
 
        /**
+        * If the wiki is configured to allow raw html ($wgRawHtml = true)
+        * is it allowed in the specific case of parsing this page.
+        *
+        * This is meant to disable unsafe parser tags in cases where
+        * a malicious user may control the input to the parser.
+        *
+        * @note This is expected to be true for normal pages even if the
+        *  wiki has $wgRawHtml disabled in general. The setting only
+        *  signifies that raw html would be unsafe in the current context
+        *  provided that raw html is allowed at all.
         * @since 1.29
         * @return bool
         */
        public function getAllowUnsafeRawHtml() {
-               return $this->allowUnsafeRawHtml;
-       }
-
-       public function setInterwikiMagic( $x ) {
-               return wfSetVar( $this->mInterwikiMagic, $x );
-       }
-
-       public function setAllowExternalImages( $x ) {
-               return wfSetVar( $this->mAllowExternalImages, $x );
-       }
-
-       public function setAllowExternalImagesFrom( $x ) {
-               return wfSetVar( $this->mAllowExternalImagesFrom, $x );
-       }
-
-       public function setEnableImageWhitelist( $x ) {
-               return wfSetVar( $this->mEnableImageWhitelist, $x );
-       }
-
-       public function setDateFormat( $x ) {
-               return wfSetVar( $this->mDateFormat, $x );
-       }
-
-       public function setEditSection( $x ) {
-               return wfSetVar( $this->mEditSection, $x );
+               return $this->getOption( 'allowUnsafeRawHtml' );
        }
 
-       public function setNumberHeadings( $x ) {
-               return wfSetVar( $this->mNumberHeadings, $x );
-       }
-
-       public function setAllowSpecialInclusion( $x ) {
-               return wfSetVar( $this->mAllowSpecialInclusion, $x );
-       }
-
-       public function setTidy( $x ) {
-               return wfSetVar( $this->mTidy, $x );
-       }
-
-       public function setInterfaceMessage( $x ) {
-               return wfSetVar( $this->mInterfaceMessage, $x );
-       }
-
-       public function setTargetLanguage( $x ) {
-               return wfSetVar( $this->mTargetLanguage, $x, true );
-       }
-
-       public function setMaxIncludeSize( $x ) {
-               return wfSetVar( $this->mMaxIncludeSize, $x );
-       }
-
-       public function setMaxPPNodeCount( $x ) {
-               return wfSetVar( $this->mMaxPPNodeCount, $x );
-       }
-
-       public function setMaxGeneratedPPNodeCount( $x ) {
-               return wfSetVar( $this->mMaxGeneratedPPNodeCount, $x );
+       /**
+        * If the wiki is configured to allow raw html ($wgRawHtml = true)
+        * is it allowed in the specific case of parsing this page.
+        * @see self::getAllowUnsafeRawHtml()
+        * @since 1.29
+        * @param bool|null Value to set or null to get current value
+        * @return bool Current value for allowUnsafeRawHtml
+        */
+       public function setAllowUnsafeRawHtml( $x ) {
+               return $this->setOptionLegacy( 'allowUnsafeRawHtml', $x );
        }
 
-       public function setMaxTemplateDepth( $x ) {
-               return wfSetVar( $this->mMaxTemplateDepth, $x );
+       /**
+        * Class to use to wrap output from Parser::parse()
+        * @since 1.30
+        * @return string|bool
+        */
+       public function getWrapOutputClass() {
+               return $this->getOption( 'wrapclass' );
        }
 
-       /* @since 1.20 */
-       public function setExpensiveParserFunctionLimit( $x ) {
-               return wfSetVar( $this->mExpensiveParserFunctionLimit, $x );
+       /**
+        * CSS class to use to wrap output from Parser::parse()
+        * @since 1.30
+        * @param string|bool $className Set false to disable wrapping.
+        * @return string|bool Current value
+        */
+       public function setWrapOutputClass( $className ) {
+               if ( $className === true ) { // DWIM, they probably want the default class name
+                       $className = 'mw-parser-output';
+               }
+               return $this->setOption( 'wrapclass', $className );
        }
 
-       public function setRemoveComments( $x ) {
-               return wfSetVar( $this->mRemoveComments, $x );
+       /**
+        * Callback for current revision fetching; first argument to call_user_func().
+        * @since 1.24
+        * @return callable
+        */
+       public function getCurrentRevisionCallback() {
+               return $this->getOption( 'currentRevisionCallback' );
        }
 
-       /* @since 1.24 */
+       /**
+        * Callback for current revision fetching; first argument to call_user_func().
+        * @since 1.24
+        * @param callable|null $x New value (null is no change)
+        * @return callable Old value
+        */
        public function setCurrentRevisionCallback( $x ) {
-               return wfSetVar( $this->mCurrentRevisionCallback, $x );
+               return $this->setOptionLegacy( 'currentRevisionCallback', $x );
        }
 
-       /** @since 1.28 */
-       public function setSpeculativeRevIdCallback( $x ) {
-               return wfSetVar( $this->mSpeculativeRevIdCallback, $x );
+       /**
+        * Callback for template fetching; first argument to call_user_func().
+        * @return callable
+        */
+       public function getTemplateCallback() {
+               return $this->getOption( 'templateCallback' );
        }
 
+       /**
+        * Callback for template fetching; first argument to call_user_func().
+        * @param callable|null $x New value (null is no change)
+        * @return callable Old value
+        */
        public function setTemplateCallback( $x ) {
-               return wfSetVar( $this->mTemplateCallback, $x );
-       }
-
-       public function enableLimitReport( $x = true ) {
-               return wfSetVar( $this->mEnableLimitReport, $x );
-       }
-
-       public function setTimestamp( $x ) {
-               return wfSetVar( $this->mTimestamp, $x );
-       }
-
-       public function setCleanSignatures( $x ) {
-               return wfSetVar( $this->mCleanSignatures, $x );
+               return $this->setOptionLegacy( 'templateCallback', $x );
        }
 
-       public function setExternalLinkTarget( $x ) {
-               return wfSetVar( $this->mExternalLinkTarget, $x );
+       /**
+        * Callback to generate a guess for {{REVISIONID}}
+        * @since 1.28
+        * @return callable|null
+        */
+       public function getSpeculativeRevIdCallback() {
+               return $this->getOption( 'speculativeRevIdCallback' );
        }
 
-       public function disableContentConversion( $x = true ) {
-               return wfSetVar( $this->mDisableContentConversion, $x );
+       /**
+        * Callback to generate a guess for {{REVISIONID}}
+        * @since 1.28
+        * @param callable|null $x New value (null is no change)
+        * @return callable|null Old value
+        */
+       public function setSpeculativeRevIdCallback( $x ) {
+               return $this->setOptionLegacy( 'speculativeRevIdCallback', $x );
        }
 
-       public function disableTitleConversion( $x = true ) {
-               return wfSetVar( $this->mDisableTitleConversion, $x );
-       }
+       /**@}*/
 
-       public function setUserLang( $x ) {
-               if ( is_string( $x ) ) {
-                       $x = Language::factory( $x );
+       /**
+        * Timestamp used for {{CURRENTDAY}} etc.
+        * @return string
+        */
+       public function getTimestamp() {
+               if ( !isset( $this->mTimestamp ) ) {
+                       $this->mTimestamp = wfTimestampNow();
                }
-
-               return wfSetVar( $this->mUserLang, $x );
-       }
-
-       public function setThumbSize( $x ) {
-               return wfSetVar( $this->mThumbSize, $x );
-       }
-
-       public function setStubThreshold( $x ) {
-               return wfSetVar( $this->mStubThreshold, $x );
-       }
-
-       public function setPreSaveTransform( $x ) {
-               return wfSetVar( $this->mPreSaveTransform, $x );
-       }
-
-       public function setIsPreview( $x ) {
-               return wfSetVar( $this->mIsPreview, $x );
+               return $this->mTimestamp;
        }
 
-       public function setIsSectionPreview( $x ) {
-               return wfSetVar( $this->mIsSectionPreview, $x );
+       /**
+        * Timestamp used for {{CURRENTDAY}} etc.
+        * @param string|null $x New value (null is no change)
+        * @return string Old value
+        */
+       public function setTimestamp( $x ) {
+               return wfSetVar( $this->mTimestamp, $x );
        }
 
-       public function setIsPrintable( $x ) {
-               return wfSetVar( $this->mIsPrintable, $x );
+       /**
+        * Create "edit section" links?
+        * @return bool
+        */
+       public function getEditSection() {
+               return $this->mEditSection;
        }
 
        /**
-        * @param bool|null Value to set or null to get current value
-        * @return bool Current value for allowUnsafeRawHtml
-        * @since 1.29
+        * Create "edit section" links?
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
         */
-       public function setAllowUnsafeRawHtml( $x ) {
-               return wfSetVar( $this->allowUnsafeRawHtml, $x );
+       public function setEditSection( $x ) {
+               return wfSetVar( $this->mEditSection, $x );
        }
 
        /**
@@ -655,14 +910,27 @@ class ParserOptions {
 
        /**
         * Extra key that should be present in the parser cache key.
+        * @warning Consider registering your additional options with the
+        *  ParserOptionsRegister hook instead of using this method.
         * @param string $key
         */
        public function addExtraKey( $key ) {
                $this->mExtraKey .= '!' . $key;
        }
 
+       /**
+        * Current user
+        * @return User
+        */
+       public function getUser() {
+               return $this->mUser;
+       }
+
        /**
         * Constructor
+        * @warning For interaction with the parser cache, use
+        *  WikiPage::makeParserOptions(), ContentHandler::makeParserOptions(), or
+        *  ParserOptions::newCanonical() instead.
         * @param User $user
         * @param Language $lang
         */
@@ -687,6 +955,9 @@ class ParserOptions {
 
        /**
         * Get a ParserOptions object for an anonymous user
+        * @warning For interaction with the parser cache, use
+        *  WikiPage::makeParserOptions(), ContentHandler::makeParserOptions(), or
+        *  ParserOptions::newCanonical() instead.
         * @since 1.27
         * @return ParserOptions
         */
@@ -699,6 +970,9 @@ class ParserOptions {
         * Get a ParserOptions object from a given user.
         * Language will be taken from $wgLang.
         *
+        * @warning For interaction with the parser cache, use
+        *  WikiPage::makeParserOptions(), ContentHandler::makeParserOptions(), or
+        *  ParserOptions::newCanonical() instead.
         * @param User $user
         * @return ParserOptions
         */
@@ -709,6 +983,9 @@ class ParserOptions {
        /**
         * Get a ParserOptions object from a given user and language
         *
+        * @warning For interaction with the parser cache, use
+        *  WikiPage::makeParserOptions(), ContentHandler::makeParserOptions(), or
+        *  ParserOptions::newCanonical() instead.
         * @param User $user
         * @param Language $lang
         * @return ParserOptions
@@ -720,6 +997,9 @@ class ParserOptions {
        /**
         * Get a ParserOptions object from a IContextSource object
         *
+        * @warning For interaction with the parser cache, use
+        *  WikiPage::makeParserOptions(), ContentHandler::makeParserOptions(), or
+        *  ParserOptions::newCanonical() instead.
         * @param IContextSource $context
         * @return ParserOptions
         */
@@ -728,44 +1008,129 @@ class ParserOptions {
        }
 
        /**
-        * Get user options
+        * Creates a "canonical" ParserOptions object
         *
-        * @param User $user
-        * @param Language $lang
+        * For historical reasons, certain options have default values that are
+        * different from the canonical values used for caching.
+        *
+        * @since 1.30
+        * @param User|null $user
+        * @param Language|StubObject|null $lang
+        * @return ParserOptions
         */
-       private function initialiseFromUser( $user, $lang ) {
+       public static function newCanonical( User $user = null, $lang = null ) {
+               $ret = new ParserOptions( $user, $lang );
+               foreach ( self::getCanonicalOverrides() as $k => $v ) {
+                       $ret->setOption( $k, $v );
+               }
+               return $ret;
+       }
+
+       /**
+        * Get default option values
+        * @warning If you change the default for an existing option (unless it's
+        *  being overridden by self::getCanonicalOverrides()), all existing parser
+        *  cache entries will be invalid. To avoid bugs, you'll need to handle
+        *  that somehow (e.g. with the RejectParserCacheValue hook) because
+        *  MediaWiki won't do it for you.
+        * @return array
+        */
+       private static function getDefaults() {
                global $wgInterwikiMagic, $wgAllowExternalImages,
                        $wgAllowExternalImagesFrom, $wgEnableImageWhitelist, $wgAllowSpecialInclusion,
                        $wgMaxArticleSize, $wgMaxPPNodeCount, $wgMaxTemplateDepth, $wgMaxPPExpandDepth,
                        $wgCleanSignatures, $wgExternalLinkTarget, $wgExpensiveParserFunctionLimit,
                        $wgMaxGeneratedPPNodeCount, $wgDisableLangConversion, $wgDisableTitleConversion,
-                       $wgEnableMagicLinks;
-
-               // *UPDATE* ParserOptions::matches() if any of this changes as needed
-               $this->mInterwikiMagic = $wgInterwikiMagic;
-               $this->mAllowExternalImages = $wgAllowExternalImages;
-               $this->mAllowExternalImagesFrom = $wgAllowExternalImagesFrom;
-               $this->mEnableImageWhitelist = $wgEnableImageWhitelist;
-               $this->mAllowSpecialInclusion = $wgAllowSpecialInclusion;
-               $this->mMaxIncludeSize = $wgMaxArticleSize * 1024;
-               $this->mMaxPPNodeCount = $wgMaxPPNodeCount;
-               $this->mMaxGeneratedPPNodeCount = $wgMaxGeneratedPPNodeCount;
-               $this->mMaxPPExpandDepth = $wgMaxPPExpandDepth;
-               $this->mMaxTemplateDepth = $wgMaxTemplateDepth;
-               $this->mExpensiveParserFunctionLimit = $wgExpensiveParserFunctionLimit;
-               $this->mCleanSignatures = $wgCleanSignatures;
-               $this->mExternalLinkTarget = $wgExternalLinkTarget;
-               $this->mDisableContentConversion = $wgDisableLangConversion;
-               $this->mDisableTitleConversion = $wgDisableLangConversion || $wgDisableTitleConversion;
-               $this->mMagicISBNLinks = $wgEnableMagicLinks['ISBN'];
-               $this->mMagicPMIDLinks = $wgEnableMagicLinks['PMID'];
-               $this->mMagicRFCLinks = $wgEnableMagicLinks['RFC'];
+                       $wgEnableMagicLinks, $wgContLang;
+
+               if ( self::$defaults === null ) {
+                       // *UPDATE* ParserOptions::matches() if any of this changes as needed
+                       self::$defaults = [
+                               'dateformat' => null,
+                               'tidy' => false,
+                               'interfaceMessage' => false,
+                               'targetLanguage' => null,
+                               'removeComments' => true,
+                               'enableLimitReport' => false,
+                               'preSaveTransform' => true,
+                               'isPreview' => false,
+                               'isSectionPreview' => false,
+                               'printable' => false,
+                               'allowUnsafeRawHtml' => true,
+                               'wrapclass' => 'mw-parser-output',
+                               'currentRevisionCallback' => [ 'Parser', 'statelessFetchRevision' ],
+                               'templateCallback' => [ 'Parser', 'statelessFetchTemplate' ],
+                               'speculativeRevIdCallback' => null,
+                       ];
+
+                       Hooks::run( 'ParserOptionsRegister', [
+                               &self::$defaults,
+                               &self::$inCacheKey,
+                               &self::$lazyOptions,
+                       ] );
+
+                       ksort( self::$inCacheKey );
+               }
+
+               // Unit tests depend on being able to modify the globals at will
+               return self::$defaults + [
+                       'interwikiMagic' => $wgInterwikiMagic,
+                       'allowExternalImages' => $wgAllowExternalImages,
+                       'allowExternalImagesFrom' => $wgAllowExternalImagesFrom,
+                       'enableImageWhitelist' => $wgEnableImageWhitelist,
+                       'allowSpecialInclusion' => $wgAllowSpecialInclusion,
+                       'maxIncludeSize' => $wgMaxArticleSize * 1024,
+                       'maxPPNodeCount' => $wgMaxPPNodeCount,
+                       'maxGeneratedPPNodeCount' => $wgMaxGeneratedPPNodeCount,
+                       'maxPPExpandDepth' => $wgMaxPPExpandDepth,
+                       'maxTemplateDepth' => $wgMaxTemplateDepth,
+                       'expensiveParserFunctionLimit' => $wgExpensiveParserFunctionLimit,
+                       'externalLinkTarget' => $wgExternalLinkTarget,
+                       'cleanSignatures' => $wgCleanSignatures,
+                       'disableContentConversion' => $wgDisableLangConversion,
+                       'disableTitleConversion' => $wgDisableLangConversion || $wgDisableTitleConversion,
+                       'magicISBNLinks' => $wgEnableMagicLinks['ISBN'],
+                       'magicPMIDLinks' => $wgEnableMagicLinks['PMID'],
+                       'magicRFCLinks' => $wgEnableMagicLinks['RFC'],
+                       'numberheadings' => User::getDefaultOption( 'numberheadings' ),
+                       'thumbsize' => User::getDefaultOption( 'thumbsize' ),
+                       'stubthreshold' => 0,
+                       'userlang' => $wgContLang,
+               ];
+       }
+
+       /**
+        * Get "canonical" non-default option values
+        * @see self::newCanonical
+        * @warning If you change the override for an existing option, all existing
+        *  parser cache entries will be invalid. To avoid bugs, you'll need to
+        *  handle that somehow (e.g. with the RejectParserCacheValue hook) because
+        *  MediaWiki won't do it for you.
+        * @return array
+        */
+       private static function getCanonicalOverrides() {
+               global $wgEnableParserLimitReporting;
+
+               return [
+                       'tidy' => true,
+                       'enableLimitReport' => $wgEnableParserLimitReporting,
+               ];
+       }
+
+       /**
+        * Get user options
+        *
+        * @param User $user
+        * @param Language $lang
+        */
+       private function initialiseFromUser( $user, $lang ) {
+               $this->options = self::getDefaults();
 
                $this->mUser = $user;
-               $this->mNumberHeadings = $user->getOption( 'numberheadings' );
-               $this->mThumbSize = $user->getOption( 'thumbsize' );
-               $this->mStubThreshold = $user->getStubThreshold();
-               $this->mUserLang = $lang;
+               $this->options['numberheadings'] = $user->getOption( 'numberheadings' );
+               $this->options['thumbsize'] = $user->getOption( 'thumbsize' );
+               $this->options['stubthreshold'] = $user->getStubThreshold();
+               $this->options['userlang'] = $lang;
        }
 
        /**
@@ -778,9 +1143,36 @@ class ParserOptions {
         * @since 1.25
         */
        public function matches( ParserOptions $other ) {
+               // Populate lazy options
+               foreach ( self::$lazyOptions as $name => $callback ) {
+                       if ( $this->options[$name] === null ) {
+                               $this->options[$name] = call_user_func( $callback, $this, $name );
+                       }
+                       if ( $other->options[$name] === null ) {
+                               $other->options[$name] = call_user_func( $callback, $other, $name );
+                       }
+               }
+
+               // Compare most options
+               $options = array_keys( $this->options );
+               $options = array_diff( $options, [
+                       'enableLimitReport', // only affects HTML comments
+               ] );
+               foreach ( $options as $option ) {
+                       $o1 = $this->optionToString( $this->options[$option] );
+                       $o2 = $this->optionToString( $other->options[$option] );
+                       if ( $o1 !== $o2 ) {
+                               return false;
+                       }
+               }
+
+               // Compare most other fields
                $fields = array_keys( get_class_vars( __CLASS__ ) );
                $fields = array_diff( $fields, [
-                       'mEnableLimitReport', // only effects HTML comments
+                       'defaults', // static
+                       'lazyOptions', // static
+                       'inCacheKey', // static
+                       'options', // Already checked above
                        'onAccessCallback', // only used for ParserOutput option tracking
                ] );
                foreach ( $fields as $field ) {
@@ -788,11 +1180,8 @@ class ParserOptions {
                                return false;
                        }
                }
-               // Check the object and lazy-loaded options
-               return (
-                       $this->mUserLang->equals( $other->mUserLang ) &&
-                       $this->getDateFormat() === $other->getDateFormat()
-               );
+
+               return true;
        }
 
        /**
@@ -822,6 +1211,7 @@ class ParserOptions {
         * Returns the full array of options that would have been used by
         * in 1.16.
         * Used to get the old parser cache entries when available.
+        * @todo 1.16 was years ago, can we remove this?
         * @return array
         */
        public static function legacyOptions() {
@@ -835,6 +1225,27 @@ class ParserOptions {
                ];
        }
 
+       /**
+        * Convert an option to a string value
+        * @param mixed $value
+        * @return string
+        */
+       private function optionToString( $value ) {
+               if ( $value === true ) {
+                       return '1';
+               } elseif ( $value === false ) {
+                       return '0';
+               } elseif ( $value === null ) {
+                       return '';
+               } elseif ( $value instanceof Language ) {
+                       return $value->getCode();
+               } elseif ( is_array( $value ) ) {
+                       return '[' . join( ',', array_map( [ $this, 'optionToString' ], $value ) ) . ']';
+               } else {
+                       return (string)$value;
+               }
+       }
+
        /**
         * Generate a hash string with the values set on these ParserOptions
         * for the keys given in the array.
@@ -842,10 +1253,6 @@ class ParserOptions {
         * so users sharing the options with vary for the same page share
         * the same cached data safely.
         *
-        * Extensions which require it should install 'PageRenderingHash' hook,
-        * which will give them a chance to modify this key based on their own
-        * settings.
-        *
         * @since 1.17
         * @param array $forOptions
         * @param Title $title Used to get the content language of the page (since r97636)
@@ -854,6 +1261,77 @@ class ParserOptions {
        public function optionsHash( $forOptions, $title = null ) {
                global $wgRenderHashAppend;
 
+               $options = $this->options;
+               $defaults = self::getCanonicalOverrides() + self::getDefaults();
+               $inCacheKey = self::$inCacheKey;
+
+               // Historical hack: 'editsection' hasn't been a true parser option since
+               // Feb 2015 (instead the parser outputs a constant placeholder and post-parse
+               // processing handles the option). But Wikibase forces it in $forOptions
+               // and expects the cache key to still vary on it for T85252.
+               // @todo Deprecate and remove this behavior after optionsHashPre30() is
+               //  removed (Wikibase can use addExtraKey() or something instead).
+               if ( in_array( 'editsection', $forOptions, true ) ) {
+                       $options['editsection'] = $this->mEditSection;
+                       $defaults['editsection'] = true;
+                       $inCacheKey['editsection'] = true;
+                       ksort( $inCacheKey );
+               }
+
+               // We only include used options with non-canonical values in the key
+               // so adding a new option doesn't invalidate the entire parser cache.
+               // The drawback to this is that changing the default value of an option
+               // requires manual invalidation of existing cache entries, as mentioned
+               // in the docs on the relevant methods and hooks.
+               $values = [];
+               foreach ( $inCacheKey as $option => $include ) {
+                       if ( $include && in_array( $option, $forOptions, true ) ) {
+                               $v = $this->optionToString( $options[$option] );
+                               $d = $this->optionToString( $defaults[$option] );
+                               if ( $v !== $d ) {
+                                       $values[] = "$option=$v";
+                               }
+                       }
+               }
+
+               $confstr = $values ? join( '!', $values ) : 'canonical';
+
+               // add in language specific options, if any
+               // @todo FIXME: This is just a way of retrieving the url/user preferred variant
+               if ( !is_null( $title ) ) {
+                       $confstr .= $title->getPageLanguage()->getExtraHashOptions();
+               } else {
+                       global $wgContLang;
+                       $confstr .= $wgContLang->getExtraHashOptions();
+               }
+
+               $confstr .= $wgRenderHashAppend;
+
+               if ( $this->mExtraKey != '' ) {
+                       $confstr .= $this->mExtraKey;
+               }
+
+               // Give a chance for extensions to modify the hash, if they have
+               // extra options or other effects on the parser cache.
+               Hooks::run( 'PageRenderingHash', [ &$confstr, $this->getUser(), &$forOptions ] );
+
+               // Make it a valid memcached key fragment
+               $confstr = str_replace( ' ', '_', $confstr );
+
+               return $confstr;
+       }
+
+       /**
+        * Generate the hash used before MediaWiki 1.30
+        * @since 1.30
+        * @deprecated since 1.30. Do not use this unless you're ParserCache.
+        * @param array $forOptions
+        * @param Title $title Used to get the content language of the page (since r97636)
+        * @return string Page rendering hash
+        */
+       public function optionsHashPre30( $forOptions, $title = null ) {
+               global $wgRenderHashAppend;
+
                // FIXME: Once the cache key is reorganized this argument
                // can be dropped. It was used when the math extension was
                // part of core.
@@ -863,7 +1341,7 @@ class ParserOptions {
                // since it disables the parser cache, its value will always
                // be 0 when this function is called by parsercache.
                if ( in_array( 'stubthreshold', $forOptions ) ) {
-                       $confstr .= '!' . $this->mStubThreshold;
+                       $confstr .= '!' . $this->options['stubthreshold'];
                } else {
                        $confstr .= '!*';
                }
@@ -873,19 +1351,19 @@ class ParserOptions {
                }
 
                if ( in_array( 'numberheadings', $forOptions ) ) {
-                       $confstr .= '!' . ( $this->mNumberHeadings ? '1' : '' );
+                       $confstr .= '!' . ( $this->options['numberheadings'] ? '1' : '' );
                } else {
                        $confstr .= '!*';
                }
 
                if ( in_array( 'userlang', $forOptions ) ) {
-                       $confstr .= '!' . $this->mUserLang->getCode();
+                       $confstr .= '!' . $this->options['userlang']->getCode();
                } else {
                        $confstr .= '!*';
                }
 
                if ( in_array( 'thumbsize', $forOptions ) ) {
-                       $confstr .= '!' . $this->mThumbSize;
+                       $confstr .= '!' . $this->options['thumbsize'];
                } else {
                        $confstr .= '!*';
                }
@@ -911,10 +1389,16 @@ class ParserOptions {
                        $confstr .= '!edit=0';
                }
 
-               if ( $this->mIsPrintable && in_array( 'printable', $forOptions ) ) {
+               if ( $this->options['printable'] && in_array( 'printable', $forOptions ) ) {
                        $confstr .= '!printable=1';
                }
 
+               if ( $this->options['wrapclass'] !== 'mw-parser-output' &&
+                       in_array( 'wrapclass', $forOptions )
+               ) {
+                       $confstr .= '!wrapclass=' . $this->options['wrapclass'];
+               }
+
                if ( $this->mExtraKey != '' ) {
                        $confstr .= $this->mExtraKey;
                }
@@ -929,6 +1413,25 @@ class ParserOptions {
                return $confstr;
        }
 
+       /**
+        * Test whether these options are safe to cache
+        * @since 1.30
+        * @return bool
+        */
+       public function isSafeToCache() {
+               $defaults = self::getCanonicalOverrides() + self::getDefaults();
+               foreach ( $this->options as $option => $value ) {
+                       if ( empty( self::$inCacheKey[$option] ) ) {
+                               $v = $this->optionToString( $value );
+                               $d = $this->optionToString( $defaults[$option] );
+                               if ( $v !== $d ) {
+                                       return false;
+                               }
+                       }
+               }
+               return true;
+       }
+
        /**
         * Sets a hook to force that a page exists, and sets a current revision callback to return
         * a revision with custom content when the current revision of the page is requested.
@@ -976,3 +1479,8 @@ class ParserOptions {
                } );
        }
 }
+
+/**
+ * For really cool vim folding this needs to be at the end:
+ * vim: foldmarker=@{,@} foldmethod=marker
+ */
index 7de3b30..10ac192 100644 (file)
@@ -708,7 +708,7 @@ class ParserOutput extends CacheTime {
         * @since 1.25
         */
        public function addTrackingCategory( $msg, $title ) {
-               if ( $title->getNamespace() === NS_SPECIAL ) {
+               if ( $title->isSpecialPage() ) {
                        wfDebug( __METHOD__ . ": Not adding tracking category $msg to special page!\n" );
                        return false;
                }
index 426b550..24474d5 100644 (file)
@@ -51,9 +51,9 @@ abstract class Preprocessor {
                ],
                '-{' => [
                        'end' => '}-',
-                       'names' => [ 1 => null ],
-                       'min' => 1,
-                       'max' => 1,
+                       'names' => [ 2 => null ],
+                       'min' => 2,
+                       'max' => 2,
                ],
        ];
 
@@ -72,12 +72,12 @@ abstract class Preprocessor {
                        return false;
                }
 
-               $key = wfMemcKey(
+               $cache = ObjectCache::getLocalClusterInstance();
+               $key = $cache->makeKey(
                        defined( 'static::CACHE_PREFIX' ) ? static::CACHE_PREFIX : static::class,
                        md5( $text ), $flags );
                $value = sprintf( "%08d", static::CACHE_VERSION ) . $tree;
 
-               $cache = ObjectCache::getInstance( $config->get( 'MainCacheType' ) );
                $cache->set( $key, $value, 86400 );
 
                LoggerFactory::getInstance( 'Preprocessor' )
@@ -101,9 +101,9 @@ abstract class Preprocessor {
                        return false;
                }
 
-               $cache = ObjectCache::getInstance( $config->get( 'MainCacheType' ) );
+               $cache = ObjectCache::getLocalClusterInstance();
 
-               $key = wfMemcKey(
+               $key = $cache->makeKey(
                        defined( 'static::CACHE_PREFIX' ) ? static::CACHE_PREFIX : static::class,
                        md5( $text ), $flags );
 
index b93c617..7539307 100644 (file)
@@ -223,8 +223,7 @@ class Preprocessor_DOM extends Preprocessor {
 
                $searchBase = "[{<\n"; # }
                if ( !$wgDisableLangConversion ) {
-                       // FIXME: disabled due to T153761
-                       // $searchBase .= '-';
+                       $searchBase .= '-';
                }
 
                // For fast reverse searches
@@ -277,6 +276,13 @@ class Preprocessor_DOM extends Preprocessor {
                                $search = $searchBase;
                                if ( $stack->top === false ) {
                                        $currentClosing = '';
+                               } elseif (
+                                       $stack->top->close === '}-' &&
+                                       $stack->top->count > 2
+                               ) {
+                                       # adjust closing for -{{{...{{
+                                       $currentClosing = '}';
+                                       $search .= $currentClosing;
                                } else {
                                        $currentClosing = $stack->top->close;
                                        $search .= $currentClosing;
@@ -333,11 +339,15 @@ class Preprocessor_DOM extends Preprocessor {
                                        } elseif ( isset( $this->rules[$curChar] ) ) {
                                                $found = 'open';
                                                $rule = $this->rules[$curChar];
-                                       } elseif ( $curChar == '-' ) {
-                                               $found = 'dash';
                                        } else {
-                                               # Some versions of PHP have a strcspn which stops on null characters
-                                               # Ignore and continue
+                                               # Some versions of PHP have a strcspn which stops on
+                                               # null characters; ignore these and continue.
+                                               # We also may get '-' and '}' characters here which
+                                               # don't match -{ or $currentClosing.  Add these to
+                                               # output and continue.
+                                               if ( $curChar == '-' || $curChar == '}' ) {
+                                                       $accum .= $curChar;
+                                               }
                                                ++$i;
                                                continue;
                                        }
@@ -615,7 +625,10 @@ class Preprocessor_DOM extends Preprocessor {
                        } elseif ( $found == 'open' ) {
                                # count opening brace characters
                                $curLen = strlen( $curChar );
-                               $count = ( $curLen > 1 ) ? 1 : strspn( $text, $curChar, $i );
+                               $count = ( $curLen > 1 ) ?
+                                       # allow the final character to repeat
+                                       strspn( $text, $curChar[$curLen-1], $i+1 ) + 1 :
+                                       strspn( $text, $curChar, $i );
 
                                # we need to add to stack only if opening brace count is enough for one of the rules
                                if ( $count >= $rule['min'] ) {
@@ -635,17 +648,25 @@ class Preprocessor_DOM extends Preprocessor {
                                        # Add literal brace(s)
                                        $accum .= htmlspecialchars( str_repeat( $curChar, $count ) );
                                }
-                               $i += $curLen * $count;
+                               $i += $count;
                        } elseif ( $found == 'close' ) {
                                $piece = $stack->top;
                                # lets check if there are enough characters for closing brace
                                $maxCount = $piece->count;
+                               if ( $piece->close === '}-' && $curChar === '}' ) {
+                                       $maxCount--; # don't try to match closing '-' as a '}'
+                               }
                                $curLen = strlen( $curChar );
-                               $count = ( $curLen > 1 ) ? 1 : strspn( $text, $curChar, $i, $maxCount );
+                               $count = ( $curLen > 1 ) ? $curLen :
+                                       strspn( $text, $curChar, $i, $maxCount );
 
                                # check for maximum matching characters (if there are 5 closing
                                # characters, we will probably need only 3 - depending on the rules)
                                $rule = $this->rules[$piece->open];
+                               if ( $piece->close === '}-' && $piece->count > 2 ) {
+                                       # tweak for -{..{{ }}..}-
+                                       $rule = $this->rules['{'];
+                               }
                                if ( $count > $rule['max'] ) {
                                        # The specified maximum exists in the callback array, unless the caller
                                        # has made an error
@@ -663,14 +684,16 @@ class Preprocessor_DOM extends Preprocessor {
                                if ( $matchingCount <= 0 ) {
                                        # No matching element found in callback array
                                        # Output a literal closing brace and continue
-                                       $accum .= htmlspecialchars( str_repeat( $curChar, $count ) );
-                                       $i += $curLen * $count;
+                                       $endText = substr( $text, $i, $count );
+                                       $accum .= htmlspecialchars( $endText );
+                                       $i += $count;
                                        continue;
                                }
                                $name = $rule['names'][$matchingCount];
                                if ( $name === null ) {
                                        // No element, just literal text
-                                       $element = $piece->breakSyntax( $matchingCount ) . str_repeat( $rule['end'], $matchingCount );
+                                       $endText = substr( $text, $i, $matchingCount );
+                                       $element = $piece->breakSyntax( $matchingCount ) . $endText;
                                } else {
                                        # Create XML element
                                        # Note: $parts is already XML, does not need to be encoded further
@@ -703,7 +726,7 @@ class Preprocessor_DOM extends Preprocessor {
                                }
 
                                # Advance input pointer
-                               $i += $curLen * $matchingCount;
+                               $i += $matchingCount;
 
                                # Unwind the stack
                                $stack->pop();
@@ -719,7 +742,12 @@ class Preprocessor_DOM extends Preprocessor {
                                                $stack->push( $piece );
                                                $accum =& $stack->getAccum();
                                        } else {
-                                               $accum .= str_repeat( $piece->open, $piece->count );
+                                               $s = substr( $piece->open, 0, -1 );
+                                               $s .= str_repeat(
+                                                       substr( $piece->open, -1 ),
+                                                       $piece->count - strlen( $s )
+                                               );
+                                               $accum .= $s;
                                        }
                                }
                                $flags = $stack->getFlags();
@@ -924,7 +952,11 @@ class PPDStackElement {
                        if ( $openingCount === false ) {
                                $openingCount = $this->count;
                        }
-                       $s = str_repeat( $this->open, $openingCount );
+                       $s = substr( $this->open, 0, -1 );
+                       $s .= str_repeat(
+                               substr( $this->open, -1 ),
+                               $openingCount - strlen( $s )
+                       );
                        $first = true;
                        foreach ( $this->parts as $part ) {
                                if ( $first ) {
index b2e9531..597d1f2 100644 (file)
@@ -155,8 +155,7 @@ class Preprocessor_Hash extends Preprocessor {
 
                $searchBase = "[{<\n";
                if ( !$wgDisableLangConversion ) {
-                       // FIXME: disabled due to T153761
-                       // $searchBase .= '-';
+                       $searchBase .= '-';
                }
 
                // For fast reverse searches
@@ -208,6 +207,13 @@ class Preprocessor_Hash extends Preprocessor {
                                $search = $searchBase;
                                if ( $stack->top === false ) {
                                        $currentClosing = '';
+                               } elseif (
+                                       $stack->top->close === '}-' &&
+                                       $stack->top->count > 2
+                               ) {
+                                       # adjust closing for -{{{...{{
+                                       $currentClosing = '}';
+                                       $search .= $currentClosing;
                                } else {
                                        $currentClosing = $stack->top->close;
                                        $search .= $currentClosing;
@@ -264,11 +270,15 @@ class Preprocessor_Hash extends Preprocessor {
                                        } elseif ( isset( $this->rules[$curChar] ) ) {
                                                $found = 'open';
                                                $rule = $this->rules[$curChar];
-                                       } elseif ( $curChar == '-' ) {
-                                               $found = 'dash';
                                        } else {
-                                               # Some versions of PHP have a strcspn which stops on null characters
-                                               # Ignore and continue
+                                               # Some versions of PHP have a strcspn which stops on
+                                               # null characters; ignore these and continue.
+                                               # We also may get '-' and '}' characters here which
+                                               # don't match -{ or $currentClosing.  Add these to
+                                               # output and continue.
+                                               if ( $curChar == '-' || $curChar == '}' ) {
+                                                       self::addLiteral( $accum, $curChar );
+                                               }
                                                ++$i;
                                                continue;
                                        }
@@ -558,7 +568,10 @@ class Preprocessor_Hash extends Preprocessor {
                        } elseif ( $found == 'open' ) {
                                # count opening brace characters
                                $curLen = strlen( $curChar );
-                               $count = ( $curLen > 1 ) ? 1 : strspn( $text, $curChar, $i );
+                               $count = ( $curLen > 1 ) ?
+                                       # allow the final character to repeat
+                                       strspn( $text, $curChar[$curLen-1], $i+1 ) + 1 :
+                                       strspn( $text, $curChar, $i );
 
                                # we need to add to stack only if opening brace count is enough for one of the rules
                                if ( $count >= $rule['min'] ) {
@@ -577,17 +590,25 @@ class Preprocessor_Hash extends Preprocessor {
                                        # Add literal brace(s)
                                        self::addLiteral( $accum, str_repeat( $curChar, $count ) );
                                }
-                               $i += $curLen * $count;
+                               $i += $count;
                        } elseif ( $found == 'close' ) {
                                $piece = $stack->top;
                                # lets check if there are enough characters for closing brace
                                $maxCount = $piece->count;
+                               if ( $piece->close === '}-' && $curChar === '}' ) {
+                                       $maxCount--; # don't try to match closing '-' as a '}'
+                               }
                                $curLen = strlen( $curChar );
-                               $count = ( $curLen > 1 ) ? 1 : strspn( $text, $curChar, $i, $maxCount );
+                               $count = ( $curLen > 1 ) ? $curLen :
+                                       strspn( $text, $curChar, $i, $maxCount );
 
                                # check for maximum matching characters (if there are 5 closing
                                # characters, we will probably need only 3 - depending on the rules)
                                $rule = $this->rules[$piece->open];
+                               if ( $piece->close === '}-' && $piece->count > 2 ) {
+                                       # tweak for -{..{{ }}..}-
+                                       $rule = $this->rules['{'];
+                               }
                                if ( $count > $rule['max'] ) {
                                        # The specified maximum exists in the callback array, unless the caller
                                        # has made an error
@@ -605,15 +626,17 @@ class Preprocessor_Hash extends Preprocessor {
                                if ( $matchingCount <= 0 ) {
                                        # No matching element found in callback array
                                        # Output a literal closing brace and continue
-                                       self::addLiteral( $accum, str_repeat( $curChar, $count ) );
-                                       $i += $curLen * $count;
+                                       $endText = substr( $text, $i, $count );
+                                       self::addLiteral( $accum, $endText );
+                                       $i += $count;
                                        continue;
                                }
                                $name = $rule['names'][$matchingCount];
                                if ( $name === null ) {
                                        // No element, just literal text
+                                       $endText = substr( $text, $i, $matchingCount );
                                        $element = $piece->breakSyntax( $matchingCount );
-                                       self::addLiteral( $element, str_repeat( $rule['end'], $matchingCount ) );
+                                       self::addLiteral( $element, $endText );
                                } else {
                                        # Create XML element
                                        $parts = $piece->parts;
@@ -648,7 +671,7 @@ class Preprocessor_Hash extends Preprocessor {
                                }
 
                                # Advance input pointer
-                               $i += $curLen * $matchingCount;
+                               $i += $matchingCount;
 
                                # Unwind the stack
                                $stack->pop();
@@ -664,7 +687,12 @@ class Preprocessor_Hash extends Preprocessor {
                                                $stack->push( $piece );
                                                $accum =& $stack->getAccum();
                                        } else {
-                                               self::addLiteral( $accum, str_repeat( $piece->open, $piece->count ) );
+                                               $s = substr( $piece->open, 0, -1 );
+                                               $s .= str_repeat(
+                                                       substr( $piece->open, -1 ),
+                                                       $piece->count - strlen( $s )
+                                               );
+                                               self::addLiteral( $accum, $s );
                                        }
                                }
 
@@ -762,7 +790,12 @@ class PPDStackElement_Hash extends PPDStackElement {
                        if ( $openingCount === false ) {
                                $openingCount = $this->count;
                        }
-                       $accum = [ str_repeat( $this->open, $openingCount ) ];
+                       $s = substr( $this->open, 0, -1 );
+                       $s .= str_repeat(
+                               substr( $this->open, -1 ),
+                               $openingCount - strlen( $s )
+                       );
+                       $accum = [ $s ];
                        $lastIndex = 0;
                        $first = true;
                        foreach ( $this->parts as $part ) {
index 6ffada3..4a8831e 100644 (file)
@@ -41,12 +41,17 @@ class Pbkdf2Password extends ParameterizedPassword {
                return ':';
        }
 
+       protected function shouldUseHashExtension() {
+               return isset( $this->config['use-hash-extension'] ) ?
+                       $this->config['use-hash-extension'] : function_exists( 'hash_pbkdf2' );
+       }
+
        public function crypt( $password ) {
                if ( count( $this->args ) == 0 ) {
                        $this->args[] = base64_encode( MWCryptRand::generate( 16, true ) );
                }
 
-               if ( function_exists( 'hash_pbkdf2' ) ) {
+               if ( $this->shouldUseHashExtension() ) {
                        $hash = hash_pbkdf2(
                                $this->params['algo'],
                                $password,
index 264ec0c..2225e3f 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup Profiler
  */
 
+use Wikimedia\Rdbms\DBError;
+
 /**
  * Logs profiling data into the local DB
  *
index 1212f99..39a8a3d 100644 (file)
@@ -56,6 +56,16 @@ class ExtensionProcessor implements Processor {
                'ValidSkinNames',
        ];
 
+       /**
+        * Top-level attributes that come from MW core
+        *
+        * @var string[]
+        */
+       protected static $coreAttributes = [
+               'SkinOOUIThemes',
+               'TrackingCategories',
+       ];
+
        /**
         * Mapping of global settings to their specific merge strategies.
         *
@@ -160,6 +170,14 @@ class ExtensionProcessor implements Processor {
         */
        protected $attributes = [];
 
+       /**
+        * Extension attributes, keyed by name =>
+        *  settings.
+        *
+        * @var array
+        */
+       protected $extAttributes = [];
+
        /**
         * @param string $path
         * @param array $info
@@ -186,14 +204,47 @@ class ExtensionProcessor implements Processor {
                        $this->callbacks[$name] = $info['callback'];
                }
 
+               if ( $version === 2 ) {
+                       $this->extractAttributes( $path, $info );
+               }
+
                foreach ( $info as $key => $val ) {
+                       // If it's a global setting,
                        if ( in_array( $key, self::$globalSettings ) ) {
                                $this->storeToArray( $path, "wg$key", $val, $this->globals );
+                               continue;
+                       }
                        // Ignore anything that starts with a @
-                       } elseif ( $key[0] !== '@' && !in_array( $key, self::$notAttributes )
-                               && !in_array( $key, self::$creditsAttributes )
-                       ) {
-                               $this->storeToArray( $path, $key, $val, $this->attributes );
+                       if ( $key[0] === '@' ) {
+                               continue;
+                       }
+
+                       if ( $version === 2 ) {
+                               // Only whitelisted attributes are set
+                               if ( in_array( $key, self::$coreAttributes ) ) {
+                                       $this->storeToArray( $path, $key, $val, $this->attributes );
+                               }
+                       } else {
+                               // version === 1
+                               if ( !in_array( $key, self::$notAttributes )
+                                       && !in_array( $key, self::$creditsAttributes )
+                               ) {
+                                       // If it's not blacklisted, it's an attribute
+                                       $this->storeToArray( $path, $key, $val, $this->attributes );
+                               }
+                       }
+
+               }
+       }
+
+       /**
+        * @param string $path
+        * @param array $info
+        */
+       protected function extractAttributes( $path, array $info ) {
+               if ( isset( $info['attributes'] ) ) {
+                       foreach ( $info['attributes'] as $extName => $value ) {
+                               $this->storeToArray( $path, $extName, $value, $this->extAttributes );
                        }
                }
        }
@@ -206,6 +257,22 @@ class ExtensionProcessor implements Processor {
                        }
                }
 
+               // Merge $this->extAttributes into $this->attributes depending on what is loaded
+               foreach ( $this->extAttributes as $extName => $value ) {
+                       // Only set the attribute if $extName is loaded (and hence present in credits)
+                       if ( isset( $this->credits[$extName] ) ) {
+                               foreach ( $value as $attrName => $attrValue ) {
+                                       $this->storeToArray(
+                                               '', // Don't provide a path since it's impossible to generate an error here
+                                               $extName . $attrName,
+                                               $attrValue,
+                                               $this->attributes
+                                       );
+                               }
+                               unset( $this->extAttributes[$extName] );
+                       }
+               }
+
                return [
                        'globals' => $this->globals,
                        'defines' => $this->defines,
@@ -241,8 +308,15 @@ class ExtensionProcessor implements Processor {
        protected function extractNamespaces( array $info ) {
                if ( isset( $info['namespaces'] ) ) {
                        foreach ( $info['namespaces'] as $ns ) {
-                               $id = $ns['id'];
-                               $this->defines[$ns['constant']] = $id;
+                               if ( defined( $ns['constant'] ) ) {
+                                       // If the namespace constant is already defined, use it.
+                                       // This allows namespace IDs to be overwritten locally.
+                                       $id = constant( $ns['constant'] );
+                               } else {
+                                       $id = $ns['id'];
+                                       $this->defines[ $ns['constant'] ] = $id;
+                               }
+
                                if ( !( isset( $ns['conditional'] ) && $ns['conditional'] ) ) {
                                        // If it is not conditional, register it
                                        $this->attributes['ExtensionNamespaces'][$id] = $ns['name'];
index 344dd8f..0c5a67e 100644 (file)
@@ -31,7 +31,7 @@ class ExtensionRegistry {
        /**
         * Bump whenever the registration cache needs resetting
         */
-       const CACHE_VERSION = 5;
+       const CACHE_VERSION = 6;
 
        /**
         * Special key that defines the merge strategy
@@ -111,7 +111,7 @@ class ExtensionRegistry {
         *  be loaded then).
         */
        public function loadFromQueue() {
-               global $wgVersion;
+               global $wgVersion, $wgDevelopmentWarnings;
                if ( !$this->queued ) {
                        return;
                }
@@ -137,7 +137,7 @@ class ExtensionRegistry {
                        $cache = new EmptyBagOStuff();
                }
                // See if this queue is in APC
-               $key = wfMemcKey(
+               $key = $cache->makeKey(
                        'registration',
                        md5( json_encode( $this->queued + $versions ) )
                );
@@ -151,7 +151,10 @@ class ExtensionRegistry {
                        // did that, but it should be cached
                        $data['globals']['wgAutoloadClasses'] += $data['autoload'];
                        unset( $data['autoload'] );
-                       $cache->set( $key, $data, 60 * 60 * 24 );
+                       if ( !( $data['warnings'] && $wgDevelopmentWarnings ) ) {
+                               // If there were no warnings that were shown, cache it
+                               $cache->set( $key, $data, 60 * 60 * 24 );
+                       }
                }
                $this->queued = [];
        }
@@ -198,6 +201,7 @@ class ExtensionRegistry {
                $versionChecker = new VersionChecker( $wgVersion );
                $extDependencies = [];
                $incompatible = [];
+               $warnings = false;
                foreach ( $queue as $path => $mtime ) {
                        $json = file_get_contents( $path );
                        if ( $json === false ) {
@@ -209,6 +213,11 @@ class ExtensionRegistry {
                        }
 
                        if ( !isset( $info['manifest_version'] ) ) {
+                               wfDeprecated(
+                                       "{$info['name']}'s extension.json or skin.json does not have manifest_version",
+                                       '1.29'
+                               );
+                               $warnings = true;
                                // For backwards-compatability, assume a version of 1
                                $info['manifest_version'] = 1;
                        }
@@ -237,6 +246,7 @@ class ExtensionRegistry {
                        $processor->extractInfo( $path, $info, $version );
                }
                $data = $processor->getExtractedInfo();
+               $data['warnings'] = $warnings;
 
                // check for incompatible extensions
                $incompatible = array_merge(
index e72eaf2..c11fe5b 100644 (file)
@@ -27,6 +27,7 @@ use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerInterface;
 use Psr\Log\NullLogger;
 use WrappedString\WrappedString;
+use Wikimedia\Rdbms\DBConnectionError;
 
 /**
  * Dynamic JavaScript and CSS resource loading system.
@@ -252,7 +253,6 @@ class ResourceLoader implements LoggerAwareInterface {
 
                // Register core modules
                $this->register( include "$IP/resources/Resources.php" );
-               $this->register( include "$IP/resources/ResourcesOOUI.php" );
                // Register extension modules
                $this->register( $config->get( 'ResourceModules' ) );
 
@@ -540,6 +540,10 @@ class ResourceLoader implements LoggerAwareInterface {
                        if ( isset( $info['object'] ) ) {
                                // Object given in info array
                                $object = $info['object'];
+                       } elseif ( isset( $info['factory'] ) ) {
+                               $object = call_user_func( $info['factory'], $info );
+                               $object->setConfig( $this->getConfig() );
+                               $object->setLogger( $this->logger );
                        } else {
                                if ( !isset( $info['class'] ) ) {
                                        $class = 'ResourceLoaderFileModule';
@@ -559,7 +563,8 @@ class ResourceLoader implements LoggerAwareInterface {
        }
 
        /**
-        * Return whether the definition of a module corresponds to a simple ResourceLoaderFileModule.
+        * Return whether the definition of a module corresponds to a simple ResourceLoaderFileModule
+        * or one of its subclasses.
         *
         * @param string $name Module name
         * @return bool
@@ -569,7 +574,14 @@ class ResourceLoader implements LoggerAwareInterface {
                        return false;
                }
                $info = $this->moduleInfos[$name];
-               if ( isset( $info['object'] ) || isset( $info['class'] ) ) {
+               if ( isset( $info['object'] ) ) {
+                       return false;
+               }
+               if (
+                       isset( $info['class'] ) &&
+                       $info['class'] !== 'ResourceLoaderFileModule' &&
+                       !is_subclass_of( $info['class'], 'ResourceLoaderFileModule' )
+               ) {
                        return false;
                }
                return true;
@@ -1161,7 +1173,7 @@ MESSAGE;
         * @param array $templates Keys are name of templates and values are the source of
         *   the template.
         * @throws MWException
-        * @return string
+        * @return string JavaScript code
         */
        protected static function makeLoaderImplementScript(
                $name, $scripts, $styles, $messages, $templates
@@ -1191,7 +1203,7 @@ MESSAGE;
         *
         * @param mixed $messages Either an associative array mapping message key to value, or a
         *   JSON-encoded message blob containing the same data, wrapped in an XmlJsCode object.
-        * @return string
+        * @return string JavaScript code
         */
        public static function makeMessageSetScript( $messages ) {
                return Xml::encodeJsCall(
@@ -1247,7 +1259,7 @@ MESSAGE;
         *
         * @param string $name
         * @param string $state
-        * @return string
+        * @return string JavaScript code
         */
        public static function makeLoaderStateScript( $name, $state = null ) {
                if ( is_array( $name ) ) {
@@ -1277,7 +1289,7 @@ MESSAGE;
         * @param string $group Group which the module is in.
         * @param string $source Source of the module, or 'local' if not foreign.
         * @param string $script JavaScript code
-        * @return string
+        * @return string JavaScript code
         */
        public static function makeCustomLoaderScript( $name, $version, $dependencies,
                $group, $source, $script
@@ -1349,7 +1361,7 @@ MESSAGE;
         * @param string $group Group which the module is in
         * @param string $source Source of the module, or 'local' if not foreign
         * @param string $skip Script body of the skip function
-        * @return string
+        * @return string JavaScript code
         */
        public static function makeLoaderRegisterScript( $name, $version = null,
                $dependencies = null, $group = null, $source = null, $skip = null
@@ -1403,7 +1415,7 @@ MESSAGE;
         *
         * @param string $id Source ID
         * @param string $loadUrl load.php url
-        * @return string
+        * @return string JavaScript code
         */
        public static function makeLoaderSourcesScript( $id, $loadUrl = null ) {
                if ( is_array( $id ) ) {
@@ -1427,7 +1439,7 @@ MESSAGE;
         *
         * @deprecated since 1.25; use makeInlineScript instead
         * @param string $script JavaScript code
-        * @return string
+        * @return string JavaScript code
         */
        public static function makeLoaderConditionalScript( $script ) {
                return '(window.RLQ=window.RLQ||[]).push(function(){' .
@@ -1457,7 +1469,7 @@ MESSAGE;
         * the given value.
         *
         * @param array $configuration List of configuration values keyed by variable name
-        * @return string
+        * @return string JavaScript code
         */
        public static function makeConfigSetScript( array $configuration ) {
                return Xml::encodeJsCall(
index 8c792ad..b8f2fa5 100644 (file)
@@ -170,7 +170,7 @@ class ResourceLoaderClientHtml {
 
                        if ( $module->getType() !== ResourceLoaderModule::LOAD_STYLES ) {
                                $logger = $rl->getLogger();
-                               $logger->debug( 'Unexpected general module "{module}" in styles queue.', [
+                               $logger->warning( 'Unexpected general module "{module}" in styles queue.', [
                                        'module' => $name,
                                ] );
                        } else {
index 8955b8c..f99114e 100644 (file)
@@ -29,7 +29,7 @@ use MediaWiki\MediaWikiServices;
  * Object passed around to modules which contains information about the state
  * of a specific loader request.
  */
-class ResourceLoaderContext {
+class ResourceLoaderContext implements MessageLocalizer {
        protected $resourceLoader;
        protected $request;
        protected $logger;
@@ -222,10 +222,12 @@ class ResourceLoaderContext {
         * Get a Message object with context set.  See wfMessage for parameters.
         *
         * @since 1.27
+        * @param string|string[]|MessageSpecifier $key Message key, or array of keys,
+        *   or a MessageSpecifier.
         * @param mixed ...
         * @return Message
         */
-       public function msg() {
+       public function msg( $key ) {
                return call_user_func_array( 'wfMessage', func_get_args() )
                        ->inLanguage( $this->getLanguage() )
                        // Use a dummy title because there is no real title
index 5404e0f..3ad6a84 100644 (file)
@@ -931,36 +931,33 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface {
         * @return string JS with the original, or a replacement error
         */
        protected function validateScriptFile( $fileName, $contents ) {
-               if ( $this->getConfig()->get( 'ResourceLoaderValidateJS' ) ) {
-                       // Try for cache hit
-                       $cache = ObjectCache::getMainWANInstance();
-                       $key = $cache->makeKey(
+               if ( !$this->getConfig()->get( 'ResourceLoaderValidateJS' ) ) {
+                       return $contents;
+               }
+               $cache = ObjectCache::getMainWANInstance();
+               return $cache->getWithSetCallback(
+                       $cache->makeGlobalKey(
                                'resourceloader',
                                'jsparse',
                                self::$parseCacheVersion,
-                               md5( $contents )
-                       );
-                       $cacheEntry = $cache->get( $key );
-                       if ( is_string( $cacheEntry ) ) {
-                               return $cacheEntry;
-                       }
-
-                       $parser = self::javaScriptParser();
-                       try {
-                               $parser->parse( $contents, $fileName, 1 );
-                               $result = $contents;
-                       } catch ( Exception $e ) {
-                               // We'll save this to cache to avoid having to validate broken JS over and over...
-                               $err = $e->getMessage();
-                               $result = "mw.log.error(" .
-                                       Xml::encodeJsVar( "JavaScript parse error: $err" ) . ");";
+                               md5( $contents ),
+                               $fileName
+                       ),
+                       $cache::TTL_WEEK,
+                       function () use ( $contents, $fileName ) {
+                               $parser = self::javaScriptParser();
+                               try {
+                                       $parser->parse( $contents, $fileName, 1 );
+                                       $result = $contents;
+                               } catch ( Exception $e ) {
+                                       // We'll save this to cache to avoid having to re-validate broken JS
+                                       $err = $e->getMessage();
+                                       $result = "mw.log.error(" .
+                                               Xml::encodeJsVar( "JavaScript parse error: $err" ) . ");";
+                               }
+                               return $result;
                        }
-
-                       $cache->set( $key, $result );
-                       return $result;
-               } else {
-                       return $contents;
-               }
+               );
        }
 
        /**
diff --git a/includes/resourceloader/ResourceLoaderOOUIFileModule.php b/includes/resourceloader/ResourceLoaderOOUIFileModule.php
new file mode 100644 (file)
index 0000000..e97e074
--- /dev/null
@@ -0,0 +1,98 @@
+<?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
+ */
+
+/**
+ * ResourceLoaderFileModule which magically loads the right skinScripts and skinStyles for every
+ * skin, using the specified OOUI theme for each.
+ *
+ * @since 1.30
+ */
+class ResourceLoaderOOUIFileModule extends ResourceLoaderFileModule {
+       use ResourceLoaderOOUIModule;
+
+       public function __construct( $options = [] ) {
+               if ( isset( $options[ 'themeScripts' ] ) ) {
+                       $skinScripts = $this->getSkinSpecific( $options[ 'themeScripts' ], 'scripts' );
+                       if ( !isset( $options['skinScripts'] ) ) {
+                               $options['skinScripts'] = [];
+                       }
+                       $this->extendSkinSpecific( $options['skinScripts'], $skinScripts );
+               }
+               if ( isset( $options[ 'themeStyles' ] ) ) {
+                       $skinStyles = $this->getSkinSpecific( $options[ 'themeStyles' ], 'styles' );
+                       if ( !isset( $options['skinStyles'] ) ) {
+                               $options['skinStyles'] = [];
+                       }
+                       $this->extendSkinSpecific( $options['skinStyles'], $skinStyles );
+               }
+
+               parent::__construct( $options );
+       }
+
+       /**
+        * Helper function to generate values for 'skinStyles' and 'skinScripts'.
+        *
+        * @param string $module Module to generate skinStyles/skinScripts for:
+        *   'core', 'widgets', 'toolbars', 'windows'
+        * @param string $which 'scripts' or 'styles'
+        * @return array
+        */
+       private function getSkinSpecific( $module, $which ) {
+               $themes = self::getSkinThemeMap();
+
+               return array_combine(
+                       array_keys( $themes ),
+                       array_map( function ( $theme ) use ( $module, $which ) {
+                               if ( $which === 'scripts' ) {
+                                       return $this->getThemeScriptsPath( $theme, $module );
+                               } else {
+                                       return $this->getThemeStylesPath( $theme, $module );
+                               }
+                       }, array_values( $themes ) )
+               );
+       }
+
+       /**
+        * Prepend the $extraSkinSpecific assoc. array to the $skinSpecific assoc. array.
+        * Both of them represent a 'skinScripts' or 'skinStyles' definition.
+        *
+        * @param array &$skinSpecific
+        * @param array $extraSkinSpecific
+        */
+       private function extendSkinSpecific( &$skinSpecific, $extraSkinSpecific ) {
+               // For each skin where skinStyles/skinScripts are defined, add our ones at the beginning
+               foreach ( $skinSpecific as $skin => $files ) {
+                       if ( !is_array( $files ) ) {
+                               $files = [ $files ];
+                       }
+                       if ( isset( $extraSkinSpecific[$skin] ) ) {
+                               $skinSpecific[$skin] = array_merge( [ $extraSkinSpecific[$skin] ], $files );
+                       } elseif ( isset( $extraSkinSpecific['default'] ) ) {
+                               $skinSpecific[$skin] = array_merge( [ $extraSkinSpecific['default'] ], $files );
+                       }
+               }
+               // Add our remaining skinStyles/skinScripts for skins that did not have them defined
+               foreach ( $extraSkinSpecific as $skin => $file ) {
+                       if ( !isset( $skinSpecific[$skin] ) ) {
+                               $skinSpecific[$skin] = $file;
+                       }
+               }
+       }
+}
index 14e5c26..ee87d8d 100644 (file)
  * @since 1.26
  */
 class ResourceLoaderOOUIImageModule extends ResourceLoaderImageModule {
+       use ResourceLoaderOOUIModule;
+
        protected function loadFromDefinition() {
                if ( $this->definition === null ) {
                        // Do nothing if definition was already processed
                        return;
                }
 
-               // Core default themes
-               $themes = [ 'default' => 'mediawiki' ];
-               $themes += ExtensionRegistry::getInstance()->getAttribute( 'SkinOOUIThemes' );
+               $themes = self::getSkinThemeMap();
 
-               $name = $this->definition['name'];
-               $rootPath = $this->definition['rootPath'];
+               // For backwards-compatibility, allow missing 'themeImages'
+               $module = isset( $this->definition['themeImages'] ) ? $this->definition['themeImages'] : '';
 
                $definition = [];
                foreach ( $themes as $skin => $theme ) {
                        // Find the path to the JSON file which contains the actual image definitions for this theme
-                       // TODO Allow extensions to specify this path somehow
-                       $dataPath = $rootPath . '/' . strtolower( $theme ) . '/' . $name . '.json';
+                       if ( $module ) {
+                               $dataPath = $this->getThemeImagesPath( $theme, $module );
+                       } else {
+                               // Backwards-compatibility for things that probably shouldn't have used this class...
+                               $dataPath =
+                                       $this->definition['rootPath'] . '/' .
+                                       strtolower( $theme ) . '/' .
+                                       $this->definition['name'] . '.json';
+                       }
                        $localDataPath = $this->localBasePath . '/' . $dataPath;
 
                        // If there's no file for this module of this theme, that's okay, it will just use the defaults
@@ -79,7 +86,7 @@ class ResourceLoaderOOUIImageModule extends ResourceLoaderImageModule {
                                                } elseif ( $definition[$key] !== $data[$key] ) {
                                                        throw new Exception(
                                                                "Mismatched OOUI theme images definition: " .
-                                                                       "key '$key' of theme '$theme' " .
+                                                                       "key '$key' of theme '$theme' for module '$module' " .
                                                                        "does not match other themes"
                                                        );
                                                }
@@ -88,6 +95,16 @@ class ResourceLoaderOOUIImageModule extends ResourceLoaderImageModule {
                        }
                }
 
+               // Extra selectors to allow using the same icons for old-style MediaWiki UI code
+               if ( substr( $module, 0, 5 ) === 'icons' ) {
+                       $definition['selectorWithoutVariant'] = '.oo-ui-icon-{name}, .mw-ui-icon-{name}:before';
+                       $definition['selectorWithVariant'] = '
+                               .oo-ui-image-{variant}.oo-ui-icon-{name}, .mw-ui-icon-{name}-{variant}:before,
+                               /* Hack for Flow, see T110051 */
+                               .mw-ui-hovericon:hover .mw-ui-icon-{name}-{variant}-hover:before,
+                               .mw-ui-hovericon.mw-ui-icon-{name}-{variant}-hover:hover:before';
+               }
+
                // Fields from module definition silently override keys from JSON files
                $this->definition += $definition;
 
diff --git a/includes/resourceloader/ResourceLoaderOOUIModule.php b/includes/resourceloader/ResourceLoaderOOUIModule.php
new file mode 100644 (file)
index 0000000..4228a45
--- /dev/null
@@ -0,0 +1,146 @@
+<?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
+ */
+
+/**
+ * Convenience methods for dealing with OOUI themes and their relations to MW skins.
+ *
+ * @since 1.30
+ */
+trait ResourceLoaderOOUIModule {
+       protected static $knownScriptsModules = [ 'core' ];
+       protected static $knownStylesModules = [ 'core', 'widgets', 'toolbars', 'windows' ];
+       protected static $knownImagesModules = [
+               'indicators', 'textures',
+               // Extra icons
+               'icons-accessibility',
+               'icons-alerts',
+               'icons-content',
+               'icons-editing-advanced',
+               'icons-editing-core',
+               'icons-editing-list',
+               'icons-editing-styling',
+               'icons-interactions',
+               'icons-layout',
+               'icons-location',
+               'icons-media',
+               'icons-moderation',
+               'icons-movement',
+               'icons-user',
+               'icons-wikimedia',
+       ];
+
+       // Note that keys must be lowercase, values TitleCase.
+       protected static $builtinSkinThemeMap = [
+               'default' => 'WikimediaUI',
+       ];
+
+       // Note that keys must be TitleCase.
+       protected static $builtinThemePaths = [
+               'WikimediaUI' => [
+                       'scripts' => 'resources/lib/oojs-ui/oojs-ui-wikimediaui.js',
+                       'styles' => 'resources/lib/oojs-ui/oojs-ui-{module}-wikimediaui.css',
+                       'images' => 'resources/lib/oojs-ui/themes/wikimediaui/{module}.json',
+               ],
+               'Apex' => [
+                       'scripts' => 'resources/lib/oojs-ui/oojs-ui-apex.js',
+                       'styles' => 'resources/lib/oojs-ui/oojs-ui-{module}-apex.css',
+                       'images' => 'resources/lib/oojs-ui/themes/apex/{module}.json',
+               ],
+       ];
+
+       /**
+        * Return a map of skin names (in lowercase) to OOUI theme names, defining which theme a given
+        * skin should use.
+        *
+        * @return array
+        */
+       public static function getSkinThemeMap() {
+               $themeMap = self::$builtinSkinThemeMap;
+               $themeMap += ExtensionRegistry::getInstance()->getAttribute( 'SkinOOUIThemes' );
+               return $themeMap;
+       }
+
+       /**
+        * Return a map of theme names to lists of paths from which a given theme should be loaded.
+        *
+        * Keys are theme names, values are associative arrays. Keys of the inner array are 'scripts',
+        * 'styles', or 'images', and values are string paths.
+        *
+        * Additionally, the string '{module}' in paths represents the name of the module to load.
+        *
+        * @return array
+        */
+       protected static function getThemePaths() {
+               $themePaths = self::$builtinThemePaths;
+               return $themePaths;
+       }
+
+       /**
+        * Return a path to load given module of given theme from.
+        *
+        * @param string $theme OOUI theme name, for example 'WikimediaUI' or 'Apex'
+        * @param string $kind Kind of the module: 'scripts', 'styles', or 'images'
+        * @param string $module Module name, for valid values see $knownScriptsModules,
+        *     $knownStylesModules, $knownImagesModules
+        * @return string
+        */
+       protected function getThemePath( $theme, $kind, $module ) {
+               $paths = self::getThemePaths();
+               $path = $paths[ $theme ][ $kind ];
+               $path = str_replace( '{module}', $module, $path );
+               return $path;
+       }
+
+       /**
+        * @param string $theme See getThemePath()
+        * @param string $module See getThemePath()
+        * @return string
+        */
+       protected function getThemeScriptsPath( $theme, $module ) {
+               if ( !in_array( $module, self::$knownScriptsModules ) ) {
+                       throw new InvalidArgumentException( "Invalid OOUI scripts module '$module'" );
+               }
+               return $this->getThemePath( $theme, 'scripts', $module );
+       }
+
+       /**
+        * @param string $theme See getThemePath()
+        * @param string $module See getThemePath()
+        * @return string
+        */
+       protected function getThemeStylesPath( $theme, $module ) {
+               if ( !in_array( $module, self::$knownStylesModules ) ) {
+                       throw new InvalidArgumentException( "Invalid OOUI styles module '$module'" );
+               }
+               return $this->getThemePath( $theme, 'styles', $module );
+       }
+
+       /**
+        * @param string $theme See getThemePath()
+        * @param string $module See getThemePath()
+        * @return string
+        */
+       protected function getThemeImagesPath( $theme, $module ) {
+               if ( !in_array( $module, self::$knownImagesModules ) ) {
+                       throw new InvalidArgumentException( "Invalid OOUI images module '$module'" );
+               }
+               return $this->getThemePath( $theme, 'images', $module );
+       }
+}
index 62bafe9..9beafc9 100644 (file)
@@ -19,8 +19,6 @@
  * @ingroup RevisionDelete
  */
 
-use Wikimedia\Rdbms\IDatabase;
-
 /**
  * Item class for an oldimage table row
  */
index 6bb4e5a..4473bb2 100644 (file)
@@ -455,8 +455,8 @@ abstract class SearchEngine {
                        $title = Title::newFromText( $search . 'Dummy' );
                        if ( $title && $title->getText() == 'Dummy'
                                        && $title->getNamespace() != NS_MAIN
-                                       && !$title->isExternal() )
-                       {
+                                       && !$title->isExternal()
+                       {
                                $ns = [ $title->getNamespace() ];
                                $search = '';
                        } else {
index bad0ef9..633cfc9 100644 (file)
@@ -303,7 +303,7 @@ class ServiceContainer implements DestructibleService {
 
                $instance = $this->peekService( $name );
 
-               if ( $destroy && $instance instanceof DestructibleService )  {
+               if ( $destroy && $instance instanceof DestructibleService ) {
                        $instance->destroy();
                }
 
index 8633715..d37b73b 100644 (file)
@@ -132,7 +132,7 @@ final class SessionBackend {
                $this->forceHTTPS = $info->forceHTTPS();
                $this->providerMetadata = $info->getProviderMetadata();
 
-               $blob = $store->get( wfMemcKey( 'MWSession', (string)$this->id ) );
+               $blob = $store->get( $store->makeKey( 'MWSession', (string)$this->id ) );
                if ( !is_array( $blob ) ||
                        !isset( $blob['metadata'] ) || !is_array( $blob['metadata'] ) ||
                        !isset( $blob['data'] ) || !is_array( $blob['data'] )
@@ -249,7 +249,7 @@ final class SessionBackend {
                        $this->autosave();
 
                        // Delete the data for the old session ID now
-                       $this->store->delete( wfMemcKey( 'MWSession', $oldId ) );
+                       $this->store->delete( $this->store->makeKey( 'MWSession', $oldId ) );
                }
        }
 
@@ -317,7 +317,7 @@ final class SessionBackend {
 
                        // Delete the session data, so the local cache-only write in
                        // self::save() doesn't get things out of sync with the backend.
-                       $this->store->delete( wfMemcKey( 'MWSession', (string)$this->id ) );
+                       $this->store->delete( $this->store->makeKey( 'MWSession', (string)$this->id ) );
 
                        $this->autosave();
                }
@@ -729,7 +729,7 @@ final class SessionBackend {
                $flags = $this->persist ? 0 : CachedBagOStuff::WRITE_CACHE_ONLY;
                $flags |= CachedBagOStuff::WRITE_SYNC; // write to all datacenters
                $this->store->set(
-                       wfMemcKey( 'MWSession', (string)$this->id ),
+                       $this->store->makeKey( 'MWSession', (string)$this->id ),
                        [
                                'data' => $this->data,
                                'metadata' => $metadata,
index 7cc8509..40a568f 100644 (file)
@@ -214,7 +214,7 @@ final class SessionManager implements SessionManagerInterface {
                }
 
                // Test if the session is in storage, and if so try to load it.
-               $key = wfMemcKey( 'MWSession', $id );
+               $key = $this->store->makeKey( 'MWSession', $id );
                if ( is_array( $this->store->get( $key ) ) ) {
                        $create = false; // If loading fails, don't bother creating because it probably will fail too.
                        if ( $this->loadSessionInfoFromStore( $info, $request ) ) {
@@ -255,7 +255,7 @@ final class SessionManager implements SessionManagerInterface {
                                throw new \InvalidArgumentException( 'Invalid session ID' );
                        }
 
-                       $key = wfMemcKey( 'MWSession', $id );
+                       $key = $this->store->makeKey( 'MWSession', $id );
                        if ( is_array( $this->store->get( $key ) ) ) {
                                throw new \InvalidArgumentException( 'Session ID already exists' );
                        }
@@ -545,7 +545,7 @@ final class SessionManager implements SessionManagerInterface {
         * @return bool Whether the session info matches the stored data (if any)
         */
        private function loadSessionInfoFromStore( SessionInfo &$info, WebRequest $request ) {
-               $key = wfMemcKey( 'MWSession', $info->getId() );
+               $key = $this->store->makeKey( 'MWSession', $info->getId() );
                $blob = $this->store->get( $key );
 
                // If we got data from the store and the SessionInfo says to force use,
@@ -934,7 +934,7 @@ final class SessionManager implements SessionManagerInterface {
        public function generateSessionId() {
                do {
                        $id = \Wikimedia\base_convert( \MWCryptRand::generateHex( 40 ), 16, 32, 32 );
-                       $key = wfMemcKey( 'MWSession', $id );
+                       $key = $this->store->makeKey( 'MWSession', $id );
                } while ( isset( $this->allSessionIds[$id] ) || is_array( $this->store->get( $key ) ) );
                return $id;
        }
index a2f43f3..f3cd1e8 100644 (file)
@@ -90,7 +90,7 @@ class CachingSiteStore implements SiteStore {
        private function getCacheKey() {
                if ( $this->cacheKey === null ) {
                        $type = 'SiteList#' . SiteList::getSerialVersionId();
-                       $this->cacheKey = wfMemcKey( "sites/$type" );
+                       $this->cacheKey = $this->cache->makeKey( "sites/$type" );
                }
 
                return $this->cacheKey;
index 5868904..0b7fc2f 100644 (file)
@@ -523,7 +523,6 @@ abstract class BaseTemplate extends QuickTemplate {
                        'type' => 'search',
                        'name' => 'search',
                        'placeholder' => wfMessage( 'searchsuggest-search' )->text(),
-                       'value' => $this->get( 'search', '' ),
                ];
                $realAttrs = array_merge( $realAttrs, Linker::tooltipAndAccesskeyAttribs( 'search' ), $attrs );
                return Html::element( 'input', $realAttrs );
index 99658f2..e9d2f07 100644 (file)
@@ -158,8 +158,17 @@ abstract class Skin extends ContextSource {
                global $wgUseAjax, $wgEnableAPI, $wgEnableWriteAPI;
 
                $out = $this->getOutput();
+               $config = $this->getConfig();
                $user = $out->getUser();
                $modules = [
+                       // modules not specific to any specific skin or page
+                       'core' => [
+                               // Enforce various default modules for all pages and all skins
+                               // Keep this list as small as possible
+                               'site',
+                               'mediawiki.page.startup',
+                               'mediawiki.user',
+                       ],
                        // modules that enhance the page content in some way
                        'content' => [
                                'mediawiki.page.ready',
@@ -172,6 +181,11 @@ abstract class Skin extends ContextSource {
                        'user' => [],
                ];
 
+               // Support for high-density display images if enabled
+               if ( $config->get( 'ResponsiveImages' ) ) {
+                       $modules['core'][] = 'mediawiki.hidpi';
+               }
+
                // Preload jquery.tablesorter for mediawiki.page.ready
                if ( strpos( $out->getHTML(), 'sortable' ) !== false ) {
                        $modules['content'][] = 'jquery.tablesorter';
@@ -182,6 +196,10 @@ abstract class Skin extends ContextSource {
                        $modules['content'][] = 'jquery.makeCollapsible';
                }
 
+               if ( $out->isTOCEnabled() ) {
+                       $modules['content'][] = 'mediawiki.toc';
+               }
+
                // Add various resources if required
                if ( $wgUseAjax && $wgEnableAPI ) {
                        if ( $wgEnableWriteAPI && $user->isLoggedIn()
@@ -444,6 +462,15 @@ abstract class Skin extends ContextSource {
                return $wgLogo;
        }
 
+       /**
+        * Whether the logo should be preloaded with an HTTP link header or not
+        * @since 1.29
+        * @return bool
+        */
+       public function shouldPreloadLogo() {
+               return false;
+       }
+
        /**
         * @return string HTML
         */
@@ -1458,7 +1485,7 @@ abstract class Skin extends ContextSource {
         *   should fall back to the next notice in its sequence
         */
        private function getCachedNotice( $name ) {
-               global $wgRenderHashAppend, $parserMemc, $wgContLang;
+               global $wgRenderHashAppend, $wgContLang;
 
                $needParse = false;
 
@@ -1479,9 +1506,10 @@ abstract class Skin extends ContextSource {
                        $notice = $msg->plain();
                }
 
+               $cache = wfGetCache( CACHE_ANYTHING );
                // Use the extra hash appender to let eg SSL variants separately cache.
-               $key = wfMemcKey( $name . $wgRenderHashAppend );
-               $cachedNotice = $parserMemc->get( $key );
+               $key = $cache->makeKey( $name . $wgRenderHashAppend );
+               $cachedNotice = $cache->get( $key );
                if ( is_array( $cachedNotice ) ) {
                        if ( md5( $notice ) == $cachedNotice['hash'] ) {
                                $notice = $cachedNotice['html'];
@@ -1494,7 +1522,7 @@ abstract class Skin extends ContextSource {
 
                if ( $needParse ) {
                        $parsed = $this->getOutput()->parse( $notice );
-                       $parserMemc->set( $key, [ 'html' => $parsed, 'hash' => md5( $notice ) ], 600 );
+                       $cache->set( $key, [ 'html' => $parsed, 'hash' => md5( $notice ) ], 600 );
                        $notice = $parsed;
                }
 
index 61dbf2b..f49d46c 100644 (file)
@@ -269,11 +269,13 @@ class SkinTemplate extends Skin {
                # An ID that includes the actual body text; without categories, contentSub, ...
                $realBodyAttribs = [ 'id' => 'mw-content-text' ];
 
-               # Add a mw-content-ltr/rtl class to be able to style based on text direction
-               # when the content is different from the UI language, i.e.:
-               # not for special pages or file pages AND only when viewing
-               if ( !in_array( $title->getNamespace(), [ NS_SPECIAL, NS_FILE ] ) &&
-                       Action::getActionName( $this ) === 'view' ) {
+               # Add a mw-content-ltr/rtl class to be able to style based on text
+               # direction when the content is different from the UI language (only
+               # when viewing)
+               # Most information on special pages and file pages is in user language,
+               # rather than content language, so those will not get this
+               if ( Action::getActionName( $this ) === 'view' &&
+                       ( !$title->inNamespaces( NS_SPECIAL, NS_FILE ) || $title->isRedirect() ) ) {
                        $pageLang = $title->getPageViewLanguage();
                        $realBodyAttribs['lang'] = $pageLang->getHtmlCode();
                        $realBodyAttribs['dir'] = $pageLang->getDir();
@@ -720,7 +722,10 @@ class SkinTemplate extends Skin {
                        }
 
                        if ( $authManager->canAuthenticateNow() ) {
-                               $personal_urls['login'] = $login_url;
+                               $key = User::groupHasPermission( '*', 'read' )
+                                       ? 'login'
+                                       : 'login-private';
+                               $personal_urls[$key] = $login_url;
                        }
                }
 
index 8e79703..1b561ef 100644 (file)
@@ -296,11 +296,49 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                ]
                        ],
 
+                       [
+                               'name' => 'lastRevision',
+                               'title' => 'rcfilters-filtergroup-lastRevision',
+                               'class' => ChangesListBooleanFilterGroup::class,
+                               'priority' => -7,
+                               'filters' => [
+                                       [
+                                               'name' => 'hidelastrevision',
+                                               'label' => 'rcfilters-filter-lastrevision-label',
+                                               'description' => 'rcfilters-filter-lastrevision-description',
+                                               'default' => false,
+                                               'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
+                                                       &$query_options, &$join_conds ) {
+                                                       $conds[] = 'rc_this_oldid <> page_latest';
+                                               },
+                                               'cssClassSuffix' => 'last',
+                                               'isRowApplicableCallable' => function ( $ctx, $rc ) {
+                                                       return $rc->getAttribute( 'rc_this_oldid' ) === $rc->getAttribute( 'page_latest' );
+                                               }
+                                       ],
+                                       [
+                                               'name' => 'hidepreviousrevisions',
+                                               'label' => 'rcfilters-filter-previousrevision-label',
+                                               'description' => 'rcfilters-filter-previousrevision-description',
+                                               'default' => false,
+                                               'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
+                                                       &$query_options, &$join_conds ) {
+                                                       $conds[] = 'rc_this_oldid = page_latest';
+                                               },
+                                               'cssClassSuffix' => 'previous',
+                                               'isRowApplicableCallable' => function ( $ctx, $rc ) {
+                                                       return $rc->getAttribute( 'rc_this_oldid' ) !== $rc->getAttribute( 'page_latest' );
+                                               }
+                                       ]
+                               ]
+                       ],
+
                        // With extensions, there can be change types that will not be hidden by any of these.
                        [
                                'name' => 'changeType',
                                'title' => 'rcfilters-filtergroup-changetype',
                                'class' => ChangesListBooleanFilterGroup::class,
+                               'priority' => -8,
                                'filters' => [
                                        [
                                                'name' => 'hidepageedits',
@@ -355,6 +393,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                        ],
                                ],
                        ],
+
                ];
 
                $this->reviewStatusFilterGroupDefinition = [
@@ -422,6 +461,50 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                ];
        }
 
+       /**
+        * Check if filters are in conflict and guaranteed to return no results.
+        *
+        * @return bool
+        */
+       protected function areFiltersInConflict() {
+               $opts = $this->getOptions();
+               /** @var ChangesListFilterGroup $group */
+               foreach ( $this->getFilterGroups() as $group ) {
+
+                       if ( $group->getConflictingGroups() ) {
+                               wfLogWarning(
+                                       $group->getName() .
+                                       " specifies conflicts with other groups but these are not supported yet."
+                               );
+                       }
+
+                       /** @var ChangesListFilter $conflictingFilter */
+                       foreach ( $group->getConflictingFilters() as $conflictingFilter ) {
+                               if ( $conflictingFilter->activelyInConflictWithGroup( $group, $opts ) ) {
+                                       return true;
+                               }
+                       }
+
+                       /** @var ChangesListFilter $filter */
+                       foreach ( $group->getFilters() as $filter ) {
+
+                               /** @var ChangesListFilter $conflictingFilter */
+                               foreach ( $filter->getConflictingFilters() as $conflictingFilter ) {
+                                       if (
+                                               $conflictingFilter->activelyInConflictWithFilter( $filter, $opts ) &&
+                                               $filter->activelyInConflictWithFilter( $conflictingFilter, $opts )
+                                       ) {
+                                               return true;
+                                       }
+                               }
+
+                       }
+
+               }
+
+               return false;
+       }
+
        /**
         * Main execution point
         *
@@ -528,7 +611,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
 
                // Make sure this is not being transcluded (we don't want to show this
                // information to all users just because the user that saves the edit can
-               // patrol)
+               // patrol or is logged in)
                if ( !$this->including() && $this->getUser()->useRCPatrol() ) {
                        $this->registerFiltersFromDefinitions( $this->reviewStatusFilterGroupDefinition );
                }
@@ -647,10 +730,10 @@ abstract class ChangesListSpecialPage extends SpecialPage {
        /**
         * Get filter group definition from legacy custom filters
         *
-        * @param array Custom filters from legacy hooks
+        * @param array $customFilters Custom filters from legacy hooks
         * @return array Group definition
         */
-       protected function getFilterGroupDefinitionFromLegacyCustomFilters( $customFilters ) {
+       protected function getFilterGroupDefinitionFromLegacyCustomFilters( array $customFilters ) {
                // Special internal unstructured group
                $unstructuredGroupDefinition = [
                        'name' => 'unstructured',
@@ -708,23 +791,26 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                $config = $this->getConfig();
                $opts = new FormOptions();
                $structuredUI = $this->getUser()->getOption( 'rcenhancedfilters' );
+               // If urlversion=2 is set, ignore the filter defaults and set them all to false/empty
+               $useDefaults = $this->getRequest()->getInt( 'urlversion' ) !== 2;
 
                // Add all filters
                foreach ( $this->filterGroups as $filterGroup ) {
                        // URL parameters can be per-group, like 'userExpLevel',
                        // or per-filter, like 'hideminor'.
                        if ( $filterGroup->isPerGroupRequestParameter() ) {
-                               $opts->add( $filterGroup->getName(), $filterGroup->getDefault() );
+                               $opts->add( $filterGroup->getName(), $useDefaults ? $filterGroup->getDefault() : '' );
                        } else {
                                foreach ( $filterGroup->getFilters() as $filter ) {
-                                       $opts->add( $filter->getName(), $filter->getDefault( $structuredUI ) );
+                                       $opts->add( $filter->getName(), $useDefaults ? $filter->getDefault( $structuredUI ) : false );
                                }
                        }
                }
 
-               $opts->add( 'namespace', '', FormOptions::INTNULL );
+               $opts->add( 'namespace', '', FormOptions::STRING );
                $opts->add( 'invert', false );
                $opts->add( 'associated', false );
+               $opts->add( 'urlversion', 1 );
 
                return $opts;
        }
@@ -877,7 +963,90 @@ abstract class ChangesListSpecialPage extends SpecialPage {
         * @param FormOptions $opts
         */
        public function validateOptions( FormOptions $opts ) {
-               // nothing by default
+               if ( $this->fixContradictoryOptions( $opts ) ) {
+                       $query = wfArrayToCgi( $this->convertParamsForLink( $opts->getChangedValues() ) );
+                       $this->getOutput()->redirect( $this->getPageTitle()->getCanonicalURL( $query ) );
+               }
+       }
+
+       /**
+        * Fix invalid options by resetting pairs that should never appear together.
+        *
+        * @param FormOptions $opts
+        * @return bool True if any option was reset
+        */
+       private function fixContradictoryOptions( FormOptions $opts ) {
+               $fixed = $this->fixBackwardsCompatibilityOptions( $opts );
+
+               foreach ( $this->filterGroups as $filterGroup ) {
+                       if ( $filterGroup instanceof ChangesListBooleanFilterGroup ) {
+                               $filters = $filterGroup->getFilters();
+
+                               if ( count( $filters ) === 1 ) {
+                                       // legacy boolean filters should not be considered
+                                       continue;
+                               }
+
+                               $allInGroupEnabled = array_reduce(
+                                       $filters,
+                                       function ( $carry, $filter ) use ( $opts ) {
+                                               return $carry && $opts[ $filter->getName() ];
+                                       },
+                                       /* initialValue */ count( $filters ) > 0
+                               );
+
+                               if ( $allInGroupEnabled ) {
+                                       foreach ( $filters as $filter ) {
+                                               $opts[ $filter->getName() ] = false;
+                                       }
+
+                                       $fixed = true;
+                               }
+                       }
+               }
+
+               return $fixed;
+       }
+
+       /**
+        * Fix a special case (hideanons=1 and hideliu=1) in a special way, for backwards
+        * compatibility.
+        *
+        * This is deprecated and may be removed.
+        *
+        * @param FormOptions $opts
+        * @return bool True if this change was mode
+        */
+       private function fixBackwardsCompatibilityOptions( FormOptions $opts ) {
+               if ( $opts['hideanons'] && $opts['hideliu'] ) {
+                       $opts->reset( 'hideanons' );
+                       if ( !$opts['hidebots'] ) {
+                               $opts->reset( 'hideliu' );
+                               $opts['hidehumans'] = 1;
+                       }
+
+                       return true;
+               }
+
+               return false;
+       }
+
+       /**
+        * Convert parameters values from true/false to 1/0
+        * so they are not omitted by wfArrayToCgi()
+        * Bug 36524
+        *
+        * @param array $params
+        * @return array
+        */
+       protected function convertParamsForLink( $params ) {
+               foreach ( $params as &$value ) {
+                       if ( $value === false ) {
+                               $value = '0';
+                       }
+               }
+               unset( $value );
+               return $params;
        }
 
        /**
@@ -915,25 +1084,28 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                }
 
                // Namespace filtering
-               if ( $opts['namespace'] !== '' ) {
-                       $selectedNS = $dbr->addQuotes( $opts['namespace'] );
-                       $operator = $opts['invert'] ? '!=' : '=';
-                       $boolean = $opts['invert'] ? 'AND' : 'OR';
-
-                       // Namespace association (T4429)
-                       if ( !$opts['associated'] ) {
-                               $condition = "rc_namespace $operator $selectedNS";
-                       } else {
-                               // Also add the associated namespace
-                               $associatedNS = $dbr->addQuotes(
-                                       MWNamespace::getAssociated( $opts['namespace'] )
+               if ( $opts[ 'namespace' ] !== '' ) {
+                       $namespaces = explode( ';', $opts[ 'namespace' ] );
+
+                       if ( $opts[ 'associated' ] ) {
+                               $associatedNamespaces = array_map(
+                                       function ( $ns ) {
+                                               return MWNamespace::getAssociated( $ns );
+                                       },
+                                       $namespaces
                                );
-                               $condition = "(rc_namespace $operator $selectedNS "
-                                       . $boolean
-                                       . " rc_namespace $operator $associatedNS)";
+                               $namespaces = array_unique( array_merge( $namespaces, $associatedNamespaces ) );
                        }
 
-                       $conds[] = $condition;
+                       if ( count( $namespaces ) === 1 ) {
+                               $operator = $opts[ 'invert' ] ? '!=' : '=';
+                               $value = $dbr->addQuotes( reset( $namespaces ) );
+                       } else {
+                               $operator = $opts[ 'invert' ] ? 'NOT IN' : 'IN';
+                               sort( $namespaces );
+                               $value = '(' . $dbr->makeList( $namespaces ) . ')';
+                       }
+                       $conds[] = "rc_namespace $operator $value";
                }
        }
 
@@ -963,15 +1135,6 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                        ''
                );
 
-               // It makes no sense to hide both anons and logged-in users. When this occurs, try a guess on
-               // what the user meant and either show only bots or force anons to be shown.
-
-               // -------
-
-               // XXX: We're no longer doing this handling.  To preserve back-compat, we need to complete
-               // T151873 (particularly the hideanons/hideliu/hidebots/hidehumans part) in conjunction
-               // with merging this.
-
                if ( !$this->runMainQueryHook( $tables, $fields, $conds, $query_options, $join_conds,
                        $opts )
                ) {
@@ -1165,9 +1328,11 @@ abstract class ChangesListSpecialPage extends SpecialPage {
         * @param array &$query_options Array of query options; see IDatabase::select $options
         * @param array &$join_conds Array of join conditions; see IDatabase::select $join_conds
         * @param array $selectedExpLevels The allowed active values, sorted
+        * @param int $now Number of seconds since the UNIX epoch, or 0 if not given
+        *   (optional)
         */
        public function filterOnUserExperienceLevel( $specialPageClassName, $context, $dbr,
-               &$tables, &$fields, &$conds, &$query_options, &$join_conds, $selectedExpLevels ) {
+               &$tables, &$fields, &$conds, &$query_options, &$join_conds, $selectedExpLevels, $now = 0 ) {
 
                global $wgLearnerEdits,
                        $wgExperiencedUserEdits,
@@ -1186,7 +1351,9 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                $tables[] = 'user';
                $join_conds['user'] = [ 'LEFT JOIN', 'rc_user = user_id' ];
 
-               $now = time();
+               if ( $now === 0 ) {
+                       $now = time();
+               }
                $secondsPerDay = 86400;
                $learnerCutoff = $now - $wgLearnerMemberSince * $secondsPerDay;
                $experiencedUserCutoff = $now - $wgExperiencedUserMemberSince * $secondsPerDay;
@@ -1194,7 +1361,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                $aboveNewcomer = $dbr->makeList(
                        [
                                'user_editcount >= ' . intval( $wgLearnerEdits ),
-                               'user_registration <= ' . $dbr->timestamp( $learnerCutoff ),
+                               'user_registration <= ' . $dbr->addQuotes( $dbr->timestamp( $learnerCutoff ) ),
                        ],
                        IDatabase::LIST_AND
                );
@@ -1202,7 +1369,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                $aboveLearner = $dbr->makeList(
                        [
                                'user_editcount >= ' . intval( $wgExperiencedUserEdits ),
-                               'user_registration <= ' . $dbr->timestamp( $experiencedUserCutoff ),
+                               'user_registration <= ' .
+                                       $dbr->addQuotes( $dbr->timestamp( $experiencedUserCutoff ) ),
                        ],
                        IDatabase::LIST_AND
                );
index 76b1535..f7f0499 100644 (file)
@@ -56,7 +56,7 @@ abstract class PageQueryPage extends QueryPage {
 
                if ( $title instanceof Title ) {
                        $text = $wgContLang->convert( $title->getPrefixedText() );
-                       return Linker::link( $title, htmlspecialchars( $text ) );
+                       return $this->getLinkRenderer()->makeLink( $title, $text );
                } else {
                        return Html::element( 'span', [ 'class' => 'mw-invalidtitle' ],
                                Linker::getInvalidTitleDescription( $this->getContext(), $row->namespace, $row->title ) );
index 68d2d30..93873c0 100644 (file)
@@ -23,6 +23,7 @@
 
 use Wikimedia\Rdbms\ResultWrapper;
 use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\DBError;
 
 /**
  * This is a class for doing query pages; since they're almost all the same,
index ba58e92..9594952 100644 (file)
@@ -33,7 +33,7 @@ use MediaWiki\MediaWikiServices;
  *
  * @ingroup SpecialPage
  */
-class SpecialPage {
+class SpecialPage implements MessageLocalizer {
        // The canonical name of this special page
        // Also used for the default <h1> heading, @see getDescription()
        protected $mName;
@@ -743,7 +743,7 @@ class SpecialPage {
         * @return Message
         * @see wfMessage
         */
-       public function msg( /* $args */ ) {
+       public function msg( $key /* $args */ ) {
                $message = call_user_func_array(
                        [ $this->getContext(), 'msg' ],
                        func_get_args()
@@ -783,6 +783,10 @@ class SpecialPage {
         * @since 1.25
         */
        public function addHelpLink( $to, $overrideBaseUrl = false ) {
+               if ( $this->including() ) {
+                       return;
+               }
+
                global $wgContLang;
                $msg = $this->msg( $wgContLang->lc( $this->getName() ) . '-helppage' );
 
index 84d3b08..81e2b7e 100644 (file)
@@ -186,6 +186,7 @@ class SpecialPageFactory {
                'Revisiondelete' => 'SpecialRevisionDelete',
                'RunJobs' => 'SpecialRunJobs',
                'Specialpages' => 'SpecialSpecialpages',
+               'PageData' => 'SpecialPageData'
        ];
 
        private static $list;
index d788f2b..5318895 100644 (file)
@@ -117,8 +117,8 @@ abstract class WantedQueryPage extends QueryPage {
         */
        private function makeWlhLink( $title, $result ) {
                $wlh = SpecialPage::getTitleFor( 'Whatlinkshere', $title->getPrefixedText() );
-               $label = $this->msg( 'nlinks' )->numParams( $result->value )->escaped();
-               return Linker::link( $wlh, $label );
+               $label = $this->msg( 'nlinks' )->numParams( $result->value )->text();
+               return $this->getLinkRenderer()->makeLink( $wlh, $label );
        }
 
        /**
index dcb2444..bf13865 100644 (file)
@@ -78,6 +78,7 @@ class SpecialAutoblockList extends SpecialPage {
                        ->prepareForm()
                        ->displayForm( false );
 
+               $this->showTotal( $pager );
                $this->showList( $pager );
        }
 
@@ -97,6 +98,20 @@ class SpecialAutoblockList extends SpecialPage {
                return new BlockListPager( $this, $conds );
        }
 
+       /**
+        * Show total number of autoblocks on top of the table
+        *
+        * @param BlockListPager $pager The BlockListPager instance for this page
+        */
+       protected function showTotal( BlockListPager $pager ) {
+               $out = $this->getOutput();
+               $out->addHTML(
+                       Html::element( 'div', [ 'style' => 'font-weight: bold;' ],
+                               $this->msg( 'autoblocklist-total-autoblocks', $pager->getTotalAutoblocks() )->parse() )
+                       . "\n"
+               );
+       }
+
        /**
         * Show the list of blocked accounts matching the actual filter.
         * @param BlockListPager $pager The BlockListPager instance for this page
index a36b414..8eaae4c 100644 (file)
@@ -198,7 +198,7 @@ class SpecialChangeContentModel extends FormSpecialPage {
                        $oldContent = $this->oldRevision->getContent();
                        try {
                                $newContent = ContentHandler::makeContent(
-                                       $oldContent->getNativeData(), $this->title, $data['model']
+                                       $oldContent->serialize(), $this->title, $data['model']
                                );
                        } catch ( MWException $e ) {
                                return Status::newFatal(
index 1028002..e2fa8a3 100644 (file)
@@ -40,8 +40,11 @@ class SpecialContributions extends IncludableSpecialPage {
                $out->addModuleStyles( [
                        'mediawiki.special',
                        'mediawiki.special.changeslist',
+                       'mediawiki.widgets.DateInputWidget.styles',
                ] );
+               $out->addModules( 'mediawiki.special.contributions' );
                $this->addHelpLink( 'Help:User contributions' );
+               $out->enableOOUI();
 
                $this->opts = [];
                $request = $this->getRequest();
@@ -130,8 +133,12 @@ class SpecialContributions extends IncludableSpecialPage {
                        $this->opts['year'] = '';
                        $this->opts['month'] = '';
                } else {
-                       $this->opts['year'] = $request->getIntOrNull( 'year' );
-                       $this->opts['month'] = $request->getIntOrNull( 'month' );
+                       $this->opts['year'] = $request->getVal( 'year' );
+                       $this->opts['month'] = $request->getVal( 'month' );
+
+                       $this->opts['start'] = $request->getVal( 'start' );
+                       $this->opts['end'] = $request->getVal( 'end' );
+                       $this->opts = ContribsPager::processDateFilter( $this->opts );
                }
 
                $feedType = $request->getVal( 'feed' );
@@ -190,8 +197,8 @@ class SpecialContributions extends IncludableSpecialPage {
                                'contribs' => $this->opts['contribs'],
                                'namespace' => $this->opts['namespace'],
                                'tagfilter' => $this->opts['tagfilter'],
-                               'year' => $this->opts['year'],
-                               'month' => $this->opts['month'],
+                               'start' => $this->opts['start'],
+                               'end' => $this->opts['end'],
                                'deletedOnly' => $this->opts['deletedOnly'],
                                'topOnly' => $this->opts['topOnly'],
                                'newOnly' => $this->opts['newOnly'],
@@ -395,7 +402,7 @@ class SpecialContributions extends IncludableSpecialPage {
                if ( $userrightsPage->userCanChangeRights( $target ) ) {
                        $tools['userrights'] = $linkRenderer->makeKnownLink(
                                SpecialPage::getTitleFor( 'Userrights', $username ),
-                               $sp->msg( 'sp-contributions-userrights' )->text()
+                               $sp->msg( 'sp-contributions-userrights', $username )->text()
                        );
                }
 
@@ -432,12 +439,12 @@ class SpecialContributions extends IncludableSpecialPage {
                        $this->opts['contribs'] = 'user';
                }
 
-               if ( !isset( $this->opts['year'] ) ) {
-                       $this->opts['year'] = '';
+               if ( !isset( $this->opts['start'] ) ) {
+                       $this->opts['start'] = '';
                }
 
-               if ( !isset( $this->opts['month'] ) ) {
-                       $this->opts['month'] = '';
+               if ( !isset( $this->opts['end'] ) ) {
+                       $this->opts['end'] = '';
                }
 
                if ( $this->opts['contribs'] == 'newbie' ) {
@@ -478,6 +485,8 @@ class SpecialContributions extends IncludableSpecialPage {
                        'contribs',
                        'year',
                        'month',
+                       'start',
+                       'end',
                        'topOnly',
                        'newOnly',
                        'hideMinor',
@@ -652,15 +661,32 @@ class SpecialContributions extends IncludableSpecialPage {
                        implode( '', $filters )
                );
 
-               $dateSelectionAndSubmit = Xml::tags( 'div', [],
-                       Xml::dateMenu(
-                               $this->opts['year'] === '' ? MWTimestamp::getInstance()->format( 'Y' ) : $this->opts['year'],
-                               $this->opts['month']
-                       ) . ' ' .
-                               Html::submitButton(
-                                       $this->msg( 'sp-contributions-submit' )->text(),
-                                       [ 'class' => 'mw-submit' ], [ 'mw-ui-progressive' ]
-                               )
+               $dateRangeSelection = Html::rawElement(
+                       'div',
+                       [],
+                       Xml::label( wfMessage( 'date-range-from' )->text(), 'mw-date-start' ) . ' ' .
+                       new \Mediawiki\Widget\DateInputWidget( [
+                               'infusable' => true,
+                               'id' => 'mw-date-start',
+                               'name' => 'start',
+                               'value' => $this->opts['start'],
+                               'longDisplayFormat' => true,
+                       ] ) . '<br>' .
+                       Xml::label( wfMessage( 'date-range-to' )->text(), 'mw-date-end' ) . ' ' .
+                       new \Mediawiki\Widget\DateInputWidget( [
+                               'infusable' => true,
+                               'id' => 'mw-date-end',
+                               'name' => 'end',
+                               'value' => $this->opts['end'],
+                               'longDisplayFormat' => true,
+                       ] )
+               );
+
+               $submit = Xml::tags( 'div', [],
+                       Html::submitButton(
+                               $this->msg( 'sp-contributions-submit' )->text(),
+                               [ 'class' => 'mw-submit' ], [ 'mw-ui-progressive' ]
+                       )
                );
 
                $form .= Xml::fieldset(
@@ -669,7 +695,8 @@ class SpecialContributions extends IncludableSpecialPage {
                        $namespaceSelection .
                        $filterSelection .
                        $extraOptions .
-                       $dateSelectionAndSubmit,
+                       $dateRangeSelection .
+                       $submit,
                        [ 'class' => 'mw-contributions-table' ]
                );
 
index dc6a619..17c64c8 100644 (file)
@@ -134,14 +134,26 @@ class SpecialJavaScriptTest extends SpecialPage {
                // Catch exceptions (such as "dependency missing" or "unknown module") so that we
                // always start QUnit. Re-throw so that they are caught and reported as global exceptions
                // by QUnit and Karma.
-               $code .= '(function () {'
-                       . 'var start = window.__karma__ ? window.__karma__.start : QUnit.start;'
-                       . 'try {'
-                       . 'mw.loader.using( ' . Xml::encodeJsVar( $modules ) . ' )'
-                       . '.always( start )'
-                       . '.fail( function ( e ) { throw e; } );'
-                       . '} catch ( e ) { start(); throw e; }'
-                       . '}());';
+               $modules = Xml::encodeJsVar( $modules );
+               $code .= <<<CODE
+(function () {
+       var start = window.__karma__ ? window.__karma__.start : QUnit.start;
+       try {
+               mw.loader.using( $modules )
+                       .always( function () {
+                               start();
+                       } )
+                       .fail( function ( e ) {
+                               setTimeout( function () {
+                                       throw e;
+                               } );
+                       } );
+       } catch ( e ) {
+               start();
+               throw e;
+       }
+}());
+CODE;
 
                header( 'Content-Type: text/javascript; charset=utf-8' );
                header( 'Cache-Control: private, no-cache, must-revalidate' );
index e8ead72..3290abd 100644 (file)
@@ -74,6 +74,7 @@ class MIMEsearchPage extends QueryPage {
                                'img_major_mime' => $this->major,
                                // This is in order to trigger using
                                // the img_media_mime index in "range" mode.
+                               // @todo how is order defined? use MimeAnalyzer::getMediaTypes?
                                'img_media_type' => [
                                        MEDIATYPE_BITMAP,
                                        MEDIATYPE_DRAWING,
index 7c4b490..5192eb9 100644 (file)
@@ -84,10 +84,6 @@ class MediaStatisticsPage extends QueryPage {
                                'namespace' => NS_MEDIA, /* needs to be something */
                                'value' => '1'
                        ],
-                       'conds' => [
-                               // WMF has a random null row in the db
-                               'img_media_type IS NOT NULL'
-                       ],
                        'options' => [
                                'GROUP BY' => [
                                        'img_media_type',
index c140ee9..5e56694 100644 (file)
@@ -2,8 +2,6 @@
 /**
  * Implements Special:Mostinterwikis
  *
- * Copyright © 2012 Umherirrender
- *
  * 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
@@ -21,7 +19,6 @@
  *
  * @file
  * @ingroup SpecialPage
- * @author Umherirrender
  */
 
 use Wikimedia\Rdbms\ResultWrapper;
index 7d8a493..a2b5be4 100644 (file)
@@ -776,6 +776,12 @@ class MovePageForm extends UnlistedSpecialPage {
                # Deal with watches (we don't watch subpages)
                WatchAction::doWatchOrUnwatch( $this->watch, $ot, $user );
                WatchAction::doWatchOrUnwatch( $this->watch, $nt, $user );
+
+               /**
+                * T163966
+                * Increment user_editcount during page moves
+                */
+               $user->incEditCount();
        }
 
        function showLogFragment( $title ) {
index 12dae8b..8528ce2 100644 (file)
@@ -25,6 +25,9 @@ class SpecialNewFiles extends IncludableSpecialPage {
        /** @var FormOptions */
        protected $opts;
 
+       /** @var string[] */
+       protected $mediaTypes;
+
        public function __construct() {
                parent::__construct( 'Newimages' );
        }
@@ -32,6 +35,8 @@ class SpecialNewFiles extends IncludableSpecialPage {
        public function execute( $par ) {
                $this->setHeaders();
                $this->outputHeader();
+               $mimeAnalyzer = MediaWiki\MediaWikiServices::getInstance()->getMimeAnalyzer();
+               $this->mediaTypes = $mimeAnalyzer->getMediaTypes();
 
                $out = $this->getOutput();
                $this->addHelpLink( 'Help:New images' );
@@ -41,9 +46,13 @@ class SpecialNewFiles extends IncludableSpecialPage {
                $opts->add( 'like', '' );
                $opts->add( 'user', '' );
                $opts->add( 'showbots', false );
+               $opts->add( 'newbies', false );
                $opts->add( 'hidepatrolled', false );
+               $opts->add( 'mediatype', $this->mediaTypes );
                $opts->add( 'limit', 50 );
                $opts->add( 'offset', '' );
+               $opts->add( 'start', '' );
+               $opts->add( 'end', '' );
 
                $opts->fetchValuesFromRequest( $this->getRequest() );
 
@@ -51,6 +60,27 @@ class SpecialNewFiles extends IncludableSpecialPage {
                        $opts->setValue( is_numeric( $par ) ? 'limit' : 'like', $par );
                }
 
+               // If start date comes after end date chronologically, swap them.
+               // They are swapped in the interface by JS.
+               $start = $opts->getValue( 'start' );
+               $end = $opts->getValue( 'end' );
+               if ( $start !== '' && $end !== '' && $start > $end ) {
+                       $temp = $end;
+                       $end = $start;
+                       $start = $temp;
+
+                       $opts->setValue( 'start', $start, true );
+                       $opts->setValue( 'end', $end, true );
+               }
+
+               // if all media types have been selected, wipe out the array to prevent
+               // the pointless IN(...) query condition (which would have no effect
+               // because every possible type has been selected)
+               $missingMediaTypes = array_diff( $this->mediaTypes, $opts->getValue( 'mediatype' ) );
+               if ( empty( $missingMediaTypes ) ) {
+                       $opts->setValue( 'mediatype', [] );
+               }
+
                $opts->validateIntBounds( 'limit', 0, 500 );
 
                $this->opts = $opts;
@@ -69,6 +99,17 @@ class SpecialNewFiles extends IncludableSpecialPage {
        }
 
        protected function buildForm() {
+               $mediaTypesText = array_map( function ( $type ) {
+                       // mediastatistics-header-unknown, mediastatistics-header-bitmap,
+                       // mediastatistics-header-drawing, mediastatistics-header-audio,
+                       // mediastatistics-header-video, mediastatistics-header-multimedia,
+                       // mediastatistics-header-office, mediastatistics-header-text,
+                       // mediastatistics-header-executable, mediastatistics-header-archive,
+                       return $this->msg( 'mediastatistics-header-' . strtolower( $type ) )->text();
+               }, $this->mediaTypes );
+               $mediaTypesOptions = array_combine( $mediaTypesText, $this->mediaTypes );
+               ksort( $mediaTypesOptions );
+
                $formDescriptor = [
                        'like' => [
                                'type' => 'text',
@@ -82,6 +123,12 @@ class SpecialNewFiles extends IncludableSpecialPage {
                                'name' => 'user',
                        ],
 
+                       'newbies' => [
+                               'type' => 'check',
+                               'label-message' => 'newimages-newbies',
+                               'name' => 'newbies',
+                       ],
+
                        'showbots' => [
                                'type' => 'check',
                                'label-message' => 'newimages-showbots',
@@ -94,6 +141,16 @@ class SpecialNewFiles extends IncludableSpecialPage {
                                'name' => 'hidepatrolled',
                        ],
 
+                       'mediatype' => [
+                               'type' => 'multiselect',
+                               'dropdown' => true,
+                               'flatlist' => true,
+                               'name' => 'mediatype',
+                               'label-message' => 'newimages-mediatype',
+                               'options' => $mediaTypesOptions,
+                               'default' => $this->mediaTypes,
+                       ],
+
                        'limit' => [
                                'type' => 'hidden',
                                'default' => $this->opts->getValue( 'limit' ),
@@ -105,6 +162,18 @@ class SpecialNewFiles extends IncludableSpecialPage {
                                'default' => $this->opts->getValue( 'offset' ),
                                'name' => 'offset',
                        ],
+
+                       'start' => [
+                               'type' => 'date',
+                               'label-message' => 'date-range-from',
+                               'name' => 'start',
+                       ],
+
+                       'end' => [
+                               'type' => 'date',
+                               'label-message' => 'date-range-to',
+                               'name' => 'end',
+                       ],
                ];
 
                if ( $this->getConfig()->get( 'MiserMode' ) ) {
@@ -116,11 +185,15 @@ class SpecialNewFiles extends IncludableSpecialPage {
                }
 
                HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() )
+                       // For the 'multiselect' field values to be preserved on submit
+                       ->setFormIdentifier( 'specialnewimages' )
                        ->setWrapperLegendMsg( 'newimages-legend' )
                        ->setSubmitTextMsg( 'ilsubmit' )
                        ->setMethod( 'get' )
                        ->prepareForm()
                        ->displayForm( false );
+
+               $this->getOutput()->addModules( 'mediawiki.special.newFiles' );
        }
 
        protected function getGroupName() {
index be8ad8f..83482f6 100644 (file)
@@ -314,6 +314,7 @@ class SpecialNewpages extends IncludableSpecialPage {
                $rev->setTitle( $title );
 
                $classes = [];
+               $attribs = [ 'data-mw-revid' => $result->rev_id ];
 
                $lang = $this->getLanguage();
                $dm = $lang->getDirMark();
@@ -378,11 +379,19 @@ class SpecialNewpages extends IncludableSpecialPage {
                        $tagDisplay = '';
                }
 
-               $css = count( $classes ) ? ' class="' . implode( ' ', $classes ) . '"' : '';
-
                # Display the old title if the namespace/title has been changed
                $oldTitleText = '';
                $oldTitle = Title::makeTitle( $result->rc_namespace, $result->rc_title );
+               $ret = "{$time} {$dm}{$plink} {$hist} {$dm}{$length} {$dm}{$ulink} {$comment} "
+                       . "{$tagDisplay} {$oldTitleText}";
+
+               // Let extensions add data
+               Hooks::run( 'NewPagesLineEnding', [ $this, &$ret, $result, &$classes, &$attribs ] );
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
+
+               if ( count( $classes ) ) {
+                       $attribs['class'] = implode( ' ', $classes );
+               }
 
                if ( !$title->equals( $oldTitle ) ) {
                        $oldTitleText = $oldTitle->getPrefixedText();
@@ -393,8 +402,7 @@ class SpecialNewpages extends IncludableSpecialPage {
                        );
                }
 
-               return "<li{$css}>{$time} {$dm}{$plink} {$hist} {$dm}{$length} "
-                       . "{$dm}{$ulink} {$comment} {$tagDisplay} {$oldTitleText}</li>\n";
+               return Html::rawElement( 'li', $attribs, $ret ) . "\n";
        }
 
        /**
diff --git a/includes/specials/SpecialPageData.php b/includes/specials/SpecialPageData.php
new file mode 100644 (file)
index 0000000..f7084a8
--- /dev/null
@@ -0,0 +1,87 @@
+<?php
+
+/**
+ * Special page to act as an endpoint for accessing raw page data.
+ * The web server should generally be configured to make this accessible via a canonical URL/URI,
+ * such as <http://my.domain.org/data/main/Foo>.
+ *
+ * @license GPL-2.0+
+ */
+class SpecialPageData extends SpecialPage {
+
+       /**
+        * @var PageDataRequestHandler|null
+        */
+       private $requestHandler = null;
+
+       public function __construct() {
+               parent::__construct( 'PageData' );
+       }
+
+       /**
+        * Sets the request handler to be used by the special page.
+        * May be used when a particular instance of PageDataRequestHandler is already
+        * known, e.g. during testing.
+        *
+        * If no request handler is set using this method, a default handler is created
+        * on demand by initDependencies().
+        *
+        * @param PageDataRequestHandler $requestHandler
+        */
+       public function setRequestHandler( PageDataRequestHandler $requestHandler ) {
+               $this->requestHandler = $requestHandler;
+       }
+
+       /**
+        * Initialize any un-initialized members from global context.
+        * In particular, this initializes $this->requestHandler
+        */
+       protected function initDependencies() {
+               if ( $this->requestHandler === null ) {
+                       $this->requestHandler = $this->newDefaultRequestHandler();
+               }
+       }
+
+       /**
+        * Creates a PageDataRequestHandler based on global defaults.
+        *
+        * @return PageDataRequestHandler
+        */
+       private function newDefaultRequestHandler() {
+
+               return new PageDataRequestHandler();
+       }
+
+       /**
+        * @see SpecialWikibasePage::execute
+        *
+        * @param string|null $subPage
+        *
+        * @throws HttpError
+        */
+       public function execute( $subPage ) {
+               $this->initDependencies();
+
+               // If there is no title, show an HTML form
+               // TODO: Don't do this if HTML is not acceptable according to HTTP headers.
+               if ( !$this->requestHandler->canHandleRequest( $subPage, $this->getRequest() ) ) {
+                       $this->showForm();
+                       return;
+               }
+
+               $this->requestHandler->handleRequest( $subPage, $this->getRequest(), $this->getOutput() );
+       }
+
+       /**
+        * Shows an informative page to the user; Called when there is no page to output.
+        */
+       public function showForm() {
+               $this->getOutput()->showErrorPage( 'pagedata-title', 'pagedata-text' );
+       }
+
+       public function isListed() {
+               // Do not list this page in Special:SpecialPages
+               return false;
+       }
+
+}
index f88f09c..5ec2064 100644 (file)
@@ -31,9 +31,104 @@ use Wikimedia\Rdbms\FakeResultWrapper;
  * @ingroup SpecialPage
  */
 class SpecialRecentChanges extends ChangesListSpecialPage {
+
+       private $watchlistFilterGroupDefinition;
+
        // @codingStandardsIgnoreStart Needed "useless" override to change parameters.
        public function __construct( $name = 'Recentchanges', $restriction = '' ) {
                parent::__construct( $name, $restriction );
+
+               $this->watchlistFilterGroupDefinition = [
+                       'name' => 'watchlist',
+                       'title' => 'rcfilters-filtergroup-watchlist',
+                       'class' => ChangesListStringOptionsFilterGroup::class,
+                       'priority' => -9,
+                       'isFullCoverage' => true,
+                       'filters' => [
+                               [
+                                       'name' => 'watched',
+                                       'label' => 'rcfilters-filter-watchlist-watched-label',
+                                       'description' => 'rcfilters-filter-watchlist-watched-description',
+                                       'cssClassSuffix' => 'watched',
+                                       'isRowApplicableCallable' => function ( $ctx, $rc ) {
+                                               return $rc->getAttribute( 'wl_user' );
+                                       }
+                               ],
+                               [
+                                       'name' => 'watchednew',
+                                       'label' => 'rcfilters-filter-watchlist-watchednew-label',
+                                       'description' => 'rcfilters-filter-watchlist-watchednew-description',
+                                       'cssClassSuffix' => 'watchednew',
+                                       'isRowApplicableCallable' => function ( $ctx, $rc ) {
+                                               return $rc->getAttribute( 'wl_user' ) &&
+                                                       $rc->getAttribute( 'rc_timestamp' ) &&
+                                                       $rc->getAttribute( 'wl_notificationtimestamp' ) &&
+                                                       $rc->getAttribute( 'rc_timestamp' ) >= $rc->getAttribute( 'wl_notificationtimestamp' );
+                                       },
+                               ],
+                               [
+                                       'name' => 'notwatched',
+                                       'label' => 'rcfilters-filter-watchlist-notwatched-label',
+                                       'description' => 'rcfilters-filter-watchlist-notwatched-description',
+                                       'cssClassSuffix' => 'notwatched',
+                                       'isRowApplicableCallable' => function ( $ctx, $rc ) {
+                                               return $rc->getAttribute( 'wl_user' ) === null;
+                                       },
+                               ]
+                       ],
+                       'default' => ChangesListStringOptionsFilterGroup::NONE,
+                       'queryCallable' => function ( $specialPageClassName, $context, $dbr,
+                               &$tables, &$fields, &$conds, &$query_options, &$join_conds, $selectedValues ) {
+                               sort( $selectedValues );
+                               $notwatchedCond = 'wl_user IS NULL';
+                               $watchedCond = 'wl_user IS NOT NULL';
+                               $newCond = 'rc_timestamp >= wl_notificationtimestamp';
+
+                               if ( $selectedValues === [ 'notwatched' ] ) {
+                                       $conds[] = $notwatchedCond;
+                                       return;
+                               }
+
+                               if ( $selectedValues === [ 'watched' ] ) {
+                                       $conds[] = $watchedCond;
+                                       return;
+                               }
+
+                               if ( $selectedValues === [ 'watchednew' ] ) {
+                                       $conds[] = $dbr->makeList( [
+                                               $watchedCond,
+                                               $newCond
+                                       ], LIST_AND );
+                                       return;
+                               }
+
+                               if ( $selectedValues === [ 'notwatched', 'watched' ] ) {
+                                       // no filters
+                                       return;
+                               }
+
+                               if ( $selectedValues === [ 'notwatched', 'watchednew' ] ) {
+                                       $conds[] = $dbr->makeList( [
+                                               $notwatchedCond,
+                                               $dbr->makeList( [
+                                                       $watchedCond,
+                                                       $newCond
+                                               ], LIST_AND )
+                                       ], LIST_OR );
+                                       return;
+                               }
+
+                               if ( $selectedValues === [ 'watched', 'watchednew' ] ) {
+                                       $conds[] = $watchedCond;
+                                       return;
+                               }
+
+                               if ( $selectedValues === [ 'notwatched', 'watched', 'watchednew' ] ) {
+                                       // no filters
+                                       return;
+                               }
+                       }
+               ];
        }
        // @codingStandardsIgnoreEnd
 
@@ -43,6 +138,9 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
         * @param string $subpage
         */
        public function execute( $subpage ) {
+               global $wgStructuredChangeFiltersEnableSaving,
+                       $wgStructuredChangeFiltersEnableExperimentalViews;
+
                // Backwards-compatibility: redirect to new feed URLs
                $feedFormat = $this->getRequest()->getVal( 'feed' );
                if ( !$this->including() && $feedFormat ) {
@@ -72,7 +170,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                        $jsData = $this->getStructuredFilterJsData();
 
                        $messages = [];
-                       foreach ( $jsData['messageKeys'] as $key ){
+                       foreach ( $jsData['messageKeys'] as $key ) {
                                $messages[$key] = $this->msg( $key )->plain();
                        }
 
@@ -83,7 +181,62 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                        );
 
                        $out->addJsConfigVars( 'wgStructuredChangeFilters', $jsData['groups'] );
+                       $out->addJsConfigVars(
+                               'wgStructuredChangeFiltersEnableSaving',
+                               $wgStructuredChangeFiltersEnableSaving
+                       );
+                       $out->addJsConfigVars(
+                               'wgStructuredChangeFiltersEnableExperimentalViews',
+                               $wgStructuredChangeFiltersEnableExperimentalViews
+                       );
+                       $out->addJsConfigVars(
+                               'wgRCFiltersChangeTags',
+                               $this->buildChangeTagList()
+                       );
+               }
+       }
+
+       /**
+        * Fetch the change tags list for the front end
+        *
+        * @return Array Tag data
+        */
+       protected function buildChangeTagList() {
+               function stripAllHtml( $input ) {
+                       return trim( html_entity_decode( strip_tags( $input ) ) );
+               }
+
+               $explicitlyDefinedTags = array_fill_keys( ChangeTags::listExplicitlyDefinedTags(), 0 );
+               $softwareActivatedTags = array_fill_keys( ChangeTags::listSoftwareActivatedTags(), 0 );
+               $tagStats = ChangeTags::tagUsageStatistics();
+
+               $tagHitCounts = array_merge( $explicitlyDefinedTags, $softwareActivatedTags, $tagStats );
+
+               // Sort by hits
+               asort( $tagHitCounts );
+
+               // Build the list and data
+               $result = [];
+               foreach ( $tagHitCounts as $tagName => $hits ) {
+                       if (
+                               // Only get active tags
+                               isset( $explicitlyDefinedTags[ $tagName ] ) ||
+                               isset( $softwareActivatedTags[ $tagName ] )
+                       ) {
+                               // Parse description
+                               $desc = ChangeTags::tagLongDescriptionMessage( $tagName, $this->getContext() );
+
+                               $result[] = [
+                                       'name' => $tagName,
+                                       'label' => stripAllHtml( ChangeTags::tagDescription( $tagName, $this->getContext() ) ),
+                                       'description' => $desc ? stripAllHtml( $desc->parse() ) : '',
+                                       'cssClass' => Sanitizer::escapeClass( 'mw-tag-' . $tagName ),
+                                       'hits' => $hits,
+                               ];
+                       }
                }
+
+               return $result;
        }
 
        /**
@@ -103,6 +256,18 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
        protected function registerFilters() {
                parent::registerFilters();
 
+               if (
+                       !$this->including() &&
+                       $this->getUser()->isLoggedIn() &&
+                       $this->getUser()->isAllowed( 'viewmywatchlist' )
+               ) {
+                       $this->registerFiltersFromDefinitions( [ $this->watchlistFilterGroupDefinition ] );
+                       $watchlistGroup = $this->getFilterGroup( 'watchlist' );
+                       $watchlistGroup->getFilter( 'watched' )->setAsSupersetOf(
+                               $watchlistGroup->getFilter( 'watchednew' )
+                       );
+               }
+
                $user = $this->getUser();
 
                $significance = $this->getFilterGroup( 'significance' );
@@ -184,7 +349,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                        if ( preg_match( '/^days=(\d+)$/', $bit, $m ) ) {
                                $opts['days'] = $m[1];
                        }
-                       if ( preg_match( '/^namespace=(\d+)$/', $bit, $m ) ) {
+                       if ( preg_match( '/^namespace=(.*)$/', $bit, $m ) ) {
                                $opts['namespace'] = $m[1];
                        }
                        if ( preg_match( '/^tagfilter=(.*)$/', $bit, $m ) ) {
@@ -236,7 +401,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                $fields = array_merge( RecentChange::selectFields(), $fields );
 
                // JOIN on watchlist for users
-               if ( $user->getId() && $user->isAllowed( 'viewmywatchlist' ) ) {
+               if ( $user->isLoggedIn() && $user->isAllowed( 'viewmywatchlist' ) ) {
                        $tables[] = 'watchlist';
                        $fields[] = 'wl_user';
                        $fields[] = 'wl_notificationtimestamp';
@@ -247,11 +412,10 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                        ] ];
                }
 
-               if ( $user->isAllowed( 'rollback' ) ) {
-                       $tables[] = 'page';
-                       $fields[] = 'page_latest';
-                       $join_conds['page'] = [ 'LEFT JOIN', 'rc_cur_id=page_id' ];
-               }
+               // JOIN on page, used for 'last revision' filter highlight
+               $tables[] = 'page';
+               $fields[] = 'page_latest';
+               $join_conds['page'] = [ 'LEFT JOIN', 'rc_cur_id=page_id' ];
 
                ChangeTags::modifyDisplayQuery(
                        $tables,
@@ -268,6 +432,10 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                        return false;
                }
 
+               if ( $this->areFiltersInConflict() ) {
+                       return false;
+               }
+
                // array_merge() is used intentionally here so that hooks can, should
                // they so desire, override the ORDER BY / LIMIT condition(s); prior to
                // MediaWiki 1.26 this used to use the plus operator instead, which meant
@@ -509,7 +677,11 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                if ( !$message->isDisabled() ) {
                        $this->getOutput()->addWikiText(
                                Html::rawElement( 'div',
-                                       [ 'lang' => $wgContLang->getHtmlCode(), 'dir' => $wgContLang->getDir() ],
+                                       [
+                                               'class' => 'mw-recentchanges-toplinks',
+                                               'lang' => $wgContLang->getHtmlCode(),
+                                               'dir' => $wgContLang->getDir()
+                                       ],
                                        "\n" . $message->plain() . "\n"
                                ),
                                /* $lineStart */ true,
@@ -704,16 +876,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
         * @return string
         */
        function makeOptionsLink( $title, $override, $options, $active = false ) {
-               $params = $override + $options;
-
-               // T38524: false values have be converted to "0" otherwise
-               // wfArrayToCgi() will omit it them.
-               foreach ( $params as &$value ) {
-                       if ( $value === false ) {
-                               $value = '0';
-                       }
-               }
-               unset( $value );
+               $params = $this->convertParamsForLink( $override + $options );
 
                if ( $active ) {
                        $title = new HtmlArmor( '<strong>' . htmlspecialchars( $title ) . '</strong>' );
@@ -841,7 +1004,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                $datenow = $lang->userDate( $timestamp, $user );
                $pipedLinks = '<span class="rcshowhide">' . $lang->pipeList( $links ) . '</span>';
 
-               $rclinks = '<span class="rclinks">' . $this->msg( 'rclinks' )->rawParams( $cl, $dl, $pipedLinks )
+               $rclinks = '<span class="rclinks">' . $this->msg( 'rclinks' )->rawParams( $cl, $dl, '' )
                        ->parse() . '</span>';
 
                $rclistfrom = '<span class="rclistfrom">' . $this->makeOptionsLink(
@@ -850,7 +1013,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                        $nondefaults
                ) . '</span>';
 
-               return "{$note}$rclinks<br />$rclistfrom";
+               return "{$note}$rclinks<br />$pipedLinks<br />$rclistfrom";
        }
 
        public function isIncludable() {
index 139e4f7..e89dbc9 100644 (file)
@@ -352,12 +352,16 @@ class SpecialSearch extends SpecialPage {
                        $out->addHTML( $dymWidget->render( $term, $textMatches ) );
                }
 
-               $out->addHTML( "<div class='searchresults'>" );
-
                $hasErrors = $textStatus && $textStatus->getErrors();
                $hasOtherResults = $textMatches &&
                        $textMatches->hasInterwikiResults( SearchResultSet::INLINE_RESULTS );
 
+               if ( $textMatches && $textMatches->hasInterwikiResults( SearchResultSet::SECONDARY_RESULTS ) ) {
+                       $out->addHTML( '<div class="searchresults mw-searchresults-has-iw">' );
+               } else {
+                       $out->addHTML( '<div class="searchresults">' );
+               }
+
                if ( $hasErrors ) {
                        list( $error, $warning ) = $textStatus->splitByErrorType();
                        if ( $error->getErrors() ) {
@@ -401,7 +405,8 @@ class SpecialSearch extends SpecialPage {
                                $this,
                                $sidebarResultWidget,
                                $linkRenderer,
-                               MediaWikiServices::getInstance()->getInterwikiLookup()
+                               MediaWikiServices::getInstance()->getInterwikiLookup(),
+                               $search->getFeatureData( 'show-multimedia-search-results' )
                        );
                } else {
                        $sidebarResultWidget = new SimpleSearchResultWidget( $this, $linkRenderer );
@@ -475,7 +480,9 @@ class SpecialSearch extends SpecialPage {
                        if ( $title->isKnown() ) {
                                $messageName = 'searchmenu-exists';
                                $linkClass = 'mw-search-exists';
-                       } elseif ( $title->quickUserCan( 'create', $this->getUser() ) ) {
+                       } elseif ( ContentHandler::getForTitle( $title )->supportsDirectEditing()
+                               && $title->quickUserCan( 'create', $this->getUser() )
+                       ) {
                                $messageName = 'searchmenu-new';
                        }
                }
index eb4f0cc..fa38506 100644 (file)
@@ -21,7 +21,6 @@
  * @ingroup SpecialPage
  */
 
-use MediaWiki\MediaWikiServices;
 use Wikimedia\Rdbms\ResultWrapper;
 
 /**
index f4a4818..def639d 100644 (file)
@@ -821,6 +821,7 @@ class SpecialUpload extends SpecialPage {
 
                $gallery = ImageGalleryBase::factory( false, $this->getContext() );
                $gallery->setShowBytes( false );
+               $gallery->setShowDimensions( false );
                foreach ( $dupes as $file ) {
                        $gallery->add( $file->getTitle() );
                }
index 127b530..002b47c 100644 (file)
@@ -215,7 +215,7 @@ class UserrightsPage extends SpecialPage {
         * @return bool
         */
        public function canProcessExpiries() {
-               return !$this->getConfig()->get( 'DisableUserGroupExpiry' );
+               return true;
        }
 
        /**
index 708eced..caa0e1f 100644 (file)
@@ -732,7 +732,9 @@ class SpecialVersion extends SpecialPage {
                                }
                        }
                        $cache = wfGetCache( CACHE_ANYTHING );
-                       $memcKey = wfMemcKey( 'specialversion-ext-version-text', $extension['path'], $this->coreId );
+                       $memcKey = $cache->makeKey(
+                               'specialversion-ext-version-text', $extension['path'], $this->coreId
+                       );
                        list( $vcsVersion, $vcsLink, $vcsDate ) = $cache->get( $memcKey );
 
                        if ( !$vcsVersion ) {
index 0d6f493..e2f4d4b 100644 (file)
@@ -101,9 +101,7 @@ class ActiveUsersPager extends UsersPager {
                        $tables[] = 'user_groups';
                        $conds[] = 'ug_user = user_id';
                        $conds['ug_group'] = $this->groups;
-                       if ( !$this->getConfig()->get( 'DisableUserGroupExpiry' ) ) {
-                               $conds[] = 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() );
-                       }
+                       $conds[] = 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() );
                }
                if ( $this->excludegroups !== [] ) {
                        foreach ( $this->excludegroups as $group ) {
@@ -111,9 +109,7 @@ class ActiveUsersPager extends UsersPager {
                                        'user_groups', '1', [
                                                'ug_user = user_id',
                                                'ug_group' => $group,
-                                               $this->getConfig()->get( 'DisableUserGroupExpiry' ) ?
-                                                       '1' :
-                                                       'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() )
+                                               'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() )
                                        ]
                                ) . ')';
                        }
index 9a447ef..51e446d 100644 (file)
@@ -246,6 +246,26 @@ class BlockListPager extends TablePager {
                return $info;
        }
 
+       /**
+        * Get total number of autoblocks at any given time
+        *
+        * @return int Total number of unexpired active autoblocks
+        */
+       function getTotalAutoblocks() {
+               $dbr = $this->getDatabase();
+               $res = $dbr->selectField( 'ipblocks',
+                       [ 'COUNT(*) AS totalautoblocks' ],
+                       [
+                               'ipb_auto' => '1',
+                               'ipb_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() ),
+                       ]
+               );
+               if ( $res ) {
+                       return $res;
+               }
+               return 0; // We found nothing
+       }
+
        protected function getTableClass() {
                return parent::getTableClass() . ' mw-blocklist';
        }
index 1133625..6bd7eb0 100644 (file)
@@ -28,7 +28,7 @@ use Wikimedia\Rdbms\ResultWrapper;
 use Wikimedia\Rdbms\FakeResultWrapper;
 use Wikimedia\Rdbms\IDatabase;
 
-class ContribsPager extends ReverseChronologicalPager {
+class ContribsPager extends RangeChronologicalPager {
 
        public $mDefaultDirection = IndexPager::DIR_DESCENDING;
        public $messages;
@@ -45,6 +45,11 @@ class ContribsPager extends ReverseChronologicalPager {
         */
        protected $mParentLens;
 
+       /**
+        * @var TemplateParser
+        */
+       protected $templateParser;
+
        function __construct( IContextSource $context, array $options ) {
                parent::__construct( $context );
 
@@ -71,15 +76,23 @@ class ContribsPager extends ReverseChronologicalPager {
                $this->newOnly = !empty( $options['newOnly'] );
                $this->hideMinor = !empty( $options['hideMinor'] );
 
-               $year = isset( $options['year'] ) ? $options['year'] : false;
-               $month = isset( $options['month'] ) ? $options['month'] : false;
-               $this->getDateCond( $year, $month );
+               // Date filtering: use timestamp if available
+               $startTimestamp = '';
+               $endTimestamp = '';
+               if ( $options['start'] ) {
+                       $startTimestamp = $options['start'] . ' 00:00:00';
+               }
+               if ( $options['end'] ) {
+                       $endTimestamp = $options['end'] . ' 23:59:59';
+               }
+               $this->getDateRangeCond( $startTimestamp, $endTimestamp );
 
                // Most of this code will use the 'contributions' group DB, which can map to replica DBs
                // with extra user based indexes or partioning by user. The additional metadata
                // queries should use a regular replica DB since the lookup pattern is not all by user.
                $this->mDbSecondary = wfGetDB( DB_REPLICA ); // any random replica DB
                $this->mDb = wfGetDB( DB_REPLICA, 'contributions' );
+               $this->templateParser = new TemplateParser();
        }
 
        function getDefaultQuery() {
@@ -228,10 +241,8 @@ class ContribsPager extends ReverseChronologicalPager {
                                        'LEFT JOIN', [
                                                'ug_user = rev_user',
                                                'ug_group' => $groupsWithBotPermission,
-                                               $this->getConfig()->get( 'DisableUserGroupExpiry' ) ?
-                                                       '1' :
-                                                       'ug_expiry IS NULL OR ug_expiry >= ' .
-                                                               $this->mDb->addQuotes( $this->mDb->timestamp() )
+                                               'ug_expiry IS NULL OR ug_expiry >= ' .
+                                                       $this->mDb->addQuotes( $this->mDb->timestamp() )
                                        ]
                                ];
                        }
@@ -354,9 +365,9 @@ class ContribsPager extends ReverseChronologicalPager {
         * @return string
         */
        function formatRow( $row ) {
-
                $ret = '';
                $classes = [];
+               $attribs = [];
 
                $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
 
@@ -377,7 +388,7 @@ class ContribsPager extends ReverseChronologicalPager {
                MediaWiki\restoreWarnings();
 
                if ( $validRevision ) {
-                       $classes = [];
+                       $attribs['data-mw-revid'] = $rev->getId();
 
                        $page = Title::newFromRow( $row );
                        $link = $linkRenderer->makeLink(
@@ -461,14 +472,13 @@ class ContribsPager extends ReverseChronologicalPager {
                        }
 
                        # Show user names for /newbies as there may be different users.
-                       # Note that we already excluded rows with hidden user names.
-                       if ( $this->contribs == 'newbie' ) {
+                       # Note that only unprivileged users have rows with hidden user names excluded.
+                       $userlink = '';
+                       if ( $this->contribs == 'newbie' && !$rev->isDeleted( Revision::DELETED_USER ) ) {
                                $userlink = ' . . ' . $lang->getDirMark()
                                        . Linker::userLink( $rev->getUser(), $rev->getUserText() );
                                $userlink .= ' ' . $this->msg( 'parentheses' )->rawParams(
-                                               Linker::userTalkLink( $rev->getUser(), $rev->getUserText() ) )->escaped() . ' ';
-                       } else {
-                               $userlink = '';
+                                       Linker::userTalkLink( $rev->getUser(), $rev->getUserText() ) )->escaped() . ' ';
                        }
 
                        $flags = [];
@@ -518,27 +528,28 @@ class ContribsPager extends ReverseChronologicalPager {
                                        $this->msg( 'rev-deleted-user-contribs' )->escaped();
                        }
 
-                       $templateParser = new TemplateParser();
-                       $ret = $templateParser->processTemplate(
+                       $ret = $this->templateParser->processTemplate(
                                'SpecialContributionsLine',
                                $templateParams
                        );
                }
 
                // Let extensions add data
-               Hooks::run( 'ContributionsLineEnding', [ $this, &$ret, $row, &$classes ] );
+               Hooks::run( 'ContributionsLineEnding', [ $this, &$ret, $row, &$classes, &$attribs ] );
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
 
                // TODO: Handle exceptions in the catch block above.  Do any extensions rely on
                // receiving empty rows?
 
-               if ( $classes === [] && $ret === '' ) {
+               if ( $classes === [] && $attribs === [] && $ret === '' ) {
                        wfDebug( "Dropping Special:Contribution row that could not be formatted\n" );
                        return "<!-- Could not format Special:Contribution row. -->\n";
                }
+               $attribs['class'] = $classes;
 
                // FIXME: The signature of the ContributionsLineEnding hook makes it
                // very awkward to move this LI wrapper into the template.
-               return Html::rawElement( 'li', [ 'class' => $classes ], $ret ) . "\n";
+               return Html::rawElement( 'li', $attribs, $ret ) . "\n";
        }
 
        /**
@@ -564,4 +575,43 @@ class ContribsPager extends ReverseChronologicalPager {
        public function getPreventClickjacking() {
                return $this->preventClickjacking;
        }
+
+       /**
+        * Set up date filter options, given request data.
+        *
+        * @param array $opts Options array
+        * @return array Options array with processed start and end date filter options
+        */
+       public static function processDateFilter( $opts ) {
+               $start = $opts['start'] ?: '';
+               $end = $opts['end'] ?: '';
+               $year = $opts['year'] ?: '';
+               $month = $opts['month'] ?: '';
+
+               if ( $start !== '' && $end !== '' && $start > $end ) {
+                       $temp = $start;
+                       $start = $end;
+                       $end = $temp;
+               }
+
+               // If year/month legacy filtering options are set, convert them to display the new stamp
+               if ( $year !== '' || $month !== '' ) {
+                       // Reuse getDateCond logic, but subtract a day because
+                       // the endpoints of our date range appear inclusive
+                       // but the internal end offsets are always exclusive
+                       $legacyTimestamp = ReverseChronologicalPager::getOffsetDate( $year, $month );
+                       $legacyDateTime = new DateTime( $legacyTimestamp->getTimestamp( TS_ISO_8601 ) );
+                       $legacyDateTime = $legacyDateTime->modify( '-1 day' );
+
+                       // Clear the new timestamp range options if used and
+                       // replace with the converted legacy timestamp
+                       $start = '';
+                       $end = $legacyDateTime->format( 'Y-m-d' );
+               }
+
+               $opts['start'] = $start;
+               $opts['end'] = $end;
+
+               return $opts;
+       }
 }
index 78e1092..43d7ad4 100644 (file)
@@ -195,6 +195,7 @@ class DeletedContribsPager extends IndexPager {
        function formatRow( $row ) {
                $ret = '';
                $classes = [];
+               $attribs = [];
 
                /*
                 * There may be more than just revision rows. To make sure that we'll only be processing
@@ -213,17 +214,20 @@ class DeletedContribsPager extends IndexPager {
                MediaWiki\restoreWarnings();
 
                if ( $validRevision ) {
+                       $attribs['data-mw-revid'] = $rev->getId();
                        $ret = $this->formatRevisionRow( $row );
                }
 
                // Let extensions add data
-               Hooks::run( 'DeletedContributionsLineEnding', [ $this, &$ret, $row, &$classes ] );
+               Hooks::run( 'DeletedContributionsLineEnding', [ $this, &$ret, $row, &$classes, &$attribs ] );
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
 
-               if ( $classes === [] && $ret === '' ) {
+               if ( $classes === [] && $attribs === [] && $ret === '' ) {
                        wfDebug( "Dropping Special:DeletedContribution row that could not be formatted\n" );
                        $ret = "<!-- Could not format Special:DeletedContribution row. -->\n";
                } else {
-                       $ret = Html::rawElement( 'li', [ 'class' => $classes ], $ret ) . "\n";
+                       $attribs['class'] = $classes;
+                       $ret = Html::rawElement( 'li', $attribs, $ret ) . "\n";
                }
 
                return $ret;
index b781930..001c296 100644 (file)
@@ -24,7 +24,7 @@
  */
 use MediaWiki\MediaWikiServices;
 
-class NewFilesPager extends ReverseChronologicalPager {
+class NewFilesPager extends RangeChronologicalPager {
 
        /**
         * @var ImageGalleryBase
@@ -41,11 +41,20 @@ class NewFilesPager extends ReverseChronologicalPager {
         * @param FormOptions $opts
         */
        function __construct( IContextSource $context, FormOptions $opts ) {
-               $this->opts = $opts;
+               parent::__construct( $context );
 
+               $this->opts = $opts;
                $this->setLimit( $opts->getValue( 'limit' ) );
 
-               parent::__construct( $context );
+               $startTimestamp = '';
+               $endTimestamp = '';
+               if ( $opts->getValue( 'start' ) ) {
+                       $startTimestamp = $opts->getValue( 'start' ) . ' 00:00:00';
+               }
+               if ( $opts->getValue( 'end' ) ) {
+                       $endTimestamp = $opts->getValue( 'end' ) . ' 23:59:59';
+               }
+               $this->getDateRangeCond( $startTimestamp, $endTimestamp );
        }
 
        function getQueryInfo() {
@@ -65,6 +74,20 @@ class NewFilesPager extends ReverseChronologicalPager {
                        }
                }
 
+               if ( $opts->getValue( 'newbies' ) ) {
+                       // newbie = most recent 1% of users
+                       $dbr = wfGetDB( DB_REPLICA );
+                       $max = $dbr->selectField( 'user', 'max(user_id)', false, __METHOD__ );
+                       $conds[] = 'img_user >' . (int)( $max - $max / 100 );
+
+                       // there's no point in looking for new user activity in a far past;
+                       // beyond a certain point, we'd just end up scanning the rest of the
+                       // table even though the users we're looking for didn't yet exist...
+                       // see T140537, (for ContribsPages, but similar to this)
+                       $conds[] = 'img_timestamp > ' .
+                               $dbr->addQuotes( $dbr->timestamp( wfTimestamp() - 30 * 24 * 60 * 60 ) );
+               }
+
                if ( !$opts->getValue( 'showbots' ) ) {
                        $groupsWithBotPermission = User::getGroupsWithPermission( 'bot' );
 
@@ -77,9 +100,7 @@ class NewFilesPager extends ReverseChronologicalPager {
                                        [
                                                'ug_group' => $groupsWithBotPermission,
                                                'ug_user = img_user',
-                                               $this->getConfig()->get( 'DisableUserGroupExpiry' ) ?
-                                                       '1' :
-                                                       'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() )
+                                               'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() )
                                        ]
                                ];
                        }
@@ -105,6 +126,10 @@ class NewFilesPager extends ReverseChronologicalPager {
                        $options[] = 'STRAIGHT_JOIN';
                }
 
+               if ( $opts->getValue( 'mediatype' ) ) {
+                       $conds['img_media_type'] = $opts->getValue( 'mediatype' );
+               }
+
                $likeVal = $opts->getValue( 'like' );
                if ( !$this->getConfig()->get( 'MiserMode' ) && $likeVal !== '' ) {
                        $dbr = wfGetDB( DB_REPLICA );
index d599599..9aef9ad 100644 (file)
@@ -112,9 +112,7 @@ class UsersPager extends AlphabeticPager {
 
                if ( $this->requestedGroup != '' ) {
                        $conds['ug_group'] = $this->requestedGroup;
-                       if ( !$this->getConfig()->get( 'DisableUserGroupExpiry' ) ) {
-                               $conds[] = 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() );
-                       }
+                       $conds[] = 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() );
                }
 
                if ( $this->requestedUser != '' ) {
index 352eb17..3a37c2e 100644 (file)
@@ -14,7 +14,7 @@
                </td>
        </tr>
        {{# lines }}
-       <tr class="{{# classes }}{{ . }} {{/ classes }}">
+       <tr class="{{# classes }}{{ . }} {{/ classes }}"{{{ attribs }}}>
                <td></td>
                <td class="mw-enhanced-rc">{{{ recentChangesFlags }}}&#160;</td>
                <td class="mw-enhanced-rc-nested">
index 9f6feb8..b793a58 100644 (file)
@@ -48,6 +48,12 @@ class RaggettWrapper {
                // Modify inline Microdata <link> and <meta> elements so they say <html-link> and <html-meta> so
                // we can trick Tidy into not stripping them out by including them in tidy's new-empty-tags config
                $wrappedtext = preg_replace( '!<(link|meta)([^>]*?)(/{0,1}>)!', '<html-$1$2$3', $wrappedtext );
+               // Similar for inline <style> tags, but those aren't empty.
+               $wrappedtext = preg_replace_callback( '!<style([^>]*)>(.*?)</style>!s', function ( $m ) {
+                       return '<html-style' . $m[1] . '>'
+                               . $this->replaceCallback( [ $m[2] ] )
+                               . '</html-style>';
+               }, $wrappedtext );
 
                // Preserve empty li elements (T49673) by abusing Tidy's datafld hack
                // The whitespace class is as in TY_(InitMap)
@@ -78,8 +84,9 @@ class RaggettWrapper {
         * @return string
         */
        public function postprocess( $text ) {
-               // Revert <html-{link,meta}> back to <{link,meta}>
+               // Revert <html-{link,meta,style}> back to <{link,meta,style}>
                $text = preg_replace( '!<html-(link|meta)([^>]*?)(/{0,1}>)!', '<$1$2$3', $text );
+               $text = preg_replace( '!<(/?)html-(style)([^>]*)>!', '<$1$2$3>', $text );
 
                // Remove datafld
                $text = str_replace( '<li datafld=""', '<li', $text );
index 3dc727b..c8a715b 100644 (file)
@@ -5,7 +5,6 @@ namespace MediaWiki\Tidy;
 use RemexHtml\HTMLData;
 use RemexHtml\Serializer\HtmlFormatter;
 use RemexHtml\Serializer\SerializerNode;
-use RemexHtml\Tokenizer\PlainAttributes;
 
 /**
  * @internal
index d93ce22..d4a3199 100644 (file)
@@ -20,3 +20,5 @@ fix-uri: no
 # html-{meta,link} is a hack we use to prevent Tidy from stripping <meta> and <link> used in the body for Microdata
 new-empty-tags: html-meta, html-link, wbr, source, track
 new-inline-tags: video, audio, bdi, data, time, mark
+# html-style is a hack we use to prevent pre-HTML5 versions of Tidy from stripping <style> used in the body for TemplateStyles
+new-blocklevel-tags: html-style
index 2dddac5..213343f 100644 (file)
@@ -34,7 +34,7 @@ class MalformedTitleException extends Exception implements ILocalizedException {
         * $titleText will be appended if it's not null. (since MW 1.26)
         */
        public function __construct(
-               $errorMessage = null, $titleText = null, $errorMessageParameters = []
+               $errorMessage, $titleText = null, $errorMessageParameters = []
        ) {
                $this->errorMessage = $errorMessage;
                $this->titleText = $titleText;
@@ -59,7 +59,7 @@ class MalformedTitleException extends Exception implements ILocalizedException {
 
        /**
         * @since 1.26
-        * @return string|null
+        * @return string
         */
        public function getErrorMessage() {
                return $this->errorMessage;
index 2c0afdf..0868ce6 100644 (file)
@@ -798,7 +798,7 @@ abstract class UploadBase {
         * Returns the title of the file to be uploaded. Sets mTitleError in case
         * the name was illegal.
         *
-        * @return Title The title of the file or null in case the name was illegal
+        * @return Title|null The title of the file or null in case the name was illegal
         */
        public function getTitle() {
                if ( $this->mTitle !== false ) {
@@ -2113,9 +2113,10 @@ abstract class UploadBase {
         * @return Status[]|bool
         */
        public static function getSessionStatus( User $user, $statusKey ) {
-               $key = wfMemcKey( 'uploadstatus', $user->getId() ?: md5( $user->getName() ), $statusKey );
+               $cache = MediaWikiServices::getInstance()->getMainObjectStash();
+               $key = $cache->makeKey( 'uploadstatus', $user->getId() ?: md5( $user->getName() ), $statusKey );
 
-               return MediaWikiServices::getInstance()->getMainObjectStash()->get( $key );
+               return $cache->get( $key );
        }
 
        /**
@@ -2129,9 +2130,9 @@ abstract class UploadBase {
         * @return void
         */
        public static function setSessionStatus( User $user, $statusKey, $value ) {
-               $key = wfMemcKey( 'uploadstatus', $user->getId() ?: md5( $user->getName() ), $statusKey );
-
                $cache = MediaWikiServices::getInstance()->getMainObjectStash();
+               $key = $cache->makeKey( 'uploadstatus', $user->getId() ?: md5( $user->getName() ), $statusKey );
+
                if ( $value === false ) {
                        $cache->delete( $key );
                } else {
index 4ee256c..dd16fb7 100644 (file)
@@ -100,9 +100,10 @@ class PasswordReset implements LoggerAwareInterface {
                        } elseif ( !$user->isAllowed( 'editmyprivateinfo' ) ) {
                                // Maybe not all users have permission to change private data
                                $status = StatusValue::newFatal( 'badaccess' );
-                       } elseif ( $user->isBlocked() ) {
+                       } elseif ( $this->isBlocked( $user ) ) {
                                // Maybe the user is blocked (check this here rather than relying on the parent
-                               // method as we have a more specific error message to use here
+                               // method as we have a more specific error message to use here and we want to
+                               // ignore some types of blocks)
                                $status = StatusValue::newFatal( 'blocked-mailpassword' );
                        }
 
@@ -250,6 +251,37 @@ class PasswordReset implements LoggerAwareInterface {
                return StatusValue::newGood( $passwords );
        }
 
+       /**
+        * Check whether the user is blocked.
+        * Ignores certain types of system blocks that are only meant to force users to log in.
+        * @param User $user
+        * @return bool
+        * @since 1.30
+        */
+       protected function isBlocked( User $user ) {
+               $block = $user->getBlock() ?: $user->getGlobalBlock();
+               if ( !$block ) {
+                       return false;
+               }
+               $type = $block->getSystemBlockType();
+               if ( in_array( $type, [ null, 'global-block' ], true ) ) {
+                       // Normal block. Maybe it was meant for someone else and the user just needs to log in;
+                       // or maybe it was issued specifically to prevent some IP from messing with password
+                       // reset? Go out on a limb and use the registration allowed flag to decide.
+                       return $block->prevents( 'createaccount' );
+               } elseif ( $type === 'proxy' ) {
+                       // we disallow actions through proxy even if the user is logged in
+                       // so it makes sense to disallow password resets as well
+                       return true;
+               } elseif ( in_array( $type, [ 'dnsbl', 'wgSoftBlockRanges' ], true ) ) {
+                       // these are just meant to force login so let's not prevent that
+                       return false;
+               } else {
+                       // some extension - we'll have to guess
+                       return true;
+               }
+       }
+
        /**
         * @param string $email
         * @return User[]
index 30e370e..4d16594 100644 (file)
@@ -20,6 +20,7 @@
  * @file
  */
 
+use IPSet\IPSet;
 use MediaWiki\MediaWikiServices;
 use MediaWiki\Session\SessionManager;
 use MediaWiki\Session\Token;
@@ -28,6 +29,7 @@ use MediaWiki\Auth\AuthenticationResponse;
 use MediaWiki\Auth\AuthenticationRequest;
 use Wikimedia\ScopedCallback;
 use Wikimedia\Rdbms\Database;
+use Wikimedia\Rdbms\DBExpectedError;
 
 /**
  * String Some punctuation to prevent editing from broken text-mangling proxies.
@@ -508,8 +510,18 @@ class User implements IDBAccessObject {
 
                                $ttl = $cache->adaptiveTTL( wfTimestamp( TS_UNIX, $this->mTouched ), $ttl );
 
-                               return $data;
+                               // if a user group membership is about to expire, the cache needs to
+                               // expire at that time (T163691)
+                               foreach ( $this->mGroupMemberships as $ugm ) {
+                                       if ( $ugm->getExpiry() ) {
+                                               $secondsUntilExpiry = wfTimestamp( TS_UNIX, $ugm->getExpiry() ) - time();
+                                               if ( $secondsUntilExpiry > 0 && $secondsUntilExpiry < $ttl ) {
+                                                       $ttl = $secondsUntilExpiry;
+                                               }
+                                       }
+                               }
 
+                               return $data;
                        },
                        [ 'pcTTL' => $cache::TTL_PROC_LONG, 'version' => self::VERSION ]
                );
@@ -681,19 +693,31 @@ class User implements IDBAccessObject {
                        return null;
                }
 
-               $fields = self::selectFields();
-
-               $dbw = wfGetDB( DB_MASTER );
-               $row = $dbw->selectRow(
+               $dbr = wfGetDB( DB_REPLICA );
+               $row = $dbr->selectRow(
                        'user',
-                       $fields,
+                       self::selectFields(),
                        [ 'user_name' => $name ],
                        __METHOD__
                );
+               if ( !$row ) {
+                       // Try the master database...
+                       $dbw = wfGetDB( DB_MASTER );
+                       $row = $dbw->selectRow(
+                               'user',
+                               self::selectFields(),
+                               [ 'user_name' => $name ],
+                               __METHOD__
+                       );
+               }
+
                if ( !$row ) {
                        // No user. Create it?
-                       return $options['create'] ? self::createNew( $name, [ 'token' => self::INVALID_TOKEN ] ) : null;
+                       return $options['create']
+                               ? self::createNew( $name, [ 'token' => self::INVALID_TOKEN ] )
+                               : null;
                }
+
                $user = self::newFromRow( $row );
 
                // A user is considered to exist as a non-system user if it can
@@ -1842,18 +1866,33 @@ class User implements IDBAccessObject {
                        $wgProxyList = array_map( 'trim', file( $wgProxyList ) );
                }
 
-               if ( is_array( $wgProxyList ) ) {
-                       if (
-                               // Look for IP as value
-                               array_search( $ip, $wgProxyList ) !== false ||
-                               // Look for IP as key (for backwards-compatility)
-                               array_key_exists( $ip, $wgProxyList )
-                       ) {
-                               return true;
+               $resultProxyList = [];
+               $deprecatedIPEntries = [];
+
+               // backward compatibility: move all ip addresses in keys to values
+               foreach ( $wgProxyList as $key => $value ) {
+                       $keyIsIP = IP::isIPAddress( $key );
+                       $valueIsIP = IP::isIPAddress( $value );
+                       if ( $keyIsIP && !$valueIsIP ) {
+                               $deprecatedIPEntries[] = $key;
+                               $resultProxyList[] = $key;
+                       } elseif ( $keyIsIP && $valueIsIP ) {
+                               $deprecatedIPEntries[] = $key;
+                               $resultProxyList[] = $key;
+                               $resultProxyList[] = $value;
+                       } else {
+                               $resultProxyList[] = $value;
                        }
                }
 
-               return false;
+               if ( $deprecatedIPEntries ) {
+                       wfDeprecated(
+                               'IP addresses in the keys of $wgProxyList (found the following IP addresses in keys: ' .
+                               implode( ', ', $deprecatedIPEntries ) . ', please move them to values)', '1.30' );
+               }
+
+               $proxyListIPSet = new IPSet( $resultProxyList );
+               return $proxyListIPSet->match( $ip );
        }
 
        /**
@@ -1914,11 +1953,12 @@ class User implements IDBAccessObject {
                $id = $this->getId();
                $userLimit = false;
                $isNewbie = $this->isNewbie();
+               $cache = ObjectCache::getLocalClusterInstance();
 
                if ( $id == 0 ) {
                        // limits for anons
                        if ( isset( $limits['anon'] ) ) {
-                               $keys[wfMemcKey( 'limiter', $action, 'anon' )] = $limits['anon'];
+                               $keys[$cache->makeKey( 'limiter', $action, 'anon' )] = $limits['anon'];
                        }
                } else {
                        // limits for logged-in users
@@ -1927,7 +1967,7 @@ class User implements IDBAccessObject {
                        }
                        // limits for newbie logged-in users
                        if ( $isNewbie && isset( $limits['newbie'] ) ) {
-                               $keys[wfMemcKey( 'limiter', $action, 'user', $id )] = $limits['newbie'];
+                               $keys[$cache->makeKey( 'limiter', $action, 'user', $id )] = $limits['newbie'];
                        }
                }
 
@@ -1964,7 +2004,7 @@ class User implements IDBAccessObject {
                if ( $userLimit !== false ) {
                        list( $max, $period ) = $userLimit;
                        wfDebug( __METHOD__ . ": effective user limit: $max in {$period}s\n" );
-                       $keys[wfMemcKey( 'limiter', $action, 'user', $id )] = $userLimit;
+                       $keys[$cache->makeKey( 'limiter', $action, 'user', $id )] = $userLimit;
                }
 
                // ip-based limits for all ping-limitable users
@@ -1991,8 +2031,6 @@ class User implements IDBAccessObject {
                        }
                }
 
-               $cache = ObjectCache::getLocalClusterInstance();
-
                $triggered = false;
                foreach ( $keys as $key => $limit ) {
                        list( $max, $period ) = $limit;
@@ -2501,8 +2539,9 @@ class User implements IDBAccessObject {
        public function touch() {
                $id = $this->getId();
                if ( $id ) {
-                       $key = wfMemcKey( 'user-quicktouched', 'id', $id );
-                       ObjectCache::getMainWANInstance()->touchCheckKey( $key );
+                       $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+                       $key = $cache->makeKey( 'user-quicktouched', 'id', $id );
+                       $cache->touchCheckKey( $key );
                        $this->mQuickTouched = null;
                }
        }
@@ -2529,8 +2568,8 @@ class User implements IDBAccessObject {
 
                if ( $this->mId ) {
                        if ( $this->mQuickTouched === null ) {
-                               $key = wfMemcKey( 'user-quicktouched', 'id', $this->mId );
-                               $cache = ObjectCache::getMainWANInstance();
+                               $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+                               $key = $cache->makeKey( 'user-quicktouched', 'id', $this->mId );
 
                                $this->mQuickTouched = wfTimestamp( TS_MW, $cache->getCheckKeyTime( $key ) );
                        }
@@ -4143,6 +4182,10 @@ class User implements IDBAccessObject {
                        $this->setToken(); // init token
                }
 
+               if ( !is_string( $this->mName ) ) {
+                       throw new RuntimeException( "User name field is not set." );
+               }
+
                $this->mTouched = $this->newTouchedTimestamp();
 
                $noPass = PasswordFactory::newInvalidPassword()->toString();
@@ -5065,6 +5108,9 @@ class User implements IDBAccessObject {
 
        /**
         * Deferred version of incEditCountImmediate()
+        *
+        * This function, rather than incEditCountImmediate(), should be used for
+        * most cases as it avoids potential deadlocks caused by concurrent editing.
         */
        public function incEditCount() {
                wfGetDB( DB_MASTER )->onTransactionPreCommitOrIdle(
index 81a4083..cf05df3 100644 (file)
@@ -49,11 +49,6 @@ class UserGroupMembership {
         * @param string|null $expiry Timestamp of expiry in TS_MW format, or null if no expiry
         */
        public function __construct( $userId = 0, $group = null, $expiry = null ) {
-               global $wgDisableUserGroupExpiry;
-               if ( $wgDisableUserGroupExpiry ) {
-                       $expiry = null;
-               }
-
                $this->userId = (int)$userId;
                $this->group = $group; // TODO throw on invalid group?
                $this->expiry = $expiry ?: null;
@@ -77,26 +72,15 @@ class UserGroupMembership {
         * @return string|null Timestamp of expiry in TS_MW format, or null if no expiry
         */
        public function getExpiry() {
-               global $wgDisableUserGroupExpiry;
-               if ( $wgDisableUserGroupExpiry ) {
-                       return null;
-               }
-
                return $this->expiry;
        }
 
        protected function initFromRow( $row ) {
-               global $wgDisableUserGroupExpiry;
-
                $this->userId = (int)$row->ug_user;
                $this->group = $row->ug_group;
-               if ( $wgDisableUserGroupExpiry ) {
-                       $this->expiry = null;
-               } else {
-                       $this->expiry = $row->ug_expiry === null ?
-                               null :
-                               wfTimestamp( TS_MW, $row->ug_expiry );
-               }
+               $this->expiry = $row->ug_expiry === null ?
+                       null :
+                       wfTimestamp( TS_MW, $row->ug_expiry );
        }
 
        /**
@@ -117,19 +101,11 @@ class UserGroupMembership {
         * @return array
         */
        public static function selectFields() {
-               global $wgDisableUserGroupExpiry;
-               if ( $wgDisableUserGroupExpiry ) {
-                       return [
-                               'ug_user',
-                               'ug_group',
-                       ];
-               } else {
-                       return [
-                               'ug_user',
-                               'ug_group',
-                               'ug_expiry',
-                       ];
-               }
+               return [
+                       'ug_user',
+                       'ug_group',
+                       'ug_expiry',
+               ];
        }
 
        /**
@@ -140,7 +116,6 @@ class UserGroupMembership {
         * @return bool Whether or not anything was deleted
         */
        public function delete( IDatabase $dbw = null ) {
-               global $wgDisableUserGroupExpiry;
                if ( wfReadOnly() ) {
                        return false;
                }
@@ -149,14 +124,10 @@ class UserGroupMembership {
                        $dbw = wfGetDB( DB_MASTER );
                }
 
-               if ( $wgDisableUserGroupExpiry ) {
-                       $dbw->delete( 'user_groups', $this->getDatabaseArray( $dbw ), __METHOD__ );
-               } else {
-                       $dbw->delete(
-                               'user_groups',
-                               [ 'ug_user' => $this->userId, 'ug_group' => $this->group ],
-                               __METHOD__ );
-               }
+               $dbw->delete(
+                       'user_groups',
+                       [ 'ug_user' => $this->userId, 'ug_group' => $this->group ],
+                       __METHOD__ );
                if ( !$dbw->affectedRows() ) {
                        return false;
                }
@@ -182,7 +153,6 @@ class UserGroupMembership {
         * @return bool Whether or not anything was inserted
         */
        public function insert( $allowUpdate = false, IDatabase $dbw = null ) {
-               global $wgDisableUserGroupExpiry;
                if ( $dbw === null ) {
                        $dbw = wfGetDB( DB_MASTER );
                }
@@ -206,7 +176,7 @@ class UserGroupMembership {
 
                // Don't collide with expired user group memberships
                // Do this after trying to insert, in order to avoid locking
-               if ( !$wgDisableUserGroupExpiry && !$affected ) {
+               if ( !$affected ) {
                        $conds = [
                                'ug_user' => $row['ug_user'],
                                'ug_group' => $row['ug_group'],
@@ -245,16 +215,11 @@ class UserGroupMembership {
         * @return array
         */
        protected function getDatabaseArray( IDatabase $db ) {
-               global $wgDisableUserGroupExpiry;
-
-               $a = [
+               return [
                        'ug_user' => $this->userId,
                        'ug_group' => $this->group,
+                       'ug_expiry' => $this->expiry ? $db->timestamp( $this->expiry ) : null,
                ];
-               if ( !$wgDisableUserGroupExpiry ) {
-                       $a['ug_expiry'] = $this->expiry ? $db->timestamp( $this->expiry ) : null;
-               }
-               return $a;
        }
 
        /**
@@ -262,8 +227,7 @@ class UserGroupMembership {
         * @return bool
         */
        public function isExpired() {
-               global $wgDisableUserGroupExpiry;
-               if ( $wgDisableUserGroupExpiry || !$this->expiry ) {
+               if ( !$this->expiry ) {
                        return false;
                } else {
                        return wfTimestampNow() > $this->expiry;
@@ -276,8 +240,7 @@ class UserGroupMembership {
         * @param IDatabase|null $dbw
         */
        public static function purgeExpired( IDatabase $dbw = null ) {
-               global $wgDisableUserGroupExpiry;
-               if ( $wgDisableUserGroupExpiry || wfReadOnly() ) {
+               if ( wfReadOnly() ) {
                        return;
                }
 
index 1dac0b1..54a8677 100644 (file)
@@ -212,7 +212,6 @@ global \${$this->variableName};
 ];
 
 EOD;
-
        }
 
        /**
index e107fb1..cab6a3d 100644 (file)
@@ -87,9 +87,9 @@ class BatchRowIterator implements RecursiveIterator {
 
        /**
         * @param IDatabase $db The database to read from
-        * @param string|array $table      The name or names of the table to read from
+        * @param string|array $table The name or names of the table to read from
         * @param string|array $primaryKey The name or names of the primary key columns
-        * @param integer      $batchSize  The number of rows to fetch per iteration
+        * @param integer $batchSize The number of rows to fetch per iteration
         * @throws InvalidArgumentException
         */
        public function __construct( IDatabase $db, $table, $primaryKey, $batchSize ) {
index 212f325..dd67fa8 100644 (file)
@@ -716,21 +716,3 @@ class ZipDirectoryReader {
        }
 }
 
-/**
- * Internal exception class. Will be caught by private code.
- */
-class ZipDirectoryReaderError extends Exception {
-       protected $errorCode;
-
-       function __construct( $code ) {
-               $this->errorCode = $code;
-               parent::__construct( "ZipDirectoryReader error: $code" );
-       }
-
-       /**
-        * @return mixed
-        */
-       function getErrorCode() {
-               return $this->errorCode;
-       }
-}
diff --git a/includes/utils/ZipDirectoryReaderError.php b/includes/utils/ZipDirectoryReaderError.php
new file mode 100644 (file)
index 0000000..592036e
--- /dev/null
@@ -0,0 +1,38 @@
+<?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
+ */
+
+/**
+ * Internal exception class. Will be caught by private code.
+ */
+class ZipDirectoryReaderError extends Exception {
+       protected $errorCode;
+
+       function __construct( $code ) {
+               $this->errorCode = $code;
+               parent::__construct( "ZipDirectoryReader error: $code" );
+       }
+
+       /**
+        * @return mixed
+        */
+       function getErrorCode() {
+               return $this->errorCode;
+       }
+}
diff --git a/includes/widget/SelectWithInputWidget.php b/includes/widget/SelectWithInputWidget.php
new file mode 100644 (file)
index 0000000..8faae82
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+/**
+ * MediaWiki Widgets – SelectWithInputWidget class.
+ *
+ * @copyright 2011-2017 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+namespace MediaWiki\Widget;
+
+use \OOUI\TextInputWidget;
+use \OOUI\DropdownInputWidget;
+
+/**
+ * Select and input widget.
+ */
+class SelectWithInputWidget extends \OOUI\Widget {
+
+       protected $textinput = null;
+       protected $dropdowninput = null;
+
+       /**
+        * A version of the SelectWithInputWidget, with `or` set to true.
+        *
+        * @param array $config Configuration options
+        * @param array $config['textinput'] Configuration for the TextInputWidget
+        * @param array $config['dropdowninput'] Configuration for the DropdownInputWidget
+        * @param boolean $config['or'] Configuration for whether the widget is dropdown AND input
+        *                              or dropdown OR input
+        */
+       public function __construct( array $config = [] ) {
+               // Configuration initialization
+               $config = array_merge(
+                       [
+                               'textinput' => [],
+                               'dropdowninput' => [],
+                               'or' => false
+                       ],
+                       $config
+               );
+
+               // Parent constructor
+               parent::__construct( $config );
+
+               // Properties
+               $this->config = $config;
+               $this->textinput = new TextInputWidget( $config['textinput'] );
+               $this->dropdowninput = new DropdownInputWidget( $config['dropdowninput'] );
+
+               // Initialization
+               $this
+                       ->addClasses( [ 'mw-widget-selectWithInputWidget' ] )
+                       ->appendContent( $this->dropdowninput, $this->textinput );
+       }
+
+       protected function getJavaScriptClassName() {
+               return 'mw.widgets.SelectWithInputWidget';
+       }
+
+       public function getConfig( &$config ) {
+               $config['textinput'] = $this->config['textinput'];
+               $config['dropdowninput'] = $this->config['dropdowninput'];
+               $config['or'] = $this->config['or'];
+               return parent::getConfig( $config );
+       }
+}
index 1911c79..ef93362 100644 (file)
@@ -8,6 +8,7 @@ use SearchResultSet;
 use SpecialSearch;
 use Title;
 use Html;
+use OOUI;
 
 /**
  * Renders one or more SearchResultSets into a sidebar grouped by
@@ -27,23 +28,22 @@ class InterwikiSearchResultSetWidget implements SearchResultSetWidget {
        protected $iwLookup;
        /** @var $output */
        protected $output;
-       /** @var $iwPrefixDisplayTypes */
-       protected $iwPrefixDisplayTypes;
+       /** @var bool $showMultimedia */
+       protected $showMultimedia;
 
        public function __construct(
                SpecialSearch $specialSearch,
                SearchResultWidget $resultWidget,
                LinkRenderer $linkRenderer,
-               InterwikiLookup $iwLookup
+               InterwikiLookup $iwLookup,
+               $showMultimedia = false
        ) {
                $this->specialSearch = $specialSearch;
                $this->resultWidget = $resultWidget;
                $this->linkRenderer = $linkRenderer;
                $this->iwLookup = $iwLookup;
                $this->output = $specialSearch->getOutput();
-               $this->iwPrefixDisplayTypes = $specialSearch->getConfig()->get(
-                       'InterwikiPrefixDisplayTypes'
-               );
+               $this->showMultimedia = $showMultimedia;
        }
        /**
         * @param string $term User provided search term
@@ -58,7 +58,9 @@ class InterwikiSearchResultSetWidget implements SearchResultSetWidget {
 
                $this->loadCustomCaptions();
 
-               $this->output->addModules( 'mediawiki.special.search.commonsInterwikiWidget' );
+               if ( $this->showMultimedia ) {
+                       $this->output->addModules( 'mediawiki.special.search.commonsInterwikiWidget' );
+               }
                $this->output->addModuleStyles( 'mediawiki.special.search.interwikiwidget.styles' );
 
                $iwResults = [];
@@ -80,22 +82,18 @@ class InterwikiSearchResultSetWidget implements SearchResultSetWidget {
                        $position = 0;
                        $iwResultItemOutput = '';
 
-                       $iwDisplayType = isset( $this->iwPrefixDisplayTypes[$iwPrefix] )
-                               ? $this->iwPrefixDisplayTypes[$iwPrefix]
-                               : "";
-
                        foreach ( $results as $result ) {
                                $iwResultItemOutput .= $this->resultWidget->render( $result, $term, $position++ );
                        }
 
-                       $headerHtml = $this->headerHtml( $term, $iwPrefix );
                        $footerHtml = $this->footerHtml( $term, $iwPrefix );
                        $iwResultListOutput .= Html::rawElement( 'li',
                                [
-                                       'class' => 'iw-resultset iw-resultset--' . $iwDisplayType,
-                                       'data-iw-resultset-pos' => $iwResultSetPos
+                                       'class' => 'iw-resultset',
+                                       'data-iw-resultset-pos' => $iwResultSetPos,
+                                       'data-iw-resultset-source' => $iwPrefix
                                ],
-                               $headerHtml .
+
                                $iwResultItemOutput .
                                $footerHtml
                        );
@@ -117,34 +115,6 @@ class InterwikiSearchResultSetWidget implements SearchResultSetWidget {
                );
        }
 
-       /**
-        * Generates an appropriate HTML header for the given interwiki prefix
-        *
-        * @param string $term User provided search term
-        * @param string $iwPrefix Interwiki prefix of wiki to show header for
-        * @return string HTML
-        */
-       protected function headerHtml( $term, $iwPrefix ) {
-
-               $iwDisplayType = isset( $this->iwPrefixDisplayTypes[$iwPrefix] )
-                       ? $this->iwPrefixDisplayTypes[$iwPrefix]
-                       : "";
-
-               if ( isset( $this->customCaptions[$iwPrefix] ) ) {
-                       /* customCaptions composed by loadCustomCaptions() with pre-escaped content. */
-                       $caption = $this->customCaptions[$iwPrefix];
-               } else {
-                       $interwiki = $this->iwLookup->fetch( $iwPrefix );
-                       $parsed = wfParseUrl( wfExpandUrl( $interwiki ? $interwiki->getURL() : '/' ) );
-                       $caption = $this->specialSearch->msg( 'search-interwiki-default', $parsed['host'] )->escaped();
-               }
-
-               return Html::rawElement( 'div', [ 'class' => 'iw-result__header' ],
-                       Html::rawElement( 'span', [ 'class' => 'iw-result__icon iw-result__icon--' . $iwDisplayType ] )
-                       . $caption
-               );
-       }
-
        /**
         * Generates an HTML footer for the given interwiki prefix
         *
@@ -158,13 +128,22 @@ class InterwikiSearchResultSetWidget implements SearchResultSetWidget {
                        [ 'search' => $term, 'fulltext' => 1 ]
                );
 
-               $searchLink = Html::rawElement(
-                       'a',
-                       [ 'href' => $href ],
-                       $this->specialSearch->msg( 'search-interwiki-more-results' )->escaped()
+               $interwiki = $this->iwLookup->fetch( $iwPrefix );
+               $parsed = wfParseUrl( wfExpandUrl( $interwiki ? $interwiki->getURL() : '/' ) );
+
+               if ( isset( $this->customCaptions[$iwPrefix] ) ) {
+                       $caption = $this->customCaptions[$iwPrefix];
+               } else {
+                       $caption = $this->specialSearch->msg( 'search-interwiki-default', $parsed['host'] )->escaped();
+               }
+
+               $searchLink = Html::rawElement( 'em', null,
+                       Html::rawElement( 'a', [ 'href' => $href, 'target' => '_blank' ], $caption )
                );
 
-               return Html::rawElement( 'div', [ 'class' => 'iw-result__footer' ], $searchLink );
+               return Html::rawElement( 'div',
+                       [ 'class' => 'iw-result__footer' ],
+                       $this->iwIcon( $iwPrefix ) . $searchLink );
        }
 
        protected function loadCustomCaptions() {
@@ -181,4 +160,33 @@ class InterwikiSearchResultSetWidget implements SearchResultSetWidget {
                        }
                }
        }
+
+       /**
+        * Generates a custom OOUI icon element with a favicon as the image.
+        * The favicon image URL is generated by parsing the interwiki URL
+        * and returning the default location of the favicon for that domain,
+        * which is assumed to be '/favicon.ico'.
+        *
+        * @param string $iwPrefix Interwiki prefix
+        * @return OOUI\IconWidget
+        **/
+       protected function iwIcon( $iwPrefix ) {
+
+               $interwiki = $this->iwLookup->fetch( $iwPrefix );
+               $parsed = wfParseUrl( wfExpandUrl( $interwiki ? $interwiki->getURL() : '/' ) );
+
+               $iwIconUrl = $parsed['scheme'] .
+                       $parsed['delimiter'] .
+                       $parsed['host'] .
+                       ( isset ( $parsed['port'] ) ? ':' . $parsed['port'] : '' ) .
+                       '/favicon.ico';
+
+               $iwIcon = new OOUI\IconWidget( [
+                       'icon' => 'favicon'
+                ] );
+
+                $iwIcon->setAttributes( [ 'style' => "background-image:url($iwIconUrl);" ] );
+
+               return $iwIcon;
+       }
 }
index 6b51db5..861fb6d 100644 (file)
@@ -6,7 +6,6 @@ use HtmlArmor;
 use MediaWiki\Linker\LinkRenderer;
 use SearchResult;
 use SpecialSearch;
-use Title;
 use Html;
 
 /**
@@ -17,13 +16,10 @@ class InterwikiSearchResultWidget implements SearchResultWidget {
        protected $specialSearch;
        /** @var LinkRenderer */
        protected $linkRenderer;
-       /** @var $iwPrefixDisplayTypes */
-       protected $iwPrefixDisplayTypes;
 
        public function __construct( SpecialSearch $specialSearch, LinkRenderer $linkRenderer ) {
                $this->specialSearch = $specialSearch;
                $this->linkRenderer = $linkRenderer;
-               $this->iwPrefixDisplayTypes = $specialSearch->getConfig()->get( 'InterwikiPrefixDisplayTypes' );
        }
 
        /**
@@ -38,9 +34,6 @@ class InterwikiSearchResultWidget implements SearchResultWidget {
                $iwPrefix = $result->getTitle()->getInterwiki();
                $titleSnippet = $result->getTitleSnippet();
                $snippet = $result->getTextSnippet( $terms );
-               $displayType = isset( $this->iwPrefixDisplayTypes[$iwPrefix] )
-                       ? $this->iwPrefixDisplayTypes[$iwPrefix]
-                       : "";
 
                if ( $titleSnippet ) {
                        $titleSnippet = new HtmlArmor( $titleSnippet );
@@ -69,18 +62,7 @@ class InterwikiSearchResultWidget implements SearchResultWidget {
                        );
                }
 
-               switch ( $displayType ) {
-                       case 'definition':
-                               return "<div class='iw-result__content'>" .
-                                       "<span class='iw-result__title'>{$link} {$redirect}: </span>" .
-                                       $snippet .
-                               "</div>";
-                       case 'quotation':
-                               return "<div class='iw-result__content'>{$snippet}</div>" .
-                                       "<div class='iw-result__title'>{$link} {$redirect}</div>";
-                       default:
-                               return "<div class='iw-result__title'>{$link} {$redirect}</div>" .
-                                       "<div class='iw-result__content'>{$snippet}</div>";
-               }
+               return Html::rawElement( 'div', [ 'class' => 'iw-result__title' ], $link . ' ' . $redirect ) .
+                       Html::rawElement( 'div', [ 'class'=> 'iw-result__content' ], $snippet );
        }
 }
index a7407a0..008ed19 100644 (file)
@@ -103,7 +103,11 @@ class SearchFormWidget {
                if ( $totalResults > 0 && $offset < $totalResults ) {
                        $html .= Xml::tags(
                                'div',
-                               [ 'class' => 'results-info' ],
+                               [
+                                       'class' => 'results-info',
+                                       'data-mw-num-results-offset' => $offset,
+                                       'data-mw-num-results-total' => $totalResults
+                               ],
                                $this->specialSearch->msg( 'search-showingresults' )
                                        ->numParams( $offset + 1, $offset + $numResults, $totalResults )
                                        ->numParams( $numResults )
index 04e1e21..4df2eb5 100644 (file)
@@ -14,7 +14,7 @@ use Html;
  * interwiki prefix. Includes a per-wiki header indicating where
  * the results are from.
  */
-class SimpleSearchResultSetWidget implements SearchResultSetWidget{
+class SimpleSearchResultSetWidget implements SearchResultSetWidget {
        /** @var SpecialSearch */
        protected $specialSearch;
        /** @var SearchResultWidget */
index 9fe816a..8190442 100644 (file)
@@ -6,7 +6,6 @@ use HtmlArmor;
 use MediaWiki\Linker\LinkRenderer;
 use SearchResult;
 use SpecialSearch;
-use Title;
 
 /**
  * Renders a simple one-line result
index 78019a7..0cddc99 100644 (file)
  */
 
 /**
- * A fake language converter
+ * A fake language variant converter. Languages which do not implement variant
+ * conversion, for example, English, should return a FakeConverter rather than a
+ * LanguageConverter when asked for their converter. The fake converter just
+ * returns text unchanged, i.e. it doesn't do any conversion.
+ *
+ * See https://www.mediawiki.org/wiki/Writing_systems#LanguageConverter.
  *
  * @ingroup Language
  */
@@ -64,6 +69,9 @@ class FakeConverter {
                return $this->mLang->getFormattedNsText( $ns );
        }
 
+       /**
+        * @return string[]
+        */
        function getVariants() {
                return [ $this->mLang->getCode() ];
        }
index 0672315..b5eef8c 100644 (file)
@@ -203,10 +203,11 @@ class Language {
        /**
         * Create a language object for a given language code
         * @param string $code
+        * @param $fallback boolean Whether we're going through language fallback chain
         * @throws MWException
         * @return Language
         */
-       protected static function newFromCode( $code ) {
+       protected static function newFromCode( $code, $fallback = false ) {
                if ( !Language::isValidCode( $code ) ) {
                        throw new MWException( "Invalid language code \"$code\"" );
                }
@@ -220,7 +221,7 @@ class Language {
                }
 
                // Check if there is a language class for the code
-               $class = self::classFromCode( $code );
+               $class = self::classFromCode( $code, $fallback );
                if ( class_exists( $class ) ) {
                        $lang = new $class;
                        return $lang;
@@ -725,7 +726,7 @@ class Language {
        }
 
        /**
-        * @return array
+        * @return string[]|bool List of date format preference keys, or false if disabled.
         */
        public function getDatePreferences() {
                return self::$dataCache->getItem( $this->mCode, 'datePreferences' );
@@ -826,7 +827,7 @@ class Language {
         * @return array Language code => language name
         */
        private static function fetchLanguageNamesUncached( $inLanguage = null, $include = 'mw' ) {
-               global $wgExtraLanguageNames;
+               global $wgExtraLanguageNames, $wgUsePigLatinVariant;
 
                // If passed an invalid language code to use, fallback to en
                if ( $inLanguage !== null && !Language::isValidCode( $inLanguage ) ) {
@@ -841,6 +842,11 @@ class Language {
                }
 
                $mwNames = $wgExtraLanguageNames + MediaWiki\Languages\Data\Names::$names;
+               if ( $wgUsePigLatinVariant ) {
+                       // Pig Latin (for variant development)
+                       $mwNames['en-x-piglatin'] = 'Igpay Atinlay';
+               }
+
                foreach ( $mwNames as $mwCode => $mwName ) {
                        # - Prefer own MediaWiki native name when not using the hook
                        # - For other names just add if not added through the hook
@@ -4127,7 +4133,7 @@ class Language {
         * Get the list of variants supported by this language
         * see sample implementation in LanguageZh.php
         *
-        * @return array An array of language codes
+        * @return string[] An array of language codes
         */
        public function getVariants() {
                return $this->mConverter->getVariants();
@@ -4338,10 +4344,11 @@ class Language {
 
        /**
         * @param string $code
+        * @param boolean $fallback Whether we're going through language fallback chain
         * @return string Name of the language class
         */
-       public static function classFromCode( $code ) {
-               if ( $code == 'en' ) {
+       public static function classFromCode( $code, $fallback = true ) {
+               if ( $fallback && $code == 'en' ) {
                        return 'Language';
                } else {
                        return 'Language' . str_replace( '-', '_', ucfirst( $code ) );
index 6286a2b..19d644c 100644 (file)
@@ -36,6 +36,7 @@ class LanguageConverter {
         * @var array
         */
        static public $languagesWithVariants = [
+               'en',
                'gan',
                'iu',
                'kk',
@@ -48,6 +49,10 @@ class LanguageConverter {
        ];
 
        public $mMainLanguageCode;
+
+       /**
+        * @var string[]
+        */
        public $mVariants;
        public $mVariantFallbacks;
        public $mVariantNames;
@@ -56,11 +61,6 @@ class LanguageConverter {
        // 'bidirectional' 'unidirectional' 'disable' for each variant
        public $mManualLevel;
 
-       /**
-        * @var string Memcached key name
-        */
-       public $mCacheKey;
-
        public $mLangObj;
        public $mFlags;
        public $mDescCodeSep = ':', $mDescVarSep = ';';
@@ -75,11 +75,9 @@ class LanguageConverter {
        const CACHE_VERSION_KEY = 'VERSION 7';
 
        /**
-        * Constructor
-        *
         * @param Language $langobj
         * @param string $maincode The main language code of this language
-        * @param array $variants The supported variants of this language
+        * @param string[] $variants The supported variants of this language
         * @param array $variantfallbacks The fallback language of each variant
         * @param array $flags Defining the custom strings that maps to the flags
         * @param array $manualLevel Limit for supported variants
@@ -93,7 +91,6 @@ class LanguageConverter {
                $this->mVariants = array_diff( $variants, $wgDisabledVariants );
                $this->mVariantFallbacks = $variantfallbacks;
                $this->mVariantNames = Language::fetchLanguageNames();
-               $this->mCacheKey = wfMemcKey( 'conversiontables', $maincode );
                $defaultflags = [
                        // 'S' show converted text
                        // '+' add rules for alltext
@@ -122,7 +119,7 @@ class LanguageConverter {
         * Get all valid variants.
         * Call this instead of using $this->mVariants directly.
         *
-        * @return array Contains all valid variants
+        * @return string[] Contains all valid variants
         */
        public function getVariants() {
                return $this->mVariants;
@@ -864,8 +861,9 @@ class LanguageConverter {
                $this->mTablesLoaded = true;
                $this->mTables = false;
                $cache = ObjectCache::getInstance( $wgLanguageConverterCacheType );
+               $cacheKey = $cache->makeKey( 'conversiontables', $this->mMainLanguageCode );
                if ( $fromCache ) {
-                       $this->mTables = $cache->get( $this->mCacheKey );
+                       $this->mTables = $cache->get( $cacheKey );
                }
                if ( !$this->mTables || !array_key_exists( self::CACHE_VERSION_KEY, $this->mTables ) ) {
                        // not in cache, or we need a fresh reload.
@@ -880,7 +878,7 @@ class LanguageConverter {
                        $this->postLoadTables();
                        $this->mTables[self::CACHE_VERSION_KEY] = true;
 
-                       $cache->set( $this->mCacheKey, $this->mTables, 43200 );
+                       $cache->set( $cacheKey, $this->mTables, 43200 );
                }
        }
 
diff --git a/languages/MessageLocalizer.php b/languages/MessageLocalizer.php
new file mode 100644 (file)
index 0000000..9a1796b
--- /dev/null
@@ -0,0 +1,43 @@
+<?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
+ * @ingroup Language
+ */
+
+/**
+ * Interface for localizing messages in MediaWiki
+ *
+ * @since 1.30
+ * @ingroup Language
+ */
+interface MessageLocalizer {
+
+       /**
+        * This is the method for getting translated interface messages.
+        *
+        * @see https://www.mediawiki.org/wiki/Manual:Messages_API
+        * @see Message::__construct
+        *
+        * @param string|string[]|MessageSpecifier $key Message key, or array of keys,
+        *   or a MessageSpecifier.
+        * @param mixed $params,... Normal message parameters
+        * @return Message
+        */
+       public function msg( $key /*...*/ );
+
+}
diff --git a/languages/classes/LanguageEn.php b/languages/classes/LanguageEn.php
new file mode 100644 (file)
index 0000000..dcb7a91
--- /dev/null
@@ -0,0 +1,85 @@
+<?php
+/**
+ * English 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
+ */
+
+class EnConverter extends LanguageConverter {
+       /**
+        * Dummy methods required by base class.
+        */
+       function loadDefaultTables() {
+               $this->mTables = [
+                       'en' => new ReplacementArray(),
+                       'en-x-piglatin' => new ReplacementArray(),
+               ];
+       }
+
+       /**
+        * Translates text into Pig Latin. This allows developers to test the language variants
+        * functionality and user interface without having to switch wiki language away from default.
+        *
+        * @param $text string
+        * @param $toVariant string
+        * @return string
+        */
+       function translate( $text, $toVariant ) {
+               if ( $toVariant === 'en-x-piglatin' ) {
+                       // Only process words composed of standard English alphabet, leave the rest unchanged.
+                       // This skips some English words like 'naïve' or 'résumé', but we can live with that.
+                       // Ignore single letters and words which aren't lowercase or uppercase-first.
+                       return preg_replace_callback( '/[A-Za-z][a-z]+/', function ( $matches ) {
+                               $word = $matches[0];
+                               if ( preg_match( '/^[aeiou]/i', $word ) ) {
+                                       return $word . 'way';
+                               } else {
+                                       return preg_replace_callback( '/^(qu|[^aeiou][^aeiouy]*)(.*)$/i', function ( $m ) {
+                                               $ucfirst = strtoupper( $m[1][0] ) === $m[1][0];
+                                               if ( $ucfirst ) {
+                                                       return ucfirst( $m[2] ) . lcfirst( $m[1] ) . 'ay';
+                                               } else {
+                                                       return $m[2] . $m[1] . 'ay';
+                                               }
+                                       }, $word );
+                               }
+                       }, $text );
+               } else {
+                       return $text;
+               }
+       }
+}
+
+/**
+ * English
+ *
+ * @ingroup Language
+ */
+class LanguageEn extends Language {
+       function __construct() {
+               global $wgUsePigLatinVariant, $wgHooks;
+
+               parent::__construct();
+
+               if ( $wgUsePigLatinVariant ) {
+                       $this->mConverter = new EnConverter( $this, 'en', [ 'en', 'en-x-piglatin' ] );
+                       $wgHooks['PageContentSaveComplete'][] = $this->mConverter;
+               }
+       }
+}
index 39e02e6..76ced3e 100644 (file)
@@ -132,6 +132,7 @@ class Names {
                'de-at' => 'Österreichisches Deutsch', # Austrian German
                'de-ch' => 'Schweizer Hochdeutsch', # Swiss Standard German
                'de-formal' => "Deutsch (Sie-Form)\xE2\x80\x8E", # German - formal address ("Sie")
+               'din' => 'Thuɔŋjäŋ', # Dinka
                'diq' => 'Zazaki', # Zazaki
                'dsb' => 'dolnoserbski', # Lower Sorbian
                'dtp' => 'Dusun Bundu-liwan', # Central Dusun
@@ -221,6 +222,7 @@ class Names {
                'kab' => 'Taqbaylit', # Kabyle
                'kbd' => 'Адыгэбзэ', # Kabardian
                'kbd-cyrl' => 'Адыгэбзэ', # Kabardian (Cyrillic)
+               'kbp' => 'Kabɩyɛ', # Kabiyè
                'kg' => 'Kongo', # Kongo, (FIXME!) should probaly be KiKongo or KiKoongo
                'khw' => 'کھوار', # Khowar
                'ki' => 'Gĩkũyũ', # Gikuyu
index 55813ae..03ebe21 100644 (file)
@@ -4186,6 +4186,7 @@ public static $zh2Hant = [
 '十出生' => '十出生',
 '十出祁山' => '十出祁山',
 '十出头' => '十出頭',
+'十出頭' => '十出頭',
 '十周后' => '十周後',
 '十天后' => '十天後',
 '十扎' => '十紮',
@@ -5847,7 +5848,10 @@ public static $zh2Hant = [
 '方便面' => '方便麵',
 '方向' => '方向',
 '方法里' => '方法裡',
+'于山东' => '於山東',
+'于山西' => '於山西',
 '于海上' => '於海上',
+'于海拔' => '於海拔',
 '于海边' => '於海邊',
 '于震中' => '於震中',
 '于震前' => '於震前',
@@ -6663,7 +6667,8 @@ public static $zh2Hant = [
 '症结' => '癥結',
 '癸丑' => '癸丑',
 '发干' => '發乾',
-'发呆' => '發獃',
+'发状态' => '發狀態',
+'发状况' => '發狀況',
 '发签' => '發籤',
 '发松' => '發鬆',
 '发面' => '發麵',
@@ -6959,7 +6964,7 @@ public static $zh2Hant = [
 '个中翘楚' => '箇中翹楚',
 '个中道理' => '箇中道理',
 '个中高手' => '箇中高手',
-'个旧' => '箇舊',
+'个旧市' => '箇舊市',
 '算历' => '算曆',
 '算历史' => '算歷史',
 '算准' => '算準',
@@ -8329,6 +8334,7 @@ public static $zh2Hant = [
 '铜钟' => '銅鐘',
 '铯钟' => '銫鐘',
 '铝制' => '鋁製',
+'锌制' => '鋅製',
 '钢之炼金术师' => '鋼之鍊金術師',
 '钢梁' => '鋼樑',
 '钢制' => '鋼製',
@@ -8439,6 +8445,7 @@ public static $zh2Hant = [
 '钟点' => '鐘點',
 '钟鼎' => '鐘鼎',
 '钟鼓' => '鐘鼓',
+'铁制' => '鐵製',
 '铁锈' => '鐵鏽',
 '铁钟' => '鐵鐘',
 '铸钟' => '鑄鐘',
@@ -8500,6 +8507,7 @@ public static $zh2Hant = [
 '辟谣' => '闢謠',
 '辟辟' => '闢辟',
 '辟邪以律' => '闢邪以律',
+'防制法' => '防制法',
 '防水表' => '防水錶',
 '防御' => '防禦',
 '防范' => '防範',
@@ -8569,6 +8577,7 @@ public static $zh2Hant = [
 '雪里' => '雪裡',
 '雪里红' => '雪裡紅',
 '雪里蕻' => '雪裡蕻',
+'云南个旧' => '雲南箇舊',
 '云吞' => '雲吞',
 '云吞面' => '雲吞麵',
 '云笈七签' => '雲笈七籤',
index 6512225..a741daa 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Gutsul",
-                       "Amir E. Aharoni (amir.aharoni@mail.huji.ac.il)"
+                       "Amir E. Aharoni (amir.aharoni@mail.huji.ac.il)",
+                       "Eugene Gvozdetsky (epgvozdet@gmail.com)"
                ],
                "comment": "These rules don't cover the whole grammar of the language, and are intended only for names of languages and Wikimedia projects."
        },
        ],
        "accusative": [
                [ "(.+)ія$", "$1ію" ]
+       ],
+       "languagegen": [
+               [ "@metadata", [
+                       "comment", "мова в родовому відмінку: '(з) української'"
+               ] ],
+               [ "(.+)ка$", "$1кої" ],
+               [ "іврит$", "івриту" ],
+               [ "їдиш$", "їдишу" ],
+               [ "(.+)$", "$1" ]
+       ],
+       "languageadverb": [
+               [ "@metadata", [
+                       "comment", "прислівник з назвою мови: 'українською'"
+               ] ],
+               [ "(.+)ка$", "$1кою" ],
+               [ "іврит$", "івритом" ],
+               [ "їдиш$", "їдишом" ],
+               [ "(.+)$", "мовою $1" ]
        ]
 }
index 9d10b51..699a2f6 100644 (file)
@@ -11,7 +11,8 @@
                        "Sayed Muddasir",
                        "Si Gam Acèh",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Rachmat04"
                ]
        },
        "tog-underline": "Bôh garéh yup peunawôt:",
        "anontalk": "Peugah haba IP nyoë.",
        "navigation": "Keumudoë",
        "and": "&#32;ngön",
-       "qbfind": "Mita",
-       "qbbrowse": "Lop",
-       "qbedit": "Andam",
-       "qbpageoptions": "Laman nyoe",
-       "qbmyoptions": "Laman lôn",
        "faq": "Teunanyöng Umom",
-       "faqpage": "Project:FAQ",
        "actions": "Buët",
        "namespaces": "Ruweuëng nan",
        "variants": "Ragam",
        "edit-local": "Andam deskripsi lokal",
        "create": "Peugöt",
        "create-local": "Tamah deskripsi lokal",
-       "editthispage": "Andam laman nyoë",
-       "create-this-page": "Peugöt laman nyoë",
        "delete": "Sampôh",
-       "deletethispage": "Sampôh laman nyoë",
-       "undeletethispage": "Bèk neusampôh laman nyoë",
        "undelete_short": "Bateuë sampôh {{PLURAL:$1|one edit|$1 edits}}",
        "viewdeleted_short": "Eu {{PLURAL:$1|saboh neuandam|$1 neuandam}} nyang geusampôh",
        "protect": "Peulindông",
        "protect_change": "ubah",
-       "protectthispage": "Peulindông laman nyoë",
        "unprotect": "Gantoë neulindông",
-       "unprotectthispage": "Gantoë neulindông laman nyoë",
        "newpage": "Laman barô",
-       "talkpage": "Peugah haba bhah laman nyoë",
        "talkpagelinktext": "Marit",
        "specialpage": "Laman kusuih",
        "personaltools": "Peukakaih droë",
-       "articlepage": "Eu asoë laman",
        "talk": "Marit",
        "views": "Seuneudeuih",
        "toolbox": "Alat",
-       "userpage": "Eu laman ureuëng ngui",
-       "projectpage": "Eu laman buët",
        "imagepage": "Eu laman beureukaih",
        "mediawikipage": "Eu laman peusan sistem",
        "templatepage": "Eu laman seunaleuëk",
        "redirectedfrom": "(Geupeupinah nibak $1)",
        "redirectpagesub": "Laman peuninah",
        "redirectto": "Peupinah u:",
-       "lastmodifiedat": "Laman nyoë seuneulheuëh geuubah bak $1 poh $2.",
+       "lastmodifiedat": "Mieng nyoe seuneulheueh geuandam bak $1, poh $2.",
        "viewcount": "Laman nyoë ka geusaweuë {{PLURAL:$1|sigo|$sigo}}.<br />",
        "protectedpage": "Laman teupeulindông",
        "jumpto": "Grôp u:",
        "externaldberror": "Na seunalah bak peusahèh basis data luwa atawa droëneuh hana geubri idin keu neupeubarô akun luwa droëneuh",
        "login": "Tamöng",
        "nav-login-createaccount": "Tamöng / dapeuta",
-       "userlogin": "Tamöng / dapeuta",
-       "userloginnocreate": "Tamöng",
        "logout": "Teubiët",
        "userlogout": "Teubiët",
        "notloggedin": "Hana tamöng lom",
        "userlogin-noaccount": "Goh lom neudapeuta?",
        "userlogin-joinproject": "Neugabông ngön {{SITENAME}}",
-       "nologin": "Goh lom neudapeuta? $1.",
-       "nologinlink": "Peudapeuta nan barô",
        "createaccount": "Peudapeuta nan barô",
-       "gotaccount": "Ka lheuëh neudapeuta? $1.",
-       "gotaccountlink": "Tamöng",
-       "userlogin-resetlink": "Tuwo rincian tamöng droëneuh?",
        "userlogin-resetpassword-link": "Tuwö lageuëm rahsia?",
        "userlogin-helplink2": "Beunantu tamöng log",
        "userlogin-loggedin": "Droëneuh ka neutamöng seubagoë $1. Neungui blangko di yup keu neutamöng seubagoë ureuëng ngui la’én",
        "createacct-another-email-ph": "Pasoë alamat surat-e",
        "createaccountmail": "Neungui lageuëm rahsia beurangkapeuë keu si’at nyoë. Lheuëh nyan neupeu’et u surat-e nyang droëneuh meuh’eut",
        "createacct-realname": "Nan aseuli (hana wajéb)",
-       "createaccountreason": "Choë:",
        "createacct-reason": "Choë:",
        "createacct-reason-ph": "Pakön droëneuh neupeugöt nan ureuëng ngui la’én",
        "createacct-submit": "Peudapeuta nan barô",
        "rcshowhidemine": "$1 atra lôn andam",
        "rcshowhidemine-show": "Peuleumah",
        "rcshowhidemine-hide": "Peusom",
-       "rclinks": "Peudeuih $1 neuubah barô lam $2 uroë nyoë<br />$3",
+       "rclinks": "Peudeuih $1 neuubah barô lam $2 uroë nyoë",
        "diff": "bida",
        "hist": "riwayat",
        "hide": "Peusom",
        "watchlisttools-view": "Peudeuh neuubah meukaw'èt",
        "watchlisttools-edit": "Peudeuh ngön andam dapeuta keunalön",
        "watchlisttools-raw": "Andam dapeuta keunalön meuntah",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|marit]])",
        "duplicate-defaultsort": "'''Ingat:''' Gunci meuurot pukok \"$2\" jipeuhiro gunci meuurot pukok \"$1\" sigohlomjih.",
        "version": "Curak",
        "fileduplicatesearch-submit": "Mita",
index a5c7dd0..2e74379 100644 (file)
        "password-change-forbidden": "Мы виким и шъэфгущыIэхэр зэблэпхъун уфитэп.",
        "login": "Системэм хахь",
        "nav-login-createaccount": "Къыхахь / аккаунт къэубл",
-       "userlogin": "Къыхахь / аккаунт къэубл",
-       "userloginnocreate": "Системэм хахь",
        "logout": "ХэкӀыжь",
        "userlogout": "ХэкӀыжь",
        "notloggedin": "Системэм хэхьагъэп",
        "userlogin-noaccount": "Аккаунт уиӏэба?",
        "userlogin-joinproject": "{{SITENAME}} зигъэгъус",
-       "nologin": "Аккаунт уиӏэба? $1.",
-       "nologinlink": "Аккаунт къэубл",
        "createaccount": "Аккаунт къэубл",
-       "gotaccount": "Аккаунт уиӏаха? $1.",
-       "gotaccountlink": "Системэм хахь",
-       "userlogin-resetlink": "Уи хэхьан датэхэр пщыгъупшагъа?",
        "userlogin-resetpassword-link": "УишъэфгущыIэр пщыгъупшагъа?",
        "userlogin-helplink2": "Системэм сыхэхьанэу къыздеӏ",
        "userlogin-createanother": "НэмыкI аккаунт къэубл",
        "createacct-email-ph": "Игъахь уи емэйл адресыр",
        "createacct-another-email-ph": "Игъахь уи емэйл адресыр",
        "createacct-realname": "ЦIэ шъыпкъэр (егъэзыгъэп)",
-       "createaccountreason": "ЗыпкъырыкIырэр:",
        "createacct-reason": "ЗыпкъырыкIырэр:",
        "createacct-reason-ph": "Сыда пэмыкI аккаунт зэкIэублэрэр?",
        "createacct-submit": "Уи аккаунт бгъэпсын",
        "passwordreset-emaildisabled": "Мы виким емэйл-Iофыгъохэр щылажьэхэрэп.",
        "passwordreset-username": "НэбгырацIэ:",
        "passwordreset-domain": "Домен:",
-       "passwordreset-capture": "Къэхъурэ емэйлым уеплъыщта?",
        "passwordreset-email": "Емэйл адрес:",
        "passwordreset-emailtitle": "Аккаунт и гъэпсыкIэхэр, мий щыI {{SITENAME}}",
        "passwordreset-emailelement": "НэбгырацIэ: \n$1\n\nTemporary password: \n$2",
        "prefs-rendering": "Ышъотеплъэ",
        "saveprefs": "Игъэпытыхь",
        "prefs-editing": "ЕIэзэныгъэ",
-       "rows": "Сатырхэу:",
        "searchresultshead": "Лъыхъу",
        "stub-threshold-disabled": "ГъэкIуэсагъэ",
        "recentchangesdays-max": "Максимум $1 {{PLURAL:$1|маф|мафэхэр}}",
        "right-viewsuppressed": "ЗэкIэмэ ашIогъэбылъыгъэ версиемэ яплъ",
        "right-editcontentmodel": "НэкIубгъом и кIоцIырытым и модел зэблэхъун",
        "right-editinterface": "Нэбгырэ-интерфейсым еIэзэн",
-       "right-editusercssjs": "НэмыкI нэбгырэмэ я CSS, JavaScript файлэмэ яIэзэн",
        "right-editusercss": "НэмыкI нэбгырэмэ я CSS файлэмэ яIэзэн",
        "right-edituserjs": "НэмыкI нэбгырэмэ я JavaScript файлэмэ яIэзэн",
        "right-editmyusercss": "Уи CSS файлэмэ яIэзэн",
        "right-unwatchedpages": "Зылъымыплъэрэ нэкIубгъо купым еплъ",
        "right-mergehistory": "НэкIубгъомэ ятарихъхэр зэпыдзэх",
        "right-sendemail": "НэмыкIмэ емэйл афегъэхь",
-       "right-passwordreset": "ШъэфгущыIэм фэгъэхьыгъэ емэйлхэм яплъ",
        "newuserlogpage": "ХэлэжьакӀомэ яублэн лог",
        "action-read": "едж мы нэкIубгъом",
        "action-edit": "мы нэкIубгъом еIаз",
        "rcshowhidemine": "$1 си хэӀэзэнхэр",
        "rcshowhidemine-show": "Къэгъэлъагъу",
        "rcshowhidemine-hide": "Гъэбылъ",
-       "rclinks": "Ыужрэ $1 зэхъокIыныгъэ къэгъэлъагъу мэфэ $2 ыкIоцI<br />$3",
+       "rclinks": "Ыужрэ $1 зэхъокIыныгъэ къэгъэлъагъу мэфэ $2 ыкIоцI",
        "diff": "зэфэшъхь",
        "hist": "тар",
        "hide": "Гъэбылъ",
        "feedback-message": "Мессадж:",
        "searchsuggest-search": "Лъыхъу",
        "api-error-badtoken": "ЫкIоцI фыкъуагъэ: Токен дэй.",
-       "api-error-empty-file": "Ебгъэхьыгъэ файлыр нэкIы.",
        "expand_templates_input": "Ихьэрэ текст:",
        "expand_templates_output": "Резултат",
        "expand_templates_xml_output": "XML къикIырэр",
index 524d511..a82018d 100644 (file)
        "anonpreviewwarning": "''أنت غير مسجل الدخول. الحفظ سيسجل عنوان الأيبي الخاص بك في تاريخ هذه الصفحة.''",
        "missingsummary": "'''تنبيه:''' لم تقم بكتابة ملخص للتعديل.\nإذا قمت بضغط حفظ الصفحة مرة أخرى، فيتم حفظ تعديلك بدون ملخص.",
        "missingcommenttext": "من فضلك أدخل تعليقا في الأسفل.",
-       "missingcommentheader": "'''تنبيه:''' لم تقم بوضع موضوع/عنوان لهذا التعليق.\nإذا قمت بالضغط على \"{{int:savearticle}}\" مجددا، سيتم حفظ تعليقك بدون عنوان.",
+       "missingcommentheader": "'''تنبيه:''' لم تقم بوضع موضوع/عنوان لهذا التعليق.\nإذا قمت بالضغط على \"$1\" مجددا، سيتم حفظ تعليقك بدون عنوان.",
        "summary-preview": "معاينة الملخص:",
        "subject-preview": "معاينة للموضوع/العنوان:",
        "blockedtitle": "المستخدم ممنوع",
        "rcshowhidepatr": "$1 التعديلات المراجعة",
        "rcshowhidemine": "$1 تعديلاتي",
        "rcshowhidemine-hide": "خبّي",
-       "rclinks": "أظهر آخر $1 تعديل في آخر $2 يوم<br />$3",
+       "rclinks": "أظهر آخر $1 تعديل في آخر $2 يوم",
        "diff": "فرق",
        "hist": "تاريخ",
        "hide": "أخف",
index 97936dc..97661f6 100644 (file)
        "anontalk": "Bespreking",
        "navigation": "Navigasie",
        "and": "&#32;en",
-       "qbfind": "Vind",
-       "qbbrowse": "Snuffel",
-       "qbedit": "Wysig",
-       "qbpageoptions": "Bladsyopsies",
-       "qbmyoptions": "My bladsye",
        "faq": "Gewilde vrae",
-       "faqpage": "Project:GewildeVrae",
        "actions": "Aksies",
        "namespaces": "Naamruimtes",
        "variants": "Variante",
        "edit-local": "Wysig plaaslike beskrywing",
        "create": "Skep",
        "create-local": "Voeg plaaslike beskrywing by",
-       "editthispage": "Wysig hierdie bladsy",
-       "create-this-page": "Skep hierdie bladsy",
        "delete": "Skrap",
-       "deletethispage": "Skrap die bladsy",
-       "undeletethispage": "Ontskrap die bladsy",
        "undelete_short": "Herstel {{PLURAL:$1|een wysiging|$1 wysigings}}",
        "viewdeleted_short": "Wys {{PLURAL:$1|een geskrapte wysiging|$1 geskrapte wysigings}}",
        "protect": "Beskerm",
        "protect_change": "wysig",
-       "protectthispage": "Beskerm hierdie bladsy",
        "unprotect": "Wysig beskerming",
-       "unprotectthispage": "Wysig beskerming vir die bladsy",
        "newpage": "Nuwe bladsy",
-       "talkpage": "Bespreek hierdie bladsy",
        "talkpagelinktext": "Besprekings",
        "specialpage": "Spesiale bladsy",
        "personaltools": "Persoonlike gereedskap",
-       "articlepage": "Lees artikel",
        "talk": "Bespreking",
        "views": "Weergawes",
        "toolbox": "Gereedskap",
-       "userpage": "Lees gebruikersbladsy",
-       "projectpage": "Lees metabladsy",
        "imagepage": "Lees bladsy oor lêer",
        "mediawikipage": "Bekyk boodskapsbladsy",
        "templatepage": "Bekyk sjabloonsbladsy",
        "anonpreviewwarning": "''U is nie aangeteken nie.''\n''As u die bladsy stoor sal u IP-adres in die bladsy se geskeidenis aangeteken word.''",
        "missingsummary": "'''Neem kennis''': Geen opsomming van die wysiging is verskaf nie. As \"Stoor\" weer gekliek word, word die wysiging sonder 'n opsomming gestoor.",
        "missingcommenttext": "Tik die opsomming onder.",
-       "missingcommentheader": "'''Let op:''' U het geen onderwerp/opskrif vir die opmerking verskaf nie. As u weer op \"{{int:savearticle}}\" klik, sal u wysiging sonder die onderwerp/opskrif gestoor word.",
+       "missingcommentheader": "'''Let op:''' U het geen onderwerp/opskrif vir die opmerking verskaf nie. As u weer op \"$1\" klik, sal u wysiging sonder die onderwerp/opskrif gestoor word.",
        "summary-preview": "Opsommingsvoorskou:",
        "subject-preview": "Onderwerp/opskrif voorskou:",
        "blockedtitle": "Gebruiker is geblokkeer",
        "accmailtext": "'n Lukrake wagwoord vir [[User talk:$1|$1]] is na $2 gestuur.\n\nDie wagwoord vir hierdie nuwe gebruiker kan op die ''[[Special:ChangePassword|verander wagwoord]]''-bladsy verander word nadat ingeteken is.",
        "newarticle": "(Nuut)",
        "newarticletext": "Hierdie bladsy bestaan nie.\nTik iets in die invoerboks hier onder om 'n nuwe bladsy te skep. Meer inligting is op die [$1 hulpbladsy] beskikbaar.\nAs u per ongeluk hier uitgekom het, gebruik u blaaier se '''terug'''-knoppie.",
-       "anontalkpagetext": "----''Hierdie is die besprekingsblad vir 'n anonieme gebruiker wat nog nie 'n gebruiker geskep het nie, of wat dit nie gebruik nie.\nDaarom moet ons sy/haar numeriese IP-adres vir identifikasie gebruik.\nSó 'n adres kan deur verskeie gebruikers gedeel word.\nIndien u 'n anonieme gebruiker is wat voel dat ontoepaslike kommentaar teen u gerig is, [[Special:CreateAccount|skep 'n gebruiker]] of [[Special:UserLogin|meld aan]] om verwarring met ander anonieme gebruikers te voorkom.''",
+       "anontalkpagetext": "----\n<em>Hierdie is die besprekingsblad vir 'n anonieme gebruiker wat nog nie 'n rekening geskep het nie, of wat dit nie gebruik nie.</em>\nDaarom moet ons sy/haar numeriese IP-adres vir identifikasie gebruik.\nSó 'n adres kan deur verskeie gebruikers gedeel word.\nIndien u 'n anonieme gebruiker is wat voel dat ontoepaslike kommentaar teen u gerig is, [[Special:CreateAccount|skep gerus 'n rekening]] of [[Special:UserLogin|meld aan]] om verwarring met ander anonieme gebruikers te voorkom.",
        "noarticletext": "Hierdie bladsy bevat geen teks nie.\nU kan [[Special:Search/{{PAGENAME}}|vir die bladsytitel in ander bladsye soek]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} die verwante logboeke deursoek]\nof [{{fullurl:{{FULLPAGENAME}}|action=edit}} hierdie bladsy wysig]</span>.",
        "noarticletext-nopermission": "Hierdie bladsy bevat geen teks nie.\nU kan vir die term [[Special:Search/{{PAGENAME}}|in ander bladsye soek]] of\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} die verwante logboeke deursoek]</span>, maar u kan nie die bladsy skep nie.",
        "missing-revision": "Die weergawe #$1 van die bladsy \"{{FULLPAGENAME}} bestaan nie.\n\nDit word meestal veroorsaak deur die volg van 'n verouderde verwysing na 'n bladsy wat verwyder is.\nMeer gegewens kan moontlik in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} skraplogboek] gevind word.",
        "editingsection": "Besig om $1 (onderafdeling) te wysig",
        "editingcomment": "Besig om $1 te wysig (nuwe opskrif)",
        "editconflict": "Wysigingskonflik: $1",
-       "explainconflict": "Iemand anders het hierdie bladsy gewysig sedert u dit begin wysig het.\nDie boonste invoerboks het die teks wat tans bestaan.\nU wysigings word in die onderste invoerboks gewys.\nU sal u wysigings moet saamsmelt met die huidige teks.\n'''Slegs''' die teks in die boonste invoerboks sal gestoor word wanneer u \"{{int:savearticle}}\" druk.",
+       "explainconflict": "Iemand anders het hierdie bladsy gewysig sedert u dit begin wysig het.\nDie boonste invoerboks het die teks wat tans bestaan.\nU wysigings word in die onderste invoerboks gewys.\nU sal u wysigings moet saamsmelt met die huidige teks.\n'''Slegs''' die teks in die boonste invoerboks sal gestoor word wanneer u \"$1\" druk.",
        "yourtext": "U teks",
        "storedversion": "Gestoorde weergawe",
        "nonunicodebrowser": "'''Waarskuwing: U webblaaier ondersteun nie Unikode nie.'''\nDie MediaWiki-sagteware hou hiermee rekening sodat u bladsye veilig kan wysig: nie-ASCII karakters word in die wysigingsvenster as heksadesimale kodes weergegee.",
        "showhideselectedversions": "Wys/versteek gekose weergawes",
        "editundo": "maak ongedaan",
        "diff-empty": "(Geen verskil)",
-       "diff-multi-sameuser": "({{PLURAL:$1|Een tussenin wysiging|$1 tussenin wysigings}} deur dieselfde gebruiker nie gewys nie)",
-       "diff-multi-manyusers": "({{PLURAL:$1|Een tussenin wysiging|$1 tussenin wysigings}} deur meer as $2 {{PLURAL:$2|gebruiker|gebruikers}} nie gewys nie)",
+       "diff-multi-sameuser": "({{PLURAL:$1|Een wysiging tussenin|$1 wysigings tussenin}} deur dieselfde gebruiker nie gewys nie)",
+       "diff-multi-otherusers": "({{PLURAL:$1|Een wysiging tussenin|$1 wysigings tussenin}} deur {{PLURAL:$2|een ander gebruiker|$2 gebruikers}} nie gewys nie)",
+       "diff-multi-manyusers": "({{PLURAL:$1|Een wysiging tussenin|$1 wysigings tussenin}} deur meer as $2 {{PLURAL:$2|gebruiker|gebruikers}} nie gewys nie)",
        "difference-missing-revision": "{{PLURAL:$2|'n Weergawe|$2 weergawes}} van die verskil ($1) {{PLURAL:$2|is|is}} nie gevind nie.\n\nDit word meestal veroorsaak deur die volg van 'n verouderde verwysing na 'n bladsy wat verwyder is.\nDetails kan in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} skraplogboek] gevind word.",
        "searchresults": "Soekresultate",
        "searchresults-title": "Soekresultate vir \"$1\"",
        "right-editprotected": "Wysig bladsye beskermd as \"{{int:protect-level-sysop}}\"",
        "right-editsemiprotected": "Wysig bladsye wat as \"{{int:protect-level-autoconfirmed}}\" beskerm is",
        "right-editinterface": "Wysig die gebruikerskoppelvlak",
-       "right-editusercssjs": "Wysig ander gebruikers se CSS- en JS-lêers",
        "right-editusercss": "Wysig ander gebruikers se CSS-lêers",
        "right-edituserjs": "Wysig ander gebruikers se JS-lêers",
        "right-editmyusercss": "Wysig u persoonlike CSS-bladsy",
        "rcshowhidemine-hide": "Versteek",
        "rcshowhidecategorization-show": "Wys",
        "rcshowhidecategorization-hide": "Versteek",
-       "rclinks": "Vertoon die laaste $1 wysigings in die afgelope $2 dae<br />$3",
+       "rclinks": "Vertoon die laaste $1 wysigings in die afgelope $2 dae",
        "diff": "verskil",
        "hist": "geskiedenis",
        "hide": "Versteek",
        "sourcefilename": "Oorspronklike lêernaam:",
        "sourceurl": "Bron-URL:",
        "destfilename": "Teikenlêernaam:",
-       "upload-maxfilesize": "Maksimum lêer grootte: $1",
+       "upload-maxfilesize": "Maksimum-lêergrootte: $1",
        "upload-description": "Lêerbeskrywing",
        "upload-options": "Oplaai-opsies",
        "watchthisupload": "Hou die lêer dop",
        "booksources-text": "Hieronder is 'n lys van webtuistes wat nuwe en gebruikte boeke verkoop, en dalk meer inligting oor die boeke waarna u soek kan bevat:",
        "booksources-invalid-isbn": "Die ingevoerde ISBN-kode blyk asof dit ongeldig is; maak asseblief seker dat u dit sonder fout oorgekopiëer het vanaf die oorspronklike bron.",
        "specialloguserlabel": "Uitvoerende gebruiker:",
-       "speciallogtitlelabel": "Teiken (bladsy of gebruiker):",
+       "speciallogtitlelabel": "Teiken (titel of {{ns:user}}:gebruiker vir gebruiker):",
        "log": "Logboeke",
        "logeventslist-submit": "Wys",
        "all-logs-page": "Alle openbare logboeke",
        "undeleteviewlink": "bekyk",
        "undeleteinvert": "Omgekeerde seleksie",
        "undeletecomment": "Rede:",
-       "undeletedrevisions": "{{PLURAL:$1|1 weergawe|$1 weergawes}} herstel",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 weergawe|$1 weergawes}} en {{PLURAL:$2|1 lêer|$2 lêers}} herstel",
-       "undeletedfiles": "{{PLURAL:$1|1 lêer|$1 lêers}} herstel",
        "cannotundelete": "Terugplasing was onsuksesvol:\n$1",
        "undeletedpage": "'''$1 is teruggeplaas'''\n\nKonsulteer die [[Special:Log/delete|verwyderingslogboek]] vir 'n rekord van onlangse verwyderings en terugplasings.",
        "undelete-header": "Sien die [[Special:Log/delete|skraplogboek]] vir onlangs verwyderde bladsye.",
        "tooltip-feed-rss": "RSS-voed vir hierdie bladsy",
        "tooltip-feed-atom": "Atoomvoer vir hierdie bladsy",
        "tooltip-t-contributions": "Bekyk 'n lys van bydraes deur {{GENDER:$1|hierdie gebruiker}}",
-       "tooltip-t-emailuser": "Stuur 'n e-pos aan hierdie gebruiker",
+       "tooltip-t-emailuser": "Stuur 'n e-pos aan {{GENDER:$1|hierdie gebruiker}}",
        "tooltip-t-upload": "Laai lêers op",
        "tooltip-t-specialpages": "'n Lys van al die spesiale bladsye",
        "tooltip-t-print": "Drukbare weergawe van hierdie bladsy",
        "pageinfo-length": "Bladsylengte (in grepe)",
        "pageinfo-article-id": "Bladsy-ID",
        "pageinfo-language": "Taal vir die bladsy",
+       "pageinfo-content-model": "Bladsy se inhoudmodel",
        "pageinfo-content-model-change": "wysig",
        "pageinfo-robot-policy": "Status vir soekenjins",
        "pageinfo-robot-index": "Toegestaan",
index 5f9ab04..6279c17 100644 (file)
        "externaldberror": "Ose pat gabim në databazën e autentifikimit, ose nuk lejoheni me ndryshue llogarinë tuej të jashtme.",
        "login": "Kyçu",
        "nav-login-createaccount": "Kyçu / çel llogari",
-       "userlogin": "Kyçu / çel llogari",
-       "userloginnocreate": "Kyçu",
        "logout": "Çkyçu",
        "userlogout": "Çkyçu",
        "notloggedin": "Nuk je i kyçun",
-       "nologin": "Nuk ke llogari? '''$1'''.",
-       "nologinlink": "Krijo llogari",
        "createaccount": "Krijo llogari",
-       "gotaccount": "Ke llogari? '''$1'''.",
-       "gotaccountlink": "Kyçu",
        "createaccountmail": "me email",
-       "createaccountreason": "Arsyeja:",
        "badretype": "Fjalëkalimet nuk janë të njêjta.",
        "userexists": "Nofka keni zgjedhë âsht në përdorim.\nZgjedh nji emën tjetër.",
        "loginerror": "Gabim në kyçje",
        "editingsection": "Tue redaktue (sekcionin) $1",
        "editingcomment": "Tue redaktue (sekcionin e ri) $1",
        "editconflict": "Konflikt redaktues: $1",
-       "explainconflict": "Dikush tjetër e ka ndryshue këtë faqe derisa e redaktojshit ju.\nKutia e sipërme tregon tekstin aktual të faqes.\nNdryshimet tueja gjinden në kutinë e poshtme redaktuese.\nJu duheni me i bashkue ndryshimet tueja në tekstin aktual.\n'''Vetëmse''' nëse shtypni \"{{int:savearticle}}\" ka me u ruejtë teksti në kutinë e sipërme redaktuese.",
+       "explainconflict": "Dikush tjetër e ka ndryshue këtë faqe derisa e redaktojshit ju.\nKutia e sipërme tregon tekstin aktual të faqes.\nNdryshimet tueja gjinden në kutinë e poshtme redaktuese.\nJu duheni me i bashkue ndryshimet tueja në tekstin aktual.\n'''Vetëmse''' nëse shtypni \"$1\" ka me u ruejtë teksti në kutinë e sipërme redaktuese.",
        "yourtext": "Teksti juej",
        "storedversion": "Rishikim i ruejtun",
        "nonunicodebrowser": "'''Kujdes: Shfletuesi juej nuk e përkrah unicodein.'''\nPër me ju lejue me redaktue faqen pa gabime aplikohet nji opcion shtesë: germat jashta ASCII kodit paraqiten me kod heksadecimal.",
        "saveprefs": "Regjistro",
        "restoreprefs": "Kthe tâna përcaktimet si në fillim",
        "prefs-editing": "Tue redaktue",
-       "rows": "Rreshta:",
-       "columns": "Kolona:",
        "searchresultshead": "Kërkimi",
        "stub-threshold": "Pragu për formatimin e <a href=\"#\" class=\"stub\">vegzave të cungueme</a> në (byte):",
        "recentchangesdays": "Numri i ditëve për me i tregue te ndryshimet e freskëta:",
        "userrights-reason": "Arsyeja:",
        "userrights-no-interwiki": "Nuk keni leje për të ndryshuar privilegjet e përdoruesve në wiki të tjera.",
        "userrights-nodatabase": "Regjistri $1 nuk ekziston ose nuk është vendor.",
-       "userrights-nologin": "Duhet të [[Special:UserLogin|hyni brenda]] me një llogari administrative për të ndryshuar privilegjet e përdoruesve.",
-       "userrights-notallowed": "Llogaria juaj nuk ju lejon të ndryshoni privilegjet e përdoruesve.",
        "userrights-changeable-col": "Grupe që mund të ndryshoni",
        "userrights-unchangeable-col": "Grupe që s'mund të ndryshoni",
        "group": "Grupi:",
        "right-protect": "Ndrysho nivelin mbrojtës dhe redakto faqet e mbrojtura",
        "right-editprotected": "Redakto faqet e mbrojtura (pa ndryshuar mbrojtjen)",
        "right-editinterface": "Ndrysho parapamjen e përdoruesit",
-       "right-editusercssjs": "Redakto skedat CSS dhe JS të përdoruesve tjerë",
        "right-editusercss": "Redakto skedat CSS të përdoruesve tjerë",
        "right-edituserjs": "Redakto skedat JS të përdoruesve tjerë",
        "right-noratelimit": "Mos u prek nga kufizimet e vlerësimit",
        "right-unwatchedpages": "Shiko listën e faqeve të pa vëzhguara",
        "right-mergehistory": "Bashko historinë e faqeve",
        "right-userrights": "Redakto të gjitha të drejtat e përdoruesit",
-       "right-passwordreset": "Fjalëkalimi Reset e një përdoruesi ([[Special:PasswordReset|faqe veçantë]])",
        "newuserlogpage": "Regjistri i krijimit të përdoruesve",
        "rightslog": "Regjsitri i tagrit të përdoruesve",
        "rightslogtext": "Ky është një regjistër për ndryshimet e titujve të përdoruesve.",
        "rcshowhideanons": "$1 përdorues anonim",
        "rcshowhidepatr": "$1 redaktime të patrullueme",
        "rcshowhidemine": "$1 redaktimet e mija",
-       "rclinks": "Trego $1 ndryshime gjatë $2 ditëve<br />$3",
+       "rclinks": "Trego $1 ndryshime gjatë $2 ditëve",
        "diff": "ndrysh",
        "hist": "hist",
        "hide": "msheh",
        "revdelete-restricted": "u vendosën kufizime për administruesit",
        "revdelete-unrestricted": "u hoqën kufizimet për administruesit",
        "rightsnone": "(asgjë)",
-       "revdelete-summary": "përmbledhja redaktimit",
        "searchsuggest-search": "Kërkim",
        "searchsuggest-containing": "përmban ...",
        "special-characters-group-latin": "Latinisht",
index 0033e3e..cbcdc51 100644 (file)
@@ -10,7 +10,9 @@
                        "Teferra",
                        "아라",
                        "Matma Rex",
-                       "Macofe"
+                       "Macofe",
+                       "Stephanecbisson",
+                       "Yeniesil"
                ]
        },
        "tog-underline": "በመያያዣ ስር አስምር",
        "externaldberror": "ወይም አፍአዊ የማረጋገጫ መረጃ-ቤት ስኅተት ነበረ፣ ወይም አፍአዊ አባልነትዎን ማሳደስ አልተፈቀዱም።",
        "login": "ለመግባት",
        "nav-login-createaccount": "መግቢያ",
-       "userlogin": "ግባ / ተመዝገብ",
-       "userloginnocreate": "ለመግባት",
        "logout": "ከብዕር ስምዎ ለመውጣት",
        "userlogout": "መውጫ",
        "notloggedin": "አልገቡም",
-       "nologin": "የብዕር ስም ገና የለዎም? '''$1'''!",
-       "nologinlink": "አዲስ የብዕር ስም ያውጡ",
        "createaccount": "አዲስ አባል ለመሆን",
-       "gotaccount": "(አባልነት አሁን ካለዎ፥ '''$1''' ይግቡ)",
-       "gotaccountlink": "በዚህ",
-       "userlogin-resetlink": "የመግቢያ ዝርዝርዎን ረተዋልን?",
        "userlogin-resetpassword-link": "የይለፍ ቃልዎን አጡ?",
        "createacct-emailrequired": "ኢ-ሜይል አድራሻ",
        "createacct-email-ph": "ኢ-ሜይል አድራሻዎን ያስገቡ",
        "createaccountmail": "በኢ-ሜል",
-       "createaccountreason": "ምክንያት:",
        "createacct-reason": "ምክንያት",
        "createacct-reason-ph": "ለምን ሌላ የብዕር ስም ሊያወጡ እንደሆነ",
        "createacct-submit": "የብዕር ስም ለማውጣት",
        "prefs-rendering": " አቀራረብ",
        "saveprefs": "ይቆጠብ",
        "prefs-editing": "የማዘጋጀት ምርጫዎች",
-       "rows": "በማዘጋጀቱ ሰንጠረዥ ስንት ተርታዎች?",
-       "columns": "ስንት ዓምዶችስ?",
        "searchresultshead": "ፍለጋ",
        "recentchangesdays": "በቅርቡ ለውጦች ዝርዝር ስንት ቀን ይታይ?",
        "recentchangesdays-max": "(እስከ $1 {{PLURAL:$1|ቀን|ቀን}} ድረስ)",
        "userrights-reason": "ምክንያቱ፦",
        "userrights-no-interwiki": "ማዕረጎችን በሌላ ዊኪ ላይ ለማስተካከል ፈቃድ የለዎም።",
        "userrights-nodatabase": "መረጃ-ቤቱ $1 አይኖርም ወይም የቅርብ አካባቢ አይደለም።",
-       "userrights-nologin": "የአባል መብቶች ለመወሰን መጋቢ ሆነው [[Special:UserLogin|መግባት]] ያስፈልግዎታል።",
-       "userrights-notallowed": "የአባል መብቶች ለማስተካከል ፈቃድ የለዎም።",
        "userrights-changeable-col": "ሊቀይሩ የሚችሉት ስብስባዎች",
        "userrights-unchangeable-col": "ሊቀይሩ የማይችሉት ስብስባዎች፦",
        "group": "ደረጃ፦",
        "recentchanges-label-bot": "ይኸው ለውጥ በሎሌ ተደረገ።",
        "recentchanges-label-unpatrolled": "ይህ እርማት ገና አልተገመገመም",
        "recentchanges-legend-newpage": "$1 - አዲስ ገጽ",
+       "rcfilters-filtergroup-lastRevision": "የመጨረሻ ክለሳ",
        "rcnotefrom": "ከ'''$2''' ጀምሮ የተቀየሩት ገጾች (እስከ '''$1''' ድረስ) ክዚህ በታች ይታያሉ።",
        "rclistfrom": "(ከ $3 $2 ጀምሮ አዲስ ለውጦቹን ለማየት)",
        "rcshowhideminor": "ጥቃቅን ለውጦች $1",
        "rcshowhideanons": "የቁ. አድራሻ ለውጦች $1",
        "rcshowhidepatr": "የተቆጣጠሩ ለውጦች $1",
        "rcshowhidemine": "የኔ $1",
-       "rclinks": "ባለፉት $2 ቀን ውስጥ የወጡት መጨረሻ $1 ለውጦች ይታዩ።<br />($3)",
+       "rclinks": "ባለፉት $2 ቀን ውስጥ የወጡት መጨረሻ $1 ለውጦች ይታዩ።",
        "diff": "ለውጡ",
        "hist": "ታሪክ",
        "hide": "ይደበቁ",
        "undeleteviewlink": "ተመልከት",
        "undeleteinvert": "ምርጫውን ለመገልበጥ",
        "undeletecomment": "ማጠቃልያ፦",
-       "undeletedrevisions": "{{PLURAL:$1|1 ዕትም|$1 ዕትሞች}} መለሰ",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 ዕትም|$1 ዕትሞች}} እና {{PLURAL:$2|1 ፋይል|$2 ፋይሎች}} መለሰ",
-       "undeletedfiles": "{{PLURAL:$1|1 ፋይል|$1 ፋይሎች}} መለሰ",
        "cannotundelete": "መመለሱ አልተከናወነም፤ ምናልባት ሌላ ሰው ገጹን አስቀድሞ መልሶታል።",
        "undeletedpage": "'''$1 ተመልሷል'''\n\nበቅርብ የጠፉና የተመለሱ ገጾች ለማመልከት [[Special:Log/delete|የማጥፋቱን መዝገብ]] ይዩ።",
        "undelete-header": "በቅርብ ግዜ የተደለዙትን ገጾች ለማመልከት [[Special:Log/delete|የማጥፋቱን መዝገብ]] ይዩ።",
        "htmlform-selectorother-other": "ሌላ",
        "logentry-delete-delete": "$1 ገጹን $3 አጠፋ",
        "rightsnone": "(የለም)",
-       "revdelete-summary": "ማጠቃለያ",
        "feedback-cancel": "ይቅር",
        "searchsuggest-search": "ፈልግ",
        "searchsuggest-containing": "በመጣጥፎች ይዘት ለመፈልግ...",
-       "api-error-badaccess-groups": "እርስዎ በዚህ ውኪ ላይ ፋይል እንድሊኩ አልተፈቀደም።",
        "api-error-badtoken": "የውስጥ ስህተት: መጥፎ ጥቅል።",
-       "api-error-copyuploaddisabled": "በሰነድ አድራሻ መላክ በዚህ አቅራቢ ላይ አልተፈቀደም።",
-       "api-error-duplicate": "በዚህ ድረ ገጽ ላይ የዚህ ዓይነት ይዞታ {{PLURAL:$1| ያለው ፋይል አለ። | ያላቸው ፍይሎች አሉ።}}",
-       "api-error-empty-file": "የላኩት ፋይል ባዶ ነበር።",
-       "api-error-fetchfileerror": "የውስጥ ስህተት: ፍይሉ ሲመጣ ችግር ተፈጠረ።",
-       "api-error-file-too-large": "የላኩት ፋይል በጣም ትልቅ ነበር።",
-       "api-error-filename-tooshort": "የፋይሉ ስም በጣም ትንሽ ነው።",
-       "api-error-filetype-banned": "የዚህ ዓይነት ፋይል ተከልክሏል።",
-       "api-error-filetype-banned-type": "$1 ያልተፈቀደ ፋይል አይነት ነው። የተፈቀዱት ፋይል አይነቶች $2 ናቸው።",
-       "api-error-filetype-missing": "ፋይሉ ቅጥያ ይጎለዋል።",
-       "api-error-illegal-filename": "የፋይሉ ስም የተፈቀደ አይደለም።",
-       "api-error-invalid-file-key": "የውስጥ ስህተት: ፍይሉ የጊዜያዊ ማስቀመጫ ውስጥ አልተገኘም።",
-       "api-error-missingparam": "የውስጥ ስህተት: ጥያቄው ግቤቶች ይጎሉታል።",
-       "api-error-missingresult": "የውስጥ ስህተት: መቅዳቱ እንደተሳካ ማረጋገጥ አልተቻለም።",
-       "api-error-mustbeloggedin": "ፋይል ለመላክ ተዘግቦ መግባት ያስፈልጋል።",
-       "api-error-noimageinfo": "ፋይል መላኩ ተሳክቷል ግን አቅራቢው ምንም ዓይነት መረጃ ስለ ፋይሉ አልሰጠም።",
-       "api-error-overwrite": "እንድን ፋይል ደምስሶ መጻፍ አልተፈቀደም።",
        "api-error-stashfailed": "የውስጥ ስህተት: አቅራቢው ጊዜያዊ ፍይሉን አላስቀመጠም።",
-       "api-error-timeout": "በሚገባ ጊዜ ውስጥ አቅራቢው መልስ አልሰጠም።",
-       "api-error-unknown-code": "ያልታወቀ ስህተት: \"$1\"",
-       "api-error-unknown-error": "የውስጥ ስህተት: የእርስዎን ፋይል ለመላክ ሲሞከር ችግር ተፈጠረ።",
        "api-error-unknown-warning": "ያልታወቀ ማስጠንቀቂያ $1",
        "api-error-unknownerror": "ያልታወቀ ስህተት: \"$1\"",
-       "api-error-uploaddisabled": "ፋይል መላክ በዚህ ውኪ ላይ አልተፈቀደም።",
-       "api-error-verification-error": "ይህ ፋይል የተበላሸ ወይም ትክክል ያልሆነ ቅጥያ ያለው ሊሆን ይችላል።",
        "expand_templates_ok": "እሺ"
 }
index f3d19ec..be092be 100644 (file)
        "externaldberror": "Bi habió una error d'autenticación externa d'a base de datos u bien no tiene premisos ta esviellar a suya cuenta externa.",
        "login": "Encetar sesión",
        "nav-login-createaccount": "Encetar una sesión / creyar cuenta",
-       "userlogin": "Encetar una sesión / creyar cuenta",
-       "userloginnocreate": "Encetar una sesión",
        "logout": "Salir d'a sesión",
        "userlogout": "Salir",
        "notloggedin": "No ha dentrato en o sistema",
        "userlogin-noaccount": "No tiene garra cuenta?",
-       "nologin": "No tiene garra cuenta? '''$1'''.",
-       "nologinlink": "Creyar una nueva cuenta",
        "createaccount": "Creyar una nueva cuenta",
-       "gotaccount": "Tiene ya una cuenta? '''$1'''.",
-       "gotaccountlink": "Identificar-se y encetar sesión",
-       "userlogin-resetlink": "Ha xublidau os suyos datos d'acceso?",
        "createacct-another-email-ph": "Establir una adreza de correu-e",
        "createaccountmail": "por correu electronico",
-       "createaccountreason": "Razón:",
        "createacct-submit": "Creya a tuya cuenta",
        "createacct-another-submit": "Creya unatra cuenta",
        "createacct-benefit-body3": "{{PLURAL:$1|colaborador recient|colaboradors recients}}",
        "showdiff": "Amostrar cambeos",
        "anoneditwarning": "''Pare cuenta:'' No s'ha identificato con un nombre d'usuario. A suya adreza IP s'alzará en l'historial d'a pachina.",
        "anonpreviewwarning": "''No s'ha identificau con una cuenta d'usuario. A suya adreza IP quedará rechistrada en l'historial d'edicions d'ista pachina.\"",
-       "missingsummary": "'''Pare cuenta:''' No ha escrito garra resumen d'edición. Si puncha de nuevas en «{{int:savearticle}}» a suya edición se grabará sin resumen.",
+       "missingsummary": "'''Pare cuenta:''' No ha escrito garra resumen d'edición. Si puncha de nuevas en «$1» a suya edición se grabará sin resumen.",
        "missingcommenttext": "Por favor, escriba o texto astí baixo.",
-       "missingcommentheader": "'''Recordanza:''' No ha garra títol ta iste comentario. Si puncha de nuevas en \"{{int:savearticle}}\", a suya edición se grabará sin garra títol.",
+       "missingcommentheader": "'''Recordanza:''' No ha garra títol ta iste comentario. Si puncha de nuevas en \"$1\", a suya edición se grabará sin garra títol.",
        "summary-preview": "Veyer anvista previa d'o resumen:",
        "subject-preview": "Anvista previa d'o tema/títol:",
        "blockedtitle": "L'usuario ye bloqueyato",
        "editingsection": "Editando $1 (sección)",
        "editingcomment": "Editando $1 (nueva sección)",
        "editconflict": "Conflicto d'edición: $1",
-       "explainconflict": "Bel atro usuario ha cambiato ista pachina dende que vusté prencipió a editar-la.\nO quatrón de texto superior contiene o texto d'a pachina como ye actualment.\nOs suyos cambeos s'amuestran en o quatrón de texto inferior.\nHabrá d'incorporar os suyos cambeos en o texto existent.\n'''Nomás''' o texto en o quatrón superior s'alzará quan prete o botón \"{{int:savearticle}}\".",
+       "explainconflict": "Bel atro usuario ha cambiato ista pachina dende que vusté prencipió a editar-la.\nO quatrón de texto superior contiene o texto d'a pachina como ye actualment.\nOs suyos cambeos s'amuestran en o quatrón de texto inferior.\nHabrá d'incorporar os suyos cambeos en o texto existent.\n'''Nomás''' o texto en o quatrón superior s'alzará quan prete o botón \"$1\".",
        "yourtext": "O texto suyo",
        "storedversion": "Versión almadazenata",
        "nonunicodebrowser": "'''Pare cuenta: O suyo navegador no cumple a norma Unicode. S'ha activato un sistema d'edición alternativo que li premitirá d'editar articlos con seguridat: os carácters no ASCII aparixerán en a caixa d'edición como codigos hexadecimals.'''",
        "saveprefs": "Alzar preferencias",
        "restoreprefs": "Restaure todas as confeguracions por defecto",
        "prefs-editing": "Edición",
-       "rows": "Ringleras:",
-       "columns": "Columnas:",
        "searchresultshead": "Mirar",
        "stub-threshold": "Branquil superior ta o formateyo de <a href=\"#\" class=\"stub\">vinclos ta borradors</a> (en bytes):",
        "stub-threshold-disabled": "Desactivato",
        "right-protect": "Cambiar os livels de protección y editar pachinas protechitas",
        "right-editprotected": "Editar pachinas protechitas (sin de protección en cascada)",
        "right-editinterface": "Editar a interficie d'usuario",
-       "right-editusercssjs": "Editar os fichers CSS y JS d'atros usuarios",
        "right-editusercss": "Editar os fichers CSS d'atros usuarios",
        "right-edituserjs": "Editar os fichers JS d'atros usuarios",
        "right-rollback": "Desfer a escape as edicions d'o zaguer usuario que cambió una pachina",
        "rcshowhidepatr": "$1 edicions controlatas",
        "rcshowhidemine": "$1 as mías edicions",
        "rcshowhidemine-hide": "Amagar",
-       "rclinks": "Amostrar os zaguers $1 cambeos en os zaguers $2 días.<br />$3",
+       "rclinks": "Amostrar os zaguers $1 cambeos en os zaguers $2 días.",
        "diff": "dif",
        "hist": "hist",
        "hide": "Amagar",
        "undeleteviewlink": "veyer",
        "undeleteinvert": "Contornar selección",
        "undeletecomment": "Razón:",
-       "undeletedrevisions": "{{PLURAL:$1|Una edición restaurata|$1 edicions restauratas}}",
-       "undeletedrevisions-files": "$1 {{PLURAL:$1|revisón|revisions}} y $2 {{PLURAL:$2|fichero|fichers}} restauratos",
-       "undeletedfiles": "$1 {{PLURAL:$1|fichero restaurato|fichers restauratos}}",
        "cannotundelete": "No s'ha puesto desfer o borrau; belatro usuario puede haber desfeito antis o borrau.",
        "undeletedpage": "'''S'ha restaurato $1'''\n\nConsulte o [[Special:Log/delete|rechistro de borraus]] ta veyer una lista d'os zaguers borraus y restauracions.",
        "undelete-header": "En o [[Special:Log/delete|rechistro de borraus]] se listan as pachina borratas fa poco tiempo.",
        "logentry-newusers-create2": "$1 creyó una cuenta d'usuario $3",
        "logentry-newusers-autocreate": "S'ha creyau automaticament a cuenta $1",
        "rightsnone": "(garra)",
-       "revdelete-summary": "editar resumen",
        "feedback-adding": "Adhibindo comentarios ta la pachina...",
        "feedback-bugcheck": "Perfecto! Comprebe nomás que no sía un [$1 fallo conoixiu].",
        "feedback-bugnew": "L'he comprebau. Informar d'un nuevo fallo.",
        "feedback-thanks": "Gracias! O suyo comentario s'ha publicau en a pachina [$2  $1].",
        "searchsuggest-search": "Mirar",
        "searchsuggest-containing": "que contién...",
-       "api-error-badaccess-groups": "No puetz cargar fichers en iste wiki.",
        "api-error-badtoken": "Error interna: Simbolo incorrecto.",
-       "api-error-copyuploaddisabled": "A puyada por URL ye desactivada en iste servidor.",
-       "api-error-duplicate": "Ya existe {{PLURAL:$1|unatro fichero|belatros fichers}} en o puesto con o mesmo conteniu.",
-       "api-error-duplicate-archive": "Ya {{PLURAL:$1|existiba unatro fichero|existiban atros fichers}} en o puesto con o mesmo conteniu, pero {{PLURAL:$1|estió eliminau|estioron eliminaus}}.",
-       "api-error-empty-file": "O fichero que ninvió yera vuedo.",
        "api-error-emptypage": "No se permite a creyación de pachinas nuevas en blanco.",
-       "api-error-fetchfileerror": "Error interna: Bella cosa salió malament mientres s'obteneba o fichero.",
-       "api-error-file-too-large": "O fichero que ninvió yera masiau gran.",
-       "api-error-filename-tooshort": "O nombre de fichero ye masiau corto.",
-       "api-error-filetype-banned": "Iste tipo de fichero ye vedau.",
-       "api-error-filetype-banned-type": "{{PLURAL:$4|Os fichers de tipo $1|Os fichers d'os tipos $1}} no se permiten. {{PLURAL:$3|Nomás s'admeten os fichers d'o tipo|Nomás s'admeten os fichers d'os tipos}} $2.",
-       "api-error-filetype-missing": "O fichero no tiene extensión de fichero.",
-       "api-error-hookaborted": "A modificación que intentés fer estió cancelada por un gancho d'extensión.",
-       "api-error-http": "Error interna: No se puede connectar ta o servidor.",
-       "api-error-illegal-filename": "O nombre de fichero no ye permitiu.",
-       "api-error-internal-error": "Error interna: Bella cosa salió malament en procesar a tuya carga en o wiki.",
-       "api-error-invalid-file-key": "Error interna: No se trobó o fichero en l'almagazenamiento temporal.",
-       "api-error-missingparam": "Error interna: Faltan parametros en a demanda.",
-       "api-error-missingresult": "Error interna: No se podió determinar si la copia estió correcta.",
-       "api-error-mustbeloggedin": "Ha d'encetar una sesión ta cargar fichers.",
-       "api-error-mustbeposted": "Error interna: a suya demanda requiere HTTP POST.",
-       "api-error-noimageinfo": "La carga se realizó correctament, pero o servidor no nos dio garra información sobre o fichero.",
-       "api-error-nomodule": "Error interna: No i hai garra modulo de carga configurau.",
-       "api-error-ok-but-empty": "Error interna: No i hai garra respuesta d'o servidor.",
-       "api-error-overwrite": "No se premite de sobrescribir un fichero existent.",
        "api-error-stashfailed": "Error interna: O servidor no podió almagazenar o fichero temporal.",
-       "api-error-timeout": "O servidor no respondió en o plazo previsto.",
-       "api-error-unclassified": "Ocurrió una error desconoixida.",
-       "api-error-unknown-code": "Error desconoixida: «$1»",
-       "api-error-unknown-error": "Error interna: Bella cosa salió malament en intentar cargar o fichero.",
        "api-error-unknown-warning": "Alvertencia desconoixida: $1",
        "api-error-unknownerror": "Error desconoixida: «$1».",
-       "api-error-uploaddisabled": "As cargas de fichers son desactivadas en iste wiki.",
-       "api-error-verification-error": "Iste fichero puede estar danyau, u tiene una extensión incorrecta.",
        "expandtemplates": "Espandir plantillas",
        "expand_templates_intro": "Ista pachina especial prene bel testo y espande recursivament todas as plantillas que bi ha en el. Tamién espande as funcions parser como <nowiki>{{</nowiki>#language:...}}, y as variables como <nowiki>{{</nowiki>CURRENTDAY}}&mdash; en cheneral tot o que sía entre dobles claus.\nIsto lo fa clamando ta o parser correspondient dende o propio MediaWiki.",
        "expand_templates_title": "Títol ta contestualizar ({{FULLPAGENAME}} etz.):",
index e19c3da..1c60380 100644 (file)
        "rcshowhidemine": "$1 mīna adihtunga",
        "rcshowhidemine-show": "Īwan",
        "rcshowhidemine-hide": "Hȳdan",
-       "rclinks": "Īwan þā nīwostan $1 andwendunga in þissum nīehstum $2 daga<br />$3",
+       "rclinks": "Īwan þā nīwostan $1 andwendunga in þissum nīehstum $2 daga",
        "diff": "scēad",
        "hist": "stǣr",
        "hide": "Hȳdan",
index 56bbdfe..4734ca2 100644 (file)
        "userlogin-remembermypassword": "हमरा लॉगिन रखऽ",
        "login": "लॉग इन",
        "nav-login-createaccount": "सत्रारंभ / खाता खोलॊ",
-       "userlogin": "लॉग इन / खाता बनाबॊ",
        "logout": " सत्रांत (लॉग आउट)",
        "userlogout": "सत्रांत (लॉग आउट)",
        "userlogin-noaccount": "आपन॑ क॑ खाता नै छै?",
        "userlogin-joinproject": "{{SITENAME}} सं॑ जुड़ऽ",
-       "nologinlink": "एगो खाता बनाबॊ",
        "createaccount": "नवीन खाता बनाबऽ",
        "userlogin-resetpassword-link": "पासवर्ड भुलाय गेल्हो की ?",
        "userlogin-helplink2": "लॉग-इन सथें सहायता",
        "rcshowhidemine": "हमरऽ संपादन $1",
        "rcshowhidemine-show": "देखाबऽ",
        "rcshowhidemine-hide": "छुपाबऽ",
-       "rclinks": "पिछला $2 दिना मं॑ होलऽ $1 बदलाव देखियै.<br />$3",
+       "rclinks": "पिछला $2 दिना मं॑ होलऽ $1 बदलाव देखियै.",
        "diff": "अंतर",
        "hist": "इतिहास",
        "hide": "छुपाबऽ",
index a23f5f1..3e1003c 100644 (file)
@@ -77,9 +77,9 @@
        "tog-underline": "سطر تحت الوصلات:",
        "tog-hideminor": "أخف التعديلات الطفيفة في أحدث التغييرات",
        "tog-hidepatrolled": "أخف التعديلات المراجعة في أحدث التغييرات",
-       "tog-newpageshidepatrolled": "أخÙ\81 Ø§Ù\84صÙ\81حات Ø§Ù\84Ù\85عاÙ\8aÙ\86ة من قائمة الصفحات الجديدة",
+       "tog-newpageshidepatrolled": "أخÙ\81 Ø§Ù\84صÙ\81حات Ø§Ù\84Ù\85راجعة من قائمة الصفحات الجديدة",
        "tog-hidecategorization": "أخف تصنيف الصفحات",
-       "tog-extendwatchlist": "Ù\85دد قائمة المراقبة لتعرض كل التغييرات، وليس أحدثها فقط",
+       "tog-extendwatchlist": "Ù\88سع قائمة المراقبة لتعرض كل التغييرات، وليس أحدثها فقط",
        "tog-usenewrc": "طي التغييرات حسب الصفحة في أحدث التغييرات وقائمة المراقبة",
        "tog-numberheadings": "ترقيم العناوين تلقائيا",
        "tog-showtoolbar": "إظهار شريط التحرير",
@@ -89,8 +89,8 @@
        "tog-watchdefault": "أضف الصفحات والملفات التي أعدلها إلى قائمة مراقبتي",
        "tog-watchmoves": "أضف الصفحات والملفات التي أنقلها إلى قائمة مراقبتي",
        "tog-watchdeletion": "أضف الصفحات والملفات التي أحذفها إلى قائمة مراقبتي",
-       "tog-watchuploads": "أضÙ\81 Ø§Ù\84Ù\85Ù\84Ù\81ات Ø§Ù\84جدÙ\8aدة Ø§Ù\84تÙ\8a Ø±Ù\81عتها إلى قائمة مراقبتي",
-       "tog-watchrollback": "أضÙ\81 Ø¥Ù\84Ù\89 Ù\82ائÙ\85Ø© Ù\85راÙ\82بتÙ\8a Ø§Ù\84صÙ\81حات Ø§Ù\84تÙ\8a Ù\83Ù\86ت Ø£Ø¬Ø±Ù\8aت Ù\81Ù\8aÙ\87ا Ø§Ø³ØªØ±Ø¬Ø§Ø¹Ø§Øª",
+       "tog-watchuploads": "أضÙ\81 Ø§Ù\84Ù\85Ù\84Ù\81ات Ø§Ù\84جدÙ\8aدة Ø§Ù\84تÙ\8a Ø£Ø±Ù\81عها إلى قائمة مراقبتي",
+       "tog-watchrollback": "أضÙ\81 Ø§Ù\84صÙ\81حات Ø§Ù\84تÙ\8a Ø£Ø¬Ø±Ù\8a Ø¹Ù\84Ù\8aÙ\87ا Ø§Ø³ØªØ±Ø¬Ø§Ø¹Ø§Øª Ø¥Ù\84Ù\89 Ù\82ائÙ\85Ø© Ù\85راÙ\82بتÙ\8a",
        "tog-minordefault": "أشِّر كل التعديلات على أنها طفيفة مبدئيا",
        "tog-previewontop": "أظهر معاينة النص فوق صندوق التحرير",
        "tog-previewonfirst": "أظهر معاينة مع أول تعديل",
        "tog-watchlisthideown": "أخف تعديلاتي من قائمة المراقبة",
        "tog-watchlisthidebots": "أخف تعديلات البوتات من قائمة المراقبة",
        "tog-watchlisthideminor": "أخف التعديلات الطفيفة من قائمة المراقبة",
-       "tog-watchlisthideliu": "أخف تعديلات المستخدمين المسجلين في قائمة المراقبة\n\n\nإخفاء التعديلات التي كتبها تسجيل الدخول للمستخدمين من قائمة المراقبة",
+       "tog-watchlisthideliu": "أخف تعديلات المستخدمين المسجلين في قائمة المراقبة",
        "tog-watchlistreloadautomatically": "أعد تحميل قائمة المراقبة بصفة آلية حينما يتغير مرشح ما (يتطلب جافاسكربت)",
        "tog-watchlisthideanons": "أخف تعديلات المستخدمين المجهولين في قائمة المراقبة",
        "tog-watchlisthidepatrolled": "أخف التعديلات المراجعة في قائمة المراقبة",
        "tog-ccmeonemails": "أرسل إلي نسخا من الرسائل الإلكترونية التي أرسلها إلى المستخدمين الآخرين",
        "tog-diffonly": "لا تعرض محتوى الصفحة أسفل الفرق",
        "tog-showhiddencats": "أظهر التصنيفات المخفية",
-       "tog-norollbackdiff": "لا تظهر الفروق بعد إجراء التراجع",
+       "tog-norollbackdiff": "لا تظهر الفروق بعد إجراء استرجاع",
        "tog-useeditwarning": "حذّرني عندما أغادر تحرير صفحة فيها تغييرات لم أحفظها",
-       "tog-prefershttps": "دائÙ\85ا Ø§Ø³ØªØ®Ø¯Ù\85 اتصالا آمنا عند تسجيل الدخول",
+       "tog-prefershttps": "استخدÙ\85 Ø¯Ø§Ø¦Ù\85ا اتصالا آمنا عند تسجيل الدخول",
        "underline-always": "دائما",
        "underline-never": "أبدا",
        "underline-default": "وفق المظهر أو المتصفح",
        "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",
+       "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 ديسمبر",
        "period-am": "صباحًا",
        "period-pm": "مساءً",
        "pagecategories": "{{PLURAL:$1|بلا تصنيف|تصنيف|تصنيفان|تصنيفات}}",
        "category_header": "صفحات تصنيف «$1»",
        "subcategories": "تصنيفات فرعية",
        "category-media-header": "ملفات تصنيف \"$1\"",
-       "category-empty": "هذا التصنيف لا يحتوي حالياً على أي صفحات أو ملفات.",
+       "category-empty": "<em>هذا التصنيف لا يحتوي حالياً على أي صفحات أو ملفات.</em>",
        "hidden-categories": "{{PLURAL:$1|لا تصنيفات مخفية|تصنيف مخفي|تصنيفان مخفيان|تصنيفات مخفية}}",
        "hidden-category-category": "تصنيفات مخفية",
        "category-subcat-count": "{{PLURAL:$2|هذا التصنيف يحوي التصنيف الفرعي التالي|هذا التصنيف يحوي {{PLURAL:$1||التصنيف الفرعي|تصنيفين فرعيين|$1 تصنيفات فرعية}}، من إجمالي $2.}}",
        "anontalk": "نقاش",
        "navigation": "تصفح",
        "and": "&#32;و",
-       "qbfind": "جد",
-       "qbbrowse": "تصفح",
-       "qbedit": "عدل",
-       "qbpageoptions": "هذه الصفحة",
-       "qbmyoptions": "صفحاتي",
        "faq": "الأسئلة المتكررة",
-       "faqpage": "Project:أسئلة متكررة",
        "actions": "أفعال",
        "namespaces": "نطاقات",
        "variants": "المتغيرات",
        "history": "تاريخ الصفحة",
        "history_short": "التاريخ",
        "history_small": "تاريخ",
-       "updatedmarker": "عدلت منذ زيارتي الأخيرة",
+       "updatedmarker": "عُدلت منذ زيارتي الأخيرة",
        "printableversion": "نسخة للطباعة",
        "permalink": "رابط دائم",
        "print": "اطبع",
        "edit-local": "تعديل الوصف المحلي",
        "create": "أنشئ",
        "create-local": "أضف وصفا محليا",
-       "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": "احم هذه الصفحة",
        "unprotect": "غير الحماية",
-       "unprotectthispage": "غير حماية هذه الصفحة",
        "newpage": "صفحة جديدة",
-       "talkpage": "ناقش هذه الصفحة",
        "talkpagelinktext": "نقاش",
        "specialpage": "صفحة خاصة",
        "personaltools": "أدوات شخصية",
-       "articlepage": "اعرض صفحة المحتوى",
        "talk": "نقاش",
        "views": "معاينة",
        "toolbox": "أدوات",
        "tool-link-userrights": "تغيير مجموعات {{GENDER:$1|المستخدم|المستخدمة}}",
        "tool-link-userrights-readonly": "عرض مجموعات {{GENDER:$1|المستخدم|المستخدمة}}",
        "tool-link-emailuser": "أرسل رسالة {{GENDER:$1|لهذا المستخدم|لهذه المستخدمة}}",
-       "userpage": "طالع صفحة المستخدم",
-       "projectpage": "طالع صفحة المشروع",
        "imagepage": "طالع صفحة الملف",
        "mediawikipage": "طالع صفحة الرسالة",
        "templatepage": "طالع صفحة القالب",
        "redirectedfrom": "(بالتحويل من $1)",
        "redirectpagesub": "صفحة تحويل",
        "redirectto": "تحويل إلى",
-       "lastmodifiedat": "آخر تعديل لهذه الصفحة كان يوم $1 الساعة $2.",
+       "lastmodifiedat": "آخر تعديل لهذه الصفحة كان يوم $1، الساعة $2.",
        "viewcount": "{{PLURAL:$1|لم تعرض هذه الصفحة أبدا|تم عرض هذه الصفحة مرة واحدة|تم عرض هذه الصفحة مرتين|تم عرض هذه الصفحة $1 مرات|تم عرض هذه الصفحة $1 مرة}}.",
        "protectedpage": "صفحة محمية",
        "jumpto": "اذهب إلى:",
        "jumptonavigation": "تصفح",
        "jumptosearch": "ابحث",
-       "view-pool-error": "عذراØ\8c Ø§Ù\84Ø®Ù\88ادÙ\8aÙ\85 Ù\85Ù\86Ù\87Ù\83Ø© Ø­Ø§Ù\84Ù\8aا.\nÙ\8aحاÙ\88Ù\84 Ù\85ستخدÙ\85Ù\88Ù\86 Ù\83ثر Ø§Ù\84Ù\88صÙ\88Ù\84 Ø¥Ù\84Ù\89 Ù\87Ø°Ù\87 Ø§Ù\84صÙ\81حة.\nÙ\85Ù\86 Ù\81ضÙ\84Ù\83 ØªÙ\85Ù\87Ù\91Ù\84 Ù\82Ù\84Ù\8aÙ\84ا Ù\82بÙ\84 Ù\85حاÙ\88Ù\84Ø© Ø§Ù\84Ù\88صÙ\88Ù\84 Ø¥Ù\84Ù\89 Ù\87Ø°Ù\87 Ø§Ù\84صÙ\81حة Ù\85جددا.\n\n$1",
-       "generic-pool-error": "عذرا، الخوادم مشغولة حاليا لوجود مستخدمون كثر يطلبون عرض هذا المورد. انتظر قليلا وأعد المحاولة.",
+       "view-pool-error": "عذرا، الخوادم منهكة حاليا.\nيحاول مستخدمون كثر الوصول إلى هذه الصفحة.\nمن فضلك تمهّل قليلا قبل محاولة الوصول إلى هذه الصفحة مجددا.\n\n$1",
+       "generic-pool-error": "عذرا، الخوادم منهكة حاليا.\nيحاول مستخدمون كثر الوصول إلى هذا المورد.\nمن فضلك تمهّل قليلا قبل محاولة الوصول إلى هذا المورد مجددا.",
        "pool-timeout": "انتهت مهلة القفل",
        "pool-queuefull": "الطابور ملآن",
        "pool-errorunknown": "خطأ غير معروف",
        "portal-url": "Project:بوابة المجتمع",
        "privacy": "سياسة الخصوصية",
        "privacypage": "Project:سياسة الخصوصية",
-       "badaccess": "عطÙ\84 في الصلاحيات",
+       "badaccess": "خطأ في الصلاحيات",
        "badaccess-group0": "غير مصرّح لك بتنفيذ الفعل الذي اعتزمته.",
        "badaccess-groups": "الفعل الذي اعتزمته مقصور على المستخدمين أعضاء {{PLURAL:$2||المجموعة|إحدى المجموعتين|إحدى المجموعات}}: $1.",
        "versionrequired": "تلزم الإصدارة $1 من ميدياويكي",
        "versionrequiredtext": "تلزم الإصدارة $1 من ميدياويكي لاستعمال هذه الصفحة. طالع [[Special:Version|صفحة معلومات الإصدارة]]",
        "ok": "موافق",
        "retrievedfrom": "مجلوبة من \"$1\"",
-       "youhavenewmessages": "{{PLURAL:$3|لك}} $1 ($2).",
+       "youhavenewmessages": "{{PLURAL:$3|لديك}} $1 ($2).",
        "youhavenewmessagesfromusers": "{{PLURAL:$4|لديك}} $1 من {{PLURAL:$3|مستخدم واحد|مستخدم واحد|مستخدمين اثنين|$3 مستخدمين|$3 مستخدما|$3 مستخدم}} ($2).",
        "youhavenewmessagesmanyusers": "لديك $1 من مستخدمين كثر ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|رسالة جديدة|999=رسائل جديدة}}",
        "feed-unavailable": "التلقيمات غير متوفرة",
        "site-rss-feed": "تلقيمة آر إس إس $1",
        "site-atom-feed": "تلقيمة أتوم $1",
-       "page-rss-feed": "تلقيمة آر إس إس \"$1\"",
-       "page-atom-feed": "تلقيمة أتوم \"$1\"",
+       "page-rss-feed": "تلقيمة آر إس إس لصفحة \"$1\"",
+       "page-atom-feed": "تلقيمة أتوم لصفحة \"$1\"",
        "feed-atom": "أتوم",
        "feed-rss": "أر إس إس",
        "red-link-title": "$1 (الصفحة غير موجودة)",
        "nosuchactiontext": "الفعل المحدد بواسطة المسار غير صحيح.\nربما تكون قد كتبت المسار بطريقة غير صحيحة، أو اتبعت رابطا غير صحيح.\nو قد يكون مرجع هذا علة في {{SITENAME}}.",
        "nosuchspecialpage": "لا توجد صفحة خاصة بهذا الاسم",
        "nospecialpagetext": "<strong>لقد طلبت صفحة خاصة غير صحيحة.</strong>\n\nقائمة الصفحات الخاصة موجودة في [[Special:SpecialPages|{{int:specialpages}}]].",
-       "error": "عطÙ\84",
-       "databaseerror": "عطÙ\84 في قاعدة البيانات",
+       "error": "خطأ",
+       "databaseerror": "خطأ في قاعدة البيانات",
        "databaseerror-text": "حدث خطأ في إستعلام قاعدة البيانات. قد يشير هذا إلى خطأ في البرنامج.",
        "databaseerror-textcl": "حدث خطأ في إستعلام قاعدة البيانات.",
        "databaseerror-query": "استعلام: $1",
        "viewyourtext": "يمكنك رؤية و نسخ مصدر <strong>تعديلاتك</strong> لهذه الصفحة.",
        "protectedinterface": "توفر هذه الصفحة نص الواجهة للبرنامج على هذا الويكي، وهي محمية لمنع سوء أستخدامها.\nلإضافة أو تغيير الترجمات لجميع مشاريع الويكي، رجاءً أستخدم [https://translatewiki.net/ translatewiki.net]، مشروع الترجمة الخاص بميدياويكي.",
        "editinginterface": "<strong>تنبيه:</strong> تعديل هذه الصفحة سيحفظ في هذا الويكي فقط. لتعميم التعديل على جميع مشاريع ميدياويكي، عدلها في [https://translatewiki.net/ مشروع ترجمة الويكي].",
-       "translateinterface": "من أجل إضافة أو تعديل ترجمات في كل مشاريع الويكي يرجى استخدم [https://translatewiki.net/ translatewiki.net]، مشروع ميدياويكي لترجمة الواجهة.",
+       "translateinterface": "من أجل إضافة أو تعديل ترجمات في كل مشاريع الويكي يرجى استخدام [https://translatewiki.net/ translatewiki.net]، مشروع ميدياويكي لترجمة الواجهة.",
        "cascadeprotected": "تمت حماية هذه الصفحة من التعديل لأنها مدمجة في {{PLURAL:$1||الصفحة التالية، والتي|الصفحتين التاليتين، واللتين|الصفحات التالية، والتي}} تم استعمال خاصية \"حماية الصفحات المدمجة\" {{PLURAL:$1||بها|بهما|بها}}:\n$2",
        "namespaceprotected": "لا تمتلك الصلاحية لتعديل الصفحات في نطاق '''$1'''.",
        "customcssprotected": "أنت لا تمتلك السماح لتعديل صفحة الCSS هذه، لأنها تحتوي على الإعدادات الشخصية لمستخدم آخر.",
        "botpasswords-help-grants": "كل منحة تعطي وصولا لصلاحيات المستخدم المعروضة التي يمتلكها حساب المستخدم بالفعل. انظر [[Special:ListGrants|جدول المنح]] للمزيد من المعلومات.",
        "botpasswords-label-grants-column": "الممنوح",
        "botpasswords-bad-appid": "اسم البوت \"$1\" غير صحيح.",
-       "botpasswords-insert-failed": "Ù\81Ø´Ù\84 Ù\81Ù\8a Ø§Ø¶Ø§Ù\81Ø©  Ø§Ø³Ù\85 Ø§Ù\84بÙ\88ت \"$1\".Ù\87Ù\84 Ø§ضيف بالفعل؟",
+       "botpasswords-insert-failed": "Ù\81Ø´Ù\84 Ù\81Ù\8a Ø¥Ø¶Ø§Ù\81Ø©  Ø§Ø³Ù\85 Ø§Ù\84بÙ\88ت \"$1\".Ù\87Ù\84 Ø£ضيف بالفعل؟",
        "botpasswords-update-failed": "فشل في تحديث اسم بوت \"$1\". هل تم حذفه؟",
        "botpasswords-created-title": "تم إنشاء كلمة سر بوت",
        "botpasswords-created-body": "تم إنشاء كلمة سر بوت \"$1\" للمستخدم \"$2\".",
        "preview": "عرض مسبق",
        "showpreview": "أظهر معاينة",
        "showdiff": "عرض التغييرات",
-       "blankarticle": "<strong>تنبيه:</strong> الصفحة التي تريد إنشاءها فارغة. إذا نقرت \"{{int:savearticle}}\" ثانية فستنشأ الصفحة بدون محتوى.",
+       "blankarticle": "<strong>تنبيه:</strong> الصفحة التي تريد إنشاءها فارغة. إذا نقرت \"$1\" ثانية فستنشأ الصفحة بدون محتوى.",
        "anoneditwarning": "<strong>تحذير:</strong> أنت غير مسجل الدخول. عنوان الأيبي الخاص بك سيكون معروضا بشكل علني لو قمت بأي تعديلات. لو أنك <strong>[$1 سجلت الدخول]</strong> أو <strong>[$2 أنشأت حسابا]</strong>، فتعديلاتك ستنسب لاسم المستخدم الخاص بك، بالإضافة إلى فوائد أخرى.",
        "anonpreviewwarning": "''أنت غير مسجل الدخول. الحفظ سيسجل عنوان الأيبي الخاص بك في تاريخ هذه الصفحة.''",
        "missingsummary": "'''تنبيه:''' لم تقم بكتابة ملخص للتعديل.\nإذا قمت بضغط حفظ الصفحة مرة أخرى، فيتم حفظ تعديلك بدون ملخص.",
-       "selfredirect": "<strong>تحذير:</strong> أنت تقوم بتحويل الصفحة إلى نفسها.\nربما حددت الهدف الخطأ للتحويلة أو أنك تقوم بتحرير الصفحة الخطأ.\n\nإذا نقرت على «{{int:savearticle}}» مرة أخرى، سيتم إنشاء التحويلة رغم الخطأ.",
+       "selfredirect": "<strong>تحذير:</strong> أنت تقوم بتحويل الصفحة إلى نفسها.\nربما حددت الهدف الخطأ للتحويلة أو أنك تقوم بتحرير الصفحة الخطأ.\n\nإذا نقرت على «$1» مرة أخرى، سيتم إنشاء التحويلة رغم الخطأ.",
        "missingcommenttext": "من فضلك أدخل تعليقا في الأسفل.",
-       "missingcommentheader": "<strong>تنبيه:</strong>  لم تقم بوضع موضوع/عنوان لهذا التعليق.\nإذا قمت بالضغط على \"{{int:savearticle}}\" مجددا، سيتم حفظ تعليقك بدون عنوان.",
+       "missingcommentheader": "<strong>تنبيه:</strong>  لم تقم بوضع موضوع/عنوان لهذا التعليق.\nإذا قمت بالضغط على \"$1\" مجددا، سيتم حفظ تعليقك بدون عنوان.",
        "summary-preview": "معاينة ملخص تحرير",
        "subject-preview": "معاينة الموضوع:",
        "previewerrortext": "حدث خطأ أثناء محاولة معاينة تغييراتك.",
        "searchprofile-everything": "الكل",
        "searchprofile-advanced": "متقدم",
        "searchprofile-articles-tooltip": "ابحث في $1",
-       "searchprofile-images-tooltip": "ابحث عن الصور",
+       "searchprofile-images-tooltip": "ابحث عن الملفات",
        "searchprofile-everything-tooltip": "ابحث في كل المحتوى (شاملا صفحات النقاش)",
        "searchprofile-advanced-tooltip": "ابحث في النطاقات المخصصة",
        "search-result-size": "$1 ({{PLURAL:$2|لا كلمات|كلمة واحدة|كلمتان|$2 كلمات|$2 كلمة}})",
        "search-file-match": "(يطابق محتوى الملف)",
        "search-suggest": "أتقصد: $1",
        "search-rewritten": "نتائج البحث المشابه $1 معروضة. يمكنك بدل ذلك البحث عن $2.",
-       "search-interwiki-caption": "المشاريع الشقيقة",
+       "search-interwiki-caption": "نتائج من المشاريع الشقيقة",
        "search-interwiki-default": "نتائح من $1:",
        "search-interwiki-more": "(المزيد)",
        "search-interwiki-more-results": "المزيد من النتائج",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (راجع أيضا [[Special:NewPages|قائمة الصفحات الجديدة]])",
        "recentchanges-submit": "أظهر",
        "rcfilters-activefilters": "المرشحات النشطة",
+       "rcfilters-quickfilters": "إعدادات الترشيح المحفوظة",
+       "rcfilters-quickfilters-placeholder-title": "لا وصلات تم حفظها بعد",
+       "rcfilters-savedqueries-defaultlabel": "مرشحات محفوظة",
+       "rcfilters-savedqueries-rename": "أعد التسمية",
+       "rcfilters-savedqueries-setdefault": "حفظ كقيمة افتراضية",
+       "rcfilters-savedqueries-unsetdefault": "إزالة القيمة الافتراضية",
+       "rcfilters-savedqueries-remove": "أزل",
+       "rcfilters-savedqueries-new-name-label": "الاسم",
+       "rcfilters-savedqueries-apply-label": "احفظ الإعدادات",
+       "rcfilters-savedqueries-cancel-label": "ألغ",
+       "rcfilters-savedqueries-add-new-title": "احفظ إعدادات المرشحات الحالية",
        "rcfilters-restore-default-filters": "استرجاع المرشحات الافتراضية",
        "rcfilters-clear-all-filters": "مسح كل المرشحات",
        "rcfilters-search-placeholder": "رشح أحدث التغييرات (تصفح أو ابدأ الكتابة)",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "هذا المرشح يتعارض مع {{PLURAL:$2|مرشح الخبرة التالي|مرشحات الخبرة التالية}}، و {{PLURAL:$2|الذي يعطي|التي تعطي}} فقط المستخدمين المسجلين: $1",
        "rcfilters-filtergroup-authorship": "ملكية التعديلات",
        "rcfilters-filter-editsbyself-label": "تعديلاتك الشخصية",
-       "rcfilters-filter-editsbyself-description": "التعديلات بواسطتك.",
-       "rcfilters-filter-editsbyother-label": "اÙ\84تعدÙ\8aÙ\84ات بواسطة الآخرين",
-       "rcfilters-filter-editsbyother-description": "التعديلات المنشأة بواسطة المستخدمين الآخرين (ليس أنت).",
+       "rcfilters-filter-editsbyself-description": "مساهماتك الشخصية.",
+       "rcfilters-filter-editsbyother-label": "اÙ\84تغÙ\8aÙ\8aرات بواسطة الآخرين",
+       "rcfilters-filter-editsbyother-description": "كل التغييرات باستثناء تغييراتك.",
        "rcfilters-filtergroup-userExpLevel": "مستوى الخبرة (للمستخدمين المسجلين فقط)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "مرشحات الخبرة تعطي فقط المستخدمين المسجلين، لذا فهذا المرشح يتعارض مع مرشح \"غير المسجلين\".",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "مرشح \"غير المسجلين\" يتعارض مع واحد أو أكثر من مرشحات الخبرة، والتي تعطي المستخدمين المسجلين فقط. المرشحات المتعارضة معلم عليها في مساحة المرشحات النشطة، بالأعلى.",
        "rcfilters-filter-user-experience-level-newcomer-label": "القادمون الجدد",
        "rcfilters-filter-user-experience-level-newcomer-description": "أقل من 10 تعديلات و4 أيام من النشاط.",
        "rcfilters-filter-user-experience-level-learner-label": "المتعلمون",
-       "rcfilters-filter-user-experience-level-learner-description": "اÙ\84Ù\85زÙ\8aد Ù\85Ù\86 Ø£Ù\8aاÙ\85 Ø§Ù\84Ù\86شاط Ù\88اÙ\84تعدÙ\8aÙ\84ات أكثر من \"القادمين الجدد\" ولكن أقل من \"المستخدمين ذوي الخبرة\".",
+       "rcfilters-filter-user-experience-level-learner-description": "خبرة أكثر من \"القادمين الجدد\" ولكن أقل من \"المستخدمين ذوي الخبرة\".",
        "rcfilters-filter-user-experience-level-experienced-label": "المستخدمون ذوو الخبرة",
        "rcfilters-filter-user-experience-level-experienced-description": "أكثر من 30 يوما من النشاط و500 تعديل.",
        "rcfilters-filtergroup-automated": "المساهمات الأوتوماتيكية",
        "rcfilters-filter-minor-description": "التعديلات التي علم عليها المستخدم كطفيفة.",
        "rcfilters-filter-major-label": "التعديلات غير الطفيفة",
        "rcfilters-filter-major-description": "التعديلات غير المعلم عليها كطفيفة.",
+       "rcfilters-filtergroup-watchlist": "الصفحات في قائمة المراقبة",
+       "rcfilters-filter-watchlist-watched-label": "في قائمة المراقبة",
+       "rcfilters-filter-watchlist-watched-description": "التغييرات للصفحات في قائمة مراقبتك.",
+       "rcfilters-filter-watchlist-watchednew-label": "تغييرات قائمة المراقبة الجديدة",
+       "rcfilters-filter-watchlist-watchednew-description": "التغييرات التي حدثت على الصفحات التي تراقبها ولم تزرها منذ ذلك الحين.",
+       "rcfilters-filter-watchlist-notwatched-label": "ليس في قائمة المراقبة",
+       "rcfilters-filter-watchlist-notwatched-description": "كل شيء باستثناء التغييرات في صفحات قائمة مراقبتك.",
        "rcfilters-filtergroup-changetype": "نوع التغيير",
        "rcfilters-filter-pageedits-label": "تعديلات الصفحة",
-       "rcfilters-filter-pageedits-description": "التعديلات لمحتوى الويكي، النقاشات، وصوفات التصنيفات....",
+       "rcfilters-filter-pageedits-description": "التعديلات لمحتوى الويكي، النقاشات، وصوفات التصنيفات",
        "rcfilters-filter-newpages-label": "إنشاء الصفحات",
        "rcfilters-filter-newpages-description": "التعديلات التي تصنع صفحات جديدة.",
        "rcfilters-filter-categorization-label": "تغييرات التصنيفات",
        "rcfilters-filter-categorization-description": "سجلات إضافة أو إزالة الصفحات من التصنيفات.",
        "rcfilters-filter-logactions-label": "الأفعال المسجلة",
-       "rcfilters-filter-logactions-description": "الأفعال الإدارية، إنشاء الحسابات، حذف الصفحات، عمليات الرفع....",
+       "rcfilters-filter-logactions-description": "الأفعال الإدارية، إنشاء الحسابات، حذف الصفحات، عمليات الرفع",
        "rcfilters-hideminor-conflicts-typeofchange-global": "مرشح \"التعديلات الطفيفة\" يتعارض مع مرشح واحد أو أكثر من مرشحات نوع التغيير، وذلك لأن بعض أنواع التغيير لا يمكن التعليم عليها ك\"طفيفة.\" المرشحات المتعارضة معلم عليها في مساحة المرشحات النشطة بالأعلى.",
        "rcfilters-hideminor-conflicts-typeofchange": "بعض أنواع التغييرات لا يمكن التعليم عليها ك\"طفيفة،\" لذا فهذا المرشح يتعارض مع مرشحات نوع التغيير التالية: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "مرشح نوع التغيير هذا يتعارض مع مرشح \"التعديلات الطفيفة\". بعض أنواع التغييرات لا يمكن التعليم عليها ك\"طفيفة.\"",
+       "rcfilters-filtergroup-lastRevision": "آخر مراجعة",
+       "rcfilters-filter-lastrevision-label": "آخر مراجعة",
+       "rcfilters-filter-lastrevision-description": "أخر تعديل للصفحة.",
+       "rcfilters-filter-previousrevision-label": "نسخ سابقة",
+       "rcfilters-filter-previousrevision-description": "كل تعديلات الصفحة ما عدا التعديل الأخير.",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:ليس</strong> $1",
+       "rcfilters-view-tags": "الوسوم",
        "rcnotefrom": "بالأسفل {{PLURAL:$5|التغيير|التغييرات}} منذ <strong>$2</strong> (إلى <strong>$1</strong> معروضة).",
        "rclistfromreset": "إعادة ضبط خيار التاريخ",
        "rclistfrom": "أظهر التغييرات بدء من $3 $2",
        "rcshowhidecategorization": "$1 تصنيف الصفحات",
        "rcshowhidecategorization-show": "أظهر",
        "rcshowhidecategorization-hide": "أخف",
-       "rclinks": "أظهر آخر $1 تعديل في آخر $2 يوم<br />$3",
+       "rclinks": "أظهر آخر $1 تعديل في آخر $2 يوم",
        "diff": "فرق",
        "hist": "تاريخ",
        "hide": "أخف",
        "listfiles-latestversion-no": "لا",
        "file-anchor-link": "ملف",
        "filehist": "تاريخ الملف",
-       "filehist-help": "اضغط على وقت/زمن لرؤية الملف كما بدا في هذا الزمن.",
+       "filehist-help": "اضغط على زمن/تاريخ لرؤية الملف كما بدا في هذا الزمن.",
        "filehist-deleteall": "احذف الكل",
        "filehist-deleteone": "حذف",
        "filehist-revert": "استرجع",
        "filehist-current": "حالي",
-       "filehist-datetime": "وقت/زمن",
+       "filehist-datetime": "زمن/تاريخ",
        "filehist-thumb": "صورة مصغرة",
        "filehist-thumbtext": "تصغير للنسخة بتاريخ $1",
        "filehist-nothumb": "لا تصغير",
        "apisandbox-helpurls": "وصلات المساعدة",
        "apisandbox-examples": "أمثلة",
        "apisandbox-dynamic-parameters": "معاملات إضافية",
-       "apisandbox-dynamic-parameters-add-label": "اضاÙ\81Ø© Ø£Ù\84Ù\8aات:",
+       "apisandbox-dynamic-parameters-add-label": "أضÙ\81 Ù\85Ù\8fعاÙ\85Ù\84ا:",
        "apisandbox-dynamic-parameters-add-placeholder": "اسم المعامل",
        "apisandbox-dynamic-error-exists": "يوجد بالفعل معامل باسم \"$1\".",
        "apisandbox-deprecated-parameters": "معاملات مهملة",
        "enotif_body_intro_moved": "صفحة {{SITENAME}} $1 {{GENDER:$2|نقلها|نقلتها}} $2 في $PAGEEDITDATE. لمشاهدة النسخة الحالية راجع $3.",
        "enotif_body_intro_restored": "صفحة {{SITENAME}} $1 {{GENDER:$2|استرجعها|استرجعتها}} $2 في $PAGEEDITDATE. لمشاهدة النسخة الحالية راجع $3.",
        "enotif_body_intro_changed": "صفحة {{SITENAME}} $1 {{GENDER:$2|عدلها|عدلتها}} $2 في $PAGEEDITDATE. لمشاهدة النسخة الحالية راجع $3.",
-       "enotif_lastvisited": "انظر $1 لكل التغييرات منذ زيارتك الأخيرة.",
-       "enotif_lastdiff": "انظر $1 لرؤية هذا التغيير.",
+       "enotif_lastvisited": "لكل التغييرات منذ زيارتك الأخيرة، انظر $1",
+       "enotif_lastdiff": "لرؤية هذا التغيير، انظر $1",
        "enotif_anon_editor": "مستخدم مجهول $1",
        "enotif_body": "عزيزي $WATCHINGUSERNAME\n\n$PAGEINTRO $NEWPAGE\n\nملخص التعديل: $PAGESUMMARY $PAGEMINOREDIT\n\nاتصل بالمحرر:\nالبريد: $PAGEEDITOR_EMAIL\nويكي: $PAGEEDITOR_WIKI\n\nلن يكون هناك إخطارات أخرى في حالة حدوث مزيد من التغييرات إلا إذا قمت بزيارة تلك الصفحة أثناء تواجدك. يمكنك أيضاً إزالة العلامات عن جميع الصفحات في قائمة مراقبتك.\n\nنظام {{SITENAME}} للإشعار\n\n--\nلتغيير إعدادات الإشعار بالبريد الإلكتروني الخاص بك، قم بزيارة\n{{canonicalurl:{{#special:Preferences}}}}\n\nلتغيير إعدادات قائمة مراقبتك، قم بزيارة\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nلحذف الصفحة من قائمة مراقبتك، قم بزيارة\n$UNWATCHURL\n\nللمقترحات وللحصول على مساعدة إضافية:\n$HELPPAGE",
        "created": "أنشئت",
        "sp-contributions-uploads": "مرفوعات",
        "sp-contributions-logs": "سجلات",
        "sp-contributions-talk": "نقاش",
-       "sp-contributions-userrights": "إدارة صلاحيات المستخدم",
+       "sp-contributions-userrights": "إدارة صلاحيات {{GENDER:$1|المستخدم|المستخدمة}}",
        "sp-contributions-blocked-notice": "هذا المستخدم ممنوع حاليا.\nإن آخر مدخلة في سجل المنع موجودة أدناه كمرجع:",
        "sp-contributions-blocked-notice-anon": "عنوان الأيبي هذا ممنوع حاليا.\nآخر مدخلة لسجل المنع معروضة هنا كمرجع:",
        "sp-contributions-search": "بحث عن مساهمات",
        "blocklist": "المستخدمون الممنوعون",
        "autoblocklist": "منع تلقائي",
        "autoblocklist-submit": "بحث",
-       "autoblocklist-legend": "عرض عمليات المنع التلقائي",
+       "autoblocklist-legend": "قائمة المنع التلقائي",
        "autoblocklist-localblocks": "{{PLURAL:$1|المنع التلقائي المحلي|عمليات المنع التلقائي المحلية}}",
+       "autoblocklist-total-autoblocks": "مُجمل الممنوعون تلقائيا: $1",
        "autoblocklist-empty": "قائمة المنع التلقائي فارغة.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|المنع التلقائي الآخر|عمليات المنع التلقائي الأخرى}}",
        "ipblocklist": "المستخدمون الممنوعون",
        "blocklist-timestamp": "الزمن",
        "blocklist-target": "الهدف",
        "blocklist-expiry": "ينتهي في",
-       "blocklist-by": "حظر Ø§Ù\84Ù\85شرÙ\81",
+       "blocklist-by": "اÙ\84إدارÙ\8a Ø§Ù\84Ù\85اÙ\86ع",
        "blocklist-params": "معطيات المنع",
        "blocklist-reason": "السبب",
        "ipblocklist-submit": "بحث",
        "export-download": "احفظ كملف",
        "export-templates": "ضمن القوالب",
        "export-pagelinks": "ضمن الصفحات الموصولة إلى عمق:",
-       "export-manual": "اضاÙ\81Ø© ØµÙ\81حة Ù\8aدÙ\88Ù\8a:",
+       "export-manual": "إضاÙ\81Ø© ØµÙ\81حات Ù\8aدÙ\88Ù\8aا:",
        "allmessages": "رسائل النظام",
        "allmessagesname": "الاسم",
        "allmessagesdefault": "النص الافتراضي",
        "tooltip-pt-anonuserpage": "صفحة المستخدم للأيبي الذي تقوم بالتحرير من خلاله",
        "tooltip-pt-mytalk": "صفحة {{GENDER:|نقاشك}}",
        "tooltip-pt-anontalk": "نقاش حول التعديلات من عنوان الأيبي هذا",
-       "tooltip-pt-preferences": "{{GENDER:|Your}} تفضيلاتي",
+       "tooltip-pt-preferences": "تفضيلاتك",
        "tooltip-pt-watchlist": "قائمة الصفحات التي تراقب التغييرات التي تحدث بها",
-       "tooltip-pt-mycontris": "قائمة{{GENDER:|your}}  مساهماتك",
+       "tooltip-pt-mycontris": "قائمة مساهمات{{GENDER:|ك}}",
        "tooltip-pt-anoncontribs": "قائمة بتعديلات قام بها عنوان الآي بي",
        "tooltip-pt-login": "يفضل أن تسجل الدخول، لكنه ليس إلزاميا.",
+       "tooltip-pt-login-private": "عليك تسجيل الدخول لاستخدام هذه الويكي.",
        "tooltip-pt-logout": "تسجيل الخروج",
-       "tooltip-pt-createaccount": "نشجعك على عمل حساب وتسجيل دخولك; لكنه غير ضروري على اي حال",
+       "tooltip-pt-createaccount": "نشجعك على عمل حساب وتسجيل دخولك؛ لكنه غير ضروري على اي حال",
        "tooltip-ca-talk": "نقاش عن صفحة المحتوى",
        "tooltip-ca-edit": "تعديل هذه الصفحة",
        "tooltip-ca-addsection": "ابدأ قسما جديدا",
        "tooltip-search": "ابحث في {{SITENAME}}",
        "tooltip-search-go": "اذهب إلى صفحة بالاسم نفسه إن وجدت",
        "tooltip-search-fulltext": "ابحث في الصفحات عن هذا النص",
-       "tooltip-p-logo": "الصفحة الرئيسية",
+       "tooltip-p-logo": "زÙ\8fر Ø§Ù\84صÙ\81حة Ø§Ù\84رئÙ\8aسÙ\8aØ©",
        "tooltip-n-mainpage": "زر الصفحة الرئيسية",
        "tooltip-n-mainpage-description": "زر الصفحة الرئيسية",
        "tooltip-n-portal": "حول المشروع، ماذا يمكن أن تفعل، أين يمكن أن تجد ما تحتاجه",
        "tooltip-n-currentevents": "مطالعة سريعة لأهم الأحداث الجارية",
        "tooltip-n-recentchanges": "قائمة أحدث التغييرات في الويكي.",
        "tooltip-n-randompage": "حمل صفحة عشوائية",
-       "tooltip-n-help": "اÙ\84Ù\85Ù\83اÙ\86 Ù\84لمساعدة",
+       "tooltip-n-help": "Ø­Ù\8aØ« ØªØ¬Ø¯ Ø§لمساعدة",
        "tooltip-t-whatlinkshere": "قائمة بكل صفحات الويكي التي تصل هنا",
        "tooltip-t-recentchangeslinked": "أحدث التغييرات في الصفحات الموصولة من هذه الصفحة",
        "tooltip-feed-rss": "تلقيم أر إس إس لهذه الصفحة",
        "tooltip-feed-atom": "تلقيم أتوم لهذه الصفحة",
-       "tooltip-t-contributions": "رؤية قائمة مساهمات {{GENDER:$1|this user}}",
+       "tooltip-t-contributions": "رؤية قائمة مساهمات {{GENDER:$1|هذا المستخدم|هذه المستخدمة}}",
        "tooltip-t-emailuser": "أرسل رسالة {{GENDER:$1|لهذا المستخدم|لهذه المستخدمة}}",
        "tooltip-t-info": "المزيد من المعلومات عن هذه الصفحة",
        "tooltip-t-upload": "ارفع ملفات",
        "newimages-user": "عنوان الأيبي أو اسم المستخدم",
        "newimages-showbots": "أظهر التحميلات بواسطة البوتات",
        "newimages-hidepatrolled": "أخف المرفوعات المنظورة",
+       "newimages-mediatype": "نوع الوسيط:",
        "noimages": "لا شيء للعرض.",
        "gallery-slideshow-toggle": "تغيير الصور المصغرة",
        "ilsubmit": "بحث",
        "confirmrecreate-noreason": "{{GENDER:$1|حذف المستخدم|حذفت المستخدمة}} [[User:$1|$1]] ([[User talk:$1|نقاش]]) هذه الصفحة بعد أن بدأت أنت بتحريرها. الرجاء التأكد من أنك تريد إعادة إنشاء هذه الصفحة.",
        "recreate": "إعادة إنشاء",
        "unit-pixel": "بك",
+       "confirm-purge-title": "مسح كاش هذه الصفحة",
        "confirm_purge_button": "موافق",
        "confirm-purge-top": "امسح مختزن هذه الصفحة؟",
        "confirm-purge-bottom": "إفراغ مختزن الصفحة يمحو المختزن ويجبر أحدث نسخة على الظهور.",
        "tags-create-reason": "السبب:",
        "tags-create-submit": "أنشئ",
        "tags-create-no-name": "عليك أن تحدد اسم الوسم.",
-       "tags-create-invalid-chars": "أسماء الوسوم ينبغي ألا تحتوي على فواصل (<code>,</code>) أو forward slashes (<code>/</code>).",
+       "tags-create-invalid-chars": "ينبغي ألا تحتوي أسماء الوسوم على فواصل (<code>,</code>) أو عارضة عمودية (<code>|</code>) أو خط مائل للأمام (<code>/</code>).",
        "tags-create-invalid-title-chars": "يجب أن لا تحتوي أسماء العلامات الأحرف التي لا يمكن استخدامها في عناوين الصفحات.",
        "tags-create-already-exists": "الوسم \"$1\" موجود بالفعل.",
        "tags-create-warnings-above": "{{PLURAL:$2|التحذير التالي حدث|التحذيرات التالية حدثت}} عند محاولة إنشاء الوسم \"$1\":",
        "htmlform-user-not-valid": "اسم المستخدم <strong>$1</strong> غير صالح.",
        "logentry-delete-delete": "{{GENDER:$2|حذف|حذفت}} $1 صفحة $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|حذف|حذفت}} التحويلة $3 بواسطة إعادة الكتابة",
-       "logentry-delete-restore": "{{GENDER:$2|استرجع|استرجعت}} الصفحة $3 ($4)",
+       "logentry-delete-restore": "{{GENDER:$2|استرجع|استرجعت}} $1 الصفحة $3 ($4)",
        "logentry-delete-restore-nocount": "$1 {{GENDER:$2|استرجع|استرجعت}} الصفحة $3",
        "restore-count-revisions": "{{PLURAL:$1|1 مراجعة|$1 مراجعة}}",
-       "restore-count-files": "{{PLURAL:$1|1 ملف|$1 ملف}}",
+       "restore-count-files": "{{PLURAL:$1||ملف واحد|ملفان|$1 ملفات|$1 ملفًا|$1 ملف}}",
        "logentry-delete-event": "{{GENDER:$2|غيّر|غيّرت}} $1 إمكانية مشاهدة {{PLURAL:$5||حدث|حدثين|$5 أحداث|$5 حدثًا|$5 حدث}} في سجل $3: $4",
        "logentry-delete-revision": "غيّر{{GENDER:$2||ت}} $1 إمكانية مشاهدة {{PLURAL:$5||مراجعة واحدة|مراجعتين|$5 مراجعات|$5 مراجعة}} في صفحة $3: $4",
        "logentry-delete-event-legacy": "{{GENDER:$2|غيّر|غيّرت}} $1 إمكانية رؤية أحداث في سجل $3",
        "mw-widgets-titleinput-description-redirect": "تحويل إلى $1",
        "mw-widgets-categoryselector-add-category-placeholder": "أضف تصنيفا...",
        "mw-widgets-usersmultiselect-placeholder": "أضف المزيد...",
+       "date-range-from": "من تاريخ:",
+       "date-range-to": "حتى تاريخ:",
        "sessionmanager-tie": "لا يمكن جمع أنواع استيثاق متعددة: $1.",
        "sessionprovider-generic": "جلسات $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "جلسات قائمة على ملفات تعريف الارتباط (كوكيز)",
        "pageid": "معرف الصفحة $1",
        "rawhtml-notallowed": "لا يمكن استخدام وسوم &lt;html&gt; خارج الصفحات العادية.",
        "gotointerwiki": "ترك {{SITENAME}}",
-       "gotointerwiki-invalid": "العنوان المحدد كان غير صحيح.",
-       "gotointerwiki-external": "أنت على وشك ترك {{SITENAME}} لزيارة [[$2]] والذي هو موقع منفصل.\n\n[$1 اضغط هنا للاستمرار إلى $1].",
+       "gotointerwiki-invalid": "العنوان المحدد غير صحيح.",
+       "gotointerwiki-external": "أنت على وشك ترك {{SITENAME}} لزيارة [[$2]]، وهو موقع منفصل.\n\n'''[$1 اضغط هنا للاستمرار إلى $1]'''",
        "undelete-cantedit": "أنت لا يمكنك استرجاع هذه الصفحة حيث أنه لا يمكنك تعديل هذه الصفحة.",
-       "undelete-cantcreate": "أنت لا يمكنك استرجاع هذه الصفحة حيث أنه لا توجد صفحة بهذا الاسم وأنت غير مسموح لك بإنشاء هذه الصفحة."
+       "undelete-cantcreate": "أنت لا يمكنك استرجاع هذه الصفحة حيث أنه لا توجد صفحة بهذا الاسم وأنت غير مسموح لك بإنشاء هذه الصفحة.",
+       "pagedata-title": "بيانات الصفحة",
+       "pagedata-bad-title": "عنوان خاطئ: $1."
 }
index 8d20e95..d9d99e7 100644 (file)
        "userlogin-signwithsecure": "ܐܚܫܚ ܕܒܝܩܘܬܐ ܡܫܝܢܢܬܐ",
        "login": "ܥܘܠ",
        "nav-login-createaccount": "ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ",
-       "userlogin": "ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ",
-       "userloginnocreate": "ܥܘܠ",
        "logout": "ܦܠܘܛ",
        "userlogout": "ܦܠܘܛ",
        "notloggedin": "ܠܝܬܝܟ ܥܠܝܠܐ",
        "userlogin-noaccount": "ܠܝܬ ܠܟ ܚܘܫܒܢܐ؟",
        "userlogin-joinproject": "ܢܩܦ ܥܡ {{SITENAME}}",
-       "nologin": "ܠܝܬ ܠܟ ܚܘܫܒܢܐ؟ '''$1'''.",
-       "nologinlink": "ܒܪܝ ܚܘܫܒܢܐ",
        "createaccount": "ܒܪܝ ܚܘܫܒܢܐ",
-       "gotaccount": "ܐܝܬ ܠܟ ܚܘܫܒܢܐ؟ '''$1'''.",
-       "gotaccountlink": "ܥܘܠ",
-       "userlogin-resetlink": "ܐܬܢܫܝܬ ܝܕ̈ܥܬܐ ܕܥܠܠܐ؟",
        "userlogin-resetpassword-link": "ܢܫܬ ܡܠܬܐ ܕܥܠܠܐ؟",
        "createacct-emailrequired": "ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ",
        "createaccountmail": "ܐܦܠܚ ܡܠܬܐ ܕܥܠܠܐ ܙܒܢܢܝܬܐ ܘܫܕܪ ܠܗ ܥܠ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ ܬܘܚܡܐ ܠܬܚܬ",
-       "createaccountreason": "ܥܠܬܐ",
        "createacct-submit": "ܒܪܝ ܚܘܫܒܢܐ ܕܝܠܟ",
        "createacct-benefit-heading": "ܝܬܒܐ ܕ{{SITENAME}} ܐܣܬܝܡ ܒܝܕ ܐܢܫ̈ܐ ܐܟܘܬܟ.",
        "createacct-benefit-body1": "{{PLURAL:$1|ܫܘܚܠܦܐ|ܫܘܚܠܦ̈ܐ}}",
        "prefs-rendering": "ܐܣܟܝܡܐ",
        "saveprefs": "ܠܒܘܟ",
        "prefs-editing": "ܫܚܠܦܬܐ",
-       "rows": "ܨ̈ܦܐ",
-       "columns": "ܥܡܘܕ̈ܐ:",
        "searchresultshead": "ܒܨܝ",
        "recentchangesdays": "ܝܘܡܬ̈ܐ ܠܚܙܝܐ ܒܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ:",
        "recentchangescount": "ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ ܠܚܙܝܐ ܪܫܐܝܬ:",
        "rcshowhidemine": "$1 ܫܘܚܠܦ̈ܝ",
        "rcshowhidemine-show": "ܚܘܝ",
        "rcshowhidemine-hide": "ܛܫܝ",
-       "rclinks": "ܚܘܝ $1 ܫܘܚܠܦ̈ܐ ܐܚܪ̈ܝܐ ܒ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ<br />$3",
+       "rclinks": "ܚܘܝ $1 ܫܘܚܠܦ̈ܐ ܐܚܪ̈ܝܐ ܒ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ",
        "diff": "ܦܘܪܫܐ",
        "hist": "ܬܫܥܝܬܐ",
        "hide": "ܛܫܝ",
        "undeleteviewlink": "ܚܙܝ",
        "undeleteinvert": "ܐܗܦܟ ܠܓܘܒܝܐ",
        "undeletecomment": "ܥܠܬܐ:",
-       "undeletedrevisions": "{{PLURAL:$1|1 ܬܢܝܬܐ|$1 ܬܢܝܬ̈ܐ}} ܐܦܢܝܬ",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 ܬܢܝܬܐ|$1 ܬܢܝܬ̈ܐ}} and {{PLURAL:$2|1 ܠܦܦܐ|$2 ܠܦܦܐ}} ܐܦܢܝܬ",
-       "undeletedfiles": "{{PLURAL:$1|1 ܠܦܦܐ|$1 ܠܦܦ̈ܐ}} ܐܦܢܝܬ",
        "undelete-header": "ܚܙܝ [[Special:Log/delete|ܣܓܠܐ ܕܫܝܦܐ]] ܠܚܙܝܐ ܕܦܐܬܬ̈ܐ ܫܝܦܬ̈ܐ ܚܕ̈ܬܬܐ.",
        "undelete-search-title": "ܒܨܝ ܦܐܬܬ̈ܐ ܫܝܦܬ̈ܐ",
        "undelete-search-box": "ܒܨܝ ܦܐܬܬ̈ܐ ܫܝܦܬ̈ܐ",
        "logentry-newusers-create2": "ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $3 {{GENDER:$2|ܐܬܬܟܝܢ}} ܒܝܕ $1",
        "logentry-newusers-autocreate": "ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $1 {{GENDER:$2|ܐܬܬܣܝܡ}} ܝܬܐܝܬ",
        "rightsnone": "(ܠܐ ܡܕܡ)",
-       "revdelete-summary": "ܫܚܠܦ ܦܣܝܩܬ̈ܐ",
        "feedback-cancel": "ܒܛܘܠ",
        "feedback-message": "ܐܓܪܬܐ:",
        "feedback-subject": "ܡܠܘܐܐ:",
index 44b0f68..ad5a6d3 100644 (file)
        "yourpasswordagain": "Rüf feypinge nülawe:",
        "login": "Konkülen",
        "nav-login-createaccount": "konkülen/dewman konün",
-       "userlogin": "Konkülen/dewman konün",
-       "userloginnocreate": "Konün",
        "logout": "Tripan",
        "userlogout": "Tripan",
        "notloggedin": "Petu konlaymi.",
-       "nologin": "Nielaymi kiñe konün? $1.",
-       "nologinlink": "Dewmafinge konün",
        "createaccount": "Dewmafinge konün",
-       "gotaccount": "Dew nieymi konün? $1.",
-       "gotaccountlink": "Konün",
-       "userlogin-resetlink": "Ngoyüniengetuymi chumngechi konün?",
-       "createaccountreason": "Dungu:",
        "mailmypassword": "Amulün we nülawe werküwe mew",
        "loginlanguagelabel": "Cezugun: $1",
        "pt-login": "Konkülen",
        "rcshowhideanons": "$1 üyngenulu kellufe",
        "rcshowhidepatr": "$1 pukintulu kalekünun",
        "rcshowhidemine": "$1 tañi wirin",
-       "rclinks": "Adkintun doy we $1 kalekünun, tunte $2 antü mew<br />$3",
+       "rclinks": "Adkintun doy we $1 kalekünun, tunte $2 antü mew",
        "diff": "Kalelu",
        "hist": "rupañ",
        "hide": "Ellkan",
index 0b3fce7..3a68038 100644 (file)
@@ -6,7 +6,9 @@
                        "아라",
                        "Amire80",
                        "GeekEmad",
-                       "Macofe"
+                       "Macofe",
+                       "Mekakem",
+                       "Vikoula5"
                ]
        },
        "tog-underline": "تسطار الوصيلات:",
        "nocookiesnew": "الحساب تاع المستعملي راه مخلوق بصّح ما راكش مسجّل داخل.\n{{SITENAME}} يستعمل كوكيزات ف تسجال` الدخول تاع المستعمليين.\nراه عندك الكوكيزات راه محبّسين.\nالله يحفضك، اشعلهم و عاود سيّي تسجّل الدخول ب` السميّة تاع المستعملي و كلمت` السرّ تاعك الحدُد.",
        "nocookieslogin": "{{SITENAME}} يستعمل الكوكيزات ف تسجال الدخول تاع المستعمليين.\nالكوكيزات عندك راهم محبّسين.\nالله يحفضك، مشّيهم و عاود سيّي.",
        "nocookiesfornew": "الحساب تاع المستعملي ما تنخلقش خاطر ما نجمناش نوتّقو المصدر تاعهُ.\nأكّد بلّي الكوكيزات راهم ممشّيين عندك، عاود عمّر الپاجة و سيّي مرّة جديدة.",
+       "createacct-loginerror": "الحساب راه ندار وحدو، لكن ما دخلتش أوتوماتيك، من فضلك روح [[Special:UserLogin|دخلة بيديك]]",
        "noname": "ما مدّيتش سميّت` مستعملي مقبولة.",
        "loginsuccesstitle": "التوصال راه نجَح.",
        "loginsuccess": "<strong>راك مسجّل داخل ف {{SITENAME}} ب`السميّة \"$1\".</strong>",
-       "nosuchuser": "Ù\85ا Ù\83اÙ\8aÙ\86 Ø­ØªØ§ Ù\85ستعÙ\85Ù\84Ù\8a Ø¨`اÙ\84سÙ\85Ù\8aÙ\91Ø© \"$1\".\nاÙ\84سÙ\85Ù\8aÙ\91Ø© ØªØ§Ø¹ Ø§Ù\84Ù\85ستعÙ\85Ù\84Ù\8a Ø±Ø§Ù\87 حسّاسة ف تكسار الحروف (majuscule - minuscule).\nعاود أكّد على كيفاش كتبت الكلمات ولا [[Special:CreateAccount|اخلق حساب جديد]].",
+       "nosuchuser": "Ù\85ا Ù\83اÙ\86Ø´ Ù\85ستعÙ\85Ù\84 Ø¨`اÙ\84سÙ\85Ù\8aÙ\91Ø© \"$1\".\nاÙ\84سÙ\85Ù\8aÙ\91Ø© ØªØ§Ø¹ Ø§Ù\84Ù\85ستعÙ\85Ù\84Ù\8aÙ\86 Ø±Ø§Ù\87ا حسّاسة ف تكسار الحروف (majuscule - minuscule).\nعاود أكّد على كيفاش كتبت الكلمات ولا [[Special:CreateAccount|اخلق حساب جديد]].",
        "nosuchusershort": "ما كاين حتا مستعملي ب` السميّة \"$1\".\nأكّد على الكتيبة تاعك.",
        "nouserspecified": "لازم لك تمدّ السميّة تاع المستعملي.",
        "login-userblocked": "هاد السميّة تاع المستعملي راهي مطرودة. تسجال` الدخول ماشي مسموح.",
        "wrongpasswordempty": "كلمت` السرّ كانت خاوية.\nالله يعيّشك عاود سيّي.",
        "passwordtooshort": "كلمت` السرّ لازم يكون فيها على القل {{PLURAL:$1|1 حرف واحد|$1 حروف}}.",
        "passwordtoolong": "كلمت` السرّ ما تنجمش تكون طويلة على {{PLURAL:$1|1 حرف واحد|$1 حرف}}.",
+       "passwordtoopopular": "كلمات المرور الشايعة ما يمكنش استخدامها. من فضلك  خيّر كلمة سر سبيسيال.",
        "password-name-match": "كلمت` السرّ تاعك لازم لها تكون مبدّلة على سميّت` المستعملي تاعك.",
        "password-login-forbidden": "الستعملية تاع هاد السميّة تاع المستعملي و كلمت` السرّ راهم ممنوعين.",
        "mailmypassword": "استرجع كلمت` السرّ",
        "noemail": "ما كاين حتا إيمال مسجّل لل مستعملي \"$1\".",
        "noemailcreate": "لازم لك تحُطّ آدريسة تاع إيمال تكون مقبولة.",
        "passwordsent": "كلمت` سرّ جديدة راهي نبعتت لل آدريسة تاع إيمال المسجّلة ل \"$1\".\nالله يخلّيك عاود اتسجّل داخل مور ما راهي تلحق لك.",
-       "blocked-mailpassword": "الآدريسة إيپي تاعك راهي مبلوكية ف تبدال الپاجات، و باش نحضيو من كاش تخراب، ما تنجمش تاني تطلب باش تسترجع كلمت` السرّ.",
+       "blocked-mailpassword": "الآدريسة إيپي تاعك راهي مبلوكية ف تبدال الپاجات، و باش نحضيو من كاش تخريب، ما تنجمش تطلب باش ترجّع كلمت السرّ من هاذ الإيبي.",
        "eauthentsent": "راه نبعَت إيمال تاع تأكاد لل آدريسة الّي تمدّت.\nقبل ماينبعَت حتا إيمال وحداخُر ل هاد لادريسة، لازم تتبّع بعدا الوصافات الّي وصلو لك، باش تأكّد بلّي الحساب هادا راه ديالك.",
        "throttled-mailpassword": "راه نبعّت لك إيمال تاع السترجاع تاع كلمت& السرّ منقبَل، هادي {{PLURAL:$1|ساعة|$1 سوايع}}.\nباش نتحضّاو منل غشّ، ما ينجم ينبعت غير إيمال واحد تاع السترجاع ف كلّ مدّة تاع {{PLURAL:$1|ساعة|$1 سوايع}}.",
        "mailerror": "صرات غلطة فل بعت تاع الإيمال: $1",
-       "acct_creation_throttle_hit": "شي زايرين ل هاد الويكي كانو مستعملين الادريسة إيپي تاعك و خلقو {{PLURAL:$1|حساب|$1 حسابات}} ف` النهار هادا الّي فات، و هاد هوّا الحدّ القاصي المقبول ف هاد المدّة تاع الزمان.\nعلى هاد الشي، الزايرين من هاد الإيبي ما ينجمو يخلقو حتا حساب ف هاد الوقيتة.",
+       "acct_creation_throttle_hit": "شي زايرين تاع هاد الويكي كانو مستعملين الإيپي تاعك و خلقو {{PLURAL:$1|حساب|$1 حسابات}} ف` النهارات $2 هادو الّي فاتو، و هاد هوّا الحدّ القاصي المقبول ف هاد المدّة.\nعلى هاد الشي، الزايرين من هاد الإيبي ما ينجموش يصّنعو حساب وحداخر.",
        "emailauthenticated": "الادريسة تاع الإيمال تاعك راهي تكونفيرمات ف $2 على الـ $3.",
        "emailnotauthenticated": "الادريسة تاع الإيمال تاعك مازال ما راهيش مكونفيرمية.\nحتا إيمال ما غادي ينبعَت لك على الشغّالات هادي.",
        "noemailprefs": "خصّص كاش آدريسة تاع إيمال فل إختيارات ديالك باش تمشي لك هاد التشغيلة.",
        "createaccount-title": "خليق حساب ف {{SITENAME}}",
        "createaccount-text": "شي واحد راه خلَق حساب ف {{SITENAME}} ($4) ب`السميّة \"$2\"، و كلمت` السرّ \"$3\".\nلازم لك ضركا تتسجّل داخل ف` السيت و تبدّل كلمت` السرّ ديالك.\n\nيلا هاد الحساب راه نخلَق ب غلطة، غير فوت هاد الميساج.",
        "login-throttled": "راك درت مسيّات كتَر من المقبول باش تدخُل ف`السيت.\nالله يخلّيك، اصبَر $1 قبَل ما تسيّي عاود.",
-       "login-abort-generic": "الدخول تاعك ما نجَحش",
+       "login-abort-generic": "المحاولة ديال الدخول نتاعك ما نجَحتش",
        "login-migrated-generic": "الحساب تاعك راه تنقّل و سميّت` المستعملي ما بقاش كاين ف هاد الويكي.",
        "loginlanguagelabel": "اللوغه: $1",
        "suspicious-userlogout": "المطلب تاعك باش تسجّل خارج ما تسجّلش خاطر راه يبان مرسول من عند بحّار معطّل ولا  خزّان تاع وسّاط (proxy cache).",
        "createacct-another-realname-tip": "السميّة الحقّانيّة ماشي ملزومة.\nيلا تستعملها غادي تصلاح باش تنسّب ليك الخدمة الّي غادي تديرها.",
        "pt-login": "ادخل",
        "pt-login-button": "دخول",
+       "pt-login-continue-button": "واصل الدخول",
        "pt-createaccount": "اصنع حساب",
        "pt-userlogout": "الخروج",
        "php-mail-error-unknown": "غلطة مجهولة صرات فل وضيفة mail() تاع PHP.",
        "newpassword": "كلمت` السرّ الجديدة:",
        "retypenew": "عتود اكتب كلمت` السرّ:",
        "resetpass_submit": "اختار كلمت` السرّ و سجّل الدخول",
-       "changepassword-success": "كلمت` السرّ تاعك راهي تبدّلت!",
+       "changepassword-success": "كلمت السرّ نتاعك راها تبدّلت!",
        "changepassword-throttled": "راك درت مسيّات كتَر من المقبول باش تدخُل ف`السيت.\nالله يخلّيك، اصبَر $1 قبَل ما تسيّي عاود.",
+       "botpasswords": "كلمات سر البوت",
+       "botpasswords-summary": "<em>كلمات سر البوت</em> تسمح بالوصول لحساب مستخدم من خلال API بلا ما  تستخدام اعتمادات تسجيل الدخول الرئيسية للحساب. صلاحيات المستخدم المتوفرة عند تسجيل الدخول باستخدام كلمة سر بوت بالاك تكون مقيدة.\nإذا ما عرفتش علاش باغي تدير هذا، لازملك ما تديرهاش. حد أبدا ما يلزملو يسألك باش تولّد واحدة من هذه و تعطيهالو.",
+       "botpasswords-disabled": "كلمات السر الخاصة بالبوت معطلة.",
+       "botpasswords-no-central-id": "باش تستخدام كلمة السر الخاصة بالبوت، لازم أن تسجيل الدخول من خلال حساب موحد.",
+       "botpasswords-existing": "كلمات سر البوت اللي كاينة",
+       "botpasswords-createnew": "صناعة كلمة سر جديدة للبوت",
+       "botpasswords-editexisting": "تعديل كلمة سر موجودة للبوت",
+       "botpasswords-label-appid": "آسم البوت:",
+       "botpasswords-label-create": "أصنع",
+       "botpasswords-label-update": "حدّث / ميزاجور",
+       "botpasswords-label-cancel": "بطّل",
+       "botpasswords-label-delete": "امحي",
+       "botpasswords-label-resetpassword": "عاود كلمة السر",
+       "botpasswords-label-grants": "الشروط المطبقة الممكنة",
+       "botpasswords-created-title": "كلمت` السرّ تاع البوت مصنوعة",
+       "botpasswords-updated-title": "كلمت` السرّ تاع البوت راهي ندارت لها الميزاجور",
+       "botpasswords-deleted-title": "كلمت` السرّ تاع البوت تفاصات",
        "resetpass_forbidden": "كلمت` السرّ ما تنجمش تتبدّل",
+       "resetpass_forbidden-reason": "كلمت` السرّ ما تنجمش تتبدّل",
        "resetpass-no-info": "لازم لك تكون مسجّل الدخول باش تلحق ل هاد الپاجة.",
        "resetpass-submit-loggedin": "بدّل كلمت` السرّ",
        "resetpass-submit-cancel": "بطّل",
        "passwordreset-emailtext-ip": "شي واحد (يكون بالاك نتا، لادريسة إيپي $1) راه طلَب المصاوبة تاع كلمت` السرّ تاعك ف {{SITENAME}} ($4). {{PLURAL:$3|هاد الحساب |هاد الحسابات}} تاع المستعملي {{PLURAL:$3|راه مربوط|راهم مربوطين}} ب لادريسة تاع الإيمال:\n\n$2\n\n{{PLURAL:$3|هاد كلمت` السرّ المأقّتة|هادي كلمات` السرّ المأقّتة}} غادي يكمل صلوحها منّا على {{PLURAL:$5|نهار واحد|$5 إيّام}}.\nمليح لوكان تدخُل ل`السيت من ضركا و تبدّل كلمت` السرّ.\nيلا كاش ما وحداخُر دار هاد المطلب ولا راك تفكّرت كلمت` السرّ تاعك و ما بقيتش باغي تبدّلها، تنجم برك تنسا هاد الميساج و تستعمل كلمت` السرّ تاعك تاع مضاري.",
        "passwordreset-emailtext-user": "المستعملي $1 ف {{SITENAME}} راه طلب تبدال ف كلمت` السرّ تاعك ف {{SITENAME}}\n($4). {{PLURAL:$3|الحساب|الحسايات}} تاع المستعملي {{PLURAL:$3|راه مربوط|راهم مربوطين}} ب لادريسة تاع ليمال هادي:\n\n$2\n\n{{PLURAL:$3|هاد كلمت` السرّ المأقّتة|هادي كلمات` السرّ المأقّتة}} غادي يكمل صلوحها منّا على {{PLURAL:$5|نهار واحد|$5 إيّام}}.\nمادابيك تسجّل داخل ضركا و تختار كلمت` سرّ جديدة. يلا كان وحداخُر دار هاد المطلب، ولا راك ضركا تفكّرت كلمت` السرّ تاعك القديمة و ما بقيتش باغي تبدّلها، تنجم برك تتنسّا هاد الميساج و تدخُل ب كلمت` السرّ تاعك تاع مضاري.",
        "passwordreset-emailelement": "سميّت` المستعملي: \n$1\n\nكلمت` السرّ المأقّتة: \n$2",
-       "passwordreset-emailsentemail": "راه نبعَت إيمال تاع تبدال كلمت` السرّ.",
+       "passwordreset-emailsentemail": "يلا كان ليمال هادا موصّل معا الحساب تاعك، غادي ينبعَت لك إيمال تاع تبدال كلمت` السرّ.",
+       "passwordreset-invalidemail": "كاين غلطة فل ايمال",
        "changeemail": "بدّل لادريسة تاع الإيمال",
        "changeemail-header": "كمّل الكتبة ف` الجدوال هادا باش تبدّل لادريسة تاع الإيمال تاعك. يلزم لك تدخّل كلمت` السرّ تاعك باش تأكّد هاد التبدال.",
        "changeemail-no-info": "لازم لك تكون مسجّل داخل باش توصَل ل هاد الپاجة بسّراح.",
        "sig_tip": "سنياتورتك بالساعة و التاريخ",
        "hr_tip": "خط أفقي (ما تستعملوش بزاف)",
        "summary": "ملخص:",
-       "subject": "موضوع / علوان:",
+       "subject": "موضوع:",
        "minoredit": "هذي تبديلة صغيرة",
        "watchthis": "تبع الباجة",
        "savearticle": "سجل الباجة",
+       "savechanges": "سجّل التبدال",
+       "publishpage": "پوبليي الپاجة",
+       "publishchanges": "پوبليي واش تبدّل",
        "preview": "شوفه-قبلي",
        "showpreview": "بين معاينة",
        "showdiff": "عرض التبديلات",
-       "blankarticle": "<strong>ردّ البال:</strong> الپاجة الّي كريّيتها راهي خاوية.\nيلا تعاود تكليكي على {{int:savearticle}}\"، الپاجة غادي تنخلق بلا ما يكون فيها حتا محتاوا.",
+       "blankarticle": "<strong>ردّ البال:</strong> الپاجة الّي كريّيتها راهي خاوية.\nيلا تعاود تكليكي على $1\"، الپاجة غادي تنخلق بلا ما يكون فيها حتا محتاوا.",
        "anoneditwarning": "'''توليهة:''' راك ما دخلتش بل حساب تاعك.\nيلا تدير شي تبدال، غادي تتسجّل لادريسة آيبي تاعك فل متراخ تاع هاد الصفحة و تكون باينة ل كلّ واحد. يلا [$1 تتكونيكتا]</strong> ولا <strong>[$2 تخلق حساب]</strong>، التبدالات تاعك غادي يبانو تحت السميّة تاع المستعملي تاعك، و كاين تاني مزيّات وحدخرين.",
        "anonpreviewwarning": "<em>ما راكش مسجّل داخل. لوكان تحفّظ التبدالات ضركا غادي تتسجّل لادريسة إيپي تاعك فل تاريخ تاع هاد الپاجة.</em>",
-       "missingsummary": "<strong>تفكار:</strong> راك ما مدّيتش تلخيص على التبدال تاعك.\nيلا تكليكي على \"{{int:savearticle}}\" مجّديد، التبدال تاعك غادي يتسجّل بلاش.",
-       "selfredirect": "<strong>ردّ البال:</strong> راك توجّه هاد الپاجة على روحها.\nبالاك راك غلطت فل ختيّار تاع التقيان تاع الپاجة، ولا تاني ما راكش فل پاجة الّي راك حاب تإيديتيها.\nيلا تكليكي على \"{{int:savearticle}}\" مجّديد، هاد التوجاه غادي ينخلق كيما هاك.",
+       "missingsummary": "<strong>تفكار:</strong> راك ما مدّيتش تلخيص على التبدال تاعك.\nيلا تكليكي على \"$1\" مجّديد، التبدال تاعك غادي يتسجّل بلاش.",
+       "selfredirect": "<strong>ردّ البال:</strong> راك توجّه هاد الپاجة على روحها.\nبالاك راك غلطت فل ختيّار تاع التقيان تاع الپاجة، ولا تاني ما راكش فل پاجة الّي راك حاب تإيديتيها.\nيلا تكليكي على \"$1\" مجّديد، هاد التوجاه غادي ينخلق كيما هاك.",
        "missingcommenttext": "الله يحفضك حُطّ شي تعليق هنا لتحت.",
-       "missingcommentheader": "<strong>تفكار:</strong> راك ما حطّيتش علوان تاع الموضوع تاع التعليق تاعك.\nيلا تكليكي على \"{{int:savearticle}}\" مجّديد، التبدال تاعك غادي يتسجّل بلاش.",
+       "missingcommentheader": "<strong>تفكار:</strong> راك ما حطّيتش علوان فل موضوع تاع التعليق تاعك.\nيلا تكليكي على \"$1\" مل جديد، التبدال تاعك غادي يتسجّل بلاش.",
        "summary-preview": "شوفة خفيفة على التلخيص:",
        "subject-preview": "شوفة خفيفة على العلوان / الموضوع:",
        "previewerrortext": "صرات غلطة فل محاولة باش تشوف خفيف ف` التبدالات تاعك.",
        "continue-editing": "روح لصندوق التحرير",
        "previewconflict": "هاذ العرض يبين النص الموجود في صندوق التحرير الفوقاني اللي يبانلك إذا اختاريت النشر.",
        "session_fail_preview": "'''مانقدروش نسجلو التبديلات نتاوعك علا خاطر كاين معلومات تودرو في ما يخص القعدة .'''\nمن فضلت حاول مرة اخرى.\nإذا ما نجحتش مرة جديدة, حاول باش [[Special:UserLogout|تخرج]], و تدخل مرة اخرى",
-       "session_fail_preview_html": "'''مانقدروش نسجلو التبديلات نتاوعك علا خاطر كاين معلومات تودرو في ما يخص القعدة .'''\n\n''على خاطر {{SITENAME}} فعل HTML brut, الإستضهار تخبا باش نتوخاو الهجمات بالجافاسكريبت.''\n\n'''إذا كانت محاولة التبديل صادقة, حاول مرة اخرى.'''\nالا ما نجحتش مرة اخرى, [[Special:UserLogout|اخرج]], و ادخل مرة اخرى",
+       "session_fail_preview_html": "'''مانقدروش نسجلو التبديلات نتاوعك علا خاطر كاين معلومات تودرو في ما يخص القعدة.'''\n\n<em>على خاطر {{SITENAME}} فعل HTML brut, الإستضهار تخبا باش نتوخاو الهجمات بالجافاسكريبت.</em>\n\n<strong>إذا كانت محاولة التبديل صادقة, حاول مرة اخرى.</strong>\nالا ما نجحتش مرة اخرى, [[Special:UserLogout|اخرج]], و ادخل مرة اخرى",
        "editing": "تحرير $1",
        "creating": "خليق $1",
        "editingsection": "كتيبه $1 (قسم)",
+       "editconflict": "ڤيرة تاع التبدال:$1",
+       "yourtext": "التاكست تاعك",
+       "yourdiff": "ديفيرونس",
        "templatesused": "{{PLURAL:$1||القالب المستعمل|القوالب المستعمله}} في هذه الباجه:",
        "template-protected": "(محميه)",
        "template-semiprotected": "(نص حماية )",
        "permissionserrorstext-withaction": "ما راكش اوتوريزى ل$2، لل{{PLURAL:$1||سبب هاذا|اسباب هاذي}}:",
        "recreate-moveddeleted-warn": "'''توليه: راك تعاود تصنع باحه اتمحات من قبل.'''\n\nلازم تتأكد بلى الباجه الا نصنعت ماهوش مشكل الا كملت الكتبه فبها.\nريجيستر المحو و النقل معروض هنا باش تراقب :",
        "moveddeleted-notice": "هاذ الباجه تمحات .\nريجيستر المحو والتنقال للباجه معروضين التحت كريفيرونس.",
+       "edit-conflict": "ڤيرة تاع التبدال:$1",
        "post-expand-template-inclusion-warning": "'''توليه:''' الباجة داخل فيها قوالب بزاف.\nشي قوالب ما غاديش تدخل.",
        "post-expand-template-inclusion-category": "الباجات داخل فيها بزاف القوالب",
        "post-expand-template-argument-warning": "'''توليه:''' هذه الباجه فيها عامل قالب واحد على الأقل عندو حجم تمدد كبير بزاف.\nهاذالعوامل اتمحات.",
        "nextrevision": "فرسيون جايه←",
        "currentrevisionlink": "المراجعه الحاليه",
        "cur": "الحالي",
+       "next": "التابع",
        "last": "السابق",
+       "page_first": "اللوّل",
+       "page_last": "التالي",
        "histlegend": "تخيار الفرق: علم على صناديق النسخ للمقارنه و ادرك قارن بين النسخ المختارة والا القفلة التحت .<br />\nمفتاح: (الحالي) = الفرق مع النسخة تع دروك\n(الفايته) = الفرق مع النسخة اللي فاتت، ط = تبديل خفيف",
-       "history-fieldset-title": "نافيقي في التاريخ",
-       "history-show-deleted": "المماسكيه برك",
+       "history-fieldset-title": "ناڢيڤي في التاريخ",
+       "history-show-deleted": "التبدالات المفاصية برك",
        "histfirst": "اول باجه",
        "histlast": "باجه تاليه",
+       "historysize": "({{PLURAL:$1|1 بايت|$1 bytesبايت",
+       "historyempty": "(خاوي)",
        "history-feed-item-nocomment": "$1 إلى $2",
        "rev-delundel": "بين/خبي",
+       "rev-showdeleted": "ورّي",
+       "revdelete-show-file-submit": "إيه",
        "revdel-restore": "غير كيف راهي تبان",
        "revertmerge": "فرق",
        "history-title": " «$1»: تاريخ المراجعات",
        "search-showingresults": "{{PLURAL:$4|النتيج <strong>$1</strong> تاع <strong>$3</strong>|النتايج <strong>$1 - $2</strong> من أصل <strong>$3</strong>}}",
        "search-nonefound": "ما كانش نتائج تطابق المسقسية.",
        "mypreferences": "إختيارات",
+       "prefs-edits": "ڤداه نتبديلة",
+       "prefs-editing": "التبدال",
        "youremail": "البريه الالكترونيه:",
        "yourrealname": "الاسم الحقاني:",
        "prefs-help-email": "لادريس نتع البريه الإلكترونيه بالخاطر، ولكن هي لازمه في حال نسيت كلمت السر نتاعك.",
        "prefs-help-email-others": "تقدر تاني تخلي لوخرين يتاصلو بيك في باجت نقاشك ولا في وصيله في باجت مستخدم نتاعك, اذا ارسلك واحد ما يبانش لادريس نتاعك , حتى اذ رديت عليه باش يبان لادريس نتاعك.",
+       "right-edit": "تبدال الصفحات",
        "right-writeapi": "استعمل API للكتابه نتاع الويكي",
        "newuserlogpage": "ريجيستر صنعة حسابات المستخدمين",
        "action-edit": "عدل هاذ الباجه",
        "recentchanges-label-plusminus": "الحجَم تاع الصفحة راه تبدّل ب هاد العدّة تاع البايتات",
        "recentchanges-legend-heading": "<strong>تفسار:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (شوف تاني [[Special:NewPages|ليستة تاع صفحات جديدة]])",
+       "recentchanges-submit": "ورّي",
+       "rcfilters-filter-editsbyself-label": "التبدال نتاعك",
+       "rcfilters-filter-minor-label": "تبديلة خفيفة",
+       "rcfilters-filter-major-label": "ماشي تبديلة خفيفة",
        "rcnotefrom": "التحت التبديلات من <strong>$2</strong> (إلى <strong>$1</strong> معروضة).",
        "rclistfrom": "بين التبديلات البديه من $3 $2",
        "rcshowhideminor": "$1 التبديلات الصغير",
        "rcshowhidebots-show": "ورّي",
        "rcshowhidebots-hide": "خبّي",
        "rcshowhideliu": "$1 المستخدمين المسجلين",
+       "rcshowhideliu-show": "ورّي",
        "rcshowhideliu-hide": "خبّي",
        "rcshowhideanons": "$1 المستخدمين المجهولين",
        "rcshowhideanons-show": "ورّي",
        "rcshowhidemine": "$1 تبديلات نتاعي",
        "rcshowhidemine-show": "ورّي",
        "rcshowhidemine-hide": "خبّي",
-       "rclinks": "بين آخر $1 تبديل في آخر $2 يوم<br />$3",
+       "rcshowhidecategorization-show": "ورّي",
+       "rclinks": "بين آخر $1 تبديل في آخر $2 يوم",
        "diff": "إختلاف",
        "hist": "تاريخ",
        "hide": "خبي",
        "license": "ترخيص:",
        "license-header": "ترخيص:",
        "imgfile": "فيشي",
+       "listfiles-latestversion-yes": "إيه",
+       "listfiles-latestversion-no": "لالا",
        "file-anchor-link": "ملف",
        "filehist": "تاريخ الفيشيي",
        "filehist-help": "ادرك على وقت و تاريخ/باش تشوف الملف كما بان  في هاذ الوقت.",
        "upload-disallowed-here": "ما تنحمش تعدّل هاد التصويرة",
        "randompage": "صفحة ع الزهر",
        "statistics": "إحصائيّات",
+       "brokenredirects-edit": "تبديل",
+       "withoutinterwiki-submit": "ورّي",
        "nbytes": "{{PLURAL:$1|بايت 1|$1 بايت}}",
        "nmembers": "$1 اعضاء{{PLURAL:$1||s}}",
        "prefixindex": "كامل الباجات الباديه ب",
+       "prefixindex-submit": "ورّي",
+       "usereditcount": "{{PLURAL:$1|تبديلة|تبديلات}}",
        "usercreated": "{{GENDER:$3|صنعه|صنعته}} في $1 الساعة $2",
        "newpages": "باجه جديده",
+       "newpages-submit": "ورّي",
        "move": "عاود التسمية",
        "pager-newer-n": "{{PLURAL:$1|جديد بزاف 1|جديد بزاف $1}}",
        "pager-older-n": "{{PLURAL:$1|قديم بزاف 1|قديم بزاف $1}}",
+       "apisandbox-unfullscreen": "وري الصفحة",
        "booksources": "مصادر كتاب",
        "booksources-search-legend": "حوس ما بين مصادر الكتب",
        "booksources-search": "فتّش",
        "log": "ريجيسترات العمليات",
+       "logeventslist-submit": "ورّي",
        "allpages": "قاع الباجات",
        "allarticles": "قاع الباجات",
        "allpagessubmit": "روح",
        "categories": "تصنيفات",
+       "categories-submit": "ورّي",
        "linksearch-line": "$1 موصولة من $2",
+       "listusers-submit": "ورّي",
        "listgrouprights-members": "(ليسته الأعضاء)",
        "emailuser": "ابعث بريه لهاذ المستخدم",
        "watchlist": "ليستة تاع المتابعة",
        "unwatch": "ما تزيدش تعس",
        "watchlist-details": "{{PLURAL:$1||باجه وحده|باجتين|$1 باجات|$1 باجه}} في ليستت مراقبتك، من غير اعتبار باجات النقاش هي باجات منفصله.",
        "wlshowlast": "بين آخر $1 سوايع $2 يامات",
+       "watchlist-submit": "ورّي",
+       "wlshowhideminor": "تبديلة خفيفة",
+       "wlshowhidepatr": "$1 التبديلات المعسوسه",
        "watchlist-options": "ابسيون ليستت المراقبه",
+       "historyaction-submit": "ورّي",
        "actioncomplete": "العمليه اندارت",
        "actionfailed": "العمليه فشلت",
        "dellogpage": "ريجيستر محو الباجات",
        "rollbacklinkcount": "رجّع {{PLURAL:$1|تعديل واحد|$1 تعديلات}}",
        "protectlogpage": "ريجيستر الحمايه",
        "protectedarticle": "راه حمى \"[[$1]]\"",
+       "restriction-edit": "بدل",
        "undeletelink": "شوف/رجع",
        "undeleteviewlink": "شوف",
-       "namespace": "بلاصه تع أسموات",
+       "undelete-show-file-submit": "إيه",
+       "namespace": "بلاصة تاع أسماوات",
        "invert": "اعكس التخيار",
        "tooltip-invert": "علّم هاد المقّبسة باش تخبّي التبدالات تاع الصفحات الّي فيها وسَع` التسمية (و وسَع التسمية المربوط يلا كاين)",
        "namespace_association": "وسَع التسمية المربوط",
        "tooltip-undo": "\"نحّي\" فاصي هاد الـمعاودة و حلّ تاقة تاع تبدال بشوفه قبلانيّه. تخلّي باش ترجع لل معاوده التاليه و تزيد الـسبّة علاش فل قابسه تاع الـحويصله.",
        "tooltip-summary": "دخل تلخيص صغير",
        "simpleantispam-label": "مسيّة ضدّ السبام.\nما تعمّرش هادا!",
+       "pageinfo-lastuser": "لخر لي كتب",
+       "pageinfo-lasttime": "تاريخ آخر تبديلة",
        "pageinfo-toolboxlink": "معلومات على هاد الصفحة",
+       "pageinfo-contentpage-yes": "إيه",
+       "pageinfo-protect-cascading-yes": "إيه",
        "previousdiff": "→ التعديل الي قبل",
        "nextdiff": "التبديل الجاي ←",
        "file-info-size": "$1 × $2 بكسل حجم الملف: $3، نوع MIME: $4",
        "show-big-image-preview": "حجم هذه المعاينه: $1.",
        "show-big-image-other": "{{PLURAL:$2||التدقاقة|التدقاقات}}: $1.",
        "show-big-image-size": "$1 × $2 بكسل",
+       "yesterday-at": "لبرح علا $1",
        "bad_image_list": "الفورمة راهي كيما واش يتبع:\nما كاين غير السطور الّي باديين بل *، الّي يكونو معدودين\nالـوصيل الـلوّل تاع سطر لازم كون تاع تصويرة ضايعة.\nكامل الوصيلات لخرين الّي فل سطر، يكونو معدودين كلّي تتنيّات، بل متال باجات وين الـتصويرة تنجم تبان.",
        "metadata": "بايان ميتا",
        "metadata-help": "هذا الملف راه فيه خبيرات زايدين، بالاك تكون انزادت من عند صواره نيميريك ولا سكانر مين صنع الملف.\nالأصلي، شي تفاصيل بالاك ما تعبرش على الملف المعدل.",
        "exif-xresolution": "التدقاق الأوفوقي",
        "exif-yresolution": "التدقاق العامودي",
        "exif-datetime": "تاريخ و وقت تاع تبدال الفيشي",
+       "exif-imagedescription": "عنوان التصويرة",
        "exif-make": "الصانع تاع الجهاز",
        "exif-model": "الطبّع تاع الجهاز",
        "exif-software": "البريمجات الّي مستعملة",
        "exif-datetimeoriginal": "التاريخ و الوقت تاع تولاد المعلومات",
        "exif-datetimedigitized": "التاريخ تاع التنمريل (numérisation)",
        "exif-orientation-1": "عادي",
+       "exif-contrast-0": "عادي",
+       "exif-saturation-0": "عادي",
+       "exif-sharpness-0": "عادي",
+       "exif-urgency-normal": "عادي ($1)",
        "namespacesall": "لكل",
        "monthsall": "لكل",
        "watchlisttools-view": "اعرض التبديلات المرتابطه",
        "watchlisttools-raw": "موديفي ليستت التبيعه الخام",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|تقرعيج]])",
        "duplicate-defaultsort": "'''توليه:''' مفتاح التستيف الافتراضي \"$2\" ديباسا مفتاح التستيف الافتراضي التالي\"$1\".",
+       "version-no-ext-name": "[بلا اسم]",
        "specialpages": "الپاجات الخاصّين",
        "external_image_whitelist": " #<pre>خلى هاذ السطر كيما راه\n#حط منثورات التعبيرات المنتظمة (برك الجزء الي يروح بين //) بالتحت\n#هاذ يكون مطابقتها مع مسارات التصاوير البرانيه (الموصولة بصفه مباشره)\n#هاذي الي تشبهغادي تنعرض  كتصاور، خلاف هذا برك وصيلة للتصويرة غادي تنعرض\n#السطور اللي تبدأا ب# تعتبر تعليقات\n#هذا لا يتأثر بحالة الحروف\n\n#حط كامل منثورات التعبيرات المنتظمة فوق هذا السطر. خلي هاذ السطر سواسوا كيما هو</pre>",
        "tag-filter": "صفاية[[Special:Tags|الوشام]]:",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1||وسم|وسمان|وسوم}}]]: $2)",
+       "tags-active-yes": "إيه",
+       "tags-active-no": "لالا",
+       "tags-edit": "بدّل",
+       "htmlform-no": "لالا",
+       "htmlform-yes": "إيه",
        "logentry-delete-delete": "$1 {{GENDER:$2| راه محا|راهي محات}}الصفحة $3",
        "logentry-move-move": "{{GENDER:$2|نقّل|نقّلت}} $1 الصفحة $3 لـ $4",
        "logentry-newusers-create": "راه تفتح حساب {{GENDER:$2|المستخدم|المستخدمه}} $1",
        "logentry-upload-upload": " {{GENDER:$2|نزّل|نزّلت}} $1 $3",
-       "searchsuggest-search": "فتّش في {{SITENAME}}"
+       "feedback-error2": "غلطة: تبديلتك ما صلحتش",
+       "searchsuggest-search": "فتّش في {{SITENAME}}",
+       "mediastatistics-header-bitmap": "تصويرة Bitmap"
 }
index b490f27..7d81643 100644 (file)
        "externaldberror": "kayn imma ċi ĥata' f-doĥol qaĝidaṫ l-bayanaṫ wlla rah ma msmoḫ-likċ baċ ṫḫddṫ l-ḫisab l-ĥariji taĝk.",
        "login": "Dĥel",
        "nav-login-createaccount": "Ṫkonékta / Ĥṫareĝ ċi konṫ",
-       "userlogin": "Ṫkonnékta / Ṣayeb ċi ḫsab",
-       "userloginnocreate": "Ṫkonékta",
        "logout": "Ṫdékonékta",
        "userlogout": "Ĥrej",
        "notloggedin": "nta mamkoniktich",
-       "nologin": "maandkch  cont ? $1",
-       "nologinlink": "Ḫell ċi ḫsab",
        "createaccount": "Ḫell ċi ḫsab",
-       "gotaccount": "aandk deja cont ? $1",
-       "gotaccountlink": "Ṫkonékta",
-       "userlogin-resetlink": "yak-ma nsiṫi ṫ-ṫafaṣil dial d-doĥol taĝk?",
        "createaccountmail": "b l'email",
-       "createaccountreason": "sabab:",
        "badretype": "klmaṫ ṣ-ṣeṛṛ lli dĥĥalṫi maċi b-ḫal b-ḫal.",
        "userexists": "smiṫ l-mosṫĥdim lli ḍĥĥolṫi ĥddam bih ċi waḫd.\nċof lik ċi ṣmiya aĥra.",
        "loginerror": "khataa f dokhol",
        "showdiff": "Werri ṫ-ṫeġyiraṫ",
        "anoneditwarning": "'''Ĝendak:''' Ma mkonéktéċ.\nĠayṫċejjel l-ĝonwan IP dyalek fe ṫariĥ had ṣ-ṣefḫa.",
        "anonpreviewwarning": "''ṛak ma daĥlċ. l-ḫifḍ ġadi ysjjl ĝonwan l-IP dialk f-listorik dial had ṣ-ṣfḫa.''",
-       "missingsummary": "'''ma ṫnsaċ:''' ma ĝtiṫiċ ċi molĥaṣṣ dial ṫ-ṫĝdil.\nila ĝawd klikiṫi \"{{int:savearticle}}\", ġadi yṫsjjl ṫ-ṫĝdil dialk bla bih.",
+       "missingsummary": "'''ma ṫnsaċ:''' ma ĝtiṫiċ ċi molĥaṣṣ dial ṫ-ṫĝdil.\nila ĝawd klikiṫi \"$1\", ġadi yṫsjjl ṫ-ṫĝdil dialk bla bih.",
        "missingcommenttext": "afak dkhl taaliq ltaht",
-       "missingcommentheader": "'''ma ṫnsaċ:''' ĝtiṫi l-moḍoĝ/l-ĝonwan dial had ṫĝliq.\nila ĝawd klikiṫi \"{{int:savearticle}}\", ġadi yṫsjjl ṫ-ṫĝdil dialk bla bih.",
+       "missingcommentheader": "'''ma ṫnsaċ:''' ĝtiṫi l-moḍoĝ/l-ĝonwan dial had ṫĝliq.\nila ĝawd klikiṫi \"$1\", ġadi yṫsjjl ṫ-ṫĝdil dialk bla bih.",
        "summary-preview": "Prévizualizasyon dyal l-moleĥĥaṣ:",
        "subject-preview": "moĝayanat l-moḍoĝ/l-ĝonwan:",
        "blockedtitle": "had lmostakhdim tbloka",
        "editingsection": "Ṣayeb $1 (séksyon)",
        "editingcomment": "Ṣayeb $1 (séksyon jdida)",
        "editconflict": "mdarba f thrir: $1",
-       "explainconflict": "ċi hedd ḅddl had ṣfḫa mlli konti ka ṫwjjedha.\nmintaqaṫ n-nosos l-foqaniyya kaṫwrri n-naṣṣ kimma howa daba.\no-ṫĝdilaṫ mbyyna fl-mintaqa ṫ-ṫḫṫaniyya.\nġadi yĥṣṣak ṫ-dmj ṫ-ṫĝdilaṫ ṫaĝk f-naṣṣ lli mojod daba.\n'''ġir''' n-naṣṣ lli kayn fl-mintaqa l-foqaniyya howa lli ġadi yṫssjel ila wtiṫi ĝla \"{{int:savearticle}}\".",
+       "explainconflict": "ċi hedd ḅddl had ṣfḫa mlli konti ka ṫwjjedha.\nmintaqaṫ n-nosos l-foqaniyya kaṫwrri n-naṣṣ kimma howa daba.\no-ṫĝdilaṫ mbyyna fl-mintaqa ṫ-ṫḫṫaniyya.\nġadi yĥṣṣak ṫ-dmj ṫ-ṫĝdilaṫ ṫaĝk f-naṣṣ lli mojod daba.\n'''ġir''' n-naṣṣ lli kayn fl-mintaqa l-foqaniyya howa lli ġadi yṫssjel ila wtiṫi ĝla \"$1\".",
        "yourtext": "N-Neṣ dyalek",
        "storedversion": "noskha msjla",
        "nonunicodebrowser": "'''ṫḫdir: l-moṫaṣffiḫ ṫaĝk ma mwalm-ċ l-unicode.'''\nĝla had l-qibal o-baċ ṫqdr ṫĝddel ṣ-ṣfaḫi b-soholo: l-karakterat lli maċi ASCII ġadi ṫba f-ṣndoq ṫ-ṫĝdil b-ċkl kodat hexadecimal.",
        "saveprefs": "sjl",
        "restoreprefs": "rjaa kaml liadadat liftiradiya",
        "prefs-editing": "thrir",
-       "rows": "sofof:",
-       "columns": "aaamida:",
        "searchresultshead": "Qelleb",
        "stub-threshold": "l-ḫadd l-aqṣa ṫaĝ <a href=\"#\" class=\"stub\">wṣlaṫ l-bidraṫ</a> (ḅayṫaṫ):",
        "stub-threshold-disabled": "makhdamch",
        "right-protect": "taghyir mostawayat lhimaya wtadil sfahi li mhmiyin",
        "right-editprotected": "ṣfaḫi mḫmyya mn ṫĝdil (bla ḫimaya mṫslsla)",
        "right-editinterface": "ĝddel wajihaṫ l-mosṫĥdim",
-       "right-editusercssjs": "ĝddel milffaṫ CSS o-JavaScript ṫaĝ mosṫĥdimin aĥrin",
        "right-editusercss": "ĝddel milffaṫ CSS ṫaĝ mosṫĥdimin aĥrin",
        "right-edituserjs": "ĝddel milffaṫ JavaScript ṫaĝ mosṫĥdimin aĥrin",
        "right-rollback": "srtjaa taadilat akhr mostkhdim  adl sfha mayana",
        "rcshowhideanons": "$1 mosṫeĥdimin mĥebbyin",
        "rcshowhidepatr": "$1  taadilat lmorajaa",
        "rcshowhidemine": "$1 ṫ-ṫeĝdilaṫ dyawli",
-       "rclinks": "Werri l-$1 dyal ṫ-ṫeġyiraṫ l-leĥĥrin li ṫdaro fe had l-$2 l-iyam l-leĥĥrin<br />$3.",
+       "rclinks": "Werri l-$1 dyal ṫ-ṫeġyiraṫ l-leĥĥrin li ṫdaro fe had l-$2 l-iyam l-leĥĥrin",
        "diff": "ferq",
        "hist": "Ṫariĥ",
        "hide": "Ĥebbi",
        "undeleteviewlink": "ċof",
        "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}}",
-       "undeletedrevisions-files": "ṫreddaṫ {{PLURAL:$1|1 l-ṃoṛajaĝa|$1 dl-ṃoṛajaĝaṫ}} o-{{PLURAL:$2|1 l-milef|$2 dl-milffaṫ}}",
-       "undeletedfiles": "ṫredd {{PLURAL:$1|1 l-milef|$1 dl-melffaṫ}}",
        "undelete-search-box": "qlleb ĝla ċi ṣ-ṣfaḫi mḫdofa",
        "undelete-search-submit": "Qelleb",
        "undelete-cleanup-error": "ĥata' f-ḫdf milef arċiv ma mĥddem-ċ \"$1\".",
        "htmlform-selectorother-other": "okhra",
        "revdelete-restricted": "tḅḅq ḍ-ḍawaḅit ll-idariyyin",
        "revdelete-unrestricted": "ḫyyd ḍ-ḍawaḅit ll-idariyyin",
-       "rightsnone": "(walo)",
-       "revdelete-summary": "molkhass taadil"
+       "rightsnone": "(walo)"
 }
index 9de4469..e10bd39 100644 (file)
        "anoneditwarning": "<strong>تحذير:'</strong> انت ما عملتش لوجين. عنوان الاى  بى  بتاعك هايتسجل ف تاريخ الصفحه. لو  <strong>[$1 عملت لوجين ]</strong> او <strong>[$2 فتحت حساب ]</strong>,   اليوزرنيم بتاعك هايتسجل ف تاريخ الصفحه.",
        "missingsummary": "'''خد بالك:''' انت ما كتبتش ملخص للتعديل.\nلو دوست على سييڤ الصفحه مرة تانية التعديل بتاعك ح يتحفظ من غير ملخص.",
        "missingcommenttext": "لو سمحت اكتب تعليق تحت.",
-       "missingcommentheader": "'''.خد بالك:''' انت ما كتبتش عنوان\\موضوع للتعليق دا\nلو دوست على {{int:savearticle}} مرة تانيه، تعليقك ح يتحفظ من غير عنوان.",
+       "missingcommentheader": "<strong>خد بالك:</strong> انت ما كتبتش عنوان\\موضوع للتعليق دا\nلو دوست على $1 مرة تانيه، تعليقك ح يتحفظ من غير عنوان.",
        "summary-preview": "بروفه للملخص:",
        "subject-preview": "بروفة للعنوان/للموضوع",
        "blockedtitle": "اليوزر ممنوع",
        "right-protect": "تغيير مستويات الحماية وتعديل الصفحات المحمية",
        "right-editprotected": "تعديل الصفحات المحمية (من غير الحماية المتضمنة)",
        "right-editinterface": "تعديل الواجهة بتاعة اليوزر",
-       "right-editusercssjs": "تعديل ملفات CSS و JS لليوزرز التانيين",
        "right-editusercss": "تعديل ملفات CSS لليوزرز التانيين",
        "right-edituserjs": "تعديل ملفات JS لليوزرز التانيين",
        "right-rollback": "رجع بسرعه التعديلات بتاعة آخر يوزر عدل صفحة معينة",
        "undeleteviewlink": "عرض",
        "undeleteinvert": "اعكس الاختيار",
        "undeletecomment": "السبب:",
-       "undeletedrevisions": "رجع تانى {{PLURAL:$1|تعديل واحد|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديل}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 نسخة|$1 نسخة}} و {{PLURAL:$2|1 ملف|$2 ملف}} رجعو تاني",
-       "undeletedfiles": "{{PLURAL:$1|ملف|ملفات}} $1 رجعو تاني",
        "cannotundelete": "الترجيع مانفعش:\n$1",
        "undeletedpage": "'''اترجع $1'''\n\nبص على [[Special:Log/delete|سجل المسح]] علشان تشوف عمليات المسح و الترجيع الاخيرة.",
        "undelete-header": "شوف الصفحات الممسوحة قريب فى [[Special:Log/delete|سجل المسح]].",
index 2a3b2a6..a1c9b53 100644 (file)
        "searcharticle": "যাওক",
        "history": "পৃষ্ঠা ইতিহাস",
        "history_short": "ইতিহাস",
+       "history_small": "ইতিহাস",
        "updatedmarker": "মোৰ শেহতীয়া পৰিদৰ্শনৰ পাছৰ সালসলনিবোৰ",
        "printableversion": "মুদ্ৰণযোগ্য সংস্কৰণ",
        "permalink": "স্থায়ী সূত্ৰ (লিংক)",
        "views": "দৰ্শন",
        "toolbox": "সঁজুলিসমূহ",
        "tool-link-userrights": "{{GENDER:$1|সদস্য}} গোটসমূহ সলাওক",
+       "tool-link-userrights-readonly": "{{GENDER:$1|সদস্য}} গোটসমূহ চাওক",
        "tool-link-emailuser": "এই {{GENDER:$1|সদস্যজনক}} ইমেইল কৰক",
        "userpage": "সদস্য পৃষ্ঠা চাওক",
        "projectpage": "প্ৰকল্প পৃষ্ঠা চাওক",
        "protectedinterface": "এই পৃষ্ঠাই ৱিকি ছফ্টৱেৰৰ ইণ্টাৰফে’চ বাৰ্তা প্ৰদান কৰে আৰু ইয়াক সুৰক্ষিত কৰি ৰখা হৈছে।\nসকলো ৱিকিৰ বাবে অনুবাদ যোগ কৰিবলৈ বা সলাবলৈ অনুগ্ৰহ কৰি মিডিয়াৱিকি স্থানীয়কৰণ প্ৰকল্প [https://translatewiki.net/ translatewiki.net] ব্যৱহাৰ কৰক।",
        "editinginterface": "<strong>সাৱধানবাণী:</strong> আপুনি সম্পাদনা কৰি থকা পৃষ্ঠাটো এই ছফ্টৱেৰৰ ইণ্টাৰফে’চ বাৰ্তা দিবলৈ ব্যৱহাৰ হয়।\nএই পৃষ্ঠাৰ সাল-সলনিয়ে এই ৱিকিত আন ব্যৱহাৰকাৰীৰ বাবে ইণ্টাৰফে’চত প্ৰভাৱ পেলাব।",
        "translateinterface": "সকলো ৱিকিৰ বাবে অনুবাদ যোগ বা সালসলনি কৰিবৰ বাবে অনুগ্ৰহ কৰি মিডিয়াৱিকি স্থানীয়কৰণ প্ৰকল্প //translatewiki.net/ translatewiki.net] ব্যৱহাৰ কৰক।",
-       "cascadeprotected": "à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦¸à¦®à§\8dপাদনাৰ à¦ªà§°à¦¾ à¦¸à§\81ৰà¦\95à§\8dষিত à¦\95াৰণ à¦\8fà¦\87 {{PLURAL:$1|পà§\83ষà§\8dঠা, à¦¯à¦¿à¦\9fà§\8b|পà§\83ষà§\8dঠা, যিবোৰ}} \"প্ৰপাতাকাৰ\" (cascading) বিকল্পৰ সহযোগত সুৰক্ষিত কৰা হৈছে: \n$2",
+       "cascadeprotected": "à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦¸à¦®à§\8dপাদনাৰ à¦ªà§°à¦¾ à¦¸à§\81ৰà¦\95à§\8dষিত à¦\95াৰণ à¦\87 à¦¨à¦¿à¦®à§\8dনà§\8bà¦\95à§\8dত {{PLURAL:$1|পà§\83ষà§\8dঠাত|পà§\83ষà§\8dঠাবà§\8bৰত}} à¦\85নà§\8dতৰà§\8dভà§\81à¦\95à§\8dত, {{PLURAL:$1|যি|যিবোৰ}} \"প্ৰপাতাকাৰ\" (cascading) বিকল্পৰ সহযোগত সুৰক্ষিত কৰা হৈছে: \n$2",
        "namespaceprotected": "আপোনাৰ '''$1''' নামস্থানৰ পৃষ্ঠাসমূহ সম্পাদনা কৰাৰ অধিকাৰ নাই।",
        "customcssprotected": "এই CSS পৃষ্ঠা সম্পাদনা কৰাৰ অধিকাৰ আপোনাৰ নাই, কাৰণ ইয়াত আন সদস্যৰ ব্যক্তিগত পছন্দসমূহত আছে ।",
        "customjsprotected": "এই জাভালিপিৰ পৃষ্ঠা সম্পাদনা কৰাৰ অধিকাৰ আপোনাৰ নাই, কাৰণ ইয়াত আন সদস্যৰ ব্যক্তিগত পছন্দসমূহত আছে ।",
        "mypreferencesprotected": "পছন্দসমূহ সম্পাদনা কৰিবলৈ আপোনাৰ অনুমতি  নাই।",
        "ns-specialprotected": "বিশেষ পৃষ্ঠা সম্পাদিত কৰিব নোৱাৰি।",
        "titleprotected": "[[User:$1|$1]] সদস্যজনে এই শিৰোনাণমাৰ লিখনী লিখা ৰোধ কৰিছে ।\nইয়াৰ কাৰণ হৈছে <em>$2</em> ।",
-       "filereadonlyerror": "\"$1\" ফাইলটোক পৰিৱৰ্তন কৰিব পৰা নগ'ল কাৰণ ফাইল ভঁৰাল \"$2\" কেৱল পঢ়িব পৰা অৱস্থাত আছে।\nযিজন প্ৰশাসকে এইটো বন্ধ কৰিছে তেওঁ দৰ্শোৱা কাৰণ হৈছে: ''$3''।",
+       "filereadonlyerror": "\"$1\" à¦«à¦¾à¦\87লà¦\9fà§\8bà¦\95 à¦ªà§°à¦¿à§±à§°à§\8dতন à¦\95ৰিব à¦ªà§°à¦¾ à¦¨à¦\97'ল à¦\95াৰণ à¦«à¦¾à¦\87ল à¦­à¦\81ৰাল \"$2\" à¦\95à§\87ৱল à¦ªà¦¢à¦¼à¦¿à¦¬ à¦ªà§°à¦¾ à¦\85ৱসà§\8dথাত à¦\86à¦\9bà§\87।\nযিà¦\9cন à¦\9bà§\80ষà§\8dà¦\9fà§\87ম à¦ªà§\8dৰশাসà¦\95à§\87 à¦\8fà¦\87à¦\9fà§\8b à¦¬à¦¨à§\8dধ à¦\95ৰিà¦\9bà§\87 à¦¤à§\87à¦\93à¦\81 à¦¦à§°à§\8dশà§\8bৱা à¦\95াৰণ à¦¹à§\88à¦\9bà§\87: ''$3''।",
        "invalidtitle-knownnamespace": "নামস্থান \"$2\" আৰু পাঠ্য \"$3\" থকা অবৈধ শিৰোনাম",
        "invalidtitle-unknownnamespace": "অজ্ঞাত নামস্থান সংখ্যা $1 আৰু পাঠ্য \"$2\" থকা অবৈধ শিৰোনাম",
        "exception-nologin": "প্ৰৱেশ কৰা নাই",
        "cannotlogin-text": "প্ৰৱেশ কৰা সম্ভৱ নহয়",
        "cannotloginnow-title": "এতিয়া প্ৰৱেশ কৰিব নোৱাৰি",
        "cannotloginnow-text": "$1 ব্যৱহাৰ কৰাৰ সময়ত প্ৰৱেশ কৰিব নোৱাৰি।",
+       "cannotcreateaccount-title": "একাউণ্ট সৃষ্টি কৰিব নোৱাৰি",
+       "cannotcreateaccount-text": "পোনপটীয়া একাউণ্ট সৃষ্টি এই ৱিকিত সম্ভৱ নহয়।",
        "yourdomainname": "আপোনাৰ ডমেইন:",
        "password-change-forbidden": "আপুনি এই ৱিকিত গুপ্তশব্দ সলাব নোৱাৰে।",
        "externaldberror": "কোনো প্ৰামাণ্যকৰণ তথ্যকোষৰ ত্ৰুটি ঘটিছে নতুবা আপোনাৰ বৰ্হি-একাউণ্ট নৱীকৰণ কৰাৰ অনুমতি নাই ।",
        "login": "প্ৰৱেশ",
+       "login-security": "আপোনাৰ পৰিচয়ৰ প্ৰমাণ দিয়ক",
        "nav-login-createaccount": "প্ৰৱেশ/সদস্যভুক্তি",
        "logout": "প্ৰস্থান",
        "userlogout": "প্ৰস্থান",
        "userlogin-resetpassword-link": "আপোনাৰ গুপ্তশব্দ পাহৰিছে?",
        "userlogin-helplink2": "প্ৰৱেশ সংক্ৰান্তীয় সাহায্য",
        "userlogin-loggedin": "আপুনি ইতিমধ্যে {{GENDER:$1|$1}} হিচাপে প্ৰৱেশ কৰিছে। তলৰ আন সদস্যৰূপে প্ৰৱেশ কৰিবলৈ তলৰ প্ৰপত্ৰ ব্যৱহাৰ কৰক।",
+       "userlogin-reauth": "আপুনি যে {{GENDER:$1|$1}} সেয়া প্ৰমাণ কৰিবলৈ আকৌ এবাৰ প্ৰৱেশ কৰিব লাগিব।",
        "userlogin-createanother": "আন এটা একাউণ্ট সৃষ্টি কৰক",
        "createacct-emailrequired": "ই-মেইল ঠিকনা",
        "createacct-emailoptional": "ই-মেইল ঠিকনা (বৈকল্পিক)",
        "createacct-email-ph": "আপোনাৰ ই-মেইল ঠিকনা লিখক",
        "createacct-another-email-ph": "ইমেইল ঠিকনা লিখক",
        "createaccountmail": "এটা যাদৃচ্ছিক অস্থায়ী গুপ্তশব্দ ব্যৱহাৰ কৰক আৰু ইয়াক তলত দিয়া ইমেইল ঠিকনাটোলৈ পঠিয়াই দিয়ক",
+       "createaccountmail-help": "গুপ্তশব্দ নজনাকৈ অন্য ব্যক্তিৰ বাবে একাউণ্ট সৃষ্টিত ব্যৱহাৰ কৰিব পৰি।",
        "createacct-realname": "প্ৰকৃত নাম (বৈকল্পিক)",
        "createacct-reason": "কাৰণ",
        "createacct-reason-ph": "আপুনি কিয় আন এটা একাউণ্ট সৃষ্টি কৰিছে",
        "createacct-submit": "আপোনাৰ একাউণ্ট সৃষ্টি কৰক",
        "createacct-another-submit": "একাউণ্ট সৃষ্টি কৰক",
+       "createacct-continue-submit": "একাউণ্ট সৃষ্টি অব্যাহত ৰাখক",
+       "createacct-another-continue-submit": "একাউণ্ট সৃষ্টি অব্যাহত ৰাখক",
        "createacct-benefit-heading": "আপোনাৰ দৰে মানুহেই {{SITENAME}} তৈয়াৰ কৰিছে",
        "createacct-benefit-body1": "{{PLURAL:$1|সম্পাদনা}}",
        "createacct-benefit-body2": "{{PLURAL:$1|পৃষ্ঠা|পৃষ্ঠাসমূহ}}",
        "nocookiesnew": "আপোনাৰ সদস্যভুক্তি হৈ গৈছে, কিন্তু আপুনি প্ৰৱেশ কৰা নাই।\n{{SITENAME}}ত প্ৰৱেশ কৰিবলৈ কুকি সক্ৰিয় থাকিব লাগিব।\nআপুনি কুকি নিষ্ক্ৰিয় কৰি থৈছে।\nঅনুগ্ৰহ কৰি কুকি সক্ৰিয় কৰক, আৰু তাৰ পাছত আপোনাৰ সদস্য নামেৰে প্ৰৱেশ কৰক।",
        "nocookieslogin": "{{SITENAME}} ত প্ৰৱেশ কৰিবলৈ কুকি সক্ৰিয় থাকিব লাগিব।\nআপুনি কুকি নিষ্ক্ৰিয় কৰি থৈছে।\nঅনুগ্ৰহ কৰি কুকি সক্ৰিয় কৰক, আৰু তাৰ পাছত চেষ্টা কৰক।",
        "nocookiesfornew": "সদস্য একাউন্ট সৃষ্টি কৰা নহল, কাৰণ তাৰ উৎস অনিশ্চিত ।\nআপোনাৰ কুকি সক্ৰিয় ৰাখক, এই পৃষ্ঠা ৰি-লোড কৰি পুনৰ চেষ্টা কৰক ।",
+       "createacct-loginerror": "একাউণ্ট সফলতাৰে সৃষ্টি কৰা হ'ল কিন্তু স্বয়ংক্ৰিয়ভাৱে আপোনাৰ প্ৰৱেশ সম্ভৱ নহয়। অনুগ্ৰহ কৰি [[Special:UserLogin|মেনুৱেল প্ৰৱেশ]] কৰক।",
        "noname": "আপুনি বৈধ সদস্যনাম এটা দিয়া নাই।",
-       "loginsuccesstitle": "পà§\8dৰৱà§\87শ à¦\85নà§\81মà§\8bদিত à¦¹'ল",
+       "loginsuccesstitle": "প্ৰৱেশ হ'ল",
        "loginsuccess": "''' আপুনি {{SITENAME}}ত \"$1\" নামেৰে প্ৰৱেশ কৰিলে '''",
-       "nosuchuser": "\"$1\" নামৰ কোনো সদস্য নাই।\nসদস্য নাম আকাৰ সংবেদনশীল।\nআপোনাৰ বানানতো চাওক, বা  [[Special:CreateAccount|নতুন সদস্যভুক্তি কৰক]]।",
+       "nosuchuser": "\"$1\" নামৰ কোনো সদস্য নাই।\nসদস্য নাম আকাৰ সংবেদনশীল।\nআপোনাৰ বানান পৰীক্ষা কৰক, বা  [[Special:CreateAccount|নতুন একাউণ্ট সৃষ্টি কৰক]]।",
        "nosuchusershort": "\"$1\" এই নামৰ কোনো সদস্য নাই ।\nবানানতো আকৌ এবাৰ ভালদৰে চাওক ।",
        "nouserspecified": "সদস্যনাম দিয়া বাধ্যতামূলক।",
        "login-userblocked": "এই সদস্যক নিষেধ কৰা হৈছে। প্ৰৱেশ অসম্ভৱ।",
        "wrongpasswordempty": "দিয়া গুপ্তশব্দতো খালী; অনুগ্ৰহ কৰি আকৌ এবাৰ চেষ্টা কৰক। ।",
        "passwordtooshort": "গুপ্তশব্দ কমেও {{PLURAL:$1|১ টা|$1 টা}} আখৰৰ হ'ব লাগিব ।",
        "passwordtoolong": "গুপ্তশব্দ {{PLURAL:$1|১ টা আখৰতকৈ|$1 টা আখৰতকৈ}} দীঘল হ'ব নোৱাৰে।",
+       "passwordtoopopular": "সাধাৰাণভাৱে নিৰ্বাচিত গুপ্তশব্দ ব্যৱহাৰ কৰিব নোৱাৰি। অনুগ্ৰহ কৰি এটা অনন্য গুপ্তশব্দ ব্যৱহাৰ কৰক।",
        "password-name-match": "আপোনাৰ গুপ্তশব্দ আৰু আপোনাৰ সদস্যনাম বেলেগ হ'ব লাগিব",
        "password-login-forbidden": "এই সদস্যনাম আৰু গুপ্তশব্দৰ ব্যৱহাৰ নিষিদ্ধ কৰা হৈছে ।",
        "mailmypassword": "গুপ্তশব্দ ন-কৈ বহুৱাওক",
        "noemail": "\"$1\" সদস্যজনৰ কোনো ই-মেইল ঠিকনা সঞ্চিত কৰা নাই।",
        "noemailcreate": "আপুনি এটা সঠিক ই-মেইল ঠিকনা দিব লাগিব",
        "passwordsent": "\"$1\" ৰ ই-মেইল ঠিকনাত নতুন গুপ্তশব্দ এটা পঠোৱা হৈছে। অনুগ্ৰহ কৰি সেয়া পোৱাৰ পাছত পুনৰ প্ৰৱেশ কৰক।",
-       "blocked-mailpassword": "à¦\86পà§\8bনাৰ à¦\86à¦\87পি à¦ à¦¿à¦\95নাৰ à¦ªà§°à¦¾ à¦¸à¦®à§\8dপাদনা à¦\95ৰা à¦¬à¦¾à§°à¦£ à¦\95ৰা à¦¹à§\88à¦\9bà§\87, à¦\8fনà§\87 à¦\85ৱসà§\8dথাত à¦¦à§\81ৰà§\8dবà§\8dযৱহাৰ à§°à§\8bধ à¦\95ৰিবলà§\88 à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªà§\81নà¦\83à¦\89দà§\8dধাৰ à¦\95ৰা à¦¸à§\81বিধাà¦\93 à¦¬à¦¾à¦¤à¦¿à¦² à¦\95ৰা à¦¹à§\88à¦\9bà§\87।",
+       "blocked-mailpassword": "à¦\86পà§\8bনাৰ à¦\86à¦\87পি à¦ à¦¿à¦\95নাৰ à¦ªà§°à¦¾ à¦¸à¦®à§\8dপাদনা à¦\95ৰা à¦¬à¦¾à§°à¦£ à¦\95ৰা à¦¹à§\88à¦\9bà§\87, à¦\8fনà§\87 à¦\85ৱসà§\8dথাত à¦¦à§\81ৰà§\8dবà§\8dযৱহাৰ à§°à§\8bধ à¦\95ৰিবলà§\88 à¦\8fà¦\87 à¦\86à¦\87পি à¦ à¦¿à¦\95নাৰ à¦ªà§°à¦¾ à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªà§\81নৰà§\81দà§\8dধাৰ à¦\95ৰা à¦\85নà§\81মতি à¦¦à¦¿à¦¯à¦¼à¦¾ à¦¹à§\8bৱা à¦¨à¦¾à¦\87।",
        "eauthentsent": "সঞ্চিত ই-মেইল ঠিকনালৈ নিশ্চিতকৰণ ই-মেইল এখন পঠিওৱা হৈছে।\nএকাউণ্টটোলৈ আন ই-মেইল পঠিওৱাৰ আগতে আপোনাৰ সদস্যতা নিশ্চিত কৰিবলৈ সেই ই-মেইলত দিয়া নিৰ্দেশনা আপুনি অনু্সৰণ কৰিব লাগিব।",
        "throttled-mailpassword": "যোৱা {{PLURAL:$1|এঘণ্টাত|$1 ঘণ্টাত}} এখন গুপ্তশব্দ উদ্ধাৰ ইমেইল পঠিওৱা হৈছে।\nঅবৈধ ব্যৱহাৰ ৰোধ কৰিবলৈ প্ৰতি {{PLURAL:$1|এঘণ্টাত|$1 ঘণ্টাত}} এবাৰহে গুপ্তশব্দ উদ্ধাৰ ইমেইল পঠিওৱা হ'ব।",
        "mailerror": "ই-মেইল পঠিওৱাত সমস্যা হৈছে: $1",
        "resetpass_submit": "গুপ্তশব্দ বহুৱাওক আৰু প্ৰৱেশ কৰক",
        "changepassword-success": "আপোনাৰ গুপ্তশব্দ সফলতাৰে সলনি কৰা হৈছে!",
        "changepassword-throttled": "আপুনি স‍ম্প্ৰতি অজস্ৰবাৰ লগ্‌-ইনৰ প্ৰয়াস কৰিছে।\nঅনুগ্ৰহ কৰি $1 সময়ৰ পিছত আকৌ চেষ্টা কৰক।",
+       "botpasswords-label-create": "সৃষ্টি কৰক",
+       "botpasswords-label-update": "আপডেট কৰক",
+       "botpasswords-label-cancel": "বাতিল কৰক",
+       "botpasswords-label-delete": "বিলোপ কৰক",
+       "botpasswords-label-resetpassword": "গুপ্তশব্দ ন-কৈ বহুৱাওক",
+       "botpasswords-label-grants": "প্ৰয়োগযোগ্য অনুমোদন:",
+       "botpasswords-label-grants-column": "অনুমোদিত",
        "resetpass_forbidden": "গুপ্তশব্দ সলনি কৰিব নোৱাৰি",
        "resetpass-no-info": "এই পৃষ্ঠাটোত প্ৰৱেশাধিকাৰ পাবলৈ আপুনি লগ্‌ ইন কৰিব লাগিব ।",
        "resetpass-submit-loggedin": "গুপ্তশব্দ সলনি কৰক",
        "watchthis": "এই পৃষ্ঠাটো লক্ষ্য কৰক",
        "savearticle": "পৃষ্ঠা সাঁচক",
        "savechanges": "সাঁচি থওক",
+       "publishpage": "পৃষ্ঠা প্ৰকাশ কৰক",
        "publishchanges": "সালসলনি প্ৰকাশ কৰক",
        "preview": "খচৰা",
        "showpreview": "খচৰা চাওক",
        "showdiff": "সালসলনিবোৰ দেখুৱাওক",
-       "blankarticle": "<strong>Warning:</strong>আপুনি সৃষ্টি কৰি থকা পৃষ্ঠাটো খালি।\nযদি আপুনি \"{{int:savearticle}}\" বুটামটোত আকৌ ক্লিক কৰে তেন্তে বিষয়বস্তু অবিহনেই পৃষ্ঠাটো সৃষ্টি হ'ব।",
+       "blankarticle": "<strong>Warning:</strong>আপুনি সৃষ্টি কৰি থকা পৃষ্ঠাটো খালি।\nযদি আপুনি \"$1\" বুটামটোত আকৌ ক্লিক কৰে তেন্তে বিষয়বস্তু অবিহনেই পৃষ্ঠাটো সৃষ্টি হ'ব।",
        "anoneditwarning": "<strong>সতৰ্কবাণী:</strong> আপুনি প্ৰৱেশ কৰা নাই। আপুনি কোনো সম্পাদনা কৰিলে আপোনাৰ আই পি ঠিকনা মুকলিকৈ দৃশ্যমান হ'ব। যদি আপুনি <strong>[$1 লগ্‌ ইন]</strong> বা <strong>[$2 এটা একাউণ্ট সৃষ্টি কৰে]</strong>, তেন্তে আন সুবিধা পোৱাৰ লগতে আপোনাৰ সম্পাদনাসমূহ আপোনাৰ ব্যৱহাৰকাৰী নামত সংৰক্ষিত হ'ব।",
        "anonpreviewwarning": "''আপুনি প্ৰৱেশ কৰা নাই। আপোনাৰ সম্পাদনা সাঁচিলে আপোনাৰ আই-পি ঠিকনা এই পৃষ্ঠাৰ ইতিহাসত সংৰক্ষিত হ'ব।\"",
        "missingsummary": "'''স্মাৰক:''' আপুনি সম্পাদনা সাৰাংশ দিয়া নাই।\nআপুনি আৰু এবাৰ সংৰক্ষণৰ বাবে ক্লিক কৰিলে সাৰাংশৰ অবিহনে সংৰক্ষিত হব।",
-       "selfredirect": "<strong>সতৰ্কবাণী:</strong> আপুনি একেটা নামলৈকে এই পৃষ্ঠাটো পুনঃনিৰ্দেশ কৰিব বিচাৰিছে। আপুনি হয়তো পুনঃনিৰ্দেশৰ বাবে ভুল লক্ষ্য নিৰ্ধাৰণ কৰিছে, বা ভুল পৃষ্ঠা সম্পাদনা কৰিছে।\nআপুনি আকৌ \"{{int:savearticle}}\" ক্লিক কৰিলে পুনঃনিৰ্দেশটো সৃষ্টি হ'ব।",
+       "selfredirect": "<strong>সতৰ্কবাণী:</strong> আপুনি একেটা নামলৈকে এই পৃষ্ঠাটো পুনঃনিৰ্দেশ কৰিব বিচাৰিছে। আপুনি হয়তো পুনঃনিৰ্দেশৰ বাবে ভুল লক্ষ্য নিৰ্ধাৰণ কৰিছে, বা ভুল পৃষ্ঠা সম্পাদনা কৰিছে।\nআপুনি আকৌ \"$1\" ক্লিক কৰিলে পুনঃনিৰ্দেশটো সৃষ্টি হ'ব।",
        "missingcommenttext": "অনুগ্ৰহ কৰি তলত মন্তব্য এটা দিয়ক।",
-       "missingcommentheader": "'''স্মাৰক:''' আপুনি এই মন্তব্যটোত শিৰোনামা দিয়া নাই।\nযদি আকৌ এবাৰ যদি \"{{int:savearticle}}\" টিপে, তেনেহলে সম্পাদনা শিৰোনামা অবিহনে সংৰক্ষিত হব।",
+       "missingcommentheader": "'''স্মাৰক:''' আপুনি এই মন্তব্যটোত শিৰোনামা দিয়া নাই।\nযদি আকৌ এবাৰ যদি \"$1\" টিপে, তেনেহলে সম্পাদনা শিৰোনামা অবিহনে সংৰক্ষিত হব।",
        "summary-preview": "সাৰাংশৰ খচৰা:",
        "subject-preview": "বিষয়/শিৰোনামাৰ খচৰা:",
        "previewerrortext": "আপোনাৰ সালসলনিৰ প্ৰাক্‌দৰ্শন কৰাত কিবা ত্ৰুটি হৈছে।",
        "editingsection": "$1 (অনুচ্ছেদ) সম্পাদনা কৰি আছে",
        "editingcomment": "$1 (নতুন অনুচ্ছেদ) সম্পাদনা কৰি আছে",
        "editconflict": "সম্পাদনা দ্বন্দ্ব: $1",
-       "explainconflict": "আপুনি সম্পাদনা আৰম্ভ কৰাৰ পাছত আন কোনোবাই এই পৃষ্ঠাটো সলনি কৰিলে।\nপাঠ্য-স্থানৰ উপৰ ভাগত এই পৃষ্ঠাৰ প্ৰচলিত পাঠ্য দিয়া হৈছে।\nআপোনাৰ সলনিসমূহ পাঠ্য-স্থানৰ তলৰ ভাগত দেখুওৱা হৈছে।\nআপুনি আপোনাৰ সালসলনিসমূহ প্ৰচলিত পাঠ্যত অন্তৰ্ভুক্ত কৰিব পাৰে।\nআপুনি \"{{int:savearticle}}\" টিপিলে '''কেৱল''' পাঠ্য-স্থানৰ উপৰ ভাগৰ অংশখিনিহে সংৰক্ষিত হ'ব ।",
+       "explainconflict": "আপুনি সম্পাদনা আৰম্ভ কৰাৰ পাছত আন কোনোবাই এই পৃষ্ঠাটো সলনি কৰিলে।\nপাঠ্য-স্থানৰ উপৰ ভাগত এই পৃষ্ঠাৰ প্ৰচলিত পাঠ্য দিয়া হৈছে।\nআপোনাৰ সলনিসমূহ পাঠ্য-স্থানৰ তলৰ ভাগত দেখুওৱা হৈছে।\nআপুনি আপোনাৰ সালসলনিসমূহ প্ৰচলিত পাঠ্যত অন্তৰ্ভুক্ত কৰিব পাৰে।\nআপুনি \"$1\" টিপিলে '''কেৱল''' পাঠ্য-স্থানৰ উপৰ ভাগৰ অংশখিনিহে সংৰক্ষিত হ'ব ।",
        "yourtext": "আপুনি লিখা পাঠ",
        "storedversion": "জমা সংস্কৰণ",
        "nonunicodebrowser": "'''সতৰ্কবাণী: আপোনাৰ ব্ৰাউজাৰ ইউনিক’ড-ভাৱাপন্ন নহয় ।'''\nআপুনি ঠিকমতে সম্পাদনা কৰিব পৰাকৈ সমাধান আছে: non-ASCII কেৰেক্টাৰবোৰ সম্পাদনা ক্ষেত্ৰত hexadecimal ক’ড হিছাপে দেখা যাব ।",
        "rcshowhidemine": "মোৰ সম্পাদনা $1",
        "rcshowhidemine-show": "দেখুৱাওক",
        "rcshowhidemine-hide": "লুকুৱাওক",
+       "rcshowhidecategorization": "পৃষ্ঠা শ্ৰেণীকৰণ $1",
        "rcshowhidecategorization-show": "দেখুৱাওক",
        "rcshowhidecategorization-hide": "লুকুৱাওক",
-       "rclinks": "যোৱা $2 দিনত হোৱা $1 টা সাল-সলনি চাওক ।<br />$3",
+       "rclinks": "যোৱা $2 দিনত হোৱা $1 টা সাল-সলনি চাওক ।",
        "diff": "পাৰ্থক্য",
        "hist": "ইতিবৃত্ত",
        "hide": "দেখুৱাব নালাগে",
        "wlheader-showupdated": "আপোনাৰ শেষ পৰিদৰ্শনৰ পিছত সলনি হোৱা পৃষ্ঠাসমূহ '''গাঢ়''' আখৰত দেখুওৱা হৈছে।",
        "wlnote": "তলত {{PLURAL:$1| হ'ল সৰ্বশেষ পৰিৱৰ্তন|হ'ল সৰ্বশেষ '''$1''' পৰিৱৰ্তনসমূহ}} সৰ্বশেষ {{PLURAL:$2|ঘন্টা|'''$2''' ঘন্টা}}, $3, $4 -ৰ হিচাপে।",
        "wlshowlast": "যোৱা $1 ঘণ্টা $2 দিন  চাওক",
+       "wlshowhidecategorization": "পৃষ্ঠা শ্ৰেণীকৰণ",
        "watchlist-options": "লক্ষ্য-তালিকা পছন্দসমূহ",
        "watching": "চকু দিয়া হৈছে.....",
        "unwatching": "আঁতৰোৱা হৈ আছে.....",
index 8a067a1..c25c25a 100644 (file)
        "anontalk": "Alderique",
        "navigation": "Navegación",
        "and": "&#32;y",
-       "qbfind": "Alcontrar",
-       "qbbrowse": "Navegar",
-       "qbedit": "Editar",
-       "qbpageoptions": "Esta páxina",
-       "qbmyoptions": "Les mios páxines",
        "faq": "EMF (entrugues más frecuentes)",
-       "faqpage": "Project:FAQ",
        "actions": "Aiciones",
        "namespaces": "Espacios de nome",
        "variants": "Variantes",
        "edit-local": "Editar la descripción llocal",
        "create": "Crear",
        "create-local": "Amestar descripción llocal",
-       "editthispage": "Editar esta páxina",
-       "create-this-page": "Crear esta páxina",
        "delete": "Desaniciar",
-       "deletethispage": "Desaniciar esta páxina",
-       "undeletethispage": "Restaurar esta páxina",
        "undelete_short": "Restaurar {{PLURAL:$1|una edición|$1 ediciones}}",
        "viewdeleted_short": "Ver {{PLURAL:$1|una edición desaniciada|$1 ediciones desaniciaes}}",
        "protect": "Protexer",
        "protect_change": "camudar",
-       "protectthispage": "Protexer esta páxina",
        "unprotect": "Camudar la proteición",
-       "unprotectthispage": "Camudar la proteición d'esta páxina",
        "newpage": "Páxina nueva",
-       "talkpage": "Aldericar sobre esta páxina",
        "talkpagelinktext": "Alderique",
        "specialpage": "Páxina especial",
        "personaltools": "Ferramientes personales",
-       "articlepage": "Ver la páxina de conteníu",
        "talk": "Alderique",
        "views": "Vistes",
        "toolbox": "Ferramientes",
        "tool-link-userrights": "Cambiar los grupos {{GENDER:$1|del usuariu|de la usuaria}}",
        "tool-link-userrights-readonly": "Ver los grupos {{GENDER:$1|del usuariu|de la usuaria}}",
        "tool-link-emailuser": "Unviar un corréu electrónicu a {{GENDER:$1|esti usuariu|esta usuaria}}",
-       "userpage": "Ver la páxina d'usuariu",
-       "projectpage": "Ver la páxina del proyeutu",
        "imagepage": "Ver la páxina del ficheru",
        "mediawikipage": "Ver la páxina del mensaxe",
        "templatepage": "Ver la páxina de plantía",
        "redirectedfrom": "(Redirixío dende $1)",
        "redirectpagesub": "Páxina de redireición",
        "redirectto": "Redirixe a:",
-       "lastmodifiedat": "L'últimu cambiu d'esta páxina foi el $1, a les $2.",
+       "lastmodifiedat": "La última edición d'esta páxina foi el $1, a les $2.",
        "viewcount": "Esta páxina visitóse {{PLURAL:$1|una vegada|$1 vegaes}}.",
        "protectedpage": "Páxina protexida",
        "jumpto": "Saltar a:",
        "preview": "Vista previa",
        "showpreview": "Amosar previsualización",
        "showdiff": "Amosar cambeos",
-       "blankarticle": "<strong>Atención:</strong> La páxina que tas a piques de crear ta balera.\nSi vuelves a facer click en «{{int:savearticle}}», crearáse la páxina ensin conteníu dengún.",
+       "blankarticle": "<strong>Atención:</strong> La páxina que tas a piques de crear ta balera.\nSi vuelves a facer click en «$1», crearáse la páxina ensin conteníu dengún.",
        "anoneditwarning": "<strong>Avisu:</strong> Nun aniciasti sesión. La direición IP sedrá visible en público si faes dalguna edición. Si <strong>[$1 anicies sesión]</strong> o <strong>[$2 crees una cuenta]</strong>, les ediciones atribuiránse al to nome d'usuariu, xunto con otros beneficios.",
        "anonpreviewwarning": "''Nun aniciasti sesión. Al guardar quedará rexistrada la to direición IP nel historial d'edición d'esta páxina.''",
-       "missingsummary": "'''Recordatoriu:''' Nun conseñasti un resume d'edición.\nSi calques nuevamente \"{{int:savearticle}}\", la to edición guardaráse ensin nengún resume.",
-       "selfredirect": "<strong>Atención:</strong> Tas redirixendo esta páxina a ella mesma.\nSeique conseñaras un oxetivu enquivocáu pa la redireición, o que teas editando una páxina enquivocada. Si vuelves a facer clic en «{{int:savearticle}}», crearáse la redireición de toles maneres.",
+       "missingsummary": "'''Recordatoriu:''' Nun conseñasti un resume d'edición.\nSi calques nuevamente \"$1\", la to edición guardaráse ensin nengún resume.",
+       "selfredirect": "<strong>Atención:</strong> Tas redirixendo esta páxina a ella mesma.\nSeique conseñaras un oxetivu enquivocáu pa la redireición, o que teas editando una páxina enquivocada. Si vuelves a facer clic en «$1», crearáse la redireición de toles maneres.",
        "missingcommenttext": "Por favor, escribi un comentariu abaxo.",
-       "missingcommentheader": "<strong>Recordatoriu:</strong> Nun conseñasti un asuntu pa esti comentariu.\nSi calques nuevamente «{{int:savearticle}}», la to edición guardaráse ensin nengunu.",
+       "missingcommentheader": "<strong>Recordatoriu:</strong> Nun conseñasti un asuntu pa esti comentariu.\nSi calques nuevamente «$1», la to edición guardaráse ensin nengunu.",
        "summary-preview": "Vista previa del resume d'edición:",
        "subject-preview": "Vista previa del asuntu:",
        "previewerrortext": "Hebo un error al intentar entever los cambios.",
        "editingsection": "Editando $1 (seición)",
        "editingcomment": "Editando $1 (seición nueva)",
        "editconflict": "Conflictu d'edición: $1",
-       "explainconflict": "Daquién más camudó esta páxina dende qu'empecipiasti a editala.\nL'área de testu d'arriba contien el testu de la páxina como ta nestos momentos.\nLos tos cambios s'amuesen nel área de testu d'abaxo.\nVas tener que fusionar los tos cambios dientro del testu esistente.\n'''Namái''' va guardase'l testu del área d'arriba cuando calques \"{{int:savearticle}}\".",
+       "explainconflict": "Daquién más camudó esta páxina dende qu'empecipiasti a editala.\nL'área de testu d'arriba contien el testu de la páxina como ta nestos momentos.\nLos tos cambios s'amuesen nel área de testu d'abaxo.\nVas tener que fusionar los tos cambios dientro del testu esistente.\n'''Namái''' va guardase'l testu del área d'arriba cuando calques \"$1\".",
        "yourtext": "El to testu",
        "storedversion": "Versión almacenada",
        "nonunicodebrowser": "'''Avisu: El to navegador nun cumple la norma Unicode.''' Hai un sistema alternativu que te permite editar páxines de forma segura: los caráuteres non-ASCII apaecerán nel cuadru d'edición como códigos hexadecimales.",
        "readonlywarning": "<strong>Avisu: La base de datos ta candada por mantenimientu, polo que nun vas poder guardar les tos ediciones nestos momentos.</strong>\nSeique habríes copiar y apegar el testu nun ficheru de testu y guardalu pa intentalo sero.\n\nL'alministrador del sistema que la candó dio esta esplicación: $1",
        "protectedpagewarning": "'''Avisu: Esta páxina ta candada pa que sólo los alministradores puean editala.'''\nLa cabera entrada del rexistru s'ufre darréu pa referencia:",
        "semiprotectedpagewarning": "'''Nota:''' Esta páxina ta candada pa que nun puean editala namái que los usuarios rexistraos.\nLa cabera entrada del rexistru s'ufre darréu pa referencia:",
-       "cascadeprotectedwarning": "<strong>Avisu:</strong> Esta páxina ta candada pa que namái los alministradores puedan editala porque ta trescluída {{PLURAL:$1|na siguiente páxina protexida|nes siguientes páxines protexíes}} en cascada:",
+       "cascadeprotectedwarning": "<strong>Avisu:</strong> Esta páxina ta candada pa que namái los usuarios con [[Special:ListGroupRights|determinaos permisos]] puedan editala porque ta trescluída {{PLURAL:$1|na siguiente páxina protexida|nes siguientes páxines protexíes}} en cascada:",
        "titleprotectedwarning": "'''Avisu: Esta páxina ta candada pa que necesite [[Special:ListGroupRights|permisos especiales]] pa creala.'''\nLa cabera entrada del rexistru s'ufre darréu pa referencia:",
        "templatesused": "{{PLURAL:$1|Plantía usada|Plantíes usaes}} nesta páxina:",
        "templatesusedpreview": "{{PLURAL:$1|Plantía usada|Plantíes usaes}} nesta vista previa:",
        "search-file-match": "(casa col conteníu del ficheru)",
        "search-suggest": "Quixisti dicir: $1",
        "search-rewritten": "Amosando los resultaos pa $1. O meyor, buscar $2.",
-       "search-interwiki-caption": "Proyeutos hermanos",
+       "search-interwiki-caption": "Resultaos de proyeutos hermanos",
        "search-interwiki-default": "Resultaos de $1:",
        "search-interwiki-more": "(más)",
        "search-interwiki-more-results": "más resultaos",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Amosar",
        "rcfilters-activefilters": "Filtros activos",
+       "rcfilters-quickfilters": "Preferencies de filtru guardaes",
+       "rcfilters-quickfilters-placeholder-title": "Entá nun se guardaron enllaces",
+       "rcfilters-quickfilters-placeholder-description": "Pa guardar les preferencies del filtru y volver a usales sero, pulsia nel iconu del marcador del área de Filtru Activu más abaxo.",
+       "rcfilters-savedqueries-defaultlabel": "Filtros guardaos",
+       "rcfilters-savedqueries-rename": "Renomar",
+       "rcfilters-savedqueries-setdefault": "Guardar como predeterminao",
+       "rcfilters-savedqueries-unsetdefault": "Quitar predeterminao",
+       "rcfilters-savedqueries-remove": "Desaniciar",
+       "rcfilters-savedqueries-new-name-label": "Nome",
+       "rcfilters-savedqueries-apply-label": "Guardar la configuración",
+       "rcfilters-savedqueries-cancel-label": "Encaboxar",
+       "rcfilters-savedqueries-add-new-title": "Guardar les preferencies de filtru actuales",
        "rcfilters-restore-default-filters": "Restaurar los filtros predeterminaos",
        "rcfilters-clear-all-filters": "Borrar tolos filtros",
        "rcfilters-search-placeholder": "Filtriar los cambeos recién (restola o empieza a escribir)",
        "rcfilters-filter-unregistered-label": "Non rexistraos",
        "rcfilters-filter-unregistered-description": "Editores ensin coneutar.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Esti filtru fai conflictu {{PLURAL:$2|col siguiente filtru|colos siguientes filtros}} Experience, qu'{{PLURAL:$2|alcuentra|alcuentren}} sólo usuarios rexistraos: $1",
-       "rcfilters-filtergroup-authorship": "Editar autoría",
-       "rcfilters-filter-editsbyself-label": "Les tos propies ediciones",
-       "rcfilters-filter-editsbyself-description": "Ediciones de to",
-       "rcfilters-filter-editsbyother-label": "Ediciones d'otros",
-       "rcfilters-filter-editsbyother-description": "Ediciones creaes por otros usuarios (non por ti).",
+       "rcfilters-filtergroup-authorship": "Autoría de la contribución",
+       "rcfilters-filter-editsbyself-label": "Cambios de to",
+       "rcfilters-filter-editsbyself-description": "Contribuciones de to.",
+       "rcfilters-filter-editsbyother-label": "Cambios d'otros",
+       "rcfilters-filter-editsbyother-description": "Tolos cambios menos los de to.",
        "rcfilters-filtergroup-userExpLevel": "Nivel d'esperiencia (solo pa usuarios rexistraos)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Los filtros Experience alcuentren sólo usuarios rexistraos, de manera qu'esti filtru entra en conflictu col filtru «Sin rexistrar».",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "El filtru «Ensin rexistrar» tien un conflictu con un filtru Experience o más, qu'alcuentren sólo usuarios rexistraos. Los filtros que tienen un conflictu márquense nel área de Filtros activos, más arriba.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Recién llegaos",
        "rcfilters-filter-user-experience-level-newcomer-description": "Menos de 10 ediciones y 4 díes d'actividá.",
        "rcfilters-filter-user-experience-level-learner-label": "Aprendices",
-       "rcfilters-filter-user-experience-level-learner-description": "Más díes d'actividá y ediciones que los «Recién llegaos», pero menos que los «Usuarios espertos».",
+       "rcfilters-filter-user-experience-level-learner-description": "Más esperiencia que los «Recién llegaos», pero menos que los «Usuarios espertos».",
        "rcfilters-filter-user-experience-level-experienced-label": "Usuarios espertos",
        "rcfilters-filter-user-experience-level-experienced-description": "Más de 30 díes d'actividá y 500 ediciones.",
        "rcfilters-filtergroup-automated": "Contribuciones automátiques",
        "rcfilters-filter-minor-description": "Ediciones que l'autor etiquetó como menores.",
        "rcfilters-filter-major-label": "Ediciones non menores",
        "rcfilters-filter-major-description": "Ediciones ensin etiquetar como menores.",
+       "rcfilters-filtergroup-watchlist": "Páxines vixilaes",
+       "rcfilters-filter-watchlist-watched-label": "Na llista de siguimientu",
+       "rcfilters-filter-watchlist-watched-description": "Cambios nes páxines de la llista de siguimientu.",
+       "rcfilters-filter-watchlist-watchednew-label": "Cambios recién na llista de siguimientu",
+       "rcfilters-filter-watchlist-watchednew-description": "Cambios nes páxines de la llista de siguimientu que nun visitasti desque asocedieron los cambios.",
+       "rcfilters-filter-watchlist-notwatched-label": "Nun ta na llista de siguimientu",
+       "rcfilters-filter-watchlist-notwatched-description": "Too menos los cambios nes páxines de la llista de siguimientu.",
        "rcfilters-filtergroup-changetype": "Tipu de cambéu",
        "rcfilters-filter-pageedits-label": "Ediciones de páxines",
        "rcfilters-filter-pageedits-description": "Ediciones del conteníu wiki, alderiques, descripciones de categoríes...",
        "rcfilters-hideminor-conflicts-typeofchange-global": "El filtru «Ediciones menores» fai conflictu con un filtru «Tipu de cambiu» o más, porque dellos tipos de cambiu nun pueden designase como «menores». Los filtros que faen conflictu tan marcaos nel área de Filtros Activos, más arriba.",
        "rcfilters-hideminor-conflicts-typeofchange": "Dellos tipos de cambiu nun pueden designase como «menores», de manera qu'esti filtru fai conflictu colos siguientes filtros «Tipu de cambiu»: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Esti filtru de «Tipu de cambiu» fai conflictu col filtru «Ediciones menores». Dellos tipos de cambiu nun pueden designase como «menores».",
+       "rcfilters-filtergroup-lastRevision": "Última revisión",
+       "rcfilters-filter-lastrevision-label": "Última revisión",
+       "rcfilters-filter-lastrevision-description": "El cambio más recien d'una páxina.",
+       "rcfilters-filter-previousrevision-label": "Revisiones anteriores",
+       "rcfilters-filter-previousrevision-description": "Tolos cambios que nun son los más recien d'una páxina.",
+       "rcfilters-filter-excluded": "Escluíu",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:non</strong> $1",
+       "rcfilters-view-tags": "Etiquetes",
        "rcnotefrom": "Abaxo {{PLURAL:$5|tá'l cambiu|tan los cambios}} dende'l <strong>$3</strong>, a les <strong>$4</strong> (s'amuesen un máximu de <strong>$1</strong>).",
        "rclistfromreset": "Reaniciar la seleición de data",
        "rclistfrom": "Amosar los nuevos cambios dende'l $3 a les $2",
        "rcshowhidecategorization": "$1 la categorización de páxina",
        "rcshowhidecategorization-show": "Amosar",
        "rcshowhidecategorization-hide": "Tapecer",
-       "rclinks": "Amosar los caberos $1 cambeos de los caberos $2 díes <br />$3",
+       "rclinks": "Amosar los caberos $1 cambeos de los caberos $2 díes",
        "diff": "dif",
        "hist": "hist",
        "hide": "Anubrir",
        "php-uploaddisabledtext": "Les xubíes de ficheros tan desactivaes en PHP.\nPor favor, comprueba la configuración de file_uploads.",
        "uploadscripted": "Esti ficheru contien códigu HTML o scripts que pueden interpretase de mou equivocáu por un navegador.",
        "upload-scripted-pi-callback": "Nun puede xubise un ficheru que contien instrucciones de procesamientu XML de fueya d'estilu.",
+       "upload-scripted-dtd": "Nun pueden xubise ficheros SVG que contengan una declaración DTD non estándar.",
        "uploaded-script-svg": "Alcontróse l'elementu «$1» que puede recibir scripts nel ficheru SVG xubíu.",
        "uploaded-hostile-svg": "Alcontróse CSS inseguru nel elementu d'estilu del ficheru SVG xubíu.",
        "uploaded-event-handler-on-svg": "Nun se permite configurar los atributos de controladores de socesos <code>$1=\"$2\"</code> nos ficheros SVG.",
        "enotif_body_intro_moved": "{{GENDER:$2|$2}} treslladó la páxina «$1» de {{SITENAME}} el $PAGEEDITDATE, consulta $3 pa ver la revisión actual.",
        "enotif_body_intro_restored": "{{GENDER:$2|$2}} restauró la páxina «$1» de {{SITENAME}} el $PAGEEDITDATE, consulta $3 pa ver la revisión actual.",
        "enotif_body_intro_changed": "{{GENDER:$2|$2}} camudó la páxina «$1» de {{SITENAME}} el $PAGEEDITDATE, consulta $3 pa ver la revisión actual.",
-       "enotif_lastvisited": "Mira en $1 pa ver tolos cambios dende la cabera visita.",
-       "enotif_lastdiff": "Mira en $1 pa ver esti cambéu.",
+       "enotif_lastvisited": "Pa ver tolos cambios dende la cabera visita, mira en $1",
+       "enotif_lastdiff": "Pa ver esti cambiu mira en $1",
        "enotif_anon_editor": "usuariu anónimu $1",
        "enotif_body": "Estimáu $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nResume del editor: $PAGESUMMARY $PAGEMINOREDIT\n\nPa comunicate col editor:\ncorréu: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nEn casu de producise más actividá, nun habrá más notificaciones a nun ser que visites esta páxina teniendo sesión aniciada. Tamién podríes reaniciar na to llista de siguimientu los marcadores de notificación de toles páxines que sigues.\n\nEl to abertable sistema de notificación de {{SITENAME}}\n\n--\nPa camudar les preferencies d'avisos per corréu, visita\n{{canonicalurl:{{#special:Preferences}}}}\n\nPa camudar la configuración de la to llista de siguimientu, visita\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPa desaniciar la páxina de la to llista de siguimientu, visita\n$UNWATCHURL\n\nMás ayuda y sofitu:\n$HELPPAGE",
        "created": "creada",
        "sp-contributions-uploads": "xubes",
        "sp-contributions-logs": "rexistros",
        "sp-contributions-talk": "alderique",
-       "sp-contributions-userrights": "xestión de permisos d'usuariu",
+       "sp-contributions-userrights": "xestión de permisos d'{{GENDER:$1|usuariu|usuaria}}",
        "sp-contributions-blocked-notice": "Esti usuariu anguaño ta bloquiáu.\nLa cabera entrada del rexistru de bloqueos s'ufre darréu pa referencia:",
        "sp-contributions-blocked-notice-anon": "Esta IP anguaño ta bloquiada.\nLa cabera entrada del rexistru de bloqueos s'ufre darréu pa referencia:",
        "sp-contributions-search": "Buscar contribuciones",
        "unblocked-id": "Desaniciose'l bloquéu $1.",
        "unblocked-ip": "Desbloquióse a [[Special:Contributions/$1|$1]].",
        "blocklist": "Usuarios bloquiaos",
+       "autoblocklist": "Bloqueos automáticos",
+       "autoblocklist-submit": "Guetar",
+       "autoblocklist-legend": "Llista de bloqueos automáticos",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Bloquéu automáticu llocal|Bloqueos automáticos llocales}}",
+       "autoblocklist-total-autoblocks": "Númberu total de bloqueos automáticos: $1",
+       "autoblocklist-empty": "La llista de bloqueos automáticos ta balera.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Otru bloquéu automáticu|Otros bloqueos automáticos}}",
        "ipblocklist": "Usuarios bloquiaos",
        "ipblocklist-legend": "Atopar un usuariu bloquiáu",
        "blocklist-userblocks": "Anubrir los bloqueos de cuenta",
        "tooltip-pt-mycontris": "Llista de les {{GENDER:|tos}} collaboraciones",
        "tooltip-pt-anoncontribs": "Una llista d'ediciones feches dende esta dirección IP",
        "tooltip-pt-login": "T'encamentamos que t'identifiques, anque nun ye obligatorio",
+       "tooltip-pt-login-private": "Tienes d'aniciar sesión pa usar esta wiki",
        "tooltip-pt-logout": "Salir",
        "tooltip-pt-createaccount": "Encamentámoste que crees una cuenta y qu'anicies sesión; sicasí, nun ye obligatorio",
        "tooltip-ca-talk": "Alderique tocante al conteníu de la páxina",
        "anonymous": "{{PLURAL:$1|Usuariu anónimu|Usuarios anónimos}} de {{SITENAME}}",
        "siteuser": "{{SITENAME}} usuariu $1",
        "anonuser": "usuariu anónimu de {{SITENAME}} $1",
-       "lastmodifiedatby": "L'últimu cambiu d'esta páxina foi el $1, a les $2, por $3.",
+       "lastmodifiedatby": "La última edición d'esta páxina foi el $1 a les $2, por $3.",
        "othercontribs": "Basao nel trabayu fechu por $1.",
        "others": "otros",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|usuariu|usuaria}}|usuarios}} $1",
        "newimages-legend": "Peñera",
        "newimages-label": "Nome d'archivu (o una parte d'él):",
        "newimages-user": "Direición IP o nome d'usuariu",
+       "newimages-newbies": "Amosar namái les contribuciones de cuentes nueves",
        "newimages-showbots": "Ver les xubíes de los bots",
        "newimages-hidepatrolled": "Despintar les entraes patrullaes",
+       "newimages-mediatype": "Tipu de mediu:",
        "noimages": "Nun hai nada que ver.",
        "gallery-slideshow-toggle": "Intercambiar les miniatures",
        "ilsubmit": "Guetar",
        "confirmrecreate": "{{GENDER:$1|L'usuariu|La usuaria}} [[User:$1|$1]] ([[User talk:$1|alderique]]) desanició esta páxina depués de qu'empecipiaras a editala pol siguiente motivu:\n: <em>$2</em>\nPor favor confirma que daveres quies volver a crear esta páxina.",
        "confirmrecreate-noreason": "{{GENDER:$1|L'usuariu|La usuaria}} [[User:$1|$1]] ([[User talk:$1|alderique]]) desanició esta páxina depués de que principiaras a editala.  Por favor confirma que daveres quies volver a crear esta páxina.",
        "recreate": "Volver a crear",
+       "confirm-purge-title": "Purgar esta páxina",
        "confirm_purge_button": "Aceutar",
        "confirm-purge-top": "¿Llimpiar la caché d'esta páxina?",
        "confirm-purge-bottom": "Purgar una páxina esborra la caché y fuercia a apaecer la versión actual más recién.",
        "tags-create-reason": "Motivu:",
        "tags-create-submit": "Crear",
        "tags-create-no-name": "Tienes d'especificar un nome d'etiqueta.",
-       "tags-create-invalid-chars": "Los nomes d'etiqueta nun tienen de contener comes (<code>,</code>) o barres (<code>/</code>).",
+       "tags-create-invalid-chars": "Los nomes d'etiqueta nun tienen de contener comes (<code>,</code>), tuberíes (<code>|</code>) nin barres (<code>/</code>).",
        "tags-create-invalid-title-chars": "Los nomes d'etiqueta nun puen contener caráuteres que nun puedan usase nos títulos de páxina",
        "tags-create-already-exists": "La etiqueta «$1» yá esiste.",
        "tags-create-warnings-above": "{{PLURAL:$2|Alcontróse'l siguiente avisu|Alcontráronse los siguientes avisos}} al intentar crear la etiqueta «$1»:",
        "htmlform-user-not-valid": "<strong>$1</strong> nun ye un nome d'usuariu válidu.",
        "logentry-delete-delete": "$1 {{GENDER:$2|desanició}} la páxina $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|desanició}} la redireición $3 sobreescribiéndola",
-       "logentry-delete-restore": "$1 {{GENDER:$2|restauró}} la páxina $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|restauró}} la páxina $3 ($4)",
+       "logentry-delete-restore-nocount": "$1 {{GENDER:$2|restauró}} la páxina $3",
+       "restore-count-revisions": "{{PLURAL:$1|1 revisión|$1 revisiones}}",
+       "restore-count-files": "{{PLURAL: $1|1 ficheru|$1 ficheros}}",
        "logentry-delete-event": "$1 {{GENDER:$2|camudó}} la visibilidá {{PLURAL:$5|d'un socesu del rexistru|de $5 socesos del rexistru}} en $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|camudó}} la visibilidá {{PLURAL:$5|d'una revisión|de $5 revisiones}} na páxina $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|camudó}} la visibilidá de los socesos del rexistru en $3",
        "mw-widgets-titleinput-description-redirect": "redirixir a $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Amestar una categoría...",
        "mw-widgets-usersmultiselect-placeholder": "Amestar más...",
+       "date-range-from": "Dende la data:",
+       "date-range-to": "Ata la data:",
        "sessionmanager-tie": "Nun puen combinase dellos tipos de solicitú d'identificación: $1.",
        "sessionprovider-generic": "sesiones $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sesiones basaes en cookies",
        "restrictionsfield-help": "Una única direición IP o rangu CIDR per llinia. P'activar toos, utiliza:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "revisión $1",
        "pageid": "ID de páxina $1",
-       "rawhtml-notallowed": "Les etiquetes &lt;html&gt; nun pueden usase fuera de les páxines normales."
+       "rawhtml-notallowed": "Les etiquetes &lt;html&gt; nun pueden usase fuera de les páxines normales.",
+       "gotointerwiki": "Dexando {{SITENAME}}",
+       "gotointerwiki-invalid": "El títulu especificáu nun ye válidu.",
+       "gotointerwiki-external": "Tas a piques de dexar {{SITENAME}} pa visitar [[$2]], que ye un sitiu web distintu.\n\n'''[$1 Siguir a $1]'''",
+       "undelete-cantedit": "Nun puedes desfacer el borráu d'esta páxina porque nun tienes permisu pa editala.",
+       "undelete-cantcreate": "Nun puedes desfacer el borráu d'esta páxina porque nun existe nenguna páxina con esti nome y nun tienes permisu pa creala.",
+       "pagedata-title": "Datos de la páxina",
+       "pagedata-text": "Esta páxina ufre una interfaz de datos pa les páxines. Escribe'l títulu de la páxina na URL, usando la sintaxis de subpáxina.\n* Aplícase la negociación de conteníu en base a la testera Accept del to cliente. Esto significa que los datos de la páxina van dase nel formatu que prefiera'l to cliente.",
+       "pagedata-not-acceptable": "Nun s'alcontró nengún formatu que coincidiera. Tipos MIME soportaos: $1",
+       "pagedata-bad-title": "Títulu inválidu: $1."
 }
index b035828..b915faf 100644 (file)
@@ -7,23 +7,39 @@
                        "Jeannette Coocoo",
                        "Nehirowisiw",
                        "Ninmeka",
-                       "Thibaut120094"
+                       "Thibaut120094",
+                       "Catrope"
                ]
        },
-       "sunday": "manactakaniwon",
+       "tog-underline": "Kicawetcita ntowapesinihikana:",
+       "tog-hideminor": "Ka ki ocitakaniwoki kwekisinihikana nta katcicta aka ka sapinakoki.",
+       "tog-hidepatrolled": "Nohwe nta ka ki kweskisinihikateki nama weckat katcicta ka ki aci koski kanawapatcikateki",
+       "tog-newpageshidepatrolled": "Katcicta paskickwemakana ka ki koski aci tapwatcikateki  taci e ici masinateki ocki paskickwemikana",
+       "tog-hidecategorization": "Katcicta tipanictawin paskickwemikana",
+       "tog-extendwatchlist": "Ekoci kaskina kata nokok nohwe nosinesinihan ka kweskisinihikateki ka masinateki aka tepirak nohwe kata nokok aka weckat ka ki otci otamirotakaniwiki.",
+       "tog-usenewrc": "Tatwa paskickwemakan mamowicta ka ki meckotcitakaniwoki  aka weckat kaki otci kweskisinihikateki acit nta nosinesinihikanik.",
+       "tog-numberheadings": " Nicike kata masinihikepirik akitasowina  e icinikateki tipanisinihikanica",
+       "tog-showtoolbar": "Motena ka maskotikw kata nokoki irapitcitcikana masinihikakan e nisawitakaniwok",
+       "tog-editondblclick": "Nicowaw mamakona kata kweskisinahaman paskickwemakana",
+       "tog-watchcreations": "Ita acotcita nosinesinihikanik paskickwemikana ocki ka ocitaian acit nohwe ka natcipitaman natisinihikaniwoca.",
+       "tog-watchdefault": "Acotcicta paskickemikana nosinesinihikanik acit natisinihikaniwoca ka ki kweskisinahaman",
+       "tog-watchuploads": "Ka natcipitaman ocki natisinihikaniwoca nta ici acotcita nosinesinihikanik",
+       "underline-always": "Mocak",
+       "underline-never": "Nama wiskat",
+       "sunday": "Manactakaniwon",
        "monday": "ockorkananiwon",
        "tuesday": "nicw kicikaw",
        "wednesday": "nicto kicikaw",
        "thursday": "new kicikaw",
        "friday": "tcipaiatikw kicikaw",
        "saturday": "mari kicikaw",
-       "sun": "manactakaniwon",
-       "mon": "ockorkananiwon",
+       "sun": "Manactakaniwon",
+       "mon": "Ockorkananiwon",
        "tue": "Nicw kicikaw",
-       "wed": "nicto kicikaw",
-       "thu": "new kicikaw",
-       "fri": "tcipaiatikw kicikaw",
-       "sat": "mari kicikaw",
+       "wed": "Nicto kicikaw",
+       "thu": "New kicikaw",
+       "fri": "Tcipaiatikw kicikaw",
+       "sat": "Mari kicikaw",
        "january": "Kenositc pisimw",
        "february": "Akokatcic pisimw",
        "march": "Nikikw pisimw",
@@ -51,7 +67,7 @@
        "jan": "Kenositc pisimw",
        "feb": "Akokatcic pisimw",
        "mar": "Nikikw pisimw",
-       "apr": "Ka wasikototc pisimw",
+       "apr": "Ka wasikatotc pisimw",
        "may": "Wapikon pisimw",
        "jun": "Otehimin pisimw",
        "jul": "Mikomini pisimw",
        "october-date": "Namekosi pisimw $1",
        "november-date": "Atikamekw pisimw $1",
        "december-date": "Pitcipipon pisimw $1",
+       "period-am": "E pwamici apita kicikak",
+       "period-pm": "E ickwa apita kicikak",
        "pagecategories": "{{PLURAL:$1|Ka ici arimotcikatek|Ka ici arimotcikateki}}",
-       "category_header": "Masinhikana ka ici arimotcikateki \"$1\"",
+       "category_header": "Masinahikana ka ici arimotcikateki \"$1\"",
        "subcategories": "Awocamec ke ici arimotcikateki",
+       "category-media-header": "Tipatcimoctakewin e ici actakaniwok \"$1\"",
        "hidden-categories": "{{PLURAL:$1|Ka katcictek|Ka katcicteki}}",
+       "category-subcat-count": "Nohwe tipanictawin {{PLURAL:$2|0=nama takon e ki koski tipanictakaniwok|1=tepirak e ki koski tipanictakaniwok nta takon|takon $2 koski tipanictawina, nte {{PLURAL:$1|0=nama takon|1=nohwe|neki $1}}nta nitc}}.",
+       "category-article-count": "nohwe tipanictawin {{PLURAL:$2|0=nama takon paskickwemakan|1=Enkon nohwe tepirak paskickwemakan|takon $2 paskickwemakana,ohwe tca {{PLURAL:$1|0=nama takon|1=ohwi|nehi $1}} nihi nitc}}.",
+       "category-file-count": "Nohwe tipanictawin {{PLURAL:$2|0=nama takon mawtosinihikana|1= tec mawtosinihikan acotitin|acotitin $2 mawtosinihikana,  {{PLURAL:$1|0=nama takon|1=nohwe|nihi $1}} nta ka cekoctek}}.",
        "listingcontinuesabbrev": "minawatc",
        "about": "Taci we otciparik",
        "newwindow": "(cepita kotak ocki osapwakan)",
-       "cancel": "Ponipita",
+       "cancel": "Ponipata",
+       "moredotdotdot": "Erikam...",
        "mypage": "Masinhikan",
        "mytalk": "Ka ici arimowaniwok",
        "anontalk": "Ka ici arimowaniok",
        "navigation": "Matcecikinikan",
        "and": "&#32;kaie",
-       "qbbrowse": "Nantowepaha",
-       "qbedit": "Meckotcita",
        "namespaces": "Ka ici masinasotcik",
        "variants": "Pitoc",
        "navigation-heading": "Matcecikinikana",
        "errorpagetitle": "Oniparin",
        "returnto": "Nte ica paskickwemakanik $1",
-       "tagline": "Epe otcipirik {{SITENAME}}",
+       "tagline": "E pe otciparik {{SITENAME}}",
        "help": "Witcihici",
-       "search": "Nantokaskeritcikatek",
-       "searchbutton": "Nantokaskeritcikatek",
+       "search": "Nantona",
+       "searchbutton": "Nantokiskeritcikatek",
        "go": "Go",
-       "searcharticle": "Tapowata",
-       "history": "Ka ki pe icinakok owe masinhikan",
+       "searcharticle": "Tapwata",
+       "history": "Ka ki pe icinakok ohwe masinahikan",
        "history_short": "Isparik",
        "history_small": "isparik",
        "printableversion": "Wi orowipitamone",
        "permalink": "Matakan pamikicikwepitcikanik",
        "print": "Orowipitaman",
        "view": "Tapwatcike",
-       "view-foreign": "Nta ici ntowapata$1",
+       "view-foreign": "Nta ici ntowapata $1",
        "edit": "Meckotcita",
        "create": "Ocita",
        "create-local": "Arimota ke acotcictek",
-       "editthispage": "Mecikotona owe",
        "delete": "Wepina",
+       "protect": "Tacikatek",
        "newpage": "Ocki matcecikinakanik",
        "talkpagelinktext": "ka ici arimowaniwok",
+       "specialpage": "Ka ici wectakaniwok",
        "personaltools": "Kit irapatcitcikan",
-       "talk": "Ka ici arimowaniok",
+       "talk": "Ka ici arimowaniwok",
        "views": "Ke icinakok",
        "toolbox": "Irapitcitcikan",
-       "projectpage": "Kitci wapataman nehe masinihikan ocki otamirowinik otci",
-       "otherlanguages": "Kotakhi aiarimowewina",
-       "redirectedfrom": "(Taci e kiweckwemokok $1)",
-       "lastmodifiedat": "Pamitcitc ka meckotcitakiniwok ni apitc $1, ka tatopihikanihak $2.",
+       "imagepage": "Kitci wapataman nihe masinahikan",
+       "otherlanguages": "Kotakahi aiarimowewina",
+       "redirectedfrom": "(Taci e kiweckwemakak $1)",
+       "redirectpagesub": "Masinhikan ke kweskiticohemikok",
+       "redirectto": "Nte ica:",
+       "lastmodifiedat": "Pamitcitc ka meckotcitakiniwok ni apitc $1, ka tato tipahikaneak $2.",
        "jumpto": "Ica:",
        "jumptonavigation": "matcetcicihikan",
-       "jumptosearch": "nantokaskeritcikatek",
+       "jumptosearch": "nantokiskeritcikatek",
        "aboutsite": "Taci we otciparik {{SITENAME}}",
        "aboutpage": "Project:Enko nehe",
+       "copyrightpage": "{{ns:project}}:Tiperitakon",
        "currentevents": "Mekwata",
        "currentevents-url": "Project:Mekwata",
        "disclaimers": "Ke ekwamanictcikatek",
        "helppage-top-gethelp": "Witcihici",
        "mainpage": "Otitikowin",
        "mainpage-description": "Otitikowin",
-       "portal": "Kaskina namo awik",
-       "portal-url": "Project:Kaskina namo awik",
+       "portal": "Kaskina mamo awik",
+       "portal-url": "Project:Kaskina mamo awik",
        "privacy": "Kekwan ke ki ici nitcictaman",
        "privacypage": "Project:Kekwan ke ki ici nitcictaman",
        "ok": "OK",
        "retrievedfrom": "Neta pe otcipirin \"$1\"",
        "editsection": "meckotcita",
        "editold": "meckotcita",
+       "viewsourceold": "Nte ici nta kanawapata e otciparik",
        "editlink": "meckotcita",
        "viewsourcelink": "Nte ici nta kanawapata e otciparik",
        "editsectionhint": "Meckotcita ota: $1",
-       "toc": "Tekaci ecinakok",
+       "toc": "Tekaci e icinakok",
        "showtoc": "Wapata",
        "hidetoc": "Kata",
+       "collapsible-expand": "Otamirota",
        "confirmable-yes": "Ehe",
        "confirmable-no": "Nama",
-       "site-atom-feed": "Flux Atom de $1",
+       "site-atom-feed": "Flux Atom $1",
        "page-atom-feed": "\"$1\" Atom feed",
        "red-link-title": "$1 (nama takon kekwcic)",
-       "nstab-main": "Masinhikan",
-       "nstab-user": "{{GENDER:{{ROOTPAGENAME}}|Ka masinahiketc|Ka masinahiketc}}",
-       "nstab-special": "Ka ici wectakaniok",
-       "nstab-project": "nohwe ma",
-       "nstab-image": "Masinhikan",
+       "nstab-main": "Masinahikan",
+       "nstab-user": "Ka masinahiketc",
+       "nstab-special": "Ka ici wectakaniwok",
+       "nstab-project": "Nohwe ma",
+       "nstab-image": "Masinahikan",
+       "nstab-mediawiki": "E itatcitcikatek",
        "nstab-template": "Tapapitcikan",
        "nstab-category": "Ka ici arimotcikatek",
        "mainpage-nstab": "Otitikowin",
        "error": "Oniparin",
        "databaseerror-error": "Oniparin: $1",
        "badtitle": "nama mia icinikatew",
-       "badtitletext": "Nama takon nohwe e icinikatek paskickwemikan ,cikoctew,kekotc nama mia ki otci icinikatcikatew e itectamakaniwok nte arimwewinik kekotc nte otamirowinik.\nPotc osam nipira aitisinihikana actetikena nama tca ki actakaniwona tan e icinikatcikateki kekwan.",
+       "badtitletext": "Nama takon nohwe e icinikatek paskickwemikancikoctew,kekotc nama mia ki otci icinikatcikatew e itectamakaniwok nte arimwewinik kekotc nte otamirowinik.\nPotc osam nipira aitisinihikana actetikena nama tca ki actakaniwona tan e icinikatcikateki kekwan.",
        "viewsource": "Nte ici nta kanawapata e otciparik",
+       "viewsource-title": "Nta ici ntowapata $1",
        "yourname": "Icinikasowin:",
        "userlogin-yourname": "Icinikasowin",
        "userlogin-yourname-ph": "Pitakesinaha kit icinikasowin",
        "userlogin-yourpassword": "Pitakesinahotiso",
        "userlogin-yourpassword-ph": "Pitakesinihikan",
        "createacct-yourpassword-ph": "Acta pitakesinihikan",
+       "yourpasswordagain": "Minawatc acta pitakesinihikan:",
        "createacct-yourpasswordagain": "Naskamowicta pitakesinihikan",
        "createacct-yourpasswordagain-ph": "Minawatc acta pitakesinihikan",
+       "userlogin-remembermypassword": "Kitci cetik mekwact ka ici otamirohian",
        "login": "Posi",
+       "nav-login-createaccount": "Posi / masinahotiso",
        "logout": "Piskeapikenakan",
        "userlogout": "Piskeapikenakan",
        "userlogin-noaccount": " Nama takon ki mockinesinihikan?",
        "createacct-emailoptional": "Pamikicikwepitcikan matcetcicihikan (kir kotc)",
        "createacct-email-ph": "Pitakesinaha ki pamikicikwepitcikan matcetcicihikan",
        "createacct-submit": "Masinahotiso",
-       "createacct-benefit-heading": "{{SITENAME}} Iskwewok,iriniwok ka orisinihiketcik mitowi kir.",
+       "createacct-another-submit": "Masinahotiso",
+       "createacct-benefit-heading": "{{SITENAME}} iskwewok, iriniwok ka orisinihiketcik mitowi kir.",
+       "createacct-benefit-body1": "{{PLURAL:$1|ki meckotcitakiniwok|ki meckotcitakiniwoki}}",
        "createacct-benefit-body2": "{{PLURAL:$1|masinhikan|masinahikana}}",
-       "loginlanguagelabel": "arimwewin:$1",
+       "createacct-benefit-body3": "ocki {{PLURAL:$1|ka witcihietc|ka witcihietcik}}",
+       "loginlanguagelabel": "Arimwewin:$1",
        "pt-login": "Posi",
        "pt-login-button": "Posi",
        "pt-createaccount": "Masinahotiso",
        "pt-userlogout": "Piskeapikenakan",
+       "botpasswords-label-create": "Ocita",
        "botpasswords-label-cancel": "Ponipita",
        "botpasswords-label-delete": "Wepina",
        "resetpass-submit-cancel": "Ponipita",
        "bold_tip": "Atisokesinahikan e makatewasinatek",
        "italic_sample": "Atisokesinahikan ka kwectek",
        "italic_tip": "Atisokesinahikan ka kwectek",
-       "link_sample": "Ka icinkatek takapikenikan",
+       "link_sample": "Ka icinikatek takapikenikan",
        "link_tip": "Pitc itapikesinikan",
-       "extlink_sample": "http://www.example.com ka icinkatek takapikenikan",
-       "extlink_tip": "Masinhikana ka ici tapitik kotakik masinhikanik",
+       "extlink_sample": "http://www.example.com ka icinikatek takapikenikan",
+       "extlink_tip": "Masinahikana ka ici tapitik kotakik masinahikanik",
        "headline_sample": "Atisokesinahikan ke aicinikatek",
+       "headline_tip": "Icinikatamowinicic 2 ka iteritakok",
        "nowiki_sample": "Acta atisokesinahikan aka moci ka ki otci nihipitcikatek ota",
-       "nowiki_tip": "aka pamerita e itasinihakw wiki",
+       "nowiki_tip": "Aka pamerita e itasinihak wiki",
        "image_tip": "E pitakesinahikatek masinahikaniwoc",
-       "media_tip": "Ka ici tapitik onimiskimasinhikan",
-       "sig_tip": "Masinohotiso acit e tato konekisitc pisimw",
+       "media_tip": "Ka ici tapitik onimiskimasinahikan",
+       "sig_tip": "Masinahotiso acit e tato konekisitc pisimw",
+       "hr_tip": "Ka mitaskosinatek(aka oraho)",
        "summary": "Nosem:",
        "minoredit": "Apicic meckotciparin",
-       "watchthis": "Wi nosinetahine ohe masinhikan",
+       "watchthis": "Wi nosinetaine ohwe masinahikan",
        "savearticle": "Kinokepitcikanik acta",
        "showpreview": "Tcockapita",
        "showdiff": "Kanawapata ka meckotcipitcikateki",
+       "anoneditwarning": "<strong>Ekwa:</strong> nama kipitikeapikecinin. Nokon e tatosinatek kit irapitcikan ka pamikicikwakein kaskina wec ici nokon  kecpin e kweskisinihikein. Kecpin tca <strong>[$1 wi pitikeapikecinine]</strong> ou <strong>[$2 ocita kata pitakesinasowin]</strong>,nohwe ka kweskisinihikein ki ka masinason e icinikatitisowin, acit awacimec ki ka ici titamihikowin",
        "loginreqlink": "posi",
+       "newarticletext": "Ki nanosinehen ntowapikepatcikan aka  e takok nohwe paskickwemakan kiapatc.\nWi ocitaine nohwe paskickwemakan, nta ici masinaha pwetek kit atisokesinihikan minawatc\n (matci kika nta kanawapaten [$1 ka witciwemakak paskickwemakan] awacimec wi nanto kiskeritamone). \nKecpin ota ka pe icawone{{GENDER:||e}} e ki onipiriin, ohwe makona <strong>kiweckawin</strong> taci e ici pamikicikwepitcikein",
+       "noarticletext": "Mekwatc nama takon atisokesinihikan nta paskickwemakanik.\nKe ki totaman [[Special:Search/{{PAGENAME}}|nantowapaha ohwe icinikatamowin]] kotakahikw paskickwemakanik, \n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|paskickwemakan={{FULLPAGENAMEE}}}} nantowapata ka ici  mikowapihikemikak]\nkekotc [{{fullurl:{{FULLPAGENAME}}|tota=orocowata}} ocita paskickwemakan]</span>.",
+       "noarticletext-nopermission": "Mekwatc nama takon atisokesinihikan nta paskickwemakanik.\nKe ki totaman[[Special:Search/{{PAGENAME}}|nantowapaha ohwe icinikatamowin ]] kotakahikw paskickwemakanik,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|paskickwemakan={{FULLPAGENAMEE}}}} nantowapaha kotakihi wapatcikaniwoca ohwe ]</span>,nama aric ki mirikwin ohwe kata ocitain paskickwemakan.",
        "editing": "Meckotcita $1",
+       "creating": "$1 Wir tipirowe ka ki ocitatc",
+       "editingsection": "Ka ki meckotcitatc $1 (tipanitakiniwok)",
        "templatesused": "{{PLURAL:$1|tapapitcikan ka apatak |tapapitcikan ka apatak}} nta paskickwemakanik:",
-       "template-protected": "(nakatweritcikatew)",
+       "template-protected": "(nakataweritcikatew)",
        "template-semiprotected": "(apita nakatoweritakon)",
+       "hiddencategories": "{{PLURAL:$1|tipanictawin katcitin|tipanictawina katcitano}} paskickwemakan tca nohwe nte ici actew:",
+       "permissionserrorstext-withaction": "Nama ki ki toten $2 osam {{PLURAL:$1|}} nohwe ka witcikatek kekotc nihi ka wawitcikateki:",
        "moveddeleted-notice": "Paskickwemakan ka ki wepinikatek.\nOhwe wapatcikan nitc ici nokon paskickwemakanik ka ki wepinikateki acit ka ki atcipitcikateki.",
        "content-model-javascript": "JavaScript",
        "viewpagelogs": "Kinawapta kekwan kaki isparik ota masinhikanik",
-       "revisionasof": "Kiwe wapata $1",
+       "currentrev": "Mekwatc ka otamirowitcikatek",
+       "currentrev-asof": "Owe mekwatc ka icinakok ni apitc ka ocitakiniwokipan $1",
+       "revisionasof": "Kiwe kanawapata $1",
+       "revision-info": "E tato konekisitc ka koski kanawapatcikatek $1 nohwe {{GENDER:$6|$2}}$7",
        "previousrevision": "← Nictam ka ki masinatek",
-       "nextrevision": "Tec aci ka ki otamirowitcikatek",
+       "nextrevision": "Tec aci ka ki otamirowitcikatek →",
        "currentrevisionlink": "Mekwatc ka otamirowitcikatek",
-       "cur": "E otapekitikw",
+       "cur": "e otapekitikw",
+       "next": "minawa",
        "last": "pitoc",
+       "historysize": "{{PLURAL:$1|1 irik|$1 irik}}",
        "history-feed-title": "Kotakihi e itatcitcikatekai",
+       "rev-delundel": "Nokota/katcicta",
        "rev-showdeleted": "wapata",
        "revdelete-show-file-submit": "Ehe",
        "pagehist": "Ka ki pe icinakok owe masinhikan",
-       "history-title": "Kotakihi e itatcitcikatekai $1",
-       "lineno": "E tosinatek $1 :",
+       "history-title": "Kotakihi e itatcitcikatekai \"$1\"",
+       "difference-title": "\"$1\" E ci papitoc icinakok",
+       "lineno": "E tatosinatek $1:",
        "editundo": "nama ntwatc",
-       "searchresults": "Kaki nta kiskeritakok",
-       "searchresults-title": "Kaki nta kiskeritakok \"$1\"",
+       "diff-multi-sameuser": "({{PLURAL:$1|Nohwe ka ki koski kanawapatcikatek enkon nohwe peikon ka ki mockatcitatc nama aric nokon |$1 nohwe ka ki koski kanawapatcikateki enkon nohwe peikon ka mockatcitatc nama aric nokon }})",
+       "searchresults": "Ka ki nta kiskeritakok",
+       "searchresults-title": "Ka ki nta kiskeritakok \"$1\"",
        "prevn": "{{PLURAL:$1|nictamictew|nictamictewa $1}}",
        "nextn": "minawa {{PLURAL:$1|$1}}",
+       "next-page": "minawa masinahikan",
        "nextn-title": "Minawa $1 {{PLURAL:$1|ke iti icinakok|ke iti icinakoki}}",
-       "shown-title": "Akoskoha $1 {{PLURAL:$1|ke iti icinakok|ke iti icinakoki}} tatwa e matce paskickwemikein",
+       "shown-title": "Akwaskoha $1 {{PLURAL:$1|ke iti icinakok|ke iti icinakoki}} tatwa e matce paskickwemikein",
        "viewprevnext": "Tapwatcike ($1 {{int:pipe-separator}} $2) ($3)",
-       "searchprofile-articles": "Masinhikana ka aicteki",
+       "searchmenu-new": "<strong>Ocita paskickwemakan « [[:$1|$1]] » ohwe ota wiki !</strong> {{PLURAL:$2|0Kanawapata  kirika nohwe paskickwemakan ka ki nantowapahaman.|Kanawapata kirina kekwan ka ki miskowapahaman e nanto kiskeritaman .}}",
+       "searchprofile-articles": "Masinahikana ka aicteki",
        "searchprofile-images": "Mitcetowina",
        "searchprofile-everything": "Kaskina",
        "searchprofile-advanced": "Awocamec nantona",
-       "searchprofile-articles-tooltip": "Nantowapita $1",
-       "searchprofile-images-tooltip": "ka nantopitcikatek nakwe masinhikan",
+       "searchprofile-articles-tooltip": "Nantowapata $1",
+       "searchprofile-images-tooltip": "Ka nantopitcikatek nakwe masinahikan",
        "searchprofile-everything-tooltip": "Nantona nta kitciwe natosinahikanik (acit nte paskickwemakanik taci e ici aiarimotcikatek)",
-       "searchprofile-advanced-tooltip": "Nantona taci e ici actek  ka mihikok",
+       "searchprofile-advanced-tooltip": "Nantona taci e ici actek  ka mihakok",
        "search-result-size": "$1 ({{PLURAL:$2|1 itewin e masinatek|$2 itewina e masinateki}})",
-       "search-redirect": "(Taci e kiweckwemokok $1)",
+       "search-redirect": "(taci e kiweckwemakak $1)",
        "search-section": "(ke arimotcikatek $1)",
-       "search-suggest": "Ohwe kotcita e itasinatek:$1",
+       "search-category": "(ka ici arimotcikatek $1)",
+       "search-suggest": "Ohwe kotcita e itasinatek: $1",
+       "search-interwiki-more": "(erikam)",
        "searchall": "kaskina",
+       "search-showingresults": "{{PLURAL:$4|E ici miskatek <strong>$1</strong> nta neki<strong>$3</strong>|E ici miskatek <strong>$1 à $2</strong>nta neki<strong>$3</strong>}}",
+       "search-nonefound": "Nama miskwapahikatew ka nantowapahikatek.",
        "powersearch-legend": "Awocamec nantona",
        "powersearch-toggleall": "Kaskina",
        "preferences": "Kirowe",
-       "mypreferences": "Kirowe",
+       "mypreferences": "Mocak ka kinawapataman",
+       "prefs-rc": "Ka ki meckotcitakaniwoki",
+       "prefs-watchlist": "Ka masinateki",
        "saveprefs": "Kinokepitcikanik",
        "searchresultshead": "Nantokaskeritcikatek",
        "stub-threshold-disabled": "Manisinaha",
        "prefs-searchoptions": "Nantokaskeritcikatek",
+       "prefs-namespaces": "Ka ici masinasotcik",
+       "prefs-files": "Masinahikan",
        "youremail": "Matcetcicihikan:",
        "email": "Matcetcicihikan",
        "group-user": "Ka mitatc",
-       "right-writeapi": "Ohwe apitcita A.P.I meckoti aitotaman wikik",
-       "newuserlogpage": "E ici masinasotcik ka pitakesinohotosotcik",
+       "group-bot": "Meckotciparin",
+       "group-all": "(kaskina)",
+       "grouppage-bot": "{{ns:project}}:Meckotciparin",
+       "right-upload": "Natcipata masinahikan",
+       "right-writeapi": "Ohwe apitcita A.P.I meckotci aitotaman wikik",
+       "grant-createaccount": "Masinahotiso",
+       "newuserlogpage": "E ici masinasotcik ka pitakesinahotisotcik",
        "action-edit": "mecikotona owe",
+       "action-move": "orinkata owe masinhikan",
        "enhancedrc-history": "isparik",
-       "recentchanges": "Ka ki meckotcitakanioki",
+       "recentchanges": "Ka ki meckotcitakaniwoki",
        "recentchanges-legend": " Ka meckotcitain matcenikana",
        "recentchanges-summary": "Paskickwemikan ke ici nosanetain ka ki ocki meckotcisinihikatekai wikik.",
        "recentchanges-label-newpage": "Ocki paskickwemikan ki ocitamakan",
        "recentchanges-label-minor": "Apicic meckotciparin",
-       "recentchanges-label-bot": "Icike ki meckotciparin",
+       "recentchanges-label-bot": "Nicike ki meckotciparin",
        "recentchanges-label-unpatrolled": "Nama moci koski tapwatcikatew ka ki meckotcipirik",
        "recentchanges-label-plusminus": " Irikik e tacitcik bytes meckotcipirin e irikwak",
-       "recentchanges-legend-heading": "<strong>itekesinihikan:</strong>",
+       "recentchanges-legend-heading": "<strong>Itekesinihikan:</strong>",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (kirika kanawapata nohwe [[Special:NewPages|taci e ici masinihikatek ocki paskickwemakana]]).",
        "recentchanges-submit": "Wapata",
-       "rclistfrom": "Nokota ka ki mameckotcipirik nta e otci kitcipirik $2$3",
-       "rcshowhideminor": "$1 memantcic meckotcipirina",
+       "rcfilters-savedqueries-cancel-label": "Ponipata",
+       "rcfilters-filter-minor-label": "Memantcic meckotcipirino",
+       "rclistfrom": "Nokota ka ki mameckotciparik nta e otci kitciparik $2, $3",
+       "rcshowhideminor": "$1 memantcic meckotcipirino",
        "rcshowhideminor-show": "Wapata",
        "rcshowhideminor-hide": "Kata",
-       "rcshowhidebots": "$1 meckotciparini",
+       "rcshowhidebots": "$1 meckotciparin",
        "rcshowhidebots-show": "Wapata",
        "rcshowhidebots-hide": "Kata",
-       "rcshowhideliu": "$1 ka notcitatcik e ici masinohotisotcik",
+       "rcshowhideliu": "$1 ka notcitatcik e ici masinahotisotcik",
        "rcshowhideliu-show": "Wapata",
        "rcshowhideliu-hide": "Kata",
-       "rcshowhideanons": "$1 nama kiskeritakosiw ka ki masinahaki",
+       "rcshowhideanons": "$1 nama kiskeritakosiw ka ki masinahak",
        "rcshowhideanons-show": "Wapata",
        "rcshowhideanons-hide": "Kata",
        "rcshowhidepatr-show": "Wapata",
        "rcshowhidepatr-hide": "Kata",
-       "rcshowhidemine": "$1 ka meckotcipitaman",
+       "rcshowhidemine": "$1 ka meckotcipataman",
        "rcshowhidemine-show": "Wapata",
        "rcshowhidemine-hide": "Kata",
        "rcshowhidecategorization-show": "Wapata",
        "rcshowhidecategorization-hide": "Kata",
-       "rclinks": "Nokota nehi $1 ka ki mamitcit mameckotcipitcikatekai $2 nac nta  mamitcitc e kicikakai<br />$3.",
+       "rclinks": "Nokota nehi $1 ka ki mamitcit mameckotcipitcikatekai $2 nac nta  mamitcitc e kicikakai",
        "diff": "pitoc",
        "hist": "e itatisokatek",
        "hide": "Kata",
        "newpageletter": "O",
        "boteditletter": "p",
        "rc-change-size-new": "$1 {{PLURAL:$1|irik|irikw}} ke askowak",
-       "recentchangeslinked": "Nosineta masinhikana e mamowapiketik",
-       "recentchangeslinked-toolbox": "Nosineta masinhikana e mamowapiketik",
+       "recentchangeslinked": "Nosineta masinahikana e mamowapiketik",
+       "recentchangeslinked-feed": "Nosineta masinahikana e mamowapiketik",
+       "recentchangeslinked-toolbox": "Nosineta masinahikana e mamowapiketik",
        "recentchangeslinked-title": "E nosinehikatek paskickwemikana ka acotcictek\"$1\"",
+       "recentchangeslinked-summary": " Enkon ohwe ka ki meckotcisinihikateki paskickwemikana  e ici natcipitcikatek nta paskickemakanik kekwan ka arimotcikatek mia kekotc ma neki ka mamowisinasotcik taci ka ki ici aritisotcik mia.\nPaskickwemikina [[Special:Watchlist|masinihikan ka nakatcitain]] nehi<strong>makatewasinikan</strong>",
        "recentchangeslinked-page": "Icinikatamowin Ickwemakinikan:",
-       "upload": "Natcipota masinhikan",
+       "recentchangeslinked-to": "Kata nokok kaki kweskisinihikateki paskickwemikina ka acotcisinihikateki taci e ici ntowapekihikatek nohwe paskickwemakan patoc kweski e icinakok.",
+       "upload": "Natcipata masinahikan",
+       "uploadbtn": "Natcipata masinahikan",
        "filedesc": "Nosem",
        "fileuploadsummary": "Nosem:",
        "filesource": "Ite wetciparik:",
+       "upload-dialog-title": "Natcipata masinahikan",
        "upload-dialog-button-cancel": "Ponipita",
        "upload-dialog-button-save": "Kinokepitcikanik",
        "upload-form-label-infoform-description": "E witcikemakak",
        "upload-form-label-infoform-categories": "Nakwe tipanictasinihikan",
        "upload-form-label-infoform-date": "Tatokonakisitc",
-       "license-header": "orocowatcikan",
+       "license": "Orocowatcikan:",
+       "license-header": "Orocowatcikan",
        "listfiles-delete": "wepina",
        "imgfile": "masinhikan",
        "listfiles": "Ka ici tapitik onimiskimasinhikan",
        "filehist": "E itatisokemakak masinahikaniwoc",
        "filehist-help": "Ota ici nta makona e tatokonikisitc acitc e tato tipahikaneak kitci wapataman apitc ka masinatek.",
        "filehist-current": "mekwatc",
-       "filehist-datetime": "Tatokonakisitc acitc tato tipahikaneak",
-       "filehist-thumb": "Masinasonic",
+       "filehist-datetime": "E tatokonakisitc acitc e tato tipahikaneak",
+       "filehist-thumb": "Masinasowinicic",
        "filehist-thumbtext": "Masinasowinicic apitc ka meckotcipatakaniwitc $1",
        "filehist-user": "Ka mitatc",
        "filehist-dimensions": "E iskwaki",
        "filehist-comment": "E iteritaman",
        "imagelinks": "Ke irapatak masinahikaniwoc",
+       "linkstoimage": "{{PLURAL:$1|minawatc ka apatak paskickwemakan |Nehi $1 minawatc ka apataki paskickemakanik}} nohwe mawtockwemakan :",
        "nolinkstoimage": "Nama tekaci apatan masinahikaniwoc.",
-       "sharedupload-desc-here": "Owe masinhikaniwoc ote otciparin $1. Matci kotakik wec kita apitan.\nOta masinateriw $2 e irapitak.",
+       "sharedupload-desc-here": "Ohwe masinahikaniwoc ote otciparin $1. Matci kotakahik wec kata apatan.\nOta masinateriw $2 e irapatanik.",
        "upload-disallowed-here": "Nama actew  kata meckotanaman.",
        "filedelete": "Wepina $1",
        "filedelete-submit": "Wepina",
+       "mimesearch": "MIME nantona",
        "randompage": "Nakowepitaman",
        "randomincategory-category": "Ka ici arimotcikatek:",
        "randomincategory-submit": "Tapowata",
        "brokenredirects-delete": "wepina",
        "withoutinterwiki-submit": "Wapata",
        "nbytes": "$1 {{PLURAL:$1|irik}}",
+       "nmembers": "$1 {{PLURAL:$1|witciwetc|witciwetcik}}",
        "prefixindex-submit": "Wapata",
        "protectedpages-page": "Masinhikan",
        "newpages": "Ocki matcecikinakanik",
        "newpages-submit": "Wapata",
        "newpages-username": "Icinikasowin:",
+       "movethispage": "Orinkata owe masinhikan",
+       "pager-older-n": "{{PLURAL:$1|1 mawtci weckat|$1 mawtci weckat}}",
        "booksources": "E otciparik",
        "booksources-search-legend": "Nantowapata nta kotakahi wapatcikana",
        "booksources-search": "Nanto kiskeritcikatek",
        "logeventslist-submit": "Wapata",
        "checkbox-all": "Kaskina",
        "allpages": "Kaskina paskickwemikana",
+       "nextpage": "minawa masinahikan ($1)",
        "allarticles": "Kaskina paskickwemikana",
-       "allpagessubmit": "Tapowata",
+       "allpagessubmit": "Tapwata",
        "categories": "Ka ici arimotcikateki",
        "categories-submit": "Wapata",
        "sp-deletedcontributions-contribs": "E ki witcihehin",
        "listusers-submit": "Wapata",
        "listgrouprights-namespaceprotection-namespace": "Ka ici masinasotcik",
        "emailusername": "Icinikasowin:",
+       "emailmessage": "E itatcitcikatek:",
        "watchlist": "Ka masinateki",
        "mywatchlist": "Ka masinateki",
        "watch": "Nanakatcita",
+       "watchthispage": "Wi nosinetaine ohwe masinahikan",
        "watchlist-hide": "Kata",
        "watchlist-submit": "Wapata",
+       "wlshowhidebots": "meckotciparin",
+       "wlshowhideliu": "ka notcitatcik e ici masinahotisotcik",
        "wlshowhideanons": "nama kiskeritakosiw ka ki masinahak",
        "enotif_anon_editor": "nama kiskeritakosiw ka ki masinahak $1",
        "delete-confirm": "Wepina \"$1\"",
        "delete-legend": "Wepina",
        "historyaction-submit": "Wapata",
        "dellogpage": " Nesitc ka wepinikatek kanaweritcikan",
-       "rollbacklink": "e maninikatek",
+       "deletionlog": "nesitc ka wepinikatek kanaweritcikan",
+       "rollbacklink": "e maninakatek",
+       "rollbacklinkcount": "nesitc wepina $1 {{PLURAL:$1|kweskisinikan|kweskisinihikana}}",
        "protectlogpage": "Nanakatisiwina wapatcikan",
+       "restriction-type": "Niheritam:",
+       "pagesize": "(irik)",
        "restriction-edit": "Meckotcita",
+       "restriction-move": "Erikam",
+       "restriction-create": "Ocita",
        "undeleteviewlink": "tapwatcike",
        "undelete-search-submit": "Nantokaskeritcikatek",
        "undelete-show-file-submit": "Ehe",
        "namespace": "Ka ici masinasotcik:",
-       "invert": "koweckisinaha nohwe",
+       "invert": "kweskisinaha nohwe",
+       "tooltip-invert": "Tcikisinaha taci e kikesinatek kata katcictain ka ki  koski kweskisihihikateki paskickwemikanan taci ka masinateki ke ki actakaniwoki.",
        "namespace_association": "Taci e mamowisinasonaniwok",
+       "tooltip-namespace_association": "Tcikisinaha nohwe kikesinahikan kata acotcisinatek kirika taci e mamowisinasinaniwok e aimihitonaniwok kekotc kekwan,taci ka ki orapitcikateki icinikatewina",
        "blanknamespace": "(Ka ici ocitakiniwok)",
-       "mycontris": "Wi kipitanikeine",
+       "contributions": "Wir ka ki witcihietc {{GENDER:$1|User}}",
+       "mycontris": "Witcihewin",
        "anoncontribs": "E ki witcihehin",
        "uctop": "(mekwatc)",
        "month": "Anotc pisimw ka akotcinitc (nac nte nictam):",
+       "year": "Taci e ici matce tato piponikak(acit nictam):",
+       "sp-contributions-blocklog": "wapatcikan taci e nanikactek",
+       "sp-contributions-logs": "pamikickwepitcikana masinihikana",
        "sp-contributions-talk": "ka ici arimowaniok",
        "sp-contributions-submit": "Nantokaskeritcikatek",
-       "whatlinkshere": "Kaskina ickwemikina ka witci acteki",
-       "whatlinkshere-title": "Masinhikan nte mia ka ici tapitik \"$1\"",
-       "whatlinkshere-page": "Masinhikan:",
+       "whatlinkshere": "Kaskina ickwemakina ka witci acteki",
+       "whatlinkshere-title": "Masinahikan nte mia ka ici tapitik \"$1\"",
+       "whatlinkshere-page": "Masinahikan:",
        "linkshere": "Masinhikan ka ici tapitik <strong>[[:$1]]</strong>:",
        "isredirect": "masinhikan ke kweskiticohemikok",
        "istemplate": "ka ki acotcipitcikatek",
        "whatlinkshere-prev": "{{PLURAL:$1|nictamictew|nictamictewa $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|minawa|minawa $1}}",
        "whatlinkshere-links": "← ka patiki",
-       "whatlinkshere-hideredirs": "$1 itapihikina",
+       "whatlinkshere-hideredirs": "$1 itapahikana",
        "whatlinkshere-hidetrans": "$1 pitcititawina",
        "whatlinkshere-hidelinks": "$1 ka patiki",
+       "whatlinkshere-hideimages": "$1 ka ici tapitik onimiskimasinahikan",
        "whatlinkshere-filters": "cikopesinikan",
        "whatlinkshere-submit": "Tapowata",
+       "autoblocklist-submit": "Nantokaskeritcikatek",
        "ipblocklist-submit": "Nantokaskeritcikatek",
        "blocklink": "nokipita",
-       "contribslink": "wi kipitanikeine",
+       "contribslink": "Kaki witcihehin",
+       "blocklogpage": "Wapatcikan taci e nanikactek",
+       "move-page": "Erikam $1",
+       "movelogpage": "Tipatcimosanihikan ka ki meckotcicinikatcikateki",
        "movesubpagetalktext": "Neta ka arimotcikatek tipatcimosanikanik $1 {{PLURAL:$1|Nota paskickwemakan|Nota paskickwemakana}} kita masinatewa ota.",
-       "export": "Matcetacaha masinhikana",
+       "export": "Matcetciciha masinahikana",
+       "export-submit": "Matcetciciha",
        "allmessages-filter-all": "Kaskina",
        "allmessages-filter-submit": "Tapowata",
        "thumbnail-more": "Micata",
        "tooltip-pt-preferences": "{{GENDER:|Kir}} kirowe ka nahinaman",
        "tooltip-pt-watchlist": "Enko ohwi ka masinateki kaskina ka ki meckotcisinahikateki",
        "tooltip-pt-mycontris": "Masinatew ota {{GENDER:|kir}} ka ki ici witcihiweiin",
-       "tooltip-pt-login": "Arimatc kika witen e icikasoin: nama tatakatc kitci kiskeritakosiin.",
+       "tooltip-pt-login": "Arimatc ki ka witen e icikasoin: nama tatakatc kitci kiskeritakosiin.",
        "tooltip-pt-logout": "Piskeapikenakan",
-       "tooltip-pt-createaccount": "A arimatc kika ocitan kitci cenaman: nama aric tatakatc otcitakotc.",
-       "tooltip-ca-talk": "Kecpin wi aimihate awik aniherie otci",
-       "tooltip-ca-edit": "Mecikotona owe",
-       "tooltip-ca-addsection": "Kitcipirin ocki aimihitosinihikan",
-       "tooltip-ca-viewsource": "Nakataweritakon paskickwemikan\n Taci e otcipirik",
-       "tooltip-ca-history": "Nictam kaki itasinahikatek",
+       "tooltip-pt-createaccount": "A arimatc ki ka ocitan kitci cenaman: nama aric tatakatc otcitakotc.",
+       "tooltip-ca-talk": "Kecpin wi aimihate awik aniheriw otci",
+       "tooltip-ca-edit": "Meckotana ohwe",
+       "tooltip-ca-addsection": "Kitcipirin ocki aimihitosinahikan",
+       "tooltip-ca-viewsource": "Nakataweritakon paskickwemikan\nTaci e otcipirik",
+       "tooltip-ca-history": "Nictam ka ki itasinahikatek",
        "tooltip-ca-move": "Orinkata owe masinhikan",
        "tooltip-ca-watch": "E ici nosinehaman ici acotcicta paskickwemakan",
-       "tooltip-search": "Nantokaskeritcikatek {{SITENAME}}",
-       "tooltip-search-go": "Ekota neta icakw kepitc tanokwen itewin",
+       "tooltip-search": "Nanto kiskeritcikatek {{SITENAME}}",
+       "tooltip-search-go": "Ekota neta icakw ke apitc tanokwen itewin",
        "tooltip-search-fulltext": "Nantona paskickwemakana atisokesinahikanik",
        "tooltip-p-logo": "Nictam ka nokok",
        "tooltip-n-mainpage": "Nictam ka nokok",
        "tooltip-n-mainpage-description": "Nictam ka nokok",
-       "tooltip-n-portal": "Anihe otci ka tacikatek mia keki totaman tan nte ke otinaman ke kictapatak",
-       "tooltip-n-currentevents": "Ke ici miskaman ka wi nta kiseritaman",
-       "tooltip-n-recentchanges": "Ka ki mecikitonikatek",
-       "tooltip-n-randompage": "Kaskina kekowan",
-       "tooltip-n-help": "Witcihiewin",
-       "tooltip-t-whatlinkshere": "Ka masinateti ite e ici itohikemakak",
-       "tooltip-t-recentchangeslinked": "Ka masinateki anihi kaki atcitakaniwok",
+       "tooltip-n-portal": "Anihe otci ka tacikatek mia ke ki totaman tante ke otinaman ke kictapatak",
+       "tooltip-n-currentevents": "Ke ici miskaman ka wi nta kiskeritaman",
+       "tooltip-n-recentchanges": "Ka ki meckotonikatek",
+       "tooltip-n-randompage": "Kaskina kekwan",
+       "tooltip-n-help": "Witcihiwewin",
+       "tooltip-t-whatlinkshere": "Ka masinateki ite e ici itohikemakak",
+       "tooltip-t-recentchangeslinked": "Ka masinateki anihi ka ki atcitakaniwok",
        "tooltip-feed-atom": "Atom itapihikan ohwe otci paskickwemikan",
        "tooltip-t-contributions": "Ka masinasotcik ka witcihiwetcik{{GENDER:$1|ka ntotcitatc}}",
-       "tooltip-t-upload": "Matceticiha masinhikan",
-       "tooltip-t-specialpages": "Kotahaki masinhikana",
+       "tooltip-t-upload": "Matceticiha masinahikan",
+       "tooltip-t-specialpages": "Kotakahi masinahikana",
        "tooltip-t-print": "Matci keki orowipitaman kitci masinatekipan",
        "tooltip-t-permalink": "Taci mia e otcitik",
-       "tooltip-ca-nstab-main": "Ki nawapta ka masinateki",
-       "tooltip-ca-nstab-user": "Kitci wapitaman nehe masinhikan ka apitak",
-       "tooltip-ca-nstab-special": "Ohowe kitcickwemakinikan,nama actew kitci meckotcitaparik.",
+       "tooltip-ca-nstab-main": "Kanawapata ka masinateki",
+       "tooltip-ca-nstab-user": "Kitci wapataman nihe masinahikan ka apatak",
+       "tooltip-ca-nstab-special": "Ohwe kitcickwemakinikan,nama actew kitci meckotciparik.",
        "tooltip-ca-nstab-project": "Kitci wapataman nehe masinihikan ocki otamirowinik otci",
-       "tooltip-ca-nstab-image": "Kitci wapitaman nehe masinhikan",
+       "tooltip-ca-nstab-image": "Kitci wapataman nihe masinahikan",
        "tooltip-ca-nstab-template": "kanawapata orictawisinihikan",
-       "tooltip-ca-nstab-category": "Kitci wapitaman nehe mia ka ici arimotcikatek",
+       "tooltip-ca-nstab-category": "Kitci wapataman nihe mia ka ici arimotcikatek",
        "tooltip-save": "Kinokepita ka meckotcisinihaman",
-       "tooltip-preview": "Mikwetc pitaman e kanawapataman kaki meckotcitain, e pwamici actain pamikicikwepitcikanik.",
+       "tooltip-preview": "Mikwetc pitaman e kanawapataman ka ki meckotcitain, epwomici actain pamikicikwepitcikanik.",
        "tooltip-diff": "Nokota nohwe ka ki meckotcisinihaham  masinihikanik",
        "tooltip-rollback": "\"Nakaha\" nikanikatew kotc peikwa e makohotc nohwe makonakan kaskina ka ki meckotcisinihikateki nta paskickwemakanik nohwe ka ki orisinihiketc mamitcit",
-       "tooltip-undo": "\"Nama ntowatc\"nihictamikan nictam meckotcisinihikan minawatc cepirihomikon taci e ici meckotcisinihikaniwok ke ici kanawapataman.Matci kaie ki ka acotcitan kekwan espirik  nta nosem masinihikanik.",
+       "tooltip-undo": "\"Nama ntowatc\" nihictamikan nictam meckotcisinihikan minawatc cepirihomikon taci e ici meckotcisinihikaniwok ke ici kanawapataman.Matci kaie ki ka acotcitan kekwan espirik  nta nosem masinihikanik.",
        "tooltip-summary": "Acta e arimotaman masinihikan apicic",
        "simpleantispam-label": "Ntokiskeritcike piciriwe masinihikan \n\nNte nota <strong>nama kekwan</strong> masinaha ota!",
        "pageinfo-toolboxlink": "Tipatcimo masinahikan",
        "pageinfo-contentpage-yes": "Ehe",
        "pageinfo-protect-cascading-yes": "Ehe",
        "confirm-markpatrolled-button": "OK",
+       "previousdiff": "Nictam meckotcisinihikan",
        "nextdiff": "Tec meckotcisinihikan",
+       "file-info-size": "$1x$2pixels, e irikweckamikak mawtockwemikan:$3nohwe MIME:$4",
+       "file-nohires": "Nohwe e irikwactek nama takon kirowe e sokactek.",
+       "svg-long-desc": "SVG kinokewoc, erikokwactepirik $1 × $2 kawactecik, kinokewoc ehitakok: $3",
        "show-big-image": "E otciparik masinahikaniwoc",
-       "show-big-image-preview": "E irikweckwemikisitc$1",
+       "show-big-image-preview": "E irikweckwemakisitc$1",
+       "show-big-image-other": "Kotak {{PLURAL:$2|erikokowactepirik|erikokowactepiriki}}: $1.",
        "show-big-image-size": "$1 x $2 pixels",
        "ilsubmit": "Nantokaskeritcikatek",
        "monday-at": "ockorkananiwon $1",
        "saturday-at": "mari kicikaw $1",
        "sunday-at": "manactakaniwon $1",
        "metadata": "E ici tipatcitcikatek",
+       "metadata-help": "Nohwe mawtockwemikan ekota acteki awacimec tipatcimowina,nohwe masinapiskipitcikan ka ki actakwen kekotc otitapiskipitcikan ka ki ocitarikwen. Kecpin ka meckotisinihikatekwen nictam ka icinakok, nama kaskina kata nokona ka wi icinakotakaniwok nohwe masinasowin.",
        "metadata-fields": "Nohwe e aitotwakaniwitc masinasowin nta kata ici actew paskickwemakanik ka ici tipatcimonaniwok ickwa atciwonikateke nta kitci tipatcimoniwocik. Minawatc kotakahi kata katcictakaniwona.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-orientation": "Itactamictew",
+       "exif-xresolution": "E irikwactepirik mitaskosinihikan",
+       "exif-yresolution": "E irikwastepirik tcimiskisinihikan",
        "exif-datetime": "Apitc ka meckotcitakaniwok",
-       "exif-make": "Ka ki ocitatatc masinapiskihikaniw",
-       "exif-model": "E icinakok masinapiskohewin",
+       "exif-make": "Ka ki ocitatatc masinapiskahikaniw",
+       "exif-model": "E icinakok masinapiskohowewin",
        "exif-software": "Tipatcimocikimiwesinikan ka totcikatek",
+       "exif-artist": "Kaki masihiketc",
        "exif-exifversion": "Exif ka itasinatek",
-       "exif-colorspace": "Icipekihikanik",
-       "exif-datetimeoriginal": "E tato piponikak nictam ka masinohaniwok",
+       "exif-colorspace": "Icipekahikanik",
+       "exif-datetimeoriginal": "E tato piponikak nictam ka masinahikaniwok",
        "exif-datetimedigitized": "e tato konekisit pisimw ka capwapiskipitcikatek",
        "exif-source": "Ite wetciparik",
        "exif-iimcategory": "Ka ici arimotcikatek",
        "exif-saturation-0": "Ekote mia",
        "exif-sharpness-0": "Ekote mia",
        "exif-dc-date": "Tatokonakisitc",
+       "exif-urgency-normal": "Ekote mia ($1)",
        "namespacesall": "kaskina",
        "monthsall": "kaskina",
        "confirm_purge_button": "OK",
        "confirm-unwatch-button": "OK",
        "confirm-rollback-button": "OK",
        "quotation-marks": "\"$1\"",
+       "imgmultipagenext": "minawa masinahikan →",
        "imgmultigo": "Tapowata!",
        "img-lang-go": "Tapowata",
+       "table_pager_next": "Minawa masinahikan",
        "table_pager_limit_submit": "Tapowata",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|ka ici arimowaniwok]])",
+       "version-specialpages": "Ka ici wectakaniwok",
        "version-ext-colheader-description": "E witcikemakak",
+       "version-ext-colheader-credits": "Kaki masihiketc",
        "version-libraries-description": "E witcikemakak",
+       "version-libraries-authors": "Kaki masihiketc",
        "redirect-submit": "Tapowata",
        "fileduplicatesearch-submit": "Nantokaskeritcikatek",
-       "specialpages": "Ka ici wectakaniok",
+       "specialpages": "Ka ici wectakaniwok",
+       "specialpages-group-login": "Posi / masinahotiso",
+       "tag-filter": "Nihipita nehi[[Special:Tags|balises]] :",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Kicawatcikanicic|Kicawatcikanica}}]] : $2)",
        "tags-source-header": "Ite wetciparik",
        "tags-active-yes": "Ehe",
        "htmlform-yes": "Ehe",
        "htmlform-cloner-delete": "Manina",
        "logentry-delete-delete": "$1 {{GENDER:$2|ki maninam}} $3 ka arimotcikaterik",
+       "logentry-move-move": "$1 {{GENDER:$2| ki meckotcictaw}} paskickwemakan $3 nte itekera $4",
        "logentry-newusers-create": "Anahwe $1 aci {{GENDER:$2|ickwa ocitakiniwon}}",
+       "logentry-upload-upload": "$1 {{GENDER:$2|ki natapaham}} $3",
        "feedback-cancel": "Ponipita",
+       "feedback-message": "E itatcitcikatek:",
        "searchsuggest-search": "Nantona {{SITENAME}}",
        "expand_templates_ok": "OK",
        "pagelang-name": "Masinhikan",
index c335429..17cf303 100644 (file)
        "password-change-forbidden": "Гьаб викиялда пароль хисизабун бажаруларо дуда.",
        "login": "Жаниве лъугьине",
        "nav-login-createaccount": "Жаниве лъугьине / аккаунт гьабизе",
-       "userlogin": "Жаниве лъугьине / аккаунт гьабизе",
-       "userloginnocreate": "Жаниве лъугьине",
        "logout": "КъватӀиве лъугьине",
        "userlogout": "КъватӀиве лъугьине",
        "notloggedin": "Мун жаниве лъугьун гьечӀо",
        "userlogin-noaccount": "Дур аккаунт гьечӀебищ?",
        "userlogin-joinproject": "Проекталда гӀахьаллъизе",
-       "nologin": "Дур аккаунт гьечӀебищ? $1.",
-       "nologinlink": "Аккаунт гьабизе",
        "createaccount": "Аккаунт гьабизе",
-       "gotaccount": "Дур аккаунт бугебищ? $1.",
-       "gotaccountlink": "Жаниве лъугьине",
-       "userlogin-resetlink": "Жаниве лъугьине рихьизарулел баяналищ кIочарал?",
        "userlogin-resetpassword-link": "Паролищ кIочараб?",
        "userlogin-helplink2": "Жаниве лъугьине кумек",
        "userlogin-loggedin": "Мун жаниве лъугьана {{GENDER:$1|$1}} хIисабалда.\nГъоркьехун бугеб форма хIалтIизабе, цоги цIаралда гъоркь жаниве лъугьине.",
        "createacct-email-ph": "Дурго электронияб почтаялъул адрес хъвай",
        "createacct-another-email-ph": "Электронияб почтаялъул адрес хъвай",
        "createacct-realname": "Унго-унгояб цIар (чара гьечIого къваригIунеб гуро)",
-       "createaccountreason": "ГIилла:",
        "createacct-reason": "ГIилла",
        "createacct-reason-ph": "Щай дуца цогияб аккаунт гIуцIулеб бугеб",
        "createacct-submit": "Аккаунт гIуцIизе",
        "rcshowhidemine-show": "Бихьизабизе",
        "rcshowhidemine-hide": "Бахчизе",
        "rcshowhidecategorization": "Гьумерал категориязде бикьи $1",
-       "rclinks": "$2 къояйида жаниб гьабураб, ахирисеб $1 хиса-баси бихьизабизе<br />$3",
+       "rclinks": "$2 къояйида жаниб гьабураб, ахирисеб $1 хиса-баси бихьизабизе",
        "diff": "батӀалъи",
        "hist": "тарих",
        "hide": "Бахчизе",
index 9e40aca..3dbda51 100644 (file)
        "externaldberror": "या तो प्रमाणिकरण डाटाबेस में त्रुटि होई गवा है या फिर आप कय आपन बहरेक खाता अपडेट करेक अनुमति नाई है।",
        "login": "लॉग इन",
        "nav-login-createaccount": "लाग इन / खाता खोला जाय",
-       "userlogin": "लाग इन / खाता खोला जाय",
-       "userloginnocreate": "लॉग इन",
        "logout": "बहरे निकरा जाय",
        "userlogout": "बहरे निकरा जाय",
        "notloggedin": "लॉग इन नाइ करा गा है",
        "userlogin-noaccount": "खाता नाइ है?",
        "userlogin-joinproject": "{{SITENAME}} से जुडव",
-       "nologin": "का आप सदस्यता नाई लीहे हव? '''$1'''।",
-       "nologinlink": "नवा खाता बनावा जाय",
        "createaccount": "खाता बनावा जाय",
-       "gotaccount": "पहिले से आप कय खाता है? '''$1''' करा जाय।",
-       "gotaccountlink": "लॉग इन",
-       "userlogin-resetlink": "आपन प्रवेश जानकारी भूलाई गवा गय?",
        "userlogin-resetpassword-link": "आपन गुप्त कुंजी भूलाई गवा गय?",
        "userlogin-helplink2": "लॉग इन करे में सहायता",
        "userlogin-loggedin": "आप {{GENDER:$1|$1}} कय रूप में पहीलवे से लॉग्ड इन होवा जात है।\nकवनो अउर सदस्य कय रूप में लॉग इन करय खरतिन निचे दिहा फ़ॉर्म कय प्रयोग करा जाय।",
        "createacct-another-email-ph": "ईमेल ठाँव दिहा जाय",
        "createaccountmail": "एकठु अस्थायी मनलागा (रैंडम) गुप्त कुंजी चुना जाय अउर ओका निर्दिष्ट ई-मेल ठहर पे भेजा जाय",
        "createacct-realname": "असली नावँ (वैकल्पिक)",
-       "createaccountreason": "कारण:",
        "createacct-reason": "कारण",
        "createacct-reason-ph": "आप दुसर खाता काहे बनावा जात है",
        "createacct-submit": "आपन खाता बनावा जाय",
        "preview": "झलक",
        "showpreview": "झलक देखावा जाय",
        "showdiff": "बदलाव देखावा जाय",
-       "blankarticle": "<strong>चेतावनी:</strong>आप कय बनावा पन्ना खाली अहै ।\nअगर आप \"{{int:savearticle}}\" दबावा जाई तव,बिना कवनो पाठ कय पन्ना बनि जाई ।",
+       "blankarticle": "<strong>चेतावनी:</strong>आप कय बनावा पन्ना खाली अहै ।\nअगर आप \"$1\" दबावा जाई तव,बिना कवनो पाठ कय पन्ना बनि जाई ।",
        "anoneditwarning": "<strong>चेतावनी:</strong>आप लाग इन नाई करा गा है ।जब आप सम्पादन करा जाई तव आप कय IP address सब कय बिलगाइ। जब आप <strong>[$1 log in]</strong> या <strong>[$2 create an account]</strong> करा जाइ तब आप कय सम्पादन आप कय  सदस्यनाँव से जुडी जाई अव आप कय अउर सुविधओ मिली।",
        "anonpreviewwarning": "''आप लॉग्ड नाई होआ जात है। पन्ना सहेजे पे आप कय आइ॰पी ठाँव इ पन्ना कय इतिहास में दर्ज कइ जाई।''",
-       "missingsummary": "'''ध्यान दिहा जाय:''' आप  संपादन सारांश नाइ दिहा गा है।\nअगर आप दुबारा \"{{int:savearticle}}\" पे क्लिक करा जाई तव आप कय संपादन बिना सारांश कय सहेज जाई।",
-       "selfredirect": "<strong>चेतावनी:</strong> आप इ पन्नवा कय इहि से निर्देश करय जावा जात है.\nआप या तव गलत लक्ष्य पे पुनर्निर्देश करा गा है, या तव गलत पन्ना संपादन करा जात है ।\nअगर आप \"{{int:savearticle}}\" पे फिरसे क्लिक करा जाइ तो इ पुनर्निर्देश बनि जाइ ।",
+       "missingsummary": "'''ध्यान दिहा जाय:''' आप  संपादन सारांश नाइ दिहा गा है।\nअगर आप दुबारा \"$1\" पे क्लिक करा जाई तव आप कय संपादन बिना सारांश कय सहेज जाई।",
+       "selfredirect": "<strong>चेतावनी:</strong> आप इ पन्नवा कय इहि से निर्देश करय जावा जात है.\nआप या तव गलत लक्ष्य पे पुनर्निर्देश करा गा है, या तव गलत पन्ना संपादन करा जात है ।\nअगर आप \"$1\" पे फिरसे क्लिक करा जाइ तो इ पुनर्निर्देश बनि जाइ ।",
        "missingcommenttext": "कृपया नीचे टिप्पणी दिहा जाय।",
-       "missingcommentheader": "'''ध्यान दिहा जाय:''' आप इ टिप्पणी कय कवनो शिर्षक नाइ दिहा गा है।\nअगर आप दुबारा \"{{int:savearticle}}\" पे क्लिक करा जाई तव आप कय बदलाव बिना शिर्षक कय सहेज जाई।",
+       "missingcommentheader": "'''ध्यान दिहा जाय:''' आप इ टिप्पणी कय कवनो शिर्षक नाइ दिहा गा है।\nअगर आप दुबारा \"$1\" पे क्लिक करा जाई तव आप कय बदलाव बिना शिर्षक कय सहेज जाई।",
        "summary-preview": "सारांश कय झलक:",
        "subject-preview": "विषय/शीर्षक कय झलक:",
        "previewerrortext": "आपके परिवर्तनों का पूर्वावलोकन करने का प्रयास करते समय एक त्रुटि हुई।",
        "editingsection": "$1 सम्पादन करा जात है (अनुभाग)",
        "editingcomment": "$1 सम्पादन करा जात है (नँवा अनुभाग)",
        "editconflict": "संपादन अंतर्विरोध: $1",
-       "explainconflict": "आप कय द्वारा सम्पादन शुरू करय कय बाद से कवनो दुसर मनई इ पन्ना में बदलाव करे हैं।\nऊपरी पाठ सम्पादन क्षेत्र में अभिन कय पाठ देखाइ गा है।\nनिचला क्षेत्र में आप कय बदलाव देखाइ गा है।\nआप कय आपन बदलाव अबहिन कय पाठ में अपने से एकट्ठा करेक परि।\nआपके \"{{int:savearticle}}\" पर क्लिक करने पर '''केवल''' ऊपरी क्षेत्र में दिखने वाला पाठ संजोया जायेगा।",
+       "explainconflict": "आप कय द्वारा सम्पादन शुरू करय कय बाद से कवनो दुसर मनई इ पन्ना में बदलाव करे हैं।\nऊपरी पाठ सम्पादन क्षेत्र में अभिन कय पाठ देखाइ गा है।\nनिचला क्षेत्र में आप कय बदलाव देखाइ गा है।\nआप कय आपन बदलाव अबहिन कय पाठ में अपने से एकट्ठा करेक परि।\nआपके \"$1\" पर क्लिक करने पर '''केवल''' ऊपरी क्षेत्र में दिखने वाला पाठ संजोया जायेगा।",
        "yourtext": "आप कय पाठ",
        "storedversion": "सहेज़ल अवतरण",
        "nonunicodebrowser": "'''सावधान: आप कय ब्राउज़र युनिकोड कय स्वीकार नाइ करत है।'''\nआप से बढिया संपादन होएक लिये: ग़ैर-ASCII कैरैक्टर षट्‍पदी कोड (hexadecimal) में देखाइ जाई।",
        "right-editsemiprotected": "अइसन पन्नन् कय सम्पादन करा जाय जवने कय सुरक्षा स्तर होय \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "पन्ना कय सामग्री नमुना कय बदला जाय",
        "right-editinterface": "सॉफ़्टवेयर इंटरफ़ेस सम्पादित करा जाय",
-       "right-editusercssjs": "अउर सदस्यन् कय सी॰एस॰एस अव जावास्क्रिप्ट पन्ना कय सम्पादन करा जाय",
        "right-editusercss": "अउर सदस्यन् कय सी॰एस॰एस पन्ना सम्पादन करा जाय",
        "right-edituserjs": "अउर सदस्यन् कय जावास्क्रिप्ट पन्ना कय सम्पादन करा जाय",
        "right-editmyusercss": "आपन सदस्य स्तर कय सी॰एस॰एस फ़ाइल कय सम्पादन करा जाय",
        "rcshowhidemine": "हमार बदलाव $1",
        "rcshowhidemine-show": "देखावा जाय",
        "rcshowhidemine-hide": "लुकुआवा जाय",
-       "rclinks": "पिछला $2 दिन में करल $1 बदलाव देखावा जाय<br />$3",
+       "rclinks": "पिछला $2 दिन में करल $1 बदलाव देखावा जाय",
        "diff": "अंतर",
        "hist": "इतिहास",
        "hide": "लुकुआवा जाय",
        "undeleteviewlink": "देखा जाय",
        "undeleteinvert": "चुनाव उल्टा करा जाय",
        "undeletecomment": "कारण:",
-       "undeletedrevisions": "{{PLURAL:$1|अवतरण पहिले जइसन कै गय}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 अवतरण|$1 अवतरण}} औ {{PLURAL:$2|1 फ़ाइल}} पहिले जइसन कै गय",
-       "undeletedfiles": "{{PLURAL:$1|1 फ़ाइल|$1 फ़ाइल}} पहिले जइसन कै गय",
        "cannotundelete": "पहिले जइसन नाइ कै मिला : $1",
        "undeletedpage": "'''$1 कय पहिले जइसन कै गए'''\n\nहालिए में हटावल अव पुनर्स्थापित करल पन्नन् कय जानकारी कय खर्तीन [[Special:Log/delete|हटावे कय लॉग]] देखा जाय।",
        "undelete-header": "हालिए में हटावल पन्ना द़ेखयक खर्तीन [[Special:Log/delete|हटावे कय लॉग]] देखा जाय।",
        "logentry-rights-autopromote": "$1 के सदस्य समूह स्वतः $4 से बदलकर $5 {{GENDER:$2|किये}} गए",
        "logentry-upload-upload": "$1 {{GENDER:$2|ने}} $3 अपलोड किया",
        "rightsnone": "(कउनो नाहीं)",
-       "revdelete-summary": "संपादन सारांश",
        "feedback-adding": "पृष्ठ पे प्रतिक्रिया जोडत है ...",
        "feedback-back": "पीछे",
        "feedback-bugcheck": "शानदार! जांच ले कहीं ये [ $1 known bugs] पहले से ही न हो ।",
index 95397f5..c5b80ae 100644 (file)
        "anontalk": "Müzakirə",
        "navigation": "Naviqasiya",
        "and": "&#32;və",
-       "qbfind": "Tap",
-       "qbbrowse": "Gözdən keçir",
-       "qbedit": "Redaktə",
-       "qbpageoptions": "Bu səhifə",
-       "qbmyoptions": "Mənim səhifələrim",
        "faq": "TSS",
-       "faqpage": "Project:TSS",
        "actions": "Hərəkətlər",
        "namespaces": "Adlar fəzası",
        "variants": "Variantlar",
        "edit-local": "Lokal izahı redaktə et",
        "create": "Yarat",
        "create-local": "Lokal izah əlavə et",
-       "editthispage": "Bu səhifəni redaktə et",
-       "create-this-page": "Bu səhifəni yarat",
        "delete": "Sil",
-       "deletethispage": "Bu səhifəni sil",
-       "undeletethispage": "Bu səhifənin silmə əməliyyatını geri qaytar",
        "undelete_short": "$1 {{PLURAL:$1|dəyişikliyi|dəyişiklikləri}} bərpa et",
        "viewdeleted_short": "{{PLURAL:$1|bir silinmiş redaktəyə|$1 silinmiş redaktəyə}}",
        "protect": "Mühafizə et",
        "protect_change": "dəyiş",
-       "protectthispage": "Bu səhifəni mühafizə et",
        "unprotect": "Mühafizəni kənarlaşdır",
-       "unprotectthispage": "Bu səhifənin mühafizəsini kənarlaşdır",
        "newpage": "Yeni səhifə",
-       "talkpage": "Bu səhifəni müzakirə et",
        "talkpagelinktext": "Müzakirə",
        "specialpage": "Xüsusi səhifə",
        "personaltools": "Şəxsi alətlər",
-       "articlepage": "Məqaləni nəzərdən keçir",
        "talk": "Müzakirə",
        "views": "Görünüş",
        "toolbox": "Alətlər",
-       "userpage": "İstifadəçi səhifəsini göstər",
-       "projectpage": "Layihə səhifəsini göstər",
        "imagepage": "Fayl səhifəsini göstər",
        "mediawikipage": "Mesaj səhifəsini göstər",
        "templatepage": "Şablon səhifəsini göstər",
        "password-login-forbidden": "Bu istifadəçi adından və paroldan istifadə qadağan olunub.",
        "mailmypassword": "E-mail ilə yeni parol göndər",
        "passwordremindertitle": "{{SITENAME}} parol xatırladıcı",
-       "passwordremindertext": "Birisi (yəqin ki siz, $1 IP ünvanından) {{SITENAME}} ($4) üçün yeni bir parol göndərilməsini istədi. \"$2\" istifadəçisinə müvəqqəti olaraq \"$3\" parolu yaradıldı. Əgər bu sizin istyinizdirsə, hesab açıb yeni bir parol yaratmağınız vacibdir. Müvəqqəti parolunuzun müddəti {{PLURAL:$5|1 gün|$5 gün}} içində dolacaqdır.\n\nParol dəyişdirməni siz istəməmisinizsə və ya parolunuzu xatırladınızsa və artıq parolunuzu dəyişdirmək isteəmirsinizsə; bu mesaja əhəmiyyət vermədən əski parolunuzdan istifadə etməyə davam edə bilərsiniz.",
+       "passwordremindertext": "Kimsə (ehtimal ki siz özünüz, $1 IP ünvanından) {{SITENAME}} ($4) layihəsi \nüçün yeni bir parol göndərilməsini istəyib. \"$2\" adlı istifadəçi üçün müvəqqəti \nolaraq \"$3\" parolu yaradılıb. Əgər bu sizin istəyiniz əsasında olubsa, \nhesabınıza daxil olaraq yeni bir parol yaratmağınız vacibdir. Müvəqqəti parolunuz\n{{PLURAL:$5|1 gün|$5 gün}} ərzində qüvvədə olacaqdır.\n\nParol dəyişdirməni siz istəməmisinizsə və ya parolunuzu xatırladınızsa \nvə artıq parolunuzu dəyişdirmək istəmirsinizsə, bu mesaja əhəmiyyət vermədən \nəvvəlki parolunuzdan istifadə etməyə davam edə bilərsiniz.",
        "noemail": "\"$1\" adlı istifadəçi e-poçt ünvanını qeyd etməmişdir.",
        "noemailcreate": "Düzgün e-poçt ünvanı qeyd etməlisiniz",
        "passwordsent": "Yeni parol \"$1\" üçün qeydiyyata alınan e-poçt ünvanına göndərilmişdir.\nXahiş edirik, e-məktubu aldıqdan sonra yenidən daxil olasınız.",
        "passwordreset-domain": "Domen:",
        "passwordreset-email": "E-mail ünvanı:",
        "passwordreset-emailtitle": "{{SITENAME}} hesabın yaradılması",
+       "passwordreset-emailtext-ip": "Kimsə, (ehtimal ki siz özünüz, $1 IP adresindən) {{SITENAME}} ($4) layihəsindəki hesabınızın \nparolunun yenilənməsini istəyib. Aşağıdakı istifadəçi {{PLURAL:$3|hesabı|hesabları}} bu e-poçt adresinə bağlıdır:\n\n$2\n\nBu müvəqqəti {{PLURAL:$3|parol|parollar}} {{PLURAL:$5|bir gün|$5 gün}} qüvvədə olacaqdır.\nSiz müvəqqəti parolla daxil olub yeni bir parol seçməlisiniz. Əgər parolun dəyişdirilməsini siz istəməmisinizsə və ya parolunuzu xatırladınızsa və artıq onu dəyişmək istəmirsinizsə, bu məktuba əhəmiyyət verməyərək köhnə parolunuzu istifadə etməyə davam edə bilərsiniz.",
        "passwordreset-emailelement": "İstifadəçi adı: \n$1\n\nMüvəqqəti parol: \n$2",
        "passwordreset-emailsentemail": "Xəbərdarlıq məktubu e-maillə göndərildi.",
        "changeemail": "E-məktub ünvanını dəyiş və ya sil",
        "rcshowhidemine-hide": "Gizlət",
        "rcshowhidecategorization-show": "Göstər",
        "rcshowhidecategorization-hide": "Gizlət",
-       "rclinks": "Son $2 gün ərzindəki son $1 dəyişikliyi göstər <br />$3",
+       "rclinks": "Son $2 gün ərzindəki son $1 dəyişikliyi göstər",
        "diff": "fərq",
        "hist": "tarixçə",
        "hide": "Gizlə",
        "filehist-filesize": "Faylın həcmi",
        "filehist-comment": "Şərh",
        "imagelinks": "Fayl keçidləri",
-       "linkstoimage": "{{PLURAL:$1|səhifə|$1 səhifə}} bu fayla istinad edir:",
+       "linkstoimage": "Aşağıdakı {{PLURAL:$1|səhifə|$1 səhifə}} bu fayla istinad edir:",
        "nolinkstoimage": "Bu fayla keçid verən səhifə yoxdur.",
        "linkstoimage-redirect": "$1 (fayl istiqamətləndirilir) $2",
        "sharedupload": "Bu fayl $1-dandır və ola bilsin ki, başqa layihələrdə də istifadə edilir.",
        "whatlinkshere": "Bu səhifəyə bağlantılar",
        "whatlinkshere-title": "\"$1\" məqaləsinə keçid verən səhifələr",
        "whatlinkshere-page": "Səhifə:",
-       "linkshere": "'''[[:$1]]''' səhifəsinə istinad edən səhifələr:",
+       "linkshere": "'''[[:$1]]''' səhifəsinə keçid verən səhifələr:",
        "nolinkshere": "<strong>[[:$1]]</strong> səhifəsinə keçid verən səhifə yoxdur.",
        "nolinkshere-ns": "Seçilmiş ad aralığında heç bir səhifə '''[[:$1]]''' səhifəsinə keçid vermir.",
        "isredirect": "İstiqamətləndirmə səhifəsi",
        "confirmemail_success": "E-poçt ünvanınız indi təsdiq edildi. Siz indi [[Special:UserLogin|hesab açaraq]] vikidən həzz ala bilərsiz.",
        "confirmemail_loggedin": "E-məktubunuz indi təsdiq edildi.",
        "confirmemail_subject": "{{SITENAME}} e-məktub təsdiq etmə",
+       "confirmemail_body": "Kimsə, ehtimal ki, siz özünüz, $1 IP adresindən \n{{SITENAME}} layihəsində bu e-poçt adresi ilə \"$2\" adlı istifadəçi hesabını qeydiyyatdan keçirib.\n\nBu hesabın həqiqətən sizə aid olduğunu təsdiq etmək və {{SITENAME}} saytındakı\ne-poçt əməliyyatlarını aktivləşdirmək üçün aşağıdakı linki brauzerinizdə açın:\n\n$3\n\nƏgər hesabı siz *açmamısınızsa*, e-poçt adresi təsdiqlənməsini ləğv etmək\nüçün aşağıdakı linkə daxil olun:\n\n$5\n\nBu təsdiq kodu $4 tarixinə qədər aktiv olacaqdır.",
+       "confirmemail_body_changed": "Kimsə, ehtimal ki, siz özünüz, $1 IP adresindən \n{{SITENAME}} layihəsindəki \"$2\" adlı istifadəçi hesabı üçün e-poçt adresini dəyişdirib.\n\nBu hesabın həqiqətən sizə aid olduğunu təsdiq etmək və {{SITENAME}} saytındakı\ne-poçt əməliyyatlarını yenidən aktivləşdirmək üçün aşağıdakı linki brauzerinizdə açın:\n\n$3\n\nƏgər hesab sizə aid *deyilsə*, e-poçt adresi təsdiqlənməsini ləğv etmək\nüçün aşağıdakı linkə daxil olun:\n\n$5\n\nBu təsdiq kodu $4 tarixinə qədər aktiv olacaqdır.",
+       "confirmemail_body_set": "Kimsə, ehtimal ki, siz özünüz, $1 IP adresindən \n{{SITENAME}} layihəsindəki \"$2\" adlı istifadəçi hesabı üçün e-poçt adresi olaraq bu adresi göstərib.\n\nBu hesabın həqiqətən sizə aid olduğunu təsdiq etmək və {{SITENAME}} saytındakı\ne-poçt əməliyyatlarını aktivləşdirmək üçün aşağıdakı linki brauzerinizdə açın:\n\n$3\n\nƏgər hesab sizə aid *deyilsə*, e-poçt adresi təsdiqlənməsini ləğv etmək\nüçün aşağıdakı linkə daxil olun:\n\n$5\n\nBu təsdiq kodu $4 tarixinə qədər aktiv olacaqdır.",
        "confirmemail_invalidated": "E-mail təsdiqlənməsi dayandırıldı",
        "invalidateemail": "E-mail təsdiqlənməsindən imtina",
+       "notificationemail_body_changed": "Kimsə, ehtimal ki, siz özünüz, $1 IP adresindən {{SITENAME}} layihəsindəki \n\"$2\" adlı istifadəçi hesabının e-poçt adresini \"$3\" ilə əvəz edib.\n\nƏgər bunu siz etməmisinizsə, o zaman dərhal saytın administratoru ilə əlaqə saxlayın.",
+       "notificationemail_body_removed": "Kimsə, ehtimal ki, siz özünüz, $1 IP adresindən {{SITENAME}} layihəsindəki \n\"$2\" adlı istifadəçi hesabının e-poçt adresini silib.\n\nƏgər bunu siz etməmisinizsə, o zaman dərhal saytın administratoru ilə əlaqə saxlayın.",
        "scarytranscludedisabled": "[«Interwiki transcluding»dən çıxılmışdır]",
        "scarytranscludetoolong": "[URL uzundur]",
        "deletedwhileediting": "'''Diqqət!''' Bu səhifə siz redaktə etməyə başladıqdan sonra silinmişdir!",
        "confirm-watch-button": "OK",
        "confirm-unwatch-button": "OK",
        "quotation-marks": "\"$1\"",
-       "imgmultipageprev": "&larr; əvvəlki səhifə",
-       "imgmultipagenext": "sonrakı səhifə &rarr;",
+       "imgmultipageprev": " əvvəlki səhifə",
+       "imgmultipagenext": "sonrakı səhifə ",
        "imgmultigo": "Seç!",
        "imgmultigoto": "$1 səhifəyə get",
        "ascending_abbrev": "artma sırasına görə",
index 3a9d7c4..b1441ff 100644 (file)
        "anontalk": "دانیشیق",
        "navigation": "دوْلانماق",
        "and": "&#32;و",
-       "qbfind": "تاپ",
-       "qbbrowse": "گؤزدن گئچیرت",
-       "qbedit": "دَییشدیر",
-       "qbpageoptions": "بۇ صفحه‌‌",
-       "qbmyoptions": "صفحه‌‌لریم",
        "faq": "چوْخ سوْروشولان سوْال‌لار",
-       "faqpage": "Project:چوْخ سوْروشولان سوْال‌لار",
        "actions": "چالیشمالار",
        "namespaces": "آد فضالاری",
        "variants": "دئییش‌لر",
        "history_short": "گئچمیش",
        "updatedmarker": "سوْن باخیشیمدان سوْنرا یئنی‌لنیب‌دیر",
        "printableversion": "چاپ اۆچون نۆسخه",
-       "permalink": "قالیجی باغلانتی",
+       "permalink": "قالیجی لینک",
        "print": "یازدیر",
        "view": "باخ",
        "view-foreign": "$1 گور",
        "edit-local": "یئرلی آچیقلامالاری دَییشدیر",
        "create": "یارات",
        "create-local": "یئرلی آچیقلاما آرتیر",
-       "editthispage": "بۇ صحیفه‌‌نی دَییشدیر",
-       "create-this-page": "بۇ صفحه‌‌نی يارات",
        "delete": "سیل",
-       "deletethispage": "بۇ صحیفه‌‌نی سیل",
-       "undeletethispage": "بۇ صحیفه‌نی دیریلت",
        "undelete_short": "{{PLURAL:$1|بیر دَییشیکلیگی|$1 دَییشیکلیگی}} قایتار",
        "viewdeleted_short": "{{PLURAL:$1|بیر|$1}} سیلینمیش دَییشیکلیگه باخ",
        "protect": "قوْرو",
        "protect_change": "ديَیشدیر",
-       "protectthispage": "بۇ صحیفه‌‌نی قوْرو",
        "unprotect": "قوْروماغی دَییشدیر",
-       "unprotectthispage": "بۇ صحیفه‌نین قوْروماسینی دَییشدیر",
        "newpage": "يئنی صفحه‌‌",
-       "talkpage": "بۇ صحیفه‌نی دانیش",
        "talkpagelinktext": "دانیشیق",
        "specialpage": "اؤزل صفحه",
        "personaltools": "شخصی آراجلار",
-       "articlepage": "ایچری‌لی صحیفه‌یه باخ",
        "talk": "دانیشیق",
        "views": "گؤرونوشلر",
        "toolbox": "آلتلر",
-       "userpage": "ایشلدن صفحه‌‌سینه باخ",
-       "projectpage": "پروژه صحیفه‌سینه باخ",
        "imagepage": "فایل صحیفه‌سینه باخ",
        "mediawikipage": "مئساژ صحیفه‌سینه باخ",
        "templatepage": "شابلون صحیفه‌سینه باخ",
        "redirectedfrom": "($1-دن يوْل‌لاندیریلمیش)",
        "redirectpagesub": "یوْللاندیرما صفحه‌سی",
        "redirectto": "مسیزپرین دَییشیب:",
-       "lastmodifiedat": "بۇ صفحه‌‌ سوْن دفعه $1، $2 تاریخینده دَییشیلمیشدیر.",
+       "lastmodifiedat": "بۇ صفحه‌‌ سوْن دفعه $1، $2 تاریخینده دَییشدیریلمیشدیر.",
        "viewcount": "بۇ صحیفه {{PLURAL:$1|بیر|$1}} دفعه گؤرولوبدور.",
        "protectedpage": "قوْرونموش صفحه",
        "jumpto": "آتیل:",
        "preview": "اؤن‌گؤستریش",
        "showpreview": "سیناق گؤستریش",
        "showdiff": "دَییشیکلیکلری گؤستر",
-       "blankarticle": "<strong>دیققت:</strong>سیز بیر بوش صفحه نین یاراتماق حالیندا سیز .\nایر«{{int:savearticle}}» بیر ده باسایلا،بوش صفحه یاراناجاق.",
+       "blankarticle": "<strong>دیققت:</strong>سیز بیر بوش صفحه نین یاراتماق حالیندا سیز .\nایر«$1» بیر ده باسایلا،بوش صفحه یاراناجاق.",
        "anoneditwarning": "<strong>دیقت:</strong> سیز سیستمه گیرمه‌میسینیز. سیزین آی‌پی آدرسینیز بۇ صفحه‌نین دییشیک گئچمیشینده یازیلب و گؤروشه‌جک.هر دَییشدیرمه ائتسز.<strong>[$1 گیریش ائتسز]</strong> یا <strong>[$2 بیر ایشلدن حسابی آچاسیز]</strong>, دَییشدیرمه‌لرینیز سیزین ایشلدن حساب آدینیزا نیسبت وئریله‌جک و آرتیق مزیتلرله.",
        "anonpreviewwarning": "<em> سیستمه گیرمه‌میسینیز. ذخیره ائتمک‌له، سیزین آی‌پی آدرسینیز بو صفحه‌نین گئچمیشینده ثبت اولوناجاقدیر.</em>",
-       "missingsummary": "'''یادا سالما:''' سیز بیر دَییشیکلیک قیساسی یازمامیسینیز. «{{int:savearticle}}» دویمه‌سینی تیک‌لاسازسا، دَییشیکلیگینیز، قیسا شرح‌سیز اولاراق قئید اولوناجاق.",
-       "selfredirect": "<strong>دیققت:</strong>سیز صفحه نین یولون اوزونه دَییشدیریمک حالیندا سیز.\nایمکانی وار یانلیش سون بیر یئری یولون دَییشمک اوچون سئچیب سیز،یا دا صفحه نی یانلیش دَییشدیرسیز.\nایر\"{{int:savearticle}}\" اوستون یئنی دن باساسینیز یولون دَییشیکلیگی دوزلجک.",
+       "missingsummary": "'''یادا سالما:''' سیز بیر دَییشیکلیک قیساسی یازمامیسینیز. «$1» دویمه‌سینی تیک‌لاسازسا، دَییشیکلیگینیز، قیسا شرح‌سیز اولاراق قئید اولوناجاق.",
+       "selfredirect": "<strong>دیققت:</strong>سیز صفحه نین یولون اوزونه دَییشدیریمک حالیندا سیز.\nایمکانی وار یانلیش سون بیر یئری یولون دَییشمک اوچون سئچیب سیز،یا دا صفحه نی یانلیش دَییشدیرسیز.\nایر\"$1\" اوستون یئنی دن باساسینیز یولون دَییشیکلیگی دوزلجک.",
        "missingcommenttext": "لوطفاً آشاغی‌دا بیر یوروم یازین.",
-       "missingcommentheader": "<strong>یادا سالما:</strong> سیز یورومونوز اوچون بیر قونو یازمامیسینیز.\n«{{int:savearticle}}»-ی تیک‌لاسازسا، دَییشیکلیگینیز، قونوسوز قئید اولوناجاق‌دیر.",
+       "missingcommentheader": "<strong>یادا سالما:</strong> سیز یورومونوز اوچون بیر قونو یازمامیسینیز.\n«$1»-ی تیک‌لاسازسا، دَییشیکلیگینیز، قونوسوز قئید اولوناجاق‌دیر.",
        "summary-preview": "قیسا اؤن‌گؤستریش:",
        "subject-preview": "قونو اؤن‌گؤستریشی:",
        "previewerrortext": "سیزین دَییشدیرمه‌لرینیزین اؤن‌گؤسترمه‌سینده بیر خطا قاباغا گلدی.",
        "editingsection": "$1 دَییشدیریلیر (بؤلوم)",
        "editingcomment": "$1 دَییشدیریلیر (یئنی بؤلوم)",
        "editconflict": "عینی واختدا دییشدیرمک: $1",
-       "explainconflict": "سیز صحیفه‌‌نی رئداکته باشقا بیری ده ديَیشیکلیک ائتدی. \nيوخاریداکی يازی صحیفه‌‌نین بو آنکی حالینی گؤستریر. \nسیزین ديَیشیکلیکلری‌نین آلتا گؤستریلمیشدیر. سون دئغیشیکلئرینیزی يازی‌نین ایچینه داخیل ائتمه‌يینیز لازیم اولاجاق. \n«{{int:savearticle}}» ائ باسدیغینیزداع' ' يالنیزعع' يوخاریداکی يازی يازیلاجاق.",
+       "explainconflict": "سیز صحیفه‌‌نی رئداکته باشقا بیری ده ديَیشیکلیک ائتدی. \nيوخاریداکی يازی صحیفه‌‌نین بو آنکی حالینی گؤستریر. \nسیزین ديَیشیکلیکلری‌نین آلتا گؤستریلمیشدیر. سون دئغیشیکلئرینیزی يازی‌نین ایچینه داخیل ائتمه‌يینیز لازیم اولاجاق. \n«$1» ائ باسدیغینیزداع' ' يالنیزعع' يوخاریداکی يازی يازیلاجاق.",
        "yourtext": "یازینیز",
        "storedversion": "قئید ائدیلمیش نوسخه",
        "nonunicodebrowser": "' 'دیققت: آختاریش برنامه نیز اویغون دئییل.\nصحیفه‌لری اعتبارلا دییشدیرمیینیزه ایجازه وئرمک اوچون: آسجیی اولمایان کاراکتئرلر دییشدیرمه قوتوسوندا اونالتیلیک کودلار اولا‌راق گؤرونه‌جک.' '",
        "right-editsemiprotected": "«{{int:protect-level-autoconfirmed}}» جوره قورونموش صحیفه‌لری دَییشدیر",
        "right-editcontentmodel": "صفحه نین ایچریک مودلین دَییشدیر",
        "right-editinterface": "ایستیفاده‌چی آرا-اوزونو دَییشدیر",
-       "right-editusercssjs": "باشقا ایستیفاده‌چیلرین سی‌اس‌اس و جاوااسکریپت فایل‌لارینی دَییشدیر",
        "right-editusercss": "باشقا ایستفاده‌چیلرین سی‌اس‌اس فایل‌لارینی دَییشدیر",
        "right-edituserjs": "باشقا ایستیفاده‌چیلرین جاوااسکریپت فایل‌لارینی دَییشدیر",
        "right-editmyusercss": "اؤز ایستیفاده‌چی CSS فایل‌لارینی دَییشدیر",
        "rcshowhidemine-hide": "گیزلت",
        "rcshowhidecategorization": "صفحه‌لر بؤلمه‌لندیرمه‌سی $1",
        "rcshowhidecategorization-hide": "گیزلت",
-       "rclinks": "سون $2 گون عرضینده‌کی سون  $1 ديَیشیکلیگی گؤستر <br />$3",
+       "rclinks": "سون $2 گون عرضینده‌کی سون  $1 ديَیشیکلیگی گؤستر",
        "diff": "فرق",
        "hist": "گئچمیش",
        "hide": "گیزلت",
        "protectedarticle": "«[[$1]]» قوْروندو",
        "modifiedarticleprotection": "\"[[$1]]\" صحیفه‌سی اوچون محافظه سویه‌سی دییشیلدی",
        "unprotectedarticle": "محافظه کنارلاشدیریلدی \"[[$1]]\"",
-       "movedarticleprotection": "قوروما نیزام‌لاری \"[[$2]]\" صحیفه‌سین‌دن \"[[$1]]\" صحیفه‌سی داشیندی",
+       "movedarticleprotection": "قوروما تنظیماتلاری \"[[$2]]\" صفحه‌سیندن \"[[$1]]\" صفحه‌سینه داشیندی",
        "protect-title": "\"$1\" اوچون محافظه سویه‌سی‌نین دییشدیریلمه‌سی",
        "protect-title-notallowed": "\"$1\"اوچون محافظه سویه‌سی‌نین گؤسترین",
        "prot_1movedto2": "[[$1]] آدی دییشیلدی. یئنی آدی: [[$2]]",
        "undeleteviewlink": "باخ",
        "undeleteinvert": "سئچیلنی دؤندر",
        "undeletecomment": "ندن:",
-       "undeletedrevisions": "جمعی {{PLURAL:$1|بیر دییش|$1 دییشدیر}} گئری قایتاریلدی.",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 نوسخه|$1 نوسخه}} و {{PLURAL:$2|1 فایل|$2 فایل}} برپا ائدیلدی",
-       "undeletedfiles": "{{PLURAL:$1|1 فایل|$1 فایل}} برپا اولوندو",
        "cannotundelete": "برپا ائدیلمه اولمادی\n\n$1",
        "undeletedpage": "'$1 برپا ائدیلدی\n\nمقاله‌لرین برپا ائدیلمه‌سی و سیلینمه‌سی حاقیندا سون دییشیک‌لیک‌لری نظردن کئچیرمک اوچون [[Special:Log/delete|سیلمه قئیدلرینه]] باخین.",
        "undelete-header": "سون سیلینمیش صحیفه‌لره باخماق اوچون [[Special:Log/delete|سیلمه قئیدلرینه]] باخ.",
        "pageinfo-hidden-categories": "گیزلی {{PLURAL:$1|بؤلمه|بؤلمه‌لر}} ($1)",
        "pageinfo-templates": "ایشله‌دیلمیش {{PLURAL:$1|بیر|$1}} شابلون ($1)",
        "pageinfo-transclusions": "ایچینده گلن {{PLURAL:$1|صحیفه|صحیفه‌لر}} ($1)",
-       "pageinfo-toolboxlink": "صÙ\81Ø­Ù\87 Ø¨Û\8cÙ\84Ú¯Û\8câ\80\8cسی",
+       "pageinfo-toolboxlink": "صÙ\81Ø­Ù\87 Ø§Û\8cØ·Ù\84اعاتی",
        "pageinfo-redirectsto": "ایستیقامتلن‌دیریلن",
        "pageinfo-redirectsto-info": "بیلگی",
        "pageinfo-contentpage": "بیر مضمون صفحه‌سی ساییلیر",
        "confirm-unwatch-button": "اولدو",
        "confirm-unwatch-top": "بو صفحه‌نی ایزله‌دیگینیز صفحه‌لردن قالدیریلدی",
        "quotation-marks": "«$1»",
-       "imgmultipageprev": "&rarr; قاباقکی صفحه‌‌",
-       "imgmultipagenext": "سونراکی صفحه‌‌ &larr;",
+       "imgmultipageprev": " قاباقکی صفحه‌‌",
+       "imgmultipagenext": "سونراکی صفحه‌‌ ",
        "imgmultigo": "گئت!",
        "imgmultigoto": "$1 صحیفه‌‌يه گئت",
        "img-lang-default": "(وارساییلان دیل)",
        "specialpages-group-maintenance": "ساخلانیش گوزاریشلری",
        "specialpages-group-other": "آیری اؤزل صفحه‌لر",
        "specialpages-group-login": "گیریش / حساب یارات",
-       "specialpages-group-changes": "سون دییشیک‌لیک‌لر و قئیدلر",
+       "specialpages-group-changes": "سون دییشیک‌لیک‌لر و ژورناللار",
        "specialpages-group-media": "مئدیا مروزه‌لری و یوکلمه‌لر",
        "specialpages-group-users": "ایشلدن‌لر و حاقلار",
        "specialpages-group-highuse": "ان چوْخ ایشلدیلمیش صفحه‌لر",
        "logentry-newusers-create2": "$1 ایستیفاده‌چی، $3 حسابی {{GENDER:$2|یاراتدی}}",
        "logentry-newusers-byemail": "$3 ایستیفاده‌چی حسابی، $1 ایله {{GENDER:$2|یارادیلیب}} و رمز، ایمیل ایله گؤندریلیب‌دیر",
        "logentry-newusers-autocreate": "$1 ایشلدن حسابی اوْتوماتیک {{GENDER:$2|یارادیلدی}}",
+       "logentry-protect-move_prot": "$1 قوروما تنظیماتلارینی $4-دن/دان  $3-ه {{GENDER:$2|داشیدی}}",
        "logentry-protect-protect": "$1 $3-ی/و  {{GENDER:$2|قوْرودو}} $4",
        "logentry-rights-rights": "$1، $3-ین قروپ عۆضولوگونو $4-دن $5-ه {{GENDER:$2|دَییشدیردی}}",
        "logentry-rights-rights-legacy": "$1، $3-ین قروپ عوضولوگونو {{GENDER:$2|دَییشدیردی}}",
index 1e5d794..44e67df 100644 (file)
        "anontalk": "Әңгәмә",
        "navigation": "Төп йүнәлештәр",
        "and": "&#32;һәм",
-       "qbfind": "Эҙләү",
-       "qbbrowse": "Байҡарға",
-       "qbedit": "Үҙгәртергә",
-       "qbpageoptions": "Был бит",
-       "qbmyoptions": "Биттәрем",
        "faq": "ЙБҺ",
-       "faqpage": "Project:ЙБҺ",
        "actions": "Ғәмәлдәр",
        "namespaces": "Исем арауыҡтары",
        "variants": "Варианттар",
        "edit-local": "Локаль тасуирламаны үҙгәртергә",
        "create": "Төҙөргә",
        "create-local": "Локаль тасуирлама өҫтәргә",
-       "editthispage": "Был мәҡәләне үҙгәртергә",
-       "create-this-page": "Был битте яһарға",
        "delete": "Юҡ  итергә",
-       "deletethispage": "Был битте юйырға",
-       "undeletethispage": "Юйылған битте ҡабат тергеҙеү",
        "undelete_short": "$1 {{PLURAL:$1|үҙгәртеүҙе}} тергеҙергә",
        "viewdeleted_short": "{{PLURAL:$1|1=1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}} ҡарау",
        "protect": "Һаҡларға",
        "protect_change": "үҙгәртергә",
-       "protectthispage": "Был битте һаҡларға",
        "unprotect": "Һаҡлауҙы үҙгәртергә",
-       "unprotectthispage": "Был биттең һаҡлауын үҙгәртергә",
        "newpage": "Яңы бит",
-       "talkpage": "Фекер алышыу",
        "talkpagelinktext": "әңг.",
        "specialpage": "Ярҙамсы бит",
        "personaltools": "Шәхси ҡоралдар",
-       "articlepage": "Мәҡәләне ҡарап сығырға",
        "talk": "Әңгәмә",
        "views": "Ҡарауҙар",
        "toolbox": "Ҡоралдар",
        "tool-link-userrights": "{{GENDER:$1|Ҡатнашыусы}} төркөмдәрен үҙгәртергә",
        "tool-link-userrights-readonly": "{{GENDER:$1|Ҡатнашыусы|Ҡатнашыулар}} төркөмдәрен ҡарарға",
        "tool-link-emailuser": "{{GENDER:$1|Ҡатнашыусыға}} хат яҙырға",
-       "userpage": "Ҡулланыусы битен ҡарарға",
-       "projectpage": "Проект битен ҡарарға",
        "imagepage": "Файл битен ҡарарға",
        "mediawikipage": "Хәбәрҙәр битен ҡарарға",
        "templatepage": "Ҡалып битен ҡарарға",
        "redirectedfrom": "($1 битенән йүнәлтелде)",
        "redirectpagesub": "Йүнәлтеү бите",
        "redirectto": "Йүнәлтергә:",
-       "lastmodifiedat": "Был биттең һуңғы тапҡыр үҙгәртелеү ваҡыты: $2, $1 .",
+       "lastmodifiedat": "Был бит һуңғы тапҡыр $2 $1 үҙгәртелгән.",
        "viewcount": "Был биткә $1 {{PLURAL:$1|тапҡыр}} мөрәжәғәт иттеләр.",
        "protectedpage": "Һаҡланған бит",
        "jumpto": "Унда күсергә:",
        "resetpass-submit-cancel": "Кире алырға",
        "resetpass-wrong-oldpass": "Хаталы ваҡытлыса йәки ағымдағы серһүҙ.\nҺеҙ, бәлки, серһүҙегеҙҙе алмаштырғанһығыҙ йәки яңы серһүҙ һоратҡанһығыҙ.",
        "resetpass-recycled": "Үҙегеҙҙекенән айырмалы серһүҙ һайлағыҙ.",
-       "resetpass-temp-emailed": "Һеҙ электорон почта аша ебәрелгән ваҡытлыса серһүҙ менән индегеҙ. Инеүҙе башҡарыу өсөн яңы серһүҙ яҙығыҙ.",
+       "resetpass-temp-emailed": "Һеҙ электрон почта аша ебәрелгән ваҡытлыса серһүҙ менән индегеҙ. Инеүҙе башҡарыу өсөн яңы серһүҙ яҙығыҙ.",
        "resetpass-temp-password": "Ваҡытлыса серһүҙ",
        "resetpass-abort-generic": "Серһүҙҙе үҙгәртеү киңәйеү тарафынан өҙөлдө.",
        "resetpass-expired": "Һеҙҙең серһүҙҙең ғәмәл ваҡыты үткән. Зинһар, системала танылыу өсөн яңы серҙһүҙ ҡуйығыҙ.",
        "preview": "Ҡарап сығыу",
        "showpreview": "Ҡарап сығырға",
        "showdiff": "Индерелгән үҙгәрештәр",
-       "blankarticle": "<strong>Иҫкәртеү:</strong> Һеҙ булдырасаҡ бит буш.\nӘгәр тағы ла «{{int:savearticle}}» кнопкаға баҫһағыҙ, шул уҡ йөкмәткеле бит  яңынан барлыҡҡа киләсәк.",
+       "blankarticle": "<strong>Иҫкәртеү:</strong> Һеҙ булдырасаҡ бит буш.\nӘгәр тағы ла «$1» кнопкаға баҫһағыҙ, шул уҡ йөкмәткеле бит  яңынан барлыҡҡа киләсәк.",
        "anoneditwarning": "<strong>Иғтибар!</strong> Һеҙ сайтта теркәлмәнегеҙ. Әгәр ҙә һеҙ ниндәй ҙә булһа төҙәтмәләр  йәки үҙгәртүҙәр индерһәгеҙ, һеҙҙең IP-адрес башҡаларға ла күрһәтеләсәк. Сайтҡа <strong>[$1 керһәгеҙ]</strong> йәки <strong>[$2 ҡуллануысы яҙмаһын төҙөһәгеҙ]</strong>, һеҙ индергән үҙгәртеүҙәр һеҙҙең ҡулланыусы яҙмағыҙға бәйләнгән була, шулай уҡ башҡа мөмкинлектәр ҙә тыуасаҡ.",
        "anonpreviewwarning": "''Һеҙ танылмағанһығыҙ. Яҙҙырыу ваҡытында IP-адресығыҙ был биттең үҙгәртеүҙәр тарихына яҙыласаҡ.''",
        "missingsummary": "'''Иҫкәртеү.''' Һеҙ үҙгәртеүҙергә ҡыҫҡа тасуирлама яҙманығыҙ. Ҡабаттан «Битте һаҡларға» төймәһенә баҫһағыҙ, үҙгәртеүҙәрегеҙ тасуирламаһыҙ һаҡланасаҡ.",
-       "selfredirect": "<strong>Иғтибар:</strong> Һеҙ шул уҡ мәҡәләгә йүнәлтеү эшләйһегеҙ.\n «{{int:savearticle}}» төәмәһенә баҫһағыҙ тағы шул биткә йүнәлтеләсәк.",
+       "selfredirect": "<strong>Иғтибар:</strong> Һеҙ шул уҡ мәҡәләгә йүнәлтеү эшләйһегеҙ.\n «$1» төәмәһенә баҫһағыҙ тағы шул биткә йүнәлтеләсәк.",
        "missingcommenttext": "Зинһар, аҫҡа үҙ тасуирламағыҙҙы керетегеҙ.",
-       "missingcommentheader": "'''Иҫкәртеү:''' Һеҙ был комментарий өсөн тема/исем яҙманығыҙ.\n«{{int:savearticle}}» төймәһенә ҡабат баҫыу менән үҙгәртеүҙерегеҙ исемһеҙ яҙыласаҡ.",
+       "missingcommentheader": "'''Иҫкәртеү:''' Һеҙ был комментарий өсөн тема/исем яҙманығыҙ.\n«$1» төймәһенә ҡабат баҫыу менән үҙгәртеүҙерегеҙ исемһеҙ яҙыласаҡ.",
        "summary-preview": "Буласаҡ тасуирлама:",
        "subject-preview": "Тема/башлыҡты алдан ҡарау:",
        "previewerrortext": "Алдан ҡарау ваҡытында хата китте.",
        "userpage-userdoesnotexist": "«<nowiki>$1</nowiki>» иҫәп яҙыуы юҡ. Һеҙ бындай бит яһарға йәки битте үҙгәртергә теләһәгеҙ яңынан тикшерегеҙ.",
        "userpage-userdoesnotexist-view": "«$1» исемле иҫәп яҙыуы юҡ.",
        "blocked-notice-logextract": "Хәҙергә был ҡатнашыусы ябылған. Һуңғы ҡулланыусы ябыу яҙмаһы:",
-       "clearyourcache": "'''Иҫкәрмә:''' Битте һаҡлағандан һуң үҙгәртеүҙерегеҙ күренһен өсөн, браузерығыҙҙың кэшын таҙартығыҙ.\n* '''Firefox / Safari:''' ''Shift'' төймәһенә баҫып, ебәрмәйенсә, ''Яңыртырға'' төймәһенә баҫығыҙ, йәки ''Ctrl-F5'' йә ''Ctrl-R'' (Mac-та ''⌘-R'') төймәләренә баҫығыҙ\n* '''Google Chrome:''' ''Ctrl-Shift-R'' төймәһенә баҫығыҙ (Mac-та ''⌘-Shift-R'')\n* '''Internet Explorer:''' ''Ctrl'' төймәһенә баҫып, ебәрмәйенсә, ''Яңыртырға'' төймәһенә баҫығыҙ, йәки ''Ctrl-F5'' төймәһенә баҫығыҙ\n* '''Opera:''' ''Ҡоралдар → Көйләүҙәр' менюһында кеш таҙартыуҙы һайлағыҙ",
+       "clearyourcache": "<strong>Иҫкәрмә:</strong> Битте һаҡлағандан һуң үҙгәртеүҙәрегеҙ күренһен өсөн, браузерығыҙҙың кэшын таҙартырға кәрәктер.\n* <strong>Firefox / Safari:</strong> <em>Shift</em> төймәһенә баҫып, ебәрмәйенсә, <em>Яңыртырға</em> төймәһенә баҫығыҙ, йәки <em>Ctrl-F5</em> йә <em>Ctrl-R</em> (Mac-та <em>⌘-R</em>) төймәләренә баҫығыҙ\n* <strong>Google Chrome:</strong> <em>Ctrl-Shift-R </em>төймәһенә баҫығыҙ (Mac-та <em>⌘-Shift-R</em>)\n* <strong>Internet Explorer:</strong> <em>Ctrl </em>төймәһенә баҫып, ебәрмәйенсә, <em>Яңыртырға</em>төймәһенә баҫығыҙ, йәки <em>Ctrl-F5 </em>төймәһенә баҫығыҙ\n* <strong>Opera:</strong> <em>Ҡоралдар → Көйләүҙәр</em> (Mac-та <em>Opera → Көйләүҙәр</em>) бүлегенә күсегеҙ,  һуңынан <em>Хәүефһеҙлек → Кереүҙәр тарихын таҙартыу → Рәсемдәр кэшлау</em> менюһында кеш таҙартыуҙы һайлағыҙ",
        "usercssyoucanpreview": "'''Кәңәш:''' Яңы CSS-файлды һаҡларҙан алда тикшерер өсөн \"{{int:showpreview}}\" төймәһенә баҫығыҙ.",
        "userjsyoucanpreview": "'''Кәңәш:''' Яңы JS-файлды һаҡларҙан алда тикшерер өсөн \"{{int:showpreview}}\" төймәһенә баҫығыҙ.",
        "usercsspreview": "'''Был бары тик CSS файлды алдан ҡарау ғына, ул әле һаҡланмаған!'''",
        "editingsection": "Мөхәррирләү  $1 (секция)",
        "editingcomment": "$1 мөхәррирләнә (яңы бүлек)",
        "editconflict": "Мөхәррирләү конфликты: $1",
-       "explainconflict": "Һеҙ был битте мөхәррирләгән ваҡытта кемдер яңы үҙгәрештәр керетте.\nМөхәррирләү тәҙрәһенең өҫкө өлөшөндә биттең ағымдағы текстын күрәһегеҙ.\nАҫта, һеҙҙең вариант күрһәтелгән. Кереткән үҙгәрештерегеҙҙе аҫҡы тәҙрәнән өҫкә күсерегеҙ.\n«{{int:savearticle}}» төймәһенә баҫҡас өҫтәге тәҙрәнең тексты һаҡланасаҡ.",
+       "explainconflict": "Һеҙ был битте мөхәррирләгән ваҡытта кемдер яңы үҙгәрештәр керетте.\nМөхәррирләү тәҙрәһенең өҫкө өлөшөндә биттең ағымдағы текстын күрәһегеҙ.\nАҫта, һеҙҙең вариант күрһәтелгән. Кереткән үҙгәрештерегеҙҙе аҫҡы тәҙрәнән өҫкә күсерегеҙ.\n«$1» төймәһенә баҫҡас өҫтәге тәҙрәнең тексты һаҡланасаҡ.",
        "yourtext": "Һеҙҙең текст",
        "storedversion": "Һаҡланған версия",
        "nonunicodebrowser": "'''КИҪӘТЕҮ: Һеҙҙең браузер Юникод кодировкаһын танымай.'''\nМәҡәләләрҙе мөхәррирләгән ваҡытта ASCII булмаған символдар махсус уналтылы кодтарға әйләндереләсәк.",
        "page_first": "беренсе",
        "page_last": "аҙаҡҡы",
        "histlegend": "Айырма һайлау: сағыштырырға теләгән 2 версияны һайлап Enter-ға йәки биттең аҫҡы өлөшөндәге төймәгә баҫығыҙ.<br />\nАңлатмалар: '''({{int:cur}})''' — хәҙерге версиянан айырма, '''({{int:last}})''' — алдағы версиянан айырма, '''{{int:minoreditletter}}''' — әҙ үҙгәреш яһалған.",
-       "history-fieldset-title": "Тарихты ҡарарға",
+       "history-fieldset-title": "Үҙгәртеүҙәрҙе эҙләү",
        "history-show-deleted": "Юйылғандар ғына",
        "histfirst": "Иң иҫкеләр",
        "histlast": "Иң һуңғылар",
        "right-editsemiprotected": "\"{{int:protect-level-autoconfirmed}}\" булараҡ һаҡланған биттәрҙе төҙәтеү",
        "right-editcontentmodel": "Биттең контент моделен мөхәррирләү",
        "right-editinterface": "Ҡулланыусы интерфейсын үҙгәртеү",
-       "right-editusercssjs": "Башҡа ҡатнашыусыларҙың CSS һәм JS файлдарын мөхәррирләү",
        "right-editusercss": "Башҡа ҡатнашыусыларҙың CSS файлдарын мөхәррирләү",
        "right-edituserjs": "Башҡа ҡатнашыусыларҙың JS файлдарын мөхәррирләү",
        "right-editmyusercss": "Файҙаланыусының CSS файлдарын мөхәррирләү",
        "rcshowhidecategorization": "Биттәр категориялаштырыуын $1",
        "rcshowhidecategorization-show": "Күрһәтергә",
        "rcshowhidecategorization-hide": "Йәшерелгән",
-       "rclinks": "Һуңғы $2 көн эсендәге һуңғы $1 үҙгәртеүҙе күрһәтергә<br />$3",
+       "rclinks": "Һуңғы $2 көндә яһалған һуңғы $1 үҙгәртеүҙе күрһәтергә",
        "diff": "айыр.",
        "hist": "тарих",
        "hide": "йәшер",
        "htmlform-user-not-exists": "<strong>$1</strong> ғәмәлдә юҡ",
        "htmlform-user-not-valid": "<strong>$1</strong> — ярамаған иҫәп яҙмаһы",
        "logentry-delete-delete": "$1 $3 битен {{GENDER:$2|юйҙы}}",
-       "logentry-delete-restore": "$1 $3 битен {{GENDER:$2|тергеҙҙе}}",
+       "logentry-delete-restore": "$1 $3 ($4) битен {{GENDER:$2|тергеҙҙе}}",
        "logentry-delete-event": "$1 журналдағы {{PLURAL:$5|яҙманы}} $3: $4 {{GENDER:$2|үҙгәртте}}",
        "logentry-delete-revision": "Ҡатнашыусы $1 $3: $4 битенең {{PLURAL:$5|$5 версиялары|$5 версияларының|1=версиялар}} күренешен {{GENDER:$2|үҙгәртте|үҙгәртте}}.",
        "logentry-delete-event-legacy": "$1  $3 журналы яҙмаларының күренеүсәнлеген {{GENDER:$2|үҙгәртте}}",
index 585cb1e..4c2c3c6 100644 (file)
        "rcshowhideanons": "$1 penganggo tan meadan",
        "rcshowhidepatr": "$1 suntingan sane kapatroli",
        "rcshowhidemine": "$1 uwahan titiang",
-       "rclinks": "edengang sane untat $1 gentosan anyar $2 dina kaping untat <br />$3",
+       "rclinks": "edengang sane untat $1 gentosan anyar $2 dina kaping untat",
        "diff": "bina",
        "hist": "kawentenan sane lian",
        "hide": "engkebang",
index fd6f1e0..80da2ee 100644 (file)
        "showpreview": "Vorschau zoagn",
        "showdiff": "Endarunga zoagn",
        "anoneditwarning": "Obocht: Du bist ned eigloggt.\nDei IP-Adress wead in da Versionsgschicht afzoachnet.",
-       "missingsummary": "'''Hiwais:''' du host koa Zåmmfossung ågeem. Wånn du ernait auf „{{int:savearticle}}“ druckst, werd dai Enderung one a Zåmmfossung ywernumma.",
+       "missingsummary": "'''Hiwais:''' du host koa Zåmmfossung ågeem. Wånn du ernait auf „$1“ druckst, werd dai Enderung one a Zåmmfossung ywernumma.",
        "missingcommenttext": "Bittschee gib a Zåmmfossung ai.",
        "summary-preview": "Voaschau vo da Zammfossung:",
        "subject-preview": "Vurschau vom Bedreff:",
        "editingsection": "Werkln ba $1 (Obschnitt)",
        "editingcomment": "Werkeln voh $1 (Neicher Obschnit)",
        "editconflict": "Konflikt baim Beorwaiten: $1",
-       "explainconflict": "Eppern ånderer hod de Saitn gendert, nochdem du ågfånga host de zum beorwaiten.\nDes owere Textföidl enthoit 'n aktuöin Stånd.\nDes untare Textföidl enthoit daine Enderungen.\nBittschee fiag daine Enderungen ins owere Textföidl ai.\n'''Netter''' da Inhoit vom owern Textföidl werd gspaichert, wånn du auf  „{{int:savearticle}}“ druckst!",
+       "explainconflict": "Eppern ånderer hod de Saitn gendert, nochdem du ågfånga host de zum beorwaiten.\nDes owere Textföidl enthoit 'n aktuöin Stånd.\nDes untare Textföidl enthoit daine Enderungen.\nBittschee fiag daine Enderungen ins owere Textföidl ai.\n'''Netter''' da Inhoit vom owern Textföidl werd gspaichert, wånn du auf  „$1“ druckst!",
        "yourtext": "Deih Text",
        "storedversion": "Gespeicherde Versión",
        "editingold": "'''Ochtung: Du beorwaitst a oide Version vo derer Saiten. Wånn du spaichertst, wern olle naichen Versionen ywerschriim!'''",
        "rcshowhidepatr": "Kontrolliade Endarunga $1",
        "rcshowhidemine": "Meine Beidreg $1",
        "rcshowhidemine-hide": "Ausblendn",
-       "rclinks": "De letztn Endarunga vo de letztn $2 Dog zoagn<br />$3",
+       "rclinks": "De letztn Endarunga vo de letztn $2 Dog zoagn",
        "diff": "Untaschied",
        "hist": "Versiona",
        "hide": "Ausblendn",
        "htmlform-selectorother-other": "Åndre",
        "logentry-move-move_redir": "$1 hod de Seitn $3 af $4 {{GENDER:$2|verschom}} und hod dabei a Weidaloatung ibaschriem",
        "logentry-move-move_redir-noredirect": "$1 hod de Seitn $3 af $4 {{GENDER:$2|verschom}} und dabei a Weidaloatung ibaschriem, ohne a neiche ozlegn",
-       "searchsuggest-search": "Suach",
+       "searchsuggest-search": "Suach (af Boarisch oda Deutsch)",
        "searchsuggest-containing": "Voitextsuach noch ..."
 }
index 6ecfcb3..9dc0959 100644 (file)
        "rcshowhideanons": "$1 pamarhaseang ndang margoar",
        "rcshowhidepatr": "$1 panotaan na dipamanat",
        "rcshowhidemine": "$1 na hupatota",
-       "rclinks": "Patuduhon $1 parubaan na imbaru dibagasan na $2 ari on<br />$3",
+       "rclinks": "Patuduhon $1 parubaan na imbaru dibagasan na $2 ari on",
        "diff": "duru",
        "hist": "turi",
        "hide": "Bunihon",
index 0fec39a..2ad7cc0 100644 (file)
        "externaldberror": "یک حطا دیتابیس تصدیق هویت دراییگی هست یا شما را اجازت نیست وتی حساب درایی په روچ کنیت.",
        "login": "ورود",
        "nav-login-createaccount": "ورود/شرکتن حساب",
-       "userlogin": "ورود/شرکتن حساب",
-       "userloginnocreate": "لاگین",
        "logout": "در بوتین",
        "userlogout": "در بوتین",
        "notloggedin": "وارد نهت",
        "userlogin-noaccount": "شما رء اکانت نه انت؟",
        "userlogin-joinproject": "مان {{SITENAME}} ناملکی بکن ات!",
-       "nologin": "حسابء  نیستن؟ '''$1'''.",
-       "nologinlink": "یک حسابی جوڑ کورتین",
        "createaccount": "حساب شرکن",
-       "gotaccount": "یک حساب الان هست؟'''$1'''.",
-       "gotaccountlink": "ورود",
-       "userlogin-resetlink": "وتی لاگینء جزئیاتء رء شموش کتگ ات؟",
        "userlogin-resetpassword-link": "وتی پسوردء رء شموش کتگ ات؟",
        "userlogin-helplink2": "کمک گون لاگین",
        "userlogin-loggedin": "شما انیگء {{GENDER:$1|$1}}ء حالتء مان بیتگ ات.\nچه جهلیگین فرم پر لاگین مان ادگر کاربرء حالتء کارمرز بکن ات.",
        "createacct-another-email-ph": "ایمیلء ادرسء بلک ات",
        "createaccountmail": "کارمرز چه وتکارین موقتین پسورد ءُ رندا آئی دیم داتن پر مالومین ایمیل",
        "createacct-realname": "شمئی اصلیگین نام (ایهتیاری)",
-       "createaccountreason": "دلیل:",
        "createacct-reason": "دلیل:",
        "createacct-reason-ph": "پرچا شما ادگر نوکین اکانتء اڈ کن ات",
        "createacct-submit": "وتی اکانتء اڈ کن ات",
        "preview": "دیستین",
        "showpreview": "بازبین پیش دار",
        "showdiff": "تغییرات پیش دار",
-       "blankarticle": "<strong>هشتار:</strong> شما بی یک هالی دیمی جوڑ\t کورتینا ئالاتا ویت.\nاگه \"{{int:savearticle}}\" ها پدا کلیک کنیت، بدون مئتواین دیمی جوڑ\tا بیت .",
+       "blankarticle": "<strong>هشتار:</strong> شما بی یک هالی دیمی جوڑ\t کورتینا ئالاتا ویت.\nاگه \"$1\" ها پدا کلیک کنیت، بدون مئتواین دیمی جوڑ\tا بیت .",
        "anoneditwarning": "<strong>هشتار:</strong> شما لوگین نه بوته ایت . شمی آی پی نشانی په موچان دیستینی وڑ\tا بیت اگه هر \tٹگلی جوڑ\t بداریت . اگه <strong>[$1 لوگین بئیت]</strong> یا <strong>[$2 یک کاربرین حسابی جوڑ بکنیت]</strong>، شمی ایڈیت بی شمی کاربرین نام نسبت داته آ بینت، لوڑ گون دیگرین مزایایان .",
        "anonpreviewwarning": "''شما مان سیستمء لاگین نکتگ. ذخیره کتنء حالت شمئی آی‌پیء نشانیگ مان ائ پیجء هاپزگ سبت بیت انت.''",
        "missingsummary": "'''یادآوری:''' شما یک خلاصه چه اصلاح وارد نه کرت.\nاگر دگه کلیک کنیت ذخیره آ، شمی اصلاح به بی آی ذخیره بنت.",
        "missingcommenttext": "لطفا یک نظری وارد کنیت جهل آ",
-       "missingcommentheader": "'''هالداری:'' شما یک موضوع/سرهت پر ائ کامنت نهشتگ ات.\nاگان دوبارگ بٹن «{{int:savearticle}}» سرء کلیک کن ات شمئی ویرایش گیر چه آئیء ذخیرگ بیت انت.",
+       "missingcommentheader": "'''هالداری:'' شما یک موضوع/سرهت پر ائ کامنت نهشتگ ات.\nاگان دوبارگ بٹن «$1» سرء کلیک کن ات شمئی ویرایش گیر چه آئیء ذخیرگ بیت انت.",
        "summary-preview": "خلاصه بازبینی:",
        "subject-preview": "بازبین موضوع/سرخط:",
        "blockedtitle": "کاربر محدود بوتت",
        "editingsection": "اصلاح $1(بخش)",
        "editingcomment": "اصلاح $1 (نوکین بخش)",
        "editconflict": "جنگ ورگ اصلاح: $1",
-       "explainconflict": "کسی دگه ای صفحه یا عوض کتت چه وهدی که شما اصلاح آیء شروع کتء.\nبالادی ناحیه متن شامل متن صفحه همی داب که هنگت هست.\nشمی تغییرات ته جهلیگین ناحیه متن جاه کیت.\nشما بایدن وتی تغییرات آن گون هنوکین متن چن و بند کنیت.\n'''فقط''' ناحیه بالادی متن وهدی که شما دکمه  \"{{int:savearticle}}\" ذخیره بنت.",
+       "explainconflict": "کسی دگه ای صفحه یا عوض کتت چه وهدی که شما اصلاح آیء شروع کتء.\nبالادی ناحیه متن شامل متن صفحه همی داب که هنگت هست.\nشمی تغییرات ته جهلیگین ناحیه متن جاه کیت.\nشما بایدن وتی تغییرات آن گون هنوکین متن چن و بند کنیت.\n'''فقط''' ناحیه بالادی متن وهدی که شما دکمه  \"$1\" ذخیره بنت.",
        "yourtext": "شمی متن",
        "storedversion": "نسخه ی ذخیره ای",
        "nonunicodebrowser": "'''هوژاری: شمی بروزر گون یونی کد تنظیم کار نکنت. یک اطراف-کار جاهینن که شما را اجازه دنت صفحات راحت اصلاح کنیت: non-ASCII کاراتران ته جعبه اصلاح په داب کدان hexadecimal جاه کاینت.",
        "right-editprotected": "ویرایش مهاپزت بیتگین پیج گون ای حالت \"{{int:protect-level-sysop}}\"",
        "right-editsemiprotected": "ویرایش مهاپزت بیتگین پیج گون ای حالت \"{{int:protect-level-autoconfirmed}}\"",
        "right-editinterface": "دستبر کاربر اصلاح کن",
-       "right-editusercssjs": "دگر کابرانی فایلان  CSS  و JS اصلاح کن",
        "right-editusercss": "دگر کابرانی فایلان CSS اصلاح کن",
        "right-edituserjs": "دگر کابرانی فایلان JS اصلاح کن",
        "right-editmyusercss": "وتیگین سی اس اس فایلانء ویرایش بکن ات",
        "rcshowhidemine": "$1 اصلاحات من",
        "rcshowhidemine-show": "پیش دارگ",
        "rcshowhidemine-hide": "چیردارگ",
-       "rclinks": "پیش دار آهرین$1 تغییرات ته آهرین $2 روچان<br />$3",
+       "rclinks": "پیش دار آهرین$1 تغییرات ته آهرین $2 روچان",
        "diff": "تفاوت",
        "hist": "تاریخ",
        "hide": "پناه",
        "undeleteviewlink": "پیشدارگ",
        "undeleteinvert": "چپکایگ کتن انتخاب",
        "undeletecomment": "نظر:",
-       "undeletedrevisions": "{{PLURAL:$1|1 بازبینی|$1 بازبینی آن}} واترینگ بیت",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 بازبینی|$1بازبینی ان}} و {{PLURAL:$2|1 فایل|$2 فایلان}} برگردینگ بوتن",
-       "undeletedfiles": "{{PLURAL:$1|1 فایل|$1 فایلآن}} واترینگ بین",
        "cannotundelete": "حذف نه کتن پروشت؛\nیک نفری دگه شاید ای صفحهء  پیشتر حذفی ترینتت.",
        "undeletedpage": "'''$1 تررینگ بوتت'''\n\nشوهاز کن [[Special:Log/delete|آمار حذف]] په یک ثبتی چه نوکین حذفیات و بازتررینگان.",
        "undelete-header": "See [[Special:Log/delete|آمار حذف]] په نوکین حذفی صفحات..",
        "revdelete-restricted": "محدودیت آن په مدیران سیستم بوت",
        "revdelete-unrestricted": "به زور چه مدیران سیستم محدودیتان",
        "rightsnone": "(هچ یک)",
-       "revdelete-summary": "خلاصه اصلاح",
        "limitreport-templateargumentsize": "تراشوانِ ارگومینت اندازه",
        "expandtemplates": "پچ کن تمپلیت آنء",
        "expand_templates_intro": "ای تاک حاص لهتی متنء گریت و کل تمپلتان ته آییء برگشتی مزنش کنت.\nآیی هنچوش عمگر تجزیه کنوکء مزن کنت په داب\n<nowiki>{{</nowiki>#language:…}}, و متغییرانی په داب\n<nowiki>{{</nowiki>CURRENTDAY}}&mdash; در حقیقت هر چیزی که ته دو براکتن.\nآیی ای کارء گون توار کنگ تجزیه کنوک مناسب چه مدیا وی کی وت انجام دنت.",
index 2fc4b3c..34b3de0 100644 (file)
        "externaldberror": "Igwa gayod sala sa arinman kan patunay sa datos-sarayan o ika dae pinagtugutan na bâgohon an saimong panluwas na panindog.",
        "login": "Maglaog",
        "nav-login-createaccount": "Maglaog / magmukna nin panindog",
-       "userlogin": "Maglaog / magmukna nin panindog",
-       "userloginnocreate": "Maglaog ka",
        "logout": "Magluwas",
        "userlogout": "Magluwas",
        "notloggedin": "Dae ka nakalaog",
        "userlogin-noaccount": "Mayo ka nin panindog?",
        "userlogin-joinproject": "Mag-ayon{{SITENAME}}",
-       "nologin": "Mayò ka pa nin panindog (account)? $1.",
-       "nologinlink": "Magmukna nin panindog",
        "createaccount": "Magmukna nin panindog",
-       "gotaccount": "Igwa ka na tabi nin panindog? $1.",
-       "gotaccountlink": "Maglaog",
-       "userlogin-resetlink": "Nakalingaw ka sa panlaog mong detalye?",
        "userlogin-resetpassword-link": "Nalingawan mo an saimong pasa-taramon?",
        "userlogin-helplink2": "Katabangan sa paglalaog",
        "userlogin-loggedin": "Ika nakalaog na tabi bilang si {{GENDER:$1|$1}}.\nGamita an porma sa ibaba sa paglaog bilang ibang paragamit.",
        "createacct-another-email-ph": "Ikaag an estada kan e-surat",
        "createaccountmail": "Gumamit nin sarong temporaryong pampurak na pasa-taramon asin ipadara ini sa pinagsambit na estada kan e-surat",
        "createacct-realname": "Totoong pangaran (opsyonal)",
-       "createaccountreason": "Rason:",
        "createacct-reason": "Rason",
        "createacct-reason-ph": "Tadaw ta ika magmumukna nin ibang panindog",
        "createacct-submit": "Muknaon an saimong panindog",
        "passwordreset-emaildisabled": "E-surat na mga estima pinag-uruntok sa wiking ini.",
        "passwordreset-username": "Paragamit-ngaran:",
        "passwordreset-domain": "Kasakupan:",
-       "passwordreset-capture": "Hilngon an kinaluwasang e-koreo?",
-       "passwordreset-capture-help": "Kun saimong i-tsek ini box, an e-koreo (na igwang temporaryong sekretong panlaog) ipapahiling saimo siring na ini ipagpapadara sa paragamit.",
        "passwordreset-email": "E-koreong address:",
        "passwordreset-emailtitle": "Mga detalye kan panindog sa {{SITENAME}}",
        "passwordreset-emailtext-ip": "May sarong tawo (pwedeng ika gayod, gikan sa IP address na $1) naghahagad nin pagliliwat kan saimong sekretong panlaog para sa{{SITENAME}}($4). An minasunod na paragamit {{PLURAL:$3|panindog iyo an|mga panindog iyo an}} na asosyado kaining e-surat na adres:\n\n$2\n\n{{PLURAL:$3|Ining temporaryong sekretong panlaog|Ining mga temporaryong sekretong panlaog}} mapapaso sa laog nin {{PLURAL:$5|sarong aldaw|$5 mga aldaw}}.\nDapat kang maglaog asin magpili nin sarong baguhon na sekretong panlaog ngunyan. Kun ibang tawo an naghimo kaining kahagadan, o kun saimo nang nagiromdoman an saimong orihinal na sekretong panlaog, asin habo mo nang ribayan ini, ipasipara mo na sana ining mensahe asin ipagpadagos mo nang gamiton an luma mong sekretong panlaog.",
        "showdiff": "Ipahiling an mga kaliwatan",
        "anoneditwarning": "<strong>Patanid:</strong> Ika dae nakalaog. An saimong estada kan IP mahihiling kan publiko kun ika makahimo nin arinman na mga pagliliwat. Kun ika <strong>[$1 naglaog]</strong> o <strong>[$2 magmukna nin panindog]</strong>, an saimong mga pagliliwat ipagpapanungod sa saimong ngaran-paragamit, kaiba an iba pang mga benepisyo.",
        "anonpreviewwarning": "Dae ka tabi nakalaog. An pagtatagama matala kan saimong IP address sa historya nin pagliwat sa pahinang ini.",
-       "missingsummary": "<strong>Pagiromdom:</strong>Ika dae pa nakapagtao nin sumaryo sa pagliwat. Kun i-klik mo an \"{{int:savearticle}}\" giraray, an saimong pagliwat ipagtatagama na mayo kaiyan.",
+       "missingsummary": "<strong>Pagiromdom:</strong>Ika dae pa nakapagtao nin sumaryo sa pagliwat. Kun i-klik mo an \"$1\" giraray, an saimong pagliwat ipagtatagama na mayo kaiyan.",
        "missingcommenttext": "Pakikaag nin sarong komento sa ibaba.",
-       "missingcommentheader": "'''Pagiromdom:''' Ika dae tabi nagtao nin sarong panultol (subject)/Pamayong linya (headline) para kaining sinambit mo.\nKun saimong pinduton an \"{{int:savearticle}}\" giraray, an saimong pigliwat matatagama na mayo kaiyan.",
+       "missingcommentheader": "'''Pagiromdom:''' Ika dae tabi nagtao nin sarong panultol (subject)/Pamayong linya (headline) para kaining sinambit mo.\nKun saimong pinduton an \"$1\" giraray, an saimong pigliwat matatagama na mayo kaiyan.",
        "summary-preview": "Paenot na patanaw nin sumaryo:",
        "subject-preview": "Paenot na patanaw sa Subheto/kapamayuhan:",
        "blockedtitle": "An paragamit pinagbagat",
        "editingsection": "Pinagliliwat an $1 (seksyon)",
        "editingcomment": "Pigliliwat an $1 (bagong seksyon)",
        "editconflict": "Komplikto sa paghihira: $1",
-       "explainconflict": "May ibang parágamit na nagbàgo kaining pahina kan pagpoon mong paghirá kaini.\nNahihilíng ang pahina kan teksto sa parteng itaas kan teksto.\nAn mga pagbabàgo mo nahihilíng sa parteng ibabâ kan teksto.\nKaipuhan mong isalak an mga pagbabàgo mo sa presenteng teksto.\nAn teksto na nasa parteng itaas '''sana''' an maitatagama sa pagpindot mo kan \"{{int:savearticle}}\".",
+       "explainconflict": "May ibang parágamit na nagbàgo kaining pahina kan pagpoon mong paghirá kaini.\nNahihilíng ang pahina kan teksto sa parteng itaas kan teksto.\nAn mga pagbabàgo mo nahihilíng sa parteng ibabâ kan teksto.\nKaipuhan mong isalak an mga pagbabàgo mo sa presenteng teksto.\nAn teksto na nasa parteng itaas '''sana''' an maitatagama sa pagpindot mo kan \"$1\".",
        "yourtext": "Saimong teksto",
        "storedversion": "Itinagamang bersyon",
        "nonunicodebrowser": "'''PATANID: An browser mo bakong unicode complaint. Igwang temporariong sistema na nakaandar para makahirá ka kan mga pahina: mahihiling an mga karakter na non-ASCII sa kahon nin paghirá bilang mga kodang hexadecimal.'''",
        "saveprefs": "Itagama",
        "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",
        "stub-threshold": "Kasagkoran kan <a href=\"#\" class=\"stub\">takod kan tambô</a> pigpopormato:",
        "stub-threshold-disabled": "Pinagpundo",
        "userrights-reason": "Rason:",
        "userrights-no-interwiki": "Ika mayo tabing permkso na magliwat sa paragamit na karapatan sa ibang wikis.",
        "userrights-nodatabase": "An datos-sarayan $1 bakong eksistido o bakong lokal.",
-       "userrights-nologin": "Ika kaipuhan na [[Special:UserLogin|maglaog ka]] na igwa nin panindog na administrador bago ka makapagtao nin karapatan sa paragamit.",
-       "userrights-notallowed": "Ika mayo tabing permiso na magdugang o magtangkas nin mga katanosan kan paragamit.",
        "userrights-changeable-col": "Mga grupo na mapuwede mong baguhon",
        "userrights-unchangeable-col": "Mga grupo na dae mo mapuwedeng baguhon",
        "userrights-conflict": "Kumplikto sa mga kaliwatan nin mga katanosan kan paragamit! Tabi man pakirikisa asin kumpirmaron an saimong mga kaliwatan.",
-       "userrights-removed-self": "Saimong matrayumpong pinagtangkas an sadire mong mga katanosan. Sa siring, ika dae na tabi makakalaog sa pahinang ini.",
        "group": "Grupo:",
        "group-user": "Mga Paragamit",
        "group-autoconfirmed": "Paragamit na sadiring nagkonpirma",
        "right-editprotected": "Liwaton an mga pahina na protektado bilang \"{{int:protect-level-sysop}}\"",
        "right-editsemiprotected": "Liwaton an mga pahina na protektado bilang \"{{int:protect-level-autoconfirmed}}\"",
        "right-editinterface": "Liwaton an paragamit na olay-panlaog",
-       "right-editusercssjs": "Liwaton an CSS asin JavaScript na mga sagunson kan ibang mga paragamit",
        "right-editusercss": "Liwaton an CSS na mga sagunson kan ibang mga paragamit",
        "right-edituserjs": "Liwaton an JavaScript na mga sagunson kan ibang mga paragamit",
        "right-editmyusercss": "Liwaton an saimong sadireng paragamit na sagunson sa CSS",
        "right-siteadmin": "Kandaduhan asin dae pagkandaduhan an datos-sarayan",
        "right-override-export-depth": "Eksportaron an mga pahina kabali na an pinagkilyawan na mga pahina sagkod sa rarom na 5",
        "right-sendemail": "Magpadara nin e-koreo sa ibang mga paragamit",
-       "right-passwordreset": "Tanawon an e-koreo kan pagbabago nin sekretong panlaog",
        "grant-editmycssjs": "Liwaton an saimong paragamit CSS/JavaScript",
        "grant-editmyoptions": "Liwaton an saimong paragamit na mga kamuyahan",
        "grant-viewdeleted": "Tanawon an pinagpurang mga sagunson asin pahina",
        "rcshowhidemine": "$1 sakong mga pagliliwat",
        "rcshowhidemine-show": "Ipatanaw",
        "rcshowhidemine-hide": "Itago",
-       "rclinks": "Ipahilíng an $1 huring mga kaliwatan sa laog nin huring $2 na mga aldaw<br />$3",
+       "rclinks": "Ipahilíng an $1 huring mga kaliwatan sa laog nin huring $2 na mga aldaw",
        "diff": "kalaenan",
        "hist": "sagaysay",
        "hide": "Tagóon",
        "undeleteviewlink": "hilngon",
        "undeleteinvert": "Baliktada an pinilian",
        "undeletecomment": "An rason:",
-       "undeletedrevisions": "{{PLURAL:$1|1 rebisyon|$1 mga rebisyon}} ipinagbalik",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 rebisyon|$1 mga rebisyon}} asin {{PLURAL:$2|1 sagunson|$2 mga sagunson}} ipinagbalik",
-       "undeletedfiles": "{{PLURAL:$1|1 sagunson|$1 mga sagunson}} ipinagbalik",
        "cannotundelete": "An dae pagpura nagpalya:\n$1",
        "undeletedpage": "'''binalik na an $1 '''\n\nIkonsultar an [[Special:Log/delete|historial nin pagparâ]] para mahiling an lista nin mga kaaaging pagparâ asin pagbalik.",
        "undelete-header": "Hilingon an [[Special:Log/delete|historial kan pagparâ]] kan mga kaaagi pa sanang pinarang páhina.",
        "feedback-thanks": "Salamat! An saimong balik-simbag pinagposte sa pahina \"[$2 $1]\".",
        "searchsuggest-search": "Hanapa baya",
        "searchsuggest-containing": "may laog na...",
-       "api-error-badaccess-groups": "Ika daeng permiso na magkarga nin mga sagunson sa wiking ini.",
        "api-error-badtoken": "Panlaog na kasalaan: Raot na pangilip",
-       "api-error-copyuploaddisabled": "An pagkakarga sa paagi kan URL pinag-untok sa serbidor na ini.",
-       "api-error-duplicate": "Igwa {{PLURAL:$1|nin ibang sagunson|mga iba pang mga sagunson}} na yaon sa sityo na igwa nin kaparehong laog.",
-       "api-error-duplicate-archive": "Igwa {{PLURAL:$1|kaidto nin ibang sagunson|kaidto nin ibang mga sagunson}} na yaon sa sityo na igwa nin kaparehong laog, alagad {{PLURAL:$1|ini kaidto|sinda kaidto}} pinagpura na.",
-       "api-error-empty-file": "An sagunson na saimong pinagsumite daeng laog.",
        "api-error-emptypage": "Nagmumukna nin bago, mayong laog na mga pahina dae pinagtutugutan.",
-       "api-error-fetchfileerror": "Panlaog na kasalaan: May bagay na naging sala habang hinahakot an sagunson.",
-       "api-error-fileexists-forbidden": "Sarong sagunson na igwang ngaran na \"$1\" an yaon na, asin dae puwedeng masalambawan.",
-       "api-error-fileexists-shared-forbidden": "Sarong sagunson na igwang ngaran na \"$1\" an yaon na sa pinagheras na repositoryo nin sagunson, asin dae puwedeng masalambawan.",
-       "api-error-file-too-large": "An sagunson na saimong pinagsumite dakulaon na maray.",
-       "api-error-filename-tooshort": "An pangaran nin sagunson halipoton na maray.",
-       "api-error-filetype-banned": "An tipong ini nin sagunson pinagpangalad na.",
-       "api-error-filetype-banned-type": "$1 {{PLURAL:$4|dae itinutugot na tipo nin sagunson|dae itinutugot na mga tipo nin mga sagunson}}. An pinagtutugutan na {{PLURAL:$3|sagunson iyo an tipo na|mga sagunson iyo an mga tipo na}} $2.",
-       "api-error-filetype-missing": "An pangaran nin sagunson nawawaraan nin ekstensyon.",
-       "api-error-hookaborted": "An modipikasyon na saimong pinagprubaran na hihimoon ipinag-untok nin sarong ekstensyon.",
-       "api-error-http": "Panlaog na kasalaan: Dae nakakakonekta sa serbidor.",
-       "api-error-illegal-filename": "An pangaran nin sagunson dae pinagtutugutan.",
-       "api-error-internal-error": "Panlaog na kasalaan: May bagay na napasala sa pagproseso kan saimong pagkakarga sa wiki.",
-       "api-error-invalid-file-key": "Panlaog na kasalaan: An sagunson dae natagboan sa temporaryong sarayan.",
-       "api-error-missingparam": "Panlaog na kasalaan: Nawawara an mga parametro sa kahagadan.",
-       "api-error-missingresult": "Panlaog na kasalaan: Dae madeterminaran kun an kopya naipadagos.",
-       "api-error-mustbeloggedin": "Ika dapat na nakalaog tanganing makapagkarga nin mga sagunson.",
-       "api-error-mustbeposted": "Panlaog na kasalaan: An kahagadan minakaipo nin HTTP POST.",
-       "api-error-noimageinfo": "An pagkarga nagdagos, alagad an serbidor dae nakapagtao samuya nin anuman na impormasyon manunungod sa sagunson.",
-       "api-error-nomodule": "Panlaog na kasalaan: Mayong pankargang modyul an naikaag.",
-       "api-error-ok-but-empty": "Panlaog na kasalaan: Mayong simbag gikan sa serbidor.",
-       "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\".",
-       "api-error-unknown-error": "Panlaog na kasalaan: May sarong bagay na napasala kan prubaran na ikarga an saimong sagunson.",
+       "api-error-stashfailed": "Panlaog na kasalaan: An serbidor nagpalya sa pagsaray kan temporaryong sagunson.",
        "api-error-unknown-warning": "Dae midbid na patanid: \"$1\".",
        "api-error-unknownerror": "Dae midbidon na kasalaan: \"$1\".",
-       "api-error-uploaddisabled": "An pagkakarga pinag-untok nguna kaining wiki.",
-       "api-error-verification-error": "Ining sagunson baka koraptu, o igwa nin salang ekstensyon.",
        "duration-seconds": "$1 {{PLURAL:$1|segundo|mga segundo}}",
        "duration-minutes": "$1 {{PLURAL:$1|minuto|minutos}}",
        "duration-hours": "$1 {{PLURAL:$1|oras|mga oras}}",
index 448acb5..ec2814b 100644 (file)
        "anontalk": "Гутаркі",
        "navigation": "Навігацыя",
        "and": "&#32;і",
-       "qbfind": "Знайсьці",
-       "qbbrowse": "Праглядзець",
-       "qbedit": "Рэдагаваць",
-       "qbpageoptions": "Гэтая старонка",
-       "qbmyoptions": "Мае старонкі",
        "faq": "Частыя пытаньні",
-       "faqpage": "Project:Частыя пытаньні",
        "actions": "Дзеяньні",
        "namespaces": "Прасторы назваў",
        "variants": "Варыянты",
        "edit-local": "Рэдагаваць лякальнае апісаньне",
        "create": "Стварыць",
        "create-local": "Дадаць лякальнае апісаньне",
-       "editthispage": "Рэдагаваць гэтую старонку",
-       "create-this-page": "Стварыць гэтую старонку",
        "delete": "Выдаліць",
-       "deletethispage": "Выдаліць гэтую старонку",
-       "undeletethispage": "Аднавіць гэту старонку",
        "undelete_short": "Аднавіць $1 {{PLURAL:$1|рэдагаваньне|рэдагаваньні|рэдагаваньняў}}",
        "viewdeleted_short": "Паказаць $1 {{PLURAL:$1|выдаленае рэдагаваньне|выдаленыя рэдагаваньні|выдаленых рэдагаваньняў}}",
        "protect": "Абараніць",
        "protect_change": "зьмяніць",
-       "protectthispage": "Абараніць гэтую старонку",
        "unprotect": "Зьмяніць абарону",
-       "unprotectthispage": "Зьмяніць абарону старонкі",
        "newpage": "Новая старонка",
-       "talkpage": "Абмеркаваць гэтую старонку",
        "talkpagelinktext": "гутаркі",
        "specialpage": "Спэцыяльная старонка",
        "personaltools": "Асабістыя прылады",
-       "articlepage": "Паказаць старонку зьместу",
        "talk": "Абмеркаваньне",
        "views": "Рэжымы",
        "toolbox": "Інструмэнты",
        "tool-link-userrights": "Зьмяніць групы {{GENDER:$1|ўдзельніка|ўдзельніцы}}",
        "tool-link-userrights-readonly": "Паказаць групы {{GENDER:$1|ўдзельніка|ўдзельніцы}}",
        "tool-link-emailuser": "Даслаць {{GENDER:$1|удзельніку|удзельніцы}} ліст электроннай поштай",
-       "userpage": "Паказаць старонку ўдзельніка",
-       "projectpage": "Паказаць старонку праекту",
        "imagepage": "Паказаць старонку файла",
        "mediawikipage": "Паказаць старонку паведамленьня",
        "templatepage": "Паказаць старонку шаблёну",
        "preview": "Папярэдні прагляд",
        "showpreview": "Праглядзець",
        "showdiff": "Паказаць зьмены",
-       "blankarticle": "<strong>Папярэджаньне:</strong> вы ствараеце пустую старонку.\nКалі вы націсьніце «{{int:savearticle}}» яшчэ раз, старонка будзе створаная без аніякага зьместу.",
+       "blankarticle": "<strong>Папярэджаньне:</strong> вы ствараеце пустую старонку.\nКалі вы націсьніце «$1» яшчэ раз, старонка будзе створаная без аніякага зьместу.",
        "anoneditwarning": "<strong>Папярэджаньне</strong>: вы не ўвайшлі ў сыстэму. Ваш IP-адрас будзе бачны ўсім, калі вы адрэдагуеце старонку. Калі вы <strong>[$1 ўвойдзеце]</strong> або <strong>[$2 створыце рахунак]</strong>, вашыя рэдагаваньні будуць зьвязаныя з вашым імем карыстальніка, а таксама вам будуць даступныя дадатковыя перавагі.",
        "anonpreviewwarning": "<em>Вы не ўвайшлі ў сыстэму. Па захаваньні старонкі ваш IP-адрас будзе дададзены ў яе гісторыю рэдагаваньняў.</em>",
        "missingsummary": "'''Напамін:''' Вы не пазначылі кароткае апісаньне зьменаў.\nКалі Вы націсьніце кнопку «Запісаць» яшчэ раз, Вашае рэдагаваньне будзе запісанае без апісаньня.",
-       "selfredirect": "<strong>Папярэджаньне:</strong> вы перанакіроўваеце старонку саму на сябе.\nМагчыма, вы пазначылі няслушную старонку для перанакіраваньня або вы рэдагуеце ня тую старонку.\nКалі вы націсьніце «{{int:savearticle}}» яшчэ раз, перанакіраваньне будзе створанае.",
+       "selfredirect": "<strong>Папярэджаньне:</strong> вы перанакіроўваеце старонку саму на сябе.\nМагчыма, вы пазначылі няслушную старонку для перанакіраваньня або вы рэдагуеце ня тую старонку.\nКалі вы націсьніце «$1» яшчэ раз, перанакіраваньне будзе створанае.",
        "missingcommenttext": "Калі ласка, увядзіце камэнтар ніжэй.",
-       "missingcommentheader": "<strong>Напамін:</strong> Вы не пазначылі загаловак камэнтара. Калі Вы націсьніце кнопку «{{int:savearticle}}» яшчэ раз, Вашая зьмена будзе захаваная без камэнтара.",
+       "missingcommentheader": "<strong>Напамін:</strong> Вы не пазначылі загаловак камэнтара. Калі Вы націсьніце кнопку «$1» яшчэ раз, Вашая зьмена будзе захаваная без камэнтара.",
        "summary-preview": "Папярэдні прагляд апісаньня зьменаў:",
        "subject-preview": "Папярэдні прагляд загалоўку:",
        "previewerrortext": "Адбылася памылка пры спробе папярэдняга прагляду вашых зьменаў.",
        "editingsection": "Рэдагаваньне $1 (разьдзел)",
        "editingcomment": "Рэдагаваньне $1 (новы разьдзел)",
        "editconflict": "Канфлікт рэдагаваньняў: $1",
-       "explainconflict": "Нехта зьмяніў старонку падчас вашага рэдагаваньня.\nУ верхнім тэкставым акне знаходзіцца цяперашні зьмест старонкі.\nВашыя зьмены паказаныя ў ніжнім акне.\nВам трэба перанесьці вашыя зьмены ў цяперашні тэкст.\nКалі вы націсьніце «{{int:savearticle}}», будзе захаваны <strong>толькі</strong> тэкст верхняга вакна.",
+       "explainconflict": "Нехта зьмяніў старонку падчас вашага рэдагаваньня.\nУ верхнім тэкставым акне знаходзіцца цяперашні зьмест старонкі.\nВашыя зьмены паказаныя ў ніжнім акне.\nВам трэба перанесьці вашыя зьмены ў цяперашні тэкст.\nКалі вы націсьніце «$1», будзе захаваны <strong>толькі</strong> тэкст верхняга вакна.",
        "yourtext": "Ваш тэкст",
        "storedversion": "Захаваная вэрсія",
        "nonunicodebrowser": "<strong>Папярэджаньне: ваш браўзэр не падтрымлівае Unicode-кадаваньне.</strong>\nУ выніку гэтага ўсе сымбалі ў полі рэдагаваньня, ня ўключаныя ў ASCII, будуць замененыя на іх шаснаццаткавыя коды.",
        "mergehistory-merge": "Наступныя вэрсіі [[:$1]] можна аб'яднаць у [[:$2]].\nКарыстайцеся кнопкамі для аб'яднаньня толькі выбранага дыяпазону рэдагаваньняў.\nЗаўважце, што выкарыстаньне навігацыйных спасылак выдаліць зьвесткі ў гэтым слупку.",
        "mergehistory-go": "Паказаць праўкі, якія магчыма аб’яднаць",
        "mergehistory-submit": "Аб’яднаць гісторыі рэдагаваньняў",
-       "mergehistory-empty": "Ð\9dÑ\8fма Ð³Ñ\96Ñ\81Ñ\82оÑ\80Ñ\8bÑ\96 Ñ\80Ñ\8dдагаванÑ\8cнÑ\8fÑ\9e, Ñ\8fкÑ\83Ñ\8e Ð¼Ð°Ð³Ñ\87Ñ\8bма Ð°Ð±'яднаць.",
-       "mergehistory-done": "$3 {{PLURAL:$3|вэрсія|вэрсіі|вэрсіяў}} з $1 пасьпяхова аб’яднаныя ў [[:$2]].",
-       "mergehistory-fail": "Не атрымалася аб'яднаць гісторыі старонак. Калі ласка, праверце парамэтры старонкі і часу.",
+       "mergehistory-empty": "Ð\9dÑ\8fма Ð¿Ñ\80авак, Ñ\8fкÑ\96Ñ\8f Ð¼Ð°Ð³Ñ\87Ñ\8bма Ð°Ð±â\80\99яднаць.",
+       "mergehistory-done": "$3 {{PLURAL:$3|вэрсія|вэрсіі|вэрсіяў}} з $1 {{PLURAL:$3|1=была аб’яднаная|былі аб’яднаныя}} ў [[:$2]].",
+       "mergehistory-fail": "Не атрымалася аб’яднаць гісторыі старонак, калі ласка, праверце парамэтры старонкі і часу.",
        "mergehistory-fail-bad-timestamp": "Няслушная метка часу.",
        "mergehistory-fail-invalid-source": "Няслушная старонка-крыніца.",
        "mergehistory-fail-invalid-dest": "Няслушная мэтавая старонка.",
        "mergehistory-no-destination": "Не існуе мэтавай старонкі $1.",
        "mergehistory-invalid-source": "Крынічная старонка мусіць мець карэктную назву.",
        "mergehistory-invalid-destination": "Мэтавая старонка мусіць мець карэктную назву.",
-       "mergehistory-autocomment": "Гісторыя [[:$1]] аб'яднаная ў [[:$2]]",
-       "mergehistory-comment": "Гісторыя [[:$1]] аб'яднаная ў [[:$2]]: $3",
+       "mergehistory-autocomment": "Гісторыя [[:$1]] абяднаная ў [[:$2]]",
+       "mergehistory-comment": "Гісторыя [[:$1]] абяднаная ў [[:$2]]: $3",
        "mergehistory-same-destination": "Крынічная і мэтавая старонкі ня могуць супадаць",
        "mergehistory-reason": "Прычына:",
        "mergelog": "Журнал аб’яднаньняў",
        "mergelogpagetext": "Ніжэй знаходзіцца сьпіс апошніх аб'яднаньняў гісторыяў старонак.",
        "history-title": "$1 — гісторыя зьменаў",
        "difference-title": "Розьніца паміж вэрсіямі «$1»",
-       "difference-title-multipage": "«$1» і «$2» — розьніца паміж старонкамі",
+       "difference-title-multipage": "Розьніца паміж старонкамі «$1» і «$2»",
        "difference-multipage": "(Розьніца паміж старонкамі)",
        "lineno": "Радок $1:",
        "compareselectedversions": "Параўнаць выбраныя вэрсіі",
        "nextn-title": "{{PLURAL:$1|Наступны $1 вынік|Наступныя $1 вынікі|Наступныя $1 вынікаў}}",
        "shown-title": "Паказваць $1 {{PLURAL:$1|вынік|вынікі|вынікаў}} на старонцы",
        "viewprevnext": "Паказаць ($1 {{int:pipe-separator}} $2) ($3)",
-       "searchmenu-exists": "* Старонка '''[[$1]]'''",
+       "searchmenu-exists": "<strong>У гэтай вікі ёсьць старонка з назвай «[[:$1]]».</strong> {{PLURAL:$2|0=|Глядзіце таксама іншыя знойдзеныя вынікі пошуку.}}",
        "searchmenu-new": "<strong>Стварыць старонку «[[:$1]]» у {{GRAMMAR:месны|{{SITENAME}}}}!</strong> {{PLURAL:$2|0=|Глядзіце таксама старонку, знойдзеную ў выніку пошуку.|Глядзіце таксама вынікі пошуку.}}",
        "searchprofile-articles": "Старонкі са зьместам",
        "searchprofile-images": "Мультымэдыя",
        "searchprofile-everything-tooltip": "Шукаць усюды (у тым ліку на старонках абмеркаваньня)",
        "searchprofile-advanced-tooltip": "Шукаць у дадатковых прасторах назваў",
        "search-result-size": "$1 ($2 {{PLURAL:$2|слова|словы|словаў}})",
-       "search-result-category-size": "$1 {{PLURAL:$1|элемэнт|элемэнты|элемэнтаў}} ($2 {{PLURAL:$2|падкатэгорыя|падкатэгорыі|падкатэгорыяў}}, $3 {{PLURAL:|файл|файлы|файлаў}})",
+       "search-result-category-size": "$1 {{PLURAL:$1|элемэнт|элемэнты|элемэнтаў}} ($2 {{PLURAL:$2|падкатэгорыя|падкатэгорыі|падкатэгорыяў}}, $3 {{PLURAL:$3|файл|файлы|файлаў}})",
        "search-redirect": "(перанакіраваньне $1)",
        "search-section": "(сэкцыя $1)",
        "search-category": "(катэгорыя $1)",
        "search-file-match": "(супадае зь зьмесьцівам файла)",
        "search-suggest": "Магчыма, вы мелі на ўвазе: $1",
        "search-rewritten": "Паказаныя вынікі для $1. Замест гэтага шукаць $2.",
-       "search-interwiki-caption": "СÑ\83межнÑ\8bÑ\8f Ð¿Ñ\80аекÑ\82Ñ\8b",
+       "search-interwiki-caption": "Ð\92Ñ\8bнÑ\96кÑ\96 Ð· Ñ\81Ñ\83межнÑ\8bÑ\85 Ð¿Ñ\80аекÑ\82аÑ\9e",
        "search-interwiki-default": "Вынікі з $1:",
        "search-interwiki-more": "(яшчэ)",
        "search-interwiki-more-results": "больш вынікаў",
        "mypreferences": "Налады",
        "prefs-edits": "Колькасьць рэдагаваньняў:",
        "prefsnologintext2": "Калі ласка, увайдзіце ў сыстэму, каб зьмяніць вашыя налады.",
-       "prefs-skin": "Ð\90Ñ\84аÑ\80мленÑ\8cне",
+       "prefs-skin": "ТÑ\8dма Ð°Ñ\84аÑ\80мленÑ\8cнÑ\8f",
        "skin-preview": "Папярэдні прагляд",
        "datedefault": "Па змоўчаньні",
        "prefs-labs": "Экспэрымэнтальныя магчымасьці",
        "recentchanges-legend": "Налады апошніх зьменаў",
        "recentchanges-summary": "Сачыце за апошнімі зьменамі ў {{GRAMMAR:месны|{{SITENAME}}}} на гэтай старонцы.",
        "recentchanges-noresult": "Зьмены, што пасуюць дадзенаму пэрыяду і крытэрам, ня знойдзеныя.",
-       "recentchanges-feed-description": "Сачыце за апошнімі зьменамі ў {{GRAMMAR:месны|{{SITENAME}}}} праз гэтую стужку.",
+       "recentchanges-feed-description": "Сачыце за апошнімі зьменамі ў вікі праз гэтую стужку.",
        "recentchanges-label-newpage": "Гэтым рэдагаваньнем была створаная новая старонка",
        "recentchanges-label-minor": "Гэта дробнае рэдагаваньне",
        "recentchanges-label-bot": "Гэтае рэдагаваньне зробленае робатам",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (глядзіце таксама [[Special:NewPages|сьпіс новых старонак]])",
        "recentchanges-submit": "Паказаць",
        "rcfilters-activefilters": "Актыўныя фільтры",
+       "rcfilters-quickfilters": "Захаваныя налады фільтру",
+       "rcfilters-quickfilters-placeholder-title": "Спасылкі яшчэ не захаваныя",
+       "rcfilters-quickfilters-placeholder-description": "Каб захаваць налады вашага фільтру і выкарыстаць іх пазьней, націсьніце на выяву закладкі ў зоне актыўнага фільтру ніжэй.",
+       "rcfilters-savedqueries-defaultlabel": "Захаваныя фільтры",
+       "rcfilters-savedqueries-rename": "Перайменаваць",
+       "rcfilters-savedqueries-setdefault": "Усталяваць па змоўчаньні",
+       "rcfilters-savedqueries-unsetdefault": "Выдаліць пазнаку па змоўчаньні",
+       "rcfilters-savedqueries-remove": "Выдаліць",
+       "rcfilters-savedqueries-new-name-label": "Назва",
+       "rcfilters-savedqueries-apply-label": "Захаваць налады",
+       "rcfilters-savedqueries-cancel-label": "Адмяніць",
+       "rcfilters-savedqueries-add-new-title": "Захаваць цяперашнія налады фільтру",
        "rcfilters-restore-default-filters": "Аднавіць фільтры па змоўчаньні",
        "rcfilters-clear-all-filters": "Ачысьціць усе фільтры",
        "rcfilters-search-placeholder": "Фільтар апошніх зьменаў (праглядзець або пачніце друкаваць)",
        "rcfilters-filter-unregistered-label": "Незарэгістраваныя",
        "rcfilters-filter-unregistered-description": "Рэдактары, якія не ўвайшлі ў сыстэму",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Гэты фільтар канфліктуе з {{PLURAL:$2|1=наступным фільтрам|наступнымі фільтрамі}} дасьведчаных удзельнікаў, {{PLURAL:$2|1=які знаходзіць|якія знаходзяць}} толькі зарэгістраваных удзельнікаў: $1",
-       "rcfilters-filtergroup-authorship": "РÑ\8dдагаваÑ\86Ñ\8c Ð°Ñ\9eÑ\82аÑ\80Ñ\81Ñ\82ва",
-       "rcfilters-filter-editsbyself-label": "Ð\92аÑ\88Ñ\8bÑ\8f Ð¿Ñ\80аÑ\9eкі",
-       "rcfilters-filter-editsbyself-description": "Ð\9fÑ\80аÑ\9eкÑ\96, Ð·Ñ\80обленÑ\8bÑ\8f Ð²Ð°Ð¼Ñ\96",
-       "rcfilters-filter-editsbyother-label": "Ð\9fÑ\80аÑ\9eкÑ\96 Ñ\96нÑ\88Ñ\8bÑ\85 Ñ\83дзелÑ\8cнÑ\96каÑ\9e",
-       "rcfilters-filter-editsbyother-description": "Ð\9fÑ\80аÑ\9eкÑ\96, Ð·Ñ\80обленÑ\8bÑ\8f Ñ\96нÑ\88Ñ\8bмÑ\96 Ñ\9eдзелÑ\8cнÑ\96камÑ\96 (нÑ\8f Ð²Ð°Ð¼Ñ\96).",
+       "rcfilters-filtergroup-authorship": "Ð\90Ñ\9eÑ\82аÑ\80Ñ\81Ñ\82ва Ñ\9eнÑ\91Ñ\81кÑ\83",
+       "rcfilters-filter-editsbyself-label": "Ð\97Ñ\8cменÑ\8b, Ð·Ñ\80обленÑ\8bÑ\8f Ð²Ð°Ð¼і",
+       "rcfilters-filter-editsbyself-description": "Ð\92аÑ\88 Ñ\83лаÑ\81нÑ\8b Ñ\9eнÑ\91Ñ\81ак.",
+       "rcfilters-filter-editsbyother-label": "Ð\97Ñ\8cменÑ\8b, Ð·Ñ\80обленÑ\8bÑ\8f Ñ\96нÑ\88Ñ\8bмÑ\96",
+       "rcfilters-filter-editsbyother-description": "УÑ\81е Ð·Ñ\8cменÑ\8b, Ð·Ð° Ð²Ñ\8bклÑ\8eÑ\87Ñ\8dнÑ\8cнем Ð²Ð°Ñ\88Ñ\8bÑ\85.",
        "rcfilters-filtergroup-userExpLevel": "Узровень досьведу (толькі для зарэгістраваных удзельнікаў)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Гэты фільтар досьведу знаходзіць толькі зарэгістраваных удзельнікаў, такім чынам фільтар канфліктуе зь фільтрам «Незарэгістраваныя».",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Фільтар «Незарэгістраваныя» канфліктуе з адным ці некалькімі фільтрамі ўзроўню досьведу, якія шукаюць толькі зарэгістраваных удзельнікаў. Канфліктныя фільтры пазначаныя ў разьдзеле актыўных фільтраў вышэй.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Навічкі",
        "rcfilters-filter-user-experience-level-newcomer-description": "Менш за 10 правак і 4 дні актыўнасьці.",
        "rcfilters-filter-user-experience-level-learner-label": "Вучні",
-       "rcfilters-filter-user-experience-level-learner-description": "Болей дзён актыўнасьці і правак, чым у «навічкоў», але меней чым у «дасьведчаных удзельнікаў».",
+       "rcfilters-filter-user-experience-level-learner-description": "Больш досьведу, чым у «навічкоў», але меней чым у «дасьведчаных удзельнікаў».",
        "rcfilters-filter-user-experience-level-experienced-label": "Дасьведчаныя ўдзельнікі",
        "rcfilters-filter-user-experience-level-experienced-description": "Больш за 30 дзён актыўнасьці і 500 правак.",
        "rcfilters-filtergroup-automated": "Аўтаматычны ўнёсак",
        "rcfilters-filter-minor-description": "Праўкі, якія аўтар пазначыў як дробныя.",
        "rcfilters-filter-major-label": "Звычайныя праўкі",
        "rcfilters-filter-major-description": "Праўкі, не пазначаныя як дробныя.",
+       "rcfilters-filtergroup-watchlist": "Старонкі ў сьпісах назіраньня",
+       "rcfilters-filter-watchlist-watched-label": "У сьпісе назіраньня",
+       "rcfilters-filter-watchlist-watched-description": "Зьмены старонак у вашым сьпісе назіраньня.",
+       "rcfilters-filter-watchlist-watchednew-label": "Новыя зьмены ў сьпісе назіраньня",
+       "rcfilters-filter-watchlist-watchednew-description": "Зьмены старонак у вашым сьпісе назіраньня, якія вы не наведвалі з моманту гэтых зьменаў.",
+       "rcfilters-filter-watchlist-notwatched-label": "Ня ў сьпісе назіраньня",
+       "rcfilters-filter-watchlist-notwatched-description": "Усё, за выключэньнем зьменаў старонак з вашага сьпісу назіраньня.",
        "rcfilters-filtergroup-changetype": "Тып зьмены",
        "rcfilters-filter-pageedits-label": "Рэдагаваньні старонкі",
        "rcfilters-filter-pageedits-description": "Рэдагаваньні вікізьместу, абмеркаваньняў, апісаньняў катэгорыяў…",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Фільтар «Дробныя праўкі» канфліктуе з адным ці некалькімі фільтрамі «Тыпаў зьменаў», бо некаторыя тыпы зьменаў ня могуць быць вызначаныя як «дробныя». Канфліктныя фільтры пазначаныя ў разьдзеле актыўных фільтраў вышэй.",
        "rcfilters-hideminor-conflicts-typeofchange": "Некаторыя тыпы зьменаў ня могуць быць вызначаныя як «дробныя», таму гэты фільтар канфліктуе з наступнымі фільтрамі «Тыпаў зьменаў»: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Гэты фільтар тыпаў зьменаў канфліктуе зь фільтрам «Дробныя праўкі». Некаторыя тыпы зьменаў ня могуць быць вызначаныя як «дробныя».",
+       "rcfilters-filtergroup-lastRevision": "Цяперашняя вэрсія",
+       "rcfilters-filter-lastrevision-label": "Апошняя вэрсія",
+       "rcfilters-filter-lastrevision-description": "Апошняя зьмена на старонцы.",
+       "rcfilters-filter-previousrevision-label": "Ранейшыя вэрсіі",
+       "rcfilters-filter-previousrevision-description": "Усе зьмены, якія не зьяўляюцца самымі апошнімі на старонцы.",
+       "rcfilters-filter-excluded": "Выключаны",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:не</strong> $1",
+       "rcfilters-view-tags": "Меткі",
        "rcnotefrom": "Ніжэй {{PLURAL:$5|знаходзіцца зьмена|знаходзяцца зьмены}} з <strong>$4 $3</strong> (да <strong>$1</strong> на старонку).",
        "rclistfromreset": "Скінуць выбар даты",
        "rclistfrom": "Паказаць зьмены з $2 $3",
        "rcshowhidecategorization": "$1 катэгарызацыю старонак",
        "rcshowhidecategorization-show": "Паказаць",
        "rcshowhidecategorization-hide": "Схаваць",
-       "rclinks": "Паказаць апошнія $1 зьменаў за мінулыя $2 дзён<br />$3",
+       "rclinks": "Паказаць апошнія $1 зьменаў за мінулыя $2 дзён",
        "diff": "розьн",
        "hist": "гіст",
        "hide": "Схаваць",
        "apisandbox-sending-request": "Адпраўка API-запыту…",
        "apisandbox-loading-results": "Атрымліваем API-вынікі…",
        "apisandbox-results-error": "Адбылася памылка пры загрузцы адказу на API-запыт: $1.",
+       "apisandbox-results-login-suppressed": "Гэты запыт быў апрацаваны, як выкананы ўдзельнікам, які не ўвайшоў у сыстэму, бо ён мог быць выкарыстаны, каб абысьці бясьпеку Same-Origin браўзэру. Заўважце, што аўтаматычная апрацоўка токенаў API-пясочніцы не працуе правільна з такімі запытамі, калі ласка, запаўняйце іх уручную.",
        "apisandbox-request-selectformat-label": "Паказаць зьвесткі запыту як:",
        "apisandbox-request-format-url-label": "Радок запыту URL",
        "apisandbox-request-url-label": "URL-адрас запыту:",
        "enotif_body_intro_moved": "Старонка {{GRAMMAR:родны|{{SITENAME}}}} «$1» была перанесеная $PAGEEDITDATE {{GENDER:$2|удзельнікам|удзельніцай}} $2, па цяперашнюю вэрсію глядзіце $3.",
        "enotif_body_intro_restored": "Старонка {{GRAMMAR:родны|{{SITENAME}}}} «$1» была адноўленая $PAGEEDITDATE {{GENDER:$2|удзельнікам|удзельніцай}} $2, па цяперашнюю вэрсію глядзіце $3.",
        "enotif_body_intro_changed": "Старонка {{GRAMMAR:родны|{{SITENAME}}}} «$1» была зьмененая $PAGEEDITDATE {{GENDER:$2|удзельнікам|удзельніцай}} $2, па цяперашнюю вэрсію глядзіце $3.",
-       "enotif_lastvisited": "Ð\93лÑ\8fдзÑ\96Ñ\86е Ð½Ð° $1 Ñ\83Ñ\81е Ð°Ð¿Ð¾Ñ\88нÑ\96Ñ\8f Ð·Ñ\8cменÑ\8b, Ñ\8fкÑ\96Ñ\8f Ð°Ð´Ð±Ñ\8bлÑ\96Ñ\81Ñ\8f Ð¿Ð°Ñ\81Ñ\8cлÑ\8f Ð\92аÑ\88ага Ð°Ð¿Ð¾Ñ\88нÑ\8fга Ð½Ð°Ð²ÐµÐ´Ð²Ð°Ð½Ñ\8cнÑ\8f.",
+       "enotif_lastvisited": "Ð\94зелÑ\8f Ñ\9eÑ\81Ñ\96Ñ\85 Ð·Ñ\8cменаÑ\9e Ð· Ð²Ð°Ñ\88ага Ð°Ð¿Ð¾Ñ\88нÑ\8fга Ð½Ð°Ð²ÐµÐ´Ð²Ð°Ð½Ñ\8cнÑ\8f, Ð³Ð»Ñ\8fдзÑ\96Ñ\86е $1",
        "enotif_lastdiff": "Глядзіце $1, каб пабачыць гэтую зьмену.",
        "enotif_anon_editor": "ананімны ўдзельнік $1",
        "enotif_body": "Вітаем, $WATCHINGUSERNAME.\n\n$PAGEINTRO $NEWPAGE\n\nАпісаньне зьменаў: $PAGESUMMARY $PAGEMINOREDIT\n\nЗьвязацца з рэдактарам:\nпраз электронную пошту: $PAGEEDITOR_EMAIL\nпразь вікі-старонку: $PAGEEDITOR_WIKI\n\nПаведамленьні ня будуць дасылацца ў выпадку новых дзеяньняў, пакуль Вы не наведаеце гэтую старонку па ўваходзе ў сыстэму. Вы таксама можаце адключыць паведамленьні пра зьмены для ўсіх старонак з Вашага сьпісу назіраньня.\n\n             Сыстэма паведамленьняў {{GRAMMAR:родны|{{SITENAME}}}}\n\n--\nКаб зьмяніць налады абвяшчэньня праз электронную пошту, наведайце:\n{{canonicalurl:{{#special:Preferences}}}}\n\nКаб зьмяніць налады сьпісу назіраньня, наведайце:\n{{canonicalurl:{{#special:Preferences}}}}\n\nКаб выдаліць старонку з Вашага сьпісу назіраньня, наведайце:\n$UNWATCHURL\n\nЗваротная сувязь і дапамога:\n$HELPPAGE",
        "sp-contributions-uploads": "загрузкі",
        "sp-contributions-logs": "журналы падзеяў",
        "sp-contributions-talk": "гутаркі",
-       "sp-contributions-userrights": "кіраваньне правамі ўдзельнікаў і ўдзельніц",
+       "sp-contributions-userrights": "кіраваньне правамі {{GENDER:$1|ўдзельніка|ўдзельніцы}}",
        "sp-contributions-blocked-notice": "{{GENDER:$1|Гэты ўдзельнік у дадзены момант заблякаваны|Гэтая ўдзельніца ў дадзены момант заблякаваная}}. Апошні запіс з журнала блякаваньняў пададзены ніжэй для даведкі:",
        "sp-contributions-blocked-notice-anon": "Гэты IP-адрас у дадзены момант заблякаваны.\nАпошні запіс з журнала блякаваньняў пададзены ніжэй для даведкі:",
        "sp-contributions-search": "Пошук унёску",
-       "sp-contributions-username": "IP-адрас альбо імя ўдзельніка/ўдзельніцы:",
+       "sp-contributions-username": "IP-адрас альбо імя ўдзельніка ці ўдзельніцы:",
        "sp-contributions-toponly": "Паказваць толькі зьмены, якія зьяўляюцца апошнімі вэрсіямі",
        "sp-contributions-newonly": "Паказваць толькі праўкі, якімі былі створаныя старонкі",
        "sp-contributions-hideminor": "Схаваць дробныя праўкі",
        "autoblocklist": "Аўтаблякаваньні",
        "autoblocklist-submit": "Шукаць",
        "autoblocklist-legend": "Сьпіс аўтаблякаваньняў",
+       "autoblocklist-localblocks": "{{PLURAL:$1|1=Лякальнае аўтаблякаваньне|Лякальныя аўтаблякаваньні}}",
+       "autoblocklist-total-autoblocks": "Агульная колькасьць аўтаматычных блякаваньняў: $1",
+       "autoblocklist-empty": "Сьпіс аўтаблякаваньняў пусты.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|1=Іншае аўтаблякаваньне|Іншыя аўтаблякаваньні}}",
        "ipblocklist": "Заблякаваныя ўдзельнікі",
        "ipblocklist-legend": "Пошук заблякаванага ўдзельніка",
        "blocklist-userblocks": "Схаваць блякаваньні рахункаў",
        "tooltip-pt-mycontris": "{{GENDER:|Ваш}} унёсак",
        "tooltip-pt-anoncontribs": "Сьпіс рэдагаваньняў, зробленых з гэтага IP-адрасу",
        "tooltip-pt-login": "Вас запрашаюць увайсьці, хаця гэта і неабавязкова.",
+       "tooltip-pt-login-private": "Каб карыстацца гэтай вікі, вам трэба ўвайсьці",
        "tooltip-pt-logout": "Выйсьці",
        "tooltip-pt-createaccount": "Мы прапануем вам стварыць рахунак і ўвайсьці, але гэта не абавязкова",
        "tooltip-ca-talk": "Абмеркаваньне зьместу старонкі",
        "anonymous": "{{PLURAL:$1|1=Ананімны ўдзельнік ці ўдзельніца|Ананімныя ўдзельнікі і ўдзельніцы}} {{GRAMMAR:родны|{{SITENAME}}}}",
        "siteuser": "Удзельнік/удзельніца {{GRAMMAR:родны|{{SITENAME}}}} $1",
        "anonuser": "Ананімны ўдзельнік {{GRAMMAR:родны|{{SITENAME}}}} $1",
-       "lastmodifiedatby": "Гэтую старонку апошні раз рэдагаваў $3 $2, $1.",
+       "lastmodifiedatby": "Гэтую старонку апошні раз {{GENDER:$4|рэдагаваў|рэдагавала}} $3 $2 $1.",
        "othercontribs": "На аснове працы $1.",
        "others": "іншыя",
        "siteusers": "{{PLURAL:$2|1={{GENDER:$1|Удзельнік|Удзельніца}}|Удзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1",
        "newimages-legend": "Фільтар",
        "newimages-label": "Назва файла (альбо яе частка):",
        "newimages-user": "IP-адрас ці імя ўдзельніка",
+       "newimages-newbies": "Паказаць толькі ўнёсак з новых рахункаў",
        "newimages-showbots": "Паказаць загружаныя робатамі",
        "newimages-hidepatrolled": "Схаваць патруляваныя загрузкі",
+       "newimages-mediatype": "Тып мэдыя:",
        "noimages": "Выявы адсутнічаюць.",
        "gallery-slideshow-toggle": "Пераключыць мініятуры",
        "ilsubmit": "Шукаць",
        "confirmrecreate-noreason": "{{GENDER:$1|Удзельнік|Удзельніца}} [[User:$1|$1]] ([[User talk:$1|гутаркі]]) {{GENDER:$1|выдаліў|выдаліла}} гэтую старонку, пасьля таго як Вы пачалі яе рэдагаваць. Калі ласка, пацьвердзіце, што Вы сапраўды жадаеце стварыць гэтую старонку ізноў.",
        "recreate": "Стварыць ізноў",
        "unit-pixel": "пкс",
+       "confirm-purge-title": "Ачысьціць кэш гэтай старонкі",
        "confirm_purge_button": "Добра",
        "confirm-purge-top": "Ачысьціць кэш гэтай старонкі?",
        "confirm-purge-bottom": "Ачыстка кэшу старонкі прывядзе да адлюстраваньня яе апошняй вэрсіі.",
        "tags-create-reason": "Прычына:",
        "tags-create-submit": "Стварыць",
        "tags-create-no-name": "Вы мусіце пазначыць назву меткі.",
-       "tags-create-invalid-chars": "Назвы метак ня мусяць утрымліваць коскі (<code>,</code>) або сымбалі касых рысаў (<code>/</code>).",
+       "tags-create-invalid-chars": "Назвы метак ня мусяць утрымліваць коскі (<code>,</code>), сымбалі вэртыкальных (<code>|</code>) або касых рысаў (<code>/</code>).",
        "tags-create-invalid-title-chars": "Назвы метак ня мусяць утрымліваць сымбалі, якія нельга ўжываць у назвах старонак.",
        "tags-create-already-exists": "Метка «$1» ужо існуе.",
        "tags-create-warnings-above": "Пры спробе стварыць метку «$1» {{PLURAL:$2|выяўленае наступнае папярэджаньне|выяўленыя наступныя папярэджаньні}}:",
        "logentry-delete-restore": "$1 {{GENDER:$2|аднавіў|аднавіла}} старонку $3 ($4)",
        "logentry-delete-restore-nocount": "$1 {{GENDER:$2|аднавіў|аднавіла}} старонку $3",
        "restore-count-revisions": "$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}",
+       "restore-count-files": "$1 {{PLURAL:$1|файл|файлы|файлаў}}",
        "logentry-delete-event": "$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=падзеі ў журнале|падзеяў у журнале}} на $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|вэрсіі|вэрсіяў}} старонкі $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць падзеяў у журнале на $3",
        "special-characters-group-thai": "Тайскія",
        "special-characters-group-lao": "Лаоскія",
        "special-characters-group-khmer": "Кхмэрскія",
+       "special-characters-group-canadianaboriginal": "Канадзкае складовае пісьмо",
        "special-characters-title-endash": "кароткі працяжнік",
        "special-characters-title-emdash": "доўгі працяжнік",
        "special-characters-title-minus": "мінус",
        "mw-widgets-titleinput-description-redirect": "перанакіраваньне на $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Дадаць катэгорыю…",
        "mw-widgets-usersmultiselect-placeholder": "Дадаць яшчэ…",
+       "date-range-from": "З даты:",
+       "date-range-to": "Да даты:",
        "sessionmanager-tie": "Немагчыма выкарыстаць адначасова некалькі тыпаў аўтэнтыфікацыі: $1.",
        "sessionprovider-generic": "$1 сэсіі",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "сэсіі на падставе файлаў-кукі",
        "authmanager-provider-password": "Аўтэнтыфікацыя на аснове паролю",
        "authmanager-provider-password-domain": "Аўтэнтыфікацыя на аснове паролю і дамэну",
        "authmanager-provider-temporarypassword": "Часовы пароль",
+       "authprovider-confirmlink-message": "Калі грунтавацца на вашых няўдаўніх спробах уваходу, наступныя рахункі могуць быць далучаныя да вашага вікірахунку. Іх далучэньне дазволіць вам уваходзіць праз гэтыя рахункі. Калі ласка, абярце якія рахункі трэба далучыць.",
+       "authprovider-confirmlink-request-label": "Рахункі, якія павінны быць злучаныя",
+       "authprovider-confirmlink-success-line": "$1: пасьпяхова далучаны.",
+       "authprovider-confirmlink-failed": "Далучэньне рахунку не атрымалася цалкам: $1",
+       "authprovider-confirmlink-ok-help": "Працягнуць пасьля паказу паведамленьняў пра памылкі далучэньня.",
+       "authprovider-resetpass-skip-label": "Прапусьціць",
+       "authprovider-resetpass-skip-help": "Прапусьціць скіданьне паролю.",
+       "authform-nosession-login": "Аўтэнтыфікацыя была пасьпяховай, але ваш браўзэр ня змог «запомніць» уваход у сыстэму.\n\n$1",
+       "authform-nosession-signup": "Рахунак быў створаны, але ваш браўзэр ня змог «запомніць» уваход у сыстэму.\n\n$1",
+       "authform-newtoken": "Адсутнічае токен. $1",
+       "authform-notoken": "Адсутнічае токен",
+       "authform-wrongtoken": "Няслушны токен",
        "changecredentials": "Зьмена ўліковых зьвестак",
        "removecredentials": "Выдаленьне ўліковых зьвестак",
        "removecredentials-submit": "Выдаліць уліковыя зьвесткі",
index d076f51..9cd29ac 100644 (file)
@@ -29,7 +29,8 @@
                        "Nemo bis",
                        "SamGold",
                        "Liashko",
-                       "Mechanizatar"
+                       "Mechanizatar",
+                       "Artsiom91"
                ]
        },
        "tog-underline": "Падкрэсліваць спасылкі:",
        "anontalk": "Размовы",
        "navigation": "Навігацыя",
        "and": "&#32;і",
-       "qbfind": "Знайсці",
-       "qbbrowse": "Выбраць",
-       "qbedit": "Правіць",
-       "qbpageoptions": "Гэтая старонка",
-       "qbmyoptions": "Свае старонкі",
        "faq": "ЧАПЫ",
-       "faqpage": "Project:ЧАПЫ",
        "actions": "Дзеянні",
        "namespaces": "Прасторы імёнаў",
        "variants": "Варыянты",
        "edit-local": "Правіць тутэйшае апісанне",
        "create": "Стварыць",
        "create-local": "Дадаць тутэйшае апісанне",
-       "editthispage": "Правіць гэту старонку",
-       "create-this-page": "Стварыць старонку",
        "delete": "Сцерці",
-       "deletethispage": "Сцерці гэту старонку",
-       "undeletethispage": "Аднавіць гэту старонку",
        "undelete_short": "Аднавіць {{PLURAL:$1|адну праўку|$1 правак}}",
        "viewdeleted_short": "Паказаць {{PLURAL:$1|адну сцёртую праўку|$1 сцёртыя праўкі}}",
        "protect": "Ахова",
        "protect_change": "змяніць",
-       "protectthispage": "Пачаць ахоўваць гэтую старонку",
        "unprotect": "Змяніць ахову",
-       "unprotectthispage": "Змяніць ахову гэтай старонкі",
        "newpage": "Новая старонка",
-       "talkpage": "Размовы пра гэтую старонку",
        "talkpagelinktext": "Размовы",
        "specialpage": "Адмысловая старонка",
        "personaltools": "Асабістыя прылады",
-       "articlepage": "Паказаць старонку змесціва",
        "talk": "Размовы",
        "views": "Віды",
        "toolbox": "Прылады",
        "tool-link-userrights": "Змяніць групы {{GENDER:$1|ўдзельніка|ўдзельніцы}}",
        "tool-link-userrights-readonly": "Паказаць групы {{GENDER:$1|ўдзельніка|ўдзельніцы}}",
        "tool-link-emailuser": "Напісаць ліст {{GENDER:$1|удзельніку|удзельніцы}}",
-       "userpage": "Паказаць старонку ўдзельніка",
-       "projectpage": "Паказаць старонку праекта",
        "imagepage": "Гл. старонку файла",
        "mediawikipage": "Паказаць старонку паведамлення",
        "templatepage": "Паказаць старонку шаблона",
        "preview": "Перадпаказ",
        "showpreview": "Як будзе",
        "showdiff": "Розніца",
-       "blankarticle": "<strong>Увага:</strong> Вы ствараеце пустую старонку.\nКалі вы націсніце \"{{int:savearticle}}\" яшчэ раз, будзе створана старонка без аніякага зместу.",
+       "blankarticle": "<strong>Увага:</strong> Вы ствараеце пустую старонку.\nКалі вы націсніце \"$1\" яшчэ раз, будзе створана старонка без аніякага зместу.",
        "anoneditwarning": "<strong>Увага!</strong> Вы не аўтарызаваліся на сайце. Ваш IP-адрас будзе публічна бачным, калі вы будзеце ўносіць любыя праўкі. Калі вы <strong>[$1 ўвойдзеце]</strong> ці <strong>[$2 створыце ўліковы запіс]</strong>, праўкі замест гэтага будуць звязаны з вашым імем карыстальніка, а таксама ў вас з'явяцца іншыя перавагі.",
        "anonpreviewwarning": "''Вы не прайшлі ідэнтыфікацыю Захаванне будзе запісана з вашым IP адрасам у гісторыі правак гэтай старонкі.''",
-       "missingsummary": "<strong>Нагадваем:</strong> вы не ўпісалі тлумачэння для сваёй праўкі. Калі націснуць \"{{int:savearticle}}\" яшчэ раз, праўка будзе замацавана без тлумачэння.",
-       "selfredirect": "<strong>Увага:</strong> Вы перанакіроўваеце старонку на самую сябе.\nМагчыма, вы ўказалі няправільную мэту перанакіравання, ці правіце не тую старонку.\nКалі націсніце \"{{int:savearticle}}\" ізноў, перанакіраванне ўсё ж будзе створана.",
+       "missingsummary": "<strong>Нагадваем:</strong> вы не ўпісалі тлумачэння для сваёй праўкі. Калі націснуць \"$1\" яшчэ раз, праўка будзе замацавана без тлумачэння.",
+       "selfredirect": "<strong>Увага:</strong> Вы перанакіроўваеце старонку на самую сябе.\nМагчыма, вы ўказалі няправільную мэту перанакіравання, ці правіце не тую старонку.\nКалі націсніце \"$1\" ізноў, перанакіраванне ўсё ж будзе створана.",
        "missingcommenttext": "Калі ласка, увядзіце ніжэй каментарый.",
-       "missingcommentheader": "'''Напамінанне:''' вы нічога не ўпісалі ў тэму/загаловак гэтай заўвагі.\nПры паўторным націсканні кнопкі '{{int:savearticle}}' ваша праўка будзе запісана з пустым загалоўкам.",
+       "missingcommentheader": "'''Напамінанне:''' вы нічога не ўпісалі ў тэму/загаловак гэтай заўвагі.\nПры паўторным націсканні кнопкі '$1' ваша праўка будзе запісана з пустым загалоўкам.",
        "summary-preview": "Перадпаказ апісання:",
        "subject-preview": "Перадпаказ тэмы/загалоўка:",
        "previewerrortext": "Здарылася памылка пры спробе папярэдняга прагляду вашых змяненняў.",
        "editingsection": "Правім $1 (раздзел)",
        "editingcomment": "Правім $1 (новы раздзел)",
        "editconflict": "Канфлікт правак: $1",
-       "explainconflict": "Нехта іншы змяніў старонку пасля таго, як вы пачалі працу з ёю.\nВерхняе тэкставае поле паказвае актуальны зыходны тэкст старонкі.\nВашы праўкі паказаны ў ніжнім тэкставым полі.\nВам трэба будзе далучыць іх да актуальнага зыходнага тэксту.\nКалі націснуць \"{{int:savearticle}}\", будзе запісаны '''толькі''' тэкст у верхнім полі.",
+       "explainconflict": "Нехта іншы змяніў старонку пасля таго, як вы пачалі працу з ёю.\nВерхняе тэкставае поле паказвае актуальны зыходны тэкст старонкі.\nВашы праўкі паказаны ў ніжнім тэкставым полі.\nВам трэба будзе далучыць іх да актуальнага зыходнага тэксту.\nКалі націснуць \"$1\", будзе запісаны '''толькі''' тэкст у верхнім полі.",
        "yourtext": "Свой тэкст",
        "storedversion": "Захаваная версія",
        "nonunicodebrowser": "<strong>Увага: ваш браўзер не працуе з Unicode-кадаваннем.</strong> Каб вы маглі карэктна правіць старонкі, усе знакі, не ўключаныя ў ASCII, паказваюцца ў рэдактарскім акне як шаснаццаткавыя коды.",
        "post-expand-template-argument-warning": "Увага: на гэтай старонцы ёсць прынамсі адзін параметр шаблона, які занадта доўгі ў разгорнутым выглядзе.\nТакія параметры былі прапушчаныя.",
        "post-expand-template-argument-category": "Старонкі, на якіх прапушчаны параметры шаблонаў",
        "parser-template-loop-warning": "Цыклічнае ўключэнне шаблона: [[$1]]",
+       "template-loop-category": "Старонкі з зацыкліваннем у шаблонах",
+       "template-loop-category-desc": "Старонка змяшчае зацыкліванне шаблона, гэта значыць уключае шаблон, які выклікае сам сябе рэкурсіўна",
        "parser-template-recursion-depth-warning": "Вычарпаны ліміт глыбіні ўключэння шаблонаў ($1)",
        "language-converter-depth-warning": "Перавышана глыбіня моўнага канвертэра ($1)",
        "node-count-exceeded-category": "Старонкі, якія перасягнулі колькасць вузлоў",
        "right-editsemiprotected": "Правіць старонкі, што пад аховай \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Рэдагаваць мадэль змесціва старонкі",
        "right-editinterface": "Правіць карыстальніцкі інтэрфейс",
-       "right-editusercssjs": "Правіць файлы CSS і JS іншых удзельнікаў",
        "right-editusercss": "Правіць файлы CSS іншых удзельнікаў",
        "right-edituserjs": "Правіць файлы JS іншых удзельнікаў",
        "right-editmyusercss": "Правіць уласныя файлы CSS",
        "recentchanges-legend-heading": "<strong>Легенда:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (гл. асобна [[Special:NewPages|новыя старонкі]])",
        "recentchanges-submit": "Паказаць",
+       "rcfilters-activefilters": "Актыўныя фільтры",
+       "rcfilters-savedqueries-rename": "Перайменаваць",
+       "rcfilters-savedqueries-setdefault": "Устанавіць прадвызначаным",
+       "rcfilters-savedqueries-unsetdefault": "Зняць прадвызначэнне",
+       "rcfilters-savedqueries-remove": "Сцерці",
+       "rcfilters-savedqueries-new-name-label": "Назва",
+       "rcfilters-savedqueries-apply-label": "Запісаць настройкі",
+       "rcfilters-savedqueries-cancel-label": "Скасаваць",
+       "rcfilters-savedqueries-add-new-title": "Запісаць цяперашнія настройкі фільтра",
+       "rcfilters-restore-default-filters": "Аднавіць фільтры па змоўчанні",
+       "rcfilters-clear-all-filters": "Ачысціць усе фільтры",
+       "rcfilters-invalid-filter": "Недапушчальны фільтр",
+       "rcfilters-filterlist-title": "Фільтры",
+       "rcfilters-filterlist-whatsthis": "Што гэта?",
+       "rcfilters-highlightmenu-title": "Выбраць колер",
+       "rcfilters-highlightmenu-help": "Выбраць колер для падсвечвання уласцівасці",
+       "rcfilters-filtergroup-registration": "Рэгістрацыя ўдзельніка",
+       "rcfilters-filter-registered-label": "Зарэгістраваны",
+       "rcfilters-filter-registered-description": "Залагіненыя рэдактары",
+       "rcfilters-filter-unregistered-label": "Незарэгістраваны",
+       "rcfilters-filter-editsbyself-label": "Вашыя змены",
+       "rcfilters-filter-editsbyself-description": "Ваш унёсак",
+       "rcfilters-filter-editsbyother-label": "Змены іншых удзельнікаў",
+       "rcfilters-filter-editsbyother-description": "Усе змены, акрамя Вашых",
+       "rcfilters-filtergroup-userExpLevel": "Вопыт (толькі для зарэгістраваных удзельнікаў)",
        "rcfilters-filter-user-experience-level-learner-description": "Болей дзён актыўнасці і правак, чым у «навічкоў», але меней чым у «дасведчаных удзельнікаў».",
        "rcfilters-filter-user-experience-level-experienced-description": "Больш за 30 дзён актыўнасці і 500 правак.",
        "rcfilters-filter-bots-label": "Бот",
+       "rcfilters-filter-humans-label": "Чалавек (не бот)",
+       "rcfilters-filter-humans-description": "Праўкі, зробленыя людзьмі",
+       "rcfilters-filter-patrolled-label": "Дагледжаны",
+       "rcfilters-filter-unpatrolled-label": "Недагледжаны",
+       "rcfilters-filtergroup-lastRevision": "Цяперашняя версія",
+       "rcfilters-filter-lastrevision-label": "Актуальная версія",
        "rcnotefrom": "Ніжэй {{PLURAL:$5|паказана змяненне|паказаны змены}} з <strong>$3, $4</strong> (не больш за <strong>$1</strong>).",
        "rclistfrom": "Паказаць змены з $3 $2",
        "rcshowhideminor": "$1 дробныя праўкі",
        "rcshowhidecategorization": "$1 катэгарызацыю старонак",
        "rcshowhidecategorization-show": "Паказаць",
        "rcshowhidecategorization-hide": "Схаваць",
-       "rclinks": "Паказаць апошнія $1 змен за мінулыя $2 дзён<br />$3",
+       "rclinks": "Паказаць апошнія $1 змен за мінулыя $2 дзён",
        "diff": "розн.",
        "hist": "гіст.",
        "hide": "Не ўлічваць",
        "trackingcategories-msg": "Катэгорыя для асочвання",
        "trackingcategories-name": "Назва паведамлення",
        "trackingcategories-desc": "Крытэрый уключэння ў катэгорыю",
+       "restricted-displaytitle-ignored-desc": "Старонка змяшчае <code><nowiki>{{DISPLAYTITLE}}</nowiki></code>, які ігнаруецца з-за несупадзення з актуальнай назвай старонкі",
        "noindex-category-desc": "Старонка не індэксуецца пошукавымі робатамі, таму што на ёй ёсць магічнае слова <code><nowiki>__NOINDEX__</nowiki></code> і яна знаходзіцца ў прасторы назваў, дзе гэты сцяг дазволены.",
        "index-category-desc": "На старонцы ёсць магічнае слова <code><nowiki>__INDEX__</nowiki></code> (і старонка знаходзіцца ў прасторы назваў, дзе гэты сцяг дазволены), таму яна індэксуецца пошукавымі робатамі у выпадках, калі гэтага звычайна не адбываецца.",
        "post-expand-template-inclusion-category-desc": "Пасля разгортвання ўсіх шаблонаў памер старонкі перавышае <code>$wgMaxArticleSize</code>, таму некаторыя шаблоны пакінуты неразгорнутымі.",
        "editcomment": "Тлумачэнне праўкі было: <em>$1</em>.",
        "revertpage": "Праўкі аўтарства [[Special:Contributions/$2|$2]] ([[User talk:$2|размова]]) адкочаныя; вернута апошняя версія аўтарства [[User:$1|$1]]",
        "revertpage-nouser": "Праўкі (імя ўдзельніка схавана) адкочаны да версіі {{GENDER:$1|[[User:$1|$1]]}}",
-       "rollback-success": "Адкочаны праўкі $1; вернута апошняя версія $2.",
+       "rollback-success": "Адкочаны праўкі {{GENDER:$3|$1}}; вернута апошняя версія {{GENDER:$4|$2}}.",
        "rollback-success-notify": "Адкочаны праўкі $1;\nвернута апошняя версія $2. [$3 Паказаць змены]",
        "sessionfailure-title": "Памылка сеансу",
        "sessionfailure": "Магчыма, ёсць праблемы з вашым сеансам працы ў сістэме. Таму вам было адмоўлена ў выкананні дзеяння, каб засцерагчыся ад захопу сеанса.\n\nВярніцеся на папярэднюю старонку, перазагрузіце яе і тады паспрабуйце зноў.",
        "changecontentmodel-emptymodels-text": "Змесціва [[:$1]] не можа быць ператворана ні ў які тып.",
        "log-name-contentmodel": "Журнал змен мадэляў змесціва",
        "log-description-contentmodel": "Падзеі, звязаныя з мадэлямі змесціва старонак",
+       "logentry-contentmodel-new": "$1 {{GENDER:$2|стварыў|стварыла}} старонку $3, выкарыстаўшы нетыповую мадэль змесціва \"$5\"",
        "logentry-contentmodel-change-revertlink": "адкаціць",
        "logentry-contentmodel-change-revert": "адкат",
        "protectlogpage": "Журнал аховы",
        "undeleteviewlink": "паказаць",
        "undeleteinvert": "Перавярнуць выбранае",
        "undeletecomment": "Прычына:",
-       "undeletedrevisions": "Адноўлен{{PLURAL:$1|а 1 версія|ы $1 версіі|ы $1 версій}}",
-       "undeletedrevisions-files": "Адноўлен{{PLURAL:$1|а 1 версія|ы $1 версіі|ыя $1 версій}} і {{PLURAL:$2|1 файл|$2 файлы|$2 файлаў}}",
-       "undeletedfiles": "Адноўлен{{PLURAL:$1|ы 1 файл|ы $1 файлы|ыя $1 файлаў}}",
        "cannotundelete": "Не ўдалося аднавіць:\n$1",
        "undeletedpage": "'''$1 была адноўлена'''\n\nПраверце пералік нядаўніх сціранняў і аднаўленняў у [[Special:Log/delete|журнале сціранняў]].",
        "undelete-header": "Нядаўна сцёртыя старонкі можна паглядзець у [[Special:Log/delete|журнале сціранняў]].",
        "sp-contributions-uploads": "укладанні",
        "sp-contributions-logs": "журналы",
        "sp-contributions-talk": "размовы",
-       "sp-contributions-userrights": "распараджэнне правамі ўдзельніка",
+       "sp-contributions-userrights": "распараджэнне правамі {{GENDER:$1|ўдзельніка|ўдзельніцы}}",
        "sp-contributions-blocked-notice": "Гэты ўдзельнік у дадзены момант заблакаваны. Ніжэй прыведзены апошні запіс з журнала блакаванняў:",
        "sp-contributions-blocked-notice-anon": "Гэты IP-адрас у дадзены момант заблакаваны.\nНіжэй прыведзены апошні запіс з журнала блакаванняў:",
        "sp-contributions-search": "Знайсці ўклад",
        "unblocked-id": "Блок $1 быў зняты",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] быў разблакіраваны.",
        "blocklist": "Заблакаваныя ўдзельнікі",
+       "autoblocklist-submit": "Шукаць",
        "ipblocklist": "Заблакаваныя ўдзельнікі",
        "ipblocklist-legend": "Знайсці заблакаванага ўдзельніка",
        "blocklist-userblocks": "Схаваць блакіроўкі ўліковых запісаў",
        "version-libraries-description": "Апісанне",
        "version-libraries-authors": "Аўтары",
        "redirect": "Перасылка да файла, ID удзельніка, старонкі, версіі ці журнала",
-       "redirect-summary": "Гэта адмысловая старонка перасылае да файла (з назвы файла), на старонку (з ідэнтыфікатара версіі ці старонкі), ці на старонку ўдзельніка (калі дадзены лічбавы ID удзельніка). Ужыванне: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#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]], ці [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Перайсці",
        "redirect-lookup": "Шукаць:",
        "redirect-value": "Значэнне:",
        "htmlform-user-not-valid": "<strong>$1</strong> - недапушчальная назва уліковага запісу.",
        "logentry-delete-delete": "$1 {{GENDER:$2|сцёр|сцёрла}} старонку $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|выдаліў|выдаліла}} перанакіраванне $3 шляхам перазапісу",
-       "logentry-delete-restore": "$1 {{GENDER:$2|аднавіў|аднавіла}} старонку $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|аднавіў|аднавіла}} старонку $3 ($4)",
        "logentry-delete-event": "$1 {{GENDER:$2|змяніў|змяніла}} бачнасць {{PLURAL:$5|запісу журнала|$5 запісаў журнала}} $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|змяніў|змяніла}} бачнасць {{PLURAL:$5|версіі|$5 версій|$5 версій}} старонкі $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|змяніў|змяніла}} бачнасць запісаў журнала $3",
        "mw-widgets-mediasearch-input-placeholder": "Пошук мультымедыя",
        "mw-widgets-titleinput-description-new-page": "старонка яшчэ не існуе",
        "mw-widgets-titleinput-description-redirect": "перанакіраванне на $1",
+       "randomrootpage": "Выпадковая карэнная старонка",
        "log-action-filter-all": "Усе",
        "log-action-filter-block-block": "заблакаваць",
        "log-action-filter-block-reblock": "Змена блакіроўкі",
index 30d0ee1..6bc5f21 100644 (file)
@@ -55,7 +55,7 @@
        "tog-editondblclick": "Редактиране на страниците чрез двойно щракване",
        "tog-editsectiononrightclick": "Възможност за редактиране на раздел при щракване с десния бутон върху заглавието му",
        "tog-watchcreations": "Добавяне на създадените от мен страници и качените от мен файлове към списъка ми за наблюдение",
-       "tog-watchdefault": "Ð\94обавÑ\8fне Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86иÑ\82е, ÐºÐ¾Ð¸Ñ\82о Ñ\80едакÑ\82иÑ\80ам, Ð² списъка ми за наблюдение",
+       "tog-watchdefault": "Ð\94обавÑ\8fне Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86иÑ\82е, ÐºÐ¾Ð¸Ñ\82о Ñ\80едакÑ\82иÑ\80ам, ÐºÑ\8aм списъка ми за наблюдение",
        "tog-watchmoves": "Добавяне на преместените от мен страници и файлове към списъка ми за наблюдение",
        "tog-watchdeletion": "Добавяне на изтритите от мен страници и файлове към списъка ми за наблюдение",
        "tog-watchuploads": "Добавяне на новите качени от мен файлове към списъка ми за наблюдение",
@@ -92,8 +92,8 @@
        "editfont-style": "Стил на шрифта в кутията за редактиране:",
        "editfont-default": "По подразбиране за браузъра",
        "editfont-monospace": "Равноширок шрифт",
-       "editfont-sansserif": "ШÑ\80иÑ\84Ñ\82 Ð±ÐµÐ· Ð¸Ð·Ð²Ð¸Ð²ÐºÐ¸",
-       "editfont-serif": "ШÑ\80иÑ\84Ñ\82 Ñ\81 Ð¸Ð·Ð²Ð¸Ð²ÐºÐ¸",
+       "editfont-sansserif": "Ð\9dеÑ\81еÑ\80иÑ\84ен Ñ\88Ñ\80иÑ\84Ñ\82",
+       "editfont-serif": "СеÑ\80иÑ\84ен Ñ\88Ñ\80иÑ\84Ñ\82",
        "sunday": "неделя",
        "monday": "понеделник",
        "tuesday": "вторник",
        "category_header": "Страници в категория „$1“",
        "subcategories": "Подкатегории",
        "category-media-header": "Файлове в категория „$1“",
-       "category-empty": "''В момента тази категория не съдържа страници или файлове.''",
+       "category-empty": "<em>В момента тази категория не съдържа страници или файлове.</em>",
        "hidden-categories": "{{PLURAL:$1|Скрита категория|Скрити категории}}",
        "hidden-category-category": "Скрити категории",
        "category-subcat-count": "{{PLURAL:$2|Тази категория съдържа само една подкатегория.|{{PLURAL:$1|Показана е една|Показани са $1}} от общо $2 подкатегории на тази категория.}}",
        "anontalk": "Беседа",
        "navigation": "Навигация",
        "and": "&#32;и",
-       "qbfind": "Търсене",
-       "qbbrowse": "Избор",
-       "qbedit": "Редактиране",
-       "qbpageoptions": "Тази страница",
-       "qbmyoptions": "Моите страници",
        "faq": "ЧЗВ",
-       "faqpage": "Project:ЧЗВ",
        "actions": "Действия",
        "namespaces": "Именни пространства",
        "variants": "Варианти",
        "navigation-heading": "Навигация",
        "errorpagetitle": "Грешка",
        "returnto": "Обратно към $1.",
-       "tagline": "от {{SITENAME}}",
+       "tagline": "Ð\9eт {{SITENAME}}",
        "help": "Помощ",
        "search": "Търсене",
        "searchbutton": "Търсене",
        "history": "История",
        "history_short": "История",
        "history_small": "история",
-       "updatedmarker": "има Ð¿Ñ\80омÑ\8fна (оÑ\82 Ð¿Ð¾Ñ\81ледноÑ\82о Ð²Ð¸ Ð²Ð»Ð¸Ð·Ð°Ð½Ðµ)",
+       "updatedmarker": "пÑ\80оменено Ð¾Ñ\82 Ð¿Ð¾Ñ\81ледноÑ\82о Ð¼Ð¸ Ð¿Ð¾Ñ\81еÑ\89ение",
        "printableversion": "Версия за печат",
        "permalink": "Постоянна препратка",
        "print": "Печат",
        "edit-local": "Редактиране на локалното описание",
        "create": "Създаване",
        "create-local": "Добавяне на локално описание",
-       "editthispage": "Редактиране",
-       "create-this-page": "Създаване на страницата",
        "delete": "Изтриване",
-       "deletethispage": "Изтриване",
-       "undeletethispage": "Възстановяване на страницата",
        "undelete_short": "Възстановяване на {{PLURAL:$1|една редакция|$1 редакции}}",
        "viewdeleted_short": "Преглед на {{PLURAL:$1|една изтрита редакция|$1 изтрити редакции}}",
        "protect": "Защита",
        "protect_change": "промяна",
-       "protectthispage": "Защита",
        "unprotect": "Промяна на защитата",
-       "unprotectthispage": "Промяна на защитата на тази страница",
        "newpage": "Нова страница",
-       "talkpage": "Дискусионна страница",
        "talkpagelinktext": "беседа",
        "specialpage": "Специална страница",
        "personaltools": "Лични инструменти",
-       "articlepage": "Преглед на страница",
        "talk": "Беседа",
        "views": "Прегледи",
        "toolbox": "Инструменти",
        "tool-link-userrights": "Промяна на {{GENDER:$1|потребителските}} групи",
        "tool-link-userrights-readonly": "Преглед на {{GENDER:$1|потребителските}} групи",
        "tool-link-emailuser": "Писмо до {{GENDER:$1|потребителя}}",
-       "userpage": "Потребителска страница",
-       "projectpage": "Проектна страница",
        "imagepage": "Преглед на файла",
        "mediawikipage": "Преглед на съобщението",
        "templatepage": "Преглед на шаблона",
        "redirectedfrom": "(пренасочване от $1)",
        "redirectpagesub": "Пренасочваща страница",
        "redirectto": "Пренасочване към:",
-       "lastmodifiedat": "Последна промяна на страницата: в $2, на $1.",
-       "viewcount": "СÑ\82Ñ\80аниÑ\86аÑ\82а Ðµ Ð±Ð¸Ð»Ð° Ð¿Ñ\80еглеждана {{PLURAL:$1|един Ð¿Ñ\8aÑ\82|$1 Ð¿Ñ\8aÑ\82и}}.",
+       "lastmodifiedat": "Последна редакция на страницата: в $2, на $1.",
+       "viewcount": "Страницата е преглеждана {{PLURAL:$1|един път|$1 пъти}}.",
        "protectedpage": "Защитена страница",
        "jumpto": "Направо към:",
        "jumptonavigation": "навигация",
        "pool-timeout": "Изтичане на времето за заключване на страницата",
        "pool-queuefull": "Опашката за заявки е пълна",
        "pool-errorunknown": "Непозната грешка",
-       "poolcounter-usage-error": "Грешка при ползване $1",
+       "poolcounter-usage-error": "Грешка при употреба: $1",
        "aboutsite": "За {{SITENAME}}",
        "aboutpage": "Project:За {{SITENAME}}",
        "copyright": "Освен ако не е посочено друго, съдържанието е достъпно при условията на $1.",
        "currentevents-url": "Project:Текущи събития",
        "disclaimers": "Предупреждение",
        "disclaimerpage": "Project:Предупреждение",
-       "edithelp": "Ð\9fомоÑ\89 Ð¿Ñ\80и редактиране",
+       "edithelp": "Ð\9fомоÑ\89 Ð·Ð° редактиране",
        "helppage-top-gethelp": "Помощ",
        "mainpage": "Начална страница",
        "mainpage-description": "Начална страница",
        "portal-url": "Проект:Портал на общността",
        "privacy": "Поверителност",
        "privacypage": "Проект:Защита на личните данни",
-       "badaccess": "Грешка при достъп",
-       "badaccess-group0": "Ð\9dÑ\8fмаÑ\82е Ð¿Ñ\80ава Ð´Ð° Ð¸Ð·Ð²Ñ\8aÑ\80Ñ\88иÑ\82е Ð¸Ñ\81каното действие.",
-       "badaccess-groups": "Ð\98Ñ\81каното действие могат да изпълнят само потребители от {{PLURAL:$2|групата|някоя от следните групи:}} $1.",
+       "badaccess": "Ð\93Ñ\80еÑ\88ка Ð¿Ñ\80и Ð¿Ñ\80аваÑ\82а Ð½Ð° Ð´Ð¾Ñ\81Ñ\82Ñ\8aп",
+       "badaccess-group0": "Ð\9dÑ\8fмаÑ\82е Ð¿Ñ\80ава Ð´Ð° Ð¸Ð·Ð²Ñ\8aÑ\80Ñ\88иÑ\82е Ð·Ð°Ñ\8fвеното действие.",
+       "badaccess-groups": "Ð\97аÑ\8fвеното действие могат да изпълнят само потребители от {{PLURAL:$2|групата|някоя от следните групи:}} $1.",
        "versionrequired": "Изисква се версия $1 на МедияУики",
        "versionrequiredtext": "Използването на тази страница изисква версия $1 на софтуера МедияУики. Вижте [[Special:Version|текущата версия]].",
        "ok": "Добре",
        "nstab-template": "Шаблон",
        "nstab-help": "Помощ",
        "nstab-category": "Категория",
-       "mainpage-nstab": "Ð\93лавна страница",
+       "mainpage-nstab": "Ð\9dаÑ\87ална страница",
        "nosuchaction": "Няма такова действие",
        "nosuchactiontext": "Действието, указано в интернет адреса, е невалидно.\nМоже би сте допуснали грешка в изписването на адреса или сте последвали некоректна хипервръзка.\nПроблемът може да се дължи и на грешка в софтуера на {{SITENAME}}.",
        "nosuchspecialpage": "Няма такава специална страница",
        "nospecialpagetext": "<strong>Отправихте заявка за невалидна специална страница.</strong>\n\nСписък с валидните специални страници може да бъде видян на [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Грешка",
        "databaseerror": "Грешка при работа с базата от данни",
-       "databaseerror-text": "Ð\92Ñ\8aзникна Ð³Ñ\80еÑ\88ка Ð¿Ñ\80и Ð·Ð°Ñ\8fвкаÑ\82а Ð·Ð° базата данни.\nТова може да означава бъг в софтуера.",
-       "databaseerror-textcl": "Ð\92Ñ\8aзникна Ð³Ñ\80еÑ\88ка Ð¿Ñ\80и Ð·Ð°Ñ\8fвка Ð·Ð° базата данни.",
+       "databaseerror-text": "Ð\92Ñ\8aзникна Ð³Ñ\80еÑ\88ка Ð¿Ñ\80и Ð·Ð°Ñ\8fвкаÑ\82а ÐºÑ\8aм базата данни.\nТова може да означава бъг в софтуера.",
+       "databaseerror-textcl": "Ð\92Ñ\8aзникна Ð³Ñ\80еÑ\88ка Ð¿Ñ\80и Ð·Ð°Ñ\8fвка ÐºÑ\8aм базата данни.",
        "databaseerror-query": "Заявка: $1",
        "databaseerror-function": "Функция: $1",
        "databaseerror-error": "Грешка: $1",
-       "laggedslavemode": "Внимание: Страницата може да не съдържа последните обновявания.",
-       "readonly": "Базата от данни е затворена за промени",
-       "enterlockreason": "Посочете причина за затварянето, като дадете и приблизителна оценка кога базата от данни ще бъде отново отворена",
-       "readonlytext": "Базата данни е временно затворена за промени — вероятно за рутинна поддръжка, след която ще бъде отново достъпна.\nАдминистраторът, който я е затворил, дава следното обяснение:\n$1",
+       "laggedslavemode": "<strong>Внимание:</strong> Страницата може да не съдържа последните промени.",
+       "readonly": "Базата от данни е заключена",
+       "enterlockreason": "Посочете причина за заключването, като дадете и приблизителна оценка кога базата от данни ще бъде отключена",
+       "readonlytext": "Базата данни е временно заключена за промени — вероятно за рутинна поддръжка, след която ще бъде отново достъпна.\nАдминистраторът, който я е заключил, дава следното обяснение:\n$1",
        "missing-article": "В базата от данни не беше открит текста на страницата „$1“ $2.\n\nТова обикновено се случва при последване на остаряла разликова връзка или връзка към историята на междувременно изтрита страница.\n\nАко все пак случаят не е такъв, причината вероятно е софтуерен бъг.\nМоля, докладвайте на [[Special:ListUsers/sysop|администратор]] за проблема, като предоставите уеб адреса за връзка.",
        "missingarticle-rev": "(версия#: $1)",
        "missingarticle-diff": "(Разлика: $1, $2)",
-       "readonly_lag": "Базата от данни беше автоматично заключена, докато подчинените сървъри успеят да се съгласуват с основния сървър.",
+       "readonly_lag": "Базата от данни беше автоматично заключена, докато подчинените сървъри успеят да се синхронизират с основния сървър.",
        "internalerror": "Вътрешна грешка",
        "internalerror_info": "Вътрешна грешка: $1",
        "internalerror-fatal-exception": "Фатална грешка от тип „$1“",
        "filerenameerror": "Файлът „$1“ не можа да бъде преименуван на „$2“.",
        "filedeleteerror": "Файлът „$1“ не можа да бъде изтрит.",
        "directorycreateerror": "Невъзможно е да бъде създадена директория „$1“.",
-       "directoryreadonlyerror": "Директория \"$1\" е само за четене.",
-       "directorynotreadableerror": "Директория \"$1\" не може да бъде четена.",
+       "directoryreadonlyerror": "Директория „$1“ е само за четене.",
+       "directorynotreadableerror": "Директория „$1“ не може да бъде четена.",
        "filenotfound": "Файлът „$1“ не беше намерен.",
        "unexpected": "Неочаквана стойност: „$1“=„$2“.",
-       "formerror": "Ð\92Ñ\8aзникна Ð³Ñ\80еÑ\88ка Ð¿Ñ\80и Ð¸Ð·Ð¿Ñ\80аÑ\89ане Ð½Ð° Ñ\84оÑ\80мÑ\83лÑ\8fÑ\80а.",
+       "formerror": "Ð\93Ñ\80еÑ\88ка: Ð¤Ð¾Ñ\80мÑ\83лÑ\8fÑ\80Ñ\8aÑ\82 Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð±Ñ\8aде Ð¸Ð·Ð¿Ñ\80аÑ\82ен.",
        "badarticleerror": "Действието не може да бъде изпълнено на тази страница.",
-       "cannotdelete": "Указаната страница или файл \"$1\" не можа да бъде изтрит(а). Възможно е вече да е бил(а) изтрит(а) от някой друг.",
+       "cannotdelete": "Указаната страница или файл „$1“ не можа да бъде изтрит(а). Възможно е вече да е бил(а) изтрит(а) от някой друг.",
        "cannotdelete-title": "Страницата „$1“ не може да бъде изтрита",
        "delete-hook-aborted": "Изтриването беше прекъснато от софтуерно прехващане.\nНе беше посочена причина за това.",
        "no-null-revision": "Не може да бъде създадена празна версия на страницата „$1“",
        "title-invalid-empty": "Желаното заглавие на статия е празно или съдържа единствено името на именното пространство.",
        "title-invalid-utf8": "Желаната страница съдържа невалиден низ с кодиране UTF-8",
        "title-invalid-interwiki": "Желаното заглавие на страница съдържа препратка към друго уики, което не може да бъде ползвано в заглавия.",
-       "title-invalid-talk-namespace": "Желаното заглавие на страница се отнася към беседа, която не съществува",
-       "title-invalid-characters": "Желаното заглавие на статия съдържа невалидни знаци: „$1“",
+       "title-invalid-talk-namespace": "Желаното заглавие на страница се отнася към беседа, която не съществува.",
+       "title-invalid-characters": "Желаното заглавие на статия съдържа невалидни знаци: „$1“.",
        "title-invalid-relative": "Заглавието съдържа относителен път. Относителните заглавия на статии (./,../) са невалидни, защото често са недостижими, когато биват обработвани от браузъра на потребителя.",
        "title-invalid-magic-tilde": "Желаното заглавие на статия съдържа невалидна поредица от тилди (<nowiki>~~~</nowiki>).",
        "title-invalid-too-long": "Желаното заглавие на статия е твърде дълго. Трябва да е не по-дълго от $1 {{PLURAL:$1|байт|байта}} в кодиране UTF-8.",
        "title-invalid-leading-colon": "Желаното заглавие на статия съдържа невалидно двоеточие в началото.",
        "perfcached": "Следните данни са извлечени от склада и затова може да не отговарят на текущото състояние. В складираното копие {{PLURAL:$1|е допустим най-много един резултат|са допустими най-много $1 резултата}}.",
        "perfcachedts": "Данните са складирани и обновени за последно на $1. Най-много {{PLURAL:$4|един резултат е допустим и наличен|$4 резултата са допустими и налични}} в складираното копие.",
-       "querypage-no-updates": "Обновяването на тази страница в момента е изключено. Засега данните тук няма да бъдат обновявани.",
+       "querypage-no-updates": "Обновяването на тази страница в момента е изключено.\nЗасега данните тук няма да бъдат обновявани.",
        "viewsource": "Преглед на кода",
-       "viewsource-title": "Ð\9fÑ\80еглеждане на кода на $1",
+       "viewsource-title": "Ð\9fÑ\80еглед на кода на $1",
        "actionthrottled": "Ограничение в скоростта",
-       "actionthrottledtext": "Като част от защитата против спам, многократното повтаряне на това действие за кратък период от време е ограничено и вие вече сте надвишили лимита. Моля опитайте отново след няколко минути.",
-       "protectedpagetext": "Тази страница е защитена, за да се предотвратят редактиране или други действия.",
+       "actionthrottledtext": "Като част от защитата против спам, многократното повтаряне на това действие за кратък период от време е ограничено, а Вие вече сте надвишили лимита. Моля, опитайте отново след няколко минути.",
+       "protectedpagetext": "Тази страница е защитена, за да се предотврати редактиране или други действия.",
        "viewsourcetext": "Можете да разгледате и да копирате кодa на страницата.",
        "viewyourtext": "Можете да прегледате и копирате изходния код на <strong>вашите редакции</strong> на тази страница.",
-       "protectedinterface": "Тази страница съдържа текст, нужен за работата на системата. Тя е защитена против редактиране, за да се предотвратят възможни злоупотреби.\nЗа извършване на промяна за всички уикита, посетете [https://translatewiki.net/ translatewiki.net], проектът за локализация на MediaWiki.",
-       "editinginterface": "<strong>Внимание:</strong> Редактирате страница, която се използва за текстовия интерфейс на софтуера. Промяната й ще повлияе на външния вид на уикито.",
+       "protectedinterface": "Тази страница съдържа текст, нужен за работата на системата. Тя е защитена против редактиране, за да се предотвратят възможни злоупотреби.\nЗа извършване на промяна за всички уикита, посетете [https://translatewiki.net/ translatewiki.net], проектът за локализация на МедияУики.",
+       "editinginterface": "<strong>Внимание:</strong> Редактирате страница, която се използва за текстовия интерфейс на софтуера. Промяната ѝ ще повлияе на външния вид на уикито.",
        "translateinterface": "За да добавите или промените преводи за всички уикита, моля, използвайте [https://translatewiki.net/ translatewiki.net], локализиращия проект на МедияУики.",
        "cascadeprotected": "Тази страница е защитена против редактиране, защото е включена в {{PLURAL:$1|следната страница, която от своя страна има|следните страници, които от своя страна имат}} „каскадна“ защита:\n$2",
-       "namespaceprotected": "Нямате права за редактиране на страници в именно пространство '''$1'''.",
+       "namespaceprotected": "Нямате права за редактиране на страници в именно пространство <strong>$1</strong>.",
        "customcssprotected": "Нямате права за редактиране на тази CSS страница, защото тя съдържа чужди потребителски настройки.",
-       "customjsprotected": "Нямате права за редактиране на тази JavaScript страница, защото тя съдържа чужди потребителски настройки.",
+       "customjsprotected": "Нямате права за редактиране на тази JavaScript страница, тъй като съдържа чужди потребителски настройки.",
        "mycustomcssprotected": "Нямате права за редактиране на тази CSS страница.",
        "mycustomjsprotected": "Нямате права за редактиране на тази JavaScript страница.",
        "myprivateinfoprotected": "Нямате права да редактирате личната си информация.",
        "exception-nologin": "Не сте влезли в системата",
        "exception-nologin-text": "За достъп до избраното действие или страница е необходимо влизане в системата.",
        "exception-nologin-text-manual": "За достъп до избраното действие или страница е необходимо $1 в системата.",
-       "virus-badscanner": "Лоша конфигурация: непознат скенер за вируси: ''$1''",
-       "virus-scanfailed": "сканирането не сполучи (код $1)",
+       "virus-badscanner": "Лоша конфигурация: непознат скенер за вируси: <em>$1</em>",
+       "virus-scanfailed": "неуспешно сканиране (код $1)",
        "virus-unknownscanner": "непознат антивирус:",
-       "logouttext": "'''Излязохте от системата.'''\n\nОбърнете внимание, че някои страници все още ще се показват така, сякаш сте влезли, докато не изтриете кеша на браузъра.",
-       "cannotlogoutnow-title": "Не може да излезете сега.",
+       "logouttext": "<strong>Излязохте от системата.</strong>\n\nОбърнете внимание, че някои страници все още ще се показват така, сякаш сте влезли, докато не изтриете кеша на браузъра.",
+       "cannotlogoutnow-title": "Не може да излезете сега",
        "welcomeuser": "Здравейте, $1!",
        "welcomecreation-msg": "Вашата сметка беше създадена.\nМожете да промените [[Special:Preferences|настройките на {{SITENAME}}]] според предпочитанията си.",
        "yourname": "Потребителско име:",
        "createacct-yourpassword-ph": "Въведете парола",
        "yourpasswordagain": "Парола (повторно):",
        "createacct-yourpasswordagain": "Потвърждаване на паролата",
-       "createacct-yourpasswordagain-ph": "Ð\92Ñ\8aвежда Ñ\81е паролата (повторно)",
+       "createacct-yourpasswordagain-ph": "Ð\92Ñ\8aведеÑ\82е паролата (повторно)",
        "userlogin-remembermypassword": "Запомняне",
        "userlogin-signwithsecure": "Използване на защитена връзка",
        "cannotlogin-title": "Не може да влезете в",
        "cannotlogin-text": "Влизането в системата не е възможно.",
        "cannotloginnow-title": "Не може да влезете сега",
        "cannotcreateaccount-title": "Невъзможно е да бъде създадена потребителска сметка",
-       "yourdomainname": "Ð\94омейн:",
+       "yourdomainname": "Ð\92аÑ\88иÑ\8fÑ\82 Ð´омейн:",
        "password-change-forbidden": "Не можете да променяте пароли в това уики.",
        "externaldberror": "Възникна грешка в базата от данни при външното удостоверяване, или не ви е позволено да обновявате външната си сметка.",
        "login": "Влизане",
        "userlogin-createanother": "Създаване на друга сметка",
        "createacct-emailrequired": "Адрес за електронна поща",
        "createacct-emailoptional": "Адрес за електронна поща (незадължително)",
-       "createacct-email-ph": "Въведете Вашия адрес за електронна поща",
+       "createacct-email-ph": "Въведете Вашият адрес за електронна поща",
        "createacct-another-email-ph": "Въведете електронна поща",
        "createaccountmail": "Използване на случайна временна парола, която се изпраща на електронната поща, посочена по-долу",
        "createacct-realname": "Истинско име (незадължително)",
        "loginerror": "Грешка при влизане",
        "createacct-error": "Грешка при създаване на сметка",
        "createaccounterror": "Не може да бъде създадена сметка: $1",
-       "nocookiesnew": "Потребителската сметка беше създадена, но все още не сте влезли. {{SITENAME}} използва бисквитки при влизането на потребителите. Разрешете бисквитките в браузъра си, тъй като те са забранени, а след това влезте с потребителското си име и парола.",
-       "nocookieslogin": "{{SITENAME}} използва бисквитки (cookies) за запис на влизанията. Разрешете бисквитките в браузъра си, тъй като те са забранени, и опитайте отново.",
-       "nocookiesfornew": "Потребителската сметка не беше създадена, тъй като не беше възможно да се потвърди източникът й.\nУверете се, че бисквитките са позволени от браузъра, презаредете страницата и опитайте отново.",
+       "nocookiesnew": "Потребителската сметка беше създадена, но все още не сте влезли.\n{{SITENAME}} използва бисквитки при влизането на потребителите.\nРазрешете бисквитките в браузъра си, тъй като те са забранени, а след това влезте с потребителското си име и парола.",
+       "nocookieslogin": "{{SITENAME}} използва бисквитки (cookies) за запис на влизанията.\nРазрешете бисквитките в браузъра си, тъй като те са забранени, и опитайте отново.",
+       "nocookiesfornew": "Потребителската сметка не беше създадена, тъй като не беше възможно да се потвърди източникът ѝ.\nУверете се, че бисквитките са позволени от браузъра, презаредете страницата и опитайте отново.",
        "noname": "Не указахте валидно потребителско име.",
        "loginsuccesstitle": "Успешно влизане",
-       "loginsuccess": "'''Влязохте в {{SITENAME}} като „$1“.'''",
+       "loginsuccess": "<strong>Влязохте в {{SITENAME}} като „$1“.</strong>",
        "nosuchuser": "Не съществува потребител с име „$1“.\nПотребителските имена са чувствителни към регистъра на буквите.\nПроверете изписването или [[Special:CreateAccount|създайте нова сметка]].",
-       "nosuchusershort": "Не съществува потребител с името „$1“. Проверете изписването.",
+       "nosuchusershort": "Не съществува потребител с името „$1“.\nПроверете изписването.",
        "nouserspecified": "Необходимо е да се посочи потребителско име.",
        "login-userblocked": "Този потребител е блокиран. Влизането в системата не е позволено.",
-       "wrongpassword": "Въведената парола е невалидна. Опитайте отново.",
-       "wrongpasswordempty": "Не е въведена парола. Опитайте отново.",
+       "wrongpassword": "Въведената парола е невалидна.\nОпитайте отново.",
+       "wrongpasswordempty": "Не е въведена парола.\nОпитайте отново.",
        "passwordtooshort": "Необходимо е паролата да съдържа поне {{PLURAL:$1|1 знак|$1 знака}}.",
-       "passwordtoolong": "Паролата не може да бъде по-дългa от {{PLURAL:$1|1 символ|$1 символа}}.",
+       "passwordtoolong": "Паролата не може да бъде по-дългa от {{PLURAL:$1|1 знак|$1 знака}}.",
        "passwordtoopopular": "Често използвани пароли не могат да бъдат ползвани. Моля, изберете по-уникална парола.",
-       "password-name-match": "Ð\9fаÑ\80олаÑ\82а Ð²Ð¸ Ñ\82Ñ\80Ñ\8fбва Ð´Ð° Ñ\81е Ñ\80азлиÑ\87ава Ð¾Ñ\82 Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82елÑ\81коÑ\82о Ð²и име.",
+       "password-name-match": "Ð\9fаÑ\80олаÑ\82а Ð\92и Ñ\82Ñ\80Ñ\8fбва Ð´Ð° Ñ\81е Ñ\80азлиÑ\87ава Ð¾Ñ\82 Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82елÑ\81коÑ\82о Ð\92и име.",
        "password-login-forbidden": "Използването на това потребителско име и парола е забранено.",
        "mailmypassword": "Възстановяване на парола",
        "passwordremindertitle": "Напомняне за парола от {{SITENAME}}",
        "noemailcreate": "Необходимо е да въведете валиден адрес за ел. поща",
        "passwordsent": "Нова парола беше изпратена на електронната поща на „$1“.\nСлед като я получите, влезте отново.",
        "blocked-mailpassword": "Редактирането от Вашия IP-адрес е забранено, затова не Ви се позволява да използвате възможността за възстановяване на парола.",
-       "eauthentsent": "Писмото за потвърждение е изпратено на посочения адрес. В него са описани действията, които трябва да се извършат, за да потвърдите, че този адрес за електронна поща действително е ваш.",
+       "eauthentsent": "Писмото за потвърждение е изпратено на посочения адрес.\nВ него са описани действията, които трябва да се извършат, за да потвърдите, че този адрес за електронна поща действително е Ваш.",
        "throttled-mailpassword": "Функцията за напомняне на паролата е използвана през {{PLURAL:$1|последния един час|последните $1 часа}}.\nЗа предотвратяване на злоупотреби е разрешено да се изпраща не повече от едно напомняне в рамките на {{PLURAL:$1|един час|$1 часа}}.",
        "mailerror": "Грешка при изпращане на писмо: $1",
        "acct_creation_throttle_hit": "През последните $2, през този IP-адрес посетители на това уики са създали {{PLURAL:$1|1 сметка |$1 сметки}}, което е максималният допустим брой за този период.\nВ резултат, към момента не могат да създават повече потребителски сметки през този IP-адрес.",
        "emailauthenticated": "Адресът на електронната поща e потвърден на $2 в $3.",
-       "emailnotauthenticated": "Ð\90дÑ\80еÑ\81Ñ\8aÑ\82 Ð½Ð° ÐµÐ»ÐµÐºÑ\82Ñ\80оннаÑ\82а Ð²и поща все още не е потвърден.\nНяма да получавате писма за никоя от следните възможности.",
+       "emailnotauthenticated": "Ð\90дÑ\80еÑ\81Ñ\8aÑ\82 Ð½Ð° ÐµÐ»ÐµÐºÑ\82Ñ\80оннаÑ\82а Ð\92и поща все още не е потвърден.\nНяма да получавате писма за никоя от следните възможности.",
        "noemailprefs": "За да работят тези функционалности, трябва да посочите адрес на електронна поща в своите настройки.",
        "emailconfirmlink": "Потвърждаване на адреса за електронна поща",
        "invalidemailaddress": "Въведеният адрес не може да бъде приет, тъй като не съответства на формата на адрес за електронна поща. Въведете коректен адрес или оставете полето празно.",
        "login-abort-generic": "Влизането беше неуспешно - Прекратено",
        "login-migrated-generic": "Вашата сметка е бил преместена и потребителското Ви име вече не съществува в това уики.",
        "loginlanguagelabel": "Език: $1",
-       "suspicious-userlogout": "Ð\97аÑ\8fвкаÑ\82а Ð²и за излизане от системата беше отхвърлена, тъй като изглежда е била изпратена погрешка от браузъра или кеширащото прокси.",
+       "suspicious-userlogout": "Ð\97аÑ\8fвкаÑ\82а Ð\92и за излизане от системата беше отхвърлена, тъй като изглежда е била изпратена погрешка от браузъра или кеширащото прокси.",
        "createacct-another-realname-tip": "Истинското име е незадължително.\nВ случай, че бъде избрано да се попълни, то ще бъде използвано за да му се приписват приносите в уикито.",
        "pt-login": "Влизане",
        "pt-login-button": "Влизане",
        "pt-createaccount": "Създаване на сметка",
        "pt-userlogout": "Излизане",
-       "php-mail-error-unknown": "Неизвестна грешка в mail() функцията на PHP",
-       "user-mail-no-addy": "Опитвате се да изпратите е-писмо без да е посочен адрес за електронна поща.",
+       "php-mail-error-unknown": "Неразпозната грешка във функция mail() на PHP.",
+       "user-mail-no-addy": "Опитвате се да изпратите електронно писмо без да е посочен адрес за електронна поща.",
        "user-mail-no-body": "Опитвате се да изпратите е-писмо с празно или изключително кратко съдържание.",
        "changepassword": "Смяна на парола",
-       "resetpass_announce": "За да се завърши процеса на влизане, необходимо е да се избере нова парола.",
+       "resetpass_announce": "За да се завърши процеса на влизане е необходимо да се избере нова парола.",
        "resetpass_text": "<!-- Тук добавете текст -->",
        "resetpass_header": "Промяна на парола",
        "oldpassword": "Стара парола:",
        "newpassword": "Нова парола:",
        "retypenew": "Повтори новата парола:",
-       "resetpass_submit": "Ð\98збиÑ\80ане на парола и влизане",
+       "resetpass_submit": "УÑ\81Ñ\82ановÑ\8fване на парола и влизане",
        "changepassword-success": "Паролата беше променена успешно!",
        "changepassword-throttled": "Направили сте твърде много опити да въведете паролата за тази сметка.\nНеобходимо е да изчакате $1 преди да опитате отново.",
        "botpasswords": "Пароли за ботове",
-       "botpasswords-createnew": "СÑ\8aздаване Ð½Ð° Ð½Ð¾Ð²Ð° Ð±Ð¾Ñ\82 Ð¿Ð°Ñ\80ола",
-       "botpasswords-editexisting": "РедакÑ\82иÑ\80ане Ð½Ð° Ñ\81Ñ\8aÑ\89еÑ\81Ñ\82вÑ\83ваÑ\89а Ð±Ð¾Ñ\82 Ð¿Ð°Ñ\80ола",
+       "botpasswords-createnew": "СÑ\8aздаване Ð½Ð° Ð½Ð¾Ð²Ð° Ð¿Ð°Ñ\80ола Ð·Ð° Ð±Ð¾Ñ\82а",
+       "botpasswords-editexisting": "РедакÑ\82иÑ\80ане Ð½Ð° Ñ\81Ñ\8aÑ\89еÑ\81Ñ\82вÑ\83ваÑ\89а Ð¿Ð°Ñ\80ола Ð½Ð° Ð±Ð¾Ñ\82",
        "botpasswords-label-appid": "Име на бота:",
        "botpasswords-label-create": "Създаване",
        "botpasswords-label-update": "Обновяване",
        "botpasswords-updated-body": "Паролата на бот „$1“ на потребител „$2“ е обновена.",
        "botpasswords-deleted-title": "Паролата на бота е изтрита",
        "botpasswords-deleted-body": "Паролата на бот „$1“ на потребител „$2“ е премахната.",
-       "resetpass_forbidden": "Не е разрешена смяна на паролата",
+       "resetpass_forbidden": "Не е разрешена промяна на паролата",
        "resetpass_forbidden-reason": "Паролите не могат да се променят: $1",
-       "resetpass-no-info": "Ð\97а Ð´Ð° Ð¸Ð¼Ð°Ñ\82е Ð´Ð¾Ñ\81Ñ\82Ñ\8aп Ð´Ð¾ Ñ\82ази Ñ\81Ñ\82Ñ\80аниÑ\86а Ð´Ð¸Ñ\80екÑ\82но, Ð½ÐµÐ¾Ð±Ñ\85одимо Ðµ да влезете в системата.",
+       "resetpass-no-info": "Ð\97а Ð´Ð° Ð¸Ð¼Ð°Ñ\82е Ð´Ð¸Ñ\80екÑ\82ен Ð´Ð¾Ñ\81Ñ\82Ñ\8aп Ð´Ð¾ Ñ\82ази Ñ\81Ñ\82Ñ\80аниÑ\86а Ðµ Ð½ÐµÐ¾Ð±Ñ\85одимо да влезете в системата.",
        "resetpass-submit-loggedin": "Промяна на паролата",
        "resetpass-submit-cancel": "Отказ",
        "resetpass-wrong-oldpass": "Невалидна временна или текуща парола.\nВъзможно е вече да сте сменили паролата си или да сте поискали нова временна парола.",
        "passwordreset-invalidemail": "Неправилен email адрес",
        "changeemail": "Промяна или премахване на адреса за е-поща",
        "changeemail-header": "Попълнете формуляра, за да промените адреса на електронната си поща. Ако искате да премахнете адреса на електронната си поща, при попълване на формуляра оставете полето за новия адрес празно.",
-       "changeemail-no-info": "Ð\97а Ð´Ð° Ð¸Ð¼Ð°Ñ\82е Ð´Ð¾Ñ\81Ñ\82Ñ\8aп Ð´Ð¾ Ñ\82ази Ñ\81Ñ\82Ñ\80аниÑ\86а Ð´Ð¸Ñ\80екÑ\82но, е необходимо да влезете в системата.",
+       "changeemail-no-info": "Ð\97а Ð´Ð° Ð¸Ð¼Ð°Ñ\82е Ð´Ð¸Ñ\80екÑ\82ен Ð´Ð¾Ñ\81Ñ\82Ñ\8aп Ð´Ð¾ Ñ\82ази Ñ\81Ñ\82Ñ\80аниÑ\86а Ð´Ð¸Ñ\80екÑ\82но е необходимо да влезете в системата.",
        "changeemail-oldemail": "Текущ адрес за е-поща:",
        "changeemail-newemail": "Нов адрес за е-поща:",
        "changeemail-none": "(няма)",
        "extlink_sample": "http://www.example.com Текст на външната препратка",
        "extlink_tip": "Външна препратка (не забравяйте http:// отпред)",
        "headline_sample": "Заглавие на раздел",
-       "headline_tip": "Заглавие",
+       "headline_tip": "Заглавие от 2-ро ниво",
        "nowiki_sample": "Тук въведете текст",
        "nowiki_tip": "Пренебрегване на форматиращите команди",
        "image_sample": "Пример.jpg",
        "preview": "Предварителен преглед",
        "showpreview": "Предварителен преглед",
        "showdiff": "Показване на промените",
-       "blankarticle": "<strong>Предупреждение:</strong> Статията, която създавате е празна.\nАко щракнете на „\"{{int:savearticle}}“ отново, статията ще бъде създадена без никакво съдържание.",
+       "blankarticle": "<strong>Предупреждение:</strong> Статията, която създавате е празна.\nАко щракнете на „$1“ отново, статията ще бъде създадена без никакво съдържание.",
        "anoneditwarning": "<strong>Внимание:</strong> Не сте влезли в системата. Ако направите редакция IP-адресът Ви ще бъде публично видим. Ако <strong>[$1 влезете]</strong> или си <strong>[$2 създадете акаунт]</strong>, редакциите Ви ще бъдат свързани с потребителското Ви име, заедно с други преимущества.",
-       "anonpreviewwarning": "Внимание: Не сте влезли в системата. Ако съхраните редакцията си, тя ще бъде записана в историята на страницата с вашият IP-адрес.",
-       "missingsummary": "'''Напомняне:''' Не е въведено кратко описание на промените. При повторно натискане на бутона „Съхраняване“, редакцията ще бъде съхранена без резюме.",
+       "anonpreviewwarning": "<em>Не сте влезли в системата. Ако съхраните редакцията си, тя ще бъде записана в историята на страницата с вашия IP-адрес.</em>",
+       "missingsummary": "<strong>Напомняне:</strong> Не е въведено кратко описание на промените.\nПри повторно натискане на бутона „$1“, редакцията ще бъде съхранена без резюме.",
        "missingcommenttext": "По-долу въведете вашето съобщение.",
-       "missingcommentheader": "<strong>Напомняне:</strong> Не е въведено заглавие на коментара.\nПри повторно натискане на \"{{int:savearticle}}\", редакцията ще бъде записана без такова.",
+       "missingcommentheader": "<strong>Напомняне:</strong> Не е въведено заглавие на коментара.\nПри повторно натискане на „$1“, редакцията ще бъде записана без коментар.",
        "summary-preview": "Предварителен преглед на резюмето:",
        "subject-preview": "Предварителен преглед на заглавието:",
        "previewerrortext": "Възникна грешка при опита за преглед на промените.",
        "blockedtitle": "Потребителят е блокиран",
-       "blockedtext": "'''Вашето потребителско име (или IP-адрес) беше блокирано.'''\n\nБлокирането е извършено от $1. Посочената причина е: ''$2''\n\n*Начало на блокирането: $8\n*Край на блокирането: $6\n*Блокирането се отнася за: $7\n\nМожете да се свържете с $1 или с някой от останалите [[{{MediaWiki:Grouppage-sysop}}|администратори]], за да обсъдите блокирането.\n\nМожете да използвате услугата „Пращане писмо на потребител“ само ако не ви е забранена употребата й и ако сте посочили валидна електронна поща в [[Special:Preferences|настройките]] си.\n\nВашият IP адрес е $3, а номерът на блокирането е $5. Включвайте едно от двете или и двете във всяко запитване, което правите.",
-       "autoblockedtext": "IP-адресът ви беше блокиран автоматично, защото е бил използван от друг потребител, който е бил блокиран от $1.\nПосочената причина е:\n\n:''$2''\n\n* Начало на блокирането: $8\n* Край на блокирането: $6\n* Блокирането се отнася за: $7\n\nМожете да се свържете с $1 или с някой от останалите [[{{MediaWiki:Grouppage-sysop}}|администратори]], за да обсъдите блокирането.\n\nМожете да използвате услугата „Пращане писмо на потребител“ само ако не ви е забранена употребата й и ако сте посочили валидна електронна поща в [[Special:Preferences|настройките]] си.\n\nТекущият ви IP-адрес е $3, а номерът на блокирането ви е $5. Включвайте ги във всяко питане, което правите.",
+       "blockedtext": "'''Вашето потребителско име (или IP-адрес) беше блокирано.'''\n\nБлокирането е извършено от $1. Посочената причина е: ''$2''\n\n*Начало на блокирането: $8\n*Край на блокирането: $6\n*Блокирането се отнася за: $7\n\nМожете да се свържете с $1 или с някой от останалите [[{{MediaWiki:Grouppage-sysop}}|администратори]], за да обсъдите блокирането.\n\nМожете да използвате услугата „Пращане писмо на потребител“ само ако не ви е забранена употребата ѝ и ако сте посочили валидна електронна поща в [[Special:Preferences|настройките]] си.\n\nВашият IP адрес е $3, а номерът на блокирането е $5. Включвайте едно от двете или и двете във всяко запитване, което правите.",
+       "autoblockedtext": "IP-адресът ви беше блокиран автоматично, защото е бил използван от друг потребител, който е бил блокиран от $1.\nПосочената причина е:\n\n:''$2''\n\n* Начало на блокирането: $8\n* Край на блокирането: $6\n* Блокирането се отнася за: $7\n\nМожете да се свържете с $1 или с някой от останалите [[{{MediaWiki:Grouppage-sysop}}|администратори]], за да обсъдите блокирането.\n\nМожете да използвате услугата „Пращане писмо на потребител“ само ако не ви е забранена употребата ѝ и ако сте посочили валидна електронна поща в [[Special:Preferences|настройките]] си.\n\nТекущият ви IP-адрес е $3, а номерът на блокирането ви е $5. Включвайте ги във всяко питане, което правите.",
        "blockednoreason": "не е указана причина",
        "whitelistedittext": "Редактирането на страници изисква $1 в системата.",
        "confirmedittext": "Необходимо е да потвърдите електронната си поща, преди да редактирате страници.\nВъведете и потвърдете адреса си на [[Special:Preferences|страницата с настройките]].",
        "nosuchsectiontitle": "Няма такъв раздел",
-       "nosuchsectiontext": "Опитахте да редактирате раздел, който не съществува. Може би е бил преместен или изтрит междувременно.",
+       "nosuchsectiontext": "Опитахте да редактирате раздел, който не съществува.\nМоже би е бил преместен или изтрит междувременно.",
        "loginreqtitle": "Изисква се влизане",
        "loginreqlink": "влизане",
        "loginreqpagetext": "Необходимо е $1, за да можете да разглеждате други страници.",
        "accmailtitle": "Паролата беше изпратена.",
        "accmailtext": "Случайно генерирана парола за [[User talk:$1|$1]] беше изпратена на $2. Паролата може да бъде променена от страницата ''[[Special:ChangePassword|„Промяна на паролата“]]'' след влизане в системата.",
        "newarticle": "(нова)",
-       "newarticletext": "Последвахте препратка към страница, която все още не съществува.\nЗа да я създадете, просто започнете да пишете в долната текстова кутия\n(вижте [$1 помощната страница] за повече информация).",
+       "newarticletext": "Последвахте препратка към страница, която все още не съществува.\nЗа да я създадете, просто започнете да пишете в долната текстова кутия\n(вижте [$1 помощната страница] за повече информация).\nАко сте тук по погрешка, щракнете бутона <strong>назад</strong> на вашия браузър.",
        "anontalkpagetext": "----\n<em>Това е дискусионната страница на анонимен потребител, който все още няма регистрирана сметка или не я използва</em>\nЗатова се налага да използваме IP-адрес, за да го идентифицираме.\nТакъв адрес може да се споделя от няколко потребители.\nАко сте анонимен потребител и мислите, че тези неуместни коментари са отправени към вас, [[Special:CreateAccount|регистрирайте се]] или [[Special:UserLogin|влезте в системата]], за да избегнете евентуално бъдещо объркване с други анонимни потребители.",
        "noarticletext": "Понастоящем няма текст на тази страница. Можете да [[Special:Search/{{PAGENAME}}|потърсите за заглавието на страницата]] в други страници, да <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} потърсите в съответните дневници] или [{{fullurl:{{FULLPAGENAME}}|action=edit}} да я създадете]</span>.",
        "noarticletext-nopermission": "Понастоящем в тази страница няма текст.\nМожете да [[Special:Search/{{PAGENAME}}|потърсите заглавието на тази страница ]] в други страници или да <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} потърсите в съответните дневници]</span>, но нямате права да създадете тази страница.",
        "missing-revision": "Версия #$1 на страницата „{{FULLPAGENAME}}“ не съществува.\n\nТова обикновено се дължи на препратка от историята на страницата, която е била изтрита.\nПодробности могат да бъдат открити в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневника на изтриванията].",
-       "userpage-userdoesnotexist": "Няма регистрирана потребителска сметка за „<nowiki>$1</nowiki>“. Изисква се потвърждение, че желаете да създадете/редактирате тази страница?",
+       "userpage-userdoesnotexist": "Няма регистрирана потребителска сметка за „$1“.\nМоля потвърдете, че желаете да създадете/редактирате тази страница.",
        "userpage-userdoesnotexist-view": "Не е регистрирана потребителска сметка на име „$1“.",
-       "blocked-notice-logextract": "Ð\92 Ð¼Ð¾Ð¼ÐµÐ½Ñ\82а Ñ\82ози Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82ел Ðµ Ð±Ð»Ð¾ÐºÐ¸Ñ\80ан.\nÐ\9fо-долÑ\83 Ð·Ð° Ñ\81пÑ\80авка Ðµ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½ Ð¿Ð¾Ñ\81ледниÑ\8fÑ\82 Ð·Ð°Ð¿Ð¸Ñ\81 Ð¾Ñ\82 Ð\94невника на блокиранията:",
+       "blocked-notice-logextract": "Ð\92 Ð¼Ð¾Ð¼ÐµÐ½Ñ\82а Ñ\82ози Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82ел Ðµ Ð±Ð»Ð¾ÐºÐ¸Ñ\80ан.\nÐ\9fо-долÑ\83 Ð·Ð° Ñ\81пÑ\80авка Ðµ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½ Ð¿Ð¾Ñ\81ледниÑ\8fÑ\82 Ð·Ð°Ð¿Ð¸Ñ\81 Ð¾Ñ\82 Ð´невника на блокиранията:",
        "clearyourcache": "<strong>Забележка:</strong> За да се видят промените, необходимо е след съхраняване на страницата, кешът на браузъра да бъде изтрит.\n* <strong>Firefox / Safari:</strong> Задържа се клавиш <em>Shift</em> и се щраква върху <em>Презареждане</em> (<em>Reload</em>) или чрез клавишната комбинация <em>Ctrl-F5</em> or <em>Ctrl-R</em> (<em>⌘-R</em> за Mac);\n* <strong>Google Chrome:</strong> клавишна комбинация <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> за Mac)\n* <strong>Internet Explorer:</strong> Задържа се клавиш <em>Ctrl</em> и се щраква върху <em>Refresh</em> или чрез клавишната комбинация <em>Ctrl-F5</em>;\n* <strong>Opera:</strong> кешът се изчиства през менюто <em>Tools → Settings</em> (<em>Opera → Preferences</em> за Mac) след което <em>Privacy & security → Clear browsing data → Cached images and files</em>.",
-       "usercssyoucanpreview": "'''Съвет:''' Използвайте бутона „{{int:showpreview}}“, за да изпробвате новия код на CSS преди съхранението.",
-       "userjsyoucanpreview": "'''Съвет:''' Използвайте бутона „{{int:showpreview}}“, за да изпробвате новия код на Джаваскрипт преди съхранението.",
-       "usercsspreview": "'''Не забравяйте, че това е само предварителен преглед на кода на CSS. Страницата все още не е съхранена!'''",
+       "usercssyoucanpreview": "<strong>Съвет:</strong> Използвайте бутона „{{int:showpreview}}“, за да изпробвате новия код на CSS преди съхранението.",
+       "userjsyoucanpreview": "<strong>Съвет:</strong> Използвайте бутона „{{int:showpreview}}“, за да изпробвате новия код на Джаваскрипт преди съхранението.",
+       "usercsspreview": "<strong>Не забравяйте, че това е само предварителен преглед на кода на CSS.\nСтраницата все още не е съхранена!</strong>",
        "userjspreview": "'''Не забравяйте, че това е само изпробване/предварителен преглед на кода на Джаваскрипт. Страницата все още не е съхранена!'''",
        "sitecsspreview": "'''Не забравяйте, че това е само предварителен преглед на този CSS.'''\n'''Той все още не е съхранен!'''",
        "sitejspreview": "'''Не забравяйте, че това е само предварителен преглед на този Джаваскрипт код.'''\n'''Той все още не е съхранен!'''",
-       "userinvalidcssjstitle": "'''Внимание:''' Не съществува облик „$1“. Необходимо е да се знае, че имената на потребителските ви страници за CSS и Джаваскрипт трябва да се състоят от малки букви, например: „{{ns:user}}:Иван/vector.css“ (а не „{{ns:user}}:Иван/Vector.css“).",
+       "userinvalidcssjstitle": "<strong>Внимание:</strong> Не съществува облик „$1“. Необходимо е да се знае, че имената на потребителските ви страници за CSS и JavaScript трябва да се състоят от малки букви, например: „{{ns:user}}:Иван/vector.css“ (а не „{{ns:user}}:Иван/Vector.css“).",
        "updated": "(обновена)",
-       "note": "'''Забележка:'''",
+       "note": "<strong>Забележка:</strong>",
        "previewnote": "<strong>Обърнете внимание, че това е само предварителен преглед.</strong>\nПромените все още не са съхранени!",
        "continue-editing": "Продължаване към полето за редактиране",
        "previewconflict": "Този предварителен преглед отразява текста в горната текстова кутия така, както би се показал, ако съхраните.",
        "session_fail_preview": "За съжаление редакцията ви не успя да бъде обработена поради загуба на данните за текущата сесия.\n\nМоже би сте излезли от системата. <strong>Моля, уверете се, че сте влезли в профила си и опитайте отново.</strong>\nАко все още не работи, опитайте да [[Special:UserLogout|излезете]] и да влезете отново, също така проверете дали браузърът ви позволява бисквитки от този сайт.",
        "session_fail_preview_html": "За съжаление редакцията ви не беше записана поради загуба на данните за текущата сесия.\n\n<em>Тъй като {{SITENAME}} приема обикновен HTML, предварителният преглед е скрит като предпазна мярка срещу атаки чрез JavaScript.</em>\n\n<strong>Ако това е обикновен опит за редактиране, моля опитайте отново.</strong>\nАко все още не сработва, пробвайте да [[Special:UserLogout|излезете]] и влезете отново, и се уверете, че браузъра ви приема бисквитки от този сайт.",
-       "token_suffix_mismatch": "'''Редакцията ви беше отхвърлена, защото браузърът ви е развалил пунктуационните знаци в редакционната отметка. Евентуалното съхранение би унищожило съдържанието на страницата. Понякога това се случва при използването на грешно работещи анонимни междинни сървъри.'''",
-       "edit_form_incomplete": "'''Някои части от формуляра за редактиране не достигнаха до сървъра; проверете дали редакциите ви са непокътнати и опитайте отново.'''",
+       "token_suffix_mismatch": "<strong>Редакцията ви беше отхвърлена, защото браузърът ви е развалил пунктуационните знаци в редакционната отметка.</strong>\nРедакцията беше отхвърлена с цел предотвратяване унищожаването на текста на страницата. \nПонякога това се случва при използването на грешно работещи анонимни междинни сървъри.",
+       "edit_form_incomplete": "<strong>Някои части от формуляра за редактиране не достигнаха до сървъра; проверете дали редакциите ви са непокътнати и опитайте отново.</strong>",
        "editing": "Редактиране на „$1“",
        "creating": "Създаване на $1",
        "editingsection": "Редактиране на „$1“ (раздел)",
        "editingcomment": "Редактиране на „$1“ (нов раздел)",
        "editconflict": "Различна редакция: $1",
-       "explainconflict": "Някой друг вече е променил тази страница, откакто започнахте да я редактирате.\nГорната текстова кутия съдържа текущия текст на страницата без вашите промени, които са показани в долната кутия.\nЗа да бъдат и те съхранени, е необходимо ръчно да ги преместите в горното поле, тъй като '''единствено''' текстът в него ще бъде съхранен при натискането на бутона „{{int:savearticle}}“.",
+       "explainconflict": "Някой друг вече е променил тази страница, откакто започнахте да я редактирате.\nГорната текстова кутия съдържа текущия текст на страницата без вашите промени, които са показани в долната кутия.\nЗа да бъдат и те съхранени, е необходимо ръчно да ги преместите в горното поле, тъй като <strong>единствено</strong> текстът в него ще бъде съхранен при натискането на бутона „$1“.",
        "yourtext": "Вашият текст",
        "storedversion": "Съхранена версия",
-       "nonunicodebrowser": "'''ВНИМАНИЕ: Браузърът ви не поддържа Уникод. За да можете спокойно да редактирате страници, всички знаци, невключени в ASCII-таблицата, ще бъдат заменени с шестнадесетични кодове.'''",
-       "editingold": "'''ВНИМАНИЕ: Редактирате остаряла версия на страницата.\nАко я съхраните, всякакви промени, направени след тази версия, ще бъдат изгубени.'''",
+       "nonunicodebrowser": "<strong>Внимание: Браузърът ви не поддържа Уникод.</strong>\nЗа да можете спокойно да редактирате страници, всички знаци, невключени в ASCII-таблицата, ще бъдат заменени с шестнадесетични кодове.",
+       "editingold": "<strong>Внимание: Редактирате остаряла версия на страницата.</strong>\nАко я съхраните, всякакви промени, направени след тази версия, ще бъдат изгубени.",
        "yourdiff": "Разлики",
        "copyrightwarning": "Обърнете внимание, че всички приноси към {{SITENAME}} се публикуват при условията на $2 (за подробности вижте $1).\nАко не сте съгласни вашата писмена работа да бъде променяна и разпространявана без ограничения, не я публикувайте.<br />\n\nСъщо потвърждавате, че '''вие''' сте написали материала или сте използвали '''свободни ресурси''' — <em>обществено достояние</em> или друг свободен източник.\nАко сте ползвали чужди материали, за които имате разрешение, непременно посочете източника.\n\n<div style=\"font-variant:small-caps\">'''Не публикувайте произведения с авторски права без разрешение!'''</div>",
        "copyrightwarning2": "Обърнете внимание, че всички приноси към {{SITENAME}} могат да бъдат редактирани, променяни или премахвани от останалите сътрудници.\nАко не сте съгласни вашата писмена работа да бъде променяна без ограничения, не я публикувайте.<br />\nСъщо потвърждавате, че '''вие''' сте написали материала или сте използвали '''свободни ресурси''' — <em>обществено достояние</em> или друг свободен източник (за подробности вижте $1).\nАко сте ползвали чужди материали, за които имате разрешение, непременно посочете източника.\n\n<div style=\"font-variant:small-caps\">'''Не публикувайте произведения с авторски права без разрешение!'''</div>",
-       "longpageerror": "'''ГРЕШКА: Изпратеният текст е с големина {{PLURAL:$1|един килобайт|$1 килобайта}}, което надвишава позволения максимум от {{PLURAL:$2|един килобайт|$2 килобайта}}.'''\nПоради тази причина той не може да бъде съхранен.",
-       "readonlywarning": "<strong>Ð\92Ð\9dÐ\98Ð\9cÐ\90Ð\9dÐ\98Ð\95: Ð\91азаÑ\82а Ð´Ð°Ð½Ð½Ð¸ Ð±ÐµÑ\88е Ð·Ð°Ñ\82воÑ\80ена Ð·Ð° Ð¿Ð¾Ð´Ð´Ñ\80Ñ\8aжка, Ð·Ð°Ñ\82ова Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ\82а Ð¿Ñ\80омениÑ\82е Ð½Ñ\8fма Ð´Ð° Ð¼Ð¾Ð³Ð°Ñ\82 Ð´Ð° Ð±Ñ\8aдаÑ\82 Ñ\81Ñ\8aÑ\85Ñ\80анени.</strong>\n\nАко желаете, можете да съхраните страницата като текстов файл и да се опитате да я публикувате по-късно.\n\nСистемният администратор, който е затворил базата данни, е посочил следната причина: $1",
+       "longpageerror": "<strong>Грешка: Изпратеният текст е с големина {{PLURAL:$1|един килобайт|$1 килобайта}}, което надвишава позволения максимум от {{PLURAL:$2|един килобайт|$2 килобайта}}.</strong>\nПоради тази причина той не може да бъде съхранен.",
+       "readonlywarning": "<strong>Ð\92нимание: Ð\91азаÑ\82а Ð´Ð°Ð½Ð½Ð¸ Ð±ÐµÑ\88е Ð·Ð°Ñ\82воÑ\80ена Ð·Ð° Ð¿Ð¾Ð´Ð´Ñ\80Ñ\8aжка, Ð·Ð°Ñ\82ова Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ\82а Ð¿Ñ\80омениÑ\82е Ð½Ñ\8fма Ð´Ð° Ð¼Ð¾Ð³Ð°Ñ\82 Ð´Ð° Ð±Ñ\8aдаÑ\82 Ñ\81Ñ\8aÑ\85Ñ\80анени.</strong>\nАко желаете, можете да съхраните страницата като текстов файл и да се опитате да я публикувате по-късно.\n\nСистемният администратор, който е затворил базата данни, е посочил следната причина: $1",
        "protectedpagewarning": "'''Внимание: Страницата е защитена и само потребители със статут на администратори могат да я редактират.'''\nЗа справка по-долу е показан последният запис от дневниците.",
        "semiprotectedpagewarning": "'''Забележка:''' Тази страница е защитена и само регистрирани потребители могат да я редактират.\nЗа справка по-долу е показан последният запис от дневниците.",
        "cascadeprotectedwarning": "<strong>Внимание:</strong> Страницата е защитена, като само потребители със [[Special:ListGroupRights|нужните права]] могат да я редактират, тъй като е включена в {{PLURAL:$1|следната страница|следните страници}} с каскадна защита:",
-       "titleprotectedwarning": "'''Внимание: Тази страница е защитена и са необходими [[Special:ListGroupRights|специални права]], за да бъде създадена.'''\nЗа справка по-долу е показан последният запис от дневниците.",
+       "titleprotectedwarning": "<strong>Внимание: Тази страница е защитена и са необходими [[Special:ListGroupRights|специални права]], за да бъде създадена.</strong>\nЗа справка по-долу е показан последният запис от дневниците.",
        "templatesused": "{{PLURAL:$1|Шаблон, използван|Шаблони, използвани}} на страницата:",
        "templatesusedpreview": "{{PLURAL:$1|Шаблон, използван|Шаблони, използвани}} в предварителния преглед:",
        "templatesusedsection": "{{PLURAL:$1|Шаблон, използван|Шаблони, използвани}} в този раздел:",
        "permissionserrors": "Грешка при правата на достъп",
        "permissionserrorstext": "Нямате правата да извършите това действие по {{PLURAL:$1|следната причина|следните причини}}:",
        "permissionserrorstext-withaction": "Нямате разрешение за $2 поради {{PLURAL:$1|следната причина|следните причини}}:",
-       "recreate-moveddeleted-warn": "'''Внимание: Създавате страница, която по-рано вече е била изтрита.'''\n\nОбмислете добре дали е уместно повторното създаване на страницата.\nЗа ваша информация по-долу е посочена причината за предишното изтриване на страницата:",
+       "recreate-moveddeleted-warn": "<strong>Внимание: Създавате страница, която по-рано вече е била изтрита.</strong>\n\nОбмислете добре дали е уместно повторното създаване на страницата.\nЗа ваша информация по-долу е посочена причината за предишното изтриване на страницата:",
        "moveddeleted-notice": "Тази страница е била изтрита.\nЗа справка, по-долу са включени извадки от дневниците на изтриванията и преместванията.",
        "log-fulllog": "Преглеждане на пълния дневник",
        "edit-hook-aborted": "Редакцията беше прекъсната от кука.\nНе беше посочена причина за това.",
        "edit-gone-missing": "Страницата не можа да се обнови.\nВероятно междувременно е била изтрита.",
-       "edit-conflict": "РазлиÑ\87на Ñ\80едакÑ\86иÑ\8f",
+       "edit-conflict": "Ð\9aонÑ\84ликÑ\82 Ð¿Ñ\80и Ñ\80едакÑ\82иÑ\80анеÑ\82о.",
        "edit-no-change": "Редакцията ви беше пренебрегната, защото не съдържа промени по текста.",
        "postedit-confirmation-created": "Страницата е създадена.",
        "postedit-confirmation-restored": "Страницата е възстановена.",
        "content-failed-to-parse": "Неуспех при анализиране на съдържанието от тип $2 за модела $1: $3",
        "invalid-content-data": "Невалидни данни за съдържание",
        "content-not-allowed-here": "\nНа страницата [[$2]] не е позволено използването на $1",
-       "editwarning-warning": "Ако излезете от тази страница, може да загубите всички несъхранени промени, които сте направили. \nАко сте влезли в системата, можете да изключите това предупреждение чрез менюто \"Редактиране\" в личните ви настройки.",
+       "editwarning-warning": "Ако излезете от тази страница, може да загубите всички несъхранени промени, които сте направили.\nАко сте влезли в системата, можете да изключите това предупреждение чрез менюто „{{int:prefs-editing}}“ в личните ви настройки.",
        "editpage-invalidcontentmodel-title": "Форматът на съдържанието не се поддържа",
        "editpage-notsupportedcontentformat-title": "Форматът на съдържанието не се поддържа",
        "content-model-wikitext": "уикитекст",
        "content-model-text": "обикновен текст",
-       "content-model-javascript": "Джаваскрипт",
+       "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
        "content-json-empty-object": "Празен обект",
        "content-json-empty-array": "Празен масив",
-       "duplicate-args-category": "СÑ\82Ñ\80аниÑ\86и, ÐºÐ¾Ð¸Ñ\82о Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ñ\82 Ð¿Ð¾Ð²Ñ\82аÑ\80Ñ\8fÑ\89и Ñ\81е Ð°Ñ\80гÑ\83менÑ\82и Ð² Ð¿Ð¾викванията на шаблона",
-       "duplicate-args-category-desc": "СÑ\82Ñ\80аниÑ\86аÑ\82а Ñ\81Ñ\8aдÑ\8aÑ\80жа Ñ\88аблонни Ð¿Ð¾Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ\8f, ÐºÐ¾Ð¸Ñ\82о Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ñ\82 Ð¿Ð¾Ð²Ñ\82аÑ\80Ñ\8fÑ\89и Ñ\81е Ð°Ñ\80гÑ\83менÑ\82и, ÐºÐ°Ñ\82о Ð½Ð°Ð¿Ñ\80имеÑ\80 <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> or <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
-       "expensive-parserfunction-warning": "Внимание: Тази страница прекалено много пъти използва ресурсоемки парсерни функции.\n\nВ момента има {{PLURAL:$1|$1 обръщение|$1 обръщения}} към такива функции, а трябва да {{PLURAL:$1|е|са}} по-малко от $2.",
-       "expensive-parserfunction-category": "СÑ\82Ñ\80аниÑ\86и, ÐºÐ¾Ð¸Ñ\82о Ð¿Ñ\80екалено Ð¼Ð½Ð¾Ð³Ð¾ Ð¿Ñ\8aÑ\82и Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ñ\82 Ñ\80еÑ\81Ñ\83Ñ\80Ñ\81оемки Ð¿Ð°Ñ\80Ñ\81еÑ\80ни функции",
-       "post-expand-template-inclusion-warning": "Внимание: Размерът за включване на този шаблон е твърде голям.\nНякои шаблони няма да бъдат включени.",
-       "post-expand-template-inclusion-category": "Страници, съдържащи шаблони с превишени размери на включеното съдържание",
-       "post-expand-template-argument-warning": "Внимание: Тази страница съдържа поне един аргумент на шаблон, който има твърде голям размер при разгръщане. Тези аргументи бяха пропуснати.",
+       "duplicate-args-category": "СÑ\82Ñ\80аниÑ\86и, ÐºÐ¾Ð¸Ñ\82о Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ñ\82 Ð¿Ð¾Ð²Ñ\82аÑ\80Ñ\8fÑ\89и Ñ\81е Ð°Ñ\80гÑ\83менÑ\82и Ð² Ð¸Ð·викванията на шаблона",
+       "duplicate-args-category-desc": "СÑ\82Ñ\80аниÑ\86аÑ\82а Ñ\81Ñ\8aдÑ\8aÑ\80жа Ñ\88аблонни Ð¸Ð·Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ\8f, ÐºÐ¾Ð¸Ñ\82о Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ñ\82 Ð¿Ð¾Ð²Ñ\82аÑ\80Ñ\8fÑ\89и Ñ\81е Ð°Ñ\80гÑ\83менÑ\82и, ÐºÐ°Ñ\82о Ð½Ð°Ð¿Ñ\80имеÑ\80 <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> Ð¸Ð»Ð¸ <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
+       "expensive-parserfunction-warning": "<strong>Внимание:</strong> Тази страница прави твърде много ресурсоемки извиквания на анализиращи функции.\n\nВ момента има {{PLURAL:$1|$1 обръщение|$1 обръщения}} към такива функции, а трябва да {{PLURAL:$1|е|са}} по-малко от $2.",
+       "expensive-parserfunction-category": "СÑ\82Ñ\80аниÑ\86и, ÐºÐ¾Ð¸Ñ\82о Ð¿Ñ\80екалено Ð¼Ð½Ð¾Ð³Ð¾ Ð¿Ñ\8aÑ\82и Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ñ\82 Ñ\80еÑ\81Ñ\83Ñ\80Ñ\81оемки Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ\80аÑ\89и функции",
+       "post-expand-template-inclusion-warning": "<strong>Внимание:</strong> Размерът за включване на този шаблон е твърде голям.\nНякои шаблони няма да бъдат включени.",
+       "post-expand-template-inclusion-category": "Страници с превишен допустим размер на включените шаблони",
+       "post-expand-template-argument-warning": "<strong>Внимание:</strong> Тази страница съдържа поне един аргумент на шаблон, който има твърде голям размер при разгръщане.\nТези аргументи бяха пропуснати.",
        "post-expand-template-argument-category": "Страници, съдържащи шаблони с пропуснати аргументи",
        "parser-template-loop-warning": "Открито зацикляне на шаблон: [[$1]]",
+       "template-loop-category": "Страници със зацикляне в шаблона",
+       "template-loop-category-desc": "Тази страница съдържа зацикляне в шаблона, т.е. шаблон, който рекурсивно се самоизвиква.",
        "parser-template-recursion-depth-warning": "Надвишен лимит на дълбочината при шаблонна рекурсия ($1)",
        "language-converter-depth-warning": "Надвишени са възможностите за автоматичен превод ($1)",
-       "node-count-exceeded-category": "Страници, където е превишен възел-граф",
+       "node-count-exceeded-category": "Страници с превишен брой възли",
        "node-count-exceeded-category-desc": "Страницата превишава максималния възел-граф.",
        "node-count-exceeded-warning": "Страницата превиши броя на възлите",
        "expansion-depth-exceeded-category": "Страници, в които е превишена дълбочината на разгръщане",
        "expansion-depth-exceeded-warning": "Страницата е превишила разрешената дълбочина на разгръщане",
        "parser-unstrip-loop-warning": "Открито е ''unstrip'' зацикляне",
        "parser-unstrip-recursion-limit": "''Unstrip'' лимита на рекурсия превишава ($1)",
-       "undo-success": "Редакцията може да бъде върната. Прегледайте долното сравнение и се уверете, че наистина искате да го направите. След това съхранете страницата, за да извършите връщането.",
+       "undo-success": "Редакцията може да бъде върната.\nПрегледайте долното сравнение и се уверете, че наистина искате да го направите. След това съхранете страницата, за да извършите връщането.",
        "undo-failure": "Редакцията не може да бъде върната поради конфликтни междинни редакции.",
        "undo-norev": "Редакцията не може да бъде върната, тъй като не съществува или е била изтрита.",
        "undo-nochange": "Тази редакция изглежда вече е отменена.",
        "undo-summary": "Премахната редакция $1 на [[Special:Contributions/$2|$2]] ([[User talk:$2|беседа]])",
        "undo-summary-username-hidden": "Отмяна на редакция $1 от скрит потребител",
-       "cantcreateaccount-text": "[[User:$3|Потребител:$3]] е блокирал(а) създаването на сметки от този IP-адрес ('''$1''').\n\nПричината, изложена от $3, е ''$2''",
+       "cantcreateaccount-text": "[[User:$3|Потребител:$3]] е блокирал(а) създаването на сметки от този IP-адрес (<strong>$1</strong>).\n\nПричината, изложена от $3, е <em>$2</em>",
        "viewpagelogs": "Преглед на извършените административни действия по страницата",
        "nohistory": "Няма редакционна история за тази страница.",
        "currentrev": "Текуща версия",
        "revision-info": "Версия от $1 на {{GENDER:$6|$2}}$7",
        "previousrevision": "← По-стара версия",
        "nextrevision": "По-нова версия →",
-       "currentrevisionlink": "Ð\9fÑ\80еглед Ð½Ð° Ñ\82екÑ\83Ñ\89аÑ\82а версия",
+       "currentrevisionlink": "ТекÑ\83Ñ\89а версия",
        "cur": "тек",
        "next": "след",
        "last": "пред",
        "page_first": "първа",
        "page_last": "последна",
-       "histlegend": "<em>Разлики:</em> Изберете версиите, които желаете да сравните, чрез превключвателите срещу тях и натиснете &lt;Enter&gt; или бутона за сравнение.<br />\n<em>Легенда:</em> (<strong>тек</strong>) = разлика с текущата версия, (<strong>пред</strong>) = разлика с предишната версия, <strong>м</strong>&nbsp;=&nbsp;малка промяна",
+       "histlegend": "Разлики: Изберете версиите, които желаете да сравните, чрез превключвателите срещу тях и натиснете Enter или бутона за сравнение.<br />\nЛегенда: <strong>({{int:cur}})</strong> = разлика с текущата версия, <strong>({{int:last}})</strong> = разлика с предишната версия, <strong>{{int:minoreditletter}}</strong> = малка промяна.",
        "history-fieldset-title": "Търсене на версии",
        "history-show-deleted": "Само за изтриване на версии",
        "histfirst": "най-стари",
        "historysize": "({{PLURAL:$1|1 байт|$1 байта}})",
        "historyempty": "(празна)",
        "history-feed-title": "Редакционна история",
-       "history-feed-description": "Редакционна история на страницата в {{SITENAME}}",
+       "history-feed-description": "Редакционна история на страницата в уикито",
        "history-feed-item-nocomment": "$1 в $2",
-       "history-feed-empty": "Исканата страница не съществува — може да е била изтрита или преименувана. Опитайте да [[Special:Search|потърсите]] нови страници, които биха могли да са ви полезни.",
+       "history-feed-empty": "Исканата страница не съществува.\nМоже да е била изтрита или преименувана.\nОпитайте да [[Special:Search|потърсите]] нови страници, които биха могли да са ви полезни.",
        "history-edit-tags": "Редактиране етикетите на избраните редакции",
        "rev-deleted-comment": "(резюмето е премахнато)",
        "rev-deleted-user": "(името на автора е изтрито)",
        "rev-deleted-event": "(записът е изтрит)",
-       "rev-deleted-user-contribs": "[потребителското име или IP адрес са премахнати - редакцията е скрита от приносите]",
-       "rev-deleted-text-permission": "Тази версия на страницата е била '''изтрита'''.\nДопълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].",
+       "rev-deleted-user-contribs": "[потребителското име или IP адрес са премахнати  редакцията е скрита от приносите]",
+       "rev-deleted-text-permission": "Тази версия на страницата е <strong>изтрита</strong>.\nДопълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].",
        "rev-suppressed-text-permission": "Тази редация на страницата е била <strong>прикрита</strong>.\nДопълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} дневника на прикриванията].",
-       "rev-deleted-text-unhide": "Тази версия на страницата е била '''изтрита'''.\nДопълнителна информация може се съдържа в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].\nКато администратор на сайта вие можете да [$1 прегледате тази редакция], ако желаете да продължите.",
-       "rev-suppressed-text-unhide": "Тази версия на страницата е била '''прикрита'''.\nДопълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Дневника на прикриванията].\nМожете да [$1 прегледате версията], ако желаете да продължите.",
-       "rev-deleted-text-view": "Тази редация на страницата е била '''изтрита'''.\nКато администратор на сайта, вие можете да я прегледате.\nДопълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].",
-       "rev-suppressed-text-view": "Тази редация на страницата е била '''прикрита'''.\nКато администратор на сайта, вие можете да я прегледате.\nДопълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Дневника на прикриванията].",
-       "rev-deleted-no-diff": "Нямате достъп до тази разликова препратка, тъй като една от съставящите я редакции е била '''изтрита'''.\nДопълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].",
-       "rev-suppressed-no-diff": "Не можете да прегледате тази разликова връзка, защото една от участващите в нея версии е била '''изтрита'''.",
-       "rev-deleted-unhide-diff": "Една от редакциите в тази разликова препратка е била '''изтрита'''.\nДопълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].\nКато администратор на сайта, вие можете да [$1 прегледате разликовата препратка], ако желаете.",
-       "rev-suppressed-unhide-diff": "Една от версиите, съставляващи тази разликова препратка, е била '''прикрита'''.\nДопълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Дневника на прикриванията].\nМожете да [$1 прегледате тази разликова препратка], ако желаете да продължите.",
-       "rev-deleted-diff-view": "Една от версиите на тази разлика е била '''изтрита'''.\nМожете да видите тази разлика; възможно е да има повече информация в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневника на изтриванията].",
-       "rev-suppressed-diff-view": "Една от редакциите от тази разлика между версиите е била '''прикрита'''.\nКато администратор, можете да видите тази разлика; повече подробности има в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} дневника за прикриванията].",
-       "rev-delundel": "показване/скриване",
+       "rev-deleted-text-unhide": "Тази версия на страницата е <strong>изтрита</strong>.\nДопълнителна информация може се съдържа в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].\nКато администратор на сайта вие можете да [$1 прегледате тази редакция], ако желаете да продължите.",
+       "rev-suppressed-text-unhide": "Тази версия на страницата е била <strong>прикрита</strong>.\nДопълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Дневника на прикриванията].\nМожете да [$1 прегледате версията], ако желаете да продължите.",
+       "rev-deleted-text-view": "Тази редакция на страницата е <strong>изтрита</strong>.\nКато администратор на сайта, вие можете да я прегледате.\nДопълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].",
+       "rev-suppressed-text-view": "Тази редакция на страницата е била <strong>прикрита</strong>.\nМожете да я прегледате. Допълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Дневника на прикриванията].",
+       "rev-deleted-no-diff": "Нямате достъп до тази разликова препратка, тъй като една от съставящите я редакции е била <strong>изтрита</strong>.\nДопълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].",
+       "rev-suppressed-no-diff": "Не можете да прегледате тази разликова връзка, защото една от участващите в нея версии е била <strong>изтрита</strong>.",
+       "rev-deleted-unhide-diff": "Една от редакциите в тази разликова препратка е била <strong>изтрита</strong>.\nДопълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Дневника на изтриванията].\nКато администратор на сайта, вие можете да [$1 прегледате разликовата препратка], ако желаете.",
+       "rev-suppressed-unhide-diff": "Една от версиите, съставляващи тази разликова препратка, е била <strong>прикрита</strong>.\nДопълнителна информация може да се съдържа в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Дневника на прикриванията].\nМожете да [$1 прегледате тази разликова препратка], ако желаете да продължите.",
+       "rev-deleted-diff-view": "Една от версиите на тази разлика е <strong>изтрита</strong>.\nМожете да видите тази разлика; възможно е да има повече информация в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневника на изтриванията].",
+       "rev-suppressed-diff-view": "Една от редакциите от тази разлика между версиите е <strong>прикрита</strong>.\nКато администратор, можете да видите тази разлика; повече подробности има в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} дневника за прикриванията].",
+       "rev-delundel": "промяна на видимостта",
        "rev-showdeleted": "показване",
        "revisiondelete": "Изтриване/възстановяване на версии",
        "revdelete-nooldid-title": "Не е зададена версия",
        "revdelete-selected-text": "{{PLURAL:$1|Избрана версия|Избрани версии}} от [[:$2]]:",
        "revdelete-selected-file": "{{PLURAL:$1|Избрана версия|Избрани версии}} на файл от [[:$2]]:",
        "logdelete-selected": "{{PLURAL:$1|Избрано събитие|Избрани събития}}:",
-       "revdelete-text-text": "Изтритите редакции ще продължат да се виждат в историята на страницата, но части от съдържанието ще бъдат публично недостъпни.",
+       "revdelete-text-text": "Изтритите редакции ще продължат да се виждат в историята на страницата, но части от съдържанието няма да бъдат достъпни публично.",
        "revdelete-text-file": "Изтритите файлови редакции ще продължат да се виждат в историята на страницата, но части от съдържанието им ще бъдат публично недостъпни.",
        "logdelete-text": "Изтриват записи в дневника ще продължат да се виждат в дневниците, но част от тяхното съдържание ще бъде недостъпно за обществеността.",
        "revdelete-text-others": "Другите администратори ще продължат да имат достъп до скритото съдържание и могат да го възстановят, освен ако не бъдат наложени допълнителни ограничения.",
        "revdelete-show-no-access": "Грешка при показване на обект, датиран към $2, $1: обектът е бил отбелязан като \"ограничен\".\nНямате достъп до него.",
        "revdelete-modify-no-access": "Грешка при промяна на елемент от $2, $1: Този елемент е бил отбелязан като „ограничен“.\nВие нямате достъп до него.",
        "revdelete-modify-missing": "Грешка при промяна на елемент с номер $1: липсва в базата данни!",
-       "revdelete-no-change": "'''Внимание:''' елементът от $2, $1 вече притежава поисканите настройки за видимост.",
+       "revdelete-no-change": "<strong>Внимание:</strong> елементът от $2, $1 вече притежава поисканите настройки за видимост.",
        "revdelete-concurrent-change": "Грешка при модифициране на обект, датиран към $2, $1: изглежда, че статутът му е бил променен от някого, докато сте се опитвали да го модифицирате.\nМоля, погледнете в съответните дневници.",
        "revdelete-only-restricted": "Грешка при прикриване на обекта на $2, $1: не можете да прикривате обекти от администраторите, без същевременно да изберете някоя от другите опции за прозрачност.",
        "revdelete-reason-dropdown": "* Стандартни причини за изтриване\n** Нарушение на авторски права\n** Неуместна лична информация\n** Неуместно потребителско име\n** Потенциално клеветническа информация",
        "nextn-title": "$1 {{PLURAL:$1|следващ резултат|следващи резултата}}",
        "shown-title": "Показване на $1 {{PLURAL:$1|резултат|резултата}} на страница",
        "viewprevnext": "Преглед ($1 {{int:pipe-separator}} $2) ($3).",
-       "searchmenu-exists": "'''Съществува страница с името „[[:$1]]“ в това уики.'''",
+       "searchmenu-exists": "<strong>Съществува страница с името „[[:$1]]“ в това уики.</strong> {{PLURAL:$2|0=|Вижте и другите открити резултати.}}",
        "searchmenu-new": "<strong>Създаване на страницата „[[:$1]]“ в това уики!</strong> {{PLURAL:$2|0=|Вижте също страницата, която е резултат от търсенето.|Вижте също резултатите от търсенето.}}",
-       "searchprofile-articles": "СÑ\8aдÑ\8aÑ\80жаÑ\82елни Ñ\81Ñ\82Ñ\80аниÑ\86и",
+       "searchprofile-articles": "СÑ\82Ñ\80аниÑ\86и Ñ\81Ñ\8aÑ\81 Ñ\81Ñ\8aдÑ\8aÑ\80жание",
        "searchprofile-images": "Мултимедия",
        "searchprofile-everything": "Всичко",
        "searchprofile-advanced": "Разширено търсене",
        "search-redirect": "(пренасочване от $1)",
        "search-section": "(раздел $1)",
        "search-category": "(категория $1)",
+       "search-file-match": "(съвпада със съдържанието на файла)",
        "search-suggest": "Вероятно имахте предвид: $1",
        "search-rewritten": "Показани са резултати за $1. Вместо това търсете $2.",
-       "search-interwiki-caption": "Сродни проекти",
+       "search-interwiki-caption": "РезÑ\83лÑ\82аÑ\82и Ð¾Ñ\82 Ñ\81родни проекти",
        "search-interwiki-default": "Резултати от $1:",
        "search-interwiki-more": "(още)",
        "search-interwiki-more-results": "повече резултати",
        "localtime": "Местно време:",
        "timezoneuseserverdefault": "По подразбиране от уикито ($1)",
        "timezoneuseoffset": "Друга (посочете отместване)",
-       "servertime": "Ð\92Ñ\80еме Ð½Ð° Ñ\81Ñ\8aÑ\80вÑ\8aÑ\80а:",
+       "servertime": "СÑ\8aÑ\80вÑ\8aÑ\80но Ð²Ñ\80еме:",
        "guesstimezone": "Попълване чрез браузъра",
        "timezoneregion-africa": "Африка",
        "timezoneregion-america": "Америка",
        "email": "Е-поща",
        "prefs-help-realname": "* Истинското име не е задължително. Ако го посочите, вашите приноси ще бъдат приписани на него.",
        "prefs-help-email": "Електронната поща е незадължителна, но позволява възстановяване на забравена или загубена парола.",
-       "prefs-help-email-others": "Ð\9cожеÑ\82е Ð´Ð° Ð¸Ð·Ð±ÐµÑ\80еÑ\82е Ð´Ð° Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ\82е Ð½Ð° Ð´Ñ\80Ñ\83гиÑ\82е Ð´Ð° Ñ\81е Ñ\81вÑ\8aÑ\80зваÑ\82 Ñ\81 Ð²Ð°Ñ\81 Ð¿Ð¾ ÐµÐ»ÐµÐºÑ\82Ñ\80онна Ð¿Ð¾Ñ\89а, ÐºÐ°Ñ\82о Ñ\89Ñ\80акваÑ\82 Ð½Ð° Ð¿Ñ\80епÑ\80аÑ\82ка Ð¾Ñ\82 Ð²Ð°Ñ\88аÑ\82а Ð»Ð¸Ñ\87на Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82елÑ\81ка Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¸Ð»Ð¸ Ð±ÐµÑ\81еда. \nÐ\90дÑ\80еÑ\81Ñ\8aÑ\82 Ð½Ð° ÐµÐ»ÐµÐºÑ\82Ñ\80оннаÑ\82а Ð²Ð¸ Ð¿Ð¾Ñ\89а Ð½Ðµ Ñ\81е Ñ\80азкÑ\80ива Ð½Ð° Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82елиÑ\82е, ÐºÐ¾Ð¸Ñ\82о Ñ\81е Ñ\81вÑ\8aÑ\80зваÑ\82 Ñ\81 Ð²ас по този начин.",
+       "prefs-help-email-others": "Ð\9cожеÑ\82е Ð´Ð° Ð¸Ð·Ð±ÐµÑ\80еÑ\82е Ð´Ð° Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ\82е Ð½Ð° Ð´Ñ\80Ñ\83гиÑ\82е Ð´Ð° Ñ\81е Ñ\81вÑ\8aÑ\80зваÑ\82 Ñ\81 Ð\92аÑ\81 Ð¿Ð¾ ÐµÐ»ÐµÐºÑ\82Ñ\80онна Ð¿Ð¾Ñ\89а, ÐºÐ°Ñ\82о Ñ\89Ñ\80акваÑ\82 Ð½Ð° Ð¿Ñ\80епÑ\80аÑ\82ка Ð¾Ñ\82 Ð\92аÑ\88аÑ\82а Ð»Ð¸Ñ\87на Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82елÑ\81ка Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¸Ð»Ð¸ Ð±ÐµÑ\81еда. \nÐ\90дÑ\80еÑ\81Ñ\8aÑ\82 Ð½Ð° ÐµÐ»ÐµÐºÑ\82Ñ\80оннаÑ\82а Ð\92и Ð¿Ð¾Ñ\89а Ð½Ðµ Ñ\81е Ñ\80азкÑ\80ива Ð½Ð° Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82елиÑ\82е, ÐºÐ¾Ð¸Ñ\82о Ñ\81е Ñ\81вÑ\8aÑ\80зваÑ\82 Ñ\81 Ð\92ас по този начин.",
        "prefs-help-email-required": "Изисква се адрес за електронна поща.",
        "prefs-info": "Основна информация",
        "prefs-i18n": "Интернационализация",
        "right-movefile": "Преместване на файлове",
        "right-suppressredirect": "Без създаване на пренасочване от старото име при преместване на страница",
        "right-upload": "Качване на файлове",
-       "right-reupload": "Ð\9fÑ\80езапиÑ\81ване на съществуващ файл",
-       "right-reupload-own": "Ð\9fÑ\80езапиÑ\81ване на съществуващ файл, качен от същия потребител",
-       "right-reupload-shared": "Ð\9fÑ\80едеÑ\84иниÑ\80ане на едноименните файлове от общото мултимедийно хранилище с локални",
+       "right-reupload": "Ð\9fÑ\80епокÑ\80иване на съществуващ файл",
+       "right-reupload-own": "Ð\9fÑ\80епокÑ\80иване на съществуващ файл, качен от същия потребител",
+       "right-reupload-shared": "Ð\9fÑ\80епокÑ\80иване на едноименните файлове от общото мултимедийно хранилище с локални",
        "right-upload_by_url": "Качване на файл от URL адрес",
        "right-purge": "Изчистване на складираното съдържание на страниците без показване на страница за потвърждение",
        "right-autoconfirmed": "Редактиране на полузащитени страници",
        "right-override-export-depth": "Изнасяне на страници, включително свързаните с тях в дълбочина до пето ниво",
        "right-sendemail": "Изпращане на е-писма до другите потребители",
        "grant-group-email": "Изпращане на е-писмо",
+       "grant-group-administration": "Извършване на административни действия",
        "grant-blockusers": "Блокиране и отблокиране на потребители",
        "grant-createaccount": "Създаване на сметки",
        "grant-createeditmovepage": "Създаване, редактиране и преместване на страници",
        "grant-editpage": "Редактиране на съществуващи страници",
        "grant-editprotected": "Редактиране на защитени страници",
        "grant-highvolume": "Голям обем за редактиране",
-       "grant-oversight": "Скриване на участниците и версия страници",
-       "grant-patrol": "Патрулират промени страници",
+       "grant-oversight": "Скриване на потребители и прикриване на редакции",
+       "grant-patrol": "Патрулиране промени на страници",
        "grant-privateinfo": "Достъп до лична информация",
        "grant-protect": "Защита и премахване на защита на страници",
        "grant-rollback": "Връщане на промени по страници",
        "grant-sendemail": "Изпращане на имейл до други потребители",
-       "grant-uploadeditmovefile": "Качване, заменяне и прехвърляне на файлове",
+       "grant-uploadeditmovefile": "Качване, замяна и преместване на файлове",
        "grant-uploadfile": "Качване на нови файлове",
        "grant-basic": "Основни права",
-       "grant-viewdeleted": "Преглед на изтрити файлове и страници",
+       "grant-viewdeleted": "Преглед на изтритите файлове и страници",
        "grant-viewmywatchlist": "Преглед на списъка ви за наблюдение",
        "newuserlogpage": "Дневник на регистрациите",
        "newuserlogpagetext": "В този дневник се записват регистрациите на потребители.",
        "recentchanges-feed-description": "Проследяване на последните промени в {{SITENAME}}.",
        "recentchanges-label-newpage": "Нова страница",
        "recentchanges-label-minor": "Това е малка промяна",
-       "recentchanges-label-bot": "Тази Ñ\80едакÑ\86иÑ\8f Ðµ Ð¸Ð·Ð²Ñ\8aÑ\80Ñ\88ена от бот",
+       "recentchanges-label-bot": "Тази Ñ\80едакÑ\86иÑ\8f Ðµ Ð½Ð°Ð¿Ñ\80авена от бот",
        "recentchanges-label-unpatrolled": "Тази редакция все още не е проверена",
        "recentchanges-label-plusminus": "Размерът на страницата е променен с този брой байтове",
        "recentchanges-legend-heading": "<strong>Легенда:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (вижте също [[Special:NewPages|списъка с нови страници]])",
        "recentchanges-submit": "Покажи",
-       "rcfilters-restore-default-filters": "Възстановяване на филтри по подразбиране",
+       "rcfilters-activefilters": "Активни филтри",
+       "rcfilters-savedqueries-defaultlabel": "Съхранени филтри",
+       "rcfilters-savedqueries-rename": "Преименуване",
+       "rcfilters-savedqueries-setdefault": "Установяване като стойност по подразбиране",
+       "rcfilters-savedqueries-unsetdefault": "Премахване на стойността по подразбиране",
+       "rcfilters-savedqueries-remove": "Премахване",
+       "rcfilters-savedqueries-new-name-label": "Име",
+       "rcfilters-savedqueries-apply-label": "Съхраняване на настройките",
+       "rcfilters-savedqueries-cancel-label": "Отказ",
+       "rcfilters-savedqueries-add-new-title": "Съхраняване на текущите настройки на филтрите",
+       "rcfilters-restore-default-filters": "Възстановяване на филтрите по подразбиране",
        "rcfilters-clear-all-filters": "Изчистване на всички филтри",
+       "rcfilters-search-placeholder": "Филтриране на последните промени (изберете или започнете да въвеждате)",
+       "rcfilters-invalid-filter": "Невалиден филтър",
+       "rcfilters-empty-filter": "Няма активни филтри. Показани са всички редакции.",
        "rcfilters-filterlist-title": "Филтри",
        "rcfilters-filterlist-whatsthis": "Какво е това?",
+       "rcfilters-filterlist-feedbacklink": "Оставете коментар за новите (бета) филтри",
+       "rcfilters-highlightbutton-title": "Отбелязване на резултатите",
        "rcfilters-highlightmenu-title": "Изберете цвят",
+       "rcfilters-highlightmenu-help": "Изберете цвят за отбелязване на свойството",
        "rcfilters-filterlist-noresults": "Не са намерени филтри",
        "rcfilters-filtergroup-registration": "Регистрация на потребители",
-       "rcfilters-filter-registered-label": "Регистрация",
+       "rcfilters-filter-registered-label": "Регистрирани",
+       "rcfilters-filter-registered-description": "Влезли в системата редактори.",
        "rcfilters-filter-unregistered-label": "Нерегистрирани",
-       "rcfilters-filter-editsbyself-label": "Ваши собствени редакции",
+       "rcfilters-filter-unregistered-description": "Редактори, които не са влезли в системата.",
+       "rcfilters-filtergroup-authorship": "Авторство на редакциите",
+       "rcfilters-filter-editsbyself-label": "Ваши редакции",
        "rcfilters-filter-editsbyself-description": "Ваши редакции.",
        "rcfilters-filter-editsbyother-label": "Чужди редакции",
+       "rcfilters-filter-editsbyother-description": "Всички редакции с изключение на вашите собствени.",
+       "rcfilters-filtergroup-userExpLevel": "Ниво на опита (само за регистрирани потребители)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Новодошли",
+       "rcfilters-filter-user-experience-level-newcomer-description": "По-малко от 10 редакции и 5 дни активност.",
+       "rcfilters-filter-user-experience-level-learner-label": "Учещи се",
+       "rcfilters-filter-user-experience-level-learner-description": "Повече опит от „Новодошли“, но по-малко от „Опитни потребители“.",
        "rcfilters-filter-user-experience-level-experienced-label": "Опитни потребители",
-       "rcfilters-filtergroup-automated": "Автоматизирани приноси",
+       "rcfilters-filter-user-experience-level-experienced-description": "Повече от 30 дни активност и 500 редакции.",
+       "rcfilters-filtergroup-automated": "Автоматизирани редакции",
        "rcfilters-filter-bots-label": "Бот",
        "rcfilters-filter-bots-description": "Редакции, направени с помощта на автоматизирани инструменти.",
        "rcfilters-filter-humans-label": "Човек (не бот)",
        "rcfilters-filter-unpatrolled-description": "Редакции, неотбелязани като патрулирани.",
        "rcfilters-filtergroup-significance": "Значимост",
        "rcfilters-filter-minor-label": "Малки промени",
+       "rcfilters-filter-minor-description": "Редакции, които не са отбелязани като малки промени.",
        "rcfilters-filter-major-label": "Обикновени редакции",
+       "rcfilters-filter-major-description": "Редакции, които не са отбелязани като малки промени.",
+       "rcfilters-filtergroup-watchlist": "Страници от списъка за наблюдение",
+       "rcfilters-filter-watchlist-watched-label": "В списъка за наблюдение",
+       "rcfilters-filter-watchlist-watched-description": "Промени в страници от списъка за наблюдение.",
+       "rcfilters-filter-watchlist-watchednew-label": "Нови промени в списъка за наблюдение",
+       "rcfilters-filter-watchlist-watchednew-description": "Промени в страниците от списъка за наблюдение, които не сте посетили от извършването им.",
+       "rcfilters-filter-watchlist-notwatched-label": "Извън списъка за наблюдение",
+       "rcfilters-filter-watchlist-notwatched-description": "Всички, освен промените в страници от списъка за наблюдение.",
        "rcfilters-filtergroup-changetype": "Вид на промяната",
        "rcfilters-filter-pageedits-label": "Редакции на страници",
+       "rcfilters-filter-pageedits-description": "Редакции на съдържанието, беседи, описания на категории...",
        "rcfilters-filter-newpages-label": "Създавания на страници",
+       "rcfilters-filter-newpages-description": "Редакции, чрез които се създават нови страници.",
        "rcfilters-filter-categorization-label": "Промяна на категории",
+       "rcfilters-filter-categorization-description": "Записи от добавяне или премахване на страници от категории.",
+       "rcfilters-filter-logactions-label": "Записани в дневника действия",
+       "rcfilters-filter-logactions-description": "Административни действия, създавания на сметки, изтривания на страници, качвания...",
+       "rcfilters-filtergroup-lastRevision": "Текуща версия",
+       "rcfilters-filter-lastrevision-label": "Текуща версия",
+       "rcfilters-filter-lastrevision-description": "Последната промяна на страница.",
+       "rcfilters-filter-previousrevision-label": "По-ранни версии",
+       "rcfilters-filter-previousrevision-description": "Всички редакции, които не са последните на страница.",
        "rcnotefrom": "{{PLURAL:$5|Дадена е промяната|Дадени са промените}} от <strong>$3, $4</strong> (до <strong>$1</strong> показани).",
        "rclistfrom": "Показване на промени, като се започва от $3 $2",
        "rcshowhideminor": "$1 на малки промени",
        "rcshowhidecategorization": "$1 категоризации",
        "rcshowhidecategorization-show": "Показване на",
        "rcshowhidecategorization-hide": "Скриване на",
-       "rclinks": "Показване на последните $1 промени за последните $2 дни<br />$3",
+       "rclinks": "Показване на последните $1 промени за последните $2 дни",
        "diff": "разл",
        "hist": "ист",
        "hide": "Скриване",
        "upload_directory_missing": "Директорията за качване ($1) липсва и не може да бъде създадена на сървъра.",
        "upload_directory_read_only": "Сървърът няма достъп за писане в директорията за качване „$1“.",
        "uploaderror": "Грешка при качване",
-       "upload-recreate-warning": "'''Внимание: Файл с това име вече е бил изтрит или преместен.'''\n\nЗа повече информация можете да прегледате записите от дневниците на изтриванията и преместванията:",
-       "uploadtext": "Формулярът по-долу служи за качване на файлове, които ще могат да се използват в страниците.\nЗа преглеждане и търсене на вече качените файлове, може да се използва [[Special:FileList|списъка с качени файлове]]. Качванията се записват в [[Special:Log/upload|дневника на качванията]], а изтриванията &mdash; в [[Special:Log/delete|дневник на изтриванията]].\n\nЗа включване на файл в страница, може да се използва една от следния синтаксис: \n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' за използване пълната версия на файла\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' за определяне на широчина от 200 пиксела, ляво позициониране и 'alt text' за описание\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' за директна препратка, без файлът да бъде показван",
+       "upload-recreate-warning": "<strong>Внимание: Файл с това име вече е бил изтрит или преместен.</strong>\n\nЗа повече информация можете да прегледате записите от дневниците на изтриванията и преместванията:",
+       "uploadtext": "Формулярът по-долу служи за качване на файлове, които ще могат да се използват в страниците.\nЗа преглеждане и търсене на вече качените файлове, може да се използва [[Special:FileList|списъка с качени файлове]]. Качванията се записват в [[Special:Log/upload|дневника на качванията]], а изтриванията &mdash; в [[Special:Log/delete|дневник на изтриванията]].\n\nЗа включване на файл в страница, може да се използва една от следния синтаксис: \n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code></strong> за използване пълната версия на файла\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code></strong> за определяне на широчина от 200 пиксела, ляво позициониране и „alt text“ за описание\n* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code></strong> за директна препратка, без файлът да бъде показван",
        "upload-permitted": "{{PLURAL:$2|Разрешен файлов формат|Разрешени файлови формати}}: $1.",
        "upload-preferred": "{{PLURAL:$2|Предпочитан файлов формат|Предпочитани файлови формати}}: $1.",
        "upload-prohibited": "{{PLURAL:$2|Непозволен файлов формат|Непозволени файлови формати}}: $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": "<strong>„.$1“</strong> е нежелан файлов формат.\n{{PLURAL:$3|Препоръчителният файлов формат е|Препоръчителните файлови формати са}} $2.",
        "filetype-banned-type": "'''„.$1“''' не {{PLURAL:$4|е позволен файлов формат|са позволени файлови формати}}. {{PLURAL:$3|Позволеният файлов формат е|Позволените файлови формати са}} $2.",
        "filetype-missing": "Файлът няма разширение (напр. „.jpg“).",
        "empty-file": "Подаденият от вас файл беше празен.",
        "fileexists": "Вече съществува файл с това име! Прегледайте <strong>[[:$1]]</strong>, ако не сте {{GENDER:|сигурен|сигурна}}, че желаете да го промените.\n[[$1|thumb]]",
        "filepageexists": "Описателната страница за този файл вече е създадена на <strong>[[:$1]]</strong>, въпреки че файл с това име в момента не съществува. Въведеното от вас резюме няма да се появи на описателната страница. За целта, страницата трябва да бъде редактирана ръчно.\n[[$1|thumb]]",
        "fileexists-extension": "Съществува файл със сходно име: [[$2|thumb]]\n* Име на файла за качване: <strong>[[:$1]]</strong>\n* Име на съществуващия файл: <strong>[[:$2]]</strong>\nМоля, изберете друго име на файла за качване.",
-       "fileexists-thumbnail-yes": "Изглежда, че файлът е картинка с намален размер ''(миникартинка)''. [[$1|thumb]]\nПроверете файла <strong>[[:$1]]</strong>.\nАко съществуващият файл представлява оригиналната версия на картинката, няма нужда да се качва неин умален вариант.",
+       "fileexists-thumbnail-yes": "Изглежда, че файлът е картинка с намален размер ''(миникартинка)''.\n[[$1|thumb]]\nПроверете файла <strong>[[:$1]]</strong>.\nАко съществуващият файл представлява оригиналната версия на картинката, няма нужда да се качва неин умален вариант.",
        "file-thumbnail-no": "Файловото име започва с <strong>$1</strong>. Изглежда, че е картинка с намален размер ''(миникартинка)''.\nАко разполагате с версия в пълна разделителна способност, качете нея. В противен случай сменете името на този файл.",
        "fileexists-forbidden": "Вече съществува файл с това име, който не може да бъде презаписан!\nАко желаете да качите вашия файл, върнете се и го качете с ново име. [[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "В споделеното хранилище за файлове вече съществува файл с това име.\nАко все още желаете да качите вашия файл, върнете се и качете файла с ново име. [[File:$1|thumb|center|$1]]",
        "upload-dialog-button-upload": "Качване",
        "upload-form-label-infoform-title": "Подробности",
        "upload-form-label-infoform-name": "Име",
-       "upload-form-label-infoform-name-tooltip": "Уникално описателно заглавие на файла, което ще бъде записано като име на файла. Можете да използвате обикновен текст с разстояние. Не включвайте файловото разширение.",
+       "upload-form-label-infoform-name-tooltip": "Уникално описателно заглавие на файла, което ще бъде записано като име на файла. Можете да използвате обикновен текст с интервали. Не добавяйте разширението на файла.",
        "upload-form-label-infoform-description": "Описание",
        "upload-form-label-infoform-description-tooltip": "Накратко опишете всичко, което си струва да се каже за тази творба.\nНапример, ако е снимка, опишете основните неща, които са снимани, повода, местоположението и т.н.",
        "upload-form-label-usage-title": "Използване",
        "uploadstash-refresh": "Обновяване на списъка с файлове",
        "uploadstash-thumbnail": "преглед на миниатюра",
        "img-auth-accessdenied": "Достъпът е отказан",
-       "img-auth-nopathinfo": "Ð\9bипÑ\81ва PATH_INFO.\nÐ\92аÑ\88иÑ\8fÑ\82 Ñ\81Ñ\8aÑ\80вÑ\8aÑ\80 Ð½Ðµ Ðµ ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80иÑ\80ан Ð´Ð° Ð¿Ñ\80едава Ñ\82ази Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8f.\nТой Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ðµ Ð±Ð°Ð·Ð¸Ñ\80ан Ð½Ð° CGI Ð¸ Ð´Ð° Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð¿Ð¾Ð´Ð´Ñ\8aÑ\80жа img_auth.\nÐ\92ижÑ\82е https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
+       "img-auth-nopathinfo": "Липсва PATH_INFO.\nВашият сървър не е конфигуриран да предава тази информация.\nТой може да е базиран на CGI и да не поддържа img_auth.\nВижте https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
        "img-auth-notindir": "Търсеният път не е в настроената директория за качвания.",
        "img-auth-badtitle": "Грешка при изграждането на валидно заглавие от „$1“.",
        "img-auth-nologinnWL": "Не сте влезли в системата и „$1“ не е в разрешения списък.",
        "img-auth-nofile": "Файлът „$1“ не съществува.",
        "img-auth-isdir": "Опитвате се да осъществите достъп до директорията „$1“.\nРазрешен е само достъп до файловете.",
        "img-auth-streaming": "Излъчване \"$1\"",
-       "img-auth-public": "Функцията img_auth.php е да извлича файлове от частни уикита.\nТова уики е конфигурирано като публично.\nС цел оптимална сигурност, функцията img_auth.php е деактивирана.",
+       "img-auth-public": "Функцията на img_auth.php е да извлича файлове от частни уикита.\nТова уики е конфигурирано като публично.\nС цел оптимална сигурност, функцията img_auth.php е деактивирана.",
        "img-auth-noread": "Потребителят няма достъп за четене на „$1“.",
        "http-invalid-url": "Невалиден адрес: $1",
-       "http-invalid-scheme": "Не се поддържат URL адреси с префикс „$1“.",
+       "http-invalid-scheme": "Не се поддържат URL адреси с представка „$1“.",
        "http-request-error": "HTTP заявката пропадна поради неизвестна грешка.",
        "http-read-error": "HTTP грешка при четене.",
        "http-timed-out": "Пресрочено време за HTTP заявка.",
        "upload-curl-error6": "Не е възможно достигането на указания URL адрес",
        "upload-curl-error6-text": "Търсеният адрес не може да бъде достигнат. Проверете дали е написан вярно.",
        "upload-curl-error28": "Времето за качване изтече",
-       "upload-curl-error28-text": "Сайтът не отговаря твърде дълго. Убедете се, че сайтът работи, изчакайте малко и опитайте отново. В краен случай опитайте през по-ненатоварено време.",
+       "upload-curl-error28-text": "Сайтът не отговаря твърде дълго.\nУбедете се, че сайтът работи, изчакайте малко и опитайте отново.\nВ краен случай опитайте през по-ненатоварено време.",
        "license": "Лицензиране:",
        "license-header": "Лицензиране",
        "nolicense": "Нищо не е избрано",
        "shared-repo-from": "от $1",
        "shared-repo": "споделено хранилище",
        "shared-repo-name-wikimediacommons": "Общомедия",
-       "upload-disallowed-here": "Ð\9dе Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð¿Ñ\80езапиÑ\88ете файла.",
+       "upload-disallowed-here": "Ð\9dе Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð¿Ñ\80епокÑ\80иете файла.",
        "filerevert": "Възвръщане на $1",
        "filerevert-legend": "Възвръщане на файла",
-       "filerevert-intro": "Възвръщане на '''[[Media:$1|$1]]''' към [$4 версията от $3, $2].",
+       "filerevert-intro": "Възвръщане на <strong>[[Media:$1|$1]]</strong> към [$4 версията от $3, $2].",
        "filerevert-comment": "Причина:",
        "filerevert-defaultcomment": "Възвръщане към версия от $2, $1 ($3)",
        "filerevert-submit": "Възвръщане",
        "filerevert-badversion": "Не съществува предишна локална версия на файла със зададения времеви отпечатък.",
        "filedelete": "Изтриване на $1",
        "filedelete-legend": "Изтриване на файл",
-       "filedelete-intro": "На път сте да изтриете файла '''[[Media:$1|$1]]''' заедно с цялата му редакционна история.",
-       "filedelete-intro-old": "Изтривате версията на '''[[Media:$1|$1]]''' към [$4 $3, $2].",
+       "filedelete-intro": "На път сте да изтриете файла <strong>[[Media:$1|$1]]</strong> заедно с цялата му редакционна история.",
+       "filedelete-intro-old": "Изтривате версията на <strong>[[Media:$1|$1]]</strong> към [$4 $3, $2].",
        "filedelete-comment": "Причина:",
        "filedelete-submit": "Изтриване",
        "filedelete-success": "Файлът '''$1''' беше изтрит.",
        "doubleredirectstext": "Тази страница съдържа списък със страници, които пренасочват към друга пренасочваща страница.\nВсеки ред съдържа препратки към първото и второто пренасочване, както и целта на второто пренасочване, която обикновено е „истинската“ целева страница, към която първото пренасочване би трябвало да сочи.\n<del>Задрасканите</del> записи са коригирани.",
        "double-redirect-fixed-move": "Страница [[$1]] беше преместена.\nБеше автоматично обновена и сега пренасочва към [[$2]].",
        "double-redirect-fixed-maintenance": "Автоматично коригиране на двойно пренасочване от [[$1]] към [[$2]] при извършване на техническо обслужване.",
-       "double-redirect-fixer": "Redirect fixer",
+       "double-redirect-fixer": "Коректор на пренасочвания",
        "brokenredirects": "Невалидни пренасочвания",
        "brokenredirectstext": "Следните пренасочващи страници сочат към несъществуващи страници:",
        "brokenredirects-edit": "редактиране",
        "mostrevisions": "Страници с най-много версии",
        "prefixindex": "Всички страници с представка",
        "prefixindex-namespace": "Всички страници с представка (именно пространство $1)",
-       "prefixindex-submit": "Ð\9fокажи",
+       "prefixindex-submit": "Ð\9fоказване",
        "prefixindex-strip": "Скриване на представката в списъка с резултати",
        "shortpages": "Кратки страници",
        "longpages": "Дълги страници",
        "booksources-search": "Търсене",
        "booksources-text": "По-долу е списъкът от връзки към други сайтове, продаващи нови и използвани книги или имащи повече информация за книгите, които търсите:",
        "booksources-invalid-isbn": "Предоставеният ISBN изглежда е невалиден; проверете за грешки и копирайте от оригиналния източник.",
+       "magiclink-tracking-pmid": "Страници, използващи вълшебни препратки PMID",
+       "magiclink-tracking-pmid-desc": "Тази страница използва вълшебни препратки PMID. Вижте [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] как да ги пренесете.",
+       "magiclink-tracking-isbn": "Страници, използващи вълшебни препратки ISBN",
+       "magiclink-tracking-isbn-desc": "Тази страница използва вълшебни препратки ISBN. Вижте [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] как да ги пренесете.",
        "specialloguserlabel": "Изпълнител:",
        "speciallogtitlelabel": "Цел (заглавие или {{ns:user}}:потребителско име за потребител):",
        "log": "Дневници",
        "allpagesbadtitle": "Зададеното име е невалидно. Възможно е да съдържа междуезикова или междупроектна представка или пък знаци, които не могат да се използват в заглавия.",
        "allpages-bad-ns": "В {{SITENAME}} не съществува именно пространство „$1“.",
        "allpages-hide-redirects": "Скриване на пренасочванията",
-       "cachedspecial-viewing-cached-ttl": "Ð\9fÑ\80еглеждаÑ\82е ÐºÐµÑ\88иÑ\80ана Ð²ÐµÑ\80Ñ\81иÑ\8f Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86а, ÐºÐ¾Ñ\8fÑ\82о Ðµ Ð·Ð° Ð¿Ð¾Ñ\81ледно обновена преди $1.",
+       "cachedspecial-viewing-cached-ttl": "Ð\9fÑ\80еглеждаÑ\82е ÐºÐµÑ\88иÑ\80ана Ð²ÐµÑ\80Ñ\81иÑ\8f Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86а, ÐºÐ¾Ñ\8fÑ\82о Ð·Ð° Ð¿Ð¾Ñ\81ледно Ðµ обновена преди $1.",
        "cachedspecial-refresh-now": "Преглед на текущата.",
        "categories": "Категории",
        "categories-submit": "Показване",
        "changecontentmodel-submit": "Променяне",
        "changecontentmodel-success-title": "Моделът на съдържание бе променен",
        "changecontentmodel-success-text": "Типът на съдържанието на [[:$1]] е успешно променен.",
-       "log-name-contentmodel": "Дневник на cъдържанието промяна модела",
+       "log-name-contentmodel": "Дневник на промените на модела на съдържанието",
        "log-description-contentmodel": "Страницата показва промените в модела на съдържанието на страниците и страниците, създадени с модел на съдържанието различен от този по подразбиране.",
        "logentry-contentmodel-change-revertlink": "връщане",
        "logentry-contentmodel-change-revert": "връщане",
        "undeleteextrahelp": "За възстановяване на пълната история на страницата не се слагат отметки и се натиска '''''{{int:undeletebtn}}'''''.\nЗа частично възстановяване се поставят отметки на тези версии на страницата, които трябва да бъдат възстановени, след което се натиска '''''{{int:undeletebtn}}'''''.",
        "undeleterevisions": "$1 {{PLURAL:$1|версия беше изтрита|версии бяха изтрити}}",
        "undeletehistory": "Ако възстановите страницата, всички версии ще бъдат върнати в историята.\nАко след изтриването е създадена страница със същото име, възстановените версии ще се появят като по-ранна история, а текущата версия на страницата няма да бъде заменена автоматично. Също така обърнете внимание, че ограниченията, приложени върху версиите, ще се загубят след възстановяването.",
-       "undeleterevdel": "Възстановяването няма да бъде изпълнено, ако би довело до частично изтриване на актуалната версия. В такъв случай актуалната версия не трябва да бъде избирана или пък състоянието й трябва да бъде променено на нормална (нескрита) версия. Версиите на файлове, които нямате право да преглеждате, няма да бъдат възстановени.",
-       "undeletehistorynoadmin": "Тази страница е била изтрита. В резюмето отдолу е посочена причината за това, заедно с информация за потребителите, редактирали страницата преди изтриването й. Конкретното съдържание на изтритите версии е достъпно само за администратори.",
+       "undeleterevdel": "Възстановяването няма да бъде изпълнено, ако би довело до частично изтриване на актуалната версия. В такъв случай актуалната версия не трябва да бъде избирана или пък състоянието ѝ трябва да бъде променено на нормална (нескрита) версия. Версиите на файлове, които нямате право да преглеждате, няма да бъдат възстановени.",
+       "undeletehistorynoadmin": "Тази страница е била изтрита. В резюмето отдолу е посочена причината за това, заедно с информация за потребителите, редактирали страницата преди изтриването ѝ. Конкретното съдържание на изтритите версии е достъпно само за администратори.",
        "undelete-revision": "Изтрита версия на $1 (към $4, в $5) от $3:",
        "undeleterevision-missing": "Неправилна или липсваща версия. Може да сте последвали грешна препратка или указаната версия да е била възстановена или премахната от архива",
        "undelete-nodiff": "Не е открита предишна редакция.",
        "sp-contributions-uploads": "качвания",
        "sp-contributions-logs": "дневници",
        "sp-contributions-talk": "беседа",
-       "sp-contributions-userrights": "управление на потребителските права",
+       "sp-contributions-userrights": "управление на {{GENDER:$1|потребителските}} права",
        "sp-contributions-blocked-notice": "Потребителят понастоящем е блокиран.\nЗа справка по-долу е показан последния запис за него от дневника на блокиранията:",
        "sp-contributions-blocked-notice-anon": "Този IP адрес понастоящем е блокиран.\nЗа повече информация можете да прегледате последният запис в Дневника на блокиранията:",
        "sp-contributions-search": "Търсене на приноси",
        "unblocked-id": "Блок № $1 беше премахнат",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] е отблокиран.",
        "blocklist": "Блокирани потребители",
+       "autoblocklist": "Автоматични блокирания",
+       "autoblocklist-submit": "Търсене",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Локално автоматично блокиране|Локални автоматични блокирания}}",
+       "autoblocklist-empty": "Списъкът на автоматичните блокирания е празен.",
        "ipblocklist": "Блокирани потребители",
        "ipblocklist-legend": "Търсене на блокиран потребител",
        "blocklist-userblocks": "Скриване на блокирани потребителски сметки",
        "blocklog-showsuppresslog": "Потребителят е бил блокиран и прикриван в миналото.\nЗа справка по-долу е дадено извлечение от дневника на прикриванията:",
        "blocklogentry": "блокира [[$1]] със срок на изтичане $2 $3",
        "reblock-logentry": "промени параметрите на блокирането на [[$1]] със срок на изтичане $2 $3",
-       "blocklogtext": "Тази страница съдържа дневник на блокиранията и отблокиранията.\nАвтоматично блокираните IP-адреси не са показани.\nВижте [[Special:BlockList|списъка на блокираните IP-адреси]] за текущото състояние на блокиранията.",
+       "blocklogtext": "Тази страница съдържа дневник на блокиранията и отблокиранията, извършени от потребителя.\nАвтоматично блокираните IP-адреси не са показани.\nВижте [[Special:BlockList|списъка на блокираните потребители]] за активните към момента блокирания.",
        "unblocklogentry": "отблокира $1",
        "block-log-flags-anononly": "само анонимни потребители",
        "block-log-flags-nocreate": "създаването на сметки е изключено",
        "movepagetext": "Използването на формуляра по-долу ще преименува страница, като се премести цялата ѝ редакционна история история на новото име. Старото заглавие ще се превърне в пренасочваща страница.\nМоже да се избере възможност пренасочванията към оригиналното заглавие да бъдат обновени автоматично. В случай, че тази възможност не е избрана, препоръчително е да се провери за [[Special:DoubleRedirects|двойни]] или [[Special:BrokenRedirects|невалидни пренасочвания]].\nВие сами би трябвало да се убедите в това дали препратките продължават да сочат там, където се предполага.\n\nОбърнете внимание, че страницата <strong>няма</strong> да бъде преместена, ако вече съществува страница с новото име, освен ако е празна или пренасочване и няма редакционна история.\n\n<strong>Забележка:</strong>\nТова може да е голяма и неочаквана промяна за известна страница. Уверете се, че разбирате последствията, преди да продължите.",
        "movepagetext-noredirectfixer": "С помощта на формуляра по-долу се преименува страница, като цялата ѝ редакционна история се премества под новото име.\nСтарото име ще остане като пренасочваща страница към новото заглавие.\nЖелателно е преди преместването да се извърши проверка за [[Special:DoubleRedirects|двойни]] или [[Special:BrokenRedirects|невалидни пренасочвания]].\nДобре е да се направи проверка дали препратките продължават да сочат там, където се предполага.\n\nВажно е да се знае, че страницата <strong>няма</strong> да бъде преместена, ако вече съществува страница с новото име, освен ако не е празна или пренасочваща страница и няма налична редакционна история.\nТова означава, че ако една страница бъде преименувана по погрешка, тя може да се премести обратно със старото си заглавие, но не може да се замести съществуваща страница.\n\n<strong>Забележка:</strong>\nТова може да е драстична или неочаквана промяна за някоя популярна страница;\nнеобходимо е да се уверите, че разбирате последствията от това преди да предприемете действието.",
        "movepagetalktext": "Ако поставите отметка, свързаната дискусионна страница ще бъде преместена автоматично към новото заглавие, освен ако под това име не съществува друга дискусионна страница със съдържание.\n\nВ този случай, ако желаете, ще е необходимо да преместите или да слеете страницата ръчно.",
-       "moveuserpage-warning": "'''Внимание:''' Предприели сте опит да преместите потребителска страница. Забележете, че от преместването на страницата '''няма''' да последва преименуване на потребителя.",
+       "moveuserpage-warning": "<strong>Внимание:</strong> Предприели сте опит да преместите потребителска страница. Забележете, че от преместването на страницата <em>няма</em> да последва преименуване на потребителя.",
        "movecategorypage-warning": "<strong>Внимание:</strong> На път сте да преместите категорийна страница. Моля, обърнете внимание, че ще бъде преместена само страницата на категорията. <em>Никоя</em> от страниците в старата категория <em>няма</em> да бъде прекатегоризирана.",
        "movenologintext": "Необходимо е да [[Special:UserLogin|влезете]], за да може да премествате страници.",
        "movenotallowed": "Нямате права за преместване на страници.",
        "move-watch": "Наблюдаване на страницата",
        "movepagebtn": "Преместване",
        "pagemovedsub": "Преместването беше успешно",
-       "movepage-moved": "'''Страницата „$1“ беше преместена под името „$2“.'''",
+       "movepage-moved": "<strong>Страницата „$1“ беше преместена под името „$2“</strong>",
        "movepage-moved-redirect": "Беше създадено пренасочване.",
        "movepage-moved-noredirect": "Създаването на пренасочване беше спряно.",
        "articleexists": "Вече съществува страница с това име или името, което сте избрали, е невалидно. Изберете друго име.",
        "cantmove-titleprotected": "Страницата не може да бъде преместена под новото заглавие, тъй като то е защитено от създаване",
-       "movetalk": "Ð\9fÑ\80емеÑ\81Ñ\82ване Ð¸ Ð½Ð° Ð´Ð¸Ñ\81кÑ\83Ñ\81ионнаÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а, Ð°ÐºÐ¾ Ðµ Ð¿Ñ\80иложимо.",
+       "movetalk": "Ð\9fÑ\80емеÑ\81Ñ\82ване Ð¸ Ð½Ð° Ð±ÐµÑ\81едаÑ\82а, Ð°ÐºÐ¾ Ðµ Ð¿Ñ\80иложимо",
        "move-subpages": "Преместване на всички подстраници (до $1)",
        "move-talk-subpages": "Преместване на всички подстраници на беседата (до $1)",
-       "movepage-page-exists": "СÑ\82Ñ\80аниÑ\86аÑ\82а $1 Ð²ÐµÑ\87е Ñ\81Ñ\8aÑ\89еÑ\81Ñ\82вÑ\83ва Ð¸ Ð½Ñ\8fма Ð´Ð° Ð±Ñ\8aде Ð°Ð²Ñ\82омаÑ\82иÑ\87но Ð¿Ñ\80езапиÑ\81ана.",
+       "movepage-page-exists": "СÑ\82Ñ\80аниÑ\86аÑ\82а $1 Ð²ÐµÑ\87е Ñ\81Ñ\8aÑ\89еÑ\81Ñ\82вÑ\83ва Ð¸ Ð½Ñ\8fма Ð´Ð° Ð±Ñ\8aде Ð°Ð²Ñ\82омаÑ\82иÑ\87но Ð¿Ñ\80епокÑ\80иÑ\82а.",
        "movepage-page-moved": "Страницата $1 беше преместена като $2.",
        "movepage-page-unmoved": "Страницата $1 не може да бъде преместена като $2.",
        "movepage-max-pages": "Преместен беше максималният брой от $1 {{PLURAL:$1|страница|страници}} и повече страници няма да бъдат премествани автоматично.",
        "delete_and_move_reason": "Изтрита, за да се освободи място за преместване от „[[$1]]“",
        "selfmove": "Страницата не може да бъде преместена, тъй като целевото име съвпада с първоначалното ѝ заглавие.",
        "immobile-source-namespace": "Не могат да се местят страници в именно пространство „$1“",
-       "immobile-target-namespace": "Ð\9dе Ðµ Ð²Ñ\8aзможно Ð¿Ñ\80емеÑ\81Ñ\82ванеÑ\82о Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86и Ð² Ð¸Ð¼ÐµÐ½Ð½Ð¾Ñ\82о Ð¿Ñ\80оÑ\81Ñ\82Ñ\80анÑ\81Ñ\82во â\80\9e$1â\80\9c",
+       "immobile-target-namespace": "Ð\9dе Ð¼Ð¾Ð³Ð°Ñ\82 Ð´Ð° Ñ\81е Ð¼ÐµÑ\81Ñ\82Ñ\8fÑ\82 Ñ\81Ñ\82Ñ\80аниÑ\86и Ð² Ð¸Ð¼ÐµÐ½Ð½Ð¾ Ð¿Ñ\80оÑ\81Ñ\82Ñ\80анÑ\81Ñ\82во â\80\9e$1â\80\9c.",
        "immobile-target-namespace-iw": "Страницата не може да бъде преместена под заглавие, оформено като междууики препратка.",
        "immobile-source-page": "Тази страница не може да бъде премествана.",
        "immobile-target-page": "Не може да се извърши преместване върху това целево заглавие.",
-       "imagenocrossnamespace": "Невъзможно е да се преместват картинки извън това именно пространство",
+       "imagenocrossnamespace": "Не може да се преместват картинки извън това именно пространство.",
        "nonfile-cannot-move-to-file": "Не може да се премести във файл нещо, което не е файл.",
-       "imagetypemismatch": "Новото разширение на файла не съвпада с типа му",
-       "imageinvalidfilename": "Целевото име на файл е невалидно",
+       "imagetypemismatch": "Новото разширение на файла не съвпада с типа му.",
+       "imageinvalidfilename": "Целевото име на файл е невалидно.",
        "fix-double-redirects": "Обновяване на всички двойни пренасочвания, които сочат към оригиналното заглавие",
        "move-leave-redirect": "Оставяне на пренасочваща страница от старото към новото заглавие",
-       "protectedpagemovewarning": "'''Внимание:''' Тази страница е защитена и само потребители със статут на администратори могат да я преместят.\nЗа справка по-долу е показан последният запис от дневниците.",
-       "semiprotectedpagemovewarning": "'''Внимание:''' Тази страница е защитена и само регистрирани потребители могат да я преместят.\nЗа справка по-долу е показан последният запис от дневниците.",
+       "protectedpagemovewarning": "<strong>Внимание:</strong> Тази страница е защитена и само потребители със статут на администратори могат да я преместят.\nЗа справка по-долу е показан последният запис от дневниците.",
+       "semiprotectedpagemovewarning": "<strong>Забележка:</strong> Тази страница е защитена и само регистрирани потребители могат да я преместят.\nЗа справка по-долу е показан последният запис от дневниците.",
        "move-over-sharedrepo": "[[:$1]] вече съществува в споделеното хранилище. Преместване на файл с това заглавие ще замени споделения файл.",
-       "file-exists-sharedrepo": "Ð\98збÑ\80аноÑ\82о Ð¸Ð¼Ðµ Ð½Ð° Ñ\84айл Ð²ÐµÑ\87е Ñ\81е Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð° Ð¾Ñ\82 Ñ\84айл Ð² Ñ\81опделеното хранилище.\nНеобходимо е да изберете друго име.",
+       "file-exists-sharedrepo": "Ð\98збÑ\80аноÑ\82о Ð¸Ð¼Ðµ Ð½Ð° Ñ\84айл Ð²ÐµÑ\87е Ñ\81е Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð° Ð¾Ñ\82 Ñ\84айл Ð² Ñ\81поделеното хранилище.\nНеобходимо е да изберете друго име.",
        "export": "Изнасяне на страници",
-       "exporttext": "Тук можете да изнесете като XML текста и историята на една или повече страници. Получените данни можете да вмъкнете в друг сайт, използващ софтуера МедияУики, чрез [[Special:Import|неговата страница за внaсяне]].\n\nЗа да изнесете няколко страници, въвеждайте всяко ново заглавие на '''нов ред'''. След това изберете дали искате само текущата версия (заедно с информация за последната редакция) или всички версии (заедно с текущата) на страницата.\n\nАко желаете само текущата версия, бихте могли да използвате препратка от вида [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] за страницата [[{{MediaWiki:Mainpage}}]].",
+       "exporttext": "Тук можете да изнесете като XML текстът и историята на една или повече страници. Получените данни може да вмъкнете в друг сайт, използващ МедияУики, чрез [[Special:Import|неговата страница за внасяне]].\n\nЗа да изнесете няколко страници, въвеждайте всяко ново заглавие на '''нов ред'''. След това изберете дали искате само текущата версия (заедно с информация за последната редакция) или всички версии (заедно с текущата) на страницата.\n\nАко желаете само текущата версия, бихте могли да използвате препратка от вида [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] за страницата [[{{MediaWiki:Mainpage}}]].",
        "exportall": "Изнасяне на всички страници",
        "exportcuronly": "Включване само на текущата версия, а не на цялата история",
-       "exportnohistory": "----\n'''Важно:''' Изнасянето на пълната история на страниците е забранено, защото много забавя уикито.",
+       "exportnohistory": "----\n<strong>Забележка:</strong>' Изнасянето на пълната история на страниците е забранено, защото много забавя уикито.",
        "exportlistauthors": "Добавяне на пълен списък на редакторите за всяка страница",
        "export-submit": "Изнасяне",
        "export-addcattext": "Добавяне на страници от категория:",
        "export-download": "Съхраняване като файл",
        "export-templates": "Включване на шаблоните",
        "export-pagelinks": "Включване на свързаните страници с дълбочина до:",
-       "export-manual": "Добавяне на страниците ръчно:",
+       "export-manual": "Добавете страници ръчно:",
        "allmessages": "Системни съобщения",
        "allmessagesname": "Име",
        "allmessagesdefault": "Текст по подразбиране",
        "allmessagescurrent": "Текущ текст",
        "allmessagestext": "Тази страница съдържа списък на системните съобщения от именното пространство „МедияУики“.\nПосетете [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki Localisation] и [https://translatewiki.net translatewiki.net], ако желаете да допринесете за общата локализация на софтуера МедияУики.",
-       "allmessagesnotsupportedDB": "Тази страница не може да бъде използвана, тъй като е изключена възможността '''$wgUseDatabaseMessages'''.",
+       "allmessagesnotsupportedDB": "Тази страница не може да бъде използвана, тъй като е изключена възможността <strong>$wgUseDatabaseMessages</strong>",
        "allmessages-filter-legend": "Филтър",
        "allmessages-filter": "Филтриране по ниво на персонализация:",
        "allmessages-filter-unmodified": "Непроменени",
        "allmessages-prefix": "Филтриране по представка:",
        "allmessages-language": "Език:",
        "allmessages-filter-submit": "Отваряне",
-       "allmessages-filter-translate": "Ð\9fÑ\80евеждане",
+       "allmessages-filter-translate": "Ð\9fÑ\80евод",
        "thumbnail-more": "Увеличаване",
        "filemissing": "Липсващ файл",
        "thumbnail_error": "Грешка при създаване на миникартинка: $1",
        "import-revision-count": "$1 {{PLURAL:$1|версия|версии}}",
        "importnopages": "Няма страници за внасяне.",
        "imported-log-entries": "{{PLURAL:$1|Внесен е $1 запис|Внесени са $1 записа}} в дневника.",
-       "importfailed": "Внасянето беше неуспешно: $1",
+       "importfailed": "Внасянето беше неуспешно: nowiki>$1</nowiki>",
        "importunknownsource": "Непознат тип файл",
        "importcantopen": "Не е възможно да се отвори файла за внасяне",
        "importbadinterwiki": "Невалидна уики препратка",
        "import-upload": "Качване на XML данни",
        "import-token-mismatch": "Загуба на данните за текущата сесия.\n\nМоже би сте излезли от системата. <strong>Моля, уверете се, че сте влезли в профила си и опитайте отново</strong>.\nАко все още не работи, опитайте да [[Special:UserLogout|излезете]] и да влезете отново, също така проверете дали браузърът ви позволява бисквитки от този сайт.",
        "import-invalid-interwiki": "Не може да бъде извършено внасяне от посоченото уики.",
-       "import-error-edit": "СÑ\82Ñ\80аниÑ\86аÑ\82а â\80\9e$1â\80\9c Ð½Ðµ Ð±ÐµÑ\88е Ð¸Ð¼Ð¿Ð¾Ñ\80Ñ\82иÑ\80ана, тъй като нямате права да я редактирате.",
-       "import-error-create": "СÑ\82Ñ\80аниÑ\86аÑ\82а â\80\9e$1â\80\9c Ð½Ðµ Ð±ÐµÑ\88е Ð¸Ð¼Ð¿Ð¾Ñ\80Ñ\82иÑ\80ана, тъй като нямате права да я създадете.",
-       "import-error-interwiki": "СÑ\82Ñ\80аниÑ\86аÑ\82а â\80\9e$1â\80\9c Ð½Ðµ Ð±ÐµÑ\88е Ð¸Ð¼Ð¿Ð¾Ñ\80Ñ\82иÑ\80ана, тъй като името ѝ е запазено за външно свързване (междууики).",
+       "import-error-edit": "СÑ\82Ñ\80аниÑ\86аÑ\82а â\80\9e$1â\80\9c Ð½Ðµ Ð±ÐµÑ\88е Ð²Ð½ÐµÑ\81ена, тъй като нямате права да я редактирате.",
+       "import-error-create": "СÑ\82Ñ\80аниÑ\86аÑ\82а â\80\9e$1â\80\9c Ð½Ðµ Ð±ÐµÑ\88е Ð²Ð½ÐµÑ\81ена, тъй като нямате права да я създадете.",
+       "import-error-interwiki": "СÑ\82Ñ\80аниÑ\86аÑ\82а â\80\9e$1â\80\9c Ð½Ðµ Ð±ÐµÑ\88е Ð²Ð½ÐµÑ\81ена, тъй като името ѝ е запазено за външно свързване (междууики).",
        "import-error-special": "Страницата „$1“ не беше внесена, тъй като принадлежи към специално именно пространство, което не позволява страници.",
        "import-error-invalid": "Страницата „$1“ не беше внесена, тъй като името към което трябваше да бъде внесена е невалидно на това уики.",
        "import-rootpage-invalid": "Посочената основна страница е с невалидно заглавие.",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|версия беше внесена|версии бяха внесени}}",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|една версия беше внесена|$1 версии бяха внесени}} от $2",
        "javascripttest": "Тестване на JavaScript",
-       "javascripttest-pagetext-unknownaction": "Неизвестно действие \"$1\".",
+       "javascripttest-pagetext-unknownaction": "Неизвестно действие „$1“.",
        "javascripttest-qunit-intro": "Вижте [$1 тестовата документация] на mediawiki.org.",
        "tooltip-pt-userpage": "Вашата потребителска страница",
        "tooltip-pt-anonuserpage": "Потребителската страница за адреса, от който редактирате",
        "tooltip-pt-watchlist": "Списък на страници, чиито промени сте избрали да наблюдавате",
        "tooltip-pt-mycontris": "Списък на {{GENDER:|вашите}} приноси",
        "tooltip-pt-anoncontribs": "Списък на промените, направени от този IP адрес",
-       "tooltip-pt-login": "Ð\9dаÑ\81Ñ\8aÑ\80Ñ\87аваме Ð\92и Ð´Ð° Ð²Ð»ÐµÐ·ÐµÑ\82е, Ð²Ñ\8aпÑ\80еки че не е задължително.",
-       "tooltip-pt-logout": "Излизане от {{SITENAME}}",
+       "tooltip-pt-login": "Ð\9fÑ\80епоÑ\80Ñ\8aÑ\87ваме Ð\92и Ð´Ð° Ð²Ð»ÐµÐ·ÐµÑ\82е, Ð²Ñ\8aпÑ\80еки, че не е задължително.",
+       "tooltip-pt-logout": "Излизане",
        "tooltip-pt-createaccount": "Насърчаваме Ви да си създадете сметка и да влезете, въпреки че не е задължително.",
-       "tooltip-ca-talk": "Ð\91еÑ\81еда Ð¾Ñ\82ноÑ\81но страницата",
+       "tooltip-ca-talk": "Ð\91еÑ\81еда Ð·Ð° страницата",
        "tooltip-ca-edit": "Редактиране на страницата",
        "tooltip-ca-addsection": "Започване на нов раздел",
-       "tooltip-ca-viewsource": "Страницата е защитена. Можете да разгледате изходния й код.",
+       "tooltip-ca-viewsource": "Страницата е защитена. Можете да разгледате изходният ѝ код.",
        "tooltip-ca-history": "Предишни версии на страницата",
        "tooltip-ca-protect": "Защитаване на страницата",
        "tooltip-ca-unprotect": "Промяна на защитата за тази страница",
        "tooltip-t-recentchangeslinked": "Последните промени на страници, сочени от тази страница",
        "tooltip-feed-rss": "RSS feed за страницата",
        "tooltip-feed-atom": "Atom feed за страницата",
-       "tooltip-t-contributions": "Ð\9fоказване на приносите на {{GENDER:$1|потребителя}}",
+       "tooltip-t-contributions": "СпиÑ\81Ñ\8aк на приносите на {{GENDER:$1|потребителя}}",
        "tooltip-t-emailuser": "Изпращане на писмо до {{GENDER:$1|потребителя}}",
        "tooltip-t-info": "Повече за тази страница",
        "tooltip-t-upload": "Качи файлове",
        "tooltip-minoredit": "Отбелязване на промяната като малка",
        "tooltip-save": "Съхраняване на промените",
        "tooltip-publish": "Публикуване на промените",
-       "tooltip-preview": "Предварителен преглед, използвайте го преди да съхраните!",
+       "tooltip-preview": "Предварителен преглед. Използвайте го преди да съхраните.",
        "tooltip-diff": "Показване на направените от вас промени по текста",
        "tooltip-compareselectedversions": "Показване на разликите между двете избрани версии на страницата",
        "tooltip-watch": "Добавяне на страницата към списъка ви за наблюдение",
        "anonymous": "{{PLURAL:$1|Анонимен потребител|Анонимни потребители}}на {{SITENAME}}",
        "siteuser": "потребител на {{SITENAME}} $1",
        "anonuser": "Анонимен потребител на {{SITENAME}} $1",
-       "lastmodifiedatby": "Ð\9fоÑ\81леднаÑ\82а Ð¿Ñ\80омÑ\8fна Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а Ðµ Ð¸Ð·Ð²Ñ\8aÑ\80Ñ\88ена Ð¾Ñ\82 $3 Ð½Ð° $2, $1.",
+       "lastmodifiedatby": "Ð\9fоÑ\81леднаÑ\82а Ð¿Ñ\80омÑ\8fна Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а Ðµ Ð¸Ð·Ð²Ñ\8aÑ\80Ñ\88ена Ð¾Ñ\82 $3 Ð² $2 Ñ\87. Ð½Ð° $1 Ð³.",
        "othercontribs": "Основаващо се върху работа на $1.",
        "others": "други",
        "siteusers": "{{PLURAL:$2|потребителят|потребителите}} на {{SITENAME}} $1",
        "creditspage": "Библиография и източници",
        "nocredits": "Няма въведени източници или библиография.",
        "spamprotectiontitle": "Филтър за защита от спам",
-       "spamprotectiontext": "СÑ\82Ñ\80аниÑ\86аÑ\82а, ÐºÐ¾Ñ\8fÑ\82о Ð¸Ñ\81каÑ\85Ñ\82е Ð´Ð° Ñ\81Ñ\8aÑ\85Ñ\80аниÑ\82е, Ð±ÐµÑ\88е Ð±Ð»Ð¾ÐºÐ¸Ñ\80ана Ð¾Ñ\82 Ñ\84илÑ\82Ñ\8aÑ\80а Ð¿Ñ\80оÑ\82ив Ñ\81пам. Ð¢Ð¾Ð²Ð° Ð¾Ð±Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¾ Ðµ Ð¿Ñ\80иÑ\87инено от препратка към външен сайт.",
+       "spamprotectiontext": "СÑ\82Ñ\80аниÑ\86аÑ\82а, ÐºÐ¾Ñ\8fÑ\82о Ð¸Ñ\81каÑ\85Ñ\82е Ð´Ð° Ñ\81Ñ\8aÑ\85Ñ\80аниÑ\82е, Ð±ÐµÑ\88е Ð±Ð»Ð¾ÐºÐ¸Ñ\80ана Ð¾Ñ\82 Ñ\84илÑ\82Ñ\8aÑ\80а Ð·Ð° Ñ\81пам. Ð¢Ð¾Ð²Ð° Ð¾Ð±Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¾ Ðµ Ð¿Ñ\80едизвикано от препратка към външен сайт.",
        "spamprotectionmatch": "Следният текст предизвика включването на филтъра: $1",
        "spambot_username": "Спамочистач",
        "spam_reverting": "Връщане на последната версия, несъдържаща препратки към $1",
        "spam_blanking": "Всички версии, съдържащи препратки към $1, изчистване",
        "spam_deleting": "Всички версии съдържат препратки към $1, изтриване",
-       "simpleantispam-label": "Ð\9fÑ\80овеÑ\80ка Ð·Ð° Ñ\81пам.\n<strong>Ð\9dÐ\95</strong> попълвайте това поле!",
+       "simpleantispam-label": "Ð\9fÑ\80овеÑ\80ка Ð·Ð° Ñ\81пам.\n<strong>Ð\9dе</strong> попълвайте това поле!",
        "pageinfo-title": "Информация за \"$1\"",
        "pageinfo-not-current": "За съжаление тази информация не може да бъде предоставена за стари версии.",
        "pageinfo-header-basic": "Основна информация",
        "pageinfo-header-properties": "Характеристики на страницата",
        "pageinfo-display-title": "Показвано заглавие",
        "pageinfo-default-sort": "Ключ за сортиране по подразбиране",
-       "pageinfo-length": "Ð\93олемина на страницата (в байтове)",
+       "pageinfo-length": "РазмеÑ\80 на страницата (в байтове)",
        "pageinfo-article-id": "Номер на страницата",
        "pageinfo-language": "Език на съдържанието на страницата",
        "pageinfo-language-change": "промяна",
        "markedaspatrolled": "Проверена редакция",
        "markedaspatrolledtext": "Избраната редакция на [[:$1]] беше отбелязана като патрулирана.",
        "rcpatroldisabled": "Патрулът е деактивиран",
-       "rcpatroldisabledtext": "Патрулът на последните промени е деактивиран",
+       "rcpatroldisabledtext": "Патрулирането на последните промени е деактивирано.",
        "markedaspatrollederror": "Не е възможно да се отбележи като проверена",
        "markedaspatrollederrortext": "Необходимо е да се посочи редакция, която да бъде отбелязана като проверена.",
        "markedaspatrollederror-noautopatrol": "Не е разрешено да маркирате своите редакции като проверени.",
-       "markedaspatrollednotify": "Тази Ð¿Ñ\80омÑ\8fна на $1 беше отбелязана като патрулирана.",
+       "markedaspatrollednotify": "РедакÑ\86иÑ\8fÑ\82а на $1 беше отбелязана като патрулирана.",
        "markedaspatrollederrornotify": "Неуспешно отбелязване на редакция като патрулирана.",
        "patrol-log-page": "Дневник на патрула",
        "patrol-log-header": "Тази страница съдържа дневник на проверените версии.",
-       "log-show-hide-patrol": "$1 Ð½Ð° Ð\94невника на патрула",
+       "log-show-hide-patrol": "$1 Ð½Ð° Ð´невника на патрула",
        "log-show-hide-tag": "$1 на дневника на отбелязванията",
        "confirm-markpatrolled-button": "Добре",
        "deletedrevision": "Изтрита стара версия $1",
        "filedeleteerror-long": "Възникнаха грешки при изтриването на файла:\n\n$1",
        "filedelete-missing": "Файлът „$1“ не съществува и затова не може да бъде изтрит.",
        "filedelete-old-unregistered": "Посочената версия на файла „$1“ не беше открита в базата от данни.",
-       "filedelete-current-unregistered": "Указаният файл „$1“ не е в базата данни.",
+       "filedelete-current-unregistered": "УказаниÑ\8fÑ\82 Ñ\84айл â\80\9e$1â\80\9c Ð½Ðµ Ðµ Ð² Ð±Ð°Ð·Ð°Ñ\82а Ð¾Ñ\82 Ð´Ð°Ð½Ð½Ð¸.",
        "filedelete-archive-read-only": "Сървърът няма права за писане в архивната директория „$1“.",
        "previousdiff": "← По-стара редакция",
        "nextdiff": "По-нова редакция →",
-       "mediawarning": "'''Внимание''': Възможно е файлът да съдържа злонамерен програмен код. Неговото изпълнение може да доведе до повреди в системата ви.",
-       "imagemaxsize": "Ð\9eгÑ\80аниÑ\87ение Ð½Ð° Ñ\80азмеÑ\80иÑ\82е Ð½Ð° ÐºÐ°Ñ\80Ñ\82инкиÑ\82е:<br />''(Ñ\81амо Ð·Ð° Ð¾Ð¿Ð¸Ñ\81аÑ\82елниÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86и)''",
-       "thumbsize": "Размери на миникартинките:",
+       "mediawarning": "<strong>Внимание:</strong> Възможно е файлът да съдържа злонамерен програмен код. Неговото изпълнение може да доведе до повреди в системата Ви.",
+       "imagemaxsize": "Ð\9eгÑ\80аниÑ\87ение Ð½Ð° Ñ\80азмеÑ\80а Ð½Ð° ÐºÐ°Ñ\80Ñ\82инкиÑ\82е:<br /><em>(Ñ\81амо Ð·Ð° Ð¾Ð¿Ð¸Ñ\81аÑ\82елниÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86и)</em>",
+       "thumbsize": "Размер на миникартинките:",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|страница|страници}}",
        "file-info": "големина на файла: $1, MIME-тип: $2",
        "file-info-size": "$1 × $2 пиксела, големина на файла: $3, MIME-тип: $4",
        "show-big-image-preview-differ": "Размер на този $3 предварителен преглед на изходния $2 файл: $1.",
        "show-big-image-other": "{{PLURAL:$2|Друга разделителна способност|Други разделителни способности}}: $1.",
        "show-big-image-size": "$1 × $2 пиксела",
-       "file-info-gif-looped": "непÑ\80екÑ\8aÑ\81наÑ\82о Ð¿Ð¾Ð²Ñ\82аÑ\80Ñ\8fне",
+       "file-info-gif-looped": "заÑ\86иклен",
        "file-info-gif-frames": "$1 {{PLURAL:$1|кадър|кадъра}}",
        "file-info-png-looped": "зациклен",
        "file-info-png-repeat": "изпълнено $1 {{PLURAL:$1|път|пъти}}",
        "file-info-png-frames": "$1 {{PLURAL:$1|кадър|кадъра}}",
-       "file-no-thumb-animation": "'''Забележка: По технически причини миниатюрите на този файл няма да бъдат анимирани.'''",
-       "file-no-thumb-animation-gif": "'''Забележка: По технически причини миниатюрите на GIF файловете с висока резолюция като този няма да бъдат анимирани.'''",
+       "file-no-thumb-animation": "<strong>Забележка: По технически причини миниатюрите на този файл няма да бъдат анимирани.</strong>",
+       "file-no-thumb-animation-gif": "<strong>Забележка: По технически причини миниатюрите на GIF файловете с висока резолюция като този няма да бъдат анимирани.</strong>",
        "newimages": "Галерия на новите файлове",
-       "imagelisttext": "Списък от {{PLURAL:$1|един файл|'''$1''' файла, сортирани $2}}.",
+       "imagelisttext": "Списък от <strong>$1</strong> {{PLURAL:$1|файл|файла, сортирани $2}}.",
        "newimages-summary": "Тази специална страница показва последно качените файлове.",
-       "newimages-legend": "Ð\98ме Ð½Ð° Ñ\84айл",
+       "newimages-legend": "ФилÑ\82Ñ\80иÑ\80ане",
        "newimages-label": "Име на файл (или част от него):",
        "newimages-user": "IP-адрес или потребителско име",
        "newimages-showbots": "Показване на качвания от ботове",
-       "newimages-hidepatrolled": "СкÑ\80ий проверените качвания",
+       "newimages-hidepatrolled": "СкÑ\80иване Ð½Ð° проверените качвания",
        "noimages": "Няма нищо.",
        "ilsubmit": "Търсене",
        "bydate": "по дата",
-       "sp-newimages-showfrom": "Ð\9fоказване Ð½Ð° Ð½Ð¾Ð²Ð¸Ñ\82е Ñ\84айлове, ÐºÐ°Ñ\82о Ñ\81е Ð·Ð°Ð¿Ð¾Ñ\87ва от $2, $1",
+       "sp-newimages-showfrom": "Ð\9fоказване Ð½Ð° Ð½Ð¾Ð²Ð¸Ñ\82е Ñ\84айлове, ÐºÐ°Ñ\82о Ñ\81е Ð·Ð°Ð¿Ð¾Ñ\87не от $2, $1",
        "seconds": "{{PLURAL:$1|$1 секунда|$1 секунди}}",
        "minutes": "{{PLURAL:$1|$1 минута|$1 минути}}",
        "hours": "{{PLURAL:$1|$1 час|$1 часа}}",
        "saturday-at": "Събота в $1",
        "sunday-at": "Неделя в $1",
        "yesterday-at": "Вчера в $1",
-       "bad_image_list": "Спазва се следният формат:\n\nОтчитат се само записите в списъчен вид (редове, започващи със *). Първата препратка в реда трябва да сочи към неприемлив файл. Всички последващи препратки на същия ред се считат за изключения, т.е. страници, в които този файл може да се визуализира.",
+       "bad_image_list": "Спазва се следният формат:\n\nОтчитат се само записите в списъчен вид (редове, започващи със *).\nПървата препратка в реда трябва да сочи към неприемлив файл.\nВсички последващи препратки на същия ред се считат за изключения, т.е. страници, в които този файл може да се визуализира.",
        "metadata": "Метаданни",
        "metadata-help": "Файлът съдържа допълнителни данни, обикновено добавяни от цифровите апарати или скенери. Ако файлът е редактиран след създаването си, то някои параметри може да не съответстват на текущото изображение.",
        "metadata-expand": "Показване на допълнителните данни",
        "exif-compression": "Вид компресия",
        "exif-photometricinterpretation": "Състав на пиксела",
        "exif-orientation": "Ориентация",
-       "exif-samplesperpixel": "РедиÑ\86а Ð¾Ñ\82 ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ\82и",
+       "exif-samplesperpixel": "Ð\91Ñ\80ой Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ\82иÑ\82е",
        "exif-planarconfiguration": "Принцип на организация на данните",
        "exif-ycbcrsubsampling": "Коефициент в интервала от Y до C",
        "exif-ycbcrpositioning": "Y и C позициониране",
        "exif-artist": "Автор",
        "exif-copyright": "Притежател на авторското право",
        "exif-exifversion": "Exif версия",
-       "exif-flashpixversion": "Поддържана версия Flashpix",
+       "exif-flashpixversion": "Поддържана версия на Flashpix",
        "exif-colorspace": "Цветово пространство",
        "exif-componentsconfiguration": "Значение на всеки компонент",
-       "exif-compressedbitsperpixel": "Режим Ð½Ð° ÐºÐ¾Ð¼Ð¿Ñ\80еÑ\81иÑ\8f Ð½Ð° Ð¾Ð±Ñ\80аза",
+       "exif-compressedbitsperpixel": "Режим Ð½Ð° ÐºÐ¾Ð¼Ð¿Ñ\80еÑ\81иÑ\8f Ð½Ð° Ð¸Ð·Ð¾Ð±Ñ\80ажениеÑ\82о",
        "exif-pixelxdimension": "Ширина на изображението",
        "exif-pixelydimension": "Височина на изображението",
-       "exif-usercomment": "Ð\94опÑ\8aлниÑ\82елни коментари",
+       "exif-usercomment": "Ð\9fоÑ\82Ñ\80ебиÑ\82елÑ\81ки коментари",
        "exif-relatedsoundfile": "Свързан звуков файл",
        "exif-datetimeoriginal": "Дата и час на създаване",
-       "exif-datetimedigitized": "Ð\94аÑ\82а Ð¸ Ñ\87аÑ\81 Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ\81а",
+       "exif-datetimedigitized": "Ð\94аÑ\82а Ð¸ Ñ\87аÑ\81 Ð½Ð° Ð´Ð¸Ð³Ð¸Ñ\82ализаÑ\86иÑ\8f",
        "exif-subsectime": "DateTime части от секундата",
        "exif-subsectimeoriginal": "DateTimeOriginal части от секундата",
        "exif-subsectimedigitized": "DateTimeDigitized части от секундата",
        "exif-keywords": "Ключови думи",
        "exif-worldregioncreated": "Регион на света, където е направена снимката",
        "exif-countrycreated": "Държава, в която е направена снимката",
-       "exif-countrycodecreated": "Ð\9aод Ð½Ð° Ð´Ñ\8aÑ\80жаваÑ\82а, ÐºÑ\8aдето е направена снимката",
-       "exif-provinceorstatecreated": "Ð\9eблаÑ\81Ñ\82 Ð¸Ð»Ð¸ Ñ\89аÑ\82, ÐºÑ\8aдето е направена снимката",
+       "exif-countrycodecreated": "Ð\9aод Ð½Ð° Ð´Ñ\8aÑ\80жаваÑ\82а, Ð² ÐºÐ¾Ñ\8fто е направена снимката",
+       "exif-provinceorstatecreated": "Ð\9eблаÑ\81Ñ\82 Ð¸Ð»Ð¸ Ñ\89аÑ\82, Ð² ÐºÐ¾Ð¹то е направена снимката",
        "exif-citycreated": "Град, в който е направена снимката",
        "exif-worldregiondest": "Показан регион на света",
        "exif-countrydest": "Показана държава",
        "exif-urgency-low": "Ниска ($1)",
        "exif-urgency-high": "Висока ($1)",
        "exif-urgency-other": "Зададен от потребителя приоритет ($1)",
-       "namespacesall": "Ð\92сички",
+       "namespacesall": "всички",
        "monthsall": "всички",
        "confirmemail": "Потвърждаване на адрес за електронна поща",
        "confirmemail_noemail": "Не сте посочили валиден адрес за електронна поща в [[Special:Preferences|настройки си]].",
        "scarytranscludedisabled": "[Включването между уикита е деактивирано]",
        "scarytranscludefailed": "[Зареждането на шаблона за $1 не сполучи]",
        "scarytranscludetoolong": "[Адресът е твърде дълъг]",
-       "deletedwhileediting": "'''Внимание''': Страницата е била изтрита, след като сте започнали да я редактирате!",
+       "deletedwhileediting": "<strong>Внимание:</strong> Страницата е била изтрита, след като сте започнали да я редактирате!",
        "confirmrecreate": "Потребител [[User:$1|$1]] ([[User talk:$1|беседа]]) е {{GENDER:$1|изтрил}} страницата, след като сте започнали да я редактирате, като е посочил следното обяснение:\n: <em>$2</em>\nПотвърдете, че наистина желаете да създадете страницата отново.",
        "confirmrecreate-noreason": "Потребител [[User:$1|$1]] ([[User talk:$1|беседа]]) {{GENDER:$1|изтри}} тази страница след като сте започнали да я редактирате. Необходимо е потвърждение, че наистина желаете да създадете страницата отново.",
        "recreate": "Ново създаване",
+       "confirm-purge-title": "Изчистване на страницата",
        "confirm_purge_button": "Добре",
        "confirm-purge-top": "Изчистване на складираното копие на страницата?",
-       "confirm-purge-bottom": "Изчистването на страница опреснява кеша и показва последната й версия.",
+       "confirm-purge-bottom": "Изчистването на страница опреснява кеша и показва последната ѝ версия.",
        "confirm-watch-button": "Потвърждаване",
        "confirm-watch-top": "Добавяне на страницата в списъка ви за наблюдение?",
        "confirm-unwatch-button": "Потвърждаване",
        "watchlisttools-edit": "Преглед и редактиране на списъка за наблюдение",
        "watchlisttools-raw": "Редактиране на необработения списък за наблюдение",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|беседа]])",
-       "duplicate-defaultsort": "Внимание: Ключът за сортиране по подразбиране „$2“ отменя по-ранния ключ „$1“.",
+       "duplicate-defaultsort": "<strong>Внимание:</strong> Ключът за сортиране по подразбиране „$2“ отменя по-ранния ключ „$1“.",
        "version": "Версия",
        "version-extensions": "Инсталирани разширения",
        "version-skins": "Инсталирани облици",
        "version-poweredby-credits": "Това уики работи по софтуера на <strong>[https://www.mediawiki.org/ MediaWiki]</strong>, copyright © 2001-$1 $2.",
        "version-poweredby-others": "други",
        "version-poweredby-translators": "преводачи в translatewiki.net",
-       "version-credits-summary": "Бихме искали да изкажем признателност на следните хора за техните приноси към [[Special:Version|MediaWiki]].",
+       "version-credits-summary": "Бихме искали да изкажем признателност на следните хора за техните приноси към [[Special:Version|МедияУики]].",
        "version-license-info": "МедияУики е свободен софтуер, можете да го разпространявате и/или променяте съгласно условията на GNU General Public License, както е публикуван от Free Software Foundation, версия 2 на лиценза или (по ваше усмотрение) която и да е следваща версия.\n\nМедияУики се разпространява с надеждата, че ще бъде полезен, но БЕЗ НИКАКВИ ГАРАНЦИИ, без дори косвена гаранция за ПРОДАВАЕМОСТ или ПРИГОДНОСТ ЗА КОНКРЕТНА УПОТРЕБА. Вижте GNU General Public License за повече подробности.\n\nТрябва да сте получили [{{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-product": "Продукт",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|промени}} потребителската група на $3",
        "logentry-rights-autopromote": "$1 е автоматично {{GENDER:$2|повишен|повишена}} от $4 до $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|качи}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|качи}} нова версия на $3",
        "logentry-upload-revert": "$1 {{GENDER:$2|качи}} $3",
        "log-name-managetags": "Дневник на управлението на етикети",
        "log-description-managetags": "На тази страница са изброени задачи, свързани с управлението на [[Special:Tags|етикети]]. Дневникът съдържа само действия, извършвани ръчно от администратор. Етикети могат да бъдат създавани или изтривани от уики софтуера без това да бъде отразено в този дневник.",
+       "logentry-managetags-create": "$1 {{GENDER:$2|създаде}} етикета \"$4\"",
        "log-name-tag": "Дневник на етикетите",
        "log-description-tag": "Тази страница показва, кога потребителите са добавили или премахнали [[Special:Tags|етикети]] от отделни версии или записи. Списъкът не включва подобни действия, когато те се появяват, като част от процеса на редактиране, изтриване или подобни действия.",
        "rightsnone": "(никакви)",
        "mw-widgets-titleinput-description-new-page": "страницата все още не съществува",
        "mw-widgets-titleinput-description-redirect": "пренасочване към $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Добавяне на категория...",
+       "date-range-from": "От дата:",
+       "date-range-to": "До дата:",
        "randomrootpage": "Случайна основна страница",
        "log-action-filter-block": "Вид на блокирането:",
        "log-action-filter-delete": "Вид на изтриването:",
        "authmanager-realname-help": "Истинско име на потребителя",
        "authmanager-provider-temporarypassword": "Временна парола",
        "authprovider-resetpass-skip-label": "Пропусни",
+       "authform-notoken": "Липсва маркер",
        "specialpage-securitylevel-not-allowed-title": "Не е позволено",
        "cannotauth-not-allowed-title": "Достъпът е отказан",
        "cannotauth-not-allowed": "Не ви е позволено да използвате тази страница",
index af8c1e1..8c3980f 100644 (file)
        "externaldberror": "بئ مئلوماتین بانکی تا یک اوتوماتیکین خطا ئی رخ داته و یا ایکه شما وتئ خارجی ئین حسابئ شما اپڈیٹ کورتینی ئی اجازه ئا نداریت.",
        "login": "داخل بوتین",
        "nav-login-createaccount": "داخل بوتین  / کار زوروکین حسابي جوڑ کورتین",
-       "userlogin": "داخل بوتین  / کار زوروکین حسابي جوڑ کورتین",
-       "userloginnocreate": "داخل بوتین",
        "logout": "در بوتین",
        "userlogout": "در بوتین",
        "notloggedin": "لاگین نه بوته‌ئیت",
        "userlogin-noaccount": "شما کار زوروکین حسابئ نداریت؟",
        "userlogin-joinproject": "بی  {{SITENAME}} تا نام‌نویسی کنیت!",
-       "nologin": "شما کار زوروکین حسابئ نداریت ؟ $1.",
-       "nologinlink": "یک نوکین کار زوروکین حسابئ جوڑ کنیت",
        "createaccount": "نوکین کار زوروکین حسابئ جوڑ کورتین",
-       "gotaccount": "شما کار زوروکین حسابئ داریت ؟ $1.",
-       "gotaccountlink": "داخل بوتین",
-       "userlogin-resetlink": "وتئ داخل بوتینئ مئلوماتان شه هوشا بورته ئیت؟",
        "userlogin-resetpassword-link": "شمی پاسورد شه شمی دهوشا شُوته؟",
        "userlogin-helplink2": "کومک گو داخل بوتینا",
        "userlogin-loggedin": "شما انون بی ئنوان {{GENDER:$1|$1}} داخل بوته ئیت .\nشه جهلگین فورما په داخل بوتینا بی ئنوان دیگرین کار زوروکا استفاده بکنیت .",
        "createacct-another-email-ph": "ایمیل ادرسی داخل کورتین",
        "createaccountmail": "استفاده شه تصادفین پاسوردا و آیی دیم داتین بی مشخصین ایمیل ادرسیا",
        "createacct-realname": "واقئین نام (اختیاری)",
-       "createaccountreason": "دلیل:",
        "createacct-reason": "دلیل",
        "createacct-reason-ph": "پچی شما لوٹیت که دیگرین کار زوروکین حساب جوڑ کنیت؟",
        "createacct-submit": "وتي کار زوروکین حسابا جوڑ کنیت",
        "preview": "دیم دیست",
        "showpreview": "دیم دیست",
        "showdiff": "تغیراتانئ نشان داتین",
-       "blankarticle": "<strong>هشدار:</strong> شما انون یک خالین تاکدیمی جوڑ کورتینی حالا وَیت .\nاگر «{{int:savearticle}}» ئا پدا  کلیک کنیت، یک تاکدیمی بدون شه محتوائا جوڑ ئه بیئت.",
+       "blankarticle": "<strong>هشدار:</strong> شما انون یک خالین تاکدیمی جوڑ کورتینی حالا وَیت .\nاگر «$1» ئا پدا  کلیک کنیت، یک تاکدیمی بدون شه محتوائا جوڑ ئه بیئت.",
        "anoneditwarning": "<strong>هشدار:</strong> شما داخل نه بوته ئیت. شمی آی‌پی نشانگ ئا موچی ئه تواننت بگیندنت اگر شما هر تغیری بیاریت . اگر <strong>[$1 داخل بئیت]</strong> یا <strong>[$2 یک کار زوروکین حساب جوڑ بکنیت]</strong>، شمی ایڈیٹ\t بی شمی کار زوروکین ناما شینک ئه بیئنت و گون گو دیگرین مزایان .",
        "anonpreviewwarning": "<em>شما لوگین نه بوته ئیت. ذخیره کورتین باعث ئه بیئت که شمی آی پی ادرس بی ای تاکدیمی تاریخچه ئی تا ثبت بیئت.</em>",
        "missingcommenttext": "مهربانی بکنیت جهلگا توضیح دهیت.",
        "editingsection": "به $1 ئی دستکاری کورتینێ حالا (چونڑ)",
        "editingcomment": "بئ $1 ئی ایڈیٹ کورتینئ حالا (نوکین بخش)",
        "editconflict": "هجومین ایڈیٹ: $1",
-       "explainconflict": "شه وختی که شما ای دیمێ دستکاری ئا شرو کورتێت یک دیگه نپری آیرا ٹگل دات.\nبُرزگین متنین جاگه شامل ئه بیت شه اي دیمێ رقم، به انونین حالتێ تا.\nشمێ ٹگل به متنێ جهلگا نشان داته بوته انت.\nشما باید وتي ٹگل ئانه گۆ انونین متنا لۆڑ کنیت.\nگو \"{{int:savearticle}}\" کيلی ئی پرنچیتین ئا <strong>تانا</strong> بُرزگین متني ئین متنێ جاگه ذخیره ئه بیت.",
+       "explainconflict": "شه وختی که شما ای دیمێ دستکاری ئا شرو کورتێت یک دیگه نپری آیرا ٹگل دات.\nبُرزگین متنین جاگه شامل ئه بیت شه اي دیمێ رقم، به انونین حالتێ تا.\nشمێ ٹگل به متنێ جهلگا نشان داته بوته انت.\nشما باید وتي ٹگل ئانه گۆ انونین متنا لۆڑ کنیت.\nگو \"$1\" کيلی ئی پرنچیتین ئا <strong>تانا</strong> بُرزگین متني ئین متنێ جاگه ذخیره ئه بیت.",
        "yourtext": "شمی متن",
        "storedversion": "ذخیره بوته ئین نخسه",
        "editingold": "'''توجه: شما به ای تاکدیمێ کهنگین نخسه ئی جۆڑ کورتينێ حالا هستیت.'''\nاگه ایشیرا ذخیره‌بکنیت ، هر تغییری که پدا شه ای نخسه ئا بوته انت شه بێن ئه رونت.",
        "right-editsemiprotected": "ایڈیٹ کورتین قُلپ بوته ئین تاکدیمانی بئ ئنوانی \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "یک تاکدیمی محتوایی مدل یی ایڈیٹ کورتین",
        "right-editinterface": "ای\tڈیٹ کورتین کار زوروکانئ رابطه",
-       "right-editusercssjs": "ایڈیٹ کورتین دیگه کار زوروکانئ  CSS و JS ئی تاکدیمانئ",
        "right-editusercss": "ایڈیٹ کورتین دیگه کار زوروکانئ  CSS ئی تاکدیمانئ",
        "right-edituserjs": "ایڈیٹ کورتین دیگه کار زوروکانئ  JS ئی تاکدیمانئ",
        "right-editmyusercss": "وتئ  سی‌اس‌اس کار زوروکئ فایلانا ایڈیٹ بکینت",
        "rcshowhidecategorization": "$1 تاکدیمئ تهربندی",
        "rcshowhidecategorization-show": "نشان داتین",
        "rcshowhidecategorization-hide": "چیهر داتین",
-       "rclinks": "آ آخیرئین $1 تغیرانئ نشان داتین که به $2 اخیرئین روچانئ تا پیش بوته انت<br />$3",
+       "rclinks": "آ آخیرئین $1 تغیرانئ نشان داتین که به $2 اخیرئین روچانئ تا پیش بوته انت",
        "diff": "فرق",
        "hist": "تاریخچه",
        "hide": "چیهر داتین",
        "undeleteviewlink": "دیستین",
        "undeleteinvert": "انتخابئ سرچپي کورتین",
        "undeletecomment": "دلیل:",
-       "undeletedrevisions": "$1 ئی نخسه احیا {{PLURAL:$1|بوت}}",
-       "undeletedrevisions-files": "$1 نخسه و $2 فایل پداجۆڑ {{PLURAL:$1|بوت|بوتنت}}.",
-       "undeletedfiles": "$1 ئی فایل پدا جۆڑ {{PLURAL:$1|بوت|بوتنت}}.",
        "cannotundelete": "پدا جۆڑ کورتین ناکام ات:\n$1",
        "undeletedpage": "'''$1 پدا جۆڑ بوت'''\n\nپه پاک بوته ئین و پدا جۆڑ بوته ئین سیاهه ئی خاتیرا بئ [[Special:Log/delete|پاک بوته ئین ئانی سیاهه]] ئی تا برۆیت.",
        "undelete-header": "په آ دیما که بئ ای آخیرا پاک بوته انت بئ   [[Special:Log/delete|پاک بوته ئین ئانی سیاهه]] ئا بگیندیت.",
        "confirm-unwatch-top": "ای دیم شه شمئ دیدارلیست ئا پاک بیئت؟",
        "semicolon-separator": "؛&#32;",
        "quotation-marks": "\"$1\"",
-       "imgmultipageprev": "&rarr; دیمتیرین تاکدیم",
-       "imgmultipagenext": "بئدین تاکدیم &larr;",
+       "imgmultipageprev": " دیمتیرین تاکدیم",
+       "imgmultipagenext": "بئدین تاکدیم ",
        "imgmultigo": "برا!",
        "imgmultigoto": "شوتین بی $1 تاکدیمی تا",
        "img-lang-default": "(پیش‌فرض ئین زبان)",
        "logentry-managetags-create": "$1 تگ «$4» ئا {{GENDER:$2|ج\tۆڑ کورت}}",
        "log-name-tag": "خالیجای ٹاپه",
        "rightsnone": "(هیچ)",
-       "revdelete-summary": "ایڈیتی خاصه",
        "feedback-back": "بیئرگشت",
        "feedback-bugnew": "دیستونئ . نوکین مشکل ئی راپور دیئ",
        "feedback-cancel": "کنسیل",
index 1990c25..092f159 100644 (file)
        "redirectedfrom": "($1 से अनुप्रेषित)",
        "redirectpagesub": "अनुप्रेषण पन्ना",
        "redirectto": "अनुप्रेषित:",
-       "lastmodifiedat": "$1 के $2 बजे ए पन्ना पर अंतिम बेर बदलाव भइल।",
+       "lastmodifiedat": "एह पन्ना पर आखिरी बेर संपादन $1 के $2 बजे भइल रहल।",
        "viewcount": "ई पन्ना {{PLURAL:$1|एक|$1}} बेर देखल गइल बा।",
        "protectedpage": "सुरक्षित पन्ना",
        "jumpto": "इहाँ जाईं:",
        "mainpage": "मुख्य पन्ना",
        "mainpage-description": "मुख्य पन्ना",
        "policy-url": "Project:नीति",
-       "portal": "सदसà¥\8dय-समाà¤\9c à¤®à¥\81à¤\96à¥\8dयपन्ना",
+       "portal": "समाà¤\9c पन्ना",
        "portal-url": "Project:सदस्य-समाज मुख्यपन्ना",
        "privacy": "गोपनीयता नीति",
        "privacypage": "Project:गोपनीयता नीति",
        "logouttext": "'''रउआ अब खाता से बाहर बानी'''\n\nध्यान रहे कि जब तक रउआ आपन ब्राउजर के कैश साफ ना करब, तब तक कुछ पन्नन में हो सकत बा रउआ के खाता में लगातार प्रवेशित दिखावत रही।",
        "cannotlogoutnow-title": "एह समय लॉगआउट ना हो सकी",
        "cannotlogoutnow-text": "$1 के इस्तेमाल करत समय लॉगआउट नइखे संभव।",
-       "welcomeuser": "राà¤\89र à¤¸à¥\8dवाà¤\97त à¤¬à¤¾, $1!",
+       "welcomeuser": "स्वागत बा, $1!",
        "welcomecreation-msg": "राउर खाता बना दिहल गईल बा।\nआपन [[Special:Preferences|{{SITENAME}} वरीयतां]] के बदले के ना भूलब।",
        "yourname": "प्रयोगकर्तानाँव:",
        "userlogin-yourname": "प्रयोगकर्तानाँव",
        "botpasswords-label-delete": "मिटाईं",
        "botpasswords-label-resetpassword": "पासवर्ड रिसेट करीं",
        "botpasswords-label-grants": "लागू हो सके वाला अनुमोदन:",
+       "botpasswords-help-grants": "एह ग्रांट सभ से जवना काम ले पहुँच हो सके ला ऊ अधिकार राउर सदस्य खाता लगे पहिलहीं से बा। इहाँ कौनों ग्रांट के चालू करे से आपके खाता के कौनों अइसन अधिकार ना मिली जे पहिलहीं से न होखे। ढेर जानकारी खातिर [[Special:ListGrants|ग्रांट लिस्ट]] देखीं।",
        "botpasswords-label-grants-column": "मंजूर भइल",
        "botpasswords-bad-appid": "बॉट नाँव \"$1\" वैध नइखे।",
        "botpasswords-insert-failed": "बॉट नाँव $1 जोड़ल फेल हो गइल। का ई पहिलहीं जोड़ल जा चुकल बा?",
        "botpasswords-updated-body": "प्रयोगकर्ता \"$2\" के बॉट नाँव \"$1\" खातिर बॉट पासवर्ड अपडेट भइल।",
        "botpasswords-deleted-title": "बॉट पासवर्ड मिटावल गइल",
        "botpasswords-deleted-body": "प्रयोगकर्ता \"$2\" के बॉट नाँव \"$1\" खातिर बॉट पासवर्ड मिटावल गइल।",
+       "botpasswords-newpassword": "<strong>$1</strong> के संघे खाता में प्रवेश करे खातिर नया गुप्तशब्द <strong>$2</strong> बाटे। <em>भाबिस्य में हवाला देवे खातिर एकरा के रिकार्ड में दर्ज क लेईं।</em> <br> (पुरान बॉट सभ जिनहन में खाता में प्रवेश खातिर उहे लॉग इन नाँव इस्तमाल होला जे सदस्यनाँव होखे, आप सदस्यनाँव के रूप में <strong>$3</strong> आ गुप्तशब्द के रूप में <strong>$4</strong> के इस्तमाल क सकत बानी।)",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider उपलब्ध नइखे।",
+       "botpasswords-restriction-failed": "बॉट गुप्तशब्द रोकथाम एह लॉगिन के नइखे होखे देत।",
+       "botpasswords-invalid-name": "दिहल गइल सदस्यनाँव में बॉट गुप्तशब्द सेपरेटर ($1) नइखे।",
+       "botpasswords-not-exist": "प्रयोगकर्ता \"$1\" के लगे \"$2\" नाँव के बॉटगुप्तशब्द नइखे।",
        "resetpass_forbidden": "गुप्तशब्द बदलल नइखे जा सकत",
        "resetpass_forbidden-reason": "गुप्तशब्द बदलल नइखे जा सकत:$1",
        "resetpass-no-info": "इ पन्ना के सिधे प्रयोग करे खातिर रउआँ के पहिले खाता में प्रवेश करे के पड़ी।",
        "preview": "झलक",
        "showpreview": "झलक देखीं",
        "showdiff": "बदलाव देखीं",
-       "blankarticle": "<strong>चेतावनी:</strong> आप एगो खाली पन्ना बनावे जा रहल बानी।\nयदि आप \"{{int:savearticle}}\" के फेर से दबायेब त पन्ना बिना कउनो सामग्री के बन जाई।",
+       "blankarticle": "<strong>चेतावनी:</strong> आप एगो खाली पन्ना बनावे जा रहल बानी।\nयदि आप \"$1\" के फेर से दबायेब त पन्ना बिना कउनो सामग्री के बन जाई।",
        "anoneditwarning": "<strong>चेतावनी:</strong> रउआँ आपन खाता में प्रवेश नइखीं कइले। अगर रउआँ कौनों बदलाव करब त राउर आईपी पता सभके लउकी। अगर रउआ <strong>[$1 खाता में प्रवेश करब]</strong> या <strong>[$2 नया खाता बनाइब]</strong> त, अउरी सुबिधा सब की संघे राउर संपादन के श्रेय भी राउर प्रयोगकर्तानाँव के मिली!",
        "anonpreviewwarning": "''रउआँ खाता में प्रवेश नइखीं भइल। सहेजब तब ए पन्ना के संपादन इतिहास में राउर आईपी पता दर्ज हो जाई।\"",
-       "missingsummary": "'''याद दियावल जात बा:'''रउआँ एगो संपादन सारांश नइखीं दिहले। अगर फिर \"{{int:savearticle}}\" पर क्लिक करब, त राउर संपादन एकरे बिना सहेजा जाई।",
-       "selfredirect": "<strong>चेतावनी:</strong> आप ई पन्ना के खुदे एही पर अनुप्रेषण क रहल बानी।\nया त आप अनुप्रेषण खातिर गलत लक्ष्य देत बानी, या आप गलत पन्ना के संपादन करत बानी।\nएक बेर अउरी \"{{int:savearticle}}\" क्लिक करब त, ओइसहूँ ई अनुप्रेषण बना दिहल जाई।",
+       "missingsummary": "'''याद दियावल जात बा:'''रउआँ एगो संपादन सारांश नइखीं दिहले। अगर फिर \"$1\" पर क्लिक करब, त राउर संपादन एकरे बिना सहेजा जाई।",
+       "selfredirect": "<strong>चेतावनी:</strong> आप ई पन्ना के खुदे एही पर अनुप्रेषण क रहल बानी।\nया त आप अनुप्रेषण खातिर गलत लक्ष्य देत बानी, या आप गलत पन्ना के संपादन करत बानी।\nएक बेर अउरी \"$1\" क्लिक करब त, ओइसहूँ ई अनुप्रेषण बना दिहल जाई।",
        "missingcommenttext": "नीचे एगो टिप्पणी भरीं।",
-       "missingcommentheader": "'''याद दियावल जात बा:''' रउआँ एह कमेंट खातिर कौनों बिसय नइखीं दिहले। अगर आप \"{{int:savearticle}}\" पर क्लिक करब तब राउर संपादन एकरे बिना सहेजा जाई।",
+       "missingcommentheader": "'''याद दियावल जात बा:''' रउआँ एह कमेंट खातिर कौनों बिसय नइखीं दिहले। अगर आप \"$1\" पर क्लिक करब तब राउर संपादन एकरे बिना सहेजा जाई।",
        "summary-preview": "संपादन सारांश क झलक:",
        "subject-preview": "बिसय के झलक:",
        "previewerrortext": "राउर बदलाव के झलक देखावे के कोसिस के समय कुछ गड़बड़ी हो गइल।",
        "editingsection": "$1 संपादन (खंड)",
        "editingcomment": "$1 संपादन (नया खंड)",
        "editconflict": "संपादन अंतर्बिरोध: $1",
-       "explainconflict": "आपके द्वारा संपादन सुरू कइला के बाद से केहू अउरी ए पन्ना में बदलाव क चुकल बाटे।\nऊपर के पाठ हिस्सा में लेख के पाठ के वर्तमान स्थिति देखावल जात बा।\nराउर संपादन नीचे के पाठ हिस्सा में देखावल गइल बा।\nरउआँ के आपन बदलाव एह पहिले से मौजूद पाठ में मिलावे के परी।\n<strong>खाली</strong> ऊपर की पाठ हिस्सा में लउकत पाठ सहेजल जाई अगर आप \"{{int:savearticle}}\" बटन दबाइब।",
+       "explainconflict": "आपके द्वारा संपादन सुरू कइला के बाद से केहू अउरी ए पन्ना में बदलाव क चुकल बाटे।\nऊपर के पाठ हिस्सा में लेख के पाठ के वर्तमान स्थिति देखावल जात बा।\nराउर संपादन नीचे के पाठ हिस्सा में देखावल गइल बा।\nरउआँ के आपन बदलाव एह पहिले से मौजूद पाठ में मिलावे के परी।\n<strong>खाली</strong> ऊपर की पाठ हिस्सा में लउकत पाठ सहेजल जाई अगर आप \"$1\" बटन दबाइब।",
        "yourtext": "राउर पाठ",
        "storedversion": "सुरक्षित कइल गइल संशोधन",
        "nonunicodebrowser": "<strong>चेतावनी: राउर ब्राउसर युनिकोड समर्थ नइखे।</strong>\nपन्ना सभ के सुरक्षित संपादित करे के एगो तरीका सुझावल जात बा: गैर-ASCII अक्षर सभ संपादन बॉक्स में हेक्साडेसिमल कोड की रूप में देखावल जाई।",
        "readonlywarning": "<strong>चेतावनी: एह समय मरम्मत खातिर डेटाबेस लॉक कइल गइल बा, एही कारन आप तुरंते एही समय आपन संपादन ना सहेज पाइब।</strong>\nरउआँ अपनी पाठ (टेक्स्ट) के कौनों पाठ फाइल (टेक्स्ट फाइल) में बाद खातिर सहेज के रख लीं।\n\nजे सिस्टम प्रबंधक एकरा के लॉक कइले बा ऊ नीचे लिखल कारण दिहले बा: $1",
        "protectedpagewarning": "<strong>चेतावनी: ई पन्ना सुरक्षित कइल गइल बा जेवना से कि एकरा के खाली प्रबंधक (Admin) विशेषाधिकार वाला सदस्य लोग संपादित क सकत बा।</strong>\nप्रसंग बूझे खातिर सबसे नया लॉग एंट्री नीचे दिहल जात बा:",
        "semiprotectedpagewarning": "<strong>नोट:</strong> ई पन्ना सुरक्षित कइल गइल बा कि एकरा के खाली रजिस्टर्ड सदस्य लोग संपादित क सकत बा।\nसभसे नया लॉग एंट्री नीचे प्रसंग बतावे खातिर दिहल जात बा:",
-       "cascadeprotectedwarning": "<strong>à¤\9aà¥\87तावनà¥\80:</strong> à¤\88 à¤ªà¤¨à¥\8dना à¤¸à¥\81रà¤\95à¥\8dषित à¤\95 à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल à¤¬à¤¾ à¤\95ि à¤\8fà¤\95रा à¤\95à¥\87 à¤\96ालà¥\80 à¤ªà¥\8dरबà¤\82धà¤\95 (Admin) à¤µà¤¿à¤¶à¥\87षाधिà¤\95ार à¤µà¤¾à¤²à¤¾ à¤¸à¤¦à¤¸à¥\8dय à¤²à¥\8bà¤\97 à¤¸à¤\82पादित à¤\95 à¤¸à¤\95à¥\87ला à¤\95ाहà¥\87à¤\82 à¤¸à¥\87 à¤\95à¥\80 à¤\88 à¤¨à¥\80à¤\9aà¥\87 à¤¦à¤¿à¤¹à¤² à¤¬à¤¿à¤¸à¥\8dतारित(à¤\95à¥\88सà¥\8dà¤\95à¥\87डिà¤\82à¤\97)-सà¥\81रà¤\95à¥\8dषा à¤µà¤¾à¤²à¤¾ {{PLURAL:$1|पनà¥\8dना|पनà¥\8dनवन}} à¤®à¥\87à¤\82 à¤¸à¤®à¤¾à¤\87ल बाटे:",
+       "cascadeprotectedwarning": "<strong>à¤\9aà¥\87तावनà¥\80:</strong> à¤\88 à¤ªà¤¨à¥\8dना à¤¸à¥\81रà¤\95à¥\8dषित à¤¬à¤¾ à¤\9cवना à¤¸à¥\87 à¤\95ि à¤\96ालà¥\80 [[Special:ListGroupRights|बिसà¥\87स à¤\85धिà¤\95ार]] à¤µà¤¾à¤²à¤¾ à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤²à¥\8bà¤\97 à¤¸à¤\82पादन à¤\95 à¤¸à¤\95à¥\87ला à¤\95ाहà¥\87à¤\82 à¤¸à¥\87 à¤\95à¥\80 à¤\88 à¤¨à¥\80à¤\9aà¥\87 à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल à¤\9bतनार-सà¥\81रà¤\95à¥\8dषा à¤µà¤¾à¤²à¤¾ {{PLURAL:$1|पनà¥\8dना|पनà¥\8dना à¤¸à¤­}} à¤®à¥\87à¤\82 à¤\9fà¥\8dराà¤\82सà¤\95à¥\8dलà¥\82ड à¤¹à¥\8b à¤°à¤¹ल बाटे:",
        "titleprotectedwarning": "<strong>चेतावनी: ई पन्ना सुरक्षित कइल गइल बा की एकरा के बनावे खातिर [[Special:ListGroupRights|विशेष अधिकार]] होखल जरूरी बा।</strong>\nसंदर्भ खातिर नीचे सबसे नया लॉग एंट्री दिहल जात बा:",
        "templatesused": "ए पन्ना पर इस्तेमाल {{PLURAL:$1|टेम्पलेट|टेम्पलेट कुल}}:",
        "templatesusedpreview": "इ पुर्वावलोकन में प्रयुक्त {{PLURAL:$1|टेम्पलेट|टेम्पलेट कुल}}:",
        "contentmodelediterror": "रउआँ एह अवतरण के संपादन नइखीं कर सकत काहें से कि एकर सामग्री मॉडल <code>$1</code> बा जवन पन्ना के के वर्तमान मॉडल <code>$2</code> से अलग बाटे।",
        "recreate-moveddeleted-warn": "<strong>चेतावनी: रउआँ एगो अइसन पन्ना दुबारा बनावे जा रहल बानी जेवन पहिले हटावल जा चुकल बा</strong>\n\nआपके ई बिचार क लेवे के चाहीं की आगे संपादन कइल ठीक बा की ना।\n\nसुविधा खातिर, ए पन्ना के हटवले आ स्थानांतरण के लॉग नीचे दिहल जात बा:",
        "moveddeleted-notice": "ई पन्ना हटा दिहल गइल बा।\nसंदर्भ खातिर हटावे आ स्थानांतरण के लॉग नीचे दिहल जात बाटे।",
+       "moveddeleted-notice-recent": "माफ करीं, ई पन्ना हाले में हटा दिहल गइल बा (पछिला 24 घंटा के भीतर)।\nहटवले आ स्थानांतरण के लॉग हवाला खातिर नीचे दिहल जा रहल बा।",
        "log-fulllog": "पूरा लॉग देखीं",
        "edit-hook-aborted": "संपादन के हुक निरस्त क दिहलस।\nई कौनों कारन ना बतवलस।",
        "edit-gone-missing": "पन्ना अपडेट ना हो पावल।\nबुझात बा कि ई हटा दिहल गइल बा।",
        "content-model-css": "सी॰एस॰एस",
        "content-json-empty-object": "खाली चीज (एम्प्टी ऑब्जेक्ट)",
        "content-json-empty-array": "खाली ऍरे",
+       "deprecated-self-close-category": "अबैध खुद-बंद एचटीएमएल टैग के इस्तमाल करत पन्ना",
        "deprecated-self-close-category-desc": "पन्ना में अवैध सेल्फ-क्लोज्ड ऍचटीऍमऍल टैग बाड़ें, जइसे कि <code>&lt;b/></code> या फिर <code>&lt;span/></code>। जल्दिये इनहन के बेहवार ऍचटीऍमऍल5 स्पेसिफिकेशन के साथ सामंजस्य वाला होखे खातिर बदल जाई, एही से इनहन के विकिपाठ में प्रयोग खाराबीयुक्त बाटे।",
        "duplicate-args-warning": "<strong>चेतावनी:</strong> [[:$1]], [[:$2]] के \"$3\" पैरामीटर खातिर एक से अधिका वैल्यू की संघे काल करत बाटे। दिहल गइल वैल्यू में से खाली सबसे आखिरी वैल्यू के प्रयोग कइल जाई।",
        "duplicate-args-category": "टेम्पलेट कॉल में डुप्लिकेट तर्क इस्तेमाल वाला पन्ना",
        "post-expand-template-argument-warning": "<strong>चेतावनी:</strong> ए पन्ना पर कम से कम एक ठो अइसन टेम्पलेट आर्गुमेंट बा जेवन बहुत बड़ खर्चीला साइज के बा।\nअइसन आर्गुमेंट के लोप कइ दिहल गइल बा।",
        "post-expand-template-argument-category": "पन्ना जिनहन में लोप कइल गइल टेम्पलेट आर्गुमेंट बा",
        "parser-template-loop-warning": "टेम्पलेट लूप पकड़ में आइल बा:[[$1]]",
+       "template-loop-category": "टेम्पलेट लूप वाला पन्ना",
+       "template-loop-category-desc": "पन्ना पर टेम्पलेट लूप बा, मने कि अइसन टेम्पलेट जे अपनहीं के दोहरा-दोहरा के काल क रहल बा।",
        "parser-template-recursion-depth-warning": "टेम्पलेट रिकरसन (recursion) के गहिराइ सीमा पार ($1)",
        "language-converter-depth-warning": "भाषा बदलावक (language converter) के गहिराइ सीमा पार ($1)",
        "node-count-exceeded-category": "पन्ना जहाँ नोड गिनती पार हो गइल बा",
        "page_first": "पहिलका",
        "page_last": "आखिरी",
        "histlegend": "अंतर बीछीं: तुलना देखे खातिर बदलावन के रेडियो बटन चिन्हित करीं आ एंटर या फिर नीचे दिहल बटन दबाईं।<br />\nसंकेत: <strong>({{int:cur}})</strong> = सभसे नया बदलाव के साथ अंतर, <strong>({{int:last}})</strong> = पछिला बदलाव के साथ अंतर, <strong>{{int:minoreditletter}}</strong> = छोट संपादन।",
-       "history-fieldset-title": "à¤\87तिहास à¤¦à¥\87à¤\96ीं",
-       "history-show-deleted": "à¤\96ालà¥\80 à¤®à¥\87à¤\9fावल",
+       "history-fieldset-title": "रिवà¥\80à¤\9cन à¤\96à¥\8bà¤\9cीं",
+       "history-show-deleted": "हà¤\9fावल à¤°à¤¿à¤µà¥\80à¤\9cन à¤­à¤°",
        "histfirst": "सबसे पुरान",
        "histlast": "सबसे नया",
        "historysize": "({{PLURAL:$1|1 बाइट|$1 बाइट}})",
        "revdelete-unsuppress": "दुबारा स्थापित बदलाव पर से प्रतिबन्ध हटाईं",
        "revdelete-log": "कारण:",
        "revdelete-submit": "चुनल गइल {{PLURAL:$1|बदलाव|बदलाव कुल}} पर लागू करीं",
-       "revdelete-success": "बदलाव à¤\95à¥\87 à¤¦à¥\87à¤\96ाà¤\88 à¤ªà¤¡à¤¼à¤²à¥\87 à¤\95à¥\87 à¤¸à¥\87à¤\9fिà¤\82à¤\97 à¤\85पडà¥\87à¤\9f à¤¹à¥\8b à¤\97à¤\87ल",
+       "revdelete-success": "रिवà¥\80à¤\9cन à¤²à¤\89à¤\95ाहà¤\9f à¤\85पडà¥\87à¤\9f à¤­à¤\87ल।",
        "revdelete-failure": "बदलाव के देखाई पड़ले के सेटिंग अपडेट ना हो पावल:$1",
-       "logdelete-success": "लà¥\89à¤\97 à¤\95à¥\87 à¤¦à¥\87à¤\96ाà¤\88 à¤ªà¤¡à¤¼à¤²à¥\87 à¤\95à¥\87 à¤¸à¥\87à¤\9fिà¤\82à¤\97 à¤ªà¥\82रा भइल।",
+       "logdelete-success": "लà¥\89à¤\97 à¤²à¤\89à¤\95ाहà¤\9f à¤¸à¥\87à¤\9f भइल।",
        "logdelete-failure": "लॉग के देखाई पड़ले के सेटिंग पूरा ना भइल:$1",
        "revdel-restore": "दूश्यता बदलीं",
        "pagehist": "पन्ना के इतिहास",
        "revdelete-modify-no-access": "तारीख $2, समय $1, के चीज में बदलाव करे में खराबी बा: ई चीज \"प्रतिबंधित\" चिन्हित कइल गइल बा।\nआप की लगे इहाँ ले पहुँच नइखे।",
        "revdelete-modify-missing": "आइटम ID $1 के बदलाव करे में खराबी: ई डेटाबेस से गायब बा!",
        "revdelete-no-change": "<strong>चेतावनी:</strong> तारीख $2 के $1 बजे के ई आइटम पहिलहीं से ओही देखावे के सेटिंग वाला बाटे जवन माँगल जाता।",
+       "revdelete-concurrent-change": "$1 $2 बजे के आइटम के बदले में खराबी आ रहल बा: बुझाता कि आप के कोसिस करे दौरान एकरा स्थिति के दूसर केहू बदल चुकल बा।\nलॉग चेक करीं।",
        "revdelete-otherreason": "अन्य/अतिरिक्त कारण:",
        "revdelete-reasonotherlist": "अन्य कारण",
        "revdelete-edit-reasonlist": "हटावे के कारण बदलीं",
        "prefs-help-variant": "ए विकि कि सामग्री पन्नवन के देखावे खातिर राउर पसंद वाला भाषारूप।",
        "yournick": "नया दसखत:",
        "yourgender": "रउआँ के का बोलावल जाय?",
-       "gender-unknown": "हम न बताइब",
+       "gender-unknown": "जहाँ भी संभव होखी, राउर जिकिर करत घरी सॉफ्टवेयर लिंग तटस्थ शब्दन के इस्तमाल करी",
+       "gender-male": "ई विकि पन्ना संपादित करे लें",
+       "gender-female": "ई विकि पन्ना संपादित करे लीं",
        "email": "ईमेल",
        "prefs-help-email-required": "ईमेल पता चाहत बाटे।",
        "prefs-info": "बेसिक जानकारी",
        "prefs-tokenwatchlist": "टोकन",
        "prefs-diffs": "अंतर",
        "prefs-help-prefershttps": "राउर ई पसंद के सेटिंग अगिला बेर लॉग इन कइले पर लागू होई।",
-       "userrights": "प्रयोगकर्ता अधिकार मैनेजमेंट",
+       "userrights": "प्रयोगकर्ता अधिकार",
        "userrights-lookup-user": "प्रयोगकर्ता चुनीं",
        "userrights-user-editname": "प्रयोगकर्ता नाँव लिखीं:",
        "editusergroup": "प्रयोगकर्ता मंडली लोड करीं",
        "right-undelete": "हटावल पन्ना वापस ले आईं",
        "right-protect": "सुरक्षा स्तर बदलीं आ कास्केड-सुरक्षित पन्ना के सम्पादन करीं",
        "right-unwatchedpages": "ध्यानसूची में जवन पन्ना नइखे ओकर सूची देखीं",
+       "grant-blockusers": "प्रयोगकर्ता लोग पर रोक लगाईं आ रोक हटाईं",
+       "grant-createaccount": "खाता बनाईं",
+       "grant-createeditmovepage": "पन्ना बनाईं, संपादित करीं आ स्थानांतरण करीं",
+       "grant-editmyoptions": "आपन पसंदीदा सेटिंग संपादित करीं",
+       "grant-editmywatchlist": "आपन धियानसूची संपादित करीं",
+       "grant-editpage": "पहिले से मौजूद पन्ना संपादित करीं",
+       "grant-editprotected": "सुरक्षित पन्ना संपादित करीं",
+       "grant-highvolume": "भारी-मात्रा में संपादन",
+       "grant-oversight": "प्रयोगकर्ता छिपाईं आ रिवीजन दबा देईं",
+       "grant-patrol": "पन्ना पर बदलाव सभ के गश्त करीं",
+       "grant-privateinfo": "निजी जानकारी तक पहुँचीं",
+       "grant-protect": "पन्ना सुरक्षित आ बिनासुरक्षित करीं",
+       "grant-rollback": "पन्ना पर बदलाव सभ के रोलबैक करीं",
        "newuserlogpage": "खाता बनवले के लॉग",
        "newuserlogpagetext": "ई खाता निर्माण के लॉग बा",
        "rightslog": "सदस्य अधिकार लॉग",
        "recentchanges-legend-heading": "<strong>संकेत:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (इहो देखीं [[Special:NewPages|नया पन्नवन के लिस्ट]])",
        "recentchanges-submit": "देखावल जाय",
+       "rcfilters-filter-bots-label": "बॉट",
+       "rcfilters-filter-bots-description": "ऑटोमेटिक औजार से कइल संपादन।",
+       "rcfilters-filter-humans-label": "मनुष्य (बॉट ना)",
+       "rcfilters-filter-humans-description": "मनुष्य संपादकन के कइल संपादन।",
+       "rcfilters-filtergroup-reviewstatus": "समीक्षा स्थिति",
+       "rcfilters-filter-patrolled-label": "जाँचल",
+       "rcfilters-filter-patrolled-description": "जाँचल निशानदेही वाला संपादन।",
+       "rcfilters-filter-unpatrolled-label": "बिनाजाँचल",
+       "rcfilters-filter-unpatrolled-description": "जाँचल निशानदेही के बिना वाला संपादन।",
+       "rcfilters-filtergroup-significance": "महत्व",
+       "rcfilters-filter-minor-label": "छोट संपादन",
+       "rcfilters-filter-minor-description": "लेखक द्वारा छोट चिन्हित कइल संपादन।",
+       "rcfilters-filter-major-label": "गैर-छोट संपादन",
+       "rcfilters-filter-major-description": "छोट ना चिन्हित कइल संपादन।",
+       "rcfilters-filtergroup-watchlist": "धियानसूची में शामिल पन्ना",
+       "rcfilters-filter-watchlist-watched-label": "धियानसूची में",
+       "rcfilters-filter-watchlist-watched-description": "राउर धियानसूची के पन्ना सभ में भइल बदलाव।",
+       "rcfilters-filter-watchlist-watchednew-label": "नया धियानसूची बदलाव",
+       "rcfilters-filter-watchlist-watchednew-description": "धियानसूची में शामिल पन्ना सभ के बदलाव, जिनहन के होखले के बाद से आप नइखीं पहुँचल।",
+       "rcfilters-filter-watchlist-notwatched-label": "धियानसूची में ना शामिल",
+       "rcfilters-filter-watchlist-notwatched-description": "राउर धियानसूची के पन्ना के अलावा बाकी सबकुछ में भइल बदलाव।",
+       "rcfilters-filtergroup-changetype": "बदलाव के प्रकार",
+       "rcfilters-filter-pageedits-label": "पन्ना संपादन",
+       "rcfilters-filter-pageedits-description": "विकि सामग्री, चर्चा, श्रेणी बिबरण... में भइल संपादन",
+       "rcfilters-filter-newpages-label": "पन्ना निर्माण",
+       "rcfilters-filter-newpages-description": "नया पन्ना बनावे वाला संपादन।",
+       "rcfilters-filter-categorization-label": "श्रेणी बदलाव",
+       "rcfilters-filter-categorization-description": "श्रेणिन में जोड़ल भा बिलगावल पन्ना सभ के रेकार्ड।",
+       "rcfilters-filter-logactions-label": "लॉग में दर्ज काम",
+       "rcfilters-filter-logactions-description": "प्रबंधक एक्शन, खाता निर्माण, पन्ना हटावल, अपलोड...",
+       "rcfilters-filtergroup-lastRevision": "अंतिम संसोधन",
        "rcnotefrom": "<strong>$3, $4</strong> से (<strong>$1</strong> तक ले के) {{PLURAL:$5|बदलाव|बदलाव सभ}} नीचे दिहल गइल बा।",
        "rclistfrom": "$2, $3 से शुरु होखे वाला नया बदलाव देखावल जाय",
        "rcshowhideminor": "$1 छोट संपादन",
        "rcshowhidecategorization": "$1 पन्ना श्रेणीकरण",
        "rcshowhidecategorization-show": "देखावल जाय",
        "rcshowhidecategorization-hide": "छिपावल जाय",
-       "rclinks": "पछिला $2 दिन में भइल $1 बदलाव देखावल जाय<br />$3",
+       "rclinks": "पछिला $2 दिन में भइल $1 बदलाव देखावल जाय",
        "diff": "अंतर",
        "hist": "इतिहास",
        "hide": "छिपावल जाय",
        "namespacesall": "सगरी",
        "monthsall": "सगरी",
        "confirmemail": "ईमेल पता कन्फर्म करीं",
+       "autoredircomment": "पन्ना [[$1]] पर अनुप्रेषित कइल गइल",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|बात करीं]])",
        "version-no-ext-name": "[अज्ञात नाम]",
        "fileduplicatesearch": "नकल प्रति फाइल खोजीं",
index 3e79912..8b20569 100644 (file)
        "externaldberror": "Ada kasalahan apakah kacucukan basis data atawa Pian kada bulih mamutakhirakan akun luar.",
        "login": "Babuat",
        "nav-login-createaccount": "Babuat log / ulah akun",
-       "userlogin": "Babuat log / ulah akun",
-       "userloginnocreate": "Babuat log",
        "logout": "Kaluar",
        "userlogout": "Kaluar",
        "notloggedin": "Balum babuat log",
-       "nologin": "Balum baisi akun? '''$1'''.",
-       "nologinlink": "Ulah sabuting akun",
        "createaccount": "Ulah akun",
-       "gotaccount": "Hudah baisi sabuting akun? $1.",
-       "gotaccountlink": "Babuat log",
-       "userlogin-resetlink": "Kada ingat rarincian babuat log Pian?",
        "createaccountmail": "Malalui suril",
-       "createaccountreason": "Alasan:",
        "badretype": "Katasunduk nang Pian buati kada pas.",
        "userexists": "Ngaran pamakai nang dibuati hudah dipuruk urang lain.\nMuhun pilih sabuting ngaran lain.",
        "loginerror": "Kasalahan babuat log",
        "passwordreset-disabled": "Mambulikakan setelan katasunduk dipajahakan hagan wiki ngini.",
        "passwordreset-username": "Ngaran pamakai:",
        "passwordreset-domain": "Dumain:",
-       "passwordreset-capture": "Tiringikah kulihan suril?",
-       "passwordreset-capture-help": "Amun Pian cintang kutak ngini, suril (awan katasunduk pahadangan) akan ditampaiakan ka Pian bahwasa lagi dikirim ka pamakai.",
        "passwordreset-email": "Alamat suril:",
        "passwordreset-emailtitle": "Rarincian akun pada {{SITENAME}}",
        "passwordreset-emailtext-ip": "Ada urang (pinanya Pian, matan alamat IP $1) maminta sabuting pangingat hagan rarincian akun Pian gasan {{SITENAME}} ($4). Pamakai barikut {{PLURAL:$3|akun|akun}}\ntarait awan suril:\n\n$2\n\n{{PLURAL:$3|katasunduk pahadangan ngini|kakatasunduk pahadangan ngini}} akan kadaluarsa dalam {{PLURAL:$5|asa hari|$5 hari}}.\nPian parlu babuat log wan mamilih katasunduk hanyar wayah ni jua. Amun urang lain nang maminta ngini, atawa amun Pian sudah paingatan awan katasunduk Pian, wan Pian kada handak maubahnya, Pian kawa kada mahuwal pasan ngini wan manyambung mamuruk katasunduk lawas Pian.",
        "showdiff": "Tampaiakan paubahan",
        "anoneditwarning": "'''Paringatan:''' Pian baluman babuat log.\nAlamat IP Pian akan dirakam dalam tungkaran babakan halam",
        "anonpreviewwarning": "''Pian baluman babuat log. Manyimpan akan tarakam alamat IP Pian pada sajarah bahari tungkaran ngini.''",
-       "missingsummary": "'''Pangingat:''' Pian kada manyadiakan sabuting kasimpulan babakan.\nAmun Pian klik \"{{int:savearticle}}\" pulang, babakan Pian tasimpan kada bakasimpulan.",
+       "missingsummary": "'''Pangingat:''' Pian kada manyadiakan sabuting kasimpulan babakan.\nAmun Pian klik \"$1\" pulang, babakan Pian tasimpan kada bakasimpulan.",
        "missingcommenttext": "Muhun buati sabuting kumintar di bawah ngini.",
-       "missingcommentheader": "'''Pangingat:''' Pian kada manyadiakan sabuting subjek/judul gasan kumin ngini.\nAmun Pian klik \"{{int:savearticle}}\" pulang, babakan Pian tasimpan kada basubjek/bajudul.",
+       "missingcommentheader": "'''Pangingat:''' Pian kada manyadiakan sabuting subjek/judul gasan kumin ngini.\nAmun Pian klik \"$1\" pulang, babakan Pian tasimpan kada basubjek/bajudul.",
        "summary-preview": "Tilikan kasimpulan:",
        "subject-preview": "Titilikan subyek/judul:",
        "blockedtitle": "Pamakai diblukir",
        "editingsection": "Mambabak $1 (hagian)",
        "editingcomment": "Mambabak $1 (hagian hanyar)",
        "editconflict": "Babakan bacakut: $1",
-       "explainconflict": "Ada urang lain nang sudah maubah tungkaran ini parhatan Pian bamula mambabak ngini.\nNaskah atas baisi naskah tungkaran wayah ini.\nPaubahan Pian ditampaiakan pada naskah di bawah.\nPinanya Pian harus manggabungakan paubahan Pian ka dalam naskah nang ada.\nNaskah nang di atas '''haja''' nang akan tasimpan lamun Pian manikin \"{{int:savearticle}}\".",
+       "explainconflict": "Ada urang lain nang sudah maubah tungkaran ini parhatan Pian bamula mambabak ngini.\nNaskah atas baisi naskah tungkaran wayah ini.\nPaubahan Pian ditampaiakan pada naskah di bawah.\nPinanya Pian harus manggabungakan paubahan Pian ka dalam naskah nang ada.\nNaskah nang di atas '''haja''' nang akan tasimpan lamun Pian manikin \"$1\".",
        "yourtext": "Naskah Pian",
        "storedversion": "Ralatan tasimpan",
        "nonunicodebrowser": "'''Paringatan: Panjalajah web Pian kada manyukung unicode.'''\nSabuah pambulatan gawian di wadah ini mambulihakan Pian aman mambabak tutungkaran: karaktir non-ASCII akan cungul pada kutak babakan sawagai kudi hiksadisimal.",
        "saveprefs": "Simpan",
        "restoreprefs": "Bulikakan samunyaan sesetélan default",
        "prefs-editing": "Pambabakan",
-       "rows": "Baris:",
-       "columns": "Kolom:",
        "searchresultshead": "Gagai",
        "stub-threshold": "Ambang watas gasan pormat <a href=\"#\" class=\"stub\">taautan rintisan</a>:",
        "stub-threshold-disabled": "Kada kawa-akan",
        "userrights-reason": "Alasan:",
        "userrights-no-interwiki": "Pian kada baisi ijin hagan mambabak hak pamuruk di wiki lain.",
        "userrights-nodatabase": "Basis data $1 kadada atawa lainan lukal.",
-       "userrights-nologin": "Pian musti [[Special:UserLogin|lbabuat log]] awan sabuah akun pambakal hagan mambari hak pamuruk.",
-       "userrights-notallowed": "Akun Pian kada baisi ijin hagan manambahi atawa malapas hak pamuruk.",
        "userrights-changeable-col": "Gagalambang nang Pian kawa ubah",
        "userrights-unchangeable-col": "Gagalambang nang Pian kada kawa ubah",
        "group": "Galambang:",
        "right-protect": "Ubah tingkat parlindungan wan babakan tutungkaran nang diindungi",
        "right-editprotected": "Babak tungkaran nang dilindungi (kada parlindungan barenteng)",
        "right-editinterface": "Babak antarmuha pamuruk ini",
-       "right-editusercssjs": "Babak pamuruk lain babarakas CSS wan JavaScript",
        "right-editusercss": "Babak pamruk lain babarakas CSS",
        "right-edituserjs": "Babak pamuruk lain babarakas JavaScript",
        "right-rollback": "Mambulikakan hancap bababakan matan pamuruk tauncit nang mambabak sabuah tungkaran tatantu",
        "right-siteadmin": "Sunduk wan buka sunduk basis data",
        "right-override-export-depth": "Ekspur tutungkaran tamasuk tutungkaran tataut sampai kadalaman 5",
        "right-sendemail": "Mangirim suril ka papamuruk lain",
-       "right-passwordreset": "Tiringi setelan-pulang katasunduk suril",
        "newuserlogpage": "Log pamakai hanyar",
        "newuserlogpagetext": "Ngini adalah sabuah log paulahan pamuruk.",
        "rightslog": "Log paubahan hak masuk",
        "rcshowhideanons": "$1 pamakai kada bangaran",
        "rcshowhidepatr": "$1 babakan ta'awasi",
        "rcshowhidemine": "$1 babakan ulun",
-       "rclinks": "Tampaiakan $1 paubahan pahanyarnya dalam $2 hari tauncit<br />$3",
+       "rclinks": "Tampaiakan $1 paubahan pahanyarnya dalam $2 hari tauncit",
        "diff": "bida",
        "hist": "halam",
        "hide": "Sungkupakan",
        "undeleteviewlink": "tiringi",
        "undeleteinvert": "Bulikakan pilihan",
        "undeletecomment": "Alasan:",
-       "undeletedrevisions": "{{PLURAL:$1|1 ralatan|$1 raralatan}} dibulikakan",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 ralatan|$1 raralatan}} and {{PLURAL:$2|1 barakas|$2 babarakas}} dibulikakan",
-       "undeletedfiles": "$1 {{PLURAL:$1|barakas|babarakas}} dibulikakan",
        "cannotundelete": "Walang mahapus gagal;\nada urang lain nang badahulu mawalangi pahapusan tungkaran ngini.",
        "undeletedpage": "'''$1 sudah dibulikakan'''\nJanaki [[Special:Log/delete|log pahapusan]] gasan sabuting rakaman matan pahapusan wan pambulikakan.",
        "undelete-header": "Janaki [[Special:Log/delete|log pahapusan]] gasan tutungkaran hanyar tahapus.",
        "logentry-newusers-create2": "$1 ma-ulah sabuting akun pamakai $3",
        "logentry-newusers-autocreate": "Akun $1 utumatis diulah",
        "rightsnone": "(kadada)",
-       "revdelete-summary": "Kasimpulan babakan",
        "feedback-adding": "Manambahi kitihanbalik ka tungkaran...",
        "feedback-bugcheck": "Harat! hanyar dipariksa bahwasa ngini lainan salah asa [$1 bug nang dipinandui].",
        "feedback-bugnew": "Ulun mamariksa. Malapurakan sabuah bug hanyar",
        "feedback-thanks": "Tarimakasih! jitihanbalik Pian sudah dipusakan ka si tungkaran \"[$2 $1]\".",
        "searchsuggest-search": "Gagai",
        "searchsuggest-containing": "isian ...",
-       "api-error-missingresult": "Kasalahan intarnal: kada kawa manantuakan napakah panyalinan tuntung.",
-       "api-error-mustbeloggedin": "Pian harus babuat ka log gasan maunggah barakas.",
-       "api-error-mustbeposted": "Ada bug di parangkat lamah naya; kada mamakai mituda HTTP nang bujur.",
-       "api-error-noimageinfo": "Paunggahan tuntung, tagal paladen kada mambarii inpurmasi napa haja masalah barakas.",
-       "api-error-nomodule": "Kasalahan intarnal: kada ada modul unggahan nang ditatapakan.",
-       "api-error-ok-but-empty": "Kasalahan intarnal: kada ada tanggapan matan paladen.",
-       "api-error-overwrite": "Kada dibariakan manindihi barakas nang sudah ada.",
        "api-error-stashfailed": "Kasalahan intarnal: server gagal manyimban barakas samantara.",
-       "api-error-timeout": "Peladen kada marispun di waktu nang diharapakan",
-       "api-error-unclassified": "Tajadi kasalahan nang kada dikatahui.",
-       "api-error-unknown-code": "Kasalahan kada dipinandui: \"$1\".",
-       "api-error-unknown-error": "Kasalahan intarnal: tajadi kasalahan pas mancuba maunggah barakas Pian.",
        "api-error-unknown-warning": "Paringatan kada dipinandui: \"$1\".",
        "api-error-unknownerror": "Kasalahan kada dipinandui: \"$1\".",
-       "api-error-uploaddisabled": "Paunggahan dinunaktipakan di wiki naya.",
-       "api-error-verification-error": "Barakas naya kira-kira rusak atawa baisi ikstinsi nang salah.",
        "special-characters-group-latin": "Latin",
        "special-characters-group-ipa": "IPA",
        "special-characters-group-symbols": "Simbul",
index fc87a2e..e3912c1 100644 (file)
@@ -32,7 +32,9 @@
                        "আজিজ",
                        "Kayser Ahmad",
                        "NahidSultan",
-                       "Elias Ahmmad"
+                       "Elias Ahmmad",
+                       "Catrope",
+                       "Mohammed Galib Hasan"
                ]
        },
        "tog-underline": "সংযোগের নিচে দাগ দেখানো হোক:",
        "anontalk": "আলাপ",
        "navigation": "পরিভ্রমণ",
        "and": "&#32;এবং",
-       "qbfind": "অনুসন্ধান",
-       "qbbrowse": "ব্রাউজ",
-       "qbedit": "সম্পাদনা",
-       "qbpageoptions": "এই পাতা",
-       "qbmyoptions": "আমার পাতাগুলি",
        "faq": "প্রাজিপ্র",
-       "faqpage": "Project:প্রাজিপ্র",
        "actions": "কার্যক্রম",
        "namespaces": "নামস্থান",
        "variants": "বিকল্পসমূহ",
        "tagline": "{{SITENAME}} থেকে",
        "help": "সাহায্য",
        "search": "অনুসন্ধান",
-       "search-ignored-headings": " #<!-- এই লাইনটিকে ঠিক যেমন আছে তেমনটি রেখে দিন --> <pre>\n# যেসব শিরোনাম অনুসন্ধানে অগ্রাহ্য করা হবে।\n# যখনই শিরোনামযুক্ত পাতাটি সূচীভুক্ত হবে, তখনই এখানকার কোন পরিবর্তন বাস্তবায়িত হবে।\n# আপনি একটি নাল/শূন্য সম্পাদনা করে পাতাটিকে বলপূর্বক পুনঃসূচীভুক্ত করতে পারেন।\n# সিনট্যাক্স বা পদক্রম/পদবিন্যাসের নিয়মগুলি নিম্নরূপ:\n#   * অক্ষর থেকে শুরু করে লাইনের শেষ পর্যন্ত সবকিছু হচ্ছে একটি মন্তব্য বা কমেন্ট।\n#   * প্রতিটি অশূন্য লাইন হচ্ছে যে শিরোনামটি অগ্রাহ্য করা হবে, বড় হাতের লেখা এবং অন্যান্য সবকিছু গণনায় ধরে।\nতথ্যসূত্র\nবহিঃসংযোগ\nআরও দেখুন\n#</pre> <!-- এই লাইনটিকে ঠিক যেমন আছে তেমনটি রেখে দিন -->",
+       "search-ignored-headings": " #<!-- এই লাইনটিকে ঠিক যেমন আছে তেমনটি রেখে দিন --> <pre>\n# যেসব শিরোনাম অনুসন্ধানে অগ্রাহ্য করা হবে।\n# যখনই শিরোনামযুক্ত পাতাটি সূচীভুক্ত হবে, তখনই এখানকার কোন পরিবর্তন বাস্তবায়িত হবে।\n# আপনি একটি নাল/শূন্য সম্পাদনা করে পাতাটিকে বলপূর্বক পুনঃসূচীভুক্ত করতে পারেন।\n# সিনট্যাক্স বা পদক্রম/পদবিন্যাসের নিয়মগুলি নিম্নরূপ:\n#   * অক্ষর থেকে শুরু করে লাইনের শেষ পর্যন্ত সবকিছু হচ্ছে একটি মন্তব্য।\n#   * প্রতিটি অশূন্য লাইন হচ্ছে যে শিরোনামটি অগ্রাহ্য করা হবে, বড় হাতের লেখা এবং অন্যান্য সবকিছু গণনায় ধরে।\nতথ্যসূত্র\nবহিঃসংযোগ\nআরও দেখুন\n#</pre> <!-- এই লাইনটিকে ঠিক যেমন আছে তেমনটি রেখে দিন -->",
        "searchbutton": "অনুসন্ধান",
        "go": "চলো",
        "searcharticle": "চলো",
        "edit-local": "স্থানীয় বিবরণ সম্পাদনা করুন",
        "create": "তৈরি করুন",
        "create-local": "স্থানীয় বিবরণ যোগ করুন",
-       "editthispage": "এই পাতাটি সম্পাদনা করুন",
-       "create-this-page": "এই পাতাটি তৈরি করুন",
        "delete": "অপসারণ",
-       "deletethispage": "এই পাতাটি অপসারণ করুন",
-       "undeletethispage": "পাতাটি পুনরুদ্ধার করুন",
        "undelete_short": "{{PLURAL:$1|১টি সম্পাদনা|$1টি সম্পাদনা}} পুনঃস্থাপন করুন",
        "viewdeleted_short": "{{PLURAL:$1|একটি অপসারিত সম্পাদনা|$1টি অপসারিত সম্পাদনা}} দেখুন",
        "protect": "সুরক্ষা",
        "protect_change": "পরিবর্তন করুন",
-       "protectthispage": "এই পাতাটি সুরক্ষিত করুন",
        "unprotect": "সুরক্ষা পরিবর্তন",
-       "unprotectthispage": "এই পাতার সুরক্ষা পরিবর্তন করুন",
        "newpage": "নতুন পাতা",
-       "talkpage": "আলোচনা করুন",
        "talkpagelinktext": "আলোচনা",
        "specialpage": "বিশেষ পাতা",
        "personaltools": "নিজস্ব সরঞ্জামসমূহ",
-       "articlepage": "বিষয়বস্তুর পাতাটি দেখুন",
        "talk": "আলোচনা",
        "views": "দৃষ্টিকোণ",
        "toolbox": "সরঞ্জাম",
        "tool-link-userrights": "{{GENDER:$1|ব্যবহারকারী}} দল পরিবর্তন করুন",
        "tool-link-userrights-readonly": "{{GENDER:$1|ব্যবহারকারী}} দল দেখুন",
        "tool-link-emailuser": "এই {{GENDER:$1|ব্যবহারকারী}}কে ইমেইল পাঠান",
-       "userpage": "ব্যবহারকারীর পাতা দেখুন",
-       "projectpage": "প্রকল্প পাতাটি দেখুন",
        "imagepage": "ফাইল পাতা দেখুন",
        "mediawikipage": "বার্তার পাতা দেখুন",
        "templatepage": "টেমপ্লেট পাতা দেখুন",
        "redirectedfrom": "($1 থেকে পুনর্নির্দেশিত)",
        "redirectpagesub": "পুনর্নির্দেশ পাতা",
        "redirectto": "পুননির্দেশিত হয়েছে:",
-       "lastmodifiedat": "এ পাতায় শেষ পরিবর্তন হয়েছিল $2টার সময়, $1 তারিখে।",
+       "lastmodifiedat": "এই পাতা শেষ সম্পাদিত হয়েছে $2টার সময়, $1 তারিখে।",
        "viewcount": "এই পাতাটি {{PLURAL:$1|একবার|$1 বার}} দেখা হয়েছে।",
        "protectedpage": "সুরক্ষিত পাতা",
        "jumpto": "সরাসরি যাও:",
        "title-invalid-too-long": "অনুরোধকৃত পাতার শিরোনামটি অত্যধিক দীর্ঘ। ইউটিএফ-৮ সাংকেতিকীকরণ অনুযায়ী এটি $1 {{PLURAL:$1|বাইটের}} থেকে দীর্ঘতর হতে পারবে না।",
        "title-invalid-leading-colon": "অনুরোধকৃত পাতার শিরোনামটির শুরুতে একটি অবৈধ কোলন চিহ্ন (:) রয়েছে।",
        "perfcached": "নিচের উপাত্তগুলো ক্যাশ থেকে নেয়া এবং সম্পূর্ণ হালনাগাদকৃত না-ও হতে পারে। সর্বোচ্চ {{PLURAL:$1|একটি ফলাফল|$1 টি ফলাফল}} ক্যাশে থাকতে পারে।",
-       "perfcachedts": "নিচের উপাত্তগুলো ক্যাশ থেকে নেয়া এবং সর্বশেষ $1 তারিখে হালনাগাদ করা হয়েছে। সর্বোচ্চ {{PLURAL:$4|একটি ফলাফল|$4টি ফলাফল}} ক্যাশে থাকতে পারে।",
+       "perfcachedts": "নিà¦\9aà§\87র à¦\89পাতà§\8dতà¦\97à§\81লà§\8b à¦\95à§\8dযাশ à¦¥à§\87à¦\95à§\87 à¦¨à§\87য়া à¦\8fবà¦\82 à¦¸à¦°à§\8dবশà§\87ষ $1 à¦¤à¦¾à¦°à¦¿à¦\96à§\87 à¦¹à¦¾à¦²à¦¨à¦¾à¦\97াদ à¦\95রা à¦¹à¦¯à¦¼à§\87à¦\9bà§\87। à¦\8fতà§\87 à¦¸à¦°à§\8dবà§\8bà¦\9aà§\8dà¦\9a {{PLURAL:$4|à¦\8fà¦\95à¦\9fি à¦«à¦²à¦¾à¦«à¦²|$4à¦\9fি à¦«à¦²à¦¾à¦«à¦²}} à¦\95à§\8dযাশà§\87 à¦¥à¦¾à¦\95তà§\87 à¦ªà¦¾à¦°à§\87।",
        "querypage-no-updates": "এই পাতার জন্য হালনাগাদ নিষ্ক্রিয় করা হয়েছে। এখানে রাখা উপাত্তগুলি এ মুহূর্তে হালনাগাদ করা হবে না।",
        "viewsource": "উৎস দেখুন",
        "viewsource-title": "$1-এর উৎস দেখুন",
        "preview": "প্রাকদর্শন",
        "showpreview": "প্রাকদর্শন",
        "showdiff": "পরিবর্তনসমূহ",
-       "blankarticle": "<strong>সতর্ক বার্তা:</strong> আপনি একটি খালি পাতা তৈরী করতে যাচ্ছেন।\nআপনি যদি পুনরায় \"{{int:savearticle}}\" বোতামটি ক্লিক করেন তাহলে কোন পাঠ্য বিষয়বস্তু ছাড়াই পাতাটি তৈরী হবে।",
+       "blankarticle": "<strong>সতর্ক বার্তা:</strong> আপনি একটি খালি পাতা তৈরী করতে যাচ্ছেন।\nআপনি যদি পুনরায় \"$1\" বোতামটি ক্লিক করেন তাহলে কোন পাঠ্য বিষয়বস্তু ছাড়াই পাতাটি তৈরী হবে।",
        "anoneditwarning": "<strong>সতর্ক বার্তা:</strong> আপনি বর্তমানে আপনার অ্যাকাউন্টে প্রবেশ করেননি। যদি এ অবস্থায় আপনি সম্পাদনা সংরক্ষণ করেন তাহলে এই পাতার সম্পাদনার ইতিহাসে আপনার আইপি ঠিকানা জনসমক্ষে দৃশ্যমান হবে। যদি আপনি  <strong>[$1 অ্যাকাউন্টে প্রবেশ করেন]</strong> বা  <strong>[$2 একটি অ্যাকাউন্ট তৈরি করেন]</strong>, তাহলে আপনি আপনার আইপি ঠিকানা গোপন রাখতে পারবেন ও অন্যান্য বেশ কিছু সুবিধা পাবেন।",
        "anonpreviewwarning": "<em>আপনি অ্যাকাউন্টে প্রবেশ করেননি। সম্পাদনা সংরক্ষণ করলে এই পাতার সম্পাদনার ইতিহাসে আপনার আইপি ঠিকানা সংরক্ষিত হবে।</em>",
-       "missingsummary": "'''খেয়াল করুন''':  আপনি আপনার সম্পাদনার কোনও সারাংশ দেননি। আবার যদি \"{{int:savearticle}}\" বোতামে ক্লিক করেন, তাহলে ঐ সারাংশ বাক্যটি ছাড়াই আপনার সম্পাদনা সংরক্ষিত হবে।",
-       "selfredirect": "<strong>সতর্কতা:</strong> আপনি এই পাতাকে এর নিজের দিকে পুনঃনির্দেশিত করছেন।\nআপনাকে পুনঃনির্দেশিত করার জন্য হয় ভুল লক্ষ্য নির্দিষ্ট করেছেন, অথবা আপনি ভুল পাতা সম্পাদনা করছেন।\nআপনি যদি আবার \"{{int:savearticle}}\" ক্লিক করেন, পুনর্নির্দেশ যেকোনোভাবেই হোক তৈরি করা হবে।",
+       "missingsummary": "'''খেয়াল করুন''':  আপনি আপনার সম্পাদনার কোনও সারাংশ দেননি। আবার যদি \"$1\" বোতামে ক্লিক করেন, তাহলে ঐ সারাংশ বাক্যটি ছাড়াই আপনার সম্পাদনা সংরক্ষিত হবে।",
+       "selfredirect": "<strong>সতর্কতা:</strong> আপনি এই পাতাকে এর নিজের দিকে পুনঃনির্দেশিত করছেন।\nআপনাকে পুনঃনির্দেশিত করার জন্য হয় ভুল লক্ষ্য নির্দিষ্ট করেছেন, অথবা আপনি ভুল পাতা সম্পাদনা করছেন।\nআপনি যদি আবার \"$1\" ক্লিক করেন, পুনর্নির্দেশ যেকোনোভাবেই হোক তৈরি করা হবে।",
        "missingcommenttext": "দয়া করে নিচে মন্তব্য যোগ করুন।",
-       "missingcommentheader": "<strong>খেয়াল করুন:</strong> আপনি এই মন্তব্যের জন্য কোনও বিষয় প্রদান করেননি। আপনি যদি আবার \"{{int:savearticle}}\" বোতামে ক্লিক করেন, আপনার এই সম্পাদনা কোন বিষয় ছাড়াই সংরক্ষিত হবে।",
+       "missingcommentheader": "<strong>খেয়াল করুন:</strong> আপনি এই মন্তব্যের জন্য কোনও বিষয় প্রদান করেননি। আপনি যদি আবার \"$1\" বোতামে ক্লিক করেন, আপনার এই সম্পাদনা কোন বিষয় ছাড়াই সংরক্ষিত হবে।",
        "summary-preview": "সম্পাদনা সারাংশের প্রাকদর্শন:",
        "subject-preview": "বিষয়ের প্রাকদর্শন:",
        "previewerrortext": "আপনার পরিবর্তনগুলি প্রাকদর্শন করার চেষ্টা করার সময় একটি ত্রুটি ঘটেছে।",
        "editingsection": "সম্পাদনা করছেন $1 (অনুচ্ছেদ)",
        "editingcomment": "সম্পাদনা করছেন $1 (নতুন অনুচ্ছেদ)",
        "editconflict": "সম্পাদনা দ্বন্দ্ব: $1",
-       "explainconflict": "আপনি পাতাটি সম্পাদনা শুরু করার পর অন্য কেউ পাতাটিতে পরিবর্তন এনেছে।\nপাঠ্য এলাকার উপরের অংশে বর্তমানে পাঠ যেভাবে আছে তা দেখানো হয়েছে।\nআপনার পরিবর্তনগুলি পাঠ্য এলাকার নিচের অংশে দেখানো হয়েছে।\nআপনাকে আপনার পরিবর্তনগুলি বর্তমানে বিদ্যমান পাঠ্যের সাথে মিলিয়ে দিতে হবে।\nআপনি \"{{int:savearticle}}\" চাপলে <strong>শুধুমাত্র</strong> পাঠ্য এলাকার উপরের অংশটি সংরক্ষিত হবে।",
+       "explainconflict": "আপনি পাতাটি সম্পাদনা শুরু করার পর অন্য কেউ পাতাটিতে পরিবর্তন এনেছে।\nপাঠ্য এলাকার উপরের অংশে বর্তমানে পাঠ যেভাবে আছে তা দেখানো হয়েছে।\nআপনার পরিবর্তনগুলি পাঠ্য এলাকার নিচের অংশে দেখানো হয়েছে।\nআপনাকে আপনার পরিবর্তনগুলি বর্তমানে বিদ্যমান পাঠ্যের সাথে মিলিয়ে দিতে হবে।\nআপনি \"$1\" চাপলে <strong>শুধুমাত্র</strong> পাঠ্য এলাকার উপরের অংশটি সংরক্ষিত হবে।",
        "yourtext": "আপনার লেখা বিষয়বস্তু",
        "storedversion": "সংরক্ষিত সংস্করণ",
        "nonunicodebrowser": "'''সতর্কীকরণ: আপনার ব্রাউজার ইউনিকোড-বন্ধুভাবাপন্ন নয়। আপনি যাতে বিপদ ছাড়াই পাতা সম্পাদনা করতে পারেন, সে জন্য সমাধান আছে: অ-আস্কি ক্যারেক্টারগুলি হেক্সাডেসিমাল কোড হিসেবে দেখানো হবে।'''",
        "nocreate-loggedin": "আপনার নতুন পাতা তৈরি করার অনুমোদন নেই।",
        "sectioneditnotsupported-title": "অনুচ্ছেদ সম্পাদনা সমর্থন করে না",
        "sectioneditnotsupported-text": "এই সম্পাদনা পাতায় অনুচ্ছেদ সম্পাদনা সমর্থন করে না",
-       "permissionserrors": "অনুমতি ত্রুটিসমূহ",
+       "permissionserrors": "অনুমতি ত্রুটি",
        "permissionserrorstext": "নিন্মলিখিত {{PLURAL:$1|কারণটির|কারণগুলির}} জন্য আপনার এটা করার অনুমতি নেই:",
        "permissionserrorstext-withaction": "আপনার $2 অনুমতি নেই, যার {{PLURAL:$1|কারণটি|কারণগুলি}} হল:",
        "contentmodelediterror": "আপনি এই পুনর্বিবেচনা সম্পাদনা করতে পারবেন না কারণ এর বিষয়বস্তু মডেল <code>$1</code>, যা বর্তমান বিষয়বস্তু মডেল <code>$2</code>-এর থেকে ভিন্ন।",
        "logdelete-text": "অপসারিত লগ ইভেন্টসমূহ এখনও লগে প্রদর্শিত হয়, কিন্তু সেই বিষয়বস্তুর অংশগুলি সর্বসাধারণ দেখতে পারেবে না।",
        "revdelete-text-others": "অন্যান্য প্রশাসকেরা তার পরেও এই লুকানো বিষয়বস্তুগুলি দেখতে পারবেন এবং প্রয়োজনে সেগুলো ফিরিয়ে আনতে পারবেন, যদি অন্যান্য কোনো বাধা না থাকে।",
        "revdelete-confirm": "অনুগ্রহ করে নিশ্চিত করুন যে আপনি এটি করতে চাচ্ছিলেন, আপনি এর ফলাফল সম্পর্কে অবগত আছেন, এবং [[{{MediaWiki:Policy-url}}|নীতিমালার]] উপর ভিত্তি করেই এই কাজটি করছেন।",
-       "revdelete-suppress-text": "নিচের বিষয়গুলোর ক্ষেত্রেই '''কেবলমাত্র'''  চাপাচাপি করা যাবে:\n* সম্ভাব্য মানহানিকর তথ্য\n* ভুল ব্যক্তিগত তথ্য\n*: ''বাসার ঠিকানা এবং ফোন নম্বর, সোসাল সিকিউরিটি নম্বর, ইত্যাদি।''",
+       "revdelete-suppress-text": "নিচের বিষয়গুলোর ক্ষেত্রেই <strong>কেবলমাত্র</strong> গোপন করা যাবে:\n* সম্ভাব্য মানহানিকর তথ্য\n* ভুল ব্যক্তিগত তথ্য\n*: <em>বাসার ঠিকানা এবং ফোন নম্বর, সামাজিক নিরাপত্তা নম্বর, ইত্যাদি।</em>",
        "revdelete-legend": "দৃষ্টিপাত সীমাবদ্ধ করো",
        "revdelete-hide-text": "সংশোধনের লেখা",
        "revdelete-hide-image": "ফাইলের বিষয়বস্তু লুকিয়ে রাখা হোক",
        "mergehistory-merge": "[[:$1]]-এর নিচের সংশোধনগুলি [[:$2]]-এর সাথে একত্র করা যাবে। রেডিও বোতাম কলামটি ব্যবহার করে কেবলমাত্র নির্দেশিত সময় ও তার আগের সমস্ত সংশোধন একত্র করুন। লক্ষ্য করুন, পরিভ্রমণ সংযোগ ব্যবহার করলে কলামটি আদি অবস্থায় ফেরত যাবে।",
        "mergehistory-go": "একত্রীকরণযোগ্য সম্পাদনাগুলি দেখানো হোক",
        "mergehistory-submit": "সংশোধনগুলি একত্রীত করুন",
-       "mergehistory-empty": "কোন সংশোধন একত্র করা যাবে না.",
+       "mergehistory-empty": "কোন সংশোধন একত্র করা যাবে না",
        "mergehistory-done": "$1-এর $3{{PLURAL:$3|টি সংশোধন}} [[:$2]]-এর সাথে একত্রিত করা হয়েছে।",
        "mergehistory-fail": "ইতিহাস একত্র করা গেল না। অনুগ্রহ করে পাতাটি ও সময়ের প্যারামিটারগুলি আবার পরীক্ষা করে দেখুন।",
        "mergehistory-fail-bad-timestamp": "সময়তারিখ অবৈধ।",
        "difference-title-multipage": "\"$1\" ও \"$2\" পাতাগুলির মধ্যে পার্থক্য",
        "difference-multipage": "(পাতাগুলির মধ্যে পার্থক্য)",
        "lineno": "$1 নং লাইন:",
-       "compareselectedversions": "নিরà§\8dবাà¦\9aিত à¦¸à¦\82শà§\8bধিত à¦¸à¦\82সà§\8dà¦\95রণà¦\97à§\81লির à¦¤à§\81লনা",
+       "compareselectedversions": "নিরà§\8dবাà¦\9aিত à¦¸à¦\82সà§\8dà¦\95রণà¦\97à§\81লি à¦¤à§\81লনা à¦\95রà§\81ন",
        "showhideselectedversions": "নির্বাচিত সংশোধনগুলি দেখাও/লুকাও",
        "editundo": "পূর্বাবস্থায় ফেরত",
        "diff-empty": "(কোন পার্থক্য নেই)",
        "search-section": "($1 পরিচ্ছেদ)",
        "search-category": "($1 বিষয়শ্রেণী)",
        "search-file-match": "(ফাইলের বিষয়বস্তুর সাথে মিলে যায়)",
-       "search-suggest": "আপনি কি \"$1\" বোঝাতে চাচ্ছেন?",
+       "search-suggest": "আপনি কি বোঝাতে চাচ্ছেন: $1",
        "search-rewritten": "$1-এর জন্য অনুসন্ধানের ফলাফল দেখানো হচ্ছে। এর পরিবর্তে $2-এর জন্য অনুসন্ধান করুন।",
-       "search-interwiki-caption": "সহপ্রকল্পসমূহ",
+       "search-interwiki-caption": "সহপ্রকল্পসমূহ থেকে ফলাফল",
        "search-interwiki-default": "$1 থেকে প্রাপ্ত ফলাফলসমূহ:",
        "search-interwiki-more": "(আরও)",
        "search-interwiki-more-results": "আরও ফলাফল",
        "right-protect": "পাতাটির সুরক্ষা সীমা পরিবর্তন করুন এবং সুরক্ষিত পাতটি সম্পাদনা করুন",
        "right-editprotected": "সুরক্ষিত পাতা সম্পাদনা (ক্যাসকাডিং সুরক্ষা ছাড়া)",
        "right-editsemiprotected": "পাতা সম্পাদনা সুরক্ষিত রয়েছে,  \"{{int:protect-level-autoconfirmed}}\"",
-       "right-editcontentmodel": "পাতার à¦¤à¦¥à§\8dযà§\87র à¦§à¦°à¦£ সম্পাদনা করুন",
+       "right-editcontentmodel": "পাতার à¦¤à¦¥à§\8dযà§\87র à¦§à¦°à¦¨ সম্পাদনা করুন",
        "right-editinterface": "ব্যবহারকারী ইন্টারফেস সম্পাদনা",
        "right-editusercss": "অন্য ব্যবহারকারীগণের CSS ফাইল সম্পাদনা",
        "right-edituserjs": "অন্য ব্যবহারকারীগণের JS ফাইল সম্পাদনা",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (আরও দেখুন [[Special:NewPages|নতুন পাতার তালিকা]])",
        "recentchanges-legend-plusminus": "(''±১২৩'')",
        "recentchanges-submit": "দেখাও",
-       "rcfilters-activefilters": "সক্রিয় ফিল্টার",
+       "rcfilters-activefilters": "সক্রিয় ছাঁকনিসমূহ",
+       "rcfilters-quickfilters": "সংরক্ষিত ছাঁকনির সেটিং",
+       "rcfilters-quickfilters-placeholder-title": "এখনো কোন সংযোগ সংরক্ষণ হয়নি",
+       "rcfilters-savedqueries-defaultlabel": "ছাঁকনি সংরক্ষণ",
+       "rcfilters-savedqueries-rename": "নামান্তর",
+       "rcfilters-savedqueries-setdefault": "পূর্ব-নির্ধারিত হিসেবে নির্ধারন করুন",
+       "rcfilters-savedqueries-unsetdefault": "পূর্ব-নির্ধারিত হিসেবে নির্ধারন সরান",
+       "rcfilters-savedqueries-remove": "সরান",
+       "rcfilters-savedqueries-new-name-label": "নাম",
+       "rcfilters-savedqueries-apply-label": "সেটিংস সংরক্ষণ",
+       "rcfilters-savedqueries-cancel-label": "বাতিল",
+       "rcfilters-savedqueries-add-new-title": "বর্তমান ছাঁকনির সেটিং সংরক্ষণ করুন",
        "rcfilters-restore-default-filters": "পূর্বনির্ধারিত ছাঁকনি পুনরুদ্ধার করুন",
        "rcfilters-clear-all-filters": "সব ছাঁকনি পরিষ্কার করুন",
        "rcfilters-search-placeholder": "সাম্প্রতিক পরিবর্তনসমূহ ছাঁকুন (ব্রাউজ বা টাইপ করা শুরু করুন)",
        "rcfilters-filter-unregistered-label": "অনিবন্ধিত",
        "rcfilters-filter-unregistered-description": "যেসব সম্পাদক অ্যাকাউন্টে প্রবেশ করেননি।",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "এই ছাঁকনিটির সাথে নিম্নোক্ত ব্যবহারকারী অভিজ্ঞতা {{PLURAL:$2|ছাঁকনিটির|ছাঁকনিগুলির}} সংঘর্ষ আছে; যা কেবলমাত্র নিবন্ধিত ব্যবহারকারীদের খুঁজে বের করে: $1",
-       "rcfilters-filtergroup-authorship": "à¦\95ার à¦¦à§\8dবারা à¦¸à¦®à§\8dপাদিত",
-       "rcfilters-filter-editsbyself-label": "à¦\86পনার à¦¨à¦¿à¦\9cসà§\8dব à¦¸à¦®à§\8dপাদনা",
-       "rcfilters-filter-editsbyself-description": "à¦\86পনার à¦¸à¦®à§\8dপাদনাà¦\97à§\81লি।",
-       "rcfilters-filter-editsbyother-label": "à¦\85নà§\8dযদà§\87র à¦¸à¦®à§\8dপাদনাà¦\97à§\81লি",
-       "rcfilters-filter-editsbyother-description": "à¦\85নà§\8dয à¦¬à§\8dযবহারà¦\95ারà§\80দà§\87র à¦\95রা à¦¸à¦®à§\8dপাদনাà¦\97à§\81লি (à¦\86পনার à¦\95রা à¦¨à¦¯à¦¼)।",
+       "rcfilters-filtergroup-authorship": "à¦\95ার à¦¦à§\8dবারা à¦ªà¦°à¦¿à¦¬à¦°à§\8dতিত",
+       "rcfilters-filter-editsbyself-label": "à¦\86পনার à¦¦à§\8dবারা à¦ªà¦°à¦¿à¦¬à¦°à§\8dতিত",
+       "rcfilters-filter-editsbyself-description": "à¦\86পনার à¦¨à¦¿à¦\9cসà§\8dব à¦\85বদান।",
+       "rcfilters-filter-editsbyother-label": "à¦\85নà§\8dযদà§\87র à¦¦à§\8dবারা à¦ªà¦°à¦¿à¦¬à¦°à§\8dতিত",
+       "rcfilters-filter-editsbyother-description": "à¦\86পনার à¦¨à¦¿à¦\9cসà§\8dবà¦\97à§\81লি à¦\9bাড়া à¦¸à¦\95ল à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন।",
        "rcfilters-filtergroup-userExpLevel": "অভিজ্ঞতার স্তর (শুধু মাত্র নিবন্ধিত ব্যবহারকারীর জন্য)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "অভিজ্ঞতা ছাঁকনিগুলি কেবলমাত্র নিবন্ধিত ব্যবহারকারীদের খুঁজে বের করে, তাই এই ছাঁকনিটি \"অনিবন্ধিত\" ছাঁকনিটির সাথে সংঘর্ষে আছে।",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"অনিবন্ধিত\" ছাঁকনিটি এক বা তার অধিক অভিজ্ঞতা ছাঁকনির সাথে সংঘর্ষে আছে, যে ছাঁকনিগুলি কেবলমাত্র নিবন্ধিত ব্যবহারকারীদের খুঁজে বের করে। সংঘর্ষরত ছাঁকনিগুলিকে উপরের \"সক্রিয় ছাঁকনিসমূহ\" এলাকাতে চিহ্নিত করা হয়েছে।",
        "rcfilters-filter-user-experience-level-newcomer-label": "নতুন আগত",
        "rcfilters-filter-user-experience-level-newcomer-description": "১০টির কমসংখ্যক সম্পাদনা করেছেন ও ৪ দিনের কম সময় ধরে সক্রিয় আছেন।",
        "rcfilters-filter-user-experience-level-learner-label": "শিক্ষার্থী",
-       "rcfilters-filter-user-experience-level-learner-description": "যারা \"নবাগত\" ব্যবহারকারীদের চেয়ে বেশিসংখ্যক দিন ও বেশিবার সম্পাদনা করেছেন, কিন্তু \"অভিজ্ঞ ব্যবহারকারীদের\" চেয়ে কম করেছেন।",
+       "rcfilters-filter-user-experience-level-learner-description": "\"নতুন আগতদের\" চেয়ে বেশি অভিজ্ঞ, কিন্তু \"অভিজ্ঞ ব্যবহারকারীদের\" চেয়ে কম।",
        "rcfilters-filter-user-experience-level-experienced-label": "অভিজ্ঞ ব্যবহারকারী",
        "rcfilters-filter-user-experience-level-experienced-description": "৩০ দিনের বেশি সক্রিয় আছেন ও ৫০০টির বেশি সম্পাদনা করেছেন।",
        "rcfilters-filtergroup-automated": "স্বয়ংক্রিয় অবদান",
        "rcfilters-filter-minor-description": "যেসব সম্পাদনাকে লেখক অনুল্লেখ্য হিসেবে চিহ্নিত করেছেন।",
        "rcfilters-filter-major-label": "অনুল্লেখ্য নয়, এমন সম্পাদনা",
        "rcfilters-filter-major-description": "যেসব সম্পাদনাকে অনুল্লেখ্য হিসেবে চিহ্নিত করা হয়নি।",
+       "rcfilters-filtergroup-watchlist": "নজরতালিকার পাতা",
+       "rcfilters-filter-watchlist-watched-label": "নজরতালিকায়",
+       "rcfilters-filter-watchlist-watchednew-label": "নজরতালিকার নতুন পরিবর্তন",
+       "rcfilters-filter-watchlist-notwatched-label": "নজরতালিকাভুক্ত নয়",
        "rcfilters-filtergroup-changetype": "পরিবর্তনের ধরন",
        "rcfilters-filter-pageedits-label": "পাতার সম্পাদনা",
-       "rcfilters-filter-pageedits-description": "উইকি বিষয়বস্তু, আলোচনা, বিষয়শ্রেণীর বিবরণ.... ইত্যাদিতে সম্পাদনা",
+       "rcfilters-filter-pageedits-description": "উইকি বিষয়বস্তু, আলোচনা, বিষয়শ্রেণীর বিবরণ... ইত্যাদিতে সম্পাদনা",
        "rcfilters-filter-newpages-label": "পাতা তৈরিকরণ",
        "rcfilters-filter-newpages-description": "সম্পাদনা যা নতুন পাতা তৈরি করেছে।",
        "rcfilters-filter-categorization-label": "বিষয়শ্রেণীর পরিবর্তন",
        "rcfilters-filter-categorization-description": "বিষয়শ্রেণী পাতা সংযোজন বা অপসারণের তালিকা",
        "rcfilters-filter-logactions-label": "প্রবেশকৃত কার্য",
-       "rcfilters-filter-logactions-description": "প্রশাসনিক কর্ম, অ্যাকাউন্ট সৃষ্টিকরণ, পাতা অপসারণ, আপলোড....",
+       "rcfilters-filter-logactions-description": "প্রশাসনিক কর্ম, অ্যাকাউন্ট সৃষ্টিকরণ, পাতা অপসারণ, আপলোড...",
        "rcfilters-hideminor-conflicts-typeofchange-global": "\"অনুল্লেখ্য সম্পাদনা\" ছাঁকনিটির সাথে এক বা ততোধিক \"পরিবর্তনের ধরন\"-সংক্রান্ত ছাঁকনির সংঘর্ষ আছে, কারণ কিছু নির্দিষ্ট ধরনের সম্পাদনা \"অনুল্লেখ্য\" হিসেবে চিহ্নিত করা সম্ভব নয়। সংঘর্ষে থাকা ছাঁকনিগুলিকে উপরের \"সক্রিয় ছাঁকনিসমূহ\" এলাকাতে চিহ্নিত করা হয়েছে।",
        "rcfilters-hideminor-conflicts-typeofchange": "কিছু নির্দিষ্ট ধরনের সম্পাদনা \"অনুল্লেখ্য\" হিসেবে চিহ্নিত করা সম্ভব নয়, তাই এই ছাঁকনিটির সাথে নিম্নোক্ত পরিবর্তনের ধরন ছাঁকনিগুলির সংঘর্ষ আছে: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "এই \"পরিবর্তনের ধরন\"-সংক্রান্ত ছাঁকনিটির সাথে \"অনুল্লেখ্য সম্পাদনা\" ছাঁকনিটির সংঘর্ষ আছে। কিছু নির্দিষ্ট ধরনের সম্পাদনা \"অনুল্লেখ্য\" হিসেবে চিহ্নিত করা সম্ভব নয়।",
+       "rcfilters-filtergroup-lastRevision": "সর্বশেষ সংস্করণ",
+       "rcfilters-filter-lastrevision-label": "সর্বশেষ সংশোধন",
+       "rcfilters-filter-lastrevision-description": "একটি পাতার সর্বশেষ সাম্প্রতিক পরিবর্তন।",
+       "rcfilters-filter-previousrevision-label": "পূর্ববর্তী সংশোধন",
+       "rcfilters-filter-previousrevision-description": "সব পরিবর্তন যা একটি পাতার সর্বশেষ সাম্প্রতিক পরিবর্তন নয়।",
+       "rcfilters-view-tags": "ট্যাগসমূহ",
        "rcnotefrom": "<strong>$2</strong>টা থেকে সংঘটিত পরিবর্তনগুলি (সর্বোচ্চ <strong>$1টি</strong> দেখানো হয়েছে)।",
        "rclistfromreset": "তারিখ নির্বাচন পুনঃস্থাপন করুন",
        "rclistfrom": "$2, $3 তারিখের পর সংঘটিত নতুন পরিবর্তনগুলো দেখাও",
        "rcshowhidecategorization": "পাতা শ্রেণীবদ্ধকরণ $1",
        "rcshowhidecategorization-show": "দেখাও",
        "rcshowhidecategorization-hide": "লুকিয়ে রাখো",
-       "rclinks": "'''প্রদর্শনের ধরন'''<br />\n* বিগত ($2) দিনের শেষ ($1)টি পরিবর্তন দেখাও\n* $3",
+       "rclinks": "বিগত $2 দিনের শেষ $1টি পরিবর্তন দেখান",
        "diff": "পরিবর্তন",
        "hist": "ইতিহাস",
        "hide": "লুকিয়ে রাখো",
        "sharedupload-desc-there": "এই ফাইলটি $1 থেকে দেখানো হচ্ছে এবং হয়তো এটি অন্যান্য প্রকল্পতেও ব্যবহৃত হয়েছে।\nঅনুগ্রহ করে বিস্তারিত জানার জন্য [$2 ফাইলটির বর্ণনা পাতা] দেখুন।",
        "sharedupload-desc-here": "এই ফাইলটি $1 থেকে আগত এবং অন্যান্য প্রকল্পে ব্যবহৃত হতে পারে।\nসেখানে থাকা [$2 ফাইলটির বিবরণ পাতার] বিবরণ নিচে দেখানো হলো।",
        "sharedupload-desc-edit": "এই ফাইলটি $1 থেকে এবং অন্যান্য প্রকল্পে ব্যবহৃত হতে পারে।\n[$2 ফাইলটির বর্ণনা পাতা] থেকে আপনি ফাইলটি বর্ণনা সম্পাদনা করতে পারেন।",
-       "sharedupload-desc-create": "This file is from $1 and may be used by other projects.\nMaybe you want to edit the description on its [$2 file description page] there.",
+       "sharedupload-desc-create": "এই ফাইলটি $1 থেকে আগত এবং অন্যান্য প্রকল্পে ব্যবহৃত হতে পারে।\nআপনি সেখানে [$2 ফাইলটির বর্ণনা পাতায়] বর্ণনা সম্পাদনা করতে পারেন।",
        "filepage-nofile": "এই নামের কোন ফাইল নেই।",
        "filepage-nofile-link": "এই নামে কোনো ফাইল নেই, কিন্তু আপনি এটি [$1 আপলোড করতে পারেন]।",
        "uploadnewversion-linktext": "এই ফাইলটির একটি নতুন সংস্করণ আপলোড করুন",
        "apisandbox-fullscreen-tooltip": "ব্রাউজারের উইন্ডো পূরণ করতে খেলাঘরের প্যানেল প্রসারিত করুন।",
        "apisandbox-unfullscreen": "পাতা দেখাও",
        "apisandbox-unfullscreen-tooltip": "খেলাঘরের প্যানেল হ্রাস করুন, তাহলে মিডিয়াউইকি পরিভ্রমণ করার সংযোগগুলি পাওয়া যাবে।",
-       "apisandbox-submit": "à¦\85নà§\81রà§\8bধ à¦°à¦¾à¦\96ুন",
+       "apisandbox-submit": "à¦\85নà§\81রà§\8bধ à¦\95রুন",
        "apisandbox-reset": "পরিষ্কার",
        "apisandbox-retry": "পুনঃচেষ্টা করুন",
        "apisandbox-loading": "\"$1\" এপিআই মডিউলের জন্য তথ্য লোড হচ্ছে...",
        "enotif_body_intro_moved": "{{SITENAME}} এর $1 পাতাটি {{gender:$2|$2}} $PAGEEDITDATE তারিখে স্থানান্তর করেছেন, বর্তমান সংস্করণ দেখুন এখানে $3।",
        "enotif_body_intro_restored": "{{SITENAME}} এর $1 পাতাটি {{gender:$2|$2}} $PAGEEDITDATE আগের অবস্থায় ফিরিয়ে এনেছেন, বর্তমান সংস্করণ দেখুন এখানে $3।",
        "enotif_body_intro_changed": "{{SITENAME}} এর $1 পাতাটি $PAGEEDITDATE তারিখে $2 কর্তৃক {{GENDER:$2|পরিবর্তিত}} হয়েছে, বর্তমান সংস্করণের দেখুন $3।",
-       "enotif_lastvisited": "আপনার শেষ আগমনের পরে সংঘটিত সমস্ত পরিবর্তনের জন্য $1 দেখুন।",
-       "enotif_lastdiff": "এই পরিবর্তনটি দেখার জন্য $1 দেখুন।",
+       "enotif_lastvisited": "আপনার শেষ আগমনের পরে সংঘটিত সমস্ত পরিবর্তনের জন্য, $1 দেখুন",
+       "enotif_lastdiff": "এই পরিবর্তনটি দেখার জন্য, $1 দেখুন",
        "enotif_anon_editor": "বেনামী ব্যবহারকারী $1",
        "enotif_body": "প্রিয় $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nসম্পাদকের সারাংশ: $PAGESUMMARY $PAGEMINOREDIT\n\nসম্পাদকের সাথে যোগাযোগের উপায়:\nইমেইল: $PAGEEDITOR_EMAIL\nউইকি: $PAGEEDITOR_WIKI\n\nপাতাটির পরবর্তী পরিবর্তনগুলো জন্য আর কোন বিজ্ঞপ্তি পাঠানো হবে না, যতক্ষণ না আপনি প্রবেশ করার সময় এই পাতায় ব্রাউজ করবেন। এছাড়া আপনি আপনার নজরতালিকায় রাখা সবগুলি পাতা জন্য বিজ্ঞপ্তি ফ্ল্যাগ শুরুর অবস্থায় ফিরিয়ে নিতে পারেন।\n\nআপনার বন্ধুত্বপূর্ণ {{SITENAME}} বিজ্ঞপ্তি ব্যবস্থা\n\n--\nইমেইল বিজ্ঞপ্তি সেটিং পরিবর্তনের জন্য দেখুন\n{{canonicalurl:{{#special:Preferences}}}}\n\nআপনার নজরতালিকা সেটিংস পরিবর্তন করতে চাইলে দেখুন, \n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nনজরতালিকা থেকে কোন পাতা অপসারণ করতে চাইলে এখানে যান:\n$UNWATCHURL\n\nপ্রতিক্রিয়া জানাতে ও আরও সহযোগিতার জন্য:\n$HELPPAGE",
        "created": "তৈরী হয়েছিল",
        "changecontentmodel-reason-label": "কারণ:",
        "changecontentmodel-submit": "পরিবর্তন করুন",
        "changecontentmodel-success-title": "বিষয়বস্তুর প্রতিরূপ পরিবর্তিত হয়েছিলো",
-       "changecontentmodel-success-text": "[[:$1]]-à¦\8fর à¦¬à¦¿à¦·à¦¯à¦¼à¦¬à¦¸à§\8dতà§\81র à¦§à¦°à¦£ পরিবর্তন হয়েছে।",
+       "changecontentmodel-success-text": "[[:$1]]-à¦\8fর à¦¬à¦¿à¦·à¦¯à¦¼à¦¬à¦¸à§\8dতà§\81র à¦§à¦°à¦¨ পরিবর্তন হয়েছে।",
        "changecontentmodel-cannot-convert": "[[:$1]] পাতার বিষয়বস্তু $2-এর ধরনে রূপান্তরিত করা সম্ভব নয়।",
        "changecontentmodel-nodirectediting": "$1 বিষয়বস্তুর রূপ সরাসরি সম্পাদনা করা সমর্থন করে না",
        "changecontentmodel-emptymodels-title": "কোন বিষয়বস্তুর রূপ উপলব্ধ নয়",
        "sp-contributions-uploads": "আপলোডসমূহ",
        "sp-contributions-logs": "লগসমূহ",
        "sp-contributions-talk": "আলোচনা",
-       "sp-contributions-userrights": "ব্যবহারকারী অধিকার ব্যবস্থাপনা",
+       "sp-contributions-userrights": "{{GENDER:$1|ব্যবহারকারী}} অধিকার ব্যবস্থাপনা",
        "sp-contributions-blocked-notice": "এই ব্যবহারকারী বর্তমানে বাধাদানকৃত অবস্থায় রয়েছেন।\nতথ্যসূত্র হিসেবে সাম্প্রতিক বাধাদান লগের ভুক্তিটি নিচে দেওয়া হলো:",
        "sp-contributions-blocked-notice-anon": "এই আইপি ঠিকানাটি বর্তমানে বাধাদানকৃত অবস্থায় রয়েছে।\nতথ্যসূত্র হিসেবে সাম্প্রতিক বাধাদান লগের ভুক্তিটি নিচে দেওয়া হলো:",
        "sp-contributions-search": "অবদানসমূহের জন্য অনুসন্ধান",
        "blockipsuccesssub": "বাধা সফল",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] কে বাধা দেয়া হয়েছে।<br />\nবাধা দেয়া পুনর্বিবেচনা করতে হলে [[Special:BlockList|বাধা দেয়া তালিকা]] দেখুন।",
        "ipb-blockingself": "আপনি নিজেকেই বাধাপ্রদান করতে যাচ্ছেন! আপনি কী নিশ্চিত যে আপনি এটি-ই করতে চান?",
-       "ipb-confirmhideuser": "\"hide user\" ক্ষমতার মাধ্যমে আপনি একজন ব্যবহারকারীকে বাধা দিতে যাচ্ছেন। এর মাধ্যমে এই ব্যবহারকারীর নাম সকল লিস্ট এবং লগএন্ট্রি থেকে সরিয়ে ফেলা হবে। আপনি কি নিশ্চিতভাবে এটি করতে চান?",
+       "ipb-confirmhideuser": "আপনি \"ব্যবহারকারী লুকানো\" অধিকার যুক্ত একজন ব্যবহারকারীকে বাধা দিতে যাচ্ছেন। এর মাধ্যমে এই ব্যবহারকারীর নাম সকল তালিকা এবং লগের ভুক্তি থেকে সরিয়ে ফেলা হবে। আপনি কি নিশ্চিতভাবে এটি করতে চান?",
        "ipb-confirmaction": "আপনি যদি নিশ্চিত হন আপনি এটি সত্যিকার অর্থেই করতে চান তাহলে অনুগ্রহ করে উপরের \"{{int:ipb-confirm}}\" ঘরটি দেখুন।",
        "ipb-edit-dropdown": "বাধাদানের কারণ সম্পাদনা করুন",
        "ipb-unblock-addr": "$1-এর বাধা তুলে নিন",
        "autoblocklist-submit": "অনুসন্ধান",
        "autoblocklist-legend": "স্বয়ংক্রিয়বাধার তালিকা",
        "autoblocklist-localblocks": "স্থানীয় {{PLURAL:$1|স্বয়ংবাধা|স্বয়ংবাধাসমূহ}}",
+       "autoblocklist-total-autoblocks": "মোট স্বয়ংক্রিয় বাধার সংখ্যা: $1",
        "autoblocklist-empty": "স্বয়ংক্রিয়বাধার তালিকাটি খালি।",
        "autoblocklist-otherblocks": "অন্য {{PLURAL:$1|স্বয়ংবাধা|স্বয়ংবাধাসমূহ}}",
        "ipblocklist": "বাধাপ্রাপ্ত ব্যবহারকারী",
        "tooltip-pt-mycontris": "{{GENDER:|আপনার}} অবদানগুলোর একটি তালিকা",
        "tooltip-pt-anoncontribs": "এই আইপি ঠিকানা থেকে করা সম্পাদনার একটি তালিকা",
        "tooltip-pt-login": "আপনার প্রবেশ করাটা বাঞ্চনীয়, কিন্তু তা বাধ্যতামূলক নয়।",
+       "tooltip-pt-login-private": "এই উইকিতে ব্যবহার করতে আপনাকে প্রবেশ করতে হবে",
        "tooltip-pt-logout": "প্রস্থান",
        "tooltip-pt-createaccount": "আপনাকে একটি অ্যাকাউন্ট তৈরি করে প্রবেশ করার পরামর্শ দেওয়া হচ্ছে; তবে এটা বাধ্যতামূলক নয়",
        "tooltip-ca-talk": "বিষয়বস্তু পাতা সম্পর্কে আলোচনা",
        "anonymous": "{{SITENAME}} এর বেনামী {{PLURAL:$1|ব্যবহারকারী|ব্যবহারকারীবৃন্দ}}",
        "siteuser": "{{SITENAME}} ব্যবহারকারী $1",
        "anonuser": "{{SITENAME}} বেনামী ব্যবহারকারী $1",
-       "lastmodifiedatby": "$3 কর্তৃক $2, $1 তারিখে এই পাতাটিতে শেষ পরিবর্তন করা হয়েছিল।",
+       "lastmodifiedatby": "$3 কর্তৃক $2, $1 তারিখে এই পাতাটি শেষ সম্পাদিত হয়েছিল।",
        "othercontribs": "$1-এর কাজের উপর ভিত্তি করে।",
        "others": "অন্যান্য",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|ব্যবহারকারী}}|ব্যবহারকারী}} $1",
        "imagemaxsize": "ছবির আকারের সর্বোচ্চ সীমা:<br />''(ছবির বিবরণ পাতার জন্য)''",
        "thumbsize": "থাম্বনেইল আকার:",
        "widthheightpage": "$1 × $2, $3টি {{PLURAL:$1|পাতা}}",
-       "file-info": "ফাà¦\87লà§\87র à¦\86à¦\95ার: $1, MIME à¦§à¦°à¦£: $2",
-       "file-info-size": "$1 Ã\97 $2 à¦ªà¦¿à¦\95à§\8dসà§\87ল, à¦«à¦¾à¦\87লà§\87র à¦\86à¦\95ার: $3, à¦\8fমà¦\86à¦\87à¦\8fমà¦\87 à¦§à¦°à¦£: $4",
+       "file-info": "ফাà¦\87লà§\87র à¦\86à¦\95ার: $1, MIME à¦§à¦°à¦¨: $2",
+       "file-info-size": "$1 Ã\97 $2 à¦ªà¦¿à¦\95à§\8dসà§\87ল, à¦«à¦¾à¦\87লà§\87র à¦\86à¦\95ার: $3, à¦\8fমà¦\86à¦\87à¦\8fমà¦\87 à¦§à¦°à¦¨: $4",
        "file-info-size-pages": "$1 × $2 পিক্সেল, ফাইলের আকার: $3, MIME ধরন: $4, $5টি {{PLURAL:$5|পাতা}}",
        "file-nohires": "এর চেয়ে বেশি রেজোলিউশন লভ্য নয়।",
        "svg-long-desc": "এসভিজি ফাইল, সাধারণত $1 × $2 পিক্সেল, ফাইলের আকার: $3",
        "newimages-legend": "ছাঁকনি",
        "newimages-label": "ফাইলের নাম (অথবা এর কোন অংশ):",
        "newimages-user": "আইপি ঠিকানা বা ব্যবহারকারী নাম",
-       "newimages-showbots": "বটের আপলোড গুলো দেখাও।",
+       "newimages-newbies": "শুধু নতুন অ্যাকাউন্টের অবদানসমূহ দেখান",
+       "newimages-showbots": "বটের আপলোড দেখান",
        "newimages-hidepatrolled": "টহলকৃত আপলোড লুকানো হোক",
+       "newimages-mediatype": "মিডিয়ার ধরন:",
        "noimages": "দেখার মত কিছু নেই।",
        "gallery-slideshow-toggle": "থাম্বনেল ভাসান",
        "ilsubmit": "অনুসন্ধান",
        "exif-dc-relation": "সম্পর্কিত মিডিয়া",
        "exif-dc-rights": "অধিকার",
        "exif-dc-source": "উৎস মিডিয়া",
-       "exif-dc-type": "মিডিয়ার à¦§à¦°à¦£",
+       "exif-dc-type": "মিডিয়ার à¦§à¦°à¦¨",
        "exif-rating-rejected": "প্রত্যাখাত",
        "exif-isospeedratings-overflow": "৬৫৫৩৫ থেকে বড়",
        "exif-iimcategory-ace": "শিল্প, সংস্কৃতি এবং বিনোদন",
        "confirmrecreate": "আপনি সম্পাদনা শুরু করার পর ব্যবহারকারী [[User:$1|$1]] ([[User talk:$1|আলাপ]]) এই পাতাটি মুছে দিয়েছেন, নিচের কারণ দেখিয়ে:\n: <em>$2</em>\nআপনি সত্যিই যে পাতাটি পুনরায় সৃষ্টি করতে চান, তা দয়া করে নিশ্চিত করুন।",
        "confirmrecreate-noreason": "আপনি সম্পাদনা শুরু করার পর ব্যবহারকারী [[User:$1|$1]] ([[User talk:$1|আলাপ]]) এই পাতাটি {{GENDER:$1|মুছে}} দিয়েছেন। আপনি সত্যিই যে পাতাটি পুনরায় সৃষ্টি করতে চান, তা দয়া করে নিশ্চিত করুন।",
        "recreate": "পুনরায় তৈরি করো",
+       "confirm-purge-title": "এই পাতাটি শোধন করুন",
        "confirm_purge_button": "ঠিক আছে",
        "confirm-purge-top": "এই পাতার ক্যাশে পরিষ্কার করতে চান?",
        "confirm-purge-bottom": "ক্যাশে পরিষ্কারের মাধ্যমে পাতাটির সবচেয়ে সাম্প্রতিক সংস্করণটি প্রদর্শিত হবে।",
        "mw-widgets-titleinput-description-redirect": "$1-এ পুনঃনির্দেশিত",
        "mw-widgets-categoryselector-add-category-placeholder": "একটি বিষয়শ্রেণী যোগ করুন...",
        "mw-widgets-usersmultiselect-placeholder": "আরও যোগ করুন...",
+       "date-range-from": "এ তারিখ থেকে:",
+       "date-range-to": "এ তারিখ পর্যন্ত:",
        "sessionmanager-tie": "একাধিক অনুরোধের প্রমাণীকরণের ধরন একত্রিত করা যাবে না: $1।",
        "sessionprovider-generic": "$1টি সেশন",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "কুকি-ভিত্তিক সেশন",
        "pageid": "পাতার আইডি $1",
        "rawhtml-notallowed": "&lt;html&gt; ট্যাগ স্বাভাবিক পৃষ্ঠাগুলির বাহিরে ব্যবহার করা যাবে না।",
        "gotointerwiki": "{{SITENAME}} ছেড়ে যাচ্ছেন",
-       "gotointerwiki-invalid": "নিদিষ্টকৃত শিরোনামটি অবৈধ ছিল।",
-       "gotointerwiki-external": "আপনি [[$2]] পরিদর্শন করতে {{SITENAME}} ছাড়তে চলেছেন যা একটি ভিন্ন ওয়েবসাইট।\n\n[$1 $1-এ অবিরত থাকতে এখানে ক্লিক করুন]।",
+       "gotointerwiki-invalid": "নিদিষ্টকৃত শিরোনামটি অবৈধ।",
+       "gotointerwiki-external": "আপনি [[$2]] পরিদর্শন করতে {{SITENAME}} ছাড়তে চলেছেন যা একটি ভিন্ন ওয়েবসাইট।\n\n'''[$1 $1-এ চলুন]'''",
        "undelete-cantedit": "আপনি এই পাতাটি ফিরিয়ে আনতে পারবেন না কারণ আপনার এই পাতাটি সম্পাদনা করার অনুমতি নেই।",
-       "undelete-cantcreate": "আপনি এই পাতাটি ফিরিয়ে আনতে পারবেন না কারণ এই নামে কোন পাতা বিদ্যমান নেই ও আপনার এই পাতাটি তৈরি করার অনুমতি নেই।"
+       "undelete-cantcreate": "আপনি এই পাতাটি ফিরিয়ে আনতে পারবেন না কারণ এই নামে কোন পাতা বিদ্যমান নেই ও আপনার এই পাতাটি তৈরি করার অনুমতি নেই।",
+       "pagedata-title": "পাতার উপাত্ত",
+       "pagedata-bad-title": "অপ্রযোজ্য শিরোনাম: \"$1\""
 }
index f1b084d..d989014 100644 (file)
        "externaldberror": "ডাটেবেজর মা বেসেপ আহান ইসে নাইলে তরতা বারেদের একাউন্ট বদালানির য়্যাথাং নেই।",
        "login": "হমানি",
        "nav-login-createaccount": "লগইন / একাউন্ট খুল",
-       "userlogin": "হমানি / নৱা একাউন্ট খুলানি",
-       "userloginnocreate": "লগইন",
        "logout": "নিকুলানি",
        "userlogout": "নিকুলানি",
        "notloggedin": "তি লগ-ইন নাকরিসত",
-       "nologin": "তরতা একাউন্টহান নেই থাং? $1",
-       "nologinlink": "একাউন্ট আহান খুল",
        "createaccount": "একাউন্ট খুল",
-       "gotaccount": "মান্নাপা একাউন্ট আহান আগেত্তর আসে? '''$1'''।",
-       "gotaccountlink": "লগইন",
-       "userlogin-resetlink": "তর লগইন করানির পৌ পাহুরলেথাঙ?",
        "createaccountmail": "ই-মেইলন",
-       "createaccountreason": "কারণ:",
        "badretype": "খন্তাচাবি (password) দ্বিয়গি না মিলের।",
        "userexists": "এরে আতাকুরার নাঙ এহান আরাক আগই আগে ব্যবহার করিসে। \nতি আরাক নাঙ আহান বাছ।",
        "loginerror": "লগইনে লালুইসে",
        "prefs-resetpass": "খন্তাচাবি সিলকর",
        "prefs-email": "ই-মেইল অপশনহানি",
        "saveprefs": "ইতু",
-       "columns": "দুরগিঃ",
        "timezoneregion-africa": "আফ্রিকা",
        "timezoneregion-america": "আমেরিকা",
        "timezoneregion-antarctica": "এন্টার্টিকা",
        "rcshowhideanons": "$1 হারানাপাসি আতাকুরা",
        "rcshowhidepatr": "$1 পাহারাত আসে পতানি",
        "rcshowhidemine": "$1 মর পাতানিহানি",
-       "rclinks": "গেলগা $1 হান পতানি দেখাদে $2 দিনরতা <br />$3",
+       "rclinks": "গেলগা $1 হান পতানি দেখাদে $2 দিনরতা",
        "diff": "ফারাক",
        "hist": "ইতিহাসহান",
        "hide": "আরুম",
        "revdelete-restricted": "ডান্ডিকরেকুরাগরাঙ সীমাবদ্ধতাহানি ফলা",
        "revdelete-unrestricted": "ডান্ডিকরেকুরাগরাঙ সীমাবদ্ধতাহানি নেইকর",
        "rightsnone": "(নেই)",
-       "revdelete-summary": "সারাংশ পতানি",
        "searchsuggest-search": "বিসারা",
        "searchsuggest-containing": "আসেতা...",
        "special-characters-group-latin": "লাতিন",
index 5554c66..d58caf3 100644 (file)
        "anontalk": "Kaozeal",
        "navigation": "Merdeiñ",
        "and": "&#32;ha(g)",
-       "qbfind": "Klask",
-       "qbbrowse": "Furchal",
-       "qbedit": "Kemmañ",
-       "qbpageoptions": "Pajenn an dibaboù",
-       "qbmyoptions": "Ma dibaboù",
        "faq": "FAG",
-       "faqpage": "Project:FAG",
        "actions": "Oberoù",
        "namespaces": "Esaouennoù anv",
        "variants": "Adstummoù",
        "edit-local": "Kemmañ an deskrivadur lec'hel",
        "create": "Krouiñ",
        "create-local": "Ouzhpennañ un deskrivadur lec'hel",
-       "editthispage": "Kemmañ ar bajenn-mañ",
-       "create-this-page": "Krouiñ ar bajenn-mañ",
        "delete": "Diverkañ",
-       "deletethispage": "Diverkañ ar bajenn-mañ",
-       "undeletethispage": "Diziverkañ ar bajenn-mañ",
        "undelete_short": "Diziverkañ {{PLURAL:$1|ur c'hemm|$1 kemm}}",
        "viewdeleted_short": "Gwelet {{PLURAL:$1|ur c'hemm diverket|$1 kemm diverket}}",
        "protect": "Gwareziñ",
        "protect_change": "kemmañ",
-       "protectthispage": "Gwareziñ ar bajenn-mañ",
        "unprotect": "Cheñch gwarez",
-       "unprotectthispage": "Cheñch live gwareziñ ar bajenn-mañ",
        "newpage": "Pajenn nevez",
-       "talkpage": "Pajenn gaozeal",
        "talkpagelinktext": "kaozeal",
        "specialpage": "Pajenn dibar",
        "personaltools": "Ostilhoù personel",
-       "articlepage": "Sellet ouzh ar pennad",
        "talk": "Kaozeadenn",
        "views": "Gweladennoù",
        "toolbox": "Ostilhoù",
        "tool-link-userrights": "Kemmañ strolladoù an {{GENDER:$1|implijer|implijerez}}",
        "tool-link-userrights-readonly": "Gwelet strolladoù an {{GENDER:$1|implijer|implijerez}}",
        "tool-link-emailuser": "Kas ur postel d'an {{PLURAL:$1|an implijer-mañ|an implijerez-mañ}}",
-       "userpage": "Pajenn implijer",
-       "projectpage": "Pajenn meta",
        "imagepage": "Gwelet pajenn ar restr",
        "mediawikipage": "Sellet ouzh pajenn ar c'hemennadennoù",
        "templatepage": "Gwelet patrom ar bajenn",
        "redirectedfrom": "(Adkaset eus $1)",
        "redirectpagesub": "Pajenn adkas",
        "redirectto": "Adkas da :",
-       "lastmodifiedat": "Kemmoù diwezhañ degaset d'ar bajenn-mañ, d'an/ar $1 da $2.",
+       "lastmodifiedat": "Kemmoù diwezhañ degaset d'ar bajenn-mañ d'an $1, da $2.",
        "viewcount": "Sellet ez eus bet {{PLURAL:$1|$1 wezh|$1 gwezh}} ouzh ar bajenn-mañ.",
        "protectedpage": "Pajenn warezet",
        "jumpto": "Mont da :",
        "preview": "Rakwelet",
        "showpreview": "Rakwelet",
        "showdiff": "Diskouez ar c'hemmoù",
-       "blankarticle": "<strong>Taolit evezh :</strong> Goullo eo ar bajenn emaoc'h o krouiñ.\nMar klikit war \"{{int:savearticle}}\" en-dro e vo krouet hep netra ebet e-barzh.",
+       "blankarticle": "<strong>Taolit evezh :</strong> Goullo eo ar bajenn emaoc'h o krouiñ.\nMar klikit war \"$1\" en-dro e vo krouet hep netra ebet e-barzh.",
        "anoneditwarning": "</strong>Diwallit :</strong> N'oc'h ket kevreet.\nGallout a raio an holl dud gwelet ho chomlec'h IP ma rit kemmoù. Ma <strong>[$1kevreit]</strong>pe<strong>[$2 krouit ur gont]</strong>, e vo deroet ho kemmoù d'hoc'h anv-implijer, e-touez spletoù all.",
        "anonpreviewwarning": "''N'oc'h ket kevreet. Enrollañ a lakao war-wel ho chomlec'h IP e istor kemmoù ar bajenn.''",
        "missingsummary": "'''Taolit evezh:''' N'hoc'h eus ket lakaet tamm testenn diverrañ ebet evit ho kemmoù. Mar klikit war enrollañ en-dro, e vo enrollet ho testenn evel m'emañ hepmuiken.",
-       "selfredirect": "<strong>Taolit evezh :</strong> Emaoc'h oc'h adkas ar bajenn-mañ warni hec'h-unan.\nPe hoc'h eus spisaet ur pal a-dreuz evit an adkas pe emaoc'h o cheñch ur bajenn n'emañ ket da vezañ cheñchet evel-se.\nMar klikit war \"{{int:savearticle}}\" en-dro, e vo krouet an adkas forzh penaos.",
+       "selfredirect": "<strong>Taolit evezh :</strong> Emaoc'h oc'h adkas ar bajenn-mañ warni hec'h-unan.\nPe hoc'h eus spisaet ur pal a-dreuz evit an adkas pe emaoc'h o cheñch ur bajenn n'emañ ket da vezañ cheñchet evel-se.\nMar klikit war \"$1\" en-dro, e vo krouet an adkas forzh penaos.",
        "missingcommenttext": "Skrivit hoc'h evezhiadenn a-is.",
-       "missingcommentheader": "<strong>Taolit evezh :</strong> N'hoc'h eus lakaet tamm danvez/titl ebet d'hoc'h evezhiadenn.\nMar klikit war \"{{int:savearticle}}\" en-dro, e vo enrollet ho testenn evel m'emañ hepmuiken.",
+       "missingcommentheader": "<strong>Taolit evezh :</strong> N'hoc'h eus lakaet tamm danvez/titl ebet d'hoc'h evezhiadenn.\nMar klikit war \"$1\" en-dro, e vo enrollet ho testenn evel m'emañ hepmuiken.",
        "summary-preview": "Rakwelet un diverrañ eus ar c'hemmoù :",
        "subject-preview": "Rakwelet an danvez :",
        "previewerrortext": "C'hoarvezet ez eus ur fazi e-ser klask rakwelet ho kemmoù",
        "editingsection": "Oc'h aozañ $1 (rann)",
        "editingcomment": "Oc'h aozañ $1 (rann nevez)",
        "editconflict": "tabut kemmañ : $1",
-       "explainconflict": "Enrollet eo bet ar bajenn-mañ war-lerc'h m'ho pefe kroget d'he c'hemmañ.\nE-krec'h an takad aozañ emañ an destenn evel m'emañ enrollet bremañ er bank roadennoù.\nHo kemmoù deoc'h a zeu war wel en takad aozañ traoñ.\nRet e vo deoc'h degas ho kemmoù d'an destenn zo evit poent.\nN'eus '''nemet''' an destenn zo en takad krec'h a vo saveteet pa klikot war \"{{int:savearticle}}\".",
+       "explainconflict": "Enrollet eo bet ar bajenn-mañ war-lerc'h m'ho pefe kroget d'he c'hemmañ.\nE-krec'h an takad aozañ emañ an destenn evel m'emañ enrollet bremañ er bank roadennoù.\nHo kemmoù deoc'h a zeu war wel en takad aozañ traoñ.\nRet e vo deoc'h degas ho kemmoù d'an destenn zo evit poent.\nN'eus '''nemet''' an destenn zo en takad krec'h a vo saveteet pa klikot war \"$1\".",
        "yourtext": "Ho testenn",
        "storedversion": "Stumm enrollet",
        "nonunicodebrowser": "'''DIWALLIT: N'eo ket skoret an Unicode gant ho merdeer. Un diskoulm da c'hortoz zo bet kavet evit ma c'hallfec'h kemmañ pennadoù : dont a raio war wel an arouezennoù an-ASCII er prenestr skridaozañ evel kodoù eizhdekvedennel.'''",
        "readonlywarning": "<strong>Diwallit : prennet eo bet an diaz roadennoù evit bezañ trezalc'het; setu ne viot ket evit enrollañ ho kemmoù diouzhtu-diouzhtu eta.</strong>\n\nGallout a rit eilañ ha pegañ ho skrid en ur restr testenn all hag enrollañ anezhañ a-benn diwezhatoc'hik.\n\nSetu an displegadenn lakaet gant ar merour reizhiad eo bet prennet an traoù gantañ : $1",
        "protectedpagewarning": "'''KEMENN DIWALL: Gwarezet eo bet ar bajenn-mañ. N'eus nemet an implijerien ganto ar statud merour a c'hall kemmañ anezhi.'''\nEnmont diwezhañ ar marilh a ziskouezer amañ a-is evel dave :",
        "semiprotectedpagewarning": "''Notenn :''' Gwarezet eo ar bajenn-mañ; n'eus nemet an implijerien bet krouet ur gont ganto a kemmañ anezhi. Kasadenn ziwezhañ ar marilh zo diskouezet amañ a-is evel dave :",
-       "cascadeprotectedwarning": "<strong>Diwallit :</strong> Prennet eo ar bajenn-mañ. N'eus nemet ar verourien a c'hall kemmañ anezhi peogwir emañ treuzkludet {{PLURAL:$1|er bajenn|e-mesk ar pajennoù}} da-heul zo bet gwarezet en ur zibab an dibarzh \"skalierad\" :",
+       "cascadeprotectedwarning": "<strong>Diwallit :</strong> Prennet eo bet ar bajenn-mañ. N'eus nemet an implijerien ganto [[Special:ListGroupRights|gwirioù dibar]] a c'hall kemmañ anezhi peogwir emañ treuzkludet {{PLURAL:$1|er bajenn|er pajennoù}} da-heul gwarezet dre skalierad :",
        "titleprotectedwarning": "'''DIWALLIT :  Gwarezet eo bet ar bajenn-mañ e doare ma ranker kaout [[Special:ListGroupRights|gwirioù dibar]] a-benn krouiñ anezhi.''' Kasadenn ziwezhañ ar marilh a zo diskouezet amañ a-is evel dave :",
        "templatesused": "{{PLURAL:$1|Patrom|Patromoù}} implijet war ar bajenn-mañ :",
        "templatesusedpreview": "{{PLURAL:$1|Patrom|Patromoù}} implijet er rakweladenn-mañ :",
        "search-file-match": "(klotañ a ra gant endalc'had ar restr)",
        "search-suggest": "N'hoc'h eus ket soñjet kentoc'h e : $1",
        "search-rewritten": "O tiskouez disoc'hoù evit $1. Klask $2 kentoc'h.",
-       "search-interwiki-caption": "Raktresoù kar",
+       "search-interwiki-caption": "Disoc'hoù diwar raktresoù kar",
        "search-interwiki-default": "Disoc'hoù eus $1 :",
        "search-interwiki-more": "(muioc'h)",
        "search-interwiki-more-results": "Muioc'h a zisoc'hoù",
        "saveusergroups": "Enrollañ strolladoù an {{GENDER:$1|implijer|implijerez}}",
        "userrights-groupsmember": "Ezel eus :",
        "userrights-groupsmember-auto": "Ezel emplegat eus :",
-       "userrights-groups-help": "Cheñch strolladoù an implijer a c'hallit ober.\n* Ul log asket a verk emañ an implijer er strollad.\n* Ul log diask a verk n'emañ ket an implijer er strollad.\n* Ur * a verk n'hallit ket dilemel ar strollad ur wech bet ouzhpennet ganeoc'h, pe ar c'hontrol.\n* Ur # a verk a c'hallit astenn termen echuiñ ar strollad hepken ; n'hallit ket berraat anezhañ.",
+       "userrights-groups-help": "Cheñch strolladoù an implijer a c'hallit ober.\n* Ul log asket a verk emañ an implijer er strollad.\n* Ul log diask a verk n'emañ ket an implijer er strollad.\n* Ur * a verk n'hallit ket dilemel ar strollad ur wech bet ouzhpennet ganeoc'h, pe ar c'hontrol.\n* Ur # a verk e c'hallit astenn termen an emezelañ er strollad hepken ; n'hallit ket berraat anezhañ.",
        "userrights-reason": "Abeg :",
        "userrights-no-interwiki": "N'oc'h ket aotreet da gemmañ ar gwirioù implijer war wikioù all.",
        "userrights-nodatabase": "N'eus ket eus an diaz titouroù $1 pe n'eo ket lec'hel.",
        "userrights-expiry-options": "1 deiz:1 day,1 sizhun:1 week,1 miz:1 month,3 miz:3 months,6 miz:6 months, bloaz:1 year",
        "userrights-invalid-expiry": "Direizh eo termen echuiñ ar strollad \"$1\".",
        "userrights-expiry-in-past": "Re gozh eo termen echuiñ ar strollad \"$1\".",
-       "userrights-cannot-shorten-expiry": "N'hallit ket astenn termen echuiñ ar strollad \"$1\". N'eus nemet an implijerien aotreet da ouzhpennañ ha lemel ar strollad-mañ a c'hall astenn an termen.",
+       "userrights-cannot-shorten-expiry": "N'hallit ket astenn an termen emezelañ er strollad \"$1\". N'eus nemet an implijerien aotreet da ouzhpennañ pe lemel ar strollad-mañ a c'hall astenn an termen.",
        "userrights-conflict": "Bec'h zo abalamour da gemmoù e gwirioù an implijerien. Adwelit an traoù, mar plij, ha kadarnait ho kemmoù.",
        "group": "Strollad :",
        "group-user": "Implijerien",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (gwelet ivez [[Special:NewPages|roll ar pajennoù nevez]])",
        "recentchanges-submit": "Diskouez",
        "rcfilters-activefilters": "Siloù oberiant",
+       "rcfilters-quickfilters": "Liammoù prim",
+       "rcfilters-savedqueries-defaultlabel": "Siloù enrollet",
+       "rcfilters-savedqueries-rename": "Adenvel",
+       "rcfilters-savedqueries-setdefault": "Gweredekaat dre ziouer",
+       "rcfilters-savedqueries-unsetdefault": "Diweredekaat dre ziouer",
+       "rcfilters-savedqueries-remove": "Dilemel",
+       "rcfilters-savedqueries-new-name-label": "Anv",
+       "rcfilters-savedqueries-apply-label": "Enrollañ an arventennoù",
+       "rcfilters-savedqueries-cancel-label": "Nullañ",
+       "rcfilters-savedqueries-add-new-title": "Enrollañ arventennoù ar sil en implij",
        "rcfilters-restore-default-filters": "Assevel ar siloù dre ziouer",
        "rcfilters-clear-all-filters": "Riñsañ an holl siloù",
        "rcfilters-search-placeholder": "Silañ ar c'hemmoù diwezhañ (merdeiñ pe kregiñ da skrivañ)",
        "rcfilters-filter-unregistered-label": "Divarilh",
        "rcfilters-filter-unregistered-description": "Aozerien n'int ket kevreet.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Tabut zo etre ar sil-mañ hag ar {{PLURAL:$2|sil|siloù}} Arroutet, na {{PLURAL:$2|gav|gavont}} nemet an implijerien enrollet : $1",
-       "rcfilters-filtergroup-authorship": "Kemmañ anv an aozer",
+       "rcfilters-filtergroup-authorship": "Aozer ar c'hemmoù",
        "rcfilters-filter-editsbyself-label": "Kemmet ganeoc'h",
-       "rcfilters-filter-editsbyself-description": "Kemmet ganeoc'h",
+       "rcfilters-filter-editsbyself-description": "Ar c'hemmoù graet ganeoc'h.",
        "rcfilters-filter-editsbyother-label": "Kemmet gant tud all",
-       "rcfilters-filter-editsbyother-description": "Kemmoù graet gant implijerien all (ket ganeoc'h).",
+       "rcfilters-filter-editsbyother-description": "An holl gemmoù nemet ar re graet ganeoc'h.",
        "rcfilters-filtergroup-userExpLevel": "Live skiant-prenañ (evit an implijer enrollet hepken)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Ar siloù Arroutet ne gavont nemet implijerien enrollet, se zo kaoz zo tabut etre ar sil-mañ hag ar sil \"Dienroll\".",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Emañ ar sil \"Dienroll\" o tabutal gant gant ur sil Arroutet pe gant meur a hini. Ar siloù Arroutet a gav implijerien enrollet hepken. Ar siloù o tabutal zo merket en takad Siloù oberiant a-us.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Tud nevez-deuet",
        "rcfilters-filter-user-experience-level-newcomer-description": "Nebeutoc'h eget 10 kemm ha 4 devezh obererezh.",
        "rcfilters-filter-user-experience-level-learner-label": "Deskarded",
-       "rcfilters-filter-user-experience-level-learner-description": "Muioc'h a zeizioù obererezh hag a gemmoù eget \"deraouidi\" hogen nebeutoc'h eget an \"implijerien arroutet\".",
+       "rcfilters-filter-user-experience-level-learner-description": "Muioc'h a skiant-prenet eget an \"deraouidi\" hogen nebeutoc'h eget an \"implijerien arroutet\".",
        "rcfilters-filter-user-experience-level-experienced-label": "Implijerien arroutet",
        "rcfilters-filter-user-experience-level-experienced-description": "Ouzhpenn 30 devezh oberiantiz ha 500 kemm.",
        "rcfilters-filtergroup-automated": "Degasadennoù emgefre",
        "rcfilters-filter-minor-description": "Kemmoù merket evel dister gant an aozer.",
        "rcfilters-filter-major-label": "Kemmoù n'int ket dister",
        "rcfilters-filter-major-description": "Kemmoù n'int ket bet merket evel dister",
+       "rcfilters-filtergroup-watchlist": "Pajennoù evezhiet",
+       "rcfilters-filter-watchlist-watched-label": "War ar roll evezhiañ",
+       "rcfilters-filter-watchlist-watched-description": "Kemmoù graet war pajennoù ho roll evezhiañ.",
+       "rcfilters-filter-watchlist-watchednew-label": "Kemmoù nevez er roll evezhiañ",
        "rcfilters-filtergroup-changetype": "Seurt kemm",
        "rcfilters-filter-pageedits-label": "Kemmoù pajennoù",
        "rcfilters-filter-pageedits-description": "Kemmoù da danvez ar wiki, d'ar c'haozeadennoù, da zeskrivadurioù rummadoù...",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Tabut zo etre ar sil \"Kemmoù dister\" hag unan pe meur a sil a Seurt kemmoù peogwir n'haller merkañ kemmoù zo evel \"dister\". Kavet e vo ar siloù o tabutal e takad ar siloù gweredekaet, a-us.",
        "rcfilters-hideminor-conflicts-typeofchange": "Seurtoù kemmoù zo n'hallont ket bezañ merket evel \"dister,\", rak se ez eus tabut etre ar sil-mañ ha siloù ar Seurtoù kemmoù da heul : $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Tabut zo etre ar sil-mañ Seurt kemmoù gant sil ar \"c'hemmoù dister\". Kemmoù zo n'hallont ket bezañ merket evel \"dister\".",
+       "rcfilters-filtergroup-lastRevision": "Stumm diwezhañ",
+       "rcfilters-filter-lastrevision-label": "Stumm diwezhañ",
+       "rcfilters-filter-lastrevision-description": "Kemm diwezhañ graet ouzh ur bajenn.",
+       "rcfilters-filter-previousrevision-label": "Stummoù koshoc'h",
+       "rcfilters-filter-previousrevision-description": "An holl gemmoù nemet ar c'hemm diwezhañ graet ouzh ur bajenn.",
        "rcnotefrom": "Setu aze {{PLURAL:$5|ar c'hemm|ar c'hemmoù}} c'hoarvezet abaoe an <strong>$3, $4</strong> (<strong>$1</strong> d'ar muiañ).",
+       "rclistfromreset": "adderaouekaat dibab an deiziad",
        "rclistfrom": "Diskouez ar c'hemmoù diwezhañ abaoe an/ar $3 $2",
        "rcshowhideminor": "$1 ar c'hemmoù dister",
        "rcshowhideminor-show": "Diskouez",
        "rcshowhidecategorization": "$1 rummatadur ar bajenn",
        "rcshowhidecategorization-show": "Diskouez",
        "rcshowhidecategorization-hide": "Kuzhat",
-       "rclinks": "Diskouez an/ar $1 kemm diwezhañ c'hoarvezet e-pad an/ar $2 devezh diwezhañ.<br />$3",
+       "rclinks": "Diskouez an/ar $1 kemm diwezhañ c'hoarvezet e-pad an/ar $2 devezh diwezhañ.",
        "diff": "diforc'h",
        "hist": "ist",
        "hide": "Kuzhat",
        "php-uploaddisabledtext": "Diweredekaet eo bet ar pellgargañ e PHP. Gwiriit an dibarzh arventennoù file_uploads.",
        "uploadscripted": "Er restr-mañ ez eus kodoù HTML pe skriptoù a c'hallfe bezañ kammgomprenet gant ur merdeer Kenrouedad.",
        "upload-scripted-pi-callback": "Dibosupl eo enporzhiañ ur restr enni kemennoù plediñ gant ur follenn stil XML.",
+       "upload-scripted-dtd": "Dibosupl eo enporzhiañ restroù SVG enno un disklêriadur DTD n'eo ket standart.",
        "uploaded-script-svg": "Kavet ez eus bet ul elfenn skriptadus \"$1\" er restr SVG enporzhiet.",
        "uploaded-hostile-svg": "Kavet ez eus bet ur CSS diasur en elfenn stil ur restr SVG.",
        "uploaded-event-handler-on-svg": "N'eo ket aotreet spisaat perzhioù merañ darvoudoù <code>$1=\"$2\"</code> er restroù SVG.",
        "sp-contributions-uploads": "Enporzhiadennoù",
        "sp-contributions-logs": "marilhoù",
        "sp-contributions-talk": "kaozeal",
-       "sp-contributions-userrights": "Merañ ar gwirioù",
+       "sp-contributions-userrights": "merañ gwirioù {{GENDER:$1|an implijer|an implijerez}}",
        "sp-contributions-blocked-notice": "Stanket eo an implijer-mañ evit poent. Dindan emañ merket moned diwezhañ marilh ar stankadennoù, d'ho kelaouiñ :",
        "sp-contributions-blocked-notice-anon": "Stanket eo ar chomlec'h IP-mañ evit ar mare.\nDindan emañ merket enmont diwezhañ marilh ar stankadennoù, d'ho kelaouiñ :",
        "sp-contributions-search": "Klask degasadennoù",
        "autoblocklist-legend": "Rollañ ar stankadennoù emgefre",
        "autoblocklist-localblocks": "{{PLURAL:$1|Stankadenn emgefre|Stankadennoù emgefre}} lec'hel",
        "autoblocklist-empty": "Goullo eo roll ar stankadennoù emgefre",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Stankadenn emgefre|Stankadennoù emgefre}} all",
        "ipblocklist": "Implijerien stanket",
        "ipblocklist-legend": "Kavout un implijer stanket",
        "blocklist-userblocks": "Kuzhat ar stankadennoù kont",
        "tooltip-pt-mycontris": "Roll ho tegasadennoù",
        "tooltip-pt-anoncontribs": "Ur roll eus ar c'hemmoù graet adalek ar chomlec'h IP-mañ",
        "tooltip-pt-login": "Daoust ma n'eo ket ret, ec'h aliomp deoc'h kevreañ",
+       "tooltip-pt-login-private": "Ret eo deoc'h kevreañ evit gallout ober gant ar wiki-mañ",
        "tooltip-pt-logout": "Digevreañ",
        "tooltip-pt-createaccount": "Erbedet eo deoc'h krouiñ ur gont ha kevreañ ; n'eo ket ret koulskoude.",
        "tooltip-ca-talk": "Kaozeadennoù diwar-benn ar pennad",
        "anonymous": "{{PLURAL:$1|Implijer|Implijerien}} dizanv war {{SITENAME}}",
        "siteuser": "Implijer(ez) $1 eus {{SITENAME}}",
        "anonuser": "implijer dizanv $1 eus {{SITENAME}}",
-       "lastmodifiedatby": "Kemmet eo bet ar bajenn-mañ da ziwezhañ da $2, d'an $1 gant $3",
+       "lastmodifiedatby": "Kemmet eo bet ar bajenn-mañ da ziwezhañ da $2, d'an $1 gant $3.",
        "othercontribs": "Diazezet war labour $1.",
        "others": "re all",
        "siteusers": "{{PLURAL:$2|{{GENDER:$1|An implijer|An implijerez}}|{{GENDER:$1|An implijerien|An implijerezed}}}} $1 eus {{SITENAME}}",
        "confirmrecreate": "{{GENDER:$1|Diverket}} eo bet ar bajenn-mañ gant [[User:$1|$1]] ([[User talk:$1|kaozeal]]) goude ma vije bet kroget ganeoc'h kemmañ anezhi :\n: ''$2''\nKadarnait mar plij e fell deoc'h krouiñ ar pennad-mañ en-dro.",
        "confirmrecreate-noreason": "{{GENDER:$1|Diverket}} eo bet ar bajenn-mañ gant [[User:$1|$1]] ([[User talk:$1|kaozeal]]) goude ma vije bet kroget ganeoc'h kemmañ anezhi. Kadarnait e fell deoc'h adkrouiñ ar pennad-mañ e gwirionez.",
        "recreate": "Adkrouiñ",
+       "confirm-purge-title": "Spurjañ ar bajenn-mañ.",
        "confirm_purge_button": "Mat eo",
        "confirm-purge-top": "Spurjañ krubuilh ar bajenn-mañ?",
        "confirm-purge-bottom": "Spurjañ ur bajenn a a naeta ar grubuilh hag a redi ar stumm nevesañ da zont war wel.",
        "confirm-rollback-button": "Mat eo",
        "confirm-rollback-top": "Disteurel ar c'hemmoù graet er bajenn-mañ ?",
        "quotation-marks": "« $1 »",
-       "imgmultipageprev": "&larr; pajenn gent",
-       "imgmultipagenext": "pajenn war-lerc'h &rarr;",
+       "imgmultipageprev": " pajenn gent",
+       "imgmultipagenext": "pajenn war-lerc'h ",
        "imgmultigo": "Mont !",
        "imgmultigoto": "Mont d'ar bajenn $1",
        "img-lang-default": "(yezh dre ziouer)",
        "htmlform-user-not-valid": "Un anv implijer direizh eo <strong>$1</strong>.",
        "logentry-delete-delete": "Diverket eo bet ar bajenn $3 gant $1",
        "logentry-delete-delete_redir": "{{GENDER:$2|Friket}} eo bet an adkas $3 gant $1",
-       "logentry-delete-restore": "Assavet eo bet ar bajenn $3 gant $1",
+       "logentry-delete-restore": "{{GENDER:$2|Assavet eo bet}} ar bajenn $3 ($4) gant $1",
+       "logentry-delete-restore-nocount": "{{GENDER:$2|Asavet eo bet}} ar bajenn $3 gant $1",
+       "restore-count-revisions": "{{PLURAL:$1|1 stumm|$1 stumm}}",
        "restore-count-files": "{{PLURAL:$1|1 restr|$1 restr}}",
        "logentry-delete-event": "Kemmet eo bet gwelusted {{PLURAL:$5|un darvoud eus ar marilh|$5 darvoud eus ar marilh}} d'an $3 gant $1 : $4",
        "logentry-delete-revision": "{{GENDER:$2|Kemmet}} eo bet gwelusted {{PLURAL:$5|reizhadenn|$5 reizhadenn}} war ar bajenn $3 gant $1 : $4",
        "special-characters-group-thai": "Thai",
        "special-characters-group-lao": "Laoseg",
        "special-characters-group-khmer": "Khmer",
+       "special-characters-group-canadianaboriginal": "Aborijen kanadian",
        "special-characters-title-endash": "tired berr",
        "special-characters-title-emdash": "tired hir",
        "special-characters-title-minus": "arouezenn nemet",
        "mw-widgets-titleinput-description-redirect": "adkas war-zu $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Ouzhpennañ ur rummad...",
        "mw-widgets-usersmultiselect-placeholder": "Ouzhpennañ muioc'h...",
+       "date-range-from": "Adalek deiziañ an :",
+       "date-range-to": "Betek deiziad an :",
        "sessionmanager-tie": "N'hallet ket kevrediñ meur a seurt reked dilesañ : $1.",
        "sessionprovider-generic": "$1 estez",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "Eztez diazezet war toupinoù",
        "pageid": "ID ar bajenn $1",
        "rawhtml-notallowed": "N'hall an tikedennoù &lt;html&gt; bezañ implijet nemet er pajennoù normal.",
        "gotointerwiki": "Kuitaat {{SITENAME}}",
-       "gotointerwiki-invalid": "Direizh eo an titl merket"
+       "gotointerwiki-invalid": "Direizh eo an titl merket",
+       "gotointerwiki-external": "Emaoc'h war-nes kuitaat {{SITENAME}} evit mont da welet [[$2]] hag a zo ul lec'hienn all a-ziforc'h.\n\n[$1 Klikañ amañ evit kenderc'hel war $1].",
+       "undelete-cantedit": "N'hallit ket diziverkañ ar bajenn-mañ rak n'oc'h ket aotreet da gemmañ anezhi.",
+       "undelete-cantcreate": "N'hallit ket diziverkañ ar bajenn-mañ rak n'eus pajenn ebet gant an anv-mañ ha n'oc'h ket aotreet da grouiñ ar bajenn-mañ."
 }
index bac1f15..da9b6d7 100644 (file)
        "rcshowhideliu": "Drustírástí kárband áte $1",
        "rcshowhideanons": "Bidar kárband áte $1",
        "rcshowhidemine": "Kaná radbadal áte $1",
-       "rclinks": "Guđđíko $2 de teŧí maroká guđđíko $1 radbadal e nişán et<br />$3",
+       "rclinks": "Guđđíko $2 de teŧí maroká guđđíko $1 radbadal e nişán et",
        "diff": "fark",
        "hist": "lekav",
        "hide": "aodem kar",
index c8c2825..95272d5 100644 (file)
                        "Semso98",
                        "Matma Rex",
                        "Сербијана",
-                       "Asmen"
+                       "Asmen",
+                       "Obsuser"
                ]
        },
-       "tog-underline": "Podvuci veze:",
+       "tog-underline": "Podvlačenje linkova:",
        "tog-hideminor": "Sakrij manje izmjene u spisku nedavnih izmjena",
        "tog-hidepatrolled": "Sakrij patrolirane izmjene u nedavnim promjenama",
        "tog-newpageshidepatrolled": "Sakrij patrolirane stranice sa spiska novih stranica",
        "about": "O",
        "article": "Članak",
        "newwindow": "(otvara se u novom prozoru)",
-       "cancel": "Odustani",
+       "cancel": "Otkaži",
        "moredotdotdot": "Više...",
        "morenotlisted": "Ovaj spisak možda nije potpun.",
        "mypage": "Stranica",
        "anontalk": "Razgovor",
        "navigation": "Navigacija",
        "and": "&#32;i",
-       "qbfind": "Pronađi",
-       "qbbrowse": "Potraži",
-       "qbedit": "Uredi",
-       "qbpageoptions": "Opcije stranice",
-       "qbmyoptions": "Moje opcije",
        "faq": "ČPP",
-       "faqpage": "Project:NPP",
        "actions": "Akcije",
        "namespaces": "Imenski prostori",
        "variants": "Varijante",
        "tagline": "Izvor: {{SITENAME}}",
        "help": "Pomoć",
        "search": "Pretraga",
+       "search-ignored-headings": " #<!-- ne mijenjajte ništa u ovom redu --> <pre>\n# Zaglavlja koja će biti zanemarena pri pretrazi.\n# Izmjene koje ovdje napravite stupit će na snagu čim se stranica sa zaglavljem indeksira.\n# Možete forsirati da se stranica indeksira tako što ćete izvršiti prazno uređivanje.\n# Sintaksa je sljedeća:\n#   * Sve od znaka \"#\" pa do kraja reda je komentar.\n#   * Svaki red koji nije prazan jest tačan naziv koji će biti zanemaren, s tim da se razlikuju mala i velika slova i sve ostalo.\nReference\nVanjski linkovi\nTakođer pogledajte\n #</pre> <!-- ne mijenjajte ništa u ovom redu -->",
        "searchbutton": "Traži",
        "go": "Idi",
        "searcharticle": "Idi",
        "printableversion": "Za štampanje",
        "permalink": "Trajni link",
        "print": "Štampaj",
-       "view": "Pogled",
-       "view-foreign": "Vidi na $1",
+       "view": "Pogledaj",
+       "view-foreign": "Vidi na {{GRAMMAR:dativ|$1}}",
        "edit": "Uredi",
        "edit-local": "Uredi lokalni opis",
        "create": "Napravi",
        "create-local": "Dodaj lokalni opis",
-       "editthispage": "Uredite ovu stranicu",
-       "create-this-page": "Napravi ovu stranicu",
        "delete": "Obriši",
-       "deletethispage": "Obriši ovu stranicu",
-       "undeletethispage": "Povrati ovu stranicu",
        "undelete_short": "Vrati obrisanih {{PLURAL:$1|$1 izmjenu|$1 izmjene|$1 izmjena}}",
        "viewdeleted_short": "Pogledaj {{PLURAL:$1|jednu obrisanu izmjenu|$1 obrisane izmjene|$1 obrisanih izmjena}}",
        "protect": "Zaštiti",
        "protect_change": "promijeni",
-       "protectthispage": "Zaštiti ovu stranicu",
        "unprotect": "Promijeni zaštitu",
-       "unprotectthispage": "Promijeni zaštitu ove stranice",
        "newpage": "Nova stranica",
-       "talkpage": "Razgovor o stranici",
        "talkpagelinktext": "razgovor",
        "specialpage": "Posebna stranica",
        "personaltools": "Lični alati",
-       "articlepage": "Pogledaj članak",
        "talk": "Razgovor",
        "views": "Pregledi",
        "toolbox": "Alati",
        "tool-link-userrights": "Promijeni {{GENDER:$1|korisničke}} grupe",
        "tool-link-userrights-readonly": "Vidi {{GENDER:$1|korisničke}} grupe",
        "tool-link-emailuser": "Pošalji e-poruku {{GENDER:$1|korisniku|korisnici}}",
-       "userpage": "Pogledaj korisničku stranicu",
-       "projectpage": "Pogledaj stranicu projekta",
        "imagepage": "Pogledaj stranicu datoteke",
        "mediawikipage": "Pogledaj stranicu sa porukama",
        "templatepage": "Pogledaj stranicu za šablone",
        "redirectedfrom": "(Preusmjereno sa $1)",
        "redirectpagesub": "Preusmjerenje",
        "redirectto": "Preusmjerenje na:",
-       "lastmodifiedat": "Ova stranica je posljednji put izmijenjena na dan $1 u $2.",
+       "lastmodifiedat": "Ova stranica je posljednji put izmijenjena na datum $1 u $2.",
        "viewcount": "Ovoj stranici je pristupljeno {{PLURAL:$1|$1 put|$1 puta}}.",
        "protectedpage": "Zaštićena stranica",
        "jumpto": "Idi na:",
        "privacypage": "Project:Pravila o anonimnosti",
        "badaccess": "Greška pri odobrenju",
        "badaccess-group0": "Nije vam dozvoljeno izvršiti akciju koju ste zahtjevali.",
-       "badaccess-groups": "Akcija koju ste zahtjevali je ograničena na korisnike iz {{PLURAL:$2|ove grupe|jedne od grupa}}: $1.",
+       "badaccess-groups": "Radnja koju ste zahtijevali ograničena je samo korisnicima u {{PLURAL:$2|ovoj grupi|jednoj od ovih grupa}}: $1.",
        "versionrequired": "Potrebna je verzija $1 MediaWikija",
        "versionrequiredtext": "Potrebna je verzija $1 MediaWikija da bi se koristila ova strana. Pogledaj [[Special:Version|verziju]].",
        "ok": "U redu",
        "databaseerror-query": "Upit: $1",
        "databaseerror-function": "Funkcija: $1",
        "databaseerror-error": "Greška: $1",
+       "transaction-duration-limit-exceeded": "Da se izbjegne veliko zaostajanje podataka, transakcija je prekinuta zato što je trajanje zapisivanja ($1) prekoračilo ograničenje od $2 sekunde/-i.\nAko mijenjate mnogo stavki odjednom, uradite to u više navrata.",
        "laggedslavemode": "<strong>Upozorenje:</strong> Moguće je da stranica nije ažurirana.",
        "readonly": "Baza je zaključana",
        "enterlockreason": "Unesite razlog za zaključavanje, uključujući procjenu vremena otključavanja",
        "missingarticle-rev": "(izmjena#: $1)",
        "missingarticle-diff": "(Razlika: $1, $2)",
        "readonly_lag": "Baza podataka je zaključana dok se sekundarne baze podataka na serveru ne sastave sa glavnom.",
+       "nonwrite-api-promise-error": "HTTP-zaglavlje 'Promise-Non-Write-API-Action' je poslano, ali je upućeno zapisnom modulu API-a.",
        "internalerror": "Unutrašnja greška",
        "internalerror_info": "Interna greška: $1",
        "internalerror-fatal-exception": "Fatalna greška tipa \"$1\"",
        "virus-unknownscanner": "nepoznati anti-virus program:",
        "logouttext": "'''Sad ste odjavljeni.'''\n\nObratite pažnju da neke stranice mogu nastaviti da se prikazuju kao da ste još uvijek prijavljeni, dok ne očistite keš svog preglednika.",
        "cannotlogoutnow-title": "Odjava trenutno nije moguća",
+       "cannotlogoutnow-text": "Ne možete se odjaviti kad se koriste $1.",
        "welcomeuser": "Dobro došli, $1",
        "welcomecreation-msg": "Vaš nalog je napravljen.\nNe zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} podešavanja]].",
        "yourname": "Korisničko ime:",
        "cannotlogin-title": "Prijava nije moguća",
        "cannotlogin-text": "Prijava nija moguća.",
        "cannotloginnow-title": "Prijava trenutno nije moguća",
+       "cannotloginnow-text": "Ne možete se prijaviti kad se koriste $1.",
        "cannotcreateaccount-title": "Pravljenje računa nije moguće",
        "cannotcreateaccount-text": "Direktno pravljenje računa nije omogućeno na ovom wikiju.",
        "yourdomainname": "Vaš domen:",
        "password-change-forbidden": "Ne možete da promjenite lozinku na ovom wikiju.",
        "externaldberror": "Došlo je do greške pri vanjskoj autorizaciji baze podataka ili vam nije dopušteno osvježavanje Vašeg vanjskog korisničkog računa.",
-       "login": "Prijavi me",
+       "login": "Prijava",
        "login-security": "Potvrdite svoj identitet",
        "nav-login-createaccount": "Prijavi se / Registruj se",
        "logout": "Odjavi me",
-       "userlogout": "Odjavi me",
+       "userlogout": "Odjava",
        "notloggedin": "Niste prijavljeni",
        "userlogin-noaccount": "Nemate korisnički račun?",
        "userlogin-joinproject": "Pridružite se {{GRAMMAR:dativ|{{SITENAME}}}}",
        "usernameinprogress": "Račun za ovo korisničko ime već se pravi. Molimo sačekajte.",
        "userexists": "Korisničko ime je već u upotrebi.\nIzaberite drugo.",
        "loginerror": "Greška pri prijavljivanju",
-       "createacct-error": "Došlo je do greške pri otvaranju naloga",
+       "createacct-error": "Greška u pravljenju računa",
        "createaccounterror": "Ne mogu napraviti račun: $1",
        "nocookiesnew": "Korisnički račun je napravljen, ali niste prijavljeni.\n{{SITENAME}} koristi kolačiće (cookies) za prijavu korisnika.\nVama su kolačići onemogućeni.\nOmogućite ih pa se onda prijavite s novim korisničkim imenom i lozinkom.",
        "nocookieslogin": "{{SITENAME}} koristi kolačiće (''cookies'') za prijavu korisnika.\nVama su kolačići onemogućeni.\nOmogućite ih i pokušajte ponovo.",
        "changepassword-success": "Vaša lozinka je promijenjena.",
        "changepassword-throttled": "Previše puta ste se pokušali prijaviti.\nMolimo Vas da sačekate $1 prije nego što pokušate ponovo.",
        "botpasswords": "Lozinke botova",
+       "botpasswords-summary": "<em>Lozinke botova</em> daju pristup korisničkom računu preko API-a bez da se koriste podaci o prijavi glavnog računa. Korisnička prava mogla bi biti ograničena kada se prijavite na ovaj način.\n\nAko ne znate kako bi Vam ovo poslužilo, vjerovatno to ne biste trebali raditi. Niko nikada ne treba od Vas tražiti da napravite ovakve lozinke i da mu ih date.",
        "botpasswords-disabled": "Lozinke botova su onemogućene.",
        "botpasswords-no-central-id": "Da biste koristili lozinke botova, morate biti prijavljeni na središnji račun.",
        "botpasswords-existing": "Postojeće lozinke botova",
        "botpasswords-updated-title": "Ažurirana lozinka bota",
        "botpasswords-updated-body": "Ažurirana lozinka za bota \"$1\" korisnika \"$2\".",
        "botpasswords-deleted-title": "Obrisana lozinka bota",
+       "botpasswords-deleted-body": "Lozinka za bota \"$1\" korisnika \"$2\" je obrisana.",
+       "botpasswords-newpassword": "Nova lozinka za prijavu s računom <strong>$1</strong> je <strong>$2</strong>. <em>Zapišite je za kasnije.</em> <br> (Za stare botove koji zahtijevaju da ime za prijavu bude isto kao i eventualno korisničko ime, možete koristiti i <strong>$3</strong> kao korisničko ime, a <strong>$4</strong> kao lozinku.)",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider nije dostupan.",
+       "botpasswords-restriction-failed": "Ne možete se prijaviti zbog ograničenja lozinki za botove.",
+       "botpasswords-invalid-name": "Navedeno korisničko ime ne sadrži rastavni znak (\"$1\") za lozinke botova.",
+       "botpasswords-not-exist": "Korisnik \"$1\" nema lozinku bota \"$2\".",
        "resetpass_forbidden": "Lozinke ne mogu biti promijenjene",
        "resetpass_forbidden-reason": "Lozinke ne mogu biti promijenjene: $1",
        "resetpass-no-info": "Morate biti prijavljeni da biste pristupili ovoj stranici direktno.",
        "resetpass-submit-loggedin": "Promijeni lozinku",
-       "resetpass-submit-cancel": "Odustani",
+       "resetpass-submit-cancel": "Otkaži",
        "resetpass-wrong-oldpass": "Privremena ili trenutna lozinka nije validna.\nMožda ste već promijenili Vašu lozinku ili ste tražili novu privremenu lozinku.",
        "resetpass-recycled": "Molimo resetirajte vašu lozinku u nešto drugo od vaše trenutne lozinke.",
        "resetpass-temp-emailed": "Prijavili ste se sa privremenim kodom iz e-pošte.\nDa biste završili prijavljivanje morate postaviti novu lozinku ovdje:",
        "passwordreset-emailtext-user": "Korisnik $1 na {{SITENAME}} je zatražio podsjetnik o detaljima Vašeg računa za {{SITENAME}} ($4). Sljedeći {{PLURAL:$3|korisnički račun je|korisnički računi su}} povezani s ovom e-mail adresom:\n\n$2\n\n{{PLURAL:$3|Ova privremena šifra|Ove privremene šifre}} će isteći za {{PLURAL:$5|jedan dan|$5 dana}}.\nTrebate se prijaviti i odabrati novu šifru. Ako je neko drugi napravio ovaj zahtjev, ili ako ste se sjetili Vaše originalne šifre, a ne želite je više promijeniti, možete zanemariti ovu poruku i nastaviti koristiti staru šifru.",
        "passwordreset-emailelement": "Korisničko ime: \n$1\n\nPrivremena šifra: \n$2",
        "passwordreset-emailsentemail": "Ako je ova adresa e-pošte povezana s Vašim računom, podsjetnik o lozinci bit će Vam poslan na adresu e-pošte.",
+       "passwordreset-emailsentusername": "Ako je adresa e-pošte povezana s ovim korisničkim imenom, primit ćete e-poruku za resetiranje lozinke.",
        "passwordreset-nocaller": "Mora se navesti pozivalac",
        "passwordreset-nosuchcaller": "Pozivalac ne postoji: $1",
+       "passwordreset-ignored": "Resetiranje lozinke nije uspjelo. Možda poslužilac nije konfiguriran?",
        "passwordreset-invalidemail": "Neispravna adresa e-pošte",
+       "passwordreset-nodata": "Niste naveli ni korisničko ime, a ni adresu e-pošte",
        "changeemail": "Promjena ili uklanjanje e-adrese",
        "changeemail-header": "Ispunite sljedeći formular da biste promijenili adresu e-pošte. Ako želite ukloniti postojeću adresu e-pošte s vašeg korisničkog računa, pri ispunjavanju formulara, polje nove adrese e-pošte ostavite prazno.",
        "changeemail-no-info": "Morate biti prijavljeni za direktan pristup ovoj stranici.",
        "preview": "Pregled stranice",
        "showpreview": "Prikaži izgled",
        "showdiff": "Prikaži izmjene",
-       "blankarticle": "<strong>Upozorenje:</strong> Napravili ste praznu stranicu.\nAko ponovno kliknete \"{{int:savearticle}}\", napravit ćete praznu stranicu bez sadržaja.",
-       "anoneditwarning": "<strong>Upozorenje:</strong> Niste prijavljeni. \nVaša IP adresa će biti javno vidljiva ako napravite neku izmjenu. Ako se <strong>[$1 prijavite]</strong> ili <strong>[$2 napravite račun]</strong>, vaše izmjene će biti pripisane vašem korisničkom imenu, zajedno sa drugim pogodnostima.",
+       "blankarticle": "<strong>Upozorenje:</strong> Napravili ste praznu stranicu.\nAko ponovno kliknete \"$1\", napravit ćete praznu stranicu bez sadržaja.",
+       "anoneditwarning": "<strong>Upozorenje:</strong> Niste prijavljeni. Vaša IP-adresa bit će javno vidljiva ako napravite neku izmjenu. Ako se <strong>[$1 prijavite]</strong> ili <strong>[$2 napravite račun]</strong>, Vaše izmjene bit će pripisane Vašem korisničkom imenu, pored drugih pogodnosti.",
        "anonpreviewwarning": "''Niste prijavljeni. Nakon spremanja izmjena vaša IP adresa će biti zapisana u historiji uređivanja ove stranice.''",
-       "missingsummary": "<strong>Napomena:</strong> Niste unijeli sažetak izmjene.\nAko ponovo kliknete na \"{{int:savearticle}}\", Vaša izmjena će biti sačuvana bez sažetka.",
-       "selfredirect": "<strong>Upozorenje:</strong> Preusmjerili ste stranicu na samu sebe.\nMožda ste naveli pogrešan cilj preusmjeravanja ili ste uređivali pogrešnu stranicu.\nAko ponovno kliknete \"{{int:savearticle}}\", ipak će nastati preusmjerenje.",
+       "missingsummary": "<strong>Napomena:</strong> Niste unijeli sažetak izmjene.\nAko ponovo kliknete na \"$1\", Vaša izmjena će biti sačuvana bez sažetka.",
+       "selfredirect": "<strong>Upozorenje:</strong> Preusmjerili ste stranicu na samu sebe.\nMožda ste naveli pogrešan cilj preusmjeravanja ili ste uređivali pogrešnu stranicu.\nAko ponovno kliknete \"$1\", ipak će nastati preusmjerenje.",
        "missingcommenttext": "Unesite komentar ispod.",
-       "missingcommentheader": "<strong>Podsjetnik:</strong> Niste napisali temu za ovaj komentar.\nAko ponovo kliknete na \"{{int:savearticle}}\", vaša izmjena će biti sačuvana bez teme/naslova.",
+       "missingcommentheader": "<strong>Napomena:</strong> Niste napisali naslov ovog komentara.\nAko ponovo kliknete na \"$1\", Vaša izmjena će biti sačuvana bez naslova.",
        "summary-preview": "Pregled sažetka:",
        "subject-preview": "Pregled teme:",
        "previewerrortext": "Dogodila se greška prilikom prikazivanja vaših izmjena.",
        "blockedtitle": "Korisnik je blokiran",
        "blockedtext": "'''Vaše korisničko ime ili IP-adresa je blokirana.'''\n\nBlokada izvršena od strane $1.\nDati razlog je sljedeći: ''$2''.\n\n*Početak blokade: $8\n*Kraj perioda blokade: $6\n*Ime blokiranog korisnika: $7\n\nMožete kontaktirati sa $1 ili nekim drugim [[{{MediaWiki:Grouppage-sysop}}|administratorom]] da biste razgovarali o blokadi.\n\nNe možete koristiti opciju ''Pošalji e-mail korisniku'' osim ako niste unijeli e-mail adresu u [[Special:Preferences|Vaše postavke]].\nVaša trenutna IP-adresa je $3, a oznaka blokade je #$5.\nMolimo Vas da navedete gornje podatke pri zahtjevu za deblokadu.",
        "autoblockedtext": "Vaša IP-adresa automatski je blokirana jer ju je koristio drugi korisnik, a blokirao ju je $1.\nNaveden je sljedeći razlog:\n\n:''$2''\n\n* Početak blokade: $8\n* Kraj blokade: $6\n* Blokirani korisnik: $7\n\nMožete kontaktirati sa $1 ili nekim drugim iz grupe [[{{MediaWiki:Grouppage-sysop}}|administratora]] i zahtijevati da Vas deblokira.\n\nZapamtite da ne možete koristiti opciju \"pošalji e-mail ovom korisniku\" sve dok ne unesete validnu e-mail adresu pri registraciji u Vašim [[Special:Preferences|korisničkim postavkama]] i dok niste spriječeni (blokadom) da je koristite.\n\nVaša trenutna IP-adresa je $3, a ID blokade je $5.\nMolimo da navedete sve gore navedene detalje u zahtjevu za deblokadu.",
+       "systemblockedtext": "MediaWiki je automatski blokirao Vaše korisničko ime ili IP-adresu.\nDat je sljedeći razlog:\n\n:<em>$2</em>\n\n* Početak blokade: $8\n* Istek blokade: $6\n* Blokada je namijenjena za: $7\n\nVaša trenutna IP-adresa je $3.\nAko imate pitanja u vezi s blokadom, priložite sve gorenavedene pojedinosti.",
        "blockednoreason": "razlog nije naveden",
        "whitelistedittext": "Morate biti $1 da biste uređivali stranice.",
        "confirmedittext": "Morate potvrditi svoju adresu e-pošte prije nego počnete mijenjati stranice.\nPostavite i potvrdite svoju adresu e-pošte u [[Special:Preferences|korisničkim postavkama]].",
        "continue-editing": "Idi na područje uređivanja",
        "previewconflict": "Ovaj pregled prikazuje kako će tekst u gornjem polju izgledati ako odlučite sačuvati stranicu.",
        "session_fail_preview": "Izvinjavamo se! Nismo mogli obraditi Vašu izmjenu zbog gubitka podataka o prijavi.\n\nMožda ste odjavljeni. <strong>Provjerite jeste li prijavljeni i pokušajte ponovo</strong>.\nAko i dalje ne radi, pokušajte se [[Special:UserLogout|odjaviti]] i ponovo prijaviti i provjerite dozvoljava li Vaš preglednik kolačiće s ovog sajta.",
-       "session_fail_preview_html": "'''Žao nam je! Nismo mogli da obradimo vašu izmjenu zbog gubitka podataka.'''\n\n''Zbog toga što {{SITENAME}} ima omogućen izvorni HTML, predpregled je sakriven kao predostrožnost protiv JavaScript napada.''\n\n'''Ako ste pokušali da napravite pravu izmjenu, molimo pokušajte ponovo. Ako i dalje ne radi, pokušajte da se [[Special:UserLogout|odjavite]] i ponovo prijavite.'''",
+       "session_fail_preview_html": "Izvinjavamo se! Nismo mogli obraditi Vašu izmjenu zbog gubitka podataka sesije.\n\n<em>Budući da {{SITENAME}} ima omogućen izvorni HTML, pretpregled je sakriven kao mjera predostrožnosti protiv napada preko JavaScripta.</em>\n\n<strong>Ako ste pokušali napraviti pravu izmjenu, pokušajte ponovo.</strong>\nAko i dalje ne radi, pokušajte se [[Special:UserLogout|odjaviti]] i ponovo prijaviti i provjerite dozvoljava li Vaš preglednik kolačiće s ovog sajta.",
        "token_suffix_mismatch": "'''Vaša izmjena nije prihvaćena jer je Vaš web preglednik ubacio znakove interpunkcije u token uređivanja.\nIzmjena je odbačena da bi se spriječilo uništavanje teksta stranice.\nTo se događa ponekad kad korisite problematični anonimni proxy koji je baziran na web-u.'''",
        "edit_form_incomplete": "'''Neki dijelovi uređivačkog obrasca nisu došli do servera; dvaput provjerite da su vaše izmjene nepromjenjene i pokušajte ponovno.'''",
        "editing": "Uređujete $1",
        "editingsection": "Uređujete $1 (dio)",
        "editingcomment": "Uređujete $1 (novi odlomak)",
        "editconflict": "Sukob izmjena: $1",
-       "explainconflict": "Neko drugi je promijenio ovu stranicu otkad ste je Vi počeli mijenjati.\nGornje tekstualno polje sadrži tekst stranice koji trenutno postoji.\nVaše izmjene prikazane su u donjem tekstu.\nMorat ćete unijeti svoje promjene u postojeći tekst.\n'''Samo''' tekst u gornjem tekstualnom polju bit će sačuvan kad\nkliknete \"{{int:savearticle}}\".",
+       "explainconflict": "Neko drugi je promijenio ovu stranicu otkad ste je Vi počeli mijenjati.\nGornje tekstualno polje sadrži tekst stranice koji trenutno postoji.\nVaše izmjene prikazane su u donjem tekstu.\nMorat ćete unijeti svoje promjene u postojeći tekst.\n<strong>Samo</strong> tekst u gornjem tekstualnom polju bit će sačuvan kad\nkliknete \"$1\".",
        "yourtext": "Vaš tekst",
        "storedversion": "Sačuvana verzija",
        "nonunicodebrowser": "'''UPOZORENJE: Vaš preglednik ne podržava Unicode zapis znakova.\nMolimo Vas promijenite ga prije sljedećeg uređivanja članaka. Znakovi koji nisu po ASCII standardu će se u prozoru za izmjene pojaviti kao heksadecimalni kodovi.'''",
        "readonlywarning": "<strong>Upozorenje: Baza je zaključana zbog održavanja, tako da nećete moći da sačuvate svoje izmjene za sada.</strong>\nMožda želite da kopirate i nalijepite tekst u tekst editor i sačuvate ga za kasnije.\n\nAdministrator koji je zaključao bazu je naveo sljedeće objašnjenje: $1",
        "protectedpagewarning": "'''PAŽNJA: Ova stranica je zaključana tako da samo korisnici sa administratorskim privilegijama mogu da je mijenjaju.'''\nPosljednja stavka u zapisniku je prikazana ispod kao referenca:",
        "semiprotectedpagewarning": "'''Pažnja:''' Ova stranica je zaključana tako da je samo registrovani korisnici mogu uređivati.\nPosljednja stavka zapisnika je prikazana ispod kao referenca:",
-       "cascadeprotectedwarning": "<strong>Upozorenje:</strong> Ova stranica je zaključana tako da je samo administratori mogu mijenjati, jer je ona uključena u {{PLURAL:$1|ovu, lančanu povezanu, zaštićenu stranicu|sljedeće, prenosivo povezane, zaštićene stranice}}:",
+       "cascadeprotectedwarning": "<strong>Upozorenje:</strong> Ova stranica je zaključana tako da je samo korisnici sa [[Special:ListGroupRights|specifičnim pravima]] mogu mijenjati, jer je ona uključena u {{PLURAL:$1|ovu, lančanu povezanu, zaštićenu stranicu|sljedeće, prenosivo povezane, zaštićene stranice}}:",
        "titleprotectedwarning": "'''UPOZORENJE: Ova stranica je zaključana tako da su potrebna [[Special:ListGroupRights|posebna prava]] da se ona napravi.'''\nPosljednja stavka zapisnika je prikazana ispod kao referenca:",
        "templatesused": "{{PLURAL:$1|Šablon|Šabloni}} koji su upotrebljeni na ovoj stranici:",
        "templatesusedpreview": "{{PLURAL:$1|Šablon|Šabloni}} prikazani u ovom pregledu:",
        "templatesusedsection": "{{PLURAL:$1|Šablon|Šabloni}} korišteni u ovoj sekciji:",
        "template-protected": "(zaštićeno)",
-       "template-semiprotected": "(polu-zaštićeno)",
+       "template-semiprotected": "(poluzaštićeno)",
        "hiddencategories": "Ova stranica pripada u {{PLURAL:$1|$1 skrivenu kategoriju|$1 skrivene kategorije|$1 skrivenih kategorija}}:",
        "edittools": "<!-- Ovaj tekst će biti prikazan ispod formi za uređivanje i postavljanje. -->",
        "nocreatetext": "Na {{SITENAME}} je zabranjeno postavljanje novih stranica.\nMožete se vratiti i uređivati već postojeće stranice ili se [[Special:UserLogin|prijaviti ili otvoriti korisnički račun]].",
        "permissionserrors": "Greška pri odobrenju",
        "permissionserrorstext": "Nemate dopuštenje za ovu radnju iz {{PLURAL:$1|sljedećeg razloga|sljedećih razloga}}:",
        "permissionserrorstext-withaction": "Nemate dopuštenje da $2, iz {{PLURAL:$1|sljedećeg|sljedećih}} razloga:",
-       "contentmodelediterror": "Ne možete urediti ovu izmjenu jer je njen model sadržaja <code>$1</code>, a trenutni model sadržaja stranice je <code>$2</code>.",
+       "contentmodelediterror": "Ne možete urediti ovu izmjenu jer je njen model sadržaja <code>$1</code>, što se razlikuje od trenutnog modela sadržaja stranice <code>$2</code>.",
        "recreate-moveddeleted-warn": "<strong>Upozorenje: Ponovo pravite stranicu koja je prethodno obrisana.</strong>\n\nRazmotrite je li prikladno nastaviti s uređivanjem ove stranice.\nOvdje je naveden zapisnik brisanja i premještanja:",
        "moveddeleted-notice": "Ova stranica je obrisana.\nZapisnik brisanja i premještanja stranice je prikazan ispod kao referenca.",
        "moveddeleted-notice-recent": "Žao nam je, ova stranica je nedavno obrisana (u prethodna 24 sata).\nNiže su navedeni zapisnici brisanja i premještanja.",
        "content-json-empty-object": "Prazan objekat",
        "content-json-empty-array": "Prazan niz",
        "deprecated-self-close-category": "Stranice s neispravnim samozatvorenim HTML oznakama",
+       "deprecated-self-close-category-desc": "Stranica sadrži neispravne samozatvorene HTML oznake, kao što su <code>&lt;b/></code> ili <code>&lt;span/></code>. Njihovo funkcioniranje uskoro će se promijeniti da bude u skladu sa specifikacijama za HTML5, što znači da su zastarjeli i ne bi se trebali upotrebljavati u wikitekstu.",
        "duplicate-args-warning": "<strong>Upozorenje:</strong> [[:$1]] poziva na [[:$2]] sa više od jedne vrijednosti za parametar \"$3\". Koristit će se samo posljednja navedena vrijednost.",
        "duplicate-args-category": "Stranice sa istim argumentima kod poziva šablona",
        "duplicate-args-category-desc": "Stranica sadrži pozive šablona koji koriste argumente dvojnike, kao što su <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> ili <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "page_first": "prva",
        "page_last": "posljednja",
        "histlegend": "Odabir razlika: označite radio dugme verzija koje uspoređujete i pritistnite enter ili dugme na dnu. <br />\nObjašnjenje: <strong>({{int:cur}})</strong> = razlika sa trenutnom verzijom, <strong>({{int:last}})</strong> = razlika sa prethodnom verzijom, <strong>{{int:minoreditletter}}</strong> = mala izmjena.",
-       "history-fieldset-title": "Pretraga historije",
+       "history-fieldset-title": "Pretraga izmjena",
        "history-show-deleted": "Samo obrisane",
        "histfirst": "najstarije",
        "histlast": "najnovije",
        "rev-suppressed-unhide-diff": "Jedna od izmjena u ovom pregledu razlika je <strong>sakrivena</strong>.\nDetalje možete pronaći u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zapisniku sakrivanja].\nIpak možete [$1 vidjeti ovaj pregled razlika] ako želite nastaviti.",
        "rev-deleted-diff-view": "Jedna od izmjena u ovom pregledu razlika je <strong>obrisana</strong>.\nMožete pogledati razliku izmjena; detalje možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku brisanja].",
        "rev-suppressed-diff-view": "Jedna od izmjena u ovom pregledu razlika je <strong>sakrivena</strong>.\nMožete pogledati razliku izmjena; detalje možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku sakrivanja].",
-       "rev-delundel": "pokaži/sakrij",
+       "rev-delundel": "promijeni vidljivost",
        "rev-showdeleted": "prikaži",
        "revisiondelete": "Obriši/vrati izmjene",
        "revdelete-nooldid-title": "Nije unesena tačna revizija",
        "mergehistory-fail-no-change": "Spajanje historije nije spojilo nijednu izmjenu. Provjerite parametre stranice i vremena.",
        "mergehistory-fail-permission": "Nemate dopuštenje da spojite historiju.",
        "mergehistory-fail-self-merge": "Izvorna i odredišna stranica su iste.",
+       "mergehistory-fail-timestamps-overlap": "Izvorne izmjene se preklapaju ili dolaze nakon odredišnih izmjena.",
        "mergehistory-fail-toobig": "Ne može se izvršiti spajanje historije jer će se više premjestiti više od ograničenja od $1 {{PLURAL:$1|revizije|revizija}}.",
        "mergehistory-no-source": "Izvorna stranica $1 ne postoji.",
        "mergehistory-no-destination": "Odredišna stranica $1 ne postoji.",
        "revertmerge": "Vrati spajanje",
        "mergelogpagetext": "Ispod je spisak nedavnih spajanja historija stranica.",
        "history-title": "$1: Historija izmjena",
-       "difference-title": "Razlike između verzija stranice \"$1\"",
-       "difference-title-multipage": "Razlika između stranica \"$1\" i \"$2\"",
+       "difference-title": "$1: Razlike između izmjena",
+       "difference-title-multipage": "$1 i $2: Razlike između stranica",
        "difference-multipage": "(Razlika između stranica)",
        "lineno": "Red $1:",
        "compareselectedversions": "Uporedi označene verzije",
-       "showhideselectedversions": "Prikaži/sakrij izabrane izmjene",
+       "showhideselectedversions": "Promijeni vidljivost izabranih izmjena",
        "editundo": "poništi",
        "diff-empty": "(Nema razlike)",
        "diff-multi-sameuser": "({{PLURAL:$1|Nije prikazana jedna međuizmjena|Nisu prikazane $1 međuizmjene|Nije prikazano $1 međuizmjena}} istog korisnika)",
        "next-page": "sljedeća stranica",
        "prevn-title": "{{PLURAL:$1|Prethodni $1 rezultat|Prethodna $1 rezultata|Prethodnih $1 rezultata}}",
        "nextn-title": "{{PLURAL:$1|Sljedeći $1 rezultat|Sljedeća $1 rezultata|Sljedećih $1 rezultata}}",
-       "shown-title": "Pokaži $1 {{PLURAL:$1|rezultat|rezultata}} po stranici",
+       "shown-title": "Prikaži $1 {{PLURAL:$1|rezultat|rezultata}} po stranici",
        "viewprevnext": "Pogledaj ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''Postoji stranica pod nazivom \"[[:$1]]\" na ovoj wiki'''",
        "searchmenu-new": "<strong>Napravi stranicu \"[[:$1]]\" na ovoj wiki!</strong> {{PLURAL:$2|0=|Pogledajte također stranicu pronađenu vašom pretragom.|Pogledajte također i vaše rezultate pretrage.}}",
        "search-file-match": "(podudara se sadržaj datoteke)",
        "search-suggest": "Jeste li mislili: $1",
        "search-rewritten": "Prikazujem rezultate za $1. Umjesto toga potraži $2.",
-       "search-interwiki-caption": "Srodni projekti",
+       "search-interwiki-caption": "Rezultati s bratskih projekata",
        "search-interwiki-default": "$1 rezultati:",
        "search-interwiki-more": "(više)",
        "search-interwiki-more-results": "više rezultata",
        "search-nonefound": "Nisu pronađeni rezultati koji odgovaraju upitu.",
        "search-nonefound-thiswiki": "Nisu pronađeni rezultati koji odgovaraju upitu na ovom sajtu.",
        "powersearch-legend": "Napredna pretraga",
-       "powersearch-ns": "Pretraga u imenskim prostorima:",
+       "powersearch-ns": "Pretraži sljedeće imenske prostore:",
        "powersearch-togglelabel": "Označi:",
        "powersearch-toggleall": "Sve",
        "powersearch-togglenone": "Ništa",
        "prefs-help-prefershttps": "Ova podešavanja će stupiti na snagu pri sljedećoj prijavi.",
        "prefswarning-warning": "Napravili ste promjene u vašim postavkama koje još uvijek nisu sačuvane. Ako napustite ovu stranicu bez da pritisnete na \"$1\", postavke neće biti ažurirane.",
        "prefs-tabs-navigation-hint": "Savjet: Možete koristiti tipke sa lijevom i desnom strelicom za kretanje kroz kartice.",
-       "userrights": "Postavke korisničkih prava",
+       "userrights": "Korisnička prava",
        "userrights-lookup-user": "Izaberi korisnika",
        "userrights-user-editname": "Upišite korisničko ime:",
        "editusergroup": "Učitaj korisničke grupe",
        "saveusergroups": "Sačuvaj {{GENDER:$1|korisničke}} grupe",
        "userrights-groupsmember": "Član:",
        "userrights-groupsmember-auto": "Uključeni član od:",
-       "userrights-groups-help": "Možete promijeniti grupe kojima ovaj korisnik pripada:\n* Označeni kvadratić znači da je korisnik u toj grupi.\n* Neoznačeni kvadratić znači da korisnik nije u toj grupi.\n* Zvjezdica (*) označava da ne možete ukloniti grupu nakon što je dodate i obrnuto.\n* Taraba (#) označava da jedino možete odložiti vrijeme isteka ove grupe; ne možete ga ubrzati.",
+       "userrights-groups-help": "Možete promijeniti grupe kojima ovaj korisnik pripada:\n* Označeni kvadratić znači da je korisnik u toj grupi.\n* Neoznačeni kvadratić znači da korisnik nije u toj grupi.\n* Zvjezdica (*) označava da ne možete ukloniti grupu nakon što je dodate i obrnuto.\n* Taraba (#) označava da jedino možete odložiti vrijeme isteka članstva u ovoj grupi; ne možete ga ubrzati.",
        "userrights-reason": "Razlog:",
        "userrights-no-interwiki": "Nemate dopuštenja da uređujete korisnička prava na drugim wikijima.",
        "userrights-nodatabase": "Baza podataka $1 ne postoji ili nije lokalna baza.",
        "userrights-expiry-options": "1 dan:1 day,1 sedmica:1 week,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godina:1 year",
        "userrights-invalid-expiry": "Vrijeme isticanja grupe \"$1\" nije ispravno.",
        "userrights-expiry-in-past": "Vrijeme isticanja grupe \"$1\" je u prošlosti.",
-       "userrights-cannot-shorten-expiry": "Ne možete ubrzati vrijeme isteka grupe \"$1\". Jedino je mogu ubrzati korisnici koji mogu dodavati i uklanjati ovu grupu.",
+       "userrights-cannot-shorten-expiry": "Ne možete ubrzati vrijeme isteka članstva u grupi \"$1\". Jedino je mogu ubrzati korisnici koji mogu dodavati i uklanjati ovu grupu.",
        "userrights-conflict": "Sukob u izmjeni korisničkih prava! Molimo da razmotrite i potvrdite Vaše promjene.",
        "group": "Grupa:",
        "group-user": "Korisnici",
        "right-createpage": "Pravljenje stranica (izuzev stranica za razgovor)",
        "right-createtalk": "Pravljenje stranica za razgovor",
        "right-createaccount": "Pravljenje novih korisničkih računa",
+       "right-autocreateaccount": "Automatska prijava s vanjskim korisničkim računom",
        "right-minoredit": "Označavanje izmjena manjim",
        "right-move": "Premještanje stranica",
        "right-move-subpages": "Premještanje stranica s njihovim podstranicama",
        "right-applychangetags": "Primjenjivanje [[Special:Tags|oznaka]] na nečije izmjene",
        "right-changetags": "Dodavanje ili uklanjanje raznih [[Special:Tags|oznaka]] na pojedinačnim verzijama i unosima u zapisnicima",
        "right-deletechangetags": "Brisanje [[Special:Tags|oznaka]] iz baze podataka",
+       "grant-generic": "Zbir prava \"$1\"",
        "grant-group-page-interaction": "Upravljanje stranicama",
        "grant-group-file-interaction": "Rad s medijskim datotekama",
        "grant-group-watchlist-interaction": "Upravljanje Vašim spiskom praćenja",
        "action-createpage": "napravite ovu stranicu",
        "action-createtalk": "napravite ovu stranicu za razgovor",
        "action-createaccount": "napravite ovaj korisnički račun",
+       "action-autocreateaccount": "automatski napravite ovaj vanjski korisnički račun",
        "action-history": "gledate historiju ove stranice",
        "action-minoredit": "označite ovu izmjenu manjom",
        "action-move": "premjestite ovu stranicu",
        "recentchanges": "Nedavne izmjene",
        "recentchanges-legend": "Postavke nedavnih izmjena",
        "recentchanges-summary": "Na ovoj stranici možete pratiti nedavne izmjene.",
-       "recentchanges-noresult": "U zadanom vremenu nema promjena za zadane kriterije.",
+       "recentchanges-noresult": "Nema izmjena u zadanom vremenu za zadane kriterije.",
        "recentchanges-feed-description": "Na ovoj stranici možete pratiti nedavne izmjene.",
        "recentchanges-label-newpage": "Nova stranica",
        "recentchanges-label-minor": "Manja izmjena",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|spisak novih stranica]])",
        "recentchanges-submit": "Prikaži",
        "rcfilters-activefilters": "Aktivni filteri",
+       "rcfilters-quickfilters": "Sačuvane postavke filtera",
+       "rcfilters-quickfilters-placeholder-title": "Zasad nema sačuvanih linkova",
+       "rcfilters-quickfilters-placeholder-description": "Da sačuvate postavke filtera da biste ih kasnije ponovo upotrijebili, kliknite na ikonu markera pod \"Aktivni filterima\" ispod.",
+       "rcfilters-savedqueries-defaultlabel": "Sačuvani filteri",
+       "rcfilters-savedqueries-rename": "Preimenuj",
+       "rcfilters-savedqueries-setdefault": "Postavi kao predodređeno",
+       "rcfilters-savedqueries-remove": "Ukloni",
+       "rcfilters-savedqueries-new-name-label": "Naziv",
+       "rcfilters-savedqueries-apply-label": "Sačuvaj postavke",
+       "rcfilters-savedqueries-cancel-label": "Otkaži",
+       "rcfilters-savedqueries-add-new-title": "Sačuvaj trenutne postavke filtera",
        "rcfilters-restore-default-filters": "Vrati predodređene filtere",
        "rcfilters-clear-all-filters": "Ukloni sve filtere",
        "rcfilters-search-placeholder": "Filtriraj nedavne izmjene (prelistajte mogućnosti ili počnite kucati)",
        "rcfilters-invalid-filter": "Neispravan filter",
        "rcfilters-empty-filter": "Nema aktivnih filtera. Prikazani su svi doprinosi.",
        "rcfilters-filterlist-title": "Filteri",
+       "rcfilters-filterlist-whatsthis": "Šta je ovo?",
        "rcfilters-filterlist-feedbacklink": "Pružite povratne informacije o novim (beta) filterima",
        "rcfilters-highlightbutton-title": "Istakni rezultate",
        "rcfilters-highlightmenu-title": "Izaberite boju",
        "rcfilters-highlightmenu-help": "Izaberite boju da biste istaknuli ovo svojstvo",
        "rcfilters-filterlist-noresults": "Nema filtera",
+       "rcfilters-noresults-conflict": "Nije pronađen nijedan rezultat jer su kriteriji pretrage sukobljeni",
+       "rcfilters-state-message-fullcoverage": "Izabiranje svih filtera u grupi isto je kao da niste izabrali nijedan, tako da ovaj filter nema nikakvog efekta. Grupa sadrži: $1",
        "rcfilters-filtergroup-registration": "Registracija korisnika",
        "rcfilters-filter-registered-label": "Registrirani",
        "rcfilters-filter-registered-description": "Prijavljeni korisnici.",
        "rcfilters-filter-unregistered-label": "Anonimni",
        "rcfilters-filter-unregistered-description": "Neprijavljeni korisnici.",
-       "rcfilters-filtergroup-authorship": "Autorstvo izmjena",
-       "rcfilters-filter-editsbyself-label": "Vlastite izmjene",
-       "rcfilters-filter-editsbyself-description": "Izmjene koje ste Vi napravili.",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "Ovaj filter u sukobu je sa sljedećim {{PLURAL:$2|filterom|filterima}}, koji {{PLURAL:$2|pronalazi|pronalaze}} samo registrirane korisnike: $1",
+       "rcfilters-filtergroup-authorship": "Autorstvo doprinosa",
+       "rcfilters-filter-editsbyself-label": "Vaše izmjene",
+       "rcfilters-filter-editsbyself-description": "Vaši vlastiti doprinosi.",
        "rcfilters-filter-editsbyother-label": "Tuđe izmjene",
-       "rcfilters-filter-editsbyother-description": "Izmjene koje su napravili drugi korisnici (ne Vi).",
+       "rcfilters-filter-editsbyother-description": "Sve izmjene osim Vaših.",
        "rcfilters-filtergroup-userExpLevel": "Korisničko iskustvo (samo za registrirane)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Filteri za iskustvo pronalaze samo registrirane korisnike, tako da je ovaj filter u sukobu s filterom \"Anonimni\".",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filter \"Anonimni\" u sukobu je s jednim ili više filtera za iskustvo budući da oni pronalaze samo registrirane korisnike. Sukobljeni filteri označeni su pod \"Aktivnim filterima\" iznad.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Novajlije",
        "rcfilters-filter-user-experience-level-newcomer-description": "Manje od 10 izmjena i 4 dana aktivnosti.",
        "rcfilters-filter-user-experience-level-learner-label": "Učenici",
-       "rcfilters-filter-user-experience-level-learner-description": "Više dana aktivnosti i izmjena od \"novajlija\", ali manje od \"iskusnih korisnika\".",
+       "rcfilters-filter-user-experience-level-learner-description": "Više iskustva od \"novajlija\", ali manje od \"iskusnih korisnika\".",
        "rcfilters-filter-user-experience-level-experienced-label": "Iskusni korisnici",
        "rcfilters-filter-user-experience-level-experienced-description": "Preko 30 dana aktivnosti i 500 izmjena.",
        "rcfilters-filtergroup-automated": "Automatski doprinosi",
        "rcfilters-filter-bots-description": "Izmjene napravljene automatiziranim alatima.",
        "rcfilters-filter-humans-label": "Čovjek (ne bot)",
        "rcfilters-filter-humans-description": "Izmjene koje su napravili ljudi.",
+       "rcfilters-filtergroup-reviewstatus": "Pregledanost",
+       "rcfilters-filter-patrolled-label": "Patrolirano",
+       "rcfilters-filter-patrolled-description": "Izmjene označene patroliranim.",
+       "rcfilters-filter-unpatrolled-label": "Nepatrolirano",
+       "rcfilters-filter-unpatrolled-description": "Izmjene koje nisu označene patroliranim.",
        "rcfilters-filtergroup-significance": "Značaj",
        "rcfilters-filter-minor-label": "Manje izmjene",
        "rcfilters-filter-minor-description": "Izmjene koje je njihov autor označio manjim.",
        "rcfilters-filter-major-label": "Obične izmjene",
        "rcfilters-filter-major-description": "Izmjene koje nisu označene manjim.",
+       "rcfilters-filtergroup-watchlist": "Stranice na spisku praćenja",
+       "rcfilters-filter-watchlist-watched-label": "Na spisku praćenja",
+       "rcfilters-filter-watchlist-watched-description": "Izmjene na stranicama na Vašem spisku praćenja.",
+       "rcfilters-filter-watchlist-watchednew-label": "Nove izmjene na spisku praćenja",
+       "rcfilters-filter-watchlist-watchednew-description": "Izmjene na stranicama koje se nalaze na spisku praćenja, a koje još niste posjetili otkako su izmijenjene.",
+       "rcfilters-filter-watchlist-notwatched-label": "Nije na spisku praćenja",
+       "rcfilters-filter-watchlist-notwatched-description": "Sve osim izmjena na stranicama koje pratite.",
        "rcfilters-filtergroup-changetype": "Vrsta izmjene",
        "rcfilters-filter-pageedits-label": "Izmjene stranica",
-       "rcfilters-filter-pageedits-description": "Izmjene wiki sadržaja, rasprava, opisa kategorija....",
+       "rcfilters-filter-pageedits-description": "Izmjene wiki sadržaja, rasprava, opisa kategorija",
        "rcfilters-filter-newpages-label": "Stvaranje stranica",
        "rcfilters-filter-newpages-description": "Izmjene kojima se stvaraju nove stranice.",
        "rcfilters-filter-categorization-label": "Izmjene kategorija",
-       "rcfilters-filter-categorization-description": "Izmjene kojima se dodavaju ili uklanjaju kategorije.",
+       "rcfilters-filter-categorization-description": "Izmjene kojima se dodavaju ili uklanjaju stranice iz kategorija.",
        "rcfilters-filter-logactions-label": "Zapisane radnje",
-       "rcfilters-filter-logactions-description": "Administrativne radnje, pravljenje računa, brisanje stranica, postavljenje datoteka....",
+       "rcfilters-filter-logactions-description": "Administrativne radnje, pravljenje računa, brisanje stranica, postavljenje datoteka…",
+       "rcfilters-hideminor-conflicts-typeofchange": "Određene vrste izmjena ne mogu se označiti \"manjim\", tako da je ovaj filter u sukobu sa sljedećim filterima za vrstu izmjene: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Ovaj filter za vrstu izmjene u sukobu je s filterom za \"manje izmjene\". Izvjesne vrste izmjena ne mogu se označiti kao \"manje\".",
+       "rcfilters-filtergroup-lastRevision": "Posljednja izmjena",
+       "rcfilters-filter-lastrevision-label": "Posljednja izmjena",
+       "rcfilters-filter-lastrevision-description": "Najnovija izmjena na stranici.",
+       "rcfilters-filter-previousrevision-label": "Ranije izmjene",
+       "rcfilters-filter-previousrevision-description": "Sve izmjene koje nisu najnovije na stranici.",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:ne</strong> $1",
+       "rcfilters-view-tags": "Oznake",
        "rcnotefrom": "Ispod {{PLURAL:$5|je izmjena|su izmjene}} od <strong>$3, $4</strong> (do <strong>$1</strong> prikazano).",
+       "rclistfromreset": "Resetiraj izbor datuma",
        "rclistfrom": "Prikaži nove izmjene počev od $3 u $2",
        "rcshowhideminor": "$1 manje izmjene",
        "rcshowhideminor-show": "Prikaži",
        "rcshowhidecategorization": "$1 kategorizaciju stranica",
        "rcshowhidecategorization-show": "Prikaži",
        "rcshowhidecategorization-hide": "Sakrij",
-       "rclinks": "Prikaži posljednjih $1 izmjena u posljednjih $2 dana<br />$3",
+       "rclinks": "Prikaži posljednjih $1 izmjena u posljednjih $2 dana",
        "diff": "razl",
        "hist": "hist",
        "hide": "Sakrij",
        "rc_categories_any": "Bilo koju odabranu",
        "rc-change-size-new": "$1 {{PLURAL:$1|bajt|bajta|bajtova}} poslije izmjene",
        "newsectionsummary": "/* $1 */ novi odlomak",
-       "rc-enhanced-expand": "Pokaži detalje",
+       "rc-enhanced-expand": "Prikaži detalje",
        "rc-enhanced-hide": "Sakrij detalje",
        "rc-old-title": "prvobitno kreirano kao \"$1\"",
        "recentchangeslinked": "Srodne izmjene",
        "recentchangeslinked-title": "Srodne promjene sa \"$1\"",
        "recentchangeslinked-summary": "Ova posebna stranica prikazuje promjene na povezanim stranicama.\nStranice koje su na vašem [[Special:Watchlist|spisku praćenja]] su '''podebljane'''.",
        "recentchangeslinked-page": "Naslov stranice:",
-       "recentchangeslinked-to": "Pokaži promjene stranica koji su povezane sa datom stranicom",
+       "recentchangeslinked-to": "Prikaži izmjene stranica koji su povezane s datom stranicom",
        "recentchanges-page-added-to-category": "Stranica [[:$1]] dodana je u kategoriju",
        "recentchanges-page-added-to-category-bundled": "Stranica [[:$1]] dodana je u kategoriju, [[Special:WhatLinksHere/$1|ovu stranicu sadrže druge stranice]]",
        "recentchanges-page-removed-from-category": "Stranica [[:$1]] uklonjena je iz kategorije",
        "file-thumbnail-no": "Naziv datoteke počinje sa <strong>$1</strong>.\nIzgleda da se radi o smanjenoj slici ''(\"thumbnail\")''.\nAko imate ovu sliku u punoj rezoluciji, postavite nju; ili promijenite naslov ove datoteke.",
        "fileexists-forbidden": "Datoteka s ovim imenom već postoji i ne može biti prepisana.\nAko i dalje želite postaviti ovu datoteku, molimo Vas da se vratite i pošaljete ovu datoteku pod novim imenom. [[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "Datoteka s ovim imenom već postoji u zajedničkoj ostavi. Molimo Vas da se vratite i pošaljete ovu datoteku pod novim imenom. [[File:$1|thumb|center|$1]]",
+       "fileexists-no-change": "Datoteka je duplikat trenutne verzije <strong>[[:$1]]</strong>.",
+       "fileexists-duplicate-version": "Datoteka je duplikat {{PLURAL:$2|starije verzije|starijih verzija}} <strong>[[:$1]]</strong>.",
        "file-exists-duplicate": "Ova datoteka je dvojnik {{PLURAL:$1|slijedećoj datoteci|slijedećim datotekama}}:",
        "file-deleted-duplicate": "Datoteka koje je identična ovoj datoteci ([[:$1]]) je ranije bila obrisana. Trebate provjeriti historiju brisanja te datoteke prije nego što nastavite sa njenim ponovnim postavljanjem.",
        "file-deleted-duplicate-notitle": "Datoteka identična ovoj prethodno je obrisana i ime joj je sakriveno.\nTrebali biste pitati nekog ko može vidjeti podatke skrivenih datoteka da pregleda situaciju prije nego što ponovo postavite datoteku.",
        "uploaded-script-svg": "Pronađen skriptni element \"$1\" u postavljenoj SVG datoteci.",
        "uploaded-hostile-svg": "Pronađen nesiguran CSS u stilskom elementu postavljene SVG datoteke.",
        "uploaded-event-handler-on-svg": "Nije dozvoljeno postavljanje atributa koji kontroliraju događaje <code>$1=\"$2\"</code> u SVG datotekama.",
-       "uploaded-href-unsafe-target-svg": "Pronađen href sa nesigurnom metom <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
+       "uploaded-href-unsafe-target-svg": "Pronađen href s nesigurnim podacima: URI-meta <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
        "uploaded-animate-svg": "Pronađena \"animate\" oznaka koja možda mijenja href koristeći se \"from\" atributom <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
        "uploaded-setting-event-handler-svg": "Postavljanje kontrole događaja je blokirano, pronađeno <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
        "uploaded-setting-href-svg": "Blokirano je korištenje \"set\" oznake kako bi se dodao \"href\" atribut glavnom elementu.",
        "upload-copy-upload-invalid-domain": "Kopije postavljenih datoteka nisu dostupne sa ove domene.",
        "upload-dialog-disabled": "Onemogućeno je postavljanje datoteka pomoću ovog dijaloga.",
        "upload-dialog-title": "Postavi datoteku",
-       "upload-dialog-button-cancel": "Odustani",
+       "upload-dialog-button-cancel": "Otkaži",
        "upload-dialog-button-back": "Nazad",
        "upload-dialog-button-done": "Gotovo",
        "upload-dialog-button-save": "Sačuvaj",
        "backend-fail-read": "Ne mogu čitati datoteku $1.",
        "backend-fail-create": "Ne mogu napraviti datoteku $1.",
        "backend-fail-maxsize": "Ne mogu zapisati datoteku \"$1\" jer je veća od {{PLURAL:$2|$2 bajta|$2 bajta|$2 bajtova}}.",
-       "backend-fail-readonly": "Skladišna osnova \"$1\" je trenutno samo za čitanje. Navedeni razlog je: \"$2\"",
+       "backend-fail-readonly": "Skladišna osnova \"$1\" trenutno je samo za čitanje. Navedeni razlog je: <em>$2</em>",
        "backend-fail-synced": "Datoteka \"$1\" je u nekonzistentnom stanju u internom skladištu",
        "backend-fail-connect": "Ne mogu se povezati sa pozadinskim spremištem \"$1\".",
        "backend-fail-internal": "Došlo je do nepoznate greške u skladišnoj osnovi \"$1\".",
        "uploadstash-summary": "Ova stranica daje pristup datotekama koje su postavljene (ili su u postupku postavljanja) ali još nisu objavljene na wiki. Ove datoteke nisu vidljive nikom osim korisniku koji ih je postavio.",
        "uploadstash-clear": "Očisti sakrivene datoteke",
        "uploadstash-nofiles": "Nemate sakrivenih datoteka.",
-       "uploadstash-badtoken": "Izvršavanje ove akcije je bilo neuspješno, možda zato što su vaša uređivačka odobrenja istekla. Pokušajte ponovo.",
+       "uploadstash-badtoken": "Izvršavanje ove radnje nije uspjelo, možda zato što su Vaša uređivačka odobrenja istekla. Pokušajte ponovo.",
        "uploadstash-errclear": "Brisanje datoteka nije uspjelo.",
        "uploadstash-refresh": "Osvježi spisak datoteka",
+       "uploadstash-thumbnail": "pogledaj minijaturu",
+       "uploadstash-exception": "Ne mogu sačuvati datoteku u skladište ($1): \"$2\".",
        "invalid-chunk-offset": "Neispravna polazna tačka",
        "img-auth-accessdenied": "Pristup onemogućen",
        "img-auth-nopathinfo": "Nedostaje PATH_INFO.\nVaš server nije postavljen da daje ovu informaciju.\nMožda je zasnovan na CGI koji ne podržava img_auth.\nPogledajte https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
        "protectedtitlesempty": "Nijedan naslov članka trenutno nije zaštićen ovim parametrima.",
        "protectedtitles-submit": "Prikaži naslove",
        "listusers": "Spisak korisnika",
-       "listusers-editsonly": "Pokaži samo korisnike koji su uređivali",
+       "listusers-editsonly": "Prikaži samo korisnike koji su uređivali",
        "listusers-creationsort": "Sortiraj po datumu pravljenja",
        "listusers-desc": "Sortiraj u opadajućem redoslijedu",
        "usereditcount": "$1 {{PLURAL:$1|izmjena|izmjene}}",
        "querypage-disabled": "Ova posebna stranica je onemogućena jer smanjuje performanse.",
        "apihelp": "API pomoć",
        "apihelp-no-such-module": "Modul \"$1\" nije pronađen.",
+       "apisandbox": "API pješčanik",
+       "apisandbox-jsonly": "Upotreba API pješčanika zahtijeva JavaScript.",
+       "apisandbox-api-disabled": "API je onemogućen na ovom sajtu.",
        "apisandbox-unfullscreen": "Prikaži stranicu",
+       "apisandbox-submit": "Postavi zahtjev",
        "apisandbox-reset": "Očisti",
        "apisandbox-retry": "Pokušaj ponovo",
        "apisandbox-loading": "Učitavam podatke o API modulu \"$1\"...",
+       "apisandbox-load-error": "Došlo je do greške pri učitavanju informacija o API-modulu \"$1\": $2",
+       "apisandbox-no-parameters": "API modul nema parametara.",
        "apisandbox-examples": "Primjeri",
        "apisandbox-dynamic-parameters": "Dodatni parametri",
        "apisandbox-dynamic-parameters-add-label": "Dodaj parametar:",
        "apisandbox-submit-invalid-fields-title": "Neka polja nisu ispravna",
        "apisandbox-submit-invalid-fields-message": "Ispravite naznačena polja i pokušajte ponovo.",
        "apisandbox-results": "Rezultati",
+       "apisandbox-request-selectformat-label": "Prikaži zahtijevane podatke kao:",
+       "apisandbox-request-url-label": "URL zahtjeva:",
+       "apisandbox-request-time": "Vrijeme za zahtjev: {{PLURAL:$1|$1 ms}}",
+       "apisandbox-results-fixtoken": "Ispravi žeton i pošalji ponovo",
+       "apisandbox-results-fixtoken-fail": "Nisam uspio dobiti žeton \"$1\".",
+       "apisandbox-alert-page": "Polja na stranici su neispravna.",
+       "apisandbox-alert-field": "Vrijednost ovog polja je neispravna.",
        "apisandbox-continue": "Nastavi",
        "apisandbox-continue-clear": "Očisti",
+       "apisandbox-multivalue-all-namespaces": "$1 (svi imenski prostori)",
        "apisandbox-multivalue-all-values": "$1 (sve vrijednosti)",
        "booksources": "Književni izvori",
        "booksources-search-legend": "Traži književne izvore",
        "alllogstext": "Skupni prikaz svih dostupnih zapisnika sa {{GRAMMAR:genitiv|{{SITENAME}}}}.\nMožete suziti prikaz izabiranjem specifičnog zapisnika, korisničkog imena (razlikovati velika i mala slova) ili izmijenjenog članka (također treba razlikovati velika i mala slova).",
        "logempty": "Nema zatraženih stavki u zapisniku.",
        "log-title-wildcard": "Traži naslove koji počinju ovim tekstom",
-       "showhideselectedlogentries": "Pokaži/sakrij izabrane unose u zapisniku",
+       "showhideselectedlogentries": "Promijeni vidljivost izabranih unosa u zapisniku",
        "log-edit-tags": "Uredi oznake izabranih zapisničkih unosa",
        "checkbox-select": "Izaberi: $1",
        "checkbox-all": "Sve",
        "activeusers-intro": "Ovo je spisak korisnika koji su imali neku aktivnost u {{PLURAL:$1|posljednji $1 dan|posljednja $1 dana|posljednjih $1 dana}}.",
        "activeusers-count": "$1 {{PLURAL:$1|izmjena|izmjene|izmjena}} u {{PLURAL:$3|posljednji $3 dan|posljednja $3 dana|posljednjih $3 dana}}",
        "activeusers-from": "Prikaži korisnike koji počinju sa:",
+       "activeusers-groups": "Prikaži korisnike koji su članovi grupa:",
+       "activeusers-excludegroups": "Izuzmi korisnike koji su članovi grupa:",
        "activeusers-noresult": "Nije pronađen korisnik.",
        "activeusers-submit": "Prikaži aktivne korisnike",
        "listgrouprights": "Prava korisničkih grupa",
        "listgrouprights-namespaceprotection-namespace": "Imenski prostor",
        "listgrouprights-namespaceprotection-restrictedto": "Prava kojima se dozvoljava korisniku da uređuje",
        "listgrants": "Dozvole",
-       "listgrants-summary": "Ovo je spisak OAuth dozvola s odgovarajućim pravima uz svaku dozvolu s desne strane. Korisnici aplikacijama mogu odobriti da koriste njihov korisnički račun ali uz ograničena prava u zavisnosti od tog koju dozvolu im korisnik omogući. Međutim, aplikacija koja se koristi korisničkim računom ne može koristiti prava koja korisnik ne posjeduje. Moguće je da postoje [[{{MediaWiki:Listgrouprights-helppage}}|dodatne informacije]] o pojedinim pravima.",
+       "listgrants-summary": "Ovo je spisak dozvola s odgovarajućim pravima uz svaku dozvolu s desne strane. Korisnici aplikacijama mogu odobriti da koriste njihov korisnički račun, ali uz ograničena prava u zavisnosti od tog koju dozvolu im korisnik omogući. Međutim, aplikacija koja se koristi korisničkim računom ne može koristiti prava koja korisnik ne posjeduje. Moguće je da postoje [[{{MediaWiki:Listgrouprights-helppage}}|dodatne informacije]] o pojedinim pravima.",
        "listgrants-grant": "Dozvola",
        "listgrants-rights": "Prava",
        "trackingcategories": "Kategorije za praćenje",
-       "trackingcategories-summary": "Ova stranica prikazuje prateće kategorije koje MediaWiki softver automatski popunjava. Njihovi nazivi se mogu promijeniti izmjenom odgovarajućih sistemskih poruka u imenskom prostoru {{ns:8}}.",
+       "trackingcategories-summary": "Ova stranica prikazuje kategorije za praćenje koje softver MediaWiki automatski popunjava. Njihovi nazivi mogu se promijeniti izmjenom odgovarajućih sistemskih poruka u imenskom prostoru {{ns:8}}.",
        "trackingcategories-msg": "Praćenje kategorije",
        "trackingcategories-name": "Ime poruke",
        "trackingcategories-desc": "Kriterij uključenja kategorije",
+       "restricted-displaytitle-ignored": "Stranice sa zanemarenim naslovima za prikaz",
+       "restricted-displaytitle-ignored-desc": "Stranica sadrži <code><nowiki>{{DISPLAYTITLE}}</nowiki></code> koji je zanemaren zato što ne odgovara stvarnom naslovu stranice.",
        "noindex-category-desc": "Roboti ne indeksiraju stranicu jer u sebi ima magičnu riječ <code><nowiki>__NOINDEX__</nowiki></code>, te je u imenskom prostoru u kome ta oznaka nije dozvoljena.",
        "index-category-desc": "Stranica ima u sebi <code><nowiki>__INDEX__</nowiki></code> (te se nalazi u imenskom prostoru gdje je ta oznaka dozvoljena) pa je, samim tim, roboti indeksiraju.",
        "post-expand-template-inclusion-category-desc": "Veličina stranice prelazi <code>$wgMaxArticleSize</code> nakon proširenja svih šablona, te zbog toga neki šabloni nisu prošireni.",
        "unwatchthispage": "Prestani pratiti",
        "notanarticle": "Nije stranica sa sadržajem",
        "notvisiblerev": "Obrisana je posljednja izmjena drugog korisnika",
-       "watchlist-details": "Imate {{PLURAL:$1|$1 stranica|$1 stranice|$1 stranica}} na Vašem spisku praćenja, ne računajući posebno stranice za razgovor.",
+       "watchlist-details": "Imate {{PLURAL:$1|$1 stranicu|$1 stranice|$1 stranica}} na spisku praćenja, ne računajući posebno stranice za razgovor.",
        "wlheader-enotif": "Uključeno je obavještenje e-poštom.",
        "wlheader-showupdated": "Stranice koje su izmijenjene otkad ste ih posljednji put posjetili prikazane su <strong>podebljanim slovima</strong>.",
        "wlnote": "Ispod {{PLURAL:$1|je posljednja izmjena|su <strong>$1</strong> posljednje izmjene|su <strong>$1</strong> posljednjih izmjena}} načinjenih {{PLURAL:$2|posljednjeg sata|u posljednjih <strong>$2</strong> sata|u posljednjih <strong>$2</strong> sati}}, od $3, $4.",
        "enotif_body_intro_moved": "Stranicu $1 projekta {{SITENAME}} {{GENDER:$2|premjestio|premjestila}} je $PAGEEDITDATE {{GENDER:$2|korisnik|korisnica}} $2, pogledajte $3 za trenutnu verziju.",
        "enotif_body_intro_restored": "Stranicu $1 projekta {{SITENAME}} {{GENDER:$2|vratio|vratila}} je dana $PAGEEDITDATE {{GENDER:$2|korisnik|korisnica}} $2, pogledajte $3 za trenutnu verziju.",
        "enotif_body_intro_changed": "Stranicu $1 projekta {{SITENAME}} {{GENDER:$2|promijenio|promijenila}} je dana $PAGEEDITDATE {{GENDER:$2|korisnik|korisnica}} $2, pogledajte $3 za trenutnu verziju.",
-       "enotif_lastvisited": "Pogledajte $1 za sve izmjene od vaše posljednje posjete.",
-       "enotif_lastdiff": "Vidi $1 da pregledate ovu promjenu.",
+       "enotif_lastvisited": "Za sve izmjene od Vaše posljednje posjete, pogledajte $1",
+       "enotif_lastdiff": "Da vidite ovu izmjenu, pogledajte $1",
        "enotif_anon_editor": "anonimni korisnik $1",
        "enotif_body": "Poštovani $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nSažetak urednika: $PAGESUMMARY $PAGEMINOREDIT\n\nKontaktirajte urednika:\ne-pošta: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nNeće biti drugih obavještenja u slučaju daljnjih izmjena osim ako prijavljeni ponovno posjetite stranicu. Također možete poništiti oznake obavijesti za sve praćene stranice koje imate na vašem spisku praćenja.\n\nVaš prijateljski {{SITENAME}} sistem obavještavanja\n\n--\nZa promjenu vaših postavki email obavijesti, posjetite\n{{canonicalurl:{{#special:Preferences}}}}\n\nZa promjenu postavki vašeg praćenja, posjetite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nDa obrišete stranicu sa vašeg spiska praćenja, posjetite\n$UNWATCHURL\n\nPovratne informacije i daljnja pomoć:\n$HELPPAGE",
        "created": "napravljena",
        "editcomment": "Sažetak izmjene je bio: <em>$1</em>.",
        "revertpage": "Vraćene izmjene {{GENDER:$2|korisnika|korisnice}} [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]) na posljednju izmjenu {{GENDER:$1|korisnika|korisnice}} [[User:$1|$1]]",
        "revertpage-nouser": "Vraćene izmjene skrivenog korisnika na posljednju reviziju, koju je {{GENDER:$1|napravio|napravila}} [[User:$1|$1]]",
-       "rollback-success": "Vraćene izmjene {{GENDER:$2|korisnika|korisnice}} $1 na posljednju verziju {{GENDER:$2|korisnika|korisnice}} $2.",
+       "rollback-success": "Vraćene izmjene {{GENDER:$3|korisnika|korisnice}} $1 na posljednju verziju {{GENDER:$4|korisnika|korisnice}} $2.",
+       "rollback-success-notify": "Vraćenje izmjene korisnika $1;\nvraćeno na posljednju izmjenu korisnika $2. [$3 Prikaži izmjene]",
        "sessionfailure-title": "Greška u sesiji",
        "sessionfailure": "Izgleda da postoji problem sa vašom sesijom; ova akcija je otkazana kao prevencija protiv napadanja sesija. Kliknite \"back\" (''nazad'') i osvježite stranicu sa koje ste došli, i opet pokušajte.",
        "changecontentmodel": "Promijeni model sadržaja stranice",
        "changecontentmodel-emptymodels-title": "Nema dostupnih modela sadržaja",
        "changecontentmodel-emptymodels-text": "Model sadržaja stranice [[:$1]] ne može se pretvoriti ni u jednu drugu vrstu.",
        "log-name-contentmodel": "Zapisnik promjene modela sadržaja",
-       "log-description-contentmodel": "Događaji koji su povezani s modelom sadržaja stranice",
+       "log-description-contentmodel": "Ova stranica navodi izmjene modela sadržaja stranica, kao i stranice napravljene s modelom sadržaja koji se razlikuje od predodređenog.",
        "logentry-contentmodel-new": "$1 {{GENDER:$2|napravio|napravila}} je stranicu $3 s nestandardnim modelom sadržaja \"$5\"",
        "logentry-contentmodel-change": "$1 {{GENDER:$2|promijenio|promijenila}} je model sadržaja stranice $3 iz \"$4\" u \"$5\"",
        "logentry-contentmodel-change-revertlink": "vrati",
        "protect-cascadeon": "Ova stranica je trenutno zaštićena jer je uključena u {{PLURAL:$1|stranicu, koja ima|stranice, koje imaju}} uključenu prenosivu zaštitu.\nPromjene stepena zaštite ove stranice neće utjecati na prenosnu zaštitu.",
        "protect-default": "Dopušteno svim korisnicima",
        "protect-fallback": "Dozvolite samo korisnicima sa \"$1\" ovlastima/privilegijama",
-       "protect-level-autoconfirmed": "dopušteno samo automatski potvrđenim korisnicima",
-       "protect-level-sysop": "dopušteno samo administratorima",
+       "protect-level-autoconfirmed": "Dopušteno samo automatski potvrđenim korisnicima",
+       "protect-level-sysop": "Dopušteno samo administratorima",
        "protect-summary-desc": "[$1=$2] ($3)",
        "protect-summary-cascade": "prenosna zaštita",
        "protect-expiring": "ističe $1 (UTC)",
        "minimum-size": "Najmanja veličina",
        "maximum-size": "Najveća veličina:",
        "pagesize": "(bajta)",
-       "restriction-edit": "uređivanje",
-       "restriction-move": "premještanje",
+       "restriction-edit": "Uređivanje",
+       "restriction-move": "Premještanje",
        "restriction-create": "pravljenje",
        "restriction-upload": "Postavljanje",
        "restriction-level-sysop": "potpuno zaštićeno",
        "undeletehistorynoadmin": "Ova stranica je obrisana.\nRazlog za brisanje se nalazi ispod, zajedno s detaljima o korisniku koji je mijenjao stranicu prije brisanja.\nTekst obrisanih verzija dostupan je samo administratorima.",
        "undelete-revision": "Obrisana izmjena stranice $1 (dana $4, u $5) koju je {{GENDER:$3|napravio|napravila}} $3:",
        "undeleterevision-missing": "Nepoznata ili nedostajuća revizija.\nMožda ste unijeli pogrešan link, ili je revizija vraćena ili uklonjena iz arhive.",
+       "undeleterevision-duplicate-revid": "Ne mogu vratiti {{PLURAL:$1|jednu izmjenu|$1 izmjene|$1 izmjena}} jer se {{PLURAL:$1|njen|njihov}} <code>rev_id</code> već koristi.",
        "undelete-nodiff": "Nije pronađena ranija revizija.",
        "undeletebtn": "Vrati",
        "undeletelink": "pogledaj/vrati",
        "sp-contributions-uploads": "postavljanja",
        "sp-contributions-logs": "zapisnici",
        "sp-contributions-talk": "razgovor",
-       "sp-contributions-userrights": "postavke korisničkih prava",
+       "sp-contributions-userrights": "postavke {{GENDER:$1|korisničkih}} prava",
        "sp-contributions-blocked-notice": "{{GENDER:$1|Ovaj korisnik|Ova korisnica}} je trenutno {{GENDER:$1|blokiran|blokirana}}.\nPosljednju stavku zapisnika blokiranja možete pogledati ispod:",
        "sp-contributions-blocked-notice-anon": "Ova IP adresa je trenutno blokirana.\nPosljednje stavke zapisnika blokiranja možete pogledati ispod:",
        "sp-contributions-search": "Pretraži doprinose",
        "unblock": "Odblokiraj korisnika",
        "blockip": "Blokiraj {{GENDER:$1|korisnika|korisnicu}}",
        "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).",
-       "ipaddressorusername": "IP adresa ili korisničko ime:",
+       "blockiptext": "Koristite donji obrazac da biste uklonili prava pisanja određenoj IP-adresi ili korisničkom imenu.\nOvo bi se trebalo raditi samo da bi se spriječio vandalizam, i u skladu sa [[{{MediaWiki:Policy-url}}|smjernicama]].\nIspod upišite konkretan razlog (naprimjer, navedite koje su stranice vandalizirane).\nMožete blokirati IP-opsege koristeći sintaksu [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR-a]; najveći dozvoljeni opseg za IPv4 je /$1, a za IPv6 /$2.",
+       "ipaddressorusername": "IP-adresa ili korisničko ime:",
        "ipbexpiry": "Ističe:",
        "ipbreason": "Razlog:",
        "ipbreason-dropdown": "*Najčešći razlozi blokiranja\n**Netačne informacije\n**Uklanjanje sadržaja stranica\n**Postavljanje spam vanjskih linkova\n**Ubacivanje gluposti/grafita\n**Osobni napadi (ili napadačko ponašanje)\n**Čarapare (zloupotreba više korisničkih računa)\n**Neprihvatljivo korisničko ime",
-       "ipb-hardblock": "Onemogući prijavljene korisnike da uređuju sa ove IP adrese",
+       "ipb-hardblock": "Spriječi prijavljene korisnike da uređuju s ove IP-adrese",
        "ipbcreateaccount": "Spriječi pravljenje računa",
-       "ipbemailban": "Onemogući korisnika da šalje e-mail",
+       "ipbemailban": "Spriječi korisnika da šalje e-poštu",
        "ipbenableautoblock": "Automatski blokiraj posljednju IP-adresu koju je koristio ovaj korisnik i sve druge IP-adrese s kojih je pokušao uređivati",
        "ipbsubmit": "Blokiraj ovog korisnika",
        "ipbother": "Drugo vrijeme:",
        "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,beskonačno:infinite",
        "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 stranicu za razgovor dok je blokiran",
+       "ipb-disableusertalk": "Spriječi ovog korisnika da uređuje svoju stranicu za razgovor dok je blokiran",
        "ipb-change-block": "Ponovno blokiraj korisnika sa novim postavkama",
        "ipb-confirm": "Potvrdite blokiranje",
        "badipaddress": "Pogrešna IP adresa",
        "unblocked-id": "Blokada ID oznake $1 je uklonjena",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] je deblokiran.",
        "blocklist": "Blokirani korisnici",
+       "autoblocklist": "Autoblokovi",
+       "autoblocklist-submit": "Pretraži",
+       "autoblocklist-legend": "Ispis autoblokova",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Lokalni autoblok|Lokalni autoblokovi}}",
+       "autoblocklist-total-autoblocks": "Ukupno autoblokova: $1",
+       "autoblocklist-empty": "Spisak autoblokova je prazan.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Drugi autoblok|Drugi autoblokovi}}",
        "ipblocklist": "Blokirani korisnici",
        "ipblocklist-legend": "Traži blokiranog korisnika",
        "blocklist-userblocks": "Sakrij blokade računa",
        "block-log-flags-hiddenname": "korisničko ime sakriveno",
        "range_block_disabled": "Administratorska mogućnost da blokira grupe je isključena.",
        "ipb_expiry_invalid": "Neispravno vrijeme isteka.",
+       "ipb_expiry_old": "Vrijeme isteka je u prošlosti.",
        "ipb_expiry_temp": "Sakrivene blokade korisničkih imena moraju biti stalne.",
        "ipb_hide_invalid": "Ne može se onemogućiti ovaj račun; on ima više od {{PLURAL:$1|jedne izmjene|$1 izmjena}}.",
        "ipb_already_blocked": "\"$1\" je već blokiran",
        "proxyblockreason": "Vaša IP adresa je blokirana jer je ona otvoreni proxy.\nMolimo vas da kontaktirate vašeg davatelja internetskih usluga ili tehničku podršku i obavijestite ih o ovom ozbiljnom sigurnosnom problemu.",
        "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}}.\nNe možete napraviti račun",
+       "softblockrangesreason": "Anonimni doprinosi nisu dozvoljeni s Vaše IP-adrese ($1). Prijavite se.",
        "xffblockreason": "Blokirana je vaša ili IP adresa proxy servera koga koristite, koja se nalazi u zaglavlju X-Forwarded-For. Razlog za blokiranje je bio: $1",
        "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",
        "lockdbsuccesstext": "Baza podataka je zaključana.<br />\nNe zaboravite je [[Special:UnlockDB|otključati]] nakon što završite s održavanjem.",
        "unlockdbsuccesstext": "{{SITENAME}} baza podataka je otključana.",
        "lockfilenotwritable": "Datoteka zaključavanja baze je zaštićena za pisanje.\nAko želite otključati ili zaključati bazu, ova datoteka mora biti omogućena za pisanje od strane web servera.",
+       "databaselocked": "Baza podataka već je zaključana.",
        "databasenotlocked": "Baza podataka nije zaključana.",
        "lockedbyandtime": "(od $1 dana $2 u $3)",
        "move-page": "Premjesti $1",
        "move-page-legend": "Premjesti stranicu",
-       "movepagetext": "Korištenjem ovog formulara možete preimenovati stranicu, premještajući cijelu historiju na novo ime.\nČlanak pod starim imenom postat će stranica koja preusmjerava na članak pod novim imenom. \nMožete automatski izmijeniti preusmjerenje do izvornog naslova.\nAko se ne odlučite na to, provjerite [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|neispravna preusmjeravanja]].\nDužni ste provjeriti da svi linkovi i dalje nastave voditi na prave stranice.\n\nImajte na umu da članak '''neće''' biti premješten ako već postoji članak pod imenom na koje ga namjeravate preusmjeriti osim u slučaju stranice za preusmjeravanje koja nema nikakvih starih izmjena.\nTo znači da možete vratiti stranicu na prethodno mjesto ako pogriješite, ali ne možete zamijeniti postojeću stranicu.\n\n'''Pažnja!'''\nOvo može biti drastična i neočekivana promjena kad su u pitanju popularne stranice.\nMolimo da dobro razmislite prije no što premjestite stranicu.",
+       "movepagetext": "Korištenjem ovog formulara možete preimenovati stranicu, premještajući cijelu historiju na novo ime.\nČlanak pod starim imenom postat će stranica koja preusmjerava na članak pod novim imenom. \nMožete automatski izmijeniti preusmjerenje do izvornog naslova.\nAko se ne odlučite na to, provjerite [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|neispravna preusmjeravanja]].\nDužni ste provjeriti da svi linkovi i dalje nastave voditi na prave stranice.\n\nImajte na umu da članak <strong>neće</strong> biti premješten ako već postoji članak pod imenom na koje ga namjeravate preusmjeriti osim u slučaju stranice za preusmjeravanje koja nema nikakvih starih izmjena.\nTo znači da možete vratiti stranicu na prethodno mjesto ako pogriješite, ali ne možete zamijeniti postojeću stranicu.\n\n<strong>Napomena:</strong>\nOvo može biti drastična i neočekivana promjena kad su u pitanju popularne stranice.\nMolimo da dobro razmislite prije no što premjestite stranicu.",
        "movepagetext-noredirectfixer": "Koristeći donji obrazac, preimenovat ćete stranicu i premjestiti cijelu njenu historiju na novi naziv.\nStari naziv postat će preusmjerenje na novi naziv.\nMolimo da provjerite postoje li [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|nedovršena preusmjerenja]].\nVi ste za to odgovorni te morate provjeriti jesu li linkovi ispravni i vode li tamo kamo bi trebali voditi.\n\nImajte na umu da stranica '''neće''' biti premještena ako već postoji stranica s tim imenom, osim ako je prazna ili je preusmjerenje ili nema ranije historije.\nOvo znači da možete preimenovati stranicu nazad gdje je ranije bila preimenovana ako ste pogriješili, ali ne možete ponovo preimenovati postojeću stranicu.\n\n<strong>Napomena:</strong>\nImajte na umu da premještanje popularnog članka može biti\ndrastična i neočekivana promjena za korisnike; molimo da budete sigurni da ste shvatili posljedice prije no što nastavite.",
        "movepagetalktext": "Ako označite ovu kutijicu, odgovarajuća stranica za razgovor, ako postoji, automatski će biti premještena na novi naziv, osim ako već postoji sadržaj na odredišnoj stranici za razgovor.\n\nU tom slučaju, morat ćete ručno premjestiti ili prekopirati stranicu ako to želite.",
        "moveuserpage-warning": "<strong>Upozorenje:</strong> Premještate korisničku stranicu. Imajte u vidu da će samo stranica biti premještena, a sam korisnik <em>neće</em> biti preimenovan.",
        "import-nonewrevisions": "Nijedna revizija nije uvezena (ili su sve već prisutne ili su preskočene zbog greške).",
        "xml-error-string": "$1 na liniji $2, kolona $3 (bajt $4): $5",
        "import-upload": "Postavljanje XML podataka",
-       "import-token-mismatch": "Izgubljeni podaci sesije. Molimo pokušajte ponovno.",
+       "import-token-mismatch": "Izgubljeni podaci sesije.\n\nMožda ste odjavljeni. <strong>Provjerite jeste li još uvijek prijavljeni i pokušajte ponovo</strong>.\nAko i dalje ne radi, pokušajte se [[Special:UserLogout|odjaviti]] i ponovo prijaviti i provjerite dozvoljava li Vaš preglednik kolačiće s ovog sajta.",
        "import-invalid-interwiki": "Ne mogu uvesti iz navedenog wikija.",
        "import-error-edit": "Stranica \"$1\" nije uvezena jer vam nije dopušteno da je uređujete.",
        "import-error-create": "Stranica \"$1\" nije uvezena jer vam nije dozvoljeno da je napravite.",
        "tooltip-pt-preferences": "{{GENDER:|Vaše}} postavke",
        "tooltip-pt-watchlist": "Spisak stranica koje pratite",
        "tooltip-pt-mycontris": "Spisak {{GENDER:|Vaših}} doprinosa",
+       "tooltip-pt-anoncontribs": "Spisak izmjena napravljenih s ove IP-adrese",
        "tooltip-pt-login": "Predlažemo da se prijavite, ali nije obvezno.",
+       "tooltip-pt-login-private": "Morate se prijaviti da biste koristili ovaj wiki",
        "tooltip-pt-logout": "Odjavi me",
        "tooltip-pt-createaccount": "Ohrabrujemo vas da otvorite nalog i prijavite se, međutim to nije obavezno",
        "tooltip-ca-talk": "Razgovor o sadržaju",
        "tooltip-watchlistedit-raw-submit": "Ažuriraj spisak praćenja",
        "tooltip-recreate": "Ponovno pravljenje stranice iako je već brisana",
        "tooltip-upload": "Započni postavljanje",
-       "tooltip-rollback": "\"Vrati\" vraća izmjene posljednjeg uređivača jednim klikom",
+       "tooltip-rollback": "\"Vrati\" vraća izmjene posljednjeg korisnika jednim klikom",
        "tooltip-undo": "Dugme \"poništi\" poništava ovu izmjenu, te otvara stranicu u režimu za uređivanje s pregledom izmjena koje će biti poništene. Također omogućava unošenje razloga poništenja u sažetak.",
        "tooltip-preferences-save": "Sačuvaj podešavanja",
        "tooltip-summary": "Unesite kratki sažetak",
        "anonymous": "{{PLURAL:$1|Anonimni korisnik|$1 anonimna korisnika|$1 anonimnih korisnika}} projekta {{SITENAME}}",
        "siteuser": "{{SITENAME}} {{GENDER:$2|korisnik|korisnica}} $1",
        "anonuser": "{{SITENAME}} anonimni korisnik $1",
-       "lastmodifiedatby": "Ovu stranicu posljednji je put {{GENDER:$4|izmijenio|izmijenila}} $3 dana $1 u $2.",
+       "lastmodifiedatby": "Ovu stranicu posljednji je put {{GENDER:$4|uredio|uredila}} $3 na datum $1 u $2.",
        "othercontribs": "Bazirano na radu od strane korisnika $1.",
        "others": "ostali",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|korisnik|korisnica}}|korisnici}} $1",
        "newimages-summary": "Ova posebna stranica prikazuje nedavno postavljene datoteke.",
        "newimages-legend": "Filter",
        "newimages-label": "Ime datoteke (ili dio imena):",
-       "newimages-showbots": "Pokaži datoteke koje su poslali botovi",
+       "newimages-user": "IP-adresa ili korisničko ime",
+       "newimages-newbies": "Prikaži doprinose samo novih računa",
+       "newimages-showbots": "Prikaži datoteke koje su postavili botovi",
        "newimages-hidepatrolled": "Sakrij patrolirana postavljanja",
+       "newimages-mediatype": "Vrsta datoteke:",
        "noimages": "Nema ništa.",
        "gallery-slideshow-toggle": "Uključi/isključi sličice",
        "ilsubmit": "Traži",
        "hours": "{{PLURAL:$1|$1 sat|$1 sata|$1 sati}}",
        "days": "{{PLURAL:$1|$1 dan|$1 dana|$1 dana}}",
        "weeks": "{{PLURAL:$1|$1 sedmica}}",
-       "months": "{{PLURAL:$1|$1 mjesec|$1 mjeseci}}",
+       "months": "{{PLURAL:$1|$1 mjesec|$1 mjeseca|$1 mjeseci}}",
        "years": "{{PLURAL:$1|$1 godina|$1 godine|$1 godina}}",
        "ago": "prije $1",
        "just-now": "upravo sad",
        "exif-gpsdop": "Preciznost mjerenja",
        "exif-gpsspeedref": "Jedinica brzine",
        "exif-gpsspeed": "Brzina GPS prijemnika",
-       "exif-gpstrackref": "Referenca za smijer kretanja",
-       "exif-gpstrack": "Smijer kretanja",
-       "exif-gpsimgdirectionref": "Referenca za smijer slike",
-       "exif-gpsimgdirection": "Smijer slike",
+       "exif-gpstrackref": "Referenca za pravac kretanja",
+       "exif-gpstrack": "Pravac kretanja",
+       "exif-gpsimgdirectionref": "Referenca za pravac slike",
+       "exif-gpsimgdirection": "Pravac slike",
        "exif-gpsmapdatum": "Upotrijebljeni podaci geoloških mjerenja",
        "exif-gpsdestlatituderef": "Referenca za širinu odredišta",
        "exif-gpsdestlatitude": "Širina odredišta",
        "exif-compression-4": "CCITT Grupa 4 faks šifriranje",
        "exif-copyrighted-true": "Zaštićeno autorskim pravima",
        "exif-copyrighted-false": "Status autorskih prava nije postavljen",
+       "exif-photometricinterpretation-1": "Crno-bijelo (crna je 0)",
        "exif-unknowndate": "Nepoznat datum",
        "exif-orientation-1": "Normalna",
        "exif-orientation-2": "Horizontalno preokrenuto",
        "exif-objectcycle-p": "Samo navečer",
        "exif-objectcycle-b": "I ujutro i navečer",
        "exif-gpsdirection-t": "Stvarni pravac",
-       "exif-gpsdirection-m": "Magnetski smijer",
+       "exif-gpsdirection-m": "Magnetski pravac",
        "exif-ycbcrpositioning-1": "Centrirano",
        "exif-ycbcrpositioning-2": "Uporedo",
        "exif-dc-contributor": "Autori",
        "confirmemail_body_changed": "Neko, vjerovatno Vi, je sa IP adrese $1\nje promijenio adresu e-pošte računa \"$2\" na ovu adresu za {{SITENAME}}.\n\nDa potvrdite da ovaj nalog stvarno pripada Vama i da reaktivirate mogućnosti e-pošte na {{SITENAME}}, otvorite ovaj link u Vašem pregledniku:\n\n$3\n\nAko ovaj račun *ne* pripada Vama, pratite ovaj link da prekinete odobravanje adrese e-pošte:\n\n$5\n\nOvaj kod za potvrdu će isteći u $4.",
        "confirmemail_body_set": "Neko, vjerovatno Vi, je sa IP adrese $1\npostavio adresu e-pošte računa \"$2\" na ovu adresu za {{SITENAME}}.\n\nDa potvrdite da ovaj račun stvarno pripada Vama i da aktivirate mogućnosti e-pošte na {{SITENAME}}, otvorite ovaj link u Vašem pregledniku:\n\n$3\n\nAko ovaj račun *ne* pripada Vama, pratite ovaj link da prekinete odobravanje adrese e-pošte:\n\n$5\n\nOvaj kôd za potvrdu će isteći u $4.",
        "confirmemail_invalidated": "Potvrda e-mail adrese otkazana",
-       "invalidateemail": "Odustani od e-mail potvrde",
+       "invalidateemail": "Otkazivanje potvrde e-pošte",
+       "notificationemail_subject_changed": "Registrirana adresa e-pošte na {{GRAMMAR:dativ|{{SITENAME}}}} je promijenjena",
+       "notificationemail_subject_removed": "Registrirana adresa e-pošte na {{GRAMMAR:dativ|{{SITENAME}}}} je uklonjena",
+       "notificationemail_body_changed": "Neko, vjerovatno Vi, s IP-adrese $1,\npromijenio je adresu e-pošte računa \"$2\" na \"$3\" na {{GRAMMAR:dativ|{{SITENAME}}}}.\n\nAko ovo niste bili Vi, odmah se obratite administratoru sajta.",
+       "notificationemail_body_removed": "Neko, vjerovatno Vi, s IP-adrese $1,\nuklonio je adresu e-pošte računa \"$2\" na {{GRAMMAR:dativ|{{SITENAME}}}}.\n\nAko ovo niste bili Vi, odmah se obratite administratoru sajta.",
        "scarytranscludedisabled": "[Međuwiki umetanje je isključeno]",
        "scarytranscludefailed": "[Neuspješno preusmjerenje šablona na $1]",
        "scarytranscludefailed-httpstatus": "[Preuzimanje šablona nije uspjelo za $1: HTTP $2]",
        "confirmrecreate-noreason": "{{GENDER:$1|Korisnik|Korisnica}} [[User:$1|$1]] ([[User talk:$1|razgovor]]) {{GENDER:$1|obrisao|obrisala}} je ovu stranicu nakon što ste je počeli uređivati. Potvrdite da stvarno želite ponovo napraviti ovu stranicu.",
        "recreate": "Ponovno napravi",
        "unit-pixel": "px",
+       "confirm-purge-title": "Osvježi ovu stranicu",
        "confirm_purge_button": "U redu",
        "confirm-purge-top": "Da li želite obrisati keš ove stranice?",
        "confirm-purge-bottom": "Ispražnjava keš stranice i prikazuje najsvježiju verziju.",
        "confirm-rollback-top": "Ukloniti izmjene na ovoj stranici?",
        "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← prethodna stranica",
-       "imgmultipagenext": "slijedeća stranica →",
+       "imgmultipagenext": "sljedeća stranica →",
        "imgmultigo": "Idi!",
        "imgmultigoto": "Idi na stranicu $1",
        "img-lang-default": "(podrazumijevani jezik)",
        "version-libraries-description": "Opis",
        "version-libraries-authors": "Autori",
        "redirect": "Preusmjerenje na datoteku, korisnika, stranicu, izmjenu ili zapisnik",
-       "redirect-summary": "Ova posebna stranica preusmjerava na datoteku (datog imena), stranicu (date oznake izmjene) ili korisničku stranicu (datog numeričkog identifikatora korisnika). Oznake se koriste na sljedeći način: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] ili [[{{#Special:Redirect}}/user/101]].",
+       "redirect-summary": "Ova posebna stranica preusmjerava na datoteku (datog imena), stranicu (date oznake izmjene), korisničku stranicu (datog numeričkog identifikatora korisnika) ili unos u zapisniku (datog numeričkog identifikatora zapisnika). Oznake se koriste na sljedeći način: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] ili [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Idi",
        "redirect-lookup": "Tip vrijednosti:",
        "redirect-value": "Vrijednost:",
        "redirect-page": "ID stranice",
        "redirect-revision": "Verzija stranice",
        "redirect-file": "Naziv datoteke",
+       "redirect-logid": "ID unosa",
        "redirect-not-exists": "Vrijednost nije pronađena",
        "fileduplicatesearch": "Pretraga duplikata",
        "fileduplicatesearch-summary": "Pretraga za duplim datotekama na bazi njihove haš vrijednosti.",
        "specialpages-group-users": "Korisnici i korisnička prava",
        "specialpages-group-highuse": "Najčešće korištene stranice",
        "specialpages-group-pages": "Spiskovi stranica",
-       "specialpages-group-pagetools": "Alati stranice",
+       "specialpages-group-pagetools": "Alati za stranice",
        "specialpages-group-wiki": "Podaci i alati",
        "specialpages-group-redirects": "Preusmjeravanje posebnih stranica",
        "specialpages-group-spam": "Alati za spam",
        "tag-filter-submit": "Filter",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|oznaka|oznake}}]]: $2)",
        "tag-mw-contentmodelchange": "promjena modela sadržaja",
+       "tag-mw-contentmodelchange-description": "Izmjena kojom se [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel mijenja model sadržaja] stranice",
        "tags-title": "Oznake",
        "tags-intro": "Ova stranica prikazuje spisak oznaka koje softver može staviti na svaku izmjenu i njihovo značenje.",
        "tags-tag": "Naziv oznake",
        "tags-source-extension": "Definirano softverom",
        "tags-source-manual": "Ručno postavili korisnici ili botovi",
        "tags-source-none": "Više se ne koristi",
-       "tags-edit": "uređivanje",
+       "tags-edit": "uredi",
        "tags-delete": "obriši",
        "tags-activate": "aktiviraj",
        "tags-deactivate": "dekativiraj",
        "tags-create-reason": "Razlog:",
        "tags-create-submit": "Napravi",
        "tags-create-no-name": "Morate navesti ime oznake.",
-       "tags-create-invalid-chars": "Nazivi oznaka ne smiju sadržavati zareze (<code>,</code>) ni kose crte (<code>/</code>).",
+       "tags-create-invalid-chars": "Nazivi oznaka ne smiju sadržavati zareze (<code>,</code>), uspravne (<code>|</code>) ni kose crte (<code>/</code>).",
        "tags-create-invalid-title-chars": "Nazivi oznaka ne smiju sadržavati znakove koje se ne mogu koristiti u naslovima stranica.",
        "tags-create-already-exists": "Oznaka \"$1\" već postoji.",
        "tags-create-warnings-above": "{{PLURAL:$2|Dogodila se sljedeća greška|Dogodile su se sljedeće greške}} pri stvaranju oznake \"$1\":",
        "tags-deactivate-not-allowed": "Nije moguće deaktivirati oznaku \"$1\".",
        "tags-deactivate-submit": "Deaktiviraj",
        "tags-apply-no-permission": "Nemate dopuštenja da dodate izmjenske oznake zajedno s vašim promjenama.",
+       "tags-apply-blocked": "Ne možete primjenjivati oznake za promjenu uz svoje izmjene dok {{GENDER:$1|ste}} blokirani.",
        "tags-apply-not-allowed-one": "Nije dozvoljeno da se oznaka \"$1\" ručno dodaje.",
        "tags-apply-not-allowed-multi": "{{PLURAL:$2|Sljedeća oznaka ne dozvoljava da se ručno doda|Sljedeće oznake ne dozvoljavaju da se ručno dodaju}}: $1",
        "tags-update-no-permission": "Nemate dopuštenje da dodate ili uklonite izmjenske oznake sa zasebnih verzija ili zapisničkih unosa.",
+       "tags-update-blocked": "Ne možete dodavati niti uklanjati oznake za promjenu dok {{GENDER:$1|ste}} blokirani.",
        "tags-update-add-not-allowed-one": "Nije dozvoljeno da se oznaka \"$1\" ručno dodaje.",
        "tags-update-add-not-allowed-multi": "{{PLURAL:$2|Sljedeća oznaka ne dozvoljava da se ručno doda|Sljedeće oznake ne dozvoljavaju da se ručno dodaju}}: $1",
        "tags-update-remove-not-allowed-one": "Oznaka \"$1\" se ne može ručno ukloniti.",
        "htmlform-user-not-valid": "<strong>$1</strong> nije ispravno korisničko ime.",
        "logentry-delete-delete": "$1 {{GENDER:$2|obrisao|obrisala}} je stranicu $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|obrisao|obrisala}} je preusmjerenje $3 prepisivanjem",
-       "logentry-delete-restore": "$1 {{GENDER:$2|vratio|vratila}} je stranicu $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|vratio|vratila}} je stranicu $3 ($4)",
+       "logentry-delete-restore-nocount": "$1 {{GENDER:$2|vratio|vratila}} je stranicu $3",
+       "restore-count-revisions": "{{PLURAL:$1|1 izmjena|$1 izmjene|$1 izmjena}}",
+       "restore-count-files": "{{PLURAL:$1|1 datoteka|$1 datoteke|$1 datoteka}}",
        "logentry-delete-event": "$1 {{GENDER:$2|promijenio|promijenila}} je vidljivost {{PLURAL:$5|unosa|$5 unosa}} u zapisniku na $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|promijenio|promijenila}} je vidljivost {{PLURAL:$5|izmjene|$5 izmjene|$5 izmjena}} na stranici $3: $4",
        "logentry-delete-event-legacy": "$1 je {{GENDER:$2|promijenio|promijenila}} vidljivost događaja u evidenciji na $3",
        "feedback-bugcheck": "Odlično! Molimo provjerite da se ne radi o nekom [$1 poznatom \"bugu\"].",
        "feedback-bugnew": "Provjereno. Prijavi novu grešku",
        "feedback-bugornote": "Ako ste spremni detaljno opisati tehnički problem, molimo [$1 prijavite \"bug\" (grešku)].\nInače, možete ispuniti jednostavan obrazac ispod. Vaš komentar bit će dodan na stranicu \"[$3 $2]\" zajedno s Vašim korisničkim imenom.",
-       "feedback-cancel": "Odustani",
+       "feedback-cancel": "Otkaži",
        "feedback-close": "Završeno",
        "feedback-external-bug-report-button": "Podnesi tehnički zadatak",
        "feedback-dialog-title": "Pošalji povratne informacije",
        "api-error-stashfailed": "Unutrašnja greška: server nije mogao da spremi privremenu datoteku.",
        "api-error-unknown-warning": "Nepoznato upozorenje: \"$1\".",
        "api-error-unknownerror": "Nepoznata greška: \"$1\"",
-       "duration-seconds": "$1 {{PLURAL:$1|sekunda|sekunde}}",
+       "duration-seconds": "$1 {{PLURAL:$1|sekunda|sekunde|sekundi}}",
        "duration-minutes": "$1 {{PLURAL:$1|minut|minute|minuta}}",
        "duration-hours": "$1 {{PLURAL:$1|sat|sata|sati}}",
        "duration-days": "$1 {{PLURAL:$1|dan|dana}}",
        "limitreport-walltime-value": "$1 {{PLURAL:$1|sekunda|sekunde|sekundi}}",
        "limitreport-ppvisitednodes": "Broj predprocesiranih posjećenih nodova",
        "limitreport-ppgeneratednodes": "Broj predprocesiranih generiranih nodova",
-       "limitreport-postexpandincludesize": "Nakon proširenja navedi i veličinu",
+       "limitreport-postexpandincludesize": "Uključena veličina nakon proširenja",
        "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|bajt|bajta|bajtova}}",
-       "limitreport-templateargumentsize": "Veličina stavke šablona",
+       "limitreport-templateargumentsize": "Veličina argumenata šablona",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|bajt|bajta|bajtova}}",
        "limitreport-expansiondepth": "Najveća dubina proširenja",
-       "limitreport-expensivefunctioncount": "Broj funkcije ekspenzivnog analizatora",
+       "limitreport-expensivefunctioncount": "Broj složenih funkcija raščlanjivača",
        "expandtemplates": "Proširi šablone",
        "expand_templates_intro": "Ova posebna stranica uzima neki tekst i proširuje sve šablone u njemu rekurzivno.\nOna također proširuje parserske funkcije poput\n<code><nowiki>{{</nowiki>#language:…}}</code> i varijable poput\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>. U principu proširuje gotovo sve između dvostrukih zagrada.",
        "expand_templates_title": "Naslov konteksta, za {{FULLPAGENAME}} itd.:",
        "expand_templates_remove_comments": "Ukloni komentare",
        "expand_templates_remove_nowiki": "Onemogući oznake <nowiki> u rezultatima",
        "expand_templates_generate_xml": "Prikaži XML stablo parsera",
-       "expand_templates_generate_rawhtml": "Pokaži izvorni HTML",
+       "expand_templates_generate_rawhtml": "Prikaži izvorni HTML",
        "expand_templates_preview": "Pregled",
-       "expand_templates_preview_fail_html": "<em>Pošto stranica {{SITENAME}} ima uključen sirov HTML prikaz, te je bilo gubitka u podacima sesije, pregled je sakriven kao mjera predostrožnosti protiv JavaScript napada.</em>\n\n<strong>Ako je ovo ispravan pokušaj pretpregleda, molim da ponovo pokušate.</strong>\nAko i dalje ne bude radilo, pokušajte se [[Special:UserLogout|odjaviti]], pa ponovo prijaviti.",
+       "expand_templates_preview_fail_html": "<em>Budući da {{SITENAME}} ima uključen sirov HTML, te je bilo gubitka u podacima sesije, pregled je sakriven kao mjera predostrožnosti protiv napada preko JavaScripta.</em>\n\n<strong>Ako je ovo ispravan pokušaj pretpregleda, pokušajte ponovo.</strong>\nAko i dalje ne bude radilo, pokušajte se [[Special:UserLogout|odjaviti]], pa ponovo prijaviti i provjerite dozvoljava li Vaš preglednik kolačiće s ovog sajta.",
        "expand_templates_preview_fail_html_anon": "<em>Pošto stranica {{SITENAME}} ima uključen sirov HTML prikaz, a vi se niste prijavili, pregled je sakriven kao mjera predostrožnosti protiv JavaScript napada.</em>\n\n<strong>Ako je ovo ispravan pokušaj pretpregleda, molim da se [[Special:UserLogin|prijavite]] i pokušate ponovo.</strong>",
+       "expand_templates_input_missing": "Morate upisati nekakav tekst.",
        "pagelanguage": "Promijeni jezik stranice",
        "pagelang-name": "Stranica",
        "pagelang-language": "Jezik",
        "json-error-inf-or-nan": "Jedna ili više NAN ili INF vrijednosti u iznosu koga treba enkodirati",
        "json-error-unsupported-type": "Data je vrijednost vrste koja se ne može enkodirati",
        "headline-anchor-title": "Veza do ovog odjeljka",
-       "special-characters-group-latin": "latinica",
-       "special-characters-group-latinextended": "proširena latinica",
+       "special-characters-group-latin": "Latinica",
+       "special-characters-group-latinextended": "Proširena latinica",
        "special-characters-group-ipa": "IPA",
-       "special-characters-group-symbols": "simboli",
-       "special-characters-group-greek": "grčki",
-       "special-characters-group-greekextended": "prošireni grčki",
-       "special-characters-group-cyrillic": "Ä\87irilica",
-       "special-characters-group-arabic": "arapski",
-       "special-characters-group-arabicextended": "prošireni arapski",
+       "special-characters-group-symbols": "Simboli",
+       "special-characters-group-greek": "Grčki",
+       "special-characters-group-greekextended": "Prošireni grčki",
+       "special-characters-group-cyrillic": "Ä\86irilica",
+       "special-characters-group-arabic": "Arapski",
+       "special-characters-group-arabicextended": "Prošireni arapski",
        "special-characters-group-persian": "Perzijski",
-       "special-characters-group-hebrew": "hebrejski",
-       "special-characters-group-bangla": "bengalski",
-       "special-characters-group-tamil": "tamilski",
-       "special-characters-group-telugu": "telugu",
-       "special-characters-group-sinhala": "sinhalski",
-       "special-characters-group-gujarati": "gudžarati",
-       "special-characters-group-devanagari": "devanagari",
-       "special-characters-group-thai": "tajlandski",
-       "special-characters-group-lao": "laoski",
-       "special-characters-group-khmer": "kmerski",
-       "special-characters-group-canadianaboriginal": "kanadski domorodni",
+       "special-characters-group-hebrew": "Hebrejski",
+       "special-characters-group-bangla": "Bengalski",
+       "special-characters-group-tamil": "Tamilski",
+       "special-characters-group-telugu": "Telugu",
+       "special-characters-group-sinhala": "Sinhalski",
+       "special-characters-group-gujarati": "Gudžarati",
+       "special-characters-group-devanagari": "Devanagari",
+       "special-characters-group-thai": "Tajlandski",
+       "special-characters-group-lao": "Laoski",
+       "special-characters-group-khmer": "Kmerski",
+       "special-characters-group-canadianaboriginal": "Kanadski domorodni",
        "special-characters-title-endash": "crtica",
        "special-characters-title-emdash": "duga crta",
        "special-characters-title-minus": "minus",
-       "mw-widgets-dateinput-no-date": "Nikakav datum nije izabran",
+       "mw-widgets-dateinput-no-date": "Datum nije izabran",
+       "mw-widgets-mediasearch-input-placeholder": "Pretraži multimediju",
        "mw-widgets-mediasearch-noresults": "Nema rezultata.",
        "mw-widgets-titleinput-description-new-page": "stranica još ne postoji",
        "mw-widgets-titleinput-description-redirect": "preusmjerava na $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Dodaj kategoriju...",
        "mw-widgets-usersmultiselect-placeholder": "Dodaj više...",
+       "date-range-from": "Od datuma:",
+       "date-range-to": "Do datuma:",
        "sessionmanager-tie": "Ne možete istovremeno koristiti nekoliko vrsta provjera autentičnosti: $1.",
+       "sessionprovider-generic": "$1 sesije",
+       "sessionprovider-mediawiki-session-cookiesessionprovider": "sesije s kolačićima",
+       "sessionprovider-nocookies": "Moguće je da su kolačići isključeni. Ako je tako, uključite ih i počnite ponovo.",
        "randomrootpage": "Slučajna korijenska stranica",
        "log-action-filter-block": "Vrsta blokiranja:",
        "log-action-filter-contentmodel": "Vrsta izmjene modela sadržaja:",
        "log-action-filter-suppress-reblock": "Skrivanje korisnika ponovnim blokiranjem",
        "log-action-filter-upload-upload": "Nova datoteka",
        "log-action-filter-upload-overwrite": "Izmjena postojeće datoteke",
+       "authmanager-authn-not-in-progress": "Verifikacija nije u toku ili je došlo do gubitka podataka o sesiji. Počnite ispočetka.",
+       "authmanager-authn-no-primary": "Pruženi akreditivi ne mogu se verificirati.",
+       "authmanager-authn-no-local-user": "Pruženi akreditivi nisu povezani ni s jednim korisnikom na ovom wikiju.",
+       "authmanager-authn-no-local-user-link": "Pruženi su ispravni akreditivi, ali nisu povezani ni s jednim korisnikom na ovom wikiju. Prijavite se na neki drugi način ili napravite novi korisnički račun, što će Vam dati mogućnost da povežete prethodne akreditive na novi račun.",
+       "authmanager-authn-autocreate-failed": "Automatsko stvaranje lokalnog računa nije uspjelo: $1",
        "authmanager-create-disabled": "Onemogućeno pravljenje računa.",
        "authmanager-create-from-login": "Popunite polja da biste napravili račun.",
        "authmanager-create-not-in-progress": "Pravljenje računa nije u toku ili su podaci o sesiji izgubljeni. Počnite ispočetka.",
        "authmanager-authplugin-setpass-failed-title": "Promjena lozinke nije uspjela",
+       "authmanager-authplugin-setpass-failed-message": "Dodatak za autentifikaciju odbio je promjenu lozinke.",
+       "authmanager-authplugin-create-fail": "Dodatak za autentifikaciju odbio je pravljenje računa.",
+       "authmanager-authplugin-setpass-denied": "Dodatak za autentifikaciju ne dozvoljava mijenjanje lozinki.",
        "authmanager-authplugin-setpass-bad-domain": "Neispravna domena.",
        "authmanager-autocreate-noperm": "Automatsko pravljenje računa nije dozvoljeno.",
        "authmanager-autocreate-exception": "Automatsko pravljenje računa privremeno je onemogućeno zbog prijašnjih greški.",
        "authmanager-userdoesnotexist": "Korisnički račun \"$1\" nije registriran.",
+       "authmanager-username-help": "Korisničko ime za verifikaciju.",
+       "authmanager-password-help": "Lozinka za verifikaciju.",
+       "authmanager-domain-help": "Domen za vanjsku verifikaciju.",
+       "authmanager-retype-help": "Ponovite lozinku (za potvrdu).",
+       "authmanager-email-label": "E-pošta",
        "authmanager-email-help": "Adresa e-pošte",
        "authmanager-realname-label": "Pravo ime",
        "authmanager-realname-help": "Korisnikovo pravo ime",
+       "authmanager-provider-password": "Verifikacija lozinkom",
+       "authmanager-provider-password-domain": "Verifikacija lozinkom i domenom",
        "authmanager-provider-temporarypassword": "Privremena lozinka",
+       "authprovider-confirmlink-request-label": "Računi koji se trebaju povezati",
+       "authprovider-confirmlink-success-line": "$1: Uspješno povezano.",
+       "authprovider-confirmlink-failed": "Povezivanje računa nije uspjelo u potpunosti: $1",
+       "authprovider-confirmlink-ok-help": "Nastavi nakon prikazivanja poruka za neuspješno povezivanje.",
        "authprovider-resetpass-skip-label": "Preskoči",
+       "authprovider-resetpass-skip-help": "Preskoči resetiranje lozinke.",
+       "authform-nosession-login": "Verifikacija je uspješna, ali Vaš preglednik ne može \"zapamtiti\" da ste prijavljeni.\n\n$1",
+       "authform-nosession-signup": "Račun je napravljen, ali Vaš preglednik ne može \"zapamtiti\" da ste prijavljeni.\n\n$1",
+       "authform-newtoken": "Nedostaje žeton. $1",
+       "authform-notoken": "Nedostaje žeton",
+       "authform-wrongtoken": "Pogrešan žeton",
        "specialpage-securitylevel-not-allowed-title": "Nije dozvoljeno",
        "specialpage-securitylevel-not-allowed": "Žao nam je, nije Vam dozvoljeno korištenje ove stranice jer ne možemo potvrditi Vaš identitet.",
+       "authpage-cannot-login": "Ne mogu započeti prijavu.",
+       "authpage-cannot-login-continue": "Ne mogu nastaviti s prijavom. Najvjerovatnije Vam je istekla sesija.",
+       "authpage-cannot-create": "Ne mogu započeti stvaranje računa.",
+       "authpage-cannot-create-continue": "Ne mogu nastaviti s stvaranjem računa. Najvjerovatnije Vam je istekla sesija.",
+       "authpage-cannot-link": "Ne mogu započeti spajanje računa.",
+       "authpage-cannot-link-continue": "Ne mogu nastaviti sa spajanjem računa. Najvjerovatnije Vam je istekla sesija.",
        "cannotauth-not-allowed-title": "Pristup odbijen",
        "cannotauth-not-allowed": "Nije Vam dozvoljeno da koristite ovu stranicu",
        "changecredentials": "Promjena akreditiva",
        "changecredentials-submit": "Promijeni akreditive",
        "changecredentials-invalidsubpage": "$1 nije ispravna vrsta akreditiva.",
+       "changecredentials-success": "Vaši akreditivi su promijenjeni.",
+       "removecredentials": "Uklanjanje akreditiva",
+       "removecredentials-submit": "Ukloni akreditive",
+       "removecredentials-invalidsubpage": "$1 nije ispravna vrsta akreditiva.",
+       "removecredentials-success": "Vaši akreditivi su uklonjeni.",
+       "credentialsform-provider": "Vrsta akreditiva:",
        "credentialsform-account": "Naziv računa:",
        "cannotlink-no-provider-title": "Nema spojivih računa",
        "cannotlink-no-provider": "Nema spojivih računa.",
        "linkaccounts-submit": "Spoji račune",
        "unlinkaccounts": "Razdvajanje računa",
        "unlinkaccounts-success": "Račun je razdvojen.",
+       "userjsispublic": "Napomena: Podstranice s JavaScriptom ne bi trebale sadržavati povjerljive podatke budući da ih drugi korisnici mogu vidjeti.",
+       "usercssispublic": "Napomena: Podstranice s CSS-om ne bi trebale sadržavati povjerljive podatke budući da ih drugi korisnici mogu vidjeti.",
        "restrictionsfield-badip": "Neispravna IP-adresa ili opseg: $1",
        "restrictionsfield-label": "Dozvoljeni IP-opsezi:",
+       "restrictionsfield-help": "Jedna IP-adresa ili CIDR-opseg po redu. Da omogućite sve, koristite:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "izmjena $1",
-       "pageid": "ID stranice $1"
+       "pageid": "ID stranice $1",
+       "rawhtml-notallowed": "&lt;html&gt; oznake ne mogu se koristiti van normalnih stranica.",
+       "gotointerwiki": "Napuštate {{GRAMMAR:akuzativ|{{SITENAME}}}}",
+       "gotointerwiki-invalid": "Navedeni naslov nije ispravan.",
+       "gotointerwiki-external": "Napuštate {{GRAMMAR:akuzativ|{{SITENAME}}}} da biste posjetili zasebni veb-sajt [[$2]].\n\n<strong>[$1 Idi na $1]</strong>",
+       "undelete-cantedit": "Ne možete vratiti ovu stranicu jer Vam nije dozvoljeno da je uređujete.",
+       "undelete-cantcreate": "Ne možete vratiti stranicu jer ne postoji stranica s tim nazivom i nije Vam dozvoljeno da je napravite.",
+       "pagedata-title": "Podaci o stranici",
+       "pagedata-bad-title": "Neispravan naslov: $1."
 }
index f2602f3..8ae9a42 100644 (file)
        "anontalk": "Discussió",
        "navigation": "Navegació",
        "and": "&#32;i",
-       "qbfind": "Cerca",
-       "qbbrowse": "Navega",
-       "qbedit": "Modifica",
-       "qbpageoptions": "Opcions de pàgina",
-       "qbmyoptions": "Pàgines pròpies",
        "faq": "PMF",
-       "faqpage": "Project:PMF",
        "actions": "Accions",
        "namespaces": "Espais de noms",
        "variants": "Variants",
        "edit-local": "Modifica la descripció local",
        "create": "Crea",
        "create-local": "Afegeix una descripció local",
-       "editthispage": "Modifica la pàgina",
-       "create-this-page": "Crea aquesta pàgina",
        "delete": "Elimina",
-       "deletethispage": "Elimina la pàgina",
-       "undeletethispage": "Desfés l'eliminació d'aquesta pàgina",
        "undelete_short": "Restaura {{PLURAL:$1|l'edició eliminada|$1 edicions eliminades}}",
        "viewdeleted_short": "Mostra {{PLURAL:$1|una edició eliminada|$1 edicions eliminades}}",
        "protect": "Protegeix",
        "protect_change": "canvia",
-       "protectthispage": "Protegeix aquesta pàgina",
        "unprotect": "Desprotegeix",
-       "unprotectthispage": "Desprotegeix aquesta pàgina",
        "newpage": "Pàgina nova",
-       "talkpage": "Discussió",
        "talkpagelinktext": "discussió",
        "specialpage": "Pàgina especial",
        "personaltools": "Eines de l'usuari",
-       "articlepage": "Mostra la pàgina",
        "talk": "Discussió",
        "views": "Vistes",
        "toolbox": "Eines",
        "tool-link-userrights": "Canvia els grups de l'{{GENDER:$1|usuari|usuària}}",
        "tool-link-userrights-readonly": "Mostra els grups d'{{GENDER:$1|usuari}}",
        "tool-link-emailuser": "Envia un missatge electrònic a l'{{GENDER:$1|usuari|usuària}}",
-       "userpage": "Visualitza la pàgina d'usuari",
-       "projectpage": "Visualitza la pàgina del projecte",
        "imagepage": "Visualitza la pàgina del fitxer",
        "mediawikipage": "Visualitza la pàgina de missatges",
        "templatepage": "Visualitza la pàgina de plantilla",
        "redirectedfrom": "(S'ha redirigit des de: $1)",
        "redirectpagesub": "Pàgina de redirecció",
        "redirectto": "Redirigeix a:",
-       "lastmodifiedat": "Darrera modificació de la pàgina: $1 a les $2.",
+       "lastmodifiedat": "La pàgina va ser modificada per darrera vegada el $1 a les $2.",
        "viewcount": "S'ha visitat aquesta pàgina {{PLURAL:$1|una vegada|$1 vegades}}.",
        "protectedpage": "Pàgina protegida",
        "jumpto": "Dreceres ràpides:",
        "preview": "Previsualització",
        "showpreview": "Mostra una previsualització",
        "showdiff": "Mostra els canvis",
-       "blankarticle": "<strong>Avís:</strong> La pàgina que esteu creant és en blanc.\nSi feu clic a «{{int:savearticle}}» un altre cop, la pàgina es crearà sense cap contingut.",
+       "blankarticle": "<strong>Avís:</strong> La pàgina que esteu creant és en blanc.\nSi feu clic a «$1» un altre cop, la pàgina es crearà sense cap contingut.",
        "anoneditwarning": "<strong>Avís</strong>: No heu iniciat cap sessió. Per tant, la vostra adreça IP serà visible públicament si feu qualsevol modificació. Si <strong>[$1 inicieu una sessió]</strong> o <strong>[$2 creeu un compte]</strong>, les vostres edicions s'atribuiran al vostre nom d'usuari, juntament amb altres beneficis.",
        "anonpreviewwarning": "''No us heu identificat amb un compte d'usuari. La vostra adreça IP quedarà registrada a l'historial d'aquesta pàgina.''",
        "missingsummary": "'''Recordatori''': Heu deixat en blanc el resum de l'edició. Si torneu a clicar al botó de desar, l'edició es guardarà sense resum.",
-       "selfredirect": "<strong>Avís:</strong> Esteu redirigint la pàgina a si mateixa.\nPodeu haver especificat un objectiu erroni per a la redirecció, o potser esteu modificant una pàgina incorrecta.\nSi feu clic a «{{int:savearticle}}» una vegada més, la redirecció es crearà de totes maneres.",
+       "selfredirect": "<strong>Avís:</strong> Esteu redirigint la pàgina a si mateixa.\nPodeu haver especificat un objectiu erroni per a la redirecció, o potser esteu modificant una pàgina incorrecta.\nSi feu clic a «$1» una vegada més, la redirecció es crearà de totes maneres.",
        "missingcommenttext": "Introduïu un comentari a continuació.",
-       "missingcommentheader": "<strong>Recordatori:</strong> no heu proporcionat un assumpte/encapçalament per al comentari.\nSi feu clic de nou al botó «{{int:savearticle}}», la vostra contribució es desarà sense cap.",
+       "missingcommentheader": "<strong>Recordatori:</strong> no heu proporcionat un assumpte/encapçalament per al comentari.\nSi feu clic de nou al botó «$1», la vostra contribució es desarà sense cap.",
        "summary-preview": "Previsualització del resum de modificació:",
        "subject-preview": "Previsualització de l’assumpte:",
        "previewerrortext": "S'ha produït un error quan es provava de previsualitzar els canvis.",
        "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:'''",
-       "previewnote": "'''Recorda que això és només una previsualització.'''\nEls vostres canvis encara no s'han desat!",
-       "continue-editing": "Aneu a l'àrea d'edició",
+       "previewnote": "<strong>Recordeu que això és només una previsualització.</strong>\nEls vostres canvis encara no s’han desat!",
+       "continue-editing": "Aneu a l’àrea d’edició",
        "previewconflict": "Aquesta previsualització reflecteix, a l'àrea\nd'edició superior, el text tal com apareixerà si trieu desar-lo.",
        "session_fail_preview": "Disculpes! No s'ha pogut processar la vostra modificació a causa d'una pèrdua de dades de la sessió.\n\nPot ser que s'hagi tancat la sessió. <strong>Comproveu si teniu la sessió iniciada i proveu-ho una altra vegada</strong>.\nSi continués sense funcionar, proveu de [[Special:UserLogout|finalitzar la sessió]] i torneu a iniciar-ne una. Comproveu que el vostre navegador permeti les galetes d'aquest lloc.",
        "session_fail_preview_html": "Ho sentim, no s'han pogut processar les vostres modificacions a causa d'una pèrdua de dades de la sessió.\n\n<em>Com que el projecte {{SITENAME}} té habilitat l'ús de codi HTML cru, s'ha amagat la previsualització com a prevenció contra atacs mitjançant codis JavaScript.</em>\n\n<strong>Si es tracta d'una contribució legítima, si us plau, intenteu-ho una altra vegada.</strong> Si continua havent-hi problemes, [[Special:UserLogout|finalitzeu la sessió]] i torneu a iniciar-ne una. Comproveu que el vostre navegador permeti galetes d'aquest lloc.",
        "editingsection": "Edició de la pàgina «$1» (secció)",
        "editingcomment": "Edició de la pàgina «$1» (secció nova)",
        "editconflict": "Conflicte d'edició: $1",
-       "explainconflict": "Algú més ha canviat aquesta pàgina des que l'heu editada.\nL'àrea de text superior conté el text de la pàgina com existeix actualment.\nEls vostres canvis es mostren en l'àrea de text inferior.\nHaureu de fusionar els vostres canvis en el text existent.\n'''Només''' el text de l'àrea superior es desarà quan premeu el botó «{{int:savearticle}}».",
+       "explainconflict": "Algú més ha canviat aquesta pàgina des que l'heu editada.\nL'àrea de text superior conté el text de la pàgina com existeix actualment.\nEls vostres canvis es mostren en l'àrea de text inferior.\nHaureu de fusionar els vostres canvis en el text existent.\n'''Només''' el text de l'àrea superior es desarà quan premeu el botó «$1».",
        "yourtext": "El vostre text",
        "storedversion": "Versió emmagatzemada",
        "nonunicodebrowser": "<strong>Alerta: El vostre navegador no és compatible amb Unicode.</strong>\nS'ha activat una alternativa que us permetrà modificar pàgines amb seguretat: els caràcters que no són ASCII us apareixeran en la caixa d'edició com a codis hexadecimals.",
        "defaultmessagetext": "Missatge per defecte",
        "content-failed-to-parse": "Ha fallat l'anàlisi del contingut de $2 per al model $1: $3",
        "invalid-content-data": "Dades de contingut no vàlides",
-       "content-not-allowed-here": "No és permès el contingut \"$1\" a la pàgina [[$2]]",
+       "content-not-allowed-here": "No és permès el contingut «$1» a la pàgina [[$2]]",
        "editwarning-warning": "Si sortiu d'aquesta pàgina, perdreu tots els canvis que hàgiu fet.\nSi teniu un compte d'usuari, podeu eliminar aquest avís en la secció «{{int:prefs-editing}}» de les vostres preferències.",
        "editpage-invalidcontentmodel-title": "Model de contingut no permès",
        "editpage-invalidcontentmodel-text": "El model de contingut «$1» no és permès.",
        "search-file-match": "(coincideix amb el contingut del fitxer)",
        "search-suggest": "Volíeu dir: $1",
        "search-rewritten": "S’hi mostren els resultats de $1. Cerqueu «$2» en comptes d’aquest.",
-       "search-interwiki-caption": "Projectes germans",
+       "search-interwiki-caption": "Resultats dels projectes germans",
        "search-interwiki-default": "Resultats de $1:",
        "search-interwiki-more": "(més)",
        "search-interwiki-more-results": "més resultats",
        "right-editsemiprotected": "Edita les pàgines protegides com «{{int:protect-level-autoconfirmed}}»",
        "right-editcontentmodel": "Editar el model de contingut d'una pàgina",
        "right-editinterface": "Editar la interfície d'usuari",
-       "right-editusercssjs": "Modificar els fitxers CSS i JavaScript d'altres usuaris",
        "right-editusercss": "Modificar els fitxers CSS d'altres usuaris",
        "right-edituserjs": "Modificar els fitxers JavaScript d'altres usuaris",
        "right-editmyusercss": "Modificar els vostres fitxers d'usuari CSS",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Mostra",
        "rcfilters-activefilters": "Filtres actius",
+       "rcfilters-quickfilters-placeholder-title": "Encara no s’ha desat cap enllaç",
+       "rcfilters-savedqueries-defaultlabel": "Filtres desats",
+       "rcfilters-savedqueries-rename": "Reanomena",
+       "rcfilters-savedqueries-setdefault": "Defineix per defecte",
+       "rcfilters-savedqueries-remove": "Suprimeix",
+       "rcfilters-savedqueries-new-name-label": "Nom",
+       "rcfilters-savedqueries-apply-label": "Desa els paràmetres",
+       "rcfilters-savedqueries-cancel-label": "Cancel·la",
+       "rcfilters-savedqueries-add-new-title": "Desa els paràmetres de filtres actuals",
        "rcfilters-restore-default-filters": "Restaura els filtres per defecte",
        "rcfilters-clear-all-filters": "Esborra tots els filtres",
        "rcfilters-search-placeholder": "Canvis recents dels filtres (navegueu o comenceu a escriure)",
        "rcfilters-filter-registered-description": "Editors que han iniciat sessió",
        "rcfilters-filter-unregistered-label": "No registrats",
        "rcfilters-filter-unregistered-description": "Editors que no han iniciat una sessió.",
-       "rcfilters-filtergroup-authorship": "Modifica l'autoria",
+       "rcfilters-filtergroup-authorship": "Autoria de les contribucions",
        "rcfilters-filter-editsbyself-label": "Les vostres modificacions",
-       "rcfilters-filter-editsbyself-description": "Modificacions vostres.",
-       "rcfilters-filter-editsbyother-label": "Modificacions d'altres",
-       "rcfilters-filter-editsbyother-description": "Modificacions creades per altres usuaris (no vostres).",
+       "rcfilters-filter-editsbyself-description": "Les vostres pròpies contribucions.",
+       "rcfilters-filter-editsbyother-label": "Canvis d'altres",
+       "rcfilters-filter-editsbyother-description": "Tots els canvis excepte els vostres.",
        "rcfilters-filtergroup-userExpLevel": "Nivell d'experiència (només per a usuaris registrats)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Novells",
        "rcfilters-filter-user-experience-level-newcomer-description": "Menys de 10 edicions i 4 dies d'activitat.",
        "rcfilters-filter-minor-description": "Modificacions que l'autor va etiquetar com a menors.",
        "rcfilters-filter-major-label": "Modificacions no menors",
        "rcfilters-filter-major-description": "Modificacions no etiquetades com a menors.",
+       "rcfilters-filtergroup-watchlist": "Pàgines en seguiment",
+       "rcfilters-filter-watchlist-watched-label": "A la llista de seguiment",
+       "rcfilters-filter-watchlist-watched-description": "Canvis a les pàgines en la vostra llista de seguiment.",
+       "rcfilters-filter-watchlist-watchednew-label": "Canvis nous a la llista de seguiment",
+       "rcfilters-filter-watchlist-watchednew-description": "Canvis a les pàgines en seguiment que no heu visitat des que van ocórrer els canvis.",
+       "rcfilters-filter-watchlist-notwatched-label": "No és a la llista de seguiment",
        "rcfilters-filtergroup-changetype": "Tipus de canvi",
        "rcfilters-filter-pageedits-label": "Modificacions de pàgina",
        "rcfilters-filter-pageedits-description": "Modificacions al contingut del wiki, discussions, descripcions de categories...",
        "rcfilters-filter-categorization-description": "Registres de pàgines afegides o suprimides de les categories.",
        "rcfilters-filter-logactions-label": "Accions registrades",
        "rcfilters-filter-logactions-description": "Accions administratives, creacions de comptes, eliminacions de pàgines, càrregues...",
+       "rcfilters-filtergroup-lastRevision": "Darrera revisió",
+       "rcfilters-filter-lastrevision-label": "Darrera revisió",
+       "rcfilters-filter-lastrevision-description": "El canvi més recent a una pàgina.",
+       "rcfilters-filter-previousrevision-label": "Revisions anteriors",
        "rcnotefrom": "A sota hi ha {{PLURAL:$5|el canvi|els canvis}} a partir de <strong>$3, $4</strong> (fins a <strong>$1</strong>).",
        "rclistfrom": "Mostra els canvis nous des de $3, $2",
        "rcshowhideminor": "$1 edicions menors",
        "rcshowhidecategorization": "$1 categoritzacions de pàgina",
        "rcshowhidecategorization-show": "Mostra",
        "rcshowhidecategorization-hide": "Amaga",
-       "rclinks": "Mostra els darrers $1 canvis en els darrers $2 dies<br />$3",
+       "rclinks": "Mostra els darrers $1 canvis dels darrers $2 dies",
        "diff": "dif",
        "hist": "hist",
        "hide": "Amaga",
        "sp-contributions-uploads": "càrregues",
        "sp-contributions-logs": "registres",
        "sp-contributions-talk": "discussió",
-       "sp-contributions-userrights": "gestió de drets d'usuari",
+       "sp-contributions-userrights": "gestió de drets d'{{GENDER:$1|usuari|usuària}}",
        "sp-contributions-blocked-notice": "En aquests moments aquest compte d'usuari està blocat.\nPer a més informació, a continuació es mostra l'última entrada del registre:",
        "sp-contributions-blocked-notice-anon": "En aquests moments, aquesta adreça IP es troba blocada.\nPer més detalls, l'última entrada del registre es mostra a continuació:",
        "sp-contributions-search": "Cerca les contribucions",
        "unblocked-id": "S'ha eliminat el bloqueig de $1",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] ha estat desbloquejat.",
        "blocklist": "Usuaris blocats",
+       "autoblocklist-submit": "Cerca",
        "ipblocklist": "Usuaris blocats",
        "ipblocklist-legend": "Cerca un usuari blocat",
        "blocklist-userblocks": "Amaga bloquejos de compte",
        "unblock-hideuser": "No podeu desblocar aquest usuari, perquè el seu nom d'usuari està ocult.",
        "ipb_cant_unblock": "Errada: No s'ha trobat el núm. ID de bloqueig $1. És possible que ja s'haguera desblocat.",
        "ipb_blocked_as_range": "Error: L'adreça IP $1 no està blocada directament i per tant no pot ésser desbloquejada. Ara bé, sí que ho està per formar part del rang $2 que sí que pot ser desblocat.",
-       "ip_range_invalid": "Rang d'IP no vàlid.",
+       "ip_range_invalid": "L’interval d’adreces IP no és vàlid.",
        "ip_range_toolarge": "No són permesos els bloquejos de rangs més grans que /$1.",
        "proxyblocker": "Bloqueig de proxy",
        "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.",
        "tooltip-pt-mycontris": "Llista de {{GENDER:|les vostres}} contribucions",
        "tooltip-pt-anoncontribs": "Una llista de les modificacions fetes des d'aquesta adreça IP",
        "tooltip-pt-login": "Us animem a registrar-vos, però no és obligatori",
+       "tooltip-pt-login-private": "Cal que inicieu una sessió per a utilitzar aquest wiki",
        "tooltip-pt-logout": "Finalitza la sessió d'usuari",
        "tooltip-pt-createaccount": "Us animem a què creeu un compte i inicieu sessió, encara que no és obligatori",
        "tooltip-ca-talk": "Discussió sobre el contingut d'aquesta pàgina",
        "tooltip-ca-edit": "Modifica aquesta pàgina",
-       "tooltip-ca-addsection": "Comença una nova secció",
+       "tooltip-ca-addsection": "Comença una secció nova",
        "tooltip-ca-viewsource": "Aquesta pàgina està protegida.\nPodeu veure'n el codi font.",
        "tooltip-ca-history": "Versions antigues d'aquesta pàgina",
        "tooltip-ca-protect": "Protegeix aquesta pàgina.",
        "confirmrecreate": "{{GENDER:$1|L'usuari|La usuària}} [[User:$1|$1]] ([[User talk:$1|discussió]]) va eliminar aquesta pàgina que havíeu creat donant-ne el següent motiu:\n: <em>$2</em>\nConfirmeu que realment voleu tornar-la a crear.",
        "confirmrecreate-noreason": "{{GENDER:$1|L'usuari|La usuària}} [[User:$1|$1]] ([[User talk:$1|discussió]]) va esborrar aquesta pàgina després que la comencéssiu a modificar. Confirmeu que realment voleu tornar-la a crear.",
        "recreate": "Torna a crear",
+       "confirm-purge-title": "Purga la pàgina",
        "confirm_purge_button": "D'acord",
        "confirm-purge-top": "Voleu buidar la memòria cau d'aquesta pàgina?",
        "confirm-purge-bottom": "En refrescar una pàgina es neteja de la memòria cau i es força que hi aparegui la versió més actual.",
        "tags-hitcount": "$1 {{PLURAL:$1|canvi|canvis}}",
        "tags-manage-no-permission": "No teniu permisos per administrar etiquetes de canvi",
        "tags-manage-blocked": "No podeu canviar etiquetes mentre esteu {{GENDER:$1|blocat|blocada}}.",
-       "tags-create-heading": "Crea una nova etiqueta",
+       "tags-create-heading": "Crea una etiqueta nova",
        "tags-create-explanation": "Per defecte, les etiquetes acabades de crear estaran disponibles per usuaris i bots",
        "tags-create-tag-name": "Nom de l'etiqueta:",
        "tags-create-reason": "Motiu:",
        "htmlform-user-not-valid": "<strong>$1</strong> no és nom d'usuari vàlid.",
        "logentry-delete-delete": "$1 {{GENDER:$2|ha esborrat}} la pàgina $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|ha esborrat}} la redirecció $3 sobreescrivint-la",
-       "logentry-delete-restore": "$1 ha restaurat $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|ha restaurat}} la pàgina $3 ($4)",
        "logentry-delete-event": "$1 {{GENDER:$2|ha canviat}} la visibilitat {{PLURAL:$5|d'un esdeveniment al registre|de $5 esdeveniments al registre}} de $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|ha canviat}} la visibilitat {{PLURAL:$5|d'una revisió|de $5 revisions}} a la pàgina $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|ha canviat}} la visibilitat d'esdeveniments al registre de $3",
        "mw-widgets-titleinput-description-redirect": "redirigeix a $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Afegeix una categoria...",
        "mw-widgets-usersmultiselect-placeholder": "Afegeix-ne més...",
+       "date-range-from": "De la data:",
+       "date-range-to": "A la data:",
        "sessionmanager-tie": "No es poden combinar diferents tipus de sol·licituds d'autenticació: $1.",
        "sessionprovider-generic": "$1 sessions",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sessions basades en galetes",
        "log-action-filter-suppress-event": "Supressió de registres",
        "log-action-filter-suppress-revision": "Supressió de revisions",
        "log-action-filter-suppress-delete": "Supressió de pàgines",
-       "log-action-filter-upload-upload": "Nova càrrega",
+       "log-action-filter-upload-upload": "Càrrega nova",
        "log-action-filter-upload-overwrite": "Torna a carregar",
        "authmanager-authn-not-in-progress": "L'autenticació no està en curs o les dades de sessió s'han perdut. Comenceu de nou des del principi.",
        "authmanager-authn-no-primary": "Les dades credencials no s'han pogut autenticar.",
        "restrictionsfield-badip": "Adreça o interval d'IP no vàlid: $1",
        "restrictionsfield-label": "Intervals d'IP permesos:",
        "revid": "revisió $1",
-       "pageid": "ID de pàgina $1"
+       "pageid": "ID de pàgina $1",
+       "gotointerwiki-invalid": "El títol especificat no és vàlid."
 }
index e4ed07f..8b8e77f 100644 (file)
        "externaldberror": "可能是驗證數據庫綻咯,或者是汝𣍐使升級汝其外部賬戶。",
        "login": "躒入",
        "nav-login-createaccount": "登錄/開賬戶",
-       "userlogin": "躒入/開新賬號",
-       "userloginnocreate": "躒入",
        "logout": "躒出",
        "userlogout": "躒出",
        "notloggedin": "固未躒入",
        "userlogin-noaccount": "汝無賬戶?",
        "userlogin-joinproject": "加入{{SITENAME}}",
-       "nologin": "汝固無賬號?$1",
-       "nologinlink": "開蜀隻賬戶",
        "createaccount": "開賬戶",
-       "gotaccount": "已經有賬戶了?'''$1'''。",
-       "gotaccountlink": "躒入",
-       "userlogin-resetlink": "躒入其資料𣍐記去是伓是?",
        "userlogin-resetpassword-link": "密碼𣍐記?",
        "userlogin-helplink2": "對手汝躒入",
        "userlogin-loggedin": "汝已經使$1躒入過了。\n儷是卜想挈其他用戶來躒入,起動汝使下底其表格來躒入。",
        "createacct-another-email-ph": "拍入電批地址",
        "createaccountmail": "使臨時其隨機密碼,共伊送遘指定其電子郵件地址",
        "createacct-realname": "實際其名字(愛寫就寫)",
-       "createaccountreason": "原因:",
        "createacct-reason": "原因",
        "createacct-reason-ph": "汝奚勢復想開另外蜀隻賬戶?",
        "createacct-submit": "開賬戶",
        "editingsection": "修改$1(段)",
        "editingcomment": "修改$1(新其蜀部分)",
        "editconflict": "修改對衝:$1",
-       "explainconflict": "敆汝開始修改茲蜀頁之前,已經有其他人改變茲蜀頁去了。懸頂文本區域包括原底存在其頁面文本。汝其改變敆下底文本區域顯示。汝必須合併汝其改變遘已經存在其文本。敆汝擪「{{int:savearticle}}」以後,'''囇有'''敆懸頂文本區域其文本會保存。",
+       "explainconflict": "敆汝開始修改茲蜀頁之前,已經有其他人改變茲蜀頁去了。懸頂文本區域包括原底存在其頁面文本。汝其改變敆下底文本區域顯示。汝必須合併汝其改變遘已經存在其文本。敆汝擪「$1」以後,'''囇有'''敆懸頂文本區域其文本會保存。",
        "yourtext": "汝其文字",
        "editingold": "'''警告:汝現在𡅏修改已經過時其版本。'''\n如果汝保存伊,趁茲以後其任何改變都變無了。",
        "yourdiff": "差別",
        "prefs-misc": "其它",
        "saveprefs": "保存",
        "prefs-editing": "編輯",
-       "rows": "行數:",
        "searchresultshead": "尋討",
        "recentchangescount": "這般改變其條目:",
        "savedprefs": "汝其設定已經乞保存了。",
        "rcshowhideliu": "$1 ī dĕng-gé gì ê̤ṳng-hô",
        "rcshowhideanons": "$1 ù-mìng-sê",
        "rcshowhidemine": "$1 nguāi gì siŭ-gāi",
-       "rclinks": "Hiēng-sê có̤i-gê̤ṳng $2 gĕ̤ng ī-nô̤i gì $1 huòi gāi-biéng<br />$3",
+       "rclinks": "Hiēng-sê có̤i-gê̤ṳng $2 gĕ̤ng ī-nô̤i gì $1 huòi gāi-biéng",
        "diff": "chă",
        "hist": "sṳ̄",
        "hide": "掩",
index ad5fcb6..b106038 100644 (file)
        "anontalk": "Дийцаре",
        "navigation": "Навигаци",
        "and": "&#32;а",
-       "qbfind": "Лахар",
-       "qbbrowse": "Хьажар",
-       "qbedit": "Нисъе",
-       "qbpageoptions": "АгӀона гӀирс нисбар",
-       "qbmyoptions": "Хьан нисдарш",
        "faq": "СиХХ",
-       "faqpage": "Project:СиХХ",
        "actions": "Дийраш",
        "namespaces": "ЦӀерийн меттигаш",
        "variants": "Кепараш",
        "searcharticle": "Дехьа гӀо",
        "history": "Истори",
        "history_short": "Истори",
+       "history_small": "истори",
        "updatedmarker": "Керла яккхина сона гинчултӀаьхьа",
        "printableversion": "Зорба туху верси",
        "permalink": "Даиман йолу хьажорг",
        "edit-local": "ТӀетоха локальни цуьнах лаьцна",
        "create": "Кхолла",
        "create-local": "ТӀетоха локальни цуьнах лаьцна",
-       "editthispage": "Нисъе хӀъара агӀо",
-       "create-this-page": "Кхолла хӀара агӀо",
        "delete": "ДӀаяккха",
-       "deletethispage": "ДӀаяккха хӀара агӀо",
-       "undeletethispage": "ХӀара агӀо меттахӀоттор",
        "undelete_short": "МеттахӀоттайé $1 {{PLURAL:$1|нисйинарг|нисйинарш}}",
        "viewdeleted_short": "{{PLURAL:$1|$1 ДӀадаьккхина нийсдаре|$1 ДӀадаьхна нийсдарше}} хьажар",
        "protect": "Ларъяр",
        "protect_change": "хийца",
-       "protectthispage": "Ларъе хӀара агӀо",
        "unprotect": "Ларъяр хийцар",
-       "unprotectthispage": "ХӀокху агӀонан ларъяр хийца",
        "newpage": "Керла агӀонаш",
-       "talkpage": "ХӀара агӀо йийцаре йилла",
        "talkpagelinktext": "Дийцаре",
        "specialpage": "Белхан агӀо",
        "personaltools": "Долахь болу гӀирсаш",
-       "articlepage": "Хьажа яззаме",
        "talk": "Дийцаре",
        "views": "Хьажарш",
        "toolbox": "ГӀирсаш",
        "tool-link-userrights": "{{GENDER:$1|Декъашхочун}} бакъо хийцар",
        "tool-link-userrights-readonly": "Хьажа {{GENDER:$1|декъашхочун}} тобанаш",
        "tool-link-emailuser": "Язде {{GENDER:$1|декъашхочунга}} кехат",
-       "userpage": "Хьажа декъашхочуьна агӀоне",
-       "projectpage": "Хьажа кхолламан агӀоне",
        "imagepage": "Хьажа файлан агӀоне",
        "mediawikipage": "Хьагайта хааман агӀо",
        "templatepage": "Хьажа кепа агӀоне",
        "createacct-another-realname-tip": "Декъашхочун бакъ цӀе (яз ца йича мега).\nАхьа и язяхь, агӀона хийцам бича хьан цӀе гуш хира ю.",
        "pt-login": "ЧугӀо",
        "pt-login-button": "ЧугӀо",
+       "pt-login-continue-button": "Чекхдаккха",
        "pt-createaccount": "Кхолла декъашхочун дӀаяздар",
        "pt-userlogout": "Болх дӀаберзор",
        "php-mail-error-unknown": "PHP-функцин mail() доьвзуш доцу гӀалат",
        "newpassword": "Керла пароль:",
        "retypenew": "Юха язъйе керла пароль:",
        "resetpass_submit": "Пароль дӀахӀоттийна а системин чугӀо",
-       "changepassword-success": "Хьан пароль кхиамца хийцина!",
+       "changepassword-success": "Хьан пароль хийцина!",
        "changepassword-throttled": "Хьо дукха гӀиртира.\nДехар до, собар де $1 юха гӀортале.",
        "botpasswords": "Ботийн парольш",
        "botpasswords-editexisting": "Тае ботан йолуш йолу пароль",
        "preview": "Хьалххе хьажар",
        "showpreview": "Хьалха хьажар",
        "showdiff": "Бина болу хийцамашка хьажар",
-       "blankarticle": "<strong>ДӀахьедар:</strong> Ахьа кхуллуш йолу агӀо еса ю.\nЮху кнопка «{{int:savearticle}}» тӀетаӀаяхь, агӀо цхьа чулацам боцуш кхуллур ю.",
+       "blankarticle": "<strong>ДӀахьедар:</strong> Ахьа кхуллуш йолу агӀо еса ю.\nЮху кнопка «$1» тӀетаӀаяхь, агӀо цхьа чулацам боцуш кхуллур ю.",
        "anoneditwarning": "'''Тергам бе''': Ахьа хьай цӀарца тадарш деш дац. Хьан IP-адрес дӀаяздина хира ду хӀокху агӀон истори чу.",
        "anonpreviewwarning": "''Системин чу цагӀахь хьан IP-адрес агӀона истори чу дӀаяз лур ду.''",
-       "missingsummary": "'''Дагадаийтар.''' Ахьа хийцамаш лаьцна доца яздина дац. Кнопка «{{int:savearticle}}» юху тӀетаӀича хийцамах лаьцна хӀума доцуш Ӏалашбира бу.",
-       "selfredirect": "<strong>Тергам бе:</strong> Ахьа кхуллуш ю из-за цӀе йолу агӀонан тӀе дӀасхьажорг.\nХийла мега, ДӀасхьажорг кхолла я таян ахьа хаьржина нийса йоцу агӀо.\nАхьа «{{int:savearticle}}» кнопка юха а тӀетаӀа яхь агӀо кхуллура ю.",
+       "missingsummary": "'''Дагадаийтар.''' Ахьа хийцамаш лаьцна доца яздина дац. Кнопка «$1» юху тӀетаӀича хийцамах лаьцна хӀума доцуш Ӏалашбира бу.",
+       "selfredirect": "<strong>Тергам бе:</strong> Ахьа кхуллуш ю из-за цӀе йолу агӀонан тӀе дӀасхьажорг.\nХийла мега, ДӀасхьажорг кхолла я таян ахьа хаьржина нийса йоцу агӀо.\nАхьа «$1» кнопка юха а тӀетаӀа яхь агӀо кхуллура ю.",
        "missingcommenttext": "Дехар до дӀаязбе хайн хаам лахахь.",
-       "missingcommentheader": "'''Дагадаийтар.''' Ахьа хӀокху къамелан дӀахьедар/корта билгал бина бац. Кнопка «{{int:savearticle}}» юху тӀетаӀича хийцамах лаьцна хӀума доцуш Ӏалашбира бу.",
+       "missingcommentheader": "'''Дагадаийтар.''' Ахьа хӀокху къамелан дӀахьедар/корта билгал бина бац. Кнопка «$1» юху тӀетаӀича хийцамах лаьцна хӀума доцуш Ӏалашбира бу.",
        "summary-preview": "Цуьнах лаьцна хирду:",
        "subject-preview": "Коьрта могӀа хира бу:",
        "previewerrortext": "Хьан хийцамашка хьалха хьажа гӀертачу хенахь гӀалат даьлла.",
        "editingsection": "Тадар $1 (дакъа)",
        "editingcomment": "Тадар $1 (керла дакъа)",
        "editconflict": "Тадарна дойнаш: $1",
-       "explainconflict": "Ахьа хӀара агӀо тоечу хенахь, цхьам хийцамаш бина.\nЛакхарчу таяран корехь хьона гуш ду хӏинца агӏона чохь долу йоза.\nЛахарчу корехь ахь бина хийцам бу.\nХьой бина хийцам лахарчу корера лакхарчу коре баккха.\nКнопкан «{{int:savearticle}}» тӏетаӏича лакхара корера йоза дӏаязлурду.",
+       "explainconflict": "Ахьа хӀара агӀо тоечу хенахь, цхьам хийцамаш бина.\nЛакхарчу таяран корехь хьона гуш ду хӏинца агӏона чохь долу йоза.\nЛахарчу корехь ахь бина хийцам бу.\nХьой бина хийцам лахарчу корера лакхарчу коре баккха.\nКнопкан «$1» тӏетаӏича лакхара корера йоза дӏаязлурду.",
        "yourtext": "Хьан йоза",
        "storedversion": "Ӏалашйина верси",
        "editingold": "'''ДӀахьедар. Ахь таеш ю хӀокху агӀонан шира елла верси.'''\nАгӀо Ӏалаш йинчул тӀаьхьа, хьалхо бина хийцамаш дӀабевра бу.",
        "postedit-confirmation-restored": "АгӀо меттахӀотта йина.",
        "postedit-confirmation-saved": "Хьан нисдар дӀаяздина.",
        "edit-already-exists": "Керла агӀо кхолла цатарло.\nИза хӀинцале йолуш ю.",
-       "defaultmessagetext": "Ӏад дитарца йоза",
+       "defaultmessagetext": "Ӏадйитаран кепаца йоза",
        "content-failed-to-parse": "Чулацам $2 богӀуш бац $1: $3.",
        "invalid-content-data": "Хилийта йиш йоцу хаамаш",
        "content-not-allowed-here": "Чулацам \"$1\" [[$2]] агӀонгахь хилийта йиш яц",
        "content-model-css": "CSS",
        "content-json-empty-object": "Еса объект",
        "content-json-empty-array": "Еса меттиг",
+       "deprecated-self-close-category": "ШадӀакъовлалуш мегаш йоцу HTML-тегаш йолу агӀонаш",
        "duplicate-args-warning": "Тидам: [[:$1]] кхойкху [[:$2]] «дегӀан_хатӀ» «$3» параметран цхьаннал сов маьӀна долу карточка.\nТӀаьххьара къастийна долу маьӀна бен лелор дац.",
        "duplicate-args-category": "Кепийн кхайкхамашкахь аргументаш юх-юха лелош йолу агӀонаш",
        "expensive-parserfunction-warning": "'''Тидам бе!''' Ресурсийн функцийн дехарш сов даьлла агӀонаш .\n\nДукху хилла ца деза {{PLURAL:$2|$2 дехар|$2 дехарш|1=цхьана дехар}}, хӀинца $1 {{PLURAL:$1|дехар}} ду.",
        "post-expand-template-inclusion-category": "Чу дуьхкуш долу кепийн барам тӀех баьлла агӀонаш",
        "post-expand-template-argument-category": "Кепийн аргументаш юкъахь йитина агӀонаш",
        "parser-template-loop-warning": "Карийна кепаш юкъахь хилла шад: [[$1]]",
+       "template-loop-category": "Шеддаш болу кепаш йолу агӀонаш",
        "parser-template-recursion-depth-warning": "Дозанал хьаладаьлла кӀоргенца юх юха дина кеп ($1)",
        "node-count-exceeded-category": "Шедийн дукхалла сов даьлла агӀонаш",
        "node-count-exceeded-warning": "Шедийн дукхалла сов даьлла агӀонаш",
        "search-interwiki-caption": "Гергара проекташ",
        "search-interwiki-default": "$1 хилам:",
        "search-interwiki-more": "(кхин)",
+       "search-interwiki-more-results": "Кхин каринарш",
        "search-relatedarticle": "ХӀоттаделларг",
        "searchrelated": "хlоттаделларг",
        "searchall": "массо",
        "showingresultsinrange": "Лахахь гайтина {{PLURAL:$1|<strong>1</strong> хилам}} диапазонехь <strong>$2</strong> тӀера <strong>$3</strong> кхаччалц.",
        "search-showingresults": "{{PLURAL:$4|Карийна <strong>$1</strong> — цхьаъ агӀо|И дош карийна <strong>$3</strong> агӀонашкахь, царех гойту $2 агӀо}}",
        "search-nonefound": "Дехаре терра цхьа хӀума ца карийна.",
+       "search-nonefound-thiswiki": "Дехаре терра цхьа хӀума ца карийна сайтехь.",
        "powersearch-legend": "Шуьйра лахар",
        "powersearch-ns": "ЦӀерийн меттигашкахь лахар:",
        "powersearch-togglelabel": "Билгалдан:",
        "prefsnologintext2": "Дехар до, гӀирс дӀанисбан язъяр.",
        "prefs-skin": "Кечяран тема",
        "skin-preview": "Хьалха хьажар",
-       "datedefault": "Iад йитарца",
+       "datedefault": "Ӏадйитаран кеп",
        "prefs-labs": "Муха ю хьажарна таронаш",
        "prefs-user-pages": "Декъашхочун агӀо",
        "prefs-personal": "Долахь болу хаамаш",
        "prefs-email": "Электронан поштан параметраш",
        "prefs-rendering": "Арахьара хатl",
        "saveprefs": "Ӏалашдан",
-       "restoreprefs": "МеттахӀоттабе гӀирс Iад битарца",
+       "restoreprefs": "Ӏадйитаран кеп",
        "prefs-editing": "Тадар",
        "searchresultshead": "Лахар",
        "stub-threshold": "Кеч яран доза коьртан хьажоргашна ($1):",
        "stub-threshold-disabled": "ДӀадайина",
        "recentchangesdays": "Керла нисдар гайта динахь:",
        "recentchangesdays-max": "Къезиг $1 {{PLURAL:$1|дена}}",
-       "recentchangescount": "Iад йитарца гойтуш долу нисдарийн дукхалла",
+       "recentchangescount": "Ӏадйитаран кепаца гойтуш долу нисдарийн дукхалла",
        "prefs-help-recentchangescount": "Гойту керла нисдарш, агӀонийн истори, тептарш.",
        "prefs-help-watchlist-token2": "Иза хьан тергаме могӀан къайла догӀа ду.\nМуьлха и хуучунна йиш ю хьан тергаме могӀам беша, цундела ма хаийта иза кхечаьрга. [[Special:ResetTokens|ТӀетаӀа йе кхуза и хьайга кхосса лууш делахь]].",
        "savedprefs": "Хьан гӀирс Ӏалашбина.",
        "allowemail": "Магийта декъашхошна хьайга электронан поштехула кехат кхехьийта",
        "prefs-searchoptions": "Лахар",
        "prefs-namespaces": "ЦӀерийн меттигаш",
-       "default": "Iад йитарца",
+       "default": "Ӏадйитаран кеп",
        "prefs-files": "Файлаш",
        "prefs-custom-css": "Долахь йолу CSS",
        "prefs-custom-js": "Долахь йолу JS",
        "prefs-common-css-js": "Юкъара CSS/JS массо кеч даран темийн:",
-       "prefs-reset-intro": "ХӀара агӀо лело мега ахьа нисбина гӀирс Ӏад битарца юха бокхуш.\nХӀара дешдерг кхочушъ динчул  тӀехьа хьан йиш хир-яц и юха меттахӀотто.",
+       "prefs-reset-intro": "ХӀара агӀо лело мега ахьа нисбина гӀирс Ӏадбитаран кепаца юха бокхуш.\nХӀара дешдерг кхочушъ динчул  тӀехьа хьан йиш хир-яц и юха меттахӀотто.",
        "prefs-emailconfirm-label": "Электронан пошт бакъ яр:",
        "youremail": "Электронан пошт:",
        "username": "{{GENDER:$1|Декъашхочун цӀе}}:",
        "prefs-memberingroups": "{{GENDER:$1|Тобана|Тобаншан}} {{PLURAL:$2|декъашхо|декъашхой}}:",
+       "group-membership-link-with-expiry": "$1 ($2 тӀе кхаччалц)",
        "prefs-registration": "ДӀаяздар кхолийна хан:",
        "yourrealname": "Хьан бакъ цӀе:",
        "yourlanguage": "Мотт:",
        "userrights-no-interwiki": "Хьан бакъо яц декъашхой бакъо хийца кхечу википеди чохь.",
        "userrights-changeable-col": "Хьоьга хийцалун бакъонаш",
        "userrights-unchangeable-col": "Хьоьга хийцалун бакъонаш",
+       "userrights-expiry-current": "Чекхйолу $1",
+       "userrights-expiry-none": "Цкъа а",
+       "userrights-expiry": "Бакъо дӀайолу:",
+       "userrights-expiry-existing": "$2, $3",
+       "userrights-expiry-othertime": "Кхин хан:",
+       "userrights-expiry-options": "1 де:1 day,1 кӀира:1 week,1 бутт:1 mopnth,3 months,6 бутт:6 months,1 шо:1 year",
+       "userrights-invalid-expiry": "«$1» группин хан чеккхйолу хан нийса яц.",
        "group": "Тоба:",
        "group-user": "Декъашхой",
        "group-autoconfirmed": "АвтотӀелаьцна декъашхой",
        "grant-group-file-interaction": "Медиафайлашца зӀе",
        "grant-group-email": "ДӀадахьийта кехат",
        "grant-group-high-volume": "Дешдерг сиха дар",
+       "grant-group-other": "Тайп-тайпанара жигаралла",
        "grant-blockusers": "Декъашхойн блоктохар а, блокдӀаяккхар а",
        "grant-createaccount": "Декъашхочун дӀаяздарш кхоллар",
        "grant-createeditmovepage": "АгӀонашна хийцам бар",
        "recentchanges-legend-heading": "<strong>Легенда:&nbsp;</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (хьажа кхин [[Special:NewPages|керла агӀонийн могӀа]])",
        "recentchanges-submit": "Гайта",
+       "rcfilters-savedqueries-defaultlabel": "Ӏалашъе луьттург",
+       "rcfilters-savedqueries-rename": "ЦӀе хийцар",
+       "rcfilters-savedqueries-setdefault": "Ӏадйитаран кеп хӀоттае",
+       "rcfilters-savedqueries-unsetdefault": "Ӏадйитаран кеп дӀаяккха",
+       "rcfilters-savedqueries-remove": "ДӀаяккха",
+       "rcfilters-savedqueries-new-name-label": "ЦӀе",
+       "rcfilters-savedqueries-apply-label": "Ӏалашде нисъяр",
+       "rcfilters-savedqueries-cancel-label": "Цаоьшу",
+       "rcfilters-savedqueries-add-new-title": "Ӏалашде литтар нисъяр",
+       "rcfilters-restore-default-filters": "Литтарш Ӏадйитаран кепе меттахӀоттае",
+       "rcfilters-clear-all-filters": "Ерриге литтарш цӀанъян",
        "rcfilters-filterlist-title": "Литтарш",
        "rcfilters-filterlist-noresults": "Литтарш цакарий",
+       "rcfilters-filtergroup-registration": "Декъашхойн регистраци",
+       "rcfilters-filter-registered-label": "Регистрацийинарш",
+       "rcfilters-filter-unregistered-label": "Регистрацицайинарш",
        "rcfilters-filtergroup-authorship": "Нисде авторалла",
        "rcfilters-filter-editsbyself-label": "Хьан дисдарш",
        "rcfilters-filter-editsbyself-description": "Хьан нисдарш.",
        "rcfilters-filter-editsbyother-label": "Кхечу декъашхойн нисдарш",
        "rcfilters-filter-user-experience-level-newcomer-label": "Керланиш",
        "rcfilters-filter-user-experience-level-learner-label": "Доьшуш берш",
+       "rcfilters-filter-bots-label": "Бот",
+       "rcfilters-filter-patrolled-label": "Патрулйина",
+       "rcfilters-filtergroup-lastRevision": "Карара верси",
+       "rcfilters-filter-lastrevision-label": "Карара верси",
+       "rcfilters-filter-lastrevision-description": "АгӀона уггаре тӀеххьара хийцамаш.",
+       "rcfilters-filter-previousrevision-label": "Хьалхара версеш",
+       "rcfilters-filter-excluded": "ДӀаяьккхина",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
+       "rcfilters-view-tags": "Билгалонаш",
        "rcnotefrom": "Лахахь гайтина тӀера <strong>$2</strong> (хийцамаш <strong>$1</strong> кӀезиг).",
+       "rclistfromreset": "Терахь харжар дӀадаккха",
        "rclistfrom": "Гайта хийцам {{CURRENTYEAR}} шеран {{CURRENTDAY}} {{CURRENTMONTHNAMEGEN}} {{CURRENTTIME}} бина болу",
        "rcshowhideminor": "$1 кегийра нисдарш",
        "rcshowhideminor-show": "Гайта",
        "rcshowhidecategorization": "$1 категореш тӀетохар",
        "rcshowhidecategorization-show": "Гайта",
        "rcshowhidecategorization-hide": "Къайлаяккха",
-       "rclinks": "Гайта тӀаьххьарлерачу $2 дийнахь бина болу $1 хийцамаш\n<br />$3",
+       "rclinks": "Гайта тӀаьххьарлерачу $2 дийнахь бина болу $1 хийцамаш",
        "diff": "башхалла",
        "hist": "истори",
        "hide": "Къайлаяккха",
        "filedelete-reason-dropdown": "* Даржина долу дӀаяккхаран баьхьанаш \n** Авторан бакъонаш талхор\n** ЦхӀатера файлаш хилар",
        "filedelete-edit-reasonlist": "Бахьанин могӀам нисбар",
        "filedelete-maintenance-title": "Файл дӀаяккха цало",
-       "mimesearch": "MIME хула лаха",
+       "mimesearch": "MIME лаха",
        "mimesearch-summary": "ХӀокху агӀоно йиш хуьлуьйту MIME-тайпан файлаш харжа. Яздеш долу формат: чулацаман тайп/бухара тайп, масала  <code>image/jpeg</code>.",
        "mimetype": "MIME-тайп:",
        "download": "чуяккха",
        "ncategories": "$1 {{PLURAL:$1|категори|категореш}}",
        "ninterwikis": "$1 {{PLURAL:$1|1=юкъарвики-хьажорг|юкъарвики-хьажоргаш}}",
        "nlinks": "$1 {{PLURAL:$1|хьажорг}}",
-       "nmembers": "$1 {{PLURAL:$1|хӀума|хӀумнаш}}",
-       "nmemberschanged": "$1 → $2 {{PLURAL:$2|хӀума|хӀумнаш}}",
+       "nmembers": "$1 {{PLURAL:$1|объект}}",
+       "nmemberschanged": "$1 → $2 {{PLURAL:$2|объект}}",
        "nrevisions": "$1 {{PLURAL:$1|верси|версеш}}",
        "nimagelinks": "Лелош ю $1 {{PLURAL:$1|агӀонгахь|агӀонашкахь}}",
        "ntransclusions": "лелош ю $1 {{PLURAL:$1|агӀонгахь|агӀонашкахь}}",
        "apihelp-no-such-module": "Модуль «$1» цакарий.",
        "apisandbox": "Ловзаран майда API",
        "apisandbox-intro": "Лела йе хӀара агӀо '''MediaWiki API''' зуьйш.\nAPI кхин муха лела йо хьажа [https://www.mediawiki.org/wiki/API:Main_page кхузахь]. Масала, [https://www.mediawiki.org/wiki/API#A_simple_example Коьрта агӀона чулацам схьаэца]. Кхин масалаш ган харжа дийриг.",
+       "apisandbox-fullscreen": "Схьаяста панель",
        "apisandbox-unfullscreen": "Гайта агӀо",
        "apisandbox-submit": "Дехар далар",
        "apisandbox-reset": "ЦӀанъян",
        "apisandbox-retry": "ЮхагӀорта",
-       "apisandbox-examples": "Масала",
+       "apisandbox-helpurls": "ГӀоьна гӀирсийн тӀе хьажоргаш",
+       "apisandbox-examples": "Масалаш",
+       "apisandbox-dynamic-parameters": "Кхин параметраш",
        "apisandbox-dynamic-parameters-add-label": "ТӀетоха параметр:",
        "apisandbox-dynamic-parameters-add-placeholder": "Параметран цӀе",
        "apisandbox-dynamic-error-exists": "«$1» цӀе йолу параметр йолуш ю",
        "apisandbox-results": "Хилам",
        "apisandbox-request-url-label": "Дехаран URL-адрес:",
        "apisandbox-request-time": "Дехар дина хан: $1",
+       "apisandbox-continue": "Кхин дӀа",
+       "apisandbox-continue-clear": "ЦӀанъян",
+       "apisandbox-continue-help": "{{int:apisandbox-continue}} [https://www.mediawiki.org/wiki/API:Query#Continuing_queries чекхдаккха] тӀеххьара дехар; {{int:apisandbox-continue-clear}} чекхдаккхарца йолу параметраш цӀанъян.",
+       "apisandbox-multivalue-all-namespaces": "$1 (Ерриге цӀерийн меттигаш)",
+       "apisandbox-multivalue-all-values": "$1 (Дерриге маьӀнаш)",
        "booksources": "Жайнан хьосташ",
        "booksources-search-legend": "Жайнех лаьцна хаам лахар",
        "booksources-search": "Лахар",
        "trackingcategories-msg": "Категореш зер",
        "trackingcategories-name": "Хааман цӀе",
        "trackingcategories-desc": "Категорин чутухуш йолчун хила деза хьал",
+       "restricted-displaytitle-ignored": "Гуш йолуш цӀерш тергалцойо агӀонаш",
        "expensive-parserfunction-category-desc": "АгӀорахь тӀех дуккха ресурсийн функцеш лелош ю (<code>#ifexist</code> саниш). Мадарра ду — [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit] агӀонгахь.",
        "trackingcategories-nodesc": "Цунах лаьцна хӀума дац.",
        "trackingcategories-disabled": "Категори дӀаяйина ю",
        "changecontentmodel": "АгӀона контентан модель таяр",
        "changecontentmodel-title-label": "АгӀона цӀе",
        "changecontentmodel-reason-label": "Бахьана:",
+       "changecontentmodel-submit": "Хийца",
        "logentry-contentmodel-change-revertlink": "юхаяккха",
        "logentry-contentmodel-change-revert": "Юхаяккха",
        "protectlogpage": "Ларяран тептар",
        "modifiedarticleprotection": "«[[$1]]» агӀонан ларяран локхалла хийцина",
        "unprotectedarticle": "«[[$1]]» ларъяр дӀадаьстина",
        "movedarticleprotection": "«[[$2]]» агӀона тӀера ларъяр «[[$1]]» агӀона тӀе даьккхина",
+       "protectedarticle-comment": "{{GENDER:$2|Ларйина}} «[[$1]]»",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Хийцина}} «[[$1]]» лаъръяран барам",
+       "unprotectedarticle-comment": "{{GENDER:$2|ДӀадаьккхина}} «[[$1]]» тӀера ларъяр",
        "protect-title": "Ларъяр: «$1»",
        "protect-title-notallowed": "ГӀораллин бараме хьажар «$1»",
        "prot_1movedto2": "«[[$1]]» цӀе хийцина → «[[$2]]»",
        "ipb-unblock": "дӀаякхаблок декъашхонтӀера я IP-адрес тӀера",
        "ipb-blocklist": "Блоктоьхнарш",
        "ipb-blocklist-contribs": "{{GENDER:$1|$1}} къинхьегам",
+       "ipb-blocklist-duration-left": "$1 йисина",
        "unblockip": "ДӀаякхаблок декъашхонтӀера",
        "unblockiptext": "Лелае лахара форма IP-адрес тӀера я декъашхойн дӀаяздар тӀера блокдӀайокхуш.",
        "ipusubmit": "ДIаяккха хӀара блок",
        "unblocked": "[[User:$1|$1]] хьайаьстина.",
        "unblocked-range": "$1 блоктоьхна",
        "unblocked-id": "$1 блокдӀаяьккхина",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]] блокдӀаяьккхина.",
        "blocklist": "Блоктоьхна декъашхой",
+       "autoblocklist": "Автоблоктохарш",
+       "autoblocklist-submit": "Лахар",
+       "autoblocklist-legend": "Автоблоктохарийн могӀам",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Локальни автоблоктохар|Локальни автоблоктохарш}}",
+       "autoblocklist-total-autoblocks": "Дерриге автоблоктохарш: $1",
+       "autoblocklist-empty": "Автоблоктохарийн могӀам беса бу",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Кхин автоблоктохар|Кхин автоблоктохарш}}",
        "ipblocklist": "Блоктоьхна декъашхой",
        "ipblocklist-legend": "Блоктоьхна декъашхо лахар",
        "blocklist-userblocks": "ДӀахьулян дӀаяздарийн блоктохарш",
        "export-templates": "Латадé кепаш",
        "allmessages": "ГӀирса хаамаш",
        "allmessagesname": "Хаам",
-       "allmessagesdefault": "Ӏад дитарца йоза",
+       "allmessagesdefault": "Ӏадйитаран кепаца йоза",
        "allmessagescurrent": "Карарчу хенан йоза",
        "allmessagestext": "ХӀара «MediaWiki» цӀерийн меттигера системан хаамийн могӀа бу.\nХьайна MediaWiki тая лууш делахь, дехар до, проект [https://translatewiki.net translatewiki.net] [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation юьйцучу хьажа].",
        "allmessagesnotsupportedDB": "'''$wgUseDatabaseMessages''' дӀаяйина хилар бахьнехь хӀара агӀо дӀачӀаьгӀна ю.",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|верси импорт йина|версеш импорт йина}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|верси импорт йина|версеш импорт йина}} $2 чура",
        "javascripttest": "JavaScript хьажар",
-       "tooltip-pt-userpage": "Декъашхочун агӀо",
+       "javascripttest-pagetext-unknownaction": "Девзаш доцу дийриг «$1».",
+       "javascripttest-qunit-intro": "Хьажа [$1 тестан документацига] mediawiki.org. тӀехь",
+       "tooltip-pt-userpage": "{{GENDER:|Декъашхочун агӀо}}",
+       "tooltip-pt-anonuserpage": "Сан IP-на декъашхочун агӀо",
        "tooltip-pt-mytalk": "Сан дийцаре агlо",
        "tooltip-pt-anontalk": "Сан IP адресан дийцаре агӀо",
        "tooltip-pt-preferences": "Хьан гlирс нисбар",
        "pageinfo-header-restrictions": "АгӀона ларъяр",
        "pageinfo-header-properties": "АгӀона билгало",
        "pageinfo-display-title": "Гушболу корта",
-       "pageinfo-default-sort": "Къасторан догӀа Ӏад йитарца",
+       "pageinfo-default-sort": "Къасторан догӀа Ӏадйитаран кепаца",
        "pageinfo-length": "АгӀона йохалла (байташкахь)",
        "pageinfo-article-id": "АгӀона ID",
        "pageinfo-language": "АгӀона мотт",
+       "pageinfo-language-change": "хийца",
        "pageinfo-content-model": "АгӀона чулацаман модель",
+       "pageinfo-content-model-change": "хийца",
        "pageinfo-robot-policy": "Лахарийн системийн индексаци",
        "pageinfo-robot-index": "Магийна",
        "pageinfo-robot-noindex": "Магийна дац",
        "pageinfo-category-pages": "АгӀонийн дукхалла",
        "pageinfo-category-subcats": "Бухара категорийн дукхалла",
        "pageinfo-category-files": "Файлийн дукхалла",
+       "pageinfo-user-id": "Декъашхочун ID",
        "markaspatrolleddiff": "Билгалйе теллина санна",
        "markaspatrolledtext": "Билгалъе хӀара агӀо хьаьжжина сана",
        "markedaspatrolled": "ДӀадахка теллина санна хилар",
        "patrol-log-header": "Хьажжина версеш йолу тептар.",
        "log-show-hide-patrol": "$1 тӀехьажаран тептар",
        "log-show-hide-tag": "$1 билгалонийн тептар",
+       "confirm-markpatrolled-button": "ХӀаъ",
        "deletedrevision": "ДӀаяьккхина шира верси $1",
        "filedeleteerror-short": "Файл дӀаяккхаран гӀалат: $1",
        "filedeleteerror-long": "Файл дӀайоккхуш гӀалат даьлла:\n\n$1",
        "newimages": "Керлачу файлийн галерей",
        "newimages-summary": "ХӀокху белхан агӀона чохь гойтуш ю дукха хан йоццуш чуяьхна файлаш.",
        "newimages-legend": "Луьттург",
+       "newimages-user": "Декъашхочун цӀе я IP-адрес",
        "newimages-showbots": "Гайта боташ чуяьхна файлаш",
        "newimages-hidepatrolled": "Къайлаяха патруль йина файлаш",
+       "newimages-mediatype": "Медиа тайпа:",
        "noimages": "Суьрташ дац.",
+       "gallery-slideshow-toggle": "ТӀеяха миниатюраш",
        "ilsubmit": "Лахар",
        "bydate": "терахьашца",
        "sp-newimages-showfrom": "Гайта керла файлаш $2, $1 тӀера дуьйна",
        "saturday-at": "шот дийнахь $1",
        "sunday-at": "кӀиранан дийнахь $1",
        "yesterday-at": "селхана $1 даьлча",
-       "bad_image_list": "Ð\91аÑ\80ам Ñ\85ила Ð±ÐµÐ·Ð° Ð¸Ñ\88Ñ\82а:\n\nÐ\9bоÑ\80аÑ\88 Ñ\85иÑ\80а Ñ\8e Ð¼Ð¾Ð³Ó\80амÑ\8fÑ\85Ñ\8c Ð¹Ð¾Ð»Ñ\83 Ñ\85Ó\80Ñ\83мнаш (могӀийн, йола луш йолу символ тӀира *).\nДуьххьаралера хьажорг магӀанийн хила беза хьажорг кху цамагдо сурт дуьлаче.\nТӀяхьа йогӀуш йолу хьажорг оцу могӀарехь хира ю магóш, билгалла аьлча яззамаш долуче, сурт хьаллаточехь.",
+       "bad_image_list": "Ð\91аÑ\80ам Ñ\85ила Ð±ÐµÐ·Ð° Ð¸Ñ\88Ñ\82а:\n\nÐ\9bоÑ\80аÑ\88 Ñ\85иÑ\80а Ñ\8e Ð¼Ð¾Ð³Ó\80амÑ\8fÑ\85Ñ\8c Ð¹Ð¾Ð»Ñ\83 Ñ\8dлеменÑ\82наш (могӀийн, йола луш йолу символ тӀира *).\nДуьххьаралера хьажорг магӀанийн хила беза хьажорг кху цамагдо сурт дуьлаче.\nТӀяхьа йогӀуш йолу хьажорг оцу могӀарехь хира ю магóш, билгалла аьлча яззамаш долуче, сурт хьаллаточехь.",
        "metadata": "Метахаамаш",
        "metadata-help": "ХӀокху файлаца кхин тӀе хаам бу, даиман чуйоккхуш йолу терахьца чоьнашца йа тӀейоккхучуьнца. Нагахь файлан тӀаьхьа хийцам биняхь, тӀаккха цӀхьаболу барам цӀхьаьна ца ба мега хӀинцалера суьртаца.",
        "metadata-expand": "Гайта кхин тlе болу хаам",
        "exif-urgency-low": "Лахара ($1)",
        "exif-urgency-high": "Лакхара ($1)",
        "exif-urgency-other": "Декъашхочо билгалйина приоритет ($1)",
-       "namespacesall": "маÑ\81Ñ\81о",
+       "namespacesall": "еÑ\80Ñ\80иге",
        "monthsall": "массо",
        "confirmemail": "Электронан поштан адрес бакъдар",
        "confirmemail_noemail": "Ахьа нийса электронан поштан адрес яздина дац [[Special:Preferences|гӀирсан чохь]].",
        "confirm-watch-top": "ТӀетоха хӀара агӀо хьан тергаме могӀам юкъа?",
        "confirm-unwatch-button": "ХӀаъ",
        "confirm-unwatch-top": "ДӀаяккха хӀара агӀо хьай тергаме могӀанан юкъар?",
+       "confirm-rollback-button": "ХӀаъ",
+       "confirm-rollback-top": "ХӀокху агӀона нисдарш юхадаха?",
        "comma-separator": " a,&#32;",
        "quotation-marks": "«$1»",
        "imgmultipageprev": "← хьалха йоьду агӀо",
        "imgmultipagenext": "тӀаьхьа йоьгӀу агӀо →",
        "imgmultigo": "ДехьагӀо!",
        "imgmultigoto": "АгӀончу $1 гӀо",
-       "img-lang-default": "(Ӏад битарца болу мотт)",
+       "img-lang-default": "(Ӏадйитаран кепаца болу мотт)",
        "img-lang-info": "Гайта хӀара сурт $1 $2 маттахь",
        "img-lang-go": "Кхочушдé",
        "ascending_abbrev": "гар",
        "version-specialpages": "Белхан агӀонаш",
        "version-parserhooks": "Cинтаксисан къастор схьалоцурш",
        "version-variables": "Хийцаме",
+       "version-antispam": "Антиспам",
        "version-other": "Кхин",
        "version-mediahandlers": "Медиа кеч ерраш",
        "version-hooks": "Схьалуьцарш",
        "tags-deactivate": "дӀаяйа",
        "tags-hitcount": "$1 {{PLURAL:$1|хийцам}}",
        "tags-create-heading": "Кхолла керла билгало",
-       "tags-create-explanation": "Юха кхоьллина билгалонаш декъашхошна а, боташна а Ӏад йтарца тӀекхочуш хира ю.",
+       "tags-create-explanation": "Юха кхоьллина билгалонаш декъашхошна а, боташна а Ӏадйитаран кепаца тӀекхочуш хира ю.",
        "tags-create-tag-name": "Билгалонна цӀе:",
        "tags-create-reason": "Бахьана:",
        "tags-create-submit": "Кхолла",
        "tags-edit-revision-legend": "ТӀетоха я дӀаяха тегаш {{PLURAL:$1|this revision|all $1 revisions}} чура",
        "tags-edit-logentry-legend": "ТӀетоха я дӀаяха тегаш {{PLURAL:$1|this log entry|all $1 log entries}} чура",
        "tags-edit-existing-tags": "Йолуш йолу билгалонаш:",
-       "tags-edit-existing-tags-none": "''ХӀахӀа''",
+       "tags-edit-existing-tags-none": "''ХӀан-хӀа''",
        "tags-edit-new-tags": "Керла билгалонаш:",
        "tags-edit-add": "ТӀетоха хӀара билгалонаш:",
        "tags-edit-remove": "ДӀаяха хӀара билгалонаш:",
        "tags-edit-remove-all-tags": "(дӀаяха массо билгалонаш)",
        "tags-edit-chosen-placeholder": "Харжа цхьаъ я массийта тег",
+       "tags-edit-chosen-no-results": "Лоьхуш йолу билгалонаш цакарий",
        "tags-edit-reason": "Бахьана:",
        "tags-edit-nooldid-title": "Ӏалашонан верси билгалйина яц",
        "comparepages": "АгӀонаш юстар",
        "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": "$1 {{GENDER:$2|хьаьжина}}  агӀона $3 $4 версега",
-       "logentry-patrol-patrol-auto": "$1 автоматически {{GENDER:$2|хьаьжина}} $3 агӀона версега $4",
+       "logentry-patrol-patrol": "$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-create2": "$1 {{GENDER:$2|кхоьллина}} декъашхочун дӀаяздапр $3",
        "pagelanguage": "АгӀона мотт харжар",
        "pagelang-name": "АгӀо",
        "pagelang-language": "Мотт",
-       "pagelang-use-default": "Ӏад битарца мотт",
+       "pagelang-use-default": "Ӏадйитаран кепаца мотт",
        "pagelang-select-lang": "Харжа мотт",
        "pagelang-submit": "ДӀадахьийта",
        "right-pagelang": "АгӀона мотт хийца",
        "mediastatistics": "Медиа-статистика",
        "mediastatistics-summary": "Чуяьхна файлийн тайпанийн статистикин хаамаш. Кху чохь тӀаьххьара чуяьхна файлийн версеш бен яц. Шираниш я дӀаяхнарш лоруш яц.",
        "mediastatistics-nbytes": "$1 {{PLURAL:$1|байт}} ($2; $3%)",
+       "mediastatistics-bytespertype": "ХӀокху декъан файлан юкъара барам $1 {{PLURAL:$1|байт}} ($2; $3%).",
+       "mediastatistics-allbytes": "Массо файлийн барам: $1 {{PLURAL:$1|байт}} ($2).",
        "mediastatistics-table-mimetype": "MIME-тайп",
        "mediastatistics-table-extensions": "Хила мега шордарш",
        "mediastatistics-table-count": "Файлийн дукхалла",
index d99a3ad..a0cc596 100644 (file)
        "rcshowhideanons-hide": "Tagoa",
        "rcshowhidemine": "$1 akong mga pag-usab",
        "rcshowhidemine-hide": "Tagoa",
-       "rclinks": "Ipakita ang miaging $1 ka kausaban sa miaging $2 ka mga adlaw<br />$3",
+       "rclinks": "Ipakita ang miaging $1 ka kausaban sa miaging $2 ka mga adlaw",
        "diff": "kalainan",
        "hist": "kaagi",
        "hide": "Tagoi",
index b104745..9f94630 100644 (file)
        "yourdomainname": "Lugat-mu:",
        "login": "Log in",
        "nav-login-createaccount": "Hålom / fa'tinas kuenta-mu",
-       "userlogin": "Hålom / fa'tinas kuenta-mu",
        "logout": "Log out",
        "userlogout": "Log out",
        "notloggedin": "Ti malogin",
-       "nologin": "Tåya' iyo-mu login? '''$1'''.",
-       "nologinlink": "Fama'tinas kuenta",
        "createaccount": "Fa'tinas kuenta-hu",
-       "gotaccount": "Guåha esta kuenta-mu? '''$1'''.",
-       "gotaccountlink": "Log in",
        "createaccountmail": "gi e-mail",
        "badretype": "Ti parehu i password siha ni un po'lo.",
        "userexists": "Esta guåha na u'usa enao na nå'an muna'sesetbi.\nAyek fan otru na nå'an.",
        "editingsection": "Tumulaika $1 (patte)",
        "editingcomment": "Tulalaika $1 (komentu)",
        "editconflict": "Tulaika i problema: $1",
-       "explainconflict": "Guåha otru na tinilaika gi påhina ginen i tiempon tumutuhon hao tumulaika.\nMa'annok i tinige' gi hilo' komu på'go.\nMa'annok i tinilaika-mu gi papa'.\nPara un nesita muna'daña i tinilaika-mu yan i guinaha.\n'''I tinige' gi hilo' ha'''' para u såtba annai un yemme' \"{{int:savearticle}}\".",
+       "explainconflict": "Guåha otru na tinilaika gi påhina ginen i tiempon tumutuhon hao tumulaika.\nMa'annok i tinige' gi hilo' komu på'go.\nMa'annok i tinilaika-mu gi papa'.\nPara un nesita muna'daña i tinilaika-mu yan i guinaha.\n'''I tinige' gi hilo' ha'''' para u såtba annai un yemme' \"$1\".",
        "yourtext": "Tinige'-mu",
        "storedversion": "Tinilaika masåtba",
        "editingold": "'''ADAHI: Un tulalaika un ribision påhina gus bihu.\nYanggen un såtba ha', para u fana'malingu i tinilaika siha despues di enao na ribision.'''",
        "prefs-misc": "Misc",
        "saveprefs": "Såtba",
        "prefs-editing": "Tumulaika",
-       "rows": "Fila siha:",
-       "columns": "Kolumna siha:",
        "searchresultshead": "Aligao",
        "recentchangesdays": "Diha siha na para u na'annok gi i tinilaika gi halacha:",
        "recentchangescount": "Kunatu na tinilaika para u na'annok gi i tinilaika gi halacha:",
        "rcshowhideliu": "$1 na muna'sesetbi ni ma log in",
        "rcshowhideanons": "$1 i muna'sesetbi taina'an",
        "rcshowhidemine": "$1 na tinilaika-hu",
-       "rclinks": "Na'annok na $1 tinilaika siha ginen $2 na dihas manmaloffan<br />$3",
+       "rclinks": "Na'annok na $1 tinilaika siha ginen $2 na dihas manmaloffan",
        "diff": "dif",
        "hist": "hist",
        "hide": "Nå'na'",
        "version": "Tinilaika",
        "version-specialpages": "Manespesiat na påhina",
        "fileduplicatesearch-submit": "Aligao",
-       "specialpages": "Manespesiat na påhina",
-       "revdelete-summary": "tulaika i sumaria"
+       "specialpages": "Manespesiat na påhina"
 }
index 36b0758..c3c2109 100644 (file)
        "preview": "پێشبینین",
        "showpreview": "پێشبینین نیشان بدە",
        "showdiff": "گۆڕانکارییەکان نیشان بدە",
-       "blankarticle": "<strong>ئاگاداری:</strong> ئەو پەڕەیەی کە ھەوڵی دروستکردنی دەدەیت واڵایە. ئەگەر کرتە لەسەر «{{int:savearticle}}» بکەیت دووبارە، پەڕەکە بەبێ ھیچ ناوەڕۆکێک دروست دەبێت.",
+       "blankarticle": "<strong>ئاگاداری:</strong> ئەو پەڕەیەی کە ھەوڵی دروستکردنی دەدەیت واڵایە. ئەگەر کرتە لەسەر «$1» بکەیت دووبارە، پەڕەکە بەبێ ھیچ ناوەڕۆکێک دروست دەبێت.",
        "anoneditwarning": "<strong>ھۆشیار بە:</strong> نەڕۆیشتووتەتە ژوورەوە. ھەر دەستکارییەک بکەیت ناونیشانی IPیەکەت بۆ ھەموو کەسێک دیار دەبێت. بەڵام ئەگەر <strong>[$1 بچیتە ژوورەوە]</strong> یان <strong>[$2 ھەژمارێک دروست بکەیت]</strong>، دەستکارییەکانت بە ناوی بەکارھێنەرییەکەتەوە بڵاو دەبێتەوە و لە چەند قازانجی تریشی ھەیە.",
        "anonpreviewwarning": "«نەڕۆشتوویتە ژوورەوە. پاشەکەوتکردن، ئەدرەسی IPەکەت لە مێژووی دەستکاریی ئەم پەڕە تۆمار دەکات.»",
        "missingsummary": "'''وە بیر خستنەوە:''' پوختەیەکت نەنووسیوە بۆ چۆنیەتی گۆڕانکارییەکەت.\nئەگەر جارێکی تر پاشکەوت کردن لێبدەی، بێ پوختە تۆمار دەکرێ.",
-       "selfredirect": "<strong>ئاگاداری:</strong> تۆ خەریکی گواستنەوەی ئەم پەڕەیەیت بۆ سەر خۆی. لەوانەیە خەریکی گواستنەوەی پەڕەیەکی ھەڵە بیت یان ھەوڵی گواستنەوە دەدەیت بۆ ئامانجێکی ھەڵە. \nئەگەر دەەبارە کرتە لەسەر «{{int:savearticle}}» بکەیتەوە، ڕەوانەکەرەکە دروست دەکرێت بەھەرحاڵ.",
+       "selfredirect": "<strong>ئاگاداری:</strong> تۆ خەریکی گواستنەوەی ئەم پەڕەیەیت بۆ سەر خۆی. لەوانەیە خەریکی گواستنەوەی پەڕەیەکی ھەڵە بیت یان ھەوڵی گواستنەوە دەدەیت بۆ ئامانجێکی ھەڵە. \nئەگەر دووبارە کرتە لەسەر «$1» بکەیتەوە، ڕەوانەکەرەکە دروست دەکرێت بەھەرحاڵ.",
        "missingcommenttext": "تکایە لە خوارەوە شرۆڤەیەک بنووسە.",
-       "missingcommentheader": "'''بیرهێنانەوە:''' بۆ ئەم بۆچوونەت سەردێڕ\\بابەت ڕاچاو نەکردووە.\nئەگەر دیسان «{{int:savearticle}}» لێبدەی، دەستکاریەکەت بێ سەردێڕ یان بابەت پاشەکەوت دەبێ.",
+       "missingcommentheader": "'''بیرهێنانەوە:''' بۆ ئەم بۆچوونەت سەردێڕ\\بابەت ڕاچاو نەکردووە.\nئەگەر دیسان «$1» لێبدەی، دەستکاریەکەت بێ سەردێڕ یان بابەت پاشەکەوت دەبێ.",
        "summary-preview": "پێشبینینی کورتە:",
        "subject-preview": "پێشبینینی بابەت:",
        "previewerrortext": "ھەڵەیەک دروست بوو لەکاتی ھەوڵدان بۆ بینینی دەستکارییەکانت.",
        "editingsection": "دەستکاریکردنی $1 (بەش)",
        "editingcomment": "دەستکاریکردنی $1 (بەشی نوێ)",
        "editconflict": "کێشەی دەستکاری: $1",
-       "explainconflict": "کەسێکی تر ئەم پەڕەیە گۆڕیوە لەو کاتەوە تۆ دەستکاریکردنیت دەستپێکردووە.\nبەشی سەرەوەی دەق، شێوازی ئێستای پەڕەکە لە خۆ ئەگرێت.\nگۆڕانکاریەکانی تۆش لە بەشی خوارەوەی دەق نیشان‌دراوە.\nدەبێ گۆڕانکاریەکانی خۆت لەگەڵ ئێستەی پەڕەکەدا تێکەڵبکەی.\n'''تەنیا''' ئەو دەقەی بەشی سەرەوە پاشەکەوت دەبێت، کاتێ «{{int:savearticle}}\" لێدەدەی.",
+       "explainconflict": "کەسێکی تر ئەم پەڕەیە گۆڕیوە لەو کاتەوە تۆ دەستکاریکردنیت دەستپێکردووە.\nبەشی سەرەوەی دەق، شێوازی ئێستای پەڕەکە لە خۆ ئەگرێت.\nگۆڕانکاریەکانی تۆش لە بەشی خوارەوەی دەق نیشان‌دراوە.\nدەبێ گۆڕانکاریەکانی خۆت لەگەڵ ئێستەی پەڕەکەدا تێکەڵبکەی.\n'''تەنیا''' ئەو دەقەی بەشی سەرەوە پاشەکەوت دەبێت، کاتێ «$1\" لێدەدەی.",
        "yourtext": "دەقی تۆ",
        "storedversion": "پیاچوونەوەی ھەڵگیراو",
        "nonunicodebrowser": "'''ئاگاداری:  وێبگەڕەکەت لە یوونی‌کۆد پاڵپشتی ناکات .'''<br />\nپرۆسەی چارەسەرکردن لە کاردایە بۆ ئەوەی ڕیگەت پێ بدا بە پاراوی دەستکاری لاپەڕەکان بکەیت: ئەو پیتانەی وا ASCII نین لە چوارچێوەی دەستکاری‌کردن‌دا وەک کۆدی ژمارە‌شازدەیی(hexadecimal) نیشان ئەدرێن.",
        "badsiglength": "واژووەکەت زۆر درێژە.\nواژوو نابێ لە $1 {{PLURAL:$1|نووسە}} درێژتر بێت.",
        "yourgender": "پێت خۆشە چۆن وەسف بکرێیت؟",
        "gender-unknown": "پێم خۆشە باسی نەکەم",
-       "gender-male": "Ù¾Û\8cاÙ\88",
-       "gender-female": "ژن",
+       "gender-male": "Ù\86Û\8eر",
+       "gender-female": "مێ",
        "prefs-help-gender": "ئەم ھەڵبژاردەیە دڵخوازانەیە.\nبۆ بانگکردن و ئاماژەپێکردن بە شێوەیەکی دروست لەلایەن نەرمامێرەوە بەکاردێت.\nئەم زانیارییە گشتی دەبێت.",
        "email": "ئیمەیل",
        "prefs-help-realname": "ناوی ڕاستەقینە دڵخوازە.\nئەگەر بنووسرێت، لەوانەیە بۆ ئاماژەدان بەرھەمەکەت بە کار بھێنرێت.",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ھەروەھا بڕوانە [[Special:NewPages|پێرستی پەڕە نوێکان]])",
        "recentchanges-legend-plusminus": "(''±۱٢٣'')",
        "recentchanges-submit": "نیشانی بدە",
+       "rcfilters-activefilters": "پاڵێوەرە چالاکەکان",
+       "rcfilters-clear-all-filters": "ھەموو فیلتەرەکان بسڕەوە",
+       "rcfilters-search-placeholder": "پاڵاوتنی گۆڕانکارییە نوێیەکان (بگەڕێ یان دەست بە نووسین بکە)",
+       "rcfilters-filterlist-title": "فیلتەرەکان",
        "rcfilters-filterlist-whatsthis": "ئەمە چییە؟",
        "rcfilters-highlightmenu-title": "ڕەنگێکی نوێ ھەڵبژێرە",
        "rcfilters-filter-registered-label": "تۆمارکراو",
        "rcfilters-filter-editsbyself-label": "مافەکانی خۆت",
        "rcfilters-filter-editsbyself-description": "دەستکارییەکانی خۆت.",
        "rcfilters-filter-editsbyother-label": "دەستکارییەکانی کەسانی تر",
+       "rcfilters-filter-editsbyother-description": "ھەموو گۆڕانکارییەکان بێجگە لەوەی خۆت",
        "rcfilters-filter-user-experience-level-newcomer-label": "تازەکاران",
        "rcfilters-filter-user-experience-level-newcomer-description": "کەمتر لە ١٠ دەستکاری و ٤ ڕۆژ لە چالاک بوون",
        "rcfilters-filter-user-experience-level-experienced-label": "بەکارھێنەرانی پێشکەوتوو",
        "rcfilters-filter-minor-label": "دەستکارییە بچووکەکان",
        "rcfilters-filter-minor-description": "ئەو دەستکارییانەی کە دەستکاریکەر وەک بچووک ناوی بردووە",
        "rcfilters-filter-major-label": "دەستکارییە نا-بچووکەکان",
+       "rcfilters-filter-major-description": "دەستکارییەکانی کە بە بچووک دیاری نەکراون.",
+       "rcfilters-filtergroup-watchlist": "پەڕەکانی لە پێڕستی چاودێریتن",
+       "rcfilters-filter-watchlist-watched-label": "لە پێرستی چاودێری",
+       "rcfilters-filter-watchlist-watched-description": "گۆڕانکاری لە پەڕەکانی کە لە پێڕستی چاودێریتن.",
+       "rcfilters-filter-watchlist-notwatched-label": "لە پێڕستی چاودێریت نییە",
+       "rcfilters-filtergroup-changetype": "جۆری گۆڕانکاری",
        "rcfilters-filter-pageedits-label": "دەستکارییەکانی پەڕە",
        "rcfilters-filter-newpages-label": "دروستکردنی پەڕەکان",
        "rcfilters-filter-categorization-label": "گۆڕانکاری پۆلەکان",
        "rcshowhidecategorization": "$1 پۆلێنکردنی پەڕە",
        "rcshowhidecategorization-show": "نیشانی بدە",
        "rcshowhidecategorization-hide": "شاردراوە",
-       "rclinks": "دوایین $1 گۆڕانکاریی $2 ڕۆژی ڕابردوو نیشان بدە<br />$3",
+       "rclinks": "دوایین $1 گۆڕانکاریی $2 ڕۆژی ڕابردوو نیشان بدە",
        "diff": "جیاوازی",
        "hist": "مێژوو",
        "hide": "بشارەوە",
        "newpageletter": "ن",
        "boteditletter": "بۆت",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|بەکارھێنەر}}ی چاودێر]",
-       "rc_categories": "بەرتەسککردنەوە بە هاوپۆلەکان (به «|» جیای بکەوە‌)",
-       "rc_categories_any": "هەرکام",
+       "rc_categories": "بەرتەسککردنەوە بە هاوپۆلەکان (به «|» جیای بکەوە‌)",
+       "rc_categories_any": "هەرکامێک بێت",
        "rc-change-size-new": "$1 {{PLURAL:$1|بایت}} پاش گۆڕانکاری",
        "newsectionsummary": "/* $1 */ بەشی نوێ",
        "rc-enhanced-expand": "وردەکارییەکان نیشان بدە",
        "recentchangeslinked-summary": "ئەمە لیستێکی گۆڕانکارییەکانی ئەم دوایییانەی ئەو پەڕانەیە کە بەستەریان ھەیە لە پەڕەیەکی دیاریکراو (یان بۆ ئەندامەکانی پۆلێکی دیاریکراو)\nپەڕەکانی [[Special:Watchlist|لیستی چاودێرییەکەت]] '''ئەستوورن'''.",
        "recentchangeslinked-page": "ناوی پەڕە:",
        "recentchangeslinked-to": "بەجێگەی ئەوە گۆڕانکارییەکانی ئەو پەڕانە نیشانبدە کە بەستەریان ھەیە بۆ پەڕەی دیاریکراو",
+       "recentchanges-page-added-to-category": "[[:$1]] زیادکرا بۆ پۆل",
+       "recentchanges-page-removed-from-category": "[[:$1]] لابرا لە پۆل",
        "upload": "پەڕگەیەک بار بکە",
        "uploadbtn": "پەڕگە بار بکە",
        "reuploaddesc": "هەڵوەشانەوەی بارکردن و گەڕانەوە بۆ فۆرمی بارکردن",
        "illegalfilename": "ناوی‌پەڕگەی \"$1\" پیتێکی تێدایە کە ڕێگەنەدراوە بۆ سەردێڕی لاپەڕە بەکاربێت.\nتکایە ناوی پەڕگەکە بگۆڕە و دیسان باری بکەوە.",
        "filename-toolong": "ناوی پەڕگە ناتوانێ لە ٢٤٠ بایت درێژتر بێت.",
        "badfilename": "ناوی پەڕگە بە \"$1\" گۆڕا .",
+       "filetype-mime-mismatch": "فۆرماتی پەڕگە «$1» نەگونجێت لەگەڵ MIMEی دیاریکراوی پەڕگە ($2).",
        "filetype-badmime": "ڕێگە نەدراوە پەڕگەی \"$1\" جۆری MIME بار بکرێت.",
        "filetype-bad-ie-mime": "ناتوانین ئەم پەڕگە باربکەین لەبەر ئەوەی وێبگەڕی Internet Explore ئەوە وەک \"$1\" دەناسێت کە ڕێگەنەدراوەیە و جۆرە پەڕگەیەکی مەترسی‌دارە.",
        "filetype-unwanted-type": "'''\".$1\"''' جۆرە پەڕگەی نەخوازراوە.\n$2، ئەو جۆرە {{PLURAL:$3|پەڕگەیە|پەڕگانەیە}} وا بە باش‌ دازاندرێت.",
        "file-too-large": "ئەو پەڕگەیە ناردووتە زۆر گەورەیە.",
        "filename-tooshort": "ناوی پەڕگە زۆر کورتە.",
        "filetype-banned": "ئەم جۆرە پەڕگەیە قەدەغەیە.",
+       "verification-error": "ئەم پەڕگەیە شکسی ھێنا لە پڕۆسەی پەسەندکردنی پەڕگە.",
        "illegal-filename": "ناوی پەڕگە رێگەپێ‌نەدراوە.",
+       "overwrite": "بەسەردانانی پەڕگەی ئێستا ڕێگە پێنەدراوە.",
        "unknown-error": "ھەڵەیەکی نەزانراو ڕوویداوە.",
+       "tmp-create-error": "نەتوانرا پەڕگەی کاتیی دروست بکرێت.",
        "large-file": "پێشنیار دەکرێت قەبارەی پەڕگەکان زیاتر لە $1 نەبێت؛\nقەبارەی ئەم پەڕگە $2.",
        "largefileserver": "ئەم پەڕگە گەورەتر لەوەیە کە ڕاژەکار ڕێگەدەدات.",
        "emptyfile": "ئەو پەڕگەیەی بارت کردووە لەوە دەچێ واڵا بێت.\nلەوانەیە بە ھۆی هەڵەیەک لە تایپی ناوی پەڕگەکە بێت.\nتکایە تاوتوێی بکە ئەگەر بە ڕاستی دەتەوێ ئەم پەڕگەیە بار بکەی.",
-       "fileexists": "پەڕگەیەک هەر بەو ناوە‌ لە پێش‌دا هەیە، تکایە گەر ئەرخەیان نیت بۆ گۆڕینی، چاوێک لە <strong>[[:$1]]</strong> بکە.\n[[$1|thumb]]",
+       "windows-nonascii-filename": "ئەم ویکییە ڕێگە نادات بە بەکارھێنانی نووسینی تایبەتیی لە سەرناوی پەڕگەکاندا.",
+       "fileexists": "پەڕگەیەک هەر بەو ناوە‌ هەیە، تکایە گەر ئەرخەیان نیت بۆ گۆڕینی، چاوێک لە <strong>[[:$1]]</strong> بکە.\n[[$1|thumb]]",
        "filepageexists": "پەڕەی ناساندن بۆ ئەم پەڕگە پێشتر لە <strong>[[:$1]]</strong> درووستکراوە، بەڵام پەڕگەیەک بەو ناوەوە ئێستا نادۆزرێتەوە.\nئەو پوختەی کە نووسیوتە لە پەڕەی ناساندن بەرچاو ناکەوێت.\nگەر دەتەوێ پوختەکەت بەرچاو کەوێت دەبێ خۆت دەستی دەستکاری بکەی.\n[[$1|thumb]]",
-       "fileexists-extension": "Ù¾Û\95Ú\95Ú¯Û\95Û\8cÛ\95Ú© Ù\87Û\95ر Ø¨Û\95Ù\88 Ù\86اÙ\88Û\95 Ù\87Û\95Û\8cÛ\95: [[$2|thumb]]\n* Ù\86اÙ\88Û\8c Ø¦Û\95Ù\88 Ù¾Û\95Ú\95Ú¯Û\95Û\8c Ø¨Ø§Ø±Û\8c Ø¦Û\95Ú©Û\95Û\8c:<strong>[[:$1]]</strong>\n* Ù\86اÙ\88Û\8c Ø¦Û\95Ù\88 Ù¾Û\95Ú\95Ú¯ەی ئێستا هەیە:<strong>[[:$2]]</strong>\nتکایە ناوێکی دیکە هەڵبژێرە.",
+       "fileexists-extension": "Ù¾Û\95Ú\95Ú¯Û\95Û\8cÛ\95Ú© Ù\87Û\95ر Ø¨Û\95Ù\88 Ù\86اÙ\88Û\95 Ù\87Û\95Û\8cÛ\95: [[$2|thumb]]\n* Ù\86اÙ\88Û\8c Ø¦Û\95Ù\88 Ù¾Û\95Ú\95Ú¯Û\95Û\8c Ø¨Ø§Ø±Û\8c Ø¯Û\95Ú©Û\95Û\8cت:<strong>[[:$1]]</strong>\n* Ù\86اÙ\88Û\8c Ø¦Û\95Ù\88 Ù¾Û\95Ú\95Ú¯Û\95Û\8cەی ئێستا هەیە:<strong>[[:$2]]</strong>\nتکایە ناوێکی دیکە هەڵبژێرە.",
        "fileexists-thumbnail-yes": "لەوە دەچێ ئەم پەڕگە وێنەیەکی بچووک‌کراوە بێت ''(هێما)''. [[$1|thumb]]\nتکایە چاو لە پەڕگەی <strong>[[:$1]]</strong> بکه.‌\nگەر ئەوەی چاوت لێ‌کرد قەبارەی ڕەسەنی هەر ئەو وێنەیە، پێویست ناکات دیسان هێماکەی باربکەی.",
        "file-thumbnail-no": "دەستپێکی ناوی ئەم پەڕگە ئەوەیە: <strong>$1</strong>\nلەوە دەچێ ئەم پەڕگە وێنەیەکی بچووک‌کراوە بێت ''(هێما)''.\nگەر ئەو وێنەت لە قەبارەی ڕەسەنی‌ خۆی‌دا هەیه،‌ تکایە ئەوە بار بکه،‌ دەنا ناوی پەڕگەکە بگۆڕە.",
        "fileexists-forbidden": "پەڕگەیەک بەو ناوە لە پێش‌دا هەیە و سەرنووسین ناکرێت.\nگەر هێشتا دەتەوێ پەڕگەکەت باربکەی، تکایە بگەڕێ دواوە و ناوێکی نوێ بەکاربهێنە.\n[[File:$1|thumb|center|$1]]",
        "uploadwarning": "ئاگادارییەکانی بارکردن",
        "savefile": "پەڕگە پاشەکەوت بکە",
        "uploaddisabled": "بارکردن قەدەخە کراوە",
+       "copyuploaddisabled": "بارکردن بە URL لابرا.",
        "uploaddisabledtext": "بارکردنی پەڕگەکان لە کار خستراوە.",
        "php-uploaddisabledtext": "بارکردنی پەڕگەکان لە PHPدا لە کار خستراوە.\nتکایە چاو لە هەڵبژاردەکانی بارکردنی_پەڕگەکان بکە.",
        "uploadscripted": "ئەم پەڕگە HTML یان کۆدی سکریپتی لەخۆگرتووە کە لەوانەیە ببێتە هۆی هەڵە تێگەیشتنی هێندێ وێبگەڕەکان.",
        "img-auth-accessdenied": "تێپه‌ربوون ره‌تکرایه‌وه‌",
        "img-auth-nofile": "فایلی \"$1\" بوونی نیه‌",
        "img-auth-isdir": "هه‌وڵ ده‌ده‌ی بۆ کردنه‌وه‌ی بوخچه‌ی \"$1\" له‌ کاتێکدا ته‌نیا کردنه‌وه‌ی فایل رێپێدراوه‌",
+       "img-auth-noread": "بەکارھێنەر مۆڵەتی نییە بۆ خوێندنەوەی «$1».",
+       "http-invalid-url": "URLـی ھەڵە: $1",
        "upload-curl-error6": "توانای دەست‌پێ‌گەیشتنی URL نیە",
        "upload-curl-error6-text": "ئەو URL کە ڕاچاوت کردووە توانای دەست‌پێ‌گەیشتنی نییە.\nتکایە دیسان سەرنجی بدەوە کە URL درووست‌ نووسراوە و ماڵپەڕەکە بەردەوام کار دەکات.",
        "upload-curl-error28": "کات‌بەسەرچوونی بارکردن",
        "license": "مۆڵەتنامە:",
        "license-header": "مۆڵەتنامە",
        "nolicense": "ھیچ ھەڵنەبژێردراوە",
+       "licenses-edit": "دەستکاریکردنی ھەڵبژاردەکانی مۆڵەت",
        "license-nopreview": "(پێشبینین ئامادەی کەڵک وەرگرتن نییە)",
        "upload_source_url": " (URLـی بەکار، بۆ دەست‌پێگەیشتنی  گشتی)",
        "upload_source_file": "(پەڕگەی ھەڵبژێرراوت لەسەر کۆمپیوتەرەکەت)",
        "listfiles-delete": "سڕینەوە",
        "listfiles-summary": "ئەم پەڕە تایبەتە ھەموو پەڕگە بارکراوەکان نیشان دەدات.",
        "listfiles_search_for": "بگەڕێ بۆ ناوی میدیای:",
+       "listfiles-userdoesnotexist": "ھەژماری بەکارھێنەریی «$1» تۆمار نەکراوە.",
        "imgfile": "پەڕگە",
        "listfiles": "پێرستی پەڕگەکان",
        "listfiles_thumb": "وێنۆک",
        "randompage": "پەڕەی ھەڕەمەکی",
        "randompage-nopages": "ھیچ پەڕەیەک لە {{PLURAL:$2|بۆشایی ناو|بۆشایی ناوەکان}}ی خوارەوەدا نییە: $1.",
        "randomincategory": "پەڕەیەک بە ھەڵکەوت لە پۆلدا",
+       "randomincategory-invalidcategory": "«$1» ناوی پۆلێکی دروست نییە.",
+       "randomincategory-nopages": "ھیچ پەڕەیەک لە پۆلی [[:Category:$1|$1]]دا نییە.",
        "randomincategory-category": "پۆل:",
        "randomincategory-legend": "پەڕەیەک بە ھەڵکەوت لە پۆلدا",
        "randomincategory-submit": "بڕۆ",
        "wantedfiles": "پەڕگە داواکراوەکان",
        "wantedfiletext-cat": "پەڕگەکانی خوارەوە بەکارھێنراون بەڵام بوونیان نییە. پەڕگەکانی ئەمارەکانی دەرەوە لەوانەیە لەم لیستەدا بن ئەگەرچی بوونیان ھەیە. ھەر باشییەکی درۆی وەھا ھێڵی بەسەردا دەکێشرێ. ھەروەھا، ئەو پەڕانە کە پەڕگەیەکیان بەکارھێناوە کە بوونی نییە لە [[:$1]]دا بە ڕیز کراون.",
        "wantedfiletext-nocat": "پەڕگەکانی خوارەوە بەکارھێنراون بەڵام بوونیان نییە. پەڕگەکانی ئەمارەکانی دەرەوە لەوانەیە لەم لیستەدا بن ئەگەرچی بوونیان ھەیە. ھەر باشییەکی درۆی وەھا <del>ھێڵی بەسەردا دەکێشرێ</del>.",
+       "wantedfiletext-nocat-noforeign": "ئەم پەڕگانە بەکارھاتوون بەڵام دروست نەکراون.",
        "wantedtemplates": "داڕێژە داواکراوەکان",
        "mostlinked": "پەڕەکان بە زۆرترین بەستەری پێدراو",
        "mostlinkedcategories": "پۆلەکان بە زۆرترین بەستەری پێدراو",
        "protectedpages-noredirect": "ڕەوانەکەرەکان بشارەوە",
        "protectedpagesempty": "هیچ لاپەڕەیک ئێستا بەم دیاریکراوانە نەپارێزراوە.",
        "protectedpages-page": "پەڕە",
+       "protectedpages-expiry": "بەسەردەچێت",
+       "protectedpages-performer": "پاراستنی بەکارھێنەر",
        "protectedpages-params": "پارامەترەکانی پاراستن",
        "protectedpages-reason": "ھۆکار",
+       "protectedpages-submit": "پەڕەکان پیشان بدە",
        "protectedpages-unknown-timestamp": "نەزانراو",
        "protectedpages-unknown-performer": "بەکارھێنەرێکی نەناسراو",
        "protectedtitles": "سەرناوە پارێزراوەکان",
        "apisandbox-submit": "داواکاری",
        "apisandbox-reset": "سڕینەوە",
        "apisandbox-retry": "ھەوڵداناوە",
+       "apisandbox-helpurls": "بەستەرەکانی یارمەتی",
+       "apisandbox-examples": "نموونەکان",
+       "apisandbox-dynamic-parameters-add-label": "زیادکردنی پارامەتر",
+       "apisandbox-dynamic-parameters-add-placeholder": "ناوی پارامەتر",
+       "apisandbox-dynamic-error-exists": "پارامەترێک بە ناوی «$1» ھەیە.",
+       "apisandbox-submit-invalid-fields-message": "تکایە بەشە دیاریکراوەکان ڕاست بکەرەوە و دووبارە ھەوڵ بدەرەوە.",
        "apisandbox-results": "ئاکامەکان",
        "apisandbox-continue": "بەردەوامبوون",
        "apisandbox-continue-clear": "سڕینەوە",
        "logempty": "هیچ بابەتێکی هاوتا لە لۆگەکاندا نەدۆزرایەوە.",
        "log-title-wildcard": "گەڕانی ئەو سەرناوانە بەم دەقەوە دەست پێدەکەن",
        "showhideselectedlogentries": "دیاریکردنی بابەتە ھەڵبژێردراوەکانی لۆگ بگۆڕە",
+       "checkbox-select": "ھەڵبژاردنی: $1",
        "checkbox-all": "ھەموو",
        "checkbox-none": "هیچ",
+       "checkbox-invert": "پێچەوانەکردنەوە",
        "allpages": "ھەموو پەڕەکان",
        "nextpage": "پەڕەی پاشەوە ($1)",
        "prevpage": "پەڕەی پێشەوە ($1)",
        "linksearch-pat": "گەڕان بۆ نواندن:",
        "linksearch-ns": "بۆشاییی ناو:",
        "linksearch-ok": "گەڕان",
-       "linksearch-text": "Wildcardی وەک \"*.wikipedia.org\" بەکاردێت.\nلانی کەم پێویستی بە پاوانێکی ئاست-بان ھەیە، بۆ نموونە «*.org» .<br />\nپرۆتۆکۆلە پشتیوانی لێکراوەکان: $1 (ھیچ کام لەمانە بە گەڕانەکەت زێدە مەکە).",
+       "linksearch-text": "Wildcardی وەک \"*.wikipedia.org\" بەکاردێت.\nلانی کەم پێویستی بە پاوانێکی ئاست بەرز ھەیە، بۆ نموونە «*.org» .<br />\nپرۆتۆکۆلە پشتیوانی لێکراوەکان: $1 (ھیچ کام لەمانە بە گەڕانەکەت زێدە مەکە).",
        "linksearch-line": "$1 بەستەرپێ‌دراو لە $2",
        "listusersfrom": "نیشاندانی بەکارھێنەران بە دەستپێکردن لە:",
        "listusers-submit": "نیشان بدە",
        "listgrants-rights": "مافەکان",
        "trackingcategories": "پۆلەکانی شوێنکەوتن",
        "trackingcategories-name": "ناوی پەیام",
+       "restricted-displaytitle-ignored": "پەڕەکان بە ناونیشانی بینینی پشتگوێخراوەوە",
        "trackingcategories-nodesc": "ھیچ وردەکارییەک بەردەست نییە",
        "mailnologin": "ناونیشان بۆ ناردن نییە",
        "mailnologintext": "ده‌بێ له‌ [[Special:UserLogin|ژووره‌وه‌]] بیت و ناونیشانێکی بڕواپێ‌کراوی ئی‌مه‌یلت له‌ ناو [[Special:Preferences|هه‌ڵبژارده‌کان]] دیاری کردبێت تا بتوانی ئی‌مه‌یل بنێریت بۆ به‌کارهێنه‌رانی دیکه‌.",
        "addedwatchtext": "پەڕەی «[[:$1]]» خرایە ژێر [[Special:Watchlist|پێرستی چاودێری]]یەکەت.\nگۆڕانکارییەکانی داھاتووی ئەم پەڕەیە و پەڕەی وتووێژەکەی، لەوێدا پێرست دەکرێت.",
        "removewatch": "لەلیستی چاودێری لایبە",
        "removedwatchtext": "پەڕەی «[[:$1]]» لە [[Special:Watchlist|لیستی چاودێریەکەت]] لابرا.",
+       "removedwatchtext-short": "پەڕەی «$1» لە پێڕستی چاودێریت لابرا.",
        "watch": "چاودێری بکە",
        "watchthispage": "ئەم پەڕەیە بخە ژێر چاودێری",
        "unwatch": "لابردنی چاودێری",
        "protect-title-notallowed": "دیتنی ئاستی پاراستنی «$1»",
        "prot_1movedto2": "[[$1]] گوازرایەوە بۆ [[$2]]",
        "protect-badnamespace-text": "ئەو پەڕانەی لەم بۆشایی ناوەدان ناتواندرێت بپارێزرێن.",
+       "protect-norestrictiontypes-text": "ئەم پەڕەیە ناتواندرێت بپارێزرێت چوونکە ھیچ جۆرێکی پاراستن بەردەست نییە.",
+       "protect-norestrictiontypes-title": "ئەو پەڕانەی کە ناپارێزرێن",
        "protect-legend": "پاراستن تەیید بکە",
        "protectcomment": "ھۆکار:",
        "protectexpiry": "ھەتا:",
        "whatlinkshere-hideimages": "$1 بەستەرەکانی پەڕگە",
        "whatlinkshere-filters": "پاڵێوکەکان",
        "whatlinkshere-submit": "بڕۆ",
+       "autoblockid": "بەربەستی ئۆتۆماتیکی #$1",
        "block": "بەربەستنی بەکارھێنەر",
        "unblock": "لە بەربەست‌دەرهێنانی بەکارهێنەر",
        "blockip": "بەربەستنی {{GENDER:$1|بەکارھێنەر}}",
        "ipbwatchuser": "پەڕەکانی بەکارھێنەر و لێدوانی ئەم بەکارهێنەرە بخە ژێر چاودێری",
        "ipb-disableusertalk": "بەرگری ئەم بەکارھێنەرە بکە لە دستکاریکردنی پەڕەی لێدوانەکەی کاتێک بەربەست کراوە",
        "ipb-change-block": "دیسان بەربەست‌کردنەوەی ئەم بەکارهێنەرە بەم هەڵبژاردانە",
+       "ipb-confirm": "بەربەست کردن دڵنیا بکەرەوە",
        "badipaddress": "ناونیشانی ئای‌پی نەگونجاو",
        "blockipsuccesssub": "بەربەست کردن سەرکەوتوو بوو",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] بەربەست کرا.<br />\nبڕوانە [[Special:BlockList|پێرستی بەربەستن]] بۆ بەسەرداچوونەوەی بەربەستنەکان.",
        "ipblocklist": "بەکارھێنەرە بەربەستکراوەکان",
        "ipblocklist-legend": "دۆزینەوەی بەکارهێنەرێکی بەربەست‌کراو",
        "blocklist-userblocks": "ھەژمارە بەربەستکراوەکان بشارەوە",
+       "blocklist-tempblocks": "بەربەستە کاتییەکان بشارەوە",
+       "blocklist-addressblocks": "بەربەستی تاک ئای-پییەکان بشارەوە",
        "blocklist-target": "مەبەست",
        "blocklist-expiry": "ھەتا:",
        "blocklist-by": "بەڕێوەبەری بەربەستکەر",
        "proxyblockreason": "ناونیشانی ئای‌پی تۆ بەربەست‌کراوە لەبەر ئەوەی پرۆکسیەکی کراوەیە.\nتکایە پەیوەندی بکە بە دابینکەری خزمەتی ئینتەرنەتی خۆت یان پاڵپشتی تەکنیکی و ئاگادریان کەوە لەو کێشە ئەمنیە گرینگە.",
        "sorbsreason": "ناونیشانی ئای‌پی تۆ لە DNSBLدا کە {{SITENAME}} کەڵکی لێ‌وەر دەگرێ، وەک پرۆکسیەکی کراوە لیست کراوە.",
        "sorbs_create_account_reason": "ناونیشانی ئای‌پی تۆ لە DNSBLدا کە {{SITENAME}} کەڵکی لێ‌وەر دەگرێ، وەک پرۆکسیەکی کراوە لیست کراوە.\nبۆیە ناتوانی هەژمارە درووست‌بکەی.",
+       "cant-see-hidden-user": "ئەو بەکارھێنەرەی تۆ ھەوڵی بەربەستکردنی دەدەیت پێشووتر بەربەست کراوە و شاردراوەتەوە. لەبەر ئەوەی تۆ مافی شاردنەوەی بەکارھێنەرت نییە، تۆ ناتوانیت بەربەستی بەکارھێنەرەکە ببیبیت یان دەستکاری بکەیت.",
        "ipbblocked": "ناتوانی بەکارھێنەرانی تر بەربەست بکەیت یان بکەیتەوە، چونکوو خۆت بەربەست کراوی.",
        "ipbnounblockself": "تۆ ڕێگە پێ نەدراویت کە بەربەست لەسەر خۆت لابەریت.",
        "lockdb": "داخستنی بنکەدراوە",
        "lockdbsuccesstext": "بنکەدراو داخرا.<br />\nلەیادت بێ دوای تەواوبوونی چاکسازی [[Special:UnlockDB|بنکەدراو بکەیتەوە]].",
        "unlockdbsuccesstext": "بنکەدراو کرایەوە.",
        "lockfilenotwritable": "پەڕگەی داخستنی بنکەدراو سەرنووس ناکرێت.\nبۆ کردنەوە یا داخستنی بنکەدراو، پێویستە ڕاژەکار بتوانێ ئەو پەڕگە سەرنووس بکات.",
+       "databaselocked": "بنکەدراوەکە پێشووتر داخراوە.",
        "databasenotlocked": "بنکەدراو دانەخراوە.",
+       "lockedbyandtime": "(لەلایەن {{GENDER:$1|$1}} لە $2 لە $3)",
        "move-page": "$1 بگوازەوە",
        "move-page-legend": "گواستنەوەی پەڕە",
        "movepagetext": "بەکارھێنانی ئەم فۆرمەی خوارەوە ناوی پەڕەیەک دەگۆڕێت، بە گواستنەوەی ھەموو مێژووەکەی بۆ ناوی نوێ.\nناوە کۆنەکە دەبێتە پەڕەیەکی ئاڕاستەکردنەوە بۆ ناوە نوێکە.\nدەتوانی ئاڕاستەکان بۆ پەڕەی سەرەکی بەشێوەی خۆکار نوێ بکەیتەوە.\nدڵنیا بە کە [[Special:DoubleRedirects|دووجار ڕەوانەکراوەکان]] یان [[Special:BrokenRedirects|ڕەوانەکراوە شکاوەکان]] تاقی بکەیتەوە.\nتۆ بەرپرسیاری لەوەی کە دڵنیا ببیتەوە بەستەرەکان ھەر پێوەندییان ھەیە بەو شوێنە کە چاوەڕوان دەکرێت.\n\nدەبێت بزانی کە پەڕەکە '''ناگوازرێتەوە''' ئەگەر پێشتر پەڕەیەک بە ناوە نوێکەوە ھەبێت، مەگەر ئەوەی کە پەڕەکە واڵا یان ڕەوانەکراوەیەک بێت و ھیچ مێژووی گۆڕاندنی پێشووی نەبێت.\nئەمە بەو واتایە کە ئەگەر ھەڵەیەک بکەی دەتوانی ناوی پەڕەکە دیسانەوە بگۆڕی بۆ ناوی پێشووی، و ناتوانی بیخەیتە جێگەی پەڕەیەک کە ھەنووکە ھەیە.\n\n'''ھۆشیار بە!'''\nئەمە دەتوانێت گۆڕانێکی زۆر نابەجێ و چاوەڕێنەکراو بێت بۆ پەڕەیەکی بەناوبانگ؛\nتکایە پێش گۆڕینی ناو باش بیر لە ئاکامەکەی بکەوە.",
        "movenotallowedfile": "ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی پەڕگەکان.",
        "cant-move-user-page": "ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی لاپەڕەکانی بەکارهێنەر (جیاواز لە ژێرلاپەڕەکان).",
        "cant-move-to-user-page": "مافی ئەوەت نییە کە پەڕەیەک بگوێزیتەوە بۆ پەڕەیەکی بەکارھێنەری (بەڵام بۆ ژێرپەڕەیەکی بەکارھێنەری دەتوانیت).",
+       "cant-move-category-page": "تۆ مۆڵەتت نییە بۆ گواستناوەی پۆلەکان.",
+       "cant-move-to-category-page": "تۆ مۆڵەتت نییە بۆ گواستنەوەی پەڕەیەک بۆ پۆلێک.",
        "newtitle": "بۆ ناوی نوێی:",
        "move-watch": "پەڕەی سەرچاوە و مەبەست بخە ژێر چاودێری",
        "movepagebtn": "ئەم پەڕەیە بگوازەوە",
        "immobile-source-namespace": "پەڕەکان لە بۆشاییی ناوی \"$1\"دا ناگوێزرێنەوە.",
        "immobile-target-namespace": "گواستنەوەی لاپەڕە بۆناو بۆشایی‌ناو \"$1\" ناکرێت.",
        "immobile-target-namespace-iw": "بەستەرێکی نێوان‌ویکی ئامانجێکی گونجاو نیە بۆ گواستنەوەی لاپەڕە.",
-       "immobile-source-page": "ئەمە لاپەڕە بۆ گواستنەوە نابێت.",
+       "immobile-source-page": "ئەم لاپەڕەیە بۆ گواستنەوە نابێت.",
        "immobile-target-page": "بۆ ئەم سەردێڕی ئامانجە جێگۆڕ ناکرێ.",
        "imagenocrossnamespace": "گواستنەوەی پەڕگە بۆ بۆشایی‌نوێکی غەیری پەڕگە گونجاو نیە.",
        "nonfile-cannot-move-to-file": "گواستنەوەی پەڕگە بۆ بۆشایی‌نوێکی غەیری پەڕگە گونجاو نیە.",
        "exportall": "ھەموو پەڕەکان ھەناردە بکە",
        "exportcuronly": "تەنها پێداچوونەوەی ئێستا لەخۆ بگرێت نەک هەموو مێژوو",
        "exportnohistory": "----\n'''ئاگاداربە: '''ھەناردنی ھەموو مێژووی پەڕەکان لەم فۆرمەوە لەبەر ھۆکاری ڕێخستن، داخراوە.",
+       "exportlistauthors": "پێڕستێکی تەواوی بەشداربووان بۆ ھەر پەڕەیەک پیشان بدە",
        "export-submit": "هەناردن",
        "export-addcattext": "پەڕەکان زێدەبکە لە پۆلی:",
        "export-addcat": "زیاد بکە",
        "export-download": "وەک پەڕگە پاشەکەوتی بکە",
        "export-templates": "داڕێژەکانیش لە خۆگرێت",
        "export-pagelinks": "لەخۆگرتنی لاپەڕەکانی بەستەر پێ‌دراو هەتا قووڵایی:",
+       "export-manual": "پەڕەکان بە دەست زیاد بکە:",
        "allmessages": "پەیامەکانی سیستەم",
        "allmessagesname": "ناو",
        "allmessagesdefault": "دەقی بنەڕەتی",
        "tooltip-pt-mycontris": "پێڕستی بەشدارییەکان",
        "tooltip-pt-anoncontribs": "پێڕستی ئەو دەستکارییانەی لەم ناونیشانی ئای-پییەوە کراوە",
        "tooltip-pt-login": "پێشنیارت پێدەکرێ بچیتە ژوورەوە؛ ھەرچەندە زۆرت لێناکرێ",
+       "tooltip-pt-login-private": "پێویستە بچیتە ژوورەوە بۆ بەکارھێنانی ئەم ویکیپیدیایە",
        "tooltip-pt-logout": "دەرچوون",
        "tooltip-pt-createaccount": "تۆ ھان دەدرێیت کە ھەژمارێک دروست بکەیت و بچیتە ژوورەوە، ئەمە سەرەکی نییە بەھەرحاڵ",
        "tooltip-ca-talk": "وتووێژ سەبارەت بە پەڕەی ناوەڕۆک",
        "exif-cameraownername": "خاوەنی کامێرا",
        "exif-rating": "تازیاری (لە ٥)",
        "exif-copyrighted": "ڕەوشی مافی لەبەرگرتنەوە",
+       "exif-copyrightowner": "خاوەنی مافی بڵاوکردنەوە",
+       "exif-usageterms": "مەرجەکانی بەکارھێنان",
+       "exif-attributionurl": "لەکاتی بەکارھێنانی ئەم کارە، تکایە بەستەر بدە بۆ",
+       "exif-preferredattributionname": "لەکاتی بەکارھێنانی ئەم کارە، تکایە ئاماژە بکە بە",
        "exif-pngfilecomment": "تێبینیی پەڕگەی PNG",
+       "exif-disclaimer": "نابەرپرسییەکان",
        "exif-contentwarning": "ھۆشداری ناوەرۆک",
        "exif-giffilecomment": "تێبینیی پەڕگەی GIF",
        "exif-intellectualgenre": "جۆری بابەت",
        "exif-compression-1": "نەپەستێنراو",
        "exif-copyrighted-true": "خاوەنی مافی بڵاوکردنەوە",
        "exif-copyrighted-false": "ڕەوشی مافی لەبەرگرتنەوە دیاری نەکراوە",
+       "exif-photometricinterpretation-1": "ڕەش و سپی (ڕەش ٠)",
        "exif-unknowndate": "ڕێکەوتی نەزانراو",
        "exif-orientation-1": "ئاسایی",
        "exif-orientation-2": "ئاسۆیی هەڵگێڕدراوەتەوە",
        "exif-orientation-3": "١٨٠° سوڕاوەتەوە",
        "exif-orientation-4": "ستوونی هەڵگێڕدراوەتەوە",
        "exif-componentsconfiguration-0": "بوونی نییە",
+       "exif-exposureprogram-0": "پێناسە نەکراوە",
        "exif-exposureprogram-1": "دەستکار",
        "exif-exposureprogram-2": "بەرنامەی ئاسایی",
        "exif-subjectdistance-value": "$1 مەتر",
        "exif-gpsdestdistance-k": "کیلۆمەتر",
        "exif-gpsdestdistance-m": "میل",
        "exif-gpsdestdistance-n": "میکی دەریایی",
+       "exif-gpsdop-excellent": "نایابە ($1)",
        "exif-gpsdop-good": "چاک ($1)",
+       "exif-gpsdop-moderate": "مامناوەندە ($1)",
+       "exif-gpsdop-fair": "ئاساییە ($1)",
+       "exif-gpsdop-poor": "ھەژارە ($1)",
        "exif-objectcycle-a": "تەنیا بەیانان",
        "exif-objectcycle-p": "تەنیا ئێواران",
        "exif-objectcycle-b": "بەیانان و ئێواران",
        "confirmemail_invalidated": "بڕواپی‌کردنی ناونیشانی ئی‌مەیل هەڵوەشێندراوە",
        "invalidateemail": "هەڵوەشاندنەوەی بڕواپێ‌کردنی ئی‌مەیل",
        "notificationemail_body_changed": "کەسێک، کە لەوانەیە خۆت بووبێت، لە ناونیشانی IPی $1، ناونیشانی پۆستی ئەلیکترۆنی لە $2ەوە گۆڕی بە $3 لە {{SITENAME}}.\n\nئەگەر ئەمە تۆ نەبوویت، ھەر ئێستا پەیوەندی بە بەڕێوەبەرێکی سایتەکەوە بکە.",
+       "notificationemail_body_removed": "کەسێک، کە لەوانەیە خۆت بووبێت، لە ناونیشانی ئای-پی $1، ناونیشانی پۆستی ئەلیکترۆنی ھەژماری $2 لابرد لە {{SITENAME}}.\n\nئەگەر ئەمە تۆ نەبوویت، ھەر ئێستا پەیوەندی بە بەڕێوەبەرێکی سایتەکەوە بکە.",
        "scarytranscludetoolong": "[URL زۆر درێژە]",
        "deletedwhileediting": "'''ھۆشیار بە''': ئەم پەڕە دوای ئەوە تۆ دەستکاریکردنیت دەستپێکرد سڕاوەتەوە!",
        "confirmrecreate-noreason": "بەکارھێنەر [[User:$1|$1]] ([[User talk:$1|talk]]) پەڕەکەی سڕییەوە پاش ئەوەی تۆ دەستکاریکردنی پەڕەکەت دەستپێکرد. تکایە پشتڕاستی بکەوە کە بە ڕاستی دەتەوێ دیسان ئەم پەڕە دروست بکەیتەوە.",
        "recreate": "درووست‌کردنەوە",
+       "confirm-purge-title": "ئەم پەڕەیە پاک بکەرەوە",
        "confirm_purge_button": "باشە",
+       "confirm-purge-top": "کاشی ئەم پەڕەیە پاکبکرێتەوە؟",
+       "confirm-purge-bottom": "پاکسازیکردنی پەڕەیەک کاشەکەی پاکدەکاتەوە و نوێترین وەشانی دەردەخات.",
        "confirm-watch-button": "باشە",
        "confirm-watch-top": "زێدەکردنی ئەم پەڕە بە لیستی چاودێریت؟",
        "confirm-unwatch-button": "باشه‌",
        "confirm-unwatch-top": "ئەم پەڕە لە لیستی چاودێریت لاببرێت؟",
+       "confirm-rollback-button": "باشە",
        "semicolon-separator": "؛&#32;",
        "comma-separator": "،&#32;",
+       "quotation-marks": "«$1»",
        "imgmultipageprev": "← پەڕەی پێشوو",
        "imgmultipagenext": "پەڕەی داهاتوو →",
        "imgmultigo": "بڕۆ!",
        "watchlistedit-raw-done": "لیستی چاودێریەکەت نوێ‌کرایەوە",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 سەردێڕ|$1 سەردێڕ}} زیادکرا:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 سەردێڕ|$1 سەردێڕ}} لابرا:",
+       "watchlistedit-clear-title": "خاوێنکردنی پێڕستی چاودێری",
+       "watchlistedit-clear-legend": "خاوێنکردنی پێڕستی چاودێری",
+       "watchlistedit-clear-explain": "ھەموو پەڕەکان لە پێڕستی چاودێریت لادەبرێن",
        "watchlistedit-clear-titles": "ناونیشانەکان :",
+       "watchlistedit-clear-submit": "خاوێنکردنی پێڕستی چاودێری (ئەمە ھەمیشەییە!)",
+       "watchlistedit-clear-done": "پێڕستی چاودێریت خاوێن کرایەوە",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|1 سەردێڕ|$1 سەردێڕ}} لابرا:",
+       "watchlistedit-too-many": "پەڕەکان زۆرن بۆ پیشاندانیان لێرەدا.",
        "watchlisttools-clear": "لیستی چاودێری پاک بکەرەوە",
        "watchlisttools-view": "گۆڕانکارییە پەیوەندیدارەکان ببینە",
        "watchlisttools-edit": "لیستی چاودێری ببینە و دەستکاری بکە",
        "hebrew-calendar-m7-gen": "نیسان",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|لێدوان]])",
        "timezone-utc": "UTC",
+       "timezone-local": "ناوخۆیی",
        "duplicate-defaultsort": "'''ئاگاداری''' کلیلی پۆلێنکردنی \"$2'' چووەتە شوێنی کلیلی پۆلێنکردنی  \"$1\"",
        "version": "وەشان",
        "version-extensions": "پێوەکراوە دامەزراوەکان",
        "version-hook-name": "ناوی قولاپ",
        "version-hook-subscribedby": "بەشداربوو لە لایەن",
        "version-version": "($1)",
+       "version-no-ext-name": "[بێ ناو]",
        "version-license": "مۆڵەتنامە",
+       "version-ext-license": "مۆڵەتنامە",
        "version-ext-colheader-version": "وەشان",
+       "version-ext-colheader-license": "مۆڵەتنامە",
        "version-ext-colheader-description": "وەسف",
+       "version-ext-colheader-credits": "بەرھەمھێنەر",
        "version-poweredby-others": "دیکە",
        "version-software": "نەرمەکاڵای دامەزراو",
        "version-software-product": "بەرهەم",
        "version-software-version": "وەشان",
        "version-entrypoints-header-url": "ناونیشانی ئینتەرنێتی",
+       "version-libraries-version": "وەشان",
        "version-libraries-license": "مۆڵەت",
        "version-libraries-description": "وەسف",
        "version-libraries-authors": "نووسەر",
        "tags-tag": "ناوی تاگ",
        "tags-display-header": "دەرکەوتنی لە پێرستەکانی گۆڕانکاری",
        "tags-description-header": "وەسفی ماناکەی بە تەواوی",
+       "tags-source-header": "سەرچاوە",
+       "tags-active-header": "چالاک؟",
        "tags-hitcount-header": "گۆڕانکاریە تاگ‌کراوەکان",
+       "tags-actions-header": "کردەوەکان",
        "tags-active-yes": "بەڵێ",
        "tags-active-no": "نا",
        "tags-edit": "دەستکاری",
        "tags-delete": "سڕینەوە",
+       "tags-activate": "کارپێکردن",
+       "tags-deactivate": "لەکارخستن",
        "tags-hitcount": "$1 {{PLURAL:$1|گۆڕان|گۆڕانکاری}}",
+       "tags-create-heading": "تاگی نوێ دروست بکە",
+       "tags-create-tag-name": "ناوی تاگ:",
+       "tags-create-reason": "هۆکار:",
+       "tags-create-submit": "دروستکردن",
+       "tags-create-no-name": "پێویستە ئامژە بە ناوی تاگ بدەیت.",
+       "tags-create-invalid-chars": "تاگەکان نابێت بۆر (<code>،</code>) یان سلاش (<code>/</code>)یان تێدابێت.",
+       "tags-delete-reason": "هۆکار:",
        "comparepages": "پەڕەکان ھەڵسەنگێنە",
        "compare-page1": "پەڕەی ١",
        "compare-page2": "پەڕەی ٢",
        "htmlform-title-not-creatable": "«$1» سەرناوێک نییە کە بکرێت پەڕەی بۆ دروست بکرێت",
        "htmlform-title-not-exists": "$1 بوونی نیە.",
        "logentry-delete-delete": "$1 پەڕەی $3ی {{GENDER:$2|سڕییەوە}}",
+       "logentry-delete-delete_redir": "$1 {{GENDER:$2|ڕەوانەکەری}} $3 سڕیەوە",
        "logentry-delete-restore": "$1 پەڕەی $3ی {{GENDER:$2|ھێنایەوە}}",
        "logentry-delete-revision": "$1 دەرکەوتنی {{PLURAL:$5|پێداچوونەوەیەکی|$5 پێداچوونەوەی}} پەڕەی $3ی {{GENDER:$2|گۆڕیی}}: $4",
        "logentry-suppress-delete": "$1 پەڕەی $3 {{GENDER:$2|بەرگری کرد}}.",
        "logentry-newusers-create2": "ھەژماری بەکارھێنەریی $3 لە لایەن $1 {{GENDER:$2|دروست کرا}}",
        "logentry-newusers-byemail": "ھەژماری بەکارھێنەریی $3 لە لایەن $1 {{GENDER:$2|دروست کرا}} و تێپەڕوشە بە ئیمەیل نێردرا",
        "logentry-newusers-autocreate": "ھەژماری بەکارھێنەریی $1 بە شێوەی خۆگەڕ {{GENDER:$2|دروست کرا}}",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2}} ڕێکخستنەکانی پاراستنی گۆڕی لە $4 بۆ $3",
        "logentry-protect-protect": "$1 $3ی {{GENDER:$2|پاراست}} $4",
        "logentry-protect-modify": "$1 ئاستی پاراستنی $3ی {{GENDER:$2|گۆڕی}} $4",
        "logentry-rights-rights": "$1 ئەندامێتیی {{GENDER:$6|$3}}ی لە $4 بۆ $5 {{GENDER:$2|گۆڕی}}",
index 457ee31..d7ea238 100644 (file)
        "yourdomainname": "U to duminiu:",
        "login": "Cunnessione",
        "nav-login-createaccount": "Cunnessione / registramentu",
-       "userlogin": "Cunnessione / registramentu",
        "logout": "Scunnessione",
        "userlogout": "Scunnessione",
-       "nologin": "Ùn ha ancu un accessu? $1.",
-       "nologinlink": "Registramentu",
        "createaccount": "Registramentu",
-       "gotaccount": "Ùn ha ancu un accessu? $1.",
-       "gotaccountlink": "Cunnessione",
-       "createaccountreason": "Mutivu:",
        "createacct-reason": "Mutivu",
        "loginsuccesstitle": "Cunnessione fatta",
        "acct_creation_throttle_hit": "Desulatu, ai digià fattu $1 registramenti. Ùn ne poi micca fà d'altri.",
        "mypreferences": "Preferenze",
        "prefs-rc": "Ultimi cambiamenti",
        "prefs-watchlist": "Articuli seguitati",
-       "columns": "Culonne:",
        "searchresultshead": "Ricerca",
        "localtime": "Ora lucale",
        "allowemail": "Abilità a ricezzione di e-mail da altri utilizatori",
        "rcshowhideanons": "$1 i cuntributori anonimi",
        "rcshowhidepatr": "$1 e mudifiche verificate",
        "rcshowhidemine": "$1 e mo cuntribuzioni",
-       "rclinks": "Mustrà l'ultime $1 mudifiche in i $2 ghjorni scorsi<br />$3",
+       "rclinks": "Mustrà l'ultime $1 mudifiche in i $2 ghjorni scorsi",
        "hist": "cron",
        "hide": "piattà",
        "show": "mustrà",
index 0899e65..e4376c2 100644 (file)
@@ -5,7 +5,8 @@
                        "Oxyzen",
                        "Reedy",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Stephanecbisson"
                ]
        },
        "tog-underline": "Kuritan sa idalum ang mga link",
        "yourdomainname": "Imo domain:",
        "login": "Mag sulod",
        "nav-login-createaccount": "Magsulod / mag-ubra sang account",
-       "userlogin": "Mag sulod / mag-ubra account",
-       "userloginnocreate": "Magsulod",
        "logout": "Maggwa",
        "userlogout": "Maggwa",
        "notloggedin": "Wala nakasulod",
-       "nologin": "Wala ka account? '''$1'''.",
-       "nologinlink": "Mag-ubra account",
        "createaccount": "Mag-ubra account",
-       "gotaccount": "May account ka na bala? '''$1'''.",
-       "gotaccountlink": "Magsulod",
        "createaccountmail": "Paagi sa email",
        "badretype": "Wala gasanto ang password nga imo ginsulod",
        "userexists": "May naga-usar na sang ginpasulod nga ngalan manug-usar.\nMagpili sang iban nga ngalan.",
        "rcshowhideliu": "$1 ka mga gagamit nga naka-sulod",
        "rcshowhideanons": "$1 ang wala nakilal-an nga mga ga-usar",
        "rcshowhidemine": "$1 akon mga na-islan",
-       "rclinks": "Ipakita ang nagligad ka $1 nga nabag-o lang gid sang $2 ka adlaw<br  />$3",
+       "rclinks": "Ipakita ang nagligad ka $1 nga nabag-o lang gid sang $2 ka adlaw",
        "diff": "ginkala-in",
        "hist": "kasaysayan",
        "hide": "Itago",
index 34ab28b..f62c64f 100644 (file)
@@ -9,7 +9,8 @@
                        "Исмаил Садуев",
                        "Умар",
                        "Macofe",
-                       "Danvintius Bookix"
+                       "Danvintius Bookix",
+                       "Stephanecbisson"
                ]
        },
        "tog-underline": "Багълантыларнынъ тюбюни сызув:",
        "anonpreviewwarning": "Сайткъа кирмединъиз. Саифени сакъласанъыз, денъиштирмелер тарихына сизинъ IP адресинъиз язылыр.",
        "missingsummary": "'''Хатырлатма.''' Денъиштирмелеринъизни къыскъадан тариф этмединъиз. «Саифени сакъла» дёгмесине текрар басув иле денъиштирмелеринъиз тефсирсиз сакъланаджакълар.",
        "missingcommenttext": "Лютфен, ашагъыда тефсир язынъыз.",
-       "missingcommentheader": "'''Хатырлатма:''' Тефсир мевзусыны/серлевасыны язмадынъыз. «{{int:savearticle}}» дёгмесине текрар баскъан сонъ тефсиринъиз серлевасыз сакъланыр.",
+       "missingcommentheader": "'''Хатырлатма:''' Тефсир мевзусыны/серлевасыны язмадынъыз. «$1» дёгмесине текрар баскъан сонъ тефсиринъиз серлевасыз сакъланыр.",
        "summary-preview": "Бакъып чыкъув тасвири:",
        "subject-preview": "Бакъып чыкъув серлевасы:",
        "blockedtitle": "Къулланыджы блок этильди.",
        "editingsection": "«$1» саифесинде болюк денъиштиреятасыз",
        "editingcomment": "«$1» саифесини денъиштиреятасыз (янъы болюк)",
        "editconflict": "Денъиштирмелер чатышмасы: $1",
-       "explainconflict": "Сиз саифени денъиштиргенде башкъа бири де денъиштирме япты.\nЮкъарыдаки язы саифенинъ шимдики алыны косьтере.\nСизинъ денъиштирмелеринъиз астында косьтерильди.\nШимди япкъан денъиштирмелеринъизни ашагъы пенджереден юкъары пенджереге авуштырмакъ керексинъиз.\n\"{{int:savearticle}}\"гъа баскъанда '''тек''' юкъарыдаки язы сакъланаджакъ.",
+       "explainconflict": "Сиз саифени денъиштиргенде башкъа бири де денъиштирме япты.\nЮкъарыдаки язы саифенинъ шимдики алыны косьтере.\nСизинъ денъиштирмелеринъиз астында косьтерильди.\nШимди япкъан денъиштирмелеринъизни ашагъы пенджереден юкъары пенджереге авуштырмакъ керексинъиз.\n\"$1\"гъа баскъанда '''тек''' юкъарыдаки язы сакъланаджакъ.",
        "yourtext": "Сизинъ метнинъиз",
        "storedversion": "Сакълангъан метин",
        "nonunicodebrowser": "'''ТЕНБИ: Браузеринъизде Unicode кодламасы танылмаз. Саифелер денъиштиргенде бутюн ASCII олмагъан ишаретлернинъ ерине оларнынъ оналтылыкъ коду язылыр.'''",
        "rcshowhidemine": "меним япкъан денъиштирмелеримни $1",
        "rcshowhidemine-show": "косьтер",
        "rcshowhidemine-hide": "гизле",
-       "rclinks": "Сонъки $2 куньде япылгъан сонъки $1 денъиштирмени косьтер;<br /> $3",
+       "rclinks": "Сонъки $2 куньде япылгъан сонъки $1 денъиштирмени косьтер;",
        "diff": "фаркъ",
        "hist": "кечмиш",
        "hide": "гизле",
index 4b1400d..74d3655 100644 (file)
@@ -5,7 +5,8 @@
                        "Don Alessandro",
                        "Urhixidur",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Stephanecbisson"
                ]
        },
        "tog-underline": "Bağlantılarnıñ tübüni sızuv:",
        "anonpreviewwarning": "Saytqa kirmediñiz. Saifeni saqlasañız deñiştirmeler tarihına siziñ IP adresiñiz yazılır.",
        "missingsummary": "'''Hatırlatma.''' Deñiştirmeleriñizni qısqadan tarif etmediñiz. \"Saifeni saqla\" dögmesine tekrar basuv ile deñiştirmeleriñiz tefsirsiz saqlanacaqlar.",
        "missingcommenttext": "Lütfen, aşağıda tefsir yazıñız.",
-       "missingcommentheader": "'''Hatırlatma:''' Tefsir mevzusını/serlevasını yazmadıñız. \"{{int:savearticle}}\" dögmesine tekrar basqan soñ tefsiriñiz serlevasız saqlanır.",
+       "missingcommentheader": "'''Hatırlatma:''' Tefsir mevzusını/serlevasını yazmadıñız. \"$1\" dögmesine tekrar basqan soñ tefsiriñiz serlevasız saqlanır.",
        "summary-preview": "Baqıp çıquv tasviri:",
        "subject-preview": "Baqıp çıquv serlevası:",
        "blockedtitle": "Qullanıcı blok etildi.",
        "editingsection": "“$1” saifesinde bölük deñiştireyatasız",
        "editingcomment": "“$1” saifesini deñiştireyatasız (yañı bölük)",
        "editconflict": "Deñiştirmeler çatışması: $1",
-       "explainconflict": "Siz saifeni deñiştirgende başqa biri de deñiştirme yaptı.\nYuqarıdaki yazı saifeniñ şimdiki alını köstere.\nSiziñ deñiştirmeleriñiz astında kösterildi. Şimdi yapqan deñiştirmeleriñizni aşağı pencereden yuqarı pencerege avuştırmaq kereksiñiz.\n\"{{int:savearticle}}\"ğa basqanda '''tek''' yuqarıdaki yazı saqlanacaq.",
+       "explainconflict": "Siz saifeni deñiştirgende başqa biri de deñiştirme yaptı.\nYuqarıdaki yazı saifeniñ şimdiki alını köstere.\nSiziñ deñiştirmeleriñiz astında kösterildi. Şimdi yapqan deñiştirmeleriñizni aşağı pencereden yuqarı pencerege avuştırmaq kereksiñiz.\n\"$1\"ğa basqanda '''tek''' yuqarıdaki yazı saqlanacaq.",
        "yourtext": "Siziñ metniñiz",
        "storedversion": "Saqlanğan metin",
        "nonunicodebrowser": "'''TENBİ: Brauzeriñizde Unicode kodlaması tanılmaz. Saifeler deñiştirgende bütün ASCII olmağan işaretlerniñ yerine olarnıñ onaltılıq kodu yazılır.'''",
        "rcshowhidemine": "menim yapqan deñiştirmelerimni $1",
        "rcshowhidemine-show": "köster",
        "rcshowhidemine-hide": "gizle",
-       "rclinks": "Soñki $2 künde yapılğan soñki $1 deñiştirmeni köster;<br /> $3",
+       "rclinks": "Soñki $2 künde yapılğan soñki $1 deñiştirmeni köster;",
        "diff": "farq",
        "hist": "keçmiş",
        "hide": "gizle",
index 779d9da..79f9dfe 100644 (file)
        "anontalk": "Diskuse",
        "navigation": "Navigace",
        "and": "&#32;a",
-       "qbfind": "Hledání",
-       "qbbrowse": "Listování",
-       "qbedit": "Editování",
-       "qbpageoptions": "Tato stránka",
-       "qbmyoptions": "Moje stránky",
        "faq": "Často kladené otázky",
-       "faqpage": "Project:Často kladené otázky",
        "actions": "Akce",
        "namespaces": "Jmenné prostory",
        "variants": "Varianty",
        "edit-local": "Editovat místní popis",
        "create": "Vytvořit",
        "create-local": "Přidat místní popis",
-       "editthispage": "Editovat stránku",
-       "create-this-page": "Vytvořit tuto stránku",
        "delete": "Smazat",
-       "deletethispage": "Smazat stránku",
-       "undeletethispage": "Obnovit tuto stránku",
        "undelete_short": "Obnovit $1 {{PLURAL:$1|verzi|verze|verzí}}",
        "viewdeleted_short": "Zobrazit {{PLURAL:$1|smazanou editaci|$1 smazané editace|$1 smazaných editací}}",
        "protect": "Zamknout",
        "protect_change": "změnit",
-       "protectthispage": "Zamknout stránku",
        "unprotect": "Změnit zámek",
-       "unprotectthispage": "Změnit zámek této stránky",
        "newpage": "Nová stránka",
-       "talkpage": "Diskusní stránka",
        "talkpagelinktext": "diskuse",
        "specialpage": "Speciální stránka",
        "personaltools": "Osobní nástroje",
-       "articlepage": "Prohlédnout si stránku",
        "talk": "Diskuse",
        "views": "Zobrazení",
        "toolbox": "Nástroje",
        "tool-link-userrights": "Změnit uživatelské skupiny {{GENDER:$1|tohoto uživatele|této uživatelky}}",
        "tool-link-userrights-readonly": "Zobrazit {{GENDER:$1|uživatelské}} skupiny",
        "tool-link-emailuser": "Poslat e-mail {{GENDER:$1|tomuto uživateli|této uživatelce}}",
-       "userpage": "Prohlédnout si uživatelskou stránku",
-       "projectpage": "Prohlédnout si stránku projektu",
        "imagepage": "Prohlédnout si stránku o souboru",
        "mediawikipage": "Prohlédnout si text rozhraní",
        "templatepage": "Prohlédnout si šablonu",
        "preview": "Náhled",
        "showpreview": "Ukázat náhled",
        "showdiff": "Ukázat změny",
-       "blankarticle": "<strong>Upozornění:</strong> Stránka, kterou se chystáte založit, je prázdná. Pokud ještě jednou kliknete na „{{int:savearticle}}“, bude založena zcela bez obsahu.",
+       "blankarticle": "<strong>Upozornění:</strong> Stránka, kterou se chystáte založit, je prázdná. Pokud ještě jednou kliknete na „$1“, bude založena zcela bez obsahu.",
        "anoneditwarning": "<strong>Varování:</strong> Nejste přihlášen(a). Pokud uložíte jakoukoli editaci, vaše IP adresa bude zveřejněna v historii této stránky. Pokud se <strong>[$1 přihlásíte]</strong> nebo si <strong>[$2 vytvoříte účet]</strong>, vaše editace budou připsány vašemu uživatelskému jménu a získáte i další výhody.",
        "anonpreviewwarning": "<em>Nejste přihlášen(a). Uložením zveřejníte svou IP adresu v historii této stránky.</em>",
-       "missingsummary": "<strong>Připomenutí:</strong> Nezadali jste shrnutí editace. Pokud ještě jednou kliknete na „{{int:savearticle}}“, bude vaše editace zapsána bez shrnutí.",
-       "selfredirect": "<strong>Upozornění:</strong> Pokoušíte se tuto stránku přesměrovat na sebe samu.\nMožná jste zadali chybný cíl přesměrování, nebo editujete špatnou stránku.\nPokud ještě jednou kliknete na „{{int:savearticle}}“, bude i přesto přesměrování vytvořeno.",
+       "missingsummary": "<strong>Připomenutí:</strong> Nezadali jste shrnutí editace. Pokud ještě jednou kliknete na „$1“, bude vaše editace zapsána bez shrnutí.",
+       "selfredirect": "<strong>Upozornění:</strong> Pokoušíte se tuto stránku přesměrovat na sebe samu.\nMožná jste zadali chybný cíl přesměrování, nebo editujete špatnou stránku.\nPokud ještě jednou kliknete na „$1“, bude i přesto přesměrování vytvořeno.",
        "missingcommenttext": "Zadejte komentář",
-       "missingcommentheader": "<strong>Připomenutí:</strong> Nezadali jste předmět pro tento komentář.\nPokud ještě jednou kliknete na „{{int:savearticle}}“, bude vaše editace uložena bez něj.",
+       "missingcommentheader": "<strong>Připomenutí:</strong> Nezadali jste předmět pro tento komentář.\nPokud ještě jednou kliknete na „$1“, bude vaše editace uložena bez něj.",
        "summary-preview": "Náhled shrnutí:",
        "subject-preview": "Náhled předmětu:",
        "previewerrortext": "Při pokusu o zobrazení náhledu vašich změn došlo k chybě.",
        "editingsection": "Editace stránky $1 (část)",
        "editingcomment": "Editace stránky $1 (nová sekce)",
        "editconflict": "Editační konflikt: $1",
-       "explainconflict": "Někdo změnil stránku po započetí vaší editace.\nVýše vidíte aktuální text stránky.\nVaše změny jsou uvedeny dole.\nMusíte sloučit své změny se stávajícím textem.\n<strong>Pouze</strong> výše uvedený text zůstane uchován po kliknutí na „{{int:savearticle}}“.",
+       "explainconflict": "Někdo změnil stránku po započetí vaší editace.\nVýše vidíte aktuální text stránky.\nVaše změny jsou uvedeny dole.\nMusíte sloučit své změny se stávajícím textem.\n<strong>Pouze</strong> výše uvedený text zůstane uchován po kliknutí na „$1“.",
        "yourtext": "Váš text",
        "storedversion": "Uložená verze",
        "nonunicodebrowser": "<strong>UPOZORNĚNÍ: Váš prohlížeč není schopen pracovat se znaky Unicode.</strong>\nAbyste mohli tuto stránku bezpečně editovat, je použita pomůcka: všechny znaky mimo ASCII jsou v editačním poli zobrazeny v hexadecimálních kódech.",
        "search-file-match": "(odpovídá obsahu souboru)",
        "search-suggest": "Mysleli jste: $1",
        "search-rewritten": "Zobrazeny výsledky pro $1. Místo toho hledat $2.",
-       "search-interwiki-caption": "Sesterské projekty",
+       "search-interwiki-caption": "Výsledky ze sesterských projektů",
        "search-interwiki-default": "Výsledky z $1:",
        "search-interwiki-more": "(více)",
        "search-interwiki-more-results": "další výsledky",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Zobrazit",
        "rcfilters-activefilters": "Aktivní filtry",
+       "rcfilters-quickfilters": "Uložená nastavení filtrů",
+       "rcfilters-quickfilters-placeholder-title": "Zatím neuloženy žádné odkazy",
+       "rcfilters-quickfilters-placeholder-description": "Pokud chcete uložit svá nastavení filtrů a použít je později, klikněte na ikonku záložky v ploše aktivních filtrů níže.",
+       "rcfilters-savedqueries-defaultlabel": "Uložené filtry",
+       "rcfilters-savedqueries-rename": "Přejmenovat",
+       "rcfilters-savedqueries-setdefault": "Nastavit jako výchozí",
+       "rcfilters-savedqueries-unsetdefault": "Nemít jako výchozí",
+       "rcfilters-savedqueries-remove": "Odstranit",
+       "rcfilters-savedqueries-new-name-label": "Název",
+       "rcfilters-savedqueries-apply-label": "Uložit nastavení",
+       "rcfilters-savedqueries-cancel-label": "Zrušit",
+       "rcfilters-savedqueries-add-new-title": "Uložit současné nastavení filtrů",
        "rcfilters-restore-default-filters": "Obnovit výchozí filtry",
        "rcfilters-clear-all-filters": "Zrušit všechny filtry",
        "rcfilters-search-placeholder": "Filtrovat nedávné změny (prohlížejte nebo začněte psát)",
        "rcfilters-filter-unregistered-label": "Neregistrovaní",
        "rcfilters-filter-unregistered-description": "Editoři, kteří nejsou přihlášení",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Tento filtr je v konfliktu s {{PLURAL:$2|následujícím filtrem|následujícími filtry}} podle zkušeností, {{PLURAL:$2|vyhledávajícím|vyhledávajícími}} pouze registrované uživatele: $1",
-       "rcfilters-filtergroup-authorship": "Autorství editace",
-       "rcfilters-filter-editsbyself-label": "Vaše vlastní editace",
-       "rcfilters-filter-editsbyself-description": "Vaše editace.",
-       "rcfilters-filter-editsbyother-label": "Editace ostatních",
-       "rcfilters-filter-editsbyother-description": "Editace vytvořené ostatními uživateli (ne vámi).",
-       "rcfilters-filtergroup-userExpLevel": "Úrveň zkušeností (pouze registrovaných uživatelů)",
+       "rcfilters-filtergroup-authorship": "Autorství příspěvku",
+       "rcfilters-filter-editsbyself-label": "Vaše změny",
+       "rcfilters-filter-editsbyself-description": "Vaše vlastní příspěvky.",
+       "rcfilters-filter-editsbyother-label": "Změny ostatních",
+       "rcfilters-filter-editsbyother-description": "Všechny změny kromě vašich.",
+       "rcfilters-filtergroup-userExpLevel": "Úroveň zkušeností (pouze registrovaných uživatelů)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Filtr podle zkušeností vyhledává pouze registrované uživatele, tento filtr je tedy v konfliktu s filtrem „Neregistrovaní“.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filtr „Neregistrovaní“ je v konfliktu s jedním nebo více filtry podle zkušeností, vyhledávajícími pouze registrované uživatele. Dotyčné filtry jsou označeny nahoře, v prostoru „Aktivní filtry“.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Nováčci",
        "rcfilters-filter-user-experience-level-newcomer-description": "Méně než 10 editací a 4 dny činnosti.",
        "rcfilters-filter-user-experience-level-learner-label": "Začátečníci",
-       "rcfilters-filter-user-experience-level-learner-description": "Delší činnost a více editací než „Nováčci“, ale méně než „Zkušení uživatelé“.",
+       "rcfilters-filter-user-experience-level-learner-description": "Více zkušeností než „Nováčci“, ale méně než „Zkušení uživatelé“.",
        "rcfilters-filter-user-experience-level-experienced-label": "Zkušení uživatelé",
        "rcfilters-filter-user-experience-level-experienced-description": "Více než 30 dní činnosti a 500 editací.",
        "rcfilters-filtergroup-automated": "Automatizované příspěvky",
        "rcfilters-filter-minor-description": "Editace, které autor označil jako malé.",
        "rcfilters-filter-major-label": "Nemalé editace",
        "rcfilters-filter-major-description": "Editace neoznačené jako malé.",
+       "rcfilters-filtergroup-watchlist": "Sledované stránky",
+       "rcfilters-filter-watchlist-watched-label": "Na seznamu sledovaných stránek",
+       "rcfilters-filter-watchlist-watched-description": "Změny stránek z vašeho seznamu sledovaných.",
+       "rcfilters-filter-watchlist-watchednew-label": "Nové změny sledovaných stránek",
+       "rcfilters-filter-watchlist-watchednew-description": "Změny stránek z vašeho seznamu sledovaných, které jste od jejich změny nenavštívili.",
+       "rcfilters-filter-watchlist-notwatched-label": "Nesledované stránky",
+       "rcfilters-filter-watchlist-notwatched-description": "Vše kromě změn vašich sledovaných stránek.",
        "rcfilters-filtergroup-changetype": "Typ změny",
        "rcfilters-filter-pageedits-label": "Editace stránek",
-       "rcfilters-filter-pageedits-description": "Editace obsahu wiki, diskusí, popisů kategorií...",
+       "rcfilters-filter-pageedits-description": "Editace obsahu wiki, diskusí, popisů kategorií",
        "rcfilters-filter-newpages-label": "Založení stránek",
        "rcfilters-filter-newpages-description": "Editace, které vytvářejí nové stránky.",
        "rcfilters-filter-categorization-label": "Změny kategorií",
        "rcfilters-filter-categorization-description": "Záznamy stránek zařazených do nebo vyřazených z kategorií.",
        "rcfilters-filter-logactions-label": "Zaznamenané činnosti",
-       "rcfilters-filter-logactions-description": "Administrativní úkony, založení účtů, mazání stránek, načtení souborů...",
-       "rcfilters-hideminor-conflicts-typeofchange-global": "Filtr „Malé editace“ je v konfliktu s jedním nebo více filtry podle typu změny, protože určité typy změn nelze označit jako malé. Dotyčné filtry jsou označeny nahoře, v prostoru „Aktivní filtry.",
+       "rcfilters-filter-logactions-description": "Administrativní úkony, založení účtů, mazání stránek, načtení souborů",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "Filtr „Malé editace“ je v konfliktu s jedním nebo více filtry podle typu změny, protože určité typy změn nelze označit jako malé. Dotyčné filtry jsou označeny nahoře, v prostoru „Aktivní filtry.",
        "rcfilters-hideminor-conflicts-typeofchange": "Určité typy změn nelze označit jako malé, tento filtr je proto v konfliktu s následujícími filtry podle typu změny: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Tento filtr podle typu změny je v konfliktu s filtrem „Malé editace“. Určité typy změn nelze označit jako malé.",
+       "rcfilters-filtergroup-lastRevision": "Aktuální verze",
+       "rcfilters-filter-lastrevision-label": "Aktuální verze",
+       "rcfilters-filter-lastrevision-description": "Poslední změna stránky.",
+       "rcfilters-filter-previousrevision-label": "Dřívější verze",
+       "rcfilters-filter-previousrevision-description": "Všechny změny, které nejsou nejnovější úpravou stránky.",
+       "rcfilters-view-tags": "Značky",
        "rcnotefrom": "Níže {{PLURAL:$5|je změna|jsou změny}} od <strong>$3, $4</strong> ({{PLURAL:$1|zobrazena|zobrazeny|zobrazeno}} nejvýše <strong>$1</strong>).",
        "rclistfromreset": "Obnovit výběr data",
        "rclistfrom": "Ukázat nové změny, počínaje od $2, $3",
        "rcshowhidecategorization": "$1 kategorizaci stránek",
        "rcshowhidecategorization-show": "Zobrazit",
        "rcshowhidecategorization-hide": "Skrýt",
-       "rclinks": "Ukázat $1 posledních změn během posledních $2 dnů<br />\n$3",
+       "rclinks": "Ukázat $1 posledních změn během posledních $2 dnů",
        "diff": "rozdíl",
        "hist": "historie",
        "hide": "skrýt",
        "php-uploaddisabledtext": "V PHP je vypnuto načítání souborů. Prosím, zkontrolujte nastavení file_uploads.",
        "uploadscripted": "Tento soubor obsahuje HTML nebo kód skriptu, který by mohl být prohlížečem chybně interpretován.",
        "upload-scripted-pi-callback": "Nelze načíst soubor, který obsahuje instrukci xml-stylesheet.",
+       "upload-scripted-dtd": "Nelze načíst SVG soubory, které obsahují nestandardní DTD deklaraci.",
        "uploaded-script-svg": "V načteném SVG souboru byl nalezen skriptovatelný element „$1“.",
        "uploaded-hostile-svg": "V načteném SVG souboru bylo v elementu se styly nalezeno nebezpečné CSS.",
        "uploaded-event-handler-on-svg": "Nastavování atributů pro obsluhu událostí <code>$1=\"$2\"</code> není v SVG souborech dovoleno.",
        "apisandbox-sending-request": "Odesílá se API požadavek…",
        "apisandbox-loading-results": "Přijímají se API výsledky…",
        "apisandbox-results-error": "Došlo k chybě při načítání odpovědi na API dotaz: $1.",
+       "apisandbox-results-login-suppressed": "Tento požadavek byl zpracován jako od nepřihlášeného uživatele, neboť by jinak mohl sloužit k obcházení bezpečnostních funkcionalit prohlížeče zajišťujících shodný původ. Automatická správa tokenů pro takové požadavky nefunguje, vyplňte je prosím ručně.",
        "apisandbox-request-selectformat-label": "Zobrazit data požadavku jako:",
        "apisandbox-request-format-url-label": "řetězec dotazu do URL",
        "apisandbox-request-url-label": "URL požadavku:",
        "enotif_body_intro_moved": "V $PAGEEDITDATE {{gender:$2|přesunul|přesunula}} $2 na {{grammar:6sg|{{SITENAME}}}} stránku $1, vizte aktuální verzi na $3 .",
        "enotif_body_intro_restored": "V $PAGEEDITDATE {{gender:$2|obnovil|obnovila}} $2 na {{grammar:6sg|{{SITENAME}}}} stránku $1, vizte aktuální verzi na $3 .",
        "enotif_body_intro_changed": "V $PAGEEDITDATE {{gender:$2|změnil|změnila}} $2 na {{grammar:6sg|{{SITENAME}}}} stránku $1, vizte aktuální verzi na $3 .",
-       "enotif_lastvisited": "Vizte $1 pro seznam všech změn od minulé návštěvy.",
-       "enotif_lastdiff": "Na $1 si tuto změnu můžete prohlédnout.",
+       "enotif_lastvisited": "Pro všechny změny od vaší minulé návštěvy vizte $1",
+       "enotif_lastdiff": "Tuto změnu si můžete prohlédnout na $1",
        "enotif_anon_editor": "anonymní uživatel $1",
        "enotif_body": "Vážený uživateli $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nShrnutí editace: $PAGESUMMARY $PAGEMINOREDIT\n\nUživatele, který změnu provedl, můžete kontaktovat:\ne-mailem: $PAGEEDITOR_EMAIL\nna wiki: $PAGEEDITOR_WIKI\n\nDo doby, než stránku navštívíte jako přihlášený uživatel, vám další oznámení k této stránce nebudou zasílána. Případně si můžete vynulovat příznaky ve svém seznamu sledovaných stránek.\n\nS pozdravem váš zasílač hlášení {{grammar:2sg|{{SITENAME}}}}\n\n--\nZměnit nastavení e-mailových oznámení můžete na\n{{canonicalurl:{{#special:Preferences}}}}\n\nNastavení sledovaných stránek může změnit na\n{{canonicalurl:Special:Watchlist/edit}}\n\nStránku můžete ze svých sledovaných vyřadit na\n$UNWATCHURL\n\nRady a kontakt:\n$HELPPAGE",
        "created": "vytvořil",
        "sp-contributions-uploads": "načtené soubory",
        "sp-contributions-logs": "protokolovací záznamy",
        "sp-contributions-talk": "diskuse",
-       "sp-contributions-userrights": "správa uživatelských práv",
+       "sp-contributions-userrights": "správa {{GENDER:$1|uživatelských}} práv",
        "sp-contributions-blocked-notice": "Tento uživatel je momentálně zablokován. Zde je pro přehled zobrazen nejnovější záznam z knihy zablokování:",
        "sp-contributions-blocked-notice-anon": "Tato IP adresa je momentálně zablokována.\nZde je pro přehled zobrazen nejnovější záznam z knihy zablokování:",
        "sp-contributions-search": "Zobrazení příspěvků",
        "autoblocklist-submit": "Hledat",
        "autoblocklist-legend": "Seznam automatických blokování",
        "autoblocklist-localblocks": "Místní {{PLURAL:$1|automatické|automatická}} blokování",
+       "autoblocklist-total-autoblocks": "Celkový počet automatických blokování: $1",
        "autoblocklist-empty": "Seznam automatických blokování je prázdný.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Jiné automatické|Jiná automatická}} blokování",
        "ipblocklist": "Zablokovaní uživatelé",
        "tooltip-pt-mycontris": "Seznam {{GENDER:|vašich}} příspěvků",
        "tooltip-pt-anoncontribs": "Seznam editací provedených z této IP adresy",
        "tooltip-pt-login": "Doporučujeme vám přihlásit se, ovšem není to povinné.",
+       "tooltip-pt-login-private": "Pro používání této wiki se musíte přihlásit",
        "tooltip-pt-logout": "Odhlásit se",
        "tooltip-pt-createaccount": "Doporučujeme vytvořit si účet a přihlásit se, ovšem není to povinné",
        "tooltip-ca-talk": "Diskuse ke stránce",
        "anonymous": "{{PLURAL:$1|anonymního uživatele|anonymních uživatelů}} {{GRAMMAR:2sg|{{SITENAME}}}}",
        "siteuser": "{{GENDER:$2|uživatel|uživatelka}} {{GRAMMAR:2sg|{{SITENAME}}}} $1",
        "anonuser": "anonymní uživatel {{grammar:2sg|{{SITENAME}}}} $1",
-       "lastmodifiedatby": "Tuto stránku naposledy {{GENDER:$4|změnil|změnila|změnil}} $3 v $2, $1.",
+       "lastmodifiedatby": "Tuto stránku naposledy {{GENDER:$4|editoval|editoval(a)}} $3 v $2, $1.",
        "othercontribs": "Založeno na práci $1.",
        "others": "další",
        "siteusers": "{{PLURAL:$2|{{GENDER:$1|uživatele|uživatelky}}|uživatelů}} {{grammar:2sg|{{SITENAME}}}} $1",
        "newimages-legend": "Filtr",
        "newimages-label": "Název souboru (nebo jeho část):",
        "newimages-user": "IP adresa nebo uživatelské jméno",
+       "newimages-newbies": "Zobrazit pouze příspěvky nových účtů",
        "newimages-showbots": "Zobrazit soubory načtené roboty",
        "newimages-hidepatrolled": "Skrýt prověřená načtení souborů",
+       "newimages-mediatype": "Typ média:",
        "noimages": "Není co zobrazit.",
        "gallery-slideshow-toggle": "Přepnout náhledy",
        "ilsubmit": "Hledat",
        "confirmrecreate": "{{GENDER:$1|Uživatel|Uživatelka}} [[User:$1|$1]] ([[User talk:$1|diskuse]]) tuto stránku {{GENDER:$1|smazal|smazala}} poté, co jste {{GENDER:|začal|začala|začali}} editovat, s odůvodněním:\n: „$2“\nOpravdu si přejete znovu tuto stránku založit?",
        "confirmrecreate-noreason": "{{GENDER:$1|Uživatel|Uživatelka}} [[User:$1|$1]] ([[User talk:$1|diskuse]]) {{GENDER:$1|smazal|smazala}} tuto stránku poté, co jste {{GENDER:|začal|začala|začali}} s editací. Potvrďte, zda chcete stránku skutečně znovu založit.",
        "recreate": "Založit znovu",
+       "confirm-purge-title": "Vymazat cache této stránky",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Aktualizovat cachovanou verzi této stránky?",
        "confirm-purge-bottom": "Aktualizace stránky vymaže cache a vynutí zobrazení nejaktuálnější verze.",
        "tags-create-reason": "Důvod:",
        "tags-create-submit": "Vytvořit",
        "tags-create-no-name": "Musíte uvést název značky.",
-       "tags-create-invalid-chars": "Názvy značek nesmí obsahovat čárky (<code>,</code>) ani dopředná lomítka (<code>/</code>).",
+       "tags-create-invalid-chars": "Názvy značek nesmí obsahovat čárky (<code>,</code>), svislé čáry (<code>|</code>) ani dopředná lomítka (<code>/</code>).",
        "tags-create-invalid-title-chars": "Názvy značek nesmí obsahovat znaky, které nelze používat v názvech stránek.",
        "tags-create-already-exists": "Značka „$1“ již existuje.",
        "tags-create-warnings-above": "Při pokusu o vytvoření značky „$1“ {{PLURAL:$1|bylo zjištěno|byla zjištěna}} následující varování:",
        "special-characters-group-thai": "Thajština",
        "special-characters-group-lao": "Laoština",
        "special-characters-group-khmer": "Khmerština",
+       "special-characters-group-canadianaboriginal": "Původní obyvatelé Kanady",
        "special-characters-title-endash": "krátká pomlčka",
        "special-characters-title-emdash": "dlouhá pomlčka",
        "special-characters-title-minus": "znaménko minus",
        "mw-widgets-titleinput-description-redirect": "přesměrování na $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Přidat kategorii…",
        "mw-widgets-usersmultiselect-placeholder": "Přidat další…",
+       "date-range-from": "Od data:",
+       "date-range-to": "Do data:",
        "sessionmanager-tie": "Nelze kombinovat několik typů autentizace požadavků: $1.",
        "sessionprovider-generic": "relace pomocí $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "relace pomocí cookies",
        "pageid": "Stránka s ID $1",
        "rawhtml-notallowed": "Značky &lt;html&gt; nelze používat mimo běžné stránky.",
        "gotointerwiki": "Opustit {{GENDER:4sg|{{SITENAME}}}}",
-       "gotointerwiki-invalid": "Zadaný název byl neplatný.",
-       "gotointerwiki-external": "Chystáte se opustit {{GRAMMAR:4sg|{{SITENAME}}}} a navštívit [[$2]], což je jiná webová stránka.\n\n[$1 Kliknutím zde budete pokračovat na $1].",
+       "gotointerwiki-invalid": "Zadaný název je neplatný.",
+       "gotointerwiki-external": "Chystáte se opustit {{GRAMMAR:4sg|{{SITENAME}}}} a navštívit [[$2]], což je jiná webová stránka.\n\n'''[$1 Pokračovat na $1].'''",
        "undelete-cantedit": "Tuto stránku nemůžete obnovit, protože ji nejste oprávněni editovat.",
-       "undelete-cantcreate": "Tuto stránku nemůžete obnovit, protože stránka s tímto názvem neexistuje a vy ji nejste oprávněni vytvořit."
+       "undelete-cantcreate": "Tuto stránku nemůžete obnovit, protože stránka s tímto názvem neexistuje a vy ji nejste oprávněni vytvořit.",
+       "pagedata-title": "Data stránky",
+       "pagedata-text": "Tato stránka poskytuje datové rozhraní ke stránkám. Uveďte prosím název stránky v URL pomocí syntaxe pro podstránky.\n* Funguje dohadování o obsahu na základě hlavičky Accept vašeho klienta. To znamená, že data stránky budou poskytnuta ve formátu preferovaném vaším klientem.",
+       "pagedata-not-acceptable": "Nenalezen odpovídající formát. Podporované MIME typy: $1",
+       "pagedata-bad-title": "Neplatný název: $1."
 }
index 2c9f789..a4f1d8f 100644 (file)
        "continue-editing": "Przeńdzë do pòla edicje.",
        "editing": "Edicëjô $1",
        "editingsection": "Edicëjô $1 (dzél)",
-       "explainconflict": "Chtos sfórtowôł wprowadzëc swòją wersëjã artikla òbczôs Twòji edicëji.\nGórné pòle edicëji zamëkô w se tekst starnë aktualno zapisóny w pòdôwkòwi baze.\nTwòje zmianë są w dólnym pòlu edicëji.\nBë wprowadzëc swòje zmianë mùszisz zmòdifikòwac tekst z górnégò pòla.\n'''Blós''' tekst z górnégò pòla mdze zapisóny w baze czej wcësniesz \"{{int:savearticle}}\".",
+       "explainconflict": "Chtos sfórtowôł wprowadzëc swòją wersëjã artikla òbczôs Twòji edicëji.\nGórné pòle edicëji zamëkô w se tekst starnë aktualno zapisóny w pòdôwkòwi baze.\nTwòje zmianë są w dólnym pòlu edicëji.\nBë wprowadzëc swòje zmianë mùszisz zmòdifikòwac tekst z górnégò pòla.\n'''Blós''' tekst z górnégò pòla mdze zapisóny w baze czej wcësniesz \"$1\".",
        "yourtext": "Twój tekst",
        "yourdiff": "Zjinaczi",
        "copyrightwarning": "Bôczë, że wszëtczé edicëje w {{SITENAME}} są wprowadzané pòd zastrzégą $2 (òb. $1 dlô detalów). Jeżlë nie chcesz bë to co napiszesz bëło editowóné czë kòpijowóné, tedë nie zacwierdzôj nëch edicëjów.<br />Zacwierdzając zmianë dôwôsz parolã, że to co môsz napisóné je Twòjégò aùtorstwa, abò skòpijowóné z dostónków public domain abò jinëch wòlnëch licencëjów. '''NIE DODÔWÔJ CËZËCH TEKSTÓW BEZ ZEZWÒLENIÔ!'''",
        "rcshowhidemine": "$1 mòje edicje",
        "rcshowhidemine-hide": "Zatacë",
        "rcshowhidecategorization": "$1 kategòrizacjã strón",
-       "rclinks": "Pòkażë slédnëch $1 zmianów zrobionëch òb slédné $2 dniów<br />$3",
+       "rclinks": "Pòkażë slédnëch $1 zmianów zrobionëch òb slédné $2 dniów",
        "diff": "jinosc",
        "hist": "hist.",
        "hide": "zatacë",
        "confirm_purge_button": "Jo!",
        "imgmultigo": "Biéj!",
        "autoredircomment": "Przeczérowanié do [[$1]]",
+       "autosumm-new": "Pòwsta nowô starna:",
        "watchlisttools-view": "Òbaczë wôżnészé zmianë",
        "watchlisttools-edit": "Òbaczë a editëjë lëstã ùzérónëch artiklów",
        "watchlisttools-raw": "Editëjë sërą lëstã",
index 999ba58..5cad6ca 100644 (file)
        "creating": "сътворѥниѥ ⁖ $1 ⁖",
        "editingsection": "исправлѥниѥ ⁖ $1 ⁖ (чѧсть)",
        "editingcomment": "исправлѥниѥ ⁖ $1 ⁖ (нова чѧсть)",
-       "explainconflict": "нѣкъто сѭ страницѫ иꙁмѣнилъ въ врѣмѧ ѥгда тꙑ ѥѩжє исправлꙗти почѧашє ⁙\nврьхоу нꙑнѣщьн҄ь страницѧ обраꙁъ авлѥнъ ѥстъ ⁙\nниꙁоу жє твоꙗ мѣна авлѥна ѥстъ ⁙\nсъѥдинити твоѭ мѣноу съ новомь обраꙁомь страницѧ длъжєнъ ѥси ⁙\nащє жє ⁖ {{int:savearticle}} ⁖ жьмєши · <strong>тъкъмо</strong> напьсаниѥ ижє врьхоу ѥстъ съхранѥно бѫдєтъ",
+       "explainconflict": "нѣкъто сѭ страницѫ иꙁмѣнилъ въ врѣмѧ ѥгда тꙑ ѥѩжє исправлꙗти почѧашє ⁙\nврьхоу нꙑнѣщьн҄ь страницѧ обраꙁъ авлѥнъ ѥстъ ⁙\nниꙁоу жє твоꙗ мѣна авлѥна ѥстъ ⁙\nсъѥдинити твоѭ мѣноу съ новомь обраꙁомь страницѧ длъжєнъ ѥси ⁙\nащє жє ⁖ $1 ⁖ жьмєши · <strong>тъкъмо</strong> напьсаниѥ ижє врьхоу ѥстъ съхранѥно бѫдєтъ",
        "yourtext": "твоѥ напьсаниѥ",
        "templatesused": "сѥѩ страницѧ {{PLURAL:$1|сь обраꙁьць польꙃоуѥтъ сѧ ѥстъ|с҄и обраꙁьца польꙃоуѭтъ сѧ ѥстє|с҄и обраꙁьци польꙃоуѭтъ сѧ сѫтъ}} :",
        "template-protected": "(ꙁабранєно ѥстъ)",
        "rcshowhidemine": "$1 моѩ мѣнъ",
        "rcshowhidemine-show": "каꙁаниѥ",
        "rcshowhidemine-hide": "съкрꙑтиѥ",
-       "rclinks": "$1 послѣдьн҄ь  мѣнъ · ѩжє $2 послѣдьни дьни створѥнꙑ сѫтъ · каꙁаниѥ<br />$3",
+       "rclinks": "$1 послѣдьн҄ь  мѣнъ · ѩжє $2 послѣдьни дьни створѥнꙑ сѫтъ · каꙁаниѥ",
        "diff": "ра҃ꙁн",
        "hist": "їс҃т",
        "hide": "съкрꙑи",
index 7b44e84..5cbc556 100644 (file)
        "yourdomainname": "Сирĕн доменă:",
        "login": "Кĕрĕр",
        "nav-login-createaccount": "Сайта кĕр / регистрацилен",
-       "userlogin": "Кĕр / аккаунт ту",
-       "userloginnocreate": "Кĕмелли",
        "logout": "Сеансне пĕтерни",
        "userlogout": "Тухрăр",
        "notloggedin": "Кĕмен",
-       "nologin": "Аккаунт çук-и? $1.",
-       "nologinlink": "Çĕнĕ хутшăнакана регистрацилесси",
        "createaccount": "Аккаунт ту",
-       "gotaccount": "Аккаунт пур-и? $1.",
-       "gotaccountlink": "Кĕрĕр",
        "createaccountmail": "эл. почта тăрăх",
        "createacct-realname": "Чăн-чăн ят (пулсан)",
        "createacct-submit": "Аккаунт ту",
        "prefs-misc": "Ытти ĕнерлевсем",
        "saveprefs": "Çырса хур",
        "prefs-editing": "Тӳрлетни",
-       "rows": "Йĕркесем:",
-       "columns": "Юпасем:",
        "searchresultshead": "Шырамалли",
        "recentchangesdays": "Çак кунсен хушшинчи юлашки улшăнусене кăтартмалла:",
        "recentchangescount": "Списокра çакăн чухлĕ тӳрлетӳ кăтартмалла:",
        "rcshowhidemine-show": "кăтартмалла",
        "rcshowhidemine-hide": "кăтартмалла мар",
        "rcshowhidecategorization-show": "Кăтарт",
-       "rclinks": "Юлашки $2 кун хушшинче тунă $1 улшăнусене кăтартмалла<br />$3",
+       "rclinks": "Юлашки $2 кун хушшинче тунă $1 улшăнусене кăтартмалла",
        "diff": "танл.",
        "hist": "ист",
        "hide": "кăтартмалла мар",
        "undeleterevisions": "$1 {{PLURAL:$1|верси|версисене}} пăса утнă",
        "undeletebtn": "Каялла тавăр!",
        "undeleteviewlink": "пăх",
-       "undeletedrevisions": "{{PLURAL:$1|1 улăштарни|$1 улăштарнисене}} тавăрнă.",
-       "undeletedfiles": "{{PLURAL:$1|1 файл|$1 файлсене}} тавăрнă",
        "undelete-search-box": "Кăларса пăрахнă страницăсен хушшинчи шырав",
        "undelete-search-submit": "Шыра",
        "namespace": "Ят хушши:",
index 0ddeac0..936e38c 100644 (file)
        "redirectedfrom": "(Ailgyfeiriad oddi wrth $1)",
        "redirectpagesub": "Tudalen ailgyfeirio",
        "redirectto": "Ailgyfeirio i:",
-       "lastmodifiedat": "Newidiwyd y dudalen hon ddiwethaf $2, $1.",
+       "lastmodifiedat": "Newidiwyd y dudalen hon ddiwethaf ar $1, am $2.",
        "viewcount": "{{PLURAL:$1|Ni chafwyd dim|Cafwyd $1|Cafwyd $1|Cafwyd $1|Cafwyd $1|Cafwyd $1}} ymweliad â'r dudalen hon.",
        "protectedpage": "Tudalen a ddiogelwyd",
        "jumpto": "Neidio i:",
        "databaseerror-query": "Ymholiad: $1",
        "databaseerror-function": "Ffwythiant: $1",
        "databaseerror-error": "Gwall: $1",
+       "transaction-duration-limit-exceeded": "Oherwydd y 'lag' hirach nag arfer, daethpwyd a'r cais hwn i ben, gan fod yr amser sgwennu ($1) yn hirach na $2 - yr ail gyfnod hiraf a ganiateir.\n\nOs ydych yn newid llawer o bethau ar yr un pryd yna, beth am geisio newid llai o bethau?",
        "laggedslavemode": "Rhybudd: hwyrach nad yw'r dudalen yn cynnwys diwygiadau diweddar.",
        "readonly": "Databas ar glo",
        "enterlockreason": "Rhowch eglurhad dros gloi'r databas, ac amcangyfrif hyd at pa bryd y bydd y databas dan glo",
        "missingarticle-rev": "(#golygiad: $1)",
        "missingarticle-diff": "(Gwahaniaeth: $1, $2)",
        "readonly_lag": "Mae'r databas wedi'i gloi'n awtomatig tra bod y gwas-weinyddion yn asio gyda'r prif weinydd",
+       "nonwrite-api-promise-error": "Mae'r pennawd  'Promise-Non-Write-API-Action' HTTP wedi'i ddanfon ond roedd y cais i fodiwl-sgwennu API (''API write module'').",
        "internalerror": "Gwall mewnol",
        "internalerror_info": "Gwall mewnol: $1",
        "internalerror-fatal-exception": "Cafwyd nam difrifol o fath \"$1\"",
        "filerenameerror": "Wedi methu ail-enwi'r ffeil '$1' yn '$2'.",
        "filedeleteerror": "Wedi methu dileu'r ffeil \"$1\".",
        "directorycreateerror": "Wedi methu creu'r cyfeiriadur \"$1\".",
+       "directoryreadonlyerror": "Mae cyfeirlyfr \"$1\" yn ddarllen-yn-unig.",
+       "directorynotreadableerror": "Ni ellir darllen cyfeirlyfr \"$1\".",
        "filenotfound": "Heb gael hyd i'r ffeil '$1'.",
        "unexpected": "Gwerth annisgwyl: \"$1\"=\"$2\".",
        "formerror": "Gwall: Wedi methu danfon y ffurflen",
        "no-null-revision": "Ni lwyddwyd i wneud diwygiad newydd heb unrhyw newid ynddo, i'r dudalen \"$1\"",
        "badtitle": "Teitl gwael",
        "badtitletext": "Mae'r teitl a ofynnwyd amdano yn annilys, yn wag, neu cysylltu'n anghywir rhwng ieithoedd neu wicïau. Gall fod ynddo un nod neu ragor na ellir eu defnyddio mewn teitlau.",
+       "title-invalid-empty": "Mae'r ddalen a geisiwch yn wag, neu'n cynnwys enw defnyddenw (''namespace'') yn unig.",
+       "title-invalid-utf8": "Mae'r ddalen a geisiwch yn cynnwys dilyniant UTF-8 annilys.",
+       "title-invalid-interwiki": "Mae'r cais yn cynnwys dolen rhyngwici na ellir ei defnyddio mewn teitlau.",
+       "title-invalid-talk-namespace": "Mae teitl ddalen a gesiwch yn cyfeirio at ddalen Sgwrs na all fodoli.",
+       "title-invalid-characters": "Mae'r ddalen a geisiwch yn cynnwys symbloau na ellir eu derbyn: \"$1\".",
+       "title-invalid-relative": "Mae gan y teitl lwybr perthnasol. Mae cynnwys (./, ../) yn annilys, gan eu bod yn bygro'r porwr.",
+       "title-invalid-magic-tilde": "Mae'r ddalen a geisiwch yn cynnwys symbolau annilys: (<nowiki>~~~</nowiki>).",
+       "title-invalid-too-long": "Mae teitl y ddalen a geisiwch yn rhy hir o lawer. Rhaid iddi fod yn llai na $1 {{PLURAL:$1|beit|beit}} mewn cod UTF-8.",
+       "title-invalid-leading-colon": "Mae teitl y ddalen a geisiwch yn cynnwys colon annilys, ar y dechrau.",
        "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.",
        "viewsource": "Dangos côd y dudalen",
        "viewsource-title": "Gweld cod y dudalen $1",
        "actionthrottled": "Tagwyd y weithred",
-       "actionthrottledtext": "Mae camau gwrth-sbam y wici yn cyfyngu ar ba mor aml y gall defnyddwyr ailwneud y weithred hon mewn byr amser, ac rydych chi wedi croesi'r terfyn.\nCeisiwch eto ymhen rhai munudau.",
+       "actionthrottledtext": "Mae camau gwrth-sbam y wici yn cyfyngu ar ba mor aml y gall defnyddwyr ail-wneud y weithred hon mewn byr amser, ac rydych chi wedi croesi'r terfyn hwn.\nCeisiwch eto ymhen rhai munudau.",
        "protectedpagetext": "Mae'r dudalen hon wedi'i diogelu rhag cael ei thrin a'i thrafod.",
        "viewsourcetext": "Cewch weld a chopïo côd y ddalen:",
-       "viewyourtext": "Cewch weld a copïo ffynhonnell ''eich golygiadau'' i'r dudalen hon:",
+       "viewyourtext": "Cewch weld a chopïo ffynhonnell <strong>your edits</strong> i'r ddalen hon.",
        "protectedinterface": "Testun ar gyfer rhyngwyneb y wici yw cynnwys y dudalen hon. Clowyd y dudalen er mwyn ei diogeli. Os am gyfieithu'r neges neu ei newid ym mhob wici yn hytrach nag yn hwn yn unig, defnyddiwch [https://translatewiki.net/ translatewiki.net], y prosiect MediaWiki sy'n hyrwyddo'r gwaith cyfieithu.",
        "editinginterface": "<strong>Dalier sylw:</strong> Rydych yn golygu tudalen sy'n rhan o destun rhyngwyneb y meddalwedd. Bydd newidiadau i'r dudalen hon yn effeithio ar y rhyngwyneb a ddefnyddir ar y wici hwn yn unig.",
        "translateinterface": "I ychwanegu neu newid y cyfieithiad ar gyfer pob wici, defnyddiwch [https://translatewiki.net/ translatewiki.net], sef prosiect lleol MediaWiki.",
-       "cascadeprotected": "Diogelwyd y dudalen hon rhag ei newid, oherwydd ei bod wedi ei chynnwys yn y {{PLURAL:$1|dudalen ganlynol|dudalen ganlynol|tudalennau canlynol|tudalennau canlynol|tudalennau canlynol|tudalennau canlynol}}, a {{PLURAL:$1|honno yn ei thro wedi ei|honno yn ei thro wedi ei|rheiny yn eu tro wedi eu|rheiny yn eu tro wedi eu|rheiny yn eu tro wedi eu|rheiny yn eu tro wedi eu}} diogelu, a'r dewisiad 'sgydol' ynghynn:\n$2",
+       "cascadeprotected": "Diogelwyd y ddalen hon rhag ei newid, oherwydd ei bod wedi ei chynnwys yn y {{PLURAL:$1|ddalen ganlynol|ddalen ganlynol|dalennau canlynol|dalennau canlynol|dalennau canlynol|dalennau canlynol}}, a ddiogelwyd, a'r dewisiad hwn yn weithredol: $2",
        "namespaceprotected": "Nid oes caniatâd gennych i olygu tudalennau yn y parth '''$1'''.",
        "customcssprotected": "Nid oes caniatâd ganddoch i olygu'r dudalen CSS hon oherwydd bod gosodiadau personol defnyddiwr arall arno.",
        "customjsprotected": "Nid oes caniatâd ganddoch i olygu'r dudalen JavaScript hon oherwydd bod gosodiadau personol defnyddiwr arall arno.",
        "preview": "Rhagolwg",
        "showpreview": "Dangos rhagolwg",
        "showdiff": "Dangos newidiadau",
-       "blankarticle": "<strong>Gan bwyll:</strong> Mae'r dudalen rydych yn ei chreu'n wag. Os cliciwch \"{{int:savearticle}}\" eto, yna caiff y dudalen ei chreu heb unrhyw gynnwys ynddi.",
+       "blankarticle": "<strong>Gan bwyll:</strong> Mae'r dudalen rydych yn ei chreu'n wag. Os cliciwch \"$1\" eto, yna caiff y dudalen ei chreu heb unrhyw gynnwys ynddi.",
        "anoneditwarning": "<strong>Dalier sylw</strong>: Nid ydych wedi mewngofnodi. Fe fydd eich cyfeiriad IP yn ymddangos ar hanes golygu'r dudalen hon. Gallwch ddewis cuddio'ch cyfeiriad IP drwy greu cyfrif (a mewngofnodi) cyn golygu.",
        "anonpreviewwarning": "''Nid ydych wedi mewngofnodi. Os y cadwch eich newidiadau caiff eich cyfeiriad IP ei gofnodi yn hanes golygu'r dudalen hon.''",
        "missingsummary": "'''Sylwer:''' Nid ydych wedi gosod nodyn yn y blwch 'Crynodeb'.\nOs y pwyswch eto ar 'Cadw'r dudalen' caiff y golygiad ei gadw heb nodyn.",
-       "selfredirect": "<strong>Gofal:</strong> Rydych yn ailgyfeirio'r dudalen hon ati hi ei hun!  Gwirwch yr hyn rydych yn ceisio'i wneud. Os cliciwch \"{{int:savearticle}}\" eto yna caiff y dudalen ailgyfeirio (wallus!) ei chreu beth bynnag.",
+       "selfredirect": "<strong>Gofal:</strong> Rydych yn ailgyfeirio'r dudalen hon ati hi ei hun!  Gwirwch yr hyn rydych yn ceisio'i wneud. Os cliciwch \"$1\" eto yna caiff y dudalen ailgyfeirio (wallus!) ei chreu beth bynnag.",
        "missingcommenttext": "Rhowch eich sylwadau isod.",
-       "missingcommentheader": "<strong>Nodyn atgoffa:</strong> \nNid ydych wedi cynnig unrhywbeth yn y blwch 'Pwnc:'. Os y cliciwch \"{{int:savearticle}}\" eto fe gedwir y golygiad heb bennawd.",
+       "missingcommentheader": "<strong>Nodyn atgoffa:</strong> \nNid ydych wedi cynnig unrhywbeth yn y blwch 'Pwnc:'. Os y cliciwch \"$1\" eto fe gedwir y golygiad heb bennawd.",
        "summary-preview": "Rhagolwg o'r crynodeb:",
        "subject-preview": "Rhagolwg pwnc:",
        "previewerrortext": "Cafwyd nam tra'n ceisio creu rhagolwg o'r newidiadau.",
        "editingsection": "Yn golygu $1 (adran)",
        "editingcomment": "Yn golygu $1 (adran newydd)",
        "editconflict": "Cyd-ddigwyddiad golygu: $1",
-       "explainconflict": "Mae rhywun arall wedi newid y dudalen hon ers i chi ddechrau ei golygu hi.\nMae'r blwch testun uchaf yn cynnwys testun y dudalen fel y mae hi rwan.\nMae eich newidiadau chi yn ymddangos yn y blwch testun isaf.\nBydd yn rhaid i chi gyfuno eich newidiadau chi a'r testun sydd yn bodoli eisoes.\n'''Dim ond''' y testun yn y blwch testun '''uchaf''' fydd yn cael ei roi ar gadw pan wasgwch y botwm \"{{int:savearticle}}\".",
+       "explainconflict": "Mae rhywun arall wedi newid y dudalen hon ers i chi ddechrau ei golygu hi.\nMae'r blwch testun uchaf yn cynnwys testun y dudalen fel y mae hi rwan.\nMae eich newidiadau chi yn ymddangos yn y blwch testun isaf.\nBydd yn rhaid i chi gyfuno eich newidiadau chi a'r testun sydd yn bodoli eisoes.\n'''Dim ond''' y testun yn y blwch testun '''uchaf''' fydd yn cael ei roi ar gadw pan wasgwch y botwm \"$1\".",
        "yourtext": "Eich testun",
        "storedversion": "Y golygiad diweddaraf yn y storfa",
        "nonunicodebrowser": "'''RHYBUDD: Nid yw eich porwr yn cydymffurfio ag Unicode. Serch hyn, mae modd i chi olygu tudalennau: bydd nodau sydd ddim yn rhan o ASCII yn ymddangos yn y blwch golygu fel codau hecsadegol.'''",
        "right-editsemiprotected": "Golygu tudalennau sydd wedi eu diogelu, ond \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Golygu cynnwys y ddalen",
        "right-editinterface": "Golygu'r rhyngwyneb",
-       "right-editusercssjs": "Golygu ffeiliau CSS a JS yn perthyn i ddefnyddwyr eraill",
        "right-editusercss": "Golygu ffeiliau CSS yn perthyn i ddefnyddwyr eraill",
        "right-edituserjs": "Golygu ffeiliau JS yn perthyn i ddefnyddwyr eraill",
        "right-editmyusercss": "Golygu eich ffeiliau defnyddiwr CSS eich hunan.",
        "rcshowhidecategorization": "Categoreiddio tudalen $1",
        "rcshowhidecategorization-show": "Dangos",
        "rcshowhidecategorization-hide": "Cuddio",
-       "rclinks": "Dangos y $1 newid diweddaraf yn ystod y(r) $2 diwrnod diwethaf<br />$3",
+       "rclinks": "Dangos y $1 newid diweddaraf yn ystod y(r) $2 diwrnod diwethaf",
        "diff": "gwahan",
        "hist": "hanes",
        "hide": "Cuddier",
        "undeleteviewlink": "gweld",
        "undeleteinvert": "Gwrthdroi'r dewis",
        "undeletecomment": "Rheswm:",
-       "undeletedrevisions": "wedi adfer $1 {{PLURAL:$1|diwygiad|diwygiad|ddiwygiad|diwygiad|diwygiad|diwygiad}}",
-       "undeletedrevisions-files": "Adferwyd $1 {{PLURAL:$1|fersiwn|fersiwn|fersiwn|fersiwn|fersiwn|fersiwn}} a $2 {{PLURAL:$2|ffeil|ffeil|ffeil|ffeil|ffeil|ffeil}}",
-       "undeletedfiles": "Adferwyd $1 {{PLURAL:$1|ffeil|ffeil|ffeil|ffeil|ffeil|ffeil}}",
        "cannotundelete": "Mae'r cais i ddad-ddileu wedi methu:\n$1",
        "undeletedpage": "'''Adferwyd $1'''\n\nCeir cofnod o'r tudalennau a ddilëwyd neu a adferwyd yn ddiweddar ar y [[Special:Log/delete|lòg ddileuon]].",
        "undelete-header": "Ewch i'r [[Special:Log/delete|lòg ddileuon]] i weld tudalennau a ddilëwyd yn ddiweddar.",
index 51d8ea3..68727dd 100644 (file)
                        "Jens Jensen",
                        "Nemo bis",
                        "Anders Feder",
-                       "Jhertel"
+                       "Jhertel",
+                       "IBDJ",
+                       "SimmeD",
+                       "BoBrandt"
                ]
        },
        "tog-underline": "Understreg henvisninger:",
        "noindex-category": "Ikke-indekserede sider",
        "broken-file-category": "Sider med brudte filhenvisninger",
        "about": "Om",
-       "article": "Artikel",
+       "article": "Indholdsside",
        "newwindow": "(åbner i et nyt vindue)",
        "cancel": "Afbryd",
        "moredotdotdot": "Mere...",
        "anontalk": "Diskussion",
        "navigation": "Navigation",
        "and": "&#32;og",
-       "qbfind": "Søg",
-       "qbbrowse": "Gennemse",
-       "qbedit": "Redigér",
-       "qbpageoptions": "Denne side",
-       "qbmyoptions": "Mine sider",
        "faq": "OSS",
-       "faqpage": "Project:OSS",
        "actions": "Handlinger",
        "namespaces": "Navnerum",
        "variants": "Varianter",
        "edit-local": "Redigér lokal beskrivelse",
        "create": "Opret",
        "create-local": "Tilføj lokal beskrivelse",
-       "editthispage": "Redigér side",
-       "create-this-page": "Opret denne side",
        "delete": "Slet",
-       "deletethispage": "Slet side",
-       "undeletethispage": "Gendan denne side",
        "undelete_short": "Gendan {{PLURAL:$1|én redigering|$1 redigeringer}}",
        "viewdeleted_short": "Vis {{PLURAL:$1|én slettet redigering|$1 slettede redigeringer}}",
        "protect": "Beskyt",
        "protect_change": "ændr",
-       "protectthispage": "Beskyt side",
        "unprotect": "Ændr beskyttelse",
-       "unprotectthispage": "Ændr beskyttelsen af denne side",
        "newpage": "Ny side",
-       "talkpage": "Diskussion",
        "talkpagelinktext": "diskussion",
        "specialpage": "Speciel side",
        "personaltools": "Personlige værktøjer",
-       "articlepage": "Se artiklen",
        "talk": "Diskussion",
        "views": "Visninger",
        "toolbox": "Værktøjer",
        "tool-link-userrights": "Ændre {{GENDER:$1|bruger}}grupper",
        "tool-link-userrights-readonly": "Se {{GENDER:$1|bruger}}grupper",
        "tool-link-emailuser": "Send e-mail til denne {{GENDER:$1|bruger}}",
-       "userpage": "Vis brugerside",
-       "projectpage": "Vis projektside",
        "imagepage": "Vis filside",
-       "mediawikipage": "Vis indholdsside",
+       "mediawikipage": "Vis beskedside",
        "templatepage": "Vis skabelonside",
        "viewhelppage": "Vis hjælpeside",
        "categorypage": "Vis kategoriside",
        "redirectedfrom": "(Omdirigeret fra $1)",
        "redirectpagesub": "Omdirigeringsside",
        "redirectto": "Omdiriger til:",
-       "lastmodifiedat": "Denne side blev senest ændret $1 kl. $2.",
+       "lastmodifiedat": "Denne side blev senest redigeret $1 kl. $2.",
        "viewcount": "Siden er vist {{PLURAL:$1|én gang|$1 gange}}.",
        "protectedpage": "Beskyttet side",
        "jumpto": "Skift til:",
        "botpasswords-label-delete": "Slet",
        "botpasswords-label-resetpassword": "Nulstil adgangskode",
        "botpasswords-label-grants": "Tilgængelige bevillinger:",
+       "botpasswords-created-title": "Botkodeord oprettet",
+       "botpasswords-updated-title": "Bot kodeord opdateret",
+       "botpasswords-deleted-title": "Bot kodeord slettet",
        "resetpass_forbidden": "Adgangskoder kan ikke ændres",
+       "resetpass_forbidden-reason": "Adgangskoder kan ikke ændres: $1",
        "resetpass-no-info": "Du skal være logget på for at komme direkte til denne side.",
        "resetpass-submit-loggedin": "Skift adgangskode",
        "resetpass-submit-cancel": "Annuller",
        "passwordreset-emailelement": "Brugernavn: \n$1\n\nMidlertidig adgangskode: \n$2",
        "passwordreset-emailsentemail": "Hvis denne e-mailadresse er knyttet til din konto, så vil en e-mail om nulstilling af adgangskoden blive sendt.",
        "passwordreset-emailsentusername": "Hvis der er en e-mailadresse forbundet med dette brugernavn, så vil en e-mail om nulstilling af adgangskoden blive sendt.",
+       "passwordreset-invalidemail": "Ugyldig e-mailadresse",
+       "passwordreset-nodata": "Hverken et brugernavn eller en e-mailadresse blev angivet",
        "changeemail": "Ændr eller fjern e-mailadresse",
        "changeemail-header": "Udfyld denne formular for at ændre din e-mailadresse. Hvis du gerne vil fjerne forbindelsen af en e-mailadresse fra din konto, så lad den nye e-mailadresse være blank, når du sender formularen.",
        "changeemail-no-info": "Du skal være logget på for at komme direkte til denne side.",
        "preview": "Forhåndsvisning",
        "showpreview": "Forhåndsvisning",
        "showdiff": "Vis ændringer",
-       "blankarticle": "<strong>Advarsel:</strong> Siden du opretter er tom.\nHvis du klikker på \"{{int:savearticle}}\" igen, vil siden blive oprettet uden indhold.",
+       "blankarticle": "<strong>Advarsel:</strong> Siden du opretter er tom.\nHvis du klikker på \"$1\" igen, vil siden blive oprettet uden indhold.",
        "anoneditwarning": "<strong>Advarsel:</strong> Du er ikke logget på. Din IP-adresse vil blive offentligt tilgængelig, hvis du foretager nogen ændringer. Hvis du <strong>[$1 logger på]</strong> eller <strong>[$2 opretter en konto]</strong> vil dine redigeringer blive tilskrevet dit brugernavn, og du vil få flere andre fordele.",
        "anonpreviewwarning": "''Du er ikke logget på. Hvis du gemmer, registreres din IP-adresse i versionshistorikken.''",
-       "missingsummary": "'''Bemærk:''' Du har ikke angivet en redigeringsbeskrivelse. Hvis du igen trykker på \"{{int:savearticle}}\", gemmes ændringerne uden en beskrivelse.",
-       "selfredirect": "<strong>Advarsel:</strong> Du er ved at omdirigere denne side til sig selv.\nDu kan have angivet det forkerte mål for omdirigeringen, eller du kan være ved at redigere den forkerte side.\nHvis du klikker på \"{{int:savearticle}}\" igen, vil omdirigeringen blive oprettet uanset dette.",
+       "missingsummary": "'''Bemærk:''' Du har ikke angivet en redigeringsbeskrivelse. Hvis du igen trykker på \"$1\", gemmes ændringerne uden en beskrivelse.",
+       "selfredirect": "<strong>Advarsel:</strong> Du er ved at omdirigere denne side til sig selv.\nDu kan have angivet det forkerte mål for omdirigeringen, eller du kan være ved at redigere den forkerte side.\nHvis du klikker på \"$1\" igen, vil omdirigeringen blive oprettet uanset dette.",
        "missingcommenttext": "Skriv venligst en kommentar nedenfor.",
-       "missingcommentheader": "<strong>Bemærk:</strong> Du har ikke angivet en overskrift/emne for denne kommentar. Hvis du trykker \"{{int:savearticle}}\" én gang til, gemmes dine ændringer uden overskrift/emne.",
+       "missingcommentheader": "<strong>Bemærk:</strong> Du har ikke angivet en overskrift/emne for denne kommentar. Hvis du trykker \"$1\" én gang til, gemmes dine ændringer uden overskrift/emne.",
        "summary-preview": "Forhåndsvisning af sammenfatning:",
        "subject-preview": "Forhåndsvisning af emne/overskrift:",
        "previewerrortext": "Der opstod en fejl under forsøget på at lave en forhåndsvisning af dine ændringer.",
        "blockedtitle": "Du eller din IP-adresse er blokeret",
        "blockedtext": "'''Dit brugernavn eller din IP-adresse er blevet blokeret.'''\n\nBlokeringen er foretaget af $1.\nDen anførte grund er ''$2''.\n\nBlokeringen starter: $8\nBlokeringen udløber: $6\nBlokeringen er rettet mod: $7\n\nDu kan kontakte $1 eller en af de andre [[{{MediaWiki:Grouppage-sysop}}|administratorer]] for at diskutere blokeringen.\nDu kan ikke bruge funktionen 'e-mail til denne bruger' medmindre der er angivet en gyldig e-mailadresse i dine\n[[Special:Preferences|kontoindstillinger]], og du ikke er blevet blokeret fra at bruge den.\n\nDin nuværende IP-adresse er $3, og blokerings-id er #$5.\nAngiv venligst alle ovenstående detaljer ved henvendelser om blokeringen.",
        "autoblockedtext": "Din IP-adresse er blevet blokeret automatisk fordi den blev brugt af en anden bruger som er blevet blokeret af $1.\nBegrundelsen for det er:\n\n:''$2''\n\n* Blokeringsperiodens start: $8\n* Blokeringen udløber: $6\n* Blokeringen er ment for: $7\n\nDu kan kontakte $1 eller en af de andre [[{{MediaWiki:Grouppage-sysop}}|administratorer]] for at diskutere blokeringen.\n\nBemærk at du ikke kan bruge funktionen \"e-mail til denne bruger\" medmindre du har en gyldig e-mailadresse registreret i din [[Special:Preferences|brugerindstilling]], og du ikke er blevet blokeret fra at bruge den.\n\nDin nuværende IP-adresse er $3, og blokerings-id'et er #$5.\nAngiv venligst alle de ovenstående detaljer ved eventuelle henvendelser.",
+       "systemblockedtext": "Dit brugernavn eller din IP-adresse er automatisk blokeret af MediaWiki.\nBegrundelsen for det er:\n\n:<em>$2</em>\n\n* Blokeringsperiodens start: $8\n* Blokeringen udløber: $6\n* Blokeringen er ment for: $7\n\nDin nuværende IP-adresse er $3.\nAngiv 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 din e-mailadresse, før du kan redigere sider. Udfyld og bekræft din e-mailadresse i dine [[Special:Preferences|indstillinger]].",
        "editingsection": "Redigerer $1 (afsnit)",
        "editingcomment": "Redigerer $1 (nyt afsnit)",
        "editconflict": "Redigeringskonflikt: $1",
-       "explainconflict": "Nogen har ændret denne side, efter du startede på at redigere den.\nDen øverste tekstboks indeholder den nuværende tekst.\nDine ændringer er vist i den nederste tekstboks.\nDu er nødt til at sammenflette dine ændringer med den eksisterende tekst.\n'''Kun''' teksten i den øverste tekstboks vil blive gemt når du trykker \"{{int:savearticle}}\".",
+       "explainconflict": "Nogen har ændret denne side, efter du startede på at redigere den.\nDen øverste tekstboks indeholder den nuværende tekst.\nDine ændringer er vist i den nederste tekstboks.\nDu er nødt til at sammenflette dine ændringer med den eksisterende tekst.\n'''Kun''' teksten i den øverste tekstboks vil blive gemt når du trykker \"$1\".",
        "yourtext": "Din tekst",
        "storedversion": "Den gemte version",
        "nonunicodebrowser": "'''Advarsel: Din browser er ikke unicode-kompatibel, skift eller opdater din browser før du redigerer en artikel.'''",
        "page_first": "Starten",
        "page_last": "Enden",
        "histlegend": "Forklaring: (nuværende) = forskel til den nuværende\nversion, (forrige) = forskel til den forrige version, M = mindre ændring",
-       "history-fieldset-title": "Bladr i historikken efter dato",
-       "history-show-deleted": "Kun slettede",
+       "history-fieldset-title": "Søg efter versioner",
+       "history-show-deleted": "Kun slettede revisioner",
        "histfirst": "ældste",
        "histlast": "nyeste",
        "historysize": "($1 {{PLURAL:$1|Byte|Bytes}})",
        "mergehistory-done": "$3 {{PLURAL:$3|version|versioner}} af $1 blev flettet sammen med [[:$2]].",
        "mergehistory-fail": "Sammenfletningen kunne ikke gennemføres. Vær venlig at kontrollere sidenavne og tidsafgrænsning.",
        "mergehistory-fail-bad-timestamp": "Tidsangivelsen er ugyldig.",
+       "mergehistory-fail-invalid-source": "Kildesiden er ugyldig.",
+       "mergehistory-fail-invalid-dest": "Målsiden er ugyldigt.",
        "mergehistory-fail-toobig": "Ude af stand til at flette historiken sammen, fordi flere end grænsen på $1 {{PLURAL:$1|version|versioner}} ville blive flyttet.",
        "mergehistory-no-source": "Kildesiden $1 findes ikke.",
        "mergehistory-no-destination": "Destinationssiden $1 findes ikke.",
        "search-category": "(kategorien $1)",
        "search-file-match": "(svarer til filens indhold)",
        "search-suggest": "Mente du: $1",
-       "search-interwiki-caption": "Søsterprojekter",
+       "search-interwiki-caption": "Resultater fra søsterprojekter",
        "search-interwiki-default": "Resultater fra $1:",
        "search-interwiki-more": "(mere)",
        "search-interwiki-more-results": "flere resultater",
        "prefs-help-prefershttps": "Denne indstilling træder i kraft næste gang du logger på.",
        "prefswarning-warning": "Du har foretaget ændringer af dine indstillinger, som ikke er gemt endnu.\nHvis du forlader denne side uden at klikke \"$1\", vil dine indstillinger ikke blive opdateret.",
        "prefs-tabs-navigation-hint": "Tip: Du kan bruge venstre og højre piletasterne til at navigere mellem fanerne i fanelisten.",
-       "userrights": "Håndtering af brugerrettigheder",
+       "userrights": "Brugerrettigheder",
        "userrights-lookup-user": "Vælg en bruger",
        "userrights-user-editname": "Skriv et brugernavn:",
        "editusergroup": "Indlæs brugergrupper",
        "userrights-unchangeable-col": "Uredigerbare grupper",
        "userrights-expiry-current": "Udløber $1",
        "userrights-expiry-none": "Udløber ikke",
+       "userrights-expiry": "Udløber:",
+       "userrights-expiry-existing": "Nugældende udløbstid: $2 $3",
+       "userrights-expiry-othertime": "Anden tid:",
+       "userrights-expiry-options": "1 dag:1 day,1 uge:1 week,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year",
+       "userrights-invalid-expiry": "Udløbstiden for gruppen \"$1\" er ugyldig.",
+       "userrights-expiry-in-past": "Udløbstiden for gruppen \"$1\" er i fortiden.",
        "userrights-conflict": "Konflikt i ændringer af brugerrettigheder!\nVær venlig at gennemse og bekræft dine ændringer.",
        "group": "Gruppe:",
        "group-user": "Brugere",
        "group-all": "(alle)",
        "group-user-member": "{{GENDER:$1|bruger}}",
        "group-autoconfirmed-member": "{{GENDER:$1|registreret bruger}}",
-       "group-bot-member": "{{GENDER:$1|robot}}",
+       "group-bot-member": "{{GENDER:$1|bot}}",
        "group-sysop-member": "{{GENDER:$1|administrator}}",
        "group-bureaucrat-member": "{{GENDER:$1|bureaukrat}}",
        "group-suppress-member": "{{GENDER:$1|undertrykker}}",
        "right-editsemiprotected": "Rediger sider, der er beskyttet som \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Redigere indholdsmodellen for en side",
        "right-editinterface": "Ændre brugergrænsefladens tekster",
-       "right-editusercssjs": "Ændre andre brugeres JS og CSS filer",
        "right-editusercss": "Ændre andre brugeres CSS filer",
        "right-edituserjs": "Ændre andre brugeres JS filer",
        "right-editmyusercss": "Redigere dine egne CSS-filer",
        "action-writeapi": "bruge skrive-API'et",
        "action-delete": "slette denne side",
        "action-deleterevision": "slette siderevisioner",
+       "action-deletelogentry": "slet logposter",
        "action-deletedhistory": "se en sides slettede historik",
+       "action-deletedtext": "se slettet revisionstekst",
        "action-browsearchive": "søge i slettede sider",
        "action-undelete": "gendanne sider",
        "action-suppressrevision": "se og gendanne skjulte siderevisioner",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Vis",
        "rcfilters-activefilters": "Aktive filtre",
+       "rcfilters-quickfilters": "Gemte filterindstillinger",
+       "rcfilters-quickfilters-placeholder-title": "Ingen links gemt endnu",
+       "rcfilters-savedqueries-defaultlabel": "Gemte filtre",
+       "rcfilters-savedqueries-rename": "Omdøb",
+       "rcfilters-savedqueries-setdefault": "Vælg som grundindstilling",
+       "rcfilters-savedqueries-unsetdefault": "Fravælg som grundindstilling",
+       "rcfilters-savedqueries-remove": "Fjern",
+       "rcfilters-savedqueries-new-name-label": "Navn",
+       "rcfilters-savedqueries-apply-label": "Gem indstillinger",
+       "rcfilters-savedqueries-cancel-label": "Annullér",
+       "rcfilters-savedqueries-add-new-title": "Gem nuværende filterindstillinger",
+       "rcfilters-restore-default-filters": "Gendan standardfiltre",
+       "rcfilters-clear-all-filters": "Ryd alle filtre",
+       "rcfilters-search-placeholder": "Filtrer seneste ændringer (gennemse eller begynd at taste)",
        "rcfilters-invalid-filter": "Ugyldigt filter",
+       "rcfilters-empty-filter": "Ingen aktive filtre. All bidrag vises.",
        "rcfilters-filterlist-title": "Filtre",
+       "rcfilters-filterlist-whatsthis": "Hvad er dette?",
+       "rcfilters-filterlist-feedbacklink": "Giv feedback på de nye (beta)filtre",
+       "rcfilters-highlightbutton-title": "Fremhæv resultater",
+       "rcfilters-highlightmenu-title": "Vælg en farve",
+       "rcfilters-highlightmenu-help": "Vælg en farve for at fremhæve denne egenskab",
+       "rcfilters-filterlist-noresults": "Ingen filtre fundet",
+       "rcfilters-noresults-conflict": "Ingen resultater fundet fordi søgekriterierne er i konflikt",
+       "rcfilters-filtergroup-registration": "Brugerregistrering",
+       "rcfilters-filter-registered-label": "Registrerede",
+       "rcfilters-filter-registered-description": "Indloggede brugere",
+       "rcfilters-filter-unregistered-label": "Uregistrerede",
+       "rcfilters-filter-unregistered-description": "Redaktører, der ikke er logget ind.",
+       "rcfilters-filtergroup-authorship": "Bidragets forfatter",
+       "rcfilters-filter-editsbyself-label": "Ændringer af dig",
+       "rcfilters-filter-editsbyself-description": "Dine egne bidrag.",
+       "rcfilters-filter-editsbyother-label": "Ændringer af andre",
+       "rcfilters-filter-editsbyother-description": "Alle ændringer undtagen din egen.",
+       "rcfilters-filtergroup-userExpLevel": "Erfaringsniveau (kun for registrerede brugere)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Erfaringsfiltre finder kun registrerede brugere, så dette filter er i konflikt med filtret \"Uregistrerede\".",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Nybegyndere",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Færre end 10 redigeringer og 4 dages aktivitet",
+       "rcfilters-filter-user-experience-level-learner-label": "Let øvede",
+       "rcfilters-filter-user-experience-level-learner-description": "Mere erfaring end \"nybegyndere\" men mindre end \"erfarne brugere\".",
        "rcfilters-filter-user-experience-level-experienced-label": "Erfarne brugere",
+       "rcfilters-filter-user-experience-level-experienced-description": "Over 30 dages aktivitet og 500 redigeringer.",
+       "rcfilters-filtergroup-automated": "Automatiserede bidrag",
+       "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-bots-description": "Redigeringer udført af automatiserede værktøjer.",
+       "rcfilters-filter-humans-label": "Menneske (ikke bot)",
+       "rcfilters-filter-humans-description": "Redigeringer udført af mennesker.",
+       "rcfilters-filtergroup-reviewstatus": "Gennemgangsstatus",
+       "rcfilters-filter-patrolled-label": "Patruljerede",
+       "rcfilters-filter-patrolled-description": "Redigeringer markerede som patruljerede.",
+       "rcfilters-filter-unpatrolled-label": "Upatruljerede",
+       "rcfilters-filter-unpatrolled-description": "Redigeringer ikke markerede som patruljerede.",
+       "rcfilters-filtergroup-significance": "Betydning",
+       "rcfilters-filter-minor-label": "Mindre redigeringer",
+       "rcfilters-filter-minor-description": "Redigeringer som ophavsmanden har markeret som mindre.",
+       "rcfilters-filter-major-label": "Ikke-mindre ændringer",
+       "rcfilters-filter-major-description": "Ændringer som ikke er markerede som mindre.",
+       "rcfilters-filtergroup-watchlist": "Overvågede sider",
+       "rcfilters-filter-watchlist-watched-label": "På overvågningsliste",
+       "rcfilters-filter-watchlist-watched-description": "Ændringer af sider på din overvågningsliste",
+       "rcfilters-filter-watchlist-watchednew-label": "Nye ændringer på overvågningslisten",
+       "rcfilters-filter-watchlist-watchednew-description": "Ændringer af overvågede sider du ikke har besøgt siden ændringerne blev gjort.",
+       "rcfilters-filter-watchlist-notwatched-label": "Ikke på overvågningsliste",
+       "rcfilters-filter-watchlist-notwatched-description": "Alt undtagen ændringer af sider på din overvågningsliste.",
+       "rcfilters-filtergroup-changetype": "Type ændring",
+       "rcfilters-filter-pageedits-label": "Sideredigeringer",
+       "rcfilters-filter-pageedits-description": "Ændringer af wikiindhold, diskussioner, kategoribeskrivelser...",
+       "rcfilters-filter-newpages-label": "Sideoprettelser",
+       "rcfilters-filter-newpages-description": "Redigeringer som opretter nye sider.",
+       "rcfilters-filter-categorization-label": "Kategoriændringer",
+       "rcfilters-filter-categorization-description": "Optegnelser af at sider bliver tilføjet til eller fjernet fra kategorier.",
+       "rcfilters-filter-logactions-label": "Loggede handlinger",
+       "rcfilters-filter-logactions-description": "Administrative handlinger, kontooprettelser, sidesletninger, uploads...",
+       "rcfilters-filtergroup-lastRevision": "Sidste revision",
+       "rcfilters-filter-lastrevision-label": "Seneste revision",
+       "rcfilters-filter-lastrevision-description": "Den nyeste ændring af en side.",
+       "rcfilters-filter-previousrevision-label": "Tidligere revisioner",
+       "rcfilters-filter-previousrevision-description": "Alle ændringer som ikke er den nyeste ændring af en side.",
        "rcnotefrom": "Nedenfor er op til '''$1''' {{PLURAL:$5|ændring|ændringer}} siden '''$2''' vist.",
+       "rclistfromreset": "Nulstil datovalg",
        "rclistfrom": "Vis nye ændringer startende fra den $3 kl. $2",
        "rcshowhideminor": "$1 mindre ændringer",
        "rcshowhideminor-show": "Vis",
        "rcshowhidecategorization": "$1 kategorisering af sider",
        "rcshowhidecategorization-show": "Vis",
        "rcshowhidecategorization-hide": "Skjul",
-       "rclinks": "Vis seneste $1 ændringer i de sidste $2 dage<br />$3",
+       "rclinks": "Vis seneste $1 ændringer i de sidste $2 dage",
        "diff": "forskel",
        "hist": "historik",
        "hide": "Skjul",
        "upload-too-many-redirects": "URL'en indeholdt for mange omdirigeringer",
        "upload-http-error": "Der opstod en HTTP-fejl: $1",
        "upload-copy-upload-invalid-domain": "Uploads af kopier er ikke tilgængelig fra dette domæne.",
+       "upload-dialog-disabled": "Filuploads ved brug af denne dialog er slået fra på denne wiki.",
        "upload-dialog-title": "Læg en fil op",
        "upload-dialog-button-cancel": "Annuller",
        "upload-dialog-button-back": "Tilbage",
        "apisandbox": "API-sandkassen",
        "apisandbox-api-disabled": "API er deaktiveret på dette websted.",
        "apisandbox-intro": "Brug denne side til at eksperimentere med '''MediaWiki web service API'''.\nVi henviser til [https://www.mediawiki.org/wiki/API:Main_page dokumentationen af API] for yderligere oplysninger om brug af API.  Eksempel: [https://www.mediawiki.org/wiki/API#A_simple_example få indholdet af en forside]. Vælg en handling at se flere eksempler.\n\nBemærk, at selv om dette er en sandkasse, vil handlinger du udfører på denne side redigere wikien.",
+       "apisandbox-fullscreen": "Udvid panel",
+       "apisandbox-fullscreen-tooltip": "Udvid sandkassepanelet, så det udfylder browservinduet.",
        "apisandbox-unfullscreen": "Vis side",
+       "apisandbox-unfullscreen-tooltip": "Formindsk sandkassepanelet, så MediaWiki-navigationslink er tilgængelige.",
        "apisandbox-submit": "Lav forespørgsel",
        "apisandbox-reset": "Ryd",
        "apisandbox-retry": "Forsøg igen",
        "undeleteviewlink": "vis",
        "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",
        "cannotundelete": "Gendannelse mislykkedes:\n$1",
        "undeletedpage": "'''$1''' blev gendannet.\n\nI [[Special:Log/delete|slette-loggen]] findes en oversigt over de nyligt slettede og gendannede sider.",
        "undelete-header": "Se [[Special:Log/delete|slette-loggen]] for nyligt slettede og gendannede sider.",
        "unblocked-range": "$1 er fjernet fra blokering",
        "unblocked-id": "Blokering $1 er blevet fjernet",
        "blocklist": "Blokerede brugere",
+       "autoblocklist": "Autoblokeringer",
+       "autoblocklist-submit": "Søg",
+       "autoblocklist-legend": "Vis autoblokeringer",
+       "autoblocklist-empty": "Autoblokeringslisten er tom.",
+       "autoblocklist-otherblocks": "Andre {{PLURAL:$1|autoblokering|autoblokeringer}}",
        "ipblocklist": "Blokerede brugere",
        "ipblocklist-legend": "Find en blokeret bruger",
        "blocklist-userblocks": "Skjul blokeringer af kontoer",
        "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.",
+       "ipb_expiry_old": "Udløbstiden ligger i fortiden.",
        "ipb_expiry_temp": "Brugernavnet kan kun skjules ved permanente blokeringer.",
        "ipb_hide_invalid": "Kan ikke skjule denne konto; den har mere end {{PLURAL:$1|en redigering|$1 redigeringer}}.",
        "ipb_already_blocked": "„$1“ er allerede blokeret",
        "proxyblockreason": "Din IP-adresse er blevet blokeret fordi den er en såkaldt ''åben proxy''. Kontakt din Internet-udbyder eller tekniske hotline og oplyse dem om dette alvorlige sikkerhedsproblem.",
        "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.",
+       "softblockrangesreason": "Anonyme bidrag er ikke tilladt fra din ip-adresse ($1). Log venligst ind.",
        "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-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",
        "lockdbsuccesstext": "Mediawikidatabasen er låst. <br />Husk at fjerne låsen når du er færdig med din vedligeholdelse.",
        "unlockdbsuccesstext": "Mediawikidatabasen er låst op.",
        "lockfilenotwritable": "Database-spærrefilen kan ikke ændres. Hvis databasen skal spærres eller frigives, skal webserveren kunne skrive i denne fil.",
+       "databaselocked": "Databasen er allerede låst.",
        "databasenotlocked": "Databasen er ikke spærret.",
        "lockedbyandtime": "(af $1 den $2 kl. $3)",
        "move-page": "Flyt $1",
        "movenotallowedfile": "Du har ikke tilladelse til at flytte filer.",
        "cant-move-user-page": "Du har ikke tilladelse til at flytte brugersider (bortset fra undersider).",
        "cant-move-to-user-page": "Du har ikke tilladelse til at flytte brugersider (bortset fra til brugerundersider).",
+       "cant-move-category-page": "Du har ikke tilladelse til at flytte kategorisider.",
+       "cant-move-to-category-page": "Du har ikke tilladelse til at flytte en side til en kategoriside.",
+       "cant-move-subpages": "Du har ikke tilladelse til at flytte undersider.",
        "namespace-nosubpages": "Navnerummet \"$1\" tillader ikke undersider.",
        "newtitle": "Ny titel:",
        "move-watch": "Overvåg siden",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|version|versioner}} importeret",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|version|versioner}} importeret fra $2",
        "javascripttest": "Test af JavaScript",
+       "javascripttest-pagetext-unknownaction": "Ukendt handling \"$1\".",
        "javascripttest-qunit-intro": "Se [$1 testdokumentationen] på mediawiki.org.",
        "tooltip-pt-userpage": "{{GENDER:|Din}} brugerside",
        "tooltip-pt-anonuserpage": "Brugersiden for den ip-adresse du redigerer som",
        "tooltip-pt-preferences": "{{GENDER:|Dine}} indstillinger",
        "tooltip-pt-watchlist": "Listen over sider du overvåger for ændringer.",
        "tooltip-pt-mycontris": "Liste over {{GENDER:|dine}} bidrag",
+       "tooltip-pt-anoncontribs": "Liste over redigeringer fra denne ip-adresse",
        "tooltip-pt-login": "Du opfordres til at logge på, men det er ikke obligatorisk.",
+       "tooltip-pt-login-private": "Du skal logge ind for at bruge denne wiki",
        "tooltip-pt-logout": "Log af",
        "tooltip-pt-createaccount": "Du opfordres til at oprette en konto og logge på, men det er ikke obligatorisk",
        "tooltip-ca-talk": "Diskussion om indholdet på siden",
        "tooltip-feed-rss": "RSS-feed for denne side",
        "tooltip-feed-atom": "Atom-feed for denne side",
        "tooltip-t-contributions": "En liste over bidrag fra {{GENDER:$1|denne bruger}}",
-       "tooltip-t-emailuser": "Send en e-mail til denne bruger",
+       "tooltip-t-emailuser": "Send en email til {{GENDER:$1|denne bruger}}",
        "tooltip-t-info": "Yderligere oplysninger om denne side",
        "tooltip-t-upload": "Upload et billede eller anden mediafil",
        "tooltip-t-specialpages": "Liste over alle specialsider",
        "lastmodifiedatby": "Denne side blev senest ændret $2, $1 af $3.",
        "othercontribs": "Baseret på arbejde af $1.",
        "others": "andre",
-       "siteusers": "{{SITENAME}} {{PLURAL:$2|bruger|brugere}} $1",
+       "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|bruger}}|brugere}} $1",
        "anonusers": "{{SITENAME}} {{PLURAL:$2|anonym bruger|anonyme brugere}} $1",
        "creditspage": "Sidens forfattere",
        "nocredits": "Der er ingen forfatteroplysninger om denne side.",
        "pageinfo-length": "Sidelængde (i bytes)",
        "pageinfo-article-id": "Side-ID",
        "pageinfo-language": "Sprog for sideindholdet",
+       "pageinfo-language-change": "ændr",
        "pageinfo-content-model": "Sidens indhold er",
+       "pageinfo-content-model-change": "ændr",
        "pageinfo-robot-policy": "Indeksering af robotter",
        "pageinfo-robot-index": "Tilladt",
        "pageinfo-robot-noindex": "Ikke tilladt",
        "pageinfo-category-pages": "Antal sider",
        "pageinfo-category-subcats": "Antal underkategorier",
        "pageinfo-category-files": "Antal filer",
+       "pageinfo-user-id": "Bruger-id",
        "markaspatrolleddiff": "Markér som patruljeret",
        "markaspatrolledtext": "Markér denne side som patruljeret",
+       "markaspatrolledtext-file": "Markér denne filversion som patruljeret",
        "markedaspatrolled": "Markeret som patruljeret",
        "markedaspatrolledtext": "Den valgte redigering af [[:$1]] er nu markeret som patruljeret.",
        "rcpatroldisabled": "Seneste ændringer-patruljeringen er slået fra",
        "patrol-log-page": "Kontrollog",
        "patrol-log-header": "Patruljerede versioner.",
        "log-show-hide-patrol": "$1 patruljeringslog",
+       "log-show-hide-tag": "$1 taglog",
        "confirm-markpatrolled-button": "OK",
        "confirm-markpatrolled-top": "Marker version $3 af $2 som patruljeret?",
        "deletedrevision": "Slettede gammel version $1",
        "newimages-summary": "Denne specialside viser de senest oplagte filer.",
        "newimages-legend": "Filter",
        "newimages-label": "Filnavn (eller en del af det):",
+       "newimages-user": "IP-adresse eller brugernavn",
        "newimages-showbots": "Vis oplægninger af robotter",
+       "newimages-hidepatrolled": "Skjul patruljerede uploads",
        "noimages": "Ingen filer fundet.",
+       "gallery-slideshow-toggle": "Til- eller fravælg thumbnails",
        "ilsubmit": "Søg",
        "bydate": "efter dato",
        "sp-newimages-showfrom": "Vis nye filer startende fra $1 $2",
        "mw-widgets-titleinput-description-new-page": "side eksisterer ikke endnu",
        "mw-widgets-titleinput-description-redirect": "omdiriger til $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Tilføj en kategori...",
+       "date-range-from": "Fra dato:",
+       "date-range-to": "Til dato:",
        "randomrootpage": "Tilfældig stamside",
        "log-action-filter-block": "Blokeringstype:",
        "log-action-filter-delete": "Sletningstype:",
index db62e1a..c4c6984 100644 (file)
                        "Tim Bartel (avatar) <wikipedia@computerkultur.org> formal addressing",
                        "Tischbeinahe",
                        "Umherirrender",
-                       "Urhixidur"
+                       "Urhixidur",
+                       "Florian",
+                       "Tiin"
                ]
        },
+       "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-extendwatchlist": "In der Beobachtungsliste alle Änderungen anzeigen, nicht nur die aktuellsten",
+       "tog-usenewrc": "Änderungen auf „Letzte Änderungen“ und der Beobachtungsliste nach Seite gruppieren",
+       "tog-numberheadings": "Überschriften automatisch nummerieren",
+       "tog-showtoolbar": "Bearbeiten-Werkzeugleiste aktivieren",
+       "tog-editondblclick": "Seiten mit Doppelklick bearbeiten",
+       "tog-editsectiononrightclick": "Einzelne Abschnitte per Rechtsklick bearbeiten",
        "tog-enotifrevealaddr": "Ihre E-Mail-Adresse in Benachrichtigungs-E-Mails anzeigen",
        "view-pool-error": "Entschuldigung, die Server sind im Moment überlastet.\nZu viele Benutzer versuchen, diese Seite zu besuchen.\nBitte warten Sie einige Minuten, bevor Sie es noch einmal versuchen.\n\n$1",
+       "generic-pool-error": "Leider sind die Server derzeit überlastet.\nZu viele Benutzer wollen diese Ressource ansehen.\nBitte warten Sie einen Moment, bevor Sie sie erneut aufrufen.",
        "badaccess-group0": "Sie haben nicht die erforderlichen Benutzerrechte für diese Aktion.",
+       "versionrequiredtext": "Version $1 von MediaWiki ist erforderlich, um diese Seite zu nutzen.\nSehen Sie auf die [[Special:Version|Versionsseite]]",
        "youhavenewmessages": "Sie haben $1 ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|Sie haben}} $1 von {{PLURAL:$3|einem anderen Benutzer|$3 Benutzern}} ($2).",
+       "youhavenewmessagesmanyusers": "Sie haben $1 von vielen Benutzern ($2).",
        "youhavenewmessagesmulti": "Sie haben neue Nachrichten: $1",
+       "confirmable-confirm": "Sind {{GENDER:$1|Sie}} sicher?",
        "enterlockreason": "Bitte geben Sie einen Grund ein, warum die Datenbank gesperrt werden soll und eine Abschätzung über die Dauer der Sperrung",
        "readonlytext": "Die Datenbank ist vorübergehend für Neueinträge und Änderungen gesperrt. Bitte versuchen Sie es später noch einmal.\n\nGrund der Sperrung: $1",
        "missing-article": "Der Text von „$1“ $2 wurde nicht in der Datenbank gefunden.\n\nDie Seite ist möglicherweise gelöscht oder verschoben worden.\n\nFalls dies nicht der Fall ist, haben Sie eventuell einen Fehler in der Software gefunden. Bitte melden Sie dies einem [[Special:ListUsers/sysop|Administrator]] unter Nennung der URL.",
        "viewyourtext": "Sie können den Quelltext '''Ihrer Bearbeitung''' dieser Seite betrachten und kopieren:",
        "protectedinterface": "Diese Seite enthält Text für die Benutzeroberfläche der Software auf diesem Wiki und ist geschützt, um Missbrauch vorzubeugen.\nNutzen Sie bitte [https://translatewiki.net/ translatewiki.net], das Lokalisierungsprojekt von MediaWiki, um Übersetzungen für alle Wikis hinzuzufügen oder zu ändern.",
        "editinginterface": "'''Warnung:''' Diese Seite enthält von der MediaWiki-Software genutzten Text.\nÄnderungen auf dieser Seite wirken sich auf die Benutzeroberfläche dieses Wikis aus.\nNutzen Sie bitte [https://translatewiki.net/ translatewiki.net], das Lokalisierungsprojekt von MediaWiki, um Übersetzungen für alle Wikis hinzuzufügen oder zu ändern.",
+       "translateinterface": "Um Übersetzungen für alle Wikis hinzuzufügen oder zu ändern, verwenden Sie bitte [//translatewiki.net/ translatewiki.net], das MediaWiki-Lokalisierungsprojekt.",
        "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.",
+       "mycustomcssprotected": "Sie haben keine Berechtigung, diese CSS-Seite zu bearbeiten.",
        "mycustomjsprotected": "Sie haben keine Berechtigung, diese JavaScript-Seite zu bearbeiten.",
        "myprivateinfoprotected": "Sie haben keine Berechtigung, Ihre privaten Informationen zu bearbeiten.",
-       "mypreferencesprotected": "Sie haben keine Berechtigung, Ihre Einstellungen zu bearbeiten.",
-       "exception-nologin-text": "Sie müssen sich [[Special:Userlogin|anmelden]], um auf diese Seite oder Aktion zugreifen zu können.",
+       "mypreferencesprotected": "Sie sind nicht berechtigt, Ihre Einstellungen zu ändern.",
+       "exception-nologin-text": "Sie müssen sich anmelden, um auf diese Seite oder Aktion zugreifen zu können.",
        "exception-nologin-text-manual": "Sie müssen sich $1, um auf diese Seite oder Aktion zugreifen zu können.",
        "logouttext": "'''Sie sind nun abgemeldet.'''\n\nBeachten Sie, dass einige Seiten noch anzeigen können, dass Sie angemeldet sind, solange Sie nicht Ihren Browsercache geleert haben.",
        "welcomecreation-msg": "Ihr Benutzerkonto wurde erstellt.\nVergessen Sie nicht, Ihre [[Special:Preferences|{{SITENAME}}-Einstellungen]] zu ändern.",
        "password-change-forbidden": "Sie können auf diesem Wiki keine Passwörter ändern.",
        "externaldberror": "Entweder liegt ein Fehler bei der externen Authentifizierung vor oder Sie dürfen Ihr externes Benutzerkonto nicht aktualisieren.",
        "userlogin-noaccount": "Sie haben noch kein Benutzerkonto?",
-       "nologin": "Sie haben kein Benutzerkonto? $1.",
-       "gotaccount": "Haben Sie bereits ein Benutzerkonto? '''$1'''.",
        "userlogin-loggedin": "Sie sind bereits als {{GENDER:$1|$1}} angemeldet.\nBenutzen Sie das unten stehende Formular, um sich unter einem anderen Benutzernamen anzumelden.",
        "createacct-email-ph": "Geben Sie Ihre E-Mail-Adresse ein",
        "createacct-reason-ph": "Warum erstellen Sie ein anderes Benutzerkonto?",
-       "createacct-imgcaptcha-ph": "Geben Sie den Text ein, den Sie oben sehen.",
        "createacct-benefit-heading": "{{SITENAME}} wird von Menschen wie Ihnen geschaffen.",
        "userexists": "Dieser Benutzername ist schon vergeben.\nBitte wählen Sie einen anderen.",
        "nocookiesnew": "Der Benutzerzugang wurde erstellt, aber Sie sind nicht angemeldet.\n{{SITENAME}} benötigt für diese Funktion Cookies, bitte aktivieren Sie diese und melden sich dann mit Ihrem neuen Benutzernamen und dem zugehörigen Passwort an.",
@@ -68,7 +83,7 @@
        "nocookiesfornew": "Das Benutzerkonto wurde nicht erstellt, da die Datenherkunft nicht ermittelt werden konnte.\nBitte stellen Sie sicher, dass Sie Cookies aktiviert haben. Laden Sie diese Seite danach erneut und versuchen Sie es noch einmal.",
        "noname": "Sie müssen einen gültigen Benutzernamen angeben.",
        "loginsuccess": "Sie sind jetzt als „$1“ bei {{SITENAME}} angemeldet.",
-       "nosuchuser": "Der Benutzername „$1“ existiert nicht.\nÜberprüfen Sie die Schreibweise (Groß-/Kleinschreibung beachten) oder [[Special:UserLogin/signup|melden Sie sich als neuer Benutzer an]].",
+       "nosuchuser": "Der Benutzername „$1“ existiert nicht.\nÜberprüfen Sie die Schreibweise (Groß-/Kleinschreibung beachten) oder [[Special:CreateAccount|melden Sie sich als neuer Benutzer an]].",
        "nosuchusershort": "Der Benutzername „$1“ ist nicht vorhanden. Bitte überprüfen Sie die Schreibweise.",
        "nouserspecified": "Bitte geben Sie einen Benutzernamen an.",
        "wrongpassword": "Das Passwort ist falsch. Bitte versuchen Sie es erneut.",
        "createaccount-text": "Es wurde für Sie ein Benutzerkonto „$2“ auf {{SITENAME}} ($4) erstellt. Das automatisch generierte Passwort für „$2“ ist „$3“. Sie sollten sich nun anmelden und das Passwort ändern.\n\nFalls das Benutzerkonto irrtümlich angelegt wurde, können Sie diese Nachricht ignorieren.",
        "login-throttled": "Sie haben zu oft versucht, sich anzumelden.\nBitte warten Sie $1, bevor Sie es erneut probieren.",
        "login-abort-generic": "Ihre Anmeldung war nicht erfolgreich – Abgebrochen",
+       "login-migrated-generic": "Ihr Benutzerkonto wurde migriert. Ihr Benutzername ist auf diesem Wiki nicht mehr vorhanden.",
        "suspicious-userlogout": "Ihre Abmeldeanfrage wurde verweigert, da sie vermutlich von einem defekten Browser oder einem Cache-Proxy gesendet wurde.",
        "createacct-another-realname-tip": "Der bürgerliche Name ist optional.\nWenn Sie ihn angeben, wird er für die Zuordnung der Beiträge verwendet.",
        "resetpass_announce": "Um die Anmeldung abzuschließen, müssen Sie ein neues Passwort festlegen.",
        "resetpass_text": "<!-- Ergänzen Sie den Text hier -->",
        "changepassword-success": "Ihr Passwort wurde erfolgreich geändert.",
+       "changepassword-throttled": "Sie haben zu viele Anmeldeversuche unternommen.\nBitte warten Sie $1, bevor Sie es erneut versuchen.",
        "resetpass-no-info": "Sie müssen sich anmelden, um auf diese Seite direkt zuzugreifen.",
        "resetpass-wrong-oldpass": "Ungültiges temporäres oder aktuelles Passwort.\nMöglicherweise haben Sie Ihr Passwort bereits erfolgreich geändert oder ein neues temporäres Passwort beantragt.",
-       "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.",
+       "resetpass-recycled": "Bitte setzen Sie Ihr Passwort auf ein anderes Passwort als Ihr aktuelles fest.",
+       "resetpass-temp-emailed": "Sie haben sich mit einem temporären E-Mail-Code angemeldet. Um die Anmeldung abzuschließen, müssen Sie jetzt ein neues Passwort festlegen:",
+       "resetpass-expired": "Ihr Passwort ist abgelaufen. Bitte legen Sie ein neues Passwort zur Anmeldung fest.",
+       "resetpass-expired-soft": "Ihr Passwort ist abgelaufen und muss zurückgesetzt werden. Bitte wählen Sie jetzt ein neues Passwort aus oder klicken Sie auf „{{int:authprovider-resetpass-skip-label}}“, um es später zurückzusetzen.",
+       "resetpass-validity-soft": "Ihr Passwort ist nicht gültig: $1\n\nBitte wählen Sie jetzt ein neues Passwort oder klicken Sie auf „{{int:authprovider-resetpass-skip-label}}“, um es später zurückzusetzen.",
+       "passwordreset-text-one": "Füllen Sie dieses Formular aus, um Ihr Passwort zurückzusetzen.",
+       "passwordreset-text-many": "{{PLURAL:$1|Füllen Sie eines der Felder aus, um ein temporäres Passwort per E-Mail zugesandt zu bekommen.}}",
        "passwordreset-emailtext-ip": "Jemand mit der IP-Adresse $1, wahrscheinlich Sie selbst, hat eine Zurücksetzung Ihres\nPassworts bei {{SITENAME}} angefordert ($4). {{PLURAL:$3|Das folgende Benutzerkonto ist|Die folgenden Benutzerkonten sind}}\nmit dieser E-Mail-Adresse verknüpft:\n\n$2\n\n{{PLURAL:$3|Dieses temporäre Passwort läuft|Diese temporären Passwörter laufen}} innerhalb von {{PLURAL:$5|einem Tag|$5 Tagen}} ab.\nSie sollten sich anmelden und ein neues Passwort vergeben. Falls jemand anderes diese\nAnfrage getätigt hat oder Sie sich wieder an Ihr ursprüngliches Passwort erinnern können und es nicht länger\nändern möchten, können Sie diese Nachricht ignorieren und weiterhin Ihr altes\nPasswort 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:\n\n$2\n\n{{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 ändern möchten, können Sie diese Nachricht ignorieren und weiterhin Ihr altes Passwort benutzen.",
-       "changeemail-text": "Füllen Sie dieses Formular vollständig aus, um Ihre E-Mail-Adresse zu ändern. Sie müssen Ihr Passwort angeben, um diese Änderung zu bestätigen.",
+       "changeemail-header": "Füllen Sie dieses Formular vollständig aus, um Ihre E-Mail-Adresse zu ändern. Sie müssen Ihr Passwort angeben, um diese Änderung zu bestätigen.",
        "changeemail-no-info": "Sie müssen angemeldet sein, um direkt auf diese Seite zugreifen zu können.",
+       "changeemail-password": "Ihr {{SITENAME}}-Passwort:",
+       "changeemail-throttled": "Sie haben zu viele Anmeldeversuche unternommen.\nBitte warten Sie $1, bevor Sie es erneut versuchen.",
        "resettokens-text": "Sie können Tokens zurücksetzen, welche Ihnen den Zugriff auf bestimmte private Daten ermöglichen, die mit Ihrem Benutzerkonto hier verknüpft sind.\n\nSie sollten dies nur machen, wenn Sie die Tokens versehentlich mit jemandem geteilt haben oder Ihr Konto gefährdet ist.",
        "sig_tip": "Ihre Signatur mit Zeitstempel",
-       "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.",
+       "blankarticle": "<strong>Warnung:</strong> Die Seite, die Sie erstellen, ist leer.\nWenn Sie erneut auf „$1“ klicken, wird die Seite ohne Inhalt erstellt.",
+       "anoneditwarning": "<strong>Warnung:</strong> Sie sind nicht angemeldet. Ihre IP-Adresse wird öffentlich sichtbar, falls Sie Bearbeitungen durchführst. Sofern Sie sich <strong>[$1 anmelden]</strong> oder <strong>[$2 ein Benutzerkonto erstellen]</strong>, werden Ihre Bearbeitungen zusammen mit anderen Beiträgen Ihrem Benutzernamen zugeordnet.",
+       "anonpreviewwarning": "<em>Sie sind nicht angemeldet. Beim Speichern wird Ihre IP-Adresse in der Versionsgeschichte aufgezeichnet.</em>",
+       "missingsummary": "<strong>Hinweis:</strong> Sie haben keine Zusammenfassung angegeben. Wenn Sie erneut auf „$1“ klicken, wird Ihre Änderung ohne Zusammenfassung übernommen.",
+       "selfredirect": "<strong>Warnung:</strong> Sie leiten auf diese Seite selbst weiter.\nSie haben vermutlich das falsche Weiterleitungsziel angegeben oder Sie bearbeiten die falsche Seite.\nWenn Sie erneut auf „$1“ klicken, wird die Weiterleitung dennoch erstellt.",
        "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.",
+       "missingcommentheader": "'''Achtung:''' Sie haben kein Betreff/Überschrift eingegeben. Wenn Sie erneut auf „$1“ klicken, wird Ihre Bearbeitung ohne Überschrift gespeichert.",
+       "previewerrortext": "Beim Versuch, eine Vorschau Ihrer Änderungen anzuzeigen, ist ein Fehler aufgetreten.",
        "blockedtext": "'''Ihr Benutzername oder Ihre IP-Adresse wurde gesperrt.'''\n\nDie Sperrung wurde vom Administrator $1 durchgeführt.\nAls Grund wurde ''$2'' angegeben.\n\n* Beginn der Sperre: $8\n* Ende der Sperre: $6\n* Sperre betrifft: $7\n\nSie könnten $1 oder einen der anderen [[{{MediaWiki:Grouppage-sysop}}|Administratoren]] kontaktieren, um über die Sperre zu diskutieren.\nSie können die „E-Mail an diesen Benutzer“-Funktion nicht nutzen, solange keine gültige E-Mail-Adresse in Ihren [[Special:Preferences|Benutzerkonto-Einstellungen]] eingetragen ist oder diese Funktion für Sie gesperrt wurde.\nIhre aktuelle IP-Adresse ist $3 und die Sperrkennung lautet $5.\nBitte fügen Sie alle Informationen jeder Anfrage hinzu, die Sie stellen.",
        "autoblockedtext": "Ihre IP-Adresse wurde automatisch gesperrt, da sie von einem anderen Benutzer genutzt wurde, der von $1 gesperrt wurde.\nAls Grund wurde angegeben:\n\n:''$2''\n\n* Beginn der Sperre: $8\n* Ende der Sperre: $6\n* Sperre betrifft: $7\n\nSie können $1 oder einen der anderen [[{{MediaWiki:Grouppage-sysop}}|Administratoren]] kontaktieren, um über die Sperre zu diskutieren.\n\nSie können die „E-Mail an diesen Benutzer“-Funktion nicht nutzen, solange keine gültige E-Mail-Adresse in Ihren [[Special:Preferences|Benutzerkonto-Einstellungen]] eingetragen ist oder diese Funktion für Sie gesperrt wurde.\n\nIhre aktuelle IP-Adresse ist $3, und die Sperr-ID ist $5.\nBitte fügen Sie alle Informationen jeder Anfrage hinzu, die Sie stellen.",
        "whitelistedittext": "Sie müssen sich $1, um Seiten bearbeiten zu können.",
        "nosuchsectiontext": "Sie haben versucht, einen Abschnitt zu bearbeiten, der nicht existiert.\nVermutlich 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.\nUm diese Seite anzulegen, tragen Sie Ihren Text in das untenstehende Bearbeitungsfeld ein (weitere Informationen auf der [$1 Hilfeseite]).\nSofern 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.''",
+       "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:CreateAccount|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.\nSie können diesen Titel auf den anderen Seiten [[Special:Search/{{PAGENAME}}|suchen]],\n<span class=\"plainlinks\">in den zugehörigen [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbüchern suchen] oder diese Seite [{{fullurl:{{FULLPAGENAME}}|action=edit}} bearbeiten]</span>.",
-       "noarticletext-nopermission": "Diese Seite enthält momentan noch keinen Text.\nSie können ihren Titel auf anderen Seiten [[Special:Search/{{PAGENAME}}|suchen]] oder die zugehörigen <span class=\"plainlinks\">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbücher betrachten].</span>. Sie sind allerdings nicht berechtigt diese Seite zu erstellen.",
+       "noarticletext-nopermission": "Diese Seite enthält momentan noch keinen Text und Sie sind auch nicht berechtigt diese Seite zu erstellen.\nSie können ihren Titel auf anderen Seiten [[Special:Search/{{PAGENAME}}|suchen]] oder die zugehörigen <span class=\"plainlinks\">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbücher betrachten].</span>",
        "userpage-userdoesnotexist": "Das Benutzerkonto „<nowiki>$1</nowiki>“ ist nicht vorhanden. Bitte prüfen Sie, ob Sie diese Seite wirklich erstellen/bearbeiten möchten.",
        "clearyourcache": "'''Hinweis:''' Leeren Sie nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können.\n* '''Firefox/Safari:''' ''Umschalttaste'' drücken und gleichzeitig ''Aktualisieren'' anklicken oder entweder ''Strg+F5'' oder ''Strg+R'' (''⌘+R'' auf dem Mac) drücken\n* '''Google Chrome:''' ''Umschalttaste+Strg+R'' (''⌘+Umschalttaste+R'' auf dem Mac) drücken\n* '''Internet Explorer:''' ''Strg+F5'' drücken oder ''Strg'' drücken und gleichzeitig ''Aktualisieren'' anklicken\n* '''Opera:''' ''Extras → Internetspuren löschen … → Individuelle Auswahl → Den kompletten Cache löschen''",
        "usercssyoucanpreview": "'''Tipp:''' Benutzen Sie den „{{int:showpreview}}“-Button, um Ihr neues CSS vor dem Speichern zu testen.",
        "session_fail_preview_html": "'''Ihre Bearbeitung konnte nicht gespeichert werden, da Sitzungsdaten verloren gegangen sind.'''\n\n''Da in {{SITENAME}} das Speichern von reinem HTML aktiviert ist, wurde die Vorschau ausgeblendet, um JavaScript-Attacken vorzubeugen.''\n\n'''Bitte versuchen Sie es erneut, indem Sie unter der folgenden Textvorschau nochmals auf „Seite speichern“ klicken.\nSollte das Problem bestehen bleiben, [[Special:UserLogout|melden Sie sich ab]] und danach wieder an.'''",
        "token_suffix_mismatch": "'''Ihre Bearbeitung wurde zurückgewiesen, da Ihr Browser Zeichen im Bearbeiten-Token verstümmelt hat.\nEine Speicherung kann den Seiteninhalt zerstören. Dies geschieht bisweilen durch die Benutzung eines anonymen Proxy-Dienstes, der fehlerhaft arbeitet.'''",
        "edit_form_incomplete": "'''Der Inhalt des Bearbeitungsformulars hat den Server nicht vollständig erreicht. Bitte prüfen Sie Ihre Bearbeitungen auf Vollständigkeit und versuchen Sie es erneut.'''",
-       "explainconflict": "Jemand anders hat diese Seite geändert, nachdem Sie angefangen haben, sie zu bearbeiten.\nDas obere Textfeld enthält den aktuellen Bearbeitungsstand der Seite.\nDas untere Textfeld enthält Ihre Änderungen.\nBitte fügen Sie Ihre Änderungen in das obere Textfeld ein.\n'''Nur''' der Inhalt des oberen Textfeldes wird gespeichert, wenn Sie auf „{{int:savearticle}}“ klicken.",
+       "explainconflict": "Jemand anders hat diese Seite geändert, nachdem Sie angefangen haben, sie zu bearbeiten.\nDas obere Textfeld enthält den aktuellen Bearbeitungsstand der Seite.\nDas untere Textfeld enthält Ihre Änderungen.\nBitte fügen Sie Ihre Änderungen in das obere Textfeld ein.\n'''Nur''' der Inhalt des oberen Textfeldes wird gespeichert, wenn Sie auf „$1“ klicken.",
        "yourtext": "Ihr Text",
        "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.'''",
        "rev-suppressed-unhide-diff": "Eine der Versionen dieses Versionsunterschieds wurde '''unterdrückt'''.\nNähere Angaben stehen im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Unterdrückungs-Logbuch].\nSie können [$1 diesen Versionsunterschied einsehen], sofern Sie möchten.",
        "rev-deleted-diff-view": "Eine Version dieses Versionsunterschieds wurde '''gelöscht'''.\nSie können diesen Versionsunterschied einsehen, sofern Sie möchten. Nähere Angaben stehen im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch].",
        "rev-suppressed-diff-view": "Eine der Versionen dieses Versionsunterschiedes wurde '''unterdrückt'''.\nSie können diesen Versionsunterschied einsehen, sofern Sie möchten. Nähere Angaben stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unterdrückungs-Logbuch].",
-       "revdelete-nooldid-text": "Sie haben entweder keine Version angegeben, auf die diese Aktion ausgeführt werden soll, die gewählte Version ist nicht vorhanden oder Sie versuchen, die aktuelle Version zu entfernen.",
+       "revdelete-nooldid-text": "Sie haben entweder keine Zielversion angegeben, auf die diese Funktion ausgeführt werden soll, die gewählte Version ist nicht vorhanden oder Sie versuchen, die aktuelle Version zu verstecken.",
        "revdelete-show-file-confirm": "Sind Sie sicher, dass Sie die gelöschte Version der Datei „<nowiki>$1</nowiki>“ vom $2 um $3 Uhr ansehen wollen?",
        "revdelete-confirm": "Bitte bestätigen Sie, dass Sie beabsichtigen, dies zu tun, die Konsequenzen verstehen und es in Übereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]] tun.",
        "revdelete-show-no-access": "Fehler beim Anzeigen des Eintrags vom $1, $2 Uhr: Dieser Eintrag wurde als „eingeschränkt“ markiert.\nSie haben darauf keinen Zugriff.",
        "revdelete-modify-no-access": "Fehler beim Bearbeiten des Eintrags vom $1, $2 Uhr: Dieser Eintrag wurde als „eingeschränkt“ markiert.\nSie haben darauf keinen Zugriff.",
        "revdelete-concurrent-change": "Fehler beim Bearbeiten des Eintrags vom $1, $2 Uhr: Es scheint, als ob der Status von jemandem geändert wurde, bevor Sie vorhatten, ihn zu bearbeiten.\nBitte prüfen Sie die Logbücher.",
        "revdelete-only-restricted": "Fehler beim Verstecken des Eintrags vom $1, $2 Uhr: Sie können keinen Eintrag vor Administratoren verstecken, ohne eine der anderen Ansichtsoptionen gewählt zu haben.",
+       "suppressionlogtext": "Dies ist das Logbuch der Oversight-Aktionen (Änderungen der Sichtbarkeit von Versionen, Bearbeitungskommentaren, Benutzernamen und Benutzersperren). Sehen Sie in die [[Special:BlockList|Liste der gesperrten IP-Adressen und Benutzernamen]] für aktuelle Sperren.",
        "mergehistory-header": "Mit dieser Spezialseite können Sie die Versionsgeschichte einer Ursprungsseite mit der Versionsgeschichte einer Zielseite vereinen.\nStellen Sie sicher, dass die Versionsgeschichte einer Seite historisch korrekt ist.",
        "mergehistory-merge": "Die folgenden Versionen von „[[:$1]]“ können nach „[[:$2]]“ übertragen werden. Markieren Sie die Version, bis zu der (einschließlich) die Versionen übertragen werden sollen. Bitte beachten Sie, dass die Nutzung der Navigationslinks die Auswahl zurücksetzt.",
        "mergehistory-fail": "Versionsvereinigung nicht möglich, bitte prüfen Sie die Seite und die Zeitangaben.",
+       "searchmenu-exists": "<strong>Es gibt eine Seite, die den Namen „[[:$1]]“ hat.</strong> {{PLURAL:$2|0=|Weitere Suchergebnisse anzeigen.}}",
        "searchmenu-new": "<strong>Erstellen Sie die Seite „[[:$1]]“ in diesem Wiki.</strong> {{PLURAL:$2|0=|Siehe auch die über Ihre Suche gefundene Seite.|Siehe auch die gefundenen Suchergebnisse.}}",
        "search-suggest": "Meinten Sie „$1“?",
        "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.",
-       "prefsnologintext2": "Sie müssen sich $1, um Ihre Benutzereinstellungen festzulegen.",
+       "prefsnologintext2": "Sie müssen sich einloggen, um Ihre Benutzereinstellungen zu ändern.",
        "prefs-help-watchlist-token2": "Dies ist der geheime Schlüssel zum Webfeed Ihrer Beobachtungsliste.\nJeder, der ihn kennt, kann Ihre Beobachtungsliste lesen. Teilen Sie ihn deshalb nicht Anderen mit.\nSofern notwendig, [[Special:ResetTokens|können Sie ihn zurücksetzen]].",
        "savedprefs": "Ihre Einstellungen wurden gespeichert.",
        "prefs-reset-intro": "Sie können diese Seite verwenden, um die Einstellungen auf die Standards zurückzusetzen.\nDies kann nicht mehr rückgängig gemacht werden.",
        "prefs-help-prefershttps": "Diese Einstellung wird bei Ihrer nächsten Anmeldung wirksam.",
        "userrights-groups-help": "Sie können die Gruppenzugehörigkeit dieses Benutzers ändern:\n* Ein markiertes Kästchen bedeutet, dass der Benutzer Mitglied dieser Gruppe ist.\n* Ein nichtmarkiertes Kästchen bedeutet, dass der Benutzer nicht Mitglied dieser Gruppe ist.\n* Ein * bedeutet, dass Sie das Benutzerrecht nach Erteilung nicht wieder zurücknehmen können (oder umgekehrt).",
        "userrights-no-interwiki": "Sie haben nicht die erforderliche Berechtigung, um Benutzerrechte in anderen Wikis ändern zu können.",
-       "userrights-nologin": "Sie müssen sich mit einem Administrator-Benutzerkonto [[Special:UserLogin|anmelden]], um Benutzerrechte zu ändern.",
-       "userrights-notallowed": "Sie verfügen nicht über die erforderlichen Berechtigungen, um Benutzerrechte vergeben oder entziehen zu können.",
        "userrights-changeable-col": "Gruppenzugehörigkeit, die Sie ändern dürfen",
        "userrights-unchangeable-col": "Gruppenzugehörigkeit, die Sie nicht ändern dürfen",
        "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}}.",
-       "recentchangeslinked-summary": "Diese Spezialseite listet die letzten Änderungen an den verlinkten Seiten auf (bzw. bei Kategorien an den Mitgliedern dieser Kategorie).\nSeiten auf Ihrer [[Special:Watchlist|Beobachtungsliste]] sind '''fett''' dargestellt.",
+       "recentchangeslinked-summary": "Diese Spezialseite listet die letzten Änderungen an den verlinkten Seiten auf (bzw. an in dieser Kategorie enthaltenen Kategorien).\nSeiten auf Ihrer [[Special:Watchlist|Beobachtungsliste]] sind <strong>fett</strong> dargestellt.",
        "uploadnologintext": "Sie müssen sich $1 um Dateien hochladen zu können.",
        "uploadtext": "Benutzen Sie dieses Formular, um neue Dateien hochzuladen.\n\nGehen 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]].\n\nUm ein '''Bild''' in einer Seite zu verwenden, nutzen Sie einen Link in der folgenden Form:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Datei.jpg]]</nowiki></code>''' – für ein Vollbild\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Datei.png|200px|thumb|left|Alternativer Text]]</nowiki></code>''' – für ein 200px breites Bild innerhalb einer Box, mit „Alternativer Text“ als Bildbeschreibung\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Datei.ogg]]</nowiki></code>''' – für einen direkten Link auf die Datei, ohne Darstellung der Datei",
        "illegalfilename": "Der Dateiname „$1“ enthält mindestens ein nicht erlaubtes Zeichen. Bitte benennen Sie die Datei um und versuchen Sie, sie erneut hochzuladen.",
        "img-auth-isdir": "Sie versuchen, auf ein Verzeichnis „$1“ zuzugreifen.\nNur Dateizugriff ist erlaubt.",
        "upload-curl-error6-text": "Die angegebene URL ist nicht erreichbar. Prüfen Sie sowohl die URL auf Fehler als auch den Online-Status der Seite.",
        "upload-curl-error28-text": "Die Seite braucht zu lange, um zu antworten. Prüfen Sie, ob die Seite online ist, warten Sie einen kurzen Moment und versuchen Sie es dann erneut. Es kann sinnvoll sein, es zu einem anderen Zeitpunkt erneut zu versuchen.",
-       "upload_source_file": " (eine Datei auf Ihrem Computer)",
+       "upload_source_file": "(die von Ihnen auf Ihrem Computer ausgewählte Datei)",
        "filehist-help": "Klicken Sie auf einen Zeitpunkt, um diese Version zu laden.",
        "sharedupload-desc-edit": "Diese Datei stammt aus $1 und kann auf anderen Projekten verwendet werden.\nVielleicht möchten Sie die Beschreibung auf der dortigen [$2 Dateibeschreibungsseite] bearbeiten.",
        "sharedupload-desc-create": "Diese Datei stammt aus $1 und kann von anderen Projekten verwendet werden.\nVielleicht möchten Sie die Beschreibung auf der dortigen [$2 Dateibeschreibungsseite] bearbeiten.",
        "unusedtemplatestext": "Diese Seite listet alle Seiten im {{ns:template}}-Namensraum auf, die nicht in anderen Seiten eingebunden sind.\nÜberprüfen Sie andere Links zu den Vorlagen, bevor Sie diese löschen.",
        "unusedimagestext": "Bitte beachten Sie, dass andere Webseiten eine Datei mit einer direkten URL verlinken können. Sie könnte daher hier aufgelistet sein, obwohl sie in aktiver Verwendung ist.",
        "notargettext": "Sie haben nicht angegeben, auf welche Seite diese Funktion angewendet werden soll.",
+       "apisandbox-intro": "Diese Seite können Sie für Versuche mit der '''MediaWiki-API''' verwenden.\nDie [//www.mediawiki.org/wiki/API:Main_page/de Dokumentation zur API] enthält weitere Hinweise zu ihrer Nutzung. Beispiel: [//www.mediawiki.org/wiki/API:Main_page/de#Ein_einfaches_Beispiel Den Inhalt auf einer Seite abrufen]. Für weitere Beispiele eine der verfügbaren Aktionen auswählen.",
        "booksources-invalid-isbn": "Vermutlich ist die ISBN ungültig.\nBitte 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.",
        "blockiptext": "Mit diesem Formular sperren Sie eine IP-Adresse oder einen Benutzernamen, so dass von dort keine Änderungen mehr vorgenommen werden können.\nDies sollte nur erfolgen, um Vandalismus zu verhindern und in Übereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]].\nBitte geben Sie den Grund für die Sperre an.",
        "ipb-blockingself": "Sie sind gerade dabei, sich selbst zu sperren! Möchten Sie das wirklich tun?",
        "ipb-confirmhideuser": "Sie sind 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öchten Sie das wirklich tun?",
+       "ipb-confirmaction": "Wenn Sie sich sicher sind, dass Sie dies wirklich tun möchten, kreuzen Sie bitte unten das Feld „{{int:ipb-confirm}}“ an.",
        "unblockiptext": "Mit diesem Formular können Sie eine IP-Adresse oder einen Benutzer freigeben.",
        "autoblocker": "Automatische Sperre, da Sie eine gemeinsame IP-Adresse mit [[User:$1|$1]] benutzen. Der bei der Sperren von „$1“ angegebene Grund lautet: „$2“.",
        "ipb-needreblock": "„$1“ ist bereits gesperrt. Möchten Sie die Sperrparameter ändern?",
        "movepagetext": "Mit untenstehendem Formular können Sie eine Seite umbenennen, indem Sie sie mitsamt allen Versionen auf einen neuen Titel verschieben.\nDer alte Titel wird danach zum neuen weiterleiten.\nSie können Weiterleitungen, die auf den Originaltitel verlinken, automatisch korrigieren lassen.\nStellen Sie sicher, dass Sie im Anschluss alle [[Special:DoubleRedirects|doppelten]] oder [[Special:BrokenRedirects|defekten Weiterleitungen]] überprüfen.\nSie sind dafür verantwortlich, dass Links weiterhin auf das korrekte Ziel verweisen.\n\nDie Seite wird '''nicht''' verschoben, sofern es bereits eine Seite mit dem vorgesehenen Titel gibt, es sei denn, letztere ist eine Weiterleitung ohne Versionsgeschichte.\nDies 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.\n\n'''Warnung!'''\nDie Verschiebung kann weitreichende und unerwartete Folgen für häufig besuchte Seiten haben.\nSie 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.\nDer alte Titel wird danach zum neuen weiterleiten.\nStellen Sie sicher, dass Sie im Anschluss alle [[Special:DoubleRedirects|doppelten]] oder [[Special:BrokenRedirects|defekten Weiterleitungen]] überprüfen.\nSie sind dafür verantwortlich, dass Links weiterhin auf das korrekte Ziel verweisen.\n\nDie Seite wird '''nicht''' verschoben, sofern es bereits eine Seite mit dem vorgesehenen Titel gibt, es sei denn, diese ist eine Weiterleitung ohne Versionsgeschichte.\nDies 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.\n\n'''Warnung!'''\nDie Verschiebung kann weitreichende und unerwartete Folgen für häufig besuchte Seiten haben.\nSie sollten daher die Konsequenzen verstanden haben, bevor Sie jetzt fortfahren.",
        "movepagetalktext": "Die dazugehörige Diskussionsseite wird, sofern vorhanden, mitverschoben, '''es sei denn:'''\n*Es existiert bereits eine Diskussionsseite mit diesem Namen, oder\n*Sie wählen die unten stehende Option ab.\n\nIn diesen Fällen müssen Sie, falls gewünscht, den Inhalt der Seite von Hand verschieben oder zusammenführen.\n\nBitte 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.",
+       "moveuserpage-warning": "<strong>Warnung:</strong> Sie sind dabei, eine Benutzerseite zu verschieben. Bitte bedenken Sie, dass dadurch nur die Benutzerseite verschoben, <em>nicht</em> aber der Benutzer umbenannt wird.",
+       "movecategorypage-warning": "<strong>Warnung:</strong> Sie sind gerade dabei, eine Kategorieseite zu verschieben. Bitte seien Sie sich bewusst, dass nur die Seite verschoben wird. Alle der alten Kategorie zugeordneten Seiten werden <em>nicht</em> neu kategorisiert.",
        "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.",
        "import-token-mismatch": "Verlust der Sessiondaten. Bitte versuchen Sie es erneut.",
        "import-error-edit": "Die Seite „$1“ wurde nicht importiert, da Sie nicht berechtigt sind, sie zu bearbeiten.",
        "import-error-create": "Die Seite „$1“ wurde nicht importiert, da Sie nicht berechtigt sind, sie zu erstellen.",
-       "javascripttest-pagetext-frameworks": "Bitte wählen Sie eine der folgenden Prüfumgebungen aus: $1",
-       "javascripttest-pagetext-skins": "Wählen Sie eine Benutzeroberfläche zur Durchführung der Tests aus:",
        "tooltip-pt-userpage": "Ihre Benutzerseite",
        "tooltip-pt-anonuserpage": "Benutzerseite der IP-Adresse, von der aus Sie Änderungen durchführen",
        "tooltip-pt-mytalk": "Ihre Diskussionsseite",
+       "tooltip-pt-preferences": "Ihre Einstellungen",
+       "tooltip-pt-watchlist": "Liste der von Ihnen beobachteten Seiten",
        "tooltip-pt-mycontris": "Liste Ihrer Beiträge",
+       "tooltip-pt-createaccount": "Wir ermutigen Sie ein Benutzerkonto zu erstellen und sich anzumelden. Es ist jedoch nicht zwingend erforderlich.",
+       "tooltip-ca-edit": "Sie können diese Seite bearbeiten. Bitte nutzen Sie auch die Vorschaufunktion vor dem Speichern.",
+       "tooltip-ca-watch": "Diese Seite zu Ihrer Beobachtungsliste hinzufügen",
        "tooltip-n-mainpage": "Besuchen Sie die Hauptseite",
        "tooltip-n-mainpage-description": "Besuchen Sie die Hauptseite",
        "tooltip-n-portal": "Über das Projekt, was Sie tun können, wo was zu finden ist",
        "tooltip-watch": "Diese Seite zu Ihrer Beobachtungsliste hinzufügen",
        "tooltip-summary": "Geben Sie eine kurze Zusammenfassung ein.",
-       "spamprotectiontext": "Der Text, die Sie speichern wollen, wurde vom Spamschutzfilter blockiert.\nDas liegt wahrscheinlich an einem Link auf eine externe Seite.",
+       "spamprotectiontext": "Der Text, den Sie speichern möchten, wurde vom Spamschutzfilter blockiert.\nDas liegt wahrscheinlich an einem Link auf eine externe Seite.",
        "markedaspatrollederrortext": "Sie müssen eine Seitenänderung auswählen.",
-       "mediawarning": "'''Warnung:''' Dieser Dateityp kann böswilligen Programmcode enthalten.\nDurch das Herunterladen und Öffnen der Datei kann Ihr Computer beschädigt werden.",
+       "mediawarning": "<strong>Warnung:</strong> Dieser Dateityp kann böswilligen Programmcode enthalten.\nDurch das Herunterladen und Öffnen der Datei kann Ihr Computer beschädigt werden.",
        "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.\nWenn Sie Ihr Benutzerkonto erst vor kurzem erstellt haben, warten Sie bitte noch ein paar Minuten auf die E-Mail, bevor Sie einen neuen Code anfordern.",
        "watchlistedit-normal-done": "{{PLURAL:$1|Ein Eintrag wurde|$1 Einträge wurden}} von Ihrer Beobachtungsliste entfernt:",
        "watchlistedit-raw-explain": "Dies sind die Einträge Ihrer Beobachtungsliste im Listenformat. Die Einträge können zeilenweise gelöscht oder hinzugefügt werden.\nPro Zeile ist ein Eintrag erlaubt.\nSobald Sie fertig sind, klicken Sie auf „{{int:Watchlistedit-raw-submit}}“.\nSie können auch die [[Special:EditWatchlist|Standardseite]] zum Bearbeiten benutzen.",
        "watchlistedit-raw-done": "Ihre Beobachtungsliste wurde gespeichert.",
+       "watchlistedit-clear-explain": "Alle Seiten werden ausnahmslos von Ihrer Beobachtungsliste entfernt.",
        "dberr-again": "Warten Sie einige Minuten und versuchen Sie dann neu zuladen.",
        "dberr-usegoogle": "Sie könnten in der Zwischenzeit mit Google suchen.",
        "dberr-outofdate": "Beachten Sie, dass der Suchindex unserer Inhalte bei Google veraltet sein kann.",
-       "feedback-bugornote": "Sofern Sie detailliert ein technisches Problem beschreiben möchten, melden Sie bitte [$1 einen Fehler].\nAnderenfalls können Sie auch das untenstehende einfache Formular nutzen. Ihr Kommentar wird, zusammen mit Ihrem Benutzernamen und der Version des von Ihnen verwendeten Webbrowsers sowie Betriebssystems, auf der Seite „[$3 $2]“ hinzugefügt.",
-       "feedback-thanks": "Vielen Dank. Ihre Rückmeldung wurde auf der Seite „[$2 $1]“ gespeichert.",
        "feedback-bugcheck": "Super! Bitte überprüfen Sie noch, ob es sich hierbei nicht um einen bereits [$1 bekannten Fehler] handelt.",
-       "api-error-badaccess-groups": "Sie haben nicht die Berechtigung Dateien in dieses Wiki hochzuladen.",
-       "api-error-hookaborted": "Die von Ihnen vorgesehene Anpassung kann nicht durchgeführt werden (Unterbrechung durch eine Programmschnittstelle).",
-       "api-error-mustbeloggedin": "Um Dateien hochladen zu können, müssen Sie angemeldet sein."
+       "feedback-bugornote": "Sofern Sie detailliert ein technisches Problem beschreiben möchten, melden Sie bitte [$1 einen Fehler].\nAnderenfalls können Sie auch das untenstehende einfache Formular nutzen. Ihr Kommentar wird, zusammen mit Ihrem Benutzernamen und der Version des von Ihnen verwendeten Webbrowsers sowie Betriebssystems, auf der Seite „[$3 $2]“ hinzugefügt.",
+       "feedback-thanks": "Vielen Dank. Ihre Rückmeldung wurde auf der Seite „[$2 $1]“ gespeichert."
 }
index 44df213..7c821c0 100644 (file)
        "anontalk": "Diskussionsseite",
        "navigation": "Navigation",
        "and": "&#32;und",
-       "qbfind": "Finden",
-       "qbbrowse": "Durchsuchen",
-       "qbedit": "Bearbeiten",
-       "qbpageoptions": "Seitenoptionen",
-       "qbmyoptions": "Meine Seiten",
        "faq": "Häufig gestellte Fragen",
-       "faqpage": "Project:FAQ",
        "actions": "Aktionen",
        "namespaces": "Namensräume",
        "variants": "Varianten",
        "edit-local": "Lokale Beschreibung bearbeiten",
        "create": "Erstellen",
        "create-local": "Lokale Beschreibung hinzufügen",
-       "editthispage": "Seite bearbeiten",
-       "create-this-page": "Seite erstellen",
        "delete": "Löschen",
-       "deletethispage": "Diese Seite löschen",
-       "undeletethispage": "Diese Seite wiederherstellen",
        "undelete_short": "{{PLURAL:$1|1 Version|$1 Versionen}} wiederherstellen",
        "viewdeleted_short": "{{PLURAL:$1|Eine gelöschte Version|$1 gelöschte Versionen}} ansehen",
        "protect": "Schützen",
        "protect_change": "ändern",
-       "protectthispage": "Seite schützen",
        "unprotect": "Seitenschutz ändern",
-       "unprotectthispage": "Seitenschutz ändern",
        "newpage": "Neue Seite",
-       "talkpage": "Diese Seite diskutieren",
        "talkpagelinktext": "Diskussion",
        "specialpage": "Spezialseite",
        "personaltools": "Meine Werkzeuge",
-       "articlepage": "Inhaltsseite anzeigen",
        "talk": "Diskussion",
        "views": "Ansichten",
        "toolbox": "Werkzeuge",
        "tool-link-userrights": "{{GENDER:$1|Benutzergruppen}} ändern",
        "tool-link-userrights-readonly": "{{GENDER:$1|Benutzergruppen}} ansehen",
        "tool-link-emailuser": "E-Mail an {{GENDER:$1|diesen Benutzer|diese Benutzerin}} senden",
-       "userpage": "Benutzerseite anzeigen",
-       "projectpage": "Projektseite anzeigen",
        "imagepage": "Dateiseite anzeigen",
        "mediawikipage": "Meldungsseite anzeigen",
        "templatepage": "Vorlagenseite anzeigen",
        "redirectedfrom": "(Weitergeleitet von $1)",
        "redirectpagesub": "Weiterleitung",
        "redirectto": "Weiterleitung nach:",
-       "lastmodifiedat": "Diese Seite wurde zuletzt am $1 um $2 Uhr geändert.",
+       "lastmodifiedat": "Diese Seite wurde zuletzt am $1 um $2 Uhr bearbeitet.",
        "viewcount": "Diese Seite wurde bisher {{PLURAL:$1|einmal|$1 mal}} abgerufen.",
        "protectedpage": "Geschützte Seite",
        "jumpto": "Wechseln zu:",
        "preview": "Vorschau",
        "showpreview": "Vorschau zeigen",
        "showdiff": "Änderungen zeigen",
-       "blankarticle": "<strong>Warnung:</strong> Die Seite, die du erstellst, ist leer.\nWenn du erneut auf „{{int:savearticle}}“ klickst, wird die Seite ohne Inhalt erstellt.",
+       "blankarticle": "<strong>Warnung:</strong> Die Seite, die du erstellst, ist leer.\nWenn du erneut auf „$1“ klickst, wird die Seite ohne Inhalt erstellt.",
        "anoneditwarning": "<strong>Warnung:</strong> Du bist nicht angemeldet. Deine IP-Adresse wird öffentlich sichtbar, falls du Bearbeitungen durchführst. Sofern du dich <strong>[$1 anmeldest]</strong> oder <strong>[$2 ein Benutzerkonto erstellst]</strong>, werden deine Bearbeitungen zusammen mit anderen Beiträgen deinem Benutzernamen zugeordnet.",
        "anonpreviewwarning": "''Du bist nicht angemeldet. Beim Speichern wird deine IP-Adresse in der Versionsgeschichte aufgezeichnet.''",
-       "missingsummary": "<strong>Hinweis:</strong> Du hast keine Zusammenfassung angegeben. Wenn du erneut auf „{{int:savearticle}}“ klickst, wird deine Änderung ohne Zusammenfassung übernommen.",
-       "selfredirect": "<strong>Warnung:</strong> Du leitest auf diese Seite selbst weiter.\nDu hast vermutlich das falsche Weiterleitungsziel angegeben oder du bearbeitest die falsche Seite.\nWenn du erneut auf „{{int:savearticle}}“ klickst, wird die Weiterleitung dennoch erstellt.",
+       "missingsummary": "<strong>Hinweis:</strong> Du hast keine Zusammenfassung angegeben. Wenn du erneut auf „$1“ klickst, wird deine Änderung ohne Zusammenfassung übernommen.",
+       "selfredirect": "<strong>Warnung:</strong> Du leitest auf diese Seite selbst weiter.\nDu hast vermutlich das falsche Weiterleitungsziel angegeben oder du bearbeitest die falsche Seite.\nWenn du erneut auf „$1“ klickst, wird die Weiterleitung dennoch erstellt.",
        "missingcommenttext": "Bitte gib unten einen Kommentar ein.",
-       "missingcommentheader": "<strong>Achtung:</strong> Du hast keinen Betreff eingegeben. Wenn du erneut auf „{{int:savearticle}}“ klickst, wird deine Bearbeitung ohne Überschrift gespeichert.",
+       "missingcommentheader": "<strong>Achtung:</strong> Du hast keinen Betreff eingegeben. Wenn du erneut auf „$1“ klickst, wird deine Bearbeitung ohne Überschrift gespeichert.",
        "summary-preview": "Vorschau der Zusammenfassungszeile:",
        "subject-preview": "Vorschau der Zusammenfassungszeile:",
        "previewerrortext": "Beim Versuch, eine Vorschau deiner Änderungen anzuzeigen, ist ein Fehler aufgetreten.",
        "editingsection": "Bearbeiten von „$1“ (Abschnitt)",
        "editingcomment": "Bearbeiten von „$1“ (Neuer Abschnitt)",
        "editconflict": "Bearbeitungskonflikt: $1",
-       "explainconflict": "Jemand anders hat diese Seite geändert, nachdem du angefangen hast, sie zu bearbeiten.\nDas obere Textfeld enthält den aktuellen Bearbeitungsstand der Seite.\nDas untere Textfeld enthält deine Änderungen.\nBitte füge deine Änderungen in das obere Textfeld ein.\n'''Nur''' der Inhalt des oberen Textfeldes wird gespeichert, wenn du auf „{{int:savearticle}}“ klickst.",
+       "explainconflict": "Jemand anders hat diese Seite geändert, nachdem du angefangen hast, sie zu bearbeiten.\nDas obere Textfeld enthält den aktuellen Bearbeitungsstand der Seite.\nDas untere Textfeld enthält deine Änderungen.\nBitte füge deine Änderungen in das obere Textfeld ein.\n<strong>Nur</strong> der Inhalt des oberen Textfeldes wird gespeichert, wenn du auf „$1“ klickst.",
        "yourtext": "Dein Text",
        "storedversion": "Gespeicherte Version",
        "nonunicodebrowser": "'''Achtung: Dein Browser kann Unicode-Zeichen nicht richtig verarbeiten.''' Es wird eine Hilfsroutine eingesetzt, um dir zu erlauben, Seiten sicher zu bearbeiten: Nicht-ASCII-Zeichen werden dabei im Bearbeitungsfenster als hexadezimale Codes angezeigt.",
        "search-file-match": "(treffende Dateiinhalte)",
        "search-suggest": "Meintest du „$1“?",
        "search-rewritten": "Es werden die Ergebnisse für $1 angezeigt. Stattdessen nach $2 suchen.",
-       "search-interwiki-caption": "Schwesterprojekte",
+       "search-interwiki-caption": "Ergebnisse von Schwesterprojekten",
        "search-interwiki-default": "Ergebnisse von $1:",
        "search-interwiki-more": "(weitere)",
        "search-interwiki-more-results": "Weitere Ergebnisse",
        "recentchanges-legend-plusminus": "''(±123)''",
        "recentchanges-submit": "Anzeigen",
        "rcfilters-activefilters": "Aktive Filter",
+       "rcfilters-quickfilters": "Gespeicherte Filtereinstellungen",
+       "rcfilters-quickfilters-placeholder-title": "Noch keine Links gespeichert",
+       "rcfilters-quickfilters-placeholder-description": "Um deine Filtereinstellungen zu speichern und später erneut zu verwenden, klicke unten auf das Lesezeichensymbol im Bereich der aktiven Filter.",
+       "rcfilters-savedqueries-defaultlabel": "Gespeicherte Filter",
+       "rcfilters-savedqueries-rename": "Umbenennen",
+       "rcfilters-savedqueries-setdefault": "Als Standard festlegen",
+       "rcfilters-savedqueries-unsetdefault": "Als Standard entfernen",
+       "rcfilters-savedqueries-remove": "Entfernen",
+       "rcfilters-savedqueries-new-name-label": "Name",
+       "rcfilters-savedqueries-apply-label": "Einstellungen speichern",
+       "rcfilters-savedqueries-cancel-label": "Abbrechen",
+       "rcfilters-savedqueries-add-new-title": "Aktuelle Filtereinstellungen speichern",
        "rcfilters-restore-default-filters": "Standardfilter wiederherstellen",
        "rcfilters-clear-all-filters": "Alle Filter löschen",
        "rcfilters-search-placeholder": "Letzte Änderungen filtern (durchsuchen oder beginne mit der Eingabe)",
        "rcfilters-filter-unregistered-label": "Unangemeldet",
        "rcfilters-filter-unregistered-description": "Autoren, die nicht angemeldet sind.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Dieser Filter befindet sich in Konflikt mit {{PLURAL:$2|dem folgenden Erfahrungsfilter, der nur angemeldete Benutzer finden kann|den folgenden Erfahrungsfiltern, die nur angemeldete Benutzer finden können}}: $1",
-       "rcfilters-filtergroup-authorship": "Bearbeitungs-Autorenschaft",
-       "rcfilters-filter-editsbyself-label": "Deine eigenen Bearbeitungen",
-       "rcfilters-filter-editsbyself-description": "Bearbeitungen von dir.",
-       "rcfilters-filter-editsbyother-label": "Bearbeitungen von anderen",
-       "rcfilters-filter-editsbyother-description": "Bearbeitungen von anderen Benutzern (nicht von dir).",
+       "rcfilters-filtergroup-authorship": "Beitrags-Autorenschaft",
+       "rcfilters-filter-editsbyself-label": "Änderungen von dir",
+       "rcfilters-filter-editsbyself-description": "Deine eigenen Beiträge.",
+       "rcfilters-filter-editsbyother-label": "Änderungen von anderen",
+       "rcfilters-filter-editsbyother-description": "Alle Änderungen außer deine eigenen.",
        "rcfilters-filtergroup-userExpLevel": "Erfahrungsniveau (nur für angemeldete Benutzer)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Erfahrungsfilter finden nur angemeldete Benutzer. Deshalb befindet sich dieser Filter in Konflikt mit dem Filter „Unangemeldet“.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Der Filter „Unangemeldet“ befindet sich in Konflikt mit einem oder mehreren Erfahrungsfiltern, die nur angemeldete Benutzer finden können. Die kollidierenden Filter sind oben im Bereich der aktiven Filter markiert.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Neulinge",
        "rcfilters-filter-user-experience-level-newcomer-description": "Weniger als 10 Bearbeitungen und eine Aktivität von weniger als 4 Tagen.",
        "rcfilters-filter-user-experience-level-learner-label": "Anfänger",
-       "rcfilters-filter-user-experience-level-learner-description": "Eine Aktivität von mehreren Tagen und mehr Bearbeitungen als „Neulinge“, aber weniger als „Erfahrene Benutzer“.",
+       "rcfilters-filter-user-experience-level-learner-description": "Mehr Erfahrung als „Neulinge“, aber weniger als „Erfahrene Benutzer“.",
        "rcfilters-filter-user-experience-level-experienced-label": "Erfahrene Benutzer",
        "rcfilters-filter-user-experience-level-experienced-description": "Eine Aktivität von mehr als 30 Tagen und mehr als 500 Bearbeitungen.",
        "rcfilters-filtergroup-automated": "Automatisierte Beiträge",
        "rcfilters-filter-minor-description": "Bearbeitungen, die der Autor als geringfügig markiert hat.",
        "rcfilters-filter-major-label": "Nicht-kleine Änderungen",
        "rcfilters-filter-major-description": "Bearbeitungen, die nicht als geringfügig markiert wurden.",
+       "rcfilters-filtergroup-watchlist": "Beobachtete Seiten",
+       "rcfilters-filter-watchlist-watched-label": "Auf der Beobachtungsliste",
+       "rcfilters-filter-watchlist-watched-description": "Änderungen an Seiten auf deiner Beobachtungsliste.",
+       "rcfilters-filter-watchlist-watchednew-label": "Neue Beobachtungslisten-Änderungen",
+       "rcfilters-filter-watchlist-watchednew-description": "Änderungen an beobachteten Seiten, die du nicht besucht hast, seitdem die Änderungen auftraten.",
+       "rcfilters-filter-watchlist-notwatched-label": "Nicht auf der Beobachtungsliste",
+       "rcfilters-filter-watchlist-notwatched-description": "Alle außer Änderungen an deinen beobachteten Seiten.",
        "rcfilters-filtergroup-changetype": "Typ der Änderung",
        "rcfilters-filter-pageedits-label": "Seitenbearbeitungen",
        "rcfilters-filter-pageedits-description": "Änderungen am Wikiinhalt oder an Diskussionen, Kategoriebeschreibungen …",
        "rcfilters-filter-newpages-description": "Bearbeitungen, die zu neuen Seiten führen.",
        "rcfilters-filter-categorization-label": "Kategorieänderungen",
        "rcfilters-filter-categorization-description": "Einträge von Seiten, die zu Kategorien hinzugefügt oder aus ihnen entfernt wurden.",
-       "rcfilters-filter-logactions-label": "Protokollierte Aktionen",
+       "rcfilters-filter-logactions-label": "Logbucheinträge",
        "rcfilters-filter-logactions-description": "Administrative Aktionen, Benutzerkontenerstellungen, Seitenlöschungen, hochgeladene Dateien …",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Der Filter „Kleine Bearbeitungen“ kollidiert mit einem oder mehreren Änderungstypfiltern, da bestimmte Änderungstypen nicht als „klein“ festgelegt werden können. Die kollidierenden Filter sind oben im Bereich der aktiven Filter markiert.",
        "rcfilters-hideminor-conflicts-typeofchange": "Bestimmte Änderungstypen können nicht als „klein“ festgelegt werden, so dass dieser Filter mit den folgenden Änderungstypfiltern kollidiert: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Dieser Änderungstypfilter kollidiert mit dem Filter „Kleine Bearbeitungen“. Bestimmte Änderungstypen können nicht als „klein“ festgelegt werden.",
+       "rcfilters-filtergroup-lastRevision": "Letzte Version",
+       "rcfilters-filter-lastrevision-label": "Letzte Version",
+       "rcfilters-filter-lastrevision-description": "Die aktuellste Änderung an einer Seite.",
+       "rcfilters-filter-previousrevision-label": "Frühere Versionen",
+       "rcfilters-filter-previousrevision-description": "Alle Änderungen, die nicht die aktuellste Änderung an einer Seite sind.",
+       "rcfilters-filter-excluded": "Ausgeschlossen",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:nicht</strong> $1",
+       "rcfilters-view-tags": "Markierungen",
        "rcnotefrom": "Angezeigt {{PLURAL:$5|wird die Änderung|werden die Änderungen}} seit <strong>$3, $4</strong> (max. <strong>$1</strong> Einträge).",
        "rclistfromreset": "Datumsauswahl zurücksetzen",
        "rclistfrom": "Nur Änderungen seit $3, $2 Uhr zeigen.",
        "rcshowhidecategorization": "Seitenkategorisierungen $1",
        "rcshowhidecategorization-show": "anzeigen",
        "rcshowhidecategorization-hide": "ausblenden",
-       "rclinks": "Zeige die letzten $1 Änderungen der letzten $2 Tage.<br />$3",
+       "rclinks": "Zeige die letzten $1 Änderungen der letzten $2 Tage.",
        "diff": "Unterschied",
        "hist": "Versionen",
        "hide": "ausblenden",
        "apisandbox-sending-request": "Sende API-Anfrage …",
        "apisandbox-loading-results": "Rufe API-Ergebnisse ab …",
        "apisandbox-results-error": "Beim Laden der API-Anfragenantwort ist ein Fehler aufgetreten: $1.",
+       "apisandbox-results-login-suppressed": "Diese Anfrage wurde als ein abgemeldeter Benutzer verarbeitet, da sie zur Umgehung der Gleicher-Ursprung-Sicherheit des Browsers verwendet werden könnte. Beachte, dass die automatische Tokenbearbeitung der API-Spielwiese mit solchen Anfragen nicht ordnungsgemäß funktioniert. Bitte fülle sie manuell aus.",
        "apisandbox-request-selectformat-label": "Anfragedaten anzeigen als:",
        "apisandbox-request-format-url-label": "URL-Abfrage-Zeichenfolge",
        "apisandbox-request-url-label": "Anforderungs-URL:",
        "enotif_body_intro_moved": "Die {{SITENAME}}-Seite $1 wurde am $PAGEEDITDATE von {{GENDER:$2|$2}} verschoben. Siehe $3 für deren aktuelle Version.",
        "enotif_body_intro_restored": "Die {{SITENAME}}-Seite $1 wurde am $PAGEEDITDATE von {{GENDER:$2|$2}} wiederhergestellt. Siehe $3 für deren aktuelle Version.",
        "enotif_body_intro_changed": "Die {{SITENAME}}-Seite $1 wurde am $PAGEEDITDATE von {{GENDER:$2|$2}} geändert. Siehe $3 für deren aktuelle Version.",
-       "enotif_lastvisited": "Alle Änderungen auf einen Blick: $1",
-       "enotif_lastdiff": "Siehe $1 für diese Änderung.",
+       "enotif_lastvisited": "Für alle Änderungen seit deinem letzten Besuch, siehe $1",
+       "enotif_lastdiff": "Um diese Änderung anzusehen, siehe $1",
        "enotif_anon_editor": "Anonymer Benutzer $1",
        "enotif_body": "Hallo $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nZusammenfassung des Bearbeiters: $PAGESUMMARY $PAGEMINOREDIT\n\nKontakt zum Bearbeiter:\nE-Mail: $PAGEEDITOR_EMAIL\nWiki: $PAGEEDITOR_WIKI\n\nBei weiterer Aktivität auf der Seite werden dir so lange keine weiteren Benachrichtigungs-E-Mails gesendet, bis du die Seite wieder angemeldet besucht hast. Auf deiner Beobachtungsliste kannst du alle Benachrichtigungsmarkierungen zusammen zurücksetzen.\n\nDein freundliches {{SITENAME}}-Benachrichtigungssystem\n\n--\nUm die Einstellungen der E-Mail-Benachrichtigung anzupassen, besuche {{canonicalurl:{{#special:Preferences}}}}.\n\nUm die Einstellungen deiner Beobachtungsliste anzupassen, besuche {{canonicalurl:{{#special:EditWatchlist}}}}.\n\nUm die Seite von deiner Beobachtungsliste herunterzunehmen, besuche $UNWATCHURL.\n\nRückmeldungen und weitere Hilfe: $HELPPAGE",
        "created": "erstellt",
        "sp-contributions-uploads": "Hochgeladene Dateien",
        "sp-contributions-logs": "Logbücher",
        "sp-contributions-talk": "Diskussion",
-       "sp-contributions-userrights": "Benutzerrechte­verwaltung",
+       "sp-contributions-userrights": "{{GENDER:$1|Benutzerrechte­verwaltung}}",
        "sp-contributions-blocked-notice": "{{GENDER:$1|Dieser Benutzer|Diese Benutzerin}} ist derzeit gesperrt. Es folgt der aktuelle Eintrag aus dem Benutzersperr-Logbuch:",
        "sp-contributions-blocked-notice-anon": "Diese IP-Adresse ist zurzeit gesperrt.\nZur Information folgt der aktuelle Auszug aus dem Sperr-Logbuch:",
        "sp-contributions-search": "Suche nach Benutzerbeiträgen",
        "autoblocklist-submit": "Suchen",
        "autoblocklist-legend": "Automatische Sperren auflisten",
        "autoblocklist-localblocks": "Lokale automatische {{PLURAL:$1|Sperre|Sperren}}",
+       "autoblocklist-total-autoblocks": "Gesamte Anzahl der automatischen Sperren: $1",
        "autoblocklist-empty": "Die Liste der automatischen Sperren ist leer.",
        "autoblocklist-otherblocks": "Andere automatische {{PLURAL:$1|Sperre|Sperren}}",
        "ipblocklist": "Gesperrte Benutzer",
        "tooltip-pt-mycontris": "Liste {{GENDER:|eigener}} Beiträge",
        "tooltip-pt-anoncontribs": "Eine Liste der Bearbeitungen, die von dieser IP-Adresse gemacht wurden",
        "tooltip-pt-login": "Sich anzumelden wird gerne gesehen, ist jedoch nicht zwingend erforderlich.",
+       "tooltip-pt-login-private": "Du musst dich anmelden, um dieses Wiki zu nutzen.",
        "tooltip-pt-logout": "Abmelden",
        "tooltip-pt-createaccount": "Wir ermutigen dich dazu, ein Benutzerkonto zu erstellen und dich anzumelden. Es ist jedoch nicht zwingend erforderlich.",
        "tooltip-ca-talk": "Diskussion zum Seiteninhalt",
        "anonymous": "{{PLURAL:$1|Unangemeldeter Benutzer|Unangemeldete Benutzer}} auf {{SITENAME}}",
        "siteuser": "{{SITENAME}}-{{GENDER:$2|Benutzer|Benutzerin}} $1",
        "anonuser": "Anonymer {{SITENAME}}-Benutzer $1",
-       "lastmodifiedatby": "Diese Seite wurde zuletzt am $1 um $2 Uhr von $3 geändert.",
+       "lastmodifiedatby": "Diese Seite wurde zuletzt am $1 um $2 Uhr von $3 bearbeitet.",
        "othercontribs": "Basierend auf der Arbeit von $1.",
        "others": "anderen",
        "siteusers": "{{SITENAME}}-{{PLURAL:$2|{{GENDER:$1|Benutzer|Benutzerin}}|Benutzer}} $1",
        "newimages-legend": "Filter",
        "newimages-label": "Dateiname (oder ein Teil davon):",
        "newimages-user": "IP-Adresse oder Benutzername",
+       "newimages-newbies": "Nur Beiträge neuer Benutzerkonten anzeigen",
        "newimages-showbots": "Von Bots hochgeladene Dateien anzeigen",
        "newimages-hidepatrolled": "Kontrollierte Dateien ausblenden",
+       "newimages-mediatype": "Medientyp:",
        "noimages": "Keine Dateien gefunden.",
        "gallery-slideshow-toggle": "Vorschaubilder umschalten",
        "ilsubmit": "Suchen",
        "table_pager_first": "Erste Seite",
        "table_pager_last": "Letzte Seite",
        "table_pager_limit": "Zeige $1 Einträge pro Seite",
-       "table_pager_limit_label": "Positionen pro Seite:",
+       "table_pager_limit_label": "Einträge pro Seite:",
        "table_pager_limit_submit": "Los",
        "table_pager_empty": "Keine Ergebnisse",
        "autosumm-blank": "Die Seite wurde geleert.",
        "tags-create-reason": "Grund:",
        "tags-create-submit": "Erstellen",
        "tags-create-no-name": "Du musst einen Markierungsnamen angeben.",
-       "tags-create-invalid-chars": "Markierungsnamen dürfen keine Kommas (<code>,</code>) oder Schrägstriche (<code>/</code>) enthalten.",
+       "tags-create-invalid-chars": "Markierungsnamen dürfen keine Kommata (<code>,</code>), senkrechte Striche (<code>|</code>) oder Schrägstriche (<code>/</code>) enthalten.",
        "tags-create-invalid-title-chars": "Markierungsnamen dürfen keine Zeichen enthalten, die nicht in Seitennamen verwendet werden können.",
        "tags-create-already-exists": "Die Markierung „$1“ ist bereits vorhanden.",
        "tags-create-warnings-above": "Die {{PLURAL:$2|folgende Warnung ist|folgenden Warnungen sind}} beim Versuch, die Markierung „$1“ zu erstellen, aufgetreten:",
        "mw-widgets-titleinput-description-redirect": "Weiterleitung nach $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Eine Kategorie hinzufügen …",
        "mw-widgets-usersmultiselect-placeholder": "Weitere hinzufügen …",
+       "date-range-from": "Von Datum:",
+       "date-range-to": "Bis Datum:",
        "sessionmanager-tie": "Mehrere Anfrageauthentifikationstypen konnten nicht kombiniert werden: $1.",
        "sessionprovider-generic": "$1-Sitzungen",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "cookiebasierten Sitzungen",
        "pageid": "Seitenkennung $1",
        "rawhtml-notallowed": "&lt;html&gt;-Tags können nicht außerhalb von normalen Seiten verwendet werden.",
        "gotointerwiki": "{{SITENAME}} verlassen",
-       "gotointerwiki-invalid": "Der angegebene Titel war ungültig.",
-       "gotointerwiki-external": "Du bist dabei, {{SITENAME}} zu verlassen, um [[$2]] zu besuchen, was eine externe Website ist.\n\n[$1 Hier klicken, um auf $1 fortzufahren].",
+       "gotointerwiki-invalid": "Der angegebene Titel ist ungültig.",
+       "gotointerwiki-external": "Du bist dabei, {{SITENAME}} zu verlassen, um [[$2]] zu besuchen, was eine externe Website ist.\n\n'''[$1 Auf $1 fortfahren]'''",
        "undelete-cantedit": "Du kannst diese Seite nicht wiederherstellen, da du nicht berechtigt bist, diese Seite zu bearbeiten.",
-       "undelete-cantcreate": "Du kannst diese Seite nicht wiederherstellen, da es keine vorhandene Seite mit diesem Namen gibt und du nicht berechtigt bist, diese Seite zu erstellen."
+       "undelete-cantcreate": "Du kannst diese Seite nicht wiederherstellen, da es keine vorhandene Seite mit diesem Namen gibt und du nicht berechtigt bist, diese Seite zu erstellen.",
+       "pagedata-title": "Seitendaten",
+       "pagedata-text": "Diese Seite stellt eine Datenschnittstelle für Seiten zur Verfügung. Bitte gib mithilfe der Unterseitensyntax den Seitentitel in der URL an.\n* Übertragungen von Inhalten werden basierend auf dem Accept-Header deines Clients ausgeführt. Das bedeutet, dass die Seitendaten in dem Format zur Verfügung gestellt werden, das von deinem Client bevorzugt wird.",
+       "pagedata-not-acceptable": "Kein passendes Format gefunden. Unterstützte MIME-Typen: $1",
+       "pagedata-bad-title": "Ungültiger Titel: $1."
 }
diff --git a/languages/i18n/din.json b/languages/i18n/din.json
new file mode 100644 (file)
index 0000000..e88d6a9
--- /dev/null
@@ -0,0 +1,515 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Amire80",
+                       "Dinkawiki",
+                       "Kumkumuk",
+                       "Mawanmuortat"
+               ]
+       },
+       "sunday": "Nïnëdhorou",
+       "monday": "Nïnëtök",
+       "tuesday": "Nïnërou",
+       "wednesday": "Nïnëdiäk",
+       "thursday": "Nïnëŋuan",
+       "friday": "Nïnëdhiëc",
+       "saturday": "Nïnëdhetem",
+       "sun": "Ndhr",
+       "mon": "Ntö",
+       "tue": "Nro",
+       "wed": "Ndi",
+       "thu": "Nŋu",
+       "fri": "Ndhi",
+       "sat": "Ndhe",
+       "january": "Pɛnëtök",
+       "february": "Pɛnërou",
+       "march": "Pɛnëdiäk",
+       "april": "Pɛnëŋuan",
+       "may_long": "Pɛnëdhiëc",
+       "june": "Pɛnëdhetem",
+       "july": "Pɛnëdhorou",
+       "august": "Pɛnëbɛ̈t",
+       "september": "Pɛnëdhoŋuan",
+       "october": "Pɛnëthiäär",
+       "november": "Pɛnëthiäärkutök",
+       "december": "Pɛnëthiäärkurou",
+       "january-gen": "Pɛnëtök",
+       "february-gen": "Pɛnërou",
+       "march-gen": "Pɛnëdiäk",
+       "april-gen": "Pɛnëŋuan",
+       "may-gen": "Pɛnëdhiëc",
+       "june-gen": "Pɛnëdhetem",
+       "july-gen": "Pɛnëdhorou",
+       "august-gen": "Pɛnëbɛ̈t",
+       "september-gen": "Pɛnëdhoŋuan",
+       "october-gen": "Pɛnëthiäär",
+       "november-gen": "Pɛnëthiäärkutök",
+       "december-gen": "Pɛnëthiäärkurou",
+       "jan": "Ptö",
+       "feb": "Pro",
+       "mar": "Pdi",
+       "apr": "Pŋu",
+       "may": "Pdhi",
+       "jun": "Pdhe",
+       "jul": "Pdhr",
+       "aug": "Pbɛ̈",
+       "sep": "Pdhŋ",
+       "oct": "Pthi",
+       "nov": "Ptht",
+       "dec": "Pthr",
+       "pagecategories": "{{PLURAL:$1|atëkthok|atëkthuɔk}}",
+       "category_header": "Apääm në atëkthok \"$1\"ic",
+       "subcategories": "Tëktëëkor",
+       "category-media-header": "Kuat në alëk $1 yic",
+       "hidden-categories": "{{PLURAL:$1|Atëkthok cï thiaan|Atëkthuɔk cï thiaan}}",
+       "category-subcat-count": "{{PLURAL:$2|Akuutkäŋë anɔŋ akutkäŋ-thiikɛ̈ kepɛ̈c.|Akuutkäŋë anɔŋ \n{{PLURAL:$1|akuutkäŋë|$1 akuutkäŋkɛ̈}}, në $2 yic̈;}}",
+       "category-article-count": "{{PLURAL:$2|Bekätakthookë anɔŋic yärë yetök.|{{PLURAL:$1|Yärë atɔ̈|$1 yɔ̈rkɛ̈ aatɔ̈}} bekätakthook thiöökë yic, në $2 yic.}}",
+       "category-file-count": "{{PLURAL:$2|Bekätakthook kän anɔŋic wëtmät kän etök.|{{PLURAL:|Wëtmät de $1 thiöökë atɔ̈ |wëlmäät ke $1 thiookkɛ̈ aa tɔ̈}} në bekätakthook känic, në $2 yiic ëbɛ̈n.}}",
+       "listingcontinuesabbrev": "ɣäthtueŋ",
+       "about": "Biäk",
+       "newwindow": "(aliɛp adhɛɛr yam thïn)",
+       "cancel": "Tɛmkɔ̈u",
+       "mypage": "Apam",
+       "mytalk": "Jam",
+       "anontalk": "Jam",
+       "navigation": "Äden",
+       "and": "&#32;ku",
+       "qbedit": "Cokic",
+       "namespaces": "Rinɣɔnläu",
+       "variants": "Aalelthook",
+       "navigation-heading": "Dentënëɔ̈ɔ̈tu",
+       "returnto": "Dhuk lɔ $1.",
+       "tagline": "Jɔk {{SITENAME}}",
+       "help": "Kuɔny",
+       "search": "Yiɔ̈ɔ̈p",
+       "searchbutton": "Yiɔ̈ɔ̈p",
+       "go": "Lɔ",
+       "searcharticle": "Lɔ",
+       "history": "Käthɛɛr ë apäm",
+       "history_short": "Käthɛɛr",
+       "history_small": "käthɛɛr",
+       "printableversion": "Alelgäär",
+       "permalink": "Anuɛ̈t ciedɔ̈kic",
+       "view": "Ɣoi",
+       "view-foreign": "Ɣoi në $1ic",
+       "edit": "Cokic",
+       "create": "Cak",
+       "create-local": "Matë tɛ̈ɛ̈tëyic ë  ɣänthiök thïn",
+       "editthispage": "Cok apamë-yic",
+       "newpage": "Apam yam",
+       "talkpagelinktext": "jam",
+       "personaltools": "Kakëluɔi ke ŋɛk",
+       "talk": "Abëjaamic",
+       "views": "Cïtiŋna",
+       "toolbox": "Käkluɔi",
+       "otherlanguages": "Në thook kɔ̈kiic",
+       "redirectedfrom": "(Cï bɛn wel në $1ic)",
+       "redirectto": "Bɛnwel lɔ:",
+       "lastmodifiedat": "Apam kënë acï apuɔc dac waaric në pɛinïn $1, në $2.",
+       "jumpto": "Kɛɛcthïn:",
+       "jumptonavigation": "äden",
+       "jumptosearch": "yiɔ̈ɔ̈p",
+       "aboutsite": "Wɛ̈t ë {{SITENAME}}",
+       "aboutpage": "Project:Biäk",
+       "copyrightpage": "{{ns:project}}:Yicaagɛ̈ɛ̈t",
+       "currentevents": "Kä cë röt piac looi",
+       "currentevents-url": "Project:Kä cë röt piac looi",
+       "disclaimers": "Acëkakuɔ",
+       "disclaimerpage": "Project:Acëkëda ëbɛ̈n",
+       "edithelp": "Kuɔny bë comic",
+       "helppage-top-gethelp": "Kony",
+       "mainpage": "Apam këdït",
+       "mainpage-description": "Apam këdït",
+       "portal": "Tëlɔthïn wut",
+       "portal-url": "Project:Tëlɔthïn wut",
+       "privacy": "Löŋ këcïthiaan",
+       "privacypage": "Project:Löŋ këcïthiaan",
+       "retrievedfrom": "Cïdhuk në \"$1\"",
+       "editsection": "cokic",
+       "editold": "cokic",
+       "editlink": "cokic",
+       "viewsourcelink": "Ɣoi tënëyök",
+       "editsectionhint": "Cokic akut: $1",
+       "toc": "Kätɔ̈",
+       "showtoc": "nyooth",
+       "hidetoc": "thaan",
+       "site-atom-feed": "$1 Atɛ̈unyinmot thïn",
+       "page-atom-feed": "\"$1\" Atɛ̈unyinmot thïn",
+       "red-link-title": "$1 (apam cïï tɔ̈)",
+       "nstab-main": "Apam",
+       "nstab-user": "Apam dului",
+       "nstab-special": "Apam lel",
+       "nstab-project": "Apam kälooi",
+       "nstab-image": "Apamduööt",
+       "nstab-template": "Macuëc",
+       "nstab-category": "Atëkthok",
+       "mainpage-nstab": "Apam këdït",
+       "badtitle": "Rin awäc",
+       "badtitletext": "Këjiɛmë ca thiëëcë acïï lɔcök, tëdɛ̈ ka cïn kë tɔ̈u thïn, tëdɛ̈ ka këjiɛmë de thuɔkmɛ̈t wälä de wikimɛ̈t aa këcëkɛ nyiɛc nuet apath. Tëkdɛ̈ kä nɔŋic cït cïï lëu bïke luööi në käjiɛmëkeyiic.",
+       "viewsource": "Ɣoi tënëyök",
+       "yourname": "Rinduloi:",
+       "userlogin-yourname": "Rinduloi",
+       "userlogin-yourname-ph": "Tɔ̈ɔ̈u rinduloiku",
+       "yourpassword": "Wɛ̈tëŋääny:",
+       "userlogin-yourpassword": "Wɛ̈tëŋääny",
+       "userlogin-yourpassword-ph": "Tɔ̈ɔ̈u wëtëŋaany",
+       "createacct-yourpassword-ph": "Tɔ̈ɔ̈u wëtëŋaany",
+       "createacct-yourpasswordagain": "Yiclajiik wɛ̈tëŋaany",
+       "createacct-yourpasswordagain-ph": "Bɛn tɔ̈ɔ̈u wɛ̈tëŋaany",
+       "userlogin-remembermypassword": "Cɔk ya rɛ̈ɛ̈r keya cï liɛp ɣöt",
+       "login": "Ŋaanythïn",
+       "logout": "Ŋaanyaɣeer",
+       "userlogout": "Ŋaanyaɣeer",
+       "userlogin-noaccount": "Cïï nɔŋ cinakuën?",
+       "userlogin-joinproject": "Röm {{SITENAME}}",
+       "createaccount": "Cak cinakuën",
+       "userlogin-resetpassword-link": "Määrnhom wɛ̈tëŋaanyku?",
+       "userlogin-helplink2": "Kuɔny bë ŋaanythïn",
+       "createacct-emailrequired": "Thoŋëmanywëëth",
+       "createacct-emailoptional": "Thoŋëmanywëëth (cïïdhilëwïc)",
+       "createacct-email-ph": "Gɔ̈t tëcieng de thoŋëmanywëëthdu",
+       "createacct-submit": "Cak cinakuënku",
+       "createacct-benefit-heading": "{{SITENAME}} acï looi në kɔc cïmëndu.",
+       "createacct-benefit-body1": "{{PLURAL:$1|käcïcokic|këcïcokic}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|apäm|apääm}}",
+       "createacct-benefit-body3": "{{PLURAL:$1|dujuër|dujuëër}} kathiöökwɛ̈r",
+       "loginlanguagelabel": "Thok: $1",
+       "pt-login": "Ŋaanythïn",
+       "pt-login-button": "Ŋaanythïn",
+       "pt-createaccount": "Cak cinakuën",
+       "pt-userlogout": "Ŋaanyaɣeer",
+       "botpasswords-label-create": "Cak",
+       "botpasswords-label-cancel": "Tɛmkɔ̈u",
+       "resetpass-submit-cancel": "Tɛmkɔ̈u",
+       "passwordreset": "Bentɔ̈ɔ̈u wɛ̈tëŋaany",
+       "passwordreset-username": "Rinduloi:",
+       "passwordreset-email": "Thoŋëmanywëëth:",
+       "bold_sample": "Gɔ̈t dïtnyin",
+       "bold_tip": "Gɔ̈t dïtnyin",
+       "italic_sample": "Rïugäät",
+       "italic_tip": "Gɔ̈t cïrïu",
+       "link_sample": "Nuɛ̈të rinënyooth",
+       "link_tip": "Nuɛ̈t akenythïn",
+       "extlink_sample": "http://www.example.com ruk rin",
+       "extlink_tip": "Nuɛ̈t akenybaai (tauë http:// adöttueeŋ)",
+       "headline_sample": "Gäättueŋ",
+       "headline_tip": "Kuëën ë rou tueŋ",
+       "nowiki_sample": "Tɔ̈ɔ̈uë këcïgɔ̈t cinajuɛɛr thïn",
+       "nowiki_tip": "Dhölë yic ajuɛɛr ë wiki",
+       "image_tip": "Apamduööt cïtɔ̈ɔ̈uthïn",
+       "media_tip": "Nuɛ̈t ë makec",
+       "sig_tip": "Thanygɔ̈tdu kekë gutatiitik",
+       "hr_tip": "Ajït temrɔt (looië tëgöörye)",
+       "summary": "Cuutyic:",
+       "minoredit": "Kën ee acökic thiin",
+       "watchthis": "Ɣoi apamë",
+       "savearticle": "Tɔ̈ɔ̈u apam",
+       "showpreview": "Nyooth këkoŋtiŋ",
+       "showdiff": "Nyoothë käcëwaar",
+       "anoneditwarning": "<strong>Nyïïn:</strong> Yin akɛ̈cë ŋaanythïn.  IP de tëcieŋdu abë tïc tënë jäŋ ëbɛ̈n të gɛ̈t yïn ke waar käŋ. Të <strong>[$1 bɛk yïn ɣöt]</strong> tëdɛ̈ <strong>[$2 të ciɛk yïn cinakuɛ̈n]</strong>, ka kä gɔ̈tke ku kä waarke (ku kä kɔ̈k nɔŋ kony ayɛ) aabï ke gät rinëduluuiku.",
+       "loginreqlink": "Ŋaanythïn",
+       "newarticletext": "Yïn acë anuët lɔ apam liu buɔɔthcök.\nTë wïc yin ba apam kënë cak, ka jɔk ba gɔ̈t në akeer  tɔ̈ piinyic (tïŋ [$1 apamëkuɔny] të wic yin ba wëlëŋïc yök).\nTë tɔ̈ yïn ëtɛ̈n ke kɛ̈ce ŋuun, kayï tuany gakyeethany de <strong>ciëën</strong> në akuenarekwëldu-yic.",
+       "noarticletext": "Amɛn, acïn gɔ̈t tɔ̈ ee apam thiöökë-yic.\nYïn alëu ba [[Special:Search/{{PAGENAME}}|wɛ̈tnhom thiööke göör]] në apam kɔ̈kiic,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} göör cökthɛɛr nɔŋkaariic],\nnadëk [{{fullurl:{{FULLPAGENAME}}|action=edit}} cak apamë]</span>.",
+       "noarticletext-nopermission": "Amɛn, acïn gär ee apam kënë yic.  Yïn alëu ba  [[Special:Search/{{PAGENAME}}|këjiɛɛmë de apam thööke göör]]  këjiɛɛmë de apam thööke göör në apɛmkɔ̈k yiic, tëdɛ̈ ka <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}] yïn alëu ba athörtɔ̈ɔ̈uke nɔŋ kar ke apam thiöökë gööric ayɛ. Lakin, yïn acï  nɔŋ yic ba apam yam cak.",
+       "editing": "Ee cokic $1",
+       "creating": "Ee cak $1",
+       "editingsection": "Ee cok $1 (akut)ic",
+       "templatesused": "{{PLURAL:$1|Macuëc|Mïcuëc}} ee luööi në apam känic",
+       "template-protected": "(cïtiit)",
+       "template-semiprotected": "(gëlamääth)",
+       "hiddencategories": "Apamkën ee rem ë {{PLURAL:$1|1 bekätakthook cï thiaan |$1 bekäŋtakthook cï  thiaan}}:",
+       "permissionserrorstext-withaction": "Yïn acïï nɔŋ nhomlääu ba $2, \n{{PLURAL:$1|wɛ̈t de kän|wët de käk}}:",
+       "moveddeleted-notice": "Apam acï cuɔthwei. Athörtɔ̈ɔ̈u de cothëwei ku nyiɛɛi në apamë aa cïke gam piiny ëtɛ̈n tɔŋ raan wïc bë ke kueen",
+       "content-model-javascript": "JavaScript",
+       "viewpagelogs": "Ɣoi athörtɔ̈ɔ̈u në apamkën",
+       "currentrev-asof": "Dhuɔ̈kic yambëtɛɛm ee bɔ̈bei pɛinïn $1",
+       "revisionasof": "Dhokic tɛ̈cït $1",
+       "revision-info": "Dhuɔ̈kic agut $1 në {{GENDER:$6|$2}}$7",
+       "previousrevision": "← Bïebei thɛɛr",
+       "nextrevision": "Dhuɔ̈k yam tënë kɔ̈k →",
+       "currentrevisionlink": "Dhuɔ̈kic yambëtɛɛm",
+       "cur": "ŋär",
+       "last": "käciën",
+       "rev-delundel": "wak daai",
+       "rev-showdeleted": "nyooth",
+       "pagehist": "Käthɛɛr ë apäm",
+       "history-title": "Dhuɔ̈kic käthɛɛr de \"$1\"",
+       "difference-title": "Käwääc kɛmke dhuɔ̈ɔ̈k ke \"$1\"",
+       "lineno": "Giɛɛt $1:",
+       "editundo": "berëpiny",
+       "diff-multi-sameuser": "({{PLURAL:$1|dhukic ciɛl|$1 dhukiic ciɛl}} në duluui tök̈̈, acie nyuɔɔth)",
+       "searchresults": "Yiɔ̈ɔ̈p käcïyiök",
+       "searchresults-title": "Yiööp \"$1\" në käcïyökic",
+       "prevn": "këcëwan {{PLURAL:$1|$1}}",
+       "nextn": "këböth {{PLURAL:$1|$1}}",
+       "nextn-title": "{{PLURAL:$1|käcïyök|këcïyök}} bɔ̈ $1",
+       "shown-title": "Show $1 {{PLURAL:$1|këcïtuöl|kacïtuöl}} gun yär",
+       "viewprevnext": "Ɣoi ($1 {{int:pipe-separator}} $2) ($3)",
+       "searchmenu-new": "<strong>Cak apam \"[[:$1]]\" në yee wiki känic!</strong> {{PLURAL:$2|0=|Tïŋ apam ee yök kekë göördu ayɛ|Tïŋ käcïyök në göördu ayɛ}}",
+       "searchprofile-articles": "Abɛ̈ɛ̈k kätɔ̈",
+       "searchprofile-images": "Ciɛ̈liicjuëc",
+       "searchprofile-everything": "Ëbɛ̈n",
+       "searchprofile-advanced": "Cï lɔ tueŋ",
+       "searchprofile-articles-tooltip": "Yiɔ̈ɔ̈p $1ic",
+       "searchprofile-images-tooltip": "Apamduööt yiɔ̈ɔ̈p",
+       "searchprofile-everything-tooltip": "Gör kathïn abɛ̈n (agut yɔ̈r jam)",
+       "searchprofile-advanced-tooltip": "Yiɔ̈ɔ̈p në rinlääu këŋiɛcic",
+       "search-result-size": "$1 ({{PLURAL:$2|1 wët|$2 wël}})",
+       "search-redirect": "(bɛnwel $1)",
+       "search-section": "(akut $1)",
+       "search-suggest": "Ee $1 yen ca ŋuun?",
+       "searchall": "ëbɛ̈n",
+       "search-showingresults": "{{PLURAL:$4|Käcïyök <riɛl>$1</riɛl> de <riɛl>$3</riɛl>|Këcïyök <riɛl>$1 - $2</riɛl> de <riɛl>$3</riɛl>}}",
+       "search-nonefound": "Acin këcïbenbei ë thɔ̈ŋ ke thiëc",
+       "preferences": "Känyaar",
+       "mypreferences": "Känyaar",
+       "prefs-watchlist": "Abërtït",
+       "searchresultshead": "Yiɔ̈ɔ̈p",
+       "prefs-searchoptions": "Yiɔ̈ɔ̈p",
+       "prefs-namespaces": "Rinɣɔnläu",
+       "right-writeapi": "Luuië API ë gɔ̈t",
+       "newuserlogpage": "Athörtɔ̈ɔ̈u cäk ë duloi",
+       "enhancedrc-history": "käthɛɛr",
+       "recentchanges": "Kärötdäcwäär",
+       "recentchanges-legend": "Tek cë röt piac waar",
+       "recentchanges-summary": "Buɔɔthë wäär kathiöökwɛ̈rbëtɛɛm në wiki në apaamkën.",
+       "recentchanges-label-newpage": "Cokicë acë apam yam cak",
+       "recentchanges-label-minor": "Kën ee acökic thiin",
+       "recentchanges-label-bot": "Acökic kënë acï looi në bot",
+       "recentchanges-label-unpatrolled": "Cökic kënë akëcë kɔc ruu ë cath",
+       "recentchanges-label-plusminus": "Themdït ë yär acë rat war në kolook ka lɛ̈",
+       "recentchanges-legend-heading": "<riɛl>Atekkït:</riɛl>",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (tïŋ ayɛ [[Special:NewPages|marec de yɔ̈r yam]])",
+       "recentchanges-submit": "Nyooth",
+       "rclistfrom": "Nyoothë weer yam jɔɔk $2, $3",
+       "rcshowhideminor": "$1 käcïcökic thiin",
+       "rcshowhideminor-show": "Nyooth",
+       "rcshowhideminor-hide": "Thaan",
+       "rcshowhidebots": "$1 boot",
+       "rcshowhidebots-show": "Nyooth",
+       "rcshowhidebots-hide": "Thaan",
+       "rcshowhideliu": "$1 dulooi cïgɔ̈t",
+       "rcshowhideliu-show": "Nyooth",
+       "rcshowhideliu-hide": "Thaan",
+       "rcshowhideanons": "$1 duluɔɔi cierin",
+       "rcshowhideanons-show": "Nyooth",
+       "rcshowhideanons-hide": "Thaan",
+       "rcshowhidepatr-show": "Nyooth",
+       "rcshowhidepatr-hide": "Thaan",
+       "rcshowhidemine": "$1 acökicdië",
+       "rcshowhidemine-show": "Nyooth",
+       "rcshowhidemine-hide": "Thaan",
+       "rcshowhidecategorization-show": "Nyooth",
+       "rcshowhidecategorization-hide": "Thaan",
+       "rclinks": "Nyoothë weer $1 thök në nïn $2 thök",
+       "diff": "këdä",
+       "hist": "käth",
+       "hide": "Thaan",
+       "show": "Nyooth",
+       "minoreditletter": "th",
+       "newpageletter": "Y",
+       "boteditletter": "b",
+       "rc-change-size-new": "$1 {{PLURAL:$1|kɛ̈c|kɛ̈ɛ̈c}} ciën ë wɛ̈r",
+       "recentchangeslinked": "Wɛ̈r nɔŋkar",
+       "recentchangeslinked-toolbox": "Kaceyiicwar nɔŋ kar",
+       "recentchangeslinked-title": "Weer thöŋ kekë \"$1\"",
+       "recentchangeslinked-summary": "Kän areny de wɛ̈r cïloi wɛ̈ramɛn tënɔŋ apam nuɛtke apam nhic (nadëk ka nuɛtke kɔcakuut de bekätakthook nhic).\nApam tɔ̈ [[Special:Watchlist|abërtïtdu]] aa <strong>gɔ̈tdïtnyin</strong>.",
+       "recentchangeslinked-page": "Rin ë akap",
+       "recentchangeslinked-to": "Nyuɔɔthë kä cï ke waar në apɛ̈m cï nuɛ̈ɛ̈t ke apam tiöökë, ku acie kä cï ke waar në yen apam thiöökë yic",
+       "upload": "Wälë apamduööt",
+       "filedesc": "Cuutyic",
+       "fileuploadsummary": "Cuutyic:",
+       "upload-dialog-title": "Wälë apamduööt",
+       "upload-dialog-button-cancel": "Tɛmkɔ̈u",
+       "upload-form-label-infoform-description": "Lëkcäät",
+       "upload-form-label-infoform-date": "Aköl",
+       "license-header": "Gɛmluɔ̈ɔ̈i",
+       "imgfile": "apamduööt",
+       "listfiles_date": "Aköl",
+       "listfiles_user": "Dului",
+       "listfiles_description": "Lëkcäät",
+       "file-anchor-link": "Apamduööt",
+       "filehist": "Käthɛɛr ë makec",
+       "filehist-help": "Tuenyë në aköl/akɔ̈licic apamduööt ɣoi kecit rɔt nyuɔɔth në akölic.",
+       "filehist-current": "ee mënë",
+       "filehist-datetime": "Aköl/Akɔ̈lic",
+       "filehist-thumb": "riöpbundït",
+       "filehist-thumbtext": "Alelthook ë riöpcök, tɛ̈cït $1",
+       "filehist-user": "Dului",
+       "filehist-dimensions": "Thëmthëm",
+       "filehist-comment": "Këcïjaamic",
+       "imagelinks": "Luɔi ë apamduööt",
+       "linkstoimage": "{{PLURAL:$1|Apam thöökë anuɛ̈tke|$1 apamkɛ̈ aanuɛ̈tke}} apamduöötë:",
+       "nolinkstoimage": "Cin apaam ye nuët lɔ wëtmätkën.",
+       "sharedupload-desc-here": "Ɣɔ̈c apamduööt kënë ee rat jɔɔk ë $1 ku alëu bï luöi ë loiloilɔtueŋ kɔ̈kyiic.\nLëkcäät ë [$2 yär ë lëkcäät apamduööt de] denë atɔ̈ piiny ëtɛ̈n.",
+       "upload-disallowed-here": "Yïn acïï lëu bä apamduööt kënë gɔ̈t arët.",
+       "randompage": "Apam räŋräŋ",
+       "randomincategory-submit": "Lɔ",
+       "pageswithprop-submit": "Lɔ",
+       "brokenredirects-edit": "cokic",
+       "withoutinterwiki-submit": "Nyooth",
+       "nbytes": "$1 {{PLURAL:$1|kɛ̈c|kɛ̈ɛ̈c}}",
+       "nmembers": "$1 {{PLURAL:$1|raanalɔŋthïn|kɔcalɔŋthïn}}",
+       "prefixindex-submit": "Nyooth",
+       "protectedpages-page": "Apam",
+       "newpages": "Abɛ̈ɛ̈k yam",
+       "newpages-submit": "Nyooth",
+       "newpages-username": "Rinduloi:",
+       "move": "Laar",
+       "pager-older-n": "{{PLURAL:$1|thɛɛr 1|thɛɛr $1}}",
+       "booksources": "Ɣɔnnëyök athör",
+       "booksources-search-legend": "Yiööp ɣɔnnëyök athör",
+       "booksources-search": "Yiɔ̈ɔ̈p",
+       "log": "Athörtɔ̈ɔ̈u",
+       "logeventslist-submit": "Nyooth",
+       "allarticles": "Abɛ̈ɛ̈k ëbɛ̈n",
+       "allpagessubmit": "Lɔ",
+       "categories": "Atëkthuɔk",
+       "categories-submit": "Nyooth",
+       "sp-deletedcontributions-contribs": "amöc",
+       "linksearch-ns": "Rinɣɔnläu",
+       "linksearch-ok": "Yiɔ̈ɔ̈p",
+       "listusers-submit": "Nyooth",
+       "watchlist": "Abërtït",
+       "mywatchlist": "Abërtït",
+       "watch": "Ɣoi",
+       "watchlist-hide": "Thaan",
+       "watchlist-submit": "Nyooth",
+       "historyaction-submit": "Nyooth",
+       "dellogpage": "Athörtɔ̈ɔ̈u cöthwei",
+       "rollbacklink": "dhuɔ̈kciɛ̈ɛ̈n",
+       "rollbacklinkcount": "dhuɔ̈kcïɛ̈n $1 {{PLURAL:$1|käcïcokic|këcïcokic}}",
+       "protectlogpage": "Athörtɔ̈ɔ̈u tïït",
+       "restriction-edit": "Cokic",
+       "restriction-move": "Laar",
+       "undeleteviewlink": "ɣoi",
+       "undelete-search-submit": "Yiɔ̈ɔ̈p",
+       "namespace": "Rinɣɔnläu",
+       "invert": "Yalic kuɛ̈nykuɛ̈ny",
+       "tooltip-invert": "Kuany rök thiöökë ba wɛ̈r tööu, wɛ̈r cïke luööi apam tɔ̈ rindɔ̈r cïï locë yic (ku rindɔ̈rkɔ̈k nɔŋ kar ke ye, të cïneke kuay ayɛ)",
+       "namespace_association": "Rinlääu tɔ̈ɔ̈ŋic",
+       "tooltip-namespace_association": "Gɔtë ye akeerë-yic bä tääu pɔ̈rderin ë këjiɛɛmë tëdɛ̈t kedejɔ̈k aya cï mat kenë pɔ̈rderin cï lɔc",
+       "blanknamespace": "(Këdït)",
+       "contributions": "{{GENDER:$1|Dulooi}} amöc",
+       "mycontris": "Amöc",
+       "anoncontribs": "Amöc",
+       "month": "Jäl ee penë (ku lɔ ciën):",
+       "year": "Jäl ee ruɔ̈ɔ̈n (ku lɔ ciën):",
+       "sp-contributions-talk": "jam",
+       "sp-contributions-submit": "Yiɔ̈ɔ̈p",
+       "whatlinkshere": "Këkerɛkthïn",
+       "whatlinkshere-title": "apääm aanyuët tënë \"$1\"",
+       "whatlinkshere-page": "Apam:",
+       "linkshere": "Apɛ̈m bɔ̈ anuët në <riɛl>[[:$1]]</riɛl>:",
+       "isredirect": "bɛnwel apam",
+       "istemplate": "tɛ̈wë anuët në athööric ku bë athöördɛ̈ nyooth",
+       "isimage": "Nuɛ̈t ë apamduööt",
+       "whatlinkshere-prev": "{{PLURAL:$1|ketueŋ|ketueŋ $1}}",
+       "whatlinkshere-next": "{{PLURAL:$1|la|la $1}}",
+       "whatlinkshere-links": "← anyuët",
+       "whatlinkshere-hideredirs": "$1 benwel",
+       "whatlinkshere-hidetrans": "$1 tɛ̈wë anuët në athööric ku bë athöördɛ̈ nyooth",
+       "whatlinkshere-hidelinks": "$1 anyuët",
+       "whatlinkshere-filters": "Thiic",
+       "whatlinkshere-submit": "Lɔ",
+       "autoblocklist-submit": "Yiɔ̈ɔ̈p",
+       "ipblocklist-submit": "Yiɔ̈ɔ̈p",
+       "blocklink": "gël",
+       "contribslink": "aamioc",
+       "movelogpage": "Laar athörtɔ̈ɔ̈u",
+       "export": "Kɛ̈ŋbɛ̈ɛ̈i abɛ̈ɛ̈k",
+       "allmessages-filter-submit": "Lɔ",
+       "thumbnail-more": "Wëric",
+       "tooltip-pt-userpage": "{{GENDER:|Apamdu}} de dulooi",
+       "tooltip-pt-mytalk": "Jam apam {{GENDER:|du}}",
+       "tooltip-pt-preferences": "Kaŋuɛ̈ɛ̈n {{GENDER:|ku}}",
+       "tooltip-pt-watchlist": "Arec de athör ee ke tiit lɔn bïneke waar",
+       "tooltip-pt-mycontris": "Abëër ë {{GENDER:|ajuëërku}}",
+       "tooltip-pt-login": "Yïn aye dɛtpuöu ba rat gätpiny balɔɣöt; ku yen ace këthɛnyëkoɔthïn",
+       "tooltip-pt-logout": "Ŋaanyaɣeer",
+       "tooltip-pt-createaccount": "Yïn adetkupuöu ba akuɛ̈n cak ku ba gɛ̈tëpiny de lɔɣöt loi; ku töŋtɔ̈thïn acïn thɛnyëthïn tɔ̈u thïn",
+       "tooltip-ca-talk": "Abëjaamic wɛ̈t ë apamkëtɔ̈thïn",
+       "tooltip-ca-edit": "Cok apamë-yic",
+       "tooltip-ca-addsection": "Cak akut yam",
+       "tooltip-ca-viewsource": "Apäm kënë acï gël.\nKu alëu bä tënëyök tïŋcök",
+       "tooltip-ca-history": "Dhuɔ̈kic cïlooi apamë-yic",
+       "tooltip-ca-move": "Laar apamë",
+       "tooltip-ca-watch": "Mät apamë në abërtïtku-yic",
+       "tooltip-search": "Yiɔ̈ɔ̈p {{SITENAME}}",
+       "tooltip-search-go": "Lɔ apam man nɔŋ rinë kot, na tɔ̈",
+       "tooltip-search-fulltext": "Yiööp cïgɔtë në abɛ̈kic",
+       "tooltip-p-logo": "Lɔneem apam këdït",
+       "tooltip-n-mainpage": "Lɔneem apam këdït",
+       "tooltip-n-mainpage-description": "Lɔneem apam këdït",
+       "tooltip-n-portal": "Wɛ̈t ë këlooi, kë lëu bä luɔi, bä kɛ̈ŋ yök tëno",
+       "tooltip-n-currentevents": "Lɔ deet wël ë kä cë röt piac looi cök",
+       "tooltip-n-recentchanges": "Aber rötdäcwäär wikiyic",
+       "tooltip-n-randompage": "Dhɛ̈th apam räŋräŋ",
+       "tooltip-n-help": "Tëlɔdeet",
+       "tooltip-t-whatlinkshere": "Abër ë apäämwiki aa rɛkthïn ëbɛ̈n",
+       "tooltip-t-recentchangeslinked": "Kë cë röt piac waar apääm cï nuɛt kekë apäm kënë yiic",
+       "tooltip-feed-atom": "Bïï de Atom tënë apam känic",
+       "tooltip-t-contributions": "Abëër ë ajuëër në  {{GENDER:$1dulooikën}}",
+       "tooltip-t-upload": "Wälë apamduööt",
+       "tooltip-t-specialpages": "Wat apɛ̈m lel ëbɛ̈n",
+       "tooltip-t-print": "Alelgäär ë apäm kënë",
+       "tooltip-t-permalink": "Anuɛ̈t ciedɔ̈kic kë cï dhuɔ̈kic apämë-yic",
+       "tooltip-ca-nstab-main": "Ɣoi apam kätɔ̈",
+       "tooltip-ca-nstab-user": "Ɣoi apam duloi",
+       "tooltip-ca-nstab-special": "Kënë ee apam lel ku cïï lëu bë cokic",
+       "tooltip-ca-nstab-project": "Ɣoi apam kätɔ̈",
+       "tooltip-ca-nstab-image": "Ɣoië apäm ë makec",
+       "tooltip-ca-nstab-template": "Tïŋ macuëc",
+       "tooltip-ca-nstab-category": "Ɣoië apäm atëkthok",
+       "tooltip-save": "Tɔ̈ɔ̈uë weerdu",
+       "tooltip-preview": "Tiɛ̈ŋë tueŋ weerdu. Yïn looië yen këcë guor tɔ̈ɔ̈u.",
+       "tooltip-diff": "Nyoothë weer ɣo cä looi këcïgɔ̈tic",
+       "tooltip-rollback": "\"Duɔlëciën\" ee gɛ̈t ë raankuny puɔc thök dhuöktëdɛn në apamë të cïnye tuaany na tök",
+       "tooltip-undo": "\"Cuɔthëwei\", ee këpuɔc gɔ̈t nyaai, ku liep apam gɔ̈t yïn thïn thok në kuer cï lëu bï käŋ waar thïn. Kän ee kɔc puöl bïk wɛ̈tciekic gätpiny, bïk lueel ee wɛ̈tŋu coth kek wël wei",
+       "tooltip-summary": "Lɔthïn wëlcekic cony",
+       "simpleantispam-label": "Thiöökëtïŋ wëlpuɔliic. <riɛl>Duk</riɛl> kän thiɛ̈ŋ thïn!",
+       "pageinfo-toolboxlink": "Lëkapam",
+       "previousdiff": "← Cokic thɛɛr",
+       "nextdiff": "Cökic yam →",
+       "file-info-size": "$1 × $2 kolook, thëndït de aduötyɔ̈r: $3, MIME kuat: $4",
+       "file-nohires": "Acïn kuerdɛ̈ tɔ̈thïn wär kän lëu bë atïïp tïc.",
+       "svg-long-desc": "Apamduööt SVG, yee kolookë ke aayee $1 x $2, dït de apamduööt: $3",
+       "show-big-image": "Makec tueŋ",
+       "show-big-image-preview": "Thöŋ ë këkoŋtiŋë: $1",
+       "show-big-image-other": "{{PLURAL:$2|Tïckëtïŋ dɛ̈t|Tïckatïŋ kɔ̈k}}: $1.",
+       "show-big-image-size": "$1 × $2 kolook",
+       "ilsubmit": "Yiɔ̈ɔ̈p",
+       "metadata": "Leekmeta",
+       "metadata-help": "Yär thiöögë anɔŋic lëk juëc kɔ̈k, tɛkdɛ̈ eke mɛtëke thïn në ajötatïïp ë yit ka ye atɔuatïïp ye luööi bëye cak ka bëye yiɛt.\nTë cïnë yär war tëden thɛric, ka kajuëëckɔ̈k tɔ̈thïn tɛkdɛ̈ aacë bë tïc në yär ciiwar yic.",
+       "metadata-fields": "Tuɔc ke lëëkmeta ë këcïkäär cï ke rɛcpiny ee thong kënë yic aa bï ke mat yär ë nyuuth ë kacïkäär yic.\nTë ler kör ë lëëkmeta ŋɛɛrpiny.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "exif-orientation": "Cök",
+       "exif-xresolution": "Wëtcïmat piny",
+       "exif-yresolution": "Wëtcïmat nhial",
+       "exif-datetime": "Akölnïn ku akölic ë wär ë wëtmät",
+       "exif-make": "Duluɔi adɔmtïïp",
+       "exif-model": "Këcëkäär adɔmtïïp",
+       "exif-software": "Yöökkɔ̈c cïlooi",
+       "exif-artist": "Agɔ̈t",
+       "exif-exifversion": "Bïïbei Exif",
+       "exif-colorspace": "Tëlääu kiit",
+       "exif-datetimeoriginal": "Akölnïn ku akölic ë cäk ë akutëyith",
+       "exif-datetimedigitized": "Akölnïn ku akölic ë cɔkakuënnhialkupiny",
+       "exif-iimcategory": "Atëkthok",
+       "exif-disclaimer": "Acëkakuɔ",
+       "exif-orientation-1": "Epath",
+       "namespacesall": "ëbɛ̈n",
+       "monthsall": "ëbɛ̈n",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|jam]])",
+       "version-ext-colheader-description": "Lëkcäät",
+       "version-libraries-description": "Lëkcäät",
+       "specialpages": "Apɛ̈m lel",
+       "tag-filter": "[[Special:Tags|Dhïïm]] wɛ̈ttɛ̈kkɔcde:",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Dhïïm|Dhïm}}]]: $2)",
+       "tags-edit": "cokic",
+       "logentry-delete-delete": "$1 {{GENDER:$2|cuɔthwei}} apam $3",
+       "logentry-move-move": "$1 {{GENDER:$2|cï riɛt}} apam $3 lɔ $4",
+       "logentry-newusers-create": "Cinakuën ë dukui $1 acï {{GENDER:$2|cak}}",
+       "logentry-upload-upload": "$1 {{GENDER:$2|cï jatnhial}} $3",
+       "feedback-cancel": "Tɛmkɔ̈u",
+       "searchsuggest-search": "Yiɔ̈ɔ̈p {{SITENAME}}"
+}
index 67abbc2..9994f62 100644 (file)
@@ -98,7 +98,7 @@
        "fri": "Yen",
        "sat": "Şem",
        "january": "Çele",
-       "february": "Sıbat",
+       "february": "Gucige",
        "march": "Adar",
        "april": "Nisane",
        "may_long": "Gulan",
        "badtitletext": "Sernameyê pela ke şıma waşt, nêvêrd, vengo ya zi zıwano miyanêno ğelet gırêdaye ya zi sernameyê wiki.\nBeno ke, tede yew ya zi zêdê işareti estê ke sernameyan de nêxebetiyenê.",
        "title-invalid-empty": "Waziyaye sernamey perrer  venonyana teyna canamey nami sero esto.",
        "title-invalid-utf8": "Sernamey perre ke şıma wazenê, yew rêza UTF-8iya ke nêvêrene xo sero kırışeno.",
+       "title-invalid-talk-namespace": "Ena perra ke waziyena yew perrê werênayışa ke nêşena bıbo aye ra bestiyena.",
+       "title-invalid-characters": "Ena perra karakterê ke nêvêrenê inan gêna xo miyan.",
        "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": "Rocanebiyayışê na pele nıka cadayiyê.\nDayiyi tiya nıka newe nêbenê.",
        "showdiff": "Vurnayışan bımotne",
        "anoneditwarning": "<strong>İqaz:</strong> Şıma be hesabê xo nêkewtê cı. \nAdresê şımayê IP tarixê vırnayışê na pele de do qeyd bo. Eke şıma <strong>[$1 cıkewê]</strong> ya zi <strong>[$2 hesab vırazê]</strong>, vurnayışê şıma be zewbina kare ra nameyê şıma rê bar beno.",
        "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.\nEke şıma \"{{int:savearticle}}\" reyna bıtıknê, vırnayışê şıma bê xulasa qeyd beno.",
+       "missingsummary": "'''DİQET:''' Şıma jû xulasa nênuşte.\nEke şıma \"$1\" 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.\nEke şıma reyna \"{{int:savearticle}}\" bıtıknê, vırnayışê şıa bê mewzu/sernuşte do qeyd bo.",
+       "missingcommentheader": "'''Diqet:''' Şıma seba nê fıkrvaci yew mewzu/sernuşte nênuşt.\nEke şıma reyna \"$1\" bıtıknê, vırnayışê şıa bê mewzu/sernuşte do qeyd bo.",
        "summary-preview": "Verasayışê xulasa:",
        "subject-preview": "Verqaytê mewzu:",
        "previewerrortext": "Verasayışê vırnayışê şıma de yew xeta veciya miyan.",
        "editingsection": "Per da $1 de şımaye kenê ke leti bıvurnê",
        "editingcomment": "$1 vuryeno (qısmo newe)",
        "editconflict": "Têverabiyayışê vurnayışi: $1",
-       "explainconflict": "Wexta ke şıma pel vurneyene yewna ten zi pel vurna.\nNuşteyo corin; halê pelo nıkayin mocneno.\nVurnayişê şıma cêr de mocya ( musya).\nVurnayişanê peyinan şıma gani qayd bıkeri.\nWexta ke şıma butonê \"{{int:savearticle}}\" tıkna '''teyna''' nuşteyo corin qayd beno.",
+       "explainconflict": "Wexta ke şıma pel vurneyene yewna ten zi pel vurna.\nNuşteyo corin; halê pelo nıkayin mocneno.\nVurnayişê şıma cêr de mocya ( musya).\nVurnayişanê peyinan şıma gani qayd bıkeri.\nWexta ke şıma butonê \"$1\" tıkna '''teyna''' nuşteyo corin qayd beno.",
        "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.'''",
        "recentchangeslinked-feed": "Vırnayışê bestiyaey",
        "recentchangeslinked-toolbox": "Vırnayışê bestiyaey",
        "recentchangeslinked-title": "Heqa \"$1\" de vurnayışi",
-       "recentchangeslinked-summary": "Lista cêrêne, pela bêlikerdiye rê (ya zi karberanê kategoriya bêlikerdiye rê) pelanê gırêdayoğan de lista de vurnayışê peyênana.\n[[Special:Watchlist|Lista şımaya seyrkedışi de]] peli be nuşteyo '''qolınd''' bêli kerdê.",
+       "recentchangeslinked-summary": "Ena liste, perra spesifike rê (ya zi karberanê kategoriya spesifike rê) perranê gırêdayoğan de lista de vırnayışê peyênana.\n[[Special:Watchlist|Lista şımaya seyrkedışi de]] perri be nuşteyo '''qolınd''' bêli kerdê.",
        "recentchangeslinked-page": "Namey perrer:",
        "recentchangeslinked-to": "Heruna perra kı yena dayene, vurnayışanê perranê ke daye ra gırêdayiyê inan bımotne",
        "recentchanges-page-added-to-category": "[[:$1]] kerd kategoriye miyan",
        "revdelete-uname-unhid": "nameyê karberi nênımıteyo",
        "revdelete-restricted": "vergırewtışê ke xızmekaran rê biye",
        "revdelete-unrestricted": "vergırewtışê ke xızmekaran rê dariyê we",
-       "logentry-move-move": "{| style=\"border:1px solid skyblue; margin-bottom: 1em\" cellspacing=\"0\" cellpadding=\"2\" width=\"60%\"\n\t\n| style=\"font: 100% verdana; color:black\" align=\"center\" bgcolor=\"greenyellow\" | $1,  pera $3'i {{GENDER:$2|kırışt}} $4\n|}",
+       "logentry-move-move": "$1 perra $3 {{GENDER:$2|kırışt}} $4",
        "logentry-move-move-noredirect": "$1, pera $3'i bêhetenayış {{GENDER:$2|kırışt}} pera $4`i",
-       "logentry-move-move_redir": "Hetenayışi sera karber $1 pera $3'i  {{GENDER:$2|kırışt}} pera $4",
-       "logentry-move-move_redir-noredirect": "Hetenayışi sera pela $3 ra $1 {{GENDER:$2|berd}} pela $4",
+       "logentry-move-move_redir": "$1 {{GENDER:$2|kırışna}} riperr $3 be $4 weçarnayış sera.",
+       "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|berd}} riperrê $3 be $4 weçarnayış sera, weçarnayış nêverda.",
        "logentry-patrol-patrol": "$1 versiyono $4 ke {{GENDER:$2|nişan biyo}} pela $3 ra qontrol kerd",
        "logentry-patrol-patrol-auto": "Çımraviyarnayışê $4 pela $3 ke $1 otomatikman {{GENDER:$2|nişan biyo}} qontrol kerd",
        "logentry-newusers-newusers": "Hesabê karberê $1 {{GENDER:$2|vıraziya}}",
index 00c1e20..2209b3a 100644 (file)
        "externaldberror": "Abo jo wustupiła eksterna zmólka awtentifikacije datoweje banki, abo njesmějoš swójo eksterne wužywarske konto aktualizěrowaś.",
        "login": "Pśizjawiś se",
        "nav-login-createaccount": "Pśizjawiś se/Konto załožyś",
-       "userlogin": "Pśizjawiś se/Konto załožyś",
-       "userloginnocreate": "Pśizjawiś",
        "logout": "wótzjawiś se",
        "userlogout": "wótzjawiś se",
        "notloggedin": "Njepśizjawjony(a)",
        "userlogin-noaccount": "Njamaš wužywarske konto?",
        "userlogin-joinproject": "Konto za {{GRAMMAR:akuzatiw|{{SITENAME}}}} załožyś",
-       "nologin": "Njamaš wužywarske konto? $1.",
-       "nologinlink": "Nowe wužywarske konto załožyś",
        "createaccount": "Wužywarske konto załožyś",
-       "gotaccount": "Maš južo wužywarske konto? '''$1'''.",
-       "gotaccountlink": "Pśizjawiś se",
-       "userlogin-resetlink": "Sy pśizjawjeńske daty zabył?",
        "userlogin-resetpassword-link": "Sy swójo gronidło zabył?",
        "userlogin-helplink2": "Pomoc pśi pśizjawjenju",
        "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ł.",
        "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-submit": "Twójo konto załožyś",
        "anonpreviewwarning": "''Njejsy pśizjawjony. Składowanje pśenosujo twóju IP-adresu do wobźěłowańskeje historije toś togo boka.''",
        "missingsummary": "'''Pokazka:''' Njejsy žedno zespominanje zapódał. Gaž kliknjoš na \"Składowaś\" składujo se bok bźez zespominanja.",
        "missingcommenttext": "Pšosym zespominanje zapódaś.",
-       "missingcommentheader": "'''Glědaj:''' Njejsy temu/ nadpismo za toś ten komentar pódał. Gaž kliknjoš na \"{{int:savearticle}}\" znowego, składujo se twójo wobźěłanje mimo temy/nadpisma.",
+       "missingcommentheader": "'''Glědaj:''' Njejsy temu/ nadpismo za toś ten komentar pódał. Gaž kliknjoš na \"$1\" znowego, składujo se twójo wobźěłanje mimo temy/nadpisma.",
        "summary-preview": "Pśeglěd zespominanja:",
        "subject-preview": "Pśeglěd nadpisma:",
        "blockedtitle": "Wužywaŕ jo se blokěrował",
        "editingsection": "Wobźěłanje boka $1 (wótrězk)",
        "editingcomment": "$1 (nowy wótrězk) se wobźěłujo",
        "editconflict": "Wobźěłański konflikt: $1",
-       "explainconflict": "Něchten drugi jo bok změnił, pó tym, až sy zachopił jen wobźěłaś.\nGórjejcne tekstowe pólo wopśimjejo tekst boka, ako tuchylu eksistěrujo.\nTwóje změny pokazuju se w dołojcnem tekstowem pólu.\nPšosym zapódaj twóje změny do górjejcnego tekstowego póla.\n'''Jano''' wopśimjeśe górjejcnego tekstowego póla se składujo, gaž tłocyš na \"{{int:savearticle}}\".",
+       "explainconflict": "Něchten drugi jo bok změnił, pó tym, až sy zachopił jen wobźěłaś.\nGórjejcne tekstowe pólo wopśimjejo tekst boka, ako tuchylu eksistěrujo.\nTwóje změny pokazuju se w dołojcnem tekstowem pólu.\nPšosym zapódaj twóje změny do górjejcnego tekstowego póla.\n'''Jano''' wopśimjeśe górjejcnego tekstowego póla se składujo, gaž tłocyš na \"$1\".",
        "yourtext": "Twój tekst",
        "storedversion": "Składowana wersija",
        "nonunicodebrowser": "'''Glědaj:''' Twój browser njamóžo unicodowe znamuška pšawje pśeźěłaś. Pšosym wužywaj hynakšy browser.",
        "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ś",
        "rcshowhidemine": "móje pśinoski $1",
        "rcshowhidemine-show": "Pokazaś",
        "rcshowhidemine-hide": "Schowaś",
-       "rclinks": "Slědne $1 změny slědnych $2 dnjow pokazaś<br />$3",
+       "rclinks": "Slědne $1 změny slědnych $2 dnjow pokazaś",
        "diff": "rozdźěl",
        "hist": "wersije",
        "hide": "schowaś",
        "undeleteviewlink": "woglědaś se",
        "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 njejo se raźiło:\n$1",
        "undeletedpage": "Bok '''$1''' jo se nawrośił.\n\nW [[Special:Log/delete|log-lisćinje wulašowanjow]] namakajoš pśeglěd wulašowanych a nawrośonych bokow.",
        "undelete-header": "Gano wulašowane boki wiźiš w [[Special:Log/delete|log-lisćinje wulašowanjow]].",
        "logentry-rights-rights-legacy": "$1 jo kupkowe cłonkojstwo za $3 {{GENDER:$2|změnił|změniła}}",
        "logentry-rights-autopromote": "$1 jo se awtomatiski wót $4 do $5 {{GENDER:$2|pśirědował|pśirědowała}}",
        "rightsnone": "(nic)",
-       "revdelete-summary": "Zespominanje wobźěłanja",
        "feedback-adding": "Komentar pśidawa se bokoju...",
        "feedback-bugcheck": "Wjelicnje! Pśekontrolěruj jano, lěc to njejo jadna z [$1 znatych zmólkow].",
        "feedback-bugnew": "Som pśekontrolěrował. Nowu zmólku k wěsći daś",
index 68ce13c..bb6e9db 100644 (file)
        "externaldberror": "Haro nokosilap pongintutunan bingdata toi awu ko pasagaon monginwagu takaun poinsoliwannu.",
        "login": "Sumuang log",
        "nav-login-createaccount": "Sumuang log / pomonsoi  do takaun",
-       "userlogin": "Sumuang log / pomonsoi  do takaun",
-       "userloginnocreate": "Sumuang log",
        "logout": "Lumabus log",
        "userlogout": "Lumabus log",
        "notloggedin": "Amu nokolog sumuang",
        "userlogin-noaccount": "Ingaa poh takaun?",
        "userlogin-joinproject": "Tanud {{SITENAME}}",
-       "nologin": "Ingaa akaun? $1",
-       "nologinlink": "Pomonsoi do akaun",
        "createaccount": "Pomonsoi do takaun",
-       "gotaccount": "Kitakaun? $1",
-       "gotaccountlink": "Sumuang log",
-       "userlogin-resetlink": "Nolihuan ahal loginnu?",
        "userlogin-resetpassword-link": "Nolihuan borospanalibnu?",
        "userlogin-helplink2": "Sokodung do sumuang log",
        "createaccountmail": "Gunoo nunu nopo kaatalib om pootodo id surat-i ii poinsurat id siriba diti",
-       "createaccountreason": "Sabab:",
        "badretype": "Kaatalib pinosuang awu kopisangai.",
        "userexists": "Ngaranmoguno pinosuang noguno no.\nMaai alanai do suai ngaran.",
        "loginerror": "Nokosilap sumuang log",
        "passwordreset-disabled": "Pomudolian kawagu do kaatalib kitaantob id wiki diti.",
        "passwordreset-username": "Ngarandait:",
        "passwordreset-domain": "Sumanganu:",
-       "passwordreset-capture": "Intaai surat-i dii nowonsoi?",
-       "passwordreset-capture-help": "Nung goritannu id kutak diti, surat-i (ii ki-kaa-talib daamot) mangan pokitanai montok dia om nogi porikoton montok momomoguno diti.",
        "passwordreset-email": "Porikatan surat-i:",
        "passwordreset-emailtitle": "Kointalangan takaun id {{SITENAME}}",
        "passwordreset-emailelement": "Ngaranmoguno: \n$1\n\nKaatalib daamot: \n$2",
        "showdiff": "Pokitono nokowolion",
        "anoneditwarning": "'''Woning:''' Awu ko poinlog sumuang.\nNantadon IPnu maan podolino id susuyan bolikon nidit do hiti.",
        "anonpreviewwarning": "''Awu ko poinsuang log. Popogompi do sinuratan koponurat do kinoyonon IPnu id bobolikon susuyan niditan.''",
-       "missingsummary": "'''Panansarahan:''' Awu nu nosuratan hilo id koinibaan niditan.\nNung todosonnu \"{{int:savearticle}}\" kawagu, kogompi niditannu nga ingaa koinibaan.",
+       "missingsummary": "'''Panansarahan:''' Awu nu nosuratan hilo id koinibaan niditan.\nNung todosonnu \"$1\" kawagu, kogompi niditannu nga ingaa koinibaan.",
        "missingcommenttext": "Mangai gia posuango pason id siriba.",
-       "missingcommentheader": "'''Panansarahan:''' Awu nu nokosuang ahal/tuluhon montok pason diti.\nNung todosonnu \"{{int:savearticle}}\" kawagu, kogompi niditannu nga ingaa aha//tuluhon.",
+       "missingcommentheader": "'''Panansarahan:''' Awu nu nokosuang ahal/tuluhon montok pason diti.\nNung todosonnu \"$1\" kawagu, kogompi niditannu nga ingaa aha//tuluhon.",
        "summary-preview": "Pongitanan koinibaan:",
        "subject-preview": "Pongitanan ahal/tuluhon:",
        "blockedtitle": "Nantaban momoguno",
        "rcshowhideanons": "$1 momomoguno awu popointutun",
        "rcshowhidepatr": "$1 niditan nosimak",
        "rcshowhidemine": "$1 niditanku",
-       "rclinks": "Popokito soginumu $1 kaalanai id suang $2 tadau<br />$3",
+       "rclinks": "Popokito soginumu $1 kaalanai id suang $2 tadau",
        "diff": "pisuai",
        "hist": "susui",
        "hide": "Popolisok",
        "external_image_whitelist": " #Pologoson baris diti<pre>\n#Suangai do boros koubasanan (guas boros id pialatan //) ponongsiriba\n#Noputan di kaagal pojodion do toput poinsuang (toput koubasanan) do tangagambar\n#Toput di kaagal no silihon do gambar, nung awu nga okito o noputan sinuratan\n#Baris di kisimbol do # nopo nga ointutunan sobaagi do bolotok\n#Tumanud do pisuaian A om a\n\n#Posurato toinsanan id sawat do garis diti. Pologoson iti garis miagal diti</pre>",
        "tag-filter": "[[Special:Tags|Pananda]] gagan:",
        "revdelete-restricted": "pinokogos pogoduhan montok momuruan",
-       "revdelete-unrestricted": "pinoidu pogoduhan montok momuruan",
-       "revdelete-summary": "idito koinibaan"
+       "revdelete-unrestricted": "pinoidu pogoduhan montok momuruan"
 }
index cb9065f..be955da 100644 (file)
@@ -53,9 +53,9 @@
        "tog-norollbackdiff": "पैलास्थितिमी फर्काएपछा भिन्नता हटाउन्या",
        "tog-useeditwarning": "सम्पादनहरू सङ्ग्रह नगरिएका अवस्थामी अर्को पानामी जान खोज्या चेतावनी धेखाउन्या",
        "tog-prefershttps": "प्रवेश गरन्ज्या जबलै सुरक्षित जडानको प्रयोग गर्न्या",
-       "underline-always": "सधà¥\88à¤\82",
+       "underline-always": "à¤\9cबलà¥\88",
        "underline-never": "कभैई नाई",
-       "underline-default": "à¤\96à¥\8bल à¤\85थवा à¤¬à¥\8dराà¤\89à¤\9cर à¤ªà¥\88लà¥\80à¤\95ाà¤\9cसà¥\8b",
+       "underline-default": "à¤\96à¥\8bल à¤\94र à¤¬à¥\8dराà¤\89à¤\9cर à¤¨à¤¿à¤°à¥\8dधारित",
        "editfont-style": "फन्ट प्रकार क्षेत्र सम्पादन गर:",
        "editfont-default": "ब्राउजर पूर्वस्थिति",
        "editfont-monospace": "मोनोस्पेस्ड फन्ट",
@@ -64,7 +64,7 @@
        "sunday": "आइतबार",
        "monday": "सौउबार",
        "tuesday": "माङलबार",
-       "wednesday": "बà¥\81धबार",
+       "wednesday": "बà¥\8bबार",
        "thursday": "बीपैबार",
        "friday": "शुकबार",
        "saturday": "छन्चरबार",
        "redirectedfrom": "($1 बठेइ पुन:निर्देशित)",
        "redirectpagesub": "अनुप्रेषित पानो",
        "redirectto": "पठाएको पाना:",
-       "lastmodifiedat": "यà¥\88 à¤ªà¤¨à¥\8dनालाà¤\88 à¤\9bाडà¥\8dडà¥\80बाऱ $2 à¤¬à¤\9cà¥\87, $1 à¤®à¥\80 à¤¹à¥\87रफà¥\87र गरियाऽ थ्यो।",
+       "lastmodifiedat": "यà¥\88 à¤ªà¤¨à¥\8dनालाà¤\88 à¤\9bाडà¥\8dडà¥\80बार $1मà¥\80 $2 à¤¬à¤\9cà¥\87 à¤¸à¤®à¥\8dपादन गरियाऽ थ्यो।",
        "viewcount": "यो पाना हेरियाको थियो {{PLURAL:$1|एकपटक|$1 पटक}}",
        "protectedpage": "सुरक्षित गर्याका पानाहरू",
        "jumpto": "यैमी फट्टाक:",
        "noname": "तमीले सही प्रयोगकर्ता नाम दिएनौ।",
        "loginsuccesstitle": "प्रवेश सफल",
        "loginsuccess": "'''तमले {{SITENAME}}मी  \"$1\" को रुपमी प्रवेश गरया छौ।'''",
+       "nosuchuser": "\"$1\" नाउँ भयाः कोइलै प्रयोगकर्ता नाइथिन।\nप्रयोगकर्ता नाउँ वर्णसंवेदनशील हुनान।\nतमरो हिज्जे जाँचः, या [[Special:CreateAccount|नौलो खाता बनाः]]।",
+       "nosuchusershort": " \"$1\" नाउँ भयाः कोइलै प्रयोगकर्ता नाइथिन।\n तमरो हिज्जे जाँचः।",
        "nouserspecified": "प्रयोगकर्ता नाम दिनु अनिवार्य छ।",
        "login-userblocked": "ये प्रयोगकर्तालाई रोक लगाया छ। प्रवेश गददु अनुमति छैन।",
        "wrongpassword": "पासवर्ड गलत हालियो।\nकृपया आजी प्रयास गरया।",
        "wrongpasswordempty": "हालिएया पासवर्ड खालि थ्यो।\nकृपया आजी प्रयास गरया।",
+       "passwordtooshort": "पासवर्ड कम्तिमालै {{PLURAL:$1|१ अक्षर|$1 अक्षरन}}को हुनुपडन्छ।",
+       "passwordtoolong": "पासवर्ड {{PLURAL:$1|१ अक्षर|$1 अक्षरन}} है लामो हुननाइसक्दो।",
        "password-name-match": "तमरो प्रवेशशव्द प्रयोगकर्ता नाम है फरक हुनपडन्छ ।",
        "password-login-forbidden": "ये प्रयोगकर्ता नाम र प्रवेश शब्द वर्जित गरिया छ।",
        "mailmypassword": "पासवर्ड पूर्वनिर्धारित गर",
        "preview": "पूर्वावलोकन",
        "showpreview": "पूर्वालोकन धेकाउन्या",
        "showdiff": "परिवर्तन धेकाउन्या",
-       "blankarticle": "<strong>à¤\9aà¥\87तावनà¥\80:</strong> à¤¤à¤® à¤\8fà¤\95 à¤\96ालि à¤ªà¤¾à¤¨à¤¾à¤\95à¥\8b à¤¨à¤¿à¤°à¥\8dमाण à¤\97दà¥\8dद à¤²à¤¾à¤\97à¥\8dयाà¤\9bà¥\8c à¥¤\nयदि à¤¤à¤®à¤²à¥\87 \"{{int:savearticle}}\" à¤²à¤¾à¤\88 à¤ªà¥\81नà¤\83 à¤¥à¤¿à¤\9aà¥\8dयà¥\8c à¤­à¤£à¥\8dया à¤ªà¤¾à¤¨à¥\8b à¤¬à¤¿à¤¨à¤¾ à¤\95à¥\81नà¥\88 à¤¸à¤¾à¤®à¤\97à¥\8dरà¥\80 à¤¨à¥\88 à¤¨à¤¿à¤°à¥\8dमित à¤\97रिनà¥\8dयाà¤\9b ।",
+       "blankarticle": "<strong>à¤\9aà¥\87तावनà¥\80:</strong> à¤¤à¤® à¤\8fà¤\95 à¤\96ालि à¤ªà¤¨à¥\8dâ\80\8dना à¤¬à¤¨à¤¾à¤\89नà¥\8dâ\80\8dनाà¤\9bà¥\8c।\nयदि à¤¤à¤®à¤²à¥\87 \"$1\" à¤²à¤¾à¤\88 à¤\86à¤\81à¤\9cि à¤¥à¤¿à¤\9aà¥\8dयà¥\8c à¤­à¤£à¥\8dया à¤¬à¤¿à¤¨ à¤\95à¥\87à¤\87 à¤¸à¤¾à¤®à¤\97à¥\8dरà¥\80 à¤ªà¤¾à¤¨à¥\8b à¤¬à¤¨à¤¾à¤\8fलà¥\8b।",
        "anoneditwarning": "<strong>चेतावनी:</strong> तमले प्रवेश अरेको नाइथिन । तमरो आइपि ठेगाना पाना सम्पादन इतिहासमि दर्ता गरिन्या छ र यो सब्बैले हेद्द सक्कान । यदि तमलाईँ <strong>[$1 लगईन]</strong> वा <strong>[$2 नयाँ खाता बनाउन्या] गर्याभण्या तमबठे गरियाको सम्पादन तमरो प्रयोगकर्तानाममि जोडिन्याछ ।",
-       "missingsummary": "'''यादगर्या :''' तमीले सम्पादन सारांश दियाका छैनौ ।\nयदि तमीले \"{{int:savearticle}}\"  थिच्यौ भण्या , सारांश बिना नै सङ्ग्रहित गरिन्या छ ।",
-       "selfredirect": "<strong>चेतावनी:</strong> तम यै पानालाई आफुमी पुनः निर्देशित गद्द लाग्याछौ ।\nहुनसक्छ तम अनुप्रेषितको लागि गलत लक्ष्य निर्दिष्ट गद्द लाग्याछौ, वा गलत पानाको सम्पादन गद्द लाग्याछौ ।\nतम पुनः एकपल्ट \"{{int:savearticle}}\" क्लिक गद्दाछौ, पुनः निर्देशित तसै लै बनाइन्याछ।",
+       "missingsummary": "'''यादगर्या :''' तमीले सम्पादन सारांश दियाका छैनौ ।\nयदि तमीले \"$1\"  थिच्यौ भण्या , सारांश बिना नै सङ्ग्रहित गरिन्या छ ।",
+       "selfredirect": "<strong>चेतावनी:</strong> तम यै पानालाई आफुमी पुनः निर्देशित गद्द लाग्याछौ ।\nहुनसक्छ तम अनुप्रेषितको लागि गलत लक्ष्य निर्दिष्ट गद्द लाग्याछौ, वा गलत पानाको सम्पादन गद्द लाग्याछौ ।\nतम पुनः एकपल्ट \"$1\" क्लिक गद्दाछौ, पुनः निर्देशित तसै लै बनाइन्याछ।",
        "missingcommenttext": "कृपया तलतिर टिप्पणी राख ।",
-       "missingcommentheader": "'''याद गर :''' तमले टिप्पणीमी विषय /शीर्ष पंक्ति  दियाका छैनौ ।\nतमले फेरि \"{{int:savearticle}}\"  थिच्यौ भण्या , तमरो सम्पादन यसै रुपमी संग्रहित हुन्याछ ।",
-       "summary-preview": "साराà¤\82श पूर्वालोकन:",
-       "subject-preview": "विषय पूर्वरुप:",
+       "missingcommentheader": "'''याद गर :''' तमले टिप्पणीमी विषय /शीर्ष पंक्ति  दियाका छैनौ ।\nतमले फेरि \"$1\"  थिच्यौ भण्या , तमरो सम्पादन यसै रुपमी संग्रहित हुन्याछ ।",
+       "summary-preview": "समà¥\8dपादन à¤¸à¤¾à¤°à¤¾à¤\82शà¥\8bà¤\83 पूर्वालोकन:",
+       "subject-preview": "विषयोः पूर्वरुप:",
        "previewerrortext": "तमरो परिवर्तनको पूर्वावलोकन बनाउन खोज्दा समस्या आयाको छ ।",
        "blockedtitle": "प्रयोककर्तालाई रोक लगाइया छ",
        "blockedtext": "'''तमरो प्रयोगकर्ता नाम या IP ठेगानालाई रोक लगाइएको छ ।'''\n\nरोक लगाउने  $1.\nरोक लगाउनाको कारण ''$2''.\n\n* रोक सुरू हुने : $8\n* रोक सकिने: $6\n* रोकबाट लक्षित: $7\n\nतमले  $1 वा और कोइ  [[{{MediaWiki:Grouppage-sysop}}|प्रवन्धक]] सँग रोकको बारेमी छलफल गर्न सम्पर्क गद्द सकुन्छौ ।\nतमले  'प्रयोगकर्तालाई इ-मेल गर्ने ' सुविधा मान्य इमेल ठेगाना [[Special:Preferences|रोजाइहरू]] मी नखुलाए सम्म प्रयोगगर्न पाउनुहुन्या छैन र यैको प्रयोग गर्नबठे रोक लगाइया छैन ।\nतमरो IP ठेगाना $3 को, र रोक्का संख्या #$5.\nकृपया तमरा प्रश्नमी सबै जानकारी खुलाया ।",
        "page_first": "पैल्लो",
        "page_last": "छाड्डीबारको",
        "histlegend": "अन्तर चयन:संशोधनहरूको तुलनाको लागि रेडियो बाकसमी क्लिक गरिबर इण्टर गर अथवा तल दियाको बटनमी थिच <br />\nलिजेंड: (चालू): '''({{int:cur}})''' = अवतरणको बीचमी अन्तर, '''({{int:last}})''' = पैल्लीका अवतरणको बीचमी अन्तर, '''{{int:minoreditletter}}''' = नानो परिवर्तन।",
-       "history-fieldset-title": "à¤\87तिहासà¤\95à¥\8b à¤µà¤¿à¤\9aरण à¤\97रà¥\8dनà¥\87",
-       "history-show-deleted": "मà¥\87à¤\9fिà¤\8fà¤\95ा à¤®à¤¾à¤¤à¥\8dर",
+       "history-fieldset-title": "सà¤\82शà¥\8bधनà¤\85न à¤\96िलाà¤\87 à¤\96à¥\8bà¤\9cऽ",
+       "history-show-deleted": "सà¤\82शà¥\8bधन à¤®à¥\87à¤\9fियाà¤\95à¥\8b à¤®à¤¾à¤¤à¥\8dतरà¥\88",
        "histfirst": "सबहै पुरानो",
        "histlast": "नयाँ",
        "historysize": "({{PLURAL:$1|१ अक्षर|$1 अक्षरहरू}})",
        "search-category": "(श्रेणी $1)",
        "search-file-match": "(भेटिईया फाइल सामाग्री)",
        "search-suggest": "काहीं तमले खोज्याको : $1 त होइन ?",
-       "search-interwiki-caption": "बà¥\88ना à¤\86यà¥\8bà¤\9cना",
+       "search-interwiki-caption": "भà¥\8dरातà¥\83परियà¥\8bà¤\9cनाà¤\85न à¤¬à¤ à¥\87 à¤¨à¤¤à¤¿à¤\9cाà¤\85न",
        "search-interwiki-default": "$1बठेका नतिजाहरू:",
        "search-interwiki-more": "(आजी)",
        "search-relatedarticle": "सम्बन्धित",
        "prefs-tokenwatchlist": "टोकन",
        "prefs-diffs": "फरक",
        "prefs-help-prefershttps": "यो रोजाई तमरो अर्को  लग इन बठे लागु हुन्याछ ।",
-       "userrights": "प्रयोगकर्ता अधिकार व्यवस्थापन",
+       "userrights": "प्रयोगकर्ता अधिकारन",
        "userrights-lookup-user": "यक प्रयोगकर्ता छानऽ",
        "userrights-user-editname": "प्रयोगकर्ता नाम दिय:",
        "editusergroup": "प्रयोगकर्ता समूहअन लोड अरऽ",
-       "userrights-editusergroup": "प्रयोगकर्ता समूह सम्पादन गर",
+       "userrights-editusergroup": "{{GENDER:$1|प्रयोगकर्ता}} समूहअन सम्पादन गरऽ",
        "saveusergroups": "सुरक्षित {{GENDER:$1|प्रयोगकर्ता}} समूहहरू",
        "userrights-groupsmember": "को सदस्य:",
        "userrights-groupsmember-auto": "अंतर्निहित सदस्य:",
        "recentchanges-label-plusminus": "यति बाइटहरू संख्याले पानाको आकार फेरबदल  भयाको छ",
        "recentchanges-legend-heading": "<strong>आदर्श वाक्य:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|नौला पानाको सूची]] यैलाई लै हेरिदिय)",
+       "rcfilters-quickfilters-placeholder": "दोबरा प्रयोग अद्दाइ तमरा पसन्दीदा औजार मिलानअन सञ्‍चय अरऽ।",
+       "rcfilters-savedqueries-rename": "पुनर्नामकरण",
+       "rcfilters-savedqueries-remove": "हटाऽ",
+       "rcfilters-savedqueries-new-name-label": "नाउँ",
+       "rcfilters-savedqueries-cancel-label": "रद्द",
+       "rcfilters-filter-editsbyself-label": "तम हताँ अरियाऽ फेरबदेलाअन",
+       "rcfilters-filter-editsbyself-description": "तमरा आफ्फुनाइ योगदानन",
+       "rcfilters-filter-editsbyother-label": "अउर हताँ अरियाऽ फेरबदेलाअन",
+       "rcfilters-filter-editsbyother-description": "तमरा आफ्फुनाइ बाहेक अउर सप्पै फेरबदेलाअन।",
+       "rcfilters-filtergroup-lastRevision": "छाड्डीबारोः संशोधन",
+       "rcfilters-filter-lastrevision-label": "छाड्डीबारोः संशोधन",
        "rclistfrom": "$3 $2 देखिका नयाँ परिवर्तनहरू देखाउन्या",
        "rcshowhideminor": "$1 सानतिनो सम्पादन",
        "rcshowhideminor-show": "धेकाइदिय",
        "rcshowhidemine-hide": "लुकाऽ",
        "rcshowhidecategorization-show": "धेकाउन्या",
        "rcshowhidecategorization-hide": "लुकाउन्या",
-       "rclinks": "पà¤\9bिलà¥\8dला $1 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\82 à¤ªà¤\9bाडिà¤\95ा $2 à¤¦à¤¿à¤¨à¤¹à¤°à¥\82मà¥\80<br />$3",
+       "rclinks": "à¤\97याà¤\83 $2 à¤¦à¤¿à¤¨à¤¨à¤®à¥\80 à¤­à¤¯à¤¾à¤\83 à¤\9bाडà¥\8dडà¥\80à¤\9aालाà¤\83 $1 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनन à¤§à¥\87à¤\95ाà¤\83",
        "diff": "फरक",
        "hist": "इतिहास",
        "hide": "लुकाइदिय",
        "upload-form-label-usage-title": "रिती",
        "upload-form-label-usage-filename": "फाइल नाउ",
        "uploadstash-nofiles": "तमरा कोइ पनि स्टाश गर्याका फाइलहरू नाइथिन् ।",
-       "uploadstash-badtoken": "तà¥\8dयà¥\8b à¤\95ारà¥\8dय à¤\85सफलभयà¥\8b , à¤¸à¤¾à¤¯à¤¦ à¤¤à¤®à¤°à¥\8b à¤¸à¤®à¥\8dपादन à¤\85धिà¤\95ार à¤¸à¤®à¤¾à¤ªà¥\8dत à¤­à¤¯à¥\8b à¥¤ à¤ªà¥\81न: à¤ªà¥\8dरयास à¤\97र ।",
+       "uploadstash-badtoken": "तà¥\8b à¤\95ारà¥\8dय à¤\85दà¥\8dदाà¤\87 à¤\85सफल, à¤¸à¤¾à¤¯à¤¦ à¤¤à¤®à¤°à¥\8b à¤¸à¤®à¥\8dपादन à¤\85धिà¤\95ार à¤¸à¤®à¤¾à¤ªà¥\8dत à¤¹à¥\8bà¤\87à¤\97à¥\8dयà¥\8b। à¤\95à¥\83पया à¤¦à¥\8bसरà¥\8dयाà¤\82 à¤ªà¥\8dरयास à¤\97रऽ।",
        "uploadstash-refresh": "फाइलहरूको सूची ताजा गर्न्या",
        "license-header": "आज्ञापत्र दिन्नाछ़",
        "listfiles-summary": "यै खास पानाले अपलोड गर्याका सबै फाइलहरू धेकाउन्छ ।",
        "filehist-user": "प्रयोगकर्ता",
        "filehist-dimensions": "आयाम",
        "filehist-comment": "टिप्पणी",
-       "imagelinks": "फाइलको प्रयोगहरू",
+       "imagelinks": "फाइल उपयोग",
        "linkstoimage": "यै चित्रमी निम्न{{PLURAL:$1|पाना जोडिनान{{PLURAL:$1|}}|$1 पानाहरू जोडिनान्}}:",
        "nolinkstoimage": "यो चित्रसित लिंकभयाकि कोइ पाना नाइथी",
        "morelinkstoimage": "यै फाइलको [[Special:WhatLinksHere/$1|थप लिंकहरू]] हेर ।",
        "tooltip-n-mainpage-description": "खास पन्नामी झाऽ",
        "tooltip-n-portal": "आयोजनाका बारेमी , तम कि अद्द सकन्छौ , समान काखाइ  भेटौन्या",
        "tooltip-n-currentevents": "हालैका घटनाको बारेमी पृष्ठभूमि जानकारी पत्ता लागाइदिय",
-       "tooltip-n-recentchanges": "विà¤\95िमà¥\80 à¤¹à¤¾à¤²à¥\88 à¤\85रियाà¤\95ा à¤«à¥\87रबदलà¥\88 à¤¸à¥\82à¤\9aà¥\80 à¥¤",
+       "tooltip-n-recentchanges": "विà¤\95िमà¥\80 à¤\86à¤\9cभà¥\8bलà¥\88 à¤\85रियाà¤\95ा à¤«à¥\87रबदलà¥\88 à¤¸à¥\82à¤\9aà¥\80",
        "tooltip-n-randompage": "क्रमरहित पन्ना खोलऽ",
        "tooltip-n-help": "खोज्जु पड्ड्या ठौर ।",
        "tooltip-t-whatlinkshere": "सप्पै विकि पन्नाअनै शुचि जो याँखाइ जोणीजान",
        "searchsuggest-search": "{{SITENAME}} खोजऽ",
        "expand_templates_preview_fail_html": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तमीले लग इन गर्या छैनौ, पूर्वावलोकन लुकाइयाको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्द सकियोस् ।</em>\n\n<strong>यदि यो मान्य पूर्ववावलोकन प्रयास हो भण्या पुन प्रयास गर ।</strong>\nयदि यसले कार्य पूर्ण भएन भण्या [[Special:UserLogout|लग आउट गरिबर]] फेरी लग इन गर्या ।",
        "expand_templates_preview_fail_html_anon": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तमीले लग इन गर्या छैनौ, पूर्वावलोकन लुकाइयाको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्द सकियोस् ।</em>\n\n<strong>यदि यो मान्य पूर्वावलोकन प्रयास हो भण्या कृपया [[Special:UserLogin|लग इन गरिबर]] पुनः प्रयास गर्या ।</strong>",
-       "default-skin-not-found": "ओह! तमरो विकिको पूर्व निर्धारित खोल जस्तो कि <code dir=\"ltr\">$wgDefaultSkin</code> मी बताइयाको<code>$1</code>, उपलब्ध नाईथिन् ।\n\nतमरो इन्स्टलेसन यी खोलहरूलाई सम्मिलित गर्दछ {{PLURAL:$4|खोल|खोलहरू}}। हेर [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: खोललाई सम्मिलित गर्नु] ताकि तमीलाई जानकारी होस् कि कसरि {{PLURAL:$4|उसलाई|उसलाई सम्मिलित गर्न सकियोस् र निर्धारितलाई तय गद्दे}}।\n\n$2\n\n; यदि तमीले अहिले मीडियाविकि इन्स्टाल गर्याका छौ:\n: तमीले सम्भवत गिटबठे इन्स्टाल गर्याका छौ, वा सिधै स्रोत कोडबठे गर्याका छौ जैको लागि कुनै अर्कै तारिका प्रयोग गरियाको छ । यो आशा अनुरूप छ । कोशिश गर केहि खोलहरू\n[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's मीडियाविकिको खोल डाइरेक्ट्रीबाट डाउनलोड गद्या], जैको लागि तमी:\n:* डाउनलोड गर [https://www.mediawiki.org/wiki/Download टरबल इन्स्टालर], जुन कयौं खोलहरू र विस्तारमी उपलब्ध छन्। तमी खोलहरूको कोड <code>skins/</code> त्यसको डाइरेक्ट्रीबाट कपी-पेस्ट गद्द सक्द्या हौ। \n:* व्यक्तिगत खोलहरू टरबलबठे डाउनलोड गर\n[https://www.mediawiki.org/wiki/Special:SkinDistributor मीडिया विकि] बठे।\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins गिटको प्रयोग गरेर डाउनलोड गद्द सकन्छौ]।\n: यदि तमी विकासकर्ता हौ भण्या यसो गद्दा तमरो गिट-रिपजिटरीमी केहि हुनुहुँदैन । \n; यदि तमीले अहिले मीडियाविकिलाई अपग्रेड गर्याका छौ:\n: मीडियाविकि १.२४ र यैको नवीन रूप स्वतः रूपले खोलहरूलाई सक्षम गद्दैनन् (हेर [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual:खोलहरूको स्वतः खोज])। तमी निम्नलिखितलाई पेस्ट गद्द सकन्छौ: {{PLURAL:$5|लाइन|लाइनहरू}}  <code>LocalSettings.php</code> मी ताकि {{PLURAL:$5|उसले|सबै}} सक्षम होस् जस्तो कि तमीले इन्स्टाल गर्याको {{PLURAL:$5|खोल|खोलहरू}}को मामिलामी:\n\n<pre dir=\"ltr\">$3</pre>\n\n; यदि तमीले अहिले परिवर्तन गर्याका छौ<code>LocalSettings.php</code>:\n: खोल नामहरूको अगाडी डबल-क्लिक गर जसले तमलाई विभिन्न प्रकारहरूको विकल्प दिन्छ।"
+       "default-skin-not-found": "ओह! तमरो विकिको पूर्व निर्धारित खोल जस्तो कि <code dir=\"ltr\">$wgDefaultSkin</code> मी बताइयाको<code>$1</code>, उपलब्ध नाईथिन् ।\n\nतमरो इन्स्टलेसन यी खोलहरूलाई सम्मिलित गर्दछ {{PLURAL:$4|खोल|खोलहरू}}। हेर [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: खोललाई सम्मिलित गर्नु] ताकि तमीलाई जानकारी होस् कि कसरि {{PLURAL:$4|उसलाई|उसलाई सम्मिलित गर्न सकियोस् र निर्धारितलाई तय गद्दे}}।\n\n$2\n\n; यदि तमीले अहिले मीडियाविकि इन्स्टाल गर्याका छौ:\n: तमीले सम्भवत गिटबठे इन्स्टाल गर्याका छौ, वा सिधै स्रोत कोडबठे गर्याका छौ जैको लागि कुनै अर्कै तारिका प्रयोग गरियाको छ । यो आशा अनुरूप छ । कोशिश गर केहि खोलहरू\n[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's मीडियाविकिको खोल डाइरेक्ट्रीबाट डाउनलोड गद्या], जैको लागि तमी:\n:* डाउनलोड गर [https://www.mediawiki.org/wiki/Download टरबल इन्स्टालर], जुन कयौं खोलहरू र विस्तारमी उपलब्ध छन्। तमी खोलहरूको कोड <code>skins/</code> त्यसको डाइरेक्ट्रीबाट कपी-पेस्ट गद्द सक्द्या हौ। \n:* व्यक्तिगत खोलहरू टरबलबठे डाउनलोड गर\n[https://www.mediawiki.org/wiki/Special:SkinDistributor मीडिया विकि] बठे।\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins गिटको प्रयोग गरेर डाउनलोड गद्द सकन्छौ]।\n: यदि तमी विकासकर्ता हौ भण्या यसो गद्दा तमरो गिट-रिपजिटरीमी केहि हुनुहुँदैन । \n; यदि तमीले अहिले मीडियाविकिलाई अपग्रेड गर्याका छौ:\n: मीडियाविकि १.२४ र यैको नवीन रूप स्वतः रूपले खोलहरूलाई सक्षम गद्दैनन् (हेर [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual:खोलहरूको स्वतः खोज])। तमी निम्नलिखितलाई पेस्ट गद्द सकन्छौ: {{PLURAL:$5|लाइन|लाइनहरू}}  <code>LocalSettings.php</code> मी ताकि {{PLURAL:$5|उसले|सबै}} सक्षम होस् जस्तो कि तमीले इन्स्टाल गर्याको {{PLURAL:$5|खोल|खोलहरू}}को मामिलामी:\n\n<pre dir=\"ltr\">$3</pre>\n\n; यदि तमीले अहिले परिवर्तन गर्याका छौ<code>LocalSettings.php</code>:\n: खोल नामहरूको अगाडी डबल-क्लिक गर जसले तमलाई विभिन्न प्रकारहरूको विकल्प दिन्छ।",
+       "date-range-from": "मिति बठेः"
 }
index 0c81529..a15fb87 100644 (file)
        "rcshowhideanons": "$1 མིང་མེད་ལག་ལེན་པ།",
        "rcshowhidepatr": "$1 པེ་ཌོལཊི་ཞུན་དག་ཚུ།",
        "rcshowhidemine": "$1 ངེ་གི་ཞུན་དག།",
-       "rclinks": "མཇུག་མཐའི་ $1 བསྒྱུར་བཅོས་ཚུ་ ཉིནམ་ $2 ནང་ལུ་སྟོན་<br />$3",
+       "rclinks": "མཇུག་མཐའི་ $1 བསྒྱུར་བཅོས་ཚུ་ ཉིནམ་ $2 ནང་ལུ་སྟོན་",
        "diff": "ཁྱད་པར།",
        "hist": "སྤྱོད་ཤུལ",
        "hide": "སྦ།",
index 6a9db68..613f8f5 100644 (file)
        "rcshowhideliu": "$1 ezãla siwo ŋlɔ ŋkɔ",
        "rcshowhideanons": "$1 ŋkɔ maŋlɔlawo",
        "rcshowhidemine": "$1 nyeƒe tɔtrɔwo",
-       "rclinks": "Fia tɔtrɔ $1 mamleawo le ŋkeke $2 siwo vayi me<br />$3",
+       "rclinks": "Fia tɔtrɔ $1 mamleawo le ŋkeke $2 siwo vayi me",
        "diff": "tɔtrɔ",
        "hist": "xoxo",
        "hide": "Ɣla",
index c22982f..5fc6cc6 100644 (file)
        "externaldberror": "È sucès un erōr cun al terminêl ed certificasiòun ed validitê d'ed fōra, opór an 's gh'à mìa al j autorişasiòun necesâri per arnuvêr l' ingrès d'ed fōra.",
        "login": "Và dèinter",
        "nav-login-createaccount": "Và dèinter / Fà la tó inscrisiòun",
-       "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",
        "userlogin-noaccount": "Ét mìa incòra fât la registrasiòun?",
        "userlogin-joinproject": "Da {{SITENAME}}",
-       "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 e-scurdê la cêva p'r al tó ingrès?",
        "userlogin-resetpassword-link": "T' ét scurdê la cêva 'd ingrès?",
        "userlogin-helplink2": "Ajót per l'ingrès",
        "userlogin-loggedin": "T'ét bèle coleghê {{GENDER:$1|$1}}. \nDrōva al mōdul ché sòta cme un êter utèint.",
        "createacct-another-email-ph": "Scrév l'indirés ed pôsta eletrônica",
        "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ê.",
        "createacct-realname": "Al nòm vèira (se 's vōl)",
-       "createaccountreason": "Mutîv:",
        "createacct-reason": "Mutîv",
        "createacct-reason-ph": "Perchè ét drē fêr 'n' êtra utèinsa",
        "createacct-submit": "Fà la tó utèinsa",
        "preview": "Guêrda préma",
        "showpreview": "Guêrda préma 'd salvêr",
        "showdiff": "Guêrda i cambiamèint",
-       "blankarticle": "<strong>Atèinti:</strong>la pàgina che t'é drē fêr la gh'à gnînto dèinter. S' ét tōren a schisêr in sém a \"{{int:savearticle}}\", la pàgina la srà fât sèinsa gnînto dèinter.",
+       "blankarticle": "<strong>Atèinti:</strong>la pàgina che t'é drē fêr la gh'à gnînto dèinter. S' ét tōren a schisêr in sém a \"$1\", la pàgina la srà fât sèinsa gnînto dèinter.",
        "anoneditwarning": "<strong>Atèinti:</strong> An n'é mìa stê fât l'ingrès. S' ét farê dal mudéfichi al tó indirés IP al srà vést da tót. Se <strong>[$1 và dèinter]</strong> o <strong>[$2 fà 'n' utèinsa]</strong>, al tô mudéfichi a srân sgnêdi al tó nòm utèint, insèm a êter benefési.",
        "anonpreviewwarning": "\"An n'é mìa stê fât l'ingrès. Mèinter es sêlva la pàgina, l'indirés IP al srà sgnê int la stòria 'd la pàgina.\"",
-       "missingsummary": "'''Atensiòun:''' an n'é mìa stê precişê al mutîv de sté mudéfica. S'es tōrna a clichêr insém a \"{{int:savearticle}}\" la mudéfica la gnirà salvêda cun al mutîv vōd.",
-       "selfredirect": "<strong>Ateinti:</strong>t'é drē fêr un rinvéi a l'istèsa pàgina. Ét prés avèir şbaliê sgnêr al pôst dal rinvéi o t'é drē mudifichêr la pàgina şbaliêda. S'ét fê cléch incòra in sém a \"{{int:savearticle}}\", al rinvéi al gnirà fât in tót' al manēri.",
+       "missingsummary": "'''Atensiòun:''' an n'é mìa stê precişê al mutîv de sté mudéfica. S'es tōrna a clichêr insém a \"$1\" la mudéfica la gnirà salvêda cun al mutîv vōd.",
+       "selfredirect": "<strong>Ateinti:</strong>t'é drē fêr un rinvéi a l'istèsa pàgina. Ét prés avèir şbaliê sgnêr al pôst dal rinvéi o t'é drē mudifichêr la pàgina şbaliêda. S'ét fê cléch incòra in sém a \"$1\", al rinvéi al gnirà fât in tót' al manēri.",
        "missingcommenttext": "Scréver un cumèint ché sòta.",
-       "missingcommentheader": "<strong>Atensiòun:<strong> an n'é mìa stê precişê l'argumèint de sté mudéfica. S'es tōrna a clichêr insém a \"{{int:savearticle}}\" la mudéfica la gnirà salvêda sèinsa.",
+       "missingcommentheader": "<strong>Atensiòun:<strong> an n'é mìa stê precişê l'argumèint de sté mudéfica. S'es tōrna a clichêr insém a \"$1\" la mudéfica la gnirà salvêda sèinsa.",
        "summary-preview": "Guêrda préma sûnt:",
        "subject-preview": "Guêrda préma l'argumèint:",
        "previewerrortext": "A gh'é stê 'n erōr mèinter a s'é serchê ed guardêr al lavōr préma 'd salvêrel.",
        "editingsection": "Mudéfica ed $1 (sesiòun)",
        "editingcomment": "Mudéfica e $1 (sesiòun nōva)",
        "editconflict": "Cuntrâst 'd edisiòun só $1",
-       "explainconflict": "Un êter utèint l'à salvê 'na nōva versiòun ed la pàgina mèinter t'ēr adrē fêr dal mudéfichi. Int la caşèla 'd mudéfica ché 'd sōver a gh'é al tèst ed la pàgina che adès l'é in lénia, acsé cme l'é stêda salvêda da cl'êter utèint. La versiòun cun al tō mudéfichi invēci l'é int la caşèla dal mudéfichi ché sòta. S' ét vō cunfermêri, ét dēv purtêr al tō mudéfichi int al tèst che gh'é bèle (caşèla ché 'd sōver). Se té schés al ptòun '{{int:savearticle}}', a gnirà salvê '''sōl''' al tèst dèinter a la caşèla 'd mudéfica ché 'd sōver.",
+       "explainconflict": "Un êter utèint l'à salvê 'na nōva versiòun ed la pàgina mèinter t'ēr adrē fêr dal mudéfichi. Int la caşèla 'd mudéfica ché 'd sōver a gh'é al tèst ed la pàgina che adès l'é in lénia, acsé cme l'é stêda salvêda da cl'êter utèint. La versiòun cun al tō mudéfichi invēci l'é int la caşèla dal mudéfichi ché sòta. S' ét vō cunfermêri, ét dēv purtêr al tō mudéfichi int al tèst che gh'é bèle (caşèla ché 'd sōver). Se té schés al ptòun '$1', a gnirà salvê '''sōl''' al tèst dèinter a la caşèla 'd mudéfica ché 'd sōver.",
        "yourtext": "Al tó tèst",
        "storedversion": "La versiòun in memôria",
        "nonunicodebrowser": "'''Atèinti: a s'é drē druvêr un navigadōr ch' al và mìa d' acôrdi cun i carâter ''Unicode''. Per permèter la mudéfica dal pàgini sèinsa fêr d' incunveniĵnt, int la caşèla ed mudéfica i carâter mia ASCII a vînen fât vèder cme côdis eşadecimêl.'''",
        "right-editsemiprotected": "Mudéfica 'l pàgini prutèti cun \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Mudéfica al mudèl ed còl ché dèinter int 'na pàgina.",
        "right-editinterface": "Mudéfica al colegamèint tra sistēma e utèint",
-       "right-editusercssjs": "Mudéfica i file CSS e JS 'd êter utèint",
        "right-editusercss": "Mudéfica i file CSS 'd êter utèint",
        "right-edituserjs": "Mudéfica i file JS 'd êter utèint",
        "right-editmyusercss": "Mudéfica i file CSS dal só utèint",
        "rcshowhidemine": "$1 al mē mudéfichi",
        "rcshowhidemine-show": "Fà vèder",
        "rcshowhidemine-hide": "Lōga",
-       "rclinks": "Fà vèder al $1 ûltmi mudéfichi fâti int j ûltem $2 dé<br />$3",
+       "rclinks": "Fà vèder al $1 ûltmi mudéfichi fâti int j ûltem $2 dé",
        "diff": "dif",
        "hist": "stòria",
        "hide": "Lōga",
index 1a94c80..1492aa4 100644 (file)
                        "Αντιγόνη",
                        "Matma Rex",
                        "Ανώνυμος Βικιπαιδιστής",
-                       "GR"
+                       "GR",
+                       "Thodoris",
+                       "Ftsalamp",
+                       "Kostas20142"
                ]
        },
        "tog-underline": "Υπογράμμιση συνδέσμων:",
-       "tog-hideminor": "Απόκρυψη μικροεπεξεργασιών στις πρόσφατες αλλαγές",
+       "tog-hideminor": "Απόκρυψη μικροεπεξεργασιών από τις πρόσφατες αλλαγές",
        "tog-hidepatrolled": "Απόκρυψη ελεγμένων επεξεργασιών στις πρόσφατες αλλαγές",
        "tog-newpageshidepatrolled": "Απόκρυψη ελεγμένων σελίδων από τον κατάλογο νέων σελίδων",
        "tog-hidecategorization": "Απόκρυψη κατηγοριοποίησης σελίδων",
        "anontalk": "Σελίδα συζήτησης αυτής της διεύθυνσης IP",
        "navigation": "Πλοήγηση",
        "and": "&#32;και",
-       "qbfind": "Εύρεση",
-       "qbbrowse": "Περιήγηση",
-       "qbedit": "Επεξεργασία",
-       "qbpageoptions": "Αυτή η σελίδα",
-       "qbmyoptions": "Οι σελίδες μου",
        "faq": "Συχνές ερωτήσεις",
-       "faqpage": "Project:Συχνές ερωτήσεις",
        "actions": "Ενέργειες",
        "namespaces": "Ονοματοχώροι",
        "variants": "Παραλλαγές",
        "edit-local": "Επεξεργασία τοπικής περιγραφής",
        "create": "Δημιουργία",
        "create-local": "Προσθήκη τοπικής περιγραφής",
-       "editthispage": "Επεξεργασία αυτής της σελίδας",
-       "create-this-page": "Δημιουργία αυτής της σελίδας",
        "delete": "Διαγραφή",
-       "deletethispage": "Διαγραφή αυτής της σελίδας",
-       "undeletethispage": "Επαναφορά αυτής της διαγεγραμμένης σελίδας",
        "undelete_short": "Επαναφορά {{PLURAL:$1|μίας διαγεγραμμένης επεξεργασίας|$1 διαγεγραμμένων επεξεργασιών}}.",
        "viewdeleted_short": "Προβολή {{PLURAL:$1|μίας διαγεγραμμένης επεξεργασίας|$1 διαγεγραμμένων επεξεργασιών}}",
        "protect": "Προστασία",
        "protect_change": "αλλαγή",
-       "protectthispage": "Προστασία αυτής της σελίδας",
        "unprotect": "Αλλαγή προστασίας",
-       "unprotectthispage": "Αλλαγή προστασίας αυτής της σελίδας",
        "newpage": "Νέα σελίδα",
-       "talkpage": "Συζήτηση για αυτήν τη σελίδα",
        "talkpagelinktext": "Συζήτηση",
        "specialpage": "Ειδική σελίδα",
        "personaltools": "Προσωπικά εργαλεία",
-       "articlepage": "Εμφάνιση σελίδας περιεχομένου",
        "talk": "Συζήτηση",
        "views": "Προβολές",
        "toolbox": "Εργαλεία",
        "tool-link-userrights": "Αλλαγή ομάδων {{GENDER:$1|χρήστη}}",
        "tool-link-userrights-readonly": "Εμφάνιση {{GENDER:$1|ομάδων}}  χρηστών",
        "tool-link-emailuser": "Αποστολή e-mail {{GENDER:$1|στο|στη}} χρήστη",
-       "userpage": "Προβολή σελίδας χρήστη",
-       "projectpage": "Προβολή σελίδας εγχειρήματος",
        "imagepage": "Προβολή σελίδας αρχείου",
        "mediawikipage": "Προβολή σελίδας μηνύματος",
        "templatepage": "Προβολή σελίδας προτύπου",
        "preview": "Προεπισκόπηση",
        "showpreview": "Εμφάνιση προεπισκόπησης",
        "showdiff": "Εμφάνιση αλλαγών",
-       "blankarticle": "<strong>Προειδοποίηση:</strong> Η σελίδα που πάτε να δημιουργήσετε είναι κενή.\nΕάν ξανακάνετε κλικ στο κουμπί «{{int:savearticle}}» η σελίδα θα δημιουργηθεί χωρίς περιεχόμενο.",
+       "blankarticle": "<strong>Προειδοποίηση:</strong> Η σελίδα που προσπαθείτε να δημιουργήσετε είναι κενή.\nΕάν ξανακάνετε κλικ στο κουμπί «$1» η σελίδα θα δημιουργηθεί χωρίς περιεχόμενο.",
        "anoneditwarning": "<strong>Προειδοποίηση:</strong> Δεν έχετε συνδεθεί. Η διεύθυνση IP σας θα είναι ορατή δημόσια αν κάνετε κάποια επεξεργασία. Αν <strong>[$1 συνδεθείτε]</strong> ή <strong>[$2 δημιουργήσετε λογαριασμό]</strong>, οι επεξεργασίες σας θα αποδοθούν στο όνομά χρήστη σας, μαζί με άλλα οφέλη.",
        "anonpreviewwarning": "''Δεν έχετε συνδεθεί. Η αποθήκευση θα καταγράψει την διεύθυνσή IP σας στο ιστορικό επεξεργασίας αυτής της σελίδας.''",
        "missingsummary": "'''Υπενθύμιση:''' Δεν έχετε συμπληρώσει τη σύνοψη επεξεργασίας. Αν κάνετε κλικ στο κουμπί Αποθήκευση πάλι, η επεξεργασία σας θα αποθηκευτεί χωρίς σύνοψη.",
-       "selfredirect": "<strong>Προσοχή:</strong> Ανακατευθύνετε αυτή τη σελίδα στον εαυτό της. Μπορεί να δώσατε λάθος στόχο για την ανακατεύθυνση, ή μπορεί να επεξεργάζεστε λάθος σελίδα.\nΑν κάνε κλίκ στο \"{{int:savearticle}}\" ξανά, η ανακατεύθυνση θα δημιουργηθεί ούτως ή άλλως.",
+       "selfredirect": "<strong>Προσοχή:</strong> Ανακατευθύνετε αυτή τη σελίδα στον εαυτό της. Μπορεί να δώσατε λάθος στόχο για την ανακατεύθυνση, ή μπορεί να επεξεργάζεστε λάθος σελίδα.\nΑν κάνε κλίκ στο \"$1\" ξανά, η ανακατεύθυνση θα δημιουργηθεί ούτως ή άλλως.",
        "missingcommenttext": "Παρακαλούμε εισαγάγετε σχόλιο παρακάτω.",
-       "missingcommentheader": "<strong>Υπενθύμιση:</strong> δεν έχετε δώσει ένα θέμα γι' αυτό το σχόλιο.\nΕάν κάνετε κλικ στο κουμπί \"{{int:savearticle}}\" ξανά, η επεξεργασία σας θα αποθηκευτεί χωρίς αυτό.",
+       "missingcommentheader": "<strong>Υπενθύμιση:</strong> δεν έχετε δώσει ένα θέμα γι' αυτό το σχόλιο.\nΕάν κάνετε κλικ στο κουμπί \"$1\" ξανά, η επεξεργασία σας θα αποθηκευτεί χωρίς αυτό.",
        "summary-preview": "Προεπισκόπηση σύνοψης επεξεργασίας:",
        "subject-preview": "Προεπισκόπηση θέματος:",
        "previewerrortext": "Παρουσιάστηκε σφάλμα κατά την προσπάθεια για να κάνετε προεπισκόπηση των αλλαγών σας.",
        "editingsection": "Επεξεργασία $1 (ενότητα)",
        "editingcomment": "Επεξεργασία $1 (νέο τμήμα)",
        "editconflict": "Σύγκρουση επεξεργασίας: $1",
-       "explainconflict": "Κάποιος άλλος χρήστης έχει αλλάξει αυτή τη σελίδα από τότε που αρχίσατε να την επεξεργάζεστε.\nΣτο επάνω τμήμα βρίσκεται το τρέχον κείμενο της σελίδας.\nΟι δικές σας αλλαγές εμφανίζονται στο κάτω τμήμα.\nΘα πρέπει να ενσωματώσετε τις αλλαγές σας στο τρέχον κείμενο.\n'''Μόνο''' το επάνω τμήμα θα αποθηκευθεί όταν πατήσετε \"{{int:savearticle}}\".",
+       "explainconflict": "Κάποιος άλλος χρήστης έχει αλλάξει αυτή τη σελίδα από τότε που αρχίσατε να την επεξεργάζεστε.\nΣτο επάνω τμήμα βρίσκεται το τρέχον κείμενο της σελίδας.\nΟι δικές σας αλλαγές εμφανίζονται στο κάτω τμήμα.\nΘα πρέπει να ενσωματώσετε τις αλλαγές σας στο τρέχον κείμενο.\n'''Μόνο''' το επάνω τμήμα θα αποθηκευθεί όταν πατήσετε \"$1\".",
        "yourtext": "Το κείμενό σας",
        "storedversion": "Αποθηκευμένη έκδοση",
        "nonunicodebrowser": "'''ΠΡΟΣΟΧΗ! Ο περιηγητής σας δεν είναι συμβατός με κωδικοποίηση Unicode.'''\nΓια την ασφαλή επεξεργασία των σελίδων έχει βρεθεί ένας εναλλακτικός τρόπος: Όσοι χαρακτήρες δεν είναι ASCII θα φαίνονται στο πλαίσιο επεξεργασίας ως δεκαεξαδικοί κωδικοί.",
        "readonlywarning": "'''Προειδοποίηση: Η βάση δεδομένων έχει κλειδωθεί για συντήρηση, έτσι δεν θα μπορέσετε να αποθηκεύσετε τις επεξεργασίες σας αυτή τη στιγμή.'''\nΜπορείτε αν θέλετε να μεταφέρετε με αντιγραφή-επικόλληση το κείμενό σας σε αρχείο κειμένου και να το αποθηκεύσετε για αργότερα.\n\nΟ διαχειριστής που την κλείδωσε έδωσε την εξής εξήγηση: $1",
        "protectedpagewarning": "'''Προειδοποίηση: Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο χρήστες με δικαιώματα διαχειριστή μπορούν να την επεξεργαστούν.'''\nΗ πιο πρόσφατη καταχώρηση στο αρχείο καταγραφής παρέχεται παρακάτω για αναφορά:",
        "semiprotectedpagewarning": "'''Σημείωση:''' Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο εγγεγραμμένοι χρήστες μπορούν να την επεξεργαστούν.\nΗ πιο πρόσφατη καταχώρηση στο αρχείο καταγραφής παρέχεται παρακάτω για αναφορά:",
-       "cascadeprotectedwarning": "'''Προσοχή:''' Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο χρήστες με δικαιώματα διαχειριστή συστήματος να μπορούν να την επεξεργαστούν, επειδή περιλαμβάνεται {{PLURAL:$1|στην ακόλουθη|στις ακόλουθες}} διαδοχικά (cascaded) {{PLURAL:$1|προστατευμένη σελίδα|προστατευμένες σελίδες}}:",
+       "cascadeprotectedwarning": "<strong>Προσοχή:</strong> Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο χρήστες με [[Special:ListGroupRights|συγκεκριμένα δικαιώματα]] να μπορούν να την επεξεργαστούν, επειδή περιλαμβάνεται {{PLURAL:$1|στην ακόλουθη|στις ακόλουθες}} διαδοχικά (cascaded) {{PLURAL:$1|προστατευμένη σελίδα|προστατευμένες σελίδες}}:",
        "titleprotectedwarning": "'''Προειδοποίηση: Αυτή η σελίδα έχει κλειδωθεί ώστε χρειάζονται [[Special:ListGroupRights|ειδικά δικαιώματα]] για να δημιουργηθεί.'''\nΗ πιο πρόσφατη καταχώρηση στο αρχείο καταγραφής παρέχεται παρακάτω για αναφορά:",
        "templatesused": "{{PLURAL:$1|Πρότυπο που χρησιμοποιείται|Πρότυπα που χρησιμοποιούνται}} στη σελίδα αυτή:",
        "templatesusedpreview": "{{PLURAL:$1|Πρότυπο που χρησιμοποιείται|Πρότυπα που χρησιμοποιούνται}} σε αυτήν την προεπισκόπηση:",
        "page_first": "πρώτη",
        "page_last": "τελευταία",
        "histlegend": "Επιλογή διαφορών: Μαρκάρετε τα κουτάκια επιλογής των εκδόσεων που θέλετε να συγκρίνετε και πατήστε το enter ή το κουμπί στο κάτω μέρος.<br />\nΥπόμνημα: '''({{int:cur}})''' = διαφορά από την τελευταία έκδοση, '''({{int:last}})''' = διαφορά από την προηγούμενη έκδοση, '''{{int:minoreditletter}}''' = μικροαλλαγή.",
-       "history-fieldset-title": "Περιήγηση στο ιστορικό",
+       "history-fieldset-title": "Περιήγηση στο ιστορικό αλλαγών",
        "history-show-deleted": "Διαγεγραμμένες μόνο",
        "histfirst": "η πιο παλιά",
        "histlast": "η πιο πρόσφατη",
        "prefs-help-prefershttps": "Αυτή η προτίμηση θα τεθεί σε ισχύ στην επόμενή σας σύνδεση.",
        "prefswarning-warning": "Έχετε κάνει αλλαγές στις προτιμήσεις σας που δεν έχουν αποθηκευτεί ακόμα.\nΕάν αφήσετε αυτή τη σελίδα χωρίς να κάνετε κλικ στο \"$1\" οι προτιμήσεις σας δεν θα ενημερωθούν.",
        "prefs-tabs-navigation-hint": "Συμβουλή: Μπορείτε να χρησιμοποιήσετε τα πλήκτρα διευθύνσεων αριστερά και δεξιά για να πλοηγηθείτε μεταξύ των καρτελών στη λίστα καρτελών.",
-       "userrights": "Î\94ιαÏ\87είÏ\81ιÏ\83η Î´Î¹ÎºÎ±Î¹Ï\89μάÏ\84Ï\89ν χρηστών",
+       "userrights": "Î\94ικαιÏ\8eμαÏ\84α χρηστών",
        "userrights-lookup-user": "Επιλέξτε χρήστη",
        "userrights-user-editname": "Δηλώστε όνομα χρήστη:",
        "editusergroup": "Φόρτωση ομάδων χρηστών",
        "saveusergroups": "Αποθήκευση {{GENDER:$1|ομάδων}}  χρηστών",
        "userrights-groupsmember": "Μέλος της ομάδας:",
        "userrights-groupsmember-auto": "Αυτονόητο μέλος του:",
-       "userrights-groups-help": "Î\9cÏ\80οÏ\81είÏ\84ε Î½Î± Î¼ÎµÏ\84αβάλεÏ\84ε Ï\84ιÏ\82 Î¿Î¼Î¬Î´ÎµÏ\82 Ï\83Ï\84ιÏ\82 Î¿Ï\80οίεÏ\82 Î±Î½Î®ÎºÎµÎ¹ {{GENDER:$1|αÏ\85Ï\84Ï\8cÏ\82 Î¿ Ï\87Ï\81ήÏ\83Ï\84ηÏ\82|αÏ\85Ï\84ή Î· Ï\87Ï\81ήÏ\83Ï\84Ï\81ια}}:\n* Î¤Ï\83εκαÏ\81ιÏ\83μένο ÎºÎ¿Ï\85Ï\84άκι Ï\83ημαίνει Ï\8cÏ\84ι {{GENDER:$1|ο Ï\87Ï\81ήÏ\83Ï\84ηÏ\82|η Ï\87Ï\81ήÏ\83Ï\84Ï\81ια}} Î±Î½Î®ÎºÎµÎ¹ Ï\83ε Î±Ï\85Ï\84ήν Ï\84ην Î¿Î¼Î¬Î´Î±.\n* Î\9cη Ï\84Ï\83εκαÏ\81ιÏ\83μένο ÎºÎ¿Ï\85Ï\84άκι Ï\83ημαίνει Ï\8cÏ\84ι {{GENDER:$1|ο Ï\87Ï\81ήÏ\83Ï\84ηÏ\82|η Ï\87Ï\81ήÏ\83Ï\84Ï\81ια}} Î´ÎµÎ½ Î±Î½Î®ÎºÎµÎ¹ Ï\83ε Î±Ï\85Ï\84ήν Ï\84ην Î¿Î¼Î¬Î´Î±.\n* Î\91Ï\83Ï\84εÏ\81ίÏ\83κοÏ\82 (*) Ï\83ημαίνει Ï\8cÏ\84ι Î´ÎµÎ½ Î¼Ï\80οÏ\81είÏ\84ε Î½Î± Î±Ï\86αιÏ\81έÏ\83εÏ\84ε Ï\84ην Î¿Î¼Î¬Î´Î± Î¬Ï\80αξ ÎºÎ±Î¹ Ï\84ην Ï\80Ï\81οÏ\83θέÏ\83εÏ\84ε, Î® Ï\84ο Î±Î½Î¬Ï\80οδο.",
+       "userrights-groups-help": "Î\9cÏ\80οÏ\81είÏ\84ε Î½Î± Î¼ÎµÏ\84αβάλεÏ\84ε Ï\84ιÏ\82 Î¿Î¼Î¬Î´ÎµÏ\82 Ï\83Ï\84ιÏ\82 Î¿Ï\80οίεÏ\82 Î±Î½Î®ÎºÎµÎ¹ {{GENDER:$1|αÏ\85Ï\84Ï\8cÏ\82 Î¿ Ï\87Ï\81ήÏ\83Ï\84ηÏ\82|αÏ\85Ï\84ή Î· Ï\87Ï\81ήÏ\83Ï\84Ï\81ια}}:\n* Î¤Ï\83εκαÏ\81ιÏ\83μένο ÎºÎ¿Ï\85Ï\84άκι Ï\83ημαίνει Ï\8cÏ\84ι {{GENDER:$1|ο Ï\87Ï\81ήÏ\83Ï\84ηÏ\82|η Ï\87Ï\81ήÏ\83Ï\84Ï\81ια}} Î±Î½Î®ÎºÎµÎ¹ Ï\83ε Î±Ï\85Ï\84ήν Ï\84ην Î¿Î¼Î¬Î´Î±.\n* Î\9cη Ï\84Ï\83εκαÏ\81ιÏ\83μένο ÎºÎ¿Ï\85Ï\84άκι Ï\83ημαίνει Ï\8cÏ\84ι {{GENDER:$1|ο Ï\87Ï\81ήÏ\83Ï\84ηÏ\82|η Ï\87Ï\81ήÏ\83Ï\84Ï\81ια}} Î´ÎµÎ½ Î±Î½Î®ÎºÎµÎ¹ Ï\83ε Î±Ï\85Ï\84ήν Ï\84ην Î¿Î¼Î¬Î´Î±.\n* Î\9f Î±Ï\83Ï\84εÏ\81ίÏ\83κοÏ\82 (*) Î´Î·Î»Ï\8eνει Ï\8cÏ\84ι Î´ÎµÎ½ Î¼Ï\80οÏ\81είÏ\84ε Î½Î± Î±Ï\86αιÏ\81έÏ\83εÏ\84ε Ï\84ην Î¿Î¼Î¬Î´Î± Î¬Ï\80αξ ÎºÎ±Î¹ Ï\84ην Ï\80Ï\81οÏ\83θέÏ\83εÏ\84ε, Î® Ï\84ο Î±Î½Î¬Ï\80οδο.\n* Î\97 Î´Î¯ÎµÏ\83η (#) Î´Î·Î»Ï\8eνει Ï\8cÏ\84ι Ï\84η Î»Î®Î¾Î· Î¹Ï\83Ï\87Ï\8dοÏ\82 Ï\84ηÏ\82 Î­Î½Ï\84αξηÏ\82 Ï\83ε Î±Ï\85Ï\84ήν Ï\84ην Î¿Î¼Î¬Î´Î± Î¼Ï\80οÏ\81είÏ\84ε Î½Î± Ï\84η Î¼ÎµÏ\84αθέÏ\83εÏ\84ε Î¼Ï\8cνο Ï\83ε Î¼ÎµÏ\84αγενέÏ\83Ï\84εÏ\81η Ï\87Ï\81ονική Ï\83Ï\84ιγμή ÎºÎ±Î¹ Ï\8cÏ\87ι Ï\83ε Ï\80Ï\81ογενέÏ\83Ï\84εÏ\81η.",
        "userrights-reason": "Αιτία:",
        "userrights-no-interwiki": "Δεν έχετε άδεια να επεξεργαστείτε τα δικαιώματα χρηστών σε άλλα wiki.",
        "userrights-nodatabase": "Η βάση δεδομένων $1 δεν υπάρχει ή δεν είναι τοπική.",
        "right-editsemiprotected": "Επεξεργασία προστατευμένων σελίδων ως \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Επεξεργασίας του μοντέλου περιεχόμενου σελίδας",
        "right-editinterface": "Επεξεργασία της διασύνδεσης χρήστη",
-       "right-editusercssjs": "Μεταγραφή των αρχείων CSS και JS άλλων χρηστών",
        "right-editusercss": "Μεταγραφή των αρχείων CSS άλλων χρηστών",
        "right-edituserjs": "Μεταγραφή των αρχείων JS άλλων χρηστών",
        "right-editmyusercss": "Επεξεργασία των ιδιωτικών αρχείων CSS χρήστη",
        "right-applychangetags": "Εφαρμογή [[Special:Tags|ετικετών]] παράλληλα με τις όποιες αλλαγές κάνει κάποιος",
        "right-changetags": "Προσθέστε και αφαιρέστε αυθαίρετες [[Special:Tags|ετικέτες]] σε μεμονωμένες εκδόσεις και καταχωρήσεις καταγραφών",
        "right-deletechangetags": "Διαγραφή [[Special:Tags|ετικετών]] από τη βάση δεδομένων",
+       "grant-generic": "Πακέτο δικαιωμάτων \"$1\"",
        "grant-group-page-interaction": "Αλληλεπίδραση με σελίδες",
        "grant-group-file-interaction": "Αλληλεπίδραση με πολυμέσα",
        "grant-group-watchlist-interaction": "Αλληλεπίδραση με τη λίστα παρακολούθησής σου",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "Προβολή",
        "rcfilters-activefilters": "Ενεργά φίλτρα",
+       "rcfilters-savedqueries-rename": "Μετονομασία",
+       "rcfilters-savedqueries-setdefault": "Ορισμός ως προεπιλογή",
        "rcfilters-restore-default-filters": "Επαναφορά προεπιλεγμένων φίλτρων",
        "rcfilters-clear-all-filters": "Εκκαθάριση όλων των φίλτρων",
        "rcfilters-search-placeholder": "Φιλτράρισμα πρόσφατων αλλαγών (περιηγηθείτε ή αρχίστε να πληκτρολογείτε)",
        "rcfilters-empty-filter": "Χωρίς ενεργά φίλτρα. Εμφανίζονται όλες οι συνεισφορές.",
        "rcfilters-filterlist-title": "Φίλτρα",
        "rcfilters-filterlist-whatsthis": "Τι είναι αυτό;",
+       "rcfilters-filterlist-feedbacklink": "Δώστε ανατροφοδότηση για τα νέα φίλτρα (beta)",
+       "rcfilters-highlightbutton-title": "Επισήμανση αποτελεσμάτων",
+       "rcfilters-highlightmenu-title": "Επιλέξτε ένα χρώμα",
+       "rcfilters-highlightmenu-help": "Επιλέξτε ένα χρώμα για να επισημάνετε αυτή την ιδιότητα",
        "rcfilters-filterlist-noresults": "Δεν βρέθηκαν φίλτρα",
        "rcfilters-noresults-conflict": "Δε βρέθηκαν αποτελέσματα γιατί τα κριτήρια αναζήτησης είναι σε διένεξη.",
+       "rcfilters-state-message-subset": "Αυτό το φίλτρο δεν έχει επιρροή επειδή τα αποτελέσματά του περιλαμβάνονται σε αυτά {{PLURAL:$2|ευρύτερου φίλτρου|ευρύτερων φίλτρων}} (δοκιμάστε την επισήμανση για να τα ξεχωρήσετε): $1",
        "rcfilters-filtergroup-registration": "Επωνυμία χρηστών",
        "rcfilters-filter-registered-label": "Εγγεγραμμένοι",
        "rcfilters-filter-registered-description": "Συνδεδεμένοι συντάκτες.",
        "rcfilters-filter-unregistered-label": "Μη εγγεγραμμένοι",
        "rcfilters-filter-unregistered-description": "Συντάκτες που δεν είναι συνδεδεμένοι.",
        "rcfilters-filtergroup-authorship": "Πατρότητα επεξεργασιών",
-       "rcfilters-filter-editsbyself-label": "Î\9fι Î´Î¹ÎºÎ­Ï\82 Ï\83αÏ\82 ÎµÏ\80εξεÏ\81γαÏ\83ίες",
-       "rcfilters-filter-editsbyself-description": "Î\95Ï\80εξεÏ\81γαÏ\83ίεÏ\82 Î±Ï\80Ï\8c ÎµÏ\83άς.",
-       "rcfilters-filter-editsbyother-label": "Î\95Ï\80εξεÏ\81γαÏ\83ίες από άλλους",
-       "rcfilters-filter-editsbyother-description": "Î\95Ï\80εξεÏ\81γαÏ\83ίεÏ\82 Ï\80οÏ\85 Î´Î·Î¼Î¹Î¿Ï\85Ï\81γήθηκαν Î±Ï\80Ï\8c Î¬Î»Î»Î¿Ï\85Ï\82 Ï\87Ï\81ήÏ\83Ï\84εÏ\82 (Ï\8cÏ\87ι ÎµÏ\83άÏ\82).",
+       "rcfilters-filter-editsbyself-label": "Î\95Ï\80εξεÏ\81γαÏ\83ίεÏ\82 Î±Ï\80Ï\8c ÎµÏ\83άς",
+       "rcfilters-filter-editsbyself-description": "Î\9fι Î´Î¹ÎºÎ­Ï\82 Ï\83αÏ\82 Ï\83Ï\85νειÏ\83Ï\86οÏ\81ές.",
+       "rcfilters-filter-editsbyother-label": "Î\91λλαγές από άλλους",
+       "rcfilters-filter-editsbyother-description": "Î\8cλεÏ\82 Î¿Î¹ Î±Î»Î»Î±Î³Î­Ï\82 ÎµÎºÏ\84Ï\8cÏ\82 Î±Ï\80Ï\8c Ï\84ιÏ\82 Î´Î¹ÎºÎ­Ï\82 Ï\83αÏ\82.",
        "rcfilters-filtergroup-userExpLevel": "Επίπεδο εμπειρίας (για εγγεγραμμένους χρήστες μόνο)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Τα φίλτρα εμπειρίας βρίσκουν μόνο εγγεγραμμένους χρήστες, οπότε αυτό το φίλτρο αντικρούει το φίλτρο \"μη εγγεγραμμένοι\".",
        "rcfilters-filter-user-experience-level-newcomer-label": "Νεοφερμένοι",
        "rcfilters-filter-user-experience-level-newcomer-description": "Λιγότερες από 10 επεξεργασίες και 4 ημέρες δραστηριότητας.",
        "rcfilters-filter-user-experience-level-learner-label": "Μαθητευόμενοι",
        "rcshowhidecategorization": "$1 κατηγοριοποίησης σελίδας",
        "rcshowhidecategorization-show": "Εμφάνιση",
        "rcshowhidecategorization-hide": "Απόκρυψη",
-       "rclinks": "Εμφάνιση των τελευταίων $1 αλλαγών στο διάστημα των τελευταίων $2 ημερών<br />$3",
+       "rclinks": "Εμφάνιση των τελευταίων $1 αλλαγών στο διάστημα των τελευταίων $2 ημερών",
        "diff": "διαφορά",
        "hist": "ιστορικό",
        "hide": "Απόκρυψη",
        "backend-fail-read": "Αδύνατη η ανάγνωση αρχείου $1.",
        "backend-fail-create": "Αδύνατη η δημιουργία αρχείου $1.",
        "backend-fail-maxsize": "Δεν ήταν δυνατή η εγγραφή του αρχείου «$1» γιατί είναι μεγαλύτερο από {{PLURAL:$2|ένα byte|$2 bytes}}.",
-       "backend-fail-readonly": "Το αντικείμενο αποθήκευσης \"$1\" αυτή τη στιγμή είναι μόνο για ανάγνωση. Η αιτία που δόθηκε ήταν: \"$2\"",
+       "backend-fail-readonly": "Το σύστημα αποθήκευσης «$1» αυτή τη στιγμή είναι διαθέσιμο μόνο για ανάγνωση. Η αιτιολόγηση που δόθηκε ήταν: «$2»",
        "backend-fail-synced": "Το αρχείο \"$1\" είναι σε κατάσταση ασυνέπειας εντός του εσωτερικού χώρου αποθήκευσης",
        "backend-fail-connect": "Δεν ήταν δυνατή η σύνδεση στο αντικείμενο αποθήκευσης \"$1\".",
        "backend-fail-internal": "Παρουσιάστηκε ένα άγνωστο σφάλμα στην αποθήκευση παρασκηνίου \"$1\".",
        "apihelp-no-such-module": "Το Module \"$1\" δεν βρέθηκε.",
        "apisandbox": "Αμμοδοχείο API",
        "apisandbox-api-disabled": "Η Διεπαφή Προγραμματισμού Εφαρμογών (API) είναι απενεργοποιημένη σε αυτήν την τοποθεσία.",
-       "apisandbox-intro": "Χρησιμοποιήστε αυτήν τη σελίδα για να πειραματιστείτε με το '''API της υπηρεσίας ιστού του MediaWiki'''.\nΑνατρέξτε στην [https://www.mediawiki.org/wiki/API:Main_page τεκμηρίωση του API] για περισσότερες πληροφορίες πάνω στη χρήση του API. Παράδειγμα: [https://www.mediawiki.org/wiki/API#A_simple_example λήψη του περιεχομένου της Αρχικής Σελίδας]. Επιλέξτε μια ενέργεια για να δείτε περισσότερα παραδείγματα.\n\nΝα σημειωθεί ότι, παρόλο που αυτό εδώ είναι αμμοδοχείο, οι ενέργειες που εκτελείτε σε αυτήν τη σελίδα μπορούν να τροποποιήσουν το wiki.",
+       "apisandbox-intro": "Χρησιμοποιήστε αυτήν τη σελίδα για να πειραματιστείτε με το <strong>API της υπηρεσίας ιστού του MediaWiki</strong>.\nΑνατρέξτε στην [[mw:API:Main page|τεκμηρίωση του API]] για περισσότερες πληροφορίες πάνω στη χρήση του API. \nΠαράδειγμα: [https://www.mediawiki.org/wiki/API#A_simple_example λήψη του περιεχομένου της Αρχικής Σελίδας]. Επιλέξτε κάποια ενέργεια για να δείτε περισσότερα παραδείγματα.\n\nΝα σημειωθεί ότι, παρόλο που αυτό εδώ είναι αμμοδοχείο, οι ενέργειες που εκτελείτε σε αυτήν τη σελίδα μπορούν να τροποποιήσουν το wiki.",
        "apisandbox-unfullscreen": "Εμφάνιση της σελίδας",
        "apisandbox-submit": "Υποβολή του αιτήματος",
        "apisandbox-reset": "Εκκαθάριση",
        "changecontentmodel-cannot-convert": "Το περιεχόμενο του [[:$1]] δεν μπορεί να μετατραπεί σε τύπο $2.",
        "changecontentmodel-nodirectediting": "Το μοντέλο περιεχομένου $1 δεν υποστηρίζει την άμεση επεξεργασία",
        "log-name-contentmodel": "Αρχείο καταγραφής αλλαγών μοντέλου περιεχομένου",
-       "log-description-contentmodel": "ΣÏ\85μβάνÏ\84α Ï\80οÏ\85 Ï\83Ï\87εÏ\84ίζονÏ\84αι Î¼Îµ Ï\84α Î¼Î¿Î½Ï\84έλα Ï\80εÏ\81ιεÏ\87ομένοÏ\85 Î¼Î¹Î±Ï\82 Ï\83ελίδαÏ\82",
+       "log-description-contentmodel": "Î\91Ï\85Ï\84ή Î· Ï\83ελίδα Ï\80εÏ\81ιέÏ\87ει Î±Î»Î»Î±Î³Î­Ï\82 Ï\83Ï\84ο Î¼Î¿Î½Ï\84έλο Ï\80εÏ\81ιεÏ\87ομένοÏ\85 Ï\84Ï\89ν Ï\83ελίδÏ\89ν, ÎºÎ±Î¹ Ï\84ιÏ\82 Ï\83ελίδεÏ\82 Ï\80οÏ\85 Î´Î·Î¼Î¹Î¿Ï\85Ï\81γήθηκαν Î¼Îµ Î¼Î¿Î½Ï\84έλο Ï\80εÏ\81ιεÏ\87ομένοÏ\85 Î´Î¹Î±Ï\86οÏ\81εÏ\84ικÏ\8c Î±Ï\80Ï\8c Ï\84ο Ï\80Ï\81οεÏ\80ιλεγμένο.",
        "logentry-contentmodel-change": "{{GENDER:$2|Ο|Η}} $1 άλλαξε το πρότυπο περιεχομένου της σελίδας $3 από «$4» σε «$5»",
        "logentry-contentmodel-change-revertlink": "αναστροφή",
        "logentry-contentmodel-change-revert": "αναστροφή",
        "anonymous": "{{PLURAL:$1|Ανώνυμος χρήστης|Ανώνυμοι χρήστες}} του {{SITENAME}}",
        "siteuser": "{{SITENAME}} χρήστης $1",
        "anonuser": "ανώνυμος χρήστης $1 του {{SITENAME}}",
-       "lastmodifiedatby": "Η σελίδα αυτή τροποποιήθηκε τελευταία φορά στις  $2, $1 από το χρήστη $3.",
+       "lastmodifiedatby": "Η σελίδα αυτή τροποποιήθηκε τελευταία φορά στις $2, στις $1 από το χρήστη $3.",
        "othercontribs": "Βασισμένο στη δουλειά του/των $1",
        "others": "άλλοι",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|χρηστής|χρήστες}} του ιστοχώρου $1",
        "confirmrecreate": "{{GENDER:$1|Ο χρήστης|Η χρήστρια}} [[User:$1|$1]] ([[User talk:$1|συζήτηση]]) διέγραψε αυτήν τη σελίδα αφότου ξεκινήσατε την επεξεργασία με αιτιολόγηση:\n: <em>$2</em>\nΠαρακαλούμε επιβεβαιώστε ότι θέλετε πραγματικά να ξαναδημιουργήσετε αυτήν τη σελίδα.",
        "confirmrecreate-noreason": "{{GENDER:$1|Ο χρήστης|Η χρήστρια}} [[User:$1|$1]] ([[User talk:$1|συζήτηση]]) διέγραψε αυτήν τη σελίδα αφότου ξεκινήσατε την επεξεργασία.\nΠαρακαλούμε επιβεβαιώστε ότι θέλετε πραγματικά να ξαναδημιουργήσετε αυτήν τη σελίδα.",
        "recreate": "Αναδημιουργία",
+       "confirm-purge-title": "Καθάρισε αυτή την σελίδα",
        "confirm_purge_button": "Εντάξει",
        "confirm-purge-top": "Να απαλειφθεί η προσωρινή μνήμη αυτής της σελίδας;",
        "confirm-purge-bottom": "Ο καθαρισμός σελίδας απαλείφει την προσωρινή μνήμη και εξαναγκάζει την πλέον πρόσφατη αναθεώρηση να εμφανιστεί.",
        "htmlform-user-not-valid": "Το <strong>$1</strong> δεν είναι έγκυρο όνομα χρήστη.",
        "logentry-delete-delete": "{{GENDER:$2|Ο|Η}} $1 διέγραψε τη σελίδα $3",
        "logentry-delete-delete_redir": "{{GENDER:$2|Ο|Η}} $1 διέγραψε την ανακατεύθυνση $3 με αντικατάσταση",
-       "logentry-delete-restore": "Ο/Η $1 αποκατέστησε τη σελίδα $3",
+       "logentry-delete-restore": "{{GENDER:$1|Ο|Η}} $1 αποκατέστησε τη σελίδα $3 ($4)",
        "logentry-delete-event": "{{GENDER:$2|Ο|Η}} $1 άλλαξε την ορατότητα {{PLURAL:$5|ενός καταγραφόμενου συμβάντος|$5 καταγραφόμενων συμβάντων}} στο $3: $4",
        "logentry-delete-revision": "{{GENDER:$2|Ο|Η}} $1 άλλαξε την ορατότητα {{PLURAL:$5|μίας αναθεώρησης|$5 αναθεωρήσεων}} στη σελίδα $3: $4",
        "logentry-delete-event-legacy": "{{GENDER:$2|Ο|Η}} $1 άλλαξε την ορατότητα των καταγραφόμενων συμβάντων στη σελίδα $3",
index 23bfebe..53f98f9 100644 (file)
        "rclistfrom": "Show new changes starting from $2, $3",
        "rcshowhidebots": "$1 bots",
        "rcshowhideliu": "$1 registered users",
-       "rclinks": "Show last $1 changes in last $2 days<br />$3",
+       "rclinks": "Show last $1 changes in last $2 days",
        "diff": "diff",
        "hist": "hist",
        "minoreditletter": "m",
index 9ab562b..145cf2f 100644 (file)
        "anontalk": "Talk",
        "navigation": "Navigation",
        "and": "&#32;and",
-       "qbfind": "Find",
-       "qbbrowse": "Browse",
-       "qbedit": "Edit",
-       "qbpageoptions": "This page",
-       "qbmyoptions": "My pages",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "sitetitle": "{{SITENAME}}",
        "sitesubtitle": "",
        "actions": "Actions",
        "edit-local": "Edit local description",
        "create": "Create",
        "create-local": "Add local description",
-       "editthispage": "Edit this page",
-       "create-this-page": "Create this page",
        "delete": "Delete",
-       "deletethispage": "Delete this page",
-       "undeletethispage": "Undelete this page",
        "undelete_short": "Undelete {{PLURAL:$1|one edit|$1 edits}}",
        "viewdeleted_short": "View {{PLURAL:$1|one deleted edit|$1 deleted edits}}",
        "protect": "Protect",
        "protect_change": "change",
-       "protectthispage": "Protect this page",
        "unprotect": "Change protection",
-       "unprotectthispage": "Change protection of this page",
        "newpage": "New page",
-       "talkpage": "Discuss this page",
        "talkpagelinktext": "talk",
        "specialpage": "Special page",
        "personaltools": "Personal tools",
        "addsection": "+",
-       "articlepage": "View content page",
        "talk": "Discussion",
        "views": "Views",
        "toolbox": "Tools",
        "tool-link-userrights": "Change {{GENDER:$1|user}} groups",
        "tool-link-userrights-readonly": "View {{GENDER:$1|user}} groups",
        "tool-link-emailuser": "Email this {{GENDER:$1|user}}",
-       "userpage": "View user page",
-       "projectpage": "View project page",
        "imagepage": "View file page",
        "mediawikipage": "View message page",
        "templatepage": "View template page",
        "redirectpagesub": "Redirect page",
        "redirectto": "Redirect to:",
        "talkpageheader": "-",
-       "lastmodifiedat": "This page was last modified on $1, at $2.",
+       "lastmodifiedat": "This page was last edited on $1, at $2.",
        "viewcount": "This page has been accessed {{PLURAL:$1|once|$1 times}}.",
        "protectedpage": "Protected page",
        "jumpto": "Jump to:",
        "preview": "Preview",
        "showpreview": "Show preview",
        "showdiff": "Show changes",
-       "blankarticle": "<strong>Warning:</strong> The page you are creating is blank.\nIf you click \"{{int:savearticle}}\" again, the page will be created without any content.",
+       "blankarticle": "<strong>Warning:</strong> The page you are creating is blank.\nIf you click \"$1\" again, the page will be created without any content.",
        "anoneditwarning": "<strong>Warning:</strong> You are not logged in. Your IP address will be publicly visible if you make any edits. If you <strong>[$1 log in]</strong> or <strong>[$2 create an account]</strong>, your edits will be attributed to your username, along with other benefits.",
        "anonpreviewwarning": "<em>You are not logged in. Saving will record your IP address in this page's edit history.</em>",
-       "missingsummary": "<strong>Reminder:</strong> You have not provided an edit summary.\nIf you click \"{{int:savearticle}}\" again, your edit will be saved without one.",
-       "selfredirect": "<strong>Warning:</strong> You are redirecting this page to itself.\nYou may have specified the wrong target for the redirect, or you may be editing the wrong page.\nIf you click \"{{int:savearticle}}\" again, the redirect will be created anyway.",
+       "missingsummary": "<strong>Reminder:</strong> You have not provided an edit summary.\nIf you click \"$1\" again, your edit will be saved without one.",
+       "selfredirect": "<strong>Warning:</strong> You are redirecting this page to itself.\nYou may have specified the wrong target for the redirect, or you may be editing the wrong page.\nIf you click \"$1\" again, the redirect will be created anyway.",
        "missingcommenttext": "Please enter a comment below.",
-       "missingcommentheader": "<strong>Reminder:</strong> You have not provided a subject for this comment.\nIf you click \"{{int:savearticle}}\" again, your edit will be saved without one.",
+       "missingcommentheader": "<strong>Reminder:</strong> You have not provided a subject for this comment.\nIf you click \"$1\" again, your edit will be saved without one.",
        "summary-preview": "Preview of edit summary:",
        "subject-preview": "Preview of subject:",
        "previewerrortext": "An error occurred while attempting to preview your changes.",
        "editingcomment": "Editing $1 (new section)",
        "editconflict": "Edit conflict: $1",
        "editnotice-notext": "-",
-       "explainconflict": "Someone else has changed this page since you started editing it.\nThe upper text area contains the page text as it currently exists.\nYour changes are shown in the lower text area.\nYou will have to merge your changes into the existing text.\n<strong>Only</strong> the text in the upper text area will be saved when you press \"{{int:savearticle}}\".",
+       "explainconflict": "Someone else has changed this page since you started editing it.\nThe upper text area contains the page text as it currently exists.\nYour changes are shown in the lower text area.\nYou will have to merge your changes into the existing text.\n<strong>Only</strong> the text in the upper text area will be saved when you press \"$1\".",
        "yourtext": "Your text",
        "storedversion": "Stored revision",
        "nonunicodebrowser": "<strong>Warning: Your browser is not Unicode compliant.</strong>\nA workaround is in place to allow you to safely edit pages: Non-ASCII characters will appear in the edit box as hexadecimal codes.",
        "search-file-match": "(matches file content)",
        "search-suggest": "Did you mean: $1",
        "search-rewritten": "Showing results for $1. Search instead for $2.",
-       "search-interwiki-caption": "Sister projects",
+       "search-interwiki-caption": "Results from sister projects",
        "search-interwiki-default": "Results from $1:",
        "search-interwiki-custom": "",
        "search-interwiki-more": "(more)",
        "action-deletechangetags": "delete tags from the database",
        "action-purge": "purge this page",
        "nchanges": "$1 {{PLURAL:$1|change|changes}}",
+       "ntimes": "$1×",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|since last visit}}",
        "enhancedrc-history": "history",
        "recentchanges": "Recent changes",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "Show",
        "rcfilters-activefilters": "Active filters",
+       "rcfilters-quickfilters": "Saved filter settings",
+       "rcfilters-quickfilters-placeholder-title": "No links saved yet",
+       "rcfilters-quickfilters-placeholder-description": "To save your filter settings and reuse them later, click the bookmark icon in the Active Filter area, below.",
+       "rcfilters-savedqueries-defaultlabel": "Saved filters",
+       "rcfilters-savedqueries-rename": "Rename",
+       "rcfilters-savedqueries-setdefault": "Set as default",
+       "rcfilters-savedqueries-unsetdefault": "Remove as default",
+       "rcfilters-savedqueries-remove": "Remove",
+       "rcfilters-savedqueries-new-name-label": "Name",
+       "rcfilters-savedqueries-apply-label": "Save settings",
+       "rcfilters-savedqueries-cancel-label": "Cancel",
+       "rcfilters-savedqueries-add-new-title": "Save current filter settings",
        "rcfilters-restore-default-filters": "Restore default filters",
        "rcfilters-clear-all-filters": "Clear all filters",
        "rcfilters-search-placeholder": "Filter recent changes (browse or start typing)",
        "rcfilters-filter-unregistered-label": "Unregistered",
        "rcfilters-filter-unregistered-description": "Editors who aren’t logged in.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "This filter conflicts with the following Experience {{PLURAL:$2|filter|filters}}, which {{PLURAL:$2|finds|find}} only registered users: $1",
-       "rcfilters-filtergroup-authorship": "Edit authorship",
-       "rcfilters-filter-editsbyself-label": "Your own edits",
-       "rcfilters-filter-editsbyself-description": "Edits by you.",
-       "rcfilters-filter-editsbyother-label": "Edits by others",
-       "rcfilters-filter-editsbyother-description": "Edits created by other users (not you).",
+       "rcfilters-filtergroup-authorship": "Contribution authorship",
+       "rcfilters-filter-editsbyself-label": "Changes by you",
+       "rcfilters-filter-editsbyself-description": "Your own contributions.",
+       "rcfilters-filter-editsbyother-label": "Changes by others",
+       "rcfilters-filter-editsbyother-description": "All changes except your own.",
        "rcfilters-filtergroup-userExpLevel": "Experience level (for registered users only)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Experience filters find only registered users, so this filter conflicts with the “Unregistered” filter.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "The \"Unregistered\" filter conflicts with one or more Experience filters, which find registered users only. The conflicting filters are marked in the Active Filters area, above.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Newcomers",
        "rcfilters-filter-user-experience-level-newcomer-description": "Fewer than 10 edits and 4 days of activity.",
        "rcfilters-filter-user-experience-level-learner-label": "Learners",
-       "rcfilters-filter-user-experience-level-learner-description": "More days of activity and edits than \"Newcomers\" but fewer than \"Experienced users\".",
+       "rcfilters-filter-user-experience-level-learner-description": "More experience than \"Newcomers\" but less than \"Experienced users\".",
        "rcfilters-filter-user-experience-level-experienced-label": "Experienced users",
        "rcfilters-filter-user-experience-level-experienced-description": "More than 30 days of activity and 500 edits.",
        "rcfilters-filtergroup-automated": "Automated contributions",
        "rcfilters-filter-minor-description": "Edits the author labeled as minor.",
        "rcfilters-filter-major-label": "Non-minor edits",
        "rcfilters-filter-major-description": "Edits not labeled as minor.",
+       "rcfilters-filtergroup-watchlist": "Watchlisted pages",
+       "rcfilters-filter-watchlist-watched-label": "On Watchlist",
+       "rcfilters-filter-watchlist-watched-description": "Changes to pages on your Watchlist.",
+       "rcfilters-filter-watchlist-watchednew-label": "New Watchlist changes",
+       "rcfilters-filter-watchlist-watchednew-description": "Changes to Watchlisted pages you haven't visited since the changes occurred.",
+       "rcfilters-filter-watchlist-notwatched-label": "Not on Watchlist",
+       "rcfilters-filter-watchlist-notwatched-description": "Everything except changes to your Watchlisted pages.",
        "rcfilters-filtergroup-changetype": "Type of change",
        "rcfilters-filter-pageedits-label": "Page edits",
-       "rcfilters-filter-pageedits-description": "Edits to wiki content, discussions, category descriptions....",
+       "rcfilters-filter-pageedits-description": "Edits to wiki content, discussions, category descriptions",
        "rcfilters-filter-newpages-label": "Page creations",
        "rcfilters-filter-newpages-description": "Edits that make new pages.",
        "rcfilters-filter-categorization-label": "Category changes",
        "rcfilters-filter-categorization-description": "Records of pages being added or removed from categories.",
        "rcfilters-filter-logactions-label": "Logged actions",
-       "rcfilters-filter-logactions-description": "Administrative actions, account creations, page deletions, uploads....",
-       "rcfilters-hideminor-conflicts-typeofchange-global": "The \"Minor edits\" filter conflicts with one or more Type of Change filters, because certain types of change cannot be designated as \"minor.\" The conflicting filters are marked in the Active Filters area, above.",
-       "rcfilters-hideminor-conflicts-typeofchange": "Certain types of change cannot be designated as \"minor,\" so this filter conflicts with the following Type of Change filters: $1",
-       "rcfilters-typeofchange-conflicts-hideminor": "This Type of Change filter conflicts with the \"Minor Edits\" filter. Certain types of change cannot be designated as \"minor.\"",
+       "rcfilters-filter-logactions-description": "Administrative actions, account creations, page deletions, uploads…",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "The \"Minor edits\" filter conflicts with one or more Type of change filters, because certain types of change cannot be designated as \"minor\". The conflicting filters are marked in the Active filters area, above.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Certain types of change cannot be designated as \"minor\", so this filter conflicts with the following Type of Change filters: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "This Type of change filter conflicts with the \"Minor edits\" filter. Certain types of change cannot be designated as \"minor\".",
+       "rcfilters-filtergroup-lastRevision": "Last revision",
+       "rcfilters-filter-lastrevision-label": "Last revision",
+       "rcfilters-filter-lastrevision-description": "The most recent change to a page.",
+       "rcfilters-filter-previousrevision-label": "Earlier revisions",
+       "rcfilters-filter-previousrevision-description": "All changes that are not the most recent change to a page.",
+       "rcfilters-filter-excluded": "Excluded",
+       "rcfilters-tag-prefix-namespace": ":$1",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
+       "rcfilters-tag-prefix-tags": "#$1",
+       "rcfilters-view-tags": "Tags",
        "rcnotefrom": "Below {{PLURAL:$5|is the change|are the changes}} since <strong>$3, $4</strong> (up to <strong>$1</strong> shown).",
        "rclistfromreset": "Reset date selection",
        "rclistfrom": "Show new changes starting from $2, $3",
        "rcshowhidecategorization": "$1 page categorization",
        "rcshowhidecategorization-show": "Show",
        "rcshowhidecategorization-hide": "Hide",
-       "rclinks": "Show last $1 changes in last $2 days<br />$3",
+       "rclinks": "Show last $1 changes in last $2 days",
        "diff": "diff",
        "hist": "hist",
        "hide": "Hide",
        "apisandbox-sending-request": "Sending API request...",
        "apisandbox-loading-results": "Receiving API results...",
        "apisandbox-results-error": "An error occurred while loading the API query response: $1.",
+       "apisandbox-results-login-suppressed": "This request has been processed as a logged-out user as it could be used to bypass browser Same-Origin security. Note that the API sandbox's automatic token handling does not work properly with such requests, please fill them in manually.",
        "apisandbox-request-selectformat-label": "Show request data as:",
        "apisandbox-request-format-url-label": "URL query string",
        "apisandbox-request-url-label": "Request URL:",
        "enotif_body_intro_moved": "The {{SITENAME}} page $1 has been {{GENDER:$2|moved}} on $PAGEEDITDATE by $2, see $3 for the current revision.",
        "enotif_body_intro_restored": "The {{SITENAME}} page $1 has been {{GENDER:$2|restored}} on $PAGEEDITDATE by $2, see $3 for the current revision.",
        "enotif_body_intro_changed": "The {{SITENAME}} page $1 has been {{GENDER:$2|changed}} on $PAGEEDITDATE by $2, see $3 for the current revision.",
-       "enotif_lastvisited": "See $1 for all changes since your last visit.",
-       "enotif_lastdiff": "See $1 to view this change.",
+       "enotif_lastvisited": "For all changes since your last visit, see $1",
+       "enotif_lastdiff": "To view this change, see $1",
        "enotif_anon_editor": "anonymous user $1",
        "enotif_body": "Dear $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nEditor's summary: $PAGESUMMARY $PAGEMINOREDIT\n\nContact the editor:\nmail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nThere will be no other notifications in case of further activity unless you visit this page while logged in. You could also reset the notification flags for all your watched pages on your watchlist.\n\nYour friendly {{SITENAME}} notification system\n\n--\nTo change your email notification settings, visit\n{{canonicalurl:{{#special:Preferences}}}}\n\nTo change your watchlist settings, visit\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nTo delete the page from your watchlist, visit\n$UNWATCHURL\n\nFeedback and further assistance:\n$HELPPAGE",
        "created": "created",
        "sp-contributions-uploads": "uploads",
        "sp-contributions-logs": "logs",
        "sp-contributions-talk": "talk",
-       "sp-contributions-userrights": "user rights management",
+       "sp-contributions-userrights": "{{GENDER:$1|user}} rights management",
        "sp-contributions-blocked-notice": "This user is currently blocked.\nThe latest block log entry is provided below for reference:",
        "sp-contributions-blocked-notice-anon": "This IP address is currently blocked.\nThe latest block log entry is provided below for reference:",
        "sp-contributions-search": "Search for contributions",
        "autoblocklist-submit": "Search",
        "autoblocklist-legend": "List autoblocks",
        "autoblocklist-localblocks": "Local {{PLURAL:$1|autoblock|autoblocks}}",
+       "autoblocklist-total-autoblocks": "Total number of autoblocks: $1",
        "autoblocklist-empty": "The autoblock list is empty.",
        "autoblocklist-otherblocks": "Other {{PLURAL:$1|autoblock|autoblocks}}",
        "ipblocklist": "Blocked users",
        "accesskey-pt-mycontris": "y",
        "accesskey-pt-anoncontribs": "y",
        "accesskey-pt-login": "o",
+       "accesskey-pt-login-private": "o",
        "accesskey-pt-logout": "",
        "accesskey-pt-createaccount": "",
        "accesskey-ca-talk": "t",
        "tooltip-pt-mycontris": "A list of {{GENDER:|your}} contributions",
        "tooltip-pt-anoncontribs": "A list of edits made from this IP address",
        "tooltip-pt-login": "You are encouraged to log in; however, it is not mandatory",
+       "tooltip-pt-login-private": "You need to log in to use this wiki",
        "tooltip-pt-logout": "Log out",
        "tooltip-pt-createaccount": "You are encouraged to create an account and log in; however, it is not mandatory",
        "tooltip-ca-talk": "Discussion about the content page",
        "anonymous": "Anonymous {{PLURAL:$1|user|users}} of {{SITENAME}}",
        "siteuser": "{{SITENAME}} user $1",
        "anonuser": "{{SITENAME}} anonymous user $1",
-       "lastmodifiedatby": "This page was last modified $2, $1 by $3.",
+       "lastmodifiedatby": "This page was last edited $2, $1 by $3.",
        "othercontribs": "Based on work by $1.",
        "others": "others",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|user}}|users}} $1",
        "newimages-legend": "Filter",
        "newimages-label": "Filename (or a part of it):",
        "newimages-user": "IP address or username",
+       "newimages-newbies": "Show contributions of new accounts only",
        "newimages-showbots": "Show uploads by bots",
        "newimages-hidepatrolled": "Hide patrolled uploads",
+       "newimages-mediatype": "Media type:",
        "noimages": "Nothing to see.",
        "gallery-slideshow-toggle": "Toggle thumbnails",
        "ilsubmit": "Search",
        "autoredircomment": "Redirected page to [[$1]]",
        "autosumm-new": "Created page with \"$1\"",
        "autosumm-newblank": "Created blank page",
-       "autoblock_whitelist": "AOL http://webmaster.info.aol.com/proxyinfo.html\n*64.12.96.0/19\n*149.174.160.0/20\n*152.163.240.0/21\n*152.163.248.0/22\n*152.163.252.0/23\n*152.163.96.0/22\n*152.163.100.0/23\n*195.93.32.0/22\n*195.93.48.0/22\n*195.93.64.0/19\n*195.93.96.0/19\n*195.93.16.0/20\n*198.81.0.0/22\n*198.81.16.0/20\n*198.81.8.0/23\n*202.67.64.128/25\n*205.188.192.0/20\n*205.188.208.0/23\n*205.188.112.0/20\n*205.188.146.144/30\n*207.200.112.0/21",
+       "autoblock_whitelist": "",
        "size-bytes": "$1 {{PLURAL:$1|byte|bytes}}",
        "size-kilobytes": "$1 KB",
        "size-megabytes": "$1 MB",
        "tags-create-reason": "Reason:",
        "tags-create-submit": "Create",
        "tags-create-no-name": "You must specify a tag name.",
-       "tags-create-invalid-chars": "Tag names must not contain commas (<code>,</code>) or forward slashes (<code>/</code>).",
+       "tags-create-invalid-chars": "Tag names must not contain commas (<code>,</code>), pipes (<code>|</code>), or forward slashes (<code>/</code>).",
        "tags-create-invalid-title-chars": "Tag names must not contain characters that cannot be used in page titles.",
        "tags-create-already-exists": "The tag \"$1\" already exists.",
        "tags-create-warnings-above": "The following {{PLURAL:$2|warning was|warnings were}} encountered when attempting to create the tag \"$1\":",
        "mw-widgets-titleinput-description-redirect": "redirect to $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Add a category...",
        "mw-widgets-usersmultiselect-placeholder": "Add more...",
+       "date-range-from": "From date:",
+       "date-range-to": "To date:",
        "sessionmanager-tie": "Cannot combine multiple request authentication types: $1.",
        "sessionprovider-generic": "$1 sessions",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "cookie-based sessions",
        "pageid": "page ID $1",
        "rawhtml-notallowed": "&lt;html&gt; tags cannot be used outside of normal pages.",
        "gotointerwiki": "Leaving {{SITENAME}}",
-       "gotointerwiki-invalid": "The specified title was invalid.",
-       "gotointerwiki-external": "You are about to leave {{SITENAME}} to visit [[$2]] which is a separate website.\n\n[$1 Click here to continue on to $1].",
+       "gotointerwiki-invalid": "The specified title is invalid.",
+       "gotointerwiki-external": "You are about to leave {{SITENAME}} to visit [[$2]], which is a separate website.\n\n'''[$1 Continue to $1]'''",
        "undelete-cantedit": "You cannot undelete this page as you are not allowed to edit this page.",
-       "undelete-cantcreate": "You cannot undelete this page as there is no existing page with this name and you are not allowed to create this page."
+       "undelete-cantcreate": "You cannot undelete this page as there is no existing page with this name and you are not allowed to create this page.",
+       "pagedata-title": "Page data",
+       "pagedata-text": "This page provides a data interface to pages. Please provide the page title in the URL, using subpage syntax.\n* Content negotiation applies based on you client's Accept header. This means that the page data will be provided in the format preferred by your client.",
+       "pagedata-not-acceptable": "No matching format found. Supported MIME types: $1",
+       "pagedata-bad-title": "Invalid title: $1."
 }
index 4754332..87a00be 100644 (file)
        "anontalk": "Diskuto",
        "navigation": "Navigado",
        "and": "&#32;kaj",
-       "qbfind": "Serĉi",
-       "qbbrowse": "Foliumi",
-       "qbedit": "Redakti",
-       "qbpageoptions": "Ĉi tiu paĝo",
-       "qbmyoptions": "Miaj paĝoj",
        "faq": "Oftaj demandoj",
-       "faqpage": "Project:Oftaj demandoj",
        "actions": "Agoj",
        "namespaces": "Nomspacoj",
        "variants": "Variantoj",
        "edit-local": "Redakti lokan priskribon",
        "create": "Krei",
        "create-local": "Aldoni lokan priskribon",
-       "editthispage": "Redakti la paĝon",
-       "create-this-page": "Krei ĉi tiun paĝon",
        "delete": "Forigi",
-       "deletethispage": "Forigi ĉi tiun paĝon",
-       "undeletethispage": "Restarigi tiun ĉi paĝon",
        "undelete_short": "Malforigi {{PLURAL:$1|redakton|$1 redaktojn}}",
        "viewdeleted_short": "Vidi {{PLURAL:$1|unu forigitan redakton|$1 forigitajn redaktojn}}",
        "protect": "Protekti",
        "protect_change": "ŝanĝi",
-       "protectthispage": "Protekti la paĝon",
        "unprotect": "Ŝanĝi protekton",
-       "unprotectthispage": "Ŝanĝi protekton de ĉi tiu paĝo",
        "newpage": "Nova paĝo",
-       "talkpage": "Diskuti la paĝon",
        "talkpagelinktext": "diskuto",
        "specialpage": "Speciala paĝo",
        "personaltools": "Personaj iloj",
-       "articlepage": "Vidi enhavan paĝon",
        "talk": "Diskuto",
        "views": "Vidoj",
        "toolbox": "Iloj",
        "tool-link-userrights": "Ŝanĝi grupojn de ĉi tiu {{GENDER:$1|uzanto}}",
        "tool-link-userrights-readonly": "Vidi grupojn de {{GENDER:$1|uzanto}}",
        "tool-link-emailuser": "Sendi retpoŝton al ĉi tiu {{GENDER:$1|uzanto}}",
-       "userpage": "Vidi uzantopaĝon",
-       "projectpage": "Rigardi projektopaĝon",
        "imagepage": "Vidi dosieropaĝon",
        "mediawikipage": "Vidi mesaĝopaĝon",
        "templatepage": "Vidi ŝablonopaĝon",
        "preview": "Antaŭrigardo",
        "showpreview": "Antaŭrigardo",
        "showdiff": "Montri ŝanĝojn",
-       "blankarticle": "<strong>Atentigo:</strong>La paĝo kiun vi kreas estas malplena.\nSe vi denove klakos al \"{{int:savearticle}}\" la paĝo estos konservita sen enhavo.",
+       "blankarticle": "<strong>Atentigo:</strong>La paĝo kiun vi kreas estas malplena.\nSe vi denove klakos al \"$1\" la paĝo estos konservita sen enhavo.",
        "anoneditwarning": "<strong>Averto:</strong> Vi ne estas ensalutinta.\nVia IP-adreso enregistriĝos en la redakta historio de tiu ĉi paĝo. Se vi <strong>[$1 ensalutas]</strong> aŭ <strong>[$2 kreas konton]</strong>, viaj redaktoj estos atribuitaj al via salutnomo, kune kun aliaj bonaĵoj.",
        "anonpreviewwarning": "''Vi ne estas ensalutita. La konservo de la paĝo registros vian IP-adreson en redakta historio de ĉi tiu paĝo.''",
        "missingsummary": "'''Rememorigilo:''' Vi ne provizis redaktan resumon. Se vi alklakos denove la konservan butonon, via redaktaĵo estos konservita sen resumo.",
-       "selfredirect": "<strong>Atentigo:</strong> Ve alidirektas tiun ĉi paĝon al ĝi mem. Vi eble volas difini alian celan paĝon aŭ vi volas redakti alian paĝon.\nSe vi denove klakos al \"{{int:savearticle}}\", la alidirektilo estos ĉiuokaze kreita.",
+       "selfredirect": "<strong>Atentigo:</strong> Ve alidirektas tiun ĉi paĝon al ĝi mem. Vi eble volas difini alian celan paĝon aŭ vi volas redakti alian paĝon.\nSe vi denove klakos al \"$1\", la alidirektilo estos ĉiuokaze kreita.",
        "missingcommenttext": "Bonvolu entajpi komenton malsupre.",
        "missingcommentheader": "<strong>Atenton:</strong> Vi ne provizis temon aŭ subtitolon por ĉi tiu komento.\nSe vi klakos \"Konservi\" denove, via redakto estos konservita sen ĝi.",
        "summary-preview": "Resuma antaŭrigardo:",
        "editingsection": "Redaktante $1 (sekcion)",
        "editingcomment": "Redaktante $1 (nova sekcio)",
        "editconflict": "Redakta konflikto: $1",
-       "explainconflict": "Iu alia ŝanĝis la paĝon post kiam vi ekredaktis.\nLa supra tekstujo enhavas la aktualan tekston de la artikolo.\nViaj ŝanĝoj estas en la malsupra tekstujo.\nVi devas mem kunfandi viajn ŝanĝojn kaj la jaman tekston.\n'''Nur''' la teksto en la supra tekstujo estos konservita kiam vi alklakos \"{{int:savearticle}}\".",
+       "explainconflict": "Iu alia ŝanĝis la paĝon post kiam vi ekredaktis.\nLa supra tekstujo enhavas la aktualan tekston de la artikolo.\nViaj ŝanĝoj estas en la malsupra tekstujo.\nVi devas mem kunfandi viajn ŝanĝojn kaj la jaman tekston.\n'''Nur''' la teksto en la supra tekstujo estos konservita kiam vi alklakos \"$1\".",
        "yourtext": "Via teksto",
        "storedversion": "Registrita versio",
        "nonunicodebrowser": "'''ATENTU: Via foliumilo ne eltenas unikodon, bonvolu ŝanĝi ĝin antaŭ ol redakti artikolon.'''",
        "page_first": "unua",
        "page_last": "lasta",
        "histlegend": "Klarigo: (nuna) = vidu malsamojn kompare kun la nuna versio, (antaŭa) = malsamojn kompare kun la antaŭa versio, <strong>E</strong> = malgranda redakteto",
-       "history-fieldset-title": "Traserĉi historion",
+       "history-fieldset-title": "Serĉi versiojn",
        "history-show-deleted": "Nur forigitaĵoj",
        "histfirst": "plej malnova",
        "histlast": "plej nova",
        "rcshowhidecategorization": "$1 kategoriigon de paĝoj",
        "rcshowhidecategorization-show": "Montri",
        "rcshowhidecategorization-hide": "Kaŝi",
-       "rclinks": "Montri $1 lastajn ŝanĝojn dum la $2 lastaj tagoj.<br />$3",
+       "rclinks": "Montri $1 lastajn ŝanĝojn dum la $2 lastaj tagoj.",
        "diff": "malsamoj",
        "hist": "historio",
        "hide": "Kaŝi",
        "uploadnewversion-linktext": "Alŝuti novan version de ĉi tiu dosiero",
        "shared-repo-from": "de $1",
        "shared-repo": "komuna dosierujo",
+       "shared-repo-name-wikimediacommons": "Vikimedia Komunejo",
        "upload-disallowed-here": "Vi ne povas superskribi ĉi tiun bildon.",
        "filerevert": "Restarigi $1",
        "filerevert-legend": "Restarigi dosieron",
        "htmlform-user-not-valid": "<strong>$1</strong> ne estas valida salutnomo.",
        "logentry-delete-delete": "$1 forigis paĝon $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|forigis}} alidirektitan $3 per anstataŭigado",
-       "logentry-delete-restore": "$1 restarigis paĝon $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|restarigis}} paĝon $3 ($4)",
        "logentry-delete-event": "$1 ŝ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",
diff --git a/languages/i18n/es-formal.json b/languages/i18n/es-formal.json
new file mode 100644 (file)
index 0000000..a86ccea
--- /dev/null
@@ -0,0 +1,325 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Baffo",
+                       "Dalton2",
+                       "Fitoschido",
+                       "Macofe",
+                       "MarcoAurelio",
+                       "XanaG"
+               ]
+       },
+       "tog-underline": "Subrayado de enlaces:",
+       "tog-hideminor": "Ocultar ediciones menores de los cambios recientes",
+       "tog-hidepatrolled": "Ocultar ediciones patrulladas de los cambios recientes",
+       "tog-newpageshidepatrolled": "Ocultar páginas patrulladas de la lista de páginas nuevas",
+       "tog-showtoolbar": "Mostrar barra de edición",
+       "tog-ccmeonemails": "Enviarme una copia de los correos electrónicos que yo envíe a otros usuarios",
+       "sunday": "domingo",
+       "monday": "lunes",
+       "tuesday": "martes",
+       "wednesday": "miércoles",
+       "thursday": "jueves",
+       "friday": "viernes",
+       "saturday": "sábado",
+       "sun": "dom.",
+       "mon": "lun.",
+       "tue": "mar.",
+       "wed": "mié.",
+       "thu": "jue.",
+       "fri": "vie.",
+       "sat": "sáb.",
+       "january": "enero",
+       "february": "febrero",
+       "march": "marzo",
+       "april": "abril",
+       "may_long": "mayo",
+       "june": "junio",
+       "july": "julio",
+       "august": "agosto",
+       "september": "septiembre",
+       "october": "octubre",
+       "november": "noviembre",
+       "december": "diciembre",
+       "january-gen": "enero",
+       "february-gen": "febrero",
+       "march-gen": "marzo",
+       "april-gen": "abril",
+       "may-gen": "mayo",
+       "june-gen": "junio",
+       "july-gen": "julio",
+       "august-gen": "agosto",
+       "september-gen": "septiembre",
+       "october-gen": "octubre",
+       "november-gen": "noviembre",
+       "december-gen": "diciembre",
+       "jan": "enero",
+       "feb": "febrero",
+       "mar": "marzo",
+       "apr": "abril",
+       "may": "mayo",
+       "jun": "junio",
+       "jul": "julio",
+       "aug": "agosto",
+       "sep": "septiembre",
+       "oct": "octubre",
+       "nov": "noviembre",
+       "dec": "diciembre",
+       "january-date": "$1 de enero",
+       "february-date": "$1 de febrero",
+       "march-date": "$1 de marzo",
+       "april-date": "$1 de abril",
+       "may-date": "$1 de mayo",
+       "june-date": "$1 de junio",
+       "july-date": "$1 de julio",
+       "august-date": "$1 de agosto",
+       "september-date": "$1 de septiembre",
+       "october-date": "$1 de octubre",
+       "november-date": "$1 de noviembre",
+       "december-date": "$1 de diciembre",
+       "pagecategories": "{{PLURAL:$1|Categoría|Categorías}}",
+       "category_header": "Páginas en la categoría «$1»",
+       "subcategories": "Subcategorías",
+       "category-media-header": "Archivos multimedia en la categoría «$1»",
+       "about": "Acerca de",
+       "article": "Página de contenido",
+       "newwindow": "(se abre en una ventana nueva)",
+       "cancel": "Cancelar",
+       "moredotdotdot": "Más…",
+       "morenotlisted": "Esta lista no está completa.",
+       "mypage": "Página",
+       "mytalk": "Discusión",
+       "anontalk": "Discusión para esta IP",
+       "navigation": "Navegación",
+       "and": "&#32;y",
+       "faq": "PP. FF.",
+       "actions": "Acciones",
+       "namespaces": "Espacios de nombres",
+       "variants": "Variantes",
+       "navigation-heading": "Menú de navegación",
+       "errorpagetitle": "Error",
+       "returnto": "Volver a $1.",
+       "tagline": "De {{SITENAME}}",
+       "help": "Ayuda",
+       "search": "Buscar",
+       "searchbutton": "Buscar",
+       "go": "Ir",
+       "searcharticle": "Ir",
+       "history": "Historial de página",
+       "history_short": "Historial",
+       "printableversion": "Versión para imprimir",
+       "permalink": "Enlace permanente",
+       "print": "Imprimir",
+       "view": "Ver",
+       "view-foreign": "Ver en $1",
+       "edit": "Editar",
+       "edit-local": "Editar descripción local",
+       "create": "Crear",
+       "create-local": "Añadir descripción local",
+       "talkpagelinktext": "Discusión",
+       "personaltools": "Herramientas personales",
+       "talk": "Discusión",
+       "views": "Vistas",
+       "toolbox": "Herramientas",
+       "otherlanguages": "Otros idiomas",
+       "lastmodifiedat": "Esta página fue modificada por última vez el $1, a las $2.",
+       "protectedpage": "Página protegida",
+       "jumpto": "Saltar a:",
+       "jumptonavigation": "navegación",
+       "jumptosearch": "buscar",
+       "view-pool-error": "Lo sentimos, los servidores están sobrecargados en este momento.\nDemasiados usuarios están intentando ver esta página.\nPor favor espere unos instantes antes de reintentar acceder nuevamente a esta página.\n\n$1",
+       "aboutsite": "Acerca de {{SITENAME}}",
+       "aboutpage": "Project:Acerca de",
+       "currentevents": "Actualidad",
+       "currentevents-url": "Project:Actualidad",
+       "disclaimers": "Avisos legales",
+       "disclaimerpage": "Project:Limitación general de responsabilidad",
+       "helppage-top-gethelp": "Ayuda",
+       "mainpage": "Página Principal",
+       "mainpage-description": "Página principal",
+       "policy-url": "Project:Política",
+       "portal": "Portal de la comunidad",
+       "portal-url": "Project:Portal de la comunidad",
+       "privacy": "Política de protección de datos",
+       "privacypage": "Project:Política de protección de datos",
+       "badaccess": "Error de permisos",
+       "badaccess-group0": "No tiene permiso para ejecutar la acción que ha solicitado.",
+       "badaccess-groups": "La acción que ha solicitado está limitada {{PLURAL:$2|al grupo|a uno de estos $2 grupos}}: $1.",
+       "versionrequired": "Se necesita por lo menos la versión $1 de MediaWiki",
+       "ok": "Aceptar",
+       "retrievedfrom": "Obtenido de «$1»",
+       "youhavenewmessages": "Tiene usted $1 ($2).",
+       "youhavenewmessagesmulti": "Tienes mensajes nuevos en $1",
+       "editsection": "editar",
+       "editold": "editar",
+       "viewsourceold": "ver código",
+       "editlink": "editar",
+       "viewsourcelink": "ver código",
+       "editsectionhint": "Editar sección: $1",
+       "toc": "Sumario",
+       "showtoc": "mostrar",
+       "hidetoc": "ocultar",
+       "collapsible-collapse": "Contraer",
+       "collapsible-expand": "Expandir",
+       "confirmable-confirm": "¿Está {{GENDER:$1|seguro|segura}}?",
+       "confirmable-yes": "Sí",
+       "confirmable-no": "No",
+       "site-atom-feed": "Feed Atom de $1",
+       "page-rss-feed": "Canal RSS «$1»",
+       "page-atom-feed": "Canal Atom «$1»",
+       "red-link-title": "$1 (la página no existe)",
+       "nstab-main": "Página",
+       "nstab-special": "Página especial",
+       "nstab-image": "Archivo",
+       "nstab-mediawiki": "Mensaje",
+       "nstab-template": "Plantilla",
+       "nstab-help": "Página de ayuda",
+       "nstab-category": "Categoría",
+       "nosuchactiontext": "La acción especificada en la dirección es inválida.\nEs posible que haya escrito mal la URL o que haya seguido un enlace incorrecto. \nEsto también podría indicar un error en el software utilizado en {{SITENAME}}.",
+       "nospecialpagetext": "<strong>Ha solicitado una página especial inexistente.</strong>\n\nPuede usted ver una lista de las páginas especiales en [[Special:SpecialPages|{{int:specialpages}}]].",
+       "error": "Error",
+       "databaseerror": "Error en la base de datos",
+       "databaseerror-query": "Consulta: $1",
+       "databaseerror-function": "Función: $1",
+       "databaseerror-error": "Error: $1",
+       "laggedslavemode": "<strong>Aviso:</strong> la página puede no contener las actualizaciones más recientes.",
+       "enterlockreason": "Proporcione el motivo del bloqueo, así como una estimación de cuándo se producirá el desbloqueo",
+       "readonlytext": "La base de datos se encuentra actualmente bloqueada y no permite la creación de páginas nuevas y otras modificaciones, probablemente de forma temporal debido al mantenimiento rutinario de la base de datos. Después de esas operaciones el sitio se encontrará nuevamente disponible.\n\nLa razón dada por el administrador que bloqueó la base de datos es la que sigue: $1",
+       "missing-article": "La base de datos no encuentra el texto de una página que debería hallarse, llamada \"$1\" $2.\n\nLa causa de esto suele deberse a un ''diff'' anacrónico o un enlace al historial de una página que ha sido borrada.\n\nSi no fuera el caso, usted puede haber encontrado un fallo en el sistema.\n\nPor favor, avise a un [[Special:ListUsers/sysop|administrador]], tomando nota de la URL.",
+       "internalerror": "Error interno",
+       "internalerror_info": "Error interno: $1",
+       "viewsource": "Ver código",
+       "actionthrottledtext": "Como medida de protección contra el ''spam'', la acción que está realizando está limitada a un número determinado de veces en un periodo corto de tiempo. Usted ha excedido ese límite. Por favor pruebe de nuevo en unos minutos.",
+       "viewsourcetext": "Puede ver y copiar el código fuente de esta página:",
+       "editinginterface": "'''Aviso:''' Está usted editando una página usada para proporcionar texto de interfaz para el software. Los cambios en esta página afectarán a la apariencia de la interfaz para los demás usuarios. Para traducciones, por favor considere usar [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], el proyecto de traducción de MediaWiki.",
+       "welcomeuser": "Le damos la bienvenida, $1.",
+       "welcomecreation-msg": "Se ha creado su cuenta.\nPuede cambiar las [[Special:Preferences|preferencias]] de {{SITENAME}} si lo desea.",
+       "yourname": "Nombre de usuario:",
+       "userlogin-yourname": "Nombre de usuario",
+       "userlogin-yourname-ph": "Escriba su nombre de usuario",
+       "createacct-another-username-ph": "Escriba el nombre de usuario",
+       "yourpassword": "Contraseña:",
+       "userlogin-yourpassword": "Contraseña",
+       "userlogin-yourpassword-ph": "Escriba su contraseña",
+       "createacct-yourpassword-ph": "Escriba una contraseña",
+       "yourpasswordagain": "Escriba la contraseña otra vez:",
+       "createacct-yourpasswordagain": "Confirme la contraseña",
+       "createacct-yourpasswordagain-ph": "Escriba la contraseña otra vez",
+       "login": "Acceder",
+       "nav-login-createaccount": "Iniciar sesión / crear cuenta",
+       "logout": "Desconectar",
+       "userlogout": "Salir",
+       "userlogin-noaccount": "¿No tiene una cuenta?",
+       "userlogin-joinproject": "Únase a {{SITENAME}}",
+       "userlogin-resetpassword-link": "¿Olvidó su contraseña?",
+       "createacct-emailrequired": "Dirección de correo electrónico",
+       "createacct-emailoptional": "Dirección de correo electrónico (opcional)",
+       "anoneditwarning": "'''Aviso:''' No ha iniciado sesión con una cuenta de usuario.\nSu dirección IP se almacenará en el historial de ediciones de la página.",
+       "newarticletext": "Ha seguido usted un enlace a una página que aún no existe.\nPara crear esta página, escriba en el campo a continuación. Para más información, consulte la [$1 página de ayuda].\nSi ha llegado aquí por error, vuelva a la página anterior.",
+       "noarticletext": "En este momento no hay texto en esta página.\nPuede [[Special:Search/{{PAGENAME}}|buscar el título de esta página]] en otras páginas,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar en los registros],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar esta página]</span>.",
+       "copyrightwarning": "Por favor observe que todas las contribuciones realizadas en {{SITENAME}} serán consideradas como liberadas bajo $2 (véase $1 para más detalles).\nSi no desea que sus escritos sean editados o redistribuídos a voluntad, entonces no contribuya aquí.<br />\nAl mismo tiempo está usted prometiendo que lo que usted va a enviar lo ha escrito usted, o copiado de una fuente de dominio público.\n'''¡No envíe textos con derechos de autor sin el debido permiso!'''",
+       "permissionserrorstext-withaction": "No tiene permiso para $2 por {{PLURAL:$1|la|las}} {{PLURAL:$1|siguiente|siguientes}} {{PLURAL:$1|razón|razones}}:",
+       "rev-deleted-text-permission": "Esta revisión de la página ha sido '''borrada'''.\nPuede encontrar detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
+       "rev-deleted-text-unhide": "Esta revisión de página ha sido '''borrada'''.\nPuede haber detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].\nComo administrador todavía puede [$1 ver esta revisión] si así lo desea.",
+       "rev-suppressed-text-unhide": "Esta revisión de la página ha sido '''suprimida'''.\nPuede haber detalles en el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supresiones].\nComo administrador podrá seguir [$1 viendo esta revisión] si desea continuar.",
+       "rev-deleted-text-view": "Esta revisión de la página ha sido '''borrada'''.\nComo administrador puede verla; puede haber detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
+       "rev-suppressed-text-view": "Esta revisión de la página ha sido '''suprimida'''.\nComo administrador puede verla; puede haber detalles en el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supresiones].",
+       "rev-deleted-no-diff": "No puede visualizarse este cambio debido a que las revisiones han sido '''borradas'''.\nPuede haber detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
+       "revdelete-nooldid-text": "No se ha especificado una revisión o revisiones destino sobre las que realizar esta función.",
+       "revdelete-show-file-confirm": "¿Está seguro de que desea ver la revisión borrada del archivo \"<nowiki>$1</nowiki>\" del $2 a las $3?",
+       "revdelete-confirm": "Confirme que quiere realizar la operación, que entiende las consecuencias y que está ejecutando dicha acción acorde con [[{{MediaWiki:Policy-url}}|las políticas]].",
+       "lineno": "Línea $1:",
+       "editundo": "deshacer",
+       "searchresults": "Resultados de la búsqueda",
+       "searchresults-title": "Resultados de la búsqueda de «$1»",
+       "shown-title": "Mostrar $1 {{PLURAL:$1|resultado|resultados}} por página",
+       "search-result-size": "$1 ({{PLURAL:$2|1 palabra|$2 palabras}})",
+       "search-section": "(sección $1)",
+       "search-suggest": "¿Quiso decir: $1?",
+       "newuserlogpage": "Altas de usuarios",
+       "rightslog": "Registro de cambios de permisos de usuarios",
+       "recentchanges": "Cambios recientes",
+       "recentchangeslinked-toolbox": "Cambios relacionados",
+       "recentchangeslinked-summary": "Esta es una lista de cambios efectuados recientemente a páginas enlazadas desde una página dada (o de miembros de una categoría dada).\nLas páginas que se encuentran en tu [[Special:Watchlist|lista de seguimiento]] están en <strong>negritas</strong>.",
+       "upload": "Subir archivo",
+       "filehist-help": "Haga clic sobre una fecha/hora para ver el archivo a esa fecha.",
+       "randompage": "Página aleatoria",
+       "nbytes": "$1 {{PLURAL:$1|byte|bytes}}",
+       "emailuser": "Enviar un correo electrónico a este usuario",
+       "addedwatchtext": "La página «[[:$1]]» ha sido añadida a su [[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í, y la página aparecerá '''en negritas''' en la [[Special:RecentChanges|lista de cambios recientes]] para hacerla más fácil de detectar.\n\nCuando quiera eliminar la página de su lista de seguimiento, presione «Dejar de vigilar» en el menú.",
+       "removedwatchtext": "La página «[[:$1]]» ha sido eliminada de su [[Special:Watchlist|lista de seguimiento]].",
+       "confirmdeletetext": "Está a punto de borrar una página junto con su historial.\nPor favor confirme que desea realizar esto, que entiende las consecuencias y que está realizando esta acción de acuerdo con las [[{{MediaWiki:Policy-url}}|políticas]]",
+       "deletedtext": "\"$1\" ha sido borrado.\nVea $2 para un registro de los borrados recientes.",
+       "rollbacklink": "revertir",
+       "protect-text": "Puede ver y modificar el nivel de protección de la página '''$1'''.",
+       "protect-locked-access": "Su cuenta no tiene permiso para cambiar los niveles de protección de una página.\nA continuación se muestran las opciones actuales de la página '''$1''':",
+       "protect-cascadeon": "Actualmente esta página está protegida porque está incluida en {{PLURAL:$1|la siguiente página|las siguientes páginas}}, que tienen activada la opción de protección en cascada. Puede cambiar el nivel de protección de esta página, pero no afectará a la protección en cascada.",
+       "protect-cantedit": "No puede cambiar el nivel de protección porque no tiene permiso para editarla.",
+       "blanknamespace": "(Principal)",
+       "whatlinkshere": "Lo que enlaza aquí",
+       "ipblocklist": "Usuarios bloqueados",
+       "contribslink": "contribs",
+       "articleexists": "Ya existe una página con ese nombre, o el nombre que ha escogido no es válido.\nPor favor, elija otro nombre.",
+       "thumbnail-more": "Aumentar",
+       "tooltip-pt-userpage": "Su página de usuario",
+       "tooltip-pt-mytalk": "Su página de discusión",
+       "tooltip-pt-preferences": "Sus preferencias",
+       "tooltip-pt-watchlist": "La lista de páginas cuyos cambios usted vigila",
+       "tooltip-pt-mycontris": "Lista de sus contribuciones",
+       "tooltip-pt-login": "Le invitamos a que se registre, aunque no es obligatorio",
+       "tooltip-pt-createaccount": "Le invitamos a que cree una cuenta de usuario e inicie sesión, aunque ello no es obligatorio.",
+       "tooltip-ca-talk": "Discusión acerca del artículo",
+       "tooltip-ca-edit": "Usted puede editar esta página. Por favor, use el botón de previsualización antes de grabar.",
+       "tooltip-ca-history": "Versiones anteriores de esta página y sus autores",
+       "tooltip-ca-watch": "Añadir esta página a tu lista de seguimiento",
+       "tooltip-ca-unwatch": "Borrar esta página de su lista de seguimiento",
+       "tooltip-search": "Buscar en {{SITENAME}}",
+       "tooltip-search-fulltext": "Busca este texto en las páginas",
+       "tooltip-p-logo": "Visitar la página principal",
+       "tooltip-n-mainpage": "Visitar la página principal",
+       "tooltip-n-mainpage-description": "Visitar la página principal",
+       "tooltip-n-portal": "Acerca del proyecto, lo que usted puede hacer, dónde encontrar las cosas",
+       "tooltip-n-currentevents": "Información básica sobre acontecimientos actuales",
+       "tooltip-n-recentchanges": "Lista de cambios recientes en el wiki",
+       "tooltip-n-randompage": "Cargar una página al azar",
+       "tooltip-n-help": "El lugar para aprender",
+       "tooltip-t-whatlinkshere": "Lista de todas las páginas del wiki que enlazan aquí",
+       "tooltip-t-recentchangeslinked": "Cambios recientes en las páginas que enlazan con ésta",
+       "tooltip-t-upload": "Subir imágenes o archivos multimedia",
+       "tooltip-t-specialpages": "Lista de todas las páginas especiales",
+       "tooltip-t-print": "Versión imprimible de esta página",
+       "tooltip-t-permalink": "Enlace permanente a esta versión de la página",
+       "tooltip-ca-nstab-main": "Ver el artículo",
+       "tooltip-ca-nstab-special": "Esta es una página especial, usted no puede modificar la página en sí",
+       "tooltip-save": "Guarde sus cambios",
+       "tooltip-preview": "Vista previa de sus cambios, por favor use esto antes de guardar",
+       "tooltip-diff": "Mostrar los cambios que ha introducido en el texto.",
+       "tooltip-rollback": "«Revertir» revierte todas las ediciones del último usuario con un solo clic.",
+       "bad_image_list": "El formato es el siguiente:\n\nSolo se reconocen elementos de lista (líneas que comienzan con «*»).\nEl primer enlace de cada línea debe ser un enlace al archivo que se quiere bloquear.\nTodos los demás enlaces en la misma línea se tomarán como excepciones (es decir, páginas donde sí se puede usar el archivo).",
+       "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.\n\nPara confirmar que esta cuenta realmente le pertenece y activar el correo en {{SITENAME}}, siga este enlace:\n\n$3\n\nSi la cuenta *no* es suya, siga este otro enlace para cancelar la confirmación de la dirección de correo:\n\n$5\n\nEl código de confirmación expirará en $4.",
+       "confirmemail_body_changed": "Alguien, probablemente usted,\nha modificado la dirección de correo electrónico asociado a la cuenta \"$2\" hacia esta en {{SITENAME}}, desde la dirección IP $1.\n\nPara confirmar que esta cuenta realmente le pertenece y reactivar las funciones de correo electrónico en {{SITENAME}}, abra este enlace en su navegador:\n\n$3\n\nSi la cuenta *no* le pertenece, sigua el siguiente enlace para cancelar la confirmación:\n\n$5\n\nEste código de confirmación expirará el $4.",
+       "deletedwhileediting": "'''Aviso''': ¡Esta página fue borrada después de que usted empezara a editar!",
+       "confirmrecreate": "El usuario [[User:$1|$1]] ([[User talk:$1|discusión]]) borró este artículo después de que usted empezara a editarlo y dio esta razón:\n: ''$2'' \nPor favor, confirme que realmente desea crear de nuevo esta página.",
+       "watchlistedit-normal-explain": "Los títulos de su lista de seguimiento se muestran debajo.\nPara eliminar un título, marque la casilla junto a él, y haga clic en ''{{int:Watchlistedit-normal-submit}}''.\nTambién puede [[Special:EditWatchlist/raw|editar la lista de en crudo]].",
+       "watchlistedit-raw-explain": "Los títulos de su lista de seguimiento se muestran debajo. Esta lista puede ser editada añadiendo o eliminando líneas de la lista;\nun título por línea.\nCuando acabe, haga clic en \"{{int:Watchlistedit-raw-submit}}\".\nTambién puede [[Special:EditWatchlist|usar el editor estándar]].",
+       "watchlistedit-raw-done": "Su lista de seguimiento ha sido actualizada.",
+       "version-license-info": "MediaWiki es software libre; usted puede redistribuírlo y/o modificarlo bajo los términos de la Licencia General Pública GNU publicada por la Fundación del Software Libre; ya sea la versión 2 de la licencia, o (a su elección) cualquier versión posterior.\n\nMediaWiki es distribuído con la esperanza de que será útil, pero SIN NINGUNA GARANTÍA; ni siquiera con la garantía implícita de COMERCIALIZACIÓN ó ADAPTACIÓN A UN PROPÓSITO PARTICULAR. Véase la Licencia Pública General GNU para mayores detalles.\n\nHa usted recibido [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Licencia Pública General GNU] junto a este programa; si no es así, escriba usted a la Fundación del Software Libre, Inc., Calle Franklin 51, Quinto Piso, Boston, MA 02110-1301, EE.UU. ó [//www.gnu.org/licenses/old-licenses/gpl-2.0.html léala usted en línea].",
+       "fileduplicatesearch-summary": "Búsqueda de archivos duplicados en base a su valor hash.",
+       "specialpages": "Páginas especiales",
+       "dberr-usegoogle": "Mientras tanto puede usted probar buscando a través de Google.",
+       "htmlform-invalid-input": "Existen problemas con alguno de los datos que usted ha introducido",
+       "htmlform-select-badoption": "El valo que usted ha especificado no es una opción válida.",
+       "htmlform-int-invalid": "El valor que usted ha especificado no es un entero.",
+       "htmlform-float-invalid": "El valor que usted ha especificado no es un número.",
+       "htmlform-int-toolow": "El valor que usted ha especificado está por debajo del mínimo de $1",
+       "htmlform-int-toohigh": "El valor que usted ha especificado está por encima del máximo de $1",
+       "json-warn-trailing-comma": "$1 posterior {{PLURAL:$1|comma was|comas fueron }} retirado de JSON",
+       "json-error-unknown": "Ocurrió un problema con el código JSON. Error: $1",
+       "json-error-depth": "La profundidad máxima de la pila (en inglés stack) ha sido excedida.",
+       "json-error-ctrl-char": "Errores de caracteres de control, posiblemente codificado en manera incorrecta",
+       "json-error-syntax": "Error sintáctico",
+       "json-error-utf8": "Los caracteres UTF-8 tienen errores de formato, puede ser que la codificación es incorrecta.",
+       "json-error-recursion": "Uno o más recursiva de las referencias en valor de codificar",
+       "json-error-inf-or-nan": "Uno o más valores NAN o INF en el valor de ser codificado",
+       "json-error-unsupported-type": "Fue dado un valor de un tipo que no puede ser codificado"
+}
index 0bb047d..e3f2e64 100644 (file)
                        "Pompilos",
                        "Igv",
                        "Juanpabl",
-                       "AlimanRuna"
+                       "AlimanRuna",
+                       "Luzcaru",
+                       "Javiersanp"
                ]
        },
        "tog-underline": "Subrayar los enlaces:",
        "anontalk": "Discusión",
        "navigation": "Navegación",
        "and": "&#32;y",
-       "qbfind": "Buscar",
-       "qbbrowse": "Navegar",
-       "qbedit": "Editar",
-       "qbpageoptions": "Esta página",
-       "qbmyoptions": "Mis páginas",
        "faq": "Preguntas frecuentes",
-       "faqpage": "Project:Preguntas frecuentes",
        "actions": "Acciones",
        "namespaces": "Espacios de nombres",
        "variants": "Variantes",
        "edit-local": "Editar descripción local",
        "create": "Crear",
        "create-local": "Añadir descripción local",
-       "editthispage": "Editar esta página",
-       "create-this-page": "Crear esta página",
        "delete": "Borrar",
-       "deletethispage": "Borrar esta página",
-       "undeletethispage": "Restaurar esta página",
        "undelete_short": "Restaurar {{PLURAL:$1|una edición|$1 ediciones}}",
        "viewdeleted_short": "Ver {{PLURAL:$1|una edición borrada|$1 ediciones borradas}}",
        "protect": "Proteger",
        "protect_change": "cambiar",
-       "protectthispage": "Proteger esta página",
        "unprotect": "Cambiar protección",
-       "unprotectthispage": "Cambiar la protección de esta página",
        "newpage": "Página nueva",
-       "talkpage": "Discutir esta página",
        "talkpagelinktext": "discusión",
        "specialpage": "Página especial",
        "personaltools": "Herramientas personales",
-       "articlepage": "Ver artículo",
        "talk": "Discusión",
        "views": "Vistas",
        "toolbox": "Herramientas",
        "tool-link-userrights": "Modificar grupos {{GENDER:$1|del usuario|de la usuaria}}",
        "tool-link-userrights-readonly": "Ver los grupos {{GENDER:$1|del usuario|de la usuaria}}",
        "tool-link-emailuser": "Enviar un correo a {{GENDER:$1|este usuario|esta usuaria}}",
-       "userpage": "Ver página de usuario",
-       "projectpage": "Ver página del proyecto",
        "imagepage": "Ver página del archivo",
        "mediawikipage": "Ver página del mensaje",
        "templatepage": "Ver página de plantilla",
        "redirectedfrom": "(Redirigido desde «$1»)",
        "redirectpagesub": "Página de redirección",
        "redirectto": "Redirige a:",
-       "lastmodifiedat": "Esta página fue modificada por última vez el $1 a las $2.",
+       "lastmodifiedat": "Se editó esta página por última vez el $1 a las $2.",
        "viewcount": "Esta página ha recibido {{PLURAL:$1|una visita|$1 visitas}}.",
        "protectedpage": "Página protegida",
        "jumpto": "Saltar a:",
        "policy-url": "Project:Políticas",
        "portal": "Portal de la comunidad",
        "portal-url": "Project:Portal de la comunidad",
-       "privacy": "Política de privacidad",
-       "privacypage": "Project:Política de privacidad",
+       "privacy": "Normativa de privacidad",
+       "privacypage": "Project:Normativa de privacidad",
        "badaccess": "Error de permisos",
        "badaccess-group0": "No estás autorizado a ejecutar la acción solicitada.",
        "badaccess-groups": "La acción que has solicitado está restringida a los usuarios {{PLURAL:$2|del grupo|de uno de estos $2 grupos}}: $1.",
        "editlink": "editar",
        "viewsourcelink": "ver código",
        "editsectionhint": "Editar sección: $1",
-       "toc": "Contenido",
+       "toc": "Sumario",
        "showtoc": "mostrar",
        "hidetoc": "ocultar",
        "collapsible-collapse": "Contraer",
        "transaction-duration-limit-exceeded": "Con el fin de evitar un aumento excesivo del retardo de replicación, se anuló esta transacción porque la duración de escritura ($1) excedió el límite de $2 {{PLURAL:$2|segundo|segundos}}.\nSi estás cambiando muchos elementos a la vez, trata de hacer operaciones similares más pequeñas.",
        "laggedslavemode": "<strong>Advertencia:</strong> puede que falten las actualizaciones más recientes en esta página.",
        "readonly": "Base de datos bloqueada",
-       "enterlockreason": "Explica el motivo del bloqueo, incluyendo una estimación de cuándo se producirá el desbloqueo",
+       "enterlockreason": "Proporciona el motivo del bloqueo, así como una estimación de cuándo se producirá el desbloqueo",
        "readonlytext": "Actualmente la base de datos no permite nuevas entradas u otras modificaciones, probablemente por mantenimiento rutinario, tras lo cual volverá a la normalidad.\n\nLa explicación dada por el administrador que la bloqueó fue: $1",
        "missing-article": "La base de datos no ha encontrado el texto de la página «$1» $2, cuando debería haberse hallado.\n\nLa causa de esto suele ser un ''diff'' anacrónico o un enlace al historial de una página que ha sido borrada.\n\nSi no fuera el caso, puede que hayas encontrado un fallo en el software.\n\nPor favor, informa de esto a [[Special:ListUsers/sysop|administrador]], y anota la URL actual.",
        "missingarticle-rev": "(revisión: $1)",
        "missingarticle-diff": "(diferencia: $1, $2)",
        "readonly_lag": "La base de datos se ha bloqueado automáticamente mientras sus servidores esclavos se sincronizan con el maestro.",
-       "nonwrite-api-promise-error": "El encabezado HTTP 'Promise-Non-Write-API-Action' ha sido enviado pero la petición fue hacia un módulo de escritura de la API.",
+       "nonwrite-api-promise-error": "La cabecera HTTP «Promise-Non-Write-API-Action» se ha enviado pero la petición se realizó a un módulo de escritura de la API.",
        "internalerror": "Error interno",
        "internalerror_info": "Error interno: $1",
        "internalerror-fatal-exception": "Excepción grave de tipo \"$1\"",
-       "filecopyerror": "No se ha podido copiar el archivo «$1» a «$2».",
-       "filerenameerror": "No se ha podido renombrar el archivo «$1» a «$2».",
+       "filecopyerror": "No se ha podido copiar el archivo «$1» en «$2».",
+       "filerenameerror": "No se pudo cambiar el nombre del archivo «$1» a «$2».",
        "filedeleteerror": "No se ha podido borrar el archivo «$1».",
        "directorycreateerror": "No se ha podido crear el directorio «$1».",
        "directoryreadonlyerror": "El directorio «$1» es de solo lectura.",
        "noname": "No se ha especificado un nombre de usuario válido.",
        "loginsuccesstitle": "Has accedido",
        "loginsuccess": "<strong>Has accedido a {{SITENAME}} como «$1».</strong>",
-       "nosuchuser": "No existe ningún usuario llamado «$1».\nLos nombres de usuario son sensibles a las mayúsculas.\nRevisa tu ortografía, o [[Special:CreateAccount|crea una cuenta nueva]].",
+       "nosuchuser": "No existe ninguna cuenta llamada «$1».\nLos nombres de usuario distinguen mayúsculas y minúsculas.\nComprueba tu escritura o [[Special:CreateAccount|crea una cuenta nueva]].",
        "nosuchusershort": "No existe ningún usuario llamado «$1». Comprueba que lo has escrito correctamente.",
        "nouserspecified": "Debes especificar un nombre de usuario.",
        "login-userblocked": "No puedes iniciar sesión porque tu cuenta está bloqueada.",
        "extlink_sample": "http://www.ejemplo.com Título del enlace",
        "extlink_tip": "Enlace externo (recuerda añadir el prefijo http://)",
        "headline_sample": "Texto de encabezado",
-       "headline_tip": "Encabezado de nivel 2",
+       "headline_tip": "Título de 2.º nivel",
        "nowiki_sample": "Insertar aquí texto sin formato",
        "nowiki_tip": "Ignorar el formato wiki",
        "image_sample": "Ejemplo.jpg",
        "preview": "Previsualizar",
        "showpreview": "Mostrar previsualización",
        "showdiff": "Mostrar los cambios",
-       "blankarticle": "<strong>Aviso:</strong> estás a punto de crear una página vacía.\nSi pulsas en «{{int:savearticle}}» de nuevo, se creará la página sin ningún contenido.",
+       "blankarticle": "<strong>Aviso:</strong> estás a punto de crear una página vacía.\nSi haces clic en «$1» de nuevo, se creará la página sin ningún contenido.",
        "anoneditwarning": "<strong>Advertencia:</strong> no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición en estas condiciones. Si <strong>[$1 inicias sesión]</strong> o <strong>[$2 creas una cuenta]</strong>, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.",
        "anonpreviewwarning": "<em>No has iniciado sesión. Al guardar los cambios se almacenará tu dirección IP en el historial de edición de esta página.</em>",
-       "missingsummary": "<strong>Atención:</strong> No has escrito un resumen de edición.\nSi haces clic nuevamente en «{{int:savearticle}}» tu edición se grabará sin él.",
-       "selfredirect": "<strong>Advertencia:</strong> estás redirigiendo esta página a sí misma.\nPuede que hayas especificado erróneamente el destino de la redirección, o quizá estés editando la página equivocada. En cualquier caso, si haces clic de nuevo en \"{{int:savearticle}}\", se creará la redirección.",
+       "missingsummary": "<strong>Atención:</strong> no has escrito un resumen de edición.\nSi haces clic de nuevo en «$1» tu edición se grabará sin él.",
+       "selfredirect": "<strong>Advertencia:</strong> estás redirigiendo esta página a sí misma.\nPuede que hayas especificado erróneamente el destino de la redirección, o quizá estés editando la página equivocada. En cualquier caso, si haces clic de nuevo en \"$1\", se creará la redirección.",
        "missingcommenttext": "Escribe un comentario a continuación.",
-       "missingcommentheader": "<strong>Atención:</strong> no has escrito un asunto para este comentario.\nSi haces clic nuevamente en \"{{int:savearticle}}\" tu edición se grabará sin él.",
+       "missingcommentheader": "<strong>Atención:</strong> no has escrito un asunto para este comentario.\nSi haces clic nuevamente en \"$1\" tu edición se grabará sin él.",
        "summary-preview": "Previsualización del resumen de edición:",
        "subject-preview": "Previsualización del asunto:",
        "previewerrortext": "Se ha producido un error al intentar la vista previa de los cambios.",
        "editingsection": "Edición de «$1» (sección)",
        "editingcomment": "Edición de «$1» (sección nueva)",
        "editconflict": "Conflicto de edición: $1",
-       "explainconflict": "Alguien ha realizado cambios en esta página desde que empezaste a editarla.\nEl cuadro de texto superior contiene el texto de la página tal como está guardado en este momento.\nTus cambios sobre la versión que editaste se muestran en el cuadro de texto inferior.\nSi quieres guardar tus cambios, has de trasladarlos al cuadro superior.\nAl pulsar «{{int:savearticle}}», se guardará <strong>solo</strong> el texto del cuadro superior.",
+       "explainconflict": "Alguien ha realizado cambios en esta página desde que empezaste a editarla.\nEl cuadro de texto superior contiene el texto de la página tal como está guardado en este momento.\nTus cambios sobre la versión que editaste se muestran en el cuadro de texto inferior.\nSi quieres guardar tus cambios, has de trasladarlos al cuadro superior.\nAl pulsar «$1», se guardará <strong>solamente</strong> el texto del cuadro superior.",
        "yourtext": "Tu texto",
        "storedversion": "Versión guardada",
        "nonunicodebrowser": "<strong>Advertencia: tu navegador no es compatible con los caracteres Unicode.</strong>\nSe ha activado un sistema de edición alternativo que te permitirá editar artículos con seguridad: los caracteres no pertenecientes al estándar ASCII aparecerán como códigos hexadecimales en el cuadro de edición.",
        "readonlywarning": "<strong>Advertencia: La base de datos ha sido bloqueada por labores de mantenimiento, así que en este momento no puedes guardar tus ediciones.</strong>\nQuizás quieras copiar y pegar tu texto en un archivo de texto y guardarlo para después.\n\nEl administrador que la bloqueó ha dado esta explicación: $1",
        "protectedpagewarning": "<strong>Advertencia: Esta página ha sido protegida para que solo puedan editarla los usuarios con permisos de administrador.</strong>\nA continuación se muestra la última entrada de registro para más información:",
        "semiprotectedpagewarning": "<strong>Nota:</strong> Esta página ha sido protegida para que solo puedan editarla los usuarios registrados.\nA continuación se muestra la última entrada de registro para más información:",
-       "cascadeprotectedwarning": "<strong>Aviso:</strong> esta página está protegida y solo los administradores pueden editarla porque está transcluida en {{PLURAL:$1|la siguiente página protegida|las siguientes páginas protegidas}} en cascada:",
+       "cascadeprotectedwarning": "<strong>Aviso:</strong> esta página está protegida y solo pueden editarla usuarios con [[Special:ListGroupRights|permisos específicos]] porque está transcluida en {{PLURAL:$1|la siguiente página protegida|las siguientes páginas protegidas}} en cascada:",
        "titleprotectedwarning": "<strong>Aviso: esta página está protegida de modo que se necesitan [[Special:ListGroupRights|permisos específicos]] para crearla.</strong>\nA continuación se muestra la última entrada del registro como referencia:",
        "templatesused": "{{PLURAL:$1|Plantilla usada|Plantillas usadas}} en esta página:",
        "templatesusedpreview": "{{PLURAL:$1|Plantilla usada|Plantillas usadas}} en esta previsualización:",
        "searchprofile-advanced": "Avanzado",
        "searchprofile-articles-tooltip": "Buscar en $1",
        "searchprofile-images-tooltip": "Buscar archivos",
-       "searchprofile-everything-tooltip": "Buscar en todo el contenido (incluyendo páginas de discusión)",
+       "searchprofile-everything-tooltip": "Buscar en todo el contenido (incluidas las páginas de discusión)",
        "searchprofile-advanced-tooltip": "Buscar en espacios de nombres personalizados",
        "search-result-size": "$1 ({{PLURAL:$2|1 palabra|$2 palabras}})",
        "search-result-category-size": "{{PLURAL:$1|1 miembro|$1 miembros}} ({{PLURAL:$2|1 subcategoría|$2 subcategorías}}, {{PLURAL:$3|1 archivo|$3 archivos}})",
        "search-file-match": "(coincide con el contenido del archivo)",
        "search-suggest": "Quizás quieres buscar: $1",
        "search-rewritten": "Se muestran los resultados de $1. O busca $2.",
-       "search-interwiki-caption": "Proyectos hermanos",
+       "search-interwiki-caption": "Resultados de proyectos hermanos",
        "search-interwiki-default": "Resultados de $1:",
        "search-interwiki-more": "(más)",
        "search-interwiki-more-results": "más resultados",
        "prefs-watchlist-edits": "Número máximo de ediciones que mostrar en la lista expandida:",
        "prefs-watchlist-edits-max": "Cantidad máxima: 1000",
        "prefs-watchlist-token": "Clave de lista de seguimiento:",
-       "prefs-misc": "Miscelánea",
+       "prefs-misc": "Varias",
        "prefs-resetpass": "Cambiar contraseña",
        "prefs-changeemail": "Cambiar o eliminar la dirección de correo electrónico",
        "prefs-setemail": "Establecer una dirección de correo electrónico",
        "saveusergroups": "Guardar grupos {{GENDER:$1|del usuario|de la usuaria}}",
        "userrights-groupsmember": "Miembro de:",
        "userrights-groupsmember-auto": "Miembro implícito de:",
-       "userrights-groups-help": "Puedes cambiar los grupos en que está este usuario:\n* Una casilla marcada significa que el usuario está en ese grupo.\n* Una casilla sin marcar significa que el usuario no está en ese grupo.\n* Un * indica que no se puede eliminar el grupo una vez que se ha añadido o viceversa.\n* Un # indica que sólo se puede volver a poner la fecha de caducidad de membresía de este grupo; no se pueden llevar adelante.",
+       "userrights-groups-help": "Puedes modificar los grupos a los que pertenece {{GENDER:$1|este usuario|esta usuaria}}:\n* Una casilla marcada significa que {{GENDER:$1|el usuario|la usuaria}} está en ese grupo.\n* Una casilla sin marcar significa que {{GENDER:$1|el usuario|la usuaria}} no está en ese grupo.\n* Un * indica que no podrás eliminar el grupo una vez que lo añadas, o viceversa.\n* Un # indica que puedes únicamente postergar, y no adelantar, la fecha de caducidad de la membresía a este grupo.",
        "userrights-reason": "Motivo:",
        "userrights-no-interwiki": "No tienes permiso para editar permisos de usuario en otros wikis.",
        "userrights-nodatabase": "La base de datos $1 no existe o no es local.",
        "userrights-expiry-options": "1 día:1 day,1 semana:1 week,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year",
        "userrights-invalid-expiry": "El tiempo de caducidad del grupo \"$1\" no es válido.",
        "userrights-expiry-in-past": "El tiempo de caducidad del grupo \"$1\" está en el pasado.",
+       "userrights-cannot-shorten-expiry": "No puedes acortar la caducidad de las membresías del grupo «$1». Únicamente los usuarios con permisos para añadir y quitar el grupo pueden hacerlo.",
        "userrights-conflict": "¡Conflicto de cambio de los permisos de usuario! Por favor, revisa y confirma tus cambios.",
        "group": "Grupo:",
        "group-user": "Usuarios",
        "right-userrights": "Modificar todos los permisos de usuario",
        "right-userrights-interwiki": "Modificar los permisos de usuario en otros wikis",
        "right-siteadmin": "Bloquear y desbloquear la base de datos",
-       "right-override-export-depth": "Exportar páginas, incluyendo aquellas enlazadas hasta una profundidad de 5",
+       "right-override-export-depth": "Exportar páginas, incluidas aquellas enlazadas hasta una profundidad de 5",
        "right-sendemail": "Enviar correo electrónico a otros usuarios",
        "right-managechangetags": "Crear y (des)activar [[Special:Tags|etiquetas]]",
        "right-applychangetags": "Aplicar [[Special:Tags|etiquetas]] junto con los cambios propios",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (véase también la [[Special:NewPages|lista de páginas nuevas]])",
        "recentchanges-submit": "Mostrar",
        "rcfilters-activefilters": "Filtros activos",
+       "rcfilters-quickfilters": "Ajustes de filtro guardados",
+       "rcfilters-quickfilters-placeholder-title": "Ningún enlace guardado aún",
+       "rcfilters-quickfilters-placeholder-description": "Para guardar tus ajustes de filtro y reutilizarlos más tarde, pulsa en el icono del marcador en el área de Filtro activo que se encuentra a continuación.",
+       "rcfilters-savedqueries-defaultlabel": "Filtros guardados",
+       "rcfilters-savedqueries-rename": "Cambiar nombre",
+       "rcfilters-savedqueries-setdefault": "Activar por defecto",
+       "rcfilters-savedqueries-unsetdefault": "Desmarcar como predeterminado",
+       "rcfilters-savedqueries-remove": "Eliminar",
+       "rcfilters-savedqueries-new-name-label": "Nombre",
+       "rcfilters-savedqueries-apply-label": "Guardar la configuración",
+       "rcfilters-savedqueries-cancel-label": "Cancelar",
+       "rcfilters-savedqueries-add-new-title": "Guardar ajustes de filtro actuales",
        "rcfilters-restore-default-filters": "Restaurar filtros predeterminados",
        "rcfilters-clear-all-filters": "Borrar todos los filtros",
        "rcfilters-search-placeholder": "Filtrar cambios recientes (navega o empieza a escribir)",
        "rcfilters-empty-filter": "No hay filtros activos. Se muestran todas las contribuciones.",
        "rcfilters-filterlist-title": "Filtros",
        "rcfilters-filterlist-whatsthis": "¿Qué es esto?",
+       "rcfilters-filterlist-feedbacklink": "Comparte tus comentarios sobre los filtros (beta) nuevos",
        "rcfilters-highlightbutton-title": "Resaltar los resultados",
        "rcfilters-highlightmenu-title": "Selecciona un color",
        "rcfilters-highlightmenu-help": "Selecciona un color para resaltar esta propiedad",
        "rcfilters-filterlist-noresults": "No se encontraron filtros",
        "rcfilters-noresults-conflict": "No se encontraron resultados porque los criterios de búsqueda están en conflicto.",
+       "rcfilters-state-message-subset": "Este filtro no tiene ningún efecto debido a que sus resultados se incluyen con los de los siguientes: {{PLURAL:$2|filtro|filtros}} (intente destacarlo para distinguirlo): $1",
+       "rcfilters-state-message-fullcoverage": "Seleccionar todos los filtros de un grupo es lo mismo que seleccionar ninguno, por lo que este filtro no tiene efecto. El grupo incluye: $1",
        "rcfilters-filtergroup-registration": "Registro de usuario",
        "rcfilters-filter-registered-label": "Registrados",
        "rcfilters-filter-registered-description": "Editores conectados.",
        "rcfilters-filter-unregistered-label": "No registrados",
        "rcfilters-filter-unregistered-description": "Editores no conectados.",
-       "rcfilters-filtergroup-authorship": "Editar autoría",
-       "rcfilters-filter-editsbyself-label": "Tus propias ediciones",
-       "rcfilters-filter-editsbyself-description": "Ediciones tuyas",
-       "rcfilters-filter-editsbyother-label": "Ediciones de otros",
-       "rcfilters-filter-editsbyother-description": "Ediciones creadas por otros usuarios (no por ti).",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "Este filtro entra en conflicto con el siguiente nivel de Experiencia {{PLURAL:$2|filtro|filtros}}, que {{PLURAL:$2 |encuentra|encontrar}} sólo usuarios registrados: $1",
+       "rcfilters-filtergroup-authorship": "Autoría de la contribución",
+       "rcfilters-filter-editsbyself-label": "Cambios tuyos",
+       "rcfilters-filter-editsbyself-description": "Tus propias contribuciones",
+       "rcfilters-filter-editsbyother-label": "Cambios de otros",
+       "rcfilters-filter-editsbyother-description": "Todos los cambios, excepto los tuyos.",
        "rcfilters-filtergroup-userExpLevel": "Nivel de experiencia (solo para usuarios registrados)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Los filtros de nivel de experiencia sólo encuentran usuarios registrados, por lo que este filtro entra en conflicto con el filtro \"No registrado\".",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "El filtro \"No registrado\" está en conflicto con uno o más filtros de nivel de Experiencia, que solo encuentran usuarios registrados. Los filtros en conflicto están marcados en el área Filtros Activos, anterior.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Recién llegados",
        "rcfilters-filter-user-experience-level-newcomer-description": "Menos de 10 ediciones y 4 días de actividad.",
        "rcfilters-filter-user-experience-level-learner-label": "Aprendices",
-       "rcfilters-filter-user-experience-level-learner-description": "Más días de actividad y ediciones que los «recién llegados», pero menos que los «usuarios experimentados».",
+       "rcfilters-filter-user-experience-level-learner-description": "Más experiencia que los «recién llegados», pero menos que los «usuarios experimentados».",
        "rcfilters-filter-user-experience-level-experienced-label": "Usuarios experimentados",
        "rcfilters-filter-user-experience-level-experienced-description": "Más de 30 días de actividad y 500 ediciones.",
        "rcfilters-filtergroup-automated": "Contribuciones automatizadas",
        "rcfilters-filter-minor-description": "Ediciones etiquetadas por el autor como menores.",
        "rcfilters-filter-major-label": "Ediciones no menores",
        "rcfilters-filter-major-description": "Ediciones no etiquetadas como menores.",
+       "rcfilters-filtergroup-watchlist": "Páginas vigiladas",
+       "rcfilters-filter-watchlist-watched-label": "En mi lista de seguimiento",
+       "rcfilters-filter-watchlist-watched-description": "Cambios en las páginas de tu lista de seguimiento.",
+       "rcfilters-filter-watchlist-watchednew-label": "Cambios nuevos en tu lista de seguimiento",
+       "rcfilters-filter-watchlist-watchednew-description": "Cambios en las páginas de tu lista de seguimiento que no has visitado desde que se produjeron los cambios.",
+       "rcfilters-filter-watchlist-notwatched-label": "No en mi lista de seguimiento",
+       "rcfilters-filter-watchlist-notwatched-description": "Todos, excepto los cambios en las páginas de tu lista de seguimiento.",
        "rcfilters-filtergroup-changetype": "Tipo de cambio",
        "rcfilters-filter-pageedits-label": "Ediciones de páginas",
        "rcfilters-filter-pageedits-description": "Modificaciones del contenido wiki, discusiones, descripción de categorías...",
        "rcfilters-filter-categorization-description": "Registros de páginas añadidas o borradas de categorías.",
        "rcfilters-filter-logactions-label": "Acciones registradas",
        "rcfilters-filter-logactions-description": "Acciones administrativas, creación de cuentas, borrados de páginas, subidas de archivos...",
-       "rcnotefrom": "Debajo aparece{{PLURAL:$5| el cambio|n los cambios}} desde <strong>$3, $4</strong> (se muestran hasta <strong>$1</strong>).",
-       "rclistfromreset": "Reiniciar selección de fecha",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "El filtro \"Ediciones menores\" está en conflicto con uno o más Tipos de filtros de Cambio, ya que ciertos tipos de cambio no pueden ser designados como \"menores\". Los filtros en conflicto están marcados en el área Filtros activos, anterior.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Ciertos tipos de cambio no pueden ser designados como \"menores\", por lo que este filtro entra en conflicto con los siguientes  Tipos de filtros de Cambio: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Este filtro «Tipo de cambio» entra en conflicto con el filtro «Ediciones menores». Hay ciertos tipos de cambios que no pueden denominarse «menores».",
+       "rcfilters-filtergroup-lastRevision": "Revisión actual",
+       "rcfilters-filter-lastrevision-label": "Revisión actual",
+       "rcfilters-filter-lastrevision-description": "El cambio más reciente a una página.",
+       "rcfilters-filter-previousrevision-label": "Revisiones anteriores",
+       "rcfilters-filter-previousrevision-description": "Todos los cambios que no son los más recientes cambian a una página.",
+       "rcfilters-view-tags": "Etiquetas",
+       "rcnotefrom": "Debajo {{PLURAL:$5|aparece el cambio|aparecen los cambios}} desde <strong>$3, $4</strong> (se muestran hasta <strong>$1</strong>).",
+       "rclistfromreset": "Restablecer selección de fecha",
        "rclistfrom": "Mostrar cambios nuevos desde las $2 del $3",
        "rcshowhideminor": "$1 ediciones menores",
        "rcshowhideminor-show": "Mostrar",
        "rcshowhidecategorization": "$1 categorización de páginas",
        "rcshowhidecategorization-show": "Mostrar",
        "rcshowhidecategorization-hide": "Ocultar",
-       "rclinks": "Ver los últimos $1 cambios en los últimos $2 días.<br />$3",
+       "rclinks": "Ver los últimos $1 cambios en los últimos $2 días.",
        "diff": "dif",
        "hist": "hist",
        "hide": "Ocultar",
        "upload-preferred": "{{PLURAL:$2|Tipo de archivo preferido|Tipos de archivo preferidos}}: $1.",
        "upload-prohibited": "{{PLURAL:$2|Tipo de archivo prohibido|Tipos de archivo prohibidos}}: $1.",
        "uploadlogpage": "Registro de subidas",
-       "uploadlogpagetext": "Debajo se muestra una lista de los últimos archivos subidos.\nVéase la [[Special:NewFiles|galería de archivos nuevos]] para una vista más estilizada",
+       "uploadlogpagetext": "Debajo se muestra una lista de los últimos archivos subidos.\nConsulta la [[Special:NewFiles|galería de archivos nuevos]] para una presentación más visual.",
        "filename": "Nombre del archivo",
        "filedesc": "Resumen",
        "fileuploadsummary": "Resumen:",
        "php-uploaddisabledtext": "La subida de archivos está deshabilitada en PHP.\nComprueba la opción <code>file_uploads</code>.",
        "uploadscripted": "Este archivo contiene script o código HTML que puede ser interpretado erróneamente por un navegador web.",
        "upload-scripted-pi-callback": "No se pueden cargar archivos que contengan instrucciones de procesamiento en forma de hojas de estilo XML.",
+       "upload-scripted-dtd": "No se pueden cargar archivos SVG que contengan una declaración DTD no estándar.",
        "uploaded-script-svg": "Se encontró el elemento habilitado para secuencias de órdenes «$1» en el archivo SVG cargado.",
        "uploaded-hostile-svg": "Se encontró código CSS no seguro en el elemento de estilo del archivo SVG cargado.",
        "uploaded-event-handler-on-svg": "No está permitido configurar atributos controladores de eventos <code>$1=\"$2\"</code> en los archivos SVG.",
        "backend-fail-describe": "No se pudieron cambiar los metadatos del archivo \"$1\".",
        "backend-fail-alreadyexists": "El archivo \"$1\" ya existe.",
        "backend-fail-store": "No se pudo almacenar el archivo \"$1\" en \"$2\".",
-       "backend-fail-copy": "No se pudo copiar el archivo \"$1\" a \"$2\".",
+       "backend-fail-copy": "No se ha podido copiar el archivo «$1» en «$2».",
        "backend-fail-move": "No se pudo trasladar el archivo \"$1\" a \"$2\".",
        "backend-fail-opentemp": "No se pudo crear archivo temporal.",
        "backend-fail-writetemp": "No se pudo escribir en el archivo temporal.",
        "backend-fail-closetemp": "No se pudo cerrar el archivo temporal.",
        "backend-fail-read": "No se pudo leer el archivo «$1».",
        "backend-fail-create": "No se pudo escribir el archivo \"$1\".",
-       "backend-fail-maxsize": "No se pudo escribir el archivo \"$1\" porque es mayor a {{PLURAL:$2|un byte|$2 bytes}}.",
-       "backend-fail-readonly": "El servidor (back-end) de almacenamiento \"$1\" está actualmente en estado de sólo lectura. La razón aducida es: <em>$2</em>",
-       "backend-fail-synced": "El archivo \"$1\" se encuentra en un estado incoherente dentro de los servidores (backends) de almacenamiento interno",
-       "backend-fail-connect": "No se pudo conectar al servidor (backend) de almacenamiento \"$1\".",
-       "backend-fail-internal": "Se ha producido un error desconocido en el servidor (backend) de almacenamiento \"$1\".",
-       "backend-fail-contenttype": "No se pudo determinar el tipo de contenido del archivo a guardar en \" $1 \".",
-       "backend-fail-batchsize": "El servidor (back-end) de almacenamiento ha suministrado un lote de $1 {{PLURAL:$1|operación|operaciones}} de archivo; el límite es de $2 {{PLURAL:$2|operación|operaciones}}.",
+       "backend-fail-maxsize": "No se pudo escribir el archivo «$1» porque es mayor que {{PLURAL:$2|un byte|$2 bytes}}.",
+       "backend-fail-readonly": "El sistema de almacenamiento «$1» está actualmente en modo de solo lectura. La razón aducida es: <em>$2</em>",
+       "backend-fail-synced": "El archivo «$1» se encuentra en un estado incoherente dentro de los sistemas de almacenamiento interno",
+       "backend-fail-connect": "No se pudo conectar con el sistema de almacenamiento «$1».",
+       "backend-fail-internal": "Se ha producido un error desconocido en el sistema de almacenamiento «$1».",
+       "backend-fail-contenttype": "No se pudo determinar el tipo de contenido del archivo que se debe guardar en «$1».",
+       "backend-fail-batchsize": "Se ha proporcionado al sistema de almacenamiento un lote de $1 {{PLURAL:$1|operación|operaciones}} de archivos; el límite es de $2 {{PLURAL:$2|operación|operaciones}}.",
        "backend-fail-usable": "No se pudo leer o escribir el archivo \"$1\" debido a permisos insuficientes o directorios/contenedores desaparecidos.",
-       "filejournal-fail-dbconnect": "No se pudo conectar a la base de datos del registro del sistema de almacenamiento \"$1\".",
+       "filejournal-fail-dbconnect": "No se pudo conectar con la base de datos del registro del sistema de almacenamiento «$1».",
        "filejournal-fail-dbquery": "No se pudo actualizar la base de datos del registro del sistema de almacenamiento \"$1\".",
        "lockmanager-notlocked": "No se pudo desbloquear \"$1\": no se encontraba bloqueado.",
        "lockmanager-fail-closelock": "No se pudo cerrar la referencia para el archivo de bloqueo de \"$1\".",
        "statistics-header-hooks": "Otras estadísticas",
        "statistics-articles": "Páginas de contenido",
        "statistics-pages": "Páginas",
-       "statistics-pages-desc": "Todas las páginas en el wiki, incluyendo páginas de discusión, redirecciones, etc.",
+       "statistics-pages-desc": "Todas las páginas del wiki, incluidas las páginas de discusión, redirecciones, etc.",
        "statistics-files": "Archivos subidos",
        "statistics-edits": "Ediciones en páginas desde que {{SITENAME}} fue instalado",
        "statistics-edits-average": "Promedio de ediciones por página",
        "apisandbox-request-selectformat-label": "Mostrar los datos de la petición como:",
        "apisandbox-request-format-url-label": "Cadena de consulta de la URL",
        "apisandbox-request-url-label": "URL solicitante:",
+       "apisandbox-request-json-label": "JSON de la solicitud:",
        "apisandbox-request-time": "Tiempo de solicitud: {{PLURAL:$1|$1 ms}}",
        "apisandbox-results-fixtoken": "Corrige el token y vuelve a enviar",
        "apisandbox-results-fixtoken-fail": "No fue posible recuperar el token \"$1\".",
        "listgrouprights-removegroup": "Eliminar {{PLURAL:$2|grupo|grupos}}: $1",
        "listgrouprights-addgroup-all": "Agregar todos los grupos",
        "listgrouprights-removegroup-all": "Eliminar todos los grupos",
-       "listgrouprights-addgroup-self": "Agregar {{PLURAL:$2|grupo|grupos}} a tu propia cuenta: $1",
+       "listgrouprights-addgroup-self": "Agregar {{PLURAL:$2|grupo|grupos}} a su propia cuenta: $1",
        "listgrouprights-removegroup-self": "Eliminar {{PLURAL:$2|grupo|grupos}} de su propia cuenta: $1",
        "listgrouprights-addgroup-self-all": "Agregar todos los grupos a tu propia cuenta",
        "listgrouprights-removegroup-self-all": "Eliminar todos los grupos de tu propia cuenta",
        "enotif_body_intro_moved": "La página $1 de {{SITENAME}} ha sido trasladada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.",
        "enotif_body_intro_restored": "La página $1 de {{SITENAME}} ha sido restaurada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.",
        "enotif_body_intro_changed": "La página $1 de {{SITENAME}} ha sido cambiada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.",
-       "enotif_lastvisited": "Consulta $1 para ver todos los cambios desde tu última visita.",
-       "enotif_lastdiff": "Consulta $1 para ver este cambio.",
+       "enotif_lastvisited": "Consulta $1 para ver todos los cambios desde tu última visita",
+       "enotif_lastdiff": "Consulta $1 para ver este cambio",
        "enotif_anon_editor": "usuario anónimo $1",
        "enotif_body": "Hola, $WATCHINGUSERNAME:\n\n$PAGEINTRO $NEWPAGE\n\nResumen del editor: $PAGESUMMARY $PAGEMINOREDIT\n\nContacta al editor:\ncorreo: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nNo 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.\n\nAtentamente, el sistema de notificaciones de {{SITENAME}}\n\n--\nPara cambiar tus ajustes de notificación por correo, visita\n{{canonicalurl:{{#special:Preferences}}}}\n\nPara cambiar los ajustes de tu lista de seguimiento, visita\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPara quitar la página de tu lista de seguimiento, visita\n$UNWATCHURL\n\nPara ayuda y comentarios:\n$HELPPAGE",
        "created": "creada",
        "sp-contributions-uploads": "subidas",
        "sp-contributions-logs": "registros",
        "sp-contributions-talk": "discusión",
-       "sp-contributions-userrights": "gestión de permisos de usuario",
+       "sp-contributions-userrights": "gestión de permisos {{GENDER:$1|del usuario|de la usuaria}}",
        "sp-contributions-blocked-notice": "Este usuario está actualmente bloqueado. La última entrada del registro de bloqueos es presentada debajo para mayor referencia:",
        "sp-contributions-blocked-notice-anon": "Esta dirección IP se encuentra actualmente bloqueada.\nA continuación se muestra la última entrada del registro de bloqueos para mayor referencia.",
        "sp-contributions-search": "Buscar contribuciones",
        "unblocked-id": "Se ha eliminado el bloqueo $1",
        "unblocked-ip": "Se ha desbloqueado a [[Special:Contributions/$1|$1]].",
        "blocklist": "Usuarios bloqueados",
+       "autoblocklist": "Bloqueos automáticos",
        "autoblocklist-submit": "Buscar",
+       "autoblocklist-legend": "Mostrar bloqueos automáticos",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Bloqueo automático local|Bloqueos automáticos locales}}",
+       "autoblocklist-total-autoblocks": "Número total de bloqueos automáticos: $1",
+       "autoblocklist-empty": "La lista de bloqueos automáticos está vacía.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Otro bloqueo automático|Otros bloqueos automáticos}}",
        "ipblocklist": "Usuarios bloqueados",
        "ipblocklist-legend": "Encontrar a un usuario bloqueado",
        "blocklist-userblocks": "Ocultar bloqueos de cuenta",
        "unblock-hideuser": "No puedes desbloquear a este usuario porque su nombre ha sido ocultado.",
        "ipb_cant_unblock": "Error: no se encuentra el identificador de bloque $1. Pudo haber sido desbloqueado ya.",
        "ipb_blocked_as_range": "Error: la dirección IP $1 no está bloqueada directamente y no puede ser desbloqueada.\nSin embargo, está bloqueada como parte del rango $2, que puede ser desbloqueado.",
-       "ip_range_invalid": "El rango de IP no es válido.",
+       "ip_range_invalid": "El intervalo de IP no es válido.",
        "ip_range_toolarge": "Los bloqueos de rango superiores a /$1 no están permitidos.",
        "proxyblocker": "Bloqueador de proxies",
        "proxyblockreason": "Tu dirección IP ha sido bloqueada porque es un proxy abierto.\nContacta con tu proveedor de servicios de Internet o con tu servicio de asistencia técnica e infórmales de este grave problema de seguridad.",
        "tooltip-pt-mycontris": "Una lista de {{GENDER:|tus}} contribuciones",
        "tooltip-pt-anoncontribs": "Una lista de modificaciones hechas desde esta dirección IP",
        "tooltip-pt-login": "Te recomendamos iniciar sesión, aunque no es obligatorio",
+       "tooltip-pt-login-private": "Es necesario acceder a una cuenta para utilizar este wiki",
        "tooltip-pt-logout": "Salir de la sesión",
        "tooltip-pt-createaccount": "Te recomendamos crear una cuenta e iniciar sesión; sin embargo, no es obligatorio",
        "tooltip-ca-talk": "Discusión acerca de la página de contenido",
        "anonymous": "{{PLURAL:$1|Usuario anónimo|Usuarios anónimos}} de {{SITENAME}}",
        "siteuser": "{{GENDER:$1|el usuario|la usuaria}} $1 de {{SITENAME}}",
        "anonuser": "el usuario anónimo $1 de {{SITENAME}}",
-       "lastmodifiedatby": "Esta página fue modificada por última vez el $1 a las $2 por $3.",
+       "lastmodifiedatby": "$3 editó por última vez esta página el $1 a las $2.",
        "othercontribs": "Basado en el trabajo de $1.",
        "others": "otros",
        "siteusers": "{{PLURAL:$2|{{GENDER:$1|el usuario|la usuaria}}|los usuarios}} $1 de {{SITENAME}}",
        "file-info-png-frames": "$1 {{PLURAL:$1|marco|marcos}}",
        "file-no-thumb-animation": "<strong>Nota: debido a limitaciones técnicas, las miniaturas de este archivo no estarán animadas.</strong>",
        "file-no-thumb-animation-gif": "<strong>Nota: debido a limitaciones técnicas, las miniaturas de imágenes GIF de alta resolución como esta no estarán animadas.</strong>",
-       "newimages": "Galería de imágenes nuevas",
+       "newimages": "Galería de archivos nuevos",
        "imagelisttext": "Debajo hay una lista de <strong>$1</strong> {{PLURAL:$1|archivo ordenado|archivos ordenados}} $2.",
        "newimages-summary": "Esta página especial muestra una galería de los últimos archivos subidos.",
        "newimages-legend": "Filtro",
        "newimages-showbots": "Mostrar cargas de bots",
        "newimages-hidepatrolled": "Ocultar las subidas verificadas",
        "noimages": "No hay nada que ver.",
-       "gallery-slideshow-toggle": "Alternar las miniaturas",
+       "gallery-slideshow-toggle": "Activar o desactivar las miniaturas",
        "ilsubmit": "Buscar",
        "bydate": "por fecha",
        "sp-newimages-showfrom": "Mostrar archivos nuevos empezando desde $2, $1",
        "confirmrecreate": "{{GENDER:$1|El usuario|La usuaria}} [[User:$1|$1]] ([[User talk:$1|discusión]]) borró esta página después de que comenzaras a editarla, por este motivo:\n: <em>$2</em>\nConfirma que realmente quieres volver a crear esta página.",
        "confirmrecreate-noreason": "{{GENDER:$1|El usuario|La usuaria}} [[User:$1|$1]] ([[User talk:$1|discusión]]) borró esta página después de que comenzaras a editarla. Confirma que realmente quieres recrear esta página.",
        "recreate": "Recrear",
+       "confirm-purge-title": "Purgar esta página",
        "confirm_purge_button": "Aceptar",
        "confirm-purge-top": "¿Limpiar la caché de esta página?",
-       "confirm-purge-bottom": "Purgar una página limpia la caché y fuerza a que aparezca la versión más actual.",
+       "confirm-purge-bottom": "Purgar una página limpia la antememoria y fuerza a que aparezca la versión más actual.",
        "confirm-watch-button": "Aceptar",
        "confirm-watch-top": "¿Añadir esta página a tu lista de seguimiento?",
        "confirm-unwatch-button": "Aceptar",
        "logentry-block-block": "$1 {{GENDER:$2|bloqueó}} a {{GENDER:$4|$3}} durante un plazo de $5 $6",
        "logentry-block-unblock": "$1 {{GENDER:$2|desbloqueó}} a {{GENDER:$4|$3}}",
        "logentry-block-reblock": "$1 {{GENDER:$2|cambió}} la configuración del bloqueo de {{GENDER:$4|$3}} durante un plazo de $5 $6",
-       "logentry-suppress-block": "$1 {{GENDER:$2|bloqueó a}} {{GENDER:$4|$3}} durante un plazo de $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|bloqueó}} a {{GENDER:$4|$3}} durante un plazo de $5 $6",
        "logentry-suppress-reblock": "$1 {{GENDER:$2|cambió}} la configuración del bloqueo de {{GENDER:$4|$3}} durante un plazo de $5 $6",
        "logentry-import-upload": "$1 {{GENDER:$2|importó}} $3 subiendo un archivo",
        "logentry-import-upload-details": "$1 {{GENDER:$2|importó}} $3 subiendo un archivo ($4 {{PLURAL:$4|revisión|revisiones}})",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|actualizó}} etiquetas de la revisión $4 de la página $3 ({{PLURAL:$7|agregó}} $6; {{PLURAL:$9|eliminó}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|actualizó}} etiquetas de la entrada del registro $5 de la página $3 ({{PLURAL:$7|agregó}} $6; {{PLURAL:$9|eliminó}} $8)",
        "rightsnone": "(ninguno)",
-       "rightslogentry-temporary-group": "$1 (provisional, hasta $2)",
+       "rightslogentry-temporary-group": "$1 (temporal, hasta $2)",
        "feedback-adding": "Añadiendo comentarios a la página...",
        "feedback-back": "Volver",
        "feedback-bugcheck": "¡Perfecto! Únicamente comprueba que no sea un [$1 fallo conocido].",
        "json-error-inf-or-nan": "Hay uno o más valores «NAN» o «INF» en el valor que se codificará",
        "json-error-unsupported-type": "Se proporcionó un valor en un tipo que no se puede codificar",
        "headline-anchor-title": "Enlace a esta sección",
-       "special-characters-group-latin": "Latín",
-       "special-characters-group-latinextended": "Latín extendido",
+       "special-characters-group-latin": "Latino",
+       "special-characters-group-latinextended": "Latino ampliado",
        "special-characters-group-ipa": "AFI",
        "special-characters-group-symbols": "Símbolos",
        "special-characters-group-greek": "Griego",
-       "special-characters-group-greekextended": "Griego extendido",
+       "special-characters-group-greekextended": "Griego ampliado",
        "special-characters-group-cyrillic": "Cirílico",
        "special-characters-group-arabic": "Árabe",
-       "special-characters-group-arabicextended": "Arábico extendido",
+       "special-characters-group-arabicextended": "Árabe ampliado",
        "special-characters-group-persian": "Persa",
        "special-characters-group-hebrew": "Hebreo",
        "special-characters-group-bangla": "Bengalí",
        "special-characters-group-tamil": "Tamil",
        "special-characters-group-telugu": "Telugú",
-       "special-characters-group-sinhala": "Sinhala",
+       "special-characters-group-sinhala": "Cingalés",
        "special-characters-group-gujarati": "Guyaratí",
        "special-characters-group-devanagari": "Devanagari",
        "special-characters-group-thai": "Tailandés",
-       "special-characters-group-lao": "Lao",
-       "special-characters-group-khmer": "Jemer",
+       "special-characters-group-lao": "Laosiano",
+       "special-characters-group-khmer": "Camboyano",
+       "special-characters-group-canadianaboriginal": "Silabario aborigen canadiense",
        "special-characters-title-endash": "semirraya",
        "special-characters-title-emdash": "raya",
        "special-characters-title-minus": "signo de resta",
        "mw-widgets-titleinput-description-redirect": "redirigir a $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Agregar una categoría...",
        "mw-widgets-usersmultiselect-placeholder": "Agregar más...",
+       "date-range-from": "Desde la fecha:",
+       "date-range-to": "Hasta la fecha:",
        "sessionmanager-tie": "No se pueden combinar múltiples tipos de autenticación de solicitudes: $1.",
        "sessionprovider-generic": "sesiones $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sesiones basadas en cookies",
        "authmanager-authplugin-setpass-failed-message": "El complemento de autenticación denegó el cambio de contraseña.",
        "authmanager-authplugin-create-fail": "El complemento de autenticación denegó la creación de la cuenta.",
        "authmanager-authplugin-setpass-denied": "El complemento de autenticación no permite el cambio de contraseñas.",
-       "authmanager-authplugin-setpass-bad-domain": "Dominio inválido.",
+       "authmanager-authplugin-setpass-bad-domain": "El dominio no es válido.",
        "authmanager-autocreate-noperm": "La creación automática de cuentas no está permitida.",
        "authmanager-autocreate-exception": "La creación automática de cuentas ha sido temporalmente desactivada debido a errores previos.",
        "authmanager-userdoesnotexist": "El usuario «$1» no está registrado.",
        "restrictionsfield-help": "Una dirección IP o intervalo de CIDR por renglón. Para activarlo todo, utiliza <pre>0.0.0.0/0\n::/0</pre>",
        "revid": "revisión $1",
        "pageid": "ID de página $1",
+       "rawhtml-notallowed": "No se pueden emplear las etiquetas &lt;html&gt; si no es en las páginas normales.",
        "gotointerwiki": "Salir de {{SITENAME}}",
-       "gotointerwiki-invalid": "El título especificado no es válido."
+       "gotointerwiki-invalid": "El título especificado no es válido.",
+       "gotointerwiki-external": "Estás a punto de abandonar {{SITENAME}} para visitar [[$2]], un sitio web diferente.\n\n'''[$1 Continuar a $1]'''",
+       "undelete-cantedit": "No puedes deshacer el borrado de esta página porque no tienes permisos para editarla.",
+       "undelete-cantcreate": "No puedes deshacer el borrado de esta página porque no existe ninguna página con este nombre y no tienes permisos para crearla.",
+       "pagedata-title": "Datos de la página",
+       "pagedata-bad-title": "El título «$1» no es válido."
 }
index 9daa40e..bc30182 100644 (file)
@@ -77,9 +77,9 @@
        "tog-prefershttps": "Kasuta sisselogimisel alati turvalist ühendust",
        "underline-always": "Alati",
        "underline-never": "Mitte kunagi",
-       "underline-default": "Kujunduse või veebilehitseja vaikeväärtus",
+       "underline-default": "Kujunduse või brauseri vaikeväärtus",
        "editfont-style": "Redigeerimisala kirjatüüp:",
-       "editfont-default": "Veebilehitseja vaikesäte",
+       "editfont-default": "Brauseri vaikesäte",
        "editfont-monospace": "Püsisammuga font",
        "editfont-sansserif": "Seriifideta kiri",
        "editfont-serif": "Seriifidega kiri",
        "redirectedfrom": "(Ümber suunatud leheküljelt $1)",
        "redirectpagesub": "Ümbersuunamisleht",
        "redirectto": "Ümber suunatud lehekülje:",
-       "lastmodifiedat": "Viimane muutmine: $2, $1",
+       "lastmodifiedat": "Selle lehekülje viimane muutmine: $2, $1.",
        "viewcount": "Seda lehekülge on külastatud {{PLURAL:$1|üks kord|$1 korda}}.",
        "protectedpage": "Kaitstud lehekülg",
        "jumpto": "Mine:",
        "nstab-media": "Meedia",
        "nstab-special": "Eri",
        "nstab-project": "Projektileht",
-       "nstab-image": "Pilt",
+       "nstab-image": "Fail",
        "nstab-mediawiki": "Sõnum",
        "nstab-template": "Mall",
        "nstab-help": "Juhend",
        "virus-badscanner": "Viga konfiguratsioonis: tundmatu viirusetõrje: ''$1''",
        "virus-scanfailed": "skaneerimine ebaõnnestus (veakood $1)",
        "virus-unknownscanner": "tundmatu viirusetõrje:",
-       "logouttext": "<strong>Oled nüüd välja loginud.</strong>\n\nPane tähele, et seni, kuni sa pole veebilehitseja puhvrit tühjendanud, võidakse mõni lehekülg endiselt kuvada nii nagu oleksid ikka sisse logitud.",
+       "logouttext": "<strong>Oled nüüd välja logitud.</strong>\n\nPane tähele, et seni, kuni sa pole brauseri puhvrit tühjendanud, võidakse mõni lehekülg endiselt kuvada nii nagu oleksid ikka sisse logitud.",
        "cannotlogoutnow-title": "Praegu ei saa välja logida",
        "cannotlogoutnow-text": "Väljalogimine pole võimalik, kui kasutad $1.",
        "welcomeuser": "Tere tulemast, $1!",
        "login-abort-generic": "Sisselogimine ebaõnnestus – Katkestatud",
        "login-migrated-generic": "Sinu konto on migreeritud ja sinu kasutajanime pole enam selles vikis.",
        "loginlanguagelabel": "Keel: $1",
-       "suspicious-userlogout": "Sinu väljalogimiskatse nurjus, sest see näis olevat katkise veebilehitseja või puhverserveri saadetud.",
+       "suspicious-userlogout": "Sinu väljalogimiskatse nurjus, sest see näis olevat katkise brauseri või puhverserveri saadetud.",
        "createacct-another-realname-tip": "Tegelik nimi on valikuline.\nKui otsustad selle sisestada, kasutatakse seda kasutaja töö temale omistamiseks.",
        "pt-login": "Logi sisse",
        "pt-login-button": "Logi sisse",
        "nowiki_sample": "Sisesta vormindamata tekst",
        "nowiki_tip": "Ignoreeri vikivormindust",
        "image_sample": "Näidis.jpg",
-       "image_tip": "Pilt",
+       "image_tip": "Manusfail",
        "media_sample": "Näidis.ogg",
        "media_tip": "Link failile",
        "sig_tip": "Sinu allkiri ajatempliga",
        "preview": "Eelvaade",
        "showpreview": "Näita eelvaadet",
        "showdiff": "Näita muudatusi",
-       "blankarticle": "<strong>Hoiatus:</strong> Lehekülg, mida alustad, on tühi.\nKui klõpsad uuesti \"{{int:savearticle}}\", luuakse lehekülg ilma sisuta.",
+       "blankarticle": "<strong>Hoiatus:</strong> Lehekülg, mida alustad, on tühi.\nKui klõpsad uuesti \"$1\", luuakse lehekülg ilma sisuta.",
        "anoneditwarning": "<strong>Hoiatus:</strong> Sa pole sisse logitud. Sinu IP-aadress on kõigile nähtav, kui muudatusi teed. Kui <strong>[$1 logid sisse]</strong> või <strong>[$2 lood konto]</strong>, siis teiste eeliste seas omistatakse sinu muudatused sulle kasutajanime järgi.",
        "anonpreviewwarning": "''Sa pole sisse logitud. Selle lehe redigeerimislogisse salvestatakse su IP-aadress.''",
        "missingsummary": "'''Meeldetuletus:''' Sa ei ole lisanud muudatuse resümeed.\nKui vajutad uuesti salvestamise nupule, salvestatakse muudatus ilma resümeeta.",
-       "selfredirect": "<strong>Hoiatus:</strong> Suunad selle lehekülje iseeneda juurde.\nVõimalik, et oled määranud ümbersuunamise jaoks vale sihtleheküljeks või redigeerid vale lehekülge.\nÜmbersuunamine luuakse sellest hoolimata, kui klõpsad uuesti \"{{int:savearticle}}\".",
+       "selfredirect": "<strong>Hoiatus:</strong> Suunad selle lehekülje iseeneda juurde.\nVõimalik, et oled määranud ümbersuunamise jaoks vale sihtleheküljeks või redigeerid vale lehekülge.\nÜmbersuunamine luuakse sellest hoolimata, kui klõpsad uuesti \"$1\".",
        "missingcommenttext": "Palun sisesta siit allapoole kommentaar.",
-       "missingcommentheader": "<strong>Meeldetuletus:</strong> Sa pole kirjutanud kommentaarile teemat.\nKui klõpsad uuesti \"{{int:savearticle}}\", salvestatakse su kommentaar ilma teemata.",
+       "missingcommentheader": "<strong>Meeldetuletus:</strong> Sa pole kirjutanud kommentaarile teemat.\nKui klõpsad uuesti \"$1\", salvestatakse su kommentaar ilma teemata.",
        "summary-preview": "Resümee eelvaade:",
        "subject-preview": "Resümee eelvaade:",
        "previewerrortext": "Sinu muudatuste eelvaatluse juures esines tõrge.",
        "accmailtitle": "Parool saadetud",
        "accmailtext": "Kasutajale [[User talk:$1|$1]] genereeritud juhuslik parool saadeti aadressile $2.\n\nSeda saab pärast sisselogimist muuta ''[[Special:ChangePassword|parooli muutmise]]'' leheküljel.",
        "newarticle": "(Uus)",
-       "newarticletext": "Lehekülge, kuhu link sind suunas, pole veel.\nEt lehekülg luua, alusta allolevas kastis kirjutamist (lisateave [$1 juhendist]).\nKui sattusid siia kogemata, klõpsa veebilehitseja ''tagasi''-nupule.",
+       "newarticletext": "Lehekülge, kuhu link sind suunas, pole veel.\nEt lehekülg luua, alusta allolevas kastis kirjutamist (lisateave [$1 juhendist]).\nKui sattusid siia kogemata, klõpsa brauseri ''tagasi''-nupule.",
        "anontalkpagetext": "----''See on anonüümse kasutaja arutelulehekülg. See kasutaja pole kontot loonud või ei kasuta seda. Sellepärast tuleb meil kasutaja tuvastamiseks kasutada tema IP-aadressi. Sellist IP-aadressi võib kasutada mitu kasutajat. Kui oled osutatud IP-aadressi kasutaja ning leiad, et siinsed kommentaarid ei puutu kuidagi sinusse, [[Special:CreateAccount|loo palun kasutajakonto]] või [[Special:UserLogin|logi sisse]], et sind edaspidi teiste anonüümsete kasutajatega segi ei aetaks.''",
        "noarticletext": "Käesoleval leheküljel hetkel teksti ei ole.\nVõid [[Special:Search/{{PAGENAME}}|otsida pealkirjaks olevat fraasi]] teistelt lehtedelt,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} uurida asjassepuutuvaid logisid] või [{{fullurl:{{FULLPAGENAME}}|action=edit}} puuduva lehekülje ise luua]</span>.",
        "noarticletext-nopermission": "Sellel leheküljel pole praegu teksti.\nSaad [[Special:Search/{{PAGENAME}}|otsida selle lehekülje pealkirja]] teistelt lehekülgedelt või <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} otsida seonduvatest logidest]</span>, aga sul pole õigust seda lehekülge alustada.",
        "userpage-userdoesnotexist": "Kasutajakontot \"<nowiki>$1</nowiki>\" pole olemas.\nPalun mõtle järele, kas soovid seda lehte luua või muuta.",
        "userpage-userdoesnotexist-view": "Kasutajakonto \"$1\" pole registreeritud.",
        "blocked-notice-logextract": "See kasutaja on praegu blokeeritud.\nAllpool on toodud viimane blokeerimislogi sissekanne:",
-       "clearyourcache": "<strong>Märkus:</strong> Võimalik, et pärast salvestamist tuleb muudatuste nägemiseks veebilehitseja puhver tühjendada.\n* <strong>Firefox / Safari:</strong> Hoia all <em>Shift</em>-klahvi ja klõpsa <em>Laadi uuesti</em> või vajuta kas <em>Ctrl-F5</em> või <em>Ctrl-R</em> (Macis <em>⌘-R</em>).\n* <strong>Google Chrome:</strong> Vajuta <em>Ctrl-Shift-R</em> (Macis <em>⌘-Shift-R</em>).\n* <strong>Internet Explorer:</strong> Hoia all <em>Ctrl</em>-klahvi ja klõpsa <em>Värskenda</em> või vajuta <em>Ctrl-F5</em>.\n* <strong>Opera:</strong> Mine asukohta <em>Menüü → Seaded</em> (Macis <em>Opera → Eelistused</em>) ja seejärel <em>Privaatsus ja turvalisus → Tühjenda sirvimisandmed → Puhverdatud pildid ja failid</em>.",
+       "clearyourcache": "<strong>Märkus:</strong> Võimalik, et pärast salvestamist tuleb muudatuste nägemiseks brauseri puhver tühjendada.\n* <strong>Firefox / Safari:</strong> Hoia all <em>Shift</em>-klahvi ja klõpsa <em>Laadi uuesti</em> või vajuta kas <em>Ctrl-F5</em> või <em>Ctrl-R</em> (Macis <em>⌘-R</em>).\n* <strong>Google Chrome:</strong> Vajuta <em>Ctrl-Shift-R</em> (Macis <em>⌘-Shift-R</em>).\n* <strong>Internet Explorer:</strong> Hoia all <em>Ctrl</em>-klahvi ja klõpsa <em>Värskenda</em> või vajuta <em>Ctrl-F5</em>.\n* <strong>Opera:</strong> Mine asukohta <em>Menüü → Seaded</em> (Macis <em>Opera → Eelistused</em>) ja seejärel <em>Privaatsus ja turvalisus → Tühjenda sirvimisandmed → Puhverdatud pildid ja failid</em>.",
        "usercssyoucanpreview": "'''Vihje:''' Enne salvestamist kasuta oma uue CSSi proovimiseks nuppu \"{{int:showpreview}}\".",
        "userjsyoucanpreview": "'''Vihje:''' Enne salvestamist kasuta oma uue JavaScripti proovimiseks nuppu \"{{int:showpreview}}\".",
        "usercsspreview": "'''Ära unusta, et seda versiooni sinu isiklikust stiililehest pole veel salvestatud!'''",
        "editingsection": "Muutmisel on osa leheküljest \"$1\"",
        "editingcomment": "Muutmisel on $1 (uus alaosa)",
        "editconflict": "Redigeerimiskonflikt: $1",
-       "explainconflict": "Keegi teine on muutnud seda lehekülge pärast seda, kui sina seda redigeerima hakkasid.\nÜlemine toimetamiskast sisaldab teksti viimast versiooni.\nSinu muudatused on alumises kastis.\nSul tuleb need viimasesse versiooni üle viia.\nKui klõpsad nupule \"{{int:savearticle}}\", salvestub '''ainult''' ülemises toimetamiskastis olev tekst.",
+       "explainconflict": "Keegi teine on muutnud seda lehekülge pärast seda, kui sina seda redigeerima hakkasid.\nÜlemine toimetamiskast sisaldab teksti viimast versiooni.\nSinu muudatused on alumises kastis.\nSul tuleb need viimasesse versiooni üle viia.\nKui klõpsad nupule \"$1\", salvestub '''ainult''' ülemises toimetamiskastis olev tekst.",
        "yourtext": "Sinu tekst",
        "storedversion": "Salvestatud redaktsioon",
        "nonunicodebrowser": "'''Hoiatus: Sinu brauser ei toeta Unicode'i.'''\nProbleemist möödahiilimiseks, selleks et saaksid lehekülgi turvaliselt redigeerida, näidatakse mitte-ASCII märke toimetuskastis kuueteistkümnendsüsteemi koodidena.",
        "readonlywarning": "<strong>Hoiatus: Andmebaas on lukustatud hooldustöödeks, nii et praegu ei saa parandusi salvestada.</strong>\nVõid teksti hilisemaks kasutamiseks alles hoida tekstifailina.\n\nSüsteemiadministraator, kes andmebaasi lukustas, andis järgmise selgituse: $1",
        "protectedpagewarning": "'''Hoiatus: See lehekülg on lukustatud, nii et ainult administraatori õigustega kasutajad saavad seda redigeerida.'''\nAllpool on toodud uusim logisissekanne:",
        "semiprotectedpagewarning": "'''Märkus:''' See lehekülg on lukustatud, nii et üksnes registreeritud kasutajad saavad seda muuta.\nAllpool on toodud uusim logisissekanne:",
-       "cascadeprotectedwarning": "<strong>Hoiatus:</strong> See lehekülg on nii lukustatud, et ainult administraatori õigustega kasutajad saavad seda redigeerida, sest lehekülg on osa {{PLURAL:$1|järgmisest|järgmistest}} kaskaadkaitsega {{PLURAL:$1|leheküljest|lehekülgedest}}:",
+       "cascadeprotectedwarning": "<strong>Hoiatus:</strong> See lehekülg on nii kaitstud, et ainult [[Special:ListGroupRights|teatud õigustega]] kasutajad saavad seda redigeerida, sest lehekülg on osa {{PLURAL:$1|järgmisest|järgmistest}} kaskaadkaitsega {{PLURAL:$1|leheküljest|lehekülgedest}}:",
        "titleprotectedwarning": "'''Hoiatus: See lehekülg on nii lukustatud, et selle loomiseks on tarvis [[Special:ListGroupRights|eriõigusi]].'''\nAllpool on toodud uusim logisissekanne:",
        "templatesused": "Sellel leheküljel on kasutusel {{PLURAL:$1|järgmine mall|järgmised mallid}}:",
        "templatesusedpreview": "Eelvaates {{PLURAL:$1|kasutatav mall|kasutatavad mallid}}:",
        "post-expand-template-argument-warning": "'''Hoiatus:''' See lehekülg sisaldab argumendina vähemalt üht malli, mille määratud maht on liiga suur.\nNeed argumendid on välja jäetud.",
        "post-expand-template-argument-category": "Leheküljed, kus malli argumendid on välja jäänud",
        "parser-template-loop-warning": "Mallid moodustavad tsükli: [[$1]]",
+       "template-loop-category": "Mallisilmusega leheküljed",
+       "template-loop-category-desc": "Leheküljel on mallisilmus ehk mall kutsub rekursiivselt iseend.",
        "parser-template-recursion-depth-warning": "Malli rekursiivse kasutamise limiit on ületatud ($1)",
        "language-converter-depth-warning": "Keeleteisendaja sügavuspiir ületatud ($1)",
        "node-count-exceeded-category": "Ületatud sõlmemääraga leheküljed",
        "search-file-match": "(vastab faili sisule)",
        "search-suggest": "Kas mõtlesid: $1",
        "search-rewritten": "Vasted otsingule $1. Otsi selle asemel teksti $2.",
-       "search-interwiki-caption": "Sõsarprojektid",
+       "search-interwiki-caption": "Tulemused sõsarprojektidest",
        "search-interwiki-default": "Tulemused asukohast $1:",
        "search-interwiki-more": "(veel)",
        "search-interwiki-more-results": "veel tulemusi",
        "timezoneuseserverdefault": "Kasuta serveri vaikesätet ($1)",
        "timezoneuseoffset": "Muu (määra ajavahe)",
        "servertime": "Serveri aeg:",
-       "guesstimezone": "Loe aeg veebilehitsejast",
+       "guesstimezone": "Loe aeg brauserist",
        "timezoneregion-africa": "Aafrika",
        "timezoneregion-america": "Ameerika",
        "timezoneregion-antarctica": "Antarktika",
        "userrights-expiry-options": "1 päev:1 day,1 nädal:1 week,1 kuu:1 month,3 kuud:3 months,6 kuud:6 months,1 aasta:1 year",
        "userrights-invalid-expiry": "Rühma \"$1\" aegumistähtaeg on vigane.",
        "userrights-expiry-in-past": "Rühma \"$1\" aegumistähtaeg on minevikus.",
-       "userrights-cannot-shorten-expiry": "Rühma \"$1\" aegumistähtaega ei saa varasemale ajale tuua. Ainult kasutajad, kellel on õigus seda rühma lisada ja eemaldada, saavad aegumistähtaegu varsemale ajale tuua.",
+       "userrights-cannot-shorten-expiry": "Rühma \"$1\" kuulumise aegumistähtaega ei saa varasemale ajale tuua. Ainult kasutajad, kellel on õigus seda rühma lisada ja eemaldada, saavad aegumistähtaegu varsemale ajale tuua.",
        "userrights-conflict": "Kasutajaõiguste muutmise konflikt! Palun vaata oma muudatused üle ja kinnita need.",
        "group": "Rühm:",
        "group-user": "Kasutajad",
        "right-editsemiprotected": "Muuta lehekülgi kaitsetasemega \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Muuta lehekülje sisumudelit",
        "right-editinterface": "Muuta kasutajaliidest",
-       "right-editusercssjs": "Redigeerida teiste kasutajate CSS- ja JS-faile",
        "right-editusercss": "Redigeerida teiste kasutajate CSS-faile",
        "right-edituserjs": "Redigeerida teiste kasutajate JS-faile",
        "right-editmyusercss": "Redigeerida oma CSS-kasutajafaile",
        "recentchanges-legend-heading": "<strong>Seletus:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vaata ka [[Special:NewPages|uute lehekülgede loendit]])",
        "recentchanges-submit": "Näita",
+       "rcfilters-activefilters": "Aktiivsed filtrid",
+       "rcfilters-quickfilters": "Kiirlingid",
+       "rcfilters-quickfilters-placeholder-title": "Linke pole veel salvestatud",
+       "rcfilters-quickfilters-placeholder-description": "Et filtri sätted salvestada ja et neid hiljem uuesti kasutada, klõpsa alloleva aktiivsete filtrite loendi juures järjehoidjaikooni.",
+       "rcfilters-savedqueries-defaultlabel": "Salvestatud filtrid",
+       "rcfilters-savedqueries-rename": "Nimeta ümber",
+       "rcfilters-savedqueries-setdefault": "Määra vaikefiltriteks",
+       "rcfilters-savedqueries-unsetdefault": "Tühista vaikevalik",
+       "rcfilters-savedqueries-remove": "Eemalda",
+       "rcfilters-savedqueries-new-name-label": "Nimi",
+       "rcfilters-savedqueries-apply-label": "Koosta kiirlink",
+       "rcfilters-savedqueries-cancel-label": "Loobu",
+       "rcfilters-savedqueries-add-new-title": "Salvesta filtrid kiirlingina",
+       "rcfilters-restore-default-filters": "Taasta vaikefiltrid",
+       "rcfilters-clear-all-filters": "Eemalda kõik filtrid",
+       "rcfilters-search-placeholder": "Filtri viimaseid muudatusi (sirvi või alusta tippimist)",
+       "rcfilters-invalid-filter": "Vigane filter",
+       "rcfilters-empty-filter": "Aktiivsed filtrid puuduvad. Näidatakse kogu kaastööd.",
+       "rcfilters-filterlist-title": "Filtrid",
+       "rcfilters-filterlist-whatsthis": "Mis see on?",
+       "rcfilters-filterlist-feedbacklink": "Anna uute filtrite beetaversiooni kohta tagasisidet",
+       "rcfilters-highlightbutton-title": "Tulemuste esiletõst",
+       "rcfilters-highlightmenu-title": "Vali värvus",
+       "rcfilters-highlightmenu-help": "Vali värvus, et see atribuut esile tõsta",
+       "rcfilters-filterlist-noresults": "Ei leitud ühtegi filtrit.",
+       "rcfilters-noresults-conflict": "Tulemusi ei leitud, sest otsikriteeriumid on konfliktsed.",
+       "rcfilters-state-message-subset": "See filter ei tee midagi, sest selle tulemused on kaasatud {{PLURAL:$2|järgmise laiema filtri|järgmiste laiemate filtrite}} tulemustes (tulemuste eristamiseks proovi esiletõstu): $1",
+       "rcfilters-state-message-fullcoverage": "Ühe rühma kõigi filtrite valimine on samaväärne mitte ühegi filtri valimisega, mistõttu ei tee see filter midagi. Rühmas on: $1",
+       "rcfilters-filtergroup-registration": "Registreerumine",
+       "rcfilters-filter-registered-label": "Registreerunud",
+       "rcfilters-filter-registered-description": "Sisse logitud kasutajad.",
+       "rcfilters-filter-unregistered-label": "Registreerumata",
+       "rcfilters-filter-unregistered-description": "Kasutajad, kes pole sisse logitud.",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "See filter on konfliktis {{PLURAL:$2|järgmise kogemustaseme filtriga|järgmiste kogemustasemete filtritega}}, mis {{PLURAL:$2|leiab|leiavad}} ainult registreerunud kasutajaid: $1",
+       "rcfilters-filtergroup-authorship": "Kaastöö autorsus",
+       "rcfilters-filter-editsbyself-label": "Enda muudatused",
+       "rcfilters-filter-editsbyself-description": "Sinu enda muudatused.",
+       "rcfilters-filter-editsbyother-label": "Teiste muudatused",
+       "rcfilters-filter-editsbyother-description": "Kõik muudatused peale sinu enda omade.",
+       "rcfilters-filtergroup-userExpLevel": "Kogemustase (ainult registreerunud kasutajate puhul)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Kogemustaseme filtrid leiavad ainult registreerunud kasutajaid, mistõttu on see filter konfliktis filtriga \"{{int:rcfilters-filter-unregistered-label}}\".",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filter \"{{int:rcfilters-filter-unregistered-label}}\" on konfliktis vähemalt ühe kogemustaseme filtriga, mis leiab ainult registreerunud kasutajaid. Konfliktsed filtrid on ära märgitud ülal aktiivsete filtrite loendis.",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Äsjaalustanud",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Alla 10 muudatuse või tegutsenud alla 4 päeva.",
+       "rcfilters-filter-user-experience-level-learner-label": "Tutvujad",
+       "rcfilters-filter-user-experience-level-learner-description": "Rohkem kogemust kui äsjaalustanutel, aga vähem kui kogenud kasutajatel.",
+       "rcfilters-filter-user-experience-level-experienced-label": "Kogenud kasutajad",
+       "rcfilters-filter-user-experience-level-experienced-description": "Üle 500 muudatuse ja tegutsenud üle 30 päeva.",
+       "rcfilters-filtergroup-automated": "Automaatne kaastöö",
+       "rcfilters-filter-bots-label": "Robot",
+       "rcfilters-filter-bots-description": "Automaattööriistade tehtud muudatused.",
+       "rcfilters-filter-humans-label": "Pole robot",
+       "rcfilters-filter-humans-description": "Vahetult inimese tehtud muudatused.",
+       "rcfilters-filtergroup-reviewstatus": "Ülevaatuse seis",
+       "rcfilters-filter-patrolled-label": "Kontrollitud",
+       "rcfilters-filter-patrolled-description": "Kontrollituks märgitud muudatused.",
+       "rcfilters-filter-unpatrolled-label": "Kontrollimata",
+       "rcfilters-filter-unpatrolled-description": "Muudatused, mida pole märgitud kontrollituks.",
+       "rcfilters-filtergroup-significance": "Olulisus",
+       "rcfilters-filter-minor-label": "Pisimuudatused",
+       "rcfilters-filter-minor-description": "Muudatused, mille autor märkis pisimuudatuseks.",
+       "rcfilters-filter-major-label": "Pole pisimuudatused",
+       "rcfilters-filter-major-description": "Muudatused, mida pole märgitud pisimuudatuseks.",
+       "rcfilters-filtergroup-watchlist": "Jälgimisloendi leheküljed",
+       "rcfilters-filter-watchlist-watched-label": "Jälgimisloendis",
+       "rcfilters-filter-watchlist-watched-description": "Sinu jälgimisloendi lehekülgedel tehtud muudatused.",
+       "rcfilters-filter-watchlist-watchednew-label": "Jälgimisloendis (uued muudatused)",
+       "rcfilters-filter-watchlist-watchednew-description": "Muudatused jälgimisloendi lehekülgedel, mida sa pole pärast muudatuse tegemist külastanud.",
+       "rcfilters-filter-watchlist-notwatched-label": "Pole jälgimisloendis",
+       "rcfilters-filter-watchlist-notwatched-description": "Kõik muu peale sinu jälgimisloendi lehekülgedel tehtud muudatuste.",
+       "rcfilters-filtergroup-changetype": "Muudatuse tüüp",
+       "rcfilters-filter-pageedits-label": "Lehekülgede muutmine",
+       "rcfilters-filter-pageedits-description": "Näiteks viki sisu, arutelude ja kategooriate kirjelduste muutmine.",
+       "rcfilters-filter-newpages-label": "Lehekülgede alustamine",
+       "rcfilters-filter-newpages-description": "Muudatused, millega alustati uut lehekülge.",
+       "rcfilters-filter-categorization-label": "Kategooriamuudatused",
+       "rcfilters-filter-categorization-description": "Kirjed lehekülgede kategooriatesse lisamise ja kategooriatest eemaldamise kohta.",
+       "rcfilters-filter-logactions-label": "Logitoimingud",
+       "rcfilters-filter-logactions-description": "Näiteks administraatoritoimingud, kontode loomine, lehekülgede kustutamine ja failide üleslaadimine.",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "Filter \"{{int:rcfilters-filter-minor-label}}\" on konfliktis vähemalt ühe muudatuste tüübifiltriga, sest teatud tüüpi muudatusi ei saa märkida pisimuudatusteks. Konfliktsed filtrid on ära märgitud ülal aktiivsete filtrite loendis.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Teatud tüüpi muudatusi ei saa märkida pisimuudatusteks. Seetõttu on see filter konfliktis järgmiste tüübifiltritega: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "See muudatuste tüübifilter on konfliktis filtriga \"{{int:rcfilters-filter-minor-label}}\". Teatud tüüpi muudatusi ei saa märkida pisimuudatusteks.",
+       "rcfilters-filtergroup-lastRevision": "Viimane redaktsioon",
+       "rcfilters-filter-lastrevision-label": "Viimane redaktsioon",
+       "rcfilters-filter-lastrevision-description": "Muudatus, mis on leheküljel kõige viimane.",
+       "rcfilters-filter-previousrevision-label": "Varasemad redaktsioonid",
+       "rcfilters-filter-previousrevision-description": "Kõik muudatused, mis pole leheküljel kõige viimased.",
        "rcnotefrom": "Allpool on toodud {{PLURAL:$5|muudatus|muudatused}} alates: <strong>$3, kell $4</strong> (näidatakse kuni <strong>$1</strong> muudatust)",
+       "rclistfromreset": "Lähtesta kuupäeva valik",
        "rclistfrom": "Näita muudatusi alates: $3, kell $2",
        "rcshowhideminor": "Pisiparandused ($1)",
        "rcshowhideminor-show": "näita",
        "rcshowhidecategorization": "Kategoriseerimine ($1)",
        "rcshowhidecategorization-show": "näita",
        "rcshowhidecategorization-hide": "peida",
-       "rclinks": "Näita viimast $1 muudatust viimase $2 päeva jooksul<br />$3",
+       "rclinks": "Näita viimast $1 muudatust viimase $2 päeva jooksul",
        "diff": "erin",
        "hist": "ajal",
        "hide": "peida",
        "minlength1": "Failinimes peab olema vähemalt üks täht.",
        "illegalfilename": "Failinimi \"$1\" sisaldab märke, mis pole pealkirjades lubatud. Palun nimeta fail ümber ja proovi uuesti.",
        "filename-toolong": "Failinimed ei või olla pikemad kui 240 baiti.",
-       "badfilename": "Pildi nimi on muudetud. Uus nimi on \"$1\".",
+       "badfilename": "Failinimi on muudetud. Uus nimi on \"$1\".",
        "filetype-mime-mismatch": "Faililaiend \".$1\" ei vasta faili ($2) MIME tüübile.",
        "filetype-badmime": "MIME tüübiga \"$1\" faile ei ole lubatud üles laadida.",
        "filetype-bad-ie-mime": "Seda faili ei saa üles laadida, sest Internet Explorer avastaks, et selle MIME tüüp on \"$1\", mis on keelatud või võimalik ohtlik failitüüp.",
        "copyuploaddisabled": "Internetiaadressilt üleslaadimine on keelatud.",
        "uploaddisabledtext": "Faili üleslaadimine on keelatud.",
        "php-uploaddisabledtext": "Failide üleslaadmine on PHP seadetes keelatud.\nPalun vaata <code>file_uploads</code> sätet.",
-       "uploadscripted": "See fail sisaldab HTML- või skriptikoodi, mida veebilehitseja võib valesti kuvada.",
+       "uploadscripted": "See fail sisaldab HTML- või skriptikoodi, mida brauser võib valesti kuvada.",
        "upload-scripted-pi-callback": "Üles ei saa laadida faili, mis sisaldab XML-laadilehe töötluskäsku.",
+       "upload-scripted-dtd": "Üles ei saa laadida SVG-faili, mis sisaldab ebastandardset DTD-määrangut.",
        "uploaded-script-svg": "Üleslaaditud SVG-failist leiti skriptitav element \"$1\".",
        "uploaded-hostile-svg": "Üleslaaditud SVG-faili laadielemendist leiti ebaturvaline CSS.",
        "uploaded-event-handler-on-svg": "Sündmuse halduse atribuutide <code>$1=\"$2\"</code> seadmine pole SVG-failis lubatud.",
        "listfiles_search_for": "Nimeotsing:",
        "listfiles-userdoesnotexist": "Kasutajakonto \"$1\" pole registreeritud.",
        "imgfile": "fail",
-       "listfiles": "Piltide loend",
+       "listfiles": "Failide loend",
        "listfiles_thumb": "Pisipilt",
        "listfiles_date": "Kuupäev",
        "listfiles_name": "Nimi",
        "listfiles-latestversion": "Praegune versioon",
        "listfiles-latestversion-yes": "Jah",
        "listfiles-latestversion-no": "Ei",
-       "file-anchor-link": "Pilt",
+       "file-anchor-link": "Fail",
        "filehist": "Faili ajalugu",
        "filehist-help": "Klõpsa kuupäeva ja kellaaega, et näha sel ajahetkel kasutusel olnud failiversiooni.",
        "filehist-deleteall": "kustuta kõik",
        "imagelinks": "Failikasutus",
        "linkstoimage": "Sellele failile {{PLURAL:$1|viitab järgmine lehekülg|viitavad järgmised $1 leheküljed}}:",
        "linkstoimage-more": "Sellele failile viitab enam kui {{PLURAL:$1|üks lehekülg|$1 lehekülge}}.\nJärgmises loendis on näidatud ainult {{PLURAL:$1|esimene viitav lehekülg|esimesed $1 viitavat lehekülge}}.\n[[Special:WhatLinksHere/$2|Kogu loetelu]] on saadaval.",
-       "nolinkstoimage": "Sellele pildile ei viita ükski lehekülg.",
+       "nolinkstoimage": "Sellele failile ei viita ükski lehekülg.",
        "morelinkstoimage": "Vaata [[Special:WhatLinksHere/$1|veel linke]], mis sellele failile viitavad.",
        "linkstoimage-redirect": "$1 (failiümbersuunamine) $2",
        "duplicatesoffile": "{{PLURAL:$1|Järgmine fail|Järgmised $1 faili}} on selle faili {{PLURAL:$1|duplikaat|duplikaadid}} ([[Special:FileDuplicateSearch/$2|üksikasjad]]):",
        "booksources-text": "Allpool on linke teistele lehekülgedele, kus müüakse uusi ja kasutatud raamatuid. Lehekülgedel võib olla ka lisainfot raamatute kohta:",
        "booksources-invalid-isbn": "Antud ISBN-number ei ole korrektne; kontrolli algallikast kopeerides vigu.",
        "magiclink-tracking-rfc": "RFC-võlulingiga leheküljed",
+       "magiclink-tracking-rfc-desc": "Sellel leheküljel on RFC-võlulinke. Ülemineku kohta loe saidilt [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org].",
        "magiclink-tracking-pmid": "PMID-võlulingiga leheküljed",
+       "magiclink-tracking-pmid-desc": "Sellel leheküljel on PMID-võlulinke. Ülemineku kohta loe saidilt [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org].",
        "magiclink-tracking-isbn": "ISBN-võlulingiga leheküljed",
+       "magiclink-tracking-isbn-desc": "Sellel leheküljel on ISBN-võlulinke. Ülemineku kohta loe saidilt [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org].",
        "specialloguserlabel": "Täitja:",
        "speciallogtitlelabel": "Objekt (pealkiri või {{ns:user}}:kasutajanimi):",
        "log": "Logid",
        "post-expand-template-inclusion-category-desc": "Kõigi mallide hõrendamise järel on lehekülg suurem kui <code>$wgMaxArticleSize</code>, mistõttu jäid mõned mallid hõrendamata.",
        "post-expand-template-argument-category-desc": "Malli argumendi (midagi kolmekordsete looksulgude vahel, näiteks <code>{{{Foo}}}</code>) hõrendamise järel on lehekülg suurem kui <code>$wgMaxArticleSize</code>.",
        "expensive-parserfunction-category-desc": "Lehekülg kasutab liiga palju kulukaid parserifunktsioone nagu <code>#ifexist</code>. Vaata [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit dokumentatsiooni].",
-       "broken-file-category-desc": "Leheküljel on katkine pildilink, millega manustatakse fail, mida pole olemas.",
+       "broken-file-category-desc": "Leheküljel on katkine faililink, millega manustatakse fail, mida pole olemas.",
        "hidden-category-category-desc": "Selle kategooria leheküljel on <code><nowiki>__HIDDENCAT__</nowiki></code>, mis vaikimisi ei lase näidata seda kategooriat lehekülgedel kategoorialinkide kastis.",
        "trackingcategories-nodesc": "Kirjeldus puudub.",
        "trackingcategories-disabled": "Kategooria on keelatud.",
        "emailtarget": "Saaja kasutajanime sisestamine",
        "emailusername": "Kasutajanimi:",
        "emailusernamesubmit": "Sobib",
-       "email-legend": "Saada e-kiri {{GRAMMAR:genitive|{{SITENAME}}}} kasutajale",
+       "email-legend": "E-kirja saatmine teisele {{GRAMMAR:genitive|{{SITENAME}}}} kasutajale",
        "emailfrom": "Kellelt:",
        "emailto": "Kellele:",
        "emailsubject": "Teema:",
        "emailmessage": "Sõnum:",
        "emailsend": "Saada",
-       "emailccme": "Saada mulle koopia.",
+       "emailccme": "Saada mulle selle e-kirja koopia",
        "emailccsubject": "Koopia sinu sõnumist kasutajale $1: $2",
        "emailsent": "E-kiri saadetud",
        "emailsenttext": "Sinu teade on e-kirjaga saadetud.",
        "enotif_body_intro_restored": "$2 taastas {{GRAMMAR:genitive|{{SITENAME}}}} lehekülje $1 kuupäeval $PAGEEDITDATE. Vaata lehekülje praegust redaktsiooni aadressil $3.",
        "enotif_body_intro_changed": "$2 muutis {{GRAMMAR:genitive|{{SITENAME}}}} lehekülge $1 kuupäeval $PAGEEDITDATE. Vaata lehekülje praegust redaktsiooni aadressil $3.",
        "enotif_lastvisited": "Kõigi sinu viimase külastuse järel tehtud muudatuste nägemiseks vaata: $1.",
-       "enotif_lastdiff": "Muudatus on leheküljel $1.",
+       "enotif_lastdiff": "Et seda muudatust näha, vaata: $1.",
        "enotif_anon_editor": "anonüümne kasutaja $1",
        "enotif_body": "Lugupeetud $WATCHINGUSERNAME\n\n$PAGEINTRO $NEWPAGE\n\nRedigeerija resümee: $PAGESUMMARY $PAGEMINOREDIT\n\nRedigeerijaga ühenduse võtmine:\ne-post: $PAGEEDITOR_EMAIL\nviki: $PAGEEDITOR_WIKI\n\nSeni kuni sa sisselogituna seda lehekülge ei külasta, selle leheküljega seotud toimingute kohta sulle uusi teavituse e-kirju ei saadeta. Jälgimisloendis saaksid kõigi jälgitavate lehekülgedega seotud teavitussätted ka lähtestada.\n\nAbivalmilt\n{{GRAMMAR:genitive|{{SITENAME}}}} teavitussüsteem\n\n--\nE-kirjatsi saabuvate teavituste sätteid saad muuta leheküljel\n{{canonicalurl:{{#special:Preferences}}}}.\n\nOma jälgimisloendi sätete muutmiseks mine leheküljele\n{{canonicalurl:Special:Watchlist/edit}}.\n\nLehekülje kustutamiseks jälgimisloendist mine leheküljele $UNWATCHURL.\n\nTagasiside ja abi:\n$HELPPAGE",
        "created": "loonud lehekülje",
        "undeleteviewlink": "vaata",
        "undeleteinvert": "Pööra valik teistpidi",
        "undeletecomment": "Põhjus:",
-       "undeletedrevisions": "$1 {{PLURAL:$1|redaktsioon|redaktsiooni}} taastatud",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 redaktsioon|$1 redaktsiooni}} ja {{PLURAL:$2|1 fail|$2 faili}} taastatud",
-       "undeletedfiles": "{{PLURAL:$1|1 fail|$1 faili}} taastatud",
        "cannotundelete": "Taastamine ebaõnnestus osaliselt või täielikult:\n$1",
        "undeletedpage": "'''$1 on taastatud'''\n\n[[Special:Log/delete|Kustutamise logist]] võib leida loendi viimastest kustutamistest ja taastamistest.",
        "undelete-header": "Hiljuti kustutatud leheküljed leiad [[Special:Log/delete|kustutamislogist]].",
        "sp-contributions-uploads": "üleslaadimised",
        "sp-contributions-logs": "logid",
        "sp-contributions-talk": "arutelu",
-       "sp-contributions-userrights": "kasutajaõiguste muutmine",
+       "sp-contributions-userrights": "{{GENDER:$1|kasutajaõiguste}} haldus",
        "sp-contributions-blocked-notice": "See kasutaja on parajasti blokeeritud. Allpool on toodud kõige hilisem blokeerimislogi sissekanne:",
        "sp-contributions-blocked-notice-anon": "See IP-aadress on parajasti blokeeritud.\nAllpool on toodud viimane blokeerimislogi sissekanne:",
        "sp-contributions-search": "Kaastöö otsimine",
        "unblocked-id": "Blokeerimine $1 on lõpetatud",
        "unblocked-ip": "IP-aadressi [[Special:Contributions/$1|$1]] blokeering on eemaldatud.",
        "blocklist": "Blokeeritud kasutajad",
+       "autoblocklist": "Automaatblokeeringud",
+       "autoblocklist-submit": "Otsi",
+       "autoblocklist-legend": "Automaatblokeeringute loend",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Kohalik automaatblokeering|Kohalikud automaatblokeeringud}}",
+       "autoblocklist-total-autoblocks": "Kokku automaatblokeeringuid: $1",
+       "autoblocklist-empty": "Automaatblokeeringute loend on tühi.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Muu automaatblokeering|Muud automaatblokeeringud}}",
        "ipblocklist": "Blokeeritud kasutajad",
        "ipblocklist-legend": "Leia blokeeritud kasutaja",
        "blocklist-userblocks": "Peida kontod",
        "tooltip-t-permalink": "Püsilink lehekülje sellele redaktsioonile",
        "tooltip-ca-nstab-main": "Vaata sisulehekülge",
        "tooltip-ca-nstab-user": "Näita kasutaja lehte",
-       "tooltip-ca-nstab-media": "Näita pildi lehte",
+       "tooltip-ca-nstab-media": "Vaata meediafaili lehekülge",
        "tooltip-ca-nstab-special": "See on erilehekülg ja seda ei saa redigeerida.",
        "tooltip-ca-nstab-project": "Näita projekti lehte",
-       "tooltip-ca-nstab-image": "Näita pildi lehte",
+       "tooltip-ca-nstab-image": "Vaata faili lehekülge",
        "tooltip-ca-nstab-mediawiki": "Näita süsteemi sõnumit",
        "tooltip-ca-nstab-template": "Näita malli",
        "tooltip-ca-nstab-help": "Näita abilehte",
        "anonymous": "{{GRAMMAR:genitive|{{SITENAME}}}} {{PLURAL:$1|anonüümne kasutaja|anonüümsed kasutajad}}",
        "siteuser": "{{GRAMMAR:genitive|{{SITENAME}}}} kasutaja $1",
        "anonuser": "{{GRAMMAR:genitive|{{SITENAME}}}} anonüümne kasutaja $1",
-       "lastmodifiedatby": "Viimati muutis lehekülge $3 $2 kell $1.",
+       "lastmodifiedatby": "Seda lehekülge muutis viimati $3 ($2, $1).",
        "othercontribs": "Põhineb järgmiste kasutajate kaastööl: $1.",
        "others": "teiste",
        "siteusers": "{{GRAMMAR:genitive|{{SITENAME}}}} {{PLURAL:$2|kasutaja|kasutajad}} $1",
        "newimages-user": "IP-aadress või kasutajanimi",
        "newimages-showbots": "Näita robotite üles laaditud faile",
        "newimages-hidepatrolled": "Peida kontrollitud failid",
-       "noimages": "Uusi pilte ei ole.",
+       "noimages": "Uued failid puuduvad.",
        "gallery-slideshow-toggle": "Lülita pisipildid ümber",
        "ilsubmit": "Otsi",
        "bydate": "kuupäeva järgi",
        "confirmemail_success": "Sinu e-posti aadress on kinnitatud\nVõid nüüd [[Special:UserLogin|sisse logida]].",
        "confirmemail_loggedin": "Sinu e-posti aadress on nüüd kinnitatud.",
        "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\".\n\nKinnitamaks, et kasutajakonto tõepoolest kuulub sulle ning et aktiveerida e-posti teenused, ava veebilehitsejas järgmine link:\n\n$3\n\nKui sa *pole* kontot registreerinud, ava järgmine link kinnituse tühistamiseks:\n\n$5\n\nKinnituskoodi aegumistähtaeg: $4.",
-       "confirmemail_body_changed": "Keegi IP-aadressilt $1, ilmselt sa ise,\nmuutis {{GRAMMAR:inessive|{{SITENAME}}}} konto \"$2\" e-posti aadressiks selle aadressi.\n\nKinnitamaks, et see konto tõepoolest kuulub sulle ja e-posti teenuste taasaktiveerimiseks, ava oma veebilehitsejas järgmine link:\n\n$3\n\nKui see *pole* sinu konto, ava järgmine link\nkinnituse tühistamiseks:\n\n$5\n\nKinnituskood aegub kuupäeval $4.",
+       "confirmemail_body": "Keegi IP-aadressilt $1, ilmselt sa ise,\nregistreeris selle e-posti aadressiga {{GRAMMAR:inessive|{{SITENAME}}}} konto \"$2\".\n\nKinnitamaks, et kasutajakonto tõepoolest kuulub sulle ning et aktiveerida e-posti teenused, ava brauseris järgmine link:\n\n$3\n\nKui sa *pole* kontot registreerinud, ava järgmine link,\net e-posti aadressi kinnitus tühistada:\n\n$5\n\nKinnituskoodi aegumistähtaeg: $4.",
+       "confirmemail_body_changed": "Keegi IP-aadressilt $1, ilmselt sa ise,\nmuutis {{GRAMMAR:inessive|{{SITENAME}}}} konto \"$2\" e-posti aadressiks selle aadressi.\n\nKinnitamaks, et see konto tõepoolest kuulub sulle ja et e-posti teenused taasaktiveerida, ava brauseris järgmine link:\n\n$3\n\nKui see *pole* sinu konto, ava järgmine link,\net kinnitus tühistada:\n\n$5\n\nKinnituskood aegub kuupäeval $4.",
        "confirmemail_body_set": "Keegi IP-aadressilt $1, arvatavasti sina ise, on {{GRAMMAR:genitive|{{SITENAME}}}} konto \"$2\" e-posti aadressiks määranud selle aadressi.\n\nKinnitamaks, et see konto kuulub tõesti sulle ja et aktiveerida e-posti teenused, ava võrgulehitsejas järgmine link:\n\n$3\n\nKui konto *ei* kuulu sulle, kasuta e-posti aadressi kinnituse tühistamiseks järgmist linki:\n\n$5\n\nSelle kinnituskoodi aegumistähtaeg on $4.",
        "confirmemail_invalidated": "E-posti aadressi kinnitamine tühistati",
        "invalidateemail": "E-posti aadressi kinnituse tühistamine",
        "confirmrecreate": "Kasutaja [[User:$1|$1]] ([[User talk:$1|arutelu]]) kustutas lehekülje sellel ajal, kui sina seda redigeerisid. Põhjus:\n: ''$2''\nPalun kinnita, et soovid tõesti selle lehekülje taasluua.",
        "confirmrecreate-noreason": "Kasutaja [[User:$1|$1]] ([[User talk:$1|arutelu]]) kustutas selle lehekülje, pärast seda kui redigeerimist alustasid. Palun kinnita, et tahad tõesti selle lehekülje uuesti luua.",
        "recreate": "Loo uuesti",
+       "confirm-purge-title": "Lehekülje vahemälu tühjendamine",
        "confirm_purge_button": "Sobib",
        "confirm-purge-top": "Tühjenda selle lehekülje vahemälu?",
        "confirm-purge-bottom": "Toiming puhastab lehekülje vahemälu ja kuvab uusima versiooni.",
        "htmlform-user-not-valid": "<strong>$1</strong> pole sobiv kasutajanimi.",
        "logentry-delete-delete": "$1 {{GENDER:$2|kustutas}} lehekülje $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|kustutas}} ülekirjutamise teel ümbersuunamise $3",
-       "logentry-delete-restore": "$1 {{GENDER:$2|taastas}} lehekülje $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|taastas}} lehekülje $3 ($4)",
+       "logentry-delete-restore-nocount": "$1 {{GENDER:$2|taastas}} lehekülje $3",
+       "restore-count-revisions": "{{PLURAL:$1|üks redaktsioon|$1 redaktsiooni}}",
+       "restore-count-files": "{{PLURAL:$1|üks fail|$1 faili}}",
        "logentry-delete-event": "$1 {{GENDER:$2|muutis}} leheküljel $3 {{PLURAL:$5|ühe|$5}} logisündmuse nähtavust: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|muutis}} leheküljel $3 {{PLURAL:$5|ühe|$5}} redaktsiooni nähtavust: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|muutis}} leheküljel $3 logisündmuste nähtavust",
        "feedback-message": "Sõnum:",
        "feedback-subject": "Teema:",
        "feedback-submit": "Saada",
-       "feedback-terms": "Mõistan, et minu kasutajaagendi andmed sisaldavad teavet minu veebilehitseja ja operatsioonisüsteemi täpse versiooni kohta ning need andmed tehakse minu tagasiside juures avalikuks.",
+       "feedback-terms": "Mõistan, et minu kasutajaagendi andmed sisaldavad teavet minu brauseri ja operatsioonisüsteemi täpse versiooni kohta ning need andmed tehakse minu tagasiside juures avalikuks.",
        "feedback-termsofuse": "Olen nõus andma tagasisidet vastavalt kasutustingimustele.",
        "feedback-thanks": "Aitäh! Sinu tagasiside on postitatud leheküljele \"[$2 $1]\".",
        "feedback-thanks-title": "Aitäh!",
        "special-characters-group-thai": "Tai",
        "special-characters-group-lao": "Lao",
        "special-characters-group-khmer": "Khmeeri",
+       "special-characters-group-canadianaboriginal": "Silpmärgid (Kanada)",
        "special-characters-title-endash": "mõttekriips",
        "special-characters-title-emdash": "pikk mõttekriips",
        "special-characters-title-minus": "miinusmärk",
        "mw-widgets-titleinput-description-redirect": "ümbersuunamine leheküljele \"$1\"",
        "mw-widgets-categoryselector-add-category-placeholder": "Lisa kategooria...",
        "mw-widgets-usersmultiselect-placeholder": "Lisa veel...",
+       "date-range-from": "Kuupäevast:",
+       "date-range-to": "Kuupäevani:",
        "sessionmanager-tie": "Ei saa ühitada mitut päringu autentimise tüüpi: $1.",
        "sessionprovider-generic": "klassi $1 seansse",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "küpsisepõhised seansid",
        "restrictionsfield-label": "Lubatud IP-aadressivahemikud:",
        "restrictionsfield-help": "Üks IP-aadress või CIDR-vahemik rea kohta. Et lubada kõik, kasuta järgmist süntaksit:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "redaktsioon $1",
-       "pageid": "lehekülje identifikaator $1"
+       "pageid": "lehekülje identifikaator $1",
+       "undelete-cantedit": "Sa ei saa seda lehekülge taastada, sest sul pole lubatud seda lehekülge redigeerida.",
+       "undelete-cantcreate": "Sa ei saa seda lehekülge taastada, sest sellise pealkirjaga lehekülg puudub ja sul pole lubatud seda lehekülge alustada."
 }
index e98e639..0604eb2 100644 (file)
                        "Matma Rex",
                        "Gorkaazk",
                        "Vriullop",
-                       "Osoitz"
+                       "Osoitz",
+                       "Mikel Ibaiba"
                ]
        },
        "tog-underline": "Azpimarratu loturak:",
        "tog-hideminor": "Ezkutatu azken aldaketetan aldaketa txikiak",
-       "tog-hidepatrolled": "Ezkutatu patruilatutako aldaketa azken aldaketetan",
+       "tog-hidepatrolled": "Ezkutatu patruilatutako aldaketa azken aldaketetatik",
        "tog-newpageshidepatrolled": "Ezkutatu patruilatutako orriak, orri-zerrenda berritik",
        "tog-hidecategorization": "Ezkutatu orrien kategorizazioa",
        "tog-extendwatchlist": "Jarraipen-zerrenda zabaldu aldaketa guztiak ikusteko, ez bakarrik azken aldaketak",
@@ -71,7 +72,7 @@
        "tog-diffonly": "''Diff''-ak agertzen direnean, orrialdearen edukiera ezkutatu",
        "tog-showhiddencats": "Ikusi kategoria ezkutuak",
        "tog-norollbackdiff": "Rollback bat egin ondoren ezberdintasunak ez erakutsi",
-       "tog-useeditwarning": "Abisa nazazu gorde gabeko aldaketak eginez orrialde bat uzten dudanean",
+       "tog-useeditwarning": "Abisa nazazu gorde gabeko aldaketak eginez edizio orrialde bat uzten dudanean",
        "tog-prefershttps": "Erabili beti konexio seguru bat sartzerakoan",
        "underline-always": "Beti",
        "underline-never": "Inoiz ez",
        "anontalk": "Eztabaida",
        "navigation": "Nabigazioa",
        "and": "&#32;eta",
-       "qbfind": "Aurkitu",
-       "qbbrowse": "Arakatu",
-       "qbedit": "Aldatu",
-       "qbpageoptions": "Orrialde hau",
-       "qbmyoptions": "Nire orrialdeak",
        "faq": "Maiz egindako galderak",
-       "faqpage": "Project:Maiz egindako galderak",
        "actions": "Ekintzak",
        "namespaces": "Izen-tarteak",
        "variants": "Aldaerak",
        "edit-local": "Aldatu deskribapen lokala",
        "create": "Sortu",
        "create-local": "Gehitu deskribapen lokala",
-       "editthispage": "Orri hau aldatu",
-       "create-this-page": "Sortu orri hau",
        "delete": "Ezabatu",
-       "deletethispage": "Ezabatu orri hau",
-       "undeletethispage": "Orrialde hau bergaitu",
        "undelete_short": "Berreskuratu {{PLURAL:$1|aldaketa bat|$1 aldaketa}}",
        "viewdeleted_short": "Ikusi ezabatutako {{PLURAL:$1|bidalketa bat|$1 bidalketa}}",
        "protect": "Babestu",
        "protect_change": "aldatu",
-       "protectthispage": "Orri hau babestu",
        "unprotect": "Babesa aldatu",
-       "unprotectthispage": "Orrialde honen babesa aldatu",
        "newpage": "Orrialde berria",
-       "talkpage": "Orrialde honi buruz eztabaidatu",
-       "talkpagelinktext": "Eztabaida",
-       "specialpage": "Aparteko orrialdea",
+       "talkpagelinktext": "eztabaida",
+       "specialpage": "Orrialde berezia",
        "personaltools": "Tresna pertsonalak",
-       "articlepage": "Artikulua ikusi",
        "talk": "Eztabaida",
        "views": "Ikustaldiak",
        "toolbox": "Tresnak",
-       "tool-link-userrights": "Erabiltzaile {{GENDER:$1|taldea}} aldatu",
+       "tool-link-userrights": "Aldatu {{GENDER:$1|erabiltzaile}} taldeak",
        "tool-link-userrights-readonly": "{{GENDER:$1|Erabiltzailearen}} taldeak  ikusi",
        "tool-link-emailuser": "{{GENDER:$1|Erabiltzale}} honi e-posta bidali",
-       "userpage": "Lankide orrialdea ikusi",
-       "projectpage": "Proiektuaren orrialdea ikusi",
        "imagepage": "Ikusi fitxategiaren orria",
        "mediawikipage": "Mezu orrialdea ikusi",
        "templatepage": "Txantiloi orrialdea ikusi",
        "redirectedfrom": "($1(e)tik birzuzenduta)",
        "redirectpagesub": "Birbideratze orria",
        "redirectto": "Hona birzuzentzen du:",
-       "lastmodifiedat": "Orrialdearen azken aldaketa: $2, $1.",
+       "lastmodifiedat": "Orrialdearen azken aldaketa: $1, $2.",
        "viewcount": "Orrialde hau {{PLURAL:$1|behin|$1 aldiz}} bisitatu da.",
        "protectedpage": "Babestutako orrialdea",
-       "jumpto": "Hona jo:",
+       "jumpto": "Hona jauzi:",
        "jumptonavigation": "nabigazioa",
        "jumptosearch": "bilatu",
        "view-pool-error": "Barkatu, zerbitzariak gainezka daude uneotan.\nErabiltzaile gehiegi ari da orrialde hau ikusi nahiean.\nMesedez itxaron ezazu unetxo bat orrialde honetara berriz sartzen saiatu baino lehen.\n\n$1",
        "retrievedfrom": "\"$1\"(e)tik jasota",
        "youhavenewmessages": "$1 dauzkazu ($2).",
        "youhavenewmessagesfromusers": "{{PLURAL:$3|Beste erabiltzaile baten|$3 erabiltzaileren}} $1 ($2).",
-       "youhavenewmessagesmanyusers": "Hainbat erabiltzaileren $1 ($2).",
+       "youhavenewmessagesmanyusers": "Hainbat erabiltzaileren $1 daukazu ($2).",
        "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",
        "no-null-revision": "Ezin izan da \"$1\" orrialdearen berrikuspen huts bat sortu",
        "badtitle": "Izenburu ezegokia",
        "badtitletext": "Eskatutako orri izenburua ez da baliozkoa, hutsik dago, edo gaizki lotutako hizkuntzen arteko lotura da. Baliteke izenburuetan erabili ezin den karaktereren bat edukitzea.",
+       "title-invalid-utf8": "Eskatutako orriak balio ez duen UTF-8 sekuentzia darama.",
+       "title-invalid-interwiki": "Eskatutako orriaren tituluak bertan erabili ezin den interwiki linka darama.",
        "title-invalid-talk-namespace": "Eskatutako orriaren izenburuak agian existitzen ez den eztabaida-orri bati egiten dio erreferentzia.",
        "title-invalid-characters": "Eskatutako orriaren izenburuak baliagarri ez diren karaktereak ditu: \"$1\".",
        "perfcached": "Hurrengo datuak katxean gordeta daude eta litekeena da guztiz eguneratuta ez egotea. Gehienez {{PLURAL:$1|emaitza 1 dago|$1 emaitza daude}} eskuragarri katxean.",
        "createacct-benefit-body2": "{{PLURAL:$1|Orrialde 1|$1 orrialde}}",
        "createacct-benefit-body3": "azkeneko {{PLURAL:$1|egilea|egileak}}",
        "badretype": "Idatzitako pasahitzak ez dira berdinak.",
+       "usernameinprogress": "Erabiltzaile honetarako kontu eraketa martxan dago jadanik. Mesedez, itxaron.",
        "userexists": "Aukeratutako erabiltzaile izena hartuta dago.\nMesedez beste bat aukeratu.",
        "loginerror": "Errorea saioa hastean",
        "createacct-error": "Kontua sortzerakoan arazoa",
        "wrongpassword": "Pasahitza ez da zuzena. Saiatu berriz.",
        "wrongpasswordempty": "Pasahitza hutsik dago. Saiatu berriz.",
        "passwordtooshort": "Pasahitzek {{PLURAL:$1|karaktere 1|$1 karaktere}} gutxienez eduki behar dituzte.",
+       "passwordtoolong": "Pasahitzak ezin dira {{PLURAL:$1|karaktere bat|$1 karaktere}} baino luzeagoak izan.",
+       "passwordtoopopular": "Ezin dira arrunki aukeratutako pasahitzak erabili. Aukera ezazu pasahitz originalago bat, mesedez.",
        "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 berrezarri",
        "changepassword-throttled": "Saioa hasteko saiakera gehiegi egin berri dituzu.\nBerriro saiatu aurretik $1 itxoin, mesedez.",
        "botpasswords": "Bot pasahitzak",
        "botpasswords-disabled": "Bot pasahitzak desgaituak daude.",
+       "botpasswords-existing": "Dauden bot-en pasahitzak",
+       "botpasswords-createnew": "Sortu errobot pasaitza berri bat",
+       "botpasswords-editexisting": "Aldatu lehendik dagoen errobot pasaitza",
        "botpasswords-label-appid": "Bot izena:",
        "botpasswords-label-create": "Sortu",
        "botpasswords-label-update": "Eguneratu",
        "botpasswords-label-cancel": "Utzi",
        "botpasswords-label-delete": "Ezabatu",
        "botpasswords-label-resetpassword": "Pasahitza berrezarri",
+       "botpasswords-label-grants": "Aplikagarriak diren diru laguntzak:",
        "botpasswords-label-grants-column": "Baimenduta",
        "botpasswords-bad-appid": "Bot horren \"$1\" izen hori ez da baliagarria.",
        "botpasswords-insert-failed": "Ezin izan da bot \"$1\" izen hori gehitu. Dagoeneko gehituta zegoen?",
+       "botpasswords-update-failed": "\"$1\" Errobota ezin eguneratu. Ezabatua izan al da?",
+       "botpasswords-created-title": "Botaren pasahitza sortu da",
+       "botpasswords-updated-title": "Botaren pasahitza eguneratu da",
+       "botpasswords-deleted-title": "Botaren pasahitza ezabatu da",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider ez dago eskuragarri.",
+       "botpasswords-restriction-failed": "Errobot pasahitza murrizketek logina saihesten dute.",
        "resetpass_forbidden": "Ezin dira pasahitzak aldatu",
+       "resetpass_forbidden-reason": "Ezin dira pasahitzak aldatu: $1",
        "resetpass-no-info": "Orrialde honetara zuzenean sartzeko izena eman behar duzu.",
        "resetpass-submit-loggedin": "Pasahitza aldatu",
        "resetpass-submit-cancel": "Utzi",
        "passwordreset-emailtitle": "{{SITENAME}}-rako kontuaren xehetasunak",
        "passwordreset-emailelement": "Erabiltzaile izena: \n$1\n\nBehin-behineko pasahitza: \n$2",
        "passwordreset-emailsentemail": "Hau zure kontuarekin lotuta dagoen helbide elektronikoa baldin bada, mezu elektronikoa bidaliko da zure pasahitza berrezartzeko.",
+       "passwordreset-invalidemail": "Baliogabeko helbide elektronikoa",
+       "passwordreset-nodata": "Ez da erabiltzaile-izenik ezta helbide elektroniko bat eman",
        "changeemail": "Aldatu edo kendu e-mail helbidea",
        "changeemail-header": "Bete ezazu inprimaki hau, zure helbide elektronikoa aldatzeko. Zure kontuari helbide elektronikorik elkartuta ez izatea nahi baduzu, utz ezazu hutsik helbide elektroniko berria, inprimakia bidaltzen duzunean.",
        "changeemail-no-info": "Orrialde honetara zuzenean sartzeko izena eman behar duzu.",
        "changeemail-none": "(bat ere ez)",
        "changeemail-password": "Zure {{SITENAME}}ko pasahitza:",
        "changeemail-submit": "E-posta aldatu",
+       "changeemail-throttled": "Saioa hasteko saiakera gehiegi egin dituzu. Mesedez, itxaron $1 berriro saiatu aurretik.",
+       "changeemail-nochange": "Mesedez, sar ezazu beste helbide elektroniko berri bat.",
        "resettokens": "Tokenak berrezarri",
        "resettokens-no-tokens": "Ez dago tokenik berrezartzeko.",
        "resettokens-tokens": "Tokenak:",
        "invalid-content-data": "Eduki datu baliogabea",
        "content-not-allowed-here": "\"$1\" edukia ez dago baimendua [[$2]] orrialdean",
        "editwarning-warning": "Orri honetatik irteten bazara, egindako aldaketak galdu egingo dira, beharbada.\nSaioa hasi baduzu, mezu hau kendu dezakezu zure hobespenen orriko «{{int:prefs-editing}}» atalean.",
+       "editpage-invalidcontentmodel-title": "Eduki eredua ez da onartzen.",
        "editpage-notsupportedcontentformat-title": "Eduki formatu hori ez da onartzen",
        "content-model-wikitext": "wikitestua",
        "content-model-text": "testu laua",
        "post-expand-template-argument-warning": "Oharra: Orri honek gutxienez txantiloi eztabaida bat du, zein luzeegia den.\nEztabaidak aipatu gabe utzi dira.",
        "post-expand-template-argument-category": "Kontuan hartu ez diren txantiloiak dituzten orrialdeak",
        "parser-template-loop-warning": "Txantiloiaren itzul-biraketa aurkitu da: [[$1]]",
+       "template-loop-category": "Begizta txantiloidun orria",
        "parser-template-recursion-depth-warning": "Txantiloaren rekurtsio sakoneraren muga gainditu da ($1)",
        "language-converter-depth-warning": "Hizkuntza-bihurgailuaren sakonerak ($1) muga gainditu du",
        "node-count-exceeded-category": "Nodo-zenbaketa gainditu den orrialdeak",
        "page_first": "lehena",
        "page_last": "azkena",
        "histlegend": "Alderaketa hautatzea: marka itzazu alderatu nahi dituzun bi bertsioak, eta saka ezazu «Enter» edo klika ezazu beheko botoia.<br />\nAzalpenak: '''({{int:cur}})''' = oraingo bertsioarekiko aldeak,\n'''({{int:last}})''' = aurreko bertsioarekiko aldeak, \n'''{{int:minoreditletter}}''' = aldaketa txikia.",
-       "history-fieldset-title": "Historia erakutsi",
-       "history-show-deleted": "Ezabatuak soilik",
+       "history-fieldset-title": "Berraztertzeak bilatu",
+       "history-show-deleted": "Berrikusketa ezabatuak soilik",
        "histfirst": "zaharrena",
        "histlast": "berriena",
        "historysize": "({{PLURAL:$1|byte 1|$1 byte}})",
        "mergehistory-empty": "Ezin da berrikuspenik bateratu",
        "mergehistory-done": "$1(e)ko {{PLURAL:$3|berrikuspen}} bateratu egin {{PLURAL:$3|da|dira}} [[:$2]](e)n.",
        "mergehistory-fail": "Ezin izan da historia bateratu; egiaztatu orrialde eta denbora parametroak.",
+       "mergehistory-fail-invalid-source": "Jatorrizko orria ez du balio.",
+       "mergehistory-fail-invalid-dest": "Helmuga orri baliogabea",
+       "mergehistory-fail-self-merge": "Iturri eta helmuga orriak berdinak dira.",
        "mergehistory-no-source": "Ez da $1 jatorrizko orrialdea existitzen.",
        "mergehistory-no-destination": "Ez da $1 helburu orrialdea existitzen.",
        "mergehistory-invalid-source": "Jatorrizko orrialdea baliozko izenburua izan behar da.",
        "search-redirect": "(«$1» orritik birbideratua)",
        "search-section": "($1 atala)",
        "search-category": "($1 kategoria)",
+       "search-file-match": "(fitxategiaren edukiarekin bat dator)",
        "search-suggest": "$1 esan nahi zenuen",
-       "search-interwiki-caption": "Beste proiektuak",
+       "search-rewritten": "\"$1\" bilaketaren emaitzak erakusten. Bestela, bila ezazu \"$2\".",
+       "search-interwiki-caption": "Beste pareko proiektuen emaitzak",
        "search-interwiki-default": "$1(r)en emaitzak:",
        "search-interwiki-more": "(gehiago)",
+       "search-interwiki-more-results": "emaitza gehiago",
        "search-relatedarticle": "Erlazionatua",
        "searchrelated": "erlazionatua",
        "searchall": "guztia",
        "powersearch-togglelabel": "Egiaztatu:",
        "powersearch-toggleall": "Guztiak",
        "powersearch-togglenone": "Bat ere ez",
+       "powersearch-remember": "Etorkizunean bilaketentzako hautaketa gogoratu",
        "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",
        "editusergroup": "Erabiltzaile taldeak kargatu",
        "editinguser": "<strong>[[User:$1|$1]]</strong> $2 {{GENDER:$1|lankidearen}} erabiltzaile-eskubideak aldatzen",
        "userrights-editusergroup": "{{GENDER:$1|Erabiltzaile}} taldeak editatu",
+       "userrights-viewusergroup": "{{GENDER:$1|Erabiltzaile}} taldeak ikusi",
        "saveusergroups": "Erabiltzaile {{GENDER:$1|taldeak}} gorde",
        "userrights-groupsmember": "Ondorengo talde honetako kide da:",
        "userrights-groupsmember-auto": "Honen kide inplizitua:",
        "userrights-nodatabase": "$1 datubasea ez da existitzen edo ez dago lokalki.",
        "userrights-changeable-col": "Alda ditzakezun taldeak",
        "userrights-unchangeable-col": "Aldatu ezin ditzakezun taldeak",
+       "userrights-expiry-none": "Ez da iraungitzen",
+       "userrights-expiry": "Iraungintze data:",
+       "userrights-expiry-othertime": "Beste denbora:",
+       "userrights-expiry-options": "Egun 1:Egun 1,Aste 1:Aste 1,Hilabete 1:Hilabete 1,3 hilabete:3 hilabete,6 hilabete:6 hilabete,Urte 1:Urte 1",
        "userrights-conflict": "Gatazka gertatu da erabiltzaile eskubideak aldatzean. Mesedez, berrikusi eta baieztatu zure aldaketak.",
        "group": "Taldea:",
        "group-user": "Erabiltzaileak",
        "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",
+       "grant-group-page-interaction": "Orriekin elkarreragin",
+       "grant-group-file-interaction": "Mediarekin elkarreragin",
+       "grant-group-watchlist-interaction": "Zure ikus-zerrendarekin elkarreragin",
        "grant-group-email": "E-posta bidali",
+       "grant-group-customization": "Pertsonalizazioa eta lehentasunak",
+       "grant-group-administration": "Akzio administratiboak aurrera eraman",
+       "grant-group-private-information": "Zure datu pribatuetara sartu",
+       "grant-group-other": "Denetariko ekintza",
+       "grant-blockusers": "Blokeatu eta desblokeatu erabiltzaileak",
        "grant-createaccount": "Kontuak sortu",
+       "grant-createeditmovepage": "Orrialdeak sortu, aldatu eta mugitu",
+       "grant-delete": "Ezabatu orriak, berrikuspenak eta sarrerak",
        "grant-editmycssjs": "Zure CSS/JavaScript aldatu",
        "grant-editmyoptions": "Aldatu zure hobespenak",
        "grant-editmywatchlist": "Zure jarraipen zerrenda aldatu",
+       "grant-editpage": "Aldatu dauden orrialdeak",
        "grant-editprotected": "Babestutako orriak aldatu",
+       "grant-highvolume": "Bolumen-handiko edizioa",
        "grant-patrol": "Orrietako aldaketa patruilatu",
+       "grant-privateinfo": "Informazio pribatura sartu",
        "grant-protect": "Orriak babestu eta babesgabetu",
+       "grant-sendemail": "Bidali mezu elektronikoa beste erabiltzailei",
+       "grant-uploadeditmovefile": "Fitxategiak igo, ordeztu eta mugitu",
        "grant-uploadfile": "Fitxategi berriak igo",
        "grant-basic": "Oinarrizko baimenak",
        "grant-viewdeleted": "Ikusi ezabatutako fitxategiak eta orriak",
        "action-userrights-interwiki": "beste wikietako lankideen lankide-eskumenak aldatu",
        "action-siteadmin": "datubasea babestu edo babesa kendu",
        "action-sendemail": "E-mailak bidali",
+       "action-editmyoptions": "Zure lehentasunak aldatu",
        "action-editmywatchlist": "zure jarraipn zerrenda aldatu",
        "action-viewmywatchlist": "zure jarraipen zerrenda ikusi",
        "action-viewmyprivateinfo": "zure informazio pribatua ikusi",
        "action-editmyprivateinfo": "zure informazio pribatua aldatu",
+       "action-editcontentmodel": "Aldatu orri bateko eduki eredua",
        "action-managechangetags": "Etiketak sortu eta (des)aktibatu",
+       "action-applychangetags": "Etiketak zure aldaketekin batera aplikatu",
+       "action-deletechangetags": "ezabatu etiketak datu-basetik",
+       "action-purge": "Orri hau purgatu",
        "nchanges": "{{PLURAL:$1|aldaketa 1|$1 aldaketa}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|azkeneko bisitatik}}",
        "enhancedrc-history": "historia",
        "recentchanges-legend-heading": "<strong>Azalpenak:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ikus, gainera, [[Special:NewPages|orri berrien zerrenda]])",
        "recentchanges-submit": "Erakutsi",
+       "rcfilters-activefilters": "Iragazki aktiboak",
+       "rcfilters-quickfilters": "Gordetako filtro ezarpenak",
+       "rcfilters-quickfilters-placeholder-title": "Ez dira oraindik Link-ak gorde",
+       "rcfilters-savedqueries-defaultlabel": "Gordetako iragazkiak",
+       "rcfilters-savedqueries-rename": "Berrizendatu",
+       "rcfilters-savedqueries-remove": "Kendu",
+       "rcfilters-savedqueries-new-name-label": "Izena",
+       "rcfilters-savedqueries-apply-label": "Konfigurazioa gorde",
+       "rcfilters-savedqueries-cancel-label": "Utzi",
+       "rcfilters-savedqueries-add-new-title": "Gorde oraingo iragazki ezarpenak",
+       "rcfilters-restore-default-filters": "Leheneratu iragazki lehenetsiak",
+       "rcfilters-clear-all-filters": "Iragazki guztiak garbitu",
+       "rcfilters-search-placeholder": "Aldaketa berriak iragazi (nabigatu ala idatzi)",
+       "rcfilters-invalid-filter": "Balio ez duen iragazkia",
        "rcfilters-filterlist-title": "Iragazkiak",
-       "rcfilters-filtergroup-authorship": "Edizioaren egiletza",
+       "rcfilters-filterlist-whatsthis": "Zer da hau?",
+       "rcfilters-highlightbutton-title": "Nabarmendu emaitzak",
+       "rcfilters-highlightmenu-title": "Hautatu kolore bat",
+       "rcfilters-filterlist-noresults": "Ez da iragazkirik aurkitu",
+       "rcfilters-filter-registered-label": "Erregistratuak",
+       "rcfilters-filter-unregistered-label": "Ez erregistratuak",
+       "rcfilters-filtergroup-authorship": "Ekarpenaren egiletza",
+       "rcfilters-filter-editsbyself-label": "Zuk egindako aldaketak",
+       "rcfilters-filter-editsbyself-description": "Zure ekarpenak",
+       "rcfilters-filter-editsbyother-label": "Besteek egindako aldaketak",
+       "rcfilters-filter-editsbyother-description": "Aldaketa guztiak norberarenak izan ezik.",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Iritsiberriak",
+       "rcfilters-filter-user-experience-level-learner-label": "Ikasleak",
+       "rcfilters-filter-user-experience-level-experienced-label": "Erabiltzaile trebatuak",
+       "rcfilters-filter-user-experience-level-experienced-description": "30 eguneko jarduera eta 500 aldaketa baino gehiago.",
+       "rcfilters-filtergroup-automated": "Automatizatutako ekarpenak",
        "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-bots-description": "Tresna automatizatuekin egindako aldaketak.",
+       "rcfilters-filter-humans-label": "Gizaki (ez bot)",
+       "rcfilters-filter-humans-description": "Gizaki editoreek egindako aldaketak.",
+       "rcfilters-filtergroup-reviewstatus": "Berrikuspenaren egoera",
+       "rcfilters-filtergroup-significance": "Munta",
        "rcfilters-filter-minor-label": "Aldaketa txikiak",
+       "rcfilters-filter-major-label": "Aldaketa ez Txikiak",
+       "rcfilters-filter-watchlist-watched-label": "Jarraipen-zerrendan",
+       "rcfilters-filter-watchlist-notwatched-label": "Ez da ageri ikus-zerrendan",
+       "rcfilters-filter-watchlist-notwatched-description": "Guztia zure ikus-zerrenda orrientzako aldaketak izan ezik",
+       "rcfilters-filtergroup-changetype": "Aldaketa mota",
+       "rcfilters-filter-pageedits-label": "Orrialde aldaketak",
+       "rcfilters-filter-newpages-label": "Orrialde berriak",
+       "rcfilters-filter-newpages-description": "Orri berriak egiten dituzten aldaketak",
+       "rcfilters-filter-categorization-label": "Kategoria aldaketak",
+       "rcfilters-filter-logactions-label": "Erregistratutako ekintzak",
+       "rcfilters-filtergroup-lastRevision": "Azken berrikuspena",
+       "rcfilters-filter-lastrevision-label": "Azken berrikuspena",
+       "rcfilters-filter-lastrevision-description": "Orrialde bati eginiko aldaketarik berriena.",
+       "rcfilters-filter-previousrevision-label": "Aurreko berrikuspenak",
+       "rcfilters-filter-excluded": "Baztertua",
+       "rcfilters-view-tags": "Etiketak",
        "rcnotefrom": "Jarraian azaltzen diren {{PLURAL:$5|aldaketak}} data honetatik aurrerakoak dira: <strong>$3,$4</strong> (gehienez <b>$1</b> erakusten dira).",
        "rclistfrom": "Erakutsi $3 $2 ondorengo aldaketa berriak",
        "rcshowhideminor": "$1 aldaketa txikiak",
        "rcshowhidecategorization": "orrialde baten kategorizazioa $1",
        "rcshowhidecategorization-show": "Erakutsi",
        "rcshowhidecategorization-hide": "Ezkutatu",
-       "rclinks": "Erakutsi azken $2 egunetako $1 aldaketak<br />$3",
+       "rclinks": "Erakutsi azken $2 egunetako $1 aldaketak",
        "diff": "ezb",
        "hist": "hist",
        "hide": "Ezkutatu",
        "recentchangeslinked-page": "Orriaren izena:",
        "recentchangeslinked-to": "Lotutako orrietarako aldaketak erakutsi emandako orriaren ordez",
        "recentchanges-page-added-to-category": "[[:$1]] Kategoriara gehitua",
+       "recentchanges-page-removed-from-category": "[[:$1]] kategoriatik kendu da",
        "autochange-username": "MediaWiki aldaketa automatikoa",
        "upload": "Fitxategia igo",
        "uploadbtn": "Fitxategia igo",
        "uploaddisabledtext": "Fitxategiak igotzea ezgaituta dago.",
        "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.",
+       "uploadinvalidxml": "Ezin izan da analizatu XMLa igotako fitxategian.",
        "uploadvirus": "Fitxategiak birusa dauka! Xehetasunak: $1",
        "uploadjava": "Fitxategia ZIP bat da eta Java .class fitxategi bat du.\nJava fitxategiak igotzea ez dago baimendua, segurtasun muga batzuk hausteko aukera ematen duelako.",
        "upload-source": "Jatorrizko fitxategia",
        "lockmanager-fail-svr-release": "Ezin izan da $1 zerbitzarian giltzaraporik askatu.",
        "zip-wrong-format": "Zehaztutako fitxategia ez zen ZIP motakoa.",
        "uploadstash": "Gordailu bat igo",
-       "uploadstash-clear": "Kodetutako fitxategiak izkutatu",
+       "uploadstash-clear": "Ezabatu fitxategi ezkutuak",
        "uploadstash-nofiles": "Ez duzu kodetutako fitxategirik.",
        "uploadstash-errclear": "Fitxategiak ezabatzeak akatsa eman du.",
        "uploadstash-refresh": "Fitxategien zerrenda eguneratu",
        "protectedpages-performer": "Erabiltzailea babesten",
        "protectedpages-params": "Babesaren parametroak",
        "protectedpages-reason": "Arrazoia",
+       "protectedpages-submit": "Erakutsi orriak",
        "protectedpages-unknown-timestamp": "Ezezaguna",
        "protectedpages-unknown-performer": "Erabiltzaile ezezaguna",
        "protectedtitles": "Babestutako tituluak",
        "apihelp": "API laguntza",
        "apihelp-no-such-module": "Ez da \"$1\" modulua aurkitu.",
        "apisandbox": "API proba orria",
+       "apisandbox-fullscreen": "Zabaldu panela",
        "apisandbox-unfullscreen": "Erakutsi orria",
        "apisandbox-submit": "Egin eskaera",
        "apisandbox-reset": "Garbitu",
        "apisandbox-retry": "Saiatu berriro",
+       "apisandbox-no-parameters": "API modulu honek ez du parametrorik.",
        "apisandbox-helpurls": "Laguntza estekak",
        "apisandbox-examples": "Adibideak",
        "apisandbox-dynamic-parameters": "Parametro gehigarriak",
        "apisandbox-dynamic-parameters-add-placeholder": "Parametroaren izena",
        "apisandbox-dynamic-error-exists": "$1 parametro izena dagoeneko existitzen da",
        "apisandbox-results": "Emaitzak",
+       "apisandbox-sending-request": "APIari eskaera bidaltzen...",
+       "apisandbox-loading-results": "APIaren emaitzak jasotzen...",
        "apisandbox-continue": "Jarraitu",
        "apisandbox-continue-clear": "Garbitu",
+       "apisandbox-multivalue-all-values": "$1 (balio guztiak)",
        "booksources": "Iturri liburuak",
        "booksources-search-legend": "Liburuen bilaketa",
        "booksources-search": "Bilatu",
        "booksources-text": "Jarraian liburu berri eta erabiliak saltzen dituzten guneetarako loturen zerrenda bat ikus dezakezu, bilatzen ari zaren liburu horientzako informazio gehigarria aurkitzeko lagungarria izan daitekeena:",
        "booksources-invalid-isbn": "Badirudi emandako ISBNa ez dela baliagarria; egiazta ezazu ea akatsik egin duzun jatorrizko iturritik kopiatzean.",
+       "magiclink-tracking-rfc": "RFC lotura magikoak dituzten orrialdeak",
+       "magiclink-tracking-pmid": "PMID lotura magikoak dituzten orrialdeak",
+       "magiclink-tracking-isbn": "ISBN lotura magikoak dituzten orrialdeak",
        "specialloguserlabel": "Egilea:",
        "speciallogtitlelabel": "Helburua (izenburua edo {{ns:user}}: lankidea):",
        "log": "Erregistroak",
        "checkbox-select": "Aukeratu:$1",
        "checkbox-all": "Denak",
        "checkbox-none": "Bat ere ez",
+       "checkbox-invert": "Alderantzikatu",
        "allpages": "Orri guztiak",
        "nextpage": "Hurrengo orrialdea ($1)",
        "prevpage": "Aurreko orrialdea ($1)",
        "activeusers": "Lankide aktiboen zerrenda",
        "activeusers-count": "{{PLURAL:$1|Ekintza berri bat|$1 ekintza berri}} azken {{PLURAL:$3|egunean|$3 egunetan}}",
        "activeusers-from": "Bilatu honela hasten diren lankideak:",
+       "activeusers-groups": "Erakutsi kategoria hauetako erabiltzaileak:",
+       "activeusers-excludegroups": "Alde batera utzi kategoria hauetako erabiltzaileak:",
        "activeusers-noresult": "Ez da lankiderik aurkitu.",
+       "activeusers-submit": "Erakutsi erabiltzaile aktiboak",
        "listgrouprights": "Erabiltzaile talde eskumenak",
        "listgrouprights-summary": "Ondorengo zerrendak wikian dauden lankide taldeak agertzen dira, beraien eskubideekin.\nBadago [[{{MediaWiki:Listgrouprights-helppage}}|informazio osagarria]] banakako eskubideei buruz.",
        "listgrouprights-key": "Legenda\n* <span class=\"listgrouprights-granted\">Eskubidea emanda</span>\n* <span class=\"listgrouprights-revoked\">Eskubidea kenduta</span>",
        "enotif_body_intro_restored": "{{SITENAME}} guneko «$1» orria {{GENDER:$2|lehengoratu}} du $2 administratzaileak $PAGEEDITDATE datan. Oraingo bertsioa ikusteko, zoaz helbide honetara: $3.",
        "enotif_body_intro_changed": "{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|aldatu}} du $2 erabiltzaileak $PAGEEDITDATE datan, ikus $3 oraingo bertsiorako.",
        "enotif_lastvisited": "Ikus «$1» zure azken bisitaz geroztik izandako aldaketa guztiak ikusteko.",
-       "enotif_lastdiff": "Jo $1(e)ra aldaketa hau ikusteko.",
+       "enotif_lastdiff": "Aldaketa hau ikusteko, ikus $1.",
        "enotif_anon_editor": "$1 erabiltzaile anonimoa",
        "enotif_body": "Kaixo $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\n\nEgilearen laburpena: $PAGESUMMARY $PAGEMINOREDIT\n\nEgilearekin harremanetan jarri:\nposta: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nEz dira oharpen gehiago bidaliko orrialde hau berriz bisitatzen ez baduzu izena emanda zaudela.\nHorrez gain, orrialdeen oharpen konfigurazioa leheneratu dezakezu jarraipen zerrendatik.\n\n             Adeitasunez {{SITENAME}}(e)ko oharpen sistema\n\n--\nZure epostaren jakinarazpenen konfigurazioa aldatzeko, ikus\n{{canonicalurl:{{#special:Preferences}}}}\n\nZure jarraipen zerrendako konfigurazioa aldatzeko, ikus\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nOrrialdea zure jarraipen zerrendatik ezabatzeko, ikus\n$UNWATCHURL\n\nLaguntza:\n$HELPPAGE",
        "created": "sortu",
        "deletepage": "Orrialdea ezabatu",
        "confirm": "Baieztatu",
        "excontent": "edukia hau zen: '$1'",
-       "excontentauthor": "edukia hau zen: \"$1\" (parte hartu duen lankide bakarra: \"[[Special:Contributions/$2|$2]]\" ([[User talk:$2|talk]])",
+       "excontentauthor": "edukia hau zen: \"$1\", eta parte hartu duen lankide bakarra: \"[[Special:Contributions/$2|$2]]\" ([[User talk:$2|eztabaida]])",
        "exbeforeblank": "hustu aurreko edukiera: '$1'",
        "delete-confirm": "\"$1\" ezabatu",
        "delete-legend": "Ezabatu",
-       "historywarning": "'''Oharra:''' Ezabatzera zoazen orrialdeak $1 {{PLURAL:$1|berrikuspen du|berrikuspen ditu}} gutxi gorabehera:",
+       "historywarning": "<strong>Oharra:</strong> Ezabatzera zoazen orrialdeak {{PLURAL:$1|berrikuspen bateko|$1 berrikuspeneko}} historia du:",
        "historyaction-submit": "Erakutsi",
        "confirmdeletetext": "Orrialde edo irudi bat eta beste historia guztia datu-basetik ezabatzear zaude. Mesedez, egiaztatu hori egin nahi duzula, ondorioak zeintzuk diren badakizula, eta [[{{MediaWiki:Policy-url}}|politikak]] errespetatuz egingo duzula.",
        "actioncomplete": "Ekintza burutu da",
        "unblocked-id": "$1 blokeaketa ezabatu da",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] desblokeatua izan da.",
        "blocklist": "Blokeatutako erabiltzaileak",
+       "autoblocklist": "Blokeo automatikoak",
+       "autoblocklist-submit": "Bilatu",
+       "autoblocklist-legend": "Blokeo automatikoen zerrenda erakutsi",
+       "autoblocklist-empty": "Blokeo automatikoen zerrenda hutsik dago.",
        "ipblocklist": "Blokeatutako erabiltzaileak",
        "ipblocklist-legend": "Blokeatutako erabiltzaile bat bilatu",
        "blocklist-userblocks": "Ezkutatu kontu-blokeatzeak",
        "movenotallowedfile": "Ez duzu fitxategiak mugitzeko eskumenik.",
        "cant-move-user-page": "Ez duzu lankide orrialdeak mugitzeko eskumenik (azpiorrialdeetatik at).",
        "cant-move-to-user-page": "Ez duzu orrialde bat lankide orrialde batera mugitzeko eskumenik (lankide azpiorrialde batera izan ezik).",
+       "cant-move-category-page": "Ez duzu kategoria orrialdeak mugitzeko baimenik.",
        "cant-move-to-category-page": "Ez duzu baimenik orrialde bat kategoria-orrialde batera mugitzeko.",
+       "cant-move-subpages": "Ez duzu azpiorrialdeak mugitzeko baimenik.",
        "newtitle": "Izenburu berria:",
        "move-watch": "Orrialde hau jarraitu",
        "movepagebtn": "Mugitu orria",
        "export-download": "Gorde fitxategitzat",
        "export-templates": "Txantiloiak barneratu",
        "export-pagelinks": "Sartu lotutako orriak honako sakoneran:",
+       "export-manual": "Gehitu orrialdeak eskuz:",
        "allmessages": "Sistemako mezu guztiak",
        "allmessagesname": "Izena",
        "allmessagesdefault": "Testu lehenetsia",
        "tooltip-pt-mycontris": "{{GENDER:|Nire}} ekarpenen zerrenda",
        "tooltip-pt-anoncontribs": "IP helbide honetatik egindako aldaketen zerrenda",
        "tooltip-pt-login": "Izen ematera gonbidatzen zaitugu.",
+       "tooltip-pt-login-private": "Ez duzu saioa hasi behar wiki hau erabiltzeko",
        "tooltip-pt-logout": "Saioa itxi",
        "tooltip-pt-createaccount": "Kontu bat sortu eta horrekin saioa hastea eskatu nahi genizuke; ez da ezinbestekoa, ordea.",
        "tooltip-ca-talk": "Artikuluari buruzko eztabaida",
        "pageinfo-length": "Orriaren neurria (byteak)",
        "pageinfo-article-id": "Orriaren identifikazio zenbakia",
        "pageinfo-language": "Orriaren edukiaren hizkuntza",
+       "pageinfo-language-change": "aldatu",
        "pageinfo-content-model": "Orrialde edukiaren eredua",
+       "pageinfo-content-model-change": "aldatu",
        "pageinfo-robot-policy": "Errobotak indexatzea egiten",
        "pageinfo-robot-index": "Baimendua",
        "pageinfo-robot-noindex": "Debekatua",
        "newimages-summary": "Orrialde berezi honek igotako azkeneko fitxategiak erakusten ditu.",
        "newimages-legend": "Iragazkia",
        "newimages-label": "Fitxategia (edo bere zati bat):",
+       "newimages-user": "IP helbidea edo erabiltzaile-izena",
        "newimages-showbots": "Erakutsi botek igotako fitxategiak",
        "noimages": "Ez dago ezer ikusteko.",
        "ilsubmit": "Bilatu",
        "confirmemail_body": "Norbaitek, ziurrenik zuk $1 IP helbidetik, \"$2\" kontua erregistratu du {{SITENAME}}(e)n e-posta helbide honekin.\n\nIzen hori zuri dagokizula eta {{SITENAME}}(e)n zure e-posta egiaztatzeko, hurrengo lotura hau zure nabigatzailean ireki behar duzu:\n\n$3\n\nZu *ez* bazara, ez jo lotura horretara, jarraitu beste lotura hau e-posta bidezko helbide egiaztatzea ezeztatzeko:\n\n$5\n\nEgiaztapen kode hau $4 iraungiko da.",
        "confirmemail_invalidated": "E-mail bidezko ziurtatzea kantzelatu da",
        "invalidateemail": "E-mail bidezko ziurtatzea deuseztu",
+       "notificationemail_body_changed": "Norbaitek, beharbada zuk, $1 IP helbidetik, kontuari lotutako helbide elektronikoa aldatu du \"$2\"-tik \"$3\"-ra {{SITENAME}} gunean.\n\nZu izan ez bazara, jar zaitez berehala harremanetan guneko administratzaile batekin.",
+       "notificationemail_body_removed": "Norbaitek, beharbada zuk, $1 IP helbidetik, kontuari lotutako \"$2\" helbide elektronikoa ezabatu du {{SITENAME}} gunean.\n\nZu izan ez bazara, jar zaitez berehala harremanetan guneko administratzaile batekin.",
        "scarytranscludedisabled": "[Interwikien transklusioa ezgaituta dago]",
        "scarytranscludefailed": "[Arazoa $1 txantiloia eskuratzerakoan]",
        "scarytranscludetoolong": "[URLa luzeegia da]",
        "confirm-unwatch-button": "Ados",
        "confirm-unwatch-top": "Orrialde hau zure jarraipen-zerrendatik kendu?",
        "confirm-rollback-button": "Ados",
+       "confirm-rollback-top": "Orrialde honen edizioak leheneratu?",
        "word-separator": "&#32;",
        "quotation-marks": "«$1»",
-       "imgmultipageprev": "&larr; aurreko orrialdea",
-       "imgmultipagenext": "hurrengo orrialdea &rarr;",
+       "imgmultipageprev": " aurreko orrialdea",
+       "imgmultipagenext": "hurrengo orrialdea ",
        "imgmultigo": "Joan!",
        "imgmultigoto": "Joan «$1» orrira",
        "img-lang-default": "(berezko hizkuntza)",
        "version-libraries-license": "Lizentzia",
        "version-libraries-description": "Deskribapena",
        "version-libraries-authors": "Egileak",
-       "redirect": "Birzuzendu fitxategi, lankide edo berrikuspen IDaren arabera",
+       "redirect": "Birzuzendu fitxategi, kide, orri, berrikuspen edo IDaren arabera",
+       "redirect-summary": "Orri berezi honek artxibo batera (izena emanda) bidaliko zaitu, orri batera (egiaztatze ID edo orri ID-a emanez), erabiltzaile orrira (erabiltzaile ID numerikoa emanez) edota hasiera sarrera batera (Sarrera ID-a emanez). Erabilera: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], or [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Joan",
        "redirect-lookup": "Ikuskatu:",
        "redirect-value": "Balioa:",
        "tags-active-yes": "Bai",
        "tags-active-no": "Ez",
        "tags-source-extension": "Softwareak definitua",
+       "tags-source-manual": "Erabiltzaileek eta botek eskuz ezarrita",
        "tags-source-none": "Ez da gehiago erabiltzen",
        "tags-edit": "aldatu",
        "tags-delete": "ezabatu",
        "tags-edit-remove-all-tags": "(kendu etiketa guztiak)",
        "tags-edit-chosen-placeholder": "Hautatu etiketa batzuk",
        "tags-edit-reason": "Arrazoia:",
+       "tags-edit-success": "Aldaketak ezarri dira.",
+       "tags-edit-failure": "Ezin izan dira aldaketak ezarri:\n$1",
        "comparepages": "Orrialdeak alderatu",
        "compare-page1": "1. orrialdea",
        "compare-page2": "2. orrialdea",
        "htmlform-user-not-valid": "<strong>$1</strong> erabiltzaile izena ezin da erabili.",
        "logentry-delete-delete": "$1 {{GENDER:$2|wikilariak}} «$3» orria ezabatu du",
        "logentry-delete-restore": "$1 administratzaileak «$3» orria {{GENDER:$2|lehengoratu}} du",
+       "restore-count-files": "{{PLURAL:$1|Fitxategi 1|$1 fitxategi}}",
        "logentry-delete-event": "$1 wikilariak ikusgaitasuna {{GENDER:$2|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",
        "logentry-suppress-delete": "$1 erabiltzaileak $3 orria {{GENDER:$2|ezabatu}} du",
        "logentry-block-reblock": "$1 administratzaileak {{GENDER:$4|$3}} wikilariaren blokeoa {{GENDER:$2|aldatu du}}. Blokeoaldia: $5 $6",
        "logentry-suppress-block": "$1 {{GENDER:$2|administratzaileak}} {{GENDER:$4|$3}} blokeatu du. Iraupena: $5 $6",
        "logentry-suppress-reblock": "$1 administratzaileak {{GENDER:$4|$3}} wikilariaren blokeoa {{GENDER:$2|aldatu du}}. Blokeoaldia: $5 $6",
+       "logentry-import-upload": "$1(e)k $3 {{GENDER:$2|inportatu du}} fitxategi-igoera bidez",
        "logentry-move-move": "$1 {{GENDER:$2|wikilariak}} «$3» orria «$4» izenera aldatu du",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|wikilariak}} «$3» orria «$4» izenera aldatu du, birzuzenketarik utzi gabe",
        "logentry-move-move_redir": "$1 {{GENDER:$2|wikilariak}} «$3» orria «$4» izenera aldatu du, birzuzenketaren gainetik",
        "logentry-newusers-byemail": "$1(e)k $3 erabiltzaile kontua {{GENDER:$2|sortu du}} eta pasahitza emailez bidali da",
        "logentry-newusers-autocreate": "$1 erabiltzaile kontua automatikoki {{GENDER:$2|sortu da}}",
        "logentry-upload-upload": "$1(e)k $3 {{GENDER:$2|igo du}}",
+       "logentry-upload-overwrite": "$1(e)k $3(r)en bertsio berria {{GENDER:$2|igo du}}",
+       "logentry-upload-revert": "$1(e)k $3 {{GENDER:$2|igo du}}",
+       "logentry-managetags-create": "$1 lankideak \"$4\" etiketa {{GENDER:$2|sortu du}}",
        "log-name-tag": "Etiketen erregistroa",
        "rightsnone": "(bat ere ez)",
        "feedback-adding": "Orriari feedbacka gehitzen...",
        "pagelang-use-default": "Hizkuntza lehenetsia erabili",
        "pagelang-select-lang": "Hizkuntza aukeratu",
        "pagelang-submit": "Bidali",
+       "pagelang-unchanged-language": "$1 orrialdea jada $2 hizkuntzan dago.",
        "right-pagelang": "Aldatu orrialdearen hizkuntza",
        "action-pagelang": "orrialdearen hizkuntza aldatu",
        "log-name-pagelang": "Hizkuntza aldatu:",
        "special-characters-title-emdash": "em lerroa",
        "special-characters-title-minus": "minus zeinua",
        "mw-widgets-dateinput-no-date": "Ez duzu datarik aukeratu",
+       "mw-widgets-mediasearch-noresults": "Ez da emaitzarik aurkitu.",
        "mw-widgets-titleinput-description-new-page": "orri hori oraindik ez da existitzen",
        "mw-widgets-titleinput-description-redirect": "$1ra birzuzendu",
+       "mw-widgets-categoryselector-add-category-placeholder": "Gehitu kategoria bat...",
+       "mw-widgets-usersmultiselect-placeholder": "Gehitu gehiago...",
+       "date-range-from": "Data honetatik aurrera:",
+       "date-range-to": "Data honetara arte:",
        "sessionprovider-generic": "$1 sesio",
+       "randomrootpage": "Ausazko sustrai orria",
        "log-action-filter-block": "Blokeatze mota:",
        "log-action-filter-delete": "Ezabatze mota:",
        "log-action-filter-import": "Inportazio mota:",
        "log-action-filter-block-unblock": "blokeoa kendu",
        "log-action-filter-delete-revision": "Berrikuspen ezabaketa",
        "log-action-filter-import-interwiki": "Transwiki inportazioa",
+       "log-action-filter-import-upload": "Inportatu XML igoera bidez",
        "log-action-filter-managetags-create": "Etiketa sorkuntza",
        "log-action-filter-managetags-delete": "Etiketa ezabaketa",
        "log-action-filter-managetags-activate": "Etiketa aktibazioa",
        "log-action-filter-managetags-deactivate": "Etiketa desaktibazioa",
+       "log-action-filter-newusers-autocreate": "Sorrera automatikoa",
+       "log-action-filter-protect-protect": "Babesa",
+       "log-action-filter-rights-rights": "Eskuzko aldaketa",
+       "log-action-filter-rights-autopromote": "Aldaketa automatikoa",
+       "log-action-filter-upload-upload": "Igoera berria",
        "authmanager-userdoesnotexist": "\"$1\" erabiltzaile kontua ez dago erregistratua.",
        "authmanager-email-label": "Emaila",
        "authmanager-email-help": "Helbide elektronikoa",
        "authmanager-realname-label": "Benetako izena",
        "authmanager-realname-help": "Erabiltzailearen benetako izena",
+       "authmanager-provider-temporarypassword": "Behin-behineko pasahitza",
        "authprovider-resetpass-skip-label": "Utzi",
        "authform-wrongtoken": "Token okerra",
-       "credentialsform-account": "Kontuaren izena:"
+       "credentialsform-account": "Kontuaren izena:",
+       "gotointerwiki": "{{SITENAME}}(e)tik irteten"
 }
index 1953747..fc9b706 100644 (file)
        "externaldberror": "Marru d'autentificación esterna e la basi e datus, u bien nu t'alcuentras autorizau p'atualizal la tu cuenta esterna.",
        "login": "Entral",
        "nav-login-createaccount": "Entral/Crial cuenta",
-       "userlogin": "Entral/Crial cuenta",
-       "userloginnocreate": "Entral",
        "logout": "Salil",
        "userlogout": "Salil",
        "notloggedin": "Nu t'alcuentras rustriu",
-       "nologin": "Entovia nu gastas una cuenta? $1.",
-       "nologinlink": "Cria una",
        "createaccount": "Crial cuenta",
-       "gotaccount": "Ya tiinis una cuenta? '''$1'''.",
-       "gotaccountlink": "Entral",
        "createaccountmail": "pol e-mail",
        "badretype": "Las consínias nu conciin.",
        "userexists": "El nombri d'usuáriu ya s'alcuentra rustriu, pol favol, escrebi otru nombri.",
        "showpreview": "Previsoreal",
        "showdiff": "Muestral chambus",
        "anoneditwarning": "'''Avisu:''' Nu t'alcuentras rustriu, razón pola que s'emburacará la tu IP nel estorial d'esta páhina.",
-       "missingsummary": "'''Atención:''' Nu as escrebiu una síntesis al tentu la tu eición. Si pursas otra vezi sobri «{{int:savearticle}}» la tu eición s´emburacará sin él.",
+       "missingsummary": "'''Atención:''' Nu as escrebiu una síntesis al tentu la tu eición. Si pursas otra vezi sobri «$1» la tu eición s´emburacará sin él.",
        "missingcommenttext": "Pol favol, escrebi un testu embahu.",
        "missingcommentheader": "'''Atención:''' Nu as escrebiu un entítulu pal tu comentáriu. Si güervis a pursal sobri \"Emburacal\", s'emburacará sin él.",
        "summary-preview": "Previsoreal síntesis:",
        "editingsection": "Eitandu $1 (seción)",
        "editingcomment": "Eitandu $1 (nueva seción)",
        "editconflict": "Conflitu d'eición: $1",
-       "explainconflict": "Alguien á hechu chambus nesta páhina dendi que prencipiasti a eitala.\nEl cuairu e testu superiol endica el testu que desisti atualmenti ena páhina.\nLos tus chambus se muestran nel cuairu e testu inferiol.\nPa emburacal los tus chambus, ebis tresladalus al cuairu superiol.\n'''Solu''' s'emburacará el testu el cuairu superiol cuandu pursis \"{{int:savearticle}}\".",
+       "explainconflict": "Alguien á hechu chambus nesta páhina dendi que prencipiasti a eitala.\nEl cuairu e testu superiol endica el testu que desisti atualmenti ena páhina.\nLos tus chambus se muestran nel cuairu e testu inferiol.\nPa emburacal los tus chambus, ebis tresladalus al cuairu superiol.\n'''Solu''' s'emburacará el testu el cuairu superiol cuandu pursis \"$1\".",
        "yourtext": "El tu testu",
        "storedversion": "Velsión emburacá",
        "nonunicodebrowser": "'''Atención: El tu escrucaol nu cumpri la norma Unicode. S'á ativau un sistema d'eición alternativu que te premitirá eital artículus con seguráncia, inque los carateris que nu seyan ASCII apaicirán nel cuairu d'eición cumu cóigus esadecimalis.'''",
        "rcshowhidepatr": "$1 eicionis patrullás",
        "rcshowhidemine": "$1 las mis eicionis",
        "rcshowhidemine-hide": "Açonchal",
-       "rclinks": "Muestral los $1 úrtimus chambus enus $2 úrtimus dias<br />$3",
+       "rclinks": "Muestral los $1 úrtimus chambus enus $2 úrtimus dias",
        "diff": "def",
        "hist": "estor",
        "hide": "Açonchal",
        "undeletebtn": "Restaural",
        "undeletelink": "Guipal/arrecuperal",
        "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",
-       "undeletedfiles": "{{PLURAL:$1|1 archivu|$1 archivus}} restauraus",
        "cannotundelete": "Marru arrecuperandu; es posibri qu´alguien ya aiga arrecuperau la páhina.",
        "undeletedpage": "'''S'á restaurau $1'''\n\nConsurta el [[Special:Log/delete|rustrihu d'esborrau]] pa visoreal los úrtimus esborraus i arrecuperacionis.",
        "undelete-header": "Vaiti pal [[Special:Log/delete|rustrihu d’esborrau]] pa vel las úrtimas páhinas esborrás.",
        "revdelete-restricted": "las restricionis a los çahorilis án siu apricás",
        "revdelete-unrestricted": "las restricionis a los çahorilis án siu esborrás",
        "rightsnone": "(dengunu)",
-       "revdelete-summary": "eital sumáriu",
        "searchsuggest-search": "Buscal",
        "expand_templates_preview": "Previsoreal"
 }
index 366dcdb..da36161 100644 (file)
@@ -58,7 +58,9 @@
                        "Namo",
                        "Alifakoor",
                        "Dejavu",
-                       "AzorAhai"
+                       "AzorAhai",
+                       "Yoosef Pooranvary",
+                       "DEXi"
                ]
        },
        "tog-underline": "خط کشیدن زیر پیوندها:",
@@ -85,7 +87,7 @@
        "tog-enotifusertalkpages": "هنگامی که در صفحهٔ بحث کاربری‌ام تغییری صورت می‌گیرد به من ایمیلی فرستاده شود",
        "tog-enotifminoredits": "برای تغییرات جزئی در صفحه‌ها و پرونده‌ها هم به من ایمیلی فرستاده شود",
        "tog-enotifrevealaddr": "نشانی پست الکترونیکی من در ایمیل‌های اطلاع‌رسانی هویدا گردد",
-       "tog-shownumberswatching": "نمایشِ شمار کاربران پی‌گیری کننده",
+       "tog-shownumberswatching": "شمار کاربران پی‌گیری‌کننده نمایش داده شود",
        "tog-oldsig": "امضای کنونی شما:",
        "tog-fancysig": "امضا به صورت ویکی‌متن در نظر گرفته شود (بدون درج خودکار پیوند)",
        "tog-uselivepreview": "از پیش‌نمایش زنده استفاده شود",
        "anontalk": "بحث",
        "navigation": "ناوبری",
        "and": "&#32;و",
-       "qbfind": "یافتن",
-       "qbbrowse": "مرور",
-       "qbedit": "ویرایش",
-       "qbpageoptions": "این صفحه",
-       "qbmyoptions": "صفحات من",
        "faq": "پرسش‌های متداول",
-       "faqpage": "Project:پرسش‌های متداول",
        "actions": "عملکردها",
        "namespaces": "فضاهای نام",
        "variants": "گویش‌ها",
        "tagline": "از {{SITENAME}}",
        "help": "راهنما",
        "search": "جستجو",
-       "search-ignored-headings": "#<!-- این صفحه را درست همانطور که هست رها کنید --> <pre>\n#سر‌فصل‌هایی که توسط تحقیق نادیده گرفته خواهندشد.‌\n#به محض اینکه صفحه با سرفصل، فهرست شده‌است،تغییرات متاثر می‌شود.\n#شما می‌توانید با انجام یک ویرایش پوچ صفحه را وادار به دوباره فهرست کردن کنید.\n#نحو به شرح زیر است:\n#  *همه چیز از یک خصیصهٔ \"#\" گرفته تا آخر خط، یک نظر است\n#  *هر خط بدون فاصله، عنوان دقیق برای نادیده گرفتن،موضوع و همه چیز منابع است\nاتصالات خارجی\nهمچنین مشاهده کنید\n#</pre> <!-- leave this line exactly as it is -->",
+       "search-ignored-headings": "#<!-- این صفحه را درست همانطور که هست رها کنید --> <pre>\n# سر‌فصل‌هایی که توسط جستجو نادیده گرفته خواهندشد.‌\n# تأثیر تغییرات زمانی رخ می‌دهد که صفحهٔ حاوی آن سرفصل، نمایه شود.\n# شما می‌توانید با انجام یک ویرایش پوچ صفحه را وادار به دوباره نمایه‌شدن کنید.\n# نحو به شرح زیر است:\n#  *هر چه از یک نویسهٔ «#» تا آخر خط بیاید، یک توضیح است.\n#  *هر خط بدون فاصله، دقیقاً عنوانی است که نادیده گرفته می‌شود (با رعایت بزرگی و کوچکی حروف).\nمنابع\nپیوند به بیرون\nهمچنین ببینید\n#</pre> <!-- leave this line exactly as it is -->",
        "searchbutton": "جستجو",
        "go": "برو",
        "searcharticle": "برو",
        "edit-local": "ویرایش توضیحات محلی",
        "create": "ایجاد",
        "create-local": "افزودن توضیحات محلی",
-       "editthispage": "ویرایش این صفحه",
-       "create-this-page": "ایجاد این صفحه",
        "delete": "حذف",
-       "deletethispage": "حذف این صفحه",
-       "undeletethispage": "احیای این صفحه",
        "undelete_short": "احیای {{PLURAL:$1|یک ویرایش|$1 ویرایش}}",
        "viewdeleted_short": "نمایش {{PLURAL:$1|یک ویرایش حذف‌شده|$1 ویرایش حذف‌شده}}",
        "protect": "محافظت",
        "protect_change": "تغییر",
-       "protectthispage": "محافظت از این صفحه",
        "unprotect": "تغییر محافظت",
-       "unprotectthispage": "تغییر محافظت این صفحه",
        "newpage": "صفحهٔ تازه",
-       "talkpage": "بحث دربارهٔ این صفحه",
        "talkpagelinktext": "بحث",
        "specialpage": "صفحهٔ ویژه",
        "personaltools": "ابزارهای شخصی",
-       "articlepage": "نمایش مقاله",
        "talk": "بحث",
        "views": "بازدیدها",
        "toolbox": "ابزارها",
        "tool-link-userrights": "تغییر گروه‌های {{GENDER:$1|کاربر}}",
        "tool-link-userrights-readonly": "نمایش گروه‌های {{GENDER:$1|کاربر}}",
        "tool-link-emailuser": "فرستادن نامه به {{GENDER:$1|کاربر}}",
-       "userpage": "نمایش صفحهٔ کاربر",
-       "projectpage": "نمایش صفحهٔ پروژه",
        "imagepage": "نمایش صفحهٔ پرونده",
        "mediawikipage": "نمایش صفحهٔ پیغام",
        "templatepage": "نمایش صفحهٔ الگو",
        "redirectedfrom": "(تغییرمسیر از $1)",
        "redirectpagesub": "صفحهٔ تغییرمسیر",
        "redirectto": "تغییرمسیر به:",
-       "lastmodifiedat": "این صفحه آخرین‌بار در $1 ساعت $2 تغییر یافته‌است.",
+       "lastmodifiedat": "این صفحه آخرین‌بار در $1 ساعت $2 ویرایش شده‌است.",
        "viewcount": "از این صفحه {{PLURAL:$1|یک‌بار|$1بار}} بازدید شده‌است.",
        "protectedpage": "صفحهٔ محافظت‌شده",
        "jumpto": "پرش به:",
        "pool-timeout": "اتمام مهلت انتظار برای قفل",
        "pool-queuefull": "صف مخزن پر است",
        "pool-errorunknown": "خطای ناشناخته",
-       "pool-servererror": "پول سنتر سرویس در دسترس نیست ( $1 ).",
+       "pool-servererror": "سرویس شمارندهٔ انباره در دسترس نیست ($1).",
        "poolcounter-usage-error": "خطای استفاده: $1",
        "aboutsite": "دربارهٔ {{SITENAME}}",
        "aboutpage": "Project:درباره",
        "youhavenewmessages": "$1 دارید ($2).",
        "youhavenewmessagesfromusers": "شما از {{PLURAL:$3|یک کاربر دیگر|$3  کاربر}} $1 دارید ($2).",
        "youhavenewmessagesmanyusers": "شما از تعدادی کاربر $1 دارید ($2).",
-       "newmessageslinkplural": "{{PLURAL:$1|Ù¾Û\8cاÙ\85 Ø¬Ø¯Û\8cد|999=پیام‌های تازه}}",
-       "newmessagesdifflinkplural": "{{formatnum:$1}} {{PLURAL:$1|تغییر|999=تغییر}} اخیر",
+       "newmessageslinkplural": "{{PLURAL:$1|Ù¾Û\8cاÙ\85 ØªØ§Ø²Ù\87|999=پیام‌های تازه}}",
+       "newmessagesdifflinkplural": "{{PLURAL:$1|تغییر|999=تغییر}} اخیر",
        "youhavenewmessagesmulti": "پیام‌های جدیدی در $1 دارید.",
        "editsection": "ویرایش",
        "editold": "ویرایش",
        "hidetoc": "نهفتن",
        "collapsible-collapse": "نهفتن",
        "collapsible-expand": "گسترش",
-       "confirmable-confirm": "{{GENDER:$1|شما}} مطمئن هستید؟",
+       "confirmable-confirm": "آیا مطمئن {{GENDER:$1|هستید}}؟",
        "confirmable-yes": "بله",
        "confirmable-no": "خیر",
        "thisisdeleted": "نمایش یا احیای $1؟",
        "nospecialpagetext": "<strong>شما یک صفحهٔ ویژهٔ نامجاز را درخواست کرده‌اید.</strong>\n\nفهرستی از صفحه‌های ویژهٔ مجاز در [[Special:SpecialPages|{{int:specialpages}}]] وجود دارد.",
        "error": "خطا",
        "databaseerror": "خطای پایگاه داده",
-       "databaseerror-text": "مشکلی در پایگاه‌داده‌ها رخ داده است. \nاین ممکن است نشان‌دهندهٔ ایرادی در نرم‌افزار باشد.",
-       "databaseerror-textcl": "یک خطای پرس‌وجوی پایگاه داده‌های رخ داده است.",
-       "databaseerror-query": "پرس‌وجو: $1",
+       "databaseerror-text": "مشکلی در پایگاه‌داده‌ها رخ داد. \nاین ممکن است نشان‌دهندهٔ ایرادی در نرم‌افزار باشد.",
+       "databaseerror-textcl": "یک خطا در پرسمان پایگاه داده رخ داد.",
+       "databaseerror-query": "پرسمان: $1",
        "databaseerror-function": "تابع: $1",
        "databaseerror-error": "خطا: $1",
        "transaction-duration-limit-exceeded": "برای پرهیز از ایجاد تاخیر بالا در نسخه‌برداری، این تراکنش لغو شد چرا که مدت زمان نوشتن ($1) از حد $2 {{PLURAL:$2|ثانیه|ثانیه}} بیشتر بود.\nاگر در حال تغییر چیزهای زیادی به طور همزمان هستید، سعی کنید به جایش چند عمل را در گروه‌های کوچکتر انجام بدهید.",
        "nonwrite-api-promise-error": "سرآیند اچ‌تی‌تی‌پی 'Promise-Non-Write-API-Action' ارسال شد ولی درخواست به یک رابط برنامه‌نویسی پودمان نوشتن بود.",
        "internalerror": "خطای داخلی",
        "internalerror_info": "خطای داخلی: $1",
-       "internalerror-fatal-exception": "نوع استثنای مخرب \"$1\"",
+       "internalerror-fatal-exception": "استثنای مخرب از نوع «$1»",
        "filecopyerror": "نشد از پروندهٔ «$1» روی «$2» نسخه‌برداری شود.",
        "filerenameerror": "نشد پروندهٔ «$1» به «$2» تغییر نام یابد.",
        "filedeleteerror": "نشد پروندهٔ «$1» حذف شود.",
        "directorycreateerror": "نشد مسیر $1 را ایجاد کرد.",
-       "directoryreadonlyerror": "داÛ\8cرکتÙ\88رÛ\8c \"$1\" فقط خواندنی است.",
-       "directorynotreadableerror": "داÛ\8cرکتÙ\88رÛ\8c \"$1\" قابل خواندن نیست.",
+       "directoryreadonlyerror": "شاخÙ\87Ù\94 Â«$1» فقط خواندنی است.",
+       "directorynotreadableerror": "شاخÙ\87Ù\94 Â«$1» قابل خواندن نیست.",
        "filenotfound": "پروندهٔ «$1» یافت نشد.",
        "unexpected": "مقدار غیرمنتظره: «$1»=«$2».",
        "formerror": "خطا: نمی‌توان فرم را فرستاد.",
        "cannotdelete": "امکان حذف صفحه یا تصویر «$1» وجود ندارد.\nممکن است قبلاً فرد دیگری آن را حذف کرده باشد.",
        "cannotdelete-title": "نمی‌توان صفحهٔ «$1» را حذف کرد",
        "delete-hook-aborted": "حذف توسط قلاب لغو شد.\nتوضیحی در این مورد داده نشد.",
-       "no-null-revision": "امکان ایجاد نسخهٔ پوچ برای صفحهٔ «$1» وجود نداشت",
+       "no-null-revision": "اÙ\85کاÙ\86 Ø§Û\8cجاد Ù\86سخÙ\87Ù\94 Ù¾Ù\88Ú\86 ØªØ§Ø²Ù\87 Ø¨Ø±Ø§Û\8c ØµÙ\81Ø­Ù\87Ù\94 Â«$1» Ù\88جÙ\88د Ù\86داشت",
        "badtitle": "عنوان بد",
        "badtitletext": "عنوان درخواستی نامعتبر، خالی، یا عنوانی میان‌زبانی یا میان‌ویکی‌ای با پیوند نادرست بود.\nممکن است حاوی یک یا چند نویسه باشد که نمی‌توانند در عنوان‌ها استفاده شوند.",
-       "title-invalid-empty": "عنوان صفحهٔ مورد درخواست خالی است یا فقط عنوان فضای نام ذکر شده‌است.",
-       "title-invalid-utf8": "عنوان صفحهٔ مورد نظر دارای نویسهٔ نادرست یونیکد است.",
+       "title-invalid-empty": "عنوان صفحهٔ درخواست‌شده خالی است یا فقط عنوان فضای نام ذکر شده‌است.",
+       "title-invalid-utf8": "عنوان صفحهٔ درخواست‌شده دارای نویسهٔ نادرست یونیکد است.",
        "title-invalid-interwiki": "صفحهٔ درخواست شده دارای پیوند میان‌ویکی است که نمی‌تواند در عنوان‌ها استفاده شود.",
-       "title-invalid-talk-namespace": "صÙ\81Ø­Ù\87Ù\94 Ù\85Ù\88رد Ø¯Ø±Ø®Ù\88است Ø¨Ù\87 Ø¹Ù\86Ù\88اÙ\86 ØµÙ\81Ø­Ù\87Ù\94 Ø¨Ø­Ø«Û\8c Ú©Ù\87 Ù\88جÙ\88د Ù\86داردØ\8c Ø§Ø±Ø¬Ø§Ø¹ Ù\85Û\8câ\80\8cÚ©Ù\86د",
-       "title-invalid-characters": "عنوان صفحهٔ مورد درخواست نویسهٔ نادرست «$1» دارد.",
-       "title-invalid-relative": "عنوان دارای نشانی است. عنوان نشانی‌ها (./, ../) بی‌اعتبار هستند چون معمولاً توسط مرورگر کاربران غیرقابل دسترس هستند.",
-       "title-invalid-magic-tilde": "عنوان صفحهٔ مورد درخواست دارای عبارت جادوئی بی‌اعتبار است (<nowiki>~~~</nowiki>).",
-       "title-invalid-too-long": "عنوان صفحهٔ مورد درخواست خیلی طولانی است. نباید از $1 {{PLURAL:$1|بایت|بایت}} نویسهٔ یونیکد باشد.",
-       "title-invalid-leading-colon": "صÙ\81Ø­Ù\87Ù\94 Ø¯Ø±Ø®Ù\88استÛ\8c Ø¯Ø§Ø±Ø§Û\8c : Ø¨Û\8câ\80\8cاعتبار Ø¯Ø± Ø§Ø¨ØªØ¯Ø§Û\8c Ø¹Ù\86Ù\88اÙ\86ش است.",
+       "title-invalid-talk-namespace": "عÙ\86Ù\88اÙ\86 ØµÙ\81Ø­Ù\87Ù\94 Ø¯Ø±Ø®Ù\88استâ\80\8cشدÙ\87 Ø¨Ù\87 ØµÙ\81Ø­Ù\87Ù\94 Ø¨Ø­Ø«Û\8c Ú©Ù\87 Ù\88جÙ\88د Ù\86داردØ\8c Ø§Ø±Ø¬Ø§Ø¹ Ù\85Û\8câ\80\8cÚ©Ù\86د.",
+       "title-invalid-characters": "عنوان صفحهٔ درخواست‌شده نویسهٔ نامجاز دارد: «$1».",
+       "title-invalid-relative": "عنوان دارای نشانی است. عنوان‌های دارای نشانی نسبی (نظیر ‎./‎ یا ‎../‎) نامجاز هستند چون معمولاً توسط مرورگر کاربران غیرقابل دسترس هستند.",
+       "title-invalid-magic-tilde": "عنوان صفحهٔ درخواست‌شده دارای مدک‌های جادوئی نامجاز است (<nowiki>~~~</nowiki>).",
+       "title-invalid-too-long": "عنوان صفحهٔ درخواست‌شده خیلی طولانی است. نباید از $1 {{PLURAL:$1|بایت|بایت}} در رمزگذاری یوتی‌اف-۸ بیشتر باشد.",
+       "title-invalid-leading-colon": "عÙ\86Ù\88اÙ\86 ØµÙ\81Ø­Ù\87Ù\94 Ø¯Ø±Ø®Ù\88استÛ\8c Ø¯Ø§Ø±Ø§Û\8c Ø¯Ù\88Ù\86Ù\82Ø·Ù\87Ù\94 Ù\86اÙ\85جاز Ø¯Ø± Ø§Ø¨ØªØ¯Ø§Û\8cش است.",
        "perfcached": "داده‌های زیر از حافظهٔ نهانی فراخوانی شده‌اند و ممکن است کاملاً به‌روز نباشند. حداکثر {{PLURAL:$1|یک نتیجه| $1 نتیجه}} در حافظهٔ نهانی قابل دسترس است.",
        "perfcachedts": "داده‌های زیر از حافظهٔ نهانی فراخوانی شده‌اند و آخرین بار در $1 به‌روزرسانی شدند. حداکثر {{PLURAL:$4|یک نتیجه|$4 نتیجه}} در حافظهٔ نهانی قابل دسترس است.",
        "querypage-no-updates": "امکان به‌روزرسانی این صفحه فعلاً غیرفعال شده‌است.\nاطلاعات این صفحه ممکن است به‌روز نباشد.",
        "botpasswords-label-grants": "اعطاهای اجرا شدنی:",
        "botpasswords-help-grants": "هر اجازه به ربات اجازه دسترسی به اختیاراتی را که حساب شما دارد می‌دهد. فعال کردن یک اجازه در اینجا هیچ دسترسی جدیدی که حساب شما همینک دارا نیست را به آن نمی‌بخشد. [[Special:ListGrants|table of grants]] را برای اطلاعات بیشتر مشاهده کنید.",
        "botpasswords-label-grants-column": "اعطا شد",
-       "botpasswords-bad-appid": "نام ربات \"$1\" معتبر نیست.",
+       "botpasswords-bad-appid": "نام ربات «$1» معتبر نیست.",
        "botpasswords-insert-failed": "شکست در افزودن نام ربات «$1». در حال حاضر اضافه شده است؟",
        "botpasswords-update-failed": "شکست در به‌روزرسانی نام رباتی «$1». حذف شده است؟",
        "botpasswords-created-title": "گذرواژه ربات ایجاد شد",
        "botpasswords-newpassword": "<strong>$2</strong> گذرواژهٔ جدید برای ورود با حساب <strong>$1</strong> است. <em>لطفاً آن را برای ارجاع در آینده ذخیره کنید.</em> <br> (برای ربات‌های قدیمی که نیاز به نام کاربری مطابق با حساب کاربری‌شان دارد، شما می‌توانید از <strong>$3</strong> به عنوان نام کاربری و از <strong>$4</strong> به عنوان گذرواژه استفاده کنید.)",
        "botpasswords-no-provider": "BotPasswordsSessionProvider موجود نیست.",
        "botpasswords-restriction-failed": "محدودیت‌های گذرواژهٔ ربات از این ورود جلوگیری می‌کند.",
-       "botpasswords-invalid-name": "نام کاربری مشخص شده دارای جداکنندهٔ گذرواژهٔ رباتی نیست (\"$1\").",
+       "botpasswords-invalid-name": "نام کاربری مشخص شده دارای جداکنندهٔ گذرواژهٔ رباتی نیست («$1»).",
        "botpasswords-not-exist": "کاربر «$1» گذرواژهٔ رباتی نام‌دهی شدهٔ «$2» ندارد.",
        "resetpass_forbidden": "نمی‌توان گذرواژه‌ها را تغییر داد",
        "resetpass_forbidden-reason": "نمی‌توانید گذرواژه‌ها را تغییر داد: $1",
        "resetpass-temp-password": "گذرواژهٔ موقت:",
        "resetpass-abort-generic": "تغییر گذرواژه به دست یکی از افزونه‌ها لغو شده است.",
        "resetpass-expired": "رمز عبور شما منقضی شده‌است. لطفاً برای ورود رمز عبور جدیدی را تنظیم کنید.",
-       "resetpass-expired-soft": "رمز عبور شما منقضی شده‌است، و نیاز به تنظیم مجدد دارد. لطفاً اکنون رمز عبور جدیدی را انتخاب کنید، یا برای تنظیم مجدد آن بعدآً، دکمه \"{{int:authprovider-resetpass-skip-label}}\" را کلیک کنید.",
+       "resetpass-expired-soft": "رمز عبور شما منقضی شده‌است و نیاز به تنظیم مجدد دارد. لطفاً اکنون رمز عبور جدیدی را انتخاب کنید، یا برای تنظیم مجدد آن در آینده، دکمهٔ «{{int:authprovider-resetpass-skip-label}}» را کلیک کنید.",
        "resetpass-validity-soft": "گذرواهٔ شما صحیح نیست: $1\n\nلطفاً یک گذرواژهٔ تازه الآن انتخاب کنید یا بر «{{int:authprovider-resetpass-skip-label}}» کلیک کنید که دوباره آن را بعداً انتخاب کنید.",
        "passwordreset": "بازنشانی گذرواژه",
        "passwordreset-text-one": "برای بازنشانی گذرواژه‌تان این فرم را کامل کنید.",
        "preview": "پیش‌نمایش",
        "showpreview": "پیش‌نمایش",
        "showdiff": "نمایش تغییرات",
-       "blankarticle": "<strong>هشدار:</strong> شما در حال ایجاد صفحه خالی هستید.\nاگر «{{int:savearticle}}» را دوباره کلیک کنید، صفحه بدون محتوا ایجاد می‌شود.",
+       "blankarticle": "<strong>هشدار:</strong> شما در حال ایجاد صفحه خالی هستید.\nاگر «$1» را دوباره کلیک کنید، صفحه بدون محتوا ایجاد می‌شود.",
        "anoneditwarning": "<strong>هشدار:</strong> شما وارد نشده‌اید. نشانی آی‌پی شما برای عموم قابل مشاهده خواهد بود اگر هر تغییری ایجاد کنید. اگر <strong>[$1 وارد شوید]</strong> یا <strong>[$2 یک حساب کاربری بسازید]</strong>، ویرایش‌هایتان به نام کاربری‌تان نسبت داده خواهد شد، همراه با مزایای دیگر.",
        "anonpreviewwarning": "''شما به سامانه وارد نشده‌اید. ذخیره کردن باعث می‌شود که نشانی آی‌پی شما در تاریخچهٔ این صفحه ثبت گردد.''",
-       "missingsummary": "'''یادآوری:''' شما خلاصهٔ ویرایش ننوشته‌اید.\nاگر دوباره دکمهٔ «{{int:savearticle}}» را فشار دهید ویرایش شما بدون آن ذخیره خواهد شد.",
-       "selfredirect": "<strong>هشدار:</strong> شما در حال تغییرمسیر صفحه به خودش هستید.\nامکان دارد هدف اشتباهی را برای تغییرمسیر انتخاب کردید، یا ممکن است صفحهٔ اشتباهی را ویرایش می‌کنید.\n\nاگر بر روی \"{{int:savearticle}}\" دوباره کلیک کنید، تغییرمسیر ساخته خواهد شد.",
+       "missingsummary": "'''یادآوری:''' شما خلاصهٔ ویرایش ننوشته‌اید.\nاگر دوباره دکمهٔ «$1» را فشار دهید ویرایش شما بدون آن ذخیره خواهد شد.",
+       "selfredirect": "<strong>هشدار:</strong> شما در حال تغییرمسیر صفحه به خودش هستید.\nامکان دارد هدف اشتباهی را برای تغییرمسیر انتخاب کردید، یا ممکن است صفحهٔ اشتباهی را ویرایش می‌کنید.\n\nاگر بر روی «$1» دوباره کلیک کنید، تغییرمسیر ساخته خواهد شد.",
        "missingcommenttext": "لطفاً توضیحی در زیر بیفزایید.",
-       "missingcommentheader": "<strong>یادآوری:</strong> شما موضوع/عنوان این یادداشت را مشخص نکرده‌اید.\nاگر دوباره دکمهٔ «{{int:savearticle}}» را فشار دهید ویرایش شما بدون آن ذخیره خواهد شد.",
+       "missingcommentheader": "<strong>یادآوری:</strong> شما موضوع/عنوان این یادداشت را مشخص نکرده‌اید.\nاگر دوباره دکمهٔ «$1» را فشار دهید ویرایش شما بدون آن ذخیره خواهد شد.",
        "summary-preview": "پیش‌نمایش خلاصه:",
        "subject-preview": "پیش‌نمایش موضوع:",
        "previewerrortext": "در زمان تلاش برای نمایش دادن تغییرات شما، خطایی رخ داد.",
        "editingsection": "در حال ویرایش $1 (بخش)",
        "editingcomment": "در حال ویرایش $1 (بخش تازه)",
        "editconflict": "تعارض ویرایشی: $1",
-       "explainconflict": "از وقتی ویرایش این صفحه را آغاز کرده‌اید شخص دیگری آن را تغییر داده است.\nناحیهٔ متنی بالایی شامل متن صفحه به شکل کنونی آن است.\nتغییرات شما در ناحیهٔ متنی پایینی نشان داده شده‌است.\nشما باید تغییراتتان را با متن کنونی ترکیب کنید.\nبا فشردن دکمهٔ «{{int:savearticle}}» <strong>فقط</strong> متن ناحیهٔ متنی بالایی ذخیره خواهد شد.",
+       "explainconflict": "از وقتی ویرایش این صفحه را آغاز کرده‌اید شخص دیگری آن را تغییر داده است.\nناحیهٔ متنی بالایی شامل متن صفحه به شکل کنونی آن است.\nتغییرات شما در ناحیهٔ متنی پایینی نشان داده شده‌است.\nشما باید تغییراتتان را با متن کنونی ترکیب کنید.\nبا فشردن دکمهٔ «$1» <strong>فقط</strong> متن ناحیهٔ متنی بالایی ذخیره خواهد شد.",
        "yourtext": "متن شما",
        "storedversion": "نسخهٔ ذخیره شده",
        "nonunicodebrowser": "'''هشدار: مرورگر شما با استانداردهای یونیکد سازگار نیست.'''\nراه حلی به کار گرفته شده تا شما بتوانید صفحات را با امنیت ویرایش کنید: کاراکترهای غیر ASCII به صورت کدهایی در مبنای شانزده به شما نشان داده می‌شوند.",
        "content-model-css": "سی‌اس‌اس",
        "content-json-empty-object": "ابجکت خالی",
        "content-json-empty-array": "آرایهٔ خالی",
-       "deprecated-self-close-category": "صفحه از برچسب اچ‌تی‌ام‌ال self-closed غیرمجاز استفاده می‌کند",
+       "deprecated-self-close-category": "صفحه از برچسب اچ‌تی‌ام‌ال بسته‌شدهٔ نامجاز استفاده می‌کند",
        "deprecated-self-close-category-desc": "صفحه دارای برچسب اچ‌تی‌ام‌ال self-closed است مانند <code>&lt;b/></code> یا <code>&lt;span/></code>. عملکرد این برچسب‌ها در اچ‌تی‌ام‌ال۵ تغییر می‌کند در نتیجه استفاده از آنها در ویکی‌متن منسوخ و بی‌اثر است.",
        "duplicate-args-warning": "<strong>هشدار:</strong> [[:$1]] [[:$2]] را با بیش از یک مقدار برای پارامتر «$3» صدا می‌زند. فقط آخرین مقدار داده شده استفاده خواهد شد.",
        "duplicate-args-category": "صفحه‌های دارای آرگومان تکراری در فراخوانی الگو",
        "page_last": "واپسین",
        "histlegend": "انتخاب تفاوت: دکمه‌های گرد کنار ویرایش‌هایی که می‌خواهید با هم مقایسه کنید را علامت بزنید و دکمهٔ Enter را بزنید یا دکمهٔ پایین را فشار دهید.<br />\nاختصارات: '''({{int:cur}})''' = تفاوت با نسخهٔ فعلی، '''({{int:last}})''' = تفاوت با نسخهٔ قبلی، '''({{int:minoreditletter}})''' = ویرایش جزئی.",
        "history-fieldset-title": "جستجو برای نسخه‌ها",
-       "history-show-deleted": "فقط حذف‌شدهفقط نسخه‌های حذف شده",
+       "history-show-deleted": "فقط نسخه‌های حذف شده",
        "histfirst": "قدیمی‌ترین",
        "histlast": "جدیدترین",
        "historysize": "({{PLURAL:$1|۱ بایت|$1 بایت}})",
        "search-file-match": "(تشابه محتوی پرونده)",
        "search-suggest": "آیا منظورتان این بود: $1",
        "search-rewritten": "نمایش نتایج $1. جستجوی به جای $2.",
-       "search-interwiki-caption": "پروژه‌های خواهر",
+       "search-interwiki-caption": "Ù\86تاÛ\8cج Ø§Ø² Ù¾Ø±Ù\88Ú\98Ù\87â\80\8cÙ\87اÛ\8c Ø®Ù\88اÙ\87ر",
        "search-interwiki-default": "نتایج از $1:",
        "search-interwiki-more": "(بیشتر)",
        "search-interwiki-more-results": "نتایج بیشتر",
        "userrights-expiry-options": "۱ روز:1 day,۱ هفته:1 week,۱ ماه:1 month,۳ ماه:3 months,۶ ماه:6 months,۱ سال:1 year",
        "userrights-invalid-expiry": "زمان انقضای گروه «$1» نادرست است.",
        "userrights-expiry-in-past": "زمان انقضای گروه «$1» گذشته‌است.",
-       "userrights-cannot-shorten-expiry": "امکان جلو آوردن تاریخ انقضای گروه  \"$1\" را ندارید. تنها کاربرانی که دسترسی اضافه و حذف این گروه را دارند می‌توانند تاریخ انقضا را جلو بیاورند.",
+       "userrights-cannot-shorten-expiry": "امکان جلو آوردن تاریخ انقضای گروه  «$1» را ندارید. تنها کاربرانی که دسترسی اضافه و حذف این گروه را دارند می‌توانند تاریخ انقضا را جلو بیاورند.",
        "userrights-conflict": "تعارض دسترسی‌های کاربری! لطفاً بررسی کنید و تغییرات را تأیید کنید.",
        "group": "گروه:",
        "group-user": "کاربران",
        "right-autoconfirmed": "از محدودیت‌های سرعت آی‌پی‌-محور تاثیر نمی‌گیرد",
        "right-bot": "تلقی‌شده به عنوان یک فرآیند خودکار",
        "right-nominornewtalk": "ویرایش جزئی صفحه‌های بحث به شکلی که باعث اعلان پیغام تازه نشود",
-       "right-apihighlimits": "سÙ\82Ù\81 Ø¨Ø§Ù\84اتر Ø§Ø³ØªÙ\81ادÙ\87 Ø§Ø² API",
-       "right-writeapi": "استفاده از API مربوط به نوشتن",
+       "right-apihighlimits": "اÙ\81زاÛ\8cØ´ Ù\85حدÙ\88دÛ\8cتâ\80\8cÙ\87ا Ø¨Ø±Ø§Û\8c Ù¾Ø±Ø³Ù\85اÙ\86â\80\8cÙ\87اÛ\8c Ø±Ø§Ø¨Ø· Ø¨Ø±Ù\86اÙ\85Ù\87â\80\8cÙ\86Ù\88Û\8cسÛ\8c",
+       "right-writeapi": "استفاده از رابط برنامه‌نویسی نوشتن",
        "right-delete": "حذف صفحات",
        "right-bigdelete": "حذف صفحه‌های دارای تاریخچهٔ بزرگ",
        "right-deletelogentry": "حذف و احیای مدخل‌های خاصی از سیاهه",
        "right-unblockself": "بازکردن دسترسی خود",
        "right-protect": "تغییر میزان محافظت صفحات و ویرایش صفحات محافظت‌شده آبشاری",
        "right-editprotected": "ویرایش صفحه‌های محافظت‌شده به عنوان «{{int:protect-level-sysop}}»",
-       "right-editsemiprotected": "ویرایش صفحه حفاظت‌شده به عنوان \"{{int:protect-level-autoconfirmed}}\"",
+       "right-editsemiprotected": "ویرایش صفحه محافظت‌شده به عنوان «{{int:protect-level-autoconfirmed}}»",
        "right-editcontentmodel": "ویرایش مدل محتوای یک صفحه",
        "right-editinterface": "ویرایش واسط کاربری",
        "right-editusercss": "ویرایش صفحه‌های CSS دیگر کاربرها",
        "right-applychangetags": "تائید [[Special:Tags|برچسب]] بر روی تغییرات یک نفر",
        "right-changetags": "افزودن یا حذف [[Special:Tags|برچسب]] قراردادی بر روی نسخه یا سیاهه ورودی‌ها",
        "right-deletechangetags": "حذف [[Special:Tags|برچسب‌ها]] از پایگاه داده",
-       "grant-generic": "\" $1 \" حقوق بسته",
+       "grant-generic": "بستهٔ اختیارات «$1»",
        "grant-group-page-interaction": "تعامل با صفحات",
        "grant-group-file-interaction": "تعامل با رسانه",
        "grant-group-watchlist-interaction": "تعامل با فهرست پیگیری‌های شما",
        "grant-editmyoptions": "اولویت‌های کاربری را ویرایش کنید",
        "grant-editmywatchlist": "ویرایش فهرست پی‌گیری‌هایتان",
        "grant-editpage": "ویرایش صفحات موجود",
-       "grant-editprotected": "ویرایش صفحه حفاظت شده",
+       "grant-editprotected": "ویرایش صفحه محافظت شده",
        "grant-highvolume": "ویرایش با حجم بالا",
        "grant-oversight": "پنهان کردن ویرایش‌ها",
        "grant-patrol": "تغییرات گشت صفحات",
        "grant-privateinfo": "دسترسی به اطلاعات محرمانه",
-       "grant-protect": "حفاظت و عدم حفاظت صفحات",
-       "grant-rollback": "واگردانی  تغییرات صفحات",
+       "grant-protect": "محافظت و عدم محافظت صفحات",
+       "grant-rollback": "واگردانی تغییرات صفحه‌ها",
        "grant-sendemail": "ارسال ایمیل به دیگر کاربران",
        "grant-uploadeditmovefile": "بارگذاری، جایگزینی و انتقال پرونده‌ها",
-       "grant-uploadfile": "بازگذاری پرونده‌های جدید",
+       "grant-uploadfile": "بارگذاری پرونده‌های جدید",
        "grant-basic": "دسترسی‌های اولیه",
        "grant-viewdeleted": "مشاهدهٔ پرونده و صفحات حذف شده",
        "grant-viewmywatchlist": "مشاهدۀ فهرست پیگیری‌هایتان",
        "action-reupload": "نوشتن روی این پرونده موجود",
        "action-reupload-shared": "باطل کردن این پرونده روی یک مخزن مشترک",
        "action-upload_by_url": "بارگذاری این پرونده از یک نشانی اینترنتی",
-       "action-writeapi": "استفاده از API نوشتن",
+       "action-writeapi": "استفاده از رابط برنامه‌نویسی نوشتن",
        "action-delete": "حذف این صفحه",
        "action-deleterevision": "حذف نسخه‌ها",
        "action-deletelogentry": "حذف سیاههٔ ورودی‌ها",
        "recentchanges-legend-plusminus": "(<em>±۱۲۳</em>)",
        "recentchanges-submit": "نمایش",
        "rcfilters-activefilters": "پالایه‌های فعال",
+       "rcfilters-quickfilters": "تنظیمات ذخیره‌شدهٔ پالایه",
+       "rcfilters-quickfilters-placeholder-title": "هنوز پیوندی ذخیره نشده‌است",
+       "rcfilters-quickfilters-placeholder-description": "برای ذخیره پالایه‌هایتان و استفاده مجدد آنها، در محیط فعال پالایه در پایین بر روی دکمهٔ بوک‌مارک کلیک کنید.",
+       "rcfilters-savedqueries-defaultlabel": "پالایه‌های ذخیره‌شده",
+       "rcfilters-savedqueries-rename": "تغییر نام",
+       "rcfilters-savedqueries-setdefault": "تنظیم به عنوان پیش‌فرض",
+       "rcfilters-savedqueries-unsetdefault": "حذف از پیش‌فرض",
+       "rcfilters-savedqueries-remove": "حذف",
+       "rcfilters-savedqueries-new-name-label": "نام",
+       "rcfilters-savedqueries-apply-label": "ذخیره تنظیمات",
+       "rcfilters-savedqueries-cancel-label": "لغو",
+       "rcfilters-savedqueries-add-new-title": "ذخیره تنظیمات کنونی پالایه",
        "rcfilters-restore-default-filters": "بازگردانی پالایه‌های پیش‌فرض",
        "rcfilters-clear-all-filters": "پاک‌کردن تمام پالایه‌ها",
        "rcfilters-search-placeholder": "پالایش تغییرات اخیر (جستجو یا شروع به تایپ)",
        "rcfilters-filter-unregistered-description": "ویرایشگرانی که به سامانه وارد نشده‌اند.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "این پالایه با {{PLURAL:$2|پالایه|پالایه‌های}} تجربهٔ زیر که فقط کاربران ثبت‌نام شده را {{PLURAL:$2|می‌یابد|می‌یابند}} تعارض دارد: $1",
        "rcfilters-filtergroup-authorship": "ویرایشگر",
-       "rcfilters-filter-editsbyself-label": "ویرایش‌های خودتان",
+       "rcfilters-filter-editsbyself-label": "تغییریافته توسط شما",
        "rcfilters-filter-editsbyself-description": "ویرایش‌های شما.",
-       "rcfilters-filter-editsbyother-label": "ویرایش‌های دیگران",
-       "rcfilters-filter-editsbyother-description": "Ù\88Û\8cراÛ\8cØ´â\80\8cÙ\87اÛ\8c Ø§Û\8cجاد Ø´Ø¯Ù\87 ØªÙ\88سط Ø¯Û\8cگر Ú©Ø§Ø±Ø¨Ø±Ø§Ù\86 (Ù\86Ù\87 Ø´Ù\85ا).",
+       "rcfilters-filter-editsbyother-label": "تغییریافته توسط دیگران",
+       "rcfilters-filter-editsbyother-description": "Ù\87Ù\85Ù\87Ù\94 ØªØºÛ\8cÛ\8cرات Ø¨Ù\87 Ø¬Ø² ØªØºÛ\8cÛ\8cرات Ø´Ù\85ا.",
        "rcfilters-filtergroup-userExpLevel": "درجهٔ تجربه (فقط برای کاربران ثبت‌نام کرده)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "پالایه‌های تجربه فقط کاربران ثبت‌نام کرده را پیدا می‌کنند، در نتیجه با پالایهٔ «کاربران ثبت‌نام نکرده» تعارض دارند.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "پالایه «کاربران ثبت‌نام نکرده» با یک یا چند مورد از پالایه‌های تجربه در تعارض است. پالایه‌های دیگر در قسمت «پالایه‌های فعال» در بالا نشان داده شده‌اند.",
        "rcfilters-filter-user-experience-level-newcomer-label": "تازه‌واردها",
        "rcfilters-filter-user-experience-level-newcomer-description": "کمتر از ۱۰ ویرایش یا ۴ روز فعالیت.",
        "rcfilters-filter-user-experience-level-learner-label": "آموزندگان",
-       "rcfilters-filter-user-experience-level-learner-description": "حجÙ\85 Ù\88 Ù\85دت Ù\81عاÙ\84Û\8cت بیشتر از تازه‌واردان ولی کمتر از کاربران باتجریه.",
+       "rcfilters-filter-user-experience-level-learner-description": "تجربÙ\87Ù\94 بیشتر از تازه‌واردان ولی کمتر از کاربران باتجریه.",
        "rcfilters-filter-user-experience-level-experienced-label": "کاربران باتجربه",
        "rcfilters-filter-user-experience-level-experienced-description": "بیشتر از ۳۰ روز فعالیت و ۵۰۰ ویرایش.",
        "rcfilters-filtergroup-automated": "ویرایش‌های خودکار",
        "rcfilters-filter-minor-description": "ویرایش‌هایی که به عنوان جزئی برچسب خورده‌اند.",
        "rcfilters-filter-major-label": "ویرایش‌های غیرجزئی",
        "rcfilters-filter-major-description": "ویرایش‌هایی که برچسب جزئی نخوردند.",
+       "rcfilters-filtergroup-watchlist": "صفحه‌های پی‌گیری‌شده",
+       "rcfilters-filter-watchlist-watched-label": "پی‌گیری‌شده",
+       "rcfilters-filter-watchlist-watched-description": "تغییرات در صفحه‌هایی که در فهرست پی‌گیری شما هستند.",
+       "rcfilters-filter-watchlist-watchednew-label": "تغییرات اخیر در فهرست پی‌گیری",
+       "rcfilters-filter-watchlist-watchednew-description": "تغییرات در صفحه‌هایی در فهرست پی‌گیری شما که از زمان تغییرشان آن‌ها را بازدید نکرده‌اید.",
+       "rcfilters-filter-watchlist-notwatched-label": "پی‌گیری‌نشده",
+       "rcfilters-filter-watchlist-notwatched-description": "همه‌چیز به غیر از تغییرات در صفحه‌هایی که در فهرست پی‌گیری شما هستند.",
        "rcfilters-filtergroup-changetype": "نوع تغییرات",
        "rcfilters-filter-pageedits-label": "ویرایش‌های صفحه",
        "rcfilters-filter-pageedits-description": "ویرایش‌های محتوای ویکی، بحث‌ها، توضیحات رده...",
        "rcfilters-filter-categorization-label": "تغییرات رده",
        "rcfilters-filter-categorization-description": "سوابق صفحه‌هایی که به رده‌ها افزوده یا حذف شده‌اند.",
        "rcfilters-filter-logactions-label": "سیاههٔ فعالیت‌ها",
-       "rcfilters-filter-logactions-description": "فعالیت‌های مدیریتی، ایجاد حساب، حذف صفحه، بارگذاری‌ها ....",
+       "rcfilters-filter-logactions-description": "فعالیت‌های مدیریتی، ایجاد حساب، حذف صفحه، بارگذاری‌ها ...",
        "rcfilters-hideminor-conflicts-typeofchange-global": "پالایهٔ «ویرایش جزئی» با یک یا چند تا از پالایه‌های «نوع تغییرات» تعارض دارد چرا که برخی از انواع تغییرات را نمی‌توان به عنوان «جزئی» علامت زد. پالایه‌های دیگر در قسمت «پالایه‌های فعال» در بالا نشان داده شده‌اند.",
        "rcfilters-hideminor-conflicts-typeofchange": "برخی از انواع تغییرات را نمی‌توان به عنوان «جزئی» علامت زد، به همین خاطر این پالایه با پالایه‌های «نوع تغییرات» که در ادامه آمده در تعارض است: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "این پالایهٔ «نوع تغییرات» با پالایهٔ «تغییرات جزئی» در تعارض است. برخی از انواع تغییرات را نمی‌توان به عنوان «جزئی» علامت زد.",
+       "rcfilters-filtergroup-lastRevision": "آخرین نسخه",
+       "rcfilters-filter-lastrevision-label": "آخرین نسخه",
+       "rcfilters-filter-lastrevision-description": "جدیدترین تغییر در یک صفحه.",
+       "rcfilters-filter-previousrevision-label": "نسخه‌های قبلی",
+       "rcfilters-filter-previousrevision-description": "تمام تغییراتی که تازه‌ترین تغییر در یک صفحه نیستند.",
+       "rcfilters-view-tags": "برچسب‌ها",
        "rcnotefrom": "در زیر تغییرات از <strong>$3, $4</strong> (تا <strong>$1</strong> {{PLURAL:$5|نشان داده شده‌است|نشان داده شده‌اند}}).",
        "rclistfromreset": "از نو کردن انتخاب تاریخ",
        "rclistfrom": "نمایش تغییرات تازه با شروع از $3 $2",
        "rcshowhidecategorization": "$1 رده‌بندی صفحه‌ها",
        "rcshowhidecategorization-show": "نمایش",
        "rcshowhidecategorization-hide": "نهفتن",
-       "rclinks": "نمایش آخرین $1 تغییر در $2 روز اخیر<br />$3",
+       "rclinks": "نمایش آخرین $1 تغییر در $2 روز اخیر",
        "diff": "تفاوت",
        "hist": "تاریخچه",
        "hide": "نهفتن",
        "filejournal-fail-dbconnect": "امکان وصل شدن به پایگاه داده دفترخانه برای پشتیبان ذخیره‌سازی «$1» وجود نداشت.",
        "filejournal-fail-dbquery": "امکان به روز کردن پایگاه داده دفترخانه برای پشتیبان ذخیره‌سازی «$1» وجود نداشت.",
        "lockmanager-notlocked": "نمی‌توان قفل «$1» را گشود؛ چون قفل نشده‌است.",
-       "lockmanager-fail-closelock": "امکان بستن پرونده قفل شده \"$1\" وجود ندارد.",
-       "lockmanager-fail-deletelock": "امکان حذف پرونده قفل شده \"$1\" وجود ندارد.",
+       "lockmanager-fail-closelock": "امکان بستن پروندهٔ قفل‌شدهٔ «$1» وجود ندارد.",
+       "lockmanager-fail-deletelock": "امکان حذف پروندهٔ قفل‌شدهٔ «$1» وجود ندارد.",
        "lockmanager-fail-acquirelock": "نمی‌توان قفل «$1» را کسب کرد.",
-       "lockmanager-fail-openlock": "امکان باز کردن پرونده قفل شده \"$1\" وجود ندارد.",
+       "lockmanager-fail-openlock": "امکان باز کردن پروندهٔ قفل‌شدهٔ «$1» وجود ندارد.",
        "lockmanager-fail-releaselock": "نمی‌توان قفل «$1» را گشود.",
        "lockmanager-fail-db-bucket": "امکان ارتباط با تعداد کافی پایگاه داده قفل‌ها در محفظه $1 وجود نداشت.",
        "lockmanager-fail-db-release": "بازکردن قفل‌های پایگاه دادهٔ $1 ممکن نیست.",
        "protectedpages-timestamp": "برچسب زمان",
        "protectedpages-page": "صفحه",
        "protectedpages-expiry": "انقضا",
-       "protectedpages-performer": "کاربر حفاظت‌کننده",
-       "protectedpages-params": "پارامترهای حفاظت",
+       "protectedpages-performer": "کاربر محافظت‌کننده",
+       "protectedpages-params": "پارامترهای محافظت",
        "protectedpages-reason": "دلیل",
        "protectedpages-submit": "نمایش صفحه‌ها",
        "protectedpages-unknown-timestamp": "ناشناس",
        "pager-older-n": "{{PLURAL:$1|یک مورد قدیمی‌تر|$1 مورد قدیمی‌تر}}",
        "suppress": "سرکوب",
        "querypage-disabled": "این صفحه ویژه به دلایل عملکردی غیرفعال شده‌است.",
-       "apihelp": "راهنمای API",
-       "apihelp-no-such-module": "پودمان \" $1 \" یافت نشد.",
+       "apihelp": "راهنمای رابط برنامه‌نویسی",
+       "apihelp-no-such-module": "پودمان «$1» یافت نشد.",
        "apisandbox": "گودال ماسه‌بازی رابط برنامه‌نویسی",
-       "apisandbox-jsonly": "برای استفاده از صفحهٔ تمرین API به جاوااسکریپت نیاز دارید.",
+       "apisandbox-jsonly": "برای استفاده از صفحهٔ تمرین رابط برنامه‌نویسی به جاوااسکریپت نیاز دارید.",
        "apisandbox-api-disabled": "رابط برنامه‌نویسی در این تارنما غیرفعال شده‌است.",
-       "apisandbox-intro": "از این صفحه برای آزمایش <strong>خدمات وب API مدیاویکی</strong> استفاده کنید.\nبرای جزئیات بیشتر دربارهٔ نحوهٔ استفاده از API به [[mw:API:Main page|مستندات API]] رجوع کنید. مثال: [https://www.mediawiki.org/wiki/API#A_simple_example دریافت محتوای صفحهٔ اصلی]. برای دیدن مثال‌های بیشتر عملکردی را انتخاب کنید.",
+       "apisandbox-intro": "از این صفحه برای آزمایش <strong>خدمات وب رابط برنامه‌نویسی مدیاویکی</strong> استفاده کنید.\nبرای جزئیات بیشتر دربارهٔ نحوهٔ استفاده از رابط برنامه‌نویسی به [[mw:API:Main page|مستندات رابط برنامه‌نویسی]] رجوع کنید. مثال: [https://www.mediawiki.org/wiki/API#A_simple_example دریافت محتوای صفحهٔ اصلی]. برای دیدن مثال‌های بیشتر عملکردی را انتخاب کنید.",
        "apisandbox-fullscreen": "گسترش پنل",
        "apisandbox-fullscreen-tooltip": "بازکردن صفحهٔ تمرین برای پر کردن پنجرهٔ مرورگر.",
        "apisandbox-unfullscreen": "نمایش صفحه",
        "apisandbox-submit": "ایجاد درخواست",
        "apisandbox-reset": "پاک‌کردن",
        "apisandbox-retry": "تلاش مجدد",
-       "apisandbox-loading": "بارگÛ\8cرÛ\8c Ø§Ø·Ù\84اعات Ø¨Ø±Ø§Û\8c Ù\85اÚ\98Ù\88Ù\84 \"$1\" ...",
-       "apisandbox-load-error": "در Ø²Ù\85اÙ\86 Ø¨Ø§Ø±Ú¯Û\8cرÛ\8c Ø§Ø·Ù\84اعات Ø¨Ø±Ø§Û\8c Ù\85اÚ\98Ù\88Ù\84 \"$1\" Ø®Ø·Ø§Û\8cÛ\8c Ø±Ø® Ø¯Ø§Ø¯Ù\87â\80\8cاست: $2",
-       "apisandbox-no-parameters": "اÛ\8cÙ\86 Ù\85اÚ\98Ù\88Ù\84 API پارامتری ندارد.",
+       "apisandbox-loading": "بارگÛ\8cرÛ\8c Ø§Ø·Ù\84اعات Ø¨Ø±Ø§Û\8c Ù¾Ù\88دÙ\85اÙ\86 Ø±Ø§Ø¨Ø· Ø¨Ø±Ù\86اÙ\85Ù\87â\80\8cÙ\86Ù\88Û\8cسÛ\8c Â«$1» ...",
+       "apisandbox-load-error": "در Ø²Ù\85اÙ\86 Ø¨Ø§Ø±Ú¯Û\8cرÛ\8c Ø§Ø·Ù\84اعات Ø¨Ø±Ø§Û\8c Ù¾Ù\88دÙ\85اÙ\86 Ø±Ø§Ø¨Ø· Ø¨Ø±Ù\86اÙ\85Ù\87â\80\8cÙ\86Ù\88Û\8cسÛ\8c Â«$1» Ø®Ø·Ø§Û\8cÛ\8c Ø±Ø® Ø¯Ø§Ø¯: $2",
+       "apisandbox-no-parameters": "اÛ\8cÙ\86 Ù¾Ù\88دÙ\85اÙ\86 Ø±Ø§Ø¨Ø· Ø¨Ø±Ù\86اÙ\85Ù\87â\80\8cÙ\86Ù\88Û\8cسÛ\8c پارامتری ندارد.",
        "apisandbox-helpurls": "پیوندهای راهنمایی",
        "apisandbox-examples": "مثال‌ها",
        "apisandbox-dynamic-parameters": "پارامترهای بیشتر",
        "apisandbox-results": "نتیجه‌ها",
        "apisandbox-sending-request": "ارسال درخواست ای‌پی‌آی...",
        "apisandbox-loading-results": "دریافت درخواست‌های ای‌پی‌آی...",
-       "apisandbox-results-error": "در زمان بارگیری پاسخ کوئری API خطایی رخ داده‌است: $1.",
-       "apisandbox-request-selectformat-label": "نمایش داده‌های مورد درخواست به عنوان:",
+       "apisandbox-results-error": "در زمان بارگیری پاسخ پرسمان از رابط برنامه‌نویسی خطایی رخ داد: $1.",
+       "apisandbox-request-selectformat-label": "نمایش داده‌های درخواست به عنوان:",
        "apisandbox-request-format-url-label": "آدرس اینترنتی متن پرسمان",
        "apisandbox-request-url-label": "درخواست آدرس:",
        "apisandbox-request-json-label": "درخواست JSON:",
        "modifiedarticleprotection-comment": "سطح محاظفت «[[$1]]» را {{GENDER:$2|تغییر داد}}",
        "unprotectedarticle-comment": "«[[$1]]» را از محافظت {{GENDER:$2|در آورد}}",
        "protect-title": "تغییر وضعیت محافظت «$1»",
-       "protect-title-notallowed": "مشاهده سطح حفاظت  \" $1 \"",
+       "protect-title-notallowed": "مشاهدهٔ سطح محافظت «$1»",
        "prot_1movedto2": "[[$1]] به [[$2]] منتقل شد",
        "protect-badnamespace-title": "فضای نام بدون محافظت",
        "protect-badnamespace-text": "صفحه‌های موجود در این فضای نام، نمی‌توانند محافظت شوند.",
        "sp-contributions-uploads": "بارگذاری‌ها",
        "sp-contributions-logs": "سیاهه‌ها",
        "sp-contributions-talk": "بحث",
-       "sp-contributions-userrights": "مدیریت اختیارات کاربر",
+       "sp-contributions-userrights": "مدیریت اختیارات {{GENDER:$1|کاربر}}",
        "sp-contributions-blocked-notice": "این کاربر در حال حاضر بسته شده‌است.\nآخرین سیاههٔ بسته شدن در زیر آمده‌است:",
        "sp-contributions-blocked-notice-anon": "این نشانی آی‌پی در حال حاضر بسته است.\nآخرین سیاههٔ بسته شدن در زیر آمده‌است:",
        "sp-contributions-search": "جستجوی مشارکت‌ها",
        "autoblocklist-submit": "جستجو کن",
        "autoblocklist-legend": "فهرست قطع دسترسی‌های خودکار",
        "autoblocklist-localblocks": "{{PLURAL:$1|قطع دسترسی خودکار|قطع دسترسی‌های خودکار}} به صورت محلی",
+       "autoblocklist-total-autoblocks": "تعداد کلی بستن‌های خودکار: $1",
        "autoblocklist-empty": "فهرست قطع دسترسی‌های خودکار خالی‌ست.",
        "autoblocklist-otherblocks": "سایر {{PLURAL:$1|قطع دسترسی خودکار|قطع دسترسی‌های خودکار}}",
        "ipblocklist": "کاربران بسته‌شده",
        "tooltip-pt-mycontris": "فهرست مشارکت‌های {{GENDER:|شما}}",
        "tooltip-pt-anoncontribs": "فهرست ویرایش‌ها انجام شده از این نشانی آی‌پی",
        "tooltip-pt-login": "توصیه می‌شود که به سامانه وارد شوید، گرچه اجباری نیست",
+       "tooltip-pt-login-private": "برای استفاده از این ویکی نیاز است که به سامانه وارد شوید",
        "tooltip-pt-logout": "خروج از سامانه",
        "tooltip-pt-createaccount": "از شما دعوت می‌شود که حساب کاربری بسازید و به سامانه وارد شوید؛ هرچند که ساخت حساب کاربری اختیاری است.",
        "tooltip-ca-talk": "گفتگو پیرامون محتوای صفحه",
        "pageinfo-not-current": "متأسفانه تهیه اطلاعات ویرایش‌های قدیمی غیرممکن است.",
        "pageinfo-header-basic": "اطلاعات اولیه",
        "pageinfo-header-edits": "ویرایش تاریخچه",
-       "pageinfo-header-restrictions": "حفاظت از صفحه",
+       "pageinfo-header-restrictions": "محافظت از صفحه",
        "pageinfo-header-properties": "ويژگی‌های صفحه",
        "pageinfo-display-title": "نمایش عنوان",
        "pageinfo-default-sort": "کلید مرتب‌سازی پیش‌فرض",
        "newimages-legend": "پالودن",
        "newimages-label": "نام پرونده (یا قسمتی از آن):",
        "newimages-user": "نشانی آی‌پی یا نام کاربری",
+       "newimages-newbies": "فقط مشارکت‌های کاربران جدید نمایش داده شود",
        "newimages-showbots": "نمایش بارگذاری‌ها توسط ربات‌ها",
        "newimages-hidepatrolled": "مخفی کردن بارگذاری گشت‌زن‌ها",
+       "newimages-mediatype": "نوع رسانه",
        "noimages": "چیزی برای دیدن نیست.",
        "gallery-slideshow-toggle": "فعال یا غیرفعال کردن تصاویر بندانگشتی",
        "ilsubmit": "جستجو",
        "confirmrecreate": "کاربر [[User:$1|$1]] ([[User talk:$1|بحث]]) این مقاله را پس از اینکه شما آغاز به ویرایش آن نموده‌اید به دلیل زیر حذف کرده است :\n: ''$2'' \nلطفاً تأیید کنید که مجدداً می‌خواهید این مقاله را بسازید.",
        "confirmrecreate-noreason": "کاربر [[User:$1|$1]] ([[User talk:$1|بحث]]) این صفحه را پس از شروع ویرایش‌تان {{GENDER:$1|پاک}} کرده‌است.  لطفاً تأیید کنید که شما واقعاً می‌خواهید آن را دوباره ایجاد کنید.",
        "recreate": "باز ایجاد",
+       "confirm-purge-title": "خالی کردن کاشه این صفحه",
        "confirm_purge_button": "تأیید",
        "confirm-purge-top": "پاک کردن نسخهٔ حافظهٔ نهانی (Cache) این صفحه را تأیید می‌کنید؟",
        "confirm-purge-bottom": "خالی کردن میانگیر یک صفحه باعث می‌شود که آخرین نسخهٔ آن نمایش یابد.",
        "comma-separator": "،&#32;",
        "percent": "$1٪",
        "quotation-marks": "«$1»",
-       "imgmultipageprev": "&rarr; صفحهٔ پیشین",
-       "imgmultipagenext": "صفحهٔ بعد &larr;",
+       "imgmultipageprev": " صفحهٔ پیشین",
+       "imgmultipagenext": "صفحهٔ بعد ",
        "imgmultigo": "برو!",
        "imgmultigoto": "رفتن به صفحهٔ $1",
        "img-lang-default": "(زبان پیش‌فرض)",
        "tags-create-reason": "دلیل:",
        "tags-create-submit": "ایجاد",
        "tags-create-no-name": "نام تگ باید مشخص شود.",
-       "tags-create-invalid-chars": "Ù\86اÙ\85 ØªÚ¯‌ها نباید حاوی کاما (<code>,</code>) یا خط مورب (<code>/</code>) باشد.",
+       "tags-create-invalid-chars": "Ù\86اÙ\85 Ø¨Ø±Ú\86سب‌ها نباید حاوی کاما (<code>,</code>) یا خط مورب (<code>/</code>) باشد.",
        "tags-create-invalid-title-chars": "نام تگ‌ها نباید شامل حروفی شود که نمی‌توان از آن‌ها در عنوان صفحات استفاده کرد.",
        "tags-create-already-exists": "تگ \"$1\" هم‌اکنون موجود است.",
        "tags-create-warnings-above": "در هنگام ایجاد تگ \"$1\" با {{PLURAL:$2|هشدار|هشدارهای}} زیر پیش آمد:",
        "logentry-protect-protect": "$1 $3 را {{GENDER:$2|محافظت کرد}} $4",
        "logentry-protect-protect-cascade": "$1 $3 $4 {{GENDER:$2|محافظت کرد}} [آبشاری]",
        "logentry-protect-modify": "$1 سطح محافظت $3 را {{GENDER:$2|تغییر داد}} $4",
-       "logentry-protect-modify-cascade": "$1 سطح حفاظت برای $3 $4 را {{GENDER:$2|تغییر داد}}[آبشاری]",
+       "logentry-protect-modify-cascade": "$1 سطح محافظت $3 را {{GENDER:$2|تغییر داد}} به $4 [آبشاری]",
        "logentry-rights-rights": "$1 دسترسی $3 را از گروه $4 به $5 تغییر داد",
        "logentry-rights-rights-legacy": "$1 گروه عضویت $3 را {{GENDER:$2|تغییر داد}}",
        "logentry-rights-autopromote": "$1 به طور خودکار از $4 به $5 {{GENDER:$2|ارتقاء یافت}}",
        "feedback-external-bug-report-button": "پرونده‌سازی یک عمل فنی",
        "feedback-dialog-title": "ارسال یک بازخورد",
        "feedback-dialog-intro": "شما می توانید از فرم زیر برای بازخورد استفاده کنید. متن شما همراه با نام کاربریتان به صفحهٔ \"$1\" افزوده خواهد شد.",
-       "feedback-error1": "خطا: پاسخ‌های ناشناخته از رابط برنامه‌نویسی نرم‌افزار",
+       "feedback-error1": "خطا: پاسخ‌های ناشناخته از رابط برنامه‌نویسی",
        "feedback-error2": "خطا: شکست در ویرایش",
-       "feedback-error3": "خطا: عدم پاسخ از رابط برنامه‌نویسی نرم‌افزار",
+       "feedback-error3": "خطا: عدم پاسخ از رابط برنامه‌نویسی",
        "feedback-error4": "خطا:امکان ارسال به عنوان بازخورد داده‌شده، نیست",
        "feedback-message": "پیغام:",
        "feedback-subject": "موضوع:",
        "mw-widgets-titleinput-description-redirect": "تغییر مسیر به $1",
        "mw-widgets-categoryselector-add-category-placeholder": "در حال افزودن رده ...",
        "mw-widgets-usersmultiselect-placeholder": "افزودن بیشتر...",
+       "date-range-from": "از تاریخ:",
+       "date-range-to": "تا تاریخ:",
        "sessionmanager-tie": "نمی‌توان چندین نوع درخواست هویت‌سنجی را ترکیب کرد: $1.",
        "sessionprovider-generic": "$1 فصل",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "فصل‌های کوکی‌محور",
        "log-action-filter-patrol-patrol": "گشت غیرخودکار",
        "log-action-filter-patrol-autopatrol": "گشت خودکار",
        "log-action-filter-protect-protect": "محافظت",
-       "log-action-filter-protect-modify": "اصلاح حفاظت",
+       "log-action-filter-protect-modify": "اصلاح محافظت",
        "log-action-filter-protect-unprotect": "خروج از محافظت",
        "log-action-filter-protect-move_prot": "حرکت محافظت شده",
        "log-action-filter-rights-rights": "تغیبر دستی",
        "pageid": "شناسهٔ صفحهٔ $1",
        "rawhtml-notallowed": "برچسب‌های &lt;html&gt; را نمی‌توان خارج از صفحه‌های معمولی استفاده کرد.",
        "gotointerwiki": "در حال ترک {{SITENAME}}",
-       "gotointerwiki-invalid": "عنوان مشخص شده غیرمجاز بود.",
-       "gotointerwiki-external": "شما در حال ترک {{SITENAME}} هستید تا [[$2]] را ببینید که یک وب‌گاه مجزا است.\n\n[$1 اینجا کلیک کنید تا به $1 بروید]",
+       "gotointerwiki-invalid": "عنوان مشخص شده نامجاز است.",
+       "gotointerwiki-external": "شما در حال ترک {{SITENAME}} هستید تا [[$2]] را ببینید که یک وب‌گاه مجزا است.\n\n'''[$1 ادامه تا $1]'''",
        "undelete-cantedit": "شما نمی‌توانید این صفحه را احیا کنید چون مجاز به ویرایش این صفحه نیستید.",
-       "undelete-cantcreate": "شما نمی‌توانید این صفحه را احیا کنید چرا که صفحه‌ای به این نام همینک وجود ندارد و شما مجاز به ساختن آن نیستید."
+       "undelete-cantcreate": "شما نمی‌توانید این صفحه را احیا کنید چرا که صفحه‌ای به این نام همینک وجود ندارد و شما مجاز به ساختن آن نیستید.",
+       "pagedata-title": "اطلاعات صفحه",
+       "pagedata-not-acceptable": "هیچ قالب تطبیقی یافت نشد. انواع MIME پشتیبانی شده: $1",
+       "pagedata-bad-title": "عنوان نامعتبر: «$1»."
 }
index 78fa818..fe362a7 100644 (file)
        "recentchanges-label-bot": "Ngoo taƴto waɗi ɗum ko botol",
        "recentchanges-label-unpatrolled": "Ngoo taƴto suwaa tawo ƴeewteede",
        "rclistfrom": "Hollu bayle kese puɗɗiiɗe gila $3 $2",
-       "rclinks": "Hollu bayle $1 cakkitiiɗe baɗaaɗe e balɗe $2 ɓannuɗe ɗee<br />$3",
+       "rclinks": "Hollu bayle $1 cakkitiiɗe baɗaaɗe e balɗe $2 ɓannuɗe ɗee",
        "diff": "ceer",
        "hist": "aslol",
        "hide": "Suuɗ",
index d0229f8..dc08992 100644 (file)
@@ -53,7 +53,8 @@
                        "Matma Rex",
                        "BiscuitMan",
                        "Alluk.",
-                       "Tumm1"
+                       "Tumm1",
+                       "4shadoww"
                ]
        },
        "tog-underline": "Linkkien alleviivaus:",
        "password-login-forbidden": "Tämän käyttäjänimen ja salasanan käyttö on estetty.",
        "mailmypassword": "Hanki uusi 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.\n\nJos joku muu on tehnyt tämän pyynnön, tai jos olet muistanut salasanasi ja et halua vaihtaa sitä, voit jättää tämän viestin huomiotta ja jatkaa vanhan salasanan käyttöä.",
+       "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 vanhentuu {{PLURAL:$5|yhden päivän|$5 päivän}} kuluttua.\n\nJos joku muu on tehnyt tämän pyynnön, tai jos olet muistanut salasanasi ja et halua vaihtaa sitä, voit jättää tämän viestin huomiotta ja jatkaa vanhan salasanan käyttöä.",
        "noemail": "Käyttäjälle $1 ei ole määritelty sähköpostiosoitetta.",
        "noemailcreate": "Sinun on annettava voimassa oleva sähköpostiosoite",
        "passwordsent": "Uusi salasana on lähetetty käyttäjän <b>$1</b> sähköpostiosoitteeseen.\nOle hyvä ja kirjaudu sisään kun olet saanut sen.",
        "resetpass-expired": "Salasanasi on vanhentunut. Valitse uusi salasana, jotta pääset kirjautumaan sisään.",
        "resetpass-expired-soft": "Salasanasi on vanhentunut ja se pitää uudistaa. Valitse uusi salasana nyt tai paina \"{{int:authprovider-resetpass-skip-label}}\", niin voit uudistaa salasanan myöhemmin.",
        "resetpass-validity-soft": "Salasanasi ei ole kelvollinen: $1\n\nValitse nyt uusi salasana tai paina \"{{int:authprovider-resetpass-skip-label}}\", niin voit vaihtaa sen myöhemmin.",
-       "passwordreset": "Salasanan palauttaminen",
+       "passwordreset": "Salasanan uusiminen",
        "passwordreset-text-one": "Täytä tämä lomake uudistaaksesi salasanasi.",
        "passwordreset-text-many": "{{PLURAL:$1|Täytä yksi seuraavista kentistä, jolloin saat väliaikaisen salasanan sähköpostitse.}}",
        "passwordreset-disabled": "Salasanojen uudistaminen ei ole mahdollista tässä wikissä.",
        "preview": "Esikatselu",
        "showpreview": "Esikatsele",
        "showdiff": "Näytä muutokset",
-       "blankarticle": "<strong>Varoitus:</strong> Sivu, jota olet luomassa, on tyhjä.\nJos napsautat \"{{int:savearticle}}\" uudelleen, sivu luodaan ilman sisältöä.",
+       "blankarticle": "<strong>Varoitus:</strong> Sivu, jota olet luomassa on tyhjä.\nJos napsautat \"$1\" uudelleen, sivu luodaan ilman sisältöä.",
        "anoneditwarning": "<strong>Varoitus:</strong> Et ole kirjautunut sisään. IP-osoitteesi näkyy julkisesti kaikille, jos muokkaat. Jos <strong>[$1 kirjaudut sisään]</strong> tai <strong>[$2 luot tunnuksen]</strong>, muokkauksesi kirjataan käyttäjätunnuksesi tekemiksi ja samalla saat käyttöösi hyödyllisiä välineitä.",
        "anonpreviewwarning": "''Et ole kirjautunut sisään. Tallentaminen kirjaa IP-osoitteesi tämän sivun muutoshistoriaan.''",
        "missingsummary": "Et ole antanut yhteenvetoa. Jos valitset Tallenna uudelleen, niin muokkauksesi tallennetaan ilman yhteenvetoa.",
-       "selfredirect": "<strong>Varoitus:</strong> Olet tekemässä uudelleenohjausta, joka johtaa tästä sivusta tähän samaan sivuun. \n\nOlet ehkä määrittänyt ohjauksen kohteen väärin tai kenties muokkaat parhaillaan väärää sivua.\n\nJos painat toimintoa \"{{int:savearticle}}\" uudestaan, tämä ohjaussivu luodaan joka tapauksessa.",
+       "selfredirect": "<strong>Varoitus:</strong> Olet tekemässä uudelleenohjausta, joka johtaa tästä sivusta tähän samaan sivuun. \n\nOlet ehkä määrittänyt ohjauksen kohteen väärin tai kenties muokkaat parhaillaan väärää sivua.\n\nJos painat toimintoa \"$1\" uudestaan, tämä ohjaussivu luodaan joka tapauksessa.",
        "missingcommenttext": "Kirjoita viesti alle.",
-       "missingcommentheader": "<strong>Muistutus:</strong> Et ole antanut aiheotsikkoa tälle kommentille. Napsauta ”{{int:savearticle}}”, jos haluat tallentaa kommenttisi ilman sellaista.",
+       "missingcommentheader": "<strong>Muistutus:</strong> Et ole antanut aiheotsikkoa tälle kommentille. Napsauta ”$1”, jos haluat tallentaa kommenttisi ilman sellaista.",
        "summary-preview": "Yhteenvedon esikatselu:",
        "subject-preview": "Aiheotsikon esikatselu:",
        "previewerrortext": "Muokkaustesi esikatselun toteuttamisessa on tapahtunut virhe.",
        "saveusergroups": "Tallenna {{GENDER:$1|käyttäjän}} ryhmät",
        "userrights-groupsmember": "Jäsenenä ryhmissä:",
        "userrights-groupsmember-auto": "Automaattisesti jäsenenä ryhmissä:",
-       "userrights-groups-help": "Voit muuttaa ryhmiä, joissa tämä käyttäjä on.\n* Merkattu valintaruutu tarkoittaa, että käyttäjä on kyseisessä ryhmässä.\n* Merkkaamaton valintaruutu tarkoittaa, että käyttäjä ei ole kyseisessä ryhmässä.\n* <nowiki>*</nowiki> tarkoittaa, että et pysty poistamaan ryhmää, kun olet sen lisännyt tai päinvastoin.\n* # tarkoittaa että voit vain asettaa tämän ryhmän jäsenyyden päättymisajan takaisin; et voi tuoda sitä eteenpäin.",
+       "userrights-groups-help": "Voit muuttaa ryhmiä, joissa tämä käyttäjä on.\n* Merkattu valintaruutu tarkoittaa, että käyttäjä on kyseisessä ryhmässä.\n* Merkkaamaton valintaruutu tarkoittaa, että käyttäjä ei ole kyseisessä ryhmässä.\n* <nowiki>*</nowiki> tarkoittaa, että et pysty poistamaan ryhmää, kun olet sen lisännyt tai päinvastoin.\n* # tarkoittaa että voit vain siirtää tämän ryhmän jäsenten vanhentumisaikaa menneisyyttä kohti etkä lisätä aikaa.",
        "userrights-reason": "Syy:",
        "userrights-no-interwiki": "Sinulla ei ole oikeutta muokata käyttöoikeuksia muissa wikeissä.",
        "userrights-nodatabase": "Tietokantaa $1 ei ole tai se ei ole paikallinen.",
        "userrights-changeable-col": "Ryhmät, joita voit muuttaa",
        "userrights-unchangeable-col": "Ryhmät, joita et voi muuttaa",
        "userrights-expiry-current": "Vanhentuu $1",
-       "userrights-expiry-none": "Ei vanhene",
+       "userrights-expiry-none": "Ei vanhennu",
        "userrights-expiry": "Vanhentuu:",
        "userrights-expiry-existing": "Nykyinen vanhentumisaika: $2 kello $3",
        "userrights-expiry-othertime": "Muu aika:",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Näytä",
        "rcfilters-activefilters": "Aktiiviset suodattimet",
+       "rcfilters-quickfilters": "Pikalinkit",
+       "rcfilters-savedqueries-defaultlabel": "Tallennetut suodattimet",
+       "rcfilters-savedqueries-rename": "Nimeä uudelleen",
+       "rcfilters-savedqueries-setdefault": "Aseta oletukseksi",
+       "rcfilters-savedqueries-remove": "Poista",
+       "rcfilters-savedqueries-new-name-label": "Nimi",
+       "rcfilters-savedqueries-apply-label": "Luo pikalinkki",
+       "rcfilters-savedqueries-cancel-label": "Peru",
+       "rcfilters-savedqueries-add-new-title": "Tallenna suodattimet pikalinkkinä",
        "rcfilters-restore-default-filters": "Palauta oletussuodattimet",
        "rcfilters-clear-all-filters": "Tyhjennä kaikki suodattimet",
-       "rcfilters-search-placeholder": "Suodattimen viimeaikaiset muutokset (selaa tai aloita kirjoittaa)",
-       "rcfilters-invalid-filter": "Suodatin on epäkelpo",
+       "rcfilters-search-placeholder": "Suodata tuoreita muutoksia (selaa tai ala kirjoittaa)",
+       "rcfilters-invalid-filter": "Virheellinen suodatin",
        "rcfilters-empty-filter": "Ei aktiivisia suodattimia. Kaikki muutokset näytetään.",
        "rcfilters-filterlist-title": "Suodattimet",
        "rcfilters-filterlist-whatsthis": "Mikä tämä on?",
-       "rcfilters-filterlist-feedbacklink": "Anna palautetta uusista (beta)suodattimista",
+       "rcfilters-filterlist-feedbacklink": "Anna palautetta uusista (beta) suodattimista",
        "rcfilters-highlightbutton-title": "Korosta tulokset",
        "rcfilters-highlightmenu-title": "Valitse väri",
+       "rcfilters-highlightmenu-help": "Valitse korostusväri tälle ominaisuudelle",
        "rcfilters-filterlist-noresults": "Ei löytynyt suodattimia",
+       "rcfilters-noresults-conflict": "Tuloksia ei löytynyt, koska hakuehdot ovat ristiriidassa",
+       "rcfilters-state-message-subset": "Tällä suodattimella ei ole vaikutusta, koska sen tulokset sisältyvät seuraaviin laajempiin suodattimiin (kokeile korostusta sen erottamiseksi): $1",
+       "rcfilters-state-message-fullcoverage": "Ryhmän kaikkien suodattimien valitseminen on sama, kuin ei valitse mitään, joten tällä suodattimella ei ole vaikutusta. Ryhmään sisältyy: $ 1",
        "rcfilters-filtergroup-registration": "Käyttäjän rekisteröinti",
        "rcfilters-filter-registered-label": "Rekisteröitynyt",
-       "rcfilters-filter-registered-description": "Kirjautuneet muokkaukset.",
+       "rcfilters-filter-registered-description": "Sisäänkirjautuneiden muokkaukset.",
        "rcfilters-filter-unregistered-label": "Rekisteröimätön",
        "rcfilters-filter-unregistered-description": "Muokkaajat, jotka eivät ole kirjautuneet sisään.",
-       "rcfilters-filtergroup-authorship": "Muokkausten tekijä",
-       "rcfilters-filter-editsbyself-label": "Omat muokkauksesi",
-       "rcfilters-filter-editsbyself-description": "Muokkauksesi",
-       "rcfilters-filter-editsbyother-label": "Muiden muokkaukset",
-       "rcfilters-filter-editsbyother-description": "Muutokset jotka tehneet muut käyttäjät (et sinä).",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "Tämä suodatin on ristiriidassa seuraavien kokemustaso {{PLURAL:$2|suodattimen|suodattimien}} kanssa,  {{PLURAL:$2|joka|jotka}} löytävät vain rekisteröityneitä käyttäjiä: $1",
+       "rcfilters-filtergroup-authorship": "Muutoksen tekijä",
+       "rcfilters-filter-editsbyself-label": "Muutoksesi",
+       "rcfilters-filter-editsbyself-description": "Tekemäsi muutokset.",
+       "rcfilters-filter-editsbyother-label": "Muiden muutokset",
+       "rcfilters-filter-editsbyother-description": "Muiden käyttäjien tekemät muutokset.",
        "rcfilters-filtergroup-userExpLevel": "Kokemustaso (vain rekisteröityneet käyttäjät)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Kokemustaso suodattimet löytävät vain rekisteröityneitä käyttäjiä, joten tämä suodatin on ristiriidassa \"Rekisteröimätön\" -suodattimen kanssa.",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"Rekisteröimätön\" -suodatin on ristiriidassa yhden tai useamman kokemustaso suodattimen kanssa, joka löytää vain rekisteröityneitä käyttäjiä.  Ristiriidassa oleva suodatin on merkittynä Aktiivisissa suodattimissa, yläpuolella.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Tulokkaat",
        "rcfilters-filter-user-experience-level-newcomer-description": "Vähemmän kuin 10 muokkausta ja 4 päivää aktiivisuutta.",
        "rcfilters-filter-user-experience-level-learner-label": "Oppijat",
+       "rcfilters-filter-user-experience-level-learner-description": "Useamman päivän aktiivisina ja enemmän muokkauksia kuin \"tulokkailla\", mutta vähemmän kuin \"kokeneilla käyttäjillä\".",
        "rcfilters-filter-user-experience-level-experienced-label": "Kokeneet käyttäjät",
-       "rcfilters-filter-user-experience-level-experienced-description": "Enemmän kuin 30 päivää aktiivisena ja 500 muokkausta.",
+       "rcfilters-filter-user-experience-level-experienced-description": "Enemmän kuin 30 päivää aktiivisuutta ja 500 muokkausta.",
        "rcfilters-filtergroup-automated": "Automatisoidut muutokset",
        "rcfilters-filter-bots-label": "Botti",
-       "rcfilters-filter-bots-description": "Muokkaukset jotka tehty automaattisilla työkaluilla.",
+       "rcfilters-filter-bots-description": "Automaattisilla työkaluilla tehdyt muokkaukset.",
        "rcfilters-filter-humans-label": "Ihminen (ei botti)",
-       "rcfilters-filter-humans-description": "Muokkaukset, jotka tehnyt ihmismuokkaajat.",
+       "rcfilters-filter-humans-description": "Ihmisten tekemät muokkaukset.",
        "rcfilters-filtergroup-reviewstatus": "Tarkistuksen tila",
+       "rcfilters-filter-patrolled-label": "Tarkastetut",
+       "rcfilters-filter-patrolled-description": "Tarkastetut muokkaukset",
+       "rcfilters-filter-unpatrolled-label": "Ei tarkastetut",
+       "rcfilters-filter-unpatrolled-description": "Muutokset, joita ei ole tarkastettu",
        "rcfilters-filtergroup-significance": "Merkitys",
        "rcfilters-filter-minor-label": "Pienet muutokset",
+       "rcfilters-filter-minor-description": "Muokkaukset, jotka on merkitty pieniksi.",
        "rcfilters-filter-major-label": "Ei-pienet muutokset",
-       "rcfilters-filter-major-description": "Muokkauksia ei ole merkitty kuin pieniksi.",
+       "rcfilters-filter-major-description": "Muokkaukset, joita ei ole merkitty pieniksi.",
+       "rcfilters-filtergroup-watchlist": "Tarkkailulistalla olevat sivut",
+       "rcfilters-filter-watchlist-watched-label": "Tarkkailulistalla",
+       "rcfilters-filter-watchlist-watched-description": "Muutokset tarkkailulistalla oleviin sivuihin.",
+       "rcfilters-filter-watchlist-notwatched-label": "Ei tarkkailulistalla",
        "rcfilters-filtergroup-changetype": "Muutoksen tyyppi",
        "rcfilters-filter-pageedits-label": "Sivun muokkaukset",
-       "rcfilters-filter-pageedits-description": "Muokkaukset wikin sisältöön, keskusteluihin, luokkakuvauksiin....",
+       "rcfilters-filter-pageedits-description": "Muokkaukset wikin sisältöön, keskusteluihin, luokkakuvauksiin...",
        "rcfilters-filter-newpages-label": "Sivujen luonnit",
-       "rcfilters-filter-newpages-description": "Muokkaukset jotka luovat uusia sivuja.",
+       "rcfilters-filter-newpages-description": "Muokkaukset, joilla on luotu uusia sivuja.",
        "rcfilters-filter-categorization-label": "Luokkamuutokset",
+       "rcfilters-filter-categorization-description": "Tulokset sivuista, joita on lisätty tai poistettu luokista.",
        "rcfilters-filter-logactions-label": "Kirjatut toimet",
+       "rcfilters-filter-logactions-description": "Hallinnolliset toimet, tunnusten luonnit, sivujen poistot, tiedostojen lähetykset...",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "\"Pienet muutokset\" -suodatin on ristiriidassa yhden tai useamman Muutoksen tyyppi suodattimen kanssa, koska joitain muutostyyppejä ei voida pitää \"pieninä\". Ristiriidassa oleva suodatin on merkittynä Aktiivisissa suodattimissa, yläpuolella.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Joitain muutostyyppejä ei voida määrittää \"pieneksi\", joten tämä suodatin on ristiriidassa seuraavien Muutoksen tyyppi suodattimien kanssa: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "\"Muutoksen tyyppi\" on ristiriidassa \"Pienet muutokset\" -suodattimen kanssa. Joitain muutostyyppejä ei voida merkitä \"pieniksi\".",
+       "rcfilters-filtergroup-lastRevision": "Viimeisin versio",
+       "rcfilters-filter-lastrevision-label": "Viimeisin versio",
+       "rcfilters-filter-previousrevision-label": "Aikaisemman versiot",
        "rcnotefrom": "Alla ovat muutokset <strong>$3, $4</strong> lähtien. (Enintään <strong>$1</strong> näytetään.)",
        "rclistfrom": "Näytä uudet muutokset $3 kello $2 alkaen",
        "rcshowhideminor": "$1 pienet muutokset",
        "rcshowhidecategorization": "$1 sivujen luokkien muutokset",
        "rcshowhidecategorization-show": "Näytä",
        "rcshowhidecategorization-hide": "Piilota",
-       "rclinks": "Näytä $1 tuoretta muutosta viimeisten $2 päivän ajalta.<br />$3",
+       "rclinks": "Näytä $1 muutosta viimeisten $2 päivän ajalta.",
        "diff": "ero",
        "hist": "historia",
        "hide": "Piilota",
        "enotif_body_intro_moved": "{{GENDER:$2|$2}} siirsi {{GRAMMAR:inessive|{{SITENAME}}}} sivun $1 $PAGEEDITDATE. Sivun nykyinen versio on osoitteessa $3.",
        "enotif_body_intro_restored": "{{GENDER:$2|$2}} palautti {{GRAMMAR:inessive|{{SITENAME}}}} sivun $1 $PAGEEDITDATE. Sivun nykyinen versio on osoitteessa $3.",
        "enotif_body_intro_changed": "{{GENDER:$2|$2}} muutti {{GRAMMAR:inessive|{{SITENAME}}}} sivua $1 $PAGEEDITDATE. Sivun nykyinen versio on osoitteessa $3.",
-       "enotif_lastvisited": "Osoitteessa $1 on kaikki muutokset viimeisen käyntisi jälkeen.",
+       "enotif_lastvisited": "Kaikki muutokset viimeisimmän vierailusi jälkeen näet täältä $1",
        "enotif_lastdiff": "Muutos on osoitteessa $1.",
        "enotif_anon_editor": "kirjautumaton käyttäjä $1",
        "enotif_body": "$WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nMuokkaajan yhteenveto: $PAGESUMMARY $PAGEMINOREDIT\n\nOta yhteyttä muokkaajaan:\nsähköposti: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nUusia ilmoituksia tästä sivusta ei tule kunnes vierailet sivulla sisään kirjautuneena. Voit myös nollata ilmoitukset kaikille tarkkailemillesi sivuille tarkkailulistallasi.\n\n             {{GRAMMAR:genitive|{{SITENAME}}}} ilmoitusjärjestelmä\n\n--\nVoit muuttaa sähköpostimuistutusten asetuksia osoitteessa:\n{{canonicalurl:{{#special:Preferences}}}}\n\nVoit muuttaa tarkkailulistasi asetuksia osoitteessa:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nVoit poistaa sivun tarkkailulistalta osoitteessa:\n$UNWATCHURL\n\nPalaute ja lisäapu osoitteessa:\n$HELPPAGE",
        "confirmrecreate-noreason": "Käyttäjä [[User:$1|$1]] ([[User talk:$1|keskustelu]]) {{GENDER:$1|on poistanut}} tämän sivun sen jälkeen, kun aloit muokata. Varmista, että haluat tosiaan luoda sivun uudelleen.",
        "recreate": "Luo uudelleen",
        "unit-pixel": " px",
+       "confirm-purge-title": "Tyhjennä välimuistista",
        "confirm_purge_button": "Poista",
        "confirm-purge-top": "Poistetaanko tämän sivun välimuistikopiot?",
        "confirm-purge-bottom": "Välimuistikopioiden poistaminen tyhjentää välimuistin ja pakottaa sivun uusimman version näkyviin.",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|poisti}} ohjaussivun $3 korvaamalla",
        "logentry-delete-restore": "$1 {{GENDER:$2|palautti}} sivun $3 ($4)",
        "logentry-delete-restore-nocount": "$1 {{GENDER:$2|palautti}} sivun $3",
-       "restore-count-revisions": "{{PLURAL:$1|1 versio|$1 versio}}",
+       "restore-count-revisions": "{{PLURAL:$1|1 versio|$1 versiota}}",
        "restore-count-files": "{{PLURAL:$1|1 tiedosto|$1 tiedostoa}}",
        "logentry-delete-event": "$1 {{GENDER:$2|muutti}} {{PLURAL:$5|lokitapahtuman|$5 lokitapahtuman}} näkyvyyttä kohteessa $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|muutti}} {{PLURAL:$5|version|$5 version}} näkyvyyttä sivulla $3: $4",
        "logentry-import-upload": "$1 {{GENDER:$2|on tuonut}} kohteen $3 tiedostotallennuksella",
        "logentry-import-upload-details": "$1 {{GENDER:$2|on tuonut}} kohteen $3 tiedostotallennuksella ($4 {{PLURAL:$4|versio|versiota}})",
        "logentry-import-interwiki": "$1 {{GENDER:$2|on tuonut}} kohteen $3 muusta wikistä",
-       "logentry-import-interwiki-details": "$1 {{GENDER:$2|on tuonut}} kohteen $3 paikasta $5 ($4 {{PLURAL:$4|versio|versioita}})",
+       "logentry-import-interwiki-details": "$1 {{GENDER:$2|on tuonut}} kohteen $3 paikasta $5 ($4 {{PLURAL:$4|versio|versiota}})",
        "logentry-merge-merge": "$1 {{GENDER:$2|yhdisti}} sivun $3 sivuun $4 (versiot $5 saakka)",
        "logentry-move-move": "$1 {{GENDER:$2|siirsi}} sivun $3 uudelle nimelle $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|siirsi}} sivun $3 uudelle nimelle $4 luomatta ohjausta",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|päivitti}} merkkauksia kohdeversiossa $4 sivulla $3 ({{PLURAL:$7|lisätty}} $6; {{PLURAL:$9|poistettu}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|päivitti}} merkkauksia lokimerkinnässä $5 sivulla $3 ({{PLURAL:$7|lisätty}} $6; {{PLURAL:$9|poistettu}} $8)",
        "rightsnone": "(ei oikeuksia)",
-       "rightslogentry-temporary-group": "$1 (tilapäinen, $2 asti)",
+       "rightslogentry-temporary-group": "$1 (väliaikainen, $2 asti)",
        "feedback-adding": "Lisätään palautetta sivulle...",
        "feedback-back": "Takaisin",
        "feedback-bugcheck": "Hyvä! Varmista vielä, että ohjelmointivirhettä ei löydy [$1 tunnettujen virheiden luettelosta].",
        "mw-widgets-titleinput-description-redirect": "ohjaus kohteeseen $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Lisää luokka...",
        "mw-widgets-usersmultiselect-placeholder": "Lisää enemmän...",
+       "date-range-from": "Lähtien:",
+       "date-range-to": "Päättyen:",
        "sessionmanager-tie": "!!FYZZ!!Cannot combine multiple request authentication types: $1.",
        "sessionprovider-generic": "$1 istuntoa",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "istuntoja, joissa on evästeet käytössä",
        "gotointerwiki": "Lähdössä {{GRAMMAR:elative|{{SITENAME}}}}",
        "gotointerwiki-external": "Olet lähdössä {{GRAMMAR:elative|{{SITENAME}}}} toiselle sivustolle [[$2]].\n\n[$1 Paina tästä jatkaaksesi osoitteeseen $1].",
        "undelete-cantedit": "Et voi palauttaa tätä sivua, koska sinulla ei ole oikeutta muokata tätä sivua.",
-       "undelete-cantcreate": "Et voi palauttaa tätä sivua, koska tällä nimellä ei ole olemassaolevaa sivua, eikä sinulla ole oikeutta luoda tätä sivua."
+       "undelete-cantcreate": "Et voi palauttaa tätä sivua, koska tällä nimellä ei ole olemassaolevaa sivua eikä sinulla ole oikeutta luoda tätä sivua."
 }
index 5006722..c3542c0 100644 (file)
        "rcshowhideanons": "$1 anonyymit käyttäjät",
        "rcshowhidepatr": "$1 tarkistetut muutokset",
        "rcshowhidemine": "$1 omat muutokset",
-       "rclinks": "Näytä $1 verestä muutosta viimisitten $2 päivitten aikana.<br />$3",
+       "rclinks": "Näytä $1 verestä muutosta viimisitten $2 päivitten aikana.",
        "diff": "ero",
        "hist": "histuuria",
        "hide": "Piilota",
index eaef8b2..aca9662 100644 (file)
        "externaldberror": "Antin var talan um ein atgongd dátubasu feil, ella hevur tú ikki loyvi til at dagføra tína eksternu kontu.",
        "login": "Rita inn",
        "nav-login-createaccount": "Stovna kontu ella rita inn",
-       "userlogin": "Stovna kontu ella rita inn",
-       "userloginnocreate": "Rita inn",
        "logout": "Útrita",
        "userlogout": "Rita út",
        "notloggedin": "Ikki ritað inn",
        "userlogin-noaccount": "Hevur tú ikki nakra kontu?",
        "userlogin-joinproject": "Meldað teg til {{SITENAME}}",
-       "nologin": "Hevur tú ikki eina kontu? $1.",
-       "nologinlink": "Stovna eina kontu",
        "createaccount": "Stovna nýggja kontu",
-       "gotaccount": "Hevur tú longu eina kontu? '''$1'''.",
-       "gotaccountlink": "Rita inn",
-       "userlogin-resetlink": "Hevur tú gloymt tínar logg inn upplýsingar",
        "userlogin-resetpassword-link": "Hevur tú gloymt títt loyniorð?",
        "userlogin-helplink2": "Hjálp til innritan",
        "userlogin-loggedin": "Tú ert longu innritað/ur sum {{GENDER:$1|$1}}.\nNýt formularin niðanfyri fyri at rita inn sum ein annar brúkari.",
        "createacct-another-email-ph": "Skriva tína t-post adressu",
        "createaccountmail": "Nýt eitt fyribils tilvildarligt loyniorð og send tað til nevndu t-post adressuna",
        "createacct-realname": "Veruligt navn (valfrítt)",
-       "createaccountreason": "Orsøk:",
        "createacct-reason": "Orsøk",
        "createacct-reason-ph": "Hví upprættar tú eina nýggja kontu",
        "createacct-submit": "Upprætta tína kontu",
        "showdiff": "Sýn broytingar",
        "anoneditwarning": "<strong>Ávaring:</strong> Tú ert ikki innritað/ur. Tín IP adressa verður alment sjónlig um tú gert rættingar. Um tú <strong>[$1 ritar inn]</strong> ella <strong>[$2 upprættar eina konto]</strong>, so verða tínar rættingar ognaðar tínum brúkaranavni, umframt aðrir fyrimunir.",
        "anonpreviewwarning": "''Tú ert ikki innritað/ur. Um tú goymir nú, so verður tín IP adressa goymd í rættingar søguni hjá hesi síðu. ''",
-       "missingsummary": "'''Áminning:''' Tú hevur ikki givið nakran rættingar samandrátt.\nUm tú trýstir á \"{{int:savearticle}}\" enn einaferð, so verða tínar rættingar goymdar uttan samandrátt.",
+       "missingsummary": "'''Áminning:''' Tú hevur ikki givið nakran rættingar samandrátt.\nUm tú trýstir á \"$1\" enn einaferð, so verða tínar rættingar goymdar uttan samandrátt.",
        "missingcommenttext": "Vinarliga skriva eina viðmerking niðanfyri.",
-       "missingcommentheader": "'''Reminder:''' Tú hevur ikki skrivað nakað evni/yvirskrift fyri hesa viðmerking.\nUm tú trýstir á \"{{int:savearticle}}\" aftur, so verður tín rætting goymd uttan evni/yvirskrift.",
+       "missingcommentheader": "'''Reminder:''' Tú hevur ikki skrivað nakað evni/yvirskrift fyri hesa viðmerking.\nUm tú trýstir á \"$1\" aftur, so verður tín rætting goymd uttan evni/yvirskrift.",
        "summary-preview": "Samandráttaforskoðan:",
        "subject-preview": "Forskoðan av evni/yvirskrift:",
        "blockedtitle": "Brúkarin er bannaður",
        "editingsection": "Tú rættar $1 (partur)",
        "editingcomment": "Tú rættar $1 (nýtt brot)",
        "editconflict": "Rættingar konflikt: $1",
-       "explainconflict": "Onkur annar hevur broytt hesa síðuna síðan tú fór í gongd við at rætta hana.\nTað ovara tekst økið inniheldur síðu tekstin sum hann er í løtuni.\nTínar broytingar eru vístar í tí niðara tekst økinum.\nTú mást flætta tínar rættingar inn í verandi tekstin.\n'''Bert''' teksturin í ovara økinum verður goymdur, tá tú trýstir á \"{{int:savearticle}}\".",
+       "explainconflict": "Onkur annar hevur broytt hesa síðuna síðan tú fór í gongd við at rætta hana.\nTað ovara tekst økið inniheldur síðu tekstin sum hann er í løtuni.\nTínar broytingar eru vístar í tí niðara tekst økinum.\nTú mást flætta tínar rættingar inn í verandi tekstin.\n'''Bert''' teksturin í ovara økinum verður goymdur, tá tú trýstir á \"$1\".",
        "yourtext": "Tín tekstur",
        "storedversion": "Goymd útgáva",
        "nonunicodebrowser": "'''Ávaring: Tín internetkagi er ikki í samsvar við Unicode.'''\nEin dagføring er neyðug fyri at tú á tryggan hátt kanst rætta síður: Ikki-ASCII bókstavar fara at koma fram í rættingarteiginum sum hexadecimal kotur.",
        "saveprefs": "Goym innstillingar",
        "restoreprefs": "Nullstilla alt til standard innstillingar (í øllum teigum)",
        "prefs-editing": "Broyting av greinum",
-       "rows": "Røð:",
-       "columns": "Teigar:",
        "searchresultshead": "Leita",
        "stub-threshold": "Avmarkað til stubba leinki formatering $1:",
        "stub-threshold-sample-link": "dømi",
        "right-editprotected": "Rætta síður sum eru vardar sum \"{{int:protect-level-sysop}}\"",
        "right-editsemiprotected": "Rætta síður sum er vardar sum \"{{int:protect-level-autoconfirmed}}\"",
        "right-editinterface": "Rætta brúkaramarkamótið",
-       "right-editusercssjs": "Rætta CSS og JavaScript fílur hjá øðrum brúkarum",
        "right-editusercss": "Rætta CSS fílur hjá øðrum brúkarum",
        "right-edituserjs": "Rætta JavaScript fílur hjá øðrum brúkarum",
        "right-editmyusercss": "Rætta tínar egnu brúkara CSS fílur",
        "rcshowhidemine": "$1 mínar rættingar",
        "rcshowhidemine-show": "Vís",
        "rcshowhidemine-hide": "Fjal",
-       "rclinks": "Sýn seinastu $1 broytingarnar seinastu $2 dagarnar<br />$3",
+       "rclinks": "Sýn seinastu $1 broytingarnar seinastu $2 dagarnar",
        "diff": "munur",
        "hist": "søga",
        "hide": "Goym",
        "undeleteviewlink": "Hygg",
        "undeleteinvert": "Umvent val",
        "undeletecomment": "Orsøk:",
-       "undeletedrevisions": "{{PLURAL:$1|1 versjón|$1 versjónir}} endurstovnað/ar",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 versjón|$1 versjónir}} og {{PLURAL:$2|1 fíla|$2 fílur}} endurstovnað/ar",
-       "undeletedfiles": "{{PLURAL:$1|1 fíla endurstovna|$1 fílur endurstovnaðar}}",
        "cannotundelete": "Endurstovnan miseydnaðist:\n$1",
        "undeletedpage": "'''$1 er endurstovnað'''\n\nSí [[Special:Log/delete|slettingarloggin]] fyri at síggja seinastu strikingar og endurstovningar.",
        "undelete-header": "Far til [[Special:Log/delete|slettingarloggin]] fyri at síggja nýliga slettaðar síður.",
        "logentry-newusers-create": "Brúkarakonta $1 varð {{GENDER:$2|upprættað}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|legði út}} $3",
        "rightsnone": "(ongin)",
-       "revdelete-summary": "yvirlit yvir broytingar",
        "searchsuggest-search": "Leita í {{SITENAME}}",
-       "api-error-empty-file": "Fílan sum tú sendi inn var tóm.",
-       "api-error-file-too-large": "Fílan sum tú sendi inn var óv stór.",
-       "api-error-http": "Internur feilur: Kann ikki fáa samband við servaran.",
-       "api-error-mustbeloggedin": "Tú mást vera innritað/ur fyri at tú kanst leggja fílur upp.",
-       "api-error-ok-but-empty": "Internur feilur: Onki svar frá servara.",
-       "api-error-unclassified": "Ein ókendur feilur hendi.",
-       "api-error-unknown-code": "Ókendur feilur: \"$1\"",
        "duration-seconds": "$1 {{PLURAL:$1|sekund}}",
        "duration-minutes": "$1 {{PLURAL:$1|minuttur|minuttir}}",
        "duration-hours": "$1 {{PLURAL:$1|tími|tímar}}",
index 6e5b131..ade2de7 100644 (file)
        },
        "tog-underline": "Soulignement des liens :",
        "tog-hideminor": "Masquer les modifications mineures dans les modifications récentes",
-       "tog-hidepatrolled": "Masquer les modifications relues dans les modifications récentes",
+       "tog-hidepatrolled": "Masquer les modifications vérifiées dans les modifications récentes",
        "tog-newpageshidepatrolled": "Masquer les pages relues dans la liste des nouvelles pages",
        "tog-hidecategorization": "Masquer la catégorisation des pages",
        "tog-extendwatchlist": "Étendre la liste de suivi pour afficher toutes les modifications et pas uniquement les plus récentes",
        "tog-enotifminoredits": "M’avertir par courriel également lors des modifications mineures des pages ou des fichiers",
        "tog-enotifrevealaddr": "Afficher mon adresse électronique dans les courriels de notification",
        "tog-shownumberswatching": "Afficher le nombre d’utilisateurs en cours",
-       "tog-oldsig": "Votre signature existante :",
+       "tog-oldsig": "Votre signature actuelle :",
        "tog-fancysig": "Traiter la signature comme du wikitexte (sans lien automatique)",
        "tog-uselivepreview": "Utiliser l’aperçu rapide",
        "tog-forceeditsummary": "M’avertir lorsque je n’ai pas spécifié de résumé de modification",
        "anontalk": "Discussion",
        "navigation": "Navigation",
        "and": "&#32;et",
-       "qbfind": "Rechercher",
-       "qbbrowse": "Parcourir",
-       "qbedit": "Modifier",
-       "qbpageoptions": "Cette page",
-       "qbmyoptions": "Mes pages",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Actions",
        "namespaces": "Espaces de noms",
        "variants": "Variantes",
        "edit-local": "Modifier la description locale",
        "create": "Créer",
        "create-local": "Ajouter une description locale",
-       "editthispage": "Modifier cette page",
-       "create-this-page": "Créer cette page",
        "delete": "Supprimer",
-       "deletethispage": "Supprimer cette page",
-       "undeletethispage": "Restaurer cette page",
        "undelete_short": "Restaurer {{PLURAL:$1|une modification|$1 modifications}}",
        "viewdeleted_short": "Voir {{PLURAL:$1|une modification supprimée|$1 modifications supprimées}}",
        "protect": "Protéger",
        "protect_change": "modifier",
-       "protectthispage": "Protéger cette page",
        "unprotect": "Changer la protection",
-       "unprotectthispage": "Changer la protection de cette page",
        "newpage": "Nouvelle page",
-       "talkpage": "Discussion sur cette page",
        "talkpagelinktext": "discussion",
        "specialpage": "Page spéciale",
        "personaltools": "Outils personnels",
-       "articlepage": "Voir la page de contenu",
        "talk": "Discussion",
        "views": "Affichages",
        "toolbox": "Outils",
-       "tool-link-userrights": "Modifier les groupes de {{GENDER:$1|l’utilisateur|l’utilisatrice}}",
+       "tool-link-userrights": "Modifier les groupes de l’utilisat{{GENDER:$1|eur|rice}}",
        "tool-link-userrights-readonly": "Voir les {{GENDER:$1|groupes utilisateur}}",
        "tool-link-emailuser": "Envoyer un courriel à {{GENDER:$1|l’utilisateur|l’utilisatrice}}",
-       "userpage": "Voir la page utilisateur",
-       "projectpage": "Voir la page du projet",
        "imagepage": "Voir la page du fichier",
        "mediawikipage": "Voir la page du message",
        "templatepage": "Voir la page du modèle",
        "redirectedfrom": "(Redirigé depuis $1)",
        "redirectpagesub": "Page de redirection",
        "redirectto": "Rediriger vers :",
-       "lastmodifiedat": "Dernière modification de cette page le $1, à $2.",
+       "lastmodifiedat": "Cette page a été modifiée pour la dernière fois le $1 à $2.",
        "viewcount": "Cette page {{PLURAL:$1|0=n’a jamais été consultée|1=a été consultée une seule fois|a été consultée $1 fois}}.",
        "protectedpage": "Page protégée",
        "jumpto": "Aller à :",
        "preview": "Prévisualisation",
        "showpreview": "Prévisualiser",
        "showdiff": "Voir les modifications",
-       "blankarticle": "<strong>Attention :</strong> la page que vous créez est vide.\nSi vous cliquez de nouveau sur « {{int:savearticle}} », la page sera créée sans aucun contenu.",
+       "blankarticle": "<strong>Attention :</strong> la page que vous créez est vide.\nSi vous cliquez de nouveau sur « $1 », la page sera créée sans aucun contenu.",
        "anoneditwarning": "<strong>Attention :</strong> vous n’êtes pas connecté. Votre adresse IP sera visible de tout le monde si vous faites des modifications. Si vous <strong>[$1 vous connectez]</strong> ou <strong>[$2 créez un compte]</strong>, vos modifications seront attribuées à votre nom d’utilisateur, avec d'autres avantages.",
        "anonpreviewwarning": "<em>Vous n’êtes pas connecté{{GENDER:||e}}. Sauvegarder enregistrera votre adresse IP dans l’historique des modifications de la page.</em>",
-       "missingsummary": "<strong>Rappel :</strong> vous n’avez pas encore fourni le résumé de votre modification.\nSi vous cliquez de nouveau sur le bouton « {{int:savearticle}} », vos modifications seront sauvegardées sans résumé.",
-       "selfredirect": "<strong>Attention :</strong> vous êtes en train de rediriger la page vers elle-même.\nVous pouvez avoir spécifié la mauvaise cible pour la redirection, ou vous modifiez peut-être la mauvaise page.\nSi vous cliquez de nouveau sur « {{int:savearticle}} », la redirection sera tout de même créée.",
+       "missingsummary": "<strong>Rappel :</strong> vous n’avez pas encore fourni le résumé de votre modification.\nSi vous cliquez de nouveau sur le bouton « $1 », vos modifications seront sauvegardées sans résumé.",
+       "selfredirect": "<strong>Attention :</strong> vous êtes en train de rediriger la page vers elle-même.\nIl se peut que vous ayez spécifié la mauvaise cible pour la redirection, ou que vous modifiez peut-être la mauvaise page.\nSi vous cliquez de nouveau sur « $1 », la redirection sera tout de même créée.",
        "missingcommenttext": "Veuillez entrer un commentaire ci-dessous.",
        "missingcommentheader": "<strong>Rappel :</strong> vous n’avez pas fourni de sujet pour ce commentaire.\nSi vous cliquez de nouveau sur « {{int:Savearticle}} », votre modification sera enregistrée sans sujet.",
        "summary-preview": "Aperçu du résumé de modification :",
        "anontalkpagetext": "----\n<em>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</em>.\nPour cette raison, nous devons utiliser son adresse IP pour l’identifier.\nUne adresse IP peut être partagée par plusieurs utilisateurs.\nSi 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:CreateAccount|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.\nVous pouvez [[Special:Search/{{PAGENAME}}|lancer une recherche sur ce titre]] dans les autres pages,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rechercher dans les opérations liées]\nou [{{fullurl:{{FULLPAGENAME}}|action=edit}} créer cette page]</span>.",
        "noarticletext-nopermission": "Il n'y a pour l'instant aucun texte sur cette page.\nVous pouvez [[Special:Search/{{PAGENAME}}|faire une recherche sur ce titre]] dans les autres pages,\nou <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rechercher dans les journaux associés]</span>, mais vous n'avez pas la permission de créer cette page.",
-       "missing-revision": "La révision nº $1 de la page intitulée « {{FULLPAGENAME}} » n’existe pas.\n\nCela survient en général en suivant un lien historique obsolète vers une page qui a été supprimée.\nVous pouvez trouver plus de détails dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
+       "missing-revision": "La révision nº $1 de la page intitulée « {{FULLPAGENAME}} » n’existe pas.\n\nCela survient en général en suivant un lien historique désuet vers une page qui a été supprimée.\nVous pouvez trouver plus de détails dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
        "userpage-userdoesnotexist": "Le compte utilisateur « <nowiki>$1</nowiki> » n’est pas enregistré. Veuillez vérifier que vous voulez créer cette page.",
        "userpage-userdoesnotexist-view": "Le compte utilisateur « $1 » n'est pas enregistré.",
        "blocked-notice-logextract": "Cet utilisateur est actuellement bloqué.\nLa dernière entrée du journal des blocages est affichée ci-dessous pour référence :",
        "editingsection": "Modification de $1 (section)",
        "editingcomment": "Modification de $1 (nouvelle section)",
        "editconflict": "Conflit de modification : $1",
-       "explainconflict": "Cette page a été changée après que vous avez commencé à la modifier.\nLa zone de modification supérieure contient le texte tel qu’il est actuellement enregistré dans la base de données.\nVos modifications apparaissent dans la zone de modification inférieure.\nVous allez devoir fusionner vos modifications dans le texte existant.\n<strong>Seul</strong> le texte de la zone supérieure sera sauvegardé si vous cliquez sur « {{int:savearticle}} ».",
+       "explainconflict": "Cette page a été changée après que vous avez commencé à la modifier.\nLa zone de modification supérieure contient le texte tel qu’il est actuellement enregistré dans la base de données.\nVos modifications apparaissent dans la zone de modification inférieure.\nVous allez devoir fusionner vos modifications dans le texte existant.\n<strong>Seul</strong> le texte de la zone supérieure sera sauvegardé si vous cliquez sur « $1 ».",
        "yourtext": "Votre texte",
        "storedversion": "La version enregistrée",
        "nonunicodebrowser": "<strong>Attention : votre navigateur ne prend pas en charge l’Unicode.</strong>\nUn palliatif est en place vous permettant de modifier les pages en toute sécurité, faisant apparaître les caractères non-ASCII sous forme hexadécimale dans la boîte de modification.",
        "content-json-empty-object": "Objet vide",
        "content-json-empty-array": "Tableau vide",
        "deprecated-self-close-category": "Pages utilisant des balises HTML auto-fermantes non valides",
-       "deprecated-self-close-category-desc": "La page contient des balises HTML auto-fermantes non valides, comme <code>&lt;b/></code> ou <code>&lt;span/></code>.  Le comportement de celles-ci changera prochainement pour être en accord avec la spécification HTML5, donc leur utilisation dans le wikitexte est obsolète.",
+       "deprecated-self-close-category-desc": "La page contient des balises HTML auto-fermantes non valides, comme <code>&lt;b/></code> ou <code>&lt;span/></code>. Le comportement de celles-ci changera prochainement pour être en accord avec la spécification HTML5, donc leur utilisation dans le wikitexte est désuète.",
        "duplicate-args-warning": "<strong>Avertissement :</strong> [[:$1]] appelle [[:$2]] avec plus d'une valeur pour le paramètre « $3 ». Seule la dernière valeur fournie sera utilisée.",
        "duplicate-args-category": "Pages utilisant des arguments dupliqués dans les appels de modèle",
        "duplicate-args-category-desc": "La page contient des appels de modèle qui utilisent des arguments dupliqués, comme <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> ou <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "rev-deleted-user": "(nom d'utilisateur retiré)",
        "rev-deleted-event": "(détails de l’historique retirés)",
        "rev-deleted-user-contribs": "[nom d’utilisateur ou adresse IP retiré – modification masquée dans les contributions]",
-       "rev-deleted-text-permission": "Cette version de la page a été <strong>effacée</strong>.\nDes détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
+       "rev-deleted-text-permission": "Cette version de la page a été <strong>supprimée</strong>.\nLes détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
        "rev-suppressed-text-permission": "Cette version de la page a été <strong>masquée</strong>.\nLes détails se trouvent dans le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} journal des masquages].",
        "rev-deleted-text-unhide": "Cette version de la page a été <strong>supprimée</strong>.\nDes détails sont disponibles dans [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} le journal des suppressions].\nVous pouvez toujours [$1 voir cette version] si vous le voulez.",
        "rev-suppressed-text-unhide": "Cette version de la page a été <strong>masquée</strong>.\nDes détails sont disponibles dans [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} le journal des masquages].\nVous pouvez toujours [$1 voir cette version] si vous le voulez.",
        "diff-multi-sameuser": "({{PLURAL:$1|Une révision intermédiaire par le même utilisateur non affichée|$1 révisions intermédiaires par le même utilisateur non affichées}})",
        "diff-multi-otherusers": "({{PLURAL:$1|Une révision intermédiaire|$1 révisions intermédiaires}} par {{PLURAL:$2|un autre utilisateur|$2 utilisateurs}} non {{PLURAL:$1|affichée|affichées}})",
        "diff-multi-manyusers": "({{PLURAL:$1|Une révision intermédiaire|$1 révisions intermédiaires}} par plus {{PLURAL:$2|d'un utilisateur|de $2 utilisateurs}} {{PLURAL:$1|est masquée|sont masquées}})",
-       "difference-missing-revision": "{{PLURAL:$2|Une révision|$2 révisions}} de cette différence ($1) {{PLURAL:$2|n'a pas été trouvée|n'ont pas été trouvées}}.\n\nCela survient en général en suivant un lien de différence obsolète vers une page qui a été supprimée.\nVous pouvez trouver des détails dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
+       "difference-missing-revision": "{{PLURAL:$2|Une révision|$2 révisions}} de cette différence ($1) {{PLURAL:$2|n’a pas été trouvée|n’ont pas été trouvées}}.\n\nCela survient en général en suivant un lien de différence désuet vers une page qui a été supprimée.\nVous pouvez trouver des détails dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
        "searchresults": "Résultats de la recherche",
        "searchresults-title": "Résultats de recherche pour « $1 »",
        "titlematches": "Correspondances dans les titres des pages",
        "search-file-match": "(correspond au contenu du fichier)",
        "search-suggest": "Essayez avec cette orthographe : $1",
        "search-rewritten": "Résultats affichés pour $1. Rechercher $2 à la place.",
-       "search-interwiki-caption": "Projets frères",
+       "search-interwiki-caption": "Résultats des projets frères",
        "search-interwiki-default": "Résultats de $1 :",
        "search-interwiki-more": "(plus)",
        "search-interwiki-more-results": "résultats supplémentaires",
        "editinguser": "Modification des droits de l’{{GENDER:$1|utilisateur|utilisatrice}} <strong>[[User:$1|$1]]</strong> $2",
        "viewinguserrights": "Affichage des droits utilisateur de {{GENDER:$1|l’utilisateur|l’utilisatrice}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Modifier les groupes de l'utilisat{{GENDER:$1|eur|rice}}",
-       "userrights-viewusergroup": "Afficher les groupes d'utilisat{{GENDER:$1|eur|rice}}",
-       "saveusergroups": "Enregistrer les groupes de l’{{GENDER:$1|utilisateur|utilisatrice}}",
+       "userrights-viewusergroup": "Afficher les groupes de l’utilisat{{GENDER:$1|eur|rice}}",
+       "saveusergroups": "Enregistrer les groupes de l’utilisat{{GENDER:$1|eur|rice}}",
        "userrights-groupsmember": "Membre de :",
        "userrights-groupsmember-auto": "Membre implicite de :",
        "userrights-groupsmember-type": "$1",
        "grant-protect": "Protéger et déprotéger des pages",
        "grant-rollback": "Révoquer des modifications sur des pages",
        "grant-sendemail": "Envoyer des courriels aux autres utilisateurs",
-       "grant-uploadeditmovefile": "Télécharger, remplacer et renommer des fichiers",
+       "grant-uploadeditmovefile": "Téléverser, remplacer et renommer des fichiers",
        "grant-uploadfile": "Importer de nouveaux fichiers",
        "grant-basic": "Droits de base",
        "grant-viewdeleted": "Afficher les fichiers et pages supprimés",
        "action-protect": "modifier les niveaux de protection pour cette page",
        "action-rollback": "annuler rapidement les modifications du dernier utilisateur qui a modifié une page donnée",
        "action-import": "importer des pages depuis un autre wiki",
-       "action-importupload": "importer des pages depuis un fichier téléchargé",
+       "action-importupload": "importer des pages depuis un fichier téléversé",
        "action-patrol": "marquer la modification des autres comme relue",
        "action-autopatrol": "avoir votre modification marquée comme relue",
        "action-unwatchedpages": "voir la liste des pages non suivies",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Lister",
        "rcfilters-activefilters": "Filtres actifs",
+       "rcfilters-quickfilters": "Configuration des filtres sauvegardée",
+       "rcfilters-quickfilters-placeholder-title": "Aucun lien n’a encore été sauvegardé",
+       "rcfilters-quickfilters-placeholder-description": "Pour sauvegarder la configuration de vos filtres pour la réutiliser ultérieurement, cliquez sur l’icône des raccourcis dans la zone des filtres actifs, ci-dessous.",
+       "rcfilters-savedqueries-defaultlabel": "Filtres sauvegardés",
+       "rcfilters-savedqueries-rename": "Renommer",
+       "rcfilters-savedqueries-setdefault": "Activer par défaut",
+       "rcfilters-savedqueries-unsetdefault": "Supprime par défaut",
+       "rcfilters-savedqueries-remove": "Supprimer",
+       "rcfilters-savedqueries-new-name-label": "Nom",
+       "rcfilters-savedqueries-apply-label": "Sauvegarde de la configuration",
+       "rcfilters-savedqueries-cancel-label": "Annuler",
+       "rcfilters-savedqueries-add-new-title": "Sauvegarder la configuration du filtre courant",
        "rcfilters-restore-default-filters": "Rétablir les filtres par défaut",
        "rcfilters-clear-all-filters": "Effacer tous les filtres",
-       "rcfilters-search-placeholder": "Modifications récentes de filtres (naviguer ou commencer à saisir)",
+       "rcfilters-search-placeholder": "Filtrer les modifications récentes (naviguer ou commencer à saisir)",
        "rcfilters-invalid-filter": "Filtre non valide",
        "rcfilters-empty-filter": "Aucun filtre actif. Toutes les contributions sont affichées.",
        "rcfilters-filterlist-title": "Filtres",
        "rcfilters-filter-unregistered-label": "Non connectés",
        "rcfilters-filter-unregistered-description": "Éditeurs qui ne sont pas connectés.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Ce filtre est en conflit avec le{{PLURAL:$2| filtre|s filtres}}      Experience suivant, qui ne {{PLURAL:$2|trouve|trouvent}} que des utilisateurs inscrits : $1",
-       "rcfilters-filtergroup-authorship": "Modifier la paternité",
-       "rcfilters-filter-editsbyself-label": "Vos propres modifications",
-       "rcfilters-filter-editsbyself-description": "Vos modifications.",
-       "rcfilters-filter-editsbyother-label": "Modifications par d’autres.",
-       "rcfilters-filter-editsbyother-description": "Modifications créées par d’autres utilisateurs (pas vous).",
+       "rcfilters-filtergroup-authorship": "Paternité des contributions",
+       "rcfilters-filter-editsbyself-label": "Modifications faites par vous",
+       "rcfilters-filter-editsbyself-description": "Vos propres contributions.",
+       "rcfilters-filter-editsbyother-label": "Modifications faites par les autres.",
+       "rcfilters-filter-editsbyother-description": "Toutes les modifications sauf les votres.",
        "rcfilters-filtergroup-userExpLevel": "Niveau d’expérience (uniquement pour les utilisateurs enregistrés)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Les filtres Experience ne trouvent que des utilisateurs enregistrés, et ce filtre est en conflit avec le filtre \"non enregistré\".",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Le filtre \"non enregistrés\" est en conflit avec un ou plusieurs  filtres Expérience, qui ne trouvent que les utilisateurs inscrits seulement. Les filtres en conflit sont marqués dans le champ des filtres actifs, ci-dessus.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Nouveaux arrivants",
        "rcfilters-filter-user-experience-level-newcomer-description": "Moins de 10 modifications et 4 jours d’activité.",
        "rcfilters-filter-user-experience-level-learner-label": "Apprentis",
-       "rcfilters-filter-user-experience-level-learner-description": "Davantage de jours d’activité et de modifications que les « Nouveaux arrivants » mais moins que les « Utilisateurs expérimentés ».",
+       "rcfilters-filter-user-experience-level-learner-description": "Plus expérimenté que les « Nouveaux arrivants » mais moins que les « Utilisateurs expérimentés ».",
        "rcfilters-filter-user-experience-level-experienced-label": "Utilisateurs expérimentés",
        "rcfilters-filter-user-experience-level-experienced-description": "Plus de 30 jours d’activité et 500 modifications",
        "rcfilters-filtergroup-automated": "Contributions automatisées",
        "rcfilters-filtergroup-reviewstatus": "Etat de révision",
        "rcfilters-filter-patrolled-label": "Patrouillé",
        "rcfilters-filter-patrolled-description": "Modifications marquées comme relues.",
-       "rcfilters-filter-unpatrolled-label": "Non relu",
+       "rcfilters-filter-unpatrolled-label": "Non patrouillé",
        "rcfilters-filter-unpatrolled-description": "Modifications non marquées comme étant relues.",
        "rcfilters-filtergroup-significance": "Signification",
        "rcfilters-filter-minor-label": "Modifications mineures",
        "rcfilters-filter-minor-description": "Modifications que l’auteur a marquées comme mineures.",
        "rcfilters-filter-major-label": "Modifications non mineures",
        "rcfilters-filter-major-description": "Modifications non marquées comme mineures.",
+       "rcfilters-filtergroup-watchlist": "Pages de la liste de suivi",
+       "rcfilters-filter-watchlist-watched-label": "Sur la liste de suivi",
+       "rcfilters-filter-watchlist-watched-description": "Pages de votre liste de suivi modifiées.",
+       "rcfilters-filter-watchlist-watchednew-label": "Nouvelles modifications de la liste de suivi",
+       "rcfilters-filter-watchlist-watchednew-description": "Changements sur les pages de la liste de suivi que vous n'avez pas consultées depuis que ces modifications ont été faites.",
+       "rcfilters-filter-watchlist-notwatched-label": "Absent de la liste de suivi",
+       "rcfilters-filter-watchlist-notwatched-description": "Tout sauf des modifications de pages de la liste de suivi.",
        "rcfilters-filtergroup-changetype": "Type de modification",
        "rcfilters-filter-pageedits-label": "Modifications de page",
        "rcfilters-filter-pageedits-description": "Modifications du contenu du wiki, des discussions, des descriptions des catégories…",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Le filtre « Modifications mineures » est en conflit avec au moins un filtre de Type de modification, parce que certains types de modification ne peuvent être marqués comme « mineurs ». Les filtres en conflit sont marqués dans la zone Filtres actifs ci-dessus.",
        "rcfilters-hideminor-conflicts-typeofchange": "Certains types de modification ne peuvent pas être qualifiés de « mineurs », donc ce filtre est en conflit avec les filtres de Type de modification suivants : $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Ce filtre de Type de modification est en conflit avec le filtre « Modifications mineures ». Certains type sde modification ne peuvent pas être indiqués comme « mineurs ».",
+       "rcfilters-filtergroup-lastRevision": "Version actuelle",
+       "rcfilters-filter-lastrevision-label": "Version actuelle",
+       "rcfilters-filter-lastrevision-description": "Dernière modification apportée à une page.",
+       "rcfilters-filter-previousrevision-label": "Versions précédentes",
+       "rcfilters-filter-previousrevision-description": "Toutes les modifications apportées à une page et qui ne sont pas la dernière.",
+       "rcfilters-filter-excluded": "Exclu",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
+       "rcfilters-view-tags": "Étiquettes",
        "rcnotefrom": "Ci-dessous {{PLURAL:$5|la modification effectuée|les modifications effectuées}} depuis le <strong>$3, $4</strong> (affichées jusqu’à <strong>$1</strong>).",
        "rclistfromreset": "Réinitialiser la sélection de la date",
        "rclistfrom": "Afficher les nouvelles modifications depuis le $3 à $2",
        "rcshowhidecategorization": "$1 la catégorisation des pages",
        "rcshowhidecategorization-show": "Afficher",
        "rcshowhidecategorization-hide": "Cacher",
-       "rclinks": "Afficher les $1 dernières modifications effectuées au cours des $2 derniers jours<br />$3.",
+       "rclinks": "Afficher les $1 dernières modifications effectuées au cours des $2 derniers jours.",
        "diff": "diff",
        "hist": "hist",
        "hide": "Masquer",
        "file-thumbnail-no": "Le nom du fichier commence par <strong>$1</strong>.\nIl est possible qu'il s'agisse d'une version réduite <em>(vignette)</em>.\nSi vous disposez du fichier en haute résolution, importez-le, sinon veuillez modifier son nom.",
        "fileexists-forbidden": "Un fichier avec ce nom existe déjà et ne peut pas être écrasé.\nSi vous voulez toujours importer votre fichier, veuillez revenir en arrière et utiliser un autre nom. \n[[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "Un fichier portant ce nom existe déjà dans le dépôt de fichiers partagé.\nSi vous voulez toujours importer votre fichier, veuillez revenir en arrière et utiliser un autre nom. \n[[File:$1|thumb|center|$1]]",
-       "fileexists-no-change": "Le fichier téléchargé est une copie exacte de la version actuelle de <strong>[[:$1]]</strong>",
+       "fileexists-no-change": "Le fichier téléversé est une copie exacte de la version actuelle de <strong>[[:$1]]</strong>.",
        "fileexists-duplicate-version": "Le fichier téléversé est une copie exacte {{PLURAL:$2|d'une version précédente|de versions précédentes}} de <strong>[[:$1]]</strong>.",
        "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é. \nVous devriez vérifier le journal des suppressions de ce fichier avant de l'importer à nouveau.",
        "php-uploaddisabledtext": "L'import de fichiers est désactivé en PHP. Vérifiez l'option de configuration file_uploads.",
        "uploadscripted": "Ce fichier contient du code HTML ou un script qui pourrait être interprété de façon incorrecte par un navigateur web.",
        "upload-scripted-pi-callback": "Impossible de charger un fichier qui contient des instructions de traitement de feuille de style XML.",
-       "upload-scripted-dtd": "Impossible de télécharger des fichiers SVG qui contiennent une déclaration de DTD non standard.",
-       "uploaded-script-svg": "Élément scriptable « $1 » trouvé dans le fichier SVG téléchargé.",
+       "upload-scripted-dtd": "Impossible de téléverser des fichiers SVG qui contiennent une déclaration de DTD non standard.",
+       "uploaded-script-svg": "Élément scriptable « $1 » trouvé dans le fichier SVG téléversé.",
        "uploaded-hostile-svg": "CSS non sûr trouvé dans l’élément style d’un fichier SVG téléversé.",
        "uploaded-event-handler-on-svg": "Fixer des attributs de gestionnaire d’événement <code>$1=\"$2\"</code> n’est pas autorisé dans les fichiers SVG.",
        "uploaded-href-attribute-svg": "les attributs href dans les fichiers SVG ne sont autorisés que pour faire référence à des cibles http:// ou https://, <code>&lt;$1 $2=\"$3\"&gt;</code> trouvé.",
-       "uploaded-href-unsafe-target-svg": "Un href vers des données non sûres a été trouvé dans le fichier SVG téléchargé : URI cible <code>&lt;$1 $2=\"$3\"&gt;</code>.",
-       "uploaded-animate-svg": "Balise « animate » trouvée, qui pourrait modifier le href en utilisant l’attribut « from » <code>&lt;$1 $2=\"$3\"&gt;</code> dans le fichier SVG téléchargé.",
-       "uploaded-setting-event-handler-svg": "Positionner les attributs du gestionnaire d’événements n'est pas possbile, <code>&lt;$1 $2=\"$3\"&gt;</code> trouvé dans le fichier SVG téléchargé.",
+       "uploaded-href-unsafe-target-svg": "Un href vers des données non sûres a été trouvé dans le fichier SVG téléversé : URI cible <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-animate-svg": "Balise « animate » trouvée, qui pourrait modifier le href en utilisant l’attribut « from » <code>&lt;$1 $2=\"$3\"&gt;</code> dans le fichier SVG téléversé.",
+       "uploaded-setting-event-handler-svg": "Positionner les attributs du gestionnaire d’événements n'est pas possible, <code>&lt;$1 $2=\"$3\"&gt;</code> trouvé dans le fichier SVG téléversé.",
        "uploaded-setting-href-svg": "L’utilisation de la balise « set » pour ajouter un attribut « href » à l’élément parent est interdite.",
-       "uploaded-wrong-setting-svg": "L’utilisation de la balise « set » pour ajouter une cible distante/données/script à un attribut quelconque est interdite. <code>&lt;set to=\"$1\"&gt;</code> a été trouvé dans le fichier SVG téléchargé.",
-       "uploaded-setting-handler-svg": "Les SVG qui positionnent l’attribut « handler » avec distant/données/script sont bloqués. <code>$1=\"$2\"</code> a été trouvé dans le fichier SVG téléchargé.",
-       "uploaded-remote-url-svg": "Les SVG qui positionnent un attribut de style avec une URL distante sont bloqués. <code>$1=\"$2\"</code> trouvé dans le fichier SVG téléchargé.",
-       "uploaded-image-filter-svg": "Filtre d’image avec URL trouvé : <code>&lt;$1 $2=\"$3\"&gt;</code> dans le fichier SVG téléchargé.",
+       "uploaded-wrong-setting-svg": "L’utilisation de la balise « set » pour ajouter une cible distante, de données ou de type script,  à un attribut quelconque, est interdite. <code>&lt;set to=\"$1\"&gt;</code> a été trouvé dans le fichier SVG téléversé.",
+       "uploaded-setting-handler-svg": "Les SVG qui positionnent l’attribut « handler » avec distant/données/script sont bloqués. <code>$1=\"$2\"</code> a été trouvé dans le fichier SVG téléversé.",
+       "uploaded-remote-url-svg": "Les SVG qui positionnent un attribut de style avec une URL distante sont bloqués. <code>$1=\"$2\"</code> trouvé dans le fichier SVG téléversé.",
+       "uploaded-image-filter-svg": "Filtre d’image avec URL trouvé : <code>&lt;$1 $2=\"$3\"&gt;</code> dans le fichier SVG téléversé.",
        "uploadscriptednamespace": "Ce fichier SVG contient un espace de noms '<nowiki>$1</nowiki>' non autorisé.",
        "uploadinvalidxml": "Le XML dans le fichier importé n’a pas pu être analysé.",
        "uploadvirus": "Ce fichier contient un virus ! Pour plus de détails, consultez : $1",
-       "uploadjava": "C’est un fichier ZIP qui contient un fichier Java .class.\nLe téléchargement de fichiers Java n’est pas autorisé, car ils peuvent contourner certaines restrictions de sécurité.",
+       "uploadjava": "C’est un fichier ZIP qui contient un fichier Java .class.\nLe téléversement de fichiers Java n’est pas autorisé, car ils peuvent contourner certaines restrictions de sécurité.",
        "upload-source": "Fichier source",
        "sourcefilename": "Nom du fichier source :",
        "sourceurl": "URL source :",
        "upload-too-many-redirects": "L’URL contient trop de redirections.",
        "upload-http-error": "Une erreur HTTP est survenue : $1",
        "upload-copy-upload-invalid-domain": "La copie des téléversements n’est pas disponible depuis ce domaine.",
-       "upload-foreign-cant-upload": "Ce wiki n’est pas configuré pour télécharger des fichiers vers le dépôt de fichiers externe demandé.",
+       "upload-foreign-cant-upload": "Ce wiki n’est pas configuré pour téléverser des fichiers vers le dépôt de fichiers externe demandé.",
        "upload-foreign-cant-load-config": "Échec au chargement de la configuration du téléversement des fichiers vers le référentiel de fichiers étrangers.",
        "upload-dialog-disabled": "Les téléversements de fichier utilisant cette boîte de dialogue sont désactivés sur ce wiki.",
        "upload-dialog-title": "Téléverser un fichier",
        "upload-form-label-own-work": "Je suis l’auteur de cette œuvre",
        "upload-form-label-infoform-categories": "Catégories",
        "upload-form-label-infoform-date": "Date",
-       "upload-form-label-own-work-message-generic-local": "Je confirme que je télécharge ce fichier suivant les conditions et les politiques de licence de {{SITENAME}}",
-       "upload-form-label-not-own-work-message-generic-local": "Si vous ne pouvez pas télécharger ce fichier d’après les politiques de {{SITENAME}}, veuillez fermer cette boîte de dialogue et essayer une autre méthode.",
-       "upload-form-label-not-own-work-local-generic-local": "Vous pouvez aussi essayer [[Special:Upload|la page de téléchargement par défaut]].",
+       "upload-form-label-own-work-message-generic-local": "Je confirme que je téléverse ce fichier suivant les conditions et les politiques de licence de {{SITENAME}}",
+       "upload-form-label-not-own-work-message-generic-local": "Si vous ne pouvez pas téléverser ce fichier d’après les politiques de {{SITENAME}}, veuillez fermer cette boîte de dialogue et essayer une autre méthode.",
+       "upload-form-label-not-own-work-local-generic-local": "Vous pouvez aussi essayer [[Special:Upload|la page de téléversement par défaut]].",
        "upload-form-label-own-work-message-generic-foreign": "Je comprends que je téléverse ce fichier vers un dépôt partagé. Je confirme agir en accord avec les conditions d’utilisation et les règles relatives aux licences de celui-ci.",
        "upload-form-label-not-own-work-message-generic-foreign": "Si vous n’êtes pas en mesure de téléverser ce fichier de façon conforme aux règles de ce dépôt partagé, veuillez fermer cette boîte de dialogue et essayer une autre méthode.",
        "upload-form-label-not-own-work-local-generic-foreign": "Vous pouvez également essayer d’utiliser [[Special:Upload|la page de téléversement de {{SITENAME}}]], si leurs règles autorisent le téléversement du fichier.",
        "backend-fail-maxsize": "Impossible d’écrire le fichier « $1 » parce qu’il est plus grand {{PLURAL:$2|qu’un octet|que $2 octets}}.",
        "backend-fail-readonly": "Le support de stockage « $1 » est actuellement en lecture seule. La raison indiquée est : <em>$2</em>",
        "backend-fail-synced": "Le fichier « $1 » est dans un état incohérent dans les supports de stockage internes",
-       "backend-fail-connect": "Impossible de se connecter au support de stockage « $1 ».",
-       "backend-fail-internal": "Une erreur inconnue s’est produite dans le support de stockage « $1 ».",
+       "backend-fail-connect": "Impossible de se connecter au média de stockage « $1 ».",
+       "backend-fail-internal": "Une erreur inconnue s’est produite dans le média de stockage « $1 ».",
        "backend-fail-contenttype": "Impossible de déterminer le type de contenu du fichier à stocker en « $1 ».",
        "backend-fail-batchsize": "On a fourni au support de stockage un lot de $1 {{PLURAL:$1|opération|opérations}} de fichier; la limite est $2 {{PLURAL:$2|opération|opérations}}.",
        "backend-fail-usable": "Impossible de lire ou d’écrire le fichier « $1 » en raison de droits insuffisants ou de répertoires/conteneurs manquants.",
        "uploadstash-errclear": "La suppression des fichiers a échoué.",
        "uploadstash-refresh": "Actualiser la liste des fichiers",
        "uploadstash-thumbnail": "afficher la vignette",
-       "uploadstash-exception": "Impossible de stocker le téléchargement dans la réserve ($1) : « $2 ».",
+       "uploadstash-exception": "Impossible de stocker le téléversement dans la réserve ($1) : « $2 ».",
        "invalid-chunk-offset": "Offset de segment non valide",
        "img-auth-accessdenied": "Accès refusé",
        "img-auth-nopathinfo": "PATH_INFO manquant.\nVotre serveur n’est pas paramétré pour transmettre cette information.\nIl fonctionne peut-être en CGI et ne prend pas en charge img_auth.\nVoir : https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
        "apisandbox-dynamic-parameters-add-label": "Ajout du paramètre:",
        "apisandbox-dynamic-parameters-add-placeholder": "Nom du paramètre",
        "apisandbox-dynamic-error-exists": "Un paramètre nommé \"$1\" existe déjà.",
-       "apisandbox-deprecated-parameters": "Paramètres obsolètes",
+       "apisandbox-deprecated-parameters": "Paramètres désuets",
        "apisandbox-fetch-token": "Auto-remplissage du jeton",
        "apisandbox-submit-invalid-fields-title": "Certains champs ne sont pas valides",
        "apisandbox-submit-invalid-fields-message": "Veuillez corriger les champs marqués et essayez de nouveau.",
        "enotif_body_intro_moved": "La page $1 sur {{SITENAME}} a été {{GENDER:$2|renommée}} le $PAGEEDITDATE par $2, voir $3 pour la révision actuelle.",
        "enotif_body_intro_restored": "La page $1 sur {{SITENAME}} a été restaurée le $PAGEEDITDATE par {{GENDER:$2|$2}}, voir $3 pour la révision actuelle.",
        "enotif_body_intro_changed": "La page $1 sur {{SITENAME}} a été {{GENDER:$2|modifiée}} le $PAGEEDITDATE par $2, voir $3 pour la révision actuelle.",
-       "enotif_lastvisited": "Voyez $1 pour tous les changements depuis votre dernière visite.",
-       "enotif_lastdiff": "Voyez $1 pour visualiser ces changements.",
+       "enotif_lastvisited": "Pour tous les changements intervenus depuis votre dernière visite, voyez $1",
+       "enotif_lastdiff": "Pour visualiser ces changements, voyez $1",
        "enotif_anon_editor": "utilisateur non-enregistré $1",
        "enotif_body": "Cher $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nRésumé du contributeur : $PAGESUMMARY $PAGEMINOREDIT\n\nContactez ce contributeur :\ncourriel : $PAGEEDITOR_EMAIL\nwiki : $PAGEEDITOR_WIKI\n\nIl n’y aura pas d’autres notifications en cas de changements ultérieurs, à moins que vous ne visitiez cette page une fois connecté. Vous pouvez aussi réinitialiser les drapeaux de notification pour toutes les pages de votre liste de suivi.\n\nVotre système de notification de {{SITENAME}}\n\n--\nPour modifier les paramètres de notification par courriel, visitez\n{{canonicalurl:{{#special:Preferences}}}}\n\nPour modifier les paramètres de votre liste de suivi, visitez\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPour supprimer la page de votre liste de suivi, visitez\n$UNWATCHURL\n\nRetour et assistance :\n$HELPPAGE",
        "created": "créée",
        "sp-contributions-uploads": "imports",
        "sp-contributions-logs": "journaux",
        "sp-contributions-talk": "discuter",
-       "sp-contributions-userrights": "gérer les droits",
+       "sp-contributions-userrights": "gérer les droits {{GENDER:$1|utilisateur}}",
        "sp-contributions-blocked-notice": "Cet utilisateur est actuellement bloqué. \nLa dernière entrée du journal des blocages est affichée ci-dessous pour référence :",
        "sp-contributions-blocked-notice-anon": "Cette adresse IP est actuellement bloquée.\nLa dernière entrée du journal des blocages est affichée ci-dessous pour référence :",
        "sp-contributions-search": "Rechercher les contributions",
        "autoblocklist-submit": "Rechercher",
        "autoblocklist-legend": "Lister les blocages automatiques",
        "autoblocklist-localblocks": "{{PLURAL:$1|Blocage automatique local|Blocages automatiques locaux}}",
+       "autoblocklist-total-autoblocks": "Nombre total de blocages automatiques : $1",
        "autoblocklist-empty": "La liste des blocages automatiques est vide.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Autre blocage automatique|Autres blocages automatiques}}",
        "ipblocklist": "Utilisateurs bloqués",
        "sorbsreason": "Votre adresse IP est listée comme mandataire ouvert dans le DNSBL utilisé par {{SITENAME}}.",
        "sorbs_create_account_reason": "Votre adresse IP est listée comme mandataire ouvert dans le DNSBL utilisé par {{SITENAME}}.\nVous ne pouvez pas créer un compte.",
        "softblockrangesreason": "Les contributions anonymes ne sont pas autorisées à partir de votre adresse IP ($1). Veuillez vous connecter.",
-       "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",
+       "xffblockreason": "Une adresse IP dans l’en-tête X-Forwarded-For, soit la vôtre ou celle d’un serveur mandataire que vous utilisez, a été bloquée. La raison du blocage initial est&thinsp;: $1",
        "cant-see-hidden-user": "L’utilisateur que vous tentez de bloquer a déjà été bloqué et masqué. \nN’ayant pas le droit de masquer des utilisateurs, 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é{{GENDER:||e}}.",
        "ipbnounblockself": "Vous n'êtes pas autorisé{{GENDER:||e}} à vous débloquer vous-même",
        "tooltip-pt-mycontris": "La liste de {{GENDER:|vos}} contributions",
        "tooltip-pt-anoncontribs": "Une liste des modifications effectuées depuis cette adresse IP",
        "tooltip-pt-login": "Il est recommandé de vous identifier ; ce n'est cependant pas obligatoire.",
+       "tooltip-pt-login-private": "Vous devez vous connecter pour utiliser ce wiki",
        "tooltip-pt-logout": "Se déconnecter",
        "tooltip-pt-createaccount": "Il vous est conseillé de créer un compte et de vous connecter ; cependant, ce n’est pas obligatoire",
        "tooltip-ca-talk": "Discussion au sujet de cette page de contenu",
        "creditspage": "Crédits de la page",
        "nocredits": "Il n'y a pas d'informations d'attribution disponibles pour cette page.",
        "spamprotectiontitle": "Filtre de protection anti-pollupostage",
-       "spamprotectiontext": "La page que vous avez voulu sauvegarder a été bloquée par le filtre anti-spam. Ceci est probablement dû à l'introduction d'un lien vers un site externe apparaissant sur la liste noire.",
+       "spamprotectiontext": "La page que vous avez voulu sauvegarder a été bloquée par le filtre anti-pourriel. Ceci est probablement dû à l’introduction d’un lien vers un site externe apparaissant sur la liste noire.",
        "spamprotectionmatch": "Le texte suivant a déclenché notre filtre de protection anti-pollupostage : $1",
        "spambot_username": "Nettoyage de pourriels par MediaWiki",
        "spam_reverting": "Rétablissement de la dernière version ne contenant pas de lien vers $1",
        "spam_blanking": "Toutes les versions contenant des liens vers $1 sont blanchies",
        "spam_deleting": "Toutes les versions contenaient des liens vers $1, suppression",
-       "simpleantispam-label": "Vérification anti-spam.\nNe <strong>rien</strong> inscrire ici !",
+       "simpleantispam-label": "Vérification anti-pourriel.\nNe <strong>rien</strong> inscrire ici !",
        "pageinfo-title": "Informations pour « $1 »",
        "pageinfo-not-current": "Désolé, impossible de fournir cette information pour les anciennes révisions.",
        "pageinfo-header-basic": "Informations de base",
        "newimages-legend": "Filtre",
        "newimages-label": "Nom du fichier (ou une partie de celui-ci) :",
        "newimages-user": "Adresse IP ou nom d'utilisateur",
+       "newimages-newbies": "Afficher uniquement les contributions des nouveaux comptes",
        "newimages-showbots": "Afficher les imports faits par des robots",
-       "newimages-hidepatrolled": "Masquer les téléchargements patrouillés",
+       "newimages-hidepatrolled": "Masquer les téléversements patrouillés",
+       "newimages-mediatype": "Type de média :",
        "noimages": "Aucune image à afficher.",
        "gallery-slideshow-toggle": "Basculer les vignettes",
        "ilsubmit": "Rechercher",
        "exif-artist": "Auteur",
        "exif-copyright": "Détenteur du droit d'auteur",
        "exif-exifversion": "Version EXIF",
-       "exif-flashpixversion": "Version FlashPix supportée",
+       "exif-flashpixversion": "Version FlashPix prise en charge",
        "exif-colorspace": "Espace colorimétrique",
        "exif-componentsconfiguration": "Signification de chaque composante",
        "exif-compressedbitsperpixel": "Mode de compression de l'image",
        "confirmemail_subject": "Confirmation d’adresse de courriel pour {{SITENAME}}",
        "confirmemail_body": "Quelqu’un, probablement vous, à partir de l’adresse IP $1,\na créé un compte « $2 » avec cette adresse de courriel sur le site {{SITENAME}}.\n\nPour confirmer que ce compte vous appartient vraiment et afin\nd’activer les fonctions de messagerie sur {{SITENAME}},\nveuillez suivre ce lien dans votre navigateur :\n\n$3\n\nSi vous n’avez *pas* créé ce compte, suivez le lien ci-dessous \npour annuler la confirmation de votre adresse courriel :\n\n$5\n\nCe code de confirmation expirera le $4.",
        "confirmemail_body_changed": "Quelqu’un, probablement vous, à partir de l’adresse IP $1,\na modifié l’adresse de courriel associée au compte « $2 » de {{SITENAME}}\nen cette adresse.\n\nPour confirmer que ce compte vous appartient vraiment et afin\nde réactiver les fonctions de messagerie sur {{SITENAME}},\nveuillez suivre ce lien dans votre navigateur :\n\n$3\n\nSi ce compte ne vous appartient *pas*, n’ouvrez pas ce lien ;\nvous pouvez suivre l’autre lien ci-dessous pour annuler la\nconfirmation de votre adresse courriel :\n\n$5\n\nCe code de confirmation expirera le $4.",
-       "confirmemail_body_set": "Quelqu’un, probablement vous, depuis l’adresse IP $1, a modifié l’adresse de courriel du compte « $2 » en celle-ci sur {{SITENAME}}.\n\nPour confirmer que ce compte vous appartient et réactiver les fonctions de courriel sur {{SITENAME}}, ouvrez ce lien dans votre navigateur Web :\n\n$3\n\nCe code de confirmation expirera le $4.\n\nSi le compte ne vous appartient *pas*, suivez plutôt ce lien pour annuler la confirmation de l’adresse de courriel :\n\n$5",
+       "confirmemail_body_set": "Quelqu’un, probablement vous, depuis l’adresse IP $1, a modifié l’adresse de courriel du compte « $2 » en celle-ci sur {{SITENAME}}.\n\nPour confirmer que ce compte vous appartient et réactiver les fonctions de courriel sur {{SITENAME}}, ouvrez ce lien dans votre navigateur Web :\n\n$3\n\nSi le compte ne vous appartient *pas*, suivez plutôt ce lien pour annuler la confirmation de l’adresse de courriel :\n\n$5\n\nCe code de confirmation expirera le $4.",
        "confirmemail_invalidated": "Confirmation de l’adresse courriel annulée",
        "invalidateemail": "Annuler la confirmation de l'adresse de courriel",
        "notificationemail_subject_changed": "L’adresse courriel enregistrée sur {{SITENAME}} a été changée",
        "confirmrecreate": "L’utilisat{{GENDER:$1|eur|rice}} [[User:$1|$1]] ([[User talk:$1|Discussion]]) a supprimé cette page, alors que vous aviez commencé à la modifier, pour le motif suivant :\n: <em>$2</em>\nVeuillez confirmer que vous désirez réellement recréer cette page.",
        "confirmrecreate-noreason": "L’utilisat{{GENDER:$1|eur|rice}} [[User:$1|$1]] ([[User talk:$1|Discussion]]) a supprimé cette page, alors que vous aviez commencé à la modifier. Veuillez confirmer que vous désirez réellement recréer cette page.",
        "recreate": "Recréer",
+       "confirm-purge-title": "Purger cette page",
        "confirm_purge_button": "Confirmer",
        "confirm-purge-top": "Voulez-vous rafraîchir cette page (purger le cache) ?",
-       "confirm-purge-bottom": "Purger une page l’efface du cache de rendu et force sa dernière version à être régénérée et affichée.",
+       "confirm-purge-bottom": "Purger une page l’efface du cache et force sa dernière version à être affichée.",
        "confirm-watch-button": "Valider",
        "confirm-watch-top": "Ajouter cette page à votre liste de suivi ?",
        "confirm-unwatch-button": "Valider",
        "watchlistedit-clear-removed": "{{PLURAL:$1|Un titre a été|$1 titres ont été}} retirés :",
        "watchlistedit-too-many": "Il y a trop de pages à afficher ici.",
        "watchlisttools-clear": "Effacer la liste de suivi",
-       "watchlisttools-view": "Afficher les modifications associées",
+       "watchlisttools-view": "Voir les modifications correspondantes",
        "watchlisttools-edit": "Voir et modifier la liste de suivi",
        "watchlisttools-raw": "Modifier la liste de suivi en mode brut",
        "iranian-calendar-m1": "Farvardin",
        "specialpages-group-pagetools": "Outils pour les pages",
        "specialpages-group-wiki": "Données et outils",
        "specialpages-group-redirects": "Pages spéciales redirigées",
-       "specialpages-group-spam": "Outils anti-spam",
+       "specialpages-group-spam": "Outils anti-pourriel",
        "specialpages-group-developer": "Outils du développeur",
        "blankpage": "Page vide",
        "intentionallyblankpage": "Cette page est laissée intentionnellement (presque) vide.",
        "tags-active-no": "Non",
        "tags-source-extension": "Défini par le logiciel",
        "tags-source-manual": "Appliquée manuellement par les utilisateurs et les robots",
-       "tags-source-none": "Obsolète",
+       "tags-source-none": "Désuete",
        "tags-edit": "modifier",
        "tags-delete": "supprimer",
        "tags-activate": "activer",
        "tags-create-reason": "Raison :",
        "tags-create-submit": "Créer",
        "tags-create-no-name": "Vous devez spécifier un nom de balise.",
-       "tags-create-invalid-chars": "Les noms de balise ne doivent pas contenir de virgules (<code>,</code>) ni de barres obliques (<code>/</code>).",
+       "tags-create-invalid-chars": "Les noms de balise ne doivent pas contenir de virgules (<code>,</code>), de barres verticales (<code>|</code>), ni de barres obliques (<code>/</code>).",
        "tags-create-invalid-title-chars": "Les noms de balise ne doivent pas contenir de caractères qui ne peuvent pas être utilisés dans les titres des pages.",
        "tags-create-already-exists": "La balise « $1 » existe déjà.",
        "tags-create-warnings-above": "{{PLURAL:$2|L'avertissement suivant|Les avertissements suivants}} ont été rencontrés lors de la tentative de création de la balise « $1 » :",
        "logentry-block-reblock": "$1 {{GENDER:$2|a modifié}} les paramètres de blocage pour {{GENDER:$4|$3}} avec une durée de $5 $6",
        "logentry-suppress-block": "$1 {{GENDER:$2|a bloqué}} {{GENDER:$4|$3}} avec une durée de $5 $6",
        "logentry-suppress-reblock": "$1 {{GENDER:$2|a modifié}} les paramètres de blocage pour {{GENDER:$4|$3}} avec une durée de $5 $6",
-       "logentry-import-upload": "$1 {{GENDER:$2|a importé}} $3 par téléchargement de fichier",
-       "logentry-import-upload-details": "$1 {{GENDER:$2|a importé}} $3 par téléchargement de fichier ($4 {{PLURAL:$4|révision|révisions}})",
+       "logentry-import-upload": "$1 {{GENDER:$2|a importé}} $3 par téléversement de fichier",
+       "logentry-import-upload-details": "$1 {{GENDER:$2|a importé}} $3 par téléversement de fichier ($4 {{PLURAL:$4|révision|révisions}})",
        "logentry-import-interwiki": "$1 {{GENDER:$2|a importé}} $3 depuis un autre wiki",
        "logentry-import-interwiki-details": "$1 {{GENDER:$2|a importé}} $3 depuis $5 ($4 {{PLURAL:$4|révision|révisions}})",
        "logentry-merge-merge": "$1 {{GENDER:$2|a fusionné}} $3 en $4 (révisions jusqu’à $5)",
        "logentry-rights-rights": "$1 a modifié l’appartenance au groupe pour {{GENDER:$6|$3}} de $4 à $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|a modifié}} l'appartenance au groupe pour $3",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|a été promu}} automatiquement de $4 à $5",
-       "logentry-upload-upload": "$1 {{GENDER:$2|a téléchargé}} $3",
+       "logentry-upload-upload": "$1 {{GENDER:$2|a téléversé}} $3",
        "logentry-upload-overwrite": "$1 {{GENDER:$2|a téléversé}} une nouvelle version de $3",
-       "logentry-upload-revert": "$1 {{GENDER:$2|a téléchargé}} $3",
+       "logentry-upload-revert": "$1 {{GENDER:$2|a téléversé}} $3",
        "log-name-managetags": "Journal des modifications de balises",
        "log-description-managetags": "Cette page recense les tâches de maintenance liées aux [[Special:Tags|balises]]. Le journal contient uniquement les actions faites manuellement par un administrateur ; les balises peuvent être créées ou supprimées par le logiciel wiki sans que cette action ne soit inscrite dans ce journal.",
        "logentry-managetags-create": "$1 {{GENDER:$2|a créé}} la balise « $4 ».",
        "limitreport-expansiondepth": "Profondeur d’expansion maximale",
        "limitreport-expensivefunctioncount": "Nombre de fonctions d’analyse coûteuses",
        "expandtemplates": "Expansion des modèles",
-       "expand_templates_intro": "Cette page spéciale accepte un texte wiki source et permet de réaliser récursivement l’expansion de tous les modèles qu’il contient.\nElle réalise aussi l’expansion des fonctions supportées d'analyse telles que\n<code><nowiki>{{</nowiki>#language:...}}</code> et des variables telles que\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nEn fait, elle réalise l'expansion de pratiquement tout ce qui est encadré par des doubles accolades.",
+       "expand_templates_intro": "Cette page spéciale accepte un texte wiki source et permet de réaliser récursivement l’expansion de tous les modèles qu’il contient.\nElle réalise aussi l’expansion des fonctions d’analyse prises en charge telles que\n<code><nowiki>{{</nowiki>#language:...}}</code> et des variables telles que\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nEn fait, elle réalise l’expansion de pratiquement tout ce qui est encadré par des doubles accolades.",
        "expand_templates_title": "Titre de la page, si le code utilise {{FULLPAGENAME}}, etc. :",
        "expand_templates_input": "Texte wiki source :",
        "expand_templates_output": "Texte wiki obtenu après expansion",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (activé)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>désactivé</strong>)",
        "mediastatistics": "Statistiques sur les médias",
-       "mediastatistics-summary": "Statistiques sur les types de fichier téléchargés. Elles ne prennent en compte que la version la plus récente d’un fichier. Les versions anciennes ou supprimées des fichiers sont exclues.",
+       "mediastatistics-summary": "Statistiques sur les types de fichier téléversés. Elles ne prennent en compte que la version la plus récente d’un fichier. Les versions anciennes ou supprimées des fichiers sont exclues.",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 octet|$1 octets}} ($2 ; $3%)",
        "mediastatistics-bytespertype": "Taille totale de fichiers pour cette section : {{PLURAL:$1|$1 octet|$1 octets}} ($2 ; $3%).",
        "mediastatistics-allbytes": "Taille totale pour tous les fichiers : {{PLURAL:$1|$1 octet|$1 octets}} ($2).",
        "mw-widgets-titleinput-description-redirect": "redirection vers $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Ajouter une catégorie...",
        "mw-widgets-usersmultiselect-placeholder": "Ajouter plus ...",
+       "date-range-from": "À partir du :",
+       "date-range-to": "Jusqu’au :",
        "sessionmanager-tie": "Impossible de combiner des types multiples de demandes d’authentification : $1.",
        "sessionprovider-generic": "sessions $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sessions basées sur les témoins (''cookies'')",
        "unlinkaccounts": "Dissocier les comptes",
        "unlinkaccounts-success": "Le compte a été dissocié.",
        "authenticationdatachange-ignored": "Les modifications de données d’authentification n’ont pas été gérées. Peut-être aucun fournisseur n’a-t-il été configuré ?",
-       "userjsispublic": "Veuillez noter: les sous-pages JavaScript ne doivent pas contenir de données confidentielles parce qu'elles sont visibles des autres utilisateurs.",
+       "userjsispublic": "Veuillez noter : les sous-pages JavaScript ne doivent pas contenir de données confidentielles parce qu’elles sont visibles des autres utilisateurs.",
        "usercssispublic": "Veuillez noter: les sous-pages CSS ne doivent pas contenir de données confidentielles parce qu'elles sont visibles des autres utilisateurs.",
        "restrictionsfield-badip": "Adresse IP ou plage non valide : $1",
        "restrictionsfield-label": "Plages IP autorisées :",
        "rawhtml-notallowed": "Les balises &lt;html&gt; ne peuvent pas être utilisées en dehors des pages normales.",
        "gotointerwiki": "Quitter {{SITENAME}}",
        "gotointerwiki-invalid": "Le titre spécifié n’est pas valide.",
-       "gotointerwiki-external": "Vous allez quitter {{SITENAME}} pour visiter [[$2]], qui est un site web distinct.\n\n[$1 Cliquer ici pour continuer vers $1].",
+       "gotointerwiki-external": "Vous allez quitter {{SITENAME}} pour visiter [[$2]], qui est un site web distinct.\n\n<strong>[$1 Continuer vers $1]</strong>",
        "undelete-cantedit": "Vous ne pouvez pas annuler la suppression de cette page car vous n’êtes pas autorisé à la modifier.",
-       "undelete-cantcreate": "Vous ne pouvez pas annuler la suppression de cette page car il n’existe pas de page avec ce nom, et vous n’êtes pas autorisé à la créer."
+       "undelete-cantcreate": "Vous ne pouvez pas annuler la suppression de cette page car il n’existe pas de page avec ce nom, et vous n’êtes pas autorisé à la créer.",
+       "pagedata-title": "Données de page",
+       "pagedata-text": "Cette page fournit une interface de données aux pages. Veuillez fournir le titre de la page dans l’URL en utilisant la syntaxe de sous-page.\n* La négociation de contenu s’applique d’après l’entête Accept de votre client. Cela veut dire que les données de la page seront fournies dans le format préféré par votre client.",
+       "pagedata-not-acceptable": "Aucun format correspondant trouvé. Types MIME supportés : $1",
+       "pagedata-bad-title": "Titre non valide : $1."
 }
index c809c76..7680da0 100644 (file)
        "editingsection": "Changement de $1 (section)",
        "editingcomment": "Changement de $1 (remarque)",
        "editconflict": "Dispute de changement: $1",
-       "explainconflict": "Quèqu'une d'autre a changé cette page depuis vous avez commencé à la changer.\nLa boëtte de changements en haut contient le texte de la page comme c'est asteur.\nVos changements sont montrés dans la boëtte de changements en bas.\nIl foudra que vous mettez vos changements dans le texte qu'est là asteur.\n'''Juste''' le texte dans la boëtte de changements en haut va être sauvé quand vous pèsez \"{{int:savearticle}}\".",
+       "explainconflict": "Quèqu'une d'autre a changé cette page depuis vous avez commencé à la changer.\nLa boëtte de changements en haut contient le texte de la page comme c'est asteur.\nVos changements sont montrés dans la boëtte de changements en bas.\nIl foudra que vous mettez vos changements dans le texte qu'est là asteur.\n'''Juste''' le texte dans la boëtte de changements en haut va être sauvé quand vous pèsez \"$1\".",
        "yourtext": "Votre texte",
        "storedversion": "Version sauvée",
        "nonunicodebrowser": "'''ATTENTION: Votre navigateur supporte pas les caractères unicode.  Une solution de peu de durée a été trouvée pour que vous peuvez changer des articles sans problèmes.  Les caractères qui sont pas ASCII va apparaître dans la boëte de changements comme des codes hexadécimaux.'''",
index 23b5493..78a5689 100644 (file)
        "externaldberror": "Ou ben na fôta est arrevâye avouéc la bâsa de balyês d’ôtentificacion de defôr ou ben vos éte pas ôtorisâ{{GENDER:||ye}} a betar a jorn voutron comptio de defôr.",
        "login": "Branchement",
        "nav-login-createaccount": "Sè branchiér ou ben fâre un comptio",
-       "userlogin": "Sè branchiér ou ben fâre un comptio",
-       "userloginnocreate": "Sè branchiér",
        "logout": "Sè dèbranchiér",
        "userlogout": "Dèbranchement",
        "notloggedin": "Pas branchiê",
        "userlogin-noaccount": "Vos éd p’oncor un comptio ?",
        "userlogin-joinproject": "Rejuegnéd {{SITENAME}}",
-       "nologin": "Vos éd p’oncor un comptio ? $1.",
-       "nologinlink": "Féte un comptio",
        "createaccount": "Fâre un comptio",
-       "gotaccount": "Vos éd ja un comptio ? $1.",
-       "gotaccountlink": "Branchiéd-vos",
-       "userlogin-resetlink": "Vos éd oubliâ voutros dètalys de branchement ?",
        "userlogin-resetpassword-link": "Contresegno oubliâ ?",
        "userlogin-helplink2": "Éde u branchement",
        "userlogin-loggedin": "Vos éte ja branchiê{{GENDER:$1||e}} coment {{GENDER:$1|$1}}.\nEmpleyéd lo formulèro ce-desot por vos branchiér coment un ôtr’utilisator.",
        "createacct-another-email-ph": "Buchiéd l’adrèce èlèctronica",
        "createaccountmail": "Empleyér un contresegno temporèro pas de sûr et lo mandar a l’adrèce èlèctronica spècifiâye",
        "createacct-realname": "Veré nom (u chouèx)",
-       "createaccountreason": "Rêson :",
        "createacct-reason": "Rêson",
        "createacct-reason-ph": "Porquè vos féte un ôtro comptio",
        "createacct-submit": "Féte voutron comptio",
        "preview": "Apèrçu",
        "showpreview": "Montrar un apèrçu",
        "showdiff": "Montrar los changements",
-       "blankarticle": "<strong>Atencion :</strong> la pâge que vos éte aprés fâre est voueda.\nSe vos tornâd cllicar dessus « {{int:savearticle}} », la pâge serat fêta sen gins de contegnu.",
+       "blankarticle": "<strong>Atencion :</strong> la pâge que vos éte aprés fâre est voueda.\nSe vos tornâd cllicar dessus « $1 », la pâge serat fêta sen gins de contegnu.",
        "anoneditwarning": "<strong>Atencion :</strong> vos éte pas branchiê. Voutron adrèce IP serat visibla devant tot lo mondo se vos féte de changements. Se vos vos <strong>[$1 branchiéd]</strong> ou ben <strong>[$2 féte un comptio]</strong>, voutros changements seront atribuâs a voutron nom d’utilisator, entre-mié ôtros avantâjos.",
        "anonpreviewwarning": "<em>Vos éte pas branchiê{{GENDER:||e}}. En encartent, voutron adrèce IP serat encartâye dedens l’historico des changements de cela pâge.</em>",
-       "missingsummary": "<strong>Sovegnence :</strong> vos éd balyê gins de rèsumâ de changement.\nSe vos tornâd cllicar dessus « {{int:savearticle}} », voutron changement serat encartâ sen rèsumâ.",
-       "selfredirect": "<strong>Atencion :</strong> vos éte aprés redirigiér la pâge vers lyé-méma.\nVos pouede avêr spècifiâ na crouye ciba por la redirèccion ou ben pôt-étre vos changiéd na crouye pâge.\nSe vos tornâd cllicar dessus « {{int:savearticle}} », la redirèccion serat fêta tot-un.",
+       "missingsummary": "<strong>Sovegnence :</strong> vos éd balyê gins de rèsumâ de changement.\nSe vos tornâd cllicar dessus « $1 », voutron changement serat encartâ sen rèsumâ.",
+       "selfredirect": "<strong>Atencion :</strong> vos éte aprés redirigiér la pâge vers lyé-méma.\nVos pouede avêr spècifiâ na crouye ciba por la redirèccion ou ben pôt-étre vos changiéd na crouye pâge.\nSe vos tornâd cllicar dessus « $1 », la redirèccion serat fêta tot-un.",
        "missingcommenttext": "Se vos plét, buchiéd un comentèro ce-desot.",
-       "missingcommentheader": "<strong>Sovegnence :</strong> vos éd balyê gins de chousa por cél comentèro.\nSe vos tornâd cllicar dessus « {{int:savearticle}} », voutron changement serat encartâ sen chousa.",
+       "missingcommentheader": "<strong>Sovegnence :</strong> vos éd balyê gins de chousa por cél comentèro.\nSe vos tornâd cllicar dessus « $1 », voutron changement serat encartâ sen chousa.",
        "summary-preview": "Apèrçu du rèsumâ :",
        "subject-preview": "Apèrçu de la chousa :",
        "previewerrortext": "Na fôta est arrevâye pendent l’èprôva d’apèrçu de voutros changements.",
        "editingsection": "Changement de $1 (sèccion)",
        "editingcomment": "Changement de $1 (novèla sèccion)",
        "editconflict": "Disputa de changement : $1",
-       "explainconflict": "Un ôtro at changiê cela pâge aprés que vos vos seyéd betâ a la changiér.\nLa zona de changement de d’amont contint lo tèxto de la pâge coment ègziste orendrêt.\nVoutros changements aparèssont dedens la zona de changement de desot.\nVos voléd devêr fusionar voutros changements dedens lo tèxto ègzistent.\n<strong>Solament</strong> lo tèxto de la zona de changement de d’amont serat encartâ se vos cllicâd dessus « {{int:savearticle}} ».",
+       "explainconflict": "Un ôtro at changiê cela pâge aprés que vos vos seyéd betâ a la changiér.\nLa zona de changement de d’amont contint lo tèxto de la pâge coment ègziste orendrêt.\nVoutros changements aparèssont dedens la zona de changement de desot.\nVos voléd devêr fusionar voutros changements dedens lo tèxto ègzistent.\n<strong>Solament</strong> lo tèxto de la zona de changement de d’amont serat encartâ se vos cllicâd dessus « $1 ».",
        "yourtext": "Voutron tèxto",
        "storedversion": "Vèrsion encartâye",
        "nonunicodebrowser": "<strong>Atencion : voutron navegator recognêt pas l’Unicode.</strong>\nNa solucion de rechanjo est étâye trovâye por vos pèrmetre de changiér en tota suretât na pâge : los caractèros nan-ASCII aparêtront dedens la zona de changement coment codes hègzadècimâls.",
        "right-editsemiprotected": "Changiér les pâges protègiêes avouéc « {{int:protect-level-autoconfirmed}} »",
        "right-editcontentmodel": "Changiér lo modèlo de contegnu d’una pâge",
        "right-editinterface": "Changiér l’entredoux utilisator",
-       "right-editusercssjs": "Changiér los fichiérs CSS et JavaScript d’ôtros utilisators",
        "right-editusercss": "Changiér los fichiérs CSS d’ôtros utilisators",
        "right-edituserjs": "Changiér los fichiérs JavaScript d’ôtros utilisators",
        "right-editmyusercss": "Changiér los voutros fichiérs CSS utilisator",
        "rcshowhidecategorization": "$1 la catègorisacion de les pâges",
        "rcshowhidecategorization-show": "Montrar",
        "rcshowhidecategorization-hide": "Cachiér",
-       "rclinks": "Montrar los $1 dèrriérs changements fêts pendent los $2 jorns passâs<br />$3.",
+       "rclinks": "Montrar los $1 dèrriérs changements fêts pendent los $2 jorns passâs",
        "diff": "dif",
        "hist": "hist",
        "hide": "Cachiér",
        "undeleteviewlink": "vêre",
        "undeleteinvert": "Envèrsar lo chouèx",
        "undeletecomment": "Rêson :",
-       "undeletedrevisions": "$1 {{PLURAL:$1|vèrsion refêta|vèrsions refêtes}}",
-       "undeletedrevisions-files": "$1 vèrsion{{PLURAL:$1||s}} et $2 fichiér{{PLURAL:$2||s}} refêts",
-       "undeletedfiles": "$1 {{PLURAL:$1|fichiér refêt|fichiérs refêts}}",
        "cannotundelete": "Falyita de la rèstoracion :\n$1",
        "undeletedpage": "<strong>$1 est étâye refêta</strong>\n\nVêde lo [[Special:Log/delete|jornâl de les suprèssions]] por avêr na lista de les novèles suprèssions et rèstoracions.",
        "undelete-header": "Vêde lo [[Special:Log/delete|jornâl de les suprèssions]] por avêr les pâges suprimâyes dês pou.",
        "logentry-rights-autopromote": "$1 est étâ nomâ ôtomaticament de $4 a $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|at tèlèchargiê}} $3",
        "rightsnone": "(nion)",
-       "revdelete-summary": "rèsumâ du changement",
        "feedback-adding": "Aponsa de voutros avis a la pâge...",
        "feedback-bugcheck": "Formidâblo ! Controlâd simplament qu’o est pas yona de les [$1 cofieries ja cognues].",
        "feedback-bugnew": "J’é controlâ. Signalar una cofierie novèla",
index db9be6f..bf23318 100644 (file)
@@ -29,6 +29,7 @@
        "tog-watchdefault": "Salew feranert sidjen an datein leewen uun't uug behual",
        "tog-watchmoves": "Salew fersköwen sidjen an datein leewen uun't uug behual",
        "tog-watchdeletion": "Salew stregen sidjen an datein leewen uun't uug behual",
+       "tog-watchuploads": "Salew huuchschüürd datein leewen uun't uug behual",
        "tog-watchrollback": "Sidjen, diar ik turagsaat haa, uun't uug behual",
        "tog-minordefault": "Aanj feranrangen üs \"letjen\" kääntiakne",
        "tog-previewontop": "\"Iarst ans luke\" boowen faan't wönang tu bewerkin",
        "tagline": "Faan {{SITENAME}}",
        "help": "Halep",
        "search": "Schük",
+       "search-ignored-headings": " #<!-- Detdiar rä ei feranre --> <pre>\n# Auerskraften, diar bi't schüken ei beaachtet wurd.\n# Jodiar feranrangen wurd seekert, wan det sidj mä det auerskraft indeksiaret wurden as.\n# Dü könst det sidjenindeksiarang föörtji, wan dü en nul-edit maagest.\n# Syntax:\n#   * Ales, wat bääft en dobelkrüs („#“) stäänt, as en komentaar.\n#   * Arke rä, wat ei leesag as, as di akeroot tiitel, diar ei beaachtet woort.\nFutnuuten\nFerwisangen\nLuke uk diar\n #</pre> <!-- Detdiar rä ei feranre -->",
        "searchbutton": "Schük",
        "go": "Widjer",
        "searcharticle": "Sidj",
        "history": "Werjuunen",
        "history_short": "Ferluup",
+       "history_small": "Ferluup",
        "updatedmarker": "feranert sant man leetst beschük",
        "printableversion": "Ütjdrük maage",
        "permalink": "Permanent link",
        "talk": "Diskuschuun",
        "views": "Uunsichten",
        "toolbox": "Werktjüügen",
+       "tool-link-userrights": "{{GENDER:$1|Brükersköölen}} feranre",
+       "tool-link-userrights-readonly": "{{GENDER:$1|Brükersköölen}} beluke",
+       "tool-link-emailuser": "E-mail tu {{GENDER:$1|didiar brüker|detdiar brükerin}} schüür",
        "userpage": "Brükersidj uunwise",
        "projectpage": "Projektsidj wise",
        "imagepage": "Dateisidj uunwise",
        "virus-scanfailed": "scan ging skiaf (code $1)",
        "virus-unknownscanner": "Ünbekäänd wiirenscanner:",
        "logouttext": "'''Dü beest nü ufmeldet.'''\n\nEnkelt sidjen wise ferlicht noch uun, dat dü uunmeldet beest, so loong dü dan browser-cache ei leesag maaget heest.",
+       "cannotlogoutnow-title": "Ufmeldang hää ei loket",
+       "cannotlogoutnow-text": "Ufmeldin as ei mögelk, wan dü $1 brükst.",
        "welcomeuser": "Welkimen, $1!",
        "welcomecreation-msg": "Din brükerkonto as iinracht wurden.\nFerjid det ei, an aachte üüb din [[Special:Preferences|{{SITENAME}} iinstelangen]].",
        "yourname": "Brükernööm:",
        "createacct-yourpasswordagain-ph": "Du det paaswurd noch ans iin",
        "userlogin-remembermypassword": "Uunmeldet bliiw",
        "userlogin-signwithsecure": "Seeker ferbinjang brük",
+       "cannotlogin-title": "Uunmeldin as ei mögelk",
+       "cannotlogin-text": "Uunmeldin as ei mögelk.",
+       "cannotloginnow-title": "Uunmeldang hää ei loket",
+       "cannotloginnow-text": "Uunmeldin as ei mögelk, wan dü $1 brükst.",
+       "cannotcreateaccount-title": "Brükerkontos kön ei iinracht wurd",
+       "cannotcreateaccount-text": "Üüb detheer wiki kön nian brükerkontos iinracht wurd.",
        "yourdomainname": "Din domain:",
        "password-change-forbidden": "Üüb detheer wiki könst dü nian paaswurden feranre.",
        "externaldberror": "Deer läit en fäägel bai jü äkstärn autentifisiiring for, unti dü möist din äkstärn brükerkonto äi aktualisiire.",
        "login": "Uunmelde",
+       "login-security": "Preewe din identiteet",
        "nav-login-createaccount": "Melde di uun of skriiw di iin",
        "logout": "Ufmelde",
        "userlogout": "Ufmelde",
        "userlogin-resetpassword-link": "Paaswurd ferjiden?",
        "userlogin-helplink2": "Halep bi't uunmeldin",
        "userlogin-loggedin": "Du beest al üs {{GENDER:$1|$1}} uunmeldet.\nBrük det formulaar diar oner, am di mä en öödern nööm uuntumeldin.",
+       "userlogin-reauth": "Dü skel di nei uunmelde, am tu preewein, dat dü {{GENDER:$1|$1}} beest.",
        "userlogin-createanother": "En ööder brükerkonto iinracht",
        "createacct-emailrequired": "E-mail adres",
        "createacct-emailoptional": "E-mail adres (optional)",
        "createacct-email-ph": "Du din e-mail adres iin",
        "createacct-another-email-ph": "E-Mail-adres uundu",
        "createaccountmail": "E-mail tu detdiar adres ferschüür mä en tidjwiis tufelag paaswurd",
+       "createaccountmail-help": "Koon brükt wurd, am för hoker ööders en brükerkonto iinturachten, san det paaswurd tu käänen.",
        "createacct-realname": "Rocht nööm (optional)",
        "createacct-reason": "Grünj",
        "createacct-reason-ph": "Huaram dü en ööder brükerkonto iinrachtst",
+       "createacct-reason-help": "Bööd uun't neiuunmeldangs-logbuk.",
        "createacct-submit": "Din brükerkonto iinracht",
        "createacct-another-submit": "Brükerkonto iinracht",
+       "createacct-continue-submit": "Brükerkontoiinrachtang widjer feer",
+       "createacct-another-continue-submit": "Brükerkontoiinrachtang widjer feer",
        "createacct-benefit-heading": "{{SITENAME}} woort faan lidj üs di maaget.",
        "createacct-benefit-body1": "{{PLURAL:$1|feranrang|feranrangen}}",
        "createacct-benefit-body2": "{{PLURAL:$1|sidj|sidjen}}",
        "nocookiesnew": "Det brükerkonto as iinracht wurden, oober dü beest ei uunmeldet.\n{{SITENAME}} brükt cookies för detdiar aktjuun.\nWees so gud an aktiwiare jo uun dan browser, an do melde di mä dan nei brükernööm an det nei paaswurd uun.",
        "nocookieslogin": "{{SITENAME}} brükt cookies för't uunmeldin faan brükern.\nDü heest cookies deaktiwiaret.\nWees so gud an aktiwiare jo uun dan browser, an do ferschük det noch ans.",
        "nocookiesfornew": "Det brükerkonto as ei iinracht wurden, auer wi ei witj, huar a dooten faan kem.\nÜüb dan kompjuuter skel cookies aktiwiaret wees. Do rep detheer sidj noch ans nei ap.",
+       "createacct-loginerror": "Det brükerkonto as iinracht wurden, oober dü küdst noch ei uunmeldet wurd. Wees so gud an  [[Special:UserLogin|melde di nü uun]].",
        "noname": "Dü skel en rochten brükernööm uundu.",
        "loginsuccesstitle": "Uunmeldet",
        "loginsuccess": "'''Dü beest nü üs „$1“ bi {{SITENAME}} uunmeldet.'''",
        "createacct-another-realname-tip": "Stäänt tu wool. Wan dü dan rochten nööm uundääst, koon hi mä din feranrangen ferbünjen wurd.",
        "pt-login": "Uunmelde",
        "pt-login-button": "Uunmelde",
+       "pt-login-continue-button": "Widjer uunmelde",
        "pt-createaccount": "Brükerkonto iinracht",
        "pt-userlogout": "Ufmelde",
        "php-mail-error-unknown": "Ünbekäänd feeler mä det funktjuun mail() faan PHP.",
        "changepassword-throttled": "Dü heest tufölsis fersoocht, di uuntumeldin.\nWees so gud an teew $1, iar dü det noch ans ferschükst.",
        "botpasswords": "Bot-paaswurden",
        "botpasswords-summary": "Mä <em>bot-paaswurden</em> koon üüb en brükerkonto auer't API tugreben wurd. A brükerrochten bi uunmeldang mä en bot-paaswurd san kört.\n\nWan dü ei witjst, huaram dü det du wel, skulst dü det uk ei du. Näämen fraaget di, en paaswurd iinturachten, an det do widjertudun.",
+       "botpasswords-disabled": "Bot-paaswurden san deaktiwiaret wurden.",
        "botpasswords-no-central-id": "Am bot-paaswurden tu brüken, skel dü bi en sentralisiaret brükerkonto uunmeldet wees.",
        "botpasswords-existing": "Bot-paaswurden",
        "botpasswords-createnew": "En nei bot-paaswurd maage",
        "botpasswords-updated-body": "Det bot-paaswurd för di bot \"$1\" faan di brüker \"$2\" as aktualisiaret wurden.",
        "botpasswords-deleted-title": "Bot-paaswurd as stregen wurden.",
        "botpasswords-deleted-body": "Det bot-paaswurd för di bot \"$1\" faan di brüker \"$2\" as stregen wurden.",
+       "botpasswords-newpassword": "Det nei paaswurd tu uunmeldin mä <strong>$1</strong> as <strong>$2</strong>. <em>Mark di det gud.</em><br>För ääler bots, huar di uunmeldenööm an di leeder brükernööm josalwen san, könst dü uk <strong>$3</strong> üs brükernööm an <strong>$4</strong> üs paaswurd brük.",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider as ei diar.",
+       "botpasswords-restriction-failed": "Mä detdiar bot-paaswurd könst dü di ei uunmelde.",
+       "botpasswords-invalid-name": "Didiar brükernööm hää nään bot-paaswurd-dialer („$1“).",
+       "botpasswords-not-exist": "Di brüker „$1“ hää nian bot-paaswurd mä di nööm „$2“.",
        "resetpass_forbidden": "Det paaswurd koon ei feranert wurd.",
+       "resetpass_forbidden-reason": "A paaswurden koon ei feranert wurd: $1",
        "resetpass-no-info": "Dü skel di uunmelde, am üüb det sidj tutugripen.",
        "resetpass-submit-loggedin": "Paaswurd feranre",
        "resetpass-submit-cancel": "Ufbreeg",
        "passwordreset-emailtext-user": "Di brüker $1 üüb {{SITENAME}} hää am brükerinformatsjuunen för {{SITENAME}} uunfraaget ($4). {{PLURAL:$3|Detdiar brükerkonto as|Jodiar brükerkontos san}} mä detdiar E-Mail-Adres ferbünjen:\n\n$2\n\n{{PLURAL:$3|Detheer tidjwiis paaswurd lääpt|Joheer tidjwiis paaswurden luup}} efter {{PLURAL:$5|ään dai|$5 daar}} uf. Dü skulst di uunmelde an en nei paaswurd iinracht. Wan hoker ööders detheer uunfraag steld hää of dü din ual paaswurd käänst, säärst dü niks widjer onernem. Melde di ianfach mä din ual paaswurd uun.",
        "passwordreset-emailelement": "Brükernööm: \n$1\n\nTidjwiis paaswurd: \n$2",
        "passwordreset-emailsentemail": "Diar as en E-Mail tu di onerwais, wan dü en adres uunden heest.",
+       "passwordreset-emailsentusername": "Wan diar en E-Mail-adres mä didiar brükernööm ferbünjen as, woort en E-Mail mä en nei paaswurd ferschüürd.",
+       "passwordreset-nocaller": "Diar skal en reper uunden wurd.",
+       "passwordreset-nosuchcaller": "Son reper jaft at ei: $1",
+       "passwordreset-ignored": "Det turagsaaten faan't paaswurd küd ei ferwerket wurd. Ferlicht as diar nään provider iinracht wurden?",
+       "passwordreset-invalidemail": "Detdiar E-Mail-adres docht niks",
        "changeemail": "Feranre of strik det E-Mail-adres",
        "changeemail-header": "Fal det formulaar ütj, wan dü din E-Mail-adres feranre wel. Wan dü nian adres uundu wel, läät det fial man leesag.",
        "changeemail-no-info": "Dü möist önjmälded weese am ju sid diräkt tu tu gripen.",
        "preview": "Iarst ans luke",
        "showpreview": "Iarst ans luke",
        "showdiff": "Feranrangen wise",
-       "blankarticle": "<strong>Paase üüb:</strong> Dü maagest en leesag sidj.\nWan dü üüb \"{{int:savearticle}}\" trakst, woort det sidj iinracht saner wat uun.",
+       "blankarticle": "<strong>Paase üüb:</strong> Dü maagest en leesag sidj.\nWan dü üüb \"$1\" trakst, woort det sidj iinracht saner wat uun.",
        "anoneditwarning": "'''Paase üüb:''' Dü beest ei uunmeldet. Din aktuel IP-adres komt tu sen, wan dü feranrangen föörnamst. Wan dü di <strong>[$1 uunmeldest]</strong> of <strong>[$2 en konto iinrachtst]</strong>, wurd din feranrangen mä dan brükernööm ferbünjen, tuup mä ööder föördialen.",
        "anonpreviewwarning": "\"Dü beest ei uunmeldet. Bi't seekrin woort din IP-adres uun a ferluup faan werjuunen aptiakent.\"",
        "missingsummary": "'''Paase üüb:''' Dü heest det ei tuupfaadet.\nWan dü det sidj seekerst, woort det saner en kurtfaadet beskriiwang auernimen.",
-       "selfredirect": "<strong>Paase üüb:</strong> Dü feerst detheer sidj tu detsalew sidj widjer.\nDü heest was det ferkiard mual uunden, of dü bewerkest det ferkiard sidj.\nWan dü noch ans üüb „{{int:savearticle}}“ trakst, woort det widjerfeerang likes iinracht.",
+       "selfredirect": "<strong>Paase üüb:</strong> Dü feerst detheer sidj tu detsalew sidj widjer.\nDü heest was det ferkiard mual uunden, of dü bewerkest det ferkiard sidj.\nWan dü noch ans üüb „$1“ trakst, woort det widjerfeerang likes iinracht.",
        "missingcommenttext": "Faade det oner tuup.",
-       "missingcommentheader": "<strong>Paase üüb:</strong> Dü heest nian teemo uunden. Wan dü noch ans üüb „{{int:savearticle}}“ trakst, woort din feranrang saner auerskraft seekert.",
+       "missingcommentheader": "<strong>Paase üüb:</strong> Dü heest nian teemo uunden. Wan dü noch ans üüb „$1“ trakst, woort din feranrang saner auerskraft seekert.",
        "summary-preview": "Föörskau faan det tuupfaadang:",
        "subject-preview": "Föörskau faan det auerskraft:",
        "previewerrortext": "Diar as wat skiaf gingen, üs en föörskau faan din feranrangen wiset wurd skul.",
        "userpage-userdoesnotexist": "Det brükerkonto ''$1'' as ei diar.\nWel dü detdiar sidj würelk maage/bewerke?",
        "userpage-userdoesnotexist-view": "Son brükerkonto \"$1\" jaft at ei.",
        "blocked-notice-logextract": "Didiar brüker as speret. Det stäänt uun't sper-logbuk:",
-       "clearyourcache": "'''Beaachte:''' Maage di cache faan dan browser leesag, wan dü a feranrangen sä wel.\n* '''Firefox / Safari:''' Hual ''Shift'' bi't aktualisiarin, of trak ''Strg an F5'' of ''Strg an R'' (''⌘an R'' üüb en Mac)\n* '''Google Chrome:''' Trak ''Strg an Shift an R'' (''⌘an Shift an R'' üüb en Mac)\n* '''Internet Explorer:''' Hual ''Strg'' bi't aktualisiarin, of trak ''Strg an F5''\n* '''Opera:''' ''Extras - Internetspuren löschen - Individuelle Auswahl - Den kompletten Cache löschen''",
+       "clearyourcache": "<strong>Beaachte:</strong> Maage di cache faan dan browser leesag, wan dü a feranrangen sä wel.\n* <strong>Firefox / Safari:</strong> Hual <em>Shift</em> bi't aktualisiarin, of trak <em>Strg an F5</em> of <em>Strg an R</em> (''⌘an R'' üüb en Mac)\n* <strong>Google Chrome:</strong> Trak <em>Strg an Shift an R</em> (<em>⌘an Shift an R</em> üüb en Mac)\n* <strong>Internet Explorer:</strong> Hual <em>Strg</em> bi't aktualisiarin, of trak <em>Strg an F5</em>\n* <strong>Opera:</strong> <em>Extras - Internetspuren löschen - Individuelle Auswahl - Den kompletten Cache löschen</em>",
        "usercssyoucanpreview": "'''Tip:''' Brük di „{{int:showpreview}}“-knoop, am din nei CSS föör det seekrin tu testin.",
        "userjsyoucanpreview": "'''Tip:''' Brük di „{{int:showpreview}}“-knoop, am din nei JavaScript föör det seekrin tu testin.",
        "usercsspreview": "'''Seenk diaram, dat det bluas en föörskau faan din CSS as.'''\n'''Det as noch ei seekert wurden!'''",
        "continue-editing": "Gung tu't fial för't bewerkin",
        "previewconflict": "Detdiar föörskau wiset di boowenst dial faan dan tekst. So schocht hi ütj, wan dü ham nü seekerst.",
        "session_fail_preview": "Entskilage! Din werk küd ei ufseekert wurd. Diar as wat skiaf gingen.\n\nFerlicht beest dü ufmeldet wurden. <strong>Stel seeker, dat dü noch uunmeldet beest an ferschük det man noch ans</strong>.\nWan det ei wal, do mutst dü di man [[Special:UserLogout|ufmelde]] an do weder nei uunmelde. Dan browser skal cookies uunnem kön.",
-       "session_fail_preview_html": "'''Din werk küd ei seekert wurd. Diar as wat skiaf gingen.'''\n\n''Uun {{SITENAME}} as HTML aktiwiaret, an diaram as JavaScript deaktiwiaret wurden.''\n\nFerschük det man noch ans an trak do üüb ''Sidj seekre''.\nWan't do imer noch ei loket, [[Special:UserLogout|melde di uf]] an weder uun.",
+       "session_fail_preview_html": "Din werk küd ei seekert wurd. Diar as wat skiaf gingen.\n\n<em>Uun {{SITENAME}} as HTML aktiwiaret, an diaram as JavaScript deaktiwiaret wurden.</em>\n\nFerschük det man noch ans an trak do üüb <em>Sidj seekre</em>.\nWan't do imer noch ei loket, [[Special:UserLogout|melde di uf]] an weder uun, an luke efter, of dan browser cookies tuläät.",
        "token_suffix_mismatch": "'''Din werk küd ei ufseekert wurd, auer diar frääm tiaken uun san.'''\n\nDet komt flooksis föör, wan Dan anonym Proxy-siinst ei rocht werket.",
        "edit_form_incomplete": "'''Enkelt dialen faan det formulaar san ei rocht uunkimen.'''\nWees so gud an kontroliare ales noch ans.",
        "editing": "Bewerkin faan $1",
        "editingsection": "Bewerke $1 (kirew)",
        "editingcomment": "Bewerke $1 (nei kirew)",
        "editconflict": "Konflikt bi't bewerkin (BK): $1",
-       "explainconflict": "Hoker ööders hää detheer sidj feranert, üs dü jüst diarmä uun a gang wiarst.\nBoowen könst dü di aktuel stant sä. Oner stun din fernanrangen.\nBluas wat '''boowen''' stäänt, woort seekert. Diaram kopiare din feranrangen boowen iin.\nAn do trak „{{int:savearticle}}“.",
+       "explainconflict": "Hoker ööders hää detheer sidj feranert, üs dü jüst diarmä uun a gang wiarst.\nBoowen könst dü di aktuel stant sä. Oner stun din fernanrangen.\nBluas wat '''boowen''' stäänt, woort seekert. Diaram kopiare din feranrangen boowen iin.\nAn do trak „$1“.",
        "yourtext": "Dan tekst",
        "storedversion": "Seekert werjuun",
        "nonunicodebrowser": "'''Paase üüb:''' Dan browser komt ei mä unicode-tiakens turocht. Wees so gud an brük en öödern browser.",
        "readonlywarning": "<strong>Paase üüb: Dü könst uun uugenblak ei üüb det dootenbeenk tugrip. Din dooten kön ei seekert wurd.</strong> Wees so gud an seekre dan tekst iarst ans üüb dan reegner, an ferschük leederhen, ham tu auerdreegen.\n\nGrünj för det sper: $1",
        "protectedpagewarning": "'''Paase üüb: Detdiar sidj as speret wurden. Bluas administratooren kön det bewerke.'''\nUun't logbuk stäänt muar diartu:",
        "semiprotectedpagewarning": "'''Paase üüb: Detdiar sidj as dialwiis tu't bewerkin speret wurden. Bluas gudkäänd brükern kön det bewerke.'''\nUun't logbuk stäänt muar diartu:",
-       "cascadeprotectedwarning": "<strong>Paase üüb:</strong> Detdiar sidj koon bluas faan administratooren bewerket wurd. Hat as uun {{PLURAL:$1|detdiar ööder sidj|jodiar ööder sidjen}} iinbünjen, diar troch en kaskaadensper seekert {{PLURAL:$1|as|san}}:",
+       "cascadeprotectedwarning": "<strong>Paase üüb:</strong> Detdiar sidj koon bluas faan brükern mä [[Special:ListGroupRights|aparte rochten]] bewerket wurd. Hat as uun {{PLURAL:$1|detdiar ööder sidj|jodiar ööder sidjen}} iinbünjen, diar troch en kaskaadensper seekert {{PLURAL:$1|as|san}}:",
        "titleprotectedwarning": "'''Paase üüb: \"Detdiar sidj mä didiar nööm koon ei faan arken bewerket wurd. Bluas enkelt brükern mä [[Special:ListGroupRights|was brükerrochten]] kön detdiar sidj nei maage of bewerke.'''\nUun't logbuk stäänt muar diartu:",
        "templatesused": "{{PLURAL:$1|Detdiar föörlaag woort|Jodiar föörlaagen wurd}} üüb detdiar sidj brükt:",
        "templatesusedpreview": "{{PLURAL:$1|Detdiar föörlaag woort|Jodiar föörlaagen wurd}} uun detdiar sidjenföörskau brükt:",
        "search-file-match": "(fünjen tekst)",
        "search-suggest": "Mendst dü „$1“?",
        "search-rewritten": "Diar wurd resultaaten för $1 uunwiset. Schük uunsteed för $2.",
-       "search-interwiki-caption": "Saster-projekten",
+       "search-interwiki-caption": "Resultaaten faan saster-projekten",
        "search-interwiki-default": "Resultaaten faan $1:",
        "search-interwiki-more": "(muar)",
        "search-relatedarticle": "Ferbünjen",
        "right-editsemiprotected": "Sidjen bewerke, diar mä „{{int:protect-level-autoconfirmed}}“ seekert san.",
        "right-editcontentmodel": "Det model faan det sidj bewerke",
        "right-editinterface": "Brüker-skak bewerke",
-       "right-editusercssjs": "CSS- an JavaScript-datein faan ööder brükern bewerke",
        "right-editusercss": "CSS-datein faan ööder brükern bewerke",
        "right-edituserjs": "JavaScript-datein faan ööder brükern bewerke",
        "right-editmyusercss": "Aanj CSS-datein bewerke",
        "rcshowhidecategorization": "$1 kategorisiarang faan sidjen",
        "rcshowhidecategorization-show": "Wise",
        "rcshowhidecategorization-hide": "Fersteeg",
-       "rclinks": "Wise a leetst $1 feranrangen faan a leetst $2 daar.<br />$3",
+       "rclinks": "Wise a leetst $1 feranrangen faan a leetst $2 daar.",
        "diff": "ferskeel",
        "hist": "werjuunen",
        "hide": "Fersteeg",
        "undeleteviewlink": "Uunluke",
        "undeleteinvert": "Ütjwool amdrei",
        "undeletecomment": "Grünj:",
-       "undeletedrevisions": "{{PLURAL:$1|1 werjuun|$1 werjuunen}} weder iinsteld",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 werjuun|$1 werjuunen}} an {{PLURAL:$2|1 datei|$2 datein}} weder iinsteld",
-       "undeletedfiles": "{{PLURAL:$1|1 datei|$1 datein }} weder iinsteld",
        "cannotundelete": "Weder iinstelen hää ei loket:\n$1",
        "undeletedpage": "'''„$1“''' as weder iinsteld wurden.\nUun't [[Special:Log/delete|logbuk faan stregen sidjen]] stun a stregen an weder iinsteld sidjen.",
        "undelete-header": "Luke uun't [[Special:Log/delete|logbuk för stregen sidjen]] efter stregen sidjen faan a leetst tidj.",
        "sp-contributions-uploads": "Huuchschüürd bilen",
        "sp-contributions-logs": "Logbuken",
        "sp-contributions-talk": "Diskuschuun",
-       "sp-contributions-userrights": "Brükerrochten",
+       "sp-contributions-userrights": "{{GENDER:$1|Brüker}}rochten",
        "sp-contributions-blocked-notice": "Didiar brüker as speret. Det stäänt uun't sperlogbuk:",
        "sp-contributions-blocked-notice-anon": "Detdiar IP-adres as speret. Det stäänt uun't sperlogbuk:",
        "sp-contributions-search": "Schük efter brükerbidracher",
        "unblock": "Brüker ei muar spere",
        "blockip": "IP-adres/{{GENDER:$1|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. \nDet skul bluas föörnimen wurd, am jin wandaalen föörtugungen an uun auerianstemang mä a [[{{MediaWiki:Policy-url}}|brükerreegeln]].\nSkriiw en guden grünj för det sper ap.",
+       "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. \nDet skul bluas föörnimen wurd, am jin wandaalen föörtugungen an uun auerianstemang mä a [[{{MediaWiki:Policy-url}}|brükerreegeln]].\nSkriiw en guden grünj för det sper ap.\nDü könst IP-adres-beriker mä det [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]-syntax spere; di gratst mögelk berik as /$1 för IPv4 and /$2 för IPv6.",
        "ipaddressorusername": "IP-adres of brükernööm:",
        "ipbexpiry": "Sperdüür:",
        "ipbreason": "Grünj:",
        "lockedbyandtime": "(faan $1 di $2 am a klook $3)",
        "move-page": "Fersküüw $1",
        "move-page-legend": "Sidj fersküüw",
-       "movepagetext": "Mä detdiar formulaar könst dü en sidj mä aal sin werjuunen amnääm.\nDi ual tiitel woort üüb di nei widjerfeerd.\nDü könst widjerfeerangen, diar üüb di ual tiitel wise, automaatisk üüb di nei tiitel widjerfeer läät.\nWan dü det oober ei dääst, paase üüb, dat dü aal a [[Special:DoubleRedirects|dobelt]] of [[Special:BrokenRedirects|breegen]] widjerfeerangen noch ans efterlukest.\nBluas dü könst diarför surge, dat ferwisangen widjerhen rocht werke.\n\nDet sidj woort '''ei''' fersköwen, wan't al en sidj mä di nei nööm jaft. Det loket bluas do, wan di nei nööm salew en widjerfeerang as. Det ment, dat dü det amnäämen turagsaat könst, wan dü niks ferkiard maaget heest. Dü könst oober nian sidj, diar't al jaft, auerskriiw.\n\n'''Paase üüb!'''\nDet fersküüwen hää widjloftag fulgen för ööder sidjen. Dü skulst begreben haa, wat dü diar maage wel.",
-       "movepagetext-noredirectfixer": "Mä detdiar formulaar könst dü en sidj mä aal sin werjuunen amnääm.\nDi ual tiitel woort üüb di nei widjerfeerd.\nDü könst widjerfeerangen, diar üüb di ual tiitel wise, automaatisk üüb di nei tiitel widjer feer läät.\nWan dü det oober ei dääst, paase üüb, dat dü aal a [[Special:DoubleRedirects|dobelt]] of [[Special:BrokenRedirects|breegen]] widjerfeerangen noch ans efterlukest.\nBluas dü könst diarför surge, dat ferwisangen widjerhen rocht werke.\n\nDet sidj woort '''ei''' fersköwen, wan't al en sidj mä di nei nööm jaft. Det loket bluas do, wan di nei nööm salew en widjerfeerang as. Det ment, dat dü det amnäämen turagsaat könst, wan dü niks ferkiard maaget heest. Dü könst oober nian sidj, diar't al jaft, auerskriiw.\n\n'''Paase üüb!'''\nDet fersküüwen hää widjloftag fulgen för ööder sidjen. Dü skulst begreben haa, wat dü diar maage wel.",
-       "movepagetalktext": "Uk det diskuschuunsidj woort fersköwen, wan det diar as, <strong>oober ei, wan:</strong>\n*Diar al en diskuschuunsidj mä didiar nööm as, of\n*Dü detdiar mögelkhaid ütjslotst.\n\nUun didiar faal skel dü a diskuschuunsidjen faan hun tuupfeer.",
+       "movepagetext": "Mä detdiar formulaar könst dü en sidj mä aal sin werjuunen amnääm.\nDi ual tiitel woort üüb di nei widjerfeerd.\nDü könst widjerfeerangen, diar üüb di ual tiitel wise, automaatisk üüb di nei tiitel widjerfeer läät.\nWan dü det oober ei dääst, paase üüb, dat dü aal a [[Special:DoubleRedirects|dobelt]] of [[Special:BrokenRedirects|breegen]] widjerfeerangen noch ans efterlukest.\nBluas dü könst diarför surge, dat ferwisangen widjerhen rocht werke.\n\nDet sidj woort <strong>ei</strong> fersköwen, wan't al en sidj mä di nei nööm jaft. Det loket bluas do, wan di nei nööm salew en widjerfeerang as. Det ment, dat dü det amnäämen turagsaat könst, wan dü niks ferkiard maaget heest. Dü könst oober nian sidj, diar't al jaft, auerskriiw.\n\n<strong>Paase üüb!</strong>\nDet fersküüwen hää widjloftag fulgen för ööder sidjen. Dü skulst begreben haa, wat dü diar maage wel.",
+       "movepagetext-noredirectfixer": "Mä detdiar formulaar könst dü en sidj mä aal sin werjuunen amnääm.\nDi ual tiitel woort üüb di nei widjerfeerd.\nDü könst widjerfeerangen, diar üüb di ual tiitel wise, automaatisk üüb di nei tiitel widjer feer läät.\nWan dü det oober ei dääst, paase üüb, dat dü aal a [[Special:DoubleRedirects|dobelt]] of [[Special:BrokenRedirects|breegen]] widjerfeerangen noch ans efterlukest.\nBluas dü könst diarför surge, dat ferwisangen widjerhen rocht werke.\n\nDet sidj woort <strong>ei</strong> fersköwen, wan't al en sidj mä di nei nööm jaft. Det loket bluas do, wan di nei nööm salew en widjerfeerang as. Det ment, dat dü det amnäämen turagsaat könst, wan dü niks ferkiard maaget heest. Dü könst oober nian sidj, diar't al jaft, auerskriiw.\n\n<strong>Paase üüb!</strong>\nDet fersküüwen hää widjloftag fulgen för ööder sidjen. Dü skulst begreben haa, wat dü diar maage wel.",
+       "movepagetalktext": "Wan dü detdiar kasche aktiwiarest, woort det diskuschuunsidj woort fersköwen, oober ei, wan diar al en diskuschuunsidj mä didiar nööm as.\n\nUun didiar faal skel dü a diskuschuunsidjen faan hun tuupfeer.",
        "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.",
        "movecategorypage-warning": "<strong>Paase üüb:</strong> Dü wel jüst en kategoriisidj fersküüw. Seenk diaram, dat bluas det sidj fersköwen woort. A sidjen uun det kategorii wurd <em>ei</em> nei kategorisiaret.",
        "movenologintext": "Dü skel registriaret an [[Special:UserLogin|uunmeldet]] wees, am en sidj tu fersküüwen.",
        "import-nonewrevisions": "Diar wurd nian werjuunen importiaret, auer jo eder al diar wiar of auersprüngen wurden san.",
        "xml-error-string": "$1 uun rä $2, türn $3 (byte $4): $5",
        "import-upload": "XML-datein importiare",
-       "import-token-mismatch": "Session dooten san wech. Ferschük det noch ans weder.",
+       "import-token-mismatch": "Session dooten san wech.\n\nDü beest wel ufmeldet wurden. <strong>Stel seeker, dat dü noch uunmeldet beest, an ferschük det man noch ans</strong>.\nWan det ei loket, [[Special:UserLogout|melde di uf]] an do weder uun. Stel seeker, dat dan browser cookies tuläät.",
        "import-invalid-interwiki": "Faan detdiar Wiki koon ik ei importiare.",
        "import-error-edit": "Det sidj „$1“ as ei importiaret wurden, auer dü det ei bewerke mutst.",
        "import-error-create": "Det sidj „$1“ as ei importiaret wurden, auer dü det ei maage mutst.",
        "scarytranscludefailed-httpstatus": "[Ufrepen faan föörlaagen för $1 as skiaf gingen: HTTP  $2]",
        "scarytranscludetoolong": "[URL as tu lung]",
        "deletedwhileediting": "'''Paase üüb:''' Det sidj as stregen wurden, üs dü diar jüst bi werket heest!\nUun't [{{fullurl:{{#special:Log}}|type=delete&page={{FULLPAGENAMEE}}}} Strik-logbuk] fanjst dü di grünj för't striken. Wan dü det sidj seekerst, woort det nei uunlaanj.",
-       "confirmrecreate": "Di brüker [[User:$1|$1]] ([[User talk:$1|Diskuschuun]]) hää det sidj stregen, üs dü diar jüst bi werket heest. Di grünj wiar:\n:''$2''\nFerseekre, dat dü det sidj würelk nei maage wel.",
-       "confirmrecreate-noreason": "Di brüker [[User:$1|$1 ]] ([[User talk:$1|Diskuschuun]]) hää det sidj stregen, huar dü jüst bi werket heest. Ferseekre, dat dü det sidj würelk nei maage wel.",
+       "confirmrecreate": "{{Gender:$1|Di brüker|Det brüker}} [[User:$1|$1]] ([[User talk:$1|Diskuschuun]]) hää det sidj stregen, üs dü diar jüst bi werket heest. Di grünj wiar:\n:<em>$2</em>\nFerseekre, dat dü det sidj würelk nei maage wel.",
+       "confirmrecreate-noreason": "{{GENDER:$1|Di brüker|Det brüker}} [[User:$1|$1 ]] ([[User talk:$1|Diskuschuun]]) hää det sidj stregen, huar dü jüst bi werket heest. Ferseekre, dat dü det sidj würelk nei maage wel.",
        "recreate": "Nei maage",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Det sidj ütj a cache strik?",
        "version-libraries-license": "Lisens",
        "version-libraries-description": "Beskriiwang",
        "version-libraries-authors": "Skriiwern",
-       "redirect": "Widjerfeerang faan en brüker, en sidj, en sidjenwerjuun of en datei.",
-       "redirect-summary": "Detdiar spezial-sidj feert widjer üüb en brükersidj, sidj, sidjenwerjuun of datei.\nAn det woort so brükt:  [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] of [[{{#Special:Redirect}}/file/Example.jpg]].",
+       "redirect": "Widjerfeerang faan en datei, en brüker, en sidj, en sidjenwerjuun of en logbukiindrach.",
+       "redirect-summary": "Detdiar spezial-sidj feert widjer üüb en brükersidj, en sidj, en sidjenwerjuun, en datei of en logbukiindrach.\nAn det woort so brükt:  [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/file/Example.jpg]] of [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Widjer",
        "redirect-lookup": "Schük:",
        "redirect-value": "Käänang of dateinööm:",
        "tags-actions-header": "Aktjuunen",
        "tags-active-yes": "Ja",
        "tags-active-no": "Naan",
-       "tags-source-extension": "Faan en ütjwidjang fäästlaanj",
+       "tags-source-extension": "Faan't software fäästlaanj",
        "tags-source-manual": "Manuel faan brükern of bots iinracht",
        "tags-source-none": "Woort ei muar brükt",
        "tags-edit": "bewerke",
        "tags-edit-title": "Markiarangen bewerke",
        "tags-edit-manage-link": "Markiarangen ferwalte",
        "tags-edit-existing-tags": "Markiarangen:",
-       "tags-edit-existing-tags-none": "\"Nianen\"",
+       "tags-edit-existing-tags-none": "<em>Nianen</em>",
        "tags-edit-new-tags": "Nei markiarangen:",
        "tags-edit-add": "Jodiar markiarangen diartusaat:",
        "tags-edit-remove": "Jodiar markiarangen wechnem:",
        "htmlform-user-not-exists": "<strong>$1</strong> jaft at ei.",
        "htmlform-user-not-valid": "<strong>$1</strong> as nään tuläät brükernööm",
        "logentry-delete-delete": "$1 {{Gender:$2}} hää det sidj $3 stregen",
-       "logentry-delete-restore": "$1 {{GENDER:$2}} hää det sidj $3 weder iinsteld",
+       "logentry-delete-restore": "$1 {{GENDER:$2}} hää det sidj $3 weder iinsteld ($4)",
        "logentry-delete-event": "$1 {{GENDER:$2}} hää det uunsicht feranert faan {{PLURAL:$5|en logbuk iindrach|$5 logbuk iindracher}} üüb $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2}} hää det uunsicht feranert faan {{PLURAL:$5|ian werjuun|$5 werjuunen}} faan det sidj $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2}} hää det uunsicht feranert faan logbuk iindracher üüb $3",
        "logentry-newusers-create2": "Brükerkonto $3 as faan $1 {{GENDER:$2|iinracht}} wurden",
        "logentry-newusers-byemail": "Brükerkonto $3 as faan $1 {{GENDER:$2|iinracht}} wurden, an det paaswurd as per e-mail tuschüürd wurden.",
        "logentry-newusers-autocreate": "Brükerkonto $1 as automaatisk {{GENDER:$2|iinracht}} wurden",
-       "logentry-rights-rights": "$1 {{GENDER:$2|hää}} det brükerskööl för $3 faan $4 tu $5 feranert.",
+       "logentry-rights-rights": "$1 {{GENDER:$2|hää}} det brükerskööl för {{GENDER:$6|$3}} faan $4 tu $5 feranert.",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|hää}} det brükerskööl för $3 feranert.",
        "logentry-rights-autopromote": "$1 as automaatisk faan $4 tu $5 {{GENDER:$2|tuwiset}} wurden.",
        "logentry-upload-upload": "$1 {{GENDER:$2|hää}} $3 huuchschüürd",
        "api-error-emptypage": "Dü mutst nian leesag sidjen nei iinstel.",
        "api-error-publishfailed": "Intern feeler: Di server küd det tidjwiis datei ei widjer schüür.",
        "api-error-stashfailed": "Intern feeler: Di server küd nian tidjwiis datei seekre.",
-       "api-error-unknown-warning": "Ünbekäänd wäärnang: $1",
+       "api-error-unknown-warning": "Ünbekäänd wäärnang: \"$1\".",
        "api-error-unknownerror": "Ünbekäänd feeler: „$1“",
        "duration-seconds": "$1 {{PLURAL:$1|sekund|sekunden}}",
        "duration-minutes": "$1 {{PLURAL:$1|minüüt|minüüten}}",
        "expand_templates_generate_xml": "XML-parser-buum uunwise",
        "expand_templates_generate_rawhtml": "Rä HTML uunwise",
        "expand_templates_preview": "Föörskau",
-       "expand_templates_preview_fail_html": "<em>Auer {{SITENAME}} rä HTML aktiwiaret hää an session-dooten wech san, as det föörskau ütj seekerhaids-grünjer ferbürgen wurden.</em>\n\n<strong>Wees so gud an ferschük det noch ans.</strong>\nWan det do uk noch ei gongt, [[Special:UserLogout|melde di uf]] an weder uun.",
+       "expand_templates_preview_fail_html": "<em>Auer {{SITENAME}} rä HTML aktiwiaret hää an session-dooten wech san, as det föörskau ütj seekerhaids-grünjer ferbürgen wurden.</em>\n\n<strong>Wees so gud an ferschük det noch ans.</strong>\nWan det do uk noch ei gongt, [[Special:UserLogout|melde di uf]] an weder uun. An stel seeker, dat dan browser cookies tuläät.",
        "expand_templates_preview_fail_html_anon": "<em>Auer {{SITENAME}} rä HTML aktiwiaret hää an dü ein uunmeldet beest, as det föörskau ütj seekerhaids-grünjer ferbürgen wurden.</em>\n\n<strong>Wees so gud an [[Special:UserLogin|melde di uun]], an ferschük det noch ans.</strong>",
-       "pagelanguage": "Ütjwool faan sidjenspriaken",
+       "pagelanguage": "Sidjenspriak feranre",
        "pagelang-name": "Sidj",
        "pagelang-language": "Spriak",
        "pagelang-use-default": "Standard spriak brük",
        "action-pagelang": "det sidjenspriak tu feranrin",
        "log-name-pagelang": "Logbuk för spriak-feranrangen",
        "log-description-pagelang": "Det as en logbuk för sidjenspriak-feranrangen",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|hää}} det sidjenspriak för $3 faan $4 tu $5 feranert.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|hää}} det spriak för $3 faan $4 tu $5 feranert.",
        "default-skin-not-found": "Uuha! Uun <code dir=\"ltr\">$wgDefaultSkin</code> as fäästlaanj, dat <code>$1</code> dan standard-skak as. Man hi as ei diar!\n\nDin instalatjuun hää wel jodiar {{PLURAL:$4|skak|skaker}}. Luke uk uun't [https://www.mediawiki.org/wiki/Manual:Skin_configuration/de brüker-hoonbuk], am {{PLURAL:$4|di skak|a skaker}} tu aktiwiarin an standards iinturachten.\n\n$2\n\n; Wan dü MediaWiki jüst instaliaret heest:\n: Dü heest was faan Git of direkt faan a kwelcode instaliaret. Do as det nian woner. Dü könst skaker ütj det [https://www.mediawiki.org/wiki/Category:All_skins MediaWiki.org-Skakfertiaknis] instaliare. Diarför skel dü:\n:* Di [https://www.mediawiki.org/wiki/Download/de Tarball-Installer] deelloose, hi komt mä ünlik skaker an ütjwidjangen. Dü könst det  <code>skins/</code>-fertiaknis kopiare an iinsaat.\n:* Enkelt skak-tarballs faan [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org] deelloose.\n:* Ian faan a <code>mediawiki/skins/*</code>-fertiaknissen auer Git iin uun det <code dir=\"ltr\">skins/</code>-fertiaknis faan din MediaWiki-Instalatjuun auerskriiw.\n: Det skul din Git-fertiaknis ei uunstaken maage, wan dü en MediaWiki-ütjwerker beest.\n\n; Wan dü jüst MediaWiki aktualisiaret heest:\n: MediaWiki 1.24 an neier werjuunen aktiwiare instaliaret skaker ei muar faan salew (luke uk iin uun det [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery brüker-hoonbuk]). Dü könst {{PLURAL:$5|detdiar rä|jodiar räen}} uun det datei <code>LocalSettings.php</code> iinsaat, am {{PLURAL:$5|di|aal a}} instaliaret {{PLURAL:$5|skak|skaker}} tu aktiwiarin:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Wan dü jüst <code>LocalSettings.php</code> feranert heest:\n: Heest dü a skaker uk aaltumaal rocht skrewen?",
        "default-skin-not-found-no-skins": "Uuha! Uun <code>$wgDefaultSkin</code> as fäästlaanj, dat <code>$1</code> dan standard-skak as. Man hi as ei diar!\n\nDü heest goor nian skak instaliaret.\n\n; Wan dü MediaWiki jüst instaliaret of aktualisiaret heest:\n: Dü heest was faan Git of direkt faan a kwelcode instaliaret. Do as det nian woner. MediaWiki 1.24 an neier werjuunen haa nian skak uun't hood-fertiaknis. Dü könst skaker ütj det [https://www.mediawiki.org/wiki/Category:All_skins MediaWiki.org-Skakfertiaknis] instaliare. Diarför skel dü:\n:* Di [https://www.mediawiki.org/wiki/Download/de Tarball-Installer] deelloose, hi komt mä ünlik skaker an ütjwidjangen. Dü könst det  <code>skins/</code>-fertiaknis kopiare an iinsaat.\n:* Enkelt skak-tarballs faan [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org] deelloose.\n:* Ian faan a <code>mediawiki/skins/*</code>-fertiaknissen auer Git iin uun det <code dir=\"ltr\">skins/</code>-fertiaknis faan din MediaWiki-Instalatjuun auerskriiw.\n: Det skul din Git-fertiaknis ei uunstaken maage, wan dü en MediaWiki-ütjwerker beest. Luke uk uun't [https://www.mediawiki.org/wiki/Manual:Skin_configuration/de brüker-hoonbuk], am skaker tu aktiwiarin an standards iinturachten.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (aktiwiaret)",
index 159834d..8da887e 100644 (file)
        "yourdomainname": "Il to domini",
        "login": "Jentre",
        "nav-login-createaccount": "Regjistriti o jentre",
-       "userlogin": "Regjistriti o jentre",
-       "userloginnocreate": "Jentre",
        "logout": "Jes",
        "userlogout": "Jes",
        "notloggedin": "No tu sês jentrât",
        "userlogin-noaccount": "No âstu ancjemò une identitât?",
        "userlogin-joinproject": "Regjstriti du {{SITENAME}}",
-       "nologin": "No âstu ancjemò une identitât par jentrâ? '''$1'''.",
-       "nologinlink": "Creile cumò",
        "createaccount": "Cree une gnove identitât",
-       "gotaccount": "Âstu za une identitât? '''$1'''.",
-       "gotaccountlink": "Jentre",
-       "userlogin-resetlink": "Dismenteât i detais par jentrâ?",
        "userlogin-resetpassword-link": "Password dismenteade?",
        "userlogin-helplink2": "Judimi a jentrâ",
        "createacct-emailoptional": "Direzion email (opzionâl)",
        "createacct-email-ph": "Scrîl la tô direzion email",
        "createaccountmail": "par pueste eletroniche",
-       "createaccountreason": "Reson:",
        "createacct-submit": "Cree il to profîl utent",
        "createacct-benefit-heading": "{{SITENAME}} al è fat di int come te",
        "createacct-benefit-body1": "$1 {{PLURAL:$1|contribût|contribûts}}",
        "editingsection": "Cambiament di $1 (sezion)",
        "editingcomment": "Cambiament di $1 (gnove sezion)",
        "editconflict": "Conflit inte modifiche: $1",
-       "explainconflict": "Cualchidun altri al à cambiât cheste pagjine di cuant che tu âs començât a modificâle.\nLa aree di test disore e conten il test de pagjine che esist cumò, i tiei cambiaments a son mostrâts inte aree disot.\nTu varâs di inserî di gnûf i tiei cambiaments tal test esistint.\n'''Dome''' il test in alt al vignarà salvât cuant che tu frachis su \"{{int:savearticle}}\".",
+       "explainconflict": "Cualchidun altri al à cambiât cheste pagjine di cuant che tu âs començât a modificâle.\nLa aree di test disore e conten il test de pagjine che esist cumò, i tiei cambiaments a son mostrâts inte aree disot.\nTu varâs di inserî di gnûf i tiei cambiaments tal test esistint.\n'''Dome''' il test in alt al vignarà salvât cuant che tu frachis su \"$1\".",
        "editingold": "'''ATENZION: tu stâs cambiant une version vecje e no inzornade di cheste pagjine. Se tu la salvis, ducj i cambiaments fats di chê volte in ca a laran pierdûts.'''",
        "yourdiff": "Difarencis",
        "copyrightwarning": "Note: ducj i contribûts a {{SITENAME}} a si considerin come dâts fûr sot de licence $2 (cjale $1 pai detais). Se no tu vuelis che i tiei tescj a podedin jessi modificâts e tornâts a dâ fûr di ognidun cence limits, no stâ mandâju a {{SITENAME}}.<br />\nCun di plui, inviant il test tu declaris che tu âs scrit tu chest o tu lu âs copiât di une sorzint tal domini public o di une sorzint libare.\n'''NO ST MAND MATERIÂL CUVIERT DAL DIRIT DI AUTÔR CENCE AUTORIZAZION!'''",
        "saveprefs": "Salve lis preferencis",
        "restoreprefs": "Torne a lis impostazions predeterminadis",
        "prefs-editing": "Cambiament",
-       "rows": "Riis",
-       "columns": "Colonis:",
        "searchresultshead": "Ricercje",
        "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:",
        "rcshowhidemine": "$1 miei cambiaments",
        "rcshowhidemine-show": "Mostre",
        "rcshowhidemine-hide": "plate",
-       "rclinks": "Mostre i ultins $1 cambiaments tes ultimis $2 zornadis<br />$3",
+       "rclinks": "Mostre i ultins $1 cambiaments tes ultimis $2 zornadis",
        "diff": "difarencis",
        "hist": "stor",
        "hide": "plate",
        "logentry-upload-upload": "$1 {{GENDER:$2|al à tirât su}} $3",
        "searchsuggest-search": "Ricercje",
        "searchsuggest-containing": "che al à dentri...",
-       "api-error-unclassified": "Al è capitât un erôr no cognossût",
        "expandtemplates": "Espant i modei",
        "expand_templates_output": "Risultât",
        "expand_templates_ok": "Va ben",
index 43adfac..e9859a0 100644 (file)
@@ -16,7 +16,9 @@
                        "Macofe",
                        "Xð",
                        "Robin van der Vliet",
-                       "PiefPafPier"
+                       "PiefPafPier",
+                       "Catrope",
+                       "Sjoerddebruin"
                ]
        },
        "tog-underline": "Keppelings ûnderstreekje:",
        "anontalk": "Oerlisside foar dit IP-adres",
        "navigation": "Navigaasje",
        "and": "&#32;en",
-       "qbfind": "Sykje",
-       "qbbrowse": "Blêdzje",
-       "qbedit": "Bewurkje",
-       "qbpageoptions": "Side-opsjes",
-       "qbmyoptions": "Myn Opsjes",
        "faq": "FAQ (faak stelde fragen)",
-       "faqpage": "Project:Faak stelde fragen",
        "actions": "Aksjes",
        "namespaces": "Nammeromten",
        "variants": "Farianten",
        "edit-local": "Lokale beskriuwing bewurkje",
        "create": "Oanmeitsje",
        "create-local": "Lokale beskriuwing tafoegje",
-       "editthispage": "Side bewurkje",
-       "create-this-page": "Dizze side oanmeitsje",
        "delete": "Fuortsmite",
-       "deletethispage": "Side wiskje",
-       "undeletethispage": "Side werompleatse",
        "undelete_short": "$1 {{PLURAL:$1|ferzje|ferzjes}} weromsette",
        "protect": "Skoattel",
        "protect_change": "feroarje nivo fan skoatteljen",
-       "protectthispage": "Side skoattelje",
        "unprotect": "Jou frij",
-       "unprotectthispage": "Side frij jaan",
        "newpage": "Nije side",
-       "talkpage": "Sideoerlis",
        "talkpagelinktext": "Oerlis",
        "specialpage": "Bysûndere side",
        "personaltools": "Persoanlike ynstellingen",
-       "articlepage": "Side lêze",
        "talk": "Oerlis",
        "views": "Aspekten/aksjes",
        "toolbox": "Arkkiste",
-       "userpage": "Meidoggerside",
-       "projectpage": "Metaside",
        "imagepage": "Besjoch triemside",
        "mediawikipage": "Berjochtside sjen litte",
        "templatepage": "Berjochtside lêze",
        "privacypage": "Project:Privacybelied",
        "badaccess": "Gjin tastimming",
        "badaccess-group0": "Jo hawwe gjin rjochten om de frege hanneling út te fieren.",
-       "badaccess-groups": "De frege hanneling is foarbehâlden oan brûkers yn {{PLURAL:$2|'e groep|ien fan de groepen}}: $1.",
+       "badaccess-groups": "De frege hanneling is foarbehâlden oan meidoggers yn {{PLURAL:$2|'e groep|ien fan de groepen}}: $1.",
        "versionrequired": "Ferzje $1 fan MediaWiki is eask",
        "versionrequiredtext": "Ferzje $1 fan MediaWiki is eask om dizze side te brûken. Mear ynfo is beskikber op 'e side [[Special:Version|softwareferzje]].",
        "ok": "OK",
        "eauthentsent": "Foar befêstiging is jo in netpostberjocht tastjoerd op it adres dat jo ynsteld hawwe. Der wurdt gjin oare netpost stjoerd, oant jo it adres befêstigje sa't it yn it netpostberjocht stiet.",
        "throttled-mailpassword": "Yn {{PLURAL:$1|de lêste oere|de lêste $1 oeren}} is der al in wachtwurdwink ferstjoerd.\nOm misbrûk tefoaren te kommen wurdt der mar ien wachtwurdwink yn 'e {{PLURAL:$1|oere|$1 oeren}} ferstjoerd.",
        "mailerror": "Flater by it ferstjoeren fan e-mail: $1",
-       "acct_creation_throttle_hit": "Jo hawwe al {{PLURAL:$1|1 meidochnamme|$1 meidochnammen}} oanmakke. Jo kinne net mear oanmeitsje.",
+       "acct_creation_throttle_hit": "Besikers fan dizze wiky mei itselde ynternet-adres as jo hawwe de ôfrûne $2 al {{PLURAL:$1|1 meidochnamme|$1 meidochnammen}} oanmakke, wat it maksimaal tasteane oantal is foar dizze perioade.\nDêrom kinne jo fan jo ynternet-adres ôf op dit stuit gjin nije meidochnammen oanmeitsje.",
        "emailauthenticated": "Jo netpostadres waard befêstige op $2 om $3.",
        "emailnotauthenticated": "Jo netpostadres is <strong>noch net befêstige</strong>. Jo kinne oare brûkers gjin post stjoere, en foar de neikommende opsjes wurdt jo gjin post stjoerd.",
        "noemailprefs": "Jou in e-mailadres op om dizze funksjes te brûken.",
        "emailconfirmlink": "Befêstigje jo netpostadres.",
        "invalidemailaddress": "It e-mailadres is net akseptearre om't it in ûnjildige opmaak hat.\nJou beleaven in jildich e-mailadres op of lit it fjild leech.",
-       "accountcreated": "Brûker oanmakke",
-       "accountcreatedtext": "De brûkersaccount foar [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|oerlis]]) is oanmakke.",
+       "accountcreated": "Meidogger oanmakke",
+       "accountcreatedtext": "It meidoggersakkount [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|oerlis]]) is oanmakke.",
        "createaccount-title": "Brûkers registrearje foar {{SITENAME}}",
        "createaccount-text": "Immen hat in brûker op {{SITENAME}} ($4) oanmakke mei de namme \"$2\" en jo e-mailadres. It wachtwurd foar \"$2\" is \"$3\". Meld jo oan en feroarje jo wachtwurd.\n\nNegearje it berjocht as dizze brûker sûnder jo meiwitten oanmakke is.",
        "login-throttled": "Jo hawwe koartlyn te faak besocht oan te melden mei in ûnkrekt wachtwurd.\nJo moatte efkes wachtsje foar't jo it op'e nij besykje kinne.",
        "sig_tip": "Jo hântekening mei dei en oere",
        "hr_tip": "Horizontale line (mei ferdrach brûke)",
        "summary": "Gearfetting:",
-       "subject": "Ûnderwerp/kop:",
+       "subject": "Ûnderwerp:",
        "minoredit": "Dit is in tekstwiziging",
        "watchthis": "Folgje dizze side",
        "savearticle": "Side bewarje",
        "publishpage": "Side fêstlizze",
+       "publishchanges": "Feroarings publisearjen",
        "preview": "Oerlêze",
        "showpreview": "Earst oerlêze",
        "showdiff": "Wizigings",
-       "anoneditwarning": "<strong>Warskôging:</strong> Jo binne net oanmeld. By it fêstlizzen wurdt jo ynternetadres opnaam yn de sideskiednis.",
+       "anoneditwarning": "<strong>Warskôging:</strong> Jo binne net oanmeld. By it fêstlizzen wurdt jo ynternet-adres opnaam yn de sideskiednis. At jo <strong>[$1 oanmelde]</strong> of <strong>[$2 in akkount oanmeitsje]</strong> ferskine jo bewurkingen ûnder jo meidochnamme, njonken oare foardielen.",
        "missingsummary": "<strong>Tink derom:</strong> Jo hawwe gjin gearfetting jûn foar jo bewurking.\nAs jo nochris op ''Side opslaan'' klikke wurdt de bewurking sûnder gearfetting opslein.",
        "missingcommenttext": "Set jo opmerking beleaven hjir ûnder.",
        "missingcommentheader": "<strong>Tink derom:</strong> Jo hawwe gjin ûnderwerp/kop foar dizze opmerking opjûn.\ns jo op 'e nij op \"opslaan\" klikke, wurdt jo feroaring sûnder in ûnderwerp/kop opslein.",
        "summary-preview": "Gearfetting sa at dy brûkt wurdt:",
        "subject-preview": "Neisjen ûnderwerp/kop:",
        "blockedtitle": "Meidogger is útsletten troch",
-       "blockedtext": "<strong>Jo meidoggernamme of IP-adres is útsletten.</strong>\n\nDe útsluting is útfierd troch $1.\nDe opjûne reden is <em>$2</em>.\n\n* Begjin útsluting : $8\n* Ein útsluting : $6\n* Bedoeld út te sluten: $7\n\nJo kinne kontakt opnimme mei $1 of in oare [[{{MediaWiki:Grouppage-sysop}}|behearder]] om de útsluting te besprekken.\nJo kinne gjin gebrûk meitsje fan 'e funksje 'Skriuw meidogger', of jo moatte in jildich e-postadres opjûn hawwe yn jo [[Special:Preferences|foarkarren]] en it gebrûk fan dy funksje moat net útsletten wêze.\nJo tsjintwurdich e-mailadres is $3 en it útsletnûmer is #$5. Neam beide gegevens as jo earne op dizze útsluting reagearje.",
+       "blockedtext": "<strong>Jo meidochnamme of ynternet-adres is útsletten.</strong>\n\nDe útsluting is útfierd troch $1.\nAs reden is opjûn <em>$2</em>.\n\n* Begjin útsluting: $8\n* Ein útsluting: $6\n* Bedoeld út te sluten: $7\n\nAs jo wolle, kinne jo kontakt opnimme mei $1 of in oare [[{{MediaWiki:Grouppage-sysop}}|behearder]] en besprekke de útsluting.\nJo kinne de funksje 'Skriuw dizze meidogger' net brûke, of it moast wêze dat jo in jildich e-mailadres opjûn hawwe by jo [[Special:Preferences|ynstellings]] en net útsletten binne dat te brûken.\nJo hjoeddeisk ynternet-adres is $3, en it útslútnûmer is #$5.\nNim alle boppesteande gegevens op yn jo reäksjes.\n\n(Om't in ynternet-adres faak mar foar ien sesje tawiisd wurdt, kin it wêze dat it om in oar giet, dy't deselde tagongkedizer hat as jo hawwe. As it jo net oanbelanget, besykje dan earst of it noch sa is as jo in skoftke gjin ynternet-ferbining hân hawwe. As it in probleem bliuwt, skriuw dan in behearder. Sorry, foar it ûngemak.)",
        "autoblockedtext": "Jo IP-adres is automatysk útsletten om't brûkt is troch in oare brûker, dy't útsletten is troch $1.\nDe opjûne reden is:\n\n:''$2''\n\n* Begjin útsluting : $8\n* Ein útsluting : $6\n* Bedoeld út te sluten: $7\n\nJo kinne kontakt opnimme mei $1 of in oare [[{{MediaWiki:Grouppage-sysop}}|behearder]] om de útsluting te besprekken.\nJo kinne gjin gebrûk meitsje fan 'e funksje 'Skriuw meidogger', of jo moatte in jildich e-postadres opjûn hawwe yn jo [[Special:Preferences|foarkarren]] en it gebrûk fan dy funksje moat net útsletten wêze.\nJo tsjintwurdich e-postadres is $3 en it útsletnûmer is #$5. Neam beide gegevens as jo earne op dizze útsluting reagearje.",
        "blockednoreason": "gjin reden opjûn",
        "whitelistedittext": "Jo moatte $1 om siden te bewurkjen.",
        "loginreqlink": "Oanmelde",
        "loginreqpagetext": "Jo moatte jo $1 om oare siden besjen te kinnen.",
        "accmailtitle": "Wachtwurd ferstjoerd.",
-       "accmailtext": "It wachtwurd foar \"$1\" is ferstjoerd nei $2.",
+       "accmailtext": "Samar in wachtwurd foar [[User talk:$1|$1]] is ferstjoerd nei $2. It kin wizige wurde op 'e side \n<em>[[Special:ChangePassword|Wachtwurd feroarje]]</em> nei oanmelden.",
        "newarticle": "(Nij)",
        "newarticletext": "Jo hawwe in keppeling folge nei in side dêr't noch gjin tekst op stiet.\nOm sels tekst te meistjsen kinne jo dy gewoan yntype in dit bewurkingsfjild\n([$1 Mear ynformaasje oer bewurkjen].)\nOars kinne jo tebek mei de tebek-knop fan jo blêder.",
-       "anontalkpagetext": "----''Dit is de oerlisside fan in ûnbekende meidogger; in meidogger dy't him/har net oanmeld hat. Om't der gjin namme bekend is, wurdt it ynternet-adres brûkt om oan te jaan wa. Mar faak is it sa dat sa'n adres net altyd troch deselde persoan brûkt wurdt. As jo it idee hawwe dat jo as ûnbekende meidogger opmerkings foar in oar krije, dan kinne jo jo [[Special:CreateAccount|registrearje]], of jo [[Special:UserLogin|oanmelde]]. Fan in oanmelde meidogger is it ynternet-adres net sichtber, en as oanmelde meidogger krije jo allinnich opmerkings dy't foar josels bedoeld binne.''",
+       "anontalkpagetext": "----\n<em>Dit is de oerlisside fan in ûnbekende meidogger; in meidogger dy't him/har net oanmeld hat.</em>\nOm't der gjin namme bekend is, wurdt it ynternet-adres brûkt om oan te jaan om wa't it giet.\nMar faak is it sa dat sa'n adres net altyd troch deselde persoan brûkt wurdt.\nAs jo it idee hawwe dat jo as ûnbekende meidogger opmerkings foar in oar krije, dan kinne jo jo [[Special:CreateAccount|registrearje]], of jo [[Special:UserLogin|oanmelde]]. Fan in oanmelde meidogger is it ynternet-adres net sichtber, en as oanmelde meidogger krije jo allinnich opmerkings dy't foar josels bedoeld binne.",
        "noarticletext": "Der stjit noch gjin tekst op dizze side. Jo kinne\n[[Special:Search/{{PAGENAME}}|hjirboppe nei dy tekst sykje]], of [{{fullurl:{{FULLPAGENAME}}|action=edit}} de side skriuwe].",
        "userpage-userdoesnotexist": "Jo bewurkje in brûkersside fan in brûker dy't net bestiet (brûker \"<nowiki>$1</nowiki>\").\nKontrolearje oft jo dizze side wol oanmeitsje/bewurkje wolle.",
        "clearyourcache": "<strong>Opmerking:</strong> Nei it fêstlizzen kin it nedich wêze de oerslach fan dyn blêder te leegjen foardat de wizigings te sjen binne.\n* <strong>Firefox / Safari:</strong> Hâld <em>Shift</em> yntreaun wylst jo op <em>Dizze side fernije</em> klikke, of typ <em>Ctrl-F5</em> of <em>Ctrl-R</em> (<em>⌘-R</em> op in Mac)\n* <strong>Google Chrome:</strong> Typ <em>CTRL-Shift-R</em> (<em>⌘-Shift-R</em> op in Mac)\n* <strong>Internet Explorer:</strong> Hâld <em>Ctrl</em> yntreaun wylst jo <em>Vernieuwen'' klikke of typ <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Leegje jo cache yn <em>Extra → Voorkeuren</em>",
        "timezoneregion-europe": "Jeropa",
        "timezoneregion-indian": "Yndyske Oseaan",
        "timezoneregion-pacific": "Stille Oseaan",
-       "allowemail": "Lit my ek netpost fan oare meidoggers krije",
+       "allowemail": "Lit my ek e-mail fan oare meidoggers ûntfange",
        "prefs-searchoptions": "Sykje",
        "prefs-namespaces": "Nammeromten",
        "default": "standert",
        "action-edit": "dizze side te bewurkjen",
        "action-createpage": "siden oan te meitsjen",
        "action-createtalk": "oerlissiden oan te meitsjen",
-       "action-createaccount": "dizze brûker oan te meitsjen",
+       "action-createaccount": "dizze meidogger oan te meitsjen",
        "action-minoredit": "dizze bewurking as lyts te markearjen",
        "action-move": "dizze side in oare namme te jaan",
        "action-move-subpages": "dizze side en de derby hearrende subsiden in oare namme te jaan",
-       "action-move-rootuserpages": "brûkerssiden fan it heechste nivo in oare namme te jaan",
+       "action-move-rootuserpages": "meidoggersiden fan it heechste nivo in oare namme te jaan",
        "action-move-categorypages": "categorysiden ferpleatse",
        "action-movefile": "dizze triem in oare namme te jaan",
        "action-upload": "dizze triem te opladen",
        "action-undelete": "dizze side wer te plak sette",
        "action-suppressrevision": "dizze ferburgen ferzje besjen en wer te plak sette",
        "action-suppressionlog": "dit beskerme logboek besjen",
-       "action-block": "dizze brûker in bewurkingsblokkade oplizze",
+       "action-block": "dizze meidogger in bewurkingsblokkade oplizze",
        "action-protect": "it befeiligingsnivo fan dizze side oanpasse",
        "action-import": "dizze side fan in oare wiki ymportearje",
        "action-importupload": "dizze side ymportearje fan in triem-oplading",
        "action-autopatrol": "eigen bewurkings as kontrolearre markearje litte",
        "action-unwatchedpages": "de list mei siden dy't net op in folchlist steane besjen",
        "action-mergehistory": "de skiednis fan dizze side gearfoegje",
-       "action-userrights": "alle brûkersrjochten bewurkje",
-       "action-userrights-interwiki": "brûkersrjochten fan brûkers fan oare wiki's bewurkje",
+       "action-userrights": "alle meidoggerrjochten bewurkje",
+       "action-userrights-interwiki": "meidoggerrjochten fan meidoggers fan oare wiki's bewurkje",
        "action-siteadmin": "de database ôfslute of iepenstelle",
        "action-sendemail": "e-mail stjoere:",
        "action-editmywatchlist": "jo folchlist bewurkje",
        "rcshowhidemine": "$1 eigen bewurkings",
        "rcshowhidemine-show": "werjaan",
        "rcshowhidemine-hide": "ferbergje",
-       "rclinks": "Jou $1 nije feroarings yn de lêste $2 dagen<br /> $3",
+       "rclinks": "Jou $1 nije feroarings yn de lêste $2 dagen",
        "diff": "ferskil",
        "hist": "skiednis",
        "hide": "gjin",
        "allpagesfrom": "Begjin list by",
        "allpagesto": "Siden besjen oant:",
        "allarticles": "Alle siden",
-       "allinnamespace": "Alle siden, yn de ($1-nammeromte)",
+       "allinnamespace": "Alle siden (yn de $1-nammeromte)",
        "allpagessubmit": "Los!",
        "allpagesprefix": "Siden sjen litte dy't begjinne mei:",
        "allpagesbadtitle": "De opjûne sidenamme is ûnjildich of hat in yntertaal- of ynterwikifoarheaksel.\nMûglik befettet de namme karakters dy't net brûkt wurde meie yn sidenammen.",
        "nowatchlist": "Jo hawwe gjin siden op jo folchlist.",
        "watchnologin": "Net oanmeld yn",
        "addwatch": "Oan folchlist tafoegje",
-       "addedwatchtext": "De side \"'''[[:$1]]'''\" is tafoege oan jo [[Special:Watchlist|folchlist]]. Bewurkings fan dizze side en oerlisside wurde yn de takomst op jo folchlist oanjûn. Hja wurde foar jo ek '''fet''' printe op [[Special:RecentChanges|Koartlyn feroare]].\n\nAt jo letter in side net mear folgje wolle, dan brûke jo op dy side de keppeling \"Ferjit dizze side.\" Jo [[Special:Watchlist|folchlist]] hat ek in keppeling \"Jo folchlist bewurkje,\" foar at jo mear as ien side \"ferjitte\" wolle.",
+       "addedwatchtext": "\"[[:$1]]\" en de bybehearrende oerlisside binne tafoege oan jo [[Special:Watchlist|folchlist]].",
        "removedwatchtext": "De side \"[[:$1]]\" stiet net mear op jo folchlist.",
        "watch": "Folgje",
        "watchthispage": "Folgje dizze side",
        "watching": "Dwaande mei op'e folchlist te setten ...",
        "unwatching": "Dwaande mei fan'e folchlist ôf te heljen ...",
        "enotif_impersonal_salutation": "meidogger fan {{SITENAME}}",
-       "enotif_body": "Bêste $WATCHINGUSERNAME,\n\nDe {{SITENAME}}side '$PAGETITLE' is op $PAGEEDITDATE $CHANGEDORCREATED troch meidogger $PAGEEDITOR;\nsjoch $PAGETITLE_URL foar de aktuele ferzje.\n\n$NEWPAGE\n\nGearfetting: $PAGESUMMARY $PAGEMINOREDIT\n\nFoar oerlis mei meidogger $PAGEEDITOR:\n- netpost: $PAGEEDITOR_EMAIL\n- wiki: $PAGEEDITOR_WIKI\n\nFierdere meldings wurde jo net tastjoerd, oant jo de side lêzen hawwe. Op jo folchlist kinne jo op 'e nij meldings foar al jo folge siden freegje.\n\n                 Jo freonlike {{SITENAME}}-meldingssysteem.\n\n--\nGean nei {{canonicalurl:{{#special:EditWatchlist}}}}\nom jo folchlistynstellings te feroarjen.\n\nReaksjes en fierdere help:\n$HELPPAGE",
+       "enotif_body": "Bêste $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nGearfetting: $PAGESUMMARY $PAGEMINOREDIT\n\nFoar oerlis mei meidogger:\nnetpost: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nFierdere meldings wurde jo net tastjoerd, oant jo de side lêzen hawwe. Op jo folchlist kinne jo op 'e nij meldings foar al jo folge siden freegje.\n\nJo freonlike {{SITENAME}}-meldingssysteem.\n\n--\nGean nei {{canonicalurl:{{#special:Preferences}}}}\nom jo netpostynstellings te feroarjen.\n\nGean nei {{canonicalurl:{{#special:EditWatchlist}}}}\nom jo folchlistynstellings te feroarjen.\n\nOm de side fan jo folchlist te ferwiderjen, gean nei\n$UNWATCHURL\n\nReaksjes en fierdere help:\n$HELPPAGE",
        "created": "oanmakke",
        "changed": "feroare",
        "deletepage": "Wisk side",
        "rollbacklink": "feroaring werom sette",
        "rollbackfailed": "Feroaring werom sette net slagge",
        "cantrollback": "Dizze feroaring kin net werom setten wurde, om't der mar ien skriuwer is.",
-       "alreadyrolled": "Kin de feroaring fan [[:$1]]\ntroch [[User:$2|$2]] ([[User talk:$2|Oerlis]]) net werom sette;\nin oar hat de feroaring werom set, of oars wat oan de side feroare.\n\nDe lêste feroaring wie fan [[User:$3|$3]] ([[User talk:$3|Oerlis]]).",
+       "alreadyrolled": "Kin de feroaring fan [[:$1]] troch [[User:$2|$2]] ([[User talk:$2|oerlis]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) net werom sette;\nin oar hat de feroaring werom set, of oars wat oan de side feroare.\n\nDe lêste feroaring wie fan [[User:$3|$3]] ([[User talk:$3|oerlis]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "De gearfetting wie: <em>$1</em>.",
        "revertpage": "Bewurkings fan [[Special:Contributions/$2|$2]] ([[User talk:$2|Oerlis]]) werom set ta de ferzje fan [[User:$1|$1]]",
        "rollback-success": "Feroarings werom set fan $1; werom set nei de lêste ferzje fan $2.",
        "undelete-show-file-submit": "Ja",
        "namespace": "Nammeromte:",
        "invert": "Seleksje útsein",
-       "blanknamespace": "(Haadnammerûmte)",
+       "blanknamespace": "(Ensyklopedy)",
        "contributions": "{{GENDER:$1|Meidogger}}-bydragen",
        "contributions-title": "Bydragen fan $1",
        "mycontris": "Bydragen",
        "whatlinkshere-hidelinks": "$1 keppelings",
        "whatlinkshere-filters": "Filters",
        "blockip": "Slút {{GENDER:$1|meidogger}} út",
-       "blockip-legend": "Slút brûker út",
-       "blockiptext": "Brûk dizze fjilden om in meidogger fan skriuwtagong út te sluten.\nDat soe allinnich fanwege fandalisme dien wurde moatte, sa't de\n[[{{MediaWiki:Policy-url}}|útslut-rie]] it oanjout.\nMeld de krekte reden! Neam bygelyks de siden dy't oantaaste waarden.",
+       "blockip-legend": "Slút meidogger út",
+       "blockiptext": "Brûk dizze fjilden om in beskaat IP-adres of meidochnamme fan skriuwtagong út te sluten.\nDat soe allinnich dien wurde moatte fanwegen fandalisme of oar ûnakseptabel hâlden en dragen, sa't de\n[[{{MediaWiki:Policy-url}}|útslút-rie]] it oanjout.\nMeld de krekte reden! Neam bygelyks de siden dy't oantaaste waarden.\nJo kinne IP-adresrigen útslute mei de syntaksis fan [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]; de grutst tastiene rige is /$1 foar IPv4 en /$2 foar IPv6.",
        "ipaddressorusername": "IP Adres of meidoggernamme:",
        "ipbexpiry": "Ferrint nei:",
        "ipbreason": "Reden:",
        "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",
-       "badipaddress": "Gjin jildige IP-adres",
+       "badipaddress": "Gjin jildich IP-adres",
        "blockipsuccesssub": "Utsluting slagge",
-       "blockipsuccesstext": "Meidogger [[Special:Contributions/$1|$1]] is útsletten.<br />\n(List fan [[Special:BlockList|útslette meidoggers]].)",
+       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] is útsletten.<br />\nDe [[Special:BlockList|List fan útsletten ynternet-adressen en meidochnammen]] neisjen.",
        "ipb-unblock-addr": "Lit $1 yn",
        "ipb-unblock": "Lit in meidogger of IP-adres yn",
        "ipb-blocklist": "Besteande útslutings besjen",
        "autoblocker": "Jo wiene útsletten om't jo ynternet-adres oerienkomt mei dat fan \"[[User:$1|$1]]\". Foar it útsluten fan dy meidogger waard dizze reden jûn: \"$2\".",
        "blocklogpage": "Utslútloch",
        "blocklogentry": "\"[[$1]]\" útsletten foar $2 $3",
-       "blocklogtext": "Dit is in loch fan it útsluten en talitten fan meidoggers. Fansels útsletten net-adressen binne net opnaam. Sjoch de [[Special:BlockList|útsletlist]] foar de no jildende utslettings.",
+       "blocklogtext": "Dit is in loch fan it útsluten en talitten fan meidoggers. Fansels útsletten IP-adressen binne net opnaam. Sjoch de [[Special:BlockList|útslútlist]] foar de no jildende útslutings.",
        "unblocklogentry": "hat de blokkade fan $1 fuorthelle",
        "ipb_expiry_invalid": "Tiid fan ferrinnen is net goed.",
        "ipb_already_blocked": "\"$1\" is al útsluten",
        "allmessagesname": "Namme",
        "allmessagesdefault": "Standerttekst",
        "allmessagescurrent": "Tekst yn de nijste ferzje",
-       "allmessagestext": "Dit is in list fan alle systeemberjochten beskikber yn de MediaWiki-nammeromte.\nSjoch: [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki Localisation], [https://translatewiki.net translatewiki.net].",
+       "allmessagestext": "Dit is in list fan alle systeemberjochten beskikber yn de MediaWiki-nammeromte.\nSjoch [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki Localisation] en [https://translatewiki.net translatewiki.net] at jo bydrage wolle oan de basisoersettings fan MediaWiki.",
        "allmessages-filter-legend": "Filter",
        "allmessages-filter-all": "Alle",
        "allmessages-language": "Taal:",
        "feedback-subject": "Ûnderwerp:",
        "feedback-submit": "Ferstjoere",
        "feedback-useragent": "Useragent:",
-       "searchsuggest-search": "Sykje",
+       "searchsuggest-search": "{{SITENAME}} trochsykje",
        "api-error-unknownerror": "Unbekende flater: \"$1\".",
        "duration-seconds": "$1 {{PLURAL:$1|sekonde|sekonden}}",
        "duration-minutes": "$1 {{PLURAL:$1|minút|minuten}}",
index 8509a8a..abf9a8a 100644 (file)
        "externaldberror": "Bhí earráid bhunachair sonraí ann maidir le fíordheimhniú seachtrach, nóThere was either an external authentication database error or you are not allowed to update your external account.",
        "login": "Logáil isteach",
        "nav-login-createaccount": "Logáil isteach",
-       "userlogin": "Logáil isteach / cruthaigh cuntas",
-       "userloginnocreate": "Logáil isteach",
        "logout": "Logáil amach",
        "userlogout": "Logáil amach",
        "notloggedin": "Níl tú logáilte isteach",
        "userlogin-noaccount": "Níl cuntas agat?",
        "userlogin-joinproject": "Cláraigh le {{SITENAME}}",
-       "nologin": "Nach bhfuil logáil isteach agat? '''$1'''.",
-       "nologinlink": "Cruthaigh cuntas",
        "createaccount": "Cruthaigh cuntas nua",
-       "gotaccount": "An bhfuil cuntas agat cheana féin? '''$1'''.",
-       "gotaccountlink": "Logáil isteach",
-       "userlogin-resetlink": "Sonraí logála isteach dearmadta agat?",
        "userlogin-resetpassword-link": "Pasfhocal dearmadta?",
        "userlogin-helplink2": "Cabhair le logáil isteach",
        "createacct-emailrequired": "Seoladh ríomhphoist",
        "createacct-email-ph": "Iontráil do sheoladh ríomhphoist",
        "createacct-another-email-ph": "Iontráil seoladh ríomhphoist",
        "createaccountmail": "le ríomhphost",
-       "createaccountreason": "Fáth:",
        "createacct-reason": "Cúis",
        "createacct-submit": "Cruthaigh do chuntas",
        "createacct-another-submit": "Cruthaigh cuntas eile",
        "editingsection": "Ag athrú $1 (mir)",
        "editingcomment": "Ag athrú $1 (mír nua)",
        "editconflict": "Coimhlint athraithe: $1",
-       "explainconflict": "D'athraigh duine eile an leathanach seo ó thosaigh tú ar a athrú.\nTá téacs an leathanaigh mar atá sé faoi láthair le feiceáil thuas.\nTá do chuid athruithe le feiceáil thíos.\nCaithfidh tú do chuid athruithe a chumasc leis an leagan reatha.\nNí shábhálfar '''ach''' an téacs thuas nuair a bhrúnn tú ar an gcnaipe \"{{int:savearticle}}\".",
+       "explainconflict": "D'athraigh duine eile an leathanach seo ó thosaigh tú ar a athrú.\nTá téacs an leathanaigh mar atá sé faoi láthair le feiceáil thuas.\nTá do chuid athruithe le feiceáil thíos.\nCaithfidh tú do chuid athruithe a chumasc leis an leagan reatha.\nNí shábhálfar '''ach''' an téacs thuas nuair a bhrúnn tú ar an gcnaipe \"$1\".",
        "yourtext": "Do chuid téacs",
        "storedversion": "Leagan sábháilte",
        "editingold": "'''Rabhadh: Tá tú ag athrú leagan an leathanaigh seo atá as dáta.\nMá shábhálfar é, caillfear gach athrú a rinneadh i ndiaidh an leagain seo.'''",
        "saveprefs": "Sábháil",
        "restoreprefs": "Cuir ar ais gach sainrogha réamhshocraithe",
        "prefs-editing": "Eagarthóireacht",
-       "rows": "Sraitheanna",
-       "columns": "Colúin",
        "searchresultshead": "Cuardaigh",
        "stub-threshold-disabled": "Díchumasaithe",
        "recentchangesdays": "Méid laethanta le taispeáint sna hathruithe is déanaí:",
        "saveusergroups": "Sabháil cnuasach úsáideora",
        "userrights-groupsmember": "Ball de:",
        "userrights-reason": "Fáth:",
-       "userrights-notallowed": "Níl cead ag do chuntas ceartanna úsáideora a athrú.",
        "group": "Grúpa:",
        "group-user": "Úsáideoirí",
        "group-bot": "Róbónna",
        "rcshowhidemine": "$1 mo chuid athruithe",
        "rcshowhidemine-show": "Taispeáin",
        "rcshowhidemine-hide": "Folaigh",
-       "rclinks": "Taispeáin an $1 athrú is déanaí sa $2 lá seo caite<br />$3",
+       "rclinks": "Taispeáin an $1 athrú is déanaí sa $2 lá seo caite",
        "diff": "difr",
        "hist": "stair",
        "hide": "Folaigh",
        "undeleteviewlink": "Amharc",
        "undeleteinvert": "Cuir an roghnú bun os cionn",
        "undeletecomment": "Tuairisc:",
-       "undeletedrevisions": "{{PLURAL:$1|Leagan amháin|$1 leagain}} díscriosta",
-       "undeletedrevisions-files": "{{PLURAL:$1|Leagan amháin|$1 leagain}} agus {{PLURAL:$2|comhad amháin|$2 comhaid}} a chur ar ais",
-       "undeletedfiles": "{{PLURAL:$1|Comhad amháin|$1 comhaid}} díscriosta",
        "undelete-search-box": "Cuardaigh leathanaigh scriosta",
        "undelete-search-submit": "Cuardaigh",
        "namespace": "Ainmspás:",
index 42b617f..004936f 100644 (file)
@@ -6,7 +6,8 @@
                        "Emperyan",
                        "Reedy",
                        "Meisam",
-                       "아라"
+                       "아라",
+                       "Stephanecbisson"
                ]
        },
        "tog-underline": "Baalantıların altını çiz",
        "yourdomainname": "Domen adınız",
        "login": "Gir",
        "nav-login-createaccount": "Gir / esap yarat",
-       "userlogin": "Gir / esap yarat",
        "logout": "Sessiyanı kapat",
        "userlogout": "Oturmaa kapat",
        "notloggedin": "Sessiya diil açık",
-       "nologin": "Henez aza olmadınız? '''$1'''.",
-       "nologinlink": "Esap yarat",
        "createaccount": "Eni esap aç",
-       "gotaccount": "Taa ilerdä esap açtınızmı? '''$1'''.",
-       "gotaccountlink": "Herliim ilerdän esap açtıysanız girin bu baalantıdan.",
        "createaccountmail": "e-maillan",
        "badretype": "Parollar angılarını girdiniz uymêêr.",
        "userexists": "Kullanıcı adı ani girdiniz kullanılêr. Yalvarêrız farklı bir kullanıcı adı seçin.",
        "rcshowhideanons": "anonim kullanıcıları $1",
        "rcshowhidepatr": "bakılmış diişmäkleri $1",
        "rcshowhidemine": "diişmäklerimi $1",
-       "rclinks": "Göster bitki $1 diişmäklii ani yapıldı $2 gündä;<br /> $3",
+       "rclinks": "Göster bitki $1 diişmäklii ani yapıldı $2 gündä;",
        "diff": "fark",
        "hist": "geçmiş",
        "hide": "sakla",
index e3a2daf..e19348d 100644 (file)
        "externaldberror": "外部验证数据库出错,或倷更新伓正倷𠮶外部帐户。",
        "login": "登入",
        "nav-login-createaccount": "登入/新开只帐户",
-       "userlogin": "登入/新开只帐户",
-       "userloginnocreate": "登入",
        "logout": "退出",
        "userlogout": "退出",
        "notloggedin": "冇登入",
-       "nologin": "倷冇得帐户啊? '''$1'''。",
-       "nologinlink": "新开只帐户",
        "createaccount": "新开只帐户",
-       "gotaccount": "有喽帐户? '''$1'''.",
-       "gotaccountlink": "登入",
-       "userlogin-resetlink": "𫍧记汝𠮶登录信息?",
        "createaccountmail": "通过email",
-       "createaccountreason": "原因:",
        "badretype": "倷输𠮶密码伓合。",
        "userexists": "汝输𠮶用户名系人家𠮶,拣过只啰!",
        "loginerror": "登入错误",
        "anoneditwarning": "'''警告:'''倷哈冇登入,个页𠮶编写历史会记到倷𠮶IP。",
        "missingsummary": "'''提示:''' 倷冇提供编写摘要。要系倷再按系保存𠮶话,倷保存𠮶编辑就会冇编辑摘要。",
        "missingcommenttext": "请到底下评论。",
-       "missingcommentheader": "''提示:''' 汝𠮶评论冇提供标题。若系汝捺过到{{int:savearticle}}𠮶话,汝保存𠮶编辑就会冇标题。",
+       "missingcommentheader": "''提示:''' 汝𠮶评论冇提供标题。若系汝捺过到$1𠮶话,汝保存𠮶编辑就会冇标题。",
        "summary-preview": "摘要预览:",
        "subject-preview": "主题/头条预览:",
        "blockedtitle": "用户封到嘞",
        "prefs-misc": "杂项",
        "saveprefs": "存到参数",
        "prefs-editing": "编写",
-       "rows": "横:",
-       "columns": "竖:",
        "searchresultshead": "设置寻到𠮶结果",
        "stub-threshold": "<a href=\"#\" class=\"stub\">细文链接</a>格式门槛:",
        "recentchangesdays": "最近更改中𠮶显示日数:",
        "rcshowhideanons": "$1匿名用户𠮶编辑",
        "rcshowhidepatr": "$1检查过𠮶编辑",
        "rcshowhidemine": "$1偶𠮶编辑",
-       "rclinks": "显示最晏$2日之内最新𠮶$1回改动。<br />$3",
+       "rclinks": "显示最晏$2日之内最新𠮶$1回改动。",
        "diff": "差异",
        "hist": "历史",
        "hide": "弆到",
        "undeletelink": "还原",
        "undeleteviewlink": "望吖",
        "undeletecomment": "评论:",
-       "undeletedrevisions": "$1只修改版本恢复正嘞",
-       "undeletedrevisions-files": "$1只修改版本同$2只档案恢复正嘞",
-       "undeletedfiles": "$1只档案恢复正嘞",
        "cannotundelete": "反删除伓正;话伓定别𠮶人先倷恢复嘞个只页面。",
        "undeletedpage": "'''$1恢复正嘞'''\n\n望吖[[Special:Log/delete|删除日志]]𠮶删除同恢复记录。",
        "undelete-header": "要查最晏𠮶记录𠮶话请望[[Special:Log/delete|删除日志]]。",
index 3a58c92..65ad1b4 100644 (file)
        "externaldberror": "外部驗證資料庫出錯,或倷更新伓正倷嗰外部帳戶。",
        "login": "登入",
        "nav-login-createaccount": "登入/新開隻帳戶",
-       "userlogin": "登入/新開隻帳戶",
-       "userloginnocreate": "登入",
        "logout": "退出",
        "userlogout": "退出",
        "notloggedin": "冇登入",
-       "nologin": "汝冇帳戶嘎? '''$1'''。",
-       "nologinlink": "新開隻帳戶",
        "createaccount": "新開隻帳戶",
-       "gotaccount": "有帳戶哩? '''$1'''。",
-       "gotaccountlink": "登入",
-       "userlogin-resetlink": "誺記汝嗰登錄信息?",
        "createaccountmail": "通過email",
-       "createaccountreason": "原因:",
        "badretype": "汝捺嗰密碼伓合。",
        "userexists": "汝輸嗰用戶名係人家嗰,揀過隻囉!",
        "loginerror": "登入錯誤",
        "anoneditwarning": "'''警告:'''汝哈冇登入,箇頁嗰編寫歷史會錄到汝嗰IP。",
        "missingsummary": "'''提示:''' 倷冇提供編寫摘要。要係倷再按係保存嗰話,倷保存嗰編輯就會冇編輯摘要。",
        "missingcommenttext": "請到底下評論。",
-       "missingcommentheader": "''提示:''' 汝嗰評論冇提供標題。若係汝捺過到{{int:savearticle}}嗰話,汝保存嗰編輯就會冇標題。",
+       "missingcommentheader": "''提示:''' 汝嗰評論冇提供標題。若係汝捺過到$1嗰話,汝保存嗰編輯就會冇標題。",
        "summary-preview": "摘要預覽:",
        "subject-preview": "主題/頭條預覽:",
        "blockedtitle": "用戶封到哩",
        "prefs-misc": "雜項",
        "saveprefs": "存到參數",
        "prefs-editing": "編寫",
-       "rows": "橫:",
-       "columns": "豎:",
        "searchresultshead": "設置尋到嗰結果",
        "stub-threshold": "<a href=\"#\" class=\"stub\">細文連結</a>格式門檻:",
        "recentchangesdays": "頂晏嗰改動嗰顯示日數:",
        "rcshowhideanons": "$1匿名用戶嗰編輯",
        "rcshowhidepatr": "$1檢查過嗰編輯",
        "rcshowhidemine": "$1我嗰編輯",
-       "rclinks": "顯示頂晏$2日之內頂新嗰$1回改動。<br />$3",
+       "rclinks": "顯示頂晏$2日之內頂新嗰$1回改動。",
        "diff": "差異",
        "hist": "歷史",
        "hide": "弆到",
        "undeletelink": "還原",
        "undeleteviewlink": "望吖",
        "undeletecomment": "評論:",
-       "undeletedrevisions": "$1隻修改版本還原正哩",
-       "undeletedrevisions-files": "$1隻修改版本同$2隻檔案還原正哩",
-       "undeletedfiles": "$1隻檔案還原正哩",
        "cannotundelete": "反刪除伓正;話伓定別嗰人先倷恢復嘞箇隻頁面。",
        "undeletedpage": "'''$1還原正哩'''\n\n望吖[[Special:Log/delete|刪除日誌]]嗰刪除同恢復記錄。",
        "undelete-header": "要查頂晏嗰記錄嗰話請望[[Special:Log/delete|刪除日誌]]。",
index 5bd8f3b..b4cf71f 100644 (file)
        "externaldberror": "Thachair mearachd le dearbhadh an stòir-dhàta air neo chan eil cead agad an cunntas agad air an taobh a-muigh ùrachadh.",
        "login": "Log a-steach",
        "nav-login-createaccount": "Log a-steach / cruthaich cunntas",
-       "userlogin": "Log a-steach / cruthaich cunntas",
-       "userloginnocreate": "Log a-steach",
        "logout": "Log a-mach",
        "userlogout": "Log a-mach",
        "notloggedin": "Chan eil thu air logadh a-steach",
        "userlogin-noaccount": "Nach eil cunntas agad?",
        "userlogin-joinproject": "Gabh pàirt ann an {{SITENAME}}",
-       "nologin": "Nach eil cunntas agad fhathast? $1.",
-       "nologinlink": "Cruthaich cunntas",
        "createaccount": "Cruthaich cunntas ùr",
-       "gotaccount": "A bheil cunntas agad mu thràth? $1.",
-       "gotaccountlink": "Log a-steach",
-       "userlogin-resetlink": "Na dhìochuimhnich thu d' ainm is facal-faire?",
        "userlogin-resetpassword-link": "Na dhìochuimhnich thu am facal-faire agad?",
        "userlogin-helplink2": "Taic le logadh a-steach",
        "userlogin-loggedin": "Chaidh do logadh a-steach mar $1 mu thràth.\nCleachd am foirm gu h-ìosal airson logadh a-steach mar chleachdaiche eile.",
        "createacct-another-email-ph": "Cuir a-steach seòladh puist-d",
        "createaccountmail": "Cleachd facal-faire sealach air thuaiream agus cuir e dhan phost-d a tha 'ga shònrachadh gu h-ìosal",
        "createacct-realname": "Fìor-ainm (roghainneil)",
-       "createaccountreason": "Adhbhar:",
        "createacct-reason": "Adhbhar",
        "createacct-reason-ph": "Carson a tha thu a' cruthachadh cunntas eile?",
        "createacct-submit": "Cruthaich an cunntas agad",
        "preview": "Ro-shealladh",
        "showpreview": "Seall an ro-shealladh",
        "showdiff": "Seall na mùthaidhean",
-       "blankarticle": "<strong>Rabhadh:</strong> Tha an duilleag a tha thu a' cruthachadh bàn.\nMa nì thu briogadh air \"{{int:savearticle}}\" a-rithist, thèid an duilleag a chruthachadh gun susbaint sam bith innte.",
+       "blankarticle": "<strong>Rabhadh:</strong> Tha an duilleag a tha thu a' cruthachadh bàn.\nMa nì thu briogadh air \"$1\" a-rithist, thèid an duilleag a chruthachadh gun susbaint sam bith innte.",
        "anoneditwarning": "<strong>Rabhadh:</strong> Chan eil thu air logadh a-steach. Chithear an seòladh IP agad gu poblach ma nì thu deasachadh sam bith. Ma nì thu <strong>[$1 logadh a-steach]</strong> no ma <strong>[$2 chruthaicheas tu cunntas]</strong>, thèid d' ainm a chur ris na dheasaich thu 's gheibh thu buannachd a bharrachd às cuideachd.",
        "anonpreviewwarning": "<em>Chan eil thu air logadh a-steach. Ma nì thu sàbhaladh, thèid an seòladh IP agad a chlàradh ann an eachdraidh deasachadh na duilleige seo.</em>",
-       "missingsummary": "<strong>Cuimhnich:</strong> Cha dug thu seachad gearr-chunntas air na dh'atharraich thu.\nMa bhriogas tu air \"{{int:savearticle}}\" a-rithist, thèid na dheasaich thu a shàbhaladh as aonais gearr-chunntais.",
-       "selfredirect": "<strong>Rabhadh:</strong> Tha thu ag ath-stiùireadh duilleag dha fhèin.\nDh'fhaoidte gun do shònraich thu an t-amas cearr airson an ath-stiùiridh no gu bheil thu a' deasachadh an duilleag cearr.\nMa nì thu briogadh air \"{{int:savearticle}}\" a-rithist,m thèid an ath-stiùireadh a chruthachadh co-dhiù.",
+       "missingsummary": "<strong>Cuimhnich:</strong> Cha dug thu seachad gearr-chunntas air na dh'atharraich thu.\nMa bhriogas tu air \"$1\" a-rithist, thèid na dheasaich thu a shàbhaladh as aonais gearr-chunntais.",
+       "selfredirect": "<strong>Rabhadh:</strong> Tha thu ag ath-stiùireadh duilleag dha fhèin.\nDh'fhaoidte gun do shònraich thu an t-amas cearr airson an ath-stiùiridh no gu bheil thu a' deasachadh an duilleag cearr.\nMa nì thu briogadh air \"$1\" a-rithist,m thèid an ath-stiùireadh a chruthachadh co-dhiù.",
        "missingcommenttext": "Cuir a-steach beachd gu h-ìosal.",
-       "missingcommentheader": "<strong>Cuimhnich:</strong> Cha dug thu seachad cuspair airson a’ bheachd seo.\nMa bhriogas tu air “{{int:savearticle}}” a-rithist, thèid na dheasaich thu a shàbhaladh as aonais.",
+       "missingcommentheader": "<strong>Cuimhnich:</strong> Cha dug thu seachad cuspair airson a’ bheachd seo.\nMa bhriogas tu air “$1” a-rithist, thèid na dheasaich thu a shàbhaladh as aonais.",
        "summary-preview": "Ro-shealladh a' ghearr-chunntais:",
        "subject-preview": "Ro-shealladh a’ chuspair:",
        "blockedtitle": "Tha an cleachdair air a bhacadh",
        "editingsection": "A' deasachadh $1 (earrann)",
        "editingcomment": "A' deasachadh $1 (earrann ùr)",
        "editconflict": "Còmhstri deasachaidh: $1",
-       "explainconflict": "Tha cuideigin eile air an duilleag seo a mhùthadh on a thòisich thu fhèin air a dheasachadh.\nTha am bogsa teacsa gu h-àrd a' nochdadh na duilleige mar a tha i an-dràsta.\nTha na mùthaidhean agadsa sa bhogsa gu h-ìosal.\nBidh agad ris na mùthaidhean agad a cho-aonachadh ris an teacsa làithreach.\nCha dèid <strong>ach an teacsa gu h-àrd</strong> a shàbhaladh nuair a bhriogas tu air \"{{int:savearticle}}\".",
+       "explainconflict": "Tha cuideigin eile air an duilleag seo a mhùthadh on a thòisich thu fhèin air a dheasachadh.\nTha am bogsa teacsa gu h-àrd a' nochdadh na duilleige mar a tha i an-dràsta.\nTha na mùthaidhean agadsa sa bhogsa gu h-ìosal.\nBidh agad ris na mùthaidhean agad a cho-aonachadh ris an teacsa làithreach.\nCha dèid <strong>ach an teacsa gu h-àrd</strong> a shàbhaladh nuair a bhriogas tu air \"$1\".",
        "yourtext": "An teacsa agad",
        "storedversion": "Mùthadh taisgte",
        "nonunicodebrowser": "<strong>Rabhadh: Chan eil am brabhsair agad co-chòrdail le Unicode.</strong>\nChuir sinn gleus air dòigh dhut a nì cinnteach gun urrainn dhut duilleagan a shàbhaladh gu tèarainte: Nochdaidh caractaran taobh a-muigh ASCII mar chòd sia-dheicheach sa bhogsa deasachaidh.",
        "right-editsemiprotected": "Cead gus duilleagan le dìon \"{{int:protect-level-autoconfirmed}}\" a dheasachadh",
        "right-editcontentmodel": "Deasaich modail susbaint duilleige",
        "right-editinterface": "Cead gus eadar-aghaidh nan cleachdaichean a dheasachadh",
-       "right-editusercssjs": "Cead gus faidhlichean CSS 's JavaScript càich a dheasachadh",
        "right-editusercss": "Cead gus faidhlichean CSS càich a dheasachadh",
        "right-edituserjs": "Cead gus faidhlichean JavaScript càich a dheasachadh",
        "right-editmyusercss": "Cead gus faidhlichean CSS agad fhèin a dheasachadh",
        "rcshowhidemine": "$1 na mùthaidhean agam",
        "rcshowhidemine-show": "Seall",
        "rcshowhidemine-hide": "Falaich",
-       "rclinks": "Seall {{PLURAL:$1|an $1 mhùthadh|an $1 mhùthadh|na $1 mùthaidhean|am $1 mùthadh}} mu dheireadh thairis air {{PLURAL:$2|an $2 latha|an $2 latha|na $2 làithean|am $2 latha}} mu dheireadh<br />$3",
+       "rclinks": "Seall {{PLURAL:$1|an $1 mhùthadh|an $1 mhùthadh|na $1 mùthaidhean|am $1 mùthadh}} mu dheireadh thairis air {{PLURAL:$2|an $2 latha|an $2 latha|na $2 làithean|am $2 latha}} mu dheireadh",
        "diff": "diofar",
        "hist": "eachdr",
        "hide": "Falaich",
        "undeleteviewlink": "seall",
        "undeleteinvert": "Ais-thionndaidh na thagh thu",
        "undeletecomment": "Adhbhar:",
-       "undeletedrevisions": "Chaidh $1 {{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mùthadh}} aiseag",
-       "undeletedrevisions-files": "Chaidh $1 {{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mùthadh}} agus $2 {{PLURAL:$2|fhaidhle|fhaidhle|faidhlichean|faidhle}} aiseag",
-       "undeletedfiles": "Chaidh $1 {{PLURAL:$1|fhaidhle|fhaidhle|faidhlichean|faidhle}} aiseag",
        "cannotundelete": "Dh’fhàillig neo-dhèanamh an sguabaidh às no co-dhiù cuid dheth:\n$1",
        "undeletedpage": "<strong>Chaidh $1 aiseag</strong>\n\nThoir sùil air [[Special:Log/delete|loga an sguabaidh às]] airson clàr air na chaidh a sguabadh às no aiseag o chionn goirid.",
        "undelete-header": "Faic [[Special:Log/delete|loga an sguabaidh às]] airson duilleagan a chaidh a sguabadh às o chionn goirid.",
        "logentry-upload-overwrite": "Luchdaich $1 tionndadh ùr de $3 suas",
        "logentry-upload-revert": "Luchdaich $1 $3 suas",
        "rightsnone": "(chan eil gin)",
-       "revdelete-summary": "gearr-chunntas an deasachaidh",
        "feedback-adding": "A' cur beachd ri duilleag...",
        "feedback-bugcheck": "Taghta! Dearbhaich nach eil e air [$1 liosta nam bugaichean air a bheil sinn eòlach] mar-thà.",
        "feedback-bugnew": "Dhearbh mi seo. Dèan aithris air buga ur",
index a5cca75..568ff80 100644 (file)
        "index-category": "Páxinas indexadas",
        "noindex-category": "Páxinas non indexadas",
        "broken-file-category": "Páxinas con ligazóns rotas cara a ficheiros",
+       "categoryviewer-pagedlinks": "($1) ($2)",
+       "category-header-numerals": "$1–$2",
        "about": "Acerca de",
        "article": "Páxina de contido",
        "newwindow": "(abre unha ventá nova)",
        "anontalk": "Conversa",
        "navigation": "Navegación",
        "and": "&#32;e",
-       "qbfind": "Procurar",
-       "qbbrowse": "Navegar",
-       "qbedit": "Editar",
-       "qbpageoptions": "Esta páxina",
-       "qbmyoptions": "As miñas páxinas",
        "faq": "Preguntas máis frecuentes",
-       "faqpage": "Project:FAQ",
        "actions": "Accións",
        "namespaces": "Espazos de nomes",
        "variants": "Variantes",
        "edit-local": "Editar a descrición local",
        "create": "Crear",
        "create-local": "Engadir unha descrición local",
-       "editthispage": "Editar esta páxina",
-       "create-this-page": "Crear esta páxina",
        "delete": "Borrar",
-       "deletethispage": "Borrar esta páxina",
-       "undeletethispage": "Restaurar esta páxina",
        "undelete_short": "Restaurar {{PLURAL:$1|unha edición|$1 edicións}}",
        "viewdeleted_short": "Ver {{PLURAL:$1|unha edición borrada|$1 edicións borradas}}",
        "protect": "Protexer",
        "protect_change": "cambiar",
-       "protectthispage": "Protexer esta páxina",
        "unprotect": "Cambiar a protección",
-       "unprotectthispage": "Cambiar a protección desta páxina",
        "newpage": "Páxina nova",
-       "talkpage": "Conversar sobre esta páxina",
        "talkpagelinktext": "Conversa",
        "specialpage": "Páxina especial",
        "personaltools": "Ferramentas persoais",
-       "articlepage": "Ver a páxina de contido",
        "talk": "Conversa",
        "views": "Vistas",
        "toolbox": "Ferramentas",
        "tool-link-userrights": "Modificar os grupos {{GENDER:$1|do usuario|da usuaria}}",
        "tool-link-userrights-readonly": "Ver os {{GENDER:$1|grupos de usuario}}",
        "tool-link-emailuser": "Enviar un correo electrónico {{GENDER:$1|ao usuario|á usuaria}}",
-       "userpage": "Ver a páxina {{GENDER:{{BASEPAGENAME}}|do usuario|da usuaria}}",
-       "projectpage": "Ver a páxina do proxecto",
        "imagepage": "Ver a páxina do ficheiro",
        "mediawikipage": "Ver a páxina da mensaxe",
        "templatepage": "Ver a páxina do modelo",
        "redirectedfrom": "(Redirixido desde \"$1\")",
        "redirectpagesub": "Páxina de redirección",
        "redirectto": "Redirixir cara a:",
-       "lastmodifiedat": "A última modificación desta páxina foi o $1 ás $2.",
+       "lastmodifiedat": "A última edición desta páxina foi o $1 ás $2.",
        "viewcount": "Esta páxina foi visitada {{PLURAL:$1|unha vez|$1 veces}}.",
        "protectedpage": "Páxina protexida",
        "jumpto": "Ir a:",
        "versionrequired": "Necesítase a versión $1 de MediaWiki",
        "versionrequiredtext": "Necesítase a versión $1 de MediaWiki para utilizar esta páxina. Vexa [[Special:Version|a páxina da versión]].",
        "ok": "Aceptar",
+       "pagetitle": "$1 - {{SITENAME}}",
+       "pagetitle-view-mainpage": "{{SITENAME}}",
+       "backlinksubtitle": "← $1",
        "retrievedfrom": "Traído desde \"$1\"",
        "youhavenewmessages": "{{PLURAL:$3|Ten}} $1 ($2).",
        "youhavenewmessagesfromusers": "{{PLURAL:$4|Ten}} $1 {{PLURAL:$3|doutro usuario|de $3 usuarios}} ($2).",
        "site-atom-feed": "Fonte de novas Atom de $1",
        "page-rss-feed": "Fonte de novas RSS de \"$1\"",
        "page-atom-feed": "Fonte de novas Atom de \"$1\"",
+       "feed-atom": "Atom",
+       "feed-rss": "RSS",
        "red-link-title": "$1 (a páxina aínda non existe)",
        "sort-descending": "Orde descendente",
        "sort-ascending": "Orde ascendente",
        "nocookiesnew": "A conta de usuario foi creada, pero non accedeu ao sistema.\n{{SITENAME}} para rexistrar os usuarios.\nVostede ten as cookies deshabilitadas.\nPor favor, habilíteas e logo acceda ao sistema co seu novo nome de usuario e contrasinal.",
        "nocookieslogin": "{{SITENAME}} usa cookies para rexistrar os usuarios.\nVostede ten as cookies deshabilitadas.\nPor favor, habilíteas e inténteo de novo.",
        "nocookiesfornew": "Non se creou a conta de usuario porque non puidemos confirmar a súa orixe.\nAsegúrese de que ten as cookies habilitadas, volva cargar a páxina e inténteo de novo.",
+       "nocookiesforlogin": "{{int:nocookieslogin}}",
        "createacct-loginerror": "A conta creouse correctamente, pero non se puido conectar automaticamente. Vaia ao [[Special:UserLogin|acceso manual]].",
        "noname": "Non especificou un nome de usuario válido.",
        "loginsuccesstitle": "Accedeu ao sistema",
        "preview": "Vista previa",
        "showpreview": "Mostrar a vista previa",
        "showdiff": "Mostrar os cambios",
-       "blankarticle": "<strong>Advertencia:</strong> A páxina que está a piques de crear está baleira.\nSe preme no botón \"{{int:savearticle}}\" outra vez, a páxina crearase sen contido.",
+       "blankarticle": "<strong>Advertencia:</strong> A páxina que está a piques de crear está baleira.\nSe preme no botón \"$1\" outra vez, a páxina crearase sen contido.",
        "anoneditwarning": "<strong>Aviso:</strong> Non accedeu ao sistema. O seu enderezo IP será visible se fai algunha edición. Se <strong>[$1 accede ao sistema]</strong> ou <strong>[$2 crea unha conta]</strong>, as súas edicións serán atribuídas ao seu nome de usuario e obterá outros beneficios.",
        "anonpreviewwarning": "''Non accedeu ao sistema. Se garda a páxina, o seu enderezo IP quedará rexistrado no historial de edicións.''",
-       "missingsummary": "'''Aviso:''' Esqueceu incluír o texto do campo resumo.\nSe preme en \"{{int:savearticle}}\" a súa edición gardarase sen ningunha descrición da edición.",
-       "selfredirect": "<strong>Atención:</strong> Está redirixindo esta páxina a si mesma.\nQuizais especificou incorrectamente a páxina de destino ou poida que estea a editar unha páxina errónea.\nSe preme en \"{{int:savearticle}}\" de novo, crearase a redireción de calquera xeito.",
+       "missingsummary": "'''Aviso:''' Esqueceu incluír o texto do campo resumo.\nSe preme en \"$1\" a súa edición gardarase sen ningunha descrición da edición.",
+       "selfredirect": "<strong>Atención:</strong> Está redirixindo esta páxina a si mesma.\nQuizais especificou incorrectamente a páxina de destino ou poida que estea a editar unha páxina errónea.\nSe preme en \"$1\" de novo, crearase a redireción de calquera xeito.",
        "missingcommenttext": "Por favor, escriba un comentario a continuación.",
-       "missingcommentheader": "<strong>Aviso:</strong> Non escribiu ningún texto no asunto deste comentario.\nSe preme en \"{{int:savearticle}}\" de novo, a súa edición gardarase sen el.",
+       "missingcommentheader": "<strong>Aviso:</strong> Non escribiu ningún texto no asunto deste comentario.\nSe preme en \"$1\" de novo, a súa edición gardarase sen el.",
        "summary-preview": "Vista previa do resumo de edición:",
        "subject-preview": "Vista previa do asunto:",
        "previewerrortext": "Produciuse un erro ao intentar previsualizar os cambios.",
        "editingsection": "Editando unha sección de \"$1\"",
        "editingcomment": "Editando unha nova sección de \"$1\"",
        "editconflict": "Conflito de edición: $1",
-       "explainconflict": "Alguén cambiou esta páxina desde que comezou a editala.\nA área de texto superior contén o texto da páxina tal e como existe na actualidade.\nOs seus cambios móstranse na área inferior.\nPode mesturar os seus cambios co texto existente.\n'''Só''' se gardará o texto na área superior cando prema en \"{{int:savearticle}}\".",
+       "explainconflict": "Alguén cambiou esta páxina desde que comezou a editala.\nA área de texto superior contén o texto da páxina tal e como existe na actualidade.\nOs seus cambios móstranse na área inferior.\nPode mesturar os seus cambios co texto existente.\n'''Só''' se gardará o texto na área superior cando prema en \"$1\".",
        "yourtext": "O seu texto",
        "storedversion": "Versión gardada",
        "nonunicodebrowser": "'''Atención: O seu navegador non soporta o Unicode.'''\nExiste unha solución que lle permite editar páxinas con seguridade: os caracteres non incluídos no ASCII aparecerán na caixa de edición como códigos hexadecimais.",
        "readonlywarning": "<strong>Atención: Pechouse a base de datos para facer mantemento, polo que non vai poder gardar as súas edicións polo de agora.</strong>\nSe cadra, pode cortar e pegar o texto nun ficheiro de texto e gardalo para despois.\n\nO administrador do sistema que a pechou deu esta explicación: $1",
        "protectedpagewarning": "'''Aviso: Esta páxina foi protexida de xeito que só os usuarios con privilexios de administrador a poidan editar.'''\nVelaquí está a última entrada no rexistro, por se quere consultala:",
        "semiprotectedpagewarning": "'''Nota:''' Esta páxina foi protexida de xeito que só os usuarios rexistrados a poidan editar.\nVelaquí está a última entrada no rexistro, por se quere consultala:",
-       "cascadeprotectedwarning": "<strong>Atención:</strong> Protexeuse esta páxina de xeito que só a poden editar os usuarios con privilexios de administrador debido a que está transcluída {{PLURAL:$1|na seguinte páxina protexida|nas seguintes páxinas protexidas}} coa opción \"protección en serie\" activada:",
+       "cascadeprotectedwarning": "<strong>Atención:</strong> Protexeuse esta páxina de xeito que só a poden editar os usuarios con [[Special:ListGroupRights|privilexios específicos]] debido a que está transcluída {{PLURAL:$1|na seguinte páxina protexida|nas seguintes páxinas protexidas}} coa opción \"protección en serie\" activada:",
        "titleprotectedwarning": "'''Aviso: Esta páxina foi protexida de xeito que [[Special:ListGroupRights|só algúns usuarios]] a poidan crear.'''\nVelaquí está a última entrada no rexistro, por se quere consultala:",
        "templatesused": "{{PLURAL:$1|Modelo usado|Modelos usados}} nesta páxina:",
        "templatesusedpreview": "{{PLURAL:$1|Modelo usado|Modelos usados}} nesta vista previa:",
        "template-semiprotected": "(semiprotexido)",
        "hiddencategories": "Esta páxina forma parte {{PLURAL:$1|dunha categoría oculta|de $1 categorías ocultas}}:",
        "edittools": "<!-- O texto que apareza aquí mostrarase por debaixo dos formularios de edición e envío. -->",
+       "edittools-upload": "-",
        "nocreatetext": "{{SITENAME}} ten restrinxida a posibilidade de crear páxinas novas.\nPode volver e editar unha páxina que xa existe ou ben [[Special:UserLogin|acceder ao sistema ou crear unha conta]].",
        "nocreate-loggedin": "Non ten os permisos necesarios para crear páxinas novas.",
        "sectioneditnotsupported-title": "A edición de seccións non está soportada",
        "content-model-text": "texto simple",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "content-model-json": "JSON",
        "content-json-empty-object": "Obxecto baleiro",
        "content-json-empty-array": "Matriz baleira",
        "deprecated-self-close-category": "Páxinas que usan etiquetas HTML de auto-pechado non válidas",
        "mergehistory-comment": "\"[[:$1]]\" fusionouse con \"[[:$2]]\": $3",
        "mergehistory-same-destination": "A páxina de orixe e a páxina de destino non poden ser a mesma",
        "mergehistory-reason": "Motivo:",
+       "mergehistory-revisionrow": "$1 ($2) $3 . . $4 $5 $6",
        "mergelog": "Rexistro de fusións",
        "revertmerge": "Desfacer a fusión",
        "mergelogpagetext": "A continuación hai unha lista coas fusións máis recentes do historial dunha páxina co doutra.",
        "search-file-match": "(coincide co contido do ficheiro)",
        "search-suggest": "Quizais quixo dicir: $1",
        "search-rewritten": "Móstranse os resultados para \"$1\". Buscar no seu lugar \"$2\".",
-       "search-interwiki-caption": "Proxectos irmáns",
+       "search-interwiki-caption": "Resultados dos proxectos irmáns",
        "search-interwiki-default": "Resultados de $1:",
        "search-interwiki-more": "(máis)",
        "search-interwiki-more-results": "máis resultados",
        "youremail": "Correo electrónico:",
        "username": "Nome de {{GENDER:$1|usuario|usuaria}}:",
        "prefs-memberingroups": "{{GENDER:$2|Membro}} {{PLURAL:$1|do grupo|dos grupos}}:",
+       "prefs-memberingroups-type": "$1",
        "group-membership-link-with-expiry": "$1 (ata $2)",
        "prefs-registration": "Data e hora de rexistro:",
+       "prefs-registration-date-time": "$1",
        "yourrealname": "Nome real:",
        "yourlanguage": "Lingua:",
        "yourvariant": "Variante de lingua para os contidos:",
        "saveusergroups": "Gardar os grupos {{GENDER:$1|do usuario|da usuaria}}",
        "userrights-groupsmember": "Membro de:",
        "userrights-groupsmember-auto": "Membro implícito de:",
+       "userrights-groupsmember-type": "$1",
        "userrights-groups-help": "Pode cambiar os grupos aos que {{GENDER:$1|o usuario|a usuaria}} pertence:\n* Se a caixa ten un sinal (✓) significa que {{GENDER:$1|o usuario|a usuaria}} pertence a ese grupo.\n* Se, pola contra, non o ten, significa que non pertence.\n* Un asterisco (*) indica que non pode eliminar o grupo unha vez que o engadiu, e viceversa.\n* Un # indica que só se pode atrasar a data de caducidade de pertenza a este grupo; non se pode adiantar.",
        "userrights-reason": "Motivo:",
        "userrights-no-interwiki": "Non ten os permisos necesarios para editar os dereitos de usuario noutros wikis.",
        "userrights-nodatabase": "A base de datos \"$1\" non existe ou non é local.",
        "userrights-changeable-col": "Os grupos que pode cambiar",
        "userrights-unchangeable-col": "Os grupos que non pode cambiar",
+       "userrights-irreversible-marker": "$1*",
+       "userrights-no-shorten-expiry-marker": "$1#",
        "userrights-expiry-current": "Caduca o $1",
        "userrights-expiry-none": "Non caduca",
        "userrights-expiry": "Caduca:",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Mostrar",
        "rcfilters-activefilters": "Filtros activos",
+       "rcfilters-quickfilters": "Configuración de filtros gardados",
+       "rcfilters-quickfilters-placeholder-title": "Aínda non se gardou ningunha ligazón",
+       "rcfilters-quickfilters-placeholder-description": "Para gardar a configuración dos seus filtros e reutilizala máis tarde, prema na icona do marcador na área de Filtro activo que se atopa a abaixo.",
+       "rcfilters-savedqueries-defaultlabel": "Filtros gardados",
+       "rcfilters-savedqueries-rename": "Renomear",
+       "rcfilters-savedqueries-setdefault": "Activar por defecto",
+       "rcfilters-savedqueries-unsetdefault": "Eliminar por defecto",
+       "rcfilters-savedqueries-remove": "Eliminar",
+       "rcfilters-savedqueries-new-name-label": "Nome",
+       "rcfilters-savedqueries-apply-label": "Gardar configuracións",
+       "rcfilters-savedqueries-cancel-label": "Cancelar",
+       "rcfilters-savedqueries-add-new-title": "Gardar a configuración do filtro actual",
        "rcfilters-restore-default-filters": "Restaurar os filtros por defecto",
        "rcfilters-clear-all-filters": "Borrar todos os filtros",
        "rcfilters-search-placeholder": "Filtrar os cambios recentes (ollar ou comezar a escribir)",
        "rcfilters-highlightmenu-help": "Seleccione unha cor para resaltar esta propiedade",
        "rcfilters-filterlist-noresults": "Non se atoparon filtros",
        "rcfilters-noresults-conflict": "Non se atoparon resultados porque os criterios de busca están en conflito.",
+       "rcfilters-state-message-subset": "Este filtro non ten efecto porque os seus resultados están incluídos dentro da seguinte procura, {{PLURAL:$2|filtro máis amplo|filtros máis amplos}} (probe a destacalo para distinguilo): $1",
        "rcfilters-state-message-fullcoverage": "Seleccionar tódolos filtros dun grupo é o mesmo que non seleccionar ningún, polo que este filtro non ten efecto. O grupo inclúeː $1",
        "rcfilters-filtergroup-registration": "Rexistro de usuario",
        "rcfilters-filter-registered-label": "Rexistrado",
        "rcfilters-filter-unregistered-label": "Non rexistrado",
        "rcfilters-filter-unregistered-description": "Editores que non están autenticados.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Este filtro está en conflito {{PLURAL:$2|co seguinte filtro|cos seguintes filtros}} Experience, que {{PLURAL:$2|atopa|atopan}} só usuarios rexistradosː $1",
-       "rcfilters-filtergroup-authorship": "Editar autoría",
-       "rcfilters-filter-editsbyself-label": "As súas propias edicións",
-       "rcfilters-filter-editsbyself-description": "Edicións súas.",
-       "rcfilters-filter-editsbyother-label": "Edicións doutros.",
-       "rcfilters-filter-editsbyother-description": "Edicións creadas por outros usuarios (non por vostede).",
+       "rcfilters-filtergroup-authorship": "Autoría da contribución",
+       "rcfilters-filter-editsbyself-label": "Cambios seus",
+       "rcfilters-filter-editsbyself-description": "As súas contribucións",
+       "rcfilters-filter-editsbyother-label": "Modificacións doutros.",
+       "rcfilters-filter-editsbyother-description": "Tódolos cambios, excepto os seus.",
        "rcfilters-filtergroup-userExpLevel": "Nivel de experiencia (só para usuarios rexistrados)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Os filtros Experience só atopan usuarios rexistrados, polo que este filtro está en conflito co filtro \"non rexistrado\".",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "O filtro \"non rexistrados\" está en conflito cun ou máis filtros Experience, que só atopan usuarios rexistrados. Os filtros en conflito están marcados na área dos filtros activos, arriba.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Chegados recentemente",
        "rcfilters-filter-user-experience-level-newcomer-description": "Menos de 10 edicións e 4 días de actividade.",
        "rcfilters-filter-user-experience-level-learner-label": "Aprendices",
-       "rcfilters-filter-user-experience-level-learner-description": "Máis días de actividade e edicións que \"novatos\" pero menos que \"usuarios experimentados\".",
+       "rcfilters-filter-user-experience-level-learner-description": "Máis experimentado que os \"usuarios novatos\" pero menos que os \"usuarios experimentados\".",
        "rcfilters-filter-user-experience-level-experienced-label": "Usuarios experimentados",
        "rcfilters-filter-user-experience-level-experienced-description": "Máis de 30 días de actividade e 500 edicións.",
        "rcfilters-filtergroup-automated": "Contribucións automatizadas",
        "rcfilters-filter-minor-description": "Edicións que o autor etiquetou como menores.",
        "rcfilters-filter-major-label": "Edicións non menores",
        "rcfilters-filter-major-description": "Edicións non marcadas como menores.",
+       "rcfilters-filtergroup-watchlist": "Páxinas vixiadas",
+       "rcfilters-filter-watchlist-watched-label": "Na lista de vixilancia",
+       "rcfilters-filter-watchlist-watched-description": "Cambios a páxinas na súa lista de vixilancia.",
+       "rcfilters-filter-watchlist-watchednew-label": "Cambios novos na súa lista de vixilancia",
+       "rcfilters-filter-watchlist-watchednew-description": "Cambios nas páxinas da súa lista de vixilancia que non visitou dende que se produciron os cambios.",
+       "rcfilters-filter-watchlist-notwatched-label": "Ausente da lista de vixilancia",
+       "rcfilters-filter-watchlist-notwatched-description": "Todos, excepto os cambios nas páxinas da súa lista de vixilancia.",
        "rcfilters-filtergroup-changetype": "Tipo de cambio",
        "rcfilters-filter-pageedits-label": "Edicións de páxinas",
        "rcfilters-filter-pageedits-description": "Edicións do contido da wiki, de conversas, de descricións de categorías...",
        "rcfilters-filter-categorization-label": "Cambios de categoría",
        "rcfilters-filter-categorization-description": "Rexistros de páxinas engadidas ou borradas de categorías.",
        "rcfilters-filter-logactions-label": "Accións rexistradas",
-       "rcfilters-filter-logactions-description": "Accións administrativas, creacións de conta, borrados de páxinas, subas de ficheiros....",
+       "rcfilters-filter-logactions-description": "Accións administrativas, creacións de conta, borrados de páxinas, subas de ficheiros...",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "O filtro \"edicións menores\" está en conflito con un ou máis filtros Tipo de modificación, porque certos tipos de modificación non poden designarse como \"menores\". Os filtros en conflito están marcados na zona Filtros activos, arriba.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Certos tipos de modificación non poden designarse como \"menores\", polo que este filtro entra en conflito cos seguintes filtros Tipo de modificaciónː $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Este filtro Tipo de modificación entra en conflito co filtro \"Modificacións menores\". Certos tipos de modificación non poden designarse como \"menores\".",
+       "rcfilters-filtergroup-lastRevision": "Versión actual",
+       "rcfilters-filter-lastrevision-label": "Versión actual",
+       "rcfilters-filter-lastrevision-description": "A última modificación a unha páxina.",
+       "rcfilters-filter-previousrevision-label": "Versións anteriores",
+       "rcfilters-filter-previousrevision-description": "Tódolos cambios realizados nunha páxina e que non son os máis recentes.",
+       "rcfilters-filter-excluded": "Excluído",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:non</strong> $1",
+       "rcfilters-view-tags": "Etiquetas",
        "rcnotefrom": "A continuación {{PLURAL:$5|móstrase o cambio feito|móstranse os cambios feitos}} desde o <strong>$3</strong> ás <strong>$4</strong> (móstranse <strong>$1</strong> como máximo).",
        "rclistfromreset": "Reinicializar a selección da data",
        "rclistfrom": "Mostrar os cambios novos desde o $3 ás $2",
        "rcshowhidecategorization": "$1 a categorización de páxinas",
        "rcshowhidecategorization-show": "Mostrar",
        "rcshowhidecategorization-hide": "Agochar",
-       "rclinks": "Mostrar os últimos $1 cambios nos últimos $2 días.<br />$3",
+       "rclinks": "Mostrar os últimos $1 cambios nos últimos $2 días.",
        "diff": "dif",
        "hist": "hist",
        "hide": "Agochar",
        "minoreditletter": "m",
        "newpageletter": "N",
        "boteditletter": "b",
+       "unpatrolledletter": "!",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|usuario|usuarios}} vixiando]",
        "rc_categories": "Limitar ás categorías (separadas por \"|\"):",
        "rc_categories_any": "Calquera das elixidas",
+       "rc-change-size": "$1",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} despois da modificación",
        "newsectionsummary": "Nova sección: /* $1 */",
        "rc-enhanced-expand": "Mostrar os detalles",
        "upload-preferred": "{{PLURAL:$2|Tipo|Tipos}} de ficheiro {{PLURAL:$2|preferido|preferidos}}: $1.",
        "upload-prohibited": "{{PLURAL:$2|Tipo|Tipos}} de ficheiro {{PLURAL:$2|prohibido|prohibidos}}: $1.",
        "uploadlogpage": "Rexistro de cargas",
-       "uploadlogpagetext": "A continuación está a lista cos últimos ficheiros cargados no servidor.\nVexa a [[Special:NewFiles|galería de imaxes novas]] para ollar unha visión máis xeral.",
+       "uploadlogpagetext": "A continuación está a lista cos últimos ficheiros cargados no servidor.\nVexa a [[Special:NewFiles|galería de ficheiros novos]] para unha presentación máis visual.",
        "filename": "Nome do ficheiro",
        "filedesc": "Resumo",
        "fileuploadsummary": "Descrición:",
        "php-uploaddisabledtext": "As cargas de ficheiros PHP están desactivadas. Por favor, comprobe a característica file_uploads.",
        "uploadscripted": "Este ficheiro contén código HTML ou script que pode producir erros ao ser interpretado polo navegador.",
        "upload-scripted-pi-callback": "Non se pode subir un ficheiro que conteña instrucións de procesamento de follas de estilo XML.",
+       "upload-scripted-dtd": "Non pode subir ficheiros SVG que conteñen unha declaración de DTD non estándar.",
        "uploaded-script-svg": "Atopouse un elemento de comandos \"$1\" no ficheiro SVG subido.",
        "uploaded-hostile-svg": "Atopouse CSS non seguro no elemento de estilo do ficheiro SVG subido.",
        "uploaded-event-handler-on-svg": "Non está permitido fixar atributos de xestión de eventos <code>$1=\"$2\"</code> nos ficheiros SVG.",
        "uploadnewversion-linktext": "Cargar unha nova versión deste ficheiro",
        "shared-repo-from": "de $1",
        "shared-repo": "repositorio compartido",
+       "shared-repo-name-wikimediacommons": "Wikimedia Commons",
        "filepage.css": "/** O CSS que se coloque aquí será incluído na páxina de descrición do ficheiro, así como nos wikis de clientes estranxeiros */",
        "upload-disallowed-here": "Non pode sobrescribir este ficheiro.",
        "filerevert": "Reverter \"$1\"",
        "apisandbox-request-selectformat-label": "Mostrar os datos da petición como:",
        "apisandbox-request-format-url-label": "Cadea de consulta da URL",
        "apisandbox-request-url-label": "URL da solicitude:",
+       "apisandbox-request-format-json-label": "JSON",
        "apisandbox-request-json-label": "Solicitude do JSONː",
        "apisandbox-request-time": "Duración da solicitude: {{PLURAL:$1|$1 ms}}",
        "apisandbox-results-fixtoken": "Corrixir o identificador e reenviar",
        "apisandbox-multivalue-all-values": "$1 (Tódolos valores)",
        "booksources": "Fontes bibliográficas",
        "booksources-search-legend": "Procurar fontes bibliográficas",
+       "booksources-isbn": "ISBN:",
        "booksources-search": "Procurar",
        "booksources-text": "A continuación aparece unha lista de ligazóns cara a outros sitios web que venden libros novos e usados; neles tamén pode obter máis información sobre as obras que está a buscar:",
        "booksources-invalid-isbn": "O ISBN inserido semella non ser válido; comprobe que non se producisen erros ao copialo da fonte orixinal.",
        "listgrouprights-rights": "Dereitos",
        "listgrouprights-helppage": "Help:Dereitos do grupo",
        "listgrouprights-members": "(lista de membros)",
+       "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": "Pode engadir {{PLURAL:$2|o grupo|os grupos}}: $1",
        "listgrouprights-removegroup": "Pode eliminar {{PLURAL:$2|o grupo|os grupos}}: $1",
        "listgrouprights-addgroup-all": "Pode engadir todos os grupos",
        "listgrants-summary": "Esta é unha lista de permisos cos seus accesos asociados aos permisos de usuario. Os usuarios poden autorizar aplicacións para que usen a súa conta, pero con acceso limitado en función dos permisos que o usuario concede á aplicación. Porén, unha aplicación que actúa no nome dun usuario non pode empregar permisos que o propio usuario non posúe.\nPode obter máis información sobre os dereitos individuais [[{{MediaWiki:Listgrouprights-helppage}}|nesta páxina]].",
        "listgrants-grant": "Outorgar",
        "listgrants-rights": "Dereitos",
+       "listgrants-grant-display": "$1 <code>($2)</code>",
        "trackingcategories": "Categorías de seguimento",
        "trackingcategories-summary": "Esta páxina lista as categorías de seguimento que o software de MediaWiki enche automaticamente. Pódense alterar os seus nomes modificando as correspondentes mensaxes do sistema no espazo de nomes \"{{ns:8}}\".",
        "trackingcategories-msg": "Categoría de seguimento",
        "enotif_body_intro_moved": "{{GENDER:$2|$2}} trasladou a páxina chamada \"$1\" en {{SITENAME}} o $PAGEEDITDATE. Consulte $3 para ver a revisión actual.",
        "enotif_body_intro_restored": "{{GENDER:$2|$2}} restaurou a páxina chamada \"$1\" en {{SITENAME}} o $PAGEEDITDATE. Consulte $3 para ver a revisión actual.",
        "enotif_body_intro_changed": "{{GENDER:$2|$2}} modificou a páxina chamada \"$1\" en {{SITENAME}} o $PAGEEDITDATE. Consulte $3 para ver a revisión actual.",
-       "enotif_lastvisited": "Consulte $1 para comprobar todos os cambios feitos desde a súa última visita.",
-       "enotif_lastdiff": "Consulte $1 para ver esta modificación.",
+       "enotif_lastvisited": "Consulte $1 para ver tódolos cambios desde a súa última visita",
+       "enotif_lastdiff": "Consulte $1 para ver este cambio",
        "enotif_anon_editor": "usuario anónimo $1",
        "enotif_body": "Boas, $WATCHINGUSERNAME:\n\n$PAGEINTRO $NEWPAGE\n\nResumo de edición: $PAGESUMMARY $PAGEMINOREDIT\n\nPode contactar co editor:\npor correo electrónico: $PAGEEDITOR_EMAIL\nno wiki: $PAGEEDITOR_WIKI\n\nNon se producirán máis notificacións en caso de que haxa actividade nova ata que acceda ao sistema e visite a páxina. Pode restablecer os indicadores de aviso de notificación para o conxunto das páxinas marcadas na súa lista de vixilancia.\n\nO sistema de avisos de {{SITENAME}}\n\n--\nPara cambiar as notificacións por correo electrónico, visite\n{{canonicalurl:{{#special:Preferences}}}}\n\n\nPara cambiar a súa lista de vixilancia, visite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPara borrar a páxina da súa lista de vixilancia, visite\n$UNWATCHURL\n\nAxuda:\n$HELPPAGE",
        "created": "creada",
        "protect-fallback": "Permitir só aos usuarios con permisos de \"$1\"",
        "protect-level-autoconfirmed": "Permitir só aos usuarios autoconfirmados",
        "protect-level-sysop": "Permitir só aos administradores",
+       "protect-summary-desc": "[$1=$2] ($3)",
        "protect-summary-cascade": "protección en serie",
        "protect-expiring": "remata o $2 ás $3 (UTC)",
        "protect-expiring-local": "caduca o $1",
        "undelete-error-long": "Atopáronse erros ao desfacer a eliminación do ficheiro:\n\n$1",
        "undelete-show-file-confirm": "Está seguro de querer ver unha revisión borrada do ficheiro \"<nowiki>$1</nowiki>\" do día $2 ás $3?",
        "undelete-show-file-submit": "Si",
+       "undelete-revision-row2": "$1 ($2) $3 . . $4 $5 $6 $7 $8",
        "namespace": "Espazo de nomes:",
        "invert": "Inverter a selección",
        "tooltip-invert": "Marque esta caixa para agochar os cambios nas páxinas pertencentes ao espazo de nomes seleccionado (e o espazo de nomes asociado, se escolleu a opción)",
        "sp-contributions-uploads": "cargas",
        "sp-contributions-logs": "rexistros",
        "sp-contributions-talk": "conversa",
-       "sp-contributions-userrights": "xestión dos dereitos do usuario",
+       "sp-contributions-userrights": "xestión dos dereitos {{GENDER:$1|do usuario|da usuaria}}",
        "sp-contributions-blocked-notice": "Este usuario está bloqueado. Velaquí está a última entrada do rexistro de bloqueos, por se quere consultala:",
        "sp-contributions-blocked-notice-anon": "Este enderezo IP está bloqueado.\nVelaquí está a última entrada do rexistro de bloqueos, por se quere consultala:",
        "sp-contributions-search": "Busca de contribucións",
        "autoblocklist-submit": "Procura",
        "autoblocklist-legend": "Listar autobloqueos",
        "autoblocklist-localblocks": "{{PLURAL:$1|Autobloqueo local|Autobloqueos locais}}",
+       "autoblocklist-total-autoblocks": "Número total de bloques automáticos: $1",
        "autoblocklist-empty": "A lista de autobloqueos está baleira.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Outro autobloqueo|Outros autobloqueos}}",
        "ipblocklist": "Usuarios bloqueados",
        "tooltip-pt-mycontris": "Lista das súas contribucións",
        "tooltip-pt-anoncontribs": "Unha lista das modificacións feitas desde este enderezo IP",
        "tooltip-pt-login": "Recoméndaselle rexistrarse, se ben non é obrigatorio",
+       "tooltip-pt-login-private": "Precisa conectarse para usa esta wiki",
        "tooltip-pt-logout": "Saír ao anonimato",
        "tooltip-pt-createaccount": "Recoméndaselle crear unha conta e acceder ao sistema, se ben non é obrigatorio",
        "tooltip-ca-talk": "Conversa acerca do contido desta páxina",
        "tooltip-preferences-save": "Gardar as preferencias",
        "tooltip-summary": "Escriba un breve resumo",
        "interlanguage-link-title": "$1 – $2",
+       "interlanguage-link-title-nonlang": "$1 – $2",
        "common.css": "/** O CSS que se coloque aquí será aplicado a todas as aparencias */",
        "print.css": "/* O CSS que se coloque aquí afectará ás impresións */",
        "noscript.css": "/* O CSS que se coloque aquí afectará aos usuarios co JavaScript desactivado */",
        "group-autoconfirmed.css": "/* O CSS que se coloque aquí afectará soamente aos usuarios autoconfirmados */",
+       "group-user.css": "/* Os estilos CSS colocados aquí aplicaranse a tódolos usuarios rexistrados */",
        "group-bot.css": "/* O CSS que se coloque aquí afectará soamente aos bots */",
        "group-sysop.css": "/* O CSS que se coloque aquí afectará soamente aos administradores */",
        "group-bureaucrat.css": "/* O CSS que se coloque aquí afectará soamente aos burócratas */",
        "common.js": "/* Calquera JavaScript que haxa aquí será cargado para todos os usuarios en cada páxina que vexan. */",
        "group-autoconfirmed.js": "/* Calquera JavaScript que haxa aquí será cargado soamente para os usuarios autoconfirmados */",
+       "group-user.js": "/* Calquera código JavaScript escrito aquí cargarase para tódolos usuarios rexistrados */",
        "group-bot.js": "/* Calquera JavaScript que haxa aquí será cargado soamente para os bots */",
        "group-sysop.js": "/* Calquera JavaScript que haxa aquí será cargado soamente para os administradores */",
        "group-bureaucrat.js": "/* Calquera JavaScript que haxa aquí será cargado soamente para os burócratas */",
        "anonymous": "{{PLURAL:$1|Usuario anónimo|Usuarios anónimos}} de {{SITENAME}}",
        "siteuser": "$1 de {{SITENAME}}",
        "anonuser": "o usuario anónimo $1 de {{SITENAME}}",
-       "lastmodifiedatby": "A última modificación desta páxina foi o $1 ás $2 por $3.",
+       "lastmodifiedatby": "A última edición desta páxina foi o $1 ás $2 por $3.",
        "othercontribs": "Baseado no traballo feito por $1.",
        "others": "outros",
        "siteusers": "{{PLURAL:$2|{{GENDER:$1|o usuario|a usuaria}}|os usuarios}} $1 de {{SITENAME}}",
        "pageinfo-few-watchers": "Menos de $1 {{PLURAL:$1|vixiante|vixiantes}}",
        "pageinfo-few-visiting-watchers": "Pode haber, ou non, un usuario que vixía páxinas visitando as edicións recentes",
        "pageinfo-redirects-name": "Número de redireccións cara a esta páxina",
+       "pageinfo-redirects-value": "$1",
        "pageinfo-subpages-name": "Subpáxinas desta páxina",
        "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|redirección|redireccións}}; $3 {{PLURAL:$3|non-redirección|non-redireccións}})",
        "pageinfo-firstuser": "Creador da páxina",
        "mediawarning": "'''Aviso:''' Este tipo de ficheiro pode conter código malicioso.\nO seu sistema pode quedar comprometido se o executa.",
        "imagemaxsize": "Límite de tamaño das imaxes:<br />''(nas páxinas de descrición de ficheiros)''",
        "thumbsize": "Tamaño da miniatura:",
+       "widthheight": "$1 × $2",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|páxina|páxinas}}",
        "file-info": "tamaño do ficheiro: $1; tipo MIME: $2",
        "file-info-size": "$1 × $2 píxeles; tamaño do ficheiro: $3; tipo MIME: $4",
        "file-info-png-frames": "$1 {{PLURAL:$1|fotograma|fotogramas}}",
        "file-no-thumb-animation": "'''Nota: Debido a algunhas limitacións técnicas, non se ve a animación das miniaturas deste ficheiro.'''",
        "file-no-thumb-animation-gif": "'''Nota: Debido a algunhas limitacións técnicas, non se ve a animación das miniaturas das imaxes GIF de alta resolución como este ficheiro.'''",
-       "newimages": "Galería de imaxes novas",
+       "newimages": "Galería de ficheiros novos",
        "imagelisttext": "A continuación móstrase unha lista de '''$1''' {{PLURAL:$1|ficheiro|ficheiros}} ordenados $2.",
        "newimages-summary": "Esta páxina especial mostra os últimos ficheiros cargados.",
        "newimages-legend": "Filtro",
        "newimages-label": "Nome do ficheiro (ou parte del):",
        "newimages-user": "Enderezo IP ou nome de usuario",
+       "newimages-newbies": "Mostrar só as contribucións das contas de usuario novas",
        "newimages-showbots": "Mostrar as cargas feitas por bots",
        "newimages-hidepatrolled": "Agochar as subidas patrulladas",
+       "newimages-mediatype": "Tipo de ficheiro multimedia",
        "noimages": "Non hai imaxes que mostrar.",
        "gallery-slideshow-toggle": "Intercambiar as miniaturas",
        "ilsubmit": "Procurar",
        "bydate": "por data",
        "sp-newimages-showfrom": "Mostrar os novos ficheiros comezando polo $1 ás $2",
+       "video-dims": "$1, $2 × $3",
+       "seconds-abbrev": "$1 s",
        "minutes-abbrev": "$1 min",
+       "hours-abbrev": "$1 h",
+       "days-abbrev": "$1 d",
        "seconds": "{{PLURAL:$1|$1 segundo|$1 segundos}}",
        "minutes": "{{PLURAL:$1|$1 minuto|$1 minutos}}",
        "hours": "{{PLURAL:$1|$1 hora|$1 horas}}",
        "metadata-expand": "Mostrar os detalles",
        "metadata-collapse": "Agochar os detalles",
        "metadata-fields": "Os campos de metadatos listados nesta mensaxe incluiranse na páxina da imaxe ao contraer a táboa dos metadatos.\nOs demais agocharanse por omisión.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-langitem": "<strong>$2:</strong> $1",
+       "metadata-langitem-default": "$1",
        "exif-imagewidth": "Ancho",
        "exif-imagelength": "Alto",
        "exif-bitspersample": "Bits por compoñente",
        "exif-exposuretime": "Tempo de exposición",
        "exif-exposuretime-format": "$1 segundos ($2)",
        "exif-fnumber": "Número f",
+       "exif-fnumber-format": "f/$1",
        "exif-exposureprogram": "Programa de exposición",
        "exif-spectralsensitivity": "Sensibilidade espectral",
        "exif-isospeedratings": "Relación de velocidade ISO",
        "exif-lightsource": "Fonte da luz",
        "exif-flash": "Flash",
        "exif-focallength": "Lonxitude focal",
+       "exif-focallength-format": "$1 mm",
        "exif-subjectarea": "Área do suxeito",
        "exif-flashenergy": "Enerxía do flash",
        "exif-focalplanexresolution": "Resolución X do plano focal",
        "exif-gpsareainformation": "Nome da área GPS",
        "exif-gpsdatestamp": "Data do GPS",
        "exif-gpsdifferential": "Corrección diferencial do GPS",
+       "exif-coordinate-format": "$1° $2′ $3″ $4",
        "exif-jpegfilecomment": "Comentario do ficheiro JPEG",
        "exif-keywords": "Palabras clave",
        "exif-worldregioncreated": "Rexión do mundo onde se tirou a foto",
        "exif-personinimage": "Persoa retratada",
        "exif-originalimageheight": "Altura da imaxe antes de ser cortada",
        "exif-originalimagewidth": "Ancho da imaxe antes de ser cortada",
+       "exif-contact-value": "$1\n\n$2\n<div class=\"adr\">\n$3\n\n$4, $5, $6 $7\n</div>\n$8",
+       "exif-subjectnewscode-value": "$2 ($1)",
        "exif-compression-1": "Sen comprimir",
        "exif-compression-2": "CCITT Grupo 3 Lonxitude de codificación unidimensional Huffman modificada",
        "exif-compression-3": "CCITT Grupo 3 codificación de fax",
        "exif-compression-4": "CCITT Grupo 4 codificación de fax",
        "exif-compression-6": "JPEG (vello)",
+       "exif-compression-7": "JPEG",
+       "exif-compression-34712": "JPEG2000",
        "exif-copyrighted-true": "Con dereitos de autoría",
        "exif-copyrighted-false": "Dereitos de autoría non definidos",
+       "exif-photometricinterpretation-0": "Branco e negro (branco é 0)",
        "exif-photometricinterpretation-1": "Negro e branco (negro é 0)",
+       "exif-photometricinterpretation-2": "RGB",
+       "exif-photometricinterpretation-4": "Máscara de transparencia",
+       "exif-photometricinterpretation-5": "Separados (Probablemente CMYK)",
+       "exif-photometricinterpretation-32803": "Matriz de filtro de cor",
        "exif-unknowndate": "Data descoñecida",
        "exif-orientation-1": "Normal",
        "exif-orientation-2": "Volteada horizontalmente",
        "exif-orientation-8": "Rotada 90° en sentido horario",
        "exif-planarconfiguration-1": "formato de paquete de píxeles",
        "exif-planarconfiguration-2": "formato de planos",
+       "exif-xyresolution-i": "$1 ppp",
        "exif-colorspace-65535": "Sen calibrar",
        "exif-componentsconfiguration-0": "non existe",
        "exif-exposureprogram-0": "Sen definir",
        "confirmrecreate": "O usuario [[User:$1|$1]] ([[User talk:$1|conversa]]) {{GENDER:$1|borrou}} esta páxina despois de que vostede comezase a editala, achegando o seguinte motivo:\n: <em>$2</em>\nPor favor, confirme que realmente quere recrear esta páxina.",
        "confirmrecreate-noreason": "O usuario [[User:$1|$1]] ([[User talk:$1|conversa]]) {{GENDER:$1|borrou}} esta páxina despois de que vostede comezase a editala. Por favor, confirme que realmente quere recrear esta páxina.",
        "recreate": "Recrear",
+       "confirm-purge-title": "Purgar esta páxina",
        "confirm_purge_button": "Aceptar",
        "confirm-purge-top": "Quere limpar a memoria caché desta páxina?",
        "confirm-purge-bottom": "Ao purgar unha páxina, límpase a memoria caché e isto obriga tamén a que apareza a versión máis recente da páxina.",
        "confirm-unwatch-top": "Quere eliminar esta páxina da lista de vixilancia?",
        "confirm-rollback-button": "Aceptar",
        "confirm-rollback-top": "Quere reverter as edicións desta páxina?",
+       "semicolon-separator": ";&#32;",
+       "comma-separator": ",&#32;",
        "colon-separator": ":&#32;",
+       "pipe-separator": "&#32;|&#32;",
+       "word-separator": "&#32;",
+       "ellipsis": "...",
+       "percent": "$1%",
+       "parentheses": "($1)",
+       "brackets": "[$1]",
        "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← páxina anterior",
        "imgmultipagenext": "páxina seguinte →",
        "imgmultigo": "Ir!",
        "imgmultigoto": "Ir á páxina $1",
+       "img-lang-opt": "$2 ($1)",
        "img-lang-default": "(lingua por defecto)",
        "img-lang-info": "Renderizar esta imaxe en $1. $2",
        "img-lang-go": "Mostrar",
        "autoredircomment": "Redirixida cara a \"[[$1]]\"",
        "autosumm-new": "Nova páxina: \"$1\"",
        "autosumm-newblank": "A páxina creouse sen contido",
+       "size-bytes": "$1 {{PLURAL:$1|byte|bytes}}",
        "size-kilobytes": "$1 kB",
+       "size-megabytes": "$1 MB",
+       "size-gigabytes": "$1 GB",
+       "size-terabytes": "$1 TB",
+       "size-petabytes": "$1 PB",
+       "size-exabytes": "$1 EB",
+       "size-zetabytes": "$1 ZB",
+       "size-yottabytes": "$1 YB",
+       "size-pixel": "$1 {{PLURAL:$1|píxel|píxeles}}",
+       "bitrate-bits": "$1 bps",
+       "bitrate-kilobits": "$1 kbps",
+       "bitrate-megabits": "$1 Mbps",
+       "bitrate-gigabits": "$1 Gbps",
+       "bitrate-terabits": "$1 Tbps",
+       "bitrate-petabits": "$1 Pbps",
+       "bitrate-exabits": "$1 Ebps",
+       "bitrate-zetabits": "$1 Zbps",
+       "bitrate-yottabits": "$1 Ybps",
        "lag-warn-normal": "Pode que os cambios feitos {{PLURAL:$1|no último segundo|nos últimos $1 segundos}} non aparezan nesta lista.",
        "lag-warn-high": "Debido a unha gran demora do servidor da base de datos, pode que nesta lista non aparezan os cambios feitos {{PLURAL:$1|no último segundo|nos últimos $1 segundos}}.",
        "watchlistedit-normal-title": "Editar a lista de vixilancia",
        "watchlisttools-view": "Ver as modificacións relevantes",
        "watchlisttools-edit": "Ver e editar a lista de vixilancia",
        "watchlisttools-raw": "Editar a lista de vixilancia simple",
+       "iranian-calendar-m1": "Farvardin",
+       "iranian-calendar-m2": "Ordibehesht",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|conversa]])",
        "timezone-local": "Local",
        "duplicate-defaultsort": "<strong>Aviso:</strong> A clave de ordenación por defecto \"$2\" anula a clave de ordenación anterior por defecto \"$1\".",
        "tags-create-reason": "Motivo:",
        "tags-create-submit": "Crear",
        "tags-create-no-name": "Debe especificar unha páxina.",
-       "tags-create-invalid-chars": "Os nomes das etiquetas non poden conter nin comas (<code>,</code>) nin barras (<code>/</code>).",
+       "tags-create-invalid-chars": "Os nomes das etiquetas non poden conter nin comas (<code>,</code>), barras verticais (<code>|</code>), nin barras (<code>/</code>).",
        "tags-create-invalid-title-chars": "As páxinas non deben conter caracteres que non se poidan usar nos títulos das páxinas.",
        "tags-create-already-exists": "A páxina \"$1\" xa existe.",
        "tags-create-warnings-above": "{{PLURAL:$2|Atopouse o seguinte erro|Atopáronse os seguintes erros}} ao intentar crear a etiqueta \"$1\":",
        "htmlform-user-not-valid": "\"<strong>$1</strong>\" non é un nome de usuario válido.",
        "logentry-delete-delete": "$1 {{GENDER:$2|borrou}} a páxina \"$3\"",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|eliminou}} a redirección $3 sobreescribíndoa",
-       "logentry-delete-restore": "$1 {{GENDER:$2|restaurou}} a páxina \"$3\"",
+       "logentry-delete-restore": "$1 {{GENDER:$2|restaurou}} a páxina \"$3\" ($4)",
+       "logentry-delete-restore-nocount": "$1 {{GENDER:$2|restaurou}} a páxina $3",
        "restore-count-revisions": "{{PLURAL:$1|1 revisión|$1 revisións}}",
        "restore-count-files": "{{PLURAL:$1|1 ficheiro|$1 ficheiros}}",
        "logentry-delete-event": "$1 {{GENDER:$2|mudou}} a visibilidade {{PLURAL:$5|dunha entrada|de $5 entradas}} do rexistro de $3: $4",
        "mw-widgets-titleinput-description-redirect": "redirección cara a $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Engadir unha categoría...",
        "mw-widgets-usersmultiselect-placeholder": "Engadir máis...",
+       "date-range-from": "Dende a data:",
+       "date-range-to": "Ata a data:",
        "sessionmanager-tie": "Non pode combinar peticións múltiples de tipos de autenticación: $1.",
        "sessionprovider-generic": "sesións $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sesións baseadas nas cookies",
        "pageid": "identificador de páxina $1",
        "rawhtml-notallowed": "As marcas &lt;html&gt; non poden usarse fóra das páxinas normais.",
        "gotointerwiki": "Deixando {{SITENAME}}",
-       "gotointerwiki-invalid": "O título especificado non era válido."
+       "gotointerwiki-invalid": "O título especificado non é válido.",
+       "gotointerwiki-external": "Vai sair de {{SITENAME}} para visitar [[$2]], que é un sitio web externo.\n\n'''[$1 Continuar en $1]'''",
+       "undelete-cantedit": "Non pode anular o borrado desta páxina porque non ten permisos para editar esta páxina.",
+       "undelete-cantcreate": "Non pode anular o borrado desta páxina xa que non hai ningunha páxina con ese nome e non ten permisos para creala.",
+       "pagedata-title": "Datos da páxina",
+       "pagedata-text": "Esta páxina porporciona unha interface de datos para páxinas. Por favor, proporcione o título da páxina na URL, usando a sintaxe de subpáxinas.\n* A negociación de contido aplícase baseándose na cabeceira Accept do seu cliente. Isto significa que os datos da páxina serán proporcionados no formato preferido polo seu cliente.",
+       "pagedata-not-acceptable": "Non se atopou ningún formato correspondente. Tipos MIME soportadosː $1",
+       "pagedata-bad-title": "Título non válido: $1."
 }
index 8176c9c..d521606 100644 (file)
        "anontalk": "گب",
        "navigation": "گرأخؤردن",
        "and": "&#32;ؤ",
-       "qbfind": "ىاتن",
-       "qbedit": "دچینواچین",
-       "qbpageoptions": "اي ولگ",
        "faq": "رايج سۊالؤن",
-       "faqpage": "Project:رايج سۊالؤن",
        "actions": "کۊنۊشؤن",
        "namespaces": "نؤمفضاؤن",
        "variants": "گۊىشؤن",
        "view-foreign": "دئن $1ˇ ميئن",
        "edit": "دچينواچين",
        "create": "چاگۊدن",
-       "editthispage": "اي ولگه دچينواچين بکۊن",
-       "create-this-page": "اي ولگه چاکۊن",
        "delete": "حذف",
-       "deletethispage": "اي ولگه پاکأ کۊن.",
-       "undeletethispage": "اي ولگه احيا بکۊن.",
        "protect": "پأسن",
        "protect_change": "تغيير",
-       "protectthispage": "اي ولگه بپا",
        "unprotect": "پأسنه عوضأؤدن",
-       "unprotectthispage": "اي ولگˇ پأسنه عوضأکۊن",
        "newpage": "تازه ولگ",
        "talkpagelinktext": "گب",
        "specialpage": "خاصˇ ولگ",
        "talk": "گب",
        "views": "بدئرؤن",
        "toolbox": "أبزارؤن",
-       "userpage": "کارگيرˇ ولگه دئن",
        "imagepage": "فايلˇ ولگه دئن",
        "categorypage": "جرگه ولگه دئن",
        "otherlanguages": "باخي زوانؤنˇ جي",
        "redirectedfrom": "(مسير عوضاؤدن $1 أجي)",
+       "redirectpagesub": "تغييرمسيرˇ ولگ",
        "redirectto": "تغييرمسير به:",
        "lastmodifiedat": "اي ولگ آخري گرش $1ˇ ميئن ساعت $2 دچينواچين بۊبؤ.",
        "protectedpage": "بپأسه ولگ",
        "right-sendemail": "باخي کارگيرؤنه ايمىل بخسأن",
        "newuserlogpage": "کارگير چاگۊدنˇ سياهه",
        "newuserlogpagetext": "اي ىکته سياهه' کارگير چاگۊدنؤنˇ جي",
+       "action-edit": "اي ولگه دچينواچين بکۊن",
        "action-createaccount": "اي کارگيري حيسابه چاکۊن",
        "action-move-categorypages": "جرگه ولگؤنه جابجا گۊدن",
        "action-block": "اي کارگيرˇ دچينواچينˇ دسفأرسه دبۊد",
        "rcshowhidebots-show": "نۊشؤن دأن",
        "rcshowhidebots-hide": "دۊخۊسان",
        "rcshowhideliu": "$1 ثبتˇ نام بؤده کارگيرؤن",
+       "rcshowhideliu-show": "نۊشؤن دأن",
        "rcshowhideliu-hide": "دۊخۊسان",
        "rcshowhideanons": "$1 ناشناس کارگيرؤن",
        "rcshowhideanons-show": "نۊشؤن دأن",
        "rcshowhidemine": "$1 مي دچينواچينؤن",
        "rcshowhidemine-show": "نۊشؤن دأن",
        "rcshowhidemine-hide": "دۊخۊسان",
-       "rclinks": "آخري $1ته تغییره آخري $2 رۊزˇ ميئن نۊشؤن دأن<br />$3",
+       "rclinks": "آخري $1ته تغییره آخري $2 رۊزˇ ميئن نۊشؤن دأن",
        "diff": "تؤفير",
        "hist": "تاريخ",
        "hide": "دۊخۊسان",
        "file-anchor-link": "فاىل",
        "filehist": "فاىلˇ تاريخ",
        "filehist-help": "تاريخ/زمتؤنˇ سر کيليک بکۊنين تا اۊ تاريخ/زمتˇ نۊسخه' بىنين.",
+       "filehist-revert": "واگرداني",
        "filehist-current": "ألؤنˇ نۊسخه",
        "filehist-datetime": "تاريخ/زمت",
        "filehist-thumb": "کلˇ أنگۊشتي",
        "listusers": "کارگيرؤنˇ ليست",
        "newpages": "تازه ولگؤن",
        "newpages-username": "کارگيري نؤم:",
+       "move": "جابجا گۊدن",
        "unusedcategoriestext": "اي جرگهٰ‌ن درن ولي هيته وانيويسؤن ىا باخيˇ جرگهٰ‌ن اۊشؤنه کارأنگينن.",
        "suppress": "دۊخۊسانگري",
        "booksources": "کيتابˇ سربسؤن",
        "trackingcategories-desc": "جرگه گۊنجاىشˇ ملاک",
        "hidden-category-category-desc": "جرگه خؤ ولگˇ مئن <code><nowiki>__HIDDENCAT__</nowiki></code> شامل بنه، کي نۊگذارنه کي جرگه خالؤنˇ جعبه پيشفرض ولگؤنˇ مئن نۊشؤن بدأببۊن.",
        "trackingcategories-disabled": "جرگه دئه کار نۊکؤنه",
+       "emailuser": "اي کارگيره ايميل گۊدن",
        "emailuser-title-target": "اي {{GENDER:$1|کارگيره}} ايمىل بخسأن.",
        "usermaildisabled": "نشأنه کارگير ئبه ايمىل خسأنئن.",
        "usermaildisabledtext": "شمه اي ويکي مئن مننين باخي کارگيرؤنه ايمىل بخسأنين",
        "anoncontribs": "مۊشارکتؤن",
        "month": "اي ماه مئن (ؤ دأميشک):",
        "year": "اي سالˇ مئن (ؤ دأميشک):",
+       "sp-contributions-uploads": "جؤرأکشئنؤن",
        "sp-contributions-talk": "گب",
+       "sp-contributions-submit": "وامج",
        "whatlinkshere": "هرچي خال ببؤ ائره",
        "whatlinkshere-title": "ولگؤني گه «$1»ˇ أمرأ خال دأنن",
        "whatlinkshere-page": "ولگ:",
        "tooltip-ca-viewsource": "اي ولگ بپاسأکه.\nتؤنين اينˇ سربسه بينين",
        "tooltip-ca-history": "اي ولگˇ قديمي نۊسخه'ن",
        "tooltip-ca-protect": "أ ولگه بپا",
+       "tooltip-ca-delete": "اي ولگه پاکأ کۊن",
        "tooltip-ca-move": "اي ولگه جابجا گۊدن",
        "tooltip-ca-watch": "اي ولگه علاوه بکۊن تي پىگيري ليسته",
        "tooltip-search": "{{SITENAME}} مئن وامج",
        "tooltip-diff": "تغييرؤني گه شۊمۊ وؤتˇ ميئن بدأينˇ نۊشؤن دأن",
        "tooltip-rollback": "\"پساوگردان\" اي ولگˇ آخري دچينواچينگرˇ دچينواچينؤنه ىکته تنگۊلى أجي خؤنثا کؤنه.",
        "tooltip-summary": "فيچالسه وارد بکۊنين",
+       "pageinfo-header-edits": "تاريخچهٰ دچينواچين گۊدن",
        "pageinfo-header-restrictions": "ولگه پأسن",
+       "pageinfo-robot-index": "مؤجاز",
+       "pageinfo-firstuser": "ولگˇ چاکۊنکس",
        "pageinfo-hidden-categories": "جخۊته {{PLURAL:$1| جرگه|جرگه}} ( $1 )",
        "pageinfo-toolboxlink": "ولگˇ اطلاعات",
        "pageinfo-category-info": "جرگه اطلاعات",
        "namespacesall": "همه",
        "monthsall": "همه",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|گب]])",
+       "redirect-submit": "بۊشۊ",
+       "redirect-file": "فايلˇ نؤم",
        "specialpages": "خاصˇ ولگؤن",
        "specialpages-group-login": "ديرين/ثبتˇ نؤم",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|تگ|تگؤن}}]]: $2)",
index b9e8b50..3bf56e7 100644 (file)
        "rcshowhideliu": "$1 puruhára ohejáva teraguapy",
        "rcshowhideanons": "$1 puruhára ojekuaa'ỹva",
        "rcshowhidemine": "$1 che jehaijey",
-       "rclinks": "Ápe ojehechakuaa umi $1 oñemoambue pyahúva $2 ára ohasava'ekuépe.<br />$3",
+       "rclinks": "Ápe ojehechakuaa umi $1 oñemoambue pyahúva $2 ára ohasava'ekuépe.",
        "hide": "toñemi",
        "show": "hechauka",
        "newsectionsummary": "Pyahuvore: /* $1 */",
index a12ef51..eb67204 100644 (file)
        "password-change-forbidden": "ह्या विकीचेर गुपीत उतरां बदलूंक शकनात",
        "login": "सत्रारंभ करात",
        "nav-login-createaccount": "सत्रारंब/खातें उगडात",
-       "userlogin": "सत्रारंभ करात/खातें उगडात",
-       "userloginnocreate": "लॉग इन",
        "logout": "सत्र शेवट",
        "userlogout": "सत्र शेवट",
        "notloggedin": "लॉग इन ना",
        "userlogin-noaccount": "तुमचें खातें ना?",
        "userlogin-joinproject": "{{SITENAME}} हाचो वांगडी ज़ा",
-       "nologin": "तुमचें खातें ना? $1.",
-       "nologinlink": "खातें तयार करात",
        "createaccount": "खातें रोच",
-       "gotaccount": " आदीं सावन तुजें खातें आसा?$1.",
-       "gotaccountlink": "लॉग इन",
-       "userlogin-resetlink": "तुजो लॉग इन तपशील विसरलें?",
        "userlogin-resetpassword-link": "गुपितउतर विसरला?",
        "userlogin-helplink2": "सत्रारंभ करपाक आदार कर",
        "userlogin-createanother": "दुसरें खातें तयार कर",
        "createacct-email-ph": "तुमचो इमेल पत्तो घालात",
        "createacct-another-email-ph": "तुमचो इमेल पत्तो घालात",
        "createacct-realname": "खरें नांव (पर्यायी)",
-       "createaccountreason": "कारण:",
        "createacct-reason": "कारण",
        "createacct-reason-ph": "तूं दुसरें खातें कित्याक उगडटात",
        "createacct-submit": "तुमचे खातें रोचात",
        "rcshowhidemine": "$1 म्हजें संपादन आंकडे",
        "rcshowhidemine-show": "दाखयात",
        "rcshowhidemine-hide": "लिपयात",
-       "rclinks": "फाटल्या $2 दिसांनी जाल्लो $1 बदल दाखयात<br />$3",
+       "rclinks": "फाटल्या $2 दिसांनी जाल्लो $1 बदल दाखयात",
        "diff": "फरक",
        "hist": "इति",
        "hide": "लिपयात",
index 9283234..3ce34b0 100644 (file)
        "password-change-forbidden": "Tujean hea wikicher gupitutor bodlunk zaina.",
        "login": "Sotroromb kor",
        "nav-login-createaccount": "Sotrrombh kor / khatem roch",
-       "userlogin": "Sotrrombh kor / khatem roch",
-       "userloginnocreate": "Sotrorombh",
        "logout": "Bhair podd",
        "userlogout": "Sotracho xevott",
        "notloggedin": "Sotrorombh korunk nai",
        "userlogin-noaccount": "Tuje kode khatem na?",
        "userlogin-joinproject": "{{SITENAME}}-hacho vangdi za",
-       "nologin": "Tuje kodde khatem na? $1.",
-       "nologinlink": "Novem khatem ughodd",
        "createaccount": "Khatem roch",
-       "gotaccount": "Tuje kodem khatem asa? $1.",
-       "gotaccountlink": "Sotrorombh kor",
-       "userlogin-resetlink": "Sotrorombh korpacheo bariksai visorlai?",
        "userlogin-resetpassword-link": "Gupitutor visorlo?",
        "userlogin-helplink2": "Sotrorombh korunk adar",
        "userlogin-createanother": "Dusrem khatem roch",
        "createacct-email-ph": "Tuzo email potto boroi",
        "createacct-another-email-ph": "Email potto boroi",
        "createacct-realname": "Khorem nanv (Soktichem nhoi)",
-       "createaccountreason": "Karonn:",
        "createacct-reason": "Karonn",
        "createacct-reason-ph": "Tum dusrem khatem kiteak rochtai",
        "createacct-submit": "Tujem khatem roch",
        "rcshowhidemine": "Mhojeo bodlopam $1",
        "rcshowhidemine-show": "Dakhoi",
        "rcshowhidemine-hide": "Lipoi",
-       "rclinks": "Xevtiche $2 disanim zal'le $1 bodlopam dakhoi<br />$3",
+       "rclinks": "Xevtiche $2 disanim zal'le $1 bodlopam dakhoi",
        "diff": "frk",
        "hist": "iti",
        "hide": "Lipoi",
index a356550..65a720d 100644 (file)
                        "Amire80"
                ]
        },
-       "tog-underline": "Garisiyi totibawa pranala",
-       "tog-hideminor": "Wanto'a u iluba ngo'idi to'u bohu",
-       "tog-hidepatrolled": "Wanto'a u iluba patroli to'u bohu",
-       "tog-newpageshidepatrolled": "Wanto'a halaamani patroli lonto daputari halaamani bohu",
-       "tog-hidecategorization": "Wanto'a tayadu halaamani",
-       "tog-extendwatchlist": "Duhengi daputari he'awasiyalo u mopobilohu nga'amila ulo ubawa, dila bo ubohu",
-       "tog-usenewrc": "Popotayade u iluba to bibilohu lu'ubawa baharu wawu daputari he awasiyalo berdasarkan halaamani",
+       "tog-underline": "Garisiyi totibawa wumbuta",
+       "tog-hideminor": "Wanto'a u biloli'a ngo'idi to'u lobohuwa",
+       "tog-hidepatrolled": "Wanto'a u biloli'a lo patroli to'u lobohuwa",
+       "tog-newpageshidepatrolled": "Wanto'a halaman patroli lonto daputari halaman bohu",
+       "tog-hidecategorization": "Wanto'a tayadu halaman",
+       "tog-extendwatchlist": "Bu'ade daputari he'awasiyalo mopobilohu nga'amila u loboli'a, diila bo ubohu",
+       "tog-usenewrc": "Tayade u biloli'o to bibilohu halaman lobohuwa wawu daputari he awasiyalo",
        "tog-numberheadings": "Otomatis modulade nomoro",
-       "tog-showtoolbar": "Mopobilohe pilakasi ponguba",
-       "tog-editondblclick": "Monguba halaamani mo klik po'oluwo",
-       "tog-editsectiononrightclick": "Popohunawa monguba tayadu wolo mengeklik olowala to judul lo tayadu",
-       "tog-watchcreations": "Duhengi halamani u pilohutu'u wawu berkas u diletohu'u ode daputari he awasiya'u",
-       "tog-watchdefault": "Duhengi halamani wawu berkas u iluba'u ode daputari he awasiya'u",
-       "tog-watchmoves": "Duhengi halamani wawu berkas u pilinda'u ode daputari he awasiya'u",
-       "tog-watchdeletion": "Duhengi halamani wawu berkas u yilulutu'u ode daputari he awasiya'u",
+       "tog-showtoolbar": "Popobilohe pilakasi pomoli'o",
+       "tog-editondblclick": "Boli'a halaman lo klik po'oluwo",
+       "tog-editsectiononrightclick": "Popohunawa momoli'a tayadu wolo mengeklik olowala to judul lo tayadu",
+       "tog-watchcreations": "Duhengi halaman pilohutu'u wawu berkas diletohu ode daputari he awasiyalo",
+       "tog-watchdefault": "Duhengi halaman wawu berkas biloli'o ode daputari he awasiya'u",
+       "tog-watchmoves": "Duhengi halaman wawu berkas hileyi'u ode daputari he awasiya'u",
+       "tog-watchdeletion": "Duhengi halaman wawu berkas yilulutu'u ode daputari he awasiya'u",
        "tog-watchuploads": "Duhengi berkas bohu u diletohu'u to daputari he'awasiyalo",
        "tog-watchrollback": "Duhengi halamani u pilohuwalingu'u ode daputari he awasiya'u",
        "tog-minordefault": "Tandai nga'amila odelo iluba keke'ingo secara baku",
        "october": "Oktober",
        "november": "Nopember",
        "december": "Desember",
-       "january-gen": "Januwari",
-       "february-gen": "Peburuwari",
+       "january-gen": "Januari",
+       "february-gen": "Pebruari",
        "march-gen": "Maret",
        "april-gen": "April",
-       "may-gen": "Meyi",
+       "may-gen": "Mei",
        "june-gen": "Juni",
        "july-gen": "Juli",
        "august-gen": "Agustus",
        "oct": "Okt",
        "nov": "Nop",
        "dec": "Des",
-       "january-date": "$1 Yanuari",
+       "january-date": "$1 Januari",
        "february-date": "$1 Pebruari",
        "march-date": "$1 Maret",
        "april-date": "$1 April",
        "category-media-header": "Media to delomo kategori \"$1\"",
        "category-empty": "<em>Kategori botiye ja o halaman meyalo media.<em>",
        "hidden-categories": "{{PLURAL:$1|Tayadu wanto-wanto'o}}",
-       "hidden-category-category": "Kategori wanto-wanto'o",
+       "hidden-category-category": "Kategori wanto-wanto'o",
        "category-subcat-count": "{{PLURAL:$2|Kategori boti woluwo subkategori|Kategori boti woluwo {{PLURAL:$1|subkategori|$1 subkategori}} lonto nga'amila $2.}}",
        "category-subcat-count-limited": "Kategori boti woluwo {{PLURAL:$1|subkategori|$1 subkategori}}",
        "category-article-count": "{{PLURAL:$2|Kategori botiye o tuwango halaman.|Woluwo {{PLURAL:$|$1 halaman}} to delomo kategori, lonto $2 nga'amila.}}",
        "morenotlisted": "Daputari boti kira-kira diipo ganapu",
        "mypage": "Halaamani",
        "mytalk": "Lo'iya",
-       "anontalk": "Bisala",
+       "anontalk": "Lo'iya",
        "navigation": "Navigasi",
        "and": "&#32;wawu",
        "qbfind": "Lolohe",
        "qbbrowse": "Momilohu",
-       "qbedit": "Monguba",
+       "qbedit": "Boli'a",
        "qbpageoptions": "Halaman botiya",
        "qbmyoptions": "Halamani'u",
        "faq": "FAQ",
        "history": "Riwayati lo halaman",
        "history_short": "Riwayati",
        "history_small": "riwayati",
-       "updatedmarker": "iluba to'u nila'o'u pulitiyo",
+       "updatedmarker": "biloli'o to'u bililohe pulitiyo",
        "printableversion": "Persi cetak",
        "permalink": "Wumbuta kakali",
        "print": "Cetaki",
        "unprotectthispage": "ubawa dudaha halaman botiye",
        "newpage": "Halaman bohu",
        "talkpage": "Bisalayi halaman boti",
-       "talkpagelinktext": "bisala",
+       "talkpagelinktext": "lo'iya",
        "specialpage": "Halaman uda'a",
        "personaltools": "Pilaakasi lo hihilawo",
        "articlepage": "Bilohi tuango halaman",
        "redirectedfrom": "Pilobale lonto $1",
        "redirectpagesub": "Halaman pilobaleyalo",
        "redirectto": "Mobale ode",
-       "lastmodifiedat": "Halaman botiye biloli'o pulitiyo $1, $2.",
+       "lastmodifiedat": "Halaman botiye biloli'a pulitiyo $1,to $2.",
        "viewcount": "Halaman botiye ma hilu'o {{PLURAL:$1|$1 kali}}.<br />",
        "protectedpage": "Halaman udaha-daha",
        "jumpto": "Lumanti'a ode:",
        "nstab-image": "Berkas",
        "nstab-mediawiki": "Tahuli",
        "nstab-template": "Templat",
-       "nstab-help": "Halaman tulungi",
+       "nstab-help": "Halaman wubodu",
        "nstab-category": "Kategori",
        "mainpage-nstab": "Halaman bungaliyo",
        "nosuchaction": "Diya'a huhutu boyito",
        "enhancedrc-history": "riwayati",
        "recentchanges": "Boheli loboli'a mola",
        "recentchanges-legend": "Tulawotolo boheli loboli'a mola",
-       "recentchanges-summary": "Mololohe u yilo'ubawa bohu to halaman wiki botiye.",
+       "recentchanges-summary": "Lolohe u boheli loboli'a mola to wiki halaman botiye.",
        "recentchanges-label-newpage": "Momoli'a utiye mohutu halaman bohu",
        "recentchanges-label-minor": "Utiye biloli'o ngo'idi",
        "recentchanges-label-bot": "Lomoli'a utiye kilaraja lo bot",
        "rcshowhidemine": "$1 biloli'u'u",
        "rcshowhidemine-show": "Popobilohe",
        "rcshowhidemine-hide": "Wanto'a",
-       "rclinks": "Popobilohe $1 u yilo'boli'a pulitiyo to delomo $2 dulahu pulitiyo<br />$3",
+       "rclinks": "Popobilohe $1 u yilo'boli'a pulitiyo to delomo $2 dulahu pulitiyo",
        "diff": "ngopohiya",
        "hist": "riwayati",
        "hide": "Wanto'a",
index f9e1384..fd90bda 100644 (file)
        "rcshowhidemine": "$1 𐌼𐌴𐌹𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃",
        "rcshowhidemine-show": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹",
        "rcshowhidemine-hide": "𐌰𐍆𐍆𐌹𐌻𐌷",
-       "rclinks": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐍉𐍃 $1 𐌹𐌽𐌼𐌰𐌹𐌳𐌹𐌽𐌹𐌽𐍃 𐌹𐌽 𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐌰𐌹𐌼 $2 𐌳𐌰𐌲𐌰𐌼 <br />$3",
+       "rclinks": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐍉𐍃 $1 𐌹𐌽𐌼𐌰𐌹𐌳𐌹𐌽𐌹𐌽𐍃 𐌹𐌽 𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐌰𐌹𐌼 $2 𐌳𐌰𐌲𐌰𐌼",
        "diff": "𐌼𐌹𐍃𐍃",
        "hist": "𐍃𐍀𐌹𐌻𐌻",
        "hide": "𐌰𐍆𐍆𐌹𐌻𐌷",
index 99c0a74..91768b1 100644 (file)
@@ -18,7 +18,8 @@
                        "JoostBotman",
                        "Macofe",
                        "Giorgos456",
-                       "Gts-tg"
+                       "Gts-tg",
+                       "RubatoStuf"
                ]
        },
        "tog-underline": "Ὑπογραμμίζειν συνδέσμους:",
        "searcharticle": "Ἰέναι",
        "history": "Αἱ τῆς δέλτου πρότεραι",
        "history_short": "Αἱ πρότεραι",
+       "history_small": "Αἱ πρότεραι",
        "updatedmarker": "αἱ δέλτου ἐνημερώσεις ἀφ’ ὅτε ἐπεσκέφθην αὐτὴν ὑστάτως",
        "printableversion": "Ἐκτυπώσιμος μορφή",
        "permalink": "Σύνδεσμος μόνιμος",
        "create-this-page": "Ποιεῖν τήνδε τὴν δέλτον",
        "delete": "Σβεννύναι",
        "deletethispage": "Διαγράφειν τήνδε τὴν δέλτον",
+       "undeletethispage": "ἐκδιαγράφειν τήνδε τὴν δέλτον",
        "undelete_short": "Ἐπανορθοῦν {{PLURAL:$1|ἕνα μεταγραφὲν|$1 μεταγραφέντα}}",
        "protect": "Φυλάττειν",
        "protect_change": "ἀλλάττειν",
        "talk": "Διάλεξις",
        "views": "Προβολαί",
        "toolbox": "Ἔργαλεῖα",
+       "tool-link-userrights-readonly": "Ὁρᾶν τὰ ὁμάδας {{GENDER:$1|αὐτοῦ|αὐτῆς}}",
        "userpage": "Ὁρᾶν δέλτον χρωμένου",
        "projectpage": "Ἴδε δέλτον ἐγχειρήματος",
        "imagepage": "Ὁρᾶν τῆν δέλτον τοῦ ἀρχείου",
        "externaldberror": "Συνέβη εἴτε σφάλμα τι πιστοποιήσεως τῆς βάσεως δεδομένων εἴτε οὐκ ἔξεστί σοι ἐνημεροῦν τὸν ἐξωτερικὸν λογισμόν σου.",
        "login": "Συνδεῖσθαι",
        "nav-login-createaccount": "Συνδεῖσθαι/λογισμὸν ποιεῖν",
-       "userlogin": "Συνδεῖσθαι/λογισμὸν ποιεῖν",
-       "userloginnocreate": "Συνδεῖσθαι",
        "logout": "Ἐξέρχεσθαι",
        "userlogout": "Ἐξέρχεσθαι",
        "notloggedin": "Οὐ συνδεδεμένος",
        "userlogin-noaccount": "Ἆρα λογισμὸν οὐκ ἔχεις;",
        "userlogin-joinproject": "Μετέχειν {{SITENAME}}",
-       "nologin": "Ἆρα λογισμὸν οὐκ ἔχεις; '''$1'''.",
-       "nologinlink": "Λογισμὸν ποιεῖν",
        "createaccount": "Λογισμὸν ποιεῖν",
-       "gotaccount": "Ἆρα λογισμὸν ἤδη τινὰ ἔχεις; '''$1'''.",
-       "gotaccountlink": "Συνδεῖσθαι",
        "userlogin-resetpassword-link": "Λανθάνεσαι σήμα σοι;",
        "userlogin-helplink2": "Βοήθεια δια σύνδεσιν",
        "createacct-emailoptional": "Ἠλεκτρονική ἀλληλογραφίαν (προαιρετικόν)",
        "createacct-email-ph": "Παρέχειν διεύθυνσην ἤλεκτρονικής ἀλληλογραφίας σου",
        "createaccountmail": "ἠλεκτρονικῇ ἐπιστολῇ",
-       "createaccountreason": "Αἰτία",
        "createacct-submit": "Λογισμὸν ποιεῖν",
        "createacct-benefit-heading": "{{SITENAME}} ποιούται ὐπό ἀνθρώπων ἐσού ώς.",
        "createacct-benefit-body1": "{{PLURAL:$1|μεταγραφή|μεταγραφαί}}",
        "saveprefs": "Γράφειν",
        "restoreprefs": "Ἐπανιστάναι ἁπάσας τὰς προκαθωρισμένας ῥυθμίσεις",
        "prefs-editing": "Τὸ μεταγράφειν",
-       "rows": "Σειραί:",
-       "columns": "Στῆλαι:",
        "searchresultshead": "Ζητεῖν",
        "stub-threshold": "Ἄνω φράγμα διὰ τοῦς <a href=\"#\" class=\"stub\">συνδέσμους πρὸς λείμματα</a> (δυφία):",
        "stub-threshold-disabled": "Ἀπενεργηθέν",
        "userrights-reason": "Αἰτία:",
        "userrights-no-interwiki": "Οὐ κατέχεις τὴν ἄδειαν μεταγραφῆς τῶν δικαιωμάτων χρωμένου ἐν ἄλλοις βίκι.",
        "userrights-nodatabase": "Ἡ βάσις δεδομένων $1 οὐχ ὑπάρχει ἢ οὐκ ἔστι τοπική.",
-       "userrights-nologin": "Δεῖ σε [[Special:UserLogin|συνδεῖσθαι]] μετὰ ἐπιτρόπου λογισμοῦ τινὸς πρὸ τοῦ μεταγράφειν τὰ δικαιώματα χρωμένου.",
-       "userrights-notallowed": "Ὁ λογισμός σου οὐκ ἔχει ἄδειαν τοῦ ὁρίσειν δικαιώματα χρωμένων.",
        "userrights-changeable-col": "Μεταβλητέαι ὁμάδες",
        "userrights-unchangeable-col": "Μὴ μεταβλητέαι ὁμάδες",
        "group": "Ὁμάς:",
        "right-protect": "Ἀλλάττειν κλίμακα προστασίας καὶ μεταγράφειν τὰς φυλαττομένας δέλτους",
        "right-editprotected": "Μεταγράφειν φυλαττομένας δέλτους (ἄνευ διαδοχικῆς προστασίας)",
        "right-editinterface": "Μεταγράφειν τὸ τοῦ χρωμένου περιβάλλον ἀλληλεπιδράσεως",
-       "right-editusercssjs": "Μεταγράφειν ἑτέρων χρωμένων CSS- καὶ JS-ἀρχεῖα",
        "right-editusercss": "Μεταγράφειν ἑτέρων χρωμένων CSS-ἀρχεῖα",
        "right-edituserjs": "Μεταγράφειν ἑτέρων χρωμένων JS-ἀρχεῖα",
        "right-markbotedits": "Σήμανσις μεταγραφῶν οἵπερ ἐπαναφέρθησαν ὡς μεταγραφῶν ὑπ' αὐτομάτων",
        "rcshowhideanons-show": "Δεικνύναι",
        "rcshowhideanons-hide": "Κρύπτειν",
        "rcshowhidepatr": "$1 τὰς περιπολουμένας μεταγραφάς",
+       "rcshowhidepatr-hide": "Κρύπτειν",
        "rcshowhidemine": "$1 μεταγραφαί ἐμού",
        "rcshowhidemine-show": "Δεικνύναι",
        "rcshowhidemine-hide": "Κρύπτειν",
-       "rclinks": "Ἐμφάνισις τῶν τελευταίων $1 ἀλλαγῶν τῷ χρονικῷ διαστήματι τῶν τελευταίων $2 ἡμερῶν <br />$3",
+       "rcshowhidecategorization-hide": "Κρύπτειν",
+       "rclinks": "Ἐμφάνισις τῶν τελευταίων $1 ἀλλαγῶν τῷ χρονικῷ διαστήματι τῶν τελευταίων $2 ἡμερῶν",
        "diff": "διαφ.",
        "hist": "Ἰστ.",
        "hide": "Κρύπτειν",
        "undeleteviewlink": "ὁρᾶν",
        "undeleteinvert": "Ἀναστρέφειν τὴν ἐπιλογήν",
        "undeletecomment": "Αἰτία:",
-       "undeletedrevisions": "{{PLURAL:$1|1 ἀναθεωρήσις|$1 ἀναθεωρήσεις}} ἀποκατεστάθησαν",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 ἀναθεωρήσις|$1 ἀναθεωρήσεις}} καὶ {{PLURAL:$2|1 ἀρχεῖον|$2 ἀρχεῖα}} ἀποκατεστάθησαν",
-       "undeletedfiles": "{{PLURAL:$1|1 ἀρχεῖον|$1 ἀρχεῖα}} ἀποκατεστάθησαν",
        "cannotundelete": "Ἡ ἐκδιαγραφὴ ἀπετεύχθη·\nἕτερός τις ἐνδέχεται πρῶτος ἐκδιαγεγραφέναι τὴν δέλτον.",
        "undelete-search-box": "Ζητεῖν διαγεγραμμένας δέλτους",
        "undelete-search-prefix": "Δεικνύναι δέλτους· ἐκκινεῖν ἐκ:",
        "logentry-newusers-create": "Ὀ λογισμός χρώμενου $1 {{GENDER:$2|created}} ἐποιεῖθηκε",
        "logentry-upload-upload": "$1 {{GENDER:$2|μεταφόρτωσε}} $3",
        "rightsnone": "(Οὐδέν)",
-       "revdelete-summary": "σύνοψις μεταγραφῶν",
        "feedback-cancel": "Ἀκυροῦν",
        "searchsuggest-search": "Ζητεῖν",
        "searchsuggest-containing": "περιέχον...",
index aef5bd5..c6c4dd8 100644 (file)
        "anontalk": "Diskussionssyste vo sellere IP",
        "navigation": "Navigation",
        "and": "&#32;un",
-       "qbfind": "Finde",
-       "qbbrowse": "Blättre",
-       "qbedit": "Ändere",
-       "qbpageoptions": "Sytenoptione",
-       "qbmyoptions": "Ystellige",
        "faq": "Froge, wo vilmol gstellt wäre",
-       "faqpage": "Project:FAQ",
        "actions": "Aktione",
        "namespaces": "Namensryym",
        "variants": "Variante",
        "edit-local": "Lokali Bschrybig bearbeite",
        "create": "Erstelle",
        "create-local": "Lokali Bschrybig zuefiege",
-       "editthispage": "Syte bearbeite",
-       "create-this-page": "Die Syte afange",
        "delete": "Lesche",
-       "deletethispage": "Syte lösche",
-       "undeletethispage": "Die Syte widerhärstelle",
        "undelete_short": "{{PLURAL:$1|1 Version|$1 Versione}} widerherstelle",
        "viewdeleted_short": "{{PLURAL:$1|ei gleschti Änderig|$1 gleschti Ändrige}} aaluege",
        "protect": "Schütze",
        "protect_change": "ändere",
-       "protectthispage": "Artikel schütze",
        "unprotect": "Syteschutz ändere",
-       "unprotectthispage": "Syteschutz ändere",
        "newpage": "Nöji Syte",
-       "talkpage": "Iber die Syte dischputiere",
        "talkpagelinktext": "Diskussion",
        "specialpage": "Spezialsyte",
        "personaltools": "Persönlichi Wärkzüg",
-       "articlepage": "Syte",
        "talk": "Diskussion",
        "views": "Wievylmol agluegt",
        "toolbox": "Wärchzyyg",
        "tool-link-userrights": "{{GENDER:$1|Benutzergruppe}} ändere",
        "tool-link-userrights-readonly": "{{GENDER:$1|Benutzergruppe}} aaluege",
        "tool-link-emailuser": "E-Mail an {{GENDER:$1|dää Benutzer|die Benutzeri}} schicke",
-       "userpage": "Benutzersyte",
-       "projectpage": "Projektsyte azeige",
        "imagepage": "Dateisyte",
        "mediawikipage": "Inhaltssyte aazeige",
        "templatepage": "Vorlagesyte aazeige",
        "preview": "Vorschou",
        "showpreview": "Vorschau aaluege",
        "showdiff": "Änderige zeige",
-       "blankarticle": "<strong>Warnig:</strong> D Syte, wu Du aalaisch, isch läär.\nWänn Du nomol uf „{{int:savearticle}}“ klicksch, wird d Syte ohni Inhalt aaglait.",
+       "blankarticle": "<strong>Warnig:</strong> D Syte, wu Du aalaisch, isch läär.\nWänn Du nomol uf „$1“ klicksch, wird d Syte ohni Inhalt aaglait.",
        "anoneditwarning": "<strong>Warnig:</strong> Du bisch nit aagmäldet. Dy IP-Adräss wird effetli sichtbar, wänn Du Bearbeitige machsch. Wänn di <strong>[$1 aamälde duesch]</strong> oder <strong>[$2 e Benutzerkonto aalaisch]</strong>, wäre Bearbeitige zämme mit andere Bytreg Dym Nenutzername zuegordnet.",
        "anonpreviewwarning": "''Du bisch nit aagmäldet. Bim Spychere wird Dyy IP-Adräss yydrait in d Versionsgschicht vu däre Syte.''",
        "missingsummary": "'''Obacht:''' Du hesch kei Zämefassig aagee. Wenn du nomol uf Spychere drucksch, wird d Änderung ohni gspychert.",
-       "selfredirect": "<strong>Obacht:</strong> Du bisch die Syten uf sech sälber am Wyterleite.\nVilech hesch für d Wyterleitig ds falsche Zil y’gä, oder vilech bisch di falschi Syten am bearbeite.\nWe d’ nomal «{{int:savearticle}}» kliksch, de wird d Wyterleitig einewäg agleit.",
+       "selfredirect": "<strong>Obacht:</strong> Du bisch die Syten uf sech sälber am Wyterleite.\nVilech hesch für d Wyterleitig ds falsche Zil y’gä, oder vilech bisch di falschi Syten am bearbeite.\nWe d’ nomal «$1» kliksch, de wird d Wyterleitig einewäg agleit.",
        "missingcommenttext": "Bitte gib Dyy Kommentar unte yy.",
-       "missingcommentheader": "<strong>Obacht:</strong> Du hesch kei Iberschrift für dä Kommentar yygee.\nWänn nomol uf „{{int:savearticle}}“ drucksch, wird Dyyni Bearbeitig ohni Iberschrift gspicheret.",
+       "missingcommentheader": "<strong>Obacht:</strong> Du hesch kei Iberschrift für dä Kommentar yygee.\nWänn nomol uf „$1“ drucksch, wird Dyyni Bearbeitig ohni Iberschrift gspicheret.",
        "summary-preview": "Vorschou vor Zämefassig:",
        "subject-preview": "Vorschau vum Betreff:",
        "previewerrortext": "Es het e Fähler ’gä bim Versuech, e Vorschou vo dynen Änderige z zeige.",
        "editingsection": "Bearbeite vo «$1» (Absatz)",
        "editingcomment": "Bearbeite vu $1 (Neje Abschnitt)",
        "editconflict": "Bearbeitigs-Konflikt: «$1»",
-       "explainconflict": "Öpper anders het dä Artikel gänderet, wo du ne sälber am Ändere bisch gsy.\nIm obere Tekschtfäld steit der jitzig Artikel.\nIm untere Tekschtfält stöh dyni Änderige.\nBitte überträg dyni Änderigen i ds obere Tekschtfäld.\nWe du «{{int:savearticle}}» drücksch, de wird '''nume''' der Inhalt vom obere Tekschtfäld gspycheret.",
+       "explainconflict": "Öpper anders het dä Artikel gänderet, wo du ne sälber am Ändere bisch gsy.\nIm obere Tekschtfäld steit der jitzig Artikel.\nIm untere Tekschtfält stöh dyni Änderige.\nBitte überträg dyni Änderigen i ds obere Tekschtfäld.\nWe du «$1» drücksch, de wird '''nume''' der Inhalt vom obere Tekschtfäld gspycheret.",
        "yourtext": "Dyy Täxt",
        "storedversion": "Gspychereti Version",
        "nonunicodebrowser": "'''Obacht:''' Dyy Browser cha Unicode-Zeiche nid richtig verschaffe. Bitte verwänd e andere Browser zum Syte bearbeite.",
        "rcshowhidecategorization": "Sytekategorisierige $1",
        "rcshowhidecategorization-show": "zeige",
        "rcshowhidecategorization-hide": "nid zeige",
-       "rclinks": "Zeig di letschte $1 Änderige vo de vergangene $2 Täg.<br />$3",
+       "rclinks": "Zeig di letschte $1 Änderige vo de vergangene $2 Täg.",
        "diff": "Unterschid",
        "hist": "Versione",
        "hide": "usblände",
        "logentry-merge-merge": "{{GENDER:$2|Der $1|D $1|$1}} het $3 i $4 zämegfüert (Versione bis $5)",
        "logentry-move-move": "{{GENDER:$2|Dr|D}} $1 het d Seite $3 uf $4 verschobe",
        "logentry-move-move-noredirect": "{{GENDER:$2|Der $1|D $1|$1}} het d Syte $3 nooch $4 verschobe ohni e Wyterleitig aazlege",
-       "logentry-move-move_redir": "{{GENDER:$2|Der $1|D $1|$1}} het d Syte $3 nooch $4 verschobe un het debi e Wyterleitig überschrybe",
-       "logentry-move-move_redir-noredirect": "{{GENDER:$2|Der $1|D $1|$1}} het d Syte $3 nooch $4 verschobe un het debi e Wyterleitig überschrybe, ohni sälber eini aazlege",
+       "logentry-move-move_redir": "{{GENDER:$2|Der $1|D $1|$1}} het d Syte $3 nooch $4 verschobe un het deby e Wyterleitig überschribe",
+       "logentry-move-move_redir-noredirect": "{{GENDER:$2|Der $1|D $1|$1}} het d Syte $3 nooch $4 verschobe un het deby e Wyterleitig überschribe, ohni sälber eini aazlege",
        "logentry-patrol-patrol": "{{GENDER:$2|Der $1|D $1|$1}} het Version $4 vo Syte $3 als kontrolliert markiert",
        "logentry-patrol-patrol-auto": "{{GENDER:$2|Der $1|D $1|$1}} het Version $4 vor Syte $3 automatisch als kontrolliert markiert",
        "logentry-newusers-newusers": "{{GENDER:$2|Benutzerkonto}} $1 isch aagleit wore.",
index 30e2574..fe96f31 100644 (file)
@@ -37,6 +37,7 @@
        "tog-hideminor": "હાલમાં થયેલા ફેરફારમાં નાના ફેરફારો છુપાવો",
        "tog-hidepatrolled": "હાલના સલામતી માટે કરવામાં આવેલાં થયેલા ફેરફારો છુપાવો.",
        "tog-newpageshidepatrolled": "નવાં પાનાંની યાદીમાંથી દેખરેખ હેઠળનાં પાનાં છુપાવો",
+       "tog-hidecategorization": "પાનાંનું વર્ગીકરણ છુપાવો",
        "tog-extendwatchlist": "ધ્યાનસૂચિને વિસ્તૃત કરો જેથી,ફક્ત તાજેતરનાજ નહીં, બધા આનુષાંગિક ફેરફારો જોઇ શકાય",
        "tog-usenewrc": "તાજા ફેરફારોમાં અને ધ્યાનસૂચિમાં ફેરફારોને પાનાં અનુસાર જૂથમાં ગોઠવો",
        "tog-numberheadings": "મથાળાંઓને આપો-આપ ક્રમ (ઑટો નંબર) આપો",
@@ -55,7 +56,7 @@
        "tog-enotifminoredits": "પાનાં અને ફાઇલ્સમાં નાનાં ફેરફાર થાય તો પણ મને ઇમેલ મોકલો",
        "tog-enotifrevealaddr": "નોટીફીકેશનના ઇમેલમાં મારૂ ઇમેલ સરનામું બતાવો",
        "tog-shownumberswatching": "ધ્યાન રાખતા સભ્યોની સંખ્યા બતાવો",
-       "tog-oldsig": "હાલના હસ્તાક્ષર:",
+       "tog-oldsig": "તમારા àª¹àª¾àª²àª¨àª¾ àª¹àª¸à«\8dતાàª\95à«\8dષર:",
        "tog-fancysig": "હસ્તાક્ષરનો વિકિલખાણ તરીકે ઉપયોગ કરો (સ્વચાલિત કડી વગર)",
        "tog-uselivepreview": "જીવંત પૂર્વદર્શન વાપરો",
        "tog-forceeditsummary": "કોરો 'ફેરફાર સારાંશ' ઉમેરતા પહેલા મને ચેતવો",
        "tog-watchlisthideliu": "લોગ થયેલા સભ્ય દ્વારા કરવામાં આવેલ ફેરફાર ધ્યાનસુચીમાં છુપાવો.",
        "tog-watchlisthideanons": "અજાણ્યા સભ્ય દ્વારા થયેલ ફેરફાર મારી ધ્યાનસુચીમાં છુપાવો",
        "tog-watchlisthidepatrolled": "સુરક્ષા કાજે કરવામાં આવેલ ફેરફાર મારી ધ્યાનસુચીમાં છુપાવો",
+       "tog-watchlisthidecategorization": "પાનાંઓનું વર્ગીકરણ છુપાવો",
        "tog-ccmeonemails": "મે અન્યોને મોકલેલા ઇમેલની નકલ મને મોકલો",
        "tog-diffonly": "તફાવતની નીચે લેખ ન બતાવશો",
        "tog-showhiddencats": "છુપી શ્રેણીઓ દર્શાવો",
-       "tog-norollbackdiff": "રà«\8bલબà«\87àª\95 àª\95રà«\8dયા àªªàª\9bà«\80ના àª¤àª«àª¾àªµàª¤à«\8b àª\9bà«\81પાવà«\8b",
+       "tog-norollbackdiff": "રà«\8bલબà«\87àª\95 àª\95રà«\8dયા àªªàª\9bà«\80ના àª¤àª«àª¾àªµàª¤à«\8b àª¦àª°à«\8dશાવà«\8b àª¨àª¹à«\80àª\82",
        "tog-useeditwarning": "સાચવ્યા વગર જો હું પૃષ્ઠ છોડું તો મને ચેતવણી આપો",
-       "tog-prefershttps": "સભ્યનામથી પ્રવેશ કર્યો હોય ત્યારે સુરક્ષિત જોડાણ (https) જ વાપરો",
+       "tog-prefershttps": "àª\9cà«\8dયારà«\87 àª¸àª­à«\8dયનામથà«\80 àªªà«\8dરવà«\87શ àª\95રà«\8dયà«\8b àª¹à«\8bય àª¤à«\8dયારà«\87 àª¸à«\81રàª\95à«\8dષિત àª\9cà«\8bડાણ (https) àª\9c àªµàª¾àªªàª°à«\8b",
        "underline-always": "હંમેશાં",
        "underline-never": "કદી નહિ",
        "underline-default": "પૂર્વ નિર્ધારિત સ્કિન કે બ્રાઉઝર",
        "category-file-count-limited": "નીચે દર્શાવેલ {{PLURAL:$1|દસ્તાવેજ|દસ્તાવેજો}} પ્રસ્તુત શ્રેણીમાં છે.",
        "listingcontinuesabbrev": "ચાલુ..",
        "index-category": "અનુક્રમણિકા બનાવેલા પાનાં",
-       "noindex-category": "અનુક્રમણિકા નહી બનાવેલા પાનાં",
+       "noindex-category": "અનુક્રમણિકા નહી બનાવેલા પાનાં",
        "broken-file-category": "ફાઇલોની ત્રૂટક કડીઓવાળાં પાનાં",
        "about": "વિષે",
        "article": "લેખનું પાનું",
        "newwindow": "(નવા પાનામાં ખુલશે)",
        "cancel": "રદ કરો",
        "moredotdotdot": "વધારે...",
-       "morenotlisted": "આ યાદી પૂર્ણ નથી.",
+       "morenotlisted": "àª\95દાàª\9a àª\86 àª¯àª¾àª¦à«\80 àªªà«\82રà«\8dણ àª¨àª¥à«\80.",
        "mypage": "પાનું",
        "mytalk": "ચર્ચા",
        "anontalk": "ચર્ચા",
        "navigation": "ભ્રમણ",
        "and": "&#32;અને",
-       "qbfind": "શોધો",
-       "qbbrowse": "બ્રાઉઝ",
-       "qbedit": "ફેરફાર કરો",
-       "qbpageoptions": "આ પાનું",
-       "qbmyoptions": "મારાં પાનાં",
        "faq": "FAQ\nવારંવાર પુછાતા પ્રશ્નો",
-       "faqpage": "Project:વારંવાર પુછાતા પ્રશ્નો",
        "actions": "ક્રિયાઓ",
        "namespaces": "નામાવકાશો",
        "variants": "ભિન્ન રૂપો",
        "searcharticle": "જાઓ",
        "history": "પાનાનો ઇતિહાસ",
        "history_short": "ઇતિહાસ",
+       "history_small": "ઇતિહાસ",
        "updatedmarker": "મારી ગઇ મુલાકાત પછીના બદલાવ",
        "printableversion": "છાપવા માટેની આવૃત્તિ",
        "permalink": "સ્થાયી કડી",
        "edit-local": "સ્થાનિક વર્ણનમાં ફેરફાર કરો",
        "create": "બનાવો",
        "create-local": "સ્થાનિક વર્ણન ઉમેરો",
-       "editthispage": "આ પાનામાં ફેરફાર કરો",
-       "create-this-page": "આ પાનું બનાવો",
-       "delete": "રદ કરો",
-       "deletethispage": "આ પાનું હટાવો",
-       "undeletethispage": "આ પાનું પુનર્જીવીત કરો",
+       "delete": "દૂર કરો",
        "undelete_short": "હટાવેલ {{PLURAL:$1|એક ફેરફાર|$1 ફેરફારો}} પરત લાવો.",
        "viewdeleted_short": "{{PLURAL:$1|ભૂંસી નાખેલો એક|ભૂંસી નાખેલા $1}} ફેરફાર જુઓ",
        "protect": "સુરક્ષિત કરો",
        "protect_change": "બદલો",
-       "protectthispage": "આ પાનું સુરક્ષિત કરો",
        "unprotect": "સુરક્ષા બદલો",
-       "unprotectthispage": "આ પાનાનું સુરક્ષા  બદલો",
        "newpage": "નવું પાનું",
-       "talkpage": "આ પાના વિષે ચર્ચા કરો",
        "talkpagelinktext": "ચર્ચા",
        "specialpage": "ખાસ પાનું",
        "personaltools": "વ્યક્તિગત સાધનો",
-       "articlepage": "લેખનું પાનું જુઓ",
        "talk": "ચર્ચા",
        "views": "દેખાવ",
        "toolbox": "સાધનો",
-       "userpage": "સભ્યનું પાનું જુઓ",
-       "projectpage": "પ્રકલ્પનું પાનું જુઓ",
+       "tool-link-emailuser": "આ {{GENDER:$1|સભ્ય}}ને ઇમેલ કરો",
        "imagepage": "ફાઇલનું પાનું જુઓ",
        "mediawikipage": "સંદેશનું પાનું જુઓ",
        "templatepage": "ઢાંચાનું પાનુ જુઓ",
        "otherlanguages": "અન્ય ભાષાઓમાં",
        "redirectedfrom": "($1 થી અહીં વાળેલું)",
        "redirectpagesub": "દિશાનિર્દેશ કરેલ પાનું",
-       "redirectto": "દિશાનિર્દેશિત",
+       "redirectto": "દિશાનિર્દેશિત:",
        "lastmodifiedat": "આ પાનામાં છેલ્લો ફેરફાર $1ના રોજ $2 વાગ્યે થયો.",
        "viewcount": "આ પાનું {{PLURAL:$1|એક|$1}} વખત જોવામાં આવ્યું છે.",
        "protectedpage": "સંરક્ષિત પાનું",
        "ok": "મંજૂર",
        "retrievedfrom": "\"$1\" થી મેળવેલ",
        "youhavenewmessages": "{{PLURAL:$3|તમારી પાસે}} $1 ($2).",
-       "youhavenewmessagesfromusers": "આપને માટે {{PLURAL:$3|અન્ય સભ્ય|$3 અન્ય સભ્યો}} તરફથી $1 છે. ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|આપ}}ને માટે {{PLURAL:$3|અન્ય સભ્ય|$3 અન્ય સભ્યો}} તરફથી $1 છે. ($2).",
        "youhavenewmessagesmanyusers": "આપને માટે ઘણાં સભ્યો તરફથી $1 છે ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|નવો સંદેશો|૯૯૯=નવા સંદેશા}}",
        "newmessagesdifflinkplural": "છેલ્લા {{PLURAL:$1|ફેરફાર|૯૯૯=ફેરફારો}}",
        "youhavenewmessagesmulti": "તમારા માટે $1 ઉપર નવા સંદેશાઓ છે",
        "editsection": "ફેરફાર કરો",
        "editold": "ફેરફાર કરો",
-       "viewsourceold": "સà«\8dરà«\8bત જુઓ",
+       "viewsourceold": "મà«\82ળ જુઓ",
        "editlink": "ફેરફાર",
-       "viewsourcelink": "સà«\8dરà«\8bત જુઓ",
+       "viewsourcelink": "મà«\82ળ જુઓ",
        "editsectionhint": "પરિચ્છેદમાં ફેરફાર કરો: $1",
        "toc": "અનુક્રમણિકા",
        "showtoc": "બતાવો",
        "actionthrottled": "અકાળે અટાકાવી દીધેલી ક્રિયા",
        "actionthrottledtext": "સ્પામ નિયંત્રણ તકેદારી રૂપે આ ક્રિયા અમુક મર્યાદામાં જ કરી શકો છો, અને તમે તે મર્યાદા વટાવી દીધી છે. કૃપા કરી થોડાક સમય પછી ફરી પ્રયત્ન કરો.",
        "protectedpagetext": "ફેરફારો કે એવું કંઈ પણ થતું રોકવા માટે આ પાનું સુરક્ષિત કરવામાં આવ્યું છે.",
-       "viewsourcetext": "આપ આ પાનાનો મૂળ સ્રોત નિહાળી શકો છો અને તેની નકલ (copy) પણ કરી શકો છો:",
-       "viewyourtext": "આપ આ પાનાનાં '''આપનાં સંપાદનો'''નો મૂળ સ્રોત નિહાળી શકો છો અને તેની નકલ (copy) પણ કરી શકો છો:",
+       "viewsourcetext": "આપ આ પાનાનો મૂળ સ્રોત નિહાળી શકો છો અને તેની નકલ (copy) પણ કરી શકો છો.",
+       "viewyourtext": "આપ આ પાનાનાં <strong>આપનાં સંપાદનો</strong>નો મૂળ સ્રોત નિહાળી શકો છો અને તેની નકલ (copy) પણ કરી શકો છો:<strong>",
        "protectedinterface": "આ પાનું સોફ્ટવેર માટે ઇન્ટરફેઇસ ટેક્સટ આપે છે, અને તેને દુરુપયોગ રોકવા માટે સ્થગિત કર્યું છે.\nબધાંજ વિકિ માટે ભાષાંતર ઉમેરવા કે બદલવા માટે, કૃપા કરી [https://translatewiki.net/ translatewiki.net], મિડિયાવિકિ સ્થાનિયકરણ પ્રકલ્પ, વાપરો.",
        "editinginterface": "<strong>ચેતવણી:</strong> તમે જે પાનામાં ફેરફાર કરી રહ્યા છો તે પાનું સોફ્ટવેર માટે ઇન્ટરફેસ ટેક્સટ પૂરી પાડે છે.\nઅહીંનો બદલાવ આ વિકિ પર ઉપસ્થિત અન્ય સભ્યોના ઇન્ટરફેસનાં દેખાવ ઉપર અસરકર્તા બનશે.",
        "cascadeprotected": "આ પાના પર ફેરફાર પ્રતિબંધિત છે, કારણ કે આ પાનું {{PLURAL:$1|એવા પાનાં}}નું સભ્ય છે કે જેમાં અનુવર્તી(પગથિયામય) સંરક્ષણ લાગુ કરવામાં આવ્યું છે :\n$2",
        "externaldberror": "પ્રમાણભૂતતાની ત્રુટી આવી અથવા તમારૂ બહારનુ ખાતું અપડેટ કરવાનો અધિકાર તમને નથી.",
        "login": "પ્રવેશ",
        "nav-login-createaccount": "પ્રવેશ કરો / નવું ખાતું ખોલો",
-       "userlogin": "પ્રવેશ કરો / નવું ખાતું ખોલો",
-       "userloginnocreate": "પ્રવેશ",
        "logout": "પ્રસ્થાન",
        "userlogout": "પ્રસ્થાન/લૉગ આઉટ",
        "notloggedin": "પ્રવેશ કરેલ નથી",
        "userlogin-noaccount": "શું તમારૂં ખાતું નથી?",
        "userlogin-joinproject": "{{SITENAME}} સાથે જોડાવ",
-       "nologin": "શું તમારૂં ખાતું નથી? તો નવું '''$1'''.",
-       "nologinlink": "ખાતું ખોલો",
        "createaccount": "નવું ખાતું ખોલો",
-       "gotaccount": "પહેલેથી ખાતું ખોલેલું છે? '''$1'''.",
-       "gotaccountlink": "પ્રવેશ",
-       "userlogin-resetlink": "પોતાની પ્રવેશ માહિતી ભૂલી ગયા છો?",
        "userlogin-resetpassword-link": "આપની ગુપ્ત સંજ્ઞા (પાસવર્ડ) ભૂલી ગયા છો?",
        "userlogin-helplink2": "પ્રવેશ કરવા માટે મદદ",
        "userlogin-loggedin": "તમે પહેલેથી {{GENDER:$1|$1}} તરીકે પ્રવેશ કરેલો જ છે.\nબીજા સભ્ય તરીકે પ્રવેશ કરવા માટે નીચેનું ફોર્મ વાપરો.",
        "createacct-another-email-ph": "તમારું ઇમેલ સરનામું દાખલ કરો",
        "createaccountmail": "કામચલાઉ ગમે-તેમ પાસવર્ડ વાપરો અને તેને સ્પષ્ટ કરેલ ઇમેલ સરનામા પર મોકલો",
        "createacct-realname": "સાચું નામ (વૈકલ્પિક)",
-       "createaccountreason": "કારણ:",
        "createacct-reason": "કારણ",
        "createacct-reason-ph": "તમે કેમ બીજું ખાતું બનાવો છો",
        "createacct-submit": "તમારું ખાતું બનાવો",
        "nocookieslogin": "{{SITENAME}} કુકીઝ સિવાય પ્રવેશ કરવા નહીં દે.\nતમે કુકીઝ બંધ કરી છે.\nકૃપા કરી કુકીઝ ચાલુ કરીને તમારા સભ્યનામ સાથે પ્રવેશ કરો.",
        "nocookiesfornew": "સભ્ય ખાતાની પુષ્ટિ નથી થઇ, અમે તેના સ્ત્રોતની પુષ્ટિ ન કરી શક્યા.\nખાત્રી કરો કે તમે કુકીઝ સક્રીય કરી છે, અને પાનું ફરીથી ચડાવો",
        "noname": "તમે પ્રમાણભૂત સભ્યનામ જણાવેલ નથી.",
-       "loginsuccesstitle": "પ્રવેશ સફળ",
+       "loginsuccesstitle": "પ્રવેશીત",
        "loginsuccess": "'''તમે હવે {{SITENAME}}માં \"$1\" તરીકે પ્રવેશી ચુક્યા છો.'''",
        "nosuchuser": "\"$1\" નામ ધરાવતો કોઇ સભ્ય અસ્તિત્વમાં નથી.\n\nસભ્યનામો અક્ષરસંવેદી (કેસ સેન્સિટીવ) હોય છે.\n\nકૃપા કરી સ્પેલીંગ/જોડણી ચકાસો અથવા [[Special:CreateAccount|નવું ખાતુ ખોલો]].",
        "nosuchusershort": "\"$1\" નામનો કોઇ સભ્ય નથી, તમારી જોડણી તપાસો.",
        "noemail": "સભ્ય \"$1\"નું કોઇ ઇ-મેલ સરનામું નોંધાયેલું નથી.",
        "noemailcreate": "તમારે વૈધ ઇમેલ આપવાની જરૂર છે.",
        "passwordsent": "\"$1\" ની નવી ગુપ્તસંજ્ઞા (પાસવર્ડ) આપના ઇમેઇલ પર મોકલવામાં આવ્યો છે.\nકૃપા કરી તે મળ્યા બાદ ફરી લોગ ઇન કરો.",
-       "blocked-mailpassword": "ફેરફાર કરવા માટે તમારું IP એડ્રેસ સ્થગિત કરી દેવાયું છે, તેથી દૂરુપયોગ ટાળવા માટે તમને ગુપ્તસંજ્ઞા ફરી મેળવવાની છૂટ નથી.",
+       "blocked-mailpassword": "ફà«\87રફાર àª\95રવા àª®àª¾àª\9fà«\87 àª¤àª®àª¾àª°à«\81àª\82 IP àª\8fડà«\8dરà«\87સ àª¸à«\8dથàª\97િત àª\95રà«\80 àª¦à«\87વાયà«\81àª\82 àª\9bà«\87, àª¤à«\87થà«\80 àª¦à«\82રà«\81પયà«\8bàª\97 àª\9fાળવા àª®àª¾àª\9fà«\87 àª¤àª®àª¨à«\87 àª\86 IP àª\8fડà«\8dરà«\87સ àªªàª°àª¥à«\80 àª\97à«\81પà«\8dતસàª\82àª\9cà«\8dàª\9eા àª«àª°à«\80 àª®à«\87ળવવાનà«\80 àª\9bà«\82àª\9f àª¨àª¥à«\80.",
        "eauthentsent": "પુષ્ટિ કરવા માટે નિશ્ચિત થયેલા સરનામાં પર ઇમેલ મોકલવામાં આવ્યો છે.\nએ જ સરનામે બીજો ઇમેલ થતાં પહેલાં તમારે ઇમેલમાં લખેલી સૂચનાઓ પ્રમાણે કરવું પડશે જેથી એ પુષ્ટિ થઇ શકે કે આપેલું સરનામું તમારું છે.",
        "throttled-mailpassword": "ગુપ્ત સંજ્ઞા યાદ અપાવતી ઇમેઇલ છેલ્લા {{PLURAL:$1|કલાકમાં|$1 કલાકોમાં}} મોકલેલી છે.\nદૂરુપયોગ રોકવા માટે, {{PLURAL:$1|કલાકમાં|$1 કલાકોમાં}} ફક્ત એક જ આવી મેઇલ કરવામાં આવે છે.",
        "mailerror": "મેઇલ મોકલવામાં ત્રુટિ: $1",
-       "acct_creation_throttle_hit": "àª\86 àªµàª¿àª\95િના àª®à«\81લાàª\95ાતà«\80àª\93àª\8f àª¤àª®àª¾àª°à«\81àª\82 IP àªµàª¾àªªàª°à«\80નà«\87 àª\97àª\88 àª\95ાલà«\87 {{PLURAL:$1|1 àª\96ાતà«\81àª\82 |$1 àª\96ાતા}} àª\96à«\8bલà«\8dયાàª\82 àª\9bà«\87,àª\9cà«\87 àªªà«\8dરવાનગીની મહત્તમ સંખ્યા છે. આને પરિણામે મુલાકાતી આ ક્ષણેવધુ ખાતા નહીં ખોલી શકે.",
+       "acct_creation_throttle_hit": "àª\86 àªµàª¿àª\95િના àª®à«\81લાàª\95ાતà«\80àª\93àª\8f àª¤àª®àª¾àª°à«\81àª\82 IP àªµàª¾àªªàª°à«\80નà«\87 àªªàª¾àª\9bલા $2માàª\82 {{PLURAL:$1|1 àª\96ાતà«\81àª\82 |$1 àª\96ાતા}} àª\96à«\8bલà«\8dયાàª\82 àª\9bà«\87, àª\9cà«\87 àªªરવાનગીની મહત્તમ સંખ્યા છે. આને પરિણામે મુલાકાતી આ ક્ષણેવધુ ખાતા નહીં ખોલી શકે.",
        "emailauthenticated": "તમારૂં ઇ-મેઇલ સરનામું $2 ના $3 સમયે પ્રમાણિત કરેલું છે.",
        "emailnotauthenticated": "તમારૂં ઇ-મેઇલ સરનામું હજુ સુધી પ્રમાણિત થયેલું નથી.\n\nનિમ્નલિખિત વિશેષતાઓમાંથી કોઇ માટે ઇ-મેઇલ મોકલવામાં આવશે નહીં.",
        "noemailprefs": "આ વિશેષતાઓ કાર્ય કરી શકે તે માટે 'તમારી પસંદ'માં ઇ-મેઇલ સરનામું દર્શાવો.",
        "createaccount-title": "{{SITENAME}} માટે ખાતુ બનાવ્યું",
        "createaccount-text": "કોઇકે {{SITENAME}} ($4) પર, નામ \"$2\", ગુપ્તસંજ્ઞા \"$3\", શાથે તમારા ઇ-મેઇલ એડ્રેસ માટે ખાતુ બનાવેલ છે.\n\nતમે હવે પ્રવેશ કરી અને ગુપ્તસંજ્ઞા બદલી શકો છો.\n\nજો આ ખાતુ ભુલથી બનેલું હોય તો,આ સંદેશને અવગણી શકો છો.",
        "login-throttled": "તમે હાલમાં ઘણાં જ પ્રવેશ પ્રયત્નો કર્યા છે.\nકૃપા કરી ફરી પ્રયત્ન કરતાં પહેલાં $1 રાહ જુઓ.",
-       "login-abort-generic": "તમારà«\81àª\82 àªªà«\8dરવà«\87શ àª¨àª¿àª·à«\8dફળ àª¥àª¯à«\81àª\82 - àª\9bà«\8bડà«\80 àª¦à«\87વાયà«\81àª\82",
+       "login-abort-generic": "તમારà«\80 àªªà«\8dરવà«\87શવિધિ àª¨àª¿àª·à«\8dફળ àª¥àª\88 - àª°àª¦àª¬àª¾àª¤àª²",
        "loginlanguagelabel": "ભાષા: $1",
        "suspicious-userlogout": "લોગ આઉટ કરવાની તમારી વિનંતિ પૂરી ન કરી શકાઇ. એમ લાગે છે કે તેને તૃટિ પામેલ બ્રાઉઝર કે પ્રોક્સી દ્વારા મોકલાઈ હતી.",
        "createacct-another-realname-tip": "સાચું નામ મરજીયાત છે.\nજો તમે તે આપવાનું પસંદ કરશો, તો તેનો ઉપયોગ તમે કરેલ યોગદાનનું શ્રેય આપવા માટે થશે.",
        "newpassword": "નવી ગુપ્તસંજ્ઞા:",
        "retypenew": "નવી ગુપ્ત સંજ્ઞા (પાસવર્ડ) ફરી લખો:",
        "resetpass_submit": "ગુપ્તસંજ્ઞા બદલીને પ્રવેશ કરો.",
-       "changepassword-success": "તમારà«\80 àª\97à«\81પà«\8dતસàª\82àª\9cà«\8dàª\9eા àª¸àª«àª³àª¤àª¾àªªà«\82રà«\8dવàª\95 àª¬àª¦àª²àª¾àª\87 àª\97àª\87 છે!",
+       "changepassword-success": "તમારà«\80 àª\97à«\81પà«\8dતસàª\82àª\9cà«\8dàª\9eા àª¬àª¦àª²à«\80 àª\85પાàª\88 છે!",
        "resetpass_forbidden": "ગુપ્તસંજ્ઞા બદલી શકાશે નહીં",
        "resetpass-no-info": "બારોબાર આ પાનું જોવા માટે પ્રવેશ કરવો આવશ્યક છે.",
        "resetpass-submit-loggedin": "ગુપ્તસંજ્ઞા બદલો",
        "passwordreset-emailtext-user": "વેબસાઈટ  {{SITENAME}} ના વપરાશકર્તા $1 એ તમારા {{SITENAME}} ($4) નો પાસવર્ડ રિસેટ કરવાની રજૂઆત કરી છે. આ ઈમેઈલ એડ્રેસ સાથે {{PLURAL:$3|નું ખાતું|ના ખાતા}} જોડાયેલ છે.\n\n$2\n\n{{PLURAL:$3|આ કામચલાઉ પાસવર્ડ|આ બધા કામચલાઉ પાસવર્ડ}} {{PLURAL:$5|એક દિવસ|$5 દિવસ}} માં નષ્ટ થઇ જશે. તમારે અત્યારે જ ખાતું ખોલીને નવો પાસવર્ડ સેટ કરી લેવો જોઈએ .જો કોઈ બીજા એ આ રજૂઆત કરી હોય, અથવા જો તમને પોતાનો અસલ પાસવર્ડ યાદ હોય, અને તેને બદલવા નથી માગતા, તો આ સંદેશાને જતો કરીને પોતાના અસલ પાસવર્ડ ને વાપરી શકો છો..",
        "passwordreset-emailelement": "વપરાશકર્તા નામ: \n$1\n\nકામચલાઉ પાસવર્ડ: \n$2",
        "passwordreset-emailsentemail": "પાસવર્ડ બદલવાનો ઇમેલ મોકલવામાં આવ્યો છે.",
-       "changeemail": "àª\87મà«\87લ àª¸àª°àª¨àª¾àª®à«\81àª\82 àª¬àª¦àª²ો",
+       "changeemail": "àª\88મà«\87લ àª¸àª°àª¨àª¾àª®à«\81àª\82 àª¬àª¦àª²à«\8b àª\85થવા àª¹àª\9fાવો",
        "changeemail-header": "તમારા ખાતાનું ઇમેલ સરનામું બદલો",
        "changeemail-no-info": "બારોબાર આ પાનું જોવા માટે પ્રવેશ કરવો આવશ્યક છે.",
        "changeemail-oldemail": "હાલનું ઈમેલ સરનામું:",
        "hr_tip": "આડી લીટી (શક્ય તેટલો ઓછો ઉપયોગ કરો)",
        "summary": "સારાંશ:",
        "subject": "વિષય:",
-       "minoredit": "àª\86 àª\8fàª\95 àª¨àª¾àª¨à«\8b àª¸à«\81ધારà«\8b છે",
+       "minoredit": "àª\86 àª\8fàª\95 àª¨àª¾àª¨à«\8b àª«à«\87રફાર છે",
        "watchthis": "આ પાનાને ધ્યાનમાં રાખો",
        "savearticle": "પાનું સાચવો",
        "savechanges": "પરિવર્તન સાચવો",
        "showdiff": "ફેરફારો દર્શાવો",
        "anoneditwarning": "<strong>ચેતવણી:</strong> તમે તમારા સભ્ય નામથી પ્રવેશ કર્યો નથી.\nઆ પાનાનાં ઇતિહાસમાં તમારૂં આઇ.પી. (IP) એડ્રેસ નોંધવામાં આવશે અને તમારૂં આઈ.પી. લોકો જાહેર રીતે જોઈ શકશે. માટે <strong>[$1 પ્રવેશ કરો]</strong> અથવા તમે <strong>[$2 ખાતું બનાવો]</strong> તો ફેરફારો તમારા સભ્યનામ હેઠળ થશે અને અન્ય ફાયદાઓ પણ મળશે.",
        "anonpreviewwarning": "તમે સભ્યનામથી પ્રવેશ કર્યો નથી,આ પાનું ઈતિહાસમાંતમારા IP સરનામાના નામે  સાચવવામાં આવશે",
-       "missingsummary": "'''ચેતવણી:''' તમે ફેરફારનો સારંશ નથી આપ્યો.\nજો તમે \"{{int:savearticle}}\"  પર ક્લીક કરશો તો તમરો ફેરફારા સારાઁશાવગરાસાચવવામાં આવશે",
+       "missingsummary": "'''ચેતવણી:''' તમે ફેરફારનો સારંશ નથી આપ્યો.\nજો તમે \"$1\"  પર ક્લીક કરશો તો તમરો ફેરફારા સારાઁશાવગરાસાચવવામાં આવશે",
        "missingcommenttext": "કૃપા કરી નીચે ટીપ્પણી લખો.",
-       "missingcommentheader": "'''યાદ દેવડાવું:'''તમે તમારી ટિપ્પણી ને શીર્ષક/મથાળુ આપ્યું નથી. \nજો તમે  \"{{int:savearticle}}\" પર ફરીથી ક્લિક કરશો, તો તમારા ફેરરારો મથાળા વગર સચવાશે.",
-       "summary-preview": "સારાંશ પૂર્વાવલોકન:",
-       "subject-preview": "વિષય/શીર્ષક પૂર્વાવલોકન:",
+       "missingcommentheader": "'''યાદ દેવડાવું:'''તમે તમારી ટિપ્પણી ને શીર્ષક/મથાળુ આપ્યું નથી. \nજો તમે  \"$1\" પર ફરીથી ક્લિક કરશો, તો તમારા ફેરરારો મથાળા વગર સચવાશે.",
+       "summary-preview": "સàª\82પાદન àª¸àª¾àª°àª¾àª\82શ àªªà«\82રà«\8dવાવલà«\8bàª\95ન:",
+       "subject-preview": "વિષયનું પૂર્વાવલોકન:",
        "blockedtitle": "સભ્ય પ્રતિબંધિત છે",
-       "blockedtext": "'''આપનાં સભ્ય નામ અથવા આઇ.પી. એડ્રેસ પર પ્રતિબંધ મુકવામાં આવ્યો છે.'''\n\nઆ પ્રતિબંધ  $1એ મુક્યો છે.\nજેને માટે કારણ આપવામાં આવ્યું છે કે, ''$2''.\n\n* પ્રતિબંધ મુક્યા તારીખ: $8\n* પ્રતિબંધ ઉઠાવવાની તારીખ: $6\n* જેના ઉપર પ્રતિબંધ મુક્યો છે તે: $7\n\nઆપનાં પર મુકવામાં આવેલાં પ્રતિબંધ વિષે ચર્ચા કરવા માટે આપ $1નો કે અન્ય [[{{MediaWiki:Grouppage-sysop}}|પ્રબંધક]]નો સંપર્ક કરી શકો છો.\nઆપ 'સભ્યને ઇ-મેલ કરો' ની કડી વાપરી નહી શકો, પરંતુ જો આપનાં [[Special:Preferences|મારી પસંદ]]માં યોગ્ય ઇ-મેલ સરનામું વાપર્યું હશે અને તમારા તે ખાતું વાપરવા ઉપર પ્રતિબંધ નહી મુક્યો હોય તો તમે તે કડીનો ઉપયોગ કરી શકશો.\nતમારૂં હાલનું આઇ.પી સરનામું છે $3, અને જેના પર પ્રતિબંધ મુકવામાં આવ્યો છે તે છે  #$5.\nમહેરબાની કરીને કોઇ પણ પત્ર વ્યવહારમાં ઉપરની બધીજ માહિતીનો ઉલ્લેખ કરશો.",
+       "blockedtext": "<strong>આપનાં સભ્ય નામ અથવા આઇ.પી. એડ્રેસ પર પ્રતિબંધ મુકવામાં આવ્યો છે.</strong>\n\nઆ પ્રતિબંધ $1એ મુક્યો છે.\nજેને માટે કારણ આપવામાં આવ્યું છે, <em>$2</em>.\n\n* પ્રતિબંધ મુક્યા તારીખ: $8\n* પ્રતિબંધ ઉઠાવવાની તારીખ: $6\n* જેના ઉપર પ્રતિબંધ મુક્યો છે તે: $7\n\nઆપનાં પર મુકવામાં આવેલાં પ્રતિબંધ વિષે ચર્ચા કરવા માટે આપ $1નો કે અન્ય [[{{MediaWiki:Grouppage-sysop}}|પ્રબંધક]]નો સંપર્ક કરી શકો છો.\nઆપ 'સભ્યને ઇ-મેલ કરો' ની કડી વાપરી નહી શકો, પરંતુ જો આપનાં [[Special:Preferences|મારી પસંદ]]માં યોગ્ય ઇ-મેલ સરનામું વાપર્યું હશે અને તમારા તે ખાતું વાપરવા ઉપર પ્રતિબંધ નહી મુક્યો હોય તો તમે તે કડીનો ઉપયોગ કરી શકશો.\nતમારૂં હાલનું આઇ.પી સરનામું છે $3, અને જેના પર પ્રતિબંધ મુકવામાં આવ્યો છે તે છે  #$5.\nમહેરબાની કરીને કોઇ પણ પત્ર વ્યવહારમાં ઉપરની બધીજ માહિતીનો ઉલ્લેખ કરશો.",
        "autoblockedtext": "તમારાં IP સરનામા પર સ્વયંચાલિત રીતે રોક લગાવી દેવાઈ છે કેમકે તે અન્ય સભ્ય દ્વારા વાપરવામાં આવ્યું હતું જેના પર $1 દ્વારા પહેલેથી પ્રતિબંધ મૂકવામાં આવ્યો છે.\n:''$2''\n\n* રોકની શરુઆત : $8\n* રોકની સમાપ્તિ : $6\n* પ્રસ્તાવિત રોક સહન કરનાર : $7\n\nતમે $1 અથવા કોઇ અન્ય [[{{MediaWiki:Grouppage-sysop}}|પ્રબંધક]]નો સંપર્ક કરી રોકની ચર્ચા કરી શકો.\n\nનોંધો કે તેમે \"આ સભ્યને ઈ-મેલ કરો\" વિકલ્પ નહિ વાપરી શકો, સિવાયકે તમરી પાસે તમારા [[Special:Preferences|user preferences]]માં વૈધ ઈ-મેલ સરનામું હોય અને તે વાપરવા પર પ્રતિબંધ ન મૂકવામાં આવ્યો હોય.\n\nતમારું હાલનું IP સરનામું $3 છે, અને રોકની ID છે #$5.\nઆ માહિતી તમારી પૂછપરછમાં જરૂર ઉમેરશો.",
        "blockednoreason": "કોઇ કારણ દર્શાવવામાં આવ્યું નથી",
        "whitelistedittext": "ફેરફાર કરવા માટે તમારે $1 કરવાનું છે.",
        "noarticletext": "આ પાનામાં હાલમાં કોઇ લખાણ નથી.\nતમે બીજાં પાનાંમાં [[Special:Search/{{PAGENAME}}|આ પાનાંના શીર્ષક માટે શોધી શકો છો]], <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} સંલગ્ન માહિતિ પત્રકોમાં શોધી શકો છો],\nઅથવા [{{fullurl:{{FULLPAGENAME}}|action=edit}} આ પાનું બનાવી શકો છો]</span>.",
        "noarticletext-nopermission": "આ પાનામાં હાલમાં કોઇ માહિતિ નથી.\nતમે  [[Special:Search/{{PAGENAME}}|આ શબ્દ]] ધરાવતાં અન્ય લેખો શોધી શકો છો, અથવા <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} સંલગ્ન માહિતિ પત્રકોમાં શોધી શકો છો], પરંતુ તમને આ પાનું બનાવવાની મંજૂરી નથી.",
        "userpage-userdoesnotexist": "સભ્ય ખાતું \"<nowiki>$1</nowiki>\"ની નોંધણીનથી થઈ.\nશું તમે ખરેખર આ પાનાની રચના કે ફેરફાર કરવા માંગો છો",
-       "userpage-userdoesnotexist-view": "સભ્યના ખાતા $1 ની નોંધણી નથી થઈ",
+       "userpage-userdoesnotexist-view": "સભ્ય ખાતા \"$1\" ની નોંધણી થયેલ નથી.",
        "blocked-notice-logextract": "આ સભ્ય હાલમાં પ્રતિબંધિત છે.\nતમારા નીરીક્ષણ માટે તાજેતરમાં પ્રતિબંધિત થયેલા સભ્યોની યાદિ આપી છે.",
-       "clearyourcache": "<strong>નà«\8bàª\82ધ:</strong> àªªàª¾àª¨à«\81àª\82 àª¸àª¾àª\9aવà«\8dયા àªªàª\9bà«\80, àª¤àª®àª¾àª°à«\87 àª¤àª®àª¾àª°àª¾ àª¬à«\8dરાàª\89àª\9dરનà«\80 àª\95à«\85શ àª¬àª¾àª¯àªªàª¾àª¸ àª\95રવાનà«\80 àª\86વશà«\8dયàª\95તા àªªàª¡à«\80 àª¶àª\95à«\87 àª\9bà«\87.\n*<strong>ફાયરફà«\8bàª\95à«\8dસ / àª¸àª«àª¾àª°à«\80:</strong> </em>શà«\80ફà«\8dàª\9f<em> àª¦àª¬àª¾àªµà«\87લà«\80 àª°àª¾àª\96à«\80નà«\87 ''રિલà«\8bડ'' àªªàª° àª\95à«\8dલિàª\95 àª\95રà«\8b, àª\85થવા àª¤à«\8b <em>Ctrl-F5</em> àª\95à«\87 <em>Ctrl-R<em> àª¦àª¬àª¾àªµà«\8b (મà«\87àª\95 àªªàª° <em>â\8c\98-R</em>)\n*<strong>àª\97à«\81àª\97લ àª\95à«\8dરà«\8bમ:</strong> <em>Ctrl-Shift-R</em> àª¦àª¬àª¾àªµà«\8b (મà«\87àª\95 àªªàª° <em>â\8c\98-Shift-R</em>)\n*<strong>àª\88નà«\8dàª\9fરનà«\87àª\9f àª\8fàª\95à«\8dસપà«\8dલà«\8bરર:</strong> <em>Ctrl</em> àª¦àª¬àª¾àªµà«\87લà«\80 àª°àª¾àª\96à«\80નà«\87 <em>રિફà«\8dરà«\87શ</em> àªªàª° àª\95à«\8dલિàª\95 àª\95રà«\8b, àª\85થવા <em>Ctrl-F5</em> àª¦àª¬àª¾àªµà«\8b\n*<strong>àª\93પà«\87રા:</strong> <em>સાધનà«\8b â\86\92 àªªàª¸àª\82દàª\97à«\80àª\93</em>માàª\82 àª\9càª\88નà«\87 àª\95à«\85શ àª¸àª¾àª« àª\95રà«\8b",
+       "clearyourcache": "<strong>નà«\8bàª\82ધ:</strong> àªªàª¾àª¨à«\81àª\82 àª¸àª¾àª\9aવà«\8dયા àªªàª\9bà«\80, àª¤àª®àª¾àª°à«\87 àª¤àª®àª¾àª°àª¾ àª¬à«\8dરાàª\89àª\9dરનà«\80 àª\95à«\85શ àª¬àª¾àª¯àªªàª¾àª¸ àª\95રવાનà«\80 àª\86વશà«\8dયàª\95તા àªªàª¡à«\80 àª¶àª\95à«\87 àª\9bà«\87.\n*<strong>ફાયરફà«\8bàª\95à«\8dસ / àª¸àª«àª¾àª°à«\80:</strong> </em>શà«\80ફà«\8dàª\9f<em> àª¦àª¬àª¾àªµà«\87લà«\80 àª°àª¾àª\96à«\80નà«\87 ''રિલà«\8bડ'' àªªàª° àª\95à«\8dલિàª\95 àª\95રà«\8b, àª\85થવા àª¤à«\8b <em>Ctrl-F5</em> àª\95à«\87 <em>Ctrl-R<em> àª¦àª¬àª¾àªµà«\8b (મà«\87àª\95 àªªàª° <em>â\8c\98-R</em>)\n*<strong>àª\97à«\81àª\97લ àª\95à«\8dરà«\8bમ:</strong> <em>Ctrl-Shift-R</em> àª¦àª¬àª¾àªµà«\8b (મà«\87àª\95 àªªàª° <em>â\8c\98-Shift-R</em>)\n*<strong>àª\88નà«\8dàª\9fરનà«\87àª\9f àª\8fàª\95à«\8dસપà«\8dલà«\8bરર:</strong> <em>Ctrl</em> àª¦àª¬àª¾àªµà«\87લà«\80 àª°àª¾àª\96à«\80નà«\87 <em>રિફà«\8dરà«\87શ</em> àªªàª° àª\95à«\8dલિàª\95 àª\95રà«\8b, àª\85થવા <em>Ctrl-F5</em> àª¦àª¬àª¾àªµà«\8b\n*<strong>àª\93પà«\87રા:</strong> <em>મà«\87નà«\81 â\86\92 àª¸à«\87àª\9fિàª\82àª\97à«\8dસ</em> (<em>àª\93પà«\87રા â\86\92 àªªà«\8dરà«\87ફરà«\87નà«\8dસિàª\9d</em> àª®à«\87àª\95 àªªàª°) àª®àª¾àª\82 àª\9cાàª\93 àª\85નà«\87 àªªàª\9bà«\80 <em>પà«\8dરાયવસà«\80 àª\85નà«\87 àª¸àª¿àª\95à«\8dયà«\81રિàª\9fà«\80 â\86\92 àª¬à«\8dરાàª\89àª\9dà«\80àª\82àª\97 àª¡à«\87àª\9fા àª¸àª¾àª« àª\95રà«\8b â\86\92 àª\95à«\85શ àª¥àª¯à«\87લા àª\9aિતà«\8dરà«\8b àª\85નà«\87 àª«àª¾àª\88લà«\8b</em> àªªàª° àª\9cાàª\93.",
        "usercssyoucanpreview": "'''ટીપ:''' તમારા નવા CSSને સાચવતા પહેલા  \"{{int:showpreview}}\" બટન વાપરી ચકાસણી કરો.",
        "userjsyoucanpreview": "'''ટીપ:''' Use the તમારી નવી JavaScript ને સાચવતા પહેલા   \"{{int:showpreview}}\" બટન વાપરી ચકાસો.",
        "usercsspreview": "'''યાદ રહે કે તમે તમારા સભ્ય CSS નું અવલોકન કરો છે.'''\n'''હજી સીધું તે સચવાયું નથી!'''",
        "userinvalidcssjstitle": "'''ચેતવણી:''' કોઇ પણ \"$1\" પટલ નથી.\nસભ્ય રચિત .css અને  .js પાના બીજી અંગ્રેજી બારખડી શીર્ષક વાપરે છે, દા. ત. {{ns:user}}:Foo/vector.css નહીં કે {{ns:user}}:Foo/Vector.css.",
        "updated": "(સંવર્ધીત)",
        "note": "'''નોંધ:'''",
-       "previewnote": "'''આ ફક્ત પૂર્વાવલોકન છે;'''\nતમારા ફેરફારો હજુ સાચવવામાં નથી આવ્યા!",
+       "previewnote": "<strong>ધ્યાનમાં રાખો કે આ ફક્ત પૂર્વાવલોકન છે.</strong>\nતમારા ફેરફારો હજુ સાચવવામાં આવ્યા નથી!",
        "continue-editing": "ફેરફાર કરવાનું ચાલુ રાખો",
        "previewconflict": "જો તમે આ પાનું સાચવશો તો આ પ્રિવ્યુમાં દેખાય છે તેવું સચવાશે.",
        "session_fail_preview": "'''અફસોસ છે! સત્ર માહિતી ખોઇ દેવાને કારણે અમે તમારું કાર્ય સાચવી ન શક્યાં.'''\nકૃપયા ફરી પ્રયત્ન કરો.\nતેમ છતાં પણ સાચવી ન શકો તો [[Special:UserLogout|logging out]] કરી ફરી પ્રવેશ કરો.",
        "session_fail_preview_html": "'''અફસોસ છે! સત્ર માહિતીનો નાશ થવાથી તમે કરેલ ફેરફાર અમે સાચવી ન શક્યાં .'''\n\n''કેમકે  {{SITENAME}} માં કાચી HTML સક્રીય છે, JavaScript ના હુમલા સામેના રક્ષણ માટે ઝલક પર રોક લગાવી છે .''\n\n'''જો આ ગંભીર પ્રયત્ન હતો તો ફરી પ્રયત્ન કરો .'''\nઅનેતમા છતાં  કમા  ના કરેતો  [[Special:UserLogout|logging out]] કરી ફરી લોગ ઇન કરો.",
        "token_suffix_mismatch": "'''તમારા ફેરફારો કેમકે તમારા ગ્રાહકએ ફેરફાર નાકામાં વિરામચિન્હો અસ્ત વ્યસ્ત કરી દેતા.'''\nઆ પાનાને ખરાબ થતો અટકાવવા આ ફેરફાર રદ્દ કરાયો છે. \nજ્યારે તમે વેબ આધારિત  અજ્ઞાત પ્રોક્સી વાપરતા હોવ ત્યારે આવું બની શકે છે.",
        "edit_form_incomplete": "'''ફેરફાર પત્રનો અમુક ભાગ સર્વર સુધી ન પહોંચ્યો; ખાત્રી કરો કે તમે કરેલા ફેરફાર બરાબર છે અને ફરી પ્રયત્ન કરો.'''",
-       "editing": "$1નો ફેરફાર કરી રહ્યા છો.",
+       "editing": "$1નો ફેરફાર કરી રહ્યા છો",
        "creating": "$1 બનાવી રહ્યા છો",
        "editingsection": "$1 (પરિચ્છેદ)નો ફેરફાર કરી રહ્યા છો",
        "editingcomment": "$1 (પરિચ્છેદ)નો ફેરફાર કરી રહ્યા છો",
        "editconflict": "ફેરફારમાં વિસંગતતા: $1",
-       "explainconflict": "તમે ફેરફાર કરવાની શરૂઆત કરી તે દરમ્યાન અમુક કોઇકે પણ તેમાં ફેરફાર કર્યાં છે.\nઉપરનો અક્ષર દેહ અત્યારનો વિહરમાન સ્થિતિ બતાવે છે.\nતમારા દ્વારા કરાયેલ ફેરફાર નીચેના ક્ષેત્રમાં દેખાય છે.\nતમારે તમારા ફેરફારો વિહરમાન હયાત લેખમાં વિલિન કરવા પડશે. \nજો તમે  \"{{int:savearticle}}\" આ બટન દબાવશો તો <strong>ફક્ત</strong> ઉપરનો લેખ સચવાશે.",
+       "explainconflict": "તમે ફેરફાર કરવાની શરૂઆત કરી તે દરમ્યાન અમુક કોઇકે પણ તેમાં ફેરફાર કર્યાં છે.\nઉપરનો અક્ષર દેહ અત્યારનો વિહરમાન સ્થિતિ બતાવે છે.\nતમારા દ્વારા કરાયેલ ફેરફાર નીચેના ક્ષેત્રમાં દેખાય છે.\nતમારે તમારા ફેરફારો વિહરમાન હયાત લેખમાં વિલિન કરવા પડશે. \nજો તમે  \"$1\" આ બટન દબાવશો તો <strong>ફક્ત</strong> ઉપરનો લેખ સચવાશે.",
        "yourtext": "તમારું લખાણ",
        "storedversion": "સંગ્રહેલ પુનરાવર્તન",
        "nonunicodebrowser": "'''ચેતવણી: તમારું બ્રાઉઝર યુનિકોડ ઉકેલવા સક્ષમ નથી.'''\nઅહીં તમે સુરક્ષિત રીતે ફેરફારો નહીં કરી શકો: ASCII સિવાયના અક્ષરો સંપાદન ચોકઠામાં હેક્સાડેસિમલ સ્વરૂપે દેખાશે.",
        "currentrev-asof": "$1એ જોઈ શકાતી હાલની આવૃત્તિ",
        "revisionasof": "$1 સુધીનાં પુનરાવર્તન",
        "revision-info": "{{GENDER:$6|$2}}$7 દ્વારા $1 સુધીમાં કરવામાં આવેલાં ફેરફારો",
-       "previousrevision": "â\86\90 àª\9cà«\81ના àª«à«\87રફારà«\8b",
-       "nextrevision": "àª\86 àªªàª\9bà«\80નà«\81àª\82 àªªà«\81નરાવરà«\8dતન→",
+       "previousrevision": "â\86\90 àª\9cà«\81નà«\80 àª\86વà«\83તà«\8dતિ",
+       "nextrevision": "àª\86 àªªàª\9bà«\80નà«\80 àª\86વà«\83તà«\8dતિ →",
        "currentrevisionlink": "વર્તમાન આવૃત્તિ",
        "cur": "વર્તમાન",
        "next": "આગળ",
        "page_first": "પહેલું",
        "page_last": "છેલ્લું",
        "histlegend": "વિવિધ પસંદગી:સરખામણી માટે સુધારેલી આવૃતિઓના રેડિયો ખાનાઓ પસંદ કરો અને એન્ટર દબાવો અથવા નીચે આપેલું બટન દબાવો.<br />\nસમજૂતી:'''({{int:cur}})''' = વર્તમાન અને સુધારેલી આવૃતિનો તફાવત, '''({{int:last}})''' = પૂર્વવર્તી ફેરફારનો તફાવત, '''{{int:minoreditletter}}''' = નાનો ફેરફાર.",
-       "history-fieldset-title": "àª\87તિહાસ àª\89àª\96à«\87ળો",
+       "history-fieldset-title": "àª\86વà«\83તà«\8dતિàª\93 àª®àª¾àª\9fà«\87 àª¶à«\8bધો",
        "history-show-deleted": "માત્ર હટાવાયેલા",
        "histfirst": "જુનામાં જુનું",
        "histlast": "નવામાં નવું",
        "compareselectedversions": "પસંદ કરેલા સરખાવો",
        "showhideselectedversions": "પસંદ કરેલા બતાવો / સંતાડો",
        "editundo": "રદ કરો",
-       "diff-empty": "(àª\95à«\8bàª\87 àª­à«\87દ àª¨àª¹ી)",
+       "diff-empty": "(àª\95à«\8bàª\87 àª­à«\87દ àª¨àª¥ી)",
        "diff-multi-sameuser": "(સમાન સભ્ય દ્વારા {{PLURAL:$1|કરાયેલ એક પુનરાવર્તન| કરાયેલા $1 પુનરાવર્તનો}} દર્શાવેલ નથી)",
+       "diff-multi-otherusers": "({{PLURAL:$2|એક અન્ય સભ્ય|$2 સભ્યો}} વડેની {{PLURAL:$1|વચ્ચેની એક આવૃત્તિ|વચ્ચેની $1 આવૃત્તિઓ}} દર્શાવેલ નથી)",
        "diff-multi-manyusers": "{{PLURAL:$2|એક સભ્યએ કરેલું|$2 સભ્યોએ કરેલા}} ({{PLURAL:$1|વચગાળાનું એક પુનરાવર્તન દર્શાવ્યં|વચગાળાનાં $1 પુનરાવર્તનો દર્શાવ્યાં}} નથી.)",
        "searchresults": "પરિણામોમાં શોધો",
        "searchresults-title": "\"$1\" માટેના પરિણામો",
        "search-redirect": "($1થી વાળેલું)",
        "search-section": "(વિભાગ $1)",
        "search-category": "(શ્રેણી $1)",
+       "search-file-match": "(ફાઇલ વિગતને અનુરૂપ છે)",
        "search-suggest": "શું તમે $1 કહેવા માંગો છો?",
-       "search-interwiki-caption": "બંધુ પ્રકલ્પ",
+       "search-interwiki-caption": "બંધુ પ્રકલ્પોમાંથી પરિણામો",
        "search-interwiki-default": "$1 માંથી પરીણામો:",
        "search-interwiki-more": "(વધુ)",
        "search-relatedarticle": "શોધ સંબંધિત",
        "prefs-watchlist-token": "ધ્યાનસૂચિ ચિઠ્ઠી",
        "prefs-misc": "પરચૂરણ",
        "prefs-resetpass": "ગુપ્તસંજ્ઞા બદલો",
-       "prefs-changeemail": "ઈ-મેલ સરનામું બદલવા માટે",
+       "prefs-changeemail": "ઈમેલ સરનામું બદલો અથવા હટાવો",
        "prefs-setemail": "ઈ-મેલ સરનામું ગોઠવો",
        "prefs-email": "ઈ-મેલ સંબંધી વિકલ્પો",
        "prefs-rendering": "દેખાવ",
        "saveprefs": "સાચવો",
        "restoreprefs": "મૂળ વિકલ્પો ફરી ગોઠવો (બધાં વિભાગોમાં)",
        "prefs-editing": "સંપાદન",
-       "rows": "પંક્તિઓ",
-       "columns": "સ્તંભ",
        "searchresultshead": "શોધો",
-       "stub-threshold": "<a href=\"#\" class=\"stub\">stub link</a>નાફોર્મમેટિંગ માટે શરૂઆતિ પગથિયું  (બાઈટ્સ):",
+       "stub-threshold": "આધાર કડી માટે પ્રારુપણ ($1):",
        "stub-threshold-disabled": "નિષ્ક્રિય કરેલ",
        "recentchangesdays": "તાજા ફેરફારોમાં દેખાડવાના દિવસો",
        "recentchangesdays-max": "મહત્તમ  $1 {{PLURAL:$1|દિવસ|દિવસો}}",
        "prefs-tokenwatchlist": "નિશાની",
        "prefs-diffs": "ભેદો",
        "prefs-help-prefershttps": "આ પ્રાથમિકતા તમારા હવે પછીના પ્રવેશથી લાગુ પડશે.",
-       "userrights": "સભ્ય હક્ક પ્રબંધન",
-       "userrights-lookup-user": "સભà«\8dય àª¸àª®à«\81હà«\8b àª¨à«\81àª\82 àªªà«\8dરબàª\82ધન કરો",
+       "userrights": "સભ્ય હક્ક",
+       "userrights-lookup-user": "સભà«\8dય àªªàª¸àª\82દ કરો",
        "userrights-user-editname": "સભ્યનામ દાખલ કરો:",
-       "editusergroup": "સભà«\8dય àª¸àª®à«\81હà«\8b àª¸àª\82પાદà«\80ત àª\95રો",
+       "editusergroup": "સભà«\8dય àª¸àª®à«\81હà«\8b àª¦àª°à«\8dશાવો",
        "editinguser": "{{GENDER:$1|સભ્ય}} <strong>[[User:$1|$1]]</strong> ના વપરાશકર્તા અધિકારો બદલો $2",
-       "userrights-editusergroup": "સભ્ય સમુહો સંપાદીત કરો",
-       "saveusergroups": "સભ્ય સમુહો સાચવો",
+       "userrights-editusergroup": "{{GENDER:$1|સભ્ય}} સમુહો સંપાદીત કરો",
+       "saveusergroups": "{{GENDER:$1|સભ્ય}} સમુહો સાચવો",
        "userrights-groupsmember": "સભ્યપદ:",
        "userrights-groupsmember-auto": "સામે દર્શાવેલા {{PLURAL:$1|જૂથ|જૂથો}}{{GENDER:$2|નો|ની|ના}} અભિપ્રેત સભ્ય:",
        "userrights-groupsmember-type": " $1",
        "right-protect": "સંરક્ષણ સ્તર બદલો અને ધોધાકાર-સંરક્ષિત પાનાઓમાં ફેરફાર કરો.",
        "right-editprotected": "પાનામાં \"{{int:protect-level-sysop}}\" તરીકે ફેરફાર કરો",
        "right-editinterface": "સભ્ય સંભાષણ પટલમાં ફેરફાર કરો",
-       "right-editusercssjs": "અન્ય સભ્યોની CSS અને JavaScript ફાઇલમાં ફેરફાર કરો",
        "right-editusercss": "અન્ય સભ્યોની CSS ફાઇલમાં ફેરફાર કરો",
        "right-edituserjs": "અન્ય સભ્યોની JavaScript ફાઇલમાં ફેરફાર કરો",
        "right-editmyusercss": "તમારી પોતાની CSS ફાઇલોમાં ફેરફાર કરો",
        "rightslogtext": "સભ્યના બદલાયેલ હક્કોની આ સંપાદન યાદિ છે .",
        "action-read": "આ પાનું વાંચો.",
        "action-edit": "આ પાનામાં ફેરફાર કરો",
-       "action-createpage": "નવà«\8b àª²à«\87àª\96 àª¶àª°à«\82 àª\95રો",
-       "action-createtalk": "ચર્ચાનું પાનું બનાવો",
+       "action-createpage": "àª\86 àªªàª¾àª¨à«\81àª\82 àª¬àª¨àª¾àªµો",
+       "action-createtalk": "àª\86 àª\9aરà«\8dàª\9aાનà«\81àª\82 àªªàª¾àª¨à«\81àª\82 àª¬àª¨àª¾àªµà«\8b",
        "action-createaccount": "આ સભ્ય ખાતું બનાવો",
        "action-minoredit": " આ ફેરફારને એક નાના સુધારા તરીકે નોંધો",
        "action-move": "આ પાનું ખસેડો",
        "recentchanges": "તાજા ફેરફારો",
        "recentchanges-legend": "હાલમાં થયેલા ફેરફારોના વિકલ્પ",
        "recentchanges-summary": "વિકિમાં તાજેતરમાં થયેલા ફેરફારો પર અહીંથી નજર રાખો.",
+       "recentchanges-noresult": "આપેલા સમયગાળા દરમિયાન આ માપદંડો માટે કોઇ ફેરફારો મળ્યા નહી.",
        "recentchanges-feed-description": "આ ફીડ દ્વારા વિકિમાં થયેલા તાજા ફેરફારો પર ધ્યાન રાખો.",
        "recentchanges-label-newpage": "આ ફેરફાર દ્વારા નવું પાનું નિર્મિત થયું",
-       "recentchanges-label-minor": "àª\86 àª\8fàª\95 àª¨àª¾àª¨à«\8b àª¸à«\81ધારà«\8b àª\9bà«\87.",
-       "recentchanges-label-bot": "àª\86 àª«à«\87રફાર àª¬à«\8bàª\9f àª¦à«\8dવારા àª\95રાયà«\8b àª\9bà«\87",
+       "recentchanges-label-minor": "àª\86 àª\8fàª\95 àª¨àª¾àª¨à«\8b àª«à«\87રફાર àª\9bà«\87",
+       "recentchanges-label-bot": "àª\86 àª«à«\87રફાર àª¬à«\8bàª\9f àª¦à«\8dવારા àª\95રાયà«\8b àª¹àª¤à«\8b",
        "recentchanges-label-unpatrolled": "આ ફેરફાર હજી ચકાસાયો નથી",
        "recentchanges-label-plusminus": "પાનાનું કદ આપેલા અંકો જેટલાં બાઈટ્સ જેટલું બદલ્યુ છે.",
        "recentchanges-legend-heading": "<strong>કળ:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|નવા પાનાઓની યાદી]] પણ જુઓ)",
-       "rcnotefrom": "નીચે <strong>$2</strong> થી ફેરફારો દર્શાવેલ છે (<strong>$1</strong> સુધી દર્શાવલે છે).",
+       "recentchanges-submit": "બતાવો",
+       "rcnotefrom": "નીચે <strong>$3, $4</strong> થી {{PLURAL:$5|ફેરફાર|ફેરફારો}} દર્શાવેલ છે (<strong>$1</strong> સુધી દર્શાવેલ છે).",
        "rclistfrom": "$3 $2 બાદ થયેલા નવા ફેરફારો બતાવો",
        "rcshowhideminor": "નાના ફેરફારો $1",
        "rcshowhideminor-show": "બતાવો",
        "rcshowhidemine": "મારા ફેરફારો $1",
        "rcshowhidemine-show": "બતાવો",
        "rcshowhidemine-hide": "છુપાવો",
-       "rclinks": "છેલ્લાં $2 દિવસમાં થયેલા છેલ્લાં $1 ફેરફારો દર્શાવો<br />$3",
+       "rcshowhidecategorization": "પાનાનું વર્ગીકરણ $1",
+       "rcshowhidecategorization-show": "બતાવો",
+       "rcshowhidecategorization-hide": "છુપાવો",
+       "rclinks": "છેલ્લાં $2 દિવસમાં થયેલા છેલ્લાં $1 ફેરફારો દર્શાવો",
        "diff": "ભેદ",
        "hist": "ઇતિહાસ",
        "hide": "છુપાવો",
        "newpageletter": "નવું",
        "boteditletter": "બૉટ",
        "number_of_watching_users_pageview": "[$1 જોઇરહેલ  {{PLURAL:$1|સભ્ય|સભ્યો}}]",
-       "rc_categories": "શ્રેણીઓ સુધી મર્યાદિત (\"|\" થી જુદા પાડો)",
-       "rc_categories_any": "કોઇ પણ",
+       "rc_categories": "શ્રેણીઓ સુધી મર્યાદિત (\"|\" થી જુદા પાડો):",
+       "rc_categories_any": "કોઇ પણ પસંદ કરેલ",
        "rc-change-size-new": "બદલાયા પછી $1 {{PLURAL:$1|બાઈટ|બાઇટ્સ}}",
        "newsectionsummary": "/* $1 */ નવો વિભાગ",
        "rc-enhanced-expand": "વિગતો બતાવો",
        "listfiles-latestversion-no": "ના",
        "file-anchor-link": "ફાઇલ/દસ્તાવેજ",
        "filehist": "ફાઇલનો ઇતિહાસ",
-       "filehist-help": "તારિખ/સમય ઉપર ક્લિક કરવાથી તે સમયે ફાઇલ કેવી હતી તે જોવા મળશે.",
+       "filehist-help": "તારà«\80ખ/સમય ઉપર ક્લિક કરવાથી તે સમયે ફાઇલ કેવી હતી તે જોવા મળશે.",
        "filehist-deleteall": "બધા ભૂસો",
        "filehist-deleteone": "હટાવો",
        "filehist-revert": "પૂર્વવત કરો",
        "filehist-current": "વર્તમાન",
        "filehist-datetime": "તારીખ/સમય",
        "filehist-thumb": "લઘુચિત્ર",
-       "filehist-thumbtext": "$1àª\8f àª¹àª¤à«\81àª\82 àª¤à«\87 àª¸àª\82સà«\8dàª\95રણનà«\81àª\82 àª²àª\98à«\81àª\9aિતà«\8dર",
+       "filehist-thumbtext": "$1નà«\81àª\82 àª²àª\98à«\81àª\9aિતà«\8dર àª¸àª\82સà«\8dàª\95રણ",
        "filehist-nothumb": "લઘુચિત્ર નથી",
        "filehist-user": "સભ્ય",
        "filehist-dimensions": "પરિમાણો",
        "mostrevisions": "સૌથી વધુ ફેરફાર થયેલા પાનાં",
        "prefixindex": "પૂર્વાક્ષર સૂચિ",
        "prefixindex-namespace": "શરૂઆતમાં ($1 namespace) ધરાવતા પાનાં",
+       "prefixindex-submit": "બતાવો",
        "shortpages": "નાનાં પાનાં",
        "longpages": "લાંબા પાનાઓ",
        "deadendpages": "મૃતાંત પાના",
        "usereditcount": "$1 {{PLURAL:$1|ફેરફાર|ફેરફારો}}",
        "usercreated": "$1 તારીખે $2 વાગ્યે {{GENDER:$3|બનાવ્યું}}",
        "newpages": "નવાં પાનાં",
+       "newpages-submit": "બતાવો",
        "newpages-username": "સભ્યનામ:",
        "ancientpages": "સૌથી જૂનાં પાનાં",
        "move": "નામ બદલો",
        "notargettext": "આ ક્રિયા જેના પર કરવાની છે તે સભ્ય કે પાનાની માહિતી તમે પૂરી પાડી નથી",
        "nopagetitle": "આવું કોઇ લક્ષ્ય પાનું નથી",
        "nopagetext": "તમે લખેલ પાનું અસ્તિત્વમાં નથી",
-       "pager-newer-n": "{{PLURAL:$1|નવું 1|નવા $1}}",
-       "pager-older-n": "{{PLURAL:$1|જૂનું 1|જૂનાં $1}}",
+       "pager-newer-n": "{{PLURAL:$1|નવું |નવા $1}}",
+       "pager-older-n": "{{PLURAL:$1|જૂનું |જૂનાં $1}}",
        "suppress": "નાબૂદ",
        "querypage-disabled": "કાર્યક્ષમતાના કારણે આ ખાસ પાનું નિષ્ક્રિ કરાયું છે.",
        "apihelp": "API મદદ",
        "apihelp-no-such-module": "સાધન જૂથ \"$1\" ન મળ્યું.",
+       "apisandbox-unfullscreen": "પાનું બતાવો",
        "apisandbox-submit": "વિનંતી કરો",
        "apisandbox-reset": "સાફ કરો",
        "apisandbox-examples": "ઉદાહરણો",
        "booksources-text": "નીચે દર્શાવેલ યાદી એ કડીઓ બતાવે છે જેઓ નવા અને જૂના પુસ્તકો  વેચે છે , અને તમે માંગેલ વસ્તુ સંબંધિ વધુ મહિતી પણ ધરાવી શકે છે.",
        "booksources-invalid-isbn": "આપેલ ISBN વૈધ નથી લાગતો; મૂળ સ્રોતને ચકાસી, ભૂલ શોધી, ખરી માહિતી આપો.",
        "specialloguserlabel": "કર્તા:",
-       "speciallogtitlelabel": "લક્ષ્યાંક (શીર્ષક અથવા વપરાશકર્તા)",
+       "speciallogtitlelabel": "લક્ષ્યાંક (શીર્ષક અથવા {{ns:user}}:સભ્યનું સભ્યનામ):",
        "log": "લૉગ",
+       "logeventslist-submit": "બતાવો",
        "all-logs-page": "બધાં જાહેર માહિતીપત્રકો",
        "alllogstext": "{{SITENAME}} ના લોગનો સંયુક્ત વર્ણન.\nતમે લોગનો પ્રકાર,સભ્ય નામ અથવા અસરગ્રસ્ત પાના આદિ પસંદ કરી તમારી યાદિ ટૂંકાવી શકો.",
        "logempty": "લોગમાં આને મળતી કોઇ વસ્તુ નથી",
        "log-title-wildcard": "આ શબ્દો દ્વારા શરૂ થનાર શીર્ષકો શોધો",
        "showhideselectedlogentries": "પસંદગીની લોગ નોંધણીઓ બતાવો/છુપાવો",
-       "allpages": "બધા પાના",
+       "allpages": "બધા પાનાંઓ",
        "nextpage": "આગળનું પાનું ($1)",
        "prevpage": "પાછળનું પાનું ($1)",
        "allpagesfrom": "આનાથી શરૂ થતા પાના દર્શાવો:",
        "allpagesprefix": "ઉપસર્ગ ધરાવતા પાનાં શોધો",
        "allpagesbadtitle": "આપનું ઈચ્છિત શીર્ષક અમાન્ય છે, ખાલી છે, અથવાતો અયોગ્ય રીતે આંતર-ભાષિય કે આંતર-વિકિ સાથે જોડાયેલું શીર્ષક છે.\nશક્ય છે કે તેમાં એક કે વધુ એવા અક્ષર કે ચિહ્નો છે કે જે પાનાનાં શીર્ષક માટે અવૈધ છે.",
        "allpages-bad-ns": "{{SITENAME}} ને નામસ્થળ  \"$1\" નથી.",
-       "allpages-hide-redirects": "àª\85નà«\8dયતà«\8dર àªµàª¾àª³à«\87લાàª\82 પાનાંઓ છૂપાવો",
+       "allpages-hide-redirects": "દિશાનિરà«\8dદà«\87શિત પાનાંઓ છૂપાવો",
        "cachedspecial-refresh-now": "આધૂનિક બતાવો.",
        "categories": "શ્રેણીઓ",
+       "categories-submit": "બતાવો",
        "categoriespagetext": "નીચેની {{PLURAL:$1|શ્રેણી|શ્રેણીઓ}}માં પાના કે અન્ય સભ્યો છે.\n[[Special:UnusedCategories|વણ વપરાયેલી શ્રેણીઓ]] અત્રે દર્શાવવામાં આવી નથી.\n[[Special:WantedCategories|ઈચ્છિત શ્રેણીઓ]] પણ જોઈ જુઓ.",
        "categoriesfrom": "આનાથી શરૂ થતી શ્રેણી દર્શાવો:",
        "deletedcontributions": "સભ્યનું યોગદાન ભૂંસી નાખો",
        "trackingcategories-disabled": "વર્ગ અસક્રિય છે.",
        "mailnologin": "મેળવનારનું સરનામું નથી",
        "mailnologintext": "અન્ય સભ્યને ઇ-મેલ મોકલવા માટે તમે [[Special:UserLogin|logged in]] પ્રવેશ કરેલ હોવો જોઈએ અને તમારા[[Special:Preferences|preferences]] વિકલ્પોમાં તમારા ઈ-મેલ સરનામાની પુષ્ટિ થયેલી હોવી જોઈએ",
-       "emailuser": "સભà«\8dયનà«\87 àª\87-મેલ કરો",
+       "emailuser": "àª\86 àª¸àª­à«\8dયનà«\87 àª\87મેલ કરો",
        "emailuser-title-target": "આ {{GENDER:$1|સભ્ય}}ને ઇમેલ કરો",
        "emailuser-title-notarget": "ઇ-મેલ વપરાશકર્તા",
        "emailpagetext": "તમે નીચે દર્શાવેલ ફોર્મ વાપરી આ {{GENDER:$1|સભ્ય}}ને ઇ-મેલ મોકલી શકો છો.\nતમે [[Special:Preferences|તમારી પસંદમાં]] જે ઇ-મેલ સરનામું લખ્યું હશે તે \"દ્વારા\"ના નામ હેઠળ દેખાશે, જેથી ઇ-મેલ મેળવનાર તમને સંદેશાનો જવાબ આપી શકશે.",
        "unwatchthispage": "નીરીક્ષણ બંધ કરો",
        "notanarticle": "માહિતી વિનાનું પાનું",
        "notvisiblerev": "અન્ય સભ્ય દ્વારા થયેલું સંપાદન ભૂંસી નખાયું છે.",
-       "watchlist-details": "ચર્ચાનાં પાનાં ન ગણતા {{PLURAL:$1|$1 પાનું|$1 પાનાં}} ધ્યાનસૂચીમાં છે.",
+       "watchlist-details": "àª\9aરà«\8dàª\9aાનાàª\82 àªªàª¾àª¨àª¾àª\82 àª\85લàª\97થà«\80 àª¨ àª\97ણતા {{PLURAL:$1|$1 àªªàª¾àª¨à«\81àª\82|$1 àªªàª¾àª¨àª¾àª\82}} àª§à«\8dયાનસà«\82àª\9aà«\80માàª\82 àª\9bà«\87.",
        "wlheader-enotif": "ઈમેલ સૂચના પદ્ધતિ સક્રીય કરાઈ.",
        "wlheader-showupdated": "તમારી છેલ્લી મુલાકાત પછી બદલાયેલાં પાના  '''ઘાટા''' અક્ષરો વડે દર્શાવ્યાં છે.",
-       "wlnote": "નીચે $3, $4 વાગ્યા સુધીના છેલ્લા {{PLURAL:$2|એક કલાક|'''$2''' કલાક}}માં થયેલા {{PLURAL:$1|ફેરફાર|'''$1''' ફેરફારો }} દર્શાવ્યા છે.",
+       "wlnote": "નીચે $3, $4 વાગ્યા સુધીના છેલ્લા {{PLURAL:$2|એક કલાક|<strong>$2</strong> કલાક}}માં થયેલા {{PLURAL:$1|ફેરફાર|<strong>$1</strong> ફેરફારો }} દર્શાવ્યા છે.",
        "wlshowlast": "છેલ્લા $1 કલાકો $2 દિવસો બતાવો",
+       "watchlist-hide": "છુપાવો",
+       "watchlist-submit": "બતાવો",
+       "wlshowhidecategorization": "પાનાનું વર્ગીકરણ",
        "watchlist-options": "ધ્યાનસૂચિના વિકલ્પો",
        "watching": "નજર રાખી રહ્યાં છો...",
        "unwatching": "નજર રાખવાની બંધ કરી છે...",
        "delete-confirm": "$1ને ભૂસી નાંખો.",
        "delete-legend": "રદ કરો",
        "historywarning": "'''ચેતવણી:''' જે પાનું તમે હટાવવા જઇ રહ્યાં છો તેને આશરે $1 {{PLURAL:$1|પુનરાવર્તન|પુનરાવર્તનો}}નો ઇતિહાસ છે:",
+       "historyaction-submit": "બતાવો",
        "confirmdeletetext": "આપ આ પાનું તેના ઇતિહાસ (બધાજ પૂર્વ  ફેરફારો) સાથે હટાવી રહ્યાં છો.\nકૃપા કરી ખાત્રી કરો કે આપ આમ કરવા ઇચ્છો છો, આપ આના સારા-નરસા પરિણામોથી વાકેફ છો, અને આપ આ કાર્ય [[{{MediaWiki:Policy-url}}|નીતિ]]ને અનુરૂપ જ કરી રહ્યાં છો.",
        "actioncomplete": "કામ પૂર્ણ",
        "actionfailed": "કાર્ય અસફળ",
        "minimum-size": "લઘુત્તમ કદ",
        "maximum-size": "મહત્તમ કદ",
        "pagesize": "(બાઇટ્સ)",
-       "restriction-edit": "બદલો",
+       "restriction-edit": "ફà«\87રફાર àª\95રો",
        "restriction-move": "ખસેડો",
        "restriction-create": "બનાવો",
        "restriction-upload": "ફાઇલ ચઢાવો",
        "undeleteviewlink": "જુઓ",
        "undeleteinvert": "પસંદગી ઉલટાવો",
        "undeletecomment": "કારણ:",
-       "undeletedrevisions": "{{PLURAL:$1|૧ સંપાદન|$1 સંપાદનો}} પુન સ્થાપિત કરાયા",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 ફેરફાર|$1 ફેરફારો}} અને {{PLURAL:$2|1 ફાઈલા|$2 ફાઈલો}} પુનઃસ્થાપિત",
-       "undeletedfiles": "{{PLURAL:$1|1 ફાઇલ|$1 ફાઇલો}} પુનઃસ્થાપિત",
        "cannotundelete": "પુનર્જીવિત કરવાનું કાર્ય અસફળ:\n$1",
        "undeletedpage": "'''$1 પુનઃસ્થાપિત કરાયા'''\n\nતાજેતરમાં હટાવેલા કે પુનઃસ્થાપિત થયેલા ફેરફારની નોંધ નો સંદર્ભ અહીં ઉપ્લબ્ધ [[Special:Log/delete|deletion log]].",
        "undelete-header": "હાલમાં હટાવેલ પાનાનો  [[Special:Log/delete|the deletion log]]  જુઓ",
        "namespace_association": "સંકળાયેલ નામસ્થળ",
        "tooltip-namespace_association": "પસંદ કરેલા નામસ્થળ સાથેસંલગ્ન નામ સ્થ્ળની માહિતી શામિલ કરવા આ ખાનું પણ અંકિત કરો",
        "blanknamespace": "(મુખ્ય)",
-       "contributions": "{{GENDER:$1|સભà«\8dય}}નà«\81àª\82 àª¯à«\8bàª\97દાન",
-       "contributions-title": "સભ્ય $1નું યોગદાન",
-       "mycontris": "યોગદાન",
+       "contributions": "{{GENDER:$1|સભà«\8dય}}ના àª¯à«\8bàª\97દાનà«\8b",
+       "contributions-title": "$1 માટે સભ્યના યોગદાનો",
+       "mycontris": "યોગદાન",
        "anoncontribs": "યોગદાનો",
        "contribsub2": "($2) માટે {{GENDER:$3|$1}}",
        "nocontribs": "આ પરિમાણને મળતી પરિણામ નથી મળ્યાં",
        "sp-contributions-search": "યોગદાન શોધો",
        "sp-contributions-username": "IP સરનામું અથવા સભ્યનામ:",
        "sp-contributions-toponly": "માત્ર છેલ્લી આવૃત્તિના ફેરફારો જ દર્શાવો",
+       "sp-contributions-newonly": "માત્ર નવા પાનાં બનાવ્યા હોય તેવા ફેરફાર દર્શાવો",
+       "sp-contributions-hideminor": "નાના ફેરફારો છુપાવો",
        "sp-contributions-submit": "શોધો",
        "whatlinkshere": "અહી શું જોડાય છે",
        "whatlinkshere-title": "\"$1\" ને જોડતા પાનાં",
        "tooltip-ca-nstab-category": "શ્રેણીઓનું પાનું જુઓ",
        "tooltip-minoredit": "આને નાનો ફેરફાર ગણો",
        "tooltip-save": "તમે કરેલાં ફેરફારો સુરક્ષિત કરો",
-       "tooltip-preview": "તમે કરેલાં ફેરફારો જોવા મળશે, કૃપા કરી કાર્ય સુરક્ષિત કરતાં પહેલા આ જોઇ લો",
-       "tooltip-diff": "તમà«\87 àª®àª¾àª¹àª¿àª¤àª¿માં કયા ફેરફારો કર્યા છે તે જોવા મળશે",
-       "tooltip-compareselectedversions": "અ પાનાનાં પસંદ કરેલા બે વૃત્તાંત વચ્ચેનાં ભેદ જુઓ.",
+       "tooltip-preview": "તમે કરેલાં ફેરફારોનું પૂર્વદર્શન કરો. કૃપા કરી કાર્ય સુરક્ષિત કરતાં પહેલા આ જોઇ લો.",
+       "tooltip-diff": "તમà«\87 àª®àª¾àª¹àª¿àª¤à«\80માં કયા ફેરફારો કર્યા છે તે જોવા મળશે",
+       "tooltip-compareselectedversions": "અા પાનાની પસંદ કરેલી બે આવૃત્તિઓ વચ્ચેનો ભેદ જુઓ",
        "tooltip-watch": "આ પાનાને તમારી ધ્યાનસૂચિમાં ઉમેરો",
        "tooltip-watchlistedit-normal-submit": "શીર્ષકો હટાવો",
        "tooltip-watchlistedit-raw-submit": "ધ્યાનસૂચિ અધ્યતન બનાવો",
        "spambot_username": "મિડિયાવિકી સ્પેમ સફાઇ",
        "spam_reverting": " $1 પર કડી ન ધરાવતા છેલ્લા ફેરેફાર પર પુનઃ સ્થાપન કરાય છે",
        "spam_blanking": "બધા ફેરફારોમાં  $1 પર કડી હતી, આને હટાવી દેવામાં આવે છે",
-       "simpleantispam-label": "સà«\8dપામ-વિરà«\8bધà«\80 àª¤àªªàª¾àª¸.\nઆને <strong>ના</strong> ભરશો!",
+       "simpleantispam-label": "સà«\8dપામ-વિરà«\8bધà«\80 àª\9aàª\95ાસણà«\80.\nઆને <strong>ના</strong> ભરશો!",
        "pageinfo-title": " \"$1\" માટે માહિતી",
        "pageinfo-not-current": "ક્ષમા કરો, જુની આવૃત્તિ માંથી આ સૂચના આપી નથી શકતા.",
        "pageinfo-header-basic": "સામાન્ય માહિતી",
        "pageinfo-length": "પાનાંની લંબાઇ (બાઇટમાં)",
        "pageinfo-article-id": "પાનાં ઓળખ",
        "pageinfo-language": "પાનાંની વિગતની ભાષા",
+       "pageinfo-content-model": "પાનાનું લખાણ બંધારણ",
        "pageinfo-robot-policy": "રોબોટ્સ દ્વારા અનુક્રમિત",
        "pageinfo-robot-index": "માન્ય",
        "pageinfo-robot-noindex": "અમાન્ય",
        "pageinfo-watchers": "પાના નીરીક્ષકોની સંખ્યા",
+       "pageinfo-few-watchers": "$1 કરતા ઓછા {{PLURAL:$1|ચાતક|ચાતકો}}",
        "pageinfo-redirects-name": "આ પાનાં પર દિશાનિર્દેશનોની સંખ્યા",
-       "pageinfo-subpages-name": "આ પાનાંનું ઉપપાનું",
+       "pageinfo-subpages-name": "આ પાનાના ઉપપાનાઓ",
+       "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|દિશાનિર્દેશન|દિશાનિર્દેશનો}}; $3 {{PLURAL:$3|દિશાનિર્દેશન નહી|દિશાનિર્દેશનો નહી}})",
        "pageinfo-firstuser": "પૃષ્ઠ સર્જક",
        "pageinfo-firsttime": "પાનાં બનાવવાની તારીખ",
        "pageinfo-lastuser": "છેલ્લો ફેરફાર કરનાર",
        "pageinfo-toolboxlink": "પાનાંની માહિતી",
        "pageinfo-redirectsto": "તરફ દિશાનિર્દેશન",
        "pageinfo-redirectsto-info": "માહિતી",
+       "pageinfo-contentpage": "લખાણ પાના તરીકે ગણાયેલ",
        "pageinfo-contentpage-yes": "હા",
        "pageinfo-protect-cascading-yes": "હા",
        "pageinfo-category-info": "શ્રેણી માહિતી",
        "newimages-summary": "આ ખાસ પાનું છેવટની  ચડાવેલા વફાઈલા બતાવે છે",
        "newimages-legend": "ચાળણી",
        "newimages-label": "ફાઈલનામ (કે તેનો ભાગ)",
+       "newimages-newbies": "માત્ર નવા ખુલેલાં ખાતાઓનું યોગદાન બતાવો",
        "noimages": "જોવા માટે કશું નથી.",
        "ilsubmit": "શોધો",
        "bydate": "તારીખ પ્રમાણે",
        "metadata-help": "આ માધ્યમ સાથે વધુ માહિતિ સંકળાયેલી છે, જે સંભવતઃ માધ્યમ (ફાઇલ) બનાવવા માટે ઉપયોગમાં લેવાયેલા ડિજીટલ કેમેરા કે સ્કેનર દ્વારા ઉમેરવામાં આવી હશે.\n<br />જો માધ્યમને તેના મુળ રૂપમાંથી ફેરફાર કરવામાં આવશે તો શક્ય છે કે અમુક માહિતિ પુરેપુરી હાલમાં છે તેવી રીતે ના જળવાઇ રહે.",
        "metadata-expand": "વિસ્તૃત કરેલી વિગતો બતાવો",
        "metadata-collapse": "વિસ્તૃત કરેલી વિગતો છુપાવો",
-       "metadata-fields": "જ્યારે મૅટાડેટાનો કોઠો વિલિન થઇ જતો હશે ત્યારે આ સંદેશામાં સુચવેલી મૅટાડેટા માહિતી ચિત્રના પાનાની દૃશ્ય આવૃત્તિમાં ઉમેરવામાં આવશે.\nઅન્ય આપોઆપ જ છુપાઇ જશે.\n* બનાવટ\n* મોડલ\n* મુળતારીખ\n* એક્ષપોઝરસમય\n* એફનંબર\n* એઇએસઓસ્પીડસેટિંગ્સ\n* ફોકલલેંથ\n* કલાકાર\n* કોપીરાઇટ\n* ચિત્રનું વર્ણન\n* જીપીએસરેખાંશ\n* જીપીએસઅક્ષાંશ\n* જીપીએસઉંચાઈ",
+       "metadata-fields": "જ્યારે મૅટાડેટાનો કોઠો વિલિન થઇ જતો હશે ત્યારે આ સંદેશામાં સુચવેલી મૅટાડેટા માહિતી ચિત્રના પાનાની દૃશ્ય આવૃત્તિમાં ઉમેરવામાં આવશે.\nઅન્ય આપોઆપ જ છુપાઇ જશે.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-imagewidth": "પહોળાઈ",
        "exif-imagelength": "ઊંચાઈ",
        "exif-bitspersample": "બીટ્સ પ્રતિ ભાગ",
        "watchlistedit-raw-done": "તમારી ધ્યાના સૂચિ અધ્યતન કરાઈ.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 શીર્ષક |$1 શીર્ષકો}} ઉમેરાયા :",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 શીર્ષક |$1 શીર્ષકો  }} હટાવાયા :",
-       "watchlistedit-clear-title": "ધà«\8dયાનસà«\82àª\9aિ àª\96ાલà«\80 àª\95રà«\80",
+       "watchlistedit-clear-title": "ધà«\8dયાનસà«\82àª\9aિ àª\96ાલà«\80 àª\95રà«\8b",
        "watchlistedit-clear-legend": "ધ્યાનસૂચિ ખાલી કરો",
        "watchlistedit-clear-titles": "શીર્ષકો:",
        "watchlistedit-clear-done": "તમારી ધ્યાના સૂચિ ખાલી કરાઈ.",
        "version-entrypoints-header-url": "URL",
        "version-libraries-library": "લાઇબ્રેરી",
        "version-libraries-version": "આવૃત્તિ",
+       "redirect": "ફાઇલ, સભ્ય, પાનું, આવૃત્તિ, અથવા લૉગ ઓળખ વડે દિશાનિર્દેશન",
        "redirect-submit": "જાઓ",
        "redirect-lookup": "જુઓ:",
        "redirect-value": "કિંમત:",
        "htmlform-cloner-create": "વધુ ઉમેરો",
        "htmlform-cloner-delete": "હટાવો",
        "logentry-delete-delete": "$1 દ્વારા પાનું $3 {{GENDER:$2|દૂર કરવામાં આવ્યું}}",
-       "logentry-delete-restore": "$1 {{GENDER:$2|પુનઃસંગ્રહ}} પાનું $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|પુનઃસંગ્રહ}} પાનું $3 ($4)",
        "logentry-delete-event": "$1 એ {{PLURAL:$5|લૉગ ઘટના|$5 લૉગ ઘટનાઓ}} ની દ્રશ્યતા $3 પર {{GENDER:$2|બદલેલ}} છે: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|એ}} પૃષ્ઠ $3 પરના {{PLURAL:$5|એક પુનરાવર્તન|$5 પુનરાવર્તનો}}ની દૃષ્યતા બદલી: $4",
        "logentry-delete-event-legacy": "$1એ $3 પર લોગ ઘટનાઓની દૃશ્યતા {{GENDER:$2|બદલી}}",
        "logentry-newusers-create2": "સભ્ય ખાતું $3 $1 વડે {{GENDER:$2|બનાવવામાં આવ્યું હતું}}",
        "logentry-newusers-autocreate": "વપરાશકર્તા ખાતું $1 આપમેળે {{GENDER:$2|બનાવવામાં આવ્યું હતું}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|દ્વારા ચડાવેલ}} $3",
+       "logentry-upload-overwrite": "$1 એ $3 ની નવી આવૃત્તિ {{GENDER:$2|ચડાવી}}",
        "rightsnone": "(કંઈ નહી)",
-       "revdelete-summary": "સંપાદનનો સંક્ષિપ્ત અહેવાલ",
        "feedback-adding": "પ્રતિભાવ આ પાના પર ઉમેરાઈ રહ્યો છે.",
        "feedback-bugcheck": "સરસ! જરા જોઈ લેશો કે આ  પહેલેથી જ હાજર [$1 known bugs] નથીને?",
        "feedback-bugnew": "મેં તપાસ્યું.  નવી ત્રુટીની જાણ કરો.",
        "feedback-thanks-title": "આભાર !",
        "searchsuggest-search": "{{SITENAME}} શોધો",
        "searchsuggest-containing": "આ શબ્દ ધરાવતા...",
-       "api-error-badaccess-groups": "આ વિકિ પર ફાઈલ ચઢાવવાની પરવાનગી તમને નથી.",
        "api-error-badtoken": "આંતરીક ત્રુટી: ખરાબ ટોકન",
-       "api-error-copyuploaddisabled": "આ સર્વર પર URL દ્વારા માહિતી ચઢાવવા પર પ્રતિબંધ",
-       "api-error-duplicate": "સમાન માહિતી ધરાવતી {{PLURAL:$1|બીજી ફાઇલ|બીજી અન્ય ફાઇલ્સ}} સાઇટ પર હાજર છે જ.",
-       "api-error-duplicate-archive": "ત્યાં {{PLURAL:$1|was another file|were some other files}} તે જ મહિતી સાથે મોજૂદ છે , પણ {{PLURAL:$1|it was|they were}} હટાવી દો.",
-       "api-error-empty-file": "તમે ચડાવેલ ફાઈલ ખાલી છે",
        "api-error-emptypage": "નવા ખાલી પાનાં બનાવવાની પરવાનગી નથી.",
-       "api-error-fetchfileerror": "આંતરીક ત્રુટી: ફાઈલ લાવતી વખતે અમુક ગડબડ થઈ",
-       "api-error-fileexists-forbidden": "\"$1\" નામે ફાઇલ અસ્તિત્વમાં છે, અને તે અધિલેખિત થઈ શકશે નહિ.",
-       "api-error-file-too-large": "તમે ચડાવેલી ફાઈલ ખૂબ મોટી છે",
-       "api-error-filename-tooshort": "ફાઇલ નામ ખૂબ ટૂંકું છે",
-       "api-error-filetype-banned": "આ પ્રકારની ફાઈલ પ્રતિબંધિત છે.",
-       "api-error-filetype-banned-type": "$1 {{PLURAL:$4| માન્ય ફાઇલ પ્રકાર નથી| માન્ય ફાઇલ પ્રકારો નથી }}. માન્ય {{PLURAL:$3|ફાઇલ પ્રકાર છે|ફાઇલ પ્રકારો  છે}} $2.",
-       "api-error-filetype-missing": "ફાઈલને ઍક્સટેન્શન નથી",
-       "api-error-hookaborted": "તમે કરેલ ફેરફારો વિસ્તારીત ખૂંટા દ્વારા રોકી દેવાયા.",
-       "api-error-http": "આંતરીક ક્ષતિ: સર્વસનો સંપર્ક કરવામાં નિષ્ફળતા",
-       "api-error-illegal-filename": "ફાઈલા નામને પરવાનગી નથી",
-       "api-error-internal-error": "આંતરીક ત્રુટિ : વિકિ પર ફાઈલ ચડાવતા કાંઈક ગડબડ થઈ",
-       "api-error-invalid-file-key": "આંતરીક ક્ષતિ: હંગામી સંગ્રહ સ્થળ પર ફાઈન ન મળી",
-       "api-error-missingparam": "આંતરીક ત્રુટી: અરજીમાં માહિતી ખુટે છે",
-       "api-error-missingresult": "આંતરીક ત્રુટી:  નકલ સફળ રહી કે કેમ તેની ખાત્રી ન કરી શકાઈ.",
-       "api-error-mustbeloggedin": "ફાઈલ ચઢાવવા તમારે લોગીન કરેલું હોવું જોઈએ.",
-       "api-error-mustbeposted": "આંતરીક ત્રુટી: તમારી વિનંતિમાં HTTP POST હોવી જોઈએ",
-       "api-error-noimageinfo": "ફાઈલ સફળતા પૂર્વક ચઢાવાઈ, પણ  ફાઈલ વિષે સર્વરે પૂરી માહિતી ન આપી",
-       "api-error-nomodule": "આંતરીક ક્ષતિ: ફાઈલ ચઢાવવાનું મોડ્યુલ સેટ નથી",
-       "api-error-ok-but-empty": "આંતરીક ત્રુટી: સર્વર તરફથી કોઈ પ્રત્યુત્તર નથી",
-       "api-error-overwrite": "વિહરમાન ફાઇલ પર પુનર્લેખન કરવાની પરવાનગી નથી",
-       "api-error-stashfailed": "આંતરીક ક્ષતિ: હંગામી ફાઈલ સંચયમાં સર્વર નિષ્ફળ",
        "api-error-publishfailed": "આંતરીક ક્ષતિ: હંગામી ફાઈલ સંચયમાં સર્વર નિષ્ફળ.",
-       "api-error-timeout": "અપેક્ષિત સમય સુધી સર્વરે પ્રત્યુત્તર ન આપ્યો.",
-       "api-error-unclassified": "અજ્ઞાત ચૂક થઈ.",
-       "api-error-unknown-code": "અજ્ઞાત ક્ષતિ: \"$1\".",
-       "api-error-unknown-error": "આંતરીક ત્રુટિ : તમારી ફાઈલ ચડાવાતા કાંઈક ગડબડ થઈ.",
-       "api-error-unknown-warning": "અજ્ઞાત ચેતચણી: \"$1\".",
+       "api-error-stashfailed": "આંતરીક ક્ષતિ: હંગામી ફાઈલ સંચયમાં સર્વર નિષ્ફળ",
+       "api-error-unknown-warning": "અજ્ઞાત ચેતવણી: \"$1\".",
        "api-error-unknownerror": "અજ્ઞાત ક્ષતિ: \"$1\".",
-       "api-error-uploaddisabled": "આ વીકી પર અપલોડ નિષ્ક્રિય કરવામાં આવેલ છે",
-       "api-error-verification-error": "ફાઈલ યાતો ખરાબ થઈ ગઈ છે યાતો તેનું ઍક્સટેન્શન (વિસ્તરક) ખોટો છે.",
        "duration-seconds": "$1 {{PLURAL:$1|સેકંડ|સેકંડો}}",
        "duration-minutes": "$1 {{PLURAL:$1|મિનિટ|મિનિટો}}",
        "duration-hours": "$1 {{PLURAL:$1|કલાક|કલાકો}}",
        "special-characters-group-thai": "થાઈ",
        "special-characters-group-lao": "લાઓ",
        "special-characters-group-khmer": "ખ્મેર",
-       "mw-widgets-titleinput-description-new-page": "પાનું અસ્તિત્વ ધરાવતું નથી."
+       "mw-widgets-titleinput-description-new-page": "પાનું અસ્તિત્વ ધરાવતું નથી.",
+       "randomrootpage": "યાદચ્છિક મૂળ પાનું"
 }
index 7c47068..efda525 100644 (file)
        "yourpasswordagain": "Aascreeu dt'ockle arrey:",
        "login": "Log stiagh",
        "nav-login-createaccount": "Log stiagh / croo coontys",
-       "userlogin": "Log stiagh / croo coontys",
-       "userloginnocreate": "Log stiagh",
        "logout": "Log magh",
        "userlogout": "Log magh",
        "notloggedin": "Cha nel ou loggit stiagh",
-       "nologin": "Nagh vel loggal stiagh ayd? '''$1'''.",
-       "nologinlink": "Croo coontys",
        "createaccount": "Croo coontys",
-       "gotaccount": "Vel coontys ayd hannah? '''$1'''.",
-       "gotaccountlink": "Log stiagh",
        "createaccountmail": "Croo fockle arrey shallidagh gyn tort as cur eh da'n post-l reiht ayd",
-       "createaccountreason": "Fa:",
        "loginerror": "Marranys loggal stiagh",
        "createaccounterror": "Cha nod shin croo coontys: $1",
        "noname": "Cha honree uss ennym ymmydeyr fondagh.",
        "prefs-rendering": "Cummey",
        "saveprefs": "Sauail",
        "prefs-editing": "Reaghey",
-       "columns": "Collooyn:",
        "searchresultshead": "Ronsee",
        "recentchangesdays": "Laaghyn y haishbyney ayns caghlaaghyn s'noa:",
        "savedprefs": "Ta dty hosheeaghtyn sauailt.",
        "rcshowhideanons": "{{PLURAL:$1|$1 ymmydeyr|$1 ymmydeyr|$1 ymmydeyr|$1 ymmydeyryn}} neuenmyssit",
        "rcshowhidepatr": "$1 arraghyn patrolit",
        "rcshowhidemine": "$1 m'arraghyn",
-       "rclinks": "Soilshee {{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<br />$3",
+       "rclinks": "Soilshee {{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",
        "diff": "anch",
        "hist": "shen",
        "hide": "Follee",
        "specialpages-group-users": "Ymmydeyryn as kiartyn",
        "tags-edit": "reaghey",
        "rightsnone": "(veg)",
-       "revdelete-summary": "giare-choontey yn reaghey",
        "searchsuggest-search": "Ronsaghey",
        "searchsuggest-containing": "goaill stiagh...",
        "expand_templates_ok": "OK",
index 7afcfaf..7d42e81 100644 (file)
        "rcshowhideliu": "$1 Ma'aikata logaggi",
        "rcshowhideanons": "$1 ma'aikata masu ɓoyayye suna",
        "rcshowhidemine": "$1 sauye-sauyena",
-       "rclinks": "Nuna sauye-sauye $1 na ƙarshe a cikin kwanaki $2 na baya<br />$3",
+       "rclinks": "Nuna sauye-sauye $1 na ƙarshe a cikin kwanaki $2 na baya",
        "diff": "bamban",
        "hist": "Tarihi",
        "hide": "Ɓoye",
index 93ba9a2..03f044c 100644 (file)
        "externaldberror": "Liá khó-nèn he yù-yî ngiam-chṳn sú-kí-khù chhâ-chho fe̍t-chá ngì fûn hì-thúng kim-chṳ́ kiên-sîn ngì ke ngoi-phu fu-thèu.",
        "login": "Tên-ngi̍p",
        "nav-login-createaccount": "Tên-ngi̍p / khôi sîn fu-thèu",
-       "userlogin": "Tên-ngi̍p / khôi sîn fu-thèu",
-       "userloginnocreate": "Tên-ngi̍p",
        "logout": "Tên-chhut",
        "userlogout": "Tên-chhut",
        "notloggedin": "Hàn-mò tên-ngi̍p",
        "userlogin-noaccount": "Hàn-mò fu-thèu he mò?",
        "userlogin-joinproject": "Chhâm-yi  {{SITENAME}}",
-       "nologin": "Hàn-mò fu-thèu he-mò? $1.",
-       "nologinlink": "Khôi fu-thèu",
        "createaccount": "Khôi fu-thèu",
-       "gotaccount": "Yí-kîn yû fu-thèu he-mò? $1.",
-       "gotaccountlink": "Tên-ngi̍p",
-       "userlogin-resetlink": "M̀-ki-tet ngì-ke tên-ngi̍p sin-sit?",
        "userlogin-resetpassword-link": "Thiâm mong-ki ngì ke me̍t-ma?",
        "userlogin-helplink2": "Tên-ngi̍p hia̍p-chhu",
        "userlogin-loggedin": "汝已作為{{GENDER:$1|$1}}登錄。\n利用以下表單以作為另一賬戶登錄。",
        "createacct-another-email-ph": "輸入電郵地址",
        "createaccountmail": "Sṳ́-yung yit-chak lìm-sṳ̀ ke sùi-kî me̍t-ma, pin chiông khì fat-sung to chṳ́-thin ke thien-chṳ́ yù-khien thi-chí",
        "createacct-realname": "實名(可選)",
-       "createaccountreason": "Ngièn-yîn:",
        "createacct-reason": "Ngièn-yîn:",
        "createacct-reason-ph": "汝做麽嘅愛創建另一隻帳號",
        "createacct-submit": "Khôi fu-thèu",
        "passwordreset-emaildisabled": "電子郵件功能在此 wiki 上已禁用。",
        "passwordreset-username": "Yung-fu-miàng:",
        "passwordreset-domain": "Vet-miàng:",
-       "passwordreset-capture": "查看生成嘅電子郵件係無?",
-       "passwordreset-capture-help": "係講汝選中邇隻框,電子郵件(包括臨時密碼)將顯示,並發送分用戶。",
        "passwordreset-email": "Thien-yù thi-chí:",
        "passwordreset-emailtitle": "在{{SITENAME}}上嘅詳細信息",
        "passwordreset-emailsentemail": "密碼重置電子郵件已發送。",
        "showdiff": "Chán-sṳ chhâ-phe̍t",
        "anoneditwarning": "<strong>Kín-ko:</strong> Ngì hàn-m̀ tên-ngi̍p. Ngì ke IP vi-chí voi ki-liu̍k chhai liá ya̍p ke phiên-siá li̍t-sṳ́ tú. Na-he ngì <strong>[$1 tên-ngi̍p]</strong> fe̍t-chá <strong>[$2 khôi fu-thèu]</strong>, ngì ke phiên-siá voi hién-sṳ ngì ke yung-fu miàng-sṳ, pin-chhiâ yû khì-thâ ke yù-tiám.",
        "anonpreviewwarning": "“警告:汝還吂登入。汝嘅IP地址將會記錄在邇頁嘅編輯歷史中”",
-       "missingsummary": "'''提示:''' 汝無提供一隻編寫摘要。假使汝再次單擊「{{int:savearticle}}」,汝嘅編寫將毋帶編寫摘要保存。",
+       "missingsummary": "'''提示:''' 汝無提供一隻編寫摘要。假使汝再次單擊「$1」,汝嘅編寫將毋帶編寫摘要保存。",
        "missingcommenttext": "請在下背輸入評論。",
-       "missingcommentheader": "'''提示:''' 汝還無為邇條評論提供一隻標題。假使汝再次單擊「{{int:savearticle}}」,您嘅編寫將毋帶標題保存。",
+       "missingcommentheader": "'''提示:''' 汝還無為邇條評論提供一隻標題。假使汝再次單擊「$1」,您嘅編寫將毋帶標題保存。",
        "summary-preview": "摘要預覽:",
        "subject-preview": "主題/標題預覽:",
        "blockedtitle": "用戶分查封",
        "editingsection": "Phiên-siá $1 (thon-lo̍k)",
        "editingcomment": "Chang-chhai phiên-siá $1 (phìn-lun)",
        "editconflict": "Phiên-siá chhûng-thu̍t: $1",
-       "explainconflict": "有人在汝開始編寫後更改矣頁面。\n上片嘅文字框內展示嘅是當前本頁嘅內容。\n汝所做嘅修改展示在下背嘅文字框肚。\n汝應該將汝所做嘅修改加入現有嘅內容肚。\n'''單淨'''在上片文字框肚嘅內容會在汝點擊「{{int:savearticle}}」後分保存。",
+       "explainconflict": "有人在汝開始編寫後更改矣頁面。\n上片嘅文字框內展示嘅是當前本頁嘅內容。\n汝所做嘅修改展示在下背嘅文字框肚。\n汝應該將汝所做嘅修改加入現有嘅內容肚。\n'''單淨'''在上片文字框肚嘅內容會在汝點擊「$1」後分保存。",
        "yourtext": "Ngì-ke vùn-sṳ",
        "storedversion": "Yí pó-chhùn ke siû-thin pán-pún",
        "nonunicodebrowser": "'''警告: 汝嘅瀏覽器毋兼容Unicode編碼。'''邇位有一隻工作區將使汝做得安全編寫頁面: 非ASCII字符將以十六進製編碼模式出現在編輯框肚。",
        "mergehistory-merge": "Yî-hâ [[:$1]] ke siû-thin cho-tet ha̍p-pìn to [[:$2]]. Yung liá sién-hong on-néu-làn hi ha̍p-pìn tân-chhiang yû chhai chṳ́-thin sṳ̀-kiên yî-chhièn só chhóng-kien ke siû-thin. Oi liù-yi ke he sṳ́-yung thô-hòng lièn-chiap chhiu-fi chhùng-sat liá-yit làn.",
        "revertmerge": "解除合併",
        "history-title": "\"$1\" ke siû-thin li̍t-sṳ́",
-       "difference-title": "\"$1\" siû-thin kiên ke chhâ-bie",
+       "difference-title": "\"$1\" siû-thin kiên ke chhâ-phe̍t",
        "lineno": "Thi $1 hàng:",
        "compareselectedversions": "Pí-káu sién-chet ke pán-pún",
        "editundo": "Chhí-sêu",
        "saveprefs": "保存",
        "restoreprefs": "Fî-fu̍k só-yû me̍t-ngin sat-thin (só-yû hong-muk)",
        "prefs-editing": "編寫緊",
-       "rows": "行数:",
-       "columns": "列:",
        "searchresultshead": "搜尋",
        "stub-threshold": "<a href=\"#\" class=\"stub\">短頁面鏈接</a>格式門檻值(字節):",
        "recentchangesdays": "Chui-khiûn kiên-kói tú ke hién-sṳ ngit-sú:",
        "rcshowhidemine": "$1 ngài-ke phiên-siá",
        "rcshowhidemine-show": "Hien",
        "rcshowhidemine-hide": "Ám",
-       "rclinks": "Chán-sṳ chui-khiûn $2-ngit nui chui-sîn ke $1 chhṳ kói-thûng. <br />$3",
+       "rclinks": "Chán-sṳ chui-khiûn $2-ngit nui chui-sîn ke $1 chhṳ kói-thûng.",
        "diff": "chhâ-phe̍t",
        "hist": "li̍t-sṳ́",
        "hide": "Ám",
        "undeletelink": "查看/恢復",
        "undeleteviewlink": "查看",
        "undeletecomment": "Ngièn-yîn:",
-       "undeletedrevisions": "$1-chak siû-thin pán-pún yí-kîn fî-fu̍k",
-       "undeletedrevisions-files": "$1-chak pán-pún lâu $2-chak vùn-khien fûn fî-fu̍k",
-       "undeletedfiles": "$1-chak vùn-khien fûn fî-fu̍k",
        "cannotundelete": "Fî-fu̍k sṳt-phai; khó-nèn chṳ̂-chhièn yí-kîn pûn khì-thâ-ngìn fî-fu̍k.",
        "undeletedpage": "<strong>$1 yí-kîn fûn fî-fu̍k</strong>\n\nChhiáng chhâm-kháu [[Special:Log/delete|san-chhù ngit-chì]] lòi chhà-sûn san-chhù lâu fî-fu̍k ki-liu̍k.",
        "undelete-header": "Ká-sṳ́ oi chhà-sûn chui-khiûn ke ki-liu̍k chhiáng chhâm-khon [[Special:Log/delete|san-chhù ngit-chì]].",
        "ipbenableautoblock": "Chhṳ-thûng chhà-fûng liá yung-fu chui-heu só yung ke IP thi-chí, lâu heu-lòi sṳ-thù phiên-siá só yung ke só-yû thi-chí",
        "ipbsubmit": "Chhà-fûng liá yung-fu",
        "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",
+       "ipboptions": "2 tiám-chûng:2 hours,1 thiên:1 day,3 thiên:3 days,1-ke lî-pai:1 week,2-ke lî-pai:2 weeks,1-ke ngie̍t:1 month,3-ke ngie̍t:3 months,6-ke ngie̍t:6 months,1 ngièn:1 year,chhòng-khì:infinite",
        "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": "Mò-háu IP thi-chí",
        "blockipsuccesssub": "Chhà-fûng sṳ̀n-kûng",
        "logentry-newusers-create": "Yí-kîn {{GENDER:$2|khôi}} yung-fu fu-thèu $1",
        "logentry-upload-upload": "$1 {{GENDER:$2|yí-kîn sông-chhòn}} $3",
        "rightsnone": "(無)",
-       "revdelete-summary": "piên-sip tsak-yêu",
        "searchsuggest-search": "Chhìm"
 }
index 5dcfbd5..e96b8c2 100644 (file)
        "userlogin-remembermypassword": "Hoʻomanaʻo iaʻu",
        "login": "ʻEʻe",
        "nav-login-createaccount": "ʻEʻe / Kāinoa",
-       "userlogin": "ʻEʻe / Kāinoa",
-       "userloginnocreate": "ʻEʻe",
        "logout": "Haʻalele",
        "userlogout": "Haʻalele",
        "notloggedin": "ʻE‘e ʻole",
        "userlogin-noaccount": "ʻAʻohe āu moʻokāki?",
        "userlogin-joinproject": "E komo mai iā {{SITENAME}}",
-       "nologin": "ʻAʻohe āu moʻokāki? '''$1'''.",
-       "nologinlink": "E Kāinoa",
        "createaccount": "E Kāinoa",
-       "gotaccount": "He moʻokāki kāu? '''$1'''.",
-       "gotaccountlink": "ʻEʻe",
-       "userlogin-resetlink": "Ua poina i kāu ʻike ʻeʻe?",
        "userlogin-resetpassword-link": "Ua poina i kāu ʻōlelo hūnā?",
        "userlogin-helplink2": "Ke kōkua ʻana me ka ʻeʻe ʻana",
        "userlogin-loggedin": "Ua ʻeʻe ʻē ʻoe penei: {{GENDER:$1|$1}}.\nHana i ke kahua i lalo no ka ʻeʻe ʻana i kekahi mea hoʻohana ʻē aʻe.",
        "createacct-another-email-ph": "E kikokiko i ka wahinoho lekauila",
        "createaccountmail": "Hana i kekahi ʻōlelo hūnā ponokoho kūikawā a hoʻouna ia i ka wahinoho lekauila i kikokiko ʻia",
        "createacct-realname": "Inoa ʻoiaʻiʻo (kāpae)",
-       "createaccountreason": "Kumu:",
        "createacct-reason": "Kumu",
        "createacct-reason-ph": "No ke aha mai ke kāinoa nei i kekahi moʻokāki ʻē aʻe",
        "createacct-submit": "Kāinoa",
        "saveprefs": "Mālama",
        "restoreprefs": "Hōʻala i nā makemake paʻamau (apau)",
        "prefs-editing": "Hoʻololi",
-       "rows": "Lālani:",
-       "columns": "Koloma:",
        "searchresultshead": "Huli",
        "savedprefs": "Ua mālama ‘ia kāu makemake",
        "timezonelegend": "Kāʻei hola:",
        "rcshowhidemine": "$1 i ka‘u mau hoʻololi",
        "rcshowhidemine-show": "Hōʻike",
        "rcshowhidemine-hide": "Hoʻohūnā",
-       "rclinks": "E hōʻike i nā loli $1 hou, mai $2 (mau) lā aku nei<br />$3",
+       "rclinks": "E hōʻike i nā loli $1 hou, mai $2 (mau) lā aku nei",
        "diff": "ʻokoʻa",
        "hist": "mōkala",
        "hide": "Hoʻohūnā",
        "feedback-subject": "Kumunui:",
        "feedback-submit": "Waiho",
        "searchsuggest-search": "Huli",
-       "api-error-unknown-code": "Hewa ʻikeʻole: \"$1\".",
        "api-error-unknown-warning": "Akahele ʻikeʻole: \"$1\".",
        "api-error-unknownerror": "Hewa ʻikeʻole: \"$1\".",
        "duration-seconds": "$1 {{PLURAL:$1|kekona|mau kekona}}",
index 8dacfad..27f1531 100644 (file)
        "anontalk": "שיחה",
        "navigation": "ניווט",
        "and": "&#32;וגם",
-       "qbfind": "חיפוש",
-       "qbbrowse": "ניווט",
-       "qbedit": "עריכה",
-       "qbpageoptions": "הדף הזה",
-       "qbmyoptions": "הדפים שלי",
        "faq": "שאלות ותשובות",
-       "faqpage": "Project:שאלות ותשובות",
        "actions": "פעולות",
        "namespaces": "מרחבי שם",
        "variants": "גרסאות שפה",
        "edit-local": "עריכת התיאור המקומי",
        "create": "יצירה",
        "create-local": "הוספת תיאור מקומי",
-       "editthispage": "עריכת דף זה",
-       "create-this-page": "יצירת דף זה",
        "delete": "מחיקה",
-       "deletethispage": "מחיקת דף זה",
-       "undeletethispage": "שחזור דף זה",
        "undelete_short": "שחזור {{PLURAL:$1|עריכה אחת|$1 עריכות}}",
        "viewdeleted_short": "הצגת {{PLURAL:$1|עריכה מחוקה אחת|$1 עריכות מחוקות}}",
        "protect": "הגנה",
        "protect_change": "שינוי",
-       "protectthispage": "הפעלת הגנה על דף זה",
        "unprotect": "שינוי הגנה",
-       "unprotectthispage": "שינוי ההגנה על דף זה",
        "newpage": "דף חדש",
-       "talkpage": "שיחה על דף זה",
        "talkpagelinktext": "שיחה",
        "specialpage": "דף מיוחד",
        "personaltools": "כלים אישיים",
-       "articlepage": "צפייה בדף התוכן",
        "talk": "שיחה",
        "views": "צפיות",
        "toolbox": "כלים",
        "tool-link-userrights": "שינוי הרשאות ה{{GENDER:$1|משתמש|משתמשת}}",
        "tool-link-userrights-readonly": "צפייה בהרשאות ה{{GENDER:$1|משתמש|משתמשת}}",
        "tool-link-emailuser": "שליחת דוא\"ל ל{{GENDER:$1|משתמש|משתמשת}}",
-       "userpage": "צפייה בדף המשתמש",
-       "projectpage": "צפייה בדף המיזם",
        "imagepage": "צפייה בדף הקובץ",
        "mediawikipage": "צפייה בדף ההודעה",
        "templatepage": "צפייה בדף התבנית",
        "redirectedfrom": "(הופנה מהדף $1)",
        "redirectpagesub": "דף הפניה",
        "redirectto": "הפניה ל:",
-       "lastmodifiedat": "×\93×£ ×\96×\94 ×©×\95Ö¼× ×\94 לאחרונה ב־$1, בשעה $2.",
+       "lastmodifiedat": "×\93×£ ×\96×\94 × ×¢×¨×\9a לאחרונה ב־$1, בשעה $2.",
        "viewcount": "דף זה נצפה {{PLURAL:$1|פעם אחת|פעמיים|$1 פעמים}}.",
        "protectedpage": "דף מוגן",
        "jumpto": "קפיצה אל:",
        "preview": "תצוגה מקדימה",
        "showpreview": "תצוגה מקדימה",
        "showdiff": "הצגת שינויים",
-       "blankarticle": "<strong>אזהרה:</strong> הדף שאתם יוצרים הוא ריק.\nאם תלחצו שוב על \"{{int:savearticle}}\", הדף ייווצר ללא תוכן.",
+       "blankarticle": "<strong>אזהרה:</strong> הדף שאתם יוצרים הוא ריק.\nאם תלחצו שוב על \"$1\", הדף ייווצר ללא כל תוכן.",
        "anoneditwarning": "<strong>אזהרה:</strong> אינכם מחוברים לחשבון. כתובת ה־IP שלכם תוצג בפומבי אם תבצעו עריכות כלשהן. אם <strong>[$1 תיכנסו לחשבון]</strong> או <strong>[$2 תיצרו חשבון]</strong>, העריכות שלכם תיוחסנה לשם המשתמש שלכם ותקבלו גם יתרונות אחרים.",
        "anonpreviewwarning": "<em>אתם לא מחוברים לחשבון. שמירה תגרום לכתובת ה־IP שלכם להירשם בהיסטוריית העריכות של הדף.</em>",
-       "missingsummary": "<strong>תזכורת:</strong> לא הזנת תקציר עריכה.\nלחיצה חוזרת על הכפתור \"{{int:savearticle}}\" תגרום לעריכה שלך להישמר בלעדיו.",
-       "selfredirect": "<strong>אזהרה:</strong> ניסית ליצור הפניה מדף זה לעצמו.\nאולי כתבת יעד שגוי להפניה, ואולי ערכת את הדף הלא־נכון.\nלחיצה חוזרת על הכפתור \"{{int:savearticle}}\" תגרום להפניה להיווצר בכל זאת.",
+       "missingsummary": "<strong>תזכורת:</strong> לא הזנת תקציר עריכה.\nלחיצה חוזרת על הכפתור \"$1\" תגרום לעריכה שלך להישמר בלעדיו.",
+       "selfredirect": "<strong>אזהרה:</strong> ניסית ליצור הפניה מדף זה לעצמו.\nאולי כתבת יעד שגוי להפניה, ואולי ערכת את הדף הלא־נכון.\nלחיצה חוזרת על הכפתור \"$1\" תגרום להפניה להיווצר בכל זאת.",
        "missingcommenttext": "יש להקליד את ההודעה למטה.",
-       "missingcommentheader": "<strong>תזכורת:</strong> לא הזנת נושא להודעה זו.\nלחיצה חוזרת על הכפתור \"{{int:savearticle}}\" תגרום לעריכה שלך להישמר ללא נושא.",
+       "missingcommentheader": "<strong>תזכורת:</strong> לא הזנת נושא להודעה זו.\nלחיצה חוזרת על הכפתור \"$1\" תגרום לעריכה שלך להישמר ללא נושא.",
        "summary-preview": "תצוגה מקדימה של תקציר העריכה:",
        "subject-preview": "תצוגה מקדימה של הנושא:",
        "previewerrortext": "אירעה שגיאה בעת הניסיון להציג תצוגה מקדימה של השינויים שלך.",
        "editingsection": "עריכת הדף \"$1\" (פסקה)",
        "editingcomment": "עריכת הדף \"$1\" (פסקה חדשה)",
        "editconflict": "התנגשות עריכה: $1",
-       "explainconflict": "משתמש אחר שינה את הדף מאז שהתחלת לערוך אותו.\nתיבת העריכה העליונה מכילה את הטקסט בדף כפי שהוא כרגע.\nהשינויים שלך מוצגים בתיבת העריכה התחתונה.\nיש למזג את השינויים שלך מתיבת העריכה התחתונה לתיבת העריכה העליונה.\n<strong>רק</strong> הטקסט בתיבת העריכה העליונה יישמר לאחר לחיצה על \"{{int:savearticle}}\".",
+       "explainconflict": "משתמש אחר שינה את הדף מאז שהתחלת לערוך אותו.\nתיבת העריכה העליונה מכילה את הטקסט בדף כפי שהוא כרגע.\nהשינויים שלך מוצגים בתיבת העריכה התחתונה.\nיש למזג את השינויים שלך מתיבת העריכה התחתונה לתיבת העריכה העליונה.\n<strong>רק</strong> הטקסט בתיבת העריכה העליונה יישמר לאחר לחיצה על \"$1\".",
        "yourtext": "הטקסט שלך",
        "storedversion": "גרסה שמורה",
        "nonunicodebrowser": "'''אזהרה: הדפדפן שלך אינו תואם לתקן יוניקוד.'''\nכדי למנוע בעיות הנוצרות כתוצאה מכך ולאפשר לך לערוך דפים בבטחה, תווים שאינם ב־ASCII יוצגו בתיבת העריכה כקודים הקסדצימליים.",
        "search-file-match": "(התאמה בתוכן הקובץ)",
        "search-suggest": "האם התכוונת ל: $1",
        "search-rewritten": "מוצגות התוצאות עבור $1. ניתן לחפש $2 במקום זאת.",
-       "search-interwiki-caption": "מיזמי אחות",
+       "search-interwiki-caption": "ת×\95צ×\90×\95ת ×\9e×\9e×\99×\96×\9e×\99 ×\90×\97×\95ת",
        "search-interwiki-default": "תוצאות מתוך $1:",
        "search-interwiki-more": "(עוד)",
        "search-interwiki-more-results": "תוצאות נוספות",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "הצגה",
        "rcfilters-activefilters": "מסננים פעילים",
+       "rcfilters-quickfilters": "הגדרות מסננים שמורות",
+       "rcfilters-quickfilters-placeholder-title": "טרם נשמרו קישורים",
+       "rcfilters-quickfilters-placeholder-description": "כדי לשמור את הגדרות המסננים שלך ולהשתמש בהן מאוחר יותר, יש ללחוץ על סמל הסימנייה באזור המסנן הפעיל להלן.",
+       "rcfilters-savedqueries-defaultlabel": "מסננים שמורים",
+       "rcfilters-savedqueries-rename": "שינוי שם",
+       "rcfilters-savedqueries-setdefault": "הגדרה כברירת מחדל",
+       "rcfilters-savedqueries-unsetdefault": "ביטול הגדרה כברירת מחדל",
+       "rcfilters-savedqueries-remove": "הסרה",
+       "rcfilters-savedqueries-new-name-label": "שם",
+       "rcfilters-savedqueries-apply-label": "שמירת ההגדרות",
+       "rcfilters-savedqueries-cancel-label": "ביטול",
+       "rcfilters-savedqueries-add-new-title": "שמירת הגדרות המסננים הנוכחיות",
        "rcfilters-restore-default-filters": "שחזור למסנני ברירת המחדל",
        "rcfilters-clear-all-filters": "מחיקת כל המסננים",
        "rcfilters-search-placeholder": "סינון שינויים אחרונים (עיינו או התחילו להקליד)",
        "rcfilters-filter-unregistered-label": "לא רשומים",
        "rcfilters-filter-unregistered-description": "עורכים שלא נכנסו לחשבון.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "המסנן הזה פעיל מתנגש עם {{PLURAL:$2|מסנן רמת הניסיון הבא, שמוצא|מסנני רמת הניסיון הבאים, שמוצאים}} רק משתמשים רשומים: $1",
-       "rcfilters-filtergroup-authorship": "×\9e×\91צע×\99 ×\94ער×\99×\9bה",
-       "rcfilters-filter-editsbyself-label": "ער×\99×\9b×\95ת שלך",
-       "rcfilters-filter-editsbyself-description": "ער×\99×\9bות שביצעת בעצמך.",
-       "rcfilters-filter-editsbyother-label": "ער×\99×\9b×\95ת של אחרים",
-       "rcfilters-filter-editsbyother-description": "ער×\99×\9b×\95ת ×©×\91×\95צע×\95 ×¢×\9cÖ¾×\99×\93×\99 ×\9eשת×\9eש×\99×\9d ×\90×\97ר×\99×\9d (×\9e×\9c×\91×\93×\9a).",
+       "rcfilters-filtergroup-authorship": "×\9e×\91צע×\99 ×\94תר×\95×\9eה",
+       "rcfilters-filter-editsbyself-label": "ש×\99× ×\95×\99×\99×\9d שלך",
+       "rcfilters-filter-editsbyself-description": "תר×\95×\9eות שביצעת בעצמך.",
+       "rcfilters-filter-editsbyother-label": "ש×\99× ×\95×\99×\99×\9d של אחרים",
+       "rcfilters-filter-editsbyother-description": "×\9b×\9c ×\94ש×\99× ×\95×\99×\99×\9d ×\9e×\9c×\91×\93 ×\90×\9c×\94 ×©×\9c×\9a.",
        "rcfilters-filtergroup-userExpLevel": "רמת ניסיון (למשתמשים רשומים בלבד)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "מסנני הניסיון מוצאים רק משתמשים רשומים, כך שמסנן זה מתנגש עם המסנן \"לא רשומים\".",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "המסנן \"לא רשומים\" מתנגש עם אחד או יותר ממסנני רמת הניסיון, שמוצאים משתמשים רשומים בלבד. המסננים המתנגשים מסומנים באזור המסננים הפעילים לעיל.",
        "rcfilters-filter-user-experience-level-newcomer-label": "חדשים",
        "rcfilters-filter-user-experience-level-newcomer-description": "פחות מ־10 עריכות ומ־4 ימים של פעילות.",
        "rcfilters-filter-user-experience-level-learner-label": "לומדים",
-       "rcfilters-filter-user-experience-level-learner-description": "×\99×\95תר ×\99×\9e×\99 ×¤×¢×\99×\9c×\95ת ×\95ער×\99×\9b×\95ת מ\"חדשים\", אבל פחות מ\"משתמשים מנוסים\".",
+       "rcfilters-filter-user-experience-level-learner-description": "×\99×\95תר × ×\99ס×\99×\95×\9f מ\"חדשים\", אבל פחות מ\"משתמשים מנוסים\".",
        "rcfilters-filter-user-experience-level-experienced-label": "משתמשים מנוסים",
        "rcfilters-filter-user-experience-level-experienced-description": "יותר מ־30 ימים של פעילות ו־500 עריכות.",
        "rcfilters-filtergroup-automated": "תרומות אוטומטיות",
        "rcfilters-filter-minor-description": "עריכות שהוגדרו על־ידי העורכים כמשניות.",
        "rcfilters-filter-major-label": "עריכות שאינן משניות",
        "rcfilters-filter-major-description": "עריכות שלא הוגדרו כמשניות.",
+       "rcfilters-filtergroup-watchlist": "דפים ברשימת המעקב",
+       "rcfilters-filter-watchlist-watched-label": "ברשימת המעקב",
+       "rcfilters-filter-watchlist-watched-description": "שינויים לדפים ברשימת המעקב שלך.",
+       "rcfilters-filter-watchlist-watchednew-label": "שינויים חדשים ברשימת המעקב",
+       "rcfilters-filter-watchlist-watchednew-description": "שינויים לדפים ברשימת המעקב שלא ביקרת בהם מאז שבוצעו השינויים.",
+       "rcfilters-filter-watchlist-notwatched-label": "לא ברשימת המעקב",
+       "rcfilters-filter-watchlist-notwatched-description": "הכל מלבד שינויים לדפים ברשימת המעקב שלך.",
        "rcfilters-filtergroup-changetype": "סוג השינויים",
        "rcfilters-filter-pageedits-label": "עריכות דפים",
-       "rcfilters-filter-pageedits-description": "עריכות של תוכן ויקי, של דיונים, של תיאורי קטגוריות...",
+       "rcfilters-filter-pageedits-description": "עריכות של תוכן ויקי, של דיונים, של תיאורי קטגוריות",
        "rcfilters-filter-newpages-label": "יצירות דפים",
        "rcfilters-filter-newpages-description": "עריכות שיוצרות דפים חדשים.",
        "rcfilters-filter-categorization-label": "שינויים בקטגוריות",
        "rcfilters-filter-categorization-description": "רישומים על דפים שנוספו לקטגוריות או הוסרו מהן.",
        "rcfilters-filter-logactions-label": "פעולות יומן",
-       "rcfilters-filter-logactions-description": "פעולות מנהליות, יצירת חשבונות, מחיקת דפים, העלאות...",
+       "rcfilters-filter-logactions-description": "פעולות מנהליות, יצירת חשבונות, מחיקת דפים, העלאות",
        "rcfilters-hideminor-conflicts-typeofchange-global": "מסנן \"עריכות משניות\" מתנגש עם מסנן סוג השינויים אחד או יותר, כי סוגים מסוימים של שינויים אינם יכולים להיות מסווגים בתור \"משניים\". המסננים המתנגשים מסומנים באזור המסננים הפעילים לעיל.",
        "rcfilters-hideminor-conflicts-typeofchange": "סוגים מסוימים של שינויים אינם יכולים להיות מסווגים כ\"משניים\", כך שמסנן זה מתנגש עם מסנן סוג השינויים הבא: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "מסנן סוג השינויים הזה מתנגש עם מסנן \"עריכות משניות\". סוגים מסוימים של שינויים אינם יכולים מסווגים כ\"משניים\".",
+       "rcfilters-filtergroup-lastRevision": "גרסה אחרונה",
+       "rcfilters-filter-lastrevision-label": "הגרסה האחרונה",
+       "rcfilters-filter-lastrevision-description": "השינוי האחרון בדף.",
+       "rcfilters-filter-previousrevision-label": "גרסאות קודמות",
+       "rcfilters-filter-previousrevision-description": "כל השינויים שאינם השינוי האחרון בדף.",
+       "rcfilters-filter-excluded": "מוחרג",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:לא</strong> $1",
+       "rcfilters-view-tags": "תגיות",
        "rcnotefrom": "להלן {{PLURAL:$5|השינוי שבוצע|השינויים שבוצעו}} מאז <strong>$3, $4</strong> (מוצגים עד <strong>$1</strong>).",
        "rclistfromreset": "איפוס בחירת התאריך",
        "rclistfrom": "הצגת שינויים חדשים החל מ־$2, $3",
        "rcshowhidecategorization": "$1 שינויים בקטגוריות",
        "rcshowhidecategorization-show": "הצגת",
        "rcshowhidecategorization-hide": "הסתרת",
-       "rclinks": "הצגת $1 השינויים האחרונים ב־$2 הימים האחרונים<br />$3",
+       "rclinks": "הצגת $1 השינויים האחרונים ב־$2 הימים האחרונים",
        "diff": "הבדל",
        "hist": "היסטוריה",
        "hide": "הסתרת",
        "recentchangeslinked-to": "הצגת השינויים בדפים המקשרים לדף הנתון במקום זאת",
        "recentchanges-page-added-to-category": "הדף [[:$1]] נוסף לקטגוריה",
        "recentchanges-page-added-to-category-bundled": "הדף [[:$1]] נוסף לקטגוריה, [[Special:WhatLinksHere/$1|והוא מוכלל בדפים אחרים]]",
-       "recentchanges-page-removed-from-category": "הדף [[:$1]] הוסר מקטגוריה",
-       "recentchanges-page-removed-from-category-bundled": "×\94×\93×£ [[:$1]] ×\94×\95סר ×\9eק×\98×\92×\95ר×\99×\94, [[Special:WhatLinksHere/$1|×\95הוא מוכלל בדפים אחרים]]",
+       "recentchanges-page-removed-from-category": "×\94×\93×£ [[:$1]] ×\94×\95סר ×\9e×\94ק×\98×\92×\95ר×\99×\94",
+       "recentchanges-page-removed-from-category-bundled": "×\94×\93×£ [[:$1]] ×\94×\95סר ×\9e×\94ק×\98×\92×\95ר×\99×\94, ×\95[[Special:WhatLinksHere/$1|הוא מוכלל בדפים אחרים]]",
        "autochange-username": "שינוי אוטומטי של מדיה־ויקי",
        "upload": "העלאת קובץ",
        "uploadbtn": "העלאת הקובץ",
        "apisandbox-sending-request": "בקשת ה־API בשליחה...",
        "apisandbox-loading-results": "תוצאות ה־API בתהליך קבלה...",
        "apisandbox-results-error": "אירעה שגיאה בעת טעינת תשובת ה־API לבקשה: $1.",
-       "apisandbox-request-selectformat-label": "הצגת המידע שבבקשה כ:",
+       "apisandbox-results-login-suppressed": "בקשה זו טופלה כבקשה של משתמש אנונימי, כי היא עלולה הייתה לשמש לעקיפת מדיניות האבטחה \"מקור־זהה\" (Same-Origin) של הדפדפן. יש לציין שהטיפול האוטומטי באסימונים של ארגז החול של ה־API אינו עובד כראוי עם בקשות מסוג זה, לכן יש למלא אותם ידנית.",
+       "apisandbox-request-selectformat-label": "הצגת נתוני הבקשה בתור:",
        "apisandbox-request-format-url-label": "מחרוזת השאילתה (query string) של כתובת ה־URL",
        "apisandbox-request-url-label": "כתובת ה־URL של הבקשה:",
        "apisandbox-request-json-label": "ייצוג הבקשה כ־JSON:",
        "log": "יומנים",
        "logeventslist-submit": "הצגה",
        "all-logs-page": "כל היומנים הציבוריים",
-       "alllogstext": "זוהי תצוגה משולבת של כל סוגי היומנים הזמינים ב{{grammar:תחילית|{{SITENAME}}}}.\nניתן לצמצם את התצוגה על ידי בחירת סוג היומן, שם המשתמש (תלוי רישיות) או הדף המושפע (גם כן תלוי רישיות).",
+       "alllogstext": "זוהי תצוגה משולבת של כל סוגי היומנים הזמינים ב{{grammar:תחילית|{{SITENAME}}}}.\nניתן לצמצם את התצוגה על־ידי בחירת סוג היומן, שם המשתמש (תלוי רישיות) או הדף המושפע (גם כן תלוי רישיות).",
        "logempty": "אין פריטים תואמים ביומן.",
        "log-title-wildcard": "חיפוש כותרות המתחילות באותיות אלה",
        "showhideselectedlogentries": "שינוי מצב התצוגה של פעולות היומן שנבחרו",
        "enotif_body_intro_moved": "הדף \"$1\" באתר {{SITENAME}} הועבר ב־$PAGEEDITDATE על־ידי $2; ראו $3 לגרסה הנוכחית של הדף.",
        "enotif_body_intro_restored": "הדף \"$1\" באתר {{SITENAME}} שוחזר ב־$PAGEEDITDATE על־ידי $2; ראו $3 לגרסה הנוכחית של הדף.",
        "enotif_body_intro_changed": "הדף \"$1\" באתר {{SITENAME}} שוּנה ב־$PAGEEDITDATE על־ידי $2; ראו $3 לגרסה הנוכחית של הדף.",
-       "enotif_lastvisited": "ר×\90×\95 $1 ×\9c×\9b×\9c ×\94ש×\99× ×\95×\99×\99×\9d ×\9e×\90×\96 ×\91×\99ק×\95ר×\9b×\9d ×\94×\90×\97ר×\95×\9f ×\91×\93×£.",
-       "enotif_lastdiff": "ר×\90×\95 $1 ×\9cש×\99× ×\95×\99 ×\96×\94.",
+       "enotif_lastvisited": "×\9c×\9b×\9c ×\94ש×\99× ×\95×\99×\99×\9d ×\9e×\90×\96 ×\91×\99ק×\95ר×\9b×\9d ×\94×\90×\97ר×\95×\9f ×\91×\93×£, ×¨' $1",
+       "enotif_lastdiff": "×\9cצפ×\99×\99×\94 ×\91ש×\99× ×\95×\99 ×\96×\94, ×¨' $1",
        "enotif_anon_editor": "משתמש אנונימי $1",
        "enotif_body": "לכבוד $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nתקציר העריכה: $PAGESUMMARY $PAGEMINOREDIT\n\nבאפשרותכם ליצור קשר עם העורך:\nבדואר אלקטרוני: $PAGEEDITOR_EMAIL\nבאתר: $PAGEEDITOR_WIKI\n\nלא תקבלו הודעות על פעולות נוספות עד שתבקרו בדף הזה כשאתם מחוברים לחשבון. באפשרותכם גם לאפס את דגלי ההודעות עבור כל הדפים שברשימת המעקב שלכם.\n\nבברכה, מערכת ההודעות של {{SITENAME}}.\n\n--\nכדי לשנות את ההגדרות של הודעות הדוא\"ל הנשלחות אליכם, בקרו בדף:\n{{canonicalurl:{{#special:Preferences}}}}\n\nכדי לשנות את ההגדרות של רשימת המעקב שלכם, בקרו בדף:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nכדי להסיר את הדף הזה מרשימת המעקב שלכם, בקרו בדף:\n$UNWATCHURL\n\nלמשוב ולעזרה נוספת:\n$HELPPAGE",
        "created": "נוצר",
        "sp-contributions-uploads": "העלאות",
        "sp-contributions-logs": "יומנים",
        "sp-contributions-talk": "שיחה",
-       "sp-contributions-userrights": "ניהול הרשאות משתמש",
+       "sp-contributions-userrights": "ניהול הרשאות {{GENDER:$1|משתמש|משתמשת}}",
        "sp-contributions-blocked-notice": "{{GENDER:$1|המשתמש הזה חסום|המשתמשת הזו חסומה}} כרגע.\nהפעולה האחרונה ביומן החסימות מוצגת להלן:",
        "sp-contributions-blocked-notice-anon": "כתובת IP זו חסומה כרגע.\nהפעולה האחרונה ביומן החסימות מוצגת להלן:",
        "sp-contributions-search": "חיפוש תרומות",
        "autoblocklist-submit": "חיפוש",
        "autoblocklist-legend": "רשימת חסימות אוטומטיות",
        "autoblocklist-localblocks": "{{PLURAL:$1|חסימה אוטומטית מקומית|חסימות אוטומטיות מקומיות}}",
+       "autoblocklist-total-autoblocks": "המספר הכולל של חסימות אוטומטיות: $1",
        "autoblocklist-empty": "רשימת החסימות האוטומטיות ריקה.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|חסימה אוטומטית אחרת|חסימות אוטומטיות אחרות}}",
        "ipblocklist": "משתמשים חסומים",
        "tooltip-pt-mycontris": "רשימת העריכות שביצעת",
        "tooltip-pt-anoncontribs": "רשימת העריכות שנעשו מכתובת ה־IP הזאת",
        "tooltip-pt-login": "מומלץ להיכנס לחשבון, אך אין חובה לעשות זאת",
+       "tooltip-pt-login-private": "יש להיכנס לחשבון כדי להשתמש באתר הוויקי הזה",
        "tooltip-pt-logout": "יציאה מהחשבון",
        "tooltip-pt-createaccount": "מומלץ ליצור חשבון ולהיכנס אליו, אך אין חובה לעשות זאת",
        "tooltip-ca-talk": "שיחה על דף זה",
        "anonymous": "{{PLURAL:$1|משתמש אנונימי|משתמשים אנונימיים}} של {{SITENAME}}",
        "siteuser": "משתמש {{SITENAME}} $1",
        "anonuser": "משתמש אנונימי של {{SITENAME}} $1",
-       "lastmodifiedatby": "×\93×£ ×\96×\94 ×©×\95Ö¼× ×\94 לאחרונה ב־$2, $1 על־ידי $3.",
+       "lastmodifiedatby": "×\93×£ ×\96×\94 × ×¢×¨×\9a לאחרונה ב־$2, $1 על־ידי $3.",
        "othercontribs": "מבוסס על העבודה של $1.",
        "others": "אחרים",
        "siteusers": "{{PLURAL:$2|{{GENDER:$1|משתמש}}|משתמשי}} {{SITENAME}} $1",
        "newimages-legend": "מסנן",
        "newimages-label": "שם הקובץ (או חלק ממנו):",
        "newimages-user": "כתובת IP או שם משתמש",
+       "newimages-newbies": "הצגת תרומות של משתמשים חדשים בלבד",
        "newimages-showbots": "הצגת העלאות שבוצעו על־ידי בוטים",
        "newimages-hidepatrolled": "הסתרת העלאות בדוקות",
+       "newimages-mediatype": "סוג המדיה:",
        "noimages": "אין קבצים.",
        "gallery-slideshow-toggle": "הצגת/הסתרת תמונות ממוזערות",
        "ilsubmit": "חיפוש",
        "confirmrecreate": "ה{{GENDER:$1|משתמש|משתמשת}} [[User:$1|$1]] ([[User talk:$1|שיחה]]) {{GENDER:$1|מחק|מחקה}} את הדף הזה לאחר שהתחלת לערוך אותו, מהסיבה הבאה:\n: <em>$2</em>\nיש לאשר שאכן ברצונך ליצור מחדש את הדף.",
        "confirmrecreate-noreason": "ה{{GENDER:$1|משתמש|משתמשת}} [[User:$1|$1]] ([[User talk:$1|שיחה]]) {{GENDER:$1|מחק|מחקה}} את הדף הזה לאחר שהתחלת לערוך אותו. יש לאשר שאכן ברצונך ליצור מחדש את הדף.",
        "recreate": "יצירה מחדש",
+       "confirm-purge-title": "ניקוי המטמון של דף זה",
        "confirm_purge_button": "אישור",
        "confirm-purge-top": "לנקות את המטמון של דף זה?",
        "confirm-purge-bottom": "ניקוי המטמון של דף גורם לגרסה החדשה ביותר להופיע.",
        "watchlisttools-view": "הצגת השינויים הרלוונטיים",
        "watchlisttools-edit": "הצגה ועריכה של רשימת המעקב",
        "watchlisttools-raw": "עריכת רשימת המעקב הגולמית",
-       "iranian-calendar-m1": "פר×\91רדין",
-       "iranian-calendar-m2": "×\90×\95ר×\93×\99×\91×\94ש×\98",
-       "iranian-calendar-m3": "×\97×\95רדאד",
+       "iranian-calendar-m1": "פר×\95רדין",
+       "iranian-calendar-m2": "×\90ר×\93×\99×\91×\94שת",
+       "iranian-calendar-m3": "×\97׳רדאד",
        "iranian-calendar-m4": "תיר",
-       "iranian-calendar-m5": "×\9e×\95ר×\93×\90×\93",
-       "iranian-calendar-m6": "ש×\94ר×\99×\91ר",
+       "iranian-calendar-m5": "מרדאד",
+       "iranian-calendar-m6": "ש×\94ר×\99×\95ר",
        "iranian-calendar-m7": "מהר",
-       "iranian-calendar-m8": "אבן",
-       "iranian-calendar-m9": "×\90×\96ר",
+       "iranian-calendar-m8": "×\90×\91×\90×\9f",
+       "iranian-calendar-m9": "×\90×\93׳ר",
        "iranian-calendar-m10": "די",
        "iranian-calendar-m11": "בהמן",
        "iranian-calendar-m12": "אספנד",
        "tags-create-reason": "הסבר:",
        "tags-create-submit": "יצירה",
        "tags-create-no-name": "יש לציין שם לתגית.",
-       "tags-create-invalid-chars": "ש×\9e×\95ת ×ª×\92×\99×\95ת ×\90×\99× ×\9d ×\99×\9b×\95×\9c×\99×\9d ×\9c×\9b×\9c×\95×\9c ×ª×\95×\95×\99 ×¤×¡×\99ק (<code>,</code>) ×\90×\95 ×¡×\9cש ×\99×\9e× ×\99 (<code>/</code>).",
+       "tags-create-invalid-chars": "ש×\9e×\95ת ×ª×\92×\99×\95ת ×\90×\99× ×\9d ×\99×\9b×\95×\9c×\99×\9d ×\9c×\9b×\9c×\95×\9c ×¤×¡×\99ק×\99×\9d (<code>,</code>), ×§×\95×\95×\99×\9d × ×\99צ×\91×\99×\9d (<code>|</code>) ×\90×\95 ×¡×\9cש×\99×\9d ×\99×\9e× ×\99×\99×\9d (<code>/</code>).",
        "tags-create-invalid-title-chars": "שמות תגיות אינם יכולים לכלול תווים שאינם ניתנים לשימוש בכותרות דפים.",
        "tags-create-already-exists": "התגית \"$1\" כבר קיימת.",
        "tags-create-warnings-above": "{{PLURAL:$2|האזהרה הבאה התקבלה|האזהרות הבאות התקבלו}} בעת הניסיון ליצירת התגית \"$1\":",
        "mw-widgets-titleinput-description-redirect": "הפניה ל{{GRAMMAR:תחילית|$1}}",
        "mw-widgets-categoryselector-add-category-placeholder": "הוספת קטגוריה...",
        "mw-widgets-usersmultiselect-placeholder": "הוספת עוד...",
+       "date-range-from": "מתאריך:",
+       "date-range-to": "עד תאריך:",
        "sessionmanager-tie": "לא ניתן לצרף מספר סוגי אימות זהות: $1.",
        "sessionprovider-generic": "התחברויות של $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "התחברויות המבוססות על עוגיות",
        "rawhtml-notallowed": "לא ניתן להשתמש בתגיות &lt;html&gt; מחוץ לדפים רגילים.",
        "gotointerwiki": "עזיבת {{SITENAME}}",
        "gotointerwiki-invalid": "הכותרת שצוינה אינה תקינה.",
-       "gotointerwiki-external": "{{GENDER:|אתה עומד|את עומדת|אתם עומדים}} לעזוב את {{SITENAME}} כדי לבקר באתר הנפרד \"[[$2]]\".\n\n[$1 {{GENDER:|לחץ|לחצי|לחצו}} כאן כדי להמשיך לכתובת $1].",
+       "gotointerwiki-external": "{{GENDER:|אתה עומד|את עומדת|אתם עומדים}} לעזוב את {{SITENAME}} כדי לבקר באתר הנפרד \"[[$2]]\".\n\n'''[$1 להמשך לכתובת $1]'''",
        "undelete-cantedit": "אין באפשרותך לשחזר דף זה, כי אין באפשרותך לערוך אותו.",
-       "undelete-cantcreate": "אין באפשרותך לשחזר דף זה, כי אין דף קיים בשם זה ואין באפשרותך ליצור אותו."
+       "undelete-cantcreate": "אין באפשרותך לשחזר דף זה, כי אין דף קיים בשם זה ואין באפשרותך ליצור אותו.",
+       "pagedata-title": "מידע על הדף",
+       "pagedata-text": "דף זה מהווה ממשק מידע לדפים. כדי להשתמש בו, כותרת הדף צריכה להופיע בכתובת ה־URL, בעזרת התחביר המתאים לדפי־משנה.\n* דף זה משתמש בשיטת \"ניתוב התוכן\" (Content negotiation) בהתבסס על כותרת ה־Accept ששולח צד הלקוח. פירוש הדבר הוא שהמידע על הדף יישלח בפורמט שצד הלקוח (כגון דפדפן) מעדיף.",
+       "pagedata-not-acceptable": "לא נמצא פורמט נתמך. סוגי MIME נתמכים: $1",
+       "pagedata-bad-title": "כותרת בלתי־תקינה: $1."
 }
index baec8c8..c2c2ea8 100644 (file)
                        "Jayprakash12345",
                        "Dr. Shikha Jaggi",
                        "Shyamal",
-                       "SatyamMishra"
+                       "SatyamMishra",
+                       "चक्रपाणी"
                ]
        },
        "tog-underline": "कड़ियाँ अधोरेखन:",
        "tog-hideminor": "हाल में हुए परिवर्तन में छोटे बदलाव छिपाएँ",
        "tog-hidepatrolled": "हाल में हुए परिवर्तन में परीक्षित बदलाव छिपाएँ",
        "tog-newpageshidepatrolled": "नये पृष्ठों की सूची में परीक्षित पृष्ठ छिपाएँ",
-       "tog-hidecategorization": "पà¥\83षà¥\8dठà¥\8bà¤\82 à¤\95ा à¤¶à¥\8dरà¥\87णà¥\80à¤\95रण à¤¹à¤\9fाà¤\8fà¤\81",
+       "tog-hidecategorization": "पà¥\83षà¥\8dठà¥\8bà¤\82 à¤\95ा à¤¶à¥\8dरà¥\87णà¥\80à¤\95रण à¤\9bिपाà¤\8fà¤\82",
        "tog-extendwatchlist": "केवल हालिया ही नहीं, बल्कि सभी परिवर्तनों को दिखाने के लिए ध्यानसूची को विस्तारित करें",
        "tog-usenewrc": "हाल में हुए परिवर्तनों और ध्यानसूची में परिवर्तनों को पृष्ठ अनुसार समूहों में बाँटें",
        "tog-numberheadings": "शीर्षक स्व-क्रमांकित करें",
        "tog-showtoolbar": "सम्पादन उपकरण पट्टी दिखाएँ",
-       "tog-editondblclick": "दà¥\8bà¤\97à¥\81ना क्लिक पर पृष्ठ संपादित करें",
+       "tog-editondblclick": "डबल क्लिक पर पृष्ठ संपादित करें",
        "tog-editsectiononrightclick": "अनुभाग शीर्षक पर दायाँ क्लिक करने पर अनुभाग सम्पादित करें",
        "tog-watchcreations": "मेरे द्वारा निर्मित पृष्ठों और मेरी अपलोड की फ़ाइलों को मेरी ध्यानसूची में जोड़ें",
        "tog-watchdefault": "मेरे द्वारा सम्पादित पृष्ठों और फ़ाइलों को मेरी ध्यानसूची में जोड़ें",
        "underline-always": "सदैव",
        "underline-never": "कभी नहीं",
        "underline-default": "प्राथमिक त्वचा या ब्राउज़र",
-       "editfont-style": "समà¥\8dपादन à¤\95à¥\8dषà¥\87तà¥\8dर à¤\95à¥\80 à¤®à¥\81दà¥\8dरलिपि शैली:",
+       "editfont-style": "समà¥\8dपादन à¤\95à¥\8dषà¥\87तà¥\8dर à¤\95à¥\80 à¤«à¥\89नà¥\8dà¤\9f शैली:",
        "editfont-default": "प्राथमिक ब्राउज़र",
        "editfont-monospace": "एकल स्थल मुद्रलिपि",
        "editfont-sansserif": "बिना नोकों वाली मुद्रलिपि",
        "anontalk": "वार्ता",
        "navigation": "भ्रमण",
        "and": "&#32;और",
-       "qbfind": "खोजें",
-       "qbbrowse": "ब्राउज़",
-       "qbedit": "सम्पादन",
-       "qbpageoptions": "यह पृष्ठ",
-       "qbmyoptions": "मेरे पृष्ठ",
        "faq": "बहुधा पूछे जाने वाले प्रश्न",
-       "faqpage": "Project:बहुधा पूछे जाने वाले सवाल",
        "actions": "क्रियाएँ",
        "namespaces": "नामस्थान",
        "variants": "संस्करण",
        "edit-local": "स्थानीय विवरण सम्पादन करें",
        "create": "बनाएँ",
        "create-local": "स्थानीय विवरण जोड़ें",
-       "editthispage": "यह पृष्ठ संपादन करें",
-       "create-this-page": "यह पृष्ठ बनाएँ",
        "delete": "हटाएँ",
-       "deletethispage": "इस पृष्ठ को हटाएँ",
-       "undeletethispage": "इस पृष्ठ को पुनर्स्थापित करें।",
        "undelete_short": "{{PLURAL:$1|एक हटाया गया|$1 हटाए गए}} बदलाव वापस लायें",
        "viewdeleted_short": "देखें {{PLURAL:$1|एक हटाया गया सम्पादन|$1 हटाए गए सम्पादन}}",
        "protect": "सुरक्षित करें",
        "protect_change": "बदलें",
-       "protectthispage": "इस पृष्ठ को सुरक्षित करें",
        "unprotect": "असुरक्षित",
-       "unprotectthispage": "इस पृष्ठ का सुरक्षा स्तर बदलें",
        "newpage": "नया पृष्ठ",
-       "talkpage": "इस पृष्ठ के बारे में चर्चा करें",
        "talkpagelinktext": "चर्चा",
        "specialpage": "विशेष पृष्ठ",
        "personaltools": "व्यक्तिगत उपकरण",
-       "articlepage": "सामग्री पृष्ठ देखें",
        "talk": "चर्चा",
        "views": "दर्शाव",
        "toolbox": "उपकरण",
        "tool-link-userrights": "{{GENDER:$1|सदस्य}} समूह बदलें",
        "tool-link-userrights-readonly": "{{GENDER:$1|सदस्य}} समूह देखें",
        "tool-link-emailuser": "इस {{GENDER:$1|सदस्य}} को ई-मेल करें।",
-       "userpage": "सदस्य पृष्ठ देखें",
-       "projectpage": "परियोजना पृष्ठ देखें",
        "imagepage": "फ़ाइल पृष्ठ देखें",
        "mediawikipage": "सन्देश पृष्ठ देखें",
        "templatepage": "साँचा पृष्ठ देखें",
        "title-invalid-magic-tilde": "निवेदित पृष्ठ का शीर्षक अवैध जादूई टिल्ड सिलसिला रखता है।",
        "title-invalid-too-long": "माँग किए गए पृष्ठ का शीर्षक बहुत लम्बा है। इसे यू०टी०एफ़० कोडिंग मे $1 {{PLURAL:$1|बाइट|बाइट्स}} से बढ़कर नहीं होना चाहिए और इसे यू०टी०एफ़०-८ एनकोडिंग में होना चाहिए।",
        "title-invalid-leading-colon": "निवेदित पृष्ठ का शीर्षक प्रारंभ में अवैध कोलन रखता है।",
-       "perfcached": "नीचे दिया हुआ डेटा कैशे मेमोरी से लिया हुआ है, अतः हो सकता है कि इसका पूर्ण अद्यतन न हुआ हो। कैशे मेमोरी में अधिकतम {{PLURAL:$1|एक  नतीजा|$1 नतीजे}} उपलब्ध हैं।",
-       "perfcachedts": "नीचे दिया हुआ डेटा कैशे मेमोरी से है, और इसका अंतिम अद्यतन $1 को हुआ था। कैशे मेमोरी में अधिकतम {{PLURAL:$4|एक  नतीजा|$4 नतीजे}} उपलब्ध हैं।",
+       "perfcached": "नीचे दिया हुआ डेटा कैश मेमोरी से लिया हुआ है, अतः हो सकता है कि इसका पूर्ण अद्यतन न हुआ हो। कैश मेमोरी में अधिकतम {{PLURAL:$1|एक  नतीजा|$1 नतीजे}} उपलब्ध हैं।",
+       "perfcachedts": "नीचे दिया हुआ डेटा कैश मेमोरी से है, और इसका अंतिम अद्यतन $1 को हुआ था। कैश मेमोरी में अधिकतम {{PLURAL:$4|एक  नतीजा|$4 नतीजे}} उपलब्ध हैं।",
        "querypage-no-updates": "इस पृष्ठ का नवीनीकरण करना मना है। अभी यहाँ के डाटा को ताज़ा नहीं कर सकते।",
        "viewsource": "स्रोत देखें",
        "viewsource-title": "$1 का स्रोत देखें",
        "createacct-yourpasswordagain-ph": "कूटशब्द पुनः लिखें",
        "userlogin-remembermypassword": "मुझे लॉग्ड इन रखें",
        "userlogin-signwithsecure": "सुरक्षित कनेक्शन का प्रयोग करें",
-       "cannotlogin-title": "à¤\85भà¥\80 à¤ªà¥\8dरवà¥\87श à¤¨à¤¹à¥\80à¤\82 à¤¹à¥\8b à¤°à¤¹ा",
-       "cannotlogin-text": "पà¥\8dरवà¥\87श संभव नहीं है",
-       "cannotloginnow-title": "à¤\85भà¥\80 à¤ªà¥\8dरवà¥\87श à¤¨à¤¹à¥\80à¤\82 à¤¹à¥\8b à¤°à¤¹à¤¾ à¤¹à¥\88",
-       "cannotloginnow-text": "$1 à¤\95ा à¤\89पयà¥\8bà¤\97 à¤\95रतà¥\87 à¤¸à¤®à¤¯ à¤ªà¥\8dरवà¥\87श नहीं हो सकता है।",
+       "cannotlogin-title": "लà¥\89à¤\97 à¤\87न à¤¨à¤¹à¥\80à¤\82 à¤\95िया à¤\9cा à¤¸à¤\95ता",
+       "cannotlogin-text": "लà¥\89à¤\97 à¤\87न संभव नहीं है",
+       "cannotloginnow-title": "à¤\85भà¥\80 à¤²à¥\89à¤\97 à¤\87न à¤¨à¤¹à¥\80à¤\82 à¤\95िया à¤\9cा à¤¸à¤\95ता",
+       "cannotloginnow-text": "$1 à¤\95ा à¤\89पयà¥\8bà¤\97 à¤\95रतà¥\87 à¤¸à¤®à¤¯ à¤²à¥\89à¤\97 à¤\87न नहीं हो सकता है।",
        "cannotcreateaccount-title": "खाता नहीं खोल सकते",
        "cannotcreateaccount-text": "सीधे खाता बनाना इस विकि में सक्रिय नहीं है।",
        "yourdomainname": "आपका डोमेन:",
        "password-change-forbidden": "आप इस विकि पर कूटशब्द नहीं बदल सकते हैं।",
        "externaldberror": "या तो प्रमाणिकरण डाटाबेस में त्रुटि हुई है या फिर आपको अपना बाह्य खाता अपडेट करने की अनुमति नहीं है।",
-       "login": "पà¥\8dरवà¥\87श",
+       "login": "लà¥\89à¤\97 à¤\87न",
        "login-security": "अपनी पहचान सत्यापित करें",
        "nav-login-createaccount": "सत्रारंभ / खाता खोलें",
        "logout": "प्रस्थान करें",
        "userlogin-resetpassword-link": "अपना पासवर्ड भूल गए?",
        "userlogin-helplink2": "लॉग इन करने में सहायता",
        "userlogin-loggedin": "आप {{GENDER:$1|$1}} के रूप में पहले से लॉग्ड इन हैं।\nकिसी अन्य सदस्य के रूप में लॉग इन करने के लिए निम्नलिखित फ़ॉर्म का प्रयोग करें।",
-       "userlogin-reauth": "à¤\86प {{GENDER:$1|$1}} à¤¹à¥\8b, à¤\87सà¤\95à¥\87 à¤²à¤¿à¤\8f à¤\86पà¤\95à¥\8b à¤\8fà¤\95 à¤\94र à¤¬à¤¾à¤° à¤\96ातà¥\87 à¤®à¥\87à¤\82 à¤ªà¥\8dरवà¥\87श करना होगा।",
+       "userlogin-reauth": "à¤\86प {{GENDER:$1|$1}} à¤¹à¥\8b, à¤\87सà¤\95à¥\87 à¤²à¤¿à¤\8f à¤\86पà¤\95à¥\8b à¤\8fà¤\95 à¤\94र à¤¬à¤¾à¤° à¤\96ातà¥\87 à¤®à¥\87à¤\82 à¤²à¥\89à¤\97 à¤\87न करना होगा।",
        "userlogin-createanother": "एक अन्य खाता खोलें",
        "createacct-emailrequired": "ई-मेल पता",
        "createacct-emailoptional": "ई-मेल पता (वैकल्पिक)",
        "createacct-email-ph": "अपना ई-मेल पता लिखें",
        "createacct-another-email-ph": "ईमेल पता प्रदान करें",
-       "createaccountmail": "à¤\8fà¤\95 à¤\85सà¥\8dथायà¥\80 à¤¯à¤¾à¤¦à¥\83à¤\9aà¥\8dà¤\9bिà¤\95 (रà¥\88à¤\82डम) à¤\95à¥\82à¤\9fशबà¥\8dद चुनें और उसे निर्दिष्ट ई-मेल पते पर भेजें",
+       "createaccountmail": "à¤\8fà¤\95 à¤\85सà¥\8dथायà¥\80 à¤°à¥\88à¤\82डम à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड चुनें और उसे निर्दिष्ट ई-मेल पते पर भेजें",
        "createaccountmail-help": "इसका उपयोग बिना पासवर्ड जाने किसी और के लिए खाता खोलने के लिए उपयोग किया जाता है।",
        "createacct-realname": "असली नाम (वैकल्पिक)",
        "createacct-reason": "कारण",
        "nocookiesfornew": "स्रोत की पुष्टि ना हो पाने के कारण यह खाता निर्मित नहीं किया गया। \nसुनिश्चित करें कि आपने कुकीज़ सक्षम की हैं, पृष्ठ को पुनः लोड करें और पुनः प्रयास करें।",
        "createacct-loginerror": "खाता सफलतापूर्वक निर्मित किया गया लेकिन आप स्वतः लॉग-इन नहीं कर सके। कृपया [[Special:UserLogin|हाथ से]] लॉग-इन करें।",
        "noname": "आपने वैध सदस्यनाम नहीं दिया है।",
-       "loginsuccesstitle": "पà¥\8dरवà¥\87श à¤¹à¥\81à¤\86",
+       "loginsuccesstitle": "लà¥\89à¤\97à¥\8dड-à¤\87न",
        "loginsuccess": "'''आप {{SITENAME}} में \"$1\" सदस्यनाम से लॉग इन हो {{GENDER:$1|चुके|चुकी|चुके}} हैं।'''",
        "nosuchuser": "यहाँ \"$1\" नाम का कोई सदस्य नहीं है।\nसदस्यनाम में लघु और दीर्घ अक्षरों से फ़र्क पड़ता है।\nअपनी वर्तनी जाँचें, या [[Special:CreateAccount|नया खाता खोलें]]।",
        "nosuchusershort": "\"$1\" नाम का कोई सदस्य नहीं है।\nकृपया अपनी दी हुई वर्तनी जाँचें।",
        "createaccount-title": "{{SITENAME}} के लिये खाता बनाएँ",
        "createaccount-text": "आपके ई-मेल पते के लिये किसी ने {{SITENAME}} ($4) पर \"$2\" सदस्य नाम से \"$3\" कूटशब्द (पासवर्ड) सहित खाता खोला है।\nआपको लॉग इन कर के अपना कूटशब्द (पासवर्ड) तुरंत बदल लेना चाहिये।\n\nयदि यह खाता गलती से खोला गया है, तो आप इस मेसेज को नज़रंदाज़ कर सकते हैं।",
        "login-throttled": "आपने हाल ही में कई बार लॉग इन करने के प्रयास किये हैं।\nपुनः प्रयास करने से पहले कृपया $1 प्रतीक्षा करें।",
-       "login-abort-generic": "à¤\86पà¤\95ा à¤ªà¥\8dरवà¥\87श असफल हुआ - रोका गया",
+       "login-abort-generic": "à¤\86पà¤\95ा à¤²à¥\89à¤\97 à¤\87न असफल हुआ - रोका गया",
        "login-migrated-generic": "आपका खाता माइग्रेट हो गया है और आपका सदस्यनाम इस विकी पर अब मौजूद नहीं है।",
        "loginlanguagelabel": "भाषा: $1",
-       "suspicious-userlogout": "à¤\85पका लॉग आउट करने का अनुरोध अस्वीकृत कर दिया गया है क्योंकि ऐसा प्रतीत होता है कि यह किसी खराब ब्राउज़र या कैश करने वाली प्रॉक्सी द्वारा भेजा गया था।",
+       "suspicious-userlogout": "à¤\86पका लॉग आउट करने का अनुरोध अस्वीकृत कर दिया गया है क्योंकि ऐसा प्रतीत होता है कि यह किसी खराब ब्राउज़र या कैश करने वाली प्रॉक्सी द्वारा भेजा गया था।",
        "createacct-another-realname-tip": "असली नाम देना आवश्यक नहीं है।\nयदि आप प्रदान करते हैं तो इसका प्रयोग सदस्य के योगदानों के लिये उनको श्रेय (attribution) देने के लिये किया जायेगा।",
        "pt-login": "लॉग इन",
        "pt-login-button": "लॉग इन",
-       "pt-login-continue-button": "पà¥\8dरवà¥\87श जारी रखें",
+       "pt-login-continue-button": "लà¥\89à¤\97 à¤\87न जारी रखें",
        "pt-createaccount": "खाता बनाएँ",
        "pt-userlogout": "लॉगआउट",
        "php-mail-error-unknown": "PHP के mail() फ़ंक्शन में अज्ञात त्रुटि हुई।",
        "botpasswords-label-delete": "हटाएँ",
        "botpasswords-label-resetpassword": "पासवर्ड पुनः तय करें",
        "botpasswords-label-grants": "अनुदान आवेदन:",
-       "botpasswords-help-grants": "हर à¤\85नà¥\81दान à¤\9cà¥\8b à¤¸à¤¦à¤¸à¥\8dय à¤\85धिà¤\95ार à¤®à¥\87à¤\82  à¤ªà¤¹à¤²à¥\87 à¤¸à¥\87 à¤\86ता à¤¹à¥\88, à¤\89सà¥\87 à¤\85धिà¤\95ार à¤¤à¤\95 à¤ªà¤¹à¥\81à¤\81à¤\9a à¤¦à¥\87ता à¤¹à¥\88।  à¤¦à¥\87à¤\96à¥\87à¤\82 : [[Special:ListGrants|à¤\85नà¥\81दान à¤¸à¤¾à¤°à¤£à¥\80]]",
+       "botpasswords-help-grants": "à¤\85नà¥\81दान à¤\86पà¤\95à¥\8b à¤\85धिà¤\95ारà¥\8bà¤\82 à¤¤à¤\95 à¤ªà¤¹à¥\81à¤\81à¤\9aनà¥\87 à¤¦à¥\87ता à¤¹à¥\88, à¤\9cà¥\8b à¤\86पà¤\95à¥\87 à¤\96ातà¥\87 à¤\95à¥\87 à¤ªà¤¾à¤¸ à¤ªà¤¹à¤²à¥\87 à¤¸à¥\87 à¤¹à¥\88। à¤\85नà¥\81दान à¤\95à¥\8b à¤¸à¤\95à¥\8dरिय à¤\95रनà¥\87 à¤¸à¥\87 à¤\95à¥\8bà¤\88 à¤\85धिà¤\95ार à¤ªà¥\8dरापà¥\8dत à¤¨à¤¹à¥\80à¤\82 à¤¹à¥\8bà¤\97ा, à¤\9cà¥\8b à¤\86पà¤\95à¥\87 à¤\96ातà¥\87 à¤®à¥\87à¤\82 à¤¨ à¤¹à¥\8b। à¤\85धिà¤\95 à¤\9cानà¤\95ारà¥\80 à¤\95à¥\87 à¤²à¤¿à¤\8f [[Special:ListGrants|à¤\85नà¥\81दान à¤¸à¤¾à¤°à¤£à¥\80]] à¤¦à¥\87à¤\96à¥\87à¤\82।",
        "botpasswords-label-grants-column": "प्रदान किया",
        "botpasswords-bad-appid": "बॉट नाम \"$1\" मान्य नहीं है।",
        "botpasswords-insert-failed": "बॉट नाम \"$1\" को जोड़ने में विफल हुआ। क्या यह पहले से है?",
        "botpasswords-updated-body": "सदस्य \"$2\" के बॉट नाम \"$1\" का पासवर्ड सफलतापूर्वक अद्यतन हुआ।",
        "botpasswords-deleted-title": "बॉट पासवर्ड हट गया",
        "botpasswords-deleted-body": "सदस्य \"$2\" के बॉट नाम \"$1\" का पासवर्ड हट गया।",
-       "botpasswords-newpassword": "आपका नया पासवर्ड आपके प्रवेश <strong>$1</strong> के साथ <strong>$2</strong> है। <em>भविष्य में उपयोग करने हेतु इसे याद रखें</em>",
+       "botpasswords-newpassword": "<strong>$1</strong> के साथ लॉगिन करने के लिए आपका नया पासवर्ड <strong>$2</strong> है। <em>भविष्य के लिए इसे याद रखें</em> <br> (पुराने बॉट के लिए लॉगिन नाम और बॉट का सदस्य नाम समान चाहिए होता है, तो आप <strong>$3</strong> का उपयोग अपने सदस्य नाम के रूप में और <strong>$4</strong> का उपयोग अपने पासवर्ड के रूप में कर सकते हैं।)",
        "botpasswords-no-provider": "BotPasswordsSessionProvider उपलब्ध नहीं है।",
        "botpasswords-restriction-failed": "इस प्रवेश में बॉट पासवर्ड रुकावट डाल रहा है।",
        "botpasswords-invalid-name": "जो सदस्य नाम आप बता रहे हो, उसमें बॉट पासवर्ड अलग करने वाला (\"$1\") नहीं है।",
        "preview": "झलक",
        "showpreview": "झलक दिखाएँ",
        "showdiff": "बदलाव दिखाएँ",
-       "blankarticle": "<strong>चेतावनी:</strong> आप एक रिक्त पृष्ठ का निर्माण कर रहे हैं।\nयदि आप \"{{int:savearticle}}\" को पुनः दबाते हैं तो पृष्ठ को बिना किसी सामग्री के निर्मित किया जाएगा।",
+       "blankarticle": "<strong>चेतावनी:</strong> आप एक रिक्त पृष्ठ का निर्माण कर रहे हैं।\nयदि आप \"$1\" को फिर से दबाते हैं तो बिना सामग्री का पृष्ठ निर्मित हो जाएगा।",
        "anoneditwarning": "<strong>सावधान:</strong> आपने सत्रारंभ नहीं किया है। यदि आप सम्पादन करते हैं तो इस पृष्ठ के संपादन इतिहास में आपका आइ॰पी पता अंकित किया जाएगा। यदि आप <strong>[$1 लॉगिन]</strong> करते हैं अथवा <strong>[$2 खाता बनाते हैं]</strong> तो अन्य सुविधाओं के साथ-साथ आपके संपादनों का श्रेय आपके सदस्यनाम पर दिया जाएगा।",
        "anonpreviewwarning": "''आप लॉग्ड इन नहीं हैं। पृष्ठ सहेजने पर आपका आइ॰पी पता इस पृष्ठ के इतिहास में दर्ज किया जायेगा।''",
-       "missingsummary": "'''à¤\85नà¥\81सà¥\8dमारà¤\95:''' à¤\86पनà¥\87 à¤¸à¤\82पादन à¤¸à¤¾à¤°à¤¾à¤\82श à¤¨à¤¹à¥\80à¤\82 à¤¦à¤¿à¤¯à¤¾ à¤¹à¥\88।\nà¤\85à¤\97र à¤\86प à¤¦à¥\81बारा \"{{int:savearticle}}\" à¤ªà¤° à¤\95à¥\8dलिà¤\95 à¤\95रतà¥\87 à¤¹à¥\88à¤\82 à¤¤à¥\8b à¤\86पà¤\95ा à¤¸à¤\82पादन à¤¬à¤¿à¤¨à¤¾ à¤¸à¤¾à¤°à¤¾à¤\82श à¤\95à¥\87 à¤¸à¤\82à¤\9cà¥\8bया जायेगा।",
-       "selfredirect": "<strong>चेतावनी:</strong> आप खुद को इस पेज पुनः निर्देशित कर रहे हैं।\nआप अनुप्रेषित के लिए गलत लक्ष्य निर्दिष्ट हो सकता है, या आप गलत पृष्ठ का संपादन किया जा सकता है।\nआप फिर से \"{{int:savearticle}}\" क्लिक करते हैं, रीडायरेक्ट वैसे भी बनाया जाएगा।",
+       "missingsummary": "'''सà¥\82à¤\9aना:''' à¤\86पनà¥\87 à¤¸à¤\82पादन à¤¸à¤¾à¤°à¤¾à¤\82श à¤¨à¤¹à¥\80à¤\82 à¤¦à¤¿à¤¯à¤¾ à¤¹à¥\88।\nà¤\85à¤\97र à¤\86प à¤¦à¥\81बारा \"$1\" à¤ªà¤° à¤\95à¥\8dलिà¤\95 à¤\95रतà¥\87 à¤¹à¥\88à¤\82 à¤¤à¥\8b à¤\86पà¤\95ा à¤¸à¤\82पादन à¤¬à¤¿à¤¨à¤¾ à¤¸à¤¾à¤°à¤¾à¤\82श à¤\95à¥\87 à¤¸à¤¹à¥\87à¤\9cा जायेगा।",
+       "selfredirect": "<strong>चेतावनी:</strong> आप खुद को इस पेज पुनः निर्देशित कर रहे हैं।\nआप अनुप्रेषित के लिए गलत लक्ष्य निर्दिष्ट हो सकता है, या आप गलत पृष्ठ का संपादन किया जा सकता है।\nआप फिर से \"$1\" क्लिक करते हैं, रीडायरेक्ट वैसे भी बनाया जाएगा।",
        "missingcommenttext": "कृपया नीचे टिप्पणी दें।",
-       "missingcommentheader": "'''अनुस्मारक:''' आपने इस टिप्पणी का कोई शीर्षक नहीं दिया है।\nअगर आप \"{{int:savearticle}}\" पर दोबारा क्लिक करते हैं तो आपके बदलाव बिना शीर्षक के संजोये जायेंगे।",
+       "missingcommentheader": "'''अनुस्मारक:''' आपने इस टिप्पणी का कोई शीर्षक नहीं दिया है।\nअगर आप \"$1\" पर दोबारा क्लिक करते हैं तो आपके बदलाव बिना शीर्षक के संजोये जायेंगे।",
        "summary-preview": "सारांश की झलक:",
        "subject-preview": "विषय की झलक:",
        "previewerrortext": "आपके परिवर्तनों का पूर्वावलोकन करने का प्रयास करते समय एक त्रुटि हुई।",
        "editingsection": "$1 सम्पादन (अनुभाग)",
        "editingcomment": "$1 सम्पादन (नया अनुभाग)",
        "editconflict": "संपादन अंतर्विरोध: $1",
-       "explainconflict": "आपके द्वारा सम्पादन शुरू करने के बाद से किसी अन्य व्यक्ति ने इस पृष्ठ में बदलाव किये हैं।\nऊपरी पाठ सम्पादन क्षेत्र में वर्तमान पाठ दर्शाया गया है।\nनिछले क्षेत्र में आपके बदलाव दर्शाये गये हैं।\nआपको अपने बदलाव वर्तमान पाठ में स्वयं एकत्रित करने होंगे।\nआपके \"{{int:savearticle}}\" पर क्लिक करने पर '''केवल''' ऊपरी क्षेत्र में दिखने वाला पाठ संजोया जायेगा।",
+       "explainconflict": "आपके द्वारा सम्पादन शुरू करने के बाद से किसी अन्य व्यक्ति ने इस पृष्ठ में बदलाव किये हैं।\nऊपरी पाठ सम्पादन क्षेत्र में वर्तमान पाठ दर्शाया गया है।\nनिछले क्षेत्र में आपके बदलाव दर्शाये गये हैं।\nआपको अपने बदलाव वर्तमान पाठ में स्वयं एकत्रित करने होंगे।\nआपके \"$1\" पर क्लिक करने पर '''केवल''' ऊपरी क्षेत्र में दिखने वाला पाठ संजोया जायेगा।",
        "yourtext": "आपका पाठ",
        "storedversion": "संजोया हुआ अवतरण",
        "nonunicodebrowser": "'''सावधान: आपका ब्राउज़र युनिकोड को स्वीकार नहीं करता है।'''\nआपके द्वारा सुयोग्य संपादन होने के लिये: ग़ैर-ASCII कैरैक्टर षट्‍पदी कोड (hexadecimal) में दर्शाए जायेंगे।",
        "readonlywarning": "<strong>सावधान: डाटाबेस को रख-रखाव के लिये बंद कर दिया गया है, इसलिये अभी आपके बदलाव संजोए नहीं जा सकते।\nअगर आप चाहें तो इस सामग्री को बाद के लिए कॉपी-पेस्ट कर के किसी टेक्स्ट फ़ाइल में रख सकते हैं।</strong>\n\nबंद करने वाले कार्यकारी प्रबंधक ने बंद करने का यह कारण दिया है: $1",
        "protectedpagewarning": "'''चेतावनी: इस पृष्ठ को सुरक्षित कर दिया गया है और इसे केवल प्रबंधक ही सम्पादित कर सकते हैं।'''\nनवीनतम लॉग प्रविष्टि संदर्भ के लिये नीचे दी है:",
        "semiprotectedpagewarning": "'''सूचना:''' यह पृष्ठ सुरक्षित कर दिया गया है और इसे केवल पंजीकृत सदस्य ही सम्पादित कर सकते हैं।\nनवीनतम लॉग प्रविष्टि संदर्भ के लिये नीचे दी है:",
-       "cascadeprotectedwarning": "'''सावधान:''' यह पृष्ठ निम्नलिखित सुरक्षा-सीढ़ी {{PLURAL:$1|पृष्ठ से|पन्नों से}} जुड़ा हुआ होने के कारण सुरक्षित है, और केवल प्रबंधक ही इसमें बदलाव कर सकते हैं:",
+       "cascadeprotectedwarning": "<strong>सावधान:</strong> यह पृष्ठ निम्नलिखित सुरक्षा-सीढ़ी वाले {{PLURAL:$1|पृष्ठ से|पन्नों से}} जुड़ा हुआ होने के कारण सुरक्षित है, और केवल [[Special:ListGroupRights|आवश्यक अधिकार वाले]] ही इसमें बदलाव कर सकते हैं:",
        "titleprotectedwarning": "'''चेतावनी: यह पृष्ठ सुरक्षित है और इसे बनाने के लिये [[Special:ListGroupRights|विशेष अधिकारों]] की आवश्यकता है।'''\nनवीनतम लॉग प्रविष्टि संदर्भ के लिये नीचे दी है:",
        "templatesused": "इस पृष्ठ पर प्रयुक्त {{PLURAL:$1|साँचा|साँचे}}:",
        "templatesusedpreview": "इस झलक में प्रयुक्त {{PLURAL:$1|साँचा|साँचे}}:",
        "search-file-match": "(फ़ाइल सामग्री से मेल खाता है)",
        "search-suggest": "कहीं आपका मतलब $1 तो नहीं था?",
        "search-rewritten": "$1 का परिणाम दिखा रहा है। यह $2 हेतु खोज रहा है।",
-       "search-interwiki-caption": "अन्य प्रकल्प",
+       "search-interwiki-caption": "अन्य प्रकल्पों से परिणाम",
        "search-interwiki-default": "$1 से परिणाम:",
        "search-interwiki-more": "(और)",
        "search-interwiki-more-results": "अधिक परिणाम",
        "userrights-expiry-options": "एक दिन:1 day,एक सप्ताह:1 week,एक महीना:1 month,तीन महीने:3 months,छः महीने:6 months,एक वर्ष:1 year",
        "userrights-invalid-expiry": "\"$1\" समूह के लिए समाप्ती तिथि अमान्य है।",
        "userrights-expiry-in-past": "\"$1\" समूह हेतु समाप्ती का समय पहले ही बीत चुका है।",
-       "userrights-cannot-shorten-expiry": "à¤\86प \"$1\" à¤¸à¤®à¥\82ह à¤\95à¥\80 à¤¸à¤®à¤¾à¤ªà¥\8dति à¤\95à¥\8b à¤\86à¤\97à¥\87 à¤¨à¤¹à¥\80à¤\82 à¤¬à¤¢à¤¼à¤¾ à¤¸à¤\95तà¥\87 à¤¹à¥\88à¤\82। à¤\95à¥\87वल à¤\87स à¤¸à¤®à¥\82ह à¤\95à¥\8b à¤\9cà¥\8bड़नà¥\87 à¤\94र à¤¨à¤¿à¤\95ालनà¥\87 à¤\95à¥\80 à¤\85नà¥\81मति à¤µà¤¾à¤²à¥\87 à¤\89पयà¥\8bà¤\97à¤\95रà¥\8dता à¤\86à¤\97à¥\87 à¤¸à¤®à¤¾à¤ªà¥\8dति à¤¸à¤®à¤¯ à¤²ा सकते हैं।",
+       "userrights-cannot-shorten-expiry": "à¤\86प \"$1\" à¤¸à¤®à¥\82ह à¤\95à¥\80 à¤¸à¤®à¤¾à¤ªà¥\8dति à¤\95à¥\8b à¤\86à¤\97à¥\87 à¤¨à¤¹à¥\80à¤\82 à¤¬à¤¢à¤¼à¤¾ à¤¸à¤\95तà¥\87 à¤¹à¥\88à¤\82। à¤\95à¥\87वल à¤\87स à¤¸à¤®à¥\82ह à¤®à¥\87à¤\82 à¤\9cà¥\8bड़नà¥\87 à¤\94र à¤¨à¤¿à¤\95ालनà¥\87 à¤\95à¥\80 à¤\85नà¥\81मति à¤µà¤¾à¤²à¥\87 à¤¸à¤¦à¤¸à¥\8dय à¤¹à¥\80 à¤¸à¤®à¤¾à¤ªà¥\8dति à¤¸à¤®à¤¯ à¤\95à¥\8b à¤\86à¤\97à¥\87 à¤¬à¤¢à¤¼ा सकते हैं।",
        "userrights-conflict": "सदस्य अधिकार बदलावों में अंतर्विरोध! कृपया अपने बदलाव जाँचें और पुनः सुनिश्चित करें।",
        "group": "समूह:",
        "group-user": "सदस्य",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|नए पन्नों की सूची]] को भी देखें)",
        "recentchanges-submit": "दिखाएँ",
        "rcfilters-activefilters": "सक्रिय फिल्टर",
+       "rcfilters-quickfilters": "सहेजा फ़िल्टर सेटिंग",
+       "rcfilters-quickfilters-placeholder-title": "कोई कड़ी अभी तक सहेजा नहीं गया",
+       "rcfilters-quickfilters-placeholder-description": "अपने फ़िल्टर सेटिंग को सहेजने और बाद में उपयोग करने के लिए नीचे दिये बूकमार्क छवि पर क्लिक करें।",
+       "rcfilters-savedqueries-defaultlabel": "सहेजे फ़िल्टर",
+       "rcfilters-savedqueries-rename": "नाम बदलें",
+       "rcfilters-savedqueries-setdefault": "मूल के रूप में रखें",
+       "rcfilters-savedqueries-unsetdefault": "मूल के रूप से हटाएँ",
+       "rcfilters-savedqueries-remove": "निकालें",
+       "rcfilters-savedqueries-new-name-label": "नाम",
+       "rcfilters-savedqueries-apply-label": "सेटिंग संजोयें",
+       "rcfilters-savedqueries-cancel-label": "रद्द करें",
+       "rcfilters-savedqueries-add-new-title": "वर्तमान फ़िल्टर सेटिंग को सहेजें",
        "rcfilters-restore-default-filters": "मूलभूत फिल्टर पुनर्स्थापित करे",
        "rcfilters-clear-all-filters": "सभी फिल्टर हटाएँ",
        "rcfilters-search-placeholder": "हाल में हुए बदलाव फ़िल्टर (ब्राउज़ या टाइप करना आरंभ करें)",
        "rcfilters-filter-registered-description": "लॉग-इन संपादक।",
        "rcfilters-filter-unregistered-label": "अपंजीकृत",
        "rcfilters-filter-unregistered-description": "संपादक जो लॉग इन नहीं हैं।",
-       "rcfilters-filtergroup-authorship": "लेखकों को संपादित करें",
-       "rcfilters-filter-editsbyself-label": "आपके अपने संपादन",
-       "rcfilters-filter-editsbyself-description": "आपके द्वारा संपादित",
-       "rcfilters-filter-editsbyother-label": "दूसरों के द्वारा संपादित",
-       "rcfilters-filter-editsbyother-description": "अन्य उपयोगकर्ताओं द्वारा बनाई गए संपादन (आपके द्वारा नहीं)",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "यह फ़िल्टर निम्न {{PLURAL:$2|फ़िल्टर}} के साथ संघर्ष करता है, जो केवल पंजीकृत सदस्यों को ही {{PLURAL:$2|ढूंढ}} रहा है: $1",
+       "rcfilters-filtergroup-authorship": "लेखक योगदान",
+       "rcfilters-filter-editsbyself-label": "आपके द्वारा बदलाव",
+       "rcfilters-filter-editsbyself-description": "आपके अपने योगदान।",
+       "rcfilters-filter-editsbyother-label": "दूसरों के द्वारा बदलाव",
+       "rcfilters-filter-editsbyother-description": "आपके बदलावों को छोड़ कर सभी के बदलाव।",
        "rcfilters-filtergroup-userExpLevel": "अनुभव स्तर (केवल पंजीकृत सदस्यों के लिए)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "अनुभव फ़िल्टर केवल पंजीकृत उपयोगकर्ता पाते हैं इसलिए यह फ़िल्टर \"अपंजीकृत\" फ़िल्टर के साथ संघर्ष करता है।",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"अपंजीकृत\" फ़िल्टर एक या अधिक अनुभव फिल्टर के साथ संघर्ष करता है, जो केवल पंजीकृत उपयोगकर्ता ढूंढते हैं परस्पर विरोधी फिल्टर ऊपर सक्रिय फिल्टर क्षेत्र में चिह्नित हैं।",
        "rcfilters-filter-user-experience-level-newcomer-label": "अपरिचित",
        "rcfilters-filter-user-experience-level-newcomer-description": "4 दिनों की गतिविधि और 10 सम्पादन से कम।",
        "rcfilters-filter-user-experience-level-learner-label": "शिक्षार्थियों",
+       "rcfilters-filter-user-experience-level-learner-description": "\"नए सदस्यों\" की तुलना में अधिक लेकिन \"अनुभवी सदस्यों\" से कम अनुभवी",
        "rcfilters-filter-user-experience-level-experienced-label": "अनुभवी सदस्य",
        "rcfilters-filter-user-experience-level-experienced-description": "30 दिन से अधिक गतिविधि और 500 सम्पादन।",
        "rcfilters-filtergroup-automated": "स्वचालित योगदान",
        "rcfilters-filter-minor-description": "लेखक का संपादन छोटा संपादन के रूप में लेबल किया गया है।",
        "rcfilters-filter-major-label": "गैर-मामूली संपादन",
        "rcfilters-filter-major-description": "छोटा चिन्हित न किए सम्पादन।",
+       "rcfilters-filtergroup-watchlist": "ध्यानसूची पृष्ठ",
+       "rcfilters-filter-watchlist-watched-label": "ध्यानसूची में",
+       "rcfilters-filter-watchlist-watched-description": "आपकी ध्यानसूची पर पृष्ठों में परिवर्तन",
+       "rcfilters-filter-watchlist-watchednew-label": "नया ध्यानसूची बदलाव",
+       "rcfilters-filter-watchlist-watchednew-description": "ध्यानसूची पृष्ठों में किए गए परिवर्तन, जिन आपने परिवर्तनों के बाद से देखा नहीं है।",
+       "rcfilters-filter-watchlist-notwatched-label": "ध्यानसूची में नहीं",
+       "rcfilters-filter-watchlist-notwatched-description": "आपके ध्यानसूची पृष्ठों में परिवर्तन के अलावा सब कुछ",
        "rcfilters-filtergroup-changetype": "बदलाव के प्रकार:",
        "rcfilters-filter-pageedits-label": "पृष्ठ संपादन",
        "rcfilters-filter-pageedits-description": "विकि सामग्री, चर्चा, श्रेणी विवरणों के संपादन ....",
        "rcfilters-filter-categorization-label": "श्रेणी परिवर्तन",
        "rcfilters-filter-categorization-description": "श्रेणियों से पृष्ठों के रिकॉर्ड्स को जोड़ा या निकाला जा सकता है",
        "rcfilters-filter-logactions-label": "लॉग की गई कार्रवाई",
-       "rcfilters-filter-logactions-description": "प्रशासनिक कार्रवाई, खाता निर्माण, पृष्ठ विलोपन, अपलोड ....",
+       "rcfilters-filter-logactions-description": "प्रबंधकीय कार्रवाई, खाता निर्माण, पृष्ठ विलोपन, अपलोड ....",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "\"लघु संपादन\" फ़िल्टर एक या एक से अधिक प्रकार के परिवर्तन फ़िल्टर के साथ संघर्ष करता है, क्योंकि कुछ प्रकार के परिवर्तन को \"लघु\" के रूप में निर्दिष्ट नहीं किया जा सकता है। परस्पर विरोधी फिल्टर ऊपर सक्रिय फिल्टर क्षेत्र में चिह्नित हैं।",
+       "rcfilters-hideminor-conflicts-typeofchange": "कुछ प्रकार के परिवर्तन को \"लघु\" के रूप में निर्दिष्ट नहीं किया जा सकता है\", इसलिए यह फ़िल्टर निम्न प्रकार के परिवर्तन फिल्टर के साथ संघर्ष करता है: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "इस प्रकार का परिवर्तन फ़िल्टर \"लघु संपादन\" फ़िल्टर के साथ संघर्ष करता है। कुछ प्रकार के परिवर्तन को \"लघु\" के रूप में निर्दिष्ट नहीं किया जा सकता है।",
+       "rcfilters-filtergroup-lastRevision": "सद्य अवतरण",
+       "rcfilters-filter-lastrevision-label": "अंतिम अवतरण",
+       "rcfilters-filter-lastrevision-description": "पृष्ठ का सबसे हाल में हुआ बदलाव",
+       "rcfilters-filter-previousrevision-label": "पहले के अवतरण",
+       "rcfilters-filter-previousrevision-description": "सभी परिवर्तन जो एक पृष्ठ में सबसे हाल के परिवर्तन नहीं हैं।",
+       "rcfilters-filter-excluded": "अपवर्जित",
+       "rcfilters-tag-prefix-namespace-inverted": " $1 <strong>:नहीं</strong>",
+       "rcfilters-view-tags": "चिप्पियाँ",
        "rcnotefrom": "नीचे <strong>$2</strong> के बाद से (<strong>$1</strong> तक) {{PLURAL:$5|हुआ बदलाव दर्शाया गया है|हुए बदलाव दर्शाए गये हैं}}।",
+       "rclistfromreset": "चुने दिनांक पहले जैसा करें",
        "rclistfrom": "$3 $2 से नये बदलाव दिखाएँ",
        "rcshowhideminor": "छोटे बदलाव $1",
        "rcshowhideminor-show": "दिखाएँ",
        "rcshowhidecategorization": "$1 पृष्ठ श्रेणीकरण",
        "rcshowhidecategorization-show": "दिखाएँ",
        "rcshowhidecategorization-hide": "छुपाएँ",
-       "rclinks": "पिछले $2 दिनों में हुए $1 बदलाव दिखाएँ<br />$3",
+       "rclinks": "पिछले $2 दिनों में हुए $1 बदलाव दिखाएँ",
        "diff": "अंतर",
        "hist": "इतिहास",
        "hide": "छुपाएँ",
        "recentchangeslinked-page": "पृष्ठ नाम:",
        "recentchangeslinked-to": "इसके बदले में दिये हुए पृष्ठसे जुडे पन्नोंके बदलाव दर्शायें",
        "recentchanges-page-added-to-category": "[[:$1]] श्रेणी में जुड़ा",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] à¤\94र [[Special:WhatLinksHere/$1|{{PLURAL:$2|à¤\8fà¤\95 à¤ªà¥\83षà¥\8dठ|$2 à¤ªà¥\83षà¥\8dठ}}]] à¤¶à¥\8dरà¥\87णà¥\80 à¤®à¥\87à¤\82 à¤\9cà¥\81ड़ा",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] à¤¶à¥\8dरà¥\87णà¥\80 à¤®à¥\87à¤\82 à¤\9cà¥\8bड़ा à¤\97या, [[Special:WhatLinksHere/$1|यह à¤ªà¥\87à¤\9c à¤\85नà¥\8dय à¤ªà¥\83षà¥\8dठà¥\8bà¤\82 à¤®à¥\87à¤\82 à¤¶à¤¾à¤®à¤¿à¤² à¤¹à¥\88]]",
        "recentchanges-page-removed-from-category": "[[:$1]] श्रेणी से हटा",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] à¤\94र [[Special:WhatLinksHere/$1|{{PLURAL:$2|à¤\8fà¤\95 à¤ªà¥\83षà¥\8dठ|$2 à¤ªà¥\83षà¥\8dठ}}]] à¤¶à¥\8dरà¥\87णà¥\80 à¤¸à¥\87 à¤¹à¤\9fा",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] à¤¶à¥\8dरà¥\87णà¥\80 à¤¸à¥\87 à¤¹à¤\9fाया à¤\97या, [[Special:WhatLinksHere/$1|यह à¤ªà¥\87à¤\9c à¤\85नà¥\8dय à¤ªà¥\83षà¥\8dठà¥\8bà¤\82 à¤®à¥\87à¤\82 à¤¶à¤¾à¤®à¤¿à¤² à¤¹à¥\88]]",
        "autochange-username": "मीडियाविकि स्वतः परिवर्तन",
        "upload": "फ़ाइल अपलोड करें",
        "uploadbtn": "फ़ाइल अपलोड करें",
        "file-thumbnail-no": "इस फ़ाइल का नाम <strong>$1</strong> से शुरू हो रहा है।\nयह आकार घटाई हुई ''(अंगूठाकार)'' हो सकती है।\nअगर यह चित्र अपने मूल आकार में है तो इसे अपलोड करें, नहीं तो फ़ाइल बदलें।",
        "fileexists-forbidden": "इस नाम की फ़ाइल पहले ही मौजूद है, और इसकी जगह और नहीं अपलोड की जा सकती।\nयदि आप इस फ़ाइल को फिर भी अपलोड करना चाहते हैं, तो कृपया वापस जा के इसके लिए कोई अन्य नाम चुनें।\n[[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "इस नाम की फ़ाइल साझे फ़ाइल भंडार में पहले ही मौजूद है।\nयदि आप इस फ़ाइल को फिर भी अपलोड करना चाहते हैं, तो कृपया वापस जा के इसके लिए कोई अन्य नाम चुनें।\n[[File:$1|thumb|center|$1]]",
+       "fileexists-no-change": "अपलोड <strong>[[:$1]]</strong> के वर्तमान संस्करण का सटीक प्रतिलिपि है।",
+       "fileexists-duplicate-version": "अपलोड <strong>[[:$1]]</strong> के  {{PLURAL:$2|पुराने संस्करणों}} का सटीक प्रतिलिपि है",
        "file-exists-duplicate": "यह फ़ाइल निम्नलिखित {{PLURAL:$1|फ़ाइल|फ़ाइलों}} की प्रति है:",
        "file-deleted-duplicate": "इसी फ़ाइल ([[:$1]]) से हूबहू मेल खाती एक फ़ाइल पहले हटाई जा चुकी है।\nइसे फिर से अपलोड करने से पहले आपको पुरानी फ़ाइल का हटाने के इतिहास देख लेना चाहिए।",
        "file-deleted-duplicate-notitle": "इससे पहले इस फ़ाइल के समान एक फ़ाइल को हटाया गया है, और शीर्षक छिपा दिया गया है।\nइसे फिर से अपलोड करने से पहले आप किसी ऐसे व्यक्ति से स्थिति की समीक्षा करने के लिए कहें जिसके पास छिपी फ़ाइल का डाटा देखने की क्षमता है।",
        "php-uploaddisabledtext": "पी॰एच॰पी में फ़ाइल अपलोड बंद हैं।\nकृपया file_uploads जमाव की जाँच करें।",
        "uploadscripted": "इस फ़ाइल में एच॰टी॰एम॰एल या स्क्रिप्ट कोड है, जो वेब ब्राउज़र द्वारा गलत पढ़ा जा सकता है।",
        "upload-scripted-pi-callback": "उस फाइल को अपलोड नहीं किया जा सकता जिसमें एक्सएमएल-स्टाइलशीट प्रसंस्करण निर्देश समाविष्ट हैं।",
+       "upload-scripted-dtd": "SVG फ़ाइलों को अपलोड नहीं किया जा सकता जिसमें एक गैर-मानक DTD की घोषणा हो।",
        "uploaded-script-svg": "अपलोड की गयी एसवीजी फ़ाइल में स्क्रीप्ट अवयव \"$1\" पाया गया।",
        "uploaded-hostile-svg": "अपलोड की गयी एसवीजी फाइल के शैली अवयव में असुरक्षित सीएसएस पायी गयी।",
        "uploaded-event-handler-on-svg": "सेटिंग ईवेंट हैंडलर (आयोजन प्रबन्धनकर्ता वरियता) <code>$1=\"$2\"</code> एसवीजी फ़ाइल में अनुमत नहीं है।",
        "upload-http-error": "एक एच॰टी॰टी॰पी त्रुटि आई: $1",
        "upload-copy-upload-invalid-domain": "कॉपी अपलोड इस डोमेन से उपलब्ध नहीं हैं।",
        "upload-foreign-cant-upload": "यह विकि अन्य फ़ाइल संग्रह में अपलोड हेतु तय नहीं किया गया है।",
+       "upload-foreign-cant-load-config": "फ़ाइल अपलोड के लिए कॉन्फ़िगरेशन को विदेशी फ़ाइल रिपॉजिटरी में लोड करने में विफल।",
+       "upload-dialog-disabled": "इस बॉक्स का उपयोग कर फ़ाइल अपलोड इस विकी पर अक्षम हैं।",
        "upload-dialog-title": "फ़ाइल डालें",
        "upload-dialog-button-cancel": "रद्द करें",
        "upload-dialog-button-back": "पीछे",
        "uploadstash-errclear": "फ़ाइलों को साफ़ करना असफल रहा।",
        "uploadstash-refresh": "फ़ाइलों की सूची रिफ़्रेश करें",
        "uploadstash-thumbnail": "छवि देखें",
+       "uploadstash-exception": "गुप्त कोष में अपलोड स्टोर नहीं किया जा सका ($1): \"$2\".",
        "invalid-chunk-offset": "अग्राह्य चंक ऑफ़सेट",
        "img-auth-accessdenied": "अनुमति नहीं है",
        "img-auth-nopathinfo": "PATH_INFO मौजूद नहीं है।\nआपके सर्वर में इस जानकारी को भेजने के लिए जमाव नहीं है।\nयह सी॰जी॰आई-आधारित हो सकता है और img_auth को स्वीकार नहीं करता है।\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization देखें।",
        "filerevert-submit": "पूर्ववत करें",
        "filerevert-success": "'''[[Media:$1|$1]]''' को [$4 $2 को $3 बजे के अवतरण] को पूर्ववत कर दिया गया है।",
        "filerevert-badversion": "दिये हुए समय से मेल खाने वाला इस फ़ाइल का पुराना अवतरण नहीं है।",
+       "filerevert-identical": "फ़ाइल का वर्तमान संस्करण पहले से ही चयनित एक जैसा है।",
        "filedelete": "$1 हटाएँ",
        "filedelete-legend": "फ़ाइल हटाएँ",
        "filedelete-intro": "आप फ़ाइल '''[[Media:$1|$1]]''' इतिहास समेत हटाने जा रहे हैं।",
        "unusedtemplates": "अप्रयुक्त साँचे",
        "unusedtemplatestext": "इस पृष्ठ पर {{ns:template}} नामस्थान वाले वे सभी पृष्ठ इंगित है जो किसी अन्य पृष्ठ में शामिल नहीं हैं।\nइन्हें हटाने के पहले इन साँचों की और कड़ियाँ जाँच लें।",
        "unusedtemplateswlh": "अन्य कड़ियाँ",
-       "randompage": "यादà¥\83à¤\9aà¥\8dà¤\9bिà¤\95 पृष्ठ",
+       "randompage": "à¤\95à¥\8bà¤\88 à¤­à¥\80 पृष्ठ",
        "randompage-nopages": "कोई भी पृष्ठ {{PLURAL:$2|इस नामस्थान|इन नामस्थानों}} में नहीं हैं: $1।",
-       "randomincategory": "शà¥\8dरà¥\87णà¥\80 à¤®à¥\87à¤\82 à¤¯à¤¾à¤¦à¥\83à¤\9aà¥\8dà¤\9bिà¤\95 (रà¥\88à¤\82डम) पृष्ठ",
+       "randomincategory": "शà¥\8dरà¥\87णà¥\80 à¤®à¥\87à¤\82 à¤°à¥\88à¤\82डम पृष्ठ",
        "randomincategory-invalidcategory": "\"$1\" एक मान्य श्रेणी नाम नहीं है।",
        "randomincategory-nopages": "[[:Category:$1|$1]] श्रेणी में कोई पृष्ठ नहीं हैं।",
        "randomincategory-category": "श्रेणी:",
-       "randomincategory-legend": "शà¥\8dरà¥\87णà¥\80 à¤®à¥\87à¤\82 à¤¯à¤¾à¤¦à¥\83à¤\9aà¥\8dà¤\9bिà¤\95 पृष्ठ",
+       "randomincategory-legend": "शà¥\8dरà¥\87णà¥\80 à¤®à¥\87à¤\82 à¤°à¥\88à¤\82डम पृष्ठ",
        "randomincategory-submit": "जायें",
        "randomredirect": "किसी एक पुनर्निर्देशन पर जाएँ",
        "randomredirect-nopages": "नामस्थान \"$1\" में कोई पुनर्निर्देशन नहीं हैं।",
        "uncategorizedcategories": "अश्रेणीकृत श्रेणियाँ",
        "uncategorizedimages": "अश्रेणीकृत फ़ाइलें",
        "uncategorizedtemplates": "अश्रेणीकृत साँचे",
+       "uncategorized-categories-exceptionlist": " # इसमें श्रेणियों की एक सूची है, जिसका विशेष:श्रेणीहीन_श्रेणियाँ उल्लेख नहीं किया जाना चाहिए। प्रति पंक्ति एक, \"*\" से शुरू. दूसरे वर्ण (व्हाइटस्पेस सहित) के साथ शुरू होने वाली पंक्तिओं को नजरअंदाज कर दिया जाता है। टिप्पणियों के लिए \"#\" का उपयोग करें।",
        "unusedcategories": "अप्रयुक्त श्रेणियाँ",
        "unusedimages": "अप्रयुक्त फ़ाइलें",
        "wantedcategories": "वांछित श्रेणियाँ",
        "apisandbox-sending-request": "एपीआई अनुरोध भेज रहा...",
        "apisandbox-loading-results": "एपीआई परिणाम ले रहा...",
        "apisandbox-results-error": "एपीआई के समय कोई त्रुटि हुई: $1",
+       "apisandbox-request-selectformat-label": "अनुरोध डेटा को इस रूप में दिखाएं:",
+       "apisandbox-request-format-url-label": "यूआरएल क्वेरी स्ट्रिंग",
        "apisandbox-request-url-label": "अनुरोध URL:",
        "apisandbox-request-json-label": "JSON अनुरोध:",
        "apisandbox-request-time": "अनुरोध समय: {{PLURAL:$1|$1 मि}}",
        "apisandbox-alert-field": "जगह में डाला गया जानकारी अमान्य है।",
        "apisandbox-continue": "जारी रखें",
        "apisandbox-continue-clear": "खाली करें",
+       "apisandbox-continue-help": "{{int:apisandbox-continue}} [https://www.mediawiki.org/wiki/API:Query#Continuing_queries continue] अंतिम अनुरोध होगा; {{int:apisandbox-continue-clear}} निरंतरता-संबंधित मानदंडों को साफ करेगा।",
+       "apisandbox-param-limit": "अधिकतम सीमा का उपयोग करने के लिए <kbd>अधिकतम</kbd> दर्ज करें।",
        "apisandbox-multivalue-all-namespaces": "$1 (सभी नामस्थान)",
        "apisandbox-multivalue-all-values": "$1 (सभी मूल्य)",
        "booksources": "पुस्तकों के स्रोत",
        "booksources-search": "खोजें",
        "booksources-text": "नीचे पुरानी और नई पुस्तकें बेचने वाली वेबसाइटों के एड्रेस हैं, जिसमें आपको आप द्वारा खोजी जाने वाली पुस्तक के बारे में अधिक जानकारी मिल सकती है:",
        "booksources-invalid-isbn": "यह आइ॰एस॰बी॰एन सही नहीं लग रहा है; मूल स्रोत से नकल करने में हुई त्रुटि के लिए जाँचें।",
+       "magiclink-tracking-rfc": "RFC जादू लिंक का उपयोग कर रहे पेज",
+       "magiclink-tracking-rfc-desc": "यह पृष्ठ आरएफसी जादू लिंक का उपयोग करता है। कैसे माइग्रेट करें [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] पर देखें।",
+       "magiclink-tracking-pmid": "पीएमआईडी जादू लिंक का उपयोग कर रहे पेज",
+       "magiclink-tracking-pmid-desc": "यह पृष्ठ पीएमआईडी जादू लिंक का उपयोग करता है। कैसे माइग्रेट करें [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] पर देखें।",
+       "magiclink-tracking-isbn": "आईएसबीएन के जादुई कड़ियों का उपयोग करने वाले पृष्ठ",
+       "magiclink-tracking-isbn-desc": "यह पृष्ठ आईएसबीएन जादू लिंक का उपयोग करता है। कैसे माइग्रेट करें [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] पर देखें।",
        "specialloguserlabel": "कर्ता:",
-       "speciallogtitlelabel": "पà¥\8dरयà¥\8bà¤\9cन (शà¥\80रà¥\8dषà¤\95 à¤\85थवा {{ns:सदसà¥\8dयनाम}}:सदसà¥\8dय à¤¨à¤¾à¤®):",
+       "speciallogtitlelabel": "लà¤\95à¥\8dषà¥\8dय (शà¥\80रà¥\8dषà¤\95 à¤¯à¤¾ \"{{ns:सदसà¥\8dयनाम}}:सदसà¥\8dयनाम\" à¤¸à¤¦à¤¸à¥\8dय à¤¹à¥\87तà¥\81):",
        "log": "लॉग",
        "logeventslist-submit": "दिखाएँ",
        "all-logs-page": "सभी सार्वजनिक लॉग",
        "activeusers-intro": "यह सक्रिय सदस्यों की सूची है जिन्होंने पिछले $1 {{PLURAL:$1|दिन|दिनों}} में कुछ गतिविधि करी है।",
        "activeusers-count": "$1 {{PLURAL:$1|कार्य}} पिछले $3 {{PLURAL:$3|दिन|दिनों}} में",
        "activeusers-from": "इस अक्षर से शुरू होने वाले सदस्य दिखाएँ:",
+       "activeusers-groups": "इस समूह के सदस्यों को दिखाएँ:",
+       "activeusers-excludegroups": "इस समूह के सदस्यों को न दिखाएँ:",
        "activeusers-noresult": "कोई सदस्य नहीं मिले।",
        "activeusers-submit": "सक्रिय सदस्यों को दिखायें",
        "listgrouprights": "सदस्य समूह अधिकार",
        "trackingcategories-msg": "चिह्नित श्रेणी",
        "trackingcategories-name": "संदेश नाम",
        "trackingcategories-desc": "श्रेणी शामिल किए जाने के मानदंड",
+       "restricted-displaytitle-ignored": "नजरअंदाज कर दिया प्रदर्शन शीर्षक वाले पृष्ठ",
+       "restricted-displaytitle-ignored-desc": "पृष्ठ पर ध्यान नहीं दिया गया है।<code><nowiki>{{DISPLAYTITLE}}</nowiki></code> क्योंकि यह पृष्ठ के वास्तविक शीर्षक के बराबर नहीं है।",
        "noindex-category-desc": "यह पृष्ठ रोबॉटों द्वारा सूचीबद्ध नहीं है क्योंकि इसमें जादूई शब्द <code><nowiki>__NOINDEX__</nowiki></code> है और ऐसे स्थान पर है जहाँ उस झंडी की अनुमति है।",
        "index-category-desc": "इस पृष्ठ का एक <code><nowiki>__INDEX__</nowiki></code> उस पर है (ऐसे स्थान पर है जहाँ उस झंडी की अनुमति है), और इसलिए इसे रोबॉटों द्वारा सूचीबद्ध है जबकि साधारणतः ऐसा नहीं होता है।",
        "post-expand-template-inclusion-category-desc": "पृष्ठ का साइज़ <code>$wgMaxArticleSize</code> से बढ़कर है। सभी साँचों के फैलाने के बाद कुछ साँचों को फैलाया नहीं जा सकता है।",
        "emailccsubject": "आपके ई-मेल की प्रति जो $1 को भेजा गया: $2",
        "emailsent": "ई-मेल भेज दिया गया है।",
        "emailsenttext": "आपका ई-मेल संदेश भेज दिया गया है।",
-       "emailuserfooter": "इस ई-मेल को $1 {{GENDER:$1|द्वारा}} {{GENDER:$2|$2}} को भेजा गया था जिसके लिए \"{{int:emailuser}}\" कार्य को {{SITENAME}} पर प्रयोग में लाया गया था।",
+       "emailuserfooter": "इस ई-मेल को $1 {{GENDER:$1|द्वारा}} {{GENDER:$2|$2}} को भेजा गया था जिसके लिए \"{{int:emailuser}}\" कार्य को {{SITENAME}} पर प्रयोग में लाया गया था। अगर {{GENDER:$2|आप}} इस ईमेल का उत्तर देते हैं, {{GENDER:$2|आपका}} ईमेल सीधे {{GENDER:$1|मूल प्रेषक}} को भेज दिया जाएगा। {{GENDER:$1उनको}} {{GENDER:$2|अपना}} ईमेल पता बताएं।",
        "usermessage-summary": "प्रणाली सन्देश छोड़ रहा है।",
        "usermessage-editor": "सिस्टम दूत",
        "watchlist": "ध्यानसूची",
        "delete-toobig": "इस पृष्ठ का संपादन इतिहास $1 से अधिक {{PLURAL:$1|अवतरण}} होने की वजह से बहुत बड़ा है।\n{{SITENAME}} के अनपेक्षित रूप से बंद होने से रोकने के लिये ऐसे पृष्ठों को हटाने की अनुमति नहीं है।",
        "delete-warning-toobig": "इस पृष्ठ का संपादन इतिहास $1 से अधिक {{PLURAL:$1|अवतरण}} होने की वजह से बहुत बड़ा है।\nइसे हटाने से {{SITENAME}} के डाटाबेस की गतिविधियों में व्यवधान आ सकता है;\nकृपया सोच समझ कर आगे बढ़ें।",
        "deleteprotected": "आप इस पृष्ठ को हटा नहीं सकते क्योंकि इसे सुरक्षित किया गया है।",
-       "deleting-backlinks-warning": "'''चेतावनी:''' जो पृष्ठ आप हटाने जा रहे हैं उससे [[Special:WhatLinksHere/{{FULLPAGENAME}}|अन्य पृष्ठ]] जुड़ते हैं अथवा उसे ट्रांसक्लूड करते हैं।",
+       "deleting-backlinks-warning": "<strong>चेतावनी:</strong> जो पृष्ठ आप हटाने जा रहे हैं उससे [[Special:WhatLinksHere/{{FULLPAGENAME}}|अन्य पृष्ठ]] जुड़ते हैं अथवा उसे ट्रांसक्लूड करते हैं।",
        "rollback": "संपादन वापिस लें",
        "rollbacklink": "वापिस लें",
        "rollbacklinkcount": "$1 {{PLURAL:$1|सम्पादन}} वापिस लें",
        "rollbacklinkcount-morethan": "$1 से अधिक {{PLURAL:$1|सम्पादन}} वापिस लें",
        "rollbackfailed": "वापिस लेना असफल रहा",
+       "rollback-missingparam": "अनुरोध पर अपेक्षित पैरामीटर गायब हैं।",
        "rollback-missingrevision": "अवतरण डाटा दिखाने में असमर्थ।",
        "cantrollback": "पुराने अवतरण को पूर्ववत नहीं कर सकते हैं;\nइस पृष्ठ का अन्तिम योगदानकर्ता इस लेख का एकमात्र लेखक है।",
        "alreadyrolled": "[[User:$2|$2]] ([[User talk:$2|वार्ता]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) द्वारा किए गए  [[:$1]] के पिछले संपादन को वापिस पुरानी स्थिति पर नहीं लाया जा सकता है;\nकिसी और ने इस बीच या तो इस पृष्ठ को फिर से संपादित कर दिया है या पहले ही पृष्ठ पुरानी स्थिति पर लाया जा चुका है।\n\nइस पृष्ठ का अन्तिम संपादन [[User:$3|$3]] ([[User talk:$3|वार्ता]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) ने किया है।",
        "revertpage": "[[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) के संपादनों को हटाकर [[User:$1|$1]] के अन्तिम अवतरण को पूर्ववत किया",
        "revertpage-nouser": "(सदस्य नाम हटाया गया है) के संपादनों को हटाकर {{GENDER:$1|[[User:$1|$1]]}} के अन्तिम अवतरण को पूर्ववत किया।",
        "rollback-success": "{{GENDER:$3|$1}} के संपादन हटाए;\n{{GENDER:$4|$2}} द्वारा संपादित अन्तिम अवतरण को पुनर्स्थापित किया।",
+       "rollback-success-notify": "$1 द्वारा वापिस लौटे संपादन; $2 द्वारा पिछली संशोधन में वापस बदल दिया। [$3 बदलाव दिखाएं]",
        "sessionfailure-title": "सत्र विफलता",
        "sessionfailure": "ऐसा प्रतीत होता है कि आपके लॉगिन सत्र के साथ कोई समस्या है।\nसत्र अपहरण से बचाने के लिए सावधानी के तौर पर आपका यह क्रियाकलाप रद्द कर दिया गया है।\nकृपया पीछे जाएँ और पृष्ठ को पुनः लोड करें, तब दुबारा कोशिश करें।",
        "changecontentmodel": "पेज कि सामगरिि मोदल को बदलिये",
        "undeletehistorynoadmin": "यह पृष्ठ हटा दिया गया है।\nहटाए जाने का कारन नीचे सारांश में दिया गया है, और साथ ही उन सदस्यों के बारे में विस्तार भी दिया गया है, जिन्होंने हटाए जाने से पहले इस पृष्ठ को संपादित किया था।\nइन हटाये गए अवतरणों का पाठ केवल प्रबंधकों को ही उपलब्ध है।",
        "undelete-revision": "$1 ($4 को $5 बजे $3 द्वारा बनाया गया) का मिटाया हुआ संस्करण:",
        "undeleterevision-missing": "अमान्य अथवा अनुपस्थित अवतरण।\nया तो आप ग़लत कड़ी प्रयोग कर रहे हैं, या यह अवतरण पुनर्स्थापित किया जा चुका है, अथवा इसे लेखागार से हटा दिया गया है।",
+       "undeleterevision-duplicate-revid": "{{PLURAL:$1|One revision|$1संशोधन}} को पुनर्स्थापित नहीं किया जा सका, क्योंकि {{PLURAL:$1|यह|अपने}} <code>rev_id</code> पहले से ही उपयोग में है।",
        "undelete-nodiff": "कोई पुराना अवतरण नहीं मिला।",
        "undeletebtn": "वापस ले आयें",
        "undeletelink": "देखें/पुनर्स्थापित करें",
        "sp-contributions-uploads": "अपलोड",
        "sp-contributions-logs": "लॉग",
        "sp-contributions-talk": "वार्ता",
-       "sp-contributions-userrights": "सदस्य अधिकार प्रबंधन",
+       "sp-contributions-userrights": "{{GENDER:$1|सदस्य}} अधिकार प्रबंधन",
        "sp-contributions-blocked-notice": "यह सदस्य फ़िलहाल अवरोधित हैं। सदंर्भ के लिए ताज़ातरीन अवरोध चिट्ठा प्रविष्टि नीचे है:",
        "sp-contributions-blocked-notice-anon": "यह आईपी पता अभी अवरोधित है। \nनवीनतम अवरोध अभिलेख प्रविष्टि सन्दर्भ के लिए नीचे दी गई है:",
        "sp-contributions-search": "योगदान के लिये खोज",
        "unblock": "उपयोक्ता पर अवरोधण हटाएँ",
        "blockip": "{{GENDER:$1|सदस्य|सदस्या}} अवरोधित करें",
        "blockip-legend": "सदस्य को ब्लॉक करें",
-       "blockiptext": "विशिष्ठ IP पते अथवा सदस्य नाम को लिखने के अधिकार से बाध्य करने के लिए निम्न पत्र का प्रयोग करें।\nयह सिर्फ बर्बरता को रोकने के लिए ही किया जाना चाहिए, और [[{{MediaWiki:Policy-url}}|नीति]] के अनुसार ही करना चाहिए।\nनीचे विशिष्ठ कारण भी लिखें (उदाहरण के लिए, सटीक पृष्ठों को दर्शाते हुए, जिनमें बर्बरता की गई हो)।",
+       "blockiptext": "विशिष्ठ IP पते अथवा सदस्य नाम को लिखने के अधिकार से बाध्य करने के लिए निम्न पत्र का प्रयोग करें।\nयह सिर्फ बर्बरता को रोकने के लिए ही किया जाना चाहिए, और [[{{MediaWiki:Policy-url}}|नीति]] के अनुसार ही करना चाहिए।\nनीचे विशिष्ठ कारण भी लिखें (उदाहरण के लिए, सटीक पृष्ठों को दर्शाते हुए, जिनमें बर्बरता की गई हो)।\nआप [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing सीआईडीआर] सिंटैक्स का उपयोग करके आईपी पता श्रेणियां ब्लॉक कर सकते हैं। आईपीवी4 के लिए सबसे बड़ी स्वीकार्य सीमा /$1 है और आईपीवी6 के लिए /$2 है।",
        "ipaddressorusername": "आईपी एड्रेस या सदस्यनाम:",
        "ipbexpiry": "समाप्ति:",
        "ipbreason": "कारण:",
        "unblocked-id": "अवरोध $1 निकाल दिया गया है",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] पर से प्रतिरोध हटाया गया है।",
        "blocklist": "अवरोधित उपयोक्ता",
+       "autoblocklist": "स्वतःअवरोध",
        "autoblocklist-submit": "खोजें",
+       "autoblocklist-legend": "स्वतः अवरोध सूची",
+       "autoblocklist-localblocks": "स्थानीय {{PLURAL:$1|स्वतः अवरोध}}",
+       "autoblocklist-total-autoblocks": "स्वतःअवरोध की कुल संख्या: $1",
+       "autoblocklist-empty": "स्वतः अवरोध सूची खाली है।",
+       "autoblocklist-otherblocks": "अन्य {{PLURAL:$1|स्वतःअवरोध}}",
        "ipblocklist": "अवरोधित आईपी पते व सदस्यनाम",
        "ipblocklist-legend": "अवरोधित सदस्य को खोजें",
        "blocklist-userblocks": "खाते के अवरोध छिपाएं",
        "proxyblockreason": "आपका IP पता बाधित किया जा चुका है क्योंकि यह एक मुक्त प्रतिनिधि है।\nकृपया आप अपने इंटरनेट सेवा प्रदान करने वाले से या तकनीकी सहायक से सम्पर्क करें अथवा उन्हें इस भयावह सुरक्षा समस्या के बारे में सूचित करें।",
        "sorbsreason": "{{SITENAME}} द्वारा इस्तेमालमें लाये जाने वाले DNSBL में आपके आईपी एड्रेसको ओपन प्रॉक्सीमें दर्शाया गया हैं।",
        "sorbs_create_account_reason": "{{SITENAME}} के DNSBL ने आपका आईपी एड्रेस ओपन प्रोक्सी करके सूचित किया हैं। आप खाता खोल नहीं सकतें।",
-       "softblockrangesreason": "à¤\86पà¤\95à¥\87 à¤\86à¤\88पà¥\80 ($1) à¤\95à¥\87 à¤¦à¥\8dवारा à¤¬à¤¿à¤¨à¤¾ à¤\96ाता à¤\95à¥\87 à¤¸à¤®à¥\8dपादन à¤¨à¤¹à¥\80à¤\82 à¤¹à¥\8b à¤¸à¤\95ता à¤¹à¥\88। à¤\95à¥\83पया à¤\96ातà¥\87 à¤®à¥\87à¤\82 à¤ªà¥\8dरवà¥\87श (लà¥\89à¤\97िन) करें।",
+       "softblockrangesreason": "à¤\86पà¤\95à¥\87 à¤\86à¤\88पà¥\80 ($1) à¤\95à¥\87 à¤¦à¥\8dवारा à¤¬à¤¿à¤¨à¤¾ à¤\96ाता à¤\95à¥\87 à¤¸à¤®à¥\8dपादन à¤¨à¤¹à¥\80à¤\82 à¤¹à¥\8b à¤¸à¤\95ता à¤¹à¥\88। à¤\95à¥\83पया à¤\96ातà¥\87 à¤®à¥\87à¤\82 à¤²à¥\89à¤\97 à¤\87न करें।",
        "xffblockreason": "एक आई०पी० पता जो X-Forwarded-For हेडर में मौजूद है, या तो आपका है या उस प्रौक्सी सरवर का है जिसका आप प्रयोग कर रहे हैं और उस पर प्रतिबंध लगा दिया गया है। वास्तविक कारण था: $1",
        "cant-see-hidden-user": "जिस सदस्य को आप अवरोधित करने की कोशिश कर रहे हैं उसे पहले ही अवरोधित कर के छुपाया जा चुका है।\nचूँकि आपके पास hideuser अधिकार नहीं है, आप इस सदस्य का अवरोधन ना देख सकते हैं और ना ही सम्पादित कर सकते हैं।",
        "ipbblocked": "आप अन्य प्रयोक्ताओं को अवरोधित या अनवरोधित नहीं कर सकते, क्योंकि आप स्वयं अवरोधित हैं",
        "move-page-legend": "पृष्ठ स्थानांतरण",
        "movepagetext": "निम्नलिखित प्रारूप को काम में लेने पर पृष्ठ का नाम परिवर्तित हो जायेगा, इसका सम्पूर्ण इतिहास नये नाम पर स्थानान्तरित हो जायेगा।\nपुराना शीर्षक नये शीर्षक पर एक अनुप्रेषण पृष्ठ बन जायेगा।\nआप मूल शीर्षक पर अनुप्रेषिणों को स्वतः अद्यतन कर सकते हैं।\nयदि आप ऐसा नहीं करते हैं तो [[Special:DoubleRedirects|द्वि-अनुप्रेषण]] और [[Special:BrokenRedirects|टूटे हुये अनुप्रेषणों]] की जाँच करें।\nकड़ियों के आवश्यक रूप से सही स्थान पर जोड़ने के लिए आप उत्तरदायी हैं।\n\nयदि नये शीर्षक पर पहले से कोई पृष्ठ उपलब्ध है तो पृष्ठ का स्थानान्तरण <strong>नहीं</strong> होगा जबकि बाद वाला इतिहास रहित अनुप्रेषण नहीं है।\nइसका अर्थ यह हुआ कि आप किसी पृष्ठ का पुनः नामकरण वहाँ कर सकते हैं जहाँ से इसको गलती से यहाँ स्थानान्तरित किया गया है और आप पहले से बने हुये पृष्ठ को पुनः नहीं लिख सकते।\n\n<strong>टिप्पणी:</strong>\nयह किसी लोकप्रिय पृष्ठ के लिए कठोर और अप्रत्यासित परिवर्तन हो सकता है;\nकृपया आगे बढ़ने से पहले इसके परिणामों को अच्छे से समझ लें।",
        "movepagetext-noredirectfixer": "नीचे दिया हुआ पर्चा पृष्ठ का नाम बदल देगा, उसका सारा इतिहास भी नए नाम से दिखना शुरू हो जाएगा।\nपुराना शीर्षक नये नाम को अनुप्रेषित करेगा ।\nमूल शीर्षक की ओर ले जाने वाले अग्रेषणों को आप स्वचालित रूप से बदल सकते हैं।\nयदि आप ऐसा नहीं करते हैं तो कृपया [[Special:DoubleRedirects|दोहरे]] पुनर्निर्देशण या [[Special:BrokenRedirects|टूटे पुनर्निर्देशन]] के लिए ज़रूर जाँच करें।\nकड़ियाँ सही जगह इंगित करती रहें, यह सुनिश्चित करना आपकी जिम्मेदारी है।\n\nअगर नये शीर्षक का लेख पहले से है तो स्थानांतरण <strong>नहीं</strong> होगा। पर अगर नये शीर्षक वाला लेख खाली है अथवा कहीं और अनुप्रेषित करता है और साथ ही उसके पुराने संस्करण नहीं हैं तो स्थानांतरण हो जायेगा ।\nइसका मतलब कि यदि आपसे गलती हो जाए तो आप वापस पुराने नाम पर इस पृष्ठ का स्थानांतरण कर सकेंगे, और साथ ही आप किसी मौजूदा पृष्ठ के बदले यह स्थानांतरण नहीं कर सकते हैं।\n\n<strong>चेतावनी!</strong>\nयदि पृष्ठ काफ़ी लोकप्रिय है तो उसके लिए यह एक बहुत बड़ा व अकस्मात् परिवर्तन हो सकता है;\nआगे बढ़ने से पहले इसका अंजाम अच्छी तरह समझ लें।\n\n<strong>सूचना!</strong>\nस्थानांतरण करनेसे कोई भी महत्वपूर्ण लेख में अनपेक्षित बदलाव हो सकते है ।\nआपसे अनुरोध है कि आप इसके परिणाम जान लें ।",
-       "movepagetalktext": "सà¤\82बà¤\82धित à¤µà¤¾à¤°à¥\8dता à¤ªà¥\83षà¥\8dठ à¤\87सà¤\95à¥\87 à¤¸à¤¾à¤¥ à¤¸à¥\8dथानाà¤\82तरà¥\80त à¤¨à¤¹à¥\80à¤\82 à¤¹à¥\8bà¤\97ा '''à¤\85à¤\97र:'''\n* à¤\86प à¤ªà¥\83षà¥\8dठ à¤¦à¥\81सरà¥\87 à¤¨à¤¾à¤®à¤¸à¥\8dथान à¤®à¥\87à¤\82 à¤¸à¥\8dथानाà¤\82तरà¥\80त à¤\95र à¤°à¤¹à¥\87à¤\82 à¤¹à¥\88\n* à¤\87स à¤¨à¤¾à¤® à¤\95ा à¤µà¤¾à¤°à¥\8dता à¤ªà¥\83षà¥\8dठ à¤ªà¤¹à¤²à¥\87सà¥\87 à¤¬à¤¨à¤¾ à¤¹à¥\81वा à¤¹à¥\88, à¤¯à¤¾\n* à¤¨à¥\80à¤\9aà¥\87 à¤¦à¤¿à¤¯à¤¾ à¤¹à¥\81à¤\86 à¤\9aà¥\87à¤\95 à¤¬à¥\89à¤\95à¥\8dस à¤\86पनà¥\87 à¤¨à¤¿à¤\95ाल à¤¦à¤¿à¤¯à¤¾ à¤¹à¥\88 à¥¤\n\nà¤\87न à¤®à¤¾à¤®à¤²à¥\8bà¤\82मे आपको स्वयं यह पृष्ठ जोडने पड़ सकते है ।",
+       "movepagetalktext": "यदि à¤\86प à¤\87स à¤¬à¥\89à¤\95à¥\8dस à¤\95à¥\8b à¤\9aà¥\87à¤\95 à¤\95रतà¥\87 à¤¹à¥\88à¤\82, à¤¸à¤\82बà¤\82धित à¤µà¤¾à¤°à¥\8dता à¤ªà¥\83षà¥\8dठ à¤¸à¥\8dवà¤\9aालित à¤°à¥\82प à¤¸à¥\87 à¤¨à¤\8f à¤¶à¥\80रà¥\8dषà¤\95 à¤ªà¤° à¤²à¥\87 à¤\9cाया à¤\9cाà¤\8fà¤\97ा, à¤\9cब à¤¤à¤\95 à¤\95ि à¤\8fà¤\95 à¤°à¤¿à¤\95à¥\8dत à¤µà¤¾à¤°à¥\8dता à¤ªà¥\83षà¥\8dठ à¤ªà¤¹à¤²à¥\87 à¤¸à¥\87 à¤®à¥\8cà¤\9cà¥\82द à¤¨ à¤¹à¥\8b।\n\nà¤\87स à¤®à¤¾à¤®à¤²à¥\87 मे आपको स्वयं यह पृष्ठ जोडने पड़ सकते है ।",
        "moveuserpage-warning": "<strong>चेतावनी:</strong> आप एक सदस्य पृष्ठ स्थानांतरित करने जा रहे हैं। कृपया ध्यान दें कि केवल पृष्ठ का नाम बदला जाएगा और सदस्यनाम <em>नहीं</em> बदलेगा।",
        "movecategorypage-warning": "<strong>चेतावनी:</strong> आप एक श्रेणी पृष्ठ को स्थानांतरित करने जा रहे हैं। याद रखिए कि केवल वह पृष्ठ स्थानांतरित होगा और पुरानी श्रेणी में शामिल पृष्ठ नई श्रेणी के अंतरगत <em>नहीं</em> आएँगे।",
        "movenologintext": "लेख स्थानान्तरित करने के लिये आपका [[Special:UserLogin|लॉग इन]] किया होना आवश्यक हैं।",
        "movelogpagetext": "नीचे सभी स्थानान्तरणों की सूची दी गई है।",
        "movesubpage": "{{PLURAL:$1|उप पृष्ठ|उप पृष्ठ}}",
        "movesubpagetext": "नीचे $1 {{PLURAL:$1|पृष्ठ दिखाया गया है, जो इस पृष्ठ का उप पृष्ठ है|पृष्ठ दिखाया गया है, जो इस पृष्ठ के उप पृष्ठ हैं}}।",
+       "movesubpagetalktext": "{{PLURAL:$1|उप-पृष्ठ}} में संबंधित वार्ता पृष्ठ नीचे दिखाए गए हैं",
        "movenosubpage": "इस पृष्ठ के कोई उपपृष्ठ नहीं हैं।",
        "movereason": "कारण:",
        "revertmove": "पुराने अवतरण पर ले जाएं",
        "tooltip-pt-mycontris": "आपके योगदानों की सूची",
        "tooltip-pt-anoncontribs": "इस आईपी पते से संपादन की सूची",
        "tooltip-pt-login": "आपको सत्रारम्भ करने के लिए प्रोत्साहित किया जाता है; लेकिन यह अनिवार्य नहीं है",
+       "tooltip-pt-login-private": "इस विकि का उपयोग करने हेतु लॉगिन (प्रवेश) करें",
        "tooltip-pt-logout": "प्रस्थान",
        "tooltip-pt-createaccount": "हमारा सुझाव है की आप खाता बनाएँ और लॉगिन करें, परन्तु यह अनिवार्य नहीं है",
        "tooltip-ca-talk": "सामग्री पृष्ठ के बारे में वार्तालाप",
        "newimages-legend": "छननी",
        "newimages-label": "संचिका नाम (या उसका अंश):",
        "newimages-user": "आईपी पता या सदस्यनाम",
+       "newimages-newbies": "केवल नये खातों के योगदान दिखायें",
        "newimages-showbots": "बॉट के अपलोड दिखाइये",
        "newimages-hidepatrolled": "जाँचा हुआ अपलोड छुपाएँ",
+       "newimages-mediatype": "मीडिया प्रकार:",
        "noimages": "देखने के लिए कुछ नहीं है।",
+       "gallery-slideshow-toggle": "टॉगल थंबनेल",
        "ilsubmit": "खोजें",
        "bydate": "तिथि अनुसार",
        "sp-newimages-showfrom": "$2, $1 के बाद की फ़ाईलें दर्शायें",
        "confirmrecreate-noreason": "जब आपने इस पृष्ठ का सम्पादन शुरू किया था, उसके बाद से सदस्य [[User:$1|$1]] ([[User talk:$1|talk]]) ने इसे हटा दिया है।  कृपया पुष्टि करें कि आप इस पृष्ठ को पुनः बनाना चाहते हैं।",
        "recreate": "फिरसे बनायें",
        "unit-pixel": "px",
+       "confirm-purge-title": "पृष्ठ ताजा करें",
        "confirm_purge_button": "ओके",
-       "confirm-purge-top": "à¤\95à¥\8dया à¤\86प à¤¯à¤¹ à¤ªà¥\83षà¥\8dठ à¤\95ा à¤\95à¥\88श à¤\96़ालà¥\80 à¤\95रनà¥\87 à¤\9aाहिà¤\8f?",
+       "confirm-purge-top": "à¤\87स à¤ªà¥\87à¤\9c à¤\95ा à¤\95à¥\88श à¤\96ालà¥\80 à¤\95रà¥\87à¤\82?",
        "confirm-purge-bottom": "किसी पृष्ठ को मिटाने से संचिका साफ़ हो जाती है और इस वजह से ताज़ातरीन संस्करण प्रकट हो जाता है।",
        "confirm-watch-button": "ठीक है",
        "confirm-watch-top": "इस पृष्ठ को अपने ध्यानसूची में जोड़ें?",
        "tag-filter-submit": "छननी",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|टैग}}]]: $2)",
        "tag-mw-contentmodelchange": "सामग्री मॉडल परिवर्तन",
+       "tag-mw-contentmodelchange-description": "पृष्ठ [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel सामग्री मॉडल को परिवर्तित करें] के संपादन।",
        "tags-title": "चिप्पियाँ",
        "tags-intro": "यह पृष्ठ अर्थ सहित वह चिप्पियाँ दर्शाता है जिनका कोई तंत्रांश किसी संपादन पर निशान लगाने के लिए इस्तेमाल कर सकता है।",
        "tags-tag": "चिप्पी का नाम",
        "tags-create-reason": "कारण:",
        "tags-create-submit": "बनाएँ",
        "tags-create-no-name": "आपको एक चिप्पि का नाम निर्दिष्ट करना चाहिए।",
-       "tags-create-invalid-chars": "à¤\9fà¥\88à¤\97 à¤¨à¤¾à¤®à¥\8bà¤\82 à¤\95à¥\87 à¤¬à¥\80à¤\9a à¤\95à¥\89मा(<code>,</code>) à¤¯à¤¾ à¤\86à¤\97à¥\87 à¤\95à¥\87 à¤¸à¥\8dलà¥\88श à¤¨à¤¹à¥\80à¤\82 à¤¹à¥\8bनà¥\87 à¤\9aाहिà¤\8f। (<code>/</code>).",
+       "tags-create-invalid-chars": "à¤\9aिपà¥\8dपियà¥\8bà¤\82 à¤\95à¥\87 à¤¨à¤¾à¤® à¤®à¥\87à¤\82 à¤\95à¥\8bमा (<code>,</code>) à¤\85थवा à¤\86à¤\97à¥\87 à¤\95à¥\87 à¤¸à¥\8dलà¥\88श (<code>/</code>) à¤¨à¤¹à¥\80à¤\82 à¤¹à¥\8bनà¥\87 à¤\9aाहियà¥\87।",
        "tags-create-invalid-title-chars": "टैग नामों में ऐसे कैरेक्टर नहीं होने चाहिए जो पृष्ठ के शीर्षक में नहीं इस्तेमाल हो सकते हैं।",
        "tags-create-already-exists": "टैग \"$1\" पहले से ही उपस्थित है।",
        "tags-create-warnings-above": "निम्न लिखित {{PLURAL:$2|चेतावनी देखी गई है|चेतावनियाँ देखी गई हैं}}  जब टैग \"$1\" बनाने का प्रयास किया गया था:",
        "htmlform-date-placeholder": "वववव-मम-दद",
        "htmlform-time-placeholder": "घघ:मम:सस",
        "htmlform-datetime-placeholder": "वववव-मम-दद हह:मम:सस",
+       "htmlform-date-invalid": "आपने जो मान डाला है, उसे दिनांक के रूप में नहीं पहचान पा रहा है। YYYY-MM-DD के प्रारूप में प्रयास करें।",
+       "htmlform-time-invalid": "आपने जो मान डाला है, उसे समय के रूप में नहीं पहचान पा रहा है। HH:MM:SS के प्रारूप में प्रयास करें।",
+       "htmlform-datetime-invalid": "आपने जो मान डाला है, उसे दिनांक और समय के रूप में नहीं पहचान पा रहा है। YYYY-MM-DD HH:MM:SS के प्रारूप में प्रयास करें।",
+       "htmlform-date-toolow": "आपके द्वारा निर्दिष्ट मान $1 की आरंभिक तिथि से पहले है",
+       "htmlform-date-toohigh": "आपके द्वारा निर्दिष्ट मान $1 की नवीनतम अनुमत तिथि के बाद है",
+       "htmlform-time-toolow": "आपके द्वारा निर्दिष्ट मान $1 के आरंभिक समय से पहले है।",
+       "htmlform-time-toohigh": "आपके द्वारा निर्दिष्ट मान $1 के नवीनतम अनुमत समय के बाद है।",
+       "htmlform-datetime-toolow": "आपके द्वारा उल्लिखित मूल्य $1 की आरंभिक तिथि और समय से पहले है।",
+       "htmlform-datetime-toohigh": "आपके द्वारा निर्दिष्ट मूल्य $1 की नवीनतम अनुमति तिथि और समय के बाद है।",
        "htmlform-title-badnamespace": "[[:$1]] अभी \"{{ns:$2}}\" नामस्थान में नहीं है।",
        "htmlform-title-not-creatable": "\"$1\" निर्माण करने लायक शीर्षक नहीं है।",
        "htmlform-title-not-exists": "$1 नहीं बना है।",
        "htmlform-user-not-exists": "<strong>$1</strong> मौजूद नहीं है।",
-       "htmlform-user-not-valid": "<strong>$1</strong> à¤®à¤¾à¤¨à¥\8dय à¤ªà¥\8dरयà¥\8bà¤\95à¥\8dता नाम नहीं है।",
+       "htmlform-user-not-valid": "<strong>$1</strong> à¤®à¤¾à¤¨à¥\8dय à¤¸à¤¦à¤¸à¥\8dय नाम नहीं है।",
        "logentry-delete-delete": "$1 ने पृष्ठ $3 {{GENDER:$2|हटा}} दिया",
        "logentry-delete-delete_redir": "$1 ने $3 से पुनर्निर्देशन {{GENDER:$2|हटाकर}} अन्य जानकारी डाल दी।",
        "logentry-delete-restore": "$1 ने पृष्ठ $3 ($4) को {{GENDER:$2|पुनर्स्थापित}} कर दिया",
+       "logentry-delete-restore-nocount": "$1 $3 पृष्ठ {{GENDER:$2|को बहाल किया}}",
+       "restore-count-revisions": "{{PLURAL:$1|1 संशोधन|$1 संशोधन}}",
+       "restore-count-files": "{{PLURAL:$1|1 फ़ाइल|$1 फ़ाइल}}",
        "logentry-delete-event": "$1 ने $3 पृष्ठ की लॉग {{PLURAL:$5|प्रविष्टि|प्रविष्टियों}} की दृश्यता {{GENDER:$2|बदली}}: $4",
        "logentry-delete-revision": "$1 ने $3 पृष्ठ के {{PLURAL:$5|एक अवतरण|$5 अवतरणों}} की दृश्यता {{GENDER:$2|बदली}}: $4",
        "logentry-delete-event-legacy": "$1 ने $3 पृष्ठ पर लॉग क्रियाओं की दृश्यता {{GENDER:$2|बदली}}",
        "pagelang-nonexistent-page": "$1 पन्ना अभी बना नहीं है।",
        "pagelang-unchanged-language": "$1 की भाषा पहले ही $2 तय की गई है।",
        "pagelang-unchanged-language-default": "$1 पृष्ठ में विकि की मूल भाषा पहले से तय कर दी गई है।",
+       "pagelang-db-failed": "डेटाबेस पृष्ठ भाषा को बदलने में विफल रहा।",
        "right-pagelang": "पृष्ठ भाषा बदलें",
        "action-pagelang": "पृष्ठ भाषा बदलने",
        "log-name-pagelang": "भाषा बदलाव लॉग",
        "special-characters-group-thai": "थाई",
        "special-characters-group-lao": "लाओ",
        "special-characters-group-khmer": "खमेर",
+       "special-characters-group-canadianaboriginal": "कनाडाई एबोरिजिनल",
        "special-characters-title-endash": "एन डैश",
        "special-characters-title-emdash": "एम डैश",
        "special-characters-title-minus": "ऋण चिह्न",
        "mw-widgets-titleinput-description-redirect": "$1 को अनुप्रेषित",
        "mw-widgets-categoryselector-add-category-placeholder": "श्रेणी जोड़ें...",
        "mw-widgets-usersmultiselect-placeholder": "और जोड़ें...",
+       "date-range-from": "दिनांक से (शुरू):",
+       "date-range-to": "दिनांक तक (समाप्त):",
        "sessionmanager-tie": "एक साथ कई अनुरोध को नहीं मिला सकता: $1",
        "sessionprovider-generic": "$1 सत्र",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "कुकी-आधारित सत्र",
        "sessionprovider-nocookies": "हो सकता है कि कुकी निष्क्रिय है। कृपया देखें कि और सक्रिय करें।",
        "randomrootpage": "अविशिष्ट मूल पृष्ठ",
        "log-action-filter-block": "अवरोध के प्रकार:",
+       "log-action-filter-contentmodel": "सामग्री मॉडल परिवर्तन का प्रकार:",
        "log-action-filter-delete": "हटाने के प्रकार:",
        "log-action-filter-import": "आयात के प्रकार:",
+       "log-action-filter-managetags": "टैग प्रबंधन कार्रवाई का प्रकार:",
        "log-action-filter-move": "स्थानांतरण के प्रकार:",
        "log-action-filter-newusers": "खाता निर्माण के प्रकार:",
        "log-action-filter-patrol": "परीक्षण के प्रकार:",
        "log-action-filter-protect": "सुरक्षा के प्रकार:",
        "log-action-filter-rights": "अधिकार बदलाव के प्रकार:",
+       "log-action-filter-suppress": "दमन के प्रकार:",
        "log-action-filter-upload": "अपलोड के प्रकार:",
        "log-action-filter-all": "सभी",
        "log-action-filter-block-block": "अवरोध",
        "log-action-filter-block-reblock": "अवरोध परिवर्तन",
        "log-action-filter-block-unblock": "अवरोध हटाना",
+       "log-action-filter-contentmodel-change": "सामग्री मॉडल में बदलाव",
+       "log-action-filter-contentmodel-new": "गैर-डिफ़ॉल्ट सामग्री मॉडल वाले पृष्ठ का निर्माण",
        "log-action-filter-delete-delete": "पृष्ठ हटाना",
+       "log-action-filter-delete-delete_redir": "पुननिर्देशित ओवरराइट",
        "log-action-filter-delete-restore": "पृष्ठ न हटाना",
        "log-action-filter-delete-event": "पृष्ठ हटाने का लॉग",
        "log-action-filter-delete-revision": "अवतरण हटाना",
        "log-action-filter-import-interwiki": "अंतरविकि आयात",
        "log-action-filter-import-upload": "एक्सएमएल अपलोड द्वारा आयात",
        "log-action-filter-managetags-create": "चिप्पि निर्मित",
+       "log-action-filter-managetags-delete": "टैग हटाना",
+       "log-action-filter-managetags-activate": "टैग सक्रियण",
+       "log-action-filter-managetags-deactivate": "टैग निष्क्रियकरण",
+       "log-action-filter-move-move": "पुननिर्देशों को ओवरराईट किये बिना स्थान्तरण करे",
+       "log-action-filter-move-move_redir": "पुननिर्देशों को ओवरराईट किये स्थान्तरण करे",
        "log-action-filter-newusers-create": "अज्ञात सदस्य द्वारा निर्मित",
        "log-action-filter-newusers-create2": "पंजीकृत सदस्य द्वारा निर्मित",
        "log-action-filter-newusers-autocreate": "स्वतः निर्मित",
        "log-action-filter-suppress-reblock": "पुन: ब्लॉक द्वारा युजर अवरोध",
        "log-action-filter-upload-upload": "नया अपलोड",
        "log-action-filter-upload-overwrite": "फिर से अपलोड",
+       "authmanager-authn-not-in-progress": "प्रमाणीकरण प्रगति में नहीं है या सत्र डेटा खो गया है। कृपया शुरुआत से फिर से शुरू करें",
+       "authmanager-authn-no-primary": "आपूर्ति किए गए क्रेडेंशियल्स को प्रमाणित नहीं किया जा सका।",
+       "authmanager-authn-no-local-user": "दिए गए क्रेडेंशियल इस विकी पर किसी भी उपयोगकर्ता से जुड़े नहीं हैं।",
+       "authmanager-authn-no-local-user-link": "दिए गए क्रेडेंशियल्स मान्य हैं लेकिन इस विकी पर किसी भी उपयोगकर्ता से जुड़े नहीं हैं। किसी अन्य तरीके से लॉगिन करें, या एक नया उपयोगकर्ता बनाएं, और आपके पास उस खाते में अपने पिछले क्रेडेंशियल को लिंक करने का विकल्प होगा।",
+       "authmanager-authn-autocreate-failed": "किसी स्थानीय खाते के स्वत:-निर्माण विफल हुआ:$1",
+       "authmanager-change-not-supported": "आपूर्ति की गई क्रेडेंशियल्स को बदला नहीं जा सकता, क्योंकि उनका उपयोग उनको नहीं होगा।",
        "authmanager-create-disabled": "खाता निर्माण निष्क्रिय है।",
+       "authmanager-create-from-login": "अपना खाता बनाने के लिए नीचे दिये जगहों को भर दें।",
+       "authmanager-create-not-in-progress": "खाता निर्माण प्रगति में नहीं है या सत्र डेटा खो गया है। कृपया शुरुआत से फिर से शुरू करें",
+       "authmanager-create-no-primary": "खाता निर्माण के लिए आपूर्ति की गई क्रेडेंशियल्स का उपयोग नहीं किया जा सका।",
+       "authmanager-link-no-primary": "खाता लिंकिंग के लिए आपूर्ति की गई क्रेडेंशियल का उपयोग नहीं किया जा सका।",
+       "authmanager-link-not-in-progress": "खाता लिंक प्रगति में नहीं है या सत्र डेटा खो गया है। कृपया शुरुआत से फिर से शुरू करें",
        "authmanager-authplugin-setpass-failed-title": "पासवर्ड बदलाव विफल हुआ।",
+       "authmanager-authplugin-setpass-failed-message": "प्रमाणन प्लगइन ने पासवर्ड बदलाव से इनकार किया।",
+       "authmanager-authplugin-create-fail": "प्रमाणीकरण प्लग इन ने खाता निर्माण को अस्वीकार कर दिया।",
+       "authmanager-authplugin-setpass-denied": "प्रमाणन प्लगइन पासवर्ड बदलने की अनुमति नहीं देता है",
        "authmanager-authplugin-setpass-bad-domain": "अमान्य जालस्थल।",
        "authmanager-autocreate-noperm": "स्वचालित खाता निर्माण की अनुमति नहीं है।",
        "authmanager-autocreate-exception": "स्वचालित खाता निर्माण को पहले के कुछ त्रुटियों के कारण कुछ समय के लिए निष्क्रिय किया गया है।",
        "authmanager-userdoesnotexist": "सदस्य खाता \"$1\" पंजीकृत नहीं है।",
+       "authmanager-userlogin-remembermypassword-help": "क्या पासवर्ड को सत्र की लंबाई से अधिक समय तक याद रखना चाहिए।",
+       "authmanager-username-help": "प्रमाणीकरण के लिए सदस्य नाम",
+       "authmanager-password-help": "प्रमाणीकरण के लिए पासवर्ड",
+       "authmanager-domain-help": "बाह्य प्रमाणीकरण के लिए डोमेन",
+       "authmanager-retype-help": "फिर पासवर्ड डालें।",
        "authmanager-email-label": "ईमेल",
        "authmanager-email-help": "ईमेल पता",
        "authmanager-realname-label": "वास्तविक नाम",
        "authmanager-realname-help": "सदस्य का वास्तविक नाम",
+       "authmanager-provider-password": "पासवर्ड-आधारित प्रमाणीकरण",
+       "authmanager-provider-password-domain": "पासवर्ड- और डोमेन-आधारित प्रमाणीकरण",
        "authmanager-provider-temporarypassword": "अस्थाई पासवर्ड",
+       "authprovider-confirmlink-message": "आपके हाल के लॉगिन प्रयासों के आधार पर, निम्न खाते  आपके विकी खाते से जोड़ा जा सकता है। उन्हें जोड़ने से उन खातों के माध्यम से लॉगिंग सक्षम हो जाता है कृपया चुनें कि कौन सा लिंक होना चाहिए।",
        "authprovider-confirmlink-request-label": "खाते जो जोड़ने हैं।",
        "authprovider-confirmlink-success-line": "$1 : सफलतापूर्वक जुड़ा।",
        "authprovider-confirmlink-failed": "खाता जोड़ने का काम पूरी तरह से नहीं हो पाया : $1",
+       "authprovider-confirmlink-ok-help": "लिंकिंग विफलता संदेशों को प्रदर्शित करने के बाद जारी रखें।",
        "authprovider-resetpass-skip-label": "छोड़ें",
        "authprovider-resetpass-skip-help": "पासवर्ड को रीसेट करना छोड़ें।",
+       "authform-nosession-login": "प्रमाणीकरण सफल था, लेकिन आपका ब्राउज़र \"याद\" नहीं किया जा सकता है।\n\n$1",
+       "authform-nosession-signup": "खाता तो बन चुका है, लेकिन आपका ब्राउज़र \"याद\" नहीं रखा है कि आपने लॉगिन (प्रवेश) कर लिया है। \n\n$1",
        "authform-newtoken": "टोकन लापता है $1",
        "authform-notoken": "टोकन लापता है",
        "authform-wrongtoken": "गलत टोकन",
        "specialpage-securitylevel-not-allowed-title": "अनुमति नहीं है",
        "specialpage-securitylevel-not-allowed": "क्षमा करें, आप इस पृष्ठ का उपयोग नहीं कर सकते हैं, क्योंकि आपकी जानकारी सत्यापित नहीं है।",
-       "authpage-cannot-login": "पà¥\8dरवà¥\87श करने में अक्षम।",
-       "authpage-cannot-login-continue": "पà¥\8dरवà¥\87श à¤\95रनà¥\87 à¤®à¥\87à¤\82 à¤\85à¤\95à¥\8dषम। हो सकता है कि आपका सत्र समय समाप्त हो गया।",
+       "authpage-cannot-login": "लà¥\89à¤\97 à¤\87न करने में अक्षम।",
+       "authpage-cannot-login-continue": "लà¥\89à¤\97 à¤\87न à¤\95रनà¥\87 à¤®à¥\87à¤\82 à¤\85à¤\95à¥\8dषम, हो सकता है कि आपका सत्र समय समाप्त हो गया।",
        "authpage-cannot-create": "खाता निर्माण में अक्षम है।",
        "authpage-cannot-create-continue": "खाता निर्माण में अक्षम है। हो सकता है कि आपका सत्र समाप्त हो गया हो।",
        "authpage-cannot-link": "खाता जोड़ना शुरू नहीं कर सकते।",
        "linkaccounts-submit": "खाता जोड़ें",
        "unlinkaccounts": "खाता अलग करें",
        "unlinkaccounts-success": "खाता अलग हो गया।",
+       "authenticationdatachange-ignored": "प्रमाणीकरण डेटा परिवर्तन का संचालन नहीं किया गया था। शायद कोई प्रदाता कॉन्फ़िगर नहीं हुआ था?",
+       "userjsispublic": "ध्यान दें: जावास्क्रिप्ट के उपपृष्ठ में कोई भी निजी जानकारी नहीं होनी चाहिए, क्योंकि इसे कोई भी देख सकता है।",
+       "usercssispublic": "ध्यान दें: सीसीएस के उपपृष्ठ में कोई भी निजी जानकारी नहीं होनी चाहिए, क्योंकि इसे कोई भी देख सकता है।",
        "restrictionsfield-badip": "अमान्य आईपी पते या सीमा: $1",
        "restrictionsfield-label": "अनुमत आईपी सीमा:",
+       "restrictionsfield-help": "एक आईपी पता या सीडीआरएल सीमा प्रति पंक्ति में लिखें। सभी को सक्रिय करने के लिए <pre>0.0.0.0/0::/0</pre> का उपयोग करें।",
        "revid": "अवतरण $1",
-       "pageid": "पेज आईडी $1"
+       "pageid": "पेज आईडी $1",
+       "rawhtml-notallowed": "&lt;html&gt; टैग का उपयोग सामान्य पन्नों के बाहर नहीं किया जा सकता है।",
+       "gotointerwiki": "आप {{SITENAME}} से बाहर जा रहे हैं।",
+       "gotointerwiki-invalid": "दिया गया शीर्षक अमान्य है।",
+       "gotointerwiki-external": "[[$2]] एक बाहरी वेबसाइट है, जिसमें जाने के लिए आप {{SITENAME}} को छोड़ रहे हैं।\n\n[$1 $1 पर जाने के लिए इस पर क्लिक करें]।",
+       "undelete-cantedit": "आप इस पन्ने को वापस नहीं ला सकते, क्योंकि आपको इस पन्ने पर सम्पादन की अनुमति नहीं है।",
+       "undelete-cantcreate": "आप इस पन्ने को वापस नहीं ला सकते, क्योंकि यह पन्ना इस नाम से है ही नहीं और आपको इस पन्ने के निर्माण की अनुमति भी नहीं है।",
+       "pagedata-title": "पृष्ठ आँकड़े",
+       "pagedata-not-acceptable": "कोई अनुकूल प्रारूप नहीं मिला। सुमेलित ऍमआइऍमई प्रकार: $1",
+       "pagedata-bad-title": "अमान्य शीर्षक: $1"
 }
index 12ea679..0466d5f 100644 (file)
@@ -17,7 +17,8 @@
                        "Matma Rex",
                        "V6rg",
                        "C.R.",
-                       "Smcnarayan"
+                       "Smcnarayan",
+                       "Vito Genovese"
                ]
        },
        "tog-underline": "Jorr ke niche line khicho:",
        "login": "Log in karo",
        "login-security": "Aapan account ke verify karo",
        "nav-login-createaccount": "Log in karo/ nawaa account banao",
-       "userlogin": "Log in karo/ nawaa account banao",
-       "userloginnocreate": "Log in karo",
        "logout": "Log out",
        "userlogout": "Sadasya logout",
        "notloggedin": "Aap logged in nai hai",
        "userlogin-noaccount": "Aap ke lage account hae?",
        "userlogin-joinproject": "{{SITENAME}} ke join karo",
-       "nologin": "Account nai hai? '''$1'''.",
-       "nologinlink": "Nawaa account banao",
        "createaccount": "Nawaa account banao",
-       "gotaccount": "Aap ke pas pahile se account hai ki nai? '''$1'''.",
-       "gotaccountlink": "Log in",
-       "userlogin-resetlink": "Ka aap aapan login kare waala jaankari ke bhulae gaya hae?",
        "userlogin-resetpassword-link": "Aapan password ke bhool gayaa?",
        "userlogin-helplink2": "Log in kare ke khatir madat.",
        "userlogin-loggedin": "Aap {{GENDER:$1|$1}} ke naam ke niche login bhayaa hae.\nNiche ke form ke kaam me laae ke duusra naam ke niche login ho.",
        "createaccountmail": "Ek temporary password ke kaam me laao aur iske batawa gais Email pe bhej do",
        "createaccountmail-help": "Binaa password ke jaane iske duusra jan ke khaatir account banae me use karaa jaae sake hai.",
        "createacct-realname": "Aslii naam (jaruri nai hae)",
-       "createaccountreason": "Kaaran:",
        "createacct-reason": "Kaaran",
        "createacct-reason-ph": "Aap ke ii account ke banae ke kaaran",
        "createacct-reason-help": "Ii sandes ke account creation log me dekhaawa jaae hai",
        "preview": "Jhalak dekhao",
        "showpreview": "Preview dekhao",
        "showdiff": "Badlao dekhao",
-       "blankarticle": "<strong>Chetauni:</strong> Jon panna ke aap banata hae, me kuchh likha nai hae. \nAgar aap \"{{int:savearticle}}\" ke fir se click karaa, tab khaali panna ban jaai.",
+       "blankarticle": "<strong>Chetauni:</strong> Jon panna ke aap banata hae, me kuchh likha nai hae. \nAgar aap \"$1\" ke fir se click karaa, tab khaali panna ban jaai.",
        "anoneditwarning": "'''Sawadhaan:''' Aap login nai karaa hai\nAap ke IP address ke sab koi dekhe saki agar aap koi badlao karra. Agar aap <strong>>[$1 log in]</strong> or <strong>[$2 create an account]</strong>, tab aap ke badlao aap ke naam ke niche dekhai, aur duusra benefits ke saathe.",
        "anonpreviewwarning": "\"Aap log in nai bhaya hae. Ii panna ke bachae pe aap ke IP address ke panna ke badlao ke itihass me likha jaai.\"",
        "missingsummary": "'''Suchna:''' Aap badlao ke sanchhit me nai likha hai.\nAgar aap Save ke fir se click karaa tab, aap ke badlao bina summary ke save kar lewa jaai.",
-       "selfredirect": "<strong>Chetauni:</strong> Aap ii panna ke apne me redirect kartaa hae. \nAap saait wrong target ke specify karaa, nai to wrong panna ke badaltaa hae.\nAgar aap  \"{{int:savearticle}}\" ke fir se click karaa tab redirect ban jaai.",
+       "selfredirect": "<strong>Chetauni:</strong> Aap ii panna ke apne me redirect kartaa hae. \nAap saait wrong target ke specify karaa, nai to wrong panna ke badaltaa hae.\nAgar aap  \"$1\" ke fir se click karaa tab redirect ban jaai.",
        "missingcommenttext": "Meharbani kar ke niche aapan vichar deo.",
-       "missingcommentheader": "<strong>Yaad karawa jaae hae:</strong> Aap ii vichar ke vishay nai likha hai.\nAgar aap \"{{int:savearticle}}\"  pe click karaa tab bina vishay ke iske bachae dewa jaai.",
+       "missingcommentheader": "<strong>Yaad karawa jaae hae:</strong> Aap ii vichar ke vishay nai likha hai.\nAgar aap \"$1\"  pe click karaa tab bina vishay ke iske bachae dewa jaai.",
        "summary-preview": "Sanchhep jhalak:",
        "subject-preview": "Suchi ke jhalak:",
        "previewerrortext": "Aap ke badlao ke preview kare ke time kuchh garrbarro hae gais hai.",
        "editingsection": "Sampadan $1 (bhaag)",
        "editingcomment": "$1 ke badla jae hai (nawaa section)",
        "editconflict": "Badle me conflict: $1",
-       "explainconflict": "Aap ke ii panna ke badle ke suruu kare ke baad, aur koi ii panna ke badal diis hai.\nUppar ke text area panna ke text jaise abhi hai ke dekhawa jae hai.\nAap ke badlao ke lower text area me dekawa jae hai.\nAap ke aapan badlao ke existing text me merge kare ke parri.\n'''Khali''' text in the upper text area  ke save karaa jai jab aap \"{{int:savearticle}}\" ke press karega.",
+       "explainconflict": "Aap ke ii panna ke badle ke suruu kare ke baad, aur koi ii panna ke badal diis hai.\nUppar ke text area panna ke text jaise abhi hai ke dekhawa jae hai.\nAap ke badlao ke lower text area me dekawa jae hai.\nAap ke aapan badlao ke existing text me merge kare ke parri.\n'''Khali''' text in the upper text area  ke save karaa jai jab aap \"$1\" ke press karega.",
        "yourtext": "Aap ke text",
        "storedversion": "Bachawa gais version",
        "nonunicodebrowser": "'''CHETAUNI: Aap ke browser unicode ke nai maane hae.\nEk workaround uu jagah hae jahan pe aap thik se panna ke badle sakta hae: non-ASCII akchhar edit box me hexadecimal codes dekhai.'''",
        "right-editsemiprotected": "Badla gais panna ke \"{{int:protect-level-autoconfirmed}}\" ke rakam bachawa gais hae",
        "right-editcontentmodel": "Panna ke content model ke badlo",
        "right-editinterface": "User interface ke badlo",
-       "right-editusercssjs": "Duusra sadsya ke CSS aur JS files ke badlo",
        "right-editusercss": "Duusra sadsya ke CSS files ke badlo",
        "right-edituserjs": "Duusra sadsya ke JS files ke badlo",
        "right-editmyusercss": "Aapan CSS files ke badlo",
        "rcfilters-filter-editsbyother-label": "Duusra jan ke karaa gais badlao",
        "rcfilters-filter-editsbyother-description": "Badlao jiske duusraa jan karin hai (aap nai)",
        "rcfilters-filtergroup-userExpLevel": "User experience level (registered sadasya ke khaatir)",
-       "rcfilters-filter-userExpLevel-newcomer-label": "Newcomers",
-       "rcfilters-filter-userExpLevel-newcomer-description": "10 se kamtii badlao aur 4 din se kamtii activity.",
-       "rcfilters-filter-userExpLevel-learner-label": "Sikhe waala",
-       "rcfilters-filter-userExpLevel-learner-description": "More days of activity and edits than 'Newcomers' but fewer than 'Experienced users.'",
-       "rcfilters-filter-userExpLevel-experienced-label": "Experienced users",
-       "rcfilters-filter-userExpLevel-experienced-description": "30 din se jaada activity aur 500 se jaada badlao",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Newcomers",
+       "rcfilters-filter-user-experience-level-newcomer-description": "10 se kamtii badlao aur 4 din se kamtii activity.",
+       "rcfilters-filter-user-experience-level-learner-label": "Sikhe waala",
+       "rcfilters-filter-user-experience-level-learner-description": "More days of activity and edits than 'Newcomers' but fewer than 'Experienced users.'",
+       "rcfilters-filter-user-experience-level-experienced-label": "Experienced users",
+       "rcfilters-filter-user-experience-level-experienced-description": "30 din se jaada activity aur 500 se jaada badlao",
        "rcfilters-filtergroup-automated": "Automated contributions",
        "rcfilters-filter-bots-label": "Bot",
        "rcfilters-filter-bots-description": "Edits made by automated tools.",
        "rcshowhidecategorization": "$1 page categorization",
        "rcshowhidecategorization-show": "Dekhao",
        "rcshowhidecategorization-hide": "Lukao",
-       "rclinks": "Pichhla $1 badlao pichle $2 din me dekhao <br />$3",
+       "rclinks": "Pichhla $1 badlao pichle $2 din me dekhao",
        "diff": "farka",
        "hist": "itihaas",
        "hide": "Chhupao",
        "undeleteviewlink": "dekho",
        "undeleteinvert": "Selection ke ulta karo",
        "undeletecomment": "Kaaran::",
-       "undeletedrevisions": "{{PLURAL:$1|1 badlao|$1 badlao}} ke pahile jaise kar dewa gais hai",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 badlao|$1 badlao}} aur {{PLURAL:$2|1 file|$2 files}} ke pahile jaise kar dewa gais hai",
-       "undeletedfiles": "{{PLURAL:$1|1 file|$1 files}} ke pahile jaise kar dewa gais hai",
        "cannotundelete": "Kuchh, nai to sab undelete fail hoe gais hai:\n$1",
        "undeletedpage": "'''$1 ke pahile jaise kar dewa gais hai'''\n\nNawaa mitawa gais aur badlao ke ulta karaa gais panna ke dekhe ke khatir [[Special:Log/delete|deletion log]] ke dekho.",
        "undelete-header": "Nawaa mitawa gais panna ke dekhe ke khatir [[Special:Log/delete|the deletion log]] ke dekho.",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|updated}} tags on revision $4 of page $3 ({{PLURAL:$7|added}} $6; {{PLURAL:$9|removed}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|updated}} tags on log entry $5 of page $3 ({{PLURAL:$7|added}} $6; {{PLURAL:$9|removed}} $8)",
        "rightsnone": "(koi nai hai)",
-       "revdelete-summary": "summary ke badlo",
        "rightslogentry-temporary-group": "$1 (temporary, until $2)",
        "feedback-adding": "Panna me subject jorra jaawe hae...",
        "feedback-back": "Piichhe",
index 59ff3f2..8d1addf 100644 (file)
        "externaldberror": "Mahimo nga may ara sang sala sa pagpamatood sang database ukon wala ka sa lugar nga magbag-o sang imo pang-guha nga akawnt.",
        "login": "Mag sulod",
        "nav-login-createaccount": "Magsulod / maghimo account",
-       "userlogin": "Mag sulod / maghimo account",
-       "userloginnocreate": "Magsulod",
        "logout": "Mag guha",
        "userlogout": "Mag guha",
        "notloggedin": "Wala naka-sulod",
-       "nologin": "Wala ka sang imo akawnt? $1.",
-       "nologinlink": "Maghimo account",
        "createaccount": "Maghimo Account",
-       "gotaccount": "May yara ka na sang akawnt? $1.",
-       "gotaccountlink": "Mag sulod",
-       "userlogin-resetlink": "Nalipatan mo bala ang mga detalye sang imo pagsulod?",
        "userlogin-createanother": "Maghimo sing panibag-o nga account",
        "createaccountmail": "Paagi sa e-mail",
-       "createaccountreason": "Rason:",
        "createacct-submit": "Maghimo sing imo account",
        "createacct-another-submit": "Maghimo sing panibag-o nga account",
        "badretype": "Ang mga pasword nga imo gintum-ok wala naga-santo.",
        "passwordreset-disabled": "Ang mga pagliwat sang pasword gin-untat sa sini nga wiki.",
        "passwordreset-username": "Ngalan sang Manog-gamit\"",
        "passwordreset-domain": "Domeyn:",
-       "passwordreset-capture": "Lantawon ang nagresuta nga e-mail?",
-       "passwordreset-capture-help": "Kon butangan mo sang tsek ang ini nga kahon, ang e-mail (nga may temporaryo nga pasword) igapakita sa imo kag amo man ipadala sa manuggamit.",
        "passwordreset-email": "Adres sang e-mail:",
        "passwordreset-emailtitle": "Ang mga detalye sang akawnt sa {{SITENAME}}",
        "passwordreset-emailtext-ip": "May tawo nga (mahimo ikaw, halin sa IP adres nga $1) nagpangabay sang pahanumdom sang mga detalye\nsang imo akawnt para sa {{SITENAME}} ($4). Ang masunod nga {{PLURAL:$3|akawnt|mga akawnt}} sang manuggamit\nmay kabahin sa sini nga adres sang e-mail:\n\n$2\n\n{{PLURAL:$3|Ang ini nga temporaryo nga pasword|Ang mga ini nga temporaryo nga pasword}} indi na magamit sa {{PLURAL:$5|isa ka adlaw|$5 ka adlaw}}.\nKinahanglan mo nga magsulod kag magpili sang bag-o nga pasword subong. Kon lain nga tawo ang nagbuhat sini\nnga pagpangabay, ukon nadumduman mo na ang imo pasword, kag indi mo na kinahanglan nga ini\npaga-ilisan, mahimo mo nga pabay-an ang ini nga pahanumdom kag magpadayon sa paggamit sang imo daan nga pasword.",
        "preview": "Ipakita subong",
        "showpreview": "Ipakita nga daan",
        "showdiff": "Ipakita ang gin-ilisan",
-       "blankarticle": "<strong>Pahibalo:</strong> Ang panid nga imo ginahimo wala sing unod. Kon imo tum-ukon liwat ang \"{{int:savearticle}}\", ang panid pagahimuon nga wala sing unod.",
+       "blankarticle": "<strong>Pahibalo:</strong> Ang panid nga imo ginahimo wala sing unod. Kon imo tum-ukon liwat ang \"$1\", ang panid pagahimuon nga wala sing unod.",
        "anoneditwarning": "<strong>Pahibalo:</strong> Wala ka nakasulod. Kitaon sa publiko ang imo nga IP address kon ikaw maghimo sang pagbaylo. Kon ikaw <strong>[$ magsulod]</strong> ukon <strong>[$ maghimo sing account]</strong>, ang imo mga ginhimo nga pagbaylo ipahanungod sa imo nga username, kaupod sang iban pa nga kapuslanan.",
        "anonpreviewwarning": "''Wala ka pa nakasulod. Igasulat ang imo IP adres sa historya sini nga inislan na pahina.''",
-       "missingsummary": "'''Pahanumdom:''' Wala ka naghatag sang malip-ot nga pagsaysay sang imo gin-ilisan.\nKon tum-okon mo liwat ang \"{{int:savearticle}}\", ang imo gin-ilisan pagatiponon nga wala sini.",
+       "missingsummary": "'''Pahanumdom:''' Wala ka naghatag sang malip-ot nga pagsaysay sang imo gin-ilisan.\nKon tum-okon mo liwat ang \"$1\", ang imo gin-ilisan pagatiponon nga wala sini.",
        "missingcommenttext": "Palihog butangi sang komento sa idalom.",
-       "missingcommentheader": "'''Pahanumdom:''' Wala ka naghatag sang topiko/ulo sang topiko para sa sini nga komento.\nKon tum-okon mo liwat ang \"{{int:savearticle}}\", ang imo gin-ilisan pagatiponon nga wala sini.",
+       "missingcommentheader": "'''Pahanumdom:''' Wala ka naghatag sang topiko/ulo sang topiko para sa sini nga komento.\nKon tum-okon mo liwat ang \"$1\", ang imo gin-ilisan pagatiponon nga wala sini.",
        "summary-preview": "Kabilugan nga prebyu:",
        "subject-preview": "Prebyu sang topiko/ulo sang topiko:",
        "blockedtitle": "Ang manuggamit ginapunggan",
        "editingsection": "Ginaliwat ang $1 (bahin)",
        "editingcomment": "Gina-islan ang $1 (bag-o nga bahin)",
        "editconflict": "May pagpamatok sa pag-ilis: $1",
-       "explainconflict": "May yara sang iban nga nag-ilis sang sini nga panid umpisa nga imo ini gin-ilisan.\nAng lugar sang ibabaw nga teksto may yara sang teksto sang panid kon ano ini karon naga-eksister.\nAng imo mga pagbag-o ginapakita sa may lugar sang idalom nga teksto.\nMahimo nga kinahanglan mo pa nga tabidon ang imo mga pagbag-o sa mga naga-eksiter nga nga teksto.\nAng mga teksto '''lamang''' nga yara sa lugar sang ibabaw nga teksto ang matipon kon imo pagatum-ukon ang \"{{int:savearticle}}\".",
+       "explainconflict": "May yara sang iban nga nag-ilis sang sini nga panid umpisa nga imo ini gin-ilisan.\nAng lugar sang ibabaw nga teksto may yara sang teksto sang panid kon ano ini karon naga-eksister.\nAng imo mga pagbag-o ginapakita sa may lugar sang idalom nga teksto.\nMahimo nga kinahanglan mo pa nga tabidon ang imo mga pagbag-o sa mga naga-eksiter nga nga teksto.\nAng mga teksto '''lamang''' nga yara sa lugar sang ibabaw nga teksto ang matipon kon imo pagatum-ukon ang \"$1\".",
        "yourtext": "Imo teksto",
        "storedversion": "Gintago nga pagbag-o",
        "nonunicodebrowser": "'''Pahibalo: Ang imo brawser wala nagahando sa unicode.'''\nMay nagakatabo nga paghulag agod nga masugtan ka sang pa-ilis nga may paghalong: ang mga indi ASCII nga mga letra maga-paita sa kahon sang pag-ilis bilang kodigo nga heksadesimal.",
        "saveprefs": "Itipunon",
        "restoreprefs": "Ibalik ang tanan nga default settings",
        "prefs-editing": "Pag-ilis",
-       "rows": "Mga linya:",
-       "columns": "Mga kulumna:",
        "searchresultshead": "Pangita-a",
        "stub-threshold": "Suludlan sang <a href=\"#\" class=\"stub\">stub sang link</a> nga pagkay-o (bytes):",
        "stub-threshold-disabled": "Gin-untat",
        "userrights-reason": "Rason:",
        "userrights-no-interwiki": "Wala ka permiso nga lainon ang layi sang tiggamit sa iban nga mga wiki.",
        "userrights-nodatabase": "Wala nagagwa ang datos $1 ukon indi ini lokal.",
-       "userrights-nologin": "Kinahanglang [[Special:UserLogin|log in]] pinaagi sa isa account nga tagdumala para matagaan sang derecho sang tiggamit.",
-       "userrights-notallowed": "Ang imo nga account waay sing permiso para magdugang ukon magpanas sang kinamatarong sang mga naga-usar.",
        "userrights-changeable-col": "Mga grupo nga pwede mong baguhon.",
        "userrights-unchangeable-col": "Mga grupo nga indi mo pwede baguhon.",
        "group": "Grupo:",
        "right-protect": "Islan ang grado sang proteksyon kag baguhon ang mga ginprotektar nga mga panid",
        "right-editprotected": "Baguhon ang mga panid nga ginprotekta (waay sing proteksyon nga de-grado)",
        "right-editinterface": "Baguhon ang user interface.",
-       "right-editusercssjs": "Baguhon ang mga CSS kag Javascript nga files sang iban nga naga-usar.",
        "right-editusercss": "Baguhon ang mga CSS files sang iban nga naga-usar.",
        "right-edituserjs": "Baguhon ang mga Javascript files sang iban nga mga naga-usar.",
        "right-rollback": "Dasigay nga ibalik sa nahauna nga estado ang mga pagbag-o sang ulihi nga naga-usar nga nabag-o sa isa ka partikular nga panid.",
        "right-siteadmin": "Isira kag abrihan ang bulutangan sang mga impormasyon",
        "right-override-export-depth": "Ipagwa ang mga panid kaupod ang mga sugpon nga mga panid tubtub isa idalum nga 5.",
        "right-sendemail": "Magpadala sang email sa iban nga naga-usar",
-       "right-passwordreset": "Tan-awa ang mga email sang password reset",
        "right-managechangetags": "Maghimo kag magdula sing [[Special:Tags|mga tag]] halin sa database.",
        "newuserlogpage": "Pagkitan sang paghimo sang taggamit",
        "newuserlogpagetext": "Ini ang isa ka log sang mga ginhimo sang naga-usar",
        "rcshowhidepatr": "$1 ginabantyan nga pagbag-o",
        "rcshowhidemine": "$1 ang akon mga pagliwat",
        "rcshowhidemine-hide": "Itaguon",
-       "rclinks": "Ipakita ang ulihi nga $1 ka mga gin-ilisan sa sulod sang $2 ka adlaw<br />$3",
+       "rclinks": "Ipakita ang ulihi nga $1 ka mga gin-ilisan sa sulod sang $2 ka adlaw",
        "diff": "knln",
        "hist": "ngkltb",
        "hide": "Tago",
        "revdelete-restricted": "ginapatuman nga pagbawal sa mga administrador",
        "revdelete-unrestricted": "ginkakas nga pagbawal sa mga administrador",
        "rightsnone": "(wala)",
-       "revdelete-summary": "liwaton ang kabilogan",
        "searchsuggest-search": "Pangitaa",
        "expand_templates_preview": "Ipakita subong"
 }
index 5bca07c..f2e311d 100644 (file)
@@ -71,7 +71,7 @@
        "tog-watchlisthidebots": "Sakrij uređivanja botova s popisa praćenja",
        "tog-watchlisthideminor": "Sakrij manje promjene s popisa praćenja",
        "tog-watchlisthideliu": "Sakrij uređivanja prijavljenih s popisa praćenja",
-       "tog-watchlistreloadautomatically": "Ponovno učitaj popis praćenja kad god dođe do promjene filtra (potreban JavaScript)",
+       "tog-watchlistreloadautomatically": "Ponovo učitaj popis praćenja kad god dođe do promjene filtra (potreban JavaScript)",
        "tog-watchlisthideanons": "Sakrij uređivanja neprijavljenih s popisa praćenja",
        "tog-watchlisthidepatrolled": "Sakrij pregledane izmjene u popisu praćenja",
        "tog-watchlisthidecategorization": "Sakrij kategorizaciju stranica",
        "anontalk": "Razgovor",
        "navigation": "Orijentacija",
        "and": "&#32;i",
-       "qbfind": "Nađi",
-       "qbbrowse": "Pregledaj",
-       "qbedit": "Uredi",
-       "qbpageoptions": "Postavke stranice",
-       "qbmyoptions": "Moje stranice",
        "faq": "Najčešća pitanja",
-       "faqpage": "Project:FAQ",
        "actions": "Radnje",
        "namespaces": "Imenski prostori",
        "variants": "Inačice",
        "edit-local": "Uredi lokalni opis",
        "create": "Započni",
        "create-local": "dodaj lokalni opis",
-       "editthispage": "Uredi ovu stranicu",
-       "create-this-page": "Započni ovu stranicu",
        "delete": "Izbriši",
-       "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}}",
        "protect": "Zaštiti",
        "protect_change": "promijeni",
-       "protectthispage": "Zaštiti ovu stranicu",
        "unprotect": "Promijeni zaštitu",
-       "unprotectthispage": "Promijeni zaštitu ove stranice",
        "newpage": "Nova stranica",
-       "talkpage": "Razgovor o ovoj stranici",
        "talkpagelinktext": "razgovor",
        "specialpage": "Posebna stranica",
        "personaltools": "Osobni alati",
-       "articlepage": "Vidi članak",
        "talk": "Razgovor",
        "views": "Pogledi",
        "toolbox": "Pomagala",
        "tool-link-userrights": "Promijeni {{GENDER:$1|suradnikovu|suradničinu}} pripadnost skupinama",
        "tool-link-userrights-readonly": "Vidi {{GENDER:$1|suradnikovu|suradničinu|suradničku}} pripadnost skupinama",
        "tool-link-emailuser": "Pošalji {{GENDER:$1|suradniku|suradnici}} e-poruku",
-       "userpage": "Vidi suradnikovu stranicu",
-       "projectpage": "Vidi stranicu o projektu",
        "imagepage": "Vidi stranicu datoteke",
        "mediawikipage": "Vidi stranicu za razgovor",
        "templatepage": "Vidi ovaj predložak",
        "redirectedfrom": "(Preusmjereno s $1)",
        "redirectpagesub": "Preusmjeravanje",
        "redirectto": "Preusmjerava na:",
-       "lastmodifiedat": "Ova stranica posljednji je put izmijenjena $1 u $2.",
+       "lastmodifiedat": "Ova je stranica posljednji put uređivana dana $1 u $2.",
        "viewcount": "Ova stranica je pogledana {{PLURAL:$1|$1 put|$1 puta}}.",
        "protectedpage": "Zaštićena stranica",
        "jumpto": "Skoči na:",
        "versionrequired": "Potrebna inačica $1 MediaWikija",
        "versionrequiredtext": "Za korištenje ove stranice potrebna je inačica $1 MediaWiki softvera. Pogledaj [[Special:Version|inačice]]",
        "ok": "U redu",
+       "pagetitle": "$1 – {{SITENAME}}",
        "retrievedfrom": "Dobavljeno iz \"$1\"",
        "youhavenewmessages": "Imate $1 ($2).",
        "youhavenewmessagesfromusers": "Imate $1 {{PLURAL:$3||od $3 suradnika|od $3 suradnika}} ($2).",
        "missingarticle-rev": "(izmjena#: $1)",
        "missingarticle-diff": "(razlika: $1, $2)",
        "readonly_lag": "Baza podataka je automatski zaključana dok se sekundarni bazni poslužitelji ne usklade s glavnim",
-       "internalerror": "Pogreška sustava",
+       "internalerror": "Pogrješka sustava",
        "internalerror_info": "Interna pogrješka: $1",
        "internalerror-fatal-exception": "Terminalna pogreška \"$1\"",
        "filecopyerror": "Ne mogu kopirati datoteku \"$1\" u \"$2\".",
        "resetpass-expired": "Istekla Vam je valjanost zaporke. Molimo Vas, potvrdite novu zaporku za prijavu.",
        "resetpass-expired-soft": "Istekla vam je valjanost zaporke i trebate ju promijeniti. Molimo odaberite novu zaporku ili pritisnite na \"{{int:authprovider-resetpass-skip-label}}\", za kasniju promjenu.",
        "resetpass-validity-soft": "Zaporka Vam ne vrijedi: $1\n\nMolimo odaberite novu zaporku ili pritisnite na \"{{int:authprovider-resetpass-skip-label}}\", za kasniju promjenu.",
-       "passwordreset": "Ponovno postavi zaporku",
+       "passwordreset": "Ponovo postavi zaporku",
        "passwordreset-text-one": "Ispunite ovaj obrazac ako želite ponovno postaviti Vašu zaporku.",
        "passwordreset-text-many": "{{PLURAL:$1|Ispunite jedno od polja da biste dobili privremenu zaporku e-poštom.}}",
        "passwordreset-disabled": "Poništavanje lozinke je onemogućeno na ovom wikiju.",
        "changeemail-submit": "Promijeni e-mail",
        "changeemail-throttled": "Nedavno ste se previše puta pokušali prijaviti.\nMolimo Vas pričekajte $1 prije nego što pokušate ponovno.",
        "changeemail-nochange": "Molimo vas, upišite neku novu adresu e-pošte.",
+       "resettokens": "Ponovo postavljanje tajnoga ključa",
+       "resettokens-text": "Možete ponovo postaviti tajni ključ koji Vam dopušta pristupanje određenim osobnim podatcima povezanim s Vašim ovdje navedenim suradničkim računom.\n\nTrebali bi to načiniti ukoliko ga kojim slučajem priopćite nekome ili ukoliko je Vaš suradnički račun ugrožen.",
+       "resettokens-tokens": "Tajni ključevi:",
+       "resettokens-token-label": "$1 (trenutačna postavka: $2)",
+       "resettokens-watchlist-token": "Tajni ključ za uvoženje u mrežno sjedište (Atom/RSS) [[Special:Watchlist|promjena na stranicama s Vašega popisa praćenih stranica]]",
+       "resettokens-resetbutton": "Ponovo postavi odabrane tajne ključeve",
        "bold_sample": "Podebljani tekst",
        "bold_tip": "Podebljani tekst",
        "italic_sample": "Kurzivni tekst",
        "preview": "Pregled kako će stranica izgledati",
        "showpreview": "Prikaži kako će izgledati",
        "showdiff": "Prikaži promjene",
-       "blankarticle": "<strong>Upozorenje:</strong> Stvorili ste stranicu koja je prazna.\nAko iznova pritisnete na \"{{int:savearticle}}\", stranica će biti stvorena bez ikakvog sadržaja.",
+       "blankarticle": "<strong>Upozorenje:</strong> Stvorili ste stranicu koja je prazna.\nAko iznova pritisnete na \"$1\", stranica će biti stvorena bez ikakvog sadržaja.",
        "anoneditwarning": "<strong>Upozorenje:</strong> niste prijavljeni. Ako napravite uređivanje, Vaša IP adresa će biti javno vidljiva. Ako se <strong>[$1 prijavite]</strong> ili <strong>[$2 stvorite račun]</strong>, Vaša uređivanja će biti pridružena suradničkom imenu, zajedno s ostalim pogodnostima.",
        "anonpreviewwarning": "<em>Niste prijavljeni. Spremanjem izmjena Vaša će IP adresa ostati zabilježena u povijesti uređivanja ove stranice.</em>",
        "missingsummary": "'''Podsjetnik:''' Niste unijeli sažetak promjena. Ako ponovno kliknete na \"Sačuvaj stranicu\", Vaše će promjene biti snimljene bez sažetka.",
-       "selfredirect": "<strong>Upozorenje:</strong> Stvarate preusmjeravanje na isti članak.\nMožda ste izabrali pogrješnu odredišnu stranicu za preusmjeravanje ili uređujete pogrješnu stranicu.\nAko pritisnete na \"{{int:savearticle}}\" još jednom, preusmjeravanje će svejedno biti stvoreno.",
+       "selfredirect": "<strong>Upozorenje:</strong> Stvarate preusmjeravanje na isti članak.\nMožda ste izabrali pogrješnu odredišnu stranicu za preusmjeravanje ili uređujete pogrješnu stranicu.\nAko pritisnete na \"$1\" još jednom, preusmjeravanje će svejedno biti stvoreno.",
        "missingcommenttext": "Molim unesite sažetak.",
-       "missingcommentheader": "<strong>Podsjetnik:</strong> Niste napisali sažetak ovoga komentara. Ukoliko ponovo kliknete \"{{int:savearticle}}\", Vaš će komentar biti snimljen bez sažetka.",
+       "missingcommentheader": "<strong>Podsjetnik:</strong> Niste napisali sažetak ovoga komentara. Ukoliko ponovo kliknete \"$1\", Vaš će komentar biti snimljen bez sažetka.",
        "summary-preview": "Pregled polja Sažetak:",
        "subject-preview": "Pregled teme:",
        "previewerrortext": "Pri pokušaju prikazivanja pretpregleda vaših promjena došlo je do pogrješke.",
        "editingsection": "Uređujete $1 (odlomak)",
        "editingcomment": "Uređujete $1 (novi odlomak)",
        "editconflict": "Istovremeno uređivanje: $1",
-       "explainconflict": "Netko je u međuvremenu promijenio stranicu.\nGornje polje sadrži sadašnji tekst stranice.\nU donjem polju prikazane su Vaše promjene.\nMorat ćete unijeti Vaše promjene u sadašnji tekst.\n'''Samo''' će tekst u gornjem polju biti sačuvan kad pritisnete \"{{int:savearticle}}\".",
+       "explainconflict": "Netko je u međuvremenu promijenio stranicu.\nGornje polje sadrži sadašnji tekst stranice.\nU donjem polju prikazane su Vaše promjene.\nMorat ćete unijeti Vaše promjene u sadašnji tekst.\n'''Samo''' će tekst u gornjem polju biti sačuvan kad pritisnete \"$1\".",
        "yourtext": "Vaš tekst",
        "storedversion": "Pohranjena inačica",
        "nonunicodebrowser": "'''UPOZORENJE: Vaš preglednik ne podržava Unicode zapis znakova, molimo promijenite ga prije sljedećeg uređivanja članaka.'''",
        "content-model-css": "CSS",
        "content-json-empty-object": "Prazan objekt",
        "content-json-empty-array": "Prazno polje",
+       "deprecated-self-close-category": "Stranice s krivo zatvorenim HTML oznakama‎",
        "duplicate-args-warning": "<strong>Upozorenje:</strong> [[:$1]] poziva na [[:$2]] s više od jedne vrijednosti za parametar \"$3\". Rabit će se samo posljednja navedena vrijednost.",
        "duplicate-args-category": "Stranice u kojima se ponavljaju argumenti u predlošcima",
        "expensive-parserfunction-warning": "Upozorenje: Ova stranica sadrži previše opterećujućih poziva parserskih funkcija\n\nTrebala bi imati manje od $2 {{PLURAL:$2|poziva|poziva}}, sada ima {{PLURAL:$1|$1 poziv|$1 poziva}}.",
        "post-expand-template-argument-warning": "Upozorenje: Ova stranica sadrži najmanje jedan argument predložaka koji ima preveliko proširenje. Ovi su argumenti izostavljeni.",
        "post-expand-template-argument-category": "Stranice koje sadrže izostavljene argumente za predloške",
        "parser-template-loop-warning": "Otkrivena petlja predloška: [[$1]]",
+       "template-loop-category": "Stranice s petljama u predlošcima",
        "parser-template-recursion-depth-warning": "Dubina rekurzije predloška je izvan granice ($1)",
        "language-converter-depth-warning": "Prekoračena granica dubine jezičnog pretvarača ($1)",
        "node-count-exceeded-category": "Stranice s previše čvorova",
        "parser-unstrip-loop-warning": "Nedopuštena petlja",
        "parser-unstrip-recursion-limit": "Dosegnuto je ograničenje rekurzije ($1)",
        "converter-manual-rule-error": "Pronađena je pogrješka u pravilu ručnog prijevoda",
-       "undo-success": "Izmjena je uklonjena (tekst u okviru ispod ne sadrži posljednju izmjenu). Molim sačuvajte stranicu (provjerite sažetak).",
+       "undo-success": "Izmjenu je moguće ukloniti.\nMolimo Vas, usporedite niže navedene razlike u inačicama kako biste bili sigurni da ovo zaista želite učiniti, te sačuvajte stranicu i izmjene će biti uklonjene.",
        "undo-failure": "Ova izmjena ne može biti uklonjena zbog postojanja međuinačica.",
        "undo-norev": "Izmjena nije mogla biti uklonjena jer ne postoji ili je obrisana.",
        "undo-nochange": "Čini se da je uređivanje već otkazano.",
        "undo-summary": "uklanjanje izmjene $1 {{GENDER:$2|suradnika|suradnice}} [[Posebno:Doprinosi/$2|$2]] ([[Razgovor sa suradnikom:$2|razgovor]])",
+       "undo-summary-username-hidden": "Uklanjanje izmjene $1 suradnika skrivenoga suradničkoga imena",
        "cantcreateaccount-text": "Otvaranje suradničkog računa ove IP adrese ('''$1''') blokirao/la je [[User:$3|$3]].\n\nRazlog koji je dao/la $3 je ''$2''",
        "viewpagelogs": "Vidi evidencije za ovu stranicu",
        "nohistory": "Ova stranica nema starijih izmjena.",
        "page_first": "prva",
        "page_last": "zadnja",
        "histlegend": "Izbor za usporedbu: označi kružiće pokraj dvije inačice koje želiš usporediti i pritisni \"Enter\" ili tipku na dnu.<br />\nUputa: <strong>({{int:cur}})</strong> = razlika od trenutačne inačice, <strong>({{int:last}})</strong> = razlika od prethodne inačice, <strong>{{int:minoreditletter}}</strong> = manja promjena.",
-       "history-fieldset-title": "Pretraži povijest",
-       "history-show-deleted": "Samo izbrisane",
+       "history-fieldset-title": "Pretraži izmjene",
+       "history-show-deleted": "Samo izbrisane izmjene",
        "histfirst": "najstarije",
        "histlast": "najnovije",
        "historysize": "({{PLURAL:$1|$1 bajt|$1 bajta|$1 bajtova}})",
        "revdelete-legend": "Postavi ograničenja na izmjenu:",
        "revdelete-hide-text": "Sakrij tekst izmjene",
        "revdelete-hide-image": "Sakrij sadržaj datoteke (sakrij sliku)",
-       "revdelete-hide-name": "Sakrij uređivanje i njegov predmet",
+       "revdelete-hide-name": "Sakrij uređivanje i njegove parametre",
        "revdelete-hide-comment": "Sakrij komentar (sažetak)",
        "revdelete-hide-user": "Sakrij suradnikovo ime/IP adresu",
        "revdelete-hide-restricted": "Postavi ograničenja i za administratore kao i za ostale suradnike",
        "search-category": "(kategorija $1)",
        "search-suggest": "Mislili ste: $1",
        "search-rewritten": "Prikazuju se rezultati za $1. Umjesto toga pretraži $2.",
-       "search-interwiki-caption": "Sestrinski projekti",
+       "search-interwiki-caption": "Rezultati sa sestrinskih projekata",
        "search-interwiki-default": "Rezultati s projekta $1:",
        "search-interwiki-more": "(više)",
        "search-relatedarticle": "Povezano",
        "prefs-common-css-js": "Dijeljeni CSS/JS za sve izglede:",
        "prefs-reset-intro": "Možete koristiti ovu stranicu za povrat Vaših postavki na prvotne postavke. Ovo se ne može poništiti.",
        "prefs-emailconfirm-label": "Potvrda e-mail adrese:",
-       "youremail": "Vaša elektronska pošta *",
+       "youremail": "Vaša adresa e-pošte:",
        "username": "Ime {{GENDER:$1|suradnika|suradnice}}:",
        "prefs-memberingroups": "{{GENDER:$2|Suradnik je član|Suradnica je članica}} {{PLURAL:$1|sljedeće skupine|sljedećih skupina}}:",
        "group-membership-link-with-expiry": "$1 (do $2)",
        "prefs-help-email": "E-mail adresa nije obvezna, ali je potrebna za obnovu lozinke u slučaju da ju zaboravite.",
        "prefs-help-email-others": "Također možete odabrati da vas ostali kontaktiraju preko vaše suradničke ili stranice za razgovor bez javnog otkrivanja vašeg identiteta.",
        "prefs-help-email-required": "Potrebno je navesti adresu e-pošte (e-mail).",
-       "prefs-info": "Osnovni podaci",
+       "prefs-info": "Osnovni podatci",
        "prefs-i18n": "Internacionalizacija",
        "prefs-signature": "Potpis",
        "prefs-dateformat": "Format datuma",
        "prefswarning-warning": "Napravili ste promjene u Vašim postavkama koje još nisu snimljene.\nAko napustite ovu stranicu bez pritiska na \"$1\", postavke neće biti ažurirane.",
        "prefs-tabs-navigation-hint": "Savjet: možete rabiti tipke sa strjelicama lijevo i desno za prebacivanje između kartica na popisu kartica.",
        "userrights": "Upravljanje pravima",
-       "userrights-lookup-user": "Izaberi suradnika",
+       "userrights-lookup-user": "Izaberi suradnika ili suradnicu",
        "userrights-user-editname": "Unesite suradničko ime:",
        "editusergroup": "Učitaj suradničke skupine",
        "editinguser": "Promjena suradničkih prava {{GENDER:$1|suradnika|suradnice}} <strong>[[User:$1|$1]]</strong> $2",
        "viewinguserrights": "Pregled suradničkih prava {{GENDER:$1|suradnika|suradnice}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Uređivanje {{GENDER:$1|suradnikove|suradničine}} pripadnosti skupinama",
-       "userrights-viewusergroup": "Vidi {{GENDER:$1|suradničke}} skupine",
-       "saveusergroups": "Spremi {{GENDER:$1|suradničke}} grupe",
+       "userrights-viewusergroup": "Vidi {{GENDER:$1|suradnikove|suradničine|suradničke}} skupine",
+       "saveusergroups": "Spremi {{GENDER:$1|suradnikove|suradničine|suradničke}} skupine",
        "userrights-groupsmember": "{{GENDER:$2|Pripadnik|Pripadnica}} {{PLURAL:$1|skupine|skupinama|skupina}}:",
        "userrights-groupsmember-auto": "{{GENDER:$2|Pripadnik|Pripadnica}} {{PLURAL:$1|obuhvaćene skupine|obuhvaćenih skupina}}:",
        "userrights-groups-help": "Možete promijeniti skupine za {{GENDER:$1|ovoga suradnika|ovu suradnicu}}:\n* označena kućica pokazuje skupinu kojoj {{GENDER:$1|suradnik|suradnica}} pripada;\n* neoznačena kućica pokazuje skupinu kojoj {{GENDER:$1|suradnik|suradnica}} ne pripada;\n* zvjezdica (*) označava skupinu koju ne možete ukloniti kad ju jednom dodate, ili obratno.\n* povisilica (#) označava da rok valjanosti pripadanja skupini možete samo skratiti, a ne i produljiti",
        "userrights-unchangeable-col": "Skupine koje ne možete promijeniti",
        "userrights-expiry-current": "Ističe $1",
        "userrights-expiry-none": "Neograničeno trajanje statusa",
+       "userrights-expiry": "Istječe:",
+       "userrights-expiry-existing": "Postojeće vrijeme isteka: $3, $2",
+       "userrights-expiry-othertime": "Drugo vrijeme:",
+       "userrights-expiry-options": "1 dan:1 day,1 tjedan:1 week,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godina:1 year",
        "userrights-conflict": "Sukob promjene suradničkih prava! Molimo provjerite i potvrdite svoje promjene.",
        "group": "Skupina:",
        "group-user": "Suradnici",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "Prikaži",
        "rcfilters-activefilters": "Aktivni filtri",
+       "rcfilters-quickfilters": "Postavke spremljenih filtera",
+       "rcfilters-quickfilters-placeholder-title": "Još nema spremljenih poveznica",
+       "rcfilters-quickfilters-placeholder-description": "Da biste spremili postavke filtera i rabili ih kasnije, kliknite ispod na oznaku favorita u polju aktivnih filtera.",
+       "rcfilters-savedqueries-defaultlabel": "Spremljeni filteri",
+       "rcfilters-savedqueries-rename": "Preimenuj",
+       "rcfilters-savedqueries-setdefault": "Postavi kao zadano",
+       "rcfilters-savedqueries-unsetdefault": "Ukloni kao zadano",
+       "rcfilters-savedqueries-remove": "Ukloni",
+       "rcfilters-savedqueries-new-name-label": "Ime",
+       "rcfilters-savedqueries-apply-label": "Spremi postavke",
+       "rcfilters-savedqueries-cancel-label": "Odustani",
+       "rcfilters-savedqueries-add-new-title": "Spremi trenutačne postavke filtera",
        "rcfilters-restore-default-filters": "Vrati zadane filtre",
        "rcfilters-clear-all-filters": "Očisti sve filtre",
        "rcfilters-search-placeholder": "Posljednje izmjene filtera (pogledajte ili počnite unositi)",
        "rcfilters-invalid-filter": "Filter nije valjan",
+       "rcfilters-empty-filter": "Nema aktivnih filtera. Prikazani su svi doprinosi.",
+       "rcfilters-filterlist-title": "Filtri",
+       "rcfilters-filterlist-whatsthis": "Što je ovo?",
+       "rcfilters-filterlist-feedbacklink": "Napišite povratne informacije vezane za nove (beta) filtere",
+       "rcfilters-highlightbutton-title": "Označi rezultate",
+       "rcfilters-highlightmenu-title": "Odaberite boju",
+       "rcfilters-highlightmenu-help": "Odaberite boju za označavanje ovog svojstva",
+       "rcfilters-filterlist-noresults": "Nema filtera",
+       "rcfilters-noresults-conflict": "Rezultati pretrage nisu pronađeni zbog sukoba kriterija pretrage",
+       "rcfilters-state-message-fullcoverage": "Označavanje svih filtera u grupi je isto kao da nije označen niti jedan, tako da filter nema učinka. Grupa uključuje: $1",
+       "rcfilters-filtergroup-registration": "Registracija suradnika",
+       "rcfilters-filter-registered-label": "Prijavljeni",
+       "rcfilters-filter-registered-description": "Prijavljeni suradnici.",
+       "rcfilters-filter-unregistered-label": "Neprijavljeni",
+       "rcfilters-filter-unregistered-description": "Suradnici koji nisu prijavljeni.",
+       "rcfilters-filtergroup-authorship": "Doprinosi prema autorima",
+       "rcfilters-filter-editsbyself-label": "Uređivanja koja ste Vi napravili",
+       "rcfilters-filter-editsbyself-description": "Vaša uređivanja.",
+       "rcfilters-filter-editsbyother-label": "Promjene drugih suradnika",
+       "rcfilters-filter-editsbyother-description": "Sve promjene osim Vaših.",
+       "rcfilters-filtergroup-userExpLevel": "Napredna razina (samo za registrirane suradnike)",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Novopridošli",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Manje od 10 uređivanja i 4 dana aktivnosti.",
+       "rcfilters-filter-user-experience-level-learner-label": "Početnici",
+       "rcfilters-filter-user-experience-level-learner-description": "Više iskustva od novih ali manje od iskusnih suradnika.",
+       "rcfilters-filter-user-experience-level-experienced-label": "Iskusni suradnici",
+       "rcfilters-filter-user-experience-level-experienced-description": "Aktivnost više od 30 dana i 500 uređivanja.",
+       "rcfilters-filtergroup-automated": "Automatizirani doprinosi",
+       "rcfilters-filter-bots-description": "Uređivanja učinjena automatiziranim alatima.",
+       "rcfilters-filter-humans-label": "Osoba (ne bot)",
+       "rcfilters-filter-humans-description": "Uređivanja koja su napravili suradnici.",
+       "rcfilters-filtergroup-reviewstatus": "Stanje pregledanja",
+       "rcfilters-filter-patrolled-label": "Ophođeno",
+       "rcfilters-filter-patrolled-description": "Uređivanja označena ophođenima.",
+       "rcfilters-filter-unpatrolled-label": "Neophođeno",
+       "rcfilters-filter-unpatrolled-description": "Uređivanja koja nisu označena ophođenima.",
+       "rcfilters-filtergroup-significance": "Važnost",
+       "rcfilters-filter-minor-label": "Manja uređivanja",
+       "rcfilters-filter-minor-description": "Uređivanja koja je suradnik označio manjim.",
+       "rcfilters-filter-major-label": "Obična uređivanja",
+       "rcfilters-filter-major-description": "Uređivanja koja nisu označena manjim.",
+       "rcfilters-filtergroup-watchlist": "Praćene stranice",
+       "rcfilters-filter-watchlist-watched-label": "Na popisu praćenja",
+       "rcfilters-filter-watchlist-watched-description": "Izmjene stranica na Vašem popisu praćenja.",
+       "rcfilters-filter-watchlist-watchednew-label": "Nove izmjene na popisu praćenja",
+       "rcfilters-filter-watchlist-watchednew-description": "Izmjene stranica na popisu praćenja koje niste posjetili od vremena učinjenih izmjena.",
+       "rcfilters-filter-watchlist-notwatched-label": "Van popisa praćenja",
+       "rcfilters-filter-watchlist-notwatched-description": "Sve izmjene na stranicama osim onih na popisu praćenja.",
+       "rcfilters-filtergroup-changetype": "Vrste promjena",
+       "rcfilters-filter-pageedits-label": "Uređivanja stranice",
+       "rcfilters-filter-pageedits-description": "Uređivanja wikisadržaja, rasprave, opisi kategorija...",
+       "rcfilters-filter-newpages-label": "Stvaranje stranica",
+       "rcfilters-filter-newpages-description": "Uređivanja kojima su stvorene nove stranice.",
+       "rcfilters-filter-categorization-label": "Promjene kategorija",
+       "rcfilters-filter-categorization-description": "Uređivanja kojima se dodaju ili uklanjanju stranice iz kategorija.",
+       "rcfilters-filter-logactions-label": "Radnje zabilježene u evidencijama",
+       "rcfilters-filter-logactions-description": "Administrativne radnje, stvaranja računa, brisanje stranica, postavljanja datoteka...",
+       "rcfilters-filter-lastrevision-label": "Posljednja izmjena",
+       "rcfilters-filter-lastrevision-description": "Najnovija izmjena na stranici.",
+       "rcfilters-filter-previousrevision-label": "Starije izmjene",
+       "rcfilters-filter-previousrevision-description": "Sve izmjene na stranici koje nisu najnovije.",
        "rcnotefrom": "Slijede promjene od <b>$2</b> (prikazano ih je do <b>$1</b>).",
        "rclistfrom": "Prikaži nove promjene počevši od $3 $2",
        "rcshowhideminor": "$1 manje promjene",
        "rcshowhidecategorization": "$1 kategorizaciju stranica",
        "rcshowhidecategorization-show": "prikaži",
        "rcshowhidecategorization-hide": "Sakrij",
-       "rclinks": "Prikaži posljednjih $1 promjena {{PLURAL:$2|prethodni dan|u posljednja $2 dana|u posljednjih $2 dana}}<br />$3",
+       "rclinks": "Prikaži posljednjih $1 promjena u zadnjih $2 dana",
        "diff": "razl",
        "hist": "pov",
        "hide": "sakrij",
        "upload-permitted": "Dopušteni {{PLURAL:$2|tip|tipovi}} datoteka: $1.",
        "upload-preferred": "Poželjni {{PLURAL:$2|tip|tipovi}} datoteka: $1.",
        "upload-prohibited": "Zabranjeni {{PLURAL:$2|tip|tipovi}} datoteka: $1.",
-       "uploadlogpage": "Evidencija postavljanja",
+       "uploadlogpage": "Evidencija postavljanja datoteka",
        "uploadlogpagetext": "Dolje je popis nedavno postavljenih slika.",
        "filename": "Ime datoteke",
        "filedesc": "Sažetak",
        "brokenredirectstext": "Sljedeća preusmjeravanja povezuju na nepostojeće stranice:",
        "brokenredirects-edit": "uredi",
        "brokenredirects-delete": "izbriši",
-       "withoutinterwiki": "Stranice bez međuwiki poveznica",
+       "withoutinterwiki": "Stranice bez međuwikipoveznica",
        "withoutinterwiki-summary": "Sljedeće stranice nemaju poveznice na projekte na drugim jezicima:",
        "withoutinterwiki-legend": "Prefiks",
        "withoutinterwiki-submit": "Prikaži",
        "wantedpages-badtitle": "Nevaljani naslov kao rezultat: $1",
        "wantedfiles": "Tražene datoteke",
        "wantedfiletext-cat": "Sljedeće datoteke se rabe ali ne postoje. Datoteke iz drugih izvora mogu biti navedene iako ne postoje. Takve datoteke će biti <del>izbrisane</del> s popisa. Osim toga, stranice koje sadrže nepostojeće datoteke popisane su [[:$1|ovdje]].",
+       "wantedfiletext-cat-noforeign": "Sljedeće datoteke se rabe ali ne postoje. Osim toga, na popisu su prikazane stranice s umetnutnim datotekama koje ne postoje: [[:$1]].",
        "wantedfiletext-nocat": "Sljedeće datoteke se rabe ali ne postoje. Datoteke iz drugih izvora mogu biti navedene iako ne postoje. Takve datoteke će biti <del>izbrisane</del> s popisa.",
+       "wantedfiletext-nocat-noforeign": "Sljedeće datoteke se rabe ali ne postoje.",
        "wantedtemplates": "Traženi predlošci",
        "mostlinked": "Stranice na koje vodi najviše poveznica",
        "mostlinkedcategories": "Kategorije na koje vodi najviše poveznica",
        "prefixindex-strip": "Ne prikazuj predmetak u popisu",
        "shortpages": "Kratke stranice",
        "longpages": "Duge stranice",
-       "deadendpages": "Slijepe ulice",
+       "deadendpages": "Stranice na koje ne vodi ijedna druga stranica",
        "deadendpagestext": "Sljedeće stranice nemaju poveznice na druge stranice na ovom wikiju ({{SITENAME}}).",
        "protectedpages": "Zaštićene stranice",
        "protectedpages-indef": "Samo neograničene zaštite",
        "suppress": "Nadzor",
        "querypage-disabled": "Ova posebna stranica onemogućena je jer bi usporila funkcioniranje projekta.",
        "apihelp": "Pomoć za API",
+       "apisandbox": "Stranica za vježbanje API-ja",
        "apisandbox-submit": "Napraviti zahtjev",
        "apisandbox-reset": "Očisti",
-       "apisandbox-examples": "Primjer",
-       "apisandbox-results": "Rezultat",
+       "apisandbox-examples": "Primjeri",
+       "apisandbox-results": "Rezultati",
        "booksources": "Pretraživanje po ISBN-u",
        "booksources-search-legend": "Traženje izvora za knjigu",
        "booksources-search": "Traži",
        "log": "Evidencije",
        "logeventslist-submit": "Prikaži",
        "all-logs-page": "Sve javne evidencije",
-       "alllogstext": "Skupni prikaz svih dostupnih evidencija za {{SITENAME}}.\nMožete suziti prikaz odabirući tip evidencije, suradničko ime ili stranicu u upitu.",
-       "logempty": "Nema pronađenih stavki.",
+       "alllogstext": "Skupni prikaz svih dostupnih evidencija projekta {{SITENAME}}.\nMožete suziti prikaz odabirući tip evidencije, suradničko ime ili stranicu u upitu.",
+       "logempty": "Nema pronađenih stavki u evidenciji.",
        "log-title-wildcard": "Traži stranice koje počinju s navedenim izrazom",
        "showhideselectedlogentries": "Otkrij/sakrij odabrane evidencije",
        "checkbox-select": "Odaberite: $1",
        "listgrouprights-removegroup-self": "Ukloni {{PLURAL:$2|skupinu|skupine}} iz vlastitog računa: $1",
        "listgrouprights-addgroup-self-all": "Dodaj sve skupine vlastitom računu",
        "listgrouprights-removegroup-self-all": "Uklonite sve skupine iz vlastitog računa",
-       "listgrouprights-namespaceprotection-header": "Ograničenja prostora imena",
+       "listgrouprights-namespaceprotection-header": "Ograničenja imenskoga prostora",
        "listgrouprights-namespaceprotection-namespace": "Imenski prostor",
        "listgrants": "Dozvole",
        "listgrants-summary": "Slijedi popis dozvola s pridruženim pristupom suradničkim pravima. Suradnici mogu omogućiti aplikacijama uporabu svojih računa, ali s ograničenim ovlastima na temelju dozvola koje je suradnik dodijelio aplikaciji. Aplikacija koja djeluje u ime suradnika međutim ne može rabiti prava koje suradnik nema.\nMoguće su [[{{MediaWiki:Listgrouprights-helppage}}|dodatne informacije]] o pojedinim pravima.",
        "listgrants-grant": "Dozvola",
        "listgrants-rights": "Prava",
        "trackingcategories": "Kategorije za praćenje",
+       "trackingcategories-summary": "Ova je posebna stranica koja prikazuje prateće kategorije koje programska podrška MediaWiki automatski popunjava. Njihovi se nazivi mogu promijeniti izmjenom odgovarajućih sustavskih poruka u imenskom prostoru {{ns:8}}.",
        "trackingcategories-msg": "Praćene kategorije",
        "trackingcategories-name": "Naziv poruke",
        "trackingcategories-desc": "Kriteriji za uključenje u kategoriju",
        "sp-contributions-uploads": "postavljene datoteke",
        "sp-contributions-logs": "evidencije",
        "sp-contributions-talk": "razgovor",
-       "sp-contributions-userrights": "upravljanje suradničkim pravima",
+       "sp-contributions-userrights": "upravljanje {{GENDER:$1|suradnikovim|suradničinim|suradničkim}} pravima",
        "sp-contributions-blocked-notice": "Ovaj suradnik je trenutačno blokiran. Posljednja stavka evidencije blokiranja navedena je niže kao napomena:",
        "sp-contributions-blocked-notice-anon": "Ova IP adresa je trenutačno blokirana.\nPosljednja stavka evidencije blokiranja navedena je niže kao napomena:",
        "sp-contributions-search": "Pretraži doprinose",
        "unblocked-range": "$1 je deblokiran",
        "unblocked-id": "Blok $1 je uklonjen",
        "blocklist": "Blokirani suradnici",
+       "autoblocklist": "Automatska blokiranja",
        "ipblocklist": "Blokirani suradnici",
        "ipblocklist-legend": "Pronađi blokiranog suradnika",
        "blocklist-userblocks": "Sakrij blokiranja računa",
        "change-blocklink": "promijeni blokiranje",
        "contribslink": "doprinosi",
        "emaillink": "pošalji e-poruku",
-       "autoblocker": "Automatski ste blokirani jer je Vašu IP adresu nedavno koristio \"[[User:$1|$1]]\" koji je blokiran zbog: \"$2\".",
+       "autoblocker": "Automatski ste blokirani jer je Vašu IP adresu nedavno koristio \"[[User:$1|$1]]\".\nRazlog koji je dan za blokiranje $1 bio je \"$2\".",
        "blocklogpage": "Evidencija blokiranja",
        "blocklog-showlog": "Ovaj suradnik je ranije blokiran.\nEvidencija blokiranja je prikazan ispod kao napomena:",
        "blocklog-showsuppresslog": "Ovaj suradnik je ranije blokiran i skriven.\nEvidencija skrivanja je prikazana ispod kao napomena:",
        "thumbnail_gd-library": "Nepotpune konfiguracija GD knjižnice: nedostaje funkcija $1",
        "thumbnail_image-missing": "Čini se da datoteka nedostaje: $1",
        "import": "Uvezi stranice",
-       "importinterwiki": "Transwiki uvoz",
+       "importinterwiki": "Uvoz s drugog wikija",
        "import-interwiki-text": "Izaberite wiki i ime stranice za uvoz.\nPovijest stranice i imena suradnika će biti sačuvani.\nTranswiki uvoz stranica je zabilježen u [[Special:Log/import|evidenciji uvoza stranica]].",
        "import-interwiki-history": "Prenesi sve inačice ove stranice",
        "import-interwiki-templates": "Uključi sve predloške",
        "tooltip-ca-nstab-category": "Pogledaj stranicu kategorije",
        "tooltip-minoredit": "Označi kao manju promjenu",
        "tooltip-save": "Sačuvaj promjene",
+       "tooltip-publish": "Sačuvaj svoje uređivanje",
        "tooltip-preview": "Prikaži kako će izgledati, molimo koristite prije snimanja!",
        "tooltip-diff": "Prikaži promjene učinjene u tekstu.",
        "tooltip-compareselectedversions": "Prikaži usporedbu izabranih inačica ove stranice.",
        "spam_blanking": "Sve inačice koje sadržavaju poveznice na $1, brišem cjelokupni sadržaj",
        "spam_deleting": "Sve inačice sadržale su poveznice na $1, brišem cjelokupni sadržaj",
        "simpleantispam-label": "Anti-spam provjera.\n<strong>NE</strong> ispunjavajte ovo!",
-       "pageinfo-title": "Podatci o stranici \"$1\"",
+       "pageinfo-title": "Podatci o stranici »$1«",
        "pageinfo-not-current": "Nema podataka o uređivanju za najstarija uređivanja stranice.",
        "pageinfo-header-basic": "Osnovni podatci",
        "pageinfo-header-edits": "Uređivanja",
        "pageinfo-article-id": "ID stranice",
        "pageinfo-language": "Jezik stranice",
        "pageinfo-content-model": "Tip podataka na stranici",
+       "pageinfo-content-model-change": "promijeni",
        "pageinfo-robot-policy": "Status tražilice",
        "pageinfo-robot-index": "Stranicu je moguće indeksirati",
        "pageinfo-robot-noindex": "Indeksiranje stranice onemogućeno",
        "pageinfo-category-subcats": "Broj podkategorija",
        "pageinfo-category-files": "Broj datoteka",
        "markaspatrolleddiff": "Označi pregledanim",
-       "markaspatrolledtext": "Označi ovaj članak pregledanim",
+       "markaspatrolledtext": "Označi ovu stranicu ophođenom",
        "markaspatrolledtext-file": "Označi ovu inačicu datoteke kao pregledanu",
        "markedaspatrolled": "Pregledano",
        "markedaspatrolledtext": "Odabrana promjena [[:$1]] označena je pregledanom.",
        "newimages-summary": "Ova posebna stranica pokazuje posljednje nedavno postavljene datoteke.",
        "newimages-legend": "Filtar",
        "newimages-label": "Naziv datoteke (ili njen dio):",
+       "newimages-user": "IP adresa ili suradničko ime",
        "newimages-showbots": "Prikaži datoteke koje su postavili botovi",
        "newimages-hidepatrolled": "Sakrij pregledana postavljanja",
        "noimages": "Nema slika.",
        "version-libraries": "Instalirane biblioteke",
        "version-libraries-library": "Knjižnica",
        "version-libraries-version": "Inačica",
+       "redirect": "Preusmjerenje prema datoteci, odnosno ID-u suradnika, stranice, izmjene ili ID-u u evidenciji",
        "redirect-submit": "Idi",
        "redirect-value": "Vrijednost:",
        "redirect-user": "ID suradnika",
        "specialpages": "Posebne stranice",
        "specialpages-note-top": "Legenda",
        "specialpages-note": "* Normalne posebne stranice\n* <span class=\"mw-specialpagerestricted\">Posebne stranice s ograničenim pristupom.</span>",
-       "specialpages-group-maintenance": "Izvještaji za održavanje",
+       "specialpages-group-maintenance": "Izvješća održavanja",
        "specialpages-group-other": "Ostale posebne stranice",
        "specialpages-group-login": "Prijava/otvaranje računa",
        "specialpages-group-changes": "Nedavne promjene i evidencije",
-       "specialpages-group-media": "Izvještaji i postavljanje datoteka",
+       "specialpages-group-media": "Izvješća o višemedijskome sadržaju i postavljanju datoteka",
        "specialpages-group-users": "Suradnici i suradnička prava",
        "specialpages-group-highuse": "Najčešće korištene stranice",
        "specialpages-group-pages": "Popisi stranica",
        "specialpages-group-pagetools": "Alati za stranice",
-       "specialpages-group-wiki": "Wiki podaci i alati",
+       "specialpages-group-wiki": "Podatci i oruđe",
        "specialpages-group-redirects": "Preusmjeravajuće posebne stranice",
        "specialpages-group-spam": "Spam alati",
        "specialpages-group-developer": "Alati za razvijatelje",
        "revdelete-uname-unhid": "suradničko ime je otkriveno",
        "revdelete-restricted": "primijenjeno ograničenje za administratore",
        "revdelete-unrestricted": "uklonjeno ograničenje za administratore",
+       "logentry-block-block": "$1 {{GENDER:$2|blokirao|blokirala}} je {{GENDER:$4|$3}} na rok od $5 $6",
        "logentry-merge-merge": "$1 je {{GENDER:$2|spojio|spojila}} $3 s $4 (izmjene do $5)",
        "logentry-move-move": "$1 je {{GENDER:$2|premjestio|premjestila}} stranicu $3 na $4",
        "logentry-move-move-noredirect": "$1 je {{GENDER:$2|premjestio|premjestila}} stranicu $3 na $4 bez preusmjeravanja",
        "logentry-move-move_redir": "$1 je {{GENDER:$2|premjestio|premjestila}} stranicu $3 na $4 preko preusmjeravanja",
        "logentry-move-move_redir-noredirect": "$1 je {{GENDER:$2|premjestio|premjestila}} stranicu $3 na $4 preko preusmjeravanja bez ostavljanja preusmjeravanja",
        "logentry-patrol-patrol": "$1 {{GENDER:$2|označio|označila}} je uređivanje $4 stranice $3 ophođenim",
-       "logentry-patrol-patrol-auto": "$1 je automatski {{GENDER:$2|označio|označila}} uređivanje $4 stranice $3 pregledanim",
+       "logentry-patrol-patrol-auto": "$1 automatski je {{GENDER:$2|označio|označila}} uređivanje $4 stranice $3 ophođenim",
        "logentry-newusers-newusers": "$1 je {{GENDER:$2|otvorio|otvorila}} suradnički račun",
        "logentry-newusers-create": "$1 je {{GENDER:$2|stvorio|stvorila}} suradnički račun.",
        "logentry-newusers-create2": "$1 je {{GENDER:$2|otvorio|otvorila}} suradnički račun $3",
        "logentry-newusers-byemail": "$1 je {{GENDER:$2|otvorio|otvorila}} suradnički račun $3 i zaporka je poslana e-porukom.",
-       "logentry-newusers-autocreate": "Suradnički je račun $1 automatski {{GENDER:$2|stvoren|stvorila}}.",
+       "logentry-newusers-autocreate": "Suradnički je račun automatski {{GENDER:$2|stvorio suradnik|stvorila suradnica}} $1.",
        "logentry-protect-move_prot": "$1 je {{GENDER:$2|premjestio|premjestila}} postavke zaštićivanja s $4 na $3",
        "logentry-protect-unprotect": "$1 je {{GENDER:$2|uklonio|uklonila}} zaštitu stranice $3",
        "logentry-protect-protect": "$1 je {{GENDER:$2|zaštitio|zaštitila}} $3 $4",
        "logentry-protect-protect-cascade": "$1 je {{GENDER:$2|zaštitio|zaštitila}} $3 $4 [prenosiva zaštita]",
        "logentry-protect-modify": "$1 je {{GENDER:$2|promijenio|promijenila}} stupanj zaštićivanja za $3 $4",
        "logentry-protect-modify-cascade": "$1 je {{GENDER:$2|promijenio|promijenila}} stupanj zaštite za $3 $4 [prenosiva zaštita]",
-       "logentry-rights-rights": "$1 {{GENDER:$2|je promijenio|je promijenila}} suradnička prava računa $3 iz $4 u $5",
+       "logentry-rights-rights": "$1 {{GENDER:$2|promijenio|promijenila}} je pripadnost skupinama {{GENDER:$6|suradnika|suradnice}} $3 iz $4 u $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|je promijenio|je promijenila}} članstvo skupine suradničkog računa $3",
-       "logentry-rights-autopromote": "Suradničkom računu $1 {{GENDER:$1| automatski je promijenjeno članstvo|automatski su promijenjena članstva}} iz $4 u $5",
+       "logentry-rights-autopromote": "Suradničkom računu $1 {{GENDER:$2|automatski je promijenjeno članstvo|automatski su promijenjena članstva}} iz $4 u $5",
        "logentry-upload-upload": "$1 је {{GENDER:$2|postavio|postavila}} $3",
        "logentry-upload-overwrite": "$1 је {{GENDER:$2|postavio|postavila}} novu inačicu $3",
        "logentry-upload-revert": "$1 је {{GENDER:$2|postavio|postavila}} $3",
        "log-name-managetags": "Evidencija upravljanja oznakama",
        "log-name-tag": "Evidencija oznaka",
-       "rightsnone": "(suradnik)",
+       "rightsnone": "(osnovno)",
+       "rightslogentry-temporary-group": "$1 (vremenito, do $2)",
        "feedback-adding": "Dodajem povratne informacije na stranicu...",
        "feedback-back": "Natrag",
        "feedback-bugcheck": "Izvrsno! Molimo provjerite da se ne radi o nekom [$1 poznatom \"bugu\"].",
        "pagelang-select-lang": "Odaberi jezik",
        "pagelang-submit": "Pošalji",
        "right-pagelang": "Promijeni jezik stranice",
+       "log-name-pagelang": "Evidencija mijenjanja jezika",
        "mediastatistics": "Statistika datoteka",
        "mediastatistics-summary": "Slijede statistike postavljenih datoteka koje pokazuju zadnju inačicu datoteke. Starije ili izbrisane inačice nisu prikazane.",
        "mediastatistics-bytespertype": "Ukupna veličina datoteka za ovaj odlomak: {{PLURAL:$1|$1 bajt|$1 bajta|$1 bajtova}} ($2; $3%).",
        "special-characters-group-thai": "tajlandski (tajski)",
        "special-characters-group-lao": "laoski",
        "special-characters-group-khmer": "kmerski",
+       "mw-widgets-dateinput-no-date": "Nadnevak nije naznačen",
        "mw-widgets-dateinput-placeholder-day": "GGGG-MM-DD",
        "mw-widgets-dateinput-placeholder-month": "GGGG-MM",
        "mw-widgets-titleinput-description-new-page": "stranica još ne postoji",
        "mw-widgets-titleinput-description-redirect": "preusmjeravanje na $1",
+       "date-range-from": "Od nadnevka:",
+       "date-range-to": "Do nadnevka:",
        "randomrootpage": "Slučajna korijenska stranica",
        "log-action-filter-block": "Vrsta blokiranja:",
        "log-action-filter-delete": "Vrsta brisanja:",
index 85192b1..fd14654 100644 (file)
        "externaldberror": "Entweder es lieht en Fehler bei der externe Authentifizierung voar orrer du därrefst dein externes Benutzerkonto net aktualisiere.",
        "login": "Oonmelde",
        "nav-login-createaccount": "Oonmelde / Benutzerkonto erstelle",
-       "userlogin": "Oonmelde / Benutzerkonto erstelle",
-       "userloginnocreate": "Oonmelde",
        "logout": "Abmelde",
        "userlogout": "Abmelde",
        "notloggedin": "Nicht oongemeldt",
        "userlogin-noaccount": "Du host noch ken Benutzerkonto?",
        "userlogin-joinproject": "{{SITENAME}} beitrete",
-       "nologin": "Du host ken Benutzerkonto? '''$1'''.",
-       "nologinlink": "En neie Benutzerkonto erstelle",
        "createaccount": "Benutzerkonto erstelle",
-       "gotaccount": "Du host schon en Benutzerkonto? '''$1'''.",
-       "gotaccountlink": "Oonmelde",
-       "userlogin-resetlink": "Die Oonmelddate vergess?",
        "userlogin-resetpassword-link": "Passwort vergesse?",
        "userlogin-helplink2": "Hellef bei der Oonmeldung",
        "userlogin-loggedin": "Du bist schon als {{GENDER:$1|$1}} oongemeldt.\nBenutz das unne stehnd Formular, um dich unner enem annren Benutzername oonzumelde.",
        "createacct-another-email-ph": "E-Mail-Adress",
        "createaccountmail": "En temporäres Zufallspasswort verwenne und an die oongebne E-Mail-Adress verschicke",
        "createacct-realname": "Registrierte Noome (optional)",
-       "createaccountreason": "Grund:",
        "createacct-reason": "Begründung",
        "createacct-reason-ph": "Waroom erstellst du en annres Benutzerkonto?",
        "createacct-submit": "Dein Benutzerkonto erstelle",
        "showdiff": "Ändrunge zeiche",
        "anoneditwarning": "Du beoorbeitest die Seit unoongemeldet. Wenn du sie abspeichre tust, weard dein aktuelle Komputador IP-Adress in der Versionsgeschicht uffgezeichnet und ist domit unwiderruflich und kann '''öffentlich''' gesiehn sind.",
        "anonpreviewwarning": "''Du bist net oongemeldet. Beim Speichre weard dein IP-Adress in der Versionsgeschicht uffgezeichnet.''",
-       "missingsummary": "'''Hinweis:''' Du host ken Zusammerfassung oongeb. Wenn du erneit uff \"{{int:savearticle}}\" klicke tust, weard dein Ännrung ohne Zusammerfassung üwernomm.",
+       "missingsummary": "'''Hinweis:''' Du host ken Zusammerfassung oongeb. Wenn du erneit uff \"$1\" klicke tust, weard dein Ännrung ohne Zusammerfassung üwernomm.",
        "missingcommenttext": "Dein Abschnitt enthält ken Text.",
-       "missingcommentheader": "'''Achtung:''' Du host ken Betreff/Üwerschrift ingeb. Wenn du erneit uff \"{{int:savearticle}}\" klicke tust, weard dein Beoorbeitung ohne Üwerschrift gespeichert.",
+       "missingcommentheader": "'''Achtung:''' Du host ken Betreff/Üwerschrift ingeb. Wenn du erneit uff \"$1\" klicke tust, weard dein Beoorbeitung ohne Üwerschrift gespeichert.",
        "summary-preview": "Voarschau von der Zusammerfassungszeil:",
        "subject-preview": "Voarschau von der Zusammerfassungszeil:",
        "blockedtitle": "Benutzer ist gesperrt",
        "editingsection": "Beoorbeite von „$1“ (Abschnitt)",
        "editingcomment": "Beoorbeite von \"$1\" (Abschnitt)",
        "editconflict": "Beoorbeitungskonflikt: $1",
-       "explainconflict": "Jemand anners hot die Seit geännert, nohdem du oongefäng host, sie zu beoorbeite.\nDas Textfeld do uwe enthält den aktuell Beoorbeitungsstand von der Seit.\nDas unnre Textfeld enthält dein Ändrunge.\nBittschön füch dein Ändrungen in das Textfeld do uwe ren.\n'''Nuar''' der Inhalt von dem Textfeld do uwe weard gespeichert, wenn du uff „{{int:savearticle}}“ klicke tust.",
+       "explainconflict": "Jemand anners hot die Seit geännert, nohdem du oongefäng host, sie zu beoorbeite.\nDas Textfeld do uwe enthält den aktuell Beoorbeitungsstand von der Seit.\nDas unnre Textfeld enthält dein Ändrunge.\nBittschön füch dein Ändrungen in das Textfeld do uwe ren.\n'''Nuar''' der Inhalt von dem Textfeld do uwe weard gespeichert, wenn du uff „$1“ klicke tust.",
        "yourtext": "Dein Text",
        "storedversion": "Gespeicherte Version",
        "nonunicodebrowser": "'''Achtung: Dein Browser kann Unicode-Zeiche net richtich veroorbeite.''' Es weard en Hellefsroutin rengesetzt, um dich zu erlaube, Seite sicher zu beoorbeite: Nicht-ASCII-Zeiche werre dabei im Beoorbeitungsfenster als hexadezimale Codes oongezeicht.",
        "right-editprotected": "Seite bearbeite, wo als \"{{int:protect-level-sysop}}\" geschützt sind",
        "right-editsemiprotected": "Seite beoorbeite, wo als \"{{int:protect-level-autoconfirmed}}\" geschützt sind",
        "right-editinterface": "Benutzeroberfläche beoorbeite",
-       "right-editusercssjs": "Fremde CSS- und JavaScript-Dateie beoorbeite",
        "right-editusercss": "Fremde CSS-Dateie bearbeite",
        "right-edituserjs": "Fremde JavaScript-Dateie boobeite",
        "right-editmyusercss": "Eichne Benutzer-CSS-Dateie beoorbeite",
        "rcshowhidemine": "Eichne Beiträche $1",
        "rcshowhidemine-show": "Zeich",
        "rcshowhidemine-hide": "Versteck",
-       "rclinks": "Zeich die letzte $1 Ännrunge von der letzte $2 Tooche.<br />$3",
+       "rclinks": "Zeich die letzte $1 Ännrunge von der letzte $2 Tooche.",
        "diff": "Unnerschied",
        "hist": "Versione",
        "hide": "Versteck",
        "undeleteviewlink": "oongucke",
        "undeleteinvert": "Auswahl umkehre",
        "undeletecomment": "Grund:",
-       "undeletedrevisions": "{{PLURAL:$1|1 Version woard|$1 Versione woorre}} wiederheargestellt",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 Version|$1 Versione}} und {{PLURAL:$2|1 Datei|$2 Dateie}} woorre wiederheargestellt",
-       "undeletedfiles": "{{PLURAL:$1|1 Datei woard|$1 Dateie worre}} wiederhergestellt",
        "cannotundelete": "Die Wiederhearstellung ist fehlgeschlooht:\n$1",
        "undeletedpage": "'''\"$1\"''' woorre wiederhergestellt.\n\nIm [[Special:Log/delete|Abwischung-Logbuch]] finnst du en Üwersicht von der gelöschte und wiederheargestellte Seite.",
        "undelete-header": "Sieh das [[Special:Log/delete|Abwischung-Logbuch]] für keerzlich abgewischte Seite.",
index 9012602..2ae1aa3 100644 (file)
@@ -21,6 +21,7 @@
        "tog-hideminor": "Snadne změny w aktualnych změnach schować",
        "tog-hidepatrolled": "Dohladawane změny w aktualnych změnach schować",
        "tog-newpageshidepatrolled": "Dohladowane strony z lisćiny nowych stronow schować",
+       "tog-hidecategorization": "Kategorizaciju stronow schować",
        "tog-extendwatchlist": "Lisćinu wobkedźbowankow wočinić, zo by wšě změny widźał, nic jenož najnowše",
        "tog-usenewrc": "Změny po stronje w aktualnych změnach a wobkedźbowankach zeskupjeć",
        "tog-numberheadings": "Nadpisma awtomatisce čisłować",
@@ -40,7 +41,7 @@
        "tog-enotifminoredits": "Tež za snadne změny stronow a datajow e-mejl pósłać",
        "tog-enotifrevealaddr": "Moju e-mejlowu adresu w e-mejlowych zdźělenkach wotkryć",
        "tog-shownumberswatching": "Ličbu wobkedźbowacych wužiwarjow pokazać",
-       "tog-oldsig": "Eksistowaca signatura:",
+       "tog-oldsig": "Twoja eksistowaca signatura:",
        "tog-fancysig": "Ze signaturu kaž z wikitekstom wobchadźeć  (bjez awtomatiskeho wotkaza)",
        "tog-uselivepreview": "Live-přehlad wužiwać",
        "tog-forceeditsummary": "Mje skedźbnić, jeli zabudu zjeće",
        "october-date": "$1. oktobra",
        "november-date": "$1. nowembra",
        "december-date": "$1. decembra",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Kategorija|Kategoriji|Kategorije|Kategorije}}",
        "category_header": "Nastawki w kategoriji „$1”",
        "subcategories": "Podkategorije",
        "newwindow": "(wočinja so w nowym woknje)",
        "cancel": "Přetorhnyć",
        "moredotdotdot": "Wjace…",
-       "morenotlisted": "Tuta lisćina dospołna njeje.",
+       "morenotlisted": "Tuta lisćina snadź dospołna njeje.",
        "mypage": "Strona",
        "mytalk": "Diskusija",
        "anontalk": "Diskusija",
        "searcharticle": "Pytać",
        "history": "Wersije strony",
        "history_short": "wersije",
+       "history_small": "starše wersije",
        "updatedmarker": "Změny z mojeho poslednjeho wopyta",
        "printableversion": "Ćišćomna wersija",
        "permalink": "Trajny wotkaz",
        "talk": "diskusija",
        "views": "Zwobraznjenja",
        "toolbox": "Nastroje",
+       "tool-link-emailuser": "{{GENDER:$1|Tutomu wužiwarjej|Tutej wužiwarce}} mejlku pósłać",
        "userpage": "Wužiwarsku stronu pokazać",
        "projectpage": "Projektowu stronu pokazać",
        "imagepage": "Datajowu stronu sej wobhladać",
        "createacct-yourpasswordagain-ph": "Zapodaj hesło hišće raz",
        "userlogin-remembermypassword": "Přizjewjeny wostać",
        "userlogin-signwithsecure": "Wěsty zwisk wužiwać",
+       "cannotlogin-title": "Přizjewjenje njeje móžne.",
+       "cannotlogin-text": "Přizjewjenje njeje móžne.",
+       "cannotloginnow-title": "Přizjewjenje njebě wuspěšne.",
+       "cannotcreateaccount-title": "Wužiwarske konto njeda so załožić.",
+       "cannotcreateaccount-text": "Bjezposrědnje załoženje wužiwarskich kontow w tutym wikiju móžne njeje.",
        "yourdomainname": "Twoja domejna:",
        "password-change-forbidden": "Njemóžeš hesła na tutym wikiju změnić.",
        "externaldberror": "Běše pak eksterny zmylk awtentifikacije datoweje banki, pak njesměš swoje eksterne konto aktualizować.",
        "login": "Přizjewić",
+       "login-security": "Wobkruć swoju identitu",
        "nav-login-createaccount": "Konto wutworić abo so přizjewić",
-       "userlogin": "Załožće konto abo přizjewće so",
-       "userloginnocreate": "Přizjewić",
        "logout": "wotzjewić",
        "userlogout": "wotzjewić",
        "notloggedin": "Njepřizjewjeny",
        "userlogin-noaccount": "Nimaš žane konto?",
        "userlogin-joinproject": "Konto za {{GRAMMAR:akuzatiw|{{SITENAME}}}} załožić",
-       "nologin": "Nimaš žane konto? $1.",
-       "nologinlink": "Konto załožić",
        "createaccount": "Konto załožić",
-       "gotaccount": "Maš hižo wužiwarske konto? $1.",
-       "gotaccountlink": "Přizjewić",
-       "userlogin-resetlink": "Přizjewjenske daty zabył?",
        "userlogin-resetpassword-link": "Sy swoje hesło zabył?",
        "userlogin-helplink2": "Pomoc při přizjewjenju",
        "userlogin-loggedin": "Sy hižo jako {{GENDER:$1|$1 přizjewjeny|$1 přizjewjena}}. Wužij slědowacy formular, zo by so jako druhi wužiwar přizjewił.",
+       "userlogin-reauth": "Dyrbiš so znowa přizjewić, zo by {{GENDER:$1|wobkrućił|wobkrućiła}} zo sy {{GENDER:$1|$1}}.",
        "userlogin-createanother": "Dalše konto załožić",
        "createacct-emailrequired": "E-mejlowa adresa",
        "createacct-emailoptional": "E-mejlowa adresa (opcionalny)",
        "createacct-another-email-ph": "E-mejlowu adresu zapodać",
        "createaccountmail": "Nachwilne připadne hesło wužiwać a jo na slědowacu e-mejlowu adresu pósłać",
        "createacct-realname": "Woprawdźite mjeno (opcionalny)",
-       "createaccountreason": "Přičina:",
        "createacct-reason": "Přičina",
        "createacct-reason-ph": "Čehodla załožuješ druhe konto?",
        "createacct-submit": "Twoje konto załožić",
        "resetpass_submit": "Hesło posrědkować a so přizjewić",
        "changepassword-success": "Twoje hesło je so změniło!",
        "changepassword-throttled": "Sy přehusto spytał so přizjewić. Počakaj prošu $1, prjedy hač hišće raz spytaš.",
+       "botpasswords-label-create": "Wutworić",
+       "botpasswords-label-update": "Aktualizować",
+       "botpasswords-label-cancel": "Přetorhnyć",
+       "botpasswords-label-delete": "Wušmórnyć",
+       "botpasswords-label-resetpassword": "Hesło wróćo stajić",
+       "botpasswords-label-grants-column": "Dowolene",
        "resetpass_forbidden": "Hesła njedadźa so změnić.",
        "resetpass-no-info": "Dyrbiš so přizjewić, zo by direktny přistup na tutu stronu měł.",
        "resetpass-submit-loggedin": "Hesło změnić",
        "passwordreset-emailtext-user": "Wužiwar $1 na {{GRAMMAR:lokatiw|{{SITENAME}}}} je anulowanje twojeho hesła za {{GRAMMAR:akuzatiw|{{SITENAME}}}} požadał ($4).  {{PLURAL:$3|Slědowace wužiwarske konto je|Slědowacej wužiwarskej konće stej|Slědowace wužiwarske konta su}} z tutej e-mejlowej adresu {{PLURAL:$3|zwjazane|zwjazanej|zwjazane}}:\n\n$2\n\n{{PLURAL:$3|Tute nachwilne hesło spadnje|Tutej nachwilnej hesle spadnjetej|Tute nachwilne hesła spadnu}} za {{PLURAL:$5|jedyn dźeń|$5 dnjej|$5 dny|$5 dnjow}}.\nTy měł so nětko přizjewić a nowe hesło wubrać. Jeli něchtó druhi je tute naprašowanje pósłał, abo jeli sy so zaso na prěnjotne hesło dopomnił a wjace nochceš jo změnić, móžeš tutu zdźělenku ignorować a swoje stare hesło dale wužiwać.",
        "passwordreset-emailelement": "Wužiwarske mjeno: \n$1\n\nNachwilne hesło: \n$2",
        "passwordreset-emailsentemail": "Jeli tuta e-mejlowa adresa je z wašim kontom zwjazana, so mejlka za wróćostajenje hesła pósćele.",
+       "passwordreset-invalidemail": "Njepłaćiwa mejlkowa adresa",
+       "passwordreset-nodata": "Ani wužiwarske mjeno ani mejlkowa adresa stej so zapodałoj",
        "changeemail": "E-mejlowu adresu změnić abo wotstronić",
        "changeemail-header": "Wupjelń tutón formular, zo by swoju e-mejlowu adresu změnił. Jeli chceš zwisk e-mejloweje adresy ze swijim kontom wotstronić,  wostaj polo e-mejloweje adresy prózdne, hdyž formular preč sćeleš.",
        "changeemail-no-info": "Dyrbiš so přizjewić, zo by direktny přistup na tutu stronu měł.",
        "minoredit": "Snadna změna",
        "watchthis": "Stronu wobkedźbować",
        "savearticle": "Stronu składować",
+       "savechanges": "Změny składować",
        "publishpage": "Stronu wozjewić",
        "publishchanges": "Změny wozjewić",
        "preview": "Přehlad",
        "showpreview": "Přehlad pokazać",
        "showdiff": "Změny pokazać",
-       "blankarticle": "<strong>Warnowanje:</strong> Strona, kotruž wutworješ, je prózdna.\nJeli hišće raz na \"{{int:savearticle}}\" kliknješ, budźe so strona bjez wobsaha wutworić.",
+       "blankarticle": "<strong>Warnowanje:</strong> Strona, kotruž wutworješ, je prózdna.\nJeli hišće raz na \"$1\" kliknješ, budźe so strona bjez wobsaha wutworić.",
        "anoneditwarning": "<strong>Warnowanje:</strong> Njejsy přizjewjeny. Twoja IP-adresa budźe zjawnje widźomna, hdyž něšto změniš. Jeli <strong>[$1 so přizjewiš]</strong> abo <strong>[$2 konto załožiš]</strong>, so twoje změny twojemu wužiwarskemu mjenu připokazaja, nimo druhich lěpšinow.",
        "anonpreviewwarning": "''Njejsy přizjewjeny. Składowanje přenošuje twoju IP-adresu do wobdźěłowanskeje historije tuteje strony.''",
-       "missingsummary": "'''Kedźbu:''' Njejsy žane zjeće zapodał. Jeli hišće raz na \"{{int:savearticle}}\" kliknješ, budźe so twoja změna bjez njeho składować.",
+       "missingsummary": "'''Kedźbu:''' Njejsy žane zjeće zapodał. Jeli hišće raz na \"$1\" kliknješ, budźe so twoja změna bjez njeho składować.",
        "missingcommenttext": "Prošu zapodaj komentar.",
-       "missingcommentheader": "<strong>Kedźbu:</strong> Njejsy temu za tutón komentar podał. Jeli na „{{int:savearticle}}” kliknješ, składuje so twoja změna bjez temy.",
+       "missingcommentheader": "<strong>Kedźbu:</strong> Njejsy temu za tutón komentar podał. Jeli na „$1” kliknješ, składuje so twoja změna bjez temy.",
        "summary-preview": "Přehlad zjeća:",
        "subject-preview": "Přehlad temy:",
        "blockedtitle": "Wužiwar je zablokowany",
        "editingsection": "Wobdźěłanje strony $1 (wotrězk)",
        "editingcomment": "$1 so wobdźěłuje (nowy wotrězk)",
        "editconflict": "Wobdźěłowanski konflikt: $1",
-       "explainconflict": "Něchtó druhi je stronu změnił, po tym zo sy započał, ju wobdźěłować.\nHornje tekstowe polo wobsahuje tekst strony kaž tuchwilu eksistuje.\nTwoje změny so w delnim tekstowym polu pokazuja.\nDyrbiš swoje změny do eksistowaceho teksta zadźěłać.\n'''Jenož''' tekst w hornim tekstowym polu so składuje, hdyž znowa na „{{int:savearticle}}” kliknješ.",
+       "explainconflict": "Něchtó druhi je stronu změnił, po tym zo sy započał, ju wobdźěłować.\nHornje tekstowe polo wobsahuje tekst strony kaž tuchwilu eksistuje.\nTwoje změny so w delnim tekstowym polu pokazuja.\nDyrbiš swoje změny do eksistowaceho teksta zadźěłać.\n'''Jenož''' tekst w hornim tekstowym polu so składuje, hdyž znowa na „$1” kliknješ.",
        "yourtext": "Twój tekst",
        "storedversion": "Składowana wersija",
        "nonunicodebrowser": "'''KEDŹBU: Twój wobhladowak z Unikodom kompatibelny njeje.'''\nProwizoriske rozrisanje steji k dispoziciji, zo by ći zmóžnił, strony wěsće wobdźěłał: Nic-ASCII-znamješka budu so we wobdźěłowanskim polu jako heksadecimalne kody jewić.",
        "search-interwiki-caption": "Sotrowske projekty",
        "search-interwiki-default": "Wuslědki z $1:",
        "search-interwiki-more": "(dalše)",
+       "search-interwiki-more-results": "Dalše wuslědki",
        "search-relatedarticle": "Přiwuzne",
        "searchrelated": "přiwuzny",
        "searchall": "wšě",
        "showingresultsinrange": "Deleka so do {{PLURAL:$1|<strong>1</strong> wuslědka|<strong>$1</strong> wuslědkow}} we wobłuku <strong>$2</strong> hač do <strong>$3</strong> pokazuje.",
        "search-showingresults": "{{PLURAL:$4|Wuslědk <strong>$1</strong> z <strong>$3</strong>|Wuslědki <strong>$1 - $2</strong> z <strong>$3</strong>}}",
        "search-nonefound": "Njebuchu wuslědki namakane, kotrež naprašowanju wotpowěduja.",
+       "search-nonefound-thiswiki": "Na tutej webstronje njejsu wuslědki, kotrež naprašowanju wotpowěduja.",
        "powersearch-legend": "Rozšěrjene pytanje",
        "powersearch-ns": "W mjenowych rumach pytać:",
        "powersearch-togglelabel": "Kontrolować:",
        "prefs-editing": "Wobdźěłowanje",
        "searchresultshead": "Pytać",
        "stub-threshold": "Wotkazowe formatowanje małych stronow ($1):",
+       "stub-threshold-sample-link": "přikład",
        "stub-threshold-disabled": "Znjemóžnjeny",
        "recentchangesdays": "Ličba dnjow w lisćinje aktualnych změnow:",
        "recentchangesdays-max": "(Maksimalnje $1 {{PLURAL:$1|dźeń|dnjej|dny|dnjow}})",
        "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ł.",
-       "userrights": "Zrjadowanje wužiwarskich prawow",
-       "userrights-lookup-user": "Wužiwarske skupiny zrjadować",
+       "userrights": "Wužiwarske prawa",
+       "userrights-lookup-user": "Wužiwarja wubrać",
        "userrights-user-editname": "Wužiwarske mjeno:",
        "editusergroup": "{{GENDER:$1|Wužiwarske}} skupiny wobdźěłać",
        "editinguser": "Změni wužiwarske prawa {{GENDER:$1|wužiwarja|wužiwarki}} <strong>[[User:$1|$1]]</strong> $2",
-       "userrights-editusergroup": "Wužiwarske skupiny wobdźěłać",
+       "userrights-editusergroup": "{{GENDER:$1|Wužiwarske}} skupiny wobdźěłać",
        "saveusergroups": "{{GENDER:$1|Wužiwarske}} skupiny składować",
        "userrights-groupsmember": "Čłon wot:",
        "userrights-groupsmember-auto": "Implicitny čłon wot:",
        "right-editsemiprotected": "Strony wobdźěłać, kotrež su přez \"{{int:protect-level-autoconfirmed}}\" škitane",
        "right-editcontentmodel": "Wobsahowy model strony wobdźěłać",
        "right-editinterface": "Wužiwarski powjerch wobdźěłać",
-       "right-editusercssjs": "Dataje CSS a JS druhich wužiwarjow wobdźěłać",
        "right-editusercss": "Dataje CSS druhich wužiwarjow wobdźěłać",
        "right-edituserjs": "Dataje JS druhich wužiwarjow wobdźěłać",
        "right-editmyusercss": "Twoje swójske wužiwarske CSS-dataje wobdźěłać",
        "right-sendemail": "Druhim wužiwarjam e-mejl pósłać",
        "right-managechangetags": "[[Special:Tags|Markěrowanja]] wutworić a z(nje)móžnić",
        "right-applychangetags": "[[Special:Tags|Markěrowanja]] hromadźe ze změnami nałožować",
+       "grant-group-email": "Mejlku pósłać",
+       "grant-createaccount": "Wužiwarske konta wutworić",
+       "grant-createeditmovepage": "Strony wutworić, wobdźěłać a přesunyć",
+       "grant-delete": "Strony, wersije a zapiski logoweje knihi wušmórnyć",
+       "grant-editmywatchlist": "Twoje wobkedźbowanki wobdźěłać",
+       "grant-uploadfile": "Nowe dataje nahrawać",
+       "grant-basic": "Zakładne prawa",
        "newuserlogpage": "Protokol nowych wužiwarjow",
        "newuserlogpagetext": "To je protokol wutworjenja nowych wužiwarskich kontow.",
        "rightslog": "Protokol zrjadowanja wužiwarskich prawow",
        "recentchanges-legend-heading": "<strong>Legenda:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (hlej tež [[Special:NewPages|lisćinu nowych stronow]])",
        "recentchanges-legend-plusminus": "(''±123'')",
+       "recentchanges-submit": "Pokazać",
+       "rcfilters-savedqueries-rename": "Přemjenować",
+       "rcfilters-savedqueries-new-name-label": "Mjeno",
+       "rcfilters-savedqueries-cancel-label": "Přetorhnyć",
+       "rcfilters-invalid-filter": "Njepłaćiwy filter",
+       "rcfilters-filterlist-whatsthis": "Što je to?",
+       "rcfilters-highlightmenu-title": "Barbu wubrać",
+       "rcfilters-filtergroup-registration": "Registrowanje wužiwarja",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Nowački",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Mjenje hač 10 změnow a štyri aktiwne dny.",
+       "rcfilters-filter-user-experience-level-learner-label": "Započatkarjo",
+       "rcfilters-filter-user-experience-level-learner-description": "Wjace nazhonjenjow hač „nowački“, ale mjenje hač „nazhonići wužiwarjo“.",
+       "rcfilters-filter-user-experience-level-experienced-label": "Nazhonići wužiwarjo",
+       "rcfilters-filter-user-experience-level-experienced-description": "Wjace hač 30 aktiwnych dnjow a 500 změnow.",
+       "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-patrolled-label": "Kontrolowane",
+       "rcfilters-filter-patrolled-description": "Změny, kotrež markěrowachu so jako kontrolowane.",
+       "rcfilters-filter-unpatrolled-label": "Njekontrolowane",
+       "rcfilters-filter-unpatrolled-description": "Změny, kotrež njemarkěrowachu so jako kontrolowane.",
+       "rcfilters-filtergroup-significance": "Wuznam",
+       "rcfilters-filter-minor-label": "Snadne změny",
+       "rcfilters-filter-pageedits-label": "Změny na stronach",
        "rcnotefrom": "Deleka so {{PLURAL:$5|změna|změnje|změny}} wot <strong>$3, $4</strong> {{PLURAL:$5|pokazuje|pokazujetej|pokazuja}} (hač k <strong>$1</strong>).",
        "rclistfrom": "Jenož změny wot $3, $2 pokazać.",
        "rcshowhideminor": "snadne změny $1",
        "rcshowhidemine-hide": "schować",
        "rcshowhidecategorization-show": "Pokazać",
        "rcshowhidecategorization-hide": "Schować",
-       "rclinks": "Pokazuj poslednje $1 změny poslednich $2 dnjow.<br />$3",
+       "rclinks": "Pokazuj poslednje $1 změny poslednich $2 dnjow.",
        "diff": "rozdźěl",
        "hist": "wersije",
        "hide": "schować",
        "undeleteviewlink": "wobhladać sej",
        "undeleteinvert": "Wuběr wobroćić",
        "undeletecomment": "Přičina:",
-       "undeletedrevisions": "$1 {{PLURAL:$1|wersija|wersiji|wersije|wersijow}} {{PLURAL:$1|wobnowjena|wobnowjenej|wobnowjene|wobnowjene}}",
-       "undeletedrevisions-files": "$1 {{PLURAL:$1|wersija|wersiji|wersije|wersijow}} a $2 {{PLURAL:$2|dataja|dataji|dataje|datajow}} {{PLURAL:$2|wobnowjena|wobnowjenej|wobnowjene|wobnowjene}}",
-       "undeletedfiles": "$1 {{PLURAL:$1|dataja|dataji|dataje|datajow}} {{PLURAL:$1|wobnowjena|wobnowjenej|wobnowjene|wobnowjene}}.",
        "cannotundelete": "Wobnowjenje zwrěšćiło:\n$1",
        "undeletedpage": "'''Strona $1 bu z wuspěchom wobnowjena.'''\n\nHlej [[Special:Log/delete|protokol]] za lisćinu aktualnych wušmórnjenjow a wobnowjenjow.",
        "undelete-header": "Hlej [[Special:Log/delete|protokol wušmórnjenjow]] za njedawno wušmórnjene strony.",
        "patrol-log-header": "To je protokol dohladowanych wersijow.",
        "log-show-hide-patrol": "Protokol dohladowanja $1",
        "log-show-hide-tag": "Protokol markěrowanjow $1",
+       "confirm-markpatrolled-button": "W porjadku",
+       "confirm-markpatrolled-top": "Wersiju $3 strony $2 jako přehladowanu markěrować?",
        "deletedrevision": "Stara wersija $1 wušmórnjena",
        "filedeleteerror-short": "Zmylk při zničenju dataje: $1",
        "filedeleteerror-long": "Buchu zmylki při zničenju dataje zwěsćene:\n\n$1",
        "confirmrecreate": "{{GENDER:$1|Wužiwar|Wužiwarka}} [[User:$1|$1]] ([[User talk:$1|diskusija]]) je stronu {{GENDER:$1|wušmórnył|wušmórnyła}}, po tym zo sy započał ju wobdźěłać. Přičina:\n: <em>$2</em>\nProšu potwjerdź, zo chceš tutu stronu woprawdźe znowa wutworić.",
        "confirmrecreate-noreason": "{{GENDER:$1|Wužiwar|Wužiwarka}} [[User:$1|$1]] ([[User talk:$1|diskusija]]) je tutu stronu {{GENDER:$1|zhašał|zhašała}}, po tym zo sće wobdźěłowanje započał. Prošu wobkruć, zo woprawdźe chceš tutu stronu znowa wutworić.",
        "recreate": "Znowa wutworić",
+       "confirm-purge-title": "Tutu stronu zaktualizować",
        "confirm_purge_button": "W porjadku",
        "confirm-purge-top": "Pufrowak strony wuprózdnić?",
        "confirm-purge-bottom": "Wuprózdnja pufrowak a wunuzuje zwobraznjenje aktualneje wersije.",
        "confirm-watch-top": "Tutu stronu wobkedźbowankam přidać?",
        "confirm-unwatch-button": "W porjadku",
        "confirm-unwatch-top": "Tutu stronu z wobkedźbowankow wotstronić?",
+       "confirm-rollback-button": "W porjadku",
        "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← předchadna strona",
        "imgmultipagenext": "přichodna strona →",
        "logentry-upload-overwrite": "$1 je nowu wersiju $3 {{GENDER:$2|nahrał|nahrała}}",
        "logentry-upload-revert": "$1 je $3 {{GENDER:$2|nahrał|nahrała}}",
        "rightsnone": "(ničo)",
-       "revdelete-summary": "zjeće wobdźěłać",
        "feedback-adding": "Komentar so stronje přidawa...",
        "feedback-back": "Wróćo",
        "feedback-bugcheck": "Wulkotnje! Skontroluj jenož, hač to jedyn z [$1 znatych zmylkow] njeje.",
index 976ebbf..0f654a5 100644 (file)
        "showdiff": "Montre chanjman yo",
        "anoneditwarning": "'''Atansyon :''' ou pa konekte nan sistèm nan. Adrès IP ou a ap pibliz si w fè chanjman. Si w <strong>[$1 konekte]</strong> oubyen <strong>[$2 ouvri yon kont]</strong> chanjman ou fè yo ap asosye ak non itilizate ou, ansanm ak lòt avantaj.",
        "anonpreviewwarning": "''Ou pa konekte.  Anrejistre ap kenbe adrès IP ou a nan istorik paj sa a.''",
-       "missingsummary": "'''Souple :''' ou poko bay rezime modifikasyon ou fè an\nSi ou klike sou \"{{int:savearticle}}\" ankò, piblikasyon sa ap fèt san li bay lòt avètisman.",
+       "missingsummary": "'''Souple :''' ou poko bay rezime modifikasyon ou fè an\nSi ou klike sou \"$1\" ankò, piblikasyon sa ap fèt san li bay lòt avètisman.",
        "missingcommenttext": "Souple, ekri komantè ou an pli ba nan paj sa.",
-       "missingcommentheader": "'''Pòte atansyon :''' ou pa bay komantè ou an yon sijè/tit .\nSi ou klike sou \"{{int:savearticle}}\", modifikasyon ou an pap genyen yon tit.",
+       "missingcommentheader": "'''Pòte atansyon :''' ou pa bay komantè ou an yon sijè/tit .\nSi ou klike sou \"$1\", modifikasyon ou an pap genyen yon tit.",
        "summary-preview": "Kout je nan rezime an anvan li anrejistre:",
        "subject-preview": "Yon kout je sou sijè/tit sa:",
        "blockedtitle": "itilizatè a bloke.",
        "editingsection": "Modifikasyon pou $1 (seksyon)",
        "editingcomment": "Modifikasyon pou $1 (nouvo seksyon)",
        "editconflict": "Batay ant modifikasyon : $1",
-       "explainconflict": "Yon lòt moun te anrejistre paj sa apre ou te komanse modifye l.\nW ap jwenn teks jan li ye kounye a nan zòn modifikasyon an ki anlè.\nModifikasyon ou pòte yo parèt anba.\nOu dwe fè modifikasyon ou yo nan tèks ki te deja anrejistre a ki anlè.\nSe tèks ki nan pati anlè a sèlman k ap anrejistre toutbon lè ou klike sou « {{int:savearticle}} ».",
+       "explainconflict": "Yon lòt moun te anrejistre paj sa apre ou te komanse modifye l.\nW ap jwenn teks jan li ye kounye a nan zòn modifikasyon an ki anlè.\nModifikasyon ou pòte yo parèt anba.\nOu dwe fè modifikasyon ou yo nan tèks ki te deja anrejistre a ki anlè.\nSe tèks ki nan pati anlè a sèlman k ap anrejistre toutbon lè ou klike sou « $1 ».",
        "yourtext": "Tèks ou an",
        "storedversion": "Vèsyon ki anrejistre",
        "nonunicodebrowser": "'''Atansyon: Navigatè ou an pa ka mache ak Unicode lan.'''\nNou fè yon jan pou pèmèt ou fè modifikasyon nan paj yo: karaktè ki pa nan ASCII yo pral ekri ak kòd ekzadesimal.",
        "rcshowhidemine": "$1 kontribisyon mwen yo",
        "rcshowhidemine-show": "Montre",
        "rcshowhidemine-hide": "Kache",
-       "rclinks": "Afiche dènye $1 modifikasyon ki fèt nan $2 dènye jou sa yo<br />$3.",
+       "rclinks": "Afiche dènye $1 modifikasyon ki fèt nan $2 dènye jou sa yo",
        "diff": "diferans",
        "hist": "istorik",
        "hide": "Kache",
index fde6566..bf2a048 100644 (file)
@@ -46,7 +46,8 @@
                        "Máté",
                        "Wolf Rex",
                        "BanKris",
-                       "Notramo"
+                       "Notramo",
+                       "Urbalazs"
                ]
        },
        "tog-underline": "Hivatkozások aláhúzása:",
        "navigation-heading": "Navigációs menü",
        "errorpagetitle": "Hiba",
        "returnto": "Vissza a(z) $1 laphoz.",
-       "tagline": "A {{SITENAME}} wikiből",
+       "tagline": "Innen: {{SITENAME}}",
        "help": "Segítség",
        "search": "Keresés",
        "search-ignored-headings": " #<!-- ezen a soron ne változtass --> <pre>\n# Az itt megadott szakaszokat figyelmen kívül hagyja a kereső.\n# Ha megváltoztatod ezt a listát, csak a változtatás után indexelt lapokra lesz hatása.\n# Ha újra akarsz indexelni egy adott oldalt, egy üres szerkesztéssel (megnyit-elment) megteheted.\n# Szintaxis:\n#   * A # jeltől a sor végéig tartó rész megjegyzés, a szoftver figyelmen kívül hagyja\n#   * Minden nem üres sor egy olyan szakasz címe, amit nem akarjuk, hogy indexeljen a kereső. (Csak a pontos egyezés számít, kisbetű/nagybetűt is beleértve.)\nForrások\nJegyzetek\nHivatkozások\nKülső hivatkozások\nLásd még\n #</pre> <!-- ezen a soron ne változtass -->",
        "botpasswords-insert-failed": "A(z) „$1” botnév hozzáadása sikertelen. Nem lehet, hogy már hozzá lett adva?",
        "botpasswords-update-failed": "A(z) „$1” nevű botfiók frissítése sikertelen. Lehet, hogy törölted?",
        "botpasswords-created-title": "Botjelszó létrehozva",
-       "botpasswords-created-body": "\"$2\" felhasználó \"$1\" bot jelszava létrehozva.",
+       "botpasswords-created-body": "„$2” felhasználó „$1” botjának jelszava létrehozva.",
        "botpasswords-updated-title": "Botjelszó frissítve",
-       "botpasswords-updated-body": "\"$2\" felhasználó \"$1\" bot jelszava módosítva.",
+       "botpasswords-updated-body": "„$2” felhasználó „$1” botjának jelszava módosítva.",
        "botpasswords-deleted-title": "Botjelszó törölve",
-       "botpasswords-deleted-body": "\"$2\" felhasználó \"$1\" bot jelszava törölve.",
+       "botpasswords-deleted-body": "„$2” felhasználó „$1” botjának jelszava törölve.",
        "botpasswords-newpassword": "A bejelentkezéshez használható új felhasználóneved <strong>$1</strong>, jelszavad <strong>$2</strong>. <em>Ezeket jegyezd fel a későbbiekre.</em> <br> (Régebbi botoknál, amik megkövetelhetik, hogy a bejelentkezési név megegyezzen magával a felhasználónévvel, használhatod a(z) <strong>$3</strong> felhasználónevet is <strong>$4</strong> jelszóval.)",
        "botpasswords-no-provider": "A BotPasswordsSessionProvider nem áll rendelkezésre.",
        "botpasswords-restriction-failed": "A botjelszó-korlátozások megakadályozzák ezt a bejelentkezést.",
        "preview": "Előnézet",
        "showpreview": "Előnézet megtekintése",
        "showdiff": "Változtatások megtekintése",
-       "blankarticle": "<strong>Figyelem:</strong> A létrehozandó szócikk üres.\nHa ismét a \"{{int:savearticle}}\" gombra kattintasz, a szócikket tartalom nélkül fogod létrehozni.",
+       "blankarticle": "<strong>Figyelem:</strong> A létrehozandó szócikk üres.\nHa ismét a \"$1\" gombra kattintasz, a szócikket tartalom nélkül fogod létrehozni.",
        "anoneditwarning": "<strong>Figyelem:</strong> Nem vagy bejelentkezve. Ha szerkesztesz, az IP-címed nyilvánosan látható lesz a laptörténetben. Ha <strong>[$1 bejelentkezel]</strong> vagy <strong>[$2 regisztrálsz]</strong>, a szerkesztéseid a felhasználónevedhez lesznek társítva, egyéb hasznos dolgok mellett.",
        "anonpreviewwarning": "''Nem vagy bejelentkezve. A mentéskor az IP-címed rögzítve lesz a laptörténetben.''",
        "missingsummary": "'''Emlékeztető:''' Nem adtál meg szerkesztési összefoglalót. Ha összefoglaló nélkül akarod elküldeni a szöveget, kattints újra a mentésre.",
-       "selfredirect": "<strong>Figyelem:</strong> Az lapot önmagára készült átirányítani. Lehet, hogy rossz célt adtál meg, vagy rossz oldalt szerkesztesz. Ha ismét a {{int:savearticle}} gombra kattintasz, akkor az átirányítás mégis létrejön.",
+       "selfredirect": "<strong>Figyelem:</strong> Az lapot önmagára készült átirányítani. Lehet, hogy rossz célt adtál meg, vagy rossz oldalt szerkesztesz. Ha ismét a $1 gombra kattintasz, akkor az átirányítás mégis létrejön.",
        "missingcommenttext": "Kérjük, írj összefoglalót a szerkesztésedhez.",
-       "missingcommentheader": "<strong>Emlékeztető:</strong> Nem adtad meg a megjegyzés tárgyát.\nHa ismét a „{{int:savearticle}}” gombra kattintasz, akkor a szerkesztésed nélküle lesz elmentve.",
+       "missingcommentheader": "<strong>Emlékeztető:</strong> Nem adtad meg a megjegyzés tárgyát.\nHa ismét a „$1” gombra kattintasz, akkor a szerkesztésed nélküle lesz elmentve.",
        "summary-preview": "A szerkesztési összefoglaló előnézete:",
        "subject-preview": "Tárgy előnézete:",
-       "previewerrortext": "Hiba történt a változások előnézete megjelenítése során.",
+       "previewerrortext": "Hiba történt a változások előnézetének megjelenítése során.",
        "blockedtitle": "A szerkesztő blokkolva van",
        "blockedtext": "<strong>A szerkesztőnevedet vagy az IP-címedet blokkoltuk.</strong>\n\nA blokkolást $1 végezte el.\nAz általa felhozott indok: <em>$2.</em>\n\n* A blokk kezdete: $8\n* A blokk lejárata: $6\n* Blokkolt szerkesztő: $7\n\nKapcsolatba léphetsz $1 szerkesztőnkkel vagy egy másik [[{{MediaWiki:Grouppage-sysop}}|adminisztrátorral]], és megbeszélheted vele a blokkolást.\nAz „E-mail küldése ennek a szerkesztőnek” funkciót csak akkor használhatod, ha érvényes e-mail címet adtál meg [[Special:Preferences|fiókbeállításaidban]], és nem blokkolták a használatát.\nJelenlegi IP-címed: $3, a blokkolás azonosítószáma: #$5.\nKérjük, hogy érdeklődés esetén minden fenti részletet adj meg.",
        "autoblockedtext": "Az IP-címed automatikusan blokkolva lett, mert korábban egy olyan szerkesztő használta, akit $1 blokkolt, az alábbi indoklással:\n\n:''$2''\n\n*A blokk kezdete: '''$8'''\n*A blokk lejárata: '''$6'''\n*Blokkolt szerkesztő: '''$7'''\n\nKapcsolatba léphetsz $1 szerkesztőnkkel, vagy egy másik [[{{MediaWiki:Grouppage-sysop}}|adminisztrátorral]], és megbeszélheted vele a blokkolást.\n\nAz 'E-mail küldése ennek a szerkesztőnek' funkciót csak akkor használhatod, ha érvényes e-mail címet adtál meg\n[[Special:Preferences|fiókbeállításaidban]], és nem blokkolták a használatát.\n\nJelenlegi IP-címed: $3, a blokkolás azonosítószáma: #$5.\nKérjük, hogy érdeklődés esetén mindkettőt add meg.",
        "editingsection": "$1 szerkesztése (szakasz)",
        "editingcomment": "$1 szerkesztése (új szakasz)",
        "editconflict": "Szerkesztési ütközés: $1",
-       "explainconflict": "Valaki megváltoztatta a lapot, mióta elkezdted szerkeszteni. A felső szövegdobozban láthatod az oldal jelenlegi tartalmát. A te módosításaid az alsó dobozban találhatók. Át kell másolnod a módosításaidat a felsőbe! \n\n<strong>Csak</strong> a felső dobozban levő szöveg lesz elmentve, amikor a „{{int:savearticle}}” gombra kattintasz.",
+       "explainconflict": "Valaki megváltoztatta a lapot, mióta elkezdted szerkeszteni. A felső szövegdobozban láthatod az oldal jelenlegi tartalmát. A te módosításaid az alsó dobozban találhatók. Át kell másolnod a módosításaidat a felsőbe! \n\n<strong>Csak</strong> a felső dobozban levő szöveg lesz elmentve, amikor a „$1” gombra kattintasz.",
        "yourtext": "A te változatod",
        "storedversion": "A tárolt változat",
        "nonunicodebrowser": "'''Figyelem: A böngésződ nem Unicode kompatibilis. Egy kerülő megoldásként biztonságban szerkesztheted a cikkeket: a nem ASCII karakterek a szerkesztőablakban hexadeciális kódokként jelennek meg.'''",
        "content-failed-to-parse": "Hiba történt a $2 tartalom $1 modellre történő konvertálása során: $3",
        "invalid-content-data": "Érvénytelen tartalom adat",
        "content-not-allowed-here": "\"$1\" tartalom nem engedélyezett a [[$2]] oldalon",
-       "editwarning-warning": "A lap elhagyásával az összes itt végzett változtatás elveszhet.\nHa be vagy jelentkezve letilthatod ezt a figyelmeztetést a beállításaid „{{int:prefs-editing}}” szakaszában.",
+       "editwarning-warning": "A lap elhagyásával az összes itt végzett változtatás elveszhet. Ha be vagy jelentkezve, letilthatod ezt a figyelmeztetést a beállításaid „{{int:prefs-editing}}” szakaszában.",
        "editpage-invalidcontentmodel-title": "A tartalommodell nem támogatott",
        "editpage-invalidcontentmodel-text": "A(z) „$1” tartalommodell nem támogatott.",
        "editpage-notsupportedcontentformat-title": "Nem támogatott tartalom formátum",
        "userrights-expiry-options": "1 nap:1 day,1 hét:1 week,1 hónap:1 month,3 hónap:3 months,6 hónap:6 months,1 év:1 year",
        "userrights-invalid-expiry": "A(z) „$1” csoport lejárati ideje érvénytelen.",
        "userrights-expiry-in-past": "A(z) „$1” csoport lejárati ideje már elmúlt.",
+       "userrights-cannot-shorten-expiry": "Nem hosszabbíthatod meg a(z) „$1” csoporthoz tartozást. Csak az ezen csoport hozzáadására és eltávolítására jogosult felhasználók rakhatják későbbre a lejáratot.",
        "userrights-conflict": "Felhasználói jogok ütközése! Kérlek, végezd el újra a változtatásokat.",
        "group": "Csoport:",
        "group-user": "szerkesztők",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lásd még: [[Special:NewPages|új lapok listája]])",
        "recentchanges-submit": "Megjelenítés",
        "rcfilters-activefilters": "Aktív szűrők",
+       "rcfilters-quickfilters": "Gyors hivatkozások",
+       "rcfilters-savedqueries-defaultlabel": "Mentett szűrők",
+       "rcfilters-savedqueries-rename": "Átnevezés",
+       "rcfilters-savedqueries-setdefault": "Beállítás alapértelmezettként",
+       "rcfilters-savedqueries-remove": "Eltávolítás",
+       "rcfilters-savedqueries-new-name-label": "Név",
+       "rcfilters-savedqueries-apply-label": "Gyors hivatkozás létrehozása",
+       "rcfilters-savedqueries-cancel-label": "Mégse",
+       "rcfilters-savedqueries-add-new-title": "Szűrők mentése gyors hivatkozásként",
        "rcfilters-restore-default-filters": "Alapértelmezett szűrők visszaállítása",
        "rcfilters-clear-all-filters": "Összes szűrő kikapcsolása",
        "rcfilters-search-placeholder": "Friss változtatások szűrése (böngészd vagy kezdj el gépelni)",
        "rcfilters-highlightmenu-help": "Válassz színt ennek a tulajdonságnak kijelöléséhez",
        "rcfilters-filterlist-noresults": "Nem található szűrő",
        "rcfilters-noresults-conflict": "Nincs találat, mert a keresési kritériumok konfliktusban vannak",
+       "rcfilters-state-message-subset": "Ennek a szűrőnek nincs hatása, mert az eredményét {{PLURAL:$2|tartalmazza a következő, nagyobb szűrő|tartalmazzák a következő, nagyobb szűrők}} (próbáld meg kiemelni a megkülönböztetéshez): $1",
+       "rcfilters-state-message-fullcoverage": "Az összes szűrő kijelölése egy csoportban ugyanaz, mint ha semmit nem választanál ki, így ennek a szűrőnek nincs hatása. A csoport tartalmazza: $1",
        "rcfilters-filtergroup-registration": "Regisztráció",
        "rcfilters-filter-registered-label": "Regisztrált",
        "rcfilters-filter-registered-description": "Bejelentkezett szerkesztők.",
        "rcfilters-filter-unregistered-label": "Nem regisztrált",
        "rcfilters-filter-unregistered-description": "Nem bejelentkezett szerkesztők.",
-       "rcfilters-filtergroup-authorship": "Szerkesztő",
-       "rcfilters-filter-editsbyself-label": "Saját szerkesztéseid",
-       "rcfilters-filter-editsbyself-description": "Saját szerkesztések",
-       "rcfilters-filter-editsbyother-label": "Mások szerkesztései",
-       "rcfilters-filter-editsbyother-description": "Más felhasználók által végzett szerkesztések (nem sajátok)",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "Ez a szűrő ütközik a következő tapasztalati {{PLURAL:$2|szűrővel, ami|szűrőkkel, amik}} csak regisztrált felhasználókat {{PLURAL:$2|talál|találnak}} meg: $1",
+       "rcfilters-filtergroup-authorship": "Hozzájárulás szerzője",
+       "rcfilters-filter-editsbyself-label": "Saját változtatásaid",
+       "rcfilters-filter-editsbyself-description": "A te hozzájárulásaid.",
+       "rcfilters-filter-editsbyother-label": "Mások módosításai",
+       "rcfilters-filter-editsbyother-description": "Minden változtatás a tieidet kivéve.",
        "rcfilters-filtergroup-userExpLevel": "Tapasztalati szint (csak regisztrált felhasználók)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "A tapasztalat szűrő csak regisztrált felhasználókat keres, tehát ez a szűrő ellentétben van a \"Regisztrálatlan\" szűrővel.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "A \"Regisztrálatlan\" szűrő ellentétben van egy vagy több Tapasztalat szűrővel, ami csak regisztrált felhasználókat keres. A konfliktusban lévő szűrők meg vannak jelölve fent az Aktív Szűrők résznél.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Újoncok",
        "rcfilters-filter-user-experience-level-newcomer-description": "Kevesebb mint 10 szerkesztés és 4 nap aktivitás.",
        "rcfilters-filter-user-experience-level-learner-label": "Tanulók",
-       "rcfilters-filter-user-experience-level-learner-description": "Több aktív nap és szerkesztés, mint az „újoncok”, de kevesebb, mint a „tapasztalt szerkesztők”.",
+       "rcfilters-filter-user-experience-level-learner-description": "Több tapasztalat egy „újoncnál”, de kevesebb egy „tapasztalt szerkesztőnél”.",
        "rcfilters-filter-user-experience-level-experienced-label": "Tapasztalt szerkesztők",
        "rcfilters-filter-user-experience-level-experienced-description": "Több mint 30 nap aktivitás és 500 szerkesztés.",
        "rcfilters-filtergroup-automated": "Automatikus szerkesztések",
        "rcfilters-filter-patrolled-description": "Ellenőrzöttnek jelölt szerkesztések",
        "rcfilters-filter-unpatrolled-label": "Ellenőrizetlen",
        "rcfilters-filter-unpatrolled-description": "Ellenőrzöttnek nem jelölt szerkesztések",
+       "rcfilters-filtergroup-significance": "Fontosság",
        "rcfilters-filter-minor-label": "Apró szerkesztések",
        "rcfilters-filter-minor-description": "Szerző által aprónak jelölt szerkesztések",
        "rcfilters-filter-major-label": "Nem apró szerkesztések",
        "rcfilters-filter-major-description": "Nem aprónak jelölt szerkesztések.",
+       "rcfilters-filter-watchlist-watched-label": "Figyelőlistán",
        "rcfilters-filtergroup-changetype": "Változtatás típusa",
        "rcfilters-filter-pageedits-label": "Lapszerkesztések",
        "rcfilters-filter-pageedits-description": "A wiki tartalom szerkesztése, beszélgetés, kategória leírások...",
        "rcfilters-filter-newpages-label": "Laplétrehozások",
        "rcfilters-filter-newpages-description": "Új oldalt létrehozó szerkesztések.",
        "rcfilters-filter-categorization-label": "Kategóriaváltoztatások",
+       "rcfilters-filter-categorization-description": "Bejegyzések arról lapok hozzáadásáról kategóriákhoz vagy eltávolításáról azokból.",
        "rcfilters-filter-logactions-label": "Naplózott műveletek",
        "rcfilters-filter-logactions-description": "Adminisztratív műveletek, fióklétrehozások, laptörlések, feltöltések…",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "Az „apró változtatás” szűrő ütközik egy vagy több „változtatás típusa” szűrővel, mert bizonyos változtatástípusok nem jelölhetők aprónak. Az ütköző szűrők meg vannak jelölve a fenti Aktív szűrők részen.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Bizonyos változtatástípusok nem jelölhetők „aprónak”, így ez a szűrő ütközik a következő „változtatás típusa” szűrőkkel: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Ez a változtatástípus-szűrő ütközik az „apró változtatások” szűrővel. Bizonyos változtatástípusok nem jelölhetők aprónak.",
+       "rcfilters-filtergroup-lastRevision": "Legutóbbi változat",
+       "rcfilters-filter-lastrevision-label": "Legutóbbi változat",
+       "rcfilters-filter-lastrevision-description": "Egy lap legfrissebb változtatása",
+       "rcfilters-filter-previousrevision-label": "Régebbi változatok",
+       "rcfilters-filter-previousrevision-description": "Minden változtatás a legutóbbiak kivételével",
        "rcnotefrom": "Alább a <strong>$3 $4</strong> óta történt változtatások láthatóak (legfeljebb <b>$1</b> db).",
+       "rclistfromreset": "Dátumválasztás visszaállítása",
        "rclistfrom": "$3, $2 után történt változtatások megtekintése",
        "rcshowhideminor": "apró szerkesztések $1",
        "rcshowhideminor-show": "megjelenítése",
        "rcshowhidecategorization": "lapok kategorizálásának $1",
        "rcshowhidecategorization-show": "megjelenítése",
        "rcshowhidecategorization-hide": "elrejtése",
-       "rclinks": "Az elmúlt $2 nap utolsó $1 változtatása legyen látható<br />$3",
+       "rclinks": "Az elmúlt $2 nap utolsó $1 változtatása legyen látható",
        "diff": "eltér",
        "hist": "történet",
        "hide": "elrejtése",
        "file-deleted-duplicate": "Egy ehhez hasonló fájlt ([[:$1]]) korábban már töröltek. Ellenőrizd a fájl törlési naplóját, mielőtt újra feltöltenéd.",
        "file-deleted-duplicate-notitle": "Egy ugyanilyen fájlt korábban már töröltek, és címét eltávolították. Kérj meg valakit, aki meg tudja nézni a törölt fájlokat, hogy tekintse át a helyzetet, mielőtt újra feltöltenéd a fájlt.",
        "uploadwarning": "Feltöltési figyelmeztetés",
-       "uploadwarning-text": "Kérlek módosítsd a fájl leírását alább, majd próbáld újra.",
+       "uploadwarning-text": "Kérlek, módosítsd a fájl leírását alább, majd próbáld újra.",
        "savefile": "Fájl mentése",
        "uploaddisabled": "Feltöltések kikapcsolva",
        "copyuploaddisabled": "A feltöltés URL alapján le van tiltva.",
        "php-uploaddisabledtext": "A PHP-s fájlfeltöltés le van tiltva. Ellenőrizd a file_uploads beállítást.",
        "uploadscripted": "Ez a fájl olyan HTML- vagy parancsfájlkódot tartalmaz, melyet tévedésből egy webböngésző esetleg értelmezni próbálhatna.",
        "upload-scripted-pi-callback": "Nem tölthetsz fel olyan fájlt, ami XML-stíluslap feldolgozási utasításokat tartalmaz.",
+       "upload-scripted-dtd": "Nem lehet feltölteni olyan SVG fájlokat, amik nem szabványos DTD deklarációt tartalmaznak.",
        "uploaded-script-svg": "A feltöltött SVG fájlodban szkriptelemet találtunk: \"$1\".",
        "uploaded-hostile-svg": "Nem biztonságos CSS kódot találtunk a feltöltött SVG fájlod stíluselemei között.",
        "uploaded-event-handler-on-svg": "Az alábbi eseménykezelő-attribútum beállítása nem megengedett az SVG fájlokban: <code>$1=$2</code>.",
        "uploaded-animate-svg": "A feltöltött SVG fájlban \"animate\" taget találtam, ami az alábbi \"from\" attribútumával megváltoztathat egy href-et: <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-setting-event-handler-svg": "Eseménykezelő attribútumok beállítása blokkolva van, <code>&lt;$1 $2=\"$3\"&gt;</code> található a feltöltendő SVG fájlban.",
        "uploaded-setting-href-svg": "A „set” címke használata „href” attribútum szülőelemhez adására blokkolva van.",
+       "uploaded-wrong-setting-svg": "A „set” címke használata távoli/adat-/szkriptcél hozzáadására blokkolva van. A feltöltött SVG fájlban a következő szerepel: <code>&lt;set to=\"$1\"&gt;</code>",
        "uploaded-setting-handler-svg": "Az SVG kódok, amelyek a \"handler\" attribútumot távolra/adatra/szkriptre állítják, le vannak tiltva. A feltöltött SVG fájlban a következőt találtam: <code>$1=\"$2\"</code>.",
        "uploaded-remote-url-svg": "Az SVG kódok, amelyek bármely stílus-attribútumot távoli URL-ra állítják, le vannak tiltva. A feltöltött SVG fájlban a következőt találtam: <code>$1=\"$2\"</code>.",
        "uploaded-image-filter-svg": "A feltöltött SVG fájl URL-t tartalmazó képfiltert tartalmaz: <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "apisandbox-sending-request": "API-kérés küldése…",
        "apisandbox-loading-results": "API-válaszok fogadása…",
        "apisandbox-results-error": "Hiba történt az API-lekérdezés válaszának betöltése közben: $1.",
+       "apisandbox-request-selectformat-label": "Kérésadatok megjelenítése a következő formátumban:",
+       "apisandbox-request-format-url-label": "URL-lekérdezés",
        "apisandbox-request-url-label": "Kérő URL:",
        "apisandbox-request-json-label": "JSON kérése:",
        "apisandbox-request-time": "Kérés hossza: $1 ms",
        "enotif_body_intro_moved": "$2 átmozgatta a(z) $1 {{SITENAME}}-oldalt $PAGEEDITDATE dátumon, lásd az aktuális verziót itt: $3.",
        "enotif_body_intro_restored": "$2 visszaállította a(z) $1 {{SITENAME}}-oldalt $PAGEEDITDATE dátumon, lásd az aktuális verziót itt: $3.",
        "enotif_body_intro_changed": "$2 megváltoztatta a(z) $1 {{SITENAME}}-oldalt $PAGEEDITDATE dátumon, az aktuális verziót lásd itt: $3.",
-       "enotif_lastvisited": "Lásd a $1 lapot az utolsó látogatásod óta történt változtatásokért.",
-       "enotif_lastdiff": "Lásd a $1 lapot ezen változtatás megtekintéséhez.",
+       "enotif_lastvisited": "Az utolsó látogatásod óta történt változtatásokért lásd: $1",
+       "enotif_lastdiff": "Ezen változtatás megtekintéséhez lásd: $1",
        "enotif_anon_editor": "$1 névtelen felhasználó",
        "enotif_body": "Kedves $WATCHINGUSERNAME!\n\n$PAGEINTRO $NEWPAGE\n\nA szerkesztési összefoglaló a következő volt: $PAGESUMMARY $PAGEMINOREDIT\n\nA szerkesztő elérhetősége:\ne-mail küldése: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nAmíg nem keresed fel az oldalt bejelentkezve, addig nem érkeznek újabb értesítések az oldal változásaival kapcsolatban. A figyelőlistádon is beállíthatod, hogy újból kapj értesítéseket, az összes lap után.\n\nBaráti üdvözlettel: a(z) {{SITENAME}} értesítő rendszere\n\n--\nAz e-mail értesítéseid módosításához keresd fel a \n{{canonicalurl:{{#special:Preferences}}}} címet\n\nA figyelőlistád módosításához keresd fel a\n{{canonicalurl:{{#special:EditWatchlist}}}} címet\n\nA lap figyelőlistádról való törléséhez keresd fel a\n$UNWATCHURL címet\n\nVisszajelzés és további segítség:\n$HELPPAGE",
        "created": "létrehozta",
        "sp-contributions-uploads": "feltöltések",
        "sp-contributions-logs": "naplók",
        "sp-contributions-talk": "vitalap",
-       "sp-contributions-userrights": "szerkesztői jogok beállítása",
+       "sp-contributions-userrights": "{{GENDER:$1|felhasználói}} jogok beállítása",
        "sp-contributions-blocked-notice": "Ez a szerkesztő blokkolva van. A blokknapló legutóbbi ide vonatkozó bejegyzése a következő:",
        "sp-contributions-blocked-notice-anon": "Ez az IP-cím blokkolva van.\nA blokknapló legutóbbi ide vonatkozó bejegyzése a következő:",
        "sp-contributions-search": "Közreműködések szűrése",
        "unblocked-id": "$1 blokkolása feloldásra került",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] blokkolása feloldva",
        "blocklist": "Blokkolt felhasználók",
+       "autoblocklist": "Autoblokkok",
+       "autoblocklist-submit": "Keresés",
+       "autoblocklist-legend": "Autoblokkok listája",
+       "autoblocklist-localblocks": "Helyi {{PLURAL:$1|autoblokk|autoblokkok}}",
+       "autoblocklist-empty": "Az autoblokklista üres.",
+       "autoblocklist-otherblocks": "Egyéb {{PLURAL:$1|autoblokk|autoblokkok}}",
        "ipblocklist": "Blokkolt felhasználók",
        "ipblocklist-legend": "Blokkolt felhasználó keresése",
        "blocklist-userblocks": "Fiókblokkolások elrejtése",
        "tooltip-pt-watchlist": "Az általad figyelemmel kísért oldalak utolsó változtatásai",
        "tooltip-pt-mycontris": "A közreműködéseid listája",
        "tooltip-pt-anoncontribs": "Erről az IP-címről végrehajtott szerkesztések listája",
-       "tooltip-pt-login": "Bejelentkezni javasolt, de nem kötelező.",
+       "tooltip-pt-login": "Bejelentkezni javasolt, de nem kötelező",
+       "tooltip-pt-login-private": "Be kell jelentkezned a wiki használatához",
        "tooltip-pt-logout": "Kijelentkezés",
        "tooltip-pt-createaccount": "Arra bíztatunk, hogy hozz létre egy fiókot, és jelentkezz be, azonban ez nem kötelező",
        "tooltip-ca-talk": "Az oldal tartalmának megvitatása",
        "tooltip-ca-move": "A lap áthelyezése",
        "tooltip-ca-watch": "A lap hozzáadása a figyelőlistádhoz",
        "tooltip-ca-unwatch": "A lap eltávolítása a figyelőlistádról",
-       "tooltip-search": "Keresés a wikin",
+       "tooltip-search": "Keresés ezen: {{SITENAME}}",
        "tooltip-search-go": "Ugrás a megadott lapra, ha létezik",
        "tooltip-search-fulltext": "Oldalak keresése a megadott szöveg alapján",
-       "tooltip-p-logo": "Kezdőlap",
+       "tooltip-p-logo": "Kezdőlap megtekintése",
        "tooltip-n-mainpage": "A kezdőlap felkeresése",
        "tooltip-n-mainpage-description": "A kezdőlap megtekintése",
-       "tooltip-n-portal": "A közösségről, miben segíthetsz, mit hol találsz meg",
+       "tooltip-n-portal": "A projektről, miben segíthetsz, mit hol találsz meg",
        "tooltip-n-currentevents": "Háttérinformáció az aktuális eseményekről",
        "tooltip-n-recentchanges": "A wikiben történt legutóbbi változtatások listája",
        "tooltip-n-randompage": "Egy véletlenszerűen kiválasztott lap betöltése",
        "tooltip-t-contributions": "A {{GENDER:$1|felhasználó}} közreműködéseinek listája",
        "tooltip-t-emailuser": "Írj e-mailt ennek a {{GENDER:$1|felhasználónak}}",
        "tooltip-t-info": "További információk erről a lapról",
-       "tooltip-t-upload": "Képek vagy egyéb fájlok feltöltése",
+       "tooltip-t-upload": "Fájlok feltöltése",
        "tooltip-t-specialpages": "Az összes speciális lap listája",
        "tooltip-t-print": "A lap nyomtatható változata",
        "tooltip-t-permalink": "Állandó hivatkozás a lap ezen változatához",
        "anonymous": "Névtelen {{SITENAME}}-{{PLURAL:$1|szerkesztő|szerkesztők}}",
        "siteuser": "$1 {{SITENAME}}-felhasználó",
        "anonuser": "$1 névtelen {{SITENAME}}-felhasználó",
-       "lastmodifiedatby": "Ezt a lapot utoljára $3 módosította $2, $1 időpontban.",
+       "lastmodifiedatby": "Ezt a lapot utoljára $3 szerkesztette $2, $1 időpontban.",
        "othercontribs": "$1 munkája alapján.",
        "others": "mások",
        "siteusers": "$1 {{SITENAME}}-{{PLURAL:$2|szerkesztő|szerkesztők}}",
        "pageinfo-header-basic": "Alapinformációk",
        "pageinfo-header-edits": "Szerkesztések története",
        "pageinfo-header-restrictions": "Lapvédelem",
-       "pageinfo-header-properties": "Lap tulajdonságok",
+       "pageinfo-header-properties": "A lap tulajdonságai",
        "pageinfo-display-title": "Megjelenített cím",
        "pageinfo-default-sort": "Alapértelmezett rendezési kulcs",
-       "pageinfo-length": "Lap hossza (bájtokban)",
+       "pageinfo-length": "A lap hossza (byte-ban)",
        "pageinfo-article-id": "Lapazonosító",
        "pageinfo-language": "Laptartalom nyelve",
        "pageinfo-language-change": "módosítás",
-       "pageinfo-content-model": "Oldal tartalom modell",
+       "pageinfo-content-model": "Az oldal tartalommodellje",
        "pageinfo-content-model-change": "módosítás",
        "pageinfo-robot-policy": "Indexelés robottal",
        "pageinfo-robot-index": "Engedélyezett",
        "confirmrecreate": "Miután elkezdted szerkeszteni, [[User:$1|$1]] ([[User talk:$1|vita]]) törölte ezt a lapot a következő indokkal:\n: <em>$2</em>\nKérlek erősítsd meg, hogy tényleg újra létre akarod-e hozni a lapot.",
        "confirmrecreate-noreason": "[[User:$1|$1]] ([[User talk:$1|vita]]) törölte ezt a lapot, miután elkezdted szerkeszteni. Erősítsd meg, hogy tényleg ismét létre szeretnéd hozni a lapot.",
        "recreate": "Újraírás",
+       "confirm-purge-title": "Gyorsítótár ürítése",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Törlöd az oldal gyorsítótárban (cache) található változatát?",
        "confirm-purge-bottom": "A lap ürítésével törlődik annak gyorsítótárazott változata, és a legújabb tartalom fog megjelenni.",
        "htmlform-user-not-valid": "<strong>$1</strong> nem egy érvényes felhasználónév.",
        "logentry-delete-delete": "$1 törölte a következő lapot: $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|törölte}} a(z) $3 átirányítást felülírással",
-       "logentry-delete-restore": "$1 helyreállította a következő lapot: $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|helyreállította}} a következő lapot: $3 ($4)",
+       "logentry-delete-restore-nocount": "$1 {{GENDER:$2|helyreállította}} a következő lapot: $3",
+       "restore-count-revisions": "$1 lapváltozat",
+       "restore-count-files": "$1 fájl",
        "logentry-delete-event": "$1 megváltoztatta {{PLURAL:$5|egy napló bejegyzés|$5 napló bejegyzés}} láthatóságát a(z) $3 című lapon: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|módosította}} a(z) $3 című lap {{PLURAL:$5|egy|$5}} lapváltozatának láthatóságát: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|módosította}} a(z) $3 című lap naplóbejegyzéseinek láthatóságát",
        "feedback-thanks": "Köszönjük. A visszajelzésed elküldve a „[$2 $1]” laphoz.",
        "feedback-thanks-title": "Köszönjük!",
        "feedback-useragent": "User agent:",
-       "searchsuggest-search": "Keresés a wikin",
+       "searchsuggest-search": "Keresés ezen: {{SITENAME}}",
        "searchsuggest-containing": "tartalmazza…",
        "api-error-badtoken": "Belső hiba: hibás token.",
        "api-error-emptypage": "Új, üres lap létrehozása nem engedélyezett.",
        "pagelang-nonexistent-page": "A(z) $1 lap nem létezik.",
        "pagelang-unchanged-language": "A(z) $1 lap már $2 nyelvű.",
        "pagelang-unchanged-language-default": "A(z) $1 lap már a wiki alapértelmezett tartalomnyelvére van állítva.",
+       "pagelang-db-failed": "Az adatbázis nem tudta megváltoztatni a lapnyelvet.",
        "right-pagelang": "oldal nyelvének megváltoztatása",
        "action-pagelang": "oldal nyelvének módosítása",
        "log-name-pagelang": "Nyelvváltoztatások naplója",
        "mw-widgets-titleinput-description-new-page": "a lap még nem létezik",
        "mw-widgets-titleinput-description-redirect": "átirányítás ide: $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Kategória hozzáadása…",
+       "mw-widgets-usersmultiselect-placeholder": "Továbbiak hozzáadása…",
+       "date-range-from": "Dátumtól:",
+       "date-range-to": "Dátumig:",
        "sessionmanager-tie": "Nem kombinálható többféle hitelesítési típus: $1.",
        "sessionprovider-generic": "$1-munkamenetek",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sütialapú munkamenetek",
        "restrictionsfield-help": "Egy IP-cím vagy CIDR-tartomány soronként. Minden engedélyezéséhez használd a következő tartományokat:\n<pre>\n0.0.0.0/0\n::/0\n</pre>",
        "revid": "$1 változat",
        "pageid": "$1 lapazonosító",
-       "rawhtml-notallowed": "&lt;html&gt; címkék nem használhatók normál lapokon kívül."
+       "rawhtml-notallowed": "&lt;html&gt; címkék nem használhatók normál lapokon kívül.",
+       "gotointerwiki": "{{SITENAME}} elhagyása",
+       "gotointerwiki-invalid": "A megadott cím érvénytelen.",
+       "gotointerwiki-external": "A(z) {{SITENAME}} elhagyására és a(z) [[$2]] meglátogatására készülsz, ami egy másik webhelyen található.\n\n[$1 Kattints ide a(z) $1 oldalra való továbblépéshez.]",
+       "undelete-cantedit": "Nem állíthatod helyre ezt a lapot, mert nincs jogosultságod a szerkesztéséhez.",
+       "undelete-cantcreate": "Nem állíthatod helyre ezt a lapot, mert nem létezik ilyen című lap, és nincs jogosultságod létrehozni azt."
 }
index 12fabd0..826489b 100644 (file)
@@ -28,7 +28,8 @@
                        "KeepingCalm",
                        "Macofe",
                        "Kareyac",
-                       "Irus"
+                       "Irus",
+                       "Narek"
                ]
        },
        "tog-underline": "ընդգծել հղումները՝",
        "anontalk": "Քննարկում",
        "navigation": "Շրջել կայքում",
        "and": "&#32;և",
-       "qbfind": "Գտնել",
-       "qbbrowse": "Դիտարկել",
-       "qbedit": "Խմբագրել",
-       "qbpageoptions": "Այս էջը",
-       "qbmyoptions": "Իմ էջերը",
        "faq": "ՀՏՀ",
-       "faqpage": "Project:ՀՏՀ",
        "actions": "Գործողություններ",
        "namespaces": "Անվանատարածքներ",
        "variants": "Տարբերակներ",
        "searcharticle": "Անցնել",
        "history": "Էջի պատմություն",
        "history_short": "Պատմություն",
+       "history_small": "պատմություն",
        "updatedmarker": "փոփոխվել է ձեր վերջին այցից հետո",
        "printableversion": "Տպելու տարբերակ",
        "permalink": "Մշտական հղում",
        "edit-local": "Խմբագրել տեղային նկարագրությունը",
        "create": "Ստեղծել",
        "create-local": "Ավելացնել տեղային նկարագիր",
-       "editthispage": "Խմբագրել այս էջը",
-       "create-this-page": "Ստեղծել այս էջը",
-       "delete": "Ջնջել",
-       "deletethispage": "Ջնջել այս էջը",
-       "undeletethispage": "Վերականգնել այս էջը",
+       "delete": "Հեռացնել",
        "undelete_short": "Վերականգնել {{PLURAL:$1|մեկ խմբագրում|$1 խմբագրում}}",
        "viewdeleted_short": "Դիտել {{PLURAL:$1|ջնջված խմբագրում}}",
        "protect": "Պաշտպանել",
        "protect_change": "փոխել",
-       "protectthispage": "Պաշտպանել այս էջը",
        "unprotect": "Փոխել պաշտպանությունը",
-       "unprotectthispage": "Փոխել այս էջի պաշտպանությունը",
        "newpage": "Նոր էջ",
-       "talkpage": "Քննարկել այս էջը",
        "talkpagelinktext": "քննարկում",
        "specialpage": "Հատուկ էջ",
        "personaltools": "Անձնական գործիքներ",
-       "articlepage": "Դիտել էջի պարունակությունը",
        "talk": "Քննարկում",
        "views": "Դիտումները",
        "toolbox": "Գործիքներ",
        "tool-link-userrights": "Փոփոխել {{GENDER:$1|մասնակից}} խմբեր",
+       "tool-link-userrights-readonly": "Տեսնել {{GENDER:$1|մասնակից}} խումբը",
        "tool-link-emailuser": "Ուղարկել էլ այս նամակ {{GENDER:$1|մասնակցին}}",
-       "userpage": "Դիտել մասնակցի էջը",
-       "projectpage": "Դիտել նախագծի էջը",
        "imagepage": "Դիտել նիշքի էջը",
        "mediawikipage": "Դիտել հաղորդագրության էջը",
        "templatepage": "Դիտել կաղապարի էջը",
        "filedeleteerror": "Չհաջողվեց ջնջել «$1» ֆայլը։",
        "directorycreateerror": "Չհաջողվեց ստեղծել «$1» պանակը։",
        "directoryreadonlyerror": "$1 թղթապանակը միայն ընթերցելու համար է:",
+       "directorynotreadableerror": "«$1» ցուցակն անընթեռնելի է։",
        "filenotfound": "Չհաջողվեց գտնել «$1» ֆայլը։",
        "unexpected": "Անսպասելի արժեք. «$1»=«$2»։",
        "formerror": "Սխալ. չհաջողվեց փոխանցել տվյալները",
        "createacct-yourpasswordagain-ph": "Կրկին մուտքագրեք գաղտնաբառը",
        "userlogin-remembermypassword": "Մուտք գործած մնալ",
        "userlogin-signwithsecure": "Օգտագործել անվտանգ միացում",
+       "cannotlogin-title": "Հնարավոր չէ մուտք գործել",
+       "cannotlogin-text": "Հնարավոր չէ մուտք գործել համակարգ։",
        "cannotloginnow-title": "Այժմ դուրս գալ անհնար է",
        "cannotloginnow-text": "$1 օգտագործելիս դուրս գալն անհնար է:",
        "cannotcreateaccount-title": "Անհնար է ստեղծել հաշիվներ",
        "preview": "Նախադիտում",
        "showpreview": "Նախադիտել",
        "showdiff": "Կատարված փոփոխությունները",
-       "blankarticle": "<strong>Զգուշացում:</strong> Էջը, որը Դուք ստեղծում եք, դատարկ է:\nԵթե նորից սեղմեք «{{int:savearticle}}» կոճակը, էջը կստեղծվի առանց որևէ բովանդակության:",
+       "blankarticle": "<strong>Զգուշացում:</strong> Էջը, որը Դուք ստեղծում եք, դատարկ է:\nԵթե նորից սեղմեք «$1» կոճակը, էջը կստեղծվի առանց որևէ բովանդակության:",
        "anoneditwarning": "<strong>Ուշադրություն,</strong> Դուք չեք մտել համակարգ։ Ցանկացած խմբագրման դեպքում Ձեր IP հասցեն կդառնա բոլորին տեսանելի։ Եթե Դուք <strong>[$1 մուտք գործեք]</strong> կամ <strong>[$2 ստեղծեք մասնակցային հաշիվ]</strong>, Ձեր կատարած խմբագրումները կկապվեն Ձեր մասնակցային անվան հետ, ինչպես նաև կունենաք այլ առավելություններ։",
        "anonpreviewwarning": "<em>Դուք չեք մտել համակարգ։\nՀիշելով Ձեր կատարած խմբագրումը, այն կպահանվի Ձեր IP հասցեի հետ միասին այս էջի խմբագրումների պատմության մեջ։</em>",
        "missingsummary": "'''Հիշեցում.''' Դուք չեք տվել խմբագրման ամփոփում։ «Հիշել» կոճակի կրկնակի մատնահարման դեպքում փոփոխությունները կհիշվեն առանց ամփոփման։",
        "session_fail_preview_html": "'''Ցավոք՝ չհաջողվեց հիշել ձեր խմբագրումները սեսիայի տվյալների կորստի պատճառով։'''\n\n''Քանի որ {{SITENAME}} նախագիծը թույլատրում է հում HTML, նախադիտումը անջատված է JavaScript-գրոհի կանխման նպատակով։''\n\n'''Եթե սա բարեխիղճ խմբագրման փորձ է, խնդրում ենք փորձել կրկին։ Սխալի կրկնման դեպքում՝ փորձեք [[Special:UserLogout|դուրս գալ]], ապա կրկին մտնել համակարգ։'''",
        "token_suffix_mismatch": "'''Ձեր խմբագրումը մերժվել է, քանի որ ձեր օգտագործած ծրագիրը աղավաղել է կետադրության նշանները խմբագրման դաշտում։ Խմբագրումը մերժվել է էջի տեքստի խաթարումը կանխելու նպատակով։ Սա երբեմն պայմանավորված է սխալներ պարունակող անանվանեցնող վեբ-փոխարինորդ (proxy) ծառայության օգտագործմամբ։'''",
        "editing": "Խմբագրվում է՝ $1 էջը",
-       "creating": "Ստեղծվում է՝ $1 էջը",
+       "creating": "Ստեղծվում է «$1» էջը",
        "editingsection": "Խմբագրվում է $1 բաժինը",
        "editingcomment": "Խմբագրվում է՝ $1 էջի (նոր բաժինը)",
        "editconflict": "Խմբագրման ընդհարում. $1",
-       "explainconflict": "Մեկ այլ մասնակից փոփոխել է այս տեքստը ձեր խմբագրման ընթացքում։\nՎերին խմբագրման դաշտում ընդգրկված է ընթացիկ տեքստը, որն ենթակա է հիշման։\nՁեր խմբագրումներով տեքստը գտնվում է ստորին դաշտում։\nՈրպեսզի ձեր փոփոխությունները հիշվեն, միաձուլեք դրանք վերին տեքստի մեջ։\n«{{int:savearticle}}» կոճակին սեղմելով կհիշվի '''միայն''' վերևվի դաշտի տեքստը:",
+       "explainconflict": "Մեկ այլ մասնակից փոփոխել է այս տեքստը ձեր խմբագրման ընթացքում։\nՎերին խմբագրման դաշտում ընդգրկված է ընթացիկ տեքստը, որն ենթակա է հիշման։\nՁեր խմբագրումներով տեքստը գտնվում է ստորին դաշտում։\nՈրպեսզի ձեր փոփոխությունները հիշվեն, միաձուլեք դրանք վերին տեքստի մեջ։\n«$1» կոճակին սեղմելով կհիշվի '''միայն''' վերևվի դաշտի տեքստը:",
        "yourtext": "Ձեր տեքստը",
        "storedversion": "Պահված տարբերակ",
        "nonunicodebrowser": "'''ԶԳՈՒՇԱՑՈՒՄ. Ձեր զննարկիչը չունի Յունիկոդ ապահովում։ Հոդվածներ խմբագրելիս բոլոր ոչ-ASCII սիմվլոները փոխարինվելու են իրենց տասնվեցական կոդերով։'''",
        "prefs-files": "Նիշքեր",
        "prefs-custom-css": "Անհատական CSS",
        "prefs-custom-js": "Անհատական JS",
-       "prefs-reset-intro": "Այս էջում հնաարավոր է զրոյացնել ձեր բոլոր նախընրանքները, փոխելով դրանք իլռելայն նախընտրանքների։\nԳործողությունը հաստատելուց հետո, նածընտրանքները հնաարվոր չի լինելու հետ բերել։",
+       "prefs-reset-intro": "Այս էջում հնարավոր է զրոյացնել ձեր բոլոր նախընտրանքները, փոխելով դրանք ի լռելյայն նախընտրանքների։\nԳործողությունը հաստատելուց հետո նախընտրանքները հնարավոր չեն լինելու ետ բերել։",
        "prefs-emailconfirm-label": "Էլ-փոստի վավերացում․",
        "youremail": "Էլեկտրոնային փոստ.",
        "username": "{{GENDER:$1|Մասնակցի անուն}}՝",
        "userrights-groupsmember": "Անդամ է՝ $2-ին",
        "userrights-reason": "Պատճառ.",
        "userrights-changeable-col": "Խմբեր, որոնք դուք կարող եք ձևափոխել",
+       "userrights-unchangeable-col": "Խմբեր, որոնք Դուք չեք կարող փոփոխել",
        "group": "Խումբ.",
        "group-user": "Մասնակիցներ",
        "group-autoconfirmed": "Ավտովավերացված մասնակիցներ",
        "recentchanges-legend-heading": "<strong>Լեգենդ՝</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (տես նաև՝  [[Special:NewPages|նոր էջերի ցանկ]])",
        "recentchanges-submit": "Ցույց տալ",
+       "rcfilters-savedqueries-rename": "Վերանվանել",
+       "rcfilters-savedqueries-remove": "Ջնջել",
+       "rcfilters-savedqueries-new-name-label": "Անուն",
+       "rcfilters-savedqueries-apply-label": "Ստեղծել արագ հղում",
+       "rcfilters-savedqueries-cancel-label": "Չեղարկել",
        "rcfilters-filterlist-title": "Զտիչներ",
        "rcfilters-filter-editsbyself-label": "Ձեր խմբագրումներ",
+       "rcfilters-filtergroup-lastRevision": "Ընթացիկ տարբերակ",
        "rcnotefrom": "Ստորև բերված են փոփոխությունները սկսած՝ '''$2''' (մինչև՝ '''$1''')։",
        "rclistfrom": "Ցույց տալ նոր փոփոխությունները սկսած $3 $2",
        "rcshowhideminor": "$1 չնչին խմբագրումները",
        "rcshowhidecategorization": "$1 էջերի կատեգորիզացիա",
        "rcshowhidecategorization-show": "Ցուցադրել",
        "rcshowhidecategorization-hide": "Թաքցնել",
-       "rclinks": "Ցույց տալ վերջին $1 փոփոխությունները վերջին $2 օրվա ընթացքում<br />$3",
+       "rclinks": "Ցույց տալ վերջին $1 փոփոխությունները վերջին $2 օրվա ընթացքում",
        "diff": "տարբ",
        "hist": "պատմ",
        "hide": "Թաքցնել",
index 510892c..32c7e09 100644 (file)
        "category-file-count-limited": "Le sequente {{PLURAL:$1|file es|$1 files es}} in le categoria actual.",
        "listingcontinuesabbrev": "cont.",
        "index-category": "Paginas indexate",
-       "noindex-category": "Paginas con \"__NOINDEX__\"",
+       "noindex-category": "Paginas non indexate",
        "broken-file-category": "Paginas con ligamines rupte a files",
        "about": "A proposito",
        "article": "Pagina de contento",
        "anontalk": "Discussion",
        "navigation": "Navigation",
        "and": "&#32;e",
-       "qbfind": "Cercar",
-       "qbbrowse": "Foliar",
-       "qbedit": "Modificar",
-       "qbpageoptions": "Iste pagina",
-       "qbmyoptions": "Mi paginas",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Actiones",
        "namespaces": "Spatios de nomines",
        "variants": "Variantes",
        "edit-local": "Modificar description local",
        "create": "Crear",
        "create-local": "Adder description local",
-       "editthispage": "Modificar iste pagina",
-       "create-this-page": "Crear iste pagina",
        "delete": "Deler",
-       "deletethispage": "Deler iste pagina",
-       "undeletethispage": "Restaurar iste pagina",
        "undelete_short": "Restaurar {{PLURAL:$1|un modification|$1 modificationes}}",
        "viewdeleted_short": "Vider {{PLURAL:$1|un modification|$1 modificationes}} delite",
        "protect": "Proteger",
        "protect_change": "cambiar",
-       "protectthispage": "Proteger iste pagina",
        "unprotect": "Cambiar protection",
-       "unprotectthispage": "Cambiar le protection de iste pagina",
        "newpage": "Nove pagina",
-       "talkpage": "Discuter iste pagina",
        "talkpagelinktext": "Discussion",
        "specialpage": "Pagina special",
        "personaltools": "Instrumentos personal",
-       "articlepage": "Vider pagina de contento",
        "talk": "Discussion",
        "views": "Representationes",
        "toolbox": "Instrumentos",
        "tool-link-userrights": "Modificar le gruppos del {{GENDER:$1|usator|usatrice}}",
        "tool-link-userrights-readonly": "Vider gruppos de {{GENDER:$1|usator}}",
        "tool-link-emailuser": "Inviar e-mail a iste {{GENDER:$1|usator|usatrice}}",
-       "userpage": "Vider pagina del usator",
-       "projectpage": "Vider pagina de projecto",
        "imagepage": "Vider le pagina del file",
        "mediawikipage": "Vider pagina de message",
        "templatepage": "Vider pagina de patrono",
        "otherlanguages": "In altere linguas",
        "redirectedfrom": "(Redirigite ab $1)",
        "redirectpagesub": "Pagina de redirection",
-       "redirectto": "Rediriger verso:",
-       "lastmodifiedat": "Ultime modification de iste pagina: le $1 a $2.",
+       "redirectto": "Redirection verso:",
+       "lastmodifiedat": "Iste pagina esseva modificate le plus recentemente le $1 a $2.",
        "viewcount": "Iste pagina ha essite visitate {{PLURAL:$1|un vice|$1 vices}}.",
        "protectedpage": "Pagina protegite",
        "jumpto": "Saltar a:",
        "preview": "Previsualisation",
        "showpreview": "Monstrar previsualisation",
        "showdiff": "Detaliar modificationes",
-       "blankarticle": "<strong>Advertimento:</strong> Le pagina que tu vole crear es vacue.\nSi tu clicca de novo sur \"{{int:savearticle}}\", le pagina essera create sin contento.",
+       "blankarticle": "<strong>Advertimento:</strong> Le pagina que tu vole crear es vacue.\nSi tu clicca de novo sur \"$1\", le pagina essera create sin contento.",
        "anoneditwarning": "<strong>Attention:</strong> Tu non ha aperite un session. Le adresse IP tue essera publicamente visibile si tu face modificationes. Si tu <strong>[$1 aperi un session]</strong> o <strong>[$2 crea un conto]</strong>, le modificationes essera attribuite al nomine de usator tue, inter altere avantages.",
        "anonpreviewwarning": "''Tu non ha aperite un session. Salveguardar registrara tu adresse IP in le historia de modificationes de iste pagina.''",
-       "missingsummary": "'''Rememoration:''' Tu non ha specificate un summario del modification.\nSi tu clicca super \"{{int:savearticle}}\" de novo, le modification essera publicate sin summario.",
-       "selfredirect": "<strong>Attention:</strong> Tu redirige iste pagina verso se mesme.\nTu pote haber specificate le mal destination pro le redirection, o tu modifica forsan le mal pagina.\nSi tu clicca sur \"{{int:savearticle}}\" de novo, le redirection essera create in despecto de isto.",
+       "missingsummary": "<strong>Rememoration:</strong> Tu non ha scribite un summario de modification.\nSi tu clicca sur \"$1\" de novo, le modification essera publicate sin summario.",
+       "selfredirect": "<strong>Attention:</strong> Tu redirige iste pagina verso se mesme.\nTu pote haber specificate le mal destination pro le redirection, o tu modifica forsan le mal pagina.\nSi tu clicca sur \"$1\" de novo, le redirection essera create in despecto de isto.",
        "missingcommenttext": "Per favor entra un commento infra.",
-       "missingcommentheader": "<strong>Rememoration:</strong> Tu non ha fornite un subjecto pro iste commento.\nSi tu clicca super \"{{int:savearticle}}\" de novo, le modification essera publicate sin subjecto.",
+       "missingcommentheader": "<strong>Rememoration:</strong> Tu non ha fornite un subjecto pro iste commento.\nSi tu clicca super \"$1\" de novo, le modification essera publicate sin subjecto.",
        "summary-preview": "Previsualisation del summario de modification:",
        "subject-preview": "Previsualisation del subjecto:",
        "previewerrortext": "Un error ha occurrite durante le tentativa de previsualisar le cambiamentos.",
        "editingsection": "Modification de $1 (section)",
        "editingcomment": "Modification de $1 (nove section)",
        "editconflict": "Conflicto de modification: $1",
-       "explainconflict": "Alicuno ha modificate iste pagina post que tu\nha comenciate a modificar lo.\nLe area de texto superior contine le texto del pagina como illo existe actualmente.\nTu modificationes se monstra in le area de texto inferior.\nTu debera incorporar tu modificationes in le texto existente.\n'''Solmente''' le texto del area superior essera publicate quando tu clicca super \"{{int:savearticle}}\".",
+       "explainconflict": "Alicuno ha modificate iste pagina post que tu\nha comenciate a modificar lo.\nLe area de texto superior contine le texto del pagina como illo existe actualmente.\nTu modificationes se monstra in le area de texto inferior.\nTu debera incorporar tu modificationes in le texto existente.\n<strong>Solmente</strong> le texto del area superior essera publicate quando tu clicca super \"$1\".",
        "yourtext": "Tu texto",
        "storedversion": "Version immagazinate",
        "nonunicodebrowser": "'''Attention: Tu utilisa un navigator non compatibile con le characteres Unicode.'''\nUn systema de modification alternative ha essite activate, que te permitte modificar articulos con securitate: le characteres non ASCII apparera in le quadro de modification como codices hexadecimal.",
        "readonlywarning": "<strong>Attention: Le base de datos ha essite blocate pro mantenentia. Tu non pote salveguardar tu modificationes in iste momento.</strong>\nNos recommenda copiar e collar le texto in un file e salveguardar lo pro plus tarde.\n\nLe administrator de systema qui ha blocate le base de datos ha fornite iste explication: $1",
        "protectedpagewarning": "'''Attention:  Iste pagina ha essite protegite de sorta que solmente usatores con privilegios de administrator pote modificar lo.''' Le ultime entrata del registro es fornite hic infra pro referentia:",
        "semiprotectedpagewarning": "'''Nota:''' Iste pagina ha essite protegite de maniera que solmente usatores registrate pote modificar lo. Le ultime entrata del registro es fornite hic infra pro referentia:",
-       "cascadeprotectedwarning": "<strong>Attention:</strong> Iste pagina ha essite protegite de maniera que solmente usatores con privilegios de administrator pote modificar lo, perque illo es transcludite in le sequente {{PLURAL:$1|pagina|paginas}} protegite in cascada:",
+       "cascadeprotectedwarning": "<strong>Attention:</strong> Iste pagina ha essite protegite de maniera que solmente usatores con [[Special:ListGroupRights|certe privilegios]] pote modificar lo, perque illo es transcludite in le sequente {{PLURAL:$1|pagina|paginas}} protegite in cascada:",
        "titleprotectedwarning": "'''Attention:  Iste pagina ha essite protegite de maniera que [[Special:ListGroupRights|permissiones specific]] es requirite pro crear lo.''' Le ultime entrata del registro es fornite hic infra pro referentia:",
        "templatesused": "{{PLURAL:$1|Patrono|Patronos}} usate in iste pagina:",
        "templatesusedpreview": "{{PLURAL:$1|Patrono|Patronos}} usate in iste previsualisation:",
        "search-file-match": "(corresponde al contento del file)",
        "search-suggest": "Esque tu vole dicer: $1",
        "search-rewritten": "Es monstrate le resultatos pro $1. Cerca $2 in su loco.",
-       "search-interwiki-caption": "Projectos fratres",
+       "search-interwiki-caption": "Resultatos de projectos affin",
        "search-interwiki-default": "Resultatos de $1:",
        "search-interwiki-more": "(plus)",
        "search-interwiki-more-results": "plus resultatos",
        "userrights-expiry-options": "1 die:1 day,1 septimana:1 week,1 mense:1 month,3 menses:3 months,6 menses:6 months,1 anno:1 year",
        "userrights-invalid-expiry": "Le hora de expiration pro le gruppo \"$1\" es invalide.",
        "userrights-expiry-in-past": "Le hora de expiration pro le gruppo \"$1\" es in le passato.",
-       "userrights-cannot-shorten-expiry": "Tu non pote accurtar le tempore de expiration del gruppo \"$1\". Solmente usatores con le permission de adder e remover iste gruppo pote accurtar tempores de expiration.",
+       "userrights-cannot-shorten-expiry": "Tu non pote accurtar le tempore de expiration del appertinentia al gruppo \"$1\". Solmente usatores con le permission de adder e remover iste gruppo pote accurtar tempores de expiration.",
        "userrights-conflict": "Conflicto inter cambiamentos de derectos de usator! Per favor revide e confirma tu cambiamentos.",
        "group": "Gruppo:",
        "group-user": "Usatores",
        "right-deleterevision": "Deler e restaurar versiones specific de paginas",
        "right-deletedhistory": "Vider entratas de historia delite, sin lor texto associate",
        "right-deletedtext": "Vider texto delite e differentias inter versiones delite",
-       "right-browsearchive": "Cercar in paginas delite",
+       "right-browsearchive": "Cercar paginas delite",
        "right-undelete": "Restaurar un pagina",
        "right-suppressrevision": "Vider, celar e revelar versiones specific de paginas de qualcunque usator",
        "right-viewsuppressed": "Vider versiones celate de qualcunque usator",
        "action-deletelogentry": "deler entratas de registro",
        "action-deletedhistory": "vider le historia delite de un pagina",
        "action-deletedtext": "vider le texto de un version delite",
-       "action-browsearchive": "cercar in paginas delite",
+       "action-browsearchive": "cercar paginas delite",
        "action-undelete": "restaurar paginas",
        "action-suppressrevision": "revider e restaurar versiones celate",
        "action-suppressionlog": "vider iste registro private",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Monstrar",
        "rcfilters-activefilters": "Filtros active",
+       "rcfilters-quickfilters": "Filtros salveguardate",
+       "rcfilters-quickfilters-placeholder-title": "Nulle ligamine salveguardate ancora",
+       "rcfilters-quickfilters-placeholder-description": "Pro salveguardar tu filtros pro uso posterior, clicca sur le icone marcapaginas in le area Filtro Active hic infra.",
+       "rcfilters-savedqueries-defaultlabel": "Filtros salveguardate",
+       "rcfilters-savedqueries-rename": "Renominar",
+       "rcfilters-savedqueries-setdefault": "Predefinir",
+       "rcfilters-savedqueries-unsetdefault": "Remover predefinition",
+       "rcfilters-savedqueries-remove": "Remover",
+       "rcfilters-savedqueries-new-name-label": "Nomine",
+       "rcfilters-savedqueries-apply-label": "Salveguardar filtro",
+       "rcfilters-savedqueries-cancel-label": "Cancellar",
+       "rcfilters-savedqueries-add-new-title": "Salveguardar le configuration actual del filtro",
        "rcfilters-restore-default-filters": "Restaurar filtros predefinite",
        "rcfilters-clear-all-filters": "Rader tote le filtros",
        "rcfilters-search-placeholder": "Filtrar le modificationes recente (naviga o comencia a scriber)",
        "rcfilters-filterlist-title": "Filtros",
        "rcfilters-filterlist-whatsthis": "Que es isto?",
        "rcfilters-filterlist-feedbacklink": "Da nos tu opinion sur le nove filtros (in beta)",
-       "rcfilters-highlightbutton-title": "Accentuar resultatos",
+       "rcfilters-highlightbutton-title": "Colorar le resultatos",
        "rcfilters-highlightmenu-title": "Selige un color",
-       "rcfilters-highlightmenu-help": "Selige un color pro accentuar iste proprietate",
+       "rcfilters-highlightmenu-help": "Selige un color pro illuminar iste proprietate",
        "rcfilters-filterlist-noresults": "Nulle filtro trovate",
        "rcfilters-noresults-conflict": "Nulle resultato trovate perque le criterios de recerca es in conflicto",
-       "rcfilters-state-message-subset": "Iste filtro non ha effecto perque su resultatos es includite in illos del sequente {{PLURAL:$2|filtro|filtros}} plus comprehensive (essaya accentuar pro poter distinguer lo): $1",
+       "rcfilters-state-message-subset": "Iste filtro non ha effecto perque su resultatos es includite in illos del sequente {{PLURAL:$2|filtro|filtros}} plus comprehensive (essaya colorar pro poter distinguer lo): $1",
        "rcfilters-state-message-fullcoverage": "Seliger tote le filtros in un gruppo equivale seliger nulle, dunque iste filtro non ha effecto. Le gruppo include: $1",
        "rcfilters-filtergroup-registration": "Registration del usator",
        "rcfilters-filter-registered-label": "Registrate",
        "rcfilters-filter-unregistered-label": "Non registrate",
        "rcfilters-filter-unregistered-description": "Redactores que non ha aperite session.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Iste filtro es in conflicto con le sequente {{PLURAL:$2|filtro|filtros}} de Experientia, le {{PLURAL:$2|qual|quales}} trova solmente usatores registrate: $1",
-       "rcfilters-filtergroup-authorship": "Autor del modificationes",
-       "rcfilters-filter-editsbyself-label": "Tu proprie modificationes",
-       "rcfilters-filter-editsbyself-description": "Modificationes per te.",
-       "rcfilters-filter-editsbyother-label": "Modificationes per alteres",
-       "rcfilters-filter-editsbyother-description": "Modificationes create per altere usatores (non te).",
+       "rcfilters-filtergroup-authorship": "Autor del contributiones",
+       "rcfilters-filter-editsbyself-label": "Modificationes facite per te",
+       "rcfilters-filter-editsbyself-description": "Tu proprie contributiones.",
+       "rcfilters-filter-editsbyother-label": "Modificationes facite per alteres",
+       "rcfilters-filter-editsbyother-description": "Tote le modificationes excepte le tues.",
        "rcfilters-filtergroup-userExpLevel": "Nivello de experientia (solmente pro usatores registrate)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Filtros de Experientia trova solmente usatores registrate. Iste filtro es dunque in conflicto con le filtro \"Non registrate\".",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Le filtro \"Non registrate\" es in conflicto con un o plure filtros \"Experientia\", le quales trova solmente usatores registrate. Le filtros in conflicto es marcate in le area \"Filtros active\" supra.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Novicios",
        "rcfilters-filter-user-experience-level-newcomer-description": "Minus de 10 modificationes e 4 dies de activitate.",
        "rcfilters-filter-user-experience-level-learner-label": "Apprentisses",
-       "rcfilters-filter-user-experience-level-learner-description": "Plus dies de activitate e modificationes que \"Novicios\" ma minus que \"Usatores con experientia\".",
+       "rcfilters-filter-user-experience-level-learner-description": "Plus experientia que \"Novicios\" ma minus que \"Usatores con experientia\".",
        "rcfilters-filter-user-experience-level-experienced-label": "Usatores con experientia",
        "rcfilters-filter-user-experience-level-experienced-description": "Plus de 30 dies de activitate e 500 modificationes.",
        "rcfilters-filtergroup-automated": "Contributiones automatisate",
        "rcfilters-filter-minor-description": "Modificationes que le autor ha marcate como minor.",
        "rcfilters-filter-major-label": "Modificationes non minor",
        "rcfilters-filter-major-description": "Modificationes non marcate como minor.",
+       "rcfilters-filtergroup-watchlist": "Paginas sub observation",
+       "rcfilters-filter-watchlist-watched-label": "In observatorio",
+       "rcfilters-filter-watchlist-watched-description": "Modificationes de paginas in tu observatorio.",
+       "rcfilters-filter-watchlist-watchednew-label": "Modificationes nove in observatorio",
+       "rcfilters-filter-watchlist-watchednew-description": "Modificationes de paginas sub observation que tu non ha visitate post que iste modificationes ha essite facite.",
+       "rcfilters-filter-watchlist-notwatched-label": "Non in observatorio",
+       "rcfilters-filter-watchlist-notwatched-description": "Toto excepte modificationes de paginas in tu observatorio.",
        "rcfilters-filtergroup-changetype": "Typo de cambiamento",
        "rcfilters-filter-pageedits-label": "Modificationes de paginas",
        "rcfilters-filter-pageedits-description": "Modificationes de contento wiki, discussiones, descriptiones de categorias…",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Le filtro \"Modificationes minor\" es in conflicto con un o plure filtros \"Typo de cambiamento\", perque certe typos de cambiamento non pote esser assignate como \"minor\". Le filtros in conflicto es marcate in le area \"Filtros active\" supra.",
        "rcfilters-hideminor-conflicts-typeofchange": "Certe typos de cambiamento non pote esser assignate como \"minor\", dunque iste filtro es in conflicto con le sequente filtros \"Typo de cambiamento\": $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Iste filtro \"Typo de cambiamento\" es in conflicto con le filtro \"Modificationes minor\". Certe typos de cambiamento non pote esser assignate como \"minor\".",
+       "rcfilters-filtergroup-lastRevision": "Ultime version",
+       "rcfilters-filter-lastrevision-label": "Ultime version",
+       "rcfilters-filter-lastrevision-description": "Le modification le plus recente de un pagina.",
+       "rcfilters-filter-previousrevision-label": "Versiones precedente",
+       "rcfilters-filter-previousrevision-description": "Tote le modificationes que non es le modification le plus recente de un pagina.",
+       "rcfilters-filter-excluded": "Excludite",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:non</strong> $1",
+       "rcfilters-view-tags": "Etiquettas",
        "rcnotefrom": "Ecce le {{PLURAL:$5|modification|modificationes}} a partir del <strong>$3 a $4</strong> (usque a <strong>$1</strong> entratas monstrate).",
+       "rclistfromreset": "Reinitialisar selection de data",
        "rclistfrom": "Monstrar nove modificationes a partir del $3 a $2",
        "rcshowhideminor": "$1 modificationes minor",
        "rcshowhideminor-show": "Monstrar",
        "rcshowhidecategorization": "$1 le categorisation de paginas",
        "rcshowhidecategorization-show": "Monstrar",
        "rcshowhidecategorization-hide": "Celar",
-       "rclinks": "Monstrar le $1 ultime modificationes in le $2 ultime dies<br />$3",
+       "rclinks": "Monstrar le $1 ultime modificationes in le $2 ultime dies",
        "diff": "diff",
        "hist": "hist",
        "hide": "Celar",
        "php-uploaddisabledtext": "Le incargamento de files PHP es disactivate. Per favor verifica le configuration file_uploads.",
        "uploadscripted": "Iste file contine codice de HTML o de script que pote esser interpretate erroneemente per un navigator del web.",
        "upload-scripted-pi-callback": "Non pote incargar un file que contine instructiones pro le tractamento de folios de stilo XML.",
+       "upload-scripted-dtd": "Non es possibile incargar files SVG que contine un declaration DTD non standard.",
        "uploaded-script-svg": "Un elemento de script \"$1\" se trova in le file SVG incargate.",
        "uploaded-hostile-svg": "Certe codice CSS insecur se trova in le elemento de stilo del file SVG incargate.",
        "uploaded-event-handler-on-svg": "Fixar attributos de gestion de eventos <code>$1=\"$2\"</code> non es permittite in files SVG.",
        "enotif_body_intro_moved": "Le pagina $1 de {{SITENAME}} ha essite {{GENDER:$2|renominate}} le $PAGEEDITDATE per $2, vide $3 pro le version actual.",
        "enotif_body_intro_restored": "Le pagina $1 de {{SITENAME}} ha essite {{GENDER:$2|restaurate}} le $PAGEEDITDATE per $2, vide $3 pro le version actual.",
        "enotif_body_intro_changed": "Le pagina $1 de {{SITENAME}} ha essite {{GENDER:$2|modificate}} le $PAGEEDITDATE per $2, vide $3 pro le version actual.",
-       "enotif_lastvisited": "Vide $1 pro tote le modificationes depost tu ultime visita.",
-       "enotif_lastdiff": "Vide $1 pro revider iste modification.",
+       "enotif_lastvisited": "Pro tote le modificationes facite depost tu ultime visita, vide $1",
+       "enotif_lastdiff": "Pro revider iste modification, vide $1",
        "enotif_anon_editor": "usator anonyme $1",
        "enotif_body": "Car $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nSummario del redactor: $PAGESUMMARY $PAGEMINOREDIT\n\nPro contactar le redactor:\nmail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nTu non recipera altere notificationes de activitate si tu non visita iste pagina con session aperte. Tu pote anque reinitialisar le optiones de notification pro tote le paginas in tu observatorio.\n\nLe systema de notification de {{SITENAME}}, a tu servicio\n\n-- \nPro configurar le notification per e-mail, visita\n{{canonicalurl:{{#special:Preferences}}}}\n\nPro configurar le observatorio, visita\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPro retirar le pagina de tu observatorio, visita\n$UNWATCHURL\n\nFeedback e ulterior assistentia:\n$HELPPAGE",
        "created": "create",
        "cannotundelete": "Le restauration ha partial- o totalmente fallite:\n$1",
        "undeletedpage": "'''$1 ha essite restaurate'''\n\nConsulta le [[Special:Log/delete|registro de deletiones]] pro un lista de deletiones e restaurationes recente.",
        "undelete-header": "Vide [[Special:Log/delete|le registro de deletiones]] pro un lista de paginas recentemente delite.",
-       "undelete-search-title": "Cercar in paginas delite",
+       "undelete-search-title": "Cercar paginas delite",
        "undelete-search-box": "Cercar paginas delite",
        "undelete-search-prefix": "Monstrar paginas que comencia con:",
        "undelete-search-submit": "Cercar",
        "sp-contributions-uploads": "incargamentos",
        "sp-contributions-logs": "registros",
        "sp-contributions-talk": "discussion",
-       "sp-contributions-userrights": "gestion de derectos de usator",
+       "sp-contributions-userrights": "gerer le derectos del {{GENDER:$1|usator}}",
        "sp-contributions-blocked-notice": "Iste usator es actualmente blocate. Le ultime entrata del registro de blocadas es reproducite ci infra pro information:",
        "sp-contributions-blocked-notice-anon": "Iste adresse IP es actualmente blocate.\nLe ultime entrata del registro de blocadas es reproducite hic infra pro information:",
        "sp-contributions-search": "Cercar contributiones",
        "ipbexpiry": "Expiration:",
        "ipbreason": "Motivo:",
        "ipbreason-dropdown": "*Motivos frequente pro blocar\n** Insertion de informationes false\n** Elimination de contento de paginas\n** Ligamines ''spam'' verso sitos externe\n** Insertion de nonsenso/absurditates in paginas\n** Comportamento intimidatori/molestation\n** Abuso de contos multiple\n** Nomine de usator inacceptabile",
-       "ipb-hardblock": "Impedir le usatores authenticate de facer modificationes ab iste adresse IP",
+       "ipb-hardblock": "Impedir que usatores authenticate face modificationes ab iste adresse IP",
        "ipbcreateaccount": "Impedir creation de contos",
        "ipbemailban": "Impedir que le usator invia e-mail",
        "ipbenableautoblock": "Blocar automaticamente le adresse IP usate le plus recentemente per iste usator, e omne IPs successive desde le quales ille/-a tenta facer modificationes",
        "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",
        "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",
+       "ipb-disableusertalk": "Impedir que iste usator modifica su proprie pagina de discussion durante que ille es blocate",
        "ipb-change-block": "Reblocar le usator con iste configurationes",
        "ipb-confirm": "Confirmar blocada",
        "badipaddress": "Adresse IP mal formate.",
        "unblocked-id": "Le blocada $1 ha essite removite.",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] ha essite disblocate.",
        "blocklist": "Usatores blocate",
+       "autoblocklist": "Autoblocadas",
+       "autoblocklist-submit": "Cercar",
+       "autoblocklist-legend": "Listar autoblocadas",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Autoblocada|Autoblocadas}} local",
+       "autoblocklist-total-autoblocks": "Numero total de autoblocadas: $1",
+       "autoblocklist-empty": "Le lista de autoblocadas es vacue.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Un altere autoblocada|Altere autoblocadas}}",
        "ipblocklist": "Usatores blocate",
        "ipblocklist-legend": "Cercar un usator blocate",
        "blocklist-userblocks": "Celar blocadas de conto",
        "tooltip-pt-mycontris": "Lista de {{GENDER:|tu}} contributiones",
        "tooltip-pt-anoncontribs": "Un lista de modificationes facite per iste adresse IP",
        "tooltip-pt-login": "Nos recommenda que tu te authentica, ma non es obligatori.",
+       "tooltip-pt-login-private": "Tu debe aperir session pro usar iste wiki",
        "tooltip-pt-logout": "Clauder session",
        "tooltip-pt-createaccount": "Tu es incoragiate a crear un conto e aperir session; totevia, non es obligatori",
        "tooltip-ca-talk": "Discussiones a proposito del pagina de contento",
        "newimages-legend": "Filtro",
        "newimages-label": "Nomine del file (o un parte de illo):",
        "newimages-user": "Adresse de IP o nomine de usator",
+       "newimages-newbies": "Monstrar contributiones de nove contos solmente",
        "newimages-showbots": "Monstrar files incargate per robots",
        "newimages-hidepatrolled": "Celar le files incargate patruliate",
+       "newimages-mediatype": "Typo de multimedia:",
        "noimages": "Nihil a vider.",
        "gallery-slideshow-toggle": "Alternar miniaturas",
        "ilsubmit": "Cercar",
        "confirmrecreate": "Le usator [[User:$1|$1]] ([[User talk:$1|discussion]]) ha {{GENDER:$1|delite}} iste pagina post que tu comenciava a modificar lo, dante le motivo:\n: <em>$2</em>\nPer favor confirma que tu realmente vole recrear iste pagina.",
        "confirmrecreate-noreason": "Le usator [[User:$1|$1]] ([[User talk:$1|discussion]]) ha {{GENDER:$1|delite}} iste pagina post que tu comenciava a modificar lo. Per favor confirma que tu realmente vole recrear iste pagina.",
        "recreate": "Recrear",
+       "confirm-purge-title": "Purgar iste pagina",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Rader le cache de iste pagina?",
        "confirm-purge-bottom": "Purgar un pagina vacua le cache e fortia que appare le version le plus recente.",
        "tags-create-reason": "Motivo:",
        "tags-create-submit": "Crear",
        "tags-create-no-name": "Tu debe specificar le nomine del etiquetta.",
-       "tags-create-invalid-chars": "Le nomines de etiquetta non pote continer commas (<code>,</code>) o barras oblique (<code>/</code>).",
+       "tags-create-invalid-chars": "Le nomines de etiquetta non pote continer commas (<code>,</code>), barras vertical (<code>|</code>) o barras oblique (<code>/</code>).",
        "tags-create-invalid-title-chars": "Le nomines de etiquetta non pote continer characteres que non pote esser usate in titulos de pagina.",
        "tags-create-already-exists": "Le etiquetta \"$1\" jam existe.",
        "tags-create-warnings-above": "Le sequente {{PLURAL:$2|advertimento|advertimentos}} ha essite incontrate durante le tentativa de crear le etiquetta \"$1\":",
        "htmlform-user-not-valid": "<strong>$1</strong> non es un nomine de usator valide.",
        "logentry-delete-delete": "$1 {{GENDER:$2|deleva}} le pagina $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|deleva}} le redirection $3 superscribente lo",
-       "logentry-delete-restore": "$1 {{GENDER:$2|restaurava}} le pagina $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|restaurava}} le pagina $3 ($4)",
+       "logentry-delete-restore-nocount": "$1 {{GENDER:$2|restaurava}} le pagina $3",
+       "restore-count-revisions": "{{PLURAL:$1|1 version|$1 versiones}}",
+       "restore-count-files": "{{PLURAL:$1|1 file|$1 files}}",
        "logentry-delete-event": "$1 {{GENDER:$2|cambiava}} le visibilitate de {{PLURAL:$5|un entrata|$5 entratas}} de registro in $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|cambiava}} le visibilitate de {{PLURAL:$5|un version|$5 versiones}} del pagina $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|cambiava}} le visibilitate de entratas de registro in $3",
        "special-characters-group-thai": "Thailandese",
        "special-characters-group-lao": "Laotiano",
        "special-characters-group-khmer": "Cambodgiano",
+       "special-characters-group-canadianaboriginal": "Aborigine canadian",
        "special-characters-title-endash": "lineetta en",
        "special-characters-title-emdash": "lineetta em",
        "special-characters-title-minus": "signo minus",
        "mw-widgets-titleinput-description-redirect": "redirection a $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Adder un categoria…",
        "mw-widgets-usersmultiselect-placeholder": "Adder plus...",
+       "date-range-from": "A partir del:",
+       "date-range-to": "Usque al:",
        "sessionmanager-tie": "Impossibile combinar plure typos de authentication de requesta: $1.",
        "sessionprovider-generic": "sessiones $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sessiones basate sur cookies",
        "restrictionsfield-help": "Un adresse IP o intervallo CIDR per linea. Pro activar toto, usa:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "version $1",
        "pageid": "ID de pagina $1",
-       "rawhtml-notallowed": "Etiquettas &lt;html&gt; non pote esser usate foras de paginas normal."
+       "rawhtml-notallowed": "Etiquettas &lt;html&gt; non pote esser usate foras de paginas normal.",
+       "gotointerwiki": "Quitar {{SITENAME}}",
+       "gotointerwiki-invalid": "Le titulo specificate non es valide.",
+       "gotointerwiki-external": "Tu es sur le puncto de quitar {{SITENAME}} pro visitar [[$2]], un sito web separate.\n\n'''[$1 Continuar a $1]'''",
+       "undelete-cantedit": "Tu non pote restaurar iste pagina perque tu non ha le permission de modificar iste pagina.",
+       "undelete-cantcreate": "Tu non pote restaurar iste pagina perque il non ha pagina existente con iste nomine e tu non ha le permission de crear lo.",
+       "pagedata-title": "Datos de pagina",
+       "pagedata-text": "Iste pagina forni un interfacie de datos a paginas. Forni le titulo del pagina in le URL, usante le syntaxe de subpaginas.\n* Le negotiation de contento depende del capite \"Accept\" de tu cliente. Isto significa que le datos del pagina essera fornite in le formato que tu cliente prefere.",
+       "pagedata-not-acceptable": "Nulle formato correspondente trovate. Typos MIME supportate: $1",
+       "pagedata-bad-title": "Titulo invalide: $1."
 }
index 9078e93..cfd6bdf 100644 (file)
@@ -52,7 +52,8 @@
                        "Irus",
                        "Presidenvolksraad",
                        "Hidayatsrf",
-                       "MF-Warburg"
+                       "MF-Warburg",
+                       "Rachmat04"
                ]
        },
        "tog-underline": "Garis bawahi pranala:",
        "anontalk": "Pembicaraan",
        "navigation": "Navigasi",
        "and": "&#32;dan",
-       "qbfind": "Pencarian",
-       "qbbrowse": "Navigasi",
-       "qbedit": "Sunting",
-       "qbpageoptions": "Halaman ini",
-       "qbmyoptions": "Halaman saya",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Tindakan",
        "namespaces": "Ruang nama",
        "variants": "Varian",
        "edit-local": "Sunting deskripsi lokal",
        "create": "Buat",
        "create-local": "Tambah deskripsi lokal",
-       "editthispage": "Sunting halaman ini",
-       "create-this-page": "Buat halaman ini",
        "delete": "Hapus",
-       "deletethispage": "Hapus halaman ini",
-       "undeletethispage": "Batalkan penghapusan",
        "undelete_short": "Batal hapus {{PLURAL:$1|$1 suntingan}}",
        "viewdeleted_short": "Lihat {{PLURAL:$1|$1 suntingan}} yang dihapus",
        "protect": "Lindungi",
        "protect_change": "ubah",
-       "protectthispage": "Lindungi halaman ini",
        "unprotect": "Ubah perlindungan",
-       "unprotectthispage": "Ubah perlindungan halaman ini",
        "newpage": "Halaman baru",
-       "talkpage": "Bicarakan halaman ini",
        "talkpagelinktext": "bicara",
        "specialpage": "Halaman istimewa",
        "personaltools": "Perkakas pribadi",
-       "articlepage": "Lihat halaman isi",
        "talk": "Pembicaraan",
        "views": "Tampilan",
        "toolbox": "Perkakas",
        "tool-link-userrights": "Simpan kelompok {{GENDER:$1|pengguna}}",
        "tool-link-userrights-readonly": "Lihat kelompok {{GENDER:$1|pengguna}}",
        "tool-link-emailuser": "Kirim surel ke {{GENDER:$1|pengguna}} ini",
-       "userpage": "Lihat halaman pengguna",
-       "projectpage": "Lihat halaman proyek",
        "imagepage": "Lihat halaman berkas",
        "mediawikipage": "Lihat halaman pesan sistem",
        "templatepage": "Lihat halaman templat",
        "preview": "Pratayang",
        "showpreview": "Lihat pratayang",
        "showdiff": "Lihat perubahan",
-       "blankarticle": "<strong>Peringatan:</strong> Halaman yang akan Anda buat tidak berisi apa-apa.\nJika Anda mengklik \"{{int:savearticle}}\" sekali lagi, halaman ini akan dibuat tanpa ada isi.",
+       "blankarticle": "<strong>Peringatan:</strong> Halaman yang akan Anda buat tidak berisi apa-apa.\nJika Anda mengklik \"$1\" sekali lagi, halaman ini akan dibuat tanpa ada isi.",
        "anoneditwarning": "<strong>Peringatan:</strong> Anda sedang tidak masuk log. Alamat IP Anda akan terlihat oleh publik jika Anda melakukan suatu perubahan. Jika Anda <strong>[$1 masuk log]</strong> atau <strong>[$2 membuat akun]</strong>, suntingan Anda akan diatribusikan kepada nama pengguna Anda, beserta berbagai keuntungan lainnya.",
        "anonpreviewwarning": "''Anda belum masuk log. Menyimpan halaman akan menyebabkan alamat IP Anda tercatat pada riwayat suntingan laman ini.''",
        "missingsummary": "'''Peringatan:''' Anda tidak memasukkan ringkasan penyuntingan. Jika Anda kembali menekan tombol Simpan, suntingan Anda akan disimpan tanpa ringkasan penyuntingan.",
-       "selfredirect": "<strong>Peringatan:</strong> Anda mengalihkan halaman ini kembali ke halaman semula.\nAnda bisa jadi telah memberikan tujuan pengalihan yang salah, atau telah menyunting halaman yang salah.\nJika Anda mengeklik \"{{int:savearticle}}\" sekali lagi, halaman pengalihan akan dibuat.",
+       "selfredirect": "<strong>Peringatan:</strong> Anda mengalihkan halaman ini kembali ke halaman semula.\nAnda bisa jadi telah memberikan tujuan pengalihan yang salah, atau telah menyunting halaman yang salah.\nJika Anda mengeklik \"$1\" sekali lagi, halaman pengalihan akan dibuat.",
        "missingcommenttext": "Harap masukkan komentar di bawah ini.",
-       "missingcommentheader": "'''Peringatan:''' Anda belum memberikan subjek atau judul untuk komentar Anda. Jika Anda kembali menekan \"{{int:savearticle}}\", suntingan Anda akan disimpan tanpa komentar tersebut.",
+       "missingcommentheader": "'''Peringatan:''' Anda belum memberikan subjek atau judul untuk komentar Anda. Jika Anda kembali menekan \"$1\", suntingan Anda akan disimpan tanpa komentar tersebut.",
        "summary-preview": "Pratayang ringkasan suntingan:",
        "subject-preview": "Pratayang subjek:",
        "previewerrortext": "Kesalahan terjadi saat mencoba memperlihatkan pratayang perubahan Anda.",
        "editingsection": "Menyunting $1 (bagian)",
        "editingcomment": "Menyunting $1 (bagian baru)",
        "editconflict": "Konflik penyuntingan: $1",
-       "explainconflict": "Orang lain telah menyunting halaman ini sejak Anda mulai menyuntingnya.\nBagian atas teks ini mengandung teks halaman saat ini.\nPerubahan yang Anda lakukan ditunjukkan pada bagian bawah teks.\nAnda hanya perlu menggabungkan perubahan Anda dengan teks yang telah ada.\n'''Hanya''' teks pada bagian atas halamanlah yang akan disimpan apabila Anda menekan \"{{int:savearticle}}\".",
+       "explainconflict": "Orang lain telah menyunting halaman ini sejak Anda mulai menyuntingnya.\nBagian atas teks ini mengandung teks halaman saat ini.\nPerubahan yang Anda lakukan ditunjukkan pada bagian bawah teks.\nAnda hanya perlu menggabungkan perubahan Anda dengan teks yang telah ada.\n'''Hanya''' teks pada bagian atas halamanlah yang akan disimpan apabila Anda menekan \"$1\".",
        "yourtext": "Teks Anda",
        "storedversion": "Versi tersimpan",
        "nonunicodebrowser": "'''Peringatan: Penjelajah web Anda tidak mendukung unicode.'''\nTelah terdapat sebuah solusi agar Anda dapat menyunting halaman dengan aman: karakter non-ASCII akan muncul dalam kotak edit sebagai kode heksadesimal.",
        "readonlywarning": "'''Peringatan: Basis data sedang dikunci karena pemeliharaan, sehingga saat ini Anda tidak dapat menyimpan hasil suntingan Anda.'''\nAnda mungkin perlu menyalin teks suntingan Anda ini dan menyimpannya ke sebuah berkas teks dan memuatkannya lagi kemudian.\n\nPengurus yang mengunci basis data memberikan penjelasan berikut: $1",
        "protectedpagewarning": "'''Peringatan: Halaman ini sedang dilindungi sehingga hanya pengguna dengan hak akses pengurus yang dapat menyuntingnya.'''\nEntri catatan terakhir disediakan di bawah untuk referensi:",
        "semiprotectedpagewarning": "'''Catatan:''' Halaman ini sedang dilindungi, sehingga hanya pengguna terdaftar yang bisa menyuntingnya.\nEntri catatan terakhir disediakan di bawah untuk referensi:",
-       "cascadeprotectedwarning": "'''Peringatan:''' Halaman ini sedang dilindungi sehingga hanya pengguna dengan hak akses pengurus saja yang dapat menyuntingnya karena disertakan dalam {{PLURAL:$1|halaman|halaman-halaman}} berikut yang telah dilindungi dengan opsi 'pelindungan runtun':",
+       "cascadeprotectedwarning": "<strong>Peringatan:</strong> Halaman ini telah dilindungi sehingga hanya pengguna dengan [[Special:ListGroupRights|hak akses tertentu]] saja dapat menyuntingnya karena ditransklusikan dalam {{PLURAL:$1|halaman|halaman-halaman}} yang dilindungi runtun:",
        "titleprotectedwarning": "'''Peringatan: Halaman ini telah dilindungi sehingga diperlukan [[Special:ListGroupRights|hak khusus]] untuk membuatnya.'''\nEntri catatan terakhir disediakan di bawah untuk referensi:",
        "templatesused": "{{PLURAL:$1|Templat|Templat}} yang digunakan di halaman ini:",
        "templatesusedpreview": "{{PLURAL:$1|Templat|Templat}} yang digunakan di pratayang ini:",
        "post-expand-template-argument-warning": "Peringatan: Halaman ini mengandung setidaknya satu argumen templat dengan ukuran ekspansi yang terlalu besar. Argumen-argumen tersebut telah diabaikan.",
        "post-expand-template-argument-category": "Halaman dengan argumen templat yang diabaikan",
        "parser-template-loop-warning": "Hubungan berulang templat terdeteksi: [[$1]]",
+       "template-loop-category": "Halaman dengan templat berulang",
+       "template-loop-category-desc": "Halaman ini mengandung templat melingkar, yaitu templat yang memanggil dirinya sendiri secara bolak-balik.",
        "parser-template-recursion-depth-warning": "Limit kedalaman hubungan berulang templat terlampaui ($1)",
        "language-converter-depth-warning": "Batas kedalaman pengonversi bahasa terlampaui ($1)",
        "node-count-exceeded-category": "Halaman dimana hitungan-node terlampaui",
        "page_first": "pertama",
        "page_last": "terakhir",
        "histlegend": "Pilih dua tombol radio lalu tekan tombol ''bandingkan'' untuk membandingkan versi. Klik suatu tanggal untuk melihat versi halaman pada tanggal tersebut.<br />(skr) = perbedaan dengan versi sekarang, (akhir) = perbedaan dengan versi sebelumnya, '''k''' = suntingan kecil, '''b''' = suntingan bot, → = suntingan bagian, ← = ringkasan otomatis",
-       "history-fieldset-title": "Menjelajah versi terdahulu",
-       "history-show-deleted": "Hanya yang dihapus",
+       "history-fieldset-title": "Cari revisi",
+       "history-show-deleted": "Revisi yang dihapus saja",
        "histfirst": "terlama",
        "histlast": "terbaru",
        "historysize": "($1 {{PLURAL:$1|bita|bita}})",
        "search-file-match": "(cocok dengan isi berkas)",
        "search-suggest": "Mungkin maksud Anda adalah: $1",
        "search-rewritten": "Menampilkan hasil untuk $1. Cari bukannya untuk $2.",
-       "search-interwiki-caption": "Proyek lain",
+       "search-interwiki-caption": "Hasil dari proyek lain",
        "search-interwiki-default": "Hasil dari $1:",
        "search-interwiki-more": "(selanjutnya)",
        "search-interwiki-more-results": "Hasil lainnya",
        "prefs-help-prefershttps": "Preferensi ini akan diaktifkan kali berikutnya Anda masuk log.",
        "prefswarning-warning": "Perubahan preferensi anda belum tersimpan. Apabila anda meninggalkan halaman ini tanpa men-klik \"$1\" preferensi anda tidak akan diperbarui.",
        "prefs-tabs-navigation-hint": "Tip: Anda dapat menggunakan tombol panah kiri dan kanan untuk bernavigasi antartab di dalam daftar tab.",
-       "userrights": "Manajemen hak pengguna",
+       "userrights": "Hak pengguna",
        "userrights-lookup-user": "Pilih seorang pengguna",
        "userrights-user-editname": "Masukkan nama pengguna:",
        "editusergroup": "Muat kelompok pengguna",
        "userrights-groupsmember": "Anggota dari:",
        "userrights-groupsmember-auto": "Anggota implisit dari:",
        "userrights-groupsmember-type": "$1",
-       "userrights-groups-help": "Anda dapat mengubah kelompok pengguna ini:\n* Kotak dengan tanda cek merupakan kelompok pengguna yang bersangkutan\n* Kotak tanpa tanda cek berarti pengguna ini bukan anggota kelompok tersebut\n* Tanda * menandai bahwa Anda tidak dapat membatalkan kelompok tersebut bila Anda telah menambahkannya, atau sebaliknya.",
+       "userrights-groups-help": "Anda dapat mengubah kelompok pengguna ini:\n* Kotak dengan tanda cek merupakan kelompok pengguna yang bersangkutan.\n* Kotak tanpa tanda cek berarti pengguna ini bukan anggota kelompok tersebut.\n* Tanda * menandai bahwa Anda tidak dapat membatalkan kelompok tersebut bila Anda telah menambahkannya, atau sebaliknya.\n* Tanda # menandai bahwa Anda hanya dapat mengembalikan waktu kedaluwarsa keanggotaan kelompok ini, tetapi Anda tidak dapat memajukan waktu kedaluwarsanya.",
        "userrights-reason": "Alasan:",
        "userrights-no-interwiki": "Anda tidak memiliki hak untuk mengubah hak pengguna di wiki yang lain.",
        "userrights-nodatabase": "Basis data $1 tidak ada atau bukan lokal.",
        "userrights-expiry-current": "Udang $1",
        "userrights-expiry-none": "Tidak usang",
        "userrights-expiry": "Usang:",
+       "userrights-expiry-existing": "Waktu kedaluwarsa saat ini: $3, $2",
        "userrights-expiry-othertime": "Waktu lain:",
+       "userrights-expiry-options": "1 hari:1 hari,1 minggu:1 minggu,1 bulan:1 bulan,3 bulan:3 bulan,6 bulan:6bulan,1 tahun:1 tahun",
+       "userrights-invalid-expiry": "Waktu kedaluwarsa untuk kelompok \"$1\" tidak sah.",
+       "userrights-expiry-in-past": "Waktu kedaluwarsa untuk kelompok \"$1\" sudah berlalu.",
+       "userrights-cannot-shorten-expiry": "Anda tidak dapat memajukan waktu kedaluwarsa dari keanggotaan dalam kelompok \"$1\". Hanya pengguna dengan hak akses dapat menambahkan dan mencabut kelompok ini dapat memajukan waktu kedaluwarsa.",
        "userrights-conflict": "Konflik perubahan hak pengguna! Silakan tinjau ulang dan konfirmasi perubahan Anda.",
        "group": "Kelompok:",
        "group-user": "Pengguna",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lihat pula [[Special:NewPages|daftar halaman baru]])",
        "recentchanges-submit": "Tampilkan",
        "rcfilters-activefilters": "Filter aktif",
+       "rcfilters-quickfilters": "Pengaturan filter tersimpan",
+       "rcfilters-quickfilters-placeholder-title": "Tidak ada pranala tersimpan sekarang",
+       "rcfilters-quickfilters-placeholder-description": "Untuk menyimpan pengaturan saringan dan menggunakannya kembali, klik ikon penanda halaman di area Penyaringan Aktif, di bawah.",
+       "rcfilters-savedqueries-defaultlabel": "Saringan tersimpan",
+       "rcfilters-savedqueries-rename": "Ubah nama",
+       "rcfilters-savedqueries-setdefault": "Tetapkan sebagai baku",
+       "rcfilters-savedqueries-unsetdefault": "Hapus sebagai baku",
+       "rcfilters-savedqueries-remove": "Hapus",
+       "rcfilters-savedqueries-new-name-label": "Nama",
+       "rcfilters-savedqueries-apply-label": "Simpan pengaturan",
+       "rcfilters-savedqueries-cancel-label": "Batalkan",
+       "rcfilters-savedqueries-add-new-title": "Simpan pengaturan filter ini",
        "rcfilters-restore-default-filters": "Kembalikan filter bawaan",
        "rcfilters-clear-all-filters": "Hapus semua penyaringan",
        "rcfilters-search-placeholder": "Filter perubahan terbaru (jelajahi atau masukan input)",
        "rcfilters-invalid-filter": "Penyqringan tidak sah",
        "rcfilters-empty-filter": "Tidak ada filter aktif. Semua kontribusi ditampilkan.",
        "rcfilters-filterlist-title": "Penyaringan",
+       "rcfilters-filterlist-whatsthis": "Apa ini?",
        "rcfilters-filterlist-feedbacklink": "Berikan umpan balik untuk filter uji coba baru",
+       "rcfilters-highlightbutton-title": "Sorot hasil",
        "rcfilters-highlightmenu-title": "Pilih warna",
+       "rcfilters-highlightmenu-help": "Pilihlah warna untuk menyorot atribut ini",
        "rcfilters-filterlist-noresults": "Tidak ada penyaring ditemukan",
+       "rcfilters-noresults-conflict": "Hasil tidak ditemukan karena kriteria pencariannya bertentangan",
+       "rcfilters-state-message-subset": "Filter ini tidak akan berpengaruh karena hasilnya disertakan oleh {{PLURAL:$2|filter}} berikut yang lebih luas (coba soroti untuk membedakannya): $1",
        "rcfilters-filtergroup-registration": "Pendaftaran pengguna",
        "rcfilters-filter-registered-label": "Terdaftar",
        "rcfilters-filter-registered-description": "Penyunting masuk log",
        "rcfilters-filter-unregistered-label": "Tidak terdaftar",
        "rcfilters-filter-unregistered-description": "Penyunting yang tidak masuk log",
-       "rcfilters-filtergroup-authorship": "Sunting kepengarangan",
+       "rcfilters-filtergroup-authorship": "Kontribusi pengarang",
        "rcfilters-filter-editsbyself-label": "Suntingan Anda",
-       "rcfilters-filter-editsbyself-description": "Suntingan oleh Anda",
+       "rcfilters-filter-editsbyself-description": "Kontribusi saya",
        "rcfilters-filter-editsbyother-label": "Suntingan orang lain",
-       "rcfilters-filter-editsbyother-description": "Suntingan dibuat oleh orang lain (bukan Anda)",
+       "rcfilters-filter-editsbyother-description": "Semua perubahan kecuali perubahan milik sendiri.",
+       "rcfilters-filtergroup-userExpLevel": "Level pengalaman (hanya untuk pengguna terdaftar)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Penyaringan mahir hanya mencari pengguna terdaftar, sehingga penyaringan ini bertentangan dengan penyaringan \"pengguna tidak terdaftar\".",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Penyaringan \"pengguna tidak terdaftar\" bertentangan dengan satu atau lebih penyaringan Mahir, yang mana hanya mencari pengguna terdaftar. Penyaringan yang bertentangan ini ditandai di area Penyaringan Aktif, di atas.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Pendatang baru",
        "rcfilters-filter-user-experience-level-newcomer-description": "Kurang dari 10 suntingan dan aktivitas selama 4 hari.",
        "rcfilters-filter-user-experience-level-learner-label": "Pelajar",
+       "rcfilters-filter-user-experience-level-learner-description": "Lebih berpengalaman daripada \"Pendatang baru\" namun belum menjadi \"Pengguna berpengalaman\"",
        "rcfilters-filter-user-experience-level-experienced-label": "Pengguna berpengalaman",
+       "rcfilters-filter-user-experience-level-experienced-description": "Lebih dari 30 hari dan 500 suntingan.",
        "rcfilters-filtergroup-automated": "Kontribusi otomatis",
        "rcfilters-filter-bots-label": "Bot",
        "rcfilters-filter-bots-description": "Suntingan yang dibuat dengan perkakas terotomatisasi.",
        "rcfilters-filter-humans-label": "Manusia (bukan bot)",
        "rcfilters-filter-humans-description": "Suntingan yang dibuat oleh penyunting manusia.",
+       "rcfilters-filtergroup-reviewstatus": "Status peninjauan",
+       "rcfilters-filter-patrolled-label": "Telah dipatroli",
+       "rcfilters-filter-patrolled-description": "Suntingan ditandai sebagai terpatroli",
+       "rcfilters-filter-unpatrolled-label": "Belum terpatroli",
+       "rcfilters-filter-unpatrolled-description": "Suntingan yang tidak ditandai sebagai terpatroli.",
        "rcfilters-filtergroup-significance": "Kepentingan",
        "rcfilters-filter-minor-label": "Suntingan kecil",
        "rcfilters-filter-minor-description": "Suntingan yang ditandai penyunting sebagai suntingan kecil",
        "rcfilters-filter-major-label": "Suntingan yang bukan suntingan kecil",
        "rcfilters-filter-major-description": "Suntingan yang ditandai sebagai suntingan kecil",
+       "rcfilters-filtergroup-watchlist": "Halaman terpantau",
+       "rcfilters-filter-watchlist-watched-label": "Dalam pantauan",
+       "rcfilters-filter-watchlist-watched-description": "Perubahan pada halaman dalam pantauan Anda.",
+       "rcfilters-filter-watchlist-watchednew-label": "Perubahan Daftar Pantauan baru.",
+       "rcfilters-filter-watchlist-watchednew-description": "Perubahan halaman-halaman yang dipantau yang belum dikunjungi oleh Anda sejak perubahan terjadi.",
+       "rcfilters-filter-watchlist-notwatched-label": "Tidak dalam daftar pantauan",
+       "rcfilters-filter-watchlist-notwatched-description": "Semuanya kecuali perubahan pada halaman yang dipantau.",
        "rcfilters-filtergroup-changetype": "Jenis perubahan",
        "rcfilters-filter-pageedits-label": "Suntingan halaman",
-       "rcfilters-filter-pageedits-description": "Suntingan pada konten wiki, diskusi, deskripsi kategori....",
+       "rcfilters-filter-pageedits-description": "Perubahan pada konten wiki, diskusi, deskripsi kategori...",
        "rcfilters-filter-newpages-label": "Pembuatan halaman",
        "rcfilters-filter-newpages-description": "Suntingan yang membuat halaman baru",
        "rcfilters-filter-categorization-label": "Perubahan kategori",
        "rcfilters-filter-categorization-description": "Rekam jejak halaman yang telah ditambahkan atau dihapus dari kategori.",
        "rcfilters-filter-logactions-label": "Tindakan tercatat",
-       "rcfilters-filter-logactions-description": "Tindakan administratif, pembuatan akun, penghapusan halaman, pengunggahan....",
+       "rcfilters-filter-logactions-description": "Tindakan administratif, pembuatan akun, penghapusan halaman, pengunggahan...",
+       "rcfilters-filtergroup-lastRevision": "Revisi terkini",
+       "rcfilters-filter-lastrevision-label": "Revisi terkini",
+       "rcfilters-filter-lastrevision-description": "Perubahan terkini halaman ini",
+       "rcfilters-filter-previousrevision-label": "Revisi lebih awal",
+       "rcfilters-filter-previousrevision-description": "Semua perubahan yang bukan perubahan terbaru pada sebuah halaman.",
        "rcnotefrom": "Di bawah ini adalah {{PLURAL:$5|perubahan}} sejak <strong>$3, $4</strong> (ditampilkan sampai <strong>$1</strong> perubahan).",
+       "rclistfromreset": "Atur ulang pilihan tanggal",
        "rclistfrom": "Perlihatkan perubahan terbaru sejak $3 $2",
        "rcshowhideminor": "$1 suntingan kecil",
        "rcshowhideminor-show": "Tampilkan",
        "rcshowhidecategorization": "$1 kategorisasi halaman",
        "rcshowhidecategorization-show": "Tampilkan",
        "rcshowhidecategorization-hide": "Sembunyikan",
-       "rclinks": "Perlihatkan $1 perubahan terbaru dalam $2 hari terakhir<br />$3",
+       "rclinks": "Perlihatkan $1 perubahan terbaru dalam $2 hari terakhir",
        "diff": "beda",
        "hist": "versi",
        "hide": "Sembunyikan",
        "php-uploaddisabledtext": "Pemuatan berkas dimatikan di PHP. Silakan cek pengaturan file_uploads.",
        "uploadscripted": "Berkas ini mengandung HTML atau kode yang dapat diinterpretasikan dengan keliru oleh penjelajah web.",
        "upload-scripted-pi-callback": "Tidak dapat mengunggah berkas yang mengandung arahan pengolahan hamparan XML.",
+       "upload-scripted-dtd": "Tidak dapat mengunggah berkas SVG yang mengandung deklarasi DTD takstandar.",
        "uploaded-script-svg": "Terdapat elemen terskrip \"$1\" dalam berkas SVG yang diunggah.",
        "uploaded-hostile-svg": "Terdapat CSS yang tidak aman dalam elemen gaya berkas SVG yang diunggah.",
        "uploaded-event-handler-on-svg": "Penetapan atribut <i>event-handler</i> $1=\"$2\" tidak diizinkan dalam berkas SVG.",
        "upload-http-error": "Kesalahan HTTP terjadi: $1",
        "upload-copy-upload-invalid-domain": "Unggahan salinan tidak tersedia dari domain ini.",
        "upload-foreign-cant-upload": "Wiki ini tidak diatur untuk mengunggah berkas ke gudang penyimpangan asing.",
+       "upload-foreign-cant-load-config": "Gagal memuat konfigurasi untuk pengunggahan berkas ke repositori berkas eksternal",
        "upload-dialog-disabled": "Unggah berkas menggunakan dialog ini dinonaktifkan pada wiki ini.",
        "upload-dialog-title": "Unggah berkas",
        "upload-dialog-button-cancel": "Batalkan",
        "uploadstash-errclear": "Penghapusan berkas gagal.",
        "uploadstash-refresh": "Segarkan daftar berkas.",
        "uploadstash-thumbnail": "lihat miniatur",
+       "uploadstash-exception": "Tidak dapat menyimpan unggahan dalam simpanan ($1): \"$2\".",
        "invalid-chunk-offset": "Ofset potongan tidak valid",
        "img-auth-accessdenied": "Akses ditolak",
        "img-auth-nopathinfo": "PATH_INFO hilang.\nServer Anda tidak diatur untuk melewatkan informasi ini.\nServer tersebut mungkin berbasis CGI dan tidak dapat mendukung img_auth.\nLihat https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
        "filerevert-submit": "Batalkan",
        "filerevert-success": "'''[[Media:$1|$1]]''' telah dibatalkan ke versi [$4 pada $3, $2]",
        "filerevert-badversion": "Tidak ada versi lokal terdahulu dari berkas ini dengan stempel waktu yang dimaksud.",
+       "filerevert-identical": "Versi berkas sekarang telah identik dengan berkas yang terpilih.",
        "filedelete": "Menghapus $1",
        "filedelete-legend": "Menghapus berkas",
        "filedelete-intro": "Anda akan menghapus berkas '''[[Media:$1|$1]]''' berikut semua riwayatnya.",
        "apisandbox-loading-results": "Menerima hasil API...",
        "apisandbox-results-error": "Sebuah galat terjadi ketika memuat permintaan respon API: $1.",
        "apisandbox-request-selectformat-label": "Tampilkan permintaan data sebagai:",
+       "apisandbox-request-format-url-label": "String kueri URL",
        "apisandbox-request-url-label": "URL Permintaan:",
        "apisandbox-request-json-label": "Meminta JSON:",
        "apisandbox-request-time": "Lama permintaan: {{PLURAL:$1|$1 ms}}",
        "emailccsubject": "Salinan pesan Anda untuk $1: $2",
        "emailsent": "Surel terkirim",
        "emailsenttext": "Surel Anda telah dikirimkan.",
-       "emailuserfooter": "Surel ini telah {{GENDER:$1|dikirim}} oleh $1 kepada {{GENDER:$2|$2}} dengan fungsi \"{{int:emailuser}}\" pada {{SITENAME}}. Surel {{GENDER:$2|Anda}} akan dikirim langsung kepada {{GENDER:$1|pengirim asal}}, dengan menampilkan alamat surel {{GENDER:$2|Anda}} kepada {{GENDER:$1|mereka}}.",
+       "emailuserfooter": "Surel ini telah {{GENDER:$1|dikirim}} oleh $1 kepada {{GENDER:$2|$2}} dengan fungsi \"{{int:emailuser}}\" pada {{SITENAME}}. Jika {{GENDER:$2|Anda}} membalas surel ini, surel {{GENDER:$2|Anda}} akan dikirim langsung kepada {{GENDER:$1|pengirim asal}}, dengan menampilkan alamat surel {{GENDER:$2|Anda}} kepada {{GENDER:$1|mereka}}.",
        "usermessage-summary": "Tinggalkan pesan sistem.",
        "usermessage-editor": "Penyampai pesan sistem",
        "usermessage-template": "MediaWiki:UserMessage",
        "watchnologin": "Belum masuk log",
        "addwatch": "Tambahkan ke daftar pantauan",
        "addedwatchtext": "\"[[:$1]]\" dan diskusinya telah ditambahkan ke [[Special:Watchlist|watchlist]] Anda.\nPerubahan-perubahan berikutnya pada halaman tersebut dan halaman pembicaraan terkaitnya akan tercantum di sini.",
+       "addedwatchtext-talk": "\"[[:$1]]\" dan halaman terkaitnya telah ditambahkan ke [[Special:Watchlist|daftar pantauan Anda]].",
        "addedwatchtext-short": "Halaman \"$1\" telah ditambahkan ke daftar pantauan Anda.",
        "removewatch": "Hapus dari daftar pantauan",
        "removedwatchtext": "\"[[:$1]]\" dan diskusinya telah dihapus dari [[Special:Watchlist|watchlist]] Anda.",
+       "removedwatchtext-talk": "\"[[:$1]]\" dan halaman terkaitnya telah dihapus dari [[Special:Watchlist|daftar pantauan Anda]].",
        "removedwatchtext-short": "Halaman \"$1\" telah dihapus dari daftar pantauan Anda.",
        "watch": "Pantau",
        "watchthispage": "Pantau halaman ini",
        "enotif_body_intro_moved": "Halaman $1 di {{SITENAME}} telah dipindahkan pada $PAGEEDITDATE oleh {{gender:$2|$2}}, lihat $3 untuk revisi terkini.",
        "enotif_body_intro_restored": "Halaman $1 di {{SITENAME}} telah dikembalikan pada $PAGEEDITDATE oleh {{gender:$2|$2}}, lihat $3 untuk revisi terkini.",
        "enotif_body_intro_changed": "Halaman $1 di {{SITENAME}} telah diubah pada $PAGEEDITDATE oleh {{gender:$2|$2}}, lihat $3 untuk revisi terkini.",
-       "enotif_lastvisited": "Lihat $1 untuk semua perubahan sejak kunjungan terakhir Anda.",
-       "enotif_lastdiff": "Kunjungi $1 untuk melihat perubahan ini.",
+       "enotif_lastvisited": "Untuk semua perubahan sejak kunjungan terakhir, lihat $1",
+       "enotif_lastdiff": "Untuk melihat perubahan ini, lihat $1",
        "enotif_anon_editor": "pengguna anonim $1",
        "enotif_body": "Halo $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nRingkasan suntingan: $PAGESUMMARY $PAGEMINOREDIT\n\nHubungi penyunting:\nsurel: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nKami tidak akan mengirim pemberitahuan lain bila ada perubahan lebih lanjut sampai Anda mengunjungi halaman ini ketika masuk log. Anda juga dapat menyetel ulang tanda pemberitahuan untuk semua halaman pantauan pada daftar pantauan Anda.\n\nSistem pemberitahuan situs {{SITENAME}} Anda yang ramah\n\n--\nUntuk mengubah pengaturan pemberitahuan surel, kunjungi\n{{canonicalurl:{{#special:Preferences}}}}\n\nUntuk mengubah setelan daftar pantauan, kunjungi\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nUntuk menghapus halaman dari daftar pantauan, kunjungi\n$UNWATCHURL\n\nUmpan balik dan bantuan lebih lanjut:\n$HELPPAGE",
        "created": "dibuat",
        "changecontentmodel-emptymodels-title": "Tidak tersedia model konten",
        "changecontentmodel-emptymodels-text": "Konten dalam [[:$1]] tidak dapat diubah ke dalam jenis lain.",
        "log-name-contentmodel": "Log perubahan model konten",
-       "log-description-contentmodel": "Peristiwa terkait model konten sebuah halaman",
+       "log-description-contentmodel": "Halaman ini menampilkan perubahan pada model konten halaman, dan halaman yang dibuat dengan model konten selain model konten baku.",
        "logentry-contentmodel-new": "$1 {{GENDER:$2|membuat}} halaman $3 menggunakan model konten tak baku \"$5\"",
        "logentry-contentmodel-change": "$1 {{GENDER:$2|mengubah}} model konten halaman $3 dari \"$4\" ke \"$5\"",
        "logentry-contentmodel-change-revertlink": "batalkan",
        "sp-contributions-uploads": "unggahan",
        "sp-contributions-logs": "log",
        "sp-contributions-talk": "bicara",
-       "sp-contributions-userrights": "pengelolaan hak pengguna",
+       "sp-contributions-userrights": "Manajemen hak akses {{GENDER:$1|pengguna}}",
        "sp-contributions-blocked-notice": "Pengguna ini sedang diblokir.\nLog pemblokiran terakhir ditampilkan berikut untuk referensi:",
        "sp-contributions-blocked-notice-anon": "Alamat IP ini sedang diblokir saat ini.\nEntri log pemblokiran terakhir tersedia di bawah ini sebagai rujukan:",
        "sp-contributions-search": "Cari kontribusi",
        "unblocked-id": "Blokir $1 telah dicabut.",
        "unblocked-ip": "Pemblokiran [[Special:Contributions/$1|$1]] telah dicabut.",
        "blocklist": "Daftar pengguna yang diblokir",
+       "autoblocklist": "Pemblokiran otomatis",
+       "autoblocklist-submit": "Pencarian",
+       "autoblocklist-legend": "Daftar pemblokiran otomatis",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Blokir otomatis|Blokir otomatis}} lokal",
+       "autoblocklist-total-autoblocks": "Total blokir otomatis: $1",
+       "autoblocklist-empty": "Daftar pemblokiran otomatis kosong.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Blokir otomatis|Blokir otomatis}} lainnya",
        "ipblocklist": "Daftar pemblokiran pengguna",
        "ipblocklist-legend": "Cari pengguna yang diblokir",
        "blocklist-userblocks": "Sembunyikan pemblokiran akun",
        "tooltip-pt-mycontris": "Daftar kontribusi {{GENDER:|Anda}}",
        "tooltip-pt-anoncontribs": "Daftar suntingan yang dibuat dari alamat IP ini",
        "tooltip-pt-login": "Anda disarankan untuk masuk log, meskipun hal itu tidak diwajibkan.",
+       "tooltip-pt-login-private": "Anda harus masuk loh untuk menggunakan wiki ini",
        "tooltip-pt-logout": "Keluar log",
        "tooltip-pt-createaccount": "Anda dianjurkan untuk membuat akun dan masuk log; meskipun, hal itu tidak diwajibkan",
        "tooltip-ca-talk": "Pembicaraan halaman isi",
        "anonymous": "{{PLURAL:$1|pengguna|para pengguna}} anonim {{SITENAME}}",
        "siteuser": "pengguna {{SITENAME}} $1",
        "anonuser": "pengguna anonim {{SITENAME}} $1",
-       "lastmodifiedatby": "Halaman ini terakhir kali diubah $2, $1 oleh $3.",
+       "lastmodifiedatby": "Halaman ini terakhir disunting $2, $1 oleh $3.",
        "othercontribs": "Didasarkan pada karya $1.",
        "others": "lainnya",
        "siteusers": "{{PLURAL:$2|pengguna|para pengguna}} {{SITENAME}} $1",
        "newimages-summary": "Halaman istimewa berikut menampilkan daftar berkas yang terakhir dimuat",
        "newimages-legend": "Penyaring",
        "newimages-label": "Nama berkas (atau sebagian dari nama berkas):",
+       "newimages-user": "Alamat IP atau nama pengguna",
        "newimages-showbots": "Tampilkan unggahan oleh bot",
        "newimages-hidepatrolled": "Sembunyikan unggahan yang telah dipatroli",
        "noimages": "Tidak ada yang dilihat.",
        "confirmrecreate-noreason": "Pengguna [[User:$1|$1]] ([[User talk:$1|bicara]]) telah {{GENDER:$1|menghapus}} halaman ini setelah Anda mulai menyunting. Harap konfirmasikan bahwa Anda ingin membuat ulang halaman ini.",
        "recreate": "Buat ulang",
        "unit-pixel": "px",
+       "confirm-purge-title": "Hapus singgahan halaman ini",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Hapus singgahan halaman ini?",
        "confirm-purge-bottom": "Membersihkan halaman akan sekaligus menghapus singgahan dan menampilkan versi halaman terkini.",
        "word-separator": "&#32;",
        "ellipsis": "...",
        "quotation-marks": "\"$1\"",
-       "imgmultipageprev": "&larr; halaman sebelumnya",
-       "imgmultipagenext": "halaman selanjutnya &rarr;",
+       "imgmultipageprev": " halaman sebelumnya",
+       "imgmultipagenext": "halaman selanjutnya ",
        "imgmultigo": "Cari!",
        "imgmultigoto": "Pergi ke halaman $1",
        "img-lang-default": "(bahasa default)",
        "tags-update-add-not-allowed-one": "Tag \"$1\"tidak diizinkan untuk ditambahkan secara manual.",
        "tags-update-add-not-allowed-multi": "{{PLURAL:$2|tag is|Tag ini}} tidak diizinkan untuk ditambahkan secara manual: $1",
        "tags-update-remove-not-allowed-one": "Tag \"$1\" tidak diizinkan untuk dihapus.",
+       "tags-update-remove-not-allowed-multi": "{{PLURAL:$2|Tag|Tag-tag}} berikut tidak dibolehkan untuk dihapus secara manual: $1",
        "tags-edit-title": "Sunting tag",
        "tags-edit-manage-link": "Kelola tag",
        "tags-edit-revision-selected": "{{PLURAL:$1|Revisi terpilih|Revisi terpilih}} dari [[:$2]]:",
        "htmlform-user-not-valid": "<strong>$1</strong> bukan merupakan nama pengguna sah.",
        "logentry-delete-delete": "$1 {{GENDER:$2|menghapus}} halaman $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|menghapus}} pengalihan $3 dengan penimpaan",
-       "logentry-delete-restore": "$1 {{GENDER:$2|mengembalikan}} halaman $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|mengembalikan}} halaman $3 ($4)",
+       "logentry-delete-restore-nocount": "$1 {{GENDER:$2|mengembalikan}} halaman $3",
+       "restore-count-revisions": "{{PLURAL:$1|1 revisi|$1 revisi}}",
+       "restore-count-files": "{{PLURAL:$1|1 berkas|$1 berkas}}",
        "logentry-delete-event": "$1 {{GENDER:$2|mengubah}} tampilan {{PLURAL:$5|$5 log peristiwa}} di $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|mengubah}} tampilan {{PLURAL:$5|$5  revisi}} di halaman $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|mengubah}} tampilan log peristiwa pada $3",
        "special-characters-group-thai": "Thai",
        "special-characters-group-lao": "Lao",
        "special-characters-group-khmer": "Khmer",
+       "special-characters-group-canadianaboriginal": "Aborigin Kanada",
        "special-characters-title-endash": "en dash",
        "special-characters-title-emdash": "em dash",
        "special-characters-title-minus": "tanda kurang",
        "mw-widgets-titleinput-description-redirect": "mengalihkan ke $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Tambah sebuah kategori...",
        "mw-widgets-usersmultiselect-placeholder": "Tambahkan lebih banyak...",
+       "date-range-from": "Dari tanggal",
+       "date-range-to": "Sampai tanggal",
        "sessionmanager-tie": "Tidak dapat menggabungkan banyak jenis otentikasi permintaan: $1.",
        "sessionprovider-generic": "sesi $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sesi berdasarkan kuki",
        "linkaccounts-submit": "Tautkan akun",
        "unlinkaccounts": "Lepastautkan akun",
        "unlinkaccounts-success": "Akun berikut telah dilepastautkan.",
+       "authenticationdatachange-ignored": "Otentikasi perubahan data tidak dijalankan. Mungkin tidak ada provider yang diatur?",
        "userjsispublic": "Harap perhatikan: subhalaman Javascript sebaiknya tidak mengandung data rahasia, karena dapat dilihat oleh pengguna lain.",
        "usercssispublic": "Harap perhatikan: subhalaman CSS sebaiknya tidak mengandung data rahasia karena dapat dilihat oleh pengguna lain.",
        "restrictionsfield-badip": "Alamat IP atau rentang IP tidak sah: $1",
        "restrictionsfield-label": "Rentang IP yang diizinkan:",
-       "restrictionsfield-help": "Satu alamat IP atau rentang CIDR per baris. Untuk mengaktifkan semuanya, gunakan <br><code>0.0.0.0/0</code><br><code>::/0</code>",
+       "restrictionsfield-help": "Satu alamat IP atau rentang CIDR per baris. Untuk mengaktifkan semuanya, gunakan:\n<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "revisi $1",
-       "pageid": "ID halaman $1"
+       "pageid": "ID halaman $1",
+       "rawhtml-notallowed": "Tag &lt;html&gt; tidak dapat digunakan di luar halaman normal.",
+       "gotointerwiki": "Meninggalkan {{SITENAME}}",
+       "gotointerwiki-invalid": "Judul yang ditentukan tidak sah",
+       "gotointerwiki-external": "Anda akan meninggalkan {{SITENAME}} untuk mengunjungi [[$2]], yang merupakan situs lain.\n\n'''[$1 Lanjut ke $1]'''",
+       "undelete-cantedit": "Anda tidak dapat membatalkan penghapusan halaman ini karena Anda tidak dapat menyunting halaman ini.",
+       "undelete-cantcreate": "Anda tidak dapat membatalkan penghapusan halaman ini karena tidak ada halaman yang memiliki judul ini dan Anda tidak diizinkan membuat halaman ini.",
+       "pagedata-title": "Data halaman",
+       "pagedata-text": "Halaman ini memberikan antarmuka data ke halaman. Silakan masukkan judul halaman di URL, menggunakan sintaks subhalaman.\n* Negosiasi konten diatur berdasarkan header \"Accept\" klien Anda. Ini berarti halaman data akan diformat berdasarkan format yang dimintai klien Anda.",
+       "pagedata-not-acceptable": "Tidak ditemukan format yang sesuai. Jenis MIME yang didukung: $1",
+       "pagedata-bad-title": "Judul tidak sah: $1"
 }
index 476af2b..832a5a7 100644 (file)
        "login": "Aperter session",
        "login-security": "Verifica vor identitá",
        "nav-login-createaccount": "Crear un conto o intrar",
-       "userlogin": "Crear un conto o intrar",
-       "userloginnocreate": "Intrar",
        "logout": "Surtida",
        "userlogout": "Surtir",
        "notloggedin": "Vu ne ha intrat",
        "userlogin-noaccount": "Ne have un conto?",
        "userlogin-joinproject": "Adherer a {{SITENAME}}",
-       "nologin": "Ne have un conto? $1.",
-       "nologinlink": "Crear un conto",
        "createaccount": "Crear un conto",
-       "gotaccount": "Ja have un conto? $1.",
-       "gotaccountlink": "Intrar",
-       "userlogin-resetlink": "Obliviat tui detallies de registre?",
        "createacct-reason": "Motive",
        "createacct-benefit-body1": "{{PLURAL:$1|redaction|redactiones}}",
        "createacct-benefit-body2": "{{PLURAL:$1|págine|págines}}",
        "rcshowhidepatr-hide": "Ocultar",
        "rcshowhidemine": "$1 mi redactiones",
        "rcshowhidemine-show": "Monstrar",
-       "rclinks": "Monstrar li $1 ultim modificationes fat durante li $2 ultim dies<br />$3.",
+       "rclinks": "Monstrar li $1 ultim modificationes fat durante li $2 ultim dies",
        "diff": "dif",
        "hist": "hist",
        "hide": "Celar",
        "undeleteviewlink": "vider",
        "undeleteinvert": "Inverter selection",
        "undeletecomment": "Motive:",
-       "undeletedrevisions": "{{PLURAL:$1|1 revision|$1 revisiones}} restaurat",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 revision|$1 revisiones}} e {{PLURAL:$2|1 file|$2 files}} restaurat",
-       "undeletedfiles": "{{PLURAL:$1|1 file|$1 files}} restaurat",
        "undeletedpage": "'''$1 ha esset restaurat'''\n\nConsulta li [[Special:Log/delete|diarium de deletion]] por un registre de deletiones nov e restaurationes.",
        "undelete-header": "Vider [[Special:Log/delete|li diarium de deletion]] por págines deletet currentmen.",
        "undelete-search-box": "Serchar págines deletet",
index 81b98c5..369a4f0 100644 (file)
        "yourdomainname": "Obí gi:",
        "login": "Banyé",
        "nav-login-createaccount": "Banyé / ké buwá",
-       "userlogin": "Banyé / ké buwá",
-       "userloginnocreate": "Banyé",
        "logout": "Fwuör",
        "userlogout": "Fwuör",
        "notloggedin": "I bátà bò",
-       "nologin": "I nwegị buwa? $1.",
-       "nologinlink": "ké otụ buwa",
        "createaccount": "Ké otụ buwa",
-       "gotaccount": "I nwerecha buwa? $1.",
-       "gotaccountlink": "Banyé",
        "createaccountmail": "na e-mail",
-       "createaccountreason": "Mgbaghaputa:",
        "badretype": "Mkpurụ okwu ejị a gafẹ é jëghị.",
        "userexists": "Áhè ọ'bànifé tírí di na áká onye ozor.\nBíkó nwèré áhà nke ozor.",
        "loginerror": "Nsogbu ngbe I choro I bata",
        "prefs-rendering": "Ọdịdị",
        "saveprefs": "Domá",
        "prefs-editing": "Írüwa",
-       "rows": "Ǹdịlị:",
-       "columns": "Ogìdì:",
        "searchresultshead": "Chọwa",
        "stub-threshold-disabled": "Ápụgị òkò",
        "timezonelegend": "Nkeji ogẹ:",
        "rcshowhideanons": "$1 ndi ọ'bànifé nke amághị",
        "rcshowhidepatr": "$1 orü hä lèrè",
        "rcshowhidemine": "$1 ihe m rürü",
-       "rclinks": "Zí nke mbu $1 gbawere na ubochi gárá nke $2<br />$3",
+       "rclinks": "Zí nke mbu $1 gbawere na ubochi gárá nke $2",
        "diff": "Íchè",
        "hist": "akíkómbu",
        "hide": "Zonari",
        "htmlform-selectorother-other": "Nke ozor",
        "revdelete-content-hid": "ihe zọ̀nàri",
        "rightsnone": "(efù)",
-       "revdelete-summary": "mmẹkotá orü",
        "feedback-close": "Ọméchá.",
        "feedback-message": "Ozi:",
        "searchsuggest-search": "Chọwa",
index 4ec9a1a..36a7280 100644 (file)
        "redirectedfrom": "(Naibaw-ing manipud iti $1)",
        "redirectpagesub": "Baw-ing a panid",
        "redirectto": "Naibaw-ing iti:",
-       "lastmodifiedat": "Daytoy a panid ket naudi a nabaliwan idi $1, $2.",
+       "lastmodifiedat": "Daytoy a panid ket naudi a naurnos idi $1, $2.",
        "viewcount": "Naserrekanen daytoy a panid {{PLURAL:$1|iti naminsan|kadagiti $1 a beses}}.",
        "protectedpage": "Nasalakniban a panid",
        "jumpto": "Lumaktaw idiay:",
        "preview": "Ipadas",
        "showpreview": "Ipakita ti ipadas",
        "showdiff": "Ipakita dagiti binaliwan",
-       "blankarticle": "<strong>Ballaag:</strong> Ti panid a parpatuatem ket blanko.\nNo pindutem manen ti \"{{int:savearticle}}\", ti panid ket mapartuatto nga awan ti ania man a linaon.",
+       "blankarticle": "<strong>Ballaag:</strong> Ti panid a parpatuatem ket blanko.\nNo pindutem manen ti \"$1\", ti panid ket mapartuatto nga awan ti ania man a linaon.",
        "anoneditwarning": "<strong>Ballaag:</strong> Saanka a nakastrek. Ti adres ti IP ket publikonto a makita nga agaramidka kadagiti ania man a panagurnos. No <strong>[$1 sumrekka]</strong> wenno <strong>[$2 agpartuatka iti pakabilangan]</strong>, dagiti inurnosmo ket maitunosto iti naganmo nga agar-aramat, ken dagiti dadduma pay a pagimbagan.",
        "anonpreviewwarning": "<em>Saanka a nakastrek. Ti panagidulin ket agirehistro ti IP a pagtaengam kadagitoy a pakasaritaan ti panagurnos iti daytoy a panid.</em>",
-       "missingsummary": "<strong>Palagip:</strong> Saanka a nakaited iti pakabuklan ti panagurnos.\nNo pindutem manen ti \"{{int:savearticle}}\", maidulin ti inurnosmo nga awan ti pakabuklanna.",
-       "selfredirect": "<strong>Ballaag:</strong> Ibawbaw-ingmo daytoy a panid iti isu met laeng a panid.\nMabalinmo nga innaganan ti kamali a puntaan para iti baw-ing, wenno mabalin nga ur-urnosem ti kamali a panid.\nNo pindutem manen ti \"{{int:savearticle}}\" , mapartuatto lattan ti baw-ing.",
+       "missingsummary": "<strong>Palagip:</strong> Saanka a nakaited iti pakabuklan ti panagurnos.\nNo pindutem manen ti \"$1\", maidulin ti inurnosmo nga awan ti pakabuklanna.",
+       "selfredirect": "<strong>Ballaag:</strong> Ibawbaw-ingmo daytoy a panid iti isu met laeng a panid.\nMabalinmo nga innaganan ti kamali a puntaan para iti baw-ing, wenno mabalin nga ur-urnosem ti kamali a panid.\nNo pindutem manen ti \"$1\" , mapartuatto lattan ti baw-ing.",
        "missingcommenttext": "Pangngaasi nga agikabil ti komentario dita baba.",
-       "missingcommentheader": "<strong>Palagip:</strong> Saanka pay a nakaited iti suheto para iti daytoy a komentario.\nNo pindutem manen ti \"{{int:savearticle}}\", maidulinto ti inurnosmo nga awan ti pakabuklanna.",
+       "missingcommentheader": "<strong>Palagip:</strong> Saanka pay a nakaited iti suheto para iti daytoy a komentario.\nNo pindutem manen ti \"$1\", maidulinto ti inurnosmo nga awan ti pakabuklanna.",
        "summary-preview": "Panangipadas ti pakabuklan ti panagurnos:",
        "subject-preview": "Panangipadas ti suheto:",
        "previewerrortext": "Adda napasamak a maysa a biddut bayat a nagpadpadas kadagiti binawbaliwam.",
        "editingsection": "Ur-urnosen ti $1 (seksion)",
        "editingcomment": "Ur-urnosen ti $1 (baro a seksion)",
        "editconflict": "Agsinnungat a panagurnos: $1",
-       "explainconflict": "Adda sabali a nagsukat iti daytoy a panid idi nangrugika a nagurnos.\nTi akinngato a lugar ti teksto ket aglaon ti teksto ti panid iti agdama kaaddana.\nDagiti sinukatam ket maipakita iti akinbaba a lugar ti teksto.\nNasken nga itiponmonto dagiti sinukatam iti adda a teksto.\nTi <strong>laeng</strong> teksto iti akinngato a lugar ti teksto ti maidulinto no talmegam ti \"{{int:savearticle}}\".",
+       "explainconflict": "Adda sabali a nagsukat iti daytoy a panid idi nangrugika a nagurnos.\nTi akinngato a lugar ti teksto ket aglaon ti teksto ti panid iti agdama kaaddana.\nDagiti sinukatam ket maipakita iti akinbaba a lugar ti teksto.\nNasken nga itiponmonto dagiti sinukatam iti adda a teksto.\nTi <strong>laeng</strong> teksto iti akinngato a lugar ti teksto ti maidulinto no talmegam ti \"$1\".",
        "yourtext": "Ti tekstom",
        "storedversion": "Rebision a naidulin",
        "nonunicodebrowser": "<strong>Ballaag: Ti pabasabasam ket saan a maitunos iti Unicode .</strong>\nAdda sabali a mausar tapno makaurnoska kadagiti panid: Ti saan nga-ASCII a karakter ket agparang iti pagurnosan a kahon a kas dagiti heksadesimal a kodigo.",
        "rcshowhidecategorization": "$1 ti pannakaikategoria ti panid",
        "rcshowhidecategorization-show": "Ipakita",
        "rcshowhidecategorization-hide": "Ilemmeng",
-       "rclinks": "Ipakita dagiti naudi a $1 a sinukatan iti kallabes a $2 nga al-aldaw<br />$3",
+       "rclinks": "Ipakita dagiti naudi a $1 a sinukatan iti kallabes a $2 nga al-aldaw",
        "diff": "dip",
        "hist": "hist",
        "hide": "Ilemmeng",
        "confirmrecreate": "{{GENDER:$1|Inikkat}} ni agar-aramat [[User:$1|$1]] ([[User talk:$1|tungtungan]])  daytoy a panid kalpasan idi nangrugika nga agurnos iti rason a:\n: <em>$2</em>\nPangngaasi a pasingkedan no agpayso a kayatmo a partuaten manen daytoy a panid",
        "confirmrecreate-noreason": "{{GENDER:$1|Inikkat}} ni agar-aramat [[User:$1|$1]] ([[User talk:$1|tungtungan]]) daytoy a panid kalpasan idi nangrugika nga agurnos. Pangngaasi a pasingkedan no agpayso a kayatmo a partuaten manen daytoy a panid.",
        "recreate": "Partuaten manen",
+       "confirm-purge-title": "Purgaen daytoy a panid",
        "confirm_purge_button": "Sige",
        "confirm-purge-top": "Dalusan ti cache daytoy a panid?",
        "confirm-purge-bottom": "Ti panagpurga ti panid ket dalusanna ti cache ken pursaranna nga iparang dagiti agdama rebision.",
        "pagelang-select-lang": "Agpili iti pagsasao",
        "pagelang-reason": "Rason",
        "pagelang-submit": "Ited",
+       "pagelang-nonexistent-page": "Awan ti panid ti $1.",
        "right-pagelang": "Baliwan ti pagsasao ti panid",
        "action-pagelang": "baliwan ti pagsasao ti panid",
        "log-name-pagelang": "Listaan ti panagbaliw ti pagsasao",
index 4f3d944..4feb7b8 100644 (file)
        "rcshowhidemine": "$1 хьа нийсдараш",
        "rcshowhidemine-show": "Хьахьокха",
        "rcshowhidemine-hide": "Къайладаккха",
-       "rclinks": "Хьахьокха $2 дийнахь даь хинна тIеххьара $1 хувцамаш\n<br />$3",
+       "rclinks": "Хьахьокха $2 дийнахь даь хинна тIеххьара $1 хувцамаш",
        "diff": "башхало",
        "hist": "истори",
        "hide": "Къайладаккха",
index 1814b46..e5a0858 100644 (file)
        "login": "Enirar",
        "login-security": "Kontrolez vua identeso.",
        "nav-login-createaccount": "Enirar / Krear konto",
-       "userlogin": "Enirar / krear konto",
-       "userloginnocreate": "Enirar",
        "logout": "Ekirar",
        "userlogout": "Ekirar",
        "notloggedin": "Sesiono ne esas iniciata",
        "userlogin-noaccount": "Ka vu ne havas konto?",
        "userlogin-joinproject": "Enirez la {{SITENAME}}",
-       "nologin": "Ka vu ne havas konto? $1.",
-       "nologinlink": "Kreez konto",
        "createaccount": "Krear nova konto",
-       "gotaccount": "Ka vu ja havas konto? '''$1'''.",
-       "gotaccountlink": "Enirar",
-       "userlogin-resetlink": "Ka tu obliviis la detalii pri tua konekto?",
        "userlogin-resetpassword-link": "Ka tu obliviis tua pasovorto?",
        "userlogin-helplink2": "Helpo pri quale enirar",
        "userlogin-loggedin": "Tu ja eniris, kun la nomo {{GENDER:$1|$1}}\n\nUsez la formulario infre por enirar quale altra uzero.",
        "createacct-another-email-ph": "Prizentez vua e-postal adreso",
        "createaccountmail": "Uzez provizora pasovorto, ed ad adresizez ol a la korespondanta e-posto",
        "createacct-realname": "Vera nomo (fakultativa)",
-       "createaccountreason": "Motivo:",
        "createacct-reason": "Motivo",
        "createacct-reason-ph": "Pro quo tu kreas nova konto",
        "createacct-submit": "Kreez konto",
        "preview": "Previdar",
        "showpreview": "Previdar",
        "showdiff": "Montrez chanji",
-       "blankarticle": "<strong>Averto:</strong> La pagino vu kreas es vakua.\nSe vu ri-selektos \"{{int:savearticle}}\", la pagino kreesos sen irga kontenajo.",
+       "blankarticle": "<strong>Averto:</strong> La pagino vu kreas es vakua.\nSe vu ri-selektos \"$1\", la pagino kreesos sen irga kontenajo.",
        "anoneditwarning": "<strong>Averto:</strong> Vu ne eniris.\nVua IP-adreso esos videbla publike se vu redaktos. Se vu <strong>[$1 enirus]</strong> od <strong>[$2 kreus konto]</strong>, vua redakti atribuesos a vua uzeronomo, kune kun altra bonaji.",
        "anonpreviewwarning": "<em>Vu ne eniris. Konservar chanji registragos vua IP-adreso en la redakto-historio di ta pagino.</em>",
        "missingcommenttext": "Voluntez, skribez komento sube.",
        "editingsection": "Vu redaktas $1 (seciono)",
        "editingcomment": "Vu redaktas $1 (nova seciono)",
        "editconflict": "Redakto-konflikto: $1",
-       "explainconflict": "Ulu chanjis ica pagino depos vu editeskis ol.\nLa supra texto-areo kontenas la texto dil pagino quale ol existas aktuale.\nVua chanji montresas en la infra texto-areo.\nVu devas atachar vua chanji en la existanta texto.\n'''Nur''' la texto en la supra texto-areo registragesos kande vu presez sur \"{{int:savearticle}}\".",
+       "explainconflict": "Ulu chanjis ica pagino depos vu editeskis ol.\nLa supra texto-areo kontenas la texto dil pagino quale ol existas aktuale.\nVua chanji montresas en la infra texto-areo.\nVu devas atachar vua chanji en la existanta texto.\n'''Nur''' la texto en la supra texto-areo registragesos kande vu presez sur \"$1\".",
        "yourtext": "Vua texto",
        "storedversion": "Gardita versiono",
        "nonunicodebrowser": "'''EGARDEZ: Vua navigilo esas ne obediema ad ''unicode''.'''\nSolvo esas funcionanta qua posibligas redaktar pagini sekure por vu: ne-ASCII signi konvertesos en la redakto-buxo kom dekesisala kodi.",
        "recentchanges-label-unpatrolled": "Ica modifiko ne patroliesas ankore.",
        "recentchanges-label-plusminus": "La pagino modifikesis segun ica quanto di *bicoki",
        "recentchanges-legend-newpage": "$1 - nova pagino",
-       "rcfilters-filter-userExpLevel-experienced-description": "Plu kam 30 dii di agemeso e 500 redakti.",
+       "rcfilters-filter-user-experience-level-experienced-description": "Plu kam 30 dii di agemeso e 500 redakti.",
        "rcnotefrom": "Infre esas la lasta chanji depos '''$2''' (montrita til '''$1''').",
        "rclistfrom": "Montrar nova chanji startante de $3 $2",
        "rcshowhideminor": "$1 mikra redakti",
        "rcshowhidemine": "$1 mea redakti",
        "rcshowhidemine-show": "Montrar",
        "rcshowhidemine-hide": "Celar",
-       "rclinks": "Montrar la lasta $1 chanji dum la lasta $2 dii<br />$3",
+       "rclinks": "Montrar la lasta $1 chanji dum la lasta $2 dii",
        "diff": "dif",
        "hist": "vers",
        "hide": "Celar",
        "logentry-newusers-create": "La konto dil uzero $1 kreesis.",
        "logentry-upload-upload": "$1 {{GENDER:$2|uploaded}} $3",
        "rightsnone": "(nula)",
-       "revdelete-summary": "redakto-rezumo",
        "searchsuggest-search": "Serchez en {{SITENAME}}",
        "searchsuggest-containing": "quan kontenas...",
        "expand_templates_output": "Rezulto",
index 652f82e..3b85292 100644 (file)
@@ -25,7 +25,8 @@
                        "Xð",
                        "Sveinki",
                        "Nemo bis",
-                       "Asmen"
+                       "Asmen",
+                       "MyraMidnight"
                ]
        },
        "tog-underline": "Undirstrika tengla:",
        "redirectedfrom": "(Endurbeint frá $1)",
        "redirectpagesub": "Tilvísunarsíða",
        "redirectto": "Endurbeint á:",
-       "lastmodifiedat": "Þessari síðu var síðast breytt $1 klukkan $2.",
+       "lastmodifiedat": "Þessari síðu var síðast breytt $1, klukkan $2.",
        "viewcount": "Þessi síða hefur verið skoðuð $1 {{PLURAL:$1|sinni|sinnum}}.",
        "protectedpage": "Vernduð síða",
        "jumpto": "Stökkva á:",
        "preview": "Forskoða",
        "showpreview": "Forskoða",
        "showdiff": "Sýna breytingar",
-       "blankarticle": "<strong>Viðvörun:</strong> Síðan sem þú ert að búa til er tóm.\nEf þú smellir aftur á \"{{int:savearticle}}\", verður síðan búin til án innihalds.",
+       "blankarticle": "<strong>Viðvörun:</strong> Síðan sem þú ert að búa til er tóm.\nEf þú smellir aftur á \"$1\", verður síðan búin til án innihalds.",
        "anoneditwarning": "<strong>Viðvörun:</strong> Þú ert ekki innskráð(ur). Vistfang þitt verður sýnt opinberlega ef þú gerir einhverjar breytingar. Ef þú <strong>[$1 skráir þig inn]</strong> eða <strong>[$2 stofnar aðgang]</strong> munu breytingarnar þínar vera tengdar við notandanafn þitt, ásamt öðrum kostum.",
        "anonpreviewwarning": "Þú ert ekki innskráð(ur). Vistfang þitt skráist í breytingaskrá síðunnar.",
        "missingsummary": "'''Áminning:''' Þú hefur ekki skrifað breytingarágrip.\nEf þú smellir á Vista aftur, verður breyting þín vistuð án þess.",
        "missingcommenttext": "Gerðu svo vel og skrifaðu athugasemd fyrir neðan.",
-       "missingcommentheader": "<strong>Áminning:</strong> Þú hefur ekki gefið upp umræðuefni.\nEf þú smellir á \"{{int:savearticle}}\" aftur, verður breyting þín vistuð án þess.",
+       "missingcommentheader": "<strong>Áminning:</strong> Þú hefur ekki gefið upp umræðuefni.\nEf þú smellir á \"$1\" aftur, verður breyting þín vistuð án þess.",
        "summary-preview": "Forskoða breytingarágrip:",
        "subject-preview": "Forskoðun umræðuefnis:",
        "blockedtitle": "Notandi er bannaður",
        "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",
-       "right-editusercssjs": "Breyta CSS- og JS-skrám annarra",
        "right-editusercss": "Breyta CSS-skrám annarra",
        "right-edituserjs": "Breyta JS-skrám annarra",
        "right-editmyusercss": "Breyta þinni eigin CSS-notandaskrá",
        "rcshowhidecategorization": "$1 flokkun síðna",
        "rcshowhidecategorization-show": "Birta",
        "rcshowhidecategorization-hide": "Fela",
-       "rclinks": "Sýna síðustu $1 breytingar síðustu $2 daga<br />$3",
+       "rclinks": "Sýna síðustu $1 breytingar síðustu $2 daga",
        "diff": "breyting",
        "hist": "breytingaskrá",
        "hide": "Fela",
        "hebrew-calendar-m6": "Adar",
        "hebrew-calendar-m6a": "Adar I",
        "hebrew-calendar-m6b": "Adar II",
-       "hebrew-calendar-m7": "Nisane",
+       "hebrew-calendar-m7": "Nisan",
        "hebrew-calendar-m8": "Iyar",
        "hebrew-calendar-m9": "Sivan",
        "hebrew-calendar-m10": "Tamuz",
        "hebrew-calendar-m6-gen": "Adar",
        "hebrew-calendar-m6a-gen": "Adar I",
        "hebrew-calendar-m6b-gen": "Adar II",
-       "hebrew-calendar-m7-gen": "Nisane",
+       "hebrew-calendar-m7-gen": "Nisan",
        "hebrew-calendar-m8-gen": "Iyar",
        "hebrew-calendar-m9-gen": "Sivan",
        "hebrew-calendar-m10-gen": "Tamuz",
index 7279b27..3231ded 100644 (file)
                        "Selven",
                        "Margherita.mignanelli",
                        "Redredsonia",
-                       "Luigi.delia"
+                       "Luigi.delia",
+                       "Samuele2002",
+                       "Kaspo"
                ]
        },
        "tog-underline": "Sottolinea i collegamenti:",
        "anontalk": "discussioni",
        "navigation": "Navigazione",
        "and": "&#32;e",
-       "qbfind": "Trova",
-       "qbbrowse": "Sfoglia",
-       "qbedit": "Modifica",
-       "qbpageoptions": "Opzioni pagina",
-       "qbmyoptions": "Le mie pagine",
        "faq": "Domande frequenti",
-       "faqpage": "Project:Domande frequenti",
        "actions": "Azioni",
        "namespaces": "Namespace",
        "variants": "Varianti",
        "edit-local": "Modifica descrizione locale",
        "create": "Crea",
        "create-local": "Aggiungi descrizione locale",
-       "editthispage": "Modifica questa pagina",
-       "create-this-page": "Crea questa pagina",
        "delete": "Cancella",
-       "deletethispage": "Cancella questa pagina",
-       "undeletethispage": "Recupera questa pagina",
        "undelete_short": "Recupera {{PLURAL:$1|una versione|$1 versioni}}",
        "viewdeleted_short": "Vedi {{PLURAL:$1|una modifica cancellata|$1 modifiche cancellate}}",
        "protect": "Proteggi",
        "protect_change": "cambia",
-       "protectthispage": "Proteggi questa pagina",
        "unprotect": "Cambia la protezione",
-       "unprotectthispage": "Modifica la protezione di questa pagina",
        "newpage": "Nuova pagina",
-       "talkpage": "Pagina di discussione",
        "talkpagelinktext": "Discussione",
        "specialpage": "Pagina speciale",
        "personaltools": "Strumenti personali",
-       "articlepage": "Visualizza la voce",
        "talk": "Discussione",
        "views": "Visite",
        "toolbox": "Strumenti",
        "tool-link-userrights": "Modifica gruppi {{GENDER:$1|utente}}",
        "tool-link-userrights-readonly": "Visualizza gruppi {{GENDER:$1|utente}}",
        "tool-link-emailuser": "Invia una email a questo {{GENDER:$1|utente}}",
-       "userpage": "Visualizza la pagina utente",
-       "projectpage": "Visualizza la pagina di servizio",
        "imagepage": "Visualizza la pagina del file",
        "mediawikipage": "Visualizza il messaggio",
        "templatepage": "Visualizza il template",
        "preview": "Anteprima",
        "showpreview": "Visualizza anteprima",
        "showdiff": "Mostra modifiche",
-       "blankarticle": "<strong>Attenzione:</strong> la pagina che stai creando è vuota.\nCliccando nuovamente su \"{{int:savearticle}}\", la pagina sarà creata senza alcun contenuto.",
+       "blankarticle": "<strong>Attenzione:</strong> la pagina che stai creando è vuota.\nCliccando nuovamente su \"$1\", la pagina sarà creata senza alcun contenuto.",
        "anoneditwarning": "<strong>Attenzione:</strong> non hai effettuato l'accesso. Se effettuerai delle modifiche il tuo indirizzo IP sarà visibile pubblicamente. Se <strong>[$1 accedi]</strong> o <strong>[$2 crei un'utenza]</strong>, le tue modifiche saranno attribuite al tuo nome utente, insieme ad altri benefici.",
        "anonpreviewwarning": "<em>Non hai effettuato l'accesso. Salvando, il tuo indirizzo IP sarà registrato nella cronologia della pagina.</em>",
-       "missingsummary": "<strong>Attenzione:</strong> non è stato specificato l'oggetto di questa modifica. Premendo di nuovo \"{{int:savearticle}}\" la modifica verrà salvata senza.",
-       "selfredirect": "<strong>Attenzione:</strong> stai reindirizzando questa pagina a se stessa.\nPotresti aver indicato la destinazione errata per il redirect, o stai modificando la pagina sbagliata.\nSe fai clic nuovamente su \"{{int:savearticle}}\", il redirect sarà creato comunque.",
+       "missingsummary": "<strong>Attenzione:</strong> non è stato specificato l'oggetto di questa modifica. Premendo di nuovo \"$1\" la modifica verrà salvata senza.",
+       "selfredirect": "<strong>Attenzione:</strong> stai reindirizzando questa pagina a se stessa.\nPotresti aver indicato la destinazione errata per il redirect, o stai modificando la pagina sbagliata.\nSe fai clic nuovamente su \"$1\", il redirect sarà creato comunque.",
        "missingcommenttext": "Inserire un commento qui sotto.",
-       "missingcommentheader": "<strong>Attenzione:</strong> non è stato specificato l'oggetto di questo commento. Premendo di nuovo \"{{int:savearticle}}\" la modifica verrà salvata senza.",
+       "missingcommentheader": "<strong>Attenzione:</strong> non è stato specificato l'oggetto di questo commento. Premendo di nuovo \"$1\" la modifica verrà salvata senza.",
        "summary-preview": "Anteprima dell'oggetto della modifica:",
        "subject-preview": "Anteprima dell'oggetto:",
        "previewerrortext": "Si è verificato un errore durante il tentativo di mostrare l'anteprima delle tue modifiche.",
        "editingsection": "Modifica di $1 (sezione)",
        "editingcomment": "Modifica di $1 (nuova sezione)",
        "editconflict": "Conflitto di edizione su $1",
-       "explainconflict": "Un altro utente ha salvato una nuova versione della pagina mentre stavi effettuando le modifiche.\nLa casella di modifica superiore contiene il testo della pagina attualmente online, così come è stato aggiornato dall'altro utente.\nLa versione con le tue modifiche è invece riportata nella casella di modifica inferiore.\nSe desideri confermarle, devi riportare le tue modifiche nel testo esistente (casella superiore).\nPremendo il pulsante '{{int:savearticle}}', verrà salvato '''solo''' il testo contenuto nella casella di modifica superiore.",
+       "explainconflict": "Un altro utente ha salvato una nuova versione della pagina mentre stavi effettuando le modifiche.\nLa casella di modifica superiore contiene il testo della pagina attualmente online, così come è stato aggiornato dall'altro utente.\nLa versione con le tue modifiche è invece riportata nella casella di modifica inferiore.\nSe desideri confermarle, devi riportare le tue modifiche nel testo esistente (casella superiore).\nPremendo il pulsante '$1', verrà salvato '''solo''' il testo contenuto nella casella di modifica superiore.",
        "yourtext": "Il tuo testo",
        "storedversion": "La versione memorizzata",
        "nonunicodebrowser": "'''Attenzione: si sta utilizzando un browser non compatibile con i caratteri Unicode. Per consentire la modifica delle pagine senza creare inconvenienti, i caratteri non ASCII vengono visualizzati nella casella di modifica sotto forma di codici esadecimali.'''",
        "search-file-match": "(corrispondenza nel contenuto del file)",
        "search-suggest": "Forse cercavi: $1",
        "search-rewritten": "Mostro i risultati per $1. Altrimenti, cerca $2.",
-       "search-interwiki-caption": "Progetti fratelli",
+       "search-interwiki-caption": "Risultati dai progetti fratelli",
        "search-interwiki-default": "Risultati da $1:",
        "search-interwiki-more": "(altro)",
        "search-interwiki-more-results": "altri risultati",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Mostra",
        "rcfilters-activefilters": "Filtri attivi",
+       "rcfilters-quickfilters": "Salva le impostazioni del filtro",
+       "rcfilters-quickfilters-placeholder-title": "Nessun collegamento salvato ancora",
+       "rcfilters-quickfilters-placeholder-description": "Per salvare le impostazioni del tuo filtro e riutilizzarle dopo, clicca l'icona segnalibro nell'area \"Filtri attivi\" qui sotto",
+       "rcfilters-savedqueries-defaultlabel": "Filtri salvati",
+       "rcfilters-savedqueries-rename": "Rinomina",
+       "rcfilters-savedqueries-setdefault": "Imposta come predefinito",
+       "rcfilters-savedqueries-unsetdefault": "Rimuovi come predefinito",
+       "rcfilters-savedqueries-remove": "Rimuovi",
+       "rcfilters-savedqueries-new-name-label": "Nome",
+       "rcfilters-savedqueries-apply-label": "Salva impostazioni",
+       "rcfilters-savedqueries-cancel-label": "Annulla",
+       "rcfilters-savedqueries-add-new-title": "Salva le impostazioni attuali del filtro",
        "rcfilters-restore-default-filters": "Ripristina i filtri predefiniti",
        "rcfilters-clear-all-filters": "Pulisci tutti i filtri",
        "rcfilters-search-placeholder": "Filtra le ultime modifiche (naviga o inizia a digitare)",
        "rcfilters-empty-filter": "Nessun filtro attivo. Sono mostrati tutti i contributi.",
        "rcfilters-filterlist-title": "Filtri",
        "rcfilters-filterlist-whatsthis": "Cos'è questo?",
+       "rcfilters-filterlist-feedbacklink": "Lascia un commento sulla nuova funzionalità sperimentale",
+       "rcfilters-highlightbutton-title": "Evidenzia risultati",
        "rcfilters-highlightmenu-title": "Seleziona un colore",
        "rcfilters-highlightmenu-help": "Seleziona un colore per evidenziare questa proprietà",
        "rcfilters-filterlist-noresults": "Nessun filtro trovato",
        "rcfilters-noresults-conflict": "Nessun risultato trovato, perché i criteri di ricerca sono in conflitto",
+       "rcfilters-state-message-subset": "Questo filtro non ha effetto perché i suoi risultati sono inclusi in quelli {{PLURAL:$2|del seguente filtro, più ampio|dei seguenti filtri, più ampi}} (prova ad evidenziarli per distinguerli): $1",
+       "rcfilters-state-message-fullcoverage": "La selezione di tutti i filtri in un gruppo è come non selezionarne alcuno, in questo modo questo filtro non ha effetto. Il gruppo include: $1",
        "rcfilters-filtergroup-registration": "Registrazione utente",
        "rcfilters-filter-registered-label": "Registrato",
-       "rcfilters-filtergroup-authorship": "Modifica paternità",
+       "rcfilters-filter-registered-description": "Contributori che hanno effettuato l'accesso.",
+       "rcfilters-filter-unregistered-label": "Non registrato",
+       "rcfilters-filter-unregistered-description": "Contributori che non hanno effettuato l'accesso.",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "Questo filtro è in conflitto con {{PLURAL:$2|il seguente filtro|i seguenti filtri}} esperienza, che {{PLURAL:$2|trova|trovano}} soltanto utenti registrati: $1",
+       "rcfilters-filtergroup-authorship": "Autore del contributo",
+       "rcfilters-filter-editsbyself-label": "Mie modifiche",
+       "rcfilters-filter-editsbyself-description": "I tuoi contributi.",
+       "rcfilters-filter-editsbyother-label": "Modifiche di altri",
+       "rcfilters-filter-editsbyother-description": "Tutte le modifiche eccetto le tue.",
+       "rcfilters-filtergroup-userExpLevel": "Livello d'esperienza (solo per utenti registrati)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "I filtri esperienza trovano solo utenti registrati, quindi questo filtro è in conflitto con il filtro \"Non registrato\".",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Il filtro \"Non registrato\" è in conflitto con uno o più filtri esperienza, che trovano solo utenti registrati. I filtri in conflitto sono evidenziati nell'area \"Filtri attivi\" qui sopra.",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Nuovi utenti",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Meno di 10 modifiche e 4 giorni di attività.",
+       "rcfilters-filter-user-experience-level-learner-label": "Principianti",
+       "rcfilters-filter-user-experience-level-learner-description": "Con più esperienza dei \"Nuovi arrivati\" ma meno degli \"Utenti esperti\".",
+       "rcfilters-filter-user-experience-level-experienced-label": "Utenti con esperienza",
+       "rcfilters-filter-user-experience-level-experienced-description": "Più di 30 giorni di attività e 500 modifiche.",
+       "rcfilters-filtergroup-automated": "Contributi automatici",
        "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-bots-description": "Modifiche effettuate da strumenti automatici.",
+       "rcfilters-filter-humans-label": "Umani (non bot)",
+       "rcfilters-filter-humans-description": "Modifiche effettuate da contributori umani.",
+       "rcfilters-filtergroup-reviewstatus": "Stato revisione",
        "rcfilters-filter-patrolled-label": "Verificate",
        "rcfilters-filter-patrolled-description": "Modifiche contrassegnate come verificate.",
        "rcfilters-filter-unpatrolled-label": "Non verificate",
        "rcfilters-filter-unpatrolled-description": "Modifiche non contrassegnate come verificate.",
        "rcfilters-filtergroup-significance": "Significato",
        "rcfilters-filter-minor-label": "Modifiche minori",
+       "rcfilters-filter-minor-description": "Modifiche che sono state indicate come minori.",
        "rcfilters-filter-major-label": "Modifiche non minori",
+       "rcfilters-filter-major-description": "Modifiche non indicate come minori.",
+       "rcfilters-filtergroup-watchlist": "Pagine osservate speciali",
+       "rcfilters-filter-watchlist-watched-label": "Negli osservati speciali",
+       "rcfilters-filter-watchlist-watched-description": "Modifiche alle voci tra i tuoi osservati speciali.",
+       "rcfilters-filter-watchlist-watchednew-label": "Nuove modifiche agli osservati speciali",
+       "rcfilters-filter-watchlist-watchednew-description": "Modifiche alle pagine nei osservati speciali che non hai visitato dopo la modifica.",
+       "rcfilters-filter-watchlist-notwatched-label": "Non negli osservati speciali",
+       "rcfilters-filter-watchlist-notwatched-description": "Tutto tranne le pagine nei tuoi osservati speciali.",
        "rcfilters-filtergroup-changetype": "Tipo di modifica",
        "rcfilters-filter-pageedits-label": "Modifiche alle pagine",
-       "rcfilters-filter-newpages-label": "Creazioni pagine",
-       "rcfilters-filter-logactions-description": "Azioni amministrative, creazione utenze, cancellazioni pagine, caricamenti....",
+       "rcfilters-filter-pageedits-description": "Modifiche al contenuto wiki, discussioni, descrizioni categoria…",
+       "rcfilters-filter-newpages-label": "Creazioni di pagine",
+       "rcfilters-filter-newpages-description": "Modifiche che creano nuove pagine.",
+       "rcfilters-filter-categorization-label": "Modifiche alle categorie",
+       "rcfilters-filter-categorization-description": "Registri di pagine aggiunte o rimosse dalle categorie.",
+       "rcfilters-filter-logactions-label": "Azioni di registro",
+       "rcfilters-filter-logactions-description": "Azioni amministrative, creazione utenze, cancellazioni pagine, caricamenti…",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "Il filtro \"Modifiche minori\" è in confitto con uno o più dei filtri \"Tipo di modifica\", perché certe modifiche non possono essere indicate come \"minori\". I filtri in conflitto sono indicati nell'area \"Filtri attivi\" qui sopra.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Alcuni tipi di modifiche non possono essere indicate come \"minori\", quindi questo filtro è in conflitto con i seguenti filtri \"Tipo di modifica\": $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Questo filtro \"Tipo di modifica\" è in conflitto con il filtro \"Modifiche minori\". Alcuni tipi di modifiche non possono essere indicati come \"minori\".",
+       "rcfilters-filtergroup-lastRevision": "Ultima versione",
+       "rcfilters-filter-lastrevision-label": "Ultima versione",
+       "rcfilters-filter-lastrevision-description": "Le ultime modifiche ad una pagina.",
+       "rcfilters-filter-previousrevision-label": "Versioni precedenti",
+       "rcfilters-filter-previousrevision-description": "Tutte le modifiche che non sono l'ultima modifica effettuata sulla voce.",
+       "rcfilters-filter-excluded": "Escluso",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:non</strong> $1",
+       "rcfilters-view-tags": "Etichette",
        "rcnotefrom": "Di seguito {{PLURAL:$5|è elencata la modifica apportata|sono elencate le modifiche apportate}} a partire da <strong>$3, $4</strong> (mostrate fino a <strong>$1</strong>).",
+       "rclistfromreset": "Reimposta la selezione della data",
        "rclistfrom": "Mostra le modifiche apportate a partire da $3 $2",
        "rcshowhideminor": "$1 le modifiche minori",
        "rcshowhideminor-show": "Mostra",
        "rcshowhidecategorization": "$1 categorizzazione della pagina",
        "rcshowhidecategorization-show": "Mostra",
        "rcshowhidecategorization-hide": "Nascondi",
-       "rclinks": "Mostra le $1 modifiche più recenti apportate negli ultimi $2 giorni<br />$3",
+       "rclinks": "Mostra le $1 modifiche più recenti apportate negli ultimi $2 giorni",
        "diff": "diff",
        "hist": "cron",
        "hide": "Nascondi",
        "php-uploaddisabledtext": "Il caricamento di file tramite PHP è disabilitato. Controlla la configurazione di file_uploads.",
        "uploadscripted": "Questo file contiene codice HTML o di script, che potrebbe essere interpretato erroneamente da un browser web.",
        "upload-scripted-pi-callback": "Impossibile caricare un file che contiene istruzione di elaborazione in XML-stylesheet.",
+       "upload-scripted-dtd": "Impossibile caricare file SVG che contengono una dichiarazione DTD non standard.",
        "uploaded-script-svg": "Trovato elemento di script \"$1\" nel file caricato in formato SVG.",
        "uploaded-hostile-svg": "Trovato CSS non sicuro nell'elemento di stile del file in formato SVG caricato.",
        "uploaded-event-handler-on-svg": "Impostazione gestione eventi ed attributi <code>$1=\"$2\"</code> non è consentito in file SGV",
        "enotif_body_intro_moved": "La pagina $1 di {{SITENAME}} è stata spostata da {{gender:$2|$2}} il $PAGEEDITDATE, vedi $3 per la versione attuale.",
        "enotif_body_intro_restored": "La pagina $1 di {{SITENAME}} è stata ripristinata da {{gender:$2|$2}} il $PAGEEDITDATE, vedi $3 per la versione attuale.",
        "enotif_body_intro_changed": "La pagina $1 di {{SITENAME}} è stata modificata da {{gender:$2|$2}} il $PAGEEDITDATE, vedi $3 per la versione attuale.",
-       "enotif_lastvisited": "Visita $1 per vedere tutte le modifiche dall'ultima visita.",
-       "enotif_lastdiff": "Visita $1 per vedere la modifica.",
+       "enotif_lastvisited": "Per tutte le modifiche dalla tua ultima visita, vedi $1",
+       "enotif_lastdiff": "Per vedere questa modifica, vedi $1",
        "enotif_anon_editor": "utente anonimo $1",
        "enotif_body": "Gentile $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nOggetto dell'intervento, inserito dall'autore: $PAGESUMMARY $PAGEMINOREDIT\n\nContatta l'autore:\nvia posta elettronica: $PAGEEDITOR_EMAIL\nsul sito: $PAGEEDITOR_WIKI\n\nNon verranno inviate altre notifiche in caso di ulteriori attività, se non visiti la pagina dopo aver effettuato l'accesso. Inoltre, è possibile modificare le impostazioni di notifica per tutte le pagine nella lista degli osservati speciali.\n\nIl sistema di notifica di {{SITENAME}}, al tuo servizio\n\n--\nPer modificare le impostazioni delle notifiche via posta elettronica, visita \n{{canonicalurl:{{#special:Preferences}}}}\n\nPer modificare la lista degli osservati speciali, visita \n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPer rimuovere la pagina dalla lista degli osservati speciali, visita\n$UNWATCHURL\n\nPer commentare e ricevere aiuto:\n$HELPPAGE",
        "created": "creata",
        "sp-contributions-uploads": "file caricati",
        "sp-contributions-logs": "registri",
        "sp-contributions-talk": "discussione",
-       "sp-contributions-userrights": "gestione dei permessi",
+       "sp-contributions-userrights": "gestione permessi {{GENDER:$1|utente}}",
        "sp-contributions-blocked-notice": "Questo utente è attualmente bloccato.\nL'ultimo elemento del registro dei blocchi è riportato di seguito per informazione:",
        "sp-contributions-blocked-notice-anon": "Questo indirizzo IP è attualmente bloccato.\nL'ultimo elemento del registro dei blocchi è riportato di seguito per informazione:",
        "sp-contributions-search": "Ricerca contributi",
        "autoblocklist-submit": "Ricerca",
        "autoblocklist-legend": "Elenca autoblocchi",
        "autoblocklist-localblocks": "{{PLURAL:$1|Autoblocco locale|Autoblocchi locali}}",
+       "autoblocklist-total-autoblocks": "Numero totale di autoblocchi: $1",
        "autoblocklist-empty": "L'elenco dei autoblocchi è vuoto.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Altro autoblocco|Altri autoblocchi}}",
        "ipblocklist": "Utenti bloccati",
        "move-page-legend": "Spostamento di pagina",
        "movepagetext": "Questo modulo consente di rinominare una pagina, spostando tutta la sua cronologia al nuovo nome. La pagina attuale diverrà automaticamente un redirect al nuovo titolo. Puoi aggiornare automaticamente i redirect che puntano al titolo originale. Puoi decidere di non farlo, ma ricordati di verificare che lo spostamento non abbia creato [[Special:DoubleRedirects|doppi redirect]] o [[Special:BrokenRedirects|redirect errati]]. L'onere di garantire che i collegamenti alla pagina restino corretti spetta a chi la sposta.\n\nSi noti che la pagina <strong>non</strong> sarà spostata se ne esiste già una con il nuovo nome, a meno che quest'ultima non sia costituita solo da un redirect e sia priva di versioni precedenti. In caso di spostamento errato si può quindi tornare subito al vecchio titolo, e non è possibile sovrascrivere per errore una pagina già esistente.\n\n<strong>Nota:</strong>\nUn cambiamento così drastico può creare contrattempi e problemi, soprattutto per le pagine più visitate. Accertarsi di aver valutato le conseguenze dello spostamento prima di procedere.",
        "movepagetext-noredirectfixer": "Questo modulo consente di rinominare una pagina, spostando tutta la sua cronologia al nuovo nome. La pagina attuale diverrà automaticamente un redirect al nuovo titolo. Controlla che lo spostamento non abbia creato [[Special:DoubleRedirects|doppi redirect]] o [[Special:BrokenRedirects|redirect errati]]. L'onere di garantire che i collegamenti alla pagina restino corretti spetta a chi la sposta.\n\nSi noti che la pagina <strong>non</strong> sarà spostata se ne esiste già una con il nuovo nome, a meno che non sia costituita solo da un redirect e sia priva di versioni precedenti. In caso di spostamento errato si può quindi tornare subito al vecchio titolo, e non è possibile sovrascrivere per errore una pagina già esistente.\n\n<strong>Nota:</strong>\nUn cambiamento così drastico può creare contrattempi e problemi, soprattutto per le pagine più visitate. Accertarsi di aver valutato le conseguenze dello spostamento prima di procedere.",
-       "movepagetalktext": "Se selezioni questa casella, la corrispondente pagina di discussione sarà spostata automaticamente al nuovo titolo, a meno che esiste già una pagina di discussione non vuota.\n\nIn questi casi, dovrai spostare o unire manualmente la pagina, se lo si ritiene opportuno.",
+       "movepagetalktext": "Se selezioni questa casella, la corrispondente pagina di discussione sarà spostata automaticamente al nuovo titolo, a meno che esista già una pagina di discussione non vuota.\n\nIn questi casi, se lo ritieni opportuno, dovrai spostare o unire manualmente la pagina.",
        "moveuserpage-warning": "'''Attenzione:''' Si sta per spostare una pagina utente. Nota che verrà spostata solamente la pagina. L'utente ''non'' sarà rinominato.",
        "movecategorypage-warning": "<strong>Attenzione:</strong> si sta per spostare una categoria. Solo questa pagina verrà spostata: tutte le pagine nella vecchia categoria <em>non</em> saranno inserite nella nuova.",
        "movenologintext": "Lo spostamento delle pagine è consentito solo agli utenti registrati che hanno eseguito l'[[Special:UserLogin|accesso]] al sito.",
        "tooltip-pt-mycontris": "La lista dei {{GENDER:|tuoi}} contributi",
        "tooltip-pt-anoncontribs": "Un elenco delle modifiche fatte da questo indirizzo IP",
        "tooltip-pt-login": "Si consiglia di effettuare l'accesso, anche se non è obbligatorio",
+       "tooltip-pt-login-private": "Devi accedere per utilizzare questo wiki",
        "tooltip-pt-logout": "Uscita (logout)",
        "tooltip-pt-createaccount": "Si consiglia di registrarsi e di effettuare l'accesso, anche se non è obbligatorio",
        "tooltip-ca-talk": "Vedi le discussioni relative a questa pagina",
        "newimages-legend": "Filtra",
        "newimages-label": "Nome file (o una parte di esso):",
        "newimages-user": "Indirizzo IP o nome utente",
+       "newimages-newbies": "Mostra solo i contributi dei nuovi utenti",
        "newimages-showbots": "Mostra caricamenti di bot",
        "newimages-hidepatrolled": "Nascondi caricamenti verificati",
+       "newimages-mediatype": "Tipo di supporto:",
        "noimages": "Non c'è nulla da vedere.",
        "gallery-slideshow-toggle": "Alterna miniature",
        "ilsubmit": "Ricerca",
        "tags-create-reason": "Motivo:",
        "tags-create-submit": "Crea",
        "tags-create-no-name": "È necessario specificare un nome di tag.",
-       "tags-create-invalid-chars": "I nomi dei tag non devono contenere virgole (<code>,</code>) o barre (<code>/</code>).",
+       "tags-create-invalid-chars": "I nomi dei tag non devono contenere virgole (<code>,</code>), barre verticali (<code>|</code>), o barre oblique (<code>/</code>).",
        "tags-create-invalid-title-chars": "I nomi dei tag non devono contenere caratteri che non possono essere utilizzati nei titoli delle pagine.",
        "tags-create-already-exists": "Il tag \"$1\" esiste già.",
        "tags-create-warnings-above": "{{PLURAl:$2|È stato rilevato il seguente pericolo|Sono stati rilevati i seguenti pericoli}} mentre si cercava di creare l'etichetta \"$1\":",
        "htmlform-user-not-exists": "<strong>$1</strong> non esiste.",
        "htmlform-user-not-valid": "<strong>$1</strong> non è un nome utente valido.",
        "logentry-delete-delete": "$1 {{GENDER:$2|ha cancellato}} la pagina $3",
+       "logentry-delete-delete_redir": "$1 {{GENDER:$2|ha cancellato}} il redirect $3 con la sovrascrittura",
        "logentry-delete-restore": "$1 {{GENDER:$2|ha ripristinato}} la pagina $3 ($4)",
        "logentry-delete-restore-nocount": "$1 {{GENDER:$2|ha ripristinato}} la pagina $3",
        "restore-count-revisions": "{{PLURAL:$1|1 versione|$1 versioni}}",
        "pagelang-reason": "Motivo",
        "pagelang-submit": "Invia",
        "pagelang-nonexistent-page": "La pagina $1 non esiste.",
+       "pagelang-db-failed": "Il database non è stato in grado di modificare la lingua della pagina.",
        "right-pagelang": "Modifica la lingua della pagina",
        "action-pagelang": "modificare la lingua della pagina",
        "log-name-pagelang": "Modifiche lingua",
        "special-characters-group-thai": "Thailandese",
        "special-characters-group-lao": "Lao",
        "special-characters-group-khmer": "Khmer",
+       "special-characters-group-canadianaboriginal": "Canadese aborigeno",
        "special-characters-title-endash": "lineetta enne",
        "special-characters-title-emdash": "lineetta emme",
        "special-characters-title-minus": "segno meno",
        "mw-widgets-titleinput-description-new-page": "questa pagina non esiste ancora",
        "mw-widgets-titleinput-description-redirect": "reindirizzamento a $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Aggiungi una categoria...",
+       "mw-widgets-usersmultiselect-placeholder": "Aggiungi altri...",
+       "date-range-from": "Dalla data:",
+       "date-range-to": "Alla data:",
        "sessionmanager-tie": "Non è possibile combinare più tipi di richieste di autenticazione: $1.",
        "sessionprovider-generic": "sessioni $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sessioni basate su cookie",
        "log-action-filter-contentmodel-change": "Modifica del modello di contenuto",
        "log-action-filter-contentmodel-new": "Creazione di pagina con modello di contenuto non predefinito",
        "log-action-filter-delete-delete": "Cancellazione pagina",
+       "log-action-filter-delete-delete_redir": "Sovrascrittura di redirect",
        "log-action-filter-delete-restore": "Ripristino pagina",
        "log-action-filter-delete-event": "Cancellazione registro",
        "log-action-filter-delete-revision": "Cancellazione versione",
        "revid": "versione $1",
        "pageid": "ID della pagina $1",
        "rawhtml-notallowed": "I tag &lt;html&gt; non possono essere utilizzati al di fuori delle normali pagine.",
-       "gotointerwiki-invalid": "Il titolo specificato non è valido."
+       "gotointerwiki": "Stai per lasciare {{SITENAME}}",
+       "gotointerwiki-invalid": "Il titolo specificato non è valido.",
+       "gotointerwiki-external": "Stai per lasciare {{SITENAME}} per visitare [[$2]], che è un sito web diverso.\n\n'''[$1 Continua su $1]'''",
+       "undelete-cantedit": "Non puoi ripristinare questa pagina poiché non hai sufficienti permessi per modificarla.",
+       "undelete-cantcreate": "Non puoi ripristinare questa pagina poiché la pagina con questo nome non è ancora inesistente e non hai sufficienti permessi per crearla.",
+       "pagedata-not-acceptable": "Nessun formato corrispondente trovato. Tipi MIME supportati: $1",
+       "pagedata-bad-title": "Titolo non valido: $1."
 }
index 285302b..21ea0bc 100644 (file)
@@ -80,7 +80,9 @@
                        "にょきにょき",
                        "おはぐろ蜻蛉",
                        "Aefgh39622",
-                       "Ayame"
+                       "Ayame",
+                       "Omotecho",
+                       "Thibaut120094"
                ]
        },
        "tog-underline": "リンクの下線:",
        "anontalk": "トーク",
        "navigation": "案内",
        "and": "&#32;および",
-       "qbfind": "検索",
-       "qbbrowse": "閲覧",
-       "qbedit": "編集",
-       "qbpageoptions": "このページについて",
-       "qbmyoptions": "自分のページ",
        "faq": "よくある質問と回答",
-       "faqpage": "Project:よくある質問と回答",
        "actions": "操作",
        "namespaces": "名前空間",
        "variants": "変種",
        "edit-local": "ローカルの解説を編集",
        "create": "作成",
        "create-local": "ローカルの解説を作成",
-       "editthispage": "このページを編集",
-       "create-this-page": "このページを作成",
        "delete": "削除",
-       "deletethispage": "このページを削除",
-       "undeletethispage": "このページを復元",
        "undelete_short": "{{PLURAL:$1|$1 編集}}を復元",
        "viewdeleted_short": "{{PLURAL:$1|削除された $1 編集}}を閲覧",
        "protect": "保護",
        "protect_change": "設定変更",
-       "protectthispage": "このページを保護",
        "unprotect": "保護の設定変更",
-       "unprotectthispage": "このページの保護を変更",
        "newpage": "新規ページ",
-       "talkpage": "このページについて話し合う",
        "talkpagelinktext": "トーク",
        "specialpage": "特別ページ",
        "personaltools": "個人用ツール",
-       "articlepage": "本文を表示",
        "talk": "議論",
        "views": "表示",
        "toolbox": "ツール",
        "tool-link-userrights": "{{GENDER:$1|利用者}}グループの変更",
        "tool-link-userrights-readonly": "{{GENDER:$1|利用者}}グループの表示",
        "tool-link-emailuser": "この{{GENDER:$1|利用者}}にメールを送信",
-       "userpage": "利用者ページを表示",
-       "projectpage": "プロジェクトのページを表示",
        "imagepage": "ファイルのページを表示",
        "mediawikipage": "メッセージのページを表示",
        "templatepage": "テンプレートのページを表示",
        "missingarticle-rev": "(版番号: $1)",
        "missingarticle-diff": "(差分: $1, $2)",
        "readonly_lag": "データベースはスレーブのデータベースサーバーがマスターに同期するまで自動的にロックされています",
+       "nonwrite-api-promise-error": "「Promise-Non-Write-API-Action」HHTPヘッダーが送信されましたが、リクエストはAPI書き込みモジュールに送信されました。",
        "internalerror": "内部エラー",
        "internalerror_info": "内部エラー: $1",
        "internalerror-fatal-exception": "種別「$1」の致命的例外",
        "createacct-email-ph": "メールアドレスを入力",
        "createacct-another-email-ph": "メールアドレスを入力",
        "createaccountmail": "無作為な仮パスワードを生成し、指定のメールアドレスに送信",
+       "createaccountmail-help": "パスワードを知ることなく他人のアカウントを作成することができます。",
        "createacct-realname": "本名 (省略可能)",
        "createacct-reason": "理由",
        "createacct-reason-ph": "アカウントを作成する理由",
        "botpasswords-deleted-body": "利用者「$2」のボット名「$1」のためのパスワードが削除されました。",
        "botpasswords-newpassword": "<strong>$1</strong>用の新しいパスワードは<strong>$2</strong>です。<em>後で参照するために、この情報を控えておいてください。</em><br />(古いボットの制約などでログイン名と利用者名が同じでなければならない場合は、<strong>$3</strong>を利用者名とし、<strong>$4</strong>をパスワードとしてください。)",
        "botpasswords-no-provider": "BotPasswordsSessionProvider が有効ではありません。",
+       "botpasswords-restriction-failed": "ボットパスワード制限によりログインできません。",
        "botpasswords-invalid-name": "指定された利用者名には、ボット用パスワードの区切りである「$1」 が含まれていません。",
        "botpasswords-not-exist": "利用者「$1」はボット「$2」のパスワードを所持していません。",
        "resetpass_forbidden": "パスワードは変更できません",
        "passwordreset-emailelement": "利用者名: \n$1\n\n仮パスワード: \n$2",
        "passwordreset-emailsentemail": "このメールアドレスがあなたのアカウントに関連付けられている場合は、パスワードリセットのメールが送信されます。",
        "passwordreset-emailsentusername": "この利用者名に関連付けられたメールアドレスがある場合は、パスワードリセットのメールが送信されます。",
+       "passwordreset-nocaller": "送信者の情報を提供する必要があります",
+       "passwordreset-nosuchcaller": "送信者が存在しません: $1",
        "passwordreset-ignored": "パスワードのリセットが処理されませんでした。プロバイダーが設定されていない可能性があります。",
        "passwordreset-invalidemail": "無効なメールアドレスです",
        "passwordreset-nodata": "利用者名もメールアドレスも入力されていません",
        "blankarticle": "<strong>警告:</strong>作成しようとしているページの内容がありません。{{Int:savearticle}}\"をもう一度クリックすると、中身の無いページが作成されます。",
        "anoneditwarning": "<strong>警告:</strong> ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。<strong>[$1 ログイン]</strong>または<strong>[$2 アカウントを作成]</strong>すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。",
        "anonpreviewwarning": "<em>ログインしていません。投稿を保存すると、ご使用中のIPアドレスがこのページの履歴に記録されます。</em>",
-       "missingsummary": "<strong>注意:</strong> 編集内容の要約が空欄です。\n「{{int:savearticle}}」をもう一度クリックすると、編集内容は要約なしで保存されます。",
-       "selfredirect": "<strong>警告:</strong> あなたはこのページを自身に転送させようとしています。\n転送先の設定を間違ったか、あるいは間違ったページを編集しているかもしれません。\n「{{int:savearticle}}」を再度クリックすると、そのままの転送ページが作成されます。",
+       "missingsummary": "<strong>注意:</strong> 編集内容の要約が空欄です。\n「$1」をもう一度クリックすると、編集内容は要約なしで保存されます。",
+       "selfredirect": "<strong>警告:</strong> あなたはこのページを自身に転送させようとしています。\n転送先の設定を間違ったか、あるいは間違ったページを編集しているかもしれません。\n「$1」を再度クリックすると、そのままの転送ページが作成されます。",
        "missingcommenttext": "以下にコメントを入力してください。",
-       "missingcommentheader": "<strong>注意:</strong> このコメントに対する題名が空欄です。\n「{{int:savearticle}}」ボタンをもう一度押すと、空のまま編集が保存されます。",
+       "missingcommentheader": "<strong>注意:</strong> このコメントに対する題名が空欄です。\n「$1」ボタンをもう一度押すと、空のまま編集が保存されます。",
        "summary-preview": "要約のプレビュー:",
        "subject-preview": "題名のプレビュー:",
        "previewerrortext": "変更のプレビューを処理中に、エラーが発生しました。",
        "blockedtitle": "利用者はブロックされています",
        "blockedtext": "<strong>この利用者名またはIPアドレスはブロックされています。</strong>\n\nブロックは$1によって実施されました。\nブロックの理由は <em>$2</em> です。\n\n* ブロック開始日時: $8\n* ブロック解除予定: $6\n* ブロック対象: $7\n\nこのブロックについて、$1もしくは他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]に問い合わせることができます。\nただし、[[Special:Preferences|個人設定]]で有効なメールアドレスが登録されていない場合、またはメール送信機能の使用がブロックされている場合、「この利用者にメールを送信」の機能は使えません。\n現在ご使用中のIPアドレスは$3、このブロックIDは#$5です。\nお問い合わせの際には、上記の情報を必ず書いてください。",
        "autoblockedtext": "このIPアドレスは、$1によりブロックされた利用者によって使用されたため、自動的にブロックされています。\n理由は次の通りです。\n\n:<em>$2</em>\n\n* ブロック開始日時: $8\n* ブロック解除予定: $6\n* ブロック対象: $7\n\n$1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこのブロックについて問い合わせることができます。\n\nただし、[[Special:Preferences|個人設定]]に正しいメールアドレスが登録されていない場合、またはメール送信がブロックされている場合、「この利用者にメールを送信」機能を使用できないことに注意してください。\n\n現在ご使用中のIPアドレスは$3 、このブロックIDは#$5です。\nお問い合わせの際は、上記の情報を必ず書いてください。",
+       "systemblockedtext": "あなたの利用者名またはIPアドレスはMediaWikiによって自動的にブロックされています。\n理由は次の通りです。\n\n:<em>$2</em>\n\n* ブロック開始日時: $8\n* ブロック解除予定: $6\n* ブロック対象: $7\n\nあなたの現在のIPアドレスは $3 です。\nお問い合わせの際は、上記の詳細情報をすべて含めてください。",
        "blockednoreason": "理由が設定されていません",
        "whitelistedittext": "このページを編集するには$1してください。",
        "confirmedittext": "ページの編集を始める前にメールアドレスの確認をする必要があります。\n[[Special:Preferences|個人設定]]でメールアドレスを設定し、確認を行ってください。",
        "editingsection": "「$1」を編集中 (節単位)",
        "editingcomment": "「$1」を編集中 (新しい節)",
        "editconflict": "編集の競合: $1",
-       "explainconflict": "このページを編集し始めた後に、他の誰かがこのページを変更しました。\n上側のテキスト領域は現在の最新の状態です。\n編集していた文章は下側のテキスト領域に示されています。\n編集していた文章を、上側のテキスト領域の、既存の文章に組み込んでください。\n上側のテキスト領域の内容<strong>だけ</strong>が、「{{int:savearticle}}」をクリックした時に実際に保存されます。",
+       "explainconflict": "このページを編集し始めた後に、他の誰かがこのページを変更しました。\n上側のテキスト領域は現在の最新の状態です。\n編集していた文章は下側のテキスト領域に示されています。\n編集していた文章を、上側のテキスト領域の、既存の文章に組み込んでください。\n上側のテキスト領域の内容<strong>だけ</strong>が、「$1」をクリックした時に実際に保存されます。",
        "yourtext": "編集中の文章",
        "storedversion": "保存された版",
        "nonunicodebrowser": "<strong>警告: ご使用中のブラウザーは Unicode に未対応です。</strong>\n安全にページを編集する回避策を表示しています: 編集ボックス内の非 ASCII 文字を 16 進数コードで表現しています。",
        "search-file-match": "(ファイルの内容との一致)",
        "search-suggest": "もしかして: $1",
        "search-rewritten": "$1 の結果を表示しています。これは $2 の代わりに検索したものです。",
-       "search-interwiki-caption": "姉妹プロジェクト",
+       "search-interwiki-caption": "姉妹プロジェクトの結果",
        "search-interwiki-default": "$1からの結果:",
        "search-interwiki-more": "(続き)",
        "search-interwiki-more-results": "結果をさらに取得",
        "search-external": "外部検索",
        "searchdisabled": "{{SITENAME}}の検索機能は無効化されています。\nさしあたってはGoogleなどで検索できます。\nただし外部の検索エンジンの索引にある{{SITENAME}}のコンテンツは古い場合があります。",
        "search-error": "検索する際にエラーが発生しました: $1",
+       "search-warning": "検索中にエラーが発生しました: $1",
        "preferences": "個人設定",
        "mypreferences": "個人設定",
        "prefs-edits": "編集回数:",
        "userrights-groupsmember": "所属グループ:",
        "userrights-groupsmember-auto": "自動的に付与される権限:",
        "userrights-groupsmember-type": "$1",
-       "userrights-groups-help": "ã\81\93ã\81®å\88©ç\94¨è\80\85ã\81\8cå±\9eã\81\99ã\82\8bã\82°ã\83«ã\83¼ã\83\97ã\82\92å¤\89æ\9b´ã\81§ã\81\8dã\81¾ã\81\99ã\80\82\n* ã\83\81ã\82§ã\83\83ã\82¯ã\81\8cå\85¥ã\81£ã\81¦ã\81\84ã\82\8bã\83\9cã\83\83ã\82¯ã\82¹ã\81¯ã\80\81ã\81\93ã\81®å\88©ç\94¨è\80\85ã\81\8cã\81\9dã\81®ã\82°ã\83«ã\83¼ã\83\97ã\81«å±\9eã\81\97ã\81¦ã\81\84ã\82\8bã\81\93ã\81¨ã\82\92æ\84\8få\91³ã\81\97ã\81¾ã\81\99ã\80\82\n* ã\83\81ã\82§ã\83\83ã\82¯ã\81\8cå\85¥ã\81£ã\81¦ã\81\84ã\81ªã\81\84ã\83\9cã\83\83ã\82¯ã\82¹ã\81¯ã\80\81ã\81\93ã\81®å\88©ç\94¨è\80\85ã\81\8cã\81\9dã\81®ã\82°ã\83«ã\83¼ã\83\97ã\81«å±\9eã\81\97ã\81¦ã\81\84ã\81ªã\81\84ã\81\93ã\81¨ã\82\92æ\84\8få\91³ã\81\97ã\81¾ã\81\99ã\80\82\n*ã\80\8c\80\8dã\81¯ã\82°ã\83«ã\83¼ã\83\97ã\81«ä¸\80æ\97¦è¿½å\8a ã\81\97ã\81\9få ´å\90\88ã\81«é\99¤å\8e» (ã\81\82ã\82\8bã\81\84ã\81¯ã\81\9dã\81®é\80\86) ã\81\8cã\81§ã\81\8dã\81ªã\81\84ã\81\93ã\81¨ã\82\92示ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82\n*ã\80\8c\80\8dã\81¯æ\9c\89å\8a¹æ\9c\9fé\99\90ã\81®å»¶é\95·ã\81®ã\81¿ã\82\92è¡\8cã\81\86ã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\99ã\81\8cã\80\81現在の期限よりも短縮することはできません。",
+       "userrights-groups-help": "ã\81\93ã\81®å\88©ç\94¨è\80\85ã\81\8cå±\9eã\81\99ã\82\8bã\82°ã\83«ã\83¼ã\83\97ã\82\92å¤\89æ\9b´ã\81§ã\81\8dã\81¾ã\81\99ã\80\82\n* ã\83\81ã\82§ã\83\83ã\82¯ã\81\8cå\85¥ã\81£ã\81¦ã\81\84ã\82\8bã\83\9cã\83\83ã\82¯ã\82¹ã\81¯ã\80\81ã\81\93ã\81®å\88©ç\94¨è\80\85ã\81\8cã\81\9dã\81®ã\82°ã\83«ã\83¼ã\83\97ã\81«å±\9eã\81\97ã\81¦ã\81\84ã\82\8bã\81\93ã\81¨ã\82\92æ\84\8få\91³ã\81\97ã\81¾ã\81\99ã\80\82\n* ã\83\81ã\82§ã\83\83ã\82¯ã\81\8cå\85¥ã\81£ã\81¦ã\81\84ã\81ªã\81\84ã\83\9cã\83\83ã\82¯ã\82¹ã\81¯ã\80\81ã\81\93ã\81®å\88©ç\94¨è\80\85ã\81\8cã\81\9dã\81®ã\82°ã\83«ã\83¼ã\83\97ã\81«å±\9eã\81\97ã\81¦ã\81\84ã\81ªã\81\84ã\81\93ã\81¨ã\82\92æ\84\8få\91³ã\81\97ã\81¾ã\81\99ã\80\82\n*ã\80\8c\80\8dã\81¯ã\82°ã\83«ã\83¼ã\83\97ã\81«ä¸\80æ\97¦è¿½å\8a ã\81\97ã\81\9få ´å\90\88ã\81«é\99¤å\8e» (ã\81\82ã\82\8bã\81\84ã\81¯ã\81\9dã\81®é\80\86) ã\81\8cã\81§ã\81\8dã\81ªã\81\84ã\81\93ã\81¨ã\82\92示ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82\n*ã\80\8c\80\8dã\81¯æ\9c\89å\8a¹æ\9c\9fé\99\90ã\81®å»¶é\95·ã\81®ã\81¿ã\82\92è¡\8cã\81\86ã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bã\82°ã\83«ã\83¼ã\83\97ã\81®å\8f\82å\8a è³\87æ ¼ã\82\92示ã\81\97ã\81¾ã\81\99現在の期限よりも短縮することはできません。",
        "userrights-reason": "理由:",
        "userrights-no-interwiki": "他ウィキ上における利用者権限の編集権限は、ありません。",
        "userrights-nodatabase": "データベース$1は存在しないか、ローカル上にありません。",
        "userrights-expiry-options": "1日:1 day,1週間:1 week,1か月:1 month,3か月:3 months,6か月:6 months,1 年:1 year",
        "userrights-invalid-expiry": "「$1」グループに指定された有効期限は無効です。",
        "userrights-expiry-in-past": "「$1」グループに指定された有効期限は過去の時刻です。",
-       "userrights-cannot-shorten-expiry": "「$1」グループの有効期限を短縮できません。このグループを与奪できる権限を持つ利用者だけが有効期限を短縮できます。",
+       "userrights-cannot-shorten-expiry": "「$1」グループの参加資格の有効期限を短縮できません。このグループを与奪できる権限を持つ利用者だけが有効期限を短縮できます。",
        "userrights-conflict": "利用者権限の変更が競合しています! 変更内容を確認してください。",
        "group": "グループ:",
        "group-user": "登録利用者",
        "right-applychangetags": "自分の編集に[[Special:Tags|タグ]]を適用する",
        "right-changetags": "個々の版と記録項目の任意の[[Special:Tags|タグ]]の追加と削除",
        "right-deletechangetags": "データベースから[[Special:Tags|タグ]]を削除します",
+       "grant-generic": "「$1」の権限バンドル",
+       "grant-group-page-interaction": "ページとの相互作用",
+       "grant-group-file-interaction": "メディアとの相互作用",
+       "grant-group-watchlist-interaction": "ウォッチリストとの相互作用",
        "grant-group-email": "メールの送信",
+       "grant-group-high-volume": "大量の活動を行う",
        "grant-group-customization": "カスタマイズと個人設定",
+       "grant-group-administration": "管理操作を行う",
        "grant-group-private-information": "あなたの個人情報にアクセスする",
        "grant-group-other": "その他の活動",
        "grant-blockusers": "利用者をブロックおよびブロック解除",
        "grant-basic": "基礎的な権限",
        "grant-viewdeleted": "削除されたファイルとページを閲覧",
        "grant-viewmywatchlist": "自身のウォッチリストを閲覧",
+       "grant-viewrestrictedlogs": "制限されたログを表示する",
        "newuserlogpage": "アカウント作成記録",
        "newuserlogpagetext": "以下はアカウント作成の記録です。",
        "rightslog": "利用者権限の変更記録",
        "action-deleterevision": "版の削除",
        "action-deletelogentry": "記録項目の削除",
        "action-deletedhistory": "ページの削除履歴の閲覧",
+       "action-deletedtext": "削除された版の本文を閲覧する",
        "action-browsearchive": "削除されたページの検索",
        "action-undelete": "ページの復元",
        "action-suppressrevision": "隠された版の確認と復元",
        "action-applychangetags": "自分の編集にタグを適用する",
        "action-changetags": "個々の版および記録項目への任意のタグの追加と除去",
        "action-deletechangetags": "データベースからタグの削除",
+       "action-purge": "キャッシュの破棄",
        "nchanges": "$1 {{PLURAL:$1|回の変更}}",
        "enhancedrc-since-last-visit": "最終閲覧以降 $1 {{PLURAL:$1|件}}",
        "enhancedrc-history": "履歴",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|新しいページ一覧]]も参照)",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "表示",
+       "rcfilters-activefilters": "絞り込み",
+       "rcfilters-quickfilters": "フィルター設定を保存",
+       "rcfilters-quickfilters-placeholder-title": "リンクはまだ保存されていません",
+       "rcfilters-quickfilters-placeholder-description": "フィルターの設定を保存し、後で再び使用するためには、下のアクティブフィルター内のブックマークアイコンをクリックしてください。",
+       "rcfilters-savedqueries-defaultlabel": "フィルターを保存",
+       "rcfilters-savedqueries-rename": "名称を変更",
+       "rcfilters-savedqueries-setdefault": "デフォルトに設定",
+       "rcfilters-savedqueries-unsetdefault": "既定から削除",
+       "rcfilters-savedqueries-remove": "削除",
+       "rcfilters-savedqueries-new-name-label": "名称",
+       "rcfilters-savedqueries-apply-label": "設定を保存",
+       "rcfilters-savedqueries-cancel-label": "キャンセル",
+       "rcfilters-savedqueries-add-new-title": "現在のフィルター設定を保存する",
+       "rcfilters-restore-default-filters": "標準設定の絞り込み条件を適用",
        "rcfilters-clear-all-filters": "すべてのフィルターをクリア",
+       "rcfilters-search-placeholder": "絞り込みを行う(一覧から選択、または検索)",
        "rcfilters-invalid-filter": "無効なフィルター",
+       "rcfilters-empty-filter": "絞り込みは行われていません。全ての項目が表示さます。",
        "rcfilters-filterlist-title": "フィルター",
+       "rcfilters-filterlist-whatsthis": "これは何?",
+       "rcfilters-filterlist-feedbacklink": "絞り込み機能(ベータ版)に関するフィードバックを行う",
+       "rcfilters-highlightbutton-title": "該当項目を強調表示する",
        "rcfilters-highlightmenu-title": "色を選ぶ",
+       "rcfilters-highlightmenu-help": "この項目を何色で強調表示するか選択してください",
        "rcfilters-filterlist-noresults": "フィルターが見つかりませんでした",
+       "rcfilters-noresults-conflict": "検索条件が競合しているため、絞り込みできません",
+       "rcfilters-state-message-subset": "この項目による絞り込みは全て以下の{{PLURAL:$2|項目}}による絞り込みの結果に含まれています(強調表示を使うことで該当項目を抽出できます) : $1",
+       "rcfilters-state-message-fullcoverage": "同じグループの全ての項目が選択されています。絞り込みできません。同じグループに含まれる項目 :$1",
        "rcfilters-filtergroup-registration": "利用者登録",
        "rcfilters-filter-registered-label": "登録済み",
        "rcfilters-filter-registered-description": "ログイン済みの編集者。",
        "rcfilters-filter-unregistered-label": "未登録",
+       "rcfilters-filter-unregistered-description": "ログインしていない利用者。",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "この項目は、登録済み利用者を編集回数別で絞り込む以下の{{PLURAL:$2|項目}}と競合しています :$1",
+       "rcfilters-filtergroup-authorship": "自分の編集か他者の編集か",
+       "rcfilters-filter-editsbyself-label": "自分の編集",
+       "rcfilters-filter-editsbyself-description": "自分の投稿記録を絞り込む",
+       "rcfilters-filter-editsbyother-label": "自分以外の編集",
+       "rcfilters-filter-editsbyother-description": "自分以外の利用者による編集",
+       "rcfilters-filtergroup-userExpLevel": "編集回数別(登録利用者のみが対象)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "編集回数別絞り込みは登録利用者のみが対象です。「未登録」の絞り込み項目と競合しています。",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "「未登録」の項目が登録済み利用者を絞り込む項目と競合しています。競合している項目は項目選択欄で強調表示されています。",
+       "rcfilters-filter-user-experience-level-newcomer-label": "新規利用者",
+       "rcfilters-filter-user-experience-level-newcomer-description": "登録から4日以内、かつ10編集以下の利用者",
+       "rcfilters-filter-user-experience-level-learner-label": "初学者",
+       "rcfilters-filter-user-experience-level-learner-description": "「新規利用者」よりも編集経験があり、「経験者」より編集経験が少ない利用者",
+       "rcfilters-filter-user-experience-level-experienced-label": "経験者",
+       "rcfilters-filter-user-experience-level-experienced-description": "30日以上、かつ500編集以上の活動履歴がある利用者",
+       "rcfilters-filtergroup-automated": "自動編集",
        "rcfilters-filter-bots-label": "ボット",
+       "rcfilters-filter-bots-description": "ツールによって自動化された編集",
        "rcfilters-filter-humans-label": "人間(ボットではない)",
+       "rcfilters-filter-humans-description": "人間の手作業による編集",
+       "rcfilters-filtergroup-reviewstatus": "ステータスの確認",
        "rcfilters-filter-patrolled-label": "巡回済み",
        "rcfilters-filter-patrolled-description": "巡回済みとマークされた編集。",
        "rcfilters-filter-unpatrolled-label": "未巡回",
        "rcfilters-filter-minor-description": "編集者が細部の編集とマークしたもの。",
        "rcfilters-filter-major-label": "細部でない編集",
        "rcfilters-filter-major-description": "細部とマークされていない編集。",
+       "rcfilters-filtergroup-watchlist": "ウォッチリストに登録されているページ",
+       "rcfilters-filter-watchlist-watched-label": "ウォッチリスト登録済",
+       "rcfilters-filter-watchlist-watched-description": "ウォッチリストに登録されているページの変更",
+       "rcfilters-filter-watchlist-watchednew-label": "ウォッチリスト登録済(新しい変更)",
+       "rcfilters-filter-watchlist-watchednew-description": "ウォッチリストに登録されていて、前回訪れた後に更新があったページ。",
+       "rcfilters-filter-watchlist-notwatched-label": "ウォッチリスト登録外",
+       "rcfilters-filter-watchlist-notwatched-description": "ウォッチリストに登録されているページ以外の全ての変更。",
        "rcfilters-filtergroup-changetype": "変更の種類",
        "rcfilters-filter-pageedits-label": "ページの編集",
+       "rcfilters-filter-pageedits-description": "ウィキの本文、議論、カテゴリの説明などの編集",
        "rcfilters-filter-newpages-label": "ページの作成",
        "rcfilters-filter-newpages-description": "ページを新規作成する編集。",
        "rcfilters-filter-categorization-label": "カテゴリ変更",
+       "rcfilters-filter-categorization-description": "ページがカテゴリから追加または削除された記録",
+       "rcfilters-filter-logactions-label": "操作記録",
+       "rcfilters-filter-logactions-description": "アカウント作成、削除、アップロードなどのログに残る管理操作",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "「細部の編集」として絞り込めない項目を「細部の編集」として絞り込もうとしています。競合している項目は項目選択欄で強調表示されています。",
+       "rcfilters-hideminor-conflicts-typeofchange": "細部の編集として絞り込めない以下の項目を絞り込もうとしています: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "「細部の編集」の絞り込みと競合しています。この項目を「細部の編集」として絞り込むことはできません。",
+       "rcfilters-filtergroup-lastRevision": "最新版",
+       "rcfilters-filter-lastrevision-label": "最新版",
+       "rcfilters-filter-lastrevision-description": "ページの最新の変更",
+       "rcfilters-filter-previousrevision-label": "新しい版",
+       "rcfilters-filter-previousrevision-description": "ページの最新の変更ではない全ての変更。",
        "rcnotefrom": "以下は<strong>$3 $4</strong>以降の{{PLURAL:$5|更新です}} (最大 <strong>$1</strong> 件)。",
+       "rclistfromreset": "日時指定をリセット",
        "rclistfrom": "$3の$2以降の更新を表示する",
        "rcshowhideminor": "細部の編集を$1",
        "rcshowhideminor-show": "表示する",
        "rcshowhidemine": "自分の編集を$1",
        "rcshowhidemine-show": "表示する",
        "rcshowhidemine-hide": "非表示にする",
-       "rcshowhidecategorization": "ã\83\9aã\83¼ã\82¸ã\81®ã\82«ã\83\86ã\82´ã\83ªã\83¼è¿½å\8a ã\83»é\99¤å\8e»を$1",
+       "rcshowhidecategorization": "ã\83\9aã\83¼ã\82¸ã\81®ã\82«ã\83\86ã\82´ã\83ªã\83¼è¿½å\8a ã\83»é\99¤å¤\96を$1",
        "rcshowhidecategorization-show": "表示する",
        "rcshowhidecategorization-hide": "非表示にする",
-       "rclinks": "最近 $2 日間の更新を最大 $1 件表示<br />$3",
+       "rclinks": "最近 $2 日間の更新を最大 $1 件表示",
        "diff": "差分",
        "hist": "履歴",
        "hide": "非表示",
        "file-thumbnail-no": "ファイル名が <strong>$1</strong> で始まっています。\n他の画像から縮小されたもの <em>(サムネイル)</em> のようです。\nより高精細な画像をお持ちの場合はそれをアップロードしてください。お持ちではない場合はファイル名を変更してください。",
        "fileexists-forbidden": "この名前のファイルは既に存在しており、上書きできません。\nアップロードを継続したい場合は、前のページに戻り、別のファイル名を使用してください。\n[[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "この名前のファイルは共有ファイルリポジトリに既に存在しています。\nアップロードを継続したい場合は、前のページに戻り、別のファイル名を使用してください。\n[[File:$1|thumb|center|$1]]",
+       "fileexists-no-change": "アップロードされたものは<strong>[[:$1]]</strong>の現在のバージョンのものと全く同じです。",
+       "fileexists-duplicate-version": "アップロードされたものは<strong>[[:$1]]</strong>の{{PLURAL:$2|過去のバージョン}}と全く同じです。",
        "file-exists-duplicate": "このファイルは以下の{{PLURAL:$1|ファイル|ファイル群}}と重複しています:",
        "file-deleted-duplicate": "このファイル ([[:$1]]) と同一のファイルが以前に削除されています。\n再度アップロードをする前に、以前削除されたファイルの削除記録を確認してください。",
        "file-deleted-duplicate-notitle": "このファイルと同一のファイルが、以前に削除されページ名が秘匿されました。\n再度アップロードをする前に、秘匿されたファイルのデータを閲覧する権限を持った利用者に連絡して、状況を精査してもらってください。",
        "php-uploaddisabledtext": "ファイルのアップロードがPHPで無効化されています。\nfile_uploadsの設定を確認してください。",
        "uploadscripted": "このファイルは、ウェブブラウザーが誤って解釈してしまうおそれがあるHTMLまたはスクリプトコードを含んでいます。",
        "upload-scripted-pi-callback": "XMLスタイルシート処理命令を含むファイルをアップロードできません。",
+       "upload-scripted-dtd": "標準的でないDTD宣言を含むSVGファイルはアップロードできません。",
        "uploaded-script-svg": "アップロードされたSVGファイルにスクリプト可能な要素「$1」が見つかりました。",
        "uploaded-hostile-svg": "アップロードされたSVGファイルのスタイル要素に安全ではないCSSが見つかりました。",
        "uploaded-event-handler-on-svg": "イベントハンドラをセットする属性 <code>$1=\"$2\"</code> は、SVGファイルを許可されていません。",
        "uploadstash-errclear": "ファイルの消去に失敗しました。",
        "uploadstash-refresh": "ファイルの一覧を更新",
        "uploadstash-thumbnail": "サムネイルを表示",
+       "uploadstash-exception": "スタッシュにアップロードできませんでした ($1): \"$2\"",
        "invalid-chunk-offset": "無効なチャンクオフセット",
        "img-auth-accessdenied": "アクセスが拒否されました",
        "img-auth-nopathinfo": "PATH_INFO が見つかりません。\nサーバーが、この情報を渡すように構成されていません。\nCGI ベースであるため、img_auth に対応できない可能性もあります。\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization をご覧ください。",
        "filerevert-submit": "差し戻す",
        "filerevert-success": "<strong>[[Media:$1|$1]]</strong>は[$4 $2$3の版]に差し戻されました。",
        "filerevert-badversion": "このファイルに指定された時刻印を持つ過去の版はありません。",
+       "filerevert-identical": "ファイルの現在のバージョンは選択されているものと同一です。",
        "filedelete": "$1の削除",
        "filedelete-legend": "ファイルの削除",
        "filedelete-intro": "<strong>[[Media:$1|$1]]</strong>をすべての履歴とともに削除しようとしています。",
        "apisandbox-sending-request": "API要求を送信中...",
        "apisandbox-loading-results": "API結果を受信中...",
        "apisandbox-results-error": "API 問い合わせの応答を読み込み中にエラーが発生しました: $1。",
+       "apisandbox-request-selectformat-label": "リクエストデータを次の形式で表示",
+       "apisandbox-request-format-url-label": "URLクエリ文字列",
        "apisandbox-request-url-label": "リクエスト URL:",
+       "apisandbox-request-json-label": "JSONリクエスト:",
        "apisandbox-request-time": "リクエスト時間: {{PLURAL:$1|$1ミリ秒}}",
        "apisandbox-results-fixtoken": "トークンを訂正して再送信",
        "apisandbox-results-fixtoken-fail": "\"$1\" トークンの取得に失敗しました。",
        "apisandbox-alert-field": "この欄の値が有効ではありません。",
        "apisandbox-continue": "続行",
        "apisandbox-continue-clear": "消去",
+       "apisandbox-param-limit": "最大限度を利用するには<kbd>max</kbd>と入力してください。",
+       "apisandbox-multivalue-all-namespaces": "$1 (全ての名前空間)",
+       "apisandbox-multivalue-all-values": "$1 (全ての値)",
        "booksources": "書籍情報源",
        "booksources-search-legend": "書籍情報源を検索",
        "booksources-isbn": "ISBN:",
        "booksources-search": "検索",
        "booksources-text": "お探しの書籍の新品/中古品を販売している外部サイトへのリンクを以下に列挙します。この書籍についてさらに詳しい情報があるかもしれません:",
        "booksources-invalid-isbn": "指定した ISBN は有効ではないようです。情報源から写し間違えていないか確認してください。",
+       "magiclink-tracking-rfc": "RFCマジックリンクを使用しているページ",
+       "magiclink-tracking-rfc-desc": "このページはRFCマジックリンクを使用しています。移行方法について[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org]を参照してください。",
+       "magiclink-tracking-pmid": "PMIDマジックリンクを使用しているページ",
+       "magiclink-tracking-pmid-desc": "このページはPMIDマジックリンクを使用しています。移行方法について[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org]を参照してください。",
+       "magiclink-tracking-isbn": "ISBNマジックリンクを使用しているページ",
+       "magiclink-tracking-isbn-desc": "このページはISBNマジックリンクを使用しています。移行方法について[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org]を参照してください。",
        "specialloguserlabel": "実行者:",
        "speciallogtitlelabel": "対象 (ページ名または利用者の場合、{{ns:user}}:利用者名):",
        "log": "記録",
        "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_lastdiff": "この変更内容を表示するには $1 をご覧ください。",
        "enotif_anon_editor": "匿名利用者 $1",
        "enotif_body": "$WATCHINGUSERNAMEさん\n\n$PAGEINTRO $NEWPAGE\n\n編集内容の要約: $PAGESUMMARY ($PAGEMINOREDIT)\n\n投稿者の連絡先:\nメール: $PAGEEDITOR_EMAIL\nウィキ: $PAGEEDITOR_WIKI\n\nログインした状態でこのページを訪れない限り、これ以上の活動に対する通知は送信されません。ウォッチリスト内のすべてのページについて、通知を再設定することもできます。\n\n{{SITENAME}}通知システム\n\n--\nメール通知の設定は、以下のページで変更してください:\n{{canonicalurl:{{#special:Preferences}}}}\n\nウォッチリストの設定は、以下のページで変更してください:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nこのページは、以下のページでウォッチリストから削除できます:\n$UNWATCHURL\n\nご意見、お問い合わせ:\n$HELPPAGE",
        "created": "作成",
        "changecontentmodel-emptymodels-title": "利用可能なコンテンツ・モデルがありません",
        "changecontentmodel-emptymodels-text": "[[:$1]]のコンテンツはどの型にも変換できません。",
        "log-name-contentmodel": "コンテンツ・モデル変更記録",
-       "log-description-contentmodel": "ã\83\9aã\83¼ã\82¸ã\81®ã\82³ã\83³ã\83\86ã\83³ã\83\84ã\83»ã\83¢ã\83\87ã\83«ã\81«é\96¢é\80£ã\81\99ã\82\8bå\87ºæ\9d¥äº\8b",
+       "log-description-contentmodel": "ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¯ã\82³ã\83³ã\83\86ã\83³ã\83\84ã\83¢ã\83\87ã\83«ã\81®å¤\89æ\9b´ã\81\8cè¡\8cã\82\8fã\82\8cã\81\9fã\83\9aã\83¼ã\82¸ã\81¨è¦\8få®\9a以å¤\96ã\81®ã\82³ã\83³ã\83\86ã\83³ã\83\84ã\83¢ã\83\87ã\83«ã\81§ä½\9cæ\88\90ã\81\95ã\82\8cã\81\9fã\83\9aã\83¼ã\82¸ã\81®ä¸\80覧ã\81§ã\81\99ã\80\82",
        "logentry-contentmodel-new": "$1 が ページ $3 を既定でないコンテンツ・モデル「$5」で{{GENDER:$2|作成しました}}。",
        "logentry-contentmodel-change": "$1 がページ $3 のコンテンツ・モデルを \"$4\" から \"$5\" に{{GENDER:$2|変更しました}}",
        "logentry-contentmodel-change-revertlink": "差し戻し",
        "sp-contributions-uploads": "アップロード",
        "sp-contributions-logs": "記録",
        "sp-contributions-talk": "トーク",
-       "sp-contributions-userrights": "利用者権限の管理",
+       "sp-contributions-userrights": "{{GENDER:$1|利用者}}権限の管理",
        "sp-contributions-blocked-notice": "この利用者は現在ブロックされています。\n参考のために最新のブロック記録項目を以下に表示します:",
        "sp-contributions-blocked-notice-anon": "このIPアドレスは現在ブロックされています。\n参考のために最近のブロック記録項目を以下に表示します:",
        "sp-contributions-search": "投稿の検索",
        "autoblocklist-submit": "検索",
        "autoblocklist-legend": "自動ブロックの一覧",
        "autoblocklist-localblocks": "ローカルの{{PLURAL:$1|自動ブロック|自動ブロック}}",
+       "autoblocklist-total-autoblocks": "自動ブロックの総数: $1",
        "autoblocklist-empty": "自動ブロック一覧は空です。",
        "autoblocklist-otherblocks": "他の{{PLURAL:$1|自動ブロック|自動ブロック}}",
        "ipblocklist": "ブロックされている利用者",
        "movelogpagetext": "以下はすべてのページ移動の一覧です。",
        "movesubpage": "{{PLURAL:$1|下位ページ}}",
        "movesubpagetext": "このページには、以下の $1 {{PLURAL:$1|下位ページ}}があります。",
+       "movesubpagetalktext": "対応するトークページには以下に表示する$1の{{PLURAL:$1|下位ページ}}があります。",
        "movenosubpage": "このページに下位ページはありません。",
        "movereason": "理由:",
        "revertmove": "差し戻し",
        "tooltip-pt-mycontris": "自分の投稿の一覧",
        "tooltip-pt-anoncontribs": "このIPアドレスからなされた編集の一覧",
        "tooltip-pt-login": "ログインすることを推奨します。ただし、必須ではありません。",
+       "tooltip-pt-login-private": "このウィキを利用するにはログインする必要があります",
        "tooltip-pt-logout": "ログアウト",
        "tooltip-pt-createaccount": "アカウントを作成してログインすることをお勧めしますが、必須ではありません",
        "tooltip-ca-talk": "本文ページについての議論",
        "anonymous": "{{SITENAME}}の匿名{{PLURAL:$1|利用者}}",
        "siteuser": "{{SITENAME}}の利用者 $1",
        "anonuser": "{{SITENAME}}の匿名利用者 $1",
-       "lastmodifiedatby": "このページの最終更新は $1 $2 に $3 によって行われました。",
+       "lastmodifiedatby": "このページの最終編集は $1 $2 に $3 によって行われました。",
        "othercontribs": "また、最終更新より前に $1 が編集しました。",
        "others": "その他",
        "siteusers": "{{SITENAME}}の{{PLURAL:$2|利用者}} $1",
        "confirmrecreate-noreason": "あなたが編集を開始した後、[[User:$1|$1]] ([[User talk:$1|トーク]]) がこのページを{{GENDER:$1|削除しました}}。このページを本当に再作成していいかご確認ください。",
        "recreate": "再作成する",
        "unit-pixel": "ピクセル",
+       "confirm-purge-title": "このページをパージする",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "このページのキャッシュを破棄しますか?",
-       "confirm-purge-bottom": "ã\83\9aã\83¼ã\82¸ã\81®ã\83\91ã\83¼ã\82¸ã\81«ã\82\88ã\82\8aã\82­ã\83£ã\83\83ã\82·ã\83¥ã\82\92ç ´æ£\84ã\81\97ã\80\81å¼·å\88¶ç\9a\84ã\81«æ\9c\80æ\96°ç\89\88ã\82\92表示ã\81\97ã\81¾ã\81\99ã\80\82",
+       "confirm-purge-bottom": "ページのキャッシュを破棄し、強制的に最新版を表示します。",
        "confirm-watch-button": "OK",
        "confirm-watch-top": "このページをウォッチリストに追加しますか?",
        "confirm-unwatch-button": "OK",
        "word-separator": "&#32;",
        "parentheses": "($1)",
        "quotation-marks": "「$1」",
-       "imgmultipageprev": "&larr;前ページ",
-       "imgmultipagenext": "次ページ&rarr;",
+       "imgmultipageprev": "前ページ",
+       "imgmultipagenext": "次ページ",
        "imgmultigo": "表示",
        "imgmultigoto": "ページ$1に移動",
        "img-lang-default": "(既定の言語)",
        "tag-filter-submit": "絞り込み",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|タグ}}]]: $2)",
        "tag-mw-contentmodelchange": "コンテンツ・モデルの変更",
+       "tag-mw-contentmodelchange-description": "ページの[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel コンテンツモデルを変更]する",
        "tags-title": "タグ",
        "tags-intro": "このページは、ソフトウェアが編集に対して付けるタグとその意味の一覧です。",
        "tags-tag": "タグ名",
        "tags-display-header": "変更一覧に表示されるもの",
        "tags-description-header": "詳細な意味の説明",
        "tags-source-header": "由来",
-       "tags-active-header": "アクティブ?",
+       "tags-active-header": "使用中?",
        "tags-hitcount-header": "タグが付与された変更",
        "tags-actions-header": "対処操作",
        "tags-active-yes": "はい",
        "htmlform-time-placeholder": "HH:MM:SS",
        "htmlform-datetime-placeholder": "YYYY-MM-DD HH:MM:SS",
        "htmlform-date-invalid": "あなたが入力した日付を識別できませんでした。YYYY-MM-DD形式で試してください。",
+       "htmlform-time-invalid": "入力された時刻を識別できませんでした。HH:MM:SS形式で試してください。",
+       "htmlform-datetime-invalid": "入力された日時を識別できませんでした。YYYY-MM-DD HH:MM:SS形式で試してください。",
+       "htmlform-date-toolow": "入力された日付は入力できる最も早い日付($1)よりも前です。",
+       "htmlform-date-toohigh": "入力された日付は入力できる最も遅い日付($1)よりも後です。",
+       "htmlform-time-toolow": "入力された時刻は入力できる最も早い時刻($1)よりも前です。",
+       "htmlform-time-toohigh": "入力された時刻は入力できる最も遅い時刻($1)よりも後です。",
+       "htmlform-datetime-toolow": "入力された日時は入力できる最も早い日時($1)よりも前です。",
+       "htmlform-datetime-toohigh": "入力された日時は入力できる最も遅い日時($1)よりも後です。",
        "htmlform-title-badnamespace": "[[:$1]]は、\"{{ns:$2}}\"名前空間にありません。",
        "htmlform-title-not-creatable": "\"$1\" は、作成可能なページ名では、ありません。",
        "htmlform-title-not-exists": "$1 は存在しません。",
        "htmlform-user-not-valid": "<strong>$1</strong>は有効な利用者名ではありません。",
        "logentry-delete-delete": "$1 がページ「$3」を{{GENDER:$2|削除しました}}",
        "logentry-delete-delete_redir": "$1 がリダイレクト「$3」を上書きにより{{GENDER:$2|削除しました}}",
-       "logentry-delete-restore": "$1 がページ「$3」を{{GENDER:$2|復元しました}}",
+       "logentry-delete-restore": "$1 がページ「$3 ($4)」を{{GENDER:$2|復元しました}}",
+       "logentry-delete-restore-nocount": "$1 がページ「$3」を{{GENDER:$2|復元しました}}",
+       "restore-count-revisions": "$1{{PLURAL:$1|版}}",
+       "restore-count-files": "{{PLURAL:$1|$1ファイル}}",
        "logentry-delete-event": "$1 が $3 の{{PLURAL:$5|記録項目|記録項目$5件}}の閲覧レベルを{{GENDER:$2|変更しました}}: $4",
        "logentry-delete-revision": "$1 がページ「$3」の{{PLURAL:$5|版|$5件の版}}の閲覧レベルを{{GENDER:$2|変更しました}}: $4",
        "logentry-delete-event-legacy": "$1 が $3 の記録項目の閲覧レベルを{{GENDER:$2|変更しました}}",
        "pagelang-reason": "理由",
        "pagelang-submit": "変更",
        "pagelang-nonexistent-page": "ページ $1 は存在しません。",
+       "pagelang-unchanged-language": "ページ「$1」の言語は既に$2に設定されています。",
+       "pagelang-unchanged-language-default": "「$1」はすでにウィキの既定のコンテンツ言語に設定されています。",
+       "pagelang-db-failed": "データベースがページの言語を変更できませんでした。",
        "right-pagelang": "ページの言語を変更",
        "action-pagelang": "ページの言語の変更",
        "log-name-pagelang": "言語変更の記録",
        "special-characters-group-thai": "タイ文字",
        "special-characters-group-lao": "ラオス文字",
        "special-characters-group-khmer": "クメール文字",
+       "special-characters-group-canadianaboriginal": "カナダ先住民文字",
        "special-characters-title-endash": "en ダッシュ",
        "special-characters-title-emdash": "em ダッシュ",
        "special-characters-title-minus": "マイナス記号",
        "mw-widgets-dateinput-no-date": "選択されたデータ無し",
+       "mw-widgets-mediasearch-input-placeholder": "メディアを検索",
        "mw-widgets-mediasearch-noresults": "見つかりませんでした。",
        "mw-widgets-titleinput-description-new-page": "ページは存在しません",
        "mw-widgets-titleinput-description-redirect": "$1 へのリダイレクト",
        "mw-widgets-categoryselector-add-category-placeholder": "カテゴリを追加...",
+       "mw-widgets-usersmultiselect-placeholder": "さらに追加",
+       "date-range-from": "開始日:",
+       "date-range-to": "終了日:",
        "sessionmanager-tie": "複数の要求の認証方法を組み合わせることはできません: $1。",
        "sessionprovider-generic": "$1 セッション",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "クッキーベースのセッション",
        "sessionprovider-nocookies": "クッキーが無効になっている可能性があります。クッキーが有効になっていることを確認し、もう一度お試しください。",
        "randomrootpage": "おまかせルートページ",
        "log-action-filter-block": "ブロックの種類",
+       "log-action-filter-contentmodel": "コンテンツモデルの変更の種類",
        "log-action-filter-delete": "削除の種類:",
        "log-action-filter-import": "取り込みの種類:",
        "log-action-filter-managetags": "タグ管理の種類:",
        "log-action-filter-contentmodel-change": "コンテンツモデルの変更",
        "log-action-filter-contentmodel-new": "標準でないコンテンツ・モデルによるページの作成",
        "log-action-filter-delete-delete": "ページの削除",
+       "log-action-filter-delete-delete_redir": "リダイレクトを上書き",
        "log-action-filter-delete-restore": "ページの復帰",
        "log-action-filter-delete-event": "記録の削除",
        "log-action-filter-delete-revision": "版指定削除",
        "usercssispublic": "注意: CSS のサブページは第三者が閲覧可能なため、機微な情報を含めないでください。",
        "restrictionsfield-badip": "無効な IP アドレス、またはその範囲: $1",
        "restrictionsfield-label": "許可する IP の範囲:",
-       "restrictionsfield-help": "一行につき、単一の IP アドレス、もしくは CIDR による範囲。全帯域からの接続を許可する場合: <pre>0.0.0.0/0\n::/0</pre>"
+       "restrictionsfield-help": "一行につき、単一の IP アドレス、もしくは CIDR による範囲。全帯域からの接続を許可する場合: <pre>0.0.0.0/0\n::/0</pre>",
+       "revid": "版 $1",
+       "pageid": "ページID $1",
+       "rawhtml-notallowed": "&lt;html&gt;タグは通常ページ以外では使用できません。",
+       "gotointerwiki": "{{SITENAME}}を離れる",
+       "gotointerwiki-invalid": "指定したページは無効です。",
+       "gotointerwiki-external": "{{SITENAME}}を離れ、別のウェブサイトである[[$2]]を訪れようとしています。\n\n'''[$1 $1に行く]'''",
+       "undelete-cantedit": "このページを編集する許可がないため復元できません。",
+       "undelete-cantcreate": "同名のページが存在せず、このページを作成する許可がないため復元できません。"
 }
index 2b14bfc..61ca0b2 100644 (file)
        "externaldberror": "Aida aatentikieshan dietabies era okor ar yu no lou fi opdiet yu extoernal akount.",
        "login": "Lag iin",
        "nav-login-createaccount": "Lag iin / kriet akount",
-       "userlogin": "Lag iin / kriet akount",
-       "userloginnocreate": "Lag iin",
        "logout": "Lag out",
        "userlogout": "Lag out",
        "notloggedin": "No lag iin",
        "userlogin-noaccount": "No gat no akount?‎",
        "userlogin-joinproject": "Jain {{SITENAME}}‎",
-       "nologin": "Naa no akount? $1.",
-       "nologinlink": "Kriet a akount",
        "createaccount": "Kriet akount",
-       "gotaccount": "Aredi gat akount? $1.",
-       "gotaccountlink": "Lag iin",
-       "userlogin-resetlink": "Figet yu lagin detail dem?",
        "userlogin-resetpassword-link": "Figat yu paaswod?‎",
        "userlogin-helplink2": "Elp wid lagiin‎",
        "createacct-emailoptional": "Iimiel ajres (apshanal)",
        "createacct-email-ph": "Enta yu iimiel ajres",
        "createaccountmail": "Bai e-miel",
-       "createaccountreason": "Riizn:",
        "createacct-submit": "Kriet yu akount",
        "createacct-benefit-heading": "{{SITENAME}} mek bai smadi laka yu.",
        "createacct-benefit-body1": "{{PLURAL:$1|edit|edits}}",
        "showdiff": "Shuo chienjdem",
        "anoneditwarning": "<strong>Waanin:</strong> Yu no lagiin. Yu IP ajres wi vizibl tu poblik ef yu mek eni edit. Ef yu <strong>[$1 lagiin]</strong> ar <strong>[$2 kriet akount]</strong>, yu editdem wi get achribiut tu yu yuuzaniem, wid adaels benifit.‎",
        "anonpreviewwarning": "''Yu no lag iin. Sievin wi rikaad yu IP ajres ina dis piej edit ischri.''",
-       "missingsummary": "'''Rimainda:''' Yu no provaid no edit somari.\nEf yu klik \"{{int:savearticle}}\" agen, yu edit wi siev widoutn wan.",
+       "missingsummary": "'''Rimainda:''' Yu no provaid no edit somari.\nEf yu klik \"$1\" agen, yu edit wi siev widoutn wan.",
        "missingcommenttext": "Begyu enta a kament biluo.",
-       "missingcommentheader": "'''Rimainda:''' Yu no provaid no sobjek/edlain fi dis kament.\nEf yu klik \"{{int:savearticle}}\" agen, yu edit wi siev widoutn wan.",
+       "missingcommentheader": "'''Rimainda:''' Yu no provaid no sobjek/edlain fi dis kament.\nEf yu klik \"$1\" agen, yu edit wi siev widoutn wan.",
        "summary-preview": "Somari priivyuu",
        "subject-preview": "Sobjek/edlain priivyuu:",
        "blockedtitle": "Yuuza blak",
        "editingsection": "Editin $1 (sekshan)",
        "editingcomment": "Editin $1 (nyuu sekshan)",
        "editconflict": "Edit kanflik: $1",
-       "explainconflict": "Smadi els chienj dis poej sens yu taat editi.\nDi opa tex ieria kantien di piej tex az ikorantli egzis.\nYu chienjdem shuo ina di lowa tex ieria.\nYu wi afi moerj yu chienjdem ina di egzisin tex.\n'''Onggl''' di tex ina di opa tes ieria wi sieb wen yu pres \"{{int:savearticle}}\".",
+       "explainconflict": "Smadi els chienj dis poej sens yu taat editi.\nDi opa tex ieria kantien di piej tex az ikorantli egzis.\nYu chienjdem shuo ina di lowa tex ieria.\nYu wi afi moerj yu chienjdem ina di egzisin tex.\n'''Onggl''' di tex ina di opa tes ieria wi sieb wen yu pres \"$1\".",
        "yourtext": "Yu tex",
        "storedversion": "Stuor rivijan",
        "yourdiff": "Difrans",
        "rcshowhidemine": "$1 mi editdem",
        "rcshowhidemine-show": "Shuo",
        "rcshowhidemine-hide": "Aid",
-       "rclinks": "Shuo laas $1 chienj ina laas $2 die<br />$3",
+       "rclinks": "Shuo laas $1 chienj ina laas $2 die",
        "diff": "dif",
        "hist": "isch",
        "hide": "Aid",
index c57d440..fa6dc1c 100644 (file)
        "recentchanges-summary": "liste loi nu puzi stika le uitki",
        "rcshowhidebots": "$1 lo zmiku",
        "rcshowhideliu": "$1 lo se jaspu pilno",
-       "rclinks": "zgana $1 lo romoi nu stika ca $2 lo romoi djedi<br />$3",
+       "rclinks": "zgana $1 lo romoi nu stika ca $2 lo romoi djedi",
        "diff": "te frica",
        "hist": "galfi plivei",
        "hide": "cancygau",
index 48cf4aa..0b6225e 100644 (file)
        "externaldberror": "Där ä opstotj en fejl i i ekstern adgångsdatabase, elle du hår ett rettihede te å opdatiir denn.",
        "login": "Logg på",
        "nav-login-createaccount": "Oprett e konto ellerlogg på",
-       "userlogin": "Oprett e konto elle logg på",
-       "userloginnocreate": "Logg på",
        "logout": "Logg å",
        "userlogout": "Logg å",
        "notloggedin": "Ikke loggen på",
        "userlogin-noaccount": "Hår du ett e konto?",
        "userlogin-joinproject": "Slut dej te {{SITENAME}}",
-       "nologin": "Du hår iet kronto? $1.",
-       "nologinlink": "Oprett e ny brugekonto",
        "createaccount": "Oprett e ny brugekonto",
-       "gotaccount": "Hår du ållried e konto? '''$1'''.",
-       "gotaccountlink": "Logg på",
-       "userlogin-resetlink": "Hår du glommen din login-oplysnenge?",
        "userlogin-resetpassword-link": "Glommen din adgångskode?",
        "userlogin-helplink2": "Hjälp mä å logg på",
        "userlogin-loggedin": "Du ä ållried loggen på som {{GENDER:$1|$1}}. Brug formulari nierfor te å logg på som i ånj bruge.",
        "createacct-emailoptional": "E-mailadress (walgfri)",
        "createacct-email-ph": "Intast dej e-mailadress",
        "createacct-another-email-ph": "Intast e-mailadress",
-       "createaccountreason": "Begrunjels:",
        "createacct-submit": "Oprett det konto",
        "createacct-another-submit": "Oprett konto",
        "createacct-benefit-heading": "{{SITENAME}} laws å menske som du.",
        "saveprefs": "Djiem instellenge",
        "restoreprefs": "Djensätt åll standardinstellenge (i åll seksjone)",
        "prefs-editing": "Redigiireng",
-       "rows": "Räkke:",
-       "columns": "Kolonne:",
        "searchresultshead": "Syegresultate",
        "stub-threshold": "Græns for stumplinkformatiireng ($1):",
        "stub-threshold-sample-link": "eksempel",
        "rcshowhidemine-hide": "Sjul",
        "rcshowhidecategorization-show": "Wis",
        "rcshowhidecategorization-hide": "Sjul",
-       "rclinks": "Wis siensti $1 øndrenge i di sisti $2 daw<br />$3",
+       "rclinks": "Wis siensti $1 øndrenge i di sisti $2 daw",
        "diff": "forskell",
        "hist": "historik",
        "hide": "Sjul",
index cfd720b..545861b 100644 (file)
@@ -19,7 +19,7 @@
                        "Matma Rex"
                ]
        },
-       "tog-underline": "Nggaris ngisori pranala:",
+       "tog-underline": "Garis ngisori pranala:",
        "tog-hideminor": "Dhelikaké besutan cilik saka owah-owahan pungkasan",
        "tog-hidepatrolled": "Dhelikaké besutan ingawasan saka owah-owahan pungkasan",
        "tog-newpageshidepatrolled": "Dhelikaké kaca ingawasan saka pratélaning kaca anyar",
        "tog-minordefault": "Tengeri kabèh besutan minangka besutan cilik sacara baku",
        "tog-previewontop": "Deleng pratuduh sadurungé mbesut kothak",
        "tog-previewonfirst": "Delelng pratuduh nalika mbesut pisanan",
-       "tog-enotifwatchlistpages": "Kirimi aku layangtronik yèn ana kaca utawa barkas ing pawawanganku sing diowah",
-       "tog-enotifusertalkpages": "Kirimi aku layangtronik yèn kaca gegunemanku diowah",
-       "tog-enotifminoredits": "Uga kirimi aku layangtronik yèn ana besutan cilik ing kaca lan barkas",
-       "tog-enotifrevealaddr": "Singkab alamat layangtronikku ing layang pawarta",
+       "tog-enotifwatchlistpages": "Kirimi aku layang-èl yèn ana kaca utawa barkas ing pawawanganku sing diowahi",
+       "tog-enotifusertalkpages": "Kirimi aku layang-èl yèn kaca parembuganku ana sing ngowahi",
+       "tog-enotifminoredits": "Uga kirimi aku layang-èl yèn ana besutan cilik ing kaca lan barkas",
+       "tog-enotifrevealaddr": "Tuduhaké alamat layang-èlku ing layang wara-wara",
        "tog-shownumberswatching": "Tuduhaké cacah wong sing ngawasi",
-       "tog-oldsig": "Tandha tangan panjenengan sing ana:",
-       "tog-fancysig": "Anggep tandha tangan minangka tulisan wiki (tanpa pranala otomatis)",
+       "tog-oldsig": "Tapak asmané panjenengan sing ana:",
+       "tog-fancysig": "Cakaké tapak asma minangka tèks wiki (tanpa pranala otomatis)",
        "tog-uselivepreview": "Nganggo pratuduh langsung",
-       "tog-forceeditsummary": "Élingna aku menawa kothak ringkesan suntingan isih kosong",
+       "tog-forceeditsummary": "Kandhani aku manawa kothak ringkesané besutan isih kosong",
        "tog-watchlisthideown": "Dhelikaké besutanku saka pawawangan",
        "tog-watchlisthidebots": "Dhelikaké besutan bot saka pangawasan",
        "tog-watchlisthideminor": "Dhelikaké besutan cilik saka pawawangan",
-       "tog-watchlisthideliu": "Dhelikaké saka pawawangan besutaning wong sing mlebu",
+       "tog-watchlisthideliu": "Dhelikaké besutané wong sing mlebu log saka pawawangan",
        "tog-watchlistreloadautomatically": "Mot manèh pawawangan kanthi otomanis samangsa panyaring diowah (butuh JavaScript)",
        "tog-watchlisthideanons": "Dhelikaké saka pawawangan besutaning para anonim",
        "tog-watchlisthidepatrolled": "Dhelikaké besutan ingawasan saka pawawangan",
        "tog-watchlisthidecategorization": "Dhelikaké kategorisasi kaca",
-       "tog-ccmeonemails": "Kirimi aku salinan layangtronik sing tak kirim nyang wong liya",
-       "tog-diffonly": "Aja dituduhaké isining kaca ing ngisor bédané suntingan",
+       "tog-ccmeonemails": "Kirimi aku turunan layang-èl sing takkirim nyang wong liya",
+       "tog-diffonly": "Aja tuduhaké isiné kaca sangisoré bédané besutan",
        "tog-showhiddencats": "Tuduhaké kategori sing didhelikaké",
-       "tog-norollbackdiff": "Aja tuduhaké prabédan sawisé mbalèkaké.",
+       "tog-norollbackdiff": "Aja tuduhaké béda sawisé ngayahi bebalèn",
        "tog-useeditwarning": "Élingaké kula yèn kula ninggalaké suntingan sing durung kasimpen",
-       "tog-prefershttps": "Tansah anggoa sambungan sing aman nalika mlebu log",
+       "tog-prefershttps": "Tansah nganggo sambungan sing aman nalika mlebu log",
        "underline-always": "Tansah",
        "underline-never": "Ora tau",
-       "underline-default": "Baku kulit utawa pangluron",
+       "underline-default": "Ules utawa pangluru gawan",
        "editfont-style": "Gagrag fon ing pambesutan:",
        "editfont-default": "Baku pangluron",
        "editfont-monospace": "Fon monospasi",
        "editfont-sansserif": "Fon tansèrif",
        "editfont-serif": "Fon sèrif",
-       "sunday": "Minggu",
+       "sunday": "Ngahad",
        "monday": "Senèn",
        "tuesday": "Selasa",
        "wednesday": "Rebo",
        "thursday": "Kemis",
        "friday": "Jumuwah",
        "saturday": "Setu",
-       "sun": "Min",
+       "sun": "Nga",
        "mon": "Sen",
        "tue": "Sel",
        "wed": "Reb",
        "aug": "Agu",
        "sep": "Sèp",
        "oct": "Okt",
-       "nov": "Nop",
+       "nov": "Nov",
        "dec": "Dhé",
        "january-date": "Januari $1",
        "february-date": "Fèbruari $1",
        "october-date": "Oktober $1",
        "november-date": "$1 Novèmber",
        "december-date": "$1 Dhésèmber",
-       "period-am": "Isuk-Awan",
-       "period-pm": "Soré-Wengi",
-       "pagecategories": "{{PLURAL:$1|Kategori|Kategori}}",
+       "period-am": "Rina",
+       "period-pm": "Ratri",
+       "pagecategories": "{{PLURAL:$1|Kategori}}",
        "category_header": "Kaca sajeroning kategori \"$1\"",
        "subcategories": "Anak kategori",
        "category-media-header": "Médhia sajeroning kategori \"$1\"",
        "anontalk": "Parembugan",
        "navigation": "Navigasi",
        "and": "&#32;lan",
-       "qbfind": "Golèk",
-       "qbbrowse": "Luru",
-       "qbedit": "Besut",
-       "qbpageoptions": "Kaca iki",
-       "qbmyoptions": "Kaca-kacaku",
        "faq": "Pitakon Kerep",
-       "faqpage": "Project:Pitakon Kerep",
        "actions": "Lelabuhan",
-       "namespaces": "Jagat aran",
+       "namespaces": "Mandala aran",
        "variants": "Varian",
        "navigation-heading": "Menu navigasi",
-       "errorpagetitle": "Cacad",
+       "errorpagetitle": "Masalah",
        "returnto": "Bali nyang $1.",
        "tagline": "Saka {{SITENAME}}",
        "help": "Pitulung",
        "search": "Golèk",
+       "search-ignored-headings": " #<!-- lirwakaké waé larik iki kaya asliné --> <pre>\n# Sesirah sing bakal dilirwakaké déning golèkan.\n# Owahan tumrap iki bakal katon nalika sesirahé wis diindhèks.\n# Panjenengan bisa meksa ngindhèks ulang kaca kanthi ngayahi besutan kosong.\n# Sintaksisé kaya mangkéné:\n#   * Samubarang saka karakter \"#\" tumeka pungkasané larik iku minangka tanggapan.\n#   * Saben larik sing ora kosong iku sesirah sing kudu dilirwakaké lan samubarangé.\nRujukan\nPranala njaba\nUga delengen\n #</pre> <!-- lirwakaké waé larik iki kaya asliné -->",
        "searchbutton": "Golèk",
        "go": "Menyang",
        "searcharticle": "Menyang",
        "history": "Sujarah kaca",
        "history_short": "Sujarah",
+       "history_small": "sujarah",
        "updatedmarker": "wis dianyari kawit tekaku mréné pungkasan",
-       "printableversion": "Vèrsi cithak",
+       "printableversion": "Vèrsi cap-capan",
        "permalink": "Pranala permanèn",
        "print": "Cithak",
        "view": "Deleng",
        "edit-local": "Besut andharan enggon-enggonan",
        "create": "Gawé",
        "create-local": "Tambah panyadra enggon-enggonan",
-       "editthispage": "Besut kaca iki",
-       "create-this-page": "Gawé kaca iki",
        "delete": "Busak",
-       "deletethispage": "Busak kaca iki",
-       "undeletethispage": "Wurung busak kaca iki",
        "undelete_short": "Wurung busak {{PLURAL:$1|sabesutan|$1 besutan}}",
        "viewdeleted_short": "Deleng {{PLURAL:$1|sabesutan kabusak|$1 besutan kabusak}}",
        "protect": "Reksa",
-       "protect_change": "owah",
-       "protectthispage": "Reksa kaca iki",
+       "protect_change": "owahi",
        "unprotect": "Owah rereksan",
-       "unprotectthispage": "Owah rereksan kaca iki",
        "newpage": "Kaca anyar",
-       "talkpage": "Rembug kaca iki",
        "talkpagelinktext": "rembugan",
        "specialpage": "Kaca mirunggan",
        "personaltools": "Piranti priangga",
-       "articlepage": "Deleng kaca isi",
        "talk": "Parembugan",
        "views": "Praèn",
        "toolbox": "Piranti",
        "tool-link-userrights": "Owahi golongan {{GENDER:$1|panganggo}}",
        "tool-link-userrights-readonly": "Deleng golongan {{GENDER:$1|panganggo}}",
        "tool-link-emailuser": "Kirimi {{GENDER:$1|panganggo}} iki layang-é",
-       "userpage": "Deleng kaca panganggo",
-       "projectpage": "Deleng kaca proyèk",
        "imagepage": "Deleng kaca barkas",
-       "mediawikipage": "Deleng kaca nawala",
+       "mediawikipage": "Deleng kaca layang",
        "templatepage": "Deleng kaca cithakan",
        "viewhelppage": "Deleng kaca pitulung",
        "categorypage": "Deleng kaca kategori",
        "viewtalkpage": "Deleng parembugan",
-       "otherlanguages": "Ing basa liya",
+       "otherlanguages": "Ing basa liya",
        "redirectedfrom": "(Dilih saka $1)",
        "redirectpagesub": "Alih kaca",
        "redirectto": "Ngalih menyang:",
-       "lastmodifiedat": "Kaca iki pungkasan diowah kala $1, tabuh $2.",
+       "lastmodifiedat": "Kaca iki dibesut pungkasan nalika $1, pukul $2.",
        "viewcount": "Kaca iki wis diaksès ping {{PLURAL:$1|siji|$1}}.",
        "protectedpage": "Kaca kareksa",
        "jumpto": "Jujug:",
        "jumptonavigation": "navigasi",
        "jumptosearch": "golèk",
        "view-pool-error": "Nyuwun ngapuro, peladèn lagi sibuk wektu iki.\nKakèhan panganggo sing nyoba mbukak kaca iki.\nEntèni sedhéla sadurungé nyoba ngaksès kaca iki manèh .\n\n$1",
-       "generic-pool-error": "Nyuwun pangapura, paladèn saiki nembé arungan.\nKakèhan panganggo sing péngin ndeleng sumber iki.\nEntèna sadhéla sadurungé sampéyan nekani sumber iki manèh.",
+       "generic-pool-error": "Ngapunten, paladèné lagi kabotan momotan.\nPanganggo akèh sing péngin ndeleng sumber iki.\nEntènana sadhéla sadurungé panjenengan marani sumber iki manèh.",
        "pool-timeout": "Kelangkung wekdal nengga kunci",
        "pool-queuefull": "Kempalan antrian kebak",
        "pool-errorunknown": "Kalepata ingkang mboten dipun mangertosi",
-       "poolcounter-usage-error": "Cacad panganggo: $1",
+       "poolcounter-usage-error": "Masalah pangguna: $1",
        "aboutsite": "Ngenani {{SITENAME}}",
        "aboutpage": "Project:Ngenani",
-       "copyright": "Kabèh isi kasedyakaké miturut $1.",
+       "copyright": "Isi cumepak kanthi pangayoman $1 kajaba disebutaké yèn ana liyané.",
        "copyrightpage": "{{ns:project}}:Hak cipta",
-       "currentevents": "Kadadian saiki",
-       "currentevents-url": "Project:Kadadian saiki",
+       "currentevents": "Kadadéan saiki",
+       "currentevents-url": "Project:Kadadéan saiki",
        "disclaimers": "Sélakan",
        "disclaimerpage": "Project:Sélakan umum",
        "edithelp": "Pitulung besut",
        "policy-url": "Project:Kabijakan",
        "portal": "Gapura paguyuban",
        "portal-url": "Project:Garupa paguyuban",
-       "privacy": "Niti priangga",
-       "privacypage": "Project:Niti priangga",
+       "privacy": "Paugeran privasi",
+       "privacypage": "Project:Paugeran privasi",
        "badaccess": "Aksès ora olèh",
        "badaccess-group0": "Panjenengan ora pareng nglakokaké tindhakan sing panjenengan gayuh.",
        "badaccess-groups": "Pratingkah panjenengan diwatesi tumrap panganggo ing {{PLURAL:$2|klompoké|klompoké}}: $1.",
        "versionrequired": "Dibutuhaké MediaWiki vèrsi $1",
        "versionrequiredtext": "MediaWiki vèrsi $1 dibutuhaké kanggo nggunakaké kaca iki. Mangga mirsani [[Special:Version|kaca iki]]",
        "ok": "Oké",
-       "retrievedfrom": "Dijupuk saka: \"$1\"",
+       "retrievedfrom": "Dijupuk saka \"$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).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|Panjenengan duwé}} $1 saka {{PLURAL:$3|panganggo liya|$3 panganggo}} ($2).",
+       "youhavenewmessagesmanyusers": "Panjenengan duwé $1 saka manéka panganggo ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|layang anyar|999=layang anyar}}",
        "newmessagesdifflinkplural": "{{PLURAL:$1|owahan|999=owahan}} pungkasan",
-       "youhavenewmessagesmulti": "Sampéyan éntuk nawala anyar ing $1",
+       "youhavenewmessagesmulti": "Panjenengan éntuk layang anyar ing $1",
        "editsection": "besut",
        "editold": "besut",
        "viewsourceold": "deleng sumber",
        "hidetoc": "dhelikaké",
        "collapsible-collapse": "tutup",
        "collapsible-expand": "bukak",
-       "confirmable-confirm": "{{GENDER:$1|Sampéyan}} yakin?",
+       "confirmable-confirm": "{{GENDER:$1|Panjenengan}} yakin?",
        "confirmable-yes": "Iya",
        "confirmable-no": "Ora",
-       "thisisdeleted": "Ndeleng utawa mbalèkaké $1?",
+       "thisisdeleted": "Deleng utawa pulihaké $1?",
        "viewdeleted": "Deleng $1?",
        "restorelink": "$1 {{PLURAL:$1|besutan}} sing wis dibusak",
        "feedlinks": "Asupan:",
        "feed-invalid": "Tipe permintaan asupan ora bener.",
        "feed-unavailable": "Umpan sindikasi (''syndication feeds'') ora kasedyakaké",
        "site-rss-feed": "$1 ''RSS Feed''",
-       "site-atom-feed": "Umpan atom $1",
+       "site-atom-feed": "Lebon atom $1",
        "page-rss-feed": "\"$1\" ''RSS Feed''",
        "page-atom-feed": "\"$1\" ''Atom Feed''",
        "red-link-title": "$1 (kaca durung ana)",
        "nstab-special": "Kaca mirunggan",
        "nstab-project": "Kaca proyèk",
        "nstab-image": "Barkas",
-       "nstab-mediawiki": "Nawala",
+       "nstab-mediawiki": "Layang",
        "nstab-template": "Cithakan",
        "nstab-help": "Kaca pitulung",
        "nstab-category": "Kategori",
        "mainpage-nstab": "Tepas",
-       "nosuchaction": "Ora ana lelakon mangkono",
-       "nosuchactiontext": "Pratingkah sing dirinci déning URL ora sah.\nPanjenengan manawa salah ketik nalika ngisi URL, utawa salah ngisi pranala.\nIki manawa uga nuduhaké anané kesalahan ing piranti alus sing dipigunakaké déning {{SITENAME}}.",
+       "nosuchaction": "Ora ana tumindak mangkono",
+       "nosuchactiontext": "Tumindak sing dikarepaké déning URL ora trep.\nPanjenengan bokmanawa salah ngetik URL-é, utawa salah nurut pranala.\nIki bokmanawa uga nuduhaké yèn ana ama ing piranti alus sing dianggo déning {{SITENAME}}.",
        "nosuchspecialpage": "Ora ana kaca mirunggan mangkono",
        "nospecialpagetext": "Panjenengan nyuwun kaca astaméwa sing ora sah. Daftar kaca astaméwa sing sah bisa dipirsani ing [[Special:SpecialPages|daftar kaca astaméwa]].",
-       "error": "Cacad",
-       "databaseerror": "Cacad umpak data",
+       "error": "Masalah",
+       "databaseerror": "Masalah sasana dhata",
        "databaseerror-text": "Ana kerusakan ing basis data (query error).\n\nMungkin ana masalah ing software-e.",
        "databaseerror-textcl": "Ana kerusakan ing basis data (query error).",
        "databaseerror-query": "Query: $1",
        "databaseerror-function": "Function: $1",
-       "databaseerror-error": "Cacad: $1",
+       "databaseerror-error": "Masalah: $1",
        "laggedslavemode": "Pènget: Kaca iki mbokmenawa isiné dudu pangowahan pungkasan.",
        "readonly": "Umpak data kagembok",
        "enterlockreason": "Isi alesan ngreksa, kalebu rencana kapan pareksané bakal dibukak",
        "missingarticle-rev": "(owahan#: $1)",
        "missingarticle-diff": "(Béda: $1, $2)",
        "readonly_lag": "Database wis dikunci mawa otomatis sawetara database sékundhèr lagi nglakoni sinkronisasi mawa database utama",
-       "internalerror": "Cacad njero",
-       "internalerror_info": "Cacad njero: $1",
+       "internalerror": "Masalah njero",
+       "internalerror_info": "Masalah njero: $1",
        "filecopyerror": "Ora bisa nulad berkas \"$1\" menyang \"$2\".",
        "filerenameerror": "Ora bisa ngowahi saka \"$1\" dadi \"$2\".",
        "filedeleteerror": "Ora bisa mbusak berkas \"$1\".",
        "directorycreateerror": "Ora bisa nggawé dirèktori \"$1\".",
+       "directoryreadonlyerror": "Pérangan \"$1\" mung kena diwaca.",
+       "directorynotreadableerror": "Pérangan \"$1\" ora kena diwaca.",
        "filenotfound": "Ora bisa nemokaké berkas \"$1\".",
        "unexpected": "Biji (''nilai'') ing njabaning jangkauan: \"$1\"=\"$2\".",
-       "formerror": "Kasalahan: Ora bisa ngirimaké formulir",
+       "formerror": "Masalah: Ora bisa ngirim formulir",
        "badarticleerror": "Pratingkah iku ora bisa katindhakaké ing kaca iki.",
        "cannotdelete": "Kaca utawa berkas \"$1\" ora bisa dibusak.\nManawa wis dibusak déning wong liya.",
        "cannotdelete-title": "Ora bisa mbusak kaca \"$1\"",
        "no-null-revision": "Ora isa nggawe revisi 'null' anyar kanggo kaca \"$1\"",
        "badtitle": "Sesirah ala",
        "badtitletext": "Sesirahing kaca sing dikarepaké ora sah, suwung, utawa salah nggayut nyang sesirah antarabasa utawa antarawiki.\nIku mungkin ngandhut pralambang siji utawa luwih sing ora kena dianggo tumrap sesirah iki.",
+       "title-invalid-empty": "Sesirah kaca sing dikarepaké kosong utawa mung ngemu jenengé mandala-aran.",
+       "title-invalid-utf8": "Sesirah kaca sing dikarepaké ngemu reroncèn UTF-8 sing ora sah.",
+       "title-invalid-interwiki": "Sesirah kaca sing dikarepaké ngemu pranala interwiki sing ora bisa dicakaké dadi sesirah",
+       "title-invalid-talk-namespace": "Sesirah kaca sing dikarepaké nggayut kaca parembugan sing ora ana.",
+       "title-invalid-characters": "Sesirah kaca sing dikarepaké ngemu karakter sing ora sah: \"$1\".",
+       "title-invalid-relative": "Sesirah ngemu alamat rélatif. Sesirah kaca relatif (./, ../) iku ora sah amarga ora bisa ditekani lumantar pangluru.",
+       "title-invalid-magic-tilde": "Sesirah kaca sing dikarepaké ngemu reroncèn tilda (<nowiki>~~~</nowiki>) sing ora sah.",
+       "title-invalid-too-long": "Sesirah kaca sing dikarepaké kedawan. Kuduné ora munjuli $1 bèt sarana kodhé UTF-8.",
+       "title-invalid-leading-colon": "Sesirah kaca sing dikarepaké ngemu titik loro sing ora sah ing ngarepé.",
        "perfcached": "Data ing ngisor iki kasimpen ing telih lan mungkin durung dianyari. Paling akèh ana {{PLURAL:$1|sakasil|$1 kasil}} sumadhiya ing telih iku.",
        "perfcachedts": "Data ing ngisor iki kasimpen ing telih, lan pungkasan dianyari $1. Paling akèh ana {{PLURAL:$4|sakasil|$4 kasil}} sumadhiya ing telih iku.",
        "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.",
        "viewsource": "Deleng sumber",
-       "viewsource-title": "Delok sumberé $1",
+       "viewsource-title": "Deleng sumberé $1",
        "actionthrottled": "Tindakan diwatesi",
-       "actionthrottledtext": "Minangka sawijining pepesthèn anti-spam, panjenengan diwatesi nglakoni tindhakan iki sing cacahé kakèhan ing wektu cendhak.\nMangga dicoba manèh ing sawetara menit.",
+       "actionthrottledtext": "Minangka upaya lumawan tumindak salah-guna, panjenengan diwatesi nalika ngayahi iki ping bola-bali tur rikat, lan panjenengan wis munjuli watesané.\nMangga jajalen manèh mengko.",
        "protectedpagetext": "Kaca iki wis digembok supaya ora bisa disunting lan diapa-apakaké.",
-       "viewsourcetext": "Sampéyan bisa ndeleng lan nyalin sumbering kaca iki.",
-       "viewyourtext": "Sampéyan bisa ndeleng lan nyalin sumbering <strong>besutaning sampéyan</strong> ing kaca iki.",
+       "viewsourcetext": "Panjenengan bisa ndeleng lan nurun sumberé kaca iki.",
+       "viewyourtext": "Panjenengan bisa ndeleng lan nurun sumberé <strong>besutané panjenengan</strong> nyang kaca iki.",
        "protectedinterface": "Kaca iki isiné tèks antarmuka sing dienggo software lan wis dikunci kanggo menghindari kasalahan.",
-       "editinginterface": "'''Pènget:''' Panjenengan nyunting kaca sing dianggo nyedyakaké tèks antarmuka kanggo piranti alus.\nPangowahan kaca iki bakal awèh pangaruh marang tampilan antarmuka panganggo kanggoné panganggo liya.\nKanggo terjemahan, mangga nganggo [https://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], proyèk lokalisasi MediaWiki.",
+       "editinginterface": "<strong>Pélik:</strong> Panjenengan lagi mbesut kaca sing kanggo ngisèni tèks mukantarané piranti alus.\nOwahan tumrap kaca iki bakal mrabawani cakriké mukantarané panganggo liya ing wiki iki.",
        "translateinterface": "Saperlu nambah utawa ngowah pertalan tumrap kabèh wiki, mangga anggoa [https://translatewiki.net/ translatewiki.net] minangka proyèk panglokaling MediaWiki.",
        "cascadeprotected": "Kaca iki wis direksa saka besutan amarga katransklusi ing {{PLURAL:$1|kaca, sing|kaca-kaca, sing}} kareksa mawa pilihan \"runut\" murub:\n$2",
-       "namespaceprotected": "Panjenengan ora kagungan idin kanggo nyunting kaca ing bilik nama '''$1'''.",
-       "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.",
+       "namespaceprotected": "Panjenengan ora duwé idin kanggo mbesut kaca ing mandala aran <strong>$1</strong>.",
+       "customcssprotected": "Panjenengan ora diidinaké mbesut kaca CSS iki amarga isiné setèlan pribadhi panganggo liyané.",
+       "customjsprotected": "Panjenengan ora diidinaké mbesut kaca JavaScript iki amarga isiné setèlan pribadhi panganggo liyané.",
        "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]].\nAlesané yaiku <em>$2</em>.",
-       "filereadonlyerror": "Ora bisa ngowah berkas \"$1\" amarga panyimpenan berkas \"$2\" ana ing mode mung-bisa-diwaca.\n\nPangurus sing ngopèni kuwi ngawedharaké: \"$3\".",
+       "filereadonlyerror": "Ora bisa ndandani barkas \"$1\" amarga panyimpenan barkas \"$2\" mung bisa diwaca.\n\nPangurus sistem sing ngunci iku njlèntrèhaké: \"$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": "Tulung [[Special:Userlogin|mlebu log]] dhisik kanggo ngakses kaca utawa kelakon iki.",
+       "exception-nologin-text": "Mangga mlebua log supaya bisa ngaksès kaca utawa tumindak iki.",
        "exception-nologin-text-manual": "Tulung $1 kanggo ngakses kaca utawa kelakon iki.",
        "virus-badscanner": "Kasalahan konfigurasi: pamindai virus ora dikenal: ''$1''",
        "virus-scanfailed": "''Pemindaian'' utawa ''scan'' gagal (kode $1)",
        "virus-unknownscanner": "antivirus buhbuhan:",
-       "logouttext": "'''Sampéyan wis metu log'''\n\nCathet 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.",
+       "logouttext": "<strong>Panjenengan wis metu log.</strong>\n\nTulung gatèkaké yèn sawenèh kaca bokmanawa bakal isih katon kaya déné yèn panjenengan isih mlebu log, kajaba panjenengan mbusak ''cache'' pangluruné panjenengan.",
        "cannotlogoutnow-title": "Ora bisa metu saiki",
        "cannotlogoutnow-text": "Metu ora mungkin menawa nganggo $1.",
        "welcomeuser": "Sugeng Rawuh, $1!",
        "welcomecreation-msg": "Akun panjenengan wis kacipta. Aja lali nata konfigurasi [[Special:Preferences|preferensi {{SITENAME}}]] panjenengan.",
        "yourname": "Jeneng panganggo:",
        "userlogin-yourname": "Jeneng panganggo",
-       "userlogin-yourname-ph": "Isi jeneng panganggoning sampéyan",
+       "userlogin-yourname-ph": "Isinen jeneng panganggoné panjenengan",
        "createacct-another-username-ph": "Isi jeneng panganggo",
        "yourpassword": "Tembung wadi:",
        "userlogin-yourpassword": "Tembung wadi",
-       "userlogin-yourpassword-ph": "Lebokaké tembung wadining sampéyan",
-       "createacct-yourpassword-ph": "Lebokaké tembung wadi",
+       "userlogin-yourpassword-ph": "Isinen tembung wadiné panjenengan",
+       "createacct-yourpassword-ph": "Isi tembung wadi",
        "yourpasswordagain": "Tik manèh tembung wadiné:",
-       "createacct-yourpasswordagain": "Netepaké tembung wadi",
+       "createacct-yourpasswordagain": "Konfirmasi tembung wadi",
        "createacct-yourpasswordagain-ph": "Lebokaké manèh tembung wadiné",
        "userlogin-remembermypassword": "Gawé amrih aku panggah kalebu",
        "userlogin-signwithsecure": "Nganggo koneksi aman",
        "cannotlogin-title": "Ora bisa mlebu log",
        "cannotlogin-text": "Mokal mlebu log.",
-       "cannotloginnow-title": "Ora bisa mlebu saiki",
-       "cannotloginnow-text": "Mlebu ora mungkin menawa nganggo $1.",
+       "cannotloginnow-title": "Ora bisa mlebu log saiki",
+       "cannotloginnow-text": "Mokal mlebu log yèn nganggo $1.",
        "cannotcreateaccount-title": "Ora bisa gawé akun",
        "cannotcreateaccount-text": "Gawé akun langsung ora bisa ing wiki iki.",
        "yourdomainname": "Dhomain panjenengan",
-       "password-change-forbidden": "Sampéyan ora bisa ngganti tembung sandhi nèng wiki iki.",
+       "password-change-forbidden": "Panjenengan ora bisa ngowahi tembung wadi ing wiki iki.",
        "externaldberror": "Ana kasalahan otèntikasi basis dhata èksternal utawa panjenengan ora pareng nglakoni pemutakhiran marang akun èksternal panjenengan.",
-       "login": "Mlebu",
+       "login": "Mlebu log",
        "login-security": "Vèrifikasi idhèntitas panjenengan",
-       "nav-login-createaccount": "Log mlebu / nggawé rékening (akun)",
-       "logout": "Metu",
-       "userlogout": "Metu",
-       "notloggedin": "Durung kalebu",
+       "nav-login-createaccount": "Mlebu log / gawé akun",
+       "logout": "Metu log",
+       "userlogout": "Metu log",
+       "notloggedin": "Durung mlebu log",
        "userlogin-noaccount": "Durung duwé akun?",
        "userlogin-joinproject": "Mèlua {{SITENAME}}",
        "createaccount": "Gawé akun",
-       "userlogin-resetpassword-link": "Lali tembung wadining sampéyan?",
-       "userlogin-helplink2": "Tulungi mlebu",
+       "userlogin-resetpassword-link": "Lali tembung wadiné panjenengan?",
+       "userlogin-helplink2": "Tulungi mlebu log",
        "userlogin-loggedin": "Panjenengan wis mlebu log minangka {{GENDER:$1|$1}}.\nAnggonen formulir ngisor iki saperlu mlebu log minangka panganggo liya.",
        "userlogin-createanother": "Gawé akun liya",
-       "createacct-emailrequired": "Alamat layang èlèktronik",
-       "createacct-emailoptional": "Alamat layang èlèktronik (manasuka)",
-       "createacct-email-ph": "Lebokaké layang èlèktronik sampéyan",
-       "createacct-another-email-ph": "Isi alamat layang èlèktronik",
-       "createaccountmail": "Nganggoa sandi sauntara sembarang lan kirimna liwat layang e-mail ing ngisor iki",
+       "createacct-emailrequired": "Alamat layang-èl",
+       "createacct-emailoptional": "Alamat layang-èl (manasuka)",
+       "createacct-email-ph": "Isinen layang-èlé panjenengan",
+       "createacct-another-email-ph": "Isi alamat layang-èl",
+       "createaccountmail": "Anggonen tembung wadi sembarang sauntara lan kirimen nyang alamat layang-èl sing dikarepaké",
        "createacct-realname": "Jeneng asli (manasuka)",
        "createacct-reason": "Alesan",
        "createacct-reason-ph": "Alesané panjenengan nggawé akun liya",
-       "createacct-submit": "Gawé akun sampéyan",
+       "createacct-submit": "Gawé akuné panjenengan",
        "createacct-another-submit": "Gawé akun",
        "createacct-continue-submit": "Banjuraké gawé akun",
        "createacct-another-continue-submit": "Banjuraké gawé akun",
-       "createacct-benefit-heading": "{{SITENAME}} digawé déning wong-wong kaya déné sampéyan.",
+       "createacct-benefit-heading": "{{SITENAME}} digawé déning wong-wong kaya panjenengan.",
        "createacct-benefit-body1": "{{PLURAL:$1|besutan}}",
        "createacct-benefit-body2": "{{PLURAL:$1|kaca}}",
-       "createacct-benefit-body3": "{{PLURAL:$1|sing nyumbang}} pungkasan",
+       "createacct-benefit-body3": "{{PLURAL:$1|sing nyumbang}} mentas waé",
        "badretype": "Sandhi panjenengan ora gathuk",
        "usernameinprogress": "Panggawéning akun tumrap jeneng panganggo iki tembé lumaku.\nEntèni sadhéla.",
        "userexists": "Jeneng panganggo sing dilebokaké lagi dianggo.\nMangga pilih jeneng liya.",
-       "loginerror": "Cacad nalika mlebu",
-       "createacct-error": "Cacad nalika nggawé akun",
+       "loginerror": "Masalah mlebu log",
+       "createacct-error": "Masalah panggawé akun",
        "createaccounterror": "Ora bisa gawé 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.",
+       "nocookiesnew": "Akun panganggoné wis digawé, nanging panjenengan durung mlebu log.\n{{SITENAME}} nganggo kuki kanggo nglebokaké panganggo ing log.\nÉwadéné, kukiné panjenengan dipatèni.\nMangga urubaké iku, banjur mlebua log kanthi nganggo jeneng panganggo lan tembung wadiné panjenengan sing anyar.",
        "nocookieslogin": "{{SITENAME}} nggunakaké ''cookies'' kanggo log panganggoné. ''Cookies'' ing panjlajah wèb panjenengan dipatèni. Mangga ngaktifaké manèh lan coba manèh.",
-       "nocookiesfornew": "Akun panganggo ora digawé amarga sumberé ora bisa dipesthèkaké.\nPesthèkaké sampéyan wis ngurubaké kuki, banjur balèni ngamot kaca iki lan njajal manèh.",
-       "createacct-loginerror": "Akuné wis kasil digawe nanging sampéyan ora bisa mlebu otomatis. Mangga [[Special:UserLogin|mlebua manual]].",
-       "noname": "Asma panganggo sing panjenengan pilih ora sah.",
-       "loginsuccesstitle": "Kasil mlebu",
-       "loginsuccess": "'''Panjenengan saiki mlebu ing {{SITENAME}} kanthi asma \"$1\".'''",
-       "nosuchuser": "Ora ana panganggo mawa asma \"$1\".\nJeneng panganggo iku mbédakaké kapitalisasi.\nCoba dipriksa manèh pasang aksarané, utawa [[Special:CreateAccount|gawé akun anyar]].",
+       "nocookiesfornew": "Akun panganggoné wurung digawé amarga awak dhéwé ora bisa mesthèkaké sumberé.\nPesthèkaké panjenengan wis ngurubaké kuki, banjur ambalana ngamot kaca iki lan njajalana manèh.",
+       "createacct-loginerror": "Akuné wis kasil digawe nanging panjenengan ora bisa otomatis mlebu log. Mangga [[Special:UserLogin|mlebua log kanthi manual]].",
+       "noname": "Panjenengan durung awèh jeneng panganggo sing trep.",
+       "loginsuccesstitle": "Kasil mlebu log",
+       "loginsuccess": "<strong>Panjenengan saiki wis mlebu log ing {{SITENAME}} minangka \"$1\".</strong>",
+       "nosuchuser": "Ora ana panganggo kanthi jeneng \"$1\".\nJeneng panganggo iku sènsitif tumrap gedhé-ciliké huruf.\nJajan priksanen éjaané panjenengan, utawa [[Special:CreateAccount|gawénen akun anyar]].",
        "nosuchusershort": "Ora ana panganggo mawa asma \"$1\". Coba dipriksa manèh pasang aksarané (éjaané).",
-       "nouserspecified": "Panjenengan kudu milih asma panganggo.",
+       "nouserspecified": "Panjenengan kudu milih jeneng panganggo.",
        "login-userblocked": "Panganggo iki pinalangan. Ora kena mbelu.",
-       "wrongpassword": "Tembung sandhi sing dipilih salah. Mangga coba manèh.",
+       "wrongpassword": "Tembung wadi sing diisèkaké salah.\nMangga jajalen manèh.",
        "wrongpasswordempty": "Panjenengan ora milih tembung sandhi. Mangga dicoba manèh.",
        "passwordtooshort": "Tembung sesinglon paling sethithik cacahé {{PLURAL:$1|1 aksara|$1 aksara}}.",
        "passwordtoolong": "Tembung wadi ora kena munjuli {{PLURAL:$1|1 pralambang|$1 pralambang}}.",
        "passwordtoopopular": "Tembung wadi sing wis kaprah ora kena dianggo. Mangga pilih tembung wadi liya sing mbédani.",
-       "password-name-match": "Tembung sandi panjenengan kudu béda karo jeneng panganggo panjenengan.",
+       "password-name-match": "Tembung wadiné panjenengan kudu béda saka jeneng panganggoné panjenengan.",
        "password-login-forbidden": "Panganggoning jeneng panganggo lan tembung wadi iki dilarang.",
        "mailmypassword": "Balèni gawé tembung wadi",
        "passwordremindertitle": "Pèngetan tembung sandhi saka {{SITENAME}}",
        "passwordremindertext": "Ana wong (mbokmanawa panjenengan dhéwé, saka alamat IP $1) nyuwun supaya dikirimi tembung sandhi anyar kanggo {{SITENAME}} ($4). Tembung sandi sawetara kanggo panganggo \"$2\" wis digawé lan saiki \"$3\". Yèn panjenengan pancèn nggayuh iki, mangga énggal mlebu log lan ngganti tembung sandi saiki.\nTembung sandi sawetara mau bakal kadaluwarsa ing {{PLURAL:$5|sadina|$5 dina}}.\nYèn wong liya sing nglakoni panyuwunan iki, utawa panjenengan éling tembung sandi panjenengan, lan ora kepéngin ngowahi, panjenengan ora usah nggubris pesen iki lan bisa tetep nganggo tembung sandi lawas.",
-       "noemail": "Ora ana alamat layang e-mail sing kacathet kanggo panganggo \"$1\".",
+       "noemail": "Ora ana alamat layang-èl sing kacathet tumrap ing panganggo \"$1\".",
        "noemailcreate": "Panjenengan kudu maringi alamat e-mail sing absah",
        "passwordsent": "Tembung sandi anyar wis dikirim menyang alamat layang èlèktronik tumrap \"$1\". \nMangga mlebu log manèh sawisé panjenengan nampa iku.",
-       "blocked-mailpassword": "Alamat IP panjenengan diblokir saka panyuntingan, mulané panjenengan ora olèh nganggo fungsi pèngetan tembung sandhi kanggo ''mencegah penyalahgunaan''.",
+       "blocked-mailpassword": "Alamat IP-né panjenengan diblokir saka mbesut. Kanggo ngéndhani tumindak salah-guna, ora diparengaké nganggo pamulihan tembung wadi saka alamat IP iki.",
        "eauthentsent": "Layang-èl konfirmasi wis dikirim nyang alamat layang-èl sing diisèkaké. Sadurungé ana layang-èl liyané sing dikirim nyang akun iku, panjenengan kudu nuruti arahan ana ing layang-èl iku saperlu ngonfirmasi yèn akun iku pancèn duwèké panjenengan.",
        "throttled-mailpassword": "Layang kanggo mbalèkaké tembung sandhi wis dikirim sasuwené ing {{PLURAL:$1|jam|$1 jam}}.\nKanggo nyegah ananing tumindhak culika, namung sak layang kanggo mbalèkaké tembung sandhi sing bakal dikirim sasuwéné ing {{PLURAL:$1|jam|$1 jam}}.",
-       "mailerror": "Cacad nalika ngirim layang: $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é.\nAmarga 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 tanggal $2, jam $3.",
-       "emailnotauthenticated": "Alamat layang élèktronik panjenengan durung didhedhes (dikonfirmasi). \n\nSadurungé didhedhes, panjenengan ora bisa nganggo fitur layang élèktronik (e-mail) ing ngisor iki.",
+       "mailerror": "Masalah pangirim layang: $1",
+       "acct_creation_throttle_hit": "Para neneka nyang wiki iki sing nganggo alamat IP-né panjenengan wis gawé {{PLURAL:$1|akun cacah 1|akun cacah $1}} sajeroné $2 pungkasan, sing cacahé nyandhak cacah maksimum sing diidinaké.\nTemahané, para neneka sing nganggo alamat IP iki ora bisa gawé akun manèh sauntara iki.",
+       "emailauthenticated": "Alamat layang-èlé panjenengan wis dikonfirmasi ing tanggal $2 pukul $3.",
+       "emailnotauthenticated": "Alamat layang-èlé panjenengan durung dikonfirmasi.\nLayang-èl ora bakal dikirim yèn gegayutan karo fitur-fitur 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.",
+       "cannotchangeemail": "Alamat layang-èl akun ora bisa diowah ing wiki iki.",
        "emaildisabled": "Situs iki ora bisa ngirim layang èlèktronik.",
        "accountcreated": "Akun wis kagawé",
        "accountcreatedtext": "Akun panganggo [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|rembug]]) 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.\n\nPanjenengan bisa nglirwakaké pesen iki yèn akun utawa rékening iki digawé déné sawijining kaluputan.",
+       "createaccount-title": "Gawé akun kanggo {{SITENAME}}",
+       "createaccount-text": "Ana sing nggawé akun nganggo alamat layang-èlé panjenengan ing {{SITENAME}} ($4) kanthi aran \"$2\", mawa tembung wadi \"$3\".\nPanjenengan kudu mlebu log lan ngowahi tembung wadiné panjenengan saiki.\n\nPanjenengan kena nglirwakaké layang iki, manawa akun iki digawé awit kaluputan.",
        "login-throttled": "Panjenengan wis kakèhan njajal mlebu log.\nTulung nunggu dhisik $1 sadurungé njajal manèh.",
-       "login-abort-generic": "Sampéyan ora bisa mlebu - Kawurungan",
+       "login-abort-generic": "Panjenengan ora bisa mlebu log - Kawurungan",
+       "login-migrated-generic": "Akuné panjenengan wis dimigrasi, lan jeneng panganggoné wis ora ana manèh ing wiki iki.",
        "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 diisi.\nYèn diisi, jeneng asliné panjenengan bakal kanggo atribusi awit karyané panjenengan.",
        "pt-login": "Mlebu log",
-       "pt-login-button": "Mlebu",
-       "pt-login-continue-button": "Banjuraké mlebu",
+       "pt-login-button": "Mlebu log",
+       "pt-login-continue-button": "Banjuraké mlebu log",
        "pt-createaccount": "Gawé akun",
-       "pt-userlogout": "Metu",
-       "php-mail-error-unknown": "Kasalahan ora dingertèni nèng piguna mail() PHP.",
+       "pt-userlogout": "Metu log",
+       "php-mail-error-unknown": "Masalah ora dingertèni ing piguna mail() PHP.",
        "user-mail-no-addy": "Njajal ngirim layang èlèktronik tanpa alamat layang èlèktronik.",
        "user-mail-no-body": "Nyoba ngirim layang e-mail, tapi isine kosong.",
        "changepassword": "Ganti tembung wadi",
-       "resetpass_announce": "Kanggo ngrampungaké lelakoning lumebu, sampéyan kudu masang tembung wadi anyar.",
+       "resetpass_announce": "Saperlu ngrampungaké olèhé mlebu log, panjenengan kudu nggawé tembung wadi anyar.",
        "resetpass_text": "<!-- Tambahaké teks ing kéné -->",
        "resetpass_header": "Ganti tembung wadining akun",
        "oldpassword": "Tembung wadi lawas:",
        "newpassword": "Tembung wadi anyar:",
        "retypenew": "Tik manèh tembung wadi anyaré:",
-       "resetpass_submit": "Nata tembung sandhi lan mlebu log",
-       "changepassword-success": "Tembung wadining sampéyan kasil diowah!",
+       "resetpass_submit": "Setèl tembung wadi lan mlebu log",
+       "changepassword-success": "Tembung wadiné panjenengan kasil diowah!",
+       "changepassword-throttled": "Panjenengan wis kakèhan njajal mlebu log.\nTulung nunggu dhisik $1 sadurungé njajal manèh.",
        "botpasswords": "Tembung wadi bot",
+       "botpasswords-disabled": "Tembung wadiné bot dipatèni.",
+       "botpasswords-no-central-id": "Saperlu nganggo tembung wadiné bot, panjenengan kudu mlebu log nyang akun séntral.",
+       "botpasswords-existing": "Tembung wadiné bot sing cumepak",
+       "botpasswords-createnew": "Gawé anyar tembung wadiné bot",
+       "botpasswords-editexisting": "Besut tembung wadiné bot sing anyar",
        "botpasswords-label-appid": "Jeneng bot:",
        "botpasswords-label-create": "Gawé",
        "botpasswords-label-update": "Anyari",
        "botpasswords-label-delete": "Busak",
        "botpasswords-label-resetpassword": "Balèni gawé tembung wadi",
        "resetpass_forbidden": "Tembung wadi ora bisa diganti",
-       "resetpass-no-info": "Panjenengan kudu mlebu log kanggo ngaksès kaca iki sacara langsung.",
+       "resetpass-no-info": "Panjenengan kudu mlebu log saperlu langsung ngaksès kaca iki.",
        "resetpass-submit-loggedin": "Ganti tembung wadi",
-       "resetpass-submit-cancel": "Batal",
-       "resetpass-wrong-oldpass": "Tembung sandi ora sah.\nPanjengen manawa wis kasil ganti tembung sandi utawa nyuwun tembung sandi sauntara sing anyar.",
+       "resetpass-submit-cancel": "Wurung",
+       "resetpass-wrong-oldpass": "Tembung wadi saiki utawa sauntara ora trep.\nPanjengen bokmanawa wis ngganti tembung wadiné panjenengan utawa nyuwun tembung wadi sauntara sing anyar.",
        "resetpass-temp-password": "Tembung wadi sauntara:",
        "resetpass-abort-generic": "Ngowah tembung sandhi diwurungaké déning èkstènsi.",
        "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-disabled": "Piranti kanggo mbalèni nyetèl tembung sandhi dipatèni nèng wiki iki.",
+       "passwordreset-disabled": "Setèl ulang tembung wadi dipatèni ing wiki iki.",
        "passwordreset-emaildisabled": "Fitur layang elektronik wis dipateni ing wiki iki.",
        "passwordreset-username": "Jeneng panganggo:",
        "passwordreset-domain": "Domain:",
-       "passwordreset-email": "Alamat layang èlèktronik:",
-       "passwordreset-emailtitle": "Rincian akun nèng {{SITENAME}}",
-       "passwordreset-emailtext-ip": "Ana uwong (mbok menawa Sampéyan, mawa angka IP $1) njaluk ganti tembung sandhiné Sampéyan ana ing {{SITENAME}} ($4). {{PLURAL:$3|Rèkèning|Rèkèning-rèkèning}} ngisor iki magepokan karo padunungané layang èlèktronik iki:\n\n$2\n\n{{PLURAL:$3|Tembung sandhi sawetara iki}} bakal kedaluwarsa ing {{PLURAL:$5|sak dina|$5 dina}}.\nSampéyan kudu mlebu log lan milih siji tembung sandhi anyar saiki. Yèn wong liya sing njaluk iki, utawa yèn Sampéyan jebul wis kèlingan tembung sandhiné sing lawas saéngga ora ana niyat kanggo ngganti, Sampéyan bisa ngejaraké wara-wara iki lan bacutaké nganggo tembung sandhiné lawas Sampéyan.",
+       "passwordreset-email": "Alamat layang-èl:",
+       "passwordreset-emailtitle": "Rerincèné akun ing {{SITENAME}}",
+       "passwordreset-emailtext-ip": "Ana wong (bokmanawa panjenengan, saka alamat IP $1) nyuwun tembung wadiné panjenengan disetèl ulang mungguh ing {{SITENAME}} ($4). {{PLURAL:$3|Akun}} ing ngisor iki ana gayutané karo layang-èl iki:\n\n$2\n\n{{PLURAL:$3|Tembung wadi sauntara iki}} bakal kadaluwarsa sawisé {{PLURAL:$5|sadina|$5 dina}}.\nPanjenengan kudu mlebu log lan milih tembung wadi anyar saiki. Yèn wong liya sing nyuwun iki, utawa yèn panjenengan pranyata wis kèlingan tembung wadiné panjenengan sing lawas banjur panjenengan ora nedya ngganti, panjenengan bisa nglirwakaké layang iki lan mbanjuraké nganggo tembung wadiné panjenengan sing lawas.",
        "passwordreset-emailtext-user": "Panganggo $1 seka {{SITENAME}} njaluk ganti tembung sandhiné Sampéyan ana ing {{SITENAME}} ($4). {{PLURAL:$3|Rèkèning|Rèkèning-rèkèning}} ngisor iki magepokan karo padunungané layang èlèktronik iki:\n\n$2\n\n{{PLURAL:$3|Tembung sandhi sawetara iki}} bakal kedaluwarsa ing {{PLURAL:$5|sak dina|$5 dina}}.\nSampéyan kudu mlebu log lan milih siji tembung sandhi anyar saiki. Yèn wong liya sing njaluk iki, utawa yèn Sampéyan jebul wis kèlingan tembung sandhiné sing lawas saéngga ora ana niyat kanggo ngganti, Sampéyan bisa ngejaraké wara-wara iki lan bacutaké nganggo tembung sandhiné lawas Sampéyan.",
        "passwordreset-emailelement": "Jeneng panganggo: \n$1\n\nTembung wadi sauntara: \n$2",
        "passwordreset-emailsentemail": "Yèn layang èlèktronik iki nggayut akuning sampéyan, layang kanggo salin tembung wadi bakal dikirim.",
-       "changeemail": "Owah utawa busak alamat layang èlèktronik",
-       "changeemail-header": "Ganti alamat layang èlèktronik akun",
+       "passwordreset-emailsentusername": "Manawa ana alamat layang-èl sing ana gayutané karo jeneng panganggo iki, layang-èl kanggo nyetèl ulang tembung wadi bakal dikirim.",
+       "changeemail": "Owah utawa busak alamat layang-èl",
+       "changeemail-header": "Isinen formulir iki saperlu salin alamat layang-èlé panjenengan. Manawa panjenengan péngin ngilangi gegayutané alamat layang-èl saka akuné panjenengan, kosongaké waé babagan layang-èl anyar nalika ngirim formuliré.",
        "changeemail-no-info": "Sampéyan kudu mlebu log kanggo ngaksès kaca iki langsung.",
-       "changeemail-oldemail": "Alamat layang èlèktronik saiki:",
-       "changeemail-newemail": "Alamat layang èlèktronik anyar:",
+       "changeemail-oldemail": "Alamat layang-èl saiki:",
+       "changeemail-newemail": "Alamat layang-èl anyar:",
        "changeemail-none": "(ora ana)",
        "changeemail-password": "Sandi {{SITENAME}} panjenengan:",
-       "changeemail-submit": "Ganti layang èlèktronik",
+       "changeemail-submit": "Ganti layang-èl",
+       "changeemail-nochange": "Mangga isinen mawa alamat layang-èl sing anyar tur béda.",
        "resettokens": "Reset token",
        "resettokens-text": "Anda dapat me-reset Token yang memungkinkan akses ke data pribadi tertentu yang terkait dengan akun Anda di sini.\n\nAnda 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.",
        "image_tip": "Barkas sisipan",
        "media_sample": "Conto.ogg",
        "media_tip": "Pranala barkas",
-       "sig_tip": "Tandha tangan sampéyan mawa tandha wayah",
+       "sig_tip": "Tapak asmané panjenengan mawa tandha wektu",
        "hr_tip": "Garis horisontal",
        "summary": "Ringkesan:",
        "subject": "Jejer:",
        "showdiff": "Tuduhaké owahan",
        "anoneditwarning": "<strong>Pènget:</strong> Panjenengan durung mlebu log. Alamat IP-né panjenengan bakal katon marang wong akèh manawa panjenengan mbesut. Manawa panjenengan <strong>[$1 mlebu log]</strong> utawa <strong>[$2 nggawé akun]</strong>, besutané panjenengan bakal dadi darbéné naragunané panjenengan lan uga ana kauntungan liya.",
        "anonpreviewwarning": "<em>Panjenengan durung mlebu log. Yèn disimpen, alamat IP panjenengan bakal kacathet ing sujarah besutan kaca iki.</em>",
-       "missingsummary": "'''Pènget:''' Panjenengan ora nglebokaké ringkesan panyuntingan. Menawa panjenengan mencèt tombol Simpen manèh, suntingan panjenengan bakal kasimpen tanpa ringkesan panyuntingan.",
-       "selfredirect": "<strong>Pélik:</strong> Sampéyan ngalih kaca iki iya nyang kaca iki dhéwé.\nSampéyan mungkin salah wènèh tujuan kanggo alihan utawa salah mbesut kaca.\nYèn sampéyan ngeklik \"{{int:savearticle}}\" manèh, kaca alihan bakal digawé.",
+       "missingsummary": "<strong>Pangéling-éling:</strong> Panjenengan ora ngisèni ringkesané besutan.\nManawa panjenengan mencèt \"$1\" manèh, besutané panjengan bakal kasimpen tanpa katerangan.",
+       "selfredirect": "<strong>Pélik:</strong> Sampéyan ngalih kaca iki iya nyang kaca iki dhéwé.\nSampéyan mungkin salah wènèh tujuan kanggo alihan utawa salah mbesut kaca.\nYèn sampéyan ngeklik \"$1\" manèh, kaca alihan bakal digawé.",
        "missingcommenttext": "Mangga isi tanggapan ing ngisor iki.",
-       "missingcommentheader": "'''Pangéling:''' Sampéyan durung nyadhiyakaké judhul/jejer kanggo tanggepan iki.\nYèn Sampéyan klik \"{{int:savearticle}}\" manèh, suntingan Sampéyan bakal kasimpen tanpa kuwi.",
-       "summary-preview": "Pratuduh tingkesan:",
-       "subject-preview": "Prawuryaning jejer:",
-       "previewerrortext": "Cacad dumadi nalika njajal mratuduh owahanmu.",
+       "missingcommentheader": "'''Pangéling:''' Sampéyan durung nyadhiyakaké judhul/jejer kanggo tanggepan iki.\nYèn Sampéyan klik \"$1\" manèh, suntingan Sampéyan bakal kasimpen tanpa kuwi.",
+       "summary-preview": "Pratuduh ringkesan besutan:",
+       "subject-preview": "Pratuduh jejer:",
+       "previewerrortext": "Ana masalah nalika njajal mratuduhaké owahané panjenengan.",
        "blockedtitle": "Panganggo kapalangan",
        "blockedtext": "<b>Asma panganggo utawa alamat IP panjenengan diblokir.</b>\n\nBlokir iki sing nglakoni $1.\nAlesané <i>$2</i>.\n\n* Diblokir wiwit: $8\n* Kadaluwarsa pemblokiran ing: $6\n* Sing arep diblokir: $7\n\nPanjenengan bisa ngubungi $1 utawa [[{{MediaWiki:Grouppage-sysop}}|pangurus liyané]] kanggo ngomongaké prakara iki.\n\nPanjenengan ora bisa nggunakaké fitur 'Kirim layang é-mail panganggo iki' kejaba panjenengan wis nglebokaké alamat é-mail sing sah ing [[Special:Preferences|prèferènsi]] panjenengan.\n\nAlamat IP panjenengan iku $3, lan ID pamblokiran iku #$5.\nTulung kabèh informasi ing ndhuwur iki disertakaké ing saben pitakon panjenengan.",
-       "autoblockedtext": "Alamat IP panjenangan wis diblokir minangka otomatis amerga dienggo déning panganggo liyané. Pamblokiran dilakoni déning $1 mawa alesan:\n\n:''$2''\n\n* Diblokir wiwit: $8\n* Blokir kadaluwarsa ing: $6\n* Sing dikarepaké diblokir: $7\n\nPanjenengan bisa ngubungi $1 utawa [[{{MediaWiki:Grouppage-sysop}}|pangurus liyané]] kanggo ngomongaké perkara iki.\n\nPanjenengan ora bisa nganggo fitur \"kirim e-mail panganggo iki\" kejaba panjenengan wis nglebokaké alamat e-mail sing sah ing [[Special:Preferences|prèferènsi]] panjenengan lan panjenengan wis diblokir kanggo nggunakaké.\n\nID pamblokiran panjenengan iku #$5 lan alamat IP panjenengan iku $3. Tulung sertakna informasi ing dhuwur kabèh iki saben ngajokaké pitakonan panjenengan. Matur nuwun.",
+       "autoblockedtext": "Alamat IP-né panjenangan wis otomatis diblokir amarga dienggo déning panganggo liyané, sing diblokir déning $1.\n\n:<em>$2</em>\n\n* Wiwit diblokir: $8\n* Rampung diblokir: $6\n* Sing diblokir: $7\n\nPanjenengan bisa ngubungi $1 utawa [[{{MediaWiki:Grouppage-sysop}}|pangurus]] liyané kanggo ngrembug blokirané.\n\nPanjenengan ora bisa nganggo fitur \"kirim layang-èl panganggo iki\" kajaba panjenengan wis ndhaftaraké alamat layang-èl sing trep ing [[Special:Preferences|pilalan panganggoné]] panjenengan lan panjenengan durung tau diblokir nalika nganggo iku.\n\nAlamat IP-né panjenengan sing saiki ya iku $3, lan ID blokirané ya iku $5. \nMangga wuwuhen kabèh rerincèn ing ndhuwur sajeroné samubarang pitakoné panjenengan.",
        "blockednoreason": "ora ana alesan sing diwènèhaké",
        "whitelistedittext": "Sampéyan kudu $1 murih bisa mbesut kaca.",
        "confirmedittext": "Panjenengan kudu ndhedhes alamat e-mail dhisik sadurungé pareng nyunting sawijining kaca. Mangga nglebokaké lan validasi alamat e-mail panjenengan sadurungé nglakoni panyuntingan. Alamat e-mail sawisé bisa diowahi liwat [[Special:Preferences|kaca préférènsi]]",
        "nosuchsectiontitle": "Pérangan ora katemu",
        "nosuchsectiontext": "Panjenengan nyoba nyunting sawijining bagéan sing ora ana.\nBagéan iki manawa wis dipindhah utawa dibusak nalika panjenengan buka.",
-       "loginreqtitle": "Kudu mlebu",
-       "loginreqlink": "mlebu",
+       "loginreqtitle": "Kudu mlebu log",
+       "loginreqlink": "mlebu log",
        "loginreqpagetext": "Panjenengan kudu $1 kanggo bisa mirsani kaca liyané.",
        "accmailtitle": "Tembung sandi wis kinirim",
        "accmailtext": "Tembung sandi sembarang kanggo [[User talk:$1|$1]] wis dikirim menyang $2.\n\nTembung sandi iki bisa diganti ing kaca <em>[[Special:ChangePassword|salin tembung sandi]]</em> sawisé mlebu log.",
        "newarticle": "(Anyar)",
        "newarticletext": "Panjenengan ngetuti pranala sing durung ana.\nKanggo nggawé kaca, gagéa ngetik ing kothak ngisor iki (deleng [$1 kaca pitulung] ngenani katerangané).\nManawa panjenengan tekan kéné awit ora sengaja, kliken tumbul <strong>balik</strong> ana ing pangluruné panjenengan.",
-       "anontalkpagetext": "---- ''Iki yaiku kaca dhiskusi sawijining panganggo anonim sing durung kagungan akun utawa ora nganggo akuné, dadi kita keeksa kudu nganggo alamat IP-né kanggo nepangi. Alamat IP kaya mengkéné iki bisa dienggo déning panganggo sing séjé-séjé. Yèn panjenengan pancèn panganggo anonim lan olèh komentar-komentar miring, mangga [[Special:CreateAccount|nggawé akun]] utawa [[Special:UserLogin|log mlebu]] supaya ora rancu karo panganggo anonim liyané ing mangsa ngarep.''",
+       "anontalkpagetext": "----\n<em>Iki kaca parembugané panganggo anonim sing durung gawé akun, utawa sing ora nganggo akuné.</em>\nMula, awak dhéwé kudu nganggo alamat IP awujud angka kanggo nglacak dhèwèké.\nAlamat IP mangkono bisa dianggo déning sawenèh panganggo.\nManawa panjenengan panganggo anonim lan rumasa yèn ana tanggepan sing ora ilok dieneraké marang panjenengan, mangga [[Special:CreateAccount|gawéa akun]] utawa [[Special:UserLogin|mlebua log]] kanggo ngéndhani salah pangira karo panganggo anonim liyané ing tembé buri.",
        "noarticletext": "Kala saiki kaca iki durung ana tulisané.\nSampéyan bisa [[Special:Search/{{PAGENAME}}|nggolèki sesirahing kaca iki]] sajeroning kaca liya,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nggolèki log sing magepokan],\nutawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} nggawé kaca iki]</span>.",
-       "noarticletext-nopermission": "Saiki ora ana tèks ing kaca iki. \nSampéyan bisa [[Special:Search/{{PAGENAME}}|nggolèki judhul kaca iki]] nèng kaca liya, \nutawa <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|kaca={{urlencode:{{FULLPAGENAME}}}}}} nggolèki log sing kaitan]</span>, nanging Sampéyan ora nduwèni idin nggawé kaca iki.",
-       "missing-revision": "Benahan #$1 saka kaca ajeneng \"{{FULLPAGENAME}}\" ora ana.\n\nIki biasané kasebabaké pranala riwayat sing kedaluwarsa saka kaca kuwi wis dibusak.\nRinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambusakan].",
-       "userpage-userdoesnotexist": "Akun utawa rékening panganggo \"<nowiki>$1</nowiki>\" ora kadaftar.",
-       "userpage-userdoesnotexist-view": "Panganggo \"$1\" ora kadhaptar.",
+       "noarticletext-nopermission": "Saiki lagi ora ana tèks ing kaca iki. \nPanjenengan bisa [[Special:Search/{{PAGENAME}}|nggolèk sesirah kaca iki]] ing kaca liyané, \nutawa <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{urlencode:{{FULLPAGENAME}}}}}} nggolèk ing log sing gegayutan]</span>, nanging panjenengan ora kawogan nggawé kaca iki.",
+       "missing-revision": "Révisi #$1 saka kaca ajeneng \"{{FULLPAGENAME}}\" ora ana.\n\nIki biyasané kasababaké awit nututi pranala sujarah sing wis lawas saka sawijiné kaca sing wis dibusak.\nRerincèné bisa digolèki ing [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log busak].",
+       "userpage-userdoesnotexist": "Akun panganggo \"$1\" ora kadhaftar.\nMangga pesthèkaké dhisik yèn panjenengan péngin nggawé/mbesut kaca iki.",
+       "userpage-userdoesnotexist-view": "Akun panganggo \"$1\" ora kadhaftar.",
        "blocked-notice-logextract": "Panganggo iki saiki lagi diblokir.\nLog pamblokiran pungkasan dituduhaké ing ngisor iki minangka bahan rujukan:",
-       "clearyourcache": "'''Cathetan:''' Sawisé nyimpen préférènsi, panjenengan prelu ngresiki <em>cache</em> panjlajah wèb panjenengan kanggo mirsani pangowahan. '''Mozilla / Firefox / Safari:''' pencèt ''Ctrl-Shift-R'' (''Cmd-Shift-R'' pada Apple Mac); '''IE:''' tekan ''Ctrl-F5''; '''Konqueror:''': pencèt ''F5''; '''Opera''' resikana <em>cache</em> miturut menu ''Tools→Preferences''.",
+       "clearyourcache": "<strong>Cathetan:</strong> Nalika rampung nyimpen, panjenengan kudu mbusak cache-né pangluruné panjenengan supaya owahané ketara.\n* <strong>Firefox / Safari:</strong> Pencèt <em>Shift</em> nalika ngeklik <em>Reload</em>, utawa pencèt <em>Ctrl-F5</em> utawa <em>Ctrl-R</em> (<em>⌘-R</em> ing Mac)\n* <strong>Google Chrome:</strong> Pencèt <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> ing Mac)\n* <strong>Internet Explorer:</strong> Pencèt <em>Ctrl</em> nalika ngeklik <em>Refresh</em>, utawa pencèt <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Nyang <em>Menu → Settings</em> (<em>Opera → Preferences</em> ing Mac) nuli nyang <em>Privacy & security → Clear browsing data → Cached images and files</em>.",
        "usercssyoucanpreview": "'''Tips:''' Gunakna tombol \"{{int:showpreview}}\" kanggo ngetès CSS anyar panjenengan sadurungé disimpen.",
        "userjsyoucanpreview": "'''Tips:''' Gunakna tombol \"{{int:showpreview}}\" kanggo ngetès JavaScript anyar panjenengan sadurungé disimpen.",
        "usercsspreview": "'''Pèngeten yèn panjenengan namung mirsani pratilik CSS panjenengan.''''\n'''Pratilik iku durung kasimpen!'''",
        "userjspreview": "'''Pèngeten yèn sing panjenengan pirsani namung pratilik JavaScript panjenengan, lan menawa pratilik iku dèrèng kasimpen!'''",
        "sitecsspreview": "<strong>Élinga yèn Sampéyan mung mratuduh CSS iki.\nIki durung kasimpen!</strong>",
        "sitejspreview": "<strong>Élinga yèn Sampéyan mung mratuduh kodhé JavaScript iki.\nIki durung kasimpen!</strong>",
-       "userinvalidcssjstitle": "'''Pènget:''' Kulit \"$1\" ora ditemokaké. Muga dipèngeti yèn kaca .css lan .js nggunakaké huruf cilik, conto {{ns:user}}:Foo/vector.css lan dudu {{ns:user}}:Foo/Vector.css.",
+       "userinvalidcssjstitle": "<strong>Pènget:</strong> Ora ana ules \"$1\".\nKaca .css lan .js padatan nganggo sesirah mawa huruf cilik, contoné {{ns:user}}:Foo/vector.css, dudu {{ns:user}}:Foo/Vector.css.",
        "updated": "(Kaanyaran)",
        "note": "<strong>Cathetan:</strong>",
        "previewnote": "<strong>Élinga yèn iki mung pratuduh.</strong>\nOwahanmu durung kasimpen!",
        "continue-editing": "Menyang pambesutan",
-       "previewconflict": "Pratilik iki nuduhaké tèks ing bagian dhuwur kothak suntingan tèks kayadéné bakal katon yèn panjenengan bakal simpen.",
-       "session_fail_preview": "Ngapunten! Kita ora bisa mrosès besutan panjenengan amarga ilangé sèsi data.\n\nPanjenengan bokmanawa wis metu log. <strong>Mangga vèrifikasi manawa panjenengan isih mlebu log lan jajala manèh</strong>.\nManawa isih durung kena, jajala [[Special:UserLogout|metu log]] lan mlebu log manèh, banjur priksaa apa browser panjenengan ngidinaké kuki saka situs iki.",
+       "previewconflict": "Pratuduh iki nuduhaké tèksé ing pérangan ndhuwur kothak besutan tèks lan nuduhaké wujudé kaya déné yèn wis disimpen.",
+       "session_fail_preview": "Ngapunten! Kita ora bisa ngayahi besutané panjenengan amarga ilangé sèsi dhata.\n\nPanjenengan bokmanawa wis metu log. <strong>Mangga vèrifikasi manawa panjenengan isih mlebu log lan jajalen manèh</strong>.\nManawa isih durung kena, jajalen [[Special:UserLogout|metu log]] lan mlebu log manèh, banjur priksanen apa pangluruné panjenengan ngidinaké kuki saka situs iki.",
        "session_fail_preview_html": "'''Nuwun sèwu! Kita ora bisa prosès suntingan panjenengan amerga data sési ilang.'''\n\n''Amerga wiki iki ngidinaké panrapan HTML mentah, pratayang didelikaké minangka penggakan marang serangan Javascript.''\n\n'''Yèn iki sawijining upaya suntingan sing absah, mangga dicoba manèh. Yèn isih tetep ora kasil, cobanen metu log utawa oncat lan mlebua manèh.'''",
-       "token_suffix_mismatch": "'''Suntingan panjenengan ditulak amerga aplikasi klièn panjenengan ngowahi karakter tandha wewacan ing suntingan. Suntingan iku ditulak kanggo untuk menggak kaluputan ing tèks artikel. Prekara iki kadhangkala dumadi yèn panjenengan ngangem dines layanan proxy anonim adhedhasar situs wèb sing duwé masalah.'''",
-       "edit_form_incomplete": "'''Sebagéyan pormulir suntingan ora tekan nèng sasana; cèk pindho yèn suntingan Sampéyan isih wutuh lan jajal manèh.'''",
+       "token_suffix_mismatch": "<strong>Besutané panjenengan ditulak amarga aplikasi klièné panjenengan ngowahi karakter tandha waca ing token besutané.</strong>\nBesutané wis ditulak kanggo nyegah rusaké tèks kaca.\nSing kaya mangkono biyasané kadadéan nalika panjenengan nganggo paladenan proksi anonim sing lelandhesan jaringan.",
+       "edit_form_incomplete": "<strong>Sawenèh pérangan formulir besut ora nyandhak paladèné; priksanen manèh yèn besutané panjenengan isih wutuh banjur jajalen manèh.</strong>",
        "editing": "Mbesut $1",
        "creating": "Nggawé $1",
        "editingsection": "Mbesut $1 (pérangan)",
        "editingcomment": "Mbesut $1 (pérangan anyar)",
        "editconflict": "Cengkah besutan: $1",
-       "explainconflict": "Wong liya wis nyunting kaca iki wiwit panjenengan mau nyunting.\nBagian dhuwur tèks iki ngamot tèks kaca vèrsi saiki.\nPangowahan sing panjenengan lakoni dituduhaké ing bagian ngisor tèks.\nPanjenengan namung prelu nggabungaké pangowahan panjenengan karo tèks sing wis ana.\n'''Namung''' tèks ing bagian dhuwur kaca sing bakal kasimpen menawa panjenengan mencèt \"{{int:savearticle}}\".",
-       "yourtext": "Tulisan panjenengan",
+       "explainconflict": "Wong liya wis nyunting kaca iki wiwit panjenengan mau nyunting.\nBagian dhuwur tèks iki ngamot tèks kaca vèrsi saiki.\nPangowahan sing panjenengan lakoni dituduhaké ing bagian ngisor tèks.\nPanjenengan namung prelu nggabungaké pangowahan panjenengan karo tèks sing wis ana.\n'''Namung''' tèks ing bagian dhuwur kaca sing bakal kasimpen menawa panjenengan mencèt \"$1\".",
+       "yourtext": "Tèksé panjenengan",
        "storedversion": "Owahan kasimpen",
        "nonunicodebrowser": "'''PÈNGET: Panjlajah wèb panjenengan ora ndhukung Unicode, mangga gantènana panjlajah wèb panjenengan sadurungé nyunting artikel.'''",
        "editingold": "'''PÈNGET:''' Panjenengan nyunting revisi lawas sawijining kaca. Yèn versi iki panjenengan simpen, mengko pangowahan-pangowahan sing wis digawé wiwit revisi iki bakal ilang.",
-       "yourdiff": "Prabédan",
+       "yourdiff": "Béda",
        "copyrightwarning": "Tulung dipun-gatèkaké menawa kabèh sumbangsih utawa kontribusi kanggo {{SITENAME}} iku dianggep wis diluncuraké miturut $2 GNU (mangga priksanen $1 kanggo ditèlé).\nMenawa panjenengan ora kersa menawa tulisan panjenengan bakal disunting karo disebar, aja didokok ing kéné.<br />\nPanjenengan uga janji menawa apa-apa sing katulis ing kéné, iku karyané panjenengan dhéwé, utawa disalin saka sumber bébas. '''AJA NDOKOK KARYA SING DIREKSA DÉNING UNDHANG-UNDHANG HAK CIPTA TANPA IDIN!'''",
        "copyrightwarning2": "Mangga digatèkaké yèn kabèh kontribusi marang  {{SITENAME}} bisa disunting, diowahi, utawa dibusak déning penyumbang liyané. Yèn panjenengan ora kersa yèn tulisan panjenengan bisa disunting wong liya, aja ngirim artikel panjenengan ing kéné.<br />Panjenengan uga janji yèn tulisan panjenengan iku kasil karya panjenengan dhéwé, utawa disalin saka sumber umum utawa sumber bébas liyané (mangga delengen $1 kanggo informasi sabanjuré). '''AJA NGIRIM KARYA SING DIREKSA DÉNING UNDHANG-UNDHANG HAK CIPTA TANPA IDIN!'''",
        "longpageerror": "'''Kasalahan: Tèks sing Sampéyan lebokaké dawané {{PLURAL:$1|sak kilobita|$1 kilobita}}, luwih dawa saka maksimal {{PLURAL:$2|sak kilobita|$2 kilobita}}.'''\nKuwi ora bisa disimpen.",
        "readonlywarning": "'''PÈNGET: Basis data lagi dikunci amerga ana pangopènan, dadi saiki panjenengan ora bisa nyimpen kasil panyuntingan panjenengan. Panjenengan mbokmenawa prelu mindhahaké kasil panyuntingan panjenengan iki menyang panggonan liya kanggo disimpen bésuk.'''\n\nPangurus sing ngunci basis data mènèhi katrangan kaya mengkéné: $1",
-       "protectedpagewarning": "'''PÈNGET:  Kaca iki wis dikunci dadi namung panganggo sing nduwé hak aksès pangurus baé sing bisa nyunting.'''\nEntri cathetan pungkasan disadiakake ing ngisor kanggo referensi:",
-       "semiprotectedpagewarning": "'''Cathetan:''' Kaca iki lagi pinuju direksa, dadi namung panganggo kadaftar sing bisa nyunting.\nEntri cathetan pungkasan disadiakake ing ngisor kanggo referensi:",
+       "protectedpagewarning": "<strong>Pélik: Kaca iki wis direksa, mula mung panganggo mawa hak mirunggan pangurus sing bisa mbesut.</strong>\nÈntri log sing pungkasan ana ing ngisor iki minangka rujukan:",
+       "semiprotectedpagewarning": "<strong>Cathetan:</strong> Kaca iki pinuju direksa, mula mung panganggo sing kadhaftar sing bisa mbesut.\nÈntri log pungkasan cumepak ana ing ngisor kanggo rujukan:",
        "cascadeprotectedwarning": "<strong>Pènget:</strong> Kaca iki wis direksa saéngga mung panganggo kanthi hak pangurus waé sing bisa mbesut amarga kaca iki katranklusi ing {{PLURAL:$1|kaca|kaca-kaca}} sing kareksa runut ngisor iki:",
        "titleprotectedwarning": "'''Pènget: Kaca iki wis dikunci saéngga perlu [[Special:ListGroupRights|hak mligi]] kanggo gawéné.'''\nEntri cathetan pungkasan disadiakake ing ngisor kanggo referensi:",
-       "templatesused": "{{PLURAL:$1|Cithakan|Cithakan}} sing dienggo ing kaca iki:",
-       "templatesusedpreview": "{{PLURAL:$1|Cithakan|Cithakan-cithakan}} sing dienggo ing pratilik iki:",
+       "templatesused": "{{PLURAL:$1|Cithakan}} sing dienggo ing kaca iki:",
+       "templatesusedpreview": "{{PLURAL:$1|Cithakan}} sing dienggo ing pratuduh iki:",
        "templatesusedsection": "{{PLURAL:$1|Cithakan}} sing dienggo ding bagian iki:",
        "template-protected": "(kareksa)",
        "template-semiprotected": "(semu kareksa)",
        "hiddencategories": "Kaca iki anggotaning {{PLURAL:$1|1 kategori wadi|$1 kategori wadi}}:",
        "edittools": "<!-- Tèks ing ngisor iki bakal ditudhuhaké ing ngisoring isènan suntingan lan pangemotan.-->",
-       "nocreatetext": "Situs iki ngwatesi kemampuan kanggo nggawé kaca anyar. Panjenengan bisa bali lan nyunting kaca sing wis ana, utawa mangga [[Special:UserLogin|mlebua log utawa ndaftar]]",
+       "nocreatetext": "{{SITENAME}} matesi bisané panjenengan nggawé kaca anyar.\nPanjenengan bisa bali lan mbesut kaca sing ana, utawa [[Special:UserLogin|mlebu log utawa nggawé akun]].",
        "nocreate-loggedin": "Panjenengan ora kagungan idin kanggo nggawé kaca anyar.",
        "sectioneditnotsupported-title": "Panyuntingan bagéyan ora kasengkuyungan",
        "sectioneditnotsupported-text": "Ora bisa mbesut sapérangan ana ing kaca iki.",
        "permissionserrorstext": "Panjengan ora kagungan idin kanggo nglakoni sing panjenengan gayuh amerga {{PLURAL:$1|alesan|alesan-alesan}} iki:",
        "permissionserrorstext-withaction": "Panjenengan ora duwé hak aksès kanggo $2, amarga {{PLURAL:$1|alasan|alasan}} ing ngisor iki:",
        "recreate-moveddeleted-warn": "'''Pènget: Panjenengan gawé manèh sawijining kaca sing wis tau dibusak.'''\n\nMangga digagas manèh apa pantes nerusaké nyunting kaca iki.\nIng ngisor iki kapacak log pambusakan lan pamindhahan saka kaca iki:",
-       "moveddeleted-notice": "Kaca iki wis dibusak.\nCathetan busakan lan lih-lihan kaca ana ing ngisor minangka rujukan.",
+       "moveddeleted-notice": "Kaca iki wis dibusak.\nLog busak lan alih ngenani kacané cumepak ing ngisor kanggo rujukan.",
        "log-fulllog": "Deleng cathetan wutuh",
-       "edit-hook-aborted": "Suntingan dibatalaké déning kait parser\nTanpa ana katrangan.",
+       "edit-hook-aborted": "Besutan diwurungaké déning cangkolan.\nOra ana katerangané.",
        "edit-gone-missing": "Ora bisa nganyari kaca.\nKatoné kaca iki wis dibusak.",
        "edit-conflict": "Cengkah besutan",
-       "edit-no-change": "Suntingan panjenengan dilirwakaké amerga panjenengan ora nglakoni pangowahan apa-apa ing tèks.",
+       "edit-no-change": "Besutané panjenengan dilirwakaké amarga ora ana owahan apa-apa nyang tèksé.",
        "postedit-confirmation-created": "Kaca wis kagawé.",
        "postedit-confirmation-saved": "Besutané panjenengan wis kasimpen.",
        "edit-already-exists": "Ora bisa nggawé kaca anyar.\nAmerga wis ana.",
        "expansion-depth-exceeded-warning": "Kaca munculi jeroné èkspansi",
        "parser-unstrip-loop-warning": "Unstrip loop detected",
        "parser-unstrip-recursion-limit": "Unstrip recursion limit exceeded ($1)",
-       "converter-manual-rule-error": "Kasalahan kadètèk nèng aturan pangubahan basa manual",
+       "converter-manual-rule-error": "Masalah kapranggul ing aturan konvèrsi basa manual",
        "undo-success": "Besutan iki kena diwurungaké.\nTiliki bandhingan ngisor iki saperlu mesthèkaké yèn bener iki sing arep kolakoni, nuli simpen owahan ngisor iki kanggo ngiyai yèn besutané diwurungaké.",
        "undo-failure": "Suntingan iki ora bisa dibatalakén amerga ana konflik panyuntingan antara.",
        "undo-norev": "Besutan iki ora bisa diwurungaké amarga wis ora ana utawa wis dibusak.",
        "undo-summary": "Mbalèkaké owahan $1 déning [[Special:Contributions/$2|$2]] ([[User talk:$2|rembugan]])",
-       "undo-summary-username-hidden": "Batalna revisi $1 saking panganggo kang didhelikake",
+       "undo-summary-username-hidden": "Balèkaké owahan $1 déning panganggo sing didhelikaké",
        "cantcreateaccount-text": "Saka alamat IP iki ('''$1''') ora diparengaké nggawé akun utawa rékening. Sing mblokir utawa ora marengaké iku [[User:$3|$3]].\n\nAlesané miturut $3 yaiku ''$2''",
        "cantcreateaccount-range-text": "Nggawe akun saking alamat IP \"$1\", sing termasuk IP sampeyan (<strong>$4</strong>), sampun diblokir kaliyan [[User:$3|$3]].\n\nAlesan pamblokiran yaiku \"$2\"",
        "viewpagelogs": "Deleng cathetaning kaca iki",
        "page_first": "kapisan",
        "page_last": "pungkasan",
        "histlegend": "Kanggo nandhingaké: tandhani kothak radhio révisi-révisi sing arep dibandhingaké lan pencèt ''Enter'' utawa tombol sing ana ing ngisor.<br />\nLegéndha: <strong>({{int:cur}})</strong> = béda karo révisi pungkasan, <strong>({{int:last}})</strong> = béda karo révisi sadurungé, <strong>{{int:minoreditletter}}</strong> = besutan cilik.",
-       "history-fieldset-title": "Luru sujarah",
-       "history-show-deleted": "Mligi sing dibusak",
+       "history-fieldset-title": "Golèk owahan",
+       "history-show-deleted": "Mligi owahan sing dibusak",
        "histfirst": "lawas dhéwé",
        "histlast": "anyar dhéwé",
        "historysize": "($1 {{PLURAL:$1|bét|bét}})",
        "history-feed-empty": "Kaca sing disuwun ora ditemokaké. Mbokmenawa wis dibusak saka wiki, utawa diwènèhi jeneng anyar. Coba [[Special:Search|golèka ing wiki]] kanggo kaca anyar sing rélevan.",
        "rev-deleted-comment": "(tingkesaning besutan dibusak)",
        "rev-deleted-user": "(jeneng panganggo dibusak)",
-       "rev-deleted-event": "(isi dibusak)",
+       "rev-deleted-event": "(rerincèn log dibusak)",
        "rev-deleted-user-contribs": "(jeneng panganggo utawa alamat IP dibusak - suntingan didhelikaké saka kontribusi)",
        "rev-deleted-text-permission": "Révisi kaca iki wis '''dibusak'''.\nPrincèné mbokmanawa kasedyakaké ing  [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambusakan].",
-       "rev-deleted-text-unhide": "Benahan kaca iki wis '''dibusak'''.\nRincian bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambusakan].\nSampéyan uga isih bisa [$1 ndelok benahan iki] yèn Sampéyan gelem.",
-       "rev-suppressed-text-unhide": "Benahan kaca iki wis '''dibrèdèl'''.\nRincian bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambrèdèlan].\nSampéyan uga isih bisa [$1 ndelok benahan iki] yèn Sampéyan gelem.",
+       "rev-deleted-text-unhide": "Révisi kaca iki wis <strong>dibusak</strong>.\nRerincèné bisa digolèki ing [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log busak].\nPanjenengan isih bisa [$1 ndeleng révisi iki] yèn panjenengan arep.",
+       "rev-suppressed-text-unhide": "Révisi kaca iki wis <strong>dibrèdhèl</strong>.\nRerincèné bisa digolèki ing [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log brèdhèl].\nPanjenengan isih bisa [$1 ndeleng révisi iki] yèn panjenengan arep.",
        "rev-deleted-text-view": "Benahan kaca iki wis '''dibusak'''.\nSampéyan bisa ndelok iki; rinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambusakan].",
        "rev-suppressed-text-view": "Benahan kaca iki wis '''dibrèdèl'''.\nSampéyan bisa ndelok iki; rinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambrèdèlan].",
        "rev-deleted-no-diff": "Panjenengan ora bisa mirsani prabédan amarga siji saka révisiné wis '''dibusak'''.\nPricèné mbokmanawa isih ana ing [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambusakan].",
        "revdelete-legend": "Atur watesan:",
        "revdelete-hide-text": "Tulisan owahan",
        "revdelete-hide-image": "Dhelikaké isi barkas",
-       "revdelete-hide-name": "Dhelikna tindhakan lan targèt",
+       "revdelete-hide-name": "Dhelikaké tujuan lan paramèter",
        "revdelete-hide-comment": "Tingkesan besutan",
        "revdelete-hide-user": "Alamat IPné/jeneng panganggoné sing mbesut",
        "revdelete-hide-restricted": "Uga dhelikna data saka pangurus lan panganggo liyané",
        "revdelete-unsuppress": "Busak watesan ing revisi sing dibalèkaké",
        "revdelete-log": "Alesan:",
        "revdelete-submit": "Trapna ing {{PLURAL:$1|révisi|révisi}} kapilih",
-       "revdelete-success": "'''Kawujudan repisi sukses dianyari.'''",
+       "revdelete-success": "Kekatonan owahan wis dianyari.",
        "revdelete-failure": "'''Panampakan rèvisi ora bisa dianyari:'''\n$1",
-       "logdelete-success": "Aturan pandhelikan tindhakan bisa kasil ditrapaké.",
+       "logdelete-success": "Kekatonan log wis disetèl.",
        "logdelete-failure": "'''Aturan pandhelikan ora bisa disèt:'''\n$1",
        "revdel-restore": "Ngowahi visiblitas (pangatonan)",
        "pagehist": "Babading kaca",
        "revdelete-reason-dropdown": "*Alasan penghapusan yang umum\n** Pelanggaran hak cipta\n** Komentar atau informasi pribadi yang tidak pantas\n** Nama pengguna yang tidak pantas\n** Berpotensi mencemarkan nama baik",
        "revdelete-otherreason": "Alesan liya/tambahan:",
        "revdelete-reasonotherlist": "Alesan liya",
-       "revdelete-edit-reasonlist": "Besut jalaraning pambusak",
+       "revdelete-edit-reasonlist": "Besut alesané pambusak",
        "revdelete-offender": "Juru pangriptaning owahan:",
        "suppressionlog": "Log barang-barang sing didelikaké (''oversight'')",
        "suppressionlogtext": "Ngisor iki daptar apa-apa waé sing wis dibusak lan diblokir kalebu kontèn sing didhelikaké saka para pangurus.\nDelok [[Special:BlockList|daptar blokiran]] sing isiné daptar apa-apa waé sing lagi dilarang lan diblokir.",
        "mergehistory-go": "Tuduhaké besutan sing bisa digabung",
        "mergehistory-submit": "Gabung owahan",
        "mergehistory-empty": "Ora ana revisi sing bisa digabung.",
-       "mergehistory-done": "$3 {{PLURAL:$1|révisi|révisi}} saka $1 bisa suksès digabung menyang [[:$2]].",
+       "mergehistory-done": "$3 {{PLURAL:$3|owahan}} $1 {{PLURAL:$3|wis}} digabungaké nyang [[:$2]].",
        "mergehistory-fail": "Ora bisa nggabung sajarah, coba dipriksa manèh kacané lan paramèter wektuné.",
+       "mergehistory-fail-invalid-source": "Kaca sumber ora trep.",
+       "mergehistory-fail-invalid-dest": "Kaca paran ora trep.",
+       "mergehistory-fail-no-change": "Panggabung sujarah ora nggabungaké rèvisi. Mangga priksanen kaca lan paramèter wektuné.",
+       "mergehistory-fail-self-merge": "Kaca asal lan kaca paran padha.",
+       "mergehistory-fail-timestamps-overlap": "Rèvisi asal tumpuk-undhung utawa njedhul sawisé révisi paran.",
+       "mergehistory-fail-toobig": "Ora bisa nggabungaké sujarah amarga {{PLURAL:$1|révisi}} sing arep dilih munjuli $1.",
        "mergehistory-no-source": "Kaca sumber $1 ora ana.",
        "mergehistory-no-destination": "Kaca paran $1 ora ana.",
        "mergehistory-invalid-source": "Kaca sumber kudu asesirah sing sah.",
        "mergehistory-invalid-destination": "Kaca tujuan kudu asesirah sing sah.",
        "mergehistory-autocomment": "Nggabung [[:$1]] menyang [[:$2]]",
        "mergehistory-comment": "Nggabung [[:$1]] menyang [[:$2]]: $3",
-       "mergehistory-same-destination": "Jeneng kaca sumber lan tujuan ora kena padha",
+       "mergehistory-same-destination": "Kaca sumber lan tujuan ora kena padha",
        "mergehistory-reason": "Alesan:",
        "mergelog": "Gabung log",
-       "revertmerge": "Batalna panggabungan",
+       "revertmerge": "Wurung gabung",
        "mergelogpagetext": "Ing ngisor iki kapacak daftar panggabungan sajarah kaca ing kaca liyané.",
        "history-title": "Sujarah owahaning \"$1\"",
        "difference-title": "Prabéda antara owahan \"$1\"",
-       "difference-title-multipage": "Prabédhan antara kaca \"$1\" lan \"$2\"",
+       "difference-title-multipage": "Béda antarané kaca \"$1\" lan \"$2\"",
        "difference-multipage": "(Prabédhan antar kaca)",
        "lineno": "Larik $1:",
        "compareselectedversions": "Bandhingna vèrsi kapilih",
        "editundo": "wurung",
        "diff-empty": "(Ora ana bedane)",
        "diff-multi-sameuser": "({{PLURAL:$1|$1 owahan antara}} déning panganggo sing padha ora katuduhaké)",
+       "diff-multi-otherusers": "({{PLURAL:$1|Siji révisi langsung|$1 révisi langsung}} déning {{PLURAL:$2|siji panganggo liyané|$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é}}.\n\nIki biasané kasebab pranala prabedan sing wis ora kanggo saka kaca isi wis dibusak.\nRinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log busak].",
        "searchresults": "Kasiling golèk",
        "searchmenu-new": "<strong>Gawéa kaca \"[[:$1]]\" nyang wiki iki!</strong> {{PLURAL:$2|0=|Uga delenga kaca sing katemu sarana panggolèking sampéyan.|Uga delenga kasiling panggolèk.}}",
        "searchprofile-articles": "Kaca isi",
        "searchprofile-images": "Multimédhia",
-       "searchprofile-everything": "Samubarang",
+       "searchprofile-everything": "Kabèh",
        "searchprofile-advanced": "Lungidan",
        "searchprofile-articles-tooltip": "Golèkan ing $1",
        "searchprofile-images-tooltip": "Golèk barkas",
        "searchprofile-everything-tooltip": "Golèk kabèh isi (kalebu kaca guneman)",
-       "searchprofile-advanced-tooltip": "Golèk ing jagat aran tinamtu",
+       "searchprofile-advanced-tooltip": "Golèk ing mandala aran tinamtu",
        "search-result-size": "$1 ({{PLURAL:$2|1 tembung|$2 tembung}})",
        "search-result-category-size": "{{PLURAL:$1|1 anggota|$1 anggota}} ({{PLURAL:$2|1 subkatégori|$2 subkatégori}}, {{PLURAL:$3|1 berkas|$3 berkas}})",
        "search-redirect": "(alihan saka $1)",
        "search-section": "(pérangan $1)",
        "search-category": "(kategori $1)",
        "search-file-match": "(cocog karo isi barkas)",
-       "search-suggest": "Apa karepé sampéyan: $1",
+       "search-suggest": "Apa sing panjenengan karepaké iki: $1",
        "search-rewritten": "Tuduhaké kasilé $1, nanging golèkaké $2.",
-       "search-interwiki-caption": "Proyèk-proyèk sababon",
+       "search-interwiki-caption": "Kasil saka proyèk-proyèk sababon",
        "search-interwiki-default": "Wohing panggolèk $1:",
        "search-interwiki-more": "(luwih akèh)",
+       "search-interwiki-more-results": "kasil liyané",
        "search-relatedarticle": "Magepokan",
        "searchrelated": "magepokan",
        "searchall": "kabèh",
        "showingresultsinrange": "Nuduhaké nganti {{PLURAL:$1|<strong>1</strong> kasil|<strong>$1</strong> kasil}} sajeroning penthangan #<strong>$2</strong> tekan #<strong>$3</strong>.",
        "search-showingresults": "{{PLURAL:$4|Asil <strong>$1</strong> dari <strong>$3</strong>|Asil <strong>$1 - $2</strong> saking <strong>$3</strong>}}",
        "search-nonefound": "Ora ana kasil sing cocog karo pitakonan (''query'').",
+       "search-nonefound-thiswiki": "Ora ana kasil sing jumbuh karo panjalukan ing situs iki.",
        "powersearch-legend": "Panggolèkan sabanjuré (''advance search'')",
-       "powersearch-ns": "Panggolèkan ing ruang jeneng:",
+       "powersearch-ns": "Golèk ing mandala aran:",
        "powersearch-togglelabel": "Pilih:",
        "powersearch-toggleall": "Kabèh",
        "powersearch-togglenone": "Ora ana",
-       "search-external": "Panggolèkan èkstèrnal",
+       "powersearch-remember": "Éling-éling sing dipilih kanggo golèkan ing tembé mburi",
+       "search-external": "Gegolèkan manca",
        "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": "Pilihan",
-       "mypreferences": "Pilihan",
+       "search-error": "Ana masalah nalika nggoleki: $1",
+       "search-warning": "Ana pepélik nalika nggolèk: $1",
+       "preferences": "Pilalan",
+       "mypreferences": "Pilalan",
        "prefs-edits": "Gunggung besutan:",
-       "prefsnologintext2": "Tulung $1 kanggo ngganti preferensi sampeyan.",
-       "prefs-skin": "Kulit",
+       "prefsnologintext2": "Mangga mlebua log saperlu ngowahi pilalané panjenengan.",
+       "prefs-skin": "Ules",
        "skin-preview": "Pratuduh",
        "datedefault": "Ora ana pilihan",
        "prefs-labs": "Piranti lab",
        "prefs-user-pages": "Kacaning sing nganggo",
-       "prefs-personal": "Panjèrènging sing nganggo",
+       "prefs-personal": "Profil panganggo",
        "prefs-rc": "Owah-owahan pungkasan",
        "prefs-watchlist": "Pawawangan",
        "prefs-editwatchlist": "Besut pawawangan",
        "prefs-watchlist-edits-max": "Gunggung maksimum: 1000",
        "prefs-watchlist-token": "Tokening pawawangan:",
        "prefs-misc": "Liya-liya",
-       "prefs-resetpass": "Ganti tembung sandi",
-       "prefs-changeemail": "Owah utawa busak alamat layangtronik",
+       "prefs-resetpass": "Ganti tembung wadi",
+       "prefs-changeemail": "Owah utawa busak alamat layang-èl",
        "prefs-setemail": "Setèl alamat layang èlèktronik",
-       "prefs-email": "Opsi layang-e",
-       "prefs-rendering": "Tampilan",
+       "prefs-email": "Opsi layang-èl",
+       "prefs-rendering": "Cakrik",
        "saveprefs": "Simpen",
-       "restoreprefs": "Balèkna kabèh setèlan baku",
+       "restoreprefs": "Pulihaké kabèh setèlan gawan (ing kabèh pérangan)",
        "prefs-editing": "Pambesut",
-       "searchresultshead": "Panggolèkan",
-       "stub-threshold": "Ambang wates kanggo format <a href=\"#\" class=\"stub\">pranala rintisan</a>:",
+       "searchresultshead": "Golèk",
+       "stub-threshold": "Watesan kanggo format pranala rintisan ($1):",
        "stub-threshold-sample-link": "pralampita",
        "stub-threshold-disabled": "Dipatèni",
        "recentchangesdays": "Cacahé dina sing dituduhaké ing owah-owahan pungkasan:",
        "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.\nSiapa saja yang tahu akan dapat melihat daftar pantauan Anda, jadi jangan dibagikan.\n[[Special:ResetTokens|Klik di sini jika Anda perlu menyetel ulang]].",
        "savedprefs": "Prèferènsi Panjenengan wis disimpen",
-       "savedrights": "Haking panganggo {{GENDER:$1|$1}} wis kasimpen.",
+       "savedrights": "Golongan panganggo {{GENDER:$1|$1}} wis disimpen.",
        "timezonelegend": "Zona wektu:",
        "localtime": "Wektu saenggon:",
        "timezoneuseserverdefault": "Anggo gawan wiki ($1)",
        "timezoneregion-europe": "Eropah",
        "timezoneregion-indian": "Samodra Hindhia",
        "timezoneregion-pacific": "Samodra Pasifik",
-       "allowemail": "Marengaké panganggo liyané ngirim layang èlèktronik (email).",
+       "allowemail": "Idinaké panganggo liyané ngirimi layang-èl",
        "prefs-searchoptions": "Golèk",
-       "prefs-namespaces": "Ruang jeneng / Bilik jeneng",
+       "prefs-namespaces": "Mandala aran",
        "default": "baku",
        "prefs-files": "Barkas",
        "prefs-custom-css": "CSS priangga",
        "prefs-custom-js": "JavaScript priangga",
-       "prefs-common-css-js": "CSS/JS didumaké kanggo kabèh kulit:",
+       "prefs-common-css-js": "CSS/JS barengan kabèh ules:",
        "prefs-reset-intro": "Panjenengan bisa migunakaké kaca iki kanggo mbalèkaké préferensi panjenengan marang setèlan baku situs.\nPembalikan ora bisa dibatalaké.",
-       "prefs-emailconfirm-label": "Konfirmasi layang-e:",
-       "youremail": "Layang élèktronik (E-mail):",
-       "username": "{{GENDER:$1|Asma panganggo}}:",
-       "prefs-memberingroups": "{{GENDER:$2|Anggota}} {{PLURAL:$1|klompok|klompok-klompok}}:",
+       "prefs-emailconfirm-label": "Konfirmasi layang-èl:",
+       "youremail": "Layang-èl:",
+       "username": "{{GENDER:$1|Jeneng panganggo}}:",
+       "prefs-memberingroups": "{{GENDER:$2|Anggota}} saka {{PLURAL:$1|golongan}}:",
+       "group-membership-link-with-expiry": "$1 (tekan $2)",
        "prefs-registration": "Wektu régistrasi:",
-       "yourrealname": "Asma sajatiné :",
+       "yourrealname": "Jeneng asli:",
        "yourlanguage": "Basa sing dianggo:",
        "yourvariant": "Werna basa isi:",
        "prefs-help-variant": "Varian utawa ortograpi sing Sampéyan pilih kanggo nampilaké kaca kontèn saka wiki iki.",
-       "yournick": "Asma sesinglon/samaran (kagem tapak asta):",
-       "prefs-help-signature": "Tanggapan ing kaca parembugan kudu ditandhatangani mawa \"<nowiki>~~~~</nowiki>\", sing bakal salin dadi tandha tangan lan cap wektumu.",
+       "yournick": "Tapak asma anyar:",
+       "prefs-help-signature": "Tanggapan ing kaca parembugan kudu ditapakasmani mawa \"<nowiki>~~~~</nowiki>\", sing bakal salin dadi tapak asma lan tandha wektuné panjenengan.",
        "badsig": "Tapak astanipun klèntu; cèk rambu HTML.",
        "badsiglength": "Tapak asta panjenengan kedawan.\nAja luwih saka {{PLURAL:$1|karakter|karakter}}.",
-       "yourgender": "Kepiyé sampéyan medhar priangganing panjenengan?",
-       "gender-unknown": "Nalika nyebut sampéyan, piranti alus iku bakal nganggo tembung sing nétral jèndher sabisané",
-       "gender-male": "Dhèwèké mbesut kaca wiki",
-       "gender-female": "Dhèwèké mbesut kaca wiki",
-       "prefs-help-gender": "Opsional: Dipigunakaké kanggo panyebutan jinis kelamin sing bener déning piranti alus.\nInformasi iki bakal kabuka kanggo publik.",
-       "email": "Layangtronik",
+       "yourgender": "Kepiyé panjenengan nggambaraké salirané panjenengan?",
+       "gender-unknown": "Nalika nyebut panjenengan, piranti alusé bakal nganggo tembung sing nétral jèndher sabisané",
+       "gender-male": "Lanang",
+       "gender-female": "Wadon",
+       "prefs-help-gender": "Setèlané pilalan iki sipaté manasuka.\nPiranti alusé nganggo ajiné kanggo ngarani lan nyebut panjenengan nyang liyan sarana tembung jèndher sing patut sacara paramasastra.\nKaterangan iki bakal kanton marang umum.",
+       "email": "Layang-èl",
        "prefs-help-realname": "Jeneng asli ora kudu diisi.\nYèn diisi, jeneng asliné panjenengan bakal kanggo atribusi awit karyané panjenengan.",
        "prefs-help-email": "Alamat layang èlèktronik sipaté mung pilihan, nanging dibutuhaké kanggo nyetèl ulang tembung sandhi yèn Sampéyan lali.",
        "prefs-help-email-others": "Sampéyan uga bisa milih kanggo ngidinaké wong liya ngubungi Sampéyan liwat layang èlèktronik sing ana ing kaca panganggo utawa kaca guneman.\nAlamat layang èlèktronik Sampéyan ora dituduhaké nalika wong liya ngubungi Sampéyan.",
-       "prefs-help-email-required": "Alamat layang-e dibutuhaké.",
+       "prefs-help-email-required": "Butuh alamat layang-èl.",
        "prefs-info": "Katerangan pokok",
        "prefs-i18n": "Internasionalisasi",
        "prefs-signature": "Tapak asma",
        "prefs-advancedrendering": "Opsi lanjutan",
        "prefs-advancedsearchoptions": "Opsi lanjutan",
        "prefs-advancedwatchlist": "Opsi lanjutan",
-       "prefs-displayrc": "Opsi tampilan",
-       "prefs-displaywatchlist": "Opsi tampilan",
+       "prefs-displayrc": "Opsi pitontonan",
+       "prefs-displaywatchlist": "Opsi pitontonan",
        "prefs-tokenwatchlist": "Token",
        "prefs-diffs": "Prabédan",
        "prefs-help-prefershttps": "Pamiji iki bakal lumaku mentas sampeyan mbalèni mlebu.",
        "prefs-tabs-navigation-hint": "Saran: Sampeyan bisa nganggo tombol jemparing kiwa lan tengen saperlu navigasi tab-tab ing pratélan tab.",
-       "userrights": "Manajemen hak panganggo",
-       "userrights-lookup-user": "Ngatur kelompok panganggo",
+       "userrights": "Hak panganggo",
+       "userrights-lookup-user": "Pilih panganggo",
        "userrights-user-editname": "Isi jeneng panganggo:",
-       "editusergroup": "Besut golongan {{GENDER:$1|panganggo}}",
-       "editinguser": "Ngganti hak panganggo '''[[User:$1|$1]]''' $2",
-       "userrights-editusergroup": "Besut golongan panganggo",
-       "saveusergroups": "Simpen kelompok panganggo",
+       "editusergroup": "Mot golongan panganggo",
+       "editinguser": "Ngowahi hak {{GENDER:$1|panganggo}} <strong>[[User:$1|$1]]</strong> $2",
+       "viewinguserrights": "Ndeleng hak {{GENDER:$1|panganggo}} <strong>[[User:$1|$1]]</strong> $2",
+       "userrights-editusergroup": "Besut golongan {{GENDER:$1|panganggo}}",
+       "userrights-viewusergroup": "Deleng golongan {{GENDER:$1|panganggo}}",
+       "saveusergroups": "Simpen golongan {{GENDER:$1|panganggo}}",
        "userrights-groupsmember": "Anggota saka:",
        "userrights-groupsmember-auto": "Anggota implisit saka:",
        "userrights-groups-help": "Panjenengan bisa ngowahi grup-grup sing ana panganggoné iki.\n* Kothak sing dicenthang tegesé panganggo iki ana sajroné grup iku.\n* Kothak sing ora dicenthang tegesé panganggo iku ora ana ing grup iku.\n* Tandha bintang * tegesé panjenengan ora bisa ngilangi grup iku yèn wis tau nambah, utawa sawalikané.",
        "userrights-nodatabase": "Basis data $1 ora ana utawa ora lokal.",
        "userrights-changeable-col": "Grup sing bisa panjenengan owahi",
        "userrights-unchangeable-col": "Grup sing ora bisa diowahi panjenengan",
+       "userrights-expiry-current": "Kadaluwarsa $1",
+       "userrights-expiry-none": "Ora kadaluwarsa",
+       "userrights-expiry": "Kadaluwarsa:",
+       "userrights-expiry-existing": "Wektu kadaluwarsa sing ana: $3, $2",
+       "userrights-expiry-othertime": "Wektu liya:",
+       "userrights-expiry-options": "1 dina:1 dina,1 minggu:1 minggu,1 wulan:1 wulan,3 wulan:3 wulan,6 wulan:6 wulan,1 taun:1 taun",
+       "userrights-invalid-expiry": "Wektu kadaluwarsa golongan \"$1\" ora trep.",
+       "userrights-expiry-in-past": "Wektu kadaluwarsa golongan \"$1\" ana ing kala kawuri.",
        "userrights-conflict": "Konflik pangowahan hak-hak panganggo! Tulung ditinjau maneh lan konfirmasi Pangowahan sampeyan.",
        "group": "Golongan:",
        "group-user": "Para panganggo",
-       "group-autoconfirmed": "Panganggo sing otomatis didhedhes (dikonfirmasi)",
+       "group-autoconfirmed": "Panganggo sing otomatis kakonfirmasi",
        "group-bot": "Bot",
        "group-sysop": "Pangurus",
        "group-bureaucrat": "Birokrat",
-       "group-suppress": "Para pangawas (''oversight'')",
+       "group-suppress": "Pangawas",
        "group-all": "(kabèh)",
        "group-user-member": "{{GENDER:$1|panganggo}}",
        "group-autoconfirmed-member": "{{GENDER:$1|panganggo dipesthèni otomatis}}",
        "group-bot-member": "{{GENDER:$1|bot}}",
        "group-sysop-member": "{{GENDER:$1|pangurus}}",
        "group-bureaucrat-member": "{{GENDER:$1|birokrat}}",
-       "group-suppress-member": "{{GENDER:$1|pangawasan}}",
+       "group-suppress-member": "{{GENDER:$1|pangawas}}",
        "grouppage-user": "{{ns:project}}:Para panganggo",
-       "grouppage-autoconfirmed": "{{ns:project}}:Panganggo sing otomatis didhedhes (dikonfirmasi)",
+       "grouppage-autoconfirmed": "{{ns:project}}:Panganggo sing otomatis kakonfirmasi",
        "grouppage-bot": "{{ns:project}}:Bot",
        "grouppage-sysop": "{{ns:project}}:Pangurus",
        "grouppage-bureaucrat": "{{ns:project}}:Birokrat",
        "grouppage-suppress": "{{ns:project}}:Oversight",
-       "right-read": "Maca kaca-kaca",
+       "right-read": "Waca kaca",
        "right-edit": "Besut kaca",
        "right-createpage": "Gawé kaca (sing dudu kaca parembugan)",
        "right-createtalk": "Gawé kaca parembugan",
-       "right-createaccount": "Nggawé rékening (akun) panganggo anyar",
+       "right-createaccount": "Gawé akun panganggo anyar",
+       "right-autocreateaccount": "Otomatis mlebu log nganggo akun panganggo njaba",
        "right-minoredit": "Tandhani yèn besutan cilik",
        "right-move": "Ngalih kaca",
        "right-move-subpages": "Pindhahaké kaca lan kabèh anak-kacané",
        "right-move-rootuserpages": "Ngalih kaca panganggo oyod",
-       "right-movefile": "Mindhah berkas",
+       "right-move-categorypages": "Lih kaca kategori",
+       "right-movefile": "Lih barkas",
        "right-suppressredirect": "Aja nggawé pangalihan saka kaca sing lawas yèn mindhah sawijining kaca",
        "right-upload": "Unggah barkas",
        "right-reupload": "Tindhihana sawijining berkas sing wis ana",
        "right-nominornewtalk": "Suntingan sithik (''minor'') ora ngwetokaké prompt pesen anyar",
        "right-apihighlimits": "Nganggo wates sing luwih dhuwur ing kwéri API",
        "right-writeapi": "Nganggo API tulis",
-       "right-delete": "Busak kaca-kaca",
+       "right-delete": "Busak kaca",
        "right-bigdelete": "Busak kaca-kaca mawa sajarah panyuntingan sing gedhé",
        "right-deletelogentry": "Busak lan wurung busak èntri log tartamtu",
-       "right-deleterevision": "Busak lan batal busak révisi tartamtu kaca-kaca",
+       "right-deleterevision": "Busak lan wurung busak owahan tinamtuné kaca",
        "right-deletedhistory": "Ndeleng sajarah èntri-èntri kabusak, tanpa bisa ndeleng apa sing dibusak",
-       "right-deletedtext": "Delok tèks kabusak lan panggantèn antara rèpisi kabusak",
+       "right-deletedtext": "Deleng tèks sing dibusak lan owah-owahan antarané révisi sing dibusak",
        "right-browsearchive": "Golèk kaca-kaca sing wis dibusak",
        "right-undelete": "Wurung busak kaca",
-       "right-suppressrevision": "Ndeleng lan mbalèkaké révisi-révisi sing didelikaké saka para opsis",
-       "right-suppressionlog": "Ndeleng log-log pribadi",
+       "right-suppressrevision": "Deleng, dhelikaké, lan wurung dhelikaké owahan tinamtu kaca-kacané panganggo sembarang",
+       "right-viewsuppressed": "Deleng owahan sing didhelikaké saka panganggo sembarang",
+       "right-suppressionlog": "Deleng log priangga",
        "right-block": "Blokir panganggo-panganggo liya saka panyuntingan",
        "right-blockemail": "Blokir sawijining panganggo saka ngirim e-mail",
        "right-hideuser": "Blokir jeneng panganggo, lan delikna saka umum",
        "right-ipblock-exempt": "Bypass pamblokiran IP, pamblokiran otomatis lan pamblokiran rangkéan",
        "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-protect": "Owahi tataran rereksan lan besut kaca sing direksa-runtun",
+       "right-editprotected": "Besut kaca sing direksa kanthi \"{{int:protect-level-sysop}}\"",
        "right-editsemiprotected": "Owah kaca-kaca sing direksa dadi \"{{int:protect-level-autoconfirmed}}\"",
+       "right-editcontentmodel": "Besut modhèl kontèn kaca",
        "right-editinterface": "Besut antarmuka panganggo",
        "right-editusercss": "Besut barkas-barkas CSS panganggo liya",
        "right-edituserjs": "Besut barkas-barkas JavaScript panganggo liya",
        "right-editmyusercss": "Owahi berkas CSS panganggo sampeyan",
        "right-editmyuserjs": "Owahi berkas JavaScript panganggo sampeyan",
-       "right-viewmywatchlist": "Deleng pawawanganing sampéyan",
+       "right-viewmywatchlist": "Deleng pawawangané panjenengan",
        "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-autopatrol": "Gawé supaya suntingan-suntingan ditandhani minangka wis dipatroli",
        "right-patrolmarks": "Ndeleng tandha-tandha patroli owah-owahan anyar",
        "right-unwatchedpages": "Tuduhna daftar kaca-kaca sing ora diawasi",
-       "right-mergehistory": "Gabungna sajarah kaca-kaca",
+       "right-mergehistory": "Gabung sujarah kaca",
        "right-userrights": "Besut kabèh hak panganggo",
        "right-userrights-interwiki": "Besut hak-haking panganggo asal wiki jaba",
        "right-siteadmin": "Kunci lan buka kunci basis data",
        "right-override-export-depth": "Èkspor kaca klebu kaca kagandhèng nganti tataran/''depth'' 5",
        "right-sendemail": "Ngirim layang listrik (e-mail) menyang panganggo liya",
-       "grant-group-email": "Kirim layang élèktronik",
+       "grant-group-page-interaction": "Srawungan karo kaca",
+       "grant-group-file-interaction": "Srawungan karo médhia",
+       "grant-group-watchlist-interaction": "Srawungan karo pawawangané panjenengan",
+       "grant-group-email": "Kirim layang-èl",
+       "grant-group-high-volume": "Ngayahi kagiyatan sing akih",
+       "grant-group-customization": "Panglarasan lan pilalan",
+       "grant-group-administration": "Ngayahi tumindak administratif",
+       "grant-group-private-information": "Ngaksès dhata pribadhi ngenani panjenengan",
+       "grant-group-other": "Kagiyatan rena-rena",
+       "grant-blockusers": "Blokir lan uculaké blokirané panganggo",
        "grant-createaccount": "Gawé akun",
        "grant-createeditmovepage": "Gawé, besut, lan lih kaca",
        "grant-delete": "Busak kaca, owahan, lan isian cathetan",
        "grant-editinterface": "Besut jagad aran MediaWiki lan CSS/JavaScript panganggo",
        "grant-editmycssjs": "Besut CSS/JavaScript panganggomu",
        "grant-editmyoptions": "Besut préferènsi panganggomu",
+       "grant-editmywatchlist": "Besut pawawangané panjenengan",
+       "grant-editpage": "Besut kaca sing ana",
+       "grant-editprotected": "Besut kaca sing direksa",
+       "grant-highvolume": "Besutan gedhi",
+       "grant-oversight": "Dhelikaké panganggo dalah révisiné",
+       "grant-patrol": "Awasi owahané kaca",
+       "grant-privateinfo": "Ngaksès informasi pribadhi",
+       "grant-protect": "Reksa lan uculi rereksané kaca",
+       "grant-rollback": "Wurungaké owahané kaca",
+       "grant-sendemail": "Kirim layang-èl nyang panganggo liyané",
+       "grant-uploadeditmovefile": "Unggah, ganti, lan lih barkas",
+       "grant-uploadfile": "Unggah barkas anyar",
+       "grant-basic": "Hak pokok",
+       "grant-viewdeleted": "Deleng barkas lan kaca sing dibusak",
+       "grant-viewmywatchlist": "Deleng pawawangané panjenengan",
+       "grant-viewrestrictedlogs": "Deleng isian log sing winates",
        "newuserlogpage": "Log panganggo anyar",
        "newuserlogpagetext": "Ing ngisor iki kapacak log pandaftaran panganggo anyar.",
        "rightslog": "Log hak panganggo",
        "action-createpage": "gawé kaca iki",
        "action-createtalk": "gawé kaca parembugan iki",
        "action-createaccount": "gawé akun panganggo iki",
+       "action-autocreateaccount": "otomatis nggawé akun panganggo njaba iki",
+       "action-history": "deleng sujarahé kaca iki",
        "action-minoredit": "tandhani besutan iki yèn besutan cilik",
        "action-move": "alih kaca iki",
-       "action-move-subpages": "mindahaké kaca iki, lan kabèh anak-kacané",
+       "action-move-subpages": "lih kaca iki, lan anak-kacané",
        "action-move-rootuserpages": "ngalih kaca panganggo oyod",
        "action-move-categorypages": "alih kaca kategori",
        "action-movefile": "alih barkas iki",
        "action-upload_by_url": "unggahna berkas iki saka sawijining alamat URL",
        "action-writeapi": "migunakaké API panulisan",
        "action-delete": "busak kaca iki",
-       "action-deleterevision": "busak revisi iki",
-       "action-deletedhistory": "pirsani sajarah kaca sing wis dibusak iki",
+       "action-deleterevision": "busak révisi",
+       "action-deletelogentry": "busak isian log",
+       "action-deletedhistory": "deleng sujarah sing dibusak sawijiné kaca",
+       "action-deletedtext": "deleng tèks révisi sing dibusak",
        "action-browsearchive": "nggolèki kaca-kaca sing wis dibusak",
-       "action-undelete": "wurung busak kaca iki",
-       "action-suppressrevision": "ninjo lan mbalèkaké revisi sing didhelikaké iki",
+       "action-undelete": "wurung busak kaca",
+       "action-suppressrevision": "tinjo lan balèkaké révisi sing didhelikaké",
        "action-suppressionlog": "mirsani log pribadi iki",
        "action-block": "malang panganggo iki mbesut",
-       "action-protect": "owahi tataran pangreksan kaca iki",
+       "action-protect": "owahi tataran rereksané kaca iki",
        "action-rollback": "gelis mbalèkaké suntingané panganggo pungkasan nèng sawijining saca",
-       "action-import": "impor kaca iki saka wiki liya",
+       "action-import": "impor kaca saka wiki liyané",
        "action-importupload": "impor kaca iki saka pamunggahan berkas",
        "action-patrol": "nandhani besutan wong liya yèn wis kapriksa",
-       "action-autopatrol": "nandhani besutan panjenengan dhéwé yèn wis kapriksa",
+       "action-autopatrol": "nandhani besutané panjenengan dhéwé yèn wis kapriksa",
        "action-unwatchedpages": "deleng pratélan kaca sing ingawasan",
        "action-mergehistory": "nggabungaké sajarah kaca iki",
-       "action-userrights": "ngowahi kabèh hak panganggo",
-       "action-userrights-interwiki": "ngowahi hak aksès saka panganggo ing wiki liya",
+       "action-userrights": "besut kabèh hak panganggo",
+       "action-userrights-interwiki": "besut hak aksès panganggo ing wiki liyané",
        "action-siteadmin": "ngunci utawa mbukak kunci basis data",
-       "action-sendemail": "kirim layang èlèktronik",
+       "action-sendemail": "kirim layang-èl",
+       "action-editmyoptions": "besut pilalané panjenengan",
        "action-editmywatchlist": "owahi daftar pantauan sampeyan",
        "action-viewmywatchlist": "dheleng daftar pantauan sampeyan",
        "action-viewmyprivateinfo": "dheleng informasi pribadi sampeyan",
        "action-editmyprivateinfo": "owahi informasi pribadi sampeyan",
+       "action-editcontentmodel": "besut modhèl kontèné sawijiné kaca",
+       "action-managechangetags": "gawé lan patèni tag",
+       "action-applychangetags": "pasang tag nyang owahané panjenengan",
+       "action-changetags": "tambah lan busak tag arbitrèr ing saben révisi lan isian log",
+       "action-deletechangetags": "busak tag saka sasana dhata",
+       "action-purge": "buwang kaca iki",
        "nchanges": "$1 {{PLURAL:$1|pangowahan|owah-owahan}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|saka keri dhewe mrene}}",
        "enhancedrc-history": "sujarah",
        "recentchanges-label-minor": "Iki besutan cilik",
        "recentchanges-label-bot": "Besutan iki diayahi bot",
        "recentchanges-label-unpatrolled": "Besutan iki durung kapatroli",
-       "recentchanges-label-plusminus": "Ukuran owahing kaca ing bèt",
+       "recentchanges-label-plusminus": "Ukuran owahé kaca mawa ékan bèt",
        "recentchanges-legend-heading": "<strong>Legendha:</strong>",
-       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (uga deleng [[Special:NewPages|pratélaning kaca-kaca anyar]])",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (uga delengen [[Special:NewPages|pratélané kaca-kaca anyar]])",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Tuduhaké",
        "rcfilters-activefilters": "Saringan murub",
+       "rcfilters-quickfilters": "Pranala rikat",
+       "rcfilters-quickfilters-placeholder-title": "Durung ana pranala sing disimpen",
+       "rcfilters-quickfilters-placeholder-description": "Saperlu nyimpen setèlan saringané panjenengan lan nganggo iku manèh ing tembé, kliken ikon markah bukuné ing babagan Saringan Murub ing ngisor.",
+       "rcfilters-savedqueries-defaultlabel": "Saringan sumimpen",
+       "rcfilters-savedqueries-rename": "Ganti jeneng",
+       "rcfilters-savedqueries-setdefault": "Dadèkaké baku",
+       "rcfilters-savedqueries-unsetdefault": "Wutung ndadèkaké baku",
+       "rcfilters-savedqueries-remove": "Busak",
+       "rcfilters-savedqueries-new-name-label": "Jeneng",
+       "rcfilters-savedqueries-apply-label": "Gawé pranala rikat",
+       "rcfilters-savedqueries-cancel-label": "Wurung",
+       "rcfilters-savedqueries-add-new-title": "Simpen saringan dadi pranala rikat",
        "rcfilters-restore-default-filters": "Pulihaké saringan gawan",
+       "rcfilters-clear-all-filters": "Resiki kabèh saringan",
        "rcfilters-search-placeholder": "Saring owah-owahan anyar (lurua utawa wiwita ngetik)",
        "rcfilters-invalid-filter": "Saringan ora sah",
+       "rcfilters-empty-filter": "Ora ana saringan sing aktif. Kabèh sumbangan katuduhaké.",
        "rcfilters-filterlist-title": "Saringan",
-       "rcfilters-filterlist-feedbacklink": "Wènèhi saran ngenani saringan (béta) singa anyar",
+       "rcfilters-filterlist-whatsthis": "Apa iki?",
+       "rcfilters-filterlist-feedbacklink": "Wènèhi saran ngenani saringan (béta) sing anyar",
+       "rcfilters-highlightbutton-title": "Sentrongi kasil",
+       "rcfilters-highlightmenu-title": "Pilih werna",
+       "rcfilters-highlightmenu-help": "Pilih werna kanggo nyentrong properti iki",
        "rcfilters-filterlist-noresults": "Saringan ora katemu",
+       "rcfilters-noresults-conflict": "Ora ana kasil amarga wewatoné kanggo nggolèk ana masalah",
+       "rcfilters-filtergroup-registration": "Pandhaftaran panganggo",
+       "rcfilters-filter-registered-label": "Kadhaftar",
+       "rcfilters-filter-registered-description": "Pambesut sing mlebu log.",
+       "rcfilters-filter-unregistered-label": "Ora kadhaftar",
+       "rcfilters-filter-unregistered-description": "Pambesut sing ora mlebu log.",
+       "rcfilters-filtergroup-authorship": "Pangripta besutan",
+       "rcfilters-filter-editsbyself-label": "Owah-owahané panjenengan",
+       "rcfilters-filter-editsbyself-description": "Sumbangané panjenengan dhéwé.",
+       "rcfilters-filter-editsbyother-label": "Owah-owahané liyan",
+       "rcfilters-filter-editsbyother-description": "Kabèh owahan kajaba duwèké panjenengan.",
+       "rcfilters-filtergroup-userExpLevel": "Tataran pangalaman (mung kanggo panganggo kadhaftar)",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Wong neneka anyar",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Kurang saka 10 besutan lan 4 dina kagiyatan.",
+       "rcfilters-filter-user-experience-level-learner-label": "Wong sinau",
+       "rcfilters-filter-user-experience-level-learner-description": "Luwih akèh pangalamané tinimbang \"Wong neneka anyar\" nanging durung ngèmperi \"Panganggo kawakan\".",
+       "rcfilters-filter-user-experience-level-experienced-label": "Panganggo kawakan",
+       "rcfilters-filter-user-experience-level-experienced-description": "Punjul saka 30 dina kagiyatan lan 500 besutan.",
+       "rcfilters-filtergroup-automated": "Sumbangan otomatisasi",
+       "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-bots-description": "Besutan déning piranti otomatisasi.",
+       "rcfilters-filter-humans-label": "Manungsa (dudu bot)",
+       "rcfilters-filter-humans-description": "Besutan gawéané pambesut manungsa.",
+       "rcfilters-filtergroup-reviewstatus": "Tinjo kalungguhan",
+       "rcfilters-filter-patrolled-label": "Diawasi",
+       "rcfilters-filter-patrolled-description": "Besutan ditengeri yèn diawasi.",
+       "rcfilters-filter-unpatrolled-label": "Uculi pangawasan",
+       "rcfilters-filter-unpatrolled-description": "Besutan ora ditengeri yèn diawasi.",
+       "rcfilters-filtergroup-significance": "Kawigatèn",
+       "rcfilters-filter-minor-label": "Besutan cilik",
+       "rcfilters-filter-minor-description": "Besutan sing ditandhani pangriptané minangka besutan cilik.",
+       "rcfilters-filter-major-label": "Besutan ora cilik",
+       "rcfilters-filter-major-description": "Besutan sing ora ditandhani minangka besutan cilik.",
+       "rcfilters-filtergroup-watchlist": "Kaca sing ana ing pawawangan",
+       "rcfilters-filter-watchlist-watched-label": "Ana ing Pawawangan",
+       "rcfilters-filter-watchlist-watched-description": "Owahané kaca-kaca ing Pawawangané panjenengan.",
+       "rcfilters-filter-watchlist-watchednew-label": "Owah-owahané Pawawangan anyar",
+       "rcfilters-filter-watchlist-watchednew-description": "Owah-owahan ngenani kaca-kaca ing Pawawangané panjenengan sing durung ditiliki.",
+       "rcfilters-filter-watchlist-notwatched-label": "Ora ana ing Pawawangan",
+       "rcfilters-filter-watchlist-notwatched-description": "Samubarang kajaba owah-owahané kaca-kaca ing ana ing Pawawangané panjenengan.",
+       "rcfilters-filtergroup-changetype": "Jinisé owahan",
+       "rcfilters-filter-pageedits-label": "Besutan kaca",
+       "rcfilters-filter-pageedits-description": "Besutan marang kontèn wiki, parembugan, wedharan kategori....",
+       "rcfilters-filter-newpages-label": "Gawéan kaca",
+       "rcfilters-filter-newpages-description": "Besutan sing nggawé kaca anyar.",
+       "rcfilters-filter-categorization-label": "Owah-owahan kategori",
+       "rcfilters-filter-categorization-description": "Cathethan ngenani mlebu-metuné kaca saka kategori.",
+       "rcfilters-filter-logactions-label": "Tumindak njeron log",
+       "rcfilters-filter-logactions-description": "Tumindak administratif, gawéan akun, busakan kaca, unggahan....",
+       "rcfilters-filtergroup-lastRevision": "Owahan pungkasan",
+       "rcfilters-filter-lastrevision-label": "Owahan pungkasan",
+       "rcfilters-filter-lastrevision-description": "Owahan paling anyar tumrap kaca.",
+       "rcfilters-filter-previousrevision-label": "Owahan-owahan dhisik",
+       "rcfilters-filter-previousrevision-description": "Kabèh owahan sing dudu sing anyar dhéwé tumrap kaca.",
        "rcnotefrom": "Ing ngisor iki owah-owahan wiwit <strong>$2</strong> (kapacak nganti <strong>$1</strong> owah-owahan).",
        "rclistfrom": "Tuduhaké owah-owahan anyar kawit $2, $3",
        "rcshowhideminor": "$1 besutan cilik",
        "rcshowhidecategorization": "$1 kategorisasi kaca",
        "rcshowhidecategorization-show": "Tuduhaké",
        "rcshowhidecategorization-hide": "Dhelikaké",
-       "rclinks": "Tuduhaké $1 owahan kawit $2 dina kapungkur.<br />$3",
+       "rclinks": "Tuduhaké $1 owahan pungkasan kawit $2 dina kapungkur.",
        "diff": "béd",
        "hist": "saj",
        "hide": "Dhelikaké",
        "recentchangeslinked-summary": "Iki pratélan owah-owahan anyar kaca-kaca sing nggayut kaca tinamtu (utawa péranganing kategori tinamtu).\nKaca-kaca sing ana ing [[Special:Watchlist|pawawanganing sampéyan]] ya iku sing <strong>kandhel</strong>.",
        "recentchangeslinked-page": "Jeneng kaca:",
        "recentchangeslinked-to": "Nuduhaké owah-owahan menyang kaca sing disambung menyang kaca-kaca iki",
+       "recentchanges-page-added-to-category": "[[:$1]] ditambahaké nyang kategori",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] ditambahaké nyang kategori, [[Special:WhatLinksHere/$1|kaca iki kalebu ing njeroné kaca liyané]]",
+       "recentchanges-page-removed-from-category": "[[:$1]] dibusak saka kategori",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] dibusak saka kategori, [[Special:WhatLinksHere/$1|kaca iki kalebu ing njeroné kaca liyané]]",
+       "autochange-username": "Salin otomatis MediaWiki",
        "upload": "Unggah barkas",
-       "uploadbtn": "Unggahna berkas",
-       "reuploaddesc": "Bali ing formulir pamotan",
+       "uploadbtn": "Unggah barkas",
+       "reuploaddesc": "Wurung ngunggah lan bali nyang formulir unggahan",
        "upload-tryagain": "Kirim déskripsi berkas sing wis diowah",
        "uploadnologin": "Durung mlebu log",
-       "uploadnologintext": "Sampéyan kudu $1 supaya bisa ngunggah berkas.",
+       "uploadnologintext": "Mangga $1 saperlu ngunggah barkas.",
        "upload_directory_missing": "Direktori pamunggahan ($1) ora ditemokaké lan ora bisa digawé déning server wèb.",
        "upload_directory_read_only": "Dhirèktori pangunggahan ($1) ora bisa ditulis déning paladèn jaringan.",
        "uploaderror": "Kaluputan pangunggahan berkas",
        "upload-recreate-warning": "'''Pèngetan: Berkas mawa jeneng kuwi wis dibusak utawa disingkiraké.'''\n\nLog pambusakan lan panyingkiran saka kaca iki sumadhiya nèng kéné:",
-       "uploadtext": "Anggé formulir ing ngandhap punika kanggé nginggahaké gambar.\nKanggé mirsani utawi madosi gambar ingkang sampun dipununggah sakdèrèngipun pigunakaken [[Special:FileList|dhaftar berkas sing wis diunggah]], gambar ingkang dipununggah ulang ugi kadhaftar ing [[Special:Log/upload|log pangunggahan]], pambusakan ing [[Special:Log/delete|Log pambusakan]].\n\nKanggé nyertakaken gambar ing satunggiling kaca, pigunakaken pranala salah setunggal saking format ing ngandhap punika:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Berkas.jpg]]</nowiki></code>''' kanggé migunakaken versi pepak gambar\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Berkas.png|200px|thumb|left|tèks alt]]</nowiki></code>''' kanggé migunakaken gambar wiyaripun 200 piksel ing kothak ing sisih kiwa kanthi 'tèks alt' minangka panjelasan\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Berkas.ogg]]</nowiki></code>''' kanggé nggandhèng langsung dhumateng gambar tanpi nampilaké gambar",
-       "upload-permitted": "Jenis berkas sing diidinaké: $1.",
-       "upload-preferred": "Jenis berkas sing disaranaké: $1.",
-       "upload-prohibited": "Jenis berkas sing dilarang: $1.",
+       "uploadtext": "Anggonen formulir ngisor iki saperlu ngunggah barkas.\nKanggo ndeleng utawa nggolèki barkas sing wis diunggah sadurungé, panjenengan menyanga [[Special:FileList|pratélan barkas unggahan]]. Barkas unggahan ulang uga kacathet ing [[Special:Log/upload|log unggah]], déné barkas busakan ing [[Special:Log/delete|log busak]].\n\nKanggo muwuhi barkas ing kaca, anggonen pranala kanthi formulir ing ngisor iki, pilih salah siji:\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code></strong> saperlu nganggo barkasé kanthi vèrsi sing wutuh\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code></strong> saperlu nganggo barkasé kanthi amba 200 piksel déné ana ing njeron kothak lan kapacak ing sisih kiwané kaca mawa \"alt text\" minangka katerangané\n* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code></strong> saperlu nggayutaké langsung barkasé tanpa mitontonaké barkasé dhéwé",
+       "upload-permitted": "{{PLURAL:$2|Jinis}} barkas sing diidinaké: $1.",
+       "upload-preferred": "{{PLURAL:$2|Jinis}} barkas sing diprayogakaké: $1.",
+       "upload-prohibited": "{{PLURAL:$2|Jinis}} barkas sing dilarang: $1.",
        "uploadlogpage": "Log unggah",
        "uploadlogpagetext": "Ing ngisor iki kapacak log pangunggahan berkas sing anyar dhéwé.\nMangga mirsani [[Special:NewFiles|galeri berkas-berkas anyar]] kanggo pratélan visual.",
        "filename": "Jeneng barkas",
        "filetype-badmime": "Berkas mawa tipe MIME \"$1\" ora pareng diunggahaké.",
        "filetype-bad-ie-mime": "Ora bisa ngunggahaké berkas iki amarga Internet Explorer ndhétèksi minangka \"$1\", sing ora diidinaké lan minangka tipe berkas sing nduwèni potènsi mbebayani.",
        "filetype-unwanted-type": "'''\".$1\"''' klebu jenis berkas sing ora diidinaké.\nLuwih becik {{PLURAL:$3|jinis berkas|Jinis-jinis berkas}} $2.",
-       "filetype-banned-type": "'''\".$1\"''' {{PLURAL:$4|dudu jinis berkas sing dililakaké|dudu jinis berkas sing dililakaké}}.\n{{PLURAL:$3|Berkas|Berkas}} sing dililakaké $2.",
+       "filetype-banned-type": "<strong>\".$1\"</strong> {{PLURAL:$4|dudu jinis barkas sing diidinaké}}.\n{{PLURAL:$3|Jinis barkas}} sing diidinaké $2.",
        "filetype-missing": "Berkas ini ora duwé ekstènsi (contoné \".jpg\").",
-       "empty-file": "Berkas sing Sampéyan kirim kosong.",
-       "file-too-large": "Berkas sing Sampéyan kirim kagedhèn.",
-       "filename-tooshort": "Jeneng berkas kacendhèken.",
+       "empty-file": "Barkas sing panjenengan kirim kosong.",
+       "file-too-large": "Barkas sing panjenengan kirim kagedhèn.",
+       "filename-tooshort": "Jeneng barkas kecendhèken.",
        "filetype-banned": "Jinis berkas iki dilarang.",
        "verification-error": "Berkas iki ora lulus pangesahan.",
-       "hookaborted": "Pangowahan sing Sampéyan coba dibatalaké déning èkstènsi.",
-       "illegal-filename": "Jeneng berkas ora dililakaké.",
+       "hookaborted": "Owahan sing panjenengan ayahi diwurungaké déning èkstènsi.",
+       "illegal-filename": "Jeneng barkas ora diidinaké.",
        "overwrite": "Nibani berkas sing wis ana ora dililakaké.",
        "unknown-error": "Ana masalah sing ora dingertèni.",
        "tmp-create-error": "Ora bisa nggawé berkas sawetara.",
        "file-thumbnail-no": "Jeneng berkas diwiwiti kanthi <strong>$1</strong>. Katoné berkas iki sawijining gambar mawa ukuran sing dicilikaké <em>(thumbnail)</em>.\nYèn panjenengan kagungan vèrsi mawa résolusi kebak saka gambar iki, mangga diunggahaké. Yèn ora, tulung jeneng berkas diganti.",
        "fileexists-forbidden": "Sawijining berkas mawa jeneng iki wis ana, lan ora bisa ditindhes.\nYèn panjenengan isih arep ngunggahaké berkas panjenengan, supaya\nmbalik lan gunakna jeneng liya.\n[[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "Wis ana berkas liyané mawa jeneng sing padha ing gudhang berkas sing dianggo bebarengan.\nYèn isih ngersakaké ngunggahaké, mangga berkas diunggahaké manèh mawa jeneng liya. [[File:$1|thumb|center|$1]]",
-       "file-exists-duplicate": "Berkas iki duplikat utawa padha karo {{PLURAL:$1|berkas|berkas-berkas}} ing ngisor:",
+       "file-exists-duplicate": "Barkas iki dhuplikaté {{PLURAL:$1|barkas}} iki:",
        "file-deleted-duplicate": "Sawijining berkas persis berkas iki ([[:$1]]) wis tau dibusak. Mangga panjenengan priksani sajarah pambusakan berkas kasebut sadurungé nerusaké ngunggahaké berkas kuwi manèh.",
        "uploadwarning": "Pèngetan pangunggahan berkas",
        "uploadwarning-text": "Mangga owah katrangan berkas nèng ngisor lan coba manèh.",
        "php-uploaddisabledtext": "Pangunggahan berkas dipatèni ing PHP.\nMangga priksa panyetèlan pangunggahan berkas.",
        "uploadscripted": "Berkas iki ngandhut HTML utawa kode sing bisa diinterpretasi salah déning panjlajah wèb.",
        "uploadvirus": "Berkas iki ngamot virus! Détil: $1",
-       "uploadjava": "Berkas kuwi berkas ZIP sing kaisi berkas .class Java.\nNgungga berkas Java ora dililakaké amarga bisa nyebabaké ngluwèhaké wates kamanan.",
+       "uploadjava": "Barkasé barkas ZIP sing ngemu barkas .class Java.\nNgunggah barkas Java ora diidinaké amarga bisa njalari dilanggaré watesan kaamanan.",
        "upload-source": "Barkas sumber",
-       "sourcefilename": "Jeneng berkas sumber:",
+       "sourcefilename": "Jeneng barkas sumber:",
        "sourceurl": "URL sumber:",
-       "destfilename": "Jeneng berkas sing dituju",
+       "destfilename": "Jeneng barkas tujuan:",
        "upload-maxfilesize": "Ukuran maksimal berkas: $1",
-       "upload-description": "Katrangan berkas",
+       "upload-description": "Katerangan barkas",
        "upload-options": "Opsi pangundhuhan",
        "watchthisupload": "Awasana berkas iki",
        "filewasdeleted": "Sawijining berkas mawa jeneng iki wis tau diunggahaké lan sawisé dibusak.\nMangga priksanen $1 sadurungé ngunggahaké berkas iku manèh.",
        "upload-misc-error": "Kaluputan pamunggahan sing ora dimangertèni",
        "upload-misc-error-text": "Ana kaluputan sing ora diweruhi kadadéyan nalika pangunggahan. Mangga dipasthèkaké yèn URL kasebut iku absah lan bisa diaksès lan sawisé iku cobanen manèh. Yèn masalah iki isih ana, mangga kontak [[Special:ListUsers/sysop|pangurus sistem]].",
        "upload-too-many-redirects": "URL ngandhut kakèhan pengalihan",
-       "upload-http-error": "Ana kasalahan HTTP: $1",
+       "upload-http-error": "Ana masalah HTTP: $1",
        "upload-copy-upload-invalid-domain": "Unggahan salinan ora sumadhiya nèng domain iki.",
        "upload-dialog-title": "Unggah barkas",
        "upload-dialog-button-cancel": "Wurung",
+       "upload-dialog-button-back": "Balik",
        "upload-dialog-button-done": "Rampung",
        "upload-dialog-button-save": "Simpen",
        "upload-dialog-button-upload": "Unggah",
        "upload-form-label-infoform-title": "Rerincèn",
        "upload-form-label-infoform-name": "Jeneng",
+       "upload-form-label-infoform-description": "Wedharan",
+       "upload-form-label-usage-title": "Pangguna",
        "upload-form-label-usage-filename": "Jeneng barkas",
        "upload-form-label-own-work": "Iki karyaku dhéwé",
        "upload-form-label-infoform-categories": "Kategori",
        "upload-form-label-infoform-date": "Tanggal",
        "backend-fail-stream": "Ora bisa milikaké berkas \"$1\".",
        "backend-fail-backup": "Ora bisa nyadangaké berkas \"$1\".",
-       "backend-fail-notexists": "Berkas $1 ora ana.",
+       "backend-fail-notexists": "Barkas $1 ora ana.",
        "backend-fail-hashes": "Ora bisa ngéntukaké has berkas kanggo mbandingaké.",
        "backend-fail-notsame": "Berkas nonidèntik wis ana nèng \"$1\".",
        "backend-fail-invalidpath": "\"$1\" dudu jurusan nyimpen sing sah.",
        "backend-fail-readonly": "Backend penyimpanan \"$1\" ini saat ini hanya bisa dibaca. Alasan yang diberikan adalah: \"''$2''\"",
        "backend-fail-synced": "Berkas \"$1\" dalam keadaan yang tidak konsisten dalam backends penyimpanan internal",
        "backend-fail-connect": "Tidak dapat menyambung ke penyimpanan backend \"$1\".",
-       "backend-fail-internal": "Kesalahan yang tidak dikenal terjadi di backend penyimpanan \"$1\".",
+       "backend-fail-internal": "Ana masalah ing backend panyimpenan \"$1\".",
        "backend-fail-contenttype": "Ora bisa nemtokaké jinisé kontèn saka berkas sing arep disimpen nèng \"$1\".",
        "backend-fail-batchsize": "Penyimpanan backend diberikan batch $1 berkas {{PLURAL:$1||}}operasi; batasnya adalah $2 {{PLURAL:$2||}}operasi.",
        "backend-fail-usable": "Ora bisa maca utawa nulis berkas \"$1\" amarga idin durung nyukupi utawa ilang dirèktori/kontaineré.",
        "lockmanager-fail-db-release": "Ora bisa nguculaké gembok neng basis data $1.",
        "lockmanager-fail-svr-acquire": "Ora bisa ngentokaké gembok nèng sasana $1.",
        "lockmanager-fail-svr-release": "Ora bisa nguculaké gembok neng sasana $1.",
-       "zip-file-open-error": "Ana kasalahan nalika mbukak berkas kanggo papriksan ZIP.",
-       "zip-wrong-format": "Berkas sing diawèhaké dudu berkas ZIP.",
+       "zip-file-open-error": "Ana masalah nalika mbukak barkas kanggo pamriksan ZIP.",
+       "zip-wrong-format": "Barkas sing diisèkaké dudu barkas ZIP.",
        "zip-bad": "Berkas rusak utawa berkas ZIP sing ora bisa diwaca.\nKuwi ora bisa kapriksa kanthi patut kanggo kamanan.",
        "zip-unsupported": "Berkasé kuwi berkas ZIP sing nganggo piranti ZIP sing ora kasengkuyung déning MediaWiki.\nKuwi ora bisa kapriksa kanthi patut kanggo kamanan.",
        "uploadstash": "Unggah pandhelikan",
        "uploadstash-summary": "Kaca iki nyadhiyakaké dalan nèng berkas-berkas sing wis diunggah (utawa lagi diunggah) naning durung diterbitaké nèng wiki. Berkas-berkas iki ora katon kanggo sapa waé nanging namung kanggo panganggo sing ngunggah waé.",
        "uploadstash-clear": "Busak berkas kadhelikaké",
-       "uploadstash-nofiles": "Sampéyan ora nduwé berkas kadhelikaké.",
+       "uploadstash-nofiles": "Panjenengan ora duwé barkas simpenan.",
        "uploadstash-badtoken": "Nglakoni iki ora suksès, mungkin amarga hak panyuntingan Sampéyan wis kedaluwarsa. Jajal manèh.",
        "uploadstash-errclear": "Ngresiki berkas ora suksès.",
        "uploadstash-refresh": "Segeraké daptar berkas",
        "img-auth-noread": "Panganggo ora nduwé aksès kanggo maca \"$1\".",
        "http-invalid-url": "URL ora absah: $1",
        "http-invalid-scheme": "URL mawa skéma \"$1\" ora disengkuyung.",
-       "http-request-error": "Panjalukan HTTP gagal amarga kasalahan sing ora dingertèni.",
-       "http-read-error": "Kasalahan maca HTTP.",
+       "http-request-error": "Panyuwunan HTTP wurung amarga masalah sing ora dingertèni.",
+       "http-read-error": "Masalah pamaca HTTP.",
        "http-timed-out": "Panjalukan HTTP kliwat wates wektu.",
-       "http-curl-error": "Kasalahan nalika njupuk URL: $1",
+       "http-curl-error": "Masalah njupuk URL: $1",
        "http-bad-status": "Ana masalah nalika njaluk HTTP: $1 $2",
        "upload-curl-error6": "URL-é ora bisa dihubungi",
        "upload-curl-error6-text": "URL sing diwènèhaké ora bisa dihubungi.\nMangga dipriksa manèh yèn URL iku pancèn bener lan situs iki lagi aktif.",
        "license": "Jenis lisènsi:",
        "license-header": "Pamalilah",
        "nolicense": "Durung ana sing dipilih",
+       "licenses-edit": "Besut pilihan lisènsi",
        "license-nopreview": "(Pratuduh ora sumadhiya)",
-       "upload_source_url": " (sawijining URL absah sing bisa diaksès publik)",
-       "upload_source_file": " (sawijining berkas ing komputeré panjenengan)",
+       "upload_source_url": "(barkas sing panjenengan pilih saka URL sing trep tur bisa diaksès umum)",
+       "upload_source_file": "(barkas sing panjenengan pilih saka komputeré panjenengan)",
+       "listfiles-delete": "busak",
        "listfiles-summary": "Kaca mirunggan iki nuduhaké kabèh barkas sing kaunggah.",
        "listfiles_search_for": "Golèk jeneng gambar:",
+       "listfiles-userdoesnotexist": "Akun panganggo \"$1\" ora kadhaftar.",
        "imgfile": "barkas",
        "listfiles": "Daftar gambar",
        "listfiles_thumb": "Gambar mini",
        "filehist-nothumb": "Ora ana miniatur",
        "filehist-user": "Panganggo",
        "filehist-dimensions": "Alang ujur",
-       "filehist-filesize": "Gedhené berkas",
+       "filehist-filesize": "Gedhené barkas",
        "filehist-comment": "Tanggapan",
-       "imagelinks": "Panganggoning barkas",
+       "imagelinks": "Panggunané barkas",
        "linkstoimage": "{{PLURAL:$1|Kaca|$1 kaca}} ngisor iki nggayut barkas iki:",
        "linkstoimage-more": "Luwih saka $1 {{PLURAL:$1|kaca|kaca-kaca}} nduwèni pranala menyang berkas iki.\nDhaftar ing ngisor nuduhaké {{PLURAL:$1|kaca pisanan kanthi pranala langsung|$1 kaca kanthi pranala langsung}} menyang berkas iki.\n[[Special:WhatLinksHere/$2|dhaftar pepak]] uga ana.",
        "nolinkstoimage": "Ora ana kaca sing nggayut menyang barkas iki.",
        "morelinkstoimage": "Ndeleng [[Special:WhatLinksHere/$1|luwih akèh pranala]] menyang berkas iki.",
-       "linkstoimage-redirect": "$1 (alihan berkas) $2",
+       "linkstoimage-redirect": "$1 (alihan barkas) $2",
        "duplicatesoffile": "{{PLURAL:$1|berkas ing ngisor arupa duplikat|$1 berkas ing ngisor arupa duplikat}} saka berkas iki ([[Special:FileDuplicateSearch/$2|luwih rinci]]):",
-       "sharedupload": "Berkas iki saka $1 lan bisa digunakaké déning proyèk liya.",
+       "sharedupload": "Barkas iki saka $1 lan bisa kanggo proyèk-proyèk liyané.",
        "sharedupload-desc-there": "Berkas iki asal saka $1 lan bisa dipigunakaké déning proyèk liya.\nMangga pirsani [$2 kaca dhèskripsi berkas] kanggo informasi sabanjuré.",
        "sharedupload-desc-here": "Barkas iki saka $1 lan kena kanggo proyèk liya.\nPanyandraning [$2 kaca panyandra barkas]é kapacak ing ngisor.",
        "sharedupload-desc-edit": "Berkas iki saka $1 lan mungkin dianggo nèng proyèk liya.\nMungkin Sampéyan pingin nyunting katrangan nèng [$2 kaca katrangan berkasé] nèng kono.",
        "sharedupload-desc-create": "Berkas iki saka $1 lan mungkin dianggo nèng proyèk liya.\nMungkin Sampéyan pingin nyunting katrangan nèng [$2 kaca katrangan berkasé] nèng kono.",
-       "filepage-nofile": "Ora ana berkas nganggo jeneng iki.",
+       "filepage-nofile": "Ora ana barkas kanthi jeneng kaya mangkéné.",
        "filepage-nofile-link": "Ora ana berkas nganggo jeneng iki, nanging panjenengan bisa [$1 ngunggahaké].",
        "uploadnewversion-linktext": "Unggahna vèrsi sing luwih anyar tinimbang gambar iki",
        "shared-repo-from": "saka $1",
        "shared-repo": "sawijining panyimpenan kanggo bebarengan",
        "upload-disallowed-here": "Sampéyan ora kena ngeblegi barkas iki.",
        "filerevert": "Balèkna $1",
-       "filerevert-legend": "Balèkna berkas",
+       "filerevert-legend": "Pulihaké barkas",
        "filerevert-intro": "Panjenengan mbalèkaké '''[[Media:$1|$1]]''' menyang [vèrsi $4 ing $3, $2].",
        "filerevert-comment": "Alesan:",
        "filerevert-defaultcomment": "Dibalèkaké menyang vèrsi ing $2, $1 ($3)",
        "filerevert-submit": "Balèkna",
        "filerevert-success": "'''[[Media:$1|$1]]''' wis dibalèkaké menyang [vèrsi $4 ing $3, $2].",
        "filerevert-badversion": "Ora ana vèrsi lokal sadurungé saka berkas iki mawa stèmpel wektu sing dikarepaké.",
+       "filerevert-identical": "Vèrsi barkasé sing saiki padha plek karo sing dipilih.",
        "filedelete": "Mbusak $1",
-       "filedelete-legend": "Mbusak berkas",
+       "filedelete-legend": "Busak barkas",
        "filedelete-intro": "Panjenengan bakal mbusak berkas '''[[Media:$1|$1]]''' sekaliyan kabèh riwayaté.",
        "filedelete-intro-old": "Panjenengan mbusak vèrsi '''[[Media:$1|$1]]''' per [$4 $3, $2].",
        "filedelete-comment": "Alesan:",
        "filedelete-otherreason": "Alesan tambahan/liya:",
        "filedelete-reason-otherlist": "Alesan liya",
        "filedelete-reason-dropdown": "*Alesan pambusakan\n** Nglanggar hak cipta\n** Berkas duplikat",
-       "filedelete-edit-reasonlist": "Busak jalaraning pambusak",
+       "filedelete-edit-reasonlist": "Besut alesané mbusak",
        "filedelete-maintenance": "Pambusakan lan pambalikan berkas kanggo sawetara dipatèni salawas ana pangruwatan.",
-       "filedelete-maintenance-title": "Ora bisa mbusak berkas",
-       "mimesearch": "Panggolèkan MIME",
+       "filedelete-maintenance-title": "Ora bisa mbusak barkas",
+       "mimesearch": "Gegolèkan MIME",
        "mimesearch-summary": "Kaca iki nyedyaké fasilitas nyaring berkas miturut tipe MIME-né. Lebokna: contenttype/subtype, contoné <code>image/jpeg</code>.",
        "mimetype": "Tipe MIME:",
        "download": "undhuh",
        "unwatchedpages": "Kaca-kaca sing ora diawasi",
        "listredirects": "Daftar pengalihan",
-       "unusedtemplates": "Cithakan sing ora dienggo",
+       "unusedtemplates": "Cithakan sing ora kanggo",
        "unusedtemplatestext": "Kaca iki ngamot kabèh kaca ing bilik jeneng {{ns:template}} sing ora dianggo ing kaca ngendi waé.\nPriksanen dhisik pranala-pranala menyang cithakan iki sadurungé mbusak.",
        "unusedtemplateswlh": "pranala liya-liyané",
        "randompage": "Sembarang kaca",
        "randomincategory": "Sembarang kaca ing kategori",
        "randomincategory-invalidcategory": "\"$1\" dudu jeneng kategori sing apik.",
        "randomincategory-nopages": "Ora ana kaca ing kategori [[:Category:$1|$1]].",
+       "randomincategory-category": "Kategori:",
+       "randomincategory-legend": "Sembarang kaca ing kategori",
        "randomincategory-submit": "Tumuju",
        "randomredirect": "Pangalihan sembarang",
-       "randomredirect-nopages": "Ora ana pangalihan ing bilik jeneng \"$1\".",
+       "randomredirect-nopages": "Ora ana alih-alihan ing mandala aran \"$1\".",
        "statistics": "Statistik",
        "statistics-header-pages": "Statistik kaca",
        "statistics-header-edits": "Pétungan besutan",
        "statistics-header-users": "Statistik panganggo",
        "statistics-header-hooks": "Statistik liya",
-       "statistics-articles": "Kaca-kaca isi",
+       "statistics-articles": "Kaca isi",
        "statistics-pages": "Gunggung kaca",
        "statistics-pages-desc": "Kabèh kaca ing wiki iki, kalebu kaca parembugan, alihan, lsp.",
        "statistics-files": "Berkas sing diunggahaké",
        "statistics-edits": "Gunggung suntingan wiwit {{SITENAME}} diwiwiti",
        "statistics-edits-average": "Rata-rata suntingan saben kaca",
-       "statistics-users": "Gunggung [[Special:ListUsers|panganggo kadaftar]]",
+       "statistics-users": "[[Special:ListUsers|Panganggo]] kadhaftar",
        "statistics-users-active": "Para panganggo aktif",
        "statistics-users-active-desc": "Panganggo sing ngayahi aktivitas jroning {{PLURAL:$1|dia|$1 dina}} pungkasan",
-       "pageswithprop": "Kaca-kaca mawa ubarampé",
-       "pageswithprop-legend": "Kaca-kaca mawa ubarampé",
-       "pageswithprop-text": "Kaca iki mratélakaké kaca-kaca sing nganggo deduwèkaning kaca tinamtu.",
+       "pageswithprop": "Kaca mawa properti kaca",
+       "pageswithprop-legend": "Kaca mawa properti kaca",
+       "pageswithprop-text": "Kaca iki mratélakaké kaca-kaca sing nganggo properti kaca mirunggan.",
        "pageswithprop-prop": "Arané ubarampé:",
        "pageswithprop-submit": "Nuju",
        "pageswithprop-prophidden-long": "nilai properti teks dawa didhelikake ($1 kilobita)",
        "uncategorizedpages": "Kaca sing ora dikategorisasi",
        "uncategorizedcategories": "Kategori sing ora dikategorisasi",
        "uncategorizedimages": "Berkas sing ora dikategorisasi",
-       "uncategorizedtemplates": "Cithakan sing ora dikategorisasi",
+       "uncategorizedtemplates": "Cithakan sing durung diwèhi kategori",
        "unusedcategories": "Kategori sing ora dienggo",
        "unusedimages": "Berkas sing ora dienggo",
-       "wantedcategories": "Kategori sing diperlokaké",
+       "wantedcategories": "Kategori sing dikarepi",
        "wantedpages": "Kaca sing dipèngini",
        "wantedpages-badtitle": "Sesirah ora sah ing omboyakan kasil: $1",
-       "wantedfiles": "Berkas sing diperlokaké",
+       "wantedfiles": "Barkas sing dikarepi",
        "wantedfiletext-cat": "Berkas iki dianggo nanging ora ana. Berkas saka panyimpenan asing mungkin kadaptar tinimbang ana kasunyatan. Saben ''positip salah'' bakal <del>diorèk</del>. Lan, kaca sing nyartakaké berkas sing ora ana bakal kadaptar nèng [[:$1]].",
        "wantedfiletext-nocat": "Berkas iki dianggo nanging ora ana. Berkas saka panyimpenan asing mungkin kadaptar tinimbang ana kasunyatan. Saben ''positip salah'' bakal <del>diorèk</del>.",
-       "wantedtemplates": "Cithakan sing diperlokaké",
+       "wantedtemplates": "Cithakan sing dikarepi",
        "mostlinked": "Kaca sing kerep dhéwé dituju",
        "mostlinkedcategories": "Kategori sing kerep dhéwé dienggo",
        "mostlinkedtemplates": "Kaca paling akèh transklusi",
        "deadendpages": "Kaca-kaca buntu (tanpa pranala)",
        "deadendpagestext": "Kaca-kaca ing ngisor iki ora nggayut nyang kaca liya ing {{SITENAME}}.",
        "protectedpages": "Kaca sing direksa",
-       "protectedpages-indef": "Namung pangreksan ora langgeng waé",
+       "protectedpages-indef": "Namung rereksan tanpa watesan wektu",
        "protectedpages-cascade": "Amung kaca rineksan kang runtut",
        "protectedpages-noredirect": "Dhelikna alihan",
        "protectedpagesempty": "Saat ini tidak ada halaman yang sedang dilindungi.",
        "protectedpages-page": "Kaca",
        "protectedpages-expiry": "Kadaluwarsa",
+       "protectedpages-performer": "Ngreksa panganggo",
+       "protectedpages-params": "Paramèter rereksan",
        "protectedpages-reason": "Alesan",
+       "protectedpages-submit": "Tuduhaké kaca",
+       "protectedpages-unknown-timestamp": "Ora dingertèni",
+       "protectedpages-unknown-performer": "Panganggo ora dingertèni",
        "protectedtitles": "Sesirah direksa",
        "protectedtitlesempty": "Ora ana sesirah sing saiki kareksa mawa paramèter iki.",
+       "protectedtitles-submit": "Tuduhaké sesirah",
        "listusers": "Daftar panganggo",
        "listusers-editsonly": "Tampilaké mung panganggo sing nduwèni kontribusi",
        "listusers-creationsort": "Urut miturut tanggal digawé",
        "usereditcount": "$1 {{PLURAL:$1|besutan|besutan}}",
        "usercreated": "{{GENDER:$3|Digawé}} $1 wanci $2",
        "newpages": "Kaca anyar",
-       "newpages-username": "Asma panganggo:",
+       "newpages-submit": "Tuduhaké",
+       "newpages-username": "Jeneng panganggo:",
        "ancientpages": "Kaca paling lawas",
        "move": "Pindhahen",
        "movethispage": "Lih kaca iki",
        "pager-older-n": "{{PLURAL:$1|1 luwih lawas|$1 luwih lawas}}",
        "suppress": "Dhelikaké",
        "querypage-disabled": "Kaca kusus iki dipatèni kanggo alesan kinerja.",
+       "apihelp": "Pitulung API",
+       "apihelp-no-such-module": "Modhul \"$1\" ora katemu.",
        "apisandbox": "Kothak wedhi API",
+       "apisandbox-jsonly": "JavaScript dibutuhaké saperlu nganggo bak wedhi API.",
        "apisandbox-api-disabled": "API dipatèni nèng situs iki.",
        "apisandbox-intro": "Anggo kaca iki kanggo njajal-njajal '''API layanan wèb MediaWiki'''.\nRujuk [https://www.mediawiki.org/wiki/API:Main_page the dhokumèntasi API] kanggo panganggoan API luwih rinci. Conto: [https://www.mediawiki.org/wiki/API#A_simple_example ngéntukaké kontèn Kaca Utama]. Pilih laku kanggo ndelok conto luwih akèh.",
+       "apisandbox-fullscreen": "Jembaraké panèl",
+       "apisandbox-fullscreen-tooltip": "Jembaraké panèl bak wedhi kanggo ngisi jendhéla pangluru.",
+       "apisandbox-unfullscreen": "Tuduhaké kaca",
+       "apisandbox-unfullscreen-tooltip": "Ciyutaké panèl bak wedhi supaya pranala navigasi MediaWiki dadi ana.",
        "apisandbox-submit": "Gawé panjalukan",
        "apisandbox-reset": "Resiki",
+       "apisandbox-retry": "Jajal manèh",
+       "apisandbox-loading": "Ngamot katerangan kanggo modhul API \"$1\"...",
+       "apisandbox-load-error": "Ana masalah nalika ngamot katerangan modhul API \"$1\": $2",
+       "apisandbox-no-parameters": "Modhul API iki ora ana paramèteré.",
+       "apisandbox-helpurls": "Pranala pitulung",
        "apisandbox-examples": "Conto",
-       "apisandbox-results": "Asil",
+       "apisandbox-dynamic-parameters": "Paramèter tambahan",
+       "apisandbox-dynamic-parameters-add-label": "Tambah paramèter:",
+       "apisandbox-dynamic-parameters-add-placeholder": "Jeneng paramèter",
+       "apisandbox-dynamic-error-exists": "Paramèter aran \"$1\" wis ana.",
+       "apisandbox-deprecated-parameters": "Paramèter lawas",
+       "apisandbox-fetch-token": "Isi otomatis tokené",
+       "apisandbox-submit-invalid-fields-title": "Sawenèh babagan ora trep",
+       "apisandbox-submit-invalid-fields-message": "Jajal dandanana babagan sing ditandhani lan jajalen manèh.",
+       "apisandbox-results": "Kasil",
+       "apisandbox-sending-request": "Ngirim panyuwuné API...",
+       "apisandbox-loading-results": "Nampa kasilé API...",
+       "apisandbox-results-error": "Ana masalah nalika ngamot wangsulan kanggo panyuwuné API: $1.",
+       "apisandbox-request-selectformat-label": "Tuduhaké dhata suwunan minangka:",
        "apisandbox-request-url-label": "URL dikarepaké:",
-       "apisandbox-request-time": "Suwéné panjalukan: $1",
+       "apisandbox-request-json-label": "Nyuwun JSON:",
+       "apisandbox-request-time": "Suwéné panyuwunan: {{PLURAL:$1|$1 ms}}",
+       "apisandbox-results-fixtoken": "Dandanana tokené lan balènana numpuk",
+       "apisandbox-results-fixtoken-fail": "Wurung njupuk token \"$1\".",
+       "apisandbox-alert-page": "Babagan ing kaca iki ora trep.",
+       "apisandbox-alert-field": "Ajiné babagan iki ora trep.",
+       "apisandbox-continue": "Banjuraké",
+       "apisandbox-continue-clear": "Resiki",
+       "apisandbox-continue-help": "{{int:apisandbox-continue}} bakal [https://www.mediawiki.org/wiki/API:Query#Continuing_queries mbanjuraké] panyuwunané sing pungkasan; {{int:apisandbox-continue-clear}} bakal ngresiki paramèter sing gegayutan karo tumindak panglanjutané.",
+       "apisandbox-param-limit": "Isinen <kbd>max</kbd> saperlu nganggo watesan maksimum.",
+       "apisandbox-multivalue-all-namespaces": "$1 (Kabèh mandala aran)",
+       "apisandbox-multivalue-all-values": "$1 (Kabèh aji)",
        "booksources": "Sumber buku",
        "booksources-search-legend": "Golèk sumber buku",
        "booksources-search": "Golèk",
        "booksources-text": "Ing ngisor iki kapacak daftar pranala menyang situs liyané sing ngadol buku anyar lan bekas, lan mbok-menawa uga ndarbèni informasi sabanjuré ngenani buku-buku sing lagi panjenengan golèki:",
-       "booksources-invalid-isbn": "ISBN sing diwènèhaké katonané ora valid; priksa kasalahan penyalinan saka sumber asli.",
+       "booksources-invalid-isbn": "ISBN sing diwènèhaké katonané ora trep; priksanen bokmanawa ana masalah nalika nurun sumber asli.",
+       "magiclink-tracking-rfc": "Kaca sing nganggo pranala ajaib RFC",
+       "magiclink-tracking-rfc-desc": "Kaca iki nganggo pranala ajaib RFC. Delengen [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] ngenani carané boyongan.",
+       "magiclink-tracking-pmid": "Kaca sing nganggo pranala ajaib PMID",
+       "magiclink-tracking-isbn": "Kaca sing nganggo pranala ajaib ISBN",
        "specialloguserlabel": "Panampil:",
        "speciallogtitlelabel": "Patujon (judhul utawa panganggo) :",
        "log": "Log",
-       "all-logs-page": "Kabèh log publik",
-       "alllogstext": "Gabungan tampilam kabèh log sing ana ing {{SITENAME}}.\nPanjenengan bisa mbatesi tampilan kanthi milih jinis log, jeneng panganggo (sènsitif aksara gedhé/cilik), utawa kaca sing magepokan (uga sènsitif aksara gedhé/cilik).",
+       "logeventslist-submit": "Tuduhaké",
+       "all-logs-page": "Kabèh log umum",
+       "alllogstext": "Pitontonan gabungan log-log sing ana ing {{SITENAME}}.\nPanjenengan bisa nyiyutaké sesawangané kanthi milih sawijining jinis log, jeneng panganggo (sènsitif-case), utawa kaca sing gegayutan (uga sènsitif-case).",
        "logempty": "Ora ditemokaké èntri log sing pas.",
        "log-title-wildcard": "Golèk sesirah sing diwiwiti tulisan iki",
        "showhideselectedlogentries": "Tuduhalé/dhelikaké èntri log kapilih",
+       "log-edit-tags": "Besut tag saka isian log sing dipilih",
+       "checkbox-select": "Pilih: $1",
        "checkbox-all": "Kabèh",
        "checkbox-none": "Ora ana",
        "checkbox-invert": "Balèkaké",
        "allpages": "Kabèh kaca",
        "nextpage": "Kaca sabanjuré ($1)",
        "prevpage": "Kaca sadurungé ($1)",
-       "allpagesfrom": "Kaca-kaca kawiwitan kanthi:",
+       "allpagesfrom": "Pitontonaké kaca sing diwiwiti:",
        "allpagesto": "Tampilaké kaca dipungkasi ing:",
        "allarticles": "Kabèh kaca",
-       "allinnamespace": "Kabeh kaca ($1 namespace)",
+       "allinnamespace": "Kabèh kaca (mandala aran $1)",
        "allpagessubmit": "Menyang",
        "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.",
-       "allpages-bad-ns": "{{SITENAME}} ora duwé bilik nama \"$1\".",
+       "allpages-bad-ns": "{{SITENAME}} ora duwé mandala aran \"$1\".",
        "allpages-hide-redirects": "Dhelikaké alihan",
        "cachedspecial-viewing-cached-ttl": "Sampéyan lagi ndelok vèrsi cadhangan saka kaca iki, sing bisa dadi lawasé wis $1.",
        "cachedspecial-viewing-cached-ts": "Sampéyan lagi ndelok vèrsi cadhangan saka kaca iki, sing bisa dadi ora padha karo kasunyatan.",
-       "cachedspecial-refresh-now": "Delok sing paling anyar.",
+       "cachedspecial-refresh-now": "Deleng sing paling anyar.",
        "categories": "Kategori",
        "categories-submit": "Tuduhaké",
        "categoriespagetext": "{{PLURAL:$1|kategori ing ngisor iki ngandhut|kategori ing ngisor iki ngandhut}} kaca utawa media.\n[[Special:UnusedCategories|Kategori sing ora dianggo]] ora ditampilaké ing kéné.\nDeleng uga [[Special:WantedCategories|kategori sing diperlokaké]].",
-       "categoriesfrom": "Tampilaké kategori-kategori diwiwiti saka:",
-       "deletedcontributions": "Sumbangan panganggo sing dibusak",
-       "deletedcontributions-title": "Sumbanganing panganggo sing dibusak",
+       "categoriesfrom": "Tuduhaké kategori-kategori sing diwiwiti:",
+       "deletedcontributions": "Sumbangané panganggo sing dibusak",
+       "deletedcontributions-title": "Sumbangané panganggo sing dibusak",
        "sp-deletedcontributions-contribs": "sumbangan",
        "linksearch": "Golèkan pranala njaba",
-       "linksearch-pat": "Pola panggolèkan:",
+       "linksearch-pat": "Polah ing gegolèkan:",
        "linksearch-ns": "Bilik nama:",
        "linksearch-ok": "Golèk",
        "linksearch-text": "Tanda bintang seperti \"*.wikipedia.org\" dapat digunakan.\nPerlu sedikitnya satu domain tingkat atas, misalnya \"*.org\".<br />\n{{PLURAL:$2|Protokol|Protokol}} yang didukung: $1 (menggunakan http:// bila protokol tidak ditentukan)",
        "activeusers-count": "$1 {{PLURAL:$1|suntingan|suntingan}} ing {{PLURAL:$3|dina|$3 dina}} pungkasan",
        "activeusers-from": "Tampilna panganggo wiwit saka:",
        "activeusers-groups": "Tuduhaké panganggo sing mlebu golongan:",
+       "activeusers-excludegroups": "Aja lebokaké panganggo sing kalebu golongan:",
        "activeusers-noresult": "Panganggo ora ana.",
        "activeusers-submit": "Tuduhaké panganggo aktif",
        "listgrouprights": "Hak-hak grup panganggo",
        "listgrouprights-rights": "Hak-hak",
        "listgrouprights-helppage": "Help:Hak-hak grup",
        "listgrouprights-members": "(daftar anggota)",
-       "listgrouprights-addgroup": "Bisa nambahaké {{PLURAL:$2|klompok|klompok}}: $1",
-       "listgrouprights-removegroup": "Bisa mbusak {{PLURAL:$2|klompok|klompok}}: $1",
+       "listgrouprights-addgroup": "Tambah {{PLURAL:$2|golongan}}: $1",
+       "listgrouprights-removegroup": "Busak {{PLURAL:$2|golongan}}: $1",
        "listgrouprights-addgroup-all": "Bisa nambahaké kabèh klompok",
        "listgrouprights-removegroup-all": "Bisa mbusak kabèh klompok",
        "listgrouprights-addgroup-self": "Nambahaké {{PLURAL:$2|klompok|klompok}} menyang akuné dhéwé: $1",
        "listgrouprights-removegroup-self": "Mbusak {{PLURAL:$2|klompok|klompok}} saka akuné dhéwé: $1",
        "listgrouprights-addgroup-self-all": "Nambahaké kabèh grup menyang akuné dhéwé",
        "listgrouprights-removegroup-self-all": "Mbusak kabèh klompok saka akuné dhéwé",
-       "mailnologin": "Ora ana alamat layang e-mail",
-       "mailnologintext": "Panjenengan kudu [[Special:UserLogin|mlebu log]] lan kagungan alamat e-mail sing sah ing [[Special:Preferences|preféèrensi]] yèn kersa ngirim layang e-mail kanggo panganggo liya.",
+       "listgrouprights-namespaceprotection-header": "Watesan mandala aran",
+       "listgrouprights-namespaceprotection-namespace": "Mandala aran",
+       "listgrouprights-namespaceprotection-restrictedto": "Hak sing ngidinaké panganggo mbesut",
+       "listgrants": "Idin",
+       "listgrants-grant": "Idin",
+       "listgrants-rights": "Hak",
+       "trackingcategories": "Kategori panglacak",
+       "trackingcategories-msg": "Kategori panglacak",
+       "trackingcategories-name": "Jeneng layang",
+       "mailnologin": "Ora ana alamat kirim",
+       "mailnologintext": "Panjenengan kudu [[Special:UserLogin|mlebu log]] lan duwé alamat layang-èl sing trep ing [[Special:Preferences|pilalané]] panjenengan kanggo nglayangi panganggo liyané.",
        "emailuser": "Kirim e-mail panganggo iki",
        "emailuser-title-target": "Kirim surel ke {{GENDER:$1|pengguna}} ini",
-       "emailuser-title-notarget": "Kirimi panganggo iki layang e-mail",
+       "emailuser-title-notarget": "Kirimi panganggo layang-èl",
        "emailpagetext": "Panjenengan bisa migunakaké formulir ing ngisor kanggo ngirim layang-e marang {{GENDER:$1|panganggo}} iki.\nAlamat layang-e sing panjenengan lebokaké ing [[Special:Preferences|préferèsi panjenengan]] bakal dadi alamat \"Saka\" jroning layang-e kasebut, mula panampa layang-e bakal bisa mbalesi langsung menyang panjenengan.",
        "defemailsubject": "{{SITENAME}} layang èlèktronik saka panganggo \"$1\"",
        "usermaildisabled": "E-mail panganggo dinonaktifaké",
        "usermaildisabledtext": "Sampéyan ora bisa ngirim layang èlèktronik nèng panganggo liya nèng wiki iki",
-       "noemailtitle": "Ora ana alamat layang e-mail",
+       "noemailtitle": "Ora ana alamat layangl",
        "noemailtext": "Panganggo iki ora mènèhi alamat layang-e sing absah.",
        "nowikiemailtext": "Panganggo iki wis milih ora nampa layang-e saka panganggo liya.",
        "emailnotarget": "Jeneng panganggo panampa ora ana utawa ora sah.",
        "emailtarget": "Lebokaké jeneng panganggo panampa",
        "emailusername": "Jeneng panganggo:",
        "emailusernamesubmit": "Kirim",
-       "email-legend": "Ngirim layang-e katujokaké panganggo  {{SITENAME}} liyané",
+       "email-legend": "KIrim layang-èl nyang panganggo  {{SITENAME}} liyané",
        "emailfrom": "Saka:",
        "emailto": "Kanggo:",
        "emailsubject": "Prekara:",
        "emailsend": "Kirim",
        "emailccme": "Kirimana aku salinan pesenku.",
        "emailccsubject": "Salinan pesen panjenengan kanggo $1: $2",
-       "emailsent": "Layang e-mail wis dikirim",
-       "emailsenttext": "Layang e-mail panjenengan wis dikirim.",
+       "emailsent": "Layang-èl dikirim",
+       "emailsenttext": "Layang-èlé panjenengan wis dikirim.",
        "emailuserfooter": "Layang-e iki dikirimaké déning $1 marang $2 migunakaké fungsi \"Layangpanganggo\" ing {{SITENAME}}.",
        "usermessage-summary": "Tinggalaké layang sistem.",
        "usermessage-editor": "Pawartaning layang sistem",
        "watch": "Awasi",
        "watchthispage": "Periksa kaca iki",
        "unwatch": "Ora usah ngawasaké manèh",
-       "unwatchthispage": "Batalna olèhé ngawasi kaca iki",
+       "unwatchthispage": "Mandheg ngawasi",
        "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 layang elektronik diaktifaké.",
+       "wlheader-enotif": "Wara-wara layang-èl diurubaké.",
        "wlheader-showupdated": "Kaca-kaca sing wis owah wiwit ditiliki panjenengan kaping pungkasan, dituduhaké mawa '''aksara kandel'''",
        "wlnote": "Ngisor iki {{PLURAL:$1|owahan pungkasan|'''$1''' owahan pungkasan}} {{PLURAL:$2|jam|'''$2''' jam}} kapungkur, per $3, $4.",
-       "wlshowlast": "Tuduhna $1 jam $2 dina  pungkasan",
+       "wlshowlast": "Tuduhaké $1 jam $2 dina pungkasan",
        "watchlist-hide": "Dhelikaké",
        "watchlist-submit": "Tuduhaké",
        "wlshowtime": "Kala mangsa kanggo dituduhaké:",
        "watchlist-options": "Pilihaning pawawangan",
        "watching": "Ngawasi...",
        "unwatching": "Ngilangi pangawasan...",
-       "watcherrortext": "Ana cacad nalika ngganti tata latar pawawangané sampéyan tumrap \"$1\".",
+       "watcherrortext": "Ana masalah nalika ngganti setèlan pawawangané panjenengan tumrap \"$1\".",
        "enotif_reset": "Tandhanana kabèh kaca sing wis ditiliki",
        "enotif_impersonal_salutation": "Panganggo {{SITENAME}}",
        "enotif_subject_deleted": "Halaman $1 di {{SITENAME}} telah dihapus oleh {{gender:$2|$2}}",
        "deletepage": "Busak kaca",
        "confirm": "Dhedhes (konfirmasi)",
        "excontent": "isi sadurungé: '$1'",
-       "excontentauthor": "isiné mung arupa: '$1' (lan siji-sijiné sing nyumbang yaiku '$2')",
+       "excontentauthor": "isiné: \"$1\", lan sing nyumbang mung \"[[Special:Contributions/$2|$2]]\" ([[User talk:$2|parembugan]])",
        "exbeforeblank": "isi sadurungé dikosongaké: '$1'",
        "delete-confirm": "Busak \"$1\"",
        "delete-legend": "Busak",
        "historywarning": "'''Pènget''': Kaca sing bakal panjenengan busak ana sajarahé kanthi $1 {{PLURAL:$1|révisi|révisi}}:",
        "historyaction-submit": "Tuduhaké",
-       "confirmdeletetext": "Panjenengan bakal mbusak kaca utawa berkas iki minangka permanèn karo kabèh sajarahé saka basis data. Pastèkna dhisik menawa panjenengan pancèn nggayuh iki, ngerti kabèh akibat lan konsekwènsiné, lan apa sing bakal panjenengan tumindak iku cocog karo [[{{MediaWiki:Policy-url}}|kawicaksanan {{SITENAME}}]].",
+       "confirmdeletetext": "Panjenengan nedya mbusak kaca dalah kabèh sujarahé.\nMangga konfirmasi yèn panjenengan pancèn nedya ngayahi iki, ngerti kabèh temahané, lan tumindaké panjenengan miturut [[{{MediaWiki:Policy-url}}|pranatan]].",
        "actioncomplete": "Kasil diayahi",
        "actionfailed": "Tindakan gagal",
        "deletedtext": "\"$1\" wis dibusak. \nDelenga $2 minangka cathetan ngenani sing pungkasan kabusak.",
        "deleteotherreason": "Alesan liya utawa tambahan:",
        "deletereasonotherlist": "Alesan liya",
        "deletereason-dropdown": "*Alesan pambusakan\n** Spam\n** Vandalisme\n** Nglanggar hak cipta\n** Disuwun sing nulis\n** Pangalihan rusak",
-       "delete-edit-reasonlist": "Besut jalaraning pambusak",
+       "delete-edit-reasonlist": "Besut alesané pambusak",
        "delete-toobig": "Kaca iki darbé sujarah besutan sing dawa, punjul $1 {{PLURAL:$1|owahan}}.\nPambusak tumrap kaca sing kaya mangkono wis ora diidinaké nedya njagani murih ora ana karusakan ing {{SITENAME}}.",
-       "delete-warning-toobig": "Kaca iki duwé sajarah panyuntingan sing dawa, luwih saka $1 {{PLURAL:$1|révisi|révisi}}.\nMbusak kaca iki bisa ngrusak operasi basis data ing {{SITENAME}};\nkudu ngati-ati.",
+       "delete-warning-toobig": "Kaca iki duwé sujarah besut sing dawa, punjul $1 {{PLURAL:$1|révisi}}.\nMbusak kaca iki bisa ngrusak lakuné basis dhata ing {{SITENAME}};\nkudu diayahi kanthi ngati-ati.",
        "deleteprotected": "Panjenengan ora bisa mbusak kaca iki amarga direksa.",
        "deleting-backlinks-warning": "'''Awas:''' Kaca liyane mungkin ana sing nautake ing kaca sing arep sampeyan busak.",
        "rollback": "Pulihaké besutan",
        "cantrollback": "Ora bisa mbalèkaké suntingan; panganggo pungkasan iku siji-sijiné penulis artikel iki.",
        "alreadyrolled": "Ora bisa mulihaké besutan pungkasan [[:$1]] déning [[User:$2|$2]] ([[User talk:$2|rembug]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); ana wong liya sing wis mbesut utawa mulihaké kaca iki.\n\nBesutan pungkasan kaca iku garapané [[User:$3|$3]] ([[User talk:$3|rembug]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Ringkesan suntingan yaiku: <em>$1</em>.",
-       "revertpage": "Besutan sing dibalèkaké [[Special:Contributions/$2|$2]] ([[User talk:$2|rembugan]]) bab owahan pungkasan déning [[User:$1|$1]]",
+       "revertpage": "Besutané [[Special:Contributions/$2|$2]] ([[User talk:$2|rembugan]]) sing dibalèkaké nyang révisi 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;\ndiowahi bali menyang vèrsi pungkasan déning $2.",
        "sessionfailure-title": "Sèsi gagal",
        "changecontentmodel-reason-label": "Alesan:",
        "changecontentmodel-submit": "Ganti",
        "changecontentmodel-success-title": "Modhèl kontèn wis diowahi",
+       "logentry-contentmodel-change-revertlink": "pulihaké",
+       "logentry-contentmodel-change-revert": "pulihaké",
        "protectlogpage": "Log reksa",
        "protectlogtext": "Ngisor iki daptar owahan saka panjagan kaca.\nDelok [[Special:ProtectedPages|daptar kaca sing dijaga]] kanggo daptar panjagan kaca paling anyar.",
        "protectedarticle": "ngreksa \"[[$1]]\"",
-       "modifiedarticleprotection": "ngowahi tingkat pangreksan \"[[$1]]\"",
+       "modifiedarticleprotection": "ngowahi tataran rereksané \"[[$1]]\"",
        "unprotectedarticle": "nyingkiraké panjagan saka \"[[$1]]\"",
-       "movedarticleprotection": "mindhahaké pangaturan protèksi saka \"[[$2]]\" menyang \"[[$1]]\"",
-       "protect-title": "Ngowahi tingkatan pangreksan kanggo \"$1\"",
-       "protect-title-notallowed": "Delok undhaké panjagan saka \"$1\"",
+       "movedarticleprotection": "ngalih setèlan rereksan saka \"[[$2]]\" nyang \"[[$1]]\"",
+       "protectedarticle-comment": "{{GENDER:$2|Ngreksa}} \"[[$1]]\"",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Ngowahi tataran rereksan}} tumrap \"[[$1]]\"",
+       "unprotectedarticle-comment": "{{GENDER:$2|Nyopot rereksan}} saka \"[[$1]]\"",
+       "protect-title": "Owahi tataran rereksané \"$1\"",
+       "protect-title-notallowed": "Deleng tataran rereksan saka \"$1\"",
        "prot_1movedto2": "$1 dialihaké menyang $2",
        "protect-badnamespace-title": "Bilik jeneng sing ora bisa dijagani",
        "protect-badnamespace-text": "Kaca nèng bilik jeneng iki ora bisa dijagani.",
        "protect-norestrictiontypes-text": "Kaca iki ora isa diproteksi.",
        "protect-norestrictiontypes-title": "Kaca sing ora bisa diproteksi",
-       "protect-legend": "Konfirmasi pangreksan",
+       "protect-legend": "Konfirmasi rereksan",
        "protectcomment": "Alesan:",
        "protectexpiry": "Kadaluwarsa:",
        "protect_expiry_invalid": "Wektu kadaluwarsa ora sah.",
        "protect_expiry_old": "Wektu kadaluwarsané kuwi ana ing jaman biyèn.",
-       "protect-unchain-permissions": "Urubaké pilihan panjagan sabanjuré",
+       "protect-unchain-permissions": "Urubaké opsi rereksan lanjutan",
        "protect-text": "Ing kéné, sampéyan bisa ndeleng lan ngganti tataran kareksan tumrap kaca <strong>$1</strong>.",
-       "protect-locked-blocked": "Panjenengan ora bisa ngganti tingkat pangreksan yèn lagi diblokir.\nIng ngisor iki kapacak konfigurasi saiki iki kanggo kaca '''$1''':",
-       "protect-locked-dblock": "Tingkat pangreksan ora bisa diganti amerga anané panguncèn aktif basis data.\nIng ngisor iki kapacak konfigurasi kanggo kaca '''$1''':",
-       "protect-locked-access": "Akun utawa rékening panjenengan ora awèh idin kanggo ngganti tingkat pangreksan kaca. Ing ngisor iki kapacak konfigurasi saiki iki kanggo kaca '''$1''':",
+       "protect-locked-blocked": "Panjenengan ora bisa ngowahi tataran rereksan nalika diblokir.\nMangkéné setèlan saiki tumrap kaca <strong>$1</strong>:",
+       "protect-locked-dblock": "Tataran rereksan ora bisa diowahi amarga sasana dhatané digembok.\nMangkéné setèlan saiki tumrap kaca <strong>$1</strong>:",
+       "protect-locked-access": "Akuné panjenengan ora kawogan ngowahi tataran rereksan kaca.\nMangkéné setèlan saiki tumrap kaca <strong>$1</strong>:",
        "protect-cascadeon": "Kaca iki lagi direksa amerga disertakaké ing {{PLURAL:$1|kaca|kaca-kaca}} sing wis direksa mawa pilihan pangreksan runtun diaktifaké. Panjenengan bisa ngganti tingkat pangreksan kanggo kaca iki, nanging perkara iku ora awèh pengaruh pangreksan runtun.",
        "protect-default": "Idinaké kabèh panganggo",
        "protect-fallback": "Perlu idin hak aksès \"$1\"",
-       "protect-level-autoconfirmed": "Blokir panganggo anyar lan ora kadhaptar",
+       "protect-level-autoconfirmed": "Mung idinaké panganggo sing otomatis kadhaftar",
        "protect-level-sysop": "Namung opsis (operator sistem)",
        "protect-summary-cascade": "runtun",
        "protect-expiring": "kadaluwarsa $1 (UTC)",
        "protect-expiring-local": "kedaluwarsa $1",
        "protect-expiry-indefinite": "salawasé",
-       "protect-cascade": "Reksanen kabèh kaca sing kalebu ing kaca iki (pangreksan runtun).",
-       "protect-cantedit": "Panjenengan ora pareng ngowahi tingkatan pangreksan kaca iki amerga panjenengan ora kagungan idin nyunting kaca iki.",
-       "protect-othertime": "Wektu liya:",
-       "protect-othertime-op": "wektu liya",
+       "protect-cascade": "Reksa kaca sing kalebu ing kaca iki (rereksan runtun).",
+       "protect-cantedit": "Panjenengan ora bisa ngowahi tataran rereksan kaca iki amarga panjenengan ora kawogan mbesut.",
+       "protect-othertime": "Wektu liya:",
+       "protect-othertime-op": "wektu liya",
        "protect-existing-expiry": "Wektu kadaluwarsa saiki: $3, $2",
-       "protect-otherreason": "Alesan liya/tambahan:",
-       "protect-otherreason-op": "Alesan liya",
+       "protect-otherreason": "Alesan tambahan/liyané:",
+       "protect-otherreason-op": "Alesan liya",
        "protect-dropdown": "*Alesan umum pangreksa\n** Vandalisme makaping-kaping\n** Spam makaping-kaping\n** Perang besutan ora prodhuktif\n** Kaca sing dhuwur trafiké",
-       "protect-edit-reasonlist": "Mbesut jalaraning pangreksa",
+       "protect-edit-reasonlist": "Besut alesané ngreksa",
        "protect-expiry-options": "1 jam:1 hour,1 dina:1 day,1 minggu:1 week,2 minggu:2 weeks,1 wulan:1 month,3 wulan:3 months,6 wulan:6 months,1 taun:1 year,tanpa wates:infinite",
-       "restriction-type": "Pangreksan:",
+       "restriction-type": "Palilah:",
        "restriction-level": "Tingkatan pambatesan:",
        "minimum-size": "Ukuran minimum",
        "maximum-size": "Ukuran maksimum:",
        "pagesize": "(bita)",
        "restriction-edit": "Besut",
-       "restriction-move": "Pamindhahan",
+       "restriction-move": "Lih",
        "restriction-create": "Gawé",
        "restriction-upload": "Unggah",
-       "restriction-level-sysop": "pangreksan kebak",
-       "restriction-level-autoconfirmed": "pangreksan sémi",
+       "restriction-level-sysop": "kareksa sawutuhé",
+       "restriction-level-autoconfirmed": "semu kareksa",
        "restriction-level-all": "kabèh tingkatan",
        "undelete": "Kembalikan halaman yang telah dihapus",
        "undeletepage": "Deleng lan pulihaké kaca kabusak",
        "undelete-bad-store-key": "Ora bisa mbatalaké pambusakan révisi berkas mawa tandha wektu $1: berkas ilang sadurungé dibusak.",
        "undelete-cleanup-error": "Ana kaluputan nalika mbusak arsip berkas \"$1\" sing ora dienggo.",
        "undelete-missing-filearchive": "Ora bisa mulihaké arsip barkas ID $1 amarga ora ana ing basis data.\nBarkas iku bokmenawa wis dibusak.",
-       "undelete-error": "Kasalahan mbalèkaké kaca",
+       "undelete-error": "Masalah mulihaké kaca",
        "undelete-error-short": "Kaluputan olèhé mbatalaké pambusakan: $1",
        "undelete-error-long": "Ana kaluputan nalika mbatalaké pambusakan berkas:\n\n$1",
        "undelete-show-file-confirm": "Apa panjenengan yakin arep mirsani révisi berkas \"<nowiki>$1</nowiki>\" sing wis kabusak ing $2 jam $3?",
        "undelete-show-file-submit": "Ya",
-       "namespace": "Jagat aran:",
+       "namespace": "Mandala aran:",
        "invert": "Balèkaké pilihan",
        "tooltip-invert": "Centhang kothak iki kanggo ndhelikaké owahan saka kaca-kaca nèng njero bilik jeneng kapilih (lan bilik jeneng kakait yèn dicenthang)",
-       "namespace_association": "Jagat aran magepokan",
+       "namespace_association": "Mandala aran magepokan",
        "tooltip-namespace_association": "Centhang kothak iki kanggo nglebokaké uga bilik jeneng gumenan utawa subyèk sing kakait karo bilik jeneng kapilih",
        "blanknamespace": "(Pokok)",
-       "contributions": "Sumbangan {{GENDER:$1|panganggo}}",
-       "contributions-title": "Sumbangan panganggo $1",
+       "contributions": "Sumbangané {{GENDER:$1|panganggo}}",
+       "contributions-title": "Sumbangané panganggo $1",
        "mycontris": "Sumbangan",
        "anoncontribs": "Sumbangan",
        "contribsub2": "Kanggo {{GENDER:$3|$1}} ($2)",
        "uctop": "(saiki)",
        "month": "Saka wulan (lan sadurungé):",
        "year": "Wiwit taun (lan sadurungé):",
-       "sp-contributions-newbies": "Namung panganggo-panganggo anyar",
+       "sp-contributions-newbies": "Tuduhaké mung sumbangané akun-akun anyar waé",
        "sp-contributions-newbies-sub": "Kanggo panganggo anyar",
-       "sp-contributions-newbies-title": "Sumbanganing para panganggo anyar",
-       "sp-contributions-blocklog": "Log blokir",
-       "sp-contributions-deleted": "sumbanganing panganggo sing dibusak",
+       "sp-contributions-newbies-title": "Sumbangané panganggo anyar",
+       "sp-contributions-blocklog": "log blokir",
+       "sp-contributions-deleted": "sumbangané {{GENDER:$1|panganggo}} sing dibusak",
        "sp-contributions-uploads": "unggahan",
        "sp-contributions-logs": "log",
        "sp-contributions-talk": "rembug",
        "sp-contributions-username": "Alamat IP utawa jeneng panganggo:",
        "sp-contributions-toponly": "Tuduhaké besutan mligi rèvisi anyar",
        "sp-contributions-newonly": "Tuduhaké besutan mligi kaca gawéan",
+       "sp-contributions-hideminor": "Dhelikaké besutan cilik",
        "sp-contributions-submit": "Golèk",
        "whatlinkshere": "Sing nggayut mréné",
        "whatlinkshere-title": "Kaca mawa pranala nggayut \"$1\"",
        "nolinkshere": "Ora ana kaca sing nduwé pranala menyang '''[[:$1]]'''.",
        "nolinkshere-ns": " Ora ana kaca sing nduwé pranala menyang '''[[:$1]]''' ing bilik jeneng sing kapilih.",
        "isredirect": "kaca lih-lihan",
-       "istemplate": "karo cithakan",
+       "istemplate": "tranklusi",
        "isimage": "pranala barkas",
        "whatlinkshere-prev": "{{PLURAL:$1|sadurungé|$1 sadurungé}}",
        "whatlinkshere-next": "{{PLURAL:$1|sabanjuré|$1 sabanjuré}}",
        "whatlinkshere-hideredirs": "$1 alihan",
        "whatlinkshere-hidetrans": "$1 transklusi",
        "whatlinkshere-hidelinks": "$1 pranala",
-       "whatlinkshere-hideimages": "$1 pranala berkas",
+       "whatlinkshere-hideimages": "$1 pranala barkas",
        "whatlinkshere-filters": "Panyaringan",
+       "whatlinkshere-submit": "Nyang",
        "autoblockid": "Blokir otomatis #$1",
        "block": "Blokir panganggo",
        "unblock": "Uculaké blokirané panganggo",
        "blockip": "Palang {{GENDER:$1|panganggo}}",
        "blockip-legend": "Blokir panganggo",
-       "blockiptext": "Enggonen formulir ing ngisor iki kanggo mblokir sawijining alamat IP utawa panganggo supaya ora bisa nyunting kaca.\nPrekara iki perlu dilakoni kanggo menggak vandalisme, lan miturut [[{{MediaWiki:Policy-url}}|kawicaksanan {{SITENAME}}]].\nLebokna alesan panjenengan ing ngisor iki (contoné njupuk conto kaca sing wis tau dirusak).",
+       "blockiptext": "Enggonen formulir ing ngisor iki saperlu mblokir aksès nulis lumantar alamat IP utawa panganggo mirunggan.\nIki kudu diayahi kanggo ngéndhani vandhalisme, lan minangkani [[{{MediaWiki:Policy-url}}|pranatan]].\nIsinen alesan sing mirunggan ing ngisor iki (contoné, nyitir kaca mirunggan sing dirusak).\nPanjenengan bisa mblokir saprangkat alamat IP lumantar sintaksis [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]; kèhé prangkat sing diidinaké ya iku /$1 kanggo IPv4 lan /$2 kanggo IPv6.",
        "ipaddressorusername": "Alamat IP utawa jeneng panganggo",
        "ipbexpiry": "Kadaluwarsa",
        "ipbreason": "Alesan:",
        "ipbreason-dropdown": "*Alesan umum mblokir\n** Mènèhi informasi palsu\n** Mbusak isi kaca\n** Spam pranala menyang situs njaba\n** Nglebokaké tulisan ngawur ing kaca\n** Tumindak nglècèhaké\n** Ngujar-ujari sawenèh akun\n** Jeneng panganggo ora patut",
-       "ipb-hardblock": "Alangi panganggo sing wis mlebu log nyunting saka alamat IP iki",
-       "ipbcreateaccount": "Penggak nggawé akun utawa rékening",
-       "ipbemailban": "Penggak panganggo ngirim layang e-mail",
+       "ipb-hardblock": "Wurungaké panganggo sing wis mlebu log mbesut saka alamat IP iki",
+       "ipbcreateaccount": "Penggak panggawéné akun",
+       "ipbemailban": "Penggak panganggo saka ngirim layang-èl",
        "ipbenableautoblock": "Blokir alamat IP pungkasan sing dienggo déning pengguna iki sacara otomatis, lan kabèh alamat sabanjuré sing dicoba arep dienggo nyunting.",
-       "ipbsubmit": "Kirimna",
+       "ipbsubmit": "Blokir panganggo iki",
        "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 wulan:1 month,3 wulan:3 months,6 wulan:6 months,1 taun:1 year,tanpa wates:infinite",
        "ipbhidename": "Delikna jeneng panganggo saka suntingan lan pratélan",
-       "ipbwatchuser": "Wasi kaca panganggoning lan kaca gegunemaning panganggo iki",
-       "ipb-disableusertalk": "Alangi panganggo iki nyunting kaca gunemané nalika diblokir",
+       "ipbwatchuser": "Wasi kaca panganggo lan kaca parembugané panganggo iki",
+       "ipb-disableusertalk": "Wurungaké panganggo iki mbesut kaca parembugané dhéwé nalika diblokir",
        "ipb-change-block": "Blokir manèh panganggo kanthi sèting iki",
-       "ipb-confirm": "Pesthèkaké blokir",
+       "ipb-confirm": "Konfirmasi blokiran",
        "badipaddress": "Alamat IP klèntu",
-       "blockipsuccesssub": "Pemblokiran suksès",
-       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] wis diblokir.<br />\nDelok [[Special:BlockList|daptar blokir]] kanggo ninjo blokiran.",
+       "blockipsuccesssub": "Suksès mblokir",
+       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] wis diblokir.<br />\nDeleng [[Special:BlockList|pratélan blokir]] saperlu mriksa blokiran.",
        "ipb-blockingself": "Panjenengan arep mblokir panjenengan dhéwé! Panjenengan yakin arep nglakoni kuwi?",
        "ipb-confirmhideuser": "Sampéyan arep mblokir panganggo mawa piranti \"dhelikaké panganggo\" isih murub. Iki bakal nyegah jeneng panganggo ana ing kabèh daptar lan èntri log. Sampéyan yakin arep nglakoni kuwi?",
-       "ipb-edit-dropdown": "Besut jalaraning pamalang",
-       "ipb-unblock-addr": "Ilangna blokir $1",
-       "ipb-unblock": "Ilangna blokir sawijining panganggo utawa alamat IP",
-       "ipb-blocklist": "Ndeleng blokir sing lagi ditrapaké",
+       "ipb-edit-dropdown": "Besut alesané mblokir",
+       "ipb-unblock-addr": "Copot blokiran tumrap $1",
+       "ipb-unblock": "Copot blokiran tumrap jeneng panganggo utawa alamat IP",
+       "ipb-blocklist": "Deleng blokiran sing ana",
        "ipb-blocklist-contribs": "Kontribusi kanggo $1",
-       "unblockip": "Jabel blokir marang alamat IP utawa panganggo",
+       "ipb-blocklist-duration-left": "Kari $1",
+       "unblockip": "Copot blokiran panganggo",
        "unblockiptext": "Nggonen formulir ing ngisor iki kanggo mbalèkaké aksès nulis sawijining alamt IP utawa panganggo sing sadurungé diblokir.",
-       "ipusubmit": "Ilangna blokir iki",
+       "ipusubmit": "Copot blokiran iki",
        "unblocked": "Blokir marang [[User:$1|$1]] wis dijabel",
        "unblocked-range": "$1 ora diblokir manèh",
        "unblocked-id": "Blokir $1 wis dijabel",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]] wis diblokir.",
        "blocklist": "Panganggo diblokir",
+       "autoblocklist": "Swablokir",
+       "autoblocklist-submit": "Golèk",
+       "autoblocklist-legend": "Pratélan swablokir",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Swablokir}} enggonan",
+       "autoblocklist-empty": "Pratélan swablokir kosong.",
        "ipblocklist": "Panganggo diblokir",
        "ipblocklist-legend": "Golèk panganggo sing diblokir",
        "blocklist-userblocks": "Dhelikaké blokiran akun",
        "anononlyblock": "namung anon",
        "noautoblockblock": "blokir otomatis dipatèni",
        "createaccountblock": "ndamelipun akun dipunblokir",
-       "emailblock": "layang e-mail diblokir",
+       "emailblock": "layang-èl dipatèni",
        "blocklist-nousertalk": "ora kena mbesut kaca guneman dhéwé",
        "ipblocklist-empty": "Pratélan blokir kosong.",
        "ipblocklist-no-results": "alamat IP utawa panganggo sing disuwun ora diblokir.",
        "blocklink": "palang",
-       "unblocklink": "jabel blokir",
-       "change-blocklink": "owahi blokir",
+       "unblocklink": "copot blokiran",
+       "change-blocklink": "owahi blokiran",
        "contribslink": "sumbangan",
-       "emaillink": "kirim layang èlèktronik",
+       "emaillink": "kirim layang-èl",
        "autoblocker": "Panjenengan otomatis dipun-blok amargi nganggé alamat protokol internet (IP) ingkang sami kaliyan \"[[User:$1|$1]]\". Alesanipun $1 dipun blok inggih punika \"'''$2'''\"",
        "blocklogpage": "Log blokir",
        "blocklog-showlog": "Panganggo iki wis tau diblokir sakdurungé.\nLog blokiran sumadhiya nèng ngisor kanggo rujukan:",
        "reblock-logentry": "ngowah setèlan blokir tumrap [[$1]] kanthi wektu kadaluwarsa $2 $3",
        "blocklogtext": "Ing ngisor iki kapacak log pamblokiran lan panjabelan blokir panganggo.\nAlamat IP sing diblokir sacara otomatis ora ana ing daftar iki.\nMangga mirsani [[Special:BlockList|daftar panganggo sing diblokir]] kanggo daftar blokir pungkasan.",
        "unblocklogentry": "njabel blokir \"$1\"",
-       "block-log-flags-anononly": "namung panganggo anonim waé",
-       "block-log-flags-nocreate": "opsi nggawé akun utawa rékening dipatèni",
+       "block-log-flags-anononly": "namung panganggo anonim",
+       "block-log-flags-nocreate": "panggawéné akun dipatèni",
        "block-log-flags-noautoblock": "blokir otomatis dipatèni",
        "block-log-flags-noemail": "e-mail diblokir",
        "block-log-flags-nousertalk": "ora kena mbesut kaca guneman dhéwé",
        "lockedbyandtime": "(déning {{GENDER:$1|$1}} tanggal $2 wanci $3)",
        "move-page": "Ngalih $1",
        "move-page-legend": "Mindhah kaca",
-       "movepagetext": "Formulir ing ngisor iki bakal ngowahi jeneng sawijining kaca, mindhah kabèh sajarahé menyang kaca sing anyar. Irah-irahan utawa judhul sing lawas bakal dadi kaca pangalihan menyang irah-irahan sing anyar. Pranala menyang kaca sing lawas ora bakal diowahi; dadi pastèkna dhisik mriksa pangalihan [[Special:DoubleRedirects|dobel]] utawa [[Special:BrokenRedirects|pangalihan sing rusak]] sawisé pamindhahan. Panjenengan sing tanggung jawab mastèkaké menawa kabèh pranala-pranala tetep nyambung ing kaca panujon kaya samesthiné.\n\nGatèkna yèn kaca iki '''ora''' bakal dipindhah yèn wis ana kaca liyané sing nganggo irah-irahan sing anyar, kejaba kaca iku kosong utawa ora nduwé sajarah panyuntingan. Dadi tegesé panjenengan bisa ngowahi jeneng kaca iku manèh kaya sedyakala menawa panjenengan luput, lan panjenengan ora bisa nimpani kaca sing wis ana.\n\n'''PÈNGET!'''\nPerkara iki bisa ngakibataké owah-owahan sing drastis lan ora kaduga kanggo kaca-kaca sing populèr;\npastekaké dhisik panjenengan ngerti konsekwènsi saka panggayuh panjenengan sadurungé dibanjuraké.",
-       "movepagetext-noredirectfixer": "Formulir di bawah ini digunakan untuk mengubah nama suatu halaman dan memindahkan semua data sejarah ke nama baru.\nJudul yang lama akan menjadi halaman peralihan menuju judul yang baru.\nPastikan untuk memeriksa pengalihan [[Special:DoubleRedirects|ganda]] atau [[Special:BrokenRedirects|rusak]].\nAnda bertanggung jawab untuk memastikan bahwa pranala terus menyambung ke halaman yang seharusnya.\n\nPerhatikan bahwa halaman '''tidak''' akan dipindah apabila telah ada halaman yang menggunakan judul yang baru, kecuali bila halaman tersebut kosong atau merupakan halaman peralihan dan tidak mempunyai sejarah penyuntingan.\nIni berarti Anda dapat mengubah nama halaman kembali seperti semula apabila Anda membuat kesalahan, dan Anda tidak dapat menimpa halaman yang telah ada.\n\n'''Peringatan:'''\nHal ini dapat mengakibatkan perubahan yang tak terduga dan drastis bagi halaman yang populer;\nPastikan Anda mengerti konsekuensi dari perbuatan ini sebelum melanjutkan.",
+       "movepagetext": "Formulir ing ngisor iki bakal ngganti jeneng kaca lan ngalihaké kabèh sujarahé nyang jeneng anyar.\nJeneng lawas bakal dadi kaca alihan marang jeneng anyar.\nPanjenengan bisa ndandani kaca alihan sing otomatis nggayut nyang kaca asliné.\nYèn ora, pesthèkaké yèn panjenengan wis mriksa ana-orané kaca alihan [[Special:DoubleRedirects|dhobel]] utawa [[Special:BrokenRedirects|rusak]].\nPanjenengan kudu tanggon saperlu mesthèkaké yèn pranalané menyang kaca sing samesthiné.\n\nÉling-élingen yèn kacané <strong>ora</strong> bakal dilih yèn jeneng sing dituju wis ana kacané, kajaba isiné kaca alihan sing ora ana sujarah besutané.\nIki ateges panjenengan bisa ngganti jeneng kaca bali nyang asliné manawa ana salah, lan panjenengan ora bisa ngamblegi kaca sing wis ana.\n\n<strong>Cathetan:</strong>\nTumindak iki bisa dadi owahan sing ora kinira lan gedhé mungguh ing kaca sing misuwur;\nmangga pesthèkaké dhisik yèn panjenengan mudheng temahané sadurungé mbacutaké.",
+       "movepagetext-noredirectfixer": "Formulir ing ngisor iki bakal ngganti jeneng kaca lan ngalihaké kabèh sujarahé nyang jeneng anyar.\nJeneng lawas bakal dadi kaca alihan marang jeneng anyar.\nPanjenengan kudu yakin yèn wis mriksa ana-orané kaca alihan [[Special:DoubleRedirects|dhobel]] utawa [[Special:BrokenRedirects|rusak]].\nPanjenengan kudu tanggon saperlu mesthèkaké yèn pranalané menyang kaca sing samesthiné.\n\nÉling-élingen yèn kacané <strong>ora</strong> bakal dilih yèn jeneng sing dituju wis ana kacané, kajaba isiné kaca alihan sing ora ana sujarah besutané.\nIki ateges panjenengan bisa ngganti jeneng kaca bali nyang asliné manawa ana salah, lan panjenengan ora bisa ngamblegi kaca sing wis ana.\n\n<strong>Cathetan:</strong>\nTumindak iki bisa dadi owahan sing ora kinira lan gedhé mungguh ing kaca sing misuwur;\nmangga pesthèkaké dhisik yèn panjenengan mudheng temahané sadurungé mbacutaké.",
        "movepagetalktext": "Menawa sampéyan nyénthang kothak iki, kaca parembugan sing magepokan bakal otomatis dilih nyang sesirah anyar, kajaba kaca parembugané sing dituju wis ana isiné.\n\nYèn mangkéné, sampéyan kudu ngalih utawa nggabung kaca-kaca iku kanthi manual.",
        "moveuserpage-warning": "<strong>Pènget:</strong> Panjenengan iki arep ngalih kaca panganggo. Mangga èlingana yèn mung kacané waé sing bakal dilih, déné panganggoné <em>ora</em> bakal ganti jeneng.",
-       "movenologintext": "Panjenengan kudu dadi panganggo sing wis ndaftar lan wis [[Special:UserLogin|mlebu log]] kanggo mindhah kaca.",
+       "movecategorypage-warning": "<strong>Pélik:</strong> Panjenengan arep ngalih kaca kategori. Tulung gatèkaké yèn mung kacané thok sing bakal dilih déné samubarang kaca sing ana ing kategori lawas <em>ora</em> bakal mèlu dilih nyang kaca kategori anyar.",
+       "movenologintext": "Panjenengan kudu dadi panganggo sing kadhaftar lan wis [[Special:UserLogin|mlebu log]] yèn arep ngalihaké kaca.",
        "movenotallowed": "Panjenengan ora pareng ngalihaké kaca.",
        "movenotallowedfile": "Panjenengan ora duwé hak kanggo mindhahaké berkas.",
        "cant-move-user-page": "Panjenengan ora nduwèni hak aksès kanggo mindhahaké kaca panganggo (kapisah saka anak-kaca).",
        "revertmove": "balèkaké",
        "delete_and_move_text": "Kaca jujugan \"[[:$1]]\" wis ana.\nApa sampéyan kersa mbusak iku supaya kacané bisa dilih?",
        "delete_and_move_confirm": "Ya, busak kaca iku.",
-       "delete_and_move_reason": "Dibusak kanggo jaga-jaga ananing pamindhahan saka \"[[$1]]\"",
+       "delete_and_move_reason": "Dibusak kanggo sarana ngalihaké saka \"[[$1]]\"",
        "selfmove": "Sesirah sumber lan tujuan padha;\nora bisa ngalih nyang tujuan sing padha.",
        "immobile-source-namespace": "Ora bisa mindhahaké kaca jroning bilik jeneng \"$1\"",
        "immobile-target-namespace": "Ora bisa mindhahaké kaca menyang bilik jeneng \"$1\"",
-       "immobile-target-namespace-iw": "Pranala interwiki dudu target sing sah kanggo pamindhahan kaca.",
+       "immobile-target-namespace-iw": "Pranala interwiki dudu tujuan sing trep tumrap pangalihé kaca.",
        "immobile-source-page": "Kaca iki ora bisa dilih-lih.",
        "immobile-target-page": "Ora bisa mindhahaké menyang irah-irahan tujuan kasebut.",
        "bad-target-model": "Tujuan sing diarepaké nganggo gagrag isi sing béda. Ora bisa ngganti $1 dadi $2.",
        "imagenocrossnamespace": "Ora bisa mindhahaké gambar menyang bilik nama non-gambar",
-       "nonfile-cannot-move-to-file": "Ora bisa mindhahaké non-berkas nèng bilik jeneng berkas",
+       "nonfile-cannot-move-to-file": "Ora bisa ngalih non-barkas nyang mandala aran barkas.",
        "imagetypemismatch": "Èkstènsi anyar berkas ora cocog karo jenisé",
-       "imageinvalidfilename": "Jeneng berkas tujuan ora sah",
+       "imageinvalidfilename": "Jeneng barkas tujuan ora trep.",
        "fix-double-redirects": "Dandani kabèh pangalihan gandha sing tumuju marang irah-irahan asli",
        "move-leave-redirect": "Ungkur kaca alihan",
        "protectedpagemovewarning": "'''Pènget:''' Kaca iki wis dikunci dadi mung panganggo sing nduwé hak aksès pangurus baé sing bisa mindhahaké.\nCathetan entri pungkasan disadiakaké ing ngisor kanggo referensi:",
-       "semiprotectedpagemovewarning": "'''Cathetan:''' Kaca iki wis direksa saéngga mung panganggo kadhaptar sing bisa mindhahaké.\nEntri cathetan pungkasan disadiakake ing ngisor kanggo referensi:",
+       "semiprotectedpagemovewarning": "<strong>Cathetan:</strong> Kaca iki wis direksa saéngga mung panganggo kadhaftar sing bisa ngalihaké.\nÈntri log pungkasan cumepak ing ngisor kanggo rujukan:",
        "move-over-sharedrepo": "[[:$1]] ana ing panyimpenan barengan. Ngalih barkas mawa sesirah iki bakal ngamblegi barkas barengan iku.",
        "file-exists-sharedrepo": "Jeneng berkas kapilih wis ana kanggo nèng panyimpenan bebarengan.\nMangga pilih jeneng liya.",
        "export": "Ekspor kaca",
        "export-addnstext": "Nambahaké kaca saka bilik jeneng:",
        "export-addns": "Tambah",
        "export-download": "Simpen minangka berkas",
-       "export-templates": "Kalebu cithakan-cithakan",
+       "export-templates": "Lebokaké cithakan",
        "export-pagelinks": "Lebokaké kaca sing kagayut nyang jeroning:",
-       "allmessages": "Kabèh laporan sistém",
-       "allmessagesname": "Asma (jeneng)",
+       "export-manual": "Tambah kaca kanthi manual:",
+       "allmessages": "Layang sistem",
+       "allmessagesname": "Jeneng",
        "allmessagesdefault": "Tèks baku",
        "allmessagescurrent": "Tèks saiki",
-       "allmessagestext": "Iki dhaptar kabèh pesen saka sistem sing ana ing bilik jeneng MediaWiki.\nMangga pirsani [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki Localisation] lan [https://translatewiki.net translatewiki.net] yèn panjenengan arep kontribusi ing lokalisasi generik MediaWiki.",
+       "allmessagestext": "Iki pratélan layang sistem sing ana ing mandala aran MediaWiki.\nMangga manjing [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation Panglokalan MediaWiki] lan [https://translatewiki.net translatewiki.net] manawa panjenengan arep nyumbang ing panglokalan MediaWiki sing asli.",
        "allmessagesnotsupportedDB": "Kaca iki ora bisa dienggo amerga '''$wgUseDatabaseMessages''' dipatèni.",
        "allmessages-filter-legend": "Penyaring",
        "allmessages-filter": "Saring nganggo kahanan kustomisasi:",
        "allmessages-prefix": "Saring nganggo ater-ater:",
        "allmessages-language": "Basa:",
        "allmessages-filter-submit": "Tumuju menyang",
+       "allmessages-filter-translate": "Pertal",
        "thumbnail-more": "Gedhèkaké",
        "filemissing": "Barkas ilang",
        "thumbnail_error": "Kaluputan nalika nggawé gambar cilik (''thumbnail''): $1",
-       "thumbnail_error_remote": "Peringatan kasalahan saka $1:\n$2",
+       "thumbnail_error_remote": "Layang masalah saka $1:\n$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",
        "thumbnail-dest-create": "Ora bisa nyimpen bambar mini nèng papan patujon",
        "thumbnail_invalid_params": "Paramèter gambar cilik (''thumbnail'') ora absah",
+       "thumbnail_toobigimagearea": "Barkas kanthi alang-ujur luwih gedhé saka $1",
        "thumbnail_dest_directory": "Ora bisa nggawé dirèktori tujuan",
        "thumbnail_image-type": "Tipe gambar ora didhukung",
        "thumbnail_gd-library": "Konfigurasi pustaka GD ora pepak: fungsi $1 ilang",
        "import": "Impor kaca",
        "importinterwiki": "Impor saka wiki liya",
        "import-interwiki-text": "Pilih sawijining wiki lan irah-irahan kaca sing arep diimpor.\nTanggal révisi lan jeneng panyunting bakal dilestarèkaké.\nKabèh aktivitas impor transwiki bakal dilog ing [[Special:Log/import|log impor]].",
+       "import-interwiki-sourcewiki": "Wiki sumber:",
+       "import-interwiki-sourcepage": "Kaca sumber:",
        "import-interwiki-history": "Tuladen kabèh vèrsi lawas saka kaca iki",
        "import-interwiki-templates": "Katutna kabèh cithakan",
        "import-interwiki-submit": "Impor",
+       "import-mapping-default": "Impor nyang pernah gawan",
+       "import-mapping-namespace": "Impor nyang mandala aran:",
+       "import-mapping-subpage": "Impor minangka anak kaca iki:",
        "import-upload-filename": "Jeneng barkas:",
        "import-comment": "Komentar:",
        "importtext": "Mangga èkspor berkas saka wiki sumber nganggo [[Special:Export|prangkat èkspor]].\nSimpen nèng komputer Sampéyan lan unggaha nèng kéné.",
        "importunknownsource": "Sumber impor ora ditepungi",
        "importcantopen": "Berkas impor ora bisa dibukak",
        "importbadinterwiki": "Pranala interwiki rusak",
-       "importsuccess": "Impor suksès!",
+       "importsuccess": "Ngimpor rampung!",
        "importnosources": "Ora ana sumber impor transwiki sing wis digawé lan pangunggahan sajarah sacara langsung wis dinon-aktifaké.",
        "importnofile": "Ora ana berkas sumber impor sing wis diunggahaké.",
        "importuploaderrorsize": "Pangunggahan berkas impor gagal. Ukuran berkas ngluwihi ukuran sing diidinaké.",
        "import-error-edit": "Kaca \"$1\" ora diimpor amarga Sampéyan ora dililakaké nyunting kuwi.",
        "import-error-create": "Kaca \"$1\" ora diimpor amarga Sampéyan ora dililakaké nggawé kuwi.",
        "import-error-interwiki": "Kaca \"$1\" ora diimpor amarga jenengé dicadhangaké kango pranala njaba (interwiki).",
-       "import-error-special": "Kaca \"$1\" ora diimpor amarga kuwi kalebu nèng bilik jeneng kusus sing ora nglilakaké anané kaca.",
-       "import-error-invalid": "Kaca \"$1\" ora diimpor amarga jenengé ora sah.",
+       "import-error-special": "Kaca \"$1\" ora diimpor amarga darbèké mandala aran mirunggan sing ora nglilakaké anané kaca.",
+       "import-error-invalid": "Kaca \"$1\" ora diimpor amarga jenengé ora trep kanggo wiki iki.",
        "import-error-unserialize": "Revisi $2 saka kaca \"$1\" ora bisa diurutaké. Revisi iku dilapuraké murih nganggo gagrag isi $3 sing diurutaké minangka $4.",
        "import-options-wrong": "{{PLURAL:$2|Opsi|Opsi}} salah: <nowiki>$1</nowiki>",
        "import-rootpage-invalid": "Kaca wod iki sesirahé ora sah.",
        "import-rootpage-nosubpage": "Ruang nama \"$1\" di halaman turunan tidak mengizinkan subhalaman.",
        "importlogpage": "Log impor",
        "importlogpagetext": "Impor administratif kaca-kaca mawa sajarah panyuntingan saka wiki liya.",
-       "import-logentry-upload-detail": "$1 {{PLURAL:$1|révisi|révisi}}",
-       "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|révisi}} saka $2",
+       "import-logentry-upload-detail": "$1 {{PLURAL:$1|révisi}} diimpor",
+       "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|révisi}} diimpor saka $2",
        "javascripttest": "Panjajalan JavaScript",
-       "javascripttest-qunit-intro": "Delok [dhokumèntasi panjajalan $1] nèng mediawiki.org.",
-       "tooltip-pt-userpage": "Kaca {{GENDER:|panganggoning sampéyan}}",
+       "javascripttest-pagetext-unknownaction": "Tumindak ora dingertèni: $1",
+       "javascripttest-qunit-intro": "Deleng [$1 dhokumèntasi uji-coba] ing mediawiki.org.",
+       "tooltip-pt-userpage": "Kaca {{GENDER:|panganggoné panjenengan}}",
        "tooltip-pt-anonuserpage": "Kaca panganggo IP panjenengan",
        "tooltip-pt-mytalk": "Kaca gegunemaning {{GENDER:|sampéyan}}",
        "tooltip-pt-anontalk": "Parembug ing besutan-besutan saka alamat IP iki",
        "tooltip-pt-preferences": "Pilih-pilihaning {{GENDER:|sampéyan}}",
        "tooltip-pt-watchlist": "Pratélaning kaca sing sampéyan awasi owah-owahané",
-       "tooltip-pt-mycontris": "Pratélaning sumbanganing {{GENDER:|sampéyan}}",
-       "tooltip-pt-login": "Sampéyan prayogané mlebu masiya ora kudu",
-       "tooltip-pt-logout": "Metu",
-       "tooltip-pt-createaccount": "Sampéyan prayogané gawé akun lan mlebu masiya ora kudu",
-       "tooltip-ca-talk": "Pirembug ngenani kaca isi",
+       "tooltip-pt-mycontris": "Pratélané sumbangané {{GENDER:|panjenengan}}",
+       "tooltip-pt-anoncontribs": "Pratélan besutané alamat IP iki",
+       "tooltip-pt-login": "Panjenengan prayogané mlebu log, sanadyan ora kudu",
+       "tooltip-pt-login-private": "Panjenengan kudu mlebu log supaya bisa nganggo wiki iki",
+       "tooltip-pt-logout": "Metu log",
+       "tooltip-pt-createaccount": "Panjenengan prayogané nggawé akun lan mlebu log, sanadyan ora kudu",
+       "tooltip-ca-talk": "Rembugan ngenani kaca isi",
        "tooltip-ca-edit": "Besut kaca iki",
        "tooltip-ca-addsection": "Miwiti pérangan anyar",
        "tooltip-ca-viewsource": "Kaca iki direksa. \nSampéyan bisa ndeleng sumberé",
-       "tooltip-ca-history": "Owahaning kaca iki sadurungé",
+       "tooltip-ca-history": "Owahan sadurungé saka kaca iki",
        "tooltip-ca-protect": "Reksa kaca iki",
        "tooltip-ca-unprotect": "Ganti panjagan kaca iki",
        "tooltip-ca-delete": "Busak kaca iki",
        "tooltip-ca-move": "Lih kaca iki",
        "tooltip-ca-watch": "Tambahaké kaca iki nyang pawawangan sapéyan",
        "tooltip-ca-unwatch": "Busak kaca iki saka pawawanganing sampéyan",
-       "tooltip-search": "Golèk nyang {{SITENAME}}",
+       "tooltip-search": "Golèk ing {{SITENAME}}",
        "tooltip-search-go": "Jujug kaca asesirah persis mangkéné yèn ana",
        "tooltip-search-fulltext": "Golèk kaca isi tulisan kaya mangkéné",
        "tooltip-p-logo": "Menyang tepas",
        "tooltip-n-mainpage": "Menyang tepas",
        "tooltip-n-mainpage-description": "Menyang tepas",
-       "tooltip-n-portal": "Bab proyèk, apa sing bisa sampéyan garap, ana ing endi saprelu golèk apa-apa",
-       "tooltip-n-currentevents": "Temokaké katerangan latar wuri saka kadadéan saiki",
+       "tooltip-n-portal": "Ngenani proyèk, apa sing bisa panjenengan garap, lang ing endi saprelu golèk apa-apa",
+       "tooltip-n-currentevents": "Golèk katerangan latar wuri saka kadadéan saiki",
        "tooltip-n-recentchanges": "Pratélaning owah-owahan pungkasan sajeroning wiki.",
-       "tooltip-n-randompage": "Mot waton kaca",
+       "tooltip-n-randompage": "Mot sembarang kaca",
        "tooltip-n-help": "Papan kanggo golèk weruh",
-       "tooltip-t-whatlinkshere": "Pratélaning kabèh kaca wiki sing nggayut mréné",
+       "tooltip-t-whatlinkshere": "Pratélané kabèh kaca wiki sing nggayut mréné",
        "tooltip-t-recentchangeslinked": "Owah-owahan anyar saka kaca-kaca sing nggayut kaca iki",
        "tooltip-feed-rss": "''RSS feed'' kanggo kaca iki",
        "tooltip-feed-atom": "''Atom feed'' kanggo kaca iki",
-       "tooltip-t-contributions": "Pratélaning sumbangan {{GENDER:$1|panganggo iki}}",
-       "tooltip-t-emailuser": "Kirimna e-mail menyang panganggo iki",
+       "tooltip-t-contributions": "Pratélané sumbangané {{GENDER:$1|panganggo iki}}",
+       "tooltip-t-emailuser": "Kirimi layang-èl nyang {{GENDER:$1|panganggo iki}}",
+       "tooltip-t-info": "Katerangan liyané ngenani kaca iki",
        "tooltip-t-upload": "Unggah barkas",
        "tooltip-t-specialpages": "Pratélaning kabèh kaca mirunggan",
        "tooltip-t-print": "Vèrsi cithak kaca iki",
        "tooltip-t-permalink": "Pranala permanèn saka owahan iki",
        "tooltip-ca-nstab-main": "Deleng kaca isi",
        "tooltip-ca-nstab-user": "Deleng kaca panganggo",
-       "tooltip-ca-nstab-media": "Ndeleng kaca média",
+       "tooltip-ca-nstab-media": "Deleng kaca médhia",
        "tooltip-ca-nstab-special": "Iki kaca mirunggan lan ora bisa dibesut",
        "tooltip-ca-nstab-project": "Deleng kaca proyèk",
        "tooltip-ca-nstab-image": "Deleng kaca barkas",
-       "tooltip-ca-nstab-mediawiki": "Ndeleng pesenan sistém",
+       "tooltip-ca-nstab-mediawiki": "Deleng layang sistem",
        "tooltip-ca-nstab-template": "Deleng cithakan",
        "tooltip-ca-nstab-help": "Mirsani kaca pitulung",
        "tooltip-ca-nstab-category": "Deleng kaca kategori",
        "tooltip-minoredit": "Tandhani iki yèn besutan cilik",
        "tooltip-save": "Simpen owah-owahaning sampéyan",
+       "tooltip-publish": "Babar owahané panjenengan",
        "tooltip-preview": "Pratuduhing owah-owahaning sampéyan. Anggoa cara iki sadurungé nyimpen.",
        "tooltip-diff": "Tuduhaké owah-owahan endi sing sampéyan gawé tumrap tulisan iki",
        "tooltip-compareselectedversions": "Delengen prabédan antara rong vèrsi kaca iki sing dipilih.",
        "tooltip-rollback": "Balèkaké besutan-besutan kaca iki déning sing pungkasan nyumbang sarana saklikan.",
        "tooltip-undo": "\"Wurung\" mbalèkaké besutan iki lan mbukak blangko besutan sarana modhe pratuduh. Alesan kena diwuwuhaké ing babagan ringkesan.",
        "tooltip-preferences-save": "Simpen préperensi",
-       "tooltip-summary": "Isènana ringkesan cekak",
+       "tooltip-summary": "Isinen ringkesan cekak",
        "anonymous": "{{PLURAL:$1|Panganggo|panganggo}} anon ing {{SITENAME}}.",
        "siteuser": "Panganggo {{SITENAME}} $1",
        "anonuser": "Panganggo anonim {{SITENAME}} $1",
-       "lastmodifiedatby": "Kaca iki pungkasan diowahi  $2, $1 déning $3.",
+       "lastmodifiedatby": "Kaca iki pungkasan diowahi pukul $2, $1 déning $3.",
        "othercontribs": "Adhedhasar karyané $1.",
        "others": "liya-liyané",
-       "siteusers": "{{PLURAL:$2|Panganggo|Panganggo-panganggo}} {{SITENAME}} $1",
+       "siteusers": "{{PLURAL:$2|{{GENDER:$1|Panganggo}}|Panganggo}} {{SITENAME}} $1",
        "anonusers": "{{PLURAL:$2|Panganggo|Panganggo}} anonim {{SITENAME}} $1",
        "creditspage": "Informasi para panulis kaca",
        "nocredits": "Ora ana informasi ngenani para panulis ing kaca iki.",
        "pageinfo-length": "Panjang halaman (dalam bita)",
        "pageinfo-article-id": "ID kaca",
        "pageinfo-language": "Basaning isining kaca",
+       "pageinfo-language-change": "owah",
        "pageinfo-content-model": "Model isi kaca",
+       "pageinfo-content-model-change": "owah",
        "pageinfo-robot-policy": "Diindeks karo robot",
        "pageinfo-robot-index": "Entuk",
        "pageinfo-robot-noindex": "Ora entuk",
        "pageinfo-watchers": "Cacahé pangawas kaca",
+       "pageinfo-visiting-watchers": "Cacahé pandeleng kaca sing nekani besutan anyar",
        "pageinfo-few-watchers": "Kurang seka $1 {{PLURAL:$1|wong tilik|wong tilik}}",
        "pageinfo-redirects-name": "Jumlah pangalihan menyang kaca iki",
        "pageinfo-subpages-name": "Subhalaman halaman ini",
        "markedaspatrollederror": "Ora bisa awèh tandha wis dipatroli",
        "markedaspatrollederrortext": "Panjenengan kudu nentokaké sawijining révisi kanggo ditandhani minangka sing dipatroli.",
        "markedaspatrollederror-noautopatrol": "Panjenengan ora pareng nandhani suntingan panjenengan dhéwé minangka dipatroli.",
-       "markedaspatrollednotify": "Perubahan $1 telah dipatroli.",
+       "markedaspatrollednotify": "Owahan $1 wis dipatroli.",
        "markedaspatrollederrornotify": "Penanda patroli gagal dibuat.",
        "patrol-log-page": "Log patroli",
        "patrol-log-header": "Iki log revisi sing wis dipatroli.",
        "log-show-hide-patrol": "$1 log patroli",
+       "confirm-markpatrolled-button": "YA",
        "deletedrevision": "Revisi lawas sing dibusak $1.",
        "filedeleteerror-short": "Kaluputan nalika mbusak berkas: $1",
        "filedeleteerror-long": "Ana kaluputan nalika mbusak berkas:\n\n$1",
        "imagelisttext": "Ing ngisor iki kapacak daftar '''$1''' {{PLURAL:$1|berkas|berkas}} sing diurutaké $2.",
        "newimages-summary": "Kaca astaméwa utawa kusus iki nuduhaké daftar berkas anyar dhéwé sing diunggahaké.",
        "newimages-legend": "Filter",
-       "newimages-label": "Jeneng berkas (utawa sapérangan seka jeneng berkas):",
+       "newimages-label": "Jeneng barkas (utawa pérangané):",
        "noimages": "Ora ana sing dideleng.",
        "ilsubmit": "Golek",
        "bydate": "miturut tanggal",
        "years": "{{PLURAL:$1|$1 taun|$1 taun}}",
        "ago": "$1 kapungkur",
        "just-now": "baru saja",
-       "hours-ago": "$1 {{PLURAL:$1|jam|jam}} kapungkur",
-       "minutes-ago": "$1 {{PLURAL:$1|menit|menit}} kapungkur",
-       "seconds-ago": "$1 {{PLURAL:$1|detik|detik}} kapungkur",
+       "hours-ago": "$1 jam kapungkur",
+       "minutes-ago": "$1 menit kapungkur",
+       "seconds-ago": "$1 dhetik kapungkur",
        "monday-at": "Senin jam $1",
        "tuesday-at": "Selasa jam $1",
        "wednesday-at": "Rabu jam $1",
        "metadata-help": "Berkas iki ngandhut informasi tambahan sing mbokmenawa ditambahaké déning kamera digital utawa ''scanner'' sing dipigunakaké kanggo nggawé utawa olèhé digitalisasi berkas. Yèn berkas iki wis dimodifikasi, detail sing ana mbokmenawa ora sacara kebak nuduhaké informasi saka gambar sing wis dimodifikasi iki.",
        "metadata-expand": "Tuduhna detail tambahan",
        "metadata-collapse": "Delikna detail tambahan",
-       "metadata-fields": "Babagan-babagan métadhata gambar sing katulis ing nawala iki bakal kapacak nyang jebèran kaca gambar nalika métadhata dinebaké.\nLiyané bakal kadhelikaké kanthi baku.\n* panggawé\n* gagrag\n* tanggalwayahasli\n* wayahpaparan\n* angkaf\n* bijibanteriso\n* dawafocal\n* artis\n* hakcipta\n* pratélangambar\n* latitudgps\n* longitudgps\n* altitudgps",
+       "metadata-fields": "Babagan-babagan métadhata gambar sing kapacak ing layang iki bakal dimot nyang pitontonan kaca gambar nalika métadhata diciyutaké.\nLiyané bakal kadhelikaké kanthi baku.\n* panggawé\n* gagrag\n* tanggalwayahasli\n* wayahpaparan\n* angkaf\n* bijibanteriso\n* dawafocal\n* artis\n* hakcipta\n* pratélangambar\n* latitudgps\n* longitudgps\n* altitudgps",
        "exif-imagewidth": "Jembar",
        "exif-imagelength": "Dhuwur",
        "exif-bitspersample": "Bit per komponèn",
        "exif-primarychromaticities": "Kromatisitas werna primer",
        "exif-ycbcrcoefficients": "Koèfisièn matriks transformasi papan werna",
        "exif-referenceblackwhite": "Wiji réferènsi pasangan ireng putih",
-       "exif-datetime": "Tanggal lan tabuh owahing barkas",
+       "exif-datetime": "Tanggal lan tabuh owahé barkas",
        "exif-imagedescription": "Sesirah gambar",
        "exif-make": "Produsèn kamera",
        "exif-model": "Modhèl kaméra",
        "exif-gpsdifferential": "Korèksi diférènsial GPS",
        "exif-jpegfilecomment": "Tanggepan berkas JPEG",
        "exif-keywords": "Tembung kunci",
-       "exif-worldregioncreated": "Dhaèrahing donya ing endi gambar dijupuk",
-       "exif-countrycreated": "Nagara ing endi gambar dijupuk",
-       "exif-countrycodecreated": "Kodhe kanggo nagara ing endi gambar dijupuk",
+       "exif-worldregioncreated": "Tlatah ing donya anggoné gambaré dijupuk",
+       "exif-countrycreated": "Nagara anggoné gambaré dijupuk",
+       "exif-countrycodecreated": "Kodhe nagara anggoné gambaré dijupuk",
        "exif-provinceorstatecreated": "Propinsi utawa nagara bagéyan ing endi gambar dujupuk",
-       "exif-citycreated": "Kutha ing endi gambar dijupuk",
-       "exif-sublocationcreated": "Dhaérahing kutha ing endi gambar dijupuk",
+       "exif-citycreated": "Kutha anggoné gambaré dijupuk",
+       "exif-sublocationcreated": "Laladan ing kutha anggoné gambaré dijupuk",
        "exif-worldregiondest": "Wewengkon dunya katampilaké",
        "exif-countrydest": "Nagara katampilaké",
        "exif-countrycodedest": "Kodhe nagara katampilaké",
        "exif-attributionurl": "Nalika nganggo manèh karya iki, mangga ubungaké nèng",
        "exif-preferredattributionname": "Nalika nganggo manèh karya iki, mangga awèhi krèdit",
        "exif-pngfilecomment": "Tanggepan berkas PNG",
-       "exif-disclaimer": "Pamaidonan",
+       "exif-disclaimer": "Sélakan",
        "exif-contentwarning": "Pèngetan kontèn",
        "exif-giffilecomment": "Tanggepan berkas GIF",
        "exif-intellectualgenre": "Jinis barang",
        "confirmemail_success": "Alamat e-mail panjenengan wis dikonfirmasi.\nSaiki panjenengan bisa log mlebu lan wiwit nganggo wiki.",
        "confirmemail_loggedin": "Alamat e-mail panjenengan wis dikonfirmasi.",
        "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.\n\n$3\n\nYèn panjenengan *ora tau* ndaftar akun iki, tutna pranala ing ngisor iki kanggo mbatalaké konfirmasi alamat e-mail:\n\n$5\n\nKonfirmasi iki bakal kadaluwarsa ing $4.",
-       "confirmemail_body_changed": "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.\n\n$3\n\nYèn panjenengan *ora tau* ndaftar akun iki, tutna pranala ing ngisor iki kanggo mbatalaké konfirmasi alamat e-mail:\n\n$5\n\nKonfirmasi iki bakal kadaluwarsa ing $4.",
+       "confirmemail_body": "Ana wong, bokmanawa panjenengan, saka alamat IP $1, wis ndhaftar kanthi akun \"$2\" mawa alamat layang-èl iki ing {{SITENAME}}.\n\nSaperlu ngonfirmasi yèn akun iki temenan duwèké panjenengan lan ngaktivasi fitur layang-èl ing {{SITENAME}}, bukaken pranala iki ing pangluruné panjenengan:\n\n$3\n\nYèn panjenengan *ora tau* ndhaftar mawa akun iki, turuten pranala ngisor iki saperlu murungaké konfirmasi lumantar alamat layang-èl iki:\n\n$5\n\nKodhe konfirmasi iki bakal kadaluwarsa nalika $4.",
+       "confirmemail_body_changed": "Ana wong, bokmanawa panjenengan, saka alamat IP $1, wis ngganti alamat layang-èl ing akun \"$2\" dadi nganggo alamat iki ing {{SITENAME}}. \n\nSaperlu ngonfirmasi yèn akun iki temenan duwèké panjenengan, bukaken pranala iki ing pangluruné panjenengan:\n\n$3\n\nYèn akun iku *dudu* duwèké panjenengan, turuten pranala iki saperlu murungaké konfirmasi lumantar alamat layang-èl iki:\n\n$5\n\nKodhe konfirmasi iki bakal kadaluwarsa nalika $4.",
        "confirmemail_body_set": "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.\n\n$3\n\nYèn panjenengan *ora tau* ndaftar akun iki, tutna pranala ing ngisor iki kanggo mbatalaké konfirmasi alamat e-mail:\n\n$5\n\nKonfirmasi iki bakal kadaluwarsa ing $4.",
-       "confirmemail_invalidated": "Pandhedhesan (konfirmasi) alamat e-mail batal",
-       "invalidateemail": "Batalna pandhedhesan (konfirmasi) e-mail",
+       "confirmemail_invalidated": "Konfirmasi alamat layang-èl wurung",
+       "invalidateemail": "Wurung konfirmasi layang-èl",
        "scarytranscludedisabled": "[Transklusi cithakan interwiki dipatèni]",
        "scarytranscludefailed": "[Olèhé njupuk cithakan $1 gagal]",
        "scarytranscludefailed-httpstatus": "[Pengambilan templat $1 gagal: HTTP $2]",
        "scarytranscludetoolong": "[URL-é kedawan]",
-       "deletedwhileediting": "'''Pènget''': Kaca iki wis kabusak sawisé panjenengan miwiti nyunting!",
+       "deletedwhileediting": "<strong>Pélik:</strong> Kaca iki wis dibusak kawit pisanan panjenengan mbesut!",
        "confirmrecreate": "Panganggo [[User:$1|$1]] ([[User talk:$1|Wicara]]) wis mbusak kaca iki nalika panjenengan miwiti panyuntingan mawa alesan:\n: ''$2''\nMangga didhedhes (dikonfirmasi) menawa panjenengan kersa nggawé ulang kaca iki.",
        "confirmrecreate-noreason": "Panganggo [[User:$1|$1]] ([[User talk:$1|wicara]]) mbusak kaca iki sakbaré Sampéyan lekas nyunting. Mangga pesthèkaké yèn Sampéyan pancen pingin tenan nggawé manèh kaca iki.",
        "recreate": "Gawé ulang",
+       "confirm-purge-title": "Buwang kaca iki",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Busak ''cache'' kaca iki?",
        "confirm-purge-bottom": "Ngresiki kaca bakal sekaligus mbusak singgahan lan nampilaké vèrsi kaca pungkasan.",
        "confirm-watch-top": "Tambahaké kaca iki nènh daptar pangawasan Sampéyan?",
        "confirm-unwatch-button": "Oké",
        "confirm-unwatch-top": "Singkiraké kaca iki saka daptar pangawasan Sampéyan?",
+       "confirm-rollback-button": "YA",
+       "confirm-rollback-top": "Pulihaké besutan nyang kaca iki?",
        "quotation-marks": "\"$1\"",
-       "imgmultipageprev": "&larr; kaca sadurungé",
+       "imgmultipageprev": " kaca sadurungé",
        "imgmultipagenext": "kaca sabanjuré →",
        "imgmultigo": "Golèk!",
        "imgmultigoto": "Lungaa menyang kaca $1",
        "img-lang-default": "(basa gawan)",
-       "img-lang-info": "Dadekna gambar iki ing $1, $2",
-       "img-lang-go": "Nuju",
+       "img-lang-info": "Olah gambar iki ing $1. $2",
+       "img-lang-go": "Mangkat",
        "ascending_abbrev": "unggah",
        "descending_abbrev": "mudhun",
        "table_pager_next": "Kaca sabanjuré",
        "autosumm-replace": "←Ngganti kaca karo '$1'",
        "autoredircomment": "←Ngalihaké menyang [[$1]]",
        "autosumm-new": "Gawé kaca sing isi '$1'",
+       "autosumm-newblank": "Nggawé kaca barès",
        "lag-warn-normal": "Owah-owahan pungkasan sing luwih anyar tinimbang $1 {{PLURAL:$1|detik|detik}} mbokmanawa ora metu ing pratélan iki.",
        "lag-warn-high": "Amarga gedhéné ''lag'' basis data server, owah-owahan pungkasan sing luwih anyar saka $1 {{PLURAL:$1|detik|detik}} mbokmanawa ora metu ing daftar iki.",
        "watchlistedit-normal-title": "Besut pawawangan",
        "watchlistedit-raw-done": "Pawawanganing sampéyan wis dianyari.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 sesirah|$1 sesirah}} ditambahaké:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 sesirah|$1 sesirah}} dibusak:",
+       "watchlistedit-clear-title": "Resiki pawawangan",
+       "watchlistedit-clear-legend": "Resiki pawawangan",
+       "watchlistedit-clear-explain": "Kabèh sesirah bakal dibusak saka pawawangané panjenengan",
+       "watchlistedit-clear-titles": "Sesirah:",
+       "watchlistedit-clear-submit": "Resiki pawawangan (Iki permanèn!)",
+       "watchlistedit-clear-done": "Pawawangané panjenengan wis diresiki.",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|1 sesirah|$1 sesirah}} wis dibusak:",
+       "watchlistedit-too-many": "Kaca sing arep dipitontonaké ing kéné kakèhan.",
+       "watchlisttools-clear": "Resiki pawawangané",
        "watchlisttools-view": "Tuduhna owah-owahan sing ana gandhèngané",
        "watchlisttools-edit": "Deleng lan besut pawawangan",
        "watchlisttools-raw": "Besut pawawangan wantahan",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|rembugan]])",
+       "timezone-local": "Lokal",
        "duplicate-defaultsort": "Pènget: Kunci pilih asal (''Default sort key'') \"$2\" nggantèkaké kunci pilih asal sadurungé \"$1\".",
+       "duplicate-displaytitle": "<strong>Pélik:</strong> Sesirah \"$2\" sing dipitontonaké nutupi sesirah \"$1\" sing sadurungé dipitontonaké.",
        "version": "Versi",
        "version-extensions": "Èkstènsi sing wis diinstalasi",
-       "version-skins": "Kulit sing disetèl",
-       "version-specialpages": "Kaca astaméwa (kaca kusus)",
+       "version-skins": "Ules sing dipasang",
+       "version-specialpages": "Kaca mirunggan",
        "version-parserhooks": "Canthèlan parser",
        "version-variables": "Variabel",
        "version-antispam": "Pambendhung spam",
        "version-hook-name": "Jeneng canthèlan",
        "version-hook-subscribedby": "Dilanggani déning",
        "version-version": "($1)",
+       "version-no-ext-name": "[tanpa jeneng]",
        "version-license": "Lisènsi MediaWiki",
        "version-ext-license": "Lisènsi",
        "version-ext-colheader-name": "Ekstensi",
+       "version-skin-colheader-name": "Ules",
        "version-ext-colheader-version": "Vèrsi",
        "version-ext-colheader-license": "Lisènsi",
        "version-ext-colheader-description": "Dèskripsi",
        "version-entrypoints": "URL tithik lebon",
        "version-entrypoints-header-entrypoint": "Tithik lebon",
        "version-entrypoints-header-url": "URL",
+       "version-libraries": "Kapustakan sing kapasang",
+       "version-libraries-library": "Kapustakan",
+       "version-libraries-version": "Vèrsi",
+       "version-libraries-license": "Lisènsi",
+       "version-libraries-description": "Wedharan",
+       "version-libraries-authors": "Pangarang",
        "redirect": "Lih-lihan miturut barkas, panganggo, kaca, owahan, utawa cathetan",
        "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-page": "ID kaca",
        "redirect-revision": "Revisi kaca",
        "redirect-file": "Jeneng barkas",
+       "redirect-logid": "ID log",
        "redirect-not-exists": "Nilai ora ditemokaké",
        "fileduplicatesearch": "Golèk berkas duplikat",
        "fileduplicatesearch-summary": "Golèk duplikat berkas adhedhasar biji hash-é.",
-       "fileduplicatesearch-filename": "Jeneng berkas:",
+       "fileduplicatesearch-filename": "Jeneng barkas:",
        "fileduplicatesearch-submit": "Golèk",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />Ukuran berkas: $3<br />Tipe MIME: $4",
        "fileduplicatesearch-result-1": "Berkas \"$1\" ora duwé duplikat idèntik.",
        "fileduplicatesearch-result-n": "Berkas \"$1\" ora ndarbèni {{PLURAL:$2|1 duplikat idèntik|$2 duplikat idèntik}}.",
-       "fileduplicatesearch-noresults": "Ora ana berkas mawa jeneng \"$1\" ditemokaké.",
+       "fileduplicatesearch-noresults": "Ora tinemu barkas kanthi jeneng \"$1\".",
        "specialpages": "Kaca mirunggan",
        "specialpages-note-top": "Katrangan",
        "specialpages-note": "* Kaca mirunggan sedhengan.\n* <span class=\"mw-specialpagerestricted\">Kaca mirunggan winatesan.</span>",
        "specialpages-group-maintenance": "Lapuran pangopènan",
-       "specialpages-group-other": "Kaca-kaca astaméwa liyané",
+       "specialpages-group-other": "Kaca mirunggan liyané",
        "specialpages-group-login": "Mlebu log / nggawé akun",
        "specialpages-group-changes": "Owah-owahan pungkasan lan log",
        "specialpages-group-media": "Lapuran média lan pangunggahan",
        "tag-filter": "Panyaringan [[Special:Tags|tenger]]:",
        "tag-filter-submit": "Penyaring",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tenger|Tenger}}]]: $2)",
+       "tag-mw-contentmodelchange": "owahan modhèl isi",
        "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-display-header": "Cakrik ing pratélan owahan",
        "tags-description-header": "Dhèskripsi pepak saka makna",
+       "tags-source-header": "Sumber",
        "tags-active-header": "Aktif?",
        "tags-hitcount-header": "Owah-owahan mawa tag",
+       "tags-actions-header": "Tumindak",
        "tags-active-yes": "Iya",
        "tags-active-no": "Ora",
+       "tags-source-extension": "Dikukuhaké déning piranti alus",
+       "tags-source-manual": "Dicakaké kanthi manual déning panganggo lan bot",
+       "tags-source-none": "Ora kanggo manèh",
        "tags-edit": "besut",
+       "tags-delete": "busak",
+       "tags-activate": "urubaké",
+       "tags-deactivate": "patèni",
        "tags-hitcount": "$1 {{PLURAL:$1|pangowahan|pangowahan}}",
+       "tags-manage-no-permission": "Panjenengan ora kawogan ngemunah tenger owahan.",
+       "tags-create-heading": "Gawé tenger anyar",
+       "tags-create-explanation": "Bakuné, tenger sing mentas digawé bakal bisa dianggo déning panganggo lan bot.",
+       "tags-create-tag-name": "Jeneng tenger:",
+       "tags-create-reason": "Alesan:",
+       "tags-create-submit": "Gawé",
+       "tags-create-no-name": "Panjenengan kudu ngisi jeneng tenger.",
+       "tags-create-invalid-chars": "Jenengé tengeré isiné ora kena komah (<code>,</code>) utawa garis miring maju (<code>/</code>).",
+       "tags-create-invalid-title-chars": "Jenengé tengeré isiné ora kena karakter sing ora bisa dianggo ing sesirah kaca.",
+       "tags-create-already-exists": "Tenger \"$1\" wis ana.",
+       "tags-create-warnings-above": "{{PLURAL:$2|Pélik}} ngisor iki muncul nalika lagi nggawé tenger \"$1\":",
+       "tags-create-warnings-below": "Panjenengan yakin arep mbacutaké nggawé tenger?",
+       "tags-delete-title": "Busak tenger",
+       "tags-delete-reason": "Alesan:",
+       "tags-delete-submit": "Temenan busak tenger iki",
+       "tags-delete-not-allowed": "Tenger sing diwedharaké lumantar èkstènsi ora bisa dibusak kajaba èkstènsiné ngidinaké.",
+       "tags-delete-not-found": "Tenger \"$1\" ora ana.",
+       "tags-delete-too-many-uses": "Tenger \"$1\" dicakaké nyang punjul $2 {{PLURAL:$2|révisi}}, sing tegesé ora bisa dibusak.",
+       "tags-delete-warnings-after-delete": "Tenger \"$1\" wis dibusak, nanging ana {{PLURAL:$2|pélik}} mangkéné:",
+       "tags-delete-no-permission": "Panjenengan ora kawogan mbusak tenger owahan.",
+       "tags-activate-title": "Urubaké tenger",
+       "tags-activate-question": "Panjenengan arep ngurubaké tenger \"$1\".",
+       "tags-activate-reason": "Alesan:",
+       "tags-activate-not-allowed": "Mokal ngurubaké tenger \"$1\".",
+       "tags-activate-not-found": "Tenger \"$1\" ora ana.",
+       "tags-activate-submit": "Urubaké",
+       "tags-deactivate-title": "Patèni tenger",
+       "tags-deactivate-question": "Panjenengan arep matèni tenger \"$1\".",
+       "tags-deactivate-reason": "Alesan:",
+       "tags-deactivate-not-allowed": "Mokal matèni tenger \"$1\".",
+       "tags-deactivate-submit": "Patèni",
+       "tags-apply-no-permission": "Panjenengan ora kawogan ngecakaké tenger owahan bebarengan karo owahané panjenengan.",
+       "tags-apply-blocked": "Panjenengan ora bisa ngecakaké tenger owahan bebarengan karo owahané panjenengan manawa {{GENDER:$1|panjenengan}} diblokir.",
+       "tags-apply-not-allowed-one": "Tenger \"$1\" ora kena dicakaké kanthi manual.",
+       "tags-edit-existing-tags": "Tenger sing ana:",
+       "tags-edit-existing-tags-none": "<em>Ora ana</em>",
+       "tags-edit-new-tags": "Tenger anyar:",
+       "tags-edit-add": "Tambah tenger iki:",
+       "tags-edit-remove": "Busak tenger iki:",
+       "tags-edit-remove-all-tags": "(busak kabèh tenger)",
+       "tags-edit-chosen-placeholder": "Pilih sawenèh tenger",
+       "tags-edit-chosen-no-results": "Ora ana tenger sing cocog",
+       "tags-edit-reason": "Alesan:",
+       "tags-edit-revision-submit": "Cakaké owahan nyang {{PLURAL:$1|révisi iki|$1 révisi}}",
+       "tags-edit-logentry-submit": "Cakaké owahan nyang {{PLURAL:$1|èntri log iki|$1 èntri log}}",
+       "tags-edit-success": "Owahané wis dicakaké.",
+       "tags-edit-failure": "Owahané ora bisa dicakaké:\n$1",
+       "tags-edit-nooldid-title": "Révisi tujuan ora trep",
        "comparepages": "Bandhingna kaca",
        "compare-page1": "Kaca 1",
        "compare-page2": "Kaca 2",
        "compare-revision-not-exists": "Benahan sing Sampéyan jaluk ora ana.",
        "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-info": "(Ora bisa nggayut basis dhata: $1)",
+       "dberr-info-hidden": "(Ora bisa nggayut basis dhata)",
        "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.",
        "htmlform-int-toohigh": "Aji sing panjenengan lebokaké kegedhèn ngluwihi aji maksimum $1",
        "htmlform-required": "Nilé iki dibutuhaké",
        "htmlform-submit": "Kirim",
-       "htmlform-reset": "Batalna pangowahan",
+       "htmlform-reset": "Balèkaké owahan",
        "htmlform-selectorother-other": "Liya",
        "htmlform-no": "Ora",
        "htmlform-yes": "Iya",
        "htmlform-chosen-placeholder": "Pilih pilihan",
+       "htmlform-cloner-create": "Tambah liyané",
+       "htmlform-cloner-delete": "Busak",
+       "htmlform-cloner-required": "Saorané wènèhen aji cacah siji.",
+       "htmlform-date-placeholder": "TTTT-WW-DD",
+       "htmlform-time-placeholder": "JJ:MM:SS",
+       "htmlform-datetime-placeholder": "TTTT-WW-DD JJ:MM:SS",
+       "htmlform-title-not-creatable": "\"$1\" dudu sesirah kaca sing bisa digawé",
+       "htmlform-title-not-exists": "$1 ora ana.",
+       "htmlform-user-not-exists": "<strong>$1</strong> ora ana.",
+       "htmlform-user-not-valid": "<strong>$1</strong> dudu jeneng panganggo sing trep.",
        "logentry-delete-delete": "$1 {{GENDER:$2|mbusak}} kaca $3",
-       "logentry-delete-restore": "$1 {{GENDER:$2|mbalèkaké}} kaca $3",
+       "logentry-delete-delete_redir": "$1 {{GENDER:$2|mbusak}} kaca alihan $3 sarana numpuk-undhung.",
+       "logentry-delete-restore": "$1 {{GENDER:$2|mulihaké}} kaca $3 ($4)",
+       "logentry-delete-restore-nocount": "$1 {{GENDER:$2|mulihaké}} kaca $3",
+       "restore-count-revisions": "{{PLURAL:$1|1 révisi|$1 révisi}}",
+       "restore-count-files": "{{PLURAL:$1|1 barkas|$1 barkas}}",
        "logentry-delete-event": "$1 {{GENDER:$2|ngganti}} parupané {{PLURAL:$5|sak prastawa log|$5 prastawa log}} ana ing $3: $4",
        "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",
        "revdelete-content-unhid": "kontèn dituduhaké",
        "revdelete-summary-unhid": "tingkesaning besutan ora kadhelikaké",
        "revdelete-uname-unhid": "jeneng panganggo dituduhaké",
-       "revdelete-restricted": "rèstriksi ditrapaké marang para opsis",
+       "revdelete-restricted": "watesan sing dicakaké marang pangurus",
        "revdelete-unrestricted": "rèstriksi marang para opsis dijabel",
        "logentry-block-block": "$1 {{GENDER:$2|mblokir}} {{GENDER:$4|$3}} kanthi wektu kadaluwarsa $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|nyopot blokirané}} {{GENDER:$4|$3}}",
        "logentry-block-reblock": "$1 {{GENDER:$2|ngowah}} setèlan blokir tumrap {{GENDER:$4|$3}} kanthi wektu kadaluwarsa $5 $6",
        "logentry-suppress-block": "$1 {{GENDER:$2|mblokir}} {{GENDER:$4|$3}} kanthi wektu kadaluwarsa $5 $6",
        "logentry-suppress-reblock": "$1 {{GENDER:$2|ngowah}} setèlan blokir tumrap {{GENDER:$4|$3}} kanthi wektu kadaluwarsa $5 $6",
+       "logentry-import-upload": "$1 {{GENDER:$2|ngimpor}} $3 sarana ngunggah",
+       "logentry-import-upload-details": "$1 {{GENDER:$2|ngimpor}} $3 sarana ngunggah barkas ($4 {{PLURAL:$4|révisi|révisi}})",
+       "logentry-import-interwiki": "$1 {{GENDER:$2|ngimpor}} $3 saka wiki liyané",
+       "logentry-import-interwiki-details": "$1 {{GENDER:$2|ngimpor}} $3 saka $5 ($4 {{PLURAL:$4|révisi}})",
+       "logentry-merge-merge": "$1 {{GENDER:$2|nggabung}} $3 karo $4 (révisi nyandhak $5)",
        "logentry-move-move": "$1 {{GENDER:$2|ngalih}} kaca $3 nyang $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-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-protect-move_prot": "$1 {{GENDER:$2|ngalih}} setèlan rereksan saka $4 dadi $3",
        "logentry-protect-unprotect": "$1 {{GENDER:$2|njabud}} payomané $3",
+       "logentry-protect-protect": "$1 {{GENDER:$2|ngreksa}} $3 $4",
+       "logentry-protect-protect-cascade": "$1 {{GENDER:$2|ngreksa}} $3 $4 [urut]",
+       "logentry-protect-modify": "$1 {{GENDER:$2|ngowahi}} tataran rereksan tumrap $3 $4",
+       "logentry-protect-modify-cascade": "$1 {{GENDER:$2|ngowahi}} tataran rereksan tumrap $3 $4 [urut]",
        "logentry-rights-rights": "$1 {{GENDER:$2|ngganti}} golongané {{GENDER:$6|$3}} saka $4 dadi $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|ngganti}} golongané $3",
        "logentry-rights-autopromote": "$1 otomatis {{GENDER:$2|dipromosikne}} saka $4 nèng $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|ngunggah}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|ngunggah}} vèrsi anyaré $3",
+       "logentry-upload-revert": "$1 {{GENDER:$2|ngunggah}} $3",
+       "log-name-managetags": "Log tata-kemunah tenger",
+       "logentry-managetags-create": "$1 {{GENDER:$2|nggawé}} tenger \"$4\"",
        "rightsnone": "(ora ana)",
+       "rightslogentry-temporary-group": "$1 (sauntara, tumeka $2)",
        "feedback-adding": "Nambahaké lebon saran nèng kaca...",
+       "feedback-back": "Balik",
        "feedback-bugcheck": "Apik! Pesthèké kuwi dudu sawijining [$1 bug sing dingertèni].",
        "feedback-bugnew": "Aku wis mriksa. Kandakaké bug anyar",
        "feedback-bugornote": "Yèn Sampéyan siap njelasaké masalah tèhnis kanthi rinci mangga [$1 laporaké bug].\nUtawa, Sampéyan bisa nganggo pormulir gampang ngisor. Tanggepan Sampéyan bakal ditambahaké nèng kaca \"[$3 $2]\", bebarengan karo jeneng panganggo Sampéyan lan pramban sing Sampéyan anggo.",
-       "feedback-cancel": "Batal",
+       "feedback-cancel": "Wurung",
        "feedback-close": "Rampung",
-       "feedback-error1": "Kasalahan: Asil ora dikenal saka API",
-       "feedback-error2": "Cacad: Gagal mbesut",
-       "feedback-error3": "Kasalahan: Ora ana tanggepan saka API",
+       "feedback-external-bug-report-button": "Kirim ayahan tèhnis",
+       "feedback-dialog-title": "Awèh saran",
+       "feedback-error1": "Masalah: Kasil ora dingertèni saka API",
+       "feedback-error2": "Masalah: Besutané wurung",
+       "feedback-error3": "Masalah: Ora ana tanggapan saka API",
        "feedback-message": "Layang:",
        "feedback-subject": "Jejer:",
        "feedback-submit": "Kirim",
        "feedback-thanks": "Nuwun! Lebon saran Sampéyan wis dipasang nèng kacané \"[$2 $1]\".",
-       "searchsuggest-search": "Golèk {{SITENAME}}",
+       "feedback-thanks-title": "Matur nuwun!",
+       "feedback-useragent": "Agèn panganggo:",
+       "searchsuggest-search": "Golèk ing {{SITENAME}}",
        "searchsuggest-containing": "ngemu...",
-       "api-error-badtoken": "Kasalahan njero: Token èlèk.",
+       "api-error-badtoken": "Masalah njero: Token ala.",
        "api-error-emptypage": "Nggawé kaca kosong anyar ora dilikaké.",
-       "api-error-publishfailed": "Kasalahan njero: Sasana gagal nyèlèhaké berkas sawetara.",
-       "api-error-stashfailed": "Kasalahan njero: Sasana gagal nyèlèhaké berkas sawetara.",
-       "api-error-unknown-warning": "Pèngetan ora dingertèni: \"$1\".",
-       "api-error-unknownerror": "Kasalahan ora dingertèni: \"$1\".",
+       "api-error-publishfailed": "Masalah njero: Paladèn wurung mbabar barkas sawetara.",
+       "api-error-stashfailed": "Masalah njero: Paladèn wurung ndèkèk barkas sawetara.",
+       "api-error-unknown-warning": "Pélik ora dingertèni: \"$1\".",
+       "api-error-unknownerror": "Masalah ora dingertèni: \"$1\".",
        "duration-seconds": "$1 {{PLURAL:$1|detik|detik}}",
        "duration-minutes": "$1 {{PLURAL:$1|menit|menit}}",
        "duration-hours": "$1 {{PLURAL:$1|jam|jam}}",
        "expand_templates_generate_xml": "Tuduhna uwit parser XML",
        "expand_templates_generate_rawhtml": "Show raw HTML",
        "expand_templates_preview": "Pratuduh",
+       "pagelanguage": "Ganti basané kaca",
+       "pagelang-name": "Kaca",
+       "pagelang-language": "Basa",
+       "pagelang-use-default": "Anggo basa gawan",
+       "pagelang-select-lang": "Pilih basa",
+       "pagelang-reason": "Alesan",
+       "pagelang-submit": "Kirim",
+       "pagelang-nonexistent-page": "Kaca $1 ora ana.",
+       "pagelang-unchanged-language": "Kaca $1 wis disetèl nyang basa $2.",
+       "mediastatistics-table-mimetype": "Jinis MIME",
+       "mediastatistics-table-extensions": "Èkstènsi sing mungkin",
+       "mediastatistics-table-count": "Cacah barkas",
+       "mediastatistics-table-totalbytes": "Ukuran gabungan",
+       "mediastatistics-header-unknown": "Ora dingertèni",
+       "mediastatistics-header-bitmap": "Gambar bitmap",
+       "mediastatistics-header-drawing": "Lukisan (gambar vèktor)",
+       "mediastatistics-header-audio": "Audhio",
+       "mediastatistics-header-video": "Vidhio",
+       "mediastatistics-header-multimedia": "Médhia sugih",
        "special-characters-group-latin": "Latin",
        "special-characters-group-latinextended": "Latin pepak",
        "special-characters-group-ipa": "IPA",
        "special-characters-group-thai": "Thailand",
        "special-characters-group-lao": "Lao",
        "special-characters-group-khmer": "Khmer",
-       "randomrootpage": "Kaca dhasaran waton"
+       "mw-widgets-dateinput-no-date": "Ora ana tanggal sing dipilih",
+       "mw-widgets-mediasearch-input-placeholder": "Golèk médhia",
+       "mw-widgets-mediasearch-noresults": "Ora ana wohing panggolèk.",
+       "mw-widgets-titleinput-description-new-page": "kaca durung ana",
+       "mw-widgets-titleinput-description-redirect": "alihan nyang $1",
+       "mw-widgets-categoryselector-add-category-placeholder": "Tambah kategori...",
+       "mw-widgets-usersmultiselect-placeholder": "Tambah liyané...",
+       "date-range-from": "Kawit tanggal:",
+       "date-range-to": "Tumeka tanggal:",
+       "randomrootpage": "Kaca dhasaran waton",
+       "log-action-filter-block": "Jinis blokiran:",
+       "log-action-filter-contentmodel": "Jinis owahan modhèl isi:",
+       "log-action-filter-delete": "Jinis busakan:",
+       "log-action-filter-import": "Jinis imporan:",
+       "log-action-filter-managetags": "Jinis tumindak pangemunah tenger:",
+       "log-action-filter-move": "Jinis lih-lihan:",
+       "log-action-filter-newusers": "Jinis gawéan akun:",
+       "log-action-filter-patrol": "Jinis patroli:",
+       "log-action-filter-protect": "Jinis rereksan:",
+       "log-action-filter-rights": "Jinis owahan hak:",
+       "log-action-filter-upload": "Jinis unggahan:",
+       "log-action-filter-all": "Kabèh",
+       "log-action-filter-block-block": "Blokir",
+       "log-action-filter-block-reblock": "Modhifikasi blokiran",
+       "log-action-filter-block-unblock": "Copot blokiran",
+       "log-action-filter-contentmodel-change": "Owahan modhèl isi",
+       "log-action-filter-contentmodel-new": "Gawéan kaca mawa modhèn isi dudu gawan",
+       "log-action-filter-delete-delete": "Busakan kaca",
+       "log-action-filter-delete-event": "Busakan log",
+       "log-action-filter-delete-revision": "Busakan révisi",
+       "log-action-filter-import-interwiki": "Impor transwiki",
+       "log-action-filter-import-upload": "Impor lumantar unggahan XML",
+       "log-action-filter-managetags-create": "Gawéan tenger",
+       "log-action-filter-managetags-delete": "Busakan tenger",
+       "log-action-filter-managetags-activate": "Aktivasi tenger",
+       "log-action-filter-move-move": "Lih tanpa numpuk-undhung alihan",
+       "log-action-filter-move-move_redir": "Lit kanthi numpuk-undhung alihan",
+       "log-action-filter-newusers-create": "Gawéan déning panganggo anonim",
+       "log-action-filter-newusers-create2": "Gawéan déning panganggo kadhaftar",
+       "log-action-filter-newusers-autocreate": "Gawéan otomatis",
+       "log-action-filter-newusers-byemail": "Gawéan mawa tembung wadi sing dikirim lumantar layang-èl",
+       "log-action-filter-patrol-patrol": "Patroli manual",
+       "log-action-filter-patrol-autopatrol": "Patroli otomatis",
+       "log-action-filter-protect-protect": "Rereksan",
+       "log-action-filter-protect-modify": "Modhifikasi rereksan",
+       "log-action-filter-protect-move_prot": "Ngalih rereksan",
+       "log-action-filter-rights-rights": "Owahan manual",
+       "log-action-filter-rights-autopromote": "Owahan otomatis",
+       "log-action-filter-upload-upload": "Unggahan anyar",
+       "log-action-filter-upload-overwrite": "Ambali ngunggah",
+       "authmanager-authn-not-in-progress": "Otèntifikasi ora lumaku utawa dhata sèsiné ilang. Mangga ambali kanthi miwiti saka pisanan.",
+       "authmanager-authn-autocreate-failed": "Gawéan otomatis akun lokal wurung: $1",
+       "authmanager-create-disabled": "Gawéan akun dipatèni.",
+       "authmanager-create-from-login": "Saperlu nggawé akuné panjenengan, mangga isinen babagané.",
+       "authmanager-authplugin-setpass-bad-domain": "Dhomain ora trep.",
+       "authmanager-autocreate-noperm": "Gawéan akun otomatis ora diidinaké.",
+       "authmanager-autocreate-exception": "Gawéan akun otomatis sawetara dipatèni amarga masalah sadurungé.",
+       "authmanager-userdoesnotexist": "Akun panganggo \"$1\" ora kadhaftar.",
+       "authmanager-username-help": "Jeneng panganggo kanggo otèntifikasi.",
+       "authmanager-password-help": "Tembung wadi kanggo otèntifikasi.",
+       "authmanager-domain-help": "Dhomain kanggo otèntifikasi manca.",
+       "authmanager-retype-help": "Tembung wadi manèh kanggo konfirmasi.",
+       "authmanager-email-label": "Layang-èl",
+       "authmanager-email-help": "Alamat layang-èl",
+       "authmanager-realname-label": "Jeneng asli",
+       "authmanager-realname-help": "Jeneng asliné panganggo",
+       "authmanager-provider-password": "Otèntifikasi adhedhasar tembung wadi",
+       "authmanager-provider-password-domain": "Otèntifikasi adhedhasar tembung wadi lan dhomain",
+       "authmanager-provider-temporarypassword": "Tembung wadi sauntara",
+       "authprovider-resetpass-skip-label": "Langkahi",
+       "credentialsform-account": "Jeneng akun:",
+       "cannotlink-no-provider-title": "Ora ana akun sing bisa digayutaké",
+       "cannotlink-no-provider": "Ora ana akun sing bisa digayutaké.",
+       "linkaccounts": "Gayutaké akun",
+       "linkaccounts-success-text": "Akun wis digayutaké.",
+       "linkaccounts-submit": "Gayutaké akun",
+       "revid": "révisi $1",
+       "pageid": "ID kaca $1",
+       "rawhtml-notallowed": "&lt;html&gt; tenger ora bisa dianggo sajabané kaca adaté.",
+       "gotointerwiki": "Metu {{SITENAME}}",
+       "gotointerwiki-invalid": "Sesirah sing diisèkaké ora trep.",
+       "gotointerwiki-external": "Panjenengan arep metu {{SITENAME}} saperlu marani [[$2]], sawijining situs jaringan manca.\n\n'''[$1 Bacutaké nyang $1]'''",
+       "undelete-cantedit": "Panjenengan ora bisa wurung mbusak kaca iki amarga panjenengan ora kawogan mbesut kaca iki."
 }
index 904c5b3..7dc5060 100644 (file)
        "anontalk": "განხილვა",
        "navigation": "ნავიგაცია",
        "and": "&#32;და",
-       "qbfind": "მოძებნე",
-       "qbbrowse": "გადახედე",
-       "qbedit": "რედაქტირება",
-       "qbpageoptions": "ეს გვერდი",
-       "qbmyoptions": "ჩემი გვერდები",
        "faq": "ხშირი შეკითხვები",
-       "faqpage": "Project:ხშირი შეკითხვები",
        "actions": "მოქმედებები",
        "namespaces": "სახელთა სივრცე",
        "variants": "ვარიანტები",
        "edit-local": "ლოკალური აღწერის რედაქტირება",
        "create": "შექმნა",
        "create-local": "ლოკალური აღწერის დამატება",
-       "editthispage": "გვერდის რედაქტირება",
-       "create-this-page": "ამ გვერდის შექმნა",
        "delete": "წაშლა",
-       "deletethispage": "გვერდის წაშლა",
-       "undeletethispage": "ამ გვერდის აღდგენა",
        "undelete_short": "გააუქმე წაშლა {{PLURAL:$1|ერთი რედაქტირება|$1 რედაქტირება}}",
        "viewdeleted_short": "{{PLURAL:$1|წაშლილი რედაქტირების|$1 წაშლილი რედაქტირებების}} ხილვა",
        "protect": "დაბლოკე",
        "protect_change": "შეცვლა",
-       "protectthispage": "დაბლოკე ეს გვერდი",
        "unprotect": "დაცვის შეცვლა",
-       "unprotectthispage": "შეცვალე ამ გვერდის დაცვის დონე",
        "newpage": "ახალი გვერდი",
-       "talkpage": "მოცემული გვერდის განხილვა",
        "talkpagelinktext": "განხილვა",
        "specialpage": "სპეციალური გვერდი",
        "personaltools": "პირადი ხელსაწყოები",
-       "articlepage": "სტატიის ნახვა",
        "talk": "განხილვა",
        "views": "გადახედვა",
        "toolbox": "ხელსაწყოები",
        "tool-link-userrights": "{{GENDER:$1|მომხმარებლის}} ჯგუფების შეცვლა",
        "tool-link-userrights-readonly": "{{GENDER:$1|მომხმარებლის}} ჯგუფების ხილვა",
        "tool-link-emailuser": "{{GENDER:$1|მომხმარებლისთვის}} ი-მეილის მიწერა",
-       "userpage": "გადახედე მომხმარებლის გვერდს",
-       "projectpage": "დაათვალიერე პროექტის გვერდი",
        "imagepage": "ფაილის გვერდის ნახვა",
        "mediawikipage": "გადახედე შეტყობინების გვერდს",
        "templatepage": "გადახედე თარგის გვერდს",
        "redirectedfrom": "(გადმომისამართდა $1-დან)",
        "redirectpagesub": "გადამისამართება გვერდზე",
        "redirectto": "გადამისამართება:",
-       "lastmodifiedat": "á\83\94á\83¡ á\83\92á\83\95á\83\94á\83 á\83\93á\83\98 á\83\91á\83\9dá\83\9aá\83\9dá\83¡ á\83\92á\83\90á\83\9cá\83\90á\83®á\83\9aá\83\93á\83\90 $2, $1.",
+       "lastmodifiedat": "á\83\94á\83¡ á\83\92á\83\95á\83\94á\83 á\83\93á\83\98 á\83\91á\83\9dá\83\9aá\83\9dá\83¡ á\83\93á\83\90á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 á\83\93á\83\90: $2, $1.",
        "viewcount": "ეს გვერდი შემოწმდა {{PLURAL:$1|ერთხელ|$1-ჯერ}}.",
        "protectedpage": "დაბლოკილი გვერდი",
        "jumpto": "გადასვლა:",
        "createacct-yourpasswordagain-ph": "ხელმეორედ შეიყვანეთ პაროლი",
        "userlogin-remembermypassword": "დამიმახსოვრე",
        "userlogin-signwithsecure": "უსაფრთხო კავშირის გამოყენება",
+       "cannotlogin-title": "შესვლა შეუძლებელია",
+       "cannotlogin-text": "შესვლა შეუძლებელია.",
        "cannotloginnow-title": "ამჟამად შესვლა შუეძლებელია",
        "cannotloginnow-text": "შესვლა შეუძლებელია, როდესაც იყენებთ $1-ს.",
+       "cannotcreateaccount-title": "ანგარიშის შექმნა ვერ ხერხდება",
+       "cannotcreateaccount-text": "ანგარიშის პირდაპირი შექმნა ამ ვიკიში არ არის ნებადართული.",
        "yourdomainname": "თქვენი დომენი",
        "password-change-forbidden": "თქვენ არ შეგიძლიათ ამ ვიკიში პაროლის შეცვლა.",
        "externaldberror": "საგარეო მონაცემთა ბაზაში აუტენტიფიკაციის შეცდომაა, ან თქვენ არ გაქვთ საკმარისი უფლებები საგარეო ანგარიშში ცვლილებების შესატანად.",
        "createacct-another-submit": "ანგარიშის შექმნა",
        "createacct-continue-submit": "განაგრძე ანგარიშის შექმნა",
        "createacct-another-continue-submit": "განაგრძე ანგარიშის შექმნა",
-       "createacct-benefit-heading": "{{SITENAME}} შექმნილია თქვენნაირი ადამიანების მიერ.",
+       "createacct-benefit-heading": "{{SITENAME}} შექმნილია თქვენნაირი ადამიანების მიერ",
        "createacct-benefit-body1": "{{PLURAL:$1|რედაქტირება|რედაქტირება}}",
        "createacct-benefit-body2": "{{PLURAL:$1|გვერდი|გვერდი}}",
        "createacct-benefit-body3": "ბოლო {{PLURAL:$1|რედაქტორი|რედაქტორი}}",
        "summary": "რეზიუმე:",
        "subject": "თემა:",
        "minoredit": "მცირე რედაქტირება",
-       "watchthis": "á\83£á\83\97á\83\95á\83\90á\83\9aá\83\97á\83\95á\83\90á\83\9aá\83\94 ამ გვერდს",
+       "watchthis": "á\83\97á\83\95á\83\90á\83\9aá\83\98 á\83\9bá\83\98á\83\90á\83\93á\83\94á\83\95á\83\9cá\83\94á\83\97 ამ გვერდს",
        "savearticle": "გვერდის შენახვა",
        "savechanges": "ცვლილებების შენახვა",
        "publishpage": "გვერდის გამოქვეყნება",
        "preview": "წინასწარი გადახედვა",
        "showpreview": "წინასწარი გადახედვის ჩვენება",
        "showdiff": "ცვლილებების ჩვენება",
-       "blankarticle": "გაფრთხილება: გვერდი, რომელსაც ქმნით, ცარიელია. თუკი კვლავ დააჭერთ ღილაკს \"{{int:savearticle}}\", გვერდი შეიქმნება შემცვლელობის გარეშე.",
+       "blankarticle": "გაფრთხილება: გვერდი, რომელსაც ქმნით, ცარიელია. თუკი კვლავ დააჭერთ ღილაკს \"$1\", გვერდი შეიქმნება შემცვლელობის გარეშე.",
        "anoneditwarning": "<strong>გაფრთხილება:</strong> თქვენ არ ხართ ავტორიზირებული. თქვენი IP მისამართი საჯაროდ ხილული იქნება, თუკი განახორციელებთ რედაქტირებას. თუ თქვენ გაივლით <strong>[$1 ავტორიზაციას]</strong> ან <strong>[$2 შექმნით ანგარიშს]</strong>, სხვა უპირატესობებთან ერთად, თქვენი რედაქტირებები დაუკავშირდება თქვენს მომხმარებლის სახელს.",
        "anonpreviewwarning": "''თქვენ არ შესულხართ სისტემაში. თქვენი IP მისამართი შეინახება გვერდის ისტორიაში. ''",
        "missingsummary": "'''შეხსენება:''' თქვენ არ მიგითითებიათ რედაქტირების რეზიუმე.\nთუ ისევ დააწკაპუნებთ შენახვაზე, თქვენი რედაქტირება რეზიუმეს გარეშე დამახსოვრდება.",
-       "selfredirect": "გაფრთხილება: თქვენ გადამისამართებას იმავე გვერდზე ქმნით. შესაძლოა, თქვენ გადამისამართებისთვის აირჩიეთ არასწორი სამიზნე გვერდი ან არედაქტირებთ არასამიზნე გვერდს. \n\nთუ თქვენ კიდევ ერთხელ დააჭერთ ღილაკს \"{{int:savearticle}}\", გადამისამართება შეიქმნება.",
+       "selfredirect": "გაფრთხილება: თქვენ გადამისამართებას იმავე გვერდზე ქმნით. შესაძლოა, თქვენ გადამისამართებისთვის აირჩიეთ არასწორი სამიზნე გვერდი ან არედაქტირებთ არასამიზნე გვერდს. \n\nთუ თქვენ კიდევ ერთხელ დააჭერთ ღილაკს \"$1\", გადამისამართება შეიქმნება.",
        "missingcommenttext": "გთხოვთ კომენტარი შეიყვანოთ ქვემოთ.",
-       "missingcommentheader": "<strong>შეხსენება:</strong> თქვენ ამ კომენტარისთვის თემა არ მიგითითებიათ. თუ შენახვაზე \"{{int:savearticle}}\" დააწკაპუნებთ, თქვენი ცვლილება მის გარეშე იქნება შენახული.",
+       "missingcommentheader": "<strong>შეხსენება:</strong> თქვენ ამ კომენტარისთვის თემა არ მიგითითებიათ. თუ შენახვაზე \"$1\" დააწკაპუნებთ, თქვენი ცვლილება მის გარეშე იქნება შენახული.",
        "summary-preview": "რეზიუმეს წინასწარი გადახედვა:",
        "subject-preview": "თემის გადახედვა:",
        "previewerrortext": "თქვენი ცვლილებების წინასწარი გადახედვის მცდელობის დროს მოხდა შეცდომა",
        "blockedtitle": "მომხმარებელი ბლოკირებულია",
        "blockedtext": "<strong>თქვენი მომხმარებლის სახელი ან IP მისამართი დაიბლოკა.</strong>\n\nბლოკირება განახორციელა $1-მ.\nმიზეზად დასახელდა შემდეგი: <em>$2</em>.\n\n* დაბლოკვის დასაწყისი: $8\n* ბლოკის ვადის გასვლის დრო: $6\n* დაბლოკილ იქნა: $7\n\nშეგიძლიათ დაუკავშირდეთ $1-ს ან რომელიმე სხვა [[{{MediaWiki:Grouppage-sysop}}|ადმინისტრატორს]] დაბლოკვის განსახილველად.\nგაითვალისწინეთ, რომ თქვენ ვერ შეძლებთ გამოიყენოთ ფუნქცია „მომხმარებლისთვის ელ. ფოსტის გაგზავნა“, თუ არ გაქვთ მითითებული მოქმედი ელ. ფოსტის მისამართი თქვენი [[Special:Preferences|ანგარიშის კონფიგურაციაში]] ან თუ დაბლოკვის შედეგად გაქვთ ამ ფუნქციის გამოყენების ნებართვა ჩამორთმეული.\nთქვენი ამჟამინდელი IP მისამართია $3, ხოლო ბლოკის იდენტიფიკატორი #$5.\nგთხოვთ, მიუთითოთ ყველა ზემოთხსენებული მონაცემი თქვენს კორესპონდენციაში.",
        "autoblockedtext": "თქვენი IP მისამართი ავტომატურად დაიბლოკა, ვინაიდან მას სხვა მომხმარებელი იყენებდა, რომელიც დაბლოკა $1-მა.\nსაბაბად მოყვანილი იყო შემდეგი:\n\n:''$2''\n\n* ბლოკის დაწყების თარიღი: $8\n* ბლოკის ვადის გასვლა: $6\n*დაიბლოკა $7\n\nშეგიძლიათ დაუკავშირდეთ $10ს ან რომელიმე სხვა\n[[{{MediaWiki:Grouppage-sysop}}|ადმინისტრატორს]] ამ ბლოკის განსახილველად.\n\nგაითვალისწინეთ, რომ თქვენ ვერ გამოიყენებთ „მისწერეთ ელ-წერილი ამ მომხმარებელს“ ფუნქციას თუ თქვენ შემოწმებული ელ-ფოსტის მისამართი\nარ გაქვთ მითითებული თქვენს [[Special:Preferences|კონფიგურაციაში]] და არ ხართ დაბლოკილი მისი გამოყენებისთვის.\n\nთქვენი IP — $3. თქვენი დაბლოკვის საიდენტიფიკაციო ნომერია $5. გთხოვთ მიუთითოთ ეს ნომერი, ნებისმიერ მიმოწერაში.",
+       "systemblockedtext": "თქვენი მომმხარებლის სახელი ან IP-მისამართი ავტომატურად დაიბლოკა MediaWiki-ს მიერ.\nმითითებულია შემდეგი მიზეზი:\n\n:<em>$2</em>\n\n* ბლოკირების დასაწყისი: $8\n* ბლოკირების დასასრული: $6\n* ბლოკირების მიზანი: $7\n\nთქვენი ამჟამინდელი IP-მისამართია $3.\nგთხოვთ, ყოველი თქვენი მიმართვისას მიუთითეთ ზემოთ აღწერილი ყველა დეტალი.",
        "blockednoreason": "მიზეზი არ არის მითითებული",
        "whitelistedittext": "გვერდების რედაქტირებისათვის თქვენ გესაჭიროებათ $1.",
        "confirmedittext": "გვერდების დარედაქტირებამდე უნდა დაადასტუროთ თქვენი ელფოსტის მისამართი. გთხოვთ [[Special:Preferences|მომხმარებლის პარამეტრებში]] მიუთითოთ და დაამოწმოთ ელფოსტის მისამართი.",
        "editingsection": "რედაქტირება - $1 (სექცია)",
        "editingcomment": "რედაქტირება: $1 (ახალი სექცია)",
        "editconflict": "რედაქტირების კონფლიქტი: $1",
-       "explainconflict": "სხვა მომხმარებელმა შეცვალა ეს გვერდი მას შემდეგ რაც თქვენ დაიწყეთ მისი რედატირება.\nზედა ტექსტური ველი შეიცავს გვერდის შიგთავსს მისი ამჟამინდელი სახით.\nთქვენი ცვლილებები ნაჩვენებია ქვედა ტექსტურ ველში.\nთქვენ მოგიწევთ თქვენი ცვლილებების შერწყმა არსებულ ტექსტთან.\n'''მხოლოდ''' ზედა ველში არსებული ტექსტი იქნება შენახული, როდესაც „{{int:savearticle}}“ დააჭერთ.",
+       "explainconflict": "სხვა მომხმარებელმა შეცვალა ეს გვერდი მას შემდეგ რაც თქვენ დაიწყეთ მისი რედატირება.\nზედა ტექსტური ველი შეიცავს გვერდის შიგთავსს მისი ამჟამინდელი სახით.\nთქვენი ცვლილებები ნაჩვენებია ქვედა ტექსტურ ველში.\nთქვენ მოგიწევთ თქვენი ცვლილებების შერწყმა არსებულ ტექსტთან.\n'''მხოლოდ''' ზედა ველში არსებული ტექსტი იქნება შენახული, როდესაც „$1“ დააჭერთ.",
        "yourtext": "თქვენი ტექსტი",
        "storedversion": "შენახული ვერსია",
        "nonunicodebrowser": "'''გაფრთხილება: თქვენი ბრაუზერი უნიკოდთან თავსებადი არ არის. ჩვენ ვცდილობთ ამ პრობლემის გადაჭრას, რათა თქვენ შეძლოთ უსაფრთხოდ შეიტანოთ ცვლილებები გვერდებზე: არა-ASCII ნიშნები რედაქტირების ფანჯარაში გამოჩნდება როგორც ჰექსადეციმალური კოდები.'''",
        "invalid-content-data": "დაუშვებელი მონაცემები",
        "content-not-allowed-here": "„$1“-ის შინაარსი დაუშვებელია [[$2]] გვერდზე",
        "editwarning-warning": "სხვა გვერდზე გადასვლამ შესაძლოა გამოიწვიოს ცვლილებების დაკარგვა.\nთუკი თქვენ დარეგისტრირებული ხართ სისტემაში, მაშინ შეგიძლიათ გამორთოთ ეს გაფრთხილება თქვენი კონფიგურაციის განყოფილებაში „{{int:prefs-editing}}“ .",
+       "editpage-invalidcontentmodel-title": "კონტენტის მოდელი არ არის მხარდაჭერილი",
+       "editpage-invalidcontentmodel-text": "კონტენტის მოდელი $1 არ არის მხარდაჭერილი.",
        "editpage-notsupportedcontentformat-title": "კონტენტის ფორმატი შეუსაბამოა.",
        "editpage-notsupportedcontentformat-text": "$1 შემცველობის ფორმატი არ არის მხარდაჭერილი $2 მოდელის შემცველობასთან",
        "content-model-wikitext": "ვიკიტექსტი",
        "content-json-empty-object": "ცარიელი ობიექტი",
        "content-json-empty-array": "ცარიელი ტაბლო",
        "deprecated-self-close-category": "გვერდები, რომლებიც იყენებენ არავალიდურ თვითდახურვად HTML ტეგებს",
+       "deprecated-self-close-category-desc": "გვერდი შეიცვას არასწორ თვითდახურვად HTML-ტეგებს, როგორიცაა<code>&lt;b/></code> ან <code>&lt;span/></code>. ამ ტეგების ქცევა სულ მალე შეიცვლება HTML5-ის სპეციფიკის გათვალისწინებით, ამიტომ მათი გამოყენება ვიკიტექსტში არ არის მიზანშეწონილი.",
        "duplicate-args-warning": "<strong>გაფრთხილება:</strong> [[:$1]] იძახებს [[:$2]]-ის \"$3\" პარამეტრის ერთზე მეტ მნიშვნელობას. აისახება მხოლოდ ბოლოს გამოყენებული მნიშვნელობა.",
        "duplicate-args-category": "გვერდები, რომლებიც იყენებენ დუბლიკატ არგუმენტებს თარგების გამოძახებისას",
        "duplicate-args-category-desc": "გვერდები, რომლებიც იყენებენ დუბლიკატ არგუმენტებს თარგების გამოძახებისას, როგორებიც არის <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> ან <code><nowiki>{{foo|bar|1=bar}}</nowiki></code>.",
        "post-expand-template-argument-warning": "'''ფრთხილად:''' ეს გვერდი შეიცავს თარგის მინიმუმ ერთ მნიშვნელობას, რომელიც ნამეტანად გრძელია გახსნისთვის.\nამგვარი მნიშვნელობები გამოიტოვება.",
        "post-expand-template-argument-category": "გვერდები, რომლებიც შეიცავენ თარგების გამოტოვებულ მნიშვნელობებს",
        "parser-template-loop-warning": "აღმოჩენილია ლუპი თარგ: [[$1]]-ში",
+       "template-loop-category": "გვერდები შაბლონური მარყუჟებით",
+       "template-loop-category-desc": "ეს გვერდი შეიცვას შაბლონურ მარყუჟს, ანუ შაბლონი რეკურსიულად იძახებს თავის თავს.",
        "parser-template-recursion-depth-warning": "თარგის რეკურსიის სიღრმე აემატება დაშვებულს ($1)",
        "language-converter-depth-warning": "ენათა გადამუშავების კონვერციის ლიმიტი ამოწურულია ($1)",
        "node-count-exceeded-category": "გვერდები, რომელშიც გადამეტებულია კვანძების რაოდენობა",
        "page_first": "პირველი",
        "page_last": "ბოლო",
        "histlegend": "ვერსიების შედარება: აირჩიეთ სასურველი ვერსიები რადიო-რგოლების მონიშვნით და დააწკაპუნეთ შედარების ღილაკზე.<br />\nლეგენდა: '''({{int:cur}})''' = სხვაობა მიმდინარე ვერსიასთან, '''({{int:last}})''' = სხვაობა წინა ვერსიასთან, '''{{int:minoreditletter}}''' = მცირე შესწორება.",
-       "history-fieldset-title": "á\83\93á\83\90á\83\97á\83\95á\83\90á\83\9aá\83\98á\83\94á\83 á\83\94á\83\91á\83\98á\83¡ á\83\98á\83¡á\83¢á\83\9dá\83 á\83\98ა",
-       "history-show-deleted": "მხოლოდ წაშლილი",
+       "history-fieldset-title": "á\83\95á\83\94á\83 á\83¡á\83\98á\83\94á\83\91á\83\98á\83¡ á\83«á\83\98á\83\94á\83\91ა",
+       "history-show-deleted": "მხოლოდ წაშლილი ვერსიები",
        "histfirst": "უძველესი",
        "histlast": "უახლესი",
        "historysize": "({{PLURAL:$1|$1 ბაიტი|$1 ბაიტი}})",
        "search-file-match": "(ემთხვევა ფაილის შინაარსს)",
        "search-suggest": "ხომ არ იგულისხმეთ: $1?",
        "search-rewritten": "ნაჩვენებია შედეგები $1-სთვის. ძებნა $2-ის ნაცვლად.",
-       "search-interwiki-caption": "á\83\93á\83\9dá\83\91á\83\98á\83\9aá\83\98 á\83\9eá\83 á\83\9dá\83\94á\83¥á\83¢á\83\94á\83\91á\83\98",
+       "search-interwiki-caption": "á\83¨á\83\94á\83\93á\83\94á\83\92á\83\94á\83\91á\83\98 á\83\93á\83\9dá\83\91á\83\98á\83\9aá\83\98 á\83\9eá\83 á\83\9dá\83\94á\83¥á\83¢á\83\94á\83\91á\83\98á\83\93á\83\90á\83\9c",
        "search-interwiki-default": "შედეგები $1-დან:",
        "search-interwiki-more": "(გაგრძელება)",
+       "search-interwiki-more-results": "მეტი შედეგი",
        "search-relatedarticle": "დაკავშირებული",
        "searchrelated": "მიბმული",
        "searchall": "ყველა",
        "search-external": "გარე ძიება",
        "searchdisabled": "{{SITENAME}}ში ძებნა გაუქმებულია. თქვენ შეგიძლიათ დროის შუალედით Google-ით ძებნა. მიაქციეთ ყურადღება, რომ {{SITENAME}}ში შესაძლებელია მათი ინდექსები აქტუალური არ არის.",
        "search-error": "ძიებისას მოხდა შეცდომა: $1",
+       "search-warning": "ძიებისას გაიცა გაფრხილება: $1",
        "preferences": "კონფიგურაცია",
        "mypreferences": "კონფიგურაცია",
        "prefs-edits": "რედაქციების რაოდენობა:",
        "prefs-help-recentchangescount": "შეიცავს ახალ შესწორებებს, გვერდების ისტორიებს, ჟურნალებს.",
        "prefs-help-watchlist-token2": "ეს არის საიდუმლო გასაღები თქვენი კონტროლის სიის ვებ-არხისთვის. ნებისმიერს, ვინც იცის ის, შეუძლია წაიკითხოს თქვენი კონტროლის სია, ამიტომ არ გაუზიაროთ იგი სხვებს. [[Special:ResetTokens|თქვენ შეგიძლიათ ჩამოყაროთ ის]].",
        "savedprefs": "თქვენ მიერ შერჩეული პარამეტრები დამახსოვრებულია.",
-       "savedrights": "á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\98á\83¡ {{GENDER:$1|$1}} á\83£á\83¤á\83\9aá\83\94á\83\91ები შენახულია",
+       "savedrights": "á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\98á\83¡ {{GENDER:$1|$1}} á\83¯á\83\92á\83£á\83¤ები შენახულია",
        "timezonelegend": "სასაათო სარტყელი:",
        "localtime": "ადგილობრივი დრო:",
        "timezoneuseserverdefault": "გამოიყენე ნაგულისხმევი პარამეტრები ($1)",
        "username": "{{GENDER:$1|მომხმარებლის სახელი}}:",
        "prefs-memberingroups": "{{PLURAL:$1|ჯგუფის|ჯგუფების}} {{GENDER:$2|წევრი}}:",
        "prefs-memberingroups-type": "$1",
-       "prefs-registration": "რეგისტრაციის თარიღი",
+       "group-membership-link-with-expiry": "$1 ($2-მდე)",
+       "prefs-registration": "რეგისტრაციის დრო:",
        "prefs-registration-date-time": "$1",
        "yourrealname": "ნამდვილი სახელი:",
        "yourlanguage": "ენა:",
        "prefs-help-prefershttps": "ამ კონფიგურაციის არჩევა შედეგს გამოიღებს შემდგომი ავტორიზაციის შედმეგ.",
        "prefswarning-warning": "თქვენ შეიტანეთ ცვლილება თქვენ პარამეტრებში, რომელიც ჯერ კიდევ არ არის შენახული. თუ თქვენ დატოვებთ ამ გვერდს და არ დააჭერთ \"$1\"-ს, პარამეტრები არ იქნება განახლებული.",
        "prefs-tabs-navigation-hint": "რჩევა: თქვენ შეგიძლიათ გამოიყენოთ ისრის კლავიშები მარცხნივ ან მარჯვნივ ჩანართებსა და ჩანართბის სიას შორის არსებული გადასვლებისათვის",
-       "userrights": "მომხმარებელთა უფლებების მართვა",
-       "userrights-lookup-user": "á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\94á\83\9aá\83\97á\83\90 á\83¯á\83\92á\83£á\83¤á\83\94á\83\91á\83\98á\83¡ á\83\9bá\83\90á\83 á\83\97ვა",
+       "userrights": "მომხმარებელთა უფლებები",
+       "userrights-lookup-user": "á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\98á\83¡ á\83\90á\83 á\83©á\83\94ვა",
        "userrights-user-editname": "შეიყვანეთ მომხმარებლის სახელი:",
-       "editusergroup": "{{GENDER:$1|მომხმარებელთა}} ჯგუფების რედაქტირება",
+       "editusergroup": "მომხმარებელთა ჯგუფების ჩატვირთვა",
        "editinguser": "უფლებების შეცვლა {{GENDER:$1|მომხმარებლისთვის}} <strong>[[User:$1|$1]]</strong> $2",
        "viewinguserrights": "{{GENDER:$1|მომხმარებლის}} უფლებების ხილვა <strong>[[User:$1|$1]]</strong> $2",
-       "userrights-editusergroup": "დაარედაქტირეთ მომხმარებელთა ჯგუფები",
+       "userrights-editusergroup": "{{GENDER:$1|მომხმარებელთა}} ჯგუფების რედაქტირება",
        "userrights-viewusergroup": "{{GENDER:$1|მომხმარებლის}} ჯგუფების ხილვა",
        "saveusergroups": "{{GENDER:$1|მომხმარებელთა}} ჯგუფების შენახვა",
        "userrights-groupsmember": "ჯგუფის წევრი:",
        "userrights-changeable-col": "ჯგუფები, რომლებიც შეგიძლიათ შეცვალოთ",
        "userrights-unchangeable-col": "ჯგუფები, რომლებიც არ შეგიძლიათ შეცვალოთ",
        "userrights-irreversible-marker": "$1*",
+       "userrights-expiry-current": "ვადის გასვლის თარიღია $1",
+       "userrights-expiry-none": "უვადოდ",
+       "userrights-expiry": "ვადა:",
+       "userrights-expiry-existing": "დასრულების დრო: $3, $2",
+       "userrights-expiry-othertime": "სხვა დრო:",
+       "userrights-expiry-options": "1 დღე:1 day,1 კვირა:1 week,1 თვე:1 month,3 თვე:3 months,6 თვე:6 months,1 წელი:1 year",
+       "userrights-invalid-expiry": "ვადის გასვლის თარიღი ჯგუფისთვის „$1“ არასწორია.",
+       "userrights-expiry-in-past": "ვადის გასვლის თარიღი ჯგუფისთვის „$1“ მითითებულია წარსულში.",
+       "userrights-cannot-shorten-expiry": "თქვენ ვერ გადაიტანთ უფრო ადრეულ თარიღზე წევრობის ამოწურვის ვადას ჯგუფში „$1“. ვადის უფრო ადრეულ თარიღზე გადაწევის უფლება აქვთ მხოლოდ იმ მომხმარებლებს, რომელთაც აქვთ ამ ჯგუფის დამატების და წაშლის უფლება.",
        "userrights-conflict": "მომხმარებელთა უფლებების კონფლიქტი! გთხოვთ ხელმეორედ შეინახოთ თქვენი ცვლილებები.",
        "group": "ჯგუფი:",
        "group-user": "მომხმარებლები",
        "grant-group-high-volume": "მაღალი სიხშირის მოქმედების შესრულება",
        "grant-group-customization": "კონფიგურაცია",
        "grant-group-administration": "ადმინისტრაციული მოქმედებების შესრულება",
+       "grant-group-private-information": "თქვენს პირად მონაცემებთან წვდომა",
        "grant-group-other": "სხვადასხვა ქმედებები",
        "grant-blockusers": "მომხმარებლების დაბლოკვა და ბლოკის მოხსნა",
        "grant-createaccount": "ანგარიშების შექმნა",
        "action-writeapi": "API-ს გამოყენება რედაქტირებისთვის",
        "action-delete": "ამ გვერდის წაშლა",
        "action-deleterevision": "გვერდის ამ ვერსიის წაშლა",
+       "action-deletelogentry": "ჩანაწერთა ჟურნალის წაშლა",
        "action-deletedhistory": "ამ გვერდის წაშლილი ისტორიის ხილვა",
+       "action-deletedtext": "წაშლილი ვერსიის ტექსტის ხილვა",
        "action-browsearchive": "წაშლილი გვერდების ძიება",
        "action-undelete": "ამ გვერდის აღდგენა",
-       "action-suppressrevision": "á\83\92á\83\95á\83\94á\83 á\83\93á\83\98á\83¡ á\83\90á\83\9b á\83\93á\83\90á\83¤á\83\90á\83 á\83£á\83\9aá\83\98 á\83\95á\83\94á\83 á\83¡á\83\98á\83\98á\83¡ á\83\9cá\83\90á\83®á\83\95á\83\90 á\83\93á\83\90 á\83\90á\83¦á\83\93á\83\92á\83\94á\83\9cá\83\90",
+       "action-suppressrevision": "გვერდის დაფარული ვერსიის ნახვა და აღდგენა",
        "action-suppressionlog": "ამ კერძო ჟურნალის ხილვა",
        "action-block": "ამ მომხმარებლისთვის რედაქტირების დაბლოკვა",
        "action-protect": "ამ გვერდის დაცვის დონის შეცვლა",
        "action-userrights-interwiki": "მომხმარებლების უფლებების შეცვლა სხვა ვიკიებში",
        "action-siteadmin": "მონაცემთა ბაზის დაბლოკვა და განბლოკვა",
        "action-sendemail": "ელ-ფოსტების გაგზავნა",
+       "action-editmyoptions": "თქვენი კონფიგურაციის რედაქტირება",
        "action-editmywatchlist": "თქვენი კონტროლის სიის რედაქტირება",
        "action-viewmywatchlist": "თქვენი კონტროლის სიის ხილვა",
        "action-viewmyprivateinfo": "თქვენი პირადი ინფორმაციის ხილვა",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (იხ. აგრეთვე [[Special:NewPages|ახალი გვერდების სია]])",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "ჩვენება",
+       "rcfilters-activefilters": "აქტიური ფილტრები",
+       "rcfilters-quickfilters": "სწრაფი ბმულები",
+       "rcfilters-quickfilters-placeholder-title": "შენახული ბმულები არ არის ჯერ",
+       "rcfilters-quickfilters-placeholder-description": "ფილტრის პარამეტრების შენახვისთვის და მოგვიანებით მათი გამოყენებისთვის, დააჭირეთ ჩანართის ხატულას აქტიური ფილტრის არეში, ქვემოთ.",
+       "rcfilters-savedqueries-defaultlabel": "შენახული ფილტრები",
+       "rcfilters-savedqueries-rename": "გადარქმევა",
+       "rcfilters-savedqueries-setdefault": "ნაგულისხმევად დამახსოვრება",
+       "rcfilters-savedqueries-unsetdefault": "ამოღება ნაგულისხმევიდან",
+       "rcfilters-savedqueries-remove": "წაშლა",
+       "rcfilters-savedqueries-new-name-label": "სახელი",
+       "rcfilters-savedqueries-apply-label": "სწრაფი ბმულის შექმნა",
+       "rcfilters-savedqueries-cancel-label": "გაუქმება",
+       "rcfilters-savedqueries-add-new-title": "ფილტრის შენახვა როგორც სწრაფი ბმული",
+       "rcfilters-restore-default-filters": "ნაგულისხმევი ფილტრების აღდგენა",
+       "rcfilters-clear-all-filters": "ყველა ფილტრის გაწმენდა",
+       "rcfilters-search-placeholder": "ფილტრის ბოლო ცვლილებები (დაათვალიერეთ ან დაიწყეთ შეყვანა)",
+       "rcfilters-invalid-filter": "არასწორი ფილტრი",
+       "rcfilters-empty-filter": "აქტიური ფილტრები არ არის. აისახება ყველა წვლილი.",
+       "rcfilters-filterlist-title": "ფილტრები",
+       "rcfilters-filterlist-whatsthis": "ეს რა არის?",
+       "rcfilters-filterlist-feedbacklink": "შეტყობინების დატოვება ახალი (ბეტა) ფილტრების შესახებ",
+       "rcfilters-highlightbutton-title": "შედეგების მონიშვნა",
        "rcfilters-highlightmenu-title": "ფერის არჩევა",
+       "rcfilters-highlightmenu-help": "აირჩიეთ ფერი, რათა მონიშნოთ ეს თვისება",
+       "rcfilters-filterlist-noresults": "ფილტრები ვერ მოძებნა",
+       "rcfilters-noresults-conflict": "შედეგი ვერ მოიძებნა ძიების კრიტერიუმების კონფლიქტის გამო",
+       "rcfilters-state-message-subset": "ამ ფილტრს არ აქვს ეფექტი, რადგან მისი შედეგები ჩართულია შემდეგ უფრო ფართო {{PLURAL:$2|ფილტრში|ფილტრებში}} (გარჩევისთვის სცადეთ მისი განათება): $1",
+       "rcfilters-state-message-fullcoverage": "ყველა ფილტრის არჩევა ჯგუფში იგივეა რაც არაფრის არჩევა, ამიტომ ამ ფილტრს არ აქვს არანაირი ეფექტი. ჯგუფი შეიცავს: $1",
+       "rcfilters-filtergroup-registration": "მომხმარებლის რეგისტრაცია",
+       "rcfilters-filter-registered-label": "რეგისტრირებულები",
+       "rcfilters-filter-registered-description": "შესული რედაქტორები.",
+       "rcfilters-filter-unregistered-label": "არარეგისტრირებულები",
+       "rcfilters-filter-unregistered-description": "რედაქტორები, რომლებიც არ შესულან სისტემაში.",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "ეს ფილტრი კონფლიქტშია გამოცდილების შემდეგ {{PLURAL:$2|ფილტრთან|ფილტრებთან}}, {{PLURAL:$2|რომელიც ეძებს|რომლებიც ეძებენ}} მხოლოდ რეგისტრირებულ მომხმარებლებს: $1",
+       "rcfilters-filtergroup-authorship": "ავტორობის წვლილი",
+       "rcfilters-filter-editsbyself-label": "თქვენი საკუთარი ცვლილებები",
+       "rcfilters-filter-editsbyself-description": "თქვენი წვლილი.",
+       "rcfilters-filter-editsbyother-label": "სხვა მომხმარებლების ცვლილებები",
+       "rcfilters-filter-editsbyother-description": "ყველა ცვლილება, გარდა საკუთარისა.",
+       "rcfilters-filtergroup-userExpLevel": "გამოცდილების დონე (მხოლოდ დარეგისტრირებული მომხმარებლებისათვის)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "გამოცდილების ფილტრები ეძებენ მხოლოდ რეგისტრირებულ მომხმარებლებს, ამიტომ ეს ფილტრი კონფლიქტშია „დაურეგისტრირებელთა“ ფილტრთან.",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "„დაურეგისტრირებელთა“ ფილტრი კონფლიქტშია ერთ ან რამდენიმე გამოცდილების ფილტრთან, რომელიც ეძებს მხოლოდ რეგისტრირებულ მომხმარებლებს. კონფლიქტური ფილტრები აღნიშნულია აქტიური ფილტრების არეში, ზემოთ.",
+       "rcfilters-filter-user-experience-level-newcomer-label": "ახალბედები",
+       "rcfilters-filter-user-experience-level-newcomer-description": "10-ზე ნაკლები ცვლილება და აქტიურობის 4 დღე.",
+       "rcfilters-filter-user-experience-level-learner-label": "მოსწავლეები",
+       "rcfilters-filter-user-experience-level-learner-description": "მეტი რედაქტირება, ვიდრე „ახალბედებს“, მაგრამ ნაკლები, ვიდრე „გამოცდილ მომხმარებლებს“.",
+       "rcfilters-filter-user-experience-level-experienced-label": "გამოცდილი მომხმარებლები",
+       "rcfilters-filter-user-experience-level-experienced-description": "30 დღეზე მეტი აქტიურობა და 500 რედაქტირება.",
+       "rcfilters-filtergroup-automated": "ავტომატიზირებული წვლილი",
+       "rcfilters-filter-bots-label": "ბოტი",
+       "rcfilters-filter-bots-description": "ავტომატიზირებული ხელსაწყოებით შესრულებული რედაქტირებები.",
+       "rcfilters-filter-humans-label": "რედაქტორი (არა ბოტით)",
+       "rcfilters-filter-humans-description": "რედაქტორების მიერ შესრულებული რედაქტირებები.",
+       "rcfilters-filtergroup-reviewstatus": "შემოწმების სტატუსი",
+       "rcfilters-filter-patrolled-label": "პატრულირებულია",
+       "rcfilters-filter-patrolled-description": "ცვლილებები მონიშნულია მატრულირებულად.",
+       "rcfilters-filter-unpatrolled-label": "გაუპატრულირებული",
+       "rcfilters-filter-unpatrolled-description": "ცვლილებები არ არის მონიშნული პატრულირებულად",
+       "rcfilters-filtergroup-significance": "მნიშვნელობა",
+       "rcfilters-filter-minor-label": "მცირე რედაქტირებები",
+       "rcfilters-filter-minor-description": "რედაქტირებები, რომლებიც ავტორმა მონიშნა როგორც მცირე.",
+       "rcfilters-filter-major-label": "ჩვეულებრივი რედაქტირებები",
+       "rcfilters-filter-major-description": "რედაქტირებები არ არის აღნიშნული როგორც მცირე.",
+       "rcfilters-filtergroup-watchlist": "გვერდები კონტროლის სიიდან",
+       "rcfilters-filter-watchlist-watched-label": "კონტროლის სიაშია",
+       "rcfilters-filter-watchlist-watched-description": "კონტროლის სიაში მყოფი გვერდების ცვლილებები",
+       "rcfilters-filter-watchlist-watchednew-label": "ახალი ცვლილებები კონტროლის სიაში",
+       "rcfilters-filter-watchlist-watchednew-description": "კონტროლის სიის გვერდების ცვლილებები, რომლებიც თქვენ არ გინახავთ მათი განხორცილებიდან.",
+       "rcfilters-filter-watchlist-notwatched-label": "არ არის კონტროლის სიაში",
+       "rcfilters-filter-watchlist-notwatched-description": "ყველაფერი, კონტროლის სიის გვერდების ცვლილებების გარდა.",
+       "rcfilters-filtergroup-changetype": "ცვლილების ტიპი",
+       "rcfilters-filter-pageedits-label": "რედაქტირებების გვერდი",
+       "rcfilters-filter-pageedits-description": "ვიკის კონტენტის რედაქტირებები, დისკუსიები, კატეგორიის აღწერები...",
+       "rcfilters-filter-newpages-label": "გვერდის შექმნა",
+       "rcfilters-filter-newpages-description": "რედაქტირებები, რომლებიც ქმნიან ახალ გვერდებს.",
+       "rcfilters-filter-categorization-label": "კატეგორიის ცვლილებები",
+       "rcfilters-filter-categorization-description": "კატეგორიიდან დამატებული ან წაშლილი გვერდების ჩანაწერები.",
+       "rcfilters-filter-logactions-label": "პროტოკოლირებული ქმედებები",
+       "rcfilters-filter-logactions-description": "ადმინისტრაციული ქმედებები, ანგარიშების შექმნა, წაშლილი გვერდები, ატვირთვები...",
        "rcnotefrom": "ქვემოთ {{PLURAL:$5|ნაჩვენებია ცვლილება|ნაჩვენებია ცვლილებები}} <strong>$3, $4</strong>-დან (ნაჩვენებია არაუმეტეს <strong>$1</strong>).",
        "rclistfrom": "ახალი ცვლილებების ჩვენება დაწყებული $3 $2-დან",
        "rcshowhideminor": "მცირე რედაქტირების $1",
        "rcshowhidecategorization": "გვერდის კატეგორიზაციის $1",
        "rcshowhidecategorization-show": "ჩვენება",
        "rcshowhidecategorization-hide": "დამალვა",
-       "rclinks": "ბოლო $1 ცვლილების ჩვენება უკანასკნელი $2 დღის მანძილზე<br />$3",
+       "rclinks": "ბოლო $1 ცვლილების ჩვენება უკანასკნელი $2 დღის მანძილზე",
        "diff": "განსხ.",
        "hist": "ისტ.",
        "hide": "დამალვა",
        "upload-dialog-disabled": "ფაილის ატვირთვა ამ დიალოგური ფანჯრით გათიშულია ამ ვიკიზე.",
        "upload-dialog-title": "ფაილის ატვირთვა",
        "upload-dialog-button-cancel": "გაუქმება",
+       "upload-dialog-button-back": "უკან",
        "upload-dialog-button-done": "შესრულდა",
        "upload-dialog-button-save": "შენახვა",
        "upload-dialog-button-upload": "ატვირთვა",
        "apisandbox-results-fixtoken-fail": "ვერ მოხერხდა $1 ტოკენის მოძიება.",
        "apisandbox-alert-page": "ველები ამ გვერდზე არ არის ვალიდური",
        "apisandbox-alert-field": "ამ ველის მნიშვნელობა არ არის ვალიდური",
+       "apisandbox-continue": "გაგრძელება",
+       "apisandbox-continue-clear": "გასუფთავება",
+       "apisandbox-multivalue-all-namespaces": "$1 (ყველა სახელთა სივრცე)",
+       "apisandbox-multivalue-all-values": "$1 (ყველა მნიშვნელობა)",
        "booksources": "წიგნის წყაროები",
        "booksources-search-legend": "წიგნის წყაროს ძებნა",
        "booksources-isbn": "ISBN:",
        "enotif_body_intro_restored": "$PAGEEDITDATE {{gender:$2|მომხმარებელმა}} $2 აღადგინა გვერდი პროექტიდან „{{SITENAME}}“ სახელწოდებით „$1“, მიმდინარე ვერსია იხილიეთ ბმულზე: $3",
        "enotif_body_intro_changed": "$PAGEEDITDATE {{gender:$2|მომხმარებელმა}} $2 შეცვალა გვერდი პროექტიდან „{{SITENAME}}“ სახელწოდებით „$1“, მიმდინარე ვერსია იხილიეთ ბმულზე: $3",
        "enotif_lastvisited": "იხ. $1 ყველა ცვლილებისთვის თქვენი ბოლო შემოსვლის შემდეგ.",
-       "enotif_lastdiff": "á\83\98á\83®á\83\98á\83\9aá\83\94á\83\97 $1 á\83\90á\83\9b á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\98á\83¡ á\83¡á\83\90á\83\9cá\83\90á\83®á\83\90á\83\95á\83\90á\83\93.",
+       "enotif_lastdiff": "á\83\90á\83\9b á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\98á\83¡ á\83¡á\83\90á\83\9cá\83\90á\83®á\83\90á\83\95á\83\90á\83\93, á\83\98á\83®á\83\98á\83\9aá\83\94á\83\97 $1.",
        "enotif_anon_editor": "ანონიმური მომხმარებელი $1",
        "enotif_body": "ძვირფასო $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nცვლილების მოკლე აღწერა: $PAGESUMMARY $PAGEMINOREDIT\n\nდაუკავშირდით რედაქტორს:\nელ.ფოსტა: $PAGEEDITOR_EMAIL\nვიკი: $PAGEEDITOR_WIKI\n\nშემდგომი ცვლილებების შესახებ შეტყობინებების მისაღებად ამ გვერდს კვლავ უნდა ესტუმროთ. თქვენ აგრეთვე შეგიძლიათ თქვენ კონტროლის სიაში გათიშოთ შეტყობინების ფუნქცია ყველა გვერდისათვის.\n\n\t\t\t {{SITENAME}} შეტყობინებათა სისტემა\n\n--\nშეტყობინების პარამეტრების ცვლილება\n{{canonicalurl:{{#special:Preferences}}}}\n\nთქვენი კონტროლის სიის პარამეტრების ცვლილება\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nგვერდების ამოშლა თქვენი კონტროლის სიიდან\n$UNWATCHURL\n\nდამატებითი ინფორმაცია\n$HELPPAGE",
        "created": "შექმნილია",
        "modifiedarticleprotection": "შეცვლილია დაცვის დონე გვერდისთვის „[[$1]]“",
        "unprotectedarticle": "„[[$1]]“-დან დაცვა მოხსნილია",
        "movedarticleprotection": "დაცვის პარამეტრების გადატანა გვერდიდან „[[$2]]“ გვერდზე „[[$1]]“",
+       "protectedarticle-comment": "მომხმარებელმა {{GENDER:$2|დაიცვა}} „[[$1]]“",
+       "modifiedarticleprotection-comment": "მომხმარებელმა {{GENDER:$2|შეცვალა დაცვის დონე}} „[[$1]]“-ზე",
+       "unprotectedarticle-comment": "მომხარებელმა {{GENDER:$2|მოხსნა დაცვა}} „[[$1]]“-დან",
        "protect-title": "დაცვის დონის შეცვლა გვერდისთვის „$1“",
        "protect-title-notallowed": "დაცვის დონის ხილვა გვერდისთვის „$1“",
        "prot_1movedto2": "[[$1]] გადატანილია გვერდზე [[$2]]",
        "sp-contributions-uploads": "ატვირთვები",
        "sp-contributions-logs": "ჟურნალები",
        "sp-contributions-talk": "განხილვა",
-       "sp-contributions-userrights": "á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\94á\83\9aá\83\97á\83\90 á\83£á\83¤á\83\9aá\83\94á\83\91á\83\94á\83\91á\83\98á\83¡ მართვა",
+       "sp-contributions-userrights": "á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\98á\83¡ {{GENDER:$1|á\83£á\83¤á\83\9aá\83\94á\83\91á\83\94á\83\91á\83\98á\83¡}} მართვა",
        "sp-contributions-blocked-notice": "ეს მომხმარებელი ამჟამად დაბლოკილია. ქვემოთ მოყვანილია ამონაწერი წაშლათა ჟურნალიდან:",
        "sp-contributions-blocked-notice-anon": "ეს მომხმარებელი ამჟამად დაბლოკილია.\nქვემოთ მოყვანილია ამონაწერი წაშლათა ჟურნალიდან:",
        "sp-contributions-search": "წვლილის ძიება",
        "unblocked-id": "ბლოკი $1 მოიხსნა",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] განიბლოკა.",
        "blocklist": "დაბლოკილი მომხმარებლები",
+       "autoblocklist": "ავტობლოკირება",
+       "autoblocklist-submit": "ძიება",
+       "autoblocklist-legend": "ავტობლოკირებების სია",
+       "autoblocklist-localblocks": "ადგილობრივი {{PLURAL:$1|ავტობლოკი|ავტობლოკირებები}}",
+       "autoblocklist-empty": "ავტობლოკირებების სია ცარიელია.",
+       "autoblocklist-otherblocks": "სხვა {{PLURAL:$1|ავტობლოკი|ავტობლოკირებები}}",
        "ipblocklist": "დაბლოკილი მომხმარებლები",
        "ipblocklist-legend": "დაბლოკილი მომხმარებლის პოვნა",
        "blocklist-userblocks": "დამალე ანგარიშის ბლოკირებები",
        "anonymous": "{{SITENAME}}-ის ანონიმური {{PLURAL:$1|მომხმარებელი|მომხმარებლები}}",
        "siteuser": "{{SITENAME}} მომხმარებელი $1",
        "anonuser": "{{SITENAME}} ანონიმური მომხმარებელი $1",
-       "lastmodifiedatby": "á\83\94á\83¡ á\83\92á\83\95á\83\94á\83 á\83\93á\83\98 á\83\91á\83\9dá\83\9aá\83\9dá\83¡ á\83¨á\83\94á\83\98á\83ªá\83\95á\83\90á\83\9aá\83\90 $2, $1  $3-á\83\98á\83\97.",
+       "lastmodifiedatby": "á\83\94á\83¡ á\83\92á\83\95á\83\94á\83 á\83\93á\83\98 á\83\91á\83\9dá\83\9aá\83\9dá\83¡ á\83\93á\83\90á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 á\83\93á\83\90: $2, $1  á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\94á\83\91á\83\98á\83¡ á\83\90á\83\95á\83¢á\83\9dá\83 á\83\98 â\80\94 $3.",
        "othercontribs": "$1-ს ნამუშევრის მიხედვით.",
        "others": "სხვები",
        "siteusers": "{{SITENAME}}-ის {{PLURAL:$2|{{GENDER:$1|მომხმარებელი}}|მომხმარებლები}} $1",
        "pageinfo-length": "გვერდის სიგრძე (ბაიტებში)",
        "pageinfo-article-id": "გვერდის ID",
        "pageinfo-language": "გვერდის შინაარსის ენა",
+       "pageinfo-language-change": "შეცვლა",
        "pageinfo-content-model": "გვერდის შინაარსის მოდელი",
+       "pageinfo-content-model-change": "შეცვლა",
        "pageinfo-robot-policy": "ინდექსაცია საძიებო რობოტებით",
        "pageinfo-robot-index": "დაშვებულია",
        "pageinfo-robot-noindex": "არ არის დაშვებული",
        "pageinfo-category-pages": "გვერდების რაოდენობა",
        "pageinfo-category-subcats": "ქვეკატეგორიების რაოდენობა",
        "pageinfo-category-files": "ფაილების რაოდენობა",
+       "pageinfo-user-id": "მომხმარებლის იდენტიფიკატორი",
        "markaspatrolleddiff": "მონიშნე როგორც პატრულირებული",
        "markaspatrolledtext": "მონიშნე ეს სტატია როგორც პატრულირებული",
        "markaspatrolledtext-file": "მონიშნეთ ამ ფაილის ვერსია, როგორც პატრულირებული",
        "patrol-log-header": "ეს არის პატრულირებულ ვერსიათა ჟურნალი.",
        "log-show-hide-patrol": "$1 პატრულირების ჟურნალი",
        "log-show-hide-tag": "$1 დასათაურების ჟურნალი",
+       "confirm-markpatrolled-button": "კარგი",
        "deletedrevision": "წაშლილია ძველი ვერსია $1.",
        "filedeleteerror-short": "შეცდომა ფაილის $1 წაშლისას",
        "filedeleteerror-long": "ფაილის წაშლისას წარმოიშვა შეცდომები:\n\n$1",
        "newimages-summary": "ეს სპეცგვერდი აჩვენებს ბოლო დროს ატვირთულ ფაილებს.",
        "newimages-legend": "ფილტრი",
        "newimages-label": "ფაილის (ან მისი სახელის) ნაწილი",
+       "newimages-user": "IP მისამართი ან მომხმარებლის სახელი",
        "newimages-showbots": "ბოტის ატვირთვების ჩვენება",
        "newimages-hidepatrolled": "დამალე შემოწმებული ატვირთვები",
        "noimages": "გადასახედი არაფერია.",
        "parentheses": "($1)",
        "brackets": "[$1]",
        "quotation-marks": "„$1“",
-       "imgmultipageprev": "&larr; წინა გვერდი",
-       "imgmultipagenext": "შემდეგი გვერდი &rarr;",
+       "imgmultipageprev": " წინა გვერდი",
+       "imgmultipagenext": "შემდეგი გვერდი ",
        "imgmultigo": "გადასვლა",
        "imgmultigoto": "გადასვლა გვერდზე $1",
        "img-lang-default": "(საწყისი ენა)",
        "htmlform-cloner-create": "მეტის დამატება",
        "htmlform-cloner-delete": "წაშლა",
        "htmlform-cloner-required": "აუცილებელია სულ მცირე ერთი მნიშვნელობა.",
+       "htmlform-date-placeholder": "წწწწ-თთ-დდ",
+       "htmlform-time-placeholder": "სთ:წთ:წმ",
+       "htmlform-datetime-placeholder": "წწწწ-თთ-დდ სთ:წთ:წმ",
        "htmlform-title-badnamespace": "[[:$1]] არ მდებარეობს \"{{ns:$2}}\"-ის სახელთა სივრცეში.",
        "htmlform-title-not-creatable": "$1\" არ არის მართებული გვერდის სათაური",
        "htmlform-title-not-exists": "$1 არ არსებობს.",
        "htmlform-user-not-valid": "<strong>$1</strong> არ არის სწორი მომხმარებლის სახელი.",
        "logentry-delete-delete": "მომხმარებელმა $1 {{GENDER:$2|წაშალა}} გვერდი: „$3“",
        "logentry-delete-delete_redir": "მომხმარებელმა $1 {{GENDER:$2|წაშალა}} გადამისამართება $3 გადაწერით",
-       "logentry-delete-restore": "მომხმარებელმა $1 {{GENDER:$2|აღადგინა}} გვერდი $3",
+       "logentry-delete-restore": "მომხმარებელმა $1 {{GENDER:$2|აღადგინა}} გვერდი $3 ($4)",
+       "logentry-delete-restore-nocount": "მომხმარებელმა $1 {{GENDER:$2|აღადგინა}} გვერდი $3",
+       "restore-count-revisions": "{{PLURAL:$1|1 ვერსია|$1 ვერსია}}",
+       "restore-count-files": "{{PLURAL:$1|1 ფაილი|$1 ფაილი}}",
        "logentry-delete-event": "მომხმარებელმა $1 {{GENDER:$2|შეცვალა}} {{PLURAL:$5|ჟურნალის ჩანაწერის|$5 ჟურნალის ჩანაწერების}} ხილვადობა $3-ზე: $4",
        "logentry-delete-revision": "მომხმარებელმა $1 {{GENDER:$2|შეცვალა}} {{PLURAL:$5|$5 ვერსიის|$5 ვერსიის}} ხილვადობა გვერდისათვის $3: $4",
        "logentry-delete-event-legacy": "მომხმარებელმა $1 {{GENDER:$2|შეცვალა}} ჩანაწერების ჟურნალის ხილვადობა $3-ზე",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|განაახლა}} დასათაურება $4 ვერსიასთან $3 გვერდთან ({{PLURAL:$7|დამატებული}} $6; {{PLURAL:$9|წაშლილი}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|განაახლა}} დასათაურება $5 ჟურნალის ჩანაწერთან $3 გვერდთან ({{PLURAL:$7|დამატებული}} $6; {{PLURAL:$9|წაშლილი}} $8)",
        "rightsnone": "(არცერთი)",
+       "rightslogentry-temporary-group": "$1 (დროებითი, $2-მდე)",
        "feedback-adding": "თქვენი შეფასების შენახვა...",
        "feedback-back": "უკან",
        "feedback-bugcheck": "კარგია! გთხოვთ, კიდევ ერთხელ შეამოწმეთ, ხომ არ არის აქ რომელიმე უკვე [$1 ნაცნობი შეცდომა].",
        "pagelang-language": "ენა",
        "pagelang-use-default": "საწყისი ენის გამოყენება",
        "pagelang-select-lang": "აირჩიეთ ენა",
+       "pagelang-reason": "მიზეზი",
        "pagelang-submit": "გაგზავნა",
+       "pagelang-nonexistent-page": "გვერდი $1 არ არსებობს.",
        "right-pagelang": "გვერდის ენის შეცვლა",
        "action-pagelang": "გვერდის ენის შეცვლა",
        "log-name-pagelang": "ენის ცვლილებების ჟურნალი",
        "special-characters-group-thai": "ტაილანდური",
        "special-characters-group-lao": "ლაოსური",
        "special-characters-group-khmer": "ქჰმერული",
+       "special-characters-group-canadianaboriginal": "კანადური აბორიგენული",
        "special-characters-title-endash": "ტირე",
        "special-characters-title-emdash": "გრძელი ტირე",
        "special-characters-title-minus": "მინუსის ნიშანი",
        "mw-widgets-dateinput-no-date": "თარიღი არ არის არჩეული",
        "mw-widgets-dateinput-placeholder-day": "წწწწ-თთ-დდ",
        "mw-widgets-dateinput-placeholder-month": "წწწწ-თთ",
+       "mw-widgets-mediasearch-input-placeholder": "მულტიმედიის ძიება",
        "mw-widgets-mediasearch-noresults": "შედეგები ვერ მოიძებნა.",
        "mw-widgets-titleinput-description-new-page": "გვერდი ჯერ არ არსებობს",
        "mw-widgets-titleinput-description-redirect": "გადამისამართება $1-ზე",
+       "mw-widgets-categoryselector-add-category-placeholder": "კატეგორიის დამატება...",
+       "mw-widgets-usersmultiselect-placeholder": "კიდევ დამატება...",
+       "date-range-from": "თარიღიდან:",
+       "date-range-to": "თარიღით:",
        "sessionmanager-tie": "შეუძლებელია მრავალი მოთხოვნის ავთენთიფიკაციის ტიპების გაერთიანება: $1.",
        "sessionprovider-generic": "$1 სესიები",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "cookie-სთან დაკავშირებული სესიები",
index 3397906..5378d3b 100644 (file)
        "yourdomainname": "Sizin' domen:",
        "login": "Kiriw",
        "nav-login-createaccount": "Kiriw / akkaunt jaratıw",
-       "userlogin": "Kiriw / akkaunt jaratıw",
        "logout": "Shıg'ıw",
        "userlogout": "Shıg'ıw",
        "notloggedin": "Kirilmegen",
-       "nologin": "Akkauntın'ız joqpa? '''$1'''.",
-       "nologinlink": "Akkaunt jaratın'",
        "createaccount": "Akkaunt jarat",
-       "gotaccount": "Akkauntın'ız barma? '''$1'''.",
-       "gotaccountlink": "Kir",
        "createaccountmail": "Waqtınshalıq parol jaratıw ha'm onı ko'rsetilgen e-mail adresin jiber",
        "badretype": "Siz kiritken parol tuwra kelmedi.",
        "userexists": "Kiritken paydalanıwshı atı ba'nt. \nİltimas, basqa at saylan'.",
        "anoneditwarning": "'''Esletpe:''' Siz kirmedin'iz. Sizin' IP adresin'iz usi bettin' o'zgeris tariyxında saqlanıp qaladı.",
        "missingsummary": "'''Esletpe:''' O'zgeristin' qısqasha mazmunın ko'rsetpedin'iz.\n\"Saqlaw\"dı ja'ne bassan'ız, o'zgerislerin'iz hesh qanday kommentariysiz saqlanadı.",
        "missingcommenttext": "Kommentariydi to'mende kiritin'.",
-       "missingcommentheader": "'''Eskertpe:''' Bul kommentariy ushın atama ko'rsetpedin'iz.\nEger ja'ne \"{{int:savearticle}}\" bassan'ız, o'zgerislerin'iz olsız saqlanadı.",
+       "missingcommentheader": "'''Eskertpe:''' Bul kommentariy ushın atama ko'rsetpedin'iz.\nEger ja'ne \"$1\" bassan'ız, o'zgerislerin'iz olsız saqlanadı.",
        "summary-preview": "Juwmag'ın ko'rip shıg'ıw:",
        "subject-preview": "Atamanı aldınnan qaraw:",
        "blockedtitle": "Paydalanıwshı bloklang'an",
        "prefs-resetpass": "Paroldi o'zgertiw",
        "saveprefs": "Saqla",
        "prefs-editing": "O'zgertiw",
-       "rows": "Qatarlar:",
-       "columns": "Bag'analar:",
        "searchresultshead": "İzlew",
        "recentchangesdays": "Aqırg'ı o'zgerislerde ko'rsetiletug'ın ku'nler:",
        "recentchangesdays-max": "(maksimum $1 {{PLURAL:$1|ku'n|ku'n}})",
        "userrights-groupsmember": "Ag'zalıq toparı:",
        "userrights-reason": "Sebep:",
        "userrights-nodatabase": "$1 mag'lıwmatlar bazası ele jaratılmag'an yamasa jergilikli emes.",
-       "userrights-nologin": "Paydalanıwshılar huquqların belgilew ushın administrator akkauntı menen [[Special:UserLogin|kiriwin'iz]] kerek.",
-       "userrights-notallowed": "Sizin' akkauntın'ızda paydalanıwshılardın' huquqın belgilew imka'niyatı joq.",
        "userrights-changeable-col": "O'zgerte alatug'ın toparların'ız",
        "userrights-unchangeable-col": "O'zgerte almaytug'ın toparların'ız",
        "group": "Topar:",
        "right-protect": "Qorg'aw da'relelerin o'zgertiw ha'm qorg'alg'an betlerdi o'zgertiw",
        "right-editprotected": "Qorg'alg'an betlerdi o'zgertiw (kaskadlı qorg'awsız)",
        "right-editinterface": "Paydalanıwshı interfeysin o'zgertiw",
-       "right-editusercssjs": "Basqa paydalanıwshılardın' CSS ha'm JS faylların o'zgertiw",
        "right-editusercss": "Basqa paydalanıwshılardın' CSS faylların o'zgertiw",
        "right-edituserjs": "Basqa paydalanıwshılardın' JS faylların o'zgertiw",
        "right-markbotedits": "Qaytarılg'an o'zgerislerdi botlardiki dep belgilew",
        "rcshowhideanons": "Anonim paydalanıwshılardı $1",
        "rcshowhidepatr": "Tekserilgen o'zgerislerdi $1",
        "rcshowhidemine": "O'zgertiwlerimdi $1",
-       "rclinks": "Aqırg'ı $2 ku'ndegi aqırg'ı $1 o'zgeristi ko'rset<br />$3",
+       "rclinks": "Aqırg'ı $2 ku'ndegi aqırg'ı $1 o'zgeristi ko'rset",
        "diff": "parq",
        "hist": "tar.",
        "hide": "jasır",
        "undeletebtn": "Qayta tiklew",
        "undeletelink": "ko'riw/qayta tiklew",
        "undeletecomment": "Sebep:",
-       "undeletedrevisions": "{{PLURAL:$1|1 nusqa|$1 nusqa}} qayta tiklendi",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 nusqa|$1 nusqa}} ha'm {{PLURAL:$2|1 fayl|$2 fayl}} qayta tiklendi",
-       "undeletedfiles": "{{PLURAL:$1|1 fayl|$1 fayl}} qayta tiklendi",
        "undelete-search-box": "O'shirilgen betlerdi izlew",
        "undelete-search-prefix": "Mınadan baslag'an betlerdi ko'rsetiw:",
        "undelete-search-submit": "İzle",
        "specialpages-group-users": "Paydalanıwshılar ha'm olardın' huqıqları",
        "revdelete-restricted": "administratorlarg'a qollanılg'an sheklewler",
        "revdelete-unrestricted": "administratorlardan alıp taslang'an sheklewler",
-       "rightsnone": "(hesh qanday)",
-       "revdelete-summary": "o'zgerislerdin' qısqasha mazmunı"
+       "rightsnone": "(hesh qanday)"
 }
index 3faa3a8..17a2ff5 100644 (file)
        "externaldberror": "Yella ugul aberrani n database neɣ ur tettalaseḍ ara ad tbeddleḍ isem an wemseqdac aberrani inek.",
        "login": "Kcem",
        "nav-login-createaccount": "Kcem / Xleq isem n wemseqdac",
-       "userlogin": "Kcem / Xleq isem n wemseqdac",
-       "userloginnocreate": "Qqen",
        "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 ?",
        "userlogin-resetpassword-link": "Ettuḍ awal n uɛaddi ?",
        "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-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-submit": "Snulfud amiḍan inek(m)",
        "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 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 :\n\n$2\n\n{{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.",
        "editingsection": "Abeddel n $1 (amur)",
        "editingcomment": "Abeddel n $1 (tigezmi tamaynut)",
        "editconflict": "Amennuɣ deg ubeddel: $1",
-       "explainconflict": "Amdan nniḍen ibeddel asebter-agi asmi telliḍ tettbeddileḍ.\nAḍris deg usawen yesɛa asebter am yella tura.\nIbeddlen inek ahaten deg ukessar.\nYesfek ad txelṭeḍ ibeddlen inek akk d usebter i yellan.\n'''Ala''' aḍris deg usawen i yettusmekta asmi twekkiḍ \"{{int:savearticle}}\".",
+       "explainconflict": "Amdan nniḍen ibeddel asebter-agi asmi telliḍ tettbeddileḍ.\nAḍris deg usawen yesɛa asebter am yella tura.\nIbeddlen inek ahaten deg ukessar.\nYesfek ad txelṭeḍ ibeddlen inek akk d usebter i yellan.\n'''Ala''' aḍris deg usawen i yettusmekta asmi twekkiḍ \"$1\".",
        "yourtext": "Aḍris inek",
        "storedversion": "Tasiwelt yettusmketen",
        "nonunicodebrowser": "'''AƔTAL: Browser/Explorateur inek ur yebil ara unicode. Nexdem akken ad tzemreḍ ad tbeddleḍ mebla amihi: isekkilin i mačči ASCII ttbanen deg tankult ubeddel s ungilen hexadecimal.'''",
        "saveprefs": "Smekti",
        "restoreprefs": "Err akkw iɣewwaren s lexṣas (deg akkw tigezmiwin)",
        "prefs-editing": "Abedddil",
-       "rows": "Ijerriḍen:",
-       "columns": "Tigejda:",
        "searchresultshead": "Anadi",
        "stub-threshold": "Talast timinegt i <a href=\"#\" class=\"stub\">izdayen ɣer ibegzan</a> (itamḍanen) :",
        "stub-threshold-disabled": "Yensa",
        "userrights-reason": "Ayɣer",
        "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": "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.",
        "group": "Adrum:",
        "group-user": "Iseqdacen",
        "group-autoconfirmed": "Iseqdacen i rgegen",
        "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-siteadmin": "Sekkweṛ naɣ kkes aseḍru i taffa n isefka",
        "right-override-export-depth": "Sifeḍ isebtar akkw d isebtar iqqenen alama tadrut n 5 iswiren",
        "right-sendemail": "Ceggaɛ tirawt i iseqdacen nniḍen",
-       "right-passwordreset": "Ẓeṛ tira n uwennez n awalen uɛaddi",
        "newuserlogpage": "Aɣmis n isnulfan n  imiḍanen n imseqdacen",
        "newuserlogpagetext": "Asebter agi yebeqqeḍ amezruy n usnulfu n imiḍanen n iseqdacen.",
        "rightslog": "Aɣmis n yizerfan n wemseqdac",
        "rcshowhideanons": "$1 n yimseqdacen udrigen",
        "rcshowhidepatr": "$1 n yibeddlen yettwassenqden",
        "rcshowhidemine": "$1 ibeddlen inu",
-       "rclinks": "Ssken $1 n yibeddlen ineggura di $2 n wussan ineggura<br />$3",
+       "rclinks": "Ssken $1 n yibeddlen ineggura di $2 n wussan ineggura",
        "diff": "amgirred",
        "hist": "Amezruy",
        "hide": "Ffer",
        "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 :\n$1",
        "undeletedpage": "'''Asebtar $1 yetwerr.'''\n\nZeṛ [[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.",
        "feedback-thanks": "Tanemmirt ! Awennit inek/inem yeffeɣ-d ɣef usebtar \"[$2 $1]\".",
        "searchsuggest-search": "Nadi",
        "searchsuggest-containing": "yesɛan...",
-       "api-error-badaccess-groups": "Ur tesɛiḍ ara turagt ad smireḍ ifuyla ɣef wiki agi.",
        "api-error-badtoken": "Tuccḍa tagensit : yir « tiddest ».",
-       "api-error-copyuploaddisabled": "Issenɣal seg URL nsan ɣef aqeddac agi.",
-       "api-error-duplicate": "{{PLURAL:$1|Yella yakan $2 afaylu nniḍen|Llan yakan $2 ifuyla nniḍen}} ɣef asmel agi s ugbur am winna.",
-       "api-error-duplicate-archive": "{{PLURAL:$1|Yella yakan afaylu nniḍen|Llan yakan ifuyla nniḍen}} ɣef asmel agi s ugbur am winna, maca {{PLURAL:$1|yetwekkes|tetwekksen}}.",
-       "api-error-empty-file": "Afaylu id ceggɛeḍ d-ilem.",
        "api-error-emptypage": "Asnulfu n isebtar ilemawen ur yareg ara.",
-       "api-error-fetchfileerror": "Tuccḍa tagensit : Yella kra ur yaɛeddan ara s luwqem deg tiririt n ufaylu.",
-       "api-error-fileexists-forbidden": "Afaylu s isem \"$1\" yella yakan, dɣa ur nezmer ara at n-mzey.",
-       "api-error-fileexists-shared-forbidden": "Afaylu s isem \"$1\" yella yakan deg ukaram n ifuyla yettwacerken, dɣa ur nezmer ara at n-mzey.",
-       "api-error-file-too-large": "Afaylu id cegɛed d-ameqqṛan aṭas.",
-       "api-error-filename-tooshort": "Isem n ufaylu d-awezzlan aṭas.",
-       "api-error-filetype-banned": "Tawsit agi n ufaylu d-tazanbagt.",
-       "api-error-filetype-banned-type": "''' « .$1 » '''mačči d {{PLURAL:$4|tawit n ufaylu yesɛan turagt|tiwsatin n ufaylu yesɛan turagt}}. \n{{PLURAL:$3|Tawit n ufaylu yesɛan turagt d-wagi :|Tiwsatin n ufaylu yesɛan turagt d-wigi :}} $2.",
-       "api-error-filetype-missing": "Asiɣzef n ufaylu agi ulac-it.",
-       "api-error-hookaborted": "Abeddel i ɛerdeḍ ad xedmeḍ yetweḥbes s tamdeyt n usiɣzef.",
-       "api-error-http": "Tuccḍa tagensit : ur yezmer ara ad yeqqen ar uqeddac.",
-       "api-error-illegal-filename": "Isem n ufaylu agi ur yeɣbel ara.",
-       "api-error-internal-error": "Tuccḍa tagensit : Yella kra ur yelḥa ara s luwqem deg usekker n taktert inek/inem ɣef wiki agi.",
-       "api-error-invalid-file-key": "Tuccḍa tagensit : ulac afaylu deg uḥraz akudan.",
-       "api-error-missingparam": "Tuccḍa tagensit : Xuṣṣen iɣewwaren deg tuttra inek/inem.",
-       "api-error-missingresult": "Tuccḍa tagensit : Ur nezmer ara ad n-ini ma anɣel yetwaxeddem.",
-       "api-error-mustbeloggedin": "Ilaq ad qqeneḍ iwakken ad zdemeḍ ifuyla.",
-       "api-error-mustbeposted": "Tuccḍa tagensit : Tuttra agi teḥwaǧ tarrayt HTTP POST.",
-       "api-error-noimageinfo": "Azdam yetwaxdam, maca aqeddac ur d-yefka ara tilɣa ɣef ufaylu.",
-       "api-error-nomodule": "Tuccḍa tagensit : Ulac azegrir n ussenɣel.",
-       "api-error-ok-but-empty": "Tuccḍa tagensit : Ulac tamrarut seg uqeddac.",
-       "api-error-overwrite": "Asefxes n ufaylu yellan ur yeɣbel ara.",
-       "api-error-stashfailed": "Tuccḍa tagensit : aqeddac ur yezmer ara ad yekles afaylu uɛḍil.",
        "api-error-publishfailed": "Tuccḍa tagensit : Aqeddac yexṣer imi yebɣa ad yessuffeɣ afaylu akudan.",
-       "api-error-stasherror": "Tella tuccḍa imi d-zdemeḍ afaylu iwakken ad yetweffer.",
-       "api-error-timeout": "Aqeddac ur d-yerra ara awal deg ukud yeḥeṛṛen.",
-       "api-error-unclassified": "Yefkad anezri warisem.",
-       "api-error-unknown-code": "Tuccḍa warisem : « $1 »",
-       "api-error-unknown-error": "Tuccḍa tagensit : Yella kra yexṣren deg ussenɣel n ufaylu inek.",
+       "api-error-stashfailed": "Tuccḍa tagensit : aqeddac ur yezmer ara ad yekles afaylu uɛḍil.",
        "api-error-unknown-warning": "Alɣu warisem : \"$1\".",
        "api-error-unknownerror": "Tuccḍa warisem : « $1 »",
-       "api-error-uploaddisabled": "Azdam yensa ɣef wiki agi.",
-       "api-error-verification-error": "Ahat afaylu agi yefsed, neɣ asiɣzef ines ur yeɣbel ara.",
        "duration-seconds": "$1 {{PLURAL:$1|tasint|tisinin}}",
        "duration-minutes": "$1 {{PLURAL:$1|tamrect|timercin}}",
        "duration-hours": "$1 {{PLURAL:$1|asrag|isragen}}",
index 9dd1e0d..58442f6 100644 (file)
        "externaldberror": "Щэуэгъуэ хъуа, аутентификациэ щекӀуэкӀым иэ апхуэдиз пӀалъэ уиӀу щыткъым, уи нэкугъуэ аккаунтыр зэпхъуэкӀын.",
        "login": "Системэм зыкъегъэцIыхуын",
        "nav-login-createaccount": "Ихьэн/щӀэуэ зитхэн",
-       "userlogin": "Ихьэн/зыхэтхэн",
-       "userloginnocreate": "Системэм зыкъегъэцӀыхуын",
        "logout": "ИкӀыжын",
        "userlogout": "ИкӀыжын",
        "notloggedin": "Системэм зэкъебгъэцӀыхуакъым",
-       "nologin": "Аккаунт щыӀэкъэ? '''$1'''.",
-       "nologinlink": "Аккаунт щІын",
        "createaccount": "Аккаун щӀэуэ щӀын",
-       "gotaccount": "Аккаунт щыӀу щыт?  '''$1'''.",
-       "gotaccountlink": "Системэм зыкъегъэцӀыху",
        "createaccountmail": "Электронэ почтэмкӀэ",
-       "createaccountreason": "Щхьэусыгъуэ:",
        "badretype": "Парол иптхахэр зэтеху щытхэкъым.",
        "userexists": "ЦыхухэтыцӀэ иптхар пэмыкӀ гуэрэм къегъэсэбэп.\nПэмыкӀ цӀэ къыхэх.",
        "loginerror": "Логиныр тэрэзкъым",
        "showdiff": "ЗэхъуэкӀыныгъэ хэлъхьахэр",
        "anoneditwarning": "'''Гу лъытэ!''': ЗыкъебгъэцӀыхуакъым системэм. Уи IP-адресыр иритхэнущ  напэкӀуэцӀым и зэхъуэкӀыныгъэ тхыдэм.",
        "anonpreviewwarning": "''Системэм зыкъебгъэцӀыхуакъым. Итхэным уи IP-адресыр къыринэну напэкӀуэцӀым и зэхъуэкӀыгъуэхэм я тхыдэм.''",
-       "missingsummary": "'''Гу лъытэ.''' ЗэхъуэкӀыгъуэм тепсэлъыхьыгъуэ кӀэщӀу ептакъым. ЕтӀуану «{{int:savearticle}}» тепкъузэмэ уи зэхъуэкӀыгъуэр тепсэлъыхьыншэу иритхэнущ.",
+       "missingsummary": "'''Гу лъытэ.''' ЗэхъуэкӀыгъуэм тепсэлъыхьыгъуэ кӀэщӀу ептакъым. ЕтӀуану «$1» тепкъузэмэ уи зэхъуэкӀыгъуэр тепсэлъыхьыншэу иритхэнущ.",
        "missingcommenttext": "ИщӀагъымкӀэ уи тхыгъэр итхэ.",
-       "missingcommentheader": "'''Гу лъытэ.''' Тепсэлъыхьыгъуэ къэбгъэнам псэлъащхьэ ептакъым.\nЕтӀуану «{{int:savearticle}}» тепкъузэмэ уи гъэтэрэзыгъуэр псэлъащхьэншу иритхэнущ.",
+       "missingcommentheader": "'''Гу лъытэ.''' Тепсэлъыхьыгъуэ къэбгъэнам псэлъащхьэ ептакъым.\nЕтӀуану «$1» тепкъузэмэ уи гъэтэрэзыгъуэр псэлъащхьэншу иритхэнущ.",
        "summary-preview": "Аннотациэр:",
        "subject-preview": "Псэлъащхьэ хъунур:",
        "blockedtitle": "ЦӀыхухэтыр теубыдащ",
        "editingsection": "Гъэтэрэзын $1 (секцэр)",
        "editingcomment": "Гъэтэрэзыгъуэ $1 (лъэныкъуэгъу/секциэ щӀэ)",
        "editconflict": "Редактированием зэпэщӀэуэныгъэ: $1",
-       "explainconflict": " Мы напэкӀуэцӀыр  редактировать пщӀыху , зыгуэрым зэхъуэкӀыныгъэ хилъхьащ.\nРедактированием и ищхьэ щхьэгъумбжэм щыболъагъу иджыпсту напэкӀуэцӀым ит текстыр.\nИщӀагъ щхьэгъумбжэм уэ пщӀа зэхъуэкӀыныгъэр итщ.\nУи зэхъуэкӀыныгъэхэр ищӀагъым къихи ищхьэ щхьэгъумбжэм хьы.\n«{{int:savearticle}} -м» щытепкъузэкӀэ ищхьэ щхьэгъумбжэм ит текстыр ихъумэнущ.",
+       "explainconflict": " Мы напэкӀуэцӀыр  редактировать пщӀыху , зыгуэрым зэхъуэкӀыныгъэ хилъхьащ.\nРедактированием и ищхьэ щхьэгъумбжэм щыболъагъу иджыпсту напэкӀуэцӀым ит текстыр.\nИщӀагъ щхьэгъумбжэм уэ пщӀа зэхъуэкӀыныгъэр итщ.\nУи зэхъуэкӀыныгъэхэр ищӀагъым къихи ищхьэ щхьэгъумбжэм хьы.\n«$1 -м» щытепкъузэкӀэ ищхьэ щхьэгъумбжэм ит текстыр ихъумэнущ.",
        "yourtext": "Уи текстыр",
        "storedversion": "Хъума щытыкӀэр",
        "nonunicodebrowser": "'''Хуэсакъ: Уи браузерым Йуникодыр къыштэкъым. Тхыгъэхэм я гъэтэрэзыгъуэм дежь мы ASCII щыту хъуа дэмыгъэхэр я кодкӀэ зэхъуэкӀауэ щытынухэ.'''",
        "rcshowhideliu": "ЦӀыхухэту, ихьахэр $1",
        "rcshowhideanons": "$1 анонимну",
        "rcshowhidemine": "$1 сгъэтэрэзахэр",
-       "rclinks": "ЗэхъуэкӀыгъуэхэр яужырейхэр $1 гъэлъэгъуэн $2 махуэ<br />$3",
+       "rclinks": "ЗэхъуэкӀыгъуэхэр яужырейхэр $1 гъэлъэгъуэн $2 махуэ",
        "diff": "зэмылI.",
        "hist": "тхыдэ",
        "hide": "ГъэпшкӀун",
        "version-specialpages": "Лэжыгъэ напэкӀуэцӀ",
        "specialpages": "СпецнапэкӀуэцӀхэр",
        "revdelete-restricted": "теубыдыгъуэхэр тхьэмадэхэм ятохуэ",
-       "revdelete-unrestricted": "теубыдыгъуэхэр тхьэмадэхэм ятеха",
-       "revdelete-summary": "зэхъуэкӀыгъуэхэм я тепсэлъыхьыгъуэ"
+       "revdelete-unrestricted": "теубыдыгъуэхэр тхьэмадэхэм ятеха"
 }
diff --git a/languages/i18n/kbp.json b/languages/i18n/kbp.json
new file mode 100644 (file)
index 0000000..e42fe51
--- /dev/null
@@ -0,0 +1,563 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Gnangbade",
+                       "Stephanecbisson"
+               ]
+       },
+       "tog-underline": "Kpasɩ kɩhɛsɩ",
+       "tog-hideminor": "Kendi ñɔɔzɩtʋ cekpetu wayɩ wayɩ ñɔɔzɩtʋ taa",
+       "tog-hidepatrolled": "Kendi ñɔɔzɩtʋ kiwilitu wayɩ wayɩ ñɔɔzɩtʋ taa",
+       "tog-newpageshidepatrolled": "Kendi takayɩhatʋ kiwilitu takayahatʋ kɩfatʋ lolaɣ taa",
+       "tog-hidecategorization": "Kendi takayɩhatʋ pɩlɩtʋ",
+       "tog-extendwatchlist": "Walanzɩ tɩŋʋʋ lolaɣ nɛ pɩsa pataaɖɩ ñɔɔzɩtʋ tɩŋa, pɛtɛkɛ wayɩ wayɩ ñɩndʋ ɖeke",
+       "tog-usenewrc": "Kpeɣli lɛzɩtʋ paa takayɩhayʋʋ ŋgʋ kɩ-yɔɔ wayɩ wayɩ ñɔɔzɩtʋ nɛ tɩŋʋʋ lolaɣ pa-taa.",
+       "tog-numberheadings": "Ma tɩ-yɔɔ ñʋʋ hɔɔlʋʋ hɩɖɛ",
+       "tog-showtoolbar": "Taaɖɩ ñɔɔzʋʋ wondu caŋa",
+       "tog-editondblclick": "Ñɔɔzɩ takayɩhatʋ nɛ nabʋlɛ ñɩɣʋ",
+       "tog-editsectiononrightclick": "Tɩɣ hɔɔlɩŋ ñɔɔzɩtʋ nɛ nɩwaŋ yɔɔ ñɩɣʋ hɔɔlɩŋ hɩla yɔɔ",
+       "tog-watchcreations": "Sɔzɩ man-tɩŋʋʋ lolaɣ yɔɔ takayɩhatʋ ndʋ malakɩ yɔ nɛ ndʋ mamʋʋ yɔ",
+       "tog-watchdefault": "Sɔzɩ man-tɩŋʋʋ lolaɣ yɔɔ takayɩhatʋ nɛ takayɛsɩ mba mɔñɔɔzʋʋ yɔ",
+       "tog-watchmoves": "Sɔzɩ takayɩhatʋ nɛ takayɛsɩ mba mɛnkɛzɩɣ yɔ man-tɩŋʋʋ lolaɣ taa",
+       "tog-watchdeletion": "Sɔzɩ man-tɩŋʋʋ lolaɣ yɔɔ takayɩhatʋ nɛ takayɛsɩ mba mahɩzɩɣ yɔ",
+       "tog-watchuploads": "Sɔzɩ takayɛsɩ kɩfasɩ nzɩ mamʋʋ yɔ man-tɩŋʋʋ lolaɣ yɔɔ",
+       "tog-watchrollback": "Sɔzɩ man-tɩŋʋʋ lolaɣ yɔɔ takayɩhatʋ ndʋ mɛnkpɛna ñɔɔzɩtʋ yɔ",
+       "tog-minordefault": "Ɛzɩ pɩtɩɩwɛʋ yɔ, ɖʋ ñɔɔzɩtʋ tɩŋa se tɩkɛ cekpetu",
+       "tog-previewontop": "Taaɖɩ mɔncɔnɩnɛpʋcɔ kɛ ñɔɔzɩtʋ wilaʋ ñʋʋ yɔɔ",
+       "tog-previewonfirst": "Taaɖɩ mɔncɔnɩnɛpʋcɔ kajalaɣ nɔɔzɩtʋ ɖeɖe",
+       "tog-enotifwatchlistpages": "Tukuna-m nɛ meeli yɔɔ yee pɔñɔɔza takayɩhayʋʋ nakʋyʋ yaa takayaɣ nakɛyɛ man-tɩnʋʋ lolaɣ taa yɔ",
+       "tog-enotifusertalkpages": "Tukuna-m nɛ meeli yɔɔ yee pɔñɔɔza mɔn-tɔnjɔlɩyɛ takayɩhayʋʋ yɔ",
+       "tog-enotifminoredits": "Tukuna-m nɛ meeli yɔɔ ɖɔɖɔ yee ñɔɔzɩtʋ cikpetu ɛwɛ takayɩhatʋ yaa takayɛsɩ pɔ-yɔɔ yɔ",
+       "tog-enotifrevealaddr": "Taaɖɩ mɛn-tɛ meeli ɖɩtɩlɩyɛ meeli ŋgʋ potukuna-m yɔ kɩ-taa",
+       "tog-shownumberswatching": "Taaɖɩ labɩnɩyaa mba pɔɖɔŋ labʋ yɔ pa-ñʋʋ",
+       "tog-oldsig": "Ñɛ-tɛ nɔnɔɔ nesi ñɩɣʋ",
+       "tog-fancysig": "Kpaɣ nesi ñɩɣʋ se pɩkɛ wikitext (kpasɩ tɩ-yɔɔ wɛʋ fɛyɩ)",
+       "tog-uselivepreview": "Labɩna ñatanaʋ kɛlɛʋ",
+       "tog-forceeditsummary": "Tukuna-m yee mantafasɩ ñɔɔzɩtʋ tɔm keem yɔ",
+       "tog-watchlisthideown": "Kendi tɩŋʋʋ lolaɣ taa ma-maɣmaɣ mɔ-ñɔɔzɩtʋ",
+       "tog-watchlisthidebots": "Kendi tɩŋʋʋ lolaɣ taa ñɔɔzɩtʋ ndʋ pijinɖe laba yɔ",
+       "tog-watchlisthideminor": "Kendi tɩŋʋʋ lolaɣ taa ñɔɔzɩtʋ cekpetu",
+       "tog-watchlisthideliu": "Kendi tɩŋʋʋ lolaɣ taa ñɔɔzɩtʋ ndʋ labɩnayaa mba pama pa-hila yɔ palaba yɔ",
+       "tog-watchlistreloadautomatically": "Ɖaɣnɩ hazʋʋ tɩ-yɔɔ tɩŋʋʋ lolaɣ yee pɔñɔɔzɩ catʋʋ lɩzɩtʋ yɔ (JavaScript wɛ kɩjɛyʋʋ)",
+       "tog-watchlisthideanons": "Kendi tɩŋʋʋ lolaɣ taa mɛɛsaɣ tɛɛ labɩnayaa ñɔɔzɩtʋ",
+       "tog-watchlisthidepatrolled": "Kendi tɩŋʋʋ lolaɣ taa ñɔɔzɩtʋ ndʋ patasa kalʋʋ yɔ",
+       "tog-watchlisthidecategorization": "Kendi takayɩhatʋ pɩlɩtʋ",
+       "tog-ccmeonemails": "Tiyina-m meeli ŋgʋ mentiyina labɩnayaa lalaa yɔ kɩ-lɛɛzʋʋ",
+       "tog-diffonly": "Taataaɖɩ mbʋ pɩwɛɛ takayɩhatʋ taa yɔ diffs tɛɛ",
+       "tog-showhiddencats": "Taaɖɩ pɩlɩŋ kɩmɛlɩŋ",
+       "tog-norollbackdiff": "Taataaɖi diff yee ŋtɛma natʋyʋ kpɛnaʋ lɛ",
+       "tog-useeditwarning": "Tukuna-m yee mancaɣ ɖɛʋ ñɔɔzɩtʋ takayɩhayʋʋ nakʋyʋ yɔɔ nɛ mɔntɔtɔsɩda-kʋ yɔ",
+       "tog-prefershttps": "Paa ɖooye ŋtamsɩɣna ña-tɩ lɛ, labɩna yɔɔ kandʋʋ tamsɩnaʋ",
+       "underline-always": "Paaɖooye",
+       "underline-never": "Kpoyi",
+       "underline-default": "Pɩtɩɩwɛʋ ñʋʋ yaa nɔmɔʋ hɛyʋʋ wazaɣ",
+       "editfont-style": "Ñɔɔzɩtʋ wilaʋ tɛ mayaɣ wɛtʋ",
+       "editfont-default": "Nɔmɔʋ hɛyʋʋ pɩtɩɩwɛʋ mayaɣ wɛtʋ",
+       "editfont-monospace": "Mayaɣ wɛtʋ walanzɩ maaciɣdiɣ",
+       "editfont-sansserif": "Patacana-m mayaɣ wɛtʋ",
+       "editfont-serif": "Pacana-m mayaɣ wɛtʋ",
+       "sunday": "Kujuka",
+       "monday": "Hodo",
+       "tuesday": "Piya",
+       "wednesday": "Cɩla",
+       "thursday": "Sarakawaɣ",
+       "friday": "Kimeɣa",
+       "saturday": "Mazaɣ",
+       "sun": "Kuj",
+       "mon": "Hod",
+       "tue": "Piy",
+       "wed": "Cɩl",
+       "thu": "Sar",
+       "fri": "Kim",
+       "sat": "Maz",
+       "january": "Kɔlaɣ fenaɣ",
+       "february": "Lɛlaɣ fenaɣ",
+       "march": "Lakɩŋ fenaɣ",
+       "april": "Ɖomaɣ fenaɣ",
+       "may_long": "Agoza fenaɣ",
+       "june": "Mɩsɩkʋm fenaɣ",
+       "july": "Hasɩyaɖɛ fenaɣ",
+       "august": "Kɩyɛɛna fenaɣ",
+       "september": "Salaŋ fenaɣ",
+       "october": "Aloma fenaɣ",
+       "november": "Kamɩŋ fenaɣ",
+       "december": "Saŋayɩŋ fenaɣ",
+       "january-gen": "Kɔlaɣ fenaɣ",
+       "february-gen": "Lɛlaɣ fenaɣ",
+       "march-gen": "Lakɩŋ fenaɣ",
+       "april-gen": "Ɖomaɣ fenaɣ",
+       "may-gen": "Agoza fenaɣ",
+       "june-gen": "Mɩsɩkʋm fenaɣ",
+       "july-gen": "Hasɩyaɖɛ fenaɣ",
+       "august-gen": "Keenaɣ fenaɣ",
+       "september-gen": "Salaŋ fenaɣ",
+       "october-gen": "Aloma fenaɣ",
+       "november-gen": "Kamɩŋ fenaɣ",
+       "december-gen": "Saŋayɩŋ fenaɣ",
+       "jan": "Kɔl",
+       "feb": "Lɛl",
+       "mar": "Lak",
+       "apr": "Ɖom",
+       "may": "Ago",
+       "jun": "Mɩs",
+       "jul": "Has",
+       "aug": "Kɩy",
+       "sep": "Sal",
+       "oct": "Alo",
+       "nov": "Kam",
+       "dec": "Saŋ",
+       "january-date": "Kolaɣ fenaɣ $1",
+       "february-date": "Lɛlaɣ fenaɣ $1",
+       "march-date": "Lakɩŋ fenaɣ $1",
+       "april-date": "Ɖomaɣ fenaɣ $1",
+       "may-date": "Agoza fenaɣ $1",
+       "june-date": "Mɩsɩkʋm fenaɣ $1",
+       "july-date": "Hasɩyaɖɛ fenaɣ $1",
+       "august-date": "Keenaɣ fenaɣ $1",
+       "september-date": "Salaŋ fenaɣ $1",
+       "october-date": "Aloma fenaɣ $1",
+       "november-date": "Kamɩŋ fenaɣ $1",
+       "december-date": "Saŋayɩŋ fenaɣ $1",
+       "period-am": "tanaŋ tɛɛ",
+       "period-pm": "ɖanaɣ",
+       "pagecategories": "{{PLURAL:$1|Pɩlɩʋ|Pɩlɩŋ}}",
+       "category_header": "Pɩlɩʋ \\ $1 \\ takayɩhatʋ",
+       "subcategories": "Pɩlɩŋ kɩtɛyɩŋ",
+       "category-media-header": "\\ $1 \\ pɩlɩʋ taa mediyaa",
+       "category-empty": "<em>Pɩlɩʋ kɩnɛ kɩ-taa fɛyɩ takayɩhayʋʋ nakʋyʋ yaa multimediya takayaɣ nakɛyɛ kɛ nɔnɔɔ</em>",
+       "hidden-categories": "{{PLURAL:$1|Pɩlɩʋ kɩmɛlʋʋ|Pɩlɩŋ kɩmɛlɩŋ}}",
+       "hidden-category-category": "Pɩlɩŋ kɩmɛsɩŋ",
+       "category-subcat-count": "{{PLURAL:$2|Pɩlɩʋ kʋnɛ kɩwɛna takayɩhayʋʋ kɩtɩŋʋʋ kʋnɛ ɖeke|{{PLURAL:$1|Takɩyɩhayʋʋ kɩtɩŋʋʋ kʋnɛ kɩ-wɛɛ|$1 Takayɩhatʋ kɩtɩŋɩtʋ tʋnɛ tɩ-wɛɛ}} pɩlɩʋ takayɩhatʋ $2 taa.}}",
+       "category-subcat-count-limited": "Pɩlɩʋ kʋnɛ kɩwɛna {{PLURAL:$1|pɩlɩʋ cikpeluu$1|pɩlɩŋ cikpeŋ}} kɩ-tɛɛ",
+       "category-article-count": "{{PLURAL:$2|Pɩlɩʋ kʋnɛ kɩwɛna pɩlɩʋ kɩtɛyʋʋ kʋnɛ ɖeke|{{PLURAL:$1|Pɩlɩʋ kʋnɛ kɩ-wɛɛ|$1 pɩlɩʋ kɩtɛyʋʋ tʋnɛ tɩ-wɛɛ}} pɩlɩʋ kɩtɛyʋʋ $2 taa.}}",
+       "category-article-count-limited": "{{PLURAL:$1|0=Takayɩhayʋʋ nakʋyʋ fɛyɩ|1=Takayɩhayʋʋ kɩtɩŋʋʋ wɛ|$1Takayɩhatʋ kɩtɩŋɩtʋ wɛ}} nɔnɔɔ pɩlɩʋ kʋnɛ kɩ-taa",
+       "category-file-count": "{{PLURAL:$2|Pɩlɩʋ kʋnɛ kɩwɛna takayaɣ kɩtɩŋaɣ ɖeke.|{{PLURAL:$1|Takayaɣ kɩtɩŋaɣ kʋɖʋmaɣ|Takayɛsɩ $1 kɩtɩŋasɩ}} wɛ pɩlɩʋ kʋnɛ kɩ-taa kagbanzɩ taa.}}",
+       "category-file-count-limited": "{{PLURAL:$1|0=Takayaɣ nakɛyɛ fɛyɩ|1=Takayaɣ kɩtɩŋaɣ wɛ|$1Takayɛsɩ kɩtɩŋasɩ wɛ}} nɔnɔɔ pɩlɩʋ kʋnɛ kɩ-taa",
+       "listingcontinuesabbrev": "(mbʋ pɩtɩŋɩɣ yɔ)",
+       "index-category": "Takayɩhatʋ kɩwɩlɩtʋ",
+       "noindex-category": "Takayɩhatʋ ndʋ patawɩlɩ yɔɔ",
+       "broken-file-category": "Takayɩhatʋ ndʋ tɩ-kpasɩ cɛba yɔ",
+       "about": "Pɩlɩɩna",
+       "article": "Takayɩhayʋʋ ŋgʋ kɩ-taa wɛ tɔm yɔ",
+       "newwindow": "Tʋlɩ mondoɖe kɩfaɖɛ taa",
+       "cancel": "Ɖɩzɩ",
+       "moredotdotdot": "Tasʋʋ…",
+       "morenotlisted": "Lolaɣ kanɛ kapɩzɩɣ kaatɛŋ",
+       "mypage": "Takayɩhayʋʋ",
+       "mytalk": "Ndɔncɔɔlɩyɛ",
+       "anontalk": "Ndɔnjɔɔlɩyɛ",
+       "navigation": "Tʋʋzɩtʋ",
+       "and": "&#32;nɛ",
+       "qbfind": "Ñɩnɩ",
+       "qbbrowse": "Kuli",
+       "qbedit": "Ñɔɔzɩ",
+       "qbpageoptions": "Takayɩhayʋʋ kʋnɛ",
+       "qbmyoptions": "Man-takayɩhatʋ",
+       "faq": "Tɔm pɔsɩtʋ kɩkpɛndɩtʋ",
+       "faqpage": "Project:Tɔmpɔsɩtʋ kɩkpɛndɩtʋ",
+       "actions": "Labɩtʋ",
+       "namespaces": "Hɩla loniye",
+       "variants": "Ndɩ ndɩ",
+       "navigation-heading": "Ɖiwoɖe tʋʋzʋʋ",
+       "errorpagetitle": "Wɛɛkʋʋ",
+       "returnto": "Pɩsɩ takayɩhayʋʋ $1 ñɩŋgʋ yɔɔ",
+       "tagline": "Pɩlɩɩna {{SITENAME}}",
+       "help": "Sɩnaʋ",
+       "search": "Ñɩnɩ",
+       "search-ignored-headings": "#<!-- yele caŋa ŋga ɛzɩ kɛwɛʋ yɔ --> <pre> \n# Hɔɔlɩŋ hɩla wena pakaɣ-yɛ ñɩnʋʋ yɔ \n# Lɛɛzɩtʋ ndʋ palaba cɩnɛ yɔ tɩpazɩɣ alɩwaatʋ ndʋ pawɩlɩ takayɩhayʋʋ hɩɖɛ yɔ \n# Ŋpɩzɩɣ ŋkpana ɖoŋ takayɩhayʋʋ tɛ tasʋʋ wɩlʋʋ yee ŋlakɩ kpɛɖɛ ñɔɔzʋʋ yɔ \n# Tɔm cɔlɩtʋ kɔyɔ : \n# * Paa caŋa ŋga payʋsa kɔ-yɔɔ « # » yɔ, kɛkɛ ndɔnjɔlɩyɛ caŋa \n# * Paa caŋa ŋga ka-taa wɛ nabʋyʋ yɔ, kɛkɛ ñʋʋ hɩɖɛ maɣmaɣ nɖɩ pɔsɔɔ ɖɩ-yɔɔ yɔ (Mayaɣ lɛɛzɩtʋ wɛ pɩ-taa).\nYɔɔ kɩtɔzɩtʋ \nAwayɩ kpasɩ\nCɔna ɖɔɖɔ\n#</pre> <!-- yele caŋa ŋga ɛzɩ kɛwɛʋ yɔ -->",
+       "searchbutton": "Ñɩnɩ",
+       "go": "Wili",
+       "searcharticle": "Kalɩ",
+       "history": "Takayɩhayʋʋ caanaʋ tɔm kɛdʋʋ",
+       "history_short": "Caanaʋ tɔm kɛdʋʋ",
+       "history_small": "caanaʋ tɔm kɛdʋʋ",
+       "updatedmarker": "pɔñɔɔza kpaɣ nɛ ɖooo ma-wayɩ wayɩ natʋ",
+       "printableversion": "Ñɔɔzɩtʋ kɩlɛɣzɩtʋ kɩlɩʋ lone",
+       "permalink": "Ɖɩtɩlɩyɛ caɣdam",
+       "print": "Lɩzɩ takayahayʋʋ kɩlɩʋ",
+       "view": "Cɔna",
+       "view-foreign": "Cɔna $1 yɔɔ",
+       "edit": "Ñɔɔzɩ",
+       "edit-local": "Ñɔɔzɩ kɛdɩtʋ kɩcɛyɩtʋ",
+       "create": "Lɩzɩ",
+       "create-local": "Sɔzɩ kɛdɩtʋ kɩcɛyɩtʋ",
+       "editthispage": "Ñɔɔzɩ takayɩhayʋʋ kʋnɛ",
+       "create-this-page": "Lɩzɩ takayɩhayʋʋ kʋnɛ",
+       "delete": "Hɩzɩ",
+       "deletethispage": "Hɩzɩ takayɩhayʋʋ kʋnɛ",
+       "undeletethispage": "Kitina takayɩhayʋʋ kɩhɩzʋʋ",
+       "undelete_short": "Kitina {{PLURAL:$1|ñɔɔzʋʋ|$1 ñɔɔzɩtʋ}}",
+       "viewdeleted_short": "Na {{PLURAL:$1|ñɔɔzʋʋ kɩhɩzʋʋ|$1 ñɔɔzɩtʋ kɩhɩzɩtʋ}}",
+       "protect": "Kandɩ",
+       "protect_change": "Lɛɣzɩ",
+       "protectthispage": "Kandɩ takayɩhayʋʋ kʋnɛ kɩ-yɔɔ",
+       "unprotect": "Lɛɣzɩ kandɩtʋ",
+       "unprotectthispage": "Lɛɣzɩ takayɩhayʋʋ kʋnɛ kɩ-yɔɔ kandɩtʋ",
+       "newpage": "Takayɩhayʋʋ kɩfalʋʋ",
+       "talkpage": "Takayɩhayʋʋ kʋnɛ kɩ-yɔɔ ndɔnjɔlɩyɛ",
+       "talkpagelinktext": "ndɔncɔɔlɩyɛ",
+       "specialpage": "Takayɩhayʋʋ ndɩ",
+       "personaltools": "Man-kɩlabɩnaʋ",
+       "articlepage": "Na takayɩhayʋʋ ŋgʋ kɩ-taa wɛ tɔm yɔ",
+       "talk": "Ndɔncɔɔlɩyɛ",
+       "views": "Taaɖɩtʋ",
+       "toolbox": "Kɩlabɩnaʋ",
+       "tool-link-userrights": "Lɛɣzɩ {{GENDER:$1|labɩnɩyaa}} tindima",
+       "tool-link-userrights-readonly": "Na {{GENDER:$1|labɩnɩyaa}} tindima",
+       "tool-link-emailuser": "Tiyina meeli kɛ labɩnayʋ",
+       "userpage": "Na labɩnayʋ takayɩhayʋʋ",
+       "projectpage": "Na tambaɣ takayɩhayʋʋ",
+       "imagepage": "Na takayaɣ takayɩhayʋʋ",
+       "mediawikipage": "Na tɔm kiyekitu takayɩhayʋʋ",
+       "templatepage": "Na kɩtɩzɩnaʋ takayɩhayʋʋ",
+       "viewhelppage": "Na sɩnaʋ takayɩhayʋʋ",
+       "categorypage": "Na pɩlɩʋ takayɩhayʋʋ",
+       "viewtalkpage": "Na ndɔnjɔlɩyɛ takayɩhayʋʋ",
+       "otherlanguages": "Kʋnʋmɩŋ lɛɛŋ",
+       "redirectedfrom": "(Papɩsɩna-kɛ nɛ ɖooo $1)",
+       "redirectpagesub": "Kɩpɩsɩnaʋ takayɩhayʋʋ",
+       "redirectto": "Pɩsɩna nɛ:",
+       "lastmodifiedat": "Takayahayʋʋ kɩfalʋ wayɩ wayɩ ñɩŋgʋ ñɔɔzɩtʋ $1 wiye, $2 yɔɔ.",
+       "viewcount": "{{PLURAL:$1|0=Petewila kaʋ|1=Pewila tam kʋɖʋm koŋ |Pewila tam $1}} takayɩhayʋʋ kʋnɛ kɩ-taa",
+       "protectedpage": "Takayɩhayʋʋ pakandɩ mɔ-yɔɔ",
+       "jumpto": "Wolo:",
+       "jumptonavigation": "tʋʋzɩtʋ",
+       "jumptosearch": "ñɩnɩ",
+       "view-pool-error": "Pɩtaacɛyɩ-ŋ, pɔɖɔkɩna ñɩɣyʋ lɩmɖʋyʋ ñɩŋʋ alɩwaatʋ tʋnɛ. \nLabɩnɩyaa mba pañɩnɩɣ se pewili takayɩhayʋʋ kʋnɛ kɩ-taa yɔ pakɩlɩ ɖɔʋ. \nƉaŋɩ pazɩ nɛ pʋcɔ ŋpɩzɩ ŋtasɩ takayɩhayʋʋ ŋgʋ kɩ-taa wiluu. $1",
+       "generic-pool-error": "Pɩtaacɛyɩ-ŋ, pɔɖɔkɩna ñɩɣyʋ lɩmɖʋyʋ ñɩŋʋ alɩwaatʋ tʋnɛ.\nLabɩnɩyaa mba pañɩnɩɣ se pewili kɩlabɩnaʋ kʋnɛ kɩ-taa yɔ pakɩlɩ ɖɔʋ. Ɖaŋɩ pazɩ nɛ pʋcɔ ŋpɩzɩ ŋtasɩ takayɩhayʋʋ ŋgʋ kɩ-taa wiluu.",
+       "pool-timeout": "Alɩwaatʋ ndʋ pɩwɛ se ŋkaɖɩ yɔ tɩɖɛwa",
+       "pool-queuefull": "Ɖɩsʋyɛ ñɩɣdaa",
+       "pool-errorunknown": "Yiɣduu mbʋ paasɩŋ yɔ",
+       "pool-servererror": "Pɔɖɔkɩna ɖɩcaɣyɛ tʋmɩyɛ ($1).",
+       "aboutsite": "pɩlɩɩna {{SITENAME}}",
+       "aboutpage": "Project:pɩlɩɩna",
+       "copyrightpage": "{{ns:project}}:Mayʋ waɖɛ",
+       "currentevents": "Sɔnɔ tɔm",
+       "currentevents-url": "Project:Sɔnɔ tɔm",
+       "disclaimers": "Paɣʋ",
+       "disclaimerpage": "Tɔm tɩŋa yɔɔ paɣʋ",
+       "edithelp": "Ñɔɔzɩtʋ sɩnaʋ",
+       "mainpage": "Talɩ ɖeu",
+       "mainpage-description": "Talɩ ɖeu",
+       "portal": "Ŋgbɛyɛ",
+       "portal-url": "Project:Talɩ ɖeu",
+       "privacy": "Mɛsaɣ tɛɛ tɔm ɖɔkʋʋ paɣtʋ",
+       "privacypage": "Project:Mɛsaɣ tɛɛ tɔm ɖɔkʋʋ",
+       "retrievedfrom": "Pɩɖaɣna mʋʋna \"$1\"",
+       "editsection": "ñɔɔzɩ",
+       "editold": "ñɔɔzɩ",
+       "editlink": "Ñɔɔzɩ",
+       "viewsourcelink": "Cɔna kide tɛɛ",
+       "editsectionhint": "Ñɔɔzɩ hɔɔlʋʋ : $1",
+       "toc": "Tɔm keem",
+       "site-atom-feed": "$1 tɛ Flukisi Atom",
+       "page-atom-feed": "$1 tɛ Flukisi Atom",
+       "red-link-title": "$1 (takayɩhayʋʋ mɛnfɛyɩ)",
+       "nstab-main": "Takayɩhayʋʋ",
+       "nstab-user": "Labɩnayʋ takayɩhayʋʋ",
+       "nstab-special": "Takayahayʋʋ ndɩ",
+       "nstab-project": "Pɩlɩɩna",
+       "nstab-image": "Takayaɣ",
+       "nstab-template": "Kɩtɩzɩnaʋ",
+       "nstab-category": "Pɩlɩʋ",
+       "mainpage-nstab": "Talɩ ɖeu",
+       "badtitle": "Hɩɖɛ kɩtɛkɛɖɩyɛ",
+       "badtitletext": "Takayɩhayʋʋ hɩɖɛ nɖɩ ŋñɩnaa yɔ, ɖɩtamʋna yaa ɖɩ-taa fɛyɩ pʋyʋ, yaa ɖɩ-kpayaɣ kʋnʋmɩŋ yaa wikinaa ndɩ ndɩ taa hɩɖɛ tacaɣ. Pɩtatɩlɩ, ɖɩwɛna mayaɣ yaa masɩ nzɩ paapɩzɩɣ pama-sɩ hɩla taa yɔ.",
+       "viewsource": "Cɔna tɔm kɩmatʋ kiɖe tɛɛ",
+       "userlogin-yourname": "Ña-labɩnayʋ hɩɖɛ",
+       "userlogin-yourname-ph": "Ma ña-labɩnayʋ hɩɖɛ",
+       "userlogin-yourpassword": "Tɔmbiye kɩtʋlɩyɛ",
+       "userlogin-yourpassword-ph": "Ma ñɔ-tɔmbiye kɩtʋlɩyɛ",
+       "createacct-yourpassword-ph": "Hɩɖɛ kɩsɛsɛyɛ naɖɩyɛ fɛyɩ",
+       "createacct-yourpasswordagain": "Cuuzi tɔmbiye kɩtʋlɩyɛ",
+       "createacct-yourpasswordagain-ph": "Tasɩ maʋ tɔmbiye kɩtʋlɩyɛ",
+       "userlogin-remembermypassword": "Ɖaŋɩ man-kpɩtɩnaʋ yɔɔ",
+       "login": "Kpɩtɩna",
+       "userlogin-noaccount": "Ŋfɛyɩna koozaɣ na ?",
+       "userlogin-joinproject": "Pɩsɩna {{SITENAME}} yɔɔ",
+       "createaccount": "Tʋlɩ koozaɣ",
+       "userlogin-resetpassword-link": "Ŋsɔ ñɔ-tɔmbiye kɩtʋlɩyɛ yɔɔ ?",
+       "userlogin-helplink2": "Kpɩtɩnaʋ sɩnaʋ",
+       "createacct-emailoptional": "Limɛlɩ ɖɩtɩlɩyɛ (pɩfɛyɩ kɩjɛyʋʋ)",
+       "createacct-email-ph": "Ma ñe-iimɛlɩ ɖɩtɩlɩyɛ",
+       "createacct-submit": "Lɩzɩ ño-koozaɣ",
+       "createacct-benefit-heading": "Ɛyaa ɛzɩ ña yɔ maɣna {{SITENAME}}",
+       "createacct-benefit-body1": "{{PLURAL:$1|ñɔɔzʋʋ|ñɔɔzɩtʋ}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|takayɩhayʋʋ|takayɩhatʋ}}",
+       "createacct-benefit-body3": "wayɩ wayɩ nesi {{PLURAL:$1|ɖʋyʋ|ɖuyaa}}",
+       "loginlanguagelabel": "Kʋnʋŋ : $1",
+       "pt-login": "Kpɩtɩna",
+       "pt-login-button": "Kpɩtɩna",
+       "pt-createaccount": "Tʋlɩ koozaɣ",
+       "pt-userlogout": "Cɛ kpɩtɩnaʋ",
+       "passwordreset": "Ɖaɣnɩ pɩsɩnaʋ tɔmbiye kɩtʋlɩyɛ kpɛɖɛ",
+       "bold_sample": "Mamaɖɛ tɔm kɩmamatʋ",
+       "bold_tip": "Mamaɖɛ tɔm kɩmamatʋ",
+       "italic_sample": "Tɔm kɩmamatʋ kɩwɛlɩtʋ",
+       "italic_tip": "Tɔm kɩmamatʋ kɩwɛlɩtʋ",
+       "link_sample": "Kpayaɣ hɩɖɛ",
+       "link_tip": "Pɩ-taa kpayaɣ",
+       "extlink_sample": "http://www.example.com kpayaɣ hɩɖɛ",
+       "extlink_tip": "Awayɩ kpayaɣ (taasɔɔ paɖʋpʋcɔ http://)",
+       "headline_sample": "Hɩɖɛ tɔm kɩmamatʋ",
+       "headline_tip": "Hɩɖɛ kɩtɛyɛ, kʋkʋyɩmɩŋ 2 ñɩŋgʋ",
+       "nowiki_sample": "Ma tɔm kɩmamatʋ ndʋ pɔtɔcɔlɩ-tʋ yɔ cɩnɛ",
+       "nowiki_tip": "Sɔɔ Wiki cɔlʋʋ yɔɔ",
+       "image_tip": "Takayaɣ kɩñɩɣdaɣ",
+       "media_tip": "Kpayaɣ mowoki takayaɣ mediyaa taa",
+       "sig_tip": "Ñe-nesi ñɩɣʋ nɛ sɔnɔ efemiye",
+       "hr_tip": "Caŋa kɩkaɣa (labɩna-kɛ ñɩɩɩ)",
+       "summary": "Tɔm keem",
+       "minoredit": "Pʋnɛ pɩkɛ ñɔɔzʋʋ cikpem",
+       "watchthis": "Tɩŋɩ takayɩhayʋʋ ŋgʋ",
+       "savearticle": "Tɔsɩ",
+       "showpreview": "Cɔna nɛ pʋcɔ",
+       "showdiff": "Cɔna ñɔɔzɩtʋ",
+       "anoneditwarning": "<strong>Kpaɣ ña-tɩ :</strong> Ŋtakpɩtɩna. Yee ŋñɔɔzaa natʋyʋ yɔ, paa anɩ ɛpɩzɩɣ ɛna ña-dɩtɩlɩyɛ IP. Yee <strong>[$1 ŋkpɩtɩna]</strong> yaa <strong>[$2 ŋtʋla koozaɣ]</strong> yɔ, pakaɣ cɛlʋʋ ñɔ-ñɔɔzɩtʋ ña-labɩnayʋ hɩɖɛ, kazɩsɩ ndɩ ndɩ lɛɛsɩ taa.",
+       "loginreqlink": "kpɩtɩna",
+       "newarticletext": "Ŋtɩŋa takayɩhayʋʋ mantatɩɩwɛda yɔɔ kpayaɣ. Pʋcɔ ŋpɩzɩ ŋlɩzɩ-kʋ lɛ, ma ñɔ-tɔm aɖakaɣ ŋga kɛwɛ pɩ-tɛɛ yɔ ka-taa (Ŋpɩzɩɣ ŋcɔna [$1 sɩnaʋ takayɩhayʋʋ] yɔɔ nɛ ŋtasɩ pɩ-taa nɩʋ ɖeu). Yee piyiɣdi-ŋ nɛ ŋtalɩ cɩnɛ yɔ, tukina tʋʋzɩtʋ kʋtɔŋ \"kɩpɩsʋʋ\" yɔɔ.",
+       "noarticletext": "Tɔm natʋyʋ tatɩɩwɛta takayɩhayʋʋ kʋnɛ kʋ-yɔɔ. Ɛlɛ, ŋpɩzɩɣ ŋñɩnɩ tɔm ndʋ takayɩhatʋ lɛɛtʋ yɔɔ, n<span class=\\\"plainlinks\\\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ñɩnɩ labɩtʋ kɩtamtʋ taa]\\nyaa [{{fullurl:{{FULLPAGENAME}}|action=edit}} lɩzɩ takayɩhayʋʋ kʋnɛ]</span>.\"",
+       "noarticletext-nopermission": "Tɔm natʋyʋ tatɩɩwɛta takayɩhayʋʋ kʋnɛ kʋ-yɔɔ.\\nŊpɩzɩɣ [[Special:Search/{{PAGENAME}}ŋñɩnɩ |tɔm hɩɖɛ nɖɩ]] takayɩhatʋ lɛɛtʋ taa,\\nya <span class=\\\"plainlinks\\\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} alɩwaatʋ loyisi nzɩ pɛkpɛnda yɔ sɩ-taa]</span>.\"\nTɩŋɩ Wiki yɔɔ wayɩ wayɩ ñɔɔzɩtʋ takayɩhayʋʋ kʋnɛ kʋ-yɔɔ.",
+       "editing": "$1 ñɔɔzɩtʋ",
+       "creating": "$1 lɩzɩtʋ",
+       "editingsection": "(hɔɔluʋ) $1 ñɔɔzɩtʋ",
+       "templatesused": "{{PLURAL:$1|Kɩtɩzɩnaʋ mbʋ|Kɩtɩzɩnatʋ ndʋ}} palabɩna takayɩhayʋʋ kʋnɛ yɔ :",
+       "template-protected": "(yɔɔ kandʋʋ)",
+       "template-semiprotected": "(pakanda hɔɔlʋʋ yɔɔ)",
+       "hiddencategories": "Takayɩhayʋʋ kʋnɛ kɩwɛ {{PLURAL:$1|pɩlɩʋ kɩmɛsʋʋ kʋnɛ kɩ-taa|pɩlɩŋ kɩmɛsɩŋ ɛnɛ ɛ-taa}} :",
+       "permissionserrorstext-withaction": "Ŋŋpɩzɩɣ ŋla $2, pʋnɛ pʋ-yɔɔ :",
+       "moveddeleted-notice": "Pahɩza takayɩhayʋʋ kʋnɛ. Pataaɖɩ hɩzʋʋ nɛ kɛzʋʋ pa-alɩwaatʋ lolaɣ pɩ-tɛɛ se ŋcɔna.",
+       "viewpagelogs": "Cɔna takayɩhayʋʋ kʋnɛ kɔ-yɔɔ kɩlabɩm",
+       "currentrev-asof": "Wayɩ wayɩ ñɔɔzɩtʋ (efemiye : $1)",
+       "revisionasof": "$1 wiye ñɔɔzɩtʋ kɩlɛɣzɩtʋ",
+       "revision-info": "{{GENDER:$6|$2}} ñɔɔzɩna $7",
+       "previousrevision": "‚Üê wayɩ wayɩ kpaagbaa ñɔɔzɩtʋ kɩlɛɣzɩtʋ",
+       "nextrevision": "Ñɔɔzɩtʋ kɩlɛɣzɩtʋ kɩtɩŋɩtʋ ‚Üí",
+       "currentrevisionlink": "Cɔna sɔnɔ ñɔɔzɩtʋ",
+       "cur": "lɛɛ",
+       "last": "pɩɖɛwa",
+       "rev-delundel": "taaɖɩ/huuzi",
+       "history-title": "Ñɔɔzɩtʋ kɩlɛɣzɩtʋ caanaʋ tɔm kɛdʋʋ",
+       "difference-title": "Ñɔɔzɩtʋ hɛkʋ taa tʋkaɣ",
+       "lineno": "Caŋa $1:",
+       "editundo": "Hɩzɩ",
+       "diff-multi-sameuser": "(Labɩnayʋ kʋɖʋm ɛnʋ ɛ-hɛkʋ taa {{PLURAL:$1|ñɔɔzʋʋ nabʋyʋ|$1 ñɔɔzɩtʋ natʋyʋ }} tataaɖɩ)",
+       "searchresults": "Ñɩnʋʋ naʋ",
+       "searchresults-title": "\"$1\" tɔm ñɩnʋʋ naʋ",
+       "prevn": "wayɩ ñɩnʋ| wayɩ ñɩmba| wayɩ ñɩŋʋ| wayɩ ñɩŋ| wayɩ ñɩŋa| wayɩ ñɩnzɩ|  wayɩ ñɩnɖɛ| wayɩ ñɩna | wayɩ ñɩndʋ | ñɩmbʋ",
+       "nextn": "kɩtɩŋʋ| kɩtɩŋaa| kɩtɩŋʋʋ| kɩtɩŋɩŋ| kɩtɩŋaɣ| kɩtɩŋasɩ| kɩtɩŋɩyɛ| kɩtɩŋa| kɩtɩŋɩtʋ| kɩtɩŋɩm",
+       "nextn-title": "$1 {{PLURAL:$1|ñɩnʋʋ naʋ kɩtɩnŋʋʋ|ñɩnʋʋ natʋ kɩtɩnŋɩtʋ}}",
+       "shown-title": "Taaɖɩ natʋ $1{{PLURAL:$1||s}} paa takayɩhayʋʋ ngʋ kʋ-yɔɔ",
+       "viewprevnext": "Cɔna ($1 {{int:pipe-separator}} $2) ($3)",
+       "searchmenu-new": "<strong>Lɩzɩ takayɩhayʋʋ \\‚ÄØ[[:$1|$1]]‚ÄØ\\\" Wiki kʋnɛ kɩ-yɔɔ‚ÄØ!</strong> {{PLURAL:$2|0=|Cɔna ɖɔɖɔ takayɩhayʋʋ kihihiu ña-ñɩnʋʋ taa|Cɔna ɖɔɖɔ takayɩhatʋ kihihitu ña-ñɩnʋʋ taa.}}",
+       "searchprofile-articles": "Takayɩhayʋʋ ŋgʋ kɩ-taa wɛ tɔm yɔ",
+       "searchprofile-images": "Multimediya",
+       "searchprofile-everything": "Pɩtɩŋa",
+       "searchprofile-advanced": "Ñɩnɩtʋ ndʋ ɖɩɖɛ ɛsɩndaa yɔ",
+       "searchprofile-articles-tooltip": "Ñɩnɩ $1 taa",
+       "searchprofile-images-tooltip": "Ñɩnɩ multimediya takayɛsɩ",
+       "searchprofile-everything-tooltip": "Ñɩnɩ wilau tɩŋa (pɩkpɛndɩna ndɔnjɔɔlɩyɛ takayɩhatʋ taa)",
+       "searchprofile-advanced-tooltip": "Lɩzɩ hɩla lona nɛ ŋñɩnɩ",
+       "search-result-size": "$1 ({{PLURAL:$2|1 tɔmbiye|$2 tɔmbe}})",
+       "search-redirect": "Pɩsɩna ɖooo $1",
+       "search-section": "(hɔɔlʋʋ $1)",
+       "search-suggest": "Maɣzɩ matʋ tʋnɛ nɛ ŋna:",
+       "searchall": "pɩtɩŋa",
+       "search-showingresults": "{{PLURAL:$4|Natʋ <strong>$1</strong><strong>$3 taa</strong>|Natʋ <strong>$1 powolo $2</strong><strong>$3 taa</strong>}}",
+       "search-nonefound": "Pañɩnaa patana pʋyʋ.",
+       "mypreferences": "Liu ñɩmbʋ",
+       "right-writeapi": "Labɩna wiki ñɔɔzɩtʋ API nɛ tʋmɩyɛ",
+       "newuserlogpage": "Labɩnayʋ koozasɩ alɩwaatʋ lolaɣ",
+       "enhancedrc-history": "caanaʋ tɔm kɛdʋʋ",
+       "recentchanges": "Wayɩ wayɩ ñɔɔzɩtʋ",
+       "recentchanges-legend": "Wayɩ wayɩ ñɔɔzɩtʋ ɖɩlɩzɩyɛ",
+       "recentchanges-summary": "KAPƖCA",
+       "recentchanges-label-newpage": "Ñɔɔzɩtʋ tʋnɛ tɩlɩzɩ takayɩhayʋʋ kɩfalʋʋ",
+       "recentchanges-label-minor": "Ñɔɔzɩtʋ tʋnɛ tɩkɛ cikpetu",
+       "recentchanges-label-bot": "Pɩjɩndɛ labɩna ñɔɔzɩtʋ tʋnɛ",
+       "recentchanges-label-unpatrolled": "Patatiiwilita ñɔɔzɩtʋ tʋnɛ tɩ-taa.",
+       "recentchanges-label-plusminus": "Takayɩhayʋʋ walanzɩ tatasɩ kɛʋ okteenaa ñʋʋ kʋnɛ",
+       "recentchanges-legend-heading": "<strong>Tɔm kitelitu :</strong>",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (Cɔna ɖɔɖɔ [[Special:NewPages|takayɩhatʋ kɩfatʋ lolaɣ]]).",
+       "rclistfrom": "Taaɖɩ ñɔɔzɩtʋ kɩfatʋ kpaɣna $3 wiye, ñɩɣtʋ $2 yɔɔ",
+       "rcshowhideminor": "Ñɔɔzɩtʋ cikpetu $1",
+       "rcshowhideminor-show": "Taaɖɩ",
+       "rcshowhideminor-hide": "Huuzi",
+       "rcshowhidebots": "Pɩjɩnla $1",
+       "rcshowhidebots-show": "Taaɖɩ",
+       "rcshowhidebots-hide": "Huuzi",
+       "rcshowhideliu": "Labɩnayaa kɩsɩmaa $1",
+       "rcshowhideliu-hide": "Huuzi",
+       "rcshowhideanons": "Mɛɛsaɣ tɛɛ labɩnayaa $1",
+       "rcshowhideanons-show": "Taaɖɩ",
+       "rcshowhideanons-hide": "Huuzi",
+       "rcshowhidemine": "Mɔ-ñɔɔzɩtʋ $1",
+       "rcshowhidemine-show": "Taaɖɩ",
+       "rcshowhidemine-hide": "Huuzi",
+       "rclinks": "Taaɖɩ wayɩ wayɩ ñɔɔzɩtʋ $1 ndʋ palaba wayɩ wayɩ kɩyakɩŋ $2 taa yɔ.",
+       "diff": "tʋk",
+       "hist": "can",
+       "hide": "Huuzi",
+       "show": "Taaɖɩ",
+       "minoreditletter": "ñc",
+       "newpageletter": "tk",
+       "boteditletter": "b",
+       "rc-change-size-new": "$1 {{PLURAL:$1|oktee|okteenaa}} ñɔɔzʋʋ wayɩ",
+       "recentchangeslinked": "Takayɩhatʋ ndʋ tɩtamsɩna kanɛ yɔ tɩ-tɩŋʋʋ",
+       "recentchangeslinked-toolbox": "Takayɩhatʋ ndʋ tɩtamsɩna kanɛ yɔ tɩ-tɩŋʋʋ",
+       "recentchangeslinked-title": "Takayɛsɩ nzɩ sɩkpɛndɩ \\ $1 \\ yɔɔ yɔ sɩ-tɩŋʋʋ",
+       "recentchangeslinked-summary": "Takayɩhayʋʋ ndɩ kʋnɛ kɩwɩlɩɣ wayɩ wayɩ ñɔɔzɩtʋ takayɩhatʋ ndʋ tɩtamsɩna ɖama yɔ tɩ-taa. Piyele nɛ ña-tɩŋʋʋ lolaɣ takayɩhatʋ lɛ, pataaɖɩ tʋtʋ nɛ mamaɖɛ mayaɣ.",
+       "recentchangeslinked-page": "Takayɩhayʋʋ hɩɖɛ:",
+       "recentchangeslinked-to": "Taaɖɩ takayɩhatʋ ñɔɔzɩtʋ ndʋ tɩwɛna kpayaɣ nɛ takayɩhayʋʋ kʋnɛ kɩ-yɔɔ kiŋ yɔ kɛnɛ",
+       "upload": "Tiyina poliŋ taa takayaɣ",
+       "filedesc": "Kɛdɩtʋ",
+       "license-header": "Labɩnaʋ paɣtʋ",
+       "imgfile": "Takayaɣ",
+       "file-anchor-link": "Takayaɣ",
+       "filehist": "Takayaɣ caanaʋ tɔm kɛdʋʋ",
+       "filehist-help": "Tukina efemiye nɛ ñɩɣtʋ nɛ ŋna takayaɣ kanɛ ɛzɩ kaawɛʋ alɩwaatʋ ndʋ tɩ-taa yɔ.",
+       "filehist-current": "lɛlɛɛyɔ",
+       "filehist-datetime": "Efemiye nɛ ñɩɣtʋ",
+       "filehist-thumb": "Tampɔɔ",
+       "filehist-thumbtext": "$1 ñɔɔzɩtʋ kɩlɛɣzɩtʋ tɛ tampɔɔ",
+       "filehist-user": "Labɩnayʋ",
+       "filehist-dimensions": "Walanzɩ",
+       "filehist-comment": "Tɔm taa nuutuu",
+       "imagelinks": "Takayaɣ labɩnaʋ",
+       "linkstoimage": "{{PLURAL:$1|Takayɩhayʋʋ kɩtɩŋʋʋ lakɩna|Takayɩhatʋ $1 kɩtɩŋɩtʋ lakɩna}} takayaɣ kanɛ tʋmɩyɛ :",
+       "nolinkstoimage": "Takayɩhayʋʋ nakʋyʋ tatamsɩna takayaɣ kanɛ.",
+       "sharedupload-desc-here": "Takayaɣ kanɛ kalɩna $1. Tamasɩ lɛɛsɩ pɩzɩɣ palabɩna-kɛ nɛ tʋmɩyɛ.\\nPataaɖɩ kɛ-kɛdʋʋ tɔm ka-[$2 takayɩhayʋʋ ngʋ kɩkɛdʋʋ kɔ-tɔm yɔ] nɛ pɩ-tɛɛ.",
+       "upload-disallowed-here": "Ŋŋpɩzɩɣ ŋlɛɣzɩ takayaɣ kanɛ",
+       "randompage": "Takayɩhayʋʋ nakʋyʋ yem",
+       "nbytes": "$1 {{PLURAL:$1|oktee|okteenaa}}",
+       "nmembers": "$1 {{PLURAL:$1|koobu|koobiya}}",
+       "newpages": "Takayɩhatʋ kɩfatʋ",
+       "pager-older-n": "{{PLURAL:$1|mankɩlɩ pɩnʋʋ|$1 mankɩlɩ pɩnʋʋ waas}}",
+       "booksources": "Kiɖe tɛɛ takayɛsɩ",
+       "booksources-search-legend": "Ñɩnɩ kiɖe tɛɛ takayɛsɩ taa",
+       "booksources-search": "Ñɩnɩ",
+       "log": "Labɩtʋ alɩwaatʋ loyisi",
+       "allarticles": "Takayɩhatʋ tɩŋa",
+       "allpagessubmit": "Lɩzɩ lolaɣ",
+       "categories": "Pɩlɩŋ lolaɣ",
+       "mywatchlist": "Tɩŋʋʋ lolaɣ",
+       "watch": "Tɩŋɩ",
+       "dellogpage": "Hɩzɩtʋ alɩwaatʋ lolaɣ",
+       "rollbacklink": "Pɩzɩ wayɩ wayɩ ñɔɔzɩtʋ yɔɔ",
+       "rollbacklinkcount": "pɩsɩna $1 {{PLURAL:$1|ñɔɔzʋʋ|ñɔɔzɩtʋ}}",
+       "protectlogpage": "Kandɩtʋ alɩwaatʋ lolaɣ",
+       "namespace": "Hɩla lona",
+       "invert": "Pɩsɩ kɩlɩzɩm",
+       "tooltip-invert": "Yʋsɩ tataɣ kanɛ nɛ ŋhuuzi takayɩhatʋ ñɔɔzɩtʋ yɔɔ hɩla loniye kɩlɩzɩyɛ taa nɛ hɩla loniye kɩkpɛndɩyɛ ɖɔɖɔ yɔɔ, yee ŋyʋsaa ɖɩ-yɔɔ kɔyɔ.",
+       "namespace_association": "Hɩla loniye kɩkpɛndɩyɛ",
+       "tooltip-namespace_association": "Yʋsɩ tataɣ kanɛ nɛ ŋɖʋ ɖɔɖɔ ndɔncɔɔlɩyɛ hɩla loniye nɖɩ ɖɩkpɛnda hɩla loniye kɩlɩzɩyɛ yɔ ɖɩ-taa",
+       "blanknamespace": "(Kajalaɣ)",
+       "contributions": "msgid \"{{GENDER:$1|labɩnayʋ}} tambaɣ\"",
+       "mycontris": "Tambaɣ",
+       "anoncontribs": "Tambaɣ",
+       "month": "Sɛɛna $1 fenaɣ nɛ ŋpɩsɩ",
+       "year": "Sɛɛna pɩnaɣ $1 nɛ ŋpɩsɩ",
+       "whatlinkshere": "Takayɩhatʋ kɩtamtʋ",
+       "whatlinkshere-title": "Takayɩhatʋ ndʋ tɩtamsɩna \\ $1 \\ yɔ",
+       "whatlinkshere-page": "Takayɩhayʋʋ :",
+       "linkshere": "Takayɩhatʋ ndʋ tɩwɛ pɩ-tɛɛ yɔ tɩwɛna kpasɩ <strong>[[:$1]]<strong> yɔɔ:",
+       "isredirect": "Kɩpɩsɩnaʋ takayɩhayʋʋ",
+       "istemplate": "tɛɣʋ",
+       "isimage": "takayaɣ yɔɔ kpayaɣ",
+       "whatlinkshere-prev": "{{PLURAL:$1|wayɩ|$1 wayɩ}}",
+       "whatlinkshere-next": "kɩtɩŋʋ| kɩtɩŋaa| kɩtɩŋʋʋ| kɩtɩŋɩŋ| kɩtɩŋaɣ| kɩtɩŋasɩ| kɩtɩŋɩyɛ| kɩtɩŋa| kɩtɩŋɩtʋ| kɩtɩŋɩm",
+       "whatlinkshere-links": "Üê kpasɩ",
+       "whatlinkshere-hideredirs": "$1 pɩsɩna",
+       "whatlinkshere-hidetrans": "$1 tɛɣtʋ",
+       "whatlinkshere-hidelinks": "$1 kpasɩ",
+       "whatlinkshere-filters": "Catasɩ",
+       "blocklink": "Ɖɩɣ",
+       "contribslink": "tambasɩ",
+       "movelogpage": "Kɛzɩtʋ alɩwaatʋ lolaɣ",
+       "export": "Wona takayɩhatʋ poliŋ taa",
+       "thumbnail-more": "Walasɩ",
+       "tooltip-pt-userpage": "Ña-labɩnayʋ takayɩhayʋʋ",
+       "tooltip-pt-mytalk": "Ñɔ-ndɔncɔɔlɩyɛ takayɩhayʋʋ",
+       "tooltip-pt-preferences": "Ñe-liu ñɩmbʋ",
+       "tooltip-pt-watchlist": "Takayɩhatʋ loyisi nzɩ ŋtɩŋɩɣ sɩ-ñɔɔzɩtʋ yɔ",
+       "tooltip-pt-mycontris": "Ña-tambaɣ lolaɣ",
+       "tooltip-pt-login": "Pɩwɛ ɖeu se patɩlɩ-ŋ, ɛlɛ, pɩtakɩlɩ kɩcɛyʋʋ.",
+       "tooltip-pt-logout": "Cɛ kpɩtɩnaʋ",
+       "tooltip-pt-createaccount": "Pɩwɛ ɖeu se ŋtʋlɩ koozaɣ nɛ ŋkpɩtɩna, ɛlɛ, pɩtakɩlɩ kɩcɛyʋʋ.",
+       "tooltip-ca-talk": "Ndɔncɔɔlɩyɛ pɩlɩnaa takayɩhayʋʋ ŋgʋ kɩ-taa wɛ tɔm yɔ kɔ-yɔɔ",
+       "tooltip-ca-edit": "Ñɔɔzɩ wikicode",
+       "tooltip-ca-addsection": "Pazɩ hɔɔlʋʋ kɩfalʋʋ",
+       "tooltip-ca-viewsource": "Pakanda takayɩhayʋ kʋnɛ.n\\Ɛlɛ, ŋpɩzɩɣ ŋna ki-kiɖe tɛɛ.",
+       "tooltip-ca-history": "Takayɩhatʋ tʋnɛ tɩ-wayɩ wayɩ ñɔɔzɩtʋ kɩlɛɣzɩtʋ kɩfatʋ (nɛ ti-nesi ɖʋyaa)",
+       "tooltip-ca-move": "Kɛzɩ takayɩhayʋʋ kʋnɛ loniye",
+       "tooltip-ca-watch": "Kpɛndɩ takayɩhayʋʋ kʋnɛ ña-tɩŋʋʋ lolaɣ yɔɔ",
+       "tooltip-search": "Ñɩnɩ {{SITENAME}} taa",
+       "tooltip-search-go": "Wolo takayɩhayʋʋ nɣʋ kɩ-yɔɔ wɛ hɩɖɛ nɖɩ ɖeyi ɖeyi yɔ, yee ɖɩwɛɛ lɛ.",
+       "tooltip-search-fulltext": "Ñɩnɩ takayɩhatʋ ndʋ tɩ-yɔɔ wɛ tɔm yɔ.",
+       "tooltip-p-logo": "Takayɩhayʋʋ kajalaɣ ñɩŋgaɣ",
+       "tooltip-n-mainpage": "Wili Talɩ Ɖeu takayɩhayʋʋ taa",
+       "tooltip-n-mainpage-description": "Wolo talɩ ɖeu ɖeɖe",
+       "tooltip-n-portal": "Pɩlɩɩna tambaɣ yɔɔ; mbʋ ŋpɩzɩɣ labʋ yɔ; ɖenɖe panaɣ kiheyitu yɔ",
+       "tooltip-n-currentevents": "Ñɩnɩ sɔnɔ tɔm nɛ ŋtazɩ tɩ-taa",
+       "tooltip-n-recentchanges": "Wiki yɔɔ wayɩ wayɩ ñɔɔzɩtʋ lolaɣ",
+       "tooltip-n-randompage": "Taaɖɩ takayɩhayʋʋ nakʋyʋ yem",
+       "tooltip-n-help": "Sɩnaʋ",
+       "tooltip-t-whatlinkshere": "Takayɩhatʋ lolaɣ nna katamsɩna kanɛ yɔ",
+       "tooltip-t-recentchangeslinked": "Takayɩhatʋ wayɩ wayɩ ñɔɔzɩtʋ lolaɣ ŋga katamsɩna kanɛ yɔ",
+       "tooltip-feed-atom": "Takayɩhayʋʋ ngʋ flukisi atom",
+       "tooltip-t-contributions": "Cɔna {{GENDER:$1|labɩnayʋ ɛnɛ} ɛ-tambaɣ loyaɣ}",
+       "tooltip-t-upload": "Tiyina poliŋ taa takayɛsɩ",
+       "tooltip-t-specialpages": "Takayɩhatʋ ndɩ ndɩ tɩŋa lolaɣ",
+       "tooltip-t-print": "Takayɩhayʋʋ kʋnɛ kɔ-ñɔɔzɩtʋ kɩlɛɣzɩtʋ kɩlɩʋ lone",
+       "tooltip-t-permalink": "Takayɩhayʋʋ ñɔɔzɩtʋ kɩlɛɣzɩtʋ tʋnɛ ɖɩtɩlɩyɛ caɣdam",
+       "tooltip-ca-nstab-main": "Cɔna takayɩhayʋʋ ŋgʋ kɩ-taa wɛ tɔm yɔ",
+       "tooltip-ca-nstab-user": "Cɔna labɩnayʋ takayɩhayʋʋ",
+       "tooltip-ca-nstab-special": "Kʋnɛ kɩkɛ takayɩhayʋʋ ndɩ, paapɩzɩɣ pɔñɔɔzɩ-kʋ.",
+       "tooltip-ca-nstab-project": "Cɔna tambaɣ takayɩhayʋʋ yɔɔ",
+       "tooltip-ca-nstab-image": "Cɔna takayaɣ taa takayɩhayʋʋ yɔɔ",
+       "tooltip-ca-nstab-template": "Cɔna kɩtɩzɩnaʋ",
+       "tooltip-ca-nstab-category": "Cɔna takayɩhayʋʋ pɩlɩʋ",
+       "tooltip-save": "Tɔsɩ ñɔ-ñɔɔzɩtʋ",
+       "tooltip-preview": "Cɔna ñɔ-ñɔɔzɩtʋ nɛ pʋcɔ ŋyele se paa weyi ɛtɩlɩ-tʋ",
+       "tooltip-diff": "Taaɖɩ ñɔɔzɩtʋ ndʋ ŋlaba tɔm kɩmamatʋ yɔɔ yɔ",
+       "tooltip-rollback": "\\\"Pɩsɩ wayɩ wayɩ ñɔɔzɩtʋ yɔɔ\\\" ɖɩzɩɣ tam kʋɖʋm taa takayɩhayʋʋ kʋnɛ kʋ-yɔɔ wayɩ wayɩ nesi ɖʋyʋʋ ñɔɔzɩtʋ.",
+       "tooltip-undo": "\\ Ɖɩzɩ \\ ɖaɣnɩɣ labʋ wayɩ ñɔɔzɩtʋ nɛ ŋtʋlɩ ñɔɔzʋʋ mondoɖe nɛ pʋwɛɛ ɛzɩ mɔncɔna nɛ pʋcɔ yɔ. Ŋpɩzɩɣ ŋsɔzɩ aseɣɖe naɖɩyɛ tɔm keem taa.",
+       "tooltip-summary": "Ma tɔm keem natʋyʋ",
+       "simpleantispam-label": "Spam lʋbɩnaʋ yɔɔ wiluu. \\nLa <strong>taala</strong> ma cɩnɛ!\"",
+       "pageinfo-toolboxlink": "Takayɩhayʋʋ yɔɔ kiheyitu",
+       "previousdiff": "Wayɩ ñɔɔzɩtʋ",
+       "nextdiff": "Ñʋʋzʋʋ kɩtɩŋɩm",
+       "file-info-size": "Kpaɣna pɩkɩsɛlɩ $1 nɛ pɩtalɩ $2 ñɩŋgʋ, takayaɣ walanzɩ : $3, MIME akɩlɩ : $4",
+       "file-nohires": "Tʋtʋ tʋnɛ tɩ-wayɩ fɛyɩ.",
+       "svg-long-desc": "SVG takayaɣ; tʋtʋ $1 pikiseli powolo patɩlɩ $2; walanzɩ : $3",
+       "show-big-image": "Kiɖe tɛɛ takayaɣ",
+       "show-big-image-preview": "Ñatanaʋ pʋnɛ pɩ-walanzɩ : $1.",
+       "show-big-image-other": "{{PLURAL:$2|Tʋtʋ lɛɛtʋ|Tʋtʋ lɛɛtʋ}} : $1.",
+       "show-big-image-size": "Kpaɣna pɩkɩsɛlɩ $1 nɛ pɩtalɩ $2 ñɩŋgʋ",
+       "metadata": "Mɛtadɔneewaa",
+       "metadata-help": "Takayaɣ kanɛ ka-taa wɛ kiheyitu ndʋ tɩtakɩlɩ wazaɣ yɔ. Pɩlaba, foto numeriki yaa sɩkanɛɛrɩ ngʋ palɩzɩna-kɛ yɔ sɔzɩna-tʋ. Yee pɔñɔɔza takayaɣ ɖooo ka-ɖɩlɩyɛ taa kɔyɔ, ka-taa tɔm tazʋʋ natʋyʋ pɩzɩɣ tɩtalɩɩ takayɩhayʋʋ kɩnɔ̃ɔzʋʋ tɩŋa.",
+       "metadata-fields": "Kɩlɛmɩŋ mɛtadɔneewaa hayɩm mbʋ pɔyɔɔda pɔ-tɔm tɔm kɩmamatʋ taa yɔɔ pakaɣ-pʋ kpɛndʋʋ takayahayʋʋ ŋgʋ kɩkɛdɩɣ kɩlɛmʋʋ tɔm yɔ kɩ-taa alɩwaatʋ ndʋ papasɩɣ mɛtadɔnee kpata yɔ. Pakaɣ huzuu hayɩm lɛɛbʋ yɔɔ nɛ pɩwɛɛ ɛzɩ pɩtɩɩwɛʋ yɔ. \\n* make\\n* model\\n* datetimeoriginal\\n* exposuretime\\n* fnumber\\n* isospeedratings\\n* focallength\\n* artist\\n* copyright\\n* imagedescription\\n* gpslatitude\\n* gpslongitude\\n* gpsaltitude\"",
+       "exif-orientation": "Kpilinaʋ",
+       "exif-xresolution": "Tʋtʋ kɩkaɣtʋ",
+       "exif-yresolution": "Tʋtʋ kitibitu",
+       "exif-datetime": "Ñɔɔzʋʋ efemiye",
+       "exif-make": "Ñɩɣyʋʋ laɖʋ",
+       "exif-model": "Ñɩɣyʋʋ wɛtʋ",
+       "exif-software": "Loozisɩyɛlɩ kɩlabɩnaʋ",
+       "exif-exifversion": "EXIF ñɔɔzɩtʋ kɩlɛɣzɩtʋ",
+       "exif-colorspace": "Tɩŋgaɣyʋʋ loniye",
+       "exif-datetimeoriginal": "Kajalaɣ foto kɩlɩzʋʋ tɛ efemiye nɛ ñɩɣtʋ",
+       "exif-datetimedigitized": "Kalɩyasɩ pɩsɩtʋ efemiye nɛ ñɩɣtʋ",
+       "exif-orientation-1": "Ɖeyi ɖeyi",
+       "namespacesall": "Pɩtɩŋa",
+       "monthsall": "pɩtɩŋa",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|ndɔncɔɔlɩyɛ]])",
+       "specialpages": "Takayɩhatʋ ndɩ",
+       "tag-filter": "\"[[Special:Wondu yʋsʋʋ|Wonuu yʋsʋʋ]] catʋʋ",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Wonuu Yʋsʋʋ|Wondu yʋsʋʋ}}]]: $2)",
+       "logentry-delete-delete": "$1 {{GENDER:$2|hɩza}} takayɩhayʋʋ $3",
+       "logentry-move-move": "$1 {{GENDER:$2|kɛzɩ}} takayɩhayʋʋ $3 ñɩŋgʋ nɛ $4 ñɩŋgʋ yɔɔ",
+       "logentry-newusers-create": "{{GENDER:$2|Patʋlɩ}} labɩnayʋ koozaɣ $1",
+       "logentry-upload-upload": "$1 {{GENDER:$2|mʋʋna poliŋ taa}} $3",
+       "searchsuggest-search": "Ñɩnɩ"
+}
index 2f4c06a..5674812 100644 (file)
        "externaldberror": "یا تھے توثیقی ڈیٹابیسا خطا واقع بیتی شیر یا تتے بیریو کھاتو بتاریخ کوریکو اِجازت نیکی",
        "login": "داخل بوس",
        "nav-login-createaccount": "کھاتہ کھولاو کورے یا اندراج کورے",
-       "userlogin": "کھاتہ ساوزاوے یا اندراج کورے",
-       "userloginnocreate": "داخل نوشتہ بوس",
        "logout": "لاگ آوٹ",
        "userlogout": "لاگ آوٹ",
        "notloggedin": "داخلہ نو ہوی",
        "userlogin-noaccount": "تو کھاتہ نو ساوزے آسوسا؟",
        "userlogin-joinproject": "منسلک بوس{{SITENAME}} اری",
-       "nologin": "تو کھاتہ نو ساوزے آسوسا؟ $1",
-       "nologinlink": "کھاتہ ساوزاوے",
        "createaccount": "کھاتہ کھولاو کورے",
-       "gotaccount": "پروشٹی تان کھاتا ساوزینو بیتی شیر؟'''$1'''.",
-       "gotaccountlink": "لاگن بوس",
-       "userlogin-resetlink": "آوا داخل بیکو بچے تان تفصیلاتن روخڅی اسوم",
        "userlogin-resetpassword-link": "کلمہء شناختو روخڅیتام؟",
        "userlogin-helplink2": "لاگن کوراوا مدد کورے",
        "userlogin-createanother": "کھاتہ ساوزاوے",
        "createacct-another-email-ph": "تان ای میلو داخل کورے",
        "createaccountmail": "عارضی پاسورڈ استعمال کورے وا ھورو ای میلا انزاوے",
        "createacct-realname": "اصلی نام (اختیاری)",
-       "createaccountreason": "وجہ:",
        "createacct-reason": "وجہ",
        "createacct-reason-ph": "تو ڈبل کھاتہ کھیوتے ساوزیسان؟",
        "createacct-submit": "کھاتہ ساوزاوے",
        "rcshowhidemine": "ذاتی ترامیم $1",
        "rcshowhidemine-show": "پشاوے",
        "rcshowhidemine-hide": "کھوشتاوے",
-       "rclinks": "آخری $2 آنوسو بیرو $1 تبدیلیان مشاہدہ کورے<br />$3",
+       "rclinks": "آخری $2 آنوسو بیرو $1 تبدیلیان مشاہدہ کورے",
        "diff": "فرق",
        "hist": "تاریخچہ",
        "hide": "مو پشاوے",
index b05a9b6..f04c00a 100644 (file)
        "rcshowhideanons": "$1 karberê anonimi",
        "rcshowhidepatr": "Vırnayışê cıyê vênıtey $1",
        "rcshowhidemine": "Vurnayisanê mı $1",
-       "rclinks": "Peyniya $2 rozu de $1 vurnayisu bıasne <br />$3",
+       "rclinks": "Peyniya $2 rozu de $1 vurnayisu bıasne",
        "diff": "ferq",
        "hist": "ver",
        "hide": "Bınımne",
index 5f62837..d640781 100644 (file)
        "externaldberror": "وسى ارادا نە شەتتىك راستاۋ دەرەكقورىندا قاتە بولدى, نەمەسە شەتتىك تىركەلگىڭىزدى جاڭالاۋ رۇقساتى جوق.",
        "login": "كىرۋ",
        "nav-login-createaccount": "كىرۋ / تىركەلگى جاساۋ",
-       "userlogin": "كىرۋ / تىركەلگى جاساۋ",
        "logout": "شىعۋ",
        "userlogout": "شىعۋ",
        "notloggedin": "كىرمەگەنسىز",
-       "nologin": "كىرمەگەنسىز بە? '''$1'''.",
-       "nologinlink": "تىركەلگى جاساڭىز",
        "createaccount": "جاڭا تىركەلگى",
-       "gotaccount": "الداقاشان تىركەلگىىڭىز بار ما? '''$1'''.",
-       "gotaccountlink": "كىرىڭىز",
        "createaccountmail": "ە-پوشتامەن",
        "badretype": "ەنگىزگەن قۇپىييا سوزدەرىڭىز ٴبىر بىرىنە سايكەس ەمەس.",
        "userexists": "ەنگىزگەن قاتىسۋشى اتىڭىز الداقاشان پايدالانۋدا.\nوزگە اتاۋدى تاڭداڭىز.",
        "prefs-misc": "ارقىيلى",
        "saveprefs": "ساقتا",
        "prefs-editing": "وڭدەۋ",
-       "rows": "جولدار:",
-       "columns": "باعاندار:",
        "searchresultshead": "ىزدەۋ",
        "stub-threshold": "<a href=\"#\" class=\"stub\">بىتەمە سىلتەمەسىن</a> پىشىمدەۋ تابالدىرىعى (بايت):",
        "recentchangesdays": "جۇىقتاعى وزگەرىستەرىندە كورسەتپەك كۇن سانى:",
        "userrights-reason": "سەبەبى:",
        "userrights-no-interwiki": "باسقا ۋىيكىيلەردەگى پايدالانۋشى قۇقىقتارىن وڭدەۋگە رۇقساتىڭىز جوق.",
        "userrights-nodatabase": "$1 دەرەكقورى جوق نە جەرگىلىكتى ەمەس.",
-       "userrights-nologin": "قاتىسۋشى قۇقىقتارىن تاعايىنداۋ ٴۇشىن اكىمشى تىركەلگىسىمەن [[{{#special:Userlogin}}|كىرۋىڭىز]] ٴجون.",
-       "userrights-notallowed": "قاتىسۋشى قۇقىقتارىن تاعايىنداۋ ٴۇشىن تىركەلگىڭىزدە رۇقسات جوق.",
        "userrights-changeable-col": "وزگەرتە الاتىن توپتار",
        "userrights-unchangeable-col": "وزگەرتە المايتىن توپتار",
        "group": "توپ:",
        "right-protect": "قورعاۋ دەڭگەيلەرىن وزگەرتۋ جانە قورعالعان بەتتەردى وڭدەۋ",
        "right-editprotected": "قورعالعان بەتتەردى وڭدەۋ (باۋلى قورعاۋلارسىز)",
        "right-editinterface": "پايدالانۋشىلىق تىلدەسىۋىن وڭدەۋ",
-       "right-editusercssjs": "باسقا قاتىسۋشىلاردىڭ CSS جانە JS فايلدارىن وڭدەۋ",
        "right-editusercss": "باسقا قاتىسۋشىلاردىڭ CSS فايلدارىن وڭدەۋ",
        "right-edituserjs": "باسقا قاتىسۋشىلاردىڭ JS فايلدارىن وڭدەۋ",
        "right-rollback": "بەلگىلى بەتتى وڭدەگەن سوڭعى قاتىسۋشىنىڭ وڭدەمەلەرىنەن جىلدام شەگىندىرۋ",
        "rcshowhideanons": "تىركەلگىسىزدەردى $1",
        "rcshowhidepatr": "زەرتتەلگەن وڭدەمەلەردى $1",
        "rcshowhidemine": "وڭدەمەلەرىمدى $1",
-       "rclinks": "سوڭعى $2 كۇندە بولعان, سوڭعى $1 وزگەرىستى كورسەت<br />$3",
+       "rclinks": "سوڭعى $2 كۇندە بولعان, سوڭعى $1 وزگەرىستى كورسەت",
        "diff": "ايىرم.",
        "hist": "تار.",
        "hide": "جاسىر",
        "undeletebtn": "قالپىنا كەلتىر!",
        "undeletelink": "قالپىنا كەلتىرۋ",
        "undeletecomment": "ماندەمەسى:",
-       "undeletedrevisions": "$1 تۇزەتۋ قالپىنا كەلتىرىلدى",
-       "undeletedrevisions-files": "$1 تۇزەتۋ جانە $2 فايل قالپىنا كەلتىرىلدى",
-       "undeletedfiles": "$1 فايل قالپىنا كەلتىرىلدى",
        "cannotundelete": "جويۋ بولدىرماۋى ٴساتسىز ٴبىتتى;\nباسقا بىرەۋ العاشىندا بەتتىڭ جويۋدىڭ بولدىرماۋى مۇمكىن.",
        "undeletedpage": "'''$1 قالپىنا كەلتىرىلدى'''\n\nجۋىقتاعى جويۋلار مەن قالپىنا كەلتىرۋلەر جونىندە [[{{#special:Log}}/delete|جويۋ جۋرنالىن]] قاراڭىز.",
        "undelete-header": "جۋىقتاعى جويىلعان بەتتەر جونىندە [[{{#special:Log}}/delete|جويۋ جۋرنالىن]] قاراڭىز.",
        "revdelete-restricted": "اكىمشىلەرگە تىيىمدار قولدادى",
        "revdelete-unrestricted": "اكىمشىلەردەن تىيىمداردى الاستادى",
        "rightsnone": "(ەشقانداي)",
-       "revdelete-summary": "وڭدەمەنىڭ قىسقاشا مازمۇنداماسى",
        "expandtemplates": "ۇلگىلەردى ۇلعايتۋ",
        "expand_templates_intro": "وسى قۇرال ارنايى بەتى الدەبىر ٴماتىندى الادى دا,\nبۇنىڭ ىشىندەگى بارلىق كىرىكتەلگەن ۇلگىلەردى مەيلىنشە ۇلعايتادى.\nمىنا <nowiki>{{#language:...}} سىيياقتى جوڭدەتۋ فۋنكتسىييالارىن دا, جانە {{CURRENTDAY}}\nسىيياقتى اينامالىلارىن دا ۇلعايتادى (ناقتى ايتقاندا, قوس قابات ساداق جاقشالار اراسىنداعى بارلىعىن).\nبۇنى ٴوز MediaWiki باعدارلاماسىنان قاتىستى جوڭدەتۋ ساتىن شاقىرىپ ىستەلىنەدى.",
        "expand_templates_title": "ٴماتىن ارالىق اتاۋى ({{FULLPAGENAME}} ت.ب. بەتتەر ٴۇشىن):",
index 5829ad7..5e02e8f 100644 (file)
        "externaldberror": "Осы арада не шеттік растау дерекқорында қате болды, немесе шеттік тіркелгіңізді жаңалау рұқсаты жоқ.",
        "login": "Кіру",
        "nav-login-createaccount": "Кіру / Тіркелу",
-       "userlogin": "Кіру / Тіркелу",
-       "userloginnocreate": "Кіру",
        "logout": "Шығу",
        "userlogout": "Шығу",
        "notloggedin": "Кірмегенсіз",
        "userlogin-noaccount": "Тіркелгіңіз жоқ па?",
        "userlogin-joinproject": "{{SITENAME}} жобасына тіркелу",
-       "nologin": "Тіркелгіңіз жоқ па? $1.",
-       "nologinlink": "Тіркелгіңізді жасаңыз",
        "createaccount": "Тіркелу",
-       "gotaccount": "Бұған дейін тіркеліп пе едіңіз? '''$1'''.",
-       "gotaccountlink": "Кіріңіз",
-       "userlogin-resetlink": "Қатысушы атын не құпия сөзді ұмыттыңыз ба?",
        "userlogin-resetpassword-link": "Құпия сөзіңізді ұмыттыңыз ба?",
        "userlogin-helplink2": "Кіруге көмек",
        "userlogin-loggedin": "{{GENDER:$1|$1}} ретінде әлдеқашан кіргенсіз.\nТөмендегі пішінді басқа қатысушы кіруі ретінде қолданыңыз.",
        "createacct-another-email-ph": "Е-пошта мекен-жайын енгізіңіз",
        "createaccountmail": "Уақытша берілген құпия сөзді пайдаланыңыз және оны көрсетілген электрондық поштаға жіберіңіз",
        "createacct-realname": "Нақты атыңыз (ерікті)",
-       "createaccountreason": "Себебі:",
        "createacct-reason": "Себебі:",
        "createacct-reason-ph": "Неге басқа тіркегі жасамақшысыз",
        "createacct-submit": "Тіркеліңіз",
        "preview": "Қарап шығу",
        "showpreview": "Алдын-ала қарау",
        "showdiff": "Өзгерістерді көрсет",
-       "blankarticle": "<strong>Ескерту:</strong> Сіз бастамақшы болған бет бос.\nЕгер сіз «{{int:savearticle}}» дегенші қайта шертсеңіз бет қандайда бір мағлұматсыз басталады.",
+       "blankarticle": "<strong>Ескерту:</strong> Сіз бастамақшы болған бет бос.\nЕгер сіз «$1» дегенші қайта шертсеңіз бет қандайда бір мағлұматсыз басталады.",
        "anoneditwarning": "<strong> Ескерту:</strong>  Сіз жүйеге кірмегенсіз.\nIP мекенжайыңыз қандай да бір өңдеме жасасаңыз көпшілікке көрінеді. Егер сіз <strong>[$1 кірсеңіз]</strong> немесе <strong>[$2 тіркелсеңіз]</strong>, сіздің өңдемелеріңіз сіздің қатысушы есіміңізден байланысты болады, сонымен қатар басқа да артықшылықтар беріледі.",
        "anonpreviewwarning": "<em>Сіз жүйеге кірмегенсіз. IP мекенжайыңыз бұл беттің өңделу тарихында жазылып алынады.</em>",
-       "missingsummary": "<strong>Ескерту:</strong> Өңдеменің қысқаша түйіндемесін енгізбепсіз.\n«{{int:savearticle}}» батырмасын қайта бассаңыз өңдемеңіз түйіндемесіз сақталады.",
-       "selfredirect": "<strong>Ескерту:</strong> Сіз бұл бетті өзіне бағыттадыңыз.\nСіз бағыттау үшін қате нысана көрсеттіңіз не қате бетті өңдеген болуыңыз мүмкін.\nЕгер «{{int:savearticle}}» дегенді қайта бассаңыз, бағыттау қалайда басталады.",
+       "missingsummary": "<strong>Ескерту:</strong> Өңдеменің қысқаша түйіндемесін енгізбепсіз.\n«$1» батырмасын қайта бассаңыз өңдемеңіз түйіндемесіз сақталады.",
+       "selfredirect": "<strong>Ескерту:</strong> Сіз бұл бетті өзіне бағыттадыңыз.\nСіз бағыттау үшін қате нысана көрсеттіңіз не қате бетті өңдеген болуыңыз мүмкін.\nЕгер «$1» дегенді қайта бассаңыз, бағыттау қалайда басталады.",
        "missingcommenttext": "Пікіріңізді төменге енгізіңіз.",
-       "missingcommentheader": "<strong>Ескерту:</strong> Бұл пікірге тақырыбын жазбапсыз.\n«{{int:savearticle}}» түймесін тағы бассаңыз өңдемеңіз түйіндемесіз сақталады.",
+       "missingcommentheader": "<strong>Ескерту:</strong> Бұл пікірге тақырыбын жазбапсыз.\n«$1» түймесін тағы бассаңыз өңдемеңіз түйіндемесіз сақталады.",
        "summary-preview": "Қысқаша түйіндемесін қарап шығу:",
        "subject-preview": "Тақырыбын қарап шығу:",
        "previewerrortext": "Өзгерістеріңізді қарап шығу талпынысыңыз кезінде қате кездесті.",
        "editingsection": "Өңдеп жатырсыз: $1 бетінің бөлімі",
        "editingcomment": "Өңдеп жатырсыз: $1 (жаңа бөлім)",
        "editconflict": "Өңдемелер қақтығысы: $1",
-       "explainconflict": "Осы бетті сіз өңдей бастағанда басқа біреу бетті өзгерткен.\nЖоғарғы мәтін аумағында қазіргі уақытта бар бет мәтінінен тұрады.\nТөменгі мәтін аумағында сіздің өзгертулеріңіз көрсетіледі.\nӨзгертуіңізді бар мәтінге біріктіруге тура келеді.\n«{{int:savearticle}}» батырмасын басқанда </strong>тек</strong> жоғарғы мәтін аумағы сақталады.",
+       "explainconflict": "Осы бетті сіз өңдей бастағанда басқа біреу бетті өзгерткен.\nЖоғарғы мәтін аумағында қазіргі уақытта бар бет мәтінінен тұрады.\nТөменгі мәтін аумағында сіздің өзгертулеріңіз көрсетіледі.\nӨзгертуіңізді бар мәтінге біріктіруге тура келеді.\n«$1» батырмасын басқанда </strong>тек</strong> жоғарғы мәтін аумағы сақталады.",
        "yourtext": "Мәтініңіз",
        "storedversion": "Сақталған нұсқасы",
        "nonunicodebrowser": "<strong>Ескерту: Шолғышыңыз Юникод белгілеуіне үйлесімді емес</strong>\nЖұмыс істеуге ықтималдық беру үшін төмендегі кірістіру орнында ASCII емес таңбалар оналтылық кодымен көрсетіледі.",
        "right-editsemiprotected": "Қорғалған беттерді өңдеу \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Беттің контент моделін өңдеу",
        "right-editinterface": "Қатысушы тілдесіуін өңдеу",
-       "right-editusercssjs": "Басқа қатысушылардың CSS және JS файлдарын өңдеу",
        "right-editusercss": "Басқа қатысушылардың CSS файлдарын өңдеу",
        "right-edituserjs": "Басқа қатысушылардың JavaScript файлдарын өңдеу",
        "right-editmyusercss": "Өзіңіздің қатысушы CSS файлдарыңызды өңдеу",
        "rcshowhidecategorization": "Бет санаттауларын $1",
        "rcshowhidecategorization-show": "көрсету",
        "rcshowhidecategorization-hide": "жасыру",
-       "rclinks": "Соңғы $2 күнде болған соңғы $1 өзгерісті көрсет<br />$3",
+       "rclinks": "Соңғы $2 күнде болған соңғы $1 өзгерісті көрсет",
        "diff": "айырм",
        "hist": "тарихы",
        "hide": "жасыру",
        "undeleteviewlink": "қарау",
        "undeleteinvert": "Таңдалғанды жасыру",
        "undeletecomment": "Себебі:",
-       "undeletedrevisions": "{{PLURAL:$1|1 түзету|$1 түзету}} қалпына келтірілді",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 түзету|$1 түзету}} және {{PLURAL:$2|1 файл|$2 файл}} қалпына келтірілді",
-       "undeletedfiles": "{{PLURAL:$1|1 файл|$1 файл}} қалпына келтірілді",
        "cannotundelete": "Жою болдырмауы сәтсіз бітті;\n$1",
        "undeletedpage": "'''$1 дегенді қалпына келтірді'''\n\nЖуықтағы жоюлар мен қалпына келтірулер жөнінде  [[Special:Log/delete|жою журналын]] қараңыз.",
        "undelete-header": "Жуықтағы жойылған беттер жөнінде  [[Special:Log/delete|жою журналын]] қараңыз.",
        "logentry-tag-update-revision": "$1 $3 беттегі $4 нұсқасына тегті ({{PLURAL:$7|қосты}} $6; {{GENDER:$2|жаңартты}} {{PLURAL:$9|аластатты}} $8)",
        "logentry-tag-update-logentry": "$1 $3 бетіндегі $5 енгізілім журналындағы тегті {{GENDER:$2|жаңартты}} ({{PLURAL:$7|қосты}} $6; {{PLURAL:$9|аластады}} $8)",
        "rightsnone": "(ешқандай)",
-       "revdelete-summary": "өңдеменің қысқаша мазмұндамасы",
        "feedback-adding": "Бетке кері байланыс қосуда...",
        "feedback-back": "Кері",
        "feedback-bugcheck": "Керемет! [$1 белгілі қате] тізімінде сәйкес жазбалар жоқ екендігін тексеріңіз.",
index 7ea4dfd..67ad4ae 100644 (file)
        "externaldberror": "Osı arada ne şettik rastaw derekqorında qate boldı, nemese şettik tirkelgiñizdi jañalaw ruqsatı joq.",
        "login": "Kirw",
        "nav-login-createaccount": "Kirw / Tirkelgi jasaw",
-       "userlogin": "Kirw / Tirkelgi jasaw",
        "logout": "Şığw",
        "userlogout": "Şığw",
        "notloggedin": "Kirmegensiz",
-       "nologin": "Kirmegensiz be? '''$1'''.",
-       "nologinlink": "Tirkelgi jasañız",
        "createaccount": "Jaña tirkelgi",
-       "gotaccount": "Aldaqaşan tirkelgiiñiz bar ma? '''$1'''.",
-       "gotaccountlink": "Kiriñiz",
        "createaccountmail": "e-poştamen",
        "badretype": "Engizgen qupïya sözderiñiz bir birine säýkes emes.",
        "userexists": "Engizgen qatıswşı atıñız aldaqaşan paýdalanwda.\nÖzge atawdı tañdañız.",
        "prefs-misc": "Ärqïlı",
        "saveprefs": "Saqta",
        "prefs-editing": "Öñdew",
-       "rows": "Joldar:",
-       "columns": "Bağandar:",
        "searchresultshead": "İzdew",
        "stub-threshold": "<a href=\"#\" class=\"stub\">Biteme siltemesin</a> pişimdew tabaldırığı (baýt):",
        "recentchangesdays": "Jüıqtağı özgeristerinde körsetpek kün sanı:",
        "right-protect": "Qorğaw deñgeýlerin özgertw jäne qorğalğan betterdi öñdew",
        "right-editprotected": "Qorğalğan betterdi öñdew (bawlı qorğawlarsız)",
        "right-editinterface": "Paýdalanwşılıq tildesiwin öñdew",
-       "right-editusercssjs": "Basqa qatıswşılardıñ CSS jäne JS faýldarın öñdew",
        "right-editusercss": "Basqa qatıswşılardıñ CSS faýldarın öñdew",
        "right-edituserjs": "Basqa qatıswşılardıñ JS faýldarın öñdew",
        "right-rollback": "Belgili betti öñdegen soñğı qatıswşınıñ öñdemelerinen jıldam şegindirw",
        "rcshowhideanons": "Tirkelgisizderdi $1",
        "rcshowhidepatr": "Zerttelgen öñdemelerdi $1",
        "rcshowhidemine": "Öñdemelerimdi $1",
-       "rclinks": "Soñğı $2 künde bolğan, soñğı $1 özgeristi körset<br />$3",
+       "rclinks": "Soñğı $2 künde bolğan, soñğı $1 özgeristi körset",
        "diff": "aýırm.",
        "hist": "tar.",
        "hide": "jasır",
        "undeletebtn": "Qalpına keltir!",
        "undeletelink": "qalpına keltirw",
        "undeletecomment": "Mändemesi:",
-       "undeletedrevisions": "$1 tüzetw qalpına keltirildi",
-       "undeletedrevisions-files": "$1 tüzetw jäne $2 faýl qalpına keltirildi",
-       "undeletedfiles": "$1 faýl qalpına keltirildi",
        "cannotundelete": "Joyw boldırmawı sätsiz bitti;\nbasqa birew alğaşında bettiñ joywdıñ boldırmawı mümkin.",
        "undeletedpage": "'''$1 qalpına keltirildi'''\n\nJwıqtağı joywlar men qalpına keltirwler jöninde [[{{#special:Log}}/delete|joyw jwrnalın]] qarañız.",
        "undelete-header": "Jwıqtağı joýılğan better jöninde [[{{#special:Log}}/delete|joyw jwrnalın]] qarañız.",
        "revdelete-restricted": "äkimşilerge tïımdar qoldadı",
        "revdelete-unrestricted": "äkimşilerden tïımdardı alastadı",
        "rightsnone": "(eşqandaý)",
-       "revdelete-summary": "öñdemeniñ qısqaşa mazmundaması",
        "expandtemplates": "Ülgilerdi ulğaýtw",
        "expand_templates_intro": "Osı qural arnaýı beti äldebir mätindi aladı da,\nbunıñ işindegi barlıq kiriktelgen ülgilerdi meýlinşe ulğaýtadı.\nMına <nowiki>{{</nowiki>#language:...}} sïyaqtı jöñdetw fwnkcïyaların da, jäne <nowiki>{{</nowiki>CURRENTDAY}}\nsïyaqtı aýnamalıların da ulğaýtadı (naqtı aýtqanda, qos qabat sadaq jaqşalar arasındağı barlığın).\nBunı öz MediaWiki bağdarlamasınan qatıstı jöñdetw satın şaqırıp istelinedi.",
        "expand_templates_title": "Mätin aralıq atawı ({{FULLPAGENAME}} t.b. better üşin):",
index dd10a35..4b89a56 100644 (file)
        "rcshowhideanons": "$1 atuisut anonymejusut",
        "rcshowhidepatr": "$1 allannguutit misissorneqarsimasut",
        "rcshowhidemine": "$1 nammineq tapit",
-       "rclinks": "Takutikkit $1 -it allannguutit kingulliit ulluni kingullerni $2 -ni<br />$3",
+       "rclinks": "Takutikkit $1 -it allannguutit kingulliit ulluni kingullerni $2 -ni",
        "diff": "assigiinng",
        "hist": "oqalutt",
        "hide": "Assequt",
index 96e8396..9522e03 100644 (file)
@@ -58,7 +58,7 @@
        "tog-ccmeonemails": "ផ្ញើច្បាប់ចម្លង​អ៊ីមែលដែលខ្ញុំផ្ញើទៅកាន់អ្នកប្រើប្រាស់ផ្សេងទៀតមកខ្ញុំខ្លួនឯងផងដែរ",
        "tog-diffonly": "កុំបង្ហាញខ្លឹមសារទំព័រនៅពីក្រោមតារាងប្រៀបធៀបចំណុចខុសគ្នា",
        "tog-showhiddencats": "បង្ហាញចំណាត់ថ្នាក់ក្រុមដែលត្រូវបានលាក់",
-       "tog-norollbackdiff": "á\9e\94á\9f\86á\9e\97á\9f\92á\9e\9bá\9f\81á\9e\85â\80\8bá\9e\97á\9e¶á\9e\96â\80\8bខុស​គ្នា​បន្ទាប់​ពី​អនុវត្តការ​ស្ដារវិញ",
+       "tog-norollbackdiff": "á\9e\80á\9e»á\9f\86á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89á\9e\97á\9e¶á\9e\96ខុស​គ្នា​បន្ទាប់​ពី​អនុវត្តការ​ស្ដារវិញ",
        "tog-useeditwarning": "សូមព្រមាន​ខ្ញុំ​ ពេលដែលខ្ញុំ​ចាកចេញ​ពី​ទំព័រ​កែប្រែដោយមិន​បានរក្សា​ទុកបន្លាស់ប្ដូរ​នានា​",
        "tog-prefershttps": "ប្រើប្រាស់ការតភ្ជាប់ដែលមានសុវត្ថិភាពជានិច្ចពេលកត់ឈ្មោះចូល",
        "underline-always": "ជានិច្ច",
        "anontalk": "ការ​ពិភាក្សា",
        "navigation": "ការណែនាំ",
        "and": "&#32;និង",
-       "qbfind": "ស្វែងរក",
-       "qbbrowse": "រាវរក",
-       "qbedit": "កែប្រែ",
-       "qbpageoptions": "ទំព័រនេះ",
-       "qbmyoptions": "ទំព័ររបស់ខ្ញុំ",
        "faq": "សំណួរដែលសួរញឹកញាប់",
-       "faqpage": "Project:សំណួរដែលសួរញឹកញាប់",
        "actions": "សកម្មភាព​",
        "namespaces": "លំហឈ្មោះ",
        "variants": "សណ្ដាន",
        "edit-local": "កែប្រែចំណារពន្យល់ដើម",
        "create": "បង្កើត",
        "create-local": "ចំណារពន្យល់ដើម",
-       "editthispage": "កែប្រែទំព័រនេះ",
-       "create-this-page": "បង្កើតទំព័រនេះ",
        "delete": "លុបចោល",
-       "deletethispage": "លុបទំព័រនេះចោល",
-       "undeletethispage": "ឈប់លុបទំព័រនេះ",
        "undelete_short": "ឈប់លុប{{PLURAL:$1|កំណែប្រែមួយ|កំណែប្រែចំនួន$1}}វិញ",
        "viewdeleted_short": "មើល{{PLURAL:$1|កំណែប្រែមួយដែលត្រូវបានលុបចោល|កំណែប្រែចំនួន $1 ដែលត្រូវបានលុបចោល}}",
        "protect": "ការពារ",
        "protect_change": "ផ្លាស់ប្តូរ",
-       "protectthispage": "ការពារទំព័រនេះ",
        "unprotect": "ប្ដូរការការពារ",
-       "unprotectthispage": "ផ្លាស់ប្ដូរការការពារទំព័រនេះ",
        "newpage": "ទំព័រថ្មី",
-       "talkpage": "ពិភាក្សាទំព័រនេះ",
        "talkpagelinktext": "ការពិភាក្សា",
        "specialpage": "ទំព័រពិសេស",
        "personaltools": "ឧបករណ៍ផ្ទាល់ខ្លួន",
-       "articlepage": "មើលខ្លឹមសារទំព័រ​",
        "talk": "ការពិភាក្សា",
        "views": "គំហើញ",
        "toolbox": "​ឧបករណ៍",
-       "userpage": "មើលទំព័រអ្នកប្រើប្រាស់",
-       "projectpage": "មើល​ទំព័រគម្រោង",
        "imagepage": "មើល​ទំព័រ​ឯកសារ",
        "mediawikipage": "មើល​ទំព័រសារ",
        "templatepage": "មើលទំព័រគំរូ",
        "createaccount-title": "ការបង្កើតគណនីសម្រាប់{{SITENAME}}",
        "createaccount-text": "មានអ្នកផ្សេងបានបង្កើតគណនីជាឈ្មោះ \"$2\" លើ{{SITENAME}}($4) ព្រមទាំងពាក្យសំងាត់ \"$3\" ដោយប្រើអាសយដ្ឋានអ៊ីមែលរបស់អ្នកហើយ។\n\nអ្នកគួរតែកត់ឈ្មោះចូលហើយផ្លាស់ប្តូរពាក្យសំងាត់របស់អ្នកនៅពេលនេះ។\n\nអ្នកអាចបំភ្លេចពីសារនេះ ប្រសិនបើ​គណនីនេះត្រូវបានបង្កើតដោយមានបញ្ហា។",
        "login-throttled": "អ្នកបានកត់ឈ្មោះចូលមិនបានសម្រេចច្រើនដងពេកហើយ។​\n\nសូមរងចាំរយៈពេល$1 មុនពេលសាកល្បងម្ដងទៀត។",
-       "login-abort-generic": "á\9e¢á\9f\92á\9e\93á\9e\80á\9e\85á\9e»á\9f\87á\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bá\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\98á\9f\92á\9e\9aá\9f\81á\9e\85á\9e\91á\9f\81á\9f\94 á\9e\80á\9e¶á\9e\9aá\9e\85á\9e»á\9f\87ឈ្មោះចូលត្រូវបានបោះបង់។",
+       "login-abort-generic": "á\9e¢á\9f\92á\9e\93á\9e\80á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bá\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\98á\9f\92á\9e\9aá\9f\81á\9e\85á\9e\91á\9f\81á\9f\94 á\9e\80á\9e¶á\9e\9aá\9e\80á\9e\8fá\9f\8bឈ្មោះចូលត្រូវបានបោះបង់។",
        "login-migrated-generic": "គណនីរបស់អ្នកត្រូវបានផ្ទេរចេញហើយ ហើយអត្តនាមរបស់អ្នកក៏គ្មាននៅក្នុងវិគីនេះតទៅទៀតដែរ។",
        "loginlanguagelabel": "ភាសា៖ $1",
        "createacct-another-realname-tip": "អ្នកអាចផ្ដល់ឈ្មោះពិតរបស់អ្នកក៏បានមិនផ្ដល់ក៏បាន។ បើអ្នកផ្ដល់ឱ្យ វានឹងត្រូវបានប្រើប្រាស់់ដើម្បីបញ្ជាក់ភាពជាម្ចាស់​លើការរួមចំណែក​នានា​របស់អ្នក។",
        "preview": "មើលជាមុន",
        "showpreview": "បង្ហាញ​ការមើលជាមុន",
        "showdiff": "បង្ហាញ​បន្លាស់ប្ដូរ",
-       "blankarticle": "<strong>ប្រយ័ត្ន៖</strong> ទំព័រដែលអ្នកកំពុងបង្កើតជាទំព័រទទេ។\nបើសិនជាអ្នកចុច \"{{int:savearticle}}\" ម្ដងទៀត ទំព័រនេះនឹងត្រូវរក្សាទុកដោយគ្មានខ្លឹមសារខាងក្នុង។",
+       "blankarticle": "<strong>ប្រយ័ត្ន៖</strong> ទំព័រដែលអ្នកកំពុងបង្កើតជាទំព័រទទេ។\nបើសិនជាអ្នកចុច \"$1\" ម្ដងទៀត ទំព័រនេះនឹងត្រូវរក្សាទុកដោយគ្មានខ្លឹមសារខាងក្នុង។",
        "anoneditwarning": "'''ប្រយ័ត្ន ៖''' អ្នកមិនបានកត់ឈ្មោះចូល​ទេ។ អាសយដ្ឋានIPរបស់អ្នក​នឹងត្រូវបាន​កត់ត្រាទុក​ក្នុងប្រវត្តិកែប្រែ​នៃទំព័រ​នេះ។ បើសិនជាអ្នក <strong>[$1 កត់ឈ្មោះចូល]</strong> ឬ <strong>[$2 បង្កើតគណនី]</strong> នោះការកែប្រែរបស់អ្នកនឹងត្រូវភ្ចាប់ជាមួយអត្តនាមរបស់អ្នកផង នឹងមានផលប្រយោជន៍ផ្សេងទៀតផង។",
        "anonpreviewwarning": "<em>អ្នកមិនបានកត់ឈ្មោះចូល​ទេ។ ប្រសិនបើអ្នកធ្វើការរក្សាទុក នោះអាសយដ្ឋានIPរបស់អ្នក​នឹងត្រូវបាន​កត់ត្រាទុក​ក្នុងប្រវត្តិកែប្រែ​នៃទំព័រ​នេះ។</em>",
        "missingsummary": "'''រំលឹក៖''' អ្នកមិនទាន់បានផ្ដល់ចំណារពន្យល់អំពីកំណែប្រែនេះទេ។\n\nបើសិនជាអ្នកចុច '''រក្សាទុក''' ម្ដងទៀតនោះកំណែប្រែរបស់អ្នកនឹងត្រូវរក្សាទុកដោយគ្មានចំណារពន្យល់។",
-       "selfredirect": "<strong>ប្រយ័ត្ន៖</strong> អ្នកកំពុងតែបញ្ជូនបន្តទំព័រនេះទៅកាន់ទំព័រខ្លួនឯង។\n\nប្រហែលជាអ្នកបានផ្ដល់ទំព័រគោលដៅសម្រាប់បញ្ជូនបន្តខុខ ឬប្រហែលជាអ្នកកំពុងកែប្រែទំព័រខុស។\nបើសិនជាអ្នកចុច \"{{int:savearticle}}\" ម្ដងទៀត តំណភ្ជាប់បញ្ជូនបន្តនឹងត្រូវបង្កើតឡើងបែបនេះ។",
+       "selfredirect": "<strong>ប្រយ័ត្ន៖</strong> អ្នកកំពុងតែបញ្ជូនបន្តទំព័រនេះទៅកាន់ទំព័រខ្លួនឯង។\n\nប្រហែលជាអ្នកបានផ្ដល់ទំព័រគោលដៅសម្រាប់បញ្ជូនបន្តខុខ ឬប្រហែលជាអ្នកកំពុងកែប្រែទំព័រខុស។\nបើសិនជាអ្នកចុច \"$1\" ម្ដងទៀត តំណភ្ជាប់បញ្ជូនបន្តនឹងត្រូវបង្កើតឡើងបែបនេះ។",
        "missingcommenttext": "សូមវាយបញ្ចូលយោបល់មួយនៅខាងក្រោម។",
-       "missingcommentheader": "'''រំលឹក៖''' អ្នកមិនទាន់បានផ្ដល់ប្រធានបទរបស់មតិយោបល់នេះទេ។\nបើសិនជាអ្នកចុច \"{{int:savearticle}}\" ម្ដងទៀត នោះកំណែប្រែរបស់អ្នកនឹងត្រូវរក្សាទុកដោយគ្មានវា។",
-       "summary-preview": "ការមើលជាមុនរបស់ចំណារពន្យល់:",
+       "missingcommentheader": "'''រំលឹក៖''' អ្នកមិនទាន់បានផ្ដល់ប្រធានបទរបស់មតិយោបល់នេះទេ។\nបើសិនជាអ្នកចុច \"$1\" ម្ដងទៀត នោះកំណែប្រែរបស់អ្នកនឹងត្រូវរក្សាទុកដោយគ្មានវា។",
+       "summary-preview": "ការមើលជាមុនរបស់ចំណារពន្យល់",
        "subject-preview": "ការមើលជាមុនរបស់ប្រធានបទ៖",
        "previewerrortext": "មានបញ្ហាកើតឡើងពេលព្យាយាមើលជាមុនបន្លាស់ប្ដូររបស់អ្នក។",
        "blockedtitle": "អ្នកប្រើនេះត្រូវបានហាមឃាត់ហើយ",
        "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-redirect": "(បញ្ជូនបន្ត $1)",
+       "search-redirect": "(បញ្ជូនបន្តពី $1)",
        "search-section": "(ផ្នែក $1)",
        "search-category": "(ចំណាត់ថ្នាក់ក្រុម $1)",
        "search-file-match": "(ខ្លឹមសារឯកសារត្រូវគ្នា)",
        "search-suggest": "ប្រហែលជាអ្នកចង់រក៖ $1",
        "search-rewritten": "បង្ហាញលទ្ធផលពីការស្វែងរក $1។ ស្វែងរក $2 ជំនួសវិញ។",
-       "search-interwiki-caption": "គម្រោងជាបងប្អូន",
+       "search-interwiki-caption": "á\9e\9bá\9e\91á\9f\92á\9e\92á\9e\95á\9e\9bá\9e\9fá\9f\92á\9e\9cá\9f\82á\9e\84á\9e\9aá\9e\80á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\82á\9e\98á\9f\92á\9e\9aá\9f\84á\9e\84á\9e\87á\9e¶á\9e\94á\9e\84á\9e\94á\9f\92á\9e¢á\9e¼á\9e\93",
        "search-interwiki-default": "លទ្ធផលពី$1៖",
        "search-interwiki-more": "(បន្ថែមទៀត)",
        "search-relatedarticle": "ទាក់ទិន",
        "prefs-diffs": "ភាពខុសគ្នា",
        "prefs-help-prefershttps": "ចំណង់ចំណូលចិត្តនេះនឹងមានប្រសិទ្ធិភាពពេលអ្នកកត់ឈ្មោះចូលលើកក្រោយ។",
        "prefswarning-warning": "អ្នកបានកែប្រែចំណង់ចំណូលចិត្តតែមិនទាន់បានរក្សាទុកទេ។ បើសិនជាអ្នកចាកចេញពីទំព័រនេះដោយមិនបានចុច \"$1\" ទេនោះចំណង់ចំណូលចិត្តរបស់អ្នកនឹងមិនត្រូវបន្ទាន់សម័យទេ។",
-       "userrights": "á\9e\80á\9e¶á\9e\9aá\9e\82á\9f\92á\9e\9aá\9e\94á\9f\8bá\9e\82á\9f\92á\9e\9aá\9e\84á\9e\9fá\9e·á\9e\91á\9f\92á\9e\92á\9e·á\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",
-       "userrights-lookup-user": "á\9e\82á\9f\92á\9e\9aá\9e\94á\9f\8bá\9e\82á\9f\92á\9e\9aá\9e\84á\9e\80á\9f\92á\9e\9aá\9e»á\9e\98អ្នកប្រើប្រាស់",
+       "userrights": "សិទ្ធិអ្នកប្រើប្រាស់",
+       "userrights-lookup-user": "á\9e\87á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\9aá\9e¾á\9e\9fអ្នកប្រើប្រាស់",
        "userrights-user-editname": "បញ្ចូលអត្តនាម៖",
-       "editusergroup": "á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82ក្រុមអ្នកប្រើប្រាស់",
+       "editusergroup": "á\9e\95á\9f\92á\9e\91á\9e»á\9e\80ក្រុមអ្នកប្រើប្រាស់",
        "editinguser": "ប្ដូរសិទ្ធិរបស់{{GENDER:$1|អ្នកប្រើប្រាស់}} <strong>[[User:$1|$1]]</strong> $2",
-       "userrights-editusergroup": "កែប្រែក្រុមអ្នកប្រើប្រាស់",
-       "saveusergroups": "រក្សាក្រុមអ្នកប្រើប្រាស់ទុក",
+       "userrights-editusergroup": "កែប្រែក្រុម{{GENDER:$1|អ្នកប្រើប្រាស់}}",
+       "saveusergroups": "រក្សាក្រុម{{GENDER:$1|អ្នកប្រើប្រាស់}}ទុក",
        "userrights-groupsmember": "ក្រុមសមាជិកភាព៖",
        "userrights-groupsmember-auto": "សមាជិកស្វ័យប្រវត្តិរបស់៖",
        "userrights-groups-help": "អ្នកអាចប្ដូរក្រុមនានាដែលអ្នកប្រើប្រាស់នេះនៅ៖\n* ប្រអប់ដែលមានគូសធីកមានន័យថាអ្នកប្រើប្រាស់នេះស្ថិតនៅក្នុងនោះរួចហើយ\n* ប្រអប់ដែលគ្មានគូសធីកមានន័យថាអ្នកប្រើប្រាស់នេះមិនស្ថិតនៅក្នុងនោះទេ\n* សញ្ញា * បញ្ជាក់ថាអ្នកមិនអាចប្ដូរក្រុមនោះចេញទេពេលដែលអ្នកបាន​បន្ថែមវាហើយ។",
        "right-editsemiprotected": "កែប្រែទំព័រដែលបានការពារដោយ \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "កែប្រែខ្លឹមសារគំរូរបស់ទំព័រមួយ",
        "right-editinterface": "កែប្រែអន្តរមុខអ្នកប្រើប្រាស់",
-       "right-editusercssjs": "កែប្រែឯកសារ CSS និង JS របស់អ្នកប្រើប្រាស់ផ្សេងទៀត",
        "right-editusercss": "កែប្រែឯកសារ CSS របស់អ្នកប្រើប្រាស់ផ្សេងទៀត",
        "right-edituserjs": "កែប្រែឯកសារ JavaScript របស់អ្នកប្រើប្រាស់ផ្សេងទៀត",
        "right-editmyusercss": "កែប្រែឯកសារ CSS របស់ខ្លួនអ្នកផ្ទាល់",
        "action-deleterevision": "លុបកំណែប្រែនេះចោល",
        "action-deletedhistory": "មើលប្រវត្តិលុបចោលរបស់ទំព័រនេះ",
        "action-browsearchive": "ស្វែងរកទំព័រដែលត្រូវបានលុបចោល",
-       "action-undelete": "ឈប់លុបទំព័រនេះ",
+       "action-undelete": "ឈប់លុបទំព័រ",
        "action-suppressrevision": "ត្រួតពិនិត្យ​និង​ស្ដារ​​កំណែ​ប្រែដែល​លាក់​បាំង",
        "action-suppressionlog": "មើលកំណត់ហេតុឯកជននេះ",
        "action-block": "ហាមឃាត់អ្នកប្រើប្រាស់នេះមិនឱ្យធ្វើការកែប្រែ",
        "rcshowhidemine-hide": "លាក់",
        "rcshowhidecategorization-show": "បង្ហាញ​",
        "rcshowhidecategorization-hide": "លាក់",
-       "rclinks": "បង្ហាញបន្លាស់ប្ដូរ$1ចុងក្រោយធ្វើឡើងក្នុងរយៈពេល$2ថ្ងៃចុងក្រោយ<br />$3",
+       "rclinks": "បង្ហាញបន្លាស់ប្ដូរ$1ចុងក្រោយធ្វើឡើងក្នុងរយៈពេល$2ថ្ងៃចុងក្រោយ",
        "diff": "ប្រៀបធៀប",
        "hist": "ប្រវត្តិ",
        "hide": "លាក់",
        "importlogpage": "កំណត់ហេតុនៃការនាំចូល",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|កំណែ}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|កំណែ}} ពី $2",
-       "tooltip-pt-userpage": "ទំព័រអ្នកប្រើប្រាស់​របស់អ្នក​",
+       "tooltip-pt-userpage": "ទំព័រ​{{GENDER:|អ្នកប្រើប្រាស់​របស់អ្នក}}",
        "tooltip-pt-mytalk": "ទំព័រពិភាក្សា​របស់អ្នក​",
        "tooltip-pt-anontalk": "ការពិភាក្សាអំពីកំណែប្រែដែល​ធ្វើ​ឡើង​ចេញ​ពីអាសយដ្ឋាន IP នេះ",
        "tooltip-pt-preferences": "ចំណង់ចំណូលចិត្ត",
        "watchlistedit-raw-done": "បញ្ជីតាមដានរបស់អ្នកត្រូវបានធ្វើឱ្យទាន់សម័យហើយ។",
        "watchlistedit-raw-added": "{{PLURAL:$1| ចំណងជើង១បានត្រូវ|$1 ចំណងជើងបានត្រូវ}}ដាក់បន្ថែម៖",
        "watchlistedit-raw-removed": "{{PLURAL:$1|១ចំណងជើងបានត្រូវ|$1ចំណងជើងបានត្រូវ}}ដកចេញ៖",
-       "watchlistedit-clear-title": "á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\98á\9f\92á\9e¢á\9e¶á\9e\8fá\9e\94á\9e\89á\9f\92á\9e\85á\9e¸á\9e\8fá\9e¶á\9e\98á\9e\8aá\9e¶á\9e\93",
+       "watchlistedit-clear-title": "សម្អាតបញ្ចីតាមដាន",
        "watchlistedit-clear-legend": "សម្អាតបញ្ជីតាមដាន",
        "watchlistedit-clear-explain": "ចំណងជើងទាំងអស់នេះនឹងត្រូវលុបចេញពីបញ្ជីតាមដានរបស់អ្នក",
        "watchlistedit-clear-titles": "ចំណងជើង៖",
        "feedback-submit": "ដាក់ស្នើ",
        "feedback-thanks": "សូមអរគុណ! មតិយោបល់របស់អ្នកត្រូវបានដាក់ផ្សាយនៅលើទំព័រ \"[$2 $1]\"។",
        "feedback-thanks-title": "សូមអរគុណ!",
-       "searchsuggest-search": "ស្វែងរក​",
+       "searchsuggest-search": "ស្វែងរក​ក្នុង{{SITENAME}}",
        "searchsuggest-containing": "ដែលមានពាក្យ...",
        "api-error-emptypage": "ការអនុញ្ញាតអោយបង្កើតទំព័រថ្មីដែលគ្មានសរសេរអ្វីទេ",
        "api-error-unknown-warning": "ការព្រមានមិនស្គាល់៖ \"$1 ។",
        "expand_templates_ok": "យល់ព្រម",
        "expand_templates_remove_comments": "ដកចេញ វិចារនានា",
        "expand_templates_preview": "បង្ហាញការមើលជាមុន",
-       "pagelanguage": "á\9e§á\9e\94á\9e\80á\9e\9aá\9e\8eá\9f\8dá\9e\87á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\9aá\9e¾á\9e\9fភាសាទំព័រ",
+       "pagelanguage": "á\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aភាសាទំព័រ",
        "pagelang-language": "ភាសា",
        "pagelang-use-default": "ប្រើភាសាតាមលំនាំដើម",
        "right-pagelang": "ប្ដូរភាសាទំព័រ",
index c3926de..435bae0 100644 (file)
@@ -29,7 +29,9 @@
                        "Macofe",
                        "రహ్మానుద్దీన్",
                        "ಶಿವಕುಮಾರ್ ನಾಯಕ್",
-                       "Yogesh"
+                       "Yogesh",
+                       "Lokesha kunchadka",
+                       "Anoop rao"
                ]
        },
        "tog-underline": "ಕೊಂಡಿಗಳ ಕೆಳಗೆ ಗೆರೆ ತೋರಿಸಿ",
        "tog-showtoolbar": "ಸಂಪಾದನೆಯ ಉಪಕರಣಗಳ ಪಟ್ಟಿಯನ್ನು ತೋರು",
        "tog-editondblclick": "ಎರಡು ಬಾರಿ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ಪುಟವು ಸಂಪಾದಿಸುವಂತಾಗಲಿ",
        "tog-editsectiononrightclick": "ಪುಟದ ವಿಭಾಗಗಳನ್ನು ಅವುಗಳ ಶೀರ್ಷಿಕೆಯನ್ನು ಎರಡು ಬಾರಿ ಕ್ಲಿಕ್ ಮಾಡಿ ಸಂಪಾದನೆ ಮಾಡುವಂತೆ ಇರಲಿ",
-       "tog-watchcreations": "ನಾನು ಪ್ರಾರಂಭಿಸುವ ಲೇಖನಗಳನ್ನು ನನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ ಸೇರಿಸು",
-       "tog-watchdefault": "ನಾನು ಸಂಪಾದಿಸುವ ಪುಟಗಳನ್ನು ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ ಸೇರಿಸು",
-       "tog-watchmoves": "ನಾನು ಸ್ಥಳಾಂತರಿಸುವ ಪುಟಗಳನ್ನು ನನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ ಸೇರಿಸು",
-       "tog-watchdeletion": "ನಾನು ಅಳಿಸುವ ಪುಟಗಳನ್ನು ನನ್ನ ವೀಕ್ಷಣಾ ಪಟ್ಟಿಗೆ ಸೇರಿಸು",
+       "tog-watchcreations": "ನಾನà³\81 à²ªà³\8dರಾರà²\82ಭಿಸà³\81ವ à²²à³\87à²\96ನà²\97ಳನà³\8dನà³\81 à²®à²¤à³\8dತà³\81 à²\95ಡತà²\97ಳನà³\8dನà³\81 à²¨à²¨à³\8dನ à²µà³\80à²\95à³\8dಷಣಾಪà²\9fà³\8dà²\9fಿà²\97à³\86 à²¸à³\87ರಿಸà³\81",
+       "tog-watchdefault": "ನಾನà³\81 à²¸à²\82ಪಾದಿಸà³\81ವ à²ªà³\81à²\9fà²\97ಳನà³\8dನà³\81 à²®à²¤à³\8dತà³\81 à²\95ಡತà²\97ಳನà³\8dನà³\81 à²µà³\80à²\95à³\8dಷಣಾಪà²\9fà³\8dà²\9fಿà²\97à³\86 à²¸à³\87ರಿಸà³\81",
+       "tog-watchmoves": "ನಾನà³\81 à²¸à³\8dಥಳಾà²\82ತರಿಸà³\81ವ à²ªà³\81à²\9fà²\97ಳನà³\8dನà³\81 à²®à²¤à³\8dತà³\81 à²\95ಡತà²\97ಳನà³\8dನà³\81 à²¨à²¨à³\8dನ à²µà³\80à²\95à³\8dಷಣಾಪà²\9fà³\8dà²\9fಿà²\97à³\86 à²¸à³\87ರಿಸà³\81",
+       "tog-watchdeletion": "ನಾನà³\81 à²\85ಳಿಸà³\81ವ à²ªà³\81à²\9fà²\97ಳನà³\8dನà³\81 à²®à²¤à³\8dತà³\81 à²\95ಡತà²\97ಳನà³\8dನà³\81 à²¨à²¨à³\8dನ à²µà³\80à²\95à³\8dಷಣಾ à²ªà²\9fà³\8dà²\9fಿà²\97à³\86 à²¸à³\87ರಿಸà³\81",
        "tog-watchuploads": "ನಾನು ಹೊಸದಾಗಿ ಅಪ್‍ಲೋಡ್ ಮಾಡಿದ ಫೈಲ್‍ಗಳನ್ನು ನನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ ಸೇರಿಸು",
        "tog-watchrollback": "ನಾನು ಹಿಮ್ಮರಳುವಿಕೆಯನ್ನು ನಡೆಸಿದ ಪುಟಗಳನ್ನು ನನ್ನ ಗಮನಸೂಚಿಗೆ ಸೇರಿಸು",
        "tog-minordefault": "ನನ್ನ ಎಲ್ಲಾ ಸಂಪಾದನೆಗಳನ್ನು ಚುಟುಕಾದವು ಎಂದು ಗುರುತು ಮಾಡು",
@@ -58,7 +60,7 @@
        "tog-enotifrevealaddr": "ಪ್ರಕಟಣೆ ಇ-ಅಂಚೆಗಳಲ್ಲಿ ನನ್ನ ಇ-ಅಂಚೆ ವಿಳಾಸ ತೋರು",
        "tog-shownumberswatching": "ಪುಟವನ್ನು ವೀಕ್ಷಿಸುತ್ತಿರುವ ಸದಸ್ಯರ ಸಂಖ್ಯೆಯನ್ನು ತೋರಿಸು",
        "tog-oldsig": "ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಸಹಿ",
-       "tog-fancysig": "ಸರಳ à²¸à²¹à²¿à²\97ಳà³\81 (à²\95à³\8aà²\82ಡಿ à²\87ಲà³\8dಲದಿರà³\81ವà²\82ತೆ)",
+       "tog-fancysig": "ಸಹಿà²\97ಳನà³\8dನà³\81 à²µà²¿à²\95ಿà²\9fà³\86à²\95à³\8dಸà³\8d à²\8eà²\82ದà³\81 à²ªà²°à²¿à²\97ಣಿಸಿ (ಸà³\8dವಯà²\82à²\9aಾಲಿತ à²²à²¿à²\82à²\95à³\8d à²\87ಲà³\8dಲದೆ)",
        "tog-uselivepreview": "ನೇರ ಮುನ್ನೋಟವನ್ನು ಉಪಯೋಗಿಸಿ",
        "tog-forceeditsummary": "ಸಂಪಾದನೆ ಸಾರಾಂಶವನ್ನು ಖಾಲಿ ಬಿಟ್ಟಲ್ಲಿ ನೆನಪಿಸು",
        "tog-watchlisthideown": "ವೀಕ್ಷಣಾ ಪಟ್ಟಿಯಲ್ಲಿ ನನ್ನ ಸಂಪಾದನೆಗಳನ್ನು ತೋರಿಸಬೇಡ",
        "tog-watchlisthideliu": "ಲಾಗ್ ಇನ್ ಆಗಿರುವ ಸದಸ್ಯರ ಸಂಪಾದನೆಗಳನ್ನು ವೀಕ್ಷಣಾಪಟ್ಟಿಯಲ್ಲಿ ಅಡಗಿಸು",
        "tog-watchlistreloadautomatically": "ಯಾವುದೇ ಫಿಲ್ಟರು ಬದಲಾದಾಗ ವೀಕ್ಷಣಾಪಟ್ಟಿ ಮತ್ತೆ ಲೋಡ್ ಆಗಲಿ (ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಇರಬೇಕು)",
        "tog-watchlisthideanons": "ಅನಾಮಧೇಯ ಬಳಕೆದಾರರ ಸಂಪಾದನೆಗಳನ್ನು ವೀಕ್ಷಣಾಪಟ್ಟಿಯಲ್ಲಿ ಅಡಗಿಸು",
-       "tog-watchlisthidepatrolled": "ವà³\80à²\95à³\8dಷಣಾ à²ªà²¤à³\8dತಿಯಲà³\8dಲಿ à²¹à²¸à³\8dತà³\81à²\95ದರà³\8d ಬದಲಾವಣೆಗಳನ್ನು ಅದಗಿಸು",
+       "tog-watchlisthidepatrolled": "ವà³\80à²\95à³\8dಷಣಾ à²ªà²\9fà³\8dà²\9fಿಯಲà³\8dಲಿ à²\97ಸà³\8dತà³\81 à²¤à²¿à²°à³\81à²\97ಿದ ಬದಲಾವಣೆಗಳನ್ನು ಅದಗಿಸು",
        "tog-watchlisthidecategorization": "ಪುಟಗಳ ವರ್ಗೀಕರಣವನ್ನು ಅಡಗಿಸು",
        "tog-ccmeonemails": "ಇತರರಿಗೆ ನಾನು ಕಳುಹಿಸುವ ಇ-ಅಂಚೆಯ ಪ್ರತಿಯನ್ನು ನನಗೂ ಕಳುಹಿಸು",
        "tog-diffonly": "ವ್ಯತ್ಯಾಸಗಳ ಕೆಳಗಿರುವ ಪುಟದ ವಿವರಗಳನ್ನು ತೋರಿಸಬೇಡ",
        "tog-showhiddencats": "ಅಡಗಿಸಲ್ಪಟ್ಟ ವರ್ಗಗಳನ್ನು ತೋರಿಸು",
-       "tog-norollbackdiff": "ತà³\8aಡà³\86ದà³\81ಹಾà²\95ಿದ ನಂತರ ವ್ತ್ಯತ್ಯಾಸವನ್ನು ತೋರಿಸಬೇಡ",
+       "tog-norollbackdiff": "ಹಿಮà³\8dಮರಳà³\81ವಿà²\95à³\86ಯ ನಂತರ ವ್ತ್ಯತ್ಯಾಸವನ್ನು ತೋರಿಸಬೇಡ",
        "tog-useeditwarning": "ಸಂಪಾದನೆಯನ್ನು ಉಳಿಸದೆ ಹೊರಟಲ್ಲಿ ನನಗೆ ಎಚ್ಚರಿಸು",
        "tog-prefershttps": "ಯಾವತ್ತು ಸಹ ಲಾಗಿನ್ ನಂತರ ಸುರಕ್ಷಿತ ಸಂಪರ್ಕವನ್ನು ಬಳಸಿ",
        "underline-always": "ಯಾವಾಗಲೂ",
        "underline-never": "ಎಂದಿಗೂ ಇಲ್ಲ",
        "underline-default": "ಬ್ರೌಸರ್‍ನ ಯಥಾಸ್ಥಿತಿ",
        "editfont-style": "ಬದಲಾಣೆಯ ಜಾಗಾದ ಬರಿಯುವ ಶೈಲ",
-       "editfont-default": "ಬà³\8dರà³\8cಸರದ ಯಥಾಸ್ಥಿತಿ",
-       "editfont-monospace": "à²\92à²\82ದà³\81ಸà³\8dಥಳದ ಮುದ್ರಲಿಪಿ",
+       "editfont-default": "ಬà³\8dರà³\8cಸರà³\8dâ\80\8dನ ಯಥಾಸ್ಥಿತಿ",
+       "editfont-monospace": "ಮà³\8aನà³\8aಸà³\8dಪà³\87ಸà³\8d ಮುದ್ರಲಿಪಿ",
        "editfont-sansserif": "ಸಾನ್ಸ್-ಸೆರಿಫ಼್ ಮುದ್ರಲಿಪಿ",
        "editfont-serif": "ಸೆರಿಫ಼್ ಮುದ್ರಲಿಪಿ",
        "sunday": "ಭಾನುವಾರ",
        "hidden-categories": "{{PLURAL:$1|ಅಡಗಿಸಲ್ಪಟ್ಟ ವರ್ಗ|ಅಡಗಿಸಲ್ಪಟ್ಟ ವರ್ಗಗಳು}}",
        "hidden-category-category": "ಅಡಗಿಸಲ್ಪಟ್ಟಿರುವ ವರ್ಗಗಳು",
        "category-subcat-count": "{{PLURAL:$2|ಈ ವರ್ಗದಲ್ಲಿ ಈ ಕೆಳಗಿನ ಉಪವರ್ಗ ಇದೆ.|ಈ ವರ್ಗದಲ್ಲಿ ಈ ಕೆಳಗಿನ {{PLURAL:$1|ಉಪವರ್ಗವನ್ನು|$1 ಉಪವರ್ಗಗಳನ್ನು}} ಸೇರಿಸಿ, ಒಟ್ಟು $2 ಇವೆ.}}",
-       "category-subcat-count-limited": "ಈ ವರ್ಗದಲ್ಲಿ ಕೆಳಗೆ ತೋರಿಸಿರುವ {{PLURAL:$1|ಉಪವರ್ಗ|$1 ಉಪವರ್ಗಗಳು}} ಇವೆ.",
+       "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 ಇವೆ.}}",
        "navigation": "ಸಂಚರಣೆ",
        "and": "&#32;ಮತ್ತು",
        "qbfind": "ಹುಡುಕು",
-       "qbbrowse": "ವಿಹರಿಸು",
+       "qbbrowse": "à²\95ಣà³\8dಣಾಡಿಸು",
        "qbedit": "ಸಂಪಾದಿಸು",
        "qbpageoptions": "ಈ ಪುಟ",
        "qbmyoptions": "ನನ್ನ ಪುಟಗಳು",
        "faqpage": "Project:ಸಾಮಾನ್ಯವಾಗಿ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು",
        "actions": "ಕ್ರಿಯೆಗಳು",
        "namespaces": "ನಾಮವರ್ಗಗಳು",
-       "variants": "ವà³\8dಯತà³\8dಯಾಸ à²¹à³\8aà²\82ದಿರà³\81ವ",
+       "variants": "ರà³\82ಪಾà²\82ತರà²\97ಳà³\81",
        "navigation-heading": "ಸಂಚರಣೆ ಪಟ್ಟಿ",
        "errorpagetitle": "ದೋಷ",
        "returnto": "$1 ಗೆ ಹಿಂತಿರುಗಿ.",
        "searcharticle": "ಹೋಗು",
        "history": "ಪುಟದ ಇತಿಹಾಸ",
        "history_short": "ಇತಿಹಾಸ",
+       "history_small": "ಇತಿಹಾಸ",
        "updatedmarker": "ನನ್ನ ಕೊನೆಯ ವೀಕ್ಷಣೆಯ ನಂತರ ಬದಲಾಗಿರುವವು",
-       "printableversion": "ಪà³\8dರಿà²\82à²\9fà³\8d ಆವೃತ್ತಿ",
+       "printableversion": "ಮà³\81ದà³\8dರಣ ಆವೃತ್ತಿ",
        "permalink": "ಸ್ಥಿರ ಕೊಂಡಿ",
        "print": "ಮುದ್ರಿಸು",
        "view": "ನೋಟ",
        "deletethispage": "ಈ ಪುಟವನ್ನು ಅಳಿಸಿ",
        "undeletethispage": "ಈ ಪುಟವನ್ನು ಅಳಿಸುವಿಕೆಯನ್ನು ರದ್ದುಮಾಡು",
        "undelete_short": "{{PLURAL:$1|ಒಂದು ಸಂಪಾದನೆಯ|$1 ಸಂಪಾದನೆಗಳ}} ಅಳಿಸುವಿಕೆಯನ್ನು ತೊಡೆದುಹಾಕು",
-       "viewdeleted_short": "ನà³\8bà²\9f {{PLURAL:$1|೧ ಅಳಿಸಲ್ಪಟ್ಟ ಸಂಪಾದನೆ|$1 ಅಳಿಸಲ್ಪಟ್ಟ ಸಂಪಾದನೆಗಳು}}",
+       "viewdeleted_short": "ನà³\8bà²\9f {{PLURAL:$1|à²\92à²\82ದà³\81 ಅಳಿಸಲ್ಪಟ್ಟ ಸಂಪಾದನೆ|$1 ಅಳಿಸಲ್ಪಟ್ಟ ಸಂಪಾದನೆಗಳು}}",
        "protect": "ಸಂರಕ್ಷಿಸು",
        "protect_change": "ಬದಲಾಯಿಸು",
        "protectthispage": "ಈ ಪುಟವನ್ನು ಸಂರಕ್ಷಿಸಿ",
        "talk": "ಚರ್ಚೆ",
        "views": "ನೋಟಗಳು",
        "toolbox": "ಉಪಕರಣಗಳು",
+       "tool-link-userrights": "{{GENDER:$1|ಬಳಕೆದಾರರ}} ಗುಂಪುಗಳನ್ನು ಬದಲಾಯಿಸಿ",
+       "tool-link-userrights-readonly": "{{GENDER:$1|ಬಳಕೆದಾರರ}} ಗುಂಪುಗಳನ್ನು ವೀಕ್ಷಿಸಿ",
+       "tool-link-emailuser": "ಈ {{GENDER:$1|ಬಳಕೆದಾರ}} ಗೆ ಇಮೇಲ್ ಮಾಡಿ",
        "userpage": "ಸದಸ್ಯರ ಪುಟವನ್ನು ವೀಕ್ಷಿಸು",
        "projectpage": "ಯೋಜನೆಯ ಪುಟವನ್ನು ನೋಡು",
        "imagepage": "ಕಡತದ ಪುಟ ವೀಕ್ಷಿಸಿ",
        "redirectedfrom": "($1 ಇಂದ ಪುನರ್ನಿರ್ದೇಶಿತ)",
        "redirectpagesub": "ಪುನರ್ನಿರ್ದೇಶನ ಪುಟ",
        "redirectto": "ಪುನರ್ನಿರ್ದೇಶನ ಇದಕ್ಕೆ:",
-       "lastmodifiedat": "ಈ ಪುಟವನ್ನು ಕೊನೆಯಾಗಿ $2, $1 ರಂದು ಬದಲಾಯಿಸಲಾಗಿತ್ತು.",
+       "lastmodifiedat": "ಈ ಪುಟವನ್ನು $1, $2 ರಂದು ಕೊನೆಯಾಗಿ ಸಂಪಾದಿಸಲಾಯಿತು.",
        "viewcount": "ಈ ಪುಟವನ್ನು {{PLURAL:$1|೧ ಬಾರಿ|$1 ಬಾರಿ}} ವೀಕ್ಷಿಸಲಾಗಿದೆ.",
        "protectedpage": "ಸಂರಕ್ಷಿತ ಪುಟ",
        "jumpto": "ಇಲ್ಲಿಗೆ ಹೋಗು:",
        "view-pool-error": "ಕ್ಷಮಿಸಿ, ಸದ್ಯಕ್ಕೆ ಸರ್ವರ್‌ಗಳ ಮೇಲೆ ಹೆಚ್ಚಿನ ಹೊರೆ ಇದೆ.\nಬಹಳಷ್ಟು ಬಳಕೆದಾರರು ಈ ಸಂಪನ್ಮೂಲವನ್ನು ನೋಡಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದಾರೆ.\nನೀವು ಈ ಸಂಪನ್ಮೂಲವನ್ನು ಇನ್ನೊಮ್ಮೆ ನೋಡಲು ಪ್ರಯತ್ನಿಸುವ ಮೊದಲು ಸ್ವಲ್ಪಹೊತ್ತು ಕಾಯಿರಿ.\n\n$1",
        "generic-pool-error": "ಕ್ಷಮಿಸಿ, ಸದ್ಯಕ್ಕೆ ಸರ್ವರ್‌ಗಳ ಮೇಲೆ ಹೆಚ್ಚಿನ ಹೊರೆ ಇದೆ.\nಬಹಳಷ್ಟು ಬಳಕೆದಾರರು ಈ ಸಂಪನ್ಮೂಲವನ್ನು ನೋಡಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದಾರೆ.\nನೀವು ಈ ಸಂಪನ್ಮೂಲವನ್ನು ಇನ್ನೊಮ್ಮೆ ನೋಡಲು ಪ್ರಯತ್ನಿಸುವ ಮೊದಲು ಸ್ವಲ್ಪಹೊತ್ತು ಕಾಯಿರಿ.",
        "pool-timeout": "ಕಾಲಾವಕಾಶ ಲಾಕ್ ಕಾಯುವುದು",
-       "pool-queuefull": "ಪà³\8dರà²\95à³\8dರಿಯà³\86ಯನà³\8dನà³\81 à²µà²¿à²¶à³\87ಷ à²\95à³\8dಯà³\81 à²ªà³\82ರà³\8dಣ",
+       "pool-queuefull": "ವಿಶà³\87ಷ à²\95à³\8dಯà³\81 à²ªà³\8dರà²\95à³\8dರಿಯà³\86 à²¤à³\81à²\82ಬಿದà³\86",
        "pool-errorunknown": "ಅಪರಿಚಿತ ದೋಷ",
        "pool-servererror": "ಪೂಲ್ ಕೌಂಟರ್ ಸೇವೆಯು ಲಭ್ಯವಿಲ್ಲ ($1).",
        "poolcounter-usage-error": "ಬಳಕೆಯ ದೋಷ: $1",
-       "aboutsite": "ಕನ್ನಡ {{SITENAME}} ಬಗ್ಗೆ",
+       "aboutsite": "{{SITENAME}} ಬಗ್ಗೆ",
        "aboutpage": "Project:ಬಗ್ಗೆ",
-       "copyright": "ವಿಶà³\87ಷವಾà²\97ಿ à²¹à³\87ಳಲಲà³\8dಲಿದರà³\86 à²\87ದà³\81 \"$1\" à²\95ಾಪಿರà³\88à²\9fà³\8d à²\85ಲà³\8dಲಿ à²²à²­à³\8dಯ à²\89à²\82à²\9fà³\81",
+       "copyright": "ವಿಷಯ $1 à²° à²\85ಡಿಯಲà³\8dಲಿ à²²à²­à³\8dಯವಿದà³\86.ಹà²\95à³\8dà²\95à³\81ಸà³\8dವಾಮà³\8dಯ à²\97ಮನಿಸದಿದà³\8dದರà³\86",
        "copyrightpage": "{{ns:project}}:ಕೃತಿಸ್ವಾಮ್ಯತೆಗಳು",
        "currentevents": "ಪ್ರಚಲಿತ ಸಂಗತಿಗಳು",
        "currentevents-url": "Project:ಪ್ರಚಲಿತ ಸಂಗತಿಗಳು",
        "ok": "ಸರಿ",
        "retrievedfrom": "\"$1\" ಇಂದ ಪಡೆಯಲ್ಪಟ್ಟಿದೆ",
        "youhavenewmessages": "ನಿಮಗೆ $1 ಇವೆ ($2).",
-       "youhavenewmessagesfromusers": "{{PLURAL:$4|ನಿನà²\97à³\86}} {{PLURAL:$3|à²\87ನà³\8dನà³\81 à²\92à²\82ದà³\81 à²¸à²¦à²¸à³\8dಯನಿà²\82ದ|$3 à²¸à²¦à²¸à³\8dಯà²\97ಳಿಂದ}} $1 ಉಂಟು. ($2)",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|ನಿನà²\97à³\86}} {{PLURAL:$3|à²\87ನà³\8dನà³\81 à²\92à²\82ದà³\81 à²¸à²¦à²¸à³\8dಯನಿà²\82ದ|$3 à²¸à²¦à²¸à³\8dಯರಿಂದ}} $1 ಉಂಟು. ($2)",
        "youhavenewmessagesmanyusers": " ನಿಮಗೆ ಸುಮಾರು ಸದಸ್ಯಗಳಿಂದ $1 ಉಂಟು ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|ಒಂದು ಹೊಸ ಸಂದೇಶ|999=ಹೊಸ ಸಂದೇಶಗಳು}}",
        "newmessagesdifflinkplural": "ಇತ್ತೀಚಿನ {{PLURAL:$1|ಬದಲಾವಣೆ|999=ಬದಲಾವಣೆಗಳು}}",
        "feed-invalid": "ಸಿಂಧುವಲ್ಲದ ಪ್ರಕಾರದ ಫೀಡು.",
        "feed-unavailable": "ಸಿಂಡಿಕೇಶನ್ ಫೀಡುಗಳು ಲಭ್ಯವಿಲ್ಲ",
        "site-rss-feed": "$1 RSS ಫೀಡು",
-       "site-atom-feed": "$1 Atom ಫೀಡು",
+       "site-atom-feed": "$1 ಅಣು ಫೀಡು",
        "page-rss-feed": "\"$1\" RSS ಫೀಡು",
-       "page-atom-feed": "\"$1\" ಪುಟದ Atom ಫೀಡು",
+       "page-atom-feed": "\"$1\" ಪುಟದ ಅಣು ಫೀಡು",
        "red-link-title": "$1 (ಪುಟವು ಇನ್ನೂ ಸೃಷ್ಟಿತವಾಗಿಲ್ಲ)",
        "sort-descending": "ಇಳಿಕೆ ಕ್ರಮದಲ್ಲಿ ಜೋಡಿಸು",
        "sort-ascending": "ಏರಿಕೆ ಕ್ರಮದಲ್ಲಿ ಜೋಡಿಸು",
        "nstab-user": "ಸದಸ್ಯರ ಪುಟ",
        "nstab-media": "ಮೀಡಿಯ ಪುಟ",
        "nstab-special": "ವಿಶೇಷ ಪುಟ",
-       "nstab-project": "ಬà²\97à³\8dà²\97à³\86",
+       "nstab-project": "ಯà³\8bà²\9cನà³\86ಯ à²ªà³\81à²\9f",
        "nstab-image": "ಚಿತ್ರ",
        "nstab-mediawiki": "ಸಂದೇಶ",
        "nstab-template": "ಟೆಂಪ್ಲೇಟು",
        "nstab-category": "ವರ್ಗ",
        "mainpage-nstab": "ಮುಖ್ಯ ಪುಟ",
        "nosuchaction": "ಆ ರೀತಿಯ ಕೃತ್ಯ ಯಾವುದೂ ಇಲ್ಲ",
-       "nosuchactiontext": "ಈ URL ನೇಮಿಸಿದ ಕೃತ್ಯವು ಈ ವಿಕಿಯಿಂದ ಗುರುತಿಸಬಲ್ಲದಲ್ಲ",
+       "nosuchactiontext": "URL ನಿಂದ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಕ್ರಿಯೆಯು ಅಮಾನ್ಯವಾಗಿದೆ.\nನೀವು URL ತಪ್ಪಾಗಿ ಟೈಪ್ ಮಾಡಿರಬಹುದು, ಅಥವಾ ತಪ್ಪಾದ ಲಿಂಕ್ ಅನ್ನು ಅನುಸರಿಸಿದ್ದೀರಿ.\nಈ {{SITENAME}}  ಬಳಸಲ್ಪಡುವ ತಂತ್ರಾಂಶದಲ್ಲಿ ಒಂದು ದೋಷವನ್ನು ಸೂಚಿಸುತ್ತದೆ.",
        "nosuchspecialpage": "ಆ ಹೆಸರಿನ ವಿಶೇಷ ಪುಟ ಇಲ್ಲ",
        "nospecialpagetext": "<strong>ನೀವು ಅಸ್ಥಿತ್ವದಲ್ಲಿರದ ವಿಶೇಷ ಪುಟವನ್ನು ಕೋರಿರುವಿರಿ.</strong>\n\nಅಸ್ಥಿತ್ವದಲ್ಲಿರುವ ವಿಶೇಷ ಪುಟಗಳ ಪಟ್ಟಿ [[Special:SpecialPages|{{int:specialpages}}]] ಅಲ್ಲಿದೆ.",
        "error": "ದೋಷ",
        "databaseerror": "ಡೇಟಬೇಸ್ ದೋಷ",
-       "databaseerror-text": "ಡà³\87à²\9fಾಬà³\87ಸà³\8d à²\85ನà³\81ರà³\8bಧದಲà³\8dಲಿ à²¤à³\8dರà³\81à²\9fಿ à²\86à²\97ಿದà³\86. \nà²\87ದರ à²\85ರà³\8dಥ à²\87ರಬಹà³\81ದà³\81 à²\8eà²\82ತ à²\85à²\82ದರà³\86 à²¸à²¾à²«à³\8dà²\9fà³\8dವà³\87ರಲà³\8dಲಿ à²\92à²\82ದà³\81 à²¸à²®à²¸à³\8dಯà³\86 à²\87ರಬಹà³\81ದà³\81.",
-       "databaseerror-textcl": "ಡà³\87à²\9fಾಬà³\87ಸà³\8d à²\85ನà³\81ರà³\8bಧದಲà³\8dಲಿ à²¤à³\8dರà³\81à²\9fಿ à²\86à²\97ಿದೆ.",
+       "databaseerror-text": "ಡà³\87à²\9fಾಬà³\87ಸà³\8d à²ªà³\8dರಶà³\8dನà³\86ಯಲà³\8dಲಿ à²¦à³\8bಷ à²¸à²\82ಭವಿಸಿದà³\86.\nà²\87ದà³\81 à²¤à²\82ತà³\8dರಾà²\82ಶದಲà³\8dಲಿನ à²¦à³\8bಷವನà³\8dನà³\81 à²¸à³\82à²\9aಿಸà³\81ತà³\8dತದà³\86.",
+       "databaseerror-textcl": "ಡà³\87à²\9fಾಬà³\87ಸà³\8d à²\85ನà³\81ರà³\8bಧದಲà³\8dಲಿ à²¦à³\8bಷ à²¸à²\82ಭವಿಸಿದೆ.",
        "databaseerror-query": "ಅನುರೋಧ: $1",
        "databaseerror-function": "ಕಾರ್ಯ: $1",
-       "databaseerror-error": "ತà³\8dರà³\81à²\9fಿ: $1",
-       "laggedslavemode": "ಎಚ್ಚರ: ಪುಟದಲ್ಲಿ ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳು ಕಾಣದಿರಬಹುದು.",
+       "databaseerror-error": "ದà³\8bಷ: $1",
+       "laggedslavemode": "<strong>ಎಚ್ಚರ:</strong> ಪುಟದಲ್ಲಿ ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳು ಕಾಣದಿರಬಹುದು.",
        "readonly": "ಡೇಟಬೇಸ್ ಮುಚ್ಚಲಾಗಿದೆ",
        "enterlockreason": "ಡೇಟಬೇಸ್ ಮುಚ್ಚುತಿರುವ ಕಾರಣವನ್ನು ಮತ್ತು ಮತ್ತೆ ಅದನ್ನು ತೆರೆಯುವ ಅಂದಾಜಿತ ಕಾಲವನ್ನು ತಿಳಿಸಿ",
        "readonlytext": "ಹೊಸ ಸೇರ್ಪಡೆಗಳನ್ನು ಮತ್ತು ಇತರ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲಾಗದಂತೆ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಸದ್ಯಕ್ಕೆ ಮುಚ್ಚಲಾಗಿದೆ. ಇದು ಪ್ರಾಯಶಃ ನಿಯತಕಾಲಿಕೆ ದುರಸ್ತಿಗೆ ಇರಬಹುದು ಮತ್ತು ಅದರ ನಂತರ ಸಾಮಾನ್ಯ ಸ್ಥಿತಿಗೆ ಹಿಂದಿರುಗುತ್ತದೆ.\n\nಡೇಟಾಬೇಸ್ ಅನ್ನು ಮುಚ್ಚಿದ ನಿರ್ವಾಹಕ ನೀಡಿರುವ ಕಾರಣ: $1",
        "internalerror": "ಆಂತರಿಕ ದೋಷ",
        "internalerror_info": "ಆಂತರಿಕ ದೋಷ: $1",
        "internalerror-fatal-exception": "\"$1\" ಬಗೆಯ ಒಂದು ಗಂಭೀರವಾದ ಆಕ್ಷೇಪಣೆ",
-       "filecopyerror": "\"$1\" à²«à³\88ಲà³\8d à²\85ನ್ನು \"$2\" ಗೆ ನಕಲಿಸಲಾಗಲಿಲ್ಲ.",
-       "filerenameerror": "\"$1\" à²«à³\88ಲನ್ನು \"$2\" ಎಂದು ಮರುನಾಮಕರಣ ಮಾಡಲು ಆಗಲಿಲ್ಲ.",
-       "filedeleteerror": "\"$1\" à²«à³\88ಲà³\8d à²\85ನ್ನು ಅಳಿಸಲಾಗಲಿಲ್ಲ.",
+       "filecopyerror": "\"$1\" à²\95ಡತವನ್ನು \"$2\" ಗೆ ನಕಲಿಸಲಾಗಲಿಲ್ಲ.",
+       "filerenameerror": "\"$1\" à²\95ಡತವನ್ನು \"$2\" ಎಂದು ಮರುನಾಮಕರಣ ಮಾಡಲು ಆಗಲಿಲ್ಲ.",
+       "filedeleteerror": "\"$1\" à²\95ಡತವನ್ನು ಅಳಿಸಲಾಗಲಿಲ್ಲ.",
        "directorycreateerror": "\"$1\" ನಿದರ್ಶಕವನ್ನು ಸೃಷ್ಟಿಸಲಾಗಲಿಲ್ಲ.",
        "directoryreadonlyerror": "\"$1\" ಕೋಶವು ಓದಲು ಮಾತ್ರವಾಗಿದೆ.",
        "directorynotreadableerror": "\"$1\" ಕೋಶವನ್ನು ಓದಲು ಸಾಧ್ಯವಿಲ್ಲ.",
-       "filenotfound": "\"$1\" à²«à³\88ಲನ್ನು ಹುಡುಕಲಾಗಲಿಲ್ಲ.",
+       "filenotfound": "\"$1\" à²\95ಡತವನ್ನು ಹುಡುಕಲಾಗಲಿಲ್ಲ.",
        "unexpected": "ಅನಿರೀಕ್ಷಿತ ಮೌಲ್ಯ: \"$1\"=\"$2\".",
        "formerror": "ದೋಷ: ಅರ್ಜಿ ಕಳುಹಿಸಲಾಗಲಿಲ್ಲ",
        "badarticleerror": "ಈ ಪುಟದ ಮೇಲೆ ನೀವು ಪ್ರಯತ್ನಿಸಿದ ಕಾರ್ಯವನ್ನು ನಡೆಸಲಾಗದು.",
-       "cannotdelete": "\"$1\" à²\88 à²ªà³\81à²\9f à²\85ಥವಾ à²\9aಿತà³\8dರವನ್ನು ಅಳಿಸಲಾಗಲಿಲ್ಲ. (ಬೇರೊಬ್ಬ ಸದಸ್ಯರಿಂದ ಆಗಲೇ ಅಳಿಸಲ್ಪಟ್ಟಿರಬಹುದು.)",
+       "cannotdelete": "\"$1\" à²\88 à²ªà³\81à²\9f à²\85ಥವಾ à²\95ಡತವನ್ನು ಅಳಿಸಲಾಗಲಿಲ್ಲ. (ಬೇರೊಬ್ಬ ಸದಸ್ಯರಿಂದ ಆಗಲೇ ಅಳಿಸಲ್ಪಟ್ಟಿರಬಹುದು.)",
        "cannotdelete-title": "\"$1\" ಪುಟವನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ",
        "delete-hook-aborted": "ಅಳಿಸುವಿಕೆಯನ್ನು ರದ್ದುಮಾಡಿದ ಕೊಂಡಿ. ಅದು ಯಾವ ವಿವರಣೆ ನೀಡಲಿಲ್ಲ.",
        "no-null-revision": "\"$1\" ಪುಟದ ಶೂನ್ಯ ಪುನರಾವರ್ತನೆಯನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ",
-       "badtitle": "ಸರಿಯಿಲà³\8dಲದ à²¹à³\86ಸರà³\81",
+       "badtitle": "ಸರಿಯಿಲà³\8dಲದ à²¶à³\80ರà³\8dಷಿà²\95à³\86",
        "badtitletext": "ನೀವು ಕೋರಿದ ಪುಟದ ಶೀರ್ಷಿಕೆ ಸಿಂಧುವಲ್ಲದ್ದು ಅಥವ ಖಾಲಿ ಅಥವ ಸರಿಯಾದ ಕೊಂಡಿಯಲ್ಲದ ಅಂತರ-ಭಾಷೆ/ಅಂತರ-ವಿಕಿ ಸಂಪರ್ಕವಾಗಿದೆ.\nಅದರಲ್ಲಿ ಒಂದು ಅಥವ ಹೆಚ್ಚು ಶೀರ್ಷಿಕೆಯಲ್ಲಿ ಬಳಸಲು ನಿಷಿದ್ಧವಾಗಿರುವ ಅಕ್ಷರಗಳು ಇರಬಹುದು.",
        "title-invalid-empty": "ಮನವಿ ಮಾಡಲಾದ ಪುಟದ ಶೀರ್ಷಿಕೆಯು ಖಾಲಿಯಾಗಿದೆ ಅಥವ ಕೇವಲ ನಾಮಸ್ಥಳದ ಹೆಸರನ್ನು ಮಾತ್ರ ಹೊಂದಿದೆ.",
        "title-invalid-utf8": "ಮನವಿ ಮಾಡಲಾದ ಪುಟದ ಶೀರ್ಷಿಕೆಯು ಒಂದು ಅಮಾನ್ಯವಾದ UTF-8 ಅನುಕ್ರಮವನ್ನು ಹೊಂದಿದೆ.",
-       "title-invalid-interwiki": "ಶà³\80ರà³\8dಷಿà²\95à³\86ಯà³\81 à²\85à²\82ತರ-ವಿà²\95ಿ à²\95à³\8aà²\82ಡಿಯನà³\8dನà³\81 à²¹à³\8aà²\82ದಿದà³\86",
+       "title-invalid-interwiki": "ವಿನà²\82ತಿಸಿದ à²ªà³\81à²\9fದ à²¶à³\80ರà³\8dಷಿà²\95à³\86ಯà³\81 à²\85à²\82ತರ-ವಿà²\95ಿ à²\95à³\8aà²\82ಡಿಯನà³\8dನà³\81 à²\92ಳà²\97à³\8aà²\82ಡಿದà³\86, à²\85ದನà³\8dನà³\81 à²¶à³\80ರà³\8dಷಿà²\95à³\86à²\97ಳಲà³\8dಲಿ à²¬à²³à²¸à²²à²¾à²\97à³\81ವà³\81ದಿಲà³\8dಲ.",
        "title-invalid-talk-namespace": "ಮನವಿ ಮಾಡಲಾದ ಪುಟದ ಶೀರ್ಷಿಕೆಯು ಒಂದು ಅಸ್ತಿತ್ವದಲ್ಲಿರದೆ ಇರುವ ಮಾತಿನ ಪುಟವನ್ನು ಸೂಚಿಸುತ್ತದೆ.",
        "title-invalid-characters": "ಮನವಿ ಮಾಡಲಾದ ಪುಟದ ಶೀರ್ಷಿಕೆಯು ಅಮಾನ್ಯವಾದ ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿದೆ: \"$1\".",
        "title-invalid-relative": "ಶೀರ್ಷಿಕೆಯು ಒಂದು ಸಾಂದರ್ಭಿಕ ಮಾರ್ಗವಾಗಿರುತ್ತದೆ. ಸಾಂಧರ್ಭಿಕ ಪುಟದ ಶೀರ್ಷಿಕೆಗಳು (./, ../) ಅಮಾನ್ಯವಾಗಿರುತ್ತದೆ, ಏಕೆಂದರೆ ಬಳಕೆದಾರರ ಜಾಲವೀಕ್ಷಕದಿಂದ ಅವುಗಳನ್ನು ತಲುಪುವುದು ಸಾಮಾನ್ಯವಾಗಿ ಅಸಾಧ್ಯವಾಗಿರುತ್ತದೆ.",
+       "title-invalid-magic-tilde": "ವಿನಂತಿಸಿದ ಪುಟ ಶೀರ್ಷಿಕೆಯು ಅಮಾನ್ಯವಾದ ಮ್ಯಾಜಿಕ್ ಟಿಲ್ಡ್ ಅನುಕ್ರಮವನ್ನು ಹೊಂದಿದೆ (<nowiki> ~~~~ </nowiki>).",
+       "title-invalid-leading-colon": "ವಿನಂತಿಸಿದ ಪುಟ ಶೀರ್ಷಿಕೆಯು ಆರಂಭದಲ್ಲಿ ಅಮಾನ್ಯವಾದ ಕೊಲೊನ್ ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ.",
        "perfcached": "ಈ ಕೆಳಗಿನ ಮಾಹಿತಿಯು cache ಇಂದ ಬಂದಿರುವುದು ಮತ್ತು ಪ್ರಸಕ್ತ ಸ್ಥಿತಿಯನ್ನು ಬಿಂಬಿಸದಿರಬಹುದು. ಹೆಚ್ಚಂದರೆ  {{PLURAL:$1|one result is|$1 results are}} cacheನಲ್ಲಿ ಲಭ್ಯವಿರುವುದು",
        "perfcachedts": "ಈ ಕೆಳಗಿನ ಮಾಹಿತಿ cache ಆಗಿರುವುದು, ಮತ್ತು ಇದರ ಕೊನೆಯ ಬದಲಾವಣೆ ಆಗಿರುವುದು $1. ಹೆಚ್ಚಂದರೆ  {{PLURAL:$4|one result is|$4 results are}} cacheನಲ್ಲಿ ಲಭ್ಯವಿರುವುದು",
-       "querypage-no-updates": "à²\88 à²ªà³\81à²\9fದ à²\85ಪà³\8dಡà³\87à²\9fà³\8dâ\80\8dà²\97ಳನà³\8dನà³\81 à²ªà³\8dರಸà²\95à³\8dತವಾà²\97ಿ à²¨à²¿à²²à³\81à²\97ಡà³\86 à²®à²¾à²¡à²²à²¾à²\97ಿದà³\86. à²\87ಲà³\8dಲಿರà³\81ವ à²®à²¾à²¹à²¿à²¤à²¿à²¯à²¨à³\8dನà³\81 à²¸à²¦à³\8dಯà²\95à³\8dà²\95à³\86 à²¨à²µà³\80à²\95ರಿಸಲಾà²\97à³\81ವà³\81ದಿಲà³\8dಲ.",
+       "querypage-no-updates": "à²\88 à²ªà³\81à²\9fà²\95à³\8dà²\95à³\86 à²¨à²µà³\80à²\95ರಣà²\97ಳà³\81 à²ªà³\8dರಸà³\8dತà³\81ತ à²¨à²¿à²·à³\8dà²\95à³\8dರಿಯà²\97à³\8aà²\82ಡಿದà³\86.\nà²\87ಲà³\8dಲಿರà³\81ವ à²®à²¾à²¹à²¿à²¤à²¿à²¯à²¨à³\8dನà³\81 à²¸à²¦à³\8dಯà²\95à³\8dà²\95à³\86 à²¨à²µà³\80à²\95ರಿಸಲಾà²\97à³\81ವà³\81ದಿಲà³\8dಲ..",
        "viewsource": "ಆಕರ ವೀಕ್ಷಿಸು",
        "viewsource-title": "$1 ಇಗೆ  ಮೂಲವನ್ನು ವಿಕ್ಷಿಸಿ",
        "actionthrottled": "ಕ್ರಿಯೆಯನ್ನು ನಿಯಂತ್ರಿಸಲಾಗಿದೆ",
        "protectedpagetext": "ಈ ಪುಟವನ್ನು ಸಂಪಾದನೆ ಮಾಡಲಾಗದಂತೆ ಸಂರಕ್ಷಿಸಲಾಗಿದೆ.",
        "viewsourcetext": "ಈ ಪುಟದ ಮೂಲವನ್ನು ನೀವು ವೀಕ್ಷಿಸಬಹುದು ಮತ್ತು ನಕಲು ಮಾಡಬಹುದು.",
        "viewyourtext": "ನೀವು <strong>ನಿಮ್ಮ ಸಂಪಾದನೆಗಳನ್ನು</strong> ವೀಕ್ಷಿಸಿ ಮತ್ತು ಅದರ ಮೂಲವನ್ನು ಈ ಹಾಳೆಗೆ ನಕಲಿಸಬಹುದು.",
-       "protectedinterface": "ಈ ಪುಟವು ತಾಂತ್ರಿಕತೆಗೆ ಸಂಪರ್ಕ ಪಠ್ಯವನ್ನು ವಿಕಿಯಲ್ಲಿ ಒದಗಿಸುತ್ತದೆ, ಹಾಗು ದುರುಪಯೋಗ ಆಗದಿರಲೆಂದು ಇದನ್ನು ಸಂರಕ್ಷಿಸಲಾಗಿದೆ. ಎಲ್ಲ ವಿಕಿಗಳಿಗೆ ಭಾಷಾಂತರವನ್ನು ಕೂಡಿಸಲು ಹಾಗು ಬದಲಿಸಲು, [https://translatewiki.net/ translatewiki.net], the MediaWiki localisation ಯೋಜನೆಯನ್ನು ಉಪಯೊಗಿಸಿ",
-       "editinginterface": "'''ಎಚ್ಚರಿಕೆ:''' ನೀವು ತಂತ್ರಾಂಶವು ತಾಣವನ್ನು ಪ್ರದರ್ಶಿಸಲು ಉಪಯೋಗಿಸುವ ಪಠ್ಯವನ್ನು ಹೊಂದಿರುವ ಪುಟವೊಂದನ್ನು ಸಂಪಾದಿಸುತ್ತಿರುವಿರಿ.\nಈ ಪುಟದಲ್ಲಾಗುವ ಬದಲಾವಣೆಗಳು ಇತರ ಬಳಕೆದಾರರಿಗೆ ತಾಣವು ಕಾಣುವ ರೀತಿಯನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ.\nಅನುವಾದಗಳನ್ನು ಮಾಡುತ್ತಿದ್ದರೆ, ದಯವಿಟ್ಟು ಮೀಡಿಯವಿಕಿಯ ಪ್ರಾಂತೀಯತೆ ಯೋಜನೆ [https://translatewiki.net/ translatewiki.net], the MediaWiki localisation project ಯೋಜನೆಯನ್ನು ಉಪಯೊಗಿಸಿ",
+       "protectedinterface": "ಈ ಪುಟವು ತಾಂತ್ರಿಕತೆಗೆ ಸಂಪರ್ಕ ಪಠ್ಯವನ್ನು ವಿಕಿಯಲ್ಲಿ ಒದಗಿಸುತ್ತದೆ, ಹಾಗು ದುರುಪಯೋಗ ಆಗದಿರಲೆಂದು ಇದನ್ನು ಸಂರಕ್ಷಿಸಲಾಗಿದೆ. ಎಲ್ಲ ವಿಕಿಗಳಿಗೆ ಭಾಷಾಂತರವನ್ನು ಕೂಡಿಸಲು ಹಾಗು ಬದಲಿಸಲು, [https://translatewiki.net/ translatewiki.net], ಮೀಡಿಯಾವಿಕಿ ಸ್ಥಳೀಕರಣ ಯೋಜನೆಯನ್ನು ಉಪಯೊಗಿಸಿ",
+       "editinginterface": "<strong>ಎಚ್ಚರಿಕೆ:</strong> ನೀವು ತಂತ್ರಾಂಶವು ತಾಣವನ್ನು ಪ್ರದರ್ಶಿಸಲು ಉಪಯೋಗಿಸುವ ಪಠ್ಯವನ್ನು ಹೊಂದಿರುವ ಪುಟವೊಂದನ್ನು ಸಂಪಾದಿಸುತ್ತಿರುವಿರಿ.\nಈ ಪುಟದಲ್ಲಾಗುವ ಬದಲಾವಣೆಗಳು ಇತರ ಬಳಕೆದಾರರಿಗೆ ತಾಣವು ಕಾಣುವ ರೀತಿಯನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ.\nಅನುವಾದಗಳನ್ನು ಮಾಡುತ್ತಿದ್ದರೆ, ದಯವಿಟ್ಟು ಮೀಡಿಯವಿಕಿಯ ಪ್ರಾಂತೀಯತೆ ಯೋಜನೆ [https://translatewiki.net/ translatewiki.net], ಮೀಡಿಯಾವಿಕಿ ಸ್ಥಳೀಕರಣ ಯೋಜನೆಯನ್ನು ಉಪಯೊಗಿಸಿ",
+       "translateinterface": "ಎಲ್ಲಾ ವಿಕಿಗಳಿಗಾಗಿ ಅನುವಾದಗಳನ್ನು ಸೇರಿಸಲು ಅಥವಾ ಬದಲಿಸಲು, ದಯವಿಟ್ಟು ಮೀಡಿಯಾವಿಕಿ ಸ್ಥಳೀಕರಣ ಯೋಜನೆಯ [https://translatewiki.net/ translatewiki.net] ಅನ್ನು ಬಳಸಿ.",
        "cascadeprotected": "ಈ ಪುಟವು ಸಂಪಾದನೆ ಮಾಡಲಾಗದಂತೆ ಸಂರಕ್ಷಿಸಲಾಗಿದೆ. ಇದಕ್ಕೆ ಕಾರಣ ಈ ಪುಟವನ್ನು ಈ ಕೆಳಗಿನ ತಡಸಲು-ಸಂರಕ್ಷಣೆ ಅಳವಡಿಸಲಾದ {{PLURAL:$1|ಪುಟದಲ್ಲಿ|ಪುಟಗಳಲ್ಲಿ}} ಉಪಯೋಗಿಸಲಾಗಿದೆ:\n$2",
        "namespaceprotected": "ನಿಮಗೆ '''$1''' ಪುಟಪ್ರಬೇಧಕ್ಕೆ ಸೇರಿರುವ ಪುಟಗಳನ್ನು ಸಂಪಾದಿಸುವ ಅನುಮತಿ ಇಲ್ಲ.",
        "customcssprotected": "ಈ ಸಿಎಸ್ಎಸ್ ಪುಟವನ್ನು ಸಂಪಾದಿಸಲು ಈ ಪುಟವು ಇನ್ನೊಬ್ಬ ಬಳಕೆದಾರನ ವಯುಕ್ತಿಕ ವ್ಯವಸ್ಥೆಯನ್ನು ಹೊಂದಿರುವುದರಿಂದ ಅನುಮತಿ ಇಲ್ಲ",
        "customjsprotected": "ಈ ಜಾವಾ ಸ್ಕ್ರಿಪ್ಟ್ ಪುಟವನ್ನು ಸಂಪಾದಿಸಲು ಈ ಪುಟವು ಇನ್ನೊಬ್ಬ ಬಳಕೆದಾರನ ವಯುಕ್ತಿಕ ವ್ಯವಸ್ಥೆಯನ್ನು ಹೊಂದಿರುವುದರಿಂದ ಅನುಮತಿ ಇಲ್ಲ",
        "mycustomcssprotected": "ಈ ಪುಟವನ್ನು ಸಂಪಾದಿಸಲು ನಿಮಗೆ ಅನುಮತಿ ಇಲ್ಲ.",
-       "mycustomjsprotected": "ಈ ಪುಟವನ್ನು ಸಂಪಾದಿಸಲು ನಿಮಗೆ ಅನುಮತಿ ಇಲ್ಲ.",
+       "mycustomjsprotected": "à²\88 à²\9cಾವಾ à²¸à³\8dà²\95à³\8dರಿಪà³\8dà²\9fà³\8d à²ªà³\81à²\9fವನà³\8dನà³\81 à²¸à²\82ಪಾದಿಸಲà³\81 à²¨à²¿à²®à²\97à³\86 à²\85ನà³\81ಮತಿ à²\87ಲà³\8dಲ.",
        "myprivateinfoprotected": "ನಿಮ್ಮ ಸೂಕ್ಷ್ಮ ವಿಚಾರಗಳನ್ನು ಸಂಪಾದಿಸಲು ನಿಮಗೆ ಅನುಮತಿ ಇಲ್ಲ.",
        "mypreferencesprotected": "ನಿಮ್ಮ ಆಯ್ಕೆಗಳನ್ನು  ಸಂಪಾದಿಸಲು ನಿಮಗೆ ಅನುಮತಿ ಇಲ್ಲ",
        "ns-specialprotected": "ವಿಶೇಷ ಪುಟಗಳನ್ನು ಸಂಪಾದಿಸಲು ಆಗುವುದಿಲ್ಲ.",
        "titleprotected": "ಈ ಹೆಸರಿನ ಪುಟವನ್ನು ಸೃಷ್ಟಿಸಲಾಗದಂತೆ [[User:$1|$1]] ಅವರು ಸಂರಕ್ಷಿಸಿದ್ದಾರೆ.\nಸಂರಕ್ಷಣೆಗೆ ನೀಡಿರುವ ಕಾರಣ: <em>$2</em>.",
-       "filereadonlyerror": "\"$1\" à²\95ಡತವà³\81 à²\93ದಲà³\81 à²®à²¾à²¤à³\8dರ à²¸à²¾à²¦à³\8dಯವಿರà³\81ವ à²°à³\80ತಿಯಲà³\8dಲಿರà³\81ವ \"$2\" à²¸à²\82ಪà³\81à²\9fದಲà³\8dಲಿ à²\87ರà³\81ವà³\81ದರಿà²\82ದ à²\87ದನà³\8dನà³\81  à²®à²¾à²°à³\8dಪಡಿಸಲà³\81 à²¸à²¾à²¦à³\8dಯವಾà²\97à³\81ತà³\8dತಿಲà³\8dಲ.\nà²\87ದನà³\8dನà³\81 à²¬à²¦à³\8dದà²\97à³\8aಳಿಸಿರà³\81ವ à²¨à²¿à²°à³\8dವಾಹà²\95ರà³\81 à²\88 à²µà²¿à²µà²°à²£à³\86ಯನà³\8dನà³\81 à²¨à³\80ಡà³\81ತà³\8dತಿದà³\8dದಾರà³\86: \"$3\"",
+       "filereadonlyerror": "\"$1\" à²\95ಡತವà³\81 à²\93ದಲà³\81 à²®à²¾à²¤à³\8dರ à²¸à²¾à²¦à³\8dಯವಿರà³\81ವ à²°à³\80ತಿಯಲà³\8dಲಿರà³\81ವ \"$2\" à²¸à²\82ಪà³\81à²\9fದಲà³\8dಲಿ à²\87ರà³\81ವà³\81ದರಿà²\82ದ à²\87ದನà³\8dನà³\81  à²®à²¾à²°à³\8dಪಡಿಸಲà³\81 à²¸à²¾à²¦à³\8dಯವಾà²\97à³\81ತà³\8dತಿಲà³\8dಲ.\nà²\87ದರ à²µà²¿à²µà²°à²£à³\86ಯನà³\8dನà³\81 à²¬à²¦à³\8dದà²\97à³\8aಳಿಸಿರà³\81ವ à²¨à²¿à²°à³\8dವಾಹà²\95ರà³\81 à²¨à³\80ಡà³\81ವರà³\81: \"$3\"",
        "invalidtitle-knownnamespace": "\"$2\"ನೇಮ್ ಸ್ಪೇಸ್ ಮತ್ತು \"$3\"ಪಠ್ಯದೊಂದಿಗೆ ಅಸಮಂಜಸ ತಲೆಬರಹ",
        "invalidtitle-unknownnamespace": "$1ನೇಮ್ ಸ್ಪೇಸ್ ಮತ್ತು \"$2\"ಪಠ್ಯದೊಂದಿಗೆ ಅಸಮಂಜಸ ತಲೆಬರಹ",
        "exception-nologin": "ಲಾಗಿನ್ ಆಗಿಲ್ಲ",
        "cannotlogoutnow-title": "ಈಗ ಲಾಗ್ ಔಟ್ ಮಾಡಲಾಗುತ್ತಿಲ್ಲ",
        "cannotlogoutnow-text": "$1 ಬಳಸುವಾಗ ಲಾಗ್ ಔಟ್ ಆಗಲು ಸಾಧ್ಯವಿಲ್ಲ.",
        "welcomeuser": "ಸುಸ್ವಾಗತ,$1!",
-       "welcomecreation-msg": "ನಿಮ್ಮ ಖಾತೆ ತೆರೆಯಲಾಗಿದೆ.ನಿಮ್ಮ [[Special:Preferences|{{SITENAME}} preferences]]ಬದಲಾಯಿಸಲು ಮರೆಯಬೇಡಿ.",
-       "yourname": "ನಿಮà³\8dಮ à²¬à²³à²\95à³\86ಯ à²¹à³\86ಸರà³\81",
+       "welcomecreation-msg": "ನಿಮ್ಮ ಖಾತೆ ತೆರೆಯಲಾಗಿದೆ.ನಿಮ್ಮ [[Special:Preferences|ಆದ್ಯತೆಗಳು]] ಬದಲಾಯಿಸಲು ಮರೆಯಬೇಡಿ.",
+       "yourname": "ಬಳà²\95à³\86ದಾರರ à²¹à³\86ಸರà³\81:",
        "userlogin-yourname": "ಬಳಕೆದಾರರ ಹೆಸರು",
        "userlogin-yourname-ph": "ನಿಮ್ಮ ಸದಸ್ಯನಾಮ ಬರೆಯಿರಿ",
        "createacct-another-username-ph": "ಬಳಕೆದಾರರ ಹೆಸರು ಬರೆಯಿರಿ",
-       "yourpassword": "ನಿಮà³\8dಮ à²ªà³\8dರವà³\87ಶಪದ",
+       "yourpassword": "ಪà³\8dರವà³\87ಶಪದ:",
        "userlogin-yourpassword": "ಪ್ರವೇಶಪದ",
        "userlogin-yourpassword-ph": "ನಿಮ್ಮ ಪ್ರವೇಶಪದ ನಮೂದಿಸಿ",
        "createacct-yourpassword-ph": "ಪ್ರವೇಶಪದ ಒಂದನ್ನು ನಮೂದಿಸಿ",
        "createacct-yourpasswordagain": "ಪ್ರವೇಶಪದವನ್ನು ಧೃಡೀಕರಿಸಿ",
        "createacct-yourpasswordagain-ph": "ಪ್ರವೇಶಪದವನ್ನು ಮತ್ತೊಮ್ಮೆ ನಮೂದಿಸಿ",
        "userlogin-remembermypassword": "ನನ್ನನ್ನು ಲಾಗಿನ್ ಆಗಿಯೇ ಇಡಿ",
-       "userlogin-signwithsecure": "ಸುರಕ್ಷಿತವಾದ ಕನೆಕ್ಷನ್ ಉಪಯೋಗಿಸಿ.",
+       "userlogin-signwithsecure": "ಸುರಕ್ಷಿತ ಸಂಪರ್ಕವನ್ನು ಬಳಸಿ",
        "cannotlogin-title": "ಲಾಗ್ ಇನ್ ಮಾಡಲಾಗುತ್ತಿಲ್ಲ",
        "cannotlogin-text": "ಲಾಗ್ ಇನ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ.",
        "cannotloginnow-title": "ಈಗ ಲಾಗ್ ಇನ್ ಮಾಡಲು ಆಗುತ್ತಿಲ್ಲ",
        "cannotloginnow-text": "$1 ಬಳಸುವಾಗ ಲಾಗ್ ಇನ್ ಆಗಲು ಸಾಧ್ಯವಿಲ್ಲ.",
        "cannotcreateaccount-title": "ಖಾತೆಗಳನ್ನು ಸೃಷ್ಟಿಸಲಾಗುತ್ತಿಲ್ಲ",
+       "cannotcreateaccount-text": "ನೇರ ಖಾತೆಯ ರಚನೆಯು ಈ ವಿಕಿಯಲ್ಲಿ ಸಕ್ರಿಯಗೊಂಡಿಲ್ಲ.",
        "yourdomainname": "ನಿಮ್ಮ ಕ್ಷೇತ್ರ:",
        "password-change-forbidden": "ನೀವು ಈ ವಿಕಿಯಲ್ಲಿ ಪ್ರವೇಶಪದವನ್ನು ಬದಲಾಯಿಸಲು ಸಾದ್ಯವಿಲ್ಲ.",
+       "externaldberror": "ದೃಢೀಕರಣ ಡೇಟಾಬೇಸ್ ದೋಷ ಕಂಡುಬಂದಿದೆ ಅಥವಾ ನಿಮ್ಮ ಬಾಹ್ಯ ಖಾತೆಯನ್ನು ನವೀಕರಿಸಲು ನಿಮಗೆ ಅನುಮತಿ ಇಲ್ಲ.",
        "login": "ಲಾಗ್ ಇನ್",
-       "nav-login-createaccount": "ಲಾಗ್ ಇನ್ - log in",
-       "userlogin": "ಲಾಗ್ ಇನ್ - log in",
-       "userloginnocreate": "ಲಾಗ್ ಇನ್",
+       "login-security": "ನಿಮ್ಮ ಗುರುತನ್ನು ಪರಿಶೀಲಿಸಿ",
+       "nav-login-createaccount": "ಲಾಗ್ ಇನ್ / ಖಾತೆ ರಚಿಸಿ",
        "logout": "ಲಾಗ್ ಔಟ್",
        "userlogout": "ಲಾಗ್ ಔಟ್",
        "notloggedin": "ಲಾಗಿನ್ ಆಗಿಲ್ಲ",
        "userlogin-noaccount": "ಖಾತೆ ಇಲ್ಲವೇ?",
        "userlogin-joinproject": "{{SITENAME}} ಸೇರಿ",
-       "nologin": "ಖಾತೆ ಇಲ್ಲವೇ? '''$1'''.",
-       "nologinlink": "ಖಾತೆಯನ್ನು ಸೃಷ್ಟಿಸಿ",
        "createaccount": "ಹೊಸ ಖಾತೆ ತೆರೆಯಿರಿ",
-       "gotaccount": "ಈಗಾಗಲೇ ಖಾತೆಯಿದೆಯೇ? '''$1'''.",
-       "gotaccountlink": "ಲಾಗ್ ಇನ್",
-       "userlogin-resetlink": "ನಿಮ್ಮ ಲಾಗಿನ್ ವಿವರಗಳನ್ನು ಮರೆತಿದ್ದೀರಾ?",
        "userlogin-resetpassword-link": "ನಿಮ್ಮ ಪ್ರವೇಶಪದ ಮರೆತಿರೇ?",
        "userlogin-helplink2": "ಲಾಗಿನ್ ಆಗಲು ಸಹಾಯ",
+       "userlogin-loggedin": "ನೀವು ಈಗಾಗಲೇ {{GENDER:$1|$1}} ಆಗಿ ಲಾಗ್ ಇನ್ ಮಾಡಿದ್ದೀರಿ.\nಇನ್ನೊಂದು ಬಳಕೆದಾರರಂತೆ ಪ್ರವೇಶಿಸಲು ಕೆಳಗಿನ ಫಾರ್ಮ್ ಅನ್ನು ಬಳಸಿ.",
        "userlogin-reauth": "ನೀವು {{GENDER:$1|$1}} ಎಂದು ಖಾತ್ರಿ ಮಾಡಲು ಮತ್ತೆ ಲಾಗ್ ಇನ್ ಆಗಬೇಕು.",
        "userlogin-createanother": "ಇನ್ನೊಂದು ಖಾತೆಯನ್ನು ಸೃಷ್ಟಿಸಿ",
        "createacct-emailrequired": "ಇ-ಮೇಲ್ ವಿಳಾಸ:",
        "createacct-emailoptional": "ಮಿಂಚಂಚೆ ವಿಳಾಸ (ಐಚ್ಛಿಕ)",
        "createacct-email-ph": "ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ",
        "createacct-another-email-ph": "ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ",
-       "createaccountmail": "(ರಾಂಡಮ್) ತಾತ್ಕಾಲಿಕವಾಗಿ ಯಾದೃಚ್ಛಿಕ ಪಾಸ್ವರ್ಡ್ ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಸೂಚಿಸಿ: ಕಳುಹಿಸಿ",
+       "createaccountmail": "ತಾತ್ಕಾಲಿಕವಾಗಿ ಮನಬ೦ದ೦ತ ಸಂಕೇತ ಪದ ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಸೂಚಿಸಿದ ಇಮೇಲ್ ವಿಳಾಸಕ್ಕೆ ಕಳುಹಿಸಿ",
+       "createaccountmail-help": "ಪಾಸ್ವರ್ಡ್ ಕಲಿಯದೆಯೇ ಇನ್ನೊಬ್ಬ ವ್ಯಕ್ತಿಯ ಖಾತೆಗಳನ್ನು ರಚಿಸಲು ಬಳಸಬಹುದು.",
        "createacct-realname": "ನಿಜವಾದ ಹೆಸರು (ಐಚ್ಛಿಕ)",
-       "createaccountreason": "ಕಾರಣ:",
        "createacct-reason": "ಕಾರಣ",
        "createacct-reason-ph": "ನೀವು ಯಾಕೆ ಇನ್ನೊಂದು ಖಾತೆ ತೆರೆಯುತ್ತಿದ್ದೀರಿ",
-       "createacct-submit": "ಖಾತೆಯನ್ನು ಸೃಷ್ಟಿಸಿ",
+       "createacct-reason-help": "ಖಾತೆ ಸೃಷ್ಟಿ ಲಾಗ್ನಲ್ಲಿ ಸಂದೇಶವನ್ನು ತೋರಿಸಲಾಗಿದೆ",
+       "createacct-submit": "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಸೃಷ್ಟಿಸಿ",
        "createacct-another-submit": "ಖಾತೆಯನ್ನು ಸೃಷ್ಟಿಸಿ",
        "createacct-continue-submit": "ಖಾತೆಯ ಸೃಷ್ಟಿಯನ್ನು ಮುಂದುವರೆಸಿ",
        "createacct-another-continue-submit": "ಖಾತೆಯ ಸೃಷ್ಟಿಯನ್ನು ಮುಂದುವರೆಸಿ",
        "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": "ನೀವು ಕೊಟ್ಟ ಪ್ರವೇಶಪದಗಳು ಬೇರೆಬೇರೆಯಾಗಿವೆ.",
+       "usernameinprogress": "ಈ ಬಳಕೆದಾರರ ಹೆಸರಿನ ಖಾತೆ ರಚನೆ ಈಗಾಗಲೇ ಪ್ರಗತಿಯಲ್ಲಿದೆ.\nದಯಮಾಡಿ ನಿರೀಕ್ಷಿಸಿ.",
        "userexists": "ನೀವು ನೀಡಿದ ಸದಸ್ಯರ ಹೆಸರು ಆಗಲೆ ಬಳಕೆಯಲ್ಲಿದೆ. ದಯವಿಟ್ಟು ಬೇರೊಂದು ಹೆಸರನ್ನು ಆಯ್ಕೆ ಮಾಡಿ.",
        "loginerror": "ಲಾಗಿನ್ ದೋಷ",
-       "createacct-error": "à²\96ಾತà³\86 à²¨à²¿à²°à³\8dಮಾಣ à²¤à³\8dರà³\81à²\9fಿ",
+       "createacct-error": "à²\96ಾತà³\86 à²¨à²¿à²°à³\8dಮಾಣ à²¦à³\8bಷ",
        "createaccounterror": "$1 ಖಾತೆ ನಿರ್ಮಾಣ ಮಾಡಲಿಕ್ಕೆ ಆಗಲಿಲ್ಲ.",
-       "nocookiesnew": "ನಿಮ್ಮ ಬಳಕೆದಾರ ಖಾತೆಯು ಸೃಷ್ಟಿತವಾಗಿದೆ, ಆದರೆ ನೀವು ಲಾಗ್ ಇನ್ ಆಗಿಲ್ಲ.\n{{SITENAME}} ಲಾಗ್ ಇನ್ ಮಾಡಲು cookieಗಳನ್ನು ಉಪಯೋಗಿಸುತ್ತದೆ.\nನಿಮ್ಮ ಗಣಕಯಂತ್ರದಲ್ಲಿ cookieಗಳು ನಿಷಿದ್ಧವಾಗಿದೆ.\nದಯವಿಟ್ಟು ಈ ನಿಷೇಧವನ್ನು ತೆಗೆದು, ನಿಮ್ಮ ಬಳಕೆದಾರ ಹೆಸರು ಮತ್ತು ಪ್ರವೇಶಪದಗಳನ್ನು ಉಪಯೋಗಿಸಿ ಲಾಗ್ ಇನ್ ಆಗಿ.",
-       "nocookieslogin": "{{SITENAME}} ಬಳಕೆದಾರರನ್ನು ಲಾಗ್ ಇನ್ ಮಾಡಲು cookieಗಳನ್ನು ಉಪಯೋಗಿಸುತ್ತದೆ.\nನಿಮ್ಮ ಗಣಕಯಂತ್ರದಲ್ಲ್ cookieಗಳ ಉಪಯೋಗ ನಿಷಿದ್ಧವಾಗಿದೆ.\nದಯವಿಟ್ಟು ಆ ನಿಷೇಧವನ್ನು ತೆಗೆದು ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.",
+       "nocookiesnew": "ನಿಮ್ಮ ಬಳಕೆದಾರ ಖಾತೆಯು ಸೃಷ್ಟಿತವಾಗಿದೆ, ಆದರೆ ನೀವು ಲಾಗ್ ಇನ್ ಆಗಿಲ್ಲ.\n{{SITENAME}} ಲಾಗ್ ಇನ್ ಮಾಡಲು ಕುಕೀಸ್ಗಳನ್ನು ಉಪಯೋಗಿಸುತ್ತದೆ.\nನಿಮ್ಮ ಗಣಕಯಂತ್ರದಲ್ಲಿ ಕುಕೀಸ್ಗಳು ನಿಷಿದ್ಧವಾಗಿದೆ.\nದಯವಿಟ್ಟು ಈ ನಿಷೇಧವನ್ನು ತೆಗೆದು, ನಿಮ್ಮ ಬಳಕೆದಾರ ಹೆಸರು ಮತ್ತು ಪ್ರವೇಶಪದಗಳನ್ನು ಉಪಯೋಗಿಸಿ ಲಾಗ್ ಇನ್ ಆಗಿ.",
+       "nocookieslogin": "{{SITENAME}} ಬಳಕೆದಾರರು ಪ್ರವೇಶಿಸಲು ಕುಕೀಸ್ ಅನ್ನು ಬಳಸುತ್ತಾರೆ.\nನಿಮ್ಮ ಕುಕೀಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.\nದಯವಿಟ್ಟು ಅವುಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ ಮತ್ತು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.",
+       "nocookiesfornew": "ಅದರ ಮೂಲವನ್ನು ನಾವು ಖಚಿತಪಡಿಸಲು ಸಾಧ್ಯವಾಗದ ಕಾರಣ ಬಳಕೆದಾರ ಖಾತೆಯನ್ನು ರಚಿಸಲಾಗಿಲ್ಲ.\nನೀವು ಕುಕೀಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿರುವಿರಾ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ, ಈ ಪುಟವನ್ನು ಮರುಲೋಡ್ ಮಾಡಿ ಮತ್ತು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.",
        "noname": "ನೀವು ಸರಿಯಾದ ಬಳಕೆದಾರ ಹೆಸರನ್ನು ಸೂಚಿಸಿಲ್ಲ.",
        "loginsuccesstitle": "ಲಾಗಿನ್ ಯಶಸ್ವಿ",
-       "loginsuccess": "ನೀವು ಈಗ \"$1\" ಆಗಿ ವಿಕಿಪೀಡಿಯಕ್ಕೆ ಲಾಗಿನ್ ಆಗಿದ್ದೀರಿ.",
-       "nosuchuser": "\"$1\" ಹೆಸರಿನ ಯಾವ ಸದಸ್ಯರೂ ಇಲ್ಲ.\nಸದಸ್ಯನಾಮದಲ್ಲಿ ಲಘು ಮತ್ತು ದೀರ್ಘ ಅಕ್ಷರಗಳಲ್ಲಿ ವ್ಯತ್ಯಾಸವಿದೆ.\nಕಾಗುಣಿತವನ್ನು ಪರೀಕ್ಷಿಸಿ, ಅಥವಾ [[Special:CreateAccount|ಹೊಸ ಸದಸ್ಯತ್ವ ಖಾತೆಯನ್ನು ಸೃಷ್ಟಿಸಿ]].",
+       "loginsuccess": "<strong>ನೀವು ಈಗ \"$1\" ಆಗಿ ವಿಕಿಪೀಡಿಯಕ್ಕೆ ಲಾಗಿನ್ ಆಗಿದ್ದೀರಿ.</strong>",
+       "nosuchuser": "\"$1\" à²¹à³\86ಸರಿನ à²¯à²¾à²µ à²¸à²¦à²¸à³\8dಯರà³\82 à²\87ಲà³\8dಲ.\nಸದಸà³\8dಯನಾಮದಲà³\8dಲಿ à²²à²\98à³\81 à²®à²¤à³\8dತà³\81 à²¦à³\80ರà³\8dà²\98 à²\85à²\95à³\8dಷರà²\97ಳಲà³\8dಲಿ à²¸à³\82à²\95à³\8dಷà³\8dಮವಾದ à²µà³\8dಯತà³\8dಯಾಸವಿದà³\86.\nà²\95ಾà²\97à³\81ಣಿತವನà³\8dನà³\81 à²ªà²°à³\80à²\95à³\8dಷಿಸಿ, à²\85ಥವಾ [[Special:CreateAccount|ಹà³\8aಸ à²¸à²¦à²¸à³\8dಯತà³\8dವ à²\96ಾತà³\86ಯನà³\8dನà³\81 à²¸à³\83ಷà³\8dà²\9fಿಸಿ]].",
        "nosuchusershort": "\"$1\" ಹೆಸರಿನ ಸದಸ್ಯರು ಯಾರೂ ಇಲ್ಲ.\nಹೆಸರಲ್ಲಿ ಕಾಗುಣಿತ ತಪ್ಪಿದೆಯೆ ಎಂದು ಪರೀಕ್ಷಿಸಿ.",
        "nouserspecified": "ನೀವು ಒಂದು ಸದಸ್ಯತ್ವದ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು.",
        "login-userblocked": "ಈ ಬಳಕೆದಾರರನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ. ಲಾಗಿನ್ ಆಗಲು ಸಾದ್ಯವಿಲ್ಲ.",
        "wrongpassword": "ತಪ್ಪು ಪ್ರವೇಶ ಪದ ನೀಡಿರುವಿರಿ. ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.",
        "wrongpasswordempty": "ಖಾಲಿ ಪ್ರವೇಶ ಪದವನ್ನು ನೀಡಿರುವಿರಿ. ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.",
        "passwordtooshort": "ಪ್ರವೇಶಪದ ಕನಿಷ್ಟ {{PLURAL:$1|೧ ಅಕ್ಷರವನ್ನು|$1 ಅಕ್ಷರಗಳನ್ನು}} ಹೊಂದಿರಬೇಕು.",
+       "passwordtoolong": "ಪ್ರವೇಶ ಸಂಕೇತ ಪದ ಕನಿಷ್ಟ {{PLURAL:$1|೧ ಅಕ್ಷರವನ್ನು|$1 ಅಕ್ಷರಗಳನ್ನು}} ಹೊಂದಿರಬೇಕು.",
+       "passwordtoopopular": "ಸಾಮಾನ್ಯವಾಗಿ ಆಯ್ಕೆ ಮಾಡಿದ ಪ್ರವೇಶ ಸಂಕೇತ ಪದಗಳನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ. ದಯವಿಟ್ಟು ಇನ್ನಷ್ಟು ಅನನ್ಯ ಪ್ರವೇಶ ಸಂಕೇತ ಪದಗಳನ್ನು ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಿ.",
        "password-name-match": "ನಿಮ್ಮ ಬಳಕೆದಾರ ಹೆಸರಿನಿಂದ ಪ್ರವೇಶಪದ ವಿಭಿನ್ನವಾಗಿರಬೇಕು.",
        "password-login-forbidden": "ಈ ಬಳಕೆದಾರರ ಹೆಸರು ಮತ್ತು ಪ್ರವೇಶಪದವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.",
        "mailmypassword": "ಪ್ರವೇಶಪದವನ್ನು ಪುನಃಸ್ಥಾಪಿಸಿ.",
        "passwordremindertitle": "{{SITENAME}}ಗೆ ಹೊಸ ತಾತ್ಕಾಲಿಕ ಪ್ರವೇಶ ಪದ",
-       "passwordremindertext": "{{SITENAME}} ($4) ಸೈಟಿಗೆ ಹೊಸ ಪ್ರವೇಶಪದವನ್ನು $1 ಐ.ಪಿ. ವಿಳಾಸದಿಂದ ಕೋರಲಾಗಿದೆ.\nಸದಸ್ಯ \"$2\" ಅವರ ಹೊಸ ಪ್ರವೇಶಪದ ಈಗ \"$3\".\nನೀವು ಲಾಗ್ ಇನ್ ಆಗಿ ತಮ್ಮ ಪ್ರವೇಶಪದವನ್ನು ಬದಲಾಯಿಸಿ.\n\nನೀವು ಈ ಕೋರಿಕೆಯನ್ನು ಮಾಡಿಲ್ಲದಿದ್ದರೆ, ಅಥವ ನೀವು ನಿಮ್ಮ ಹಳೆಯ ಪ್ರವೇಶಪದವನ್ನು ನೆನಪಿಸಿಕೊಂಡರೆ ಈ ಮಾಹಿತಿಗೆ ಗಮನ ನೀಡದೆ ನಿಮ್ಮ ಹಳೆಯ ಪ್ರವೇಶಪದವನ್ನು ಉಪಯೋಗಿಸಲು ಮುಂದುವರೆಸಿರಿ.",
+       "passwordremindertext": "{{SITENAME}} ($4) ಸೈಟಿಗೆ ಹೊಸ ಪ್ರವೇಶಪದವನ್ನು $1 ಐ.ಪಿ. ವಿಳಾಸದಿಂದ ಕೋರಲಾಗಿದೆ.\nಸದಸ್ಯ \"$2\" ಅವರ ಹೊಸ ಪ್ರವೇಶಪದ ಈಗ \"$3\".\nನೀವು ಲಾಗ್ ಇನ್ ಆಗಿ ತಮ್ಮ ಪ್ರವೇಶಪದವನ್ನು ಬದಲಾಯಿಸಿ.\nನಿಮ್ಮ ತಾತ್ಕಾಲಿಕ ಪಾಸ್ವರ್ಡ್ {{PLURAL:$5|ಒಂದು ದಿನ|$5 ದಿನಗಳಲ್ಲಿ}}. ಕೊನೆಗೊಳ್ಳಲಿದೆ.\nನೀವು ಈ ಕೋರಿಕೆಯನ್ನು ಮಾಡಿಲ್ಲದಿದ್ದರೆ, ಅಥವ ನೀವು ನಿಮ್ಮ ಹಳೆಯ ಪ್ರವೇಶಪದವನ್ನು ನೆನಪಿಸಿಕೊಂಡರೆ ಈ ಮಾಹಿತಿಗೆ ಗಮನ ನೀಡದೆ ನಿಮ್ಮ ಹಳೆಯ ಪ್ರವೇಶಪದವನ್ನು ಉಪಯೋಗಿಸಲು ಮುಂದುವರೆಸಿರಿ.",
        "noemail": "ಸದಸ್ಯ \"$1\" ಅವರ ಹೆಸರಿನಲ್ಲಿ ಯಾವ ಇ-ಅಂಚೆ ವಿಳಾಸವೂ ದಾಖಲಾಗಿಲ್ಲ.",
        "noemailcreate": "ನೀವು ಬಳಕೆಯಲ್ಲಿರುವ ಮಿಂಚಂಚೆ ವಿಳಾಸ ನೀಡಬೇಕಾಗುವುದು.",
        "passwordsent": "\"$1\" ಅವರ ಹೆಸರಿನಲ್ಲಿ ನೋಂದಾಯಿತವಾದ ಇ-ಅಂಚೆ ವಿಳಾಸಕ್ಕೆ ಹೊಸ ಪ್ರವೇಶಪದವನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ.\nಅದನ್ನು ಪಡೆದ ಮೇಲೆ ಮತ್ತೆ ಲಾಗಿನ್ ಆಗಿ.",
        "eauthentsent": "ನೀವು ನೊಂದಾಯಿಸಿದ ಇ-ಅಂಚೆ ವಿಳಾಸಕ್ಕೆ ಧೃಡೀಕರಣ ಅಂಚೆಯನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ.\nಈ ವಿಳಾಸಕ್ಕೆ ಮುಂದೆ ಯಾವುದೇ ಇ-ಅಂಚೆ ಕಳುಹಿಸಲ್ಪಡುವ ಮುನ್ನ ನೀವು ಈ ಕಳುಹಿಸಿರುವ ಅಂಚೆಯಲ್ಲಿನ ನಿರ್ದೇಶನಗಳನ್ನು ಪಾಲಿಸಿ, ಈ ವಿಳಾಸವು ನಿಮ್ಮದೇ ಎಂದು ಧೃಡೀಕರಿಸಬೇಕು.",
        "throttled-mailpassword": "ಕಳೆದ $1 ಗಂಟೆಗಳ ಒಳಗೆ ಒಂದು ಪ್ರವೇಶ ಪದವನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ.\nದುರುಪಯೋಗಗಳನ್ನು ತಡೆಗಟ್ಟಲು ಪ್ರವೇಶಪದಗಳನ್ನು ಪ್ರತಿ {{PLURAL:$1|ಗಂಟೆಗೆ|$1 ಗಂಟೆಗಳಲ್ಲಿ}} ಕೇವಲ ಒಂದು ಬಾರಿ ಕಳುಹಿಸಲಾಗುವುದು.",
        "mailerror": "ಅಂಚೆ ಕಳುಹಿಸುವಲ್ಲಿ ದೋಷ: $1",
-       "acct_creation_throttle_hit": "ಕ್ಷಮಿಸಿ, ನೀವಾಗಲೇ{{PLURAL:$1|೧ ಖಾತೆಯನ್ನು|$1 ಖಾತೆಗಳನ್ನು}} ತೆರೆದಿದ್ದೀರಿ.\nಇನ್ನು ಹೆಚ್ಚಿನ ಖಾತೆಗಳನ್ನು ತೆರೆಯಲಾಗುವುದಿಲ್ಲ.",
+       "acct_creation_throttle_hit": "ಕ್ಷಮಿಸಿ, ನೀವಾಗಲೇ{{PLURAL:$1|೧ ಖಾತೆಯನ್ನು|$1 ಖಾತೆಗಳನ್ನು}} ತೆರೆದಿದ್ದೀರಿ. ಕಳೆದ $2, ಅವಧಿಯಲ್ಲಿ ಅನುಮತಿಸಲಾದ ಗರಿಷ್ಠ.\nಇನ್ನು ಹೆಚ್ಚಿನ ಖಾತೆಗಳನ್ನು ತೆರೆಯಲಾಗುವುದಿಲ್ಲ.",
        "emailauthenticated": "ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವು ದಿನಾಂಕ $2 ಸಮಯ $3 ಅಂದು ಧೃಡೀಕೃತವಾಗಿದೆ.",
        "emailnotauthenticated": "ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸ ಇನ್ನೂ ಧೃಡೀಕೃತವಾಗಿಲ್ಲ.\nಈ ಕೆಳಗಿನ ಆಯ್ಕೆಗಳಿಗೆ ಇ-ಅಂಚೆಯನ್ನು ನಿಮಗೆ ಕಳುಹಿಸಲು ಆಗುವುದಿಲ್ಲ.",
        "noemailprefs": "ಈ ಸೌಲಭ್ಯಗಳು ಕೆಲಸ ಮಾಡಬೇಕಾದರೆ ಒಂದು ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ.",
        "emailconfirmlink": "ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ಧೃಡೀಕರಿಸಿ",
        "invalidemailaddress": "ಈ ಇ-ಅಂಚೆ ವಿಳಾಸವು ಸರಿಯಾದ ಪ್ರಕಾರದಲ್ಲಿ ಇಲ್ಲದಿರುವುದರಿಂದ ಇದನ್ನು ಸ್ವೀಕಾರ ಮಾಡಲಾಗುವುದಿಲ್ಲ.\nದಯವಿಟ್ಟು ಸರಿಯಾದ ಪ್ರಕಾರದ ವಿಳಾಸವನ್ನು ಸೇರಿಸಿ ಅಥವ ಆ ಚೌಕವನ್ನು ಖಾಲಿ ಬಿಡಿ.",
+       "cannotchangeemail": "ಈ ವಿಕಿ ಖಾತೆಯಲ್ಲಿ ಇಮೇಲ್ ವಿಳಾಸಗಳನ್ನು ಬದಲಾಯಿಸಲಾಗುವುದಿಲ್ಲ.",
        "emaildisabled": "ಈ ಜಾಲತಾಣವು ಮಿಂಚಂಚೆ ಕಳುಹಿಸಲು ಸಾದ್ಯವಿಲ್ಲ.",
        "accountcreated": "ಖಾತೆಯನ್ನು ಸೃಷ್ಟಿಸಲಾಯಿತು",
-       "accountcreatedtext": "$1 ಅವರ ಬಳಕೆದಾರ ಖಾತೆ ಸೃಷ್ಟಿಸಲ್ಪಟ್ಟಿದೆ.",
+       "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|ಚರ್ಚೆ]])\n, ಅವರ ಬಳಕೆದಾರ ಖಾತೆ ಸೃಷ್ಟಿಸಲ್ಪಟ್ಟಿದೆ.",
        "createaccount-title": "{{SITENAME}} ತಾಣಕ್ಕೆ ಬಳಕೆದಾರ ಖಾತೆ ಸೃಷ್ಟಿ ಮಾಡುವಿಕೆ",
        "createaccount-text": "ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸ ನೀಡಿ {{SITENAME}} ($4) ಅಲ್ಲಿ ಯಾರೊ \"$2\" ಹೆಸರಿನ ಖಾತೆಯೊಂದನ್ನು ತೆಗೆದಿದ್ದಾರೆ, ಮತ್ತು ಅದರ ಪ್ರವೇಶ ಪದ \"$3\".\nನೀವು ಲಾಗ್ ಇನ್ ಆಗಿ ನಿಮ್ಮ ಪ್ರವೇಶ ಪದವನ್ನು ಬದಲಾಯಿಸಬೇಕು.\n\nಆ ಖಾತೆ ತಪ್ಪಾಗಿ ತೆಗೆದಿದ್ದಲ್ಲಿ, ಈ ಸಂದೇಶವನ್ನು ನೀವು ಅಲಕ್ಷಿಸಬಹುದು.",
+       "login-throttled": "ನೀವು ಬಹಳ ಸಾರಿ ಲಾಗ್ ಇನ್ ಆಗಲು ಪ್ರಯತ್ನಿಸಿರುವಿರಿ. \nಮತ್ತೆ ಪ್ರಯತ್ನಿಸಲು $1 ಕಾಯಬೇಕು.",
        "login-abort-generic": "ನಿಮ್ಮ ಲಾಗಿನ್ ಪಲಪ್ರದವಾಗಿಲ್ಲ-ವಿಫಲವಾಗಿದೆ",
+       "login-migrated-generic": "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಸ್ಥಳಾಂತರಗೊಳಿಸಲಾಗಿದೆ, ಮತ್ತು ನಿಮ್ಮ ಬಳಕೆದಾರಹೆಸರು ಈ ವಿಕಿ ಯಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ.",
        "loginlanguagelabel": "ಭಾಷೆ: $1",
+       "suspicious-userlogout": "ಲಾಗ್ ಔಟ್ ಮಾಡಲು ನಿಮ್ಮ ವಿನಂತಿಯನ್ನು ನಿರಾಕರಿಸಲಾಗಿದೆ ಏಕೆಂದರೆ ಅದು ಮುರಿದ ಬ್ರೌಸರ್ ಅಥವಾ ಕ್ಯಾಶಿಂಗ್ ಪ್ರಾಕ್ಸಿನಿಂದ ಕಳುಹಿಸಲ್ಪಟ್ಟಿದೆ ಎಂದು ತೋರುತ್ತಿದೆ.",
        "createacct-another-realname-tip": "ಹೆಸರು ನೀಡುವುದು ಐಚ್ಛಿಕ. ನೀವು ಅದನ್ನು ನೀಡಿದಲ್ಲಿ ನಿಮ್ಮ ಕಾಣಿಕೆಗಳಿಗೆ ನಿಮಗೆ ಮನ್ನಣೆ ನೀಡಲಾಗುವುದು.",
        "pt-login": "ಲಾಗ್ ಇನ್",
        "pt-login-button": "ಲಾಗ್ ಇನ್",
+       "pt-login-continue-button": "ಲಾಗಿನ್ ಮುಂದುವರಿಸಿ",
        "pt-createaccount": "ಹೊಸ ಖಾತೆ ತೆರೆಯಿರಿ",
        "pt-userlogout": "ಲಾಗ್ ಔಟ್",
+       "php-mail-error-unknown": "PHP's mail() ಕಾರ್ಯದಲ್ಲಿ ಅಜ್ಞಾತ ದೋಷ.",
+       "user-mail-no-addy": "ಇಮೇಲ್ ವಿಳಾಸವಿಲ್ಲದೆ ಇಮೇಲ್ ಕಳುಹಿಸಲು ಪ್ರಯತ್ನಿಸಿದರು.",
+       "user-mail-no-body": "ಖಾಲಿ ಅಥವಾ ಅವಿವೇಕದ ಚಿಕ್ಕ ದೇಹದೊಂದಿಗೆ ಇಮೇಲ್ ಕಳುಹಿಸಲು ಪ್ರಯತ್ನಿಸಿದರು.",
        "changepassword": "ಪ್ರವೇಶ ಪದ ಬದಲಾಯಿಸಿ",
        "resetpass_announce": "ಲಾಗ್ ಇನ್ ಪೂರ್ಣಗೊಳಿಸಲು ನೀವು ಹೊಸ ಪ್ರವೇಶಪದವನ್ನು ನಮೂದಿಸಬೇಕು.",
        "resetpass_header": "ಖಾತೆಯ ಪ್ರವೇಶಪದ ಬದಲಾಯಿಸಿ",
        "oldpassword": "ಹಳೆಯ ಪ್ರವೇಶ ಪದ",
        "newpassword": "ಹೊಸ ಪ್ರವೇಶ ಪದ",
-       "retypenew": "ಹà³\8aಸ à²ªà³\8dರವà³\87ಶಪದವನà³\8dನà³\81 à²®à²¤à³\8dತà³\86 à²\9fà³\88ಪಿಸà³\81:",
+       "retypenew": "ಹà³\8aಸ à²ªà³\8dರವà³\87ಶಪದವನà³\8dನà³\81 à²®à²¤à³\8dತà³\86 à²¨à²®à³\82ದಿಸಿ:",
        "resetpass_submit": "ಪ್ರವೇಶ ಪದವನ್ನು ನಿಶ್ಚಯಿಸಿ ಲಾಗ್ ಇನ್ ಆಗಿ",
        "changepassword-success": "ನಿಮ್ಮ ಪ್ರವೇಶಪದವನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ!",
        "changepassword-throttled": "ನೀವು ಬಹಳ ಸಾರಿ ಲಾಗ್ ಇನ್ ಆಗಲು ಪ್ರಯತ್ನಿಸಿರುವಿರಿ. \nಮತ್ತೆ ಪ್ರಯತ್ನಿಸಲು $1 ಕಾಯಬೇಕು.",
        "botpasswords": "ಬಾಟ್ ಪ್ರವೇಶ ಪದಗಳು",
+       "botpasswords-disabled": "ಬಾಟ್ ಪ್ರವೇಶಪದ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.",
+       "botpasswords-no-central-id": "ಬಾಟ್ ಪ್ರವೇಶಪದ ಬಳಸಲು, ನೀವು ಕೇಂದ್ರೀಕೃತ ಖಾತೆಗೆ ಲಾಗ್ ಇನ್ ಆಗಿರಬೇಕು.",
+       "botpasswords-existing": "ಆಸ್ಥಿತ್ವದಲ್ಲಿರುವ ಬಾಟ್ ಪ್ರವೇಶಪದ",
+       "botpasswords-createnew": "ಹೊಸ ಬಾಟ್ ಪ್ರವೇಶಪದ ರಚಿಸಿ",
+       "botpasswords-editexisting": "ಆಸ್ಥಿತ್ವದಲ್ಲಿರುವ ಬಾಟ್ ಪ್ರವೇಶಪದ ಸ೦ಪಾದಿಸಿ",
        "resetpass_forbidden": "ಪ್ರವೇಶಪದಗಳನ್ನು ಬದಲಾಯಿಸುವಂತಿಲ್ಲ.",
        "resetpass-no-info": "ನೀವು ಈ ಪುಟವನ್ನು ನೇರತಲುಪಲು ಲಾಗಿನ್ ಆಗಿರುವುದು ಆವಶ್ಯಕ.",
        "resetpass-submit-loggedin": "ಪ್ರವೇಶಪದ ಬದಲಾಯಿಸು",
        "passwordreset-username": "ಬಳಕೆದಾರರ ಹೆಸರು:",
        "passwordreset-domain": "ಕ್ಷೇತ್ರ:",
        "passwordreset-email": "ಇ-ಮೇಲ್ ವಿಳಾಸ:",
-       "passwordreset-emailsentemail": "ಪà³\8dರವà³\87ಶಪದವನà³\8dನà³\81 à²ªà³\81ನà²\83ಸà³\8dಥಾಪಿಸಿದ à²®à²¿à²\82à²\9aà²\82à²\9aà³\86ಯನà³\8dನà³\81 à²\95ಳà³\81ಹಿಸಲಾà²\97ಿದೆ.",
-       "changeemail": "ಮಿà²\82à²\9aà²\82à²\9aà³\86 à²µà²¿à²³à²¾à²¸à²µà²¨à³\8dನà³\81 à²¬à²¦à²²à²¾à²¯à²¿à²¸ಿ",
+       "passwordreset-emailsentemail": "à²\88 à²\87ಮà³\87ಲà³\8d à²µà²¿à²³à²¾à²¸à²µà³\81 à²¨à²¿à²®à³\8dಮ à²\96ಾತà³\86ಯà³\8aà²\82ದಿà²\97à³\86 à²¸à²\82ಯà³\8bà²\9cಿತà²\97à³\8aà²\82ಡಿದà³\8dದರà³\86, à²ªà³\8dರವà³\87ಶಪದ à²®à²°à³\81ಹà³\8aà²\82ದಿಸಲà³\81 à²\87ಮà³\87ಲà³\8d à²\85ನà³\8dನà³\81 à²\95ಳà³\81ಹಿಸಲಾà²\97à³\81ತà³\8dತದೆ.",
+       "changeemail": "à²\87ಮà³\87ಲà³\8d à²µà²¿à²³à²¾à²¸à²µà²¨à³\8dನà³\81 à²¬à²¦à²²à²¾à²¯à²¿à²¸à²¿ à²\85ಥವಾ à²¤à³\86à²\97à³\86ದà³\81ಹಾà²\95ಿ",
        "changeemail-no-info": "ನೀವು ಈ ಪುಟವನ್ನು ನೇರತಲುಪಲು ಲಾಗಿನ್ ಆಗಿರುವುದು ಆವಶ್ಯಕ.",
        "changeemail-oldemail": "ಪ್ರಸ್ತುತ ಮಿಂಚಂಚೆ ವಿಳಾಸ:",
        "changeemail-newemail": "ಹೊಸ  ಇ-ಅಂಚೆ ವಿಳಾಸ:",
        "bold_tip": "ದಪ್ಪಗಿನ ಅಚ್ಚು",
        "italic_sample": "ಓರೆ ಅಕ್ಷರಗಳು",
        "italic_tip": "ಓರೆ ಅಕ್ಷರಗಳು",
-       "link_sample": "ಸà²\82ಪರà³\8dà²\95ದ à²¹à³\86ಸರà³\81",
+       "link_sample": "ಲಿà²\82à²\95à³\8d à²¶à³\80ರà³\8dಷಿà²\95à³\86",
        "link_tip": "ಆಂತರಿಕ ಸಂಪರ್ಕ",
        "extlink_sample": "http://www.example.com ಸಂಪರ್ಕ ಶೀರ್ಷಿಕೆ",
        "extlink_tip": "ಬಾಹ್ಯ ಸಂಪರ್ಕ (http:// ಇಂದ ಶುರು ಮಾಡಿ)",
        "headline_sample": "ಶಿರೋಲೇಖ",
        "headline_tip": "೨ನೇ ಮಟ್ಟದ ತಲೆಬರಹ",
-       "nowiki_sample": "à²\88 à²\9cಾà²\97ದಲà³\8dಲಿ à²¬à²°à³\86ಯಲà³\8dಪà²\9fà³\8dà²\9fದà³\8dದà³\81 à²µà²¿à²\95à³\80à²\95ರಣ à²\86à²\97à³\81ವà³\81ದಿಲà³\8dಲ",
+       "nowiki_sample": "à²\87ಲà³\8dಲಿ à²µà²¿à²\95à³\80 à²«à²¾à²°à³\8dಮಾà²\9fà³\8d à²®à²¾à²¡à²¦ à²ªà² à³\8dಯವನà³\8dನà³\81 à²¸à³\87ರಿಸಿ",
        "nowiki_tip": "ವಿಕಿ ರಚನಕ್ರಮವನ್ನು ಅಲಕ್ಷಿಸು",
-       "image_tip": "à²\85ಳವಡಿಸಲà³\8dಪà²\9fà³\8dà²\9f à²«à³\88ಲà³\81",
-       "media_tip": "ಫà³\88ಲಿà²\97à³\86 ಕೊಂಡಿ",
+       "image_tip": "à²\85ಳವಡಿಸಲà³\8dಪà²\9fà³\8dà²\9f à²\95ಡತ",
+       "media_tip": "à²\95ಡತದ ಕೊಂಡಿ",
        "sig_tip": "ಸಮಯಮುದ್ರೆಯೊಂದಿಗೆ ನಿಮ್ಮ ಸಹಿ",
        "hr_tip": "ಅಡ್ಡ ಗೆರೆ (ಆದಷ್ಟು ಕಡಿಮೆ ಉಪಯೋಗಿಸಿ)",
        "summary": "ಸಾರಾಂಶ:",
        "preview": "ಮುನ್ನೋಟ",
        "showpreview": "ಮುನ್ನೋಟ ತೋರಿಸು",
        "showdiff": "ಬದಲಾವಣೆಗಳನ್ನು ತೋರಿಸು",
-       "blankarticle": "<strong>ಎಚ್ಚರಿಕೆ:</strong> ನೀವು ಸೃಷ್ಟಿಸುತ್ತಿರುವ ಪುಟ ಖಾಲಿ ಇದೆ.\n\"{{int:savearticle}}\" ಅನ್ನು ಮತ್ತೆ ಕ್ಲಿಕ್ಕಿಸಿದರೆ, ಏನೂ ಇರದಂತೆಯೆ ಈ ಪುಟವು ಸೃಷ್ಟಿಯಾಗುತ್ತದೆ.",
+       "blankarticle": "<strong>ಎಚ್ಚರಿಕೆ:</strong> ನೀವು ಸೃಷ್ಟಿಸುತ್ತಿರುವ ಪುಟ ಖಾಲಿ ಇದೆ.\n\"$1\" ಅನ್ನು ಮತ್ತೆ ಕ್ಲಿಕ್ಕಿಸಿದರೆ, ಏನೂ ಇರದಂತೆಯೆ ಈ ಪುಟವು ಸೃಷ್ಟಿಯಾಗುತ್ತದೆ.",
        "anoneditwarning": "<strong>ಎಚ್ಚರ:</strong> ನೀವು ಲಾಗ್ ಇನ್ ಆಗಿಲ್ಲ. ನೀವು ಸಂಪಾದನೆ ಮಾಡಿದಲ್ಲಿ ನಿಮ್ಮ ಐಪಿ ವಿಳಾಸವು ಎಲ್ಲರಿಗೂ ಕಾಣಲು ಸಿಗುತ್ತದೆ. ನೀವು <strong>[$1 ಲಾಗ್ ಇನ್ ಆದರೆ]</strong> ಅಥವ <strong>[$2 ಹೊಸ ಖಾತೆಯನ್ನು ಸೃಷ್ಟಿಸಿದರೆ]</strong>, ನಿಮ್ಮ ಸಂಪಾದನೆಗಳನ್ನು ನೀವು ನಿಮ್ಮ ಬಳಕೆದಾರ ಹೆಸರಿನ ಅಡಿಯಲ್ಲಿ ಪ್ರದರ್ಶಿಸಬಹುದು.",
-       "anonpreviewwarning": "''ನೀವು ಲಾಗಿನ್ ಆಗಿಲ್ಲ . ಉಳಿಸಲು ಪ್ರಯತ್ನಿಸಿದಾಗ ನಿಮ್ಮ IP ವಿಳಾಸವನ್ನು ಈ ಪುಟದ ಸಂಪಾದನೆ ಇತಿಹಾಸದಲ್ಲಿ ನಮೂದಿಸಲಗುವುದು.''",
-       "missingsummary": "'''ಗಮನಿಸಿ:''' ನಿಮ್ಮ ಸಂಪಾದನೆಯ ಸಾರಾಂಶವನ್ನು ನೀವು ನೀಡಿಲ್ಲ. ಮತ್ತೊಮ್ಮೆ \"ಉಳಿಸು\" ಗುಂಡಿಯನ್ನು ಒತ್ತಿದರೆ, ಸಾರಾಂಶವಿಲ್ಲದೆಯೇ ನಿಮ್ಮ ಸಂಪಾದನೆಯನ್ನು ಉಳಿಸಲಾಗುವುದು.",
+       "anonpreviewwarning": "<em>ನೀವು ಲಾಗಿನ್ ಆಗಿಲ್ಲ . ಉಳಿಸಲು ಪ್ರಯತ್ನಿಸಿದಾಗ ನಿಮ್ಮ IP ವಿಳಾಸವನ್ನು ಈ ಪುಟದ ಸಂಪಾದನೆ ಇತಿಹಾಸದಲ್ಲಿ ನಮೂದಿಸಲಗುವುದು.''</em>",
+       "missingsummary": "<strong>ಗಮನಿಸಿ: </strong> ನಿಮ್ಮ ಸಂಪಾದನೆಯ ಸಾರಾಂಶವನ್ನು ನೀವು ನೀಡಿಲ್ಲ. ಮತ್ತೊಮ್ಮೆ \"$1\" ಗುಂಡಿಯನ್ನು ಒತ್ತಿದರೆ, ಸಾರಾಂಶವಿಲ್ಲದೆಯೇ ನಿಮ್ಮ ಸಂಪಾದನೆಯನ್ನು ಉಳಿಸಲಾಗುವುದು.",
        "missingcommenttext": "ಕೆಳಗೆ ಒಂದು ಟಿಪ್ಪಣಿ ನಮೂದಿಸಿ",
-       "missingcommentheader": "<strong>ಗಮನಿಸಿ:</strong> ನಿಮ್ಮ ಸಂಪಾದನೆಯ ಸಾರಾಂಶವನ್ನು ನೀವು ನೀಡಿಲ್ಲ. ಮತ್ತೊಮ್ಮೆ \"{{int:savearticle}}\" ಅನ್ನು ಒತ್ತಿದರೆ, ಸಾರಾಂಶವಿಲ್ಲದೆಯೇ ನಿಮ್ಮ ಸಂಪಾದನೆಯನ್ನು ಉಳಿಸಲಾಗುವುದು.",
+       "missingcommentheader": "<strong>ಗಮನಿಸಿ:</strong> ನಿಮ್ಮ ಸಂಪಾದನೆಯ ಸಾರಾಂಶವನ್ನು ನೀವು ನೀಡಿಲ್ಲ. ಮತ್ತೊಮ್ಮೆ \"$1\" ಅನ್ನು ಒತ್ತಿದರೆ, ಸಾರಾಂಶವಿಲ್ಲದೆಯೇ ನಿಮ್ಮ ಸಂಪಾದನೆಯನ್ನು ಉಳಿಸಲಾಗುವುದು.",
        "summary-preview": "ತಾತ್ಪರ್ಯ ಮುನ್ನೋಟ:",
        "subject-preview": "ವಿಷಯದ ಮುನ್ನೋಟ:",
        "blockedtitle": "ಈ ಸದಸ್ಯರನ್ನು ತಡೆ ಹಿಡಿಯಲಾಗಿದೆ.",
-       "blockedtext": "'''ನಿಮ್ಮ ಸದಸ್ಯತ್ವವನ್ನು ಅಥವ IP ವಿಳಾಸವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.'''\n\n$1 ಅವರು ಈ ನಿರ್ಬಂಧನೆಯನ್ನು ಒಡ್ಡಿರುವರು.\nಇದಕ್ಕೆ ಅವರು ನೀಡಿರುವ ಕಾರಣ: ''$2''.\n\n* ನಿರ್ಬಂಧನೆಯ ಪ್ರಾರಂಭ: $8\n* ನಿರ್ಬಂಧನೆ ಮುಗಿಯುವುದು: $6\n* ನಿರ್ಬಂಧನೆ ಹೇರಲ್ಪಟ್ಟವರು: $7\n\nನೀವು $1 ಅಥವ ಇತರ [[{{MediaWiki:Grouppage-sysop}}|ನಿರ್ವಾಹಕರನ್ನು]] ಈ ನಿರ್ಬಂಧನೆಯನ್ನು ಚರ್ಚಿಸಲು ಸಂಪರ್ಕಿಸಬಹುದು.\nನೀವು 'ಸದಸ್ಯರಿಗೆ ಇ-ಅಂಚೆ ಕಳುಹಿಸಿ' ಸೌಲಭ್ಯವನ್ನು ಉಪಯೋಗಿಸಲು ನಿಮ್ಮ \"[[Special:Preferences|ನನ್ನ ಪ್ರಾಶಸ್ತ್ಯಗಳು]]\" ಪುಟದಲ್ಲಿ ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ನೀಡಿರಬೇಕು. ಈಗ ಆ ಪುಟವನ್ನು ನೀವು ಉಪಯೋಗಿಸದಂತೆ ನಿರ್ಬಂಧಿಸಲಾಗಿಲ್ಲ.\nನಿಮ್ಮ ಪ್ರಸಕ್ತ IP ವಿಳಾಸವು $3, ಮತ್ತು ಈ ನಿರ್ಭಂಧನೆಯ ಕ್ರಮಸಂಖ್ಯೆ (ID) #$5.\nದಯವಿಟ್ಟು ನಿಮ್ಮ ಸಂಪರ್ಕಗಳಲ್ಲಿ ಈ ಸಂಖ್ಯೆಗಳನ್ನು ಸೇರಿಸಿ.",
-       "autoblockedtext": "$1 ಅವರಿಂದ ತಡೆಹಿಡಿಯಲ್ಪಟ್ಟ ಇನ್ನೊಬ್ಬ ಬಳಕೆದಾರ ನಿಮ್ಮ ಐಪಿ ವಿಳಾಸವನ್ನು ಉಪಯೋಗಿಸುತ್ತಿದ್ದರಿಂದ ಅ ವಿಳಾಸವನ್ನು ಯಾಂತ್ರಿಕವಾಗಿ ತಡೆಹಿಡಿಯಲ್ಪಟ್ಟಿದೆ.\nತಡೆಗೆ ನೀಡಿರುವ ಕಾರಣ:\n\n:''$2''\n\n* ತಡೆಯ ಪ್ರಾರಂಭ: $8\n* ತಡೆಯ ಅಂತ್ಯ: $6\n* ಉದ್ದೇಶಿತ ತಡೆ: $7\n\nನೀವು $1 ಅವರನ್ನು ಅಥವ ಇತರ [[{{MediaWiki:Grouppage-sysop}}|ನಿರ್ವಾಹಕರನ್ನು]] ಈ ತಡೆಯನ್ನು ಚರ್ಚಿಸಲು ಸಂಪರ್ಕಿಸಬಹುದು.\nಗಮನಿಸಿ: ನಿಮ್ಮ [[Special:Preferences|ಬಳಕೆದಾರ ಪ್ರಾಶಸ್ತ್ಯಗಳಲ್ಲಿ]] ಧೃಡೀಕೃತ ಇ-ಅಂಚೆ ವಿಳಾಸ ನೀಡಿದ್ದಲ್ಲಿ ಮತ್ತು ಅದನ್ನು ಉಪಯೋಗಿಸದಂತೆ ತಡೆಹಿಡಿಯಲ್ಪಟ್ಟಿಲ್ಲದಿದ್ದಲ್ಲಿ ಮಾತ್ರ \"ಸದಸ್ಯರಿಗೆ ಇ-ಅಂಚೆ ಕಳಿಸಿ\" ಸೌಲಭ್ಯವನ್ನು ಉಪಯೋಗಿಸಬಹುದು.\n\nನಿಮ್ಮ ಪ್ರಸ್ತಕ ಐಪಿ ವಿಳಾಸ $3, ಮತ್ತು ಈ ತಡೆಯ ಸಂಖ್ಯೆ $5.\nನೀವು ಸಂಪರ್ಕಿಸಿದಾಗ ದಯವಿಟ್ಟು ಈ ವಿವರಣೆಗಳನ್ನು ಸೇರಿಸಿ.",
+       "blockedtext": "<strong>\nನಿಮ್ಮ ಸದಸ್ಯತ್ವವನ್ನು ಅಥವ IP ವಿಳಾಸವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.</strong>\n\n\n$1 ಅವರು ಈ ನಿರ್ಬಂಧನೆಯನ್ನು ಒಡ್ಡಿರುವರು.\nಇದಕ್ಕೆ ಅವರು ನೀಡಿರುವ ಕಾರಣ:<em> $2</em>.\n\n* ನಿರ್ಬಂಧನೆಯ ಪ್ರಾರಂಭ: $8\n* ನಿರ್ಬಂಧನೆ ಮುಗಿಯುವುದು: $6\n* ನಿರ್ಬಂಧನೆ ಹೇರಲ್ಪಟ್ಟವರು: $7\n\nನೀವು $1 ಅಥವ ಇತರ [[{{MediaWiki:Grouppage-sysop}}|ನಿರ್ವಾಹಕರನ್ನು]] ಈ ನಿರ್ಬಂಧನೆಯನ್ನು ಚರ್ಚಿಸಲು ಸಂಪರ್ಕಿಸಬಹುದು.\nನೀವು 'ಸದಸ್ಯರಿಗೆ ಇ-ಅಂಚೆ ಕಳುಹಿಸಿ' ಸೌಲಭ್ಯವನ್ನು ಉಪಯೋಗಿಸಲು ನಿಮ್ಮ \"[[Special:Preferences|ನನ್ನ ಪ್ರಾಶಸ್ತ್ಯಗಳು]]\" ಪುಟದಲ್ಲಿ ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ನೀಡಿರಬೇಕು. ಈಗ ಆ ಪುಟವನ್ನು ನೀವು ಉಪಯೋಗಿಸದಂತೆ ನಿರ್ಬಂಧಿಸಲಾಗಿಲ್ಲ.\nನಿಮ್ಮ ಪ್ರಸಕ್ತ IP ವಿಳಾಸವು $3, ಮತ್ತು ಈ ನಿರ್ಭಂಧನೆಯ ಕ್ರಮಸಂಖ್ಯೆ (ID) #$5.\nದಯವಿಟ್ಟು ನಿಮ್ಮ ಸಂಪರ್ಕಗಳಲ್ಲಿ ಈ ಸಂಖ್ಯೆಗಳನ್ನು ಸೇರಿಸಿ.",
+       "autoblockedtext": "$1 ಅವರಿಂದ ತಡೆಹಿಡಿಯಲ್ಪಟ್ಟ ಇನ್ನೊಬ್ಬ ಬಳಕೆದಾರ ನಿಮ್ಮ ಐಪಿ ವಿಳಾಸವನ್ನು ಉಪಯೋಗಿಸುತ್ತಿದ್ದರಿಂದ ಅ ವಿಳಾಸವನ್ನು ಯಾಂತ್ರಿಕವಾಗಿ ತಡೆಹಿಡಿಯಲ್ಪಟ್ಟಿದೆ.\nತಡೆಗೆ ನೀಡಿರುವ ಕಾರಣ:\n\n:<em>$2</em>\n\n* ತಡೆಯ ಪ್ರಾರಂಭ: $8\n* ತಡೆಯ ಅಂತ್ಯ: $6\n* ಉದ್ದೇಶಿತ ತಡೆ: $7\n\nನೀವು $1 ಅವರನ್ನು ಅಥವ ಇತರ [[{{MediaWiki:Grouppage-sysop}}|ನಿರ್ವಾಹಕರನ್ನು]] ಈ ತಡೆಯನ್ನು ಚರ್ಚಿಸಲು ಸಂಪರ್ಕಿಸಬಹುದು.\nಗಮನಿಸಿ: ನಿಮ್ಮ [[Special:Preferences|ಬಳಕೆದಾರ ಪ್ರಾಶಸ್ತ್ಯಗಳಲ್ಲಿ]] ಧೃಡೀಕೃತ ಇ-ಅಂಚೆ ವಿಳಾಸ ನೀಡಿದ್ದಲ್ಲಿ ಮತ್ತು ಅದನ್ನು ಉಪಯೋಗಿಸದಂತೆ ತಡೆಹಿಡಿಯಲ್ಪಟ್ಟಿಲ್ಲದಿದ್ದಲ್ಲಿ ಮಾತ್ರ \"ಸದಸ್ಯರಿಗೆ ಇ-ಅಂಚೆ ಕಳಿಸಿ\" ಸೌಲಭ್ಯವನ್ನು ಉಪಯೋಗಿಸಬಹುದು.\n\nನಿಮ್ಮ ಪ್ರಸ್ತಕ ಐಪಿ ವಿಳಾಸ $3, ಮತ್ತು ಈ ತಡೆಯ ಸಂಖ್ಯೆ $5.\nನೀವು ಸಂಪರ್ಕಿಸಿದಾಗ ದಯವಿಟ್ಟು ಈ ವಿವರಣೆಗಳನ್ನು ಸೇರಿಸಿ.",
        "blockednoreason": "ಯಾವ ಕಾರಣವೂ ನೀಡಲಾಗಿಲ್ಲ",
        "whitelistedittext": "ಪುಟಗಳನ್ನು ಸಂಪಾದಿಸಲು ನೀವು $1 ಆಗಬೇಕು.",
        "confirmedittext": "ಪುಟಗಳನ್ನು ಸಂಪಾದಿಸುವ ಮುನ್ನ ನೀವು ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ಧೃಡೀಕರಿಸಬೇಕು.\nದಯವಿಟ್ಟು [[Special:Preferences|ಬಳಕೆದಾರ ಆಯ್ಕೆಗಳು]] ಪುಟದಲ್ಲಿ ತಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ ಮತ್ತು ಧೃಡೀಕರಿಸಿ.",
-       "nosuchsectiontitle": "à²\86 à²¹à³\86ಸರಿನ à²µà²¿à²­à²¾à²\97 à²¯à²¾à²µà³\81ದà³\82 à²\87ಲà³\8dಲ",
+       "nosuchsectiontitle": "ಆ ಹೆಸರಿನ ವಿಭಾಗ ಇಲ್ಲ",
        "nosuchsectiontext": "ನೀವು ಅಸ್ಥಿತ್ವದಲ್ಲಿ ಇರದ ಒಂದು ವಿಭಾಗವನ್ನು ಸಂಪಾದಿಸಲು ಪ್ರಯತ್ನಿಸಿದಿರಿ.\nನೀವು ಪುಟವನ್ನು ವೀಕ್ಷಿಸುವಾಗ ಆ ವಿಭಾಗವು ಸ್ಥಳಾಂತರಗೊಂಡಿರಬಹುದು ಅಥವ ಅಳಿಸಲ್ಪಟ್ಟಿರಬಹುದು.",
        "loginreqtitle": "ಲಾಗಿನ್ ಆಗಬೇಕು",
        "loginreqlink": "ಲಾಗ್ ಇನ್",
        "accmailtext": "[[User talk:$1|$1]] ಅವರ ಹೊಸ ಪ್ರವೇಶಪದ $2 ಗೆ ಕಳುಹಿಸಲಾಗಿದೆ.\n\nಈ ಖಾತೆಯ ಪ್ರವೇಶಪದವನ್ನು ಲಾಗಿನ್ ಆದ ನಂತರ ''[[Special:ChangePassword|ಪ್ರವೇಶಪದ ಬದಲಾವಣೆ]]'' ಪುಟದಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು.",
        "newarticle": "(ಹೊಸತು)",
        "newarticletext": "ಇನ್ನೂ ಅಸ್ಥಿತ್ವದಲ್ಲಿ ಇರದ ಪುಟದ ಲಿಂಕ್ ಅನ್ನು ನೀವು ಒತ್ತಿರುವಿರಿ.\nಈ ಪುಟವನ್ನು ಸೃಷ್ಟಿಸಲು ಕೆಳಗಿನ ಚೌಕದಲ್ಲಿ ಬರೆಯಲು ಆರಂಭಿಸಿರಿ.\n(ಹೆಚ್ಚು ಮಾಹಿತಿಗೆ [$1 ಸಹಾಯ ಪುಟ] ನೋಡಿ).\nಈ ಪುಟಕ್ಕೆ ನೀವು ತಪ್ಪಾಗಿ ಬಂದಿದ್ದಲ್ಲಿ ನಿಮ್ಮ ಬ್ರೌಸರ್‍ನ '''back''' ಬಟನ್ ಅನ್ನು ಒತ್ತಿ.",
-       "anontalkpagetext": "----''ಇದು ಖಾತೆಯೊಂದನ್ನು ಹೊಂದಿರದ ಅನಾಮಧೇಯ ಬಳಕೆದಾರರೊಬ್ಬರ ಚರ್ಚೆ ಪುಟ.\nಖಾತೆಯಿಲ್ಲದಿರುವುದರಿಂದ ಅವರನ್ನು ಗುರುತಿಸಲು ಅವರ IP ವಿಳಾಸವನ್ನು ಉಪಯೋಗಿಸುತ್ತಿದ್ದೇವೆ.\nಈ ರೀತಿಯ IP ವಿಳಾಸವು ಅನೇಕ ಬಳಕೆದಾರರಿಂದ ಉಪಯೋಗದಲ್ಲಿರಬಹುದು.\nನೀವು ಅನಾಮಧೇಯ ಬಳಕೆದಾರರಾಗಿದ್ದಲ್ಲಿ, ಹಾಗು ನಿಮಗೆ ಸಂಬಂಧವಿಲ್ಲದಂತ ಸಂದೇಶಗಳು ಬರುತ್ತಿವೆ ಎಂದು ಅನಿಸಿದರೆ, ಮುಂದೆ ಬೇರೆ ಅನಾಮಧೇಯ ಬಳಕೆದಾರರೊಂದಿಗೆ ತಪ್ಪಾಗಿ ಗುರುತಿಸಬಾರದೆಂದಿದ್ದರೆ ದಯವಿಟ್ಟು [[Special:CreateAccount|ಸದಸ್ಯರಾಗಿ]] ಅಥವ [[Special:UserLogin|ಲಾಗ್ ಇನ್ ಆಗಿ]].''",
+       "anontalkpagetext": "----\n<em>ಇದು ಖಾತೆಯೊಂದನ್ನು ಹೊಂದಿರದ ಅನಾಮಧೇಯ ಬಳಕೆದಾರರೊಬ್ಬರ ಚರ್ಚೆ ಪುಟ. ಖಾತೆಯಿಲ್ಲದಿರುವುದರಿಂದ ಅವರನ್ನು ಗುರುತಿಸಲು ಅವರ IP ವಿಳಾಸವನ್ನು ಉಪಯೋಗಿಸುತ್ತಿದ್ದೇವೆ.</em>\nಈ ರೀತಿಯ IP ವಿಳಾಸವು ಅನೇಕ ಬಳಕೆದಾರರಿಂದ ಉಪಯೋಗದಲ್ಲಿರಬಹುದು.\nನೀವು ಅನಾಮಧೇಯ ಬಳಕೆದಾರರಾಗಿದ್ದಲ್ಲಿ, ಹಾಗು ನಿಮಗೆ ಸಂಬಂಧವಿಲ್ಲದಂತ ಸಂದೇಶಗಳು ಬರುತ್ತಿವೆ ಎಂದು ಅನಿಸಿದರೆ, ಮುಂದೆ ಬೇರೆ ಅನಾಮಧೇಯ ಬಳಕೆದಾರರೊಂದಿಗೆ ತಪ್ಪಾಗಿ ಗುರುತಿಸಬಾರದೆಂದಿದ್ದರೆ ದಯವಿಟ್ಟು [[Special:CreateAccount|ಸದಸ್ಯರಾಗಿ]] ಅಥವ [[Special:UserLogin|ಲಾಗ್ ಇನ್ ಆಗಿ]].''",
        "noarticletext": "ಈ ಪುಟದಲ್ಲಿ ಸದ್ಯಕ್ಕೆ ಏನೂ ಇಲ್ಲ.\nನೀವು ಇತರ ಪುಟಗಳಲ್ಲಿ [[Special:Search/{{PAGENAME}}|ಈ ಹೆಸರನ್ನು ಹುಡುಕಬಹುದು]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ಸಂಬಂಧಿತ ದಾಖಲೆಗಳನ್ನು ಹುಡುಕಬಹುದು],\nಅಥವ [{{fullurl:{{FULLPAGENAME}}|action=edit}} ಈ ಪುಟವನ್ನು ಸೃಷ್ಟಿಸಬಹುದು]</span>.",
        "noarticletext-nopermission": "ಈ ಪುಟದಲ್ಲಿ ಸದ್ಯಕ್ಕೆ ಯಾವ ಪಠ್ಯವೂ ಇಲ್ಲ.\nನೀವು ಇತರ ಪುಟಗಳಲ್ಲಿ [[Special:Search/{{PAGENAME}}|ಈ ಶೀರ್ಷಿಕೆಗಾಗಿ ಹುಡುಕಬಹುದು]], ಅಥವಾ <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ಸಂಬಂಧಿಸಿದ ದಾಖಲೆಗಳನ್ನು ಹುಡುಕಬಹುದು]</span>, ಆದರೆ ನಿಮಗೆ ಈ ಪುಟವನ್ನು ಸೃಷ್ಟಿಸಲು ಅನುಮತಿಯಿಲ್ಲ.",
-       "userpage-userdoesnotexist": "ಬಳಕೆದಾರ ಖಾತೆ \"<nowiki>$1</nowiki>\" ದಾಖಲಾಗಿಲ್ಲ. ನೀವು ಇದೇ ಪುಟವನ್ನು ಸೃಷ್ಟಿ/ಸಂಪಾದನೆ ಮಾಡಬೇಕೆಂದಿರುವಿರಿ ಎಂದು ಖಾತ್ರಿ ಮಾಡಿಕೊಳ್ಳಿ.",
+       "userpage-userdoesnotexist": "ಬಳಕೆದಾರ ಖಾತೆ \"$1\" ದಾಖಲಾಗಿಲ್ಲ. ನೀವು ಇದೇ ಪುಟವನ್ನು ಸೃಷ್ಟಿ/ಸಂಪಾದನೆ ಮಾಡಬೇಕೆಂದಿರುವಿರಿ ಎಂದು ಖಾತ್ರಿ ಮಾಡಿಕೊಳ್ಳಿ.",
        "blocked-notice-logextract": "ಈ ಬಳಕೆದಾರರನ್ನು  ಪ್ರಸ್ತುತವಾಗಿ  ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ. \nಇತ್ತೀಚಿನ  ನಿರ್ಬಂಧನೆಯ ದಾಖಲೆಯನ್ನು ಉಲ್ಲೇಖಕ್ಕಾಗಿ ಕೆಳಗೆ ಕೊಟ್ಟಿದೆ:",
-       "usercssyoucanpreview": "'''ಗಮನಿಸಿ:''' ಉಳಿಸುವ ಮುನ್ನ 'ಮುನ್ನೋಟ' ಗುಂಡಿಯನ್ನು ಉಪಯೋಗಿಸಿ ನಿಮ್ಮ ಹೊಸ CSS ಅನ್ನು ಪ್ರಯೋಗ ಮಾಡಿ.",
+       "usercssyoucanpreview": "<strong>ಗಮನಿಸಿ:</strong> ಉಳಿಸುವ ಮುನ್ನ \"{{int:showpreview}}\" ಗುಂಡಿಯನ್ನು ಉಪಯೋಗಿಸಿ ನಿಮ್ಮ ಹೊಸ CSS ಅನ್ನು ಪ್ರಯೋಗ ಮಾಡಿ.",
        "userjsyoucanpreview": "'''ಗಮನಿಸಿ:''' ಉಳಿಸುವ ಮುನ್ನ 'ಮುನ್ನೋಟ' ಗುಂಡಿಯನ್ನು ಉಪಯೋಗಿಸಿ ನಿಮ್ಮ ಹೊಸ JS ಅನ್ನು ಪ್ರಯೋಗ ಮಾಡಿ.",
-       "usercsspreview": "'''ನೆನಪಿಡಿ: ನೀವು ಇಲ್ಲಿ ಕೇವಲ ನಿಮ್ಮ ಬಳಕೆದಾರ CSSನ ಮುನ್ನೋಟ ನೋಡುತ್ತಿರುವಿರಿ.'''\n'''ಅದನ್ನು ಇನ್ನೂ ಉಳಿಸಲಾಗಿಲ್ಲ!'''",
-       "userjspreview": "'''ಗಮನಿಸಿ: ನೀವು ನಿಮ್ಮ ಬಳಕೆದಾರ JavaScriptನ ಮುನ್ನೋಟ ನೋಡುತ್ತಿರುವಿರಿ ಅಥವ ಪ್ರಯೋಗ ಮಾಡುತ್ತಿರುವಿರಿ. ಅದನ್ನಿನ್ನೂ ಉಳಿಸಲಾಗಿಲ್ಲ!'''",
-       "sitecsspreview": "'''ನೆನಪಿಡಿ: ನೀವು ಇಲ್ಲಿ ಕೇವಲ ನಿಮ್ಮ ಬಳಕೆದಾರ CSSನ ಮುನ್ನೋಟ ನೋಡುತ್ತಿರುವಿರಿ.''''''ಅದನ್ನು ಇನ್ನೂ ಉಳಿಸಲಾಗಿಲ್ಲ!'''",
-       "sitejspreview": "'''ನೆನಪಿಡಿ: ನೀವು ಇಲ್ಲಿ ಕೇವಲ ನಿಮ್ಮ ಬಳಕೆದಾರ CSSನ ಮುನ್ನೋಟ ನೋಡುತ್ತಿರುವಿರಿ.''''''ಅದನ್ನು ಇನ್ನೂ ಉಳಿಸಲಾಗಿಲ್ಲ!'''",
-       "updated": "(ನà²\95ಲà³\86ರಿಸಲಾಗಿದೆ)",
-       "note": "'''ಸೂಚನೆ:'''",
-       "previewnote": "'''ಇದು ಕೇವಲ ಮುನ್ನೋಟ.'''\nಪುಟವನ್ನು ಇನ್ನೂ ಉಳಿಸಲಾಗಿಲ್ಲ ಎಂಬುದನ್ನು ಮರೆಯದಿರಿ!",
+       "usercsspreview": "<strong>ನೆನಪಿಡಿ: ನೀವು ಇಲ್ಲಿ ಕೇವಲ ನಿಮ್ಮ ಬಳಕೆದಾರ CSSನ ಮುನ್ನೋಟ ನೋಡುತ್ತಿರುವಿರಿ.\nಅದನ್ನು ಇನ್ನೂ ಉಳಿಸಲಾಗಿಲ್ಲ!</strong>",
+       "userjspreview": "<strong>ಗಮನಿಸಿ: ನೀವು ನಿಮ್ಮ ಬಳಕೆದಾರ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನ ಮುನ್ನೋಟ ನೋಡುತ್ತಿರುವಿರಿ ಅಥವ ಪ್ರಯೋಗ ಮಾಡುತ್ತಿರುವಿರಿ. ಅದನ್ನಿನ್ನೂ ಉಳಿಸಲಾಗಿಲ್ಲ!</strong>",
+       "sitecsspreview": "<strong>ನೆನಪಿಡಿ: ನೀವು ಇಲ್ಲಿ ಕೇವಲ ನಿಮ್ಮ ಬಳಕೆದಾರ CSSನ ಮುನ್ನೋಟ ನೋಡುತ್ತಿರುವಿರಿ.\nಅದನ್ನು ಇನ್ನೂ ಉಳಿಸಲಾಗಿಲ್ಲ!</strong>",
+       "sitejspreview": "<strong>ನೆನಪಿಡಿ: ನೀವು ಇಲ್ಲಿ ಕೇವಲ ನಿಮ್ಮ ಬಳಕೆದಾರ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನ ಮುನ್ನೋಟ ನೋಡುತ್ತಿರುವಿರಿ.\nಅದನ್ನು ಇನ್ನೂ ಉಳಿಸಲಾಗಿಲ್ಲ!</strong>",
+       "updated": "(ನವà³\80à²\95ರಿಸಲಾಗಿದೆ)",
+       "note": "<strong>ಸೂಚನೆ:</strong>",
+       "previewnote": "<strong>ಇದು ಕೇವಲ ಮುನ್ನೋಟ.</strong>\nಪುಟವನ್ನು ಇನ್ನೂ ಉಳಿಸಲಾಗಿಲ್ಲ ಎಂಬುದನ್ನು ಮರೆಯದಿರಿ!",
        "continue-editing": "ಸಂಪಾದನೆಯ ಪ್ರದೇಶಕ್ಕೆ  ಹೋಗಿ",
-       "editing": "'$1' ಲೇಖನ ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ",
+       "editing": "$1 ಲೇಖನ ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ",
        "creating": "$1 ನ್ನು ಸೃಷ್ಟಿಸಲಾಗುತ್ತಿದೆ",
        "editingsection": "$1 (ವಿಭಾಗ) ಅನ್ನು ಸಂಪಾದಿಸುತ್ತಿರುವಿರಿ",
        "editingcomment": "$1 (ಹೊಸ ವಿಭಾಗ) ಸಂಪಾದಿಸಲಾಗುತ್ತಿದೆ",
        "editconflict": "ಸಂಪಾದನಾ ಘರ್ಷಣೆ: $1",
-       "explainconflict": "ನೀವು ಈ ಪುಟವನ್ನು ಸಂಪಾದಿಸಲು ಪ್ರಾರಂಭ ಮಾಡಿದ ಮೇಲೆ ಬೇರೊಬ್ಬರು ಯಾರೊ ಪುಟವನ್ನು ಬದಲಾಯಿಸಿದ್ದಾರೆ.\nಮೇಲಿನ ಬರವಣಗೆ ಚೌಕದಲ್ಲಿ ಪುಟದ ಪ್ರಸಕ್ತ ಸ್ವರೂಪ ತೋರಿಸಲಾಗಿದೆ.\nನೀವು ಮಾಡಿದ ಸಂಪಾದನೆಗಳನ್ನು ಕೆಳಗಿನ ಬರವಣಗೆ ಚೌಕದಲ್ಲಿ ತೋರಿಸಲಾಗಿದೆ.\nನಿಮ್ಮ ಸಂಪಾದನೆಗಳನ್ನು ಪ್ರಸಕ್ತ ಸ್ವರೂಪದ ಲೇಖನದಲ್ಲಿ ನೀವು ಸೇರಿಸಬೇಕಾಗುತ್ತದೆ.\nನೀವು ಪುಟವನ್ನು ಉಳಿಸಿದಾಗ '''ಮೇಲಿನ ಚೌಕದಲ್ಲಿ ನೀವು ಮಾಡುವ ಬದಲಾವಣೆಗಳನ್ನು ಮಾತ್ರ''' ಉಳಿಸಲಾಗುತ್ತದೆ.",
+       "explainconflict": "ನೀವು ಈ ಪುಟವನ್ನು ಸಂಪಾದಿಸಲು ಪ್ರಾರಂಭ ಮಾಡಿದ ಮೇಲೆ ಬೇರೊಬ್ಬರು ಯಾರೊ ಪುಟವನ್ನು ಬದಲಾಯಿಸಿದ್ದಾರೆ.\nಮೇಲಿನ ಬರವಣಗೆ ಚೌಕದಲ್ಲಿ ಪುಟದ ಪ್ರಸಕ್ತ ಸ್ವರೂಪ ತೋರಿಸಲಾಗಿದೆ.\nನೀವು ಮಾಡಿದ ಸಂಪಾದನೆಗಳನ್ನು ಕೆಳಗಿನ ಬರವಣಗೆ ಚೌಕದಲ್ಲಿ ತೋರಿಸಲಾಗಿದೆ.\nನಿಮ್ಮ ಸಂಪಾದನೆಗಳನ್ನು ಪ್ರಸಕ್ತ ಸ್ವರೂಪದ ಲೇಖನದಲ್ಲಿ ನೀವು ಸೇರಿಸಬೇಕಾಗುತ್ತದೆ.\nನೀವು ಪುಟವನ್ನು ಉಳಿಸಿದಾಗ ಮೇಲಿನ ಚೌಕದಲ್ಲಿ ನೀವು ಮಾಡುವ ಬದಲಾವಣೆಗಳನ್ನು <strong>ಮಾತ್ರ</strong> ಉಳಿಸಲಾಗುತ್ತದೆ.$1",
        "yourtext": "ನಿಮ್ಮ ಸಂಪಾದನೆ",
        "storedversion": "ಈಗಾಗಲೇ ಉಳಿಸಲಾಗಿರುವ ಆವೃತ್ತಿ",
-       "editingold": "'''ಎಚ್ಚರಿಕೆ: ಈ ಪುಟದ ಹಳೆಯ ಆವೃತ್ತಿಯನ್ನು ಬದಲಾಯಿಸುತ್ತಿದ್ದೀರಿ. ಈ ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಿದಲ್ಲಿ, ನಂತರದ ಆವೃತ್ತಿಗಳೆಲ್ಲವೂ ಕಳೆದುಹೋಗುತ್ತವೆ.'''",
+       "editingold": "<strong>ಎಚ್ಚರಿಕೆ: ಈ ಪುಟದ ಹಳೆಯ ಆವೃತ್ತಿಯನ್ನು ಬದಲಾಯಿಸುತ್ತಿದ್ದೀರಿ. ಈ ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಿದಲ್ಲಿ, ನಂತರದ ಆವೃತ್ತಿಗಳೆಲ್ಲವೂ ಕಳೆದುಹೋಗುತ್ತವೆ.</strong>",
        "yourdiff": "ವ್ಯತ್ಯಾಸಗಳು",
        "copyrightwarning": "ದಯವಿಟ್ಟು ಗಮನಿಸಿ: {{SITENAME}} ಸೈಟಿನಲ್ಲಿ ನಿಮ್ಮ ಎಲ್ಲಾ ಕಾಣಿಕೆಗಳನ್ನೂ $2 ಅಡಿಯಲ್ಲಿ ಬಿಡುಗಡೆ ಮಾಡಲಾಗುತ್ತದೆ (ಮಾಹಿತಿಗೆ $1 ನೋಡಿ). ನಿಮ್ಮ ಸಂಪಾದನೆಗಳನ್ನು ಬೇರೆಯವರು ನಿರ್ದಾಕ್ಷಿಣ್ಯವಾಗಿ ಬದಲಾಯಿಸಿ ಬೇರೆ ಕಡೆಗಳಲ್ಲಿ ಹಂಚಬಹುದು. ಇದಕ್ಕೆ ನಿಮ್ಮ ಒಪ್ಪಿಗೆ ಇದ್ದರೆ ಮಾತ್ರ ಇಲ್ಲಿ ಸಂಪಾದನೆ ಮಾಡಿ.<br />\nಅಲ್ಲದೆ ನಿಮ್ಮ ಸಂಪಾದನೆಗಳನ್ನು ಸ್ವತಃ ರಚಿಸಿದ್ದು, ಅಥವ ಕೃತಿಸ್ವಾಮ್ಯತೆಯಿಂದ ಮುಕ್ತವಾಗಿರುವ ಕಡೆಯಿಂದ ಪಡೆದಿದ್ದು ಎಂದು ಪ್ರಮಾಣಿಸುತ್ತಿರುವಿರಿ.\n'''ಕೃತಿಸ್ವಾಮ್ಯತೆಯ ಅಡಿಯಲ್ಲಿರುವ ರಚನೆಗಳನ್ನು ಅನುಮತಿ ಇಲ್ಲದೆ ಇಲ್ಲಿಗೆ ಹಾಕಬೇಡಿ!'''",
-       "copyrightwarning2": "ದಯವಿಟ್ಟು ಗಮನಿಸಿ: {{SITENAME}} ಸೈಟಿನಲ್ಲಿ ನಿಮ್ಮ ಎಲ್ಲಾ ಸಂಪಾದನೆಗಳನ್ನು ಬೇರೆಯವರು ಬದಲಾಯಿಸಬಹುದು ಅಥವ ಅಳಿಸಬಹುದು.\nನಿಮ್ಮ ಬರಹಗಳನ್ನು ಬೇರೆಯವರು ನಿರ್ದಾಕ್ಷಿಣ್ಯವಾಗಿ ಸಂಪಾದನೆ ಮಾಡುವುದು ನಿಮಗೆ ಇಷ್ಟವಿಲ್ಲದಿದ್ದರೆ ಇಲ್ಲಿ ಸಂಪಾದನೆ ಮಾಡಬೇಡಿ.<br />\nಅಲ್ಲದೆ ನಿಮ್ಮ ಸಂಪಾದನೆಗಳನ್ನು ನೀವೇ ಸ್ವತಃ ರಚಿಸಿದ್ದು, ಅಥವ ಕೃತಿಸ್ವಾಮ್ಯತೆಯಿಂದ ಮುಕ್ತವಾಗಿರುವ ಕಡೆಯಿಂದ ಪಡೆದಿದ್ದು ಎಂದು ನೀವು ಪ್ರಮಾಣಿಸುತ್ತಿರುವಿರಿ (ಮಾಹಿತಿಗೆ $1 ನೋಡಿ).\n'''ಕೃತಿಸ್ವಾಮ್ಯತೆಯ ಅಡಿಯಲ್ಲಿರುವ ರಚನೆಗಳನ್ನು ಅನುಮತಿ ಇಲ್ಲದೆ ಇಲ್ಲಿಗೆ ಹಾಕಬೇಡಿ!'''",
+       "copyrightwarning2": "ದಯವಿಟ್ಟು ಗಮನಿಸಿ: {{SITENAME}} ಸೈಟಿನಲ್ಲಿ ನಿಮ್ಮ ಎಲ್ಲಾ ಸಂಪಾದನೆಗಳನ್ನು ಬೇರೆಯವರು ಬದಲಾಯಿಸಬಹುದು ಅಥವ ಅಳಿಸಬಹುದು.\nನಿಮ್ಮ ಬರಹಗಳನ್ನು ಬೇರೆಯವರು ನಿರ್ದಾಕ್ಷಿಣ್ಯವಾಗಿ ಸಂಪಾದನೆ ಮಾಡುವುದು ನಿಮಗೆ ಇಷ್ಟವಿಲ್ಲದಿದ್ದರೆ ಇಲ್ಲಿ ಸಂಪಾದನೆ ಮಾಡಬೇಡಿ.<br />\nಅಲ್ಲದೆ ನಿಮ್ಮ ಸಂಪಾದನೆಗಳನ್ನು ನೀವೇ ಸ್ವತಃ ರಚಿಸಿದ್ದು, ಅಥವ ಕೃತಿಸ್ವಾಮ್ಯತೆಯಿಂದ ಮುಕ್ತವಾಗಿರುವ ಕಡೆಯಿಂದ ಪಡೆದಿದ್ದು ಎಂದು ನೀವು ಪ್ರಮಾಣಿಸುತ್ತಿರುವಿರಿ (ಮಾಹಿತಿಗೆ $1 ನೋಡಿ).\n<strong>ಕೃತಿಸ್ವಾಮ್ಯತೆಯ ಅಡಿಯಲ್ಲಿರುವ ರಚನೆಗಳನ್ನು ಅನುಮತಿ ಇಲ್ಲದೆ ಇಲ್ಲಿಗೆ ಹಾಕಬೇಡಿ!</strong>",
        "longpageerror": "'''ದೋಷ: ನೀವು ಸಲ್ಲಿಸಿರುವ ಪಠ್ಯವು $1 ಕಿಲೊಬೈಟ್ ಉದ್ದದ್ದಾಗಿದೆ. ಇದು ನಿಯಮಿತವಾಗಿರುವ ಗರಿಷ್ಠವಾದ $2 ಕಿಲೊಬೈಟ್‍ಗಳಿಗಿಂತ ಹೆಚ್ಚಾಗಿದೆ.\nಆದ್ದರಿಂದ ಇದನ್ನು ಉಳಿಸಲು ಆಗುವುದಿಲ್ಲ.'''",
-       "readonlywarning": "'''ಗಮನಿಸಿ: ಡೇಟಾಬೇಸ್ ಅನ್ನು ದುರಸ್ತಿಗಾಗಿ ಮುಚ್ಚಲಾಗಿದೆ. ಹಾಗಾಗಿ ನಿಮ್ಮ ಸಂಪಾದನೆಗಳನ್ನು ಈಗ ಉಳಿಸಲು ಆಗುವುದಿಲ್ಲ.\nನಿಮ್ಮ ಸಂಪಾದನೆಯನ್ನು ನೀವು ಬೇರೆ ಕಡೆ ಉಳಿಸಿ ನಂತರ ಇಲ್ಲಿಗೆ cut-n-paste ಮಾಡಬಹುದು.'''",
-       "protectedpagewarning": "'''ಎಚ್ಚರಿಕೆ: ಈ ಪುಟವನ್ನು ಸಂರಕ್ಷಿಸಲಾಗಿದೆ. ಇದನ್ನು ಕೇವಲ ನಿರ್ವಾಹಕರು ಬದಲಾಯಿಸಬಹುದು.'''",
+       "readonlywarning": "<strong>ಎಚ್ಚರಿಕೆ: ಡೇಟಾಬೇಸ್ ಅನ್ನು ದುರಸ್ತಿಗಾಗಿ ಮುಚ್ಚಲಾಗಿದೆ. ಹಾಗಾಗಿ ನಿಮ್ಮ ಸಂಪಾದನೆಗಳನ್ನು ಈಗ ಉಳಿಸಲು ಆಗುವುದಿಲ್ಲ.\nನಿಮ್ಮ ಸಂಪಾದನೆಯನ್ನು ನೀವು ಬೇರೆ ಕಡೆ ಉಳಿಸಿ ನಂತರ ಇಲ್ಲಿಗೆ ಕತ್ತರಿಸಿ ಅಂಟಿಸಬಹುದು ಮಾಡಬಹುದು.</strong>\n\nಇದನ್ನು ಲಾಕ್ ಮಾಡಿದ ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರು ಈ ವಿವರಣೆಯನ್ನು ನೀಡಿದರು:$1",
+       "protectedpagewarning": "<strong>ಎಚ್ಚರಿಕೆ: ಈ ಪುಟವನ್ನು ಸಂರಕ್ಷಿಸಲಾಗಿದೆ. ಇದನ್ನು ಕೇವಲ ನಿರ್ವಾಹಕರು ಬದಲಾಯಿಸಬಹುದು.</strong>\nಇತ್ತೀಚಿನ ಲಾಗ್ ಎಂಟ್ರಿ ದಾಖಲೆಯನ್ನು ಕೆಳಗೆ ತೋರಿಸಲಾಗಿದೆ:",
        "semiprotectedpagewarning": "'''ಗಮನಿಸಿ:''' ಈ ಪುಟವನ್ನು ಕೇವಲ ನೊಂದಯಿತ ಸದಸ್ಯರು ಸಂಪಾದನೆ ಮಾಡಬರುವಂತೆ ಸಂರಕ್ಷಿಸಲಾಗಿದೆ.",
        "cascadeprotectedwarning": "'''ಎಚ್ಚರಿಕೆ:''' ಈ ಪುಟವು ಕೆಳಗೆ ಪಟ್ಟಿ ಮಾಡಿರುವ ತಡಸಲು-ಸಂರಕ್ಷಣೆ ಹೊಂದಿರುವ {{PLURAL:$1|ಪುಟದಲ್ಲಿ|ಪುಟಗಳಲ್ಲಿ}} ಸೇರಿರುವುದರಿಂದ, ಇದನ್ನು ಕೇವಲ ನಿರ್ವಾಹಕರು ಸಂಪಾದಿಸಬಹುದಂತೆ ಸಂರಕ್ಷಿಸಲಾಗಿದೆ :",
        "titleprotectedwarning": "'''ಎಚ್ಚರಿಕೆ:  ಈ ಪುಟವನ್ನು ಕೆಲ ಬಳಕೆದಾರರು ಮಾತ್ರ ಸೃಷ್ಟಿಸಬಹುದಂತೆ ಸಂರಕ್ಷಿಸಲಾಗಿದೆ. '''",
        "recreate-moveddeleted-warn": "'''ಎಚ್ಚರಿಕೆ: ಹಿಂದೆ ಅಳಿಸಲಾದ ಪುಟವನ್ನು ನೀವು ಮತ್ತೆ ಸೃಷ್ಟಿಸುತ್ತಿರುವಿರಿ.'''\n\nಈ ಪುಟವನ್ನು ಸಂಪಾದಿಸಲು ಸಮರ್ಪಕ ಕಾರಣವಿದೆಯೆ ಎಂದು ದಯವಿಟ್ಟು ಆಲೋಚಿಸಿ.\nಪುಟದ ಅಳಿಸುವಿಕೆ ದಿನಚರಿಯನ್ನು ಈ ಕೆಳಗೆ ನೀಡಲಾಗಿದೆ:",
        "moveddeleted-notice": "ಈ ಪುಟವು ಅಳಿಸಲ್ಪಟ್ಟಿದೆ.\nಈ ಪುಟದ ಅಳಿಸುವಿಕೆಯ ದಾಖಲೆಯನ್ನು ಕೆಳಗೆ ತೋರಿಸಲಾಗಿದೆ.",
        "log-fulllog": "ಪೂರ್ಣ ದಾಖಲೆ ವೀಕ್ಷಿಸಿ",
-       "edit-hook-aborted": "à²\95à³\8aà²\95à³\8dà²\95à³\86 à²¸à³\8dಥà²\97ಿತà²\97à³\8aಳಿಸಲಾà²\97ಿದà³\86 à²¸à²\82ಪಾದಿಸಿ .\nà²\87ದà³\81 à²¯à²¾à²µà³\81ದà³\87 à²µà²¿à²µà²°à²£à³\86 à²¨à³\80ಡಿದರà³\81 .",
+       "edit-hook-aborted": "ಸà²\82ಪಾದನà³\86 à²\95à³\8aà²\95à³\8dà²\95à³\86ಯಿà²\82ದ à²¸à³\8dಥà²\97ಿತà²\97à³\8aಳಿಸಲಾà²\97ಿದà³\86.\nà²\87ದà³\81 à²¯à²¾à²µà³\81ದà³\87 à²µà²¿à²µà²°à²£à³\86ಯನà³\8dನà³\81 à²¨à³\80ಡಿಲà³\8dಲ.",
        "edit-gone-missing": "ಪುಟವನ್ನು ಪ್ರಸ್ತುತಗೊಳಿಸಲು ಸಾದ್ಯವಿಲ್ಲ, ಪುಟವು ಬಹುಶ: ಅಳಿಸಲ್ಪಟ್ಟಿರಬಹುದು",
        "edit-conflict": "ಸಂಪಾದನಾ ಘರ್ಷಣೆ.",
-       "edit-no-change": "ನಿಮ್ಮ ಸಂಪಾದನೆಯನ್ನು ಕಡೆಗಣಿಸಲಾಗಿದೆ ಏಕೆಂದರೆ ಪಠ್ಯದಲ್ಲಿ ಯಾವುದೇ ಬದಲಾವಣೆ ಮಾಡಲಾಗಿಲ್ಲ್ಲ",
+       "edit-no-change": "ನಿಮ್ಮ ಸಂಪಾದನೆಯನ್ನು ಕಡೆಗಣಿಸಲಾಗಿದೆ ಏಕೆಂದರೆ ಪಠ್ಯದಲ್ಲಿ ಯಾವುದೇ ಬದಲಾವಣೆ ಮಾಡಲಾಗಿಲ್ಲ",
        "postedit-confirmation-created": "ಈ ಪುಟ ಸೃಷ್ಟಿಸಲಾಗಿದೆ.",
        "postedit-confirmation-restored": "ಪುಟವನ್ನು ಪುನಃಸ್ಥಾಪಿಸಲಾಗಿದೆ.",
        "postedit-confirmation-saved": "ನಿಮ್ಮ ಸಂಪಾದನೆಯನ್ನು ಉಳಿಸಲಾಗಿದೆ.",
        "content-model-css": "ಸಿಎಸ್‍ಎಸ್",
        "content-json-empty-object": "ಖಾಲಿ ವಿಷಯ",
        "content-json-empty-array": "ಖಾಲಿ ರಚನೆ",
-       "expensive-parserfunction-warning": "ಎಚ್ಚರಿಕೆ: ಈ ಪುಟದಲ್ಲಿ ಬಹುತೇಕ ದುಬಾರಿ parser function ಕರೆಗಳಿವೆ.\n\nಈಗ {{PLURAL:$1|$1 ಕರೆ|$1 ಕರೆಗಳು}} ಇದ್ದು, $2 {{PLURAL:$2|ಕರೆಗಿಂತ|ಕರೆಗಳಿಗಿಂತ}} ಕಡಿಮೆ ಇರಬೇಕು.",
-       "expensive-parserfunction-category": "ಬಹà³\81ತà³\87à²\95 à²¦à³\81ಬಾರಿ parser function à²\95ರà³\86à²\97ಳಿರುವ ಪುಟಗಳು",
-       "post-expand-template-inclusion-warning": "' ' 'ಎಚ್ಚರಿಕೆ:' ' ' ಪುಟದಲ್ಲಿ ಹಕುವ ಛಿತ್ರ ಥೊದಥು. \nಕೆಲವು ಟೆಂಪ್ಲೇಟುಗಳು ಹಕಲಗುದಿಲ್ಲ.",
-       "post-expand-template-inclusion-category": "ಪà³\81à²\9fದಲà³\8dಲಿ  à²\9aಿತà³\8dರ  à²¹à²\97ಲ à²¯à³\86ರಿದà³\86",
+       "expensive-parserfunction-warning": "<strong>ಎಚ್ಚರಿಕೆ:</strong> ಈ ಪುಟದಲ್ಲಿ ಬಹುತೇಕ ದುಬಾರಿ ಪಾರ್ಸರ್ ಕ್ರಿಯೆ ಕರೆಗಳಿವೆ.\n\nಈಗ {{PLURAL:$1|ಒಂದು ಕರೆ|$1 ಕರೆಗಳು}}, ಇದು {{PLURAL:$2|ಕರೆಗಿಂತ|ಕರೆಗಳಿಗಿಂತ}} $2 ಕಡಿಮೆ ಇರಬೇಕು.",
+       "expensive-parserfunction-category": "ಹà³\86à²\9aà³\8dà²\9aà³\81 à²¦à³\81ಬಾರಿ à²ªà²¾à²°à³\8dಸರà³\8d à²\95ಾರà³\8dಯದ à²\95ರà³\86à²\97ಳನà³\8dನà³\81 à²¹à³\8aà²\82ದಿರುವ ಪುಟಗಳು",
+       "post-expand-template-inclusion-warning": "<strong>ಎಚ್ಚರಿಕೆ:</strong> ಟೆಂಪ್ಲೇಟು ಗಾತ್ರವು ತುಂಬಾ ದೊಡ್ಡದಾಗಿರುತ್ತದೆ.\nಕೆಲವು ಟೆಂಪ್ಲೆಟ್ಗಳನ್ನು ಸೇರಿಸಲಾಗುವುದಿಲ್ಲ.",
+       "post-expand-template-inclusion-category": "à²\97ಾತà³\8dರ à²®à³\80ರಿದ à²\9fà³\86à²\82ಪà³\8dಲà³\86à²\9fà³\8d à²\92ಳà²\97à³\8aà²\82ಡಿರà³\81ವ à²ªà³\81à²\9fà²\97ಳà³\81",
        "parser-template-loop-warning": "ಟೆಂಪ್ಲೇಟು ಆವರ್ತನೆ ಪತ್ತೆಯಾಗಿದೆ: [[$1]]",
        "language-converter-depth-warning": "ಭಾಷಾಂತರಕದ ಆಳದ ಮಿತಿಮೀರಿದೆ($1)",
        "undo-success": "ಸಂಪಾದನೆಯನ್ನು ವಜಾ ಮಾಡಬಹುದು. ದಯವಿಟ್ಟು ಕೆಳಗಿರುವ ತುಲನೆಯನ್ನು ಪರೀಕ್ಷಿಸಿ ನೀವು ಮಾಡಲು ಇಚ್ಚಿಸಿರುವುದನ್ನು ಖಾತ್ರಿ ಮಾಡಿಕೊಂಡು ವಜಾಗೊಳಿಸುವ ಕ್ರಿಯೆಯನ್ನು \nಪೂರ್ಣಗೊಳಿಸಲು ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಿ.",
        "undo-norev": "ಸಂಪಾದನೆಯನ್ನು ವಜಾಗೊಳಿಸಲು ಸಾದ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ ಒಂದೊ ಇದು ಅಸ್ತಿತ್ವದಲ್ಲಿ ಇಲ್ಲ ಅಧವಾ ಇದು ಅಳಿಸಲ್ಪಟ್ಟಿದೆ",
-       "undo-summary": "[[Special:Contributions/$2|$2]] ([[User talk:$2|talk]]) ರ $1 ಪರಿಷ್ಕರಣೆಯನ್ನು ವಜಾ ಮಾಡಿ",
+       "undo-summary": "[[Special:Contributions/$2|$2]] ([[User talk:$2|ಚರ್ಚೆ]]) ರ $1 ಪರಿಷ್ಕರಣೆಯನ್ನು ವಜಾ ಮಾಡಿ",
        "viewpagelogs": "ಈ ಪುಟಗಳ ದಾಖಲೆಗಳನ್ನು ವೀಕ್ಷಿಸಿ",
        "nohistory": "ಈ ಪುಟಕ್ಕೆ ಬದಲಾವಣೆಗಳ ಇತಿಹಾಸ ಇಲ್ಲ.",
        "currentrev": "ಈಗಿನ ತಿದ್ದುಪಡಿ",
-       "currentrev-asof": "ಅತ್ಯಂತ ಇತ್ತೀಚಿನ ಆವೃತ್ತಿ ($1)",
-       "revisionasof": "$1 à²¦à²¿à²¨à²¦ à²\86ವà³\83ತà³\8dತಿ",
+       "currentrev-asof": "$1 ದ ಇತ್ತೀಚಿನ ಆವೃತ್ತಿ",
+       "revisionasof": "$1 à²¨à²\82ತà³\86 à²ªà²°à²¿à²·à³\8dà²\95ರಣà³\86",
        "revision-info": "ಬದಲಾವಣೆ $1 ರಂತೆ {{GENDER:$6|$2}} ಇವರಿಂದ $7",
        "previousrevision": "←ಹಿಂದಿನ ಪರಿಷ್ಕರಣೆ",
-       "nextrevision": "ಮುಂದಿನ ಪರಿಷ್ಕರಣೆ",
+       "nextrevision": "ಮುಂದಿನ ಪರಿಷ್ಕರಣೆ →",
        "currentrevisionlink": "ಈಗಿನ ಪರಿಷ್ಕರಣೆ",
        "cur": "ಸದ್ಯದ",
        "next": "ಮುಂದಿನದು",
        "last": "ಕೊನೆಯ",
        "page_first": "ಮೊದಲ",
        "page_last": "ಕೊನೆಯ",
-       "histlegend": "ವ್ಯತ್ಯಾಸಗಳ ಆಯ್ಕೆ: ಹೋಲಿಕೆ ಮಾಡಬೇಕು ಎಂದಿರುವ ಎರಡು ಆವೃತ್ತಿಗಳ ಪಕ್ಕದಲ್ಲಿ ಇರುವ ಗುಂಡಿಗಳನ್ನು ಗುರುತು ಮಾಡಿ. ನಂತರ enter ಅನ್ನು ಒತ್ತಿ ಅಥವ ಪಟ್ಟಿಯ ಅಂತ್ಯದಲ್ಲಿರುವ ಗುಂಡಿಯನ್ನು ಒತ್ತಿ.<br />\nಆಖ್ಯಾನ: (ಈಗಿನ) = ಪ್ರಸಕ್ತ ಆವೃತ್ತಿಯೊಂದಿಗೆ ವ್ಯತ್ಯಾಸಗಳು,\n(ಕೊನೆಯ) = ಹಿಂದಿನ ಆವೃತ್ತಿಯೊಂದಿಗೆ ವ್ಯತ್ಯಾಸಗಳು, ಚು = ಚುಟುಕಾದ ಬದಲಾವಣೆ.",
+       "histlegend": "ವ್ಯತ್ಯಾಸಗಳ ಆಯ್ಕೆ: ಹೋಲಿಕೆ ಮಾಡಬೇಕು ಎಂದಿರುವ ಎರಡು ಆವೃತ್ತಿಗಳ ಪಕ್ಕದಲ್ಲಿ ಇರುವ ಗುಂಡಿಗಳನ್ನು ಗುರುತು ಮಾಡಿ. ನಂತರ ಎಂಟರ್ ಅನ್ನು ಒತ್ತಿ ಅಥವ ಪಟ್ಟಿಯ ಅಂತ್ಯದಲ್ಲಿರುವ ಗುಂಡಿಯನ್ನು ಒತ್ತಿ.<br />\nಆಖ್ಯಾನ: <strong>({{int:cur}})</strong>= ಪ್ರಸಕ್ತ ಆವೃತ್ತಿಯೊಂದಿಗೆ ವ್ಯತ್ಯಾಸಗಳು,\n <strong>({{int:last}})</strong> = ಹಿಂದಿನ ಆವೃತ್ತಿಯೊಂದಿಗೆ ವ್ಯತ್ಯಾಸಗಳು, <strong>{{int:minoreditletter}}</strong> = ಚುಟುಕಾದ ಬದಲಾವಣೆ.",
        "history-fieldset-title": "ಇತಿಹಾಸವನ್ನು ವಿಹರಿಸಿ",
        "history-show-deleted": "ಅಳಿಸಿದ್ದು ಮಾತ್ರ",
        "histfirst": "ಹಳೆಯ",
        "historyempty": "(ಖಾಲಿ)",
        "history-feed-title": "ಬದಲಾವಣೆಗಳ ಇತಿಹಾಸ",
        "history-feed-description": "ವಿಕಿಯ ಈ ಪುಟದ ಬದಲಾವಣೆಗಳ ಇತಿಹಾಸ",
-       "history-feed-item-nocomment": "$1 $2 ಅಲ್ಲಿ",
+       "history-feed-item-nocomment": "$2 ಅಲ್ಲಿ $1",
        "history-feed-empty": "ನೀವು ಕೋರಿರುವ ಪುಟ ಅಸ್ಥಿತ್ವದಲ್ಲಿ ಇಲ್ಲ.\nಅದು ವಿಕಿಯಿಂದ ಅಳಿಸಲ್ಪಟ್ಟಿರಬಹುದು ಅಥವ ಪುನರ್ನಾಮಕಾರಣಗೊಂಡಿರಬಹುದು.\nಸಂಬಂಧಿತ ಹೊಸ ಪುಟಗಳನ್ನು [[Special:Search|ಹುಡುಕಲು ಪ್ರಯತ್ನಿಸಿ]].",
        "rev-deleted-comment": "ಬದಲಾಯಿಸಿದ ಸಾರಾಂಶ ತೆಗೆದುಹಾಕಲಾಗಿದೆ",
        "rev-deleted-user": "(ಬಳಕೆದಾರ ಹೆಸರು ತಗೆಯಲ್ಪಟ್ಟಿದೆ)",
        "revdelete-show-file-submit": "ಹೌದು",
        "revdelete-legend": "ಕಾಣಿಸುವಿಕೆಯ ನಿಬಂಧನೆಗಳನ್ನು ನಿಶ್ಚಯಿಸು",
        "revdelete-hide-text": "ಪರಿಷ್ಕರಣೆ ಪಠ್ಯ",
-       "revdelete-hide-image": "ಫà³\88ಲಿನಲ್ಲಿರುವ ಮಾಹಿತಿಯನ್ನು ಅಡಗಿಸು",
+       "revdelete-hide-image": "à²\95ಡತà²\97ಳಲ್ಲಿರುವ ಮಾಹಿತಿಯನ್ನು ಅಡಗಿಸು",
        "revdelete-hide-name": "ಕಾರ್ಯ ಮತ್ತು ಗುರಿಗಳನ್ನು ಅಡಗಿಸು",
-       "revdelete-hide-comment": "ಸಾರಾà²\82ಶವನà³\81 à²¬à²¦à²²à²¾à²¯à²¿à²¸à²¿",
+       "revdelete-hide-comment": "ಸà²\82ಪಾದನà³\86ಯ à²¸à²¾à²°à²¾à²\82ಶ",
        "revdelete-hide-user": "ಸಂಪಾದಕರ ಬಳಕೆಯ ಹೆಸರು/IP ವಿಳಾಸ",
-       "revdelete-hide-restricted": "ನಿರà³\8dವಾಹà²\95ರಿà²\82ದ à²®à²¤à³\8dತಿತರರಿà²\82ದ à²¬à²\82ದ à²®à²¾à²¹à²¿à²¤à²¿à²¯à²¨à³\8dನà³\81 à²\85ಡà²\97ಿಸು",
+       "revdelete-hide-restricted": "ನಿರà³\8dವಾಹà²\95ರಿà²\82ದ à²®à²¤à³\8dತಿತರರಿà²\82ದ à²¬à²\82ದ à²®à²¾à²¹à²¿à²¤à²¿à²¯à²¨à³\8dನà³\81 à²¨à²¿à²\97à³\8dರಹಿಸು",
        "revdelete-radio-same": "(ಬದಲಾಯಿಸಬೇಡಿ)",
        "revdelete-radio-set": "ಅಡಗಿದ",
        "revdelete-radio-unset": "ಗೋಚರ",
        "revdelete-suppress": "ನಿರ್ವಾಹಕರಿಂದ ಮತ್ತಿತರರಿಂದ ಬಂದ ಮಾಹಿತಿಯನ್ನು ಅಡಗಿಸು",
        "revdelete-unsuppress": "ಪುನಃ ಸ್ಥಾಪಿಸಿದ ಬದಲಾವಣೆಗಳ ಮೇಲಿನ ನಿಬಂಧನೆಗಳನ್ನು ತೆಗೆ",
        "revdelete-log": "ಕಾರಣ:",
-       "revdelete-submit": "ಆಯ್ಕೆ ಮಾಡಿದ ಬದಲಾವಣೆಗೆ ಅನ್ವಯಿಸು{{PLURAL:$1|revision|revisions}}",
+       "revdelete-submit": "ಆಯ್ಕೆ ಮಾಡಿದ ಬದಲಾವಣೆಗೆ ಅನ್ವಯಿಸುವ {{PLURAL:$1|ಬದಲಾವಣೆ|ಬದಲಾವಣೆಗಳು}}",
        "revdel-restore": "ಕಾಣಿಸುವಿಕೆಯನ್ನು ಬದಲಾಯಿಸು",
        "pagehist": "ಪುಟದ ಇತಿಹಾಸ",
        "deletedhist": "ಅಳಿಸಲ್ಪಟ್ಟ ಇತಿಹಾಸ",
        "mergehistory-reason": "ಕಾರಣ:",
        "mergelog": "ಸೇರ್ಪಡೆಯ ದಾಖಲೆ",
        "revertmerge": "ಸೇರ್ಪಡೆಯನ್ನು ತೊಡೆದುಹಾಕು",
-       "mergelogpagetext": "à²\92à²\82ದà³\81 à²ªà³\81à²\9fದ à²\87ತಿಹಾಸವನà³\8dನà³\81 à²\87ನà³\8dನà³\8aà²\82ದರà³\8aಳà²\97à³\86 à²\87ತà³\8dತà³\80à²\9aà³\86à²\97à³\86 à²¸à³\87ರà³\8dಪಡà³\86 à²®à²¾à²¡à²²à²¾à²\97ಿರà³\81ವ ಪಟ್ಟಿ ಕೆಳಗಿದೆ.",
+       "mergelogpagetext": "à²\92à²\82ದà³\81 à²ªà³\81à²\9fದ à²\87ತಿಹಾಸವನà³\8dನà³\81 à²\87ನà³\8dನà³\8aà²\82ದà³\81 à²ªà³\81à²\9fದà³\8aಳà²\97à³\86  à²¸à³\87ರà³\8dಪಡà³\86 à²®à²¾à²¡à²²à²¾à²\97ಿರà³\81ವ à²\87ತà³\8dತà³\80à²\9aಿನ ಪಟ್ಟಿ ಕೆಳಗಿದೆ.",
        "history-title": "\"$1\" ಪುಟದ ಬದಲಾವಣೆಗಳ ಇತಿಹಾಸ",
        "difference-title": "\"$1\" ಆವೃತ್ತಿಗಳ ಮಧ್ಯದ ಬದಲಾವಣೆಗಳು",
        "lineno": "$1 ನೇ ಸಾಲು:",
        "compareselectedversions": "ಆಯ್ಕೆ ಮಾಡಿದ ಆವೃತ್ತಿಗಳನ್ನು ಹೊಂದಾಣಿಕೆ ಮಾಡಿ ನೋಡಿ",
        "showhideselectedversions": "ಆಯ್ದ ಆವೃತ್ತಿಗಳನ್ನು ತೋರಿಸು/ಅಡಗಿಸು",
-       "editundo": "ಹಿà²\82ದಿನà²\82ತà³\86",
+       "editundo": "ರದà³\8dದà³\81à²\97à³\8aಳಿಸಿ",
        "diff-empty": "( ಯಾವುದೇ ವ್ಯತ್ಯಾಸವಿಲ್ಲ )",
        "diff-multi-sameuser": "(ಅದೇ ಬಳಕೆದಾರನ {{PLURAL:$1|ಮಧ್ಯದಲ್ಲಿನ ಬದಲಾವಣೆಯನ್ನು|$1 ಮಧ್ಯದ ಬದಲಾವಣೆಗಳನ್ನು}} ತೋರಿಸುತ್ತಿಲ್ಲ)",
        "searchresults": "ಶೋಧನೆಯ ಫಲಿತಾಂಶಗಳು",
        "next-page": "ಮುಂದಿನ ಪುಟ",
        "prevn-title": "ಹಿಂದಿನ $1 {{PLURAL:$1|ಫಲಿತಾಂಶ|ಫಲಿತಾಂಶಗಳು}}",
        "nextn-title": "ಮುಂದಿನ $1 {{PLURAL:$1|ಫಲಿತಾಂಶ|ಫಲಿತಾಂಶಗಳು}}",
-       "shown-title": "ಪ್ರತಿ ಪುಟದಲ್ಲಿಯೂ $1 {{PLURAL:$1|result|results}} ತೋರಿಸು",
+       "shown-title": "ಪ್ರತಿ ಪುಟದ $1 {{PLURAL:$1|ಫಲಿತಾಂಶ|ಫಲಿತಾಂಶಗಳು}} ತೋರಿಸು",
        "viewprevnext": "ವೀಕ್ಷಿಸು ($1 {{int:pipe-separator}} $2) ($3)",
-       "searchmenu-exists": "'''\"[[:$1]]\" ಹೆಸರಿನ ಪುಟ ಈ ವಿಕಿಯಲ್ಲಿದೆ.'''",
-       "searchmenu-new": "<strong>\"[[:$1]]\" ಪುಟವನ್ನು ಈ ವಿಕಿಯಲ್ಲಿ ಸೃಷ್ಟಿಸಿ!!</strong> {{PLURAL:$2|0=|See also the page found with your search.|See also the search results found.}}",
+       "searchmenu-exists": "<Strong> ಈ ವಿಕಿಯಲ್ಲಿ \"[[:$1]]\" ಹೆಸರಿನ ಪುಟವಿದೆ. </Strong> {{PLURAL:$2|0= ಇತರ ಹುಡುಕಾಟ ಫಲಿತಾಂಶಗಳು ಸಹ ನೋಡಿ.}}",
+       "searchmenu-new": "<strong>\"[[:$1]]\" ಪುಟವನ್ನು ಈ ವಿಕಿಯಲ್ಲಿ ಸೃಷ್ಟಿಸಿ.</strong> {{PLURAL:$2|0=|ನಿಮ್ಮ ಹುಡುಕಾಟದೊಂದಿಗೆ ಕಂಡುಬರುವ ಪುಟವನ್ನೂ ಸಹ ನೋಡಿ.|ಹುಡುಕಾಟ ಫಲಿತಾಂಶಗಳನ್ನು ಸಹ ನೋಡಿ.}}",
        "searchprofile-articles": "ಲೇಖನ ಪುಟ",
        "searchprofile-images": "ಮಲ್ಟಿಮೀಡಿಯ",
        "searchprofile-everything": "ಪ್ರತಿಯೊಂದು",
-       "searchprofile-advanced": "ಪರಿಣತ",
+       "searchprofile-advanced": "ಸà³\81ಧಾರಿತ",
        "searchprofile-articles-tooltip": "$1 ನಲ್ಲಿ ಹುಡುಕಿ",
        "searchprofile-images-tooltip": "ಕಡತಗಳನ್ನು ಹುಡುಕಿ",
-       "searchprofile-everything-tooltip": "ಎಲ್ಲಾ ಮಾಹಿತಿಗಳನ್ನು ಹುಡುಕಿ (ಚರ್ಚೆಯನ್ನೂ ಸೇರಿಸಿ)",
+       "searchprofile-everything-tooltip": "ಎಲ್ಲಾ ಮಾಹಿತಿಗಳನ್ನು ಹುಡುಕಿ (ಚರ್ಚೆಯ ಪುಟಗಳನ್ನು ಸಹ ಸೇರಿಸಿ)",
        "searchprofile-advanced-tooltip": "ಬಳಕೆಯ ನಾಮವರ್ಗಗಳಲ್ಲಿ ಹುಡುಕಿ",
        "search-result-size": "$1 ({{PLURAL:$2|೧ ಪದ|$2 ಪದಗಳು}})",
        "search-redirect": "($1 ಇಂದ ಪುನರ್ನಿರ್ದೇಶಿತ)",
        "search-relatedarticle": "ಸಂಬಂಧಿತ",
        "searchrelated": "ಸಂಬಂಧಿತ",
        "searchall": "ಎಲ್ಲಾ",
-       "showingresults": "ಕೆಳಗೆ #'''$2''' ಇಂದ ಶುರುವಾದ {{PLURAL:$1|'''೧''' ಫಲಿತಾಂಶದ|'''$1''' ಫಲಿತಾಂಶಗಳ}}ವರೆಗೂ ತೋರಿಸಲಾಗುತ್ತಿದೆ.",
+       "showingresults": "ಕೆಳಗೆ #<strong>$2</strong> ಇಂದ ಶುರುವಾದ {{PLURAL:$1|<strong>೧</strong> ಫಲಿತಾಂಶದ|<strong>$1</strong> ಫಲಿತಾಂಶಗಳ}}ವರೆಗೂ ತೋರಿಸಲಾಗುತ್ತಿದೆ.",
        "search-nonefound": "ನಿಮ್ಮ ವಿಚಾರಣೆಗೆ ತಕ್ಕ ಫಲಿತಾಂಶಗಳಿಲ್ಲ.",
        "powersearch-legend": "ಮುಂದುವರೆದ ಹುಡುಕಾಟ",
        "powersearch-ns": "ಈ ಪುಟ ಪ್ರಬೇಧಗಳಲ್ಲಿ ಹುಡುಕು:",
        "prefs-skin": "ಚರ್ಮ",
        "skin-preview": "ಮುನ್ನೋಟ",
        "datedefault": "ಯಾವುದೇ ಪ್ರಾಶಸ್ತ್ಯ ಇಲ್ಲ",
-       "prefs-labs": "ಲà³\8dಯಾಬà³\8dಸà³\8d ವೈಶಿಷ್ಟ್ಯಗಳು",
+       "prefs-labs": "ಪà³\8dರಯà³\8bà²\97ಾಲಯದ ವೈಶಿಷ್ಟ್ಯಗಳು",
        "prefs-user-pages": "ಸದಸ್ಯರ ಪುಟಗಳು",
        "prefs-personal": "ಬಳಕೆದಾರರ ಬಗ್ಗೆ",
        "prefs-rc": "ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳು",
        "prefs-rendering": "ಗೋಚರ",
        "saveprefs": "ಉಳಿಸಿ",
        "prefs-editing": "ಸಂಪಾದನೆ",
-       "rows": "ಸಾಲುಗಳು:",
-       "columns": "ಸಾಲುಗಳು:",
        "searchresultshead": "ಹುಡುಕು",
        "stub-threshold-disabled": "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.",
        "recentchangesdays": "ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳಲ್ಲಿ ತೋರಿಸಬೇಕಾದ ದಿನಗಳು:",
        "timezoneregion-europe": "ಯುರೋಪ್",
        "timezoneregion-indian": "ಹಿಂದೂ ಮಹಾಸಾಗರ",
        "timezoneregion-pacific": "ಪೆಸಿಫಿಕ್ ಮಹಾಸಾಗರ",
-       "allowemail": "ಬà³\87ರà³\86 à²¸à²¦à²¸à³\8dಯರಿà²\82ದ à²\88-ಮà³\88ಲà³\8dâ\80\8dಗಳನ್ನು ಸ್ವೀಕರಿಸು",
+       "allowemail": "ಬà³\87ರà³\86 à²¸à²¦à²¸à³\8dಯರಿà²\82ದ à²\87-à²\85à²\82à²\9aà³\86ಗಳನ್ನು ಸ್ವೀಕರಿಸು",
        "prefs-searchoptions": "ಹುಡುಕು",
        "prefs-namespaces": "ನಾಮವರ್ಗಗಳು",
        "default": "ಮೂಲಸ್ಥಿತಿ",
-       "prefs-files": "ಫà³\88ಲà³\81ಗಳು",
+       "prefs-files": "à²\95ಡತಗಳು",
        "prefs-custom-css": "ಕಸ್ಟಮ್ ಸಿಎಸ್ಎಸ್",
        "prefs-custom-js": "ಕಸ್ಟಮ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್",
        "prefs-emailconfirm-label": "ಮಿಂಚಂಚೆ ದೃಢೀಕರಣ",
        "prefs-registration": "ನೋಂದಣಿ ಸಮಯ:",
        "yourrealname": "ನಿಜ ಹೆಸರು:",
        "yourlanguage": "ಭಾಷೆ:",
-       "yournick": "ಸಹಿ:",
+       "yournick": "ಹà³\8aಸ à²¸à²¹à²¿:",
        "badsiglength": "ನಿಮ್ಮ ಅಡ್ಡಹೆಸರು ತುಂಬಾ ಉದ್ದವಾಗಿದೆ.\nಅದು $1 {{PLURAL:$1|ಅಕ್ಷರಕ್ಕಿಂತ|ಅಕ್ಷರಗಳಿಗಿಂತ}} ಕಡಿಮೆ ಇರಬೇಕು.",
        "yourgender": "ಲಿಂಗ:",
-       "gender-unknown": "ನಾನà³\81 à²¹à³\87ಳಲಿà²\9aà³\8dà²\9bಿಸà³\81ವà³\81ದಿಲà³\8dಲ",
+       "gender-unknown": "ನಿಮà²\97à³\86 à²ªà³\8dರಸà³\8dತಾಪಿಸಿದಾà²\97, à²¸à²¾à²«à³\8dà²\9fà³\8dವà³\87ರà³\8d à²¸à²¾à²§à³\8dಯವಾದಾà²\97 à²²à²¿à²\82à²\97 à²¤à²\9fಸà³\8dಥ à²ªà²¦à²\97ಳನà³\8dನà³\81 à²¬à²³à²¸à³\81ತà³\8dತದà³\86",
        "gender-male": "ಅವನು ವಿಕಿ ಪುಟಗಳನ್ನು ಸಂಪಾದಿಸುತ್ತಾನೆ",
        "gender-female": "ಅವಳು ವಿಕಿ ಪುಟಗಳನ್ನು ಸಂಪಾದಿಸುತ್ತಾಳೆ",
        "email": "ಇ-ಅಂಚೆ",
        "userrights-reason": "ಕಾರಣ:",
        "userrights-no-interwiki": "ಇತರ ವಿಕಿಗಳಲ್ಲಿ ನಿಮಗೆ ಬಳಕೆದಾರ ಹಕ್ಕುಗಳನ್ನು ಬದಲಾಯಿಸುವ ಅನುಮತಿಯಿಲ್ಲ.",
        "userrights-nodatabase": "ಡೇಟಾಬೇಸ್ $1 ಅಸ್ಥಿತ್ವದಲ್ಲಿಲ್ಲ ಅಥವ ಸ್ಥಳೀಯವಾದುದಲ್ಲ.",
-       "userrights-nologin": "ಬಳಕೆದಾರ ಹಕ್ಕುಗಳನ್ನು ನೇಮಿಸಲು ನೀವು ನಿರ್ವಾಹಕ ಖಾತೆಯೊಂದಕ್ಕೆ [[Special:UserLogin|ಲಾಗ್ ಇನ್]] ಆಗಬೇಕು.",
-       "userrights-notallowed": "ಬಳಕೆದಾರ ಹಕ್ಕುಗಳನ್ನು ನೇಮಿಸಲು ನಿಮ್ಮ ಖಾತೆಗೆ ಅನುಮತಿಯಿಲ್ಲ.",
        "userrights-changeable-col": "ನೀವು ಬದಲಾಯಿಸಬಲ್ಲ ಗುಂಪುಗಳು",
        "userrights-unchangeable-col": "ನೀವು ಬದಲಾಯಿಸಲಾಗದಂತಹ ಗುಂಪುಗಳು",
        "group": "ಗುಂಪು:",
        "group-all": "(ಎಲ್ಲವೂ)",
        "group-user-member": "ಬಳಕೆದಾರ",
        "group-autoconfirmed-member": "ಸ್ವಧೃಡೀಕೃತ ಬಳಕೆದಾರ",
-       "group-bot-member": "{{ಲಿಂಗ:$1|ಬೋಟ್}}",
+       "group-bot-member": "{{GENDER:$1|ಬೋಟ್}}",
        "group-sysop-member": "{{GENDER:$1|ನಿರ್ವಾಹಕ}}",
        "group-bureaucrat-member": "{{GENDER:$1|ಮೇಲ್ವಿಚಾರಕ}}",
        "group-suppress-member": "ನಿಗ ಇಡುವವ",
        "right-move-subpages": "ಪುಟಗಳನ್ನು ಅವುಗಳ ಉಪಪುಟಗಳೊಂದಿಗೆ ಸ್ಥಾಳಾಂತರಿಸಿ",
        "right-movefile": "ಕಡತಗಳನ್ನು ಸ್ಥಳಾಂತರಿಸಿ",
        "right-upload": "ಕಡತಗಳನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡು",
-       "right-reupload": "ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಫೈಲ್ ಗಳ ಕಡತಗಳ ಮೇಲೆ ಬರೆಯಿರಿ",
-       "right-reupload-own": "ವತಃ ತಾವೇ ನಕಲೆರಿಸಿರುವ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಫೈಲ್ ಗಳ ಕಡತಗಳ ಮೇಲೆ ಬರೆಯಿರಿ",
+       "right-reupload": "ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕಡತಗಳ ಮೇಲೆ ಬರೆಯಿರಿ",
+       "right-reupload-own": "ಸ್ವತಃ ತಾವೇ ನಕಲೆರಿಸಿರುವ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕಡತಗಳ ಮೇಲೆ ಬರೆಯಿರಿ",
+       "right-writeapi": "ಬರಹ API ಯ ಬಳಕೆ",
        "right-delete": "ಪುಟಗಳನ್ನು ಅಳಿಸಿ",
        "right-bigdelete": "ಜಾಸ್ತಿ ಇತಿಹಾಸವಿರುವ ಪುಟಗಳನ್ನು ಅಳಿಸಿ",
        "right-deleterevision": "ಪುಟದ ಕೆಲ ಆವೃತ್ತಿಗಳನ್ನು ಅಳಿಸಿ ಹಾಗು ಉಳಿಸಿ",
        "right-deletedtext": "ಆಳಿಸಿದ ಪಠ್ಯ ಮತ್ತು ಅಳಿಸಿದ ಆವೃತ್ತಿಗಳ ನಡುವಿನ ಬದಲಾವಣೆಗಳನ್ನು ನೋಡಿ",
        "right-browsearchive": "ಅಳಿಸಲಾಗಿರುವ ಪುಟಗಳನ್ನು ಹುಡುಕಿ",
-       "right-undelete": "à²\86ಳಿಸಿದ à²ªà³\81à²\9fವನà³\8dನà³\81 à²\89ಳಿಸಿ",
+       "right-undelete": "à²\88 à²ªà³\81à²\9fವನà³\8dನà³\81 à²\85ಳಿಸà³\81ವಿà²\95à³\86ಯನà³\8dನà³\81 à²°à²¦à³\8dದà³\81ಮಾಡà³\81",
        "right-suppressionlog": "ಖಾಸಗಿ ದಾಖಲೆಗಳು ವೀಕ್ಷಿಸಿ",
        "right-block": "ಬೇರೆ ಬಳಕೆದಾರರು ಸಂಪಾದಿಸದಂತೆ ನಿರ್ಬಂಧಿಸು",
        "right-blockemail": "ಬಳಕೆದಾರನು ಇ-ಅಂಚೆ ಕಳುಹಿಸುವುದನ್ನು ತಡೆಗಟ್ಟು",
        "right-userrights-interwiki": "ಬೇರೆ ವಿಕಿಗಳ ಮೇಲೆ  ಎಲ್ಲಾ ಬಳಕೆದಾರ ಹಕ್ಕುಗಳನ್ನು ತಿದ್ದುಪಡಿಸಿ",
        "right-siteadmin": "ಡೇಟಾಬೇಸ್ ನ್ನು ಬೀಗ ಹಾಕಿ ತೆಗೆಯಿರಿ",
        "right-sendemail": "ಇತರ ಬಳಕೆದಾರರಿಗೆ ಇಮೇಲ್ ಕಳುಹಿಸಿ",
-       "right-passwordreset": "ಪಾಸ್ವರ್ಡ್ ಮತ್ತೆ ಜೋಡಿಸಲ್ಪಟ್ಟ  ಇಮೇಲ್ ಗಳನ್ನು ವೀಕ್ಷಿಸಿ",
        "newuserlogpage": "ಸದಸ್ಯತ್ವ ಸೃಷ್ಟಿಗಳ ದಾಖಲೆ",
        "rightslog": "ಸದಸ್ಯರ ಹಕ್ಕುಗಳ ದಾಖಲೆಗಳು",
        "rightslogtext": "ಇದು ಬಳಕೆದಾರ ಹಕ್ಕುಗಳ ಬದಲಾವಣೆಗಳ ದಾಖಲೆ.",
        "action-move": "ಈ ಪುಟವನ್ನು ಸ್ಥಳಾಂತರಿಸಿ",
        "action-move-subpages": "ಈ ಪುಟವನ್ನು ಮತ್ತು ಅದರ ಉಪಪುಟಗಳನ್ನು ಸ್ಥಳಾಂತರಿಸಿ",
        "action-movefile": "ಈ ಪುಟವನ್ನು ಸ್ಥಳಾಂತರಿಸಿ",
-       "action-upload": "à²\88 à²«à³\88ಲà³\8d à²\85ನà³\8dನà³\81  à²¨à²\95ಲà³\86ರಿಸಿ",
+       "action-upload": "à²\88 à²\95ಡತವನà³\8dನà³\81 à²\85ಪà³\8dಲà³\8bಡà³\8d à²®à²¾à²¡ಿ",
        "action-delete": "ಈ ಪುಟವನ್ನು ಅಳಿಸು",
        "action-deleterevision": "ಈ ಆವೃತ್ತಿಯನ್ನು ಅಳಿಸು",
        "action-browsearchive": "ಅಳಿಸಲಾಗಿರುವ ಪುಟಗಳನ್ನು ಹುಡುಕು",
        "recentchanges-legend-heading": "<strong>ಪರಿವಿಡಿ:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|ಹೊಸ ಪುಟಗಳ ಪಟ್ಟಿ]]ಯನ್ನೂ ನೋಡಿ)",
        "rcnotefrom": "'''$2''' ಇಂದ ಆಗಿರುವ ಬದಲಾವಣೆಗಳು ಕೆಳಗಿವೆ (ಕೊನೆಯ '''$1'''ರವರೆಗೆ ತೋರಿಸಲಾಗಿದೆ).",
-       "rclistfrom": "$3 $2 ಇಂದ ಪ್ರಾರಂಭಿಸಿ ಮಾಡಲಾದ ಬದಲಾವಣೆಗಳನ್ನು ನೋಡಿ",
-       "rcshowhideminor": "à²\9aಿà²\95à³\8dà²\95ಪà³\81à²\9fà³\8dà²\9f ಬದಲಾವಣೆಗಳನ್ನು $1",
+       "rclistfrom": "$2,$3 ಇಂದ ಪ್ರಾರಂಭಿಸಿ ಮಾಡಲಾದ ಬದಲಾವಣೆಗಳನ್ನು ನೋಡಿ",
+       "rcshowhideminor": "à²\9aà³\81à²\9fà³\81à²\95ಾದ ಬದಲಾವಣೆಗಳನ್ನು $1",
        "rcshowhideminor-show": "ತೊರಿಸಿ",
        "rcshowhideminor-hide": "ಮರೆ ಮಾಡಿ",
        "rcshowhidebots": "ಬಾಟ್‍ಗಳನ್ನು $1",
        "rcshowhideanons": "ಅನಾಮಧೇಯ ಸದಸ್ಯರು $1",
        "rcshowhideanons-show": "ತೊರಿಸಿ",
        "rcshowhideanons-hide": "ಮರೆ ಮಾಡಿ",
-       "rcshowhidepatr": "$1 à²ªà²°à³\80à²\95à³\8dಷಿತ ಸಂಪಾದನೆಗಳು",
+       "rcshowhidepatr": "$1 à²\97ಸà³\8dತà³\81 à²¤à²¿à²°à³\81à²\97ಿದ ಸಂಪಾದನೆಗಳು",
        "rcshowhidepatr-show": "ತೊರಿಸಿ",
        "rcshowhidepatr-hide": "ಮರೆ ಮಾಡಿ",
        "rcshowhidemine": "ನನ್ನ ಸಂಪಾದನೆಗಳನ್ನು $1",
        "rcshowhidemine-show": "ತೊರಿಸಿ",
        "rcshowhidemine-hide": "ಮರೆ ಮಾಡಿ",
-       "rclinks": "à²\95à³\8aನà³\86ಯ $2 à²¦à²¿à²¨à²\97ಳಲà³\8dಲಿ à²®à²¾à²¡à²¿à²¦ $1 à²\95à³\8aನà³\86ಯ à²¬à²¦à²²à²¾à²µà²£à³\86à²\97ಳನà³\8dನà³\81 à²¨à³\8bಡಿ <br />$3",
+       "rclinks": "à²\95à³\8aನà³\86ಯ $2 à²¦à²¿à²¨à²\97ಳಲà³\8dಲಿ à²®à²¾à²¡à²¿à²¦ $1 à²¬à²¦à²²à²¾à²µà²£à³\86à²\97ಳನà³\8dನà³\81 à²¨à³\8bಡಿ",
        "diff": "ವ್ಯತ್ಯಾಸ",
        "hist": "ಇತಿಹಾಸ",
        "hide": "ಅಡಗಿಸು",
        "recentchangeslinked-summary": "ಒಂದು ನಿರ್ದಿಷ್ಟ ಪುಟದಿಂದ (ಅಥವ ನಿರ್ದಿಷ್ಟ ವರ್ಗಕ್ಕೆ ಸೇರಿರುವ ಪುಟಗಳಿಂದ) ಸಂಪರ್ಕ ಹೊಂದಿರುವ ಪುಟಗಳಲ್ಲಿ ಇತ್ತೀಚೆಗೆ ಮಾಡಲಾಗಿರುವ ಬದಲಾವಣೆಗಳನ್ನು ಈ ಕೆಳಗೆ ಪಟ್ಟಿ ಮಾಡಲಾಗಿದೆ.\n[[Special:Watchlist|ನಿಮ್ಮ ವೀಕ್ಷಣಾಪಟ್ಟಿಯಲ್ಲಿ]] ಇರುವ ಪುಟಗಳು '''ದಪ್ಪ ಅಕ್ಷರ'''ಗಳಲ್ಲಿ ಇವೆ.",
        "recentchangeslinked-page": "ಪುಟದ ಹೆಸರು:",
        "recentchangeslinked-to": "ಇದರ ಬದಲಿಗೆ ನೇಮಿತ ಪುಟಕ್ಕೆ ಕೊಂಡಿಯನ್ನು ಹೊಂದಿರುವ ಪುಟಗಳಲ್ಲಿನ ಬದಲಾವಣೆಗಳನ್ನು ತೋರು",
-       "upload": "ಫà³\88ಲà³\8d à²®à³\87ಲà²\95à³\8dà²\95à³\86ರಿಸಿ",
-       "uploadbtn": "ಫà³\88ಲನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ",
+       "upload": "à²\95ಡತ à²¸à³\87ರಿಸಿ",
+       "uploadbtn": "à²\95ಡತವನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ",
        "reuploaddesc": "ಅಪ್ಲೋಡ್ ಅನ್ನು ನಿಲ್ಲಿಸಿ ಮತ್ತೆ ಅಪ್ಲೋಡ್ ವಕ್ಕಣೆಗೆ ಹಿಂದಿರುಗಿ",
        "uploadnologin": "ಲಾಗಿನ್ ಆಗಿಲ್ಲ",
        "uploadnologintext": "ಫೈಲುಗಳನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಲು ನೀವು [[Special:UserLogin|ಲಾಗ್ ಇನ್]] ಆಗಬೇಕು.",
        "undelete-show-file-submit": "ಹೌದು",
        "namespace": "ಹೆಸರಿನ ಬಗೆ:",
        "invert": "ಆಯ್ಕೆಯನ್ನು ತಿರುಗಿಸು",
+       "tooltip-invert": "ಆಯ್ದ ಹೆಸರಿನ ಜಾಗದಲ್ಲಿ ಬದಲಾವಣೆಗಳನ್ನು ಮರೆಮಾಡಲು ಈ ಪೆಟ್ಟಿಗೆಯನ್ನು ಪರಿಶೀಲಿಸಿ (ಮತ್ತು ಪರಿಶೀಲಿಸಿದ ವೇಳೆ ಸಂಬಂಧಿತ ನೇಮ್ಸ್ಪೇಸ್)",
+       "namespace_association": "ಅಸೋಸಿಯೇಟೆಡ್ ನೇಮ್ಸ್ಪೇಸ್",
+       "tooltip-namespace_association": "ಆಯ್ಕೆ ಮಾಡಲಾದ ಹೆಸರಿನೊಂದಿಗೆ ಸಂಬಂಧಿಸಿದ ಚರ್ಚೆ ಅಥವಾ ವಿಷಯ ನಾಮಪದವನ್ನು ಸೇರಿಸಲು ಈ ಪೆಟ್ಟಿಗೆಯನ್ನು ಪರಿಶೀಲಿಸಿ",
        "blanknamespace": "(ಮುಖ್ಯ)",
        "contributions": "{{GENDER:$1|User}} ಕಾಣಿಕೆಗಳು",
        "contributions-title": "$1 ಸದಸ್ಯರ ಕಾಣಿಕೆಗಳು",
        "tooltip-feed-atom": "ಈ ಪುಟಕ್ಕೆ Atom ಫೀಡು",
        "tooltip-t-contributions": "{{GENDER:$1|ಈ ಸದಸ್ಯರ}} ಕಾಣಿಕೆಗಳ ಪಟ್ಟಿ",
        "tooltip-t-emailuser": "ಈ ಸದಸ್ಯರಿಗೆ ಇ-ಅಂಚೆಯನ್ನು ಕಳುಹಿಸು",
-       "tooltip-t-upload": "ಫà³\88ಲನà³\8dನà³\81 à²®à³\87ಲà²\95à³\8dà²\95à³\86ರಿಸಿ",
+       "tooltip-t-upload": "à²\95ಡತà²\97ಳನà³\8dನà³\81 à²¸à³\87ರಿಸಿ",
        "tooltip-t-specialpages": "ಎಲ್ಲಾ ವಿಶೇಷ ಪುಟಗಳ ಪಟ್ಟಿ",
        "tooltip-t-print": "ಈ ಪುಟದ ಮುದ್ರಣ ಮಾಡಬಹುದಾದಂತ ಆವೃತ್ತಿ",
        "tooltip-t-permalink": "ಪುಟದ ಈ ಆವೃತ್ತಿಗೆ ಶಾಶ್ವತ ಕೊಂಡಿ",
        "logentry-newusers-create": "ಬಳಕೆದಾರ ಖಾತೆ $1 ನ್ನು {{GENDER:$2|ಸೃಷ್ಟಿಸಲಾಯಿತು}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|ಅಪ್ಲೋಡ್ ಮಾಡಿದ್ದಾರೆ}} $3",
        "rightsnone": "(ಯಾವೂ ಇಲ್ಲ)",
-       "revdelete-summary": "ಸಂಪಾದನೆಯ ತಾತ್ಪರ್ಯ",
        "feedback-message": "ಸಂದೇಶ:",
        "feedback-subject": "ವಿಷಯ:",
        "searchsuggest-search": "{{SITENAME}} ಅನ್ನು ಹುಡುಕಿ",
index 35ec6d9..53d0098 100644 (file)
@@ -66,7 +66,8 @@
                        "Tursetic",
                        "Jerrykim306",
                        "Sukjong0406",
-                       "Garam"
+                       "Garam",
+                       "렌즈"
                ]
        },
        "tog-underline": "링크에 밑줄:",
        "anontalk": "토론",
        "navigation": "둘러보기",
        "and": ",",
-       "qbfind": "찾기",
-       "qbbrowse": "찾아보기",
-       "qbedit": "편집",
-       "qbpageoptions": "문서 기능",
-       "qbmyoptions": "내 사용자 문서",
        "faq": "자주 묻는 질문",
-       "faqpage": "Project:FAQ",
        "actions": "행위",
        "namespaces": "이름공간",
        "variants": "변수",
        "edit-local": "로컬 설명 편집",
        "create": "만들기",
        "create-local": "로컬 설명 추가",
-       "editthispage": "이 문서 편집하기",
-       "create-this-page": "이 문서 만들기",
        "delete": "삭제",
-       "deletethispage": "이 문서 삭제하기",
-       "undeletethispage": "이 문서를 되살리기",
        "undelete_short": "{{PLURAL:$1|편집 한 개|편집 $1개}} 되살리기",
        "viewdeleted_short": "{{PLURAL:$1|삭제된 편집 한 개|삭제된 편집 $1개}} 보기",
        "protect": "보호",
        "protect_change": "바꾸기",
-       "protectthispage": "이 문서 보호하기",
        "unprotect": "보호 설정 바꾸기",
-       "unprotectthispage": "이 문서의 보호 설정을 바꾸기",
        "newpage": "새 문서",
-       "talkpage": "토론 문서",
        "talkpagelinktext": "토론",
        "specialpage": "특수 문서",
        "personaltools": "개인 도구",
-       "articlepage": "문서 보기",
        "talk": "토론",
        "views": "보기",
        "toolbox": "도구",
        "tool-link-userrights": "{{GENDER:$1|사용자}} 그룹 변경",
        "tool-link-userrights-readonly": "{{GENDER:$1|사용자}} 그룹을 보기",
        "tool-link-emailuser": "이 {{GENDER:$1|사용자}}에게 이메일 보내기",
-       "userpage": "사용자 문서 보기",
-       "projectpage": "프로젝트 문서 보기",
        "imagepage": "파일 문서 보기",
        "mediawikipage": "메시지 문서 보기",
        "templatepage": "틀 문서 보기",
        "redirectedfrom": "($1에서 넘어옴)",
        "redirectpagesub": "넘겨주기 문서",
        "redirectto": "넘겨줄 대상:",
-       "lastmodifiedat": "이 문서는 $1 $2에 마지막으로 바뀌었습니다.",
+       "lastmodifiedat": "이 문서는 $1 $2에 마지막으로 편집되었습니다.",
        "viewcount": "이 문서는 {{PLURAL:$1|한 번|$1번}} 읽혔습니다.",
        "protectedpage": "보호된 문서",
        "jumpto": "이동:",
        "preview": "미리 보기",
        "showpreview": "미리 보기",
        "showdiff": "차이 보기",
-       "blankarticle": "<strong>경고:</strong> 만들려는 문서가 비어 있습니다.\n\"{{int:savearticle}}\"을 다시 클릭하면, 아무 내용 없이 문서가 만들어집니다.",
+       "blankarticle": "<strong>경고:</strong> 만들려는 문서가 비어 있습니다.\n\"$1\" 버튼을 다시 클릭하면, 아무 내용 없이 문서가 만들어집니다.",
        "anoneditwarning": "<strong>경고:</strong> 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. <strong>[$1 로그인]</strong>하거나 <strong>[$2 계정을 생성하면]</strong> 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.",
        "anonpreviewwarning": "<em>로그인하고 있지 않습니다. 문서를 저장하면 당신의 IP 주소가 문서의 편집 역사에 남게 됩니다.</em>",
-       "missingsummary": "'''알림:''' 편집 요약을 적지 않았습니다.\n이대로 \"{{int:savearticle}}\"을 클릭하면 편집 요약 없이 저장됩니다.",
-       "selfredirect": "<strong>경고:</strong> 자기 자신으로 문서를 넘겨주고 있습니다.\n넘겨줄 대상을 잘못 입력했거나, 잘못된 문서를 편집하고 있을 수 있습니다.\n\"{{int:savearticle}}\"을 입력하면, 넘겨주기 문서가 생성될 것입니다.",
+       "missingsummary": "'''알림:''' 편집 요약을 적지 않았습니다.\n\"$1\" 버튼을 다시 클릭하면 편집 요약 없이 편집이 저장됩니다.",
+       "selfredirect": "<strong>경고:</strong> 자기 자신으로 문서를 넘겨주고 있습니다.\n넘겨줄 대상을 잘못 입력했거나, 잘못된 문서를 편집하고 있을 수 있습니다.\n\"$1\" 버튼을 다시 클릭하면, 넘겨주기 문서가 생성됩니다.",
        "missingcommenttext": "아래에 내용을 채워 넣어 주세요.",
-       "missingcommentheader": "<strong>알림:</strong> 글의 제목을 입력하지 않았습니다.\n다시 \"{{int:savearticle}}\" 버튼을 클릭하면 글이 제목 없이 저장됩니다.",
+       "missingcommentheader": "<strong>알림:</strong> 이 댓글에 제목을 입력하지 않았습니다.\n\"$1\" 버튼을 다시 클릭하면 제목 없이 편집이 저장됩니다.",
        "summary-preview": "편집 요약 미리 보기:",
        "subject-preview": "주제 미리 보기:",
        "previewerrortext": "변경사항을 미리보기하는 도중 오류가 발생했습니다.",
        "editingsection": "$1 편집하기 (부분)",
        "editingcomment": "$1 편집하기 (덧붙이기)",
        "editconflict": "편집 충돌: $1",
-       "explainconflict": "문서를 편집하는 도중에 누군가 이 문서를 고쳤습니다.\n위쪽의 문서가 지금 바뀐 문서이고, 아래쪽의 문서가 당신이 편집한 문서입니다.\n아래쪽의 내용을 위쪽에 적절히 합쳐 주시기 바랍니다.\n\"{{int:savearticle}}\"을 누르면 '''위쪽의 편집 내역만''' 저장됩니다.",
+       "explainconflict": "문서를 편집하는 도중에 누군가 이 문서를 고쳤습니다.\n위쪽의 문서가 지금 바뀐 문서이고, 아래쪽의 문서가 당신이 편집한 문서입니다.\n아래쪽의 내용을 위쪽에 적절히 합쳐 주시기 바랍니다.\n\"$1\"을 누르면 위쪽의 <strong>편집 내역만</strong> 저장됩니다.",
        "yourtext": "당신의 편집",
        "storedversion": "현재 문서",
        "nonunicodebrowser": "<strong>경고: 브라우저가 유니코드를 지원하지 않습니다.</strong>\n문서를 안전하게 편집할 수 있도록 다음의 우회 방안이 제공됩니다: 편집 상자에서 아스키가 아닌 문자가 16진수 코드로 나타납니다.",
        "readonlywarning": "<strong>경고: 데이터베이스가 관리를 위해 잠겨 있습니다. 따라서 문서를 편집한 내용을 지금 저장할 수 없습니다.</strong>\n편집 내용을 복사하여 붙여넣기 등을 사용하여 일단 다른 곳에 저장한 후, 나중에 다시 시도해 주세요.\n\n데이터베이스를 잠근 시스템 관리자가 남긴 설명은 다음과 같습니다: $1",
        "protectedpagewarning": "<strong>경고: 이 문서는 관리자 권한이 있는 사용자만 편집할 수 있도록 보호되어 있습니다.</strong>\n이 문서의 최근 기록을 참조하십시오:",
        "semiprotectedpagewarning": "<strong>참고:</strong> 이 문서는 계정을 등록한 사용자만이 편집할 수 있도록 보호되어 있습니다.\n이 문서의 최근 기록을 참조하십시오:",
-       "cascadeprotectedwarning": "<strong>경고:</strong> 이 문서는 보호되어 있어 관리자 권한이 있는 사용자만 편집할 수 있습니다. 연쇄적 보호가 걸린 다음 {{PLURAL:$1|문서}}에서 이 문서를 사용하고 있습니다:",
+       "cascadeprotectedwarning": "<strong>경고:</strong> 이 문서는 보호되어 있어 [[Special:ListGroupRights|특정 권한]]이 있는 사용자만 편집할 수 있습니다. 연쇄적 보호가 걸린 다음 {{PLURAL:$1|문서}}에서 이 문서를 사용하고 있습니다:",
        "titleprotectedwarning": "<strong>경고: 이 문서는 보호되어 있어, 문서를 만드려면 [[Special:ListGroupRights|특정한 권한]]이 필요합니다.</strong>\n아래 문서의 최근 기록을 참조하십시오:",
        "templatesused": "이 문서에서 사용한 {{PLURAL:$1|틀}}:",
        "templatesusedpreview": "이 미리 보기에서 사용하고 있는 {{PLURAL:$1|틀}}:",
        "post-expand-template-argument-warning": "<strong>경고:</strong> 이 문서는 전개하면 크기가 너무 큰 틀 인수가 하나 이상 포함되어 있습니다.\n이 인수는 생략했습니다.",
        "post-expand-template-argument-category": "생략된 틀 변수를 포함한 문서",
        "parser-template-loop-warning": "재귀적인 틀이 발견되었습니다: [[$1]]",
+       "template-loop-category": "틀 루프가 있는 문서",
+       "template-loop-category-desc": "이 문서에 틀 루프가 있습니다. (예: 자기 자신을 반복하여 호출하는 틀)",
        "parser-template-recursion-depth-warning": "틀 반복 깊이 제한을 초과함 ($1)",
        "language-converter-depth-warning": "언어 변환기 실행 제한 초과($1)",
        "node-count-exceeded-category": "노드 횟수를 초과한 문서",
        "search-file-match": "(내용이 일치하는 파일 있음)",
        "search-suggest": "$1 문서를 찾고 있으신가요?",
        "search-rewritten": "$1의 결과를 보여주고 있습니다. $2을(를) 대신 검색합니다.",
-       "search-interwiki-caption": "자매 프로젝트",
+       "search-interwiki-caption": "자매 프로젝트에서의 결과",
        "search-interwiki-default": "$1로부터의 결과:",
        "search-interwiki-more": "(더 보기)",
        "search-interwiki-more-results": "더 많은 결과",
        "saveusergroups": "{{GENDER:$1|사용자}} 권한 저장",
        "userrights-groupsmember": "현재 권한:",
        "userrights-groupsmember-auto": "자동으로 부여된 권한:",
-       "userrights-groups-help": "이 사용자의 권한을 바꿀 수 있습니다.\n* 사용자는 체크 표시가 있는 권한을 갖습니다.\n* 사용자는 체크 표시가 없는 권한을 갖지 않습니다.\n* <nowiki>*</nowiki>표시는 권한을 주거나 거두는 것 중 하나만 할 수 있다는 뜻입니다.\n* <nowiki>#</nowiki> 표시는 권한의 만료일을 늦출 수만 있다는 뜻입니다; 만료일을 앞당길 수는 없습니다.",
+       "userrights-groups-help": "이 사용자의 권한을 바꿀 수 있습니다.\n* 사용자는 체크 표시가 있는 권한을 갖습니다.\n* 사용자는 체크 표시가 없는 권한을 갖지 않습니다.\n* * 표시는 권한을 주거나 거두는 것 중 하나만 할 수 있다는 뜻입니다.\n* # 표시는 사용자 권한의 만료일을 늦출 수만 있다는 뜻입니다; 만료일을 앞당길 수는 없습니다.",
        "userrights-reason": "이유:",
        "userrights-no-interwiki": "다른 위키의 사용자 권한을 바꿀 권한이 없습니다.",
        "userrights-nodatabase": "데이터베이스 $1이 존재하지 않거나 로컬에 있지 않습니다.",
        "userrights-expiry-options": "1일:1 day,1주일:1 week,1개월:1 month,3개월:3 months,6개월:6 months,1년:1 year",
        "userrights-invalid-expiry": "그룹 \"$1\"의 만료 시간이 유효하지 않습니다.",
        "userrights-expiry-in-past": "그룹 \"$1\"의 만료 시간이 과거입니다.",
-       "userrights-cannot-shorten-expiry": "\"$1\" 권한의 만료일을 앞당길 수 없습니다. 권한을 추가하고 회수할 수 있는 권한을 가진 사용자만 권한의 만료일을 앞당길 수 있습니다.",
+       "userrights-cannot-shorten-expiry": "\"$1\"에 해당하는 사용자의 권한의 만료일을 앞당길 수 없습니다. 권한을 추가하고 회수할 수 있는 권한을 가진 사용자만 권한의 만료일을 앞당길 수 있습니다.",
        "userrights-conflict": "사용자 권한 바꾸기가 충돌합니다! 바뀜을 검토하고 확인하세요.",
        "group": "그룹:",
        "group-user": "사용자",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "보기",
        "rcfilters-activefilters": "사용 중인 필터",
+       "rcfilters-quickfilters": "저장된 필터 설정",
+       "rcfilters-quickfilters-placeholder-title": "저장된 링크가 아직 없습니다",
+       "rcfilters-quickfilters-placeholder-description": "필터 설정을 저장하고 나중에 다시 사용하려면 아래의 사용 중인 필터 영역의 북마크 아이콘을 클릭하십시오.",
+       "rcfilters-savedqueries-defaultlabel": "저장된 필터",
+       "rcfilters-savedqueries-rename": "이름 바꾸기",
+       "rcfilters-savedqueries-setdefault": "기본값으로 설정",
+       "rcfilters-savedqueries-unsetdefault": "기본값으로 제거",
+       "rcfilters-savedqueries-remove": "제거",
+       "rcfilters-savedqueries-new-name-label": "이름",
+       "rcfilters-savedqueries-apply-label": "설정 저장",
+       "rcfilters-savedqueries-cancel-label": "취소",
+       "rcfilters-savedqueries-add-new-title": "현재의 필터 설정 저장",
        "rcfilters-restore-default-filters": "기본 필터 복구",
        "rcfilters-clear-all-filters": "필터 모두 지우기",
        "rcfilters-search-placeholder": "필터 최근 바뀜 (찾아보거나 입력을 시작하십시오)",
        "rcfilters-highlightmenu-help": "이 속성을 강조할 색을 선택하십시오",
        "rcfilters-filterlist-noresults": "필터를 찾을 수 없습니다",
        "rcfilters-noresults-conflict": "검색 조건이 충돌하기 때문에 결과를 찾을 수 없습니다",
+       "rcfilters-state-message-subset": "필터의 결과가 다음의 범위가 더 넓은 {{PLURAL:$2|필터}}의 결과에 포함되기 때문에 이 필터는 효력이 없습니다 (구별을 위해 강조해 보십시오): $1",
+       "rcfilters-state-message-fullcoverage": "한 그룹의 모든 필터를 선택하는 것은 아무 것도 선택하지 않는 것과 동일하므로 이 필터는 효력이 없습니다. 그룹은 다음을 포함합니다: $1",
        "rcfilters-filtergroup-registration": "사용자 등록",
        "rcfilters-filter-registered-label": "등록됨",
        "rcfilters-filter-registered-description": "로그인된 편집자.",
        "rcfilters-filter-unregistered-label": "등록 안 됨",
        "rcfilters-filter-unregistered-description": "로그인하지 않은 편집자.",
-       "rcfilters-filtergroup-authorship": "원작자 편집",
-       "rcfilters-filter-editsbyself-label": "자신의 편집",
-       "rcfilters-filter-editsbyself-description": "당신의 편집.",
-       "rcfilters-filter-editsbyother-label": "다른 사용자의 편집",
-       "rcfilters-filter-editsbyother-description": "다른 사용자에 의한 편집 (당신의 편집이 아님).",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "이 필터는 등록된 사용자만을 {{PLURAL:$2|찾는}} 다음의 경험 {{PLURAL:$2|필터}}와 충돌합니다: $1",
+       "rcfilters-filtergroup-authorship": "원작자 기여",
+       "rcfilters-filter-editsbyself-label": "당신의 변경사항",
+       "rcfilters-filter-editsbyself-description": "당신의 기여.",
+       "rcfilters-filter-editsbyother-label": "다른 사용자의 변경사항",
+       "rcfilters-filter-editsbyother-description": "당신을 제외한 모든 변경사항.",
        "rcfilters-filtergroup-userExpLevel": "경험 수준 (등록된 사용자 전용)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "경험 필터는 등록된 사용자만을 검색하기 때문에 이 필터는 \"등록 안 됨\" 필터와 충돌합니다.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"등록 안 됨\" 필터는 하나 이상의 경험 필터와 충돌합니다. 경험 필터는 등록된 사용자만 찾습니다. 충돌되는 필터는 위의 활성화된 필터 목록에 표시됩니다.",
        "rcfilters-filter-user-experience-level-newcomer-label": "신규 사용자",
        "rcfilters-filter-user-experience-level-newcomer-description": "10회 미만의 편집 및 4일 미만의 활동.",
        "rcfilters-filter-user-experience-level-learner-label": "학습자",
-       "rcfilters-filter-user-experience-level-learner-description": "\"신규 사용자\" 보다 활동일 및 편집 수가 더 많지만 \"능숙한 사용자\" 보다는 적습니다.",
+       "rcfilters-filter-user-experience-level-learner-description": "\"신규 사용자\" 보다 경험이 더 많지만 \"능숙한 사용자\" 보다는 적습니다.",
        "rcfilters-filter-user-experience-level-experienced-label": "능숙한 사용자",
        "rcfilters-filter-user-experience-level-experienced-description": "30일 이상의 활동 및 500개 이상의 편집.",
        "rcfilters-filtergroup-automated": "자동으로 된 기여",
        "rcfilters-filter-minor-description": "기여자가 사소한 기여로 표시한 편집.",
        "rcfilters-filter-major-label": "사소하지 않은 편집",
        "rcfilters-filter-major-description": "사소한 편집으로 표시되지 않은 편집.",
+       "rcfilters-filtergroup-watchlist": "주시 중인 문서",
+       "rcfilters-filter-watchlist-watched-label": "주시문서 목록에서",
+       "rcfilters-filter-watchlist-watched-description": "주시문서 목록의 문서의 변경사항입니다.",
+       "rcfilters-filter-watchlist-watchednew-label": "새로운 주시문서 목록 변경사항",
+       "rcfilters-filter-watchlist-watchednew-description": "변경사항이 발생한 이후로 방문한 적이 없는 주시 중인 문서의 변경사항입니다.",
+       "rcfilters-filter-watchlist-notwatched-label": "주시문서 목록에서가 아닌",
+       "rcfilters-filter-watchlist-notwatched-description": "주시 중인 문서의 변경사항을 제외한 모든 사항입니다.",
        "rcfilters-filtergroup-changetype": "차이 종류",
        "rcfilters-filter-pageedits-label": "문서 편집",
+       "rcfilters-filter-pageedits-description": "위키 내용, 토론, 분류 설명에 대한 편집....",
        "rcfilters-filter-newpages-label": "문서 생성",
        "rcfilters-filter-newpages-description": "새 문서를 만드는 편집.",
        "rcfilters-filter-categorization-label": "분류 차이",
        "rcfilters-filter-categorization-description": "분류에서 추가되거나 제거되는 페이지의 기록.",
+       "rcfilters-filter-logactions-label": "기록된 행위",
        "rcfilters-filter-logactions-description": "관리적 조치, 계정 만들기, 페이지 삭제, 업로드...",
        "rcfilters-hideminor-conflicts-typeofchange-global": "특정한 유형의 변경사항을 \"사소한 편집\"으로 지정할 수 없기 때문에 \"사소한 편집\" 필터는 하나 이상의 변경사항 유형 필터와 충돌합니다. 충돌되는 필터들은 위의 사용 중인 필터 영역에 표시됩니다.",
        "rcfilters-hideminor-conflicts-typeofchange": "특정한 종류의 변경사항은 \"사소한 편집\"으로 지정할 수 없으므로 이 필터는 다음 유형의 변경사항 필터와 충돌합니다: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "이 유형의 변경사항 필터는 \"사소한 편집\" 필터와 충돌합니다. 특정한 종류의 변경사항은 \"사소한 편집\"으로 지정할 수 없습니다.",
+       "rcfilters-filtergroup-lastRevision": "마지막 판",
+       "rcfilters-filter-lastrevision-label": "마지막 판",
+       "rcfilters-filter-lastrevision-description": "문서의 최근 변경사항입니다.",
+       "rcfilters-filter-previousrevision-label": "이전 판",
+       "rcfilters-filter-previousrevision-description": "문서에 대한 최근 변경사항이 아닌 모든 변경사항입니다.",
+       "rcfilters-filter-excluded": "제외됨",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:아님</strong> $1",
+       "rcfilters-view-tags": "태그",
        "rcnotefrom": "아래는 <strong>$3, $4</strong>부터 시작하는 {{PLURAL:$5|바뀜이 있습니다}}. (최대 <strong>$1</strong>개가 표시됨)",
        "rclistfromreset": "날짜 선택 초기화",
        "rclistfrom": "$3 $2부터 시작하는 새로 바뀐 문서 보기",
        "rcshowhidecategorization": "문서 분류 $1",
        "rcshowhidecategorization-show": "보이기",
        "rcshowhidecategorization-hide": "숨기기",
-       "rclinks": "최근 $2일간의 $1개 바뀐 문서 보기<br />$3",
+       "rclinks": "최근 $2일간의 $1개 바뀐 문서 보기",
        "diff": "차이",
        "hist": "역사",
        "hide": "숨기기",
        "magiclink-tracking-isbn": "ISBN 매직 링크를 사용하는 문서",
        "magiclink-tracking-isbn-desc": "이 문서는 ISBN 매직 링크를 사용합니다. 이관 방법을 보려면 [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org]를 참조하십시오.",
        "specialloguserlabel": "작업 수행자:",
-       "speciallogtitlelabel": "대상 (사용자계정에 대한 제목 또는 {{ns:user}}:사용자이름):",
+       "speciallogtitlelabel": "대상 (문서 제목 또는 {{ns:user}}:사용자이름 으로 사용자 검색):",
        "log": "기록 목록",
        "logeventslist-submit": "보기",
        "all-logs-page": "모든 공개 기록",
-       "alllogstext": "{{SITENAME}}ì\9d\98 ì\82¬ì\9a©í\95  ì\88\98 ì\9e\88ë\8a\94 ê¸°ë¡\9dì\9d´ ëª¨ë\91\90 í\91\9cì\8b\9cë\90\98ì\96´ ì\9e\88ì\8aµë\8b\88ë\8b¤.\n기ë¡\9d ì¢\85ë¥\98, ì\82¬ì\9a©ì\9e\90 ì\9d´ë¦\84, ì\98\81í\96¥ì\9d\84 ë°\9bë\8a\94 ë¬¸ì\84\9cì\9d\84 ì\84 í\83\9dí\95´ì\84\9c ë²\94ì\9c\84를 ì¢\81í\98\80ì\84\9c ë³¼ ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤. (ë\8c\80ì\86\8c문ì\9e\90를 êµ¬ë³\84í\95©ë\8b\88ë\8b¤.)",
+       "alllogstext": "{{SITENAME}}ì\9d\98 ì·¨ë\93\9d ê°\80ë\8a¥í\95\9c ëª¨ë\93  ê¸°ë¡\9dì\9d´ í\91\9cì\8b\9cë\90\98ì\96´ ì\9e\88ì\8aµë\8b\88ë\8b¤.\n기ë¡\9d ì¢\85ë¥\98, ì\82¬ì\9a©ì\9e\90 ì\9d´ë¦\84\8c\80ì\86\8c문ì\9e\90 êµ¬ë³\84), ì\98\81í\96¥ì\9d\84 ë°\9bë\8a\94 ë¬¸ì\84\9c\8c\80ì\86\8c문ì\9e\90 êµ¬ë³\84)를 ì\84 í\83\9dí\95´ì\84\9c ë²\94ì\9c\84를 ì¢\81í\98\80ì\84\9c ë³¼ ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤.",
        "logempty": "일치하는 항목이 없습니다.",
        "log-title-wildcard": "다음 글로 시작하는 제목 검색",
        "showhideselectedlogentries": "선택한 기록 항목 보이기/숨기기",
        "allpages": "모든 문서 목록",
        "nextpage": "다음 문서 ($1)",
        "prevpage": "이전 문서 ($1)",
-       "allpagesfrom": "다음으로 시작하는 문서 표시:",
-       "allpagesto": "다음으로 끝나는 문서 표시:",
+       "allpagesfrom": "다음보다 뒤에 오는 문서 표시:",
+       "allpagesto": "다음 보다 앞에 오는 문서 표시:",
        "allarticles": "모든 문서",
        "allinnamespace": "$1 이름공간의 모든 문서",
        "allpagessubmit": "보기",
        "categories": "분류 목록",
        "categories-submit": "보이기",
        "categoriespagetext": "문서나 자료를 {{PLURAL:$1|포함하고 있는 분류}} 목록입니다.\n[[Special:UnusedCategories|사용되지 않는 분류]]는 여기에 보이지 않습니다.\n[[Special:WantedCategories|필요한 분류]]도 참조하세요.",
-       "categoriesfrom": "다음으로 시작하는 분류 표시:",
+       "categoriesfrom": "검색어와 같거나 검색어보다 뒤에 오는 분류 표시:",
        "deletedcontributions": "삭제된 사용자 기여",
        "deletedcontributions-title": "삭제된 사용자 기여",
        "sp-deletedcontributions-contribs": "기여",
        "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_lastvisited": "마지막으로 방문한 뒤 생긴 모든 바뀜을 보려면 $1을 보세요",
+       "enotif_lastdiff": "이 바뀜을 보려면 $1을 보세요",
        "enotif_anon_editor": "익명 사용자 $1",
        "enotif_body": "$WATCHINGUSERNAME님,\n\n$PAGEINTRO $NEWPAGE\n\n편집 요약: $PAGESUMMARY $PAGEMINOREDIT\n\n다음을 통해 편집자와 대화를 할 수 있습니다:\n이메일: $PAGEEDITOR_EMAIL\n위키: $PAGEEDITOR_WIKI\n\n로그인한 상태에서 이 문서를 열기 전에는 다른 알림 이메일을 더 이상 보내지 않습니다. 모든 주시 문서의 알림 딱지를 초기화할 수도 있습니다.\n\n{{SITENAME}} 알림 시스템\n\n--\n이메일 알림 설정을 바꾸시려면 이곳을 방문해주세요:\n{{canonicalurl:{{#special:Preferences}}}}\n\n주시문서 설정을 바꾸려면 다음을 사용하세요:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\n주시문서에서 이 문서를 지우려면 이곳을 방문해주세요:\n$UNWATCHURL\n\n피드백 및 추가 도움 얻기:\n$HELPPAGE",
        "created": "만들었",
        "changecontentmodel-emptymodels-title": "이용 가능한 콘텐츠 모델이 없음",
        "changecontentmodel-emptymodels-text": "[[:$1]]의 콘텐츠가 임의의 종류로 전환될 수 없습니다.",
        "log-name-contentmodel": "콘텐츠 모델 변경 기록",
-       "log-description-contentmodel": "페이지의 콘텐츠 모델과 관련된 행위",
+       "log-description-contentmodel": "이 페이지는 페이지의 콘텐츠 모델의 변경사항 및 기본값이 외의 콘텐츠 모델로 작성된 페이지들을 나열합니다.",
        "logentry-contentmodel-new": "$1님이 비 기본값 \"$5\" 콘텐츠 모델을 사용해  $3 문서를 {{GENDER:$2|만들었습니다}}",
        "logentry-contentmodel-change": "$1님이 $3 문서의 콘텐츠 모델을 \"$4\"에서 \"$5\"(으)로 {{GENDER:$2|바꾸었습니다}}",
        "logentry-contentmodel-change-revertlink": "되돌리기",
        "sp-contributions-uploads": "올린 파일",
        "sp-contributions-logs": "기록",
        "sp-contributions-talk": "토론",
-       "sp-contributions-userrights": "사용자 권한 관리",
+       "sp-contributions-userrights": "{{GENDER:$1|사용자}} 권한 관리",
        "sp-contributions-blocked-notice": "이 사용자는 현재 차단되어 있습니다.\n해당 사용자의 차단 기록은 다음과 같습니다:",
        "sp-contributions-blocked-notice-anon": "이 IP 주소는 현재 차단되어 있습니다.\n차단 기록은 다음과 같습니다:",
        "sp-contributions-search": "기여 검색",
        "autoblocklist-submit": "검색",
        "autoblocklist-legend": "자동차단 목록",
        "autoblocklist-localblocks": "로컬 자동 차단 {{PLURAL:$1|기록|기록들}}",
+       "autoblocklist-total-autoblocks": "총 자동 차단의 수: $1",
        "autoblocklist-empty": "자동차단 목록이 비어 있습니다.",
        "autoblocklist-otherblocks": "다른 자동 차단 {{PLURAL:$1|기록|기록들}}",
        "ipblocklist": "차단된 사용자",
        "tooltip-pt-mycontris": "{{GENDER:|내}} 기여 목록",
        "tooltip-pt-anoncontribs": "이 IP 주소의 편집 목록",
        "tooltip-pt-login": "꼭 로그인해야 하는 것은 아니지만, 로그인을 권장합니다.",
+       "tooltip-pt-login-private": "이 위키를 사용하려면 로그인해야 합니다",
        "tooltip-pt-logout": "로그아웃",
        "tooltip-pt-createaccount": "계정을 만들고 로그인하는 것이 좋습니다; 하지만, 필수는 아닙니다",
        "tooltip-ca-talk": "문서의 내용에 대한 토론 문서",
        "anonymous": "{{SITENAME}} 익명 {{PLURAL:$1|사용자}}",
        "siteuser": "{{SITENAME}} 사용자 $1",
        "anonuser": "{{SITENAME}} 익명 사용자 $1",
-       "lastmodifiedatby": "이 문서는 $3님이 $1 $2에 마지막으로 ë°\94꾸ì\97\88ì\8aµë\8b\88ë\8b¤.",
+       "lastmodifiedatby": "이 문서는 $3님이 $1 $2에 마지막으로 í\8e¸ì§\91í\96\88ì\8aµë\8b\88ë\8b¤.",
        "othercontribs": "$1의 작업을 바탕으로 합니다.",
        "others": "기타",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|사용자}}}} $1",
        "newimages-legend": "필터",
        "newimages-label": "파일 이름 (또는 그 일부분):",
        "newimages-user": "IP 주소 또는 사용자 이름",
+       "newimages-newbies": "새 사용자의 기여만 보기",
        "newimages-showbots": "봇이 올린 것 보기",
        "newimages-hidepatrolled": "점검한 업로드 숨기기",
+       "newimages-mediatype": "미디어 유형:",
        "noimages": "그림이 없습니다.",
        "gallery-slideshow-toggle": "섬네일 토글",
        "ilsubmit": "검색",
        "confirmrecreate": "[[User:$1|$1]] 사용자([[User talk:$1|토론]])가 당신이 편집하는 도중에 문서를 {{GENDER:$1|삭제했습니다}}. 삭제 이유는 다음과 같습니다:\n: $2\n문서를 다시 만들어야 하는지 확인해주세요.",
        "confirmrecreate-noreason": "[[User:$1|$1]] 사용자([[User talk:$1|토론]])가 당신이 편집하는 도중에 문서를 {{GENDER:$1|삭제했습니다}}. 문서를 다시 만들어야 하는지 확인해주세요.",
        "recreate": "새로 만들기",
+       "confirm-purge-title": "이 문서를 새로고침",
        "confirm_purge_button": "확인",
        "confirm-purge-top": "이 문서의 캐시를 지울까요?",
        "confirm-purge-bottom": "문서를 새로 고치는 것은 캐시를 지우고 강제로 가장 현재의 판이 나타나게 합니다.",
        "tag-filter-submit": "필터",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|태그}}]]: $2)",
        "tag-mw-contentmodelchange": "콘텐츠 모델 변경",
+       "tag-mw-contentmodelchange-description": "페이지의 [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel 콘텐츠\n 모델을 변경하는] 편집",
        "tags-title": "태그",
        "tags-intro": "이 문서는 소프트웨어에서 편집에 대해 표시하는 태그와 그 의미를 설명하는 목록입니다.",
        "tags-tag": "태그 이름",
        "tags-create-reason": "이유:",
        "tags-create-submit": "만들기",
        "tags-create-no-name": "태그 이름을 지정해야 합니다.",
-       "tags-create-invalid-chars": "í\83\9cê·¸ ì\9d´ë¦\84ì\9d\80 ì½¤ë§\88 (<code>,</code>)ë\82\98 ì\8a¬ë\9e\98ì\8b\9c (<code>/</code>)를 포함할 수 없습니다.",
+       "tags-create-invalid-chars": "í\83\9cê·¸ ì\9d´ë¦\84ì\9d\80 ì\89¼í\91\9c(<code>,</code>), í\8c\8cì\9d´í\94\84(<code>|</code>) ë\98\90ë\8a\94 ì\8a¬ë\9e\98ì\8b\9c(<code>/</code>)를 포함할 수 없습니다.",
        "tags-create-invalid-title-chars": "태그 이름은 문서 제목에 사용할 수 없는 이름으로는 쓸 수 없습니다.",
        "tags-create-already-exists": "\"$1\" 태그가 이미 존재합니다.",
        "tags-create-warnings-above": "태그 \"$1\"을 생성하려고 하였으나 {{PLURAL:$2|오류}}가 발생하였습니다.",
        "special-characters-group-thai": "타이어",
        "special-characters-group-lao": "라오어",
        "special-characters-group-khmer": "크메르어",
+       "special-characters-group-canadianaboriginal": "캐나다 원주민 언어",
        "special-characters-title-endash": "en 대시",
        "special-characters-title-emdash": "em 대시",
        "special-characters-title-minus": "빼기 기호",
        "mw-widgets-titleinput-description-redirect": "$1 문서로 넘겨주기",
        "mw-widgets-categoryselector-add-category-placeholder": "분류 추가...",
        "mw-widgets-usersmultiselect-placeholder": "더 추가하기...",
+       "date-range-from": "시작 날짜:",
+       "date-range-to": "끝 날짜:",
        "sessionmanager-tie": "여러 요청 인증 유형 결합할 수 없습니다: $1.",
        "sessionprovider-generic": "$1 세션",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "쿠키 기반 세션",
        "restrictionsfield-help": "줄 단위의 하나의 IP 주소 또는 CIDR 대역입니다. 모든 곳에 적용하려면, 다음을 사용하세요:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "$1 판",
        "pageid": "페이지 ID $1",
+       "rawhtml-notallowed": "&lt;html&gt; 태그는 일반 페이지 밖에서는 사용할 수 없습니다.",
        "gotointerwiki": "{{SITENAME}}을(를) 떠납니다",
        "gotointerwiki-invalid": "지정된 제목이 올바르지 않습니다.",
-       "gotointerwiki-external": "다른 웹사이트 [[$2]]을(를) 방문하기 위해 {{SITENAME}}을(를) 떠나려고 합니다.\n\n[$1 $1(으)로 계속 진행하려면 여기를 눌러주세요].",
+       "gotointerwiki-external": "다른 웹사이트 [[$2]]을(를) 방문하기 위해, {{SITENAME}}을(를) 떠나려고 합니다.\n\n'''[$1 $1(으)로 계속 진행]'''",
        "undelete-cantedit": "이 문서를 편집할 권한이 없으므로 이 문서를 복구할 수 없습니다.",
-       "undelete-cantcreate": "이 이름으로 된 문서가 없고 이 문서를 만들 권한이 없으므로 이 문서를 복구할 수 없습니다."
+       "undelete-cantcreate": "이 이름으로 된 문서가 없고 이 문서를 만들 권한이 없으므로 이 문서를 복구할 수 없습니다.",
+       "pagedata-title": "문서 데이터",
+       "pagedata-text": "이 문서는 문서에 대한 데이터 인터페이스를 제공합니다. 하위 문서 문법을 사용하여 URL에 문서 제목을 지정해 주십시오.\n* 클라이언트의 Accept 헤더에 기반하여 내용이 절충됩니다. 즉, 문서 데이터는 클라이언트가 선호하는 형식으로 제공됩니다.",
+       "pagedata-not-acceptable": "일치하는 형식을 찾을 수 없습니다. 지원하는 MIME 형식: $1",
+       "pagedata-bad-title": "유효하지 않은 제목: $1."
 }
index 9bf914e..5223b90 100644 (file)
        "rcshowhideliu": "Ас нимöн $1 уджкерись",
        "rcshowhideanons": "$1 нимтöг уджкерись",
        "rcshowhidemine": "аслам $1 мöдкодьсьöтöм",
-       "rclinks": "Мыччавны  медбöрья $1 вильмöтöмсö $2 лун дырнаись<br />$3",
+       "rclinks": "Мыччавны  медбöрья $1 вильмöтöмсö $2 лун дырнаись",
        "diff": "неöтк.",
        "hist": "чулалöм",
        "hide": "Сайöвтны",
index 557bc61..6a2191c 100644 (file)
@@ -9,7 +9,8 @@
                        "Къарачайлы",
                        "아라",
                        "Macofe",
-                       "Ernác"
+                       "Ernác",
+                       "Stephanecbisson"
                ]
        },
        "tog-underline": "Джибериулени черт:",
        "externaldberror": "Тыш информация базаны болушлугъу бла аутентификация, халатлы болду, неда тыш аккаунтугъузну тюрлендирирге хакъларагъыз джетмейди.",
        "login": "Системагъа кириу",
        "nav-login-createaccount": "Системагъа кириу / Аккаунт къурау",
-       "userlogin": "Кир / регистрация эт",
-       "userloginnocreate": "Кириу",
        "logout": "Чыгъыу",
        "userlogout": "Чыгъыу",
        "notloggedin": "Авторизация ётмегенсиз",
        "userlogin-noaccount": "Аккаунтунг джокъмуду?",
        "userlogin-joinproject": "{{SITENAME}} сайтха къошул",
-       "nologin": "Тергеу джазыуугъуз (аккаунтугъуз) джокъмуду? $1.",
-       "nologinlink": "Тергеу джазыу (аккаунт) къурагъыз",
        "createaccount": "Аккаунт къурау",
-       "gotaccount": "Тергеу джазыуугъуз (аккаунтугъуз) энди бармыды? $1.",
-       "gotaccountlink": "Системагъа кир",
-       "userlogin-resetlink": "Кирир ючюн билгилеригизни унутхан этгенмисиз?",
        "userlogin-resetpassword-link": "Паролунгу унутдунгму?",
        "userlogin-helplink2": "Кириуде болушлукъ",
        "userlogin-createanother": "Башха аккаунт къурау",
        "createacct-another-email-ph": "Электрон почтаны адресин джаз",
        "createaccountmail": "Эсде болмагъанлай генерация этилген болджаллы паролну хайырландырыу эмда берилген электрон почта адресге ийиу",
        "createacct-realname": "Керти атыгъыз (ажымсыз керек тюлдю)",
-       "createaccountreason": "Чурум:",
        "createacct-reason": "Чурум",
        "createacct-reason-ph": "Башха тергеу джазыуну нек къураусыз",
        "createacct-submit": "Тергеу джазыуну къура",
        "passwordreset-emaildisabled": "Бу викиде электрон почтаны функциялары джукъланыбдыла.",
        "passwordreset-username": "Къошулуучуну аты:",
        "passwordreset-domain": "Домен:",
-       "passwordreset-capture": "Джазылгъан билдириуню эсебине къара?",
-       "passwordreset-capture-help": "Бу белгини салсагъыз, къошулуучугъа ийилген болджаллы пароль бла билдириу сизге кёргюзюллюкдю.",
        "passwordreset-email": "Электрон почтаны адреси:",
        "passwordreset-emailtitle": "{{SITENAME}} сайтдагъы тергеу джазыуну юсюнден билгиле",
        "passwordreset-emailelement": "Къошулуучуну аты: \n$1\n\nБолджаллы пароль: \n$2",
        "anonpreviewwarning": "''Сиз тергеу джазыуугъуз бла кирмегенсиз. Бетде тюрлениулени сакълатсагъыз, бетни тюрлениу тарихине IP-адресигиз джазыллыкъды.''",
        "missingsummary": "'''Эс бёлюгюз.'''  Тюрлениулеге къысха ачыкълау джазмагъансыз.\nСиз «Бетни сакъла» дегеннге энтда бассагъыз, тюрлениуле комментарийлесиз сакъланныкъдыла.",
        "missingcommenttext": "Тюбю бла ачыкълау джазыгъыз.",
-       "missingcommentheader": "'''Эс бёлюгюз:''' Сиз ачыкълаугъа тема/башлыкъ джазмагъансыз.\n«{{int:savearticle}}» тиекден джангыдан бассагъыз, тюрлендириулеригиз башлыкъсыз сакъланныкъдыла.",
+       "missingcommentheader": "'''Эс бёлюгюз:''' Сиз ачыкълаугъа тема/башлыкъ джазмагъансыз.\n«$1» тиекден джангыдан бассагъыз, тюрлендириулеригиз башлыкъсыз сакъланныкъдыла.",
        "summary-preview": "Суратлауу былай боллукъду:",
        "subject-preview": "Башлыкъны ал къарау:",
        "blockedtitle": "Къошулуучу блок этилиниб турады",
        "editingsection": "«$1» бетде бёлюмню тюрлендириу",
        "editingcomment": "«$1» бетни тюрлендириу (джангы бёлюм)",
        "editconflict": "Тюрлендириу конфликт: $1",
-       "explainconflict": "Сиз тюрлендире тургъан сагъатда, ким эседа бы бетни тюрлендирген этгенди.\nБаш терезеде сиз бусагъатдагъы текстни кёресиз.\nТюбюнде терезеде сизни варинтды.\nСиз этген тюрлениулени тюб терезеден баш терезеге кёчюрюгюз.\n«{{int:savearticle}}» басылса баш терезеде текст сакъланныкъды.",
+       "explainconflict": "Сиз тюрлендире тургъан сагъатда, ким эседа бы бетни тюрлендирген этгенди.\nБаш терезеде сиз бусагъатдагъы текстни кёресиз.\nТюбюнде терезеде сизни варинтды.\nСиз этген тюрлениулени тюб терезеден баш терезеге кёчюрюгюз.\n«$1» басылса баш терезеде текст сакъланныкъды.",
        "yourtext": "Сизни текстигиз",
        "storedversion": "Сакъланнган версия",
        "nonunicodebrowser": "'''Эсгертиу: сизни браузеригиз Юникод кодировканы танымайдв.'''\nБетлени тюрлендирген сагъатда ASCII болмагъан символла оналтылыкъ кодларына алышдырыллыкъдыла.",
        "saveprefs": "Сакъла",
        "restoreprefs": "Тынгылау бла джарашдырыуланы ызына къайтар",
        "prefs-editing": "Тюрлендириу",
-       "rows": "Тизгинле:",
-       "columns": "Колонкала:",
        "searchresultshead": "Излеу",
        "stub-threshold": "<a href=\"#\" class=\"stub\">Стаблагъа джибериуню</a> формат этер ючюн марда (байтлада):",
        "stub-threshold-disabled": "Джукъланыбды",
        "userrights-reason": "Чурум:",
        "userrights-no-interwiki": "Башха викиледеги къошлуучуланы хакъларын тюрлендирирге эркинлигигиз джокъду.",
        "userrights-nodatabase": "$1 белги базасы джокъду неда локаль тюлдю.",
-       "userrights-nologin": "Къошулуучулагъа хакъланы берир ючюн администратор кибик [[Special:UserLogin|кирирге керексиз]].",
-       "userrights-notallowed": "Сизни тергеу джазыуугъуздан къошулуучулагъа хакъла берирге эмда кетерирге эркинлик джокъду.",
        "userrights-changeable-col": "Сиз тюрлендиреллик къауумла",
        "userrights-unchangeable-col": "Сиз тюрлендирелмезлик къауумла",
        "userrights-irreversible-marker": "$1*",
        "right-protect": "Къорууну дараджасын тюрлендир эмда къорууланнган бетледе тюрлениуле эт",
        "right-editprotected": "Къорууланнган бетледе тюрлениу эт (секиртмесиз джакъсыз)",
        "right-editinterface": "Къошулуучу интерфейсни тюрлендир",
-       "right-editusercssjs": "Башха къошулуучуланы CSS- эм JS-файлларына тюрлениу эт",
        "right-editusercss": "Башха къошулуучуланы CSS-файлларына тюрлениу эт",
        "right-edituserjs": "Башха къошулуучуланы JS-файлларына тюрлениу эт",
        "right-rollback": "Белгили бетни тюрлендирген ахыр къошулуучуну тюрлениулерин дженгил ызына къайтар",
        "right-siteadmin": "Билги базаны киритле эмда киритни ач",
        "right-override-export-depth": "Бетлени, теренлиги 5-ге дери байламлы бетле бла бирге экспорт эт",
        "right-sendemail": "Башха къошулуучулагъа электрон почта джиберирге",
-       "right-passwordreset": "пароль тюрлениуле бла e-mail'леге къарау",
        "grant-group-email": "E-mail джибер",
        "grant-createaccount": "Аккаунтла къурау",
        "newuserlogpage": "Къошулуучуланы регистрацияларыны журналы",
        "rcshowhidemine": "кесими тюрлендириулерими $1",
        "rcshowhidemine-show": "кёргюз",
        "rcshowhidemine-hide": "джашыр",
-       "rclinks": "Ахыр $2 кюнню ичинде этилиннген $1 тюрлениуню кёргюз;<br /> $3",
+       "rclinks": "Ахыр $2 кюнню ичинде этилиннген $1 тюрлениуню кёргюз;",
        "diff": "башх.",
        "hist": "тарих",
        "hide": "джашыр",
        "undeleteviewlink": "кёргюз",
        "undeleteinvert": "Сайлауну ызына бур",
        "undeletecomment": "Чурум:",
-       "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 бет ызына къайтарылды '''\n\nАхыр кетериу бла ызына къайтарыуну кёрюр ючюн [[Special:Log/delete|кетериуню журнал]]ына къарагъыз.",
        "undelete-header": "Кёб болмай кетерилген бетлени кёрюр ючюн [[Special:Log/delete|кетериу журнал]]гъа къарагъыз.",
        "logentry-rights-autopromote": "$1 къошулуучу, $4 къауумдан автомат халда $5 къауумгъа {{GENDER:$2|кёчюрюлдю}}",
        "logentry-upload-upload": "$1, $3 {{GENDER:$2|джюкледи}}",
        "rightsnone": "(джокъ)",
-       "revdelete-summary": "тюрлениулени ачыкълау",
        "feedback-cancel": "Ызына алыу",
        "feedback-close": "Тындырылды",
        "feedback-error2": "Халат. Тюзетиу ётмеди",
        "searchsuggest-search": "Излеу",
        "searchsuggest-containing": "ичиндегиси…",
        "api-error-badtoken": "Ич халат: терс токен.",
-       "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-missing": "Файлны кенгериую джокъду.",
-       "api-error-hookaborted": "Сиз теджеген тюрлендириуню кенгертиуню сюзюучю джасакълагъанды.",
-       "api-error-illegal-filename": "Джарамагъан файл ат.",
-       "api-error-invalid-file-key": "Ич халат: болджаллы асыраучу джерде файл  табылмады.",
-       "api-error-mustbeposted": "Ич халат: соруу, HTTP POST инструкцияны излейди.",
-       "api-error-ok-but-empty": "Ич халат: сервер джууаб бермейди.",
-       "api-error-timeout": "Сакълагъан заманны ичинде сервер джуууб бермейди.",
-       "api-error-unclassified": "Белгили болмагъан халат чыкъды",
-       "api-error-unknown-code": "Билинмеген халат: «$1».",
-       "api-error-unknown-error": "Ич халат: файлны джюклерге излеген сагъатда не эсе да терс болду.",
        "api-error-unknown-warning": "Билинмеген билдириу: $1",
        "api-error-unknownerror": "Билинмеген халат: «$1».",
-       "api-error-uploaddisabled": "Бу викиде файлла джюклеу амал джукъланыбды",
-       "api-error-verification-error": "Бу заран джетген файл болургъа боллукъду неда терс кенгертиую болургъа боллукъду.",
        "duration-seconds": "$1 {{PLURAL:$1|секунд}}",
        "duration-minutes": "$1 {{PLURAL:$1|минут}}",
        "duration-hours": "$1 {{PLURAL:$1|сагъат}}",
index 6ea2658..736e5cf 100644 (file)
        "rcshowhidemine": "$1 miun kohennukšet",
        "rcshowhidemine-show": "Näytä",
        "rcshowhidemine-hide": "Peitä",
-       "rclinks": "Näytä $1 vereštä kohennušta viimesen $2 päivän ajalta.<br />$3",
+       "rclinks": "Näytä $1 vereštä kohennušta viimesen $2 päivän ajalta.",
        "diff": "ero",
        "hist": "ist",
        "hide": "Peitä",
index 3d70dbb..e1d5cd5 100644 (file)
        "externaldberror": "Do wor ene Fähler en de externe Daatebank, oder Do darfs Ding extern Daate nit ändere. Dat Aanmelde jingk jedenfalls donevve.",
        "login": "Enlogge",
        "nav-login-createaccount": "Enlogge, Aanmälde",
-       "userlogin": "Enlogge odder Metmaacher wääde",
-       "userloginnocreate": "Enlogge",
        "logout": "Ußlogge",
        "userlogout": "Ußlogge",
        "notloggedin": "Nit enjelogg",
        "userlogin-noaccount": "Do häß noch keine Zohjang?",
        "userlogin-joinproject": "Aanmälde zom Metmaache!",
-       "nologin": "Wann de dich noch nit aanjemeldt häs, dann dun dich $1.",
-       "nologinlink": "neu aanmelde",
        "createaccount": "Aanmelde als ene neue Metmaacher",
-       "gotaccount": "Do bes ald aanjemeldt {{GRAMMAR:en|{{SITENAME}}}}? Dann jangk nohm '''$1'''.",
-       "gotaccountlink": "Enlogge",
-       "userlogin-resetlink": "Häß De Ding Daate för et Enlogge verjäße?",
        "userlogin-resetpassword-link": "Paßwoot verjäße?",
        "userlogin-helplink2": "Hölp mem Enlogge",
        "userlogin-loggedin": "Do bes ald als {{GENDER:$1|dä Metmaacher|de Metmaacherėn|dä Metmaacher|de Metmaacherėn|dä Metmaacher}} [[User:$1|$1]] enjelogg. Met heh dämm Fommolaa kanns De jäz ävver onger enem andere Nahme enlogge.",
        "createaccountmail": "Scheck mer en <i lang=\"en\">e-mail</i> met enem neu ußjedaachte Paßwood op Zick",
        "createaccountmail-help": "Kammer ennsäzze, öm ene Zohjang föe ene Anndere Metmaacher aanzelähje, der ohne dat Paßwoot känne ze lihre.",
        "createacct-realname": "Dinge börjerlesche Nahme, kans De och fott lohße",
-       "createaccountreason": "Jrond:",
        "createacct-reason": "Der Jrond udder Aanlaß",
        "createacct-reason-ph": "Woröm deihs De noch ene Zohjang aanlääje?",
        "createacct-reason-help": "Wadd em Logbohch för et Zohjäng Aanlähje schtonn sull",
        "preview": "Vör-Ansich",
        "showpreview": "Vöraff belohre",
        "showdiff": "Veränderonge zeije",
-       "blankarticle": "<strong>Opjepaß:</strong> Di Sigg, di De jrahd aanlähje wells, es läddesch. Wann De jäz norr_ens op „{{int:savearticle}}“ jehß, weed di Sigg och ohne jät dren aanjelaat.",
+       "blankarticle": "<strong>Opjepaß:</strong> Di Sigg, di De jrahd aanlähje wells, es läddesch. Wann De jäz norr_ens op „$1“ jehß, weed di Sigg och ohne jät dren aanjelaat.",
        "anoneditwarning": "'''Opjepaß:''' Weil De nit enjelogg bes, weed Ding <i lang=\"en\" xml:lang=\"en\">IP</i>-Adräß en heh dä Sigg ier Leß met de Väsiohne faßjehallde wääde.\nWann De [$1 enlogge deihs] udder [$2 desch aanmällds], dann wääde Ding Änderonge met dingem Nahme als Metmaacher opjevöhrt.",
        "anonpreviewwarning": "''Weil De nit enjlogg bes, weed Ding <code lang=\"en\">IP</code>-Addräß zoamme met dä neue Version faßjehallde, wann de heh di Sigg avspeichere deihß.''",
-       "missingsummary": "<strong>Opjepass:</strong> Do häs nix bei „{{int:summary}}“ enjejovve. Dun noch ens op „{{int:savearticle}}“ klicke, öm Ding Änderunge ohne de Zosammefassung ze Speichere. Ävver besser jiss De do jetz tirek ens jet en!",
-       "selfredirect": "<strong>Opjepaß:</strong> Do wells heh di Sigg op sesch sällver ömleide lohße.\nDat hät zwa keine rääschte Senn, ävver wann De jäz norr_enz op „{{int:savearticle}}“ klecks, weed dat esu jemaat.",
+       "missingsummary": "<strong>Opjepass:</strong> Do häs nix bei „{{int:summary}}“ enjejovve. Dun noch ens op „$1“ klicke, öm Ding Änderunge ohne de Zosammefassung ze Speichere. Ävver besser jiss De do jetz tirek ens jet en!",
+       "selfredirect": "<strong>Opjepaß:</strong> Do wells heh di Sigg op sesch sällver ömleide lohße.\nDat hät zwa keine rääschte Senn, ävver wann De jäz norr_enz op „$1“ klecks, weed dat esu jemaat.",
        "missingcommenttext": "Jevv en „Koot Zosammejefass, Quell“ aan!",
-       "missingcommentheader": "<strong>Opjepass:</strong> Do häs kein Övverschreff för Dinge Beidrach enjejovve.\nWann De noch ens op „{{int:savearticle}}“ dröcks, weed Dinge Beidrach der ohne avjespeichert.",
+       "missingcommentheader": "<strong>Opjepass:</strong> Do häs kein Övverschreff för Dinge Beidrach enjejovve.\nWann De noch ens op „$1“ dröcks, weed Dinge Beidrach der ohne avjespeichert.",
        "summary-preview": "Vör-Aansich vun „Koot Zosammejefass, Quell“:",
        "subject-preview": "Vöraff-Aanseesch vun dä Övverschreff:",
        "previewerrortext": "Ene Fähler es beim Versohch opjetrodde, de Sigg met de Änderonge aanzezeije.",
        "editingsection": "Ne Avschnedd vun dä Sigg: „$1“ ändere",
        "editingcomment": "„$1“ ändere (ene neue Avschnedd schrieve)",
        "editconflict": "Problemche: „$1“ dubbelt bearbeidt.",
-       "explainconflict": "Ene andere Metmaacher hät aan dä Sigg och jet jeändert, un zwar nohdäm Do et Ändere aanjefange häs. Jetz ha'mer dr Dress am Jang, un Do darfs et widder uszoteere.\n<strong>Opjepass:</strong><ul><li>Dat bovvere Täxfeld zeisch di Sigg esu, wie se jetz em Momang jeschpeijschert es, alsu met de Änderonge vun alle andere Metmaacher, di flöcker wie Do jeschpeischert han.</li><li>Dat ongere Täxfeld zeisch di Sigg esu, wie De se sälver zoletz zerääch jebrasselt häs.</li></ul>\nDo muss jetz Ding Änderunge och in dat <strong>bovvere</strong> Texxfeld eren bränge. Natörlich ohne dä Andere ihr Saache kapott ze maache.\n<strong>Nor wat em bovvere Texfeld steiht,</strong> dat weed üvvernomme un avjespeichert, wann De „<b\nstyle=\"padding:2px; background-color:#ddd; color:black\">{{int:savearticle}}</b>“ kleks. Bes dohin kanns De esu öff wi De wells op „<b style=\"padding:2px; background-color:#ddd; color:black\">{{int:showdiff}}</b>“ un „<b\nstyle=\"padding:2px; background-color:#ddd; color:black\">{{int:showpreview}}</b>“ klicke, öm ze pröfe, watte ald   jods jemaat häs.\n\nAlles Klor?<br /><br />",
+       "explainconflict": "Ene andere Metmaacher hät aan dä Sigg och jet jeändert, un zwar nohdäm Do et Ändere aanjefange häs. Jetz ha'mer dr Dress am Jang, un Do darfs et widder uszoteere.\n<strong>Opjepass:</strong><ul><li>Dat bovvere Täxfeld zeisch di Sigg esu, wie se jetz em Momang jeschpeijschert es, alsu met de Änderonge vun alle andere Metmaacher, di flöcker wie Do jeschpeischert han.</li><li>Dat ongere Täxfeld zeisch di Sigg esu, wie De se sälver zoletz zerääch jebrasselt häs.</li></ul>\nDo muss jetz Ding Änderunge och in dat <strong>bovvere</strong> Texxfeld eren bränge. Natörlich ohne dä Andere ihr Saache kapott ze maache.\n<strong>Nor wat em bovvere Texfeld steiht,</strong> dat weed üvvernomme un avjespeichert, wann De „<b\nstyle=\"padding:2px; background-color:#ddd; color:black\">$1</b>“ kleks. Bes dohin kanns De esu öff wi De wells op „<b style=\"padding:2px; background-color:#ddd; color:black\">{{int:showdiff}}</b>“ un „<b\nstyle=\"padding:2px; background-color:#ddd; color:black\">{{int:showpreview}}</b>“ klicke, öm ze pröfe, watte ald   jods jemaat häs.\n\nAlles Klor?<br /><br />",
        "yourtext": "Dinge Tex",
        "storedversion": "De jespeicherte Väsjohn",
        "nonunicodebrowser": "<strong>Opjepaß:</strong>\nDinge Brauser kann nit öhntlesch met däm <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"a standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems\">UNICODE</i> un singe Bochstahbe ömjonn.\nBes esu johd un nemm ene andere Brauser för heh di Sigg!",
        "right-editsemiprotected": "Sigge met däm Schoz „{{int:protect-level-autoconfirmed}}“ ändere",
        "right-editcontentmodel": "et Modäll vum Ennhald vun Sigge verändere",
        "right-editinterface": "Sigge met de Täxte änndere, di et Wikki kallt",
-       "right-editusercssjs": "Anderlücks CSS- un JS-Dateie ändere",
        "right-editusercss": "Anderlücks CSS-Dateie ändere",
        "right-edituserjs": "Anderlücks JS-Dateie ändere",
        "right-editmyusercss": "De eije <i lang=\"en\" xml:lang=\"en\">CSS</i> Datteije aanlääje un ändere",
        "undeleteviewlink": "aanloore",
        "undeleteinvert": "De Ußwahl ömdrihje",
        "undeletecomment": "Jrond (för en et Logbohch):",
-       "undeletedrevisions": "{{PLURAL:$1|ein Version|$1 Versione}} zeröckjehollt",
-       "undeletedrevisions-files": "Zesammejenomme {{PLURAL:$1|Ein Version|<strong>$1</strong> Versione|<strong>Kein</strong> Version}} vun {{PLURAL:$2|eine Datei|<strong>$2</strong> Dateie|<strong>nix</strong>}} zeröckjehollt",
-       "undeletedfiles": "{{PLURAL:$1|Ein Datei|<strong>$1</strong> Dateie|<strong>Kein</strong> Dateie}} zeröckjehollt",
        "cannotundelete": "<strong>Dä.</strong> Et Zeröckholle jing donävve.\n\n$1",
        "undeletedpage": "<strong>De Sigg „$1“ es jetz widder do</strong>\nLuur Der et [[Special:Log/delete|Logbohch met de fottjeschmeße Sigge]] aan, do häs De de Neuste fottjeschmeße un widder herjehollte Sigge.",
        "undelete-header": "Loor Der [[Special:Log/delete|{{LCFIRST:{{int:deletionlog}}}}]] aan, doh fengks De de och neulesch fottjeschmesße Sigge.",
        "logentry-tag-update-revision": "{{GENDER:$2|dä|dat|dä Metmaacher|de|dat}} „$1“ hät {{PLURAL:$7|di Makkehrong|di Makkehronge|nix}} $6 för de Väsjohn $4 em Logbohch vun dä Sigg „$3“ verjovve un {{PLURAL:$9|di Makkehrong|de Makkehronge|nix}} $8 fott jenumme.",
        "logentry-tag-update-logentry": "{{GENDER:$2|dä|dat|dä Metmaacher|de|dat}} „$1“ hädd em Endraaach $5 em Logbohch vun dä Sigg „$3“{{PLURAL:$7|di Makkehrong|di Makkehronge|nix}} $6 derbei jedonn un {{PLURAL:$9|di Makkehrong|di Makehronge|nix}} $8 fott jenumme.",
        "rightsnone": "(nix)",
-       "revdelete-summary": "dä Täx en „{{int:summary}}“",
        "feedback-adding": "Ben di Röckmäldong op di Sigg aam donn&nbsp;…",
        "feedback-back": "Retuhr",
        "feedback-bugcheck": "Joot. Donn op jeede Vall nohlooer, dat dat bes jäz noch nit [$1 bikannt wohr].",
index 2180402..63b2c75 100644 (file)
        "externaldberror": "Çewtiyeke bingeha daneyan heye, an jî destûra te ya rojanekirina hesabê xweyê navxweyî nîne.",
        "login": "Têkeve",
        "nav-login-createaccount": "Têkeve / hesabekî nû çêke",
-       "userlogin": "Têkeve / hesabekî nû çêke",
-       "userloginnocreate": "Têkeve",
        "logout": "Derkeve",
        "userlogout": "Derkeve",
        "notloggedin": "Têneketî",
        "userlogin-noaccount": "Hesabekî te nîne?",
        "userlogin-joinproject": "Tevlî {{SITENAME}} bibe",
-       "nologin": "Hesabê te nîne? $1.",
-       "nologinlink": "Bibe endam",
        "createaccount": "Hesabê nû çêke",
-       "gotaccount": "Hesabê te heye? $1.",
-       "gotaccountlink": "Têkeve",
-       "userlogin-resetlink": "Te agahiyên hesabê xwe ji bîr kirin?",
        "userlogin-resetpassword-link": "Te şîfreya xwe ji bîr kir?",
        "userlogin-helplink2": "Alîkariya têketinê",
        "userlogin-createanother": "Hesabekî din çêke",
        "createacct-another-email-ph": "E-nameya xwe binivîse",
        "createaccountmail": "Şîfreyeke demkî bikar bîne û wê ji navnîşana hatiye diyarkirin re bişîne.",
        "createacct-realname": "Navê te ya rast (Ko tu bixwazi bikeve, pêdivî nîne)",
-       "createaccountreason": "Sedem:",
        "createacct-reason": "Sedem",
        "createacct-reason-ph": "Çima hesabekî din çêdikî",
        "createacct-submit": "Hesabê xwe biafirîne",
        "anonpreviewwarning": "''Tu ne têketî yî. Tomarkirin wê navnîşana IP'ya te di dîroka guhertinan de nîşan bide.''",
        "missingsummary": "<span style=\"color:#990000;\">'''Zanibe:'''</span> Te nivîsekî kurt ji bo guherandinê ra nenivîsand. Eger tu niha carekî din li Tomar xê, guherandinê te vê nivîsekî kurt yê were tomarkirin.",
        "missingcommenttext": "Ji kerema xwe kurteya naverokê li jêr binivisîne.",
-       "missingcommentheader": "<strong>Zanibe:</strong> Te sernav/mijarek nenivîsandîye. Heke tu niha carekî din li ser \"{{int:savearticle}}\" bitikînî, ev guherandina te bê sernav/mijar wê were tomarkirin.",
+       "missingcommentheader": "<strong>Zanibe:</strong> Te sernav/mijarek nenivîsandîye. Heke tu niha carekî din li ser \"$1\" bitikînî, ev guherandina te bê sernav/mijar wê were tomarkirin.",
        "summary-preview": "Pêşdîtina kurtenivîsê:",
        "subject-preview": "Pêşdîtina sernivîsê:",
        "previewerrortext": "Wextê pêşdîtina guhertinên te, pirsgirekek derket.",
        "rcshowhidecategorization": "Kategorîzekirina rûpelan $1",
        "rcshowhidecategorization-show": "nîşan bide",
        "rcshowhidecategorization-hide": "veşêre",
-       "rclinks": "$1 guherandinên di $2 rojên dawî de nîşan bide<br />$3",
+       "rclinks": "$1 guherandinên di $2 rojên dawî de nîşan bide",
        "diff": "cudahî",
        "hist": "dîrok",
        "hide": "veşêre",
        "cantrollback": "Guherto naye vegerandin;\nbikarhênerê dawî, tenya nivîskarê vê rûpelê ye.",
        "alreadyrolled": "Guherandina dawiya [[$1]]\nbi [[User:$2|$2]] ([[User talk:$2|gotûbêj]]) venizivre; kesekî din ew rûpel zîvirandiye an guherandiye.\n\nGuhertoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).",
        "editcomment": "Kurtenivîsê guherandinê ev bû: <em>$1</em>.",
-       "revertpage": "Guherandina $2 hat betal kirin, vegerand guhartoya dawî ya $1",
+       "revertpage": "Guherandina [[Special:Contributions/$2|$2]] ([[User talk:$2|gotûbêj]]) hat betal kirin, vegerand guhartoya dawî ya [[User:$1|$1]]",
        "rollback-success": "Guherandina $1 şondakir; dîsa guharte verzyona $2.",
        "changecontentmodel-title-label": "Sernavê rûpelê",
        "changecontentmodel-reason-label": "Sedem:",
        "undeleteviewlink": "bibîne",
        "undeleteinvert": "Hilbijartinê şûnde vegerîne",
        "undeletecomment": "Sedem:",
-       "undeletedrevisions": "{{PLURAL:$1|Versiyonek dîsa hate|$1 versiyon dîsa hatin}} çêkirin",
-       "undeletedrevisions-files": "{{PLURAL:$1|Versiyonek|$1 versiyon}} û {{PLURAL:$2|medyayek hate|$2 medya hatin}} çêkirin",
-       "undeletedfiles": "{{PLURAL:$1|Medyayek hate|$1 medya hatin}} çêkirin",
        "undeletedpage": "'''$1 dîsa hate çêkirin'''\n\nJi bo jêbirinan û çêkirinên nû, ji kerema xwe li [[{{ns:special}}:Log/delete|Jêbirina têketinê]] binêre.",
        "undelete-header": "Ji bo rûpelên dawî hatine jêbirin, li [[Special:Log/delete|Jêbirina têketinê]] binêre.",
        "undelete-search-title": "Li rûpelên jêbirî bigere",
        "bydate": "li gor dîrokê",
        "sp-newimages-showfrom": "Daneyên nû ji dema $1, saet $2 ve bibîne",
        "seconds-abbrev": "$1 s",
+       "minutes-abbrev": "$1 d",
        "hours-abbrev": "$1 st",
        "days-abbrev": "$1 r",
        "seconds": "{{PLURAL:$1|$1 saniye}}",
        "logentry-newusers-create": "Hesabe bikarhêneriyê $1 {{GENDER:$2|hate çêkirin}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|hate barkirin}} $3",
        "rightsnone": "(tune)",
-       "revdelete-summary": "kurteyê biguherîne",
        "feedback-back": "Paşve",
        "feedback-cancel": "Betal bike",
        "feedback-close": "Çêbû",
index e4f1e44..0df1daf 100644 (file)
        "password-change-forbidden": "Ny yllir chanjya geryow tremena war an wiki-ma.",
        "login": "Omgelmi",
        "nav-login-createaccount": "Omgelmi / Gwruthyl akont nowyth",
-       "userlogin": "Omgelmi / gwruthyl akont nowyth",
-       "userloginnocreate": "Omgelmi",
        "logout": "Digelmi",
        "userlogout": "Digelmi",
        "notloggedin": "Digelmys",
        "userlogin-noaccount": "A nyns eus akont dhywgh?",
        "userlogin-joinproject": "Junya {{SITENAME}}",
-       "nologin": "A ny'gas beus akont? '''$1'''.",
-       "nologinlink": "Gwruthyl akont",
        "createaccount": "Gwruthyl akont nowydh",
-       "gotaccount": "Eus akont dhywgh seulabrys? '''$1'''.",
-       "gotaccountlink": "Omgelmi",
-       "userlogin-resetlink": "A ankevsowgh hwi agas manylyon omgelmi?",
        "userlogin-resetpassword-link": "Ankevys agas ger tremena genowgh?",
        "userlogin-helplink2": "Gweres owth omgelmi",
        "createacct-emailrequired": "Trigva ebost",
        "createacct-email-ph": "Entrewgh agas trigva ebost",
        "createaccountmail": "Devnydhya ger tremena chonsus anbarthus hag y dhanvon dhe'n drigva ebost res a-woles",
        "createacct-realname": "Hanow gwir (a-dhewis)",
-       "createaccountreason": "Acheson:",
        "createacct-reason": "Acheson",
        "createacct-reason-ph": "Prag yth esowgh ow kwruthyl akont aral",
        "createacct-submit": "Gwruthyl agas akont",
        "saveprefs": "Gwitha",
        "restoreprefs": "Restorya pub settyans defowt",
        "prefs-editing": "Chanjya",
-       "rows": "Rewyow:",
-       "columns": "Kolovennow:",
        "searchresultshead": "Hwilas",
        "savedprefs": "Gwithys re beu agas dewisyansow.",
        "servertime": "Eur an servyer:",
        "rcshowhideanons-hide": "Kudha",
        "rcshowhidemine": "$1 ow chanjyow",
        "rcshowhidemine-hide": "Kudha",
-       "rclinks": "Diskwedhes an $1 chanj diwettha gwrys y'n $2 dydh diwettha<br />$3",
+       "rclinks": "Diskwedhes an $1 chanj diwettha gwrys y'n $2 dydh diwettha",
        "diff": "dyffrans",
        "hist": "istori",
        "hide": "Kudha",
index 5e57c1e..0ac245d 100644 (file)
        "rcshowhidemine": "Оңдоолорумду $1",
        "rcshowhidemine-show": "Көрсөтүү",
        "rcshowhidemine-hide": "Жашыруу",
-       "rclinks": "Соңку $2 күндө жасалган акыркы $1 өзгөртүүлөрдү көрсөтүү<br />$3",
+       "rclinks": "Соңку $2 күндө жасалган акыркы $1 өзгөртүүлөрдү көрсөтүү",
        "diff": "айырма",
        "hist": "тарыхы",
        "hide": "Жашыруу",
index 171a911..0c52fb4 100644 (file)
        "yourdomainname": "Regnum tuum:",
        "login": "Nomen dare",
        "nav-login-createaccount": "Nomen dare / Nomen sibi imponere",
-       "userlogin": "Nomen dare / Nomen sibi imponere",
-       "userloginnocreate": "Nomen dare",
        "logout": "Secedere",
        "userlogout": "Secedere",
        "notloggedin": "Nomen nondum datum est",
        "userlogin-noaccount": "Num nomine cares?",
-       "nologin": "Num nomine cares? $1.",
-       "nologinlink": "Eam crea",
        "createaccount": "Sibi nomen imponere",
-       "gotaccount": "Iamne tibi nomen est? $1.",
-       "gotaccountlink": "Nomen da",
-       "userlogin-resetlink": "Num tesserae tuae oblitus es?",
        "userlogin-resetpassword-link": "Num tesserae oblitus es?",
        "userlogin-helplink2": "auxilium dandi nominis",
        "createacct-emailrequired": "Inscriptio electronica",
        "createacct-another-email-ph": "Inscriptionem electronicam inscribe",
        "createaccountmail": "Use a temporary random password and send it to the specified email address",
        "createacct-realname": "Nomen rectum (non necesse)",
-       "createaccountreason": "Causa:",
        "createacct-reason": "Causa",
        "createacct-reason-ph": "Cur aliud nomen imponas",
        "createacct-submit": "Nomen tibi impone",
        "editingsection": "Recensens $1 (partem)",
        "editingcomment": "Recensens $1 (nova pars)",
        "editconflict": "Contentio recensionis: $1",
-       "explainconflict": "Alius hanc paginam mutavit postquam eadem recensere incipiebas.\nCapsa superior paginae verba recentissima continet.\nMutationes tuae in capsa inferiore monstrantur.\nMutationes tuae in verba superiora adiungare debes.\n'''Solum''' verba capsae superioris servabuntur quando \"{{int:savearticle}}\" premes.",
+       "explainconflict": "Alius hanc paginam mutavit postquam eadem recensere incipiebas.\nCapsa superior paginae verba recentissima continet.\nMutationes tuae in capsa inferiore monstrantur.\nMutationes tuae in verba superiora adiungare debes.\n'''Solum''' verba capsae superioris servabuntur quando \"$1\" premes.",
        "yourtext": "Tua redactio",
        "storedversion": "Redactio modo servata",
        "nonunicodebrowser": "'''CAVETO: Navigatorium retiale tuum systemati UNICODE morem non gerit. Modum habemus quo commentationes sine damno recenseas: litterae non-ASCII in capsa sub veste hexadecimali ostendentur.'''",
        "saveprefs": "Hos modos servare",
        "restoreprefs": "Omnes (diversi) modi in integrum restituantur",
        "prefs-editing": "Recensere",
-       "rows": "Lineae:",
-       "columns": "Columnae:",
        "searchresultshead": "Figuratio eventorum investigationis",
        "recentchangesdays": "Quot dies index respiciat:",
        "recentchangesdays-max": "$1 maxime {{PLURAL:$1|diem|dies}}",
        "right-hideuser": "Celare nomen usoris hunc usorem obstruendo",
        "right-protect": "Protectionem mutare vel paginas protectas recensere",
        "right-editprotected": "Paginas protectas recensere (sine protectione defluente quasi cataracta)",
-       "right-editusercssjs": "Paginas CSS vel JS aliorum usorum recensere",
        "right-editusercss": "Paginas CSS aliorum usorum recensere",
        "right-edituserjs": "Paginas JS aliorum usorum recensere",
        "right-rollback": "Cito reverti recensiones proximas usoris cuiuslibet paginae",
        "rcshowhidecategorization": "$1 classificationes",
        "rcshowhidecategorization-show": "Ostendere",
        "rcshowhidecategorization-hide": "Supprimere",
-       "rclinks": "Monstrare $1 nuperrime mutata in $2 diebus proximis.<br />$3",
+       "rclinks": "Monstrare $1 nuperrime mutata in $2 diebus proximis.",
        "diff": "diff",
        "hist": "hist",
        "hide": "celare",
        "undeleteviewlink": "inspicere",
        "undeleteinvert": "Selectionem invertere",
        "undeletecomment": "Causa:",
-       "undeletedrevisions": "{{PLURAL:$1|1 redactio restituta est|$1 redactiones restitutae sunt}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 redactio restituta est|$1 redactiones restitutae sunt}} et {{PLURAL:1 fasciculus restitutus est|$2 fasciculi restituti sunt}}",
-       "undeletedfiles": "{{PLURAL:$1|1 fasciculus restitutus est|$1 fasciculi restituti sunt}}",
        "cannotundelete": "Abrogatio deletionis fefellit; fortasse aliquis iam paginam restituit.",
        "undelete-header": "Pro paginis nuper deletis, vide [[Special:Log/delete|indicem deletionum]].",
        "undelete-search-box": "Quaerere inter paginas iam deletas",
        "logentry-newusers-autocreate": "Usori $1 nomen automatice impositum est",
        "logentry-protect-protect": "$1 {{GENDER:$2|protegit}} $3 $4",
        "rightsnone": "(nullus)",
-       "revdelete-summary": "summarium recensionis",
        "feedback-cancel": "Dimittere",
        "feedback-close": "Factum",
        "feedback-error2": "Error: Recensio non additur",
        "feedback-message": "Nuntius:",
        "searchsuggest-search": "Quaerere apud {{grammar:accusative|{{SITENAME}}}}",
        "searchsuggest-containing": "continens...",
-       "api-error-empty-file": "Fasciculus inmissus vacuus est.",
        "api-error-emptypage": "Vacuas novas paginas creare non licet.",
-       "api-error-filename-tooshort": "Nomen fasciculi brevius est.",
-       "api-error-filetype-banned": "Talia genera fasciculorum permissa non sunt.",
-       "api-error-illegal-filename": "Nomen fasciculi permissum non est.",
-       "api-error-mustbeloggedin": "Ad fasciculos deferendos nomen des necesse est.",
        "api-error-unknownerror": "Error incognitus: \"$1\".",
        "expandtemplates": "Formulas resolvere",
        "special-characters-group-latin": "Latinum",
index db6cd9f..bb39b02 100644 (file)
        "password-change-forbidden": "No se puede kambiar contrasenyas en este viki.",
        "login": "Entrar",
        "nav-login-createaccount": "Entrar / criar un cuento",
-       "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": "Criar un kuento",
        "createaccount": "Criar un cuento",
-       "gotaccount": "¿Ya tienes un cuento? '''$1'''.",
-       "gotaccountlink": "Entrar",
-       "userlogin-resetlink": "Olvidates tus detalyos de akseso?",
        "userlogin-resetpassword-link": "Olvidaste tu kontrasenya?",
        "userlogin-createanother": "Krear otro kuento",
        "createacct-emailrequired": "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",
        "rcshowhideanons": "$1 usadores anónimos",
        "rcshowhidepatr": "$1 trocamientos akavidados",
        "rcshowhidemine": "$1 mis trocamientos",
-       "rclinks": "Ver los $1 trocamientos dalcavo en los $2 días dalcavo<br />$3",
+       "rclinks": "Ver los $1 trocamientos dalcavo en los $2 días dalcavo",
        "diff": "dif",
        "hist": "ist",
        "hide": "Esconder",
index bfe1958..d9c56ca 100644 (file)
        "anontalk": "Diskussioun",
        "navigation": "Navigatioun",
        "and": "&#32;a(n)",
-       "qbfind": "Fannen",
-       "qbbrowse": "Duerchsichen",
-       "qbedit": "Änneren",
-       "qbpageoptions": "Säitenoptiounen",
-       "qbmyoptions": "Meng Säiten",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Aktiounen",
        "namespaces": "Nummraim",
        "variants": "Varianten",
        "edit-local": "Lokal Beschreiwung änneren",
        "create": "Uleeën",
        "create-local": "Lokal Beschreiwung derbäisetzen",
-       "editthispage": "Dës Säit änneren",
-       "create-this-page": "Dës Säit uleeën",
        "delete": "Läschen",
-       "deletethispage": "Dës Säit läschen",
-       "undeletethispage": "Dës Säit restauréieren",
        "undelete_short": "$1 {{PLURAL:$1|Versioun|Versioune}} restauréieren",
        "viewdeleted_short": "{{PLURAL:$1|Eng geläschte Versioun|$1 geläscht Versioune}} weisen",
        "protect": "Spären",
        "protect_change": "änneren",
-       "protectthispage": "Dës Säit schützen",
        "unprotect": "Spär änneren",
-       "unprotectthispage": "D'Spär vun dëser Säit änneren",
        "newpage": "Nei Säit",
-       "talkpage": "Diskussioun",
        "talkpagelinktext": "Diskussioun",
        "specialpage": "Spezialsäit",
        "personaltools": "Perséinlech Tools",
-       "articlepage": "Säit",
        "talk": "Diskussioun",
        "views": "Affichagen",
        "toolbox": "Geschirkëscht",
        "tool-link-userrights": "{{GENDER:$1|Benotzer}}gruppen änneren",
        "tool-link-userrights-readonly": "{{GENDER:$1|Benotzer}}gruppe weisen",
        "tool-link-emailuser": "{{GENDER:$1|Dëser Benotzerin|Dësem Benotzer}} eng Mail schécken",
-       "userpage": "Benotzersäit",
-       "projectpage": "Meta-Text",
        "imagepage": "Billersäit kucken",
        "mediawikipage": "Säit mat de Message weisen",
        "templatepage": "Schabloune(säit) weisen",
        "preview": "Kucken ouni ofzespäicheren",
        "showpreview": "Kucken ouni ofzespäicheren",
        "showdiff": "Ännerunge weisen",
-       "blankarticle": "<strong>Opgepasst:</strong> D'Säit déi Dir uleet ass eidel.\nWann Dir nach eng Kéier op \"{{int:savearticle}}\" klickt, da gëtt d'Säit ugeluecht.",
+       "blankarticle": "<strong>Opgepasst:</strong> D'Säit déi Dir uleet ass eidel.\nWann Dir nach eng Kéier op \"$1\" klickt, da gëtt d'Säit ugeluecht.",
        "anoneditwarning": "<strong>Opgepasst:</strong> Dir sidd net ageloggt. Dowéinst gëtt amplaz vun engem Benotzernumm Är IP Adress ëffentlech gewise wann Dir Ännerunge maacht. Wann Dir <strong>[$1 Iech aloggt]</strong> oder <strong>[$2 e Benotzerkont opmaachen]</strong>, Är Ännerunge ginn dann Ärem Benotzerkont zougedeelt, genee wéi aner Avantagen.",
        "anonpreviewwarning": "''Dir sidd net ageloggt. Wann Dir ofspäichert gëtt Är IP-Adress an der Lëscht vun de Versioune vun dëser Säit enregistréiert.''",
-       "missingsummary": "'''Erënnerung:''' Dir hutt kee Resumé aginn.\nWann Dir nacheemol op \"{{int:savearticle}}\" klickt, gëtt Är Ännerung ouni Resumé ofgespäichert.",
-       "selfredirect": "<strong>Opgepasst:</strong> Dir maacht eng Viruleedung vun dëser Aäit op sech selwer.\n\nEt ka sinn datt Dir déi falsch Zilsäit fir d'Viruleedung aginn hutt oder datt Dir déi falsch Säit ännert.\n\nWann Dir nach eng Kéier op \"{{int:savearticle}}\" klickt, da gëtt d'Viruleedung trotzdem ugeluecht.",
+       "missingsummary": "'''Erënnerung:''' Dir hutt kee Resumé aginn.\nWann Dir nacheemol op \"$1\" klickt, gëtt Är Ännerung ouni Resumé ofgespäichert.",
+       "selfredirect": "<strong>Opgepasst:</strong> Dir maacht eng Viruleedung vun dëser Säit op sech selwer.\n\nEt ka sinn datt Dir déi falsch Zilsäit fir d'Viruleedung aginn hutt oder datt Dir déi falsch Säit ännert.\n\nWann Dir nach eng Kéier op \"$1\" klickt, da gëtt d'Viruleedung trotzdem ugeluecht.",
        "missingcommenttext": "Gitt w.e.g. eng Bemierkung an.",
-       "missingcommentheader": "<strong>Denkt drun:</strong> Dir hutt kee Sujet fir dës Bemierkung aginn.\nWann Dir nach en Kéier op \"{{int:savearticle}}\" klickt da gëtt Är Ännerung ouni Titel gespäichert.",
+       "missingcommentheader": "<strong>Denkt drun:</strong> Dir hutt kee Sujet fir dës Bemierkung aginn.\nWann Dir nach en Kéier op \"$1\" klickt da gëtt Är Ännerung ouni Titel gespäichert.",
        "summary-preview": "Resumé vun der Ännerung kucken ouni ze späicheren:",
        "subject-preview": "Sujet kucken ouni ze späicheren:",
        "previewerrortext": "Beim Versuch fir Är Ännerungen ze weisen, ass e Feeler geschitt.",
        "editingsection": "Ännere vu(n) $1 (Abschnitt)",
        "editingcomment": "Ännere vu(n) $1 (neien Abschnitt)",
        "editconflict": "Ännerungskonflikt: $1",
-       "explainconflict": "En anere Benotzer huet un dëser Säit geschafft, während Dir am Gaang waart, se z'änneren.\nDat iewescht Textfeld weist Iech den aktuellen Text.\nÄr Ännerunge gesitt Dir am ënneschten Textfeld.\nDir musst Är Ännerungen an dat iewescht Textfeld androen.\n'''Nëmmen''' den Text aus dem ieweschten Textfeld gëtt gehale wann Dir op \"{{int:savearticle}}\" klickt.",
+       "explainconflict": "En anere Benotzer huet un dëser Säit geschafft, während Dir am Gaang waart, se z'änneren.\nDat iewescht Textfeld weist Iech den aktuellen Text.\nÄr Ännerunge gesitt Dir am ënneschten Textfeld.\nDir musst Är Ännerungen an dat iewescht Textfeld androen.\n'''Nëmmen''' den Text aus dem ieweschten Textfeld gëtt gehale wann Dir op \"$1\" klickt.",
        "yourtext": "Ären Text",
        "storedversion": "Gespäichert Versioun",
        "nonunicodebrowser": "'''OPGEPASST: Äre Browser ass net Unicode kompatibel.'''\nE '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.",
        "search-file-match": "(Inhalt vum Fichier passt)",
        "search-suggest": "Mengt Dir: $1",
        "search-rewritten": "D'Resultater fir $1 gi gewisen. Amplaz no $2 sichen.",
-       "search-interwiki-caption": "Schwësterprojeten",
+       "search-interwiki-caption": "Resultater vu Schwësterprojeten",
        "search-interwiki-default": "Resultater vu(n) $1:",
        "search-interwiki-more": "(méi)",
        "search-interwiki-more-results": "méi Resultater",
        "recentchanges-legend-plusminus": "''(±123)''",
        "recentchanges-submit": "Weisen",
        "rcfilters-activefilters": "Aktiv Filteren",
+       "rcfilters-quickfilters": "Gespäichert Filter-Astellungen",
+       "rcfilters-quickfilters-placeholder-title": "Nach keng Linke gespäichert",
+       "rcfilters-quickfilters-placeholder-description": "Fir Är Filterastellungen z'änneren a méi spéit nees ze benotzen, klickt op d'Zeeche  fir Lieszeechen (bookmark) am Beräich vun den Aktive Filteren hei drënner.",
+       "rcfilters-savedqueries-defaultlabel": "Gespäichert Filteren",
+       "rcfilters-savedqueries-rename": "Ëmbenennen",
+       "rcfilters-savedqueries-setdefault": "Als Standard festleeën",
+       "rcfilters-savedqueries-unsetdefault": "Als Standard ewechhuelen",
+       "rcfilters-savedqueries-remove": "Ewechhuelen",
+       "rcfilters-savedqueries-new-name-label": "Numm",
+       "rcfilters-savedqueries-apply-label": "Astellunge späicheren",
+       "rcfilters-savedqueries-cancel-label": "Ofbriechen",
+       "rcfilters-savedqueries-add-new-title": "Aktuell Filter-Astellunge späicheren",
        "rcfilters-restore-default-filters": "Standardfiltere restauréieren",
        "rcfilters-clear-all-filters": "All Filteren eidelmaachen",
        "rcfilters-search-placeholder": "Rezent Ännerunge filteren (duerchsichen oder ufänke mat tippen)",
        "rcfilters-invalid-filter": "Net valabele Filter",
+       "rcfilters-empty-filter": "Keen aktive Filter. All Kontributioune gi gewisen.",
        "rcfilters-filterlist-title": "Filteren",
        "rcfilters-filterlist-whatsthis": "Wat ass dat?",
        "rcfilters-highlightbutton-title": "Resultater ervirhiewen",
        "rcfilters-highlightmenu-title": "Eng Faarf eraussichen",
        "rcfilters-filterlist-noresults": "Keng Filtere fonnt",
        "rcfilters-noresults-conflict": "Näischt fonnt well d'Sichcritère sech widderspriechen",
+       "rcfilters-filter-registered-label": "Ugemellt",
+       "rcfilters-filter-unregistered-label": "Net-ugemellt",
        "rcfilters-filter-unregistered-description": "Auteuren déi net ageloggt sinn.",
-       "rcfilters-filter-editsbyself-label": "Är eegen Ännerungen",
-       "rcfilters-filter-editsbyself-description": "Ännerunge vun Iech.",
+       "rcfilters-filter-editsbyself-label": "Ännerunge vun Iech",
+       "rcfilters-filter-editsbyself-description": "Är eegen Ännerungen.",
        "rcfilters-filter-editsbyother-label": "Ännerunge vun Aneren",
-       "rcfilters-filter-editsbyother-description": "Ännerunge vun anere Benotzer (net vun Iech).",
+       "rcfilters-filter-editsbyother-description": "All Ännerunge ausser Ären eegenen.",
        "rcfilters-filtergroup-userExpLevel": "Niveau vun der Erfahrung (just fir registréiert Benotzer)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Neier",
        "rcfilters-filter-user-experience-level-newcomer-description": "Manner wéi 10 Ännerungen a manner wéi 4 Deeg Aktivitéit.",
        "rcfilters-filter-user-experience-level-learner-label": "Ufänger",
-       "rcfilters-filter-user-experience-level-learner-description": "Aktivitéit vu méi Deeg a méi Ännerunge wéi ''Nei Benotzer'' awer manner wéi ''Erfuere Benotzer''.",
+       "rcfilters-filter-user-experience-level-learner-description": "Méi Erfarung wéi ''Nei Benotzer'' awer manner wéi ''Erfuere Benotzer''.",
        "rcfilters-filter-user-experience-level-experienced-label": "Erfuere Benotzer.",
        "rcfilters-filter-user-experience-level-experienced-description": "Méi wéi 30 Deeg Aktivitéit a méi wéi 500 Ännerungen.",
+       "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-bots-description": "Ännerungen déi automatiséiert gemaacht goufen.",
+       "rcfilters-filter-humans-label": "Mënsch (kee Bot)",
        "rcfilters-filtergroup-reviewstatus": "Status nokucken",
        "rcfilters-filter-patrolled-label": "Nogekuckt",
        "rcfilters-filter-patrolled-description": "Ännerungen déi als nogekuckt markéiert sinn.",
        "rcfilters-filter-unpatrolled-description": "Ännerungen déi net als nogekuckt markéiert sinn.",
        "rcfilters-filter-minor-label": "Kleng Ännerungen",
        "rcfilters-filter-major-label": "Keng kleng Ännerungen",
+       "rcfilters-filtergroup-watchlist": "Iwwerwaacht Säiten",
+       "rcfilters-filter-watchlist-watched-label": "Op der Iwwerwaachungslëscht",
+       "rcfilters-filter-watchlist-watched-description": "Ännerungen op Säiten op Ärer Iwwrwaachungslëscht",
+       "rcfilters-filter-watchlist-watchednew-label": "Nei Ännerunge vu Säiten op der Iwwerwaachungslëscht",
+       "rcfilters-filter-watchlist-watchednew-description": "Ännerungen op Säite vun Ärer Iwwerwaachungslëscht déi Dir net besicht hutt säit D'Ännerunge gemaach goufen.",
+       "rcfilters-filter-watchlist-notwatched-label": "Net op der Iwwerwaachungslëscht",
+       "rcfilters-filter-watchlist-notwatched-description": "Alles ausser Ännerungen op de Säite vun Ärer Iwwerwaachungslëscht.",
        "rcfilters-filter-pageedits-label": "Säitenännerungen",
+       "rcfilters-filter-pageedits-description": "Ännerungen um Wikiinhalt, an Diskussiounen, a Beschreiwunge vu Kategorien, ...",
+       "rcfilters-filter-newpages-label": "Ugeluechte Säiten",
+       "rcfilters-filter-newpages-description": "Ännerunge mat deene nei Säiten ugeluecht ginn.",
+       "rcfilters-filter-categorization-label": "Ännerunge vun de Kategorien:",
+       "rcfilters-filter-logactions-label": "Protokolléiert Aktiounen",
+       "rcfilters-filter-logactions-description": "Administrativ Aktiounen, Uleeë vu Benotzerkonten, Läsche vu Säiten, Eropgeluede Fichieren, ...",
+       "rcfilters-hideminor-conflicts-typeofchange": "Verschidden Type vu Ännerunge kënnen net als \"kleng\" markéiert ginn, dofir ass dëse Filter a Konflikt mat dësem Typ vun Ännerungsfilteren: $1",
+       "rcfilters-filtergroup-lastRevision": "Lescht Versioun",
+       "rcfilters-filter-lastrevision-label": "Lescht Versioun",
+       "rcfilters-filter-lastrevision-description": "Déi lescht Ännerung op enger Säit",
+       "rcfilters-filter-previousrevision-label": "Méi fréi Versiounen",
+       "rcfilters-filter-previousrevision-description": "All Ännerungen, déi net déi rezenst Ännerung vun enger Säit sinn.",
+       "rcfilters-filter-excluded": "Ausgeschloss",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:net</strong> $1",
+       "rcfilters-view-tags": "Markéierungen",
        "rcnotefrom": "Hei drënner {{PLURAL:$5|gëtt d'Ännerung|ginn d'Ännerungen}} zanter <strong>$3, $4</strong> (maximal <strong>$1</strong> Ännerunge gi gewisen).",
        "rclistfrom": "Nei Ännerunge vum $3 $2 u weisen",
        "rcshowhideminor": "Kleng Ännerunge $1",
        "rcshowhidecategorization": "Kategorisatioun vu Säite $1",
        "rcshowhidecategorization-show": "Weisen",
        "rcshowhidecategorization-hide": "Verstoppen",
-       "rclinks": "Déi lescht $1 Ännerunge vun de leschten $2 Deeg weisen.<br />$3",
+       "rclinks": "Déi lescht $1 Ännerunge vun de leschten $2 Deeg weisen.",
        "diff": "Ënnerscheed",
        "hist": "Versiounen",
        "hide": "verstoppen",
        "pageswithprop": "Säite mat enger Säiteneegeschaft",
        "pageswithprop-legend": "Säite mat enger Säiteneegeschaft",
        "pageswithprop-text": "Op dëser Säit sti Säiten déi eng speziell Säiteneegeschaft benotzen.",
-       "pageswithprop-prop": "Numm vun der Eegeschaft:",
+       "pageswithprop-prop": "Numm vun der Eegenschaft:",
        "pageswithprop-submit": "Lass",
        "pageswithprop-prophidden-long": "Wäert vun der laanger Texteegeschaft verstoppt ($1)",
        "doubleredirects": "Duebel Viruleedungen",
        "enotif_body_intro_moved": "D'{{SITENAME}}-Säit $1 gouf den $PAGEEDITDATE vum $2 {{GENDER:$2|geréckelt}}, kuckt $3 fir déi aktuell Versioun.",
        "enotif_body_intro_restored": "D'{{SITENAME}}-Säit $1 gouf den $PAGEEDITDATE vum $2 {{GENDER:$2|restauréiert}}, kuckt $3 fir déi aktuell Versioun.",
        "enotif_body_intro_changed": "D'{{SITENAME}}-Säit $1 gouf den $PAGEEDITDATE vum $2  {{GENDER:$2|geännert}}, kuckt $3 fir déi aktuell Versioun",
-       "enotif_lastvisited": "All Ännerungen op ee Bléck: $1",
-       "enotif_lastdiff": "Kuckt $1 fir dës Ännerung.",
+       "enotif_lastvisited": "Fir all Ännerungen zanter Dir fir d'lescht hei waart kuckt $1",
+       "enotif_lastdiff": "Fir dës Ännerung ze gesinn, kuckt $1",
        "enotif_anon_editor": "Anonyme Benotzer $1",
        "enotif_body": "Léiwe $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nResumé vum Mataarbechter: $PAGESUMMARY $PAGEMINOREDIT\n\nDen Editeur kontaktéieren:\nE-Mail: $PAGEEDITOR_EMAIL\nWiki: $PAGEEDITOR_WIKI\n\nEt gi soulaang keng weider Maile geschéckt, bis Dir d'Säit nees emol besicht hutt wärend deem Dir ageloggt sidd.\nOp Ärer Iwwerwaachungslëscht kënnt Dir all Noriichtemarkeren zesummen zrécksetzen.\n\n\nÄre frëndleche(n) {{SITENAME}} Noriichtessystem\n\n--\n\nFir d'Astellungen op Ären E-Mailnoriichten z'änneren, besicht w.e.g.\n{{canonicalurl:{{#special:Preferences}}}}\n\n\nFir d'Astellunge vun Ärer Iwwerwaachungslëscht z'änneren, besicht w.e.g.\n{{canonicalurl:Special:Watchlist/edit}}\n\nFeedback a weider Hëllef:\n$HELPPAGE",
        "created": "gemaach",
        "sp-contributions-uploads": "Eropgeluede Fichieren",
        "sp-contributions-logs": "Logbicher",
        "sp-contributions-talk": "diskutéieren",
-       "sp-contributions-userrights": "Verwaltung vun de Benotzerrechter",
+       "sp-contributions-userrights": "Verwaltung vun de {{GENDER:$1|Benotzer}}rechter",
        "sp-contributions-blocked-notice": "Dëse Benotzer ass elo gespaart. Déi lescht Entrée am Läsch-Logbuch steet als Referenz hei ënnendrënner:",
        "sp-contributions-blocked-notice-anon": "Dës IP-Adress ass elo gespaart.\nËnnendrënner steet déi lescht Aschreiwung an d'Spärlëscht:",
        "sp-contributions-search": "No Kontributioune sichen",
        "autoblocklist": "Automatesch Spären",
        "autoblocklist-submit": "Sichen",
        "autoblocklist-legend": "Automatesche Spären opzielen",
+       "autoblocklist-total-autoblocks": "Total vun den automatesche Spären: $1",
        "autoblocklist-empty": "D'Lëscht vun den automatesche Spären ass eidel.",
        "ipblocklist": "Gespaart Benotzer",
        "ipblocklist-legend": "No engem gespaarte Benotzer sichen",
        "tooltip-pt-mycontris": "Lëscht vun {{GENDER:|Äre}} Kontributiounen",
        "tooltip-pt-anoncontribs": "Eng Lëscht vun Ännerungen déi vun dëser IP-Adress aus gemaach goufen",
        "tooltip-pt-login": "Sech umelle gëtt gäre gesinn, Dir musst et awer net maachen.",
+       "tooltip-pt-login-private": "Dir musst Iech alogge fir dës Wiki ze benotzen",
        "tooltip-pt-logout": "Ofmellen",
        "tooltip-pt-createaccount": "Et gëtt Iech geroden e Benotzerkont unzeleeën an Iech anzeloggen; dat ass awer net obligatoresch",
        "tooltip-ca-talk": "Diskussioun iwwer de Säiteninhalt",
        "anonymous": "{{PLURAL:$1|Anonyme Benotzer|Anonym Benotzer}} op {{SITENAME}}",
        "siteuser": "{{SITENAME}}-Benotzer $1",
        "anonuser": "Anonyme(n) {{SITENAME}}-Benotzer $1",
-       "lastmodifiedatby": "Dës Säit gouf den $1 ëm $2 Auer vum $3 fir d'lescht geännert.",
+       "lastmodifiedatby": "Dës Säit gouf de(n) $1 ëm $2 Auer vum $3 fir d'lescht geännert.",
        "othercontribs": "Op der Basis vun der Aarbecht vum $1",
        "others": "anerer",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|Benotzer}} $1",
        "tags-create-reason": "Grond:",
        "tags-create-submit": "Uleeën",
        "tags-create-no-name": "Dir musst den Numm vun enger Markéierung (tag) uginn.",
-       "tags-create-invalid-chars": "An den Nimm vun de Markéierungen däerfe keng Kommaen (<code>,</code>) oder schif Strécher (<code>/</code>) sinn.",
+       "tags-create-invalid-chars": "An den Nimm vun de Markéierungen däerfe keng Kommaen (<code>,</code>), riicht Stricher (<code>|</code>), oder schif Strécher (<code>/</code>) sinn.",
        "tags-create-already-exists": "D'Markéierung (tag) ''$1'' gëtt et schonn.",
        "tags-create-warnings-above": "Dës {{PLURAL:$2|Warnung ass|Warnunge si}} beim Versuch d'Markéierung (tag) \"$1\" unzeleeën.",
        "tags-delete-title": "Markéierung (tag) läSchen",
        "mw-widgets-titleinput-description-redirect": "viruleeden op $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Eng Kategorie derbäisetzen...",
        "mw-widgets-usersmultiselect-placeholder": "Méi derbäisetzen...",
+       "date-range-from": "Vum (Datum):",
+       "date-range-to": "Bis den (Datum):",
        "sessionprovider-generic": "$1-Sessiounen",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "cookie-baséiert Sessiounen",
        "sessionprovider-nocookies": "Cookië sinn eventuell desaktivéiert. Vergewëssert Iech datt Dir d'Cookien aktivéiert hutt a probéiert nach eng Kéier.",
        "restrictionsfield-label": "Zougeloossen IP-Beräicher:",
        "revid": "Versioun $1",
        "gotointerwiki": "{{SITENAME}} verloossen",
-       "gotointerwiki-invalid": "De spezifizéierten Titel war net valabel.",
+       "gotointerwiki-invalid": "De spezifizéierten Titel ass net valabel.",
+       "gotointerwiki-external": "Dir sidd am Gaang {{SITENAME}} ze verloosse fir [[$2]] ze besichen, deen een externen Internetsite ass.\n\n'''[$1 Hei klicke fir op $1 virunzefueren]'''",
        "undelete-cantedit": "Dir kënnt dës Säit net restauréiere well Dir dës Säit net änneren däerft.",
        "undelete-cantcreate": "Dir kënnt dës Säit net restauréieren well et elo keng Säit mat deem Numm gëtt a well Dir dës Säit net uleeën däerft."
 }
index 3bf5384..07c6971 100644 (file)
        "yourdomainname": "Куь домен",
        "login": "Гьахьун",
        "nav-login-createaccount": "Гьахьун/аккаунт туькӀуьрун",
-       "userlogin": "Гьахьун/аккаунт туькӀуьрун",
-       "userloginnocreate": "Гьахьун",
        "logout": "ЭкъечӀун",
        "userlogout": "ЭкъечӀун",
        "notloggedin": "Куьн гьахьнавач",
-       "nologin": "Квез аккаунт авачни? $1.",
-       "nologinlink": "Аккаунт туькӀуьрун",
        "createaccount": "Аккаунт туькӀуьрун",
-       "gotaccount": "Квез аккаунт авани?$1",
-       "gotaccountlink": "Гьахьун",
-       "userlogin-resetlink": "Гьахьунин куьлуь-шуьлуьяр рикӀел алатнани?",
        "createaccountmail": "Э-чар галаз",
-       "createaccountreason": "Себеб:",
        "loginerror": "Гьахьунин гъалатӀ",
        "createaccounterror": "И аккаунт туькӀуьриз мумкин ттуш: $1",
        "loginsuccesstitle": "Агалкьунралди гьахьун",
        "rcshowhidemine": "$1 зи  дуьзар хъувунар",
        "rcshowhidemine-show": "Къалурун",
        "rcshowhidemine-hide": "Чуьнуьхун",
-       "rclinks": "Эхиримжи $2 йикъан къене $1 масакIавилер къалура <br />$3",
+       "rclinks": "Эхиримжи $2 йикъан къене $1 масакIавилер къалура",
        "diff": "тафават",
        "hist": "тарих",
        "hide": "Чуьнуьхун",
index 1d786c2..4f679d7 100644 (file)
        "yourdomainname": "Tu domina:",
        "login": "Identifia",
        "nav-login-createaccount": "Sinia per entra",
-       "userlogin": "Sinia per entra",
        "logout": "Retira",
        "userlogout": "Sinia per retira",
        "userlogin-noaccount": "Tu no ave un conta?",
        "userlogin-joinproject": "Crea un conta con {{SITENAME}}",
-       "nologin": "Tu no ave un conta? '''$1'''.",
-       "nologinlink": "Crea  un conta",
        "createaccount": "Crea un conta",
-       "gotaccount": "Tu ave ja un conta? '''$1'''.",
-       "gotaccountlink": "Sinia per entra",
        "userlogin-resetpassword-link": "Tu ia oblida tua sinia secreta?",
        "userlogin-helplink2": "Aida me per identifia me",
        "createacct-emailrequired": "Adirije de e-posta",
        "createacct-emailoptional": "Adirije de e-posta (elejable)",
        "createacct-email-ph": "Entra tua adirije de e-posta",
        "createacct-another-email-ph": "Entra tua adirije de e-posta",
-       "createaccountreason": "Razona:",
        "createacct-reason": "Razona:",
        "createacct-submit": "Crea tua conta",
        "createacct-another-submit": "Crea un conta",
        "rcshowhidemine": "$1 me editas",
        "rcshowhidemine-show": "Mostra",
        "rcshowhidemine-hide": "Asconde",
-       "rclinks": "Mostra la $1 cambias presedente en la $2 dias presedente<br />$3",
+       "rclinks": "Mostra la $1 cambias presedente en la $2 dias presedente",
        "diff": "dife",
        "hist": "isto",
        "hide": "Asconde",
index 7afd6f8..6d3ee17 100644 (file)
        "externaldberror": "Waliwo kiremya mu ggwanika lya data ekozesebwa okukakasa bamemba oba tokkirizibwa okukyusa ku akawunti yo ey'awalala.",
        "login": "Yingira",
        "nav-login-createaccount": "Yingira / kolawo akawunti",
-       "userlogin": "Yingira / kolawo akawunti",
-       "userloginnocreate": "Yingira",
        "logout": "Vaamu",
        "userlogout": "Vaamu",
        "notloggedin": "Tonnayingira",
-       "nologin": "Akawunti wafuna? '''$1'''.",
-       "nologinlink": "Funa akawunti",
        "createaccount": "Kolawo akawunti",
-       "gotaccount": "Akawunti wafuna? '''$1'''.",
-       "gotaccountlink": "Yingira",
-       "userlogin-resetlink": "Werabidde by'okozesa okuyingira?",
        "createaccountmail": "Akawunti gikole ne E-mail",
-       "createaccountreason": "Ekikukozesezawo akawunti:",
        "badretype": "Ebigambo ebikuumi by'owandise tebifaanagana.",
        "userexists": "Ery'obwa memba ly'owandise wali omulala alirina.<br />\nLonda eddala.",
        "loginerror": "Okuyingira kuzzeko kiremya:",
        "showdiff": "Ndaga bwe bikyuse",
        "anoneditwarning": "'''Kulabula:''' Owandika toyingidde mu sisitemu. Tujjakuwandika endagiriro eya kompyuta kwosinzidde\nmu lukalala lw'enkuykakyuka ez'omu lupapula luno.",
        "anonpreviewwarning": "''Okola toyingidde sisitemu. Bw'on'okaza by'okola nga sisitemu ewandika n'endagiriro yo eya IP mu lukalala lw'enkyukakyuka lw'olupapula luno.''",
-       "missingsummary": "'''Okujjukiza:''' Towandise ebinnyonyola enkyukakyuka z'okoze.<br />\nBw'oddamu okunyiga \"{{int:savearticle}}\", by'okoze tebijjakubaako okunnyonyola.",
+       "missingsummary": "'''Okujjukiza:''' Towandise ebinnyonyola enkyukakyuka z'okoze.<br />\nBw'oddamu okunyiga \"$1\", by'okoze tebijjakubaako okunnyonyola.",
        "missingcommenttext": "Wandika ebigambo byo wano awaddako.",
-       "missingcommentheader": "'''Okujjukiza:''' Ebigambo byo tobiwadde omutwe.<br />\nBw'oddamu okunyiga \"{{int:savearticle}}\", by'okoze tebijjakubaako omutwe ogubyanjula.",
+       "missingcommentheader": "'''Okujjukiza:''' Ebigambo byo tobiwadde omutwe.<br />\nBw'oddamu okunyiga \"$1\", by'okoze tebijjakubaako omutwe ogubyanjula.",
        "summary-preview": "Kuno kwe kunnyonyola kwo:",
        "subject-preview": "Omutwe bwe gunaafaanana:",
        "blockedtitle": "Ono agaanidwa",
        "editingsection": "Okyusa $1 (kitundu)",
        "editingcomment": "Okyusa $1 (kitundu kipya)",
        "editconflict": "Ebikyusidwamu bireesewo okusobagana: $1",
-       "explainconflict": "Waliwo omulala akyusizza mu lupapula luno nga okyalukolako.<br />\nEkitundu eky'ebiwandike ekisooka wano kikulaga ebigambo ebiruliko kakano.<br />\nBy'owandise byo biri mu kitundu eky'ebiwandike ekiddako.<br />\nEbigambo ebibyo on'obigatta mu ebyo ebiriwo ku lupapula kakano.<br />\nEbinaaba birabika mu kitundu eky'ebiwandike ekisooka w'on'onyigira ku<br />\n\"{{int:savearticle}}\" '''bye byokka''' ebij'okukazibwa.",
+       "explainconflict": "Waliwo omulala akyusizza mu lupapula luno nga okyalukolako.<br />\nEkitundu eky'ebiwandike ekisooka wano kikulaga ebigambo ebiruliko kakano.<br />\nBy'owandise byo biri mu kitundu eky'ebiwandike ekiddako.<br />\nEbigambo ebibyo on'obigatta mu ebyo ebiriwo ku lupapula kakano.<br />\nEbinaaba birabika mu kitundu eky'ebiwandike ekisooka w'on'onyigira ku<br />\n\"$1\" '''bye byokka''' ebij'okukazibwa.",
        "yourtext": "Ebigambo ebibyo",
        "storedversion": "Ebiriwo kakano",
        "nonunicodebrowser": "'''Kulabula: Kalambulaneti yo tekwatagana bulungi n'enkola ya unicode.'''<br />\nOkuvvuunuka obuzibu buno osobole okukyusa mu mpapula, buli lw'on'owandikawo<br />\nakabonero akatali ka ASCII kajjanga okuteekebwawo mu mpandika eya nengakkuminabbiri.",
        "rcshowhideliu": "$1 ebya bamemba abali ku wiki ku saawa eno",
        "rcshowhideanons": "$1 eby'abakola ng'abat'eyanjude",
        "rcshowhidemine": "$1 nze byenkoze",
-       "rclinks": "Ndaga enkyukakyuka $1 ezikoledwa mu nnaku $2 ezaakayita<br />$3",
+       "rclinks": "Ndaga enkyukakyuka $1 ezikoledwa mu nnaku $2 ezaakayita",
        "diff": "enjawulo",
        "hist": "ennanda",
        "hide": "Kisa",
index a82bd16..2e2bacd 100644 (file)
        "externaldberror": "d'r Is 'n fout opgetraoje biej 't aanmelje biej de database of doe höbs gén toesjtömming diene externe gebroeker biej te wèrke.",
        "login": "Aanmèlde",
        "nav-login-createaccount": "Aanmelje / registrere",
-       "userlogin": "Aanmelde / registrere",
-       "userloginnocreate": "Mèlj aan",
        "logout": "Aafmelde",
        "userlogout": "Aafmelde",
        "notloggedin": "Neet aangemeld",
-       "nologin": "Höbs te nog geine gebroekersnaam? $1.",
-       "nologinlink": "Maak 'ne gebroekersnaam aan",
        "createaccount": "Nuuj gebroekersprofiel aanmake.",
-       "gotaccount": "Höbs te al 'ne gebroekersnaam? '''$1'''.",
-       "gotaccountlink": "Inlogge",
-       "userlogin-resetlink": "Bös se dien aanmèljingsgegaeves vergaete?",
        "createaccountmail": "via de e-mail",
-       "createaccountreason": "Raeje:",
        "badretype": "De ingeveurde wachwäörd versjille vanein.",
        "userexists": "De gebroekersnaam dae se höbs ingeveurd weurt al gebroek.\n\nKees estebleef 'ne angere naam.",
        "loginerror": "Inlogfout",
        "passwordreset-disabled": "'t Is hie neet meugelik óm die wachwaord óbbenuits in te sjtelle.",
        "passwordreset-username": "Gebroekersnaam:",
        "passwordreset-domain": "Domein:",
-       "passwordreset-capture": "Bekiek de resulterenden e-mail?",
-       "passwordreset-capture-help": "Es se dit vekske aanvènks, weurt d'n e-mail (mit e tiedelik wachwaord) nao de gebroek gesjik en ouch aan dich getuind.",
        "passwordreset-email": "E-mailadres:",
        "passwordreset-emailtitle": "Gebroekersgegaeves óp {{SITENAME}}",
        "passwordreset-emailtext-ip": "Emes, wersjienlik doe, vanaaf 't IP-adres $1, haet dien gebroekersgegaeves veur {{SITENAME}} ($4) ópgevraog.\nDe volgende {{PLURAL:$3|gebroeker is|gebroekers zint}} gekoppeld aan dit e-mailadres:\n\n$2\n\n{{PLURAL:$3|Dit tiedelik wachwaord vervilt|Dees tiedelike wachweurd vervallen}} euver {{PLURAL:$5|einen daag|$5 daag}}.\nMel dich aan en veranger 't wachwaord noe. Es se dit verzeuk neet zelf hes gedaon, of es se 't oorspronkelik wachwaord nog kins en 't neet anges wils, laot dit berich den en blief dien aad wachwaord gebroeke.",
        "anonpreviewwarning": "''Doe bös neet aangemeldj.''\n''Door dien bewèrking op te slaon wört dien IP-adres opgeslagen in de paginagesjiedenis.''",
        "missingsummary": "'''Herinnering:''' doe höbs gein samevatting opgegaeve veur dien bewirking. Es te weer op ''Pagina opslaon'' kliks weurt de bewirking zonger samevatting opgesjlage.",
        "missingcommenttext": "Plaats dien opmèrking hiej onger, a.u.b.",
-       "missingcommentheader": "'''Let op:''' Doe höbs gén ongerwerp/kop veur deze opmèrking opgegaeve. Esse oppernuuj op \"{{int:savearticle}}\" kliks, wörd dien verangering zonger ongerwerp/kop opgeslage.",
+       "missingcommentheader": "'''Let op:''' Doe höbs gén ongerwerp/kop veur deze opmèrking opgegaeve. Esse oppernuuj op \"$1\" kliks, wörd dien verangering zonger ongerwerp/kop opgeslage.",
        "summary-preview": "Naokieke samevatting:",
        "subject-preview": "Naokieke ongerwerp/kop:",
        "blockedtitle": "Gebroeker is geblokkeerd",
        "editingsection": "Bewirke van sectie van $1",
        "editingcomment": "Bewirke $1 (commentair)",
        "editconflict": "Bewirkingsconflik: $1",
-       "explainconflict": "Emes angers haet dees pagina verangerd naodats doe aan dees bewirking bis begós.\n't Ierste teksveld tuint de hujige versie van de pagina.\nDe mós dien eige verangeringe dao-in inpasse.\n'''Allein''' d'n tèks in 't ierste teksveld weurt opgesjlage es te noe op \"{{int:savearticle}}\" duujs.",
+       "explainconflict": "Emes angers haet dees pagina verangerd naodats doe aan dees bewirking bis begós.\n't Ierste teksveld tuint de hujige versie van de pagina.\nDe mós dien eige verangeringe dao-in inpasse.\n'''Allein''' d'n tèks in 't ierste teksveld weurt opgesjlage es te noe op \"$1\" duujs.",
        "yourtext": "Euren teks",
        "storedversion": "Opgesjlage versie",
        "nonunicodebrowser": "'''WAARSJOEWING: Diene browser kan neet good euverweeg mit unicode.\n Hie waert rekening mit gehauwe om dich zónger probleme pagina's te kinne laote bewirke: neet-ASCII karakters waere in 't bewirkingsveld weergegaeve es hexadecimaal codes.'''",
        "saveprefs": "Veurkäöre opsjlaon",
        "restoreprefs": "Terug nao standaardinstellinge",
        "prefs-editing": "Aafmeitinge tèksveld",
-       "rows": "Regels",
-       "columns": "Kolomme",
        "searchresultshead": "Insjtèllinge veur zeukresultate",
        "stub-threshold": "Drempel veur markering <a href=\"#\" class=\"stub\">begske</a>:",
        "stub-threshold-disabled": "Oetgezatj",
        "userrights-reason": "Reeje:",
        "userrights-no-interwiki": "Doe höbs gein rechte om gebroekersrechte op anger wiki's te wiezige.",
        "userrights-nodatabase": "Database $1 besteit neet of is gein plaatselike database.",
-       "userrights-nologin": "Doe mos dich [[Special:UserLogin|aanmelle]] mit 'ne gebroeker mit de zjuuste rech om gebroekersrech toe te wieze.",
-       "userrights-notallowed": "Doe höbs gein rechte om gebroekersrechte toe te voegen of te wisse.",
        "userrights-changeable-col": "Gróppe dies te kèns behere",
        "userrights-unchangeable-col": "Gróppe dies te neet kèns behere",
        "group": "Gróp:",
        "right-protect": "Beveiligingsniveaus wijzige",
        "right-editprotected": "Beveiligde pagina's bewerke",
        "right-editinterface": "De gebroekersinterface bewerke",
-       "right-editusercssjs": "De CSS- en JS-bestande van angere gebroekers bewerke",
        "right-editusercss": "De CSS-bestande van angere gebroekers bewerke",
        "right-edituserjs": "De JS-bestande van angere gebroekers bewerke",
        "right-rollback": "Snel de letste bewerking(e) van 'n gebroeker van 'n pagina terugdraaie",
        "right-siteadmin": "De database blokkere en weer vriegaeve",
        "right-override-export-depth": "Export paazjes midin geslinkdje paazjes mit 'n deepdje ven 5",
        "right-sendemail": "Versjik e-mail aan anger gebroekers",
-       "right-passwordreset": "Bekiek e-mails van ópnuuj ingestèldje wachwäörd",
        "newuserlogpage": "Logbook nuuj gebroekers",
        "newuserlogpagetext": "Hiej ónger saton de nuuj ingesjreve gebroekers.",
        "rightslog": "Gebroekersrechtelogbook",
        "rcshowhideanons": "$1 anonieme gebroekers",
        "rcshowhidepatr": "$1 gecontroleerde bewerkinge",
        "rcshowhidemine": "$1 mien bewirkinge",
-       "rclinks": "Bekiek de $1 lètste verangeringe van de aafgeloupe $2 daag.<br />$3",
+       "rclinks": "Bekiek de $1 lètste verangeringe van de aafgeloupe $2 daag.",
        "diff": "vers",
        "hist": "hist",
        "hide": "Versjtaek",
        "undeleteviewlink": "Bekiek",
        "undeleteinvert": "Ómgedriejde selectie",
        "undeletecomment": "Reeje:",
-       "undeletedrevisions": "$1 {{PLURAL:$1|versie|versies}} truukgeplaatsj",
-       "undeletedrevisions-files": "$1 {{PLURAL:$1|versie|versies}} en $2 {{PLURAL:$2|bestandj|bestenj}} trökgeplaats",
-       "undeletedfiles": "$1 {{PLURAL:$1|bestandj|bestenj}} trökgeplaats",
        "cannotundelete": "Verwiedere mislùk. Mesjien haet 'ne angere gebroeker de pazjena al verwiederd.",
        "undeletedpage": "'''$1 is trökgeplaats'''\n\nIn 't [[Special:Log/delete|logbook verwiederde pazjena's]] staon recènte verwiederinge en herstelhanjelinge.",
        "undelete-header": "Zuug [[Special:Log/delete|'t logbook verwiederde pazjena's]] veur recènt verwiederde pazjena's.",
        "logentry-newusers-create2": "$1 haet 'ne gebroeker $3 aangemaak",
        "logentry-newusers-autocreate": "De gebroeker $1 is autematis aangemaak",
        "rightsnone": "(gein)",
-       "revdelete-summary": "samevatting bewerke",
        "feedback-adding": "Feedback weurt aan pagina toegevoeg...",
        "feedback-bugcheck": "Good! Kónterleer ef of 't neet al ein vanne [$1 bekèndje bugs] is.",
        "feedback-bugnew": "Gekónterleerdj. Mèlj 'ne nuuj bug.",
        "feedback-thanks": "Danke! Diene feedback is oppe pagina \"[$2 $1]\" geplaats.",
        "searchsuggest-search": "Zeuke",
        "searchsuggest-containing": "bevat...",
-       "api-error-badaccess-groups": "Doe moogs gein bestenj uploade óp deze wiki.",
        "api-error-badtoken": "Intern fout: toke is slech.",
-       "api-error-copyuploaddisabled": "Uploade via URL steit óp deze server oet.",
-       "api-error-duplicate": "d'r {{PLURAL:$1|steit al e bestandj|staon al bestenj}} mit dezelfden inhawd oppe wiki.",
-       "api-error-duplicate-archive": "d'r {{PLURAL:$1|Waar al 'n anger bestandj|woren al $1 anger bestenj}} óppe site mitte zelfdjen inhawd, meh {{PLURAL:$1|det is|die zeen}} gewösj.",
-       "api-error-empty-file": "t Bestandj det se perbeers te uploade had gein inhald.",
        "api-error-emptypage": "Doe maags gein nuuj, laeg pagina's aanmake.",
-       "api-error-fetchfileerror": "Intern fout: d'r is get fout gegange bie 't óphaole van 't bestandj.",
-       "api-error-fileexists-forbidden": "d'r Besteit al e bestandj mitte naam \"$1\" det neet euversjreve kin waere.",
-       "api-error-fileexists-shared-forbidden": "d'r Besteit al e bestandj mitte naam \"$1\" inne gedeildje repositoir det neet euversjreve kin waere.",
-       "api-error-file-too-large": "t Bestandj det se perbeers te uploade waas te groet.",
-       "api-error-filename-tooshort": "t Bestandj det se perbeers te uploade had 'ne te kórte bestandjsnaam.",
-       "api-error-filetype-banned": "t Bestandj det se perbeers te uploade waas van e neet-toegelaote bestandjstype.",
-       "api-error-filetype-banned-type": "{{PLURAL:$4|'t bestandjstype $1 weurt|De bestandjstypes $1 waere}} neet toegelaote. {{PLURAL:$3|'t Toegelaote bestandjstype is|De toegelaote bestandjstypes zeen}} $2.",
-       "api-error-filetype-missing": "'t Bestandj haet gein extensie.",
-       "api-error-hookaborted": "De wieziging die se perbeers te make is aafgebraoke door 'nen oetbreidingshook.",
-       "api-error-http": "Intern fout: d'r kós gein verbinjing gemaak waere mitte server.",
-       "api-error-illegal-filename": "Deze bestandjsnaam is neet toegelaote.",
-       "api-error-internal-error": "Intern fout: d'r is get fout gegange tiedes 't verwirke vanne upload dore wiki.",
-       "api-error-invalid-file-key": "Intern fout: 't bestandj is neet aangetróffe inne tiedeliken ópslaag.",
-       "api-error-missingparam": "Intern fout: neet alle paramaeters zeen in 't verzeuk mitgeleverdj.",
-       "api-error-missingresult": "Intern fout: 't waar neet meugelik vas te stèllen of 't kopiejere is geslaag.",
-       "api-error-mustbeloggedin": "Doe mós aangemèldj zeen óm bestenj te kinnen uploade.",
-       "api-error-mustbeposted": "Inter fout: aanvraog vereis HTTP-POST.",
-       "api-error-noimageinfo": "De upload is aafgeróndj, meh de server haet gein gegaeves van 't bestandj vriegegaeve.",
-       "api-error-nomodule": "Intern fout: d'r is gein uploadmodule ingesteldj.",
-       "api-error-ok-but-empty": "Intern fout: de server haet gein gegaeves trögkgeleverdj.",
-       "api-error-overwrite": "E bestandj euversjrieve geit neet.",
        "api-error-stashfailed": "Intern fout: de server kós 't tiedelik bestandj neet ópslaon.",
-       "api-error-timeout": "De server haet neet inne verwachde tied geantjweurd.",
-       "api-error-unclassified": "dr Is 'n ónbekènde fout opgetraoje.",
-       "api-error-unknown-code": "Intern fout: \"$1\"",
-       "api-error-unknown-error": "Intern fout: d'r is get fout gegange tiedes 't uploade van 't bestandj.",
        "api-error-unknown-warning": "Onbekinde waorsjuwing: $1",
        "api-error-unknownerror": "Ónbekèndje fout: \"$1\"",
-       "api-error-uploaddisabled": "Upload steit oet óp deze wiki.",
-       "api-error-verification-error": "Dit bestandj is meugelik besjadig of haet 'n ónjuuste extensie.",
        "duration-seconds": "$1 {{PLURAL:$1|sekond|sekond}}",
        "duration-minutes": "$1 {{PLURAL:$1|menuut|menuut}}",
        "duration-hours": "$1 {{PLURAL:$1|oer|oer}}",
index 06998ae..f829501 100644 (file)
        "anontalk": "Discuscion pe questo addresso IP",
        "navigation": "Navegaçión",
        "and": "&#32;e",
-       "qbfind": "Attrêuva",
-       "qbbrowse": "Navvega",
-       "qbedit": "Cangia",
-       "qbpageoptions": "Opsioîn de 'sta paggina",
-       "qbmyoptions": "E mæ paggine",
        "faq": "Domande frequenti",
-       "faqpage": "Project:Domande frequente",
        "actions": "Açioìn",
        "namespaces": "Namespaces",
        "variants": "Diferense",
        "edit-local": "Modifica descrission locale",
        "create": "Crea",
        "create-local": "Azonzi descrission locale",
-       "editthispage": "Modificâ 'sta pagina",
-       "create-this-page": "Crea 'sta paggina",
        "delete": "Scancella",
-       "deletethispage": "Scassa 'sta paggina",
-       "undeletethispage": "Recuppera sta paggina",
        "undelete_short": "Recuppera {{PLURAL:$1|una revixon|$1 revixoin}}",
        "viewdeleted_short": "{{PLURAL:$1|una modiffica cançelâ|$1 modiffiche cançelæ}}",
        "protect": "Protezi",
        "protect_change": "cangia",
-       "protectthispage": "Proteze 'sta paggina.",
        "unprotect": "Càngia proteçión",
-       "unprotectthispage": "Càngia a proteçión de sta paggina",
        "newpage": "Nêuva pàgina",
-       "talkpage": "Paggina de discuscion",
        "talkpagelinktext": "Ciæti",
        "specialpage": "Pagina speçiâ",
        "personaltools": "Strumenti personâli",
-       "articlepage": "Veddi a voxe",
        "talk": "Discuscion",
        "views": "Vìxite",
        "toolbox": "Arneixi",
        "tool-link-userrights": "Modiffica groppi {{GENDER:$1|utente}}",
        "tool-link-userrights-readonly": "Vixualizza groppi {{GENDER:$1|utente}}",
        "tool-link-emailuser": "Manda un'e-mail a questo {{GENDER:$1|utente}}",
-       "userpage": "Veddi a paggina utente",
-       "projectpage": "Amia a paggina de serviççio",
        "imagepage": "Vizualizza a paggina do file",
        "mediawikipage": "Vizualizza o messaggio",
        "templatepage": "Vizualizza o modello",
        "redirectedfrom": "(Rendirissou da $1)",
        "redirectpagesub": "Paggina de rindirissamento",
        "redirectto": "Rendirissa a:",
-       "lastmodifiedat": "Sta pagina a l'è stæta cangiâ l'urtima votta a e $2 do $1.",
+       "lastmodifiedat": "Sta pagina a l'è stæta cangiâ l'urtima votta o $1 a $2.",
        "viewcount": "'Sta paggina a l'è stæta vista {{PLURAL:$1|solo 'na vòtta|$1 vòtte}}.",
        "protectedpage": "Paggina protetta",
        "jumpto": "Vanni a:",
        "login": "Intra",
        "login-security": "Veifica a to identitæ",
        "nav-login-createaccount": "Intra / Registrate",
-       "userlogin": "Intra / Registrite",
-       "userloginnocreate": "Intra",
        "logout": "Sciorti",
        "userlogout": "Sciorti",
        "notloggedin": "No t'ê introu",
        "userlogin-noaccount": "No ti t'ê ancon registrou?",
        "userlogin-joinproject": "Registrite insce {{SITENAME}}",
-       "nologin": "No ti gh'æ ancon in acesso? '''$1'''.",
-       "nologinlink": "Creâ 'n' utensa",
        "createaccount": "Crea 'n nêuvo account",
-       "gotaccount": "Ti ghe l'æ za 'n' utensa? '''$1'''.",
-       "gotaccountlink": "Intra",
-       "userlogin-resetlink": "T'æ ascordòu i teu dæti de acesso?",
        "userlogin-resetpassword-link": "T'hæ miga ascordou a teu poula segretta?",
        "userlogin-helplink2": "Agiutto pe intrâ",
        "userlogin-loggedin": "Ti t'ê zà connesso comme {{GENDER:$1|$1}}.\nUsa o formulaio sottostante pe accede comme 'n atro utente.",
        "createaccountmail": "Doeuvia una password temporanea abrettio e mandila a l'adresso de posta elettronica speçificou",
        "createaccountmail-help": "O poeu ese doeuviou pe creâ un'utensa pe 'n'atra person-a sensa doveine conosce a password.",
        "createacct-realname": "Nomme reale (opçionâ)",
-       "createaccountreason": "Raxon:",
        "createacct-reason": "Raxon",
        "createacct-reason-ph": "Perché t'ê apreuvo a creâ un'atra utensa",
        "createacct-reason-help": "Messaggio vixualizou into registro da creaçion de l'utença",
        "preview": "Anteprìmma",
        "showpreview": "Veddi l'anteprimma",
        "showdiff": "Veddi i cangiamenti",
-       "blankarticle": "<strong>Attençion:</strong> a paggina che ti çerchi a l'è veua.\nCliccando torna in sce \"{{int:savearticle}}\", a paggina a saiâ creâ sensa contegnui.",
+       "blankarticle": "<strong>Attençion:</strong> a paggina che ti çerchi a l'è veua.\nCliccando torna in sce \"$1\", a paggina a saiâ creâ sensa contegnui.",
        "anoneditwarning": "<strong>Attension:</strong> No t'ê introu. Se ti fæ di cangi o teu adresso IP o saiâ vixibile pubbricamente. Se <strong>[$1 ti intri]</strong> ò <strong>[$2 ti crei un'utensa]</strong>, e teu modifiche saian attribuie a-o teu nomme utente, insemme a di atri benefiççi.",
        "anonpreviewwarning": "No t'hæ fæto l'accesso. Se ti sarvi inta stoia da paggina ghe saiâ solo o to adresso IP",
-       "missingsummary": "<strong>Aregòrdite:</strong> no t'hæ specificòu l'oggetto de questa modiffica. Sciaccando torna \"{{int:savearticle}}\", a modiffica a saiâ sarvâ sensa.",
-       "selfredirect": "<strong>Attençion:</strong> t'ê apreuvo a rendirissâ sta paggina a lê mæxima.\nFoscia t'hæ sballiòu a indicâ a destinaçion pe-o redirect, ò donque ti modiffichi a paggina sbaliâ.\nSe ti clicchi torna \"{{int:savearticle}}\", o redirect o saiâ creòu comunque.",
+       "missingsummary": "<strong>Aregòrdite:</strong> no t'hæ specificòu l'oggetto de questa modiffica. Sciaccando torna \"$1\", a modiffica a saiâ sarvâ sensa.",
+       "selfredirect": "<strong>Attençion:</strong> t'ê apreuvo a rendirissâ sta paggina a lê mæxima.\nFoscia t'hæ sballiòu a indicâ a destinaçion pe-o redirect, ò donque ti modiffichi a paggina sbaliâ.\nSe ti clicchi torna \"$1\", o redirect o saiâ creòu comunque.",
        "missingcommenttext": "Scrivi un commento chi de sotta",
-       "missingcommentheader": "<strong>Aregòrdite:</strong> no t'hæ specificòu o soggetto de sto commento. Sciaccando torna \"{{int:savearticle}}\", a modiffica a saiâ sarvâ sensa.",
+       "missingcommentheader": "<strong>Aregòrdite:</strong> no t'hæ specificòu o soggetto de sto commento. Sciaccando torna \"$1\", a modiffica a saiâ sarvâ sensa.",
        "summary-preview": "Anteprimma oggetto:",
        "subject-preview": "Anteprimma do soggetto:",
        "previewerrortext": "Gh'è stæto un errô mentre se çercava de mostrâ l'anteprimma.",
        "editingsection": "Càngio de $1 (seçión)",
        "editingcomment": "Càngio de $1 (neuva seçion)",
        "editconflict": "Conflito d'ediçion: $1",
-       "explainconflict": "Un atro utente o l'ha sarvòu una neuva verscion da paggina de mentre che t'êi apreuvo a cangiâla.\nA casella de modiffica de d'ato a conten o scrito da paggina coscì comm'o l'è òua.\nE teu modiffiche son invece mostræ inta casella de modiffica de sotta.\nTi g'hæ da stramuâ e teu modiffiche inta casella de d'ato.\nSciaccando o pomello '{{int:savearticle}}', o saiâ sarvòu '''solo''' o scrito contegnuo inta casella de d'ato.",
+       "explainconflict": "Un atro utente o l'ha sarvòu una neuva verscion da paggina de mentre che t'êi apreuvo a cangiâla.\nA casella de modiffica de d'ato a conten o scrito da paggina coscì comm'o l'è òua.\nE teu modiffiche son invece mostræ inta casella de modiffica de sotta.\nTi g'hæ da stramuâ e teu modiffiche inta casella de d'ato.\nSciaccando o pomello '$1', o saiâ sarvòu '''solo''' o scrito contegnuo inta casella de d'ato.",
        "yourtext": "O teu testo",
        "storedversion": "La verscion memorizzâ",
        "nonunicodebrowser": "'''Attençion: o teu navegatô o no l'è compatibbile co-i caratteri Unicode.''' Pe consentî a modiffica de paggine sença problemi, i caratteri non ASCII saian vixualizzæ inta casella de modiffica sotto forma de codiçi esadeximæ.'''",
        "post-expand-template-argument-warning": "'''Atençión:''' sta pàgina a contegne un ò ciù argomenti di template che son tròppo gràndi pe êse espansi. Sti argomenti no saiàn fæti védde.",
        "post-expand-template-argument-category": "Pàgine con di template che ghe mancàn di argoménti",
        "parser-template-loop-warning": "Rilevou loop do template: [[$1]]",
+       "template-loop-category": "Paggine con di template che se reciamman da lô",
+       "template-loop-category-desc": "A paggina a conten un template ch'o se reciamma da lê, saiv'a dî un template into quæ gh'è incruzo o template mæximo.",
        "parser-template-recursion-depth-warning": "Limmite de ricorscion into template superòu($1)",
        "language-converter-depth-warning": "Limmite de profonditæ do convertitô de lengoa superòu ($1)",
        "node-count-exceeded-category": "Paggine dovve l'è superòu o nummero di groppi.",
        "page_first": "primma",
        "page_last": "ûrtima",
        "histlegend": "Confronto tra verscioîn: selession-a e cascette corispondenti a-e verscioîn dexidiæ e schissa Invio oppû o pomello da basso.\n\nLegenda: (corr) = differense co-a verscion corrente, (prec) = differense co-a verscion precedente, '''m''' = modiffica minô",
-       "history-fieldset-title": "Véddi a stöia",
-       "history-show-deleted": "Sôlo scancelæ",
+       "history-fieldset-title": "Çerca de verscioin",
+       "history-show-deleted": "Solo verscioin scassæ",
        "histfirst": "primma",
        "histlast": "urtima",
        "historysize": "({{PLURAL:$1|1 byte|$1 byte}})",
        "search-file-match": "(corrispondença into contegnuo do file)",
        "search-suggest": "Fòscia ti voéivi: $1",
        "search-rewritten": "Mostro i risultæ pe $1. Atrimenti, çerca $2.",
-       "search-interwiki-caption": "Progetti fræ",
+       "search-interwiki-caption": "Risultæ da-i progetti fræ",
        "search-interwiki-default": "Risultæ da $1:",
        "search-interwiki-more": "(atro)",
+       "search-interwiki-more-results": "atri risultæ",
        "search-relatedarticle": "corelæ",
        "searchrelated": "corelæ",
        "searchall": "tùtti",
        "youremail": "Indirìsso email:",
        "username": "{{GENDER:$1|Nomme utente}}:",
        "prefs-memberingroups": "{{GENDER:$2|Membro}} {{PLURAL:$1|do gruppo|di gruppi}}:",
+       "group-membership-link-with-expiry": "$1 (scin a $2)",
        "prefs-registration": "Dæta de registraçion:",
        "yourrealname": "Nomme vêo:",
        "yourlanguage": "Léngoa:",
        "prefs-help-prefershttps": "Questa preferença a l'aviâ effetto da-o proscimo accesso.",
        "prefswarning-warning": "T'hæ fæto de modiffiche a-e teu preferense che no son ancon stæte sarvæ.\nSe ti sciorti da sta paggina sensa sciaccâ \"$1\" e preferense no saian agiornæ.",
        "prefs-tabs-navigation-hint": "Suggeimento: ti peu deuviâ i pomelli co-a freccia scinistra e drita pe navegâ tra e schede inta lista de schede.",
-       "userrights": "Manezzo di driti di utenti",
+       "userrights": "Driti utente",
        "userrights-lookup-user": "Seleçion-a un utente",
        "userrights-user-editname": "Scrivi o teu nomme utente:",
        "editusergroup": "Carrega groppi utente",
        "editinguser": "Apreuvo a cangiâ i driti de l'{{GENDER:$1|utente}} <strong>[[User:$1|$1]]</strong> $2",
        "viewinguserrights": "Vixualizaçion di driti de l'{{GENDER:$1|utente}} <strong>[[User:$1|$1]]</strong> $2",
-       "userrights-editusergroup": "Modiffica i gruppi di utenti",
-       "userrights-viewusergroup": "Vixualizza groppi utente",
+       "userrights-editusergroup": "Modiffica groppi {{GENDER:$1|utente}}",
+       "userrights-viewusergroup": "Vixualizza groppi {{GENDER:$1|utente}}",
        "saveusergroups": "Sarva groppi {{GENDER:$1|utente}}",
        "userrights-groupsmember": "Membro de:",
        "userrights-groupsmember-auto": "Membro impliçito de:",
-       "userrights-groups-help": "L'è poscibile modificâ i groppi de st'utente:\n* Una casella marcâ voeu dî che l'utente o l'è inte quello groppo.\n* Una casella smarcâ voeu dî che l'utente o no l'è inte quello groppo.\n* O scimbolo * o voeu dî che no ti poeu smarcâ o groppo una votta che ti l'hæ azonto (ò viçeversa).",
+       "userrights-groups-help": "L'è poscibile modificâ i groppi de st'utente:\n* Una casella marcâ voeu dî che l'utente o l'è inte quello groppo.\n* Una casella smarcâ voeu dî che l'utente o no l'è inte quello groppo.\n* O scimbolo * o voeu dî che no ti poeu smarcâ o groppo una votta che ti l'hæ azonto (ò viçeversa).\n* O scimbolo # o l'indica che ti poeu solo portâ inderê a dæta da descheita de l'inscriçion a questo groppo; no l'è poscibbile portala avanti",
        "userrights-reason": "Raxon:",
        "userrights-no-interwiki": "No ti g'hæ i permissi pe modificâ i driti di utenti insce di atre wiki.",
        "userrights-nodatabase": "O database $1 o no l'esiste ò o no l'è un database locale.",
        "userrights-expiry-current": "O descazze o $1",
        "userrights-expiry-none": "O no descazze",
        "userrights-expiry": "O descazze:",
+       "userrights-expiry-existing": "Scadença attoale: $2, $3",
+       "userrights-expiry-othertime": "Atra duata:",
+       "userrights-expiry-options": "1 giorno:1 day,1 setteman-a:1 week,1 meise:1 month,3 meixi:3 months,6 meixi:6 months,1 anno:1 year",
+       "userrights-invalid-expiry": "A scadença pe-o groppo \"$1\" a no l'è vallida",
+       "userrights-expiry-in-past": "A scadença pe-o groppo \"$1\" a l'è za passâ.",
+       "userrights-cannot-shorten-expiry": "No ti poeu antiçipâ a descheita de l'inscriçion a-o groppo \"$1\". Soltanto i utenti co-o permisso de azonze e rimoeuve questo groppo poeuan antiçipâ e descheite.",
        "userrights-conflict": "Conflito de modiffica di driti utente! Pe piaxei controlla e conferma e teu modiffiche.",
        "group": "Gruppo:",
        "group-user": "Ûtenti",
        "right-editsemiprotected": "Modifica e pagine protette con \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Modifica o modello de contegnuo de 'na paggina",
        "right-editinterface": "Modiffica l'interfaccia utente",
-       "right-editusercssjs": "Modifica i file CSS e JS di atri utenti",
        "right-editusercss": "Modifica i file CSS di atri utenti",
        "right-edituserjs": "Modiffica i file JS di atri utenti",
        "right-editmyusercss": "Modifica o file CSS do proppio utente",
        "action-upload_by_url": "caregâ sto file da un addreçço URL",
        "action-writeapi": "deuviâ l'API in scrittua",
        "action-delete": "scassâ 'sta paggina",
-       "action-deleterevision": "scassâ sta verscion",
-       "action-deletedhistory": "vixualizzâ a cronologia scassâ de sta pagina",
+       "action-deleterevision": "scassâ verscioin",
+       "action-deletelogentry": "scassâ e voxe de registro",
+       "action-deletedhistory": "vixualizzâ a cronologia scassâ de 'na paggina",
+       "action-deletedtext": "vixualizâ o testo de verscioin scassæ",
        "action-browsearchive": "çercâ paggine scassæ",
-       "action-undelete": "Recuppera sta paggina",
-       "action-suppressrevision": "rivedde e ripristinâ e modiffiche ascose",
+       "action-undelete": "recuperâ paggine",
+       "action-suppressrevision": "rivedde e ripristinâ e verscioin ascose",
        "action-suppressionlog": "vedde questo registro privou",
        "action-block": "bloccâ st'utente in scrittua",
        "action-protect": "modificâ i livelli de proteçion pe questa pagina",
        "action-userrights-interwiki": "modificâ i driti di utenti insce di atre wiki",
        "action-siteadmin": "broccâ e sbroccâ o database",
        "action-sendemail": "mandâ di e-mail",
+       "action-editmyoptions": "modificâ e proppie preferençe",
        "action-editmywatchlist": "modificâ a to lista di öservæ",
        "action-viewmywatchlist": "vedde i to öservæ speçiali",
        "action-viewmyprivateinfo": "vedde i proppi dæti personali",
        "recentchanges-legend-heading": "<strong>Legenda:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (veddi e [[Special:NewPages|neuve paggine]])",
        "recentchanges-submit": "Fanni vedde",
+       "rcfilters-activefilters": "Filtri attivi",
+       "rcfilters-quickfilters": "Inganci rappidi",
+       "rcfilters-savedqueries-defaultlabel": "Filtri sarvæ",
+       "rcfilters-savedqueries-rename": "Rinommina",
+       "rcfilters-savedqueries-setdefault": "Imposta comme predefinio",
+       "rcfilters-savedqueries-unsetdefault": "Rimoeuvi comme predefinio",
+       "rcfilters-savedqueries-remove": "Leva",
+       "rcfilters-savedqueries-new-name-label": "Nomme",
+       "rcfilters-savedqueries-apply-label": "Crea ingancio rappido",
+       "rcfilters-savedqueries-cancel-label": "Anulla",
+       "rcfilters-savedqueries-add-new-title": "Sarva filtri comme ingancio rappido",
+       "rcfilters-restore-default-filters": "Ripristina i filtri predefinii",
+       "rcfilters-clear-all-filters": "Netezza tutti i filtri",
+       "rcfilters-search-placeholder": "Filtra i urtime modiffiche (navega ò comença a digitâ)",
+       "rcfilters-invalid-filter": "Filtro non vallido",
+       "rcfilters-empty-filter": "Nisciun filtro attivo. Se ghe vedde tutti i contributi.",
+       "rcfilters-filterlist-title": "Filtri",
+       "rcfilters-filterlist-whatsthis": "Cos'o l'è sto chì?",
+       "rcfilters-filterlist-feedbacklink": "Lascia un commento in sciâ noeuva fonçionalitæ sperimentale",
+       "rcfilters-highlightbutton-title": "Evidençia risultæ",
+       "rcfilters-highlightmenu-title": "Seleçion-a un cô",
+       "rcfilters-highlightmenu-help": "Seleçion-a un cô pe evidençiâ sta propietæ",
+       "rcfilters-filterlist-noresults": "Nisciun filtro atrovou",
+       "rcfilters-noresults-conflict": "Nisciun risultou trovou percose i critei de çerchia son in conflito",
+       "rcfilters-state-message-subset": "Sto filtro chì o no g'ha effetto percose i so risultæ son incluxi con quelli  {{PLURAL:$2|do seguente filtro ciu ampio|di  seguenti filtri ciu ampi}} (proeuva a evidençiâli pe distinguili): $1",
+       "rcfilters-state-message-fullcoverage": "A seleçion de tutti i filtri inte 'n groppo l'è comme no seleçionâne manc'un, coscì che sto filtro o no fa effetto. O groppo o l'includde: $1",
+       "rcfilters-filtergroup-registration": "Registraçion utente",
+       "rcfilters-filter-registered-label": "Registrou",
+       "rcfilters-filter-unregistered-label": "Non registrou",
+       "rcfilters-filtergroup-authorship": "Aotô do contributo",
+       "rcfilters-filter-editsbyself-label": "E to modiffiche",
+       "rcfilters-filter-editsbyself-description": "I to contributi.",
+       "rcfilters-filter-editsbyother-label": "E modiffiche di atri",
+       "rcfilters-filter-editsbyother-description": "Tutte e modiffiche sarvo e to.",
+       "rcfilters-filtergroup-userExpLevel": "Livello d'esperiença (solo pe i utenti registræ)",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Noeuvi utenti",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Meno de 10 modiffiche e 4 giorni d'attivitæ.",
+       "rcfilters-filter-user-experience-level-experienced-label": "Utenti con esperiença",
+       "rcfilters-filter-user-experience-level-experienced-description": "Ciù de 30 giorni d'attivitæ e 500 modiffiche.",
+       "rcfilters-filtergroup-automated": "Contributi aotomattichi",
+       "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-bots-description": "Modiffiche effettoæ da strumenti aotomattichi.",
+       "rcfilters-filter-humans-label": "Umoen (non bot)",
+       "rcfilters-filter-humans-description": "Modiffiche effettoæ da di contributoî umoen.",
+       "rcfilters-filtergroup-reviewstatus": "Stato da revixon",
+       "rcfilters-filter-patrolled-label": "Veificæ",
+       "rcfilters-filter-patrolled-description": "Modiffiche contrassegnæ comme veificæ.",
+       "rcfilters-filter-unpatrolled-label": "Non veificæ",
+       "rcfilters-filter-unpatrolled-description": "Modiffiche non contrassegnæ comme veificæ.",
+       "rcfilters-filtergroup-significance": "Scignificou",
+       "rcfilters-filter-minor-label": "Cangiamenti menoî",
+       "rcfilters-filter-minor-description": "Modiffiche che l'aoto o l'ha indicou comme minoî.",
+       "rcfilters-filter-major-label": "Cangiamenti non menoî",
+       "rcfilters-filter-watchlist-watched-label": "Sotta oservaçion",
+       "rcfilters-filtergroup-changetype": "Tipo de modiffica",
+       "rcfilters-filter-pageedits-label": "Modiffiche a-e paggine",
+       "rcfilters-filter-newpages-label": "Creaçioin de paggine",
+       "rcfilters-filter-logactions-description": "Açioin aministrative, creaçioin utençe, eliminaçioin paggine, caregamenti....",
+       "rcfilters-filtergroup-lastRevision": "Urtima revixon",
+       "rcfilters-filter-lastrevision-label": "Urtima revixon",
+       "rcfilters-filter-lastrevision-description": "I urtime modiffiche a 'na paggina.",
+       "rcfilters-filter-previousrevision-label": "Verscioin precedente",
        "rcnotefrom": "Chì sotta gh'è {{PLURAL:$5|o cangiamento|i cangiamenti}} a partî da <strong>$3, $4</strong> (scin a '''$1''').",
        "rclistfrom": "Fanni vedde e modiffiche apportæ partindo da $3 $2",
        "rcshowhideminor": "$1 cangiaménti minoî",
        "rcshowhidecategorization": "$1 categorizzaçion da pagina",
        "rcshowhidecategorization-show": "Fanni vedde",
        "rcshowhidecategorization-hide": "Ascondi",
-       "rclinks": "Fanni vedde i $1 cangiaménti ciù reçenti fæti inti ùrtimi $2 giorni<br />$3",
+       "rclinks": "Fanni vedde i $1 cangiaménti ciù reçenti fæti inti ùrtimi $2 giorni",
        "diff": "diff",
        "hist": "stö",
        "hide": "Ascondi",
        "apisandbox-sending-request": "Invio recesta de API...",
        "apisandbox-loading-results": "Riceçion di risultæ de API in corso...",
        "apisandbox-results-error": "S'è veificou un errô durante o caregamento da risposta a l'interrogaçion API: $1",
+       "apisandbox-request-selectformat-label": "Mostra i dæti recesti comme:",
        "apisandbox-request-url-label": "URL de recesta:",
        "apisandbox-request-time": "Tempo richiesto: {{PLURAL:$1|$1 ms}}",
        "apisandbox-results-fixtoken": "Correzi token e reinvia",
        "magiclink-tracking-rfc-desc": "Sta paggina a l'adoeuevia di inganci maggichi RFC. Amia [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] insce comme ezeguî a migraçion.",
        "magiclink-tracking-pmid": "Paggine ch'adoeuvian di inganci maggichi PMID",
        "magiclink-tracking-pmid-desc": "Sta paggina a l'adoeuvia dio inganci maggichi PMID. Amia [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] sciu comme exeguî a migraçion.",
+       "magiclink-tracking-isbn": "Paggine ch'adoeuvian di inganci maggichi ISBN",
+       "magiclink-tracking-isbn-desc": "Sta paggina a l'adoeuvia di inganci maggichi ISBN. Amia [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] sciu comme exeguî a migraçion.",
        "specialloguserlabel": "Açion effettuâ da:",
        "speciallogtitlelabel": "Açion effettuâ sciu (tittolo da paggina ò {{ns:user}}:Nomme utente):",
        "log": "Log",
        "listusers-blocked": "(bloccou)",
        "activeusers": "Lista di utenti attivi",
        "activeusers-intro": "Questo o l'è un elenco di utenti ch'han avuo quarche tipo d'attivitæ da $1 {{PLURAL:$1|giorno|giorni}} a questa parte.",
-       "activeusers-count": "$1 {{PLURAL:$1|açione|açioin}} {{PLURAL:$3|inte l'urtimo giorno|inti urtimi $3 giorni}}",
+       "activeusers-count": "$1 {{PLURAL:$1|açion|açioin}} {{PLURAL:$3|inte l'urtimo giorno|inti urtimi $3 giorni}}",
        "activeusers-from": "Mostra i utenti a partî da:",
+       "activeusers-groups": "Vixualizza i utenti ch'apartegnan a di groppi:",
+       "activeusers-excludegroups": "Escluddi i utenti ch'apartegnan a di groppi:",
        "activeusers-noresult": "Nisciun utente o risponde a-i critei impostæ.",
        "activeusers-submit": "Mostra utenti attivi",
        "listgrouprights": "Driti do groppo utente",
        "emailccsubject": "Coppia do messaggio inviou a $1: $2",
        "emailsent": "E-mail spedïa",
        "emailsenttext": "A teu e-mail a l'è stæta spedïa.",
-       "emailuserfooter": "Questa email a l'è stæta {{GENDER:$1|inviâ}} da $1 a {{GENDER:$2|$2}} a traverso a fonçion \"{{int:emailuser}}\" insce {{SITENAME}}.",
+       "emailuserfooter": "Questa email a l'è stæta {{GENDER:$1|inviâ}} da $1 a {{GENDER:$2|$2}} a traverso a fonçion \"{{int:emailuser}}\" insce {{SITENAME}}. Se {{GENDER:$2|ti ghe rispondi}}, a to email de risposta a saiâ spedia direttamente {{GENDER:$1|a-o|a-a}} mittente originâ, rivelando{{GENDER:$1|ghe}} o {{GENDER:$2|to}} adresso de posta elettronica.",
        "usermessage-summary": "Messaggio de scistema",
        "usermessage-editor": "Messaggê de scistema",
        "watchlist": "Sotta osservassion",
        "undeleteviewlink": "fanni védde",
        "undeleteinvert": "Inverti a seleçion",
        "undeletecomment": "Raxon:",
-       "undeletedrevisions": "{{PLURAL:$1|Una verscion recuperâ|$1 verscioin recuperæ}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|Una verscion|$1 verscioin}} e $2 file recuperæ",
-       "undeletedfiles": "{{PLURAL:$1|Un file recuperou|$1 file recuperæ}}",
        "cannotundelete": "Çerti ò tutti i ripristini non riuscii:\n$1",
        "undeletedpage": "'''A pagina $1 a l'è stæta recuperâ'''\n\nConsurta o [[Special:Log/delete|registro de scançellaçioin]] pe vedde e scançellaçioin e i recupperi ciù reçente.",
        "undelete-header": "Consurta o [[Special:Log/delete|registro de scançellaçioin]] pe vedde e scassatue ciù reçente.",
        "htmlform-user-not-exists": "'''$1''' o no l'existe.",
        "htmlform-user-not-valid": "<strong>$1</strong> o no l'è un nomme utente vallido.",
        "logentry-delete-delete": "$1 {{GENDER:$2|o l'ha scassou}} a paggina $3",
-       "logentry-delete-restore": "$1 {{GENDER:$2|o|a}} l'ha ripristinou a paggina $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|o|a}} l'ha ripristinou a paggina $3 ($4)",
        "logentry-delete-event": "$1 {{GENDER:$2|o|a}} l'ha modificou a vixibilitæ de {{PLURAL:$5|un'açion do registro|$5 açioin do registro}} de \"$3\": $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|o l'ha modificou}} a vixibilitæ pe {{PLURAL:$5|una verscion|$5 verscioin}} da paggina $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|o l'ha modificou}} a vixibilitæ de quarche açion do registro de $3",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|o l'ha aggiornou}} i etichette da verscion $4 da paggina $3 ({{PLURAL:$7|azonta|azonte}} $6; {{PLURAL:$9|rimossa|rimosse}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|o l'ha aggiornou}} i etichette da voxe de registro $5 de paggina $3 ({{PLURAL:$7|azonta|azonte}} $6; {{PLURAL:$9|rimossa|rimosse}} $8)",
        "rightsnone": "(nisciun)",
-       "revdelete-summary": "ögetto da modiffica",
        "feedback-adding": "Inseimento do feedback inta paggina...",
        "feedback-back": "Inderê",
        "feedback-bugcheck": "Ottimo! Controlla solo ch'o no segge za fra-i [$1 bug conosciui].",
index 453060c..2a14ffa 100644 (file)
        "yourpasswordagain": "Kēratigid sallisõnā ūtstõ:",
        "login": "Log sīezõ",
        "nav-login-createaccount": "Log sīezõ agā registrīer kȭlbatijizõks",
-       "userlogin": "Sīezõ loggimi agā kȭlbatijiz-konto lūomi",
        "logout": "Log ulzõ",
        "userlogout": "Log ulzõ",
-       "nologin": "Až täddõn äb ūo eņtš konto, '''$1'''.",
-       "nologinlink": "Registrīerõgid täs",
        "createaccount": "Lūo kont",
-       "gotaccount": "Až täddõn jubā um eņtš konto, '''$1'''.",
-       "gotaccountlink": "Log sīezõ",
-       "userlogin-resetlink": "Kas tēg unīztõ jarā eņtš sizzõlkēratimiz tīetõkst?",
        "createacct-submit": "Lūo kont",
        "mailmypassword": "Sōtõgid e-kēras ūž sallisõnā",
        "loginlanguagelabel": "Kēļ: $1",
        "rcshowhidemine": "$1 min parāmtimizt",
        "rcshowhidemine-show": "Nägț",
        "rcshowhidemine-hide": "vaŗț",
-       "rclinks": "Nägţ perīži $1 mõitõkši lǟndz $2 pǟva āigal <br />$3",
+       "rclinks": "Nägţ perīži $1 mõitõkši lǟndz $2 pǟva āigal",
        "diff": "vaiţ",
        "hist": "istōrij",
        "hide": "vaŗț",
index 24a123d..82e71fd 100644 (file)
        "login": "إ نۆم هەتن سیستم",
        "login-security": "وژت معرفی‌که",
        "nav-login-createaccount": " إ نؤم هةتن سیستم/ حساوو کاربةری سازین",
-       "userlogin": " إ نؤم هةتن سیستم/ حساوو کاربةری سازین",
-       "userloginnocreate": "نؤم هۀتن سیستم",
        "logout": "دەرچێن|خروج",
        "userlogout": "دەرچێن|خروج",
        "notloggedin": "وارد سیستم نؤینۀ",
        "userlogin-noaccount": "حساوو کاربۀری نرین؟",
        "userlogin-joinproject": "{{SITENAME}}نام نؤیسی کۀن",
-       "nologin": "حساوو کاربۀری نرین؟$1",
-       "nologinlink": "حساووئ أرا ووژتان بِسازِن",
        "createaccount": "حساووئ أرا ووژتان بِسازِن",
-       "gotaccount": "حساوو کاربۀری دِرین؟$1",
-       "gotaccountlink": "إ نۆم هەتن سیستم",
-       "userlogin-resetlink": "جزئیات ورودتە ویر(یاد)چێە؟",
        "userlogin-resetpassword-link": "رۀمزۀتان  ویر/ یاد  چئۀ؟",
        "userlogin-helplink2": "کمک با ورود",
        "userlogin-loggedin": "شما در حال حاضر به عنوان {{GENDER:$1|$1}} وارد شده‌اید.\nاز فرم پایین برای ورود به عنوان یک کاربر دیگر استفاده کنید.",
        "createaccountmail": "استفاده از رمز عبور موقت تصادفی و ارسال آن به آدرس ایمیل مشخص شده",
        "createaccountmail-help": "تو مه‌تونی یک حساب ایجاد مه‌که‌ی سی کسی دیگر بدون شیفره نه‌زانی",
        "createacct-realname": "*نام راسکانی/واقعی *دل بخواهی",
-       "createaccountreason": ":دةلیل",
        "createacct-reason": "دةلیل",
        "createacct-reason-ph": "ئةرا حساووێ  تر مةسازین؟",
        "createacct-reason-help": "پیام د سیستم ایجاد خساب نمایش داده مه‌شوه",
        "preview": "پیش‌نمایش",
        "showpreview": "پیش‌نمایش",
        "showdiff": "گؤەڕیال(تغییرات) بۆین",
-       "blankarticle": "<strong>هوشدار:</strong> هۆمە وەڵگەتۆن سازیە پەتیە(حالیە).\nأڕ «{{int:savearticle}}» دۆِ گِل کلیک کِین ، وەڵگە بێ  نۆم جِک(محتوا) مەسازێ.",
+       "blankarticle": "<strong>هوشدار:</strong> هۆمە وەڵگەتۆن سازیە پەتیە(حالیە).\nأڕ «$1» دۆِ گِل کلیک کِین ، وەڵگە بێ  نۆم جِک(محتوا) مەسازێ.",
        "anoneditwarning": "<strong>هشدار:</strong> شما وارد نشده‌اید. نشانی آی‌پی شما برای عموم قابل مشاهده خواهد بود اگر هر تغییری ایجاد کنید. اگر <strong>[$1 وارد شوید]</strong> یا <strong>[$2 یک حساب کاربری بسازید]</strong>، ویرایش‌هایتان به نام کاربری‌تان نسبت داده خواهد شد، همراه با مزایای دیگر.",
        "anonpreviewwarning": "''شما به سامانه وارد نشده‌اید. ذخیره کردن باعث می‌شود که نشانی آی‌پی شما در تاریخچهٔ این صفحه ثبت گردد.''",
-       "missingsummary": "'''یادآوری:''' شما خلاصهٔ ویرایش ننوشته‌اید.\nاگر دوباره دکمهٔ «{{int:savearticle}}» را فشار دهید ویرایش شما بدون آن ذخیره خواهد شد.",
-       "selfredirect": "<strong>هشدار:</strong> شما در حال تغییرمسیر صفحه به خودش هستید.\nامکان دارد هدف اشتباهی را برای تغییرمسیر انتخاب کردید، یا ممکن است صفحهٔ اشتباهی را ویرایش می‌کنید.\n\nاگر بر روی \"{{int:savearticle}}\" دوباره کلیک کنید، تغییرمسیر ساخته خواهد شد.",
+       "missingsummary": "'''یادآوری:''' شما خلاصهٔ ویرایش ننوشته‌اید.\nاگر دوباره دکمهٔ «$1» را فشار دهید ویرایش شما بدون آن ذخیره خواهد شد.",
+       "selfredirect": "<strong>هشدار:</strong> شما در حال تغییرمسیر صفحه به خودش هستید.\nامکان دارد هدف اشتباهی را برای تغییرمسیر انتخاب کردید، یا ممکن است صفحهٔ اشتباهی را ویرایش می‌کنید.\n\nاگر بر روی \"$1\" دوباره کلیک کنید، تغییرمسیر ساخته خواهد شد.",
        "missingcommenttext": "لطفاً توضیحی در زیر بیفزایید.",
-       "missingcommentheader": "<strong>یادآوری:</strong> شما موضوع/عنوان این یادداشت را مشخص نکرده‌اید.\nاگر دوباره دکمهٔ «{{int:savearticle}}» را فشار دهید ویرایش شما بدون آن ذخیره خواهد شد.",
+       "missingcommentheader": "<strong>یادآوری:</strong> شما موضوع/عنوان این یادداشت را مشخص نکرده‌اید.\nاگر دوباره دکمهٔ «$1» را فشار دهید ویرایش شما بدون آن ذخیره خواهد شد.",
        "summary-preview": "پیش‌نمایش خلاصه:",
        "subject-preview": ":پیش‌نمایش موضوع",
        "previewerrortext": "در زمان تلاش برای نمایش دادن تغییرات شما، خطای رخ داد.",
        "editingsection": ")در حال ویرایش $1 (بخش",
        "editingcomment": "در حال ویرایش $1 (بخش تازه)",
        "editconflict": "تعارض ویرایشی: $1",
-       "explainconflict": "از وقتی ویرایش این صفحه را آغاز کرده‌اید شخص دیگری آن را تغییر داده است.\nناحیهٔ متنی بالایی شامل متن صفحه به شکل کنونی آن است.\nتغییرات شما در ناحیهٔ متنی پایینی نشان داده شده‌است.\nشما باید تغییراتتان را با متن کنونی ترکیب کنید.\nبا فشردن دکمهٔ «{{int:savearticle}}» <strong>فقط</strong> متن ناحیهٔ متنی بالایی ذخیره خواهد شد.",
+       "explainconflict": "از وقتی ویرایش این صفحه را آغاز کرده‌اید شخص دیگری آن را تغییر داده است.\nناحیهٔ متنی بالایی شامل متن صفحه به شکل کنونی آن است.\nتغییرات شما در ناحیهٔ متنی پایینی نشان داده شده‌است.\nشما باید تغییراتتان را با متن کنونی ترکیب کنید.\nبا فشردن دکمهٔ «$1» <strong>فقط</strong> متن ناحیهٔ متنی بالایی ذخیره خواهد شد.",
        "yourtext": "متن شما",
        "storedversion": "نسخهٔ ذخیره شده",
        "nonunicodebrowser": "'''هشدار: مرورگر شما با استانداردهای یونیکد سازگار نیست.'''\nراه حلی به کار گرفته شده تا شما بتوانید صفحات را با امنیت ویرایش کنید: کاراکترهای غیر ASCII به صورت کدهایی در مبنای شانزده به شما نشان داده می‌شوند.",
        "right-editsemiprotected": "ویرایش صفحه حفاظت‌شده به عنوان \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "ویرایش مدل محتوای یک صفحه",
        "right-editinterface": "ویرایش واسط کاربری",
-       "right-editusercssjs": "ویرایش صفحه‌های CSS و JS دیگر کاربرها",
        "right-editusercss": "ویرایش صفحه‌های CSS دیگر کاربرها",
        "right-edituserjs": "ویرایش صفحه‌های JS دیگر کاربرها",
        "right-editmyusercss": "پرونده‌های سی‌اس‌اس کاربری خود را ویرایش کنید",
        "rcshowhidecategorization": "$1 رده‌بندی صفحه‌ها",
        "rcshowhidecategorization-show": "نیشان دائن",
        "rcshowhidecategorization-hide": "ئآشاردن-پنهان کردن",
-       "rclinks": "نمایش آخرین $1 تغییر در $2 روز اخیر<br />$3",
+       "rclinks": "نمایش آخرین $1 تغییر در $2 روز اخیر",
        "diff": "تفاوت",
        "hist": "تاریخچۀ",
        "hide": "ئآشاردن-پنهان کردن",
        "undeleteviewlink": "دیین/سئرکردن",
        "undeleteinvert": "انتخاب بپلئ/برعۀسگ بؤ",
        "undeletecomment": ":دةلیل",
-       "undeletedrevisions": "$1 نسخه احیا {{PLURAL:$1|شد}}",
-       "undeletedrevisions-files": "$1 نسخه و $2 پرونده احیا {{PLURAL:$1|شد|شدند}}.",
-       "undeletedfiles": "$1 پرونده احیا {{PLURAL:$1|شد|شدند}}.",
        "cannotundelete": "احیا ناموفق بود:\n$1",
        "undeletedpage": "'''$1 احیا شد'''\n\nبرای دیدن سیاههٔ حذف‌ها و احیاهای اخیر به  [[Special:Log/delete|سیاههٔ حذف]] رجوع کنید.",
        "undelete-header": "برای دیدن صفحه‌های حذف‌شدهٔ اخیر [[Special:Log/delete|سیاههٔ حذف]] را ببینید.",
        "confirm-unwatch-top": " ئئ وۀلگۀ وۀ لیست پیگیریۀل تان حذف بو؟",
        "semicolon-separator": "؛&#32;",
        "quotation-marks": "«$1»",
-       "imgmultipageprev": "&rarr; وەڵگە دؤماێن",
+       "imgmultipageprev": " وەڵگە دؤماێن",
        "imgmultipagenext": "وەڵگە تِر(هەنی)→",
        "imgmultigo": "بِچۆ!",
        "imgmultigoto": "بچۆ وةڵگة $1",
        "logentry-tag-update-revision": "$1 برچسب نسخهٔ $4 صفحهٔ $3 را {{GENDER:$2|به‌روز کرد}} ($6 {{PLURAL:$7|افزوده‌شد}}؛ $8 {{PLURAL:$9|حذف شد}})",
        "logentry-tag-update-logentry": "$1 برچسب سیاههٔ $5 صفحهٔ $3 را {{GENDER:$2|به‌روز کرد}} ($6 {{PLURAL:$7|افزوده‌شد}}؛ $8 {{PLURAL:$9|حذف شد}})",
        "rightsnone": "(هؤیچ کام)",
-       "revdelete-summary": "خلاصة دةسکاری",
        "feedback-adding": "افزودن بازخورد به وةڵگة ...",
        "feedback-back": "گِل آوردن/برگشت",
        "feedback-bugcheck": "عالی‌است! فقط بررسی کنید که از [$1 ایرادهای شناخته‌شده] نباشد.",
index 0555632..f2754e6 100644 (file)
        "externaldberror": "Gh'è 'n erùr söl server de autenticasiù estèrno o sedenò se g'ha mìa le autorizasiù nesesàre per agiurnà i dati de registrasiù estèrni.",
        "login": "Va dent",
        "nav-login-createaccount": "Vena denter / Crea un cünt",
-       "userlogin": "Vegní denter - Creè un cünt",
-       "userloginnocreate": "Vegn denter",
        "logout": "Va fö",
        "userlogout": "Và fö",
        "notloggedin": "Te seet minga dent in del sistema",
        "userlogin-noaccount": "Sét gnemò registràt?",
        "userlogin-joinproject": "Regìstret sö {{SITENAME}}",
-       "nologin": "Gh'avii anmò da registrav? $1.",
-       "nologinlink": "Creé un cünt!",
        "createaccount": "Creá un cünt",
-       "gotaccount": "Gh'hee-t giamò un cünt? '''$1'''.",
-       "gotaccountlink": "Va dent in del sistema",
-       "userlogin-resetlink": "Sét desmentegàt i tò dati de autenticasiù?",
        "userlogin-resetpassword-link": "Sét desmentegàt la tò password?",
        "userlogin-helplink2": "G'hét bezògn de 'na mà per autenticàt?",
        "userlogin-loggedin": "Te sét zabèla autenticàt come {{GENDER:$1|$1}}.\nDòpra el mòdulo ché sóta per turnà a autenticàt come 'n óter ütènt.",
        "createacct-another-email-ph": "Mét dét l'indirìs e-mail",
        "createaccountmail": "Dòpra 'na password a càzo temporànea e màndela a l'indirìs e-mail specificàt",
        "createacct-realname": "Nòm véro (upsiunàl)",
-       "createaccountreason": "Mutìf:",
        "createacct-reason": "Mutìf:",
        "createacct-reason-ph": "Che fòza che sét dré a creà 'n ótra ütènsa?",
        "createacct-submit": "Créa la tò ütènsa",
        "editingsection": "Mudifega de $1 (sezión)",
        "editingcomment": "Adree a mudifegà $1 (sezión növa)",
        "editconflict": "Cunflit de edisiù sö $1",
-       "explainconflict": "'N óter ütènt el g'ha salvàt 'na versiù nöa de l'articol entàt che te sìet dré a fà le tò mudìfiche.\nL'area de mudìfica de sura la g'ha dét el test de la pàgina che gh'è on-line adès, isé come che l'è stat agiurnàt de l'óter ütènt.\nLa versiù co le tò mudìfiche envéce te la tróet endèl'area de mudìfica de sòta.\nSemài che te ölarèset confermàle, te g'hét de riportà le tò mudìfiche endèl tèst de l'area de sura.\nA schisà el butù '{{int:savearticle}}', se salvarà '''apéna''' el test che gh'è dét endèl'àrea de mudìfica de sura.",
+       "explainconflict": "'N óter ütènt el g'ha salvàt 'na versiù nöa de l'articol entàt che te sìet dré a fà le tò mudìfiche.\nL'area de mudìfica de sura la g'ha dét el test de la pàgina che gh'è on-line adès, isé come che l'è stat agiurnàt de l'óter ütènt.\nLa versiù co le tò mudìfiche envéce te la tróet endèl'area de mudìfica de sòta.\nSemài che te ölarèset confermàle, te g'hét de riportà le tò mudìfiche endèl tèst de l'area de sura.\nA schisà el butù '$1', se salvarà '''apéna''' el test che gh'è dét endèl'àrea de mudìfica de sura.",
        "yourtext": "El tò test",
        "storedversion": "La versiù en memória",
        "editingold": "<strong>Ocio: Te sét dré a mudificà 'na versiù mìa agiurnàda de chèsta pàgina.</strong> Semài che te la sàlvet, töcc i cambiamèncc facc dòpo de chèsta versiù le narà pèrde.",
        "saveprefs": "Tegn i mudifech",
        "restoreprefs": "Ristabiliss i impustazión de default (en töte le sesiù)",
        "prefs-editing": "Cazèla de mudìfica",
-       "rows": "Riich:",
-       "columns": "Culònn:",
        "searchresultshead": "Cerca",
        "stub-threshold-disabled": "Dezativàt",
        "recentchangesdays": "Dé de fà éder endèi öltem cambiamèncc:",
        "userrights-reason": "Reson:",
        "userrights-no-interwiki": "Te gh'hee mía i permiss necessari per pudè mudifegà i dirit di druvadur di olter wiki.",
        "userrights-nodatabase": "La base dat $1 a gh'é mia, o pura a l'é mia locala.",
-       "userrights-nologin": "Al gh'a da [[Special:UserLogin|rintrà ent el sistema]] con un cunt d'administrator par podé dà di drecc ai dovracc.",
-       "userrights-notallowed": "Te g'hét mìa l'autorizasiù per mudificà i permès de ütènt.",
        "userrights-changeable-col": "Grüp che te pö mudifegà",
        "userrights-unchangeable-col": "Grüp che te pö mia mudifegà",
        "group-user": "Druvadur",
        "rcshowhidemine": "$1 i mè mudifich",
        "rcshowhidemine-show": "Fà ved",
        "rcshowhidemine-hide": "Scond",
-       "rclinks": "Fà vedé i ültim $1 cambiament in di ültim $2 dì<br />$3",
+       "rclinks": "Fà vedé i ültim $1 cambiament in di ültim $2 dì",
        "diff": "dif",
        "hist": "stòria",
        "hide": "Scund",
        "undeleteviewlink": "arda",
        "undeleteinvert": "Invertì la seleziòn",
        "undeletecomment": "Mutìf:",
-       "undeletedrevisions": "{{PLURAL:$1|1 revision|$1 versiun}} rimetüü a post",
        "undelete-search-title": "Sérca pàgine scancelàde",
        "undelete-search-box": "Sérca pàgine scancelàde",
        "undelete-search-prefix": "Fà ved i paginn che scumenzen per:",
index 7c0baaa..88c1fa4 100644 (file)
        "rcshowhideliu": "$1 basáleli bamíkitólí",
        "rcshowhideanons": "$1 basáleli sóngóló",
        "rcshowhidemine": "$1 mbóngwana ya ngáí",
-       "rclinks": "Komɔ́nisa mbóngwana $1 ya nsúka o mikɔlɔ $2<br />$3",
+       "rclinks": "Komɔ́nisa mbóngwana $1 ya nsúka o mikɔlɔ $2",
        "diff": "mbó.",
        "hist": "mokóló",
        "hide": "kobomba",
index 15b6624..7b5cfb0 100644 (file)
@@ -9,12 +9,12 @@
                ]
        },
        "tog-underline": "ການຂີດເສັ້ນກ້ອງລິງກ໌:",
-       "tog-hideminor": "à»\80àº\8aືà»\88ອàº\87àº\81າàº\99à»\81àº\81à»\89à»\84àº\82à»\80ລັàº\81àº\99à»\89ອàº\8dà»\83àº\99à»\9cà»\89າàº\9bັàº\9aàº\9bຸງລ້າສຸດ",
+       "tog-hideminor": "à»\80àº\8aືà»\88ອàº\87àº\81າàº\99à»\81àº\81à»\89à»\84àº\82à»\80ລັàº\81àº\99à»\89ອàº\8dà»\83àº\99à»\9cà»\89າàº\81າàº\99àº\9bà»\88ຽàº\99à»\81àº\9bງລ້າສຸດ",
        "tog-hidepatrolled": "ເຊື່ອງການແກ້ໄຂທີ່ກວດສອບແລ້ວໃນໜ້າປັບປຸງລ້າສຸດ",
        "tog-newpageshidepatrolled": "ເຊື່ອງໜ້າທີ່ກວດສອບແລ້ວໃນລາຍການໜ້າໃໝ່",
        "tog-hidecategorization": "ເຊື່ອງການຈັດໝວດໝູ່ໜ້າ",
        "tog-extendwatchlist": "ຂະຫຍາຍລາຍການຕິດຕາມໃຫ້ສະແດງການປ່ຽນແປງທັງໝົດ, ບໍ່ແມ່ນພຽງການປ່ຽນແປງລ້າສຸດ",
-       "tog-usenewrc": "àº\88ັàº\94àº\81ຸà»\88ມàº\81າàº\99àº\9bà»\88ຽàº\99à»\81àº\9bàº\87à»\81àº\9aà»\88àº\87àº\95າມà»\9cà»\89າຢູà»\88à»\83àº\99ລາàº\8dàº\81າàº\99àº\9bັàº\9aàº\9bຸງລ້າສຸດແລະລາຍການຕິດຕາມ",
+       "tog-usenewrc": "àº\88ັàº\94àº\81ຸà»\88ມàº\81າàº\99àº\9bà»\88ຽàº\99à»\81àº\9bàº\87à»\81àº\9aà»\88àº\87àº\95າມà»\9cà»\89າຢູà»\88à»\83àº\99ລາàº\8dàº\81າàº\99àº\9bà»\88ຽàº\99à»\81àº\9bງລ້າສຸດແລະລາຍການຕິດຕາມ",
        "tog-numberheadings": "ກຳນົດເລກຫົວເລື່ອງອັດຕະໂນມັດ",
        "tog-showtoolbar": "ສະແດງແຖບເຄື່ອງມືແກ້ໄຂ",
        "tog-editondblclick": "ແກ້ໄຂໜ້າເມື່ອກົດສອງເທື່ອ",
        "login": "ເຂົ້າສູ່ລະບົບ",
        "login-security": "ຢືນຢັນຕົວຕົນຂອງທ່ານ",
        "nav-login-createaccount": "ເຂົ້າສູ່ລະບົບ / ສ້າງບັນຊີ",
-       "userlogin": "ເຂົ້າສູ່ລະບົບ / ສ້າງບັນຊີ",
-       "userloginnocreate": "ເຂົ້າສູ່ລະບົບ",
        "logout": "ອອກຈາກລະບົບ",
        "userlogout": "ອອກຈາກລະບົບ",
        "notloggedin": "ບໍ່ໄດ້ເຂົ້າສູ່ລະບົບ",
        "userlogin-noaccount": "ຍັງບໍ່ມີບັນຊີເທື່ອບໍ່?",
        "userlogin-joinproject": "ເຂົ້າຮ່ວມກັບ {{SITENAME}}",
-       "nologin": "ຍັງບໍ່ມີບັນຊີເທື່ອບໍ່? $1.",
-       "nologinlink": "ສ້າງບັນຊີໃໝ່",
        "createaccount": "ສ້າງບັນຊີ",
-       "gotaccount": "ມີບັນຊີແລ້ວບໍ? $1.",
-       "gotaccountlink": "ເຂົ້າສູ່ລະບົບ",
-       "userlogin-resetlink": "ລືມຂໍ້ມູນການເຂົ້າສູ່ລະບົບຂອງທ່ານບໍ່?",
        "userlogin-resetpassword-link": "ລືມລະຫັດຜ່ານຂອງທ່ານບໍ່?",
        "userlogin-helplink2": "ວິທີໃຊ້ການເຂົ້າສູ່ລະບົບ",
        "userlogin-loggedin": "ທ່ານໄດ້ເຂົ້າສູ່ລະບົບໃນຊື່ {{GENDER:$1|$1}} ແລ້ວ.\nກະລຸນາໃຊ້ແບບຟອມຂ້າງລຸ່ມເພື່ອເຂົ້າສູ່ລະບົບໃນຊື່ອື່ນໆ.",
        "createaccountmail": "ໃຊ້ລະຫັດຜ່ານແບບສຸ່ມຊົ່ວຄາວແລະສົ່ງມັນໄປໃຫ້ທີ່ຢູ່ອີເມວທີ່ລະບຸ",
+       "createacct-another-submit": "ສ້າງບັນຊີ",
        "badretype": "ລະຫັດຜ່ານທີ່ທ່ານໄດ້ພິມຄືນບໍ່ກົງກັບທີ່ພິມກ່ອນ.",
        "loginerror": "ຂໍ້ຜິດພາດໃນການເຂົ້າສູ່ລະບົບ",
        "createacct-error": "ຂໍ້ຜິດພາດໃນການສ້າງບັນຊີ",
        "minoredit": "ນີ້ແມ່ນການດັດແກ້ເລັກນ້ອຍ",
        "watchthis": "ຕິດຕາມໜ້ານີ້",
        "savearticle": "ບັນທຶກ",
+       "publishpage": "ເຜີຍແຜ່ໜ້າ",
+       "publishchanges": "ເຜີຍແຜ່ການປ່ຽນແປງ",
        "preview": "ລອງເບິ່ງຜົນ",
        "showpreview": "ລອງເບິ່ງຜົນ",
        "showdiff": "ສະແດງສ່ວນຕ່າງ",
        "skin-preview": "ລອງເບິ່ງ",
        "datedefault": "ແນວໃດກໍ່ໄດ້",
        "prefs-personal": "ຂໍ້ມູນຫຼັກຜູ້ໃຊ້",
-       "prefs-rc": "àº\81າàº\99àº\94ັàº\94à»\81àº\81à»\89ຫຼ້າສຸດ",
+       "prefs-rc": "àº\81າàº\99àº\9bà»\88ຽàº\99à»\81àº\9bàº\87ຫຼ້າສຸດ",
        "prefs-watchlist": "ລາຍການຕິດຕາມ",
        "prefs-watchlist-days": "ຈຳນວນມື້ສະແດງ ໃນ ລາຍການຕິດຕາມ:",
        "prefs-watchlist-edits": "ຈຳນວນການດັດແກ້ ສະແດງ ໃນ ລາຍການຕິດຕາມທີ່ຂະຫຍາຍອອກ:",
        "saveprefs": "ບັນທຶກ",
        "prefs-editing": "ການດັດແກ້",
        "searchresultshead": "ຊອກຫາ",
-       "recentchangesdays": "ຈຳນວນມື້ສະແດງໃນການປ່ຽນແປງຫຼ້າສຸດ:",
+       "recentchangesdays": "àº\88ຳàº\99ວàº\99ມືà»\89àº\97ີà»\88àº\88ະສະà»\81àº\94àº\87à»\83àº\99àº\81າàº\99àº\9bà»\88ຽàº\99à»\81àº\9bàº\87ຫຼà»\89າສຸàº\94:",
        "recentchangescount": "ຈຳນວນການແກ້ໄຂທີ່ຕ້ອງການສະແດງໂດຍປະລິຍາຍ:",
+       "prefs-help-recentchangescount": "ລາຍການນີ້ປະກອບດ້ວຍການປ່ຽນແປງຫຼ້າສຸດ, ປະຫວັດໜ້າ, ແລະບັນທຶກ.",
        "savedprefs": "ການຕັ້ງຄ່າຂອງທ່ານໄດ້ຖືກບັນທຶກແລ້ວ.",
        "timezonelegend": "ເຂດເວລາ:",
        "localtime": "ເວລາທ້ອງຖິ່ນ:",
        "rcshowhideliu": "$1 ຜູ້ໃຊ້ໄດ້ເຊັນເຂົ້າ",
        "rcshowhideanons": "$1 ຜູ້ໃຊ້ບໍ່ສະແດງຊື່",
        "rcshowhidemine": "$1 ການດັດແກ້ໂດຍຂ້ອຍ",
-       "rclinks": "ສະແດງ $1ການປ່ຽນແປງ ຫຼ້າສຸດ ໃນ  $2ມື້ຫຼ້າສຸດ<br />$3",
+       "rclinks": "ສະແດງ $1ການປ່ຽນແປງ ຫຼ້າສຸດ ໃນ  $2ມື້ຫຼ້າສຸດ",
        "diff": "ສ່ວນຕ່າງ",
        "hist": "ປະຫວັດ",
        "hide": "ເຊື່ອງ",
index 3b90e11..4f6e44d 100644 (file)
        "yourdomainname": "Zwa domeni:",
        "login": "Menuhile",
        "nav-login-createaccount": "Menuhile / ipupezi sebelu",
-       "userlogin": "Menuhile / ipupezi sebelu",
        "logout": "Ile",
        "userlogout": "Ile",
        "notloggedin": "Ile sa akwezi",
-       "nologin": "Ni menuhile? '''$1'''.",
-       "nologinlink": "Ipupezi sebelu",
        "createaccount": "Ipupezi sebelu",
-       "gotaccount": "Xete a sa sebelu? '''$1'''.",
-       "gotaccountlink": "Menuhile",
        "createaccountmail": "dimeli",
        "badretype": "Sebu dafi ni sa identikali.",
        "userexists": "Sebu di sebelu sa sebelize. Hloli veti sebu petuho.",
        "prefs-watchlist": "Mukoloko di kentezi",
        "saveprefs": "Bulukezi",
        "prefs-editing": "Hloli ye ng'i",
-       "rows": "Roo:",
-       "columns": "Kalom:",
        "searchresultshead": "Fatukile",
        "default": "auto",
        "prefs-files": "Imegini",
        "rcshowhideanons": "$1 IP",
        "rcshowhidepatr": "$1 afina patoli",
        "rcshowhidemine": "$1 zwa afina",
-       "rclinks": "Kamukile lapu-lila $1 petuhoni di lapu-lila $2 dia<br />$3",
+       "rclinks": "Kamukile lapu-lila $1 petuhoni di lapu-lila $2 dia",
        "diff": "petuho",
        "hist": "bundau",
        "hide": "Cwankekile",
index 4a39965..b003893 100644 (file)
        "externaldberror": "ئشتئڤایی د ئرتئڤاط ڤا رئسینە گا پیش ئوٙماە یا شوما صئلا یأنە کئ یئ گئل حئساڤ خارجی خوتوٙنە ڤئ هئنگوم سازی بأکیت ناریت.",
        "login": "ڤامین ئوٙمائن",
        "nav-login-createaccount": " ڤامین ئوٙمائن/راس کئردئن حئساڤ",
-       "userlogin": " ڤامین ئوٙمائن/راس کئردئن حئساڤ",
-       "userloginnocreate": "ڤامین ئوٙمائن",
        "logout": "د ساموٙنە دئرئوٙمائن",
        "userlogout": "د ساموٙنە دئرئوٙمائن",
        "notloggedin": "نأبوٙأ بیائیت ڤامین",
        "userlogin-noaccount": "یئ گئل حئساڤ ناریت؟",
        "userlogin-joinproject": "أندوم دیارگە {{SITENAME}} بوٙئیت",
-       "nologin": "یئ گئل حئساڤ کاریاری ناريت؟$1",
-       "nologinlink": "یئ گئل حئساڤ راس بأکیت",
        "createaccount": "حئساڤ راس بأکیت",
-       "gotaccount": "ئیسئنی حئساڤ کاریاری داریت؟$1",
-       "gotaccountlink": "ڤامین ئوٙمائن",
-       "userlogin-resetlink": "جوزییات ڤامین ئوٙمائنئ توٙنە د ڤیر بوردیتە؟",
        "userlogin-resetpassword-link": "رازینە گوڤاردئنتوٙ د ڤیرئتوٙ رأتە؟",
        "userlogin-helplink2": "هومیاری کئردئن د طأریق ڤامین ئوٙمائن",
        "userlogin-loggedin": "شوما ئیسئ چی یئ گئل {{GENDER:$1|$1}} ئوٙمایتە ڤامین.نوم بألگە هاری نە سی ڤامین ئوٙمائن چی یئ گئل کاریار هأنی بلگه هاری سی وا مین اومائن چی یه گل کاریار هنی ڤئ کار بئیریت.",
        "createacct-another-email-ph": "تیرنئشوٙن أنجومانامە توٙنە بأزأنیت",
        "createaccountmail": "یئ گئل رازینە گوڤاردئن موڤأقأتینە ڤئ کار بئیریت و ڤئ نەسی یئ گئل تیرنئشوٙن أنجومانامە تیار بییە کئل بأکیت.",
        "createacct-realname": "نوم راستأکی(مأژبوٙری نی)",
-       "createaccountreason": "دألیل:",
        "createacct-reason": "دألیل",
        "createacct-reason-ph": "سی چی شوما داریت یئ گئل حئساڤ هأنی راس میکید",
        "createacct-submit": "حئسأڤ خوتوٙنە راس بأکیت",
        "preview": "پيش سئيل",
        "showpreview": "نئشوٙ دأئن پیش سئیل",
        "showdiff": "نئشوٙ دأئن آلئشت کاریا",
-       "blankarticle": "<strong>زنئار:</strong> بلگه ای که شما دروس کردیته حالیه.\nار شما د نو ری \"{{int:savearticle}}\" بپورنیت, بلگه وه شکل که هیچ مینونه ای دش نبا دروس بوئه.",
+       "blankarticle": "<strong>زنئار:</strong> بلگه ای که شما دروس کردیته حالیه.\nار شما د نو ری \"$1\" بپورنیت, بلگه وه شکل که هیچ مینونه ای دش نبا دروس بوئه.",
        "anoneditwarning": "<strong>زئنار:</strong> شوما هأنی نیوٙمایتە ڤامین. تیرنئشوٙن آی پی شوما سی هأر گاتی کئ آلئشتکاری بأکیت سی کول خألک دیاری می کە. أر <strong>[$1 روئیت ڤامین]</strong> یا <strong>[$2 یئ گئل حئساڤ کاریاری راس بأکیت]</strong>، ڤیرایئشتیا شوما ڤئ نوم کاریاری خوتوٙ دیاری می کە و سی شوما بیتأرە.",
        "anonpreviewwarning": "<em>شوما نیوٙمایتە ڤامین. تیرنئشوٙن آی پی شوما د ڤیرگار ڤیرایئشت ئی بألگە ئمایە بوٙە.</em>",
-       "missingsummary": "<strong>ڤیر دیارکو:</strong> شوما هأنی یئ گئل چئکئسە ڤیرایئشتی نە نئها ئمایە کاری نأکئردیتە.\nأر شوما د نۊ د ری \"{{int:savearticle}}\" بأپوٙرنیت، ڤیرایئشت کاری شوما حالی ئمایە بوٙە.",
-       "selfredirect": "<strong>هوشدار:</strong> شوما د حال و بال ڤاگأردوٙنی ئی بألگە د خوش هیین.\nگاسی دال ئشتئڤایی سی ڤاگأردوٙنی ئنتئخاڤ کئردیتە، یا گاسی بألگە نە ئشتئڤایی ڤیرایئشت کاری می کیت.\nأر ری \"{{int:savearticle}}\" دۊ گئل بأپوٙرنیت، ڤاگأردوٙنی راس موٙە.",
+       "missingsummary": "<strong>ڤیر دیارکو:</strong> شوما هأنی یئ گئل چئکئسە ڤیرایئشتی نە نئها ئمایە کاری نأکئردیتە.\nأر شوما د نۊ د ری \"$1\" بأپوٙرنیت، ڤیرایئشت کاری شوما حالی ئمایە بوٙە.",
+       "selfredirect": "<strong>هوشدار:</strong> شوما د حال و بال ڤاگأردوٙنی ئی بألگە د خوش هیین.\nگاسی دال ئشتئڤایی سی ڤاگأردوٙنی ئنتئخاڤ کئردیتە، یا گاسی بألگە نە ئشتئڤایی ڤیرایئشت کاری می کیت.\nأر ری \"$1\" دۊ گئل بأپوٙرنیت، ڤاگأردوٙنی راس موٙە.",
        "missingcommenttext": "لوطف بأکیت ئیچئ ڤیر و باڤأرئ خوتوٙنە بأنیست.",
-       "missingcommentheader": "<strong>د ڤیر ڤونا:</strong> شوما هأنی یئ گئل داسوٙن/سأرڤأن سی ئی ڤیر و باڤأر نئها ئمایە نأکئردیتە.\nأر شوما یئ گئل هأنی ری \"{{int:savearticle}}\" بأپوٙرنیت، ڤیرایئشت کاری شوما حالی ئمایە بوٙە.",
+       "missingcommentheader": "<strong>د ڤیر ڤونا:</strong> شوما هأنی یئ گئل داسوٙن/سأرڤأن سی ئی ڤیر و باڤأر نئها ئمایە نأکئردیتە.\nأر شوما یئ گئل هأنی ری \"$1\" بأپوٙرنیت، ڤیرایئشت کاری شوما حالی ئمایە بوٙە.",
        "summary-preview": "چئکئسە پیش سئیل:",
        "subject-preview": "داسوٙن/پیش سئیل سأرخأط:",
        "previewerrortext": "یئ گئل خأطا د گاتی کئ شوما میهاستیت یئ گئل پیش سئل د آلئشتیاتوٙ داشتوٙین پیش ئوٙماە.",
        "editingsection": "د حال و بال ڤیرایئشت $1 (بأرجا$1)",
        "editingcomment": "د حال و بال ڤیرایئشت $1 (بأرجا تازە)",
        "editconflict": "ری ڤئ ری کاری د ڤیرایئشت: $1",
-       "explainconflict": "د گاتی کئ شوما شوروٙ د ڤیرایئشت کاری د بألگە کئردیتە، یئ کأس ھأنی ئی بألگە نئ آلئشت دئە.\nراساگە ڤارو نیسئسە بألگە، نیسئسە نە چی یە کئ ڤوجوٙد داشتوٙە د ڤأر گئرئتە.\nآلئشتکاریا شوم د نیسئسە ھاری دیاری میکە.\nشوما بایأد آلئشت کاریاتوٙنە د نیسئسە یی کئ ھیش سأریأک بأکیت.\nفأقأط نیسئسە یی کئ ھا د ڤارو د گاتی کئ شوما\"{{int:savearticle}}\" نە گوزارئشت میکیت ئمایە بوٙە.",
+       "explainconflict": "د گاتی کئ شوما شوروٙ د ڤیرایئشت کاری د بألگە کئردیتە، یئ کأس ھأنی ئی بألگە نئ آلئشت دئە.\nراساگە ڤارو نیسئسە بألگە، نیسئسە نە چی یە کئ ڤوجوٙد داشتوٙە د ڤأر گئرئتە.\nآلئشتکاریا شوم د نیسئسە ھاری دیاری میکە.\nشوما بایأد آلئشت کاریاتوٙنە د نیسئسە یی کئ ھیش سأریأک بأکیت.\nفأقأط نیسئسە یی کئ ھا د ڤارو د گاتی کئ شوما\"$1\" نە گوزارئشت میکیت ئمایە بوٙە.",
        "yourtext": "نیسئسە شوما",
        "storedversion": "ڤانئیأری ئمایە بییە",
        "nonunicodebrowser": "<strong>د ڤیرئتوٙبا:دوڤارتە نیأر شوما ڤا نیسئسە یا یوٙنیکود سازئگاری نارە.</strong>\nیئ گئل را حأل ڤئ کار گئرئتئ بییە سی یە کئ شوما بألگە یا نە ڤا أمنیأت ڤیرایئشت بأکیت:\nنیسئسە یا غئر-ASCII  د پایە رازینە یا 16 تایی سی توٙ دیاری میکە.",
        "right-editsemiprotected": "ویرایشت بلگه یا پر و پیم بیه چی «{{int:protect-level-autoconfirmed}}»",
        "right-editcontentmodel": "ویرایشت مدل مینونه یه گل بلگه",
        "right-editinterface": "راوط کاریار نه ویرایشت کو",
-       "right-editusercssjs": "جانیایا جاوا اسکریپت و سی اس اس کاریاریا هنی نه ویرایشت کو",
        "right-editusercss": "جانیایا سی اس اس کاریاریا هنی نه ویرایشت کو",
        "right-edituserjs": "جانیایا جاوا اسکریپت کاریاریا هنی نه ویرایشت کو",
        "right-editmyusercss": "جانیایا سی اس اس کاریار خوتو نه ویرایشت کو",
        "undeleteviewlink": "ديئن",
        "undeleteinvert": "انتخاو برعسك بوئه",
        "undeletecomment": "دألیل:",
-       "undeletedrevisions": "وانئری$1 د نو زنه{{PLURAL:$1|بی}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 وانئری|$1 وانئریا}} و{{PLURAL:$2|1 جانیا|$2 جانیا}} د نو زئنه بینه.",
-       "undeletedfiles": "{{PLURAL:$1|1 جانیا|$1 جانیایا}} د نو زنه بیه",
        "cannotundelete": "زنه کردن انجوم نبی:$1",
        "undeletedpage": "'''$1 د نو زنه بی'''\n\nسی دیئن پهرستنومه پاکساکاریا و د نو زنه کردنیا ایسنی روئیت د [[Special:Log/delete|پهرستنوم پاکساکاری]].",
        "undelete-header": "سی دیئن بلگه یا پاکسا بیه ایسنی [[Special:Log/delete|پهرستونمه پاکسا بیین]] نه سیل بکیت.",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|وه هنگوم سازی کرد}} سردیسیا نه د وانئری $4 د بلگه $3 ({{PLURAL:$7|اضاف کرد}} $6; {{PLURAL:$9|جا وه جاکاری کرد}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|وه هنگوم سازی کرد}} سردیسیا نه د پهرستنومه $4 د بلگه $3 ({{PLURAL:$7|اضاف کرد}} $6; {{PLURAL:$9|جا وه جاکاری کرد}} $8)",
        "rightsnone": "(هيش كوم)",
-       "revdelete-summary": "چکسه ویرایشت",
        "feedback-adding": "اضاف کردن هوال حون یار د بلگه....",
        "feedback-back": "دما",
        "feedback-bugcheck": "عالیه! فقط وارسی بکیت که د کنید که [$1 ایراتیا دیار بیه] نبا.",
index 656abe6..bb0588a 100644 (file)
        "anontalk": "Aptarimas",
        "navigation": "Naršymas",
        "and": "&#32;ir",
-       "qbfind": "Paieška",
-       "qbbrowse": "Naršymas",
-       "qbedit": "Taisyti",
-       "qbpageoptions": "Šis puslapis",
-       "qbmyoptions": "Mano puslapiai",
        "faq": "DUK",
-       "faqpage": "Project:DUK",
        "actions": "Veiksmai",
        "namespaces": "Vardų sritys",
        "variants": "Variantai",
        "searcharticle": "Rodyti",
        "history": "Puslapio istorija",
        "history_short": "Istorija",
+       "history_small": "istorija",
        "updatedmarker": "atnaujinta nuo paskutinio mano apsilankymo",
        "printableversion": "Versija spausdinimui",
        "permalink": "Nuolatinė nuoroda",
        "edit-local": "Redaguoti vietos aprašymą",
        "create": "Sukurti",
        "create-local": "Pridėti vietos aprašymą",
-       "editthispage": "Redaguoti šį puslapį",
-       "create-this-page": "Sukurti šį puslapį",
        "delete": "Trinti",
-       "deletethispage": "Ištrinti šį puslapį",
-       "undeletethispage": "Atkurti šį puslapį",
        "undelete_short": "Atkurti $1 {{PLURAL:$1:redagavimą|redagavimus|redagavimų}}",
        "viewdeleted_short": "Peržiūrėti $1 {{PLURAL:$1|ištrintą keitimą|ištrintus keitimus|ištrintų keitimų}}",
        "protect": "Užrakinti",
        "protect_change": "keisti",
-       "protectthispage": "Rakinti šį puslapį",
        "unprotect": "Keisti apsaugą",
-       "unprotectthispage": "Keisti šio puslapio apsaugą",
        "newpage": "Naujas puslapis",
-       "talkpage": "Aptarti šį puslapį",
        "talkpagelinktext": "Aptarimas",
        "specialpage": "Specialusis puslapis",
        "personaltools": "Asmeniniai įrankiai",
-       "articlepage": "Rodyti turinio puslapį",
        "talk": "Aptarimas",
        "views": "Peržiūros",
        "toolbox": "Įrankiai",
        "tool-link-userrights": "Keisti {{GENDER:$1|naudotojo|naudotojos}} grupes",
        "tool-link-userrights-readonly": "Žiūrėti {{GENDER:$1|vartotojo|vartotojos}} grupes",
        "tool-link-emailuser": "Siųsti {{GENDER:$1|šiam naudotojui|šiai naudotojai}} el. laišką",
-       "userpage": "Rodyti naudotojo puslapį",
-       "projectpage": "Rodyti projekto puslapį",
        "imagepage": "Žiūrėti failo puslapį",
        "mediawikipage": "Rodyti pranešimo puslapį",
        "templatepage": "Rodyti šablono puslapį",
        "preview": "Peržiūra",
        "showpreview": "Rodyti peržiūrą",
        "showdiff": "Rodyti skirtumus",
-       "blankarticle": "<strong>Dėmesio:</strong> Jūsų kuriamas straipsnis yra tuščias. Jei vėl paspausite \"{{int:savearticle}}\", puslapis bus sukurtas be jokio turinio.",
+       "blankarticle": "<strong>Dėmesio:</strong> Jūsų kuriamas straipsnis yra tuščias. Jei vėl paspausite \"$1\", puslapis bus sukurtas be jokio turinio.",
        "anoneditwarning": "<strong>Dėmesio:</strong> Jūs nesate prisijungęs. Jūsų IP adresas bus viešai matomas, jei atliksite kokius nors keitimus. Jeigu <strong>[$1 prisijungsite]</strong> arba <strong>[$2 sukursite paskyrą]</strong>, jūsų keitimai bus priskirti jūsų naudotojo vardui; drauge įgysite naujų galimybių.",
        "anonpreviewwarning": "''Jūs nesate prisijungęs. Išsaugojant jūsų IP adresas bus rodomas šio puslapio redagavimo istorijoje.''",
-       "missingsummary": "'''Priminimas:''' Jūs nenurodėte keitimo komentaro. Jei vėl paspausite „{{int:savearticle}}“, jūsų keitimas bus išsaugotas be jo.",
-       "selfredirect": "<strong>Dėmesio:</strong> Jūs nukreipiate puslapį atgal į jį patį. Galbūt parinkote netinkamą nukreipimo kreipinį arba taisote ne tą straipsnį. \nJei vėl paspausite \"{{int:savearticle}}\", šis nukreipimas vis vien bus sukurtas.",
+       "missingsummary": "'''Priminimas:''' Jūs nenurodėte keitimo komentaro. Jei vėl paspausite „$1“, jūsų keitimas bus išsaugotas be jo.",
+       "selfredirect": "<strong>Dėmesio:</strong> Jūs nukreipiate puslapį atgal į jį patį. Galbūt parinkote netinkamą nukreipimo kreipinį arba taisote ne tą straipsnį. \nJei vėl paspausite \"$1\", šis nukreipimas vis vien bus sukurtas.",
        "missingcommenttext": "Prašome įvesti komentarą.",
-       "missingcommentheader": "<strong>Priminimas:</strong> Jūs nenurodėte šio komentaro antraštės.\nJei vėl paspausite „{{int:savearticle}}“, jūsų keitimas bus įrašytas be jo.",
-       "summary-preview": "Komentaro peržiūra:",
+       "missingcommentheader": "<strong>Priminimas:</strong> Jūs nenurodėte šio komentaro antraštės.\nJei vėl paspausite „$1“, jūsų keitimas bus įrašytas be jo.",
+       "summary-preview": "Keitimo santraukos peržiūra:",
        "subject-preview": "Temos peržiūra:",
        "previewerrortext": "Įvyko klaida bandant peržiūrėti jūsų pakeitimus.",
        "blockedtitle": "Naudotojas yra užblokuotas",
        "editingsection": "Taisomas $1 (skyrelis)",
        "editingcomment": "Taisomas $1 (naujas skyrius)",
        "editconflict": "Redaguoti konfliktą: $1",
-       "explainconflict": "Kažkas kitas jau pakeitė puslapį nuo tada, kai jūs pradėjote jį redaguoti.\nViršutiniame tekstiniame lauke pateikta šiuo metu esanti puslapio versija.\nJūsų keitimai pateikti žemiau esančiame lauke.\nJums reikia sujungti jūsų pakeitimus su esančia versija.\nKai paspausite „{{int:savearticle}}“, bus įrašytas '''tik''' tekstas viršutiniame tekstiniame lauke.",
+       "explainconflict": "Kažkas kitas jau pakeitė puslapį nuo tada, kai jūs pradėjote jį redaguoti.\nViršutiniame tekstiniame lauke pateikta šiuo metu esanti puslapio versija.\nJūsų keitimai pateikti žemiau esančiame lauke.\nJums reikia sujungti jūsų pakeitimus su esančia versija.\nKai paspausite „$1“, bus įrašytas '''tik''' tekstas viršutiniame tekstiniame lauke.",
        "yourtext": "Jūsų tekstas",
        "storedversion": "Išsaugota versija",
        "nonunicodebrowser": "'''ĮSPĖJIMAS: Jūsų naršyklė nepalaiko unikodo. Kad būtų saugu redaguoti puslapį, ne ASCII simboliai redagavimo lauke bus rodomi kaip šešioliktainiai kodai.'''",
        "search-file-match": "(atitinka rinkmenos turinį)",
        "search-suggest": "Galbūt norėjote $1",
        "search-rewritten": "Rodomi $1 rezultatai. Vietoje to ieškoti $2.",
-       "search-interwiki-caption": "Dukteriniai projektai",
+       "search-interwiki-caption": "Dukterinių projektų rezultatai",
        "search-interwiki-default": "Rezultatai iš $1:",
        "search-interwiki-more": "(daugiau)",
+       "search-interwiki-more-results": "daugiau rezultatų",
        "search-relatedarticle": "Susiję",
        "searchrelated": "susiję",
        "searchall": "visi",
        "youremail": "El. paštas:",
        "username": "{{GENDER:$1|Naudotojo vardas}}:",
        "prefs-memberingroups": "{{PLURAL:$1|Grupės|Grupių}} {{GENDER:$2|narys|narė}}:",
+       "group-membership-link-with-expiry": "$1 (iki $2)",
        "prefs-registration": "Registravimosi laikas:",
        "yourrealname": "Tikrasis vardas:",
        "yourlanguage": "Sąsajos kalba:",
        "prefs-help-prefershttps": "Šis nustatymas suveiks kitą kartą prisijungiant.",
        "prefswarning-warning": "Jūs atlikote savo nustatymų pakeitimus, kurie dar nebuvo išsaugoti.\nJei paliksite puslapį nepaspaudę \"$1\", jūsų nustatymai nebus atnaujinti.",
        "prefs-tabs-navigation-hint": "Patarimas: galite naudoti kairės ir dešinės rodyklių ženkliukus, kad skirtukų sąraše judėtumėte tarp skirtukų.",
-       "userrights": "Naudotojų teisių valdymas",
-       "userrights-lookup-user": "Tvarkyti naudotojo grupes",
+       "userrights": "Naudotojų teisės",
+       "userrights-lookup-user": "Pasirinkti vartotoją",
        "userrights-user-editname": "Įveskite naudotojo vardą:",
-       "editusergroup": "Redaguoti {{GENDER:$1|naudotojo}} grupes",
+       "editusergroup": "Įkelti vartotojo grupes",
        "editinguser": "Redaguojamos {{GENDER:$1|naudotojo}} <strong>[[User:$1|$1]]</strong> $2 teisės",
-       "userrights-editusergroup": "Redaguoti naudotojų grupes",
-       "userrights-viewusergroup": "Žiūrėti naudotojo grupes",
+       "viewinguserrights": "Peržiūrimos {{GENDER:$1|naudotojo|naudotojos}} <strong>[[User:$1|$1]]</strong> $2 teisės",
+       "userrights-editusergroup": "Redaguoti {{GENDER:$1|naudotojo|naudotojos}} grupes",
+       "userrights-viewusergroup": "Žiūrėti {{GENDER:$1|naudotojo|naudotojos}} grupes",
        "saveusergroups": "Saugoti {{GENDER:$1|naudotojo}} grupes",
        "userrights-groupsmember": "Narys:",
        "userrights-groupsmember-auto": "Narys automatiškai:",
        "userrights-expiry-current": "Baigiasi $1",
        "userrights-expiry-none": "Nesibaigia",
        "userrights-expiry": "Baigiasi:",
+       "userrights-expiry-existing": "Egzistuojantis galiojimo laikas: $3, $2",
        "userrights-expiry-othertime": "Kitas laikas:",
+       "userrights-expiry-options": "1 diena:1 day,1 savaitė:1 week,1 mėnuo:1 month,3 mėnesiai:3 months,6 mėnesiai:6 months,1 metai:1 year",
+       "userrights-invalid-expiry": "„$1“ grupės galiojimo laikas negalimas.",
+       "userrights-expiry-in-past": "„$1“ grupės galiojimo laikas yra praeityje.",
        "userrights-conflict": "Naudotojo teisių konfliktas! Prašome dar kartą taikyti savo keitimus.",
        "group": "Grupė:",
        "group-user": "Naudotojai",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (taip pat žiūrėkite [[Special:NewPages|naujausių straipsnių sąrašą]])",
        "recentchanges-submit": "Rodyti",
        "rcfilters-activefilters": "Aktyvūs filtrai",
+       "rcfilters-quickfilters": "Išsaugoti filtro nustatymai",
+       "rcfilters-quickfilters-placeholder-title": "Nėra išsaugotų nuorodų",
+       "rcfilters-savedqueries-defaultlabel": "Išsaugoti filtrai",
+       "rcfilters-savedqueries-rename": "Pervadinti",
+       "rcfilters-savedqueries-setdefault": "Nustatyti kaip numatytą",
+       "rcfilters-savedqueries-unsetdefault": "Pašalinti kaip numatytą",
+       "rcfilters-savedqueries-remove": "Pašalinti",
+       "rcfilters-savedqueries-new-name-label": "Pavadinimas",
+       "rcfilters-savedqueries-apply-label": "Išsaugoti nustatymus",
+       "rcfilters-savedqueries-cancel-label": "Atšaukti",
+       "rcfilters-savedqueries-add-new-title": "Išsaugoti dabartinius filtro nustatymus",
+       "rcfilters-restore-default-filters": "Atstatyti numatytuosius filtrus",
        "rcfilters-clear-all-filters": "Valyti visus filtrus",
+       "rcfilters-search-placeholder": "Filtruoti naujausius pakeitimus (naršykite arba pradėkite rašyti)",
        "rcfilters-invalid-filter": "Negalimas filtras",
+       "rcfilters-empty-filter": "Nėra aktyvių filtrų. Rodomi visi indeliai.",
        "rcfilters-filterlist-title": "Filtrai",
        "rcfilters-filterlist-whatsthis": "Kas tai?",
+       "rcfilters-filterlist-feedbacklink": "Pateikite atsiliepimą apie naujus (beta) filtrus",
+       "rcfilters-highlightbutton-title": "Paryškinti rezultatus",
        "rcfilters-highlightmenu-title": "Pasirinkite spalvą",
+       "rcfilters-highlightmenu-help": "Pasirinkite spalvą šio elemento paryškinimui",
        "rcfilters-filterlist-noresults": "Nerastas toks filtras",
+       "rcfilters-noresults-conflict": "Nerasta jokių rezultatų, nes paieškos kriterijai konfliktuoja",
        "rcfilters-filtergroup-registration": "Vartotojo registracija",
        "rcfilters-filter-registered-label": "Registruoti",
+       "rcfilters-filter-registered-description": "Prisijungę redaktoriai.",
        "rcfilters-filter-unregistered-label": "Neregistruoti",
        "rcfilters-filter-unregistered-description": "Redaktoriai, kurie nėra prisijungę.",
        "rcfilters-filter-editsbyself-label": "Jūsų keitimai",
        "rcfilters-filter-editsbyself-description": "Jūsų keitimai.",
        "rcfilters-filter-editsbyother-label": "Kitų keitimai",
-       "rcfilters-filter-editsbyother-description": "Kaitimai sukurti kitų vartotojų (ne jūsų).",
+       "rcfilters-filter-editsbyother-description": "Visi keitimai, išskyrus jūsų.",
        "rcfilters-filtergroup-userExpLevel": "Patirties lygis (tik registruotiems vartotojams)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Naujokai",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Mažiau nei 10 keitimų ir 4 dienų aktyvumo.",
        "rcfilters-filter-user-experience-level-learner-label": "Mokiniai",
        "rcfilters-filter-user-experience-level-experienced-label": "Patyrę vartotojai",
        "rcfilters-filter-user-experience-level-experienced-description": "Daugiau nei 30 dienų veiklos ir 500 keitimų.",
+       "rcfilters-filtergroup-automated": "Automatiniai indeliai",
        "rcfilters-filter-bots-label": "Robotas",
        "rcfilters-filter-bots-description": "Keitimai, atlikti automatinių įrankių.",
        "rcfilters-filter-humans-label": "Žmogaus (ne roboto)",
        "rcfilters-filter-minor-description": "Keitimai, kuriuos autorius pažymėjo kaip mažus.",
        "rcfilters-filter-major-label": "Nesmulkūs pakeitimai",
        "rcfilters-filter-major-description": "Keitimai, nepažymėti kaip smulkūs.",
+       "rcfilters-filtergroup-watchlist": "Puslapiai, įtraukti į stebimų sąrašą",
+       "rcfilters-filter-watchlist-watched-label": "Stebimų sąraše",
+       "rcfilters-filter-watchlist-watched-description": "Pakeitimai puslapiuose, jūsų Stebimųjų sąraše.",
+       "rcfilters-filter-watchlist-watchednew-label": "Nauji Stebimųjų sąrašo pakeitimai",
+       "rcfilters-filter-watchlist-notwatched-label": "Nėra Stebimųjų sąraše",
        "rcfilters-filtergroup-changetype": "Pakeitimo tipas",
        "rcfilters-filter-pageedits-label": "Puslapių keitimai",
        "rcfilters-filter-newpages-label": "Puslapių sukūrimai",
        "rcfilters-filter-newpages-description": "Keitimai, kurie sukuria naujus puslapius.",
        "rcfilters-filter-categorization-label": "Kategorijų pakeitimai",
        "rcfilters-filter-categorization-description": "Įrašai puslapių, kurie yra pridedami ar pašalinami iš kategorijų.",
+       "rcfilters-filter-logactions-label": "Įrašyti veiksmai",
+       "rcfilters-filter-lastrevision-description": "Naujausias puslapio keitimas.",
+       "rcfilters-filter-previousrevision-description": "Visi keitimai, kurie nėra naujausi puslapio keitimai.",
        "rcnotefrom": "Žemiau yra {{PLURAL:$5|pakeitimas|pakeitimai}} pradedant <strong>$3, $4</strong> (rodoma iki <strong>$1</strong> pakeitimų).",
+       "rclistfromreset": "Nustatyti duomenų pasirinkimą iš naujo",
        "rclistfrom": "Rodyti naujus pakeitimus pradedant $3 $2",
        "rcshowhideminor": "$1 smulkius keitimus",
        "rcshowhideminor-show": "Rodyti",
        "rcshowhidecategorization": "$1 puslapių kategorizavimus",
        "rcshowhidecategorization-show": "Rodyti",
        "rcshowhidecategorization-hide": "Slėpti",
-       "rclinks": "Rodyti paskutinius $1 pakeitimų per paskutiniąsias $2 dienų<br />$3",
+       "rclinks": "Rodyti paskutinius $1 pakeitimų per paskutiniąsias $2 dienų",
        "diff": "skirt",
        "hist": "ist",
        "hide": "Slėpti",
        "unblocked-id": "Blokavimas $1 buvo pašalintas",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] buvo atblokuotas.",
        "blocklist": "Blokuoti naudotojai",
+       "autoblocklist-submit": "Ieškoti",
        "ipblocklist": "Blokuoti naudotojai",
        "ipblocklist-legend": "Rasti užblokuotą naudotoją",
        "blocklist-userblocks": "Slėpti paskyrų blokavimus",
        "api-error-emptypage": "Kurti naujus, tuščius puslapius neleidžiama.",
        "api-error-publishfailed": "Vidinė klaida: serveriui nepavyko paskelbti laikino failo.",
        "api-error-stashfailed": "Vidinė klaida: serveriui nepavyko išsaugoti laikinąjį failą.",
-       "api-error-unknown-warning": "Nežinomas įspėjimas: $1",
+       "api-error-unknown-warning": "Nežinomas įspėjimas: „$1“.",
        "api-error-unknownerror": "Nežinoma klaida: \"$1\"",
        "duration-seconds": "$1 {{PLURAL:$1|sekundė|sekundės|sekundžių}}",
        "duration-minutes": "$1 {{PLURAL:$1|minutė|minutės|minučių}}",
        "pagelang-reason": "Priežastis",
        "pagelang-submit": "Pateikti",
        "pagelang-nonexistent-page": "Puslapis $1 neegzistuoja.",
+       "pagelang-unchanged-language": "Puslapis $1 jau yra $2 kalba.",
+       "pagelang-unchanged-language-default": "$1 puslapis jau yra viki turinio numatyta kalba.",
        "pagelang-db-failed": "Duomenų bazei nepavyko pakeisti puslapio kalbos.",
        "right-pagelang": "Keisti puslapio kalbą",
        "action-pagelang": "keisti puslapio kalbą",
        "mw-widgets-titleinput-description-new-page": "puslapis dar neegzistuoja",
        "mw-widgets-titleinput-description-redirect": "nukreipti į $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Pridėti kategoriją...",
+       "mw-widgets-usersmultiselect-placeholder": "Pridėti daugiau...",
+       "date-range-from": "Nuo datos:",
+       "date-range-to": "Iki datos:",
        "sessionmanager-tie": "Negalima kombinuoti kelių užklausų autentikacijos tipų: $1.",
        "sessionprovider-generic": "$1 sesijos",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sesijos su slapukais",
index 78695da..1959540 100644 (file)
        "yourpassword": "Paroļs:",
        "login": "Dasaslāgt",
        "nav-login-createaccount": "Dasaslāgt / sataiseit jaunu lītuotuoju",
-       "userlogin": "Dasaslāgt / sataiseit jaunu lītuotuoju",
-       "userloginnocreate": "Dasaslāgt",
        "logout": "Atsaslāgt",
        "userlogout": "Atsaslāgt",
-       "nologinlink": "Registrētīs",
        "createaccount": "Sataiseit jaunu lītuotuoju",
-       "gotaccountlink": "Dasaslāgt",
-       "createaccountreason": "Īmesle:",
        "mailmypassword": "Atsyuteit maņ jaunu paroli",
        "loginlanguagelabel": "Volūda: $1",
        "changepassword": "Puormeit paroļu",
        "rcshowhideliu": "$1 dasaslāgtu lītuotuoju",
        "rcshowhideanons": "$1 anonimūs",
        "rcshowhidemine": "$1 munys puormejis",
-       "rclinks": "Paruodeit pādejuos $1 izmainis pādejūs $2 dīnu laikā.<br />$3",
+       "rclinks": "Paruodeit pādejuos $1 izmainis pādejūs $2 dīnu laikā.",
        "diff": "izmainis",
        "hist": "viesture",
        "hide": "Nūglobuot",
index d0fc2b3..c9a4c59 100644 (file)
@@ -4,7 +4,8 @@
                        "Lpachuau",
                        "RMizo",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Stephanecbisson"
                ]
        },
        "tog-underline": "Zawmna hnuairinna",
        "externaldberror": "Insawifiahna felfai lo a awm lo a nih loh vëk pawhin i pawnlam siangchan tihdanglam phalsak i ni lo a ni ang.",
        "login": "Luhna",
        "nav-login-createaccount": "Luhna / siangchan siamna",
-       "userlogin": "Luhna/Siangchan siamna",
-       "userloginnocreate": "Inziah luhna",
        "logout": "Chhuahna",
        "userlogout": "Chhuahna",
        "notloggedin": "I la lût lo",
-       "nologin": "Siangchan i la nei lo maw? $1.",
-       "nologinlink": "Siangchan siam rawh",
        "createaccount": "Siangchan siam rawh le",
-       "gotaccount": "Siangchan i nei tawh sa maw? $1.",
-       "gotaccountlink": "Luhna",
-       "userlogin-resetlink": "I inziahluhna i theihnghilh maw?",
        "createaccountmail": "E-lehkhathawnin",
-       "createaccountreason": "Chhan:",
        "badretype": "I thurûk ziahte a inmil lo.",
        "userexists": "Hmangtu hming hman tawh a ni.\nHming dang i thlan a ngai.",
        "loginerror": "Inziahluh sual",
        "showdiff": "Tihdanglam tihlanna",
        "anoneditwarning": "'''Vaukhanna:''' I inziaklût lo tlat.\nI chenhmun-IP he phêk chanchinah chhinchhian a ni ang.",
        "anonpreviewwarning": "''I inziaklût lo. I dahţhat chuan he phêk siamţhat chanchinah i chenhmun-IP hi chhinchhian a ni ang.''",
-       "missingsummary": "'''Hriat reng tur:''' I siamţhat tlangpui kaihtawina i lo ziak lo tlat.\n\"{{int:savearticle}}\" i hmeh leh chuan i thuziah hi a kaihtawina tel lovin dahţhat a ni ang.",
+       "missingsummary": "'''Hriat reng tur:''' I siamţhat tlangpui kaihtawina i lo ziak lo tlat.\n\"$1\" i hmeh leh chuan i thuziah hi a kaihtawina tel lovin dahţhat a ni ang.",
        "missingcommenttext": "Tuihnihna a hnuaiah khuan ziak rawh.",
-       "missingcommentheader": "'''Hriat reng tur:''' I tuihnihna thupui i pe lo.\n\"{{int:savearticle}}\"-ah i hmeh leh chuan i siamţhatna hi a thupui tel lovin dahţhat a ni ang.",
+       "missingcommentheader": "'''Hriat reng tur:''' I tuihnihna thupui i pe lo.\n\"$1\"-ah i hmeh leh chuan i siamţhatna hi a thupui tel lovin dahţhat a ni ang.",
        "summary-preview": "Kaihtawina endikna:",
        "subject-preview": "Thupui endikna:",
        "blockedtitle": "He hmangtu hi danbeh a ni",
        "saveprefs": "Dahţhatna",
        "restoreprefs": "A awmdàn siamsaah dah lêt vek rawh",
        "prefs-editing": "Siamţhat",
-       "rows": "Tlar:",
-       "columns": "Thlur:",
        "searchresultshead": "Zawnna",
        "stub-threshold-disabled": "Tihnun a ni lo",
        "recentchangesdays": "Tihdanglam thar ni tihlan tùr chin:",
        "userrights-reason": "Chhan:",
        "userrights-no-interwiki": "Wiki dangah hmangtute dikna-chanvo siam danglam theihna phalna i nei lo.",
        "userrights-nodatabase": "Database $1 a awm lo a nih loh pawhin khawtual thil a nih loh hmel.",
-       "userrights-nologin": "Hmangtu dikna-chanvo bithliah thei tùr chuan roreltu siangchanin i [[Special:UserLogin| luh]] a ngai.",
-       "userrights-notallowed": "I siangchanin hmangtu dikna-chanvo belh leh paih theihna phalna a nei lo.",
        "userrights-changeable-col": "I thlâk theih pawlte",
        "userrights-unchangeable-col": "I thlâk theih loh pawlte",
        "group": "Pawl:",
        "rcshowhideanons": "hming hriat loh $1",
        "rcshowhidepatr": "siamthat vil $1",
        "rcshowhidemine": "ka siamţhat $1",
-       "rclinks": "Ni $2 kaltaa tihdanglamna hnuhnung $1 tihlanna<br /> $3.",
+       "rclinks": "Ni $2 kaltaa tihdanglamna hnuhnung $1 tihlanna.",
        "diff": "dnglmn",
        "hist": "chanchin",
        "hide": "Tihbona",
index cf8b463..7dba2f2 100644 (file)
        "anontalk": "Diskusijas",
        "navigation": "Navigācija",
        "and": "&#32;un",
-       "qbfind": "Meklēšana",
-       "qbbrowse": "Navigācija",
-       "qbedit": "Labošana",
-       "qbpageoptions": "Šī lapa",
-       "qbmyoptions": "Manas lapas",
        "faq": "BUJ",
-       "faqpage": "Project:BUJ",
        "actions": "Darbības",
        "namespaces": "Vārdtelpas",
        "variants": "Varianti",
        "edit-local": "Labot vietējo aprakstu",
        "create": "Izveidot",
        "create-local": "Pievienot vietējo aprakstu",
-       "editthispage": "Izmainīt šo lapu",
-       "create-this-page": "Izveidot šo lapu",
        "delete": "Dzēst",
-       "deletethispage": "Dzēst šo lapu",
-       "undeletethispage": "Atjaunot šo lapu",
        "undelete_short": "Atjaunot $1 {{PLURAL:$1|versijas|versiju|versijas}}",
        "viewdeleted_short": "Apskatīt {{PLURAL:$1|$1 dzēstus labojumus|$1 dzēstu labojumu|$1 dzēstus labojumus}}",
        "protect": "Aizsargāt",
        "protect_change": "izmainīt",
-       "protectthispage": "Aizsargāt šo lapu",
        "unprotect": "Mainīt aizsardzību",
-       "unprotectthispage": "Mainīt šīs lapas aizsardzību",
        "newpage": "Jauna lapa",
-       "talkpage": "Diskusija par šo lapu",
        "talkpagelinktext": "Diskusija",
        "specialpage": "Īpašā Lapa",
        "personaltools": "Dalībnieka rīki",
-       "articlepage": "Apskatīt rakstu",
        "talk": "Diskusija",
        "views": "Apskates",
        "toolbox": "Rīki",
        "tool-link-userrights": "Mainīt {{GENDER:$1|dalībnieka|dalībnieces}} grupas",
        "tool-link-userrights-readonly": "Apskatīt {{GENDER:$1|dalībnieka|dalībnieces}} grupas",
        "tool-link-emailuser": "Nosūtīt e-pastu {{GENDER:$1|šim dalībniekam|šai dalībniecei}}",
-       "userpage": "Skatīt dalībnieka lapu",
-       "projectpage": "Skatīt projekta lapu",
        "imagepage": "Skatīt faila lapu",
        "mediawikipage": "Skatīt paziņojuma lapu",
        "templatepage": "Skatīt veidnes lapu",
        "redirectedfrom": "(Pāradresēts no $1)",
        "redirectpagesub": "Pāradresācijas lapa",
        "redirectto": "Pāradresēt uz:",
-       "lastmodifiedat": "Šajā lapā pēdējo izmaiņu izdarīšanas brīdis: $2, $1.",
+       "lastmodifiedat": "Šī lapa pēdējoreiz labota: $1 plkst. $2.",
        "viewcount": "Šī lapa ir tikusi apskatīta $1 {{PLURAL:$1|reizes|reizi|reizes}}.",
        "protectedpage": "Aizsargāta lapa",
        "jumpto": "Pārlēkt uz:",
        "createacct-yourpasswordagain-ph": "Vēlreiz ievadiet paroli",
        "userlogin-remembermypassword": "Atcerēties mani",
        "userlogin-signwithsecure": "Izmantot drošu savienojumu",
+       "cannotlogin-title": "Nevar pieslēgties",
+       "cannotlogin-text": "Pieslēgšanās nav iespējama.",
+       "cannotloginnow-title": "Šobrīd nevar pieslēgties",
        "cannotcreateaccount-title": "Nevar izveidot kontus",
        "yourdomainname": "Tavs domēns",
        "password-change-forbidden": "Šajā wiki paroles nevar mainīt.",
        "botpasswords-label-delete": "Dzēst",
        "botpasswords-label-resetpassword": "Atiestatīt paroli",
        "botpasswords-label-grants-column": "Piešķirts",
+       "botpasswords-bad-appid": "Bota nosaukums \"$1\" nav derīgs.",
        "botpasswords-created-title": "Bota parole izveidota",
        "botpasswords-updated-title": "Bota parole atjaunināta",
        "botpasswords-deleted-title": "Bota parole dzēsta",
        "passwordreset-emailtitle": "Konta informācija {{SITENAME}}",
        "passwordreset-emailelement": "Lietotājvārds: \n$1\n\nPagaidu parole: \n$2",
        "passwordreset-emailsentemail": "Paroles atiestatīšanas e-pasts ir nosūtīts.",
+       "passwordreset-nocaller": "Jānorāda izsaucējs",
        "passwordreset-nosuchcaller": "Izsaucējs nepastāv: $1",
        "passwordreset-invalidemail": "Nederīga e-pasta adrese",
        "changeemail": "Mainīt vai noņemt e-pasta adresi",
        "anonpreviewwarning": "''Tu neesi ienācis. Saglabājot lapu, Tava IP adrese tiks ierakstīta šīs lapas hronoloģijā.''",
        "missingsummary": "'''Atgādinājums''': Tu neesi norādījis izmaiņu kopsavilkumu. Vēlreiz klikšķinot uz \"Saglabāt lapu\", Tavas izmaiņas tiks saglabātas bez kopsavilkuma.",
        "missingcommenttext": "Lūdzu, ievadi tekstu zemāk redzamajā logā!",
-       "missingcommentheader": "'''Atgādinājums:''' Tu šim komentāram neesi norādījis virsrakstu/tematu.\nJa tu vēlreiz spiedīsi uz \"{{int:savearticle}}\", tavas izmaiņas tiks saglabātas bez virsraksta.",
-       "summary-preview": "Kopsavilkuma pirmskats:",
+       "missingcommentheader": "'''Atgādinājums:''' Tu šim komentāram neesi norādījis virsrakstu/tematu.\nJa tu vēlreiz spiedīsi uz \"$1\", tavas izmaiņas tiks saglabātas bez virsraksta.",
+       "summary-preview": "Labojuma kopsavilkuma priekšskatījums:",
        "subject-preview": "Temata pirmskats:",
        "blockedtitle": "Dalībnieks ir bloķēts.",
        "blockedtext": "'''Tavs lietotāja vārds vai IP adrese ir nobloķēta.'''\n\n$1 nobloķēja tavu lietotāja vārdu vai IP adresi.\nBloķējot norādītais iemesls bija: ''$2''.\n\n*Bloka sākums: $8\n*Bloka beigas: $6\n*Bija domāts nobloķēt: $7\n\nTu vari sazināties ar $1 vai kādu citu [[{{MediaWiki:Grouppage-sysop}}|administratoru]] lai apspriestu šo bloku.\n\nPievērs uzmanību, tam, ka ja tu neesi norādījis derīgu e-pasta adresi ''[[Special:Preferences|savās izvēlēs]]'', tev nedarbosies \"sūtīt e-pastu\" iespēja.\n\nTava IP adrese ir $3 un bloka identifikators ir #$5. Lūdzu iekļauj vienu no tiem, vai abus, visos turpmākajos pieprasījumos.",
        "editingsection": "Labot lapas \"$1\" sadaļu",
        "editingcomment": "Labot $1 (jauna sadaļa)",
        "editconflict": "Izmaiņu konflikts: $1",
-       "explainconflict": "Kāds cits ir izmainījis šo lapu pēc tam, kad tu sāki to mainīt.\nAugšējā teksta logā ir lapas teksts tā pašreizējā versijā.\nTevis veiktās izmaiņas ir redzamas apakšējā teksta logā.\nLai saglabātu savas izmaiņas, tev ir jāapvieno savs teksts ar saglabāto pašreizējo variantu.\nKad spiedīsi pogu \"{{int:savearticle}}\", tiks saglabāts '''tikai''' teksts, kas ir augšējā teksta logā.",
+       "explainconflict": "Kāds cits ir izmainījis šo lapu pēc tam, kad tu sāki to mainīt.\nAugšējā teksta logā ir lapas teksts tā pašreizējā versijā.\nTevis veiktās izmaiņas ir redzamas apakšējā teksta logā.\nLai saglabātu savas izmaiņas, tev ir jāapvieno savs teksts ar saglabāto pašreizējo variantu.\nKad spiedīsi pogu \"$1\", tiks saglabāts '''tikai''' teksts, kas ir augšējā teksta logā.",
        "yourtext": "Tavs teksts",
        "storedversion": "Saglabātā versija",
        "nonunicodebrowser": "'''Brīdinājums: Tavs pārlūks neatbalsta unikodu.\nIr pieejams risinājums, kas ļaus tev droši rediģēt lapas: zīmes, kas nav ASCII, parādīsies izmaiņu logā kā heksadecimāli kodi.'''",
        "invalid-content-data": "Nederīgi satura dati",
        "content-not-allowed-here": "\"$1\" saturs nav atļauts lapā [[$2]]",
        "editwarning-warning": "Atstājot šo lapu tu zaudēsi izdarītās izmaiņas. \nJa esi pieteicies, jūs vari atspējot šo brīdinājumu savās izvēlēs sadaļā \"rediģēšana\"",
+       "editpage-invalidcontentmodel-title": "Satura modelis nav atbalstīts",
+       "editpage-invalidcontentmodel-text": "Satura modelis \"$1\" nav atbalstīts.",
        "editpage-notsupportedcontentformat-title": "Satura formāts nav atbalstīts",
+       "editpage-notsupportedcontentformat-text": "Satura formātu $1 neatbalsta satura modelis $2.",
        "content-model-wikitext": "vikiteksts",
        "content-model-text": "vienkāršs teksts",
        "content-model-javascript": "JavaScript kods",
        "youremail": "Tava e-pasta adrese:",
        "username": "{{GENDER:$1|Lietotājvārds}}:",
        "prefs-memberingroups": "Pieder {{PLURAL:$1|grupai|grupām}}:",
+       "group-membership-link-with-expiry": "$1 (līdz $2)",
        "prefs-registration": "Reģistrēšanās datums:",
        "yourrealname": "Tavs īstais vārds:",
        "yourlanguage": "Valoda:",
        "prefs-displaywatchlist": "Pamatuzstādījumi",
        "prefs-diffs": "Izmaiņas",
        "prefs-help-prefershttps": "Šie uzstādījumi stāsies spēkā nākamajā pievienošanās reizē.",
-       "userrights": "Dalībnieku tiesību pārvaldība",
-       "userrights-lookup-user": "Pārvaldīt dalībnieka grupas",
+       "userrights": "Dalībnieka tiesības",
+       "userrights-lookup-user": "Izvēlēties dalībnieku",
        "userrights-user-editname": "Ievadi lietotājvārdu:",
-       "editusergroup": "Izmainīt {{GENDER:$1|dalībnieka|dalībnieces}} grupas",
+       "editusergroup": "Ielādēt dalībnieka grupas",
        "editinguser": "Izmainīt lietotāja '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) statusu",
-       "userrights-editusergroup": "Izmainīt lietotāja grupas",
+       "userrights-editusergroup": "Izmainīt {{GENDER:$1|dalībnieka|dalībnieces}} grupas",
+       "userrights-viewusergroup": "Apskatīt {{GENDER:$1|dalībnieka|dalībnieces}} grupas",
        "saveusergroups": "Saglabāt {{GENDER:$1|dalībnieka|dalībnieces}} grupas",
        "userrights-groupsmember": "Šobrīd ietilpst grupās:",
        "userrights-groupsmember-auto": "Netiešs dalībnieks:",
        "right-userrights-interwiki": "Mainīt dalīnieku tiesības citās Vikipēdijās",
        "right-siteadmin": "Bloķēt un atbloķēt datubāzi",
        "right-sendemail": "Sūtīt e-pastu citiem dalībniekiem",
+       "right-deletechangetags": "Dzēst [[Special:Tags|iezīmes]] no datubāzes",
+       "grant-generic": "\"$1\" tiesību paka",
        "grant-group-email": "Sūtīt e-pastu",
        "grant-createaccount": "Izveidot kontu",
        "grant-editmywatchlist": "Labot uzraugāmo rakstu sarakstu",
        "action-siteadmin": "bloķēt vai atbloķēt datubāzi",
        "action-sendemail": "sūtīt e-pastus",
        "nchanges": "$1 {{PLURAL:$1|izmaiņas|izmaiņa|izmaiņas}}",
+       "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|kopš pēdējā apmeklējuma}}",
        "enhancedrc-history": "vēsture",
        "recentchanges": "Pēdējās izmaiņas",
        "recentchanges-legend": "Pēdējo izmaiņu iespējas",
        "rcfilters-empty-filter": "Nav aktīvu filtru. Tiek rādītas visas izmaiņas.",
        "rcfilters-filterlist-title": "Filtri",
        "rcfilters-filterlist-whatsthis": "Kas tas ir?",
+       "rcfilters-filterlist-feedbacklink": "Sniedz atsauksmes par jaunajiem (bēta) filtriem",
        "rcfilters-highlightbutton-title": "Izcelt rezultātus",
        "rcfilters-highlightmenu-title": "Izvēlies krāsu",
        "rcfilters-highlightmenu-help": "Izvēlies krāsu, lai izceltu šo īpašību",
        "rcfilters-filter-registered-description": "Pieslēgušies redaktori.",
        "rcfilters-filter-unregistered-label": "Nereģistrēti",
        "rcfilters-filter-unregistered-description": "Nepieslēgušies redaktori.",
+       "rcfilters-filtergroup-authorship": "Devuma autors",
        "rcfilters-filter-editsbyself-label": "Tavi labojumi",
        "rcfilters-filter-editsbyself-description": "Tevis veiktie labojumi.",
        "rcfilters-filter-editsbyother-label": "Citu labojumi",
        "rcfilters-filter-editsbyother-description": "Citu dalībnieku veiktie labojumi (bez taviem).",
        "rcfilters-filtergroup-userExpLevel": "Pieredzes līmenis (tikai reģistrētiem dalībniekiem)",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Jaunpienācēji",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Mazāk nekā 10 labojumi un 4 aktīvas dienas.",
+       "rcfilters-filter-user-experience-level-learner-label": "Mācekļi",
+       "rcfilters-filter-user-experience-level-learner-description": "Vairāk aktīvo dienu un labojumu nekā \"Jaunpienācējiem\", bet mazāk nekā \"Pieredzējušiem dalībniekiem\".",
+       "rcfilters-filter-user-experience-level-experienced-label": "Pieredzējuši dalībnieki",
+       "rcfilters-filter-user-experience-level-experienced-description": "Vairāk nekā 30 aktivitāte un 500 labojumi.",
+       "rcfilters-filtergroup-automated": "Automatizēts devums",
+       "rcfilters-filter-bots-label": "Boti",
+       "rcfilters-filter-bots-description": "Ar automatizētiem rīkiem veikti labojumi.",
+       "rcfilters-filter-humans-label": "Cilvēki (ne boti)",
+       "rcfilters-filter-humans-description": "Cilvēku veikti labojumi.",
        "rcfilters-filtergroup-reviewstatus": "Pārskatīšanas statuss",
        "rcfilters-filter-patrolled-label": "Patrulēti",
        "rcfilters-filter-patrolled-description": "Labojumi, kas atzīmēti kā patrulēti.",
        "rcfilters-filter-categorization-description": "Ieraksti par lapu pievienošanu vai noņemšanu no kategorijām.",
        "rcfilters-filter-logactions-label": "Reģistrētās darbības",
        "rcfilters-filter-logactions-description": "Administratīvās darbības, kontu veidošana, lapu dzēšana, augšupielādes...",
+       "rcfilters-view-tags": "Iezīmes",
        "rcnotefrom": "Šobrīd redzamas izmaiņas kopš '''$2''' (parādītas ne vairāk par '''$1''').",
+       "rclistfromreset": "Atiestatīt datuma izvēli",
        "rclistfrom": "Parādīt jaunas izmaiņas kopš $3 $2",
        "rcshowhideminor": "$1 maznozīmīgos",
        "rcshowhideminor-show": "Rādīt",
        "rcshowhidecategorization": "$1 lapu kategorizēšanu",
        "rcshowhidecategorization-show": "Rādīt",
        "rcshowhidecategorization-hide": "Paslēpt",
-       "rclinks": "Parādīt pēdējās $1 izmaiņas pēdējās $2 dienās.<br />$3",
+       "rclinks": "Parādīt pēdējās $1 izmaiņas pēdējās $2 dienās",
        "diff": "izmaiņas",
        "hist": "hronoloģija",
        "hide": "paslēpt",
        "apisandbox-dynamic-parameters": "Papildu parametri",
        "apisandbox-dynamic-parameters-add-label": "Pievienot parametru:",
        "apisandbox-dynamic-parameters-add-placeholder": "Parametra nosaukums",
+       "apisandbox-deprecated-parameters": "Novecojuši parametri",
        "apisandbox-results": "Rezultāti",
        "apisandbox-request-url-label": "Pieprasījuma URL:",
        "apisandbox-request-json-label": "Pieprasījuma JSON:",
        "rollback-success": "Novērsu izmaiņas, ko izdarīja $1;\natjaunoju versiju, ko saglabāja $2.",
        "sessionfailure-title": "sesijas kļūda",
        "sessionfailure": "Ir radusies problēma ar sesijas autentifikāciju;\nšī darbība ir atcelta, lai novērstu lietotājvārda iespējami ļaunprātīgu izmantošanu.\nLūdzu, spied \"''back''\" un atjaunini iepriekšējo lapu. Tad mēģini vēlreiz.",
+       "changecontentmodel": "Mainīt lapas satura modeli",
+       "changecontentmodel-legend": "Mainīt satura modeli",
        "changecontentmodel-title-label": "Lapas nosaukums",
+       "changecontentmodel-model-label": "Jauns satura modelis",
        "changecontentmodel-reason-label": "Iemesls:",
        "changecontentmodel-submit": "Mainīt",
+       "changecontentmodel-success-title": "Satura modelis tika izmainīts",
+       "changecontentmodel-success-text": "[[:$1]] satura modelis tika izmainīts.",
        "protectlogpage": "Aizsargāšanas reģistrs",
        "protectedarticle": "aizsargāja \"[[$1]]\"",
        "modifiedarticleprotection": "izmainīja aizsardzības līmeni \"[[$1]]\"",
        "namespace": "Vārdtelpa:",
        "invert": "Izvēlēties pretēji",
        "namespace_association": "Saistītā vārdtelpa",
+       "tooltip-namespace_association": "Atzīmē šo rūtiņu, lai iekļautu diskusijas vai temata vārdtelpu, kas saistīta ar izvēlēto vārdtelpu",
        "blanknamespace": "(Pamatlapa)",
        "contributions": "{{GENDER:$1|Dalībnieka|Dalībnieces|Dalībnieka}} devums",
        "contributions-title": "Dalībnieka $1 devums",
        "sp-contributions-uploads": "augšupielādes",
        "sp-contributions-logs": "reģistri",
        "sp-contributions-talk": "diskusija",
-       "sp-contributions-userrights": "dalībnieka tiesību pārvaldība",
+       "sp-contributions-userrights": "{{GENDER:$1|dalībnieka|dalībnieces}} tiesību pārvaldība",
        "sp-contributions-blocked-notice": "Šis lietotājs pašlaik ir nobloķēts.\nPēdējais bloķēšanas reģistra ieraksts ir apskatāms zemāk:",
        "sp-contributions-blocked-notice-anon": "Šī IP adrese pašlaik ir nobloķēta.\nPēdējais bloķēšanas reģistra ieraksts ir apskatāms zemāk:",
        "sp-contributions-search": "Meklēt lietotāju veiktās izmaiņas",
        "tooltip-ca-nstab-category": "Apskatīt kategorijas lapu",
        "tooltip-minoredit": "Atzīmēt šo par maznozīmīgu labojumu",
        "tooltip-save": "Saglabāt veiktās izmaiņas",
+       "tooltip-publish": "Publicēt savas izmaiņas",
        "tooltip-preview": "Parādīt izmaiņu priekšskatījumu. Lūdzam izmantot šo iespēju pirms saglabāšanas.",
        "tooltip-diff": "Parādīt, kā esi izmainījis tekstu.",
        "tooltip-compareselectedversions": "Aplūkot atšķirības starp divām izvēlētajām lapas versijām.",
        "tooltip-watch": "Pievienot šo lapu uzraugāmo lapu sarakstam",
+       "tooltip-watchlistedit-normal-submit": "Noņemt nosaukumus",
+       "tooltip-watchlistedit-raw-submit": "Atjaunināt sarakstu",
        "tooltip-recreate": "Atjaunot lapu, lai arī tā ir bijusi izdzēsta",
        "tooltip-upload": "Sākt augšuplādi",
        "tooltip-rollback": "\"Novērst\" atceļ visas šī lietotāja izmaiņas vienā piegājienā",
        "pageinfo-article-id": "Lapas ID",
        "pageinfo-language": "Lappuses satura valoda",
        "pageinfo-content-model": "Lapas satura modelis",
+       "pageinfo-robot-policy": "Indeksācija ar robotiem",
+       "pageinfo-robot-index": "Atļauta",
+       "pageinfo-robot-noindex": "Aizliegta",
        "pageinfo-watchers": "Lapas uzraudzītāju skaits",
        "pageinfo-redirects-name": "Pāradresāciju skaits uz šo lapu",
        "pageinfo-subpages-name": "Šīs lapas apakšlapas",
        "newimages-summary": "Šeit var apskatīt pēdējos augšupielādētos failus.",
        "newimages-legend": "Filtrs",
        "newimages-label": "Faila nosaukums (vai tā daļa):",
+       "newimages-user": "IP adrese vai lietotājvārds",
        "newimages-showbots": "Parādīt botu augšupielādētos failus",
        "newimages-hidepatrolled": "Paslēpt pārbaudītās augšupielādes",
        "noimages": "Nav nekā ko redzēt.",
        "hours": "{{PLURAL:$1|$1 stundas|$1 stunda|$1 stundas}}",
        "days": "{{PLURAL:$1|$1 dienas|$1 diena|$1 dienas}}",
        "ago": "pirms $1",
-       "monday-at": "Pirmdiena $1",
+       "just-now": "tikko",
+       "hours-ago": "pirms $1 {{PLURAL:$1|stundām|stundas|stundām}}",
+       "minutes-ago": "pirms $1 {{PLURAL:$1|minūtēm|minūtes|minūtēm}}",
+       "seconds-ago": "pirms $1 {{PLURAL:$1|sekundēm|sekundes|sekundēm}}",
+       "monday-at": "Pirmdien $1",
+       "tuesday-at": "Otrdien $1",
+       "wednesday-at": "Trešdien $1",
+       "thursday-at": "Ceturtdien $1",
+       "friday-at": "Piektdien $1",
+       "saturday-at": "Sestdien $1",
+       "sunday-at": "Svētdien $1",
+       "yesterday-at": "Vakar $1",
        "bad_image_list": "Formāts:\n\nTiek ņemti vērā tikai ieraksti rindiņā kas sākas ar *\nPirmajai saitei rindiņā ir jābūt uz attiecīgo failu\nJebkuras sekojošas saites tiks uzskatītas par izņēmumiem t.i. lapām kurās fails drīkt tikt izmantots",
        "metadata": "Metadati",
        "metadata-help": "Šis fails satur papildu informāciju, kuru visticamāk ir pievienojis digitālais fotoaparāts vai skeneris, kas šo failu izveidoja. Ja šis fails pēc tam ir ticis modificēts, šie dati var neatbilst izmaiņām (var būt novecojuši).",
        "confirmemail_success": "Tava e-pasta adrese ir apstiprināta.\nTagad 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_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.\n\nLai apstiprinatu, ka so lietotaja vardu esi izveidojis tu pats, un aktivizetu e-pasta izmantosanu {{SITENAME}}, atver so saiti sava interneta parluka:\n\n$3\n\nJa tu *neesi* registrejis sadu lietotaja vardu, atver sho saiti savaa interneta browserii, lai atceltu shiis e-pasta adreses apstiprinaashanu:\n\n$5\n\nSi apstiprinajuma koda deriguma termins ir $4.",
+       "confirmemail_body": "Kāds, iespējams, tu pats, no IP adreses $1 ir reģistrējis {{grammar:ģenitīvs|{{SITENAME}}}} lietotāja vārdu \"$2\" ar šo e-pasta adresi.\n\nLai apstiprinātu, ka šo lietotāja vārdu esi izveidojis tu pats, un aktivizētu e-pasta izmantošanu {{SITENAME}}, atver šo saiti savā interneta pārlūkprogrammā:\n\n$3\n\nJa tu *neesi* reģistrējis šādu lietotāja vārdu, atver šo saiti savā interneta pārlūkprogrammā, lai atceltu šīs e-pasta adreses apstiprināšanu:\n\n$5\n\nŠi apstiprinājuma koda derīguma termiņš ir $4.",
        "confirmemail_invalidated": "E-pasta adreses apstiprināšana atcelta",
        "invalidateemail": "Atcelt e-pasta adreses apstiprināšanu",
        "scarytranscludedisabled": "[Starpviki saišu iekļaušana ir atspējota.]",
        "deletedwhileediting": "'''Brīdinājums:''' Šī lapa tika izdzēsta, pēc tam, kad tu to sāki izmainīt!",
        "confirmrecreate": "Lietotājs [[User:$1|$1]] ([[User talk:$1|diskusija]]) izdzēsa šo lapu, pēc tam, kad tu to biji sācis rediģēt, ar iemeslu:\n: ''$2''\nLūdzu apstiprini, ka tiešām gribi izveidot šo lapu no jauna.",
        "recreate": "Izveidot no jauna",
+       "confirm-purge-title": "Atjaunināt šo lapu",
        "confirm_purge_button": "Labi",
        "confirm-purge-top": "Iztīrīt šīs lapas kešu (''cache'')?",
        "confirm-purge-bottom": "Lapas atjaunināšana iztīra kešatmiņu un liek parādīt lapas jaunāko versiju.",
        "watchlistedit-raw-legend": "Izmainīt uzraugāmo rakstu saraksta kodu",
        "watchlistedit-raw-explain": "Uzraugāmo rakstu sarakstā esošās lapas ir redzamas zemāk, un šo sarakstu var izmainīt lapas pievienojot vai izdzēšot no saraksta;\nkatrai rindai te atbilst viena lapa.\nTad, kad pabeigts, uzspied Atjaunot sarakstu.\nVar arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].",
        "watchlistedit-raw-titles": "Lapas:",
-       "watchlistedit-raw-submit": "Atjaunot sarakstu",
+       "watchlistedit-raw-submit": "Atjaunināt sarakstu",
        "watchlistedit-raw-done": "Tavs uzraugāmo rakstu saraksts tika atjaunots.",
        "watchlistedit-raw-added": "{{PLURAL:$1|$1 lapas tika pievienotas|$1 lapa tika pievienota|$1 lapas tika pievienotas}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|$1 lapas tika noņemtas|1 lapa tika noņemta|$1 lapas tika noņemtas}}:",
        "authmanager-realname-label": "Tavs īstais vārds",
        "authmanager-realname-help": "Dalībnieka īstais vārds",
        "authprovider-resetpass-skip-label": "Izlaist",
-       "specialpage-securitylevel-not-allowed-title": "Nav atļauts"
+       "specialpage-securitylevel-not-allowed-title": "Nav atļauts",
+       "credentialsform-account": "Konta nosaukums:"
 }
index 81906f6..a0f331d 100644 (file)
@@ -22,7 +22,8 @@
                        "Macofe",
                        "Bowleerin",
                        "SolidBlock",
-                       "Suchichi02"
+                       "Suchichi02",
+                       "逆襲的天邪鬼"
                ]
        },
        "tog-underline": "鏈墊線:",
        "category_header": "「$1」中之頁",
        "subcategories": "次類",
        "category-media-header": "「$1」中之媒",
-       "category-empty": "''無頁或媒也。''",
+       "category-empty": "<em>斯類無屬也。</em>",
        "hidden-categories": "$1隱類",
        "hidden-category-category": "隱類",
        "category-subcat-count": "{{PLURAL:$2|類有子類如下。|類有$1子類,轄下子類數$2也。}}",
        "anontalk": "議",
        "navigation": "導",
        "and": "與",
-       "qbfind": "尋",
-       "qbbrowse": "覽",
-       "qbedit": "纂",
-       "qbpageoptions": "此頁",
-       "qbmyoptions": "吾好",
        "faq": "頻答問",
-       "faqpage": "Project:頻答問",
        "actions": "動",
        "namespaces": "名集",
        "variants": "變字",
        "history": "誌",
        "history_short": "誌",
        "updatedmarker": "新也",
-       "printableversion": "印本",
+       "printableversion": "付梓",
        "permalink": "恆通",
        "print": "印",
        "view": "察",
        "edit-local": "纂地言",
        "create": "立",
        "create-local": "增地言",
-       "editthispage": "纂",
-       "create-this-page": "立",
        "delete": "刪",
-       "deletethispage": "刪是頁",
-       "undeletethispage": "反刪此頁",
        "undelete_short": "還$1已刪",
        "viewdeleted_short": "察$1已刪",
        "protect": "緘",
        "protect_change": "易",
-       "protectthispage": "緘封",
        "unprotect": "啟",
-       "unprotectthispage": "啟函",
        "newpage": "新頁",
-       "talkpage": "參議此文",
        "talkpagelinktext": "議",
        "specialpage": "特查",
        "personaltools": "家私",
-       "articlepage": "閱內文",
        "talk": "議",
        "views": "覽",
        "toolbox": "多寶",
-       "userpage": "簿",
-       "projectpage": "計畫",
        "imagepage": "述",
        "mediawikipage": "觀訊",
        "templatepage": "鑄模",
        "poolcounter-usage-error": "用誤:$1",
        "aboutsite": "述{{SITENAME}}",
        "aboutpage": "Project:述",
-       "copyright": "文奉$1行。",
+       "copyright": "若無他述,諸文皆奉$1以行。",
        "copyrightpage": "{{ns:project}}:版權",
        "currentevents": "世事",
        "currentevents-url": "Wikipedia:世事",
        "virus-badscanner": "壞設:不明之病掃:''$1''",
        "virus-scanfailed": "敗掃(碼$1)",
        "virus-unknownscanner": "不明之反毒:",
-       "logouttext": "'''子去簿矣'''\n\n子可匿名還覽{{SITENAME}},或<span class='plainlinks'>[$1 復登]</span>同簿、異簿。\n未清謄本,覽器文舊,且慎之。",
+       "logouttext": "<strong>業已出籍</strong>\n\n如見籍名未除,請清舊錄。",
        "welcomeuser": "$1居,惠迎!",
        "welcomecreation-msg": "汝簿建矣。\n\n請更汝「{{SITENAME}}」[[Special:Preferences|焉]]。",
        "yourname": "名",
        "yourpasswordagain": "復核節",
        "createacct-yourpasswordagain": "訂子符節",
        "createacct-yourpasswordagain-ph": "復告符節",
-       "userlogin-remembermypassword": "保我簿登",
+       "userlogin-remembermypassword": "籍記不除",
        "userlogin-signwithsecure": "以安全伺服登簿",
        "yourdomainname": "汝之網域",
        "password-change-forbidden": "符節不能改乎此維基也。",
        "externaldberror": "認庫之錯,或禁更汝之外簿。",
-       "login": "ç\99»ç°¿",
+       "login": "ç±\8då\90\8d",
        "nav-login-createaccount": "登簿、增簿",
-       "userlogin": "登簿、增簿",
-       "userloginnocreate": "登簿",
-       "logout": "去簿",
-       "userlogout": "去簿",
+       "logout": "出籍",
+       "userlogout": "出籍",
        "notloggedin": "尚未登簿",
        "userlogin-noaccount": "尚無簿乎?",
        "userlogin-joinproject": "入{{SITENAME}}",
-       "nologin": "尚無簿乎?惠往$1。",
-       "nologinlink": "增簿",
        "createaccount": "增簿",
-       "gotaccount": "已有簿矣?惠往$1。",
-       "gotaccountlink": "登簿",
-       "userlogin-resetlink": "汝忘登簿所需?",
        "userlogin-resetpassword-link": "亡子符節?",
-       "userlogin-helplink2": "å\8a©ä»¥ç\99»ç°¿",
+       "userlogin-helplink2": "å\8d\94å\8a©",
        "userlogin-createanother": "增另一簿",
        "createacct-emailrequired": "電郵",
        "createacct-emailoptional": "電郵(可選)",
        "createacct-email-ph": "書君郵址",
        "createaccountmail": "同郵",
        "createacct-realname": "實名(可選)",
-       "createaccountreason": "因:",
        "createacct-reason": "因:",
        "createacct-reason-ph": "汝另立一簿者何哉?",
        "createacct-submit": "增簿",
        "createacct-benefit-body3": "是月纂者",
        "badretype": "符節不合也。",
        "userexists": "簿名見用矣,惠更之。",
-       "loginerror": "ç\99»ç°¿ç\94\9f誤",
+       "loginerror": "ç±\8då\90\8dè¦\8b誤",
        "createacct-error": "建簿未成",
        "createaccounterror": "無增簿:$1",
        "nocookiesnew": "{{SITENAME}}簿增而未登,惠准存 cookies ,方可登之。",
-       "nocookieslogin": "欲登簿{{SITENAME}},需允 cookies 之存,惠准後方可登。",
+       "nocookieslogin": "無簿冊(cookies),無以籍名於{{SITENAME}}。\n請予簿冊,復行籍記。",
        "nocookiesfornew": "簿未建,眾乃未定源之。\n汝其啟之,重載,繼而予一試。",
        "noname": "缺簿名,或不格也。",
        "loginsuccesstitle": "登簿成矣",
        "login-abort-generic": "登簿未成——棄",
        "loginlanguagelabel": "語:$1",
        "suspicious-userlogout": "爾欲無離也,可由壞瀏覽器或快枝代理呈送之。",
-       "pt-login": "ç\99»ç°¿",
+       "pt-login": "ç±\8då\90\8d",
        "pt-login-button": "登簿",
        "pt-createaccount": "增簿",
-       "pt-userlogout": "å\8e»ç°¿",
+       "pt-userlogout": "å\87ºç±\8d",
        "php-mail-error-unknown": "於 PHP mail() 參數現錯",
        "user-mail-no-addy": "遣函豈能無址?",
        "user-mail-no-body": "試遞一空或過短郵",
        "showdiff": "示異",
        "anoneditwarning": "'''警示:'''子未登簿,若確纂,IP將誌。茍[$1 登]或[$2 開戶口],是纂欲存以子名,及他效。",
        "anonpreviewwarning": "''子未登簿,IP將誌。''",
-       "missingsummary": "'''醒示:'''子未概之,復「{{int:savearticle}}」則文倍焉。",
+       "missingsummary": "'''醒示:'''子未概之,復「$1」則文倍焉。",
        "missingcommenttext": "請贊之",
-       "missingcommentheader": "'''醒示:'''子未概標之,復「{{int:savearticle}}」則文倍焉。",
+       "missingcommentheader": "'''醒示:'''子未概標之,復「$1」則文倍焉。",
        "summary-preview": "覽概:",
        "subject-preview": "覽題:",
        "blockedtitle": "汝見禁矣",
        "confirmedittext": "驛證方可纂文。惠見[[Special:Preferences|簿註]]。",
        "nosuchsectiontitle": "無尋節",
        "nosuchsectiontext": "爾纂之節無存也。\n機以察時遷或刪之。",
-       "loginreqtitle": "須登簿",
+       "loginreqtitle": "務須籍名",
        "loginreqlink": "登簿",
        "loginreqpagetext": "$1以覽它頁。",
        "accmailtitle": "符節傳矣",
-       "accmailtext": "\"$1\"之新符節至$2矣\n\n此符節可於登簿後改",
+       "accmailtext": "為[[User talk:$1|$1]]所新造符節,已予$2。籍名以後,可更易於<em>[[Special:ChangePassword|change password]]</em>。",
        "newarticle": "撰",
        "newarticletext": "此頁尚缺。欲補,撰於下,有惑見[$1 助]。\n誤入者,返前即可。",
-       "anontalkpagetext": "----''此匿論也,為未簿或不簿者設,IP俱錄以辨人焉。然IP不獨,恐生亂象,不喜惠[[Special:CreateAccount|增]][[Special:UserLogin|登簿]]遠之。",
+       "anontalkpagetext": "----\n<em>此匿論也,為未簿或不簿者設。</em>IP俱錄以辨人焉。然IP不獨,恐生亂象,不喜惠[[Special:CreateAccount|增]][[Special:UserLogin|登簿]]遠之。",
        "noarticletext": "查無此文。[[Special:Search/{{PAGENAME}}|尋題]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 尋誌],\n或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 纂頁]</span>。",
        "noarticletext-nopermission": "查無此文。[[Special:Search/{{PAGENAME}}|尋題]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 尋誌],\n或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 纂頁]</span>。",
        "userpage-userdoesnotexist": "「<nowiki>$1</nowiki>」之簿未增也。請建纂本頁前查之。",
        "editingsection": "纂節$1",
        "editingcomment": "撰$1",
        "editconflict": "纂沖$1",
-       "explainconflict": "子纂與他人沖,上者時也,下者子也,望子合之。\n註,'''{{int:savearticle}}'''上文儲焉",
+       "explainconflict": "子纂與他人沖,上者時也,下者子也,望子合之。\n註,'''$1'''上文儲焉",
        "yourtext": "子也",
        "storedversion": "時也",
        "nonunicodebrowser": "'''警示:覽器不識萬國碼,以十六進位數代之,以保纂可也。'''",
        "longpageerror": "'''警示:文長$1仟位元組,越幅$2,未能儲焉。'''",
        "readonlywarning": "'''警示:修庫藏,存儲謝焉。惠謄文備用之。'''\n\n鎖者曰:「$1」",
        "protectedpagewarning": "'''警示:庫藏錮矣,惟有秩纂之。'''\n近誌下曰參詳之:",
-       "semiprotectedpagewarning": "'''註記'''庫藏錮矣,惟登簿纂之。\n近誌下曰參詳之:",
+       "semiprotectedpagewarning": "'''註記'''庫藏錮矣,籍名以纂。\n近誌如下,以供參考:",
        "cascadeprotectedwarning": "'''警示:'''此頁錮矣,唯有秩纂之,乃因{{PLURAL:$1|一|多}}頁連誅之:",
        "titleprotectedwarning": "'''警告:此頁錮矣,乃需[[Special:ListGroupRights|權]]用之。'''\n近誌下曰參詳之:",
        "templatesused": "此文用{{PLURAL:$1|模|模}} :",
        "previousrevision": "←舊",
        "nextrevision": "新→",
        "currentrevisionlink": "今審",
-       "cur": "今",
+       "cur": "今",
        "next": "後",
        "last": "前",
        "page_first": "首",
        "saveprefs": "儲",
        "restoreprefs": "重修",
        "prefs-editing": "在修",
-       "rows": "行數:",
-       "columns": "列數:",
        "searchresultshead": "尋",
        "stub-threshold": "<a href=\"#\" class=\"stub\">短頁連</a>格式門檻(位元組):",
        "stub-threshold-sample-link": "例",
        "userrights-reason": "因:",
        "userrights-no-interwiki": "爾無權改他山wiki之簿權也。",
        "userrights-nodatabase": "資料庫$1無存或非本地也。",
-       "userrights-nologin": "爾以有秩乲簿[[Special:UserLogin|登]]後以定簿之權也。",
-       "userrights-notallowed": "子之簿無權定簿之權也。",
        "userrights-changeable-col": "爾所管轄",
        "userrights-unchangeable-col": "非爾所轄",
        "userrights-irreversible-marker": "$1*",
        "right-protect": "改錮級與纂錮頁",
        "right-editprotected": "纂錮頁(無連錮)",
        "right-editinterface": "纂要",
-       "right-editusercssjs": "纂他簿之CSS與JavaScript檔",
        "right-editusercss": "纂他簿之CSS檔",
        "right-edituserjs": "纂他簿之JavaScript檔",
        "right-rollback": "速復上簿頁之纂",
        "rcshowhidemine-hide": "藏",
        "rcshowhidecategorization-show": "示",
        "rcshowhidecategorization-hide": "藏",
-       "rclinks": "$2日內$1近易。<br />$3",
+       "rclinks": "$2日內$1近易。",
        "diff": "辨",
        "hist": "誌",
        "hide": "藏",
        "categories": "類",
        "categoriespagetext": "大典{{PLURAL:$1|類中}}有頁或媒。\n[[Special:UnusedCategories|未類]]無示之。\n閱[[Special:WantedCategories|需類]]也。",
        "categoriesfrom": "示此項起之類:",
-       "deletedcontributions": "å·²å\88ªä¹\8bç©\8d",
+       "deletedcontributions": "å·²å\8e»ä¹\8bæ\96\87",
        "deletedcontributions-title": "所棄之事",
        "sp-deletedcontributions-contribs": "積",
        "linksearch": "尋網連",
        "watchlistfor2": "$1之哨 $2",
        "nowatchlist": "無哨",
        "watchlistanontext": "登簿以治哨",
-       "watchnologin": "æ\9cªç\99»ç°¿",
+       "watchnologin": "æ\9c\89å¾\85ç±\8då\90\8d",
        "addwatch": "增至哨站",
        "addedwatchtext": "\"[[:$1]]\"哨派矣。後有易、議者可見於[[Special:Watchlist|哨站]],且'''粗體'''列於[[Special:RecentChanges|近易]]。",
        "removedwatchtext": "\"[[:$1]]\"[[Special:Watchlist|哨]]撤矣。",
        "deletecomment": "因:",
        "deleteotherreason": "另/附之因:",
        "deletereasonotherlist": "另因",
-       "deletereason-dropdown": "*常å\88ªä¹\8bå\9b \n** ä½\9cè\80\85ä¹\8bæ±\82\n** ä¾µç\89\88æ¬\8a\n** ç ´å£\9e",
+       "deletereason-dropdown": "*å\88ªå\89\8a常å\9b \n** å»£å\91\8a宣å\82³\n** æ¯\80å£\9eé \81é\9d¢\n** æ\90\8d害ç\89\88æ¬\8a\n** ä½\9cè\80\85è«\8bæ±\82\n** æ\96·æ¸¡",
        "delete-edit-reasonlist": "纂刪因",
        "delete-toobig": "此頁含大誌,過$1修。刪頁限矣,防於{{SITENAME}}之亂也。",
        "delete-warning-toobig": "此頁含大誌,過$1修。刪之可亂{{SITENAME}}之事也;續時留神之。",
        "revertpage-nouser": "去(刪簿)之作為[[User:$1|$1]]之本耳",
        "rollback-success": "去$1之作,復為$2之本耳。",
        "sessionfailure-title": "登段敗也",
-       "sessionfailure": "ç\99»ç°¿æ\9c\89è®\8aã\80\82ç\82ºé\98²ç\9b\9cç°¿ï¼\8cè¿\94å\89\8dé\87\8då\8f\96å\86\8dç\82ºä¹\8b。",
+       "sessionfailure": "ç°¿ç±\8dæ\9c\89ç\95°ï¼\8cç\82ºé\98²ç\9b\9cç\94¨ï¼\8cæ\9a«ä¸\8då\87\86è¡\8cã\80\82è«\8b復è¿\94å\86\8d試。",
        "protectlogpage": "誌緘",
        "protectlogtext": "誌緘如下;近緘見[[Special:ProtectedPages|此]] 。",
        "protectedarticle": "緘焉\"[[$1]]\"",
        "undeleteviewlink": "察",
        "undeleteinvert": "反相",
        "undeletecomment": "因:",
-       "undeletedrevisions": "$1審已還",
-       "undeletedrevisions-files": "$1審、$2檔已還",
-       "undeletedfiles": "$1檔已還",
-       "cannotundelete": "無以還檔;或復矣。",
+       "cannotundelete": "有頁未能復還,或皆不可還:\n$1",
        "undeletedpage": "'''$1還矣'''\n近刪新還,見[[Special:Log/delete|刪還誌]]。",
        "undelete-header": "欲覽近刪,見[[Special:Log/delete|誌刪]]。",
        "undelete-search-title": "尋刪頁",
        "movepagetext": "函下遷頁,誌隨新往、舊題作渡、取佐欲移。保佐正,[[Special:DoubleRedirects|防窮]]、[[Special:BrokenRedirects|斷渡]]。\n\n囑之者,新題若非空、渡、缺誌,則舊'''不遷'''焉。存頁勿覆,而誤遷可悔也。\n\n'''警示!'''\n膾炙遷焉,禍生不測;戒慎行之。",
        "movepagetext-noredirectfixer": "函下遷頁,誌隨新往、舊題作渡、取佐欲移。欲查[[Special:DoubleRedirects|防窮]]、[[Special:BrokenRedirects|斷渡]]之。\n\n囑之者,新題若非空、渡、缺誌,則舊'''不遷'''焉。存頁勿覆,而誤遷可悔也。\n\n'''警示!'''\n膾炙遷焉,禍生不測;戒慎行之。",
        "moveuserpage-warning": "'''警:'''爾將遷頁齋。注之遷齋後之簿名乃為''無''變也。",
-       "movenologintext": "遷文須[[Special:UserLogin|登簿]]。",
+       "movenologintext": "先[[Special:UserLogin|籍名]],後可遷。",
        "movenotallowed": "無准遷檔也。",
        "cant-move-user-page": "無動自齋(除字頁)。",
        "cant-move-to-user-page": "無動至齋(除字頁)。",
        "pageinfo-robot-index": "可",
        "pageinfo-robot-noindex": "不可",
        "pageinfo-toolboxlink": "文訊",
-       "markaspatrolleddiff": "派哨",
-       "markaspatrolledtext": "å\93¨æ­¤å ±",
-       "markedaspatrolled": "派哨",
-       "markedaspatrolledtext": "[[:$1]]之審哨矣。",
+       "markaspatrolleddiff": "審此本",
+       "markaspatrolledtext": "審此æ\96\87",
+       "markedaspatrolled": "審此文",
+       "markedaspatrolledtext": "[[:$1]]之本審矣。",
        "rcpatroldisabled": "不哨近易",
        "rcpatroldisabledtext": "近易之哨,未准行也。",
-       "markedaspatrollederror": "哨有誤",
-       "markedaspatrollederrortext": "揀一以哨。",
-       "markedaspatrollederror-noautopatrol": "己易不可。",
+       "markedaspatrollederror": "無以定審",
+       "markedaspatrollederrortext": "爾當於誌中,擇一以為審。",
+       "markedaspatrollederror-noautopatrol": "己易不可自審。",
        "patrol-log-page": "誌哨",
        "patrol-log-header": "此乃誌哨也。",
        "log-show-hide-patrol": "$1誌巡",
        "revdelete-unrestricted": "除限自有秩",
        "logentry-newusers-create": "簿$1已{{GENDER:$2|增}}。",
        "rightsnone": "(凡)",
-       "revdelete-summary": "摘",
-       "searchsuggest-search": "尋",
+       "searchsuggest-search": "尋於 {{SITENAME}}",
        "pagelang-language": "語",
        "default-skin-not-found": "嚄!君於<code dir=\"ltr\">$wgDefaultSkin</code>所設之膚無以用也。君所用版本,似需含膚下者也。可於MediaWiki之官網[https://www.mediawiki.org/wiki/Manual:Skin_configuration “設膚”]之冊,以知啟而許膚之法。\n\n$2\n\n; 若君安MediaWiki未幾:\n: 君或安自git庫。或以他法徑安自源始碼,若如此甚善。汝可試下者之法,自[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org之膚庫]安膚些許:\n:* 載下[https://www.mediawiki.org/wiki/Download/lzh 群安之器]。若依此道,則將预安膚與拓器些許。君可謄而貼<code>skins/</code>于焉。\n:* 自[https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org]獨載下安膚包。\n:* 以git徑謄自<code>mediawiki/skins/*</code>儲物库,至君MediaWiki副本之<code dir=\"ltr\">skins/</code>。\n: 若君MediaWiki開發者也,則為之應擾不及君之git儲物庫。\n\n; 若君MediaWiki新矣:\n: 自MediaWiki 1.24版本始,已安之膚不復自啟(見[https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery 冊])。君可謄而貼字下者,至君圍紀之<code>LocalSettings.php</code>以啟膚已安者:\n\n<pre dir=\"ltr\">$3</pre>\n\n; 若君已改<code>LocalSettings.php</code>:\n: 请再查膚名,以保之無誤。",
        "mediastatistics-header-unknown": "未知",
index 7834379..6ed98c0 100644 (file)
@@ -10,7 +10,8 @@
                        "Reedy",
                        "The Evil IP address",
                        "아라",
-                       "Velg"
+                       "Velg",
+                       "Stephanecbisson"
                ]
        },
        "tog-underline": "Link'iş tude kogu3’uxaçki:",
        "yourdomainname": "Skani domaini:",
        "login": "Sitʼeşa amaxti",
        "nav-login-createaccount": "Sitʼeşa amaxti / hesabi dokʼidi",
-       "userlogin": "Sitʼeşa amaxti / hesabi dokʼidi",
-       "userloginnocreate": "Sitʼeşa amaxti",
        "logout": "Siteşen Kogamaxti",
        "userlogout": "Siteşen Kogamaxti",
        "userlogin-joinproject": "{{SITENAME}}işe ak’ati",
-       "nologin": "Hesabi va giğuni? '''$1'''",
-       "nologinlink": "Hesabi dokʼidi.",
        "createaccount": "Hesabi dokʼidi",
-       "gotaccountlink": "Sitʼeşa amaxti",
-       "createaccountreason": "Muşen:",
        "createacct-reason": "Muşen",
        "mailmypassword": "Ağne pʼarola-çkimi moncğoni",
        "loginlanguagelabel": "Nena: $1",
        "rcshowhidemine": "çkimi oktirobape $1",
        "rcshowhidemine-show": "Ko3ʼiri",
        "rcshowhidemine-hide": "Şinaxi",
-       "rclinks": "Çodinaşi $2 ndğas na ixvenu çodinaşi $1 oktiroba ko3ʼiri;<br /> $3",
+       "rclinks": "Çodinaşi $2 ndğas na ixvenu çodinaşi $1 oktiroba ko3ʼiri;",
        "diff": "farkʼi",
        "hist": "tarixi",
        "hide": "Doşinaxi",
index ef6dbf2..7ec9acf 100644 (file)
@@ -43,7 +43,7 @@
        "tog-watchdeletion": "हमराद्वारा मेटाएल पृष्ठ हमर साकांक्ष सूचीमे राखी",
        "tog-watchrollback": "हमराद्वारा पूर्ववत कएल पृष्ठ हमर सांकक्ष सूचीमे राखी",
        "tog-minordefault": "हमर सभ सम्पादनसभ छोट परिवर्तनक रूपमे चिह्नित करी",
-       "tog-previewontop": "सम्पादन सन्दूक सँ पहिने झलक देखाबी",
+       "tog-previewontop": "सम्पादन सन्दूकसँ पहिने झलक देखाबी",
        "tog-previewonfirst": "पहिल सम्पादनक बाद पूर्वावलोकन देखाबी",
        "tog-enotifwatchlistpages": "जौं हमर ध्यानसूचीक कोनो पन्नामे परिवर्तन हुअए तँ हमरा इमेल पठाबी",
        "tog-enotifusertalkpages": "हमर वार्ता पृष्ठ परिवर्तित भेला पर हमरा इमेल करी",
        "login": "सम्प्रवेश",
        "login-security": "अपन पहचान सत्यापित करी",
        "nav-login-createaccount": "सम्प्रवेश / खाता खोली",
-       "userlogin": "सम्प्रवेश/ खाता बनाबी",
-       "userloginnocreate": "सम्प्रवेश",
        "logout": "निष्क्रमण",
        "userlogout": "फेर आयब",
        "notloggedin": "सम्प्रवेशित नै छी",
        "userlogin-noaccount": "खाता नै अछि?",
        "userlogin-joinproject": "{{SITENAME}}सँ जुडी",
-       "nologin": "खाता नै अछि? $1।",
-       "nologinlink": "नव खाता खोली",
        "createaccount": "खाता खोली",
-       "gotaccount": "पहिनहियेसँ खाता अछि? $1",
-       "gotaccountlink": "सम्प्रवेश",
-       "userlogin-resetlink": "अपन सम्प्रवेश विवरण बिसरि गेलौ?",
        "userlogin-resetpassword-link": "अपन कूटशब्द बिसरि गेलौ?",
        "userlogin-helplink2": "सम्प्रवेशित करवाक लेल मदति",
        "userlogin-loggedin": "अहाँ {{GENDER:$1|$1}}क रूपमे पहिनेसँ सम्प्रवेशित छी।\nकोनो दोसर सदस्यक रुपमे सम्प्रवेशित करवाक लेल देल गेल फारमके प्रयोग करी।",
        "createaccountmail": "एक अस्थायी यादृच्छिक कूटशब्द चुनी आ ओ निर्दिष्ट ई-मेल पता पर भेजी",
        "createaccountmail-help": "एकर उपयोग बिना पासवर्ड जानने कियो आन व्यक्तिके खाता खोलैक लिए उपयोग कएल जा सकैत अछि ।",
        "createacct-realname": "असली नाम (वैकल्पिक)",
-       "createaccountreason": "कारण:",
        "createacct-reason": "कारण:",
        "createacct-reason-ph": "अहाँ एक अन्य खाता कियाक बनाए रहल छी",
        "createacct-reason-help": "खाता निर्माण लगमे ई सन्देस देखाएल जाइत।",
        "preview": "पूर्वावलोकन",
        "showpreview": "पूर्वप्रदर्शन",
        "showdiff": "परिवर्तन देखाबी",
-       "blankarticle": "<strong>चेतावनी:</strong> अहाँ एक रिक्त पन्ना के निर्माण करि रहल छी।\nयदि अहाँ \"{{int:savearticle}}\" क पुनः दाबबै त पन्नाक बिना कोनो सामग्रीक निर्मित भ जाएत।",
+       "blankarticle": "<strong>चेतावनी:</strong> अहाँ एक रिक्त पन्ना के निर्माण करि रहल छी।\nयदि अहाँ \"$1\" क पुनः दाबबै त पन्नाक बिना कोनो सामग्रीक निर्मित भ जाएत।",
        "anoneditwarning": "<strong>चेतौनी:</strong> अहाँ सम्प्रवेश नै केनए छी । यदि अहाँ सम्पादन करबै तहन ई पृष्ठक सम्पादन इतिहासमे अहाँक आइपी ठेगान दर्ज कएल जाएत। यदि अहाँ <strong>[$1 सम्प्रवेश]</strong> करैत छी अथवा <strong>[$2 खाता बनाबैत छी]</strong> तहन अन्य सुविधासभ संगे अहाँक सम्पादनसभक श्रेय अहाँक प्रयोगकर्तानाम पर दएल जाएत।",
        "anonpreviewwarning": "<em>अहाँ सम्प्रवेशित नै छी। अखन रक्षण केलासँ अहाँक अनिकेत पता ई पन्नाक सम्पादन इतिहासमे दर्ज भऽ जाएत।</em>",
-       "missingsummary": "<strong>स्मारक:</strong> अहाँ सम्पादन सार नै देने छी।\nजँ अहाँ फेरसँ क्लिक करब \"{{int:savearticle}}\", अहाँक सम्पादन बिना एकर संरक्षित भऽ जाएत।",
-       "selfredirect": "<strong>चेतावनी:</strong> आहाँ स्वेम के ई पन्ना पुनः निर्देशीत कएर रहल छी।\nआहाँ अनुप्रेषित के लेल गलत लक्ष्य निर्दिष्ट भ्या सकएत अछि, या आहाँ गलत पन्ना कें संपादन कैर सकएत छी।\nआहाँ फेरो से \"{{int:savearticle}}\" क्लिक करएत छी, रीडायरेक्ट ओनाहो भी बनाबल जेल अछि।",
+       "missingsummary": "<strong>स्मारक:</strong> अहाँ सम्पादन सार नै देने छी।\nजँ अहाँ फेरसँ क्लिक करब \"$1\", अहाँक सम्पादन बिना एकर संरक्षित भऽ जाएत।",
+       "selfredirect": "<strong>चेतावनी:</strong> आहाँ स्वेम के ई पन्ना पुनः निर्देशीत कएर रहल छी।\nआहाँ अनुप्रेषित के लेल गलत लक्ष्य निर्दिष्ट भ्या सकएत अछि, या आहाँ गलत पन्ना कें संपादन कैर सकएत छी।\nआहाँ फेरो से \"$1\" क्लिक करएत छी, रीडायरेक्ट ओनाहो भी बनाबल जेल अछि।",
        "missingcommenttext": "कृपा कऽ अपन विचार नीचाँ प्रविष्ट करी।",
-       "missingcommentheader": "<strong>अनुस्मारक:</strong> अहाँ ई टिप्पणीके कोनो शीर्षक नै देनए छी।\nयदि अहाँ \"{{int:savearticle}}\" पर पुन: क्लिक करैत छी तँ अहाँक परिवर्तन बिना शीर्षक रक्षण कएल जाइत।",
+       "missingcommentheader": "<strong>अनुस्मारक:</strong> अहाँ ई टिप्पणीके कोनो शीर्षक नै देनए छी।\nयदि अहाँ \"$1\" पर पुन: क्लिक करैत छी तँ अहाँक परिवर्तन बिना शीर्षक रक्षण कएल जाइत।",
        "summary-preview": "सारांश पूर्वावलोकन",
        "subject-preview": "विषयक झलक:",
        "previewerrortext": "अहाँक परिवर्तनके पूर्वावलोकन करहिक समय एक त्रुटि आएल।",
        "userinvalidcssjstitle": "'''चेतौनी:''' ऐ मे कोनो आवरण \"$1\" नै अछि।\nबनाएल .css आ .js पन्ना लघ्वक्षरक शीर्षकक प्रयोग करैत अछि, जेना {{ns:user}}:Foo/vector.css एकर विरुद्ध {{ns:user}}:Foo/Vector.css ।",
        "updated": "(अद्यतन  कएल)",
        "note": "<strong>टिप्पणी:</strong>",
-       "previewnote": "'''मोन राखू ई मातर पूर्वावलोकन छी।'''\nअहाँक परिवर्तन अखन धरि सँचिआएल नै गेल अछि!",
+       "previewnote": "<strong>मोन राखू ई मात्र पूर्वावलोकन छी।</strong>\nअहाँक परिवर्तन अखन धरि सङ्ग्रह नै कएल गेल अछि!",
        "continue-editing": "सम्पादन क्षेत्र जाए",
        "previewconflict": "ई पूर्वदृश्य देखबैए उपरका सम्पादन क्षेत्रक पाठ, ई आएत जखन अहाँ संरक्षित करब।",
        "session_fail_preview": "'''क्षमा करी! सेशन डाटा नष्ट होमएक कारण अहाँक परिवर्तन रक्षण नै कएल जा सकल।'''\nकृपया पुन: प्रयास करी । यदि एकर बादो सफल नै भेल तँ कृपया [[Special:UserLogout|लग आउट]] करि पुनः सम्प्रवेश करी।",
-       "session_fail_preview_html": "à¤\95à¥\8dषमा à¤\95रà¥\80! à¤¸à¥\87शन à¤¡à¤¾à¤\9fा à¤¨à¤·à¥\8dà¤\9f à¤¹à¥\8bमà¤\8fà¤\95 à¤\95ारण à¤\85हाà¤\81à¤\95 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤°à¤\95à¥\8dषण à¤¨à¥\88 à¤\95à¤\8fल à¤\9cा à¤¸à¤\95ल।\n\n<em>à¤\9aà¥\82à¤\81à¤\95ि {{SITENAME}} à¤ªà¤° à¤°à¤µ à¤\8fà¤\9aà¤\9fिà¤\8fमà¤\8fल à¤¸à¤\95à¥\8dषम à¤\85à¤\9bि, à¤\9cाभासà¥\8dà¤\95à¥\8dरिपà¥\8dà¤\9f à¤¹à¤®à¤²à¤¾ à¤¸à¤\81 à¤¬à¤\9aावà¤\95 à¤²à¥\87ल à¤\9dलà¤\95 à¤¨à¥\88 à¤¦à¥\87à¤\96ाà¤\8fल à¤\97à¥\87ल à¤\85à¤\9bि।</em>\n\n<strong>à¤\85à¤\97र à¤\88 à¤\85हाà¤\81à¤\95 à¤µà¥\88ध à¤¸à¤®à¥\8dपादन à¤¯à¤¤à¥\8dन à¤\9bल, à¤¤à¤\81 à¤\95à¥\83पया à¤ªà¥\81नà¤\83 à¤ªà¥\8dरयास à¤\95रà¥\80।</strong>\nयदि à¤\8fà¤\95र à¤¬à¤¾à¤¦à¥\8b à¤¸à¤«à¤² à¤¨à¥\88 à¤­à¥\87ल à¤¤à¤\81 à¤\95à¥\83पया [[Special:UserLogout|लà¤\97 à¤\86à¤\89à¤\9f]] à¤\95रि à¤ªà¥\81नà¤\83 à¤¸à¤®à¥\8dपà¥\8dरवà¥\87श à¤\95रà¥\80 à¤¤à¤¥à¤¾ à¤\9cाà¤\81à¤\9aà¥\80 à¤¯à¤¦à¤¿ à¤\85हाà¤\81à¤\95 à¤¬à¥\8dराà¤\89à¤\9cर à¤\8fहि à¤¸à¤¾à¤\87à¤\9f सँ कुकिजक अनुमति दैत अछि।",
+       "session_fail_preview_html": "à¤\95à¥\8dषमा à¤\95रà¥\80! à¤¸à¥\87शन à¤¡à¤¾à¤\9fा à¤¨à¤·à¥\8dà¤\9f à¤¹à¥\8bमà¤\8fà¤\95 à¤\95ारण à¤\85हाà¤\81à¤\95 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤°à¤\95à¥\8dषण à¤¨à¥\88 à¤\95à¤\8fल à¤\9cा à¤¸à¤\95ल।\n\n<em>à¤\9aà¥\82à¤\81à¤\95ि {{SITENAME}} à¤ªà¤° à¤\95à¤\9aà¥\8dà¤\9aा à¤\8fà¤\9aà¤\9fिà¤\8fमà¤\8fल à¤¸à¤\95à¥\8dषम à¤\85à¤\9bि, à¤\9cाभासà¥\8dà¤\95à¥\8dरिपà¥\8dà¤\9f à¤¹à¤®à¤²à¤¾à¤¸à¤\81 à¤¬à¤\9aावà¤\95 à¤²à¥\87ल à¤\9dलà¤\95 à¤¨à¥\88 à¤¦à¥\87à¤\96ाà¤\8fल à¤\97à¥\87ल à¤\85à¤\9bि।</em>\n\n<strong>यदि à¤\88 à¤\85हाà¤\81à¤\95 à¤µà¥\88ध à¤¸à¤®à¥\8dपादन à¤¯à¤¤à¥\8dन à¤\9bल, à¤¤à¤\81 à¤\95à¥\83पया à¤ªà¥\81नà¤\83 à¤ªà¥\8dरयास à¤\95रà¥\80।</strong>\nयदि à¤\8fà¤\95र à¤¬à¤¾à¤¦à¥\8b à¤¸à¤«à¤² à¤¨à¥\88 à¤­à¥\87ल à¤¤à¤\81 à¤\95à¥\83पया [[Special:UserLogout|निषà¥\8dà¤\95à¥\8dरमण]] à¤\95रि à¤ªà¥\81नà¤\83 à¤¸à¤®à¥\8dपà¥\8dरवà¥\87श à¤\95रà¥\80 à¤¤à¤¥à¤¾ à¤\9cाà¤\81à¤\9aà¥\80 à¤¯à¤¦à¤¿ à¤\85हाà¤\81à¤\95 à¤¬à¥\8dराà¤\89à¤\9cर à¤\88 à¤¸à¤¾à¤\87à¤\9fसँ कुकिजक अनुमति दैत अछि।",
        "token_suffix_mismatch": "'''अहाँक सम्पादन अस्वीकार कऽ देल गेल अछि कारण अहाँक ग्राहक प्रेष्यमान अंक विधानक विराम चेन्ह सभकेँ नष्ट कऽ देलन्हि।'''\nई सम्पादन पन्नाक पाठकेँ दूषित होएबासँ बचेबा लेल अमान्य कऽ देल गेल।\nई कखनो काल होइए जखन अहाँ जाल आधारित अनाम दोसरा लेल चल सेवा प्रयुक्त करै छी।",
        "edit_form_incomplete": "<strong>सम्पादन आवेदनक किछु भाग वितरक धरि नै पहुँचल; एक बेर फेर देखी जे अहाँक सम्पादन दुरुस्त अछि आ फेरसँ प्रयास करी।</strong>",
        "editing": "सम्पादन होइए $1",
        "editingsection": "सम्पादन कऽ रहल छी $1 (खण्ड)",
        "editingcomment": "सम्पादन कऽ रहल छी $1 (नव खण्ड)",
        "editconflict": "सम्पादन अन्तर्विरोध: $1",
-       "explainconflict": "जखन अहाँ एकर सम्पादन आरम्भ केने रही तखनसँ कियो आन ऐ पन्नाकेँ बदलि देलक।\nउपरका पाठ क्षेत्र अखन उपस्थित पन्नाक पाठ देखबैत अछि।\nअहाँक परिवर्तन निचुलका पाठ क्षेत्रमे देखाएल अछि।\nअहाँकेँ अपन परिवर्तन वर्तमान पाठमे मिलाबऽ पडत।\n<strong>मात्र</strong> \"{{int:savearticle}}\" दबलापर उपरका पाठ क्षेत्रक पाठ संरक्षित हएत।",
+       "explainconflict": "जखन अहाँ एकर सम्पादन आरम्भ केने रही तखनसँ कियो आन ऐ पन्नाकेँ बदलि देलक।\nउपरका पाठ क्षेत्र अखन उपस्थित पन्नाक पाठ देखबैत अछि।\nअहाँक परिवर्तन निचुलका पाठ क्षेत्रमे देखाएल अछि।\nअहाँकेँ अपन परिवर्तन वर्तमान पाठमे मिलाबऽ पडत।\n<strong>मात्र</strong> \"$1\" दबलापर उपरका पाठ क्षेत्रक पाठ संरक्षित हएत।",
        "yourtext": "अहाँक पाठ",
        "storedversion": "पेटारमे राखल संशोधन",
        "nonunicodebrowser": "'''चेतौनी: अहाँक गवेषक सार्वत्रिकाक्षरकूट सहयोगी नै अछि।'''\nएकटा अस्थायी-परोक्ष तंत्रांश अहाँकेँ सुरक्षित रूपेँ पन्नाक सम्पादनमे मदति करत: गएर-अस्की अक्षर सभ षोडशमान पद्धतिमे सम्पादन बक्सामे आएत।",
        "edit-no-change": "अहाँक सम्पादनपर ध्यान नै देल गेल, कारण ऐ सँ पाठमे कोनो परिवर्तन नै आएल।",
        "postedit-confirmation-created": "पन्ना निर्माण करल गेल अछि ।",
        "postedit-confirmation-restored": "पन्नाके पुराण स्थितिमे लौने गेल अछि ।",
-       "postedit-confirmation-saved": "अहाक सम्पादन सुरक्षित भेल ।",
+       "postedit-confirmation-saved": "à¤\85हाà¤\81à¤\95 à¤¸à¤®à¥\8dपादन à¤¸à¥\81रà¤\95à¥\8dषित à¤­à¥\87ल à¥¤",
        "edit-already-exists": "नव पन्नाक निर्माण नै भऽ सकल।\nई पहिनहियेसँ वर्तमान अछि।",
        "defaultmessagetext": "पूर्वनिर्धारित सन्देश पाठ",
        "content-failed-to-parse": "$1 के लेल $2 सामग्री के बिच्छेदन करए में विफल, त्रुटि: $3",
        "right-editsemiprotected": "संरक्षित पन्ना सम्पादित करू (बिना तराउपड़ी सुरक्षाक)",
        "right-editcontentmodel": "एक पन्ना के सामग्री मॉडल कें सम्पादन।",
        "right-editinterface": "प्रयोक्ता मध्यस्थक सम्पादन करू",
-       "right-editusercssjs": "दोसर प्रयोक्ताक सी.एस.एस. आ जावास्क्रिप्ट संचिका सभक सम्पादन करू",
        "right-editusercss": "दोसर प्रयोक्ता सभक सी.एस.एस. संचिका सभक सम्पादन करू",
        "right-edituserjs": "दोसर प्रयोक्ताक जावास्क्रिप्ट संचिका सभक सम्पादन करू",
        "right-editmyusercss": "अपन प्रयोक्ता स्तरके सी.एस.एस.फाइल स संपादित करु",
        "right-editmyprivateinfo": "अपन व्यक्तिगत डाटा सम्पादित करू (जेना ई-मेल पता, असली नाम)",
        "right-editmyoptions": "अपन वरीयतासभ सम्पादित करु",
        "right-rollback": "कृपा कऽ अन्तिम प्रयोक्ताक सम्पादन सभकेँ प्रत्यावर्तित करू जे एक खास पन्नाकेँ सम्पादित केलन्हि",
-       "right-markbotedits": "प्रत्यावर्तित सम्पादन सभकेँ स्वचालित सम्पादन देखाउ",
+       "right-markbotedits": "प्रत्यावर्तित सम्पादन सभके बोट सम्पादन देखाबी",
        "right-noratelimit": "दरक सीमासँ प्रभावित नै",
-       "right-import": "दà¥\8bसर à¤µà¤¿à¤\95à¥\80सà¤\81 à¤ªà¤¨à¥\8dना à¤²à¤¿à¤\85",
+       "right-import": "à¤\85नà¥\8dय à¤µà¤¿à¤\95à¥\80सà¤\81 à¤ªà¥\83षà¥\8dठ à¤\86यात à¤\95रà¥\80",
        "right-importupload": "पन्नासभकेँ संचिका उपारोपणसँ आनू",
        "right-patrol": "अन्य सदस्यसभक सम्पादन परीक्षित चिन्हित करी",
        "right-autopatrol": "अपन सम्पादन स्वचालित रूपसँ परीक्षित चिन्हित करी",
        "action-block": "ई प्रयोक्ताकेँ सम्पादनसँ रोकू",
        "action-protect": "ई पन्नाक सुरक्षा स्तर बदलू",
        "action-rollback": "कृपा कऽ अन्तिम प्रयोक्ताक सम्पादनकेँ प्रत्यावर्तित करू जे एक खास पन्नाकेँ सम्पादित केलन्हि",
-       "action-import": "à¤\90 à¤ªà¤¨à¥\8dनाà¤\95à¥\87à¤\81 à¤¦à¥\8bसर à¤µà¤¿à¤\95à¥\80सà¤\81 à¤\86नà¥\82",
+       "action-import": "à¤\95à¥\8bनà¥\8b à¤\85नà¥\8dय à¤µà¤¿à¤\95à¥\80सà¤\81 à¤ªà¥\83षà¥\8dठ à¤\86यात à¤\95रà¥\80",
        "action-importupload": "ऐ पन्नाकेँ संचिका उपारोपणसँ आनू",
        "action-patrol": "अन्य सदस्यसभक सम्पादन परीक्षित करी",
        "action-autopatrol": "अपन सम्पादन स्वचालित रूपसँ परीक्षित करी",
        "action-editmyprivateinfo": "अपन व्यक्तिगत जानकारी सम्पादित करी",
        "action-editcontentmodel": "एक पन्ना के सामग्री मॉडल कें सम्पादन।",
        "action-managechangetags": "ट्याग बनाबी आ सक्षम (असक्षम) करी",
-       "action-applychangetags": "à¤\86हाà¤\81 à¤\95à¥\87 à¤¬à¤¦à¤²à¤¾à¤µ à¤\95à¥\87 à¤¸à¤¾à¤¥ à¤\9fà¥\88à¤\97 à¤\9cà¥\8bडà¥\82।",
+       "action-applychangetags": "à¤\85हाà¤\81à¤\95 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनà¤\95 à¤¸à¤\82à¤\97 à¤\9fà¥\8dयाà¤\97 à¤\9cà¥\8bड़à¥\80।",
        "action-changetags": "जमा करु आर हटाबु स्वतंत्र टैग व्यक्तिगत अवतरण आर लॉग प्रविक्ति पे",
        "action-deletechangetags": "डेटाबेस सँ ट्याग मेटाबी",
        "action-purge": "पृष्ठक क्यास खाली करी",
        "rcshowhidecategorization": "$1 पृष्ठ श्रेणीकरण",
        "rcshowhidecategorization-show": "देखाबी",
        "rcshowhidecategorization-hide": "नुकाबी",
-       "rclinks": "पिछला $2 दिनमे भएल $1 परिवर्तन देखाबी<br />$3",
+       "rclinks": "पिछला $2 दिनमे भएल $1 परिवर्तन देखाबी",
        "diff": "अन्तर",
        "hist": "इति.",
        "hide": "नुकाबी",
        "filerevert-legend": "घुराएल संचिका",
        "filerevert-intro": "अहाँ संचिका घुराबैले छी '''[[Media:$1|$1]]''' केँ [$4 संस्करण $3, $2 केँ] लग।",
        "filerevert-comment": "कारण:",
-       "filerevert-defaultcomment": "$2, $1 ($3)à¤\95 à¤\85वतरण à¤ªà¥\82रà¥\8dववत à¤\95à¤\8fलक",
+       "filerevert-defaultcomment": "$2, $1 ($3)à¤\95 à¤\85वतरण à¤ªà¥\82रà¥\8dववत à¤\95à¥\87लक",
        "filerevert-submit": "फेरसँ वएह",
        "filerevert-success": "'''[[Media:$1|$1]]''' घुराएल गेल [$4 version as of $3, $2] लग।",
        "filerevert-badversion": "ओइ कालक कोनो पुरान स्थानीय संस्करण ऐ संचिकाक नै अछि।",
        "emailsent": "ई-पत्र पठेलौं",
        "emailsenttext": "अहाँक ई-पत्र सन्देश पठाएल गेल।",
        "emailuserfooter": "ई ई-मेल $1 {{GENDER:$1|द्वारा}} {{GENDER:$2|$2}}क भेजल गेल छल जेकर लेल \"{{int:emailuser}}\" कार्यके {{SITENAME}} पर प्रयोगमे लाबल गेल छल।",
-       "usermessage-summary": "प्रणाली सन्देश छोडि रहल अछि।",
+       "usermessage-summary": "पà¥\8dरणालà¥\80 à¤¸à¤¨à¥\8dदà¥\87श à¤\9bà¥\8bड़ि à¤°à¤¹à¤² à¤\85à¤\9bि।",
        "usermessage-editor": "प्रणालीक दूत",
        "usermessage-template": "मीडियाविकी:प्रयोक्ता संदेश",
        "watchlist": "साकांक्षसूची",
        "undeleteviewlink": "देखू",
        "undeleteinvert": "उनटा चयन",
        "undeletecomment": "कारण:",
-       "undeletedrevisions": "{{PLURAL:$1|1 revision|$1 revisions}} घुराएल",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 संशोधन|$1 संशोधन}} and {{PLURAL:$2|1 संचिका|$2 संचिका}} आनल",
-       "undeletedfiles": "{{PLURAL:$1|1 संचिका|$1 संचिका सभ}} आनल",
        "cannotundelete": "किछ वा सभ मेटाएल वापिस असफल:\n$1",
        "undeletedpage": "'''$1 के पुनर्स्थापित करल गेल अछि'''\n\nलग पास में हटाओल गेल आ पुनर्स्थापित कएल गेल पन्ना सभके जानकारी के लेल [[Special:Log/delete|हटाओल गेल लग]] देखु।",
        "undelete-header": "हालक मेटाएल पन्ना के लेल [[Special:Log/delete|हटाएल लग]] देखू।",
        "sp-contributions-blocked-notice-anon": "ई अनिकेत अखन प्रतिबन्धित अछि।\nअद्यतन प्रतिबन्धित  वृत्तलेख लेखा सन्दर्भ नीचाँ देल अछि:",
        "sp-contributions-search": "अवदानक लेल ताकू",
        "sp-contributions-username": "अनिकेत संकेत वा प्रयोक्तानाम:",
-       "sp-contributions-toponly": "मात्र ओइ सम्पादन देखाबी जे अद्यतन संशोधन छी।",
-       "sp-contributions-newonly": "मात्र ओइ सम्पादन देखाउ जे पृष्ठ निर्मित भेल अछि",
+       "sp-contributions-toponly": "मात्र ओ सम्पादन देखाबी जे नवीनतम संशोधन छी।",
+       "sp-contributions-newonly": "मात्र ओ सम्पादन देखाबी जहिसँ पृष्ठ निर्मित भेल अछि",
        "sp-contributions-hideminor": "अल्प सम्पादन नुकाबी",
        "sp-contributions-submit": "ताकू",
        "whatlinkshere": "एतय कोन लिङ्क अछि",
        "thumbnail_gd-library": "अपूर्ण जी.डी.पुस्तकालय विन्यास: प्रकार्य $1 अनुपस्थित",
        "thumbnail_image-missing": "संचिका लगैए अनुपस्थित अछि: $1",
        "import": "पन्ना सभकेँ आनू",
-       "importinterwiki": "à¤\95à¥\8bनà¥\8b à¤\94र à¤µà¤¿à¤\95ि सँ आयात करी",
+       "importinterwiki": "à¤\95à¥\8bनà¥\8b à¤\85नà¥\8dय à¤µà¤¿à¤\95à¥\80सँ आयात करी",
        "import-interwiki-text": "एकटा विकी आ पन्ना शीर्षक आनैलेल चुनू।\nसंशोधन तिथि आ सम्पादकक नाम सुरक्षित रहत।\nसभटा ट्रान्सविकी आयात क्रिया सम्प्रवेशित [[Special:Log/import|आयात लग]] पर रहत।",
        "import-interwiki-sourcewiki": "मूल विकि:",
        "import-interwiki-sourcepage": "मूल पन्ना:",
        "import-interwiki-submit": "आयात",
        "import-mapping-default": "पूर्व निर्धारित स्थान सभ पर आयात करी",
        "import-mapping-namespace": "कोनो नामस्थान पर आयात करी",
-       "import-mapping-subpage": "निम्न लिखित पृष्ठ के उपपृष्ठ के रूप में आयात करी:",
+       "import-mapping-subpage": "निम्न लिखित पृष्ठके उपपृष्ठक रूपमे आयात करी:",
        "import-upload-filename": "संचिकानाम:",
        "import-comment": "समीक्षा:",
        "importtext": "मूल विकी [[Special:Export|export utility]] क प्रयोग कऽ संचिका पठाउ।\nअपन संगणकमे एकरा सुरक्षित करू आ एतए उपारोपित करू।",
        "xml-error-string": "$1 पाँतीपर $2, col $3 (byte $4): $5",
        "import-upload": "एक्स.एम.एल. दत्तांश उपारोपित करू",
        "import-token-mismatch": "सेशन डाटा नष्ट भेल।\nअहाँ सायद लग आउट क गेल छी।<strong>कृपया जाँच करी की अहाँ सम्प्रवेशित छी</strong>।\nयदि एकर बादो सफल नै भेल तँ कृपया [[Special:UserLogout|लग आउट]] करि पुनः सम्प्रवेश करी।",
-       "import-invalid-interwiki": "विशिषà¥\8dà¤\9f à¤µà¤¿à¤\95à¥\80सà¤\81 à¤\86यात à¤¨à¥\88 à¤\95ऽ à¤¸à¤\95à¥\88 à¤\9bà¥\80।",
+       "import-invalid-interwiki": "à¤\88 à¤µà¤¿à¤\95à¥\80सà¤\81 à¤\86यात à¤¨à¥\88 à¤­à¤½ à¤¸à¤\95à¥\88त à¤\85à¤\9bि।",
        "import-error-edit": "\"$1\" पन्ना आयातित नै कएल गेल अछि कारण अहाँकेँ एकरा सम्पादित करबाक अधिकार नै अछि।",
        "import-error-create": "\"$1\" पन्ना आयातित नै कएल गेल अछि कारण अहाँकेँ एकरा निर्माण करबाक अधिकार नै अछि।",
        "import-error-interwiki": "पृष्ठ \"$1\" आयात नै केल गेल कियाकि एकर नाम अन्तरविकि जडी बनाबै के लेल आरक्षित अछि।",
        "importlogpage": "आयात सूची",
        "importlogpagetext": "पन्ना सभक प्रशासनिक आयात दोसर विकीक सम्पादन इतिहासक संग।",
        "import-logentry-upload-detail": "$1 अवतरण आयात {{PLURAL:$1|केलक|कएल गेल}}",
-       "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|सुधार|सुधार सभ}} $2 सँ",
+       "import-logentry-interwiki-detail": "$2 सँ $1 अवतरण आयात {{PLURAL:$1|कएल गेल|केल गेल}}",
        "javascripttest": "जावास्क्रिप्ट परिक्षण",
        "javascripttest-pagetext-unknownaction": "अज्ञात क्रिया \"$1\" ।",
        "javascripttest-qunit-intro": "mediawiki.org पर [$1 परीक्षण के प्रलेखन] देखु।",
        "dberr-problems": "दुखी छी! ई जालस्थल तकनीकी समस्या अनुभव कऽ अछि।",
        "dberr-again": "किछु काल रुकी आ फेरसँ जानकारी भरी।",
        "dberr-info": "(दत्तनिधि वितरकके सम्पर्क नै कऽ सकल: $1)",
-       "dberr-info-hidden": "(दतà¥\8dतनिधि à¤µà¤¿à¤¤à¤°à¤\95à¤\95à¥\87 à¤¸à¤®à¥\8dपरà¥\8dà¤\95 à¤¨à¥\88 à¤\95ऽ à¤¸à¤\95ल: $1)",
+       "dberr-info-hidden": "(डाà¤\9fाबà¥\87ससà¤\81 à¤¸à¤®à¥\8dपरà¥\8dà¤\95 à¤¨à¥\88 à¤\95à¤\8fल à¤\9cा à¤¸à¤\95ल)",
        "dberr-usegoogle": "ऐ बीचमे अहाँ गूगलसँ खोज कऽ सकै छी।",
        "dberr-outofdate": "मोन राखू जे हमर सामिग्रीक ओकर सूची पुरान भऽ सकैए।",
        "dberr-cachederror": "ई आग्रह कएल पन्नाक उपस्मृति संरक्षित द्वितीयक अछि, आ भऽ सकैए जे अद्यतन नै हुअए।",
        "revdelete-uname-unhid": "प्रयोक्तानाम सोझाँ",
        "revdelete-restricted": "संचालक लेल प्रायोगिक प्रतिबन्ध",
        "revdelete-unrestricted": "संचालक लेल हटाओल प्रतिबन्ध",
-       "logentry-import-upload": "$1 {{GENDER:$2|आयात केल गेल}} $3 संचिका उपारोपन के माध्यम सँ",
-       "logentry-import-interwiki": "$1 {{GENDER:$2|आयात कएल गेल}} $3 कोनो और विकिसँ",
+       "logentry-import-upload": "$1 {{GENDER:$2|आयात केल गेल}} $3 सञ्चिका उपारोपनक माध्यमसँ",
+       "logentry-import-upload-details": "$1द्वारा सञ्चिका उपारोपणसँ $3कें ($4 {{PLURAL:$4|अवतरण|अवतरणसभ}})कें {{GENDER:$2|आयात}} केलक।",
+       "logentry-import-interwiki": "$1 {{GENDER:$2|आयात कएल गेल}} $3 कोनो अन्य विकिसँ",
+       "logentry-import-interwiki-details": "$1द्वारा $3 कें ($4 {{PLURAL:$4|अवतरण|अवतरणसभ}})कें $5सँ {{GENDER:$2|आयात}} केलक।",
        "logentry-merge-merge": "$1 {{GENDER:$2|विलय केल गेल}} $3 के $4 में (संशोधन $5 धरि)",
-       "logentry-move-move": "$1दà¥\8dवारा $3 à¤ªà¥\83षà¥\8dठ $4 à¤ªà¤° {{GENDER:$2|सà¥\8dथानानà¥\8dतरित}} à¤\95à¤\8fलक",
-       "logentry-move-move-noredirect": "$1 द्वारा $3 पर पुनर्निर्देशन नै छोडि ओकरा $4 पर {{GENDER:$2|स्थानान्तरित}} केलक",
+       "logentry-move-move": "$1दà¥\8dवारा $3 à¤ªà¥\83षà¥\8dठ $4 à¤ªà¤° {{GENDER:$2|सà¥\8dथानानà¥\8dतरित}} à¤\95à¥\87लक",
+       "logentry-move-move-noredirect": "$1 à¤¦à¥\8dवारा $3 à¤ªà¤° à¤ªà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन à¤¨à¥\88 à¤\9bà¥\8bड़ि à¤\93à¤\95रा $4 à¤ªà¤° {{GENDER:$2|सà¥\8dथानानà¥\8dतरित}} à¤\95à¥\87लà¤\95",
        "logentry-move-move_redir": "$1 द्वारा $4 सँ पुनर्निर्देशन हटाए $3 क ओहिपर {{GENDER:$2|स्थानान्तरित}} केलक",
        "logentry-move-move_redir-noredirect": "$1 द्वारा $4 सँ पुनार्निर्देश हटाए $3 पर पुनर्निर्देश नै छोडि $3 के $4 पर {{GENDER:$2|स्थानान्तरित}} केलक",
        "logentry-patrol-patrol": "$1 {{GENDER:$2|चिन्हित}} संशोधन $4 $3 पन्नाक निरीक्षित",
        "logentry-upload-upload": "$1 {{GENDER:$2|ए}} $3 अपलोड केलक",
        "log-name-tag": "ट्याग लौग",
        "rightsnone": "(कोनो नै)",
-       "revdelete-summary": "सम्पादन सारांश",
        "feedback-adding": "पन्ना उपर प्रतिक्रिया जोडु ...",
        "feedback-back": "पाछां",
        "feedback-bugcheck": "बहुत निक! जांच करु कि [ $1 known bugs] पहिले स त नै अछि ।",
        "expand_templates_remove_comments": "टिप्पणी हटाउ",
        "expand_templates_remove_nowiki": "परिणाम में <nowiki> ट्याग हटाउ",
        "expand_templates_generate_xml": "XML के पार्स (parse) वृक्ष देखाउ",
+       "expand_templates_preview": "पूर्वावलोकन",
        "pagelanguage": "पृष्ठ भाषा परिवर्तन करी",
        "pagelang-name": "पन्ना",
        "pagelang-language": "भाषा",
index b339dcc..507d04f 100644 (file)
        "anonpreviewwarning": "''Rika durung mlebu log. Nyimpen kaca bakal nyatetna alamat IP-ne Rika nang riwayat suntingan kaca kiye.''",
        "missingsummary": "'''Pènget:''' Rika ora nglebokna ringkesan panyuntingan. \nAngger Rika mencèt tombol Simpen maning, suntingane Rika bakal kasimpen tanpa ringkesan panyuntingan.",
        "missingcommenttext": "Tulung lebokna komentar nang ngisor kiye.",
-       "missingcommentheader": "'''Pènget:''' Rika ora nglebokna subjek/judul nggo komentare Rika kiye. \nAngger Rika mencèt \"{{int:savearticle}}\" maning, suntingane Rika bakal kasimpen tanpa komentar kuwe.",
+       "missingcommentheader": "'''Pènget:''' Rika ora nglebokna subjek/judul nggo komentare Rika kiye. \nAngger Rika mencèt \"$1\" maning, suntingane Rika bakal kasimpen tanpa komentar kuwe.",
        "summary-preview": "Pratayang ringkesan:",
        "subject-preview": "Pratayang subyèk/judul:",
        "blockedtitle": "Panganggo diblokir",
        "right-protect": "Nganti tingkatan pangreksan lan nyunting kaca-kaca sing direksa",
        "right-editprotected": "Nyunting kaca-kaca sing direksa (tanpa pangreksan runtun)",
        "right-editinterface": "Nyunting antarmukane panganggo",
-       "right-editusercssjs": "Nyunting berkas CSS lan JavaScript panganggo liyane",
        "right-editusercss": "Nyunting berkas CSS panganggo liyane",
        "right-edituserjs": "Nyunting berkas JavaScript panganggo liyane",
        "right-rollback": "Gelis gole mbalekna suntingane panganggo pungkasan sing nyunting kaca tartamtu",
        "rcshowhideanons": "$1 panganggo anonim",
        "rcshowhidepatr": "$1 suntingan sing dipatroli",
        "rcshowhidemine": "$1 suntingane inyong",
-       "rclinks": "Tidokna $1 owahan pungkasan nang $2 dina pungkasan kiye<br />$3",
+       "rclinks": "Tidokna $1 owahan pungkasan nang $2 dina pungkasan kiye",
        "diff": "bédane",
        "hist": "versi",
        "hide": "Umpetna",
index 3a309a5..c12f069 100644 (file)
        "externaldberror": "Лиссь эльбятькс ушеширень датабазонь вельде кемокстакшнембачк эли тондейть аф мярьгови полафнемс тонь ушеширень сёрматфтомацень.",
        "login": "Сувама",
        "nav-login-createaccount": "Сувама / сёрматфтома",
-       "userlogin": "Сувама / сёрматфтома",
-       "userloginnocreate": "Сувамс",
        "logout": "Лисема",
        "userlogout": "Лисема",
        "notloggedin": "Апак сувак",
-       "nologin": "Аш сувама лемце? '''$1'''.",
-       "nologinlink": "Сёрматфтомс",
        "createaccount": "Тиемс од сёрматфтомась",
-       "gotaccount": "Сёрматфтыть ни? '''$1'''.",
-       "gotaccountlink": "Сувамс",
-       "userlogin-resetlink": "Сувама эрявикснень юкстайть?",
        "createaccountmail": "электрононь сёрма вельде",
-       "createaccountreason": "Туфтал:",
        "badretype": "Сувама валхне тон путыть аф фкат.",
        "userexists": "Тя лемть сявозь ни. \nЭняльттяма, арьсек эстейть иля.",
        "loginerror": "Сувама эльбятькс",
        "passwordreset-disabled": "Сувама валсь аф полафтови тя викить эса.",
        "passwordreset-username": "Тиить лемоц",
        "passwordreset-domain": "Домен:",
-       "passwordreset-capture": "Ваномс мекольце е-сёрма?",
-       "passwordreset-capture-help": "Путондярят тяшкс тя паксять эса е-сёрма (пингонь сувама вал мархта) кармай няфтевома кодак кучф тиенди.",
        "passwordreset-emailtitle": "Серматфтомать колга {{SITENAME}}са",
        "bold_sample": "Эчке сёрмадома",
        "bold_tip": "Эчке сёрмадома",
        "editingsection": "Петнемс $1 (пялькс)",
        "editingcomment": "Петнемс $1 (од пакш)",
        "editconflict": "Петнема эльбятькс: $1",
-       "explainconflict": "Кати-кие тя лопать полафтозе мъзярс тон сонь петнить.\nВярдень паксяса тон няйсак текстть стамкс конакс сон кармай няеви «Ванфтомс лопа» пунять люпштамда меле.\nТонь полафнематне няевихть ала, петнема паксять эса.\nТонь полафнематнень текстс нолдаманкса тондейть эряви синь ётафтомс алудонь петнема паксяста вярденнес.\n'''Аньцек''' вярдень паксястонь текстть ванфтови \"{{int:savearticle}}\" пунять люпштамда меле\".",
+       "explainconflict": "Кати-кие тя лопать полафтозе мъзярс тон сонь петнить.\nВярдень паксяса тон няйсак текстть стамкс конакс сон кармай няеви «Ванфтомс лопа» пунять люпштамда меле.\nТонь полафнематне няевихть ала, петнема паксять эса.\nТонь полафнематнень текстс нолдаманкса тондейть эряви синь ётафтомс алудонь петнема паксяста вярденнес.\n'''Аньцек''' вярдень паксястонь текстть ванфтови \"$1\" пунять люпштамда меле\".",
        "yourtext": "Тонь текстце",
        "storedversion": "Ванфтф верзие",
        "nonunicodebrowser": "'''ИНГОЛЕ КАРДАМА: Тонь интернет полатксце аф кирдьсы Unicode. Лопань петемста сембе аф-ASCII тяштьксне кармайхть арама синь кемготувонькърда луфксокс.'''",
        "saveprefs": "Ванфтомс",
        "restoreprefs": "Мърдафтомс васень латцематне",
        "prefs-editing": "Петнема",
-       "rows": "Луфт (строкат):",
-       "columns": "Орват (столбанят):",
        "searchresultshead": "Вешендема",
        "stub-threshold": "Оторсь (лимитсь) <a href=\"#\" class=\"stub\">-нь керф сюлмафкснень</a> латцемаснонды (байтт):",
        "recentchangesdays": "Мъзяра шит няфтемс мекольце полафнемаса:",
        "userrights-reason": "Туфтал:",
        "userrights-no-interwiki": "Тондейть аф мярьгови полафтомс тиихнень видекссна иля Викива.",
        "userrights-nodatabase": "Датабаза $1 аш эли сон аф тястоконь.",
-       "userrights-nologin": "Тондейть эряви [[Special:UserLogin|сувамс]] оцюнянь сёрматфтомать вельде тиихнень видексснон макссеманкса.",
-       "userrights-notallowed": "Тонь сёрматфтомацень вельде аф мярьгови макссемс видекст иля тиихненди.",
        "userrights-changeable-col": "Полгатне конатнень тондейть ули кода полафтомс",
        "userrights-unchangeable-col": "Полгатне, конатнень тондейть аш кода полафтомс",
        "group": "Полга:",
        "right-protect": "Полафтомс араламань куцеманянзон ди петнемс аралаф лопатнень",
        "right-editprotected": "Петнемс аралаф лопатнень (какскадонь араламада башка)",
        "right-editinterface": "Петнемс тиить лопанц арафнеманзон",
-       "right-editusercssjs": "Петнемс иля тиихнень CSS ди JS файлснон",
        "right-editusercss": "Петнемс иля тиихнень CSS файлснон",
        "right-edituserjs": "Петнемс иля тиихнень JS файлснон",
        "right-rollback": "Куроконе мумс мекольце тиить конась петнесь лопат",
        "rcshowhideanons": "$1 лемфтома тиихть",
        "rcshowhidepatr": "$1 ванондоф петнемат",
        "rcshowhidemine": "$1 эсь петнемат",
-       "rclinks": "Няфтемс $1 ётай полафнемат мекольце $2 шис<br />$3",
+       "rclinks": "Няфтемс $1 ётай полафнемат мекольце $2 шис",
        "diff": "яв.",
        "hist": "ист.",
        "hide": "Кяшемс",
        "undeleteviewlink": "ваномс",
        "undeleteinvert": "Валхтомс кочкама",
        "undeletecomment": "Мяльполаткс:",
-       "undeletedrevisions": "{{PLURAL:$1|1 верзие|$1 верзиет}} мърдафтфт",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 верзие|$1 верзиет}} эди {{PLURAL:$2|1 файл|$2 файлхт}} мърдафтфт",
-       "undeletedfiles": "{{PLURAL:$1|1 файл|$1 файлхт}} мърдафтфт",
        "cannotundelete": "Мърдафтома изь лисев; иля тиись, улема, ульсь васенцекс кие сонь мърдафтозе.",
        "undeletedpage": "'''$1 мърдафтфоль'''\n\nВанк [[Special:Log/delete|нардамань лувомась]] мекольце нардаматнень эди мърдафтоматнень няфтеманкса.",
        "undelete-header": "Ванк [[Special:Log/delete|нардамань лувомась]] улхкомба нардаф лопатнень няфтеманкса.",
        "tag-filter": "[[Special:Tags|Tag]] педямась:",
        "revdelete-restricted": "нолдаф тевс кардафксне системонь вятиксненди",
        "revdelete-unrestricted": "системонь вятиксненди кардафксне валхтфт",
-       "rightsnone": "(аш)",
-       "revdelete-summary": "петнемс нюрьхкяня лихтемать"
+       "rightsnone": "(аш)"
 }
index d42e0e1..35a7e31 100644 (file)
        "anontalk": "Pejin-dresaka",
        "navigation": "Fikarohana",
        "and": "&#32;sy",
-       "qbfind": "Tadiavina",
-       "qbbrowse": "Tadiavina",
-       "qbedit": "Hanova",
-       "qbpageoptions": "Ity pejy ity",
-       "qbmyoptions": "Ny pejiko",
        "faq": "FMM",
-       "faqpage": "Project:FMM",
        "actions": "Tao",
        "namespaces": "Valam-pejy",
        "variants": "Ny ''skin'' Voasintona",
        "edit-local": "Hanova ny famisavisana eo an-toerana",
        "create": "Amboarina",
        "create-local": "Hanampy famisavisana eo an-toerana",
-       "editthispage": "Hanova ity pejy ity",
-       "create-this-page": "Forony ity pejy ity",
        "delete": "Hamafa",
-       "deletethispage": "Fafao ity pejy ity",
-       "undeletethispage": "Hamerina ity pejy ity",
        "undelete_short": "Famerenana fanovana {{PLURAL:$1|$1|$1}}",
        "viewdeleted_short": "Hijery fanovana voafafa {{PLURAL:$1|tokana|$1}}",
        "protect": "Hiaro",
        "protect_change": "ovaina",
-       "protectthispage": "Hiaro an'ity pejy ity",
        "unprotect": "Hanala ny fiarovana",
-       "unprotectthispage": "Hanala idy an'ity pejy ity",
        "newpage": "Pejy vaovao",
-       "talkpage": "Dinidinika momba ity pejy ity",
        "talkpagelinktext": "Dinika",
        "specialpage": "Pejy manokana",
        "personaltools": "Fitaovana manokana",
-       "articlepage": "Hijery ny votoatin'ny pejy",
        "talk": "dinika",
        "views": "Fijerena",
        "toolbox": "Fitaovana",
        "tool-link-userrights": "Hanova ny vondron'i {{GENDER:$1|}}mpikambana",
        "tool-link-userrights-readonly": "Hijery ny vondron'ny mpikambana{{GENDER:$1|}}",
        "tool-link-emailuser": "Handefa mailaka an'ity mpikambana ity{{GENDER:$1|}}",
-       "userpage": "Hijery ny pejy manokan'ny mpikambana",
-       "projectpage": "Pejy meta",
        "imagepage": "Jereo ny pejin'ny sary",
        "mediawikipage": "Hijery ny pejy misy io hafatra io",
        "templatepage": "Jereo ny pejin'ny endrika",
        "preview": "Topi-maso",
        "showpreview": "Asehoy aloha",
        "showdiff": "Asehoy ny fiovana",
-       "blankarticle": "<strong>Tandremo:</strong> Fotsy ny pejy tianao hoforonina.\nRaha manindry an'i \"{{int:savearticle}}\" indray ianao dia hoforonina tsy hisy vontoatiny na inona na innona ilay pejy.",
+       "blankarticle": "<strong>Tandremo:</strong> Fotsy ny pejy tianao hoforonina.\nRaha manindry an'i \"$1\" indray ianao dia hoforonina tsy hisy vontoatiny na inona na innona ilay pejy.",
        "anoneditwarning": "<strong>Fampitandremana :</strong> Tsy niditra tamin'ny kaontinao ianao. Ho hitan'ny vahoaka ny adiresy IP-nao raha manova inona na inona ianao. Raha <strong>[$1 miditra amin'ny kaontinao]</strong> ianao dia ho anisan'ny tombontsoa anananao ny fanaovana ny fiovana amin'ny solonanaranao.",
        "anonpreviewwarning": "''Tsy niditra ianao. Hampitahiry ny adiresy IP anao ao amin'ny tantaram-panovan'ity pejy ity ny fitehirizana ny fanovana.''",
-       "missingsummary": "'''Hafatra fampantsiahivana''' : tsy mbola nanome ny ambangovangom-panovanao ianao.\nRaha mbola tsindriano fanindroany eo amin'ny bokotra {{int:savearticle}}, ho voatahiry tsy fanambarana ny fanovanao.",
+       "missingsummary": "'''Hafatra fampantsiahivana''' : tsy mbola nanome ny ambangovangom-panovanao ianao.\nRaha mbola tsindriano fanindroany eo amin'ny bokotra $1, ho voatahiry tsy fanambarana ny fanovanao.",
        "missingcommenttext": "Ampidiro ny ambangovangony azafady.",
        "missingcommentheader": "'''Fampahatsiahivana :''' Tsy nampiditra lohateny amin'ity resaka ity ianao.\nRaha tsindrianao indray eo amin'ny « {{MediaWiki:Savearticle}} » ho voatahiry tsy misy lohateny ny fanovananao.",
        "summary-preview": "Topi-maso n'ilay ambangovangony :",
        "editingsection": "Fanovana $1 (fizarana)",
        "editingcomment": "Fanovana $1 (fizarana vaovao)",
        "editconflict": "Fanovana mifandona : $1",
-       "explainconflict": "Nisy olon-kafa koa nanova ity pejy ity taorian'ny nanombohanao nanova azy.\nIreto ny votoatin'ny pejy, ilay eo ambony ny votoatiny araka izay endriny ankehitriny,\nilay eo ambany no misy ny fanovana saika hataonao.\nMila mampiditra ny fanovana nataonao ao anatin'ny votoatiny ankehitriny ianao.\nNy lahatsoratra ao amin'ilay faritra ambony '''ihany''' no ho voatahiry rehefa manindry ilay bokotra \"{{int:savearticle}}\" ianao.",
+       "explainconflict": "Nisy olon-kafa koa nanova ity pejy ity taorian'ny nanombohanao nanova azy.\nIreto ny votoatin'ny pejy, ilay eo ambony ny votoatiny araka izay endriny ankehitriny,\nilay eo ambany no misy ny fanovana saika hataonao.\nMila mampiditra ny fanovana nataonao ao anatin'ny votoatiny ankehitriny ianao.\nNy lahatsoratra ao amin'ilay faritra ambony '''ihany''' no ho voatahiry rehefa manindry ilay bokotra \"$1\" ianao.",
        "yourtext": "Lahatsoratrao",
        "storedversion": "Votoatiny voatahiry",
        "nonunicodebrowser": "'''FAMPITANDREMANA: Tsy mifanaraka tanteraka amin'ny unicode ny navigateur-nao. Misy ihany anefa fika napetraka hahafahanao manova ny lahatsoratra: Ny litera tsy ASCII dia hiseho amin'ny fango isa ta-enina ambin'ny folo.'''",
        "editusergroup": "Hampiditra vondrom-pikambana",
        "editinguser": "Fanovana ny zon'ny mpikambana <strong>{{GENDER:$1|}}[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Hanova vondrom-pikambana",
+       "userrights-viewusergroup": "Hijery ny vondrom-mpikambana{{GENDER:$1|}}",
        "saveusergroups": "{{GENDER:$1|}}Tehirizo ny vondrom-pikambana",
        "userrights-groupsmember": "Mpikambana amin'ny vondrona:",
        "userrights-groupsmember-auto": "Mpikambana tsy dia voalazan'i :",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (jereo koa ny [[Special:NewPage|lisitry ny pejy vaovao]])",
        "recentchanges-submit": "Aseho",
        "rcfilters-activefilters": "Sivana miasa",
+       "rcfilters-quickfilters": "Rohy maika",
+       "rcfilters-savedqueries-defaultlabel": "Sivana voatahiry",
+       "rcfilters-savedqueries-rename": "Hanova ny anarana",
+       "rcfilters-savedqueries-remove": "Esorina",
+       "rcfilters-savedqueries-new-name-label": "Anarana",
+       "rcfilters-savedqueries-apply-label": "Hamorona rohy haingana",
+       "rcfilters-savedqueries-cancel-label": "Avela",
        "rcfilters-restore-default-filters": "Hamerina sivana ampiasaina raha tsy misy",
        "rcfilters-clear-all-filters": "Hamafa ny sivana rehetra",
        "rcfilters-search-placeholder": "Hanivana ny fiovana farany (tetezo na manomboha manoratra)",
        "rcfilters-filter-bots-description": "Fiovana nataon'ny rôbô aotômatika.",
        "rcfilters-filter-humans-label": "Olona (tsy rôbô)",
        "rcfilters-filter-humans-description": "Fiovana nataon'ny olombelona mpikambana.",
+       "rcfilters-filtergroup-reviewstatus": "Satan'ny reviziôna",
        "rcfilters-filter-patrolled-label": "Voatsidika",
        "rcfilters-filter-patrolled-description": "Fiovana nomarihana ho voatsidika.",
        "rcfilters-filter-unpatrolled-label": "Tsy mbola voatsidika",
        "rcfilters-filter-minor-description": "Fiovana nataon'ny tompony ho madinika.",
        "rcfilters-filter-major-label": "Fiovana tsy madinika",
        "rcfilters-filter-major-description": "Fiovana tsy natao ho madinika.",
+       "rcfilters-filter-watchlist-watched-label": "Amin'ny pejy arahana",
+       "rcfilters-filter-watchlist-notwatched-label": "Tsy amin'ny pejy arahana",
        "rcfilters-filtergroup-changetype": "Karazam-piovana",
        "rcfilters-filter-pageedits-label": "Fiovam-pejy",
        "rcfilters-filter-pageedits-description": "Manova votoatin'ny wiki, resaka, visavisan-tsokajy...",
        "rcfilters-filter-categorization-label": "Fiovana amin'ny sokajy",
        "rcfilters-filter-categorization-description": "Fandraiketana an'ireo pejy ampiana na esorina amin'ny sokajy.",
        "rcfilters-filter-logactions-label": "Asa voalaogy",
+       "rcfilters-filtergroup-lastRevision": "Reviziôna farany",
+       "rcfilters-filter-lastrevision-label": "Reviziôna farany",
+       "rcfilters-filter-previousrevision-label": "Reviziôna nialoha",
        "rcnotefrom": "Eo ambany dia ahitana ireo fiovana{{PLURAL:$5}} hatry ny <strong>$3, $4</strong> (naseho hatramin'ny <strong>$1</strong>).",
        "rclistfrom": "Asehoy izay vao niova manomboka ny $3 $2",
        "rcshowhideminor": "$1 ny fanovàna kely",
        "rcshowhidecategorization": "$1 ny fisokajiam-pejy",
        "rcshowhidecategorization-show": "Aseho",
        "rcshowhidecategorization-hide": "Afenina",
-       "rclinks": "Asehoy ny $1 niova farany tato anatin'ny $2 andro<br />$3",
+       "rclinks": "Asehoy ny $1 niova farany tato anatin'ny $2 andro",
        "diff": "Fampitahana",
        "hist": "tant.",
        "hide": "Afeno",
        "fewestrevisions": "Pejy vitsy mpanova",
        "nbytes": "$1 {{PLURAL:$1|oktety|oktety}}",
        "ncategories": "{{PLURAL:$1|vondrona|vondrona}} $1",
+       "ninterwikis": "Interwiki $1{{PLURAL:$1|}}",
        "nlinks": "{{PLURAL:$1|rohy|rohy}} $1",
        "nmembers": "{{PLURAL:$1|mpikambana|mpikambana}} $1",
+       "nmemberschanged": "$1 → $2 Mpikambana{{PLURAL:$2|}}",
        "nrevisions": "{{PLURAL:$1|fanovana|fanovana}} $1",
        "nimagelinks": "Ampiasain'ny pejy miisa{{PLURAL:}} $1",
        "ntransclusions": "Ampiasaina eo amin'ny pejy miisa $1 {{PLURAL:}}",
        "protect-expiry-options": "1 ora:1 hour,1 andro:1 day,1 herinandro:1 week,tapa-bolana:2 weeks,1 volana:1 month,3 volana:3 months,6 volana:6 months,1 taona:1 year,mandrakizay:infinite",
        "restriction-type": "Sata ilaina :",
        "restriction-level": "Sokajy ny fanerena :",
-       "minimum-size": "Hnageza fara-fahakeliny",
+       "minimum-size": "Hangeza fara-fahakeliny",
        "maximum-size": "Habe avo indrindra:",
        "pagesize": "(oktety)",
        "restriction-edit": "Hanova",
        "mycontris": "Fandraisan'anjara",
        "anoncontribs": "Fandraisan'anjara",
        "contribsub2": "Ho an'i {{GENDER:$3|$1}} ($2)",
+       "contributions-userdoesnotexist": "Tsy voasoratra anarana ato ny kaontim-pikambana \"$1\".",
        "nocontribs": "Tsy misy fanovana mifanaraka amin'ireo critères ireo.",
        "uctop": "(ankehitriny)",
        "month": "Tamin'ny volana (sy teo aloha) :",
        "unblocked-range": "Afaka ny sakan'i $1.",
        "unblocked-id": "Niala ny sakan'i $1",
        "blocklist": "Mpikambana voasakana",
+       "autoblocklist": "Sakana ho azy",
+       "autoblocklist-submit": "Hikaroka",
+       "autoblocklist-legend": "Hanalisitra ny sakana ho azy",
+       "autoblocklist-localblocks": "Sakana ho azy eto an-toerana{{PLURAL:$1|}}",
+       "autoblocklist-empty": "Tsy misy na inona na inona ny lisitry ny sakana ho azy",
+       "autoblocklist-otherblocks": "Sakana ho azy hafa{{PLURAL:$1|}}",
        "ipblocklist": "Lisitry ny adiresy IP sy mpikambana voasakana",
        "ipblocklist-legend": "Hitady mpikambana voasakana",
        "blocklist-userblocks": "Hanakana ny fanakanana kaonty",
        "blocklist-tempblocks": "Hanakana ny sakana miserana",
        "blocklist-addressblocks": "Hanakana ny fanakanana adiresy IP tokana",
+       "blocklist-rangeblocks": "Hanafina ny sakana araka ny elanelana",
        "blocklist-timestamp": "Daty sy ora",
        "blocklist-target": "Tanjona",
        "blocklist-expiry": "Daty fitsaharana :",
        "block-log-flags-hiddenname": "anaram-pikambana nasitrika",
        "range_block_disabled": "Tsy mandeha ny zo-mpandrindra mamorona fanakanana vondrona IP.",
        "ipb_expiry_invalid": "Tsy mety ilay fotoana hahataperan'ny sakana.",
+       "ipb_expiry_old": "Amina fotoana efa lasa ny daty fitsaharana.",
        "ipb_expiry_temp": "tsy maintsy lalandava ny fanakanana anaram-pikambana nasitrika.",
        "ipb_hide_invalid": "Tsy afaka fafana io kaonty io ; hoatra ny manana fanovana maro loatra izy.",
        "ipb_already_blocked": "Efa voasakana « $1 »",
        "lockdbsuccesstext": "Voahidy ny banky angona\n<br />Aza adino ny manala hidy rehefa vita izay ataonao.",
        "unlockdbsuccesstext": "Voaala soa aman-tsara ny hidin'ny banky angona.",
        "lockfilenotwritable": "Tsy azo soratana ny rakitra fanidiana ny banky angona.\nMba hahafahany manidy na mamoha ny banky angona, mila azo soratan'ny lohamilin-tranonkala izy.",
+       "databaselocked": "Efa voahidy ny banky angona",
        "databasenotlocked": "Tsy voaidy ny banky angona.",
        "lockedbyandtime": "(nataon'i $1 ny $2 tamin'ny $3)",
        "move-page": "Hanova anarana an'i $1",
        "pageinfo-header-restrictions": "Fiarovana an'ilay pejy",
        "pageinfo-header-properties": "Tondron'ilay pejy",
        "pageinfo-display-title": "Lohateny aseho",
+       "pageinfo-default-sort": "Lakilem-pampirimana raha tsy misy",
        "pageinfo-length": "Halavam-pejy (oktety)",
        "pageinfo-article-id": "Laharam-pejy",
        "pageinfo-language": "Tenin'ny votoatiny",
        "pageinfo-authors": "Isa manontolon'ny mpandray anjara",
        "pageinfo-recent-edits": "Fanovana vao haingana (natao tanatin'ny $1)",
        "pageinfo-recent-authors": "Isa vao haingan'ny mpanoratra misongadina",
+       "pageinfo-magic-words": "Teny majika{{PLURAL:$1|}} ($1)",
        "pageinfo-hidden-categories": "Sokajy nafenina{{PLURAL:$1}} ($1)",
        "pageinfo-templates": "Endrika natsofoka{{PLURAL:$1}} ($1)",
        "pageinfo-transclusions": "Pejy natsofoka tanatin'i ($1){{PLURAL:}}",
        "pageinfo-protect-cascading-yes": "Eny",
        "pageinfo-protect-cascading-from": "Ny fiarovana dia miriana avy amin'i",
        "pageinfo-category-info": "Fampahalalana mikasika ny sokajy",
+       "pageinfo-category-total": "Isa manontolon'ny mpikambana",
        "pageinfo-category-pages": "Isam-pejy",
        "pageinfo-category-subcats": "Isan'ny zana-tsokajy",
        "pageinfo-category-files": "Isan'ny rakitra",
        "pageinfo-user-id": "ID mpikambana",
        "markaspatrolleddiff": "Marihana ho voamarina",
        "markaspatrolledtext": "Marihana ho hita sy voatsara",
+       "markaspatrolledtext-file": "Hanamarika ny versiônan'ity rakitra ity ho voavaky",
        "markedaspatrolled": "Voamarina",
        "markedaspatrolledtext": "Nomarihana ho voamarina ny versiona voafidy an'ny [[:$1]].",
        "rcpatroldisabled": "Tsy nalefa ny fanamarinana ao amin'ny fiovana farany.",
        "log-show-hide-patrol": "$1 ny laogy mikasikan'ny versiona voamarina",
        "log-show-hide-tag": "$1 laogim-balizy",
        "confirm-markpatrolled-button": "OK",
+       "confirm-markpatrolled-top": "Hanamarika ny reviziôna $3 an'i $2 ho voamarina?",
        "deletedrevision": "Fanovana an'i $1 taloha voafafa.",
        "filedeleteerror-short": "Tsi-fetezana teo am-pamafàna ilay rakitra : $1",
        "filedeleteerror-long": "Nisy tsi-fetezana nitranga teo am-pamafàna ilay rakitra :\n\n$1",
        "watchlistedit-clear-legend": "Handio ny lisitra arahanao",
        "watchlistedit-clear-explain": "Ho esorina amin'ny lisitry ny pejy arahanao ny lohateny rehetra",
        "watchlistedit-clear-titles": "Lohateny:",
+       "watchlisttools-clear": "Handio ny lisitra arahanao",
        "watchlisttools-view": "pejy arahako maso",
        "watchlisttools-edit": "Jereo sy ovao ny lisitra ny pejy fanaraha-maso",
        "watchlisttools-raw": "Ovay ilay pejy arahako maso amizao",
        "mw-widgets-titleinput-description-new-page": "Tsy mbola misy ilay pejy",
        "mw-widgets-usersmultiselect-placeholder": "Hanampy be kokoa",
        "sessionmanager-tie": "Tsy afaka mampikambana karazan-kataka fampamantarana maromaro: $1.",
+       "randomrootpage": "Foto-pejy kisendra",
        "log-action-filter-all": "Manontolo",
        "log-action-filter-block-block": "Bolongana",
        "log-action-filter-protect-protect": "Fiarovana",
index 1f1e6de..6104b95 100644 (file)
@@ -18,6 +18,7 @@
        "tog-hideminor": "Пытартыш тӧрлатымаш-влак радам гыч изи тӧрлатымаш-влакым кораҥдаш",
        "tog-hidepatrolled": "Тергыме тӧрлатымаш-влакым пытартыш тӧрлатымаш лӱмерыште шылташ",
        "tog-newpageshidepatrolled": "Тергыме лаштык-влакым у лаштык лӱмерыште шылташ",
+       "tog-hidecategorization": "Лаштык категоризацийым шылташ",
        "tog-extendwatchlist": "Чыла вашталтышым, а пытартыш гына огылым ончыкташлан эскерыме лӱмерым кугемдаш",
        "tog-usenewrc": "У тӧрлатымаш саемдыме лӱмерым кучылташ (JavaScript кӱлеш)",
        "tog-numberheadings": "Вуймутым автоматик йӧн дене радамлаш",
@@ -35,6 +36,7 @@
        "tog-watchlisthideown": "Эскерыме лӱмер гыч мыйын тӧрлатымашым кораҥдаш",
        "tog-watchlisthidebots": "Эскерыме лӱмер гыч бот-влакын тӧрлатымашыштым кораҥдаш",
        "tog-watchlisthideminor": "Эскерыме лӱмер гыч изи тӧрлатымаш-влакым кораҥдаш",
+       "tog-watchlisthidecategorization": "Лаштык категоризацийым шылташ",
        "tog-ccmeonemails": "Моло ушнышо-влаклан колтымо серышын копийжым мыламат колташ",
        "tog-diffonly": "Кок версийым таҥастарыме годым лаштыкыште возымым ончыкташ огыл",
        "tog-showhiddencats": "Шылтыме категорийым ончыкташ",
        "qbfind": "Муаш",
        "qbedit": "Тӧрлаташ",
        "qbpageoptions": "Тиде лаштык",
-       "qbmyoptions": "Ð\9cÑ\8bйÑ\8bн Ð»Ð°Ñ\88Ñ\82Ñ\8bк-влак",
+       "qbmyoptions": "Ð\9cÑ\8bйÑ\8bн ÐºÐµÐ»Ñ\8bÑ\88Ñ\82аÑ\80Ñ\8bмаÑ\88ем",
        "faq": "ЧӱВаЙо (Чӱчкыдын вашлиялтше йодыш-влак)",
        "actions": "Сомылка-влак",
        "namespaces": "Лӱм-влак ора",
        "newpage": "У лаштык",
        "talkpage": "Тиде лаштыкым каҥашаш",
        "talkpagelinktext": "Каҥашымаш",
-       "specialpage": "Ð\9bӱмÑ\8bн Ñ\8bÑ\88Ñ\82Ñ\8bме лаштык",
+       "specialpage": "СпеÑ\86лаштык",
        "personaltools": "Паша ӱзгар",
        "articlepage": "Лаштыкыште возымым ончыкташ",
        "talk": "Каҥашымаш",
        "nstab-main": "Лаштык",
        "nstab-user": "Пайдаланышын лаштыкше",
        "nstab-media": "Мультимедиа",
-       "nstab-special": "Ð\9bӱмÑ\8bн Ñ\8bÑ\88Ñ\82Ñ\8bме лаштык",
+       "nstab-special": "СпеÑ\86лаштык",
        "nstab-project": "Проект нерген",
        "nstab-image": "Файл",
        "nstab-mediawiki": "Увертыш",
        "searchprofile-articles-tooltip": "Кычалмаш $1ште",
        "searchprofile-images-tooltip": "Файл-влакым кычалмаш",
        "searchprofile-everything-tooltip": "Чыла лаштык-влакыште кычалаш (каҥашымаш лаштык-влакыштат)",
-       "searchprofile-advanced-tooltip": "Ð\98Ñ\81каÑ\82Ñ\8c Ð² Ð·Ð°Ð´Ð°Ð½Ð½Ñ\8bÑ\85 Ð¿Ñ\80оÑ\81Ñ\82Ñ\80анÑ\81Ñ\82ваÑ\85 Ð¸Ð¼Ñ\91н",
+       "searchprofile-advanced-tooltip": "Ð\9eйÑ\8bÑ\80Ñ\8bмо Ñ\82Ó±Ñ\88калаÑ\88Ñ\82е ÐºÑ\8bÑ\87алаÑ\88",
        "search-result-size": "$1 ({{PLURAL:$2|1 мут|$2 мут}})",
        "search-result-category-size": "$1 {{PLURAL:$1|вхождение|вхождения|вхождений}} ($2 {{PLURAL:$2|подкатегория|подкатегории|подкатегорий}}, $3 {{PLURAL:$3|файл|файла|файлов}}).",
        "search-redirect": "($1 гыч колтымо)",
        "recentchanges-label-minor": "Тиде изи тӧрлатымаш",
        "recentchanges-label-bot": "Тиде тӧрлатымашым бот ыштен",
        "recentchanges-label-unpatrolled": "Тиде тӧрлатымашым нигӧ терген огыл",
+       "recentchanges-label-plusminus": "Мыняр байтлан лаштык вашталтын",
        "recentchanges-legend-heading": "<strong>Легенде:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (тыгак [[Special:NewPages|у лаштык-влак лӱмерым]] ончо)",
        "rcnotefrom": "Ниже перечислены изменения с '''$2''' (не более '''$1''').",
        "rcshowhidepatr": "$1 тергыме тӧрлатымаш",
        "rcshowhidemine": "Мыйын тӧрлымым $1",
        "rcshowhidemine-hide": "шылташ",
-       "rclinks": "Пытартыш $2 кечылан $1 вашталтымашым ончыкташ<br />$3",
+       "rcshowhidecategorization": "Лаштык категоризацийым $1",
+       "rclinks": "Пытартыш $2 кечылан $1 вашталтымашым ончыкташ",
        "diff": "ойырт.",
        "hist": "эрт.",
        "hide": "шылташ",
        "filedelete-submit": "Шӧраш",
        "filedelete-otherreason": "Вес/ешартыш амал:",
        "filedelete-reason-otherlist": "Вес амал",
+       "unwatchedpages": "Эскерыдыме лаштык-влак",
        "listredirects": "Вес вере колтымаш-влак",
+       "unusedtemplates": "Кучылтдымо кышкар-влак",
        "randompage": "Чокым лаштык",
        "statistics": "Иктешлымаш",
        "statistics-header-pages": "Лаштык коклам иктешлымаш",
        "statistics-header-users": "Пайдаланыше коклам иктешлымаш",
        "statistics-header-hooks": "Тӱрлӧ коклам иктешлымаш",
        "statistics-articles": "Возымо лаштык-влак",
-       "statistics-pages": "Лаштык-влак",
+       "statistics-pages": "Лаштык",
        "statistics-pages-desc": "Чыла лаштык-влак (каҥашымаш-влак, вес вере колтымаш-влак да тулеч моло)",
        "statistics-files": "Пуртымо файл-влак",
        "statistics-edits": "{{SITENAME}} лаштыкым чылажге мыняр гана тӧрлатыме",
        "brokenredirects": "Пудыртымо вес вере колтымаш-влак",
        "brokenredirects-edit": "тӧрлаташ",
        "brokenredirects-delete": "шӧраш",
+       "withoutinterwiki": "Интервики деч посна лаштык-влак",
        "withoutinterwiki-submit": "ончыкташ",
+       "fewestrevisions": "Эн шагал версиян лаштык-влак",
        "nbytes": "$1 {{PLURAL:$1|байт}}",
        "nmembers": "$1 {{PLURAL:$1|1=лаштык}}",
        "lonelypages": "Тулык лаштык-влак",
+       "uncategorizedpages": "Категоризироватлыдыме лаштык-влак",
+       "uncategorizedcategories": "Категоризироватлыдыме категорий-влак",
+       "uncategorizedimages": "Категоризироватлыдыме файл-влак",
+       "uncategorizedtemplates": "Категоризироватлыдыме кышкар-влак",
+       "unusedcategories": "Кучылтдымо категорий-влак",
+       "unusedimages": "Кучылтдымо файл-влак",
        "wantedcategories": "Ыштыман категорий-влак",
-       "wantedpages": "Ыштышаш лаштык-влак",
+       "wantedpages": "Ышташлан лаштык-влак",
        "wantedfiles": "Ыштыман файл-влак",
        "wantedtemplates": "Ыштыман ямдылык-влак",
        "prefixindex": "Чыла лаштык-влак префикс дене",
        "shortpages": "Кӱчык лаштык-влак",
        "longpages": "Кужу лаштык-влак",
+       "deadendpages": "Ончыко наҥгайдыме лаштык-влак",
        "protectedpages": "Тӧрлатымаш деч аралыме лаштык-влак",
        "usercreated": "$1, $2 шагатлан {{GENDER:$3|регистрацийым эртен|регистрацийым эртен}}",
        "newpages": "У лаштык-влак",
        "newpages-username": "Пайдаланышын лӱмжӧ:",
+       "ancientpages": "Пытартыш тӧрталтымаш-влак почеш ойырымо статья-влак",
        "move": "Лӱмым вашталташ",
        "movethispage": "Тиде лаштыкын лӱмжым вашталташ",
        "pager-newer-n": "{{PLURAL:$1|1=вес|вес}}",
        "listusers-submit": "ончыкташ",
        "listusers-blocked": "(йӧн петырыме)",
        "activeusers": "Чӱчкыдын пайдаланыше-влак",
-       "activeusers-count": "Пытартыш $3 {{PLURAL:$3|1=кечыште|кечылаште}} $1 {{PLURAL:$1|1=тӧрлатымаш|тӧрлатымаш-влак}}",
+       "activeusers-count": "Пытартыш $3 {{PLURAL:$3|1=кечыште|кечылаште}} $1 {{PLURAL:$1|1=тӧрлатымаш|тӧрлатымаш}}",
        "activeusers-submit": "ончыкташ",
        "listgrouprights-members": "(тӱшкаште улшо-влак)",
        "emailuser": "Пайдаланыше дек серыш",
        "unwatchthispage": "Эскерымым чарнаш",
        "watchlist-details": "Эскерымаш лӱмерыштет $1 {{PLURAL:$1|лаштык}}, каҥашымаш лаштык-влакым шотлыде",
        "wlshowlast": "Пытартыш $1 шагат $2 кечылан  ончыкташ",
+       "wlshowhidecategorization": "лаштык категоризацийым",
        "watchlist-options": "Эскерыме лӱмерын келыштарымаш",
        "watching": "Эскерымаш лӱмерыш ешарымаш...",
        "unwatching": "Эскерымаш лӱмер гыч шӧрымаш...",
        "whatlinkshere-page": "Лаштык:",
        "linkshere": "'''[[:$1]]''' лаштык дене кылдалтше лаштык-влак:",
        "nolinkshere": "'''[[:$1]]''' лаштык дене тетла нимогай лаштык кылдалтын огыл",
-       "nolinkshere-ns": "ТÑ\8bгай Ð»Ó±Ð¼-влакÑ\8bн ÐºÑ\83мдÑ\8bкÑ\8bÑ\88Ñ\82о '''[[:$1]]''' Ð»Ð°Ñ\88Ñ\82Ñ\8bк Ð´ÐµÐ½Ðµ Ð½Ð¸Ð¼Ð¾Ð³Ð°Ð¹ Ð²ÐµÑ\81 Ð»Ð°Ñ\88Ñ\82Ñ\8bк-влак ÐºÑ\8bлÑ\8bм Ð¾Ð³Ñ\8bÑ\82 ÐºÑ\83Ñ\87о.",
+       "nolinkshere-ns": "ТÑ\8bгай Ð»Ó±Ð¼-влакÑ\8bн ÐºÑ\83мдÑ\8bкÑ\8bÑ\88Ñ\82о '''[[:$1]]''' Ð»Ð°Ñ\88Ñ\82Ñ\8bк Ð´ÐµÐ½Ðµ Ð½Ð¸Ð¼Ð¾Ð³Ð°Ð¹ Ð»Ð°Ñ\88Ñ\82Ñ\8bк-влак Ð¾Ð³Ñ\8bÑ\82 ÐºÑ\8bлдалÑ\82.",
        "isredirect": "вес вере колтышо лаштык",
        "istemplate": "пуртымаш",
        "isimage": "файлыш кылвер",
        "tooltip-t-contributions": "{{GENDER:$1|Пайдаланышын ыштыме пашажым}} ончалаш",
        "tooltip-t-emailuser": "Тиде пайдаланышылан электрон серышым возаш",
        "tooltip-t-upload": "Файл-влакым пурташ",
-       "tooltip-t-specialpages": "Ð\9bӱмÑ\8bн Ñ\8bÑ\88Ñ\82Ñ\8bме лаштык-влак",
+       "tooltip-t-specialpages": "СпеÑ\86лаштык-влак",
        "tooltip-t-print": "Савыкташлан келыштараш",
        "tooltip-t-permalink": "Тиде лашткыш кондышо кылвер (ссылка)",
        "tooltip-ca-nstab-main": "Лаштыкыште возымым ончыкташ",
        "watchlisttools-edit": "Эскерыме лӱмерым ончалаш да тӧрлаташ",
        "watchlisttools-raw": "Эскерыме лӱмерым текст семын тӧрлаш",
        "duplicate-defaultsort": "Внимание. Ключ сортировки по умолчанию «$2» переопределяет прежний ключ сортировки по умолчанию «$1».",
-       "version-specialpages": "Ð\9bӱмÑ\8bн Ñ\8bÑ\88Ñ\82Ñ\8bме лаштык-влак",
+       "version-specialpages": "СпеÑ\86лаштык-влак",
        "fileduplicatesearch-submit": "Кычалаш",
-       "specialpages": "Ð\9bӱмÑ\8bн Ñ\8bÑ\88Ñ\82Ñ\8bме лаштык-влак",
-       "specialpages-group-other": "Моло лӱмын ыштыме лаштык-влак",
+       "specialpages": "СпеÑ\86лаштык-влак",
+       "specialpages-group-other": "Моло спецлаштык-влак",
        "specialpages-group-login": "Пурымаш / регистрацийым эрташ",
        "specialpages-group-users": "Пайдаланыше-влак да нунын йӧн-влак",
        "specialpages-group-highuse": "Чӱчкыдын кучылтмо лаштык-влак",
index a41205a..800ae70 100644 (file)
        "externaldberror": "Alah tajadi kasalahan otentikasi basis data eksternal atau Sanak indak diizinan malakuan pabaruan tahadok akun eksternal Sanak.",
        "login": "Masuak log",
        "nav-login-createaccount": "Masuak log / buek akun",
-       "userlogin": "Masuak log / buek akun",
-       "userloginnocreate": "Masuak log",
        "logout": "Kalua log",
        "userlogout": "Kalua log",
        "notloggedin": "Alun masuak log",
        "userlogin-noaccount": "Alun ado akun?",
        "userlogin-joinproject": "Join {{SITENAME}}",
-       "nologin": "Alun ado akun? '''$1'''.",
-       "nologinlink": "Buek akun baru",
        "createaccount": "Buek akun",
-       "gotaccount": "Alah tadaftar sabagai pangguno? '''$1'''.",
-       "gotaccountlink": "Masuak log",
-       "userlogin-resetlink": "Lupo rincian info masuak Sanak?",
        "userlogin-resetpassword-link": "Buek ulang kato sandi",
        "createacct-emailrequired": "Alamaik surel",
        "createacct-emailoptional": "Alamaik surel (opsional)",
        "createacct-email-ph": "Masuakan alamaik surel Sanak",
        "createaccountmail": "Pakai kato sandi sumbarang samantaro, lalu kirim ka alamaik surel nan di bawah ko",
        "createacct-realname": "Namo asli (opsional)",
-       "createaccountreason": "Alasan:",
        "createacct-reason": "Alasan",
        "createacct-reason-ph": "Manga Sanak mambuek akun lain",
        "createacct-submit": "Buek akun Sanak",
        "passwordreset-emaildisabled": "Fitur surel alah dimatian pado wiki iko.",
        "passwordreset-username": "Namo pangguno:",
        "passwordreset-domain": "Domain:",
-       "passwordreset-capture": "Caliak kaputusannyo?",
-       "passwordreset-capture-help": "Kalau sanak mancentang kotak ko, surel (jo kato sandi samantaro) akan nampak jo Sanak.",
        "passwordreset-email": "Alamaik surel:",
        "passwordreset-emailtitle": "Detail akun di {{SITENAME}}",
        "passwordreset-emailtext-ip": "Sasaurang (mungkin Sanak, dari alamaik IP $1) mamintak parubahan kato sandi untuak {{SITENAME}} ($4). {{PLURAL:$3|Akun}} barikuik takaik jo alamaik surel ko:\n\n$2\n\n{{PLURAL:$3|Sandi samantaro}} barikuik akan habih masonyo dalam {{PLURAL:$5|$5 ari}}.\nSanak harus masuak dan mamiliah sandi baru. Jikok urang lain mambuek pamintaan ko atau jikok Sanak ingek sandi awal dan indak nio maubahnyo, Sanak dapek mangacuahkan pasan ko dan taruih manggunoan kato sandi lamo.",
        "anonpreviewwarning": "''Sanak alun masuak log. Manyimpan laman akan manyababkan alamaik IP Sanak tacatat pado riwayat suntiangan laman iko.''",
        "missingsummary": "'''Paringatan:''' Sanak indak mamasuakan ringkasan panyuntiangan. Jikok Sanak baliak manakan tombol Simpan, suntiangan Sanak akan disimpan tanpa ringkasan panyuntiangan.",
        "missingcommenttext": "Masuakan komentar Sanak di bawah ko.",
-       "missingcommentheader": "'''Paringatan:''' Sanak alun maagihan subjek atau judul untuak komenta Sanak. Jikok Sanak baliak manakan \"{{int:savearticle}}\", suntiangan Sanak akan disimpan tanpa komenta tasabuik.",
+       "missingcommentheader": "'''Paringatan:''' Sanak alun maagihan subjek atau judul untuak komenta Sanak. Jikok Sanak baliak manakan \"$1\", suntiangan Sanak akan disimpan tanpa komenta tasabuik.",
        "summary-preview": "Ringkasan pratayang:",
        "subject-preview": "Pratayang subyek/judul:",
        "blockedtitle": "Pangguno diblokir",
        "editingsection": "Suntiang $1 (bagian)",
        "editingcomment": "Manyuntiang $1 (bagian baru)",
        "editconflict": "Konflik panyuntiangan: $1",
-       "explainconflict": "Urang lain lah manyuntiang laman ko sajak Sanak mulai manyuntiangnyo.\nBagian ateh teks ko manganduang teks laman saat kini ko.\nParubahan nan Sanak lakuan ditunjuakan pado bagian bawah teks.\nSanak hanyo paralu manggabungan parubahan Sanak jo teks nan lah ado.\n'''Hanyo''' teks pado bagian ateh lamanlah nan akan disimpan jikok Sanak manakan \"{{int:savearticle}}\".",
+       "explainconflict": "Urang lain lah manyuntiang laman ko sajak Sanak mulai manyuntiangnyo.\nBagian ateh teks ko manganduang teks laman saat kini ko.\nParubahan nan Sanak lakuan ditunjuakan pado bagian bawah teks.\nSanak hanyo paralu manggabungan parubahan Sanak jo teks nan lah ado.\n'''Hanyo''' teks pado bagian ateh lamanlah nan akan disimpan jikok Sanak manakan \"$1\".",
        "yourtext": "Teks Sanak",
        "storedversion": "Versi tasimpan",
        "nonunicodebrowser": "'''Paringatan: Paramban web Sanak indak mandukuang Unicode.'''\nAlah ado jalan kalua bia Sanak dapek manyuntiang laman sacaro aman: karakter non-ASCII akan muncua dalam kotak suntiang sabagai kode heksadesimal.",
        "saveprefs": "Simpan",
        "restoreprefs": "Baliakan ka setelan awal",
        "prefs-editing": "Panyuntiangan",
-       "rows": "Barih:",
-       "columns": "Kolom:",
        "searchresultshead": "Cari",
        "stub-threshold": "Ambang bateh untuak format <a href=\"#\" class=\"stub\">pautan rancangan</a>:",
        "stub-threshold-disabled": "Nonaktifkan",
        "userrights-reason": "Alasan:",
        "userrights-no-interwiki": "Sanak indak bahak untuak mangubah hak pangguno di wiki lain.",
        "userrights-nodatabase": "Basis data $1 indak ado atau bukan disiko.",
-       "userrights-nologin": "Sanak musti [[Special:UserLogin|masuak log]] jo akun panguruih untuak dapek mangubah hak pangguno.",
-       "userrights-notallowed": "Akun Sanak indak ado izin untuak manambah atau malapeh hak pangguno.",
        "userrights-changeable-col": "Kalompok nan dapek Sanak ubah",
        "userrights-unchangeable-col": "Kalompok nan indak dapek Sanak ubah",
        "group": "Kalompok:",
        "rcshowhideanons": "$1 pangguno anon",
        "rcshowhidepatr": "$1 suntiangan tapatroli",
        "rcshowhidemine": "$1 suntiangan denai",
-       "rclinks": "Tunjuakan $1 parubahan tabaru dalam $2 hari tarakhia<br />$3",
+       "rclinks": "Tunjuakan $1 parubahan tabaru dalam $2 hari tarakhia",
        "diff": "bedo",
        "hist": "sijarah",
        "hide": "Suruakan",
        "undeletebtn": "Baliakan",
        "undeletelink": "caliak/baliakan",
        "undeleteviewlink": "caliak",
-       "undeletedrevisions": "{{PLURAL:$1|$1 revisi}} alah dikambalian",
        "undelete-header": "Caliak [[Special:Log/delete|log pangapuihan]] untuak daftar laman nan baru dihapuih.",
        "undelete-search-title": "Cari laman nan dihapuih",
        "undelete-search-box": "Cari laman nan dihapuih",
index 904c12f..7b827c3 100644 (file)
@@ -20,7 +20,8 @@
                        "Nemo bis",
                        "Matma Rex",
                        "Kaldari",
-                       "Xð"
+                       "Xð",
+                       "Srdjan m"
                ]
        },
        "tog-underline": "Потцртување на врски:",
        "mypage": "Страница",
        "mytalk": "разговор",
        "anontalk": "Разговор",
-       "navigation": "Ð\9dавигаÑ\86иÑ\98а",
+       "navigation": "Ð\9fÑ\80егледник",
        "and": "&#32;и",
-       "qbfind": "Најди",
-       "qbbrowse": "Прелистај",
-       "qbedit": "Уреди",
-       "qbpageoptions": "Оваа страница",
-       "qbmyoptions": "Мои страници",
        "faq": "ЧПП",
-       "faqpage": "Project:ЧПП",
        "actions": "Дејства",
        "namespaces": "Именски простори",
        "variants": "Варијанти",
-       "navigation-heading": "Ð\9dавигаÑ\86ионо Ð¼ÐµÐ½Ð¸",
+       "navigation-heading": "Ð\9fÑ\80егледник",
        "errorpagetitle": "Грешка",
        "returnto": "Назад на $1.",
        "tagline": "Од {{SITENAME}}",
        "edit-local": "Уреди месен опис",
        "create": "Создај",
        "create-local": "Додај месен опис",
-       "editthispage": "Уреди ја страницава",
-       "create-this-page": "Создај ја страницава",
        "delete": "Избриши",
-       "deletethispage": "Избриши ја страницава",
-       "undeletethispage": "обнови ја страницава",
        "undelete_short": "Врати {{PLURAL:$1|едно уредување|$1 уредувања}}",
        "viewdeleted_short": "Преглед на {{PLURAL:$1|едно избришано уредување|$1 избришани уредувања}}",
        "protect": "Заштити",
        "protect_change": "промена",
-       "protectthispage": "Заштити ја страницава",
        "unprotect": "Измени заштита",
-       "unprotectthispage": "Измена на заштитата на страницава",
        "newpage": "Нова страница",
-       "talkpage": "Разговор",
        "talkpagelinktext": "разговор",
        "specialpage": "Службена страница",
        "personaltools": "Лични алатки",
-       "articlepage": "Преглед на содржината",
        "talk": "Разговор",
        "views": "Посети",
        "toolbox": "Алатки",
        "tool-link-userrights": "Смени ги {{GENDER:$1|корисничките}} групи",
        "tool-link-userrights-readonly": "Погл. {{GENDER:$1|кориснички}} групи",
        "tool-link-emailuser": "Испрати е-пошта на {{GENDER:$1|корисников}}",
-       "userpage": "Преглед на корисничката страница",
-       "projectpage": "Преглед на проектната страница",
        "imagepage": "Преглед на страницата на податотеката",
        "mediawikipage": "Преглед на пораката",
        "templatepage": "Преглед на шаблонот",
        "savearticle": "Зачувај",
        "savechanges": "Зачувај промени",
        "publishpage": "Објави ја страницата",
-       "publishchanges": "Ð\9eбÑ\98ави Ð³Ð¸ Ð¿Ñ\80омениÑ\82е",
+       "publishchanges": "Ð\9eбÑ\98ави Ð¿Ñ\80омени",
        "preview": "Преглед",
        "showpreview": "Преглед",
        "showdiff": "Прикажи промени",
-       "blankarticle": "<strong>Предупредување:</strong> Страницата што ја создавате е празна.\nАко повторно стиснете на „{{int:savearticle}}“, страницата ќе биде создадена без никаква содржина во неа.",
+       "blankarticle": "<strong>Предупредување:</strong> Страницата што ја создавате е празна.\nАко повторно стиснете на „$1“, страницата ќе биде создадена без никаква содржина во неа.",
        "anoneditwarning": "<strong>Предупредување:</strong> Не сте најавени. Вашата IP-адреса ќе биде јавно видлива ако уредувате. Ако <strong>[$1 се најавите]</strong> или <strong>[$2 направите сметка]</strong>, тогаш уредувањата ќе се припишуваат на вашето корисничко име, покрај другите погодности.",
        "anonpreviewwarning": "''Не сте најавени. Ако ја зачувате, Вашата IP-адреса ќе биде заведена во историјата на уредување на страницата.''",
        "missingsummary": "'''Потсетник:''' Не внесовте опис на измените. Ако притиснете Зачувај повторно, вашите измени ќе се зачуваат без опис.",
-       "selfredirect": "<strong>Предупредување:</strong> Создавате пренасочување кон истата статија.\nМоже да сте укажале грешна целна страница, или пак уредувате погрешна страница.\nАко стиснете на „{{int:savearticle}}“ повторно, тогаш пренасочувањето бездруго ќе се создаде.",
+       "selfredirect": "<strong>Предупредување:</strong> Создавате пренасочување кон истата статија.\nМоже да сте укажале грешна целна страница, или пак уредувате погрешна страница.\nАко стиснете на „$1“ повторно, тогаш пренасочувањето бездруго ќе се создаде.",
        "missingcommenttext": "Ве молиме внесете коментар подолу.",
-       "missingcommentheader": "<strong>Потсетување:</strong> Не внесовте наслов за овој коментар.\nАко повторно стиснете на „{{int:savearticle}}“, уредувањето ќе биде зачувано без наслов.",
+       "missingcommentheader": "<strong>Потсетување:</strong> Не внесовте наслов за овој коментар.\nАко повторно стиснете на „$1“, уредувањето ќе биде зачувано без наслов.",
        "summary-preview": "Преглед на описот:",
        "subject-preview": "Преглед на насловот:",
        "previewerrortext": "Се појави грешка при обидот да се прегледаат промените.",
        "accmailtitle": "Лозинката е испратена.",
        "accmailtext": "На $2 е спратена е случајно создадена лозинка за [[User talk:$1|$1]] е испратена. Истата може да се смени на страницата ''[[Special:ChangePassword|Менување на лозинка]]'' откако ќе се најавите.",
        "newarticle": "(нова)",
-       "newarticletext": "Ð\9fÑ\80оÑ\81ледивÑ\82е Ð²Ñ\80Ñ\81ка Ð´Ð¾ Ñ\81Ñ\82Ñ\80аниÑ\86а ÐºÐ¾Ñ\98а не постои.\nЗа да ја создадете страницата, напишете текст во полето подолу ([$1 помош]). Ако сте овде по грешка, само систнете на копчето '''назад''' во вашиот прелистувач.",
+       "newarticletext": "Ð\94оÑ\98довÑ\82е Ð½Ð° Ð²Ñ\80Ñ\81ка Ð´Ð¾ Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\88Ñ\82о не постои.\nЗа да ја создадете страницата, напишете текст во полето подолу ([$1 помош]). Ако сте овде по грешка, само систнете на копчето '''назад''' во вашиот прелистувач.",
        "anontalkpagetext": "----\n<em>Ова е страница за разговор со анонимен корисник кој сè уште не регистрирал корисничка сметка или не ја користи.<em>\nЗатоа мораме да ја користиме неговата бројчена IP-адреса за да го препознаеме.\nЕдна ваква IP-адреса може да ја делат повеќе корисници.\nАко сте анонимен корисник и сметате дека кон вас се упатени нерелевантни коментари, тогаш [[Special:CreateAccount|создајте корисничка сметка]] или [[Special:UserLogin|најавете се]] за да избегнете поистоветување со други анонимни корисници во иднина.''",
        "noarticletext": "Таква страница сè уште не постои.\nМожете да проверите [[Special:Search/{{PAGENAME}}|дали насловот се споменува]] во други статии,\nда ги <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пребарате дневниците],\nили да [{{fullurl:{{FULLPAGENAME}}|action=edit}} ја создадете]</span>.",
        "noarticletext-nopermission": "Таква страница сè уште не постои.\nМожете да проверите [[Special:Search/{{PAGENAME}}|дали насловот се споменува]] во други статии или пак да <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пребарате поврзаните дневници]</span>, но немате дозвола да ја создадете страницата.",
        "editingsection": "Уредување на $1 (пасус)",
        "editingcomment": "Уредување на $1 (ново заглавие)",
        "editconflict": "Спротиставеност во уредувањето: $1",
-       "explainconflict": "Некој друг ја променил страницата откако почнавте да ја уредувате.\nГорниот дел за текст ја содржи страницата како што сега постои.\nВашите промени се прикажани во долниот дел.\nЌе морате да ги внесете вашите промени со постоечкиот текст.\n'''Само''' текстот во горниот дел ќе биде зачуван кога ќе притиснете на „{{int:savearticle}}“.",
+       "explainconflict": "Некој друг ја променил страницата откако почнавте да ја уредувате.\nГорниот дел за текст ја содржи страницата како што сега постои.\nВашите промени се прикажани во долниот дел.\nЌе морате да ги внесете вашите промени со постоечкиот текст.\n'''Само''' текстот во горниот дел ќе биде зачуван кога ќе притиснете на „$1“.",
        "yourtext": "Вашиот текст",
        "storedversion": "Зачувана преработка",
        "nonunicodebrowser": "'''ПРЕДУПРЕДУВАЊЕ: Вашиот прелистувач не поддржува Уникод.\nПостои решение што овозможува безбедно да уредување страници: во полето за уредување не-ASCII знаците ќе се јавуваат како хексадецимални кодови.",
        "readonlywarning": "<strong>Предупредување: Базата на податоци е заклучена заради одржување, и затоа сега нема да можете да ги зачувате промените.</strong>\n\nВи препорачуваме да го прекопирате текстот на страна и да го зачувате за подоцна.\n\nАдминистраторот кој ја заклучил базата на податоци го дал следново образложение: $1",
        "protectedpagewarning": "'''Предупредување:  Оваа страница е заклучена, така што само корисници со администраторски привилегии можат да ја уредуваат.'''\nЗа ваша информација, последната ставка во дневникот на промени е прикажана подолу:",
        "semiprotectedpagewarning": "'''Предупредување:'''  Оваа страница е заштитена, така што може да ја уредуваат само регистрирани корисници.'''\nЗа ваша информација, подолу е прикажана последната ставка во дневникот на измени:",
-       "cascadeprotectedwarning": "<strong>Предупредување:</strong> Оваа страница е заклучена, така што можат да ја уредуваат само корисници со администраторски привилегии, бидејќи е вклучена во {{PLURAL:$1|следнава „преносно-заштитена“ страница|следниве „преносно-заштитени“ страници}}:",
+       "cascadeprotectedwarning": "<strong>Предупредување:</strong> Оваа страница е заклучена, така што можат да ја уредуваат само корисници со [[Special:ListGroupRights|извесни права]], бидејќи е вклучена во {{PLURAL:$1|следнава „преносно-заштитена“ страница|следниве „преносно-заштитени“ страници}}:",
        "titleprotectedwarning": "'''Предупредување:'''  Оваа страница е заклучена, така што се потребни [[Special:ListGroupRights|посебни права]] за да се создаде.''''\nЗа ваша информација, последната ставка во дневникот на промени е прикажана подолу:",
        "templatesused": "{{PLURAL:$1|Шаблон|Шаблони}} на страницава:",
        "templatesusedpreview": "{{PLURAL:$1|Шаблон|Шаблони}} на прегледуваната страница:",
        "search-file-match": "(се совпаѓа со содржината на податотеката)",
        "search-suggest": "Дали мислевте на: $1",
        "search-rewritten": "Исход од $1. Или побарајте го $2.",
-       "search-interwiki-caption": "Ð\97бÑ\80аÑ\82имени проекти",
+       "search-interwiki-caption": "Ð\98Ñ\81Ñ\85од Ð¾Ð´ Ð·Ð±Ñ\80аÑ\82имениÑ\82е проекти",
        "search-interwiki-default": "Најдено на $1:",
        "search-interwiki-more": "(уште)",
        "search-interwiki-more-results": "повеќе ставки",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Прикажи",
        "rcfilters-activefilters": "Активни филтри",
+       "rcfilters-quickfilters": "Зачувани филтерски поставки",
+       "rcfilters-quickfilters-placeholder-title": "Засега нема зачувани врски",
+       "rcfilters-quickfilters-placeholder-description": "За да ги зачувате вашите филтерски псотавки за да ги употребите другпат, стиснете на иконката за бележник во подрачјето „Активен филтер“ подолу.",
+       "rcfilters-savedqueries-defaultlabel": "Зачувани филтри",
+       "rcfilters-savedqueries-rename": "Преименувај",
+       "rcfilters-savedqueries-setdefault": "Задај како основно",
+       "rcfilters-savedqueries-unsetdefault": "Отстрани од основно",
+       "rcfilters-savedqueries-remove": "Отстрани",
+       "rcfilters-savedqueries-new-name-label": "Назив",
+       "rcfilters-savedqueries-apply-label": "Зачувај поставки",
+       "rcfilters-savedqueries-cancel-label": "Откажи",
+       "rcfilters-savedqueries-add-new-title": "Зачувај тековни филтерски поставки",
        "rcfilters-restore-default-filters": "Поврати основни филтри",
        "rcfilters-clear-all-filters": "Тргни ги сите филтри",
        "rcfilters-search-placeholder": "Филтрирај скорешни промени (прелстајте или почнете да пишувате)",
        "rcfilters-filter-unregistered-label": "Нерегистрирани",
        "rcfilters-filter-unregistered-description": "Уредници кои не се најавени.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Овој филтер е протиставен со {{PLURAL:$2|следниов филтер|следниве филтри}} за искуство, {{PLURAL:$2|кој наоѓа|кои наоѓаат}} само регистрирани корисници: $1",
-       "rcfilters-filtergroup-authorship": "УÑ\80еди Ð°Ð²Ñ\82оÑ\80Ñ\81Ñ\82во",
-       "rcfilters-filter-editsbyself-label": "Ваши сопствени уредувања",
-       "rcfilters-filter-editsbyself-description": "Ð\92аÑ\88и Ñ\83Ñ\80едÑ\83ваÑ\9aа.",
-       "rcfilters-filter-editsbyother-label": "Туѓи уредувања",
-       "rcfilters-filter-editsbyother-description": "УÑ\80едÑ\83ваÑ\9aа Ð½Ð°Ð¿Ñ\80авени Ð¾Ð´ Ð´Ñ\80Ñ\83ги ÐºÐ¾Ñ\80иÑ\81ниÑ\86и (не Ð¾Ð´ Ð²Ð°Ñ\81).",
+       "rcfilters-filtergroup-authorship": "Ð\90вÑ\82оÑ\80Ñ\81Ñ\82во Ð½Ð° Ð¿Ñ\80идонеÑ\81оÑ\82",
+       "rcfilters-filter-editsbyself-label": "Ваши промени",
+       "rcfilters-filter-editsbyself-description": "Ð\92аÑ\88и Ñ\81опÑ\81Ñ\82вени Ð¿Ñ\80идонеÑ\81и.",
+       "rcfilters-filter-editsbyother-label": "Туѓи промени",
+       "rcfilters-filter-editsbyother-description": "СиÑ\82е Ð¿Ñ\80омени Ð½Ð°Ð¿Ñ\80авени Ð¾Ð´ Ð´Ñ\80Ñ\83ги Ñ\83Ñ\80едниÑ\86и",
        "rcfilters-filtergroup-userExpLevel": "Корисничка искусност (само за регистрирани)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Филтрите за искуство пронаоѓаат само регистрирани корисници, така што овој филтер е простиставен со филтерот „Нерегистрирани“.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Филтерот „Нерегистрирани“ е спротиставен на еден или повеќе од филтрите за искуство. Тие филтри наоѓаат само регистрирани корисници. Спротиставените филтри погоре се означени во одделот Активни филтри.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Новодојденци",
        "rcfilters-filter-user-experience-level-newcomer-description": "Помалку од 10 уредувања и 4 дена активност.",
        "rcfilters-filter-user-experience-level-learner-label": "Ученици",
-       "rcfilters-filter-user-experience-level-learner-description": "Ð\9fовеÑ\9cе Ð´ÐµÐ½Ð¾Ð²Ð¸ Ð°ÐºÑ\82ивноÑ\81Ñ\82 од „новодојденците“, но помалку од „искусните корисници“.",
+       "rcfilters-filter-user-experience-level-learner-description": "Ð\9fоиÑ\81кÑ\83Ñ\81ни од „новодојденците“, но помалку од „искусните корисници“.",
        "rcfilters-filter-user-experience-level-experienced-label": "Искусни корисници",
        "rcfilters-filter-user-experience-level-experienced-description": "Повеќе од 30 дена активност и 500 уредувања.",
        "rcfilters-filtergroup-automated": "Автоматизирани придонеси",
        "rcfilters-filter-minor-description": "Уредувања кои авторот ги означил како ситни.",
        "rcfilters-filter-major-label": "Неситни уредувања",
        "rcfilters-filter-major-description": "Уредувања кои не се означени како ситни.",
+       "rcfilters-filtergroup-watchlist": "Набљудувани страници",
+       "rcfilters-filter-watchlist-watched-label": "Во набљудуваните",
+       "rcfilters-filter-watchlist-watched-description": "Промени во страниците од набљудуваните.",
+       "rcfilters-filter-watchlist-watchednew-label": "Нови промени во набљудуваните",
+       "rcfilters-filter-watchlist-watchednew-description": "Промени во набљудуваните страници кои не ги имате посетено откога се случиле промените.",
+       "rcfilters-filter-watchlist-notwatched-label": "Вон набљудуваните",
+       "rcfilters-filter-watchlist-notwatched-description": "Сите освен промените во набљудуваните страници.",
        "rcfilters-filtergroup-changetype": "Вид на промена",
        "rcfilters-filter-pageedits-label": "Уредувања на страници",
        "rcfilters-filter-pageedits-description": "Уредувања во содржината, разговорите, описите на категориите...",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Филтерот „Ситни уредувања“ е спротиставен на еден или повеќе од филтрите за видови измена, бидејќи извеси видови не можат да се означат како ситни. Спротиставените филтри се означени во делот Неактивни филтри погоре.",
        "rcfilters-hideminor-conflicts-typeofchange": "Извезни видови промени не можат да се означат како „ситни“, па затоа овој филтер е во спротиставеност со следниве филтри за видови промени: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Овој филтер за видови промени е во спротиставеност со филтерот „Ситни уредувања“. Извсни видови промени не можат да се означат како „ситни“.",
+       "rcfilters-filtergroup-lastRevision": "Последна преработка",
+       "rcfilters-filter-lastrevision-label": "Последна преработка",
+       "rcfilters-filter-lastrevision-description": "Најнови преработки на страница.",
+       "rcfilters-filter-previousrevision-label": "Претходни преработки",
+       "rcfilters-filter-previousrevision-description": "Сите промени кои не се најнови преработки на страницата.",
+       "rcfilters-filter-excluded": "Исклучени",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:не</strong> $1",
+       "rcfilters-view-tags": "Ознаки",
        "rcnotefrom": "Подолу {{PLURAL:$5|е прикажана промената|се прикажани промените}} почнувајќи од <strong>$3, $4</strong>  (се прикажуваат до <b>$1</b>).",
        "rclistfromreset": "Нов избор на датуми",
        "rclistfrom": "Прикажи нови промени почнувајќи од $3 $2",
        "rcshowhidecategorization": "$1 ја категоризацијата на страниците",
        "rcshowhidecategorization-show": "Прикажи",
        "rcshowhidecategorization-hide": "Скриј",
-       "rclinks": "Прикажи скорешни $1 промени во последните $2 дена<br />$3",
+       "rclinks": "Прикажи скорешни $1 промени во последните $2 дена",
        "diff": "разл",
        "hist": "истор",
        "hide": "Скриј",
        "apisandbox-fullscreen": "Рашири го полето",
        "apisandbox-fullscreen-tooltip": "Рашири го полето на песочникот колку што е голем прозорецот на прелистувачот.",
        "apisandbox-unfullscreen": "Прикажи страница",
-       "apisandbox-unfullscreen-tooltip": "Смали Ð³Ð¾ Ð¿Ð¾Ð»ÐµÑ\82о Ð½Ð° Ð¿ÐµÑ\81оÑ\87никоÑ\82, Ð·Ð° Ð´Ð° Ñ\81е Ð¿Ð¾ÐºÐ°Ð¶Ñ\83вааÑ\82 Ð½Ð°Ð²Ð¸Ð³Ð°Ñ\86иÑ\81ките врски на МедијаВики.",
+       "apisandbox-unfullscreen-tooltip": "Смали Ð³Ð¾ Ð¿Ð¾Ð»ÐµÑ\82о Ð½Ð° Ð¿ÐµÑ\81оÑ\87никоÑ\82, Ð·Ð° Ð´Ð° Ñ\81е Ð¿Ð¾ÐºÐ°Ð¶Ñ\83вааÑ\82 Ð¿Ñ\80егледниÑ\87ките врски на МедијаВики.",
        "apisandbox-submit": "Постави барање",
        "apisandbox-reset": "Исчисти",
        "apisandbox-retry": "Пробај пак",
        "enotif_body_intro_moved": "Страницата $1 на {{SITENAME}} е преместена на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната преработка ќе ја најдете на $3.",
        "enotif_body_intro_restored": "Страницата $1 на {{SITENAME}} е повратена на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната преработка ќе ја најдете на $3.",
        "enotif_body_intro_changed": "Страницата $1 на {{SITENAME}} е изменета на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната преработка ќе ја најдете на $3.",
-       "enotif_lastvisited": "Ð\92идеÑ\82е $1 Ð·Ð° Ñ\81иÑ\82е Ð¿Ñ\80омени Ð¾Ð´ Ð²Ð°Ñ\88аÑ\82а Ð¿Ð¾Ñ\81ледна Ð¿Ð¾Ñ\81еÑ\82а.",
-       "enotif_lastdiff": "Ð\92идеÑ\82е $1 Ð·Ð° Ð´Ð° Ñ\98а Ð²Ð¸Ð´Ð¸Ñ\82е Ð¾Ð²Ð°Ð° Ð¿Ñ\80омена.",
+       "enotif_lastvisited": "СиÑ\82е Ð¿Ñ\80омени Ð¾Ð´ Ð²Ð°Ñ\88аÑ\82а Ð¿Ð¾Ñ\81ледна Ð¿Ð¾Ñ\81еÑ\82а Ñ\9cе Ð³Ð¸ Ð½Ð°Ñ\98деÑ\82е Ð½Ð° $1",
+       "enotif_lastdiff": "Ð\9eваа Ð¿Ñ\80омена Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ñ\98а Ð²Ð¸Ð´Ð¸Ñ\82е Ð½Ð° $1",
        "enotif_anon_editor": "анонимен корисник $1",
        "enotif_body": "Почитуван(а) $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\n$NEWPAGE\n\nОпис од уредникот: $PAGESUMMARY $PAGEMINOREDIT\n\nКонакт на уредникот:\nе-пошта: $PAGEEDITOR_EMAIL\nвики: $PAGEEDITOR_WIKI\n\nПовеќе нема да добивате известувања во случај на други понатамошни активности, освен ако не ја посетите оваа страница додека сте најавени.\nМожете и да ги поништите ознаките за известување за сите набљудувани страници на вашиот список на набљудувања.\n\nИзвестителниот систем на {{SITENAME}}\n\n--\nАко сакате да ги измените нагодувањата за известување по е-пошта, посетете ја страницата\n{{canonicalurl:{{#special:Preferences}}}}\n\nДоколку сакате да ги измените нагодувањата на списокот на набљудувања, посетете ја страницата\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nЗа да ја избришете страницата од списокот на набљудувања, посетете ја страницата\n$UNWATCHURL\n\nВаши мислења, прашања и повеќе помош:\n$HELPPAGE",
        "created": "создадена",
        "sp-contributions-uploads": "подигања",
        "sp-contributions-logs": "дневници",
        "sp-contributions-talk": "разговор",
-       "sp-contributions-userrights": "раководење со кориснички права",
+       "sp-contributions-userrights": "раководење со {{GENDER:$1|кориснички}} права",
        "sp-contributions-blocked-notice": "Овој корисник е блокиран. Последните ставки во дневникот на блокирања, за ваша информација се дадени подолу:",
        "sp-contributions-blocked-notice-anon": "Оваа IP-адреса е моментално блокирана.\nПодолу е наведен најновиот дневнички запис на блокирање:",
        "sp-contributions-search": "Пребарување на придонеси",
        "autoblocklist-submit": "Пребарај",
        "autoblocklist-legend": "Испис на автоблокови",
        "autoblocklist-localblocks": "{{PLURAL:$1|Месен автоблок|Месни автоблокови}}",
+       "autoblocklist-total-autoblocks": "Вкупно автоблокови: $1",
        "autoblocklist-empty": "Списокот на автоблокови е празен.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Друг автоблок|Други автоблокови}}",
        "ipblocklist": "Блокирани корисници",
        "tooltip-pt-mycontris": "Список на {{GENDER:|ваши}} придонеси",
        "tooltip-pt-anoncontribs": "Список на уредувања направени од оваа IP-адреса",
        "tooltip-pt-login": "Ви препорачуваме да се најавите, иако тоа не е задолжително.",
+       "tooltip-pt-login-private": "Ќе треба да се најавите за да го користите викито",
        "tooltip-pt-logout": "Одјавување",
        "tooltip-pt-createaccount": "Ви препорачуваме да направите сметка и да се најавите, иако тоа не е задолжително",
        "tooltip-ca-talk": "Разговор за страницата",
        "tooltip-ca-viewsource": "Оваа страница е заштитена. Можете да го видите изворниот код.",
        "tooltip-ca-history": "Претходни верзии на оваа страница.",
        "tooltip-ca-protect": "Заштити ја страницава",
-       "tooltip-ca-unprotect": "Измени заштита страницава",
+       "tooltip-ca-unprotect": "Измени заштита на страницава",
        "tooltip-ca-delete": "Избриши ја страницава",
        "tooltip-ca-undelete": "Обнови ги уредувањата направени на оваа страница пред да биде избришана",
        "tooltip-ca-move": "Премести ја страницава",
        "newimages-legend": "Филтрирај",
        "newimages-label": "Име на податотека (или дел од името):",
        "newimages-user": "IP-адреса или корисничко име",
+       "newimages-newbies": "Прикажи само придонеси на нови корисници",
        "newimages-showbots": "Прикажувај подигања од ботови",
        "newimages-hidepatrolled": "Сокриј испатролриани подигања",
+       "newimages-mediatype": "Тип на медиум:",
        "noimages": "Нема ништо.",
        "gallery-slideshow-toggle": "Преод на минијатури",
        "ilsubmit": "Барај",
        "confirmrecreate-noreason": "Корисникот [[User:$1|$1]] ([[User talk:$1|разговор]]) {{GENDER:$1|ја избриша}} страницава откако почнавте да ја уредувате.  Потврдете дека навистина сакате да ја пресоздадете страницата.",
        "recreate": "Пресоздај",
        "unit-pixel": "п",
+       "confirm-purge-title": "Превчитај ја страницава",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Да го исчистам меѓускладот на страницава?",
        "confirm-purge-bottom": "Со оваа постапка се чисти опслужувачкиот меѓусклад и се прикажува најновата верзија.",
        "confirm-rollback-top": "Да ги отповикам уредувањата на страницава?",
        "percent": "$1&#160;%",
        "quotation-marks": "„$1“",
-       "imgmultipageprev": "&larr; претходна страница",
-       "imgmultipagenext": "следна страница &rarr;",
+       "imgmultipageprev": " претходна страница",
+       "imgmultipagenext": "следна страница ",
        "imgmultigo": "Отвори",
        "imgmultigoto": "Оди на страница $1",
        "img-lang-default": "(стандарден јазик)",
        "tags-create-reason": "Причина:",
        "tags-create-submit": "Создај",
        "tags-create-no-name": "Мора да укажете име на ознаката.",
-       "tags-create-invalid-chars": "Ознаката не смее да содржи запирки (<code>,</code>) и надесни коси црти (<code>/</code>).",
+       "tags-create-invalid-chars": "Ознаката не смее да содржи запирки (<code>,</code>), прави црти (<code>|</code>) и надесни коси црти (<code>/</code>).",
        "tags-create-invalid-title-chars": "Имињата на ознаките не смеат да содржат знаци што не може да се користат во наслови на страници.",
        "tags-create-already-exists": "Ознаката „$1“ веќе постои.",
        "tags-create-warnings-above": "Во обидот да ја создадам ознаката „$1“ наидов на {{PLURAL:$2|следново предупредување|следниве предупредувања}}:",
        "mw-widgets-titleinput-description-redirect": "пренасочување кон $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Додај категорија...",
        "mw-widgets-usersmultiselect-placeholder": "Додај уште...",
+       "date-range-from": "Од датумот:",
+       "date-range-to": "До датумот:",
        "sessionmanager-tie": "Не можете истовремено да користите повеќе типови барања за заверка: $1.",
        "sessionprovider-generic": "$1 седници",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "седници со колачиња",
        "pageid": "назнака на страницата $1",
        "rawhtml-notallowed": "&lt;html&gt;-ознаките не може да се користат вон нормалните страници.",
        "gotointerwiki": "Го напуштате {{SITENAME}}",
-       "gotointerwiki-invalid": "УкажаниоÑ\82 Ð½Ð°Ñ\81лов Ð±ÐµÑ\88е Ð½ÐµÐ²Ð°Ð¶ÐµÑ\87ки.",
-       "gotointerwiki-external": "Го напуштате {{SITENAME}} упатени кон [[$2]], кое е посебно мрежно место.\n\n[$1 Тука продолжете кон $1].",
+       "gotointerwiki-invalid": "Укажаниот наслов е неважечки.",
+       "gotointerwiki-external": "Го напуштате {{SITENAME}} упатени кон [[$2]], кое е посебно мрежно место.\n\n'''[$1 Продолжете кон $1]'''",
        "undelete-cantedit": "Не можете да ја вратите избришаната страница бидејќи уредувањето на страницава не ви е дозволено.",
-       "undelete-cantcreate": "Не можете да ја вратите страницава бидејќи не постои страница со таков назив и не ви е дозволено да ја создадете."
+       "undelete-cantcreate": "Не можете да ја вратите страницава бидејќи не постои страница со таков назив и не ви е дозволено да ја создадете.",
+       "pagedata-title": "Податоци за страницата",
+       "pagedata-text": "Страницава дава посредник за податоци за страниците. Укажете го насловот на страницата во URL-то, користејќи ја синтаксата за потстраници.\n* Префрлањето на содржината се заснова на заглавието Прифати на вашиот клиент. Ова значи дека податоците за страницата ќе бидат ставени во форматот кој го претпочита вашиот клиент.",
+       "pagedata-not-acceptable": "Не најдов соодветен формат. Поддржани MIME-типови: $1",
+       "pagedata-bad-title": "Неважечки наслов: $1."
 }
index a1b4175..d5775fe 100644 (file)
        "externaldberror": "ഒന്നുകിൽ ഡേറ്റാബേസ് സാധൂകരണത്തിൽ പ്രശ്നം ഉണ്ടായിരുന്നു അല്ലെങ്കിൽ നവീകരിക്കുവാൻ താങ്കളുടെ ബാഹ്യ അംഗത്വം താങ്കളെ അനുവദിക്കുന്നില്ല.",
        "login": "പ്രവേശിക്കുക",
        "nav-login-createaccount": "പ്രവേശിക്കുക / അംഗത്വമെടുക്കുക",
-       "userlogin": "പ്രവേശിക്കുക / അംഗത്വമെടുക്കുക",
-       "userloginnocreate": "പ്രവേശിക്കുക",
        "logout": "ലോഗൗട്ട്",
        "userlogout": "ലോഗൗട്ട്",
        "notloggedin": "പ്രവേശിച്ചിട്ടില്ല",
        "userlogin-noaccount": "അംഗത്വമില്ലേ?",
        "userlogin-joinproject": "{{SITENAME}} സം‌രംഭത്തിൽ ചേരുക",
-       "nologin": "അംഗത്വമില്ലേ? '''$1'''.",
-       "nologinlink": "ഒരംഗത്വമെടുക്കുക",
        "createaccount": "അംഗത്വമെടുക്കുക",
-       "gotaccount": "താങ്കൾക്ക് അംഗത്വമുണ്ടോ? '''$1'''.",
-       "gotaccountlink": "പ്രവേശിക്കുക",
-       "userlogin-resetlink": "താങ്കളുടെ ലോഗിൻ വിവരങ്ങൾ മറന്നു പോയോ?",
        "userlogin-resetpassword-link": "താങ്കൾ രഹസ്യവാക്ക് മറന്നോ?",
        "userlogin-helplink2": "പ്രവേശിക്കാൻ സഹായമാവശ്യമെങ്കിൽ",
        "userlogin-loggedin": "താങ്കൾ ഇപ്പോൾ തന്നെ {{GENDER:$1|$1}} ആയി പ്രവേശിച്ചിരിക്കുന്നു.\nതാഴെ ഉള്ള ഫോം ഉപയോഗിച്ച് മറ്റൊരു ഉപയോക്താവായി പ്രവേശിക്കാവുന്നതാണ്.",
        "createacct-another-email-ph": "ഇമെയിൽ വിലാസം നൽകുക",
        "createaccountmail": "തൽക്കാലം ക്രമരഹിതമായി സൃഷ്ടിച്ച ഒരു രഹസ്യവാക്ക് ഉപയോഗിക്കുകയും അത് തന്നിരിക്കുന്ന ഇമെയിൽ വിലാസത്തിലേക്കയക്കുകയും ചെയ്യുക",
        "createacct-realname": "ശരിയായ പേര് (നിർബന്ധമില്ല)",
-       "createaccountreason": "കാരണം:",
        "createacct-reason": "കാരണം",
        "createacct-reason-ph": "താങ്കൾ എന്തുകൊണ്ടാണ് മറ്റൊരു അംഗത്വം എടുക്കുന്നത്",
        "createacct-submit": "താങ്കളുടെ അംഗത്വം സൃഷ്ടിക്കുക",
        "preview": "എങ്ങനെയുണ്ടെന്നു കാണുക",
        "showpreview": "എങ്ങനെയുണ്ടെന്നു കാണുക",
        "showdiff": "മാറ്റങ്ങൾ കാണിക്കുക",
-       "blankarticle": "<strong>മുന്നറിയിപ്പ്:</strong> താങ്കൾ സൃഷ്ടിക്കുന്ന താൾ ശൂന്യമാണ്.\n\"{{int:savearticle}}\" ഒന്നുകൂടി അമർത്തിയാൽ, ഉള്ളടക്കമൊന്നുമില്ലാതെ താൾ സൃഷ്ടിക്കപ്പെടും.",
+       "blankarticle": "<strong>മുന്നറിയിപ്പ്:</strong> താങ്കൾ സൃഷ്ടിക്കുന്ന താൾ ശൂന്യമാണ്.\n\"$1\" ഒന്നുകൂടി അമർത്തിയാൽ, ഉള്ളടക്കമൊന്നുമില്ലാതെ താൾ സൃഷ്ടിക്കപ്പെടും.",
        "anoneditwarning": "<strong>മുന്നറിയിപ്പ്:</strong> താങ്കൾ ലോഗിൻ ചെയ്തിട്ടില്ല. താങ്കൾ തിരുത്തുകളെന്തെങ്കിലും ചെയ്യുകയാണെങ്കിൽ താങ്കളുടെ ഐ.പി. വിലാസം എല്ലാവർക്കും ലഭ്യമായിരിക്കും. താങ്കൾ <strong>[$1 ലോഗിൻ ചെയ്യുകയോ]</strong>  <strong>[$2 അംഗത്വമെടുക്കുകയോ]</strong> ചെയ്യുന്നതുവഴി മറ്റ് ഗുണങ്ങളോടൊപ്പം താങ്കളുടെ തിരുത്തുകൾ ഉപയോക്തൃനാമത്തിലാവും അറിയപ്പെടുക.",
        "anonpreviewwarning": "''താങ്കൾ ലോഗിൻ ചെയ്തിട്ടില്ല. സേവ് ചെയ്യുമ്പോൾ താളിന്റെ തിരുത്തൽ ചരിത്രത്തിൽ താങ്കളുടെ ഐ.പി. വിലാസം ചേർത്തു സൂക്ഷിക്കപ്പെടും.''",
        "missingsummary": "'''ഓർമ്മക്കുറിപ്പ്:''' താങ്കൾ തിരുത്തലിന്റെ ചുരുക്കരൂപം നൽകിയിട്ടില്ല. ''സേവ് ചെയ്യുക'' ബട്ടൺ ഒരുവട്ടം കൂടി അമർത്തിയാൽ താങ്കൾ വരുത്തിയ മാറ്റം കാത്തുസൂക്ഷിക്കുന്നതാണ്.",
-       "selfredirect": "<strong>മുന്നറിയിപ്പ്:</strong> ഈ താളിലേക്ക് തന്നെയുള്ള തിരിച്ചുവിടലാണ് താങ്കൾ സൃഷ്ടിക്കുന്നത്.\nതിരിച്ചുവിടലിനു താങ്കൾ നൽകിയ ലക്ഷ്യം തെറ്റിയിരിക്കാം അല്ലെങ്കിൽ താങ്കൾ തിരുത്തുന്നത് തെറ്റായ താൾ ആയിരിക്കാം.\nഎന്തായാലും, വീണ്ടും \"{{int:savearticle}}\" അമർത്തിയാൽ, തിരിച്ചുവിടൽ സൃഷ്ടിക്കപ്പെടുന്നതാണ്.",
+       "selfredirect": "<strong>മുന്നറിയിപ്പ്:</strong> ഈ താളിലേക്ക് തന്നെയുള്ള തിരിച്ചുവിടലാണ് താങ്കൾ സൃഷ്ടിക്കുന്നത്.\nതിരിച്ചുവിടലിനു താങ്കൾ നൽകിയ ലക്ഷ്യം തെറ്റിയിരിക്കാം അല്ലെങ്കിൽ താങ്കൾ തിരുത്തുന്നത് തെറ്റായ താൾ ആയിരിക്കാം.\nഎന്തായാലും, വീണ്ടും \"$1\" അമർത്തിയാൽ, തിരിച്ചുവിടൽ സൃഷ്ടിക്കപ്പെടുന്നതാണ്.",
        "missingcommenttext": "താങ്കളുടെ അഭിപ്രായം ദയവായി താഴെ രേഖപ്പെടുത്തുക.",
-       "missingcommentheader": "<strong>ഓർമ്മക്കുറിപ്പ്:</strong> ഈ കുറിപ്പിന് താങ്കൾ വിഷയം/തലക്കെട്ട് നൽകിയിട്ടില്ല. ''{{int:savearticle}}'' എന്ന ബട്ടൺ ഒരുവട്ടം കൂടി അമർത്തിയാൽ വിഷയം/തലക്കെട്ട് ഇല്ലാതെ തന്നെ കാത്തുസൂക്ഷിക്കുന്നതാവും.",
+       "missingcommentheader": "<strong>ഓർമ്മക്കുറിപ്പ്:</strong> ഈ കുറിപ്പിന് താങ്കൾ വിഷയം/തലക്കെട്ട് നൽകിയിട്ടില്ല. ''$1'' എന്ന ബട്ടൺ ഒരുവട്ടം കൂടി അമർത്തിയാൽ വിഷയം/തലക്കെട്ട് ഇല്ലാതെ തന്നെ കാത്തുസൂക്ഷിക്കുന്നതാവും.",
        "summary-preview": "ചുരുക്കരൂപം എങ്ങനെയുണ്ടെന്നു കാണുക:",
        "subject-preview": "വിഷയം എങ്ങനെയുണ്ടെന്ന് കാണുക:",
        "previewerrortext": "താങ്കളുടെ മാറ്റങ്ങൾ എങ്ങനെയുണ്ടെന്ന് കാണാൻ ശ്രമിച്ചപ്പോൾ പിഴവുണ്ടായി.",
        "right-editsemiprotected": "\"{{int:protect-level-autoconfirmed}}\" എന്നടയാളപ്പെടുത്തി സംരക്ഷിച്ചിട്ടുള്ള താളുകൾ തിരുത്തുക",
        "right-editcontentmodel": "താളിന്റെ ഉള്ളടക്ക രീതി തിരുത്തുക",
        "right-editinterface": "ഉപയോക്തൃ സമ്പർക്കമുഖത്തിൽ മാറ്റം വരുത്തുക",
-       "right-editusercssjs": "മറ്റ് ഉപയോക്താക്കളുടെ CSS, JS പ്രമാണങ്ങൾ തിരുത്തുക",
        "right-editusercss": "മറ്റ് ഉപയോക്താക്കളുടെ CSS പ്രമാണങ്ങൾ തിരുത്തുക",
        "right-edituserjs": "മറ്റ് ഉപയോക്താക്കളുടെ JS പ്രമാണങ്ങൾ തിരുത്തുക",
        "right-editmyusercss": "താങ്കളുടെ സ്വന്തം ഉപയോക്തൃ സി.എസ്.എസ്. പ്രമാണങ്ങൾ തിരുത്തുക",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|പുതിയ താളുകളുടെ പട്ടികയും]] കാണുക)",
        "recentchanges-submit": "പ്രദർശിപ്പിക്കുക",
        "rcfilters-filterlist-title": "അരിപ്പകൾ",
-       "rcfilters-filter-userExpLevel-newcomer-label": "പുതിയ അംഗങ്ങളുടെ തിരുത്തലുകൾ",
+       "rcfilters-filter-user-experience-level-newcomer-label": "പുതിയ അംഗങ്ങളുടെ തിരുത്തലുകൾ",
        "rcfilters-filter-bots-label": "യന്ത്രം",
        "rcfilters-filter-minor-label": "ചെറുതിരുത്തുകൾ",
        "rcnotefrom": "<strong>$3, $4</strong> മുതലുള്ള {{PLURAL:$5|മാറ്റം|മാറ്റങ്ങൾ}} ആണ് താഴെയുള്ളത്  (<strong>$1</strong> എണ്ണം വരെ കൊടുക്കുന്നതാണ്).",
        "rcshowhidecategorization": "താളുകളുടെ വർഗ്ഗീകരണം $1",
        "rcshowhidecategorization-show": "പ്രദർശിപ്പിക്കുക",
        "rcshowhidecategorization-hide": "മറയ്ക്കുക",
-       "rclinks": "കഴിഞ്ഞ $2 ദിവസങ്ങൾക്കുള്ളിലുണ്ടായ $1 മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക<br />$3",
+       "rclinks": "കഴിഞ്ഞ $2 ദിവസങ്ങൾക്കുള്ളിലുണ്ടായ $1 മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക",
        "diff": "മാറ്റം",
        "hist": "നാൾവഴി",
        "hide": "മറയ്ക്കുക",
        "undeleteviewlink": "കാണുക",
        "undeleteinvert": "വിപരീതം തിരഞ്ഞെടുക്കുക",
        "undeletecomment": "കാരണം:",
-       "undeletedrevisions": "{{PLURAL:$1|ഒരു പതിപ്പ്|$1 പതിപ്പുകൾ}} പുനഃസ്ഥാപിച്ചിരിക്കുന്നു",
-       "undeletedrevisions-files": "{{PLURAL:$1|ഒരു പതിപ്പും|$1 പതിപ്പുകളും}} {{PLURAL:$2|ഒരു പ്രമാണവും|$2 പ്രമാണങ്ങളും}} പുനഃസ്ഥാപിച്ചിരിക്കുന്നു",
-       "undeletedfiles": "{{PLURAL:$1|ഒരു പ്രമാണം|$1 പ്രമാണങ്ങൾ}} പുനഃസ്ഥാപിച്ചു",
        "cannotundelete": "മായ്ക്കൽ തിരസ്കരണം പരാജയപ്പെട്ടു:\n$1",
        "undeletedpage": "'''$1 പുനഃസ്ഥാപിച്ചിരിക്കുന്നു'''\n\nപുതിയതായി നടന്ന ഒഴിവാക്കലുകളുടേയും പുനഃസ്ഥാപനങ്ങളുടേയും വിവരങ്ങൾ കാണാൻ [[Special:Log/delete|മായ്ക്കൽ ലോഗ്]] കാണുക.",
        "undelete-header": "അടുത്തകാലത്ത് നീക്കംചെയ്ത താളുകളുടെ പട്ടികയ്ക്ക് [[Special:Log/delete|നീക്കം ചെയ്യൽ പ്രവർത്തനരേഖ]] കാണുക.",
        "logentry-tag-update-revision": "$3 എന്ന താളിന്റെ $4 എന്ന നാൾപ്പതിപ്പിൽ ടാഗുകൾ $1 {{GENDER:$2|പുതുക്കി}} ($6 {{PLURAL:$7|ചേർത്തു}}; $8 {{PLURAL:$9|നീക്കംചെയ്തു}})",
        "logentry-tag-update-logentry": "$3 എന്ന താളിന്റെ $5 എന്ന രേഖയിലെ ഉൾപ്പെടുത്തലിൽ ടാഗുകൾ $1 {{GENDER:$2|പുതുക്കി}} ($6 {{PLURAL:$7|ചേർത്തു}}; $8 {{PLURAL:$9|നീക്കംചെയ്തു}})",
        "rightsnone": "(ഒന്നുമില്ല)",
-       "revdelete-summary": "തിരുത്തലിന്റെ ചുരുക്കം",
        "feedback-adding": "താങ്കളുടെ അഭിപ്രായങ്ങൾ താളിലേയ്ക്ക് ചേർക്കുന്നു...",
        "feedback-back": "പുറകോട്ട്",
        "feedback-bugcheck": "കൊള്ളാം! [$1 അറിയാവുന്ന ബഗുകളിൽ] ഒന്നല്ല എന്ന് ഒന്നു പരിശോധിച്ചേക്കുക.",
index bacd0d3..411584d 100644 (file)
        "externaldberror": "Нэг бол гадны баталгаажуулах мэдээллийн сангийн алдаа гарсан, эсвэл та өөрийн гадны бүртгэлээ шинэчлэх эрхгүй байна.",
        "login": "Нэвтрэх",
        "nav-login-createaccount": "Нэвтрэх / Бүртгүүлэх",
-       "userlogin": "Нэвтрэх / Бүртгүүлэх",
-       "userloginnocreate": "Нэвтрэх",
        "logout": "Гарах",
        "userlogout": "Гарах",
        "notloggedin": "Нэвтрээгүй байна",
        "userlogin-noaccount": "Бүртгүүлж амжаагүй юу?",
        "userlogin-joinproject": "{{SITENAME}}-д бүртгүүлэх",
-       "nologin": "Бүртгүүлж амжаагүй юу? '''$1'''.",
-       "nologinlink": "Бүртгүүлэх",
        "createaccount": "Бүртгүүлэх",
-       "gotaccount": "Та бүртгэлтэй юу? '''$1'''",
-       "gotaccountlink": "Нэвтрэх",
-       "userlogin-resetlink": "Нэвтрэх мэдээллээ мартаа юу?",
        "userlogin-resetpassword-link": "Нууц үгээ мартсан уу?",
        "userlogin-helplink2": "Нэвтрэх талаар зөвлөмж",
        "userlogin-loggedin": "Та {{GENDER:$1|$1}} нэрээр нэвтэрсэн байна.\nӨөр нэрээр нэвтрэх бол доорх маягтыг ашиглана уу.",
        "createacct-another-email-ph": "Цахим шуудангийн хаяг оруулна уу",
        "createaccountmail": "Мэйлээр илгээх",
        "createacct-realname": "Жинхэнэ нэр (хоосон орхиж болно)",
-       "createaccountreason": "Шалтгаан:",
        "createacct-reason": "Шалтгаан",
        "createacct-reason-ph": "Өөр бүртгэл үүсгэх шалтгаан",
        "createacct-submit": "Бүртгүүлэх",
        "passwordreset-emaildisabled": "Энэ викид емайл ашиглах боломжгүй.",
        "passwordreset-username": "Хэрэглэгчийн нэр:",
        "passwordreset-domain": "Домайн:",
-       "passwordreset-capture": "Цахим шуудангийн нууц үг сэргээх шууданг үзэх",
-       "passwordreset-capture-help": "Энэ нүдийг чагталбал цахим шуудан түр нууц үгийн хамт танд харагдахаас гадна, шуудангаар тань очих болно.",
        "passwordreset-email": "Цахим шуудан:",
        "passwordreset-emailtitle": "{{SITENAME}}-н бүртгэлийн мэдээлэл",
        "passwordreset-emailtext-ip": "Хэн нэгэн ($1 гэсэн IP хаягаас) {{SITENAME}} ($4) дээр таны бүртгэлийн сануулга авахаар хүссэн байна. Дараах {{PLURAL:$3|бүртгэл|бүртгэл}}\nуг е-шуудантай холбоотой:\n\n$2\n\n{{PLURAL:$3|Уг түр хэрэглэх нууц үг|Уг түр хэрэглэх нууц үгүүд}} нь {{PLURAL:$5|нэг өдрийн|$5 өдрийн}} дотор устах болно.\nТа уг нууц үгээр нэвтэрч, түүнийг шинэчлэх хэрэгтэй. Хэрэв өөр нэгэн уг хүсэлтийг явуулсан бол \nэсвэл өөрийн ориг нууц үгээ санаж байгаад түүнийгээ өөрчлөхийг хүсэхгүй байгаа бол энэ захиаг үл ойшоож \nэнгийнээр нэвтэрч болно.",
        "anonpreviewwarning": "''Та нэвтрээгүй байна. Хадгалвал энэ хуудасны түүхэнд таны IP хаяг бичигдлэх болно.''",
        "missingsummary": "'''Сануулга:''' Та засварынхаа товч агуулгын тухай оруулаагүй байна.\nХэрэв та Хадгалах товчийг дахин дарвал таны засвар товч агуулгагүйгээр хадгалагдана.",
        "missingcommenttext": "Доор санал бодлоо оруулна уу.",
-       "missingcommentheader": "'''Сануулга:''' Та энэхүү санал бодолдоо гарчиг бичээгүй байна.\nХэрэв та {{int:savearticle}} дээр дахин дарвал таны засвар гарчиггүй хадгалагдах болно.",
+       "missingcommentheader": "'''Сануулга:''' Та энэхүү санал бодолдоо гарчиг бичээгүй байна.\nХэрэв та $1 дээр дахин дарвал таны засвар гарчиггүй хадгалагдах болно.",
        "summary-preview": "Товч агуулгын урьдчилж харсан байдал:",
        "subject-preview": "Сэдэв/гарчигийн урьдчилж харсан байдал:",
        "previewerrortext": "Таны өөрчлөлтийг хянахад алдаа гарлаа.",
        "editingsection": "$1-г засварлаж байна (хэсэг)",
        "editingcomment": "$1-г засварлаж байна (шинэ хэсэг)",
        "editconflict": "Засварын зөрөлдөөн боллоо: $1",
-       "explainconflict": "Та энэ хуудсыг засварлаж эхэлснээс хойш өөр хэн нэгэн өөрчилжээ.\nДээд талын бичгийн талбарт одоогийн хуудасны байдал харагдаж байна.\nТаны өөрчлөлтүүд доод талын бичгийн талбарт харагдаж байна.\nТа өөрийн засваруудаа одоогийн хуудасны байдалтай нэгтгэх хэрэгтэй.\n\"{{int:savearticle}}\" товчийг дарахад '''зөвхөн''' дээд талын бичгийн талбарт буй бичиг л хадгалагдана.",
+       "explainconflict": "Та энэ хуудсыг засварлаж эхэлснээс хойш өөр хэн нэгэн өөрчилжээ.\nДээд талын бичгийн талбарт одоогийн хуудасны байдал харагдаж байна.\nТаны өөрчлөлтүүд доод талын бичгийн талбарт харагдаж байна.\nТа өөрийн засваруудаа одоогийн хуудасны байдалтай нэгтгэх хэрэгтэй.\n\"$1\" товчийг дарахад '''зөвхөн''' дээд талын бичгийн талбарт буй бичиг л хадгалагдана.",
        "yourtext": "Таны текст",
        "storedversion": "Хадгалагдсан хувилбар",
        "nonunicodebrowser": "'''АНХААР: Таны броузер юникод стандартыг дагадаггүй юм байна. ASCII-биш үсгүүд засварлах талбарт код байдалтай харагдана. Иймээс броузераа тохируулах, эсвэл өөрчилнө үү.'''",
        "saveprefs": "Хадгалах",
        "restoreprefs": "Бүх тохиргоог анхны байдалд оруулах (хэсэг бүрт)",
        "prefs-editing": "Засварлах",
-       "rows": "Мөр:",
-       "columns": "Багана:",
        "searchresultshead": "Хайлт",
        "stub-threshold": "<a href=\"#\" class=\"stub\">Түүхий холбоосийг</a> форматлах босго (байт):",
        "stub-threshold-disabled": "Идэвхигүйжүүлсэн",
        "userrights-reason": "Шалтгаан:",
        "userrights-no-interwiki": "Таньд өөр викинүүдэд хэрэглэгчдийн эрхийг өөрчлөх зөвшөөрөл байхгүй.",
        "userrights-nodatabase": "$1 мэдээллийн сан байхгүй, эсвэл дотоодынх биш байна.",
-       "userrights-nologin": "Та хэрэглэгчдийн эрхийг хуваарилахбн тулд администраторын бүртгэлтэйгээр [[Special:UserLogin|нэвтэрч орох]] шаардлагатай.",
-       "userrights-notallowed": "Танд хэрэглэгчдийн эрхийг хасаж, нэмэх эрх байхгүй.",
        "userrights-changeable-col": "Таны өөрчилж болох бүлгүүд",
        "userrights-unchangeable-col": "Таны өөрчилж болохгүй бүлгүүд",
        "userrights-conflict": "Хэрэглэгчийн эрхийн өөрчлөлтийн зөрчилдөөн! Өөрийнхөө өөрчлөлтөд итгэлтэй эсэхээ ахин нягтлаарай.",
-       "userrights-removed-self": "Та өөрийнхөө эрхийг авч хаялаа. Тиймээс та энэ хуудсанд нэвтрэх эрхгүй болно.",
        "group": "Бүлэг:",
        "group-user": "Хэрэглэгчид",
        "group-autoconfirmed": "Автоматаар батлагдсан хэрэглэгчид",
        "right-editsemiprotected": "\"{{int:protect-level-autoconfirmed}}\" -ээр хамгаалагдсан хуудсыг засах",
        "right-editcontentmodel": "Хуудасны моделын агуулгыг засах",
        "right-editinterface": "Хэрэглэгчийн интерфэйсийг засварлах",
-       "right-editusercssjs": "Бусад хэрэглэгчдийн CSS болон JS файлуудыг засварлах",
        "right-editusercss": "Бусад хэрэглэгчдийн CSS файлуудыг засварлах",
        "right-edituserjs": "Бусад хэрэглэгчдийн JS файлуудыг засварлах",
        "right-editmyusercss": "Өөрийн хэрэглэгчийн CSS файлыг засах",
        "right-siteadmin": "Мэдээллийн баазыг түгжих буюу нээх",
        "right-override-export-depth": "5 хүртэлх гүний хуудсуудыг холбогдсон хуудсуудтай хамт гаргах",
        "right-sendemail": "Бусад хэрэглэгчид руу и-мэйл явуулах",
-       "right-passwordreset": "Цахим шуудангийн нууц үгийг сэргээн харах",
        "right-managechangetags": "[[Special:Tags|tags]] -ыг өгөгдлийн сангаас устгах, нэмэх",
        "right-applychangetags": "[[Special:Tags|tags]] -ыг өөрчлөлтийн хамт хэрэгжүүлэх",
        "right-changetags": "[[Special:Tags|tags]] -ыг хувийн хяналт, логийн бичлэг дагалдуулан нэмэх, хасах",
        "rcshowhidemine": "Миний засваруудыг $1",
        "rcshowhidemine-show": "үзүүлэх",
        "rcshowhidemine-hide": "нуух",
-       "rclinks": "Сүүлийн $2 өдрийн турших $1 засварыг үзүүлэх<br />$3",
+       "rclinks": "Сүүлийн $2 өдрийн турших $1 засварыг үзүүлэх",
        "diff": "ялгаа",
        "hist": "түүх",
        "hide": "нуух",
        "undeleteviewlink": "харах",
        "undeleteinvert": "Зааснаас бусад",
        "undeletecomment": "Шалтгаан:",
-       "undeletedrevisions": "{{PLURAL:$1|1 хувилбар|$1 хувилбар}}  сэргээгдлээ",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 засвар|$1 засвар}} ба {{PLURAL:$2|1 файл|$2 файл}} сэргээгдлээ",
-       "undeletedfiles": "{{PLURAL:$1|1 файл|$1 файл}} сэргээгдлээ",
        "cannotundelete": "Устгал сэргээлт хийж чадсангүй:\n$1",
        "undeletedpage": "'''$1 сэргээгдэв'''\n\nСүүлийн үед устгагдсан ба сэргээгдсэн зүйлүүдийн жагсаалтыг [[Special:Log/delete|устгалын бүртгэл]] дээрээс харна уу.",
        "undelete-header": "[[Special:Log/delete|Устгалын бүртгэл]]ээс сүүлд устгагдсан хуудсуудыг харна уу.",
        "logentry-rights-rights-legacy": "$1 $3 дэхь грүпийн гишүүнчлэлээ сольсон",
        "logentry-rights-autopromote": "$1 $4 аас $5 руу автоматаар дэвшигдлээ",
        "rightsnone": "(байхгүй)",
-       "revdelete-summary": "засварын товч агуулга",
        "feedback-cancel": "Болих",
        "feedback-close": "Болсон",
        "searchsuggest-search": "Хайх",
-       "api-error-filename-tooshort": "Файлын нэр хэтэрхий урт байна.",
-       "api-error-filetype-banned": "Ийм төрлийн файлыг хорьсон байна.",
-       "api-error-illegal-filename": "Ийм хэрэглэгчийн нэр өгөх боломжгүй.",
-       "api-error-internal-error": "Өөрийн алдаа: файлыг чинь upload хийх явцад алдаа гарлаа.",
-       "api-error-mustbeloggedin": "файлаа upload хийхийн тулд эхлээд хэрэглэгчээр нэвтэр.",
-       "api-error-mustbeposted": "Өөрийн алдаа: HTTP POST төрлийн хандалт шаардлагатай.",
-       "api-error-noimageinfo": "upload хийгдсэн боловч файлын талаар ямарч мэдээлэл сервер өгсөнгүй.",
-       "api-error-nomodule": "Өөрийн алдаа: upload хийх модулийг зааж өгөөгүй байна.",
-       "api-error-ok-but-empty": "Өөрийн алдаа: Серверээс хариу ирсэнгүй.",
-       "api-error-overwrite": "Ижил нэртэй файл оруулах хориотой.",
        "api-error-stashfailed": "Өөрийн алдаа: Серверт түр файл хадгалахад алдаа гарлаа.",
-       "api-error-timeout": "Сервер хариу өгөлгүй удлаа.",
-       "api-error-unclassified": "Тодорхойгүй алдаа гарлаа.",
-       "api-error-unknown-code": "Тодорхойгүй алдаа: \"$1\".",
-       "api-error-unknown-error": "Өөрийн алдаа: upload хийх үед алдаа гарлаа.",
        "api-error-unknown-warning": "Тодорхойгүй сануулга: $1",
        "api-error-unknownerror": "Тодорхойгүй алдаа: $1",
-       "api-error-uploaddisabled": "Энэ викид upload хийхийг хориглосон.",
-       "api-error-verification-error": "Файлын төрөл буруу, эсвэл дутуу татагдсан.",
        "duration-seconds": "$1 {{PLURAL:$1|секунд|секунд}}",
        "duration-minutes": "$1 {{PLURAL:$1|минут|минут}}",
        "duration-hours": "$1 {{PLURAL:$1|цаг|цаг}}",
index 64e73ff..7af2bf2 100644 (file)
        "rcshowhideliu": "$1 утилизаторь аутентификаць",
        "rcshowhideanons": "$1 утилизаторь анонимь",
        "rcshowhidemine": "$1 едитэриле меле",
-       "rclinks": "Аратэ ултимеле $1 модификэрь дин ултимеле $2 зиле.<br />$3",
+       "rclinks": "Аратэ ултимеле $1 модификэрь дин ултимеле $2 зиле.",
        "diff": "диф",
        "hist": "ист",
        "hide": "аскунде",
index a6ac26c..07bf86a 100644 (file)
        "anontalk": "चर्चा पान",
        "navigation": "सुचालन",
        "and": "&#32;आणि",
-       "qbfind": "शोधा",
-       "qbbrowse": "न्याहाळा",
-       "qbedit": "संपादन",
-       "qbpageoptions": "हे पान",
-       "qbmyoptions": "माझी पाने",
        "faq": "नेहमी विचारण्यात येणारे प्रश्न",
-       "faqpage": "Project:प्रश्नावली",
        "actions": "क्रिया",
        "namespaces": "नामविश्वे",
        "variants": "चले(व्हेरियंट्स)",
        "edit-local": "स्थानिक वर्णन संपादा",
        "create": "तयार करा",
        "create-local": "स्थानिक वर्णन जोडा",
-       "editthispage": "हे पृष्ठ संपादित करा",
-       "create-this-page": "हे पान तयार करा",
        "delete": "वगळा",
-       "deletethispage": "हे पान काढून टाका",
-       "undeletethispage": "गाळलेला लेख पुर्ववत् करा",
        "undelete_short": "पुनर्स्थापन {{PLURAL:$1|एक संपादन|$1 संपादने}}",
        "viewdeleted_short": "{{PLURAL:$1|एक वगळलेले संपादन|$1 वगळलेली संपादने}}  पहा.",
        "protect": "सुरक्षित करा",
        "protect_change": "बदला",
-       "protectthispage": "हे पान सुरक्षित करा",
        "unprotect": "सुरक्षितता बदला",
-       "unprotectthispage": "या पानाची सुरक्षितता बदला",
        "newpage": "नवीन पृष्ठ",
-       "talkpage": "या पानाबद्दल चर्चा करा",
        "talkpagelinktext": "चर्चा",
        "specialpage": "विशेष पृष्ठ",
        "personaltools": "वैयक्तिक साधने",
-       "articlepage": "लेख पृष्ठ",
        "talk": "चर्चा",
        "views": "दृष्ये",
        "toolbox": "साधने",
        "tool-link-userrights": "{{GENDER:$1|वापरकर्ता}} गट बदला",
        "tool-link-emailuser": "{{GENDER:$1|सदस्याला}} विपत्र पाठवा",
-       "userpage": "सदस्य पृष्ठ",
-       "projectpage": "प्रकल्प पान पहा",
        "imagepage": "संचिका पृष्ठ पहा",
        "mediawikipage": "संदेश पान पहा",
        "templatepage": "साच्याचे पृष्ठ पहा.",
        "preview": "झलक",
        "showpreview": "झलक दाखवा",
        "showdiff": "बदल दाखवा",
-       "blankarticle": "<strong>ईशारा:</strong>आपण तयार करीत असलेले पान कोरे आहे.जर आपण पुन्हा \"{{int:savearticle}}\" टिचकले तर,कोणताही आशय/मजकूर नसलेले पान तयार होईल.",
+       "blankarticle": "<strong>ईशारा:</strong>आपण तयार करीत असलेले पान कोरे आहे.जर आपण पुन्हा \"$1\" टिचकले तर,कोणताही आशय/मजकूर नसलेले पान तयार होईल.",
        "anoneditwarning": "<strong>इशारा:</strong> तुम्ही विकिपीडियाचे सदस्य म्हणून सनोंद-प्रवेश (लॉग-इन) केलेले नाही.आपण काही संपादन केले तर, तुमचा अंकपत्ता (आयपी) सार्वजनिक रित्या दृष्य होईल. जर आपण <strong>[$1 सनोंद प्रवेश केला]</strong> किंवा <strong>[$2 खाते उघडले]</strong>,तर आपण केलेली संपादने ही आपल्या नांवाशी संलग्न होतील, त्याशिवाय याचे इतरही फायदे आहेत.",
        "anonpreviewwarning": "\"'''सावधान:''' तुम्ही विकिपीडियाचे सदस्य म्हणून सनोंद-प्रवेश (लॉग-इन) केलेला नाही. या पानाच्या संपादन इतिहासात तुमचा अंकपत्ता (आय.पी. ॲड्रेस) नोंदला जाईल.\"",
        "missingsummary": "'''आठवण:''' आपण संपादन सारांश पुरवलेला नाही.आपण 'जतन करा' वर पुन्हा टिचकी मारली तर, ते त्याशिवायच जतन होईल.",
-       "selfredirect": "<strong>ईशारा:</strong>आपण या पानास, त्याच पानावर पुनर्निर्देशित करीता आहात.\nआपण पुनर्निर्देशनासाठी चूकिचे लक्ष्य नमूद केले आहे किंवा आपण चूकिच्या पानाचे संपादन करीत आहात.\nजर आपण पुन्हा \"{{int:savearticle}}\" टिचकले तर, कसेहीकरुन ते पुनर्निर्देशन तयार होईल.",
+       "selfredirect": "<strong>ईशारा:</strong>आपण या पानास, त्याच पानावर पुनर्निर्देशित करीता आहात.\nआपण पुनर्निर्देशनासाठी चूकिचे लक्ष्य नमूद केले आहे किंवा आपण चूकिच्या पानाचे संपादन करीत आहात.\nजर आपण पुन्हा \"$1\" टिचकले तर, कसेहीकरुन ते पुनर्निर्देशन तयार होईल.",
        "missingcommenttext": "कृपया खाली प्रतिक्रिया भरा.",
-       "missingcommentheader": "<strong>आठवण:<strong> आपण या लेखनाकरिता विषय दिलेला नाही. आपण पुन्हा \"{{int:savearticle}}\" वर टिचकले तर, तुमचे संपादन त्याशिवायच जतन होईल.",
+       "missingcommentheader": "<strong>आठवण:<strong> आपण या लेखनाकरिता विषय दिलेला नाही. आपण पुन्हा \"$1\" वर टिचकले तर, तुमचे संपादन त्याशिवायच जतन होईल.",
        "summary-preview": "आढाव्याची झलक:",
        "subject-preview": "विषय झलक:",
        "previewerrortext": "आपल्या बदलांची झलक बघण्याचे प्रयत्नादरम्यान त्रुटी उद्भवली.",
        "editingsection": "$1 (विभाग) संपादन",
        "editingcomment": "$1 चे संपादन (प्रतिक्रिया)",
        "editconflict": "संपादन मतभेद: $1",
-       "explainconflict": "आपण संपादनाला सुरूवात केल्यानंतर इतर कोणीतरी या पानात बदल केला आहे.\nयातील वरच्या पाठ्यभागामध्ये सध्या अस्तिवात असलेल्या पृष्ठातील पाठ्य आहे. आपले बदल हे खालच्या बाजूतील पाठ्यभागात दर्शविलेले आहेत.\nआपल्याला हे बदल सध्या अस्तिवात असणाऱ्या पाठ्यासोबत एकत्रित करावे लागतील.\nजर तुम्ही \"{{int:savearticle}}\" ही कळ दाबली तर,'''केवळ''' वरच्या पाठ्यभागामध्ये असलेले पाठ्यच साठविण्यात येईल .",
+       "explainconflict": "आपण संपादनाला सुरूवात केल्यानंतर इतर कोणीतरी या पानात बदल केला आहे.\nयातील वरच्या पाठ्यभागामध्ये सध्या अस्तिवात असलेल्या पृष्ठातील पाठ्य आहे. आपले बदल हे खालच्या बाजूतील पाठ्यभागात दर्शविलेले आहेत.\nआपल्याला हे बदल सध्या अस्तिवात असणाऱ्या पाठ्यासोबत एकत्रित करावे लागतील.\nजर तुम्ही \"$1\" ही कळ दाबली तर,'''केवळ''' वरच्या पाठ्यभागामध्ये असलेले पाठ्यच साठविण्यात येईल .",
        "yourtext": "तुमचा मजकूर",
        "storedversion": "साठविलेली आवृत्ती",
        "nonunicodebrowser": "'''सावधान: तुमचा न्याहाळक युनिकोड आधारित नाही. ASCII नसलेली  अक्षरचिन्हे संपादन खिडकीत सोळाअंकी कूटसंकेत (हेक्झाडेसीमल कोड) स्वरूपात दिसण्याची, सुरक्षितपणे संपादन करू देणारी,  पळवाट उपलब्ध आहे.'''",
        "post-expand-template-argument-warning": "<strong>ईशारा:</strong> या पानावर असा एकतरी साचा आहे जो वाढविल्यास खूप मोठा होईल.\nअसे साचे वगळण्यात आलेले आहेत.",
        "post-expand-template-argument-category": "अशी पाने ज्यांच्यामध्ये साचे वगळलेले आहेत",
        "parser-template-loop-warning": "साचा चक्र मिळाले: [[$1]]",
+       "template-loop-category-desc": "या पानात एक साचा वलय आहे, म्हणजे, तो साचा जो स्वतःसच वारंवार हाक देतो.",
        "parser-template-recursion-depth-warning": "साचा पुनरावर्तन खोली मर्यादा ओलांडली ($1)",
        "language-converter-depth-warning": "भाषा रुपांतरण खोली मर्यादा ओलांडली ($1)",
        "node-count-exceeded-category": "लेख जेथे निस्पंद-गणना(नोड-काऊंट) पार केल्या गेला",
        "right-editsemiprotected": "\"{{int:protect-level-autoconfirmed}}\" म्हणून नमुद केलेली सुरक्षित पाने संपादा",
        "right-editcontentmodel": "पानाचा आशय नमूना संपादा",
        "right-editinterface": "सदस्य पसंतीक्रम बदला",
-       "right-editusercssjs": "इतर सदस्यांच्या CSS व JS संचिका संपादित करा",
        "right-editusercss": "इतर सदस्यांच्या CSS संचिका संपादित करा",
        "right-edituserjs": "इतर सदस्यांच्या JS संचिका संपादित करा",
        "right-editmyusercss": "स्वत:च्या सदस्यनामाच्या 'सीएसएस' संचिका संपादा",
        "rcshowhidecategorization": "$1 पान वर्गीकरण",
        "rcshowhidecategorization-show": "दाखवा",
        "rcshowhidecategorization-hide": "लपवा",
-       "rclinks": "मागील $2 दिवसांतील $1 बदल पहा.<br />$3",
+       "rclinks": "मागील $2 दिवसांतील $1 बदल पहा.",
        "diff": "फरक",
        "hist": "इति.",
        "hide": "लपवा",
        "undeleteviewlink": "पहा",
        "undeleteinvert": "निवड उलट करा",
        "undeletecomment": "प्रतिक्रिया:",
-       "undeletedrevisions": "{{PLURAL:$1|1 आवर्तन|$1 आवर्तने}} पुनर्स्थापित",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 आवर्तन|$1 आवर्तने}}आणि {{PLURAL:$2|1 संचिका|$2 संचिका}} पुनर्स्थापित",
-       "undeletedfiles": "{{PLURAL:$1|1 संचिका|$1 संचिका}} पुनर्स्थापित",
        "cannotundelete": "काही किंवा सर्वच उलटवणे फसले:$1",
        "undeletedpage": "<strong>$1ला पुनर्स्थापित केले</strong>\n\nअलिकडिल वगळलेल्या आणि पुनर्स्थापितांच्या नोंदीकरिता [[Special:Log/delete|वगळल्याच्या नोंदी]] पहा .",
        "undelete-header": "अलीकडील वगळलेल्या पानांकरिता [[Special:Log/delete|वगळलेल्या नोंदी]] पहा.",
index bf16968..0c114ec 100644 (file)
        "rcshowhideliu": "$1 тинӓрӹн сирӓлтӹнӹт",
        "rcshowhideanons": "$1 анонимвлӓ",
        "rcshowhidemine": "$1 ӹшке тӧрлӹмӓшвлӓэт",
-       "rclinks": "Пӹтӓрӹтш  $1кечӹвлаштӹш $2 вашталтмашвлӓм  анжыкташ<br />$3",
+       "rclinks": "Пӹтӓрӹтш  $1кечӹвлаштӹш $2 вашталтмашвлӓм  анжыкташ",
        "diff": "ма-шон",
        "hist": "истори",
        "hide": "шӹлтӓш",
index e76fd30..508c79e 100644 (file)
@@ -22,7 +22,8 @@
                        "Macofe",
                        "Matma Rex",
                        "Nemo bis",
-                       "Mbrt"
+                       "Mbrt",
+                       "Muhdnurhidayat"
                ]
        },
        "tog-underline": "Garis bawah pautan:",
        "preview": "Pralihat",
        "showpreview": "Paparkan pralihat",
        "showdiff": "Lihat perubahan",
-       "blankarticle": "<strong>Amaran:</strong> Laman yang anda sedang menciptakan adalah kosong.\nJika akan menklik \"{{int:savearticle}}\" sekali lagi, laman ini akan diciptakan tanpa sebarang kandungan.",
+       "blankarticle": "<strong>Amaran:</strong> Laman yang anda sedang menciptakan adalah kosong.\nJika akan menklik \"$1\" sekali lagi, laman ini akan diciptakan tanpa sebarang kandungan.",
        "anoneditwarning": "<strong>Amaran:</strong> Anda tidak log masuk. Alamat IP anda akan disiarkan kepada umum jika anda membuat sebarang suntingan. Jika anda <strong>[$1 log masuk]</strong> atau <strong>[$2 membuka akaun]</strong>, suntingan anda akan diatribusikan kepada nama pengguna anda di samping manfaat-manfaat lain.",
        "anonpreviewwarning": "''Anda belum log masuk. Jika anda menyimpan laman ini, alamat IP anda akan direkodkan dalam sejarah penyuntingan laman ini.''",
        "missingsummary": "'''Peringatan:''' Anda tidak menyatakan ringkasan suntingan. Klik '''Simpan''' sekali lagi untuk menyimpan suntingan ini tanpa ringkasan.",
-       "selfredirect": "<strong>Amaran:</strong> Anda sedang melencongkan laman ini kepada dirinya sendiri.\nMungkin anda telah menyatakan sasaran yang salah untuk lencongan ini ataupun sedang tersalah menyunting halaman.\nJika anda mengklik \"{{int:savearticle}}\" semula, maka lencongan tetap akan dihasilkan.",
+       "selfredirect": "<strong>Amaran:</strong> Anda sedang melencongkan laman ini kepada dirinya sendiri.\nMungkin anda telah menyatakan sasaran yang salah untuk lencongan ini ataupun sedang tersalah menyunting halaman.\nJika anda mengklik \"$1\" semula, maka lencongan tetap akan dihasilkan.",
        "missingcommenttext": "Sila masukkan komen dalam ruangan di bawah.",
-       "missingcommentheader": "<strong>Peringatan:</strong> Anda belum menyatakan tajuk perkara bagi komen ini.\nJika anda klik '''{{int:savearticle}}''' sekali lagi, suntingan anda akan tersimpan tanpa tajuk.",
+       "missingcommentheader": "<strong>Peringatan:</strong> Anda belum menyatakan tajuk perkara bagi komen ini.\nJika anda klik '''$1''' sekali lagi, suntingan anda akan tersimpan tanpa tajuk.",
        "summary-preview": "Pralihat ringkasan:",
        "subject-preview": "Pralihat perkara:",
        "previewerrortext": "Ralat berlaku ketika cuba mempratayangkan hasil suntingan anda.",
        "editingsection": "Menyunting $1 (bahagian)",
        "editingcomment": "Menyunting $1 (bahagian baru)",
        "editconflict": "Percanggahan penyuntingan: $1",
-       "explainconflict": "Pengguna lain telah menyunting laman ini ketika anda sedang menyuntingnya.\nKawasan teks di atas mengandungi teks semasa.\nPerubahan anda dipaparkan dalam kawasan teks di bawah.\nAnda perlu menggabungkan perubahan anda dengan teks semasa.\n'''Hanya''' teks dalam kawasan teks di atas akan disimpan jika anda menekan \"{{int:savearticle}}\".",
+       "explainconflict": "Pengguna lain telah menyunting laman ini ketika anda sedang menyuntingnya.\nKawasan teks di atas mengandungi teks semasa.\nPerubahan anda dipaparkan dalam kawasan teks di bawah.\nAnda perlu menggabungkan perubahan anda dengan teks semasa.\n'''Hanya''' teks dalam kawasan teks di atas akan disimpan jika anda menekan \"$1\".",
        "yourtext": "Teks anda",
        "storedversion": "Versi yang disimpan",
        "nonunicodebrowser": "'''AMARAN: Pelayar anda tidak mematuhi Unicode. Aksara-aksara bukan ASCII akan dipaparkan dalam kotak sunting sebagai kod perenambelasan.'''",
        "search-file-match": "(sepadan dengan kandungan fail)",
        "search-suggest": "Maksud anda, $1?",
        "search-rewritten": "Memaparkan hasil untuk $1. Cari $2 pula.",
-       "search-interwiki-caption": "Projek-projek lain",
+       "search-interwiki-caption": "Hasil dari projek lain",
        "search-interwiki-default": "Hasil dari $1:",
        "search-interwiki-more": "(lagi)",
        "search-relatedarticle": "Berkaitan",
        "userrights-lookup-user": "Urus kumpulan pengguna",
        "userrights-user-editname": "Masukkan nama pengguna:",
        "editusergroup": "Sunting Kumpulan Pengguna",
-       "editinguser": "Mengubah hak {{GENDER:$1|pengguna}} <strong>[[User:$1|$1]]</strong> $2",
+       "editinguser": "Mengubah hak {{GENDER:$1|pengguna}} bagi <strong>[[User:$1|$1]]</strong> $2",
+       "viewinguserrights": "Melihat hak {{GENDER:$1|pengguna}} bagi <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Ubah kumpulan pengguna",
        "saveusergroups": "Simpan Kumpulan Pengguna",
        "userrights-groupsmember": "Ahli bagi:",
        "recentchanges-label-plusminus": "Saiz laman telah berubah sebanyak jumlah bait ini",
        "recentchanges-legend-heading": "<strong>Petunjuk:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lihat juga [[Special:NewPages|senarai laman baru]])",
+       "rcfilters-filter-pageedits-description": "Suntingan kandungan wiki, perbincangan, huraian kategori…",
+       "rcfilters-filter-logactions-description": "Tindakan pentadbiran, pembuatan akaun, penghapusan halaman, muat naik…",
        "rcnotefrom": "Yang berikut adalah {{PLURAL:$5|suntingan|suntingan-suntingan}} sejak <strong>$3, $4</strong> (selebihi <strong>$1</strong> dipaparkan).",
        "rclistfrom": "Paparkan perubahan sejak $3 $2",
        "rcshowhideminor": "$1 suntingan kecil",
        "rcshowhidecategorization": "$1 pengkategorian laman",
        "rcshowhidecategorization-show": "Paparkan",
        "rcshowhidecategorization-hide": "Sorokkan",
-       "rclinks": "Paparkan $1 perubahan terakhir sejak $2 hari yang lalu<br />$3",
+       "rclinks": "Paparkan $1 perubahan terakhir sejak $2 hari yang lalu",
        "diff": "beza",
        "hist": "sej",
        "hide": "Sorokkan",
index 4166acc..5ec3a73 100644 (file)
        "externaldberror": "Kien hemm problema esterna ta' awtentiċitá jew m'għandhekx permess neċċessarju sabiex tagħmel aġġornamenti fuq l-aċċess estern.",
        "login": "Idħol",
        "nav-login-createaccount": "Idħol / Oħloq kont",
-       "userlogin": "Idħol jew oħloq kont ġdid",
-       "userloginnocreate": "Idħol",
        "logout": "Oħroġ",
        "userlogout": "oħroġ",
        "notloggedin": "Għadek ma dħaltx ġewwa",
        "userlogin-noaccount": "M'għandekx kont?",
        "userlogin-joinproject": "Irreġistra fuq {{SITENAME}}",
-       "nologin": "Għad m'għandekx kont? '''$1'''.",
-       "nologinlink": "Oħloq kont",
        "createaccount": "Oħloq kont",
-       "gotaccount": "Diġa għandhek kont? '''$1'''.",
-       "gotaccountlink": "Idħol",
-       "userlogin-resetlink": "Insejt kif tidħol fil-kont tiegħek?",
        "userlogin-resetpassword-link": "Insejt il-kelma tad-dħul (password)?",
        "userlogin-helplink2": "Għajnuna biex tidħol fil-kont",
        "userlogin-loggedin": "Diġà dħalt fil-kont bħala {{GENDER:$1|$1}}.\nUża l-formola t'hawn taħt biex tidħol bħala utent ieħor",
        "createacct-another-email-ph": "Daħħal l-indirizz elettroniku",
        "createaccountmail": "Uża kelma tad-dħul temporanja li tkun u ibgħatha lill-indirizz elettroniku speċifikat",
        "createacct-realname": "Isem proprju (fakultattiv)",
-       "createaccountreason": "Raġuni:",
        "createacct-reason": "Raġuni",
        "createacct-reason-ph": "Għala qiegħed toħloq kont ġdid",
        "createacct-submit": "Oħloq il-kont",
        "preview": "Dehra proviżorja",
        "showpreview": "Dehra proviżorja",
        "showdiff": "Uri t-tibdiliet",
-       "blankarticle": "<strong>Attenzjoni:</strong> Il-paġna li qed toħloq vojta.\nMeta terġa' tikklikkja fuq \"{{int:savearticle}}\", il-paġna tinħoloq bla ebda kontenut.",
+       "blankarticle": "<strong>Attenzjoni:</strong> Il-paġna li qed toħloq vojta.\nMeta terġa' tikklikkja fuq \"$1\", il-paġna tinħoloq bla ebda kontenut.",
        "anoneditwarning": "'''Attenzjoni:''' Ma dħaltx f'kontok.\nL-indirizz tal-IP tiegħek se jkun jidher pubblikament meta tagħmel xi modifika. Jekk <strong>[$1 tidħol f'kontok]</strong> jew <strong>[$2 toħloq kont]</strong>, il-modifiki li tagħmel jiġu attribwiti lill-ismek ta' utent, flimkien ma benefiċċji oħra.",
        "anonpreviewwarning": "''Bħalissa mintix fil-kont tiegħek. Jekk issalva xi modifiki tiegħek, fil-kronoloġija tal-paġna se jiġi reġistrat l-indirizz IP tiegħek.''",
        "missingsummary": "'''Twissija:''' Ma pprovdejt l-ebda taqsira dwar il-modifika.\nJekk terġa' tagħfas Modifika, l-modifika se tiġi salvata mingħajr waħda.",
        "missingcommenttext": "Jekk jogħġbok ħalli kumment hawn taħt.",
-       "missingcommentheader": "'''Twissija:''' Ma ġie speċifikat l-ebda suġġett/titlu għal dan il-kumment.\nJekk terġa' tagħfas \"{{int:savearticle}}\", il-modifika tiegħek se tiġi salvata mingħajr wieħed.",
+       "missingcommentheader": "'''Twissija:''' Ma ġie speċifikat l-ebda suġġett/titlu għal dan il-kumment.\nJekk terġa' tagħfas \"$1\", il-modifika tiegħek se tiġi salvata mingħajr wieħed.",
        "summary-preview": "Dehra proviżorja tat-taqsira:",
        "subject-preview": "Dehra proviżorja tat-taqsira/suġġett:",
        "blockedtitle": "L-utent ġie bblokkjat",
        "editingsection": "Modifika ta' $1 (sezzjoni)",
        "editingcomment": "Qed jiġi editjat $1 (sezzjoni ġdida)",
        "editconflict": "Kunflitt t'editjar: $1",
-       "explainconflict": "Utent ieħor biddel il-paġna meta inti kont qiegħed tagħmel il-modifiki tiegħek.\nIl-kaxxa tal-modifika ta' fuq turi t-test tal-paġna kif inhu bħalissa.\nIl-bidliet li għamilt huma fin-naħa t'isfel.\nJekk trid il-modifiki tiegħek jiġu salvati, hemm bżonn li tgħaqqad il-modifiki personali ma' dawk eżistenti (fil-kaxxa ta' fuq)\nMeta tagħfas il-buttuna \"{{int:savearticle}}\", se jiġi salvat '''biss''' it-test li jinsab fil-kaxxa tal-modifika ta' fuq.",
+       "explainconflict": "Utent ieħor biddel il-paġna meta inti kont qiegħed tagħmel il-modifiki tiegħek.\nIl-kaxxa tal-modifika ta' fuq turi t-test tal-paġna kif inhu bħalissa.\nIl-bidliet li għamilt huma fin-naħa t'isfel.\nJekk trid il-modifiki tiegħek jiġu salvati, hemm bżonn li tgħaqqad il-modifiki personali ma' dawk eżistenti (fil-kaxxa ta' fuq)\nMeta tagħfas il-buttuna \"$1\", se jiġi salvat '''biss''' it-test li jinsab fil-kaxxa tal-modifika ta' fuq.",
        "yourtext": "It-test tiegħek",
        "storedversion": "Il-verżjoni maħżuna",
        "nonunicodebrowser": "'''TWISSIJA: Il-Browser tiegħek m'għandux sapport għal unicode.\nHemm xogħol sabiex iħallik tagħmel modifiki lil paġni mingħajr periklu ta' xejn: karratri li m'humiex ASCII se jidhru fil-kaxxa tal-modifika bħala kodiċi hexadeċimali.'''",
        "right-editprotected": "Modifika paġni protetti",
        "right-editcontentmodel": "Jimmodifika l-mudell ta' kontenut ta' paġna",
        "right-editinterface": "Immodifika l-interfaċċa tal-utent",
-       "right-editusercssjs": "Modifika l-fajls CSS u JS ta' utenti oħrajn",
        "right-editusercss": "Modifika l-fajls CSS ta' utenti oħrajn",
        "right-edituserjs": "Modifika l-fajls JS ta' utenti oħrajn",
        "right-editmyusercss": "Immodifika l-fajls tas-CSS personali",
        "rcshowhidemine": "$1 modifiki tiegħi",
        "rcshowhidemine-show": "Uri",
        "rcshowhidemine-hide": "Aħbi",
-       "rclinks": "Uri l-aħħar $1 modifiki fl-aħħar $2 ġranet<br />$3",
+       "rclinks": "Uri l-aħħar $1 modifiki fl-aħħar $2 ġranet",
        "diff": "diff",
        "hist": "kron",
        "hide": "Aħbi",
        "undeleteviewlink": "uri",
        "undeleteinvert": "Inverti s-selezzjoni",
        "undeletecomment": "Raġuni:",
-       "undeletedrevisions": "{{PLURAL:$1|reviżjoni irkuprata|$1 reviżjonijiet irkuprati}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|reviżjoni waħda|$1 reviżjonijiet}} u {{PLURAL:$2|fajl wieħed irkuprat|$2 fajls irkuprati}}",
-       "undeletedfiles": "{{PLURAL:$1|file wieħed|$1 fajls}} irkuprati",
        "cannotundelete": "L-irkuprar ma rnexxiex:\n$1",
        "undeletedpage": "'''$1 ġie irkuprat'''\n\nIkkonsulta r-[[Special:Log/delete|reġistru tat-tħassir]] biex tara t-tħassir u l-irkuprar ta' paġni l-aktar riċenti.",
        "undelete-header": "Ara r-[[Special:Log/delete|reġistru tat-tħassir]] għal paġni mħassra riċentament.",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|aġġorna|aġġornat}} it-tikketti tar-reviżjoni $4 tal-paġna $3 ({{PLURAL:$7|miżjuda}} $6; {{PLURAL:$9|imneħħija}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|aġġorna|aġġornat}} it-tikketti tad-daħla fir-reġistru $5 tal-paġna $3 ({{PLURAL:$7|miżjuda}} $6; {{PLURAL:$9|imneħħija}} $8)",
        "rightsnone": "(xejn)",
-       "revdelete-summary": "Taqsira tal-modifika",
        "feedback-adding": "Qed jiżdied ir-rispons lil din il-paġna...",
        "feedback-back": "Lura",
        "feedback-bugcheck": "Tajjeb ħafna! Ivverifika li mhux diġà fost id-[$1 difetti magħrufa].",
index 41c6a59..472130a 100644 (file)
        "yourdomainname": "L tou domínio",
        "login": "Antrar",
        "nav-login-createaccount": "Antrar / criar cuonta",
-       "userlogin": "Antrar / criar cuonta",
        "logout": "Salir",
        "userlogout": "Salir",
        "notloggedin": "Por outenticar",
-       "nologin": "Nun tenes ua cuonta? '''$1'''.",
-       "nologinlink": "Criar ua cuonta",
        "createaccount": "Criar nuoba cuonta",
-       "gotaccount": "Yá tenes ua cuonta? '''$1'''.",
-       "gotaccountlink": "Antrar",
        "createaccountmail": "por morada eiletrónica",
        "loginerror": "Erro de outenticaçon",
        "loginsuccesstitle": "Antreste cumo debe de ser",
        "prefs-rc": "Redadeiras alteraçones",
        "saveprefs": "Grabar",
        "prefs-editing": "Oupçones de eidiçon",
-       "rows": "Lhinhas:",
        "servertime": "Hora de l serbidor:",
        "timezoneregion-africa": "África",
        "timezoneregion-america": "América",
        "rcshowhideanons": "$1 outelizadores anónimos",
        "rcshowhidepatr": "$1 eidiçones patrulhadas",
        "rcshowhidemine": "$1 mies eidiçones",
-       "rclinks": "Amostrar las redadeiras $1 altaraçones ne ls redadeiros $2 dies<br />$3",
+       "rclinks": "Amostrar las redadeiras $1 altaraçones ne ls redadeiros $2 dies",
        "diff": "defr",
        "hist": "stór",
        "hide": "Scunder",
index 39bacff..cb57e31 100644 (file)
                        "Saiddzone",
                        "Thanlwin",
                        "Thitaung",
-                       "Umherirrender",
                        "Zawthet",
                        "ကိုရာဝီ",
                        "아라",
                        "9.sinistra",
                        "Ninjastrikers",
                        "Penguinlay",
-                       "Nemo bis"
+                       "Nemo bis",
+                       "Stephanecbisson"
                ]
        },
        "tog-underline": "လင့်ကို မျဉ်းသားသည့် ပုံစံ -",
        "anontalk": "ဆွေးနွေးရန်",
        "navigation": "အ​ညွှန်း​",
        "and": "&#32;နှင့်",
-       "qbfind": "ရှာပါ",
-       "qbbrowse": "ရှာဖွေလှန်လှောရန်",
-       "qbedit": "ပြင်ဆင်ရန်",
-       "qbpageoptions": "ဤစာမျက်နှာ",
-       "qbmyoptions": "ကျွန်ုပ် စာမျက်နှာများ",
        "faq": "မေးလေ့ရှိကြသည်များ",
-       "faqpage": "Project:မေးလေ့ရှိကြသည်များ",
        "actions": "ဆောင်ရွက်ချက်များ",
        "namespaces": "အမည်ညွှန်းများ",
        "variants": "အမျိုးမျိုးအပြားပြား",
        "edit-local": "ဒေသတွင်း ဖော်ပြချက် ပြင်ဆင်ရန်",
        "create": "စတင်ရေးသားရန်",
        "create-local": "ဒေသတွင်း ဖော်ပြချက် ထည့်ရန်",
-       "editthispage": "ဤစာမျက်နှာကို ပြင်ရန်",
-       "create-this-page": "ဤစာမျက်နှာကို စတင်ရေးသားရန်",
        "delete": "ဖျက်​ပါ​",
-       "deletethispage": "ဤစာမျက်နှာဖျက်ပါ",
-       "undeletethispage": "ဤစာမျက်နှာကို မဖျက်တော့ရန်",
        "undelete_short": "{{PLURAL:$1|တည်းဖြတ်မှုတစ်ခု|တည်းဖြတ်မှု $1 ခုတို့}}ကို မဖျက်တော့ရန်",
        "viewdeleted_short": "{{PLURAL:$1|ဖျက်လိုက်သည့်တည်းဖြတ်မှုတစ်ခု|ဖျက်လိုက်သည့် တည်းဖြတ်မှု $1 ခု}}ကို ကြည့်ရန်",
        "protect": "ကာကွယ်ပါ",
        "protect_change": "ပြောင်းလဲရန်",
-       "protectthispage": "ဤစာမျက်နှာကို ကာကွယ်ရန်",
        "unprotect": "ကာကွယ်ခြင်းကို ပြောင်းလဲရန်",
-       "unprotectthispage": "စာမျက်နှာ ကာကွယ်ခြင်းကို ပြောင်းလဲရန်",
        "newpage": "စာမျက်နှာအသစ်",
-       "talkpage": "ဆွေးနွေးရန်",
        "talkpagelinktext": "ဆွေးနွေး",
        "specialpage": "အထူး စာမျက်နှာ",
        "personaltools": "ကိုယ်ပိုင် ကိရိယာများ",
-       "articlepage": "မာတိကာ ကြည့်ရန်",
        "talk": "ဆွေးနွေးချက်",
        "views": "အမြင်ပုံစံများ",
        "toolbox": "ကိရိယာများ",
        "tool-link-userrights": "{{GENDER:$1|အသုံးပြုသူ}}အုပ်စုများကို ပြောင်းလဲရန်",
        "tool-link-userrights-readonly": "{{GENDER:$1|အသုံးပြုသူ}}အုပ်စုများကို ကြည့်ရန်",
        "tool-link-emailuser": "ဤ{{GENDER:$1|အသုံးပြုသူ}}ကို အီးမေးပို့ရန်",
-       "userpage": "အသုံးပြုသူ၏ စာမျက်နှာကို ကြည့်ရန်",
-       "projectpage": "ပရောဂျက်စာမျက်နှာကို ကြည့်ရန်",
        "imagepage": "ဖိုင်စာမျက်နှာကိုကြည့်ရန်",
        "mediawikipage": "စာတိုစာမျက်နှာ ကြည့်ရန်",
        "templatepage": "တမ်းပလိတ်စာမျက်နှာကို ကြည့်ရန်",
        "yourdiff": "ကွဲပြားချက်များ",
        "copyrightwarning": "{{SITENAME}} တွင် ရေးသားမှုအားလုံးကို $2 အောက်တွင် ဖြန့်ဝေရန် ဆုံးဖြတ်ပြီး ဖြစ်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။။ (အသေးစိတ်ကို $1 တွင်ကြည့်ပါ။)\nအကယ်၍ သင့်ရေးသားချက်များကို အညှာအတာမရှိ တည်းဖြတ်ခံရခြင်း၊ စိတ်တိုင်းကျ ဖြန့်ဝေခံရခြင်းတို့ကို အလိုမရှိပါက ဤနေရာတွင် မတင်ပါနှင့်။<br />\nသင်သည် ဤဆောင်းပါးကို သင်ကိုယ်တိုင်ရေးသားခြင်း၊ သို့မဟုတ် အများပြည်သူဆိုင်ရာဒိုမိန်းများ၊ ယင်းကဲ့သို့ လွတ်လပ်သည့် ရင်းမြစ်မှ ကူးယူထားခြင်း ဖြစ်ကြောင်းလည်း ဝန်ခံ ကတိပြုပါသည်။\n<strong>မူပိုင်ခွင့်ရှိသော စာ၊ပုံများကို ခွင့်ပြုချက်မရှိဘဲ မတင်ပါနှင့်။</strong>",
        "copyrightwarning2": "{{SITENAME}} တွင် ရေးသားမှုအားလုံးသည် အခြားပုံပိုးသူများ၏ တည်းဖြတ်၊ ပြောင်းလဲ၊ ဖယ်ရှားခံရနိုင်သည်ကို သတိပြုပါ။\nအကယ်၍ သင့်ရေးသားချက်များကို အညှာအတာမရှိ တည်းဖြတ်ခံရခြင်း၊ စိတ်တိုင်းကျ ဖြန့်ဝေခံရခြင်းတို့ကို အလိုမရှိပါက ဤနေရာတွင် မတင်ပါနှင့်။<br />\nသင်သည် ဤဆောင်းပါးကို သင်ကိုယ်တိုင်ရေးသားခြင်း၊ သို့မဟုတ် အများပြည်သူဆိုင်ရာဒိုမိန်းများ၊ ယင်းကဲ့သို့ လွတ်လပ်သည့် ရင်းမြစ်မှ ကူးယူထားခြင်း ဖြစ်ကြောင်းလည်း ဝန်ခံ ကတိပြုပါသည် (အသေးစိတ်ကို $1 တွင်ကြည့်ပါ)။\n<strong>မူပိုင်ခွင့်ရှိသော စာ၊ပုံများကို ခွင့်ပြုချက်မရှိဘဲ မတင်ပါနှင့်။</strong>",
-       "templatesused": "{{PLURAL:$1|တမ်းပလိတ်|တမ်းပလိတ်}} ခုကို ဤစာမျက်နှာကို သုံးထားသည် -",
-       "templatesusedpreview": "{{PLURAL:$1|တမ်းပလိတ်|တမ်းပလိတ်}} ခုကို ဤနမူနာတွင် သုံးထားသည် -",
+       "protectedpagewarning": "<strong>သတိပေးချက်။ ဤစာမျက်နှာအား စီမံခန့်ခွဲသူအဆင့်ရှိသူများသာ ပြင်ဆင်နိုင်ရန် ကာကွယ်ထားသည်။</strong>\nနောက်ဆုံးမှတ်တမ်းအား ကိုးကားနိုင်ရန် အောက်တွင် ဖော်ပြထားသည်။",
+       "semiprotectedpagewarning": "<strong>မှတ်ချက်။</strong> ဤစာမျက်နှာအား မှတ်ပုံတင်ထားသော အသုံးပြုသူအဆင့်ရှိသူများသာ တည်းဖြတ်နိုင်ရန် ကာကွယ်ထားသည်။\nနောက်ဆုံးမှတ်တမ်းအား ကိုးကားနိုင်ရန် အောက်တွင် ဖော်ပြထားသည်။",
+       "titleprotectedwarning": "<strong>သတိပေးချက်။ ဤစာမျက်နှာကို ကာကွယ်ထားပြီး ဖန်တီးနိုင်ရန်အတွက် [[Special:ListGroupRights|အထူး အခွင့်အရေးများ]]ရှိထားရန် လိုအပ်သည်။</strong>\nနောက်ဆုံးမှတ်တမ်းအား ကိုးကားနိုင်ရန် အောက်တွင် ဖော်ပြထားသည်။",
+       "templatesused": "ဤစာမျက်နှာတွင် အသုံးပြုထားသော {{PLURAL:$1|တမ်းပလိတ်|တမ်းပလိတ်များ}} -",
+       "templatesusedpreview": "ဤနမူနာတွင် အသုံးပြုထားသော {{PLURAL:$1|တမ်းပလိတ်|တမ်းပလိတ်များ}} -",
        "templatesusedsection": "ဤအပိုင်းတွင် အသုံးပြုထားသော {{PLURAL:$1|တမ်းပလိတ်|တမ်းပလိတ်များ}}:",
        "template-protected": "(ကာကွယ်ထားသည်)",
        "template-semiprotected": "(တစ်စိတ်တစ်ပိုင်း ကာကွယ်ထားသည်)",
        "post-expand-template-argument-warning": "'''သတိပေးချက် -''' ဤစာမျက်နှာတွင် ပမာဏအားဖြင့် ကြီးမားကျယ်ပြန့်သော template argument တစ်ခုပါဝင်သည်။\nယင်း arguments များကို ဖယ်ထုတ်လိုက်သည်။",
        "post-expand-template-argument-category": "ဖယ်ထုတ်ထားသော template arguments များပါဝင်သည့် စာမျက်နှာများ",
        "parser-template-loop-warning": "တမ်းပလိတ်များ လှည့်ပတ်ဆက်စပ် နေသည်ကို တွေ့ရသည်။ [[$1]]",
-       "undo-summary": "[[Special:Contributions/$2|$2]] ([[User talk:$2|ဆွေးနွေး]]) ၏ $1 ပြင်ဆင်ချက် $1 ကို ပြန်လည်ပယ်ဖျက်လိုက်သည်",
+       "undo-summary": "[[Special:Contributions/$2|$2]] ([[User talk:$2|ဆွေးနွေး]]) ၏ တည်းဖြတ်မူ $1 ကို ပြန်လည်ပယ်ဖျက်လိုက်သည်",
        "viewpagelogs": "ဤစာမျက်နှာအတွက် မှတ်တမ်းများကို ကြည့်ရန်",
        "nohistory": "ဤစာမျက်နှာတွင် တည်းဖြတ်မှု ရာဇဝင်မရှိပါ",
        "currentrev": "နောက်ဆုံးမူ",
        "rcshowhidecategorization": "စာမျက်နှာ ကဏ္ဍထည့်သွင်းခြင်း $1ရန်",
        "rcshowhidecategorization-show": "ပြ",
        "rcshowhidecategorization-hide": "ဝှက်",
-       "rclinks": "$2 ရက်အတွင်းမှ နောက်ဆုံးပြင်ဆင်ချက် $1 ခုကို ပြရန်</br> $3",
+       "rclinks": "$2 ရက်အတွင်းမှ နောက်ဆုံးပြင်ဆင်ချက် $1 ခုကို ပြရန်",
        "diff": "ကွဲပြားမှု",
        "hist": "မှတ်တမ်း",
        "hide": "ဝှက်",
        "nlinks": "{{PLURAL:$1|လင့်|လင့်ခ်များ}} $1",
        "nmembers": "အဖွဲ့ဝင် $1 {{PLURAL:$1|ခု|ခု}}",
        "specialpage-empty": "ဤသတင်းပို့ချက်အတွက် ရလဒ်မရှိပါ။",
-       "uncategorizedpages": "á\80¡á\80\99á\80»á\80­á\80¯á\80¸á\80¡á\80\85á\80¬á\80¸ á\80\81á\80½á\80²á\80\99ထားသော စာမျက်နှာများ",
+       "uncategorizedpages": "á\80\80á\80\8fá\80¹á\80\8dá\80\99á\80\81á\80½á\80²ထားသော စာမျက်နှာများ",
        "uncategorizedcategories": "အမျိုးအစားခွဲမထားသော ကဏ္ဍများ",
-       "uncategorizedimages": "á\80¡á\80\99á\80»á\80­á\80¯á\80¸á\80¡á\80\85á\80¬á\80¸ á\80\81á\80½á\80²á\80\99ထားသော ဖိုင်များ",
-       "uncategorizedtemplates": "á\80¡á\80\99á\80»á\80­á\80¯á\80¸á\80¡á\80\85á\80¬á\80¸ á\80\81á\80½á\80²á\80\99ထားသော တမ်းပလိတ်များ",
+       "uncategorizedimages": "á\80\80á\80\8fá\80¹á\80\8dá\80\99á\80\81á\80½á\80²ထားသော ဖိုင်များ",
+       "uncategorizedtemplates": "á\80\80á\80\8fá\80¹á\80\8dá\80\99á\80\81á\80½á\80²ထားသော တမ်းပလိတ်များ",
        "unusedcategories": "အသုံးပြုမထားသော ကဏ္ဍများ",
        "unusedimages": "အသုံးပြုမထားသော ဖိုင်များ",
        "wantedcategories": "အလိုရှိသော ကဏ္ဍများ",
        "protectlogtext": "အောက်ပါတို့သည် စာမျက်နှာ ကာကွယ်မှုများအတွက် အပြောင်းအလဲ စာရင်း ဖြစ်သည်။\nလက်ရှိ စာမျက်နှာ ကာကွယ်မှုများ စာရင်းအတွက် [[Special:ProtectedPages|ကာကွယ်ထားသော စာမျက်နှာများ စာရင်း]]ကို ကြည့်ပါ။",
        "protectedarticle": "\"[[$1]]\" ကို ကာကွယ်ထားသည်",
        "modifiedarticleprotection": "\"[[$1]]\" ၏ ကာကွယ်မှု အဆင့်ကို ပြောင်းရန်",
+       "modifiedarticleprotection-comment": "\"[[$1]]\" အတွက် ကာကွယ်မှုအဆင့်ကို {{GENDER:$2|ပြောင်းလဲခဲ့သည်}}",
        "protect-title": "\"$1\" ၏ ကာကွယ်မှုအဆင့်ကို ပြောင်းလဲရန်",
        "prot_1movedto2": "[[$1]]  မှ​ [[$2]] သို့​",
        "protect-legend": "ကာကွယ်မှု အတည်ပြုရန်",
        "delete_and_move_reason": "\"[[$1]]\" ရွှေ့ပြောင်းရန်အတွက် ဖျက်ပစ်ခြင်း",
        "immobile-source-page": "ဤစာမျက်နှာကို ရွှေ့မရပါ။",
        "move-leave-redirect": "ပြန်ညွှန်းတစ်ခု ချန်ထားရန်",
+       "protectedpagemovewarning": "<strong>သတိပေးချက်။</strong> ဤစာမျက်နှာအား စီမံခန့်ခွဲသူအဆင့်ရှိသူများသာ ရွှေ့ပြောင်းနိုင်ရန် ကာကွယ်ထားသည်။\nနောက်ဆုံးမှတ်တမ်းအား ကိုးကားနိုင်ရန် အောက်တွင် ဖော်ပြထားသည်။",
+       "semiprotectedpagemovewarning": "<strong>မှတ်ချက်။</strong> ဤစာမျက်နှာအား မှတ်ပုံတင်ထားသော အသုံးပြုသူအဆင့်ရှိသူများသာ ရွှေ့ပြောင်းနိုင်ရန် ကာကွယ်ထားသည်။\nနောက်ဆုံးမှတ်တမ်းအား ကိုးကားနိုင်ရန် အောက်တွင် ဖော်ပြထားသည်။",
        "export": "စာမျက်နှာများကို Export ထုတ်ရန်",
        "export-submit": "Export ထုတ်ရန်",
        "export-addcattext": "ကဏ္ဍမှ စာမျက်နှာများကို ပေါင်းထည့်ရန် -",
        "pageinfo-toolboxlink": "စာမျက်နှာ အချက်အလက်များ",
        "markaspatrolleddiff": "စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားရန်",
        "markaspatrolledtext": "ဤစာမျက်နှာအား စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားရန်",
+       "markedaspatrolled": "စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားပြီး",
+       "markedaspatrolledtext": "[[:$1]] ၏ ရွေးချယ်ထားသော တည်းဖြတ်မူကို စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားပြီးပါပြီ။",
+       "markedaspatrollednotify": "$1 သို့ ဤပြောင်းလဲမှုအား စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားပြီးပါပြီ။",
        "filedeleteerror-short": "ဖိုင်ဖျက်ရာတွင် အမှားအယွင်း - $1",
        "previousdiff": "← တည်းဖြတ်မူ အဟောင်း",
        "nextdiff": "ပိုသစ်သော တည်းဖြတ်မှု",
        "confirmemail_send": "အတည်ပြုချက်ကုတ်ကို အီးမေးပို့ပေးရန်",
        "recreate": "ပြန်လည်ဖန်တီးရန်",
        "confirm_purge_button": "အိုကေ",
+       "confirm-purge-top": "ဤစာမျက်နှာ၏ cache အား ရှင်းလင်းမည်လော?",
        "imgmultipageprev": "← ပြီးခဲ့သော စာမျက်နှာ",
        "imgmultipagenext": "နောက်စာမျက်နှာ →",
        "imgmultigo": "သွားပါ!",
        "autosumm-blank": "စာမျက်နှာကို ဗလာလုပ်လိုက်သည်",
        "autoredircomment": "စာမျက်နှာကို [[$1]] သို့ ပြန်ညွှန်းလိုက်သည်",
        "autosumm-new": "\"$1\" အစချီသော စာလုံးတို့နှင့် စာမျက်နှာကို ဖန်တီးလိုက်သည်",
+       "size-bytes": "$1 {{PLURAL:$1|ဘိုက်|ဘိုက်}}",
        "watchlistedit-normal-title": "စောင့်ကြည့်စာရင်းကို တည်းဖြတ်ရန်",
        "watchlistedit-normal-legend": "စောင့်ကြည့်စာရင်းမှ ခေါင်းစဉ်များကို ဖျက်ရန်",
        "watchlistedit-normal-explain": "သင်၏ စောင့်ကြည့်စာရင်းရှိ ခေါင်းစဉ်များကို အောက်တွင် ပြသထားသည်။\nခေါင်းစဉ်တစ်ခုကို ဖယ်ရှားရန် ထိုခေါင်းစဉ်ဘေးရှိ အကွက်တွင် အမှန်ခြစ်ပြီး \"{{int:Watchlistedit-normal-submit}}\" ကိုနှိပ်ပါ။\n[[Special:EditWatchlist/raw|စောင့်ကြည့်စာရင်း အကြမ်း]]ကိုလည်း ကြည့်နိုင်ပါသည်။",
        "logentry-move-move_redir-noredirect": "$3 မှ $4 သို့ ပြန်ညွှန်းပေါ်ထပ်အုပ်ကာ ပြန်ညွှန်းချန်မထားဘဲ $1 က {{GENDER:$2|ရွှေ့ခဲ့သည်}}",
        "logentry-newusers-create": "အသုံးပြုသူအကောင့် $1 ကို {{GENDER:$2|ဖန်တီးခဲ့သည်}}",
        "logentry-newusers-autocreate": "အသုံးပြုသူအကောင့် $1 ကို အလိုအလျောက် {{GENDER:$2|ဖန်တီးခဲ့သည်}}",
+       "logentry-protect-modify": "$3 အတွက် ကာကွယ်မှုအဆင့်ကို $1 {{GENDER:$2|က ပြောင်းလဲခဲ့သည်}} $4",
        "logentry-upload-upload": "$1 သည် $3 ကို {{GENDER:$2|upload တင်ခဲ့သည်}}",
        "logentry-upload-overwrite": "$3 ၏ ဗားရှင်းအသစ်ကို $1 {{GENDER:$2|upload တင်ခဲ့သည်}}",
        "rightsnone": "(ဘာမှမရှိ)",
        "right-pagelang": "စာမျက်နှာ ဘာသာစကား ပြောင်းလဲရန်",
        "log-name-pagelang": "ဘာသာစကား ပြောင်းလဲမှု မှတ်တမ်း",
        "log-description-pagelang": "ဤအရာသည် စာမျက်နှာ၏ဘာသာစကားများ ပြောင်းလဲမှုမှတ်တမ်း ဖြစ်သည်။",
+       "mediastatistics-nbytes": "{{PLURAL:$1|$1 ဘိုက်|$1 ဘိုက်}} ($2; $3%)",
+       "special-characters-group-symbols": "သင်္ကေတများ",
        "log-action-filter-newusers": "အကောင့်ဖန်တီးမှု အမျိုးအစား:",
        "log-action-filter-all": "အားလုံး",
        "log-action-filter-newusers-create": "အမည်မသိ အသုံးပြုသူများမှ ဖန်တီးမှု",
index 2a102ec..726c901 100644 (file)
        "password-change-forbidden": "Те викисэнть а полавтсак салававалот.",
        "login": "Совамо",
        "nav-login-createaccount": "Совамо / тейть совамотарка",
-       "userlogin": "Совамо / тейть совамотарка",
-       "userloginnocreate": "Совамо",
        "logout": "Лисеме",
        "userlogout": "Лисеме",
        "notloggedin": "Апак соваво",
        "userlogin-noaccount": "Совамотаркат арась?",
        "userlogin-joinproject": "Совак «{{SITENAME}}» сайтэнь теицякс",
-       "nologin": "Совамотаркат арась? '''$1'''.",
-       "nologinlink": "Тейть совамотарка",
        "createaccount": "Теемс теицянь од лопа",
-       "gotaccount": "Совамотаркат ули? '''$1'''.",
-       "gotaccountlink": "Совамс",
-       "userlogin-resetlink": "Совамо эрявикстнэнь стувтыть?",
        "userlogin-resetpassword-link": "Салававалот стувтовсь?",
        "userlogin-createanother": "Шкак од совамотарка",
        "createaccountmail": "Тейть кодамо понгсь салававал, кучик сонзэ ало максозь е-сёрмапаргонтень",
-       "createaccountreason": "Тувталось:",
        "createacct-reason": "Тувтал",
        "createacct-submit": "Шкик совамотаркат",
        "createacct-another-submit": "Шкак од совамотарка",
        "saveprefs": "Ванстомс",
        "restoreprefs": "Велявтомс мекев весе ушодкс ладсематнень (весе явкстнэва)",
        "prefs-editing": "Витнема-петнема",
-       "rows": "Валчилькстнэ (строкатне):",
-       "columns": "Палманть:",
        "searchresultshead": "Вешнема",
        "recentchangesdays": "Зяро чить невтемс чиень полавтнематнесэ-лиякстомтоматнесэ:",
        "recentchangesdays-max": "Весемеде куватьс $1 {{PLURAL:$1|чис|чис}}",
        "right-block": "Кардамс лия совийтнень-лисийтнень витнемадо-петнемадо",
        "right-blockemail": "Кардамс лия лисийтнень-совийтнень е-сёрмань кучомадо",
        "right-editinterface": "Витнемс-петнемс теицянь интерчаманть (васодема ёжонть)",
-       "right-editusercssjs": "Витнемс-петнемс лия теицятнень CSS ды JS файласт",
        "right-editusercss": "Витнемс-петнемс лия теицятнень CSS файласт",
        "right-edituserjs": "Витнемс-петнемс лия теицятнень JS файласт",
        "right-import": "Ёвкстамс лия Викистэ лопат",
        "right-mergehistory": "Вейсэндямс лопатнень юрост-путовксост",
        "right-userrights": "Витнемс-петнемс совицянь весе видечитнень",
        "right-siteadmin": "Датабазань сёлгомо ды панжомо",
-       "right-passwordreset": "Ваномс теицянь салава валонь полавтома е-сёрмат",
        "newuserlogpage": "Теицянь шкамодо-теемадо конёв",
        "newuserlogpagetext": "Те теицянь шкавксто журнал",
        "rightslog": "Уськетеицянть видечинть кемекстома",
        "rcshowhidemine": "$1 мезе мон витнинь-петнинь",
        "rcshowhidemine-show": "Невтемс",
        "rcshowhidemine-hide": "Кекшемс",
-       "rclinks": "Невтемс меельце $1 полавтнемат меельце $2 чинь перть<br />$3",
+       "rclinks": "Невтемс меельце $1 полавтнемат меельце $2 чинь перть",
        "diff": "кадовикс",
        "hist": "ист",
        "hide": "Кекшемс",
        "undeleteviewlink": "ваномс",
        "undeleteinvert": "Кочказень таркас апаконь кочкамо",
        "undeletecomment": "Тувталось:",
-       "undeletedrevisions": "{{PLURAL:$1|1 лиякстомтома|$1 лиякстомтомат}} вельмевтезь",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 лиякстомтома|$1 лиякстомтомат}} ды {{PLURAL:$2|1 файла|$2 файлат}} вельмевтезь",
-       "undeletedfiles": "{{PLURAL:$1|1 файла|$1 файлат}} вельмевтезь",
        "undelete-search-box": "Вешнемс нардазь лопатнень ютксто",
        "undelete-search-prefix": "Невтемс лопат тестэ саезь:",
        "undelete-search-submit": "Вешнемс",
        "htmlform-reset": "Саемс мекев полавтоматнень",
        "htmlform-selectorother-other": "Лия",
        "rightsnone": "(арасть)",
-       "revdelete-summary": "витнемадо-петнемадо нурькине йовтавкс",
        "feedback-cancel": "А теемс",
        "feedback-close": "Анок",
        "feedback-message": "Пачтямнэсь:",
        "feedback-subject": "Мезде:",
        "searchsuggest-search": "Вешнемс",
-       "api-error-filename-tooshort": "Керьмазлементь а саты кувалмозо",
-       "api-error-illegal-filename": "Керьмазлемесь а маштови.",
        "api-error-unknownerror": "Апак содань ильведевкс: «$1».",
        "duration-seconds": "$1 {{PLURAL:$1|секунда|секундат}}",
        "duration-minutes": "$1 {{PLURAL:$1|минут|минутат}}",
index a3b7c7e..75ad220 100644 (file)
        "redirectedfrom": "($1 جه بموئه)",
        "redirectpagesub": "گجگی‌بَیتـِن",
        "redirectto": "دکشی‌بیّه به:",
-       "lastmodifiedat": "این صفحه ره آخرین بار این گادر دچینه:\n$2، $1",
+       "lastmodifiedat": "این صفحه ره آخرین بار این گادر دچینه: $2، $1",
        "viewcount": "این صفحه {{PLURAL:$1|ات|$1}} بار بدی‌یه بیّه",
        "protectedpage": "صفحه محافظت‌بَیی",
        "jumpto": "کپّل بیّن به:",
        "nstab-template": "شابلون",
        "nstab-help": "راهنما",
        "nstab-category": "رج",
+       "mainpage-nstab": "گت صفحه",
        "nosuchaction": "نونه اینتی هاکردن",
        "nosuchactiontext": "اینتا کار اینترنتی ِنشونی دله غیرموجازه\nشما احتمالا اینترنتی آدرس ره ایشتباه بنویشنی یا لینک ایشتبا ره کلیک هاکردنی\nهمینتی ممکن هسته ایرادی {{SITENAME}} دله داره.",
        "nosuchspecialpage": "اینتا شاء صفحه وجود ندانّه",
        "yourdomainname": "شمه کاروری نوم",
        "login": "دله بوردن",
        "nav-login-createaccount": "دله بوردن / عضو بیّن",
-       "userlogin": "دله بموئن / عضو بیّن",
-       "userloginnocreate": "دله بموئن",
        "logout": "دربوردن",
        "userlogout": "دربوردن",
        "notloggedin": "سیستم ره دله نیه مونی",
        "userlogin-noaccount": "عضو نی؟",
        "userlogin-joinproject": "{{SITENAME}} دله ثبت‌نوم هاکنین!",
-       "nologin": "عضو نی؟ $1.",
-       "nologinlink": "عضو بواشین",
        "createaccount": "ترنه حساب وا هکاردن",
-       "gotaccount": "عضو هسنی؟ $1.",
-       "gotaccountlink": "بورین دله",
-       "userlogin-resetlink": "دله بموئن ِجزئیات ره یاد هاکردی؟",
        "userlogin-resetpassword-link": "شه پسوُرد ره یاد بکاردنی؟",
        "userlogin-helplink2": "لاگین وسّه کومِک بَییتن",
        "createacct-emailoptional": "ایمیل (اختیاری)",
        "createacct-email-ph": "شه ایمیل ره باوّین",
        "createaccountmail": "ایمیل جه",
-       "createaccountreason": "دلیل:",
        "createacct-submit": "شه اکانت ره بسازین",
        "createacct-benefit-heading": "{{SITENAME}} ره شِمه واری آدِمون بِساتنه",
        "createacct-benefit-body1": "{{PLURAL:$1|دچی‌ین}}",
        "passwordreset": "پسورد ِتغییر",
        "passwordreset-username": "کاروری نوم:",
        "passwordreset-domain": "دامنه:",
-       "passwordreset-capture": "گت ایمیل سِراق هدائه بَواشه؟",
        "changeemail-oldemail": "اساء ایمیل:",
        "changeemail-newemail": "ترنه ایمیل آدرس:",
        "changeemail-none": "(هچّی)",
        "rcshowhidemine": "مه دچی‌یه‌ئون $1",
        "rcshowhidemine-show": "سِراق هِدائِن",
        "rcshowhidemine-hide": "پنهون هاکن",
-       "rclinks": "نـِشون هـِدائن  $1 پایانی دَچی‌‌یه‌ئون، $2 اِسـا روز ره دلـه؛ $3",
+       "rclinks": "نـِشون هـِدائن  $1 پایانی دَچی‌‌یه، $2 روز اخیر دله",
        "diff": "فرق",
        "hist": "تاریخچه",
        "hide": "پنهون هاکن",
        "linkstoimage": "این {{PLURAL:$1|صفحه|$1 صفحه‌ئون}} لینک هِدانه این فایل ره:",
        "nolinkstoimage": "این عکس ره هیچ جا نی‌یشتنه",
        "sharedupload-desc-here": "این پرونده $1 دله دَره و ممکن هسته دیگه پروژه‌ئون دله هم استفاده بواشه.\nتوضیحات موجود [$2 پرونده توضیحات صفحه میون اونجه]، سِراق هِدا وونّه.",
+       "shared-repo-name-wikimediacommons": "ویکی‌تلمبار",
        "upload-disallowed-here": "متأسفانه شما نتوندی این پرونده ره بازنویس هاکنی.",
        "randompage": "شانسی صفحه",
        "statistics": "آمار",
        "contributions": "{{GENDER:$1|کارور}} کایری‌ئون",
        "contributions-title": "$1 کایری‌ئون",
        "mycontris": "مه کایری‌ئون",
+       "anoncontribs": "کومِک هاکردن",
        "contribsub2": "$1 ($2) وه‌سه",
        "uctop": "(سر)",
        "month": "این ماه (و پیش از اون) دله:",
        "allmessages-filter-all": "همه",
        "thumbnail-more": "گت بوو",
        "import-interwiki-submit": "بیاردن",
-       "tooltip-pt-userpage": "مه کاروری صفحه",
-       "tooltip-pt-mytalk": "مه گپ صفحه",
-       "tooltip-pt-preferences": "مه خواسته‌نی‌ئون",
+       "tooltip-pt-userpage": "{{GENDER:|شمه کاروری}} صفحه",
+       "tooltip-pt-mytalk": "{{GENDER:|شمه}} گپ صفحه",
+       "tooltip-pt-preferences": "{{GENDER:|شمه}} خواسته‌نی‌ئون",
        "tooltip-pt-watchlist": "لیست صفحه‌ئونی که شِما وشون ِدچی‌یه بیّن ره اشنی",
-       "tooltip-pt-mycontris": "مه کایری‌ئون لیست",
+       "tooltip-pt-mycontris": "{{GENDER:|شمه}} کایری‌ئون لیست",
        "tooltip-pt-login": "شه‌ما به‌ته‌ر هـأسـه که سـیـسـتـه‌م ده‌لـه بـیـه‌ئی، هـرچـأن زوری نـیـه",
        "tooltip-pt-logout": "سیستم جه دأیابـوری",
        "tooltip-pt-createaccount": "شِما ره پیشنهاد کامبی که اتا کاروری حیساب بسازین و لاگین بَواشین؛ البته این کار اختیاری هسته.",
        "tooltip-t-recentchangeslinked": "اِسایی دِگاردسته‌ئون ِصفحه‌ئون که این صفحه جه لینک دارنه",
        "tooltip-feed-rss": "RSS خوراک این صفحه وسّه",
        "tooltip-feed-atom": "Atom خوراک این صفحه وسّه",
-       "tooltip-t-contributions": "این کارور ِکایریون ِفهرست",
+       "tooltip-t-contributions": "{{GENDER:$1|این کارور}} ِکایری‌ئون ِفهرست",
        "tooltip-t-emailuser": "ای کـارور ره اتـا ئـه‌لـه‌کـتـه‌رونـیـکـی‌نـومـه راهـی هـه‌کـارده‌ن",
        "tooltip-t-upload": "بـاربـیـه‌شـتـه‌ن فـایـل‌ئون",
        "tooltip-t-specialpages": "همه شا صفحه‌ئون ِلیسـت",
        "feedback-message": "پیغوم:",
        "feedback-subject": "موضوع:",
        "feedback-submit": "ارسال پیشنهادات و انتقادات",
-       "searchsuggest-search": "چرخه‌تو",
-       "api-error-badaccess-groups": "شما اجازهٔ باربی‌یشتن پرونده‌ها ره این ویکی دله ندارنی.",
+       "searchsuggest-search": "چرخه‌تو {{SITENAME}}",
        "api-error-badtoken": "خطای داخلی: کد امنیتی اشتبائه (Bad token).",
-       "api-error-copyuploaddisabled": "باربی‌یشتن با استفاده از نشونی اینترنتی این کارساز دله غیرفعاله.",
-       "api-error-duplicate": "{{PLURAL:$1|پروندهٔ دیگه‌یی|چن پروندهٔ دیگه}} وب‌گاه دله با محتوای ات‌تی دیی‌یه.",
-       "api-error-duplicate-archive": "{{PLURAL:$1|پروندهٔ دیگه‌یی|چن پروندهٔ دیگه}} وب‌گاه دله با محتوای اتجور وجود داشته، ولی حذف {{PLURAL:$1|بیی‌یه|بیی‌نه}}.",
-       "api-error-empty-file": "پرونده‌ای که شما برسنینی خالی بی‌یه.",
-       "api-error-fetchfileerror": "خطای داخلی: زمون بییتن پرونده، اتا چی درست پیش نشی‌یه.",
-       "api-error-file-too-large": "پرونده‌ای که شما برسنینی خله خله گت بی‌یه.",
-       "api-error-filename-tooshort": "پرونده ایسم خله خله پچیکه.",
-       "api-error-filetype-banned": "این نوع پرونده ممنوعه.",
-       "api-error-filetype-missing": "پرونده فرمت ندانّه.",
-       "api-error-hookaborted": "اصلاحیه‌ای که شما خاسنی وه ره بساجین، افزونه وه ره تله دمبدائه.",
-       "api-error-http": "خطای داخلی: نتومبی به به سرور اتصال هادیم",
-       "api-error-illegal-filename": "پرونده ایسم مجاز نی‌یه.",
-       "api-error-internal-error": "خطای داخلی: با پردازش باربی‌یشتن شما ویکی سر، ات چی اشتباه پیش بورده.",
-       "api-error-invalid-file-key": "خطای داخلی: پرونده حافظهٔ موقت سر دنی‌ئه.",
-       "api-error-missingparam": "خطای داخلی: پارامترون درخاست ره ندارمی.",
-       "api-error-missingresult": "خطای داخلی: نتونّی بفهمین کپی‌رایت موفق بی‌یه یا نا.",
-       "api-error-mustbeloggedin": "باربی‌یشتن پرونده‌ها وسّه شما ونه کاروری ایسم جا دَواشین.",
-       "api-error-mustbeposted": "خطای داخلی: درخواست ونه روش POST HTTP جا ارسال بوو.",
-       "api-error-noimageinfo": "باربی‌یشتن موفق بی‌یه، ولی کارساز هیچ اطلاعاتی دربارهٔ پرونده اما ره ندائه.",
-       "api-error-nomodule": "خطای داخلی: ماژول باربی‌یشتن تنظیم نیی‌ئه.",
-       "api-error-ok-but-empty": "خطای داخلی : سرور جه جواب نموئه.",
-       "api-error-overwrite": "جای بنویشتن اتا پرونده موجود مجاز نی‌یه.",
        "api-error-stashfailed": "خطای داخلی: کارساز نتونده پرونده موقت ره ذخیره هاکنه.",
-       "api-error-timeout": "کارساز زمون انتظار جواب ندائه.",
-       "api-error-unclassified": "اتا خطای نشناسته دکته.",
-       "api-error-unknown-code": "خطای نشناسی‌یه: \" $1 \"",
-       "api-error-unknown-error": "خطای داخلی: زمونی که شما تلاش کاردنی باربی‌یشتن پرونده ره انجوم هادین، اتا چی اشتباه پیش بورده.",
-       "api-error-unknown-warning": "اخطار نشناسی‌یه: $1",
-       "api-error-uploaddisabled": "باربی‌یشتن این ویکی دله غیرفعاله.",
-       "api-error-verification-error": "ممکن هسته که پرونده رِقِد بورد بائه یا پسوند غلط داره."
+       "api-error-unknown-warning": "اخطار نشناسی‌یه: $1"
 }
index ecff7b5..056c244 100644 (file)
        "yourdomainname": "Moāxcāyō",
        "login": "Xicalaqui",
        "nav-login-createaccount": "Ximocalaqui / ximomachiyōmaca",
-       "userlogin": "Ximomachiyomaca/Ximocalaqui",
-       "userloginnocreate": "Ximocalaqui",
        "logout": "Xiquīza",
        "userlogout": "Xiquīza",
        "notloggedin": "Ahmō ōtimocalac",
        "userlogin-noaccount": "Cuix ahmo titlapohualeh?",
-       "nologin": "Cuix ahmō titlapōhualeh? $1.",
-       "nologinlink": "Xicchīhua cē tlapōhualli",
        "createaccount": "Xicchīhua tlapōhualli",
-       "gotaccount": "¿Ye ticpiya cē tlapōhualli? '''$1'''.",
-       "gotaccountlink": "Ximocalaqui",
        "createacct-email-ph": "xiquihcuilo mocorreo electrónico",
        "createaccountmail": "Ticnemītīz ahmo cemihcac zāzoichtacātlahtōlli nō in tiquēhualtīz in maltzinteyōtl monetitlanizyeyān",
-       "createaccountreason": "Tleipampa:",
        "createacct-reason": "Tleīpampa",
        "createacct-submit": "Xicchīhua in motlapōhual",
        "badretype": "Ahneneuhqui motlahtōlichtacāyo.",
        "rcshowhidepatr": "$1 tlapatlaliztli mochiyahua",
        "rcshowhidemine": "$1 notlahcuilol",
        "rcshowhidemine-show": "Xicnexti",
-       "rclinks": "Xiquitta yancuic $1 tlapatlaliztli yancuic $2 tonalpan.<br />$3",
+       "rclinks": "Xiquitta yancuic $1 tlapatlaliztli yancuic $2 tonalpan.",
        "diff": "ahneneuhqui",
        "hist": "tlahtollotl",
        "hide": "Tictlatiz",
        "blankpage": "Iztāc zāzanilli",
        "htmlform-selectorother-other": "Occe",
        "rightsnone": "ahtlein",
-       "revdelete-summary": "ticpatlāz tlahcuilōltōn",
        "searchsuggest-search": "Tlatemoliztli",
        "api-error-stashfailed": "Tlâtek îtlakawilistli: In tlatèmakani awel òkeuh in èwalpanòni.",
        "api-error-unknown-warning": "Âmò ìxmatkàyo tlanawatilistli: \"$1\".",
index 159926e..ed1ed8e 100644 (file)
        "anontalk": "Thó-lūn",
        "navigation": "Se̍h chām",
        "and": "&#32;kap",
-       "qbfind": "Chhōe",
-       "qbbrowse": "Liū-lám",
-       "qbedit": "Siu-kái",
-       "qbpageoptions": "Chit ia̍h",
-       "qbmyoptions": "Goá ê ia̍h",
        "faq": "Būn-tah",
-       "faqpage": "Project:Būn-tah",
        "actions": "Tōng-chok",
        "namespaces": "Miâ-khong-kan",
        "variants": "piàn-thé",
        "edit-local": "改這位的說明",
        "create": "Khai-sí siá",
        "create-local": "ka chhit-tah--ê soat-bêng",
-       "editthispage": "Siu-kái chit ia̍h",
-       "create-this-page": "Khai-sí siá chit ia̍h",
        "delete": "Thâi",
-       "deletethispage": "Thâi chit ia̍h",
-       "undeletethispage": "取消刣掉這頁",
        "undelete_short": "Kiù {{PLURAL:$1|$1|$1}} ê thâi-tiāu ê",
        "viewdeleted_short": "Khoàⁿ {{PLURAL:$1|chi̍t-ê thâi tiàu--ê pian-chi̍p|$1 ê thâi tiàu--ê pian-chi̍p}}",
        "protect": "Pó-hō·",
        "protect_change": "kái-piàn",
-       "protectthispage": "Pó-hō· chit ia̍h",
        "unprotect": "kái pó-hō·",
-       "unprotectthispage": "kái chit ia̍h ê pó-hō͘",
        "newpage": "Sin ia̍h",
-       "talkpage": "Thó-lūn chit ia̍h",
        "talkpagelinktext": "thó-lūn",
        "specialpage": "Te̍k-sû-ia̍h",
        "personaltools": "Kò-jîn kang-khū",
-       "articlepage": "Khoàⁿ loē-iông ia̍h",
        "talk": "Thó-lūn",
        "views": "Khoàⁿ",
        "toolbox": "Ke-si",
        "tool-link-userrights": "Piàn-keng {{GENDER:$1|iōng-chiá}} hun-cho͘",
        "tool-link-userrights-readonly": "Khòaⁿ {{GENDER:$1|iōng-chiá}} hun-cho͘",
        "tool-link-emailuser": "Email hō͘ chit ūi {{GENDER:$1|iōng-chiá}}",
-       "userpage": "Khoàⁿ iōng-chiá ê Ia̍h",
-       "projectpage": "Khoàⁿ sū-kang ia̍h",
        "imagepage": "Khoàⁿ tóng-àn ia̍h",
        "mediawikipage": "Khoàⁿ sìn-sit ia̍h",
        "templatepage": "Khoàⁿ pang-bô͘ ia̍h",
        "editingsection": "Pian-chi̍p $1 (section)",
        "editingcomment": "Teh pian-chi̍p $1 (lâu-oē)",
        "editconflict": "Siu-kái sio-chhiong: $1",
-       "explainconflict": "Ū lâng tī lí tng teh siu-kái pún-ia̍h ê sî-chūn oân-sêng kî-tha ê siu-kái.\nTéng-koân ê bûn-jī-keh hián-sī hiān-chhú-sî siōng sin ê lōe-iông.\nLí ê kái-piàn tī ē-kha ê bûn-jī-keh. Lí su-iàu chiōng lí chò ê kái-piàn kap siōng sin ê lōe-iông chéng-ha̍p.\n'''Kan-na''' téng-koân keh-á ê bûn-jī ē tī lí chhi̍h \"{{int:savearticle}}\" liáu-āu pó-chûn khí lâi.",
+       "explainconflict": "Ū lâng tī lí tng teh siu-kái pún-ia̍h ê sî-chūn oân-sêng kî-tha ê siu-kái.\nTéng-koân ê bûn-jī-keh hián-sī hiān-chhú-sî siōng sin ê lōe-iông.\nLí ê kái-piàn tī ē-kha ê bûn-jī-keh. Lí su-iàu chiōng lí chò ê kái-piàn kap siōng sin ê lōe-iông chéng-ha̍p.\n'''Kan-na''' téng-koân keh-á ê bûn-jī ē tī lí chhi̍h \"$1\" liáu-āu pó-chûn khí lâi.",
        "yourtext": "Lí ê bûn-jī",
        "storedversion": "Chu-liāu-khò· ê pán-pún",
        "editingold": "'''KÉNG-KÒ: Lí tng teh siu-kái chit ia̍h ê 1 ê kū siu-tēng-pún. Lí nā kā pó-chûn khí lâi, chit ê siu-tēng-pún sòa-āu ê jīm-hô kái-piàn ē bô khì.'''",
        "yourdiff": "Chha-pia̍t",
        "readonlywarning": "'''CHÙ-Ì: Chu-liāu-khò· taⁿ só tiâu leh thang pān î-siu khang-khòe, só·-í lí hiān-chú-sî bô thang pó-chûn jīn-hô phian-chi̍p hāng-bo̍k. Lí ē-sái kā siong-koan pō·-hūn tah--ji̍p-khì 1-ê bûn-jī tóng-àn pó-chûn, āu-chhiú chiah koh kè-sio̍k.'''",
        "protectedpagewarning": "'''KÉNG-KÒ: Pún ia̍h só tiâu leh. Kan-taⁿ ū hêng-chèng te̍k-koân ê iōng-chiá (sysop) ē-sái siu-kái.'''",
+       "semiprotectedpagewarning": "'''Chù-ì:''' Pún-ia̍h í-keng siū kàu pó-hō͘ , teng-ji̍p chiah ū hoat-tō͘ siu-kái.\nĒ-kha sī choè-kīn ê ji̍t-chì, ē-sái thê-kiong chham-khó:",
        "templatesused": "Chit ia̍h iōng {{PLURAL:$1| ê pang-bô·}} :",
        "templatesusedpreview": "Chit ê preview iōng chia ê pang-bô͘:",
        "templatesusedsection": "Chit ê section iōng chia ê pang-bô͘:",
        "rcshowhidemine": "$1 góa ê pian-chi̍p",
        "rcshowhidemine-show": "hiàn",
        "rcshowhidemine-hide": "am",
-       "rclinks": "Hían-sī $2 ji̍t lāi siōng sin ê $1 hāng kái-piàn<br />$3",
+       "rclinks": "Hían-sī $2 ji̍t lāi siōng sin ê $1 hāng kái-piàn",
        "diff": "Cheng-chha",
        "hist": "ls",
        "hide": "am",
        "prot_1movedto2": "[[$1]] sóa khì tī [[$2]]",
        "protect-legend": "Khak-tēng beh pó-hō·",
        "protectcomment": "Lí-iû:",
+       "protect-level-autoconfirmed": "Chí ín-chún chū-tōng khak-jīn iōng-chiá",
+       "protect-level-sysop": "Chí ín-chún koán-lí jîn-oân",
        "protect-cascade": "Cascading protection - pó-hō͘ jīm-hô pau-hâm tī chit ia̍h ê ia̍h.",
        "restriction-edit": "Siu-kái",
        "restriction-move": "Sóa khì",
        "undeleteviewlink": "Khoàⁿ",
        "namespace": "Miâ-khong-kan:",
        "invert": "Soán-hāng í-gōa",
-       "tooltip-invert": "勾起來的框;相關的名空間會先藏起來。",
-       "namespace_association": "相關的名空間",
-       "tooltip-namespace_association": "勾起來的框;相關的討論抑物件空間會包括入來",
+       "tooltip-invert": "Kau khí-lâi ê kheng-á; siong-koan ê miâ-khong-kan ē seng khǹg khí-lâi.",
+       "namespace_association": "Siong-koan ê miâ-khong-kan",
+       "tooltip-namespace_association": "Kau khí-lâi ê kheng-á; siong-koan ê thó-lūn ia̍h mi̍h-kiāⁿ khong-kan ē pau-hâm ji̍p lâi.",
        "blanknamespace": "(Chú-ia̍h)",
        "contributions": "{{GENDER:$1|Iōng-chiá}} ê kòng-hiàn",
        "contributions-title": "Iōng-chiá $1--ê kòng-hiàn",
        "year": "Kàu tó 1 nî ûi-chí:",
        "sp-contributions-newbies": "Kan-taⁿ hián-sī sin kháu-chō ê kòng-kiàn",
        "sp-contributions-newbies-sub": "Sin lâi--ê",
-       "sp-contributions-deleted": "Hō͘ lâng thâi tiāu ê kòng-hiàn",
+       "sp-contributions-blocklog": "Hong-só ji̍t-chì",
+       "sp-contributions-deleted": "{{GENDER:$1|iōng-chiá}} hō͘ lâng thâi tiāu ê kòng-hiàn",
        "sp-contributions-uploads": "Ap-ló͘",
+       "sp-contributions-logs": "Ji̍t-chì",
        "sp-contributions-talk": "thó-lūn",
+       "sp-contributions-userrights": "{{GENDER:$1|iōng-chiá}} khoân-hān koán-lí",
        "sp-contributions-search": "Chhoē chhut kòng-kiàn",
        "sp-contributions-username": "IP Chū-chí a̍h iōng-chiá miâ:",
        "sp-contributions-submit": "Chhoē",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] í-keng pī hong-só. <br />Khì [[Special:BlockList|IP hong-só lia̍t-toaⁿ]] review hong-só ê IP.",
        "ipusubmit": "Chhú-siau hong-só chit ê chū-chí",
        "ipblocklist": "Siū hong-só ê IP chū-chí kap iōng-chiá miâ-chheng",
+       "infiniteblock": "éng-oán",
+       "expiringblock": "$1 $2 kàu kî.",
+       "anononlyblock": "Chí bô miâ iōng-chiá",
+       "createaccountblock": "kìm-chí khui kháu-chō",
+       "blocklist-nousertalk": "bô-hoat-tō͘ siu-kái kā-kī ê thó-lūn-ia̍h",
        "blocklink": "hong-só",
-       "unblocklink": "廢除封鎖",
-       "change-blocklink": "改封鎖",
+       "unblocklink": "Kái-tû hong-só",
+       "change-blocklink": "Siu-kái hong-só",
        "contribslink": "kòng-hiàn",
        "autoblocker": "Chū-tōng kìm-chí lí sú-iōng, in-ūi lí kap \"$1\" kong-ke kāng 1 ê IP chū-chí (kìm-chí lí-iû \"$2\").",
        "blocklogentry": "hong-só [[$1]], siat kî-hān chì $2 $3",
        "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\".\n\nChhiáⁿ khui ē-kha chit-ê liân-kiat, thang khak-jīn chit-ê kháu-chō si̍t-chāi sī lí ê:\n\n$3\n\nNā-chún *m̄-sī* lí, chhiáⁿ mài tòe liân-kiat khì.  Chit tiuⁿ phoe ê khak-jīn-bé ē chū-tōng tī $4 kòe-kî.",
        "confirmemail_body_changed": "Ū 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\".\n\nChhiáⁿ khui ē-kha chit-ê liân-kiat, thang khak-jīn chit-ê kháu-chō si̍t-chāi sī lí ê:\n\n$3\n\nNā-chún *m̄-sī* lí, chhiáⁿ khui ē-kha chit-ê liân-kiat,  chhú-siau khak-jīn ê e-mail.\n\n$5\n\nChit tiuⁿ phoe ê khak-jīn-bé ē chū-tōng tī $4 kòe-kî.",
        "confirmemail_body_set": "Ū 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\".\n\nChhiáⁿ khui ē-kha chit-ê liân-kiat, thang khak-jīn chit-ê kháu-chō si̍t-chāi sī lí ê:\n\n$3\n\nNā-chún *m̄-sī* lí, chhiáⁿ khui ē-kha chit-ê liân-kiat,  chhú-siau khak-jīn ê e-mail.\n\n$5\n\nChit tiuⁿ phoe ê khak-jīn-bé ē chū-tōng tī $4 kòe-kî.",
+       "confirm-purge-title": "Ōaⁿ-sin chit ia̍h",
        "confirm-purge-top": "Kā chit ia̍h ê cache piàⁿ tiāu?",
+       "comma-separator": ",&#32;",
        "colon-separator": ":&#32;",
        "table_pager_next": "Aū-chi̍t-ia̍h",
        "table_pager_prev": "Téng-chi̍t-ia̍h",
index 47d2bcf..116b216 100644 (file)
        "login": "Tràse",
        "login-security": "Cunferma l'identità",
        "nav-login-createaccount": "Trasite o criate n'acciesso nuovo",
-       "userlogin": "Trasite o criate n'acciesso nuovo",
-       "userloginnocreate": "Tràse",
        "logout": "Jèsce",
        "userlogout": "Jèsce",
        "notloggedin": "Acciesso nun affettuato",
        "userlogin-noaccount": "Nun tenite ancora n'acciesso?",
        "userlogin-joinproject": "Facite 'o riggistro ncopp'a {{SITENAME}}",
-       "nologin": "Nun tenite ancora n'acciesso? '''$1'''.",
-       "nologinlink": "Crialo mmo",
        "createaccount": "Crèa nu cunto nuovo",
-       "gotaccount": "Tiene già nu cunto? '''$1'''.",
-       "gotaccountlink": "Tràse",
-       "userlogin-resetlink": "V'avite scurdato 'e dettaglie d'acciesso vuoste?",
        "userlogin-resetpassword-link": "Te sì scurdat' 'a password?",
        "userlogin-helplink2": "Aiuto cu l'accieso",
        "userlogin-loggedin": "Sì già {{GENDER:$1|connesso comme $1|connessa comme $1|connesso/a comme $1}}.\nUsa 'o modulo ccà abbascio pe trasì com'a n'atu utente.",
        "createaccountmail": "Usa na password qualunque temporanea e manna sta password a l'indirizzo 'e posta e-mail specificato",
        "createaccountmail-help": "Se putess'ausà pe' puté crià nu cunto pe' n'ata perzona senza mparà 'a password.",
        "createacct-realname": "Nomme riale (ozzionale)",
-       "createaccountreason": "Mutivo:",
        "createacct-reason": "Mutivo",
        "createacct-reason-ph": "Pecché staje crianno n'at'utenza",
        "createacct-reason-help": "Mmasciata mmustata dint'o riggistro 'e criazion' 'e cunte",
        "preview": "Anteprimma",
        "showpreview": "Vire anteprimma",
        "showdiff": "Fa veré 'e cagnamiente",
-       "blankarticle": "<strong>Attenziò:</strong> 'a paggena ca staje crianno è abbacante.\nFà click ncopp'a \"{{int:savearticle}}\" n'ata vota, 'a paggena sarrà criata senza cuntenute.",
+       "blankarticle": "<strong>Attenziò:</strong> 'a paggena ca staje crianno è abbacante.\nFà click ncopp'a \"$1\" n'ata vota, 'a paggena sarrà criata senza cuntenute.",
        "anoneditwarning": "'''Attenzione:''' Nun avite fatto l'acciesso. 'A cronologgia d' 'a vosta sarrà visibbele pubbrecamente si facite cocche cagnamiento. Si <strong>[$1 tràse]</strong> o <strong>[$2 crìe nu cunto]</strong>, 'e cagnamiente vuoste ve sarranno attribbuite a vvuje, nzieme a n'ati migliuramente.",
        "anonpreviewwarning": "''Nun avite fatto 'o login. Sarvann' 'a paggena, l'indirizzo IP d' 'o vuosto sarrà riggistrato dint'a cronologgia.''",
-       "missingsummary": "'''Attenziò:''' nun s'è specificato l'oggetto 'e stu cagnamiento. Clicann' 'a \"{{int:savearticle}}\" n'ata vota 'o cagnamiento sarrà sarvato cu l'oggetto abbacante.",
-       "selfredirect": "<strong>Attenziò:</strong> State crianno nu redirect a 'o stesso articolo.\nPuò darse c'avites specificato 'o pizzo sbagliato p' 'o redirect, o ca stavate cagnanno 'o pizzo sbagliato.\nSi cliccate \"{{int:savearticle}}\" n'ata vota, si criarrà 'o redirect.",
+       "missingsummary": "'''Attenziò:''' nun s'è specificato l'oggetto 'e stu cagnamiento. Clicann' 'a \"$1\" n'ata vota 'o cagnamiento sarrà sarvato cu l'oggetto abbacante.",
+       "selfredirect": "<strong>Attenziò:</strong> State crianno nu redirect a 'o stesso articolo.\nPuò darse c'avites specificato 'o pizzo sbagliato p' 'o redirect, o ca stavate cagnanno 'o pizzo sbagliato.\nSi cliccate \"$1\" n'ata vota, si criarrà 'o redirect.",
        "missingcommenttext": "Pe' piacere scrivete nu commento ccà abbascio.",
-       "missingcommentheader": "<strong>Arricurdateve:</strong> nun s'è specificato l'oggetto/titolo pe stu commento. Clicann' 'a \"{{int:savearticle}}\" n'ata vota 'o cagnamiento sarrà sarvato c' 'o titolo/oggetto abbacante.",
+       "missingcommentheader": "<strong>Arricurdateve:</strong> nun s'è specificato l'oggetto/titolo pe stu commento. Clicann' 'a \"$1\" n'ata vota 'o cagnamiento sarrà sarvato c' 'o titolo/oggetto abbacante.",
        "summary-preview": "Anteprimma'e l'oggetto:",
        "subject-preview": "Anteprimma 'e l'oggetto:",
        "previewerrortext": "È succiesso n'errore quanno se steva a ffà pre-veré 'e cagnamiente vuoste.",
        "editingsection": "Cagnamiénto 'e $1 (sezzione)",
        "editingcomment": "Cagnamiénto 'e $1 (nova sezzione)",
        "editconflict": "Conflitto d'edizzione: $1",
-       "explainconflict": "N'at'utente ave sarvato na nova verziona d' 'a paggena pe' tramente ca stevate a fà 'e cagnamiente.\n'A cascia 'e mudifeca ncoppa cuntene 'o testo d' 'a paggena ca mò sta online, accussì comme è stato agghiurnato a l'at'utente.\n'A verziona ch' 'e cagnamiente vuoste è stata mmece riportata dint'a cascia 'e mudifeca abbascio.\nSi 'e vulite cunfermà avite 'a ripurtà 'e cagnamiente d' 'e vuoste dint'o testo ca esiste (dint'a cascia ncoppa).\nSpremmendo 'o buttón '{{int:savearticle}}', sarrà sarvato '''sulamente''' 'o testo cuntenuto dint'a cascia 'e cagnamiento ncoppa.",
+       "explainconflict": "N'at'utente ave sarvato na nova verziona d' 'a paggena pe' tramente ca stevate a fà 'e cagnamiente.\n'A cascia 'e mudifeca ncoppa cuntene 'o testo d' 'a paggena ca mò sta online, accussì comme è stato agghiurnato a l'at'utente.\n'A verziona ch' 'e cagnamiente vuoste è stata mmece riportata dint'a cascia 'e mudifeca abbascio.\nSi 'e vulite cunfermà avite 'a ripurtà 'e cagnamiente d' 'e vuoste dint'o testo ca esiste (dint'a cascia ncoppa).\nSpremmendo 'o buttón '$1', sarrà sarvato '''sulamente''' 'o testo cuntenuto dint'a cascia 'e cagnamiento ncoppa.",
        "yourtext": "'O testo vuosto",
        "storedversion": "A verziona 'n memoria",
        "nonunicodebrowser": "'''Attenziò: state ausanno nu navigatóre ca nun è compatibbele ch' 'e carattere Unicode. Pe' ve permettere 'o cagnamiento d' 'e paggene senza crià ncunveniente, 'e carattere nun ASCII veneno viste dint' 'a cascia 'e cagnamiento sotto forma 'e codece esadecimale.'''",
        "right-editsemiprotected": "Cagna 'e paggene prutette cu \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Cagna 'o modello 'e cuntenute 'e na paggena",
        "right-editinterface": "Modifeca 'a nterfaccia utente",
-       "right-editusercssjs": "Cagna 'e file CSS e JS e l'at'utente",
        "right-editusercss": "Cagna 'e file CSS 'e l'at'utente",
        "right-edituserjs": "Cagna 'e file JS e l'at'utente",
        "right-editmyusercss": "Cagna 'e proprie file CSS",
        "rcshowhidecategorization": "$1 categorizzaziona d' 'a paggena",
        "rcshowhidecategorization-show": "Faje vedé",
        "rcshowhidecategorization-hide": "Annascunne",
-       "rclinks": "Faje vedé ll'urdeme $1 cagnamiente dint' ll'urdeme $2 juorne<br />$3",
+       "rclinks": "Faje vedé ll'urdeme $1 cagnamiente dint' ll'urdeme $2 juorne",
        "diff": "diff",
        "hist": "cron",
        "hide": "annascunne",
        "undeleteviewlink": "vire",
        "undeleteinvert": "Abbarruca 'a sceveta",
        "undeletecomment": "Mutivo:",
-       "undeletedrevisions": "{{PLURAL:$1|1 verzione|$1 verziune}} arrepigliate",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 verzione|$1 verziune}} e {{PLURAL:$2|1 file|$2 file}} arrepigliate",
-       "undeletedfiles": "{{PLURAL:$1|1 file arrepigliato|$1 file arrepigliate}}",
        "cannotundelete": "Arrepiglio fallito:\n$1",
        "undeletedpage": "'''$1 è stat'arrepigliato'''\n\nLiggiete 'o [[Special:Log/delete|riggistro 'e scancellamiente]] pe n'avé n'elenco 'e l'urdeme scancellamiente e arrepiglie.",
        "undelete-header": "Vedite [[Special:Log/delete|'o riggistro 'e scancellamiente]] pe l'urdeme paggene scancellate",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|agghiurnaje}} tag dint'a verziona $4 d' 'a paggena $3 ({{PLURAL:$7|azzeccaje}} $6; {{PLURAL:$9|luvaje}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|agghiurnaje}} tag dint'a ntrata 'e riggistro $5 d' 'a paggena $3 ({{PLURAL:$7|azzeccaje}} $6; {{PLURAL:$9|luvaje}} $8)",
        "rightsnone": "(nisciuno)",
-       "revdelete-summary": "cagna 'o riepilego",
        "feedback-adding": "Azzecca nu feedback/na segnalazione â paggena..",
        "feedback-back": "Arreto",
        "feedback-bugcheck": "Tutt'appost! Avite surtanto 'a cuntrullà ca chisto nun è unu d' 'e [$1 bug canusciute].",
index 4e30b24..863b7f6 100644 (file)
        "anontalk": "Brukerdiskusjon",
        "navigation": "Navigasjon",
        "and": "&#32;og",
-       "qbfind": "Finn",
-       "qbbrowse": "Bla gjennom",
-       "qbedit": "Rediger",
-       "qbpageoptions": "Sideinnstillinger",
-       "qbmyoptions": "Egne innstillinger",
        "faq": "Ofte stilte spørsmål",
-       "faqpage": "Project:Ofte stilte spørsmål",
        "actions": "Handlinger",
        "namespaces": "Navnerom",
        "variants": "Varianter",
        "edit-local": "Rediger lokal beskrivelse",
        "create": "Opprett",
        "create-local": "Opprett lokal beskrivelse",
-       "editthispage": "Rediger siden",
-       "create-this-page": "Opprett denne siden",
        "delete": "Slett",
-       "deletethispage": "Slett denne siden",
-       "undeletethispage": "Legg tilbake siden",
        "undelete_short": "Gjenopprett {{PLURAL:$1|én revisjon|$1 revisjoner}}",
        "viewdeleted_short": "Vis {{PLURAL:$1|én slettet redigering|$1 slettede redigeringer}}",
        "protect": "Beskytt",
        "protect_change": "endre",
-       "protectthispage": "Lås siden",
        "unprotect": "Endre beskyttelse",
-       "unprotectthispage": "Endre beskyttelsen av denne siden",
        "newpage": "Ny side",
-       "talkpage": "Diskuter denne siden",
        "talkpagelinktext": "diskusjon",
        "specialpage": "Spesialside",
        "personaltools": "Personlige verktøy",
-       "articlepage": "Vis innholdsside",
        "talk": "Diskusjon",
        "views": "Visninger",
        "toolbox": "Verktøy",
        "tool-link-userrights": "Endre {{GENDER:$1|brukergrupper}}",
        "tool-link-userrights-readonly": "Vis {{GENDER:$1|brukergrupper}}",
        "tool-link-emailuser": "Send {{GENDER:$1|brukeren}} en e-post",
-       "userpage": "Vis brukerside",
-       "projectpage": "Vis prosjektside",
        "imagepage": "Vis filside",
        "mediawikipage": "Vis beskjedside",
        "templatepage": "Vis malside",
        "preview": "Forhåndsvisning",
        "showpreview": "Forhåndsvisning",
        "showdiff": "Vis endringer",
-       "blankarticle": "<strong>Advarsel:</strong> Siden du er i ferd med å opprette er tom.\nHvis du trykker \"{{int:savearticle}}\" en gang til, vil siden opprettes uten innhold.",
+       "blankarticle": "<strong>Advarsel:</strong> Siden du er i ferd med å opprette er tom.\nHvis du trykker «$1» en gang til, vil siden opprettes uten innhold.",
        "anoneditwarning": "<strong>Advarsel:</strong> Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du <strong>[$1 logger inn]</strong> eller <strong>[$2 oppretter en konto]</strong> vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.",
        "anonpreviewwarning": "<em>Du er ikke logget inn. Ved lagring vil IP-adressen din lagres i sidens redigeringshistorikk.</em>",
        "missingsummary": "'''Påminnelse:''' Du har ikke lagt inn en redigeringsforklaring.\nVelger du ''Lagre siden'' en gang til blir endringene lagret uten forklaring.",
-       "selfredirect": "<strong>Advarsel:</strong> Du omdirigerer denne siden til seg selv. Du kan ha oppgitt feil mål for omdirigeringen, eller kanskje du redigerer feil side. Om du klikker «{{int:savearticle}}» igjen vil omdirigeringen bli opprettet uansett.",
+       "selfredirect": "<strong>Advarsel:</strong> Du omdirigerer denne siden til seg selv. Du kan ha oppgitt feil mål for omdirigeringen, eller kanskje du redigerer feil side. Om du klikker «$1» igjen vil omdirigeringen bli opprettet uansett.",
        "missingcommenttext": "Vennligst legg inn en kommentar under.",
-       "missingcommentheader": "<strong>Påminnelse:</strong> Du har ikke angitt et emne/overskrift for denne kommentaren.\nOm du trykker «{{int:savearticle}}» igjen vil redigeringen din bli lagret uten forklaring.",
+       "missingcommentheader": "<strong>Påminnelse:</strong> Du har ikke angitt et emne/overskrift for denne kommentaren.\nOm du trykker «$1» igjen vil redigeringen din bli lagret uten forklaring.",
        "summary-preview": "Forhåndsvisning av redigeringsforklaring:",
        "subject-preview": "Forhåndsvisning av overskrift:",
        "previewerrortext": "En feil oppsto mens dine endringer skulle forhåndsvises.",
        "editingsection": "Redigerer $1 (avsnitt)",
        "editingcomment": "Redigerer $1 (ny seksjon)",
        "editconflict": "Redigeringskollisjon: $1",
-       "explainconflict": "Noen andre har endret teksten siden du begynte å redigere.\nDen øverste boksen inneholder den nåværende teksten.\nDine endringer vises i den nederste boksen.\nDu er nødt til å flette dine endringer sammen med den nåværende teksten.\n'''Kun''' teksten i den øverste tekstboksen blir lagret når du trykker «{{int:savearticle}}».",
+       "explainconflict": "Noen andre har endret teksten siden du begynte å redigere.\nDen øverste boksen inneholder den nåværende teksten.\nDine endringer vises i den nederste boksen.\nDu er nødt til å flette dine endringer sammen med den nåværende teksten.\n'''Kun''' teksten i den øverste tekstboksen blir lagret når du trykker «$1».",
        "yourtext": "Din tekst",
        "storedversion": "Den lagrede versjonen",
        "nonunicodebrowser": "'''Advarsel: Nettleseren din har ikke Unicode-støtte.'''\nFor å unngå problemer blir som ikke er med i ASCII vist som heksadesimale kode i redigeringsruten.",
        "search-file-match": "(matcher filinnhold)",
        "search-suggest": "Mente du: $1",
        "search-rewritten": "Viser resultatet for $1. Søk i stedet for $2.",
-       "search-interwiki-caption": "Søsterprosjekter",
+       "search-interwiki-caption": "Resultater fra søsterprosjekter",
        "search-interwiki-default": "Resultater fra $1:",
        "search-interwiki-more": "(mer)",
        "search-interwiki-more-results": "flere resultater",
        "recentchanges-legend-plusminus": "«(±123)»",
        "recentchanges-submit": "Vis",
        "rcfilters-activefilters": "Aktive filtre",
+       "rcfilters-quickfilters": "Lagrede filterinnstillinger",
+       "rcfilters-quickfilters-placeholder-title": "Ingen lenker lagret enda",
+       "rcfilters-quickfilters-placeholder-description": "For å lagre filterinnstillingene og gjenbruk dem senere, klikk på bokmerkeikonet i området Aktive Filtre under.",
+       "rcfilters-savedqueries-defaultlabel": "Lagrede filtre",
+       "rcfilters-savedqueries-rename": "Gi nytt navn",
+       "rcfilters-savedqueries-setdefault": "Sett som standard",
+       "rcfilters-savedqueries-unsetdefault": "Fjern som standard",
+       "rcfilters-savedqueries-remove": "Fjern",
+       "rcfilters-savedqueries-new-name-label": "Navn",
+       "rcfilters-savedqueries-apply-label": "Lagre innstillinger",
+       "rcfilters-savedqueries-cancel-label": "Avbryt",
+       "rcfilters-savedqueries-add-new-title": "Lagre de gjeldende filterinnstillingene",
        "rcfilters-restore-default-filters": "Gjenopprett standardfiltre",
        "rcfilters-clear-all-filters": "Nullstill alle filtre",
        "rcfilters-search-placeholder": "Filtrer siste endringer (søk eller begyn å skrive)",
        "rcfilters-filter-unregistered-label": "Uregistrerte",
        "rcfilters-filter-unregistered-description": "Brukere som ikke er logget inn.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Dette filteret konflikterer med følgende {{PLURAL:$2|erfaringsfilter|erfaringsfiltre}}, som finner kun registrerte brukere: $1",
-       "rcfilters-filtergroup-authorship": "Redigeringens forfatter",
-       "rcfilters-filter-editsbyself-label": "Dine egne redigeringer",
-       "rcfilters-filter-editsbyself-description": "Redigeringer gjort av deg.",
-       "rcfilters-filter-editsbyother-label": "Redigeringer av andre",
-       "rcfilters-filter-editsbyother-description": "Redigeringer som er gjort av andre brukere enn deg.",
+       "rcfilters-filtergroup-authorship": "Bidragets forfatter",
+       "rcfilters-filter-editsbyself-label": "Dine redigeringer",
+       "rcfilters-filter-editsbyself-description": "Dine egne bidrag.",
+       "rcfilters-filter-editsbyother-label": "Endringer av andre",
+       "rcfilters-filter-editsbyother-description": "Alle endringer utenom dine egne.",
        "rcfilters-filtergroup-userExpLevel": "Erfaringsnivå (kun for registrerte brukere)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Erfaringsfiltre finner kun registrerte brukere, så dette filteret konflikterer med filteret «Uregistrerte».",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filteret «Uregistrerte» konflikterer med ett eller flere erfaringsfiltre, som kun finner registrerte brukere. De konflikterende filtrene merkes i området for aktive filtre ovenfor.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Nykommere",
        "rcfilters-filter-user-experience-level-newcomer-description": "Færre enn 10 redigeringer og 4 dagers aktivitet.",
        "rcfilters-filter-user-experience-level-learner-label": "Nybegynnere",
-       "rcfilters-filter-user-experience-level-learner-description": "Flere dagers aktivitet enn «Nykommere», men mindre enn «Erfarne brukere».",
+       "rcfilters-filter-user-experience-level-learner-description": "Mer erfaring enn «Nykommere», men mindre enn «Erfarne brukere».",
        "rcfilters-filter-user-experience-level-experienced-label": "Erfarne brukere",
        "rcfilters-filter-user-experience-level-experienced-description": "Mer enn 30 dagers aktivitet og 500 redigeringer.",
        "rcfilters-filtergroup-automated": "Automatiske bidrag",
        "rcfilters-filter-minor-description": "Redigeringer merket som mindre av brukeren.",
        "rcfilters-filter-major-label": "Ikke-mindre endringer",
        "rcfilters-filter-major-description": "Redigeringer som ikke er merket som mindre.",
+       "rcfilters-filtergroup-watchlist": "Overvåkede sider",
+       "rcfilters-filter-watchlist-watched-label": "På overvåkningslisten",
+       "rcfilters-filter-watchlist-watched-description": "Endringer til sider på overvåkningslista di.",
+       "rcfilters-filter-watchlist-watchednew-label": "Nye endringer på overvåkningslista",
+       "rcfilters-filter-watchlist-watchednew-description": "Endringer i overvåkede sider du ikke har besøkt siden endringen(e) ble gjort.",
+       "rcfilters-filter-watchlist-notwatched-label": "Ikke på overvåkningslista.",
+       "rcfilters-filter-watchlist-notwatched-description": "Alt utenom endringer på sider på overvåkningslista di.",
        "rcfilters-filtergroup-changetype": "Type endring",
        "rcfilters-filter-pageedits-label": "Sideredigeringer",
        "rcfilters-filter-pageedits-description": "Redigeringer til wikiinnhold, diskusjoner, kategoribeskrivelser ...",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Filteret for «Mindre endringer» konflikterer med ett eller flere endringstypefiltre, fordi visse endringstyper ikke kan merkes som «mindre». De konflikterende fultrene merkes i området for aktive filtre ovenfor.",
        "rcfilters-hideminor-conflicts-typeofchange": "Visse endringstyper kan ikke merkes som «mindre», så dette filteret konflikterer med følgende endringstypefiltre: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Dette endringstypefilteret konflikterer med filteret for «Mindre endringer». Visse endringstyper kan ikke merkes som «mindre».",
+       "rcfilters-filtergroup-lastRevision": "Siste revisjon",
+       "rcfilters-filter-lastrevision-label": "Siste revisjon",
+       "rcfilters-filter-lastrevision-description": "Den nyeste endringen av en side.",
+       "rcfilters-filter-previousrevision-label": "Tidligere revisjoner",
+       "rcfilters-filter-previousrevision-description": "Alle endringer som ikke er den nyeste endringen av en side.",
+       "rcfilters-filter-excluded": "Ekskludert",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
+       "rcfilters-view-tags": "Tagger",
        "rcnotefrom": "Nedenfor er vist {{PLURAL:$5|endringen|endringene}} som er gjort siden <strong>$3, $4</strong> (frem til <strong>$1</strong>).",
        "rclistfromreset": "Nullstill datovalg",
        "rclistfrom": "Vis nye endringer fra og med $3 $2",
        "rcshowhidecategorization": "$1 kategorisering av sider",
        "rcshowhidecategorization-show": "Vis",
        "rcshowhidecategorization-hide": "Skjul",
-       "rclinks": "Vis siste $1 endringer i de siste $2 dagene<br />$3",
+       "rclinks": "Vis siste $1 endringer i de siste $2 dagene",
        "diff": "diff",
        "hist": "hist",
        "hide": "Skjul",
        "sp-contributions-uploads": "opplastinger",
        "sp-contributions-logs": "logger",
        "sp-contributions-talk": "diskusjon",
-       "sp-contributions-userrights": "brukerrettighetskontroll",
+       "sp-contributions-userrights": "{{GENDER:$1|bruker&shy;rettighets&shy;kontroll}}",
        "sp-contributions-blocked-notice": "Denne brukeren er for tiden blokkert.\nSiste blokkeringsloggelement kan sees nedenfor.",
        "sp-contributions-blocked-notice-anon": "Denne IP-adressen er for tiden blokkert.\nDen siste oppføringen i blokkeringsloggen er vist nedenfor som referanse:",
        "sp-contributions-search": "Søk etter bidrag",
        "autoblocklist-submit": "Søk",
        "autoblocklist-legend": "Liste over automatiske blokkeringer",
        "autoblocklist-localblocks": "{{PLURAL:$1|Lokal automatisk blokkering|Lokale automatiske blokkeringer}}",
+       "autoblocklist-total-autoblocks": "Totalt antall autoblokkeringer: $1",
        "autoblocklist-empty": "Listen over automatiske blokkeringer er tom.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Annen automatisk blokkering|Andre automatiske blokkeringer}}",
        "ipblocklist": "Blokkerte IP-adresser og brukernavn",
        "tooltip-pt-mycontris": "En liste over {{GENDER:|dine}} bidrag",
        "tooltip-pt-anoncontribs": "En liste over redigeringer gjort fra denne IP-adressen",
        "tooltip-pt-login": "Du oppfordres til å logge inn, men det er ikke obligatorisk",
+       "tooltip-pt-login-private": "Du må logge inn for å bruke denne wikien",
        "tooltip-pt-logout": "Logg ut",
        "tooltip-pt-createaccount": "Du oppfordres til å opprette en konto og logge inn, men det er ikke obligatorisk.",
        "tooltip-ca-talk": "Diskusjon om innholdssiden",
        "newimages-legend": "Filnavn",
        "newimages-label": "Filnavn (helt eller delvis):",
        "newimages-user": "IP-adresse eller brukernavn",
+       "newimages-newbies": "Vis kun bidrag fra nye kontoer",
        "newimages-showbots": "Vis opplastinger av botter",
        "newimages-hidepatrolled": "Skjul patruljerte opplastinger",
+       "newimages-mediatype": "Medietype:",
        "noimages": "Ingenting å se.",
        "gallery-slideshow-toggle": "Skift miniatyrbilder",
        "ilsubmit": "Søk",
        "confirmrecreate": "Brukeren [[User:$1|$1]] ([[User talk:$1|diskusjon]]) {{GENDER:$1|slettet}} siden etter at du begynte å redigere den, med begrunnelsen:\n: <em>$2</em>\nVennligst bekreft at du vil gjenopprette siden.",
        "confirmrecreate-noreason": "Brukeren [[User:$1|$1]] ([[User talk:$1|diskusjon]]) {{GENDER:$1|slettet}} denne siden etter at du begynte å redigere. Bekreft at du virkelig ønsker å gjenopprette denne siden.",
        "recreate": "Gjenopprett",
+       "confirm-purge-title": "Slette mellomlagringen av denne siden",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Vil du slette tjenerens mellomlagrede versjon (''cache'') av denne siden?",
        "confirm-purge-bottom": "Rensing av en side sletter mellomlageret og tvinger frem den nyeste versjonen.",
        "percent": "$1&nbsp;%",
        "quotation-marks": "«$1»",
        "imgmultipageprev": "← forrige side",
-       "imgmultipagenext": "neste side &rarr;",
+       "imgmultipagenext": "neste side ",
        "imgmultigo": "Gå!",
        "imgmultigoto": "Gå til siden $1",
        "img-lang-default": "(standardspråk)",
        "tags-create-reason": "Årsak:",
        "tags-create-submit": "Opprett",
        "tags-create-no-name": "Du må oppgi et taggnavn.",
-       "tags-create-invalid-chars": "Taggnavn kan ikke inneholde kommaer (<code>,</code>) eller skråstreker (<code>/</code>).",
+       "tags-create-invalid-chars": "Taggnavn kan ikke inneholde kommaer (<code>,</code>), vertikalstreker (<code>|</code>) eller skråstreker (<code>/</code>).",
        "tags-create-invalid-title-chars": "Taggnavn kan ikke inneholde tegn som ikke kan brukes i sidetitler.",
        "tags-create-already-exists": "Taggen «$1» finnes fra før.",
        "tags-create-warnings-above": "Vi fikk følgende {{PLURAL:$2|advarsel|advarsler}} da vi prøvde å opprette taggen «$1»:",
        "mw-widgets-titleinput-description-redirect": "omdiriger til $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Legg til en kategori …",
        "mw-widgets-usersmultiselect-placeholder": "Legg til flere ...",
+       "date-range-from": "Fra dato:",
+       "date-range-to": "Til dato:",
        "sessionmanager-tie": "Kan ikke kombinere flere forespørselsautentiseringstyper: $1",
        "sessionprovider-generic": "$1 sesjoner",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "informasjons&shy;kapsel-baserte sesjoner",
        "pageid": "side-ID $1",
        "rawhtml-notallowed": "&lt;html&gt;-tagger kan ikke brukes utenfor normale sider.",
        "gotointerwiki": "Forlater {{SITENAME}}",
-       "gotointerwiki-invalid": "Den gitte tittelen var ugyldig.",
-       "gotointerwiki-external": "Du er i ferd med å forlate {{SITENAME}} for å besøke [[$2]], som er et annet nettsted.\n\n[$1 Klikk her for å fortsette til $1].",
+       "gotointerwiki-invalid": "Den gitte tittelen er ugyldig.",
+       "gotointerwiki-external": "Du er i ferd med å forlate {{SITENAME}} for å besøke [[$2]], som er et annet nettsted.\n\n'''[$1 Fortsett til $1]'''",
        "undelete-cantedit": "Du kan ikke gjenopprette denne siden fordi du ikke har tillatelse til å redigere den.",
-       "undelete-cantcreate": "Du kan ikke gjenopprette denne siden fordi det ikke er noen eksisterende side med dette navnet, og du ikke har tillatelse til å opprette siden."
+       "undelete-cantcreate": "Du kan ikke gjenopprette denne siden fordi det ikke er noen eksisterende side med dette navnet, og du ikke har tillatelse til å opprette siden.",
+       "pagedata-title": "Sidedata",
+       "pagedata-text": "Denne siden gir et datagrensesnitt til sidene. Oppgi en sidetittel i URL-en, med undersidesyntaks.\n* Innholdsforhandlingen er basert på din klients Accept-header. Dette betyr at data for siden blir angitt på formatet som foretrekkes av din klient.",
+       "pagedata-not-acceptable": "Ingen passende format funnet. Støttede MIME-typer: $1",
+       "pagedata-bad-title": "Ugyldig tittel: $1."
 }
index 14f05dc..af8796e 100644 (file)
        "anontalk": "Overleg",
        "navigation": "Navigasie",
        "and": "&#32;en",
-       "qbfind": "Zeuken",
-       "qbbrowse": "Blaojen",
-       "qbedit": "Bewark",
-       "qbpageoptions": "Disse zied",
-       "qbmyoptions": "Veurkeuren",
        "faq": "Vragen die vake esteld wörden",
-       "faqpage": "Project:Vragen die vake esteld wörden",
        "actions": "Haandeling",
        "namespaces": "Naamruumtes",
        "variants": "Variaanten",
        "edit-local": "Lokale beschrieving bewarken",
        "create": "Anmaken",
        "create-local": "Lokale beschrieving derbie doon",
-       "editthispage": "Disse zied bewarken",
-       "create-this-page": "Disse zied anmaken",
        "delete": "Vortdoon",
-       "deletethispage": "Disse zied vortdoon",
-       "undeletethispage": "Zied weerummeplaotsen",
        "undelete_short": "$1 {{PLURAL:$1|versie|versies}} weerummeplaotsen",
        "viewdeleted_short": "{{PLURAL:$1|Eén versie die vortedaon is|$1 versies die vortedaon bin}} bekieken",
        "protect": "Beveiligen",
        "protect_change": "wiezigen",
-       "protectthispage": "Beveiligen",
        "unprotect": "Beveiliging wiezigen",
-       "unprotectthispage": "Beveiliging van disse zied wiezigen",
        "newpage": "Nieje zied",
-       "talkpage": "Overlegzied",
        "talkpagelinktext": "Overleg",
        "specialpage": "Spesiale zied",
        "personaltools": "Persoonlike instellingen",
-       "articlepage": "Artikel",
        "talk": "Overleg",
        "views": "Weergaven",
        "toolbox": "Hulpmiddels",
-       "userpage": "gebrukerszied",
-       "projectpage": "Bekiek projektzied",
        "imagepage": "Bestaandszied bekieken",
        "mediawikipage": "Tiejige bekieken",
        "templatepage": "Mal bekieken",
        "externaldberror": "Der gung iets fout bie de externe authentisering, of je maggen je gebrukersprofiel niet bewarken.",
        "login": "Anmelden",
        "nav-login-createaccount": "Anmelden",
-       "userlogin": "Anmelden / inschrieven",
-       "userloginnocreate": "Anmelden",
        "logout": "Aofmelden",
        "userlogout": "Aofmelden",
        "notloggedin": "Niet an-emeld",
        "userlogin-noaccount": "He'j nog gien gebrukersnaam?",
        "userlogin-joinproject": "Wörd lid van {{SITENAME}}",
-       "nologin": "He'j nog gien gebrukersnaam? $1.",
-       "nologinlink": "Maak n gebrukersprofiel an",
        "createaccount": "Inschrieven",
-       "gotaccount": "Stao'j al in-eschreven? '''$1'''.",
-       "gotaccountlink": "Anmelden",
-       "userlogin-resetlink": "Bi'j de anmeldgegevens kwiet?",
        "userlogin-resetpassword-link": "Joew wachtwoord vergeten?",
        "userlogin-helplink2": "Hulpe bie t anmelden",
        "userlogin-loggedin": "Je bin al an-emeld as {{GENDER:$1|$1}}.\nGebruuk t onderstaonde formulier um an te melden as n aandere gebruker.",
        "createacct-another-email-ph": "Vul joew netpostadres in",
        "createaccountmail": "Gebruuk n tiejelik wachtwoord dat joe netzelde is en stuur t naor t op-egeven netpostadres",
        "createacct-realname": "Echte naam (niet verplicht)",
-       "createaccountreason": "Reden:",
        "createacct-reason": "Reden",
        "createacct-reason-ph": "Waorumme je n aandere gebrukerskonto anmaken",
        "createacct-submit": "Gebrukerskonto anmaken",
        "passwordreset-emaildisabled": "Netpostmeugelikhejen bin uutezet op disse wiki.",
        "passwordreset-username": "Gebruker:",
        "passwordreset-domain": "Domein:",
-       "passwordreset-capture": "De resulterende netpost bekieken?",
-       "passwordreset-capture-help": "A'j dit vakjen anvinken, dan krie'j t netpostbericht te zien (mit t tiejelike wachtwoord) en t wördt naor de gebruker estuurd.",
        "passwordreset-email": "Netpostadres:",
        "passwordreset-emailtitle": "Gebrukersgegevens op {{SITENAME}}",
        "passwordreset-emailtext-ip": "Der hef der ene, waorschienlik jie zelf vanaof t IP-adres $1, n anvraag edaon um joew wachtwoord veur {{SITENAME}} ($4) opniej in te stellen.\nDe volgende {{PLURAL:$3|gebruker is|gebrukers bin}} ekoppeld an dit netpostadres:\n\n$2\n\n{{PLURAL:$3|Dit tiejelike wachtwoord vervölt|Disse tiejelike wachtwoorden vervallen}} over {{PLURAL:$5|één dag|$5 dagen}}.\nMeld je eigen noen an en wiezig t wachtwoord. A'j dit verzeuk niet zelf edaon hebben, of a'j t oorspronkelike wachtwoord nog kennen en t niet wiezigen willen, negeer dit bericht dan en blief joew ouwe wachtwoord gebruken.",
        "preview": "Naokieken",
        "showpreview": "Bewarking naokieken",
        "showdiff": "Verschil bekieken",
-       "blankarticle": "<strong>Waorschuwing:</strong> de zied die'j anmaken willen is leeg.\nA'j noen weer op \"{{int:savearticle}}\" klikken, dan wördt de zied an-emaakt zonder enige inhoud.",
+       "blankarticle": "<strong>Waorschuwing:</strong> de zied die'j anmaken willen is leeg.\nA'j noen weer op \"$1\" klikken, dan wördt de zied an-emaakt zonder enige inhoud.",
        "anoneditwarning": "<strong>Waorschuwing:</strong> je bin niet an-emeld.\nJoew IP-adres zal op-esleugen wörden a'j wiezigingen op disse zied anbrengen. A'j je eigen <strong>[$1 anmelden]</strong> of <strong>[$2 inschrieven]</strong> dan koemen joew bewarkingen onder joew gebrukersnaam te staon, samen mit aandere veurdelen.",
        "anonpreviewwarning": "''Je bin niet an-emeld.''\n''Deur de bewarking op te slaon wörden joew IP-adres op-esleugen in de ziedgeschiedenisse.''",
        "missingsummary": "'''Herinnering:''' je hebben gien samenvatting op-egeven veur de bewarking. A'j noen weer op ''Opslaon'' klikken wörden de bewarking zonder samenvatting op-esleugen.",
        "missingcommenttext": "Plaots joew opmarking hieronder.",
-       "missingcommentheader": "<strong>Waorschuwing:</strong> je hebben der gien onderwarptitel bie ezet. A'j noen weer op \"{{int:savearticle}}\" klikken, dan wörden de bewarking op-esleugen zonder onderwarptitel.",
+       "missingcommentheader": "<strong>Waorschuwing:</strong> je hebben der gien onderwarptitel bie ezet. A'j noen weer op \"$1\" klikken, dan wörden de bewarking op-esleugen zonder onderwarptitel.",
        "summary-preview": "Samenvatting naokieken:",
        "subject-preview": "Onderwarp naokieken:",
        "blockedtitle": "Gebruker is eblokkeerd",
        "editingsection": "Bewarken: $1 (deelzied)",
        "editingcomment": "Bewarken: $1 (niej onderwarp)",
        "editconflict": "Tegelieke bewörken: $1",
-       "explainconflict": "'''NB:''' n aander hef disse zied ewiezigd naoda'j an disse bewarking begunnen bin.\nt Bovenste bewarkingsveld löt de zied zien zo as t noen is.\nDaoronder (bie \"Wiezigingen\") staon de verschillen tussen joew versie en de op-esleugen zied.\nHelemaole onderan (bie \"Joew tekste\") steet nog n bewarkingsveld mit joew versie.\nJe zullen je eigen wiezigingen in de nieje tekste in mutten passen.\n'''Allinnig''' de tekste in t bovenste veld wörden beweerd a'j noen kiezen veur \"{{int:savearticle}}\".",
+       "explainconflict": "'''NB:''' n aander hef disse zied ewiezigd naoda'j an disse bewarking begunnen bin.\nt Bovenste bewarkingsveld löt de zied zien zo as t noen is.\nDaoronder (bie \"Wiezigingen\") staon de verschillen tussen joew versie en de op-esleugen zied.\nHelemaole onderan (bie \"Joew tekste\") steet nog n bewarkingsveld mit joew versie.\nJe zullen je eigen wiezigingen in de nieje tekste in mutten passen.\n'''Allinnig''' de tekste in t bovenste veld wörden beweerd a'j noen kiezen veur \"$1\".",
        "yourtext": "Joew tekste",
        "storedversion": "Op-esleugen versie",
        "nonunicodebrowser": "'''Waorschuwing: joew webkieker kan niet goed mit unikode uut de voten, schakel over op n aandere webkieker um de wiezigingen an te brengen!'''",
        "saveprefs": "Veurkeuren opslaon",
        "restoreprefs": "Alle standardinstellingen weerummezetten (veur alle seksies)",
        "prefs-editing": "Bewarkingsveld",
-       "rows": "Regels",
-       "columns": "Kolommen",
        "searchresultshead": "Zeukresultaoten",
        "stub-threshold": "Verwiezingsformattering van beginnetjes ($1):",
        "stub-threshold-sample-link": "veurbeeld",
        "userrights-reason": "Reden:",
        "userrights-no-interwiki": "Je hebben gien rechten um gebrukersrechten op aandere wiki's te wiezigen.",
        "userrights-nodatabase": "Databanke $1 besteet niet of is gien plaotselike databanke.",
-       "userrights-nologin": "Je mutten [[Special:UserLogin|an-emeld]] ween en as gebruker de juuste rechten hebben um gebrukersrechten toe te kunnen wiezen.",
-       "userrights-notallowed": "Je hebben gien rechten um gebrukersrechten toe te kunnen wiezen of in te trekken.",
        "userrights-changeable-col": "Groepen die'j beheren kunnen",
        "userrights-unchangeable-col": "Groepen die'j niet beheren kunnen",
        "userrights-conflict": "Konflikt bie t wiezigen van gebrukersrechten! Kiek joew wiezigingen nao en bevestig t.",
-       "userrights-removed-self": "Je hebben joew eigen bevoegdhejen in-etrökken. Je kunnen disse zied niet meer gebruken.",
        "group": "Groep:",
        "group-user": "gebrukers",
        "group-autoconfirmed": "an-emelde gebrukers",
        "right-editprotected": "Ziejen bewarken die beveiligd bin as \"{{int:protect-level-sysop}}\"",
        "right-editsemiprotected": "Ziejen bewarken die beveiligd bin as \"{{int:protect-level-autoconfirmed}}\"",
        "right-editinterface": "Systeemteksten bewarken",
-       "right-editusercssjs": "De CSS- en JS-bestaanden van aandere gebrukers bewarken",
        "right-editusercss": "De CSS-bestaanden van aandere gebrukers bewarken",
        "right-edituserjs": "De JS-bestaanden van aandere gebrukers bewarken",
        "right-editmyusercss": "Joew eigen CSS-ziejen bewarken",
        "right-siteadmin": "De databanke blokkeren en weer vriegeven",
        "right-override-export-depth": "Ziejen exporteren, oek de ziejen waor naor verwezen wördt, tot n diepte van 5",
        "right-sendemail": "Bericht versturen naor aandere gebrukers",
-       "right-passwordreset": "Bekiek netpostberichten veur t opniej instellen van joew wachtwoord",
        "newuserlogpage": "Logboek mit anwas",
        "newuserlogpagetext": "Hieronder staon de niej in-eschreven gebrukers",
        "rightslog": "Gebrukersrechtenlogboek",
        "recentchanges-legend-heading": "<strong>Legenda:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (zie oek de [[Special:NewPages|lieste mit nieje ziejen]])",
        "recentchanges-submit": "Bekiek",
+       "rcfilters-activefilters": "Aktieve filters",
+       "rcfilters-quickfilters": "Op-esleugen filterinstellingen",
+       "rcfilters-quickfilters-placeholder-title": "Nog gien verwiezingen op-esleugen",
+       "rcfilters-quickfilters-placeholder-description": "Um joew filterinstellingen op te slaon en t laoter te gebruken, klik op t bladwiezerikoon onderan bie \"Aktieve filter\".",
+       "rcfilters-savedqueries-apply-label": "Instellingen opslaon",
+       "rcfilters-savedqueries-cancel-label": "Aofbreken",
+       "rcfilters-savedqueries-add-new-title": "Filterinstellingen opslaon",
+       "rcfilters-restore-default-filters": "Standardfilters weerummezetten",
+       "rcfilters-clear-all-filters": "Alle filters vortdoon",
+       "rcfilters-search-placeholder": "Filter leste wiezigingen (blaojer of begin mit intypen)",
+       "rcfilters-filterlist-feedbacklink": "Geef kommentaar op de nieje (bèta)filters",
+       "rcfilters-highlightbutton-title": "Resultaoten markeren",
+       "rcfilters-highlightmenu-title": "Kies n kleur",
+       "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-humans-label": "Meenselik (gien bot)",
+       "rcfilters-filter-humans-description": "Bewarkingen deur meenselike bewarkers.",
+       "rcfilters-filtergroup-reviewstatus": "Beoordelingsstaotus",
+       "rcfilters-filter-patrolled-label": "Nao-ekeken",
+       "rcfilters-filter-unpatrolled-label": "Niet nao-ekeken",
+       "rcfilters-filtergroup-significance": "Petansie",
+       "rcfilters-filter-minor-label": "Kleine bewarkingen",
+       "rcfilters-filter-major-label": "Gien kleine bewarking",
+       "rcfilters-filter-major-description": "Bewarkingen niet emarkeerd as klein.",
+       "rcfilters-filtergroup-watchlist": "Evolgde ziejen",
+       "rcfilters-filter-watchlist-watched-label": "Op de volglieste",
+       "rcfilters-filter-watchlist-watched-description": "Wiezigingen an ziejen op joew volglieste.",
+       "rcfilters-filter-watchlist-watchednew-label": "Nieje volgliestwiezigingen",
+       "rcfilters-filter-watchlist-notwatched-label": "Niet op de volglieste",
+       "rcfilters-filter-watchlist-notwatched-description": "Alles behalve wiezigingen an ziejen die op joew volglieste staon.",
+       "rcfilters-filter-pageedits-label": "Ziedbewarkingen",
+       "rcfilters-filter-newpages-label": "Nieje ziejen",
+       "rcfilters-filter-newpages-description": "Bewarkingen waormee'j een nieje zied anmaken.",
+       "rcfilters-filter-categorization-label": "Kategoriewiezigingen",
+       "rcfilters-filter-logactions-label": "Eregistreerden aksies",
+       "rcfilters-filtergroup-lastRevision": "Leste versie",
+       "rcfilters-filter-lastrevision-label": "Leste versie",
+       "rcfilters-filter-previousrevision-label": "Eerdere versies",
        "rcnotefrom": "Dit bin de wiezigingen sinds <strong>$2</strong> (maximum van <strong>$1</strong> wiezigingen).",
        "rclistfrom": "Bekiek wiezigingen vanaof $3 $2",
        "rcshowhideminor": "$1 kleine wiezigingen",
        "rcshowhidecategorization": "$1 kategorisering van ziejen",
        "rcshowhidecategorization-show": "Bekiek",
        "rcshowhidecategorization-hide": "Verbarg",
-       "rclinks": "Bekiek de leste $1 wiezigingen van de aofgeleupen $2 dagen<br />$3",
+       "rclinks": "Bekiek de leste $1 wiezigingen van de aofgeleupen $2 dagen",
        "diff": "wiez",
        "hist": "gesch",
        "hide": "verbarg",
        "upload-too-many-redirects": "Der zatten te veule deurverwiezingen in de URL.",
        "upload-http-error": "Der is n HTTP-fout op-etrejen: $1",
        "upload-copy-upload-invalid-domain": "Bestaanden per kopie opsturen is niet beschikbaor vanuut dit domein.",
+       "upload-dialog-button-cancel": "Aofbreken",
+       "upload-dialog-button-back": "Weerumme",
+       "upload-dialog-button-done": "Ree",
+       "upload-dialog-button-save": "Opslaon",
+       "upload-dialog-button-upload": "Bestaand opsturen",
+       "upload-form-label-infoform-title": "Details",
+       "upload-form-label-infoform-name": "Naam",
+       "upload-form-label-infoform-description": "Beschrieving",
+       "upload-form-label-usage-title": "Gebruuk",
+       "upload-form-label-usage-filename": "Bestaandsnaam",
+       "upload-form-label-infoform-categories": "Kategorieën",
+       "upload-form-label-infoform-date": "Daotum",
        "backend-fail-stream": "t Was niet meugelik t bestaand $1 te streumen.",
        "backend-fail-backup": "t Was niet meugelik n reservekopie van t bestaand $1 te maken.",
        "backend-fail-notexists": "t Bestaand $1 besteet niet.",
        "wlnote": "Hieronder {{PLURAL:$1|steet de leste wieziging|staon de leste $1 wiezigingen}} in {{PLURAL:$2|t aofgeleupen ure|de leste $2 uren}} vanaof $3 um $4.",
        "wlshowlast": "Laot de veurbieje $1 uur $2 dagen  zien",
        "watchlist-submit": "Bekiek",
+       "wlshowhideminor": "kleine bewarkingen",
        "watchlist-options": "Opsies veur de volglieste",
        "watching": "Volg...",
        "unwatching": "Niet volgen...",
        "undeleteviewlink": "bekieken",
        "undeleteinvert": "Seleksie ummekeren",
        "undeletecomment": "Reden:",
-       "undeletedrevisions": "$1 {{PLURAL:$1|versie|versies}} weerummeplaotst",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 versie|$1 versies}} en {{PLURAL:$2|1 bestaand|$2 bestaanden}} bin weerummeplaotst",
-       "undeletedfiles": "{{PLURAL:$1|1 bestaand|$1 bestaanden}} weerummeplaotst",
        "cannotundelete": "t Weerummeplaotsen is mislokt:\n$1",
        "undeletedpage": "'''$1 is weerummeplaotst'''\n\nBekiek t [[Special:Log/delete|vortdologboek]] veur n overzicht van ziejen die kortens vortedaon en weerummeplaotst bin.",
        "undelete-header": "Zie t [[Special:Log/delete|vortdologboek ]] veur spul dat krek vortedaon is.",
        "confirm-unwatch-button": "Oké",
        "confirm-unwatch-top": "Disse zied van joew volglieste aofhaolen?",
        "quotation-marks": "\"$1\"",
-       "imgmultipageprev": "&larr; veurige",
-       "imgmultipagenext": "volgende &rarr;",
+       "imgmultipageprev": " veurige",
+       "imgmultipagenext": "volgende ",
        "imgmultigo": "Oké",
        "imgmultigoto": "Gao naor de zied $1",
        "ascending_abbrev": "opl.",
        "logentry-upload-upload": "$1 hef $3 {{GENDER:$2|op-estuurd}}",
        "logentry-upload-overwrite": "$1 {{GENDER:$2|hef}} n nieje versie van $3 op-elaojen",
        "rightsnone": "(gien)",
-       "revdelete-summary": "samenvatting bewarken",
        "feedback-adding": "Joew kommentaar wörden op de zied ezet...",
        "feedback-bugcheck": "Mooi! Kiek nao of t niet al één van de [$1 bekende problemen] is.",
        "feedback-bugnew": "Ik heb t nao-ekeken. Meld n nieje programmafout",
        "feedback-thanks": "Bedankt! Joew kommentaar is op de zied \"[$2 $1]\" ezet.",
        "searchsuggest-search": "Zeuken / zuken / zuiken",
        "searchsuggest-containing": "bevat...",
-       "api-error-badaccess-groups": "Je maggen gien bestaanden in disse wiki oplaojen.",
        "api-error-badtoken": "Interne fout: t token klopt niet.",
-       "api-error-copyuploaddisabled": "Bestaanden opsturen via n webadres is uutezet op disse server.",
-       "api-error-duplicate": "Der {{PLURAL:$1|steet al n bestaand|staon al bestaanden}} mit de zelfde inhoud in de wiki.",
-       "api-error-duplicate-archive": "Der {{PLURAL:$1|was al n aander bestaand|waren al $1 aandere bestaanden}}  op de webstee mit de zelfde inhoud, mer {{PLURAL:$1|dat is|die bin}} vortedaon.",
-       "api-error-empty-file": "t Bestaand da'j op-estuurd hebben is leeg.",
        "api-error-emptypage": "Je maggen gien lege nieje ziejen anmaken.",
-       "api-error-fetchfileerror": "Interne fout: der is iets verkeerd egaon mit t ophaolen van t bestaand.",
-       "api-error-fileexists-forbidden": "Der besteet al n bestaand mit de naam \"$1\" die niet overschreven kan wörden.",
-       "api-error-fileexists-shared-forbidden": "Der besteet al n bestaand mit de naam \"$1\" in de edeelden bestaandsarchief dat niet overschreven kan wörden.",
-       "api-error-file-too-large": "t Bestaand da'j op-estuurd hebben is te groot.",
-       "api-error-filename-tooshort": "De bestaandsnaam is te kort.",
-       "api-error-filetype-banned": "Dit bestaandstype is niet toe-estaon.",
-       "api-error-filetype-banned-type": "{{PLURAL:$4|t Bestaandstype $1|De bestaandstypes $1}} wörden niet toe-eleuten. {{PLURAL:$3|t Toe-estaone bestaandstype is|De toe-estaone bestaandstypen bin}} $2.",
-       "api-error-filetype-missing": "t Bestaand hef gien extensie.",
-       "api-error-hookaborted": "De wieziging die'j proberen deur te voeren is aofebreuken deur n extra uutbreiding.",
-       "api-error-http": "Interne fout: der kon gien verbiending emaakt wörden mit de server.",
-       "api-error-illegal-filename": "Disse bestaandsnaam mag niet.",
-       "api-error-internal-error": "Interne fout: der is iets verkeerd egaon tiejens t verwarken van joew op-estuurden bestaand deur de wiki.",
-       "api-error-invalid-file-key": "Interne fout: t bestaand stung niet in de tiedelike opslag.",
-       "api-error-missingparam": "Interne fout: niet alle parameters bin in t verzeuk mee-eleverd.",
-       "api-error-missingresult": "Interne fout: kon niet vaststellen of t kopiëren wel wol lokken.",
-       "api-error-mustbeloggedin": "Je mutten an-emeld ween um bestaanden te kunnen opsturen.",
-       "api-error-mustbeposted": "Der zit n fout in de programmatuur. Der wörden gien gebruukemaakt van de juuste HTTP-methode.",
-       "api-error-noimageinfo": "t Opsturen van t bestaand is aoferond, mer de server hef gien gegevens over t bestaand egeven.",
-       "api-error-nomodule": "Interne fout: der is gien inlaojmodule in-esteld.",
-       "api-error-ok-but-empty": "Interne fout: de server hef gien gegevens weerestuurd.",
-       "api-error-overwrite": "Je maggen gien bestaond bestaand overschrieven.",
-       "api-error-stashfailed": "Interne fout: de server kon t tiedelike bestaand niet opslaon.",
        "api-error-publishfailed": "Interne fout: de server kon t tiejelike bestaand niet publiseren.",
-       "api-error-timeout": "De server hef niet binnen de verwachte tied antwoord egeven.",
-       "api-error-unclassified": "Der is n onbekende fout op-etrejen",
-       "api-error-unknown-code": "Interne fout: \"$1\"",
-       "api-error-unknown-error": "Interne fout: der is iets verkeerd egaon tiejens t opsturen van joew bestaand.",
+       "api-error-stashfailed": "Interne fout: de server kon t tiedelike bestaand niet opslaon.",
        "api-error-unknown-warning": "Onbekende waorschuwing: $1",
        "api-error-unknownerror": "Onbekende fout: \"$1\"",
-       "api-error-uploaddisabled": "Je kunnen gien bestaanden opsturen in deze wiki.",
-       "api-error-verification-error": "Dit bestaand is meugelik beschaodigd of hef n onjuuste extensie.",
        "duration-seconds": "$1 {{PLURAL:$1|sekonde|sekonden}}",
        "duration-minutes": "$1 {{PLURAL:$1|minuut|minuten}}",
        "duration-hours": "$1 {{PLURAL:$1|uur|uren}}",
index b99b7eb..448eb9e 100644 (file)
        "externaldberror": "Dat geev en Fehler bi de externe Authentifizerungsdatenbank oder du dröffst dien extern Brukerkonto nich ännern.",
        "login": "Anmellen",
        "nav-login-createaccount": "Nee Konto anleggen oder anmellen",
-       "userlogin": "Nee Konto anleggen oder anmellen",
-       "userloginnocreate": "Anmellen",
        "logout": "Afmellen",
        "userlogout": "Afmellen",
        "notloggedin": "Nich anmellt",
        "userlogin-joinproject": "Bi {{SITENAME}} anmellen",
-       "nologin": "Wenn du noch keen Brukerkonto hest, denn kannst di anmellen: $1.",
-       "nologinlink": "Brukerkonto inrichten",
        "createaccount": "Nieg Brukerkonto anleggen",
-       "gotaccount": "Hest Du al en Brukerkonto? '''$1'''.",
-       "gotaccountlink": "Anmellen",
-       "userlogin-resetlink": "De Anmelldaten vergaten?",
        "userlogin-resetpassword-link": "Passwoort vergeten?",
        "userlogin-helplink2": "Hülp bi dat anmellen",
        "createaccountmail": "över E-Mail",
-       "createaccountreason": "Grund:",
        "createacct-submit": "Brukerkonto inrichten",
        "badretype": "De beiden Passwöör stimmt nich övereen.",
        "userexists": "Disse Brukernaam is al weg. Bitte söök di en annern ut.",
        "editingsection": "Ännern vun $1 (Afsatz)",
        "editingcomment": "Ännern vun $1 (nee Afsnidd)",
        "editconflict": "Konflikt bi’t Sied ännern: $1",
-       "explainconflict": "En annern Bruker hett disse Sied ännert, na de Tied dat du anfungen hest, de Sied to ännern.\nDat Textfeld baven wiest de aktuelle Sied.\nDat Textfeld ünnen wiest dien Ännern.\nFöög dien Ännern in dat Textfeld baven in.\n'''Blots''' de Text in dat Textfeld baven warrt spiekert, wenn du op \"{{int:savearticle}}\" klickst!",
+       "explainconflict": "En annern Bruker hett disse Sied ännert, na de Tied dat du anfungen hest, de Sied to ännern.\nDat Textfeld baven wiest de aktuelle Sied.\nDat Textfeld ünnen wiest dien Ännern.\nFöög dien Ännern in dat Textfeld baven in.\n'''Blots''' de Text in dat Textfeld baven warrt spiekert, wenn du op \"$1\" klickst!",
        "yourtext": "Dien Text",
        "storedversion": "Spiekerte Version",
        "nonunicodebrowser": "'''Wohrschau: Dien Browser kann keen Unicode, bruuk en annern Browser, wenn du en Siet ännern wist.'''",
        "saveprefs": "Spiekern",
        "restoreprefs": "All Standardinstellungen wedderhalen",
        "prefs-editing": "Grött vun’t Textfeld",
-       "rows": "Regen",
-       "columns": "Spalten",
        "searchresultshead": "Söökresultaten",
        "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",
        "userrights-reason": "Grund:",
        "userrights-no-interwiki": "Du hest nich de Rechten, Brukerrechten in annere Wikis to setten.",
        "userrights-nodatabase": "Datenbank $1 gifft dat nich oder is nich lokal.",
-       "userrights-nologin": "Du musst mit en Administrater-Brukerkonto [[Special:UserLogin|anmellt]] wesen, dat du Brukerrechten ännern kannst.",
-       "userrights-notallowed": "Du hest nich de Rechten, Brukerrechten to setten.",
        "userrights-changeable-col": "Gruppen, de du ännern kannst",
        "userrights-unchangeable-col": "Gruppen, de du nich ännern kannst",
        "group": "Grupp:",
        "right-protect": "Schuulstatus vun Sieden ännern",
        "right-editprotected": "Schuulte Sieden ännern (ahn Kaskadensperr)",
        "right-editinterface": "Systemnarichten ännern",
-       "right-editusercssjs": "Anner Lüüd ehr CSS- un JS-Datein ännern",
        "right-editusercss": "Anner Lüüd ehr CSS-Datein ännern",
        "right-edituserjs": "Anner Lüüd ehr JS-Datein ännern",
        "right-rollback": "Sieden gau trüchdreihn",
        "rcshowhidemine-show": "wiesen",
        "rcshowhidemine-hide": "versteken",
        "rcshowhidecategorization": "kategoriserung vun Sieden $1",
-       "rclinks": "Wies de letzten '''$1''' Ännern vun de letzten '''$2''' Daag. ('''N''' - Ne’e Sieden; '''L''' - Lütte Ännern)<br />$3",
+       "rclinks": "Wies de letzten '''$1''' Ännern vun de letzten '''$2''' Daag. ('''N''' - Ne’e Sieden; '''L''' - Lütte Ännern)",
        "diff": "Ünnerscheed",
        "hist": "Versionen",
        "hide": "Nich wiesen",
        "undeleteviewlink": "bekieken",
        "undeleteinvert": "Utwahl ümkehrn",
        "undeletecomment": "Grund:",
-       "undeletedrevisions": "{{PLURAL:$1|ene Version|$1 Versionen}} wedderhaalt",
-       "undeletedrevisions-files": "{{PLURAL:$1|Ene Version|$1 Versionen}} un {{PLURAL:$2|ene Datei|$2 Datein}} wedderhaalt",
-       "undeletedfiles": "{{PLURAL:$1|ene Datei|$1 Datein}} wedderhaalt",
        "cannotundelete": "Wedderhalen güng nich; en annern hett de Siet al wedderhaalt.",
        "undeletedpage": "'''$1''' wedderhaalt.\n\nIn dat [[Special:Log/delete|Lösch-Logbook]] steiht en Översicht över de wegsmetenen un wedderhaalten Sieden.",
        "undelete-header": "Kiek in dat [[Special:Log/delete|Lösch-Logbook]] för Sieden, de nuletzt wegsmeten worrn sünd.",
        "logentry-block-block": "$1 {{GENDER:$2|block}} {{GENDER:$4|$3}} för en Tiedruum vun $5 $6",
        "logentry-suppress-block": "$1 {{GENDER:$2|block}} {{GENDER:$4|$3}} för en Tiedruum vun $5 $6",
        "rightsnone": "(kene)",
-       "revdelete-summary": "Tosamenfaten",
        "searchsuggest-search": "Söken",
        "expandtemplates": "Vörlagen oplösen",
        "expand_templates_intro": "Mit disse Spezialsied köönt Vörlagen in ingeven Text in Wikitext ümwannelt warrn.\nOk Parserfunkschonen so as\n<nowiki>{{</nowiki>#language:…}}, un Variabeln so as\n<nowiki>{{</nowiki>CURRENTDAY}} warrt ümwannelt. Also so temlich allens, wat twischen swiefte Klammern steit.\nDorto warrt de nödigen Parser-Phasen in MediaWiki direkt opropen.",
index 3b6f134..7e48196 100644 (file)
@@ -23,7 +23,8 @@
                        "Matma Rex",
                        "जनक राज भट्ट",
                        "Suniltheblue",
-                       "Irus"
+                       "Irus",
+                       "रमेश सिंह बोहरा"
                ]
        },
        "tog-underline": "रेखाङ्कित लिङ्क:",
        "searcharticle": "खोज्ने",
        "history": "पृष्ठको इतिहास",
        "history_short": "पृष्ठको इतिहास",
+       "history_small": "इतिहास",
        "updatedmarker": "मेरो अन्तिम भ्रमण पछि अद्यतन गरिएको",
        "printableversion": "छाप्नयोग्य संस्करण",
        "permalink": "स्थायी लिङ्क",
        "views": "अवलोकनहरू",
        "toolbox": "औजारहरू",
        "tool-link-userrights": "परिवर्तन {{GENDER:$1|प्रयोगकर्ता}} समूह",
+       "tool-link-userrights-readonly": "{{GENDER:$1|प्रयोगकर्ता}} समूहहरू हेर्नुहोस्।",
        "tool-link-emailuser": "{{GENDER:$1|प्रयोगकर्ता}} लाई इमेल गर्ने",
        "userpage": "प्रयोगकर्ता पृष्ठ हेर्ने",
        "projectpage": "आयोजना पृष्ठ हेर्ने",
        "userlogin-remembermypassword": "मलाई प्रवेश गराइराख्ने",
        "userlogin-signwithsecure": "सुक्षित जडान प्रयोग गर्ने",
        "cannotlogin-title": "मा लग गर्न सक्दैनौं",
+       "cannotlogin-text": "लगइन गर्न सम्भव छैन ।",
+       "cannotloginnow-title": "अहिले लग आउट गर्न सकिन्न",
+       "cannotloginnow-text": "$1 को उपयोग गरुन्जेल लगइन हुन सक्दैन ।",
        "cannotcreateaccount-title": "सिर्जना गर्न सकिँदैन खाता",
        "cannotcreateaccount-text": "प्रत्यक्ष खाता सिर्जना सक्षम छैन on this wiki.",
        "yourdomainname": "तपाईंको ज्ञानक्षेत्र(डोमेन):",
        "password-change-forbidden": "यो विकिमा पासवर्ड परिवर्तन गर्न सक्नुहुन्न।",
        "externaldberror": "यहाँ प्रमाणिकरण डेटाबेस त्रुटि भयो या त तपाईंलाई आफ्नो बाहिरी खाता अद्यतन गर्ने अनुमति छैन।",
        "login": "प्रवेश",
+       "login-security": "तपाईंको परिचर प्रमाणित गर्नुहोस् ।",
        "nav-login-createaccount": "प्रवेश गर्ने/नयाँ खाता बनाउने",
        "logout": "निर्गमन",
        "userlogout": "निर्गमन (लग आउट)",
        "eauthentsent": "दिइएको इमेल ठेगानामा इमेल पठाइएको छ ।\nतपाईंको खातामा अरु इमेल पठउनु अघि , इमेलमा लेखिएको मार्गदर्शन अनुसार , त्यो खाता तपाईंकै हो भनेर निश्चित गर्नु पर्नेछ ।",
        "throttled-mailpassword": "बितेको {{PLURAL:$1|घण्टा|$1 घण्टाहरु}} भित्र एउटा पासवर्ड अनुस्मारक पठाई सकिएको छ।\nदुरुपयोगबाट बचाउकोलागि प्रत्येक {{PLURAL:$1|घण्टा|$1 घण्टाहरु}}मा केवल एउटा पासवर्ड अनुस्मारक पठाइन्छ।",
        "mailerror": " चिठी :$1 पठाउँदा त्रुटी भयो",
-       "acct_creation_throttle_hit": "तपाà¤\88à¤\82à¤\95à¥\8b à¤\86à¤\88पà¥\80 à¤ à¥\87à¤\97ानाबाà¤\9f à¤\86à¤\8fà¤\95ा à¤\86à¤\97नà¥\8dतà¥\81à¤\95दà¥\8dवारा à¤¬à¤¿à¤¤à¥\87à¤\95à¥\8b à¤\9aà¥\8cबिस à¤\98णà¥\8dà¤\9fामा à¤¯à¤¸ à¤µà¤¿à¤\95िमा {{PLURAL:$1|à¤\8fà¤\89à¤\9fा à¤\96ाता à¤¬à¤¨à¤¾à¤\87सà¤\95िà¤\8fà¤\95à¥\8b à¤\9b|$1 à¤\96ाताहरà¥\81 à¤¬à¤¨à¤¾à¤\87सà¤\95िà¤\8fà¤\95ा à¤\9bनà¥\8d}}, à¤¯à¤¸ à¤¸à¤®à¤¯à¤¾à¤µà¤§à¤¿à¤®à¤¾ à¤¯à¤¤à¤¿ à¤¨à¥\88à¤\82 à¤\85धिà¤\95तम à¤¸à¥\80मा à¤¹à¥\8b।\nà¤\85तà¤\83 à¤¯à¤¸ à¤¸à¤®à¤¯ à¤¯à¤¸ à¤\86à¤\88पà¥\80 à¤ à¥\87à¤\97ानाà¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97 à¤\97रà¥\8dनà¥\87 à¤\86à¤\97नà¥\8dतà¥\81à¤\95लà¥\87 à¤\85रà¥\81 à¤\96ाता à¤\96à¥\8bलà¥\8dन à¤¸à¤\95à¥\8dनà¥\87à¤\9bà¥\88ननà¥\8d।",
+       "acct_creation_throttle_hit": "तपाà¤\88à¤\82à¤\95à¥\8b à¤\86à¤\88पà¥\80 à¤ à¥\87à¤\97ानाबाà¤\9f à¤\86à¤\8fà¤\95ा à¤\86à¤\97नà¥\8dतà¥\81à¤\95दà¥\8dवारा à¤¬à¤¿à¤¤à¥\87à¤\95à¥\8b à¤\9aà¥\8cबिस à¤\98णà¥\8dà¤\9fामा à¤¯à¤¸ à¤µà¤¿à¤\95िमा {{PLURAL:$1|à¤\8fà¤\89à¤\9fा à¤\96ाता à¤¬à¤¨à¤¾à¤\87सà¤\95िà¤\8fà¤\95à¥\8b à¤\9b|$1 à¤\96ाताहरà¥\82 à¤¬à¤¨à¤¾à¤\87सà¤\95िà¤\8fà¤\95ा à¤\9bनà¥\8d}}, à¤¯à¤¸ à¤¸à¤®à¤¯à¤¾à¤µà¤§à¤¿à¤®à¤¾ à¤¯à¤¤à¤¿ à¤¨à¥\88à¤\82 à¤\85धिà¤\95तम à¤¸à¥\80मा à¤¹à¥\8b à¥¤\nà¤\85तà¤\83 à¤¯à¤¸ à¤¸à¤®à¤¯ à¤¯à¤¸ à¤\86à¤\88पà¥\80 à¤ à¥\87à¤\97ानाà¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97 à¤\97रà¥\8dनà¥\87 à¤\86à¤\97नà¥\8dतà¥\81à¤\95लà¥\87 à¤\85रà¥\81 à¤\96ाता à¤\96à¥\8bलà¥\8dन à¤¸à¤\95à¥\8dनà¥\87à¤\9bà¥\88ननà¥\8d ।",
        "emailauthenticated": "तपाईंको इमेल ठेगाना $2 को $3 मा प्रमाणित गरिएको थियो।",
        "emailnotauthenticated": "तपाईंको इमेल ठेगाना अहिले सम्म प्रमाणित गरिएको छैन ।\nनिम्न सुविधाको लागि कुनै पनि इमेल पठाइने छैन ।",
        "noemailprefs": "निम्न सुविधाहरू राम्ररी काम गर्नको लागि तपाईंको अभिरुचिमा आफ्नो ई-मेल ठेगाना खुलाउनुहोस् ।",
        "createaccount-title": "{{SITENAME}}कोलागि खाता खोल्ने काम",
        "createaccount-text": "कसैले तपाईंको इमेल ठेगानालाई {{SITENAME}} ($4) मा \"$2\" नामको खाता बनाएको छ, जसको पासवर्ड \"$3\" छ ।\nअब तपाईं तुरुन्त लगइन गरेर आफ्नो प्रवेसशब्द परिवर्तन गर्नुहोला ।\nयदी यो खाता गल्तिले खोलिएको रहेछ भने तपाईं यो सन्देशलाई बेवास्ता गर्न सक्नुहुन्छ ।",
        "login-throttled": "तपाईंले भर्खरै धेरै पल्ट प्रवेशको निम्ति प्रयास गर्नुभएको छ ,कृपया $1 पर्खेर मात्र प्रयास गर्नुहोस्।",
-       "login-abort-generic": "तपाà¤\88à¤\82à¤\95à¥\8b à¤ªà¥\8dरवà¥\87श à¤\85सफल à¤­à¤¯à¥\8b - à¤\9bà¥\8bड़ियो",
+       "login-abort-generic": "तपाà¤\88à¤\82à¤\95à¥\8b à¤ªà¥\8dरवà¥\87श à¤\85सफल à¤­à¤¯à¥\8b - à¤°à¥\8bà¤\95ियो",
        "login-migrated-generic": "तपाईंको खाता स्थानान्तरण भएको छ, र तपाईंको प्रयोगकर्ता नाम यस विकिमा छैन ।",
        "loginlanguagelabel": "भाषा: $1",
        "suspicious-userlogout": "तपाईंको निर्गमन अनुरोध अस्विकार गरिन्छ किन कि यो खराब ब्राउजर वा क्यासिङ प्रोक्सिले पठाएको जस्तो देखिन्छ।",
        "createacct-another-realname-tip": "वास्तविक नाम ऐच्छिक हो ।\nतपाईंले यो खुलाउनु भएको खण्डमा तपाईंको काममा प्रयोगकर्ता श्रेय दिनको लागि यसको प्रयोग गरिने छ ।",
        "pt-login": "प्रवेश (लग ईन)",
        "pt-login-button": "प्रवेश",
+       "pt-login-continue-button": "प्रवेस जारी राख्नुहोस् ।",
        "pt-createaccount": "खाता खोल्नुहोस्",
        "pt-userlogout": "निर्गमन (लग आउट)",
        "php-mail-error-unknown": "PHP मेल() क्रियामा अज्ञात त्रुटि",
        "resetpass_submit": "पासवर्ड व्यवस्थित गरी र प्रवेशगर्ने",
        "changepassword-success": "तपाईंको पासवर्ड सफलतापूर्वक परिवर्तन भयो!",
        "changepassword-throttled": "तपाईंले भर्खरै धेरै पल्ट प्रवेश (लग इन)को निम्ति प्रयास गर्नुभएको छ। \nकृपया $1 पर्खेर मात्र प्रयास गर्नुहोस्।",
+       "botpasswords": "बोट पासवर्ड",
+       "botpasswords-createnew": "नयाँ बोटको लागि पासवर्ड बनाउने",
+       "botpasswords-label-appid": "बोट नाम",
+       "botpasswords-label-create": "बनाउनुहोस्",
+       "botpasswords-label-update": "अद्यतन गर्ने (अपडेट)",
+       "botpasswords-label-cancel": "रद्द गर्ने",
+       "botpasswords-label-delete": "मेट्ने",
+       "botpasswords-label-resetpassword": "प्रवेसशब्द पुनः तय गर्ने",
        "resetpass_forbidden": "पासवर्ड परिवर्तन गर्न मिल्दैन",
        "resetpass-no-info": "यो पृष्ठ सिधै हेर्नको लागि तपाईंले प्रवेश गर्नुपर्छ ।",
        "resetpass-submit-loggedin": "प्रवेसशब्द परिवर्तन गर्ने",
        "watchthis": "यो पृष्ठ अवलोकन गर्नुहोस्",
        "savearticle": "सङ्ग्रह गर्ने",
        "savechanges": "परिवर्तन सङ्ग्रह गर्नुहोस्",
+       "publishpage": "पृष्ठ प्रकाशित गर्ने",
+       "publishchanges": "परिवर्तनहरू प्रकाशित गर्ने",
        "preview": "पूर्वावलोकन",
        "showpreview": "पूर्वालोकन देखाउनुहोस्",
        "showdiff": "परिवर्तन देखाउनुहोस्",
-       "blankarticle": "<strong>चेतावनी:</strong> तपाईं एउटा खालि पृष्ठको निर्माण गर्दै हुनुहुन्छ।\nयदि तपाईं \"{{int:savearticle}}\" लाई पुनः थिच्नुहुन्छ भने पृष्ठ बिना कुनै सामग्री नै निर्मित गरिनेछ।",
+       "blankarticle": "<strong>चेतावनी:</strong> तपाईं एउटा खालि पृष्ठको निर्माण गर्दै हुनुहुन्छ।\nयदि तपाईं \"$1\" लाई पुनः थिच्नुहुन्छ भने पृष्ठ बिना कुनै सामग्री नै निर्मित गरिनेछ।",
        "anoneditwarning": "<strong>चेतावनी:</strong> तपाईंले प्रवेश गर्नु भएको छैन । तपाईंको आइपि ठेगाना पृष्ठ सम्पादन इतिहासमा दर्ता गरिने छ र यो सबैले हेर्न सक्छन् । यदि तपाईं <strong>[$1 लगईन]</strong> वा <strong>[$2 नयाँ खाता बनाउने] गर्नुभयो भने तपाईंद्वारा गरिएको सम्पादन तपाईंको प्रयोगकर्तानाममा जोडिनेछ ।",
        "anonpreviewwarning": "''तपाईंले प्रवेश गर्नु भएको छैन। संग्रह (Save) गरेको खण्डमा पृष्ठको इतिहासमा तपाईंको IP ठेगाना अंकित गरिनेछ।''",
-       "missingsummary": "'''यादगर्नुहोस् :''' तपाईंले सम्पादन सारांश दिनुभएको छैन ।\nयदि तपाईंले \"{{int:savearticle}}\"  थिच्नुभयो भने , सारांश बिना नै संग्रहित गरिने छ ।",
-       "selfredirect": "<strong>चेतावनी:</strong> तपाईं यस पृष्ठलाई आफुमा पुनः निर्देशित गर्दै हुनुहुन्छ।\nहुनसक्छ तपाईं अनुप्रेषितको लागि गलत लक्ष्य निर्दिष्ट गर्दै हुनुहुन्छ, वा गलत पृष्ठको सम्पादन गर्दै हुनुहुन्छ।\nतपाईं पुनः एकपटक \"{{int:savearticle}}\" क्लिक गर्नुहुन्छ, पुनः निर्देशित त्यसै पनि बनाइनेछ।",
+       "missingsummary": "'''यादगर्नुहोस् :''' तपाईंले सम्पादन सारांश दिनुभएको छैन ।\nयदि तपाईंले \"$1\"  थिच्नुभयो भने , सारांश बिना नै संग्रहित गरिने छ ।",
+       "selfredirect": "<strong>चेतावनी:</strong> तपाईं यस पृष्ठलाई आफुमा पुनः निर्देशित गर्दै हुनुहुन्छ।\nहुनसक्छ तपाईं अनुप्रेषितको लागि गलत लक्ष्य निर्दिष्ट गर्दै हुनुहुन्छ, वा गलत पृष्ठको सम्पादन गर्दै हुनुहुन्छ।\nतपाईं पुनः एकपटक \"$1\" क्लिक गर्नुहुन्छ, पुनः निर्देशित त्यसै पनि बनाइनेछ।",
        "missingcommenttext": "कृपया टिप्पणी प्रविष्ठ गर्नुहोस् ।",
-       "missingcommentheader": "<strong>याद गर्नुहोस् :</strong> तपाईंले टिप्पणीमा विषय /शीर्ष पंक्ति  दिनुभएको छैन ।\nतपाईंले फेरि \"{{int:savearticle}}\"  थिच्नु भएमा , तपाईंको सम्पादन यसै रुपमा सङ्ग्रहित हुनेछ ।",
+       "missingcommentheader": "<strong>याद गर्नुहोस् :</strong> तपाईंले टिप्पणीमा विषय /शीर्ष पंक्ति  दिनुभएको छैन ।\nतपाईंले फेरि \"$1\"  थिच्नु भएमा , तपाईंको सम्पादन यसै रुपमा सङ्ग्रहित हुनेछ ।",
        "summary-preview": "सारांश पूर्वालोकन:",
        "subject-preview": "विषय/शीर्षपंक्ति पूर्वरुप:",
        "previewerrortext": "तपाईंको परिवर्तनको पूर्वावलोकन बनाउन खोज्दा समस्या आएको छ ।",
        "editingsection": "$1 (खण्ड) सम्पादन गरिदै",
        "editingcomment": "$1 सम्पादन गर्दै(नयाँ खण्ड)",
        "editconflict": "सम्पादन बाँझियो: $1",
-       "explainconflict": "तपाईंले सम्पादन कार्य सुरु गरेपछि कसैले यस पृष्टलाई परिवर्तन गरेकोछ।\nमाथिल्लो पाठक्षेत्रमा पृष्ठको वर्तमान पाठ छ।\nतपाईंको परिवर्तन तल्लो भागमा दर्शाइएकोछ। \nतपाईंले गर्नुभएको परिवर्तनलाई वर्तमान पाठसित मिसाउनु पर्नेछ, यदि तपाईंले \"{{int:savearticle}}\" थिच्नु भयो भनें पाठको माथिल्लो भाग '''मात्र''' संग्रह गरिनेछ।",
+       "explainconflict": "तपाईंले सम्पादन कार्य सुरु गरेपछि कसैले यस पृष्टलाई परिवर्तन गरेकोछ।\nमाथिल्लो पाठक्षेत्रमा पृष्ठको वर्तमान पाठ छ।\nतपाईंको परिवर्तन तल्लो भागमा दर्शाइएकोछ। \nतपाईंले गर्नुभएको परिवर्तनलाई वर्तमान पाठसित मिसाउनु पर्नेछ, यदि तपाईंले \"$1\" थिच्नु भयो भनें पाठको माथिल्लो भाग '''मात्र''' संग्रह गरिनेछ।",
        "yourtext": "तपाईंका पाठहरु",
        "storedversion": "संग्रहित पुनरावलोकन",
        "nonunicodebrowser": "<strong>चेतावनी: तपाईंको ब्राउजर युनिकोडलाई स्वीकार गर्दैन।</strong> \nतपाईंद्वारा सहि रुपले पृष्ठ सम्पादनको लागि: गैर-एयससिआइआइ क्यारेक्टर हेक्जाडेसिमल कोड (hexadecimal) मा देखाइनेछ।",
        "search-interwiki-caption": "भगिनी आयोजना",
        "search-interwiki-default": "$1देखिका नतिजाहरू:",
        "search-interwiki-more": "(अझै)",
+       "search-interwiki-more-results": "धेरै परिणामहरू",
        "search-relatedarticle": "सम्बन्धित",
        "searchrelated": "सम्बन्धित",
        "searchall": "सबै",
        "showingresultsinrange": "देखाई रहेको छ{{PLURAL:$1|<strong>1</strong> result|<strong>$1</strong> परिणाम}} सम्म पहुँच  #<strong>$2</strong> देखि #<strong>$3</strong> मा।",
        "search-showingresults": "{{PLURAL:$4|<strong>$3</strong> मा बाट <strong>$1</strong> परिणाम|<strong>$3</strong> मा बाट परिणाम <strong>$1 - $2</strong>}}",
        "search-nonefound": "तपाईंको खोजसँग मेल खाने नतिजाहरू भेटिएनन्",
+       "search-nonefound-thiswiki": "तपाईंको खोजसित मेल खाने नतिजाहरू भेटिएन ।",
        "powersearch-legend": "उन्नत खोज",
        "powersearch-ns": "नेमस्पेसेजहरूमा खोज्ने :",
        "powersearch-togglelabel": "जाँच्ने :",
        "search-external": "बाह्य खोज",
        "searchdisabled": "{{SITENAME}} खोज निस्क्रिय पारिएको छ ।\nहाललाई तपाईं गूगलद्वारा खोज्न सक्नुहुन्छ ।\nयाद गर्नुहोस् उनीहरूको {{SITENAME}}को सूची सामग्री पुरानो भएको हुनसक्छ ।",
        "search-error": "खोज्ने क्रममा समस्या देखियोः $1",
+       "search-warning": "खोज्ने क्रममा समस्या देखियोः $1",
        "preferences": "रोजाइहरू",
        "mypreferences": "प्राथमिकताहरू",
        "prefs-edits": "सम्पादन संख्या:",
        "restoreprefs": "सबै पूर्वनिर्धारित स्थिती कायम गर्ने(सबै खण्डहरूमा)",
        "prefs-editing": "सम्पादन",
        "searchresultshead": "खोज",
-       "stub-threshold": "<a href=\"#\" class=\"stub\">ठूटो</a> को लागि थ्रेसहोल्ड स्वरूपण (बाइट):",
+       "stub-threshold": "ठूटो लिङ्कको लागि थ्रेसहोल्ड स्वरूपण ($1):",
        "stub-threshold-sample-link": "उदाहरण",
        "stub-threshold-disabled": "निष्क्रिय",
        "recentchangesdays": "हालको परिवर्तनमा देखाउने दिनहरू:",
        "rcshowhidemine-hide": "लुकाउनुहोस्",
        "rcshowhidecategorization-show": "देखाउनुहोस्",
        "rcshowhidecategorization-hide": "लुकाउनुहोस्",
-       "rclinks": "पछिल्ला $1 परिवर्तनहरू पछिल्ला $2 दिनहरूमा<br />$3",
+       "rclinks": "पछिल्ला $1 परिवर्तनहरू पछिल्ला $2 दिनहरूमा",
        "diff": "भिन्न",
        "hist": "इतिहास",
        "hide": "लुकाउनुहोस्",
        "tooltip-ca-nstab-category": "श्रेणी पृष्ठ हेर्ने",
        "tooltip-minoredit": "यसलाई सामान्य सम्पादनको रुपमा चिनो लगाउने",
        "tooltip-save": "तपाईंका परिवर्तनहरू सङ्ग्रह गर्नुहोस्",
+       "tooltip-publish": "तपाईंका परिवर्तनहरू प्रकाशित गर्नुहोस्",
        "tooltip-preview": "तपाईंको परिवर्तनको पूर्वरूप , कृपया सङ्ग्रह गर्नु अघि यो प्रयोग गर्नुहोला !",
        "tooltip-diff": "तपाईंले पाठमा के के परिवर्तन गर्नुभयो भनेर देखाउने",
        "tooltip-compareselectedversions": "यस पृष्ठको छानिएका दुई पुनरावलोकन बीच फरक हेर्नुहोस्",
        "logentry-patrol-patrol-auto": "$1 ले $3 पृष्ठको $4 अवतरणलाई स्वचालित रूपले गस्ती गरिएको {{GENDER:$2|चिन्हित}} गरेको हो",
        "logentry-newusers-newusers": "प्रयोगकर्ता खाता $1 {{GENDER:$2|खोलियो}}",
        "logentry-newusers-create": "प्रयोगकर्ता खाता $1 {{GENDER:$2|खोलियो}}",
-       "logentry-newusers-create2": "$1 बाट प्रयोगकर्ता खाता $ {{GENDER:$2|खोलियो}}",
-       "logentry-newusers-byemail": "$1 बाट प्रयोगकर्ता खाता $ {{GENDER:$2|खोलियो}} र इमेल मार्फत पासबर्ड पठाइएको छ",
+       "logentry-newusers-create2": "$1 बाट प्रयोगकर्ता खाता $3 {{GENDER:$2|खोलियो}}",
+       "logentry-newusers-byemail": "$1 बाट प्रयोगकर्ता खाता $3 {{GENDER:$2|खोलियो}} र इमेल मार्फत पासबर्ड पठाइएको छ",
        "logentry-newusers-autocreate": "प्रयोगकर्ता खाता $1 स्वतः {{GENDER:$2|खोलियो}}",
        "logentry-rights-rights": "$1 ले $3 को प्रयोगकर्ता समूह $4 बाट परिवर्तन गरेर $5 {{GENDER:$2|गर्यो}}",
        "logentry-rights-rights-legacy": "$1 ले $3 को प्रयोगकर्ता समूह {{GENDER:$2|परिवर्तन गर्यो}}",
index f78bf5b..e28d02b 100644 (file)
@@ -5,7 +5,10 @@
                        "MarkvA",
                        "Siebrand",
                        "Tedjuh10",
-                       "Southparkfan"
+                       "Southparkfan",
+                       "McDutchie",
+                       "Romaine",
+                       "Mainframe98"
                ]
        },
        "view-pool-error": "De servers zijn op het moment helaas overbelast.\nTe veel gebruikers proberen deze pagina te bekijken.\nWacht even voordat je opnieuw toegang probeert te krijgen tot deze pagina.\n\n$1",
@@ -19,8 +22,8 @@
        "nospecialpagetext": "<strong>Je hebt een onbestaande speciale pagina opgevraagd.</strong>\n\nEen lijst met bestaande speciale pagina’s staat op [[Special:SpecialPages|speciale pagina’s]].",
        "missing-article": "In de database is geen inhoud aangetroffen voor de pagina \"$1\" die er wel zou moeten zijn ($2).\n\nDit kan voorkomen als je een verouderde koppeling naar het verschil tussen twee versies van een pagina volgt of een versie opvraagt die is verwijderd.\n\nAls dit niet het geval is, heb je wellicht een fout in de software gevonden.\nMaak 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.\nDe limiet is overschreden.\nProbeer het over een aantal minuten opnieuw.",
-       "viewsourcetext": "Je kunt de brontekst van deze pagina bekijken en kopiëren:",
-       "viewyourtext": "Je kunt '''uw bewerkingen''' aan de brontekst van deze pagina bekijken en kopiëren:",
+       "viewsourcetext": "Je kunt de brontekst van deze pagina bekijken en kopiëren.",
+       "viewyourtext": "Je kunt <strong>je bewerkingen</strong> aan de brontekst van deze pagina bekijken en kopiëren.",
        "editinginterface": "'''Waarschuwing:''' je bewerkt een pagina die interfacetekst voor de software bevat.\nBewerkingen op deze pagina beïnvloeden de gebruikersinterface van iedereen op deze wiki.\nGebruik [https://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.",
@@ -34,8 +37,7 @@
        "yourdomainname": "Je domein:",
        "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.",
-       "gotaccount": "Heb je al een gebruikersnaam? '''$1'''.",
-       "userlogin-resetlink": "Ben je je aanmeldgegevens vergeten?",
+       "userlogin-reauth": "Je moet opnieuw inloggen om te bevestigen dat je {{GENDER:$1|$1}} bent.",
        "createacct-email-ph": "Geef je e-mailadres op",
        "nocookiesnew": "De gebruiker is geregistreerd, maar jij bent niet aangemeld.\n{{SITENAME}} gebruikt cookies voor het aanmelden van gebruikers.\nSchakel die in en meld daarna aan met je nieuwe gebruikersnaam en wachtwoord.",
        "nocookieslogin": "{{SITENAME}} gebruikt cookies voor het aanmelden van gebruikers.\nCookies zijn uitgeschakeld in je browser.\nSchakel deze optie aan en probeer het opnieuw.",
        "changepassword-success": "Je wachtwoord is gewijzigd.",
        "resetpass-no-info": "Je moet aangemeld zijn voordat je deze pagina kunt gebruiken.",
        "resetpass-wrong-oldpass": "Het huidige of tijdelijke wachtwoord is ongeldig.\nMogelijk heb je je wachtwoord al gewijzigd of een nieuw tijdelijk wachtwoord aangevraagd.",
-       "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.\nDe volgende {{PLURAL:$3|gebruiker is|gebruikers zijn}} gekoppeld aan dit e-mailadres:\n\n$2\n\n{{PLURAL:$3|Dit tijdelijke wachtwoord vervalt|Deze tijdelijke wachtwoorden vervallen}} over {{PLURAL:$5|een dag|$5 dagen}}.\nMeld 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.\nDe volgende {{PLURAL:$3|gebruiker is|gebruikers zijn}} gekoppeld aan dit e-mailadres:\n\n$2\n\n{{PLURAL:$3|Dit tijdelijke wachtwoord vervalt|Deze tijdelijke wachtwoorden vervallen}} over {{PLURAL:$5|een dag|$5 dagen}}.\nMeld 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.",
-       "changeemail-text": "Vul dit formulier in om je e-mailadres te wijzigen. Je moet je wachtwoord invoeren om deze wijziging te bevestigen.",
+       "changeemail-header": "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}}:",
        "sig_tip": "Je handtekening met datum en tijd",
@@ -73,7 +74,7 @@
        "anonpreviewwarning": "''Je bent niet aangemeld.''\n''Door je bewerking op te slaan wordt je IP-adres opgeslagen in de paginageschiedenis.''",
        "missingsummary": "'''Let op:''' je hebt geen samenvatting opgegeven voor je bewerking.\nAls je nogmaals op ''Pagina opslaan'' klikt wordt de bewerking zonder samenvatting opgeslagen.",
        "missingcommenttext": "Plaats je reactie hieronder.",
-       "missingcommentheader": "'''Let op:''' Je hebt geen onderwerp/kop voor deze reactie opgegeven.\nAls je opnieuw op \"{{int:savearticle}}\" klikt, wordt je wijziging zonder een onderwerp of koptekst opgeslagen.",
+       "missingcommentheader": "'''Let op:''' Je hebt geen onderwerp/kop voor deze reactie opgegeven.\nAls je opnieuw op \"$1\" klikt, wordt je wijziging zonder een onderwerp of koptekst opgeslagen.",
        "blockedtext": "'''Je gebruiker of IP-adres is geblokkeerd.'''\n\nDe blokkade is uitgevoerd door $1.\nDe opgegeven reden is ''$2''.\n\n* Aanvang blokkade: $8\n* Einde blokkade: $6\n* Bedoeld te blokkeren: $7\n\nJe kunt contact opnemen met $1 of een andere [[{{MediaWiki:Grouppage-sysop}}|beheerder]] om de blokkade te bespreken.\nJe 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.\nJe huidige IP-adres is $3 en het blokkadenummer is #$5.\nVermeld 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.\nDe opgegeven reden is:\n\n:''$2''\n\n* Aanvang blokkade: $8\n* Einde blokkade: $6\n* Bedoeld te blokkeren: $7\n\nJe kunt deze blokkade bespreken met $1 of een andere [[{{MediaWiki:Grouppage-sysop}}|beheerder]].\n\nJe 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 is geblokkeerd.\n\nJe huidige IP-adres is $3 en het blokkadenummer is #$5.\nVermeld alle bovenstaande gegevens als je ergens op deze blokkade reageert.",
        "whitelistedittext": "Je moet $1 om pagina's te bewerken.",
@@ -81,7 +82,7 @@
        "nosuchsectiontext": "Je probeerde een subkopje te bewerken dat niet bestaat.\nWellicht 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.\nTyp in het onderstaande veld om de pagina aan te maken (meer informatie staat op de [$1 hulppagina]).\nGebruik de knop '''vorige''' in je browser als je hier per ongeluk terecht bent gekomen.",
-       "anontalkpagetext": "----''Deze overlegpagina hoort bij een anonieme gebruiker die geen gebruikersnaam heeft of deze niet gebruikt.\nDaarom wordt het IP-adres ter identificatie gebruikt.\nHet is mogelijk dat meerdere personen hetzelfde IP-adres gebruiken.\nMogelijk ontvang je hier berichten die niet voor je bedoeld zijn.\nAls je dat wilt voorkomen, [[Special:UserLogin/signup|registreer je]] of [[Special:UserLogin|meld je aan]] om verwarring met andere anonieme gebruikers te voorkomen.''",
+       "anontalkpagetext": "----''Deze overlegpagina hoort bij een anonieme gebruiker die geen gebruikersnaam heeft of deze niet gebruikt.\nDaarom wordt het IP-adres ter identificatie gebruikt.\nHet is mogelijk dat meerdere personen hetzelfde IP-adres gebruiken.\nMogelijk ontvang je hier berichten die niet voor je bedoeld zijn.\nAls je dat wilt voorkomen, [[Special:CreateAccount|registreer je]] of [[Special:UserLogin|meld je aan]] om verwarring met andere anonieme gebruikers te voorkomen.''",
        "noarticletext": "Deze pagina bevat geen tekst.\nJe 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.\nJe kunt [[Special:Search/{{PAGENAME}}|naar deze term zoeken]] in andere pagina's of\n<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\").\nControleer of je deze pagina wel wilt aanmaken/bewerken.",
@@ -97,7 +98,7 @@
        "session_fail_preview_html": "'''Je bewerking is niet verwerkt, omdat sessiegegevens verloren zijn gegaan.'''\n\n''Omdat in {{SITENAME}} ruwe HTML is ingeschakeld, is een voorvertoning niet mogelijk als bescherming tegen aanvallen met JavaScript.''\n\n'''Als dit een legitieme bewerking is, probeer het dan opnieuw.\nAls 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.'''\nDe bewerking is geweigerd om verminking van de paginatekst te voorkomen.\nDit 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.\nIn het bovenste deel van het venster staat de tekst van de huidige pagina.\nJe bewerking staat in het onderste gedeelte.\nJe dient je bewerkingen in te voegen in de bestaande tekst.\n'''Alleen''' de tekst in het bovenste gedeelte wordt opgeslagen als je op \"{{int:savearticle}}\" klikt.",
+       "explainconflict": "Een andere gebruiker heeft deze pagina bewerkt sinds je met je bewerking bent begonnen.\nIn het bovenste deel van het venster staat de tekst van de huidige pagina.\nJe bewerking staat in het onderste gedeelte.\nJe dient je bewerkingen in te voegen in de bestaande tekst.\n'''Alleen''' de tekst in het bovenste gedeelte wordt opgeslagen als je op \"$1\" klikt.",
        "yourtext": "Je tekst",
        "nonunicodebrowser": "'''Waarschuwing: je browser kan niet goed overweg met Unicode.'''\nHiermee 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.'''\nAls je je bewerking opslaat, gaan alle wijzigingen verloren die na deze versie zijn gemaakt.",
        "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.",
        "userrights-groups-help": "Je kunt de groepen wijzigen waar deze gebruiker lid van is.\n* Een aangekruist vakje betekent dat de gebruiker lid is van de groep.\n* Een niet aangekruist vakje betekent dat de gebruiker geen lid is van de groep.\n* 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 [[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",
        "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.\nPagina's die op [[Special:Watchlist|uw volglijst]] staan worden '''vet''' weergegeven.",
        "file-deleted-duplicate": "Een bestand dat identiek is aan dit bestand ([[:$1]]) is voorheen verwijderd.\nRaadpleeg het verwijderingslogboek voordat je verder gaat.",
        "filewasdeleted": "Er is eerder een bestand met deze naam verwijderd.\nRaadpleeg het $1 voordat je het opnieuw toevoegt.",
        "filename-bad-prefix": "De naam van het bestand dat je aan het uploaden bent begint met '''\"$1\"''', wat een niet-beschrijvende naam is die meestal automatisch door een digitale camera wordt gegeven.\nKies een duidelijke naam voor je bestand.",
-       "upload-success-msg": "Je upload van [$2] is geslaagd en is beschikbaar: [[:{{ns:file}}:$1]]",
-       "upload-failure-msg": "Er was een probleem met je upload van [$2]:\n\n$1",
-       "upload-warning-msg": "Er was een probleem met je upload van [$2].\nGa terug naar het [[Special:Upload/stash/$1|uploadformulier]] om dit probleem te verhelpen.",
        "uploadstash-badtoken": "Het uitvoeren van de handeling is mislukt. Dit komt mogelijk doordat je bewerkingsreferenties zijn verlopen. Probeer het opnieuw.",
-       "img-auth-nopathinfo": "PATH_INFO mist.\nJe server is niet ingesteld om deze gegevens door te geven.\nMisschien gebruikt deze CGI, en dan wordt img_auth niet ondersteund.\nZie https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization voor meer informatie.",
+       "img-auth-nopathinfo": "PATH_INFO ontbreekt.\nJe server is niet ingesteld om deze gegevens door te geven.\nMisschien gebruikt deze CGI, en dan wordt img_auth niet ondersteund.\nZie https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization voor meer informatie.",
        "img-auth-nologinnWL": "Je bent niet aangemeld en \"$1\" staat niet op de witte lijst.",
        "img-auth-isdir": "Je probeert de map \"$1\" te benaderen.\nAlleen toegang tot bestanden is toegestaan.",
        "upload-curl-error28-text": "Het duurde te lang voordat de website antwoordde.\nControleer of de website beschikbaar is, wacht even en probeer het dan opnieuw.\nJe kunt het misschien proberen als het minder druk is.",
        "ipbnounblockself": "Je mag jezelf niet deblokkeren",
        "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.\nBevestig 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.\nBevestig dat je deze handeling wil uitvoeren.",
-       "locknoconfirm": "Je hebt je keuze niet bevestigd via het vinkvakje.",
+       "locknoconfirm": "Je hebt je keuze niet bevestigd via het selectievakje.",
        "lockdbsuccesstext": "De database is afgesloten.<br />\nVergeet niet de [[Special:UnlockDB|database vrij te geven]] zodra je klaar bent met je onderhoud.",
        "movepagetext": "Door middel van het onderstaande formulier kan je een pagina hernoemen.\nDe geschiedenis gaat mee naar de nieuwe pagina.\n* De oude naam wordt automatisch een doorverwijzing naar de nieuwe pagina.\n* Koppelingen naar de oude pagina worden niet aangepast.\n* De pagina's die doorverwijzen naar de oorspronkelijke paginanaam worden automatisch bijgewerkt.\nAls je dit niet wilt, controleer dan of er geen [[Special:DoubleRedirects|dubbele]] of [[Special:BrokenRedirects|onjuiste doorverwijzingen]] zijn ontstaan.\n\nEen pagina kan '''alleen''' hernoemd worden als de nieuwe paginanaam niet bestaat of een doorverwijspagina zonder verdere geschiedenis is.\n\n'''Waarschuwing!'''\nVoor veel bekeken pagina's kan het hernoemen drastische en onvoorziene gevolgen hebben.\nZorg 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.\nDe oude naam wordt automatisch een doorverwijzing naar de nieuwe pagina.\nControleer dan of er geen [[Special:DoubleRedirects|dubbele]] of [[Special:BrokenRedirects|onjuiste doorverwijzingen]] zijn ontstaan.\n\nEen pagina kan '''alleen''' hernoemd worden als de nieuwe paginanaam niet bestaat of een doorverwijspagina zonder verdere geschiedenis is.\nJe kunt dus een pagina die per ongeluk is hernoemd terug hernoemen en je kunt een bestaande pagina niet overschrijven. \n\n'''Waarschuwing:''' voor veel bekeken pagina's kan het hernoemen drastische en onvoorziene gevolgen hebben.\nZorg ervoor dat je die gevolgen overziet voordat je deze handeling uitvoert.",
        "confirmemail_success": "Je e-mailadres is bevestigd.\nJe kunt jezelf nu [[Special:UserLogin|aanmelden]] en {{SITENAME}} gebruiken.",
        "confirmemail_loggedin": "Je e-mailadres is nu bevestigd.",
        "confirmemail_body": "Iemand, waarschijnlijk jijzelf, met het IP-adres $1,\nheeft zich met dit e-mailadres geregistreerd als gebruiker \"$2\" op {{SITENAME}}.\n\nOpen de volgende koppeling in je webbrowser om te bevestigen dat je deze gebruiker bent en om de e-mailmogelijkheden op {{SITENAME}} te activeren:\n\n$3\n\nAls je jezelf *niet* hebt aangemeld, volg dan de volgende koppeling om de bevestiging van je e-mailadres te annuleren:\n\n$5\n\nDe bevestigingscode vervalt op $4.",
-       "confirmemail_body_changed": "Iemand, waarschijnlijk jijzelf, met het IP-adres $1,\nheeft het het e-mailadres geregistreerd voor gebruiker \"$2\" op {{SITENAME}} gewijzigd naar dit e-mailadres.\n\nOpen de volgende koppeling in je webbrowser om te bevestigen dat je deze gebruiker bent en om de e-mailmogelijkheden op {{SITENAME}} opnieuw te activeren:\n\n$3\n\nAls je jezelf *niet* hebt aangemeld, volg dan de volgende koppeling om de bevestiging van je e-mailadres te annuleren:\n\n$5\n\nDe bevestigingscode vervalt op $4.",
-       "confirmemail_body_set": "Iemand, waarschijnlijk jij, met het IP-adres $1,\nheeft het het e-mailadres voor gebruiker \"$2\" op {{SITENAME}} ingesteld op dit e-mailadres.\n\nOpen de volgende koppeling in je webbrowser om te bevestigen dat jij deze gebruiker bent en om de e-mailmogelijkheden op {{SITENAME}} opnieuw te activeren:\n\n$3\n\nAls jij deze wijziging *niet* hebt gemaakt, volg dan de volgende koppeling om de bevestiging van uw e-mailadres te annuleren:\n\n$5\n\nDe bevestigingscode vervalt op $4.",
+       "confirmemail_body_changed": "Iemand, waarschijnlijk jijzelf, met het IP-adres $1,\nheeft het e-mailadres geregistreerd voor gebruiker \"$2\" op {{SITENAME}} gewijzigd naar dit e-mailadres.\n\nOpen de volgende koppeling in je webbrowser om te bevestigen dat je deze gebruiker bent en om de e-mailmogelijkheden op {{SITENAME}} opnieuw te activeren:\n\n$3\n\nAls je jezelf *niet* hebt aangemeld, volg dan de volgende koppeling om de bevestiging van je e-mailadres te annuleren:\n\n$5\n\nDe bevestigingscode vervalt op $4.",
+       "confirmemail_body_set": "Iemand, waarschijnlijk jij, met het IP-adres $1,\nheeft het e-mailadres voor gebruiker \"$2\" op {{SITENAME}} ingesteld op dit e-mailadres.\n\nOpen de volgende koppeling in je webbrowser om te bevestigen dat jij deze gebruiker bent en om de e-mailmogelijkheden op {{SITENAME}} opnieuw te activeren:\n\n$3\n\nAls jij deze wijziging *niet* hebt gemaakt, volg dan de volgende koppeling om de bevestiging van uw e-mailadres te annuleren:\n\n$5\n\nDe bevestigingscode vervalt op $4.",
        "deletedwhileediting": "'''Let op''': deze pagina is verwijderd terwijl je bezig was met je bewerking!",
        "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:\n: ''$2''\nBevestig 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.\nBevestig dat je de pagina opnieuw wilt aanmaken.",
        "dberr-usegoogle": "Wellicht kun je in de tussentijd zoeken via Google.",
        "htmlform-float-invalid": "De waarde die je hebt opgegeven is geen getal.",
        "feedback-bugornote": "Als je zover bent om een technisch probleem in detail te beschrijven, [$1 rapporteer dan een bug].\nAnders kan je ook het eenvoudige formulier hieronder gebruiken.\nJe 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-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."
+       "feedback-thanks": "Bedankt! Je terugkoppeling is op de pagina \"[$2 $1]\" geplaatst."
 }
index 0891832..46309a4 100644 (file)
        "anontalk": "Overleg",
        "navigation": "Navigatie",
        "and": "&#32;en",
-       "qbfind": "Zoeken",
-       "qbbrowse": "Bladeren",
-       "qbedit": "Bewerken",
-       "qbpageoptions": "Deze pagina",
-       "qbmyoptions": "Mijn pagina's",
        "faq": "Veelgestelde vragen",
-       "faqpage": "Project:Veelgestelde vragen",
        "actions": "Handelingen",
        "namespaces": "Naamruimten",
        "variants": "Varianten",
        "edit-local": "Lokale beschrijving bewerken",
        "create": "Aanmaken",
        "create-local": "Lokale beschrijving toevoegen",
-       "editthispage": "Deze pagina bewerken",
-       "create-this-page": "Deze pagina aanmaken",
        "delete": "Verwijderen",
-       "deletethispage": "Deze pagina verwijderen",
-       "undeletethispage": "Pagina terugplaatsen",
        "undelete_short": "{{PLURAL:$1|één bewerking|$1 bewerkingen}} terugplaatsen",
        "viewdeleted_short": "{{PLURAL:$1|Eén geschrapte bewerking |$1 geschrapte bewerkingen}} bekijken",
        "protect": "Beveiligen",
        "protect_change": "wijzigen",
-       "protectthispage": "Deze pagina beveiligen",
        "unprotect": "Beveiliging wijzigen",
-       "unprotectthispage": "Beveiliging van deze pagina wijzigen",
        "newpage": "Nieuwe pagina",
-       "talkpage": "Overlegpagina",
        "talkpagelinktext": "overleg",
        "specialpage": "Speciale pagina",
        "personaltools": "Persoonlijke instellingen",
-       "articlepage": "Pagina bekijken",
        "talk": "Overleg",
        "views": "Weergaven",
        "toolbox": "Hulpmiddelen",
        "tool-link-userrights": "{{GENDER:$1|Gebruikersgroepen}} wijzigen",
        "tool-link-userrights-readonly": "{{GENDER:$1|Gebruikers}}groepen weergeven",
        "tool-link-emailuser": "Deze {{GENDER:$1|gebruiker}} e-mailen",
-       "userpage": "Gebruikerspagina bekijken",
-       "projectpage": "Projectpagina bekijken",
        "imagepage": "Bestandspagina bekijken",
        "mediawikipage": "Berichtpagina bekijken",
        "templatepage": "Sjabloonpagina bekijken",
        "otherlanguages": "In andere talen",
        "redirectedfrom": "(Doorverwezen vanaf $1)",
        "redirectpagesub": "Doorverwijspagina",
-       "redirectto": "Doorverwijzen naar:",
-       "lastmodifiedat": "Deze pagina is het laatst bewerkt op $1 om $2.",
+       "redirectto": "Doorverwijzing naar:",
+       "lastmodifiedat": "Deze pagina is voor het laatst bewerkt op $1 om $2.",
        "viewcount": "Deze pagina is {{PLURAL:$1|één keer|$1 keer}} bekeken.",
        "protectedpage": "Beveiligde pagina",
        "jumpto": "Ga naar:",
        "preview": "Voorvertoning",
        "showpreview": "Bewerking ter controle bekijken",
        "showdiff": "Wijzigingen bekijken",
-       "blankarticle": "<strong>Waarschuwing:</strong> de pagina die u wilt aanmaken is leeg.\nAls u opnieuw op \"{{int:savearticle}}\" klikt, wordt de pagina aangemaakt zonder enige inhoud.",
+       "blankarticle": "<strong>Waarschuwing:</strong> de pagina die u wilt aanmaken is leeg.\nAls u opnieuw op \"$1\" klikt, wordt de pagina aangemaakt zonder enige inhoud.",
        "anoneditwarning": "<strong>Waarschuwing:</strong> u bent niet aangemeld.\nUw IP-adres wordt opgeslagen als u wijzigingen op deze pagina maakt. Wanneer u <strong>[$1 aanmeldt]</strong> of <strong>[$2 een gebruiker aanmaakt]</strong> verschijnen uw bewerkingen onder uw gebruikersnaam, naast andere voordelen.",
        "anonpreviewwarning": "''U bent niet aangemeld.''\n''Door uw bewerking op te slaan wordt uw IP-adres opgeslagen in de paginageschiedenis.''",
-       "missingsummary": "'''Let op:''' u hebt geen bewerkingssamenvatting opgegeven.\nAls u nogmaals op \"{{int:savearticle}}\" klikt wordt de bewerking zonder samenvatting opgeslagen.",
-       "selfredirect": "<strong>Waarschuwing:</strong> U heeft een doorverwijzing gemaakt naar deze pagina. Mogelijk heeft u de verkeerde bestemming voor de doorverwijzing gebruikt, of bewerkt u de verkeerde pagina. Door nogmaals op \"{{int:savearticle}}\" te klikken word de doorverwijzing alsnog aangemaakt.",
+       "missingsummary": "'''Let op:''' u hebt geen bewerkingssamenvatting opgegeven.\nAls u nogmaals op \"$1\" klikt wordt de bewerking zonder samenvatting opgeslagen.",
+       "selfredirect": "<strong>Waarschuwing:</strong> U heeft een doorverwijzing gemaakt naar deze pagina. Mogelijk heeft u de verkeerde bestemming voor de doorverwijzing gebruikt, of bewerkt u de verkeerde pagina. Door nogmaals op \"$1\" te klikken word de doorverwijzing alsnog aangemaakt.",
        "missingcommenttext": "Plaats uw reactie hieronder.",
-       "missingcommentheader": "<strong>Let op:</strong> u hebt geen onderwerp/kop voor deze opmerking opgegeven.\nAls u opnieuw op \"{{int:savearticle}}\" klikt, wordt uw wijziging zonder een onderwerp/kop opgeslagen.",
+       "missingcommentheader": "<strong>Let op:</strong> u hebt geen onderwerp/kop voor deze opmerking opgegeven.\nAls u opnieuw op \"$1\" klikt, wordt uw wijziging zonder een onderwerp/kop opgeslagen.",
        "summary-preview": "Voorvertoning van de bewerkingssamenvatting:",
        "subject-preview": "Voorvertoning van het onderwerp:",
        "previewerrortext": "Er is een fout opgetreden tijdens het weergeven van uw wijzigingen.",
        "editingsection": "Bezig met bewerken van $1 (deelpagina)",
        "editingcomment": "Bezig met bewerken van $1 (nieuw kopje)",
        "editconflict": "Bewerkingsconflict: $1",
-       "explainconflict": "Een andere gebruiker heeft deze pagina bewerkt sinds u met uw bewerking bent begonnen.\nIn het bovenste deel van het venster staat de tekst van de huidige pagina.\nUw bewerking staat in het onderste gedeelte.\nU dient uw bewerkingen in te voegen in de bestaande tekst.\n'''Alleen''' de tekst in het bovenste gedeelte wordt opgeslagen als u op \"{{int:savearticle}}\" klikt.",
+       "explainconflict": "Een andere gebruiker heeft deze pagina bewerkt sinds u met uw bewerking bent begonnen.\nIn het bovenste deel van het venster staat de tekst van de huidige pagina.\nUw bewerking staat in het onderste gedeelte.\nU dient uw bewerkingen in te voegen in de bestaande tekst.\n'''Alleen''' de tekst in het bovenste gedeelte wordt opgeslagen als u op \"$1\" klikt.",
        "yourtext": "Uw tekst",
        "storedversion": "Opgeslagen versie",
        "nonunicodebrowser": "'''Waarschuwing: uw browser kan niet goed overweg met Unicode.'''\nHiermee wordt door de MediaWiki-software rekening gehouden zodat u toch zonder problemen pagina's kunt bewerken: niet-ASCII tekens worden in het bewerkingsveld weergegeven als hexadecimale codes.",
        "post-expand-template-argument-warning": "Waarschuwing: deze pagina bevat ten minste een sjabloonparameter met een te grote transclusiegrootte.\nDeze parameters zijn weggelaten.",
        "post-expand-template-argument-category": "Pagina's die missende sjabloonparameters bevatten",
        "parser-template-loop-warning": "Er is een kringloop in sjablonen geconstateerd: [[$1]]",
+       "template-loop-category": "Pagina's met sjablonen die zichzelf insluiten",
+       "template-loop-category-desc": "De pagina bevat een sjabloon dat zichzelf insluit, bijvoorbeeld een sjabloon dat zichzelf recursief aanroept.",
        "parser-template-recursion-depth-warning": "De recursiediepte voor sjablonen is overschreden ($1)",
        "language-converter-depth-warning": "De dieptelimiet voor de taalconvertor is overschreden ($1)",
        "node-count-exceeded-category": "Pagina's waar het maximaal aantal nodes is overschreden",
        "search-file-match": "(komt overeen met de inhoud van het bestand)",
        "search-suggest": "Bedoelde u: $1",
        "search-rewritten": "De resultaten voor $1 worden weergegeven. Zoek in plaats daarvan naar $2.",
-       "search-interwiki-caption": "Zusterprojecten",
+       "search-interwiki-caption": "Resultaten van zusterprojecten",
        "search-interwiki-default": "Resultaten van $1:",
        "search-interwiki-more": "(meer)",
        "search-interwiki-more-results": "meer resultaten",
        "recentchanges-label-plusminus": "Deze paginagrootte is met dit aantal bytes gewijzigd",
        "recentchanges-legend-heading": "<strong>Legenda:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (zie ook de [[Special:NewPages|lijst met nieuwe pagina's]])",
-       "recentchanges-legend-plusminus": "(''±123'')",
+       "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "Weergeven",
        "rcfilters-activefilters": "Actieve filters",
+       "rcfilters-quickfilters": "Opgeslagen filterinstellingen",
+       "rcfilters-quickfilters-placeholder-title": "Nog geen koppelingen opgeslagen",
+       "rcfilters-savedqueries-defaultlabel": "Opgeslagen filters",
+       "rcfilters-savedqueries-rename": "Hernoemen",
+       "rcfilters-savedqueries-setdefault": "Als standaard instellen",
+       "rcfilters-savedqueries-unsetdefault": "Als standaard verwijderen",
+       "rcfilters-savedqueries-remove": "Verwijderen",
+       "rcfilters-savedqueries-new-name-label": "Naam",
+       "rcfilters-savedqueries-apply-label": "Instellingen opslaan",
+       "rcfilters-savedqueries-cancel-label": "Annuleren",
+       "rcfilters-savedqueries-add-new-title": "Huidige filter instellingen opslaan",
        "rcfilters-restore-default-filters": "Standaard filters terugzetten",
        "rcfilters-clear-all-filters": "Alle filters verwijderen",
        "rcfilters-search-placeholder": "Filter recente wijzigingen (blader of begin met intypen)",
        "rcfilters-empty-filter": "Geen actieve filters. Alle bijdragen worden weergeven.",
        "rcfilters-filterlist-title": "Filters",
        "rcfilters-filterlist-whatsthis": "Wat is dit?",
-       "rcfilters-filterlist-feedbacklink": "Geef feedback op de nieuwe (beta) filters",
+       "rcfilters-filterlist-feedbacklink": "Geef terugkoppeling op de nieuwe (beta)filters",
        "rcfilters-highlightbutton-title": "Resultaten markeren",
        "rcfilters-highlightmenu-title": "Kies een kleur",
        "rcfilters-highlightmenu-help": "Selecteer een kleur om deze eigenschap uit te lichten",
        "rcfilters-filterlist-noresults": "Geen filters gevonden",
        "rcfilters-noresults-conflict": "Geen resultaten gevonden omdat de zoekcriteria met elkaar conflicteren",
-       "rcfilters-filtergroup-registration": "Gebruikers-registratie",
+       "rcfilters-state-message-subset": "Dit filter heeft geen effect omdat de resultaten ook worden gefilterd door {{PLURAL:$2|het|de}} bredere {{PLURAL:$2|filter|filters}} (probeer ze te markeren om ze te onderscheiden): $1",
+       "rcfilters-state-message-fullcoverage": "Het selecteren van alle filters in deze groep is hetzelfde als geen filter selecteren, waardoor dit filter geen effect heeft. De groep bevat: $1",
+       "rcfilters-filtergroup-registration": "Gebruikersregistratie",
        "rcfilters-filter-registered-label": "Geregistreerd",
        "rcfilters-filter-registered-description": "Ingelogde gebruikers.",
        "rcfilters-filter-unregistered-label": "Niet-geregistreerd",
        "rcfilters-filter-unregistered-description": "Gebruikers die niet zijn ingelogd.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Het \"Niet geregistreerd\" filter is niet actief, omdat het effect ongedaan wordt gemaakt door de volgende {{PLURAL:$2|filter|filters}} die alleen geregistreerde gebruikers {{PLURAL:$2|vindt|vinden}}: $1",
-       "rcfilters-filtergroup-authorship": "Bewerken auteurschap",
-       "rcfilters-filter-editsbyself-label": "Uw eigen bewerkingen",
-       "rcfilters-filter-editsbyself-description": "Bewerkingen door u.",
-       "rcfilters-filter-editsbyother-label": "Bewerkingen door anderen",
-       "rcfilters-filter-editsbyother-description": "Bewerkingen die gemaakt zijn door andere gebruikers (niet door uzelf).",
-       "rcfilters-filtergroup-userExpLevel": "Gebruikerservarings niveau (alleen voor geregistreerde gebruikers)",
+       "rcfilters-filtergroup-authorship": "Auteur van de bijdragen",
+       "rcfilters-filter-editsbyself-label": "Uw eigen wijzigingen",
+       "rcfilters-filter-editsbyself-description": "Uw eigen bijdragen.",
+       "rcfilters-filter-editsbyother-label": "Wijzigingen door anderen",
+       "rcfilters-filter-editsbyother-description": "Alle wijzigingen behalve die door u gemaakt zijn.",
+       "rcfilters-filtergroup-userExpLevel": "Ervaringsniveau (alleen voor geregistreerde gebruikers)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Nieuwkomers",
        "rcfilters-filter-user-experience-level-newcomer-description": "Minder dan 10 bewerkingen en 4 dagen van activiteit.",
        "rcfilters-filter-user-experience-level-learner-label": "Leerlingen",
-       "rcfilters-filter-user-experience-level-learner-description": "Meer dagen van activiteit en bewerkingen dan \"Nieuwkomers\", maar minder dan \"Ervaren gebruikers\".",
+       "rcfilters-filter-user-experience-level-learner-description": "Meer ervaring dan \"nieuwkomers\", maar minder dan \"ervaren gebruikers\".",
        "rcfilters-filter-user-experience-level-experienced-label": "Ervaren gebruikers",
        "rcfilters-filter-user-experience-level-experienced-description": "Meer dan 30 dagen van activiteit en 500 bewerkingen.",
        "rcfilters-filtergroup-automated": "Automatische bijdragen",
        "rcfilters-filter-bots-description": "De wijzigingen van geautomatiseerde hulpmiddelen.",
        "rcfilters-filter-humans-label": "Menselijk (geen bot)",
        "rcfilters-filter-humans-description": "Bewerkingen door menselijke bewerkers.",
+       "rcfilters-filtergroup-reviewstatus": "Beoordelingsstatus",
        "rcfilters-filter-patrolled-label": "Gecontroleerd",
        "rcfilters-filter-patrolled-description": "Bewerkingen gemarkeerd als gecontroleerd.",
        "rcfilters-filter-unpatrolled-label": "Niet gecontroleerd",
        "rcfilters-filter-minor-description": "Bewerkingen die door de bewerker zijn gelabeld als klein.",
        "rcfilters-filter-major-label": "Geen kleine bewerking",
        "rcfilters-filter-major-description": "Bewerkingen niet gelabeld als klein.",
+       "rcfilters-filtergroup-watchlist": "Gevolgde pagina's",
+       "rcfilters-filter-watchlist-watched-label": "Op de volglijst",
+       "rcfilters-filter-watchlist-watched-description": "Wijzigingen aan pagina's op uw volglijst.",
+       "rcfilters-filter-watchlist-watchednew-label": "Nieuwe volglijstwijzigingen",
+       "rcfilters-filter-watchlist-watchednew-description": "Wijzigingen aan pagina's die op uw volglijst staan, die u nog niet hebt bezocht sinds de wijziging.",
+       "rcfilters-filter-watchlist-notwatched-label": "Niet op de volglijst",
+       "rcfilters-filter-watchlist-notwatched-description": "Alles behalve wijzigingen aan pagina's die op uw volglijst staan.",
        "rcfilters-filtergroup-changetype": "Soort wijziging",
        "rcfilters-filter-pageedits-label": "Paginabewerkingen",
-       "rcfilters-filter-pageedits-description": "Wijzigingen aan de wiki inhoud, discussies, categorie beschrijvingen....",
+       "rcfilters-filter-pageedits-description": "Wijzigingen aan de wiki inhoud, discussies, categorie beschrijvingen",
        "rcfilters-filter-newpages-label": "Nieuwe pagina's",
        "rcfilters-filter-newpages-description": "Bewerkingen die een nieuwe pagina aanmaken.",
-       "rcfilters-filter-categorization-label": "Categorie wijzigingen",
-       "rcfilters-filter-categorization-description": "Categorisatie van pagina's tonen",
+       "rcfilters-filter-categorization-label": "Categoriewijzigingen",
+       "rcfilters-filter-categorization-description": "Categorisatie van pagina's tonen.",
        "rcfilters-filter-logactions-label": "Geregistreerde acties",
-       "rcfilters-filter-logactions-description": "Administratieve handelingen, account creaties, pagina verwijderingen, uploads....",
+       "rcfilters-filter-logactions-description": "Administratieve handelingen, account creaties, pagina verwijderingen, uploads…",
+       "rcfilters-hideminor-conflicts-typeofchange": "Bepaalde soorten wijzigingen kunnen niet worden aangemerkt als \"klein\", dus dit filter is in conflict met de volgende soorten wijzigingenfilters: $1",
+       "rcfilters-filtergroup-lastRevision": "Laatste versie",
+       "rcfilters-filter-lastrevision-label": "Laatste versie",
+       "rcfilters-filter-lastrevision-description": "De meest recente wijziging aan de pagina.",
+       "rcfilters-filter-previousrevision-label": "Eerdere versies",
+       "rcfilters-filter-previousrevision-description": "Alle wijzigingen die niet de meest recente wijziging op de pagina zijn.",
+       "rcfilters-filter-excluded": "Uitgesloten",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:niet</strong> $1",
+       "rcfilters-view-tags": "Labels",
        "rcnotefrom": "Wijzigingen sinds <strong>$3 om $4</strong> (maximaal <strong>$1</strong> {{PLURAL:$1|wijziging|wijzigingen}}).",
        "rclistfromreset": "Datum selectie opnieuw instellen",
        "rclistfrom": "Wijzigingen bekijken vanaf $3 $2",
-       "rcshowhideminor": "Kleine bewerkingen $1",
+       "rcshowhideminor": "kleine bewerkingen $1",
        "rcshowhideminor-show": "weergeven",
        "rcshowhideminor-hide": "verbergen",
        "rcshowhidebots": "bots $1",
        "rcshowhidecategorization": "paginacategorisatie $1",
        "rcshowhidecategorization-show": "weergeven",
        "rcshowhidecategorization-hide": "Verbergen",
-       "rclinks": "De $1 laatste wijzigingen bekijken in de laatste $2 dagen<br />$3",
+       "rclinks": "De $1 laatste wijzigingen bekijken in de laatste $2 dagen",
        "diff": "wijz",
        "hist": "gesch",
        "hide": "verbergen",
        "unusedcategoriestext": "Hieronder staan categorieën die zijn aangemaakt, maar door geen enkele pagina of andere categorie gebruikt worden.",
        "notargettitle": "Geen doelpagina",
        "notargettext": "U hebt niet opgegeven voor welke pagina of gebruiker u deze handeling wilt uitvoeren.",
-       "nopagetitle": "Te hernoemen pagina bestaat niet",
+       "nopagetitle": "De doelpagina bestaat niet",
        "nopagetext": "De doelpagina die u hebt opgegeven bestaat niet.",
        "pager-newer-n": "{{PLURAL:$1|1 nieuwere|$1 nieuwere}}",
        "pager-older-n": "{{PLURAL:$1|1 oudere|$1 oudere}}",
        "enotif_body_intro_moved": "De pagina $1 op {{SITENAME}} is hernoemd door {{GENDER:$2|$2}} op $PAGEEDITDATE. Zie $3 voor de huidige versie.",
        "enotif_body_intro_restored": "De pagina $1 op {{SITENAME}} is teruggeplaatst door {{GENDER:$2|$2}} op $PAGEEDITDATE. Zie $3 voor de huidige versie.",
        "enotif_body_intro_changed": "De pagina $1 op {{SITENAME}} is bewerkt door {{GENDER:$2|$2}} op $PAGEEDITDATE. Zie $3 voor de huidige versie.",
-       "enotif_lastvisited": "Zie $1 voor alle wijzigingen sinds uw laatste bezoek.",
-       "enotif_lastdiff": "Ga naar $1 om deze wijziging te bekijken.",
+       "enotif_lastvisited": "Voor alle wijzigingen sinds uw laatste bezoek, zie $1",
+       "enotif_lastdiff": "Om deze wijziging te bekijken, ga naar $1",
        "enotif_anon_editor": "anonieme gebruiker $1",
        "enotif_body": "Beste $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nSamenvatting van de wijziging: $PAGESUMMARY $PAGEMINOREDIT\n\nContactgegevens van de auteur:\nE-mailadres: $PAGEEDITOR_EMAIL\nWiki: $PAGEEDITOR_WIKI\n\nTenzij u deze pagina bezoekt, komen er geen verdere berichten. Als u bent aangemeld, kunt u op uw volglijst voor alle gevolgde pagina's de waarschuwingsinstellingen opschonen.\n\nGroet van uw {{SITENAME}}-waarschuwingssysteem.\n\n--\nU kunt uw e-mailinstellingen wijzigen op:\n{{canonicalurl:{{#special:Preferences}}}}\n\nU kunt uw volglijstinstellingen wijzigen op:\n{{canonicalurl:Special:Watchlist/edit}}\n\nU kunt de pagina van uw volglijst verwijderen via de volgende koppeling:\n$UNWATCHURL\n\nTerugkoppeling en verdere assistentie:\n$HELPPAGE",
        "created": "aangemaakt",
        "log-name-contentmodel": "Wijzigingenlogboek van inhoudsmodel",
        "log-description-contentmodel": "Deze pagina bevat wijzigingen rond het inhoudsmodel van pagina's en pagina's die aangemaakt zijn met een inhoudsmodel anders dan het standaardmodel.",
        "logentry-contentmodel-new": "$1 {{GENDER:$2|maakte}} de pagina $3 aan met behulp van een niet-standaard inhoudsmodel \"$5\"",
-       "logentry-contentmodel-change": "$1 {{GENDER:$2|heeft}} het inhoudsmodel gewijzigd van pagina $3 van \"$4\" in \"$5\"",
+       "logentry-contentmodel-change": "$1 {{GENDER:$2|heeft}} het inhoudsmodel gewijzigd van pagina $3 van \"$4\" naar \"$5\"",
        "logentry-contentmodel-change-revertlink": "terugdraaien",
        "logentry-contentmodel-change-revert": "terugdraaien",
        "protectlogpage": "Beveiligingslogboek",
        "sp-contributions-uploads": "uploads",
        "sp-contributions-logs": "logboeken",
        "sp-contributions-talk": "overleg",
-       "sp-contributions-userrights": "gebruikersrechtenbeheer",
+       "sp-contributions-userrights": "{{GENDER:$1|gebruikersrechtenbeheer}}",
        "sp-contributions-blocked-notice": "Deze gebruiker is op het moment geblokkeerd.\nDe laatste regel uit het blokkeerlogboek wordt hieronder ter referentie weergegeven:",
        "sp-contributions-blocked-notice-anon": "Dit IP-adres is geblokkeerd.\nDe laatste regel uit het blokkeerlogboek wordt hieronder ter referentie weergegeven:",
        "sp-contributions-search": "Zoeken naar bijdragen",
        "autoblocklist-submit": "Zoeken",
        "autoblocklist-legend": "Automatische blokkades tonen",
        "autoblocklist-localblocks": "Lokale {{PLURAL:$1|automatische blokkades}}",
+       "autoblocklist-total-autoblocks": "Totaal aantal autoblokkades: $1",
        "autoblocklist-empty": "De lijst met automatische blokkades is leeg.",
        "autoblocklist-otherblocks": "Andere {{PLURAL:$1|automatische blokkades}}",
        "ipblocklist": "Geblokkeerde gebruikers",
        "tooltip-pt-mycontris": "Overzicht van {{GENDER:|uw}} bijdragen",
        "tooltip-pt-anoncontribs": "Een lijst van bewerkingen gemaakt door dit IP-adres",
        "tooltip-pt-login": "U wordt van harte uitgenodigd om aan te melden, maar dit is niet verplicht",
+       "tooltip-pt-login-private": "U moet zich aanmelden om gebruik te kunnen maken van deze wiki",
        "tooltip-pt-logout": "Afmelden",
        "tooltip-pt-createaccount": "Registreer u vooral en meld u aan. Dit is echter niet vereist.",
        "tooltip-ca-talk": "Overleg over deze pagina",
        "anonymous": "Anonieme {{PLURAL:$1|gebruiker|gebruikers}} van {{SITENAME}}",
        "siteuser": "{{SITENAME}}-gebruiker $1",
        "anonuser": "anonieme {{SITENAME}}-gebruiker $1",
-       "lastmodifiedatby": "Deze pagina is het laatst bewerkt op $1 om $2 door $3.",
+       "lastmodifiedatby": "Deze pagina is voor het laatst bewerkt op $1 om $2 door $3.",
        "othercontribs": "Gebaseerd op werk van $1.",
        "others": "anderen",
        "siteusers": "{{SITENAME}}-{{PLURAL:$2|gebruiker|gebruikers}} $1",
        "newimages-legend": "Bestandsnaam",
        "newimages-label": "Bestandsnaam (of deel daarvan):",
        "newimages-user": "IP-adres of gebruikersnaam",
+       "newimages-newbies": "Alleen de bijdragen van nieuwe gebruikers bekijken",
        "newimages-showbots": "Uploads door bots weergeven",
        "newimages-hidepatrolled": "Gecontroleerde uploads verbergen",
+       "newimages-mediatype": "Mediatype:",
        "noimages": "Er is niets te zien.",
        "gallery-slideshow-toggle": "Miniaturen schakelen",
        "ilsubmit": "Zoeken",
        "bydate": "op datum",
        "sp-newimages-showfrom": "Nieuwe bestanden bekijken vanaf $1 om $2.",
-       "hours-abbrev": "$1u",
+       "hours-abbrev": "$1 u",
        "seconds": "{{PLURAL:$1|$1 seconde|$1 seconden}}",
        "minutes": "{{PLURAL:$1|$1 minuut|$1 minuten}}",
        "hours": "{{PLURAL:$1|$1 uur|$1 uur}}",
        "exif-compression-4": "CCITT Groep 4 faxcodering",
        "exif-copyrighted-true": "Auteursrechtelijk beschermd",
        "exif-copyrighted-false": "Auteursrechtelijke status niet ingesteld",
+       "exif-photometricinterpretation-0": "Zwart en wit (Wit is 0)",
        "exif-photometricinterpretation-1": "Zwart-wit (zwart is 0)",
+       "exif-photometricinterpretation-3": "Palet",
        "exif-unknowndate": "Datum onbekend",
        "exif-orientation-1": "Normaal",
        "exif-orientation-2": "Horizontaal gespiegeld",
        "tags-create-reason": "Reden:",
        "tags-create-submit": "Aanmaken",
        "tags-create-no-name": "U moet een labelnaam opgeven.",
-       "tags-create-invalid-chars": "Labelnamen mogen geen komma's (<code>,</code>) of slashes (<code>/</code>) bevatten.",
+       "tags-create-invalid-chars": "Labelnamen mogen geen komma's (<code>,</code>), sluistekens (<code>|</code>), of slashes (<code>/</code>) bevatten.",
        "tags-create-invalid-title-chars": "Labelnamen mogen geen tekens bevatten die niet gebruikt kunnen worden in paginanamen.",
        "tags-create-already-exists": "Het label \"$1\" bestaat al.",
        "tags-create-warnings-above": "De volgende {{PLURAL:$2|waarschuwing is|waarschuwningen zijn}} opgetreden tijdens het aanmaken van het label \"$1\":",
        "mw-widgets-titleinput-description-redirect": "doorverwijzing naar $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Voeg een categorie toe...",
        "mw-widgets-usersmultiselect-placeholder": "Meer toevoegen...",
+       "date-range-from": "Vanaf datum:",
+       "date-range-to": "Tot datum:",
        "sessionmanager-tie": "Het is niet mogelijk om meerdere authenticatietypen voor verzoeken te combineren: $1.",
        "sessionprovider-generic": "$1-sessies",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "op cookies gebaseerde sessies",
        "rawhtml-notallowed": "&lt;html&gt; tags kunnen alleen op normale pagina's geplaatst worden.",
        "gotointerwiki": "{{SITENAME}} verlaten",
        "gotointerwiki-invalid": "De opgegeven titel is ongeldig.",
-       "gotointerwiki-external": "U staat op het punt om {{SITENAME}} te verlaten en [[$2]] te bezoeken. [[$2]] is een aparte website.\n\n[$1 Klik hier om door te gaan naar $1].",
+       "gotointerwiki-external": "U staat op het punt om {{SITENAME}} te verlaten en [[$2]] te bezoeken. [[$2]] is een aparte website.\n\n'''[$1 Doorgaan naar $1]'''",
        "undelete-cantedit": "U kunt deze pagina niet terug plaatsen omdat u niet het recht hebt om deze pagina te bewerken.",
-       "undelete-cantcreate": "U kunt deze pagina niet terugplaatsen omdat er geen bestaande pagina met deze naam is en u geen toestemming hebt om deze pagina aan te maken."
+       "undelete-cantcreate": "U kunt deze pagina niet terugplaatsen omdat er geen bestaande pagina met deze naam is en u geen toestemming hebt om deze pagina aan te maken.",
+       "pagedata-not-acceptable": "Er is geen overeenkomende indeling gevonden. Ondersteunde MIME-typen: $1",
+       "pagedata-bad-title": "Ongeldige titel: $1."
 }
index 38debcb..7256630 100644 (file)
@@ -33,7 +33,7 @@
        "tog-hideminor": "Gøym småplukk i lista over siste endringar",
        "tog-hidepatrolled": "Gøym patruljerte endringar i lista over siste endringar",
        "tog-newpageshidepatrolled": "Gøym patruljerte sider frå lista over nye sider",
-       "tog-hidecategorization": "Løyn sidekategoriseringa",
+       "tog-hidecategorization": "Gøym kategorisering av sider",
        "tog-extendwatchlist": "Utvid overvakingslista til å vise alle endringane, ikkje berre dei siste",
        "tog-usenewrc": "Grupper endringar etter side i siste endringane og på overvakingslista",
        "tog-numberheadings": "Vis nummererte overskrifter",
@@ -65,7 +65,7 @@
        "tog-watchlistreloadautomatically": "Oppdater overvakingslista automatisk når eit filter vert endra (krev JavaScript)",
        "tog-watchlisthideanons": "Gøym endringar av anonyme brukarar i overvakingslista.",
        "tog-watchlisthidepatrolled": "Gøym patruljerte endringar i overvakingslista",
-       "tog-watchlisthidecategorization": "Løyn sidekategoriseringa",
+       "tog-watchlisthidecategorization": "Gøym kategorisering av sider",
        "tog-ccmeonemails": "Send meg kopi av e-postane eg sender til andre brukarar",
        "tog-diffonly": "Ikkje vis sideinnhaldet under skilnadene mellom versjonane",
        "tog-showhiddencats": "Vis gøymde kategoriar",
        "anontalk": "Diskusjon",
        "navigation": "Navigering",
        "and": "&#32;og",
-       "qbfind": "Finn",
-       "qbbrowse": "Bla gjennom",
-       "qbedit": "Endre",
-       "qbpageoptions": "Denne sida",
-       "qbmyoptions": "Sidene mine",
        "faq": "OSS",
-       "faqpage": "Project:OSS",
        "actions": "Handlingar",
        "namespaces": "Namnerom",
        "variants": "Variantar",
        "edit-local": "Endre lokal skildring",
        "create": "Opprett",
        "create-local": "Legg til lokal skildring",
-       "editthispage": "Endre sida",
-       "create-this-page": "Opprett sida",
        "delete": "Slett",
-       "deletethispage": "Slett denne sida",
-       "undeletethispage": "Attopprett sida",
        "undelete_short": "Attopprett {{PLURAL:$1|éin versjon|$1 versjonar}}",
        "viewdeleted_short": "Vis {{PLURAL:$1|éin sletta versjon|$1 sletta versjonar}}",
        "protect": "Vern",
        "protect_change": "endre",
-       "protectthispage": "Vern denne sida",
        "unprotect": "Endra vern",
-       "unprotectthispage": "Endra vernet av sida",
        "newpage": "Ny side",
-       "talkpage": "Diskuter sida",
        "talkpagelinktext": "Diskusjon",
        "specialpage": "Spesialside",
        "personaltools": "Personlege verktøy",
-       "articlepage": "Vis innhaldsside",
        "talk": "Diskusjon",
        "views": "Visningar",
        "toolbox": "Verktøy",
        "tool-link-userrights": "Endra {{GENDER:$1|brukargrupper}}",
        "tool-link-userrights-readonly": "Syn {{GENDER:$1|brukar}}grupper",
        "tool-link-emailuser": "Send e-post til {{GENDER:$1|brukaren}}",
-       "userpage": "Vis brukarside",
-       "projectpage": "Sjå prosjektsida",
        "imagepage": "Vis filside",
        "mediawikipage": "Vis systemmeldingsside",
        "templatepage": "Vis malside",
        "redirectedfrom": "(Omdirigert frå $1)",
        "redirectpagesub": "Omdirigeringsside",
        "redirectto": "Omdirigering til:",
-       "lastmodifiedat": "Sida vart sist endra $1 kl. $2.",
+       "lastmodifiedat": "Denne sida vart sist endra den $1 kl. $2.",
        "viewcount": "Sida er vist {{PLURAL:$1|éin gong|$1 gonger}}.",
        "protectedpage": "Verna side",
        "jumpto": "Gå til:",
        "resetpass-no-info": "Du må vera innlogga for å få direktetilgang til denne sida.",
        "resetpass-submit-loggedin": "Endra passord",
        "resetpass-submit-cancel": "Avbryt",
-       "resetpass-wrong-oldpass": "Feil mellombels eller noverande passord.\nDu kan allereie ha byta passordet, eller ha bede om å få eit nytt mellombels passord.",
+       "resetpass-wrong-oldpass": "Ugyldig mellombels eller gjeldande passord.\nDu kan ha bytt passordet allereie, eller bede om å få eit nytt mellombels passord.",
+       "resetpass-temp-emailed": "Du logga inn med ein mellombels kode send med e-post.\nFor å fullføra innlogginga lyt du oppgje eit nytt passord her:",
        "resetpass-temp-password": "Mellombels passord:",
        "resetpass-abort-generic": "Passordbytet vart stogga av ei utviding.",
        "resetpass-validity-soft": "Passordet ditt er ikkje gyldig: $1\n\nGjer vel å velja eit nytt passord no, eller klikk «{{int:authprovider-resetpass-skip-label}}» for å endra det seinare.",
        "passwordreset": "Attendestilling av passord",
        "passwordreset-text-one": "Fyll ut dette skjemaet for å attendestilla passordet ditt.",
+       "passwordreset-text-many": "{{PLURAL:$1|Fyll inn eitt av felta for å få eit mellombelspassord gjennom e-post.}}",
        "passwordreset-disabled": "↓Tilbakestilling av passord er ikkje aktivert på denne wikien",
        "passwordreset-emaildisabled": "E-postfunksjonen er slegen av på wikien.",
        "passwordreset-username": "Brukarnamn:",
        "passwordreset-domain": "Domene:",
        "passwordreset-email": "↓E-postadresse:",
        "passwordreset-emailtitle": "↓Kontodetaljar på {{SITENAME}}",
-       "passwordreset-emailtext-ip": "Nokon (sannsynlegvis deg, frå IP-adressa $1) bad om ei påminning for kontodetaljane dine for {{SITENAME}} ($4). {{PLURAL:$3|Den fylgjande brukarkontoen|Dei fylgjande brukarkontoane}} er assosierte med denne e-postadressa:\n\n$2\n\n{{PLURAL:$3|Dette mellombels passordet|Desse mellombels passorda}} vil verta ugilde om {{PLURAL:$5|éin dag|$5 dagar}}.\nDu bør logga inn og velja eit nytt passord no. Om nokon andre enn deg bad om denne påminninga, eller du har kome i hug det opphavlege passordet og ikkje lenger ynskjer å endra det, kan du sjå bort frå denne meldinga og halda fram med å nytta det gamle passordet ditt.",
+       "passwordreset-emailtext-ip": "Nokon (sannsynlegvis deg, frå IP-adressa $1) bad om ei nullstilling av passordet ditt for {{SITENAME}} ($4). {{PLURAL:$3|Denne brukarkontoen|Desse brukarkontoane}} er knytte til denne e-postadressa:\n\n$2\n\n{{PLURAL:$3|Dette mellombels passordet|Desse mellombels passorda}} går ut om {{PLURAL:$5|éin dag|$5 dagar}}.\nDu bør logga inn og velja eit nytt passord no. Om nokon andre enn deg bad om denne nullstillinga eller du no hugsar det opphavlege passordet og ikkje lenger ynskjer å endra det, kan du sjå bort frå denne meldinga og halda fram med å nytta det gamle passordet ditt.",
        "passwordreset-emailtext-user": "Brukaren $1 på {{SITENAME}} bad om ei påminning for kontodetaljane dine for {{SITENAME}} ($4). {{PLURAL:$3|Den fylgjande brukarkontoen|Dei fylgjande brukarkontoane}} er assosierte med denne e-postadressa:\n\n$2\n\n{{PLURAL:$3|Dette mellombels passordet|Desse mellombels passorda}} vil verta ugilde om {{PLURAL:$5|éin dag|$5 dagar}}.\nDu bør logga inn og velja eit nytt passord no. Om nokon andre enn deg bad om denne påminninga, eller du har kome i hug det opphavlege passordet og ikkje lenger ynskjer å endra det, kan du sjå bort frå denne meldinga og halda fram med å nytta det gamle passordet ditt.",
        "passwordreset-emailelement": "↓Brukarnamn: \n$1\n\nMellombels passord: \n$2",
        "passwordreset-emailsentemail": "Ein e-post for attendestilling av passord er vorten send",
        "anoneditwarning": "'''Åtvaring:''' Du er ikkje innlogga.\nIP-adressa di vil verta lagra i den offentlege endringshistorikken til sida. Om du <strong>[$1 loggar inn]</strong> eller <strong>[$2 lagar ein konto]</strong>, vil endringane dine knytast til brukarnamnet ditt, saman med andre fordelar.",
        "anonpreviewwarning": "''Du er ikkje innlogga. Lagrar du vil IP-adressa di verta ført opp i endringshistorikken til denne sida.''",
        "missingsummary": "'''Påminning:''' Du har ikkje skrive noko endringssamandrag. Dersom du trykkjer «Lagre» ein gong til, vert endringa di lagra utan.",
-       "selfredirect": "<strong>Åtvaring:</strong> Du omdirigerer sida til seg sjølv.\nDu kan ha oppgjeve feil mål for omdirigeringa, eller det kan vera at du endrar feil side.\nKlikkar du «{{int:savearticle}}» på nytt vil omdirigeringa opprettast kor som er.",
+       "selfredirect": "<strong>Åtvaring:</strong> Du omdirigerer sida til seg sjølv.\nDu kan ha oppgjeve feil mål for omdirigeringa, eller det kan vera at du endrar feil side.\nKlikkar du «$1» på nytt vil omdirigeringa opprettast kor som er.",
        "missingcommenttext": "Ver venleg og skriv ein kommentar nedanfor.",
-       "missingcommentheader": "'''Påminning:''' Du har ikkje oppgjeve noko emne/overskrift for denne kommentaren.\nDersom du trykkjer «{{int:savearticle}}» ein gong til, vert endringa di lagra utan.",
+       "missingcommentheader": "'''Påminning:''' Du har ikkje oppgjeve noko emne/overskrift for denne kommentaren.\nDersom du trykkjer «$1» ein gong til, vert endringa di lagra utan.",
        "summary-preview": "Førehandsvising av endringssamandraget:",
        "subject-preview": "Førehandsvising av emne/overskrift:",
        "blockedtitle": "Brukaren er blokkert",
        "editingsection": "Endrar $1 (bolk)",
        "editingcomment": "Endrar $1 (ny bolk)",
        "editconflict": "Endringskonflikt: $1",
-       "explainconflict": "Nokon annan har endra teksten sidan du byrja å skrive.\nDen øvste boksen inneheld den noverande teksten.\nSkilnaden mellom den lagra versjonen og din endra versjon er viste under.\nVersjonen som du har endra er i den nedste boksen.\nDu lyt flette endringane dine saman med den noverande teksten.\n'''Berre''' teksten i den øvste tekstboksen vil bli lagra når du klikkar på «{{int:savearticle}}».",
+       "explainconflict": "Nokon annan har endra teksten sidan du byrja å skrive.\nDen øvste boksen inneheld den noverande teksten.\nSkilnaden mellom den lagra versjonen og din endra versjon er viste under.\nVersjonen som du har endra er i den nedste boksen.\nDu lyt flette endringane dine saman med den noverande teksten.\n'''Berre''' teksten i den øvste tekstboksen vil bli lagra når du klikkar på «$1».",
        "yourtext": "Teksten din",
        "storedversion": "Den lagra versjonen",
        "nonunicodebrowser": "'''ÅTVARING: Nettlesaren din støttar ikkje «Unicode».\nFor å omgå problemet blir teikn utanfor ASCII-standarden viste som heksadesimale kodar.'''<br />",
        "right-deletedtext": "Sjå sletta tekst og endringar i høve til sletta versjonar",
        "right-browsearchive": "Søk i sletta sider",
        "right-undelete": "Attopprett sider",
-       "right-suppressrevision": "Sjå og gjenopprett skjulte siderevisjonar",
+       "right-suppressrevision": "Sjå, skjul og vis fram att siderevisjonar frå einkvar brukar",
        "right-suppressionlog": "Sjå private loggar",
        "right-block": "Blokkere andre brukarar frå å redigere",
        "right-blockemail": "Blokkere brukarar frå å sende e-post",
        "right-protect": "Endra vernenivå og verna sider",
        "right-editprotected": "Endre verna sider",
        "right-editinterface": "Redigere brukargrensesnittet",
-       "right-editusercssjs": "Endre andre brukarar sine CSS- og JS-filer",
        "right-editusercss": "Endre andre brukarar sine CSS-filer",
        "right-edituserjs": "Endre andre brukarar sine JS-filer",
        "right-editmyusercss": "Endra eigne CSS-filer",
        "recentchanges-legend-heading": "<strong>Tyding:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (sjå dessutan [[Special:NewPages|lista over nye sider]])",
        "recentchanges-submit": "Vis",
+       "rcfilters-activefilters": "Aktive filter",
+       "rcfilters-quickfilters": "Lagra filterinnstillingar",
+       "rcfilters-quickfilters-placeholder-title": "Ingen lenkjer er lagra enno",
+       "rcfilters-quickfilters-placeholder-description": "For å lagra filterinnstillingane dine og bruka dei på nytt seinare, klikk på bokmerkeikonet i området for aktive filter under.",
+       "rcfilters-savedqueries-defaultlabel": "Lagra filter",
+       "rcfilters-savedqueries-rename": "Gje nytt namn",
+       "rcfilters-savedqueries-new-name-label": "Namn",
+       "rcfilters-savedqueries-apply-label": "Lagra innstillingar",
+       "rcfilters-savedqueries-add-new-title": "Lagra gjeldande filterinnstillingar",
+       "rcfilters-clear-all-filters": "Fjern alle filter",
+       "rcfilters-search-placeholder": "Filtrer siste endringar (gå gjennom liste eller skriv filternamn)",
+       "rcfilters-invalid-filter": "Ugyldig filter",
+       "rcfilters-empty-filter": "Ingen aktive filter. Alle bidrag er viste.",
+       "rcfilters-filterlist-title": "Filter",
+       "rcfilters-filterlist-feedbacklink": "Gje attendemelding på dei nye (beta)filtera",
+       "rcfilters-highlightbutton-title": "Uthev resultat",
+       "rcfilters-highlightmenu-title": "Vel ein farge",
+       "rcfilters-filterlist-noresults": "Fann ingen filter",
+       "rcfilters-filtergroup-registration": "Brukarregistrering",
+       "rcfilters-filter-registered-label": "Registrerte",
+       "rcfilters-filter-registered-description": "Innlogga brukarar.",
+       "rcfilters-filter-unregistered-label": "Uregistrerte",
+       "rcfilters-filter-unregistered-description": "Brukarar som ikkje er innlogga.",
+       "rcfilters-filtergroup-authorship": "Forfattar",
+       "rcfilters-filter-editsbyself-label": "Endringar av deg",
+       "rcfilters-filter-editsbyself-description": "Dine eigne bidrag.",
+       "rcfilters-filter-editsbyother-label": "Endringar av andre",
+       "rcfilters-filter-editsbyother-description": "Alle endringar utanom dine eigne.",
+       "rcfilters-filtergroup-userExpLevel": "Røynslenivå (berre for registrerte brukarar)",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Nykomarar",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Færre enn 10 endringar og 4 dagar med aktivitet.",
+       "rcfilters-filter-user-experience-level-learner-label": "Nybyrjarar",
+       "rcfilters-filter-user-experience-level-learner-description": "Meir røynsle enn «Nykomarar», men mindre enn «Røynde brukarar».",
+       "rcfilters-filter-user-experience-level-experienced-label": "Røynde brukarar",
+       "rcfilters-filter-user-experience-level-experienced-description": "Meir enn 30 dagar med aktivitet og 500 endringar.",
+       "rcfilters-filter-bots-description": "Endringar gjorde med automatiske verktøy.",
+       "rcfilters-filter-humans-label": "Menneske (ikkje robot)",
+       "rcfilters-filter-patrolled-description": "Endringar merkte som patruljerte.",
+       "rcfilters-filter-unpatrolled-description": "Endringar ikkje merkte som patruljerte.",
+       "rcfilters-filter-minor-label": "Småplukk",
+       "rcfilters-filter-major-label": "Ikkje småplukk",
+       "rcfilters-filter-pageedits-label": "Sideendringar",
+       "rcfilters-filter-pageedits-description": "Endringar av wikiinnhald, diskusjonar, kategoriskildringar ...",
+       "rcfilters-filter-newpages-label": "Sideopprettingar",
+       "rcfilters-filter-categorization-label": "Kategoriendringar",
+       "rcfilters-filter-categorization-description": "Oppføringar av sider som vert lagde til eller fjerna frå katerogiar.",
+       "rcfilters-filter-logactions-label": "Loggførte handlingar",
        "rcnotefrom": "Nedanfor er endringane gjorde sidan <strong>$2</strong> viste (opp til <strong>$1</strong> stykke)",
        "rclistfrom": "Vis nye endringar sidan $3 $2",
        "rcshowhideminor": "$1 småplukk",
        "rcshowhidemine-hide": "Gøym",
        "rcshowhidecategorization": "$1 kategorisering av sider",
        "rcshowhidecategorization-show": "Vis",
-       "rclinks": "Vis dei siste $1 endringane dei siste $2 dagane<br />$3",
+       "rcshowhidecategorization-hide": "Gøym",
+       "rclinks": "Vis dei siste $1 endringane dei siste $2 dagane",
        "diff": "skil",
        "hist": "hist",
        "hide": "Gøym",
        "newpageletter": "n",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|Éin brukar|$1 brukarar}} overvakar]",
-       "rc_categories": "Avgrens til kategoriar (skilde med «|»)",
+       "rc_categories": "Avgrens til kategoriar (skil med «|»):",
        "rc_categories_any": "Alle",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte}} etter endringa",
        "newsectionsummary": "/* $1 */ ny bolk",
        "recentchangeslinked-summary": "Dette er ei liste over nylege endringar som er gjorde på sider som vert lenkja til frå ei oppgjeven side (eller på medlemer av ein oppgjeven kategori). Sider på [[Special:Watchlist|overvakingslista di]] er '''utheva'''.",
        "recentchangeslinked-page": "Sidenamn:",
        "recentchangeslinked-to": "Vis endringar på sider som lenkjar til den gitte sida i staden",
+       "recentchanges-page-added-to-category": "[[:$1]] vart lagd til kategorien",
+       "recentchanges-page-removed-from-category": "[[:$1]] fjerna frå kategori",
        "upload": "Last opp fil",
        "uploadbtn": "Last opp fil",
        "reuploaddesc": "Attende til opplastingsskjemaet.",
        "upload-http-error": "Ein HTTP-feil oppstod: $1",
        "upload-copy-upload-invalid-domain": "Kopiopplastingar er ikkje tilgjengelege frå dette domenet.",
        "upload-dialog-button-cancel": "Bryt av",
+       "upload-form-label-infoform-name": "Namn",
+       "upload-form-label-usage-filename": "Filnamn",
+       "upload-form-label-infoform-categories": "Kategoriar",
        "backend-fail-stream": "Kunne ikkje strøyma fila «$1».",
        "backend-fail-backup": "Kunne ikkje tryggingskopiera fila «$1».",
        "backend-fail-notexists": "Fila $1 finst ikkje.",
        "unusedimages": "Ubrukte filer",
        "wantedcategories": "Etterspurde kategoriar",
        "wantedpages": "Etterspurde sider",
+       "wantedpages-summary": "Liste over uoppretta sider med flest innkomande lenkjer, unnateke sider som berre er lenkja frå omdirigeringar. For ei liste over uoppretta sider som er lenkja frå omdirigeringar, sjå [[{{#special:BrokenRedirects}}|lista over uverksame omdirigeringar]].",
        "wantedpages-badtitle": "Ugyldig tittel mellom resultata: $1",
        "wantedfiles": "Etterspurde filer",
        "wantedfiletext-cat": "Desse filene er nytta men finst ikkje. Filer frå utannettstadlege samlingar kan vera lista opp sjølv om dei finst. Slike falske positivar vert <del>strokne ut</del>. Sider som nyttar filer som ikkje finst vert lista opp i [[:$1]].",
        "apisandbox-submit": "Gjer førespurnad",
        "apisandbox-reset": "Tøm",
        "apisandbox-examples": "Døme",
+       "apisandbox-dynamic-parameters-add-placeholder": "Parameternamn",
        "apisandbox-results": "Utfall",
        "apisandbox-request-url-label": "Førespurd URL:",
        "apisandbox-request-time": "Førespurnadstid: $1",
        "undeleteviewlink": "syn",
        "undeleteinvert": "Inverter val",
        "undeletecomment": "Årsak:",
-       "undeletedrevisions": "{{PLURAL:$1|Éin versjon|$1 versjonar}} attoppretta.",
-       "undeletedrevisions-files": "{{PLURAL:$1|Éin versjon|$1 versjonar}} og {{PLURAL:$2|éi fil|$2 filer}} er attoppretta",
-       "undeletedfiles": "{{PLURAL:$1|Éi fil|$1 filer}} er attoppretta",
        "cannotundelete": "Attopprettinga gjekk ikkje:\n$1",
        "undeletedpage": "'''$1 er attoppretta'''\n\nSjå [[Special:Log/delete|sletteloggen]] for eit oversyn over sider som nyleg er sletta eller attoppretta.",
        "undelete-header": "Sjå [[Special:Log/delete|sletteloggen]] for dei sist sletta sidene.",
        "sp-contributions-username": "IP-adresse eller brukarnamn:",
        "sp-contributions-toponly": "Vis berre endringar som er gjeldande versjonar",
        "sp-contributions-newonly": "Berre vis endringar som oppretta ei side",
+       "sp-contributions-hideminor": "Gøym småplukk",
        "sp-contributions-submit": "Søk",
        "whatlinkshere": "Lenkjer hit",
        "whatlinkshere-title": "Sider som har lenkje til «$1»",
        "confirmrecreate": "Brukaren «[[User:$1|$1]]» ([[User talk:$1|brukardiskusjon]]) sletta denne sida medan du endra henne, og gav denne grunnen: ''$2''\n\nDu må stadfeste at du verkeleg vil nyopprette denne sida.",
        "confirmrecreate-noreason": "Brukaren [[User:$1|$1]] ([[User talk:$1|diskusjon]]) sletta sida etter at du byrja å endra henne. Stadfest at du verkeleg ynskjer å oppretta sida på nytt.",
        "recreate": "Attopprett",
+       "confirm-purge-title": "Slett mellomlagring av sida",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Vil du slette tenarane sin mellomlagra versjon av denne sida?",
        "confirm-purge-bottom": "Reinsing av ei side slettar mellomlageret og tvingar fram den nyaste versjonen.",
        "logentry-newusers-create2": "Brukarkontoen $3 vart {{GENDER:$2|oppretta}} av $1",
        "logentry-newusers-byemail": "Brukarkontoen $3 vart {{GENDER:$2|oppretta}} av $1 og passord vart sendt med e-post",
        "logentry-newusers-autocreate": "Brukarkontoen $1 vart {{GENDER:$2|oppretta}} av seg sjølv",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|flytte}} verneinnstillingar frå $4 til $3",
        "logentry-protect-unprotect": "$1 {{GENDER:$2|fjerna}} vern av $3",
        "logentry-protect-protect": "$1 {{GENDER:$2|verna}} $3 $4",
        "logentry-rights-rights": "$1 {{GENDER:$2|endra}} gruppemedlemskap for $3 frå $4 til $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|lasta opp}} $3",
        "log-name-tag": "Merkelogg",
        "rightsnone": "(ingen)",
+       "rightslogentry-temporary-group": "$1 (mellombels, fram til $2)",
        "feedback-adding": "Legg til attendemeldinga til sida...",
        "feedback-bugcheck": "Bra! No lyt du berre sjå etter om han er ein av dei [$1 kjende feila].",
        "feedback-bugnew": "Eg såg etter. Rapporter ein ny feil",
        "special-characters-group-telugu": "Telugu",
        "special-characters-group-sinhala": "Singalesisk",
        "special-characters-group-gujarati": "Gujarati",
+       "mw-widgets-dateinput-no-date": "Ingen dato er vald",
        "mw-widgets-dateinput-placeholder-day": "ÅÅÅÅ-MM-DD",
        "mw-widgets-dateinput-placeholder-month": "ÅÅÅÅ-MM",
        "mw-widgets-titleinput-description-new-page": "sida finst ikkje enno",
        "mw-widgets-titleinput-description-redirect": "omdiriger til $1",
+       "date-range-from": "Frå dato:",
+       "date-range-to": "Til dato:",
        "randomrootpage": "Tilfeldig rotsida",
        "log-action-filter-rights": "Type endring av rettar:",
        "authmanager-userdoesnotexist": "Brukarkontoen «$1» er ikkje oppretta.",
+       "authmanager-provider-temporarypassword": "Mellombels passord",
        "userjsispublic": "Merk: JavaScript-undersider bør ikkje innehalda konfidensielle data sidan dei er synlege for andre brukarar.",
        "usercssispublic": "Merk: CSS-undersider bør ikkje innehalda konfidensielle data sidan dei er synlege for andre brukarar."
 }
index 7b3241a..41516fd 100644 (file)
        "rcshowhideminor": "$1 minori modifikos",
        "rcshowhideanons": "$1 anonimi useres",
        "rcshowhidemine": "$1 men modifikos",
-       "rclinks": "Montra lasti $1 chanjes in lasti $2 dies<br />$3",
+       "rclinks": "Montra lasti $1 chanjes in lasti $2 dies",
        "hist": "hist",
        "hide": "Kasha",
        "show": "Montra",
index b3facd6..4b927c6 100644 (file)
        "yourpasswordagain": "Tlanya ditlhaka-tša-siphiri gape:",
        "login": "Tsena",
        "nav-login-createaccount": "Tsena / Tlhola tšhupaleloko (''account'')",
-       "userlogin": "Tsena / tlhola tšhupaleloko (''account'')",
-       "userloginnocreate": "Tsena",
        "logout": "Etšwa/Tswalela",
        "userlogout": "Etšwa/Tswalela",
        "notloggedin": "Ga wa tsena",
-       "nologin": "A  o nale sedi ya go tsena? '''$1'''.",
-       "nologinlink": "Bula tšhupaleloko (''account'')",
        "createaccount": "Bula tšhupaleloko",
-       "gotaccount": "O šetše o nale tšhupaleloko? '''$1'''.",
-       "gotaccountlink": "Tsena",
-       "userlogin-resetlink": "O lebetše dintlha tšago tsena?",
        "createaccountmail": "Re šomiše ditlhaka-tša-siphiri tša sebakanyana tšeo re di kgethilego re di romele ka e-mail",
-       "createaccountreason": "Lebaka:",
        "badretype": "Ditlhaka-tša-siphiri tše o di šomišitšego ga di swane.",
        "noname": "Gawa fana ka leina la mošomiši la go loka.",
        "loginsuccesstitle": "O tsene",
        "rcshowhidepatr": "$1 diphetogo tše ''patrolled''",
        "rcshowhidemine": "$1 diphetogo tsa ka",
        "rcshowhidemine-hide": "Fihla",
-       "rclinks": "Bontšha diphetogo tša bofelo tše $1 matšatšing a  $2  a bofelo <br />$3",
+       "rclinks": "Bontšha diphetogo tša bofelo tše $1 matšatšing a  $2  a bofelo",
        "diff": "phapang",
        "hist": "histori",
        "hide": "Fihla",
index 5c04f76..1ebb171 100644 (file)
        "preview": "Previsualizar",
        "showpreview": "Previsualizar",
        "showdiff": "Veire los cambiaments",
-       "blankarticle": "<strong>Atencion :</strong> La pagina que creatz es voida.\nSe clicatz tornarmai sus « {{int:savearticle}} », la pagina serà creada sens cap de contengut.",
+       "blankarticle": "<strong>Atencion :</strong> La pagina que creatz es voida.\nSe clicatz tornarmai sus « $1 », la pagina serà creada sens cap de contengut.",
        "anoneditwarning": "<strong>Atencion :<strong> sètz pas connectat.\nVòstra adreça IP serà visibla per tot lo monde se fasètz de modificacions. Se <strong>[$1 vos connectatz]</strong> o <strong>[$2 creatz un compte]</strong>, vòstras modificacions seràn atribuidas a vòstre nom d’utilizaire, entre autres avantatges.",
        "anonpreviewwarning": "''Sètz pas identificat. Salvar enregistrarà vòstra adreça IP dins l’istoric de las modificacions de la pagina.''",
        "missingsummary": "'''Atencion :''' avètz pas modificat lo resumit de vòstra modificacion. Se clicatz tornarmai sul boton « Salvar », lo salvament serà fait sens avertiment mai.",
        "right-editsemiprotected": "Modificar las paginas protegidas amb « {{int:protect-level-autoconfirmed}} »",
        "right-editcontentmodel": "Modificar lo modèl de contengut d’una pagina",
        "right-editinterface": "Modificar l'interfàcia d'utilizaire",
-       "right-editusercssjs": "Modificar los fichièrs CSS e JS d'autres utilizaires",
        "right-editusercss": "Modificar los fichièrs CSS d'autres utilizaires",
        "right-edituserjs": "Modificar los fichièrs JS d'autres utilizaires",
        "right-editmyusercss": "Modificar vòstres pròpris fichièrs CSS utilizaire",
        "rcshowhidecategorization": "$1 la categorizacion de las paginas",
        "rcshowhidecategorization-show": "Afichar",
        "rcshowhidecategorization-hide": "Amagar",
-       "rclinks": "Afichar los $1 darrièrs cambiaments efectuats al cors dels $2 darrièrs jorns<br />$3.",
+       "rclinks": "Afichar los $1 darrièrs cambiaments efectuats al cors dels $2 darrièrs jorns",
        "diff": "dif",
        "hist": "ist",
        "hide": "amagar",
        "undeleteviewlink": "veire",
        "undeleteinvert": "Inversar la seleccion",
        "undeletecomment": "Motiu :",
-       "undeletedrevisions": "{{PLURAL:$1|1 revision restablida|$1 revisions restablidas}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 revision|$1 revisions}} e {{PLURAL:$2|1 fichièr restablit|$2 fichièrs restablits}}",
-       "undeletedfiles": "$1 {{PLURAL:$1|fichièr restablit|fichièrs restablits}}",
        "cannotundelete": "Certanas o totas las restitucions an fracassat :\n$1",
        "undeletedpage": "<strong>La pagina $1 es estada restablida</strong>.\n\nConsultatz l’[[Special:Log/delete|istoric de las supressions]] per veire la lista de las supressions e dels restabliments recents.",
        "undelete-header": "Consultatz l’[[Special:Log/delete|istoric de las supressions]] per veire las paginas recentament suprimidas.",
index e195566..109a4c8 100644 (file)
        "rcshowhidemine": "$1 minun kohendukset",
        "rcshowhidemine-show": "Ozuta",
        "rcshowhidemine-hide": "Peitä",
-       "rclinks": "Ozuta jälgimäzet $1 muutostu jälgimäzen $2 päivän aijannu<br />$3",
+       "rclinks": "Ozuta jälgimäzet $1 muutostu jälgimäzen $2 päivän aijannu",
        "diff": "erot",
        "hist": "Histourii",
        "hide": "Peitä",
index 5efeb94..9c862ad 100644 (file)
        "preview": "ସାଇତିବା ଆଗରୁ ଦେଖନ୍ତୁ",
        "showpreview": "ଦେଖଣା [Preview]",
        "showdiff": "ବଦଳଗୁଡ଼ିକ ଦେଖାଇବେ",
-       "blankarticle": "<strong>ଚେତାବନୀ:</strong> ଆପଣ ସମ୍ପାଦନା କରୁଥିବା ଏହି ପୃଷ୍ଠାଟି ଫାଙ୍କା ଅଛି ।\nଯଦି ଆପଣ \"{{int:savearticle}}\" ଉପରେ ଆଉଥରେ କ୍ଲିକ କରନ୍ତି, ପୃଷ୍ଠାଟି କୌଣସି ବିଷୟବସ୍ତୁ ନଥାଇ ତିଆରି ହୋଇଯିବ ।",
+       "blankarticle": "<strong>ଚେତାବନୀ:</strong> ଆପଣ ସମ୍ପାଦନା କରୁଥିବା ଏହି ପୃଷ୍ଠାଟି ଫାଙ୍କା ଅଛି ।\nଯଦି ଆପଣ \"$1\" ଉପରେ ଆଉଥରେ କ୍ଲିକ କରନ୍ତି, ପୃଷ୍ଠାଟି କୌଣସି ବିଷୟବସ୍ତୁ ନଥାଇ ତିଆରି ହୋଇଯିବ ।",
        "anoneditwarning": "<strong>ସାବଧାନ:</strong> ଆପଣ ଲଗ-ଇନ କରିନାହାନ୍ତି । ଅଧିକ ସମ୍ପାଦନା କଲେ ଆପଣଙ୍କ IP Address ଟି ସମସ୍ତଙ୍କୁ ଦେଖାଯିବ । <strong>[$1 ଲଗ ଇନ କଲେ]</strong> କିମ୍ବା <strong>[$2 ନୂଆ ଖାତାଟିଏ ତିଆରି କଲେ]</strong>, ଆପଣଙ୍କ ସମ୍ପାଦନାର ଶ୍ରେୟ ଅନ୍ୟାନ୍ୟ ସୁବିଧା ସହିତ ଆପଣଙ୍କ ଇଉଜର ନାମରେ ଦିଆହେବ ।",
        "anonpreviewwarning": "''ଆପଣ ଲଗ ଇନ କରି ନାହାନ୍ତି । ବଦଳକରି ସାଇତିଲେ ଆପଣଙ୍କର IP ଠିକଣା ଏହି ପୃଷ୍ଠାର ଇତିହାସରେ ସାଇତା ହୋଇଯିବ ।''",
-       "missingsummary": "'''ଚେତାବନୀ:''' ଆପଣ ଏକ ସମ୍ପାଦନା ସାରକଥା ଦେଇନାହାନ୍ତି ।\nଯଦି ଆପଣ \"{{int:savearticle}}\"ରେ ଆଉଥରେ କ୍ଲିକ କରନ୍ତି, ତେବେ ଆପଣଙ୍କ ବଦଳ ସାରକଥା ବିନା ସାଇତା ହୋଇଯିବ ।",
-       "selfredirect": "<strong>ସାବଧନ :</strong> ଆପଣ ଏହି ପୃଷ୍ଠାଟିକୁ ତା ମଧ୍ୟକୁ ଲେଇଟାଉଛନ୍ତି । ଆପଣ ବୋଧ ହୁଏ ଭୁଲ ଲକ୍ଷସ୍ଥଳ ଦେଇଛନ୍ତି କିମ୍ବା ଭୁଲ ପୃଷ୍ଠଟିକୁ ବଦଳାଉଛନ୍ତି । \nଆପଣ ଯଦି \"{{int:savearticle}}\"ରେ ଆଉଥରେ କ୍ଲିକ କରିବେ ତେବେ ଲେଉଟାଣିଟି ଯାହା ହେଲେ ସାଇତା ହେଇଯିବା ।",
+       "missingsummary": "'''ଚେତାବନୀ:''' ଆପଣ ଏକ ସମ୍ପାଦନା ସାରକଥା ଦେଇନାହାନ୍ତି ।\nଯଦି ଆପଣ \"$1\"ରେ ଆଉଥରେ କ୍ଲିକ କରନ୍ତି, ତେବେ ଆପଣଙ୍କ ବଦଳ ସାରକଥା ବିନା ସାଇତା ହୋଇଯିବ ।",
+       "selfredirect": "<strong>ସାବଧନ :</strong> ଆପଣ ଏହି ପୃଷ୍ଠାଟିକୁ ତା ମଧ୍ୟକୁ ଲେଇଟାଉଛନ୍ତି । ଆପଣ ବୋଧ ହୁଏ ଭୁଲ ଲକ୍ଷସ୍ଥଳ ଦେଇଛନ୍ତି କିମ୍ବା ଭୁଲ ପୃଷ୍ଠଟିକୁ ବଦଳାଉଛନ୍ତି । \nଆପଣ ଯଦି \"$1\"ରେ ଆଉଥରେ କ୍ଲିକ କରିବେ ତେବେ ଲେଉଟାଣିଟି ଯାହା ହେଲେ ସାଇତା ହେଇଯିବା ।",
        "missingcommenttext": "ଦୟାକରି ତଳେ ଏକ ମତାମତ ଦିଅନ୍ତୁ ।",
-       "missingcommentheader": "'''ଚେତାବନୀ:''' ଆପଣ ଏହି ମତଟି ନିମନ୍ତେ ଏକ ଶିରୋନାମା/ମୁଖ୍ୟ ନାମ ଦେଇନାହାନ୍ତି ।\nଯଦି ଆପଣ \"{{int:savearticle}}\"ରେ ଆଉଥରେ କ୍ଲିକ କରନ୍ତି, ତେବେ ଆପଣଙ୍କ ବଦଳ ସାରକଥା ବିନା ସାଇତା ହୋଇଯିବ ।",
+       "missingcommentheader": "'''ଚେତାବନୀ:''' ଆପଣ ଏହି ମତଟି ନିମନ୍ତେ ଏକ ଶିରୋନାମା/ମୁଖ୍ୟ ନାମ ଦେଇନାହାନ୍ତି ।\nଯଦି ଆପଣ \"$1\"ରେ ଆଉଥରେ କ୍ଲିକ କରନ୍ତି, ତେବେ ଆପଣଙ୍କ ବଦଳ ସାରକଥା ବିନା ସାଇତା ହୋଇଯିବ ।",
        "summary-preview": "ସାରକଥା ଦେଖଣା:",
        "subject-preview": "ବିଷୟ/ଶିରୋନାମା ଦେଖଣା:",
        "previewerrortext": "ଆପଣ ବଦଳାଇଥିବା ବଦଳ ଗୁଡିକୁ ଦେଖାଇବା ବେଳେ ଅସୁବିଧା ହେଲା ।",
        "editingsection": "$1 (ଭାଗ)କୁ ବଦଳାଇବେ",
        "editingcomment": "$1 (ନୂଆ ଭାଗ)କୁ ବଦଳାଉଛୁ",
        "editconflict": "ବଦଳାଇବା ଦ୍ଵନ୍ଦ: $1",
-       "explainconflict": "ଆପଣ ବଦଳାଇବା ଆରମ୍ଭ କରିବା ଭିତରେ କେହିଜଣେ ଏହି ପୃଷ୍ଠାକୁ ବଦଳାଇଛନ୍ତି ।\nଉପର ଲେଖା ଜାଗାଟି ଏହା ଯେମିତି ଅଛି ସେମିତି ଥିବା ଲେଖାଟି ଦେଖାଉଛି ।\nତଳ ଜାଗାଟିରେ ଆପଣ କରିଥିବା ବଦଳ ଦେଖାଉଛି ।\nଏବେ ଥିବା ଲେଖାରେ ଆପଣଙ୍କୁ ନିଜ ବଦଳକୁ ମିଶାଇବାକୁ ହେବ ।\nଯଦି ଆପଣ \"{{int:savearticle}}\" ଦବାନ୍ତି ତେବେ '''କେବଳ''' ଉପର ଲେଖାଟି ସାଇତା ହୋଇଯିବ ।",
+       "explainconflict": "ଆପଣ ବଦଳାଇବା ଆରମ୍ଭ କରିବା ଭିତରେ କେହିଜଣେ ଏହି ପୃଷ୍ଠାକୁ ବଦଳାଇଛନ୍ତି ।\nଉପର ଲେଖା ଜାଗାଟି ଏହା ଯେମିତି ଅଛି ସେମିତି ଥିବା ଲେଖାଟି ଦେଖାଉଛି ।\nତଳ ଜାଗାଟିରେ ଆପଣ କରିଥିବା ବଦଳ ଦେଖାଉଛି ।\nଏବେ ଥିବା ଲେଖାରେ ଆପଣଙ୍କୁ ନିଜ ବଦଳକୁ ମିଶାଇବାକୁ ହେବ ।\nଯଦି ଆପଣ \"$1\" ଦବାନ୍ତି ତେବେ '''କେବଳ''' ଉପର ଲେଖାଟି ସାଇତା ହୋଇଯିବ ।",
        "yourtext": "ଆପଣଙ୍କ ଲେଖା",
        "storedversion": "ସାଇତା ସଙ୍କଳନ",
        "nonunicodebrowser": "'''ଚେତାବନୀ: ଆପଣଙ୍କ ବ୍ରାଉଜରରେ ଇଉନିକୋଡ଼ ସଚଳ କରାଯାଇନାହିଁ ।'''\nଏକ ୱର୍କାଆରାଉଣ୍ଡ ଏକ ଏହିପରି ଜାଗା ଯାହା ଆପଣଙ୍କୁ ନିରାପଦ ଭାବରେ ପୃଷ୍ଠା ସମ୍ପାଦନ କରିବାରେ ସାହାଯ୍ୟ କରିଥାଏ: ଅଣ-ASCII ଅକ୍ଷରସମୂହ ସମ୍ପାଦନା ଘରେ ହେକ୍ସାଡେସିମାଲ କୋଡ଼ ରୂପେ ଦେଖାଯିବ ।",
        "right-editprotected": "କିଳାଯାଇଥିବା ପୃଷ୍ଠାମାନଙ୍କର ସମ୍ପାଦନା କରିବେ (କ୍ୟାସକେଡ଼କରା କିଳଣା ବିନା)",
        "right-editsemiprotected": "\"{{int:protect-level-autoconfirmed}}\" ଭାବେ ଲୁଚାଯାଇଥିବା ପୃଷ୍ଠାସବୁ ସମ୍ପାଦନା କରନ୍ତୁ",
        "right-editinterface": "ସଭ୍ୟଙ୍କ ଇଣ୍ଟରଫେସ ବଦଳାଇବେ",
-       "right-editusercssjs": "ବାକି ସଭ୍ୟମାନଙ୍କର CSS ଓ ଜାଭାସ୍କ୍ରିପ୍ଟ ଫାଇଲ ସବୁକୁ ବଦଳାଇବେ",
        "right-editusercss": "ବାକି ସଭ୍ୟମାନଙ୍କ CSS ଫାଇଲସବୁ ବଦଳାଇବେ",
        "right-edituserjs": "ବାକି ସଭ୍ୟମାନଙ୍କର ଜାଭାସ୍କ୍ରିପ୍ଟ ଫାଇଲ ସବୁକୁ ବଦଳାଇବେ",
        "right-editmyusercss": "ନିଜ ସଭ୍ୟ CSS ଫାଇଲସବୁ ସମ୍ପାଦନା କରନ୍ତୁ",
        "rcshowhidemine-show": "ଦେଖାଇବେ",
        "rcshowhidemine-hide": "ଲୁଚାଇବେ",
        "rcshowhidecategorization": "$1 ପୃଷ୍ଠା ଶ୍ରେଣୀବିଭାଗ",
-       "rclinks": "ଗଲା $2 ଦିନର $1 ବଦଳଗୁଡ଼ିକୁ ଦେଖାଇବେ<br />$3",
+       "rclinks": "ଗଲା $2 ଦିନର $1 ବଦଳଗୁଡ଼ିକୁ ଦେଖାଇବେ",
        "diff": "ଅଦଳ ବଦଳ",
        "hist": "ଇତିହାସ",
        "hide": "ଲୁଚାନ୍ତୁ",
index bdc8b77..10ac84e 100644 (file)
@@ -7,7 +7,8 @@
                        "HalanTul",
                        "לערי ריינהארט",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Stephanecbisson"
                ]
        },
        "tog-underline": "Æрвитæнты бын хахх:",
        "externaldberror": "Кæнæ аутентификацийы рарддоны рæдыд æрцыдис, кæнæ та дæуæн нæй бар снæуæг кæнын дæ æддаг аккаунт.",
        "login": "Бахизын",
        "nav-login-createaccount": "Бахизын / срегистраци кæнын",
-       "userlogin": "Бахизын / регистраци кæнын",
-       "userloginnocreate": "Бахизын",
        "logout": "Рахизын",
        "userlogout": "Рахизын",
        "notloggedin": "Системæмæ хызт нæ дæ",
        "userlogin-noaccount": "Нæй дын аккаунт?",
        "userlogin-joinproject": "Баиу у {{grammar:comitative|{{SITENAME}}}}",
-       "nologin": "Регистрацигонд нæма дæ? $1.",
-       "nologinlink": "Регистраци",
        "createaccount": "Регистраци кæнын",
-       "gotaccount": "Регистрацигонд дæ? $1.",
-       "gotaccountlink": "Бахизын",
-       "userlogin-resetlink": "Ферох дæ сты дæ бахизæнтæ?",
        "userlogin-resetpassword-link": "Ферох и дæ пароль?",
        "userlogin-helplink2": "Бахизынæн æххуыс",
        "userlogin-loggedin": "Ды бахызтæ куыд $1.\nДæлæ цы формæ уыныс, уый æххуысæй дæ бон у æндæр фæсномыгæй бахизын.",
        "createacct-another-email-ph": "Бафысс дæ эл. посты адрис",
        "createaccountmail": "Рæстæгмæ пароль халæй ист æрцæуæд æмæ амынд электрон посты адрисмæ æрвыст æрцæуæд",
        "createacct-realname": "Æцæг ном (фæндон)",
-       "createaccountreason": "Бындур:",
        "createacct-reason": "Бындур",
        "createacct-reason-ph": "Цæмæн аразыс æндæр аккаунт?",
        "createacct-submit": "Сараз дæ аккаунт",
        "passwordreset-emaildisabled": "Электрон пост ацы викийы хицæн у.",
        "passwordreset-username": "Фæсномыг:",
        "passwordreset-domain": "Домен:",
-       "passwordreset-capture": "Цы фыстæг рауадис, уый фенис?",
-       "passwordreset-capture-help": "Кæд сæвæрай ацы нысан, уæд дын e-mail (рæстæгмæ паролимæ) æвдыст æрцæудзæн. Архайæгмæ дæр æрвыст æрцæудзæн.",
        "passwordreset-email": "Электрон посты адрис:",
        "passwordreset-emailtitle": "{{grammar:genitive|{{SITENAME}}}} акканты тыххæй",
        "passwordreset-emailtext-ip": "Чидæр (уæццæгæн ды, $1 IP адрисæй) æрдомдта дæ {{grammar:genitive|{{SITENAME}}}} ($4) пароль ногæй сæвæрын. Ацы архайæджы {{PLURAL:$3|аккаунт баст у|аккаунттæ баст сты}} ацы электрон посты адрисимæ:\n\n$2\n\n{{PLURAL:$3|Ацы рæстæгмæ пароль|Ацы рæстæгмæ паролтæ}} кусдзысты {{PLURAL:$5|иу бон|$5 боны}}.\nНыр ды хъуамæ бахизай системæмæ æмæ равзарай ног пароль. Кæд ай æндæр чидæр æрдомдта, кæнæ кæд дæ пароль æрхъуыды кодтай æмæ дæ нал фæды фæивай йæ, уæд дæ бон у мацæмæ дарай ацы фыстæг æмæ дарддæр архайай дæ зæронд паролæй.",
        "showdiff": "Иртасын",
        "anoneditwarning": "'''Сындæггай:''' Ды системæйы нæ дæ.\nДæ IP адрес фыст æрцæудзæнис фарсы историйы.",
        "anonpreviewwarning": "''Ды системæмæ хызт нæ дæ. Бавæрд дын дæ IP адрис ныффысдзæн фарсы историйы.''",
-       "missingsummary": "'''Æрхъуыдыкæнинаг:''' Ды не рхастай ивды афыст.\nКæд ногæй равзарай \"{{int:savearticle}}\", уæд ивд æнæ афыстæй бавæрд уыдзæнис.",
+       "missingsummary": "'''Æрхъуыдыкæнинаг:''' Ды не рхастай ивды афыст.\nКæд ногæй равзарай \"$1\", уæд ивд æнæ афыстæй бавæрд уыдзæнис.",
        "missingcommenttext": "Дæ хорзæхæй, дæлдæр комментари бафысс.",
-       "missingcommentheader": "'''Æрхъуыдыкæнинаг:''' Ды ацы комментарийæн не рхастай темæ/сæр.\nКæд ногæй равзарай \"{{int:savearticle}}\", уæд ивд æнæ уымæй бавæрд уыдзæнис.",
+       "missingcommentheader": "'''Æрхъуыдыкæнинаг:''' Ды ацы комментарийæн не рхастай темæ/сæр.\nКæд ногæй равзарай \"$1\", уæд ивд æнæ уымæй бавæрд уыдзæнис.",
        "summary-preview": "Ивд афыст уыдзæн:",
        "subject-preview": "Темæ/сæр:",
        "blockedtitle": "Архайæг хъодыгонд у",
        "editingsection": "Ивд цæуы $1 (хай)",
        "editingcomment": "Ивд цæуы $1 (ног хай)",
        "editconflict": "Ивыны конфликт: $1",
-       "explainconflict": "Цалынмæ ды ацы фарс ивтай, уæдмæ йæ æндæр чидæр фæивта.\nУæллаг текст ивыны бынаты ды уыныс фарсы текст ныр куыд у, уый хуызы.\nДæ ивдтытæ æвдыст сты дæллаг ивыны бынаты.\nДæуæн хъæудзæн дæ ивдтытæ уæллаг ивæн бынатмæ рахæссын.\n'''Æрмæст''' уæллаг ивæны текст æрцæудзæн æвæрд \"{{int:savearticle}}\"-ыл куы ныххæцай.",
+       "explainconflict": "Цалынмæ ды ацы фарс ивтай, уæдмæ йæ æндæр чидæр фæивта.\nУæллаг текст ивыны бынаты ды уыныс фарсы текст ныр куыд у, уый хуызы.\nДæ ивдтытæ æвдыст сты дæллаг ивыны бынаты.\nДæуæн хъæудзæн дæ ивдтытæ уæллаг ивæн бынатмæ рахæссын.\n'''Æрмæст''' уæллаг ивæны текст æрцæудзæн æвæрд \"$1\"-ыл куы ныххæцай.",
        "yourtext": "Дæ текст",
        "storedversion": "Æвæрд фæлтæр",
        "nonunicodebrowser": "'''Сындæг: Дæ сгарæн Unicode-имæ нæ фидауы.'''\nASCII нысæнттæм чи нæ хауы, уыдон ивыны бынаты сæ æхсæрдæсон кодты хуызы уыдзысты.",
        "prefs-rendering": "Фæлгонц",
        "saveprefs": "Бавæрын",
        "prefs-editing": "Ивын",
-       "rows": "Рæнхъытæ:",
-       "columns": "Рæгътæ:",
        "searchresultshead": "Агуырд",
        "stub-threshold-disabled": "Хицæн",
        "timezonelegend": "Сахаты таг:",
        "rcshowhidemine": "$1 мæ ивдтытæ",
        "rcshowhidemine-show": "Равдис",
        "rcshowhidemine-hide": "Бамбæхс",
-       "rclinks": "Фæстаг $1 ивдтытæ (афæстаг $2 боны дæргъы чи ’рцыдысты) равдис;\n$3",
+       "rclinks": "Фæстаг $1 ивдтытæ (афæстаг $2 боны дæргъы чи ’рцыдысты) равдис;",
        "diff": "хицæн.",
        "hist": "лог",
        "hide": "Айсын",
        "undeleteviewlink": "кæсын",
        "undeleteinvert": "Зыгъуыммæ æвзæрст",
        "undeletecomment": "Аххос:",
-       "undeletedfiles": "{{PLURAL:$1|1 файл рацарæзт æрцыдис|$1 файлы рацарæзт æрцыдысты}}",
        "cannotundelete": "Рацарæзт нæ фæрæстмæ:\n$1",
        "undelete-search-title": "Хафт фæрсты агуырд",
        "undelete-search-box": "Хафт фæрстæ агурын",
        "revdelete-summary-hid": "ивды афыст æмбæхст у",
        "revdelete-uname-hid": "æмбæхст фæсномыг",
        "rightsnone": "(нæй)",
-       "revdelete-summary": "ивддзинады мидис",
        "feedback-back": "Фæстæмæ",
        "feedback-cancel": "Ныууадзын",
        "feedback-close": "Æххæст",
        "feedback-useragent": "Браузер:",
        "searchsuggest-search": "Агурын",
        "searchsuggest-containing": "йæ мидæг ис...",
-       "api-error-badaccess-groups": "Ацы викимæ файлтæ бавгæныны бар дæм нæй.",
-       "api-error-filename-tooshort": "Файлы ном æгæр цыбыр у.",
-       "api-error-filetype-banned": "Файлы хуыз ивæргонд у.",
-       "api-error-missingparam": "Мидæггаг рæдыд: Курдиаты параметртæ нæй.",
-       "api-error-missingresult": "Мидæггаг рæдыд: Нæ рауадис сбæрæг кæнын къопи кæнын куыд бантыстис.",
-       "api-error-mustbeloggedin": "Ды хъуамæ системæмæ хызт уай, цæмæй файлтæ æвгæнай.",
-       "api-error-mustbeposted": "Мидæггаг рæдыд: Курдиат хъуамæ уа HTTP POST.",
-       "api-error-noimageinfo": "Æвгæд æххæст у, фæлæ нын сервер ницыуал рабæрæг кодта файлы тыххæй.",
-       "api-error-nomodule": "Мидæггаг рæдыд: Бавгæнæн модуль нæу æвæрд.",
-       "api-error-ok-but-empty": "Мидæггаг рæдыд: Серверæй дзуапп нæй.",
-       "api-error-overwrite": "Уæвгæ файл ногæй фыссын нæй гæнæн.",
        "api-error-stashfailed": "Мидæггаг рæдыд: Серверæн нæ рауадис рæстæгмæ файл фæдарын.",
-       "api-error-timeout": "Сервер нæ радта дзуапп бадзырд рæстæгмæ.",
-       "api-error-unclassified": "Нæзонгæ рæдыд æрцыд.",
-       "api-error-unknown-code": "Нæзонгæ рæдыд: \"$1\".",
-       "api-error-unknown-error": "Мидæггаг рæдыд: Цыдæр раст нæ ацыдис, файл куы æвгæдтай, уæд.",
        "api-error-unknown-warning": "Нæзонгæ фæдзæхст: \"$1\".",
        "api-error-unknownerror": "Нæзонгæ рæдыд: \"$1\".",
-       "api-error-uploaddisabled": "Ацы викийы, бавгæныны фадат хицæн у.",
-       "api-error-verification-error": "Ацы файл гæнæн ис хæлд у, кæнæ йæ номы фæстаг хай раст нæу.",
        "duration-seconds": "$1 {{PLURAL:$1|секунд|секунды}}",
        "duration-minutes": "$1 {{PLURAL:$1|минут|минуты}}",
        "duration-hours": "$1 {{PLURAL:$1|сахат|сахаты}}",
index 7171bae..1cdd53c 100644 (file)
@@ -24,7 +24,8 @@
                        "Macofe",
                        "ਪ੍ਰਚਾਰਕ",
                        "Tow",
-                       "Sony dandiwal"
+                       "Sony dandiwal",
+                       "Stephanecbisson"
                ]
        },
        "tog-underline": "ਲਿੰਕ ਹੇਠ-ਲਾਈਨ:",
        "login": "ਦਾਖਲ",
        "login-security": "ਆਪਣੀ ਪਛਾਣ ਦੀ ਪੜਤਾਲ ਕਰਵਾਉ",
        "nav-login-createaccount": "ਲਾਗਇਨ/ਖਾਤਾ ਬਣਾਓ",
-       "userlogin": "ਲਾਗਇਨ/ਖਾਤਾ ਬਣਾਓ",
-       "userloginnocreate": "ਲਾਗਇਨ",
        "logout": "ਵਿਦਾਈ ਲਉ",
        "userlogout": "ਵਿਦਾਈ ਲਉ",
        "notloggedin": "ਲਾਗਇਨ ਨਹੀਂ ਹੋ",
        "userlogin-noaccount": "ਖਾਤਾ ਨਹੀਂ ਹੈ?",
        "userlogin-joinproject": "{{SITENAME}} ਦਾ ਹਿੱਸਾ ਬਣੋ",
-       "nologin": "ਖਾਤਾ ਨਹੀਂ ਹੈ? $1।",
-       "nologinlink": "ਖਾਤਾ ਬਣਾਓ",
        "createaccount": "ਖਾਤਾ ਬਣਾਓ",
-       "gotaccount": "ਖਾਤਾ ਪਹਿਲਾਂ ਹੀ ਹੈ? $1",
-       "gotaccountlink": "ਲਾਗਇਨ",
-       "userlogin-resetlink": "ਆਪਣੀ ਲਾਗਇਨ ਜਾਣਕਾਰੀ ਭੁੱਲ ਗਏ ਹੋ?",
        "userlogin-resetpassword-link": "ਆਪਣਾ ਪਾਸਵਰਡ ਭੁੱਲ ਗਏ ਹੋ?",
        "userlogin-helplink2": "ਦਾਖ਼ਲ ਹੋਣ ਵਿਚ ਮਦਦ",
        "userlogin-loggedin": "ਤੁਸੀਂ ਪਹਿਲੋਂ ਹੀ {{GENDER:$1|$1}} ਵਜੋਂ ਦਾਖ਼ਲ ਹੋ ਚੁੱਕੇ ਹੋਂ।\nਕਿਸੇ ਹੋਰ ਵਰਤੋਂਕਾਰ ਵਜੋਂ ਦਾਖ਼ਲ ਹੋਣ ਵਾਸਤੇ ਹੇਠ ਦਿੱਤਾ ਫਾਰਮ ਭਰੋ।",
        "createacct-another-email-ph": "ਆਪਣਾ ਈਮੇਲ ਐਡਰੈਸ ਦਿਓ",
        "createaccountmail": "ਆਰਜ਼ੀ ਰਲ਼ਵਾਂ ਪਾਸਵਰਡ ਵਰਤੋਂ ਅਤੇ ਇਸ ਨੂੰ ਖਾਸ ਈਮੇਲ ਪਤੇ ਉੱਤੇ ਭੇਜ ਦਿਉ",
        "createacct-realname": "ਅਸਲੀ ਨਾਂ (ਚੋਣਵਾਂ)",
-       "createaccountreason": "ਕਾਰਨ:",
        "createacct-reason": "ਕਾਰਨ",
        "createacct-reason-ph": "ਤੁਸੀਂ ਹੋਰ ਖਾਤਾ ਕਿਉਂ ਬਣਾ ਰਹੇ ਹੋ",
        "createacct-submit": "ਆਪਣਾ ਖਾਤਾ ਬਣਾਓ",
        "showdiff": "ਤਬਦੀਲੀਆਂ ਵਿਖਾਓ",
        "anoneditwarning": "'''ਖ਼ਬਰਦਾਰ:''' ਤੁਸੀਂ ਦਾਖ਼ਲ ਨਹੀਂ ਹੋ। ਕੋਈ ਵੀ ਸੋਧ ਕਰਨ 'ਤੇ ਤੁਹਾਡਾ ਆਈ.ਪੀ. ਪਤਾ ਲੋਕਾਂ ਨੂੰ ਵਿਖਾਈ ਦੇਵੇਗਾ। ਜੇਕਰ ਤੁਸੀਂ <strong>[$1 ਦਾਖ਼ਲ ਹੁੰਦੇ ਹੋ]</strong> ਜਾਂ <strong>[$2 ਖਾਤਾ ਬਣਾਉਂਦੇ ਹੋ]</strong> ਤਾਂ ਤੁਹਾਡੀਆਂ ਸੋਧਾਂ ਦਾ ਸਿਹਰਾ, ਹੋਰ ਫ਼ਾਇਦਿਆਂ ਸਮੇਤ, ਤੁਹਾਡੇ ਵਰਤੋਂਕਾਰ-ਨਾਂ ਸਿਰ ਦਿੱਤਾ ਜਾਵੇਗਾ।",
        "anonpreviewwarning": "''ਤੁਸੀਂ ਲਾਗਇਨ ਨਹੀਂ ਕੀਤਾ ਹੋਇਆ। ਤਬਦੀਲੀ ਸਾਂਭਣ ਨਾਲ਼ ਤੁਹਾਡਾ IP ਪਤਾ ਸਫ਼ੇ ਦੇ ਸੋਧ ਅਤੀਤ ਵਿਚ ਰਿਕਾਰਡ ਹੋ ਜਾਵੇਗਾ।''",
-       "missingsummary": "'''ਯਾਦ-ਦਹਾਨੀ:''' ਤੁਸੀਂ ਸੋਧ ਸਾਰ ਮੁਹੱਈਆ ਨਹੀਂ ਕਰਵਾਇਆ। ਜੇ ਤੁਸੀਂ \"{{int:savearticle}}\" ਤੇ ਦੁਬਾਰਾ ਕਲਿੱਕ ਕੀਤਾ ਤਾਂ ਤੁਹਾਡਾ ਸਫ਼ਾ ਇਸਦੇ ਬਿਨਾਂ ਹੀ ਸਾਂਭਿਆ ਜਾਵੇਗਾ।",
+       "missingsummary": "'''ਯਾਦ-ਦਹਾਨੀ:''' ਤੁਸੀਂ ਸੋਧ ਸਾਰ ਮੁਹੱਈਆ ਨਹੀਂ ਕਰਵਾਇਆ। ਜੇ ਤੁਸੀਂ \"$1\" ਤੇ ਦੁਬਾਰਾ ਕਲਿੱਕ ਕੀਤਾ ਤਾਂ ਤੁਹਾਡਾ ਸਫ਼ਾ ਇਸਦੇ ਬਿਨਾਂ ਹੀ ਸਾਂਭਿਆ ਜਾਵੇਗਾ।",
        "missingcommenttext": "ਹੇਠਾਂ ਇੱਕ ਟਿੱਪਣੀ ਦਿਓ।",
        "summary-preview": "ਸੋਧ ਸਾਰ ਦੀ ਝਲਕ:",
        "subject-preview": "ਵਿਸ਼ੇ ਦੀ ਝਲਕ:",
        "rcshowhidemine-hide": "ਓਹਲੇ",
        "rcshowhidecategorization-show": "ਦਿਖਾਓ",
        "rcshowhidecategorization-hide": "ਲੁਕਾਉ",
-       "rclinks": "ਪਿਛਲੇ $2 ਦਿਨਾਂ ਵਿੱਚ ਹੋਈਆਂ $1 ਤਬਦੀਲੀਆਂ ਵਿਖਾਓ<br /> $3",
+       "rclinks": "ਪਿਛਲੇ $2 ਦਿਨਾਂ ਵਿੱਚ ਹੋਈਆਂ $1 ਤਬਦੀਲੀਆਂ ਵਿਖਾਓ",
        "diff": "ਫ਼ਰਕ",
        "hist": "ਅਤੀਤ",
        "hide": "ਲੁਕਾਓ",
        "logentry-newusers-create2": "ਵਰਤੋਂਕਾਰ ਖਾਤਾ $3, $1 ਦੁਆਰਾ ਬਣਾਇਆ ਗਿਆ ਸੀ",
        "logentry-upload-upload": "$1 ਨੇ $3 {{GENDER:$2|ਅਪਲੋਡ ਕੀਤਾ}}",
        "rightsnone": "(ਕੋਈ ਨਹੀਂ)",
-       "revdelete-summary": "ਸੰਖੇਪ ਸੋਧ",
        "feedback-adding": "ਸਫ਼ੇ ਨਾਲ਼ ਵਿਚਾਰ ਜੁੜ ਰਹੇ ਹਨ...",
        "feedback-back": "ਪਿੱਛੇ",
        "feedback-bugnew": "ਮੈਂ ਚੈੱਕ ਕੀਤਾ। ਇੱਕ ਨਵੇਂ ਦੋਸ਼ ਦੀ ਰਿਪੋਰਟ ਕਰੋ",
index 95af027..78185ea 100644 (file)
        "permalink": "Suglung a permanenti",
        "print": "I-print",
        "view": "Lawen",
+       "view-foreign": "Lawen king $1",
        "edit": "Alilan",
        "create": "Maglalang",
        "editthispage": "I-edit ya ing bulung a ini",
        "nstab-template": "Ulma (template)",
        "nstab-help": "Saup bulung",
        "nstab-category": "Kategoriya",
+       "mainpage-nstab": "Pun Bulung",
        "nosuchaction": "Alang makanyan a gawa",
        "nosuchactiontext": "E ne kikilalanan ning wiki ing dapat/utus a babanggitan ning URL",
        "nosuchspecialpage": "Alang bulung a makabukud/espesial a anti kanian",
        "logouttext": "'''Maka logout na ka.'''\n\nMalyari mung isundu ing pamangamit mu king {{SITENAME}} a e ka papakilala, o malyari kang mag login pasibayu anting pareu o aliwang talagamit.\nApansingan mung mapalyaring makalto la pa murin deng aliwang bulung a bala mu maka login ka pa murin, anggang e me lilinisan (clear) ing kekang browser cache.",
        "yourname": "Lagyung talagamit (Username):",
        "yourpassword": "Kekang password:",
+       "userlogin-yourpassword": "Udyat (Password)",
        "yourpasswordagain": "Pakisulat meng pasibayu ing password:",
        "yourdomainname": "Ing kekang karinan (domain):",
        "externaldberror": "Mapalyaring mika pamagkamali king external authentication (pamagpatutung panlual) ning database, o ala kang paintulut a i-update ya ing kekang account a panlual (external account).",
        "login": "Mag log in",
        "nav-login-createaccount": "Mag-login / maglalang account",
-       "userlogin": "Mag-login / maglalang account",
        "logout": "Mag-log out",
        "userlogout": "Mag logout",
        "notloggedin": "E maka login",
-       "nologin": "Ala kang login? $1.",
-       "nologinlink": "Maglalang kang account",
        "createaccount": "Maglalang kang account",
-       "gotaccount": "Atin na kang account? '''$1'''.",
-       "gotaccountlink": "Mag log in",
        "createaccountmail": "kapamilatan ning e-mail",
        "badretype": "Ding password a linub mu ela mibabage.",
        "userexists": "Atin nang gagamit king lagyung talagamit (username) a misulat.\nMamili kang aliwang lagyu.",
        "createaccount-title": "Pamaglalang account para king {{SITENAME}}",
        "createaccount-text": "Ating miglalang account para king kekang e-mail address king {{SITENAME}} ($4) a maki lagyung \"$2\", ampong password a \"$3\".\nKailangan mung mag-login ngeni ba meng ayalilan ing kekang password.\n\nMalyari meng e pansinan ining mensahi, nung pamagkamali ing pamaglalang na niting account.",
        "loginlanguagelabel": "Amanu: $1",
+       "pt-login-button": "Maglagda (log in)",
        "changepassword": "Alilan ya ing password",
        "resetpass_announce": "Gagamit kang pansamantalang code a me e-mail keka aniang mig-login ka.\nBang mayari ing kekang pamag-login, kailangan mung mangibiling bayung password keni:",
        "resetpass_header": "Alilan ya ing password",
        "resetpass_submit": "Mangibili kang password at maglogin ka",
        "changepassword-success": "Melaus ing pamanalili mung password! Ngeni mila-login naka...",
        "resetpass_forbidden": "E la malyaring alilan deng password keng wiking ini",
+       "passwordreset": "Alilan udyat (reset password)",
        "bold_sample": "Makapasalang kulitan",
        "bold_tip": "Makapal pangasulat",
        "italic_sample": "Makakiling pangasulat",
        "editingsection": "Alilan (e-edit) ya ing $1 (dake)",
        "editingcomment": "I-edit ya ing $1 (komentu)",
        "editconflict": "Misasalungat a edit: $1",
-       "explainconflict": "Ating aliwang minalili king bulung a ini manibat aniang inumpisan meng i-edit.\nMakabili ya king espasiung pirinan sulat king babo (upper text area)  ing kasalungsungan nang itsura niti.\nAtyu la king espasiung pirinan sulat king lalam (lower text area) deng kekang elilan.\nKailangan mong piyabe deng elilan mu ketang kasalungsungan a makasulat.\nBukud mung ing makasulat king babo ing ma-save katimid mu ketang   \"{{int:savearticle}}\".",
+       "explainconflict": "Ating aliwang minalili king bulung a ini manibat aniang inumpisan meng i-edit.\nMakabili ya king espasiung pirinan sulat king babo (upper text area)  ing kasalungsungan nang itsura niti.\nAtyu la king espasiung pirinan sulat king lalam (lower text area) deng kekang elilan.\nKailangan mong piyabe deng elilan mu ketang kasalungsungan a makasulat.\nBukud mung ing makasulat king babo ing ma-save katimid mu ketang   \"$1\".",
        "yourtext": "Ing kekang sinulat",
        "storedversion": "Bersion a makasimpan",
        "nonunicodebrowser": "'''BABALA: E ya unicode compliant ing kekang browser.\nAting paralan ba kang e mika-prublema king pamag-edit: lunto la antimong hexadecimal code king kahun a pipag-editan deng letra/kulit a e-ASCII (non-ASCII characters).'''",
        "prefs-misc": "Alwp",
        "saveprefs": "I-save",
        "prefs-editing": "Mag-edit",
-       "rows": "Dane (rows):",
-       "columns": "Ding asias:",
        "searchresultshead": "Maintun",
        "stub-threshold": "Angganan ning <a href=\"#\" class=\"stub\">stub link</a> formatting (byte):",
        "recentchangesdays": "Deng aldong ipalto king bayung mengayalili:",
        "userrights-reason": "Sangkan:",
        "userrights-no-interwiki": "Ala kang paintulut a i-edit la reng katuliran da reng talagamit (user rights) kareng aliwang wiki.",
        "userrights-nodatabase": "Alang database a $1 o e ya lokal iti.",
-       "userrights-nologin": "Kailangan mung [[Special:UserLogin|mag-login]] king metung a administrator account ba kang makapamieng katulirang talagamit (user rights).",
-       "userrights-notallowed": "Ala yang paintulut mamieng katulirang talagamit (user rights) ing kekang account.",
        "userrights-changeable-col": "Deng grupung maliari mung alilan",
        "userrights-unchangeable-col": "Deng grupung e mu maliaring alilan",
        "group": "Grupu:",
        "right-protect": "Alilan la reng sikan ning pamangambil (protection level) at i-edit la reng bulung a protektadu/makakambil",
        "right-editprotected": "I-edit la reng bulung a protektadu/makakambil (alang proteksiun a tuki-tuki o cascading protection)",
        "right-editinterface": "I-edit ya ing user interface",
-       "right-editusercssjs": "I-edit la reng simpan (file) dang CSS ampong JS deng aliwang talagamit",
        "right-editusercss": "I-edit la reng simpan (file) dang CSS deng aliwang talagamit",
        "right-edituserjs": "I-edit la reng simpan (file) dang JS deng aliwang talagamit",
        "right-rollback": "Gad yang iurung (revert) ing tauling talagamit a mig-edit king partikular a bulung",
        "action-edit": "i-edit/alilan ya ing bulung a ini",
        "action-managechangetags": "maglalang at magbura tags ibat database",
        "nchanges": "$1 {{PLURAL:$1|miyalilan|miyalilan}}",
+       "enhancedrc-history": "amlat/kasaleselan",
        "recentchanges": "Bayung mengayalili",
        "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.",
+       "rcfilters-savedqueries-new-name-label": "Lagyu",
+       "rcfilters-savedqueries-cancel-label": "E taglus",
+       "rcfilters-filtergroup-watchlist": "Deng bulung a yati lu king babanten",
+       "rcfilters-filter-watchlist-watched-label": "Deng atiu babanten",
+       "rcfilters-filter-watchlist-notwatched-label": "Ala lu king babanten",
+       "rcfilters-filtergroup-lastRevision": "Kasalungsungan a pangayalili",
+       "rcfilters-filter-lastrevision-label": "Kasalungsungan a pangayalili",
        "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 $3 $2",
        "rcshowhideminor": "$1 malating edit",
+       "rcshowhideminor-show": "Pakit",
+       "rcshowhideminor-hide": "Isalikut",
        "rcshowhidebots": "$1 la reng bot",
+       "rcshowhidebots-show": "Pakit",
+       "rcshowhidebots-hide": "Isalikut",
        "rcshowhideliu": "$1 talagamit a maka-log in",
+       "rcshowhideliu-hide": "Isalikut",
        "rcshowhideanons": "$1 talagamit a e migpakilala",
+       "rcshowhideanons-show": "Pakit",
+       "rcshowhideanons-hide": "Isalikut",
        "rcshowhidepatr": "$1 edit a babanten (patrolled edits)",
        "rcshowhidemine": "$1 deng elilan ku",
+       "rcshowhidemine-show": "Pakit",
+       "rcshowhidemine-hide": "Isalikut",
        "rcshowhidecategorization-show": "Pakit",
-       "rclinks": "Pakit la reng tauling $1 miyalilan anyang tauling $2 aldo<br />$3",
+       "rclinks": "Pakit la reng tauling $1 miyalilan anyang tauling $2 aldo",
        "diff": "aliwa",
        "hist": "amlat",
        "hide": "Isalikut",
        "suppress": "Alakton (oversight)",
        "booksources": "Aklat a pikuanan",
        "booksources-search-legend": "Panintunan la reng aklat penibatan",
+       "booksources-search": "Manintun/Manuliksa",
        "booksources-text": "Makabili la king lalam deng suglung kareng aliwang karinan o site a mamisaling librung bayu at megamit na, at mapalyaring atin la muring aliwang informaciun kareng librung paintunan mu.",
        "specialloguserlabel": "Talagamit:",
        "speciallogtitlelabel": "Bansag:",
        "undeletelink": "lon/ibalik",
        "undeleteviewlink": "↓lawen",
        "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",
-       "undeletedfiles": "{{PLURAL:$1|1 simpan|$1 simpan}} a misubli",
        "cannotundelete": "E melaus ing pamamawi king pamamura.  Mapalyaring ati'nang minunang ginawa kaniti.",
        "undeletedpage": "ing '''$1 misubli ya'''\n\nLon me ing [[Special:Log/delete|tala da reng mebura (deletion log)]] para king tala/listaan da reng bayu-bayung mebura ampong misubli.",
        "undelete-header": "Lon me [[Special:Log/delete|tala da reng mebura]] para kareng bulung a bayu-bayung mebura.",
        "namespace": "Pirinan lagyu (Namespace):",
        "invert": "Ibaligtad la pamitukituki",
        "blanknamespace": "(Pun)",
-       "contributions": "Ambag da reng gagamit",
+       "contributions": "{{GENDER:$1|User}} deng ambag",
        "contributions-title": "Deng ambag da reng talagamit para king $1",
        "mycontris": "Deng kakung ambag",
        "anoncontribs": "Deng ambag",
        "whatlinkshere-prev": "{{PLURAL:$1|minunang|minunang $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|next|tutuking $1}}",
        "whatlinkshere-links": "← suglung",
-       "whatlinkshere-hideredirs": "$1 pamanalis direksiun (redirects)",
+       "whatlinkshere-hideredirs": "$1 pamanalis direksyun (redirects)",
        "whatlinkshere-hidetrans": "$1 langkap (transclusions)",
        "whatlinkshere-hidelinks": "$1 suglung",
        "whatlinkshere-filters": "Panialak (filters)",
        "file-info-size": "$1 × $2 pixel, sukad ning simpan: $3, MIME type: $4",
        "file-nohires": "Ala nang mas malino pa.",
        "svg-long-desc": "SVG file, masasabing $1 × $2 pixels, dagul ning simpan: $3",
-       "show-big-image": "Pekamalino",
+       "show-big-image": "Ing minunang simpan (file)",
        "newimages": "Pirinan kareng bayung simpan (new files)",
        "imagelisttext": "Ing makatuki tala yang '''$1''' {{PLURAL:$1|simpan|simpan}} a misamasan $2.",
        "newimages-summary": "Ining bulung a makabukud papakit no reng simpan (file) a tauling milulan.",
        "watchlisttools-view": "Lon la reng miyalilan a makaugne kaniti",
        "watchlisttools-edit": "Lon ya ampong i-edit ing tala ding babanten (watchlist)",
        "watchlisttools-raw": "I-edit ya ing e pa metagin a tala ding babanten (raw watchlist)",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|pamisabi-sabi]])",
        "version": "Bersion",
        "version-specialpages": "Bulung a makabukud",
        "version-other": "Aliwa",
        "revdelete-restricted": "ipairal la reng limitasiun kareng sysop",
        "revdelete-unrestricted": "ilako la reng makabawal kareng sysops",
        "rightsnone": "(ala)",
-       "revdelete-summary": "sampulung da reng mibayu (edit summary)",
        "feedback-back": "Mibalik",
        "feedback-submit": "I-sumiti",
        "feedback-thanks-title": "Salamat pu!",
index a82bf86..1e174f8 100644 (file)
        "rcshowhideminor": "$1 kambionan menor",
        "rcshowhidebots": "$1 botnan",
        "rcshowhideanons": "$1 uzadónan anonimo",
-       "rclinks": "Mustra último $1 kambionan den último $2 dianan<br />$3",
+       "rclinks": "Mustra último $1 kambionan den último $2 dianan",
        "hide": "Skonde",
        "show": "Mustra",
        "file-anchor-link": "Imagen",
index 8f3f530..5398d0f 100644 (file)
        "yourdomainname": "Vote donmène:",
        "login": "Intrer",
        "nav-login-createaccount": "Intrer / créer vote conpte",
-       "userlogin": "Intrer / créer vote conpte",
-       "userloginnocreate": "Intrer",
        "logout": "Sortir",
        "userlogout": "Sortir",
        "notloggedin": "Poin connékté",
        "userlogin-noaccount": "os n'avez mie un conpte ?",
        "userlogin-joinproject": "Érgaingnez {{SITENAME}}",
-       "nologin": "os n'avez mie un conpte? '''$1'''.",
-       "nologinlink": "Créer un conpte",
        "createaccount": "Créer un conpte",
-       "gotaccount": "Jou qu'os avez piécha un conpte? '''$1'''.",
-       "gotaccountlink": "Intrer",
-       "userlogin-resetlink": "Vos avez oblié vous détals d'connécsion ?",
        "userlogin-resetpassword-link": "Mot d'passe obliè ?",
        "userlogin-helplink2": "Éyude pour s' connécter",
        "userlogin-loggedin": "Os ètes déjo connécté{{GENDER:$1||e|(e)}} conme $1.\nImplouéyez ch' formuloére in-d'sous pour vous connécter aveuc un eute compte d'uzeu.",
        "createaccountmail": "Uzer un mot d' passe aléatoére timporoére pi l’invouéyer à l’adrèche ed courriel éspécifiée",
        "createaccountmail-help": "Peut ète implouèyé pour créer un compte pour eune eute parsonne sans connouaite ch' mot d'passe.",
        "createacct-realname": "Nom réél (facultatif)",
-       "createaccountreason": "Motif :",
        "createacct-reason": "Motif",
        "createacct-reason-ph": "Porquoé os créez un eute compte ?",
        "createacct-reason-help": "Mot d'billet affiché dins ch' jornal éd créachon d'compte",
        "rcshowhideanons": "$1 uzeus anonimes",
        "rcshowhidepatr": "$1 chés modificacions wardées",
        "rcshowhidemine": "$1 ems éditions",
-       "rclinks": "Afiqher chés $1 darins canjemints din chés $2 darins jours<br />$3",
+       "rclinks": "Afiqher chés $1 darins canjemints din chés $2 darins jours",
        "diff": "dif",
        "hist": "hist",
        "hide": "Mucher",
index 74d9bb6..9dd85ee 100644 (file)
        "yourdomainname": "Dei Domain:",
        "login": "Kumm nei",
        "nav-login-createaccount": "Kumm nei",
-       "userlogin": "Kumm nei",
-       "userloginnocreate": "Kumm nei",
        "logout": "Geh naus",
        "userlogout": "Geh naus",
-       "gotaccountlink": "Kumm nei",
        "createacct-emailrequired": "E-Poschd",
        "createaccountmail": "iwwer E-Mail",
-       "createaccountreason": "Grund:",
        "mailmypassword": "Paesswatt zerricksetze",
        "noemail": "Yuuser „$1“ hot ken E-Mail aagewwe.",
        "loginlanguagelabel": "Schprooch: $1",
        "prefs-resetpass": "Paesswatt ennere",
        "saveprefs": "Uffstellinge beilege",
        "prefs-editing": "Ennere",
-       "columns": "Kallems:",
        "searchresultshead": "Guck uff",
        "recentchangesdays-max": "Max. $1 {{PLURAL:$1|Daag|Daag}}",
        "timezoneregion-africa": "Afrikaa",
        "rcshowhidebots": "Bots $1",
        "rcshowhideanons": "IP-Yuuser $1",
        "rcshowhidemine": "Mei Ardickele $1",
-       "rclinks": "Zeig die letscht $1 Enneringe vun de letscht $2 Daag.<br />$3",
+       "rclinks": "Zeig die letscht $1 Enneringe vun de letscht $2 Daag.",
        "diff": "Unnerschidd",
        "hist": "Gschicht",
        "hide": "verschwinne losse",
index 9ac3ca7..f0e33b1 100644 (file)
        "rcshowhideminor": "$1 kjleene Endanisse",
        "rcshowhideanons": "$1 nomeloose Bruckasch",
        "rcshowhidemine": "$1 miene Endanisse",
-       "rclinks": "Wies de latste $1 Endanisse in de latste $2 Doag<br />$3",
+       "rclinks": "Wies de latste $1 Endanisse in de latste $2 Doag",
        "diff": "Unjascheet",
        "hist": "Jeschicht",
        "hide": "Fe'stäakje",
index 8722398..f18e342 100644 (file)
        "userlogin-remembermypassword": "Oagmeld blaiwe",
        "login": "Oamelde",
        "nav-login-createaccount": "Oamelde / Kondo oaleesche",
-       "userlogin": "Oamelde / Kondo oaleesche",
-       "userloginnocreate": "Oilogge",
        "logout": "Uffhere",
        "userlogout": "Uffhere",
        "notloggedin": "Bischd nedd oagmeld",
        "userlogin-noaccount": "Hoschd kä Kondo?",
        "userlogin-joinproject": "Bai {{SITENAME}} oamelde",
-       "nologin": "Hoschd noch kä Kondo? $1",
-       "nologinlink": "Ä Kondo oaleesche",
        "createaccount": "Kondo oaleesche",
-       "gotaccount": "Hoschd schun ä Kondo? $1",
-       "gotaccountlink": "Oamelde",
-       "userlogin-resetlink": "Hoschd doi Daade vagesse?",
        "userlogin-resetpassword-link": "Hoschd doi Kennwoad vagesse?",
        "userlogin-helplink2": "Hilf baim Oamelde",
        "userlogin-createanother": "Leschda nochä Kondo oa",
        "createacct-email-ph": "Gebb doi E-Mail-Adress oi",
        "createacct-another-email-ph": "Gebb doi E-Mail-Adress oi",
        "createacct-realname": "Wie heschd (mugschds awwa nedd)",
-       "createaccountreason": "Grund:",
        "createacct-reason": "Bgrindung",
        "createacct-submit": "Leschda ä Kondo oa",
        "createacct-another-submit": "Leschda ä onnares Kondo oa",
        "resetpass-expired": "Doi Passwoad isch abgloffe. Gebbä naijes Passwoad oi.",
        "passwordreset": "Kennword zriggsedze",
        "passwordreset-username": "Middawaida:",
-       "passwordreset-capture": "E-Mail õgugge?",
        "changeemail": "E-Mail-Adress ännare",
        "changeemail-none": "(käni)",
        "changeemail-submit": "E-Mail-Adress ännare",
        "prefs-rendering": "Uffdridd",
        "saveprefs": "Oischdellunge schbaischere",
        "prefs-editing": "Schaffe",
-       "rows": "Zaile",
-       "columns": "Schbalde",
        "searchresultshead": "Nochgugge",
        "stub-threshold-disabled": "Abgschdeld",
        "recentchangesdays": "Oazahl vunde Daach inde ledschde Ännarunge:",
        "rcshowhidemine": "Moi Beawaidunge $1",
        "rcshowhidemine-show": "Zaische",
        "rcshowhidemine-hide": "Vaschdeggle",
-       "rclinks": "Zaisch die ledschde $1 Ännarunge inde ledschde $2 Daach<br />$3",
+       "rclinks": "Zaisch die ledschde $1 Ännarunge inde ledschde $2 Daach",
        "diff": "Unnaschied",
        "hist": "Gschischd",
        "hide": "vaschdeggle",
index 4b1dbf6..b8ebc96 100644 (file)
@@ -87,7 +87,8 @@
                        "Mateon1",
                        "Jdx",
                        "Kirsan",
-                       "Krottyianock"
+                       "Krottyianock",
+                       "Mazab IZW"
                ]
        },
        "tog-underline": "Podkreślenie linków:",
        "tog-watchlisthidebots": "Ukryj edycje botów na liście obserwowanych",
        "tog-watchlisthideminor": "Ukryj drobne zmiany na liście obserwowanych",
        "tog-watchlisthideliu": "Ukryj edycje zalogowanych użytkowników na liście obserwowanych",
-       "tog-watchlistreloadautomatically": "Automatycznie odświeżaj listę obserwowanych, gdy zmieniany jest filtr (wymagany JavaScript)",
+       "tog-watchlistreloadautomatically": "Automatycznie odświeżaj listę obserwowanych po każdej zmianie filtra (wymagany JavaScript)",
        "tog-watchlisthideanons": "Ukryj edycje anonimowych użytkowników na liście obserwowanych",
        "tog-watchlisthidepatrolled": "Ukryj sprawdzone edycje na liście obserwowanych",
        "tog-watchlisthidecategorization": "Ukryj kategoryzację stron",
        "anontalk": "Dyskusja",
        "navigation": "Nawigacja",
        "and": "&#32;oraz",
-       "qbfind": "Znajdź",
-       "qbbrowse": "Przeglądanie",
-       "qbedit": "Edycja",
-       "qbpageoptions": "Ta strona",
-       "qbmyoptions": "Moje strony",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Akcje",
        "namespaces": "Przestrzenie nazw",
        "variants": "Warianty",
        "edit-local": "Edytuj lokalny opis",
        "create": "Utwórz",
        "create-local": "Dodaj lokalny opis",
-       "editthispage": "Edytuj tę stronę",
-       "create-this-page": "Utwórz tę stronę",
        "delete": "Usuń",
-       "deletethispage": "Usuń tę stronę",
-       "undeletethispage": "Przywróć tę stronę",
        "undelete_short": "odtwórz {{PLURAL:$1|1 wersję|$1 wersje|$1 wersji}}",
        "viewdeleted_short": "Podgląd {{PLURAL:$1|usuniętej|$1 usuniętych}} wersji",
        "protect": "Zabezpiecz",
        "protect_change": "zmień",
-       "protectthispage": "Zabezpiecz tę stronę",
        "unprotect": "Zmień zabezpieczenie",
-       "unprotectthispage": "Zmień zabezpieczenie strony",
        "newpage": "Nowa strona",
-       "talkpage": "Dyskusja",
        "talkpagelinktext": "dyskusja",
        "specialpage": "Strona specjalna",
        "personaltools": "Narzędzia osobiste",
-       "articlepage": "Pokaż zawartość strony",
        "talk": "Dyskusja",
        "views": "Widok",
        "toolbox": "Narzędzia",
        "tool-link-userrights": "Zmiana grup {{GENDER:$1|użytkownika|użytkowniczki}}",
        "tool-link-userrights-readonly": "Zobacz grupy {{GENDER:$1|użytkownika|użytkowniczki}}",
        "tool-link-emailuser": "Wyślij e-mail do {{GENDER:$1|tego użytkownika|tej użytkowniczki}}",
-       "userpage": "Pokaż stronę użytkownika",
-       "projectpage": "Pokaż stronę projektu",
        "imagepage": "Pokaż stronę pliku",
        "mediawikipage": "Strona komunikatu",
        "templatepage": "Strona szablonu",
        "redirectedfrom": "(Przekierowano z $1)",
        "redirectpagesub": "Strona przekierowująca",
        "redirectto": "Przekierowanie do:",
-       "lastmodifiedat": "Tę stronę ostatnio zmodyfikowano o $2, $1.",
+       "lastmodifiedat": "Tę stronę ostatnio edytowano $2, $1.",
        "viewcount": "Tę stronę obejrzano {{PLURAL:$1|tylko raz|$1 razy}}.",
        "protectedpage": "Strona zabezpieczona",
        "jumpto": "Skocz do:",
        "sort-ascending": "Sortuj rosnąco",
        "nstab-main": "Strona",
        "nstab-user": "{{GENDER:{{BASEPAGENAME}}|Strona użytkownika|Strona użytkowniczki}}",
-       "nstab-media": "Pliki",
+       "nstab-media": "Plik",
        "nstab-special": "Strona specjalna",
        "nstab-project": "Strona projektu",
        "nstab-image": "Plik",
        "ns-specialprotected": "Stron specjalnych nie można edytować.",
        "titleprotected": "Utworzenie strony o tej nazwie zostało zablokowane przez [[User:$1|$1]].\nUzasadnienie blokady: <em>$2</em>.",
        "filereadonlyerror": "Nie można zmodyfikować pliku „$1”, ponieważ repozytorium plików „$2” jest w trybie tylko do odczytu.\n\nBlokujący go administrator systemu podał następujący powód: „$3”.",
-       "invalidtitle-knownnamespace": "Nieprawidłowa nazwa w obszarze nazw \"$2\" o treści \"$3\"",
-       "invalidtitle-unknownnamespace": "Nieprawidłowa nazwa z nieznaną liczbą przestrzeni nazw  $1  o treści \"$2\"",
+       "invalidtitle-knownnamespace": "Nieprawidłowa nazwa \"$3\" w przestrzeni nazw \"$2\"",
+       "invalidtitle-unknownnamespace": "Nieprawidłowy tytuł \"$2\" z nieznanym numerem przestrzeni nazw $1",
        "exception-nologin": "Nie jesteś zalogowany/a",
        "exception-nologin-text": "Zaloguj się, aby mieć dostęp do tej strony lub akcji.",
        "exception-nologin-text-manual": "Musisz $1 aby mieć dostęp do tej strony lub akcji.",
        "virus-badscanner": "Zła konfiguracja – nieznany skaner antywirusowy ''$1''",
        "virus-scanfailed": "skanowanie nieudane (błąd $1)",
-       "virus-unknownscanner": "nieznany antivirus:",
+       "virus-unknownscanner": "nieznany program antywirusowy:",
        "logouttext": "'''Nie jesteś już zalogowany.'''\n\nZauważ, że do momentu wyczyszczenia pamięci podręcznej przeglądarki niektóre strony mogą wyglądać tak, jakbyś wciąż był zalogowany.",
        "cannotlogoutnow-title": "Nie możesz się teraz wylogować",
        "cannotlogoutnow-text": "Podczas używania $1 wylogowanie nie jest niemożliwe.",
        "preview": "Podgląd",
        "showpreview": "Pokaż podgląd",
        "showdiff": "Podgląd zmian",
-       "blankarticle": "<strong>Uwaga:</strong> Strona, którą masz zamiar utworzyć jest pusta.\nJeżeli klikniesz \"{{int:savearticle}}\" ponownie, strona zostanie utworzona bez jakiejkolwiek treści.",
+       "blankarticle": "<strong>Uwaga:</strong> Strona, którą masz zamiar utworzyć jest pusta.\nJeżeli klikniesz \"$1\" ponownie, strona zostanie utworzona bez jakiejkolwiek treści.",
        "anoneditwarning": "<strong>Uwaga:</strong> Nie jesteś zalogowany. Jeśli wykonasz jakąkolwiek zmianę, Twój adres IP będzie widoczny publicznie. Jeśli <strong>[$1 zalogujesz się]</strong> lub <strong>[$2 utworzysz konto]</strong>, Twoje zmiany zostaną przypisane do konta, wraz z innymi korzyściami.",
        "anonpreviewwarning": "''Nie jesteś zalogowany. Jeśli zapiszesz zmiany, w historii edycji strony zostanie umieszczony Twój adres IP.''",
        "missingsummary": "'''Uwaga:''' Nie wprowadz{{GENDER:|iłeś|iłaś|ono}} opisu zmian.\nJeżeli nie chcesz go wprowadzać, naciśnij przycisk „Zapisz” jeszcze raz.",
-       "selfredirect": "<strong>Ostrzeżenie:</strong> Przekierowujesz tę stronę do niej samej.\nByć może został przez Ciebie wybrany zły cel przekierowania lub edytujesz niewłaściwą stronę.\nJeżeli ponownie klikniesz „{{int:savearticle}}”, przekierowanie zostanie utworzone.",
+       "selfredirect": "<strong>Ostrzeżenie:</strong> Przekierowujesz tę stronę do niej samej.\nByć może został przez Ciebie wybrany zły cel przekierowania lub edytujesz niewłaściwą stronę.\nJeżeli ponownie klikniesz „$1”, przekierowanie zostanie utworzone.",
        "missingcommenttext": "Wprowadź komentarz poniżej.",
-       "missingcommentheader": "<strong>Uwaga:</strong> treść tytułu komentarza jest pusta.\nJeśli ponownie klikniesz „{{int:savearticle}}”, zmiany zostaną zapisane bez niego.",
+       "missingcommentheader": "<strong>Uwaga:</strong> treść tytułu komentarza jest pusta.\nJeśli ponownie klikniesz „$1”, zmiany zostaną zapisane bez niego.",
        "summary-preview": "Podgląd opisu zmian:",
        "subject-preview": "Podgląd tematu:",
        "previewerrortext": "Wystąpił błąd podczas próby podglądu Twoich zmian.",
        "editingsection": "Edytujesz $1 (sekcja)",
        "editingcomment": "Edytujesz $1 (nowa sekcja)",
        "editconflict": "Konflikt edycji: $1",
-       "explainconflict": "Ktoś zmienił treść strony w trakcie Twojej edycji.\nGórne pole zawiera tekst strony aktualnie zapisany w bazie danych.\nTwoje zmiany znajdują się w dolnym polu.\nBy wprowadzić swoje zmiany, musisz zmodyfikować tekst z górnego pola.\n'''Tylko''' tekst z górnego pola zostanie zapisany w bazie, gdy wciśniesz „{{int:savearticle}}”.",
+       "explainconflict": "Ktoś zmienił treść strony w trakcie Twojej edycji.\nGórne pole zawiera tekst strony aktualnie zapisany w bazie danych.\nTwoje zmiany znajdują się w dolnym polu.\nBy wprowadzić swoje zmiany, musisz zmodyfikować tekst z górnego pola.\n'''Tylko''' tekst z górnego pola zostanie zapisany w bazie, gdy wciśniesz „$1”.",
        "yourtext": "Twój tekst",
        "storedversion": "Zapisana wersja",
        "nonunicodebrowser": "'''Uwaga! Twoja przeglądarka nie rozpoznaje poprawnie kodowania UTF‐8 (Unicode).\nZ tego powodu wszystkie znaki, których przeglądarka nie rozpoznaje, zostały zastąpione ich kodami szesnastkowymi.'''",
        "readonlywarning": "<strong>Uwaga! Baza danych została zablokowana do celów administracyjnych. W tej chwili nie można zapisać nowej wersji strony. Jeśli chcesz, możesz skopiować ją do pliku, aby móc zapisać ją później.</strong>\n\nAdministrator systemu, który zablokował bazę, podał następujący powód: $1",
        "protectedpagewarning": "'''Uwaga! Możliwość modyfikacji tej strony została zabezpieczona. Mogą ją edytować jedynie użytkownicy z uprawnieniami administratora.'''\nOstatni wpis z rejestru jest pokazany poniżej.",
        "semiprotectedpagewarning": "'''Uwaga!''' Ta strona została zabezpieczona i tylko zarejestrowani użytkownicy mogą ją edytować.\nOstatni wpis z rejestru jest pokazany poniżej.",
-       "cascadeprotectedwarning": "<strong>Uwaga:</strong> Ta strona została zabezpieczona i tylko użytkownicy z uprawnieniami administratora mogą ją edytować. Została ona osadzona w {{PLURAL:$1|następującej stronie, która została zabezpieczona|następujących stronach, które zostały zabezpieczone}} z włączoną opcją dziedziczenia:",
+       "cascadeprotectedwarning": "<strong>Uwaga:</strong> Ta strona została zabezpieczona i tylko użytkownicy z [[Special:ListGroupRights|określonymi uprawnieniami]] mogą ją edytować. Została ona osadzona w {{PLURAL:$1|następującej stronie, która została zabezpieczona|następujących stronach, które zostały zabezpieczone}} z włączoną opcją dziedziczenia:",
        "titleprotectedwarning": "'''Uwaga! Utworzenie strony o tej nazwie zostało zabezpieczone. Do jej utworzenia wymagane są [[Special:ListGroupRights|specyficzne uprawnienia]].'''\nOstatni wpis z rejestru jest pokazany poniżej.",
        "templatesused": "{{PLURAL:$1|Szablon użyty|Szablony użyte}} w tym artykule:",
        "templatesusedpreview": "{{PLURAL:$1|Szablon użyty|Szablony użyte}} w tym podglądzie:",
        "search-file-match": "(odpowiada zawartości pliku)",
        "search-suggest": "Czy chodziło Ci o: $1",
        "search-rewritten": "Wyświetlone wyniki dla $1. zamiast tego wyszukaj $2.",
-       "search-interwiki-caption": "Projekty siostrzane",
+       "search-interwiki-caption": "Wyniki z projektów siostrzanych",
        "search-interwiki-default": "Wyniki od $1:",
        "search-interwiki-more": "(więcej)",
        "search-interwiki-more-results": "Więcej wyników",
        "saveusergroups": "Zapisz grupy {{GENDER:$1|użytkownika|użytkowniczki}}",
        "userrights-groupsmember": "Należy do:",
        "userrights-groupsmember-auto": "Na stałe należy do:",
-       "userrights-groups-help": "Możesz zmienić przynależność tego użytkownika do podanych grup:\n* Zaznaczone pole oznacza przynależność użytkownika do danej grupy.\n* Niezaznaczone pole oznacza, że użytkownik nie należy do danej grupy.\n* Gwiazdka * informuje, że nie możesz usunąć użytkownika z grupy po dodaniu do niej lub dodać po usunięciu.",
+       "userrights-groups-help": "Możesz zmienić przynależność tego użytkownika do podanych grup:\n* Zaznaczone pole oznacza przynależność użytkownika do danej grupy.\n* Niezaznaczone pole oznacza, że użytkownik nie należy do danej grupy.\n* Gwiazdka * informuje, że nie możesz usunąć użytkownika z grupy po dodaniu do niej lub dodać po usunięciu.\n* Kratka # informuje, że możesz tylko skrócić czas wygaśnięcia członkostwa w danej grupie; nie możesz go wydłużać.",
        "userrights-reason": "Powód:",
        "userrights-no-interwiki": "Nie masz dostępu do edycji uprawnień na innych wiki.",
        "userrights-nodatabase": "Baza danych $1 nie istnieje lub nie jest lokalna.",
        "userrights-expiry-options": "1 dzień:1 day,1 tydzień:1 week,1 miesiąc:1 month,3 miesiące:3 months,6 miesięcy:6 months,1 rok:1 year",
        "userrights-invalid-expiry": "Termin przynależności do grupy „$1“ jest nieprawidłowy.",
        "userrights-expiry-in-past": "Termin przynależności do grupy „$1“ jest z przeszłości.",
+       "userrights-cannot-shorten-expiry": "Nie możesz przedłużyć czasu wygaśnięcia członkostwa w grupie \"$1\". Tylko użytkownicy z uprawnieniem dodawania do i usuwania z tej grupy mogą wydłużać czas wygaśnięcia.",
        "userrights-conflict": "Konflikt zmiany uprawnień użytkownika! Proszę sprawdzić i potwierdzić swoje zmiany.",
        "group": "Grupa:",
        "group-user": "Użytkownicy",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Pokaż",
        "rcfilters-activefilters": "Aktywne filtry",
+       "rcfilters-quickfilters": "Zapisane ustawienia filtrów",
+       "rcfilters-quickfilters-placeholder-title": "Nie masz jeszcze zapisanych linków",
+       "rcfilters-quickfilters-placeholder-description": "Aby zapisać ustawienia filtrów i używać ich później, kliknij ikonkę zakładki w polu aktywnych filtrów znajdującym się niżej.",
+       "rcfilters-savedqueries-defaultlabel": "Zapisane filtry",
+       "rcfilters-savedqueries-rename": "Zmień nazwę",
+       "rcfilters-savedqueries-setdefault": "Ustaw jako domyślne",
+       "rcfilters-savedqueries-unsetdefault": "Usuń ustawienie jako domyślne",
+       "rcfilters-savedqueries-remove": "Usuń",
+       "rcfilters-savedqueries-new-name-label": "Nazwa",
+       "rcfilters-savedqueries-apply-label": "Zapisz ustawienia",
+       "rcfilters-savedqueries-cancel-label": "Anuluj",
+       "rcfilters-savedqueries-add-new-title": "Zapisz bieżące ustawienia filtrów",
        "rcfilters-restore-default-filters": "Przywróć domyślne filtry",
        "rcfilters-clear-all-filters": "Wyczyść filtry",
        "rcfilters-search-placeholder": "Filtruj ostatnie zmiany (przeglądaj lub zacznij wpisywać)",
        "rcfilters-filter-unregistered-label": "Niezarejestrowani",
        "rcfilters-filter-unregistered-description": "Niezalogowani",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Ten filtr koliduje z {{PLURAL:$2|poniższym filtrem|poniższymi filtrami}} doświadczenia, {{PLURAL:$2|który wyszukuje|które wyszukują}} tylko zarejestrowanych użytkowników: $1",
-       "rcfilters-filtergroup-authorship": "Autorstwo edycji",
-       "rcfilters-filter-editsbyself-label": "Moje edycje",
-       "rcfilters-filter-editsbyself-description": "Edycje dokonane przez Ciebie.",
-       "rcfilters-filter-editsbyother-label": "Edycje inne niż Twoje",
-       "rcfilters-filter-editsbyother-description": "Edycje wykonane przez innych (nie Twoje).",
+       "rcfilters-filtergroup-authorship": "Autorstwo wkładu",
+       "rcfilters-filter-editsbyself-label": "Zmiany dokonane przeze mnie",
+       "rcfilters-filter-editsbyself-description": "Czynności dokonane przez Ciebie.",
+       "rcfilters-filter-editsbyother-label": "Zmiany dokonane przez innych",
+       "rcfilters-filter-editsbyother-description": "Wszystkie zmiany oprócz Twoich.",
        "rcfilters-filtergroup-userExpLevel": "Poziom doświadczenia (tylko o zarejestrowanych użytkownikach)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Filtry doświadczenia wyszukują tylko edycje zarejestrowanych użytkowników, więc ten filtr koliduje z filtrem „Niezarejestrowani”.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filtr \"Niezarejestrowani\" koliduje z jednym lub więcej filtrów z filtrów poziomu doświadczenia, które służą do wyszukiwania wkładu tylko zarejestrowanych użytkowników. Kolidujące filtry zostały odpowiednio oznaczone na pasku Aktywnych filtrów.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Początkujący",
        "rcfilters-filter-user-experience-level-newcomer-description": "Mniej niż 10 edycji i 4 dni aktywności.",
        "rcfilters-filter-user-experience-level-learner-label": "Uczący się",
-       "rcfilters-filter-user-experience-level-learner-description": "Więcej dni aktywności i edycji niż „Nowicjusze”, ale mniej niż „Doświadczeni użytkownicy”.",
+       "rcfilters-filter-user-experience-level-learner-description": "Większe doświadczenie niż „Nowicjusze”, ale mniejsze niż „Doświadczeni użytkownicy”.",
        "rcfilters-filter-user-experience-level-experienced-label": "Doświadczeni użytkownicy",
        "rcfilters-filter-user-experience-level-experienced-description": "Ponad 30 dni aktywności i 500 edycji.",
        "rcfilters-filtergroup-automated": "Zmiany zautomatyzowane",
        "rcfilters-filter-minor-description": "Zmiany, które autor oznaczył jako drobne.",
        "rcfilters-filter-major-label": "Zmiany nie oznaczone jako drobne",
        "rcfilters-filter-major-description": "Zmiany nie oznaczone jako drobne.",
+       "rcfilters-filtergroup-watchlist": "Strony z listy obserwowanych",
+       "rcfilters-filter-watchlist-watched-label": "Z listy obserwowanych",
+       "rcfilters-filter-watchlist-watched-description": "Zmiany na stronach, które masz na liście obserwowanych.",
+       "rcfilters-filter-watchlist-watchednew-label": "Nowe zmiany na obserwowanych stronach",
+       "rcfilters-filter-watchlist-watchednew-description": "Zmiany na obserwowanych stronach, których jeszcze nie odwiedziłeś.",
+       "rcfilters-filter-watchlist-notwatched-label": "Tylko spoza obserwowanych",
+       "rcfilters-filter-watchlist-notwatched-description": "Wszystko oprócz zmian na obserwowanych przez ciebie stronach.",
        "rcfilters-filtergroup-changetype": "Rodzaj zmiany",
        "rcfilters-filter-pageedits-label": "Edycje strony",
-       "rcfilters-filter-pageedits-description": "Edycje treści, stron dyskusji, opisów kategorii...",
+       "rcfilters-filter-pageedits-description": "Edycje treści, stron dyskusji, opisów kategorii",
        "rcfilters-filter-newpages-label": "Tworzenie stron",
        "rcfilters-filter-newpages-description": "Zmiany prowadzące do utworzenia nowych stron.",
        "rcfilters-filter-categorization-label": "Zmiany kategorii",
        "rcfilters-filter-categorization-description": "Dodanie lub usunięcie strony z kategorii",
        "rcfilters-filter-logactions-label": "Działania rejestrowane",
-       "rcfilters-filter-logactions-description": "Działania administracyjne, tworzenie kont, usuwanie stron, przesyłanie plików...",
+       "rcfilters-filter-logactions-description": "Działania administracyjne, tworzenie kont, usuwanie stron, przesyłanie plików",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Filtr „Drobne zmiany” koliduje z jednym lub wieloma filtrami Rodzaju zmian, ponieważ niektóre rodzaje zmian nie mogą być uznawane za  „drobne”. Kolidujące filtry zostały powyżej odpowiednio zaznaczone na pasku aktywnych filtrów.",
        "rcfilters-hideminor-conflicts-typeofchange": "Niektóre rodzaje zmian nie mogą być uznawane za „drobne”, dlatego ten filtr koliduje z następującymi filtrami Rodzaju zmian: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Ten filtr Rodzaju zmian koliduje z filtrem „Drobne zmiany”. Nie wszystkie zmiany mogą być uznawane za „drobne”.",
+       "rcfilters-filtergroup-lastRevision": "Ostatnia wersja",
+       "rcfilters-filter-lastrevision-label": "Ostatnie wersje",
+       "rcfilters-filter-lastrevision-description": "Tylko najnowsze zmiany dla każdej ze stron.",
+       "rcfilters-filter-previousrevision-label": "Wcześniejsze wersje",
+       "rcfilters-filter-previousrevision-description": "Wszystkie edycje, które nie są najnowszą zmianą strony.",
+       "rcfilters-filter-excluded": "Wykluczono",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:nie z</strong> $1",
+       "rcfilters-view-tags": "Znaczniki",
        "rcnotefrom": "Poniżej {{PLURAL:$5|pokazano zmianę|pokazano zmiany}} {{PLURAL:$5|wykonaną|wykonane}} po <strong>$3, $4</strong> (nie więcej niż '''$1''' pozycji).",
        "rclistfromreset": "Zresetuj wybór daty",
        "rclistfrom": "Pokaż nowe zmiany od $3 $2",
        "rcshowhidecategorization": "$1 kategoryzację stron",
        "rcshowhidecategorization-show": "Pokaż",
        "rcshowhidecategorization-hide": "Ukryj",
-       "rclinks": "Pokaż ostatnie $1 zmian w ciągu ostatnich $2 dni.<br />$3",
+       "rclinks": "Pokaż ostatnie $1 zmian w ciągu ostatnich $2 dni.",
        "diff": "różn.",
        "hist": "hist.",
        "hide": "Ukryj",
        "booksources-search-legend": "Szukaj informacji o książkach",
        "booksources-search": "Szukaj",
        "booksources-text": "Poniżej znajduje się lista odnośników do innych witryn, które pośredniczą w sprzedaży nowych i używanych książek, a także mogą posiadać dalsze informacje na temat poszukiwanej przez Ciebie książki.",
-       "booksources-invalid-isbn": "Podany numer ISBN został rozpoznany jako nieprawidłowy. Sprawdź czy podany numer zgadza się z numerem zaczerpniętym ze źródła.",
+       "booksources-invalid-isbn": "Podany numer ISBN został rozpoznany jako nieprawidłowy. Sprawdź, czy zgadza się z numerem zaczerpniętym ze źródła.",
        "magiclink-tracking-rfc": "Strony używające magicznych linków RFC",
        "magiclink-tracking-rfc-desc": "Ta strona zawiera magiczne linki do RFC. Zobacz w [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org], jak dokonać migracji.",
        "magiclink-tracking-pmid": "Strony używające magicznych linków PMID",
        "enotif_body_intro_moved": "Strona projektu {{SITENAME}} o nazwie $1 została przeniesiona $PAGEEDITDATE przez {{gender:$2|$2}}, zobacz aktualną wersję na: $3",
        "enotif_body_intro_restored": "Strona projektu {{SITENAME}} o nazwie $1 została przywrócona $PAGEEDITDATE przez {{gender:$2|$2}}, zobacz aktualną wersję na: $3",
        "enotif_body_intro_changed": "Strona projektu {{SITENAME}} o nazwie $1 została zmieniona $PAGEEDITDATE przez {{gender:$2|$2}}, zobacz aktualną wersję na: $3",
-       "enotif_lastvisited": "Zobacz na stronie $1 wszystkie zmiany od Twojej ostatniej wizyty.",
-       "enotif_lastdiff": "Zobacz na stronie $1 tę zmianę.",
+       "enotif_lastvisited": "Aby obejrzeć wszystkie wszystkie zmiany od Twojej ostatniej wizyty, zobacz $1",
+       "enotif_lastdiff": "Aby obejrzeć tę zmianę, zobacz $1",
        "enotif_anon_editor": "użytkownik anonimowy $1",
        "enotif_body": "Szanowny $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nOpis zmiany: $PAGESUMMARY $PAGEMINOREDIT\n\nKontakt do autora:\nmail – $PAGEEDITOR_EMAIL\nwiki – $PAGEEDITOR_WIKI\n\nW przypadku kolejnych zmian nowe powiadomienia nie zostaną wysłane, dopóki nie odwiedzisz tej strony jako zalogowany. Możesz także zresetować wszystkie flagi powiadomień na swojej liście stron obserwowanych.\n\nWiadomość z systemu powiadomień {{GRAMMAR:D.lp|{{SITENAME}}}}\n\n--\nW celu zmiany ustawień swojej listy obserwowanych odwiedź\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nUsunięcie strony z listy obserwowanych możliwe jest na stronie\n$UNWATCHURL\n\nPomoc\n$HELPPAGE",
        "created": "utworzona",
        "sp-contributions-uploads": "przesłane pliki",
        "sp-contributions-logs": "rejestry",
        "sp-contributions-talk": "dyskusja",
-       "sp-contributions-userrights": "zarządzanie uprawnieniami użytkownika",
+       "sp-contributions-userrights": "zarządzanie uprawnieniami {{GENDER:$1|użytkownika|użytkowniczki}}",
        "sp-contributions-blocked-notice": "To konto użytkownika jest obecnie zablokowane. Ostatni wpis rejestru blokad jest pokazany poniżej.",
        "sp-contributions-blocked-notice-anon": "Ten adres IP jest obecnie zablokowany.\nOstatni wpis rejestru blokad jest pokazany poniżej.",
        "sp-contributions-search": "Szukaj wkładu",
        "blocklist": "Zablokowani użytkownicy",
        "autoblocklist": "Blokady automatyczne",
        "autoblocklist-submit": "Szukaj",
+       "autoblocklist-legend": "Lista blokad automatycznych",
        "autoblocklist-localblocks": "{{PLURAL:$1|Lokalna blokada automatyczna|Lokalne blokady automatyczne}}",
+       "autoblocklist-total-autoblocks": "Całkowita liczba automatycznych blokad: $1",
+       "autoblocklist-empty": "Lista blokad automatycznych jest pusta.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Inna blokada automatyczna|Inne blokady automatyczne}}",
        "ipblocklist": "Zablokowani użytkownicy",
        "ipblocklist-legend": "Znajdź zablokowanego użytkownika",
        "tooltip-pt-mycontris": "Lista {{GENDER:|moich}} edycji",
        "tooltip-pt-anoncontribs": "Lista edycji wykonanych z tego adresu IP",
        "tooltip-pt-login": "Zachęcamy do zalogowania się, choć nie jest to obowiązkowe.",
+       "tooltip-pt-login-private": "Należy się zalogować, aby korzystać z tej wiki",
        "tooltip-pt-logout": "Wyloguj",
        "tooltip-pt-createaccount": "Zachęcamy do stworzenia konta i zalogowania, ale nie jest to obowiązkowe.",
        "tooltip-ca-talk": "Dyskusja o zawartości tej strony",
        "newimages-legend": "Filtruj",
        "newimages-label": "Nazwa pliku (lub jej fragment):",
        "newimages-user": "Adres IP lub nazwa użytkownika",
+       "newimages-newbies": "Pokaż wyłącznie wkład nowych użytkowników",
        "newimages-showbots": "Pokaż pliki przesłane przez boty",
        "newimages-hidepatrolled": "Ukryj sprawdzone pliki",
+       "newimages-mediatype": "Rodzaj plików:",
        "noimages": "Brak plików do pokazania.",
        "gallery-slideshow-toggle": "Przełączanie miniatur",
        "ilsubmit": "Szukaj",
        "confirmrecreate": "{{GENDER:$1|Użytkownik|Użytkowniczka}} [[User:$1|$1]] ([[User talk:$1|dyskusja]]) {{GENDER:$1|usunął|usunęła}} tę stronę po tym, jak rozpocząłeś/rozpoczęłaś jej edycję, podając jako powód usunięcia:\n: <em>$2</em>\nPotwierdź, że na pewno chcesz odtworzyć tę stronę.",
        "confirmrecreate-noreason": "{{GENDER:$1|Użytkownik|Użytkowniczka}} [[User:$1|$1]] ([[User talk:$1|dyskusja]]) {{GENDER:$1|usunął|usunęła}} tę stronę po tym, jak rozpocząłeś/rozpoczęłaś jej edycję. Potwierdź, że naprawdę chcesz odtworzyć tę stronę.",
        "recreate": "Utwórz powtórnie",
+       "confirm-purge-title": "Wyczyść pamięć podręczną tej strony",
        "confirm_purge_button": "Wyczyść",
        "confirm-purge-top": "Wyczyścić pamięć podręczną dla tej strony?",
        "confirm-purge-bottom": "Odświeżenie strony wyczyści pamięć podręczną i wymusi pokazanie jej aktualnej wersji.",
        "imgmultipageprev": "← poprzednia strona",
        "imgmultipagenext": "następna strona →",
        "imgmultigo": "Przejdź",
-       "imgmultigoto": "Idź do $1 strony",
+       "imgmultigoto": "Idź do strony: $1",
        "img-lang-default": "(język domyślny)",
        "img-lang-info": "Wyświetl tę ilustrację w $1. $2",
        "img-lang-go": "Dalej",
        "tags-create-reason": "Powód:",
        "tags-create-submit": "Utwórz",
        "tags-create-no-name": "Musisz podać nazwę znacznika.",
-       "tags-create-invalid-chars": "Nazwy znaczników nie mogą zawierać przecinków (<code>,</code>) ani ukośników (<code>/</code>).",
+       "tags-create-invalid-chars": "Nazwy znaczników nie mogą zawierać przecinków (<code>,</code>), pionowych kresek (<code>|</code>), ani ukośników (<code>/</code>).",
        "tags-create-invalid-title-chars": "Nazwy znaczników nie mogą zawierać znaków, które nie mogą być używane w tytułach stron.",
        "tags-create-already-exists": "Znacznik „$1” już istnieje.",
        "tags-create-warnings-above": "Następujące {{PLURAL:$2|ostrzeżenie jest|ostrzeżenia są}} wynikiem próby utworzenia znacznika „$1”:",
        "logentry-managetags-create": "$1 {{GENDER:$2|utworzył|utworzyła}} znacznik „$4”",
        "logentry-managetags-delete": "$1 {{GENDER:$2|usunął|usunęła}} znacznik „$4” (usunięty z $5 {{PLURAL:$5|wersji lub wpisu dziennika|wersji i/lub wpisów dziennika}})",
        "logentry-managetags-activate": "$1 aktywował{{GENDER:$2||a}} znacznik \"$4\" do korzystania przez uczestników i boty",
-       "logentry-managetags-deactivate": "$1 wyłączył{{GENDER:$2||a}} znacznik \"$4\" z korzystania przez uczestników i boty",
+       "logentry-managetags-deactivate": "$1 wyłączył{{GENDER:$2||a}} znacznik \"$4\" z korzystania przez użytkowników i boty",
        "log-name-tag": "Rejestr znaczników",
        "log-description-tag": "Ta strona pokazuje zarejestrowane operacje dodawania lub usuwania [[Special:Tags|znaczników]] z poszczególnych wersji lub wpisów w rejestrze. Niniejszy rejestr nie uwzględnia oznakowań, gdy dokonywane są w trakcie edycji, usuwania lub podobnej operacji.",
        "logentry-tag-update-add-revision": "$1 {{GENDER:$2|dodał|dodała}} {{PLURAL:$7|znacznik|znaczniki}} $6 do wersji $4 strony $3",
        "mediastatistics-header-audio": "Audio",
        "mediastatistics-header-video": "Filmy",
        "mediastatistics-header-multimedia": "Mieszane multimedia",
-       "mediastatistics-header-office": "Biuro",
+       "mediastatistics-header-office": "Biurowe",
        "mediastatistics-header-text": "Tekstowe",
        "mediastatistics-header-executable": "Pliki wykonywalne",
        "mediastatistics-header-archive": "Formaty skompresowane",
        "mw-widgets-titleinput-description-redirect": "przekierowanie do $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Dodaj kategorię...",
        "mw-widgets-usersmultiselect-placeholder": "Dodaj więcej...",
+       "date-range-from": "Od daty:",
+       "date-range-to": "Do daty:",
        "sessionmanager-tie": "Nie można łączyć kilku rodzajów uwierzytelniania dla zapytania: $1.",
        "sessionprovider-generic": "sesje $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sesje na podstawie cookie",
        "log-action-filter-managetags-activate": "Aktywacja znacznika",
        "log-action-filter-managetags-deactivate": "Deaktywacja znacznika",
        "log-action-filter-move-move": "Przeniesienie bez nadpisania przekierowania",
-       "log-action-filter-move-move_redir": "Przeniesienie ponad przekierowaniem",
+       "log-action-filter-move-move_redir": "Przeniesienie z nadpisaniem przekierowania",
        "log-action-filter-newusers-create": "Utworzenie przez anonimowego użytkownika",
        "log-action-filter-newusers-create2": "Utworzenie przez zarejestrowanego użytkownika",
        "log-action-filter-newusers-autocreate": "Automatyczne utworzenie",
        "rawhtml-notallowed": "Znaczniki &lt;html&gt; nie mogą być stosowane poza zwykłymi stronami.",
        "gotointerwiki": "Opuszczasz {{SITENAME}}",
        "gotointerwiki-invalid": "Podany tytuł jest nieprawidłowy.",
-       "gotointerwiki-external": "Zamierzasz przejść z witryny {{SITENAME}} do innej witryny:\n [[$2]].\n\n[$1 Kliknij, aby przejść do: $1]."
+       "gotointerwiki-external": "Zamierzasz przejść opuścić {{SITENAME}} by odwiedzić:\n [[$2]], która jest oddzielną witryną internetową.\n\n[$1 Kontynuuj do: $1].",
+       "undelete-cantedit": "Nie możesz odtworzyć tej strony, ponieważ nie masz uprawnień do edytowania tej strony.",
+       "undelete-cantcreate": "Nie możesz odtworzyć tej strony, ponieważ nie istnieje strona o tej nazwie, a nie masz uprawnień do jej utworzenia.",
+       "pagedata-title": "Dane ze strony",
+       "pagedata-not-acceptable": "Nie znaleziono pasującego formatu. Obsługiwane typy MIME: $1",
+       "pagedata-bad-title": "Niepoprawny tytuł: $1."
 }
index 5ac7c99..2d339bb 100644 (file)
        "externaldberror": "Ò che a l'é rivaje n'eror con la base ëd dàit d'autenticassion esterna, ò pura a l'é chiel che a l'é nen autorisà a agiornesse sò cont estern.",
        "login": "Conession",
        "nav-login-createaccount": "Creé un cont o rintré ant ël sistema",
-       "userlogin": "Creé un cont o rintré ant ël sistema",
-       "userloginnocreate": "Conession",
        "logout": "Seurte da 'nt ël sistema",
        "userlogout": "Dësconession",
        "notloggedin": "Nen rintrà ant ël sistema",
        "userlogin-noaccount": "Ha-lo nen un cont?",
        "userlogin-joinproject": "Ch'as gionza a {{SITENAME}}",
-       "nologin": "Ha-lo ancó nen un cont? $1.",
-       "nologinlink": "Creé un cont",
        "createaccount": "Creé un cont",
-       "gotaccount": "Ha-lo già un sò cont? $1.",
-       "gotaccountlink": "Ch'a rintra ant ël sistema",
-       "userlogin-resetlink": "A l'ha dësmentià ij sò detaj për intré ant ël sistema?",
        "userlogin-resetpassword-link": "Ciav dësmentià?",
        "userlogin-helplink2": "Agiut a la conession",
        "userlogin-loggedin": "A l'é già rintrà an ël sistema tanme {{GENDER:$1|$1}}.\nCh'a deuvra ël formolari sì-sota për rintré coma n'àutr n'utent.",
        "createacct-another-email-ph": "Buté l'adrëssa ëd pòsta eletrònica",
        "createaccountmail": "Dovré na ciav temporania d'ancàpit e mandela a l'adrëssa ëd pòsta eletrònica spessificà",
        "createacct-realname": "Nòm ver (opsional)",
-       "createaccountreason": "Rason:",
        "createacct-reason": "Rason",
        "createacct-reason-ph": "Përchè a crea n'àutr cont",
        "createacct-submit": "Ch'a crea sò cont",
        "preview": "Previsualisassion",
        "showpreview": "Mostré na preuva",
        "showdiff": "Smon-me le modìfiche",
-       "blankarticle": "<strong>Atension:</strong> La pàgina ch'a l'ha creà a l'é veuida. S'a sgnaca torna «{{int:savearticle}}», la pàgina a sarà creà sensa contnù.",
+       "blankarticle": "<strong>Atension:</strong> La pàgina ch'a l'ha creà a l'é veuida. S'a sgnaca torna «$1», la pàgina a sarà creà sensa contnù.",
        "anoneditwarning": "<strong>Atension:<strong> A l'é nen rintrà ant ël sistema. Soa adrëssa IP a së sc-iairërà s'a fà dle modìfiche. Si chiel a <strong>[$1 rintra ant ël sistema]</strong> o <strong>[$2 a crea an cont]</strong>, soe modìfiche a saran atribuìe a sò stranòm, ansema a d'àutri vantagg.",
        "anonpreviewwarning": "''A l'é nen rintrà ant ël sistema. An salvand a sarà memorisà soa adrëssa IP ant la stòria dle modìfiche ëd sa pàgina.''",
-       "missingsummary": "'''Nòta:''' a l'ha butà gnun resumé dla modìfica. Se a sgnaca «{{int:savearticle}}» n'àutra vira, soa modìfica a resterà salvà sensa resumé.",
-       "selfredirect": "<strong>Atension:</strong> A l'é an camin ch'a ridiression-a sa pàgina a chila-midema.\nMiraco a l'ha spessificà ël bërsaj sbalià për la ridiression, opura a l'é an camin ch'a modìfica la pàgina sbalià.\nS'a sgnaca torna ansima a «{{int:savearticle}}», la ridiression a sarà creà istess.",
+       "missingsummary": "'''Nòta:''' a l'ha butà gnun resumé dla modìfica. Se a sgnaca «$1» n'àutra vira, soa modìfica a resterà salvà sensa resumé.",
+       "selfredirect": "<strong>Atension:</strong> A l'é an camin ch'a ridiression-a sa pàgina a chila-midema.\nMiraco a l'ha spessificà ël bërsaj sbalià për la ridiression, opura a l'é an camin ch'a modìfica la pàgina sbalià.\nS'a sgnaca torna ansima a «$1», la ridiression a sarà creà istess.",
        "missingcommenttext": "Për piasì, che a buta un coment sì-sota.",
-       "missingcommentheader": "'''Ch'a arcòrda:''' A l'ha pa dàit ëd soget o d'intestassion për cost coment.\nSe a sgnaca torna «{{int:savearticle}}», soa modìfica a sarà salvà sensa gnun-a intestassion.",
+       "missingcommentheader": "'''Ch'a ten-a da ment:''' A l'ha pa dàit ëd soget o d'intestassion për cost coment.\nSe a sgnaca torna «$1», soa modìfica a sarà salvà sensa gnun-a intestassion.",
        "summary-preview": "Preuva dël resumé:",
        "subject-preview": "Preuva dl'oget/intestassion:",
        "previewerrortext": "A l'é rivaje n'eror durant ël tentativ ëd previsualisassion ëd soe modìfiche.",
        "editingsection": "Modìfica ëd $1 (session)",
        "editingcomment": "Modìfica ëd $1 (neuva session)",
        "editconflict": "Conflit ëd modìfica: $1",
-       "explainconflict": "Cheidun d'àutr a l'ha salvà soa version dl'artìcol antramentre che chiel as prontava la soa.\nËl quàder ëd modìfica dë dzora a mostra ël test ëd l'artìcol coma a resta adess (visadì, lòn che a-i é ant sla Ragnà). Soe modìfiche a stan ant ël quàder dë sota.\nËn volend a peul gionté soe modìfiche ant ël quàder dë dzora.\n'''Mach''' ël test ant ël quàder dë dzora a sarà salvà, ën sgnacand ël boton \"{{int:savearticle}}\".",
+       "explainconflict": "Cheidun d'àutr a l'ha salvà soa version dl'artìcol antramentre che chiel as prontava la soa.\nËl quàder ëd modìfica dë dzora a mostra ël test ëd l'artìcol coma a resta adess (visadì, lòn che a-i é ant sla Ragnà). Soe modìfiche a stan ant ël quàder dë sota.\nËn volend a peul gionté soe modìfiche ant ël quàder dë dzora.\n'''Mach''' ël test ant ël quàder dë dzora a sarà salvà, ën sgnacand ël boton \"$1\".",
        "yourtext": "Sò test",
        "storedversion": "La version memorisà",
        "nonunicodebrowser": "'''A L'EUJ! Sò programa ëd navigassion a marcia pa giust con lë stàndard Unicode. I soma obligà a dovré dij truschin përchè a peula salvesse sò artìcoj sensa problema: ij caràter che a son nen ASCII a jë s-ciairerà ant ël quàder ëd modìfica dël test coma còdes esadecimaj.'''",
        "right-editsemiprotected": "Modifiché le pàgine protegiùe con «{{int:protect-level-autoconfirmed}}»",
        "right-editcontentmodel": "Modifiché ël model ëd contnù ëd na pàgina",
        "right-editinterface": "Modifiché l'antërfacia utent",
-       "right-editusercssjs": "Modifiché j'archivi CSS e JavaScript d'àutri utent",
        "right-editusercss": "Modifiché j'archivi CSS d'àutri utent",
        "right-edituserjs": "Modifiché j'archivi JavaScript d'àutri utent",
        "right-editmyusercss": "Modifiché ij sò archivi CSS utent",
        "rcshowhidemine": "$1 mie modìfiche",
        "rcshowhidemine-show": "Smon-e",
        "rcshowhidemine-hide": "Stërmé",
-       "rclinks": "Mostré j'ùltime $1 modìfiche ëd j'ùltim $2 dì<br />$3",
+       "rclinks": "Mostré j'ùltime $1 modìfiche ëd j'ùltim $2 dì",
        "diff": "dif.",
        "hist": "stòria",
        "hide": "Stërmé",
        "undeleteviewlink": "vëdde",
        "undeleteinvert": "Anvertì la selession",
        "undeletecomment": "Rason:",
-       "undeletedrevisions": "{{PLURAL:$1|Na revision pijàita|$1 revision pijàite}} andré",
-       "undeletedrevisions-files": "{{PLURAL:$1|Na|$1}} revision e {{PLURAL:$2|n'|$2&nbsp;}}archivi pijàit andré",
-       "undeletedfiles": "{{PLURAL:$1|N'|$1&nbsp;}}archivi pijàit andaré",
        "cannotundelete": "Riprìstin falì:\n$1",
        "undeletedpage": "'''$1 a l'é stàit pijait andaré'''\n\nChe as varda ël [[Special:Log/delete|Registr djë scancelament]] për ës-ciairé j'ùltim scancelament e arcuperassion.",
        "undelete-header": "Ch'a varda [[Special:Log/delete|ël registr djë scancelament]] për ës-ciairé j'ùltim dëscancelament.",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|a l'ha modificà}} le tichëtte dla revision $4 dla pàgina $3 ({{PLURAL:$7|giontà}} $6; {{PLURAL:$9|gavà}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|a l'ha modificà}} le tichëtte dla vos ëd registr $5 dla pàgina $3 ({{PLURAL:$7|giontà}} $6; {{PLURAL:$9|gavà}} $8)",
        "rightsnone": "(gnun)",
-       "revdelete-summary": "resumé dla modìfica",
        "feedback-adding": "Gionta dij coment a la pàgina...",
        "feedback-back": "André",
        "feedback-bugcheck": "Bin fàit! Ch'a contròla mach ch'a sia pa già un dij [$1 bigat conossù].",
index e90c9ed..81b6f72 100644 (file)
        "externaldberror": "ڈیٹابیس چ توانوں پہچاننے چ کوئی مسئلہ ہویا اے یا فیر تسی اپنا بارلا کھاتا نئیں بدل سکدے۔",
        "login": "اندر آؤ جی",
        "nav-login-createaccount": "اندر آؤ / کھاتہ کھولو",
-       "userlogin": "اندر آؤ / کھاتہ کھولو",
-       "userloginnocreate": "اندر آؤ جی",
        "logout": "لاگ توں باہر",
        "userlogout": "باہر آؤ",
        "notloggedin": "لاگ ان نئیں ہوۓ او",
        "userlogin-noaccount": "تواڈا کھاتہ نہیں اے؟",
        "userlogin-joinproject": "کھاتہ بناؤ",
-       "nologin": "تواڈا کھاتہ نہیں اے؟ '''$1'''۔",
-       "nologinlink": "کھاتہ بناؤ",
        "createaccount": "کھاتہ بناؤ",
-       "gotaccount": "تواڈا پہلے توں کھاتہ ہے؟ '''$1'''",
-       "gotaccountlink": "اندر آؤ",
-       "userlogin-resetlink": "اپنے لاگ ان ہون دیاں شیواں پل گۓ؟",
        "userlogin-resetpassword-link": "اپنی کنجی بھل گۓ او؟",
        "userlogin-helplink2": "لاگ ان ہون وچ ہتھ ونڈائی",
        "createacct-emailoptional": "ای-میل پتہ (مرضی نال)",
        "createacct-email-ph": "اپنا ای-میل پتہ دیؤ",
        "createaccountmail": "ای میل دے نال",
-       "createaccountreason": "وجہ:",
        "createacct-reason": "وجہ",
        "createacct-reason-ph": "تسیں اک ہور کھاتہ کیوں بنا رہے او",
        "createacct-submit": "اپنا کھاتا کھولو",
        "showdiff": "تبدیلیاں وکھاؤ",
        "anoneditwarning": "'''خبردار''': تسی اندر نہیں آۓ\nتواڈا ''آئی پی'' پتہ فائل وچ لکھیا جاۓ گا تے ساریاں نوں دسے گا۔ اگر تسیں $1 اندر آؤ یا $2 کھاتہ کھولو تے تواڈیاں لکھتاں تواڈے ورتن ناں نال جڑیاں ہون گئیاں۔",
        "anonpreviewwarning": "''تسی ہلے لاگ ان نئیں ہوۓ،۔ کم بچاؤ گے تے تواڈا IP پتہ صفحے دی تریخ چ لکھ لیا جاۓ گا۔''",
-       "missingsummary": "'''یادکرائی:''' تساں تبدیلی دی سمری نئیں دتی۔  اگر تسیں \"{{int:savearticle}}\" نوں کلک کروگے تواڈیاں تبدیلیاں اک دے بنا بچ جان گیاں۔",
+       "missingsummary": "'''یادکرائی:''' تساں تبدیلی دی سمری نئیں دتی۔  اگر تسیں \"$1\" نوں کلک کروگے تواڈیاں تبدیلیاں اک دے بنا بچ جان گیاں۔",
        "missingcommenttext": "تھلے اپنی گل لکھو۔",
-       "missingcommentheader": "'''یادکرائی:''' تساں ایس گل تے سرخی / سرناواں نئیں دتا۔\nاگر تسیں  \"{{int:savearticle}}\" دوبارہ کلک کردے اوہ تواڈی تبدیلی اک توں بنا بچاۓ گا۔",
+       "missingcommentheader": "'''یادکرائی:''' تساں ایس گل تے سرخی / سرناواں نئیں دتا۔\nاگر تسیں  \"$1\" دوبارہ کلک کردے اوہ تواڈی تبدیلی اک توں بنا بچاۓ گا۔",
        "summary-preview": "کچے کم دا خلاصہ:",
        "subject-preview": "سرناواں / سرخی وکھالہ:",
        "blockedtitle": "ورتن آلے نوں روکیا ہویا اے",
        "editingsection": "$1 دا حصہ لکھ رہے او",
        "editingcomment": "$1 بدل ریاں (نواں پاسہ)",
        "editconflict": "تبدیلی رپھڑ: $1",
-       "explainconflict": "جدوں تسیں لکھنا شروع کیتا کسے ہور نے صفہ بدل دتا اے۔ اتلا لکھت تھاں چ چ لکھت ہے جیویں اوہ ہن ہیگی اے۔\nتواڈیاں تبدیلیاں تھلویں لکھت چ دسیاں جاریاں نیں۔ توانوں اپنیاں تبدیلیاں ہن دی لکھت چ رلانیاں پین گیاں۔\nتوانوں اپنیاں تبدیلیاںہن دی لکھت چ رلانیاں پین گیا۔\n'''صرف''' اتلی لکھت ددی تھاں بچائی جاسیگی جدوں تسیں \"{{int:savearticle}}\" دباؤ گے",
+       "explainconflict": "جدوں تسیں لکھنا شروع کیتا کسے ہور نے صفہ بدل دتا اے۔ اتلا لکھت تھاں چ چ لکھت ہے جیویں اوہ ہن ہیگی اے۔\nتواڈیاں تبدیلیاں تھلویں لکھت چ دسیاں جاریاں نیں۔ توانوں اپنیاں تبدیلیاں ہن دی لکھت چ رلانیاں پین گیاں۔\nتوانوں اپنیاں تبدیلیاںہن دی لکھت چ رلانیاں پین گیا۔\n'''صرف''' اتلی لکھت ددی تھاں بچائی جاسیگی جدوں تسیں \"$1\" دباؤ گے",
        "yourtext": "تواڈی لکھائی",
        "storedversion": "سانبھی لکھائی",
        "nonunicodebrowser": "'''خبردار: تھواڈے براؤزر اُتے یونیکوڈ نئیں چلدا۔'''\nاک کم تھانوں ایس قابل کریگا جے بچت نال صفے بچا سکو: non-ASCII کیریکٹر تبدیلی ڈبے چ ہیکساڈیسیمل کوڈ دسن گے۔",
        "right-protect": "بچاؤ پدھر نوں بدلو تے بچاۓ صفیاں نوں بدلو",
        "right-editprotected": "بچاۓ صفے بدلو",
        "right-editinterface": "ورتن وکھالہ بدلو",
-       "right-editusercssjs": "دوجے ورتن والیاں دیاں  CSS  تے JavaScript  فائلاں بدلو",
        "right-editusercss": "دوجے ورتن والیاں دیاں CSS  فائلاں بدلو",
        "right-edituserjs": "دوجے ورتن والیاں دیاں  JavaScript  فائلاں بدلو",
        "right-rollback": "جلدی نال آخری ورتن والے دیاں تبدیلیاں اک خاص صفے تے واپس کرو۔",
        "rcshowhidemine": "$1 میرے کم",
        "rcshowhidemine-show": "وکھاو",
        "rcshowhidemine-hide": "لُکاؤ",
-       "rclinks": "آخری $2 دناں دیاں $1 تبدیلیاں وکھاؤ<br />$3",
+       "rclinks": "آخری $2 دناں دیاں $1 تبدیلیاں وکھاؤ",
        "diff": "فرق",
        "hist": "پچھلا کم",
        "hide": "چھپاؤ",
        "undeleteviewlink": "وکھالہ",
        "undeleteinvert": "وچوں چناؤ",
        "undeletecomment": "وجہ",
-       "undeletedrevisions": "{{PLURAL:$1|1 ریوین|$1 ریویناں}} واپس",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 ریوین|$1 ریویناں}} تے {{PLURAL:$2|1 فائل|$2 فائلاں}} واپس",
-       "undeletedfiles": "{{PLURAL:$1|1 فائل|$1 فائلاں}} واپس",
        "cannotundelete": "مٹاؤ واپسی فیل:\nکسے ہور نے حورے پہلے ای صفہ واپس اردتا اے۔",
        "undeletedpage": "'''$1 واپس کردتی گئی اے'''\n\n [[Special:Log/delete|مٹان لاگ]] نوں ویکھو نیڑے دے مٹان تے واپسی دے رکارڈ لئی۔.",
        "undelete-header": "[[خاص:لاگ/مٹاؤ|مٹان لاگ]] نوں ویکھو نیڑے دے مٹاۓ گۓ دے رکارڈ لئی۔.",
        "logentry-newusers-autocreate": "کھاتہ $1 اپنے آپ ای {{GENDER:$2|بنایا گیا}} بنایا گیا۔",
        "logentry-upload-upload": "$1 {{جنس:$2|چڑھائی گئی}} $3",
        "rightsnone": "(کوئی وی نئیں)",
-       "revdelete-summary": "لکھائی دا خلاصہ",
        "feedback-adding": "مشورہ  صفے تے دیو۔۔۔۔۔۔۔",
        "feedback-bugcheck": "بعوت ودیا ! صرف ایہ ویکھو جے کیا ایہ پہلے لبے ہوۓ [$1 known bugs] چو اک تے نئیں۔",
        "feedback-bugnew": "میں ویکھیا اے۔ نویں بگ دی رپورٹ کرو۔",
index fbb364b..976420a 100644 (file)
        "yourdomainname": "Το domain εσούν:",
        "login": "Εμπάτε",
        "nav-login-createaccount": "Εμπάτεν / ποισέστεν λογαρίαν",
-       "userlogin": "Εμπάτεν / ποισέστεν λογαρίαν",
-       "userloginnocreate": "Εμπάτεν",
        "logout": "οξουκά",
        "userlogout": "Οξουκά",
        "notloggedin": "Ευρίσκεζνε οξουκά ασή Βικιπαίδειαν",
-       "nologin": "Λογαρίαν 'κ έχετε; '''$1'''.",
-       "nologinlink": "Ποισέστεν λογαρίαν",
        "createaccount": "Ποίσον λογαρίαν",
-       "gotaccount": "Λογαρίαν έχετε; '''$1'''.",
-       "gotaccountlink": "Εμπάτε",
        "createaccountmail": "με ελεκτρονικόν μένεμαν",
-       "createaccountreason": "Λόγον:",
        "badretype": "Τα σημάδε ντ' εγράψετεν 'κ ταιριάζνε.",
        "userexists": "Τ' όνεμαν έχ' ατό άλλος χρήστες.\nΒαλέστε άλλον όνεμαν.",
        "loginerror": "Σφάλμα εγγραφής",
        "rcshowhideanons": "$1 τ' αναγνώριμους τοι χρήστς",
        "rcshowhidepatr": "$1 αλλαγάς ντ' ωράουνταν",
        "rcshowhidemine": "$1 τ' αλλαγάς ιμ",
-       "rclinks": "Δείξον τα $1 υστερνά τ' αλλαγάς α σα $2 υστερνά τα ημέρας<br />$3",
+       "rclinks": "Δείξον τα $1 υστερνά τ' αλλαγάς α σα $2 υστερνά τα ημέρας",
        "diff": "διαφορά",
        "hist": "ιστ.",
        "hide": "Κρύψον",
        "htmlform-reset": "Κλώσον τ'αλλαγάς",
        "htmlform-selectorother-other": "Άλλον",
        "rightsnone": "(τιδέν)",
-       "revdelete-summary": "σύνοψην",
        "searchsuggest-search": "Αράεμαν",
        "special-characters-group-ipa": "ΔΦΑ",
        "special-characters-group-telugu": "Τελούγκου"
index 010c8f6..5ede032 100644 (file)
        "externaldberror": "Tikka izwinaīnas autentikāntin dātanbazin blānda, anga ni assei enwarīntan kāi etnaunīnlai twajjan izwinaīnan rekkenan.",
        "login": "Enjaīs",
        "nav-login-createaccount": "Enjaīs / teīkeis rekkenan",
-       "userlogin": "Enjaīs / teīkeis rekkenan",
-       "userloginnocreate": "Enjaīs",
        "logout": "Izjaīs",
        "userlogout": "Izjaīs",
        "notloggedin": "Ni assei engūbun",
-       "nologin": "Ni turri tū rekkenan? '''$1'''.",
-       "nologinlink": "Registrīs si",
        "createaccount": "Teīkeis nāunan rekkenan",
-       "gotaccount": "Turri tū jāu rekkenan? '''$1'''!",
-       "gotaccountlink": "Enjaīs",
        "createaccountmail": "Tenginnais e-mail",
        "badretype": "Enwestai kliptaswīrdai šlaitinna si.",
        "userexists": "Etrīnkta tērpautajas pabilisnā jāu ekzistijja.\nEtrīnkais kittan tērpautajas pabilīsnan.",
        "editingsection": "Tū redigijja $1 (sekciōni)",
        "editingcomment": "Tū redigijja $1 (naunā sekciōni)",
        "editconflict": "Redigīsenin kōnfliktan: $1",
-       "explainconflict": "Ainunts kits ast kitawīdinuns šin pāusan ezkērdai tū pagaūwa redigītun din.\nTekstas laūks aūktais turri ēn sen pāusas tekstan, kawīds bigāntei ekzistijja.\nTwajjas kitawīdinsnas ast waidīntan en zemmaišasmu tekstas laūkan.\nTebbei prawerru wīrstwei senlījuns(si) twajjans kitawīdinsnans sen ekzistīntin tekstan.\n'''Tēr''' teksts en aūktaišasmu tekstas laūkan wīrst būwuns enpeisātan, kaddan tu wīrst gnettuns \"{{int:savearticle}}\".",
+       "explainconflict": "Ainunts kits ast kitawīdinuns šin pāusan ezkērdai tū pagaūwa redigītun din.\nTekstas laūks aūktais turri ēn sen pāusas tekstan, kawīds bigāntei ekzistijja.\nTwajjas kitawīdinsnas ast waidīntan en zemmaišasmu tekstas laūkan.\nTebbei prawerru wīrstwei senlījuns(si) twajjans kitawīdinsnans sen ekzistīntin tekstan.\n'''Tēr''' teksts en aūktaišasmu tekstas laūkan wīrst būwuns enpeisātan, kaddan tu wīrst gnettuns \"$1\".",
        "yourtext": "Twājs teksts",
        "storedversion": "Enpeisāta wersiōni",
        "nonunicodebrowser": "\"Ēmpirsergīsenis: Twajā lasātla ni erzinna tikrōmiskai UTF-8 kōdisnan (Unicode).\nStesse paggan wisāi zentlai pastāi mainātan sen tenēisan ušnadesimtiskan kōdan.",
        "prefs-rendering": "Prusna",
        "saveprefs": "Enpeisāis",
        "restoreprefs": "Etwārtai wartinnais wissans auprestaminans pirminiskwans",
-       "rows": "Rīndas:",
-       "columns": "Kōlunis:",
        "searchresultshead": "Laukīs",
        "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:",
        "userrights-reason": "Brewīnsli:",
        "userrights-no-interwiki": "Ni assei enwarīntan kāi kitawīdinlai stēisan enwarīnsenin en kitēimans wiki.",
        "userrights-nodatabase": "Dātanbazi $1 ni ekzistijja anga ni ast lōkalin.",
-       "userrights-nologin": "Tū turri [[Special:UserLogin|enēitwei]] kāigi perwaldītajs, kāi dātun tērpautajamans enwarīnsenins.",
-       "userrights-notallowed": "Tū ni assei enwarīntan, kāi dālai tērpautajans enwarīnsenins.",
        "userrights-changeable-col": "Gruppis, kawīdans tu mazzi kitawīdintun",
        "userrights-unchangeable-col": "Gruppis, kawīdans tu ni mazzi kitawīdintun",
        "group": "Gruppi:",
        "right-protect": "Pakūnsnas klādas kitawīdinsna be preiēisenis prei redigīsnan stēisan pakūnstan pāusan",
        "right-editprotected": "Redigīs pakūnstans pāusans (šlāit weldītan pakūnsenin)",
        "right-editinterface": "Redigīs tērpautajas interfācan",
-       "right-editusercssjs": "Redigīs CSS be JavaScript zūrbrukins kitēisan tērpautajan",
        "right-editusercss": "Redigīs CSS zūrbrukins kitēisan tērpautajan",
        "right-edituserjs": "Redigīs JS zūrbrukins kitēisan tērpautajan",
        "right-rollback": "Dīwai etwārtai wartinnais redigīsenin stesse tērpautajan, kawīds redigijja ainuntan pāusan kāigi panzdaums",
        "rcshowhideanons": "$1 anōnimai tērpautajai",
        "rcshowhidepatr": "$1 izbandātai redigīsenei",
        "rcshowhidemine": "$1 majāi redigīsenei",
-       "rclinks": "Waidinnais panzdaumans $1 kitawīdinsnans en panzdaumamans $2 dēinans.<br />$3",
+       "rclinks": "Waidinnais panzdaumans $1 kitawīdinsnans en panzdaumamans $2 dēinans.",
        "diff": "šlaitīn.",
        "hist": "ist.",
        "hide": "Kliptinais",
        "undeleteviewlink": "wīdais",
        "undeleteinvert": "Etwartinnais pazentlisenin",
        "undeletecomment": "Kumentārs:",
-       "undeletedrevisions": "{{PLURAL:$1|1 wersiōni|$1 wersiōnis}} etwārtai wartīntan",
-       "undeletedrevisions-files": "etteīkē di {{PLURAL:$1|1 wersiōnin|$1 wersiōnins}}  be {{PLURAL:$2|1 zūrbrukin|$2 zūrbrukins}}",
-       "undeletedfiles": "ast etteīkuns {{PLURAL:$1|1 zūrbrukin|$1 zūrbrukins}}",
        "cannotundelete": "Etgaūsenis ni izpalla;\nAinunts kits ast jāu etgaūwuns šin pāusan.",
        "undeletedpage": "'''$1 pastāi etwārtai wartīntan'''\n\nJaīs en [[Special:Log/delete|āupausinsenin regīsterin]], kāi widālai panzdaumans āupausinsenins be etteīksenins.",
        "undelete-header": "Jaīs en [[Special:Log/delete|āupausinsenin regīsterin]], kāi widālai panzdaumai āupausintans pāusans.",
        "htmlform-selectorother-other": "Kitā",
        "revdelete-restricted": "ensadinnais arāikinsenins per perwaldītajans",
        "revdelete-unrestricted": "āupausinais arāikinsenins per perwaldītajans",
-       "rightsnone": "(nisātausna)",
-       "revdelete-summary": "kitawīdisnan ebpeisāsenis"
+       "rightsnone": "(nisātausna)"
 }
index fe83af4..c49bcd0 100644 (file)
@@ -3,12 +3,12 @@
                "authors": [
                        "Ahmed-Najib-Biabani-Ibrahimkhel",
                        "Kaganer",
-                       "Umherirrender",
                        "아라",
                        "عثمان خان شاہ",
                        "Macofe",
                        "Amire80",
-                       "Matma Rex"
+                       "Matma Rex",
+                       "Ibrahim khashrowdi"
                ]
        },
        "tog-underline": "کرښنې تړنې:",
@@ -79,7 +79,7 @@
        "february": "فبروري",
        "march": "مارچ",
        "april": "اپرېل",
-       "may_long": "Ù\85Û\8c",
+       "may_long": "Ù\85Û\90",
        "june": "جون",
        "july": "جولای",
        "august": "اگسټ",
        "feb": "فبروري",
        "mar": "مارچ",
        "apr": "اپرېل",
-       "may": "Ù\85Û\8c",
+       "may": "Ù\85Û\90",
        "jun": "جون",
        "jul": "جولای",
        "aug": "اگسټ",
        "password-change-forbidden": "تاسې په دې ويکي باندې خپل پټنوم نه شی بدلولی.",
        "login": "ننوتل",
        "nav-login-createaccount": "ننوتل / گڼون جوړول",
-       "userlogin": "ننوتل / گڼون جوړول",
-       "userloginnocreate": "ننوتل",
        "logout": "وتل",
        "userlogout": "وتل",
        "notloggedin": "غونډال کې نه ياست ننوتي",
        "userlogin-noaccount": "گڼون نه لرې؟",
        "userlogin-joinproject": "د {{SITENAME}} سره يوځای شه",
-       "nologin": "کارن-نوم نه لرې؟ $1.",
-       "nologinlink": "يو گڼون جوړول",
        "createaccount": "گڼون جوړول",
-       "gotaccount": "آيا وار دمخې يو گڼون لری؟ $1.",
-       "gotaccountlink": "ننوتل",
-       "userlogin-resetlink": "د ننوتلو مالومات مو هېر شوي؟",
        "userlogin-resetpassword-link": "پټنوم مو هېر شوی؟",
        "userlogin-helplink2": "په ننوتلو کې مرسته",
        "userlogin-loggedin": "تاسې له پخوا څخه د {{GENDER:$1|$1}} په نوم ننوتلي ياست.\nد لاندينۍ فورمې په کارولو سره تاسې د بل کارن په توگه ننوتلی شی.",
        "createacct-another-email-ph": "برېښليک پته مو ورکړئ",
        "createaccountmail": "يو لنډمهاله ناټاکلی پټنوم کارول او ځانگړې شوې برېښليک پتې ته ورلېږل",
        "createacct-realname": "آر نوم (اختياري)",
-       "createaccountreason": "سبب:",
        "createacct-reason": "سبب",
        "createacct-reason-ph": "تاسې ولې بل گڼون جوړوئ؟",
        "createacct-submit": "گڼون مو جوړ کړئ",
        "right-unblockself": "په خپل ځان بنديز لرې کول",
        "right-protect": "د ژغورنې کچه بدلول او ځوړاوبېزه ژغورلي مخونه سمول",
        "right-editinterface": "د کارن ليدنمخ سمول",
-       "right-editusercssjs": "د نورو کارنانو د CSS او JS (جاوا سکرېپټ) دوتنې سمول",
        "right-editusercss": "د نورو کارنانو د CSS دوتنې سمول",
        "right-edituserjs": "د نورو کارنانو د JS (جاوا سکرېپټ) دوتنې سمول",
        "right-editmyusercss": "خپل د CSS دوتنې سمول",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "ښکاره کول",
        "rcfilters-filterlist-title": "چاڼگران",
-       "rcfilters-filter-userExpLevel-newcomer-label": "نوي راغلي",
-       "rcfilters-filter-userExpLevel-learner-label": "زده کوونکي",
+       "rcfilters-filter-user-experience-level-newcomer-label": "نوي راغلي",
+       "rcfilters-filter-user-experience-level-learner-label": "زده کوونکي",
        "rcnotefrom": "دلته لاندې د <strong>$2</strong> څخه راپدېخوا پېښ شوي بدلونونه راغلي (تر <strong>$1</strong> پورې ښکاري).",
        "rclistfrom": "نوي بدلونونه چې له $3، $2 څخه پيلېږي ښکاره کول",
        "rcshowhideminor": "وړې سمونې $1",
        "rcshowhidecategorization": "د مخ وېشنيزې $1",
        "rcshowhidecategorization-show": "ښکاره کول",
        "rcshowhidecategorization-hide": "پټول",
-       "rclinks": "هغه وروستي $1 بدلونونه ښکاره کړی چې په $2 ورځو کې پېښ شوي<br />$3",
+       "rclinks": "هغه وروستي $1 بدلونونه ښکاره کړی چې په $2 ورځو کې پېښ شوي",
        "diff": "توپير",
        "hist": "پېښليک",
        "hide": "پټول",
        "undeleteviewlink": "کتل",
        "undeleteinvert": "ټاکنې سرچپه کول",
        "undeletecomment": "سبب:",
-       "undeletedrevisions": "{{PLURAL:$1|1 بڼه بيازېرمه شوه|$1 بڼې بيازېرمې شولې}}",
-       "undeletedfiles": "{{PLURAL:$1|1 دوتنه بيازېرمه شوه|$1 دوتنې بيازېرمه شوې}}",
        "cannotundelete": "ناړنگول نابريال شو:\n$1",
        "undelete-header": "د وروستيو ړنگو شوو مخونو لپاره [[Special:Log/delete|د ړنگولو يادښت]] وگورۍ.",
        "undelete-search-title": "ړنگ شوي مخونه پلټل",
        "watchlisttools-raw": "خام کتنلړ سمول",
        "iranian-calendar-m1": "وری",
        "iranian-calendar-m2": "غويی",
-       "iranian-calendar-m3": "غبرګولی",
+       "iranian-calendar-m3": "غبرگولی",
        "iranian-calendar-m4": "چنګاښ",
        "iranian-calendar-m5": "زمری",
        "iranian-calendar-m6": "وږی",
        "log-name-managetags": "د نښلن مهارولو يادښت",
        "log-name-tag": "نښلن يادښت",
        "rightsnone": "(هېڅ)",
-       "revdelete-summary": "لنډيز سمول",
        "feedback-back": "پر شا کېدل",
        "feedback-cancel": "ناگارل",
        "feedback-close": "ترسره شو",
index caff860..7fac425 100644 (file)
                        "Alex Great",
                        "EVinente",
                        "Felipe L. Ewald",
-                       "WikiUser22222"
+                       "WikiUser22222",
+                       "BarbaraAckles",
+                       "Trigonometria87"
                ]
        },
        "tog-underline": "Link sublinhado:",
        "anontalk": "Discussão",
        "navigation": "Navegação",
        "and": "&#32;e",
-       "qbfind": "Procurar",
-       "qbbrowse": "Navegar",
-       "qbedit": "Editar",
-       "qbpageoptions": "Esta página",
-       "qbmyoptions": "Minhas páginas",
        "faq": "Perguntas frequentes",
-       "faqpage": "Project:Perguntas frequentes",
        "actions": "Ações",
        "namespaces": "Domínios",
        "variants": "Variantes",
        "edit-local": "Editar descrição local",
        "create": "Criar",
        "create-local": "Adicionar descrição local",
-       "editthispage": "Editar esta página",
-       "create-this-page": "Iniciar esta página",
        "delete": "Eliminar",
-       "deletethispage": "Eliminar esta página",
-       "undeletethispage": "Restaurar esta página",
        "undelete_short": "Restaurar {{PLURAL:$1|uma edição|$1 edições}}",
        "viewdeleted_short": "Ver {{PLURAL:$1|uma edição eliminada|$1 edições eliminadas}}",
        "protect": "Proteger",
        "protect_change": "alterar",
-       "protectthispage": "Proteger esta página",
        "unprotect": "Alterar a proteção",
-       "unprotectthispage": "Alterar a proteção desta página",
        "newpage": "Página nova",
-       "talkpage": "Discutir sobre esta página",
        "talkpagelinktext": "discussão",
        "specialpage": "Página especial",
        "personaltools": "Ferramentas pessoais",
-       "articlepage": "Ver página de conteúdo",
        "talk": "Discussão",
        "views": "Visualizações",
        "toolbox": "Ferramentas",
        "tool-link-userrights": "Editar grupos {{GENDER:$1|do usuário|da usuária|do(a) usuário(a)}}",
        "tool-link-userrights-readonly": "Ver grupos {{GENDER:$1|do usuário|da usuária}}",
        "tool-link-emailuser": "Enviar e-mail a {{GENDER:$1|este usuário|esta usuária|este(a) usuário(a)}}",
-       "userpage": "Ver página de usuário",
-       "projectpage": "Ver página de projeto",
        "imagepage": "Ver página do arquivo",
        "mediawikipage": "Ver página de mensagens",
        "templatepage": "Ver página de predefinições",
        "redirectedfrom": "(Redirecionado de $1)",
        "redirectpagesub": "Página de redirecionamento",
        "redirectto": "Redirecionar para:",
-       "lastmodifiedat": "Esta página foi modificada pela última vez à(s) $2 de $1.",
+       "lastmodifiedat": "Esta página foi modificada pela última vez em $1, às $2",
        "viewcount": "Esta página foi acessada {{PLURAL:$1|uma vez|$1 vezes}}.",
        "protectedpage": "Página protegida",
        "jumpto": "Ir para:",
        "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": "Por favor clique $1 para poder acessar essa página ou ação.",
+       "exception-nologin-text": "Por favor, faça login 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-badscanner": "Má configuração: antivírus desconhecido: ''$1''",
        "virus-scanfailed": "a verificação falhou (código $1)",
        "preview": "Pré-visualização",
        "showpreview": "Mostrar previsão",
        "showdiff": "Mostrar alterações",
-       "blankarticle": "<strong>Aviso:</strong> A página que está prestes a criar está em branco.  \nSe clicar \"{{int:savearticle}}\" outra vez, a página será criada sem qualquer conteúdo.",
-       "anoneditwarning": "'''Atenção''': Você não se encontra autenticado.\nO seu endereço de IP será registrado no histórico de edições desta página.",
+       "blankarticle": "<strong>Aviso:</strong> A página que está prestes a criar está em branco.  \nSe clicar \"$1\" outra vez, a página será criada sem qualquer conteúdo.",
+       "anoneditwarning": "<strong>Aviso:</strong> Você não está conectado. Seu endereço IP será visível publicamente se você fizer alguma edição. Se você <strong>[$1 fizer login]</strong> ou <strong>[$2 criar uma conta]</strong>, suas edições serão atribuídas ao seu nome de usuário, juntamente com outros benefícios.",
        "anonpreviewwarning": "''Você não está logado. Gravar registará o seu endereço IP no histórico de edições desta página.''",
        "missingsummary": "'''Lembrete:''' Você não introduziu um sumário de edição. Se clicar novamente em Salvar, a sua edição será salva sem um sumário.",
-       "selfredirect": "<strong>Aviso:</strong> Você esta redirecionando esta pagina para ela mesmo. Você pode ter especificado o caminho errado para redirecionar, ou você pode estar editando a pagina errada. Se você clicar \"{{int:savearticle}}\" novamente, o redirecionamento será criado de qualquer modo.",
+       "selfredirect": "<strong>Aviso:</strong> Você esta redirecionando esta pagina para ela mesmo. Você pode ter especificado o caminho errado para redirecionar, ou você pode estar editando a pagina errada. Se você clicar \"$1\" novamente, o redirecionamento será criado de qualquer modo.",
        "missingcommenttext": "Por favor, introduzida um comentário abaixo.",
-       "missingcommentheader": "'''Lembrete:''' Você não introduziu um assunto/título para este comentário.\nSe você clicar novamente \"{{int:savearticle}}\", a sua edição será salva sem um assunto/título.",
+       "missingcommentheader": "'''Lembrete:''' Você não introduziu um assunto/título para este comentário.\nSe você clicar novamente \"$1\", a sua edição será salva sem um assunto/título.",
        "summary-preview": "Previsão do resumo de edição:",
        "subject-preview": "Previsão do assunto/título:",
        "previewerrortext": "Ocorreu um erro ao tentar pré-visualizar suas alterações.",
        "missing-revision": "A revisão #$1 da página denominada \"{{FULLPAGENAME}}\" não existe.\n\nIsto é geralmente causado por seguir um link de histórico desatualizado para uma página que foi eliminada.\nOs detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de eliminação].",
        "userpage-userdoesnotexist": "A conta \"<nowiki>$1</nowiki>\" não se encontra registrada.\nVerifique se deseja mesmo criar/editar esta página.",
        "userpage-userdoesnotexist-view": "A conta de usuário \"$1\" não está registrada.",
-       "blocked-notice-logextract": "Este usuário está atualmente bloqueado.\nO registro de bloqueio mais recente é fornecido abaixo, para referência:",
+       "blocked-notice-logextract": "{{GENDER:$1|Este usuário está atualmente bloqueado|Esta usuária está atualmente bloqueada|Este(a) usuário(a) está atualmente bloqueado(a)}}.\nO registro de bloqueio mais recente é fornecido abaixo, para referência:",
        "clearyourcache": "<strong>Nota:</strong> Após salvar, você pode ter que limpar o \"cache\" do seu navegador para ver as alterações.\n*<strong>Firefox / Safari:</strong> Pressione <em>Shift</em> enquanto clica <em>Recarregar</em>, ou pressione <em>Ctrl-F5</em> ou <em>Ctrl-R</em> (<em>⌘-R</em> no Mac)\n*<strong>Google Chrome:</strong> Pressione <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> no Mac)\n* <strong>Internet Explorer:</strong> Pressione<em>Ctrl</em> enquanto clica <em>Recarregar</em>, ou Pressione <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Vá para <em>Menu → Configurações</em> (<em>Opera → Preferencias</em> no Mac) e depois para <em>Privacidade e Segurança → Limpar dados de navegação → Imagens e arquivos em cache</em>.",
        "usercssyoucanpreview": "'''Dica:''' Utilize o botão \"{{int:showpreview}}\" para testar seu novo CSS antes de salvar.",
        "userjsyoucanpreview": "'''Dica:''' Utilize o botão \"{{int:showpreview}}\" para testar seu novo JavaScript antes de salvar.",
        "editingsection": "Editando $1 (seção)",
        "editingcomment": "Editando $1 (nova seção)",
        "editconflict": "Conflito de edição: $1",
-       "explainconflict": "Alguém mudou a página enquanto você a estava editando.\nA área de texto acima mostra o texto original.\nSuas mudanças são mostradas na área abaixo.\nVocê terá que mesclar suas modificações no texto existente.\n'''SOMENTE''' o texto na área acima será salvo quando você pressionar \"{{int:savearticle}}\".",
+       "explainconflict": "Alguém mudou a página enquanto você a estava editando.\nA área de texto acima mostra o texto original.\nSuas mudanças são mostradas na área abaixo.\nVocê terá que mesclar suas modificações no texto existente.\n'''SOMENTE''' o texto na área acima será salvo quando você pressionar \"$1\".",
        "yourtext": "Seu texto",
        "storedversion": "Versão guardada",
        "nonunicodebrowser": "'''AVISO: O seu navegador não é compatível com as especificações unicode.'''\nUm contorno terá de ser utilizado para permitir que você possa 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.",
        "readonlywarning": "'''Aviso: O banco de dados foi bloqueado para manutenção, por isso você não poderá salvar a sua edição neste momento.'''\nTalvez você queira copiar o seu texto num editor externo e guardá-lo, para posterior envio.\n\nQuem bloqueou o banco de dados forneceu a seguinte explicação: $1",
        "protectedpagewarning": "'''Atenção: Esta página foi protegida para que apenas usuários com privilégios de administrador possam editá-la.'''\nA última entrada no histórico é fornecida abaixo como referência:",
        "semiprotectedpagewarning": "'''Nota:''' Esta página foi protegida, sendo que apenas usuários registrados poderão editá-la.\nA última entrada no histórico é fornecida abaixo para referência:",
-       "cascadeprotectedwarning": "<strong>Aviso:</strong> Esta página foi protegida para que somente usuários com privilégios de administrador possam editá-la porque ela é transcluída {{PLURAL:$1|na seguinte página protegida|nas seguintes páginas protegidas}} por cascata:",
+       "cascadeprotectedwarning": "<strong>Aviso:</strong> Esta página foi protegida para que somente usuários com [[Special:ListGroupRights|grupos com direitos específicos]] possam editá-la porque ela é transcluída {{PLURAL:$1|na seguinte página protegida|nas seguintes páginas protegidas}} por cascata:",
        "titleprotectedwarning": "'''Atenção: esta página foi protegida; [[Special:ListGroupRights|privilégios específicos]] são necessários para criá-la.'''\nA última entrada no histórico é fornecida abaixo como referência:",
        "templatesused": "{{PLURAL:$1|Predefinição usada|Predefinições usadas}} nesta página:",
        "templatesusedpreview": "{{PLURAL:$1|Predefinição usada|Predefinições usadas}} nesta previsão:",
        "search-file-match": "(coincide com o conteúdo do arquivo)",
        "search-suggest": "Você quis dizer: $1?",
        "search-rewritten": "Mostrando resultados para $1. Pesquisar ao invés por $2.",
-       "search-interwiki-caption": "Projetos irmãos",
+       "search-interwiki-caption": "Resultados de projetos irmãos",
        "search-interwiki-default": "Resultados de $1:",
        "search-interwiki-more": "(mais)",
        "search-interwiki-more-results": "Mais resultados",
        "preferences": "Preferências",
        "mypreferences": "Preferências",
        "prefs-edits": "Número de edições:",
-       "prefsnologintext2": "Por favor clique $1 para alterar suas preferências",
+       "prefsnologintext2": "Por favor, faça login para alterar suas preferências.",
        "prefs-skin": "Tema",
        "skin-preview": "prever",
        "datedefault": "Sem preferência",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Exibir",
        "rcfilters-activefilters": "Filtros ativos",
+       "rcfilters-quickfilters": "Configurações de filtros gravadas",
+       "rcfilters-quickfilters-placeholder-title": "Ainda não foi gravado nenhum link",
+       "rcfilters-quickfilters-placeholder-description": "Para gravar as suas configurações dos filtros e reutilizá-las mais tarde, clique o ícone do marcador de página, na área Filtro Ativo abaixo.",
+       "rcfilters-savedqueries-defaultlabel": "Filtros salvos",
+       "rcfilters-savedqueries-rename": "Renomear",
+       "rcfilters-savedqueries-setdefault": "Definir como padrão",
+       "rcfilters-savedqueries-unsetdefault": "Remover como padrão",
+       "rcfilters-savedqueries-remove": "Remover",
+       "rcfilters-savedqueries-new-name-label": "Nome",
+       "rcfilters-savedqueries-apply-label": "Salvar configurações",
+       "rcfilters-savedqueries-cancel-label": "Cancelar",
+       "rcfilters-savedqueries-add-new-title": "Gravar configurações atuais de filtros",
        "rcfilters-restore-default-filters": "Restaurar filtros padrão",
        "rcfilters-clear-all-filters": "Limpar todos os filtros",
        "rcfilters-search-placeholder": "Filtrar mudanças recentes (procurar ou começar a digitar)",
        "rcfilters-filter-unregistered-label": "Não registrado",
        "rcfilters-filter-unregistered-description": "Editores que não estão conectados.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Este filtro entra em conflito com {{PLURAL:$2|o seguinte filtro|os seguintes filtros}} de Experiência, que {{PLURAL:$2|encontra|encontram}} somente usuários registrados: $1",
-       "rcfilters-filtergroup-authorship": "Editar autoria",
-       "rcfilters-filter-editsbyself-label": "Suas próprias edições",
-       "rcfilters-filter-editsbyself-description": "Edições por você.",
-       "rcfilters-filter-editsbyother-label": "Edições de outros",
-       "rcfilters-filter-editsbyother-description": "Edições criadas por outros usuários (não você.)",
+       "rcfilters-filtergroup-authorship": "Autoria da contribuição",
+       "rcfilters-filter-editsbyself-label": "Mudanças por você",
+       "rcfilters-filter-editsbyself-description": "Suas proprias contribuições.",
+       "rcfilters-filter-editsbyother-label": "Mudanças de outros",
+       "rcfilters-filter-editsbyother-description": "Todas as mudanças, exceto a sua.",
        "rcfilters-filtergroup-userExpLevel": "Nível de experiência (apenas para usuário registados)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Os filtros de experiência encontram apenas usuários registados, assim este filtro entra em conflito com o filtro “Não registado”.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "O filtro \"Não Registrado\" entra em conflito com um ou mais filtros de Experiência, que localizam apenas usuários registrados. Os filtros em conflito são marcados na área Filtros Ativos, acima.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Recém-chegados",
        "rcfilters-filter-user-experience-level-newcomer-description": "Menos de 10 edições e 4 dias de atividade.",
        "rcfilters-filter-user-experience-level-learner-label": "Aprendizes",
-       "rcfilters-filter-user-experience-level-learner-description": "Mais dias de atividade e edições do que \"Novatos\", mas menos do que \"Usuários experientes\".",
+       "rcfilters-filter-user-experience-level-learner-description": "Mais experiência do que \"Novatos\", mas menos do que \"Usuários experientes\".",
        "rcfilters-filter-user-experience-level-experienced-label": "Usuários experientes",
        "rcfilters-filter-user-experience-level-experienced-description": "Mais de 30 dias de atividade e 500 edições.",
        "rcfilters-filtergroup-automated": "Contribuições automatizadas",
        "rcfilters-filter-minor-description": "Edita o autor rotulado como menor.",
        "rcfilters-filter-major-label": "Edições não menores",
        "rcfilters-filter-major-description": "Edições não rotuladas como menores.",
+       "rcfilters-filtergroup-watchlist": "Páginas visualizadas na Watchlist",
+       "rcfilters-filter-watchlist-watched-label": "Na Páginas vigiadas",
+       "rcfilters-filter-watchlist-watched-description": "Modificações de páginas vigiadas.",
+       "rcfilters-filter-watchlist-watchednew-label": "Modificações novas de páginas vigiadas",
+       "rcfilters-filter-watchlist-watchednew-description": "Modificações de páginas vigiadas que ainda não visitou depois de serem modificadas.",
+       "rcfilters-filter-watchlist-notwatched-label": "Ausente da lista de páginas vigiadas",
+       "rcfilters-filter-watchlist-notwatched-description": "Tudo menos modificações das suas páginas vigiadas.",
        "rcfilters-filtergroup-changetype": "Tipo de mudança",
        "rcfilters-filter-pageedits-label": "Edições da página",
-       "rcfilters-filter-pageedits-description": "Edições para conteúdo wiki, discussões, descrições de categorias ....",
+       "rcfilters-filter-pageedits-description": "Edições para conteúdo wiki, discussões, descrições de categorias...",
        "rcfilters-filter-newpages-label": "Criações de páginas",
        "rcfilters-filter-newpages-description": "Edições que fazem novas páginas.",
        "rcfilters-filter-categorization-label": "Mudanças de categoria",
        "rcfilters-filter-categorization-description": "Registros de páginas que estão sendo adicionadas ou removidas de categorias.",
        "rcfilters-filter-logactions-label": "Acções registadas",
-       "rcfilters-filter-logactions-description": "Ações administrativas, criação de contas, eliminação de páginas, carregamentos ...",
+       "rcfilters-filter-logactions-description": "Ações administrativas, criação de contas, eliminação de páginas, carregamentos...",
        "rcfilters-hideminor-conflicts-typeofchange-global": "O filtro \"Edições menores\" conflita com um ou mais filtros de Tipo de Alteração, porque certos tipos de alteração não podem ser designadas como \"menores\". Os filtros em conflito estão marcados na área Filtros Ativos, acima.",
        "rcfilters-hideminor-conflicts-typeofchange": "Determinados tipos de alteração não podem ser designados como \"menor\", portanto, este filtro entra em conflito com os seguintes filtros de Tipo de Alteração: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Este filtro de Tipo de Alteração entra em conflito com o filtro \"Edições menores\". Certos tipos de mudança não podem ser designadas como \"menores\".",
+       "rcfilters-filtergroup-lastRevision": "Última revisão",
+       "rcfilters-filter-lastrevision-label": "Última revisão",
+       "rcfilters-filter-lastrevision-description": "A alteração mais recente para uma página.",
+       "rcfilters-filter-previousrevision-label": "Revisões anteriores",
+       "rcfilters-filter-previousrevision-description": "Todas as alterações que não são a alteração mais recente para uma página.",
+       "rcfilters-filter-excluded": "Excluído",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:não</strong> $1",
+       "rcfilters-view-tags": "Etiquetas",
        "rcnotefrom": "Abaixo {{PLURAL:$5|é a mudança|são as mudanças}} desde <strong>$3, $4</strong> (up to <strong>$1</strong> shown).",
        "rclistfromreset": "Redefinir seleção da data",
        "rclistfrom": "Mostrar as novas alterações a partir das $2 de $3",
        "rcshowhidecategorization": "$1 categorização de páginas",
        "rcshowhidecategorization-show": "Exibir",
        "rcshowhidecategorization-hide": "Esconder",
-       "rclinks": "Exibir as $1 mudanças recentes feitas nos últimos $2 dias<br />$3",
+       "rclinks": "Exibir as $1 mudanças recentes feitas nos últimos $2 dias",
        "diff": "dif",
        "hist": "his",
        "hide": "Ocultar",
        "tmp-write-error": "Erro ao alterar arquivo temporário.",
        "large-file": "É recomendável que os arquivos não sejam maiores que $1;\neste possui $2.",
        "largefileserver": "Este arquivo é maior do que o servidor está configurado para permitir.",
-       "emptyfile": "O arquivo enviado para estar vazio.\nIsso pode ocorrer devido a um erro de digitação no nome do arquivo.\nVerifique se você realmente deseja enviar este arquivo.",
+       "emptyfile": "O arquivo enviado parece estar vazio.\nIsso pode ter ocorrido por um erro de digitação no nome do arquivo.\nVerifique se você realmente deseja enviar este arquivo.",
        "windows-nonascii-filename": "O wiki não aceita nomes de arquivos com caracteres especiais.",
        "fileexists": "Já existe um arquivo com este nome.\nVerifique <strong>[[:$1]]</strong> caso não tenha certeza se deseja alterar o arquivo atual.\n[[$1|thumb]]",
        "filepageexists": "A página de descrição deste arquivo já foi criada em <strong>[[:$1]]</strong>, mas atualmente não existe nenhum arquivo com este nome.\nO sumário que você inseriu não aparecerá na página de descrição.\nPara que ele apareça, será necessário editá-lo manualmente.\n[[$1|thumb]]",
        "apisandbox-multivalue-all-namespaces": "$1 (Todos os espaços de nomes)",
        "apisandbox-multivalue-all-values": "$1 (Todos os valores)",
        "booksources": "Fontes bibliográficas",
-       "booksources-search-legend": "Pesquisar referências bibliográficas",
+       "booksources-search-legend": "Pesquisar fontes de livros",
        "booksources-search": "Pesquisar",
        "booksources-text": "É exibida a seguir uma listagem de links para outros sites que vendem livros novos e usados e que possam possuir informações adicionais sobre os livros que você está pesquisando:",
        "booksources-invalid-isbn": "O número ISBN fornecido não parece ser válido; verifique se houve erros ao copiar da fonte original.",
        "sp-contributions-uploads": "envios",
        "sp-contributions-logs": "registros",
        "sp-contributions-talk": "disc",
-       "sp-contributions-userrights": "gerenciamento de privilégios de usuários",
+       "sp-contributions-userrights": "gerenciamento de privilégios de {{GENDER:$1|usuários}}",
        "sp-contributions-blocked-notice": "Este usuário atualmente está bloqueado. O registro de bloqueio mais recente é fornecido abaixo para referência:",
        "sp-contributions-blocked-notice-anon": "Este endereço IP encontra-se bloqueado.\nSegue, para referência, a entrada mais recente no registro de bloqueios:",
        "sp-contributions-search": "Navegar pelas contribuições",
        "autoblocklist-submit": "Pesquisar",
        "autoblocklist-legend": "Listar bloqueios automáticos",
        "autoblocklist-localblocks": "{{PLURAL:$1|Bloqueio automático local|Bloqueios automáticos locais}}",
+       "autoblocklist-total-autoblocks": "Número total de bloqueios automáticos: $1",
        "autoblocklist-empty": "A lista de bloqueios automáticos está vazia.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Outro bloqueio automático|Outros bloqueios automáticos}}",
        "ipblocklist": "Usuários bloqueados",
        "autoblocker": "Você foi automaticamente bloqueado, pois o seu Endereço IP foi recentemente usado por \"[[User:$1|$1]]\". \nO motivo apresentado para o bloqueio de $1 é: \"$2\".",
        "blocklogpage": "Registro de bloqueios",
        "blocklog-showlog": "Este usuário já foi bloqueado anteriormente.\nO registro de bloqueio é fornecido abaixo, para referência:",
-       "blocklog-showsuppresslog": "O usuário foi bloqueado e ocultado anteriormente.\nO registro de supressão é fornecido abaixo para referência:",
+       "blocklog-showsuppresslog": "{{GENDER:$1|O usuário foi bloqueado e ocultado|A usuária foi bloqueada e ocultada|O(a) usuário(a) foi bloqueado(a) e ocultado(a)}} anteriormente.\nO registro de supressão é fornecido abaixo para referência:",
        "blocklogentry": "bloqueou \"[[$1]]\" por $2. $3",
        "reblock-logentry": "modificou parâmetros de bloqueio de [[$1]] com expiração em $2. $3",
        "blocklogtext": "Este é um registro de ações de bloqueio e desbloqueio.\nEndereços IP sujeitos a bloqueio automático não são listados.\nConsulte a [[Special:BlockList|lista de bloqueios]] para obter a lista de bloqueios e banimentos em efeito neste momento.",
        "exporttext": "Você pode exportar o texto e o histórico de edições, ou de uma página em particular ou de um conjunto de páginas, para um arquivo XML.\nA partir disso, será possível importar esse conteúdo em outro wiki que utilize o software MediaWiki através da [[Special:Import|página de importações]].\n\nPara exportar páginas, insira os títulos na caixa de texto abaixo, um título por linha; selecione entre a edição atual acompanhada das edições anteriores e respectivo histórico de edições ou entre apenas a última edição e suas respectivas informações.\n\nPara o último caso, é possível obter o XML a partir de um link direto (por exemplo, [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] para a edição mais recente da página \"[[{{MediaWiki:Mainpage}}]]\").",
        "exportall": "Exportar todas as páginas",
        "exportcuronly": "Incluir apenas a revisão atual, não o histórico inteiro",
-       "exportnohistory": "----\n'''Nota:''' a exportação do histórico completo das páginas através deste formulário foi desativada devido a questões de performance.",
+       "exportnohistory": "----\n'''Nota:''' a exportação do histórico completo das páginas através deste formulário foi desativada devido a questões de desempenho.",
        "exportlistauthors": "Incluir uma lista completa dos colaboradores de cada página",
        "export-submit": "Exportar",
        "export-addcattext": "Adicionar à listagem páginas da categoria:",
        "tooltip-pt-mycontris": "Listagem das {{GENDER:|suas}} contribuições",
        "tooltip-pt-anoncontribs": "Uma lista de edições feitas a partir deste endereço de IP",
        "tooltip-pt-login": "Você é encorajado a autenticar-se; no entanto, não é obrigatório",
+       "tooltip-pt-login-private": "Você precisa fazer login para usar esta wiki",
        "tooltip-pt-logout": "Sair",
        "tooltip-pt-createaccount": "É recomendado que você crie uma conta e inicie uma seção; todavia, isto não é obrigatório",
        "tooltip-ca-talk": "Discussão sobre o conteúdo da página",
        "anonymous": "{{PLURAL:$1|Usuário anônimo|Usuários anônimos}} da {{SITENAME}}",
        "siteuser": "{{GENDER:$2|um usuário|uma usuária|um usuário}} da {{SITENAME}} ($1)",
        "anonuser": "usuário anônimo $1 da {{SITENAME}}",
-       "lastmodifiedatby": "Esta página foi modificada pela última vez à(s) $2 de $1 por $3.",
+       "lastmodifiedatby": "Esta página foi editada pela última vez à(s) $2 de $1 por $3.",
        "othercontribs": "Baseado no trabalho de $1.",
        "others": "outros",
        "siteusers": "{{PLURAL:$2|{{GENDER:$1|um usuário}}|$2 usuários}} da {{SITENAME}} ($1)",
        "newimages-legend": "Filtrar",
        "newimages-label": "Nome de arquivo (ou parte dele):",
        "newimages-user": "Endereço IP ou nome do usuário:",
+       "newimages-newbies": "Mostrar apenas as contribuições das novas contas",
        "newimages-showbots": "Mostrar uploads realizados por robôs",
        "newimages-hidepatrolled": "Ocultar os carregamentos patrulhados.",
+       "newimages-mediatype": "Tipo de mídia:",
        "noimages": "Nada para ver.",
        "gallery-slideshow-toggle": "Alternar miniaturas",
        "ilsubmit": "Pesquisar",
        "exif-pixelydimension": "Altura da imagem",
        "exif-usercomment": "Comentários de usuários",
        "exif-relatedsoundfile": "arquivo áudio relacionado",
-       "exif-datetimeoriginal": "Data e hora de geração de dados",
+       "exif-datetimeoriginal": "Data e hora da geração dos dados",
        "exif-datetimedigitized": "Data e hora de digitalização",
        "exif-subsectime": "Subsegundos DataHora",
        "exif-subsectimeoriginal": "Subsegundos DataHoraOriginal",
        "tags-create-reason": "Razão:",
        "tags-create-submit": "Criar",
        "tags-create-no-name": "Você deve especificar um nome de etiqueta",
-       "tags-create-invalid-chars": "Nomes de etiquetas não devem conter vírgulas (<code>,</code>) ou barras (<code>/</code>).",
+       "tags-create-invalid-chars": "Os nomes das etiquetas não podem conter vírgulas (<code>,</code>), barras verticais (<code>|</code>) ou barras (<code>/</code>).",
        "tags-create-invalid-title-chars": "Nomes de etiqueta não devem conter caracteres que não possam ser utilizados em títulos de páginas.",
        "tags-create-already-exists": "A etiqueta \"$1\" já existe.",
        "tags-create-warnings-above": "O(s) seguinte(s) {{PLURAL:$2|aviso foi|avisos foram}} encontrado(s) ao tentar criar a etiqueta \"$1\":",
        "mw-widgets-titleinput-description-redirect": "redirecionar para $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Adicionar uma categoria...",
        "mw-widgets-usersmultiselect-placeholder": "Adicione mais...",
+       "date-range-from": "Da data:",
+       "date-range-to": "Para data:",
        "sessionmanager-tie": "Não é possível combinar vários tipos de autenticação de solicitação: $1.",
        "sessionprovider-generic": "$1 sessões",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "Sessões baseadas em cookie",
        "pageid": "ID da página $1",
        "rawhtml-notallowed": "As tags &lt;html&gt; não podem ser usadas fora das páginas normais.",
        "gotointerwiki": "Saindo {{SITENAME}}",
-       "gotointerwiki-invalid": "O título especificado é invalido.",
-       "gotointerwiki-external": "Você está prestes a sair {{SITENAME}} para visitar [[$2]] que é um site externo.\n\n[$1 Clique aqui para continuar para $1].",
+       "gotointerwiki-invalid": "O título especificado é inválido.",
+       "gotointerwiki-external": "Você está prestes a sair {{SITENAME}} para visitar [[$2]] que é um website separado.\n\n[$1 Continuar para $1].",
        "undelete-cantedit": "Você não pode restaurar esta página, porque você não está autorizado a editar esta página.",
-       "undelete-cantcreate": "Você não pode restaurar esta página, pois não há uma página com este nome e você não está autorizado a criar esta página."
+       "undelete-cantcreate": "Você não pode restaurar esta página, pois não há uma página com este nome e você não está autorizado a criar esta página.",
+       "pagedata-title": "Dados de página",
+       "pagedata-text": "Esta página fornece uma interface de dados para páginas. Forneça o título da página no URL, usando a sintaxe de subpáginas, por favor.\n* Aplica-se a negociação de conteúdo com base no cabeçalho Accept do seu cliente. Isto significa que os dados da página serão fornecidos no formato preferido do seu cliente.",
+       "pagedata-not-acceptable": "Nenhum formato correspondente encontrado. Tipos MIME suportados: $1",
+       "pagedata-bad-title": "Título inválido: $1."
 }
index 6e7ad8c..cb72bf7 100644 (file)
        "anontalk": "Discussão",
        "navigation": "Navegação",
        "and": "&#32;e",
-       "qbfind": "Procurar",
-       "qbbrowse": "Navegar",
-       "qbedit": "Editar",
-       "qbpageoptions": "Esta página",
-       "qbmyoptions": "As minhas páginas",
        "faq": "Perguntas frequentes",
-       "faqpage": "Project:FAQ",
        "actions": "Ações",
        "namespaces": "Domínios",
        "variants": "Variantes",
        "edit-local": "Editar descrição local",
        "create": "Criar",
        "create-local": "Adicionar descrição local",
-       "editthispage": "Editar esta página",
-       "create-this-page": "Criar esta página",
        "delete": "Eliminar",
-       "deletethispage": "Eliminar esta página",
-       "undeletethispage": "Restaurar esta página",
        "undelete_short": "Restaurar {{PLURAL:$1|uma edição|$1 edições}}",
        "viewdeleted_short": "Ver {{PLURAL:$1|uma edição eliminada|$1 edições eliminadas}}",
        "protect": "Proteger",
        "protect_change": "alterar",
-       "protectthispage": "Proteger esta página",
        "unprotect": "Alterar proteção",
-       "unprotectthispage": "Alterar a proteção desta página",
        "newpage": "Página nova",
-       "talkpage": "Discutir esta página",
        "talkpagelinktext": "Discussão",
        "specialpage": "Página especial",
        "personaltools": "Ferramentas pessoais",
-       "articlepage": "Ver página de conteúdo",
        "talk": "Discussão",
        "views": "Vistas",
        "toolbox": "Ferramentas",
        "tool-link-userrights": "Alterar grupos {{GENDER:$1|do utilizador|da utilizadora}}",
        "tool-link-userrights-readonly": "Ver grupos {{GENDER:$1|do utilizador|da utilizadora}}",
        "tool-link-emailuser": "Enviar correio eletrónico a {{GENDER:$1|este utilizador|esta utilizadora|este(a) utilizador(a)}}",
-       "userpage": "Ver página de utilizador",
-       "projectpage": "Ver página de projeto",
        "imagepage": "Ver página de ficheiro",
        "mediawikipage": "Ver página de mensagem",
        "templatepage": "Ver página de predefinição",
        "redirectedfrom": "(Redirecionado de $1)",
        "redirectpagesub": "Página de redirecionamento",
        "redirectto": "Redireciona para:",
-       "lastmodifiedat": "Esta página foi modificada pela última vez à(s) $2 de $1.",
+       "lastmodifiedat": "Esta página foi editada pela última vez à(s) $2 de $1.",
        "viewcount": "Esta página foi acedida {{PLURAL:$1|uma vez|$1 vezes}}.",
        "protectedpage": "Página protegida",
        "jumpto": "Ir para:",
        "jumptonavigation": "navegação",
        "jumptosearch": "pesquisa",
        "view-pool-error": "Desculpe, mas de momento os servidores estão sobrecarregados.\nHá demasiados utilizadores a tentar visualizar esta página.\nEspere um pouco antes de tentar aceder à página novamente, por favor.\n\n$1",
-       "generic-pool-error": "Desculpe, os servidores estão sobrecarregados nesse momento.\nDemasiados utilizadores estão tentando visualizar este recurso.\nPor favor, espere um pouco antes de tentar aceder a este recurso novamente.",
+       "generic-pool-error": "Desculpe, neste momento os servidores estão sobrecarregados.\nHá demasiados utilizadores a tentar ver este recurso.\nEspere um pouco antes de tentar aceder a este recurso novamente, por favor.",
        "pool-timeout": "Tempo limite de espera para o bloqueio excedido",
        "pool-queuefull": "A fila de processos está cheia",
        "pool-errorunknown": "Erro desconhecido",
        "passwordreset-invalidemail": "Correio eletrónico inválido",
        "passwordreset-nodata": "Não foram fornecidos nome de utilizador(a) nem endereço de correio eletrónico",
        "changeemail": "Alterar ou remover o endereço de correio eletrónico",
-       "changeemail-header": "Complete este formulário para alterar o seu endereço de correio eletrónico. Se quer eliminar a associação de qualquer endereço de correio eletrónico com a sua conta, deixe em branco o novo endereço de correio eletrónico ao submeter o formulário.",
+       "changeemail-header": "Complete este formulário para alterar o seu endereço de correio eletrónico. Se quer eliminar a associação de qualquer endereço de correio eletrónico à sua conta, deixe em branco o novo endereço de correio eletrónico ao enviar o formulário.",
        "changeemail-no-info": "Precisa de iniciar sessão para aceder diretamente a esta página.",
        "changeemail-oldemail": "Correio eletrónico atual:",
        "changeemail-newemail": "Novo endereço de correio eletrónico:",
        "preview": "Antevisão",
        "showpreview": "Antever resultado",
        "showdiff": "Mostrar alterações",
-       "blankarticle": "<strong>Aviso:</strong> A página que está prestes a criar está em branco.  \nSe clicar \"{{int:savearticle}}\" outra vez, a página será criada sem qualquer conteúdo.",
-       "anoneditwarning": "<strong>Aviso</strong>: Não iniciou sessão. O seu endereço IP será registado no histórico de edições desta página. Se <strong>[$1 iniciar sessão]</strong> ou <strong>[$2 criar uma conta]</strong>, as suas edições serão registadas com o seu nome de utilizador(a), bem como usufruir de outros benefícios.",
+       "blankarticle": "<strong>Aviso:</strong> A página que está prestes a criar está em branco.  \nSe clicar \"$1\" outra vez, a página será criada sem qualquer conteúdo.",
+       "anoneditwarning": "<strong>Aviso</strong>: Não iniciou sessão. O seu endereço IP será registado no histórico de edições desta página. Se <strong>[$1 iniciar sessão]</strong> ou <strong>[$2 criar uma conta]</strong>, as suas edições serão registadas com o seu nome de utilizador(a), em conjunto com outros benefícios.",
        "anonpreviewwarning": "''Não iniciou sessão. Ao gravar, registará o seu endereço IP no histórico de edições da página.''",
        "missingsummary": "'''Atenção:''' Não introduziu um resumo da edição.\nSe clicar novamente \"Gravar página\" a sua edição será gravada sem resumo.",
-       "selfredirect": "<strong>Aviso:</strong> Está a redirecionar esta página para si mesma.\nPode ter especificado o destino errado para a página ou até a editar a página errada.\nSe clicar em \"{{int:savearticle}}\" novamente, o redirecionamento será criado na mesma.",
+       "selfredirect": "<strong>Aviso:</strong> Está a redirecionar esta página para si mesma.\nPode ter especificado o destino errado para o redirecionamento ou pode estar a editar a página errada.\nSe clicar em \"$1\" novamente, o redirecionamento será criado na mesma.",
        "missingcommenttext": "Introduza um comentário abaixo, por favor.",
-       "missingcommentheader": "<strong>Atenção:</strong> Não introduziu um assunto para este comentário.\nSe clicar novamente \"{{int:savearticle}}\", a sua edição será gravada sem assunto.",
+       "missingcommentheader": "<strong>Atenção:</strong> Não introduziu um assunto para este comentário.\nSe clicar novamente \"$1\", a sua edição será gravada sem assunto.",
        "summary-preview": "Antevisão do resumo de edição:",
        "subject-preview": "Antevisão do assunto:",
        "previewerrortext": "Ocorreu um erro enquanto tentava antever as suas alterações.",
        "blockedtitle": "O utilizador está bloqueado",
        "blockedtext": "<strong>O seu nome de utilizador ou endereço IP foram bloqueados.</strong>\n\nO bloqueio foi realizado por $1.\nO motivo apresentado foi <em>$2</em>.\n\n* Início do bloqueio: $8\n* Expiração do bloqueio: $6\n* Destinatário do bloqueio: $7\n\nPode contactar $1 ou outro [[{{MediaWiki:Grouppage-sysop}}|administrador]] para discutir o bloqueio.\nNote que para utilizar a funcionalidade \"Contactar utilizador\" precisa de ter um endereço de correio eletrónico válido nas suas [[Special:Preferences|preferências]] e de não lhe ter sido bloqueado o uso desta funcionalidade.\nO seu endereço IP neste momento é $3 e a identificação (ID) do bloqueio é #$5.\nInclua todos os detalhes acima em quaisquer contactos relacionados com este bloqueio, por favor.",
        "autoblockedtext": "O seu endereço IP foi bloqueado de forma automática porque foi utilizado recentemente por outro utilizador, o qual foi bloqueado por $1.\nO motivo apresentado foi:\n\n:<em>$2</em>\n\n* Início do bloqueio: $8\n* Expiração do bloqueio: $6\n* Destinatário do bloqueio: $7\n\nPode contactar $1 ou outro [[{{MediaWiki:Grouppage-sysop}}|administrador]] para discutir o bloqueio.\n\nNote que para utilizar a funcionalidade \"Contactar utilizador\" precisa de ter um endereço de correio eletrónico válido nas suas [[Special:Preferences|preferências]] e de não lhe ter sido bloqueado o uso desta funcionalidade.\n\nO seu endereço IP neste momento é $3 e a identificação (ID) do bloqueio é #$5.\nInclua todos os detalhes acima em quaisquer contactos relacionados com este bloqueio, por favor.",
-       "systemblockedtext": "O seu nome de utilizador ou endereço IP foram bloqueados automaticamente pelo MediaWiki.\nO motivo fornecido é:\n\n:<em>$2</em>\n\n* Início do bloqueio: $8\n* Expiração do bloqueio: $6\n* Destinatário do bloqueio: $7\n\nO seu endereço IP atual é $3.\nInclua todos os detalhes acima em quaisquer contatos sobre este assunto, por favor.",
+       "systemblockedtext": "O seu nome de utilizador ou endereço IP foram bloqueados automaticamente pelo MediaWiki.\nO motivo fornecido é:\n\n:<em>$2</em>\n\n* Início do bloqueio: $8\n* Expiração do bloqueio: $6\n* Destinatário do bloqueio: $7\n\nO seu endereço IP atual é $3.\nInclua todos os detalhes acima em quaisquer contactos sobre este assunto, por favor.",
        "blockednoreason": "sem motivo especificado",
        "whitelistedittext": "Precisa de $1 para poder editar páginas.",
        "confirmedittext": "Precisa de confirmar o seu endereço de correio eletrónico antes de começar a editar páginas.\nIntroduza e valide o endereço através das [[Special:Preferences|preferências do utilizador]], por favor.",
        "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.\nA caixa de texto abaixo mostra o texto existente neste momento.\nAs suas mudanças são mostradas na área ao fundo da página.\nTerá de reintegrar as suas mudanças no texto da caixa abaixo.\n'''Só''' o texto desta caixa será gravado quando clicar \"{{int:savearticle}}\".",
+       "explainconflict": "A página foi alterada por alguém desde que começou a editá-la.\nA caixa de texto abaixo mostra o texto existente neste momento.\nAs suas mudanças são mostradas na área ao fundo da página.\nTerá de reintegrar as suas mudanças no texto da caixa abaixo.\n<strong>Só</strong> o texto desta caixa será gravado quando clicar \"$1\".",
        "yourtext": "O seu texto",
        "storedversion": "Versão gravada",
        "nonunicodebrowser": "<strong>Aviso: O seu navegador não é compatível com as especificações Unicode.</strong>\nFoi 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.",
        "readonlywarning": "<strong>Atenção: A base de dados foi bloqueada para manutenção, pelo que não poderá gravar as suas edições neste momento.</strong>\nPode, contudo, copiar e colar o seu texto num ficheiro de texto e guardá-lo para mais tarde.\n\nO administrador do sistema que a bloqueou forneceu a seguinte explicação: $1",
        "protectedpagewarning": "'''Aviso: Esta página foi protegida para só poder ser editada por administradores.'''\nO último registo é apresentado abaixo para referência:",
        "semiprotectedpagewarning": "'''Nota:''' Esta página foi protegida de modo a que apenas utilizadores registados a possam editar.\nA última entrada no histórico é fornecida abaixo como referência.",
-       "cascadeprotectedwarning": "<strong>Aviso:</strong> Esta página está protegida de forma que apenas os administradores possam editá-la, porque se encontra transcluída {{PLURAL:$1|na seguinte página protegida|nas seguintes páginas protegidas}} em cascata:",
+       "cascadeprotectedwarning": "<strong>Aviso:</strong> Esta página está protegida de forma que apenas os utilizadores com [[Special:ListGroupRights|privilégios específicos]] possam editá-la, porque se encontra transcluída {{PLURAL:$1|na seguinte página protegida|nas seguintes páginas protegidas}} em cascata:",
        "titleprotectedwarning": "'''Aviso: Esta página foi protegida de forma a que [[Special:ListGroupRights|privilégios específicos]] sejam necessários para criá-la.'''\nPara referência, é apresentada abaixo a última entrada do registo:",
        "templatesused": "{{PLURAL:$1|Predefinição utilizada|Predefinições utilizadas}} nesta página:",
        "templatesusedpreview": "{{PLURAL:$1|Predefinição utilizada|Predefinições utilizadas}} nesta antevisão:",
        "post-expand-template-argument-warning": "Aviso: Esta página contém pelo menos um argumento de predefinição com um tamanho expandido demasiado grande.\nEstes argumentos foram omitidos.",
        "post-expand-template-argument-category": "Páginas com argumentos de predefinições descartados",
        "parser-template-loop-warning": "Ciclo de predefinições detetado: [[$1]]",
+       "template-loop-category": "Páginas com ciclos infinitos de predefinições",
+       "template-loop-category-desc": "Esta página contém um ciclo infinito de predefinições, isto é, uma predefinição que se chama a si própria recursivamente.",
        "parser-template-recursion-depth-warning": "Foi excedido o limite da profundidade de recursividade nas predefinições ($1)",
        "language-converter-depth-warning": "O limite de profundidade do conversor de idiomas excedeu a ($1)",
        "node-count-exceeded-category": "Páginas em que o total de nós é excedido",
        "expansion-depth-exceeded-category": "Páginas em que a profundidade de expansão é excedida",
        "expansion-depth-exceeded-category-desc": "A página excede a profundidade de expansão permitida.",
        "expansion-depth-exceeded-warning": "A página excedeu a profundidade de expansão",
-       "parser-unstrip-loop-warning": "Foi detectado um ciclo infinito unstrip",
+       "parser-unstrip-loop-warning": "Foi detetado um ciclo infinito unstrip",
        "parser-unstrip-recursion-limit": "Limite de recursão do unstrip excedido ($1)",
        "converter-manual-rule-error": "Erro detetado na regra de conversão de língua manual",
        "undo-success": "É possível desfazer a edição.\nVerifique a comparação abaixo, para se certificar que corresponde ao que pretende fazer.\nDepois grave as alterações, para finalizar e desfazer a edição.",
        "search-file-match": "(coincide com o conteúdo do ficheiro)",
        "search-suggest": "Será que quis dizer: $1",
        "search-rewritten": "A mostrar resultados para $1. Pesquise antes por $2.",
-       "search-interwiki-caption": "Projetos irmãos",
+       "search-interwiki-caption": "Resultados de projetos irmãos",
        "search-interwiki-default": "Resultados de $1:",
        "search-interwiki-more": "(mais)",
        "search-interwiki-more-results": "mais resultados",
        "saveusergroups": "Gravar grupos {{GENDER:$1|do utilizador|da utilizadora|do(a) utilizador(a)}}",
        "userrights-groupsmember": "Membro de:",
        "userrights-groupsmember-auto": "Membro implícito de:",
-       "userrights-groups-help": "É possível alterar os grupos a que {{GENDER:$1|este utilizador|esta utilizadora}} pertence:\n* Uma caixa de seleção marcada significa que {{GENDER:$1|o utilizador|a utilizadora}} se encontra no grupo.\n* Uma caixa de seleção desmarcada significa que {{GENDER:$1|o utilizador|a utilizadora}} não se encontra no grupo.\n* Um asterisco (*) indica que não pode remover o grupo depois de o adicionar, ou vice-versa.\n* Um símbolo de cardinal (#) indica que só pode atrasar a data de expiração deste grupo; não a pode adiantar.",
+       "userrights-groups-help": "É possível alterar os grupos a que {{GENDER:$1|este utilizador|esta utilizadora}} pertence:\n* Uma caixa de seleção marcada significa que {{GENDER:$1|o utilizador|a utilizadora}} se encontra no grupo.\n* Uma caixa de seleção desmarcada significa que {{GENDER:$1|o utilizador|a utilizadora}} não se encontra no grupo.\n* Um asterisco (*) indica que não pode remover o grupo depois de o adicionar, ou vice-versa.\n* Um símbolo de cardinal (#) indica que só pode atrasar a data de expiração da associação a este grupo; não a pode adiantar.",
        "userrights-reason": "Motivo:",
        "userrights-no-interwiki": "Não tem permissões para alterar os privilégios de utilizadores noutras wikis.",
        "userrights-nodatabase": "A base de dados $1 não existe ou não é uma base de dados local.",
        "userrights-expiry-options": "1 dia:1 day,1 semana:1 week,1 mês:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year",
        "userrights-invalid-expiry": "O prazo de expiração para o grupo \"$1\" é inválido.",
        "userrights-expiry-in-past": "O prazo de expiração para o grupo \"$1\" está no passado.",
-       "userrights-cannot-shorten-expiry": "Não pode adiantar a data de expiração do grupo \"$1\". Só os utilizadores com permissões para adicionar e remover este grupo podem adiantar datas de expiração.",
+       "userrights-cannot-shorten-expiry": "Não pode adiantar a data de expiração da associação ao grupo \"$1\". Só os utilizadores com permissões para adicionar e remover este grupo podem adiantar datas de expiração.",
        "userrights-conflict": "Conflito entre alterações de privilégios de utilizador! Por favor, reveja e confirme as suas mudanças.",
        "group": "Grupo:",
        "group-user": "Utilizadores",
        "grant-group-email": "Enviar correio electrónico",
        "grant-group-high-volume": "Realizar atividades em grande quantidade",
        "grant-group-customization": "Personalização e preferências",
-       "grant-group-administration": "Executar acções administrativas",
+       "grant-group-administration": "Executar ações administrativas",
        "grant-group-private-information": "Aceder aos seus dados privados",
        "grant-group-other": "Atividades diversas",
        "grant-blockusers": "Bloquear e desbloquear utilizadores",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "Mostrar",
        "rcfilters-activefilters": "Filtros ativos",
+       "rcfilters-quickfilters": "Configurações de filtros gravadas",
+       "rcfilters-quickfilters-placeholder-title": "Ainda não foi gravado nenhum link",
+       "rcfilters-quickfilters-placeholder-description": "Para gravar as suas configurações dos filtros e reutilizá-las mais tarde, clique o ícone do marcador de página, na área Filtro Ativo abaixo.",
+       "rcfilters-savedqueries-defaultlabel": "Filtros gravados",
+       "rcfilters-savedqueries-rename": "Alterar o nome",
+       "rcfilters-savedqueries-setdefault": "Ativar por padrão",
+       "rcfilters-savedqueries-unsetdefault": "Remover por padrão",
+       "rcfilters-savedqueries-remove": "Remover",
+       "rcfilters-savedqueries-new-name-label": "Nome",
+       "rcfilters-savedqueries-apply-label": "Gravar configurações",
+       "rcfilters-savedqueries-cancel-label": "Cancelar",
+       "rcfilters-savedqueries-add-new-title": "Gravar configurações atuais de filtros",
        "rcfilters-restore-default-filters": "Restaurar os filtros padrão",
        "rcfilters-clear-all-filters": "Limpar todos os filtros",
        "rcfilters-search-placeholder": "Filtrar mudanças recentes (navegue ou começe a escrever)",
        "rcfilters-highlightmenu-help": "Selecione uma cor para realçar esta propriedade",
        "rcfilters-filterlist-noresults": "Não foram encontrados filtros",
        "rcfilters-noresults-conflict": "Não foram encontrados resultados porque os critérios de pesquisa estão em conflito",
+       "rcfilters-state-message-subset": "Este filtro não produz efeito porque os seus resultados já estão incluídos nos {{PLURAL:$2|do seguinte filtro mais abrangente|dos seguintes filtros mais abrangentes}} (tente usar o realce para diferenciá-lo): $1",
+       "rcfilters-state-message-fullcoverage": "Selecionar todos os filtros de um grupo é o mesmo que não selecionar nenhum, portanto este filtro não produz efeito. O grupo inclui: $1",
        "rcfilters-filtergroup-registration": "Registo de utilizador",
        "rcfilters-filter-registered-label": "Registado",
        "rcfilters-filter-registered-description": "Editores autenticados.",
        "rcfilters-filter-unregistered-label": "Não registado",
        "rcfilters-filter-unregistered-description": " Editores que não estão autenticados.",
-       "rcfilters-filtergroup-authorship": "Editar autoria",
-       "rcfilters-filter-editsbyself-label": "As suas próprias edições",
-       "rcfilters-filter-editsbyself-description": "Edições suas.",
-       "rcfilters-filter-editsbyother-label": "Edições de outros",
-       "rcfilters-filter-editsbyother-description": "Edições criadas por outros utilizadores (não por si).",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "Este filtro entra em conflito com {{PLURAL:$2|o seguinte filtro|os seguintes filtros}} de Experiência, que só {{PLURAL:$2|encontra|encontram}} utilizadores registados: $1",
+       "rcfilters-filtergroup-authorship": "Autoria da contribuição",
+       "rcfilters-filter-editsbyself-label": "Modificações feitas por si",
+       "rcfilters-filter-editsbyself-description": "As suas edições.",
+       "rcfilters-filter-editsbyother-label": "Modificações de outros",
+       "rcfilters-filter-editsbyother-description": "Todas as modificações, exceto as suas.",
        "rcfilters-filtergroup-userExpLevel": "Nível de experiência (apenas para utilizadores registados)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Os filtros de Experiência só encontram utilizadores registados, portanto este filtro entra em conflito com o filtro “Não registado”.",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "O filtro \"Não registado\" entra em conflito com um ou mais filtros de Experiência, que só encontram utilizadores registados. Os filtros em conflito estão marcados na área Filtros Ativos, acima.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Novatos",
        "rcfilters-filter-user-experience-level-newcomer-description": "Menos de 10 edições e 4 dias de atividade.",
        "rcfilters-filter-user-experience-level-learner-label": "Aprendizes",
-       "rcfilters-filter-user-experience-level-learner-description": "Mais dias de atividade e edições do que \"Novatos\", mas menos do que \"Utilizadores experientes\".",
+       "rcfilters-filter-user-experience-level-learner-description": "Mais experiência do que \"Novatos\", mas menos do que \"Utilizadores experientes\".",
        "rcfilters-filter-user-experience-level-experienced-label": "Utilizadores experientes",
        "rcfilters-filter-user-experience-level-experienced-description": "Mais de 30 dias de atividade e 500 edições.",
        "rcfilters-filtergroup-automated": "Contribuições automatizadas",
        "rcfilters-filter-minor-description": "Edições marcadas pelo autor como menores.",
        "rcfilters-filter-major-label": "Edições não-menores",
        "rcfilters-filter-major-description": "Edições não marcadas como menores.",
+       "rcfilters-filtergroup-watchlist": "Páginas vigiadas",
+       "rcfilters-filter-watchlist-watched-label": "Nas páginas vigiadas",
+       "rcfilters-filter-watchlist-watched-description": "Modificações de páginas vigiadas.",
+       "rcfilters-filter-watchlist-watchednew-label": "Modificações novas de páginas vigiadas",
+       "rcfilters-filter-watchlist-watchednew-description": "Modificações de páginas vigiadas que ainda não visitou depois de serem modificadas.",
+       "rcfilters-filter-watchlist-notwatched-label": "Ausente da lista de páginas vigiadas",
+       "rcfilters-filter-watchlist-notwatched-description": "Tudo menos modificações das suas páginas vigiadas.",
        "rcfilters-filtergroup-changetype": "Tipo de alteração",
-       "rcfilters-filter-pageedits-label": "Edições da página",
-       "rcfilters-filter-pageedits-description": "Edições do conteúdo da wiki, de discussões, de descrições de categorias....",
+       "rcfilters-filter-pageedits-label": "Edições de páginas",
+       "rcfilters-filter-pageedits-description": "Edições do conteúdo da wiki, de discussões, de descrições de categorias",
        "rcfilters-filter-newpages-label": "Criações de páginas",
        "rcfilters-filter-newpages-description": "Edições que criam novas páginas.",
        "rcfilters-filter-categorization-label": "Alterações de categoria",
        "rcfilters-filter-categorization-description": "Registos de páginas que estão a ser adicionadas ou removidas das categorias.",
        "rcfilters-filter-logactions-label": "Ações registadas",
-       "rcfilters-filter-logactions-description": "Ações administrativas, criação de contas, eliminação de páginas, carregamentos....",
+       "rcfilters-filter-logactions-description": "Ações administrativas, criação de contas, eliminação de páginas, carregamentos…",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "O filtro \"Edições menores\" entra em conflito com um ou mais filtros de Tipo de Modificação, porque certos tipos de modificações não podem ser classificados como \"menores\". Os filtros em conflito estão marcados na área Filtros Ativos, acima.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Certos tipos de modificações não podem ser classificados como \"menores\", portanto este filtro entra em conflito com os seguintes filtros de Tipo de Modificação: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Este filtro de Tipo de Modificação entra em conflito com o filtro \"Edições menores\". Certos tipos de modificações não podem ser classificados como \"menores\".",
+       "rcfilters-filtergroup-lastRevision": "Última revisão",
+       "rcfilters-filter-lastrevision-label": "Última revisão",
+       "rcfilters-filter-lastrevision-description": "A modificação mais recente de uma página.",
+       "rcfilters-filter-previousrevision-label": "Revisões anteriores",
+       "rcfilters-filter-previousrevision-description": "Todas as modificações que não sejam a modificação mais recente de uma página.",
+       "rcfilters-filter-excluded": "Excluído",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:não</strong> $1",
+       "rcfilters-view-tags": "Etiquetas",
        "rcnotefrom": "Abaixo {{PLURAL:$5|está a mudança|estão as mudanças}} desde <strong>$2</strong> (mostradas até <strong>$1</strong>).",
+       "rclistfromreset": "Reiniciar a seleção da data",
        "rclistfrom": "Mostrar as novas mudanças a partir das $2 de $3",
        "rcshowhideminor": "$1 edições menores",
        "rcshowhideminor-show": "Mostrar",
        "rcshowhidecategorization": "$1 categorização de páginas",
        "rcshowhidecategorization-show": "Mostrar",
        "rcshowhidecategorization-hide": "Ocultar",
-       "rclinks": "Mostrar as últimas $1 mudanças nos últimos $2 dias<br />$3",
+       "rclinks": "Mostrar as últimas $1 mudanças nos últimos $2 dias",
        "diff": "dif",
        "hist": "his",
        "hide": "Ocultar",
        "php-uploaddisabledtext": "O carregamento de ficheiros está desativado no PHP.\nVerifique a configuração file_uploads, por favor.",
        "uploadscripted": "Este ficheiro contém HTML ou código que pode ser erradamente interpretado por um navegador.",
        "upload-scripted-pi-callback": "Não é possível carregar ficheiros que contenham instruções de processamento de páginas de estilo XML.",
+       "upload-scripted-dtd": "Não é possível carregar ficheiros SVG que contêm uma declaração DTD não padronizada.",
        "uploaded-script-svg": "Encontrou um elemento scriptable no ficheiro \"$1\" SVG carregado.",
        "uploaded-hostile-svg": "Encontrou-se um código CSS não seguro no elemento de estilo do ficheiro SVG carregado.",
-       "uploaded-event-handler-on-svg": "Não Ã¡ permitido configurar atributos controladores de eventos <code>$1=\"$2\"</code> nos ficheiros SVG.",
+       "uploaded-event-handler-on-svg": "Não Ã© permitido configurar atributos controladores de eventos <code>$1=\"$2\"</code> nos ficheiros SVG.",
        "uploaded-href-attribute-svg": "Os atributos <code>href</code> em ficheiros SVG só estão autorizados a ligar a endereços http:// ou https://, mas foi encontrado <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-href-unsafe-target-svg": "Detetado <code>href</code> para dados inseguros: alvo URI <code>&lt;$1 $2=\"$3\"&gt;</code> no ficheiro SVG carregado.",
        "uploaded-animate-svg": "Foi detetado um elemento \"animate\" que pode estar a alterar <code>href</code>, usando o atributo \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code> no ficheiro SVG carregado.",
        "uploaded-remote-url-svg": "A configuração de qualquer atributo de estilo com um URL remoto em ficheiros SVG está bloqueada. Foi detetado <code>$1=\"$2\"</code> no ficheiro SVG carregado.",
        "uploaded-image-filter-svg": "Foi encontrado um filtro de imagem com o URL: <code>&lt;$1 $2=\"$3\"&gt;</code> no ficheiro SVG carregado.",
        "uploadscriptednamespace": "Este ficheiro SVG contém um domínio que não é permitido \"<nowiki>$1</nowiki>\".",
-       "uploadinvalidxml": "Erro detectado na análise do XML do ficheiro carregado.",
+       "uploadinvalidxml": "Não foi possível analisar o XML do ficheiro carregado.",
        "uploadvirus": "O ficheiro contém um vírus! \nDetalhes: $1",
        "uploadjava": "Este é um ficheiro ZIP que contém um ficheiro .class de Java.\nNão é permitido o carregamento de ficheiros Java, porque estes podem contornar as restrições de segurança.",
        "upload-source": "Ficheiro de origem",
        "apisandbox-multivalue-all-namespaces": "$1 (Todos os espaços nominais)",
        "apisandbox-multivalue-all-values": "$1 (Todos os valores)",
        "booksources": "Fontes bibliográficas",
-       "booksources-search-legend": "Pesquisar referências bibliográficas",
+       "booksources-search-legend": "Pesquisar fontes de livros",
        "booksources-search": "Pesquisar",
        "booksources-text": "É apresentada abaixo uma lista de ligações para outros sítios na Internet que vendem livros novos e usados e talvez possuam informações adicionais sobre os livros que procura:",
        "booksources-invalid-isbn": "O número ISBN fornecido não parece ser válido; verifique a existência de erros ao copiar da fonte original.",
        "enotif_body_intro_moved": "A página $1 da wiki {{SITENAME}} foi movida a $PAGEEDITDATE {{GENDER:$2|pelo utilizador|pela utilizadora}} $2. Veja a revisão atual em $3.",
        "enotif_body_intro_restored": "A página $1 da wiki {{SITENAME}} foi restaurada a $PAGEEDITDATE {{GENDER:$2|pelo utilizador|pela utilizadora}} $2. Veja a revisão atual em $3.",
        "enotif_body_intro_changed": "A página $1 da wiki {{SITENAME}} foi alterada a  $PAGEEDITDATE {{GENDER:$2|pelo utilizador|pela utilizadora}} $2. Veja a revisão atual em $3.",
-       "enotif_lastvisited": "Consulte $1 para todas as alterações efetuadas desde a sua última visita.",
-       "enotif_lastdiff": "Consulte $1 para ver esta alteração.",
+       "enotif_lastvisited": "Para ver todas as alterações efetuadas desde a sua última visita, consulte $1",
+       "enotif_lastdiff": "Para ver esta alteração, consulte $1",
        "enotif_anon_editor": "utilizador anónimo $1",
        "enotif_body": "{{GENDER:$WATCHINGUSERNAME|Caro|Cara|Caro(a)}} $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nResumo da edição: $PAGESUMMARY $PAGEMINOREDIT\n\nContacte o editor:\ncorreio eletrónico: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nAté se autenticar e visitar novamente esta página, não receberá mais notificações das alterações futuras. Também pode reativar as notificações para todas páginas na sua lista de páginas vigiadas.\n\nO seu sistema de notificação amigável da wiki {{SITENAME}}\n\n--\nPara alterar as suas preferências de notificação por correio eletrónico, visite\n{{canonicalurl:{{#special:Preferences}}}}\n\nPara alterar as suas preferências das páginas vigiadas, visite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPara retirar a página da lista de páginas vigiadas, visite\n$UNWATCHURL\n\nPara comentários e pedidos de ajuda:\n$HELPPAGE",
        "created": "criada",
        "rollback-success": "Foram revertidas as edições de {{GENDER:$3|$1}}; reposta a última edição de {{GENDER:$4|$2}}.",
        "rollback-success-notify": "Revertidas as edições de $1;\nMudança para a última revisão de $2. [$3 Mostrar alterações]",
        "sessionfailure-title": "Erro de sessão",
-       "sessionfailure": "Foram detectados problemas com a sua sessão;\na operação foi cancelada como medida de proteção contra a interceptação de sessões.\nVolte à página anterior, recarregue-a e tente novamente.",
+       "sessionfailure": "Foram detetados problemas com a sua sessão;\na operação foi cancelada como medida de proteção contra a intercetação de sessões.\nVolte à página anterior, recarregue-a e tente novamente.",
        "changecontentmodel": "Alterar modelo de conteúdo de uma página",
        "changecontentmodel-legend": "Editar modelo de contéudo",
        "changecontentmodel-title-label": "Título da página",
        "undeleterevisions": "$1 {{PLURAL:$1|revisão eliminada|revisões eliminadas}}",
        "undeletehistory": "Se restaurar uma página, todas as edições serão restauradas para o histórico.\nSe uma nova página foi criada com o mesmo nome desde a eliminação, as edições restauradas aparecerão no histórico anterior.",
        "undeleterevdel": "O restauro não será efetuado se resulta na remoção parcial da versão mais recente da página ou ficheiro.\nNestes casos, deverá desmarcar ou revelar a versão eliminada mais recente.",
-       "undeletehistorynoadmin": "Esta página foi eliminada. O motivo de eliminação é apresentado no sumário abaixo, junto dos detalhes do utilizador que editou esta página antes de eliminar. O texto atual destas edições eliminadas encontra-se agora apenas disponível para administradores.",
+       "undeletehistorynoadmin": "Esta página foi eliminada.\nO motivo de eliminação é apresentado no resumo abaixo, em conjunto com detalhes dos utilizadores que tinham editado esta página antes da sua eliminação.\nO texto atual destas edições eliminadas encontra-se agora apenas disponível para administradores.",
        "undelete-revision": "Edição eliminada da página $1 (das $5 de $4), por $3:",
        "undeleterevision-missing": "Edição inválida ou não encontrada.\nPode ter usado uma ligação incorreta ou talvez a revisão tenha sido restaurada ou removida do arquivo.",
        "undeleterevision-duplicate-revid": "Não foi possível restaurar {{PLURAL:$1|uma revisão|$1 revisões}}, porque {{PLURAL:$1|a sua <code>rev_id</code> já estava a ser usada|as respetivas <code>rev_id</code> já estavam a ser usadas}}.",
        "sp-contributions-uploads": "carregamentos",
        "sp-contributions-logs": "registos",
        "sp-contributions-talk": "discussão",
-       "sp-contributions-userrights": "gestão de privilégios do utilizador",
+       "sp-contributions-userrights": "Gestão de privilégios {{GENDER:$1|do utilizador|da utilizadora}}",
        "sp-contributions-blocked-notice": "Este utilizador está bloqueado neste momento.\nPara referência é apresentado abaixo o último registo de bloqueio:",
        "sp-contributions-blocked-notice-anon": "Este endereço IP está bloqueado neste momento.\nPara referência é apresentado abaixo o último registo de bloqueio:",
        "sp-contributions-search": "Pesquisar contribuições",
        "autoblocklist-submit": "Pesquisar",
        "autoblocklist-legend": "Lista de bloqueios automáticos",
        "autoblocklist-localblocks": "{{PLURAL:$1|Bloqueio automático local|Bloqueios automáticos locais}}",
+       "autoblocklist-total-autoblocks": "Número total de bloqueios automáticos: $1",
        "autoblocklist-empty": "A lista de bloqueio automático está vazia.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Outro bloqueio automático|Outros bloqueios automáticos}}",
        "ipblocklist": "Utilizadores bloqueados",
        "exporttext": "Pode exportar o texto e o histórico de edições de uma página em particular para um ficheiro XML. Poderá então importar esse conteúdo noutra wiki que utilize o programa MediaWiki, através da [[Special:Import|página de importações]].\n\nPara exportar páginas, introduza os títulos na caixa de texto abaixo (um título por linha) e selecione se deseja todas as versões, com as linhas de histórico de edições, ou apenas a edição atual e informações sobre a mais recente das edições.\n\nSe desejar, pode utilizar um link (por exemplo, [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] para a [[{{MediaWiki:Mainpage}}]]).",
        "exportall": "Exportar todas as páginas",
        "exportcuronly": "Incluir apenas a edição atual, não o histórico completo",
-       "exportnohistory": "----\n<strong>Nota:</strong> A exportação do histórico completo de páginas através deste formulário foi desativada devido a motivos de desempenho.",
+       "exportnohistory": "----\n<strong>Nota:</strong> A exportação do histórico completo de páginas através deste formulário foi desativada por motivos de desempenho.",
        "exportlistauthors": "Incluir uma lista completa de colaboradores para cada página",
        "export-submit": "Exportar",
        "export-addcattext": "Adicionar à lista páginas da categoria:",
        "tooltip-pt-mycontris": "Lista das {{GENDER:|suas}} contribuições",
        "tooltip-pt-anoncontribs": "Uma lista de edições feitas a partir deste endereço IP",
        "tooltip-pt-login": "É encorajado que inicie sessão, apesar de não ser obrigatório.",
+       "tooltip-pt-login-private": "Para usar esta wiki tem de se autenticar",
        "tooltip-pt-logout": "Sair da conta",
        "tooltip-pt-createaccount": "É encorajado a criar uma conta e iniciar sessão; no entanto, não é obrigatório",
        "tooltip-ca-talk": "Discussão sobre o conteúdo da página",
        "anonymous": "{{PLURAL:$1|Utilizador anónimo|Utilizadores anónimos}} da wiki {{SITENAME}}",
        "siteuser": "$1 da wiki {{SITENAME}}",
        "anonuser": "utilizador anónimo $1 da wiki {{SITENAME}}",
-       "lastmodifiedatby": "Esta página foi modificada pela última vez à(s) $2 de $1 por $3.",
+       "lastmodifiedatby": "Esta página foi editada pela última vez à(s) $2 de $1 por $3.",
        "othercontribs": "Baseado no trabalho de $1.",
        "others": "outros",
        "siteusers": "{{PLURAL:$2|um utilizador|$2 utilizadores}} da wiki {{SITENAME}} ($1)",
        "pageinfo-default-sort": "Chave de classificação padrão",
        "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-language": "Língua do conteúdo da página",
        "pageinfo-language-change": "alterar",
        "pageinfo-content-model": "Modelo de conteúdo de página",
        "pageinfo-content-model-change": "alterar",
        "newimages-legend": "Filtrar",
        "newimages-label": "Nome de ficheiro (ou parte dele):",
        "newimages-user": "Endereço IP ou nome do utilizador",
+       "newimages-newbies": "Mostrar só as contribuições de contas recentes",
        "newimages-showbots": "Mostrar carregamentos feitos por robôs",
        "newimages-hidepatrolled": "Ocultar carregamentos patrulhados",
+       "newimages-mediatype": "Tipo de multimédia:",
        "noimages": "Nada para ver.",
        "gallery-slideshow-toggle": "Alternar miniaturas",
        "ilsubmit": "Pesquisar",
        "weeks": "{{PLURAL:$1|$1 semana|$1 semanas}}",
        "months": "{{PLURAL:$1|1 mês|$1 meses}}",
        "years": "{{PLURAL:$1|1 ano|$1 anos}}",
-       "ago": "$1 atrás",
+       "ago": "há $1",
        "just-now": "agora mesmo",
        "hours-ago": "há $1 {{PLURAL:$1|hora|horas}}",
        "minutes-ago": "há $1 {{PLURAL:$1|minuto|minutos}}",
        "exif-flash-fired-0": "Flash não disparou",
        "exif-flash-fired-1": "Flash disparado",
        "exif-flash-return-0": "nenhuma função de detecção de luz de retorno",
-       "exif-flash-return-2": "luz de retorno não detectada",
-       "exif-flash-return-3": "luz de retorno detectada",
+       "exif-flash-return-2": "luz de retorno não detetada",
+       "exif-flash-return-3": "luz de retorno detetada",
        "exif-flash-mode-1": "disparo de flash forçado",
        "exif-flash-mode-2": "disparo de flash suprimido",
        "exif-flash-mode-3": "modo auto",
        "confirmrecreate": "Depois de ter começado a editar esta página, {{GENDER:$1|o utilizador|a utilizadora|o(a) utilizador(a)}} [[User:$1|$1]] ([[User talk:$1|discussão]]) eliminou-a pelo seguinte motivo:\n: <em>$2</em>\nPor favor, confirme que quer realmente recriar esta página.",
        "confirmrecreate-noreason": "{{GENDER:$1|O utilizador|A utilizadora|O(a) utilizador(a)}} [[User:$1|$1]] ([[User talk:$1|discussão]]) eliminou esta página depois de ter começado a editá-la. Confirme que deseja recriar a página, por favor.",
        "recreate": "Recriar",
+       "confirm-purge-title": "Purgar esta página",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Limpar a memória cache desta página?",
        "confirm-purge-bottom": "Recarregar uma página limpa a cache e força a sua versão mais recente a aparecer.",
        "tags-create-reason": "Motivo:",
        "tags-create-submit": "Criar",
        "tags-create-no-name": "Deve especificar um nome para a etiqueta.",
-       "tags-create-invalid-chars": "Os nomes das etiquetas não devem conter vírgulas (<code>,</code>) ou barras (<code>/</code>).",
+       "tags-create-invalid-chars": "Os nomes das etiquetas não podem conter vírgulas (<code>,</code>), barras verticais (<code>|</code>) ou barras (<code>/</code>).",
        "tags-create-invalid-title-chars": "Os nomes das etiquetas não devem conter caracteres que não podem ser usados em títulos de página.",
        "tags-create-already-exists": "A etiqueta \"$1\" já existe.",
        "tags-create-warnings-above": "{{PLURAL:$2|O seguinte aviso foi encontrado|Os seguintes avisos foram encontrados}} ao tentar criar a etiqueta \"$1\":",
        "revdelete-summary-hid": "resumo da edição oculto",
        "revdelete-uname-hid": "utilizador oculto",
        "revdelete-content-unhid": "conteúdo desocultado",
-       "revdelete-summary-unhid": "sumário de edição desocultado",
+       "revdelete-summary-unhid": "resumo de edição desocultado",
        "revdelete-uname-unhid": "utilizador desocultado",
        "revdelete-restricted": "restrições a administradores aplicadas",
        "revdelete-unrestricted": "restrições a administradores removidas",
        "feedback-bugnew": "Eu verifiquei. Comunicar um novo defeito.",
        "feedback-bugornote": "Se está pronto para descrever um problema técnico em detalhe, por favor, [$1 comunique o defeito].\nCaso contrário, pode facilmente usar o formulário abaixo. O seu comentário será adicionado à página \"[$3 $2]\", junto com o seu nome de utilizador e o navegador que está a usar.",
        "feedback-cancel": "Cancelar",
-       "feedback-close": "Feito",
+       "feedback-close": "Concluído",
        "feedback-external-bug-report-button": "Assinalar erro técnico",
        "feedback-dialog-title": "Enviar opinião",
        "feedback-dialog-intro": "Pode usar o fácil formulário abaixo para enviar os seus comentários. A sua opinião será adicionada à página \"$1\", juntamente com o seu nome de utilizador(a).",
        "expand_templates_preview_fail_html": "<em>Porque a wiki {{SITENAME}} permite código HTML puro e ocorreu uma perda de dados da sessão, a antevisão ficará ocultada como precaução contra ataques por JavaScript.</em>\n\n<strong>Se esta é uma tentativa legítima de visionamento, por favor tente novamente.</strong>\nCaso continue a não funcionar, tente [[Special:UserLogout|sair]] e voltar a entrar na sua conta, e verifique se o seu navegador permite que este site crie ''cookies''.",
        "expand_templates_preview_fail_html_anon": "<em>Porque a wiki {{SITENAME}} permite código HTML puro e não iniciou uma sessão, a antevisão ficará ocultada como precaução contra ataques por JavaScript.</em>\n\n<strong>Se esta é uma tentativa legítima de visionamento, por favor [[Special:UserLogin|inicie uma sessão]] e tente novamente.</strong>",
        "expand_templates_input_missing": "Necessita de fornecer pelo menos algum texto de entrada.",
-       "pagelanguage": "Alterar idioma da página",
+       "pagelanguage": "Alterar a língua da página",
        "pagelang-name": "Página",
        "pagelang-language": "Língua",
-       "pagelang-use-default": "Usar idioma pré-definido",
-       "pagelang-select-lang": "Escolher o idioma",
+       "pagelang-use-default": "Usar a língua predefinida",
+       "pagelang-select-lang": "Escolher a língua",
        "pagelang-reason": "Motivo",
-       "pagelang-submit": "Submeter",
+       "pagelang-submit": "Enviar",
        "pagelang-nonexistent-page": "A página $1 não existe.",
        "pagelang-unchanged-language": "A pagina $1 já está na língua $2.",
        "pagelang-unchanged-language-default": "A pagina $1 já está na língua de conteúdo padrão da wiki.",
        "pagelang-db-failed": "A base de dados não conseguiu alterar a língua da página.",
-       "right-pagelang": "Alterar o idioma da página",
-       "action-pagelang": "alterar o idioma da página",
-       "log-name-pagelang": "Registo de alteração de idioma",
+       "right-pagelang": "Alterar a língua da página",
+       "action-pagelang": "alterar a língua da página",
+       "log-name-pagelang": "Registo de alteração de língua",
        "log-description-pagelang": "Este é um registo de alterações aos idiomas das páginas.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|alterou}} o idioma da página $3 de $4 para $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|alterou}} a língua da página $3 de $4 para $5.",
        "default-skin-not-found": "O tema padrão da sua wiki definido em <code dir=\"ltr\">$wgDefaultSkin</code>, <code>$1</code>, não está disponível.\n\nA instalação parece incluir {{PLURAL:$4|o seguinte tema|os seguintes temas}}. Consulte [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Configuração de Temas] para saber como {{PLURAL:$4|ativá-lo|ativá-los e escolher o tema padrão}}.\n\n$2\n\n; Se acabou de instalar o MediaWiki:\n: Provavelmente instalou-o a partir do git, ou diretamente do código fonte usando outro método. O comportamento é o esperado. Tente instalar temas a partir do [https://www.mediawiki.org/wiki/Category:All_skins diretório de temas da mediawiki.org], assim:\n:* Descarregue o  [https://www.mediawiki.org/wiki/Download tarball de instalação], que contém vários temas e extensões. Pode copiar o diretório <code>skins/</code> nele incluído.\n:* Descarregue tarballs de temas individuais, da [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Use o Git para descarregar temas].\n: Se é programador(a) do MediaWiki, isto não deverá interferir com o seu repositório git.\n\n; Se fez uma atualização do MediaWiki:\n: O MediaWiki 1.24 e versões mais recentes não ativam automaticamente os temas instalados (consulte [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Autodescoberta do Tema]). Pode copiar {{PLURAL:$5|a linha seguinte|as linhas seguintes}} para o ficheiro <code>LocalSettings.php</code> para ativar {{PLURAL:$5|o tema instalado|os temas instalados}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Se acabou de modificar o <code>LocalSettings.php</code>:\n: Verifique cuidadosamente se o nome de cada tema está bem soletrado.",
        "default-skin-not-found-no-skins": "O tema padrão da sua wiki definido em <code dir=\"ltr\">$wgDefaultSkin</code>, <code>$1</code>, não está disponível.\n\nNão tem nenhum tema instalado.\n\n; Se acabou de instalar ou atualizar o MediaWiki:\n: Provavelmente instalou-o a partir do git, ou diretamente do código fonte usando outro método. O comportamento é o esperado. O MediaWiki 1.24 e versões mais recentes não incluem qualquer tema no repositório principal. Tente instalar temas a partir do [https://www.mediawiki.org/wiki/Category:All_skins diretório de temas da mediawiki.org], assim:\n:* Descarregue o  [https://www.mediawiki.org/wiki/Download tarball de instalação], que contém vários temas e extensões. Pode copiar o diretório <code>skins/</code> nele incluído.\n:* Descarregue tarballs de temas individuais, da [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Use o Git para descarregar temas].\n: Se é programador(a) do MediaWiki, isto não deverá interferir com o seu repositório git. Consulte [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Configuração de Temas] para saber como ativar temas e escolher o tema padrão.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (ativado)",
        "mw-widgets-titleinput-description-redirect": "redirecionar para $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Adicionar uma categoria...",
        "mw-widgets-usersmultiselect-placeholder": "Adicionar mais...",
+       "date-range-from": "Da data:",
+       "date-range-to": "Até à data:",
        "sessionmanager-tie": "Não se pode combinar múltiplas solicitações de tipos de autenticação: $1.",
        "sessionprovider-generic": "Sessões $1",
-       "sessionprovider-mediawiki-session-cookiesessionprovider": "sessões baseadas em cookie",
+       "sessionprovider-mediawiki-session-cookiesessionprovider": "sessões baseadas em cookies",
        "sessionprovider-nocookies": "Os cookies podem estar desativados. Certifique-se de que os cookies estão ativados e inicie novamente.",
        "randomrootpage": "Página aleatória de raiz",
        "log-action-filter-block": "Tipo de bloqueio:",
        "rawhtml-notallowed": "As etiquetas &lt;html&gt; não podem ser utilizadas fora de páginas normais.",
        "gotointerwiki": "A sair de {{SITENAME}}",
        "gotointerwiki-invalid": "O título especificado é inválido.",
-       "gotointerwiki-external": "Está prestes a sair de {{SITENAME}} para visitar [[$2]], que é um sítio web externo.\n\n[$1 Clique aqui para continuar para $1]"
+       "gotointerwiki-external": "Está prestes a sair da wiki {{SITENAME}} para visitar [[$2]], que é um site externo.\n\n'''[$1 Continuar para $1]'''",
+       "undelete-cantedit": "Não pode restaurar esta página, porque não tem privilégios para editar esta página.",
+       "undelete-cantcreate": "Não pode restaurar esta página, porque não existe nenhuma página com este nome e não tem privilégios para criar esta página.",
+       "pagedata-title": "Dados de página",
+       "pagedata-text": "Esta página fornece uma interface de dados para páginas. Forneça o título da página no URL, usando a sintaxe de subpáginas, por favor.\n* Aplica-se a negociação de conteúdo com base no cabeçalho Accept do seu cliente. Isto significa que os dados da página serão fornecidos no formato preferido do seu cliente.",
+       "pagedata-not-acceptable": "Não foi encontrado nenhum formato correspondente. Tipos MIME suportados: $1",
+       "pagedata-bad-title": "Título inválido: $1."
 }
index b0e1d74..ed99c41 100644 (file)
                        "MarcoAurelio",
                        "Joao Xavier",
                        "Winstonyin",
-                       "Jhertel"
+                       "Jhertel",
+                       "Stryn",
+                       "Mazab IZW",
+                       "Mainframe98"
                ]
        },
        "sidebar": "{{notranslate}}",
        "anontalk": "Same as {{msg-mw|mytalk}} but used for non-logged-in users.\n{{Identical|Talk}}\n\nSee also:\n* {{msg-mw|Accesskey-pt-anontalk}}\n* {{msg-mw|Tooltip-pt-anontalk}}",
        "navigation": "This is shown as a section header in the sidebar of most skins.\n\n{{Identical|Navigation}}",
        "and": "The translation for \"and\" appears in the [[Special:Version]] page, between the last two items of a list. If a comma is needed, add it at the beginning without a gap between it and the \"&\". &amp;#32; is a blank space, one character long. Please leave it as it is.\n\nThis can also appear in the credits page if the credits feature is enabled,for example [{{canonicalurl:Support|action=credits}} the credits of the support page]. (To view any credits page type <nowiki>&action=credits</nowiki> at the end of any URL in the address bar.)\n{{Identical|And}}",
-       "qbfind": "Alternative for \"search\" as used in Cologne Blue skin.\n{{Identical|Find}}",
-       "qbbrowse": "Heading in sidebar menu in CologneBlue skin as seen in [[File:CologneBlue sidebar qqx.png]]\n{{Identical|Browse}}",
-       "qbedit": "Heading in sidebar menu in CologneBlue skin as seen in http://i.imgur.com/I08Y3jW.png\n{{Identical|Edit}}",
-       "qbpageoptions": "Heading in sidebar menu in CologneBlue skin as seen in http://i.imgur.com/I08Y3jW.png\n{{Identical|This page}}",
-       "qbmyoptions": "Heading in the Cologne Blue skin user menu containing links to user (talk) page, preferences, watchlist, etc.\n{{Identical|My pages}}",
        "faq": "FAQ is short for ''frequently asked questions''.\n{{Identical|FAQ}}",
-       "faqpage": "{{doc-important|Do not translate <code>Project:</code> part.}}\n\"FAQ\" is short for \"frequently asked questions\".\n\nThis page is only linked in CologneBlue (an old skin), not in Monobook or Vector.",
        "sitetitle": "{{Ignore}}",
        "sitesubtitle": "{{Ignore}}",
        "actions": "{{Identical|Action}}",
        "edit-local": "The text on the tab going to the edit form for the local description page of a file from a foreign file repository (e.g. Wikimedia Commons). Should be in the infinitive mood.\n\nSee also:\n* {{msg-mw|Edit}}\n* {{msg-mw|Create-local}}",
        "create": "The text on the tab of the edit form on unexisting pages starts editing them. Should be in the infinitive mood.\n\n{{Identical|Create}}",
        "create-local": "The text on the tab going to the creation form for the (not yet existing) local description page of a file from a foreign file repository (e.g. Wikimedia Commons). Should be in the infinitive mood.\n\nSee also:\n* {{msg-mw|Create}}\n* {{msg-mw|Edit-local}}",
-       "editthispage": "This is the \"edit\" link as used in the Cologne Blue skin, at the bottom of the page.\n\nSee {{msg-mw|Create-this-page}} for when the page does not exist.\n{{Identical|Edit this page}}",
-       "create-this-page": "In the Cologne Blue skin this is the text for the link leading to the edit form on pages that have not yet been created, at the bottom of the page. See {{msg-mw|editthispage}} for when the page already exists.\n{{Identical|Createpage}}",
        "delete": "Name of the Delete tab shown for admins. Should be in the infinitive mood.\n\nSee also:\n* {{msg-mw|Delete}}\n* {{msg-mw|Accesskey-ca-delete}}\n* {{msg-mw|Tooltip-ca-delete}}\n{{Identical|Delete}}",
-       "deletethispage": "In the Cologne Blue skin this is the text for link to delete the page in admin view, at the bottom of the page.\n{{Identical|Delete this page}}",
-       "undeletethispage": "In the Cologne Blue skin this is the text for link to undelete the page in admin view, at the bottom of the page.",
        "undelete_short": "It is tab label. It's really can be named ''nstab-undelete''. Parameters:\n* $1 - number of edits",
        "viewdeleted_short": "Tab label for the undelete button when the user has permission to view the deleted history but not undelete.\n\nParameters:\n* $1 - number of edits",
        "protect": "Name of protect tab displayed for admins. Should be in the infinitive mood.\n\nSee also:\n* {{msg-mw|Protect}}\n* {{msg-mw|Accesskey-ca-protect}}\n* {{msg-mw|Tooltip-ca-protect}}\n{{Identical|Protect}}",
        "protect_change": "Text on links for each entry in [[Special:ProtectedPages]] to change the protection of pages (only displayed to admins).\n{{Identical|Change}}",
-       "protectthispage": "In this Cologne Blue skin this is the text for link to protect the page in admin view, at the bottom of the page.\n{{Identical|Protect this page}}",
        "unprotect": "Name of unprotect tab displayed for admins\n\nSee also:\n* {{msg-mw|Unprotect}}\n* {{msg-mw|Accesskey-ca-unprotect}}\n* {{msg-mw|Tooltip-ca-unprotect}}\n{{Identical|Change protection}}",
-       "unprotectthispage": "In this Cologne Blue skin this is the anchor text for the link to unprotect the page in admin view, at the bottom of the page.\n{{Identical|Unprotect this page}}",
        "newpage": "{{Identical|New page}}",
-       "talkpage": "In the Cologne Blue skin this is the text for link to discuss the page, at the bottom of the page.",
        "talkpagelinktext": "Used as name of links going to talk page in some places, like in [[Special:RecentChanges]], [[Special:Allmessages]], [[Special:Logs]], and [[Special:Watchlist/edit]].\n\n{{Identical|Talk}}",
        "specialpage": "{{Identical|Special page}}",
        "personaltools": "Heading for a group of links to your user page, talk page, preferences, watchlist, and contributions. This heading is visible in the sidebar in some skins. For an example, see [{{canonicalurl:Main_Page|useskin=simple}} Main Page using simple skin].",
        "addsection": "{{notranslate}}\nText of the new section tab (the one next to the \"edit\" tab on non-Vector skins).\n\nSee also:\n* {{msg-mw|Addsection}}\n* {{msg-mw|Accesskey-ca-addsection}}\n* {{msg-mw|Tooltip-ca-addsection}}",
-       "articlepage": "'Content page' is used for NS_MAIN and any other non-standard namespaces. Only used in the Cologne Blue skin in the bottomLinks part.\n\n{{Identical|Content page}}",
        "talk": "Used as display name for the tab to all {{msg-mw|Talk}} pages. These pages accompany all content pages and can be used for discussing the content page. Example: [[Talk:Example]].\n\nSee also:\n* {{msg-mw|Talk}}\n* {{msg-mw|Accesskey-ca-talk}}\n* {{msg-mw|Tooltip-ca-talk}}\n{{Identical|Discussion}}",
        "views": "Subtitle for the list of available views, for the current page. In \"monobook\" skin the list of views are shown as tabs, so this sub-title is not shown. For an example, see [{{canonicalurl:Main_Page|useskin=simple}} Main Page using simple skin].\n\n'''Note:''' This is \"views\" as in \"appearances\"/\"representations\", '''not''' as in \"visits\"/\"accesses\".\n{{Identical|View}}",
        "toolbox": "The title of the toolbox below the search menu.\n{{Identical|Tool}}",
        "tool-link-userrights": "Link to [[Special:UserRights]] (user rights management) in the sidebar toolbox, shown if the current user is allowed to change given user's groups.\n\nParameters:\n* $1 - Name of user for the user group management (usable for GENDER)",
        "tool-link-userrights-readonly": "Link to [[Special:UserRights]] (user rights management) in the sidebar toolbox, shown if the current user is '''not''' allowed to change given user's groups.\n\nParameters:\n* $1 - Name of user for the user group management (usable for GENDER)",
        "tool-link-emailuser": "Link to [[Special:EmailUser]] (email user tool) in the sidebar toolbox.\n\nParameters:\n* $1 - Name of user who would receive the email\n\nSee also:\n* {{msg-mw|Emailuser-title-target}}",
-       "userpage": "Used in user talk pages as the text of the link to the user page, with the Cologne Blue skin.",
-       "projectpage": "Used as link text in Talk page of project page with the Cologne Blue skin.",
        "imagepage": "Used as link text in Talk page of file page.",
        "mediawikipage": "Used as link text in Talk page of MediaWiki message page.",
        "templatepage": "Used as link text in Talk page of template page.",
        "otherlanguages": "This message is shown under the toolbox. It is used if there are interwiki links added to the page, like <code><nowiki>[[</nowiki>en:Interwiki article]]</code>.\n{{Identical|Otherlanguages}}",
        "redirectedfrom": "The text displayed when a certain page is redirected to another page. Parameters:\n* $1 - the name of the page user came from",
        "redirectpagesub": "Displayed under the page title of a page which is a redirect to another page, see [{{fullurl:Project:Translators|redirect=no}} Project:Translators] for example.\n\n{{Identical|Redirect page}}",
-       "redirectto": "Alt text of the arrow icon shown on redirect pages ([[commons:File:Sample redirect page.jpg]]).\n\n{{Identical|Redirect to}}",
+       "redirectto": "Alt text of the arrow icon shown on redirect pages ([[commons:File:Sample redirect page.jpg]]).\n\n{{Identical|Redirect to}}\n\nOn Wikidata, this message is shown directly on redirect pages.\n\n\"Redirect\" is a noun, not a verb. That is, translate \"redirect\" as in \"This is a redirect to:\"",
        "talkpageheader": "{{notranslate}}",
        "lastmodifiedat": "This message is shown below each page, in the footer with the logos and links.\n\nParameters:\n* $1 - date\n* $2 - time\nSee also:\n* {{msg-mw|Lastmodifiedatby}}",
        "viewcount": "Used as page-view counter. Parameters:\n* $1 - number of pageviews",
        "preview": "The title of the Preview page shown after clicking the \"Show preview\" button in the edit page. Since this is a heading, it should probably be translated as a noun and not as a verb.\n\n{{Identical|Preview}}",
        "showpreview": "The text of the button to preview the page you are editing. See also {{msg-mw|showdiff}} and {{msg-mw|savearticle}} for the other buttons.\n\nSee also:\n* {{msg-mw|Showpreview}}\n* {{msg-mw|Accesskey-preview}}\n* {{msg-mw|Tooltip-preview}}\n{{Identical|Show preview}}",
        "showdiff": "Button below the edit page. See also {{msg-mw|Showpreview}} and {{msg-mw|Savearticle}} for the other buttons.\n\nSee also:\n* {{msg-mw|Showdiff}}\n* {{msg-mw|Accesskey-diff}}\n* {{msg-mw|Tooltip-diff}}\n{{Identical|Show change}}",
-       "blankarticle": "Notice displayed once after the user tries to save an empty page.",
+       "blankarticle": "Notice displayed once after the user tries to save an empty page.\n\nParameters:\n* $1 – The label of the save button – one of {{msg-mw|savearticle}} or {{msg-mw|savechanges}} on save-labelled wiki, or {{msg-mw|publishpage}} or {{msg-mw|publishchanges}} on publish-labelled wikis.",
        "anoneditwarning": "Shown when editing a page anonymously.\n\nParameters:\n* $1 – A link to log in, <nowiki>{{fullurl:Special:UserLogin|returnto={{FULLPAGENAMEE}}}}</nowiki>\n* $2 – A link to sign up, <nowiki>{{fullurl:Special:CreateAccount|returnto={{FULLPAGENAMEE}}}}</nowiki>\n\nSee also:\n* {{msg-mw|Mobile-frontend-editor-anonwarning}}",
        "anonpreviewwarning": "See also:\n* {{msg-mw|Anoneditwarning}}",
-       "missingsummary": "The text \"edit summary\" is in {{msg-mw|Summary}}.\n\nSee also:\n* {{msg-mw|Missingcommentheader}}\n* {{msg-mw|Savearticle}}",
-       "selfredirect": "Notice displayed once after the user tries to create a redirect to the same article.",
+       "missingsummary": "The text \"edit summary\" is in {{msg-mw|Summary}}.\n\nSee also:\n* {{msg-mw|Missingcommentheader}}\n* {{msg-mw|Savearticle}}\n\nParameters:\n* $1 – The label of the save button – one of {{msg-mw|savearticle}} or {{msg-mw|savechanges}} on save-labelled wiki, or {{msg-mw|publishpage}} or {{msg-mw|publishchanges}} on publish-labelled wikis.",
+       "selfredirect": "Notice displayed once after the user tries to create a redirect to the same article.\n\nParameters:\n* $1 – The label of the save button – one of {{msg-mw|savearticle}} or {{msg-mw|savechanges}} on save-labelled wiki, or {{msg-mw|publishpage}} or {{msg-mw|publishchanges}} on publish-labelled wikis.",
        "missingcommenttext": "This message is shown, when the textbox by a new-section is empty.",
-       "missingcommentheader": "Edit summary that is shown if you enable \"Prompt me when entering a blank summary\" and add a new section without headline to a talk page.\n\n\"Subject\" is {{msg-mw|subject}}.\n\nSee also:\n* {{msg-mw|Missingsummary}}\n* {{msg-mw|Savearticle}}",
+       "missingcommentheader": "Edit summary that is shown if you enable \"Prompt me when entering a blank summary\" and add a new section without headline to a talk page.\n\nParameters:\n* $1 – The label of the save button – one of {{msg-mw|savearticle}} or {{msg-mw|savechanges}} on save-labelled wiki, or {{msg-mw|publishpage}} or {{msg-mw|publishchanges}} on publish-labelled wikis.\n\n\"Subject\" is {{msg-mw|subject}}.\n\nSee also:\n* {{msg-mw|Missingsummary}}\n* {{msg-mw|Savearticle}}",
        "summary-preview": "Preview of the edit summary, shown under the edit summary itself.\nShould match: {{msg-mw|summary}}.",
        "subject-preview": "Used as label for preview of the section title when adding a new section on a talk page.\n\nShould match {{msg-mw|subject}}.\n\nSee also:\n* {{msg-mw|Summary-preview}}\n\n{{Identical|Subject}}",
        "previewerrortext": "When a user has the editing preference LivePreview enabled, clicked the Preview or Show Changes button in the edit page and the action did not succeed.",
        "editingcomment": "This message displays at the top of the page when a user is creating a new section. Parameters:\n* $1 - page name\n{{Related|Editing}}",
        "editconflict": "Alert message when saving a page causes an edit conflict",
        "editnotice-notext": "{{ignored}}\nCustom message on top of the edit page if no edit notices apply to this page.",
-       "explainconflict": "Appears at the top of a page when there is an edit conflict.\n\nSee also:\n* {{msg-mw|Savearticle}}",
+       "explainconflict": "Appears at the top of a page when there is an edit conflict.\n\nParameters:\n* $1 – The label of the save button – one of {{msg-mw|savearticle}} or {{msg-mw|savechanges}} on save-labelled wiki, or {{msg-mw|publishpage}} or {{msg-mw|publishchanges}} on publish-labelled wikis.\n\nSee also:\n* {{msg-mw|Savearticle}}",
        "yourtext": "Used in Diff Preview page. The diff is between {{msg-mw|currentrev}} and {{msg-mw|yourtext}}.\n\nAlso used in Edit Conflict page; the diff between {{msg-mw|yourtext}} and {{msg-mw|storedversion}}.",
        "storedversion": "This is used in an edit conflict as the label for the top revision that has been stored, as opposed to your version {{msg-mw|yourtext}} that has not been stored which is shown at the bottom of the page.",
        "nonunicodebrowser": "Used as warning when editing page.",
        "previousrevision": "See also:\n* {{msg-mw|Nextrevision}}",
        "nextrevision": "See also:\n* {{msg-mw|Previousrevision}}",
        "currentrevisionlink": "{{Identical|Current revision}}",
-       "cur": "Link in page history ([https://translatewiki.net/w/i.php?title=MediaWiki:Cur/qqq&action=history example])",
+       "cur": "Link in page history ([https://translatewiki.net/w/i.php?title=MediaWiki:Cur/qqq&action=history example]).\n\nThis is short for \"current\".",
        "next": "Link in page history\n\n{{Identical|Next}}",
        "last": "Link in page history",
        "page_first": "This is part of the navigation message on the top and bottom of Special pages which are lists of things in alphabetical order, e.g. the '[[Special:Categories|Categories]]' special page. It is followed by the message {{msg-mw|Viewprevnext}}.\n{{Identical|First}}",
        "shown-title": "Parameters:\n* $1 - number of search results",
        "viewprevnext": "This is part of the navigation message on the top and bottom of Special pages which are lists of things, e.g. the User's contributions page (in date order) or the list of all categories (in alphabetical order). ($1) and ($2) are either {{msg-mw|Pager-older-n}} and {{msg-mw|Pager-newer-n}} (for date order) or {{msg-mw|Prevn}} and {{msg-mw|Nextn}} (for alphabetical order).\n\nIt is also used by [[Special:WhatLinksHere|Whatlinkshere]] pages, where ($1) and ($2) are {{msg-mw|Whatlinkshere-prev}} and {{msg-mw|Whatlinkshere-next}}.\n($3) is made up in all cases of the various proposed numbers of results per page, e.g. \"(20 | 50 | 100 | 250 | 500)\".\nFor Special pages, the navigation bar is prefixed by \"({{msg-mw|Page first}} | {{msg-mw|Page last}})\" (alphabetical order) or \"({{msg-mw|Histfirst}} | {{msg-mw|Histlast}})\" (date order).\n\nViewprevnext 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).\n\nRefers to {{msg-mw|Pipe-separator}}.",
        "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).\n\nParameters:\n* $1 - page title\n* $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).\nParameters:\n* $1 - page title\n* $2 - the number of search results found\nParameterless gender ({{GENDER:|male|female|unspecified}}) can be used in translations.",
+       "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).\nParameters:\n* $1 - page title\n* $2 - the number of search results found\nParameterless gender (<code><nowiki>{{GENDER:|male|female|unspecified}}</nowiki></code>) can be used in translations.",
        "searchmenu-new-nocreate": "{{notranslate}}",
        "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.\n\nA '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]].\n\nPossible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.\n\n{{Identical|Content page}}",
        "searchprofile-images": "An option in the [[Special:Search]].\n\nSee also:\n* {{msg-mw|Searchprofile-images|message}}\n* {{msg-mw|Searchprofile-images-tooltip|tooltip}}\n{{Identical|Muitimedia}}",
        "prefsnologintext2": "Showed on Special:Userlogin when user tries to access their preferences before logging in",
        "prefs-skin": "Used in user preferences.\n{{Identical|Skin}}",
        "skin-preview": "{{doc-actionlink}}\nThe link beside each skin name in [[Special:Preferences|your user preferences]], tab \"skin\".\n{{Identical|Preview}}",
-       "datedefault": "Used as checkbox label in [[Special:Preferences#mw-prefsection-datetime|user preferences]], {{msg-mw|prefs-datetime}} tab.\n\nThis message indicates {{msg-mw|prefs-dateformat}} is default (= not specified).",
+       "datedefault": "Used as checkbox label in [[Special:Preferences#mw-prefsection-rendering|user preferences]], {{msg-mw|prefs-rendering}} tab.\n\nThis message indicates {{msg-mw|prefs-dateformat}} is default (= not specified).",
        "prefs-labs": "Header of a subsection at [[Special:Preferences]], tab ''{{int:prefs-editing}}'', listing features that are experimental",
        "prefs-user-pages": "Header of a subsection at [[Special:Preferences]], tab ''{{int:prefs-misc}}'', listing features that are related to user pages\n{{Identical|User page}}",
        "prefs-personal": "Title of a tab in [[Special:Preferences]].\n{{Identical|User profile}}",
        "prefs-info": "Header for the box giving basic information on the user account, displayed on the 'user profile' tab of the [[Special:Preferences|user preferences]] special page.\n{{Identical|Basic information}}",
        "prefs-i18n": "Field set legend for user preferences regarding the interface language",
        "prefs-signature": "{{Identical|Signature}}",
-       "prefs-dateformat": "Used in [[Special:Preferences#mw-prefsection-datetime|Special:Preferences]], tab \"Date and time\".\n{{Identical|Date format}}",
+       "prefs-dateformat": "Used in [[Special:Preferences#mw-prefsection-datetime|Special:Preferences]], tab \"Appearance\".\n{{Identical|Date format}}",
        "prefs-timeoffset": "Used in [[Special:Preferences]], tab \"Date and time\".",
        "prefs-advancedediting": "Used in [[Special:Preferences]], tab \"Editing\".\nThis used to say \"Advanced options\", the key name is a left over from that.",
        "prefs-editor": "Used in [[Special:Preferences]], tab \"Editing\" ({{int:prefs-editing}}).\n\n{{Identical|Editor}}",
        "action-deletechangetags": "{{doc-action|deletechangetags}}",
        "action-purge": "{{doc-action|purge}}",
        "nchanges": "Appears on enhanced watchlist and recent changes when page has more than one change on given date, linking to a diff of the changes.\n\nParameters:\n* $1 - the number of changes on that day (2 or more)\nThree messages are shown side-by-side: ({{msg-mw|Nchanges}} | {{msg-mw|Enhancedrc-since-last-visit}} | {{msg-mw|Enhancedrc-history}}).",
+       "ntimes": "Used to indicate how many times an event occurred (eg. on enhanced recent change when a user did more than one change to the page). Parameters:\n* $1 - number (integer)",
        "enhancedrc-since-last-visit": "Appears on enhanced watchlist and recent changes when page has more than one change on given date and at least one that the user hasn't seen yet, linking to a diff of the unviewed changes.\n\nParameters:\n* $1 - the number of unviewed changes (1 or more)\nThree messages are shown side-by-side: ({{msg-mw|nchanges}} | {{msg-mw|enhancedrc-since-last-visit}} | {{msg-mw|enhancedrc-history}}).",
        "enhancedrc-history": "Appears on enhanced watchlist and recent changes when page has more than one change on given date, linking to its history.\n\nThis is the same as {{msg-mw|hist}}, but not abbreviated.\n\nThree messages are shown side-by-side: ({{msg-mw|nchanges}} | {{msg-mw|enhancedrc-since-last-visit}} | {{msg-mw|enhancedrc-history}}).\n{{Identical|History}}",
        "recentchanges": "The text of the link in sidebar going to the special page [[Special:RecentChanges]]. Also the page title of that special page.\n\nSee also:\n* {{msg-mw|Recentchanges}}\n* {{msg-mw|Accesskey-n-recentchanges}}\n* {{msg-mw|Tooltip-n-recentchanges}}\n{{Identical|Recent changes}}",
        "recentchanges-legend-plusminus": "{{optional}}\nA plus/minus sign with a number for the legend.",
        "recentchanges-submit": "Label for submit button in [[Special:RecentChanges]]\n{{Identical|Show}}",
        "rcfilters-activefilters": "Title for the filters selection showing the active filters.",
+       "rcfilters-quickfilters": "Label for the button that opens the saved filter settings menu in [[Special:RecentChanges]]",
+       "rcfilters-quickfilters-placeholder-title": "Title for the text shown in the quick filters menu on [[Special:RecentChanges]] if the user has not saved any quick filters.",
+       "rcfilters-quickfilters-placeholder-description": "Description for the text shown in the quick filters menu on [[Special:RecentChanges]] if the user has not saved any quick filters.",
+       "rcfilters-savedqueries-defaultlabel": "Default name for saving a new set of quick filters [[Special:RecentChanges]]",
+       "rcfilters-savedqueries-rename": "Label for the menu option that edits a quick filter in [[Special:RecentChanges]]\n{{Identical|Rename}}",
+       "rcfilters-savedqueries-setdefault": "Label for the menu option that sets a quick filter as default in [[Special:RecentChanges]]",
+       "rcfilters-savedqueries-unsetdefault": "Label for the menu option that unsets a quick filter as default in [[Special:RecentChanges]]",
+       "rcfilters-savedqueries-remove": "Label for the menu option that removes a quick filter as default in [[Special:RecentChanges]]\n{{Identical|Remove}}",
+       "rcfilters-savedqueries-new-name-label": "Label for the input that holds the name of the new saved filters in [[Special:RecentChanges]]\n{{Identical|Name}}",
+       "rcfilters-savedqueries-apply-label": "Label for the button to apply saving a new filter setting in [[Special:RecentChanges]]",
+       "rcfilters-savedqueries-cancel-label": "Label for the button to cancel the saving of a new quick link in [[Special:RecentChanges]]\n{{Identical|Cancel}}",
+       "rcfilters-savedqueries-add-new-title": "Title for the popup to add new quick link in [[Special:RecentChanges]]",
        "rcfilters-restore-default-filters": "Label for the button that resets filters to defaults",
        "rcfilters-clear-all-filters": "Title for the button that clears all filters",
        "rcfilters-search-placeholder": "Placeholder for the filter search input.",
        "rcfilters-filter-registered-label": "Label for the filter for showing edits made by logged-in users.\n{{Identical|Registered}}",
        "rcfilters-filter-registered-description": "Description for the filter for showing edits made by logged-in users.",
        "rcfilters-filter-unregistered-label": "Label for the filter for showing edits made by logged-out users.",
-       "rcfilters-filter-unregistered-description": " Description for the filter for showing edits made by logged-out users.",
+       "rcfilters-filter-unregistered-description": "Description for the filter for showing edits made by logged-out users.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Tooltip shown when hovering over a Unregistered filter tag, when a User Experience Level filter is also selected.\n\n\"Unregistered\" is {{msg-mw|Rcfilters-filter-unregistered-label}}.\n\n\"Experience\" is based on {{msg-mw|Rcfilters-filtergroup-userExpLevel}}.\n\nThis indicates that no results will be shown, because users matched by the User Experience Level groups are never unregistered.  Parameters:\n* $1 - Comma-separated string of selected User Experience Level filters, e.g. \"Newcomer, Experienced\"\n* $2 - Count of selected User Experience Level filters, for PLURAL",
-       "rcfilters-filtergroup-authorship": "Title for the filter group for edit authorship. This filter group allows the user to choose between \"Your own edits\" and \"Edits by others\". More info: https://phabricator.wikimedia.org/T149859\n\n{{doc-important|This is another typical example of ambiguity in the English language. Only the documentation will reveal that this message means \"(filter by) authorship of these edits\", not \"edit the authorship\". That is, \"edit\" is a modifying noun, not a verb.}}",
+       "rcfilters-filtergroup-authorship": "Title for the filter group for edit authorship. This filter group allows the user to choose between \"Your own edits\" and \"Edits by others\". More info: https://phabricator.wikimedia.org/T149859",
        "rcfilters-filter-editsbyself-label": "Label for the filter for showing edits made by the current user.",
        "rcfilters-filter-editsbyself-description": "Description for the filter for showing edits made by the current user.",
        "rcfilters-filter-editsbyother-label": "Label for the filter for showing edits made by anyone other than the current user.",
        "rcfilters-filter-minor-description": "Description for the filter for showing edits marked as minor.",
        "rcfilters-filter-major-label": "Label for the filter for showing edits not marked as minor.",
        "rcfilters-filter-major-description": " Description for the filter for showing edits not marked as minor.",
+       "rcfilters-filtergroup-watchlist": "Title for the watchlist filter group",
+       "rcfilters-filter-watchlist-watched-label": "Label for the filter for showing changes to pages on your watchlist.",
+       "rcfilters-filter-watchlist-watched-description": "Description for the filter for showing changes to pages on your watchlist.",
+       "rcfilters-filter-watchlist-watchednew-label": "Label for the filter for showing new changes to pages on your watchlist.",
+       "rcfilters-filter-watchlist-watchednew-description": "Description for the filter for showing new changes to pages on your watchlist.",
+       "rcfilters-filter-watchlist-notwatched-label": "Label for the filter for showing changes to pages not on your watchlist.",
+       "rcfilters-filter-watchlist-notwatched-description": "Description for the filter for showing changes to pages not on your watchlist.",
        "rcfilters-filtergroup-changetype": "Title for the filter group for edit type.",
        "rcfilters-filter-pageedits-label": "Label for the filter for showing edits to existing pages.",
        "rcfilters-filter-pageedits-description": "Description for the filter for showing edits to existing pages.",
        "rcfilters-hideminor-conflicts-typeofchange-global": "The \"Minor edits\" filter is conflicting with one or more Type of Change filters, because certain types of change cannot be designated as \"minor.\" The conflicting filters are marked in the Active Filters area, above.\n\n\"Type of Change\" is {{msg-mw|Rcfilters-filtergroup-changetype}}.",
        "rcfilters-hideminor-conflicts-typeofchange": "Tooltip shown when hovering over the Minor edits tag, when a Type of Change filter is also selected.\n\n\"Minor edits\" is {{msg-mw|rcfilters-filter-minor-label}}.\n\n\"Type of change\" is {{msg-mw|rcfilters-filtergroup-changetype}}.\n\nThis indicates that no results will be shown.  Parameters:\n* $1 - Comma-separated string of selected Type of Change filters, e.g. \"Category, Logged Actions\"\n* $2 - Count of selected User Experience Level filters, for PLURAL",
        "rcfilters-typeofchange-conflicts-hideminor": "Tooltip shown when hovering over a Type of change filter tag, when the Minor edits filter is also selected.\n\n\"Minor edits\" is {{msg-mw|rcfilters-filter-minor-label}}.\n\n\"Type of change\" is {{msg-mw|rcfilters-filtergroup-changetype}}.\n\nThis indicates that no results will be shown.",
+       "rcfilters-filtergroup-lastRevision": "Title for the filter group for last revision",
+       "rcfilters-filter-lastrevision-label": "Title for the filter for showing changes on last revision of a page.",
+       "rcfilters-filter-lastrevision-description": "Description for the filter for showing changes on last revision of a page.",
+       "rcfilters-filter-previousrevision-label": "Title for the filter for showing changes on previous revisions of a page.",
+       "rcfilters-filter-previousrevision-description": "Description for the filter for showing changes on previous revisions of a page.",
+       "rcfilters-filter-excluded": "Label for a menu item in [[Special:RecentChanges]] noting that the item is being excluded from the results.",
+       "rcfilters-tag-prefix-namespace": "Prefix for the namespace tags in [[Special:RecentChanges]]. Namespace tags use a colon (:) as prefix. Please keep this format.\n\nParameters:\n* $1 - Filter name.",
+       "rcfilters-tag-prefix-namespace-inverted": "Prefix for the namespace inverted tags in [[Special:RecentChanges]]. Namespace tags use a colon (:) as prefix. Please keep this format.\n\nParameters:\n* $1 - Filter name.",
+       "rcfilters-tag-prefix-tags": "Prefix for the edit tags in [[Special:RecentChanges]]. Edit tags use a hash (#) as prefix. Please keep this format.\n\nParameters:\n* $1 - Tag display name.",
+       "rcfilters-view-tags": "Title for the tags view in [[Special:RecentChanges]]",
        "rcnotefrom": "This message is displayed at [[Special:RecentChanges]] when viewing recentchanges from some specific time.\n\nThe corresponding message is {{msg-mw|Rclistfrom}}.\n\nParameters:\n* $1 - the maximum number of changes that are displayed\n* $2 - (Optional) a date and time\n* $3 - a date\n* $4 - a time\n* $5 - Number of changes are displayed, for use with PLURAL",
        "rclistfromreset": "Used on [[Special:RecentChanges]] to reset a selection of a certain date range.",
        "rclistfrom": "Used on [[Special:RecentChanges]]. Parameters:\n* $1 - (Currently not use) date and time. The date and the time adds to the rclistfrom description.\n* $2 - time. The time adds to the rclistfrom link description (with split of date and time).\n* $3 - date. The date adds to the rclistfrom link description (with split of date and time).\n\nThe corresponding message is {{msg-mw|Rcnotefrom}}.",
        "rcshowhidecategorization": "Option text in [[Special:RecentChanges]]. Parameters:\n* $1 - the \"show/hide\" command, with the text taken from either {{msg-mw|rcshowhidecategorization-show}} or {{msg-mw|rcshowhidecategorization-hide}}",
        "rcshowhidecategorization-show": "{{doc-actionlink}}\nOption text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhidecategorization}}.\n\nSee also:\n* {{msg-mw|rcshowhidecategorization-hide}}\n{{Identical|show}}",
        "rcshowhidecategorization-hide": "{{doc-actionlink}}\nOption text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhidecategorization}}.\n\nSee also:\n* {{msg-mw|rcshowhidecategorization-show}}\n{{Identical|hide}}",
-       "rclinks": "Used on [[Special:RecentChanges]].\n* $1 - a list of different choices with number of pages to be shown.<br />&nbsp;Example: \"''50{{int:pipe-separator}}100{{int:pipe-separator}}250{{int:pipe-separator}}500\".\n* $2 - a list of clickable links with a number of days for which recent changes are to be displayed.<br />&nbsp;Example: \"''1{{int:pipe-separator}}3{{int:pipe-separator}}7{{int:pipe-separator}}14{{int:pipe-separator}}30''\".\n* $3 - a block of text that consists of other messages.<br />&nbsp;Example: \"''Hide minor edits{{int:pipe-separator}}Show bots{{int:pipe-separator}}Hide anonymous users{{int:pipe-separator}}Hide logged-in users{{int:pipe-separator}}Hide patrolled edits{{int:pipe-separator}}Hide my edits''\"\nList elements are separated by {{msg-mw|Pipe-separator}} each. Each list element is, or contains, a link.",
+       "rclinks": "Used on [[Special:RecentChanges]].\n* $1 - a list of different choices with number of pages to be shown.<br />&nbsp;Example: \"''50{{int:pipe-separator}}100{{int:pipe-separator}}250{{int:pipe-separator}}500\".\n* $2 - a list of clickable links with a number of days for which recent changes are to be displayed.<br />&nbsp;Example: \"''1{{int:pipe-separator}}3{{int:pipe-separator}}7{{int:pipe-separator}}14{{int:pipe-separator}}30''\".",
        "diff": "Short form of \"differences\". Used on [[Special:RecentChanges]], [[Special:Watchlist]], ...\n{{Identical|Diff}}",
        "hist": "Short form of \"history\". Used on [[Special:RecentChanges]], [[Special:Watchlist]], ...",
        "hide": "{{doc-actionlink}}\nOption text in [[Special:RecentChanges]], and in [[Special:WhatLinksHere]].\n\nSee also:\n* {{msg-mw|Show}}\n{{Identical|Hide}}",
        "show": "{{doc-actionlink}}\nOption text in [[Special:RecentChanges]], and in [[Special:WhatLinksHere]].\n\nSee also:\n* {{msg-mw|Hide}}\n{{Identical|Show}}",
-       "minoreditletter": "Very short form of \"'''minor edit'''\". Used in [[Special:RecentChanges]], [[Special:Watchlist]], [[Special:Contributions]] and history pages.",
-       "newpageletter": "Very short form of \"'''new page'''\". Used in [[Special:RecentChanges]], [[Special:Watchlist]] and [[Special:Contributions]].",
-       "boteditletter": "Abbreviation of \"'''bot'''\". Appears in [[Special:RecentChanges]] and [[Special:Watchlist]].",
+       "minoreditletter": "Very short form of \"'''minor edit'''\". Used in [[Special:RecentChanges]], [[Special:Watchlist]], [[Special:Contributions]] and history pages. This should be a single letter.",
+       "newpageletter": "Very short form of \"'''new page'''\". Used in [[Special:RecentChanges]], [[Special:Watchlist]] and [[Special:Contributions]]. This should be a single letter.",
+       "boteditletter": "Abbreviation of \"'''bot'''\". Appears in [[Special:RecentChanges]] and [[Special:Watchlist]]. This should be a single letter.",
        "unpatrolledletter": "{{optional}}\n\nUsed in {{msg-mw|Recentchanges-label-legend}}, meaning \"unpatrolled\".",
        "number_of_watching_users_RCview": "{{notranslate}}\nParameters:\n* $1 - number of users who are watching",
        "number_of_watching_users_pageview": "Used if <code>$wgPageShowWatchingUsers</code> is true.\n* $1 - number of watching user(s)",
        "recentchangeslinked-feed": "Used in the feed object.\n\nThis message follows the message {{msg-mw|Recentchangeslinked-title}}.",
        "recentchangeslinked-toolbox": "Used as link text, and also used as link text in the common toolbox.\n\nThese links point to [[Special:RecentChangesLinked]].",
        "recentchangeslinked-title": "Message used as title and page header on [[Special:RecentChangesLinked]] (needs an argument like \"/Main Page\").\n\nRelated changes are all recent change to pages that are linked from ''this page''.\n\nThis message is followed by {{msg-mw|Recentchangeslinked-feed}}.\n\nParameters:\n* $1 - the name of the page for which related changes are shown",
-       "recentchangeslinked-summary": "Summary of [[Special:RecentChangesLinked]].",
+       "recentchangeslinked-summary": "Summary of [[Special:RecentChangesLinked]]. \"Pages on your watchlist\" refers to pages that ''also'' appear on the user's watchlist.",
        "recentchangeslinked-page": "{{Identical|Page name}}",
        "recentchangeslinked-to": "Checkbox in [[Special:RecentChangesLinked]].",
        "recentchanges-page-added-to-category": "Comment message for pages added to a category\n\nParameters:\n* $1 - name of the page being added",
        "listfiles_search_for": "Input label for the form displayed on [[Special:ListFiles]].",
        "listfiles-userdoesnotexist": "This message is displayed on [[Special:ListFiles]] when a invalid username is entered.",
        "imgfile": "{{Identical|File}}",
-       "listfiles": "Page title and grouping label for the form displayed on [[Special:ListFiles]].\n{{Identical|File list}}",
+       "listfiles": "Page title and grouping label for the form displayed on [[Special:ListFiles]].\n{{Identical|List}}",
        "listfiles_thumb": "{{Identical|Thumbnail}}",
        "listfiles_date": "Column header for the result table displayed on [[Special:ListFiles]].\n{{Identical|Date}}",
        "listfiles_name": "Column header for the result table displayed on [[Special:ListFiles]].\n{{Identical|Name}}",
        "unusedcategoriestext": "Used as page header in [[Special:UnusedCategories]].",
        "notargettitle": "Used as title of error message.\n\nSee also:\n* {{msg-mw|Notargettitle|title}}\n* {{msg-mw|Notargettext|text}}",
        "notargettext": "Used as error message in [[Special:MovePage]].\n\nSee also:\n* {{msg-mw|Notargettitle|title}}\n* {{msg-mw|Notargettext|text}}",
-       "nopagetitle": "Used as title on special pages like [[Special:MovePage]] (when the oldtitle does not exist) or [[Special:PermaLink]].\n\nThe text is {{msg-mw|nopagetext}}.\n\nSee also:\n* {{msg-mw|Nopagetitle|title}}\n* {{msg-mw|Nopagetext|text}}",
+       "nopagetitle": "Used as title on special pages like [[Special:MovePage]] (when the oldtitle does not exist), [[Special:Diff]] or [[Special:PermaLink]].\n\nThe text is {{msg-mw|nopagetext}}.\n\nSee also:\n* {{msg-mw|Nopagetitle|title}}\n* {{msg-mw|Nopagetext|text}}",
        "nopagetext": "Used as text on special pages like [[Special:MovePage]] (when the oldtitle does not exist) or [[Special:PermaLink]].\n\nThe title is {{msg-mw|nopagetitle}}.\n\nSee also:\n* {{msg-mw|Nopagetitle|title}}\n* {{msg-mw|Nopagetext|text}}",
        "pager-newer-n": "This is part of the navigation message on the top and bottom of Special pages which are lists of things in date order, e.g. the User's contributions page. It is passed as the second argument of {{msg-mw|Viewprevnext}}. $1 is the number of items shown per page.\n{{Identical|Newer}}",
        "pager-older-n": "This is part of the navigation message on the top and bottom of Special pages which are lists of things in date order, e.g. the User's contributions page. It is passed as the first argument of {{msg-mw|Viewprevnext}}. $1 is the number of items shown per page.",
        "apisandbox-sending-request": "JavaScript message displayed while the request is being sent.",
        "apisandbox-loading-results": "JavaScript message displayed while the response is being read.",
        "apisandbox-results-error": "Displayed as an error message from JavaScript when the request failed.\n\nParameters:\n* $1 - Error message",
+       "apisandbox-results-login-suppressed": "Displayed as a warning when a request was processed as a logged-out user to avoid Same-Origin security bypass.",
        "apisandbox-request-selectformat-label": "Label for the format selector on the results page.",
        "apisandbox-request-format-url-label": "Label for the menu item to select URL format.\n\nSee also:\n* {{msg-mw|apisandbox-request-selectformat-label}}\n* {{msg-mw|apisandbox-request-url-label}}",
        "apisandbox-request-url-label": "Label for the text field displaying the URL used to make this request.\n\nSee also:\n* {{msg-mw|apisandbox-request-format-url-label}}",
        "sp-contributions-suppresslog": "Used as a display name for a link to log entries of suppressed edits made by that user.\n\nUsed as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]]. Parameters:\n* $1 is a plain text username used for GENDER.\nSee also {{msg-mw|sp-contributions-deleted}}, {{msg-mw|sp-deletedcontributions-contribs}}, {{msg-mw|contributions}}, {{msg-mw|deletedcontributions-title}}.",
        "sp-contributions-deleted": "This is a link anchor used in [[Special:Contributions]]/''name'', when user viewing the page has the right to delete pages, or to restore deleted pages.\n\nUsed as link title in [[Special:Contributions]]. Parameters:\n* $1 is a plain text username used for GENDER.\nSee also:\n* {{msg-mw|Sp-contributions-talk}}\n* {{msg-mw|Change-blocklink}}\n* {{msg-mw|Unblocklink}}\n* {{msg-mw|Blocklink}}\n* {{msg-mw|Sp-contributions-blocklog}}\n* {{msg-mw|Sp-contributions-uploads}}\n* {{msg-mw|Sp-contributions-logs}}\n* {{msg-mw|Sp-contributions-userrights}}",
        "sp-contributions-uploads": "Used as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]].\n\nSee also:\n* {{msg-mw|Sp-contributions-talk}}\n* {{msg-mw|Change-blocklink}}\n* {{msg-mw|Unblocklink}}\n* {{msg-mw|Blocklink}}\n* {{msg-mw|Sp-contributions-blocklog}}\n* {{msg-mw|Sp-contributions-logs}}\n* {{msg-mw|Sp-contributions-deleted}}\n* {{msg-mw|Sp-contributions-userrights}}\n{{Identical|Upload}}",
-       "sp-contributions-logs": "Appears as an action link in the header of the Special:Contributions/''Username'' pages (e.g. \"For Somebody (talk | block log | logs)\").\n\nUsed as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]].\n\nSee also:\n* {{msg-mw|Sp-contributions-talk}}\n* {{msg-mw|Change-blocklink}}\n* {{msg-mw|Unblocklink}}\n* {{msg-mw|Blocklink}}\n* {{msg-mw|Sp-contributions-blocklog}}\n* {{msg-mw|Sp-contributions-uploads}}\n* {{msg-mw|Sp-contributions-deleted}}\n* {{msg-mw|Sp-contributions-userrights}}\n{{Identical|Log}}",
-       "sp-contributions-talk": "This is a link anchor used in the [[Special:Contributions]]/''usernamename'' pages.\nThe link appears in a list of similar ones separated by {{msg-mw|pipe-separator}}, e.g. like this:<br />\n( talk | block log | logs | deleted contributions | rights management )\n\nUsed as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]].\n\nSee also:\n* {{msg-mw|change-blocklink}}\n* {{msg-mw|unblocklink}}\n* {{msg-mw|blocklink}}\n* {{msg-mw|sp-contributions-blocklog}}\n* {{msg-mw|sp-contributions-uploads}}\n* {{msg-mw|sp-contributions-logs}}\n* {{msg-mw|sp-contributions-deleted}}\n* {{msg-mw|sp-contributions-userrights}}\n{{Identical|Talk}}",
-       "sp-contributions-userrights": "This is a link anchor used in [[Special:Contributions]]/''name'', if the user viewing the page has the right to set or alter user rights.\n\nUsed as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]].\n\nSee also:\n* {{msg-mw|Sp-contributions-talk}}\n* {{msg-mw|Change-blocklink}}\n* {{msg-mw|Unblocklink}}\n* {{msg-mw|Blocklink}}\n* {{msg-mw|Sp-contributions-blocklog}}\n* {{msg-mw|Sp-contributions-uploads}}\n* {{msg-mw|Sp-contributions-logs}}\n* {{msg-mw|Sp-contributions-deleted}}",
+       "sp-contributions-logs": "Appears as an action link in the header of the [[Special:Contributions]]/''username'' pages (e.g. \"For Somebody (talk | block log | logs)\").\n\nUsed as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]].\n\nSee also:\n* {{msg-mw|Sp-contributions-talk}}\n* {{msg-mw|Change-blocklink}}\n* {{msg-mw|Unblocklink}}\n* {{msg-mw|Blocklink}}\n* {{msg-mw|Sp-contributions-blocklog}}\n* {{msg-mw|Sp-contributions-uploads}}\n* {{msg-mw|Sp-contributions-deleted}}\n* {{msg-mw|Sp-contributions-userrights}}\n{{Identical|Log}}",
+       "sp-contributions-talk": "This is a link anchor used in the [[Special:Contributions]]/''username'' pages.\nThe link appears in a list of similar ones separated by {{msg-mw|pipe-separator}}, e.g. like this:<br />\n( talk | block log | logs | deleted contributions | rights management )\n\nUsed as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]].\n\nSee also:\n* {{msg-mw|change-blocklink}}\n* {{msg-mw|unblocklink}}\n* {{msg-mw|blocklink}}\n* {{msg-mw|sp-contributions-blocklog}}\n* {{msg-mw|sp-contributions-uploads}}\n* {{msg-mw|sp-contributions-logs}}\n* {{msg-mw|sp-contributions-deleted}}\n* {{msg-mw|sp-contributions-userrights}}\n{{Identical|Talk}}",
+       "sp-contributions-userrights": "This is a link anchor used in [[Special:Contributions]]/''username'' if the user viewing the page has the right to set or alter user rights.\n\nUsed as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]]. Parameters:\n* $1 is a plain text username used for GENDER.\nSee also:\n* {{msg-mw|Sp-contributions-talk}}\n* {{msg-mw|Change-blocklink}}\n* {{msg-mw|Unblocklink}}\n* {{msg-mw|Blocklink}}\n* {{msg-mw|Sp-contributions-blocklog}}\n* {{msg-mw|Sp-contributions-uploads}}\n* {{msg-mw|Sp-contributions-logs}}\n* {{msg-mw|Sp-contributions-deleted}}",
        "sp-contributions-blocked-notice": "Shown on top of contributions special page of currently blocked users.\n\nParameters:\n* $1 - (Optional) the blocked user. Can be used for GENDER\nAnon version:\n* {{msg-mw|Sp-contributions-blocked-notice-anon}}",
        "sp-contributions-blocked-notice-anon": "Same as {{msg-mw|Sp-contributions-blocked-notice}} but for anonymous users.",
        "sp-contributions-search": "Used on [[Special:Contributions]]",
        "nolinkshere": "Used in [[Special:WhatLinksHere]] if empty. Parameters:\n* $1 - page title\nSee also:\n* {{msg-mw|Nolinkshere-ns}}",
        "nolinkshere-ns": "Used in [[Special:WhatLinksHere]] if empty. Parameters:\n* $1 - page title\nSee also:\n* {{msg-mw|Nolinkshere}}",
        "isredirect": "Displayed in [[Special:WhatLinksHere]] (see [{{fullurl:Special:WhatLinksHere/Project:Translator|hidelinks=1}} Special:WhatLinksHere/Project:Translator] for example).\n\n{{Identical|Redirect page}}",
-       "istemplate": "Means that a page (a template, specifically) is used as <code><nowiki>{{Page name}}</nowiki></code>.\nDisplayed in [[Special:WhatLinksHere]] (see [[Special:WhatLinksHere/Template:New portal]] for example).\n{{Identical|Transclusion}}",
+       "istemplate": "Means that a page (a template, specifically) is used as <code><nowiki>{{Page name}}</nowiki></code>.\nDisplayed in [[Special:WhatLinksHere]] (see [[Special:WhatLinksHere/Template:New portal]] for example).\nIf you are not sure how to translate this term, think of something like \"inclusion\", \"embedding\", or \"insertion\".\n{{Identical|Transclusion}}",
        "isimage": "This message is displayed on [[Special:WhatLinksHere]] for images. It means that the image is used on the page (as opposed to just being linked to like an non-image page).\n{{Identical|File link}}",
        "whatlinkshere-prev": "This is part of the navigation message on the top and bottom of Whatlinkshere pages, where it is used as the first argument of {{msg-mw|Viewprevnext}}.\n\nParameters:\n* $1 - the number of items shown per page. It is not used when $1 is zero; not sure what happens when $1 is one.\nSpecial pages use {{msg-mw|Prevn}} instead (still as an argument to {{msg-mw|Viewprevnext}}).\n\nSee also:\n* {{msg-mw|Whatlinkshere-next}}\n{{Identical|Previous}}",
        "whatlinkshere-next": "This is part of the navigation message on the top and bottom of Whatlinkshere pages, where it is used as the second argument of {{msg-mw|Viewprevnext}}.\n\nParameters:\n* $1 - the number of items shown per page. It is not used when $1 is zero; not sure what happens when $1 is one.\nSpecial pages use {{msg-mw|Nextn}} instead (still as an argument to {{msg-mw|Viewprevnext}}).\n\nSee also:\n* {{msg-mw|Whatlinkshere-prev}}\n{{Identical|Next}}",
        "autoblocklist-submit": "Used as Submit button text in the form on [[Special:AutoblockList]].\n\nSee also:\n* {{msg-mw|Ipblocklist-legend}}\n* {{msg-mw|Autoblocklist-submit}}\n{{Identical|Search}}",
        "autoblocklist-legend": "Used as legend of the form in [[Special:AutoblockList]].\n\nSee also:\n* {{msg-mw|Autoblocklist-legend}}\n* {{msg-mw|Autoblocklist-submit}}",
        "autoblocklist-localblocks": "[[File:Special AutoBlockList new.png|thumb|Example]]\nUsed on [[Special:AutoblockList]] as header when global autoblocks exists too.",
+       "autoblocklist-total-autoblocks": "Shows the total number of active autoblocks on [[Special:AutoblockList]]. Parameters:\n* $1 - number of autoblocks",
        "autoblocklist-empty": "Used in [[Special:AutoblockList]].",
        "autoblocklist-otherblocks": "[[File:Special AutoBlockList new.png|thumb|Example]]\nUsed on [[Special:AutoblockList]] as header for other blocks, i.e. from GlobalBlocking or TorBlocks.\n\nParameters:\n* $1 - number of blocks",
        "ipblocklist": "Title of [[Special:Ipblocklist]].",
        "accesskey-pt-mycontris": "{{doc-accesskey}}\nSee also:\n* {{msg-mw|Mycontris}}\n* {{msg-mw|Accesskey-pt-mycontris}}\n* {{msg-mw|Tooltip-pt-mycontris}}",
        "accesskey-pt-anoncontribs": "{{doc-accesskey}}\nSee also:\n* {{msg-mw|Anoncontribs}}\n* {{msg-mw|Tooltip-pt-anoncontribs}}",
        "accesskey-pt-login": "{{doc-accesskey}}",
+       "accesskey-pt-login-private": "{{doc-accesskey}}",
        "accesskey-pt-logout": "{{doc-accesskey}}\nSee also:\n* {{msg-mw|Logout}}\n* {{msg-mw|Accesskey-pt-logout}}\n* {{msg-mw|Tooltip-pt-logout}}",
        "accesskey-pt-createaccount": "{{doc-accesskey}}",
        "accesskey-ca-talk": "{{doc-accesskey}}\nSee also:\n* {{msg-mw|Talk}}\n* {{msg-mw|Accesskey-ca-talk}}\n* {{msg-mw|Tooltip-ca-talk}}",
        "tooltip-pt-mycontris": "Tooltip shown when hovering over the {{msg-mw|Mycontris}} link in your personal toolbox (upper right side).\n\nSee also:\n* {{msg-mw|Mycontris}}\n* {{msg-mw|Accesskey-pt-mycontris}}\n* {{msg-mw|Tooltip-pt-mycontris}}",
        "tooltip-pt-anoncontribs": "Tooltip shown when hovering over the {{msg-mw|Anoncontribs}} link in your personal toolbox (upper right side).\n\nSee also:\n* {{msg-mw|Anoncontribs}}\n* {{msg-mw|Accesskey-pt-anoncontribs}}",
        "tooltip-pt-login": "Tooltip shown when hovering over the link 'Log in' in the upper right corner show on all pages while not logged in.",
+       "tooltip-pt-login-private": "Tooltip shown when hovering over the link 'Log in' in the upper right corner show on all pages while not logged in, and wiki is private.",
        "tooltip-pt-logout": "Tooltip shown when hovering over the {{msg-mw|Logout}} link in your personal toolbox (upper right side).\n\nSee also:\n* {{msg-mw|Logout}}\n* {{msg-mw|Accesskey-pt-logout}}\n* {{msg-mw|Tooltip-pt-logout}}\n{{Identical|Log out}}",
        "tooltip-pt-createaccount": "Tooltip shown when hovering over the link 'Create account' in the upper right corner show on all pages while not logged in.",
        "tooltip-ca-talk": "Tooltip shown when hovering over the {{msg-mw|Talk}} tab.\n\nA '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 a technical definition of 'content namespaces' see [[mw:Manual:Using_custom_namespaces#Content_namespaces|MediaWiki]].\n\nPossible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.\n\nSee also:\n* {{msg-mw|Talk}}\n* {{msg-mw|Accesskey-ca-talk}}\n* {{msg-mw|Tooltip-ca-talk}}\n{{Identical|Content page}}",
        "tooltip-t-whatlinkshere": "Tooltip shown when hovering over the {{msg-mw|whatlinkshere}} message in the toolbox.\n\nSee also:\n* {{msg-mw|Whatlinkshere}}\n* {{msg-mw|Accesskey-t-whatlinkshere}}\n* {{msg-mw|Tooltip-t-whatlinkshere}}",
        "tooltip-t-recentchangeslinked": "Used as tooltip for the link {{msg-mw|Recentchangeslinked}}.\n\nSee also:\n* {{msg-mw|Recentchangeslinked}}\n* {{msg-mw|Accesskey-t-recentchangeslinked}}\n* {{msg-mw|Tooltip-t-recentchangeslinked}}",
        "tooltip-feed-rss": "Used as tooltip for RSS feed link.\n\nSee also:\n* {{msg-mw|Feed-rss}}\n* {{msg-mw|Accesskey-feed-rss}}\n* {{msg-mw|Tooltip-feed-rss}}",
-       "tooltip-feed-atom": "Used as tooltip for Atom feed link.\n\nSee also:\n* {{msg-mw|Feed-atom}}\n* {{msg-mw|Accesskey-feed-atom}}\n* {{msg-mw|Tooltip-feed-atom}}",
+       "tooltip-feed-atom": "Used as tooltip for Atom feed link.\n\n\"Atom\" is a technology for automated updates. See [[w:en:Atom (standard)]].\n\nSee also:\n* {{msg-mw|Feed-atom}}\n* {{msg-mw|Accesskey-feed-atom}}\n* {{msg-mw|Tooltip-feed-atom}}",
        "tooltip-t-contributions": "Tooltip shown when hovering over {{msg-mw|Contributions}} in the toolbox.\n\nParameters:\n* $1 - Name of the user\n\nSee also:\n* {{msg-mw|Contributions}}\n* {{msg-mw|Accesskey-t-contributions}}\n* {{msg-mw|Tooltip-t-contributions}}",
        "tooltip-t-emailuser": "Tooltip shown when hovering over the {{msg-mw|Emailuser}} link in the toolbox (sidebar, below).\n\nParameters:\n* $1 - Name of the user\n\nSee also:\n* {{msg-mw|Emailuser}}\n* {{msg-mw|Accesskey-t-emailuser}}\n* {{msg-mw|Tooltip-t-emailuser}}",
        "tooltip-t-info": "Tooltip shown when hovering over the {{msg-mw|pageinfo-toolboxlink}} link in the toolbox (sidebar, below).",
        "pageinfo-category-pages": "See also:\n* {{msg-mw|Pageinfo-category-subcats}}\n* {{msg-mw|Pageinfo-category-files}}\n{{Identical|Number of pages}}",
        "pageinfo-category-subcats": "See also:\n* {{msg-mw|Pageinfo-category-pages}}\n* {{msg-mw|Pageinfo-category-files}}",
        "pageinfo-category-files": "See also:\n* {{msg-mw|Pageinfo-category-pages}}\n* {{msg-mw|Pageinfo-category-subcats}}",
-       "pageinfo-user-id": "The numeric ID for a user",
+       "pageinfo-user-id": "The numeric ID for a user\n{{Identical|User ID}}",
        "markaspatrolleddiff": "{{doc-actionlink}}\nSee also:\n* {{msg-mw|Markaspatrolledtext}}\n{{Identical|Mark as patrolled}}",
        "markaspatrolledlink": "{{notranslate}}\nParameters:\n* $1 - link which has text {{msg-mw|Markaspatrolledtext}}",
        "markaspatrolledtext": "{{doc-actionlink}}\nSee also:\n* {{msg-mw|Markaspatrolleddiff}}",
        "newimages-legend": "Caption of the fieldset for the filter on [[Special:NewImages]]\n\n{{Identical|Filter}}",
        "newimages-label": "Caption of the filter editbox on [[Special:NewImages]]",
        "newimages-user": "Caption of the username/IP address editbox on [[Special:NewImages]]",
+       "newimages-newbies": "Used as label for a checkbox. When checked, [[Special:NewImages]] will only display uploads by new users.",
        "newimages-showbots": "Used as label for a checkbox. When checked, [[Special:NewImages]] will also display uploads by users in the bots group.",
        "newimages-hidepatrolled": "Used as label for a checkbox. When checked, [[Special:NewImages]] will not display patrolled uploads.\n\nCf. {{msg-mw|tog-hidepatrolled}} and {{msg-mw|apihelp-feedrecentchanges-param-hidepatrolled}}.",
+       "newimages-mediatype": "Used as label for a multiselect where users can select the media types to display.",
        "noimages": "This is shown on the special page [[Special:NewImages]], when there aren't any recently uploaded files.",
        "gallery-slideshow-toggle": "Tooltip for the icon that toggles thumbnails on a slideshow  gallery.",
        "ilsubmit": "Search button in [[Special:MIMESearch]].\n\nStrings on the page:\n* {{msg-mw|Mimesearch|page title, legend of input form, link in special pages}}\n* {{msg-mw|Mimesearch-summary|page summary}}\n* {{msg-mw|Mimetype|label for input box}}\n* {{msg-mw|Ilsubmit|search button}}\n\nCheck [[mw:Manual:MIME_type_detection]] for MIME types.\n\n{{Identical|Search}}",
        "metadata-help": "This message is followed by a table with metadata.",
        "metadata-expand": "On an image description page, there is mostly a table containing data (metadata) about the image. The most important data are shown, but if you click on this link, you can see more data and information. For the link to hide back the less important data, see {{msg-mw|Metadata-collapse}}.",
        "metadata-collapse": "On an image description page, there is mostly a table containing data (metadata) about the image. The most important data are shown, but if you click on the link {{msg-mw|Metadata-expand}}, you can see more data and information. This message is for the link to hide back the less important data.",
-       "metadata-fields": "{{doc-important|Do not translate list items, only translate the text! So leave \"<code>* make</code>\" and the other items exactly as they are.}}\nThe sentences are for explanation only and are not shown to the user.",
+       "metadata-fields": "{{doc-important|Do not translate list items, only translate the text! So leave \"<code>* make</code>\" and the other items exactly as they are.}}\nThis message allows wiki admins to edit the list of metadata fields that will be included on image page display when the metadata table is collapsed.\n\nThe sentence at the top is for explanation to the admins and is not shown to the user.",
        "metadata-langitem": "{{optional}}\nThis is used for constructing the list of translations when a metadata property is translated into multiple languages.\n\nParameters:\n* $1 - the value of the property (in one language)\n* $2 - the language name that this translation is for (or language code if language name cannot be determined)\n* $3 - (Unused) the language code",
        "metadata-langitem-default": "{{optional}}\nSimilar to \"metadata-langitem\" but for the case where a multilingual property has a default specified that does not specify what language the default is in. $1 is the value of the property.",
        "exif-imagewidth": "{{exif-qqq}}\n{{Identical|Width}}",
        "rawmessage": "{{notranslate}} Used to pass arbitrary text as a message specifier array",
        "logentry-delete-delete": "{{Logentry|[[Special:Log/delete]]}}",
        "logentry-delete-delete_redir": "{{Logentry|[[Special:Log/delete]]}}",
-       "logentry-delete-restore": "{{Logentry|[[Special:Log/delete]]}}\n* $4 - {{msg-mw|restore-count-revisions}} or/and {{msg-mw|restore-count-files}}",
+       "logentry-delete-restore": "{{Logentry|[[Special:Log/delete]]}}\n* $4 - {{msg-mw|restore-count-revisions}} or {{msg-mw|restore-count-files}}, or a combination with both (e.g. \"3 revision and 1 file\")\n\n'''A note for RTL languages''': if $3 is a name of a page or a file written in a different language, the number in the beginning of $4 may be displayed incorrectly. Consider inserting a word or an RLM between $3 and $4.",
        "logentry-delete-restore-nocount": "{{Logentry|[[Special:Log/delete]]}}",
        "restore-count-revisions": "Used as parameter in {{msg-mw|logentry-delete-restore}}\n{{Identical|Revision}}",
        "restore-count-files": "Used as parameter in {{msg-mw|logentry-delete-restore}}\n{{Identical|File}}",
        "action-pagelang": "{{Doc-action|pagelang}}",
        "log-name-pagelang": "Display entry for log name for changes in page language in Special:Log.",
        "log-description-pagelang": "Display description for log name for changes in page language in Special:Log.",
-       "logentry-pagelang-pagelang": "{{Logentry}}\nAdditional parameters:\n* $4 - old language code, or \"[def]\" (hard-coded)\n* $5 - new language code, or \"[def]\" (hard-coded)",
+       "logentry-pagelang-pagelang": "[[mw:Page language]] explains what this feature is about.\n----\n{{Logentry}}\nAdditional parameters:\n* $4 - old language code, or \"[def]\" (hard-coded)\n* $5 - new language code, or \"[def]\" (hard-coded)",
        "default-skin-not-found": "Message shown when the default skin for this MediaWiki installation can not be found.\n\nParameters:\n* $1: skin identifier for the default skin\n* $2: list of installed skins, composed using {{msg-mw|default-skin-not-found-row-enabled}} and {{msg-mw|default-skin-not-found-row-disabled}}\n* $3: code snippet to use to enable installed skins\n* $4: Number of items in list $2\n* $5: Number of lines in $3, one per skin",
        "default-skin-not-found-no-skins": "Message shown when the default skin for this MediaWiki installation can not be found and the installation has no skins at all.\n\nParameters:\n* $1: name of the default skin",
        "default-skin-not-found-row-enabled": "One row of the list of installed skins shown as a part of the following message (for an enabled skin):\n* {{msg-mw|default-skin-not-found}}\n----\nParameters:\n* $1 - skin identifier\n* $2 - human-readable skin name\nSee also:\n* {{msg-mw|Default-skin-not-found-row-disabled}}",
        "mw-widgets-titleinput-description-redirect": "Description label for a redirect in the title input widget.",
        "mw-widgets-categoryselector-add-category-placeholder": "Placeholder displayed in the category selector widget after the capsules of already added categories.",
        "mw-widgets-usersmultiselect-placeholder": "Placeholder displayed in the input field, where new usernames are entered",
+       "date-range-from": "Label for an input field that specifies the start date of a date range filter.",
+       "date-range-to": "Label for an input field that specifies the end date of a date range filter.",
        "sessionmanager-tie": "Used as an error message when multiple session sources are tied in priority.\n\nParameters:\n* $1 - List of dession type descriptions, from messages like {{msg-mw|sessionprovider-mediawiki-session-cookiesessionprovider}}.",
        "sessionprovider-generic": "Used to create a generic session type description when one isn't provided via the proper message. Should be phrased to make sense when added to a message such as {{msg-mw|cannotloginnow-text}}.\n\nParameters:\n* $1 - PHP classname.",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "Description of the sessions provided by the CookieSessionProvider class, which use HTTP cookies. Should be phrased to make sense when added to a message such as {{msg-mw|cannotloginnow-text}}.",
        "revid": "Used to format a revision ID number in text. Parameters:\n* $1 - Revision ID number.\n{{Identical|Revision}}",
        "pageid": "Used to format a page ID number in text. Parameters:\n* $1 - Page ID number.",
        "rawhtml-notallowed": "Error message given when $wgRawHtml = true; is set and a user uses an &lt;html&gt; tag in a system message or somewhere other than a normal page.",
-       "gotointerwiki": "{{doc-special|GoToInterwiki}}\n\nSpecial:GoToInterwiki is a warning page displayed before redirecting users to external interwiki links. Its triggered by people going to something like [[Special:Search/google:foo]].",
+       "gotointerwiki": "{{doc-special|GoToInterwiki}}\n\nSpecial:GoToInterwiki is a warning page displayed before redirecting users to external interwiki links. Its triggered by people going to something like [[Special:Search/google:foo]].\n{{Identical|Leaving}}",
        "gotointerwiki-invalid": "Message shown on Special:GoToInterwiki if given an invalid title.",
        "gotointerwiki-external": "Message shown on Special:GoToInterwiki if given a external interwiki link (e.g. [[Special:GoToInterwiki/Google:Foo]]). $1 is the full url the user is trying to get to. $2 is the text of the interwiki link (e.g. \"Google:foo\").",
        "undelete-cantedit": "Shown if the user tries to undelete a page that they cannot edit",
-       "undelete-cantcreate": "Shown if the user tries to undelete a page which currently does not exist, and they are not allowed to create it. This could for example happen on a wiki with custom protection levels where the page name has been create-protected and the user has the right to undelete but not the right to edit protected pages."
+       "undelete-cantcreate": "Shown if the user tries to undelete a page which currently does not exist, and they are not allowed to create it. This could for example happen on a wiki with custom protection levels where the page name has been create-protected and the user has the right to undelete but not the right to edit protected pages.",
+       "pagedata-title": "Title shown on the special page when a form or text is presented",
+       "pagedata-text": "Error shown when none of the formats acceptable to the client is supported (HTTP error 406). Parameters:\n* $1 - the list of supported MIME types",
+       "pagedata-not-acceptable": "No matching format found. Supported MIME types: $1",
+       "pagedata-bad-title": "Error shown when the requested title is invalid. Parameters:\n* $1: the malformed ID"
 }
index e28b723..479404d 100644 (file)
        "showdiff": "Hukchasqakunata rikuchiy",
        "anoneditwarning": "<strong>Paqtataq:</strong> Manaraqmi ruraqpa sutiykita qumurqunkichu. Llamk'apuptiykiqa, IP huchhaykim kay p'anqap hukchay hallch'ayninpi wakin runakunapaq rikuna waqaychasqa kanqa. Ruraqpa sutiykiwan <strong>[$1 yaykuptiykiqa]</strong> icha musuq <strong>[$2 rakiqunata kamariptiykiqa]</strong>, llamk'apusqaykikuna ruraqpa sutiykiwanmi hallch'aypi waqaychasqa kanqa, wakin allinkunapas qampaqmi kanqa.",
        "anonpreviewwarning": "''Manam ruraqpa sutiykiwan yaykusqa kachkankichu. Imatapas waqaychaptiykiqa, IP huchhaykim hallch'asqa kanqa kay p'anqap llamk'apuy wiñay kawsayninpi.''",
-       "missingsummary": "'''Paqtataq:''' Manaraqmi llamk'apusqaykimanta pisichaytachu qillqamurqunki. Musuqmanta «{{int:savearticle}}» nisqapi ñit'iptiykiqa, llamk'apusqayki waqaychasqam kanqa mana pisichay kaptinpas.",
+       "missingsummary": "'''Paqtataq:''' Manaraqmi llamk'apusqaykimanta pisichaytachu qillqamurqunki. Musuqmanta «$1» nisqapi ñit'iptiykiqa, llamk'apusqayki waqaychasqam kanqa mana pisichay kaptinpas.",
        "missingcommenttext": "Ama hina kaspa, kay qatiqpi willaspa qillqamuy.",
-       "missingcommentheader": "'''Paqtataq:''' Manaraqmi kay willaypa umallintachu qillqamurqunki. Musuqmanta \"{{int:savearticle}}\" nisqapi ñit'iptiykiqa, llamk'apusqayki waqaychasqam kanqa mana willaypa umallin kaptinpas.",
+       "missingcommentheader": "'''Paqtataq:''' Manaraqmi kay willaypa umallintachu qillqamurqunki. Musuqmanta \"$1\" nisqapi ñit'iptiykiqa, llamk'apusqayki waqaychasqam kanqa mana willaypa umallin kaptinpas.",
        "summary-preview": "Pisichayta ñawpaqta qhawarillay:",
        "subject-preview": "Yachaywata/umallita ñawpaqta qhawarillay:",
        "blockedtitle": "Ruraqqa hark'asqam",
        "right-editprotected": "Amachasqa p'anqakunata \"{{int:protect-level-sysop}}\" hina llamk'apuy",
        "right-editsemiprotected": "\"{{int:protect-level-autoconfirmed}}\" hina amachasqa p'anqakunata llamk'apuy",
        "right-editinterface": "Ruraqpaq uyapurata llamk'apuy",
-       "right-editusercssjs": "Huk ruraqkunap CSS, JS willañiqinkunata llamk'apuy",
        "right-editusercss": "Huk ruraqkunap CSS willañiqinkunata llamk'apuy",
        "right-edituserjs": "Huk ruraqkunap JS willañiqinkunata llamk'apuy",
        "right-editmyusercss": "Kikiykip ruraqpaq CSS willañiqiykikunata llamk'apuy",
        "rcshowhidemine": "$1 llamk'apusqaykunata",
        "rcshowhidemine-show": "Rikuchiy",
        "rcshowhidemine-hide": "Pakay",
-       "rclinks": "Qhipaq $1 hukchasqata qhipaq $2 p'unchawmanta qhaway.<br />$3",
+       "rclinks": "Qhipaq $1 hukchasqata qhipaq $2 p'unchawmanta qhaway.",
        "diff": "dif",
        "hist": "wñka",
        "hide": "pakay",
index e1c2830..c6ab518 100644 (file)
        "yourpasswordagain": "Yaykunapak rimayta kutin killkapay:",
        "login": "Yaykuna",
        "nav-login-createaccount": "Yaykuna",
-       "userlogin": "Yaykuna",
        "logout": "Llukshina",
        "userlogout": "Llukshina",
-       "nologin": "Mana rurak shutita charinchu ? '''$1'''.",
-       "nologinlink": "Shuk rurak shutita akllana",
        "createaccount": "Shuk rurak shutita akllana",
-       "gotaccount": "Ñachu rurak shutita charinchu ? '''$1'''.",
-       "gotaccountlink": "Yaykuna",
-       "userlogin-resetlink": "Kikinpa yaykunaman yuyaykunata kunkapankichu ?",
        "mailmypassword": "Musuq yaykunkapak rimayta e-chaskiwan kachawapay",
        "loginlanguagelabel": "Shimi: $1",
        "bold_sample": "Yanayashka killka",
        "rcshowhideanons": "Mana shutiyuk rurakkunata $1",
        "rcshowhidepatr": "rikushka mushuk killkaykunata $1",
        "rcshowhidemine": "Ñukapa killkaykunata $1",
-       "rclinks": "Ashtawan mushuk $1 killkaykunata, yallishka $2 punchapi rikuna.<br />$3",
+       "rclinks": "Ashtawan mushuk $1 killkaykunata, yallishka $2 punchapi rikuna.",
        "diff": "dif",
        "hist": "wñka",
        "hide": "Pakana",
index 6d75ded..05d40f1 100644 (file)
        "rcshowhideliu": "$1 i patàca registrè",
        "rcshowhideanons": "$1 navigador anònim",
        "rcshowhidemine": "$1 völt a j ò scrètt",
-       "rclinks": "Fam avdè la lèsta d'j $1 cambiamént int j ultum $2 dé<br />$3",
+       "rclinks": "Fam avdè la lèsta d'j $1 cambiamént int j ultum $2 dé",
        "diff": "dif.",
        "hist": "cron",
        "hide": "Ardòpa",
index 8d629e5..1a2dec3 100644 (file)
        "rcshowhideanons": "$1 users war twasnen",
        "rcshowhidepatr": "Tiẓṛigin ig itwaẓrent di $1",
        "rcshowhidemine": "$1 tiẓṛigin inu",
-       "rclinks": "Ẓar $1 tiẓṛigin tinggura di $2 n ussan inggura <br />$3",
+       "rclinks": "Ẓar $1 tiẓṛigin tinggura di $2 n ussan inggura",
        "diff": "imṣebḍan",
        "hist": "Amezruy",
        "hide": "Snuffar",
index 36a1485..537bd94 100644 (file)
        "showdiff": "Mussar midadas",
        "anoneditwarning": "Vus essas betg annunziads. Empè dal num d'utilisader vign l'adressa dad IP registrada en la historia da las versiuns.",
        "anonpreviewwarning": "''Ti n'es betg t'annunzià. Cun memorisar vegn perquai tia adressa IP registrada en la cronologia da la pagina.''",
-       "missingsummary": "'''Avis:''' Ti has betg inditgà ina resumaziun. \nSche ti cliccas danovamain \"{{int:savearticle}}\" vegn tia midada memorisada senza ina tala.",
+       "missingsummary": "'''Avis:''' Ti has betg inditgà ina resumaziun. \nSche ti cliccas danovamain \"$1\" vegn tia midada memorisada senza ina tala.",
        "missingcommenttext": "Endatescha per plaschair ina resumaziun.",
-       "missingcommentheader": "'''Avis:''' Ti n'has betg inditgà in subject/titel per quest commentari.\nSche ti cliccas anc ina giada sin \"{{int:savearticle}}\" vegn il commentari memorisà senza in tal.",
+       "missingcommentheader": "'''Avis:''' Ti n'has betg inditgà in subject/titel per quest commentari.\nSche ti cliccas anc ina giada sin \"$1\" vegn il commentari memorisà senza in tal.",
        "summary-preview": "prevista da la resumaziun:",
        "subject-preview": "Prevista da l'object:",
        "blockedtitle": "Utilisader è bloccà",
        "editingsection": "Modifitgar «$1» (secziun)",
        "editingcomment": "Modifitgar «$1» (nova secziun)",
        "editconflict": "Conflict da modifitgar: $1",
-       "explainconflict": "Insatgi auter ha midà questa pagina dapi che ti has cumenzà a la modifitgar. \nIl champ d'endataziun sura cuntegna il text sco che la pagina vesa ora actualmain. \nTias midadas èn mussadas en il champ d'endataziun sut. \nTi stos integrar tias midadas en il text existent. \n'''Mo''' il text en il champ d'endataziun sura vegn memorià sche ti cliccas sin \"{{int:savearticle}}\".",
+       "explainconflict": "Insatgi auter ha midà questa pagina dapi che ti has cumenzà a la modifitgar. \nIl champ d'endataziun sura cuntegna il text sco che la pagina vesa ora actualmain. \nTias midadas èn mussadas en il champ d'endataziun sut. \nTi stos integrar tias midadas en il text existent. \n'''Mo''' il text en il champ d'endataziun sura vegn memorià sche ti cliccas sin \"$1\".",
        "yourtext": "Tes text",
        "storedversion": "Versiun memorisada",
        "nonunicodebrowser": "'''Attenziun: Tes navigatur na sustegna betg unicode.'''\nPer che ti pos modifitgar las paginas senza ch'i dettia problems vegnan ils caracters betg ASCII mussads en tes champ d'endataziun sco codes exadecimals.",
        "right-protect": "Midar il livel da protecziun e modifitgar paginas protegidas",
        "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",
        "right-edituserjs": "Modifitgar datotecas da JavaScript d'auters utilisaders",
        "right-rollback": "Revocar svelt las modificaziuns da l'ultim utilisader che ha modifitgà ina pagina particulara.",
        "rcshowhidemine": "$1 mias midadas",
        "rcshowhidemine-show": "Mussar",
        "rcshowhidemine-hide": "Zuppentar",
-       "rclinks": "Mussar las davosas $1 midadas dals ultims $2 dis<br />$3",
+       "rclinks": "Mussar las davosas $1 midadas dals ultims $2 dis",
        "diff": "diff",
        "hist": "ist",
        "hide": "Zuppentar",
        "undeleteviewlink": "contemplar",
        "undeleteinvert": "Invertar la selecziun",
        "undeletecomment": "Motiv:",
-       "undeletedrevisions": "Restituì {{PLURAL:$1|1 versiun|$1 versiuns}}",
-       "undeletedrevisions-files": "Restituì {{PLURAL:$1|1 versiun|$1 versiuns}} e {{PLURAL:$2|1 datoteca|$2 datotecas}}",
-       "undeletedfiles": "Restituì {{PLURAL:$1|1 datoteca|$1 datotecas}}",
        "cannotundelete": "Errur cun restaurar:\n$1",
        "undeletedpage": "'''$1 è vegnì restaurà'''\n\nConsultescha 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.",
index fe972e0..313aef4 100644 (file)
        "rcshowhideanons": "$1 bijangle jene",
        "rcshowhidepatr": "$1 dikhle paruvimata",
        "rcshowhidemine": "$1 mire editisaripena",
-       "rclinks": "Dikh le palutne $1 paruvimata andar le palutne $2 divesa.<br />$3",
+       "rclinks": "Dikh le palutne $1 paruvimata andar le palutne $2 divesa.",
        "diff": "ververipen",
        "hist": "puranipen",
        "hide": "garav",
index 3f8d740..7774735 100644 (file)
@@ -30,7 +30,9 @@
                        "Wintereu",
                        "Rsocol",
                        "Nemo bis",
-                       "Turbojet"
+                       "Turbojet",
+                       "Stephanecbisson",
+                       "Matrafox"
                ]
        },
        "tog-underline": "Sublinierea legăturilor:",
        "anontalk": "Discuții",
        "navigation": "Navigare",
        "and": "&#32;și",
-       "qbfind": "Găsește",
-       "qbbrowse": "Răsfoiește",
-       "qbedit": "Modificare",
-       "qbpageoptions": "Această pagină",
-       "qbmyoptions": "Paginile mele",
        "faq": "Întrebări frecvente",
-       "faqpage": "Project:Întrebări frecvente",
        "actions": "Acțiuni",
        "namespaces": "Spații de nume",
        "variants": "Variante",
        "searcharticle": "Du-te",
        "history": "Istoricul paginii",
        "history_short": "Istoric",
+       "history_small": "istoric",
        "updatedmarker": "actualizat de la ultima mea vizită",
        "printableversion": "Versiune de tipărit",
        "permalink": "Legătură permanentă",
        "edit-local": "Modificare descriere locală",
        "create": "Creare",
        "create-local": "Adăugare descriere locală",
-       "editthispage": "Modificați pagina",
-       "create-this-page": "Creați această pagină",
        "delete": "Ștergere",
-       "deletethispage": "Șterge această pagină",
-       "undeletethispage": "Recuperează această pagină",
        "undelete_short": "Recuperarea {{PLURAL:$1|unei modificări|a $1 modificări|a $1 de modificări}}",
        "viewdeleted_short": "Vizualizați {{PLURAL:$1|o modificare ștearsă|$1 modificări șterse|$1 de modificări șterse}}",
        "protect": "Protejare",
        "protect_change": "schimbă protecția",
-       "protectthispage": "Protejați această pagină",
        "unprotect": "Modificare protecție",
-       "unprotectthispage": "Schimbă nivelul de protejare al acestei pagini",
        "newpage": "Pagină nouă",
-       "talkpage": "Discutați despre această pagină",
        "talkpagelinktext": "Discuție",
        "specialpage": "Pagină specială",
        "personaltools": "Unelte personale",
-       "articlepage": "Vizualizați conținutul paginii",
        "talk": "Discuție",
        "views": "Vizualizări",
        "toolbox": "Unelte",
        "tool-link-userrights": "Schimbă grupurile {{GENDER:$1|utilizatorului|utilizatoarei}}",
+       "tool-link-userrights-readonly": "Vezi grupurile {{GENDER:$1|utilizatorului|utilizatoarei}}",
        "tool-link-emailuser": "Trimiteți un mesaj {{GENDER:$1|acestui utilizator|acestei utilizatoare}}",
-       "userpage": "Vizualizați pagina utilizatorului",
-       "projectpage": "Vizualizați pagina proiectului",
        "imagepage": "Vizualizați pagina fișierului",
        "mediawikipage": "Vizualizați pagina mesajului",
        "templatepage": "Vizualizați pagina formatului",
        "redirectedfrom": "(Redirecționat de la $1)",
        "redirectpagesub": "Pagină de redirecționare",
        "redirectto": "Redirecționare către:",
-       "lastmodifiedat": "Ultima modificare a paginii efectuată la $1, ora $2.",
+       "lastmodifiedat": "Ultima editare a paginii a fost efectuată la $1, ora $2.",
        "viewcount": "Pagina a fost accesată {{PLURAL:$1|o dată|de $1 ori|de $1 de ori}}.",
        "protectedpage": "Pagină protejată",
        "jumpto": "Salt la:",
        "eauthentsent": "Un e-mail de confirmare a fost trimis către adresa specificată.\nÎnainte ca orice alt e-mail să mai fie trimis către acel cont, trebuie să urmați instrucțiunile prezente în e-mail pentru a confirma că acest cont este într-adevăr al dumneavoastră.",
        "throttled-mailpassword": "Un e-mail pentru resetarea parolei a fost deja trimis în {{PLURAL:$1|ultima oră|ultimele $1 ore|ultimele $1 de ore}}. Pentru a preveni abuzul, se va trimite doar un e-mail de resetare a parolei la un interval de o {{PLURAL:$1|o oră|$1 ore|$1 de ore}}.",
        "mailerror": "Eroare la trimitere e-mail: $1",
-       "acct_creation_throttle_hit": "De la această adresă IP, vizitatorii sitului au creat {{PLURAL:$1|1 cont|$1 conturi|$1 de conturi}} de utilizator în ultimele zile, acest număr de noi conturi fiind maximul admis în această perioadă de timp.\nPrin urmare, vizitatorii care folosesc același IP nu mai pot crea alte conturi pentru moment.",
+       "acct_creation_throttle_hit": "De la această adresă IP, vizitatorii sitului au creat {{PLURAL:$1|1 cont|$1 conturi|$1 de conturi}} de utilizator în ultimele $2, acest număr de noi conturi fiind maximul admis în această perioadă de timp.\nPrin urmare, vizitatorii care folosesc același IP nu mai pot crea alte conturi pentru moment.",
        "emailauthenticated": "Adresa de e-mail a fost autentificată pe $2, la $3.",
        "emailnotauthenticated": "Adresa dumneavoastră de e-mail nu este autentificată încă. Nici un e-mail nu va fi trimis pentru nici una din întrebuințările următoare.",
        "noemailprefs": "Nu a fost specificată o adresă email, următoarele nu vor funcționa.",
        "botpasswords-label-delete": "Șterge",
        "botpasswords-label-resetpassword": "Resetează parola",
        "botpasswords-label-grants": "Permisiuni aplicabile:",
+       "botpasswords-help-grants": "Granturile permit accesul la drepturile deținute deja de contul dvs. de utilizator. Activarea unui grant nu oferă acces la niciunul dintre drepturile pe care contul dvs. de utilizator nu ar avea altfel. Consultați [[Special:ListGrants|table of grants]] pentru mai multe informații.",
        "botpasswords-label-grants-column": "Permise",
        "botpasswords-bad-appid": "Numele de robot „$1” nu este valid.",
+       "botpasswords-insert-failed": "Eroare adăugare nume bot \"$1\". A fost adăugat deja?",
+       "botpasswords-update-failed": "Updatare nume bot $1 eșuat. A fost șters?",
        "botpasswords-created-title": "Parola de robot a fost creată",
+       "botpasswords-created-body": "Parola bot pentru bot nume \"$1\" a utilizatorului \"$2\" a fost creată.",
+       "botpasswords-updated-title": "Parola de robot a fost actualizată",
+       "botpasswords-updated-body": "Parola bot pentru bot nume \"$1\" a utilizatorului \"$2\" a fost actualizată.",
+       "botpasswords-deleted-title": "Parola de bot a fost ștearsă",
+       "botpasswords-deleted-body": "Parola bot pentru bot nume \"$1\" a utilizatorului \"$2\" a fost stearsă.",
+       "botpasswords-newpassword": "Noua parolă pentru autentificare cu <strong>$1</strong> este <strong>$2</strong>. <em>Salvați-l pentru utilizări ulterioare.</em><br>(Pentru roboți mai vechi, care necesită ca numele de autentificare să fie același cu numele de utilizator, puteți utiliza și <strong>$3</strong> ca nume de utilizator și <strong>$4</strong> ca parolă.)",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider nu este disponibil.",
+       "botpasswords-restriction-failed": "Restricțiile privind parola botului împiedică această conectare.",
+       "botpasswords-invalid-name": "Numele de utilizator specificat nu conține separatorul de parole pentru bot (\"$1\").",
+       "botpasswords-not-exist": "Utilizatorul \"$1\" nu are un bot de parole numit \"$2\".",
        "resetpass_forbidden": "Parolele nu pot fi schimbate.",
        "resetpass_forbidden-reason": "Parolele nu pot fi schimbate: $1",
        "resetpass-no-info": "Trebuie să fiți autentificat pentru a accesa această pagină direct.",
        "passwordreset-emailelement": "Nume de utilizator: \n$1\n\nParolă temporară: \n$2",
        "passwordreset-emailsentemail": "Dacă această adresă de e-mail este asociată contului dumneavoastră, atunci se va trimite un e-mail de resetare a parolei.",
        "passwordreset-emailsentusername": "Dacă există o adresă de e-mail asociată acestui nume de utilizator, atunci se va trimite un e-mail de resetare a parolei.",
+       "passwordreset-nocaller": "Un apelator trebuie furnizat",
+       "passwordreset-nosuchcaller": "Apelatorul nu există: $1",
+       "passwordreset-ignored": "Nu s-a putut efectua resetarea parolei. Probabil nu a fost configurat un furnizor?",
        "passwordreset-invalidemail": "Adresă de e-mail nevalidă",
        "passwordreset-nodata": "Nu au fost furnizate un nume de utilizator sau o adresă de e-mail",
        "changeemail": "Modificare sau înlăturare adresă de e-mail",
        "preview": "Previzualizare",
        "showpreview": "Previzualizare",
        "showdiff": "Afișare diferențe",
-       "blankarticle": "<strong>Atenție:</strong> Pagina pe care o creați este goală.\nDacă faceți din nou clic pe „{{int:savearticle}}”, pagina va fi creată fără niciun conținut.",
+       "blankarticle": "<strong>Atenție:</strong> Pagina pe care o creați este goală.\nDacă faceți din nou clic pe „$1”, pagina va fi creată fără niciun conținut.",
        "anoneditwarning": "<strong>Atenție:</strong> Nu v-ați autentificat. Adresa dumneavoastră IP va fi vizibilă în mod public dacă efectuați modificări. Dacă vă <strong>[$1 autentificați]</strong> sau vă <strong>[$2 creați un cont]</strong>, modificările dumneavoastră vor fi asociate numelui de utilizator, pe lângă alte beneficii.",
        "anonpreviewwarning": "''Nu v-ați autentificat. Dacă salvați pagina adresa dumneavoastră IP va fi înregistrată în istoric.''",
        "missingsummary": "'''Atenție:''' Nu ați completat caseta „descriere modificări”. Dacă apăsați din nou butonul „salvează pagina” modificările vor fi salvate fără descriere.",
-       "selfredirect": "<strong>Atenție:</strong> Sunteți pe cale să redirecționați această pagină către ea însăși.\nProbabil ați greșit ținta redirecționării sau ați modificat pagina greșită.\nDacă apăsați din nou pe „{{int:savearticle}}”, redirecționarea va fi creată oricum.",
+       "selfredirect": "<strong>Atenție:</strong> Sunteți pe cale să redirecționați această pagină către ea însăși.\nProbabil ați greșit ținta redirecționării sau ați modificat pagina greșită.\nDacă apăsați din nou pe „$1”, redirecționarea va fi creată oricum.",
        "missingcommenttext": "Vă rugăm să introduceți un comentariu.",
-       "missingcommentheader": "<strong>Atenție:</strong> nu ați adăugat niciun titlu sau subiect la acest comentariu.\nDacă dați din nou clic pe „{{int:savearticle}}” modificarea va fi salvată fără titlu.",
+       "missingcommentheader": "<strong>Atenție:</strong> nu ați adăugat niciun titlu sau subiect la acest comentariu.\nDacă dați din nou clic pe „$1” modificarea va fi salvată fără titlu.",
        "summary-preview": "Previzualizare descriere:",
        "subject-preview": "Previzualizare subiect/titlu:",
        "previewerrortext": "A survenit o eroare ca urmare a tentativei de previzualizare a modificărilor dumneavoastră.",
        "blockedtitle": "Utilizatorul este blocat",
        "blockedtext": "'''Adresa IP sau contul dumneavoastră de utilizator a fost blocat.'''\n\nBlocarea a fost făcută de $1.\nMotivul blocării este ''$2''.\n\n* Începutul blocării: $8\n* Sfârșitul blocării: $6\n* Utilizatorul vizat: $7\n\nÎl puteți contacta pe $1 sau pe alt [[{{MediaWiki:Grouppage-sysop}}|administrator]] pentru a discuta blocarea.\nNu puteți folosi opțiunea 'trimite un e-mai utilizatorului' decât dacă o adresă de e-mail validă este specificată în [[Special:Preferences|preferințele contului]] și nu sunteți blocat la folosirea ei.\nAdresa dumneavoastră IP curentă este $3, iar ID-ul blocării este $5. Vă rugăm să includeți oricare sau ambele informații în orice interogări.",
        "autoblockedtext": "Această adresă IP a fost blocată automat deoarece a fost folosită de către un alt utilizator, care a fost blocat de $1.\nMotivul blocării este:\n\n:''$2''\n\n* Începutul blocării: $8\n* Sfârșitul blocării: $6\n* Intervalul blocării: $7\n\nPuteți contacta pe $1 sau pe unul dintre ceilalți [[{{MediaWiki:Grouppage-sysop}}|administratori]] pentru a discuta blocarea.\n\nNu veți putea folosi opțiunea de \"trimite e-mail\" decât dacă aveți înregistrată o adresă de e-mail validă la [[Special:Preferences|preferințe]] și nu sunteți blocat la folosirea ei.\n\nAveți adresa IP $3, iar identificatorul dumneavoastră de blocare este $5.\nVă rugăm să includeți detaliile de mai sus în orice interogări pe care le faceți.",
+       "systemblockedtext": "Numele de utilizator sau adresa IP a fost blocat automat de MediaWiki.\nMotivul indicat este:\n\n:<em>$2</em>\n\n\n* Începutul blocării: $8\n* Expirarea blocării: $6\n* Utilizatorul vizat: $7\n\nAdresa IP curentă a dumneavoastră este $3.\nVă rugăm să includeți toate detaliile de mai sus în orice interogare pe care o veți faceți.",
        "blockednoreason": "nici un motiv oferit",
        "whitelistedittext": "Trebuie să vă $1 pentru a putea modifica pagini.",
        "confirmedittext": "Trebuie să vă confirmați adresa de e-mail înainte de a edita pagini. Vă rugăm să vă setați și să vă validați adresa de e-mail cu ajutorul [[Special:Preferences|preferințelor utilizatorului]].",
        "accmailtext": "O parolă generată aleator pentru [[User talk:$1|$1]] a fost trimisă la $2. Parola poate fi schimbată după autentificare din pagina ''[[Special:ChangePassword|schimbare parolă]]''.",
        "newarticle": "(Nou)",
        "newarticletext": "Ați încercat să ajungeți la o pagină care nu există. Pentru a o crea, începeți să scrieți în caseta de mai jos (vedeți [$1 pagina de ajutor] pentru mai multe informații). Dacă ați ajuns aici din greșeală, întoarceți-vă folosind controalele navigatorului dumneavoastră.",
-       "anontalkpagetext": "---- ''Aceasta este pagina de discuții pentru un utilizator care nu și-a creat un cont încă, sau care nu s-a autentificat.\nDe aceea trebuie să folosim adresă IP pentru a identifica această persoană.\nO adresă IP poate fi folosită în comun de mai mulți utilizatori.\nDacă sunteți un astfel de utilizator și credeți că vă sunt adresate mesaje irelevante, vă rugăm să [[Special:CreateAccount|vă creați un cont]] sau să [[Special:UserLogin|vă autentificați]] pentru a evita confuzii cu alți utilizatori anonimi în viitor.''",
+       "anontalkpagetext": "----\n''Aceasta este pagina de discuții pentru un utilizator care încă nu și-a creat un cont sau care nu s-a autentificat.\nPrin urmare trebuie să folosim adresa IP pentru a identifica această persoană.\nO adresă IP poate fi folosită în comun de mai mulți utilizatori.\nDacă sunteți un astfel de utilizator și credeți că vă sunt adresate mesaje irelevante, vă rugăm să [[Special:CreateAccount|vă creați un cont]] sau să [[Special:UserLogin|vă autentificați]] pentru a evita confuzii cu alți utilizatori anonimi în viitor.''",
        "noarticletext": "Actualmente, această pagină este lipsită de conținut.\nPuteți [[Special:Search/{{PAGENAME}}|căuta titlul acestei pagini]] în alte pagini, puteți <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} căuta înregistrări în jurnalele relevante]\nsau puteți [{{fullurl:{{FULLPAGENAME}}|action=edit}} crea această pagină]</span>.",
        "noarticletext-nopermission": "Actualmente, această pagină este lipsită de conținut.\nPuteți [[Special:Search/{{PAGENAME}}|căuta acest titlu]] în alte pagini sau puteți <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} căuta înregistrări în jurnale]</span>; nu aveți însă permisiunea de a crea această pagină.",
        "missing-revision": "Versiunea nr. $1 a paginii „{{FULLPAGENAME}}” nu există.\n\nAcest lucru se întâmplă de obicei atunci când se accesează o legătură expirată către istoricul unei pagini șterse.\nDetalii se pot găsi în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jurnalul ștergerilor].",
        "userpage-userdoesnotexist": "Contul de utilizator „<nowiki>$1</nowiki>” nu este înregistrat.\nAsigurați-vă că doriți să creați/modificați această pagină.",
        "userpage-userdoesnotexist-view": "Contul de utilizator „$1” nu este înregistrat.",
        "blocked-notice-logextract": "Acest utilizator este momentan blocat.\nUltima intrare în jurnalul blocărilor este afișată mai jos pentru referință:",
-       "clearyourcache": "'''Notă:''' După salvare, trebuie să treceți peste memoria cache a navigatorului pentru a putea vedea modificările:\n* '''Firefox / Safari:''' țineți apăsat pe ''Shift'' în timp ce faceți clic pe ''Reîncărcare'', ori apăsați ''Ctrl-F5'' sau ''Ctrl-R'' (''⌘-R'' pe un sistem Mac);\n* '''Google Chrome:''' apăsați ''Ctrl-Shift-R'' (''⌘-Shift-R'' pe un sistem Mac);\n* '''Internet Explorer:''' țineți apăsat pe ''Ctrl'' în timp ce faceți clic pe ''Reîmprospătare'' sau apăsați ''Ctrl-F5'';\n* '''Opera:''' curățați memoria cache din ''Unelte → Preferințe''.",
+       "clearyourcache": "<strong>Notă:</strong> După salvare, trebuie să treceți peste memoria cache a navigatorului pentru a putea vedea modificările:\n* <strong>Firefox / Safari:</strong> țineți apăsat pe <em>Shift</em> în timp ce faceți clic pe <em>Reîncărcare</em> ori apăsați <em>Ctrl-F5</em> sau <em>Ctrl-R</em> (<em>⌘-R</em> pe un sistem Mac);\n* <strong>Google Chrome:</strong> apăsați <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> pe un sistem Mac);\n* <strong>Internet Explorer:</strong> țineți apăsat pe <em>Ctrl</em> în timp ce faceți clic pe ''Reîmprospătare'' sau apăsați <em>Ctrl-F5</em>;\n* <strong>Opera:</strong> Mergeți la <em>Meniu → Setări</em> (<em>Opera → Preferințe</em> pe un sistem Mac) și apoi la <em>Confidențialitate & securitate → Șterge istoricul de navigare → Imagini și fișiere memorate în cache</em>.",
        "usercssyoucanpreview": "'''Sfat:''' Folosiți butonul „{{int:showpreview}}” pentru a testa noul CSS înainte de a-l salva.",
        "userjsyoucanpreview": "'''Sfat:''' Folosiți butonul „{{int:showpreview}}” pentru a testa noul JavaScript înainte de a-l salva.",
        "usercsspreview": "'''Rețineți că vizualizați doar o previzualizare a CSS-ului dumneavoastră de utilizator.'''\n'''Acesta nu a fost încă salvat!'''",
        "previewnote": "'''Țineți cont că aceasta este doar o previzualizare.'''\nModificările dumneavoastră nu au fost încă salvate!",
        "continue-editing": "Mergi la zona de editare",
        "previewconflict": "Această pre-vizualizare reflectă textul din caseta de sus, respectiv felul în care va arăta articolul dacă alegeți să-l salvați acum.",
-       "session_fail_preview": "'''Ne pare rău! Nu am putut procesa modificarea dumneavoastră din cauza pierderii datelor sesiunii.\nVă rugăm să încercați din nou.\nDacă tot nu funcționează, încercați să [[Special:UserLogout|închideți sesiunea]] și să vă autentificați din nou.'''",
-       "session_fail_preview_html": "'''Ne pare rău! Modificările dvs. nu au putut fi procesate din cauza pierderii datelor sesiunii.'''\n\n''Deoarece {{SITENAME}} are activat HTML brut, previzualizarea este ascunsă ca măsură de precauție împotriva atacurilor JavaScript.''\n\n'''Dacă această încercare de modificare este legitimă, vă rugăm să încercați din nou. Dacă nu funcționează nici în acest fel, [[Special:UserLogout|închideți sesiunea]] și încearcați să vă autentificați din nou.'''",
+       "session_fail_preview": "Ne pare rău! Nu am putut procesa modificarea dumneavoastră din cauza pierderii datelor sesiunii.\n\nEste posibil să vă fi deconectat. <strong>Vă rugăm să verificați dacă sunteți încă conectat și să încercați din nou</strong>.\nDacă tot nu funcționează, încercați să [[Special:UserLogout|închideți sesiunea]] și să vă autentificați din nou. Verificați și dacă navigatorul dumneavoastră permite module cookie de la acest site.",
+       "session_fail_preview_html": "Ne pare rău! Modificările dvs. nu au putut fi procesate din cauza pierderii datelor sesiunii.\n\n<em>Deoarece {{SITENAME}} are activat HTML brut, previzualizarea este ascunsă ca măsură de precauție împotriva atacurilor JavaScript.</em>\n\n<strong>Dacă această încercare de modificare este legitimă, vă rugăm să încercați din nou. Dacă nu funcționează nici în acest fel, [[Special:UserLogout|închideți sesiunea]] și încercați să vă autentificați din nou. Verificați și dacă navigatorul dumneavoastră permite module cookie de la acest site</strong>.",
        "token_suffix_mismatch": "'''Modificarea ta a fost refuzată pentru că clientul tău a deformat caracterele de punctuatie în modificarea semnului.\nModificarea a fost respinsă pentru a preveni deformarea textului paginii.\nAcest fapt se poate întâmpla atunci când folosești un serviciu proxy anonim.'''",
        "edit_form_incomplete": "'''Unele părți ale formularului de modificare nu au ajuns la server; verificați dacă modificările dumneavoastră sunt intacte și reîncercați.'''",
        "editing": "Modificare „$1”",
        "editingsection": "modificare $1 (secțiune)",
        "editingcomment": "Modificare $1 (secțiune nouă)",
        "editconflict": "Conflict de modificare: $1",
-       "explainconflict": "Altcineva a modificat această pagină de când ați început editarea.\nZona de text din partea de sus conține pagina așa cum este ea acum (după editarea celeilalte persoane).\nModificările dumneavoastră sunt afișate în zona de text inferioară.\nVa trebui să vă uniți modificările cu textul deja existent.\n<strong>Doar</strong> textul din zona de text superioară va fi salvat atunci când veți apăsa „{{int:savearticle}}”.",
+       "explainconflict": "Altcineva a modificat această pagină de când ați început editarea.\nZona de text din partea de sus conține ultima versiune.\nModificările dumneavoastră sunt afișate în zona de text inferioară.\nVa trebui să integrați modificările în textul existent.\n<strong>Doar</strong> textul din zona superioară va fi salvat atunci când veți apăsa \"$1\".",
        "yourtext": "Textul dumneavoastră",
        "storedversion": "Versiunea curentă",
        "nonunicodebrowser": "'''Atenție: Navigatorul dumneavoastră nu este compatibil cu Unicode.'''\nÎn schimb, există o soluție care vă permite să modificați paginile în siguranță: caracterele non-ASCII vor fi afișate în caseta de editare drept coduri hexazecimale.",
        "readonlywarning": "<strong>Atenție: Baza de date a fost blocată pentru întreținere, deci nu veți putea salva modificările în acest moment.</strong>\nPuteți copia textul într-un fișier text, păstrându-l pentru mai târziu.\n\nAdministratorul de sistem care a efectuat blocarea a oferit următoarea explicație: $1",
        "protectedpagewarning": "'''Atenție: această pagină a fost protejată astfel încât poate fi modificată doar de către administratori.'''\nUltima intrare în jurnal este afișată mai jos pentru referință:",
        "semiprotectedpagewarning": "'''Observație: această pagină a fost protejată și poate fi modificată doar de către utilizatorii înregistrați.'''\nUltima intrare în jurnal este afișată mai jos pentru referință:",
-       "cascadeprotectedwarning": "<strong>Atenție:</strong> Această pagină a fost protejată, astfel încât numai administratorii o pot modifica, fiind inclusă în {{PLURAL:$1|următoarea pagină protejată|următoarele pagini protejate}} în cascadă:",
+       "cascadeprotectedwarning": "<strong>Atenție:</strong> Această pagină a fost protejată, astfel încât numai [[Special:ListGroupRights|utilizatori cu drepturi specifice]] o pot modifica, fiind inclusă în {{PLURAL:$1|următoarea pagină protejată|următoarele pagini protejate}} în cascadă:",
        "titleprotectedwarning": "'''Atenție: această pagină a fost protejată astfel încât doar anumiți [[Special:ListGroupRights|utilizatori]] o pot crea.'''\nUltima intrare în jurnal este afișată mai jos pentru referință:",
        "templatesused": "{{PLURAL:$1|Format folosit|Formate folosite}} în această pagină:",
        "templatesusedpreview": "{{PLURAL:$1|Format folosit|Formate folosite}} în această previzualizare:",
        "invalid-content-data": "Date de conținut invalide",
        "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.\nDacă sunteți autentificat, puteți dezactiva această avertizare în secțiunea „{{int:prefs-editing}}” a preferințelor dumneavoastră.",
+       "editpage-invalidcontentmodel-title": "Modelul de conținut nu este suportat",
+       "editpage-invalidcontentmodel-text": "Modelul de conținut \"$1\" nu este acceptat.",
        "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-model-wikitext": "wikitext",
        "content-model-css": "CSS",
        "content-json-empty-object": "Obiect vid",
        "content-json-empty-array": "Matrice vidă",
+       "deprecated-self-close-category": "Pagini care utilizează taguri HTML cu auto-închidere invalide",
+       "deprecated-self-close-category-desc": "Pagina conține taguri HTML auto-închise invalide, cum ar fi <code>&lt;b/></code> sau <code>&lt;span/></code>.  \nComportamentul acestora se va schimba în curând pentru a fi în concordanță cu specificația HTML5, astfel încât utilizarea lor în wikitext este depreciată.",
        "duplicate-args-warning": "<strong>Atenție:</strong> [[:$1]] apelează [[:$2]] cu mai mult de o valoare pentru parametrul „$3”. Se va lua în calcul doar ultima valoare specificată.",
        "duplicate-args-category": "Pagini care folosesc argumente duplicate în apelarea formatelor",
        "duplicate-args-category-desc": "Pagina conține apelări ale formatelor care folosesc argumente duplicate, cum ar fi <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> sau <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "post-expand-template-argument-warning": "Atenție: Această pagină conține cel puțin un argument al unui format care are o mărime prea mare atunci când este expandat.\nAcsete argumente au fost omise.",
        "post-expand-template-argument-category": "Pagini care conțin formate cu argumente omise",
        "parser-template-loop-warning": "Buclă de formate detectată: [[$1]]",
+       "template-loop-category": "Pagini cu bucle de formate",
+       "template-loop-category-desc": "Pagina conține o buclă de șabloane, adică un șablon care se autoapelează recursiv.",
        "parser-template-recursion-depth-warning": "Limită de adâncime a recursiei depășită ($1)",
        "language-converter-depth-warning": "Limita adâncimii convertorului de limbă a fost depășită ($1)",
        "node-count-exceeded-category": "Pagini unde numărul de noduri este depășit",
        "page_first": "prima",
        "page_last": "ultima",
        "histlegend": "Legendă: (actuală) = diferențe față de versiunea curentă,\n(prec) = diferențe față de versiunea precedentă, M = modificare minoră",
-       "history-fieldset-title": "Răsfoire istoric",
-       "history-show-deleted": "Doar șterse",
+       "history-fieldset-title": "Caută versiuni anterioare",
+       "history-show-deleted": "Doar versiuni șterse",
        "histfirst": "cele mai vechi",
        "histlast": "cele mai noi",
        "historysize": "({{PLURAL:$1|1 octet|$1 octeți|$1 de octeți}})",
        "mergehistory-fail-no-change": "Unificarea istoricului nu a unit nicio versiune. Verificați din nou pagina și parametrii temporali.",
        "mergehistory-fail-permission": "Permisiuni insuficiente pentru a uni istoricul.",
        "mergehistory-fail-self-merge": "Paginile sursă și destinație sunt identice.",
+       "mergehistory-fail-timestamps-overlap": "Revizuirile sursă se suprapun sau vin după revizuirile destinației.",
        "mergehistory-fail-toobig": "Nu s-a putut efectua unirea istoricelor întrucât s-ar fi depășit limita de $1 {{PLURAL:$1|versiune|versiuni|de versiuni}} mutat{{PLURAL:$1|ă|e}}.",
        "mergehistory-no-source": "Pagina sursă $1 nu există.",
        "mergehistory-no-destination": "Pagina de destinație $1 nu există.",
        "search-file-match": "(se regăsește în conținutul fișierului)",
        "search-suggest": "V-ați referit la: $1",
        "search-rewritten": "Se afișează rezultatele pentru $1. Căutați, în schimb, după $2.",
-       "search-interwiki-caption": "Proiecte înrudite",
+       "search-interwiki-caption": "Rezultate din proiecte înrudite",
        "search-interwiki-default": "Rezultate de la $1:",
        "search-interwiki-more": "(mai mult)",
+       "search-interwiki-more-results": "Mai multe rezultate",
        "search-relatedarticle": "Relaționat",
        "searchrelated": "relaționat",
        "searchall": "toate",
        "search-external": "Căutare externă",
        "searchdisabled": "<p>Ne pare rău! Căutarea după text a fost dezactivată temporar, din motive de performanță. Între timp puteți folosi căutarea prin Google mai jos, însă aceasta poate să dea rezultate învechite.</p>",
        "search-error": "A apărut o eroare în timpul căutării: $1",
+       "search-warning": "A apărut o eroare în timpul căutării: $1",
        "preferences": "Preferințe",
        "mypreferences": "Preferințe",
        "prefs-edits": "Număr de modificări:",
        "prefs-help-recentchangescount": "Sunt incluse schimbările recente, istoricul paginilor și jurnalele.",
        "prefs-help-watchlist-token2": "Aceasta este cheia secretă pentru fluxul web al listei dumneavoastră de pagini urmărite.\nOricine o cunoaște vă va putea citi lista de pagini urmărite, așa că n-o partajați cu nimeni.\n[[Special:ResetTokens|Faceți clic aici dacă doriți să o resetați]].",
        "savedprefs": "Preferințele dumneavoastră au fost salvate.",
-       "savedrights": "Drepturile utilizatorului {{GENDER:$1|$1}} au fost salvate.",
+       "savedrights": "Grupurile utilizatorului {{GENDER:$1|$1}} au fost salvate.",
        "timezonelegend": "Fus orar:",
        "localtime": "Ora locală:",
        "timezoneuseserverdefault": "Folosește ora implicită a wikiului ($1)",
        "youremail": "Adresă de e-mail:",
        "username": "{{GENDER:$1|Nume de utilizator}}:",
        "prefs-memberingroups": "{{GENDER:$2|Membru|Membră}} în {{PLURAL:$1|grupul|grupurile}}:",
+       "group-membership-link-with-expiry": "$1 (până la $2)",
        "prefs-registration": "Data înregistrării:",
        "yourrealname": "Nume real:",
        "yourlanguage": "Interfață în limba:",
        "prefs-help-prefershttps": "Această preferință va avea efect la următoarea autentificare.",
        "prefswarning-warning": "Ați efectuat modificări asupra preferințelor dumneavoastră, care nu au fost încă salvate.\nDacă părăsiți această pagină fără a apăsa butonul „$1”, preferințele dumnevoastră nu se vor actualiza.",
        "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.",
-       "userrights": "Administrare permisiuni de utilizator",
-       "userrights-lookup-user": "Administrare grupuri de utilizatori",
+       "userrights": "Permisiuni utilizator",
+       "userrights-lookup-user": "Selectați un utilizator",
        "userrights-user-editname": "Introduceți un nume de utilizator:",
-       "editusergroup": "Modificare grup de {{GENDER:$1|utilizatori}}",
+       "editusergroup": "Încărcare grupuri utilizatori",
        "editinguser": "Modificarea permisiunilor de {{GENDER:$1|utilizator}} pentru <strong>[[User:$1|$1]]</strong> $2",
-       "userrights-editusergroup": "Modificare grup de utilizatori",
+       "viewinguserrights": "Vizualizarea permisiunilor de utilizator ale {{GENDER:$1|utilizatorului|utilizatoarei}} <strong>[[User:$1|$1]]</strong> $2",
+       "userrights-editusergroup": "Modificare grupuri {{GENDER:$1|utilizator}}",
+       "userrights-viewusergroup": "Vezi grupurile {{GENDER:$1|utilizatorului|utilizatoarei}}",
        "saveusergroups": "Salvează grupul de {{GENDER:$1|utilizatori}}",
        "userrights-groupsmember": "Membru al:",
        "userrights-groupsmember-auto": "Membru, implicit, al:",
-       "userrights-groups-help": "Puteți schimba grupul căruia îi aparține utilizatorul:\n*Căsuța bifată înseamnă că utilizatorul aparține grupului respectiv.\n*Căsuța nebifată înseamnă că utilizatorul nu aparține grupului respectiv.\n*Steluța (*) indică faptul că utilizatorul nu poate fi eliminat din grup odată adăugat, sau invers.",
+       "userrights-groups-help": "Puteți schimba grupul căruia îi aparține utilizatorul:\n*Căsuța bifată înseamnă că utilizatorul aparține grupului respectiv.\n*Căsuța nebifată înseamnă că utilizatorul nu aparține grupului respectiv.\n*Steluța (*) indică faptul că utilizatorul nu poate fi eliminat din grup odată adăugat, sau invers.\n* (#) indică faptul că puteti modifica data de expirare in trecut pentru acest grup o singură datăș data poate fi modificată doar in viitor.",
        "userrights-reason": "Motiv:",
        "userrights-no-interwiki": "Nu aveți permisiunea de a modifica permisiunile utilizatorilor pe alte wiki.",
        "userrights-nodatabase": "Baza de date $1 nu există sau nu este locală.",
        "userrights-changeable-col": "Grupuri pe care le puteți schimba",
        "userrights-unchangeable-col": "Grupuri pe care nu le puteți schimba",
+       "userrights-expiry-current": "Expiră pe $1",
+       "userrights-expiry-none": "Nu expiră",
+       "userrights-expiry": "Expiră:",
+       "userrights-expiry-existing": "Data expirării: $2, $3",
+       "userrights-expiry-othertime": "Alt termen:",
+       "userrights-expiry-options": "1 oră:1 hour, 1 zi:1 day, 1 săptămână:1 week, 1 lună:1 month, 3 luni:3 months, 6 luni:6 months, 1 an:1 year",
+       "userrights-invalid-expiry": "Timpul de expirare pentru grupul \"$1\" este invalid",
+       "userrights-expiry-in-past": "Timpul de expirare pentru grupul \"$1\" este în trecut",
+       "userrights-cannot-shorten-expiry": "Nu puteți să evidențiați data de expirare a calității de membru în grupul \"$1\". Numai utilizatorii cu permisiunea de a adăuga și elimina acest grup pot aduce timpii de expirare înainte.",
        "userrights-conflict": "Conflict al schimbării drepturilor de utilizator! Reverificați și confirmați-vă modificările.",
        "group": "Grup:",
        "group-user": "Utilizatori",
        "right-createpage": "Creează pagini (altele decât pagini de discuție)",
        "right-createtalk": "Creează pagini de discuție",
        "right-createaccount": "Creează conturi noi",
+       "right-autocreateaccount": "Conectați-vă cu un cont extern de utilizator",
        "right-minoredit": "Marchează modificările minore",
        "right-move": "Redenumește paginile",
        "right-move-subpages": "Redenumește paginile cu tot cu subpagini",
        "right-editsemiprotected": "Modifică pagini protejate ca „{{int:protect-level-autoconfirmed}}”",
        "right-editcontentmodel": "Modifică modelul de conținut al unei pagini",
        "right-editinterface": "Modifică interfața cu utilizatorul",
-       "right-editusercssjs": "Modifică fișierele CSS și JS ale altor utilizatori",
        "right-editusercss": "Modifică fișierele CSS ale altor utilizatori",
        "right-edituserjs": "Modifică fișierele JS ale altor utilizatori",
        "right-editmyusercss": "Modificați-vă propriile fișiere CSS",
        "grant-generic": "set de permisiuni „$1”",
        "grant-group-page-interaction": "Interacționează cu paginile",
        "grant-group-file-interaction": "Interacționează cu conținut media",
+       "grant-group-watchlist-interaction": "Interacționează cu lista de urmăriri",
        "grant-group-email": "Trimite e-mail",
+       "grant-group-high-volume": "Efectuați activitate de volum mare",
+       "grant-group-customization": "Personalizare și preferințe",
+       "grant-group-administration": "Efectuați acțiuni administrative",
+       "grant-group-private-information": "Accesați date confidențiale despre dv.",
+       "grant-group-other": "Activități diverse",
+       "grant-blockusers": "Blocare și deblocare utilizatori",
        "grant-createaccount": "Creare conturi",
        "grant-createeditmovepage": "Creează, editează și redenumește pagini",
+       "grant-delete": "Șterge pagini, revizii și loguri",
+       "grant-editinterface": "Editați spațiul de nume MediaWiki și CSS/JavaScript de utilizator",
+       "grant-editmycssjs": "Editați CSS/JavaScript ale contului dv.",
+       "grant-editmyoptions": "Modificați-vă preferințele de utilizator",
+       "grant-editmywatchlist": "Modificați-vă lista de pagini urmărite",
+       "grant-editpage": "Editați pagini existente",
+       "grant-editprotected": "Editați pagini protejate",
        "grant-highvolume": "Volum mare de editare",
        "grant-oversight": "Ascunde utilizatori și suprimă versiuni",
        "grant-patrol": "Patrulează schimbările paginilor",
+       "grant-privateinfo": "Accesați informații confidențiale",
+       "grant-protect": "Protejați și deprotejați pagini",
+       "grant-rollback": "Reveniți asupra modificărilor paginilor",
+       "grant-sendemail": "Trimite-ți e-mail altor utilizatori",
+       "grant-uploadeditmovefile": "Încărcați, înlocuiți și mutați fișiere",
+       "grant-uploadfile": "Încărcați fișiere noi",
        "grant-basic": "Drepturi de bază",
+       "grant-viewdeleted": "Vizualizați fișierele și paginile șterse",
        "grant-viewmywatchlist": "Vezi lista de pagini urmărite",
+       "grant-viewrestrictedlogs": "Vedeți intrările restricționate din jurnal",
        "newuserlogpage": "Jurnal utilizatori noi",
        "newuserlogpagetext": "Acesta este jurnalul creărilor conturilor de utilizator.",
        "rightslog": "Jurnal permisiuni de utilizator",
        "action-createpage": "creați această pagină",
        "action-createtalk": "creați această pagină de discuție",
        "action-createaccount": "creați acest cont de utilizator",
+       "action-autocreateaccount": "Creați automat acest cont extern de utilizator",
        "action-history": "vizualizați istoricul acestei pagini",
        "action-minoredit": "marcați această modificare ca minoră",
        "action-move": "redenumiți această pagină",
        "action-upload_by_url": "încărcați acest fișier de la o adresă URL",
        "action-writeapi": "utilizați scrierea prin API",
        "action-delete": "ștergeți această pagină",
-       "action-deleterevision": "ștergeți această versiune",
+       "action-deleterevision": "ștergeți versiunile",
        "action-deletelogentry": "ștergeți înregistrări din jurnal",
        "action-deletedhistory": "vizualizați istoricul șters a unei pagini",
        "action-deletedtext": "vizualizați textul versiunii șterse",
        "action-userrights-interwiki": "modificați permisiunile utilizatorilor de pe alte wiki",
        "action-siteadmin": "blocați sau deblocați baza de date",
        "action-sendemail": "trimite e-mailuri",
+       "action-editmyoptions": "Modificați-vă preferințele",
        "action-editmywatchlist": "vă modificați lista de pagini urmărite",
        "action-viewmywatchlist": "vă vizualizați lista de pagini urmărite",
        "action-viewmyprivateinfo": "vă vizualizați informațiile personale",
        "action-applychangetags": "aplicați etichete asociate modificărilor dumneavoastră",
        "action-changetags": "adăugați și să înlăturați etichete arbitrare din versiuni și intrări de jurnal individuale",
        "action-deletechangetags": "ștergeți etichete din baza de date",
+       "action-purge": "curățați cache-ul acestei pagini",
        "nchanges": "$1 {{PLURAL:$1|modificare|modificări|de modificări}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|de la ultima vizită}}",
        "enhancedrc-history": "istoric",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vedeți și [[Special:NewPages|lista cu pagini noi]])",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Afișează",
+       "rcfilters-activefilters": "Filtre active",
+       "rcfilters-quickfilters": "Legături rapide",
+       "rcfilters-savedqueries-defaultlabel": "Filtre salvate",
+       "rcfilters-savedqueries-rename": "Redenumește",
+       "rcfilters-savedqueries-setdefault": "Setează ca predefinit",
+       "rcfilters-savedqueries-unsetdefault": "Eliminați ca implicit",
+       "rcfilters-savedqueries-remove": "Elimină",
+       "rcfilters-savedqueries-new-name-label": "Nume",
+       "rcfilters-savedqueries-apply-label": "Crează un link rapid",
+       "rcfilters-savedqueries-cancel-label": "Anulare",
+       "rcfilters-savedqueries-add-new-title": "Salvați filtrele ca un link rapid",
+       "rcfilters-restore-default-filters": "Restaurați filtrele prestabilite",
+       "rcfilters-clear-all-filters": "Ștergeți toate filtrele",
+       "rcfilters-search-placeholder": "Filtrați modificările recente (răsfoiți sau începeți să tastați)",
+       "rcfilters-invalid-filter": "Filtru invalid",
+       "rcfilters-empty-filter": "Nu există filtre active. Toate contribuțiile sunt afișate.",
+       "rcfilters-filterlist-title": "Filtre",
+       "rcfilters-filterlist-whatsthis": "Ce este aceasta?",
+       "rcfilters-filterlist-feedbacklink": "Oferiți feedback cu privire la noile filtre (beta)",
+       "rcfilters-highlightbutton-title": "Evidențiați rezultatele",
+       "rcfilters-highlightmenu-title": "Selectați o culoare",
+       "rcfilters-highlightmenu-help": "Selectați o culoare pentru a evidenția această proprietate",
+       "rcfilters-filterlist-noresults": "Nu s-a găsit niciun filtru",
+       "rcfilters-noresults-conflict": "Nu s-au găsit rezultate deoarece criteriile de căutare sunt în conflict",
+       "rcfilters-state-message-subset": "Acest filtru nu are efecte deoarece rezultatele sale sunt incluse în filtrele cu selectie mai largă {{PLURAL:$2|filtru|filtre}} (încercați să subliniați pentru a o deosebi): $1",
+       "rcfilters-state-message-fullcoverage": "Selectarea tuturor filtrelor dintr-un grup este aceeași cu cea selectată, astfel încât acest filtru nu are efect. Grupul include: $1",
+       "rcfilters-filtergroup-registration": "Înregistrare utilizator",
+       "rcfilters-filter-registered-label": "Înregistrat",
+       "rcfilters-filter-registered-description": "Editorii conectați.",
+       "rcfilters-filter-unregistered-label": "Neînregistrat",
+       "rcfilters-filter-unregistered-description": "Editorii care nu sunt conectați.",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "Acest filtru contravine {{PLURAL:$2|filtru|filtre}} de Experiență, care {{PLURAL:$2|găsesc|gasește}} doar userii inreistrați: $1",
+       "rcfilters-filtergroup-authorship": "Contribuția autorului",
+       "rcfilters-filter-editsbyself-label": "Modificările tale",
+       "rcfilters-filter-editsbyself-description": "Contribuțiile tale.",
+       "rcfilters-filter-editsbyother-label": "Contribuțiile altora",
+       "rcfilters-filter-editsbyother-description": "Toate modificările mai puțin ale tale.",
+       "rcfilters-filtergroup-userExpLevel": "Nivel de experiență (numai pentru utilizatorii înregistrați)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Filtrele Experiență găsesc numai utilizatori înregistrați, deci acest filtru este în conflict cu filtrul \"Înregistrat\".",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filtrul \"Înregistrat\" ​​este în conflict cu unul sau mai multe filtre Experiență, care găsește numai utilizatorii înregistrați. Filtrele conflictuale sunt marcate în zona Filtre active, de mai sus.",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Nou veniți",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Mai puțin de 10 editări și 4 zile de activitate.",
+       "rcfilters-filter-user-experience-level-learner-label": "Cursanți",
+       "rcfilters-filter-user-experience-level-learner-description": "Mai multă experiență decât \"Noi veniți\" dar mai puțină decât \"Useri experimentați\".",
+       "rcfilters-filter-user-experience-level-experienced-label": "Utilizatori experimentați",
+       "rcfilters-filter-user-experience-level-experienced-description": "Mai mult de 30 de zile de activitate și 500 de editări.",
+       "rcfilters-filtergroup-automated": "Contribuții automate",
+       "rcfilters-filter-bots-label": "Robot",
+       "rcfilters-filter-bots-description": "Modificări făcute cu unelte automate.",
+       "rcfilters-filter-humans-label": "Om (nu robot)",
+       "rcfilters-filter-humans-description": "Modificări făcute de oameni.",
+       "rcfilters-filtergroup-reviewstatus": "Revizuiți starea",
+       "rcfilters-filter-patrolled-label": "Patrulate",
+       "rcfilters-filter-patrolled-description": "Editări marcate ca patrulate.",
+       "rcfilters-filter-unpatrolled-label": "Nepatrulate",
+       "rcfilters-filter-unpatrolled-description": "Modificări marcate ca nepatrulate.",
+       "rcfilters-filtergroup-significance": "Semnificație",
+       "rcfilters-filter-minor-label": "Modificări minore",
+       "rcfilters-filter-minor-description": "Modificări pe care autorul le-a marcat ca fiind minore.",
+       "rcfilters-filter-major-label": "Modificări non-minore",
+       "rcfilters-filter-major-description": "Modificări care nu sunt etichetate ca minore.",
+       "rcfilters-filtergroup-watchlist": "Pagini urmărite de dv.",
+       "rcfilters-filter-watchlist-watched-label": "Listă de urmărire",
+       "rcfilters-filter-watchlist-watched-description": "Modificări are paginilor urmărite de dv.",
+       "rcfilters-filter-watchlist-watchednew-label": "Modificari ale listei urmărite de dv.",
+       "rcfilters-filter-watchlist-watchednew-description": "Modificările paginilor care nu au fost vizitate de la efectuarea modificărilor.",
+       "rcfilters-filter-watchlist-notwatched-label": "Care nu sunt pe lista urmărită de dv.",
+       "rcfilters-filter-watchlist-notwatched-description": "Totul, cu excepția modificărilor aduse paginilor dvs. vizionate.",
+       "rcfilters-filtergroup-changetype": "Tipul modificării",
+       "rcfilters-filter-pageedits-label": "Editări ale paginii",
+       "rcfilters-filter-pageedits-description": "Editări ale conținutului wiki, discuții, descrieri de categorii...",
+       "rcfilters-filter-newpages-label": "Creare de pagini",
+       "rcfilters-filter-newpages-description": "Modificări care creează pagini noi.",
+       "rcfilters-filter-categorization-label": "Modificări de categorie",
+       "rcfilters-filter-categorization-description": "Înregistrări ale paginilor adăugate sau eliminate din categorii.",
+       "rcfilters-filter-logactions-label": "Acțiuni logate",
+       "rcfilters-filter-logactions-description": "Acțiuni administrative, creare de conturi, ștergere de pagini, încărcări...",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "Filtrul \"Modificări minore\" se află în conflict cu unul sau mai multe filtre de tipul \"Modificare\", deoarece anumite tipuri de schimbări nu pot fi desemnate ca \"minore\". Filtrele conflictuale sunt marcate în zona Filtre Active, de mai sus.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Anumite tipuri de schimbări nu pot fi desemnate ca fiind \"minore\", astfel că acest filtru este în conflict cu următoarele filtre de Tip de schimbare: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Acest tip de filtrare a tipului de schimbare este în conflict cu filtrul \"Modificări minore\". Anumite tipuri de schimbări nu pot fi desemnate ca fiind \"minore\".",
+       "rcfilters-filtergroup-lastRevision": "Ultima revizie",
+       "rcfilters-filter-lastrevision-label": "Ultima revizie",
+       "rcfilters-filter-lastrevision-description": "Cea mai recentă modificare a unei pagini.",
+       "rcfilters-filter-previousrevision-label": "Versiuni recente",
+       "rcfilters-filter-previousrevision-description": "Toate modificările care nu sunt cea mai recentă modificare a unei pagini.",
        "rcnotefrom": "Dedesubt {{PLURAL:$5|se află o modificare|sunt modificările}} începând cu <b>$3, $4</b> (maximum <b>$1</b> afișate).",
+       "rclistfromreset": "Resetați selectarea datei",
        "rclistfrom": "Afișează modificările începând cu $3, ora $2",
        "rcshowhideminor": "$1 modificările minore",
        "rcshowhideminor-show": "Arată",
        "rcshowhidecategorization": "$1 categorisirea paginilor",
        "rcshowhidecategorization-show": "Arată",
        "rcshowhidecategorization-hide": "Ascunde",
-       "rclinks": "Se arată ultimele $1 modificări din ultimele $2 zile.<br />\n$3",
+       "rclinks": "Se arată ultimele $1 modificări din ultimele $2 zile.",
        "diff": "dif",
        "hist": "ist",
        "hide": "Ascunde",
        "file-thumbnail-no": "Numele fișierului începe cu <strong>$1</strong>.\nSe pare că este o imagine cu dimensiune redusă''(thumbnail)''.\nDacă ai această imagine la rezoluție mare încarc-o pe aceasta, altfel schimbă numele fișierului.",
        "fileexists-forbidden": "Un fișier cu acest nume există deja și nu poate fi rescris.\nMergeți înapoi și încărcați acest fișier sub un nume nou. [[File:$1|thumb|center|$1]]",
        "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]]",
+       "fileexists-no-change": "Încărcarea este un duplicat exact al versiunii curente <strong>[[:$1]]</strong>.",
+       "fileexists-duplicate-version": "Încărcarea este un duplicat exact al {{PLURAL:$2|versiunii vechi|versiunilor vechi}} a <strong>[[:$1]]</strong>.",
        "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.\nAr 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.",
        "php-uploaddisabledtext": "Încărcarea de fișiere este dezactivată în PHP.\nVă rugăm să verificați setările din file_uploads.",
        "uploadscripted": "Fișierul conține HTML sau cod script care poate fi interpretat în mod eronat de un browser.",
        "upload-scripted-pi-callback": "Nu se poate încărca un fișier care conține instrucțiuni de procesare a foii de stil XML.",
+       "upload-scripted-dtd": "Nu se pot încărca fișiere SVG care conțin o declarație DTD neconformă cu standardul.",
        "uploaded-script-svg": "S-a găsit elementul „$1” scriptabil în fișierul SVG încărcat.",
        "uploaded-hostile-svg": "S-a descoperit CSS vulnerabil în elementul de stil al fișierului SVG încărcat.",
        "uploaded-event-handler-on-svg": "Setarea atributelor <code>$1=„$2”</code> de gestionare a evenimentului nu este permisă pentru fișierele SVG.",
-       "uploaded-href-unsafe-target-svg": "S-a găsit href către o destinație nesigură <code>&lt;$1 $2=„$3”&gt;</code> în fișierul SVG încărcat.",
+       "uploaded-href-attribute-svg": "Atributele href din fișierele SVG au permisiunea de a se conecta numai la adrese destinație http:// sau https://, dar a fost găsit <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-href-unsafe-target-svg": "S-a găsit href către informații nesigure: destinație URI <code>&lt;$1 $2=„$3”&gt;</code> în fișierul SVG încărcat.",
        "uploaded-animate-svg": "S-a găsit în fișierul SVG încărcat eticheta „animate” care ar putea modifica valoarea href folosind atributul „from” <code>&lt;$1 $2=„$3”&gt;</code>.",
        "uploaded-setting-event-handler-svg": "Setarea atributelor de gestionare a evenimentului nu este permisă; s-a găsit <code>&lt;$1 $2=„$3”&gt;</code> în fișierul SVG încărcat.",
        "uploaded-setting-href-svg": "Este blocată utilizarea etichetei „set” pentru a adăuga atributul „href” în elementul-părinte.",
        "upload-too-many-redirects": "URL-ul conținea prea multe redirecționări",
        "upload-http-error": "A avut loc o eroare HTTP: $1",
        "upload-copy-upload-invalid-domain": "Încărcarea copiilor nu este disponibilă pentru acest domeniu.",
+       "upload-foreign-cant-upload": "Acest wiki nu este configurat pentru a încărca fișiere în depozitul  de fișiere străin solicitat.",
        "upload-dialog-title": "Încărcare fișier",
        "upload-dialog-button-cancel": "Revocare",
+       "upload-dialog-button-back": "Înapoi",
        "upload-dialog-button-done": "Realizat",
        "upload-dialog-button-save": "Salvare",
        "upload-dialog-button-upload": "Încarcă",
        "backend-fail-read": "Imposibil de citit fișierul $1.",
        "backend-fail-create": "Imposibil de scris fișierul $1.",
        "backend-fail-maxsize": "Nu s-a putut scrie fișierul $1 pentru că acesta este mai mare de {{PLURAL:$2|un octet|$2 octeți|$2 de octeți}}.",
-       "backend-fail-readonly": "Suportul de stocare „$1” este în prezent doar în citire. Motivul dat este: „''$2''”",
+       "backend-fail-readonly": "Suportul de stocare \"$1\" este în prezent doar în citire. Motivul dat este: <em>$2</em>",
        "backend-fail-synced": "Fișierul „$1” este într-o stare de inconsistență în suporturile de stocare internă",
        "backend-fail-connect": "Imposibil de conectat la suportul de stocare „$1”.",
        "backend-fail-internal": "O eroare necunoscută s-a produs în suportul de stocare „$1”.",
        "uploadstash-summary": "Această pagină oferă acces la fișierele care sunt încărcate sau sunt în curs de încărcare, dar nu sunt încă publicate pe wiki. Aceste fișiere nu sunt vizibile nimănui, cu excepția celui care le-a încărcat.",
        "uploadstash-clear": "Șterge fișierele din depozitul temporar",
        "uploadstash-nofiles": "Nu aveți fișiere în depozitul temporar.",
-       "uploadstash-badtoken": "Execuția acestei acțiuni nu a reușit, probabil deoarece informațiile dumneavoastră de identificare au expirat. Încercați din nou.",
+       "uploadstash-badtoken": "Execuția acestei acțiuni nu a reușit, probabil deoarece informațiile dumneavoastră de identificare au expirat. Vă rugăm să încercați din nou.",
        "uploadstash-errclear": "Golirea fișierelor nu a reușit.",
        "uploadstash-refresh": "Reîmprospătează lista de fișiere",
        "uploadstash-thumbnail": "arată miniatura",
        "filerevert-submit": "Revenire",
        "filerevert-success": "'''[[Media:$1|$1]]''' a fost readus [la versiunea $4 din $3, $2].",
        "filerevert-badversion": "Nu există o versiune mai veche a fișierului care să corespundă cu data introdusă.",
+       "filerevert-identical": "Versiunea curentă a fișierului este identică cu cea selectată.",
        "filedelete": "Șterge $1",
        "filedelete-legend": "Șterge fișierul",
        "filedelete-intro": "Sunteți pe cale să ștergeți fișierul '''[[Media:$1|$1]]''' cu tot istoricul acestuia.",
        "apisandbox-sending-request": "Se trimite solicitarea API...",
        "apisandbox-loading-results": "Se obțin rezultatele API...",
        "apisandbox-results-error": "A apărut o eroare la încărcarea răspunsului solicitării API: $1.",
+       "apisandbox-request-selectformat-label": "Afișați datele de solicitare ca:",
        "apisandbox-request-url-label": "URL cerere:",
        "apisandbox-request-time": "Durata cererii: {{PLURAL:$1|$1 ms}}",
        "apisandbox-results-fixtoken": "Corectează jetonul și retrimite",
        "apisandbox-alert-page": "Câmpurile de pe această pagină nu sunt valide.",
        "apisandbox-alert-field": "Valoare acestui câmp nu este validă.",
        "apisandbox-continue": "Continuă",
+       "apisandbox-continue-clear": "Curăță",
+       "apisandbox-multivalue-all-namespaces": "$1 (Toate namespaces)",
+       "apisandbox-multivalue-all-values": "$1 (Toate valorile)",
        "booksources": "Surse de cărți",
        "booksources-search-legend": "Căutare surse pentru cărți",
        "booksources-search": "Caută",
        "booksources-text": "Mai jos se află o listă de legături înspre alte situri care vând cărți noi sau vechi și care pot oferi informații suplimentare despre cărțile pe care le căutați:",
        "booksources-invalid-isbn": "Codul ISBN oferit nu este valid; verificați dacă a fost copiat corect de la sursa originală.",
+       "magiclink-tracking-rfc": "Pagini ce folosesc legături automate către RFC",
+       "magiclink-tracking-pmid": "Pagini ce folosesc legături automate către PMID",
+       "magiclink-tracking-isbn": "Pagini ce folosesc legături automate către ISBN",
        "specialloguserlabel": "Executant:",
        "speciallogtitlelabel": "Destinație (titlu sau {{ns:user}}:numeutilizator pentru utilizator):",
        "log": "Jurnale",
        "undeleteviewlink": "vezi",
        "undeleteinvert": "Exclude spațiul",
        "undeletecomment": "Motiv:",
-       "undeletedrevisions": "{{PLURAL:$1|o versiune restaurată|$1 versiuni restaurate|$1 de versiuni restaurate}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|O versiune|$1 versiuni|$1 de versiuni}} și {{PLURAL:$2|un fișier|$2 fișiere|$2 de fișiere}} recuperate",
-       "undeletedfiles": "{{PLURAL:$1|O versiune recuperată|$1 versiuni recuperate|$1 de versiuni recuperate}}",
        "cannotundelete": "Recuperarea a eșuat:\n$1",
        "undeletedpage": "'''$1 a fost recuperat'''\n\nConsultați [[Special:Log/delete|jurnalul ștergerilor]] pentru a vedea toate ștergerile și recuperările recente.",
        "undelete-header": "Consultați [[Special:Log/delete|jurnalul de ștergeri]] pentru paginile șterse recent.",
        "unblocked-id": "Blocarea $1 a fost eliminată",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] a fost deblocat.",
        "blocklist": "Utilizatori blocați",
+       "autoblocklist": "Blocări automate",
+       "autoblocklist-submit": "Caută",
+       "autoblocklist-empty": "Lista blocărilor automate este goală.",
        "ipblocklist": "Utilizatori blocați",
        "ipblocklist-legend": "Găsire utilizator blocat",
        "blocklist-userblocks": "Ascunde conturile blocate",
        "tooltip-ca-nstab-category": "Vezi categoria",
        "tooltip-minoredit": "Marchează această modificare ca fiind minoră",
        "tooltip-save": "Salvați modificările dumneavoastră",
+       "tooltip-publish": "Publică modificările tale",
        "tooltip-preview": "Previzualizați-vă modificările. Vă rugăm să faceți acest lucru înainte de a salva pagina.",
        "tooltip-diff": "Afișează modificările pe care le-ați efectuat asupra textului",
        "tooltip-compareselectedversions": "Vezi diferențele între cele două versiuni selectate de pe această pagină.",
        "pageinfo-length": "Lungimea paginii (în octeți)",
        "pageinfo-article-id": "ID pagină",
        "pageinfo-language": "Limba conținutului paginii",
+       "pageinfo-language-change": "modificare",
        "pageinfo-content-model": "Modelul conținutului paginii",
+       "pageinfo-content-model-change": "modificare",
        "pageinfo-robot-policy": "Indexare de către roboți",
        "pageinfo-robot-index": "Permisă",
        "pageinfo-robot-noindex": "Nepermisă",
        "pageinfo-category-pages": "Număr de pagini",
        "pageinfo-category-subcats": "Număr de subcategorii",
        "pageinfo-category-files": "Număr de fișiere",
+       "pageinfo-user-id": "ID utilizator",
        "markaspatrolleddiff": "Marchează pagina ca verificată",
        "markaspatrolledtext": "Marchează această pagină ca verificată",
        "markaspatrolledtext-file": "Marchează această versiune a fișierului ca verificată",
        "patrol-log-header": "Aceasta este o listă a tuturor versiunilor marcate ca verificate.",
        "log-show-hide-patrol": "$1 jurnalul versiunilor verificate",
        "log-show-hide-tag": "$1 jurnal etichete",
+       "confirm-markpatrolled-button": "OK",
        "deletedrevision": "A fost ștearsă vechea versiune $1.",
        "filedeleteerror-short": "Eroare la ștergerea fișierului: $1",
        "filedeleteerror-long": "Au apărut erori când se încerca ștergerea fișierului:\n\n$1",
index 5f1c62e..d6f2b73 100644 (file)
        "redirectedfrom": "(Riderette da $1)",
        "redirectpagesub": "Pàgene de redirezione",
        "redirectto": "Redirezione sus a:",
-       "lastmodifiedat": "Sta pàgene a state cangete l'urtema vote da $1, alle $2.",
+       "lastmodifiedat": "Sta pàgene ha state cangiate l'urtema vote 'u $1, a le $2.",
        "viewcount": "Sta pàggene ha state viste {{PLURAL:$1|'na vote|$1 vote}}.",
        "protectedpage": "Pàgene prutette",
        "jumpto": "Zumbe a:",
        "preview": "Andeprime",
        "showpreview": "Vide l'andeprime",
        "showdiff": "Fa vedè le cangiaminde",
-       "blankarticle": "<strong>Attenziò:</strong> 'A pàgene ca ste ccreje jè vianghe.\nCe cazze \"{{int:savearticle}}\" arrete, 'a pàgene avène ccrejate vacande.",
+       "blankarticle": "<strong>Attenziò:</strong> 'A pàgene ca ste ccreje jè vianghe.\nCe cazze \"$1\" arrete, 'a pàgene avène ccrejate vacande.",
        "anoneditwarning": "<strong>Attenziò:</strong> Tu non ge sì collegate..\nL'indirizze IP tune avène fatte vedè ce te face de le cangiaminde. Ce tu <strong>[$1 trase]</strong> o <strong>[$2 ccreje 'nu cunde utende]</strong>, le cangiaminde tune avènene attribbuite a 'u nome utende tune, 'nzieme a otre beneficie.",
        "anonpreviewwarning": "''Tu non ge sì collegate. Reggistranne le cangiaminde jndr'à sta pàgene iesse l'indirizze IP tune jndr'à storie.''",
        "missingsummary": "'''Arrecuèrdete:''' Tu non g'è provvedute a 'nu riepileghe de le cangiaminde.\nCe tu cazze Reggistre 'n'otra vote, 'u cangiamende tue avène memorizzete senze une.",
-       "selfredirect": "<strong>Attenziò:</strong> Tu ste redirezione sta pàgene da sule.\nTu puè avè specificate 'a destinazione sbagliate pe stu redirezionamende, o tu ste cange 'a pàgena sbagliate.\nCe tu cazze \"{{int:savearticle}}\" arrete, 'u redirezionamende avène ccrejate 'u stesse.",
+       "selfredirect": "<strong>Attenziò:</strong> Tu ste redirezione sta pàgene da sule.\nTu puè avè specificate 'a destinazione sbagliate pe stu redirezionamende, o tu ste cange 'a pàgena sbagliate.\nCe tu cazze \"$1\" arrete, 'u redirezionamende avène ccrejate 'u stesse.",
        "missingcommenttext": "Pe piacere mitte 'nu commende aqquà sotte.",
-       "missingcommentheader": "<strong>Arrecuèrdete:</strong> Tu non g'è provvedute a 'nu soggette pe stu commende.\nCe tu cazze \"{{int:savearticle}}\" 'n'otra vote, 'u cangiamende tune avène memorizzate senze jidde.",
+       "missingcommentheader": "<strong>Arrecuèrdete:</strong> Tu non g'è provvedute a 'nu soggette pe stu commende.\nCe tu cazze \"$1\" 'n'otra vote, 'u cangiamende tune avène memorizzate senze jidde.",
        "summary-preview": "Andeprime d'u riepileghe d'u cangiamende:",
        "subject-preview": "Andeprime de l'oggette:",
        "previewerrortext": "'N'errore ha assute quanne ste facive l'andeprime de le cangiaminde.",
        "editingsection": "Cangiaminde de $1 (sezione)",
        "editingcomment": "Cangiaminde de $1 (seziona nove)",
        "editconflict": "conflitte de cangiaminde: $1",
-       "explainconflict": "Quacchedune otre ha cangete 'a pàgene apprime ca tu accumenzasse a fà 'u cangiamende tue.\n'U teste ca iacchie sus condene 'u teste d'a pàgene accume se iacchije jndr'à stu mumende.\nLe cangiaminde sonde fatte vedè jndr'à vanne de sotte.\nTu puè scuagghià le cangiaminde jndr'à 'u teste de mò.\n'''Sulamende''' 'u teste ca stè sus avène reggistrate cazzanne 'u buttone \"{{int:savearticle}}\".",
+       "explainconflict": "Quacchedune otre ha cangete 'a pàgene apprime ca tu accumenzasse a fà 'u cangiamende tue.\n'U teste ca iacchie sus condene 'u teste d'a pàgene accume se iacchije jndr'à stu mumende.\nLe cangiaminde sonde fatte vedè jndr'à vanne de sotte.\nTu puè scuagghià le cangiaminde jndr'à 'u teste de mò.\n'''Sulamende''' 'u teste ca stè sus avène reggistrate cazzanne 'u buttone \"$1\".",
        "yourtext": "'U teste tue",
        "storedversion": "Versione archivijete",
        "nonunicodebrowser": "'''FA ATTENZIO': 'U browser tue non ge capisce l'unicode.'''\n'Na fatije ste jndr'à stu poste ca te conzende de reggistrà senza probbleme 'a pàgene: le carattere ca non ge sonde ASCII le vide cumme a tanda scatele cumme a codece esadecimale.",
        "readonlywarning": "<strong>FA ATTENZIO': 'U database ha state bloccate pe manutenzione, e allore tu non ge puè reggistrà le cangiaminde ca ste face mò.</strong>\nTu puè fa 'na bella cose, tagghie e 'nzicche le cangiaminde jndr'à 'nu file de teste sus a 'u combiuter tune e pò cchiù tarde le reggistre sus 'a Uicchi.\n\nL'amministratore ca ha bloccate 'u database ha date stu mutive: $1",
        "protectedpagewarning": "'''ATTENZIO': Sta pàgene ha state bloccate e allore sulamende le utinde cu le privilegge de ''sysop'' ponne cangiarle.'''\nL'urteme archivie de le trasute ha state previste aqquà sotte pe referimende:",
        "semiprotectedpagewarning": "'''Fà attenzione:''' Sta pàgene ha state bloccate accussì sulamende l'utinde reggistrete ponne fà cangiaminde.\nL'urteme archivije de le trasute ha state previste aqquà sotte pe referimende:",
-       "cascadeprotectedwarning": "<strong>FA ATTENZIO':</strong> Sta pàgene ha state blocchete accussì sulamende l'utinde ca tènene le deritte de amministratore a ponne cangià, purcè inglude {{PLURAL:$1|pàgene|pàggene}} prutette a cascate:",
+       "cascadeprotectedwarning": "<strong>Fa attenziò:</strong> Sta pàgene ha state protette accussì sulamende l'utinde ca tènene le [[Special:ListGroupRights|deritte de amministratore]] a ponne cangià, purcè inglude {{PLURAL:$1|pàgene|pàggene}} prutette a cascate:",
        "titleprotectedwarning": "'''ATTENZIONE: Sta pàgene ha state bloccate accussì sulamende [[Special:ListGroupRights|specifice diritte]] a ponne ccrejà.'''\nL'urteme archivije de le trasute jè provviste sotte pe referimende:",
        "templatesused": "{{PLURAL:$1|Template|Template}} ausate sus 'a sta pàgene:",
        "templatesusedpreview": "{{PLURAL:$1|Template|Template}} ausate jndr'à sta andeprime:",
        "search-file-match": "(combronde 'u condenute d'u file)",
        "search-suggest": "Ce signifeche: $1",
        "search-rewritten": "Stoche a fazze 'ndrucà le resultate pe $1. Cirche invece pe $2.",
-       "search-interwiki-caption": "Pruggette sorelle",
+       "search-interwiki-caption": "Resultate da le pruggette sorelle",
        "search-interwiki-default": "Resultate da $1:",
        "search-interwiki-more": "(de cchiù)",
+       "search-interwiki-more-results": "cchiù resultate",
        "search-relatedarticle": "Colleghete",
        "searchrelated": "colleghete",
        "searchall": "tutte",
        "showingresultsinrange": "Stoche a fazze vedè da sotte 'nzigne a {{PLURAL:$1|<strong>1</strong> resultate|<strong>$1</strong> resultate}} jndr'à l'indervalle #<strong>$2</strong> a #<strong>$3</strong>.",
        "search-showingresults": "{{PLURAL:$4|Resultate <strong>$1</strong> de <strong>$3</strong>|Resultate <strong>$1 - $2</strong> de <strong>$3</strong>}}",
        "search-nonefound": "Non ge stonne resultete ca soddisfecene l'inderrogazione.",
+       "search-nonefound-thiswiki": "Non ge stonne resultate ca soddisfane 'a 'nderrogazione jndr'à stu site.",
        "powersearch-legend": "Ricerche avanzete",
        "powersearch-ns": "Cirche jndr'à le namespace:",
        "powersearch-togglelabel": "Verifiche:",
        "search-external": "Ricerche esterne",
        "searchdisabled": "'A ricerche sus a {{SITENAME}} ha state disabbilitete.\nTu puè cercà ausanne Google.\nPerò fa attenzione purcè l'indice lore sus a {{SITENAME}} ponne condenè pàggene ca non ge sonde aggiornate.",
        "search-error": "S'ha verificate 'n'errore mendre ste cercave: $1",
+       "search-warning": "'N'avvertimende ave assute mendre ca ste cercave: $1",
        "preferences": "Me piece accussì",
        "mypreferences": "Me piace accussì",
        "prefs-edits": "Numere de cangiaminde:",
        "prefs-help-recentchangescount": "Quiste 'nglude le urteme cangiaminde, le storie de le pàggene e le archivije.",
        "prefs-help-watchlist-token2": "Queste jè 'a chiave segrete a le feed d'u web de l'elenghe de le pàggene condrollate tune.\nCengate vò ccu canosce ce pò leggere l'elenghe de le pàggene condrollate tune, accussì non g'ù pò condividere.\n[[Special:ResetTokens|Cazze aqquà ce tìne abbesogne de azzerarle]].",
        "savedprefs": "Le preferenze tue onne state aggiornete.",
+       "savedrights": "Le gruppe utinde de {{GENDER:$1$1}} onne state reggistrate.",
        "timezonelegend": "Orarie d'a zone:",
        "localtime": "Orarie lochele:",
        "timezoneuseserverdefault": "Ause 'u valore de default de uicchi ($1)",
        "username": "{{GENDER:$1|Nome de l'utende}}:",
        "prefs-memberingroups": "{{GENDER:$2|Membre}} {{PLURAL:$1|d'u gruppe|de le gruppe}}:",
        "prefs-memberingroups-type": "$1",
+       "group-membership-link-with-expiry": "$1 ('nzigne a $2)",
        "prefs-registration": "Orarie de reggistrazzione:",
        "prefs-registration-date-time": "$1",
        "yourrealname": "Nome vere:",
        "userrights-changeable-col": "Gruppe ca tu puè cangià",
        "userrights-unchangeable-col": "Gruppe ca tu non ge puè cangià",
        "userrights-irreversible-marker": "$1*",
+       "userrights-expiry-current": "Scade 'u $1",
+       "userrights-expiry-none": "Non ge scade",
+       "userrights-expiry": "Scadenze:",
+       "userrights-expiry-existing": "'U tiembe de scadenze esistende: $3, $2",
+       "userrights-expiry-othertime": "Otre tiembe:",
+       "userrights-expiry-options": "1 sciurne:1 day,1 sumàne:1 week,1 mese:1 month,3 mise:3 mise,6 mesi:6 months,1 anne:1 year",
        "userrights-conflict": "Conflitte sus a le cangiaminde de le deritte utende! Pe piacere revide e conferme le cangiaminde tune.",
        "group": "Gruppe:",
        "group-user": "Utinde",
        "rcshowhidemine": "$1 cangiaminde mie",
        "rcshowhidemine-show": "Fà vedè",
        "rcshowhidemine-hide": "Scunne",
-       "rclinks": "Vide l'urteme $1 cangiaminde jndr'à l'urteme $2 sciurne<br />$3",
+       "rclinks": "Vide l'urteme $1 cangiaminde jndr'à l'urteme $2 sciurne",
        "diff": "diff",
        "hist": "cunde",
        "hide": "Scunne",
index 3ba0ad0..b4b7bc6 100644 (file)
                        "Nitch",
                        "Alexey zakharenkov",
                        "Ivan-r",
-                       "Choomaq"
+                       "Choomaq",
+                       "Facenapalm",
+                       "Esukhovnina",
+                       "Av6",
+                       "Санюн Вадик",
+                       "MustangDSG",
+                       "Valeri'swiki"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "anontalk": "Обсуждение",
        "navigation": "Навигация",
        "and": "&#32;и",
-       "qbfind": "Поиск",
-       "qbbrowse": "Просмотреть",
-       "qbedit": "Править",
-       "qbpageoptions": "Настройки страницы",
-       "qbmyoptions": "Ваши настройки",
        "faq": "ЧаВО",
-       "faqpage": "Project:ЧаВО",
        "actions": "Действия",
        "namespaces": "Пространства имён",
        "variants": "Варианты",
        "edit-local": "Редактировать локальное описание",
        "create": "Создать",
        "create-local": "Создать локально",
-       "editthispage": "Править эту страницу",
-       "create-this-page": "Создать эту страницу",
        "delete": "Удалить",
-       "deletethispage": "Удалить эту страницу",
-       "undeletethispage": "Восстановить эту страницу",
        "undelete_short": "Восстановить {{PLURAL:$1|1=$1 правку|$1 правки|$1 правок|1=правку}}",
        "viewdeleted_short": "Просмотр {{PLURAL:$1|1=$1 удалённой правки|удалённой правки|$1 удалённых правок}}",
        "protect": "Защитить",
        "protect_change": "изменить",
-       "protectthispage": "Защитить эту страницу",
        "unprotect": "Изменить защиту",
-       "unprotectthispage": "Изменить защиту этой страницы",
        "newpage": "Новая страница",
-       "talkpage": "Обсудить эту страницу",
        "talkpagelinktext": "обсуждение",
        "specialpage": "Служебная страница",
        "personaltools": "Персональные инструменты",
-       "articlepage": "Просмотреть статью",
        "talk": "Обсуждение",
        "views": "Просмотры",
        "toolbox": "Инструменты",
        "tool-link-userrights": "Изменить группы {{GENDER:$1|участника|участницы}}",
        "tool-link-userrights-readonly": "Смотреть группы {{GENDER:$1|участника|участницы}}",
        "tool-link-emailuser": "Написать письмо {{GENDER:$1|участнику|участнице}}",
-       "userpage": "Просмотреть страницу участника",
-       "projectpage": "Просмотреть страницу проекта",
        "imagepage": "Просмотреть страницу файла",
        "mediawikipage": "Показать страницу сообщения",
        "templatepage": "Просмотреть страницу шаблона",
        "redirectedfrom": "(перенаправлено с «$1»)",
        "redirectpagesub": "Страница-перенаправление",
        "redirectto": "Перенаправление на:",
-       "lastmodifiedat": "Ð\9fоÑ\81леднее Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ Ñ\8dÑ\82ой Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b: $2, $1.",
+       "lastmodifiedat": "ЭÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¿Ð¾Ñ\81ледний Ñ\80аз Ð±Ñ\8bла Ð¾Ñ\82Ñ\80едакÑ\82иÑ\80ована $1 Ð² $2.",
        "viewcount": "К этой странице обращались $1 {{PLURAL:$1|1=раз|раза|раз}}.",
        "protectedpage": "Защищённая страница",
        "jumpto": "Перейти к:",
        "confirmable-no": "Нет",
        "thisisdeleted": "Просмотреть или восстановить $1?",
        "viewdeleted": "Просмотреть $1?",
-       "restorelink": "{{PLURAL:$1|1=$1 удалённую правку|$1 удалённые правки|$1 удалённых правок|1=удалённую правку}}",
+       "restorelink": "{{PLURAL:$1|$1 удалённую правку|$1 удалённые правки|$1 удалённых правок|1=удалённую правку}}",
        "feedlinks": "В виде:",
        "feed-invalid": "Неправильный тип канала для подписки.",
        "feed-unavailable": "Ленты синдикации недоступны",
        "createacct-yourpassword-ph": "Введите пароль",
        "yourpasswordagain": "Повторный набор пароля:",
        "createacct-yourpasswordagain": "Подтвердите пароль",
-       "createacct-yourpasswordagain-ph": "Введите пароль еще раз",
+       "createacct-yourpasswordagain-ph": "Введите пароль ещё раз",
        "userlogin-remembermypassword": "Оставаться в системе",
        "userlogin-signwithsecure": "Защищённое соединение",
        "cannotlogin-title": "Невозможно войти",
        "preview": "Предпросмотр",
        "showpreview": "Предварительный просмотр",
        "showdiff": "Внесённые изменения",
-       "blankarticle": "<strong>Предупреждение:</strong> Страница, которую вы создаёте, пуста.\nЕсли снова нажмёте кнопку «{{int:savearticle}}», страница будет создана без какого-либо содержания.",
+       "blankarticle": "<strong>Предупреждение:</strong> Страница, которую вы создаёте, пуста.\nЕсли снова нажмёте кнопку «$1», страница будет создана без какого-либо содержания.",
        "anoneditwarning": "<strong>Внимание!</strong> Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы <strong>[$1 войдёте]</strong> или <strong>[$2 создадите учётную запись]</strong>, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.",
        "anonpreviewwarning": "''Вы не представились системе. Сохранение приведёт к записи вашего IP-адреса в историю изменений страницы.''",
-       "missingsummary": "'''Напоминание.''' Вы не дали краткого описания изменений. При повторном нажатии на кнопку «{{int:savearticle}}» ваши изменения будут сохранены без комментария.",
-       "selfredirect": "<strong>Внимание:</strong> Вы создаёте перенаправление на ту же самую статью.\nВозможно, Вы выбрали неправильную целевую страницу для перенаправления или редактируете не ту страницу.\nЕсли Вы нажмёте кнопку «{{int:savearticle}}» ещё раз, перенаправление всё же будет создано.",
+       "missingsummary": "'''Напоминание.''' Вы не дали краткого описания изменений. При повторном нажатии на кнопку «$1» ваши изменения будут сохранены без комментария.",
+       "selfredirect": "<strong>Внимание:</strong> Вы создаёте перенаправление на ту же самую статью.\nВозможно, Вы выбрали неправильную целевую страницу для перенаправления или редактируете не ту страницу.\nЕсли Вы нажмёте кнопку «$1» ещё раз, перенаправление всё же будет создано.",
        "missingcommenttext": "Пожалуйста, введите ниже ваше сообщение.",
-       "missingcommentheader": "<strong>Напоминание.</strong> Вы не указали тему/заголовок для этого комментария.\nПри повторном нажатии на кнопку «{{int:savearticle}}», ваша правка будет записана без заголовка.",
+       "missingcommentheader": "<strong>Напоминание.</strong> Вы не указали тему/заголовок для этого комментария.\nПри повторном нажатии на кнопку «$1», ваша правка будет записана без заголовка.",
        "summary-preview": "Предпросмотр описания изменения:",
        "subject-preview": "Предпросмотр темы/заголовка:",
        "previewerrortext": "При попытке отобразить предварительный просмотр ваших изменений произошла ошибка.",
        "editingsection": "Редактирование: $1 (раздел)",
        "editingcomment": "Редактирование: $1 (новый раздел)",
        "editconflict": "Конфликт редактирования: $1",
-       "explainconflict": "Пока вы редактировали эту страницу, кто-то внёс в неё изменения.\nВ верхнем окне для редактирования вы видите текущий текст страницы.\nВ нижнем окне находится ваш вариант.\nПеренесите сделанные вами изменения из нижнего окна в верхнее.\nПри нажатии на кнопку «{{int:savearticle}}» будет сохранён текст верхнего окна.",
+       "explainconflict": "Пока вы редактировали эту страницу, кто-то внёс в неё изменения.\nВ верхнем окне для редактирования вы видите текущий текст страницы.\nВ нижнем окне находится ваш вариант.\nПеренесите сделанные вами изменения из нижнего окна в верхнее.\nПри нажатии на кнопку «$1» будет сохранён текст верхнего окна.",
        "yourtext": "Ваш текст",
        "storedversion": "Сохранённая версия",
        "nonunicodebrowser": "'''ПРЕДУПРЕЖДЕНИЕ: Ваш браузер не поддерживает кодировку Юникод. При редактировании статей все не-ASCII символы будут заменены на свои шестнадцатеричные коды.'''",
        "readonlywarning": "<strong>Предупреждение: База данных заблокирована в связи с процедурами обслуживания, поэтому вы не можете записать ваши изменения прямо сейчас.</strong>\nВозможно, вам следует скопировать этот текст в текстовый файл, чтобы сохранить его на будущее.\n\nСистемный администратор, заблокировавший базу данных, оставил следующее объяснение: $1",
        "protectedpagewarning": "'''Предупреждение. Эта страница защищена от изменений, её могут редактировать только участники с полномочиями администратора.'''\nНиже для справки приведена последняя запись журнала:",
        "semiprotectedpagewarning": "'''Замечание.''' Эта страница была защищена; редактировать её могут только зарегистрированные участники.\nНиже для справки приведена последняя запись журнала:",
-       "cascadeprotectedwarning": "<strong>Ð\9fÑ\80едÑ\83пÑ\80еждение:</strong> Ð\94аннÑ\83Ñ\8e Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð¼Ð¾Ð³Ñ\83Ñ\82 Ñ\80едакÑ\82иÑ\80оваÑ\82Ñ\8c Ñ\82олÑ\8cко Ñ\83Ñ\87аÑ\81Ñ\82ники Ñ\81 Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80аÑ\82ивнÑ\8bми Ð¿Ñ\80авами, поскольку она включена {{PLURAL:$1|1=в следующую страницу, для которой|в следующие страницы, для которых}} включена каскадная защита:",
+       "cascadeprotectedwarning": "<strong>Ð\9fÑ\80едÑ\83пÑ\80еждение:</strong> Ð­Ñ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а Ð±Ñ\8bла Ð·Ð°Ñ\89иÑ\89ена, Ñ\82ак Ñ\87Ñ\82обÑ\8b ÐµÑ\91 Ð¼Ð¾Ð³Ð»Ð¸ Ñ\80едакÑ\82иÑ\80оваÑ\82Ñ\8c Ñ\82олÑ\8cко Ñ\83Ñ\87аÑ\81Ñ\82ники Ñ\81 [[Special:ListGroupRights|опÑ\80еделÑ\91ннÑ\8bми Ð¿Ñ\80авами]], поскольку она включена {{PLURAL:$1|1=в следующую страницу, для которой|в следующие страницы, для которых}} включена каскадная защита:",
        "titleprotectedwarning": "'''Предупреждение.  Это название защищено. Создать эту страницу могут только участники с [[Special:ListGroupRights|соответствующими правами]].'''\nНиже для справки приведена последняя запись журнала:",
        "templatesused": "{{PLURAL:$1|1=Шаблон, используемый|Шаблоны, используемые}} на этой странице:",
        "templatesusedpreview": "{{PLURAL:$1|1=Шаблон, используемый|Шаблоны, используемые}} в режиме предпросмотра:",
        "search-file-match": "(совпадает с содержимым файла)",
        "search-suggest": "Возможно, вы имели в виду «$1».",
        "search-rewritten": "Показаны результаты для $1. Искать вместо этого $2.",
-       "search-interwiki-caption": "РодÑ\81Ñ\82веннÑ\8bе Ð¿Ñ\80оекÑ\82Ñ\8b",
+       "search-interwiki-caption": "РезÑ\83лÑ\8cÑ\82аÑ\82Ñ\8b Ð±Ñ\80аÑ\82Ñ\81киÑ\85 Ð¿Ñ\80оекÑ\82ов",
        "search-interwiki-default": "Результаты из $1:",
        "search-interwiki-more": "(ещё)",
        "search-interwiki-more-results": "ещё результаты",
        "badsig": "Неверная подпись. Проверьте корректность HTML-тегов.",
        "badsiglength": "Слишком длинная подпись.\nПодпись не должна превышать $1 {{PLURAL:$1|символа|символа|символов}}.",
        "yourgender": "Какое описание вам более подходит?",
-       "gender-unknown": "При упоминании вас, программное обеспечение, когда это возможно, будет использовать гендерно-нейтральные слова",
+       "gender-unknown": "При упоминании вас, программное обеспечение будет по возможности использовать гендерно-нейтральные слова",
        "gender-male": "Он редактирует страницы вики",
        "gender-female": "Онa редактирует страницы вики",
        "prefs-help-gender": "Этот параметр задавать необязательно.\nДвижок использует это значение, чтобы обращаться к вам и упоминать вас в правильном грамматическом роде.\nЭта информация будет общедоступной.",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Показать",
        "rcfilters-activefilters": "Активные фильтры",
+       "rcfilters-quickfilters": "Сохранённые настройки фильтра",
+       "rcfilters-quickfilters-placeholder-title": "Сохраненных ссылок еще нет",
+       "rcfilters-quickfilters-placeholder-description": "Чтобы сохранить настройки фильтра и повторно использовать их позже, щелкните значок закладки в области «Активный фильтр» ниже.",
+       "rcfilters-savedqueries-defaultlabel": "Сохранённые фильтры",
+       "rcfilters-savedqueries-rename": "Переименовать",
+       "rcfilters-savedqueries-setdefault": "Установить по умолчанию",
+       "rcfilters-savedqueries-unsetdefault": "Удалить значение по умолчанию",
+       "rcfilters-savedqueries-remove": "Удалить",
+       "rcfilters-savedqueries-new-name-label": "Имя",
+       "rcfilters-savedqueries-apply-label": "Сохранить настройки",
+       "rcfilters-savedqueries-cancel-label": "Отмена",
+       "rcfilters-savedqueries-add-new-title": "Сохранить текущие настройки фильтра",
        "rcfilters-restore-default-filters": "Восстановить фильтры по умолчанию",
        "rcfilters-clear-all-filters": "Очистить все фильтры",
        "rcfilters-search-placeholder": "Последние изменения фильтров (просмотрите или начните вводить)",
        "rcfilters-highlightmenu-help": "Выберите цвет, чтобы подсветить это свойство",
        "rcfilters-filterlist-noresults": "Фильтры не найдены",
        "rcfilters-noresults-conflict": "Результатов не найдено из-за конфликта критериев поиска",
+       "rcfilters-state-message-subset": "Фильтр не будет иметь эффекта, поскольку его результаты включены в {{PLURAL:$2|следующий более широкий фильтр|следующие более широкие фильтры}} (попробуйте подсвечивание для различения): $1",
        "rcfilters-state-message-fullcoverage": "Выбор всех фильтров в группе — это то же самое, что и отсутствие какого-либо выбора, поэтому этот фильтр не имеет никакого эффекта. Включённые группы: $1",
        "rcfilters-filtergroup-registration": "Регистрация участников",
        "rcfilters-filter-registered-label": "Зарегистрированные",
        "rcfilters-filter-registered-description": "Вошедшие редакторы.",
        "rcfilters-filter-unregistered-label": "Незарегистрированные",
        "rcfilters-filter-unregistered-description": "Редакторы, которые не вошли в систему.",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "Этот фильтр конфликтует со {{PLURAL:$2|следующим фильтром|следующими фильтрами}} по опыту, {{PLURAL:$2|который ищет|которые ищут}} только зарегистрированных пользователей: $1",
        "rcfilters-filtergroup-authorship": "Редактировать авторство",
-       "rcfilters-filter-editsbyself-label": "Ð\92аÑ\88и Ñ\81обÑ\81Ñ\82веннÑ\8bе Ð¿Ñ\80авки",
-       "rcfilters-filter-editsbyself-description": "Ваши правки.",
-       "rcfilters-filter-editsbyother-label": "Ð\9fÑ\80авки Ð´Ñ\80Ñ\83гиÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ников",
-       "rcfilters-filter-editsbyother-description": "Ð\9fÑ\80авки, Ñ\81деланнÑ\8bе Ð´Ñ\80Ñ\83гими Ñ\83Ñ\87аÑ\81Ñ\82никами (не Ð²Ð°Ð¼Ð¸).",
+       "rcfilters-filter-editsbyself-label": "Ð\92неÑ\81Ñ\91ннÑ\8bе Ð²Ð°Ð¼Ð¸ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f",
+       "rcfilters-filter-editsbyself-description": "Ваш вклад.",
+       "rcfilters-filter-editsbyother-label": "Ð\98зменениÑ\8f, Ð²Ð½ÐµÑ\81Ñ\91ннÑ\8bе Ð´Ñ\80Ñ\83гими Ñ\83Ñ\87аÑ\81Ñ\82никами",
+       "rcfilters-filter-editsbyother-description": "Ð\92Ñ\81е Ð¿Ñ\80авки, ÐºÑ\80оме Ð²Ð°Ñ\88иÑ\85 Ñ\81обÑ\81Ñ\82веннÑ\8bÑ\85.",
        "rcfilters-filtergroup-userExpLevel": "Уровня опыта (только для зарегистрированных участников)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Фильтры по опыту ищут только зарегистрированных участников, поэтому этот фильтр конфликтует с фильтром «Незарегистрированные».",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Фильтр «Незарегистрированные» конфликтует с одним или более фильтрами по опыту, которые ищут только незарегистрированных участников. Конфликтующие фильтры отмечены в поле активных фильтров выше.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Новички",
        "rcfilters-filter-user-experience-level-newcomer-description": "Менее 10 правок и 4 дней работы.",
        "rcfilters-filter-user-experience-level-learner-label": "Учащиеся",
-       "rcfilters-filter-user-experience-level-learner-description": "Ð\91олÑ\8cÑ\88е Ð¿Ñ\80авок Ð¸ Ð´Ð½ÐµÐ¹ Ñ\80абоÑ\82Ñ\8b, чем у «Новичков», но меньше, чем у «Опытных пользователей».",
+       "rcfilters-filter-user-experience-level-learner-description": "Ð\91олÑ\8cÑ\88е Ð¾Ð¿Ñ\8bÑ\82а, чем у «Новичков», но меньше, чем у «Опытных пользователей».",
        "rcfilters-filter-user-experience-level-experienced-label": "Опытные пользователи",
        "rcfilters-filter-user-experience-level-experienced-description": "Более 30 дней активности и 500 правок.",
        "rcfilters-filtergroup-automated": "Автоматизированные вклады",
        "rcfilters-filter-bots-description": "Правки, сделанные с помощью автоматизированных инструментов.",
        "rcfilters-filter-humans-label": "Человек (не бот)",
        "rcfilters-filter-humans-description": "Правки, внесённые редакторами.",
+       "rcfilters-filtergroup-reviewstatus": "Статус проверки",
        "rcfilters-filter-patrolled-label": "Отпатрулировано",
        "rcfilters-filter-patrolled-description": "Правки, помеченные как отпатрулированные.",
        "rcfilters-filter-unpatrolled-label": "Непатрулированные",
        "rcfilters-filter-minor-description": "Правки, которые автор пометил как малые.",
        "rcfilters-filter-major-label": "Обычные правки",
        "rcfilters-filter-major-description": "Правки, не помеченные как малые.",
+       "rcfilters-filtergroup-watchlist": "Страницы в Списке наблюдения",
+       "rcfilters-filter-watchlist-watched-label": "В Списке наблюдения",
+       "rcfilters-filter-watchlist-watched-description": "Изменения страниц в вашем Списке наблюдения.",
+       "rcfilters-filter-watchlist-watchednew-label": "Новые изменения в Списке наблюдения",
+       "rcfilters-filter-watchlist-watchednew-description": "Правки на страницах из вашего списка наблюдения, которые вы не просмотрели с их совершения.",
+       "rcfilters-filter-watchlist-notwatched-label": "Нет в Списке наблюдения",
+       "rcfilters-filter-watchlist-notwatched-description": "Всё, исключая правки со страниц из вашего списка наблюдения.",
        "rcfilters-filtergroup-changetype": "Тип изменения",
        "rcfilters-filter-pageedits-label": "Правки страницы",
        "rcfilters-filter-pageedits-description": "Правки содержимого, обсуждений, описания категорий…",
        "rcfilters-filter-logactions-label": "Протоколируемые действия",
        "rcfilters-filter-logactions-description": "Административные действия, создания учётных записей, удаления страниц, загрузки файлов…",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Фильтр \"малые правки\" конфликтует с одним или несколькими фильтрами, поскольку некоторые типы правок не могут быть названы малыми. Конфликтные фильтры отмечены вверху, в области Активных фильтров.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Определённые типы правок не могут быть названы «малыми», поэтому этот фильтр конфликтует со следующим фильтром типа правок: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Этот фильтр типа правок конфликтует с фильтром малых правок. Определённые типы правок не могут быть отмечены «малыми».",
+       "rcfilters-filtergroup-lastRevision": "Текущая версия",
+       "rcfilters-filter-lastrevision-label": "Текущая версия",
+       "rcfilters-filter-lastrevision-description": "Самое последнее изменение на странице.",
+       "rcfilters-filter-previousrevision-label": "Более ранние версии",
+       "rcfilters-filter-previousrevision-description": "Все правки, не являющиеся самыми последними на странице.",
+       "rcfilters-filter-excluded": "Исключено",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
+       "rcfilters-view-tags": "Метки",
        "rcnotefrom": "Ниже {{PLURAL:$5|указано изменение|перечислены изменения}} с <strong>$3, $4</strong> (показано не более <strong>$1</strong>).",
        "rclistfromreset": "Сбросить выбор даты",
        "rclistfrom": "Показать изменения с $3 $2.",
        "rcshowhidecategorization": "$1 категоризацию страниц",
        "rcshowhidecategorization-show": "Показать",
        "rcshowhidecategorization-hide": "Скрыть",
-       "rclinks": "Показать последние $1 изменений за $2 дней<br />$3",
+       "rclinks": "Показать последние $1 изменений за $2 дней",
        "diff": "разн.",
        "hist": "история",
        "hide": "Скрыть",
        "enotif_body_intro_moved": "$PAGEEDITDATE {{gender:$2|участником|участницей}} $2 была переименована страница проекта «{{SITENAME}}» с именем «$1», см. текущую версию по ссылке: $3",
        "enotif_body_intro_restored": "$PAGEEDITDATE {{gender:$2|участником|участницей}} $2 была восстановлена страница проекта «{{SITENAME}}» с именем «$1», см. текущую версию по ссылке: $3",
        "enotif_body_intro_changed": "$PAGEEDITDATE {{gender:$2|участником|участницей}} $2 была изменена страница проекта «{{SITENAME}}» с именем «$1», см. текущую версию по ссылке: $3",
-       "enotif_lastvisited": "См. $1 для просмотра всех изменений, произошедших с вашего последнего посещения.",
-       "enotif_lastdiff": "См. $1 для ознакомления с изменением.",
+       "enotif_lastvisited": "См. $1 для просмотра всех изменений, произошедших с вашего последнего посещения",
+       "enotif_lastdiff": "См. $1 для ознакомления с изменением",
        "enotif_anon_editor": "анонимный участник $1",
        "enotif_body": "Здравствуйте, $WATCHINGUSERNAME!\n\n$PAGEINTRO $NEWPAGE\n\nКраткое описание изменения: $PAGESUMMARY $PAGEMINOREDIT\n\nОбратиться к изменившему:\nэл. почта: $PAGEEDITOR_EMAIL\nвики: $PAGEEDITOR_WIKI\n\nЕсли вы не зайдёте на эту страницу под своей учётной записью, в случае её дальнейших изменений уведомлений больше не будет. Вы можете также отключить опцию уведомления для всех страниц в вашем списке наблюдения.\n\nСистема оповещения {{grammar:genitive|{{SITENAME}}}}\n\n--\nИзменение настройки уведомлений\n{{canonicalurl:{{#special:Preferences}}}}\n\nИзменение настройки вашего списка наблюдения\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nУдалить страницы из вашего списка наблюдения\n$UNWATCHURL\n\nОбратная связь и помощь\n$HELPPAGE",
        "created": "создана",
        "sp-contributions-uploads": "загрузки",
        "sp-contributions-logs": "журналы",
        "sp-contributions-talk": "обсуждение",
-       "sp-contributions-userrights": "управление правами участника",
+       "sp-contributions-userrights": "управление правами {{GENDER:$1|участника|участницы}}",
        "sp-contributions-blocked-notice": "Этот участник в данный момент заблокирован. Ниже приведена последняя запись из журнала блокировок:",
        "sp-contributions-blocked-notice-anon": "Этот IP-адрес в данный момент заблокирован. Ниже приведена последняя запись из журнала блокировок:",
        "sp-contributions-search": "Поиск вклада",
        "autoblocklist-submit": "Найти",
        "autoblocklist-legend": "Список автоблокировок",
        "autoblocklist-localblocks": "{{PLURAL:$1|Локальная автоблокировка|Локальные автоблокировки}}",
+       "autoblocklist-total-autoblocks": "Всего автоблоков: $1",
        "autoblocklist-empty": "Список автоблокировок пуст.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Другая автоблокировка|Другие автоблокировки}}",
        "ipblocklist": "Заблокированные участники",
        "tooltip-pt-mycontris": "Список {{GENDER:|ваших}} правок",
        "tooltip-pt-anoncontribs": "Список правок, сделанных с этого IP-адреса",
        "tooltip-pt-login": "Здесь можно зарегистрироваться в системе, но это необязательно.",
+       "tooltip-pt-login-private": "Вам нужно войти, чтоб использовать эту вики",
        "tooltip-pt-logout": "Завершить сеанс работы",
        "tooltip-pt-createaccount": "Мы предлагаем вам создать учётную запись и войти в систему, хотя это и не обязательно.",
        "tooltip-ca-talk": "Обсуждение основной страницы",
        "anonymous": "{{PLURAL:$1|1=Анонимный участник|Анонимные участники}} {{grammar:genitive|{{SITENAME}}}}",
        "siteuser": "{{GENDER:$2|участник|участница}} {{grammar:genitive|{{SITENAME}}}} $1",
        "anonuser": "анонимный участник {{grammar:genitive|{{SITENAME}}}} $1",
-       "lastmodifiedatby": "ЭÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¿Ð¾Ñ\81ледний Ñ\80аз Ð±Ñ\8bла Ð¸Ð·Ð¼ÐµÐ½Ðµна $1 в $2, автор изменения — $3.",
+       "lastmodifiedatby": "ЭÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¿Ð¾Ñ\81ледний Ñ\80аз Ð±Ñ\8bла Ð¾Ñ\82Ñ\80едакÑ\82иÑ\80ована $1 в $2, автор изменения — $3.",
        "othercontribs": "В создании приняли участие: $1.",
        "others": "другие",
        "siteusers": "{{PLURAL:$2|1={{GENDER:$1|участник|участница}}|участники}} {{grammar:genitive|{{SITENAME}}}} $1",
        "newimages-legend": "Фильтр",
        "newimages-label": "Имя файла (или его часть):",
        "newimages-user": "IP-адрес или имя участника",
+       "newimages-newbies": "Показать только вклад, сделанный с новых учётных записей",
        "newimages-showbots": "Показать загрузки ботов",
        "newimages-hidepatrolled": "Скрыть отпатрулированные загрузки",
+       "newimages-mediatype": "Медиа тип:",
        "noimages": "Изображения отсутствуют.",
        "gallery-slideshow-toggle": "Переключить миниатюры",
        "ilsubmit": "Найти",
        "confirmrecreate-noreason": "{{GENDER:$1|Участник|Участница|}}&nbsp;[[User:$1|$1]] ([[User talk:$1|обс]]) {{GENDER:$1|удалил|удалила}} эту страницу после того, как вы начали её редактировать. Пожалуйста, подтвердите, что вы действительно хотите вновь создать эту страницу.",
        "recreate": "Создать заново",
        "unit-pixel": " пикс.",
+       "confirm-purge-title": "Очистить кэш этой страницы",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Очистить кэш этой страницы?",
        "confirm-purge-bottom": "После очистки кэша страницы будет показана её последняя версия.",
        "tags-create-reason": "Причина:",
        "tags-create-submit": "Создать",
        "tags-create-no-name": "Вы должны указать имя метки.",
-       "tags-create-invalid-chars": "Имена меток не должны содержать запятые (<code>,</code>) или символы косой черты (<code>/</code>).",
+       "tags-create-invalid-chars": "Имена меток не должны содержать запятые (<code>,</code>), пайпы (<code>|</code>) или символы косой черты (<code>/</code>).",
        "tags-create-invalid-title-chars": "Имена меток не должны содержать символы, которые не могут быть использованы в заголовках страниц.",
        "tags-create-already-exists": "Метка «$1» уже существует.",
        "tags-create-warnings-above": "При попытке создать метку «$1» обнаружен{{PLURAL:$2|о следующее предупреждение|ы следующие предупреждения}}:",
        "logentry-move-move_redir": "$1 {{GENDER:$2|переименовал|переименовала}} страницу $3 в $4 поверх перенаправления",
        "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|переименовал|переименовала}} страницу $3 в $4 поверх перенаправления и без оставления перенаправления",
        "logentry-patrol-patrol": "$1 {{GENDER:$2|отпатрулировал|отпатрулировала}} версию $4 страницы $3",
-       "logentry-patrol-patrol-auto": "$1 автоматически {{GENDER:$2|отпатрулировал|отпатрулировала}} «старым патрулированием» версию $4 страницы $3",
+       "logentry-patrol-patrol-auto": "$1 автоматически {{GENDER:$2|отпатрулировал|отпатрулировала}} версию $4 страницы $3",
        "logentry-newusers-newusers": "{{GENDER:$2|Участник создал|Участница создала}} учётную запись $1",
        "logentry-newusers-create": "{{GENDER:$2|Участник создал|Участница создала}} учётную запись $1",
        "logentry-newusers-create2": "$1 {{GENDER:$2|создал|создала}} учётную запись $3",
        "mw-widgets-titleinput-description-redirect": "перенаправление на $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Добавить категорию…",
        "mw-widgets-usersmultiselect-placeholder": "Добавить ещё…",
+       "date-range-from": "С даты:",
+       "date-range-to": "По дату:",
        "sessionmanager-tie": "Невозможно использовать одновременно несколько типов проверки подлинности запроса: $1.",
        "sessionprovider-generic": "$1 сессий",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "сессий на основе куки",
        "rawhtml-notallowed": "&lt;html&gt; теги могут быть использованы только в пределах обычных страниц.",
        "gotointerwiki": "Покидаем {{grammar:accusative|{{SITENAME}}}}...",
        "gotointerwiki-invalid": "Указан некорректный заголовок.",
-       "gotointerwiki-external": "Вы покидаете {{grammar:accusative|{{SITENAME}}}} для посещения сайта [[$2]].\n\n[$1 Нажмите здесь, чтобы перейти на $1].",
+       "gotointerwiki-external": "Вы покидаете {{grammar:accusative|{{SITENAME}}}} для посещения стороннего сайта [[$2]].\n\n'''[$1 Перейти на $1]'''",
        "undelete-cantedit": "Вы не можете восстановить эту страницу, поскольку у вас недостаточно прав для ее редактирования.",
-       "undelete-cantcreate": "Вы не можете восстановить эту страницу, поскольку она не существует, а у вас недостаточно прав для ее создания."
+       "undelete-cantcreate": "Вы не можете восстановить эту страницу, поскольку она не существует, а у вас недостаточно прав для ее создания.",
+       "pagedata-title": "Данные страницы",
+       "pagedata-text": "Эта страница предоставляет интерфейс к данным страниц. Пожалуйста, введите заголовок страницы в URL, используя синтаксис подстраниц.\n* Согласование содержимого применяется основываясь на заголовке Accept вашего клиента. Это означает, что данные страницы будут предоставлены в формате, предпочитаемом вашим клиентом.",
+       "pagedata-not-acceptable": "Соответствующий формат не найден. Поддерживаемые MIME-типы: $1",
+       "pagedata-bad-title": "Некорректный заголовок: $1."
 }
index 382019d..a55e772 100644 (file)
@@ -12,7 +12,8 @@
                        "Dicto23456",
                        "Macofe",
                        "Matma Rex",
-                       "KHMELNYTSKYIA"
+                       "KHMELNYTSKYIA",
+                       "Igor Kercsa"
                ]
        },
        "tog-underline": "Підкреслёвати одказы:",
        "anontalk": "Діскузія к тїй IP-адресї",
        "navigation": "Навіґація",
        "and": "&#32;і",
-       "qbfind": "Найти",
-       "qbbrowse": "Переглядати",
-       "qbedit": "Едітовати",
-       "qbpageoptions": "Тота сторінка",
-       "qbmyoptions": "Мої сторінкы",
        "faq": "Часты звідованя",
-       "faqpage": "Project:Часты звідованя",
        "actions": "Дїї",
        "namespaces": "Просторы назв",
        "variants": "Варіанты",
        "printableversion": "Верзія до друку",
        "permalink": "Перманентный одказ",
        "print": "Друк",
-       "view": "Ð\92идÑ\97ти",
+       "view": "Ð\92идÑ\96ти",
        "edit": "Едітовати",
        "create": "Створити",
-       "editthispage": "Едітовату тоту сторінку",
-       "create-this-page": "Створити тоту сторінку",
        "delete": "Вымазати",
-       "deletethispage": "Змазати тоту сторінку",
-       "undeletethispage": "Обновити тоту сторінку",
        "undelete_short": "Обновити $1 {{PLURAL:$1|верзію|верзії|верзії}}",
        "viewdeleted_short": "Видїти {{PLURAL:$1|змазанов едітаціёв|$1 змазаны едітації|$1 змазаных едітацій}}",
        "protect": "Всокотити",
        "protect_change": "змінити",
-       "protectthispage": "Сокотити тоту сторінку",
        "unprotect": "Змінити замок",
-       "unprotectthispage": "Змінити замок той сторінкы",
        "newpage": "Нова сторінка",
-       "talkpage": "Діскутовати тоту сторінку",
        "talkpagelinktext": "діскузія",
        "specialpage": "Шпеціална сторінка",
        "personaltools": "Особны інштрументы",
-       "articlepage": "Посмотрити сторінку",
        "talk": "Діскузія",
        "views": "Перегляды",
        "toolbox": "Інштрументы",
-       "userpage": "Посмотрити сторінку хоснователя",
-       "projectpage": "Посмотрити сторінку проєкту",
        "imagepage": "Посмотрити сторінку файлу",
        "mediawikipage": "Посмотрити сторінку повідомлїнь",
        "templatepage": "Посмотрити шаблону",
        "nstab-template": "Шаблона",
        "nstab-help": "Сторінка помочі",
        "nstab-category": "Катеґорія",
+       "mainpage-nstab": "Головна сторінка",
        "nosuchaction": "Такой дїї не має",
        "nosuchactiontext": "Дїя, уведжена в URL, неправилна.\nМогли сьте неправилно написати URL або перейти через некоректный одказ .\nМоже тыж значіти ґанч в проґрамовім забеспечіню {{GRAMMAR:genitive|{{SITENAME}}}}.",
        "nosuchspecialpage": "Такой шпеціалной сторінкы нїт",
        "anonpreviewwarning": "''Не сьте приголошеный(а). Уложінём буде ваша IP адреса записана в історії  той сторінкы.''",
        "missingsummary": "'''Припомянутя:''' Не задали сьте згорнутя едітації. Кідь іщі раз кликтете на Уложыти зміны, буде вапа едітація записана без згорнутя.",
        "missingcommenttext": "Задайте коментарь",
-       "missingcommentheader": "'''Припомянутя:''' Не задали сьте тему/надпис про тот коментарь.\nКідь іщі раз кликнете на „{{int:savearticle}}“, буде ваша едітація записана і без того.",
+       "missingcommentheader": "'''Припомянутя:''' Не задали сьте тему/надпис про тот коментарь.\nКідь іщі раз кликнете на „$1“, буде ваша едітація записана і без того.",
        "summary-preview": "Опис буде:",
        "subject-preview": "Нагляд темы/надпису:",
        "blockedtitle": "Хоснователь є блокованый",
        "editingsection": "Едітованя $1 (роздїл)",
        "editingcomment": "Едітованя $1 (нова секція)",
        "editconflict": "Конфлікт едітованя: $1",
-       "explainconflict": "Дахто змінив сторінку по започатю вашой едітації.\nВысше видите актуалный текст сторінкы.\nВашы зміны суть вказаны долов.\nМусите злучіти свої зміны з існуючім текстом.\n'''Лем''' высше вказаный текст зістане всокоченый по кликнутю на  „{{int:savearticle}}“.",
+       "explainconflict": "Дахто змінив сторінку по започатю вашой едітації.\nВысше видите актуалный текст сторінкы.\nВашы зміны суть вказаны долов.\nМусите злучіти свої зміны з існуючім текстом.\n'''Лем''' высше вказаный текст зістане всокоченый по кликнутю на  „$1“.",
        "yourtext": "Ваш текст",
        "storedversion": "Уложена верзія",
        "nonunicodebrowser": "'''Увага: Ваш переглядач не є способный працовати із знаками Unicode. Абы сьте могли тоту сторінку беспечно едітовати: вшыткы знакы мімо  ASCII суть зображены в гексадецімалных кодах.'''",
        "right-editprotected": "Едітованя сторінок замкнутых на „{{int:protect-level-sysop}}“",
        "right-editsemiprotected": "Едітованя сторінок замкнутых на „{{int:protect-level-autoconfirmed}}“",
        "right-editinterface": "Едітованя інтерфейсу хоснователя",
-       "right-editusercssjs": "Едітованя CSS і JS файлів іншых хоснователїв",
        "right-editusercss": "Едітованя CSS файлів іншых хоснователїв",
        "right-edituserjs": "Едітованя JS файлів іншых хоснователїв",
        "right-editmyusercss": "Едітовати вашы властны хосновательскы CSS файлы.",
        "recentchanges-label-unpatrolled": "Тота зміна дотеперь не была патролёвана.",
        "recentchanges-legend-heading": "<strong>Леґенда:</strong>",
        "recentchanges-legend-newpage": "$1 — нова сторінка",
+       "rcfilters-savedqueries-new-name-label": "Назва",
        "rcnotefrom": "Долов суть вказаны зміны од <strong>$2</strong> (до <strong>$1</strong>).",
        "rclistfrom": "Вказати едітованя почінаючі з $3 $2.",
        "rcshowhideminor": "$1 маленькы едітованя",
        "rcshowhidemine": "$1 мої едітованя",
        "rcshowhidemine-show": "Вказати",
        "rcshowhidemine-hide": "Сховати",
-       "rclinks": "Вказати послїднї $1 зміны за $2 днїв<br />$3",
+       "rclinks": "Вказати послїднї $1 зміны за $2 днїв",
        "diff": "різн.",
        "hist": "історія",
        "hide": "сховати",
        "undeleteviewlink": "видїти",
        "undeleteinvert": "Інвертовати селекцію",
        "undeletecomment": "Причіна:",
-       "undeletedrevisions": "{{PLURAL:$1|Обновлена $1 верзія|Обновлены $1 верзії|Обновленых $1 верзій}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|Обновлена єдна верзія|Обновлены $1 верзії|Обновленых $1 верзій}} і $2 {{PLURAL:$2|файл|файлы|файлів}}.",
-       "undeletedfiles": "{{PLURAL:$1|обновленый $1 файл|обновлены $1 файлы|обновленых $1 файлів}}",
        "cannotundelete": "Обновлїня ся не вдало:\n$1",
        "undeletedpage": "'''$1 была обновлена'''\n\nЗапис о послїднїх мазанях і обновлїнях найдете в  [[Special:Log/delete|книзї змазаных сторінок]].",
        "undelete-header": "Видьте недавно змазаны сторінкы в [[Special:Log/delete|книзї змазаных сторінок]].",
        "tooltip-pt-mycontris": "Список вашых приспівків",
        "tooltip-pt-login": "Рекомендуєме ся приголосити, але не є то повинне.",
        "tooltip-pt-logout": "Одголошіня",
+       "tooltip-pt-createaccount": "Пропонуємо створити обліковий запис і увійти в систему; однак, це не обов'язково",
        "tooltip-ca-talk": "Діскузія о обсягу сторінкы",
        "tooltip-ca-edit": "Тоту сторінку можете едітовати. Просиме, хоснуйте перегляд перед уложінём.",
        "tooltip-ca-addsection": "Створити нову секцію",
        "tooltip-ca-nstab-main": "Обсяг сторінкы",
        "tooltip-ca-nstab-user": "Видїти сторінку хоснователя",
        "tooltip-ca-nstab-media": "Вказати сторінку файлу",
-       "tooltip-ca-nstab-special": "ШпеÑ\86Ñ\96ална Ñ\81Ñ\82оÑ\80Ñ\96нка, Ñ\82ай Ñ\94й Ð½Ðµ Ð³Ð¾Ð´ÐµÐ½ ÐµÐ´Ñ\96Ñ\82оваÑ\82и.",
+       "tooltip-ca-nstab-special": "Це Ñ\81пеÑ\86Ñ\96алÑ\8cна Ñ\81Ñ\82оÑ\80Ñ\96нка, Ð²Ð¾Ð½Ð° Ð½ÐµÐ´Ð¾Ñ\81Ñ\82Ñ\83пна Ð´Ð»Ñ\8f Ñ\80едагÑ\83ваннÑ\8f",
        "tooltip-ca-nstab-project": "Сторінка проєкту",
        "tooltip-ca-nstab-image": "Видїти код сторінкы",
        "tooltip-ca-nstab-mediawiki": "Вказати повідомлїня сістемы",
index 0992814..7875342 100644 (file)
        "externaldberror": "दत्तांशे प्रामाणिकताविषयकः (authentication database) दोषः  स्यात् । अथवा स्वस्य बाह्यसदस्यतायां  (external account) परिवर्तनं कर्तुम् अनुमतिः न भवेत् ।",
        "login": "प्रविश्यताम्",
        "nav-login-createaccount": "प्रविश्यताम् / सदस्यता प्राप्यताम्",
-       "userlogin": "प्रविश्यताम् / सदस्यता प्राप्यताम्",
-       "userloginnocreate": "प्रविश्यताम्",
        "logout": "निर्गम्यताम्",
        "userlogout": "निर्गम्यताम्",
        "notloggedin": "नैव प्रविष्टः",
        "userlogin-noaccount": "सदस्यता नास्ति किम् ?",
        "userlogin-joinproject": "{{SITENAME}} सह योजनम्",
-       "nologin": "सदस्यता नास्ति किम् ? $1",
-       "nologinlink": "सदस्यता प्राप्यताम्",
        "createaccount": "सदस्यता प्राप्यताम्",
-       "gotaccount": "पूर्वमेव सदस्यः अस्ति किम् ? $1",
-       "gotaccountlink": "प्रविश्यताम्",
-       "userlogin-resetlink": "स्वस्य प्रवेशविवरणानि विस्मृतानि किम् ?",
        "userlogin-resetpassword-link": "स्वस्य कूटशब्दः विस्मृतः किम् ?",
        "userlogin-helplink2": "प्रवेशविषयकं साहाय्यम्",
        "userlogin-loggedin": "भवाता/भवत्या पूर्वमेव {{GENDER:$1|$1}} योजकत्वेन प्रवेशः प्राप्तः अस्ति । भिन्नयोजकत्वेन प्रवेष्टुं निम्नप्रपत्रं पूरयतु ।",
        "createacct-another-email-ph": "वि-पत्रसङ्केतः लिख्यताम्",
        "createaccountmail": "अस्थायिनम् अशृङ्खलितं कूटशब्दम् उपयुज्य योग्याय वि-पत्रसङ्केताय प्रेश्यताम् ।",
        "createacct-realname": "वास्तविकं नाम (ऐच्छिकम्)",
-       "createaccountreason": "कारणम् :",
        "createacct-reason": "कारणम्",
        "createacct-reason-ph": "भवतः/भवत्याः अन्यसदस्यतां प्राप्तुं किं प्रयोजनमस्ति ?",
        "createacct-submit": "स्वसदस्यता प्राप्यताम्",
        "preview": "प्राग्दृश्यम्",
        "showpreview": "प्राग्दृश्यं दृश्यताम्",
        "showdiff": "परिवर्तनानि दृश्यन्ताम्",
-       "blankarticle": "<strong>पूर्वसूचना : </strong> भवान्/भवती एकस्य रिक्तपृष्ठस्य निर्माणं करोति ।\nयदि भवान्/भवती \"{{int:savearticle}}\" इत्येतत् पुनः नोत्स्यति, तर्हि रिक्तपृष्ठस्य निर्माणं भविष्यति ।",
+       "blankarticle": "<strong>पूर्वसूचना : </strong> भवान्/भवती एकस्य रिक्तपृष्ठस्य निर्माणं करोति ।\nयदि भवान्/भवती \"$1\" इत्येतत् पुनः नोत्स्यति, तर्हि रिक्तपृष्ठस्य निर्माणं भविष्यति ।",
        "anoneditwarning": "'''पूर्वसूचना''' भवता/भवत्या प्रवेशः न कृतः !\nअत्र सम्पादनं कर्तुं प्रवेशः अनिवार्यः । अन्यथा अस्य पृष्ठस्य इतिहासे भवतः/भवत्याः अन्तर्जालसंविदः (IP) सङ्ख्या अङ्किता भवति । यदि भवान्/भवती <strong>[$1 प्रविषति]</strong> \nउत <strong>[$2 सदस्यातां प्राप्नोति]</strong>, तर्हि अन्यसुविधाभिः सह भवान्/भवती सम्पादनानां श्रेयम् अपि प्राप्स्यति ।",
        "anonpreviewwarning": "''भवता/भवत्या प्रवेशः न स्वीकृतः । अस्य पृष्ठस्य परिवर्तनस्य इतिहासे भवतः/भवत्याः अन्तर्जालसंविदः (IP) उल्लेखो भविष्यति ।''",
-       "missingsummary": "'''स्मरतु''' भवता/भवत्या सम्पादनस्य सारांशः न प्रदत्तः ।\n\"{{int:savearticle}}\" अत्र यदि भवान्/भवती द्वितीयवारं नोत्स्यति, तर्हि भवतः/भवत्याः सम्पादनसारांशात् ऋते परिवर्तनं रक्षितं भविष्यति ।",
-       "selfredirect": "<strong>पूर्वसूचना :</strong> भवान्/भवती एतत् पृष्ठं एतत्पृष्ठं प्रत्येव प्रेषयति ।\nअनुप्रेषिणाय दोषपूर्णं लक्ष्यनिर्देशं भवितुम् अर्हति, अथवा तु भवान्/भवती अशुद्धपृष्ठस्य सम्पादनाय प्रयतते ।\n\"{{int:savearticle}}\" इत्ययत् भवान्/भवती पुनः नुदति चेत्, पुनर्नर्देशनं स्वयमेव भविष्यति ।",
+       "missingsummary": "'''स्मरतु''' भवता/भवत्या सम्पादनस्य सारांशः न प्रदत्तः ।\n\"$1\" अत्र यदि भवान्/भवती द्वितीयवारं नोत्स्यति, तर्हि भवतः/भवत्याः सम्पादनसारांशात् ऋते परिवर्तनं रक्षितं भविष्यति ।",
+       "selfredirect": "<strong>पूर्वसूचना :</strong> भवान्/भवती एतत् पृष्ठं एतत्पृष्ठं प्रत्येव प्रेषयति ।\nअनुप्रेषिणाय दोषपूर्णं लक्ष्यनिर्देशं भवितुम् अर्हति, अथवा तु भवान्/भवती अशुद्धपृष्ठस्य सम्पादनाय प्रयतते ।\n\"$1\" इत्ययत् भवान्/भवती पुनः नुदति चेत्, पुनर्नर्देशनं स्वयमेव भविष्यति ।",
        "missingcommenttext": "कृपया अधः टिप्पणीं लिखतु ।",
-       "missingcommentheader": "'''स्मरतु''' भवता/भवत्या अस्यै टिप्पण्यै विषयः/शीर्षकं न प्रदत्तम् ।\n\"{{int:savearticle}}\" अत्र यदि भवान्/भवती द्वितीयवारं नोत्स्यति, तर्हि भवतः/भवत्याः सम्पादनसारांशात् ऋते एतत् रक्षितं भविष्यति ।",
+       "missingcommentheader": "'''स्मरतु''' भवता/भवत्या अस्यै टिप्पण्यै विषयः/शीर्षकं न प्रदत्तम् ।\n\"$1\" अत्र यदि भवान्/भवती द्वितीयवारं नोत्स्यति, तर्हि भवतः/भवत्याः सम्पादनसारांशात् ऋते एतत् रक्षितं भविष्यति ।",
        "summary-preview": "सारांशस्य प्राग्दृश्यम् :",
        "subject-preview": "विषयस्य/शीर्षकस्य प्राग्दृश्यम्:",
        "previewerrortext": "भवता/भवत्या कृतस्य परिवर्तनस्य प्राग्दृश्यस्य प्रदर्शनकाले दोषः अभवत् ।",
        "editingsection": "$1 (विभागः) सम्पाद्यते",
        "editingcomment": "$1 (नवीनविभागः) सम्पाद्यते",
        "editconflict": "सम्पादनयोः अन्तर्विरोधः : $1",
-       "explainconflict": "भवता/भवत्या यदा सम्पादनं प्रारब्धं, तदारभ्य अन्यजनः अपि अत्र सम्पादनं कुर्वन् आसीत् ।\nअधुना यथा स्थितिः अस्ति, तथा उपरि पेटिकायां द्रष्टुं शक्यते ।\nअधः पेटिकायां भवता/भवत्या कृतानि परिवर्तनानि प्रदर्शितानि सन्ति । \nअधुना पृष्ठे यत् लिखितं वर्तते, तेन सह स्वस्य परिवर्तनानि योजनीयानि भविष्यति । \nभवान्/भवती यदा \" एतत् {{int:savearticle}}\" नुदति, तदा\n<strong>केवलं</strong> उपरिस्तनपेटिकायां यत् लिखितम् अस्ति, तत् रक्षितं भविष्यति ।",
+       "explainconflict": "भवता/भवत्या यदा सम्पादनं प्रारब्धं, तदारभ्य अन्यजनः अपि अत्र सम्पादनं कुर्वन् आसीत् ।\nअधुना यथा स्थितिः अस्ति, तथा उपरि पेटिकायां द्रष्टुं शक्यते ।\nअधः पेटिकायां भवता/भवत्या कृतानि परिवर्तनानि प्रदर्शितानि सन्ति । \nअधुना पृष्ठे यत् लिखितं वर्तते, तेन सह स्वस्य परिवर्तनानि योजनीयानि भविष्यति । \nभवान्/भवती यदा \" एतत् $1\" नुदति, तदा\n<strong>केवलं</strong> उपरिस्तनपेटिकायां यत् लिखितम् अस्ति, तत् रक्षितं भविष्यति ।",
        "yourtext": "भवतः/भवत्याः पाठः",
        "storedversion": "रक्षितसंस्करणम्",
        "nonunicodebrowser": "<strong>पूर्वसूचना : भवतः/भवत्याः गवेषकं (browser) Unicode न समर्थयति ।</strong>\nअत्र भवान्/भवती योग्यरीत्या सम्पादनं कर्तुं शक्ष्यति :\nये वर्णाः ASCII कूटे न भविष्यन्ति, ते hexadecimal वर्णत्वेन प्रदर्शयन्ते ।",
        "right-editsemiprotected": "\"{{int:protect-level-autoconfirmed}}\"-त्वेन संरक्षितानि पृष्ठानि सम्पाद्यन्ताम्",
        "right-editcontentmodel": "एकस्य पृष्ठस्य विषयोदाहरणं सम्पाद्यताम्",
        "right-editinterface": "योजकमाध्यमं सम्पाद्यताम्",
-       "right-editusercssjs": "अन्यस्य सदस्यस्य CSS, JavaScript सञ्चिकाः सम्पाद्यन्ताम्",
        "right-editusercss": "अन्यस्य सदस्यस्य CSS सञ्चिकाः सम्पाद्यन्ताम्",
        "right-edituserjs": "अन्यस्य सदस्यस्य JavaScript सञ्चिकाः सम्पाद्यन्ताम्",
        "right-editmyusercss": "स्वस्य CSS सञ्चिकाः सम्पाद्यन्ताम्",
        "rcshowhidemine": "$1 मम सम्पादनानि",
        "rcshowhidemine-show": "दृश्यताम्",
        "rcshowhidemine-hide": "गोप्यताम्",
-       "rclinks": "अन्तिमेषु $2 दिनेषु जातानि अन्तिमानि $1 परिवर्तनानि दृश्यन्ताम् <br />$3",
+       "rclinks": "अन्तिमेषु $2 दिनेषु जातानि अन्तिमानि $1 परिवर्तनानि दृश्यन्ताम्",
        "diff": "भेदः",
        "hist": "इतिहासः",
        "hide": "गोप्यताम्",
        "undeleteviewlink": "दृश्यताम्",
        "undeleteinvert": "चयनं परिवर्तयतु ।",
        "undeletecomment": "कारणम् :",
-       "undeletedrevisions": "{{PLURAL:$1|संस्करणं पुनस्थापितं|$1 संस्करणानि पुनस्थापितानि}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 संस्करणं|$1 संस्करणानि}} अपि च {{PLURAL:$2|१ सञ्चिका|$2 सञ्चिकाः}} पुनस्थापिताः सन्ति ।",
-       "undeletedfiles": "{{PLURAL:$1|१सञ्चिका|$1 सञ्चिकाः}} पुनस्थापिताः ।",
        "cannotundelete": "अनपाकरणम् असफलम् :\n$1",
        "undeletedpage": "'''$1 इत्येतत् पुनस्थापितम् अस्ति । \nसद्यः अपनीतानि पुनस्थापितानि च पुटाणि ज्ञातुम् अत्र पश्यतु । [[Special:Log/delete|अपनयनप्रवेशः]] ।",
        "undelete-header": "सद्यः एव अपनीतानां पुटानां दर्शनार्थं अत्र प्रविशतु । [[Special:Log/delete|अपनीतावली]] ।",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|अद्यतनीकृतम्}} $4 संस्करणात् $3 इत्येषु $3 पृष्ठानि ({{PLURAL:$7|स्थापितानि}} $6; {{PLURAL:$9|अपाकृतम्}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|अद्यतनीकृतम्}} $5 संस्करणात् $3 इत्येषु $3 पृष्ठानि ({{PLURAL:$7|स्थापितानि}} $6; {{PLURAL:$9|अपाकृतम्}} $8)",
        "rightsnone": "(नैकम्)",
-       "revdelete-summary": "सम्पादनसांक्षेपिक",
        "feedback-adding": "पृष्ठे प्रतिस्पन्दः योजनीयः ...",
        "feedback-back": "प्रतिगम्यताम्",
        "feedback-bugcheck": "उत्तमम् परिशीलयतु यत्  [ $1 known bugs] पूर्वमेव नासीत् इति ।",
index 8c3e93a..1d98160 100644 (file)
        "anontalk": "Ырытыы",
        "navigation": "Навигация",
        "and": "&#32;уонна",
-       "qbfind": "Бул",
-       "qbbrowse": "Көр",
-       "qbedit": "Уларыт",
-       "qbpageoptions": "Бу сирэй",
-       "qbmyoptions": "Мин сирэйдэрим",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Дьайыылар",
        "namespaces": "Аат даллара",
        "variants": "Барыллар",
        "edit-local": "Олохтоох ойуулааһынын уларытыы",
        "create": "Саҥаны айыы",
        "create-local": "Бу туһунан суруйуу",
-       "editthispage": "Бу сирэйи уларыт",
-       "create-this-page": "Бу сирэйи ай",
        "delete": "Соттор",
-       "deletethispage": "Бу сирэйи соттор",
-       "undeletethispage": "Бу сирэйи сөргүт",
        "undelete_short": "{{PLURAL:$1|Биир уларытыыны|$1 уларытыыны}} сөргүт",
        "viewdeleted_short": "{{PLURAL:$1|Соҕотох сотторуллубут көннөрүүнү|$1 сотторуллубут көннөрүүнү}} көрүү",
        "protect": "Уларыппат гын",
        "protect_change": "уларытыы",
-       "protectthispage": "Бу сирэйи уларыппат гын",
        "unprotect": "Көмүскэлин уларыт",
-       "unprotectthispage": "Бу сирэй көмүскэлин уларыт",
        "newpage": "Саҥа сирэй",
-       "talkpage": "Бу сирэйи ырыт",
        "talkpagelinktext": "ырытыы",
        "specialpage": "Анал сирэй",
        "personaltools": "Тус бэйэ туттар тэриллэрэ",
-       "articlepage": "Ыстатыйаны көр",
        "talk": "Ырытыы",
        "views": "Көрүү",
        "toolbox": "Сэп-сэбиргэл",
        "tool-link-userrights": "{{GENDER:$1|Кыттааччы}} бөлөҕүн уларыт",
        "tool-link-userrights-readonly": "{{GENDER:$1|Кыттааччы}} бөлөхтөрүн көр",
        "tool-link-emailuser": "{{GENDER:$1|Кыттааччыга}} сурук суруйуу",
-       "userpage": "Кыттааччы туһунан сирэй",
-       "projectpage": "Бырайыак сирэйэ",
        "imagepage": "Билэ сирэйин көрүү",
        "mediawikipage": "Сурук сирэйэ",
        "templatepage": "Халыып сирэйэ",
        "redirectedfrom": "(Мантан: $1  көстө)",
        "redirectpagesub": "Утаарар сирэй",
        "redirectto": "Манна утаарыы:",
-       "lastmodifiedat": "Бу сирэй бүтэһигин $2, $1 уларыйбыта.",
+       "lastmodifiedat": "Бу сирэйи бүтэһигин $2 $1 уларыппыт.",
        "viewcount": "Бу сирэй {{PLURAL:$1|биирдэ|$1 төгүл}} көрүллүбүт.",
        "protectedpage": "Уларытыллыбат сирэй",
        "jumpto": "Манна көс:",
        "login": "Киир",
        "login-security": "Ким буоларгын бигэргэт",
        "nav-login-createaccount": "Киир / бэлиэтэн",
-       "userlogin": "Киир / бэлиэтэн",
-       "userloginnocreate": "Киир",
        "logout": "Тахсыы",
        "userlogout": "Тахсыы",
        "notloggedin": "Ааккын эппэтиҥ",
        "userlogin-noaccount": "Бэлиэтэнэ иликкин дуо?",
        "userlogin-joinproject": "{{SITENAME}} ситим-сиргэ киирии",
-       "nologin": "Бэлиэтэнэ иликкин дуо? '''$1'''.",
-       "nologinlink": "Бэлиэтэнии",
        "createaccount": "Бэлиэтэнии",
-       "gotaccount": "Бэлиэтэммитиҥ дуо? '''$1'''.",
-       "gotaccountlink": "Аатыҥ",
-       "userlogin-resetlink": "Киирэр тылгын умнубуккун дуо?",
        "userlogin-resetpassword-link": "Аһарык тылгын санаттараҕын дуо?",
        "userlogin-helplink2": "Киирэргэ көмө",
        "userlogin-loggedin": "Маннык аатынан киирбиккин {{GENDER:$1|$1}}.\nАтын аатынан киирэргэ аллара көстөр форманы туһан.",
        "createaccountmail": "Быстах киирии тылы туһаныы уонна ону ыйыллыбыт аадырыска ыытыы",
        "createaccountmail-help": "Атын киһиэхэ аһарыгын билбэккэ эрэ бэлиэ-ааты оҥорон биэрэргэ туттуллуон сөп.",
        "createacct-realname": "Дьиҥнээх аатыҥ (булгуччута суох)",
-       "createaccountreason": "Төрүөтэ:",
        "createacct-reason": "Төрүөтэ",
        "createacct-reason-ph": "Саҥа аатынан тоҕо киирэҕиний",
        "createacct-reason-help": "Саҥаны суруйуу сурунаалыгар тахсар сурук",
        "preview": "Холоон көрүү",
        "showpreview": "Уларытыах иннинэ көрүү",
        "showdiff": "Уларытыылар",
-       "blankarticle": "<strong>Сэрэтии:</strong> Оҥорор сирэйиҥ кураанах.\nБу тимэҕи «{{int:savearticle}}» хос баттаатаххына кураанах сирэй оҥоһуллуо.",
+       "blankarticle": "<strong>Сэрэтии:</strong> Оҥорор сирэйиҥ кураанах.\nБу тимэҕи «$1» хос баттаатаххына кураанах сирэй оҥоһуллуо.",
        "anoneditwarning": "<strong>Болҕой:</strong> Киирбэтэххин. Онон тугу эрэ уларытар түгэҥҥэр аатыҥ оннугар IP аадырыһыҥ барыларыгар көстүө. бу сирэй историятыгар киириэ. Өскөтө <strong>[$1 киирдэххинэ]</strong> эбэтэр <strong>[$2 бэлиэтэннэххинэ]</strong> уларытыыларыҥ Эн ааккын кытта ситимнэниэхтэрэ, ону таһынан ол атын да көдьүүстэрдээх буолуоҕа.",
        "anonpreviewwarning": "''Эн тиһиккэ ааккын эппэттэххин. Уларытыыгын бигэргэттэххинэ IP-аадырыһыҥ сирэй устуоруйатыгар суруллуо.''",
        "missingsummary": "'''Санатыы:''' Уларыппытыҥ кылгас быһаарыытын суруйбатаххын. Уларытыыны бигэргэттэххинэ улартытыыҥ хос быһаарыыта суох барыа.",
-       "selfredirect": "<strong>Болҕой:</strong> Утаарыыны ыстатыйа бэйэтигэр оҥороору гынныҥ.\nБаҕар, утаарыы сирэйин атыны суруйаары гыммытыҥ буолуо эбэтэр атын сирэйи көннөрө олороҕун. \nОл да буоллар, өскө «{{int:savearticle}}» баттамы хат баттаатаххына, утаары оҥоһуллуо.",
+       "selfredirect": "<strong>Болҕой:</strong> Утаарыыны ыстатыйа бэйэтигэр оҥороору гынныҥ.\nБаҕар, утаарыы сирэйин атыны суруйаары гыммытыҥ буолуо эбэтэр атын сирэйи көннөрө олороҕун. \nОл да буоллар, өскө «$1» баттамы хат баттаатаххына, утаары оҥоһуллуо.",
        "missingcommenttext": "Манна хос быһаарыыны суруй.",
-       "missingcommentheader": "<strong>Санатыы:</strong> Хос быһаарыы аатын суруйбатаххын.\n«{{int:savearticle}}» тимэҕи баттаан бигэргэттэххинэ быһаарыыҥ аата суох барыа.",
-       "summary-preview": "Хос быһаарыыны көрүү:",
+       "missingcommentheader": "<strong>Санатыы:</strong> Хос быһаарыы аатын суруйбатаххын.\n«$1» тимэҕи баттаан бигэргэттэххинэ быһаарыыҥ аата суох барыа.",
+       "summary-preview": "ХоÑ\81 Ð±Ñ\8bһааÑ\80Ñ\8bÑ\8bнÑ\8b Ð±Ð¸Ð³Ñ\8dÑ\80гÑ\8dÑ\82иÑ\8dÑ\85 Ð¸Ð½Ð½Ð¸Ð½Ñ\8d ÐºÓ©Ñ\80Ò¯Ò¯:",
        "subject-preview": "Аата маннык көстүөҕэ:",
        "previewerrortext": "Уларытыыгын бигэргэтиэх иннинэ көрдөрөргө алҕас таҕыста.",
        "blockedtitle": "Кыттааччы уларытар кыаҕа быһылынна",
        "editingsection": "Уларытыы $1 (раздел)",
        "editingcomment": "Уларытыы $1 (саҥа салаа)",
        "editconflict": "Уларытыы мөккүөрэ: $1",
-       "explainconflict": "Ыстатыйаны көннөрө олордоххутуна ким эрэ эмиэ бу ыстатыйаны көннөрбүт.\nҮөһээҥи түннүккэ \"Уларытыыны бигэргэт\" тимэҕи баттаатахха киириэхтээх барыл сурулунна.\nАлларааҥы түннүккэ эн барылыҥ көстөр.\nБэйэҥ уларытыыгын киллэриэххин баҕарар буоллаххына аллараттан үөһээҥи түннүккэ уларытыыларгын көһөр.\n\"{{int:savearticle}}\" баттаатаххына үөһээҥи '''эрэ''' тиэкис хаалыаҕа.",
+       "explainconflict": "Ыстатыйаны көннөрө олордоххутуна ким эрэ эмиэ бу ыстатыйаны көннөрбүт.\nҮөһээҥи түннүккэ \"Уларытыыны бигэргэт\" тимэҕи баттаатахха киириэхтээх барыл сурулунна.\nАлларааҥы түннүккэ эн барылыҥ көстөр.\nБэйэҥ уларытыыгын киллэриэххин баҕарар буоллаххына аллараттан үөһээҥи түннүккэ уларытыыларгын көһөр.\n\"$1\" баттаатаххына үөһээҥи '''эрэ''' тиэкис хаалыаҕа.",
        "yourtext": "Тиэкиһиҥ",
        "storedversion": "Суруллубут барыл",
        "nonunicodebrowser": "'''СЭРЭТИИ: Интэриниэтиҥ бырагырааммата Юникод кодировканы билиммэт эбит. Ыстатыйаны уларытаргар ASCII-тан атын бэлиэлэр шестнадцатиричнай кодка уларытыллыахтара.'''",
        "readonlywarning": "<strong>Сэрэтии: Сиэрбэргэ техническай үлэ бара турар, онон киллэрбит уларытыыларыҥ тута бигэргэнэр кыахтара суох.</strong>\nОнон уларытыыгын тиэкистээх билэҕэ уган хаалларан баран, манна кэлин угуоххун сөп.\n\nХааччаҕы туруорбут дьаһабыл маннык быһаарыыны хаалларбыт: $1",
        "protectedpagewarning": "'''Сэрэтии:  Бу сирэй хатанан турар, администратор бырааптаах эрэ кыттааччылар уларытар кыахтаахтар.'''\nАллара сурунаал бүтэһик суруга көрдөрүлүннэ:",
        "semiprotectedpagewarning": "'''Биллэрии:''' Бу сирэй хатанан турар; ааттарын билиһиннэрбит эрэ кыттааччылар уларытар кыахтаахтар.\nАллара сурунаал бүтэһик суруга көрдөрүлүннэ:",
-       "cascadeprotectedwarning": "<strong>Сэрэтии:</strong> Бу сирэйи дьаһабыллар эрэ уларытар кыахтаахтар, тоҕо диэтэххэ сирэй каскаднай көмүскэллээх {{PLURAL:$1|сирэй бөлөҕөр|сирэйдэр бөлөхтөрүгэр}} киирэр:",
+       "cascadeprotectedwarning": "<strong>Сэрэтии:</strong> Бу сирэйи [[Special:ListGroupRights|анал бырааптаах дьон]] эрэ уларытар кыахтаахтар, тоҕо диэтэххэ сирэй каскаднай көмүскэллээх {{PLURAL:$1|сирэй бөлөҕөр|сирэйдэр бөлөхтөрүгэр}} киирэр:",
        "titleprotectedwarning": "'''Сэрэтии:  Маннык ааттаах сирэйи уларытар бобуллубут, [[Special:ListGroupRights|анал бырааптаах эрэ дьон]] уларытыахтарын сөп .'''\nАллара сурунаал бүтэһик суруга көрдөрүлүннэ:",
        "templatesused": "Манна туттуллубут {{PLURAL:$1|халыып|халыыптар}} :",
        "templatesusedpreview": "Манна туттуллубут {{PLURAL:$1|халыып|халыыптар}} бигэргэтиэх иннинэ көстүүлэрэ:",
        "post-expand-template-argument-warning": "Болҕой. Бу сирэйгэ баар халыып биир эбэтэр элбэх наһаа улахан ыйааһыннаах толоруллар аргуменнаах эбит.\nОннук аргуменнар толоруллубатылар.",
        "post-expand-template-argument-category": "Толоруллубатах (көтүтүллүбүт) аргуменнаах сирэйдэр",
        "parser-template-loop-warning": "Халыыптар бэйэ бэйлэригэр сигэниилэрэ (петля) булулунна: [[$1]]",
+       "template-loop-category": "Халыыптара бэйэ бэйэлэригэр сигэнэр сирэйдэр",
+       "template-loop-category-desc": "Бу сирэй халыыба бэйэтин ыҥырар, ол аата бэйэтин холбуу сатыыр эбит.",
        "parser-template-recursion-depth-warning": "($1) халыып рекурсиятын муҥура бүппүт (Превышен предел глубины рекурсии)",
        "language-converter-depth-warning": "Тыл конвертерын дириҥин хааччаҕа куоһарыллыбыт ($1)",
        "node-count-exceeded-category": "Түмүктэрин ахсаана аһара барбыт сирэйдэр",
        "page_first": "бастакы",
        "page_last": "бүтэһик",
        "histlegend": "Барыллары тэҥнииргэ икки радиокнопканы бэлиэтээ. <br />\nБыһаарыылар: (бил.) = билигин баар барылтан атына,\n(инн.) = инники баар барылтан атына, '''к.''' = улахан суолтата суох көннөрүү.",
-       "history-fieldset-title": "Ð\98Ñ\81Ñ\82оÑ\80иÑ\8fÑ\82Ñ\8bн ÐºÓ©Ñ\80Ò¯Ò¯",
-       "history-show-deleted": "СоÑ\82Ñ\83ллÑ\83бÑ\83Ñ\82Ñ\82аÑ\80Ñ\8b эрэ",
+       "history-fieldset-title": "УлаÑ\80Ñ\8bÑ\82Ñ\8bÑ\8bлаÑ\80Ñ\8b ÐºÓ©Ñ\80дөөһүн",
+       "history-show-deleted": "СоÑ\82Ñ\83ллÑ\83бÑ\83Ñ\82Ñ\83 эрэ",
        "histfirst": "саамай эргэ",
        "histlast": "саамай саҥа",
        "historysize": "({{PLURAL:$1|1 байт|$1 баайтаах}})",
        "search-file-match": "(билэ иһинээҕитин кытта сөп түбэһэр)",
        "search-suggest": "Баҕар маннык диэри гыммытыҥ буолуо: $1",
        "search-rewritten": "Бу түмүктэрэ көстөллөр: $1. Ол оннугар маны көрдөт: $2.",
-       "search-interwiki-caption": "Уруулуу бырайыактар",
+       "search-interwiki-caption": "Уруулуу бырайыактарга",
        "search-interwiki-default": "$1 түмүгэ:",
        "search-interwiki-more": "(өссө)",
+       "search-interwiki-more-results": "эбии көстүбүт",
        "search-relatedarticle": "Сигэнэр",
        "searchrelated": "сибээстэммит",
        "searchall": "бары",
        "youremail": "E-mail-ыҥ:",
        "username": "{{GENDER:$1|Бэлиэтэммит аатыҥ}}:",
        "prefs-memberingroups": "Бу {{PLURAL:$1|бөлөххө|бөлөхтөргө}} {{GENDER:$2|киирэр}}:",
+       "group-membership-link-with-expiry": "$1 (маныаха диэри $2)",
        "prefs-registration": "Бэлиэтэнии кэмэ:",
        "prefs-registration-date-time": "$1",
        "yourrealname": "Докумуонунан аатыҥ:",
        "prefs-help-prefershttps": "Аныгыскы киириигэр үлэлиир буолуо.",
        "prefswarning-warning": "Туруорууларгын уларыппыккын ол эрэн бигэргэппэтэххин.\nБу сирэйтэн «$1» баттамы баттаабакка таҕытаххына, барыта уруккутунан хаалыа.",
        "prefs-tabs-navigation-hint": "Сүбэ: Көмпүүтэриҥ клаватууратын стрелкаларын туһанан кыбытыктан кыбытыкка көһүөххүн сөп.",
-       "userrights": "Кыттааччылар бырааптарын салайыы",
+       "userrights": "Кыттааччылар бырааптара",
        "userrights-lookup-user": "Кыттааччыны талыы",
        "userrights-user-editname": "Кыттааччы аата:",
        "editusergroup": "Кыттааччы бөлөхтөрүн көрдөрүү",
        "editinguser": "<strong>[[User:$1|$1]]</strong> кыттааччы $2 быраабын уларытыы",
        "viewinguserrights": "{{GENDER:$1|Кыттааччы}} быраабын көрүү <strong>[[User:$1|$1]]</strong> $2",
-       "userrights-editusergroup": "Кыттааччы бөлөхтөрүн уларытарга",
-       "userrights-viewusergroup": "Кыттааччы бөлөхтөрүн көрүү",
+       "userrights-editusergroup": "{{GENDER:$1|Кыттааччы}} бөлөхтөрүн уларытарга",
+       "userrights-viewusergroup": "{{GENDER:$1|Кыттааччы}} бөлөхтөрүн көрүү",
        "saveusergroups": "{{GENDER:$1|Кыттааччы}} бөлөхтөрүн бигэргэт",
        "userrights-groupsmember": "Бу бөлөхтөргө киирэр:",
        "userrights-groupsmember-auto": "Көстүбэт чилиэн:",
-       "userrights-groups-help": "Ð\91Ñ\83 ÐºÐ¸Ò»Ð¸ ÐºÐ¸Ð¸Ñ\80Ñ\8dÑ\80 Ð±Ó©Ð»Ó©Ñ\85Ñ\82Ó©Ñ\80үн Ñ\83лаÑ\80Ñ\8bÑ\82Ñ\8bаÑ\85Ñ\85Ñ\8bн Ñ\81өп:\n* Ð\91өлөÑ\85 Ð°Ð°Ñ\82Ñ\8bн Ñ\82аһÑ\8bгаÑ\80 Ð±Ñ\8dлиÑ\8d Ñ\82Ñ\83Ñ\80аÑ\80 Ð±Ñ\83оллаÒ\95Ñ\8bна Ð±Ñ\83 ÐºÑ\8bÑ\82Ñ\82ааÑ\87Ñ\87Ñ\8b Ð±Ñ\83 Ð±Ó©Ð»Ó©Ñ\85Ñ\85Ó© ÐºÐ¸Ð¸Ñ\80Ñ\8dÑ\80.\n* Ð\91Ñ\8dлиÑ\8d Ñ\81Ñ\83оÑ\85 Ð±Ñ\83оллаÒ\95Ñ\8bна - ÐºÑ\8bÑ\82Ñ\82ааÑ\87Ñ\87Ñ\8b Ð±Ó©Ð»Ó©Ñ\85Ñ\85Ó© ÐºÐ¸Ð¸Ñ\80бÑ\8dÑ\82\n* Ð\9cаннÑ\8bк Ð±Ñ\8dлиÑ\8d * ÐºÑ\8bÑ\82Ñ\82ааÑ\87Ñ\87Ñ\8b Ð±Ó©Ð»Ó©Ñ\85Ñ\85Ó© ÐºÐ¸Ð¸Ñ\80Ñ\8dÑ\80ин/кииÑ\80бÑ\8dÑ\82ин Ñ\83лаÑ\80Ñ\8bÑ\82аÑ\80 ÐºÑ\8bаÒ\95Ñ\8bÒ¥ Ñ\81Ñ\83оÒ\95Ñ\83н ÐºÓ©Ñ\80дөÑ\80Ó©Ñ\80.",
+       "userrights-groups-help": "Ð\91Ñ\83 ÐºÐ¸Ò»Ð¸ ÐºÐ¸Ð¸Ñ\80Ñ\8dÑ\80 Ð±Ó©Ð»Ó©Ñ\85Ñ\82Ó©Ñ\80үн Ñ\83лаÑ\80Ñ\8bÑ\82Ñ\8bаÑ\85Ñ\85Ñ\8bн Ñ\81өп:\n* Ð\91өлөÑ\85 Ð°Ð°Ñ\82Ñ\8bн Ñ\82аһÑ\8bгаÑ\80 Ð±Ñ\8dлиÑ\8d Ñ\82Ñ\83Ñ\80аÑ\80 Ð±Ñ\83оллаÒ\95Ñ\8bна Ð±Ñ\83 ÐºÑ\8bÑ\82Ñ\82ааÑ\87Ñ\87Ñ\8b Ð¾Ð» Ð±Ó©Ð»Ó©Ñ\85Ñ\85Ó© ÐºÐ¸Ð¸Ñ\80Ñ\8dÑ\80.\n* Ð\91Ñ\8dлиÑ\8d Ñ\81Ñ\83оÑ\85 Ð±Ñ\83оллаÒ\95Ñ\8bна - ÐºÑ\8bÑ\82Ñ\82ааÑ\87Ñ\87Ñ\8b Ð¾Ð» Ð±Ó©Ð»Ó©Ñ\85Ñ\85Ó© ÐºÐ¸Ð¸Ñ\80бÑ\8dÑ\82\n* Ð\9cаннÑ\8bк Ð±Ñ\8dлиÑ\8d * ÐºÑ\8bÑ\82Ñ\82ааÑ\87Ñ\87Ñ\8b Ð±Ó©Ð»Ó©Ñ\85Ñ\85Ó© ÐºÐ¸Ð¸Ñ\80Ñ\8dÑ\80ин/кииÑ\80бÑ\8dÑ\82ин Ñ\83лаÑ\80Ñ\8bÑ\82аÑ\80 ÐºÑ\8bаÒ\95Ñ\8bÒ¥ Ñ\81Ñ\83оÒ\95Ñ\83н ÐºÓ©Ñ\80дөÑ\80Ó©Ñ\80.\n* Ð\9cаннÑ\8bк Ð±Ñ\8dлиÑ\8d # ÐºÑ\8bÑ\82Ñ\82ааÑ\87Ñ\87Ñ\8b Ð±Ó©Ð»Ó©Ñ\85Ñ\85Ó© ÐºÐ¸Ð¸Ñ\80Ñ\8dÑ\80 Ð±Ð¾Ð»Ð´Ñ\8cоÒ\95Ñ\83н Ñ\85ойÑ\83Ñ\82аÑ\82аÑ\80 Ð±Ñ\8bÑ\80аапÑ\82ааÑ\85Ñ\85Ñ\8bн ÐºÓ©Ñ\80дөÑ\80Ó©Ñ\80, Ð¾Ð» Ñ\8dÑ\80Ñ\8dÑ\8dÑ\80и Ñ\8dÑ\80дÑ\8dлÑ\8dÑ\82Ñ\8dÑ\80 ÐºÑ\8bаÒ\95Ñ\8bÒ¥ Ñ\81Ñ\83оÑ\85.",
        "userrights-reason": "Төрүөтэ:",
        "userrights-no-interwiki": "Атын биикилэргэ кыттааччылар бырааптарын уларытар быраабыҥ суох.",
        "userrights-nodatabase": "$1 билэ тиһигэ (олоҕо, база данных) суох эбэтэр локальнай буолбатах.",
        "userrights-changeable-col": "Эн уларытар кыахтаах бөлөхтөрүҥ",
        "userrights-unchangeable-col": "Бу бөлөхтөрү уларытар кыаҕыҥ суох",
+       "userrights-expiry-current": "Болдьоҕо баччаҕа бүтэр: $1",
+       "userrights-expiry-none": "Хаһан да",
+       "userrights-expiry": "Болдьоҕо баччаҕа бүтэр:",
+       "userrights-expiry-existing": "Билиҥҥи болдьоҕо: $3, $2",
+       "userrights-expiry-othertime": "Атын болдьох:",
+       "userrights-expiry-options": "1 күн:1 күн,1 нэдиэлэ:1 нэдиэлэ,1 ый:1 ый,3 ый:3 ый,6 ый:6 ый,1 сыл:1 сыл",
+       "userrights-invalid-expiry": "«$1» бөлөх болдьоҕо алҕастаах ыйыллыбыт.",
+       "userrights-expiry-in-past": "«$1» бөлөх болдьоҕо ааспыт кэмҥэ ыйыллыбыт.",
+       "userrights-cannot-shorten-expiry": "«$1» бөлөххө чилиэнниир болдьоҕу эрдэтээҥҥигэ көһөрөр кыаҕыҥ суох эбит. Бу бөлөххө дьону эбэр кыахтаах дьон эрэ ону оҥоруохтарын сөп.",
        "userrights-conflict": "Кыттааччы быраабын быһаарарга алҕас таҕыста! Хатылаан көр.",
        "group": "Бөлөх:",
        "group-user": "Кыттааччылар",
        "right-editsemiprotected": "Уларытыллар сирэйдэр \"{{int:protect-level-autoconfirmed}}\" таһымынан көмүскэммиттэр",
        "right-editcontentmodel": "Сирэй ис тутулун уларытыы",
        "right-editinterface": "Кыттааччы интерфейсын уларытыы",
-       "right-editusercssjs": "Атын кыттааччылар CSS- и JS-билэлэрин уларытыы",
        "right-editusercss": "Атын кыттааччылар CSS-билэлэрин уларытыы",
        "right-edituserjs": "Атын кыттааччылар JS-билэлэрин уларытыы",
        "right-editmyusercss": "Кыттааччы CSS-билэтин уларытыы",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (өссө көр: [[Special:NewPages|Саҥа сирэйдэр тиһиктэрэ]])",
        "recentchanges-submit": "Көрдөр",
        "rcfilters-activefilters": "Холбоммут сиидэлэр",
+       "rcfilters-quickfilters": "Сиидэ бигэргэммит туруоруулара",
+       "rcfilters-quickfilters-placeholder-title": "Бигэргэммит сигэ билигин суох",
+       "rcfilters-quickfilters-placeholder-description": "Сиидэ туруорууларын кэлин туһанарга, \"Холбоммут сиидэ\" хонуутугар кыбытык ойуутун баттаа.",
+       "rcfilters-savedqueries-defaultlabel": "Бигэргэммит сиидэлэр",
+       "rcfilters-savedqueries-rename": "Аатын уларыт",
+       "rcfilters-savedqueries-setdefault": "Уларыппаккаҕын хааллар",
+       "rcfilters-savedqueries-unsetdefault": "Эбии этиллибэтэҕинэ талыллары суох гын",
+       "rcfilters-savedqueries-remove": "Сот",
+       "rcfilters-savedqueries-new-name-label": "Аата",
+       "rcfilters-savedqueries-apply-label": "Туруоруулары өйдөөн хаалыы",
+       "rcfilters-savedqueries-cancel-label": "Салҕаама",
+       "rcfilters-savedqueries-add-new-title": "Сиидэлэ билиҥҥи туруорууларын хааллар",
+       "rcfilters-restore-default-filters": "Анаан этиллибэтэҕинэ турар сиидэлэри холбоо",
+       "rcfilters-clear-all-filters": "Сиидэлэри барытын суох гын",
        "rcfilters-search-placeholder": "Сиидэлэри кэнники уларытыы (көр биитэр киллэр)",
        "rcfilters-invalid-filter": "Сатаммат сиидэ",
+       "rcfilters-empty-filter": "Холбоммут сиидэ суох. Улартыы барыта көстөр.",
        "rcfilters-filterlist-title": "Сиидэ",
+       "rcfilters-filterlist-whatsthis": "Бу тугуй?",
+       "rcfilters-filterlist-feedbacklink": "Саҥа (бета) сиидэлэр тустарынан суруй",
+       "rcfilters-highlightbutton-title": "Түмүгүн бэлиэтээ",
+       "rcfilters-highlightmenu-title": "Өҥүн тал",
+       "rcfilters-highlightmenu-help": "Өҥүн талан, көстөр гын",
        "rcfilters-filterlist-noresults": "Сиидэ көстүбэтэ",
+       "rcfilters-noresults-conflict": "Көрдөөһүн мэктиэлэрин мөккүөрэ тахсан, туох да көстүбэтэ",
+       "rcfilters-state-message-subset": "Сиидэ туһата суох, тоҕо диэтэххэ кини түмүгэ атын {{PLURAL:$2|сиидэ түмүгэр|сиидэлэр түмүктэригэр}} киирэр эбит (өҥүн уларытыыны туһанан сиһилии көрүөххүн сөп): $1",
+       "rcfilters-state-message-fullcoverage": "Сиидэни барытын талыы тугу да талбатаҕыҥ тэҥэ, онон сиидэ туһата суох. Холбоммут бөлөхтөр: $1",
+       "rcfilters-filtergroup-registration": "Кыттааччылары бэлиэтээһин",
+       "rcfilters-filter-registered-label": "Бэлиэтэммиттэр",
+       "rcfilters-filter-registered-description": "Киирбит эрэдээктэрдэр.",
+       "rcfilters-filter-unregistered-label": "Бэлиэтэммэтэхтэр",
+       "rcfilters-filter-unregistered-description": "Киирбэтэх эрэдээктэрдэр.",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "Бу сиидэ бэлиэтэммит эрэ кыттааччылары көрөр {{PLURAL:$2|сиидэни|сиидэлэри}} кытта сөп түбэспэт: $1",
        "rcfilters-filtergroup-authorship": "Ааптарын уларытыы",
        "rcfilters-filter-editsbyself-label": "Эн тус бэйэҥ уларытыыларыҥ",
        "rcfilters-filter-editsbyself-description": "Бэйэҥ уларытыыларыҥ.",
-       "rcfilters-filter-editsbyother-label": "Атыттар уларытыылара.",
-       "rcfilters-filter-editsbyother-description": "Атыттар уларытыылара (Эйиэнэ буолбатах).",
-       "rcfilters-filtergroup-userExpLevel": "Кыттааччы уопутун таһымынан",
-       "rcfilters-filter-userExpLevel-newcomer-label": "Саҥа киирбиттэр",
-       "rcfilters-filter-userExpLevel-newcomer-description": "Отой саҥалар: 10 көннөрүүттэн аҕыйаҕы оҥорбуттар уонна бэлиэтэмиттэрэ 4 хоно иликтэр.",
-       "rcfilters-filter-userExpLevel-learner-label": "Үөрэнээччилэр",
+       "rcfilters-filter-editsbyother-label": "Атыттар уларытыылара",
+       "rcfilters-filter-editsbyother-description": "Атыттар уларытыылара (Эйиэниттэн ураты).",
+       "rcfilters-filtergroup-userExpLevel": "Кыттааччы уопутун таһымынан (бэлиэтэммиттэргэ эрэ)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Уопуту көрөр сиидэ бэлиэтэммит эрэ кыттааччылары көрөр, онон \"Бэлиэтэммэтэх\" диэнинэн көрдүүр сиидэни кытта бииргэ сатаан туттуллубат.",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"Бэлиэтэммэтэх\" диэнинэн көрдүүр сиидэ уопуту көрөр биир дуу хас да дуу сиидэни кытта сатаан туттуллубат, тоҕо диэтэххэ уоупут көрөр сиидэлэр бэлиэтэммит эрэ кыттааччылары көрөллөр. Сөп түбэспэт сиидэлэр үөһэ көстөллөр.",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Саҥа киирбиттэр",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Отой саҥалар: 10 көннөрүүттэн аҕыйаҕы оҥорбуттар уонна бэлиэтэмиттэрэ 4 хоно иликтэр.",
+       "rcfilters-filter-user-experience-level-learner-label": "Үөрэнээччилэр",
+       "rcfilters-filter-user-experience-level-learner-description": "\"Саҕалааччыттан\" элбэх, \"уопуттаахтан\" аҕыйах уопуттаах.",
+       "rcfilters-filter-user-experience-level-experienced-label": "Уопуттаах кыттааччылар",
+       "rcfilters-filter-user-experience-level-experienced-description": "30 хонуктан ордук үлэлээбит уонна 500 көннөрүүнү оҥорбуттар.",
+       "rcfilters-filtergroup-automated": "Аптамаат көннөрүүлэр",
+       "rcfilters-filter-bots-label": "Оруобат",
+       "rcfilters-filter-bots-description": "Аптамаатынан оҥоһуллубут көннөрүүлэр.",
+       "rcfilters-filter-humans-label": "Киһи (оруобат буолбатах)",
+       "rcfilters-filter-humans-description": "Кыттааччылар оҥорбут уларытыылара.",
+       "rcfilters-filtergroup-reviewstatus": "Тургутуу туруга",
+       "rcfilters-filter-patrolled-label": "Ботуруулламмыт",
+       "rcfilters-filter-patrolled-description": "Ботуруулламмыт курдук бэлиэтэммит уларытыылар.",
+       "rcfilters-filter-unpatrolled-label": "Ботуруулламматах",
+       "rcfilters-filter-unpatrolled-description": "Ботуруулламмыт курдук бэлиэтэммэтэх уларытыылар.",
+       "rcfilters-filtergroup-significance": "Суолтата",
+       "rcfilters-filter-minor-label": "Кыра уларытыы",
+       "rcfilters-filter-minor-description": "Ааптар суолтата суох курдук бэлиэтээбит уларытыылара.",
+       "rcfilters-filter-major-label": "Көннөрү уларытыылар",
+       "rcfilters-filter-major-description": "Кыра уларытыы курдук бэлиэтэммэтэхтэр.",
+       "rcfilters-filtergroup-watchlist": "Кэтэбил испииһэгин сирэйдэрэ",
+       "rcfilters-filter-watchlist-watched-label": "Испииһэккэ",
+       "rcfilters-filter-watchlist-watched-description": "Кэтэбилиҥ испииһэгэр уларытыылар",
+       "rcfilters-filter-watchlist-watchednew-label": "Саҥа уларытыылар",
+       "rcfilters-filter-watchlist-watchednew-description": "Уларытыыларын көрө илик испииһэккэр баар сирэйдэриҥ.",
+       "rcfilters-filter-watchlist-notwatched-label": "Кэтэбилгэ суох",
+       "rcfilters-filter-watchlist-notwatched-description": "Кэтэбил тиһилигэр киирбит ыстатыйалары уларытыыттан уратыны барытын.",
+       "rcfilters-filtergroup-changetype": "Уларытыы көрүҥэ",
+       "rcfilters-filter-pageedits-label": "Сирэй уларытыылара",
+       "rcfilters-filter-pageedits-description": "Ис хоһоонун, ырытыылары, категорияны ойуулааһыны эҥин уларытыы...",
+       "rcfilters-filter-newpages-label": "Сирэйдэри оҥоруу",
+       "rcfilters-filter-newpages-description": "Саҥа сирэйи оҥорор уларытыылар.",
+       "rcfilters-filter-categorization-label": "Категория уларыйыылара",
+       "rcfilters-filter-categorization-description": "Категорияттан сотуллубут дуу, категорияҕа эбиллибит дуу сирэйдэр тустарынан суруйуулар.",
+       "rcfilters-filter-logactions-label": "Боротокуолланар дьайыылар",
+       "rcfilters-filter-logactions-description": "Дьаһайар дьайыылар, бэлиэ-аат оҥоруу, сирэй сотуу, билэ угуу...",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "\"Кыра көннөрүүлэр\" сиидэ атын сиидэни эбэтэр сиидэлэри кытта сөп түбэспэтэ, \nтоҕо диэтэххэ сорох көннөрүүлэр кыра дэнэллэрэ сатаммат эбит.\nСөп түбэспэт сиидэлэр үөһэ, Холбоммут сиидэлэр хонууларыгар бэлиэтэммиттэр.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Сорох көннөрүүлэр \"кыра\" диэн ааттанар кыахтара суох, онон сиидэ бу сиидэни кытта сөп түбэспэтэ: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Сиидэ бу көрүҥэ кыра көннөрүүлэр сиидэлэрин кытта тапсыбат. Сорох көннөрүүлэр \"кыра\" курдук бэлиэтэнэр кыахтара суох.",
+       "rcfilters-filtergroup-lastRevision": "Тиһэх барыл",
+       "rcfilters-filter-lastrevision-label": "Тиһэх барыл",
+       "rcfilters-filter-lastrevision-description": "Сирэй тиһэх уларыйыыта.",
+       "rcfilters-filter-previousrevision-label": "Эрдэ оҥоһуллубут көннөрүүлэр",
+       "rcfilters-filter-previousrevision-description": "Тиһэх көннөрүүттэн ураты бары уларытыылар.",
        "rcnotefrom": "Манна {{PLURAL:$5|уларытыы көрдөрүлүннэ|уларытыылар көһүннүлэр}} баччаттан <strong>$3, $4</strong> (баччаттан элбэх көстүбэт <strong>$1</strong>).",
+       "rclistfromreset": "Дьылын-күнүн сот",
        "rclistfrom": "Бу кэм $3 $2 кэнниттэн оҥоһуллубуттары көрдөр",
        "rcshowhideminor": "$1 кыра уларыйыылары",
        "rcshowhideminor-show": "Көрдөр",
        "rcshowhidecategorization": "$1 сирэй категориялааһынын",
        "rcshowhidecategorization-show": "Көрдөр",
        "rcshowhidecategorization-hide": "Кистээ",
-       "rclinks": "$2 күҥҥэ бүтэһик $1 уларытыыны көрдөр;<br />$3.",
+       "rclinks": "$2 күҥҥэ бүтэһик $1 уларытыыны көрдөр;",
        "diff": "уратыта",
        "hist": "устуоруйата",
        "hide": "Кистээ",
        "php-uploaddisabledtext": "PHP туруорууларыгар билэни киллэрии араарыллыбыт. Бука диэн, file_uploads туруоруутун көр.",
        "uploadscripted": "Бу билэ HTML эбэтэр скрипт куодтаах эбит. Интэриниэт көрдөрөр бырагыраамма ону сыыһа ааҕыан сөп.",
        "upload-scripted-pi-callback": "XML истиилин табылыыссатын таҥастыыр туһунан ыйыылаах-кэрдиилээх билэни хачайдыыр табыллыбата.",
+       "upload-scripted-dtd": "Ыстандаарка сөп түбэспэт DTD-биллэриилээх SVG-билэни хачайдыыр сатаммат.",
        "uploaded-script-svg": "Хачайдаммыт SVG-билэҕэ сценарийы өйүүр куттааллаах «$1» элэмиэн көһүннэ.",
        "uploaded-hostile-svg": "Хачайдаммыт SVG-билэ истиилин элэмиэнигэр кутталлаах CSS-куод көһүннэ.",
        "uploaded-event-handler-on-svg": "SVG-билэлэргэ <code>$1=\"$2\"</code> сабыытыйаны таҥастааччы атрибууттарын туруоруу көҥүллэммэт.",
        "uncategorizedcategories": "Ханнык да категорияҕа киирбэтэх категориялар",
        "uncategorizedimages": "Ханнык да категорияҕа киирбэтэх ойуулар",
        "uncategorizedtemplates": "Ханнык да категорияҕа киирбэтэх халыыптар",
+       "uncategorized-categories-exceptionlist": "# Манна Special:UncategorizedCategories ахтыллыа суохтаах категориялар испииһэктэрэ. Устуруока аайы биирдии, «*» бэлиэттэн саҕаланар. Атын бэлиэттэн саҕаланар устуруокалар (арыттан саҕаланар эмиэ) аахсыллыбаттар. Быһаарыы суруйарга «#» бэлиэни тутун.",
        "unusedcategories": "Туттуллубатах категориялар",
        "unusedimages": "Туттулубатах билэлэр",
        "wantedcategories": "Көрдөнүллэр категориялар",
        "prefixindex-strip": "Түмүк тиһигэр префиксы көрдөрүмэ",
        "shortpages": "Кылгас ыстатыйалар",
        "longpages": "Уһун ыстатыйалар",
-       "deadendpages": "Dead-end (Бүтэй) сирэйдэр",
+       "deadendpages": "Бүтэй сирэйдэр",
        "deadendpagestext": "Бу ыстатыйалар {{SITENAME}} саайтын атын сирэйдэригэр сигэммэттэр.",
        "protectedpages": "Көмүскэммит ыстатыйалар",
        "protectedpages-indef": "Болдьоҕо суох эрэ көмүскэллэр",
        "apisandbox-sending-request": "API-көрдөбүлү ыытыы…",
        "apisandbox-loading-results": "API-түмүгүн ылыы…",
        "apisandbox-results-error": "Көрдөбүлгэ API-хоруйу киллэрии  кэмигэр алҕас таҕыста: $1.",
+       "apisandbox-request-selectformat-label": "Көрдөбүлү маннык көрдөр:",
+       "apisandbox-request-format-url-label": "Көрдөбүл URL-ун устуруоката",
        "apisandbox-request-url-label": "Көрдөбүл URL-аадырыһа:",
+       "apisandbox-request-json-label": "JSON көрдөө:",
        "apisandbox-request-time": "Көрдөбүл болдьоҕо: {{PLURAL:$1|$1 мс}}",
        "apisandbox-results-fixtoken": "Токены көннөрөн баран саҥаттан ыыт.",
        "apisandbox-results-fixtoken-fail": "«$1» токены ыҥырар табыллыбата.",
        "enotif_body_intro_restored": "$PAGEEDITDATE «{{SITENAME}}» бырайыак «$1» ааттаах сирэйин бу {{gender:$2|кыттааччы|кыттааччы}} соппут - $2, билиҥҥи барылын манна көр: $3",
        "enotif_body_intro_changed": "$PAGEEDITDATE «{{SITENAME}}» бырайыак «$1» ааттаах сирэйин бу {{gender:$2|кыттааччы|кыттааччы}} айбыт - $2, билиҥҥи барылын манна көр: $3",
        "enotif_lastvisited": "Бутэһик киирииҥ кэнниттэн оҥоһуллубут уларыйыылары барытын көрөргө манна киир: $1.",
-       "enotif_lastdiff": "Уларытыыны манна көрүҥ: $1.",
+       "enotif_lastdiff": "Уларытыыны манна көр: $1",
        "enotif_anon_editor": "ааттамматах кыттааччы $1",
        "enotif_body": "Аламай күн сырдыгынан, $WATCHINGUSERNAME!\n\n$PAGEINTRO $NEWPAGE\n\nУларытыы кылгас ис хоһооно: $PAGESUMMARY $PAGEMINOREDIT\n\nУларыппыт киһиэхэ суруйуоххун сөп:\nэл. почта: $PAGEEDITOR_EMAIL\nбиики: $PAGEEDITOR_WIKI\n\nБу сирэйи бэлиэтэммит ааккынан киирэн көрбөтөххүнэ уларыйбытын туһунан биллэриилэр кэлиэхтэрэ суоҕа. Биллэриилэри аналлаах сирэйгэ отой арааран кэбиһиэххин эмиэ сөп.\n\n             Бары үтүөнү кытта, {{SITENAME}} биллэрэр тиһигэ\n\n--\nБиллэрии кэлэрин салайыы\n{{canonicalurl:{{#special:Preferences}}}}\n\nКэтиир тиһиги уларытыы\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nКэтиир тиһиктэн сирэйдэри сотуу\n$UNWATCHURL\n\nКөмө\n$HELPPAGE",
        "created": "айыллыбыт",
        "undeleteviewlink": "көрүү",
        "undeleteinvert": "Хараардыллыбыты инверсиялаа",
        "undeletecomment": "Төрүөтэ:",
-       "undeletedrevisions": "{{PLURAL:$1|1 уларытыы|$1 уларытыы}} төннөрүлүннэ",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 уларытыы|$1 уларытыы}}  уонна {{PLURAL:$2|1 билэ|$2 билэ}} төннөрүлүннэ",
-       "undeletedfiles": "{{PLURAL:$1|1 билэ|$1 билэ}} төннөрүлүннэ",
        "cannotundelete": "Сөргүтүү сороҕо табыллыбата:\n$1",
        "undeletedpage": "'''$1 төннөрүлүннэ (төннөрүллүбүт)'''\n\nКэнники сотуулар уонна төннөрүүлэр испииһэктэрин [[Special:Log/delete|манна]] көрүөххүн сөп.",
        "undelete-header": "Соторутааҥы [[Special:Log/delete|сотуу испииһэгин]] көрүөххүн сөп.",
        "sp-contributions-uploads": "киллэриилэр",
        "sp-contributions-logs": "сурунааллар",
        "sp-contributions-talk": "ырытыы",
-       "sp-contributions-userrights": "кыттааччылар бырааптарын салайыы",
+       "sp-contributions-userrights": "{{GENDER:$1|кыттааччы}} быраабын салайыы",
        "sp-contributions-blocked-notice": "Бу кыттааччы бырайыакка кыттара билигин бобуллубут. Хааччах сурунаалыгар ол туһунан бүтэһик сурук:",
        "sp-contributions-blocked-notice-anon": "Бу IP бырайыакка кыттара билигин бобуллубут.\nХааччах сурунаалыгар ол туһунан бүтэһик сурук:",
        "sp-contributions-search": "Кыттааччы оҥорбут уларытыыларын көрдөөһүн",
        "unblocked-id": "$1 хааччахтаныыта уһулунна",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] хааччаҕа уһулунна.",
        "blocklist": "Бобуллубут кыттааччылар",
+       "autoblocklist": "Аптамаатынан хааччах",
+       "autoblocklist-submit": "Бул",
+       "autoblocklist-legend": "Аптамаатынан хааччах испииһэгэ",
+       "autoblocklist-localblocks": "Олохтоох аптамаатынан {{PLURAL:$1|хааччахтааһын|хааччахтааһыннар}}",
+       "autoblocklist-total-autoblocks": "Аптамаатынан хааччах ахсаана: $1",
+       "autoblocklist-empty": "Аптамаатынан хааччах испииһэгэ кураанах.",
+       "autoblocklist-otherblocks": "Атын {{PLURAL:$1|хааччахтааһын|хааччахтааһыннар}}",
        "ipblocklist": "Хааччахтаммыт кыттааччылар",
        "ipblocklist-legend": "Хааччахтаммыт/бобуллубут кыттааччыны көрдөөһүн",
        "blocklist-userblocks": "Хааччахтаммыт кыттааччылары көрдөрүмэ",
        "proxyblockreason": "Эн IP-ҥ аһаҕас прокси эбит, онон бобулунна. Интернет-провайдергын эбэтэр техническэй сулууспаны кытта сибээстэһэн кутталлаах суол баарын биллэр.",
        "sorbsreason": "Эн IP-ҥ {{SITENAME}} саайт DNSBL-гар аһаҕас прокси быһыытынан сылдьар.",
        "sorbs_create_account_reason": "Эн IP-ҥ {{SITENAME}} саайт DNSBL-гар аһаҕас прокси быһыытынан сылдьар. Саҥаттан бэлиэтэнэр кыаҕыҥ суох.",
+       "softblockrangesreason": "Эн IP-аадырыскыттан ааккын эппэккэ эрэ суруйар көҥүллэммэт ($1). Бука диэн, киир.",
        "xffblockreason": "X-Forwarded-For баһыгар баар IP-аадырыс бобуллубут. Бу IP Эйиэнэ эбэтэр туһанар проксиҥ гиэнэ буолуон сөп. Бобуу төрүөтэ маннык эбит: $1",
        "cant-see-hidden-user": "Эн хааччахтаары гыммыт кыттааччыҥ урут хааччахтаммыт уонна кистэммит эбит. Кыттааччылары кистиир кыаҕыҥ суох буолан ол туһунан суругу көрөр да уларытар да быраабыҥ суох.",
        "ipbblocked": "Атын кыттааччылары хааччахтыыр да, хааччахтарын да устар кыаҕыҥ суох, тоҕо диэтэххэ бэйэҥ хааччахтааххын",
        "cant-move-to-user-page": "Эн кыттааччы аатын далыгар сирэйдэри уларытар кыаҕыҥ суох (анныкы сирэйдэриттэн ураты).",
        "cant-move-category-page": "Категория сирэйин аатын уларытар кыаҕыҥ суох эбит.",
        "cant-move-to-category-page": "Сирэй аатын уларытан категория сирэйэ гынар кыаҕыҥ суох эбит.",
+       "cant-move-subpages": "Хос сирэйдэр ааттарын уларытар кыаҕыҥ суох.",
        "namespace-nosubpages": "«$1» аат далыгар сирэй оҥорор табыллыбат эбит.",
        "newtitle": "Саҥа аата:",
        "move-watch": "Кэтээн көрөргө",
        "tooltip-pt-mycontris": "Суруйбут/уларыппыт {{GENDER:|сирэйдэриҥ}} тиһиликтэрэ",
        "tooltip-pt-anoncontribs": "Бу IP-аадырыстан оҥоһуллубут испииһэк көннөрүүлэрэ.",
        "tooltip-pt-login": "Манна бэйэҕин билиһиннэриэххин сөп (булгуччута суох).",
+       "tooltip-pt-login-private": "Бу биикини туттарга киириэхтээх эбиккин",
        "tooltip-pt-logout": "Тахсыы",
        "tooltip-pt-createaccount": "Манна киирэргэ бэлиэтэнэр уонна куруук ол аатынан киирэр ордук; ол булгуччута суох",
        "tooltip-ca-talk": "Ыстатыйаны ырытыы",
        "newimages-summary": "Бу анал сирэй киллэриллибит билэлэр испииһэктэрин көрдөрөр.",
        "newimages-legend": "Фильтр",
        "newimages-label": "Билэ аата (эбэтэр сорҕото):",
+       "newimages-user": "Кыттааччы аата эбэтэр IP-та",
        "newimages-showbots": "Руобаттар хачайдааһыннарын көрдөр",
        "newimages-hidepatrolled": "Кэтэммит хачайданыылары сабыы.",
        "noimages": "Ойуу суох.",
        "confirmrecreate": "[[User:$1|$1]] ([[User talk:$1|ырыт.]]) бу сирэйи эн уларыта олордоххуна сотон кэбиспит, төрүөтэ:\n: <em>$2</em>\nБука диэн, сирэйи хат оҥорор буоллаххына бигэргэт.",
        "confirmrecreate-noreason": "[[User:$1|$1]] ([[User talk:$1|ырытыыта]]) бу сирэйи эн уларыта олордоххуна сотон кэбиспит. Бука диэн сирэйи кырдьык төннөрүөххүн баҕараргын бигэргэт.",
        "recreate": "Саҥаттан оҥоруу",
+       "confirm-purge-title": "Бу сирэй кээһин ыраастаа",
        "confirm_purge_button": "Сөп",
        "confirm-purge-top": "Бу сирэй кээһин сотоору гынаҕын дуо?",
        "confirm-purge-bottom": "Кээһин ыраастаабыт кэннэ сирэй бүтэһик торума көстүө.",
        "logentry-delete-delete": "$3 сирэйи $1 соппут",
        "logentry-delete-delete_redir": "$1 кыттааччы $3 утаарыыны хос суруйуу көмөтүнэн {{GENDER:$2|соппут}}",
        "logentry-delete-restore": "$3 сирэйи $1 сөргүппүт",
+       "logentry-delete-restore-nocount": "$3 сирэйи $1 {{GENDER:$2|сөргүппүт}}",
+       "restore-count-revisions": "$1 {{PLURAL:$1|торум|$1 торум}}",
+       "restore-count-files": "{{PLURAL:$1|1 билэ|$1 билэ}}",
        "logentry-delete-event": "Сурунаал $5 суругун көстүүтүн манна $3 $1 уларыппыт: $4",
        "logentry-delete-revision": "$3 сирэй $5 барылын көстүүтүн бу сирэйгэ $1 уларыппыт: $4",
        "logentry-delete-event-legacy": "$3 сурунаал суруктарын көстүүтүн $1 уларыппыт",
        "logentry-tag-update-revision": "$1 кыттааччы $4 сирэй $3 торумун {{GENDER:$2|саҥардан биэрдэ}} ($6 {{PLURAL:$7|эбилиннэ}}; $8 {{PLURAL:$9|сотулунна}})",
        "logentry-tag-update-logentry": "$1 кыттааччы $3 сирэй $5 сурунаалын {{GENDER:$2|саҥардан биэрдэ}} ($6 {{PLURAL:$7|эбилиннэ}}; $8 {{PLURAL:$9|сотулунна}})",
        "rightsnone": "(суох)",
-       "revdelete-summary": "уларытыылар туһунан",
+       "rightslogentry-temporary-group": "$1 (быстах кэмҥэ, маныаха диэри $2)",
        "feedback-adding": "Сирэй туһунан санаа этии...",
        "feedback-back": "Төнүн",
        "feedback-bugcheck": "Бэрт! Ол гынан баран [$1 биллэр алҕастарын] тиһилигэр майгынныыр сурук суоҕун тургут.",
        "api-error-emptypage": "Саҥа кураанах сирэйи оҥорор табыллыбат.",
        "api-error-publishfailed": "Ис алҕас: сиэрбэр быстах билэни кыайан бигэргэппэтэх.",
        "api-error-stashfailed": "Ис алҕас: сиэрбэр быстах кэмҥэ оҥоһуллубут билэни кыайан бигэргэппэтэх.",
-       "api-error-unknown-warning": "Биллибэт сэрэтии: $1",
+       "api-error-unknown-warning": "Биллибэт сэрэтии: \"$1\".",
        "api-error-unknownerror": "Биллибэт алҕас: $1",
        "duration-seconds": "$1 сөкүүндэ",
        "duration-minutes": "$1 мүнүүтэ",
        "pagelang-language": "Омугун тыла",
        "pagelang-use-default": "Сүрүн тылы тутун",
        "pagelang-select-lang": "Тылы талыы",
+       "pagelang-reason": "Төрүөтэ",
        "pagelang-submit": "Ыытарга",
+       "pagelang-nonexistent-page": "Маннык $1 сирэй суох эбит.",
+       "pagelang-unchanged-language": "$1 сирэйгэ хайыы үйэ $2 тыла туруоруллубут.",
+       "pagelang-unchanged-language-default": "$1 сирэйгэ биики тыла туруоруллубут.",
+       "pagelang-db-failed": "Билии олоҕо сирэй тылын кыайан уларыппата.",
        "right-pagelang": "Сирэй тылын уларыт",
        "action-pagelang": "сирэй тылын уларытар буол",
        "log-name-pagelang": "Тылы уларытыы сурунаала",
        "special-characters-group-thai": "Таай",
        "special-characters-group-lao": "Лаос",
        "special-characters-group-khmer": "Кхмер",
+       "special-characters-group-canadianaboriginal": "Канаада суруга-бичигэ",
        "special-characters-title-endash": "орто тире",
        "special-characters-title-emdash": "уһун тире",
        "special-characters-title-minus": "минус бэлиэтэ",
        "mw-widgets-titleinput-description-new-page": "сирэй суох эбит",
        "mw-widgets-titleinput-description-redirect": "манна $1 утаарыы",
        "mw-widgets-categoryselector-add-category-placeholder": "Категория эбии...",
+       "mw-widgets-usersmultiselect-placeholder": "Эбии эп...",
+       "date-range-from": "Баччаттан:",
+       "date-range-to": "Болдьоҕо:",
        "sessionmanager-tie": "Тургутуу хас да көрүҥүн биирдэ туһанар сатаммат: $1.",
        "sessionprovider-generic": "$1 сиэссийэ",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "куукаҕа олоҕурбут сиэссийэ",
        "sessionprovider-nocookies": "Куука арахсыбыт буолуон сөп. оннук түгэҥҥэ холбоон баран хатылаа.",
        "randomrootpage": "Түбэһиэх төрүт сирэй.",
        "log-action-filter-block": "Хааччах көрүҥэ:",
-       "log-action-filter-contentmodel": "Contentmodel көрүҥэ:",
+       "log-action-filter-contentmodel": "Иһинээҕитин мадьыалын көрүҥэ:",
        "log-action-filter-delete": "Сотуу көрүҥэ:",
        "log-action-filter-import": "Киллэрии көрүҥэ:",
        "log-action-filter-managetags": "Салайар тиэк көрүҥэ:",
        "log-action-filter-block-reblock": "Бобууну уларытыы",
        "log-action-filter-block-unblock": "Бобууну суох гыныы",
        "log-action-filter-contentmodel-change": "Иһинээҕитин мадьыалын уларытыы",
-       "log-action-filter-contentmodel-new": "Contentmodel диэн мадьыалынан сирэйи айыы",
+       "log-action-filter-contentmodel-new": "Иһинээҕитин мадьыалынан уратытык наардыыр сирэйи айыы",
        "log-action-filter-delete-delete": "Сирэйи сотуу",
        "log-action-filter-delete-delete_redir": "Утаарыыны хат суруйуу",
        "log-action-filter-delete-restore": "Сирэйи сөргүтүү",
        "authpage-cannot-link-continue": "Ситимниир кыах суох. Сиэссийэттэн тахсан хаалбыккын быһыылаах.",
        "cannotauth-not-allowed-title": "Киирэр көҥүллэммэт",
        "cannotauth-not-allowed": "Бу сирэйи туһанарыҥ сатаммат эбит",
+       "removecredentials": "Бэлиэ-ааты сот",
+       "removecredentials-submit": "Бэлиэ-ааты сот",
+       "removecredentials-invalidsubpage": "$1 бэлиэтэнии сатаммат көрүҥэ эбит.",
+       "removecredentials-success": "Бэлиэтэнии сотулунна.",
+       "credentialsform-provider": "Учуоттуур дааннай көрүҥэ:",
        "credentialsform-account": "Бэлиэ-аат:",
        "cannotlink-no-provider-title": "Бэлиэ-ааттар суохтар",
        "cannotlink-no-provider": "Бэлиэ-ааттар суохтар.",
        "linkaccounts-success-text": "Бэлиэ-аат ситимнэннэ.",
        "linkaccounts-submit": "Ситимнииргэ",
        "unlinkaccounts": "Ситими быһарга",
-       "unlinkaccounts-success": "Бэлиэ-аат ситимэ быһынна."
+       "unlinkaccounts-success": "Бэлиэ-аат ситимэ быһынна.",
+       "authenticationdatachange-ignored": "Дьиҥин тургутар уларытыы таҥастаммата. Баҕар, биир да провайдер суруллубатаҕа буолаарай?",
+       "userjsispublic": "Болҕой: JavaScript сирэйигэр кистэлэҥ сибидиэнньэ суох буолуохтаах, тоҕо диэтэххэ ону атын кыттааччылар хааччаҕа суох көрөр кыахтаахтар.",
+       "usercssispublic": "Болҕой: CSS  сирэйигэр кистэлэҥ сибидиэнньэ суох буолуохтаах, тоҕо диэтэххэ ону атын кыттааччылар хааччаҕа суох көрөр кыахтаахтар.",
+       "restrictionsfield-badip": "IP эбэтэр IP-лар диапазоннара сатаммат: $1",
+       "restrictionsfield-label": "Көҥүллэммит IP диапазона:",
+       "revid": "$1 торум",
+       "pageid": "$1 сирэй нүөмэрэ",
+       "gotointerwiki": "{{SITENAME}} сиртэн тахсарга",
+       "gotointerwiki-invalid": "Аат алҕастаах.",
+       "gotointerwiki-external": "[[$2]] диэн сиргэ бараары {{SITENAME}} сиртэн тахсан эрэҕин.\n\n'''[$1 Манна $1 көс]'''"
 }
index 737fc46..a9f13f8 100644 (file)
        "externaldberror": "Hoe daṛeyaḱa jahan bahre reaḱ jacaeaḱ ḍaṭabes vul hoeakana se amaḱ bahre reaḱ ekaunṭ do nahaḱ halot aguire ạidạri bạnuḱa.",
        "login": "bolok' duar",
        "nav-login-createaccount": "Boloḱ́ duạr / ekaunt tearme",
-       "userlogin": "Bhitri bolon / ekaunṭ tear",
-       "userloginnocreate": "Bhitri bolo",
        "logout": "Bahre oḍoń",
        "userlogout": "Bahre oḍoń",
        "notloggedin": "Bhitri baṅ bolokana",
        "userlogin-noaccount": "Cet́ accountge banuḱtama?",
        "userlogin-joinproject": "Seledoḱ {{SITENAME}}",
-       "nologin": "Amaḱ do cet́ wikipeḍiare ekaunṭ banuḱtama? Ado '''$1'''",
-       "nologinlink": "account tear me",
        "createaccount": "Ṭhai benaome",
-       "gotaccount": "Amaḱ do cet́ miṭten ekaunṭ tear menaḱtama? $1 tearmẽ.",
-       "gotaccountlink": "Bhitri bolon",
-       "userlogin-resetlink": "Amaḱ boloḱ talam cạbi sanamem hiṛińkeda?",
        "userlogin-resetpassword-link": "Amaḱ uku nambarem hiṛiń akada?",
        "userlogin-helplink2": "Bolon khạtir go̠ṛo̠",
        "createacct-emailoptional": "Email ṭhikana (iccha lekate)",
        "createacct-email-ph": "Amaḱ e-mail ṭhikana emme",
        "createaccountmail": "E-mail hotete",
-       "createaccountreason": "Karon",
        "createacct-submit": "Amaḱ account tearme",
        "createacct-benefit-heading": "{{SITENAME}} am lekan hoṛ hotete tear akan.",
        "createacct-benefit-body1": "{{PLURAL:$1|joṛao|joṛaoko}}",
        "prefs-changeemail": "E-mail ṭhikạna bodolme",
        "prefs-setemail": "E-mail ṭhikana benaome",
        "saveprefs": "Rukhiyạymẽ",
-       "rows": "Sạrko:",
        "searchresultshead": "Sendra",
        "timezoneregion-africa": "Aphrika",
        "timezoneregion-america": "Amirika",
        "rcshowhidemine": "$1 ińaḱ tońgeko",
        "rcshowhidemine-show": "Uduḱme",
        "rcshowhidemine-hide": "Danaṅ",
-       "rclinks": "$2 din lahare $1 bodol unuduḱme <br />$3",
+       "rclinks": "$2 din lahare $1 bodol unuduḱme",
        "diff": "Judạ",
        "hist": "Jạr",
        "hide": "Danaṅ",
index a441aa4..76e83d2 100644 (file)
        "editingsection": "Cambiende $1 (setzione)",
        "editingcomment": "Modìfica de $1 (setzione noa)",
        "editconflict": "Cunflitu de editzione: $1",
-       "explainconflict": "Calicunu àteru at cambiadu custa pàgina in su tempus chi dda fias cambiende tue.\nS'àrea de testu de susu cuntènnet su testu de sa pàgina in sa forma atuale.\nIs mudàntzias tuas sunt ammustradas in s'àrea de testu in suta.\nAs a dèper insertare is mudàntzias tuas in su testu atuale, e pro custu a ddas iscrìer in s'àrea de susu.\n<strong>Solu</strong> su testu in s'àrea de susu at a èsser sarbadu si carcas su butone \"{{int:savearticle}}\".",
+       "explainconflict": "Calicunu àteru at cambiadu custa pàgina in su tempus chi dda fias cambiende tue.\nS'àrea de testu de susu cuntènnet su testu de sa pàgina in sa forma atuale.\nIs mudàntzias tuas sunt ammustradas in s'àrea de testu in suta.\nAs a dèper insertare is mudàntzias tuas in su testu atuale, e pro custu a ddas iscrìer in s'àrea de susu.\n<strong>Solu</strong> su testu in s'àrea de susu at a èsser sarbadu si carcas su butone \"$1\".",
        "yourtext": "Su testu tuo",
        "storedversion": "Revisione in archìviu",
        "editingold": "<strong>Atentzione: Ses cambiende una versione non-agiornada de sa pàgina.</strong>\nSi dda sarbas de aici, totus is càmbios fatos a pustis de custa versione ant a bènnere pèrdidos pro semper.",
        "rcshowhidemine": "$1 is modìficas meas",
        "rcshowhidemine-show": "Ammustra",
        "rcshowhidemine-hide": "Cua",
-       "rclinks": "Ammustra is ùrtimas $1 mudàntzias fatas in is ùrtimas $2 dies<br />$3",
+       "rclinks": "Ammustra is ùrtimas $1 mudàntzias fatas in is ùrtimas $2 dies",
        "diff": "dif",
        "hist": "ist",
        "hide": "Cua",
        "undeleteviewlink": "ammustra",
        "undeleteinvert": "Fùrria sa seletzione",
        "undeletecomment": "Motivu:",
-       "undeletedrevisions": "{{PLURAL:$1|1 revisione restaurada|$1 revisiones restauradas}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 revisione|$1 revisiones}} e {{PLURAL:$2|1 file|$2 files}} restaurados",
-       "undeletedfiles": "{{PLURAL:$1|1 file restauradu|$1 files restaurados}}",
        "undelete-search-title": "Chirca pàginas burradas",
        "undelete-search-box": "Chirca pàginas fuliadas",
        "undelete-search-prefix": "Ammustra is pàginas ca su tìtulu cumentzat cun:",
index d74cacf..7956ec8 100644 (file)
        "externaldberror": "S'havi virificatu n'erruri cû server d'autinticazzioni sternu, oppuru nun si disponi di l'auturizzazzioni nicissari p'aggiurnari lu propiu accessu sternu.",
        "login": "Trasi",
        "nav-login-createaccount": "Trasi / crea nu cuntu",
-       "userlogin": "Trasi / crea nu cuntu",
-       "userloginnocreate": "Trasi",
        "logout": "Nesci",
        "userlogout": "Nesci",
        "notloggedin": "Nun trasutu",
        "userlogin-noaccount": "Nun hai nu cuntu?",
        "userlogin-joinproject": "Scrìviti a {{SITENAME}}",
-       "nologin": "Nun hai nu cuntu? $1.",
-       "nologinlink": "Crea nu cuntu",
        "createaccount": "Criazzioni dûn cuntu",
-       "gotaccount": "Già hai nu cuntu? $1.",
-       "gotaccountlink": "Trasi",
-       "userlogin-resetlink": "Ti scurdasti li dittagghî pâ trasuta?",
        "userlogin-resetpassword-link": "Ti scurdasti la password?",
        "userlogin-helplink2": "Aiutu pâ trasuta",
        "userlogin-loggedin": "Già trasisti comu {{GENDER:$1|$1}}.\nAdòpira lu mòdulu ccassutta pi tràsiri comu n'àutru utenti.",
        "createacct-another-email-ph": "Nzirisci lu nnirizzu di posta elittrònica",
        "createaccountmail": "Adòpira na password timpurània casuali e mànnala ô nnirizzu di posta elittrònica spicificatu",
        "createacct-realname": "Nomu veru (facurtativu)",
-       "createaccountreason": "Mutivu:",
        "createacct-reason": "Mutivu",
        "createacct-reason-ph": "Pirchì stai criannu n'àutru cuntu",
        "createacct-submit": "Crea lu tò cuntu",
        "preview": "Antiprima",
        "showpreview": "Ammustra l'antiprima",
        "showdiff": "Ammustra li canciamenti",
-       "blankarticle": "<strong>Accura:</strong> La pàggina chi stai criannu è vacanti.\nSi clicchi \"{{int:savearticle}}\" n'àutra vota, la pàggina veni criata senza nuddu cuntinutu.",
+       "blankarticle": "<strong>Accura:</strong> La pàggina chi stai criannu è vacanti.\nSi clicchi \"$1\" n'àutra vota, la pàggina veni criata senza nuddu cuntinutu.",
        "anoneditwarning": "<strong>Accura:</strong> Nun trasisti. Lu tò nnirizzu IP addiventa visìbbili pubblicamenti quannu fai nu canciamentu. Si <strong>[$1 trasi]</strong> o puru <strong>[$2 crei nu cuntu]</strong>, li canciamenti chi fai vèninu attribbuiti ô tò nomu utenti, sparti d'àutri vantaggi.",
        "anonpreviewwarning": "''Nun trasisti comu utiliggaturi loggatu. Sarbannu, lu tò nnirizzu IP veni arriggistratu ntâ storia dî canciamenti.''",
        "missingsummary": "'''Accura:''' Nun hà statu spicificatu l'uggettu di stu canciamentu. Primennu di novu '''Sarva''' lu canciamentu veni sarvatu cu l'uggettu vacanti.",
-       "selfredirect": "<strong>Accura:</strong> Stai rimannannu sta pàggina a idda stissa.\nPo èssiri chi spicificasti na distinazzioni sbagghiata pû rimannu, o puru chi stai canciannu la pàggina sbagghiata.\nSi clicchi \"{{int:savearticle}}\" n'àutra vota, lu rimannu veni criatu lu stissu.",
+       "selfredirect": "<strong>Accura:</strong> Stai rimannannu sta pàggina a idda stissa.\nPo èssiri chi spicificasti na distinazzioni sbagghiata pû rimannu, o puru chi stai canciannu la pàggina sbagghiata.\nSi clicchi \"$1\" n'àutra vota, lu rimannu veni criatu lu stissu.",
        "missingcommenttext": "Nziriri un cummentu ccà sutta.",
-       "missingcommentheader": "<strong>Accura:</strong> Nun fu spicificatu l'oggettu/ntistazzioni di stu cummentu. Primennu di novu \"{{int:savearticle}}\", lu canciamentu veni sarvatu senza avìrinni.",
+       "missingcommentheader": "<strong>Accura:</strong> Nun fu spicificatu l'oggettu/ntistazzioni di stu cummentu. Primennu di novu \"$1\", lu canciamentu veni sarvatu senza avìrinni.",
        "summary-preview": "Antiprima dû riassuntu:",
        "subject-preview": "Antiprima di l'oggettu/ntistazzioni:",
        "previewerrortext": "Ammattìu n'erruri nta l'ammustrari li tò canciamenti.",
        "editingsection": "Canciamentu di $1 (sizzioni)",
        "editingcomment": "Canciamentu di $1 (sizzioni nova)",
        "editconflict": "Cunflittu d'edizzioni: $1",
-       "explainconflict": "N'àutru utenti havi sarvatu na virsioni nova dâ pàggina mentri stavi effittuannu li canciamenti.\nLa casella di canciamentu supiriuri cunteni lu testu dâ pàggina attuarmenti online, accussì comu hà statu aggiurnatu di l'àutru utenti.\nLa virsioni cu li tò canciamenti è mmeci ripurtata ntâ casella di canciamentu nfiriuri.\nSiddu addisìi cunfirmàrili, hai a ripurtari li tò canciamenti ntô testu asistenti (casella supiriuri).\nPrimennu lu pulsanti '{{int:savearticle}}', veni sarvatu '''sulu''' lu testu cuntinutu ntâ casella di canciamentu supiriuri.",
+       "explainconflict": "N'àutru utenti havi sarvatu na virsioni nova dâ pàggina mentri stavi effittuannu li canciamenti.\nLa casella di canciamentu supiriuri cunteni lu testu dâ pàggina attuarmenti online, accussì comu hà statu aggiurnatu di l'àutru utenti.\nLa virsioni cu li tò canciamenti è mmeci ripurtata ntâ casella di canciamentu nfiriuri.\nSiddu addisìi cunfirmàrili, hai a ripurtari li tò canciamenti ntô testu asistenti (casella supiriuri).\nPrimennu lu pulsanti '$1', veni sarvatu '''sulu''' lu testu cuntinutu ntâ casella di canciamentu supiriuri.",
        "yourtext": "Lu tò testu",
        "storedversion": "La virsioni mimurizzata",
        "nonunicodebrowser": "<strong>Accura: Lu tò browser nun supporta bonu l'Unicode.</strong>\nFu attivata na contramisura pi cunzintìriti di canciari li pàggini n sicurizza: li caràttiri nun-ASCII spùntanu nta la casedda di canciamentu comu còdici esadicimali.",
        "right-editsemiprotected": "Canciari pàggini cu prutizzioni \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Canciari lu mudellu di cuntinutu di na pàggina",
        "right-editinterface": "Canciari la ntirfaccia utenti",
-       "right-editusercssjs": "Canciari li file CSS e JavaScript di l'àutri utenti",
        "right-editusercss": "Canciari li file CSS di l'àutri utenti",
        "right-edituserjs": "Canciari li file JavaScript di l'àutri utenti",
        "right-editmyusercss": "Canciari li file CSS dû propiu utenti",
        "rcshowhidemine": "$1 li mè canciamenti",
        "rcshowhidemine-show": "Ammustra",
        "rcshowhidemine-hide": "Ammuccia",
-       "rclinks": "Ammustra l'ùrtimi $1 canciamenti nta l'ùrtimi $2 jorna <br />$3",
+       "rclinks": "Ammustra l'ùrtimi $1 canciamenti nta l'ùrtimi $2 jorna",
        "diff": "diff",
        "hist": "storia",
        "hide": "Ammuccia",
        "undeleteviewlink": "talìa",
        "undeleteinvert": "Nverti la silizzioni",
        "undeletecomment": "Mutivu:",
-       "undeletedrevisions": "$1 {{PLURAL:$1|virsioni ricupirata|virsioni ricupirati}}",
-       "undeletedrevisions-files": "$1 {{PLURAL:$1|virsioni ricupirata|virsioni ricupirati}} e $2 {{PLURAL:$2|file ricupiratu|file ricupirati}}",
-       "undeletedfiles": "$1 {{PLURAL:$1|file ricupiratu|file ricupirati}}",
        "cannotundelete": "L'annullamentu dâ cancillazzioni nun arriniscìu:\n$1",
        "undeletedpage": "<strong>La pàggina $1 fu ricupirata</strong>\n\nCunzurta lu [[Special:Log/delete|riggistru dî cancillazzioni]] pi vìdiri li cancillazzioni e li ricùpiri cchiù ricenti.",
        "undelete-header": "Talìa lu [[Special:Log/delete|riggistru dî cancillazzioni]] pî pàggini cancillati di ricenti.",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|canciau}} l'etichetti dâ virsioni $4 dâ pàggina $3 ({{PLURAL:$7|nn'agghiuncìu}} $6; {{PLURAL:$9|nni livau}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|aggiurnau}} l'etichetti ntâ vuci di riggistru $5 dâ pàggina $3 ({{PLURAL:$7|nn'agghiuncìu}} $6; {{PLURAL:$9|nni livau}} $8)",
        "rightsnone": "(nuddu)",
-       "revdelete-summary": "riassuntu dô canciamentu",
        "feedback-adding": "Agghiuncimentu dû cummentu â pàggina...",
        "feedback-back": "N'arreri",
        "feedback-bugcheck": "Bonu! Sulu cuntrolla chi nun è unu dî [$1 bug già canusciuti].",
index ec34495..d82f2e2 100644 (file)
        "preview": "Luikower",
        "showpreview": "Shaw luikower",
        "showdiff": "Shaw chynges",
-       "blankarticle": "<strong>Wairnishment:</strong> The page that ye'r creautin is blank.\nGif ye clap \"{{int:savearticle}}\" again, the page will be creautit wioot oniething oan it.",
+       "blankarticle": "<strong>Wairnishment:</strong> The page that ye'r creautin is blank.\nGif ye clap \"$1\" again, the page will be creautit wioot oniething oan it.",
        "anoneditwarning": "<strong>Warnishment:</strong> Ye'r no loggit in. Yer IP address will be publeeclie veesible gif ye mak onie eedits. Gif ye <strong>[$1 log in]</strong> or <strong>[$2 creaute aen accoont]</strong>, yer eedits will be attreebutit tae yer uisername, aes weel aes ither benefits.",
        "anonpreviewwarning": "<em>Ye'r no loggit in. Hainin will record yer IP address in this page's eedit histerie.</em>",
-       "missingsummary": "<strong>Mynd:</strong> Ye'v naw gien aen eedit owerview. Gif ye clap oan \"{{int:savearticle}}\" again, yer eedit will be haint wioot ane.",
-       "selfredirect": "<strong>Wairnin:</strong> Ye are redirectin this page tae itsel.\nYe mey hae specifee'd the wrang tairget for the redirect, or ye mey be eeditin the wrang page.\nIf ye click \"{{int:savearticle}}\" again, the redirect will be creautit onywey.",
+       "missingsummary": "<strong>Mynd:</strong> Ye'v naw gien aen eedit owerview. Gif ye clap oan \"$1\" again, yer eedit will be haint wioot ane.",
+       "selfredirect": "<strong>Wairnin:</strong> Ye are redirectin this page tae itsel.\nYe mey hae specifee'd the wrang tairget for the redirect, or ye mey be eeditin the wrang page.\nIf ye click \"$1\" again, the redirect will be creautit onywey.",
        "missingcommenttext": "Please enter ae comment ablo.",
-       "missingcommentheader": "<strong>Reminder:</strong> Ye hae nae providit a subject for this comment.\nIf ye click \"{{int:savearticle}}\" again, yer eedit will be saved withoot ane.",
+       "missingcommentheader": "<strong>Reminder:</strong> Ye hae nae providit a subject for this comment.\nIf ye click \"$1\" again, yer eedit will be saved withoot ane.",
        "summary-preview": "Preview o eedit summary:",
        "subject-preview": "Preview o subject:",
        "previewerrortext": "An error occurred while attemptin tae preview yer chynges.",
        "editingsection": "Eeditin $1 (section)",
        "editingcomment": "Editin $1 (new section)",
        "editconflict": "Eidit conflict: $1",
-       "explainconflict": "Some ither body haes chynged this page syne ye stertit eiditin it.\nThe upper tex area hauds the page tex aes it currentlie exeests.\nYer chynges is shawn in the lower tex area.\nYe'll hae tae merge yer chynges intil the exeestin tex.\n<strong>Juist</strong> the tex in the upper tex area will be hained whan ye press \"{{int:savearticle}}\".",
+       "explainconflict": "Some ither body haes chynged this page syne ye stertit eiditin it.\nThe upper tex area hauds the page tex aes it currentlie exeests.\nYer chynges is shawn in the lower tex area.\nYe'll hae tae merge yer chynges intil the exeestin tex.\n<strong>Juist</strong> the tex in the upper tex area will be hained whan ye press \"$1\".",
        "yourtext": "Yer tex",
        "storedversion": "Storit version",
        "nonunicodebrowser": "<strong>Warnishmant: Yer brouser isna unicode compliant.</strong> Ae wairkaroond is in place tae lat ye sauflie eedit airticles: non-ASCII chairacters will kythe in the eedit kist aes hexadecimal codes.",
        "rcshowhidemine-show": "Shaw",
        "rcshowhidemine-hide": "Skauk",
        "rcshowhidecategorization-show": "Shaw",
-       "rclinks": "Shaw last $1 chynges in last $2 days<br />$3",
+       "rclinks": "Shaw last $1 chynges in last $2 days",
        "diff": "diff",
        "hist": "hist",
        "hide": "Skauk",
index 5107682..010223b 100644 (file)
@@ -36,7 +36,7 @@
        "tog-oldsig": "توھان جو موجوده دستخط:",
        "tog-fancysig": "صحيح کي وڪيٽيڪسٽ سمجھو (ڪنھن خوڪار ڳنڍڻي کانسواءِ)",
        "tog-uselivepreview": "سڌي سنئين پيش نگاھہ استعمال ڪريو",
-       "tog-watchlisthideown": "نظر ۾ فھرست مان منهنجون ڪيل ترميمون لڪايو",
+       "tog-watchlisthideown": "نظر ۾ فھرست مان منھنجون ترميمون لڪايو",
        "tog-watchlisthidebots": "نظر ۾ فھرست تان بوٽ جون ترميمون لڪايو",
        "tog-watchlisthideminor": "نظر ۾ فھرست تان معمولي ترميمون لڪايو",
        "tog-watchlisthideliu": "داخل ٿيل يوزرس جون ڪيل ترميمون نظر ۾ فھرست ۾ نہ ڏيکاريو",
        "searcharticle": "وڃو",
        "history": "صفحي جي سوانح",
        "history_short": "سوانح",
+       "history_small": "سوانح",
        "printableversion": "ڇپائتو پرت",
        "permalink": "مسقتل ڳنڍڻو",
        "print": "ڇاپيو",
        "redirectedfrom": "($1 کان چوريل)",
        "redirectpagesub": "چوريل صفحو",
        "redirectto": "ڏانھن چوريو:",
-       "lastmodifiedat": "ھيءُ صفحو آخري دفعو $2، $1ع تي سنواريو ويو ھو",
+       "lastmodifiedat": "ھيءُ صفحو آخري دفعو $2 وڳي، $1ع تي سنواريو ويو ھو.",
        "viewcount": "هيءُ صفحو {{PLURAL:$1|دفعو|$1 دفعا}} ڏسجي چڪو آهي.",
        "protectedpage": "تحفظيل صفحو",
        "jumpto": "ڏانھن ٽپ ڏيو:",
        "userlogin-helplink2": "داخل ٿيڻ ۾ مدد",
        "userlogin-reauth": "اھو پڪ ڪرڻ لاءِ ته توھان {{GENDER:$1|$1}} آھيو توھان کي ٻيھر داخل ٿيڻو پوندو.",
        "userlogin-createanother": "ٻيو کاتو کوليو",
-       "createacct-emailrequired": "برق ٽپال پتو",
+       "createacct-emailrequired": "برقٽپال پتو",
        "createacct-emailoptional": "برقٽپال پتو (مرضيءَ موجب)",
        "createacct-email-ph": "پنھنجو برقٽپال پتو ڄاڻايو",
        "createacct-another-email-ph": "برق ٽپال پتو ڄاڻايو",
        "pt-createaccount": "کاتو کوليو",
        "pt-userlogout": "خارج ٿيو",
        "php-mail-error-unknown": "پي ايڇ پي جي  ڪاڄ اندر اڻڄاتل چُڪَ.",
-       "user-mail-no-addy": "برقٽپال پتو ڄاڻائڻ کان سواءِ برق ٽپال اماڻڻ جي ڪوشش ڪئي وئي.",
+       "user-mail-no-addy": "برقٽپال پتو ڄاڻائڻ کان سواءِ برقٽپال اماڻڻ جي ڪوشش ڪئي وئي.",
        "changepassword": "ڳجھولفظ تبديل ڪريو",
        "resetpass_announce": "داخل ٿيڻ جو عمل پورو ڪرڻ لاءِ، توهان کي نئون ڳجھولفظ اختيار مقرر ڪرڻو پوندو.",
        "resetpass_header": "کاتي جو ڳجھولفظ بدلايو",
        "botpasswords-label-delete": "ڊاهيو",
        "botpasswords-label-resetpassword": "ڳجھولفظ ٻيھر مقرر ڪريو",
        "botpasswords-label-grants-column": "منظور",
+       "botpasswords-bad-appid": "بوٽ نانءُ \"$1\" قابلِڪار ناھي.",
        "resetpass_forbidden": "ڳجھالفظ بدلائي نٿا سگھجن",
        "resetpass_forbidden-reason": "ڳجھالفظ بدلائي نٿا سگھجن:$1",
        "resetpass-no-info": "هيءُ صفحو پڙهڻ لاءِ داخل ٿيڻ ضروري آهي.",
        "resetpass-submit-loggedin": "ڳجھولفظ بدلايو",
        "resetpass-submit-cancel": "رد",
-       "resetpass-wrong-oldpass": "ناقابل ڪار هاڻوڪو يا عارضي ڳجھولفظ. \nتوهان پنهنجو ڳجھو لفظ اڳ ۾ ئي بدلائي چڪا آهيو يا نئين ڳجھي لفظ لاءِ درخواست ڏئي چڪا آهيو.",
-       "resetpass-recycled": "مهرباني ڪري پنهنجي هاڻوڪي ڳجھي لفظ کان ڪو مختلف ڳجھو لفظ چونڊيو.",
+       "resetpass-wrong-oldpass": "ناقابلِڪار هاڻوڪو يا عارضي ڳجھولفظ. \nتوھان پنھنجو ڳجھولفظ اڳ ۾ ئي بدلائي چڪا آھيو يا نئين ڳجھي لفظ لاءِ درخواست ڏئي چڪا آھيو.",
+       "resetpass-recycled": "مھرباني ڪري پنھنجي ھاڻوڪي ڳجھي لفظ کان ڪو مختلف ڳجھولفظ چونڊيو.",
        "resetpass-temp-emailed": "توهان برقٽپال ذريعي اماڻيل عارضي ڳجھي لفظ سان داخل ٿيا آهيو. داخل ٿيڻ کي مڪمل ڪرڻ لاءِ توهان کي هتي نئون ڳجھولفظ طَي ڪرڻو ئي پوندو:",
        "resetpass-temp-password": "عارضي ڳجھولفظ:",
        "resetpass-expired": "توهان جو ڳجھولفظ مدي خارج ٿي چڪو آهي. نئون ڳجھولفظ مقرر ڪريو ۽ داخل ٿيو.",
        "passwordreset-emaildisabled": "هن وڪيءَ تي برق‌ٽپال واريون خصوصيتون غير فعال بڻايون ويون آهن.",
        "passwordreset-username": "يُوزرنانءُ:",
        "passwordreset-domain": "ميدان:",
-       "passwordreset-email": "برق ٽپال پتو:",
+       "passwordreset-email": "برقٽپال پتو:",
        "passwordreset-emailtitle": "{{SITENAME}} واري کاتي جا تفصيل",
-       "passwordreset-emailelement": "يُوزر نانءُ: \n$1\n\nعارضي ڳجھو لفظ:\n$2",
+       "passwordreset-emailelement": "يُوزرنانءُ: \n$1\n\nعارضي ڳجھولفظ:\n$2",
        "passwordreset-invalidemail": "ناقابلڪار برقٽپال پتو",
        "changeemail": "برقٽپال پتو مِٽايو يا بدلايو",
        "changeemail-oldemail": "هاڻوڪو برقٽپال پتو:",
        "changeemail-newemail": "نئون برقٽپال پتو:",
        "changeemail-none": "(ڪو بہ نہ)",
-       "changeemail-password": "توهان جو {{SITENAME}} ڳجھو لفظ:",
+       "changeemail-password": "توهان جو {{SITENAME}} ڳجھولفظ:",
        "changeemail-submit": "برقٽپال پتو بدلايو",
        "changeemail-throttled": "توھان تازو ئي داخل ٿيڻ جون هيڪانديون گھڻيون ڪوششون ڪيون آهن. مھرباني ڪري $1 لاءِ ترسي پوءِ وري ڪوشش ڪريو.",
        "changeemail-nochange": "مھرباني ڪري مختلف نئون برقٽپال پتو ڄاڻايو.",
        "anoneditwarning": "<strong>چتاءُ:</strong> توھان داخل ٿيل نہ آھيو. توھان جو آءِپي پتو عوامي طور ظاھر ٿيندو جي توھان ڪي ترميمون ڪريو ٿا. جيڪڏھن توھان <strong>[$1 داخل ٿيو]</strong> ٿا يا <strong>[$2 کاتو کوليو]</strong> ٿا، تہ ٻين فائدن سان گڏ توھان جون ترميمون توھان جي يوزرنانءَ سان منسوب ڪيون وينديون.",
        "anonpreviewwarning": "توهان داخل ٿيل نہ آهيو. جيڪڏهن توهان صفحي ۾ تبديليون سانڍيون تہ اهڙين تبديلين ساڻ توهان جو آءِپي پتو درج ڪيو ويندو.",
        "missingcommenttext": "براءِ مھرباني هيٺ پنهنجو تاثر درج ڪندا.",
-       "summary-preview": "تت Øªي پيش نگاھ:",
-       "subject-preview": "موضوع پيش نگاھ:",
+       "summary-preview": "تت Ø¬ي پيش نگاھ:",
+       "subject-preview": "موضوع جي پيش نگاھ:",
        "blockedtitle": "يُوزر بندشيل آهي.",
        "blockedtext": "'''توھان جي يوزرنانءُ يا آءِ پي کي بندشيو ويو آھي.'''\n\nبندش $1 ھني. جڏھن تہ ڄاڻايل سبب ''$2'' آهي.\n\n\n* بندش جو آغاز: $8\n* بندش جو انجام: $6\n* بندش جو هدف: $7\n\nاھڙي روڪ تي بحث ڪرڻ لاءِ توھان $1 يا ڪنھن ٻي [[{{MediaWiki:Grouppage-sysop}}|منتظم]] سان رابطو ڪري سگھو ٿا. جيڪڏهن توھان جو درست [[Special:ترجيحون|کاتو ترجيحون]] ۾ درست برقٽپال پتو درج ٿيل نہ آهي تہ توهان 'هن يوزر کي برقٽپال ڪريو' وارو فيچر نہ ٿا \nYou cannot use the 'e-mail this user' feature unless a valid e-mail address is specified in your [[Special:Preferences|account preferences]] and you have not been blocked from using it.\nاستعمال ڪري سگھو. توھان جو ھاڻوڪو آءِپي پتو $3 آھي، ۽ بندش سڃاڻپ $5 آهي. مھرباني ڪري ڪنھن بہ پڇا ڳاڇا يا لھوچڙ لاءِ انھن مان ڪنھن ھڪ يا ٻنھي جو حوالو ڏيندا.",
        "blockednoreason": "سبب اڻڄاڻايل",
        "continue-editing": "ترميم گاھ ڏانھن وڃو",
        "editing": "$1 سنواريندي",
        "creating": "$1 سرجيندي",
-       "editingsection": "زÙ\8aر ØªØ±Ù\85Ù\8aÙ\85 $1 (سيڪشن)",
+       "editingsection": "ترÙ\85Ù\8aÙ\85 Ú¾Ù\8aÙº $1 (سيڪشن)",
        "editingcomment": "ترميم هيٺ $1 (نئون سيڪشن)",
        "editconflict": "ترميمي تڪرار: $1",
        "yourtext": "توهان جو ٽيڪسٽ",
        "last": "پويون",
        "page_first": "پهريون",
        "page_last": "آخري",
-       "history-fieldset-title": "جھانگ جي سوانح",
-       "history-show-deleted": "رڳو ڊاٺل",
+       "history-fieldset-title": "مسودا ڳوليو",
+       "history-show-deleted": "رڳو ڊاٺل مسودا",
        "histfirst": "اوائلي ترين",
        "histlast": "تازه ترين",
        "historysize": "({{PLURAL:$1|1 بائيٽ|$1 بائيٽس}})",
        "search-section": "(سيڪشن $1)",
        "search-category": "(ذمرو $1)",
        "search-suggest": "ڇا توهان جو مطلب ھيو: $1",
-       "search-interwiki-caption": "برادر Ø±Ù¿Ø§Ø¦Ù\88Ù\86",
+       "search-interwiki-caption": "برادر Ø±Ù¿Ø§Ø¦Ù\86 Ù\85اÙ\86 Ù\86تÙ\8aجا",
        "search-interwiki-default": "$1 مان نتيجا",
        "search-interwiki-more": "(وڌيڪ)",
        "search-relatedarticle": "لاڳاپيل",
        "prefs-emailconfirm-label": "برقٽپال خاطري:",
        "youremail": "برقٽپال:",
        "username": "{{GENDER:$1|يُوزرنانءُ}}",
+       "prefs-memberingroups": "{{PLURAL:$1|گروھ|گروھن}} جو {{GENDER:$2|رڪن}}:",
        "prefs-registration": "رجسٽريشن جو وقت:",
        "yourrealname": "اصل نالو:",
        "yourlanguage": "ٻولي:",
        "prefs-tokenwatchlist": "ٽوڪن",
        "prefs-diffs": "تفاوت",
        "prefs-help-prefershttps": "هيءَ ترجيح توهان جي ايند داخل ٿيڻ تي عمل ۾ ايندي.",
-       "userrights": "يُوزر حقن جو بندوبست",
+       "userrights": "يُوزر حق",
        "userrights-lookup-user": "ڪو يوزر چونڊيو",
        "userrights-user-editname": "يُوزرنانءُ ڄاڻايو:",
        "editusergroup": "يوزر گروھ اتاريو",
-       "userrights-editusergroup": "يوزر گروپَ سنواريو",
+       "userrights-editusergroup": "{{GENDER:$1|يوزر}} گروھ سنواريو",
        "saveusergroups": "{{GENDER:$1|يوزر}} گروھ سانڍيو",
        "userrights-groupsmember": "برڪن:",
        "userrights-groupsmember-auto": "رڪن واجبي:",
        "recentchanges-legend-heading": "<strong>ڪنجي:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (پڻ ڏسو [[Special:NewPages|نون صفحن جي فھرست]])",
        "recentchanges-submit": "ڏيکاريو",
+       "rcfilters-activefilters": "سرگرم ڇاڻيون",
+       "rcfilters-restore-default-filters": "ڏنل ڇاڻيون ريسٽور ڪريو",
+       "rcfilters-search-placeholder": "تازيون تبديليون ڇاڻيو (جھانگيو يا لکڻ شروع ڪريو)",
+       "rcfilters-empty-filter": "ڪي بہ سرگرم ڇاڻيون ناھن. سڀ ڀاڱيداريون ڏيکاريل آھن.",
+       "rcfilters-filterlist-title": "ڇاڻيون",
        "rcfilters-filterlist-whatsthis": "هي ڇا آهي؟",
        "rcfilters-highlightbutton-title": "نتيجن کي نمايان (هاءِ لائيٽ) ڪيو",
        "rcfilters-highlightmenu-title": "رنگ چونڊيو",
+       "rcfilters-filter-registered-label": "رجسٽر ٿيل",
+       "rcfilters-filter-unregistered-label": "اڻ رجسٽر ٿيل",
+       "rcfilters-filter-editsbyself-label": "مون پاران تبديليون",
+       "rcfilters-filter-editsbyother-label": "ٻين پاران تبديليون",
+       "rcfilters-filter-user-experience-level-newcomer-label": "نوان ايندڙ",
+       "rcfilters-filter-user-experience-level-learner-label": "سکندڙ",
+       "rcfilters-filter-user-experience-level-experienced-label": "تجربيڪار واھپ",
+       "rcfilters-filter-bots-label": "بوٽ",
+       "rcfilters-filter-humans-label": "انسان (بوٽ نہ)",
+       "rcfilters-filter-humans-description": "انساني ايڊيٽرن پاران ڪيل ترميمون.",
+       "rcfilters-filter-minor-label": "معمولي ترميمون",
+       "rcfilters-filter-major-label": "غير معمولي ترميمون",
+       "rcfilters-filter-pageedits-label": "صفحي ترميمون",
+       "rcfilters-filter-newpages-label": "صفحي تخليقون",
+       "rcfilters-filter-categorization-label": "زمري ۾ تبديليون",
+       "rcfilters-filter-logactions-label": "لاگڊ عمل",
        "rcnotefrom": "هيٺ {{PLURAL:$5|تبديلي آهي|تبديليون آهن}} کان <strong>$3, $4</strong> (تائين <strong>$1</strong> ) ڏيکاريل آهن.",
        "rclistfrom": "$2، $3 کان شروع ٿيندڙ نيون تبديليون ڏيکاريو",
        "rcshowhideminor": "$1 معمولي ترميمون",
        "rcshowhidecategorization": "$1 صفحاتي زمراڪاري",
        "rcshowhidecategorization-show": "ڏيکاريو",
        "rcshowhidecategorization-hide": "لڪايو",
-       "rclinks": "پوين $2 ڏينھن ۾ آيل پويون $1 تبديليون ڏيکاريو <br />$3",
+       "rclinks": "پوين $2 ڏينھن ۾ آيل پويون $1 تبديليون ڏيکاريو",
        "diff": "تفاوت",
        "hist": "سوانح",
        "hide": "لڪايو",
        "trackingcategories-name": "پيغام جو نالو",
        "trackingcategories-nodesc": "ڪا به تشريح موجود نه آهي.",
        "trackingcategories-disabled": "زمرو ناقابلِ ڪار بڻايل آهي.",
-       "emailuser": "Ù\87Ù\86 Ù\8aÙ\88زر کي برق ٽپال اماڻيو",
+       "emailuser": "Ù\87Ù\86 Ù\88اھپ کي برق ٽپال اماڻيو",
        "emailuser-title-target": "ھن {{GENDER:$1|يوزر}} ڏانھن برقٽپال موڪليو",
-       "emailuser-title-notarget": "Ù\8aÙ\8fÙ\88زر Ú\8fاÙ\86Ù\87Ù\86 Ø¨Ø±Ù\82 ٽپال اماڻيو",
+       "emailuser-title-notarget": "Ù\88اھپ Ú\8fاÙ\86Ú¾Ù\86 Ø¨Ø±Ù\82ٽپال اماڻيو",
        "usermaildisabled": "يوزر ايميل ناقابلِ ڪار بڻيل",
        "usermaildisabledtext": "توهان هن وڪي تي ٻين يوزرس ڏانهن ايميل نٿا موڪلي سگھو",
-       "noemailtitle": "برق ٽپال پتو نامعلوم",
-       "noemailtext": "Ù\87Ù\86 Ù\8aÙ\8fÙ\88زر ÚªÙ\88 Ø¨Û\81 Ù\82ابÙ\84 ÚªØ§Ø± Ø¨Ø±Ù\82 ٽپال پتو نہ ڄاڻايو آهي.",
+       "noemailtitle": "برقٽپال پتو ناھي",
+       "noemailtext": "Ù\87Ù\86 Ù\88اھپ ÚªÙ\88 Ø¨Û\81 Ù\82ابÙ\84Ù\90ڪار Ø¨Ø±Ù\82ٽپال پتو نہ ڄاڻايو آهي.",
        "emailusername": "يُوزرنانءُ:",
        "emailusernamesubmit": "جمع ڪرايو",
        "emailfrom": "طرفان:",
        "wlshowhidebots": "بوٽس",
        "wlshowhideliu": "کاتيدار يُوزرس",
        "wlshowhideanons": "گمنام يُوزرس",
-       "wlshowhidemine": "منهنجون ترميمون",
+       "wlshowhidemine": "منھنجون ترميمون",
        "watchlist-options": "نظر ۾ فھرست جا چارا",
        "watching": "نظر ۾ رکندي...",
        "unwatching": "نظر مان ڪڍندي...",
        "enotif_reset": "سڀ گھميل صفحن تي نشان لڳايو",
        "enotif_impersonal_salutation": "{{SITENAME}} يُوزر",
-       "enotif_lastdiff": "هي تبديلي ڏسڻ لاءِ $1 ڏسو",
+       "enotif_lastdiff": "هي تبديلي ڏسڻ لاءِ، $1 ڏسو",
        "enotif_anon_editor": "گمنام يُوزر $1",
        "created": "ٺهي چڪو",
        "changed": "تبديل ٿي ويو",
        "delete-confirm": "\"$1\" ڊهي چڪو",
        "delete-legend": "ڊاهيو",
        "historywarning": "<strong>خبردار:</strong> جيڪو صفحو توهان ڊاهڻ وڃي رهيا آهيو ان ساڻ هڪ تاريخ آهي $1 {{PLURAL:$1|revision|revisions}}:",
+       "historyaction-submit": "ڏيکاريو",
        "confirmdeletetext": "توهان هڪ صفحي کي ان جي سموري سوانح سميت ڊاهڻ وارا آهيو. مهرباني ڪري پڪ ڪندا ته توهان اهو ئي ڪرڻ گھرو ٿا، ۽ اهو ته توهان ان جي نتيجن کان واقف آهيو، ۽ اهو پڻ ته توهان اهو ڪم [[{{MediaWiki:Policy-url}}|پاليسي]]ءَ مطابق ڪري رهيا آهيو.",
        "actioncomplete": "ڪم پُورو",
        "actionfailed": "عمل ناڪام",
        "sp-contributions-uploads": "چاڙھَ",
        "sp-contributions-logs": "لاگس",
        "sp-contributions-talk": "ڳالھ",
-       "sp-contributions-userrights": "يُوزر حقن جي سنڀال",
+       "sp-contributions-userrights": "{{GENDER:$1|يوُزر}} حقن جي سنڀال",
        "sp-contributions-search": "ڀاڱيدارين لاءِ ڳولا ڪريو",
        "sp-contributions-username": "آءِپي پتو يا يوزرنانءُ:",
        "sp-contributions-submit": "ڳوليو",
        "anononlyblock": "فقط گمنام",
        "noautoblockblock": "خودڪار بندش ناقابلِ ڪار بڻيل",
        "createaccountblock": "کاتو کولڻ جي روڪَ ٿيل",
-       "emailblock": "برق ٽپال غير فعال",
+       "emailblock": "برقٽپال غير فعال",
        "blocklink": "بندشيو",
        "unblocklink": "اڻبندشيو",
        "contribslink": "ڀاڱيداريون",
        "table_pager_limit_label": "وَٿُون في صفحو:",
        "table_pager_limit_submit": "ھلو",
        "table_pager_empty": "ڪو بہ نتيجو نہ مليو",
+       "autoredircomment": "صفحي کي [[$1]] ڏانھن چوريو",
        "watchlistedit-normal-title": "نظر ۾ فھرست کي سنواريو",
        "watchlistedit-raw-titles": "عنوانَ:",
        "watchlistedit-clear-titles": "عنوانَ:",
        "tags-title": "ٽيگس",
        "tags-tag": "ٽيگ نانءُ",
        "tags-source-header": "ذريعو",
+       "tags-active-header": "سرگرم؟",
        "tags-active-yes": "ها",
        "tags-active-no": "نہ",
        "tags-edit": "سنواريو",
index faafcb4..288db77 100644 (file)
        "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",
        "nav-login-createaccount": "Intra / registhrazioni",
-       "userlogin": "Intra o cria una noba registhrazioni",
-       "userloginnocreate": "Intra",
        "logout": "Esci",
        "userlogout": "Esci",
        "notloggedin": "Intradda no effettuadda",
-       "nologin": "No ài una registhrazioni? '''$1'''.",
-       "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",
-       "createaccountreason": "Mutibu:",
        "createacct-reason": "Mutibu",
        "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.",
        "editingsection": "Mudifigga di $1 (sezzioni)",
        "editingcomment": "Mudifigga di $1 (cummentu)",
        "editconflict": "Cuntrasthu d'edizioni i $1",
-       "explainconflict": "Un'althru utenti à sàivvaddu una noba versioni di la pàgina primma di lu saivvatàggiu tóiu.\nLa casella di mudìfigga superiori cunteni lu testhu di la pàgina attuarmenti in lìnia, cumenti è isthadda mudìfiggadda da l'althru utenti.\nLa versioni cu' li mudìfigghi tói è i' la casella di mudìfigga in giossu.\nSi vói cunfèimmalli, dévi arriggà li mudìfigghi tói i' lu testhu esisthenti (casella superiori).\n'''Soru''' lu testhu i' la casella superiori sarà sàivvaddu candu tu incalcharé \"{{int:savearticle}}\".",
+       "explainconflict": "Un'althru utenti à sàivvaddu una noba versioni di la pàgina primma di lu saivvatàggiu tóiu.\nLa casella di mudìfigga superiori cunteni lu testhu di la pàgina attuarmenti in lìnia, cumenti è isthadda mudìfiggadda da l'althru utenti.\nLa versioni cu' li mudìfigghi tói è i' la casella di mudìfigga in giossu.\nSi vói cunfèimmalli, dévi arriggà li mudìfigghi tói i' lu testhu esisthenti (casella superiori).\n'''Soru''' lu testhu i' la casella superiori sarà sàivvaddu candu tu incalcharé \"$1\".",
        "yourtext": "Lu testhu tóiu",
        "storedversion": "La versioni mimurizadda",
        "nonunicodebrowser": "'''ATTINZIONI: Lu nabiggadori tóiu nò è cumpatìbiri cu' li caràtteri Unicode. Pa cunsintì la mudìfigga di li pàgini chena crià incunvinienti, i caràtteri nò ASCII so visuarizzaddi i' la casella di mudìfigga cumenti còdizi esadezimari.'''",
        "prefs-misc": "Vari",
        "saveprefs": "Saivva li prifirenzi",
        "prefs-editing": "Casella di mudìfigga",
-       "rows": "Righi:",
-       "columns": "Curonni:",
        "searchresultshead": "Zercha",
        "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:",
        "userrights-reason": "Mutibu:",
        "userrights-no-interwiki": "Nò ài lu primmissu pa mudìfiggà li diritti di l'utenti i' althri siti.",
        "userrights-nodatabase": "La bancadati $1 nò isisthi o nò è in lucari.",
-       "userrights-nologin": "Débi [[Special:UserLogin|intrà]] cumenti amministhradori pa assignà li diritti utenti.",
-       "userrights-notallowed": "La registhrazioni tóia nò à lu primissu d'assignà li diritti utenti.",
        "group": "Gruppu:",
        "group-user": "Utenti",
        "group-autoconfirmed": "Utenti autocunfèimmaddi",
        "rcshowhideanons": "$1 li utenti anònimi",
        "rcshowhidepatr": "$1 li mudìfigghi contrulladdi",
        "rcshowhidemine": "$1 li me' mudìfigghi",
-       "rclinks": "Musthra li $1 mudìfigghi più rizzenti arriggaddi i' l'ulthimi $2 dì<br />$3",
+       "rclinks": "Musthra li $1 mudìfigghi più rizzenti arriggaddi i' l'ulthimi $2 dì",
        "diff": "diff",
        "hist": "cron",
        "hide": "Cua",
        "undeletelink": "visuarizza/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}}",
-       "undeletedfiles": "{{PLURAL:$1|Un file ricuparaddu|$1 file ricuparaddi}}",
        "cannotundelete": "Ricùparu falliddu; è pussìbiri chi la pàgina sia già isthadda ricuparadda da un althru utenti.",
        "undelete-header": "Cunsulthà lu [[Special:Log/delete|rigisthru di li canzilladduri]] pa vidé li canzilladduri più rizzenti.",
        "undelete-search-box": "Zercha i' li pàgini canzilladdi",
index 5676eee..b65dfd3 100644 (file)
        "yourpasswordagain": "دیسان تێپەڕوشەگە بنۊسەو:",
        "login": "بچووە ناو",
        "nav-login-createaccount": "بچووە ناو / ھەژمار درس بکە",
-       "userlogin": "بچووە ناو / ھەژمار درس بکە",
-       "userloginnocreate": "بچووە ناو",
        "logout": "بچووە دەیشت",
        "userlogout": "بچووە دەرەو",
-       "nologin": "ھەژمار نەێری؟  $1.",
-       "nologinlink": "ھەژمارێگ درس بکە",
        "createaccount": "ھەژمار درس بکە",
-       "gotaccount": "لێرە ھەژمار دێرید؟ $1.",
-       "gotaccountlink": "بچووە ناو",
-       "userlogin-resetlink": "وردەکاریەیل ناوچینت لە ھۊرەو بردیتە؟",
        "createacct-emailrequired": "ناونیشان ئیمەیل",
-       "createaccountreason": "هووکار:",
        "createacct-reason": "هووکار",
        "nouserspecified": "بایەد ناو ئەوکاربەری دابین بکەی.",
        "login-userblocked": "ئەێ ئەوکاربەرە بلاک کریاێە. چۊنە ناو قەدەغەنە.",
        "rcshowhideanons": "ئەوکاربەرە نەناسیاوەگان $1",
        "rcshowhidepatr": "وێراشتە نەگەردیاێەگان $1",
        "rcshowhidemine": "وێراشتەگانم $1",
-       "rclinks": "دۊایین $1 گووڕانکاری $2 ڕووژ ویەردە نیشان بدە<br />$3",
+       "rclinks": "دۊایین $1 گووڕانکاری $2 ڕووژ ویەردە نیشان بدە",
        "diff": "جیاوازی",
        "hist": "دیرۆک",
        "hide": "بشارەو",
index 404083e..bb7989a 100644 (file)
        "editing": "Rievdadit siiddu $1",
        "editingsection": "Rievdadit oasi siiddus $1",
        "editingcomment": "Rievdadit kommeanta siiddus $1",
-       "explainconflict": "Soames lea rievdadan dán siiddu dan maŋŋel go don leat álgan rievdadit dan.\nBajit oasis oidno siiddu teaksta dálá hámis.\nDu rievdadusat oidnojit vuolit oasis.\nDon fertet dahkat du rievdadusaid dálá tekstii.\n'''Beare''' bajit oasi teaksta vurkejuvvo go deaddilat «{{int:savearticle}}».",
+       "explainconflict": "Soames lea rievdadan dán siiddu dan maŋŋel go don leat álgan rievdadit dan.\nBajit oasis oidno siiddu teaksta dálá hámis.\nDu rievdadusat oidnojit vuolit oasis.\nDon fertet dahkat du rievdadusaid dálá tekstii.\n'''Beare''' bajit oasi teaksta vurkejuvvo go deaddilat «$1».",
        "yourtext": "Iežat teaksta",
        "storedversion": "Vurkejuvvon veršuvdna",
        "yourdiff": "Erohusat",
        "rcshowhideanons": "$1 anonyma geavaheaddjit",
        "rcshowhidepatr": "$1 dárkistuvvon rievdadusat",
        "rcshowhidemine": "$1 iežas rievdádusat",
-       "rclinks": "Čájet $1 varas rievdadusa maŋimus $2 beaivve siste.<br />$3",
+       "rclinks": "Čájet $1 varas rievdadusa maŋimus $2 beaivve siste.",
        "diff": "erohus",
        "hist": "hist",
        "hide": "čiega",
        "undeleterevisions": "{{PLURAL:$1|Okta veršuvdna|$1 veršuvnna}} lasihuvvon arkiivii.",
        "undeletebtn": "Máhcat",
        "undeletecomment": "Kommeanta:",
-       "undeletedrevisions": "$1 veršuvnna máhcahuvvui",
-       "undeletedrevisions-files": "$1 veršuvnna ja $2 fiilla máhcahuvvui",
-       "undeletedfiles": "$1 fii(l)la máhcahuvvui",
        "cannotundelete": "Máhcaheapmi ii lihkosmuvvan.",
        "undelete-search-box": "Oza sihkojuvvon siidduid",
        "undelete-search-prefix": "Čájet siidduid, mat álget mearkkaiguin:",
index 62ecd78..5d67afd 100644 (file)
        "externaldberror": "Pos-römjde authenticacionde database extername jöx me necoccebj permiccionde updatan mecaitom externom.",
        "login": "Caápo",
        "nav-login-createaccount": "Caápo / xuatl",
-       "userlogin": "Caápo / xuatl",
        "logout": "Cuípo",
        "userlogout": "Cuípo",
        "notloggedin": "Necaápo",
-       "nologin": "Menecaápo? '''$1'''.",
-       "nologinlink": "Xuatl ö",
        "createaccount": "Xuatl",
-       "gotaccount": "Mecaápo? '''$1'''.",
-       "gotaccountlink": "Caápo",
        "createaccountmail": "caxuatl e-iitom",
        "badretype": "Quimx cánj zo misoj nematchöx.",
        "userexists": "IDde caitom coccebj usadad. Submitom hunnom.",
        "prefs-misc": "Jömc",
        "saveprefs": "Xuniim",
        "prefs-editing": "Ticpatlöx",
-       "rows": "Rowám:",
-       "columns": "Columnám:",
        "searchresultshead": "Yahöx",
        "savedprefs": "Hequáatlaác coccebj xuniimöx.",
        "timezonelegend": "Zonede xepe",
        "rcshowhideanons": "$1 caitóm anoniimóm",
        "rcshowhidepatr": "$1 ticpatlöx patrollöx",
        "rcshowhidemine": "$1 hániideditám",
-       "rclinks": "Cohuatlöx hunquiix $1 zo ixáap $2 zo iti <br />$3",
+       "rclinks": "Cohuatlöx hunquiix $1 zo ixáap $2 zo iti",
        "diff": "quiix",
        "hist": "histó",
        "hide": "Cíiitám",
index 687d41f..25a23de 100644 (file)
        "externaldberror": "Huru",
        "login": "Huru",
        "nav-login-createaccount": "Huru / kontu tee",
-       "userlogin": "Huru / kontu tee",
-       "userloginnocreate": "Huru",
        "logout": "Fatta",
        "userlogout": "Fatta",
        "notloggedin": "Mana huru",
        "userlogin-noaccount": "Šii nda kontu wala?",
        "userlogin-joinproject": "Dii {{SITENAME}}",
-       "nologin": "Šii nda kontu wala? $1.",
-       "nologinlink": "Kontu tee",
        "createaccount": "Kontu tee",
-       "gotaccount": "Huru",
-       "gotaccountlink": "Huru",
-       "userlogin-resetlink": "Dirŋa ni kontu šilbawey?",
        "userlogin-resetpassword-link": "Dirŋa ni šennikufaloo?",
        "userlogin-helplink2": "Ay gaa ka huru",
        "userlogin-loggedin": "N' huru ka ben sanda {{GENDER:$1|$1}}.\nGanda takaddaa zaa ka huru goykaw tana.",
        "createacct-another-email-ph": "Bataga aderesu dam",
        "createaccountmail": "Šiiyan šennikufal dam saaye bande nd'a sanba bataga aderesu tabatantaa do",
        "createacct-realname": "Maa cimi (suubari)",
-       "createaccountreason": "Dalil:",
        "createacct-reason": "Dalil",
        "createacct-reason-ph": "Hayaa kaŋ se war goo ma kontu waana tee",
        "createacct-submit": "War kontoo tee",
        "preview": "Moofur",
        "showpreview": "Moofuryan cebe",
        "showdiff": "Barmawey cebe",
-       "blankarticle": "<strong>Yaamar:</strong> Moɲoo kaŋ war goo m'a tee t'ikoonu.\nNda war na \"{{int:savearticle}}\" naagu, moɲoo ga kaa ta tee bila nda gundekuna.",
+       "blankarticle": "<strong>Yaamar:</strong> Moɲoo kaŋ war goo m'a tee t'ikoonu.\nNda war na \"$1\" naagu, moɲoo ga kaa ta tee bila nda gundekuna.",
        "anoneditwarning": "<strong>Yaamar:</strong> War mana huru. Borey kul hin ka dii war IP aderesoo nda war na barmay kul tee. Nda war <strong>[$1 huru]</strong> wala <strong>[$2 kontu tee]</strong>, war barmawey ga hanga war goykaw maaɲoo bande, nda nafaw taney kul. \\",
        "anonpreviewwarning": "<em>War mana huru. Gaabuyan ga too war IP aderesoo ma jisandi moɲoo woo fasalyan taarikoo ra.</em>",
-       "missingsummary": "<strong>Hongu:</strong> War mana barmay duurandi noo.\nWa \"{{int:savearticle}}\" naagu koyne, kul war barmaa ga gaabundi bila nd'affoo.",
+       "missingsummary": "<strong>Hongu:</strong> War mana barmay duurandi noo.\nWa \"$1\" naagu koyne, kul war barmaa ga gaabundi bila nd'affoo.",
        "missingcommenttext": "Wa feeriyan foo hantum ganda.",
-       "missingcommentheader": "<strong>Hongu:</strong> War mana teekaw/boŋžeeri noo feeriyanoo woo se.\nWa \"{{int:savearticle}}\" naagu koyne, kul war barmaa ga gaabundi bila nd'affoo.",
+       "missingcommentheader": "<strong>Hongu:</strong> War mana teekaw/boŋžeeri noo feeriyanoo woo se.\nWa \"$1\" naagu koyne, kul war barmaa ga gaabundi bila nd'affoo.",
        "summary-preview": "Duurandi moofuryan:",
        "subject-preview": "Teekaw|boŋžeeri moofuryan:",
        "blockedtitle": "Goykaa n' ka gagayandi",
        "editingsection": "Goo ma $1 fasal (dunbu)",
        "editingcomment": "Goo ma $1 fasal (dunbu taaga)",
        "editconflict": "Fasal cerehooyan: $1",
-       "explainconflict": "Boro foo na moɲoo woo barmay za war šintin k'a fasal.\nBeene hantum nungoo goo nda moo hantumoo takaa kaŋ nd'a bara sohõda.\nWar barmawey ga cebandi gandehere hantum nungoo ra.\nWar ga hima ka barmawey marga hantum barantaa ra.\nMoɲoo kan goo beene hantum nungoo ra <strong>hinne</strong> ma gaabundi nda war na \"{{int:savearticle}}\" naagu.",
+       "explainconflict": "Boro foo na moɲoo woo barmay za war šintin k'a fasal.\nBeene hantum nungoo goo nda moo hantumoo takaa kaŋ nd'a bara sohõda.\nWar barmawey ga cebandi gandehere hantum nungoo ra.\nWar ga hima ka barmawey marga hantum barantaa ra.\nMoɲoo kan goo beene hantum nungoo ra <strong>hinne</strong> ma gaabundi nda war na \"$1\" naagu.",
        "yourtext": "War hantumoo",
        "storedversion": "Barmayyan jisante",
        "nonunicodebrowser": "<strong>Yaamar: War ceecikaw ši Unicode kanbe.</strong>\nA workaround is in place to allow you to safely edit pages: Non-ASCII characters will appear in the edit box as hexadecimal codes.War ga hin ka šendaa woo koli nungu foo ra kaŋ naŋ war moɲey ma fasal nda saajaw. Harfey kaŋ manti ASCII ga bangay fasal bataa ra sanda ferši-iddu ašariyayaŋ.",
        "right-editprotected": "Moɲey kaŋ jejebandi sanda \"{{int:protect-level-sysop}}\" fasal",
        "right-editsemiprotected": "Moɲey kaŋ jejebandi sanda \"{{int:protect-level-autoconfirmed}}\" fasal",
        "right-editinterface": "Goykaw diidogoo fasal",
-       "right-editusercssjs": "Goykaw taney CSS nda JavaScript tukey fasal",
        "right-editusercss": "Goykaw taney CSS tukey fasal",
        "right-edituserjs": "Goykaw taney JavaScript tuke fasal",
        "right-editmyusercss": "War boŋ goykaw CSS tukey fasal",
        "rcshowhidemine": "Ay barmay $1",
        "rcshowhidemine-show": "Cebe",
        "rcshowhidemine-hide": "Tugu",
-       "rclinks": "Cebe barmay koraw $1 jirbi $2 korawey ra<br />$3",
+       "rclinks": "Cebe barmay koraw $1 jirbi $2 korawey ra",
        "diff": "zilayyan",
        "hist": "taariki",
        "hide": "Tugu",
        "undeleteviewlink": "guna",
        "undeleteinvert": "Suubaroo bere",
        "undeletecomment": "Dalil:",
-       "undeletedrevisions": "{{PLURAL:$1|Filla $1}} n' ka yeeti",
-       "undeletedrevisions-files": "{{PLURAL:$1|Filla $1}} nda {{PLURAL:$2|tuku $2}} n' ka yeeti",
-       "undeletedfiles": "{{PLURAL:$1|Tuku $1}} n' ka yeeti",
        "cannotundelete": "Tuusuyan naŋ kaŋ:\n$1",
        "undeletedpage": "<strong>$1 n' ka yeeti</strong>\n\nGuna [[Special:Taariki/tuusu|tuusuyan taariki]] ka dii tuusuyan korawey nda yeetiyaney kaŋ jisandi.",
        "undelete-header": "Guna [[Special:Taariki/tuusu|tuusuyan taarikoo]] moɲey kaŋ kokor ka tuusandi se.",
        "logentry-upload-overwrite": "$1 na dumi taaga {{GENDER:$2|zijandi}} $3 se",
        "logentry-upload-revert": "$1 na $3 {{GENDER:$2|zijandi}}",
        "rightsnone": "(baffoo)",
-       "revdelete-summary": "duurandi fasal",
        "feedback-adding": "Goo ma willandi tonton moɲoo ga…",
        "feedback-bugcheck": "A boori! Koroši de wala woo manti [hasaraw bayrandi $1] affaa. \\",
        "feedback-bugnew": "Ay n'a koroši. Hasaraw bayrandi sanba",
index 12051ab..8804f70 100644 (file)
@@ -7,7 +7,8 @@
                        "Zordsdavini",
                        "לערי ריינהארט",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Fitoschido"
                ]
        },
        "tog-underline": "Pabriežtė nūruodas:",
        "anontalk": "Aptarėms",
        "navigation": "Naršīms",
        "and": "&#32;ėr",
-       "qbfind": "Ėiškuotė",
-       "qbbrowse": "Naršītė",
-       "qbedit": "Taisītė",
-       "qbpageoptions": "Tas poslapis",
-       "qbmyoptions": "Mona poslapē",
        "faq": "TKK",
-       "faqpage": "Project:DOK",
        "actions": "Vēksmā",
        "namespaces": "Vardū srėtis",
        "variants": "Atmainā",
        "edit-local": "Taisītė vėitėni aprašīma",
        "create": "Padėrbtė",
        "create-local": "Prėkergtė vėitėni aprašīma",
-       "editthispage": "Taisītė ton poslapi",
-       "create-this-page": "Dėrbtė ton poslapi",
        "delete": "Trintė",
-       "deletethispage": "Trintė ton poslapi",
-       "undeletethispage": "Ton poslapi padėrbtė apent",
        "undelete_short": "Dėrbtė apent $1 {{PLURAL:$1:pakeitėma|pakeitėmus|pakeitėmu}}",
        "viewdeleted_short": "Veizietė $1 {{PLURAL:$1|ėštrinta keitėma|ėštrintus keitėmus|ėštrintū keitėmu}}",
        "protect": "Apsergietė",
        "protect_change": "pakeistė",
-       "protectthispage": "Apsergietė ton poslapi",
        "unprotect": "Keistė apsarga",
-       "unprotectthispage": "Keistė ton poslapė apsarga",
        "newpage": "Naus poslapis",
-       "talkpage": "Aptartė ton poslapi",
        "talkpagelinktext": "Aptarėms",
        "specialpage": "Specēlos poslapis",
        "personaltools": "Asabėnē rakondā",
-       "articlepage": "Veizietė straipsnė",
        "talk": "Aptarėms",
        "views": "Parveizė̄jėmā",
        "toolbox": "Rakondā",
        "tool-link-userrights": "Mainītė {{GENDER:$1|nauduotuoja|nauduotuojės}} gropės",
        "tool-link-emailuser": "Rašītė gromata {{GENDER:$1|tamou nauduotuojou}}",
-       "userpage": "Ruodītė nauduotuojė poslapi",
-       "projectpage": "Ruodītė pruojekta poslapi",
        "imagepage": "Veizietė abruozdielė poslapi",
        "mediawikipage": "Ruodītė pranešėma poslapi",
        "templatepage": "Ruodītė šabluona poslapi",
        "redirectedfrom": "(Nusokta ėš $1)",
        "redirectpagesub": "Nusokėma poslapis",
        "redirectto": "Nusokėms ont:",
-       "lastmodifiedat": "Tas poslapis paskotini sīki parkeists $1 $2.",
+       "lastmodifiedat": "Tas poslapis paskotėni sīki parkeists $1, $2.",
        "viewcount": "Tas poslapis bova atverts $1 {{PLURAL:$1|sīkis|sīkius|sīkiu}}.",
        "protectedpage": "Apsergiets poslapis",
        "jumpto": "Paršuoktė i:",
        "password-change-forbidden": "Negalat tuo wiki keistė slaptažuodiu.",
        "login": "Prėsėjongtė",
        "nav-login-createaccount": "Prėsėjongtė / padėrbtė paskīra",
-       "userlogin": "Prėsėjongtė / padėrbtė paskīra",
-       "userloginnocreate": "Prėsėjongtė",
        "logout": "Atsijongtė",
        "userlogout": "Atsijongtė",
        "notloggedin": "Neprėsėjongis",
        "userlogin-noaccount": "Netorat paskīruos?",
        "userlogin-joinproject": "Jonkėtėis prī {{SITENAME}}",
-       "nologin": "Netorat prėsėjongėma varda? '''$1'''.",
-       "nologinlink": "Sokorkėt paskīra",
        "createaccount": "Pasėdėrbtė paskīra",
-       "gotaccount": "Jau torėt paskīra? '''$1'''.",
-       "gotaccountlink": "Prėsėjonkat",
-       "userlogin-resetlink": "Ožmiršat sava prėsėjongėma doumenis?",
        "userlogin-resetpassword-link": "Ožmiršat sava slaptažuodi?",
        "userlogin-helplink2": "Prėsėjongėma pagelba",
        "userlogin-loggedin": "Tamsta jau īr prėsijongė̄s kāp {{GENDER:$1|$1}}.\nJēb nuorat prisėjongtė kāp kėts žmuogos, nauduokat skvarma apatiuo.",
        "createacct-another-email-ph": "Ožrašīkėt el. pašta adresa",
        "createaccountmail": "Nauduokėt laikėna slaptažuodi ė siōskėt nuruodėtō el. paštō",
        "createacct-realname": "Tėkros vardos (nie būtėns)",
-       "createaccountreason": "Dingstės:",
        "createacct-reason": "Dingstės",
        "createacct-reason-ph": "Kūdie dėrbat kėta nauduotojė poslapi",
        "createacct-submit": "Padėrbkat savėi paskīra",
        "preview": "Parveiza",
        "showpreview": "Ruodītė parveiza",
        "showdiff": "Ruodītė skėrtomus",
-       "blankarticle": "<strong>Atėdės:</strong> Tamsta dėrbat dīka poslapi.\nJēgo apent mīgsat \"{{int:savearticle}}\", ta ons poslapis vės vėin bos padėrbts.",
+       "blankarticle": "<strong>Atėdės:</strong> Tamsta dėrbat dīka poslapi.\nJēgo apent mīgsat \"$1\", ta ons poslapis vės vėin bos padėrbts.",
        "anoneditwarning": "<strong>Atidėsǃ</strong> Tamsta nāsot prėsėjongis. Tamstas IP adresos bos vėišā regėms, jēgo padėrbsat kuoki pakeitėma. Vuo jēgo <strong>[$1 prėsėjongsat]</strong> aba <strong>[$2 pasėdėrbsat nauduotuojė skīriu]</strong>, tumet Tamstas pakeitėmā prėgols prī Tamstas nauduotojė varda.",
        "anonpreviewwarning": "<em>Tamsta nāsat prėsėjongis. Kāp ėšsauguosat poslapi, tāp regiesės Tamstas IP adresos</em>",
        "missingsummary": "'''Priminėms:''' Tamsta nenuruodiet pakeitėma kuomentara. Jēgo viel paspausėt ''Ėšsauguotė'', Tamstas pakeitėms bus ėšsauguots ba anuo.",
-       "selfredirect": "<strong>Atėdės:</strong> Tamsta dėrbat poslapė nosokėma savėsp.\nParašīkat tėkslē, kor ons poslapis tor soktė.\nJēgo apent mīgsat \"{{int:savearticle}}\", ta ons poslapis vės vėin bos padėrbts.",
+       "selfredirect": "<strong>Atėdės:</strong> Tamsta dėrbat poslapė nosokėma savėsp.\nParašīkat tėkslē, kor ons poslapis tor soktė.\nJēgo apent mīgsat \"$1\", ta ons poslapis vės vėin bos padėrbts.",
        "missingcommenttext": "Duokat pāiškėnėma apatiuo.",
-       "missingcommentheader": "'''Primėnėms:''' Tamsta nadaviet pakeitėma paaiškėnėma. Jēgo apent paspausat \"{{int:savearticle}}\", Tamstas pakeitėms būs ėšsauguots ba anuo.",
+       "missingcommentheader": "'''Primėnėms:''' Tamsta nadaviet pakeitėma paaiškėnėma. Jēgo apent paspausat \"$1\", Tamstas pakeitėms būs ėšsauguots ba anuo.",
        "summary-preview": "Pāiškėnėma parvaiza:",
        "subject-preview": "Skėrsnelė/ontraštės parvaiza:",
        "previewerrortext": "Miegėnant parveizietė pakeitėmus nūtėka klaida.",
        "editingsection": "Keitams $1 (skėrsnelis)",
        "editingcomment": "Keitams $1 (naus skėrsnis)",
        "editconflict": "Do keitėmo nesotink: $1",
-       "explainconflict": "Kažėn kas kėts jau pakeitė poslapi nug ton čiesa, kāp Tamsta pradiejuot anon keistė.\nVėršō īr patė vielībuojė straipsnė ėšruoda.\nTamstas pakeitėmā pateiktė apatiuo.\nTamstā rēk sokergtė Tamstas pakeitėmus so tās, katrėi vėršō.\nKumet paspausat „{{int:savearticle}}“, bos ožrašīts '''tėktās''' tas raštos, katros īr ėšgoldīts vėršō.",
+       "explainconflict": "Kažėn kas kėts jau pakeitė poslapi nug ton čiesa, kāp Tamsta pradiejuot anon keistė.\nVėršō īr patė vielībuojė straipsnė ėšruoda.\nTamstas pakeitėmā pateiktė apatiuo.\nTamstā rēk sokergtė Tamstas pakeitėmus so tās, katrėi vėršō.\nKumet paspausat „$1“, bos ožrašīts '''tėktās''' tas raštos, katros īr ėšgoldīts vėršō.",
        "yourtext": "Tamstas raštos",
        "storedversion": "Ėšsauguots atmains",
        "editingold": "'''Atėdės: Tamsta keitat ne vielībiausi poslapė atmaina.\nJēgo ėšsauguosat sava pakeitėmus, īkondin darītė pakeitėmā prapols.'''",
        "template-semiprotected": "(posiau apsergiets)",
        "hiddencategories": "Ons poslapis prėgol $1 {{PLURAL:$1|pakavuotā kateguorėjē|pakavuotoms kateguorėjėms|pakavuotu kateguorėju}}:",
        "nocreatetext": "{{SITENAME}} aprėbuojė galėmībe kortė naujus poslapius.\nTamsta galėt grīžtė ė redagoutė nūnā esonti poslapi, a [[Special:UserLogin|prėsėjongtė a sokortė paskīra]].",
-       "permissionserrors": "Teisiu klaida",
+       "permissionserrors": "Privėlėju klaida",
        "permissionserrorstext": "Tamsta netorėt teisiu šėta darītė diel {{PLURAL:$1|tuos prīžastėis|tū prīžastiū}}:",
        "permissionserrorstext-withaction": "Tamsta natorėt leidėma $2 dielē {{PLURAL:$1|tuokės dingstėis|tuokiū dingstiū}}:",
        "recreate-moveddeleted-warn": "'''Parspiejėms: Tamsta ikeliat faila, katros onkstiau bova ėštrėnts.'''\n\nTamsta torietomiet nusprēstė, a īr naudėnga tuoliau ikeldinietė ta faila.\nTuo faila pašalinėma istuorėjė īr pateikta dielē patuogoma:",
        "mergehistory-autocomment": "[[:$1]] parnešts ont [[:$2]]",
        "mergehistory-comment": "[[:$1]] parnešts ont [[:$2]]: $3",
        "mergehistory-reason": "Dingstės:",
+       "mergelog": "Apjongėmu sārašos",
        "revertmerge": "Atskėrtė",
        "history-title": "Poslapė „$1“ istuorėjė",
        "difference-title": "$1 – skėrtoms terp pakeitėmu.",
        "search-suggest": "Mažnē mīslėjėt ka $1",
        "search-rewritten": "Ruod kas ī soėiškuota pavadėnėmo „$1“. Mažnē geriau ėiškuotė „$2“?",
        "search-interwiki-caption": "Dokterėnē pruojektā",
-       "search-interwiki-default": "Soėiškuota nug $1ː",
+       "search-interwiki-default": "Soėiškuota nug $1:",
        "search-interwiki-more": "(daugiau)",
        "search-relatedarticle": "Sosėjė̄",
        "searchrelated": "sosėjė̄",
        "action-read": "skaitītė ton poslapi",
        "action-edit": "redagoutė ta poslapi",
        "action-createpage": "dėrbtė poslapius",
+       "action-createaccount": "sokortė nauduotuojė poslapė",
        "action-move": "parvadintė šėton poslapi",
        "action-move-subpages": "parvadintė šėta poslapi ėr anuo dalės",
        "action-move-categorypages": "parvadintė kateguorėjes",
        "rcshowhidecategorization": "$1, kap poslapiam doud kateguorėjės",
        "rcshowhidecategorization-show": "Ruodītė",
        "rcshowhidecategorization-hide": "Kavuotė",
-       "rclinks": "Ruodītė vielībus $1 pakeitėmu par paskuojės $2 dėinas<br />$3",
+       "rclinks": "Ruodītė vielībus $1 pakeitėmu par paskuojės $2 dėinas",
        "diff": "skėrt",
        "hist": "ist",
        "hide": "Kavuotė",
        "sharedupload": "Tas fails īr ėš $1 ė gal būtė nauduojams kėtūs pruojektūs.",
        "sharedupload-desc-here": "Tas abruozdielis īr nug $1 ė gal būtė nauduojams kėtūs poslapiūs.\nŽinės nug [$2 abruozdielė aprašīma poslapė] prėgol apatiuo.",
        "sharedupload-desc-create": "Šėts abruozdielis īr ėš $1 ė gal būtė nauduonams kėtūs pruojektūs. \nMaž nuorat pamainītė anuo aprašīma [$2 anuo poslapie]?",
+       "filepage-nofile": "Abruozdielė tuokio vardo nie.",
        "uploadnewversion-linktext": "Ožkrautė nauji abruozdielė atmaina",
        "shared-repo-from": "ėš $1",
        "shared-repo": "bendruos saugīklas",
        "booksources": "Kningu šaltėnē",
        "booksources-search-legend": "Kningu šaltėniu paėiška",
        "booksources-search": "Ėiškuotė",
-       "specialloguserlabel": "Nauduotuos:",
-       "speciallogtitlelabel": "Pavadėnims:",
+       "specialloguserlabel": "Dėrbies:",
+       "speciallogtitlelabel": "Nauduotuojė vards:",
        "log": "Specēliūju vīksmū istuorėjė",
        "all-logs-page": "Vėsas istuorėjės",
        "alllogstext": "Bėndra idietu failu, ėštrīnėmu, ožrakėnėmu, bluokavėmu ė prėvėlėju soteikėmu istuorėjė.\nĪr galėmībė somažintė rezoltatu skaitliu patėkslėnont vēksma tėpa, nauduotuojė a sosėjosė poslapė.",
        "notanarticle": "Ne torėnė poslapis",
        "watchlist-details": "Keravuojama $1 {{PLURAL:$1|poslapis|$1 poslapē|$1 poslapiu}} neskaitlioujant aptarėmu poslapiu.",
        "wlheader-enotif": "El. pašta primėnėmā ijongtė īr.",
-       "wlheader-showupdated": "Poslapē, katrėi pakeistė nu Tamstas paskotėnė apsėlonkėma čiesa anūs, īr pažīmietė '''pastuorintā'''",
-       "wlnote": "Ruoduoma '''$1''' paskotėniu pakeitėmu, atlėktū par '''$2''' paskotėniu adīnu.",
+       "wlheader-showupdated": "Poslapē, katros kažėkas pakeitė nug Tamstas paskotėnė apsilonkīma, īr pažīmietė <strong>stuorā</strong>.",
+       "wlnote": "Apatiuo ī {{PLURAL:$1|vielībāsis pakeitėms|vielībė̄jė <strong>$1</strong> pakeitėmā}} par {{PLURAL:$2|paskotėnė adīna|paskotėnės <strong>$2</strong> adīnas|paskotėniu <strong>$2</strong> adīnu}} tap, kap daba ī $3, $4.",
        "wlshowlast": "Ruodītė paskotėniu $1 adīnu, $2 dėinū pakeitėmus",
        "watchlist-hide": "Kavuotė",
        "watchlist-submit": "Ruodītė",
        "undeleteviewlink": "veizietė",
        "undeleteinvert": "Žīmietė atvėrkštē",
        "undeletecomment": "Dingstės:",
-       "undeletedrevisions": "$1 {{PLURAL:$1|pakeitėms sogrōžints|pakeitėmā sogrōžintė|pakeitėmu sogrōžintu}} īr",
-       "undeletedrevisions-files": "sogrōžintaː $1 {{PLURAL:$1|pakeitėms|pakeitėmā|pakeitėmu}} ėr $2 {{PLURAL:$2|abruozdielis|abruozdielē|abruozdieliu}}",
-       "undeletedfiles": "sogrōžintaː {{PLURAL:$1|abruozdielis|abruozdielē|abruozdieliu}}",
        "undeletedpage": "'''$1 bova pargōžints'''\nParveizėkat [[Special:Log/delete|trīnėmu sāroša]], ka regietomiet, kas dabā ėšrinta/grōžinta īr.",
        "undelete-header": "Veizėkat [[Special:Log/delete|trīnėma istuorėjuo]] paskoteniausē ėštrintus poslapius.",
        "undelete-search-box": "Ėiškuotė ėštrintū poslapiu",
        "tooltip-feed-rss": "Šėta poslapė RSS šaltėnis",
        "tooltip-feed-atom": "Ton poslapė Atom šaltėnis",
        "tooltip-t-contributions": "Ruodītė tou {{GENDER:$1|nauduotuojė}} duovi",
-       "tooltip-t-emailuser": "Siōstė gromata šėtom prietėliō",
+       "tooltip-t-emailuser": "Siōstė gromata tam prietėliou",
        "tooltip-t-upload": "Ožkrautė abruozdielius",
        "tooltip-t-specialpages": "Specēliūju poslapiu sārašos",
        "tooltip-t-print": "Šėta poslapė atmains spausdėnėmou",
        "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",
        "simpleantispam-label": "Patikrėnėms nug šiokšlėnėma.\n<strong>Napildėkat</strong> šėton!",
+       "pageinfo-title": "Aplė $1",
        "pageinfo-header-basic": "Poslapė žėnės",
        "pageinfo-header-edits": "Keitėma istuorėjė",
        "pageinfo-header-restrictions": "Poslapė apsauga",
        "pageinfo-header-properties": "Poslapė savībės",
+       "pageinfo-display-title": "Ruoduoms pavadėnėms",
+       "pageinfo-length": "Straipsnė ėlgoms (baitās)",
        "pageinfo-article-id": "Poslapė ID",
        "pageinfo-language": "Poslapė kalba",
+       "pageinfo-robot-index": "Lēst ī",
+       "pageinfo-robot-noindex": "Nie leidama",
+       "pageinfo-watchers": "Kieravuotuoju skaitlios",
+       "pageinfo-few-watchers": "Mažiau kap $1 {{PLURAL:$1|kieravuotuos|kieravuotuojē|kieravuotuoju}}",
+       "pageinfo-redirects-name": "Nūsokėmu ont ton poslapė skaitlios",
        "pageinfo-firstuser": "Poslapė dėrbiejē",
        "pageinfo-firsttime": "Padėrbėma čiesos",
        "pageinfo-lastuser": "Vielībs dėrbies",
        "pageinfo-lasttime": "Vielība pakeitėma čiesos",
        "pageinfo-edits": "Vėsū keitėmu skaitlios",
+       "pageinfo-recent-edits": "Vielībāsis pakeitėmu skaitlios (par praētas $1)",
+       "pageinfo-hidden-categories": "{{PLURAL:$1|Pakavuota kateguorėjė|Pakavuotas kateguorėjės|Pakavuotu kateguorėju}} ($1)",
        "pageinfo-toolboxlink": "Poslapė infuormacėjė",
        "pageinfo-redirectsto": "Nusokėms ont",
        "pageinfo-redirectsto-info": "aple",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|poslapis|poslapē|poslapiu}}",
        "file-info": "faila dėdoms: $1, MIME tips: $2",
        "file-info-size": "$1 × $2 taškū, abruozdielė dėdloms: $3, MIME būds: $4",
+       "file-info-size-pages": "$1 × $2 pikselē, abruozdielė dėdloms: $3, MIME būds: $4, $5 {{PLURAL:$5|poslapis|poslapē|poslapiu}}",
        "file-nohires": "Geresnis ėšraiškėms negalėms.",
        "svg-long-desc": "SVG skvarmou, fuormalē $1 × $2 puškiu, skvarmenė dėdloms: $3",
        "show-big-image": "Pradėnis abruozdielis",
        "watchlistedit-raw-done": "Tamstas keravuojamu poslapiu sārašos bova atnaujints.",
        "watchlistedit-raw-added": "$1 {{PLURAL:$1|poslapis bova pridiets|poslapē bova pridietė|poslapiu bova pridieta}}:",
        "watchlistedit-raw-removed": "$1 {{PLURAL:$1|poslapis bova pašalėnts|poslapē bova pašalėntė|poslapiu bova pašalėnta}}:",
+       "watchlisttools-clear": "Ėštrintė keravuojamu poslapiu sāraša",
        "watchlisttools-view": "Veizietė sosėjosius pakeitėmus",
        "watchlisttools-edit": "Veizietė ėr keistė keravuojamu straipsniu sāraša",
        "watchlisttools-raw": "Keistė nebėngta keravuojamu straipsniu sāraša",
        "tag-filter": "[[Special:Tags|Žīmiū]] kuošeklis:",
        "tag-filter-submit": "Kuošeklis",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Žīms|Žīmā|Žīmū}}]]: $2)",
+       "tags-active-yes": "Tēp",
+       "tags-active-no": "Ne",
        "tags-edit": "taisītė",
+       "tags-hitcount": "$1 {{PLURAL:$1|pakeitėms|pakeitėmā|pakeitėmu}}",
        "comparepages": "Primestė poslapio",
        "logentry-delete-delete": "$1 ėštrīnė poslapi $3",
-       "logentry-delete-restore": "$1 atkūrė poslapi $3",
+       "logentry-delete-restore": "$1 atgrōžėna poslapi $3 ($4)",
        "revdelete-content-hid": "torėnīs pakavuots",
        "logentry-block-block": "$1 {{GENDER:$2|ožgīnė}} {{GENDER:$4|$3}} nug dėrbėma, tas vēk ton čiesa - $5 $6",
        "logentry-move-move": "$1 {{GENDER:$2|parvadėna}} poslapi $3 i $4",
        "logentry-upload-overwrite": "$1 {{GENDER:$2|ožkruovė}} naujė $3 atmaina",
        "logentry-upload-revert": "$1 {{GENDER:$2|ožkruovė}} $3",
        "rightsnone": "(juokiū)",
-       "revdelete-summary": "keitėma paāškėnėms",
        "feedback-close": "Padėrbt",
-       "searchsuggest-search": "Ėiškuotė",
+       "searchsuggest-search": "Ėiškuotė svetainie \"{{SITENAME}}\"",
        "searchsuggest-containing": "katrėi tor...",
        "duration-seconds": "$1 {{PLURAL:$1|sekondė|sekondės|sekondiu}}",
        "duration-minutes": "$1 {{PLURAL:$1|mėnotė|mėnotės|mėnotiu}}",
index 40e57a9..3e5065f 100644 (file)
        "preview": "Pregled",
        "showpreview": "Prikaži pregled",
        "showdiff": "Prikaži izmjene",
-       "blankarticle": "<strong>Upozorenje:</strong> Napravili ste praznu stranicu.\nAko ponovno kliknete \"{{int:savearticle}}\", napravit ćete praznu stranicu bez sadržaja.",
+       "blankarticle": "<strong>Upozorenje:</strong> Napravili ste praznu stranicu.\nAko ponovno kliknete \"$1\", napravit ćete praznu stranicu bez sadržaja.",
        "anoneditwarning": "<strong>Upozorenje:</strong> Niste prijavljeni. \nVaša IP adresa će biti javno vidljiva ako napravite neku izmjenu. Ako se <strong>[$1 prijavite]</strong> ili <strong>[$2 napravite račun]</strong>, vaše izmjene će biti pripisane vašem korisničkom imenu, zajedno sa drugim pogodnostima.",
        "anonpreviewwarning": "''Niste prijavljeni. Vaša IP adresa će biti zabilježena u historiji ove stranice.''",
        "missingsummary": "'''Podsjećanje:''' Niste unijeli sažetak izmjene.\nAko kliknete na Sačuvaj/Snimi, Vaša izmjena će biti snimljena bez sažetka.",
-       "selfredirect": "<strong>Upozorenje:</strong> Preusmjeravate stranicu na samu sebe.\nMožda ste naveli pogrešan cilj preusmjeravanja ili ste uređivali pogrešnu stranicu.\nAko ponovno kliknete \"{{int:savearticle}}\", ipak će nastati preusmjerenje.",
+       "selfredirect": "<strong>Upozorenje:</strong> Preusmjeravate stranicu na samu sebe.\nMožda ste naveli pogrešan cilj preusmjeravanja ili ste uređivali pogrešnu stranicu.\nAko ponovno kliknete \"$1\", ipak će nastati preusmjerenje.",
        "missingcommenttext": "Molimo unesite komentar ispod.",
-       "missingcommentheader": "<strong>Podsjetnik:</strong> Niste napisali temu za ovaj komentar.\nAko ponovo kliknete na \"{{int:savearticle}}\", vaša izmjena će biti sačuvana bez teme/naslova.",
+       "missingcommentheader": "<strong>Podsjetnik:</strong> Niste napisali temu za ovaj komentar.\nAko ponovo kliknete na \"$1\", vaša izmjena će biti sačuvana bez teme/naslova.",
        "summary-preview": "Pretpregled sažetka:",
        "subject-preview": "Pretpregled teme:",
        "previewerrortext": "Dogodila se greška prilikom prikazivanja vaših izmjena.",
        "editingsection": "Uređujete $1 (sekciju)",
        "editingcomment": "Uređujete $1 (nova sekcija)",
        "editconflict": "Sukobljenje izmjene: $1",
-       "explainconflict": "Neko drugi je promujenio ovu stranicu otkad ste Vi počeli da je mijenjate.\nGornje tekstualno polje sadrži tekst stranice koji trenutno postoji.\nVaše izmjene su prikazane u donjem tekstu.\nMoraćete da unesete svoje promjene u postojeći tekst.\n'''Samo''' tekst u gornjem tekstualnom polju će biti snimljen kad pritisnete \"{{int:savearticle}}\".",
+       "explainconflict": "Neko drugi je promujenio ovu stranicu otkad ste Vi počeli da je mijenjate.\nGornje tekstualno polje sadrži tekst stranice koji trenutno postoji.\nVaše izmjene su prikazane u donjem tekstu.\nMoraćete da unesete svoje promjene u postojeći tekst.\n'''Samo''' tekst u gornjem tekstualnom polju će biti snimljen kad pritisnete \"$1\".",
        "yourtext": "Vaš tekst / Ваш текст",
        "storedversion": "Uskladištena verzija",
        "nonunicodebrowser": "'''UPOZORENJE: Vaš preglednik ne podržava Unicode zapis znakova.\nMolimo Vas promijenite ga prije sljedećeg uređivanja članaka. Znakovi koji nisu po ASCII standardu će se u prozoru za izmjene pojaviti kao heksadecimalni kodovi.'''",
        "right-editsemiprotected": "Uređivanje stranica zaštićenih kao  \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Uređivanje modela sadržaja stranice",
        "right-editinterface": "Uređivanje korisničkog interfejsa",
-       "right-editusercssjs": "Uređivanje CSS i JS datoteka drugih korisnika",
        "right-editusercss": "Uređivanje CSS datoteka drugih korisnika",
        "right-edituserjs": "Uređivanje Javascript datoteka drugih korisnika",
        "right-editmyusercss": "Uredite svoje vlastite CSS datoteke",
        "rcshowhidecategorization": "$1 kategorizacija stranice",
        "rcshowhidecategorization-show": "Prikaži",
        "rcshowhidecategorization-hide": "Sakrij",
-       "rclinks": "Prikaži najskorijih $1 izmjena u posljednjih $2 dana<br />$3",
+       "rclinks": "Prikaži najskorijih $1 izmjena u posljednjih $2 dana",
        "diff": "razl-разл",
        "hist": "his-пов",
        "hide": "Sakrij",
        "undeleteviewlink": "pogledaj",
        "undeleteinvert": "Sve osim odabranog",
        "undeletecomment": "Razlog:",
-       "undeletedrevisions": "{{PLURAL:$1|$1 revizija vraćena|$1 revizije vraćene|$1 revizija vraćeno}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 revizija|$1 revizije|$1 revizija}} i {{PLURAL:$2|1 datoteka|$2 datoteke|$2 datoteka}} vraćeno",
-       "undeletedfiles": "{{PLURAL:$1|1 datoteka vraćena|$1 datoteke vraćene|$1 datoteka vraćeno}}",
        "cannotundelete": "Vraćanje nije uspjelo:\n$1",
        "undeletedpage": "'''$1 je vraćena'''\n\nProvjerite [[Special:Log/delete|evidenciju brisanja]] za zapise najskorijih brisanja i vraćanja.",
        "undelete-header": "Pogledajte [[Special:Log/delete|evidenciju brisanja]] za nedavno obrisane stranice.",
index f84e6e2..80f7f9f 100644 (file)
        "externaldberror": "Imma tlla ɣin kra lafut ɣu ukcumnk ulla urak ittuyskar at tsbddelt lkontnk nbrra.",
        "login": "Kcm ɣid",
        "nav-login-createaccount": "kcm / murzm Amidan",
-       "userlogin": "kchem / qiyd amskhdam amaynu",
-       "userloginnocreate": "Kcm ɣid",
        "logout": "Fuɣ",
        "userlogout": "Fuɣ",
        "notloggedin": "Ur tmlit mat git",
-       "nologin": "Ur trzemt amidan (lkunt) nek? $1..",
-       "nologinlink": "Murzm amidan nek (lkunt)..",
        "createaccount": "Murzm amidan nek (lkunt)..",
-       "gotaccount": "Is nit dark amidan(lkunt)? $1.",
-       "gotaccountlink": "Kcm",
-       "userlogin-resetlink": "Ttut ismnk d tasarut n ukccum nk",
        "createaccountmail": "S tirawt taliktunant",
-       "createaccountreason": "Maɣ:",
        "badretype": "Tasarut lin tgit ur dis tucka.",
        "userexists": "Asaɣ nu umsqdac li tskcmt illa yad",
        "loginerror": "Gar akccum",
        "showdiff": "Mel imbddln lli ifttun",
        "anoneditwarning": "Han  ''' ur ttuyssant ''' rad ibayn IP nk ɣ umzrut n tasna yad, ur sul  iḥba tamagit nk",
        "anonpreviewwarning": "ur ittuyssan mat tgit. Iɣ tgdl tawuri nk, tansa nk IP rad tbayn ɣ umzruy n imbdln n tasna yad.",
-       "missingsummary": "'''Adakt nskti :''' ur ta tfit awal imun n imbddln nk.\nIɣ tklikkit tiklit yaḍn f tjrrayt « {{int:savearticle}} », aẓṛig rad ittuyskar blla tsnt",
+       "missingsummary": "'''Adakt nskti :''' ur ta tfit awal imun n imbddln nk.\nIɣ tklikkit tiklit yaḍn f tjrrayt « $1 », aẓṛig rad ittuyskar blla tsnt",
        "missingcommenttext": "Σafak skjm awnnit (aɣfawal) nk ɣ uflla.",
        "summary-preview": "Tiẓṛi  n tagḍwit:",
        "blockedtitle": "lmostkhdim ad itbloka",
        "saveprefs": "sjjl",
        "restoreprefs": "sglbd kollo regalega",
        "prefs-editing": "tahrir",
-       "rows": "sfof:",
-       "columns": "aamida:",
        "searchresultshead": "Cabba",
        "stub-threshold": "wasla n  <a href=\"#\" class=\"stub\">do amzdoy</a> itforma (bytes):",
        "stub-threshold-disabled": "moattal",
        "rcshowhideanons": "$1 midn ur ttuyssan nin",
        "rcshowhidepatr": "$1 Imbddln n tsagga",
        "rcshowhidemine": "$1 iẓṛign inu",
-       "rclinks": "Ml id  $1 n imbddltn immgura li ittuyskarn n id $2 ussan ad gguranin<br />$3.",
+       "rclinks": "Ml id  $1 n imbddltn immgura li ittuyskarn n id $2 ussan ad gguranin",
        "diff": "Gar",
        "hist": "Amzruy",
        "hide": "Ḥbu",
        "htmlform-selectorother-other": "wayya",
        "revdelete-restricted": "iskr aqn i indbaln",
        "revdelete-unrestricted": "Aqn iḥiyd i indbaln",
-       "rightsnone": "(ḥtta yan)",
-       "revdelete-summary": "Awal uflla n imbddln"
+       "rightsnone": "(ḥtta yan)"
 }
index f1e0537..7788fc2 100644 (file)
        "category-empty": "<em> လိူင်ႈဢၼ်ၼႆႉ ယၢမ်းလဵဝ် ဢမ်ႇပႆႇမီး ၼႃႈလိၵ်ႈ ဢမ်ႇၼၼ် သိုဝ်ႇသင်ဝႆႉ</em>",
        "hidden-categories": "{{PLURAL:$1|လိူင်ႈဢၼ်လပ်ႉဝႆႉ |လိူင်ႈၸိူဝ်း ဢၼ်လပ်ႉဝႆႉ}}",
        "hidden-category-category": "လိူင်ႈ ဢၼ်လပ်ႉသိူင်ႇဝႆႉ",
-       "category-subcat-count": "{{PLURAL:$2|á\81¼á\82\82á\80ºá\80¸á\80\9cá\80­á\80°á\80\84á\80ºá\82\88á\80¢á\81¼á\80ºá\81¼á\82\86á\82\89 á\80\99á\80®á\80¸á\81µá\80­á\80\84á\80ºá\82\87á\81½á\82\84á\80\9cá\80­á\80°á\80\84á\80ºá\82\88á\81¼á\82\86á\82\89 á\81¸á\80­á\80°á\80\84á\80ºá\82\89á\81¼á\82\86á\81µá\80½á\81ºá\80ºá\80¸|á\81¼á\82\82á\80ºá\80¸á\80\9cá\80­á\80°á\80\84á\80ºá\82\88á\81¼á\82\86á\82\89 á\80\99á\80®á\80¸ This category has the following {{PLURAL:$1|á\81µá\80­á\80\84á\80ºá\82\87á\81½á\82\84á\80\9cá\80­á\80°á\80\84á\80ºá\82\88|$1 á\81µá\80­á\80\84á\80ºá\82\87á\81½á\82\84á\80\9cá\80­á\80°á\80\84á\80ºá\82\88á\80\90á\80\84á\80ºá\80¸လၢႆး}}, ၼႂ်းၵႃႊ $2 တင်းသဵင်ႈတင်းမူတ်း}}",
+       "category-subcat-count": "{{PLURAL:$2|á\81¼á\82\82á\80ºá\80¸á\80\9cá\80­á\80°á\80\84á\80ºá\82\88á\80¢á\81¼á\80ºá\81¼á\82\86á\82\89 á\80\99á\80®á\80¸á\81µá\80­á\80\84á\80ºá\82\87á\81½á\82\84á\80\9cá\80­á\80°á\80\84á\80ºá\82\88á\81¼á\82\86á\82\89 á\81¸á\80­á\80°á\80\84á\80ºá\82\89á\81¼á\82\86á\81µá\80½á\81ºá\80ºá\80¸|á\81¼á\82\82á\80ºá\80¸á\80\9cá\80­á\80°á\80\84á\80ºá\82\88á\81¼á\82\86á\82\89 á\80\99á\80®á\80¸ This category has the following {{PLURAL:$1|á\81µá\80­á\80\84á\80ºá\82\87á\81½á\82\84á\80\9cá\80­á\80°á\80\84á\80ºá\82\88|$1 á\81µá\80­á\80\84á\80ºá\82\87á\81½á\82\84á\80\9cá\80­á\80°á\80\84á\80ºá\82\88á\80\90á\80\84á\80ºá\82\87လၢႆး}}, ၼႂ်းၵႃႊ $2 တင်းသဵင်ႈတင်းမူတ်း}}",
        "category-subcat-count-limited": "ၼႂ်းလိူင်ႈၼႆႉ မီးဝႆႉလိူင်ႈၼင်ႇၼႆ {{PLURAL:$1| ၵိင်ႇၽႄလိူင်ႈ |$1 ၵိင်ႇၽႄလိူင်ႈတင်းလၢႆ}}",
        "category-article-count": "{{PLURAL:$2| လိူင်ႈဢၼ်ၼႆႉ ပႃးဝႆႉၼႃႈလိၵ်ႈၼင်ႇပႃႈတႂ်ႈၼႆႉၵွၺ်း |ၼႂ်းလိူင်ႈဢၼ်ၼႆႉ {{PLURAL:$1| ၼႃႈလိၵ်ႈ }} တင်းသဵင်ႈတင်းမူတ်း မီးဝႆႉ $2 ႁူဝ်}}။",
        "category-article-count-limited": "တၢင်းပႃႈတႂ်ႈၼႆႉ  {{PLURAL:$1| ၼႃႈလိၵ်ႈ }} မီးၼႂ်းလိူင်ႈ တေႃႈလဵဝ်ၼႆႉ",
        "redirectedfrom": "(လုၵ်ႉတီး $1 ၼႆႈသေ ၶိုၼ်းပိၼ်ႇဝၢႆႇမႃး)",
        "redirectpagesub": "ပိၼ်ႇႁူဝ်ၼႃႈလိၵ်ႈ",
        "redirectto": "ဝိၼ်ႇၵႂႃႇၸူး:",
-       "lastmodifiedat": "ၼႃႈ​လိၵ်ႈၼႆ့ မႄး​ဝႆႉ ၼင်ႇ​ၵမ်း​လိုၼ်း​သုတ်း မိူဝ်ႈ ဝၼ်း​တီႈ $1 ၶၢဝ်းယၢမ်း $2",
+       "lastmodifiedat": "ၼႃႈ​လိၵ်ႈၼႆ့ မႄးမႃး​ဝႆႉ ၼင်ႇ​ၵမ်း​လိုၼ်း​သုတ်း မိူဝ်ႈ ဝၼ်း​တီႈ $1 ၶၢဝ်းယၢမ်း $2",
        "viewcount": "ၼႃႈလိၵ်ႈၼႆႉ ထုၵ်ႇၸႂ်ႉဝႆႉ {{PLURAL:$1|ပွၵ်ႈၼိုင်ႈ|$1 ၵမ်း}}.",
        "protectedpage": "ၼႃးလိၵ်ႈ ဢၼ်ႁႄႉၵင်ႈဝႆႉ",
        "jumpto": "ၶၢမ်ႈၸူး :",
        "copyright": "ၸိူဝ်းၶဝ်ႈပႃးဝႆႉၼႆႉ မၼ်းတေၸၢင်ႈၸႂ်ႉလႆႈ ၵႃႈတီႈ ဝႂ် $1",
        "copyrightpage": "{{ns:project}}:သုၼ်ႇထုတ်ႇ",
        "currentevents": "ၵၢၼ်ႁဵတ်းသၢင်ႈယၢမ်းလဵဝ်",
-       "currentevents-url": "Project:ၵၢၼ်ႁဵတ်းသၢင်ႈ ယၢမ်းလဵဝ်",
+       "currentevents-url": "Project:ၵၢၼ်ႁဵတ်းသၢင်ႈယၢမ်းလဵဝ်",
        "disclaimers": "ၶေႃႈထဵင်",
        "disclaimerpage": "Project:ၵၢၼ်ထဵင်ၶိုၼ်းၵူႈလွင်ႈလွင်ႈ",
        "edithelp": "မႄးထတ်းၵၼ်ၸွႆႈထႅမ်",
        "preview": "တူၺ်းလူင်ႈၼႃႈ",
        "showpreview": "ၼႄတူဝ်ယၢင်ႇ",
        "showdiff": "ၼႄလွင်ႈလႅၵ်ႈလၢႆႈ",
-       "blankarticle": "<strong>ၽၢင်ႉ:</strong> ၼႃႈလိၵ်ႈ ဢၼ်ၸဝ်ႈၵဝ်ႇ ၵေႃႇသၢင်ႈဝႆႉၼႆႉ မၼ်းတိုၵ်ႉပဵၼ် ဢၼ်ပဝ်ႇဝႆႉၵူၺ်း။ ပေႃးၸဝ်ႈၵဝ်ႇ ၼဵၵ်း \"{{int:savearticle}}\" ထႅင်ႈၵမ်းၼိုင်ႈၼႆ, ၼႃႈလိၵ်ႈၼႆႉ မၼ်းတေၵေႃႇသၢင်ႈၵႂႃႇ ၼင်ႇ ဢၼ်ပဝ်ႇ ဢၼ်ဢမ်ႇမီးသင်ၼၼ်ႉယဝ်ႈ။",
+       "blankarticle": "<strong>ၽၢင်ႉ:</strong> ၼႃႈလိၵ်ႈ ဢၼ်ၸဝ်ႈၵဝ်ႇ ၵေႃႇသၢင်ႈဝႆႉၼႆႉ မၼ်းတိုၵ်ႉပဵၼ် ဢၼ်ပဝ်ႇဝႆႉၵူၺ်း။ ပေႃးၸဝ်ႈၵဝ်ႇ ၼဵၵ်း \"$1\" ထႅင်ႈၵမ်းၼိုင်ႈၼႆ, ၼႃႈလိၵ်ႈၼႆႉ မၼ်းတေၵေႃႇသၢင်ႈၵႂႃႇ ၼင်ႇ ဢၼ်ပဝ်ႇ ဢၼ်ဢမ်ႇမီးသင်ၼၼ်ႉယဝ်ႈ။",
        "anoneditwarning": "<strong>ၽၢင်ႉပၼ်:</strong> ၸဝ်ႈၵဝ်ႇဢမ်ႇလႆႈ ၶဝ်ႈလွၵ်ႉဢိၼ်ႇဝႆႉ။ သင်ၸိူဝ်ႉဝႃႈ ၸဝ်ႈၵဝ်ႇ ႁဵတ်းလွင်ႈလႅၵ်ႈလၢႆႈသေဢၼ်ၼႆႉ ဢၼ်ပဵၼ် မၢႆသၢႆၼႅတ်ႇ - IP address ၸဝ်ႈၵဝ်ႇၼၼ်ႉ တေဢွၵ်ႇၼႄဝႆႉ ႁႂ်ႈၵူၼ်းတၢင်းၼမ်ႁၼ်ၸွမ်း။ သင်ၸိူဝ်ႉၸဝ်ႈၵဝ်ႇ <strong>[$1 log in]</strong> ဢမ်ႇၼၼ် <strong>[$2 create an account]</strong>, ၵၢၼ်ၸဝ်ႈၵဝ်ႇ ႁဵတ်းၼၼ်ႉၵေႃႈ မၼ်းတေၵႂႃႇၶဝ်ႈပဵၼ် လွင်ႈႁူမ်ႈသၢင်ႈ ၵႃႈတီႈ ၸိုဝ်ႈၸဝ်ႈၵဝ်ႇသေ ၸဝ်ႈၵဝ်ႇ ႁူမ်ႈသၢင်ႈသင်ၼႆၵေႃႈ ၵူႈၵေႃႉ တေလႆႈႁၼ်ၵိုၵ်းၸိုဝ်ႈ ၸဝ်ႈၵဝ်ႇယူႇ။",
        "anonpreviewwarning": "<em>ၸဝ်ႈၵဝ်ႇၼႆႉ ဢမ်ႇပႆႇလႆႈ ၶဝ်ႈလွၵ်ႉဢိၼ်ႇဝႆႉ။ တေဢဝ် မၢႆဢၢႆႇပီၸဝ်ႈၵဝ်ႇသေ သိမ်းပၼ်ၵႂႃႇ တီႈၼႂ်း ပိုၼ်းမႄးထတ်း ၼႃႈလိၵ်ႈၼႆႉၶႃႈ။",
-       "missingsummary": "<strong>ၶေႃႈၵိုတ်းလိူဝ်:</strong> ၸဝ်ႈၵဝ်ႇဢမ်ႇလႆႈၵမ်ႉထႅမ်ပၼ်ဝႆႉ ႁူဝ်ႁုပ်ၵၢၼ်မႄးထတ်း။ သင်ၸိူဝ်ႉဝႃႈ ၸဝ်ႈၵဝ်ႇ ၼဵၵ်း \"{{int:savearticle}}\" ထႅင်ႈၵမ်းၼိုင်ႈၼႆ ၵၢၼ်မႄးထတ်းၸဝ်ႈၵဝ်ႇ ႁဵတ်းဝႆႉၼၼ်ႉ မၼ်းတေသိမ်းၵႂႃႇ ၼင်ႇဢမ်ႇမီးပႃး လွင်ႈႁူဝ်ႁုပ်မၼ်းၼၼ်ႉယဝ်ႈ။",
+       "missingsummary": "<strong>ၶေႃႈၵိုတ်းလိူဝ်:</strong> ၸဝ်ႈၵဝ်ႇဢမ်ႇလႆႈၵမ်ႉထႅမ်ပၼ်ဝႆႉ ႁူဝ်ႁုပ်ၵၢၼ်မႄးထတ်း။ သင်ၸိူဝ်ႉဝႃႈ ၸဝ်ႈၵဝ်ႇ ၼဵၵ်း \"$1\" ထႅင်ႈၵမ်းၼိုင်ႈၼႆ ၵၢၼ်မႄးထတ်းၸဝ်ႈၵဝ်ႇ ႁဵတ်းဝႆႉၼၼ်ႉ မၼ်းတေသိမ်းၵႂႃႇ ၼင်ႇဢမ်ႇမီးပႃး လွင်ႈႁူဝ်ႁုပ်မၼ်းၼၼ်ႉယဝ်ႈ။",
        "missingcommenttext": "ၶႅၼ်းတေႃႈ ပေႃႉသႂ်ႇပၼ် တၢင်းၶႆႈၸႂ် ၵႃႈတီႈတႂ်ႈၼႆႉ",
        "previewerrortext": "မိူဝ်ႈၽွင်းၶတ်းၸႂ်ၼႄ တႃႇတူၺ်းလူင်ႈၼႃႈ လွင်ႈလႅၵ်ႈလၢႆႈ ဢၼ်ၸဝ်ႈၵဝ်ႇ ႁဵတ်းမႃးၼၼ်ႉ လႆႈမီးလွင်ႈၽိတ်းပိူင်ႈ ဢွၵ်ႇပဵၼ်ဝႆႉ။",
        "blockedtitle": "ၽူႈၸႂ်ႉတိုဝ်းၼႆႉ ထုၵ်ႇတတ်းၶၢတ်ႇဝႆ့",
        "loginreqpagetext": "တႃႇတေတူၺ်းၼႃႈလိၵ်ႈၼႆ ၶႅၼ်းတေႃႈ $1",
        "accmailtitle": "ၶေႃႈလပ်ႉ သူင်ႇၵႂႃႇယဝ်ႉယဝ်ႈ။",
        "newarticle": "(ဢၼ်မႂ်ႇ)",
-       "newarticletext": "á\81¸á\80\9dá\80ºá\82\88á\81µá\80\9dá\80ºá\82\87á\80\9cá\82\86á\82\88á\81¸á\80½á\80\99á\80ºá\80¸á\80\9cá\80\84á\80ºá\80\9dá\82\86á\82\89 á\82\81á\82\85င်းၵွင်ႉ ၼႃႈလိၵ်ႈ ဢၼ်ဢမ်ႇမီးဝႆႉၼၼ်ႉ။\nတႃႇတေၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈ၊ တႄႇပေႃႉသႂ်ႇၵႃႈတီႈ လွၵ်ႈပႃႈတႂ်ႈ \n (တွၼ်ႈတႃႇ လွၼ်ႉၶၢဝ်ႇ တၢင်ႇၸိူဝ်း တူၺ်းၵႃႈတီႈ [$1 help page] ).\nသင်ၸိူဝ်ႉဝႃႈ ၸဝ်ႈၵဝ်ႇ ၽိတ်းတၢင်းသေ ၽႅဝ်မႃးတီႈၼႆႈၼႆ၊ ၼဵၵ်း ပၼ်တူဝ် <strong>ၼဵၼ်ႁူၼ်လင်</strong> ၶွင် တူဝ်ပိုတ်ႇဝႅပ်ႉ ၸဝ်ႈၵဝ်ႇလႄႈ။",
-       "noarticletext": "ၼႂ်းၼႃႈၼႆႉယင်းဢမ်ႇမီးလိၵ်ႈသင်တေႃႈလဵဝ်။\nသူၸၢင်ႈ [[Special:Search/{{PAGENAME}}|ႁႃ ႁူဝ်ၶေႃႈၼႃႈလိၵ်ႈၼႆႉ]] ၼႂ်းတၢင်ႇၼႃႈ၊\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ၶူၼ်ႉႁႃ logs ဢၼ်ၵွင်ႉၵၢႆၵၼ်],\nဢမ်ႇၼၼ် [{{fullurl:{{FULLPAGENAME}}|action=edit}} သၢင်ႈၼႃႈၼႆႉ]</span>။",
+       "newarticletext": "á\81¸á\80\9dá\80ºá\82\88á\81µá\80\9dá\80ºá\82\87á\80\9cá\82\86á\82\88á\81¸á\80½á\80\99á\80ºá\80¸á\80\9cá\80\84á\80ºá\80\9dá\82\86á\82\89 á\82\81á\80µင်းၵွင်ႉ ၼႃႈလိၵ်ႈ ဢၼ်ဢမ်ႇမီးဝႆႉၼၼ်ႉ။\nတႃႇတေၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈ၊ တႄႇပေႃႉသႂ်ႇၵႃႈတီႈ လွၵ်ႈပႃႈတႂ်ႈ \n (တွၼ်ႈတႃႇ လွၼ်ႉၶၢဝ်ႇ တၢင်ႇၸိူဝ်း တူၺ်းၵႃႈတီႈ [$1 help page] ).\nသင်ၸိူဝ်ႉဝႃႈ ၸဝ်ႈၵဝ်ႇ ၽိတ်းတၢင်းသေ ၽႅဝ်မႃးတီႈၼႆႈၼႆ၊ ၼဵၵ်း ပၼ်တူဝ် <strong>ၼဵၼ်ႁူၼ်လင်</strong> ၶွင် တူဝ်ပိုတ်ႇဝႅပ်ႉ ၸဝ်ႈၵဝ်ႇလႄႈ။",
+       "noarticletext": "á\81¼á\82\82á\80ºá\80¸á\81¼á\82\83á\82\88á\81¼á\82\86á\82\89á\80\9aá\80\84á\80ºá\80¸á\80¢á\80\99á\80ºá\82\87á\80\99á\80®á\80¸á\80\9cá\80­á\81µá\80ºá\82\88á\80\9eá\80\84á\80ºá\80\90á\80±á\82\83á\82\88á\80\9cá\80µá\80\9dá\80ºá\81\8b\ná\80\9eá\80°á\81¸á\81¢á\80\84á\80ºá\82\88 [[Special:Search/{{PAGENAME}}|á\82\81á\82\83 á\82\81á\80°á\80\9dá\80ºá\81¶á\80±á\82\83á\82\88á\81¼á\82\83á\82\88á\80\9cá\80­á\81µá\80ºá\82\88á\81¼á\82\86á\82\89]] á\81¼á\82\82á\80ºá\80¸á\80\90á\81¢á\80\84á\80ºá\82\87á\81¼á\82\83á\82\88á\81\8a\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} á\81¶á\80°á\81¼á\80ºá\82\89á\82\81á\82\83 logs á\80¢á\81¼á\80ºá\81µá\80½á\80\84á\80ºá\82\89á\81µá\81¢á\82\86á\82\87á\81µá\81¼á\80º],\ná\80¢á\80\99á\80ºá\82\87á\81¼á\81¼á\80º [{{fullurl:{{FULLPAGENAME}}|action=edit}} á\80\9eá\81¢á\80\84á\80ºá\82\88á\81¼á\82\83á\82\88á\81¼á\82\86á\82\89]</span>á\81\8b",
        "noarticletext-nopermission": "ၼႂ်းၼႃႈၼႆႉယင်းဢမ်ႇမီးလိၵ်ႈသင်တေႃႈလဵဝ်။\nသူၸၢင်ႈ [[Special:Search/{{PAGENAME}}|ႁႃ ႁူဝ်ၶေႃႈၼႆႉ]] ၼႂ်းတၢင်ႇၼႃႈ၊\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ၶူၼ်ႉႁႃ logs ဢၼ်ၵဵဝ်ႇၵွင်ႉၵၼ်],\nဢမ်ႇၼၼ် [{{fullurl:{{FULLPAGENAME}}|action=edit}} မူၼ်ႉမႄးၼႃႈၼႆႉ]</span>။",
        "userpage-userdoesnotexist-view": "ဢၶွင်ႉ ၽူႈၸႂ်ႉတိုဝ်း \"$1\" ၼႆႉ ဢမ်ႇပႆႇလႆႈ တၢင်ႇမၢႆၽၢင်ဝႆႉ။",
        "blocked-notice-logextract": "ၽူႈၸႂ်ႉတိုဝ်းၵေႃႉၼႆႉ ထုၵ်ႇတတ်းၶၢတ်ႇဝႆႉဢေႃႈ ယၢမ်းလဵဝ်။\nသဵၼ်ႈမၢႆတတ်းၶၢတ်ႇ ၵမ်းလိုၼ်းသုတ်းၼႆႉ ၼႄဝႆႉယူႇၵႃႈတီႈ သဵၼ်ႈမၢႆၽိုၼ်ဢိင် ပႃႈတႂ်ႈၼႆႉ။",
        "readonlywarning": "<strong>ၽၢင်ႉ : ယွင်ၶေႃႈမုၼ်းၼႆႉ ထုၵ်ႇၶတ်းဝႆႉ တွၼ်ႈတႃႇ ၵၢၼ်မူၼ်ႉ​​မေး၊ ယွၼ်ႉၼၼ်လႄႈ ၸဝ်ႈၵဝ်ႇ တေဢမ်ႇၸၢင်ႈ သိမ်းဝႆႉ ၵၢၼ်လႅၵ်ႈလၢႆႈ ၸဝ်ႈၵဝ်ႇ ယၢမ်းလဵဝ်</strong>\nၸဝ်ႈဝ်ႇ တေလူဝ်ႇ ထုတ်ႇ ၵေႃႇပီႇ သေ ပႃႉသႂ်ႇ ၽဵတ်ႉသႂ်ႇဝႆႉ တီႈၼႂ်း ၾၢႆႇလိၵ်ႈ သေ သိမ်းဝႆႉ တွၼ်ႈတႃႇၶိုၼ်းၸႂ်ႉဝၢႆးလင်။\nၵေႃႉၵုမ်းထိင်ပိူင်သၢင်ႈ ၵေႃႉဢၼ်ၶတ်းဝႆႉၼႆႉ မၼ်းပၼ်လွင်ႈတၢင်းမၼ်းဝႆႉဝႃႈ : $1",
        "protectedpagewarning": "<strong>ၽၢင်ႉ : ၼႃႈလိၵ်ႈၼႆႉ ထုၵ်ႇႁႄႉၵင်ႈဝႆႉ၊ ယွၼ်ႉၼၼ်လႄႈ ၸိူဝ်းပဵၼ် ၽူႈၸႂ်ႉတိုဝ်း ၽူႈၵုမ်းၵၢၼ် ၶဝ်ၵူၺ်းတေၸၢင်ႈမီး သုၼ်ႇမႄးထတ်းလႆႈ။</strong>\nသဵၼ်ႈမၢႆၵမ်းလိုၼ်းၸိူဝ်းၼႆႉ ပၼ်ဝႆႉၽၢႆႇတႂ်ႈၼႆႉ တွၼ်ႈတႃႇႁႂ်ႈပဵၼ် ၵၢၼ်ဢိင် :",
        "semiprotectedpagewarning": "<strong>မၢႆတွင်း:</strong> ၼႃႈလိၵ်ႈၼႆႉ ထုၵ်ႇႁႄႉၵင်ႈဝႆႉ၊ ယွၼ်ႉၼၼ်လႄႈ ၸိူဝ်းပဵၼ် ၽူႈၸႂ်ႉတိုဝ်း ဢၼ်တၢင်ႇမၢႆၽၢင်ဝႆႉၼၼ်ႉၵူၺ်း တေၸၢင်ႈ မႄးထတ်းလႆႈ။ \nသဵၼ်ႈမၢႆၵမ်းလိုၼ်းၸိူဝ်းၼႆႉ ပၼ်ဝႆႉၽၢႆႇတႂ်ႈၼႆႉ တွၼ်ႈတႃႇႁႂ်ႈပဵၼ် ၵၢၼ်ဢိင် :",
-       "cascadeprotectedwarning": "<strong>ၽၢင်ႉ :</strong> ၼႃႈလိၵ်ႈၼႆႉ ထုၵ်ႇႁႄႉၵင်ႈဝႆႉလႄႈ ၸိူဝ်းပဵၼ် ၽူႈၸႂ်ႉတိုဝ်း ၽူႈၵုမ်းၵၢၼ်ၶဝ်ၵူၺ်း တေမီးသုၼ်ႇ မႄးထတ်းလႆႈ၊ ယွၼ်ႉပိူဝ်ႈဝႃႈ မၼ်းၶဝ်ႈပႃးဝႆႉ ၼႂ်းၵိင်ႇၽႄ ၸိူဝ်းပဵၼ် ဢၼ်ထုၵ်ႇႁႄႉၵင်ႈဝႆႉ {{PLURAL:$1|page|pages}}:",
+       "cascadeprotectedwarning": "<strong>ၽၢင်ႉ :</strong> ၼႃႈလိၵ်ႈၼႆႉ ထုၵ်ႇႁႄႉၵင်ႈဝႆႉလႄႈ ၸိူဝ်းပဵၼ် ၽူႈၸႂ်ႉတိုဝ်း ၽူႈၵုမ်းၵၢၼ်ၶဝ်ၵူၺ်း[[Special:ListGroupRights|specific rights]] တေမီးသုၼ်ႇ မႄးထတ်းလႆႈ၊ ယွၼ်ႉပိူဝ်ႈဝႃႈ မၼ်းၶဝ်ႈပႃးဝႆႉ ၼႂ်းၵိင်ႇၽႄ ၸိူဝ်းပဵၼ် ဢၼ်ထုၵ်ႇႁႄႉၵင်ႈဝႆႉ {{PLURAL:$1|page|pages}}:",
        "titleprotectedwarning": "<strong>ၽၢင်ႉ : ၼႃႈလိၵ်ႈၼႆႉ ထုၵ်ႇႁႄႉၵင်ႈဝႆႉ ယွၼ်ႉၼၼ် [[Special:ListGroupRights|specific rights]] ၸိူဝ်းၼႆႉ ထုၵ်ႇၵေႃႇသၢင်ႈဝႆႉ။</strong>\nသဵၼ်ႈမၢႆၵမ်းလိုၼ်းၸိူဝ်းၼႆႉ ပၼ်ဝႆႉၽၢႆႇတႂ်ႈၼႆႉ တွၼ်ႈတႃႇႁႂ်ႈပဵၼ် ၵၢၼ်ဢိင် :",
        "templatesused": "{{PLURAL:$1|Template|ပိူင်တမ်း}} ၸႂ်ႉဝႆႉတီႈၼႃႈလိၵ်ႈၼႆႉ:",
        "templatesusedpreview": "{{PLURAL:$1|ပိူင်တမ်း|ပိူင်တမ်း၊}} ၸႂ်ႉဝႆႉတီႈၼႂ်း ၵၢၼ်တူၺ်းလူင်ႈၼႃႈ :",
        "last": "ဢွၼ်တၢင်း",
        "page_first": "ဢွၼ်တၢင်း",
        "page_last": "လိုတ်းသုတ်း",
-       "history-fieldset-title": "á\80\95á\80­á\80¯á\81¼á\80ºá\80¸á\80\95á\80­á\80¯á\80\90á\80ºá\82\87á\82\81á\82\83",
-       "history-show-deleted": "ဢၼ်​ယႃႉ​ဝႆႉ​ၼၼ်ႉၵွၺ်း",
+       "history-fieldset-title": "á\80\9eá\80½á\81µá\80ºá\82\88á\82\81á\82\83á\80\90á\82\83 á\81¶á\80±á\82\83á\82\88á\81¶á\80°á\81¼á\80ºá\82\89á\80¢á\81¢á\81¼á\80ºá\82\87",
+       "history-show-deleted": "á\81¶á\80±á\82\83á\82\88á\81¶á\80°á\81¼á\80ºá\82\89á\80¢á\81¢á\81¼á\80ºá\82\87 á\80¢á\81¼á\80ºâ\80\8bá\80\9aá\82\83á\82\89â\80\8bá\80\9dá\82\86á\82\89â\80\8bá\81¼á\81¼á\80ºá\82\89á\81µá\80½á\81ºá\80ºá\80¸",
        "histfirst": "ၵဝ်ႇသုတ်း",
        "histlast": "မႂ်ႇသုတ်း",
        "historysize": "({{PLURAL:$1|1 ပၢႆႉ|$1 ပၢႆႉ}})",
        "nextn-title": "သိုပ်ႇၵႂႃႇၸူး $1 {{PLURAL:$1|result|ၽွၼ်းလႆႈ}}",
        "shown-title": "ၼႄ $1 {{PLURAL:$1|result|results}} ၼိူဝ်​ၼႃႈ​လိၵ်ႈ​ၼိူင်ႈၼႃႈ",
        "viewprevnext": "တူၺ်း ($1 {{int:pipe-separator}} $2) ($3)",
+       "searchmenu-exists": "<strong>ၼႃႈလိၵ်ႈ ဢၼ်ပၼ်ၸိုဝ်ႈဝႆႉဝႃႈ  \"[[:$1]]\" တီႈၼႂ်း ဝီႇၶီႇဢၼ်ၼႆႉ။</strong> {{PLURAL:$2|0=|တူၺ်းပႃး ၽွၼ်းလႆႈသွၵ်ႈႁႃ တၢင်ႇၸိူဝ်း ၸိူဝ်းႁၼ်ဝႆႉၼၼ်ႉ။}}",
        "searchmenu-new": "<strong> ၶူင်သၢင်ႈၼႃႈလိၵ်ႈ \"[[:$1]]\" တီႈဝီႇၶီႇၼႆႉ </strong> {{PLURAL:$2|0=|ၼႃႈလိၵ်ႈၼႆႉ ၼႄဝႆႉ ဢၼ်ၸဝ်ႈၵဝ်ႇသွၵ်ႈႁႃ| တူၺ်းၼႃႈလိၵ်ႈဢၼ် ၼႄပၼ် ၸိူဝ်း ဢၼ်ၸဝ်ႈၵဝ်ႇသွၵ်ႈႁႃဝႆ့}}",
-       "searchprofile-articles": "á\81¼á\82\83á\82\88á\80\9cá\80­á\81µá\80ºá\82\88 á\81¼မ်းၼႂ်း",
+       "searchprofile-articles": "á\81¼á\82\83á\82\88á\80\9cá\80­á\81µá\80ºá\82\88 á\80\9cမ်းၼႂ်း",
        "searchprofile-images": "သႅၼ်သိုဝ်ႇၶၢဝ်ႇ",
        "searchprofile-everything": "ၵူႊဢၼ်",
        "searchprofile-advanced": "ၸၼ်ႉသုင်",
        "search-section": "(တွၼ်ႈၵၼ် $1)",
        "search-category": "(တွၼ်ႈၵၼ် $1)",
        "search-suggest": "ၶႂ်ႈဝႃႈ $1 - ၼႆႁႃႉ",
-       "search-interwiki-caption": "ၼႃႈၵၢၼ် ပီႈၼွင်ႉၵၼ်",
+       "search-interwiki-caption": "á\81½á\80½á\81¼á\80ºá\80¸á\80\9cá\82\86á\82\88 á\81µá\82\83á\82\88á\80\90á\80®á\82\88 á\81¼á\82\83á\82\88á\81µá\81¢á\81¼á\80º á\80\95á\80®á\82\88á\81¼á\80½á\80\84á\80ºá\82\89á\81µá\81¼á\80º",
        "search-interwiki-default": "ၽွၼ်းလႆႈ ၵႃႈတီႈ $1 :",
        "search-interwiki-more": "(လိူဝ်)",
        "search-interwiki-more-results": "ၽွၼ်းလႆႈ ဢၼ်ၼမ်လိူဝ်",
        "prefs-tokenwatchlist": "မၢႆၶပ်ႉ",
        "prefs-diffs": "လွင်ႈပႅၵ်ႇပိူင်ႈ",
        "prefs-help-prefershttps": "ငဝ်ႈၵုမ်းၵၢၼ်ၼႆႉ ပေႃးဝႃႈ ၶိုၼ်းၶဝ်ႈလွၵ်ႉဢိၼ်ႇထႅင်ႈၵမ်းၼင်ႇ ၸင်ႇတေလႅၵ်ႈလၢႆႈ။",
-       "userrights": "á\80\9cá\80½á\80\84á\80ºá\82\88á\81¸á\80\90á\80ºá\80¸á\81µá\81¢á\81¼á\80ºá\80\9eá\80¯á\81¼á\80ºá\82\88á\80\9cá\82\86á\82\88 á\81½á\80°á\82\88á\81¸á\82\82á\80ºá\82\89á\80\90á\80­á\80¯á\80\90်း",
+       "userrights": "á\80\9eá\80¯á\81¼á\80ºá\82\87á\80\9cá\82\86á\82\88 á\81½á\80°á\82\88á\81¸á\82\82á\80ºá\82\89á\80\90á\80­á\80¯á\80\9d်း",
        "userrights-lookup-user": "လိူၵ်ႈ ၽူႈၸႂ်ႉတိုဝ်း",
        "userrights-user-editname": "ပေႃႇသႂ်ႇပၼ် ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း :",
        "editusergroup": "ပိုတ်ႇၸုမ်း ၽူႈၸႂ်ႉတိုဝ်း",
        "editinguser": "လႅၵ်ႈလၢႆႈသုၼ်ႇလႆႈ ၽူႈၸႂ်ႉတိုဝ်း ၶွင် {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}} <strong>[[User:$1|$1]]</strong> $2",
+       "viewinguserrights": "ၵၢၼ်တူၺ်း သုၼ်ႇလႆႈ ၽူႈၸႂ်ႉတိုဝ်း ၶွင် {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "မႄးထတ်း ၸုမ်း{{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}}",
        "userrights-viewusergroup": "တူၺ်း ၸုမ်း {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}}",
        "saveusergroups": "သိမ်း  ၸိူဝ်းၸုမ်း {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}}",
        "right-editsemiprotected": "မႄးထတ်းၼႃႈလိၵ်ႈၸိူဝ်း ႁႄႉၵင်ႈဝႆႉၼင်ႇ \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "မႄးထတ်း ၽၢင်ႁၢင်ႈတူဝ်ၶဝ်ႈပႃး ၶွင်ၼႃႈလိၵ်ႈ",
        "right-editinterface": "မႄးထတ်း ယူင်ႉႁၢင်ႈ ၽူႈၸႂ်ႉတိုဝ်း",
-       "right-editusercssjs": "မႄးထတ်းၾၢႆႇ CSS လႄႈ JavaScript ၶွင် ၽူႈၸႂ်ႉတိုဝ်းတၢင်ႇၸိူဝ်း",
        "right-editusercss": "မႄးထတ်း ၾၢႆႇ CSS ၶွင် ၽူႈၸႂ်ႉတိုဝ်းတၢင်ႇၸိူဝ်း",
        "right-edituserjs": "မႄးထတ်း ၾၢႆႇ JavaScript ၶွင် ၽူႈၸႂ်ႉတိုဝ်း တၢင်ႇၸိူဝ်း",
        "right-editmyusercss": "မႄးထတ်း ၾၢႆႇ CSS ၶွင်ႁင်းၸဝ်ႈၵဝ်ႇ",
        "recentchanges-summary": "ၸွမ်းတူၺ်းႁွႆး ဢၼ်ပဵၼ်ၵၢၼ် တိုၵ်ႉႁႃလႅၵ်ႈလၢႆႈၵႂႃႇ တွၼ်ႈတႃႇၼႃႈလိၵ်ႈ ဝီႇၶီႇၼႆႉ။",
        "recentchanges-feed-description": "ၸွမ်းတူၺ်းႁွႆး ဢၼ်ပဵၼ်ၵၢၼ် တိုၵ်ႉႁႃလႅၵ်ႈလၢႆႈၵႂႃႇ တွၼ်ႈတႃႇၼႃႈလိၵ်ႈ ဝီႇၶီႇၼႆႉ။",
        "recentchanges-label-newpage": "လွင်ႈမႄးထတ်းဢၼ်ၼႆႉ ၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈဢၼ်မႂ်ႇယဝ်ႉ",
-       "recentchanges-label-minor": "á\80\95á\80µá\81¼á\80ºá\80\9cá\80½á\80\84á\80ºá\82\88á\80\99á\80°á\81¼á\80ºá\82\89á\80\99á\82\84းဢိတ်းဢီႈ",
-       "recentchanges-label-bot": "á\80\9cá\80½á\80\84á\80ºá\82\88á\80\99á\82\84á\80¸á\80\91á\80\90á\80ºá\80¸á\80¢á\81¼á\80ºá\81¼á\82\86á\82\89 á\80\95á\80\99á\81¼á\80ºá\80¸á\80\95á\80µá\81¼á\80º bot á\81µá\80±á\82\83á\82\89á\82\81á\80µá\80\90á\80ºá\80¸á\81µá\82\82á\82\83á\82\87",
+       "recentchanges-label-minor": "á\80\95á\80µá\81¼á\80ºá\80\9cá\80½á\80\84á\80ºá\82\88á\80\99á\82\84á\80¸á\80\91á\80\90á\80ºးဢိတ်းဢီႈ",
+       "recentchanges-label-bot": "လွင်ႈမႄးထတ်းဢၼ်ၼႆႉ မၼ်းပဵၼ် bot ၵေႃႉႁဵတ်းၵႂႃႇ",
        "recentchanges-label-unpatrolled": "ၶေႃႈထတ်းၼႆႉ ပႆႉၼႅၼ်ႈၼႃ",
        "recentchanges-label-plusminus": "သႅၼ်းၼႃႈလိၵ်ႈၼႆႉ ထုၵ်ႇလႅၵ်ႈလၢႆႈ ၸွမ်းၼင်ႇ မၢႆ bytes ဢၼ်ၼႆႉ",
        "recentchanges-legend-heading": "<strong>ဢပုမ်ႇ:</strong>",
        "rcfilters-filter-registered-description": "ၽူႈမႄးထတ်းၶဝ် ၶဝ်ႈလွၵ်ႉဢိၼ်ႇဝႆႉ",
        "rcfilters-filter-unregistered-label": "ဢမ်ႇလႆႈတၢင်ႇမၢႆႇၽၢင်ဝႆႉ",
        "rcfilters-filter-unregistered-description": "ၽူႈမႄးထတ်း ၸိူဝ်းဢမ်ႇလႆႈၶဝ်ႈ လွၵ်ႉဢိၼ်ႇဝႆႉ",
-       "rcfilters-filtergroup-authorship": "á\80\99á\82\84á\80¸á\80\91á\80\90á\80ºá\80¸ ၸဝ်ႈပၢႆၵမ်",
-       "rcfilters-filter-editsbyself-label": "လွင်ႈမႄးထတ်း ၸဝ်ႈၵဝ်ႇ",
-       "rcfilters-filter-editsbyself-description": "á\80¢á\81¼á\80ºá\81¸á\80\9dá\80ºá\82\88á\81µá\80\9dá\80ºá\82\87 á\81µá\80±á\82\83á\82\89á\80\91á\80\90á\80ºá\80¸",
-       "rcfilters-filter-editsbyother-label": "á\80¢á\81¼á\80ºá\80\90á\81¢á\80\84á\80ºá\82\87á\81µá\80±á\82\83á\82\89 á\81µá\80±á\82\83á\82\89á\80\91တ်း",
-       "rcfilters-filter-editsbyother-description": "á\81µá\81¢á\81¼á\80ºá\80\99á\82\84á\80¸á\80\91á\80\90á\80ºá\80¸ á\80¢á\81¼á\80ºá\81½á\80°á\82\88á\81¸á\82\82á\80ºá\82\89á\80\90á\80­á\80¯á\80\9dá\80ºá\80¸ á\80\90á\81¢á\80\84á\80ºá\82\87á\81¸á\80­á\80°á\80\9dá\80ºá\80¸ á\81µá\80±á\82\83á\80\9eá\81¢á\80\84á\80ºá\82\88á\80\9dá\82\86á\82\89 (á\80¢á\81¼á\80ºá\80¢á\80\99á\80ºá\82\87á\81¸á\82\82á\80ºá\82\88 á\81¸á\80\9dá\80ºá\82\88á\81µá\80\9dá\80ºá\82\87)",
+       "rcfilters-filtergroup-authorship": "á\80\9cá\80½á\80\84á\80ºá\82\88á\81¶á\80\9dá\80ºá\82\88á\82\81á\80°á\80\99á\80ºá\82\88 ၸဝ်ႈပၢႆၵမ်",
+       "rcfilters-filter-editsbyself-label": "လွင်ႈ​လႅၵ်ႈလၢႆႈ ၸဝ်ႈၵဝ်ႇႁဵတ်း",
+       "rcfilters-filter-editsbyself-description": "á\80\9cá\80½á\80\84á\80ºá\82\88á\81¶á\80\9dá\80ºá\82\88á\82\81á\80°á\80\99á\80ºá\82\88 á\81¶á\80½á\80\84á\80ºá\80\90á\80°á\80\9dá\80ºá\81¸á\80\9dá\80ºá\82\88á\81µá\80\9dá\80ºá\82\87",
+       "rcfilters-filter-editsbyother-label": "á\80\9cá\80½á\80\84á\80ºá\82\88á\80\9cá\82\85á\81µá\80ºá\82\88á\80\9cá\81¢á\82\86á\82\88 á\80\90á\81¢á\80\84á\80ºá\82\87á\81µá\80±á\82\83á\82\89á\82\81á\80µတ်း",
+       "rcfilters-filter-editsbyother-description": "á\80\9cá\80½á\80\84á\80ºá\82\88á\80\9cá\82\85á\81µá\80ºá\82\88á\80\9cá\81¢á\82\86á\82\88á\80\90á\81¢á\80\84á\80ºá\80¸á\80\9eá\80µá\80\84á\80º á\80\9cá\80­á\80°á\80\9dá\80ºá\80\9eá\80±á\81¶á\80½á\80\84á\80ºá\80\90á\80°á\80\9dá\80ºá\81¸á\80\9dá\80ºá\82\88á\81µá\80\9dá\80ºá\82\87",
        "rcfilters-filtergroup-userExpLevel": "ၸၼ်ႉထၢၼ်ႈ တူဝ်ထူပ်း (တွၼ်ႈတႃႈ ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းတၢင်ႇဝႆႉ မႆၽၢင်ၵူၺ်း)",
        "rcfilters-filter-user-experience-level-newcomer-label": "ၵူၼ်းၼႃႈမႂ်ႇ",
        "rcfilters-filter-user-experience-level-newcomer-description": "ဢေႇလိူဝ် ၵၢၼ်မႄးထတ်း ႑႐ ဢၼ် လႄႈ လွင်ႈတူင်ႉၼိုင် တႃႇသီႇဝၼ်း",
        "rcfilters-filter-user-experience-level-learner-label": "ၽူႈလဵပ်ႈႁဵၼ်း",
-       "rcfilters-filter-user-experience-level-learner-description": "á\81µá\81¢á\81¼á\80ºá\80\90á\80°á\80\84á\80ºá\82\89á\81¼á\80­á\80¯á\80\84á\80ºá\80\9cá\82\84á\82\88 á\81µá\81¢á\81¼á\80ºá\80\99á\82\84á\80¸á\80\91á\80\90á\80ºá\80¸ á\80\9dá\81¼á\80ºá\80¸á\80\99á\81¼á\80ºá\80¸ á\81¼á\80\99á\80ºá\80\9cá\80­á\80°á\80\9dá\80ºá\80\9eá\80± \"á\81µá\80°á\81¼á\80ºá\80¸á\81¼á\82\83á\82\88á\80\99á\82\82á\80ºá\82\87\"á\80\9eá\80±á\80\90á\82\83á\82\89 á\80\9dá\81¼á\80ºá\80¸á\80\99á\81¼á\80ºá\80¸á\80\90á\80­á\80¯á\81µá\80ºá\82\89á\80¢á\80±á\82\87á\80\9cá\80­á\80°á\80\9dá\80ºသေ \"ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းမီးတူဝ်ထူပ်း\"။",
+       "rcfilters-filter-user-experience-level-learner-description": "á\81µá\81¢á\81¼á\80ºá\80\90á\80°á\80\9dá\80ºá\80\91á\80\95á\80ºá\80¸á\80\99á\81¼á\80ºá\80¸ á\81¼á\80\99á\80ºá\80\9eá\80± \"á\81µá\80°á\81¼á\80ºá\80¸á\81¼á\82\83á\82\88á\80\99á\82\82á\80ºá\82\87\"á\80\9eá\80±á\80\90á\82\83á\82\89 á\80\99á\81¼á\80ºá\80¸á\80\90á\80­á\80¯á\81µá\80ºá\82\89â\80\8bá\80¢á\80±á\82\87သေ \"ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းမီးတူဝ်ထူပ်း\"။",
        "rcfilters-filter-user-experience-level-experienced-label": "ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းမီးတူဝ်ထူပ်း",
        "rcfilters-filter-user-experience-level-experienced-description": "လွင်ႈတူင်ႉၼိုင် ၼမ်လိူဝ် ႓႐ ဝၼ်း လႄႈ လွင်ႈမႄးထတ်း ႕႐႐ ။",
        "rcfilters-filtergroup-automated": "ၶဝ်ႈႁူမ်ႈႁင်းၵႂႃႇႁင်းမၼ်း",
        "rcshowhidecategorization": "$1 ၼႃႈလိၵ်ႈ ပၢႆး-",
        "rcshowhidecategorization-show": "ၼႄ",
        "rcshowhidecategorization-hide": "သိူင်ႇ",
-       "rclinks": "ၼႄလွင်ႈလႅၵ်ႈလၢႆႈ ၵမ်းလိုၼ်းသုတ်း $1 ဢၼ်လႅၵ်ႈလၢႆႈမႃး မိူဝ်ႈ $2 ဝၼ်းၼၼ်ႉ<br />$3",
+       "rclinks": "ၼႄလွင်ႈလႅၵ်ႈလၢႆႈ ၵမ်းလိုၼ်းသုတ်း $1 ဢၼ်လႅၵ်ႈလၢႆႈမႃး မိူဝ်ႈ $2 ဝၼ်းၼၼ်ႉ",
        "diff": "ပႅၵ်ႇပိူင်ႈ",
        "hist": "ပိုၼ်း",
        "hide": "သိူင်ႇ",
        "upload-curl-error28": "ၶၢဝ်းယၢမ်း ၵၢၼ်လူတ်ႇၶိုၼ်ႈ သုတ်းၵႂႃႇ",
        "upload-curl-error28-text": "သၢႆႉဢၼ်ၼႆႉ တႃႇတေတူင်ႉတွပ်ႇၶိုၼ်းၼႆႉ မၼ်းႁိုင်ႁႅင်းၼႃႇ။\nၶႅၼ်းတေႃႇ ၵူတ်ႇတူၺ်းဝႃႈ သၢႆႉၼႆႉ ၶိုၼ်ႈယူႇႁႃႉ၊ ၽွင်းမိူဝ်ႈ တိုၵ်ႉၶိုၼ်းၶတ်းၸႂ်တူၺ်း ၼၼ်ႉ ပႂ်ႉပၼ် ၸူဝ်ၶၢဝ်း။ ၸဝ်ႈၵဝ်ႇတေလႅပ်ႈၶႂ်ႈ ၶိုၼ်းႁဵတ်းတူၺ်း ၽွင်းမိူဝ်ႈ ဢမ်ႇပေႃး ၵၢၼ်သုၵ်ႉၼၼ်ႉ။",
        "license": "ဝႂ်ၶႂၢင်း :",
-       "license-header": "á\80\9dá\82\86ၶႂၢင်း",
+       "license-header": "á\80\9dá\80ºá\82\82ၶႂၢင်း",
        "nolicense": "ဢမ်ႇလႆႈလိူၵ်ႈသင်ဝႆႉ",
        "licenses-edit": "မႄးထတ်း ၵၢၼ်လိူၵ်ႈသၢင်ႈ ဝႂ်ၶႂၢင်း",
        "upload_source_url": "(ၾၢႆႇဢၼ်ၸဝ်ႈၵဝ်ႇလိူၵ်ႈဝႆႉၵႃႈတီႈ ဢၼ်မၢၼ်ႇမႅၼ်ႈ၊ URL ဢၼ်ၵူၼ်းတၢင်းၼမ် ၸၢင်ႈၸႂ်ႉလႆႈ )",
        "filehist-current": "ယၢမ်းလဵဝ်",
        "filehist-datetime": "ဝၼ်းထီႉ/ၶၢဝ်းယၢမ်း",
        "filehist-thumb": "ႁၢင်ႈလဵၵ်ႉ",
-       "filehist-thumbtext": "á\81½á\81¢á\80\84á\80ºá\80\9aá\80µá\80\99á\80ºá\82\88 á\80\90á\80½á\81¼á\80ºá\82\88á\80\90á\82\83á\82\87 á\80\95ိူဝ်းသျိၼ်းၼင်ႇ  $1",
+       "filehist-thumbtext": "á\81½á\81¢á\80\84á\80ºá\80\9aá\80µá\80\99á\80ºá\82\88 á\80\90á\80½á\81¼á\80ºá\82\88á\80\90á\82\83á\82\87 á\80\9dိူဝ်းသျိၼ်းၼင်ႇ  $1",
        "filehist-nothumb": "ဢမ်ႇမီး ႁၢင်ႈလဵၵ်ႉ",
        "filehist-user": "ၽူႈၸႂ်ႉတိုဝ်း",
        "filehist-dimensions": "သႅၼ်းမၼ်း",
        "allpagesto": "ၼႃႈလိၵ်ႈဢၼ်ၼႄ သုတ်းတီႈ :",
        "allarticles": "ၼႃႈ​လိၵ်ႈ​တင်း​သဵင်ႈ",
        "allinnamespace": "ၼႃႈလိၵ်ႈတင်းမူတ်း ($1 ဢွင်ႈၸိုဝ်ႈ)",
-       "allpagessubmit": "á\81¶á\80°á\81¼á\80ºá\82\89á\82\81á\82\83",
+       "allpagessubmit": "á\80\9eá\80­á\80¯á\80\95á\80ºá\82\87á\81µá\82\82á\82\83á\82\87",
        "allpagesprefix": "ၼႃးလိၵ်ႈဢၼ်ၼႄ ဢိၵ်ႇတင်း ၶေႃႈလူင်ႈၼႃႈ",
        "categories": "လိူင်ႈ",
        "sp-deletedcontributions-contribs": "လွင်ႈၶဝ်ႈႁူမ်ႈ",
        "listgrouprights-key": "ၶေႃႈၶႆႈလၢတ်ႈ:\n* <span class=\"listgrouprights-granted\">သုၼ်ႇ ဢၼ်ၶႂၢင်းပၼ်ဝႆႉ</span>\n* <span class=\"listgrouprights-revoked\">သုၼ် ဢၼ်ယႃႉပႅတ်ႈဝႆႉ</span>",
        "listgrouprights-group": "ၸုမ်း :",
        "listgrouprights-rights": "သုၼ်ႇ",
-       "listgrouprights-helppage": "ၸွႆႈထႅမ်:သုၼ်ႇၸုမ်း",
+       "listgrouprights-helppage": "Help:သုၼ်ႇၸုမ်း",
        "listgrouprights-members": "(သဵၼ်ႈမၢႆ ၽူႈၸႂ်ႉတိုဝ်း)",
        "listgrouprights-addgroup": "ထႅမ်သႂ်ႇ {{PLURAL:$2|ၸုမ်း|ၸုမ်း.}}: $1",
        "listgrouprights-removegroup": "ထွၼ်ပႅတ်ႈ {{PLURAL:$2|ၸုမ်း|ၸုမ်း.}}: $1",
        "enotif_body_intro_moved": "ၼႃႈလိၵ်ႈ {{SITENAME}} $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႉ {{GENDER:$2|ၶၢႆႉဝႆႉ}} မိူဝ်ႈ $PAGEEDITDATE ၼၼ်ႉ၊ တွၼ်ႈတႃႇ ၵၼ်ၶိုၼ်းဢၢၼ်ႇဢၼ် ယၢမ်းလဵဝ်ၼႆႉၼႆ တူၺ်းတီႈ  $3 ၼၼ်ႉၶႃႈလႄႈ။",
        "enotif_body_intro_restored": "ၼႃႈလိၵ်ႈ {{SITENAME}}  $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႉ {{GENDER:$2|တမ်းဝႆႉၶိုၼ်း}} မိူဝ်ႈ $PAGEEDITDATE  ၼၼ်ႉ၊ တွၼ်ႈတႃႇ ၵၢၼ်ၶူၼ်ႉၶႆႈ ယၢမ်းလဵဝ်ၼႆႉၼႆတူၺ်း တီႈ $3 ၼၼ်ႉၶႃႈလႄႈ။",
        "enotif_body_intro_changed": "ၼႃးလိၵ်ႈ {{SITENAME}} $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႉ {{GENDER:$2|လႅၵ်ႈလၢႆႈဝႆႉ}} မိူဝ်ႈ $PAGEEDITDATE ၼၼ်ႉ၊ တွၼ်ႈတႃႇ ၵၼ်ၶိုၼ်းဢၢၼ်ႇဢၼ် ယၢမ်းလဵဝ်ၼႆႉၼႆ တူၺ်းတီႈ  $3 ၼၼ်ႉၶႃႈလႄႈ။",
-       "enotif_lastvisited": "á\81¸á\80µá\80\99á\80ºá\80\99á\80­á\80°á\80\9dá\80ºá\82\88 á\80\9dá\81¢á\82\86á\80¸á\80\9eá\80± á\81¸á\80\9dá\80ºá\82\88á\81µá\80\9dá\80ºá\82\87 á\80\99á\82\83á\80¸á\80¢á\82\85á\80\9dá\80ºá\82\87 á\80\95á\80½á\81µá\80ºá\82\87á\80\9cá\80­á\80¯á\81¼á\80ºá\80¸á\80\9eá\80¯á\80\90á\80ºá\80¸á\81¼á\81¼á\80ºá\82\89 á\80\99á\80®á\80¸á\80\9cá\80½á\80\84á\80ºá\82\88á\80\9cá\82\85á\81µá\80ºá\82\88á\80\9cá\81¢á\82\86á\82\88á\80\9eá\80\84á\80ºá\81¼á\82\86 တူၺ်းတီႈ $1 ၼႆႈၶႃႈလႄႈ။",
-       "enotif_lastdiff": "á\80\90á\80½á\81¼á\80ºá\82\88á\80\90á\82\83á\82\87á\80\90á\80°á\81ºá\80ºá\80¸ á\80\9cá\80½á\80\84á\80ºá\82\88á\80\9cá\82\85á\81µá\80ºá\82\88á\80\9cá\81¢á\82\86á\82\88á\80¢á\81¼á\80ºá\81¼á\82\86á\82\89 á\80\90á\80°á\81ºá\80ºá\80¸ á\80\90á\80®á\82\88 $1 á\81¼á\82\86á\82\88á\81¶á\82\83á\82\88á\80\9cá\82\84á\82\88á\81\8b",
+       "enotif_lastvisited": "á\80\9cá\80½á\80\84á\80ºá\82\88á\80\9cá\82\85á\81µá\80ºá\82\88á\80\9cá\81¢á\82\86á\82\88á\80\90á\81¢á\80\84á\80ºá\80¸á\80\99á\80°á\80\90á\80ºá\80¸ á\80\9dá\81¢á\82\86á\80¸á\80\9eá\80± á\81¸á\80\9dá\80ºá\82\88á\81µá\80\9dá\80ºá\82\87 á\80\99á\82\83á\80¸á\80¢á\82\85á\80\9dá\80ºá\82\87 á\81µá\80\99á\80ºá\80¸á\80\9cá\80­á\80¯á\81¼á\80ºá\80¸á\80\9eá\80¯á\80\90á\80ºá\80¸á\81¼á\81¼á\80ºá\82\89 တူၺ်းတီႈ $1 ၼႆႈၶႃႈလႄႈ။",
+       "enotif_lastdiff": "တႃႇတူၺ်း လွင်ႈလႅၵ်ႈလၢႆႈဢၼ်ၼႆႉ တူၺ်း တီႈ $1 ၼႆႈၶႃႈလႄႈ။",
        "enotif_anon_editor": "ၽူႈၸႂ်ႉတိုဝ်း ဢမ်ႇသႂ်ႇၸိုဝ်ႈ $1",
        "deletepage": "မွတ်ႇပႅတ်ႈ ၼႃႈလိၵ်ႈ",
        "confirm": "ၼႄႉၼွၼ်း",
        "rollbacklinkcount": "ၵိင်ႈၶိုၼ်းလင် $1 {{PLURAL:$1|edit|မႄးထတ်း}}",
        "cantrollback": "ဢမ်ႇၸၢင်ႈ ပိၼ်ႈၶိုၼ်း လွင်ႈမႄးထတ်း;\nၽူႈၶဝ်ႈႁူမ်ႈ ​ၵမ်းလိုၼ်းသုတ်းၼႆႉ မၼ်းၵူၺ်းပဵၼ် ၽူႈတႅမ်ႈလိၵ်ႈ တႃႇ ၼႃႈလိၵ်ႈၼႆႉ။",
        "revertpage": " [[Special:Contributions/$2|$2]] ([[User talk:$2|တွၼ်ႈဢုပ်ႇ]]) ၵေႃႉပိၼ်ႈၶိုၼ်း လွင်ႈမႄးထတ်း ၸူး မၢႆဢွၵ်ႇ ၵမ်းလိုၼ်းသုတ်း ဢၼ် [[User:$1|$1]] ၵေႃႉႁဵတ်းဝႆႉ",
-       "rollback-success": "$1 ၵေႃႉ ပိၼ်ႈၶိုၼ်း လွင်ႈမႄးထတ်း ;\n$2 လႅၵ်ႈလၢႆႈဝႆႉၸူး လွင်ႈၶူၼ်ႉၶႆႈ ၵမ်းလိုၼ်းသုတ်း။",
+       "rollback-success": "Reverted edits by {{GENDER:$3|$1}}; ၵေႃႉ ပိၼ်ႈၶိုၼ်း လွင်ႈမႄးထတ်း ;\n{{GENDER:$4|$2}}. လႅၵ်ႈလၢႆႈဝႆႉၸူး လွင်ႈၶူၼ်ႉၶႆႈ ၵမ်းလိုၼ်းသုတ်း။",
        "changecontentmodel": "လႅၵ်ႈလၢႆႈ ပိူင်ၵေႃႇသၢင်ႈ လမ်းၼႂ်း ၶွင်ၼႃႈလိၵ်ႈ",
        "changecontentmodel-legend": "လႅၵ်ႈလၢႆႈ ပိူင်ႈၵေႃႇသၢင်ႈ လမ်းၼႂ်း",
        "changecontentmodel-title-label": "ႁူဝ်ၶေႃႈ ၼႃႈလိၵ်ႈ",
        "undeleteviewlink": "တူၺ်း",
        "undeleteinvert": "လွင်ႈလိူၵ်ႈသၢင်ႈ ပိၼ်ႈၽူၼ်",
        "undeletecomment": "လွင်ႈတၢင်း :",
-       "undeletedrevisions": "{{PLURAL:$1|1 ၶူၼ်ႉၶႆႈ|$1 ၸိူဝ်းၶူၼ်ႉၶႆႉ}} ဢဝ်ဝႆႉၶိုၼ်းယဝ်ႉ",
-       "undeletedfiles": "ဝႆႉၶိုၼ်း {{PLURAL:$1|1 ၾၢႆႇ}} ယဝ်ႉ",
        "undelete-search-title": "ၶူၼ်ႉႁႃ ၼႃႈလိၵ်ႈ ၸိူဝ်းမွတ်ႇဝႆႉ",
        "undelete-search-box": "ၶူၼ်ႉႁႃ ၼႃႈလိၵ်ႈ ၸိူဝ်းမွတ်ႇဝႆႉ",
        "undelete-search-prefix": "ၼႄ ၼႃႈလိၵ်ႈ ၸိူဝ်းတႄႇဝႆႉတင်း :",
        "sp-contributions-uploads": "လူတ်ႇၶိုၼ်ႈ",
        "sp-contributions-logs": "မၢႆတမ်း",
        "sp-contributions-talk": "တွၼ်ႈဢုပ်ႇ",
-       "sp-contributions-userrights": "လွင်ႈၸတ်းၵၢၼ်သုၼ်ႈလႆႈ ၽူႈၸႂ်ႉတိုတ်း",
+       "sp-contributions-userrights": "လွင်ႈၸတ်းၵၢၼ်သုၼ်ႈလႆႈ {{GENDER:$1|user}}",
        "sp-contributions-blocked-notice": "ၽူႈၸႂ်ႉတိုဝ်းၵေႃႉၼႆႉ ထုၵ်ႇတတ်းၶၢတ်ႇဝႆႉဢေႃႈ ယၢမ်းလဵဝ်။\nသဵၼ်ႈမၢႆတတ်းၶၢတ်ႇ ၵမ်းလိုၼ်းသုတ်းၼႆႉ ၼႄဝႆႉယူႇၵႃႈတီႈ သဵၼ်ႈမၢႆၽိုၼ်ဢိင် ပႃႈတႂ်ႈၼႆႉ။",
        "sp-contributions-blocked-notice-anon": "ၽူႈၸႂ်ႉတိုဝ်းၵေႃႉၼႆႉ ထုၵ်ႇတတ်းၶၢတ်ႇဝႆႉဢေႃႈ ယၢမ်းလဵဝ်။\nသဵၼ်ႈမၢႆတတ်းၶၢတ်ႇ ၵမ်းလိုၼ်းသုတ်းၼႆႉ ၼႄဝႆႉယူႇၵႃႈတီႈ သဵၼ်ႈမၢႆၽိုၼ်ဢိင် ပႃႈတႂ်ႈၼႆႉ။",
        "sp-contributions-search": "ၶူၼ်ႉႁႃ တႃႇ လွင်ႈၶဝ်ႈႁူမ်ႈ",
        "sp-contributions-newonly": "ၵူၺ်းၼႄပၼ် ၵၢၼ်မႄးထတ်း ၸိူဝ်းပဵၼ် လွင်ႈၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈ",
        "sp-contributions-hideminor": "သိူင်ႇဝႆႉ လွင်ႈမႄးထတ်း ဢိတ်းဢီႈ",
        "sp-contributions-submit": "ၶူၼ်ႉႁႃ",
-       "whatlinkshere": "á\82\81á\80µá\80\84á\80ºá\80¸á\81µá\80½á\80\84á\80ºá\82\89 á\80¢á\81¼á\80ºá\80\99á\80®á\80¸á\80\90á\80®á\82\88á\81¼á\82\86á\82\89 ပဵၼ်သင်",
+       "whatlinkshere": "á\82\81á\80µá\80\84á\80ºá\80¸á\81µá\80½á\80\84á\80ºá\82\89 á\80¢á\81¼á\80ºá\80\99á\80®á\80¸á\80\90á\80®á\82\88á\81¼á\82\86á\82\88ပဵၼ်သင်",
        "whatlinkshere-title": "ၼႃႈလိၵ်ႈၸိူဝ်းလိင်ႉၸူး \"$1\"",
        "whatlinkshere-page": "ၼႃႈလိၵ်ႈ",
        "linkshere": "ၼႃႈလိၵ်ႈၽၢႆႇတႂ်ႈၼႆႉ မၼ်းၵွင်ႉသၢၼ် ဝႆႉၸူး <strong>[[:$1]]</strong>:",
        "tooltip-ca-talk": "ဢုပ်ႇဢူဝ်းလွင်ႈပႃးဝႆႉၼႂ်းၼႃႈလိၵ်ႈ",
        "tooltip-ca-edit": "မႄးထတ်း ၼႃးလိၵ်ႈၼႆႉ",
        "tooltip-ca-addsection": "တႄႇပွတ်းတွၼ်ႈမႂ်ႇ",
-       "tooltip-ca-viewsource": "á\81¼á\82\83á\82\88â\80\8bá\80\9cá\80­á\81µá\80ºá\82\88â\80\8bá\81¼á\82\86á\82\89 á\80\91á\80¯á\81µá\80ºá\82\87â\80\8bá\82\81á\80±á\82\89â\80\8bá\81µá\80\84á\80ºá\82\88â\80\8bá\80\9dá\82\86á\82\89á\81\8b á\80\9eá\80°â\80\8bá\81¸á\81¢á\80\84á\80ºá\82\8aâ\80\8bတူၺ်း​ င​ဝ်ႈငႃႇမၼ်းလႆႈ",
+       "tooltip-ca-viewsource": "á\81¼á\82\83á\82\88â\80\8bá\80\9cá\80­á\81µá\80ºá\82\88â\80\8bá\81¼á\82\86á\82\89 á\80\91á\80¯á\81µá\80ºá\82\87â\80\8bá\82\81á\80±á\82\89â\80\8bá\81µá\80\84á\80ºá\82\88â\80\8bá\80\9dá\82\86á\82\89á\81\8b á\80\9eá\80°â\80\8bá\81¸á\81¢á\80\84á\80ºá\82\88တူၺ်း​ င​ဝ်ႈငႃႇမၼ်းလႆႈ",
        "tooltip-ca-history": "လွင်ႈၶူၼ်ႉၶႆႈဢၼ်ပူၼ်ႉမႃး တႃႇၼႃႈလိၵ်ႈၼႆႉ",
        "tooltip-ca-protect": "ႁေႉၵင်ႈ ၼႃႈလိၵ်ႈၼႆႉ",
        "tooltip-ca-unprotect": "လႅၵ်ႈလၢႆႈ လွင်ႈႁႄႉၵင်ႈ ၶွင်ၼႃႈလိၵ်ႈၼႆႉ",
        "tooltip-t-contributions": "သဵၼ်ႈမၢႆလွင်ႈၶဝ်ႈႁူမ်ႈ တွၼ်ႈတႃႇ {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်းၼႆ့}}",
        "tooltip-t-emailuser": "သူင်ႇ ဢီးမေးလ်ၸူး {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း ၵေႃႉၼႆႉ}}",
        "tooltip-t-info": "လွၼ်ႉၶၢဝ်ႇတၢင်ႇၸိူဝ်း ဢၼ်ၵပ်းၵၢႆႇလူၺ်ႈ ၼႃႈလိၵ်ႈၼႆႉ",
-       "tooltip-t-upload": "လူတ်ႇၶိုၼ်ႈ ၾၢႆႇ",
+       "tooltip-t-upload": "လူတ်ႇၶိုၼ်ႈၾၢႆႇ",
        "tooltip-t-specialpages": "ပိုတ်ႇၼႄသဵၼ်ႈ ၼႃႈ​လိၵ်ႈ ၶိုၵ်ႉ​တွၼ်း",
        "tooltip-t-print": "ၼႃႈလိၵ်ႈၼႆႉ မၼ်းပဵၼ်ပိူဝ်းသျိၼ်း ဢၼ်ဢိတ်ႇဢွၵ်ႇလႆႈ",
        "tooltip-t-permalink": "ႁဵင်းၵွင်ႉမၼ်ႈၵိုမ်းတႃႇၸူး ၼႃႈလိၵ်ႈၶူၼ်ႉၶႆႈဢၼ်ၼႆႉ",
        "tooltip-recreate": "ႁူမ်ႈဝႃႈ မၼ်းထုၵ်ႇမွတ်ႇပႅတ်ႈယဝ်ႉၵေႃႈ ၶိုၼ်းၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈ",
        "tooltip-upload": "တႄႇလူတ်ႇၶိုၼ်ႈ",
        "tooltip-rollback": "\"ႁူၼ်လင်ၶိုၼ်း\" ၼႆႉ မၼ်းတေဢဝ် ၼႃႈလိၵ်ႈၼႆႉ ပိၼ်ႈၶိုၼ်းၸူး ၸွမ်းၼင်ႇ ၽူႈႁူမ်ႈသၢင်ႈ ၵေႃႉလိုၼ်းသုတ်းၼၼ်ႉ မႄးထတ်းမႃး။",
-       "tooltip-undo": "\"Undo\" á\81¼á\82\86á\80· á\80\99á\81¼á\80ºá\80¸á\80\90á\80±á\80¢á\80\9dá\80º á\81µá\81¢á\81¼á\80ºá\80\91á\80\90á\80ºá\80¸á\80\9eá\81¢á\80\84á\80ºá\80¢á\81¼á\80ºá\81¼á\82\86á\82\89 á\81¶á\80­á\80¯á\81¼á\80ºá\80¸á\80\95á\80­á\81¼á\80ºá\82\87á\81¸á\80°á\80¸á\80\9eá\80± á\81¶á\80­á\80¯á\81¼á\80ºá\80¸á\80\95á\81¼á\80º á\80\95á\81¼á\80º á\80\9cá\81¢á\82\86á\80¸á\80\90á\80°á\81ºá\80ºá\80¸á\80\9cá\80°á\80\84á\80ºá\82\88á\81¼á\82\83á\82\88 á\80\90á\82\83á\82\87á\81µá\81¢á\81¼á\80ºá\80\91á\80\90á\80ºá\80¸á\80\9eá\81¢á\80\84á\80ºá\82\88á\80¢á\81¼á\80ºá\81¼á\82\86á\82\89á\81\8b á\80\99á\81¼á\80ºá\80¸á\80\90á\80±á\82\81á\80µá\80\90á\80ºá\80¸á\82\81á\82\82á\80ºá\82\88á\81¸á\80\9dá\80ºá\82\88á\81µá\80\9dá\80ºá\82\87 á\80\91á\82\85á\80\99á\80ºá\80\9eá\82\82á\80ºá\82\87 á\80\9cá\80½á\80\84á\80ºá\82\88á\80\90á\81¢á\80\84á\80ºá\80¸á\80\99á\81¼á\80ºá\80¸ á\81µá\82\83á\82\88á\80\90á\80®á\82\88 á\80\9cá\80½á\81µá\80ºá\80¸á\82\81á\80°á\80\9dá\80ºá\82\81á\80¯á\80\95á\80ºá\82\87မၼ်းၼၼ်ႉယူႇ။",
+       "tooltip-undo": "\"Undo\" á\81¼á\82\86á\80· á\80\99á\81¼á\80ºá\80¸á\80\90á\80±á\80¢á\80\9dá\80º á\81µá\81¢á\81¼á\80ºá\80\91á\80\90á\80ºá\80¸á\80\9eá\81¢á\80\84á\80ºá\80¢á\81¼á\80ºá\81¼á\82\86á\82\89 á\81¶á\80­á\80¯á\81¼á\80ºá\80¸á\80\95á\80­á\81¼á\80ºá\82\87á\81¸á\80°á\80¸á\80\9eá\80± á\81¶á\80­á\80¯á\81¼á\80ºá\80¸á\80\95á\81¼á\80º á\80\95á\81¼á\80º á\80\9cá\81¢á\82\86á\80¸á\80\90á\80°á\81ºá\80ºá\80¸á\80\9cá\80°á\80\84á\80ºá\82\88á\81¼á\82\83á\82\88 á\80\90á\82\83á\82\87á\81µá\81¢á\81¼á\80ºá\80\91á\80\90á\80ºá\80¸á\80\9eá\81¢á\80\84á\80ºá\82\88á\80¢á\81¼á\80ºá\81¼á\82\86á\82\89á\81\8b á\80\99á\81¼á\80ºá\80¸á\80\90á\80±á\82\81á\80µá\80\90á\80ºá\80¸á\82\81á\82\82á\80ºá\82\88á\81¸á\80\9dá\80ºá\82\88á\81µá\80\9dá\80ºá\82\87 á\80\91á\82\85á\80\99á\80ºá\80\9eá\82\82á\80ºá\82\87 á\80\9cá\80½á\80\84á\80ºá\82\88á\80\90á\81¢á\80\84á\80ºá\80¸á\80\99á\81¼á\80ºá\80¸ á\81µá\82\83á\82\88á\80\90á\80®á\82\88 á\80\9cá\80½á\81µá\80ºá\80¸á\82\81á\80°á\80\9dá\80ºá\82\81á\80¯á\80\95á\80ºá\82\88မၼ်းၼၼ်ႉယူႇ။",
        "tooltip-preferences-save": "သိမ်း ငဝ်ႈၵုမ်းပိူင်",
        "tooltip-summary": "ထႅမ်သႂ်ႇ ၶေႃႈသပ်းလႅင်း ဢၼ်ၵႅပ်ႈ",
        "anonymous": "{{PLURAL:$1|ၽူႈၸႂ်ႉတိုဝ်း}} ဢၼ်ဢမ်ႇမီးၸိုဝ်ႈ ၶွင် {{SITENAME}}",
        "siteuser": "{{SITENAME}} ၽူႈၸႂ်ႉတိုဝ်း $1",
        "anonuser": "{{SITENAME}} ၽူႈၸႂ်ႉတိုဝ်း ဢၼ်ဢမ်ႇမီးၸိုဝ်ႈ $1",
-       "lastmodifiedatby": "ၼႃႈလိၵ်ႈၼႆႉ ထုၵ်ႇ $3 ၵေႃႉမူၼ်ႉမႄးဝႆႉမိူဝ်ႈ $2, $1။",
+       "lastmodifiedatby": "á\81¼á\82\83á\82\88á\80\9cá\80­á\81µá\80ºá\82\88á\80¢á\81¼á\80ºá\81¼á\82\86á\82\89 á\80\91á\80¯á\81µá\80ºá\82\87 $3 á\81µá\80±á\82\83á\82\89á\80\99á\80°á\81¼á\80ºá\82\89á\80\99á\82\84á\80¸á\80\9dá\82\86á\82\89á\80\99á\80­á\80°á\80\9dá\80ºá\82\88 $2, $1á\81\8b",
        "spam_reverting": "လွင်ႈပိၼ်ႈၶိုၼ်း လွင်ႈၶူၼ်ႉၶႆႈ ၵမ်းလိုၼ်းသုတ်းၼၼ်ႉ မၼ်းဢမ်ႇၶဝ်ႈပႃးဝႆႉ ႁဵင်းၵွင်ႉ ဢၼ်ၵွင်ႉၸူး $1",
        "simpleantispam-label": "ၵူတ်ႇထတ်း Anti-spam.\n<strong>ယႃႇပေ</strong>ထႅမ်ဢၼ်ၼႆႉသႂ်ႇ!",
        "pageinfo-header-basic": "�လွၼ်ႉၶၢဝ်ႈ ပိုၼ်ႉထၢၼ်",
        "sunday-at": "ဝၼ်းဢႃးတိတ်ႉ မိူဝ်ႈ $1",
        "yesterday-at": "မိူဝ်ႈဝႃး မိူဝ်ႈ $1",
        "metadata": "ၶေႃႈမုၼ်းၼႅပ်ႇ",
-       "metadata-help": "á\81¾á\81¢á\82\86á\82\87á\80¢á\81¼á\80ºá\81¼á\82\86á\82\89 á\80\99á\81¼á\80ºá\80¸á\81¶á\80\9dá\80ºá\82\88á\80\95á\82\83á\80¸á\80\9dá\82\86á\82\89á\80\9cá\80½á\81¼á\80ºá\82\89á\81¶á\81¢á\80\9dá\80ºá\82\87 á\80\91á\82\85á\80\99á\80ºá\80\9eá\82\82á\80ºá\82\87á\80\99á\82\82á\80ºá\82\87á\81\8a á\80¢á\81¼á\80ºá\80¢á\81¢á\80\95á\80ºá\82\88á\80\91á\80¯á\81µá\80ºá\82\89á\80\90á\80®á\82\88 á\81µá\80½á\80\84á\80ºá\82\88á\80\91á\82\86á\82\87 digital á\80¢á\80\99á\80ºá\82\87á\81¼á\81¼á\80º á\80\90á\80°á\80\9dá\80ºá\81µá\80°á\80\90á\80ºá\82\87 scanner ​ထႅမ်သႂ်ႇသေ သၢင်ႈဝႆႉ ဢမ်ႇၼၼ် လႅၵ်ႈလၢႆႈဝႆႉ။\nသင်ၸိူဝ်ႉၾၢႆႇဢၼ်ၼႆႉ ထုၵ်ႇမႄးၶိုၼ်းဝႆႉၵႃႈတီႈ ၾၢႆႇငဝ်ႈတိုၼ်းမၼ်းၼႆ ၼႂ်းၵႃႈ ၸဝ်ႈၵဝ်ႇမႄးဝႆႉၼၼ်ႉ မၼ်းတေဢမ်ႇထၢင်ႇႁၢင်ႈလႆႈ ၵူႈလွင်ႈ။",
+       "metadata-help": "á\81¾á\81¢á\82\86á\82\87á\80¢á\81¼á\80ºá\81¼á\82\86á\82\89 á\80\99á\81¼á\80ºá\80¸á\81¶á\80\9dá\80ºá\82\88á\80\95á\82\83á\80¸á\80\9dá\82\86á\82\89á\80\9cá\80½á\81¼á\80ºá\82\89á\81¶á\81¢á\80\9dá\80ºá\82\87 á\80\91á\82\85á\80\99á\80ºá\80\9eá\82\82á\80ºá\82\87á\80\99á\82\82á\80ºá\82\87á\81\8a á\80¢á\81¼á\80ºá\80¢á\81¢á\80\95á\80ºá\82\88á\80\91á\80¯á\81µá\80ºá\82\89á\80\90á\80®á\82\88 á\81µá\80½á\80\84á\80ºá\82\88á\80\91á\82\86á\82\87 digital á\80¢á\80\99á\80ºá\82\87á\81¼á\81¼á\80º á\80¢á\80\9dá\80º scanner ​ထႅမ်သႂ်ႇသေ သၢင်ႈဝႆႉ ဢမ်ႇၼၼ် လႅၵ်ႈလၢႆႈဝႆႉ။\nသင်ၸိူဝ်ႉၾၢႆႇဢၼ်ၼႆႉ ထုၵ်ႇမႄးၶိုၼ်းဝႆႉၵႃႈတီႈ ၾၢႆႇငဝ်ႈတိုၼ်းမၼ်းၼႆ ၼႂ်းၵႃႈ ၸဝ်ႈၵဝ်ႇမႄးဝႆႉၼၼ်ႉ မၼ်းတေဢမ်ႇထၢင်ႇႁၢင်ႈလႆႈ ၵူႈလွင်ႈ။",
        "metadata-fields": "ၸိူဝ်းပဵၼ် လွၵ်းၶေႃႈမုၼ်းႁူဝ်ယွႆႈ တႃႇၶႅပ်းႁၢင်ႈ ဢၼ်မီးဝႆႉတီႈၼႂ်း ၶေႃႈၶၢဝ်ႇပွတ်း message ၼႆႉၼႆ မၼ်းတေၶဝ်ႈပႃးဝႆႉ ၵႃႈတီႈ ၼႃႈလိၵ်ႈၶႅပ်းႁၢင်ႈ ဢၼ်တေၼႄပၼ် ၽွင်းမိူဝ်ႈ လွၵ်းၶေႃႈမုၼ်းႁူဝ်ယွႆႈ လၼ်ႇၼႄပၼ်။\nဢၼ်ၵိုတ်းလိူဝ်ၸိူဝ်းၼၼ်ႉတႄႉ တေထုၵ်ႇလပ်ႉဝႆႉ ၸွမ်းၼင်ႇ ပိူင်ၵႅဝ်ႈမၼ်း။\n\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-orientation": "ၼႃႈဝၢႆႇ",
        "exif-xresolution": "ႁႅင်းၸိုၼ်ႈသႂ် ၼႃႈသုင်",
index fd9f5a5..5f8034b 100644 (file)
        "preview": "පෙරදසුන",
        "showpreview": "පෙරදසුන පෙන්වන්න",
        "showdiff": "වෙනස්කිරීම් පෙන්වන්න",
-       "blankarticle": "<Strong>අවවාදයයි: </strong> ඔබ නිර්මාණය කරන පිටුව හිස් වේ. ඔබ ක්ලික් නම් \"{{int:savearticle}}\" නැවතත්, පිටුව කවර හෝ අන්තර්ගතයක් නොමැතිව නිර්මාණය කරනු ඇත.",
+       "blankarticle": "<Strong>අවවාදයයි: </strong> ඔබ නිර්මාණය කරන පිටුව හිස් වේ. ඔබ ක්ලික් නම් \"$1\" නැවතත්, පිටුව කවර හෝ අන්තර්ගතයක් නොමැතිව නිර්මාණය කරනු ඇත.",
        "anoneditwarning": "<strong>අවවාදයයි:</strong> ඔබ පරිශීලකයෙකු වශයෙන් පද්ධතියට පිවිස නැත.\nඔබගේ IP යොමුව මෙම පිටුවෙහි සංස්කරණ ඉතිහාසයෙහි වාර්තාගත වෙනු ඇත.\nඔබ <strong>[$1 පිවිසීම]</strong> හෝ <strong>[$2 ගිණුමක් තැනීම]</strong> කලහොත්, ඔබගේ සංස්කරණ ඔබගේ පරිශීලක නමින් දැක්වීම සහ වෙනත් ප්‍රතිලාභ ලැබෙනු ඇත.",
        "anonpreviewwarning": "අවවාදයයි: ඔබ පරිශීලකයෙකු වශයෙන් පද්ධතියට ප්‍රවිෂ්ට වී නොමැත. එමනිසා මෙම පිටුවෙහි සංස්කරණ ඉතිහාසයෙහි, ඔබගේ අන්තර්ජාල ලිපිනය සටහන් කරගැනීමට සිදුවනු ඇත.",
        "missingsummary": "'''සිහිගැන්වීමයි:''' ඔබ විසින් සංස්කරණ සාරාංශයක් සපයා නොමැත.\nඔබ නැවතත් සුරැකීම ක්ලික් කලහොත්, ඔබගේ සංස්කරණය එවැන්නක් විරහිතවම සුරැකෙනු ඇත.",
-       "selfredirect": "<Strong>අවවාදයයි:</strong> ඔබ තමන් වෙත මෙම පිටුව හරවා යවයි ඇත. \nඔබ යළි-යොමුවීම් සඳහා වැරදි ඉලක්කය නිශ්චිතව දක්වා ඇති විය හැක, හෝ ඔබ වැරදි පිටුව සංස්කරණය කල හැක. \nඔබ ක්ලික් නම් \"{{int:savearticle}}\" නැවතත්, යළි-යොමුවීම් කෙසේ හෝ නිර්මාණය කරනු ඇත.",
+       "selfredirect": "<Strong>අවවාදයයි:</strong> ඔබ තමන් වෙත මෙම පිටුව හරවා යවයි ඇත. \nඔබ යළි-යොමුවීම් සඳහා වැරදි ඉලක්කය නිශ්චිතව දක්වා ඇති විය හැක, හෝ ඔබ වැරදි පිටුව සංස්කරණය කල හැක. \nඔබ ක්ලික් නම් \"$1\" නැවතත්, යළි-යොමුවීම් කෙසේ හෝ නිර්මාණය කරනු ඇත.",
        "missingcommenttext": "කරුණාකර පහතින් පරිකථනයක් ඇතුළු කරන්න.",
-       "missingcommentheader": "<strong>සිහිගැන්වීමයි:</strong>  මෙම පරිකථනය සඳහා ඔබ විසින් විෂයයක්/සිරස්තලයක් සපයා නොමැත.\nඔබ නැවතත් \"{{int:savearticle}}\" ක්ලික් කලහොත්, ඔබගේ සංස්කරණය එවැන්නක් විරහිතවම සුරැකෙනු ඇත.",
+       "missingcommentheader": "<strong>සිහිගැන්වීමයි:</strong>  මෙම පරිකථනය සඳහා ඔබ විසින් විෂයයක්/සිරස්තලයක් සපයා නොමැත.\nඔබ නැවතත් \"$1\" ක්ලික් කලහොත්, ඔබගේ සංස්කරණය එවැන්නක් විරහිතවම සුරැකෙනු ඇත.",
        "summary-preview": "සාරාංශ පෙර-දසුන:",
        "subject-preview": "විෂයය හි පෙර දසුන:",
        "previewerrortext": "ඔබේ වෙනස්කම් පෙරදසුන් කිරීමට උත්සාහ දරන අතර දෝෂයක් ඇතිවිය.",
        "editingsection": "$1 (ඡේදය) සංස්කරණය කරමින් පවතියි",
        "editingcomment": "$1 සංස්කරණය කරමින් පවතියි (නව ඡේදයක්)",
        "editconflict": "සංස්කරණ ගැටුම: $1",
-       "explainconflict": "ඔබ මෙම පිටුව සංස්කරණය කිරීමට ඇරඹි පසුව යම් අයෙකු එය වෙනස් කොට ඇත.\nඉහළ පෙළ කොටසේ අඩංගු වනුයේ පිටු පෙළ  දැනට පවතින අයුරිනි.\nපහළ පෙළ කොටසේ ඔබගේ වෙනස්වීම් පෙන්වා ඇත.\nදැනට පවතින පෙළට ඔබගේ වෙනස්කිරීම් ඒකාබද්ධ කිරීම ඔබ විසින් කල යුතුව ඇත.\nඔබ විසින්  \"{{int:savearticle}}\" යන්න එබූ විට සුරැකෙන්නේ ඉහළ කොටසේ පෙළ '''පමණි'''.",
+       "explainconflict": "ඔබ මෙම පිටුව සංස්කරණය කිරීමට ඇරඹි පසුව යම් අයෙකු එය වෙනස් කොට ඇත.\nඉහළ පෙළ කොටසේ අඩංගු වනුයේ පිටු පෙළ  දැනට පවතින අයුරිනි.\nපහළ පෙළ කොටසේ ඔබගේ වෙනස්වීම් පෙන්වා ඇත.\nදැනට පවතින පෙළට ඔබගේ වෙනස්කිරීම් ඒකාබද්ධ කිරීම ඔබ විසින් කල යුතුව ඇත.\nඔබ විසින්  \"$1\" යන්න එබූ විට සුරැකෙන්නේ ඉහළ කොටසේ පෙළ '''පමණි'''.",
        "yourtext": "ඔබගේ පෙළ",
        "storedversion": "ගබඩාකල අනුවාදය",
        "nonunicodebrowser": "'''අවවාදයයි: ඔබගේ බ්‍රවුසරය යුනිකේත  අනුකූල නොවේ.\nමෙම දුෂ්කරතාවය මගහැර පිටු සංස්කරණය  සුරක්ෂිතව සිදුකිරීමට ඔබට ඉඩ සලසන වක් මගක් ඇත: ASCII-නොවන අක්ෂර  සංස්කරණ කොටුවෙහි ෂඩ්දශක කේතයන් ලෙස පෙන්නුම් කෙරේ.'''",
        "right-editsemiprotected": "ලෙස ආරක්ෂා සංස්කරණය කරන්න පිටු \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "පිටුවෙහි ඇති අන්තර්ගතය ආකෘතිය සංස්කරණය කරන්න",
        "right-editinterface": "පරිශීලක අතුරු-මුව සංස්කරණය කරන්න",
-       "right-editusercssjs": "අනෙකුත් පරිශීලකයන්ගේ  CSS හා JS ගොනු සංස්කරණය කරන්න",
        "right-editusercss": "අනෙකුත් පරිශීලකයන්ගේ  CSS ගොනු සංස්කරණය කරන්න",
        "right-edituserjs": "අනෙකුත් පරිශීලකයන්ගේ  JS ගොනු සංස්කරණය කරන්න",
        "right-editmyusercss": "ඔබේ ම පරිශීලක CSS ගොනු සංස්කරණය කරන්න",
        "rcshowhidecategorization": "පිටු ප්‍රවර්ගීකරණය $1",
        "rcshowhidecategorization-show": "පෙන්වන්න",
        "rcshowhidecategorization-hide": "සඟවන්න",
-       "rclinks": "අවසන් දින $2 තුලදී සිදුවී ඇති අවසන් වෙනස්වීම් $1 පෙන්නුම් කරන්න<br />$3",
+       "rclinks": "අවසන් දින $2 තුලදී සිදුවී ඇති අවසන් වෙනස්වීම් $1 පෙන්නුම් කරන්න",
        "diff": "වෙනස",
        "hist": "ඉති",
        "hide": "සඟවන්න",
        "undeleteviewlink": "නරඹන්න",
        "undeleteinvert": "තෝරාගැනුම කණපිට පෙරලන්න",
        "undeletecomment": "හේතුව:",
-       "undeletedrevisions": "{{PLURAL:$1|සංශෝධනයක්|සංශෝධන $1 ක්}} ප්‍රතිෂ්ඨාපනය කරන ලදි",
-       "undeletedrevisions-files": "{{PLURAL:$1|එක් සංශෝධනයක්| සංශෝධන $1 ක්}} සහ {{PLURAL:$2|එක් ගොනුවක්|ගොනු $2 ක්}} ප්‍රතිෂ්ඨාපනය කෙරිණි",
-       "undeletedfiles": "{{PLURAL:$1|එක් ගොනුවක්|ගොනු $1 ක්}} ප්‍රතිෂ්ඨාපනය කෙරිණි",
        "cannotundelete": "මකාදැමීම ප්‍රතිලෝම කිරීම අසාර්ථක විය:\n$1",
        "undeletedpage": "'''$1 ප්‍රතිෂ්ඨාපනය කෙරී ඇත'''\n\nමෑතදී සිදුවූ මකාදැමීම් හා ප්‍රතිෂ්ඨාපනයන් හි වාර්තාවක් උදෙසා [[Special:Log/delete|මකාදැමීම් ලඝු-සටහන]] පරිශීලනය කරන්න.",
        "undelete-header": "මෑතදී මකාදැමුණු පිටු සඳහා  [[Special:Log/delete|මකාදැමුම්  ලඝු-සටහන]] බලන්න.",
index 2da5182..9daccbb 100644 (file)
        "anontalk": "Diskusia",
        "navigation": "Navigácia",
        "and": "&#32;a",
-       "qbfind": "Hľadať",
-       "qbbrowse": "Prehliadať",
-       "qbedit": "Upraviť",
-       "qbpageoptions": "Táto stránka",
-       "qbmyoptions": "Moje stránky",
        "faq": "Často kladené otázky",
-       "faqpage": "Project:Často kladené otázky",
        "actions": "Operácie",
        "namespaces": "Menné priestory",
        "variants": "Varianty",
        "edit-local": "Upraviť miestny popis",
        "create": "Vytvoriť",
        "create-local": "Pridať miestny popis",
-       "editthispage": "Upraviť túto stránku",
-       "create-this-page": "Vytvoriť túto stránku",
        "delete": "Vymazať",
-       "deletethispage": "Vymazať túto stránku",
-       "undeletethispage": "Obnoviť túto stránku",
        "undelete_short": "Obnoviť {{PLURAL:$1|jednu úpravu|$1 úpravy|$1 úprav}}",
        "viewdeleted_short": "Zobraziť {{PLURAL:$1|jednu zmazanú úpravu|$1 zmazané úpravy|$1 zmazaných úprav}}",
        "protect": "Zamknúť",
        "protect_change": "Zmeniť",
-       "protectthispage": "Zamknúť túto stránku",
        "unprotect": "Zmeniť stav ochrany",
-       "unprotectthispage": "Zmeniť stav ochrany tejto stránky",
        "newpage": "Nová stránka",
-       "talkpage": "Diskusia k stránke",
        "talkpagelinktext": "diskusia",
        "specialpage": "Špeciálna stránka",
        "personaltools": "Osobné nástroje",
-       "articlepage": "Zobraziť stránku",
        "talk": "Diskusia",
        "views": "Zobrazenia",
        "toolbox": "Nástroje",
        "tool-link-userrights": "Zmeniť používateľské skupiny {{GENDER:$1|tohoto použivateľa|tejto používateľky}}",
        "tool-link-userrights-readonly": "Zobraziť {{GENDER:$1|používateľské}} skupiny",
        "tool-link-emailuser": "Poslať e-mail {{GENDER:$1|tomuto používateľovi|tejto používateľke}}",
-       "userpage": "Zobraziť stránku používateľa",
-       "projectpage": "Zobraziť projektovú stránku",
        "imagepage": "Zobraziť stránku súboru",
        "mediawikipage": "Zobraziť stránku so správou",
        "templatepage": "Zobraziť stránku šablóny",
        "preview": "Náhľad",
        "showpreview": "Zobraziť náhľad",
        "showdiff": "Zobraziť rozdiely",
-       "blankarticle": "<strong>Upozornenie:</strong> Stránka, ktorú sa chystáte založiť, je prázdna. Pokiaľ ešte raz kliknete na „{{int:savearticle}}“, bude založená úplne bez obsahu.",
+       "blankarticle": "<strong>Upozornenie:</strong> Stránka, ktorú sa chystáte založiť, je prázdna. Pokiaľ ešte raz kliknete na „$1“, bude založená úplne bez obsahu.",
        "anoneditwarning": "<strong>Upozornenie:</strong> Nie ste prihlásený.\nAk uložíte akúkoľvek úpravu vaša IP adresa bude zverejnená v histórii tejto stránky. Ak sa <strong>[$1 prihlásite]</strong> alebo si <strong>[$2 vytvoríte účet]</strong>, budú vaše úpravy priradené k vášmu používateľskému menu a získate i ďalšie výhody.",
        "anonpreviewwarning": "''Nie ste prihlásený. Uložením zaznamenáte svoju IP adresu do histórie úprav tejto stránky.''",
        "missingsummary": "'''Pripomienka:''' Neposkytli ste zhrnutie úprav. Ak kliknete znova na Uložiť, vaše úpravy sa uložia bez zhrnutia úprav.",
-       "selfredirect": "<strong>Upozornenie:</strong> Snažíte sa túto stránku presmerovať samú na seba.\nMožno ste zadali chybný cieľ presmerovania, alebo editujete nesprávnu stránku.\nAk znova kliknete na „{{int:savearticle}}“, bude presmerovanie aj napriek tomu vytvorené.",
+       "selfredirect": "<strong>Upozornenie:</strong> Snažíte sa túto stránku presmerovať samú na seba.\nMožno ste zadali chybný cieľ presmerovania, alebo editujete nesprávnu stránku.\nAk znova kliknete na „$1“, bude presmerovanie aj napriek tomu vytvorené.",
        "missingcommenttext": "Prosím, dolu napíšte komentár.",
-       "missingcommentheader": "<strong>Pripomienka:</strong> Neposkytli ste predmet/hlavičku tohto komentára.\nAk znova kliknete na tlačidlo „{{int:savearticle}}“, vaša úprava sa uloží bez nej.",
+       "missingcommentheader": "<strong>Pripomienka:</strong> Neposkytli ste predmet/hlavičku tohto komentára.\nAk znova kliknete na tlačidlo „$1“, vaša úprava sa uloží bez nej.",
        "summary-preview": "Náhľad zhrnutia:",
        "subject-preview": "Náhľad predmetu:",
        "previewerrortext": "Pri pokuse o zobrazenie náhľadu došlo k chybe.",
        "editingsection": "Úprava stránky $1 (sekcia)",
        "editingcomment": "Úprava stránky $1 (nová sekcia)",
        "editconflict": "Konflikt pri úprave: $1",
-       "explainconflict": "Niekto iný zmenil túto stránku, zatiaľ čo ste ju upravovali vy.\nHorné okno na úpravy obsahuje text stránky tak, ako je momentálne platný.\nVaše úpravy sú uvedené v dolnom okne na úpravy.\nBudete musieť zlúčiť vaše zmeny s existujúcim textom.\n'''Iba''' obsah horného okna sa uloží, keď stlačíte „{{int:savearticle}}“.",
+       "explainconflict": "Niekto iný zmenil túto stránku, zatiaľ čo ste ju upravovali vy.\nHorné okno na úpravy obsahuje text stránky tak, ako je momentálne platný.\nVaše úpravy sú uvedené v dolnom okne na úpravy.\nBudete musieť zlúčiť vaše zmeny s existujúcim textom.\n'''Iba''' obsah horného okna sa uloží, keď stlačíte „$1“.",
        "yourtext": "Váš text",
        "storedversion": "Uložená verzia",
        "nonunicodebrowser": "<strong>UPOZORNENIE: Váš prehliadač nepodporuje Unicode.</strong>\nDočasným riešením ako bezpečne upravovať stránky je, že ne-ASCII znaky sa v upravovacom textovom poli zobrazia ako zodpovedajúce hexadecimálne hodnoty.",
        "right-editsemiprotected": "Upravovať stránky zamknuté ako „{{int:protect-level-autoconfirmed}}“",
        "right-editcontentmodel": "Upravovať model obsahu stránky",
        "right-editinterface": "Upravovať správy používateľského rozhrania",
-       "right-editusercssjs": "Upravovať CSS a JS súbory ostatných používateľov",
        "right-editusercss": "Upravovať CSS súbory ostatných používateľov",
        "right-edituserjs": "Upravovať JS súbory ostatných používateľov",
        "right-editmyusercss": "Upraviť svoje vlastné používateľské súbory CSS",
        "rcshowhidecategorization": "$1 kategorizáciu",
        "rcshowhidecategorization-show": "Zobraziť",
        "rcshowhidecategorization-hide": "Skryť",
-       "rclinks": "Zobraziť posledných $1 úprav za posledných $2 dní<br />$3",
+       "rclinks": "Zobraziť posledných $1 úprav za posledných $2 dní",
        "diff": "rozdiel",
        "hist": "história",
        "hide": "Skryť",
        "undeleteviewlink": "zobraziť",
        "undeleteinvert": "Invertovať výber",
        "undeletecomment": "Dôvod:",
-       "undeletedrevisions": "{{PLURAL:$1|jedna verzia bola obnovená|$1 verzie boli obnovené|$1 verzií bolo obnovených}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|Jedna revízia|$1 revízie|$1 revízií}} a {{PLURAL:$2|jeden súbor bol obnovený|$2 súbory boli obnovené|$2 súborov bolo obnovených}}",
-       "undeletedfiles": "{{PLURAL:$1|Jeden súbor bol obnovený|$1 súbory boli obnovené|$1 súborov bolo obnovených}}",
        "cannotundelete": "Časť alebo celé obnovenie sa nepodarilo:\n$1",
        "undeletedpage": "'''$1 bol obnovený'''\n\nZoznam posledných mazaní a obnovení nájdete v [[Special:Log/delete|Zázname mazaní]].",
        "undelete-header": "Pozri nedávno zmazané stránky v [[Special:Log/delete|zázname mazaní]].",
        "confirm-rollback-button": "OK",
        "confirm-rollback-top": "Vrátiť úpravy na tejto stránke?",
        "quotation-marks": "„$1“",
-       "imgmultipageprev": "&larr; predošlá stránka",
-       "imgmultipagenext": "ďalšia stránka &rarr;",
+       "imgmultipageprev": " predošlá stránka",
+       "imgmultipagenext": "ďalšia stránka ",
        "imgmultigo": "Vykonať",
        "imgmultigoto": "Prejsť na stránku $1",
        "img-lang-default": "(predvolený jazyk)",
        "mw-widgets-mediasearch-noresults": "Neboli nájdené žiadne výsledky.",
        "mw-widgets-titleinput-description-new-page": "stránka zatiaľ neexistuje",
        "mw-widgets-titleinput-description-redirect": "presmerovanie na $1",
+       "date-range-from": "Od dátumu:",
+       "date-range-to": "Po dátum:",
        "randomrootpage": "Náhodná koreňová stránka",
        "changecredentials": "Zmena prihlasovacích údajov",
        "removecredentials": "Odstránenie prihlasovacích údajov"
index 28d8ef2..217f318 100644 (file)
        "anontalk": "Pogovorna stran",
        "navigation": "Navigacija",
        "and": "&#32;in",
-       "qbfind": "Poišči",
-       "qbbrowse": "Prebrskaj",
-       "qbedit": "Uredi",
-       "qbpageoptions": "Možnosti strani",
-       "qbmyoptions": "Moje strani",
        "faq": "Najpogostejša vprašanja",
-       "faqpage": "Project:Najpogostejša vprašanja",
        "actions": "Dejanja",
        "namespaces": "Imenski prostori",
        "variants": "Različice",
        "edit-local": "Uredi lokalni opis",
        "create": "Ustvari",
        "create-local": "Dodaj lokalni opis",
-       "editthispage": "Uredi stran",
-       "create-this-page": "Ustvari stran",
        "delete": "Briši",
-       "deletethispage": "Briši stran",
-       "undeletethispage": "Obnovi stran",
        "undelete_short": "Vrni $1 {{PLURAL:$1|izbrisano urejanje|izbrisani urejanji|izbrisana urejanja|izbrisanih urejanj|izbrisanih urejanj}}",
        "viewdeleted_short": "Ogled {{PLURAL:$1|enega izbrisanega urejanja|$1 izbrisanih urejanj}}",
        "protect": "Zaščiti",
        "protect_change": "spremeni zaščito",
-       "protectthispage": "Zaščiti stran",
        "unprotect": "Spremeni zaščito",
-       "unprotectthispage": "Spremeni zaščito strani",
        "newpage": "Nova stran",
-       "talkpage": "Pogovorite se o strani",
        "talkpagelinktext": "pogovor",
        "specialpage": "Posebna stran",
        "personaltools": "Osebna orodja",
-       "articlepage": "Prikaže članek",
        "talk": "Pogovor",
        "views": "Pogled",
        "toolbox": "Orodja",
        "tool-link-userrights": "Spremeni {{GENDER:$1|uporabnikove|uporabničine}} skupine",
        "tool-link-userrights-readonly": "Ogled {{GENDER:$1|uporabnikovih|uporabničinih}} skupin",
        "tool-link-emailuser": "Pošlji e-pošto {{GENDER:$1|uporabniku|uporabnici}}",
-       "userpage": "Prikaži uporabnikovo stran",
-       "projectpage": "Prikaži projektno stran",
        "imagepage": "Pokaži stran z datoteko",
        "mediawikipage": "Poglej stran s sporočilom",
        "templatepage": "Poglej stran s predlogo",
        "redirectedfrom": "(Preusmerjeno s strani $1)",
        "redirectpagesub": "Preusmeritvena stran",
        "redirectto": "Preusmeritev na:",
-       "lastmodifiedat": "Čas zadnje spremembe: $2, $1.",
+       "lastmodifiedat": "Čas zadnje spremembe strani: $2, $1.",
        "viewcount": "Stran je bila naložena {{PLURAL:$1|$1-krat}}.",
        "protectedpage": "Zaščitena stran",
        "jumpto": "Skoči na:",
        "preview": "Predogled",
        "showpreview": "Prikaži predogled",
        "showdiff": "Prikaži spremembe",
-       "blankarticle": "<strong>Opozorilo:</strong> Stran, ki jo ustvarjate, je prazna.\nČe ponovno kliknete »{{int:savearticle}}«, bomo stran ustvarili brez kakršnekoli vsebine.",
+       "blankarticle": "<strong>Opozorilo:</strong> Stran, ki jo ustvarjate, je prazna.\nČe ponovno kliknete »$1«, bomo stran ustvarili brez kakršne koli vsebine.",
        "anoneditwarning": "<strong>Opozorilo:</strong> Niste prijavljeni. Vaš IP-naslov bo javno viden, če naredite kakršnokoli urejanje. Če se <strong>[$1 prijavite]</strong> ali <strong>[$2 ustvarite račun]</strong>, bodo vaša urejanja pripisana vašemu uporabniškemu imenu skupaj z drugimi prednostmi.",
        "anonpreviewwarning": "Niste prijavljeni. Ob spremembi strani se bo vaš IP-naslov zapisal v zgodovini urejanja te strani.",
        "missingsummary": "'''Opozorilo:''' Niste napisali povzetka urejanja. Ob ponovnem kliku gumba ''Shrani'' se bo vaše urejanje shranilo brez njega.",
-       "selfredirect": "<strong>Opozorilo:</strong> Stran preusmerjate na samo nase.\nMorda ste za cilj preusmeritve navedli napačno stran ali pa morda urejate napačno stran.\nČe ponovno kliknete »{{int:savearticle}}«, bomo preusmeritev vseeno ustvarili.",
+       "selfredirect": "<strong>Opozorilo:</strong> Stran preusmerjate na samo nase.\nMorda ste za cilj preusmeritve navedli napačno stran ali pa morda urejate napačno stran.\nČe ponovno kliknete »$1«, bomo preusmeritev vseeno ustvarili.",
        "missingcommenttext": "Prosimo, vpišite v spodnje polje komentar.",
-       "missingcommentheader": "<strong>Opozorilo:</strong> Niste vnesli zadeve za ta komentar.\nČe boste ponovno kliknili »{{int:savearticle}}«, bo vaše urejanje shranjeno brez nje.",
+       "missingcommentheader": "<strong>Opozorilo:</strong> Niste vnesli zadeve za ta komentar.\nČe boste ponovno kliknili »$1«, bo vaše urejanje shranjeno brez nje.",
        "summary-preview": "Predogled povzetka urejanja:",
        "subject-preview": "Predogled zadeve:",
        "previewerrortext": "Med poskusom prikaza predogleda vaših sprememb je prišlo do napake.",
        "editingsection": "Urejanje $1 (razdelek)",
        "editingcomment": "Urejanje $1 (nov razdelek)",
        "editconflict": "Navzkrižje urejanj: $1",
-       "explainconflict": "Med vašim urejanjem je stran spremenil nekdo drug.\nZgornje urejevalno polje vsebuje njeno trenutno vsebino.\nVaše spremembe so prikazane v spodnjem polju, ki jih boste morali združiti z obstoječim besedilom.\n'''Samo''' besedilo v zgornjem polju bo shranjeno, ko boste izbrali ukaz »{{int:savearticle}}«.",
+       "explainconflict": "Med vašim urejanjem je stran spremenil nekdo drug.\nZgornje urejevalno polje vsebuje njeno trenutno vsebino.\nVaše spremembe so prikazane v spodnjem polju, ki jih boste morali združiti z obstoječim besedilom.\n'''Samo''' besedilo v zgornjem polju bo shranjeno, ko boste izbrali ukaz »$1«.",
        "yourtext": "Vaše besedilo",
        "storedversion": "Shranjena redakcija",
        "nonunicodebrowser": "'''Opozorilo: Vaš brskalnik ne podpira Unicode.'''\nZa obhod te težave se bodo ne-ASCII-znaki v urejevalnem polju spodaj pojavili kot šestnajstiške kode.",
        "search-file-match": "(ujema se z vsebino datoteke)",
        "search-suggest": "Iščete morda: $1",
        "search-rewritten": "Prikazujemo rezultate za $1. Namesto tega poiščite $2.",
-       "search-interwiki-caption": "Sorodni projekti",
+       "search-interwiki-caption": "Rezultati s sorodnih projektov",
        "search-interwiki-default": "Rezultati s strani $1:",
        "search-interwiki-more": "(več)",
        "search-interwiki-more-results": "več zadetkov",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (glej tudi [[Special:NewPages|seznam novih strani]])",
        "recentchanges-submit": "Prikaži",
        "rcfilters-activefilters": "Dejavni filtri",
+       "rcfilters-quickfilters": "Nastavitve shranjenega filtra",
+       "rcfilters-quickfilters-placeholder-title": "Shranjena ni še nobena povezava",
+       "rcfilters-quickfilters-placeholder-description": "Da shranite svoje nastavitve filtrov in jih ponovno uporabite pozneje, kliknite na ikono za zaznamek v območju Dejavni filtri spodaj.",
+       "rcfilters-savedqueries-defaultlabel": "Shranjeni filtri",
+       "rcfilters-savedqueries-rename": "Preimenuj",
+       "rcfilters-savedqueries-setdefault": "Nastavi kot privzeto",
+       "rcfilters-savedqueries-unsetdefault": "Odstrani kot privzeto",
+       "rcfilters-savedqueries-remove": "Odstrani",
+       "rcfilters-savedqueries-new-name-label": "Ime",
+       "rcfilters-savedqueries-apply-label": "Shrani nastavitve",
+       "rcfilters-savedqueries-cancel-label": "Prekliči",
+       "rcfilters-savedqueries-add-new-title": "Shrani nastavitve trenutnega filtra",
        "rcfilters-restore-default-filters": "Obnovi privzete filtre",
        "rcfilters-clear-all-filters": "Počisti vse filtre",
        "rcfilters-search-placeholder": "Zadnje spremembe filtrov (prebrskajte ali začnite vnašati)",
        "rcfilters-filter-unregistered-label": "Neregistriran",
        "rcfilters-filter-unregistered-description": "Uredniki, ki niso prijavljeni.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Filter je v sporu z {{PLURAL:$2|naslednjim filtrom|naslednjima filtroma|naslednjimi filtri}} Izkušnje, ki {{PLURAL:$2|najde|najdeta|najdejo}} samo registrirane uporabnike: $1",
-       "rcfilters-filtergroup-authorship": "Uredi avtorstvo",
-       "rcfilters-filter-editsbyself-label": "Vaša lastna urejanja",
-       "rcfilters-filter-editsbyself-description": "Vaša urejanja.",
-       "rcfilters-filter-editsbyother-label": "Urejanja drugih",
-       "rcfilters-filter-editsbyother-description": "Urejanja, ki so jih naredili drugi uporabniki (ne vi).",
+       "rcfilters-filtergroup-authorship": "Avtorstvo prispevka",
+       "rcfilters-filter-editsbyself-label": "Vaše spremembe",
+       "rcfilters-filter-editsbyself-description": "Vaša lastna urejanja.",
+       "rcfilters-filter-editsbyother-label": "Spremembe drugih",
+       "rcfilters-filter-editsbyother-description": "Vse spremembe razen vaše.",
        "rcfilters-filtergroup-userExpLevel": "Stopnja izkušenosti (samo za registrirane uporabnike)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Napredni filtri najdejo samo registrirane uporabnike, zato je ta filter v sporu s filtrom »Neregistrirani«.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filter »Neregistrirani« je v sporu z enim ali več filtri Izkušnje, ki najdejo samo registrirane uporabnike. Filtri v sporu so označeni zgoraj, v območju Dejavni filtri.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Novinci",
        "rcfilters-filter-user-experience-level-newcomer-description": "Manj kot 10 urejanj in 4 dni dejavnosti.",
        "rcfilters-filter-user-experience-level-learner-label": "Učenci",
-       "rcfilters-filter-user-experience-level-learner-description": "Več dni dejavnosti in urejanj kot »Novinci«, vendar manj kot »Izkušeni uporabniki«.",
+       "rcfilters-filter-user-experience-level-learner-description": "Več izkušenj kot »Novinci«, vendar manj kot »Izkušeni uporabniki«.",
        "rcfilters-filter-user-experience-level-experienced-label": "Izkušeni uporabniki",
        "rcfilters-filter-user-experience-level-experienced-description": "Več kot 30 dni dejavnosti in 500 urejanj.",
        "rcfilters-filtergroup-automated": "Samodejni prispevki",
        "rcfilters-filter-minor-description": "Urejanja, ki jih je avtor označil kot manjša.",
        "rcfilters-filter-major-label": "Nemanjša urejanja",
        "rcfilters-filter-major-description": "Urejanja, ki niso označena kot manjša.",
+       "rcfilters-filtergroup-watchlist": "Nadzorovane strani",
+       "rcfilters-filter-watchlist-watched-label": "Na spisku nadzorov",
+       "rcfilters-filter-watchlist-watched-description": "Spremembe strani na vašems spisku nadzorov.",
+       "rcfilters-filter-watchlist-watchednew-label": "Nove spremembe nadzorovanih strani",
+       "rcfilters-filter-watchlist-watchednew-description": "Spremembe nadzorovanih strani, ki jih niste obiskali, odkar je prišlo do sprememb.",
+       "rcfilters-filter-watchlist-notwatched-label": "Ni na spisku nadzorov",
+       "rcfilters-filter-watchlist-notwatched-description": "Vse razen spremembe strani na vašem spisku nadzorov.",
        "rcfilters-filtergroup-changetype": "Vrsta spremembe",
        "rcfilters-filter-pageedits-label": "Urejanja strani",
-       "rcfilters-filter-pageedits-description": "Urejanja vsebine wikija, razprave, opisi kategorij ...",
+       "rcfilters-filter-pageedits-description": "Urejanja vsebine wikija, razprav, opisov kategorij ...",
        "rcfilters-filter-newpages-label": "Ustvarjanja strani",
        "rcfilters-filter-newpages-description": "Urejanja, ki ustvarijo nove strani.",
        "rcfilters-filter-categorization-label": "Spremembe kategorij",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Filter »Manjša urejanja« je v sporu z enim ali več filtri Vrsta spremembe, ker nekaterih vrst urejanj ni možno označiti kot »manjša«. Filtri v sporu so označeni v območju Dejavni filtri zgoraj.",
        "rcfilters-hideminor-conflicts-typeofchange": "Nekaterih vrst sprememb ni možno označiti kot »manjše«, zato je ta filter v sporu z naslednjimi filtri Vrsta spremembe: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Ta filter Vrsta spremembe je v sporu s filtrom »Manjše urejanje«. Nekaterih vrst sprememb ni možno označiti kot »manjše«.",
+       "rcfilters-filtergroup-lastRevision": "Zadnja redakcija",
+       "rcfilters-filter-lastrevision-label": "Zadnja redakcija",
+       "rcfilters-filter-lastrevision-description": "Najnovejša sprememba strani.",
+       "rcfilters-filter-previousrevision-label": "Zgodnejše redakcije",
+       "rcfilters-filter-previousrevision-description": "Vse spremembe, ki niso najnovejša sprememba strani.",
+       "rcfilters-filter-excluded": "Izključeno",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:ne</strong> $1",
+       "rcfilters-view-tags": "Oznake",
        "rcnotefrom": "{{PLURAL:$5|Navedena je sprememba|Navedeni sta spremembi|Navedene so spremembe}} od <strong>$3 $4</strong> dalje (prikazujem jih do <strong>$1</strong>).",
        "rclistfromreset": "Ponastavi izbiro datuma",
        "rclistfrom": "Prikaži spremembe od $3 $2 naprej",
        "rcshowhidecategorization": "$1 kategorizacijo strani",
        "rcshowhidecategorization-show": "Prikaži",
        "rcshowhidecategorization-hide": "Skrij",
-       "rclinks": "Prikaži zadnjih $1 sprememb v zadnjih $2 dneh<br />$3",
+       "rclinks": "Prikaži zadnjih $1 sprememb v zadnjih $2 dneh",
        "diff": "prim",
        "hist": "zgod",
        "hide": "skrij",
        "enotif_body_intro_moved": "{{GENDER:$2|uporabnik|uporabnica}} $2 je dne $PAGEEDITDATE {{GENDER:$2|spremenil|spremenila}} stran $1 v {{GRAMMAR:dajalnik|{{SITENAME}}}}; za trenutno redakcijo glejte $3.",
        "enotif_body_intro_restored": "{{GENDER:$2|uporabnik|uporabnica}} $2 je dne $PAGEEDITDATE {{GENDER:$2|obnovil|obnovila}} stran $1 v {{GRAMMAR:dajalnik|{{SITENAME}}}}; za trenutno redakcijo glejte $3.",
        "enotif_body_intro_changed": "{{GENDER:$2|uporabnik|uporabnica}} $2 je dne $PAGEEDITDATE {{GENDER:$2|spremenil|spremenila}} stran $1 v {{GRAMMAR:dajalnik|{{SITENAME}}}}; za trenutno redakcijo glejte $3.",
-       "enotif_lastvisited": "Za spremembe po vašem zadnjem obisku glejte $1.",
+       "enotif_lastvisited": "Za vse spremembe po vašem zadnjem obisku si oglejte $1.",
        "enotif_lastdiff": "Glej $1 za to spremembo.",
        "enotif_anon_editor": "brezimni uporabnik $1",
        "enotif_body": "$WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nUrejevalčev povzetek: $PAGESUMMARY $PAGEMINOREDIT\n\nNavežite stik z urejevalcem:\ne-pošta: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nMedtem ko ste prijavljeni, nadaljnjih obvestil ne boste prejemali. Na spisku nadzorov lahko tudi ponastavite zastavice obveščanj za vse spremljane strani.\n\nVaš opozorilni sistem {{GRAMMAR:rodilnik|{{SITENAME}}}}\n\n--\nZa spremembo nastavitev e-poštnih obvestil obiščite\n{{canonicalurl:{{#special:Preferences}}}}\n\nZa spremembo nastavitev spiska nadzorov obiščite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nZa odstranitev strani z vašega spiska nadzorov obiščite\n$UNWATCHURL\n\nPovratna sporočila in pomoč:\n$HELPPAGE",
        "sp-contributions-uploads": "naložene datoteke",
        "sp-contributions-logs": "dnevniki",
        "sp-contributions-talk": "pogovor",
-       "sp-contributions-userrights": "upravljanje s pravicami uporabnikov",
+       "sp-contributions-userrights": "upravljanje s pravicami {{GENDER:$1|uporabnika|uporabnice}}",
        "sp-contributions-blocked-notice": "Ta uporabnik je trenutno blokiran.\nNajnovejši vnos v dnevniku blokad je naveden spodaj:",
        "sp-contributions-blocked-notice-anon": "Ta IP-naslov je trenutno blokiran.\nNajnovejši vnos v dnevniku blokad je naveden spodaj:",
        "sp-contributions-search": "Išči prispevke",
        "autoblocklist-submit": "Išči",
        "autoblocklist-legend": "Seznam samodejnih blokad",
        "autoblocklist-localblocks": "{{PLURAL:$1|Lokalna samodejna blokada|Lokalni samodejni blokadi|Lokalne samodejne blokade}}",
+       "autoblocklist-total-autoblocks": "Skupno število samodejnih blokad: $1",
        "autoblocklist-empty": "Seznam samodejnih blokad je prazen.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Druga samodejna blokada|Drugi samodejni blokadi|Druge samodejne blokade}}",
        "ipblocklist": "Blokirani uporabniki",
        "tooltip-pt-mycontris": "Seznam {{GENDER:|tvojih}} prispevkov",
        "tooltip-pt-anoncontribs": "Seznam urejanj s tega IP-naslova",
        "tooltip-pt-login": "Prijava ni obvezna, vendar je zaželena",
+       "tooltip-pt-login-private": "Da lahko uporabljate ta wiki, se morate prijaviti",
        "tooltip-pt-logout": "Odjavi se",
        "tooltip-pt-createaccount": "Predlagamo vam, da ustvarite račun in se prijavite, vendar pa to ni obvezno.",
        "tooltip-ca-talk": "Pogovor o strani",
        "anonymous": "{{PLURAL:$1|Brezimni uporabnik|Brezimna uporabnika|Brezimni uporabniki}} {{GRAMMAR:rodilnik|{{SITENAME}}}}",
        "siteuser": "uporabnik {{GRAMMAR:rodilnik|{{SITENAME}}}} $1",
        "anonuser": "Brezimni uporabnik {{GRAMMAR:rodilnik|{{SITENAME}}}} $1",
-       "lastmodifiedatby": "Stran je zadnjič urejal(-a) $3 (čas spremembe: $2, $1).",
+       "lastmodifiedatby": "Stran je zadnjič urejal(-a) $3 dne $2 ob $1.",
        "othercontribs": "Temelji na delu $1.",
        "others": "drugi",
        "siteusers": "{{PLURAL:$2|{{GENDER:$1|uporabnika|uporabnice}}|uporabnikov}} {{GRAMMAR:rodilnik|{{SITENAME}}}} $1",
        "newimages-legend": "Filter",
        "newimages-label": "Ime datoteke (ali njen del):",
        "newimages-user": "IP-naslov ali uporabniško ime",
+       "newimages-newbies": "Prikaži samo prispevke novih računov",
        "newimages-showbots": "Prikaži nalaganja botov",
        "newimages-hidepatrolled": "Skrij nadzorovana nalaganja",
+       "newimages-mediatype": "Vrsta predstavnosti:",
        "noimages": "Nič ni videti.",
        "gallery-slideshow-toggle": "Preklopi sličice",
        "ilsubmit": "Išči",
        "tags-create-reason": "Razlog:",
        "tags-create-submit": "Ustvari",
        "tags-create-no-name": "Določiti morate ime oznake.",
-       "tags-create-invalid-chars": "Imena oznak ne smejo vsebovati vejic (<code>,</code>) ali desnih poševnic (<code>/</code>).",
+       "tags-create-invalid-chars": "Imena oznak ne smejo vsebovati vejic (<code>,</code>), navpičnic (<code>|</code>) ali desnih poševnic (<code>/</code>).",
        "tags-create-invalid-title-chars": "Imena oznak ne smejo vsebovati znakov, ki jih ni mogoče uporabiti v naslovih strani.",
        "tags-create-already-exists": "Oznaka »$1« že obstaja.",
        "tags-create-warnings-above": "Pri poskusu ustvarjanja oznake »$1« smo naleteli na {{PLURAL:$2|naslednje opozorilo|naslednji opozorili|naslednja opozorila}}:",
        "mw-widgets-titleinput-description-redirect": "preusmeritev na $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Dodaj kategorijo ...",
        "mw-widgets-usersmultiselect-placeholder": "Dodaj več ...",
+       "date-range-from": "Od datuma:",
+       "date-range-to": "Do datuma:",
        "sessionmanager-tie": "Ne morem združiti več vrst overitvenih zahtev: $1.",
        "sessionprovider-generic": "sej $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sej, ki temeljijo na piškotkih",
        "rawhtml-notallowed": "Oznak &lt;html&gt; ni možno uporabljati izven normalnih strani.",
        "gotointerwiki": "Zapuščate {{GRAMMAR:tožilnik|{{SITENAME}}}}",
        "gotointerwiki-invalid": "Naveden naslov je neveljaven.",
-       "gotointerwiki-external": "Zapuščate {{GRAMMAR:tožilnik|{{SITENAME}}}}, da obiščete [[$2]], ki je ločena spletna stran.\n\n[$1 Kliknite tukaj, da nadaljujete na $1].",
+       "gotointerwiki-external": "Zapuščate {{GRAMMAR:tožilnik|{{SITENAME}}}}, da obiščete [[$2]], ki je ločena spletna stran.\n\n'''[$1 Nadaljujte na $1]'''",
        "undelete-cantedit": "Strani ne morete obnoviti, saj vam ni dovoljeno, da jo urejate.",
-       "undelete-cantcreate": "Strani ne morete obnoviti, saj stran s tem imenom ne obstaja in je nimate dovoljenja ustvariti."
+       "undelete-cantcreate": "Strani ne morete obnoviti, saj stran s tem imenom ne obstaja in je nimate dovoljenja ustvariti.",
+       "pagedata-title": "Podatki strani",
+       "pagedata-text": "Ta stran nudi podatkovni vmesnik do strani. Prosimo, navedite naslov strani v URL-ju z uporabo skladnje podstrani.\n* Pogajanje o vsebini se nanaša na glavo Accept vašega odjemalca. To pomeni, da bomo podatke strani posredovali v obliki, ki vašemu odjemalcu bolj ustreza.",
+       "pagedata-not-acceptable": "Nismo našli ujemajoče oblike. Podprte vrste MIME: $1",
+       "pagedata-bad-title": "Neveljaven naslov: $1."
 }
index 5e04c16..5b90dc8 100644 (file)
        "externaldberror": "Entweder is leit a Fahler bei der externa Authentifizierung vur, oder du darfst dei externes Benutzerkonto ne aktualisiera.",
        "login": "Oanmelda",
        "nav-login-createaccount": "Oamelda / a Konto oalega",
-       "userlogin": "Oanmelda / Nutzerkonto erstella",
        "logout": "Oabmelda",
        "userlogout": "Oabmelda",
        "notloggedin": "Nä oangemeldet",
-       "nologin": "Du hast keen Benutzerkonto? $1.",
-       "nologinlink": "Neues Benutzerkonto oanleega",
        "createaccount": "Benutzerkonto oanlega",
-       "gotaccount": "Du hast bereits a Benutzerkonto? '''$1'''.",
-       "gotaccountlink": "Oanmelda",
-       "userlogin-resetlink": "Die Anmeldedaten vergessen?",
        "createaccountmail": "ieber E-Mail",
        "badretype": "De beida Passwörter stimma nä ieberein.",
        "userexists": "Dar delle Benutzernoame ies schunt vergahn. Bitte wähle enn andern.",
        "editingsection": "Bearbta vu $1 (Obschnitt)",
        "editingcomment": "Bearbta vu $1 (Neuer Obschnitt)",
        "editconflict": "Beoarbeetungskonflikt: $1",
-       "explainconflict": "Jemand anders hoot diese Seite geändert, noachdem du oagefanga host diese zu bearbta.\nDoas obere Textfeld enthält dann aktuellen Stand.\nDoas undere Textfeld enthält denne Änderunga.\nBitte fiege denne Änderungen ei doas obere Textfeld a.\n'''Ock''' der Inhalt des oberen Textfeldes werd gespeichert, wenn du uff „{{int:savearticle}}“ klickst!",
+       "explainconflict": "Jemand anders hoot diese Seite geändert, noachdem du oagefanga host diese zu bearbta.\nDoas obere Textfeld enthält dann aktuellen Stand.\nDoas undere Textfeld enthält denne Änderunga.\nBitte fiege denne Änderungen ei doas obere Textfeld a.\n'''Ock''' der Inhalt des oberen Textfeldes werd gespeichert, wenn du uff „$1“ klickst!",
        "yourtext": "Deen Text",
        "nonunicodebrowser": "'''Ochtiche:''' Dei Browser koan Unicode-Zeicha ne richtig verarbta. Bitte verwende anna andern Browser im Seita zu bearbta.",
        "editingold": "'''OCHTICHE: Du beoarbeetest anne aale Version dieser Seite. Wenn du speicherst, waan olle neueren Versionen ieberschrieba.'''",
        "saveprefs": "Eenstallunga speichern",
        "restoreprefs": "Olle Standardeinstallunga wiederherstalla",
        "prefs-editing": "Bearbta",
-       "rows": "Zeila:",
-       "columns": "Spalta:",
        "stub-threshold": "Linkformatierung <a href=\"#\" class=\"stub\">klenner Seyta</a> (ei Byte):",
        "recentchangesdays": "Oazoahl dar Tage, de de Liste dar „Letzta Änderunga“ standardmäßig imfassa sull:",
        "recentchangescount": "Oazoahl dar standardmäßig oagezeigta Beoarbeetunga:",
        "userrights-groups-help": "Du koast de Gruppenzugehierigkeit fier diesen Nutzer ändern:\n* A markiertes Kästchen bedeutet, doaß dar Nutzer Mitglied dieser Gruppe ies\n* A * bedeutet, doaß du doas Nutzerrecht noach Erteilung ne wieder zerrickenahma koast (oder umgekehrt).",
        "userrights-no-interwiki": "Du host kenne Berechtigung, Nutzerrechte ei andern Wikis zu ändern.",
        "userrights-nodatabase": "De Datenbank $1 ies ne vurhanda oder ne lokal.",
-       "userrights-nologin": "Du mußt diech miet a'm Administrator-Nutzerkonto [[Special:UserLogin|oamelda]], im Nutzerrechte zu ändern.",
-       "userrights-notallowed": "Du besitzt ne de erforderlichen Berechtigunga, im Nutzerrechte zu vergahn.",
        "userrights-changeable-col": "Gruppazugehierigkeit, de du ändern koast",
        "userrights-unchangeable-col": "Gruppazugehierigkeit, de du ne ändern koast",
        "group-sysop": "Administratora",
        "right-protect": "Seytaschutzstatus ändern",
        "right-editprotected": "Geschitzte Seita bearbta (ohne Kaskadenschutz)",
        "right-editinterface": "Nutzeräberfläche bearbta",
-       "right-editusercssjs": "Fremde CSS- und JavaScript-Dateien bearbta",
        "right-editusercss": "Fremde CSS-Dateien bearbta",
        "right-edituserjs": "Fremde JavaScript-Dateien bearbta",
        "right-rollback": "Schnelles zerrickesetza",
        "rcshowhideanons": "Unangemeldete Benutzer $1",
        "rcshowhidepatr": "Kontrollierte Änderunga $1",
        "rcshowhidemine": "Eegene Beiträge $1",
-       "rclinks": "Zeige de letzta $1 Änneronga dar letzta $2 Taage.<br />$3",
+       "rclinks": "Zeige de letzta $1 Änneronga dar letzta $2 Taage.",
        "diff": "Unt.",
        "hist": "Versiona",
        "hide": "ausblenda",
        "undeleteviewlink": "oasahn",
        "undeleteinvert": "Auswoahl umkehra",
        "undeletecomment": "Begrindung:",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 Version|$1 Versionen}} und {{PLURAL:$2|1 Datei|$2 Dateien}} wurden wiederhergestallt",
        "cannotundelete": "Wiederherstellung fehlgeschlaga; jemand anderes hoot de Seite bereits wiederhergestellt.",
        "undelete-header": "Siehe eim [[Special:Log/delete|Läsch-Logbuch]] noach kierzlich geläschta Seyta.",
        "undelete-search-box": "Noach geläschta Seita sucha",
        "htmlform-reset": "Änderunga rickgängig macha",
        "htmlform-selectorother-other": "Ondere",
        "revdelete-restricted": "Einschränkungen gelten au fier Administratorn",
-       "revdelete-unrestricted": "Einschränkungen fier Administratorn uffgehobn",
-       "revdelete-summary": "Zusommafoassungskommentar"
+       "revdelete-unrestricted": "Einschränkungen fier Administratorn uffgehobn"
 }
index 4d477e9..4095fc8 100644 (file)
        "rcshowhideanons": "$1 anonyyme nuhtjienh",
        "rcshowhidepatr": "$1 dååhkasjehtedh värrhtoedimmieh",
        "rcshowhidemine": "$1 mov värrhtoedimmieh",
-       "rclinks": "Vuesehte männgan $1 värrhtoedimmieh nuelesne männgan $2 biejjieh<br />$3",
+       "rclinks": "Vuesehte männgan $1 värrhtoedimmieh nuelesne männgan $2 biejjieh",
        "diff": "joekehts",
        "hist": "hist",
        "hide": "Gaptjedh",
index 6df0bf4..7d94fa6 100644 (file)
@@ -13,6 +13,7 @@
        "tog-hideminor": "Qari bedelada yar ee isbedelada dhow",
        "tog-hidepatrolled": "Qari wax bedelkii ugu danbeeyay oo la waardiyeeyay",
        "tog-newpageshidepatrolled": "Ka qari maqaalada la waardiyeeyay maqaalada kale ee cusub",
+       "tog-hidecategorization": "Qari qeybinla bogagga",
        "tog-extendwatchlist": "Balaari liiska waardiyaha si loo arko dhamaan isbedelada, ma ahan oo kaliya kuwa dhow",
        "tog-usenewrc": "Isticmaal isbdelada dhowdhow oo la'horumariyey (waxaa loo baahanyahay JavaScript)",
        "tog-numberheadings": "Lambarada automaatik ahaan u tirinaayo Cinwaanada",
        "password-change-forbidden": "Ma badali kartid Eraysir ee wiki.",
        "login": "Gudaha gal",
        "nav-login-createaccount": "Gudaha gal / sameyso akoon",
-       "userlogin": "Gudaha gal / sameyso akoon",
-       "userloginnocreate": "Gudaha gal",
        "logout": "Ka bax",
        "userlogout": "Ka bax",
        "notloggedin": "Gudaha kuma jirtid",
        "userlogin-noaccount": "Akoon ma lihid?",
        "userlogin-joinproject": "Ku biir {{SITENAME}}",
-       "nologin": "Akoon ma lihid? $1.",
-       "nologinlink": "Akoon sameyso",
        "createaccount": "Sameey gudagale",
-       "gotaccount": "Waan heystaa gudagale? '''$1'''.",
-       "gotaccountlink": "Gudaha gal",
-       "userlogin-resetlink": "Ma ilaawday tafaasiisha gudagalahaada?",
        "userlogin-resetpassword-link": "Dib usoo cesho erey sirtaada",
        "userlogin-helplink2": "Caawinaad habka gudagalka",
        "createacct-emailoptional": "Ciwaanka e-mail-ka (dooqasho)",
        "createacct-email-ph": "Gali Ciwaankaada e-mail-ka",
        "createaccountmail": "E-mail ahaan",
-       "createaccountreason": "Sababta:",
        "createacct-submit": "Sameeyso akoonkaada",
        "createacct-benefit-heading": "Bogga {{SITENAME}} waxaa sameeyey dad kula mid ah.",
        "createacct-benefit-body1": "{{PLURAL:$1|bedel|bedelaadyo}}",
        "recentchanges-label-plusminus": "Qaadka bogga wuxuu ku bedelmay tirada halbeega baytka",
        "recentchanges-legend-heading": "<strong>Sharaxaad:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (sidoo kale eeg [[Special:NewPages|liiska bogagga cusub]])",
+       "rcfilters-activefilters": "Shaandhayn firfircoon",
+       "rcfilters-clear-all-filters": "Tirtir dhammaan shaandhada",
+       "rcfilters-search-placeholder": "Shaandhee isbeddellada ugu cusub (Mushaax ama gudagal qorista)",
+       "rcfilters-highlightbutton-title": "Barashada natiijooyinka",
+       "rcfilters-filtergroup-registration": "Diiwaan-galinta adeegsadaha",
+       "rcfilters-filter-registered-description": "Wax beddelayaasha gudaha ku jira",
+       "rcfilters-filter-unregistered-label": "Aan diiwaanka ku jirin",
+       "rcfilters-filter-unregistered-description": "Wax baddelayasha aan diiwaanka ku jirin",
+       "rcfilters-filter-humans-label": "Dad (maaha bot)",
+       "rcfilters-filter-pageedits-label": "Beddelka bogga",
+       "rcfilters-filter-newpages-label": "Bogagga la sameeyay",
+       "rcfilters-filter-logactions-label": "Diiwaan-galinta howlaha",
        "rcnotefrom": "Hoostaan waa isbedaladii dhacay  '''$2''' (waxaad arkoosaa ilaa '''$1''' ).",
        "rclistfrom": "Itusi isbedelada cusub oo ka bilaabaneyso $3 $2",
        "rcshowhideminor": "$1 bedelada yar",
        "rcshowhidepatr-show": "I tus",
        "rcshowhidemine": "$1 wax badalkeyga",
        "rcshowhidemine-show": "I tus",
-       "rclinks": "Itusi isbadeladii  $1 ee ugu danbeeyay oo dhacay wixii ka danbeeyay $2 maalmood<br />$3",
+       "rclinks": "Itusi isbadeladii  $1 ee ugu danbeeyay oo dhacay wixii ka danbeeyay $2 maalmood",
        "diff": "duwanaan",
        "hist": "taariikh",
        "hide": "Qari",
        "filedelete-edit-reasonlist": "Wax ka bedel sababta loo tirtiray",
        "mimesearch": "MIME  raadi",
        "randompage": "Ku nasiibso bog",
+       "statistics-edits": "Wax ka bedelka bogagga laga soo bilaabo markii la sameeyay {{SITENAME}}",
        "brokenredirects-edit": "wax ka bedel",
        "brokenredirects-delete": "tirtir",
        "withoutinterwiki-submit": "I tus",
        "undeletebtn": "Sooceli",
        "undeletelink": "fiiri/mar kale sameey",
        "undeleteviewlink": "itusi",
-       "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",
        "cannotundelete": "Soo celinta ma' suurto galin; waxaa laga yaabaa in qofkale uu horay u soo celyey bogga.",
        "undelete-search-box": "Raadi bogagga la tirtiray",
        "undelete-search-prefix": "I'tus boggaga ku bilaawda:",
        "sp-contributions-search": "Raadi si aad wax uugu darsatid",
        "sp-contributions-username": "Ciwaanka IP:ga  ama  magaca isticmaalaha:",
        "sp-contributions-toponly": "itusi kaliya badalyada ah kuwii ugu danbeeyay oo wax laga badalay",
+       "sp-contributions-newonly": "Itus kaliya bogagga la sameeyay",
        "sp-contributions-submit": "Raadi",
        "whatlinkshere": "Maxaa meeshaan la xiriiro",
        "whatlinkshere-title": "Boggaga la xiriiro \"$1\"",
        "whatlinkshere-hideredirs": "$1 loo sii toosiyay",
        "whatlinkshere-hidelinks": "$1 wuxuu la xiriiraa",
        "whatlinkshere-hideimages": "$1 sawirka inta oo la xiriiro",
+       "whatlinkshere-filters": "Shaandhooyin",
        "ipboptions": "2 saacadood:2 hours,1 maalin:1 day,3 maalmood:3 days,1 usbuuc:1 week,2 isbuuc:2 weeks,1 bil:1 month,3 bilood:3 months,6 bilood:6 months,1 sano:1 year,daa'im:infinite",
        "ipblocklist": "isticmaalada la mamnuucay",
        "ipblocklist-submit": "Raadi",
        "othercontribs": "Waxay ku saleysantahay shaqada $1.",
        "pageinfo-title": "Macluumaad ku saabsan \"$1\"",
        "pageinfo-header-basic": "Macluumaadka asaasiga ah",
+       "pageinfo-firstuser": "Sameeyaha bogga",
        "pageinfo-toolboxlink": "Macluumad ku saabsan",
        "previousdiff": "← bedelkii ka duqsanaa",
        "nextdiff": "Bedelkii ugu cusbaa →",
        "rightsnone": "(waxna)",
        "feedback-message": "Fariinta:",
        "searchsuggest-search": "Raadi",
-       "api-error-copyuploaddisabled": "Soo gelinta dhinaca URL-ka waa laga damiyay kombiyuutarkaan",
-       "api-error-filename-tooshort": "Magaca faylka aad oo u gaabanyahay",
-       "api-error-filetype-banned": "Faylka nuucaan waa laga mamnuucay",
-       "api-error-http": "Qalad gudaha ah: Ma ku xiro karo kombiyutarka",
-       "api-error-illegal-filename": "Magaca faylkaan lama ogola.",
-       "api-error-mustbeloggedin": "Waa in aad gudaha u soo gashaa hadii aad rabtid in aad fayl soo geliso.",
-       "api-error-ok-but-empty": "Qalad gudaha ah : kombiyutarka maka soo jawaabin",
-       "api-error-unclassified": "Qalad la aqoon aa dhacay",
-       "api-error-unknown-code": "Qalad la aqoon: \"$1\"",
        "api-error-unknown-warning": "Digniin la aqoon: $1",
-       "api-error-uploaddisabled": "Soo gelinta waa laga xiray wikigaan.",
        "limitreport-title": "Faahfaahin caddeymo:",
        "limitreport-cputime": "Waqtiga adeegsiga CPU",
        "limitreport-walltime": "Waqtiga dhabta ah adeegsiga",
index 76ade66..f472095 100644 (file)
@@ -32,7 +32,8 @@
                        "Ammartivari",
                        "Kosovastar",
                        "Matma Rex",
-                       "Arianit"
+                       "Arianit",
+                       "Denisa"
                ]
        },
        "tog-underline": "Nënvizimi i lidhjes:",
        "anontalk": "Diskutimi",
        "navigation": "Navigimi",
        "and": "&#32;dhe",
-       "qbfind": "Gjeni",
-       "qbbrowse": "Shfletoni",
-       "qbedit": "Redakto",
-       "qbpageoptions": "Kjo faqe",
-       "qbmyoptions": "Faqet e mia",
        "faq": "Pyetje të shpeshta",
-       "faqpage": "Project: Pyetje të shpeshta",
        "actions": "Veprimet",
        "namespaces": "Hapsirat e emrit",
        "variants": "Variantat",
        "edit-local": "Redakto përshkrimin lokal",
        "create": "Krijo",
        "create-local": "Shtonipërshkrimin lokal",
-       "editthispage": "Redakto këtë faqe",
-       "create-this-page": "Krijo këtë faqe",
        "delete": "Fshi",
-       "deletethispage": "Grise këtë faqe",
-       "undeletethispage": "Rikthe faqen",
        "undelete_short": "Anullo fshirjen {{PLURAL:$1|një redaktim|$1 redaktime}}",
        "viewdeleted_short": "Shiko {{PLURAL:$1|një redaktim të fshirë|$1 redaktime të fshira}}",
        "protect": "Mbroje",
        "protect_change": "ndrysho",
-       "protectthispage": "Mbroje këtë faqe",
        "unprotect": "Ndrysho mbrojtjen",
-       "unprotectthispage": "Ndrysho mbrojtjen e kësaj faqeje",
        "newpage": "Faqe e re",
-       "talkpage": "Diskuto rreth kësaj faqeje",
        "talkpagelinktext": "Diskuto",
        "specialpage": "Faqe speciale",
        "personaltools": "Mjetet e mia",
-       "articlepage": "Shiko faqen me përmbajtje",
        "talk": "Diskutimet",
        "views": "Shikime",
        "toolbox": "Mjete",
+       "tool-link-userrights": "Ndrysho grupet e {{GENDER:$1|përdoruesit}}",
+       "tool-link-userrights-readonly": "Shiko grupet e {{GENDER:$1|përdoruesit}}",
        "tool-link-emailuser": "Dërgo email {{GENDER:$1|user}}",
-       "userpage": "Shfaq faqen e përdoruesit",
-       "projectpage": "Shfaq faqen e projektit",
        "imagepage": "Shfaq faqen e skedës",
        "mediawikipage": "Shiko faqen e mesazhit",
        "templatepage": "Shiko faqen e shabllonit",
        "redirectedfrom": "(Përcjellë nga $1)",
        "redirectpagesub": "Ridrejto faqen",
        "redirectto": "Ridrejto tek:",
-       "lastmodifiedat": "Kjo faqe është ndryshuar për herë te fundit më $1, në orën $2.",
+       "lastmodifiedat": "Kjo faqe është redaktuar për herë te fundit më $1, në orën $2.",
        "viewcount": "Kjo faqe është shikuar {{PLURAL:$1|një|$1 herë}} .",
        "protectedpage": "Faqe e mbrojtur",
        "jumpto": "Shko tek:",
        "virus-scanfailed": "skanimi dështoi (code $1)",
        "virus-unknownscanner": "antivirus i pa njohur:",
        "logouttext": "'''Ju keni dalë jashtë.''' \n \n Kini parasysh që disa faqe mund të shfaqen sikur të ishit i identifikuar derisa të fshini ''cache''-in e shfletuesit tuaj.",
+       "cannotlogoutnow-title": "Nuk mund të çkyçeni tani",
+       "cannotlogoutnow-text": "Çregjistrimi nuk është i mundur kur përdorni $1.",
        "welcomeuser": "Mirë se vini, $1!",
        "welcomecreation-msg": "Llogaria e jote u krijua. \nMos harro të ndryshosh [[Special:Preferences|{{SITENAME}} parapëlqimet]] e tua.",
        "yourname": "Fusni nofkën tuaj",
        "createacct-yourpasswordagain-ph": "Shtypni fjalëkalimin përsëri",
        "userlogin-remembermypassword": "Më mbaj të kyçur",
        "userlogin-signwithsecure": "Përdor lidhje të sigurtë",
+       "cannotlogin-title": "Nuk mund të kyçeni",
+       "cannotlogin-text": "Identifikimi nuk është i mundur",
+       "cannotloginnow-title": "Nuk mund të identifikoheni tani",
+       "cannotloginnow-text": "Identifikimi nuk është i mundur kur përdorni $1.",
+       "cannotcreateaccount-title": "Nuk mund të krijoni llogari",
+       "cannotcreateaccount-text": "Krijimi direkt i llogarisë nuk është i mundur në këtë wiki.",
        "yourdomainname": "Faqja juaj",
        "password-change-forbidden": "Ju nuk mund të ndryshoni fjalëkalimet në këtë wiki.",
        "externaldberror": "Ose kishte një gabim tek regjistri i identifikimit të jashtëm, ose nuk ju lejohet të përtërini llogarinë tuaje të jashtme.",
        "userlogin-resetpassword-link": "Keni harruar fjalëkalimin?",
        "userlogin-helplink2": "Ndihmë rreth identifikimit",
        "userlogin-loggedin": "Ju tashmë jeni i regjistruar si {{GENDER:$1|$1}}.\nPërdore formularin më poshtë për të hyrë si një përdorues tjetër.",
+       "userlogin-reauth": "Duhet të identifikoheni përsëri për të verifikuar që jeni {{GENDER:$1|$1}}",
        "userlogin-createanother": "Krijo një llogari tjeter",
        "createacct-emailrequired": "Posta elektronike",
        "createacct-emailoptional": "Adresa Elektronike (me dëshirë)",
        "createacct-email-ph": "Fusni adresën tuaj elektronike",
        "createacct-another-email-ph": "Vendos adresën e postës elektronike",
        "createaccountmail": "Përdorni një fjalëkalim të përkohshëm të rastit dhe  dërgojeni atë në adresën e specifikuar te email",
+       "createaccountmail-help": "Mund të përdoret për të krijuar llogari për një person tjetër pa njohur fjalëkalimin.",
        "createacct-realname": "Emri i vërtetë (me dëshirë)",
        "createacct-reason": "Arsyeja",
        "createacct-reason-ph": "Pse ju jeni duke krijuar një llogari tjetër",
+       "createacct-reason-help": "Mesazhi tregohet në identifikimin e krijimit të llogarisë.",
        "createacct-submit": "Krijoni llogarinë tuaj",
        "createacct-another-submit": "Krijo një llogari",
        "createacct-continue-submit": "Vazhdo krijimin e llogarisë",
        "nocookiesnew": "Llogaria e përdoruesit u krijua por ti nuk je identifikuar akoma.\n{{SITENAME}} shfrytëzon \"cookies\" për të identifikuar përdoruesit.\nTi ke çaktivizuar e \"cookies\".\nTë lutem, avktizo ato, pastaj identifikohu emrin e ri të përdoruesit dhe fjalëkalimin.",
        "nocookieslogin": "{{SITENAME}} shfrytëzon \"cookies\" për identifikimin e përdoruesve.\nYou nuk lejoni shfrytëzimin e \"cookies\".\nJu lutemi, lejoni shfrytëzimin e \"cookies\" dhe provojeni përsëri.",
        "nocookiesfornew": "Llogaria e përdoruesit nuk u krijua, pasi ne nuk mund të konfirmojmë burimin e tij.\nSigurohuni që ju lejoni shfrytëzimin e \"cookies\", rifreskoni këtë faqe dhe provojen përsëri.",
+       "createacct-loginerror": "Llogaria u krijua me sukses, por ju nuk mund të identifikoheni automatikisht. Ju lutem vazhdoni tek [[Special:UserLogin|manual login]].",
        "noname": "Nuk keni dhënë një emër përdoruesi të pranueshëm.",
        "loginsuccesstitle": "I/e identifikuar",
        "loginsuccess": "'''Ju tani jeni identifikuar tek {{SITENAME}} si \"$1\".'''",
-       "nosuchuser": "Nuk ka ndonjë përdorues me emrin \"$1\".\nKontrolloni shkrimin ose [[Special:CreateAccount|hapni një llogari të re]].",
+       "nosuchuser": "Nuk ka ndonjë përdorues me emrin \"$1\".\nEmri përdoruesit është i ndjeshëm ndaj madhësisë së gërmave.\nKontrolloni shkrimin ose [[Special:CreateAccount|hapni një llogari të re]].",
        "nosuchusershort": "Nuk ka asnjë përdorues me emrin \"$1\".",
        "nouserspecified": "Ju duhet të jepni një nofkë",
        "login-userblocked": "Ky përdorues është bllokuar. Identifikimi nuk lejohet.",
        "changepassword-success": "Fjalëkalimi yt është ndryshuar.",
        "changepassword-throttled": "Keni bërë shumë tentime të njëpasnjëshme në fjalëkalimin e kësaj llogarie. Ju lutemi prisni para se te tentoni përsëri.",
        "botpasswords": "Bot fjalëkalimet",
+       "botpasswords-summary": "<em>Fjalëkalimi Botit</em> mundëson hyrjen në një llogari përdoruesi nëpërmjet API pa përdorur kredencialet kryesore të identifikimit. Të drejtat e përdoruesit janë të kufizuara kur identifikoheni me një fjalëkalim boti.\n\nNëse nuk e dini përse doni ta bëni këtë, më mirë mos e bëni. Asnjë nuk duhet t'iu kërkoj të gjeneroni një nga këto dhe tua dërgoni atyre.",
+       "botpasswords-disabled": "Fjalëkalimet e botit janë të padisponueshme.",
+       "botpasswords-no-central-id": "Për të përdorur fjalëkalimet e botit, duhet të identifikoheni në një llogari të centralizuar.",
+       "botpasswords-existing": "Fjalëkalimet ekzistuese të boteve.",
+       "botpasswords-createnew": "Krijo një fjalëkalim të ri boti",
+       "botpasswords-editexisting": "Redakto një fjalëkalim ekzistues boti",
+       "botpasswords-label-appid": "Emri botit:",
        "botpasswords-label-create": "Krijo",
        "botpasswords-label-update": "Përditëso",
        "botpasswords-label-cancel": "Anulo",
        "botpasswords-label-delete": "Fshi",
        "botpasswords-label-resetpassword": "Rivendos fjalëkalimin",
+       "botpasswords-label-grants": "Bursa të aplikueshme:",
+       "botpasswords-help-grants": "Bursat lejojnë hyrje në të drejtat e zotëruara nga llogaria juaj e përdoruesit.Mundësimi i një burse këtu nuk mundëson hyrje në asnjë të drejtë që llogaria juaj e përdoruesit nuk mund t'i ketë. Shikoni  [[Special:ListGrants|tabela e bursave]] për më tepër informacion.",
        "botpasswords-label-grants-column": "Lejuar",
+       "botpasswords-bad-appid": "Emri i botit \"$1\" nuk është i vlefshëm.",
+       "botpasswords-insert-failed": "Dështoi për të shtuar emrin e botit \"$1\". është shtuar tashmë?",
        "botpasswords-update-failed": "Dështoi për të përditësuar emrin e bot \"$1\". Ishte fshirë?",
+       "botpasswords-created-title": "Fjalëkalimi botit u krijua",
+       "botpasswords-updated-title": "Fjalëkalimi i botit u freskua",
+       "botpasswords-deleted-title": "Fjalëkalimi i botit u fshih",
+       "botpasswords-deleted-body": "Fjalëkalimi i botit për botin me emër \"$1\" të përdoruesit \"$2\" u fshi.",
        "resetpass_forbidden": "Fjalëkalimet nuk mund të ndryshohen",
        "resetpass_forbidden-reason": "Nuk mund të ndërrohet fjalëkalimi: $1",
        "resetpass-no-info": "Duhet të jeni i kyçur që të keni qasje direkte në këtë faqe.",
        "changeemail-throttled": "Ju keni bërë shumë tentativa hyrjeje.\nJu lutemi prisni $1 përpara se të provoni sërish.",
        "changeemail-nochange": "Të lutem shkruaj një tjetër adresë emaili.",
        "resettokens": "Rivendos tokens",
+       "resettokens-no-tokens": "Nuk ka tokena për të resetuar.",
+       "resettokens-tokens": "Tokenët:",
        "resettokens-token-label": "$1 (vlera aktuale: $2)",
+       "resettokens-done": "Tokenët u resetuan.",
+       "resettokens-resetbutton": "Reseto tokenët e zgjedhur",
        "bold_sample": "Stil i theksuar i tekstit",
        "bold_tip": "Stil i theksuar i tekstit",
        "italic_sample": "Tekst i pjerrët",
        "preview": "Shqyrto",
        "showpreview": "Shfaq për shqyrtim",
        "showdiff": "Trego ndryshimet",
-       "blankarticle": "<strong>Kujdes:</strong> Faqja që po krijoni është boshe.\nNëse klikoni \"{{int:savearticle}}\" përsëri, faqja do të krijohet pa ndonjë përmbajtje.",
+       "blankarticle": "<strong>Kujdes:</strong>Faqja që po krijoni është boshe.\nNëse klikoni \"$1\" përsëri, faqja do të krijohet pa ndonjë përmbajtje.",
        "anoneditwarning": "<strong>Kujdes:</strong> Ju nuk jeni të regjistruar. Adresa juaj IP do të jetë e dukshme publikisht në ju bëni ndonjë redaktim. Nëse <strong>[$1 hyni]</strong> ose <strong>[$2 krijoni një llogari]</strong>, redaktimet tuaja do t'i atribuohen emrit tuaj të përdoruesit, së bashku me përfitime të tjera.",
        "anonpreviewwarning": "\"Ju nuk jeni identifikuar. Ruajtja e ndryshimeve do të bëjë që adresa juaj IP të regjistrohet në historikun e redaktimeve të kësaj faqeje.\"",
-       "missingsummary": "'''Vërejtje:''' Ju nuk keni lënë shënim për redaktimet e kryera.\nNëse klikoni \"{{int:savearticle}}\" përsëri, redaktimet tuaja do të ruhen pa shënim.",
+       "missingsummary": "'''Vërejtje:''' Ju nuk keni lënë shënim për redaktimet e kryera.\nNëse klikoni \"$1\" përsëri, redaktimet tuaja do të ruhen pa shënim.",
        "missingcommenttext": "Ju lutemi bëni një koment më poshtë.",
-       "missingcommentheader": "<strong>Kujdes:</strong>'''Nuk keni dhënë një titull për këtë koment.\nNëse klikoni \"{{int:savearticle}}\" prapë, redaktimi juaj do të ruhet pa titull.",
+       "missingcommentheader": "<strong>Kujdes:</strong>'''Nuk keni dhënë një titull për këtë koment.\nNëse klikoni \"$1\" prapë, redaktimi juaj do të ruhet pa titull.",
        "summary-preview": "Parapamje e përmbledhjes së redaktimit:",
        "subject-preview": "Parapamje e subjektit:",
        "blockedtitle": "Përdoruesi është bllokuar",
        "userpage-userdoesnotexist": "Llogaria e përdoruesit \"<nowiki>$1</nowiki>\" nuk është e regjistruar. \nJu lutem kontrolloni nëse dëshironi të krijoni/redaktoni këtë faqe.",
        "userpage-userdoesnotexist-view": "Llogaria i përdoruesit \"$1\" nuk është e regjistruar.",
        "blocked-notice-logextract": "Ky përdorues është  aktualisht i bllokuar.\nMë poshtë mund t'i referoheni shënimit të regjistruar për bllokimin e fundit:",
-       "clearyourcache": "''Shënim:''' Pas ruajtjes, juve mund t'iu duhet të anashkaloni \"cache-in\" e shfletuesit tuaj për të parë ndryshimet. \n* '''Firefox / Safari:''' Mbaj të shtypur ''Shift'' ndërkohë që klikon ''Reload'', ose shtyp ''Ctrl-F5'' ose ''Ctrl-R'' (''⌘-R'' në Mac)\n* '''Google Chrome:''' Shtyp ''Ctrl-Shift-R'' (''''⌘-R'''' në Mac)\n* '''Internet Explorer:''' Mbaj të shtypur ''Ctrl''  ndërkohë që klikon ''Refresh'', ose shtyp ''Ctrl-F5''\n* '''Konqueror:''' Kliko ''Reload'' ose shtyp ''F5''\n* '''Opera:''' Zbrazni \"cache-in\" tek ''Tools → Preferences''",
+       "clearyourcache": "<strong>Shënim:</strong> Pas ruajtjes, juve mund t'iu duhet të anashkaloni \"cache-in\" e shfletuesit tuaj për të parë ndryshimet. \n* <strong>Firefox/Safari:</strong> Mbaj të shtypur <em>Shift</em> ndërkohë që klikon <em>Reload</em>, ose shtyp <em>Ctrl-F5</strong> ose <em>Ctrl-R</em> (<em>⌘-R</em> në Mac)\n* <strong>Google Chrome:</strong> Shtyp <em>Ctrl-Shift-R</em> (<strong>'⌘-R</strong>' në Mac)\n* <strong>Internet Explorer:</strong> Mbaj të shtypur <em>Ctrl</em>  ndërkohë që klikon <em>Refresh</em>, ose shtyp <em>Ctrl-F5</em> \n* <strong>Opera:</strong> Shkoni në <em>Menu → Settings</em> (<em>Opera → Preferences</em> në Mac) dhe pastaj në <em>Privacy & security → Clear browsing data → Cached images and files</em>.",
        "usercssyoucanpreview": "'''Këshillë:''' Përdorni butonin '{{int:showpreview}}' për të testuar CSS-në e re para se të ruani ndryshimet e kryera.",
        "userjsyoucanpreview": "'''Këshillë:''' Përdorni butonin '{{int:showpreview}}' për të testuar JavaScripting e ri para se të ruani ndryshimet e kryera.",
        "usercsspreview": "<strong>Vini re! Ju jeni duke inspektuar CSS-në si përdorues!\nNuk është ruajtur ende!</strong>",
        "previewnote": "'''Mos harro që kjo është vetëm një parapamje.'''\nNdryshimet e tua nuk janë ruajtur ende!",
        "continue-editing": "Shko në pjesën për redaktim",
        "previewconflict": "Kjo parapamje reflekton tekstin sipër kutisë së redaktimit siç do të duket kur të kryeni ndryshimin.",
-       "session_fail_preview": "'''Ju kërkojmë ndjesë! Redaktimi juaj nuk mund të perpunohej për shkak të humbjes së të dhënave të seancës.'''\nJu lutemi, provojeni përsëri.\nNëse përsëri nuk punon, provoni të [[Special:UserLogout|dilni nga faqja]] dhe të identifikoheni serish.",
-       "session_fail_preview_html": "'''Ju kërkojmë ndjesë! I pamundur përpunimi i redaktimeve tuaja për shkak të humbjes së të dhënave të seancës.'''\n'' Për shkak se {{SITENAME}} ka të aktivizuar përdorimin e HTML-së së papërpunuar, teksti për shqyrtim është fshehur si masë parandaluese kundër sulmeve JavaScript.''\n'''Nëse kjo është një përpjekje e sinqertë për redaktim, ju lutemi, provojeni përsëri.'''\nNëse përsëri nuk funksiono, provoni [[Special:UserLogout|të dilni nga faqja]] dhe të identifikoheni sërish.",
+       "session_fail_preview": "Ju kërkojmë ndjesë! Redaktimi juaj nuk mund të përpunohej për shkak të humbjes së të dhënave të seancës.'''\n\nNdoshta jeni ç'kyçur. <strong>Ju lutemi verifikoni që ende jeni i kyçur dhe provoni prap</strong>.  \nNëse përsëri nuk punon provoni të [[Special:UserLogout|dilni nga faqja]] dhe të identifikoheni serish, dhe konfirmoni që shfletuesi juaj i lejon biskotat nga ky sajt.",
+       "session_fail_preview_html": "Ju kërkojmë ndjesë! I pamundur përpunimi i redaktimeve tuaja për shkak të humbjes së të dhënave të seancës.'''\nPër<em> shkak se {{SITENAME}} ka të aktivizuar përdorimin e HTML-së së papërpunuar, teksti për shqyrtim është fshehur si masë parandaluese kundër sulmeve JavaScript.\n'</em>\n\n<strong>Nëse kjo është një përpjekje e sinqertë për redaktim, ju lutemi provojeni përsëri.</strong>\nNëse përsëri nuk funksionon provoni [[Special:UserLogout|të dilni nga faqja]] dhe të identifikoheni sërish, dhe konfirmoni që shfletuesi juaj lejon biskotat nga ky sajt.",
        "token_suffix_mismatch": "'''Redaktimi juaj nuk u pranuar pasi shërbimi juaj server  ka keqinterpretuar shenjat e pikësimit të simbolikës së redaktimit.'''\nRedaktimi nuk u pranua për të parandaluar korruptimin e tekstit në faqe.\nKjo ndodh ndonjëherë kur përdoret server anonim dytësor me gabime.",
        "edit_form_incomplete": "'''Disa pjesë të formularit të redaktimit nuk arritën në server; kontrolloni edhe një herë nëse redaktimet tuaja janë të paprekura dhe provojeni përsëri.'''",
        "editing": "Duke redaktuar $1",
        "editingsection": "Duke redaktuar $1 (paragraf)",
        "editingcomment": "Duke redaktuar (paragraf i ri) $1",
        "editconflict": "Konflikt redaktimi: $1",
-       "explainconflict": "Dikush tjetër ka ndryshuar këtë faqe që kur ju filluat redaktimin.\nHpasira e sipërme tregon tekstin e faqes siç është aktualisht.\nNdryshimet tuaja janë shfaqur në hapsirën e poshtme.\nJu duhet t'ia bashkangjisni ndryshimet tuaja teksit ekzistues.\n'''Vetëm''' teksti në hapsirën e sipërme do të ruhet kur të shtypni \"{{int:savearticle}}\".",
+       "explainconflict": "Dikush tjetër ka ndryshuar këtë faqe që kur ju filluat redaktimin.\nHpasira e sipërme tregon tekstin e faqes siç është aktualisht.\nNdryshimet tuaja janë shfaqur në hapsirën e poshtme.\nJu duhet t'ia bashkangjisni ndryshimet tuaja teksit ekzistues.\n<strong>Vetëm</strong> teksti në hapsirën e sipërme do të ruhet kur të shtypni \"$1\".",
        "yourtext": "Teksti juaj",
        "storedversion": "Rishikim i ruajtur",
        "nonunicodebrowser": "'''Kujdes: Shfletuesi juaj ka mospërputhje me standartin unicode.'''\nEkziston një zgjidhje për redaktimin e sigurt të faqeve: Shkronjat jo-ASCII do të duken në kutinë e redaktimit si kod heksadecimal.",
        "copyrightwarning": "Ju lutemi, vini re! Të gjitha kontributet në {{SITENAME}} jepen për publikim sipas $2 (shiko $1 për më shumë detaje).\nNëse ju nuk dëshironi që shkrimet tuaja të redaktohen pa mëshirë dhe të shpërndahen sipas dëshirës, atëherë mos i vendosni këtu.<br />\nGjithashtu, ju po na premtoni ne që gjithçka e keni shkruar vetë, ose e keni kopjuar nga një domain publik ose nga burime të tjera  te hapura.\n'''Mos vendosni material të mbrojtur nga e drejta e autorit pa leje!'''",
        "copyrightwarning2": "Ju lutemi, vini re! Të gjitha kontributet në {{SITENAME}} mund të redaktohen, ndryshohen ose hiqen nga përdorues të tjerë  (shiko $1 për më shumë detaje). \nNëse ju nuk dëshironi që shkrimet tuaja të redaktohen pa mëshirë dhe të shpërndahen sipas dëshirës, atëherë mos i vendosni këtu<br />\nGjithashtu, ju po na premtoni ne që gjithçka e keni shkruar vetë, ose e keni kopjuar nga një domain publik ose nga burime të tjera  te hapura.\n'''Mos vendosni material të mbrojtur nga e drejta e autorit pa leje!'''",
        "longpageerror": "'''Gabim: Teksti që shkruat është  {{PLURAL:$1|një kilobajt|$1 kilobajt}} i gjatë, që është mëtepër se maksimumi i lejuar prej  {{PLURAL:$2|një kilobajt|$2 kilobajtësh}} .'''\nNuk mund të ruhet.",
-       "readonlywarning": "<strong>Kujdes: Baza e të dhënave është mbyllur për mirëmbajtje, prandaj për momentin nuk do të mund të ruash redaktimin tënd.</strong>\nTi mund ta kopjosh/ngjitësh tekstin dhe ta ruash në një dokument tjetër për ta përdorur më vonë .\n\nAdministratori që e bllokoi ka dhënë këtë sqarim: $1.",
+       "readonlywarning": "<strong>Kujdes: Baza e të dhënave është mbyllur për mirëmbajtje, prandaj për momentin nuk do të mund të ruash redaktimin tënd.</strong>\nTi mund ta kopjosh/ngjitësh tekstin dhe ta ruash në një dokument tjetër për ta përdorur më vonë.\n\nAdministratori i sistemit që e bllokoi ka dhënë këtë sqarim: $1.",
        "protectedpagewarning": "'''KUJDES: Kjo faqe është e mbrotjur dhe mund të redaktohet nga përdorues me të drejta administratori.'''\nShënimi i fundit në regjistër është paraqitur më poshtë për reference:",
        "semiprotectedpagewarning": "'''Shënim:''' Kjo faqe është e mbrojtur dhe mund të redaktohet vetëm nga përdorues të regjistruar.\nShënimi i fundit në regjistër është paraqitur më poshtë për reference:",
-       "cascadeprotectedwarning": "'''Vini re:''' Kjo faqe është e mbrojtur dhe vetëm përdoruesit me privilegje administrative mund ta redaktojnë pasi është përfshirë në mbrotjen \"ujëvarë\" të {{PLURAL:$1|faqes së|faqeve të}} mëposhtme:",
+       "cascadeprotectedwarning": "<strong>Vini re:</strong> Kjo faqe është e mbrojtur dhe vetëm përdoruesit me privilegje administrative mund ta redaktojnë pasi është përfshirë në mbrojtjen \"ujëvarë\" të {{PLURAL:$1|faqes së|faqeve të}} më mëposhtme:",
        "titleprotectedwarning": "'''Kujdes:  Kjo faqe është e mbrojtur dhe vetëm [[Special:ListGroupRights|disa përdorues]] mund ta krijojnë.'''\nRegjistri më i vonshëm i hyrjeve është poshtë për referncë:",
        "templatesused": "{{PLURAL:$1|Stamp|Stampa}} të përdorura në këtë faqe:",
        "templatesusedpreview": "{{PLURAL:$1|Stamp|Stampa}} të përdorë në këtë parapâmje:",
        "defaultmessagetext": "Teksti i porosisë së parazgjedhur",
        "invalid-content-data": "Të pavlefshme të dhënave e përmbajtjes",
        "editwarning-warning": "Duke e lënë këtë faqe mund të shkaktojë ju për të humbur të gjitha ndryshimet që keni bërë ju.\nNëse ju jeni regjistruar, ju mund të çaktivizoni këtë paralajmërim në \"{{int:prefs-editing}}\" seksionin e preferencave tuaja.",
+       "editpage-invalidcontentmodel-title": "Modeli i përmbajtjes nuk mbështetet",
+       "editpage-invalidcontentmodel-text": "Modeli i përmbajtjes \"$1\" nuk mbështetet.",
+       "editpage-notsupportedcontentformat-title": "Formati i përmbajtjes nuk mbështetet",
        "content-model-wikitext": "wikitekst",
        "content-model-text": "tekst i thejshtë",
        "content-model-javascript": "JavaScript",
        "history-feed-description": "Historiku i versioneve për këtë faqe në wiki",
        "history-feed-item-nocomment": "$1 tek $2",
        "history-feed-empty": "Faqja që kërkuat nuk ekziston. Ajo mund të jetë grisur nga wiki ose mund të jetë zhvendosur nën një emër tjetër. Mund të provoni ta gjeni duke e [[Special:Search|kërkuar]].",
+       "history-edit-tags": "Ndrysho etiketat e versioneve të zgjedhura.",
        "rev-deleted-comment": "(Edit përmbledhje larguar)",
        "rev-deleted-user": "(përdoruesi u largua)",
        "rev-deleted-event": "(detajet e regjistrit janë hequr)",
        "revdelete-show-file-submit": "Po",
        "logdelete-selected": "{{PLURAL:$1|Veprimi i zgjedhur në regjistër|Veprimet e zgjedhura në regjistër}}:",
        "revdelete-confirm": "Ju lutem konfirmoni që keni ndër mënd ta bëni këtë, që i kuptoni pasojat, dhe që ju po veproni në përputhje me [[{{MediaWiki:Policy-url}}|politiken]].",
-       "revdelete-suppress-text": "Shuarje duhet'''vetëm'''të përdoret për rastet e mëposhtme: \n * Potencialisht e informacionit shpifës \n * Informacion i pa kriter personal \n *: Adresat në shtëpi''dhe numrat e telefonit, numrat e sigurimeve shoqërore, etj''",
+       "revdelete-suppress-text": "Shuarja duhet të përdoret <strong>vetëm</strong> për rastet e mëposhtme: \n* informacion potencialisht shpifës \n* informacion i papërshtatshëm personal \n*: <em>adresat e shtëpisë dhe numrat e telefonit, numrat e sigurimeve shoqërore, etj.</em>",
        "revdelete-legend": "Vendosni kufizimet për versionin:",
        "revdelete-hide-text": "Teksti i versionit",
        "revdelete-hide-image": "Fshih përmbajtjen skedës",
        "mergehistory-empty": "Nuk ka versione të bashkueshme.",
        "mergehistory-done": "$3 {{PLURAL:$3|version|versione}} të $1 janë bashkuar me sukses në [[:$2]].",
        "mergehistory-fail": "Nuk munda të bashkoj historikun, ju lutem kontrolloni përzgjedhjen e faqes dhe të kohës.",
+       "mergehistory-fail-bad-timestamp": "Stampa kohore e pavlefshme.",
+       "mergehistory-fail-invalid-source": "Faqja burimore e pavlefshme.",
+       "mergehistory-fail-invalid-dest": "Faqja cak e pavlefshme.",
+       "mergehistory-fail-permission": "Leje të pamjaftueshme për të bashkuar historinë.",
+       "mergehistory-fail-self-merge": "Faqja burim dhe cak nuk mund të jetë e njëjtë.",
        "mergehistory-no-source": "Faqja e burimit $1 nuk ekziston.",
        "mergehistory-no-destination": "Faqja mbledhëse $1 nuk ekzsiton.",
        "mergehistory-invalid-source": "Faqja e burimit duhet të ketë titull të vlefshëm.",
        "search-section": "(seksioni $1)",
        "search-category": "(kategoria $1)",
        "search-suggest": "Mos kishit në mendje: $1",
-       "search-interwiki-caption": "Projekte simotra",
+       "search-interwiki-caption": "Rezultate nga projekte simotra",
        "search-interwiki-default": "Rezultatet nga $1:",
        "search-interwiki-more": "(më shumë)",
+       "search-interwiki-more-results": "më shumë rezultate",
        "search-relatedarticle": "Të ngjashme",
        "searchrelated": "të ngjashme",
        "searchall": "të gjitha",
        "showingresults": "Më poshtë tregohen {{PLURAL:$1|'''1''' përfundim|'''$1''' përfundime}} duke filluar nga #'''$2'''.",
        "search-showingresults": "{{PLURAL:$4|Rezultati <strong>$1</strong> nga <strong>$3</strong>|Rezultatet <strong>$1 - $2</strong> nga <strong>$3</strong>}}",
        "search-nonefound": "Nuk ka rezultate që përputhen me kërkesën.",
+       "search-nonefound-thiswiki": "Nuk ka rezultate që përputhen me kërkesën në këtë sajt.",
        "powersearch-legend": "Kërkim i përparuar",
        "powersearch-ns": "Kërkim në hapësira:",
        "powersearch-togglelabel": "Zgjedh:",
        "powersearch-toggleall": "Të gjitha",
        "powersearch-togglenone": "Asnjë",
+       "powersearch-remember": "Kujtoje përzgjedhjen për kërkesat e ardhshme",
        "search-external": "Kërkim i jashtëm",
        "searchdisabled": "<p>Kërkimi me tekst të plotë është bllokuar tani për tani ngaqë shërbyesi është shumë i ngarkuar; shpresojmë ta nxjerrim prapë në gjendje normale pas disa punimeve. Deri atëherë mund të përdorni Google-in për kërkime:</p>",
+       "search-error": "Ka ndodhë një gabim gjatë kërkimit: $1",
+       "search-warning": "Një paralajmërim ka ndodhur gjatë kërkimit: $1",
        "preferences": "Parapëlqimet",
        "mypreferences": "Parapëlqimet",
        "prefs-edits": "Numri i redaktimeve:",
+       "prefsnologintext2": "Ju lutemi regjistrohuni për të ndryshuar preferencat.",
        "prefs-skin": "Pamja",
        "skin-preview": "Parapamje",
        "datedefault": "E parazgjedhur",
        "prefs-rc": "Ndryshimet e fundit",
        "prefs-watchlist": "Lista mbikqyrëse",
        "prefs-editwatchlist": "Redakto listën mbikqyrëse",
+       "prefs-editwatchlist-label": "Ndrysho listën tuaj mbikëqyrëse:",
+       "prefs-editwatchlist-edit": "Shiko dhe hiq tituj në listë tuaj mbikëqyrëse",
+       "prefs-editwatchlist-raw": "Redakto listën mbikëqyrëse të papërpunuar",
        "prefs-editwatchlist-clear": "Boshatis listën tënde mbikqyrëse",
        "prefs-watchlist-days": "Numri i ditëve të treguara tek lista mbikqyrëse:",
        "prefs-watchlist-days-max": "Maksimumi $1 ditë",
        "recentchangescount": "Numri i redaktimeve për të treguar:",
        "prefs-help-recentchangescount": "Kjo përfshin ndryshimet e freskëta, historikun e faqes dhe regjistrat.",
        "savedprefs": "Parapëlqimet e tua janë ruajtur.",
+       "savedrights": "Grupet e përdoruesit të {{GENDER:$1|$1}} janë ruajtur.",
        "timezonelegend": "Zona kohore:",
        "localtime": "Ora lokale:",
        "timezoneuseserverdefault": "wiki default Përdorimi ( $1 )",
        "youremail": "Adresa e email-it*",
        "username": "{{GENDER:$1|Emri i përdoruesit|Emri i përdorueses}}:",
        "prefs-memberingroups": "{{GENDER:$2|Anëtar i|Anëtare e}} {{PLURAL:$1|grupit|grupeve}}:",
+       "group-membership-link-with-expiry": "$1 (deri në $2)",
        "prefs-registration": "Koha e regjistrimit:",
        "yourrealname": "Emri juaj i vërtetë*",
        "yourlanguage": "Ndërfaqja gjuhësore",
        "prefs-advancedwatchlist": "Opsione të avancuara",
        "prefs-displayrc": "Shfaq opsionet",
        "prefs-displaywatchlist": "Shfaq opsionet",
+       "prefs-tokenwatchlist": "Tokeni",
        "prefs-diffs": "Ndryshimet",
+       "prefs-help-prefershttps": "Kjo preferencë do të aktivizohet në regjistrimin tuaj të radhës.",
        "userrights": "Privilegjet e përdoruesit",
        "userrights-lookup-user": "Zgjedh një përdorues",
        "userrights-user-editname": "Fut emrin e përdoruesit:",
        "editusergroup": "Ngarko grupet e përdoruesve",
        "editinguser": "Duke ndryshuar privilegjet e {{GENDER:$1|përdoruesit|përdorueses}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Ndrysho grupet e {{GENDER:$1|përdoruesit}}",
-       "saveusergroups": "Ruaj grupet e përdoruesit",
+       "userrights-viewusergroup": "Shiko grupet e {{GENDER:$1|përdoruesit}}",
+       "saveusergroups": "Ruaj grupet e {{GENDER:$1|përdoruesit}}",
        "userrights-groupsmember": "{{GENDER:$2|Anëtar i|Anëtare e}}:",
        "userrights-groupsmember-auto": "{{GENDER:$2|Anëtar i nënkuptuar i|Anëtare e nënkuptuar e}}:",
-       "userrights-groups-help": "Mund të ndryshoni anëtarësimin e {{GENDER:$1|këtij përdoruesi|kësaj përdorueseje}} në grupe:\n* Kutia e zgjedhur shënon që {{GENDER:$1|përdoruesi|përdoruesja}} është {{GENDER:$1|anëtar|anëtare}} në atë grup.\n* Kutia e pazgjedhur shënon që {{GENDER:$1|përdoruesi|përdoruesja}} nuk është {{GENDER:$1|anëtar|anëtare}} në atë grup.\n* Një * tregon që nuk mund ta hiqni grupin pasi ta keni shtuar (dhe anasjelltas).",
+       "userrights-groups-help": "Mund të ndryshoni anëtarësimin e {{GENDER:$1|këtij përdoruesi|kësaj përdorueseje}} në grupe:\n* Kutia e zgjedhur shënon që {{GENDER:$1|përdoruesi|përdoruesja}} është {{GENDER:$1|anëtar|anëtare}} në atë grup.\n* Kutia e pazgjedhur shënon që {{GENDER:$1|përdoruesi|përdoruesja}} nuk është {{GENDER:$1|anëtar|anëtare}} në atë grup.\n* Një * tregon që nuk mund ta hiqni grupin pasi ta keni shtuar (dhe anasjelltas).\n* Një # do të thotë që vetëm mund ta zgjatni kohën e skadimit; nuk mund ta shkurtoni.",
        "userrights-reason": "Arsyeja:",
        "userrights-no-interwiki": "Nuk keni leje për të ndryshuar privilegjet e përdoruesve në wiki të tjera.",
        "userrights-nodatabase": "Regjistri $1 nuk ekziston ose nuk është vendor.",
        "userrights-expiry": "Skadon:",
        "userrights-expiry-existing": "Koha ekzistuese e skadimit: $3, $2",
        "userrights-expiry-othertime": "Kohë tjetër:",
+       "userrights-expiry-options": "1 ditë:1 day,1 javë:1 week,1 muaj:1 month,3 muaj:3 months,6 muaj:6 months,1 vit:1 year",
+       "userrights-invalid-expiry": "Koha e skadimit për grupin \"$1\" është jo i vlefshëm.",
+       "userrights-expiry-in-past": "Koha e skadimit për grupin \"$1\" është në të kaluarën.",
        "userrights-conflict": "Konflikt në ndryshimin e të drejtave të përdoruesit! Të lutem të rishiko dhe konfirmo ndryshimet e tua.",
        "group": "Grupi:",
        "group-user": "Përdorues",
        "right-move": "Lëviz faqet",
        "right-move-subpages": "Lëviz faqet me nënfaqet e tyre",
        "right-move-rootuserpages": "Lëviz burimin e faqes së përdoruesit",
+       "right-move-categorypages": "Lëviz faqet kategori",
        "right-movefile": "Lëviz skedarët",
        "right-suppressredirect": "Mos krijo zhvendosje nga emri i vjetër kur lëvizë një faqe",
        "right-upload": "Ngarko skedarë",
        "right-browsearchive": "Kërko faqe të grisura",
        "right-undelete": "Rikthe faqen",
        "right-suppressrevision": "Shiko, fshih dhe çfshih versionit specifike të faqeve nga cilido përdorues",
+       "right-viewsuppressed": "Shiko versionet e fshehura nga të gjithë përdoruesit",
        "right-suppressionlog": "Shiko hyrjet private",
        "right-block": "Blloko përdoruesit tjerë nga editimi",
        "right-blockemail": "Blloko përdoruesin që të mos dërgojë postë elektronike",
        "right-editmyusercss": "Redakto CSS - skedat e tua të përdoruesit",
        "right-editmyuserjs": "Redakto JavaScript - skedat e tua të përdoruesit",
        "right-viewmywatchlist": "Shfaq listën time mbikqyrëse",
+       "right-editmywatchlist": "Ndrysho listën tënde të mbikëqyrjes. Kujdes se disa veprime do të shtojnë faqe edhe pa këtë të drejtë.",
+       "right-viewmyprivateinfo": "Shiko të dhënat tuaja private (p.sh. adresa e email-it, emri i vërtetë)",
+       "right-editmyprivateinfo": "Ndrysho të dhënat tuaja private (p.sh. adresa e email-it, emri i vërtetë)",
        "right-editmyoptions": "Redakto parapëlqimet e tua",
        "right-rollback": "Rikthen shpejt redaktimet  e pedaktuesit të fundit",
        "right-markbotedits": "Shëno rikthimet si redaktime robotësh",
        "right-managechangetags": "Krijoni dhe ç'(aktivizoni) [[Special:Tags|etiketa]]",
        "right-applychangetags": "Aplikoni [[Special:Tags|tags]] së bashku me ndryshimet",
        "right-changetags": "Shtoni dhe të largoni në mënyrë arbitrare [[Special:Tags|tags]] në rishikimet individuale dhe regjistrimet e historikut",
+       "right-deletechangetags": "Fshij [[Special:Tags|etiketat]] nga databaza",
+       "grant-generic": "\"$1\" pako e të drejtave",
+       "grant-group-page-interaction": "Ndërvepro me faqe",
+       "grant-group-file-interaction": "Ndërvepro me media",
+       "grant-group-watchlist-interaction": "Ndërvepro me listën tuaj të mbikëqyrjes",
        "grant-group-email": "Dërgoni email",
+       "grant-group-high-volume": "Kryej aktivitet me vëllim të lartë",
+       "grant-group-customization": "Rregullime dhe preferenca",
        "grant-group-administration": "Kryej veprime administrative",
        "grant-group-private-information": "Qasu të dhënave private në lidhje me ju",
        "grant-group-other": "Veprimtari të ndryshme",
        "grant-blockusers": "Blloko dhe zhblloko përdoruesit",
        "grant-createaccount": "Krijo llogari",
        "grant-createeditmovepage": "Krijoni, redaktoni, dhe lëvizni faqet",
+       "grant-delete": "Fshij faqet, versionet dhe regjistrimet",
+       "grant-editinterface": "Redakto hapësirën MediaWiki dhe CSS/JavaScript të përdoruesit",
+       "grant-editmycssjs": "Ndrysho CSS/JavaScript të përdoruesit tuaj",
+       "grant-editmyoptions": "Redakto parapëlqimet tua",
        "grant-editmywatchlist": "Redaktoni listën tuaj mbikqyrëse",
        "grant-editpage": "Redaktoni faqet ekzistuese",
        "grant-editprotected": "Redakto faqet e mbrojtura",
+       "grant-highvolume": "Redaktim me vëllim të lartë",
+       "grant-oversight": "Fshih përdorues dhe versione",
+       "grant-patrol": "Patrullo ndryshime në faqe",
+       "grant-privateinfo": "Qasu në informacion privat",
+       "grant-protect": "Mbroj dhe çmbroj faqe",
+       "grant-rollback": "Kthe ndryshime në faqe",
        "grant-sendemail": "Dërgo e-mail te përdoruesit tjerë",
+       "grant-uploadeditmovefile": "Ngarko, zëvendëso dhe zhvendos skedarë",
+       "grant-uploadfile": "Ngarko skedarë të ri",
+       "grant-basic": "Të drejta bazike",
+       "grant-viewdeleted": "Shiko skedarët dhe faqet e fshira",
+       "grant-viewmywatchlist": "Shiko listën tënde mbikëqyrëse",
+       "grant-viewrestrictedlogs": "Shiko regjistrimet e kufizuara",
        "newuserlogpage": "Regjistri i llogarive",
        "newuserlogpagetext": "Ky është një regjistër i llogarive të fundit që janë hapur",
        "rightslog": "Regjistri i privilegjeve të përdoruesit",
        "action-createpage": "krijo këtë faqe",
        "action-createtalk": "krijo këtë faqe diskutimi",
        "action-createaccount": "krijo këtë llogari përdoruesi",
+       "action-autocreateaccount": "krijo këtë llogari të përdoruesit të jashtëm vetvetiu",
        "action-history": "shiko historinë e kësaj faqeje",
        "action-minoredit": "shëno këtë redaktim si të vogël",
        "action-move": "zhvendos këtë faqe",
        "action-writeapi": "përdor API-në e shkrimit",
        "action-delete": "grise këtë faqe",
        "action-deleterevision": "gris versionet",
+       "action-deletelogentry": "fshij regjistrimet në ditar",
        "action-deletedhistory": "shiko historinë e grisur të një faqeje",
+       "action-deletedtext": "shiko tekstin e versionit të fshirë",
        "action-browsearchive": "kërko faqe të grisura",
        "action-undelete": "restauro faqe",
        "action-suppressrevision": "rishiko dhe rikthe versione të fshehura",
        "action-userrights-interwiki": "ndrysho të drejtat e përdoruesve në wiki-t tjera",
        "action-siteadmin": "mbyll ose hap bazën e të dhënave",
        "action-sendemail": "dërgo e-maile",
+       "action-editmyoptions": "redakto parapëlqimet tua",
        "action-editmywatchlist": "redaktoni listën tuaj mbikqyrëse",
        "action-viewmywatchlist": "shikoni listën tuaj mbikqyrëse",
+       "action-viewmyprivateinfo": "shiko informacionin tënd privat",
+       "action-editmyprivateinfo": "ndrysho informacionin tënd privat",
+       "action-editcontentmodel": "ndrysho modelin e përmbajtjes së një faqe",
+       "action-managechangetags": "krijo dhe (ç)aktivizo etiketat",
+       "action-applychangetags": "apliko etiketat bashkë me ndryshimet tuaja",
+       "action-purge": "fshij këtë faqe",
        "nchanges": "$1 {{PLURAL:$1|ndryshim|ndryshime}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|që nga vizita e fundit}}",
        "enhancedrc-history": "historia",
        "recentchanges-legend-heading": "<strong>Legjenda:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (shiko gjithashtu [[Special:NewPages|listën e faqeve të reja]])",
        "recentchanges-submit": "Shfaq",
+       "rcfilters-activefilters": "Filtrat aktiv",
+       "rcfilters-quickfilters": "Ruaj rregullimet e filtrit",
+       "rcfilters-quickfilters-placeholder-title": "Asnjë lidhje e ruajtur",
+       "rcfilters-savedqueries-defaultlabel": "Filtrat e ruajtur",
+       "rcfilters-savedqueries-rename": "Riemro",
+       "rcfilters-savedqueries-setdefault": "Vendosur si parazgjedhje",
+       "rcfilters-savedqueries-unsetdefault": "Hiqe si parazgjedhje",
+       "rcfilters-savedqueries-remove": "Largo",
+       "rcfilters-savedqueries-new-name-label": "Emri",
+       "rcfilters-savedqueries-apply-label": "Ruaj rregullimet",
+       "rcfilters-savedqueries-cancel-label": "Anulo",
+       "rcfilters-savedqueries-add-new-title": "Ruaj rregullimet e tanishme të filtrit",
+       "rcfilters-restore-default-filters": "Kthej filtrat e parazgjedhur",
+       "rcfilters-clear-all-filters": "Pastro të gjithë filtrat",
+       "rcfilters-search-placeholder": "Filtro ndryshimet e fundit (shfleto ose fillo të shtypësh)",
+       "rcfilters-invalid-filter": "Filtër jo i vlefshëm",
+       "rcfilters-empty-filter": "S'ka filtra aktiv. Tregohen të gjitha kontributet.",
+       "rcfilters-filterlist-title": "Filtrat",
+       "rcfilters-filterlist-whatsthis": "Çka është kjo?",
+       "rcfilters-highlightbutton-title": "Thekso rezultatet",
+       "rcfilters-highlightmenu-title": "Zgjedh një ngjërë",
+       "rcfilters-highlightmenu-help": "Zgjedh një ngjyrë për të theksuar këtë tipar",
+       "rcfilters-filterlist-noresults": "Nuk u gjet ndonjë filtër",
+       "rcfilters-noresults-conflict": "Nuk u gjetën rezultate sepse kriteret e kërkimit janë kundërthënës",
        "rcfilters-filtergroup-registration": "Regjistrimi i përdoruesit",
        "rcfilters-filter-registered-label": "Regjistruar",
        "rcfilters-filter-registered-description": "Redaktorët e kyçur",
        "rcfilters-filter-unregistered-label": "Ç'regjistruar",
-       "rcfilters-filtergroup-authorship": "Ndrysho autorsinë",
-       "rcfilters-filter-editsbyself-label": "Redaktimet tuaja",
-       "rcfilters-filter-editsbyself-description": "Redaktimet nga ju.",
-       "rcfilters-filter-editsbyother-label": "Redaktimet nga të tjerët",
-       "rcfilters-filter-editsbyother-description": "Redaktimet e krijuara nga përdoruesit tjerë (jo ti).",
+       "rcfilters-filter-unregistered-description": "Redaktorët që nuk janë të kyçur",
+       "rcfilters-filtergroup-authorship": "Autorësia e kontributit",
+       "rcfilters-filter-editsbyself-label": "Ndryshimet nga ti",
+       "rcfilters-filter-editsbyself-description": "Kontributet tuaja.",
+       "rcfilters-filter-editsbyother-label": "Kontributet nga të tjerët",
+       "rcfilters-filter-editsbyother-description": "Të gjitha ndryshimet përveç nga ti.",
+       "rcfilters-filtergroup-userExpLevel": "Niveli i përvojës (vetëm për përdoruesit e regjistruar)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Të rinjtë",
        "rcfilters-filter-user-experience-level-newcomer-description": "Më pak se 10 redaktime dhe 4 ditë aktivitet.",
        "rcfilters-filter-user-experience-level-learner-label": "Nxënës",
        "rcfilters-filter-minor-description": "Redaktimet që autori i ka shënuar si të vogla",
        "rcfilters-filter-major-label": "Redaktimet jo të vogla",
        "rcfilters-filter-major-description": "Redaktimet jo të shënuara si të vogla.",
+       "rcfilters-filtergroup-watchlist": "Faqet e mbikëqyrura",
+       "rcfilters-filter-watchlist-watched-label": "Në Listën e Mbikëqyrur",
+       "rcfilters-filter-watchlist-watched-description": "Ndryshimet në faqet në Listën tënde të Mbikëqyrjes.",
+       "rcfilters-filter-watchlist-watchednew-label": "Ndryshimet e reja në Listën e Mbikëqyrjes",
+       "rcfilters-filter-watchlist-watchednew-description": "Ndryshimet në faqet e Mbikëqyrura që nuk keni vizituar që nga ndodhja e ndryshimeve.",
+       "rcfilters-filter-watchlist-notwatched-label": "Jo në Listën e Mbikëqyrjes",
+       "rcfilters-filter-watchlist-notwatched-description": "Çdo gjë përveç ndryshimeve në faqet në Listën e Mbikëqyrjes.",
        "rcfilters-filtergroup-changetype": "Lloji i ndryshimit",
        "rcfilters-filter-pageedits-label": "Redaktimet e faqes",
        "rcfilters-filter-pageedits-description": "Redaktimet e përmbajtjes wiki, diskutimeve, përshkrimit të kategorive...",
        "rcfilters-filter-categorization-description": "Regjistri i faqeve të shtuara ose hequra nga kategoritë.",
        "rcfilters-filter-logactions-label": "Veprimet e regjistruara",
        "rcfilters-filter-logactions-description": "Veprimet administrative, krijimet e llogarive, fshirjet e faqeve, ngarkimet...",
+       "rcfilters-filtergroup-lastRevision": "Versioni i fundit",
+       "rcfilters-filter-lastrevision-label": "Versioni i fundit",
+       "rcfilters-filter-lastrevision-description": "Ndryshimet më të fundit në një faqe.",
+       "rcfilters-filter-previousrevision-label": "Versionet më të hershme",
+       "rcfilters-filter-previousrevision-description": "Të gjitha ndryshimet që nuk janë ndryshimet më të fundit në një faqe.",
        "rcnotefrom": "Më poshtë {{PLURAL:$5|është shfaqur ndryshimi|janë shfaqur ndryshimet}} që nga <strong>$3, $4</strong> (deri në <strong>$1</strong>).",
+       "rclistfromreset": "Anulo përzgjedhjen e datës",
        "rclistfrom": "Tregon ndryshime së fundmi duke filluar nga $3 $2",
        "rcshowhideminor": "$1 redaktimet e vogla",
        "rcshowhideminor-show": "Shfaq",
        "rcshowhidecategorization": "$1 kategorizim i faqes",
        "rcshowhidecategorization-show": "Shfaq",
        "rcshowhidecategorization-hide": "Fshih",
-       "rclinks": "Trego $1 ndryshime gjatë $2 ditëve<br />$3",
+       "rclinks": "Trego $1 ndryshime gjatë $2 ditëve",
        "diff": "ndrysh",
        "hist": "hist",
        "hide": "fshih",
        "windows-nonascii-filename": "Ky wiki nuk e mbështet emrin e dokumentit me karaktere të veçanta.",
        "fileexists": "Ekziston një skedë me atë emër, ju lutem kontrolloni <strong>[[:$1]]</strong> në qoftë se nuk jeni të sigurt nëse dëshironi ta zëvendësoni.\n[[$1|thumb]]",
        "filepageexists": "Përshkrimi i faqes për këtë skedë është krijuar tek <strong>[[:$1]]</strong>, por asnjë skedë me këtë emër nuk ekziston.\nPërmbledhja që shkruat nuk do të shfaqet në përshkrimin e faqes.\nPër ta bërë përmbledhjen tuaj të dukshme atje, ju duhet ta redaktoni automatikisht.\n[[$1|thumb]]",
-       "fileexists-extension": "Ekziston një skedë me emër të ngjashëm: [[$2|thumb]]\n* Emri i skedës në ngarkim: <strong>[[:$1]]</strong>\n* Emri i skedës ekzistuese: <strong>[[:$2]]</strong>\nJu lutem zgjidhni një emër tjetër.",
+       "fileexists-extension": "Ekziston një skedë me emër të ngjashëm: [[$2|thumb]]\n*Emri i skedës në ngarkim: <strong>[[:$1]]</strong>\n*Emri i skedës ekzistuese: <strong>[[:$2]]</strong>\nMos dëshironi të zgjidhni një emër më të dallueshëm?",
        "fileexists-thumbnail-yes": "Kjo skedë duket se është një figurë me madhësi të zvogëluar ''(figurë përmbledhëse)''. [[$1|thumb]]\nJu lutem kontrolloni skedën <strong>[[:$1]]</strong>.\nNëse skeda e kontrolluar është e së njëjtës madhësi me origjinalen atëherë nuk ka nevojë të ngarkoni një figurë përmbledhëse.",
        "file-thumbnail-no": "Emri i skedës fillon me <strong>$1</strong>.\nDuket se është një figurë me madhësi të zvogëluar ''(thumbnail)''.\nNëse keni këtë figurë me madhësi të plotë ju lutem të ngarkoni atë, përndryshe ju lutem të ndryshoni emrin e skedës.",
        "fileexists-forbidden": "Ekziston një skedë me të njëjtin emër. Ju lutemi kthehuni mbrapsht dhe ngarkoni këtë skedë me një emër të ri. \n[[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "Ekziston një skedë me të njëjtin emër në magazinën e përbashkët. Ju lutem kthehuni mbrapsht dhe ngarkojeni këtë skedë me një emër të ri. \n [[File:$1|thumb|center|$1]]",
+       "fileexists-no-change": "Ky ngarkim është një kopje e saktë e versionit aktual <strong>[[:$1]]</strong>.",
        "file-exists-duplicate": "Kjo skedë është dyfish i {{PLURAL:$1|skedës|skedave}} në vijim:",
        "file-deleted-duplicate": "Një skedë identike më këtë skedë ([[:$1]]) është grisur më përpara.\nJu duhet të kontrolloni historikun e grisjes të asaj skede përpara se ta ri-ngarkoni atë.",
        "uploadwarning": "Kujdes dhënie",
        "uploaddisabledtext": "Ngarkimi i skedave është i ndaluar.",
        "php-uploaddisabledtext": "Ngarkimet e skedave në PHP janë të çaktivizuara.\nJu lutemi kontrolloni parametrat e ngarkimeve të skedave.",
        "uploadscripted": "Skeda përmban HTML ose kode të tjera që mund të interpretohen gabimisht nga një shfletues.",
+       "uploadinvalidxml": "XML në skedarin e ngarkuar nuk mund të kontrollohej.",
        "uploadvirus": "Skeda përmban një virus! Detaje: $1",
        "uploadjava": "Dokumenti është në formatin ZIP i cili përmban Java. class dokumente.\nNgarkimi i Java dokumenteve nuk është i lejuar, sepse ato mund të shkaktojnë kufizime të sigurisë për ti anashkaluar.",
        "upload-source": "Burimi i skedës",
        "upload-too-many-redirects": "Adresa URL përmbante shumë përcjellime.",
        "upload-http-error": "Ndodhi një gabim HTTP: $1",
        "upload-copy-upload-invalid-domain": "Ngarkesat e kopjimit nuk janë në dispozicion nga ky domein.",
+       "upload-dialog-disabled": "Ngarkimet e skedarëve që përdorin këtë dialog janë çaktivizuar në këtë wiki.",
        "upload-dialog-title": "Ngarko skedën",
        "upload-dialog-button-cancel": "Anulo",
        "upload-dialog-button-back": "Prapa",
        "upload-dialog-button-upload": "Ngarko",
        "upload-form-label-infoform-title": "Detaje",
        "upload-form-label-infoform-name": "Emri",
+       "upload-form-label-infoform-description": "Përshkrimi",
        "upload-form-label-usage-title": "Përdorimi",
        "upload-form-label-usage-filename": "Emri i skedarit",
        "upload-form-label-own-work": "Kjo është e puna ime",
        "upload_source_url": "(skedari i zgjedhur nga një URL e vlefshme, publikisht e qasshme)",
        "upload_source_file": "(skeda e zgjedhur në kompjuterin tuaj)",
        "listfiles-delete": "fshije",
-       "listfiles-summary": "Kjo faqe speciale tregon tërë skedat e ngarkuara.\nFillimisht skedat e ngarkuara së fundmi jepen më sipër.\nShtypni kolonat e tjera për të ndryshuar radhitjen.",
+       "listfiles-summary": "Kjo faqe e veçantë tregon tërë skedat e ngarkuara.",
        "listfiles_search_for": "Kërko për emrin e figurës:",
        "imgfile": "skeda",
        "listfiles": "Lista e figurave",
        "unusedtemplateswlh": "lidhje",
        "randompage": "Faqe e rastit",
        "randompage-nopages": "Nuk ka faqe në {{PLURLA:$2|hapësirën|hapësirat}} në vijim: $1",
+       "randomincategory": "Faqe rasti në kategori",
        "randomincategory-invalidcategory": "\"$1\" nuk është emër i vlefshëm kategorie.",
        "randomincategory-nopages": "Nuk ka faqe në kategorinë [[:Category:$1|$1]].",
        "randomincategory-category": "Kategoria:",
        "statistics-users": "[[Special:ListUsers|Përdoruesit]] e regjistruar",
        "statistics-users-active": "Përdoruesit aktiv",
        "statistics-users-active-desc": "Përdoruesit që kanë së paku një veprim në {{PLURAL:$1|ditën|$1 ditët}} e fundit",
+       "pageswithprop": "Faqe me një tipar faqeje",
+       "pageswithprop-legend": "Faqe me një tipar faqeje",
        "pageswithprop-prop": "Emri i pronës:",
        "pageswithprop-submit": "Shko",
        "doubleredirects": "Përcjellime dopjo",
        "protectedpages-cascade": "Vetëm mbrojtjet",
        "protectedpages-noredirect": "Fshih përcjellimet",
        "protectedpagesempty": "Nuk ka faqe të mbrojtura me të dhënat e kërkuara.",
+       "protectedpages-timestamp": "Stampa e kohës",
        "protectedpages-page": "Faqja",
        "protectedpages-expiry": "Skadon",
+       "protectedpages-performer": "Duke mbrojtur përdoruesin",
+       "protectedpages-params": "Parametrat e mbrotjes",
        "protectedpages-reason": "Arsyeja",
        "protectedpages-submit": "Shfaq faqet",
        "protectedpages-unknown-timestamp": "E panjohur",
        "listusers": "Lista e përdoruesve",
        "listusers-editsonly": "Trego vetëm përdoruesit me redaktime",
        "listusers-creationsort": "Radhiti sipas datës së krijimit",
+       "listusers-desc": "Rëndit nga e madhja",
        "usereditcount": "$1 {{PLURAL:$1|redaktim|redaktime}}",
        "usercreated": "{{GENDER:$3|Krijuar}} më $1 në $2",
        "newpages": "Artikuj të rinj",
        "apisandbox": "API livadhi",
        "apisandbox-jsonly": "JavaScript është e domosdoshme që të përdorni API livadhi.",
        "apisandbox-api-disabled": "API nuk është në dispozicion për këtë faqe.",
+       "apisandbox-fullscreen": "Zgjero panelin",
        "apisandbox-unfullscreen": "Shfaq faqen",
        "apisandbox-submit": "Bëj kërkesë",
        "apisandbox-reset": "Pastro",
        "apisandbox-retry": "Riprovo",
+       "apisandbox-no-parameters": "Moduli API nuk ka parametra.",
+       "apisandbox-helpurls": "Lidhje të ndihmës",
        "apisandbox-examples": "Shembuj",
        "apisandbox-dynamic-parameters": "Parametra shtesë",
        "apisandbox-dynamic-parameters-add-label": "Shto parametër:",
        "apisandbox-dynamic-parameters-add-placeholder": "Emri i parametrit",
+       "apisandbox-dynamic-error-exists": "Një parametër i quajtur \"$1\" tashmë ekziston.",
+       "apisandbox-deprecated-parameters": "Parametra të nxjerrë nga funksioni",
+       "apisandbox-fetch-token": "Vet-mbush tokenin",
+       "apisandbox-submit-invalid-fields-title": "Disa fusha janë të pavlefshme",
+       "apisandbox-submit-invalid-fields-message": "Ju lutem korrigjoni fushat e shënuara dhe provoni prap.",
        "apisandbox-results": "Rezultatet",
+       "apisandbox-sending-request": "Po dërgohen kërkesat API...",
+       "apisandbox-loading-results": "Po pranohen rezultatet API...",
+       "apisandbox-results-error": "Ndodhi një gabim gjatë ngarkimit të përgjigjes në kërkesën API: $1",
+       "apisandbox-request-selectformat-label": "Trego të dhënat e kërkuara si:",
+       "apisandbox-request-url-label": "URL e kërkesës:",
+       "apisandbox-request-json-label": "Kërko JSON:",
+       "apisandbox-request-time": "Koha e kërkesës: {{PLURAL:$1|$1 ms}}",
+       "apisandbox-results-fixtoken": "Përmirëso tokenin dhe ridorëzoje",
+       "apisandbox-results-fixtoken-fail": "Dështoi të merr \"$1\" tokenin.",
+       "apisandbox-alert-page": "Fushat në këtë faqe nuk janë të vlefshme.",
+       "apisandbox-alert-field": "Vlera në këtë fushë nuk është e vlefshme.",
        "apisandbox-continue": "Vazhdo",
        "apisandbox-continue-clear": "Pastro",
        "apisandbox-param-limit": "Shkruaj <kbd>max</kbd> për të përdorur maksimumin e limitit",
        "booksources-text": "Më posht është një listë me lidhje të cilët shesin ose përdorin libra dhe munden të kenë informacione për librat që kërkoni ju:",
        "booksources-invalid-isbn": "ISBN-ja e dhënë nuk duket të jetë e vlefshme; kontrolloni oër gabime gjatë kopjimit nga burimi origjinal.",
        "specialloguserlabel": "Performuesi:",
-       "speciallogtitlelabel": "Objektivi (titulli ose përdoruesi):",
+       "speciallogtitlelabel": "Caku (titulli ose {{ns:user}}:emri i përdoruesit):",
        "log": "Regjistrat",
        "logeventslist-submit": "Shfaq",
        "all-logs-page": "Të gjitha regjistrat",
        "logempty": "Nuk ka asnjë përputhje në regjistër.",
        "log-title-wildcard": "Kërko tituj që fillojnë me këtë tekst",
        "showhideselectedlogentries": "Paraqit/fshih shënimet e përzgjedhura të regjistruara.",
+       "checkbox-select": "Zgjedh: $1",
        "checkbox-all": "Të gjitha",
        "checkbox-none": "Asnjë",
        "checkbox-invert": "E kundërta",
        "linksearch-pat": "Motivi kërkimor:",
        "linksearch-ns": "Hapësira:",
        "linksearch-ok": "Kërko",
-       "linksearch-text": "Ylli zëvëndësues mund të përdoret si p.sh. \"*.wikipedia.org\".\nDuhet një domen top-nivel, si p.sh. \"*.org.<br />\nProtokolle të mbështetura: <code>$1<code> (mos shtoni ndonjërin nga këta në kërkimin tuaj).",
+       "linksearch-text": "Ylli zëvendësues mund të përdoret si p.sh. \"*.wikipedia.org\".\nDuhet një domen top-nivel, si p.sh. \"*.org.<br />\n{{PLURAL:$2|Protokolli i|Protokollet e}} mbështetura: $1 (vendoset http:/ nëse nuk përcaktohet protokolli).",
        "linksearch-line": "$1 lidhur nga $2",
        "linksearch-error": "Ylli mund të përdoret vetëm në fillim të emrit",
        "listusersfrom": "Trego përdoruesit duke filluar prej te:",
        "listusers-blocked": "(Bllokuar)",
        "activeusers": "Lista e përdoruesve aktivë",
        "activeusers-intro": "Kjo është një listë e përdoruesve që kanë qenë aktivë për $1 {{PLURAL:$1|ditë|ditë}}.",
-       "activeusers-count": "$1 {{PLURAL:$1|redaktim|redaktime}} në {{PLURAL:$3|ditën|$3 ditët}} e fundit",
+       "activeusers-count": "$1 {{PLURAL:$1|veprim|veprime}} në {{PLURAL:$3|ditën|$3 ditët}} e fundit",
        "activeusers-from": "Trego përdoruesit duke filluar prej te:",
        "activeusers-noresult": "Asnjë përdorues nuk u gjet.",
+       "activeusers-submit": "Shfaq përdoruesit aktiv",
        "listgrouprights": "Grupime përdoruesish me privilegje",
        "listgrouprights-summary": "Më poshtë jepet grupimi i përdoruesve sipas privilegjeve që ju janë dhënë në këtë wiki. Më shumë informacion rreth privilegjeve në veçanti mund të gjendet [[{{MediaWiki:Listgrouprights-helppage}}|këtu]].",
-       "listgrouprights-key": "* <span class=\"listgrouprights-granted\">E drejtë e garantuar</span>\n* <span class=\"listgrouprights-revoked\">E drejtë e revokuar</span>",
+       "listgrouprights-key": "Legjenda:\n* <span class=\"listgrouprights-granted\">E drejtë e dhënë</span>\n* <span class=\"listgrouprights-revoked\">E drejtë e revokuar</span>",
        "listgrouprights-group": "Grupi",
        "listgrouprights-rights": "Privilegjet",
        "listgrouprights-helppage": "Help:Grupime privilegjesh",
        "listgrouprights-removegroup-self": "Hiqni {{PLURAL:$2|grupin|grupet}} nga llogaria: $1",
        "listgrouprights-addgroup-self-all": "Shtoni të gjitha grupet tek llogaria",
        "listgrouprights-removegroup-self-all": "Hiq të gjitha grupet nga llogaria",
+       "listgrouprights-namespaceprotection-header": "Kufizimet e hapësirës",
+       "listgrouprights-namespaceprotection-namespace": "Hapësira",
+       "listgrouprights-namespaceprotection-restrictedto": "Të drejtat që lejojnë përdoruesin të redaktoj",
+       "listgrants": "Të dhënat",
+       "listgrants-grant": "Jep",
+       "listgrants-rights": "Privilegjet",
+       "trackingcategories": "Kategoritë përcjellëse",
        "trackingcategories-msg": "Kategoria përcjellëse",
        "trackingcategories-name": "Emri i porosisë",
        "trackingcategories-desc": "Kriteret për përfshirje në kategori",
+       "restricted-displaytitle-ignored": "Faqet me tituj të shfaqur të injoruar",
+       "trackingcategories-disabled": "Kategoria është pamundësuar",
        "mailnologin": "S'ka adresë dërgimi",
        "mailnologintext": "Duhet të keni [[Special:UserLogin|hyrë brenda]] dhe të keni një adresë të saktë në [[Special:Preferences|parapëlqimet]] tuaja për tu dërguar email përdoruesve të tjerë.",
        "emailuser": "Email {{GENDER:{{PAGENAME}}|përdoruesit|përdorueses}}",
-       "emailuser-title-target": "Dërgo email te ky përdorues",
+       "emailuser-title-target": "Dërgo email te ky {{GENDER:$1|përdorues}}",
        "emailuser-title-notarget": "Email për përdoruesin",
-       "emailpagetext": "Mund të përdorni formularin e mëposhtëm për të dërguar e-mail tek ky përdorues.\nAdresa e email-it që shkruat tek [[Special:Preferences|preferencat tuaja]] do të duket si \"Nga\" adresa e email-it, pra marrësi do të ketë mundësinë t'ju përgjigjet direkt.",
+       "emailpagetext": "Mund të përdorni formularin e mëposhtëm për të dërguar e-mail tek ky {{GENDER:$1|përdorues}}.\nAdresa e email-it që shkruat tek [[Special:Preferences|preferencat tuaja]] do të duket si \"Nga\" adresa e email-it, pra marrësi do të ketë mundësinë t'ju përgjigjet direkt.",
        "defemailsubject": "{{SITENAME}} emaili nga përdoruesi \"$1\"",
        "usermaildisabled": "Email-i i përdoruesit çaktivizua",
        "usermaildisabledtext": "Ju nuk mund të dërgoni e-mail tek përdoruesit e tjerë në këtë wiki",
        "emailccsubject": "Kopje e emailit tuaj për $1: $2",
        "emailsent": "Email-i u dërgua",
        "emailsenttext": "Email-i është dërguar.",
-       "emailuserfooter": "Kjo porosi elektronike u dërgua nga $1 tek $2 nga \"Dërgoi postë elektronike përdoruesit\" funksion në {{SITENAME}}.",
+       "emailuserfooter": "Kjo porosi elektronike u dërgua nga $1 tek $2 nga \"{{int:emailuser}}\" në {{SITENAME}}. Nëse përgjigjeni në këtë email, emaili juaj do të dërgohet direkt te dërguesi fillestar, duke ua shfaqur adresën tuaj të emailit atyre.",
        "usermessage-summary": "Lënia e mesazhit të sistemit.",
        "usermessage-editor": "I dërguari i sistemit",
        "watchlist": "Lista mbikqyrëse",
        "enotif_subject_restored": "{{SITENAME}} faqja $1 është rikthyer nga $2",
        "enotif_subject_changed": "{{SITENAME}} faqja $1 është ndryshuar nga $2",
        "enotif_body_intro_deleted": "{{SITENAME}} faqja $1 është fshirë në $PAGEEDITDATE nga $2, shiko $3.",
-       "enotif_lastvisited": "Shikoni $1 për të gjitha ndryshimet që prej vizitës tuaj të fundit.",
-       "enotif_lastdiff": "Shikoni $1 për ndryshime.",
+       "enotif_lastvisited": "Për të gjitha ndryshimet që prej vizitës tuaj të fundit, shikoni $1",
+       "enotif_lastdiff": "Për të shikuar këtë ndryshim, shikoni $1",
        "enotif_anon_editor": "përdorues anonim $1",
        "enotif_body": "I nderuar $WATCHINGUSERNAME, \n\nKjo {{SITENAME}} faqe $PAGETITLE është $CHANGEDORCREATED më $PAGEEDITDATE nga $PAGEEDITOR, shikoni $PAGETITLE_URL për versionin më të ri.\n\n$NEWPAGE\n\nPërmbledhja e redaktorit: $PAGESUMMARY $PAGEMINOREDIT\nKontakto:\nemail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nNuk do të ketë njoftime të tjera për ndryshimet e ardhshme përveç nëse e vizitoni faqen. Gjithashtu mund të ktheni gjendjen e njoftimeve për të gjitha faqet nën mbikëqyrje.\n\nMiku juaj njoftues nga {{SITENAME}}\n\n--\nPër të ndryshuar parapëlqimet e mbikëqyrjes, shikoni {{canonicalurl:Special:Watchlist/edit}}\n\nPër të larguar faqen nga lista juaj e mbikëqyrjes, shikoni\n$UNWATCHURL\n\nPër përshtypje dhe ndihmë të mëtejshme:\n$HELPPAGE",
        "created": "u krijua",
        "delete-edit-reasonlist": "Ndrysho arsyet e grisjes",
        "delete-toobig": "Kjo faqe ka një historik të madh redaktimesh, më shumë se $1 {{PLURAL:$1|version|versione}}.\nGrisja e faqeve të tilla ka qenë kufizuar për të parandaluar përçarjen aksidentale të {{SITENAME}}.",
        "delete-warning-toobig": "Kjo faqe ka një historik të madh redaktimesh, më shumë se $1 {{PLURAL:$1|version|versione}}.\nGrisja e saj mund të ndërpresë operacionet e bazës së të dhënave të {{SITENAME}};\nvazhdoni me kujdes.",
+       "deleteprotected": "Nuk mund ta fshini këtë faqet sepse është mbrojtur.",
        "rollback": "Riktheji mbrapsh redaktimet",
        "rollbacklink": "riktheje",
        "rollbacklinkcount": "rikthe $1 {{PLURAL:$1|ndryshim|ndryshime}}",
        "rollbacklinkcount-morethan": "riktheni më tepër $1 {{PLURAL:$1|ndryshim|ndryshime}}",
        "rollbackfailed": "Rikthimi dështoi",
+       "rollback-missingparam": "Mungojnë parametrat e kërkuara mbi kërkesën.",
+       "rollback-missingrevision": "E pamundur të ngarkohen të dhënat e versionit.",
        "cantrollback": "Redaktimi nuk mund të kthehej;\nredaktori i fundit është i vetmi autor i këtij artikulli.",
        "alreadyrolled": "Nuk mund të rikthehej redaktimi i fundit i [[:$1]] nga [[User:$2|$2]] ([[User talk:$2|diskuto]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); dikush tjetër e ka redaktuar ose rikthyer këtë faqe tashmë.\n\nRedaktimi i fundit është bërë nga [[User:$3|$3]] ([[User talk:$3|diskuto]]{{nt:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Përmbledhja e redaktimit ishte: <em>$1</em>.",
        "rollback-success": "U kthyen mbrapsht redaktimet e {{GENDER:$3|$1}}; \nu kthye te versioni i fundit nga {{GENDER:$4|$2}}.",
        "sessionfailure-title": "Dështim sesioni",
        "sessionfailure": "Duket se ka një problem me seancën tuaj hyrëse; ky veprim është anuluar për tu mbrojtur nga ndonjë veprim dashakeq kundrejt shfletimit tuaj. Ju lutemi kthehuni mbrapsh, rifreskoni faqen prej nga erdhët dhe provojeni përsëri veprimin.",
+       "changecontentmodel": "Ndrysho modelin e përmbajtjes së një faqeje",
+       "changecontentmodel-legend": "Ndrysho modelin e përmbajtjes",
        "changecontentmodel-title-label": "Titulli i faqes",
+       "changecontentmodel-model-label": "Model i ri i përmbajtjes",
        "changecontentmodel-reason-label": "Arsyeja:",
        "changecontentmodel-submit": "Ndrysho",
+       "changecontentmodel-success-title": "Modeli i përmbajtjes është ndryshuar",
+       "changecontentmodel-success-text": "Tipi i përmbajtjes së [[:$1]] është ndryshuar.",
+       "changecontentmodel-cannot-convert": "Përmbajtja në [[:$1]] nuk mund të ndryshohet në një lloj të $2.",
+       "changecontentmodel-nodirectediting": "Modeli i përmbajtjes së $1 nuk përkrah redaktim të drejtpërdrejt",
+       "changecontentmodel-emptymodels-title": "Nuk ka ndonjë model të përmbajtjes",
+       "changecontentmodel-emptymodels-text": "Përmbajta në [[:$1]] nuk mund të ndërrohet në ndonjë lloj tjetër.",
+       "log-name-contentmodel": "Ditari i ndryshimeve të modelit të përmbajtjes",
+       "logentry-contentmodel-change-revertlink": "ktheje",
+       "logentry-contentmodel-change-revert": "ktheje",
        "protectlogpage": "Regjistri i mbrojtjeve",
        "protectlogtext": "Më poshtë është lista e kyçjeve dhe çkyçjeve të faqes.\nShih listën e [[Special:ProtectedPages|faqeve të mbrojtura]] nga lista e mbrojtjeve të faqeve tani në veprim.",
        "protectedarticle": "mbrojti [[$1]]",
        "modifiedarticleprotection": "u ndryshua mbrojtja e faqes \"[[$1]]\"",
        "unprotectedarticle": "Largo mbrojtjen nga \" [[$1]] \"",
        "movedarticleprotection": "u bartën të dhënat e mbrojtjes nga \"[[$2]]\" në \"[[$1]]\"",
+       "protectedarticle-comment": "{{GENDER:$2|Mbrojtur}} \"[[$1]]\"",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|U ndryshua niveli i mbrojtjes}} për \"[[$1]]\"",
+       "unprotectedarticle-comment": "{{GENDER:$2|Hoqi mbrojtjen}} nga \"[[$1]]\"",
        "protect-title": "Ndryshoni nivelin e mbrojtjes së \"$1\"",
        "protect-title-notallowed": "Shiko nivelin e mbrojtjes së \"$1\"",
        "prot_1movedto2": "[[$1]] u zhvendos tek [[$2]]",
        "protect-badnamespace-title": "Hapësirë e pambrojtshme",
        "protect-badnamespace-text": "Faqet në këtë hapësirë nuk mund të mbrohen.",
+       "protect-norestrictiontypes-text": "Kjo faqe nuk mund të mbrohet sepse nuk ka lloje të kufizimit në dispozicion.",
+       "protect-norestrictiontypes-title": "Faqet e pambrojtshme",
        "protect-legend": "Konfirmoni",
        "protectcomment": "Arsyeja:",
        "protectexpiry": "Afati",
        "protect-othertime": "Kohë tjetër:",
        "protect-othertime-op": "kohë tjetër",
        "protect-existing-expiry": "Koha ekzistuese e skadimit: $3, $2",
+       "protect-existing-expiry-infinity": "Koha ekzistuese e skadimit: pakufi",
        "protect-otherreason": "Arsye tjera/shtesë:",
        "protect-otherreason-op": "Arsyeja tjetër",
        "protect-dropdown": "*Arsye të përgjithshme të mbrojtjes\n**Vandalizëm i tepërt\n**Spam i tepërt\n**Paralajmërim i redaktimeve joprodukive\n**Faqe me trafik të lartë",
        "mycontris": "Kontributet",
        "anoncontribs": "Kontribute",
        "contribsub2": "Për {{GENDER:$3|$1}} ($2)",
+       "contributions-userdoesnotexist": "Llogaria e përdoruesit \"$1\" nuk është e regjistruar.",
        "nocontribs": "Nuk ka asnjë ndryshim që përputhet me këto kritere.",
        "uctop": "(aktual)",
        "month": "Nga muaji (dhe më herët):",
        "sp-contributions-uploads": "ngarkimet",
        "sp-contributions-logs": "Regjistrat",
        "sp-contributions-talk": "Diskutoni",
-       "sp-contributions-userrights": "menaxhimi i të drejtave të përdoruesit",
+       "sp-contributions-userrights": "menaxhimi i të drejtave të {{GENDER:$1|përdoruesit}}",
        "sp-contributions-blocked-notice": "Ky përdorues është i bllokuar.\nBllokimi i fundit është shfaqur më poshtë për referencë:",
        "sp-contributions-blocked-notice-anon": "Kjo adresë IP është e bllokuar aktualisht.\nBllokimi i funditë është më poshtë për referencë:",
        "sp-contributions-search": "Kërko tek kontributet",
        "sp-contributions-username": "IP Addresa ose Përdoruesi:",
        "sp-contributions-toponly": "Trego vetëm redaktimet që janë versionet më të fundit",
+       "sp-contributions-newonly": "Trego vetëm redaktimet që janë krijime të faqeve",
        "sp-contributions-hideminor": "Fshih redaktimet e vogla",
        "sp-contributions-submit": "Kërko",
        "whatlinkshere": "Lidhjet këtu",
        "unblock": "Zhblloko përdoruesin",
        "blockip": "Blloko {{GENDER:$1|user}}",
        "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.\nKjo duhet bërë vetëm në raste vandalizmi, dhe në përputhje me [[{{MediaWiki:Policy-url}}|rregullat e {{SITENAME}}-s]].\nPlotësoni arsyen specifike më poshtë (p.sh., tregoni faqet specifike që u vandalizuan).",
+       "blockiptext": "Përdorni formularin e mëposhtëm për të hequr lejen e shkrimit për një përdorues ose IP specifike.\nKjo duhet bërë vetëm në raste vandalizmi, dhe në përputhje me [[{{MediaWiki:Policy-url}}|politikat]].\nPlotësoni arsyen specifike më poshtë (p.sh., tregoni faqet specifike që u vandalizuan).\nJu mund të bllokoni vargjet e adresës IP duke përdorur sintaksën [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]; vargu më i madh i lejuar është /$1 për IPv4 dhe /$2 për IPv6.",
        "ipaddressorusername": "Adresë IP ose emër përdoruesi",
        "ipbexpiry": "Afati",
        "ipbreason": "Arsyeja:",
        "unblocked-id": "Bllokimi $1 është hequr",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] është zhbllokuar.",
        "blocklist": "Përdorues i Bllokuar",
+       "autoblocklist": "Autobllokimet",
+       "autoblocklist-submit": "Kërko",
+       "autoblocklist-legend": "Rreshto autobllokimet",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Autoblloku lokal|Autobllokimet lokale}}",
+       "autoblocklist-empty": "Lista e autobllokimeve është e zbrazët.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Autoblloku tjetër|Autoblloqet tjera}}",
        "ipblocklist": "Përdorues i Bllokuar",
        "ipblocklist-legend": "Gjej një përdorues të bllokuar",
        "blocklist-userblocks": "Fsheh bllokimin e llogarisë",
        "lockdbsuccesstext": "Regjistri është bllokuar.<br />\nKujtohuni ta [[Special:UnlockDB|çbllokoni]] pasi të keni mbaruar mirëmbajtjen.",
        "unlockdbsuccesstext": "Baza e të dhënave {{SITENAME}} është zhbllokuar.",
        "lockfilenotwritable": "Skeda për bllokimin e regjistrit s'mund të shkruhet.\nShërbyesi i rrjetit duhet të jetë në gjendje të shkruaj këtë skedë për të bllokuar ose çbllokuar regjistrin.",
+       "databaselocked": "Baza e të dhënave veç është bllokuar.",
        "databasenotlocked": "Regjistri nuk është bllokuar.",
        "lockedbyandtime": "(nga {{GENDER:$1|$1}} më $2 në $3)",
        "move-page": "Zhvendose $1",
        "move-page-legend": "Zhvendose faqen",
-       "movepagetext": "Duke përdorur formularin e mëposhtëm do të ndërroni titullin e një faqeje, duke zhvendosur gjithë historkun e saj tek titulli i ri.\nTitulli i vjetër do të bëhet një faqe ridrejtuese tek titulli i ri.\nLidhjet tek faqja e vjetër nuk do të ndryshohen;\nduhet të kontrolloni mirëmbajtjen për përcjellime të [[Special:DoubleRedirects|dyfishta]] ose të [[Special:BrokenRedirects|prishura]].\nKeni përgjegjësinë për tu siguruar që lidhjet të vazhdojnë të jenë të sakta.\n\nKini parasysh se kjo faqe '''nuk''' do të zhvendoset n.q.s. ekziston një faqe me titullin e ri, përveçse nëse ajo është bosh ose një përcjellim dhe nuk ka historik të redaktimeve.\nKjo do të thotë se mund ta zhvendosni një faqe prapë tek emri i vjetër n.q.s. keni bërë një gabim, dhe s'mund ta prishësh një faqe që ekziston.\n\n'''KUJDES!'''\nKy mund të jetë një ndryshim i madh dhe i papritur për një faqe të shumë-frekuentuar; ju lutem, kini kujdes dhe mendohuni mirë para se të përdorni këtë funksion.",
-       "movepagetext-noredirectfixer": "Duke përdorur formularin e mëposhtëm do të ndërroni titullin e një faqeje, duke zhvendosur gjithë historinë përkatëse tek titulli i ri.\nTitulli i vjetër do të bëhet një faqe përcjellëse tek titulli i ri.\nLidhjet tek faqja e vjetër nuk do të ndryshohen;\nduhet të kontrolloni mirëmbajtjen për përcjellime të [[Special:DoubleRedirects|dyfishta]] ose të [[Special:BrokenRedirects|prishura]].\nKeni përgjegjësinë për tu siguruar që lidhjet të vazhdojnë të jenë të sakta.\n\nVini re se kjo faqe '''nuk''' do të zhvendoset n.q.s. ekziston një faqe me titullin e ri, përveçse kur ajo të jetë bosh ose një përcjellim dhe të mos ketë një histori të vjetër.\nKjo do të thotë se mund ta zhvendosni një faqe prapë tek emri i vjetër n.q.s. keni bërë një gabim, dhe s'mund ta prishësh një faqe që ekziston.\n\n'''KUJDES!'''\nKy mund të jetë një ndryshim i madh dhe gjëra të papritura mund të ndodhin për një faqe të shumë-frekuentuar; ju lutem, kini kujdes dhe mendohuni mirë para se të përdorni këtë funksion.",
-       "movepagetalktext": "Faqja a bashkangjitur e diskutimit, n.q.s. ekziston, do të zhvendoset automatikisht '''përveçse''' kur:\n*Zhvendosni një faqe midis hapësirave të ndryshme,\n*Një faqe diskutimi jo-boshe ekziston nën titullin e ri, ose\n*Nuk zgjidhni kutinë më poshtë.\n\nNë ato raste, duhet ta zhvendosni ose përpuqni faqen vetë n.q.s. dëshironi.",
+       "movepagetext": "Duke përdorur formularin e mëposhtëm do të ndërroni titullin e një faqeje, duke zhvendosur gjithë historikun e saj tek titulli i ri.\nTitulli i vjetër do të bëhet një faqe ridrejtuese tek titulli i ri.\nLidhjet tek faqja e vjetër nuk do të ndryshohen;\nduhet të kontrolloni mirëmbajtjen për përcjellime të [[Special:DoubleRedirects|dyfishta]] ose të [[Special:BrokenRedirects|prishura]].\nKeni përgjegjësinë për tu siguruar që lidhjet të vazhdojnë të jenë të sakta.\n\nKini parasysh se kjo faqe <strong>nuk</strong>''' do të zhvendoset n.q.s. ekziston një faqe me titullin e ri, përveçse nëse ajo është bosh ose një përcjellim dhe nuk ka historik të redaktimeve.\n\nKjo do të thotë se mund ta zhvendosni një faqe prapë tek emri i vjetër n.q.s. keni bërë një gabim, dhe s'mund ta prishësh një faqe që ekziston.\n\n<strong>Shënim:</strong>\nKy mund të jetë një ndryshim i madh dhe i papritur për një faqe të shumë-frekuentuar; ju lutem, keni kujdes dhe mendohuni mirë para se të përdorni këtë funksion.",
+       "movepagetext-noredirectfixer": "Duke përdorur formularin e mëposhtëm do të ndërroni titullin e një faqeje, duke zhvendosur gjithë historinë përkatëse tek titulli i ri.\nTitulli i vjetër do të bëhet një faqe përcjellëse tek titulli i ri.\nLidhjet tek faqja e vjetër nuk do të ndryshohen;\nduhet të kontrolloni mirëmbajtjen për përcjellime të [[Special:DoubleRedirects|dyfishta]] ose të [[Special:BrokenRedirects|prishura]].\nKeni përgjegjësinë për tu siguruar që lidhjet të vazhdojnë të jenë të sakta.\n\nVini re se kjo faqe <strong>nuk</strong>''' do të zhvendoset n.q.s. ekziston një faqe me titullin e ri, përveçse kur ajo të jetë bosh ose një përcjellim dhe të mos ketë një histori të vjetër.\nKjo do të thotë se mund ta zhvendosni një faqe prapë tek emri i vjetër n.q.s. keni bërë një gabim, dhe s'mund ta prishësh një faqe që ekziston.\n\n<strong>Shënim:</strong>\nKy mund të jetë një ndryshim i madh dhe gjëra të papritura mund të ndodhin për një faqe të shumë-frekuentuar; ju lutem, kini kujdes dhe mendohuni mirë para se të përdorni këtë funksion.",
+       "movepagetalktext": "Nëse e zgjidhni këtë kuti, faqja a bashkangjitur e diskutimit vetvetiu do të zhvendoset te titulli i ri, përveç nëse një faqe jo e zbrazët e diskutimit veç ekziston atje.\n\nNë ato raste duhet ta zhvendosni ose përpuqni faqen vetë n.q.s. dëshironi.",
        "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.",
        "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.",
        "cant-move-user-page": "Ju nuk keni të drejat për të lzhvendosur faqet e përdoruesve (përveç nën-faqeve).",
        "cant-move-to-user-page": "Ju nuk keni të drejta për të zhvendosur një faqe tek një faqe përdoruesi (përvç tek një nën-faqe përdoruesi).",
+       "cant-move-category-page": "Nuk ju lejohet të zhvendosni kategori.",
        "newtitle": "Titull i ri:",
        "move-watch": "Mbikqyre këtë faqe",
        "movepagebtn": "Zhvendose faqen",
        "thumbnail_image-missing": "Skeda duket se mungon: $1",
        "import": "Importoni faqe",
        "importinterwiki": "Importo nga një wiki tjetër",
-       "import-interwiki-text": "Zgjidhni një wiki dhe titull faqeje për të importuar.\nDatat e versioneve dhe emrat e redaktuesve do të ruhen.\nTë gjitha veprimet e importit transwiki janë të regjistruara tek [[Special:Log/import|registri i importimeve]].",
+       "import-interwiki-text": "Zgjidhni një wiki dhe titull faqeje për të importuar.\nDatat e versioneve dhe emrat e redaktuesve do të ruhen.\nTë gjitha importimet nga wikit tjera janë të regjistruara tek [[Special:Log/import|regjistri i importimeve]].",
        "import-interwiki-sourcewiki": "Burimi wiki:",
        "import-interwiki-sourcepage": "Burimi i faqes:",
        "import-interwiki-history": "Kopjo të gjitha versionet e historisë për këtë faqe",
        "import-nonewrevisions": "Nuk u importua asnjë version (të gjitha ose ishin prezent ose u kaluan per shkak të gabimeve).",
        "xml-error-string": "$1 në vijën $2, kol $3 (bite $4): $5",
        "import-upload": "Ngarko të dhëna XML",
-       "import-token-mismatch": "Humbje e të dhënave të sesionit.\nJu lutemi provoni përsëri.",
+       "import-token-mismatch": "Humbje e të dhënave të sesionit.\n\nMund të jeni shkyçur. <strong>Ju lutemi verifikoni që jeni akoma i identifikuar dhe provoni përsëri</strong>.\nNëse akoma nuk funksionon, provoni të [[Special:UserLogout|shkyçeni]] dhe kyçeni prap, dhe kontrolloni që shfletuesi juaj lejon biskotat nga kjo faqe.",
        "import-invalid-interwiki": "Nuk mund të importohet nga wiki i specifikuar.",
        "import-error-edit": "Faqja \"$1\" nuk është importuar sepse ju nuk lejoheni ta redaktoni atë.",
        "import-error-create": "Faqja \"$1\" nuk është importuar sepse ju nuk lejoheni ta krijoni atë.",
        "tooltip-t-recentchangeslinked": "Lista e ndryshimeve të faqeve që lidhen tek kjo faqe",
        "tooltip-feed-rss": "Burimi ushqyes \"RSS\" për këtë faqe",
        "tooltip-feed-atom": "Burimi ushqyes \"Atom\" për këtë faqe",
-       "tooltip-t-contributions": "Një listë e kontributeve nga ky përdorues",
-       "tooltip-t-emailuser": "Dërgoni një email te ky përdorues",
+       "tooltip-t-contributions": "Një listë e kontributeve nga {{GENDER:$1|ky përdorues|kjo përdoruese}}",
+       "tooltip-t-emailuser": "Dërgoni një email te ky {{GENDER:$1|përdorues}}",
+       "tooltip-t-info": "Më shumë informacion për këtë faqe",
        "tooltip-t-upload": "Ngarko skeda",
        "tooltip-t-specialpages": "Lista e të gjitha faqeve speciale.",
        "tooltip-t-print": "Version i shtypshëm i kësaj faqeje",
        "tooltip-ca-nstab-category": "Shikoni faqen e kategorisë",
        "tooltip-minoredit": "Shënoje këtë redaktim të vogël",
        "tooltip-save": "Kryej ndryshimet",
+       "tooltip-publish": "Publiko ndryshimet tuaja",
        "tooltip-preview": "Shqyrtoni ndryshimet tuaj, ju lutemi, bëjeni këtë para se të ruani ndryshimet!",
        "tooltip-diff": "Trego ndryshimet që Ju i keni bërë tekstit.",
        "tooltip-compareselectedversions": "Shikoni krahasimin midis dy versioneve të zgjedhura të kësaj faqeje.",
        "anonymous": "{{PLURAL:$1|Përdoruesi anonim|Përdoruesit anonimë}} të {{SITENAME}}",
        "siteuser": "Përdoruesi $1 nga {{SITENAME}}",
        "anonuser": "Përdorues anonim i {{SITENAME}} $1",
-       "lastmodifiedatby": "Kjo faqe është redaktuar së fundit më $2, $1 nga $3.",
+       "lastmodifiedatby": "Kjo faqe është redaktuar së fundi në ora $2, më $1 nga $3.",
        "othercontribs": "Bazuar në punën e: $1",
        "others": "të tjerë",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|përdoruesi|përdoruesit}} $1",
        "spam_deleting": "Të gjitha inspektimet përmbanin lidhje në $1, duke fshirë",
        "simpleantispam-label": "Kontrolli anti-spam.\n<strong>Mos</strong> e plotëso këtë!",
        "pageinfo-title": "Informacion për \" $1 \"",
+       "pageinfo-not-current": "Kërkojmë falje, është e pamundur të jepet ky informacion për versionet e fundit.",
        "pageinfo-header-basic": "Informatat bazike",
        "pageinfo-header-edits": "Historiku i redaktimeve",
        "pageinfo-header-restrictions": "Mbrojtja e faqes",
        "pageinfo-length": "Gjatësia e faqes (në bajt)",
        "pageinfo-article-id": "ID-ja e faqes",
        "pageinfo-language": "Gjuha e përmbajtjes së faqes",
+       "pageinfo-language-change": "ndrysho",
+       "pageinfo-content-model": "Model i përmbajtjes së faqes",
+       "pageinfo-content-model-change": "ndrysho",
+       "pageinfo-robot-policy": "indeksimi nga robotët",
+       "pageinfo-robot-index": "Lejuar",
+       "pageinfo-robot-noindex": "Palejuar",
        "pageinfo-watchers": "Numri i mbikqyrësve të faqes",
+       "pageinfo-redirects-name": "Numri i ridrejtimeve drejt kësaj faqeje",
+       "pageinfo-subpages-name": "Numri i nën-faqeve të kësaj faqeje",
        "pageinfo-firstuser": "Krijuesi i faqes",
        "pageinfo-firsttime": "Data e krijimit të faqes",
        "pageinfo-lastuser": "Redaktori i fundit",
        "pageinfo-edits": "Numri total i redaktimeve",
        "pageinfo-authors": "Numri i përgjithshëm i autorëve të veçantë",
        "pageinfo-recent-edits": "Numri i redaktimeve më të fundit (gjatë $1 ditëve të kaluara)",
+       "pageinfo-recent-authors": "Numri i rishtëm i autorëve të veçantë",
+       "pageinfo-magic-words": "{{PLURAL:$1|Fjala|fjalët}} magjike ($1)",
+       "pageinfo-hidden-categories": "{{PLURAL:$1|Kategoria|kategoritë}} e fshehura ($1)",
        "pageinfo-toolboxlink": "Informacioni i faqes",
+       "pageinfo-redirectsto": "Ridrejton te",
        "pageinfo-redirectsto-info": "info",
        "pageinfo-contentpage": "Llogaritet si një përmbajtje e faqes",
        "pageinfo-contentpage-yes": "Po",
+       "pageinfo-protect-cascading": "Mbrojtjet po burojnë prej këtu",
        "pageinfo-protect-cascading-yes": "Po",
+       "pageinfo-protect-cascading-from": "Mbrojtjet po burojnë nga",
        "pageinfo-category-info": "Informacioni i kategorisë",
        "pageinfo-category-total": "Numri i përgjithshëm i anëtarëve",
        "pageinfo-category-pages": "Numri i faqeve",
        "pageinfo-user-id": "ID e përdoruesit",
        "markaspatrolleddiff": "Shënoje si të patrulluar",
        "markaspatrolledtext": "Shënoje këtë artikull të patrulluar",
+       "markaspatrolledtext-file": "Shënoje këtë version të skedarit si të patrolluar",
        "markedaspatrolled": "Shënoje të patrulluar",
        "markedaspatrolledtext": "Versioni i zgjedhur i [[:$1]] është shënuar si i patrolluar.",
        "rcpatroldisabled": "Kontrollimi i ndryshimeve së fundmi është bllokuar",
        "markedaspatrollederror": "Nuk munda ta shënoj të patrulluar",
        "markedaspatrollederrortext": "Duhet të përcaktoni versionin për tu shënuar i patrulluar.",
        "markedaspatrollederror-noautopatrol": "Ju nuk lejoheni të shënoni ndryshimet tuaj si të patrolluara.",
+       "markedaspatrollednotify": "Ky ndryshim i $1 është shënuar si i patrulluar.",
+       "markedaspatrollederrornotify": "Shënimi si i patrulluar dështoi.",
        "patrol-log-page": "Regjistri i patrollimeve",
        "patrol-log-header": "Këto janë të dhëna të revizioneve të patrulluara.",
        "log-show-hide-patrol": "$1 regjistri i patrollimeve",
+       "log-show-hide-tag": "$1 regjistri i etiketave",
        "confirm-markpatrolled-button": "Në rregull",
+       "confirm-markpatrolled-top": "Shëno versionin $3 nga $2 si të patrolluar",
        "deletedrevision": "Gris versionin e vjetër $1",
        "filedeleteerror-short": "Gabim gjatë grisjes së skedës: $1",
        "filedeleteerror-long": "U hasën gabime gjatë grisjes së skedës:\n\n$1",
        "file-info-size-pages": "$1 × $2 pixel, madhësia e dokumentit: $3 , MIME tipi: $4 , $5 {{PLURAL:$5| faqe | faqet}}",
        "file-nohires": "Nuk ka rezolucion më të madh.",
        "svg-long-desc": "skedë SVG, fillimisht $1 × $2 pixel, madhësia e skedës: $3",
+       "svg-long-error": "Skedar SVG i parregullt: $1",
        "show-big-image": "Dokument origjinal",
        "show-big-image-preview": "Madhësia e këtij shikimi: $1.",
        "show-big-image-other": "{{PLURAL:$2|Rezolucion tjetër|Rezolucione të tjera}}: $1.",
        "newimages-summary": "Kjo faqe speciale tregon skedat e ngarkuara së fundmi.",
        "newimages-legend": "Filtrues",
        "newimages-label": "Emri i skedës (ose një pjesë e tij):",
+       "newimages-user": "Adresë IP ose emër përdoruesi",
+       "newimages-showbots": "Trego ngarkimet nga robotët",
+       "newimages-hidepatrolled": "Fshih ngarkimet e patrolluara",
        "noimages": "S'ka gjë për të parë.",
        "ilsubmit": "Kërko",
        "bydate": "datës",
        "minutes": "{{PLURAL:$1|$1 minutë|$1 minuta}}",
        "hours": "{{PLURAL:$1|$1 orë|$1 orë}}",
        "days": "{{PLURAL:$1|$1 ditë|$1 ditë}}",
+       "weeks": "{{PLURAL:$1|$1 javë|$1 javë}}",
+       "months": "{{PLURAL:$1|$1 muaj|$1 muaj}}",
+       "years": "{{PLURAL:$1|$1 vit|$1 vite}}",
        "ago": "$1 më parë",
        "just-now": "mu tani",
        "hours-ago": "$1 {{PLURAL:$1|orë|orë}} më parë",
        "exif-compression-4": "CCITT Grupi 4 faks kodimi",
        "exif-copyrighted-true": "E drejtë e autorit",
        "exif-copyrighted-false": "Statusi i së drejtës së autorit nuk u caktua",
+       "exif-photometricinterpretation-1": "Bardh e zi (Zi është 0)",
        "exif-unknowndate": "E dhënë e pa njohur",
        "exif-orientation-1": "Normale",
        "exif-orientation-2": "E kthyer horizontalisht",
        "confirmemail_subject": "Vërtetim adrese nga {{SITENAME}}",
        "confirmemail_body": "Dikush, me gjasë ju, nga IP adresa $1,\nka regjistruar një llogari \"$2\" me këtë e-mail adresë në {{SITENAME}}.\n\nPër të konfirmuar se kjo llogari ju përket me të vërtetë dhe për të aktivizuar\nfunksionet e ''e-mail''-it në {{SITENAME}}, hapni këtë lidhje në shfletuesin tuaj:\n\n$3\n\nNëse llogaria *nuk* ju përket, ndiqni këtë lidhje\npër të anuluar konfirmimin e e-mail adresës:\n\n$5\n\nKy kod i konfirmimit skadon me $4.",
        "confirmemail_body_changed": "Dikush, me gjasë ju, nga IP adresa $1,\nka ndryshuar e-mail adresën e llogarisë \"$2\" me këtë adresë në {{SITENAME}}.\n\nPër të konfirmuar se kjo llogari ju përket me të vërtetë dhe për të rizaktivizuar\nfunksionet e ''e-mail''-it në {{SITENAME}}, hapni këtë lidhje në shfletuesin tuaj:\n\n$3\n\nNëse llogaria *nuk* ju përket, ndiqni këtë lidhje\npër të anuluar konfirmimin e e-mail adresës:\n\n$5\n\nKy kod i konfirmimit skadon me $4.",
-       "confirmemail_body_set": "Dikush, me gjasë ju, nga IP adresa $1,\nka ndryshuar e-mail adresën e llogarisë \"$2\" me këtë adresë në {{SITENAME}}.\n\nPër të konfirmuar se kjo llogari ju përket me të vërtetë dhe për të riaktivizuar\nfunksionet e ''e-mail''-it në {{SITENAME}}, hapni këtë lidhje në shfletuesin tuaj:\n\n$3\n\nNëse llogaria *nuk* ju përket, ndiqni këtë lidhje\npër të anuluar konfirmimin e e-mail adresës:\n\n$5\n\nKy kod i konfirmimit skadon me $4.",
+       "confirmemail_body_set": "Dikush, me gjasë ju, nga IP adresa $1,\nka ndryshuar e-mail adresën e llogarisë \"$2\" me këtë adresë në {{SITENAME}}.\n\nPër të konfirmuar se kjo llogari ju përket me të vërtetë dhe për të aktivizuar funksionet e ''e-mail''-it në {{SITENAME}}, hapni këtë lidhje në shfletuesin tuaj:\n\n$3\n\nNëse llogaria *nuk* ju përket, ndiqni këtë lidhje\npër të anuluar konfirmimin e e-mail adresës:\n\n$5\n\nKy kod i konfirmimit skadon më $4.",
        "confirmemail_invalidated": "Vërtetimi i adresës së email-it është tërhequr",
        "invalidateemail": "Tërhiq vërtetimin e email-it",
+       "notificationemail_subject_changed": "{{SITENAME}} adresa e email-it e regjistruar ka ndryshuar",
+       "notificationemail_subject_removed": "{{SITENAME}} adresa e regjistruar e email-it është hequr",
        "scarytranscludedisabled": "[Lidhja Interwiki nuk është i mundshëm]",
        "scarytranscludefailed": "[Gjetja e stampes deshtoi per $1]",
        "scarytranscludetoolong": "[Adresa URL eshte teper e gjate]",
        "deletedwhileediting": "Kujdes! Kjo faqe është grisur pasi keni filluar redaktimin!",
-       "confirmrecreate": "Përdoruesi [[User:$1|$1]] ([[User talk:$1|diskutime]]) grisi këtë artikull mbasi ju filluat ta redaktoni për arsyen:\n: ''$2''\nJu lutem konfirmoni nëse dëshironi me të vertetë ta rikrijoni këtë artikull.",
+       "confirmrecreate": "Përdoruesi [[User:$1|$1]] ([[User talk:$1|diskutime]]) grisi këtë artikull mbasi ju filluat ta redaktoni për arsyen:\n: <em>$2</em>''\nJu lutem konfirmoni nëse dëshironi me të vërtetë ta rikrijoni këtë artikull.",
        "confirmrecreate-noreason": "Përdoruesi [[User:$1|$1]]([[User talk:$1|talk]]) ka fshirë këtë faqe pasi ju filluat ta redaktoni. Ju lutem konfirmoni që vërtet doni të ri-krijoni këtë faqe.",
        "recreate": "Rikrijo",
        "confirm_purge_button": "Shko",
        "version-hook-name": "Emri i goditjes",
        "version-hook-subscribedby": "Abonuar nga",
        "version-version": "($1)",
+       "version-no-ext-name": "[pa emër]",
        "version-license": " Liçenca MediaWiki",
        "version-ext-license": "Licenca",
        "version-ext-colheader-name": "Shtojca",
        "redirect-page": "ID-ja e faqes",
        "redirect-revision": "Versioni i faqes",
        "redirect-file": "Emri i skedës",
+       "redirect-logid": "ID e regjistrit",
        "redirect-not-exists": "Vlera nuk u gjet",
        "fileduplicatesearch": "Kërkoni për skeda të dyfishta",
        "fileduplicatesearch-summary": "Kërkoni për dyfishime të skedave në bazë të vlerës përmbledhëse («hash»).",
        "tag-filter": "[[Special:Tags|Etiketa]] filter:",
        "tag-filter-submit": "Filtër",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Etiketa|Etiketat}}]]: $2)",
+       "tag-mw-contentmodelchange": "ndryshimi i modelit të përmbajtjes",
        "tags-title": "Etiketat",
        "tags-intro": "Kjo faqe liston etiketat që softueri mund t'i shënojë me një redaktim, dhe kuptimin e tyre.",
        "tags-tag": "Emri i etiketës",
        "tags-create-submit": "Krijoni",
        "tags-delete-title": "Gris etiketën",
        "tags-delete-reason": "Arsyeja:",
+       "tags-delete-not-found": "Faqja \"$1\" nuk ekziston.",
+       "tags-activate-title": "Aktivizo etiketën",
+       "tags-activate-question": "Jeni duke e aktivizu etiketën \"$1\".",
        "tags-activate-reason": "Arsyeja:",
+       "tags-activate-not-allowed": "Nuk është i mundur aktivizimi i etiketës \"$1\".",
+       "tags-activate-not-found": "Etiketa \"$1\" nuk ekziston.",
        "tags-activate-submit": "Aktivizo",
+       "tags-deactivate-title": "Çaktivizo etiketën",
+       "tags-deactivate-question": "Jeni duke e çaktivizu etiketën \"$1\".",
        "tags-deactivate-reason": "Arsyeja:",
+       "tags-deactivate-not-allowed": "Nuk është i mundur çaktivizimi i etiketës \"$1\".",
+       "tags-deactivate-submit": "Çaktivizo",
+       "tags-edit-title": "Redakto etiketat",
+       "tags-edit-manage-link": "Menaxho etiketat",
+       "tags-edit-existing-tags": "Etiketat ekzistuese:",
+       "tags-edit-existing-tags-none": "<em>Asnjë</em>",
+       "tags-edit-new-tags": "Etiketat e reja:",
+       "tags-edit-add": "Shto këto etiketa:",
+       "tags-edit-remove": "Hiq këto etiketa:",
+       "tags-edit-remove-all-tags": "(hiq krejt etiketat)",
+       "tags-edit-chosen-placeholder": "Zgjedh disa etiketa",
+       "tags-edit-chosen-no-results": "Nuk u gjet ndonjë etiketë që përputhet",
        "tags-edit-reason": "Arsyeja:",
+       "tags-edit-success": "U aplikuan ndryshimet.",
+       "tags-edit-failure": "Ndryshimet nuk mund të aplikoheshin:\n$1",
+       "tags-edit-nooldid-title": "Versioni cak i pavlefshëm",
+       "tags-edit-none-selected": "Ju lutemi zgjedhni së paku një etiketë për të shtuar ose hequr.",
        "comparepages": "Krahasoni faqet",
        "compare-page1": "Faqe 1",
        "compare-page2": "Faqe 2",
        "dberr-problems": "Na vjen keq! Kjo faqe po has vështirësi teknike.",
        "dberr-again": "Pritni disa minuta dhe provoni të ringarkoni faqen.",
        "dberr-info": "(Nuk mund të qaset në bazën e të dhënave: $1)",
+       "dberr-info-hidden": "(Nuk mund të qaset në bazën e të dhënave)",
        "dberr-usegoogle": "Ju mund të provoni të kërkoni përmes Googles në ndërkohë.",
        "dberr-outofdate": "Vini re se indekset e tyre të përmbajtjes tona mund të jetë e vjetëruar.",
        "dberr-cachederror": "Kjo është një kopje e faqes së kërkuar dhe mund të jetë e vjetëruar.",
        "htmlform-submit": "Dërgo",
        "htmlform-reset": "Zhbëj ndryshimin",
        "htmlform-selectorother-other": "Gjitha",
+       "htmlform-no": "Jo",
+       "htmlform-yes": "Po",
+       "htmlform-chosen-placeholder": "Zgjedh një opcion",
+       "htmlform-cloner-create": "Shto më shumë",
+       "htmlform-cloner-delete": "Hiqe",
+       "htmlform-cloner-required": "Kërkohet së paku një vlerë.",
        "htmlform-date-placeholder": "VVVV-MM-DD",
        "htmlform-time-placeholder": "OO:MM:SS",
        "htmlform-datetime-placeholder": "VVVV-MM-DD OO:MM:SS",
+       "htmlform-date-invalid": "Vlera që keni dhënë nuk është datë e njohur. Provo formatin VVVV-MM-DD.",
+       "htmlform-time-invalid": "Vlera që keni dhënë nuk është kohë e njohur. Provo formatin HH:MM:SS.",
+       "htmlform-datetime-invalid": "Vlera që keni dhënë nuk është datë dhe kohë e njohur. Provo formatin VVVV-MM-DD HH:MM:SS.",
+       "htmlform-date-toolow": "Vlera që keni dhënë është para datës më të hershme të lejuar $1.",
+       "htmlform-date-toohigh": "Vlera që dhatë është pas datës më të vonshme të lejuar $1.",
+       "htmlform-time-toolow": "Vlera që dhatë është para datës më të hershme të lejuar $1.",
+       "htmlform-time-toohigh": "Vlera që dhatë është pas datës më të vonshme të lejuar $1.",
+       "htmlform-datetime-toolow": "Vlera që dhatë është para datës dhe kohës më të hershme të lejuar $1.",
+       "htmlform-datetime-toohigh": "Vlera që dhatë është pas datës dhe kohës më të vonshme të lejuar $1.",
+       "htmlform-title-badnamespace": "[[:$1]] nuk është në hapësirën \"{{ns:$2}}\".",
+       "htmlform-title-not-creatable": "\"$1\" nuk është emër i faqes i krijueshëm",
        "htmlform-title-not-exists": "$1 nuk ekziston.",
        "htmlform-user-not-exists": "<strong>$1</strong> nuk ekziston.",
+       "htmlform-user-not-valid": "<strong>$1</strong> nuk është emër i vlefshëm përdoruesi.",
        "logentry-delete-delete": "$1 {{GENDER:$2|grisi}} faqen $3",
-       "logentry-delete-restore": "$1 {{GENDER:$2|riktheu}} faqen $3",
+       "logentry-delete-delete_redir": "$1 {{GENDER:$2|fshiu}} ridrejtimin $3 duke mbishkruar",
+       "logentry-delete-restore": "$1 {{GENDER:$2|riktheu}} faqen $3 ($4)",
        "logentry-delete-event": "$1 {{GENDER:$2|ndryshoi}} dukshmërinë e {{PLURAL:$5|e një ngjarjeje regjistri|$5 ngjarjeve regjistri}} në $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|ka dryshuar}} dukshmërinë e {{PLURAL:$5|një rishikimi|$5 rishikimeve}} në faqen $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|ndryshoi}} dukshmërinë e ngjarjeve të regjistit në $3",
        "logentry-delete-revision-legacy": "$1 {{GENDER:$2|ndryshoi}} dukshmërinë e rishikimeve në faqen $3",
        "logentry-suppress-delete": "$1 {{GENDER:$2|shtypi}} faqen $3",
-       "logentry-suppress-event": "$1 në mënyrë sekrete ndryshoi dukshmërinë e {{PLURAL:$5|një ngjarje regjistri|$5 ngjarjeve regjistri}} në $3: $4",
+       "logentry-suppress-event": "$1 në mënyrë sekrete {{GENDER:$2|ndryshoi}} dukshmërinë e {{PLURAL:$5|një ngjarje regjistri|$5 ngjarjeve regjistri}} në $3: $4",
        "logentry-suppress-revision": "$1 në mënyrë sekrete ndryshoi dukshmërinë e {{PLURAL:$5|një versioni|$5 versioneve}} në $3: $4",
-       "logentry-suppress-event-legacy": "$1 në mënyrë sekrete ndryshoi dukshmërinë e ngjarjeve të regjistrit në $3",
-       "logentry-suppress-revision-legacy": "$1 në mënyrë sekrete ndryshoi dukshmërinë e versioneve në faqen $3",
+       "logentry-suppress-event-legacy": "$1 në mënyrë sekrete {{GENDER:$2|ndryshoi}} dukshmërinë e ngjarjeve të regjistrit në $3",
+       "logentry-suppress-revision-legacy": "$1 në mënyrë sekrete {{GENDER:$2|ndryshoi}} dukshmërinë e versioneve në faqen $3",
        "revdelete-content-hid": "përmbajtja u fsheh",
        "revdelete-summary-hid": "redaktimi i përmbledhjes i fshehur",
        "revdelete-uname-hid": "emri i përdoruesit i fshehur",
        "logentry-move-move-noredirect": "$1 zhvendosi faqen $3 te $4 pa lënë një përcjellim",
        "logentry-move-move_redir": "$1 zhvendosi faqen $3 te $4 nëpërmjet përcjellimit",
        "logentry-move-move_redir-noredirect": "$1 zhvendosi faqen $3 te $4 nëpërmjet një përcjellimi pa lënë një përcjellim",
-       "logentry-patrol-patrol": "$1 shënoi versionin $4 të faqes $3 të patrolluar",
-       "logentry-patrol-patrol-auto": "$1 automatikisht shënoi versionin $4 të faqes $3 të patrolluar",
+       "logentry-patrol-patrol": "$1 {{GENDER:$2|shënoi}} versionin $4 të faqes $3 të patrulluar",
+       "logentry-patrol-patrol-auto": "$1 automatikisht {{GENDER:$2|shënoi}} versionin $4 të faqes $3 të patrulluar",
        "logentry-newusers-newusers": "Llogaria e përdoruesit $1 është {{GENDER:$2|krijuar}}",
        "logentry-newusers-create": "Llogaria e {{GENDER:$2|përdoruesit|përdorueses}} $1 u krijua.",
        "logentry-newusers-create2": "Llogaria e përdoruesit $3 është {{GENDER:$2|krijuar}} nga $1",
        "duration-centuries": "$1 {{PLURAL:$1|shekull|shekuj}}",
        "duration-millennia": "$1 {{PLURAL:$1|milennium|mileniume}}",
        "expandtemplates": "Parapamje stampash",
-       "expand_templates_intro": "Kjo faqe speciale merr tekstin me stampa dhe të tregon se si do të duket teksti pasi të jenë stamposur të tëra. Kjo faqe gjithashtu tregon parapamjen e funksioneve dhe fjalëve magjike si p.sh. <nowiki>{{</nowiki>#language:...}} dhe <nowiki>{{</nowiki>CURRENTDAY}}.",
+       "expand_templates_intro": "Kjo faqe speciale merr tekstin dhe zgjeron të gjitha shabllonet në të në mënyrë rekursive.\nAi gjithashtu zgjeron funksionet e parser të mbështetura si\n<code><nowiki>{{</nowiki>#language: ...}}</code>dhe variablat si\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nNë të vërtetë, ajo zgjeron çdo gjë në kllapa gjarpërore të dyfishta.",
        "expand_templates_title": "Titulli i faqes për rrethanën, si {{FULLPAGENAME}} etj.:",
        "expand_templates_input": "Teksti me stampa:",
        "expand_templates_output": "Parapamja",
        "expand_templates_ok": "Shko",
        "expand_templates_remove_comments": "Hiq komentet",
        "expand_templates_preview": "Parapamje",
+       "expand_templates_input_missing": "Duhet të jepni së paku pak tekst.",
        "pagelanguage": "Ndrysho gjuhën e faqës",
        "pagelang-name": "Faqja",
        "pagelang-language": "Gjuha",
        "pagelang-reason": "Arsyeja",
        "pagelang-submit": "Dërgo",
        "pagelang-nonexistent-page": "Faqja $1 nuk ekziston.",
+       "pagelang-unchanged-language": "Faqja $1 veç është vendosur në gjuhën $2",
+       "pagelang-unchanged-language-default": "Faqja $1 veç është vendosur në gjuhën e parazgjedhur e wikit.",
+       "pagelang-db-failed": "Baza e të dhënave nuk mundi të ndryshoi gjuhën e faqes.",
        "right-pagelang": "Ndrysho gjuhën e faqës",
        "action-pagelang": "ndrysho gjuhën e faqës",
+       "log-name-pagelang": "Regjistri i ndryshimit të gjuhës",
+       "log-description-pagelang": "Ky është regjistri i ndryshimeve në gjuhët e faqes.",
        "mediastatistics-table-mimetype": "Lloji MIME",
        "mediastatistics-table-extensions": "Shtojcat e mundshme",
        "mediastatistics-table-count": "Numri i skedave",
        "mediastatistics-header-executable": "Të ekzekutueshmet",
        "mediastatistics-header-archive": "Formate të komprimuara",
        "mediastatistics-header-total": "Të gjitha skedat",
+       "json-error-state-mismatch": "JSON i pavlefshëm ose i keqformuar",
+       "json-error-ctrl-char": "Gabim me karakterin e kontrollit, ndoshta i koduar gabimisht",
+       "json-error-syntax": "Gabim sintakse",
+       "headline-anchor-title": "Lidhje në këtë seksion",
        "special-characters-group-latin": "Latinisht",
        "special-characters-group-latinextended": "Latanisht, zgjeruar",
        "special-characters-group-ipa": "Alfabeti Fonetik Ndërkombëtar (IPA)",
        "special-characters-group-thai": "Thai",
        "special-characters-group-lao": "Lao",
        "special-characters-group-khmer": "Khmer",
+       "special-characters-group-canadianaboriginal": "Aborigjinase Kanadeze",
        "special-characters-title-endash": "viza e gjatë",
        "special-characters-title-emdash": "viza më e gjatë",
        "special-characters-title-minus": "shenja minus",
        "mw-widgets-dateinput-placeholder-month": "VVVV-MM",
        "mw-widgets-mediasearch-input-placeholder": "Kërko media",
        "mw-widgets-mediasearch-noresults": "Nuk është gjetur asnjë rezultat.",
+       "mw-widgets-titleinput-description-new-page": "faqja ende nuk ekziston",
+       "mw-widgets-titleinput-description-redirect": "ridrejto te $1",
+       "mw-widgets-categoryselector-add-category-placeholder": "Shto një kategori...",
+       "mw-widgets-usersmultiselect-placeholder": "Shto më shumë...",
+       "date-range-from": "Nga data:",
+       "date-range-to": "Te data:",
+       "sessionmanager-tie": "Nuk mund të kombinohen lloje të ndryshme të autentikimit: $1",
+       "sessionprovider-generic": "$1 sesione",
+       "sessionprovider-mediawiki-session-cookiesessionprovider": "sesione të bazuara në biskota",
+       "sessionprovider-nocookies": "Biskotat mund të jenë paaftësuar. Sigurohu që keni aktivizuar biskotat dhe filloni prapë.",
+       "log-action-filter-block": "Lloji i bllokimit:",
+       "log-action-filter-contentmodel": "Lloji i ndryshimit të modelit të përmbajtjes:",
+       "log-action-filter-delete": "Lloji i fshirjes:",
+       "log-action-filter-import": "Lloji i importimit:",
+       "log-action-filter-move": "Lloji i lëvizjes:",
+       "log-action-filter-newusers": "Lloji i krijimit të llogarisë:",
+       "log-action-filter-patrol": "Lloji i patrullimit:",
+       "log-action-filter-protect": "Lloji i mbrojtjes:",
+       "log-action-filter-rights": "Lloji i ndryshimit të të drejtave:",
+       "log-action-filter-suppress": "Lloji i heshtjes:",
+       "log-action-filter-upload": "Lloji i ngarkimit:",
        "log-action-filter-all": "Të gjitha",
        "log-action-filter-block-block": "Blloko",
+       "log-action-filter-block-reblock": "Blloko ndryshimet",
+       "log-action-filter-block-unblock": "Zhblloko",
+       "log-action-filter-contentmodel-change": "Ndrysho modelin e përmbajtjes",
+       "log-action-filter-delete-delete": "Fshirja e faqes",
+       "log-action-filter-delete-delete_redir": "Ridrejto mbishkrimin",
+       "log-action-filter-delete-restore": "Çfshirja e faqes",
+       "log-action-filter-delete-event": "Fshirja e regjistrit",
+       "log-action-filter-delete-revision": "Fshirja e versionit",
+       "log-action-filter-import-interwiki": "Importim ndër-wiki",
+       "log-action-filter-import-upload": "Importo përmes ngarkimit XML",
+       "log-action-filter-managetags-create": "Krijimi i etiketave",
+       "log-action-filter-managetags-delete": "Fshirja e etiketave",
+       "log-action-filter-managetags-activate": "Aktivizimi i etiketave",
+       "log-action-filter-managetags-deactivate": "Çaktivizimi i etiketave",
+       "log-action-filter-move-move": "Lëviz pa mbishkruar ridrejtimet",
+       "log-action-filter-move-move_redir": "Lëviz me mbishkrim të ridrejtimeve",
+       "log-action-filter-newusers-create": "Krijim nga përdorues anonim",
+       "log-action-filter-newusers-create2": "Krijim nga përdorues i regjistruar",
+       "log-action-filter-newusers-autocreate": "Krijim automatik",
+       "log-action-filter-newusers-byemail": "Krijim me fjalëkalim të dërguar me email",
+       "log-action-filter-patrol-patrol": "Patrullim manual",
+       "log-action-filter-patrol-autopatrol": "Patrullim automatik",
+       "log-action-filter-protect-protect": "Mbrojtje",
+       "log-action-filter-protect-modify": "Ndryshim i mbrotjtjes",
+       "log-action-filter-protect-unprotect": "Çmbrojtje",
+       "log-action-filter-protect-move_prot": "Mbrojtje e lëvizur",
+       "log-action-filter-rights-rights": "Ndryshim manual",
+       "log-action-filter-rights-autopromote": "Ndryshim automatik",
+       "log-action-filter-suppress-event": "Heshtje e regjistrit",
+       "log-action-filter-suppress-revision": "Heshtje e versionit",
+       "log-action-filter-suppress-delete": "Heshtje e faqes",
+       "log-action-filter-upload-upload": "Ngarkim i ri",
+       "log-action-filter-upload-overwrite": "Ringarko",
+       "authmanager-authn-no-primary": "Kredencialet e dhëna nuk mund të vërtetoheshin.",
+       "authmanager-authn-no-local-user": "Kredencialet e dhëna nuk janë të asociuara me ndonjë përdorues në këtë wiki.",
+       "authmanager-change-not-supported": "Kredencialet e dhëna nuk mund të ndryshohen, pasiqë asgjë nuk i përdor ato.",
+       "authmanager-create-disabled": "Krijimi i llogarive është pamundësuar.",
+       "authmanager-create-from-login": "Për të krijuar llogarinë tuaj, ju lutem mbushni fushat.",
+       "authmanager-create-no-primary": "Kredencialet e dhëna nuk mund të përdoreshin për krijim të llogarisë.",
+       "authmanager-link-no-primary": "Kredencialet e dhëna nuk mund të përdoreshin për lidhje të llogarive.",
+       "authmanager-link-not-in-progress": "Lidhja e llogarive nuk është në progres ose të dhënat e sesionit janë humbur. Ju lutem filloni nga fillimi.",
+       "authmanager-authplugin-setpass-failed-title": "Ndryshimi i fjalëkalimit dështoi",
+       "authmanager-authplugin-setpass-failed-message": "Plugin-i i autentikimit mohoi ndërrimin e fjalëkalimit.",
+       "authmanager-authplugin-create-fail": "Plugin-i i autentikimit mohoi krijimin e llogarisë.",
+       "authmanager-authplugin-setpass-denied": "Plugin-i i autentikimit nuk lejon ndërrimin e fjalëkalimeve.",
+       "authmanager-authplugin-setpass-bad-domain": "Domen i pavlefshëm.",
+       "authmanager-autocreate-noperm": "Krijimi automatik i llogarive nuk lejohet.",
+       "authmanager-autocreate-exception": "Krijimi automatik i llogarive përkohësisht i pamundësuar për shkak të gabimeve.",
+       "authmanager-userdoesnotexist": "Llogaria e përdoruesit \"$1\" nuk është e regjistruar.",
+       "authmanager-userlogin-remembermypassword-help": "Nëse fjalëkalimi duhet të kujtohet më gjatë se gjatësia e sesionit.",
+       "authmanager-username-help": "Emri i përdoruesit për vërtetim.",
+       "authmanager-password-help": "Fjalëkalimi për vërtetim.",
+       "authmanager-domain-help": "Domeni për vërtetim të jashtëm.",
+       "authmanager-retype-help": "Prap fjalëkalimi për konfirmim.",
        "authmanager-email-label": "Email",
        "authmanager-email-help": "Adresa e emailit:",
        "authmanager-realname-label": "Emri i vërtetë",
        "authmanager-realname-help": "Emri i vërtetë i përdoruesit",
+       "authmanager-provider-password": "Vërtetim i bazuar në fjalëkalim",
        "authmanager-provider-temporarypassword": "Fjalëkalim i përkohshëm",
+       "authprovider-confirmlink-request-label": "Llogaritë të cilat duhet të lidhen",
+       "authprovider-confirmlink-success-line": "$1: U lidh me sukses.",
+       "authprovider-confirmlink-failed": "Lidhja e llogarive nuk pat sukses të plotë: $1",
        "authprovider-resetpass-skip-label": "Kapërce",
+       "authprovider-resetpass-skip-help": "Kalo rivendosjen e fjalëkalimit.",
+       "authform-newtoken": "Mungon tokeni. $1",
+       "authform-notoken": "Mungon tokeni",
+       "authform-wrongtoken": "Token i gabuar",
+       "specialpage-securitylevel-not-allowed-title": "I palejuar",
+       "specialpage-securitylevel-not-allowed": "Me keqardhje, nuk lejoheni të përdorni këtë faqe sepse identiteti juaj nuk mund të verifikohej.",
+       "authpage-cannot-login": "E pamundur të fillohet hyrja.",
+       "authpage-cannot-login-continue": "E pamundur të vazhdohet hyrja. Sesioni juaj sipas gjitha gjasave ka skaduar.",
+       "authpage-cannot-create": "E pamundur të fillohet krijimi i llogarisë.",
+       "authpage-cannot-create-continue": "E pamundur të vazhdohet krijimi i llogarisë. Sesioni juaj sipas gjitha gjasave ka skaduar.",
+       "authpage-cannot-link": "E pamundur të fillohet lidhja e llogarive.",
+       "authpage-cannot-link-continue": "E pamundur të vazhdohet lidhja e llogarive. Sesioni juaj sipas gjitha gjasave ka skaduar.",
+       "cannotauth-not-allowed-title": "Mohot leja",
+       "cannotauth-not-allowed": "Nuk lejoheni të përdorni këtë faqe",
        "changecredentials": "Ndërro kredencialet",
        "changecredentials-submit": "Ndërro kredencialet",
        "changecredentials-invalidsubpage": "$1 nuk është tip i vlefshëm i kredencialit.",
        "restrictionsfield-label": "Vargu i lejuar i IP-së:",
        "revid": "versioni $1",
        "pageid": "ID e faqes $1",
-       "rawhtml-notallowed": "&lt;html&gt; etiketat nuk mund të përdorën jashtë faqeve normale."
+       "rawhtml-notallowed": "&lt;html&gt; etiketat nuk mund të përdorën jashtë faqeve normale.",
+       "gotointerwiki": "Po largoheni nga {{SITENAME}}",
+       "gotointerwiki-invalid": "Tiulli i dhënë nuk është i rregullt.",
+       "undelete-cantedit": "Nuk mund ta çfshini këtë faqe pasi që nuk lejoheni ta redaktoni këtë faqe.",
+       "pagedata-bad-title": "Titull i pavlefshëm: $1"
 }
index 80e316e..424c54a 100644 (file)
@@ -32,7 +32,8 @@
                        "Сербијана",
                        "Xð",
                        "Matma Rex",
-                       "Zoranzoki21"
+                       "Zoranzoki21",
+                       "Obsuser"
                ]
        },
        "tog-underline": "Подвлачење веза:",
@@ -68,7 +69,7 @@
        "tog-watchlisthidebots": "Сакриј измене ботова са списка надгледања",
        "tog-watchlisthideminor": "Сакриј мање измене са списка надгледања",
        "tog-watchlisthideliu": "Сакриј измене пријављених корисника са списка надгледања",
-       "tog-watchlistreloadautomatically": "Ð\90Ñ\83Ñ\82омаÑ\82Ñ\81ки Ð¾Ñ\81вежи Ñ\81пиÑ\81ак Ð½Ð°Ð´Ð³Ð»ÐµÐ´Ð°Ñ\9aа ÐºÐ°Ð´ Ð³Ð¾Ð´ Ñ\81е Ñ\84илÑ\82еÑ\80 Ð¸Ð·Ð¼ÐµÐ½Ð¸ (поÑ\82Ñ\80ебна JavaScript-а)",
+       "tog-watchlistreloadautomatically": "Ð\90Ñ\83Ñ\82омаÑ\82Ñ\81ки Ð¾Ñ\81вежи Ñ\81пиÑ\81ак Ð½Ð°Ð´Ð³Ð»ÐµÐ´Ð°Ñ\9aа ÐºÐ°Ð´ Ð³Ð¾Ð´ Ñ\81е Ñ\84илÑ\82еÑ\80 Ð¸Ð·Ð¼ÐµÐ½Ð¸ (поÑ\82Ñ\80ебан JavaScript)",
        "tog-watchlisthideanons": "Сакриј измене анонимних корисника са списка надгледања",
        "tog-watchlisthidepatrolled": "Сакриј патролиране измене са списка надгледања",
        "tog-watchlisthidecategorization": "Сакриј категоризацију страница",
        "tog-norollbackdiff": "Не приказуј разлику након извршеног враћања",
        "tog-useeditwarning": "Упозори ме када напуштам страницу са несачуваним променама",
        "tog-prefershttps": "Увек користи сигурну конекцију када сам пријављен.",
-       "underline-always": "увек подвлачи",
-       "underline-never": "никад не подвлачи",
-       "underline-default": "према теми или прегледачу",
+       "underline-always": "Увек подвлачи",
+       "underline-never": "Ð\9dикад не подвлачи",
+       "underline-default": "Ð\9fрема теми или прегледачу",
        "editfont-style": "Изглед фонта у уређивачком оквиру:",
-       "editfont-default": "по поставкама прегледача",
-       "editfont-monospace": "сразмерно широк фонт",
-       "editfont-sansserif": "бесерифни фонт",
-       "editfont-serif": "серифни фонт",
+       "editfont-default": "Ð\9fо поставкама прегледача",
+       "editfont-monospace": "Сразмерно широк фонт",
+       "editfont-sansserif": "Ð\91есерифни фонт",
+       "editfont-serif": "Серифни фонт",
        "sunday": "недеља",
        "monday": "понедељак",
        "tuesday": "уторак",
        "hidden-category-category": "Скривене категорије",
        "category-subcat-count": "{{PLURAL:$2|1=Ова категорија садржи само следећу поткатегорију.|Ова категорија има {{PLURAL:$1|1=следећу поткатегорију|следеће $1 поткатегорије|следећих $1 поткатегорија}}, од укупно $2.}}",
        "category-subcat-count-limited": "Ова категорија садржи {{PLURAL:$1|следећу поткатегорију|следеће $1 поткатегорије|следећих $1 поткатегорија}}.",
-       "category-article-count": "{{PLURAL:$2|1=Ова категорија садржи само следећу страницу.|{{PLURAL:$1|Следећа страница је|Следеће $1 странице су|Следећих $1 страница је}} у овој категорији, од укупно $2.}}",
+       "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|1=Ова категорија садржи само следећу датотеку.|{{PLURAL:$1|1=Следећа датотека је|Следеће $1 датотеке су|Следећих $1 датотека је}} у овој категорији, од укупно $2.}}",
        "category-file-count-limited": "{{PLURAL:$1|1=Следећа датотека је|Следеће $1 датотеке су|Следећих $1 датотека је}} у овој категорији.",
        "anontalk": "Разговор",
        "navigation": "Навигација",
        "and": "&#32;и",
-       "qbfind": "Пронађи",
-       "qbbrowse": "Потражи",
-       "qbedit": "Уреди",
-       "qbpageoptions": "Ова страница",
-       "qbmyoptions": "Моје странице",
-       "faq": "НПП",
-       "faqpage": "Project:НПП",
+       "faq": "ЧПП",
        "actions": "Радње",
        "namespaces": "Именски простори",
        "variants": "Варијанте",
        "edit-local": "Уреди локални опис",
        "create": "Направи",
        "create-local": "Додај локални опис",
-       "editthispage": "Уреди ову страницу",
-       "create-this-page": "Направи ову страницу",
        "delete": "Обриши",
-       "deletethispage": "Обриши ову страницу",
-       "undeletethispage": "Врати ову страницу",
        "undelete_short": "Врати {{PLURAL:$1|1=једну обрисану измену|$1 обрисане измене|$1 обрисаних измена}}",
        "viewdeleted_short": "Погледај {{PLURAL:$1|обрисану измену|$1 обрисане измене|$1 обрисаних измена}}",
        "protect": "Заштити",
        "protect_change": "промени",
-       "protectthispage": "Заштити ову страницу",
        "unprotect": "Промени заштиту",
-       "unprotectthispage": "Промени заштиту ове странице",
        "newpage": "Нова страница",
-       "talkpage": "Разговор ове странице",
        "talkpagelinktext": "разговор",
        "specialpage": "Посебна страница",
        "personaltools": "Личне алатке",
-       "articlepage": "Погледај страницу са садржајем",
        "talk": "Разговор",
        "views": "Прегледи",
        "toolbox": "Алатке",
        "tool-link-userrights": "Уреди {{GENDER:$1|корисничке}} групе",
        "tool-link-userrights-readonly": "{{GENDER:$1|Корисничке}} групе",
        "tool-link-emailuser": "Пошаљи {{GENDER:$1|имејл}}",
-       "userpage": "Погледај корисничку страницу",
-       "projectpage": "Погледај страницу пројекта",
        "imagepage": "Погледај страницу датотеке",
        "mediawikipage": "Погледај страницу поруке",
        "templatepage": "Погледај страницу шаблона",
        "redirectedfrom": "(преусмерено са $1)",
        "redirectpagesub": "Преусмерење",
        "redirectto": "Преусмерава на:",
-       "lastmodifiedat": "Ова страница је последњи пут измењена $1 у $2.",
+       "lastmodifiedat": "Ова страница је последњи пут уређена на датум $1 у $2 ч.",
        "viewcount": "Ова страница је прегледана {{PLURAL:$1|једанпут|$1 пута|$1 пута}}.",
        "protectedpage": "Заштићена страница",
        "jumpto": "Иди на:",
        "title-invalid-magic-tilde": "Тражени наслов странице садржи неважећи след магичног знака тилда (<nowiki>~~~</nowiki>).",
        "title-invalid-too-long": "Тражени назив странице је предугачак. Не сме бити дужи од $1 {{PLURAL:$1|бајта|бајтова}} у UTF-8 кодирању.",
        "title-invalid-leading-colon": "Захтевани наслов странице садржи неважећу двотачку на почетку.",
-       "perfcached": "СледеÑ\9bи Ð¿Ð¾Ð´Ð°Ñ\86и Ñ\81Ñ\83 ÐºÐµÑ\88иÑ\80ани Ð¸ Ð¼Ð¾Ð³Ñ\83 Ð±Ð¸Ñ\82и Ð·Ð°Ñ\81Ñ\82аÑ\80ели. Ð\9aеÑ\88 Ñ\81адÑ\80жи Ð½Ð°Ñ\98виÑ\88е {{PLURAL:$1|Ñ\98едан Ñ\80езÑ\83лÑ\82аÑ\82|$1 Ñ\80езÑ\83лÑ\82аÑ\82а|$1 резултата}}.",
-       "perfcachedts": "Следећи подаци су кеширани и последњи пут су ажурирани $2 у $3. У кешу {{PLURAL:$4|1=је доступан највише један резултат|су доступна највише $4 резултата|је доступно највише $4 резултата}}.",
+       "perfcached": "СледеÑ\9bи Ð¿Ð¾Ð´Ð°Ñ\86и Ñ\81Ñ\83 ÐºÐµÑ\88иÑ\80ани Ð¸ Ð¼Ð¾Ð¶Ð´Ð° Ð½Ð¸Ñ\81Ñ\83 Ð°Ð¶Ñ\83Ñ\80иÑ\80ани. Ð£ ÐºÐµÑ\88Ñ\83 {{PLURAL:$1|Ñ\98е Ð´Ð¾Ñ\81Ñ\82Ñ\83пан Ð½Ð°Ñ\98виÑ\88е Ñ\98едан Ñ\80езÑ\83лÑ\82аÑ\82\81Ñ\83 Ð´Ð¾Ñ\81Ñ\82Ñ\83пна Ð½Ð°Ñ\98виÑ\88е $1 Ñ\80езÑ\83лÑ\82аÑ\82а|Ñ\98е Ð´Ð¾Ñ\81Ñ\82Ñ\83пно Ð½Ð°Ñ\98виÑ\88е $1 резултата}}.",
+       "perfcachedts": "Следећи подаци су кеширани и последњи пут ажурирани на датум $2 у $3 ч. У кешу {{PLURAL:$4|је доступан највише један резултат|су доступна највише $4 резултата|је доступно највише $4 резултата}}.",
        "querypage-no-updates": "Ажурирање ове странице је тренутно онемогућено.\nПодаци који се овде налазе могу бити застарели.",
        "viewsource": "Изворни код",
        "viewsource-title": "Изворни текст странице $1",
        "createacct-reason-ph": "Зашто правите још један налог?",
        "createacct-submit": "Отвори налог",
        "createacct-another-submit": "Отвори налог",
-       "createacct-benefit-heading": "{{SITENAME}} Ñ\98е Ð½Ð°Ð¿Ñ\80авÑ\99ен Ð¾Ð´ Ñ\81Ñ\82Ñ\80ане Ñ\99Ñ\83ди ÐºÐ°Ð¾ Ñ\88Ñ\82о Ñ\81Ñ\82е Ð²Ð¸.",
+       "createacct-benefit-heading": "{{SITENAME}} Ñ\98е Ð¿Ñ\80оÑ\98екаÑ\82 ÐºÐ¾Ñ\98и Ñ\81Ñ\82ваÑ\80аÑ\98Ñ\83 Ñ\99Ñ\83ди Ð¿Ð¾Ð¿Ñ\83Ñ\82 Ð\92аÑ\81.",
        "createacct-benefit-body1": "{{PLURAL:$1|измена}}",
        "createacct-benefit-body2": "{{PLURAL:$1|страница|странице}}",
        "createacct-benefit-body3": "{{PLURAL:$1|активни корисник|активних корисника}}",
        "preview": "Претпреглед",
        "showpreview": "Прикажи претпреглед",
        "showdiff": "Прикажи измене",
-       "blankarticle": "<strong>Упозорење:</strong> страница коју правите нема никакав садржај.\nАко још једном притиснете „{{int:savearticle}}“ направићете празну страницу.",
-       "anoneditwarning": "<strong>УпозоÑ\80еÑ\9aе:</strong> Ð½Ð¸Ñ\81Ñ\82е Ð¿Ñ\80иÑ\98авÑ\99ени. Ð\92аÑ\88а Ð\98Ð\9f Ð°Ð´Ñ\80еÑ\81а Ñ\9bе Ð±Ð¸Ñ\82и Ñ\98авно Ð²Ð¸Ð´Ñ\99ива Ñ\83 Ð¸Ñ\81Ñ\82оÑ\80иÑ\98и Ð¾Ð²Ðµ Ñ\81Ñ\82Ñ\80аниÑ\86е Ð°ÐºÐ¾ Ð½Ð°Ñ\87иниÑ\82е Ð±Ð¸Ð»Ð¾ ÐºÐ°ÐºÐ²Ñ\83 Ð¸Ð·Ð¼ÐµÐ½Ñ\83. Ð\90ко Ñ\81е <strong>[$1 Ð¿Ñ\80иÑ\98авиÑ\82е]</strong> Ð¸Ð»Ð¸ <strong>[$2 Ð¾Ñ\82воÑ\80иÑ\82е Ð½Ð°Ð»Ð¾Ð³]</strong> Ð²Ð°Ñ\88е Ð¸Ð·Ð¼ÐµÐ½Ðµ Ñ\9bе Ð±Ð¸Ñ\82и Ð¿Ñ\80ипиÑ\81ане Ð²ашем корисничком имену.",
-       "anonpreviewwarning": "''Нисте пријављени. Ваша ИП адреса ће бити забележена у историји ове странице.''",
-       "missingsummary": "'''Ð\9dапомена:''' Ð½Ð¸Ñ\81Ñ\82е Ñ\83нели Ð¾Ð¿Ð¸Ñ\81 Ð¸Ð·Ð¼ÐµÐ½Ðµ.\nÐ\90ко Ð¿Ð¾Ð½Ð¾Ð²Ð¾ ÐºÐ»Ð¸ÐºÐ½ÐµÑ\82е Ð½Ð° â\80\9e{{int:savearticle}}â\80\9c, Ð²аша измена ће бити сачувана без описа.",
-       "selfredirect": "<strong>УпозоÑ\80еÑ\9aе:</strong> Ð¿Ñ\80еÑ\83Ñ\81меÑ\80аваÑ\82е Ð¾Ð²Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð½Ð° Ñ\9aÑ\83 Ñ\81амÑ\83.\nÐ\9cожда Ð²Ð°Ð¼ Ñ\98е Ð¾Ð´Ñ\80едиÑ\88на Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¿Ð¾Ð³Ñ\80еÑ\88на Ð¸Ð»Ð¸ Ñ\83Ñ\80еÑ\92Ñ\83Ñ\98еÑ\82е Ð¿Ð¾Ð³Ñ\80еÑ\88нÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83.\nÐ\90ко Ñ\98оÑ\88 Ñ\98едном Ð¿Ñ\80иÑ\82иÑ\81неÑ\82е â\80\9e{{int:savearticle}}â\80\9c преусмерење ће свеједно бити направљено.",
+       "blankarticle": "<strong>Упозорење:</strong> Страница коју правите је празна.\nАко још једном притиснете „$1”, страница ће бити направљена без икаквог садржаја.",
+       "anoneditwarning": "<strong>УпозоÑ\80еÑ\9aе:</strong> Ð\9dиÑ\81Ñ\82е Ð¿Ñ\80иÑ\98авÑ\99ени. Ð\90ко Ð¾Ð±Ñ\98авиÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83, Ð\92аÑ\88а IP Ð°Ð´Ñ\80еÑ\81а Ñ\9bе Ð±Ð¸Ñ\82и Ñ\98авно Ð²Ð¸Ð´Ñ\99ива Ñ\83 Ñ\9aеноÑ\98 Ð¸Ñ\81Ñ\82оÑ\80иÑ\98и Ð¸Ð·Ð¼ÐµÐ½Ð° Ð¸ Ð´Ñ\80Ñ\83где. Ð\90ко Ñ\81е <strong>[$1 Ð¿Ñ\80иÑ\98авиÑ\82е]</strong> Ð¸Ð»Ð¸ <strong>[$2 Ð¾Ñ\82воÑ\80иÑ\82е Ð½Ð°Ð»Ð¾Ð³]</strong>, Ð¿Ð¾Ñ\80ед Ð¾Ñ\81Ñ\82алиÑ\85 Ð¿Ð¾Ð³Ð¾Ð´Ð½Ð¾Ñ\81Ñ\82и ÐºÐ¾Ñ\98е Ð´Ð¾Ð±Ð¸Ñ\98аÑ\82е Ð\92аÑ\88е Ð¸Ð·Ð¼ÐµÐ½Ðµ Ñ\9bе Ð±Ð¸Ñ\82и Ð¿Ñ\80ипиÑ\81иване Ð\92ашем корисничком имену.",
+       "anonpreviewwarning": "<em>Нисте пријављени. Ако објавите страницу, Ваша IP адреса ће бити јавно видљива у њеној историји измена и другде.</em>",
+       "missingsummary": "'''Ð\9fодÑ\81еÑ\82ник:''' Ð\9dиÑ\81Ñ\82е Ñ\83нели Ð¾Ð¿Ð¸Ñ\81 Ð¸Ð·Ð¼ÐµÐ½Ðµ.\nÐ\90ко Ð¿Ð¾Ð½Ð¾Ð²Ð¾ ÐºÐ»Ð¸ÐºÐ½ÐµÑ\82е Ð½Ð° â\80\9e$1â\80\9d, Ð\92аша измена ће бити сачувана без описа.",
+       "selfredirect": "<strong>УпозоÑ\80еÑ\9aе:</strong> Ð\9fÑ\80еÑ\83Ñ\81меÑ\80аваÑ\82е Ð¾Ð²Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð½Ð° Ñ\9aÑ\83 Ñ\81амÑ\83.\nÐ\9cожда Ð²Ð°Ð¼ Ñ\98е Ð¾Ð´Ñ\80едиÑ\88на Ñ\81Ñ\82Ñ\80аниÑ\86а Ð·Ð° Ð¿Ñ\80еÑ\83Ñ\81меÑ\80еÑ\9aе Ð¿Ð¾Ð³Ñ\80еÑ\88на Ð¸Ð»Ð¸ Ñ\83Ñ\80еÑ\92Ñ\83Ñ\98еÑ\82е Ð¿Ð¾Ð³Ñ\80еÑ\88нÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83.\nÐ\90ко Ñ\98оÑ\88 Ñ\98едном Ð¿Ñ\80иÑ\82иÑ\81неÑ\82е â\80\9e$1â\80\9d, преусмерење ће свеједно бити направљено.",
        "missingcommenttext": "Унесите коментар испод.",
-       "missingcommentheader": "<strong>Ð\9dапомена:</strong> Ð½Ð¸Ñ\81Ñ\82е Ñ\83нели Ð½Ð°Ñ\81лов Ð¾Ð²Ð¾Ð³ ÐºÐ¾Ð¼ÐµÐ½Ñ\82аÑ\80а.\nÐ\90ко Ð¿Ð¾Ð½Ð¾Ð²Ð¾ ÐºÐ»Ð¸ÐºÐ½ÐµÑ\82е Ð½Ð° â\80\9e{{int:savearticle}}â\80\9c, Ð²Ð°Ñ\88а измена ће бити сачувана без наслова.",
+       "missingcommentheader": "<strong>Ð\9dапомена:</strong> Ð\9dиÑ\81Ñ\82е Ñ\83нели Ð½Ð°Ñ\81лов Ñ\82еме Ð¾Ð²Ð¾Ð³ ÐºÐ¾Ð¼ÐµÐ½Ñ\82аÑ\80а.\nÐ\90ко Ð¿Ð¾Ð½Ð¾Ð²Ð¾ ÐºÐ»Ð¸ÐºÐ½ÐµÑ\82е Ð½Ð° â\80\9e$1â\80\9d, измена ће бити сачувана без наслова.",
        "summary-preview": "Преглед описа измене:",
        "subject-preview": "Преглед теме:",
        "previewerrortext": "Догодила се грешка приликом приказивања ваших измена.",
        "editingsection": "Уређујете $1 (одељак)",
        "editingcomment": "Уређујете $1 (нови одељак)",
        "editconflict": "Сукобљене измене: $1",
-       "explainconflict": "Ð\9dеко Ð´Ñ\80Ñ\83ги Ñ\98е Ñ\83 Ð¼ÐµÑ\92Ñ\83вÑ\80еменÑ\83 Ð¿Ñ\80оменио Ð¾Ð²Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83.\nÐ\93оÑ\80Ñ\9aи Ð¾ÐºÐ²Ð¸Ñ\80 Ñ\81адÑ\80жи Ñ\81адаÑ\88Ñ\9aи Ñ\82екÑ\81Ñ\82 Ñ\81Ñ\82Ñ\80аниÑ\86е.\nÐ\92аÑ\88е Ð¸Ð·Ð¼ÐµÐ½Ðµ Ñ\81Ñ\83 Ð¿Ñ\80иказане Ñ\83 Ð´Ð¾Ñ\9aем Ð¿Ð¾Ñ\99Ñ\83.\nÐ\9cоÑ\80аÑ\9bеÑ\82е Ð´Ð° Ñ\83неÑ\81еÑ\82е Ñ\81воÑ\98е Ð¿Ñ\80омене Ñ\83 Ñ\81адаÑ\88Ñ\9aи Ñ\82екÑ\81Ñ\82 Ñ\81Ñ\82Ñ\80аниÑ\86е.\n<strong>Само</strong> Ñ\9bе Ñ\82екÑ\81Ñ\82 Ñ\83 Ð³Ð¾Ñ\80Ñ\9aем Ñ\82екÑ\81Ñ\82Ñ\83алном Ð¾ÐºÐ²Ð¸Ñ\80Ñ\83 Ð±Ð¸Ñ\82и Ñ\81аÑ\87Ñ\83ван ÐºÐ°Ð´Ð° ÐºÐ»Ð¸ÐºÐ½ÐµÑ\82е Ð½Ð° â\80\9e{{int:savearticle}}â\80\9c.",
+       "explainconflict": "Ð\9dеко Ð´Ñ\80Ñ\83ги Ñ\98е Ñ\83 Ð¼ÐµÑ\92Ñ\83вÑ\80еменÑ\83 Ð¿Ñ\80оменио Ð¾Ð²Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83.\nÐ\93оÑ\80Ñ\9aи Ð¾ÐºÐ²Ð¸Ñ\80 Ñ\81адÑ\80жи Ñ\81адаÑ\88Ñ\9aи Ñ\82екÑ\81Ñ\82 Ñ\81Ñ\82Ñ\80аниÑ\86е.\nÐ\92аÑ\88е Ð¸Ð·Ð¼ÐµÐ½Ðµ Ñ\81Ñ\83 Ð¿Ñ\80иказане Ñ\83 Ð´Ð¾Ñ\9aем Ð¾ÐºÐ²Ð¸Ñ\80Ñ\83.\nÐ\9cоÑ\80аÑ\9bеÑ\82е Ð´Ð° Ñ\83неÑ\81еÑ\82е Ñ\81воÑ\98е Ð¿Ñ\80омене Ñ\83 Ñ\81адаÑ\88Ñ\9aи Ñ\82екÑ\81Ñ\82 Ñ\81Ñ\82Ñ\80аниÑ\86е.\n<strong>Само</strong> Ñ\9bе Ñ\82екÑ\81Ñ\82 Ñ\83 Ð³Ð¾Ñ\80Ñ\9aем Ð¾ÐºÐ²Ð¸Ñ\80Ñ\83 Ð·Ð° Ñ\83Ñ\80еÑ\92иваÑ\9aе Ð±Ð¸Ñ\82и Ñ\81аÑ\87Ñ\83ван ÐºÐ°Ð´Ð° ÐºÐ»Ð¸ÐºÐ½ÐµÑ\82е Ð½Ð° â\80\9e$1â\80\9d.",
        "yourtext": "Ваш текст",
        "storedversion": "Ускладиштена измена",
        "nonunicodebrowser": "'''Упозорење: ваш прегледач не подржава уникод.'''\nПромените га пре него што почнете с уређивањем.",
        "readonlywarning": "<strong>Упозорење: база података је закључана ради одржавања, тако да тренутно нећете моћи да сачувате измене.</strong>\nМожда бисте желели сачувати текст за касније у некој текстуалној датотеци.\n\nСистемски администратор је навео следеће објашњење: $1",
        "protectedpagewarning": "<strong>Упозорење: ова страница је заштићена, тако да само администратори могу да је мењају.</strong>\nПоследњи запис у дневнику је приказан испод:",
        "semiprotectedpagewarning": "<strong>Напомена:</strong> Ова страница је заштићена, тако да само регистровани корисници могу да је уређују.\nПоследњи запис у дневнику приказан је испод као референца:",
-       "cascadeprotectedwarning": "<strong>УпозоÑ\80еÑ\9aе:</strong> Ð¾Ð²Ð° Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\98е Ð·Ð°Ñ\88Ñ\82иÑ\9bена Ñ\82ако Ð´Ð° Ñ\98е Ð¼Ð¾Ð³Ñ\83 Ñ\83Ñ\80еÑ\92иваÑ\82и Ñ\81амо Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80аÑ\82оÑ\80и, Ñ\98еÑ\80 Ñ\98е Ð¾Ð½Ð° Ñ\83кÑ\99Ñ\83Ñ\87ена Ñ\83 {{PLURAL:$1|Ñ\81ледеÑ\9bÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 ÐºÐ¾Ñ\98а Ñ\98е|Ñ\81ледеÑ\9bе Ñ\81Ñ\82Ñ\80аниÑ\86е ÐºÐ¾Ñ\98е Ñ\81Ñ\83}} Ð·Ð°Ñ\88Ñ\82иÑ\9bене â\80\9eпÑ\80еноÑ\81ивомâ\80\9c заштитом:",
+       "cascadeprotectedwarning": "<strong>УпозоÑ\80еÑ\9aе:</strong> Ð\9eва Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\98е Ð·Ð°Ñ\88Ñ\82иÑ\9bена Ñ\82ако Ð´Ð° Ñ\98е Ð¼Ð¾Ð³Ñ\83 Ñ\83Ñ\80еÑ\92иваÑ\82и Ñ\81амо ÐºÐ¾Ñ\80иÑ\81ниÑ\86и Ñ\81а [[Special:ListGroupRights|одÑ\80еÑ\92еним Ð¿Ñ\80авима]] (админиÑ\81Ñ\82Ñ\80аÑ\82оÑ\80и), Ñ\98еÑ\80 Ñ\98е Ð¸Ñ\81Ñ\82а Ñ\83кÑ\99Ñ\83Ñ\87ена Ñ\83 {{PLURAL:$1|Ñ\81ледеÑ\9bÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 ÐºÐ¾Ñ\98а Ñ\98е Ð·Ð°Ñ\88Ñ\82иÑ\9bена|Ñ\81ледеÑ\9bе Ñ\81Ñ\82Ñ\80аниÑ\86е ÐºÐ¾Ñ\98е Ñ\81Ñ\83 Ð·Ð°Ñ\88Ñ\82иÑ\9bене}} â\80\9eпÑ\80еноÑ\81ивомâ\80\9d заштитом:",
        "titleprotectedwarning": "<strong>Упозорење: ову страницу могу направити само корисници [[Special:ListGroupRights|с одређеним правима]].</strong>\nИспод су наведени последњи записи у дневнику:",
        "templatesused": "{{PLURAL:$1|Шаблон|Шаблони}} на овој страници:",
        "templatesusedpreview": "{{PLURAL:$1|Шаблон|Шаблони}} у овом прегледу:",
        "post-expand-template-argument-warning": "'''Упозорење:''' ова страница садржи најмање један аргумент у шаблону који има превелику величину.\nОвакве аргументе би требало избегавати.",
        "post-expand-template-argument-category": "Странице које садрже изостављене аргументе у шаблону",
        "parser-template-loop-warning": "Откривена је петља шаблона: [[$1]]",
+       "template-loop-category": "Странице са петљама шаблона",
+       "template-loop-category-desc": "Страница садржи петљу шаблона, тј. шаблон који позива сам ребе рекурзивно.",
        "parser-template-recursion-depth-warning": "Дубина укључивања шаблона је прекорачена ($1)",
        "language-converter-depth-warning": "Прекорачена је граница дубине језичког претварача ($1)",
        "node-count-exceeded-category": "Странице у којима је прекорачен број чворова",
        "page_first": "прва",
        "page_last": "последња",
        "histlegend": "Избор разлика: изаберите кутијице измена за упоређивање и притисните ентер или дугме на дну.<br />\nОбјашњење: <strong>({{int:cur}})</strong> = разлика с тренутном изменом, <strong>({{int:last}})</strong> = разлика с претходном изменом, <strong>{{int:minoreditletter}}</strong> = мала измена",
-       "history-fieldset-title": "Преглед историје",
+       "history-fieldset-title": "Преглед измена",
        "history-show-deleted": "Само обрисано",
        "histfirst": "најстарије",
        "histlast": "најновије",
        "nextn-title": "$1 {{PLURAL:$1|следећи резултат|следећа резултата|следећих резултата}}",
        "shown-title": "Прикажи $1 {{PLURAL:$1|резултат|резултата|резултата}} по страници",
        "viewprevnext": "Погледај ($1 {{int:pipe-separator}} $2) ($3).",
-       "searchmenu-exists": "<strong>Постоји и страница под називом „[[:$1]]“.</strong> {{PLURAL:$2|0=|Види такође резултате претраге.}}",
-       "searchmenu-new": "<strong>Ð\9dапÑ\80авиÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 â\80\9e[[:$1]]â\80\9c!</strong> {{PLURAL:$2|0=|Ð\92иди Ñ\82акоÑ\92е резултате претраге.}}",
+       "searchmenu-exists": "<strong>Постоји страница под називом „[[:$1]]”!</strong> {{PLURAL:$2|0=|Такође погледајте друге пронађене резултате претраге.}}",
+       "searchmenu-new": "<strong>Ð\9dапÑ\80авиÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 â\80\9e[[:$1]]â\80\9d!</strong> {{PLURAL:$2|0=|ТакоÑ\92е Ð¿Ð¾Ð³Ð»ÐµÐ´Ð°Ñ\98Ñ\82е Ñ\80езÑ\83лÑ\82аÑ\82 Ð¿Ñ\80еÑ\82Ñ\80аге.|ТакоÑ\92е Ð¿Ð¾Ð³Ð»ÐµÐ´Ð°Ñ\98Ñ\82е резултате претраге.}}",
        "searchprofile-articles": "Чланци",
        "searchprofile-images": "Датотеке",
        "searchprofile-everything": "Све",
        "search-file-match": "(подудара се садржај датотеке)",
        "search-suggest": "Да ли сте мислили на: $1",
        "search-rewritten": "Приказани резултати за $1. Ипак претражи $2.",
-       "search-interwiki-caption": "Ð\91Ñ\80аÑ\82Ñ\81ки Ð¿Ñ\80оÑ\98екÑ\82и",
+       "search-interwiki-caption": "РезÑ\83лÑ\82аÑ\82и Ñ\81а Ñ\81еÑ\81Ñ\82Ñ\80инÑ\81киÑ\85 Ð¿Ñ\80оÑ\98екаÑ\82а",
        "search-interwiki-default": "Резултати са $1:",
        "search-interwiki-more": "(више)",
        "search-relatedarticle": "Повезано",
        "searchrelated": "повезано",
        "searchall": "све",
-       "showingresults": "Испод {{PLURAL:$1|је приказан <strong>1</strong> резултат|су приказана <strong>$1</strong> резултата|је приказано <strong>$1</strong> резултата}} почев од броја <strong>$2</strong>.",
+       "showingresults": "Испод {{PLURAL:$1|је приказан <strong>1</strong> резултат|су приказана <strong>$1</strong> резултата|је приказано <strong>$1</strong> резултата}}, почев од броја <strong>$2</strong>.",
        "showingresultsinrange": "Испод {{PLURAL:$1|је приказан <strong>1</strong> резултат|су приказана <strong>$1</strong> резултата|је приказано <strong>$1</strong> резултата}}, у распону од <strong>$2</strong> до <strong>$3</strong>.",
-       "search-showingresults": "{{PLURAL:$4|РезÑ\83лÑ\82аÑ\82 <strong>$1</strong> Ð¾Ð´ <strong>$3</strong>|РезÑ\83лÑ\82аÑ\82а <strong>$1 â\80\93 $2</strong> од <strong>$3</strong>}}",
+       "search-showingresults": "{{PLURAL:$4|РезÑ\83лÑ\82аÑ\82 <strong>$1</strong> Ð¾Ð´ <strong>$3</strong>|РезÑ\83лÑ\82аÑ\82и <strong>$1â\80\94$2</strong> од <strong>$3</strong>}}",
        "search-nonefound": "Нема поклапања.",
        "powersearch-legend": "Напредна претрага",
-       "powersearch-ns": "ТÑ\80ажи Ñ\83 Ñ\81ледеÑ\9bим именским просторима:",
+       "powersearch-ns": "Ð\9fÑ\80еÑ\82Ñ\80ага Ð¿Ð¾ именским просторима:",
        "powersearch-togglelabel": "Изабери:",
        "powersearch-toggleall": "Све",
        "powersearch-togglenone": "Ништа",
        "saveusergroups": "Сачувај {{GENDER:$1|корисничке}} групе",
        "userrights-groupsmember": "Члан:",
        "userrights-groupsmember-auto": "Подразумевано члан и:",
-       "userrights-groups-help": "Можете променити групе којима овај корисник припада.\n* Означен квадратић означава да се корисник налази у тој групи.\n* Неозначен квадратић означава да се корисник не налази у тој групи.\n* Звездица (*) означава да не можете уклонити групу ако је додате и обратно.\n* Тараба (#) означава да једино можете одложити време истека ове групе; не можете га убрзати.",
+       "userrights-groups-help": "Можете променити групе којима овај корисник припада:\n* Означен квадратић означава да се корисник налази у тој групи.\n* Неозначен квадратић означава да се корисник не налази у тој групи.\n* Звездица (*) означава да не можете уклонити ту групу ако је додате и обратно.\n* Тараба (#) означава да једино можете одложити време истека чланства у тој групи; не можете га убрзати.",
        "userrights-reason": "Разлог:",
        "userrights-no-interwiki": "Немате овлашћења да мењате корисничка права на другим викијима.",
        "userrights-nodatabase": "База података $1 не постоји или није локална.",
        "userrights-changeable-col": "Групе које можете да промените",
        "userrights-unchangeable-col": "Групе које не можете да промените",
        "userrights-irreversible-marker": "$1*",
+       "userrights-expiry-current": "Истиче $1",
+       "userrights-expiry-none": "Не истиче",
+       "userrights-expiry": "Истиче:",
+       "userrights-cannot-shorten-expiry": "Не можете убрзати истек чланства у групи „$1”. Само корисници са дозволом да додају или уклоне ову групу могу да убрзају рок истека.",
        "userrights-conflict": "Сукоб промена корисничких права! Молимо проверите ваше измене.",
        "group": "Група:",
        "group-user": "Корисници",
        "recentchanges-legend-heading": "<strong>Легенда:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|списак нових страница]])",
        "recentchanges-submit": "Прикажи",
+       "rcfilters-activefilters": "Активни филтери",
+       "rcfilters-quickfilters": "Брзе везе",
+       "rcfilters-savedqueries-defaultlabel": "Сачувани филтери",
+       "rcfilters-savedqueries-rename": "Преименуј",
+       "rcfilters-savedqueries-setdefault": "Постави као подразумевано",
+       "rcfilters-savedqueries-unsetdefault": "Уклони као подразумевано",
+       "rcfilters-savedqueries-remove": "Уклони",
+       "rcfilters-savedqueries-new-name-label": "Име",
+       "rcfilters-savedqueries-apply-label": "Направи брзу везу",
+       "rcfilters-savedqueries-cancel-label": "Откажи",
+       "rcfilters-savedqueries-add-new-title": "Сачувај филтере као брзу везу",
        "rcfilters-restore-default-filters": "Враћање подразумеваних филтера",
        "rcfilters-clear-all-filters": "Уклони све филтере",
        "rcfilters-empty-filter": "Нема активних филтера. Сви доприноси су приказани.",
+       "rcfilters-noresults-conflict": "Није пронађен ниједан резултат јер су критеријуми претраге сукобљени",
+       "rcfilters-state-message-subset": "Овај филтер нема ефекта јер су његови резултати укључени са онима {{PLURAL:$2|следећег, ширег филтера|следећих, ширих филтера}} (покушајте са означавањем да бисте их распознали): $1",
+       "rcfilters-state-message-fullcoverage": "Одабир свих филтера у групи је исто као и одабир ниједног, тако да овај филтер нема ефекта. Група укључује: $1",
+       "rcfilters-filtergroup-registration": "Регистрација корисника",
+       "rcfilters-filter-registered-label": "Регистровани",
+       "rcfilters-filter-registered-description": "Пријављени уредници.",
+       "rcfilters-filter-unregistered-label": "Нерегистровани",
+       "rcfilters-filter-unregistered-description": "Уредници који нису пријављени.",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "Овај филтер је у сукобу са следећим {{PLURAL:$2|филтером|филтерима}} за искуство, који {{PLURAL:$2|проналази|проналазе}} само регистроване кориснике: $1",
+       "rcfilters-filtergroup-authorship": "Ауторство доприноса",
+       "rcfilters-filter-editsbyself-label": "Ваше измене",
+       "rcfilters-filter-editsbyself-description": "Ваши доприноси.",
+       "rcfilters-filter-editsbyother-label": "Измене других",
+       "rcfilters-filter-editsbyother-description": "Све измене осим Ваших.",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Филтери за искуство проналазе само регистроване кориснике, тако да је овај филтер у сукобу са филтером „Unregistered”.",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Филтер „Unregistered” је у сукобу са једним или више филтера за искуство, који проналазе само регистроване кориснике. Сукобљени филтери су означени у подручју Активни филтери, изнад.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Новајлије",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Мање од 10 измјена и 4 дана активности.",
+       "rcfilters-filter-user-experience-level-learner-label": "Ученици",
+       "rcfilters-filter-user-experience-level-learner-description": "Више искуства од „новајлија”, али мање од „искусних корисника”.",
        "rcfilters-filter-user-experience-level-experienced-label": "Искусни корисници",
+       "rcfilters-filter-user-experience-level-experienced-description": "Преко 30 дана активности и 500 измјена.",
+       "rcfilters-filter-bots-label": "Бот",
+       "rcfilters-filter-humans-label": "Човјек (није бот)",
+       "rcfilters-filter-minor-label": "Мање измјене",
+       "rcfilters-filtergroup-watchlist": "Странице на списку надгледања",
+       "rcfilters-filter-watchlist-watched-label": "На списку надгледања",
+       "rcfilters-filter-watchlist-watched-description": "Измене страница на Вашем списку надгледања",
+       "rcfilters-filter-watchlist-watchednew-label": "Нове измене у списку надгледања",
+       "rcfilters-filter-watchlist-watchednew-description": "Измене страница на списку надгледања које нисте посетили од када су направљене измене.",
+       "rcfilters-filter-watchlist-notwatched-label": "Није на списку надгледања",
+       "rcfilters-filter-watchlist-notwatched-description": "Све осим измена страница на Вашем списку надгледања.",
+       "rcfilters-filter-pageedits-label": "Измјене страница",
+       "rcfilters-filter-pageedits-description": "Измјене вики садржаја, расправа, описа категорија…",
+       "rcfilters-filter-newpages-label": "Стварање страница",
+       "rcfilters-filter-newpages-description": "Измјене којима се стварају нове странице.",
+       "rcfilters-filter-logactions-label": "Радње забиљежене у дневницима",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "Филтер за „мање” измене је у сукобу са једним или више филтера типа измена, зато што одређени типови измена не могу да се означе као „мање”. Сукобљени филтери су означени у подручју Активни филтери, изнад.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Одређени типови измена не могу да се означе као „мање”, тако да је овај филтер у сукобу са следећим филтерима типа измена: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Овај филтер типа измене је у сукобу са филтером за „мање” измене. Одређени типови измена не могу да се означе као „мање”.",
+       "rcfilters-filtergroup-lastRevision": "Последња измена",
+       "rcfilters-filter-lastrevision-label": "Последња измена",
+       "rcfilters-filter-lastrevision-description": "Најскорашњија измена странице.",
+       "rcfilters-filter-previousrevision-label": "Раније измене",
+       "rcfilters-filter-previousrevision-description": "Све измене које нису најскорашњије измене странице.",
        "rcnotefrom": "Испод {{PLURAL:$5|је измена|су измене}} од <strong>$3, $4</strong> (до <strong>$1</strong> приказано).",
+       "rclistfromreset": "Ресетуј одабир датума",
        "rclistfrom": "Прикажи нове измене почев од $2 $3",
        "rcshowhideminor": "$1 мање измене",
        "rcshowhideminor-show": "Прикажи",
        "rcshowhidecategorization": "$1 категоризацију страница",
        "rcshowhidecategorization-show": "Прикажи",
        "rcshowhidecategorization-hide": "Сакриј",
-       "rclinks": "Прикажи последњих $1 измена {{PLURAL:$2|претходни дан|у последња $2 дана|у последњих $2 дана}}<br />$3",
+       "rclinks": "Прикажи последњих $1 измена {{PLURAL:$2|претходни дан|у последња $2 дана|у последњих $2 дана}}",
        "diff": "разл",
        "hist": "ист",
        "hide": "Сакриј",
        "php-uploaddisabledtext": "Отпремање датотека је онемогућено у PHP-у.\nПроверите подешавања file_uploads.",
        "uploadscripted": "Датотека садржи HTML или скриптни код који може бити погрешно протумачен од стране прегледача.",
        "upload-scripted-pi-callback": "Датотека која садржи инструкције за обраду XML стилског облика се не може отпремити.",
+       "upload-scripted-dtd": "Није могуће отпремање SVG датотека које садрже нестандардну DTD декларацију.",
        "uploaded-script-svg": "Пронађен скриптни елеменат „$1“ у постављеној SVG датотеци.",
        "uploaded-hostile-svg": "Пронађен небезбедан CSS у стилском елементу постављене SVG датотеке.",
        "uploaded-event-handler-on-svg": "Није дозвољено постављање атрибута који контролишу догађаје <code>$1=\"$2\"</code> у SVG датотекама.",
        "img-auth-nopathinfo": "Недостаје PATH_INFO.\nВаш сервер није подешен да прослеђује овакве податке.\nМожда је заснован на CGI-ју који не подржава img_auth.\nПогледајте https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization?uselang=sr-ec.",
        "img-auth-notindir": "Захтевана путања није у подешеној фасцикли за отпремање.",
        "img-auth-badtitle": "Не могу да створим исправан наслов за „$1“.",
-       "img-auth-nologinnWL": "Ð\9dиÑ\81Ñ\82е Ð¿Ñ\80иÑ\98авÑ\99ени Ð¸ â\80\9e$1â\80\9c није на списку дозвољених.",
+       "img-auth-nologinnWL": "Ð\9dиÑ\81Ñ\82е Ð¿Ñ\80иÑ\98авÑ\99ени Ð¸ â\80\9e$1â\80\9d није на списку дозвољених.",
        "img-auth-nofile": "Датотека „$1“ не постоји.",
        "img-auth-isdir": "Покушавате да приступите фасцикли „$1“.\nДозвољен је само приступ датотекама.",
        "img-auth-streaming": "Учитавање „$1“.",
        "wantedcategories": "Тражене категорије",
        "wantedpages": "Тражене странице",
        "wantedpages-summary": "Списак непостојећих страница са највише веза до њих, на овом списку се не налазе странице до којих воде преусмерења. За списак покварених преусмерења погледајте [[{{#special:BrokenRedirects}}|списак покварених преусмерења]].",
-       "wantedpages-badtitle": "Неисправан наслов у низу резултата: $1",
+       "wantedpages-badtitle": "Неисправан наслов у сету резултата: $1",
        "wantedfiles": "Тражене датотеке",
        "wantedfiletext-cat": "Следеће датотеке се користе, али не постоје. Датотеке из других ризница могу бити наведене иако не постоје. Такве датотеке ће бити <del>поништене</del> са списка. Поред тога, странице које садрже непостојеће датотеке се налазе [[:$1|овде]].",
        "wantedfiletext-nocat": "Следеће датотеке се користе, али не постоје. Датотеке из других ризница могу бити наведене иако не постоје. Такве датотеке ће бити <del>поништене</del> са списка.",
        "apihelp-no-such-module": "Модул „$1“ није пронађен.",
        "apisandbox": "API песак",
        "apisandbox-api-disabled": "АПИ је онемогућен на овом сајту.",
+       "apisandbox-unfullscreen": "Прикажи страницу",
        "apisandbox-submit": "Постави захтев",
        "apisandbox-reset": "Очисти",
+       "apisandbox-retry": "Покушај поново",
        "apisandbox-results": "Резултати",
        "apisandbox-request-url-label": "Адреса захтева:",
        "apisandbox-continue": "Настави",
        "unwatchthispage": "Прекини надгледање",
        "notanarticle": "Није страница са садржајем",
        "notvisiblerev": "Измена је обрисана",
-       "watchlist-details": "Имате {{PLURAL:$1|$1 страница|$1 странице|$1 страница}} на вашем списку надгледања, не рачунајући странице за разговор.",
+       "watchlist-details": "Имате {{PLURAL:$1|$1 страницу|$1 странице|$1 страница}} на свом списку надгледања, не рачунајући засебно странице за разговор.",
        "wlheader-enotif": "Обавештење имејлом је омогућено.",
        "wlheader-showupdated": "Странице које су измењене откад сте их последњи пут посетили су '''подебљане'''.",
        "wlnote": "Испод {{PLURAL:$1|је последња измена|су последње <strong>$1</strong> измене|је последњих <strong>$1</strong> измена}} у {{PLURAL:$2|претходном сату|претходна <strong>$2</strong> сата|претходних <strong>$2</strong> сати}}, закључно са $3, $4.",
        "enotif_body_intro_moved": "Страницу $1 на {{SITENAME}} {{GENDER:$2|преместио|преместила}} је $2 дана $PAGEEDITDATE Тренутна измена налази се на  $3.",
        "enotif_body_intro_restored": "Страницу $1 на {{SITENAME}} {{GENDER:$2|вратио|вратила}} је $2 дана $PAGEEDITDATE Тренутна измена налази се на $3.",
        "enotif_body_intro_changed": "Страницу $1 на {{SITENAME}} {{GENDER:$2|променио|променила}} је $2 дана $PAGEEDITDATE Тренутна измена налази се на $3.",
-       "enotif_lastvisited": "Ð\9fогледаÑ\98Ñ\82е $1 Ð·Ð° Ñ\81ве Ð¸Ð·Ð¼ÐµÐ½Ðµ Ð¾Ð´ Ð²Ð°Ñ\88е Ð¿Ð¾Ñ\81ледÑ\9aе Ð¿Ð¾Ñ\81еÑ\82е.",
-       "enotif_lastdiff": "Ð\9fогледаÑ\98Ñ\82е $1 Ð´Ð° Ð²Ð¸Ð´Ð¸Ñ\82е Ð¾Ð²Ñ\83 Ð¸Ð·Ð¼ÐµÐ½Ñ\83.",
+       "enotif_lastvisited": "Ð\97а Ñ\81ве Ð¸Ð·Ð¼ÐµÐ½Ðµ Ð¾Ð´ Ð²Ð°Ñ\88е Ð¿Ð¾Ñ\81ледÑ\9aе Ð¿Ð¾Ñ\81еÑ\82е, Ð¿Ð¾Ð³Ð»ÐµÐ´Ð°Ñ\98Ñ\82е $1.",
+       "enotif_lastdiff": "Ð\94а Ð²Ð¸Ð´Ð¸Ñ\82е Ð¾Ð²Ñ\83 Ð¸Ð·Ð¼ÐµÐ½Ñ\83, Ð¿Ð¾Ð³Ð»ÐµÐ´Ð°Ñ\98Ñ\82е $1.",
        "enotif_anon_editor": "анониман корисник $1",
        "enotif_body": "Поштовани $WATCHINGUSERNAME,\n \t\n$PAGEINTRO $NEWPAGE\n\nОпис: $PAGESUMMARY $PAGEMINOREDIT\n\nКонтакт:\nмејл: $PAGEEDITOR_EMAIL\nвики: $PAGEEDITOR_WIKI\n\nНеће бити других обавештења у случају даљих измена уколико не посетите ову страницу када сте пријављени.\nМожете и да поништите поставке обавештења за све странице у вашем списку надгледања.\n\nСрдачан поздрав, {{SITENAME}}\n\n--\nДа бисте променили поставке имејл обавештења, посетите\n{{canonicalurl:{{#special:Preferences}}}}\n\nДа бисте променили поставке списка надгледања, посетите\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nДа бисте уклонили ову страницу са списка надгледања, посетите\n$UNWATCHURL\n\nПодршка и даља помоћ:\n$HELPPAGE",
        "created": "направљена",
        "sp-contributions-uploads": "отпремања",
        "sp-contributions-logs": "дневници",
        "sp-contributions-talk": "разговор",
-       "sp-contributions-userrights": "Ñ\83пÑ\80авÑ\99аÑ\9aе ÐºÐ¾Ñ\80иÑ\81ниÑ\87ким Ð¿Ñ\80авима",
+       "sp-contributions-userrights": "Ñ\83пÑ\80авÑ\99аÑ\9aе Ð¿Ñ\80авима {{GENDER:$1|коÑ\80иÑ\81ника|коÑ\80иÑ\81ниÑ\86е|коÑ\80иÑ\81ника}}",
        "sp-contributions-blocked-notice": "Овај корисник је тренутно блокиран. \nИспод су наведени последњи записи у дневнику блокирања:",
        "sp-contributions-blocked-notice-anon": "Ова ИП адреса је тренутно блокирана.\nИспод су наведени последњи записи у дневнику блокирања:",
        "sp-contributions-search": "Претрага доприноса",
        "unblocked-id": "Блокирање $1 је уклоњено",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] је деблокиран.",
        "blocklist": "Блокирани корисници",
+       "autoblocklist": "Аутоблокови",
+       "autoblocklist-submit": "Претражи",
+       "autoblocklist-legend": "Списак аутоблокирања",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Локални аутоблок|Локални аутоблокови}}",
+       "autoblocklist-empty": "Списак аутоблокирања је празан.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Други аутоблок|Други аутоблокови}}",
        "ipblocklist": "Блокирани корисници",
        "ipblocklist-legend": "Проналажење блокираног корисника",
        "blocklist-userblocks": "Сакриј блокирања налога",
        "tooltip-pt-mycontris": "Списак {{GENDER:|ваших}} доприноса",
        "tooltip-pt-anoncontribs": "Списак измена направљених са ове IP адресе",
        "tooltip-pt-login": "Препоручујемо вам да се пријавите, иако то није обавезно.",
+       "tooltip-pt-login-private": "Морате да се пријавите да бисте користили овај Вики",
        "tooltip-pt-logout": "Одјавите се",
        "tooltip-pt-createaccount": "Охрабрујемо вас да отворите налог и пријавите се али то није обавезно",
        "tooltip-ca-talk": "Разговор о страници са садржајем",
        "tooltip-undo": "Поништава ову измену и отвара образац за уређивање.",
        "tooltip-preferences-save": "Сачувај поставке",
        "tooltip-summary": "Унесите кратак опис",
+       "interlanguage-link-title": "$1 — $2",
+       "interlanguage-link-title-nonlang": "$1 — $2",
        "common.css": "/* CSS постављен овде ће се одразити на све теме */",
        "print.css": "/* CSS постављен овде ће утицати на издање за штампу */",
        "noscript.css": "/* CSS постављен овде ће утицати на све кориснике којима је онемогућен јаваскрипт */",
        "anonymous": "Анонимни {{PLURAL:$1|корисник|корисници}} пројекта {{SITENAME}}",
        "siteuser": "{{SITENAME}} корисник $1",
        "anonuser": "{{SITENAME}} анониман корисник $1",
-       "lastmodifiedatby": "Ову страницу је последњи пут {{GENDER:$4|изменио|изменила|изменио}} $3, $1 у $2.",
+       "lastmodifiedatby": "Ову страницу је последњи пут {{GENDER:$4|уредио|уредила|уредио}} $3, на датум $1 у $2 ч.",
        "othercontribs": "Засновано на раду корисника $1.",
        "others": "други",
        "siteusers": "{{PLURAL:$2|1={{GENDER:$1|корисник|корисница}}|корисници}} на пројекту {{SITENAME}} $1",
        "newimages-summary": "Ова посебна страница приказује последње отпремљене датотеке.",
        "newimages-legend": "Филтер",
        "newimages-label": "Назив датотеке (или њен део):",
+       "newimages-user": "IP адреса или корисничко име",
        "newimages-showbots": "Прикажи датотеке које су послали ботови",
        "newimages-hidepatrolled": "Сакриј патролирана отпремања",
        "noimages": "Нема ништа.",
        "minutes-abbrev": "$1 м",
        "hours-abbrev": "$1 ч",
        "days-abbrev": "$1 д",
-       "seconds": "{{PLURAL:$1|$1 Ñ\81екÑ\83нда|$1 Ñ\81екÑ\83нде|$1 секунди}}",
+       "seconds": "{{PLURAL:$1|$1 Ñ\81екÑ\83нда|$1 Ñ\81екÑ\83нда|$1 секунди}}",
        "minutes": "{{PLURAL:$1|$1 минут|$1 минута|$1 минута}}",
        "hours": "{{PLURAL:$1|$1 сат|$1 сата|$1 сати}}",
        "days": "{{PLURAL:$1|$1 дан|$1 дана|$1 дана}}",
        "confirmrecreate-noreason": "{{GENDER:$1|Корисник|Корисница}} [[User:$1|$1]] ([[User talk:$1|разговор]]) је {{GENDER:$1|обрисао|обрисала}} ову страницу након што сте почели да је уређујете. Потврдите да стварно желите да поново направите ову страницу.",
        "recreate": "Поново направи",
        "unit-pixel": "px",
+       "confirm-purge-title": "Освежи ову страницу",
        "confirm_purge_button": "У реду",
        "confirm-purge-top": "Очистити привремену меморију ове стране?",
        "confirm-purge-bottom": "Ова радња чисти привремену меморију и приказује најновију измену.",
        "htmlform-user-not-valid": "<strong>$1</strong> није исправно корисничко име.",
        "logentry-delete-delete": "$1 је {{GENDER:$2|обрисао|обрисала}} страницу $3",
        "logentry-delete-delete_redir": "$1 је {{GENDER:$2|обрисао|обрисала}} преусмерење $3 преписивањем",
-       "logentry-delete-restore": "$1 је {{GENDER:$2|вратио|вратила}} страницу $3",
+       "logentry-delete-restore": "$1 је {{GENDER:$2|вратио|вратила}} страницу $3 ($4)",
+       "logentry-delete-restore-nocount": "$1 је {{GENDER:$2|вратио|вратила}} страницу $3",
+       "restore-count-revisions": "{{PLURAL:$1|1 измена|$1 измене|$1 измена}}",
+       "restore-count-files": "{{PLURAL:$1|1 датотека|$1 датотеке|$1 датотека}}",
        "logentry-delete-event": "$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=догађаја|$5 догађаја}} у дневнику $3: $4",
        "logentry-delete-revision": "$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=једне измене|$5 измене|$5 измена}} на страници $3: $4",
        "logentry-delete-event-legacy": "$1 је {{GENDER:$2|променио|променила}} видљивост догађаја у дневнику $3",
        "log-name-tag": "Дневник ознака",
        "log-description-tag": "Овај дневник приказује додавање/уклањање [[Special:Tags|ознака]] на појединачне измене или уносе у дневницима. Овај дневник не приказује означавање када су она део уређивања, брисања или неке друге радње.",
        "rightsnone": "(нема)",
+       "rightslogentry-temporary-group": "$1 (привремено, до $2)",
        "feedback-adding": "Додајем повратну информацију на страницу…",
        "feedback-back": "Назад",
        "feedback-bugcheck": "Одлично! Проверите да ли је грешка [$1 позната од пре].",
        "api-error-stashfailed": "Унутрашња грешка: сервер не може да сачува привремену датотеку.",
        "api-error-unknown-warning": "Непознато упозорење: „$1”.",
        "api-error-unknownerror": "Непозната грешка: „$1“.",
-       "duration-seconds": "$1 {{PLURAL:$1|Ñ\81екÑ\83нд|Ñ\81екÑ\83нде|секунди}}",
+       "duration-seconds": "$1 {{PLURAL:$1|Ñ\81екÑ\83нд|Ñ\81екÑ\83нда|секунди}}",
        "duration-minutes": "$1 {{PLURAL:$1|минут|минута|минута}}",
        "duration-hours": "$1 {{PLURAL:$1|сат|сата|сати}}",
        "duration-days": "$1 {{PLURAL:$1|дан|дана|дана}}",
        "duration-centuries": "$1 {{PLURAL:$1|век|века|векова}}",
        "duration-millennia": "$1 {{PLURAL:$1|миленијум|миленијума|миленијума}}",
        "rotate-comment": "Слика је ротирана за $1° у смеру казаљке на сату",
-       "limitreport-cputime-value": "$1 {{PLURAL:$1|секунда|секунд|секунди}}",
+       "limitreport-title": "Подаци профилисања анализатора:",
+       "limitreport-cputime": "Време коришћења CPU",
+       "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|бајт|бајта|бајтова}}",
+       "limitreport-templateargumentsize": "Величина аргумената шаблона",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|бајт|бајта|бајтова}}",
+       "limitreport-expansiondepth": "Највећа дубина проширења",
+       "limitreport-expensivefunctioncount": "Број „скупих” функција анализатора",
        "expandtemplates": "Замена шаблона",
        "expand_templates_intro": "Ова посебна страница узима текст и мења све шаблоне у њему рекурзивно.\nТакође мења функције парсера као што је <code><nowiki>{{</nowiki>#language:…}}</code> и променљиве као што је <code><nowiki>{{</nowiki>CURRENTDAY}}</code>. \nЗаправо практично све што се налази између витичастих заграда.",
        "expand_templates_title": "Назив контекста; за {{СТРАНИЦА}} итд.:",
        "special-characters-group-thai": "Тајландски",
        "special-characters-group-lao": "Лаоски",
        "special-characters-group-khmer": "Кмерски",
+       "special-characters-group-canadianaboriginal": "Канадски абориџински",
        "mw-widgets-dateinput-no-date": "Датум није изабран",
        "mw-widgets-dateinput-placeholder-day": "ГГГГ-ММ-ДД",
        "mw-widgets-dateinput-placeholder-month": "ГГГГ-ММ",
        "mw-widgets-mediasearch-noresults": "Нема резултата.",
        "mw-widgets-titleinput-description-new-page": "страница још увек не постоји",
        "mw-widgets-titleinput-description-redirect": "преусмерава на $1",
+       "date-range-from": "Од датума:",
+       "date-range-to": "До датума:",
        "randomrootpage": "Случајна коренска страница",
        "log-action-filter-block": "Тип блокирања:",
        "log-action-filter-contentmodel": "Тип промене модела садржаја:",
        "changecredentials-submit": "Промени",
        "removecredentials": "Уклањање акредитива",
        "credentialsform-provider": "Врста акредитива:",
-       "credentialsform-account": "Назив налога:"
+       "credentialsform-account": "Назив налога:",
+       "rawhtml-notallowed": "&lt;html&gt; тагови не могу да се користе ван нормалних страница.",
+       "gotointerwiki": "Напуштам пројекат {{SITENAME}}",
+       "gotointerwiki-invalid": "Одабрани наслов је невалидан.",
+       "gotointerwiki-external": "Управо ћете да напустите пројекат {{SITENAME}} да бисте на засебном веб-сајту посетили [[$2]].\n\n'''[$1 Продужи на $1]'''",
+       "undelete-cantedit": "Не можете повратити ову страницу јер немате дозволу да је уређујете.",
+       "undelete-cantcreate": "Не можете повратити ову страницу јер нема постојеће странице са овим именом и немате дозволу да направите ову страницу."
 }
index 55aa77a..8de9d64 100644 (file)
@@ -24,7 +24,9 @@
                        "Xð",
                        "Matma Rex",
                        "Mega Aleksandar",
-                       "Asmen"
+                       "Asmen",
+                       "Obsuser",
+                       "Zoranzoki21"
                ]
        },
        "tog-underline": "Podvlačenje veza:",
        "hidden-category-category": "Skrivene kategorije",
        "category-subcat-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću potkategoriju.|Ova kategorija ima {{PLURAL:$1|1=sledeću potkategoriju|sledeće $1 potkategorije|sledećih $1 potkategorija}}, od ukupno $2.}}",
        "category-subcat-count-limited": "Ova kategorija sadrži {{PLURAL:$1|sledeću potkategoriju|sledeće $1 potkategorije|sledećih $1 potkategorija}}.",
-       "category-article-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću stranicu.|{{PLURAL:$1|Sledeća stranica je|Sledeće $1 stranice su|Sledećih $1 stranica je}} u ovoj kategoriji, od ukupno $2.}}",
+       "category-article-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću stranicu.|{{PLURAL:$1|Sledeća $1 stranica je|Sledeće $1 stranice su|Sledećih $1 stranica je}} u ovoj kategoriji, od ukupno $2.}}",
        "category-article-count-limited": "{{PLURAL:$1|1=Sledeća stranica je|Sledeće $1 stranice su|Sledećih $1 stranica je}} u ovoj kategoriji.",
        "category-file-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću datoteku.|{{PLURAL:$1|1=Sledeća datoteka je|Sledeće $1 datoteke su|Sledećih $1 datoteka je}} u ovoj kategoriji, od ukupno $2.}}",
        "category-file-count-limited": "{{PLURAL:$1|1=Sledeća datoteka je|Sledeće $1 datoteke su|Sledećih $1 datoteka je}} u ovoj kategoriji.",
        "anontalk": "Razgovor",
        "navigation": "Navigacija",
        "and": "&#32;i",
-       "qbfind": "Pronađi",
-       "qbbrowse": "Potraži",
-       "qbedit": "Uredi",
-       "qbpageoptions": "Ova stranica",
-       "qbmyoptions": "Moje stranice",
-       "faq": "NPP",
-       "faqpage": "Project:NPP",
+       "faq": "ČPP",
        "actions": "Radnje",
        "namespaces": "Imenski prostori",
        "variants": "Varijante",
        "edit-local": "Uredi lokalni opis",
        "create": "Napravi",
        "create-local": "Dodaj lokalni opis",
-       "editthispage": "Uredi ovu stranicu",
-       "create-this-page": "Napravi ovu stranicu",
        "delete": "Obriši",
-       "deletethispage": "Obriši ovu stranicu",
-       "undeletethispage": "Vrati ovu stranicu",
        "undelete_short": "Vrati {{PLURAL:$1|1=jednu obrisanu izmenu|$1 obrisane izmene|$1 obrisanih izmena}}",
        "viewdeleted_short": "Pogledaj {{PLURAL:$1|obrisanu izmenu|$1 obrisane izmene|$1 obrisanih izmena}}",
        "protect": "Zaštiti",
        "protect_change": "promeni",
-       "protectthispage": "Zaštiti ovu stranicu",
        "unprotect": "Promeni zaštitu",
-       "unprotectthispage": "Promeni zaštitu ove stranice",
        "newpage": "Nova stranica",
-       "talkpage": "Razgovor ove stranice",
        "talkpagelinktext": "razgovor",
        "specialpage": "Posebna stranica",
        "personaltools": "Lične alatke",
-       "articlepage": "Pogledaj stranicu sa sadržajem",
        "talk": "Razgovor",
        "views": "Pregledi",
        "toolbox": "Alatke",
        "tool-link-userrights": "Promeni {{GENDER:$1|korisnik}} grupe",
        "tool-link-userrights-readonly": "Prikaži {{GENDER:$1|korisnik}} grupe",
-       "tool-link-emailuser": "Pošalji e-poruku {{GENDER:$1|korisnik}}",
-       "userpage": "Pogledaj korisničku stranicu",
-       "projectpage": "Pogledaj stranicu projekta",
+       "tool-link-emailuser": "Pošalji imejl",
        "imagepage": "Pogledaj stranicu datoteke",
        "mediawikipage": "Pogledaj stranicu poruke",
        "templatepage": "Pogledaj stranicu šablona",
        "redirectedfrom": "(preusmereno sa $1)",
        "redirectpagesub": "Preusmerenje",
        "redirectto": "Preusmerava na:",
-       "lastmodifiedat": "Ova stranica je poslednji put izmenjena $1 u $2.",
+       "lastmodifiedat": "Ova stranica je poslednji put uređena na datum $1 u $2 č.",
        "viewcount": "Ova stranica je pregledana {{PLURAL:$1|jedanput|$1 puta|$1 puta}}.",
        "protectedpage": "Zaštićena stranica",
        "jumpto": "Idi na:",
        "title-invalid-magic-tilde": "Naslov stranice koju ste tražili je nevažeći jer sadrži magični niz tildi (<nowiki>~~~</nowiki>)",
        "title-invalid-too-long": "Naslov stranice koju ste tražili je predugačak. Ne sme da bude duži od $1 {{PLURAL:$1|bajt|bajtovi}} u UTF-8 znacima.",
        "title-invalid-leading-colon": "Naslov stranice koju ste tražili sadrži dvotačku na početku.",
-       "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 i poslednji put su ažurirani $2 u $3. U kešu {{PLURAL:$4|1=je dostupan najviše jedan rezultat|su dostupna najviše $4 rezultata|je dostupno najviše $4 rezultata}}.",
+       "perfcached": "Sledeći podaci su keširani i možda nisu ažurirani. U kešu {{PLURAL:$1|je dostupan najviše jedan rezultat|su dostupna najviše $1 rezultata|je dostupno najviše $1 rezultata}}.",
+       "perfcachedts": "Sledeći podaci su keširani i poslednji put ažurirani na datum $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.\nPodaci koji se ovde nalaze mogu biti zastareli.",
        "viewsource": "Izvorni kod",
        "viewsource-title": "Izvorni tekst stranice $1",
        "createacct-reason-ph": "Zašto pravite još jedan nalog?",
        "createacct-submit": "Otvori nalog",
        "createacct-another-submit": "Otvori nalog",
-       "createacct-benefit-heading": "{{SITENAME}} je napravljen od strane ljudi kao što ste vi.",
+       "createacct-benefit-heading": "{{SITENAME}} je projekat koji stvaraju ljudi poput Vas.",
        "createacct-benefit-body1": "{{PLURAL:$1|izmena|izmene}}",
        "createacct-benefit-body2": "{{PLURAL:$1|stranica|stranice}}",
        "createacct-benefit-body3": "{{PLURAL:$1|aktivni korisnik|aktivnih korisnika}}",
        "preview": "Pretpregled",
        "showpreview": "Prikaži pretpregled",
        "showdiff": "Prikaži izmene",
-       "blankarticle": "<strong>Upozorenje:</strong> stranica koju pravite nema nikakav sadržaj.\nAko još jednom pritisnete „{{int:savearticle}}“ napravićete praznu stranicu.",
-       "anoneditwarning": "<strong>Upozorenje:</strong> niste prijavljeni. Vaša IP adresa će biti javno vidljiva u istoriji ove stranice ako načinite bilo kakvu izmenu. Ako se <strong>[$1 prijavite]</strong> ili <strong>[$2 otvorite nalog]</strong> vaše izmene će biti pripisane vašem korisničkom imenu.",
-       "anonpreviewwarning": "''Niste prijavljeni. Vaša IP adresa će biti zabeležena u istoriji ove stranice.''",
-       "missingsummary": "'''Napomena:''' niste uneli opis izmene.\nAko ponovo kliknete na „{{int:savearticle}}“, vaša izmena će biti sačuvana bez opisa.",
-       "selfredirect": "<strong>Upozorenje:</strong> preusmeravate ovu stranicu na nju samu.\nMožda vam je odredišna stranica pogrešna ili uređujete pogrešnu stranicu.\nAko još jednom pritisnete „{{int:savearticle}}“ preusmerenje će svejedno biti napravljeno.",
+       "blankarticle": "<strong>Upozorenje:</strong> Stranica koju pravite je prazna.\nAko još jednom pritisnete „$1”, stranica će biti napravljena bez ikakvog sadržaja.",
+       "anoneditwarning": "<strong>Upozorenje:</strong> Niste prijavljeni. Ako objavite stranicu, Vaša IP adresa će biti javno vidljiva u njenoj istoriji izmena i drugde. Ako se <strong>[$1 prijavite]</strong> ili <strong>[$2 otvorite nalog]</strong>, pored ostalih pogodnosti koje dobijate Vaše izmene će biti pripisivane Vašem korisničkom imenu.",
+       "anonpreviewwarning": "<em>Niste prijavljeni. Ako objavite stranicu, Vaša IP adresa će biti javno vidljiva u njenoj istoriji izmena i drugde.</em>",
+       "missingsummary": "'''Podsetnik:''' Niste uneli opis izmene.\nAko ponovo kliknete na „$1”, Vaša izmena će biti sačuvana bez opisa.",
+       "selfredirect": "<strong>Upozorenje:</strong> Preusmeravate ovu stranicu na nju samu.\nMožda vam je odredišna stranica za preusmerenje pogrešna ili uređujete pogrešnu stranicu.\nAko još jednom pritisnete „$1”, preusmerenje će svejedno biti napravljeno.",
        "missingcommenttext": "Unesite komentar ispod.",
-       "missingcommentheader": "<strong>Napomena:</strong> niste uneli naslov ovog komentara.\nAko ponovo kliknete na „{{int:savearticle}}“, vaša izmena će biti sačuvana bez naslova.",
+       "missingcommentheader": "<strong>Napomena:</strong> Niste uneli naslov teme ovog komentara.\nAko ponovo kliknete na „$1”, izmena će biti sačuvana bez naslova.",
        "summary-preview": "Pregled opisa:",
        "subject-preview": "Pregled tema:",
        "blockedtitle": "Korisnik je blokiran",
        "editingsection": "Uređujete $1 (odeljak)",
        "editingcomment": "Uređujete $1 (novi odeljak)",
        "editconflict": "Sukobljene izmene: $1",
-       "explainconflict": "Neko drugi je u međuvremenu promenio ovu stranicu.\nGornji okvir sadrži sadašnji tekst stranice.\nVaše izmene su prikazane u donjem polju.\nMoraćete da unesete svoje promene u sadašnji tekst stranice.\n<strong>Samo</strong> će tekst u gornjem tekstualnom okviru biti sačuvan kada kliknete na „{{int:savearticle}}“.",
+       "explainconflict": "Neko drugi je u međuvremenu promenio ovu stranicu.\nGornji okvir sadrži sadašnji tekst stranice.\nVaše izmene su prikazane u donjem okviru.\nMoraćete da unesete svoje promene u sadašnji tekst stranice.\n<strong>Samo</strong> će tekst u gornjem okviru za uređivanje biti sačuvan kada kliknete na „$1”.",
        "yourtext": "Vaš tekst",
        "storedversion": "Uskladištena izmena",
        "nonunicodebrowser": "'''Upozorenje: vaš pregledač ne podržava unikod.'''\nPromenite ga pre nego što počnete s uređivanjem.",
        "readonlywarning": "<strong>Upozorenje: baza podataka je zaključana radi održavanja, tako da trenutno nećete moći da sačuvate izmene.</strong>\nMožda biste želeli sačuvati tekst za kasnije u nekoj tekstualnoj datoteci.\n\nSistemski administrator je naveo sledeće objašnjenje: $1",
        "protectedpagewarning": "<strong>Upozorenje: ova stranica je zaštićena, tako da samo administratori mogu da je menjaju.</strong>\nPoslednji zapis u dnevniku je prikazan ispod:",
        "semiprotectedpagewarning": "<strong>Napomena:</strong> Ova stranica je zaštićena, tako da samo registrovani korisnici mogu da je uređuju.\nPoslednji zapis u dnevniku prikazan je ispod kao referenca:",
-       "cascadeprotectedwarning": "<strong>Upozorenje:</strong> 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": "<strong>Upozorenje:</strong> Ova stranica je zaštićena tako da je mogu uređivati samo korisnici sa [[Special:ListGroupRights|određenim pravima]] (administratori), jer je ista uključena u {{PLURAL:$1|sledeću stranicu koja je zaštićena|sledeće stranice koje su zaštićene}} „prenosivom” zaštitom:",
        "titleprotectedwarning": "<strong>Upozorenje: ovu stranicu mogu napraviti samo korisnici [[Special:ListGroupRights|s određenim pravima]].</strong>\nIspod su navedeni poslednji zapisi u dnevniku:",
        "templatesused": "{{PLURAL:$1|Šablon|Šabloni}} na ovoj stranici:",
        "templatesusedpreview": "{{PLURAL:$1|Šablon|Šabloni}} u ovom pregledu:",
        "page_first": "prva",
        "page_last": "poslednja",
        "histlegend": "Izbor razlika: izaberite kutijice izmena za upoređivanje i pritisnite enter ili dugme na dnu.<br />\nObjašnjenje: <strong>({{int:cur}})</strong> = razlika s trenutnom izmenom, <strong>({{int:last}})</strong> = razlika s prethodnom izmenom, <strong>{{int:minoreditletter}}</strong> = mala izmena",
-       "history-fieldset-title": "Pregled istorije",
+       "history-fieldset-title": "Pregled izmena",
        "history-show-deleted": "Samo obrisane",
        "histfirst": "najstarije",
        "histlast": "najnovije",
        "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-exists": "<strong>Postoji i stranica pod nazivom „[[:$1]]“.</strong> {{PLURAL:$2|0=|Vidi takođe rezultate pretrage.}}",
-       "searchmenu-new": "<strong>Napravite stranicu â\80\9e[[:$1]]â\80\9c!</strong> {{PLURAL:$2|0=|Vidi takoÄ\91e rezultate pretrage.}}",
+       "searchmenu-exists": "<strong>Postoji stranica pod nazivom „[[:$1]]”!</strong> {{PLURAL:$2|0=|Takođe pogledajte druge pronađene rezultate pretrage.}}",
+       "searchmenu-new": "<strong>Napravite stranicu â\80\9e[[:$1]]â\80\9d!</strong> {{PLURAL:$2|0=|TakoÄ\91e pogledajte rezultat pretrage.|TakoÄ\91e pogledajte rezultate pretrage.}}",
        "searchprofile-articles": "Članci",
        "searchprofile-images": "Datoteke",
        "searchprofile-everything": "Sve",
        "search-relatedarticle": "Povezano",
        "searchrelated": "povezano",
        "searchall": "sve",
-       "showingresults": "Ispod {{PLURAL:$1|je prikazan <strong>1</strong> rezultat|su prikazana <strong>$1</strong> rezultata|je prikazano <strong>$1</strong> rezultata}} počev od broja <strong>$2</strong>.",
+       "showingresults": "Ispod {{PLURAL:$1|je prikazan <strong>1</strong> rezultat|su prikazana <strong>$1</strong> rezultata|je prikazano <strong>$1</strong> rezultata}}, počev od broja <strong>$2</strong>.",
        "showingresultsinrange": "Ispod {{PLURAL:$1|je prikazan <strong>1</strong> rezultat|su prikazana <strong>$1</strong> rezultata|je prikazano <strong>$1</strong> rezultata}}, u rasponu od <strong>$2</strong> do <strong>$3</strong>.",
-       "search-showingresults": "{{PLURAL:$4|Rezultat <strong>$1</strong> od <strong>$3</strong>|Rezultata <strong>$1 – $2</strong> od <strong>$3</strong>}}",
+       "search-showingresults": "{{PLURAL:$4|Rezultat <strong>$1</strong> od <strong>$3</strong>|Rezultati <strong>$1—$2</strong> od <strong>$3</strong>}}",
        "search-nonefound": "Nema poklapanja.",
        "powersearch-legend": "Napredna pretraga",
-       "powersearch-ns": "Traži u sledećim imenskim prostorima:",
+       "powersearch-ns": "Pretraga po imenskim prostorima:",
        "powersearch-togglelabel": "Izaberi:",
        "powersearch-toggleall": "Sve",
        "powersearch-togglenone": "Ništa",
        "recentchanges-legend-heading": "<strong>Legenda:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|spisak novih stranica]])",
        "recentchanges-submit": "Prikaži",
+       "rcfilters-activefilters": "Aktivni filteri",
+       "rcfilters-filtergroup-registration": "Registracija korisnika",
+       "rcfilters-filter-registered-label": "Registrovani",
+       "rcfilters-filter-registered-description": "Prijavljeni urednici.",
+       "rcfilters-filter-unregistered-label": "Neregistrovani",
+       "rcfilters-filter-unregistered-description": "Urednici koji nisu prijavljeni.",
+       "rcfilters-filtergroup-authorship": "Autorstvo doprinosa",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Novajlije",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Manje od 10 izmjena i 4 dana aktivnosti.",
+       "rcfilters-filter-user-experience-level-learner-label": "Učenici",
+       "rcfilters-filter-user-experience-level-learner-description": "Više dana aktivnosti i izmjena od „novajlija”, ali manje od „iskusnih korisnika”.",
+       "rcfilters-filter-user-experience-level-experienced-label": "Iskusni korisnici",
+       "rcfilters-filter-user-experience-level-experienced-description": "Preko 30 dana aktivnosti i 500 izmjena.",
+       "rcfilters-filter-humans-label": "Čovjek (nije bot)",
+       "rcfilters-filter-minor-label": "Manje izmjene",
+       "rcfilters-filter-pageedits-label": "Izmjene stranica",
+       "rcfilters-filter-pageedits-description": "Izmjene viki sadržaja, rasprava, opisa kategorija...",
+       "rcfilters-filter-newpages-label": "Stvaranje stranica",
+       "rcfilters-filter-newpages-description": "Izmjene kojima se stvaraju nove stranice.",
+       "rcfilters-filter-logactions-label": "Radnje zabilježene u dnevnicima",
        "rcnotefrom": "Ispod {{PLURAL:$5|je izmena|su izmene}} od <strong>$3, $4</strong> (do <strong>$1</strong> prikazano).",
        "rclistfrom": "Prikaži nove izmene počev od $2 $3",
        "rcshowhideminor": "$1 manje izmene",
        "rcshowhidecategorization": "$1 kategorizaciju stranica",
        "rcshowhidecategorization-show": "Prikaži",
        "rcshowhidecategorization-hide": "Sakrij",
-       "rclinks": "Prikaži poslednjih $1 izmena {{PLURAL:$2|prethodni dan|u poslednja $2 dana|u poslednjih $2 dana}}<br />$3",
+       "rclinks": "Prikaži poslednjih $1 izmena {{PLURAL:$2|prethodni dan|u poslednja $2 dana|u poslednjih $2 dana}}",
        "diff": "razl",
        "hist": "ist",
        "hide": "Sakrij",
        "img-auth-nopathinfo": "Nedostaje PATH_INFO.\nVaš server nije podešen da prosleđuje ovakve podatke.\nMožda je zasnovan na CGI-ju koji ne podržava img_auth.\nPogledajte https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization?uselang=sr-ec.",
        "img-auth-notindir": "Zahtevana putanja nije u podešenoj fascikli za otpremanje.",
        "img-auth-badtitle": "Ne mogu da stvorim ispravan naslov za „$1“.",
-       "img-auth-nologinnWL": "Niste prijavljeni i â\80\9e$1â\80\9c nije na spisku dozvoljenih.",
+       "img-auth-nologinnWL": "Niste prijavljeni i â\80\9e$1â\80\9d nije na spisku dozvoljenih.",
        "img-auth-nofile": "Datoteka „$1“ ne postoji.",
        "img-auth-isdir": "Pokušavate da pristupite fascikli „$1“.\nDozvoljen je samo pristup datotekama.",
        "img-auth-streaming": "Učitavanje „$1“.",
        "wantedcategories": "Tražene kategorije",
        "wantedpages": "Tražene stranice",
        "wantedpages-summary": "Spisak nepostojećih stranica sa najviše veza do njih, na ovom spisku se ne nalaze stranice do kojih vode preusmerenja. Za spisak pokvarenih preusmerenja pogledajte [[{{#special:BrokenRedirects}}|spisak pokvarenih preusmerenja]].",
-       "wantedpages-badtitle": "Neispravan naslov u nizu rezultata: $1",
+       "wantedpages-badtitle": "Neispravan naslov u setu rezultata: $1",
        "wantedfiles": "Tražene datoteke",
        "wantedfiletext-cat": "Sledeće datoteke se koriste, ali ne postoje. Datoteke iz drugih riznica mogu biti navedene iako ne postoje. Takve datoteke će biti <del>poništene</del> sa spiska. Pored toga, stranice koje sadrže nepostojeće datoteke se nalaze [[:$1|ovde]].",
        "wantedfiletext-nocat": "Sledeće datoteke se koriste, ali ne postoje. Datoteke iz drugih riznica mogu biti navedene iako ne postoje. Takve datoteke će biti <del>poništene</del> sa spiska.",
        "unwatchthispage": "Prekini nadgledanje",
        "notanarticle": "Nije stranica sa sadržajem",
        "notvisiblerev": "Izmena je obrisana",
-       "watchlist-details": "Imate {{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 stranicu|$1 stranice|$1 stranica}} na svom spisku nadgledanja, ne računajući zasebno stranice za razgovor.",
        "wlheader-enotif": "Obaveštenje imejlom je omogućeno.",
        "wlheader-showupdated": "Stranice koje su izmenjene otkad ste ih poslednji put posetili su '''podebljane'''.",
        "wlnote": "Ispod {{PLURAL:$1|je poslednja izmena|su poslednje <strong>$1</strong> izmene|je poslednjih <strong>$1</strong> izmena}} u {{PLURAL:$2|prethodnom satu|prethodna <strong>$2</strong> sata|prethodnih <strong>$2</strong> sati}}, zaključno sa $3, $4.",
        "enotif_body_intro_moved": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|premestio|premestila}} je $2 dana $PAGEEDITDATE Trenutna izmena nalazi se na  $3.",
        "enotif_body_intro_restored": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|vratio|vratila}} je $2 dana $PAGEEDITDATE Trenutna izmena nalazi se na $3.",
        "enotif_body_intro_changed": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|promenio|promenila}} je $2 dana $PAGEEDITDATE Trenutna izmena nalazi se na $3.",
-       "enotif_lastvisited": "Pogledajte $1 za sve izmene od vaše poslednje posete.",
-       "enotif_lastdiff": "Pogledajte $1 da vidite ovu izmenu.",
+       "enotif_lastvisited": "Za sve izmene od vaše poslednje posete, pogledajte $1.",
+       "enotif_lastdiff": "Da vidite ovu izmenu, pogledajte $1.",
        "enotif_anon_editor": "anoniman korisnik $1",
        "enotif_body": "Poštovani $WATCHINGUSERNAME,\n \t\n$PAGEINTRO $NEWPAGE\n\nOpis: $PAGESUMMARY $PAGEMINOREDIT\n\nKontakt:\nmejl: $PAGEEDITOR_EMAIL\nviki: $PAGEEDITOR_WIKI\n\nNeće biti drugih obaveštenja u slučaju daljih izmena ukoliko ne posetite ovu stranicu kada ste prijavljeni.\nMožete i da poništite postavke obaveštenja za sve stranice u vašem spisku nadgledanja.\n\nSrdačan pozdrav, {{SITENAME}}\n\n--\nDa biste promenili postavke imejl obaveštenja, posetite\n{{canonicalurl:{{#special:Preferences}}}}\n\nDa biste promenili postavke spiska nadgledanja, posetite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nDa biste uklonili ovu stranicu sa spiska nadgledanja, posetite\n$UNWATCHURL\n\nPodrška i dalja pomoć:\n$HELPPAGE",
        "created": "napravljena",
        "sp-contributions-uploads": "otpremanja",
        "sp-contributions-logs": "dnevnici",
        "sp-contributions-talk": "razgovor",
-       "sp-contributions-userrights": "upravljanje korisničkim pravima",
+       "sp-contributions-userrights": "upravljanje pravima {{GENDER:$1|korisnika|korisnice|korisnika}}",
        "sp-contributions-blocked-notice": "Ovaj korisnik je trenutno blokiran. \nIspod su navedeni poslednji zapisi u dnevniku blokiranja:",
        "sp-contributions-blocked-notice-anon": "Ova IP adresa je trenutno blokirana.\nIspod su navedeni poslednji zapisi u dnevniku blokiranja:",
        "sp-contributions-search": "Pretraga doprinosa",
        "tooltip-undo": "Poništava ovu izmenu i otvara obrazac za uređivanje.",
        "tooltip-preferences-save": "Sačuvaj postavke",
        "tooltip-summary": "Unesite kratak opis",
+       "interlanguage-link-title": "$1 — $2",
+       "interlanguage-link-title-nonlang": "$1 — $2",
        "common.css": "/* CSS postavljen ovde će se odraziti na sve teme */",
        "print.css": "/* CSS postavljen ovde će uticati na izdanje za štampu */",
        "noscript.css": "/* CSS postavljen ovde će uticati na sve korisnike kojima je onemogućen javaskript */",
        "anonymous": "Anonimni {{PLURAL:$1|korisnik|korisnici}} projekta {{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.",
+       "lastmodifiedatby": "Ovu stranicu je poslednji put {{GENDER:$4|uredio|uredila|uredio}} $3, na datum $1 u $2 č.",
        "othercontribs": "Zasnovano na radu korisnika $1.",
        "others": "drugi",
        "siteusers": "{{PLURAL:$2|1={{GENDER:$1|korisnik|korisnica}}|korisnici}} na projektu {{SITENAME}} $1",
        "minutes-abbrev": "$1 m",
        "hours-abbrev": "$1 č",
        "days-abbrev": "$1 d",
-       "seconds": "{{PLURAL:$1|$1 sekunda|$1 sekunde|$1 sekundi}}",
+       "seconds": "{{PLURAL:$1|$1 sekunda|$1 sekunda|$1 sekundi}}",
        "minutes": "{{PLURAL:$1|$1 minut|$1 minuta|$1 minuta}}",
        "hours": "{{PLURAL:$1|$1 sat|$1 sata|$1 sati}}",
        "days": "{{PLURAL:$1|$1 dan|$1 dana|$1 dana}}",
        "log-name-tag": "Dnevnik oznaka",
        "log-description-tag": "Ovaj dnevnik prikazuje dodavanje/uklanjanje [[Special:Tags|oznaka]] na pojedinačne izmene ili unose u dnevnicima. Ovaj dnevnik ne prikazuje označavanje kada su ona deo uređivanja, brisanja ili neke druge radnje.",
        "rightsnone": "(nema)",
+       "rightslogentry-temporary-group": "$1 (privremeno, do $2)",
        "feedback-adding": "Dodajem povratnu informaciju na stranicu…",
        "feedback-back": "Nazad",
        "feedback-bugcheck": "Odlično! Proverite da li je greška [$1 poznata od pre].",
        "api-error-stashfailed": "Unutrašnja greška: server ne može da sačuva privremenu datoteku.",
        "api-error-unknown-warning": "Nepoznato upozorenje: $1",
        "api-error-unknownerror": "Nepoznata greška: „$1“.",
-       "duration-seconds": "$1 {{PLURAL:$1|sekund|sekunde|sekundi}}",
+       "duration-seconds": "$1 {{PLURAL:$1|sekund|sekunda|sekundi}}",
        "duration-minutes": "$1 {{PLURAL:$1|minut|minuta|minuta}}",
        "duration-hours": "$1 {{PLURAL:$1|sat|sata|sati}}",
        "duration-days": "$1 {{PLURAL:$1|dan|dana|dana}}",
        "duration-centuries": "$1 {{PLURAL:$1|vek|veka|vekova}}",
        "duration-millennia": "$1 {{PLURAL:$1|milenijum|milenijuma|milenijuma}}",
        "rotate-comment": "Slika je rotirana za $1° u smeru kazaljke na satu",
-       "limitreport-cputime-value": "$1 {{PLURAL:$1|sekunda|sekund|sekundi}}",
-       "limitreport-walltime-value": "$1 {{PLURAL:$1|sekund|sekunde|sekundi}}",
+       "limitreport-title": "Podaci profilisanja analizatora:",
+       "limitreport-cputime": "Vreme korišćenja CPU",
+       "limitreport-cputime-value": "$1 {{PLURAL:$1|sekund|sekunda|sekundi}}",
+       "limitreport-walltime": "Korišćenje u realnom vremenu",
+       "limitreport-walltime-value": "$1 {{PLURAL:$1|sekund|sekunda|sekundi}}",
+       "limitreport-ppvisitednodes": "Broj predprocesiranih posećenih nodova",
+       "limitreport-ppgeneratednodes": "Broj predprocesiranih generisanih nodova",
+       "limitreport-postexpandincludesize": "Uključena veličina nakon proširenja",
        "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|bajt|bajta|bajtova}}",
+       "limitreport-templateargumentsize": "Veličina argumenata šablona",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|bajt|bajta|bajtova}}",
+       "limitreport-expansiondepth": "Najveća dubina proširenja",
+       "limitreport-expensivefunctioncount": "Broj „skupih” funkcija analizatora",
        "expandtemplates": "Zamena šablona",
        "expand_templates_intro": "Ova posebna stranica uzima tekst i menja sve šablone u njemu rekurzivno.\nTakođe menja funkcije parsera kao što je <code><nowiki>{{</nowiki>#language:…}}</code> i promenljive kao što je <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nZapravo praktično sve što se nalazi između vitičastih zagrada.",
        "expand_templates_title": "Naziv konteksta; za {{STRANICA}} itd.:",
        "authmanager-email-label": "Imejl",
        "authmanager-email-help": "Imejl adresa",
        "changecredentials": "Promjena akreditiva",
-       "removecredentials": "Uklanjanje akreditiva"
+       "removecredentials": "Uklanjanje akreditiva",
+       "gotointerwiki-external": "Upravo ćete da napustite projekat {{SITENAME}} da biste na zasebnom veb-sajtu posetili [[$2]].\n\n'''[$1 Produži na $1]'''"
 }
index 6b3bcec..a7acabc 100644 (file)
        "yourdomainname": "Yu domein:",
        "login": "Psa kon",
        "nav-login-createaccount": "Psa kon / meki wan account",
-       "userlogin": "Psa kon / meki wan account",
        "logout": "Psa gwe",
        "userlogout": "Psa gwe",
        "notloggedin": "No psa kon",
-       "nologin": "No abi wan kebroikiman nen ete? '''$1'''.",
-       "nologinlink": "Meki wan account",
        "createaccount": "Meki wan account",
-       "gotaccount": "Abi wan kebroikiman nen kba? '''$1'''.",
-       "gotaccountlink": "Psa kon",
        "createaccountmail": "via e-mail",
        "badretype": "Den tu psa wortu no de srefi.",
        "userexists": "A kebroikiman nen disi de kaba.\nTeki wan tra nen.",
        "prefs-misc": "Diversi",
        "saveprefs": "Oponaki",
        "prefs-editing": "Kenki",
-       "rows": "Rei:",
-       "columns": "Kolum:",
        "searchresultshead": "Suku",
        "stub-threshold": "Dupolo fu seti <a href=\"#\" class=\"stub\">stub</a>:",
        "recentchangesdays": "Teki fu dey tu libi si ini bakaseywan kenki:",
        "rcshowhideanons": "$1 den kebroikiman sondro nen",
        "rcshowhidepatr": "$1 den kenki di kisi luku",
        "rcshowhidemine": "$1 mi kenki",
-       "rclinks": "Sori den laste $1 kenki ini den $2 laste dei<br />$3",
+       "rclinks": "Sori den laste $1 kenki ini den $2 laste dei",
        "diff": "kenki",
        "hist": "hist",
        "hide": "kibri",
index 68b29f0..c1a4c05 100644 (file)
        "externaldberror": "Äntweeder deer lait n Failer bie ju externe Authentifizierenge foar, of du duurst din extern Benutzerkonto nit aktualisierje.",
        "login": "Anmäldje",
        "nav-login-createaccount": "Anmäldje",
-       "userlogin": "Anmäldje / Benutserkonto moakje",
-       "userloginnocreate": "Anmäldje",
        "logout": "Oumäldje",
        "userlogout": "Oumäldje",
        "notloggedin": "Nit anmälded",
-       "nologin": "Du hääst neen Benutserkonto? '''$1'''.",
-       "nologinlink": "Hier laist du n Konto an.",
        "createaccount": "Benutserkonto anlääse",
-       "gotaccount": "Du hääst al n Konto? '''$1'''.",
-       "gotaccountlink": "Hier gungt dät ätter dän Login",
-       "userlogin-resetlink": "\n↓Do Anmäldedoaten ferjeeten?",
        "createaccountmail": "Uur Email",
-       "createaccountreason": "Gruund:",
        "badretype": "Do bee Paaswoude stimme nit uureen.",
        "userexists": "Dissen Benutsernoome is al ferroat. Wääl jädden n uur.",
        "loginerror": "Failer bie ju Anmäldenge",
        "passwordreset-disabled": "Dät Touräächsätten fon Paaswoude wuud in dissen Wiki deaktivierd.",
        "passwordreset-username": "Benutsernoome:",
        "passwordreset-domain": "Domain:",
-       "passwordreset-capture": "Ju E-Mail-Ättergjucht bekiekje?",
-       "passwordreset-capture-help": "Wan du disse Kaste ankjuusest, wäd ju E-Mail-Ättergjucht mäd dät temporäre Paaswoud, die wiesed, as uk dän Benutser tousoand.",
        "passwordreset-email": "E-Mail-Adresse:",
        "passwordreset-emailtitle": "Benutserkontoinformatione ap {{SITENAME}}",
        "passwordreset-emailelement": "↓Benutsernoome: \n$1\n\nTemporär Paaswoud: \n$2",
        "anonpreviewwarning": "\"Du bäst nit ounmälded. Bie dät Spiekerjen wäd dien IP-Adrässe in ju Versionsgeskichte apteekend.\"",
        "missingsummary": "'''Waiwiesenge:''' Du hääst neen Touhoopefoatenge anroat. Wan du fonnäien ap „Siede spiekerje“ klikst, wäd dien Annerenge sunner Touhoopefoatenge uurnuumen.",
        "missingcommenttext": "Reek jädden ne Touhoopefoatenge ien.",
-       "missingcommentheader": "'''OACHTENGE:''' Du hääst neen Uurskrift in dät Fäild „Beträft:“ ienroat. Wan du fonnäien ap „{{int:savearticle}}“ klikst, wäd dien Beoarbaidenge sunner Uurskrift spiekerd.",
+       "missingcommentheader": "'''OACHTENGE:''' Du hääst neen Uurskrift in dät Fäild „Beträft:“ ienroat. Wan du fonnäien ap „$1“ klikst, wäd dien Beoarbaidenge sunner Uurskrift spiekerd.",
        "summary-preview": "Foarbekiek fon ju Touhoopefoatengsriege:",
        "subject-preview": "Themoa bekiekje:",
        "blockedtitle": "Benutser is blokkierd",
        "editingsection": "Beoarbaidje fon $1 (Apsats)",
        "editingcomment": "Beoarbaidjen fon $1 (Näi Stuk)",
        "editconflict": "Beoarbaidengs-Konflikt: \"$1\"",
-       "explainconflict": "Uurswäl häd dissen Artikkel annerd, ätterdät du anfangd bäst, him tou beoarbaidjen.\nDät buppere Textfäild änthaalt dän aktuälle Artikkel.\nDät unnere Textfäild änthaalt dien Annerengen.\nFöige jädden dien Annerengen in dät buppere Textfäild ien.\n'''Bloot''' die Inhoold fon dät buppere Textfäild wäd spiekerd, wan du ap \"{{int:savearticle}}\" klikst.",
+       "explainconflict": "Uurswäl häd dissen Artikkel annerd, ätterdät du anfangd bäst, him tou beoarbaidjen.\nDät buppere Textfäild änthaalt dän aktuälle Artikkel.\nDät unnere Textfäild änthaalt dien Annerengen.\nFöige jädden dien Annerengen in dät buppere Textfäild ien.\n'''Bloot''' die Inhoold fon dät buppere Textfäild wäd spiekerd, wan du ap \"$1\" klikst.",
        "yourtext": "Dien Text",
        "storedversion": "Spiekerde Version",
        "nonunicodebrowser": "'''Oachtenge: Dien Browser kon Unicode-Teekene nit gjucht feroarbaidje. Benutse jädden n uur Browser uum Artikkele tou beoarbaidjen.'''",
        "saveprefs": "Ienstaalengen spiekerje",
        "restoreprefs": "Aal Standoard-Ienstaalengen wier häärstaale",
        "prefs-editing": "Beoarbaidje",
-       "rows": "Riegen",
-       "columns": "Spalten",
        "searchresultshead": "Säike (010)",
        "stub-threshold": "<a href=\"#\" class=\"stub\">Kuute Artikkele</a> markierje bi (in Byte):",
        "stub-threshold-disabled": "Deaktivierd",
        "userrights-reason": "Gruund:",
        "userrights-no-interwiki": "Du hääst neen Begjuchtigenge, do Benutsergjuchte in uur Wikis tou annerjen.",
        "userrights-nodatabase": "Ju Doatenboank $1 is nit deer of nit lokoal.",
-       "userrights-nologin": "Du moast die mäd n Administrator-Benutserkonto [[Special:UserLogin|anmäldje]], uum Benutsergjuchte tou annerjen.",
-       "userrights-notallowed": "Du hääst neen Begjuchtigenge, uum Benutsergjuchte tou reeken of ientouluuken.",
        "userrights-changeable-col": "Gruppentouheeregaid, ju du annerje koast",
        "userrights-unchangeable-col": "Gruppentouheeregaid, ju du nit annerje koast",
        "group": "Gruppe:",
        "right-protect": "Siedenskutsstatus annerje",
        "right-editprotected": "Skutsede Sieden beoarbaidje (sunner Kaskadenskuts)",
        "right-editinterface": "Benutserinterface beoarbaidje",
-       "right-editusercssjs": "Beoarbaidjen fon CSS- un JS-Doatäie fon uur Benutsere",
        "right-editusercss": "Beoarbaidjen fon CSS-Doatäie fon uur Benutsere",
        "right-edituserjs": "Beoarbaidjen fon JS-Doatäie fon uur Benutsere",
        "right-rollback": "Gau räägels Traalen",
        "right-siteadmin": "Doatenboank speere un äntspeere",
        "right-override-export-depth": "Exportier Sieden touhoope mäd ferlinkede Sieden bit tou ne Djüpte fon 5",
        "right-sendemail": "E-Mails an uur Benutsere seende",
-       "right-passwordreset": "Paaswoud fon n Benutser touräächsätte ([[Special:PasswordReset|Spezioalsiede]])",
        "newuserlogpage": "Näianmäldengs-Logbouk",
        "newuserlogpagetext": "Dit is dät Logbouk fon näi anmäldede Benutsere.",
        "rightslog": "Gjuchte-Logbouk",
        "rcshowhideanons": "Anonyme Benutsere $1",
        "rcshowhidepatr": "Pröiwede Annerengen $1",
        "rcshowhidemine": "Oaine Biedraage $1",
-       "rclinks": "Wies do lääste $1 Annerengen; wies do lääste $2 Deege.<br />$3",
+       "rclinks": "Wies do lääste $1 Annerengen; wies do lääste $2 Deege.",
        "diff": "Unnerskeed",
        "hist": "Versione",
        "hide": "ferbierge",
        "undeleteviewlink": "bekiekje",
        "undeleteinvert": "Uutwoal uumekiere",
        "undeletecomment": "Gruund:",
-       "undeletedrevisions": "{{PLURAL:$1|1 Version wuude|$1 Versione wuuden}} wier häärstoald",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 Version|$1 Versione}} un {{PLURAL:$2|1 Doatäi|$2 Doatäie}} wuuden wier häärstoald",
-       "undeletedfiles": "{{PLURAL:$1|1 Doatäie wuude|$1 Doatäie wuuden}} wier häärstoald",
        "cannotundelete": "Wier Moakjen failsloain; uurswäl häd ju Siede al wier moaked.",
        "undeletedpage": "'''$1''' wuude wier moaked.\n\nIn dät [[Special:Log/delete|Läsk-Logbouk]] finst du ne Uursicht fon do läskede un wier moakede Sieden.",
        "undelete-header": "Sjuch dät [[Special:Log/delete|Läsk-Logbouk]] foar knu läskede Sieden.",
        "revdelete-restricted": "Einskränkengen jäilde uk foar Administratore",
        "revdelete-unrestricted": "Ienskränkengen foar Administratore wächhoald",
        "rightsnone": "(-)",
-       "revdelete-summary": "Touhoopefoatengskommentoar",
        "searchsuggest-search": "Säik",
        "searchsuggest-containing": "Fultextsäike ätter ...",
        "expandtemplates": "Foarloagen expandierje",
index bb969db..7e2cd24 100644 (file)
                        "לערי ריינהארט",
                        "아라",
                        "Macofe",
-                       "Uchup19"
+                       "Uchup19",
+                       "WikiKaruhun",
+                       "Dipusparaga"
                ]
        },
        "tog-underline": "Gurat-handapan tutumbu",
        "tog-hideminor": "Sumputkeun éditan minor dina anyar robah",
        "tog-hidepatrolled": "Sumputkeun anu geus diroris ti béréndélan nu anyar robah",
        "tog-newpageshidepatrolled": "Sumputkeun nu geus diroris tina béréndélan kaca anyar",
+       "tog-hidecategorization": "Sumputkeun pangkategorian kaca",
        "tog-extendwatchlist": "Legaan béréndélan ngarah sakabéh parobahanana kaawaskeun",
        "tog-usenewrc": "Parobahan grup dumasar kaca dina béréndélan anu anyar robah jeung awaskeuneun",
        "tog-numberheadings": "Nomeran lulugu sacara otomatis",
        "tog-watchlisthidebots": "Sumputkeun éditan bot dina daptar awaskeuneun",
        "tog-watchlisthideminor": "Sumputkeun éditan leutik dina daptar awaskeuneun",
        "tog-watchlisthideliu": "Sumputkeun éditan pamaké nu asup log tina daptar awaskeun",
+       "tog-watchlistreloadautomatically": "Muat deui awaskeuneun kalawan otomatis nalika hiji saringan dirobah (diperlukeun JavaScript)",
        "tog-watchlisthideanons": "Sumputkeun éditan pamaké anonim tina daptar awaskeun",
        "tog-watchlisthidepatrolled": "Sumputkeun éditan nu geus diroris tina béréndélan awaskeuneun",
+       "tog-watchlisthidecategorization": "Sumputkeun pangkategorian kaca",
        "tog-ccmeonemails": "Kirimkeun ogé salinan surélékna ka alamat kuring",
        "tog-diffonly": "Ulah némbongkeun eusi kaca di handapeun béda éditan",
        "tog-showhiddencats": "Témbongkeun kategori nyumput",
-       "tog-norollbackdiff": "Liwat béda sanggeus malikkeun révisi",
+       "tog-norollbackdiff": "Ulah némbongkeun bébéda sanggeus ngalakonan pamalikan",
        "tog-useeditwarning": "Béjaan kuring lamun ninggalkeun kaca édit anu parobahanana can disimpen",
-       "tog-prefershttps": "Salawasna paké sambungan aman nalika asup log",
+       "tog-prefershttps": "Teterusan paké sambungan aman nalika asup log",
        "underline-always": "Salawasna",
        "underline-never": "Ulah",
        "underline-default": "Kalakop atawa panyungsi bawaan",
@@ -63,7 +68,7 @@
        "editfont-monospace": "Tulisan monospasi",
        "editfont-sansserif": "Aksara Sans-serif",
        "editfont-serif": "Aksara Serif",
-       "sunday": "Minggu",
+       "sunday": "Ahad",
        "monday": "Senén",
        "tuesday": "Salasa",
        "wednesday": "Rebo",
        "october-date": "$1 Oktober",
        "november-date": "$1 Nopémber",
        "december-date": "$1 Désémber",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Kategori|Kategori}}",
        "category_header": "Artikel-artikel na kategori \"$1\"",
        "subcategories": "Subkategori",
        "category-media-header": "Média dina kategori \"$1\"",
-       "category-empty": "''Kategori ieu, ayeuna teu ngabogaan artikel atawa gambar.''",
+       "category-empty": "<em>Ieu kategori kiwari teu ngandung kaca atawa média.</em>",
        "hidden-categories": "{{PLURAL:$1|Kategori nyumput|Kategori nyumput}}",
        "hidden-category-category": "Kategori nu nyarumput",
        "category-subcat-count": "{{PLURAL:$2|Ieu kategori ngan boga subkategori di handap.|Kategori ieu ngawengku {{PLURAL:$1|subkategori|$1 subkategori}} ti $2.}}",
        "category-subcat-count-limited": "Ieu kategori ngawengku {{PLURAL:$1|subkategori|$1 subkategori}}.",
-       "category-article-count": "{{PLURAL:$2|Ieu kategori ngan ngawengku nu di handap.|{{PLURAL:$1|kaca|$1 kaca}} ti $2 di handap asup kana ieu kategori.}}",
-       "category-article-count-limited": "{{PLURAL:$1|Kaca|$1 kaca}} di handap kaasup kana kategori.",
+       "category-article-count": "{{PLURAL:$2|Ieu kategori ngan ngawengku kaca di handap.|{{PLURAL:$1|kaca|$1 kaca}} ti $2 di handap asup kana ieu kategori.}}",
+       "category-article-count-limited": "{{PLURAL:$1|Kaca|$1 kaca}} di handap kaasup kana ieu kategori.",
        "category-file-count": "{{PLURAL:$2|Ieu kategori ngan boga berkas di handap.|{{PLURAL:$1|berkas|$1 berkas}} di handap aya dina ieu kategori, ti jumlah $2.}}",
        "category-file-count-limited": "{{PLURAL:$1|berkas|$1 berkas}} di handap aya dina ieu kategori.",
        "listingcontinuesabbrev": "(samb.)",
        "index-category": "Kaca nu diindéks",
-       "noindex-category": "Kaca nu teu diindéks",
+       "noindex-category": "Kaca nu teu kaindéks",
        "broken-file-category": "Kaca anu ngandung tutumbu buntu",
        "about": "Ngeunaan",
        "article": "Kaca eusi",
        "newwindow": "(buka na jandéla anyar)",
        "cancel": "Bolay",
        "moredotdotdot": "Deui...",
-       "morenotlisted": "Ieu béréndélan tacan lengkep.",
+       "morenotlisted": "Ieu béréndélan bangun can lengkep.",
        "mypage": "Kaca",
        "mytalk": "Obrolan",
-       "anontalk": "Obrolan pikeun alamat IP ieu",
+       "anontalk": "Obrolan",
        "navigation": "Pituduh",
        "and": "&#32;jeung",
-       "qbfind": "Panggihan",
-       "qbbrowse": "Sungsi",
-       "qbedit": "Édit",
-       "qbpageoptions": "Kaca ieu",
-       "qbmyoptions": "Kaca kuring",
        "faq": "NLD",
-       "faqpage": "Project:NLD",
-       "actions": "Peta",
+       "actions": "Tarékah",
        "namespaces": "Ngaranspasi",
        "variants": "Varian",
        "navigation-heading": "Menu navigasi",
        "tagline": "Ti {{SITENAME}}",
        "help": "Pitulung",
        "search": "Paluruh",
+       "search-ignored-headings": "# <!-- antepkeun ieu baris sakumaha ayana wé --> <pre>\n# Judul anu bakal diantep ku pamaluruhan.\n# Éditan kana ieu bakal dilarapkeun geuwat kalayan judul nu kaindéks\n# Anjeun bisa maksa pangindékan deui ieu kaca ku cara ngédit kosong (''null édit'')\n# Sintaksisna mah siga kieu yeuh:\n#   * Sagalaning ti karakter \"#\" nepi ka ahir baris éta téh mangrupa koméntar.\n#   * Unggal baris teu-kosong mah judul perenah bakal diantepkeun.\nRujukan\nTutumbu luar\nTempo ogé\n #</pre>",
        "searchbutton": "Paluruh",
        "go": "Jung",
        "searcharticle": "Jung",
        "edit-local": "Edit déskripsi lokal",
        "create": "Jieun",
        "create-local": "Tambah déskripsi lokal",
-       "editthispage": "Édit kaca ieu",
-       "create-this-page": "Jieun kaca ieu",
-       "delete": "Hapus",
-       "deletethispage": "Hapus kaca ieu",
-       "undeletethispage": "Bolaykeun ngahapus ieu kaca",
-       "undelete_short": "Bolaykeun ngahapus {{PLURAL:$1|hiji éditan|$1 éditan}}",
-       "viewdeleted_short": "Témbongkeun {{PLURAL:$1|hiji éditan nu dihapus|$1 éditan nu dihapus}}",
+       "delete": "Pupus",
+       "undelete_short": "Tong jadi mupus {{PLURAL:$1|hiji éditan|$1 éditan}}",
+       "viewdeleted_short": "Témbongkeun {{PLURAL:$1|hiji éditan nu dipupus|$1 éditan nu dipupus}}",
        "protect": "Konci",
        "protect_change": "robah",
-       "protectthispage": "Konci kaca ieu",
        "unprotect": "Robah protéksi",
-       "unprotectthispage": "Robah protéksi ieu kaca",
        "newpage": "Kaca anyar",
-       "talkpage": "Sawalakeun kaca ieu",
-       "talkpagelinktext": "Obrolan",
+       "talkpagelinktext": "obrolan",
        "specialpage": "Kaca Husus",
        "personaltools": "Parabot pribadi",
-       "articlepage": "Témbongkeun kaca eusi",
        "talk": "Sawala",
        "views": "Témbongan",
        "toolbox": "Parabot",
        "tool-link-userrights": "Robah kelompok {{GENDER:$1|pamaké}}",
        "tool-link-userrights-readonly": "Témbong kelompok {{GENDER:$1|pamaké}}",
        "tool-link-emailuser": "Kirim surélék ka ieu {{GENDER:$1|pamaké}}",
-       "userpage": "Témbongkeun kaca pamaké",
-       "projectpage": "Témbongkeun kaca proyék",
-       "imagepage": "Tempo kaca gambar",
+       "imagepage": "Tempo kaca berkas",
        "mediawikipage": "Témbongkeun kaca talatah",
        "templatepage": "Témbongkeun kaca citakan",
        "viewhelppage": "Témbongkeun kaca pitulung",
        "categorypage": "Tempo kaca kategori",
        "viewtalkpage": "Témbongkeun sawala",
        "otherlanguages": "Dina séjén basa",
-       "redirectedfrom": "(dipindahkeun ti $1)",
+       "redirectedfrom": "(dialihkeun ti $1)",
        "redirectpagesub": "Kaca alihan",
        "redirectto": "Alihkeun ka:",
-       "lastmodifiedat": "Kaca ieu panungtungan dirobah $2, $1.",
+       "lastmodifiedat": "Kaca ieu panungtungan diédit $1, jam $2.",
        "viewcount": "Kaca ieu geus dibuka {{PLURAL:$1|sakali|$1 kali}}.<br />",
        "protectedpage": "Kaca nu dikonci",
        "jumpto": "Luncat ka:",
        "jumptonavigation": "pituduh",
        "jumptosearch": "paluruh",
-       "view-pool-error": "Punten, serverna keur pinuh.\nLoba teuing nu nyoba muka ieu kaca.\nMangga cobian sanés waktos.\n\n$1",
-       "generic-pool-error": "Hampura, serverna keur pinuh.\nLoba teuing nu nyoba muka ieu sumberdaya.\nAntosan sakedap, engké cobaan deui.",
+       "view-pool-error": "Punten, serverna keur pinuh ayeuna mah.\nLoba teuing nu nyoba muka ieu kaca.\nMangga tunguan heula méméh anjeun nyobaan deui muka ieu kaca.\n\n$1",
+       "generic-pool-error": "Hampura, serverna keur pinuh ayeuna mah.\nLoba teuing nu nyoba muka ieu sumberdaya.\nTunguan heula méméh anjeun nyobaan deui muka ieu sumberdaya.",
        "pool-timeout": "Béakeun waktu nungguan konci",
        "pool-queuefull": "Antrian geus pinuh",
-       "pool-errorunknown": "Éror teu dipikawanoh",
-       "pool-servererror": "Palayanan ''pool counter'' teu disadiakeun ($1).",
+       "pool-errorunknown": "Éror teu dipikanyaho",
+       "pool-servererror": "Layanan ''pool counter'' teu sayaga ($1).",
        "poolcounter-usage-error": "Galat pamakéan: $1",
        "aboutsite": "Ngeunaan {{SITENAME}}",
        "aboutpage": "Project:Ngeunaan",
        "privacypage": "Project:Kawijakan privasi",
        "badaccess": "Kasalahan widi",
        "badaccess-group0": "Anjeun teu wenang ngalaksanakeun peta nu dipundut.",
-       "badaccess-groups": "Peta nu dipundut ngan bisa laksana pikeun pamaké ti salah sahiji {{PLURAL:$2|gorombolan|salah sahiji gorombolan}}: $1.",
+       "badaccess-groups": "Tarékah nu dipundut kur bisa laksana ajang pamaké ti {{PLURAL:$2|gorombolan|salah sahiji gorombolan}}: $1.",
        "versionrequired": "Butuh MediaWiki vérsi $1",
        "versionrequiredtext": "Butuh MediaWiki vérsi $1 pikeun migunakeun ieu kaca. Mangga tingal [[Special:Version|kaca vérsi]]",
        "ok": "Heug",
        "retrievedfrom": "Dicomot ti \"$1\"",
-       "youhavenewmessages": "Anjeun boga $1 ($2).",
-       "youhavenewmessagesfromusers": "{{PLURAL:$4|Anjeun boga}} $1 ti {{PLURAL:$3|pamaké séjén|$3 pamaké}} ($2).",
-       "youhavenewmessagesmanyusers": "Anjeun boga $1 ti pamaké lian ($2).",
-       "newmessageslinkplural": "{{PLURAL:$1|obrolan anyar|obrolan anyar}}",
+       "youhavenewmessages": "{{PLURAL:$3|Anjeun meunang}} $1 ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|Anjeun meunang}} $1 ti {{PLURAL:$3|pamaké séjén|$3 pamaké}} ($2).",
+       "youhavenewmessagesmanyusers": "Anjeun meunang $1 ti pamaké lian ($2).",
+       "newmessageslinkplural": "{{PLURAL:$1|hiji talatah anyar|999=talatah anyar}}",
        "newmessagesdifflinkplural": "{{PLURAL:$1|parobahan|999=parobahan}} panungtung",
-       "youhavenewmessagesmulti": "Anjeun boga talatah anyar di $1",
+       "youhavenewmessagesmulti": "Anjeun meunang talatah anyar di $1",
        "editsection": "édit",
        "editold": "édit",
        "viewsourceold": "tempo sumber",
        "editlink": "édit",
        "viewsourcelink": "témbongkeun sumber",
        "editsectionhint": "Édit bab: $1",
-       "toc": "Daptar eusi",
+       "toc": "Eusi",
        "showtoc": "témbongkeun",
        "hidetoc": "sumputkeun",
        "collapsible-collapse": "Tilepkeun",
        "actionthrottled": "Peta diwates",
        "actionthrottledtext": "Salaku tetengger anti-spam, anjeun teu diwenangkeun loba kitu peta dina jangka waktu anu sakitu heureutna. Mangga lajengkeun deui sanggeus sababaraha menit ka payun.",
        "protectedpagetext": "Ieu kaca dijaga tina éditan atawa peta lianna.",
-       "viewsourcetext": "Anjeun bisa némbongkeun sarta nyalin sumber ieu kaca:",
+       "viewsourcetext": "Anjeun bisa nempo sarta néplak sumber ieu kaca.",
        "viewyourtext": "Anjeun bisa némbongkeun sarta nyalin sumber '''éditan anjeun''' ka ieu kaca:",
        "protectedinterface": "Ieu kaca nyadiakeun téks antarmuka pikeun sopwér di ieu wiki, ku kkituna dikonci pikeun nyingkahan \nanu ngaruksak.\nPikeun nambahkeun atawa ngarobah tarjamahan pikeun sakabéh wiki, buka [https://translatewiki.net/ translatewiki.net], proyék lokalisasi MediaWiki.",
        "editinginterface": "<strong>Awas:</strong> Anjeun keur ngédit kaca nu dipaké pikeun nyadiakeun téks antarmuka pikeun sopwérna.\nParobahan kana ieu kaca bakal mangaruhan pidangan antarmuka pikeun pamaké séjén di ieu wiki.",
        "password-change-forbidden": "Anjeun teu bisa ngarobah kecap sandi dina ieu wiki.",
        "externaldberror": "Aya kasalahan dina pangkalan data oténtikasi luar, atawa anjeun mémang teu diwenangkeun pikeun ngaropéa akun luar anjeun.",
        "login": "Asup log",
+       "login-security": "Buktikeun idéntitas anjeun",
        "nav-login-createaccount": "Nyieun akun/asup log",
        "logout": "Kaluar log",
        "userlogout": "Kaluar log",
        "changepassword-success": "Kecap sandi Anjeun geus laksana dirobah!",
        "changepassword-throttled": "Anjeun geus loba teuing nyobaan asup log.\nTungguan $1 méméh nyobaan deui.",
        "botpasswords": "Kecap sandi bot",
+       "botpasswords-disabled": "Kecap sandi bot dipareuman.",
+       "botpasswords-no-central-id": "Pikeun migunakeun kecap sandi bot, anjeun kudu asup log ka akun museur heula.",
+       "botpasswords-existing": "Kecap sandi bot sayaga",
+       "botpasswords-createnew": "Jieun kecap sandi bot anyar",
+       "botpasswords-editexisting": "Édit kecap sandi bot nu sayaga",
        "botpasswords-label-appid": "Ngaran bot:",
        "botpasswords-label-create": "Jieun",
        "botpasswords-label-update": "Anyarkeun",
        "botpasswords-label-cancel": "Bolay",
        "botpasswords-label-delete": "Pupus",
        "botpasswords-label-resetpassword": "Balikeun deui kecap sandi",
+       "botpasswords-label-grants": "Aksés nu dibikeun:",
        "botpasswords-label-grants-column": "Diwidian",
+       "botpasswords-bad-appid": "Ngaran bot \"$1\" teu sah.",
+       "botpasswords-created-title": "Kecap sandi bot dijieun",
        "botpasswords-updated-title": "Kecap sandi bot dianyarkeun",
        "botpasswords-deleted-title": "Kecap sandi bot dihapus",
        "resetpass_forbidden": "Sandi henteu bisa dirobah",
        "passwordreset-emailtext-user": "Pamaké $1 di {{SITENAME}} ménta nyetél ulang sandi anjeun di {{SITENAME}} ($4). {{PLURAL:$3|Akun}} di handap tumali jeung alamat surélék ieu:\n\n$2\n\n{{PLURAL:$3|Ieu sandi saheulaanan}} bakal kadaluwarsa dina témpo {{PLURAL:$5|sapoé|$5 poé}}.\nAnjeun kudu asup sarta milih sandi anyar ayeuna. Lamun henteu rumasa nyieun ieu pamundut atawa lamun geus inget sandi asli sarta moal ngarobah deui, ieu talatah teu kudu dipaliré.",
        "passwordreset-emailelement": "Sandiasma: \n$1\n\nSandi saheulaanan: \n$2",
        "passwordreset-emailsentemail": "Mun ieu alamat surélék patalian jeung akun anjeun, mangka surélék pikeun nyetél ulang kecap sandi bakal dikirim.",
+       "passwordreset-nocaller": "Panggero kudu dibikeun",
+       "passwordreset-nosuchcaller": "Panggero can aya: $1",
+       "passwordreset-invalidemail": "Alamat surélék teu sah",
        "changeemail": "Ganti alamat surélék",
        "changeemail-header": "Ganti alamat surélék akun",
        "changeemail-no-info": "Anjeun kudu asup log pikeun bisa muka ieu kaca sacara langsung.",
        "changeemail-password": "Kecap sandi {{SITENAME}} Anjeun:",
        "changeemail-submit": "Ganti surélék",
        "changeemail-throttled": "Anjeun loba teuing gagal asup log.\nTungguan $1 saméméh nyobaan deui.",
+       "changeemail-nochange": "Pék asupkeun alamat surélék anyar anu béda.",
        "resettokens": "Rését token",
        "resettokens-text": "Anjeun bisa ngarését token sangkan bisa muka sababaraha data-data pribadi anu tumali jeung akun anjeun di dieu.\n\nAnjeun kudu ngarését lamun kungsi teu kahaja ngabéjaan anu séjén atawa lamun aya anu nyusup kana akun anjeun.",
        "resettokens-no-tokens": "Taya token pikeun dirését.",
        "resettokens-tokens": "Token:",
        "resettokens-token-label": "$1 (ajén ayeuna: $2)",
        "resettokens-watchlist-token": "Token pikeun asupan raramat (Atom/RSS) [[Special:Watchlist|parobahan kana kaca-kaca anu diponcorong]]",
+       "resettokens-done": "Reset token.",
        "resettokens-resetbutton": "Setél token anu dipilih",
        "bold_sample": "Téks kandel",
        "bold_tip": "Téks kandel",
        "sig_tip": "Paraf anjeun katut cap titimangsa",
        "hr_tip": "Garis horisontal",
        "summary": "Ringkesan:",
-       "subject": "Jejer/Judul:",
+       "subject": "Subyék:",
        "minoredit": "Ieu éditan minor",
        "watchthis": "Awaskeun kaca ieu",
        "savearticle": "Simpen",
        "preview": "Pramidang",
        "showpreview": "Témbongkeun pramidang",
        "showdiff": "Témbongkeun parobahan",
-       "blankarticle": "<strong>Awas:</strong> Kaca anu dijieun ku anjeun kosong kénéh.\nUpama anjeun ngaklik \"{{int:savearticle}}\" deui, kacana bakal dijieun tanpa eusi.",
+       "blankarticle": "<strong>Awas:</strong> Kaca anu dijieun ku anjeun kosong kénéh.\nUpama anjeun ngaklik \"$1\" deui, kacana bakal dijieun tanpa eusi.",
        "anoneditwarning": "<strong>Awas:</strong> Anjeun can asup log. Lamun ngédit, alamat IP anjeun bakal katempo ku balaréa. Lamun anjeun <strong>[$1 asup log]</strong> atawa <strong>[$2 nyieun akun]</strong>, ngaran anjeun bakal natrat dina jujutan éditanana, kalayan sababaraha kauntungan lianna.",
        "anonpreviewwarning": "\"Anjeun can asup log. Mun disimpen, alamat IP anjeun bakal kacatet dina jujutan ieu kaca.\"",
        "missingsummary": "'''Pépéling:''' Anjeun can ngeusian sari éditan. Mun anjeun ngaklik deui Simpen, éditan anjeun bakal disimpen tanpa sari éditan",
-       "selfredirect": "<strong>Awas:</strong> Anjeun ngalihkeun ieu kaca ka asalna.\nAnjeun sigana salah ngasupkeun tujul alihan, atawa ngédit kaca anu salah.\nUpama anjeun ngaklik deui \"{{int:savearticle}}\", alihanana bakal angger dijieun.",
+       "selfredirect": "<strong>Awas:</strong> Anjeun ngalihkeun ieu kaca ka asalna.\nAnjeun sigana salah ngasupkeun tujul alihan, atawa ngédit kaca anu salah.\nUpama anjeun ngaklik deui \"$1\", alihanana bakal angger dijieun.",
        "missingcommenttext": "Mangga tulis koméntar di handapeun ieu.",
-       "missingcommentheader": "<strong>Pépéling</strong>: Anjeun can ngeusian judul pikeun ieu koméntar.\nMun anjeun ngaklik deui \"{{int:savearticle}}\", éditan anjeun bakal disimpen tanpa koméntar.",
-       "summary-preview": "Ringkesan pramidang:",
-       "subject-preview": "Sawangan subyek/tajuk:",
+       "missingcommentheader": "<strong>Pépéling</strong>: Anjeun can ngeusian judul pikeun ieu koméntar.\nMun anjeun ngaklik deui \"$1\", éditan anjeun bakal disimpen tanpa koméntar.",
+       "summary-preview": "Pramidang tingkesan édit:",
+       "subject-preview": "Pramidang subyék:",
        "previewerrortext": "Aya éror nalika nyobaan nyawang robahan anjeun.",
        "blockedtitle": "Pamaké dipeungpeuk",
        "blockedtext": "'''Ngaran pamaké atawa alamat IP anjeun dipeungpeuk.'''\n\nDipeungpeuk ku $1.\nAlesanana ''$2''.\n\n* Mimiti dipeungpeuk : $8\n* dipeungpeuk kadaluarsa dina: $6\n* Sasaran nudipeungpeuk : $7\n\nAnjeun bisa nepungan $1 atawa salasahiji [[{{MediaWiki:Grouppage-sysop}}|kuncén]] séjén pikeun nyawalakeun hal ieu.\n'''Catet''': yén anjeun teu bisa maké fungsi \"surélékan pamaké ieu\" mun anjeun teu ngadaptarkeun alamat surélék nu sah kana [[Special:Preferences|préferénsi pamaké]] anjeun.\n\nAlamat IP anjeun $3 jeung ID na #$5.\nLampirkeun informasi ieu dina unggal ''query'' anjeun.",
        "continue-editing": "Miang ka bagian ngédit",
        "previewconflict": "Sawangan ieu mangrupa eunteung pikeun téks na rohangan ngédit sakumaha bakal katémbong mun ku anjeun disimpen.",
        "session_fail_preview": "'''Punten! Kami teu bisa ngolah éditan anjeun alatan leungitna data rintakan. Mangga cobian deui. Mun tetep teu bisa, cobi kaluar log lajeng lebet deui.'''",
-       "session_fail_preview_html": "'''Punten! Kami teu bisa ngolah éditan anjeun sabab leungitna data rintakan.'''\n\n''Kusabab {{SITENAME}} ngawenangkeun dipakéna HTML atah, pramidangna disumputkeun pikeun nyegah panarajang JavaScript.''\n\n'''Mun ieu éditan bener, mangga cobian deui. Mun tetep teu metu, cobi [[Special:UserLogout|kaluar log]] heula, lajeng lebet deui.'''",
+       "session_fail_preview_html": "Hampura! Kami teu bisa ngolah éditan anjeun lantaran leungitna data rintakan.\n\n<em>Kusabab {{SITENAME}} ngawenangkeun dipakéna HTML atah, pramidangna disumputkeun pikeun nyegah panarajang JavaScript.''</em>\n\n<strong>Mun ieu éditan bener, mangga cobian deui. Mun tetep teu metu, coba [[Special:UserLogout|kaluar log]] heula, terus asup deui.</strong>",
        "token_suffix_mismatch": "'''Éditan anjeun ditolak sabab aplikasi klien Anjeun ngarobah karakter tanda baca dina éditan. Éditan kasebut ditolak keur nyegah kasalahan dina artikel téks. Hal ieu kadang-kadang kajadian lamun Anjeun maké proksi anonim basis web nu masalah.'''",
        "edit_form_incomplete": "'''Sawatara bagian tina wangun éditan teu nepi ka sérver; pariksa deui naha éditan Anjeun tetep gembleng sarta cobaan deui.'''",
        "editing": "Ngédit $1",
        "editingsection": "Ngédit $1 (bagian)",
        "editingcomment": "Ngédit $1 (bagian anyar)",
        "editconflict": "Konflik éditan: $1",
-       "explainconflict": "Aya nu geus ngarobah kaca ieu saprak anjeun mimiti ngédit.\nTéks béh luhur ngandung téks kaca nu aya kiwari, parobahan anjeun ditémbongkeun di béh handap.\nAnjeun kudu ngagabungkeun parobahan anjeun kana téks nu kiwari.\n'''Ngan''' téks nu béh luhur nu bakal disimpen nalika anjeun mencét \"{{int:savearticle}}\".",
+       "explainconflict": "Aya nu geus ngarobah kaca ieu saprak anjeun mimiti ngédit.\nTéks béh luhur ngandung téks kaca nu aya kiwari, parobahan anjeun ditémbongkeun di béh handap.\nAnjeun kudu ngagabungkeun parobahan anjeun kana téks nu kiwari.\n'''Ngan''' téks nu béh luhur nu bakal disimpen nalika anjeun mencét \"$1\".",
        "yourtext": "Tulisan anjeun",
        "storedversion": "Vérsi nu disimpen",
        "nonunicodebrowser": "'''AWAS: Panyungsi anjeung teu maké unicode, mangga robah heula méméh ngédit artikel.'''",
        "yourdiff": "Béda",
        "copyrightwarning": "Perhatikeun yén sadaya kontribusi ka MediaWiki dianggap medal dina panangtayungan lisénsi $2 (tempo $1 pikeun jéntréna). Mun anjeun teu miharep tulisan anjeun dirobah sarta disebarkeun deui, ulah dilebetkeun ka dieu.<br />\nAnjeun ogé jangji yén tulisan ieu dijieun ku sorangan, atawa disalin ti ''domain'' umum atawa sumberdaya bébas séjénna. '''ULAH NGASUPKEUN KARYA NU MIBANDA HAK CIPTA TANPA IDIN!'''",
        "copyrightwarning2": "Catet yén sadaya kontribusi ka {{SITENAME}} bisa diédit, dirobah, atawa dihapus ku kontributor séjén. Mun anjeun teu miharep tulisan anjeun dirobah, ulah ngintunkeun ka dieu.<br />\nAnjeun ogé mastikeun yén ieu téh pituin tulisan anjeun, atawa salinan ti domain umum atawa sumberdaya bébas séjénna (tempo $1 pikeun écésna).\n'''ULAH NGINTUNKEUN KARYA NU MIBANDA HAK CIPTA TANPA WIDI!'''",
+       "editpage-cannot-use-custom-model": "Modél kontén ieu kaca teu bisa dirobah.",
        "longpageerror": "<strong>Éror: téks anu dikirimkeun panjangna {{PLURAL:$1|hiji kilobit|$1 kilobit}}, leuwih ti maksimum {{PLURAL:$2|hiji kilobit|$2 kilobit}}.</strong>\nTeu bisa disimpen.",
        "readonlywarning": "<strong>Awas: pangkalan data dikonci pikeun diropéa, anjeun moal bisa nyimpen éditan anjeun ayeuna.</strong>\nMun perlu, simpen heula téksna kana berkas téks pikeun diasupkeun deui séjén mangsa.\n\nKuncén anu ngonci pangkalan data méré katerangan: $1",
        "protectedpagewarning": "'''AWAS: ieu kaca dikonci sarta ngan bisa dirobah ku pamaké nu statusna kuncén.'''\nÉntri log panungtungan ditémbongkeun di handap:",
        "edit-conflict": "Éditan bantrok",
        "edit-no-change": "Éditan anjeun teu diwaro, kusabab taya nu robah dina tulisanana.",
        "postedit-confirmation-created": "Kaca geus dijieun.",
+       "postedit-confirmation-restored": "Kaca geus dibalikkeun deui.",
        "postedit-confirmation-saved": "Éditan anjeun tos disimpen.",
        "edit-already-exists": "Teu bisa nyieun kaca anyar.\nArtikelna geus aya.",
        "defaultmessagetext": "Téks ti dituna",
        "invalid-content-data": "Data eusi henteu valid",
        "content-not-allowed-here": "Eusi \"$1\" teu diijinan di kaca [[$2]]",
        "editwarning-warning": "Ninggalkeun ieu kaca bakal ngaleungitkeun parobahan anu tas dijieun.\nUpama anjeun geus asup log, anjeun bisa numpurkeun ieu talatah dina bagian \"{{int:prefs-editing}}\" préferénsi anjeun.",
+       "editpage-invalidcontentmodel-title": "Modél kontén teu dirojong",
        "editpage-notsupportedcontentformat-title": "Format eusi teu dirojong",
        "editpage-notsupportedcontentformat-text": "Format eusi $1 teu dirojong ku modél eusi $2.",
        "content-model-wikitext": "wikitéks",
        "expansion-depth-exceeded-category": "Kaca-kaca anu jero ékspansina leuwih ti wates",
        "expansion-depth-exceeded-category-desc": "Kacana ngaleuwihan wates jero ékspansina.",
        "expansion-depth-exceeded-warning": "Kaca ngaleuwihan jero ékspansi",
+       "parser-unstrip-loop-warning": "Luncatan buni kanyahoan",
+       "parser-unstrip-recursion-limit": "Wates rékursi buni kaleuwihi ($1)",
+       "converter-manual-rule-error": "Kasalahan kanyahoan dina aturan tarjamahan basa manual",
        "undo-success": "Éditan ieu bisa dibolaykeun. Mangga pariksa babandingan di handap pikeun mastikeun mémang anjeun miharep éta parobahan. Mun geus yakin, mangga simpen parobahanana pikeun ngabolaykeun éditan.",
        "undo-failure": "Éditan teu bisa dibolaykeun alatan kaselang ku éditan séjén.",
        "undo-norev": "Éditan ieu henteu bisa bolaykeun alatan kaca henteu kapanggih atawa geus dihapus.",
+       "undo-nochange": "Éditan nu patingpucunghul geus teu bisa dibolaykeun",
        "undo-summary": "←Ngabolaykeun révisi $1 ku [[Special:Contributions/$2|$2]] ([[User talk:$2|Obrolan]])",
        "undo-summary-username-hidden": "Bolaykeun révisi $1 ku pamaké nyumput",
        "cantcreateaccount-text": "Nyieun akun ti ieu alamat IP ('''$1''') dipeungpeuk ku [[User:$3|$3]].\n\nAlesana $3 cenah ''$2''.",
        "page_first": "mimiti",
        "page_last": "tung-tung",
        "histlegend": "Pilihan béda: tandaan wadah buleud vérsina pikeun ngabandingkeun sarta pencét énter atawa tombol di handap.<br />\nKaterangan: (kiw) = bédana jeung vérsi kiwari,\n(ahir) = bédana jeung vérsi nu harita, m = éditan minor.",
-       "history-fieldset-title": "Sungsi jujutan",
-       "history-show-deleted": "Ukur nu dihapus",
+       "history-fieldset-title": "Paluruh vérsi heubeul",
+       "history-show-deleted": "Ukur ngahapus révisi",
        "histfirst": "pangheubeulna",
        "histlast": "panganyarna",
        "historysize": "($1 {{PLURAL:$1|bit|bit}})",
        "history-feed-title": "Sajarah révisi",
        "history-feed-description": "Sajarah révisi kaca ieu di wiki",
        "history-feed-item-nocomment": "$1 dina $2",
-       "history-feed-empty": "Kaca nu dipundut teu kapanggih.\nBisa jadi geus dihapus ti wiki atawa diganti ngaranna.\nCobaan [[Special:Search|sungsi di wiki]] pikeun kaca-kaca nu sarimbag.",
+       "history-feed-empty": "Kaca nu dipundut teu kapanggih.\nMeureun geus dihapus ti wiki atawa diganti ngaranna.\nCoba [[Special:Search|paluruh di wiki]] pikeun kaca-kaca anyar nu luyu.",
        "history-edit-tags": "Édit tag révisi anu dipilih",
        "rev-deleted-comment": "(rangkuman éditan dihapus)",
        "rev-deleted-user": "(ngaran pamaké geus dihapus)",
        "revdelete-legend": "Setél réstriksi révisi:",
        "revdelete-hide-text": "Téks révisi",
        "revdelete-hide-image": "Sumputkeun eusi gambar",
-       "revdelete-hide-name": "Sumputkeun lampah sarta udagan",
-       "revdelete-hide-comment": "Sumputkeun koméntar ngédit",
-       "revdelete-hide-user": "Sumputkeun ngaran pamaké/IP éditor",
+       "revdelete-hide-name": "Sumputkeun udagan sarta paraméter",
+       "revdelete-hide-comment": "Tingkesan ngédit",
+       "revdelete-hide-user": "Sandiasma/alamat IP éditor",
        "revdelete-hide-restricted": "Sumputkeun data boh ti kuncén atawa nu séjénna",
        "revdelete-radio-same": "(ulah dirobah)",
        "revdelete-radio-set": "Nyumput",
        "revdelete-unsuppress": "Hapus watesan kana révisi anu geus dipulangkeun",
        "revdelete-log": "Alesan:",
        "revdelete-submit": "Larapkeun kana {{PLURAL:$1|révisi|révisi}} nu dipilih",
-       "revdelete-success": "Visibilitas révisi geus dimutahirkeun.",
+       "revdelete-success": "Visibilitas révisi dianyarkeun.",
        "revdelete-failure": "'''Visibilitas révisi teu bisa diapdét:'''\n$1",
-       "logdelete-success": "Log pangatur nyumputkeun junun dilarapkeun.",
+       "logdelete-success": "Visibilitas log dilarapkeun.",
        "logdelete-failure": "'''Visibilitas log teu bisa disét:'''\n$1",
        "revdel-restore": "robah panémbong",
        "pagehist": "Sajarah kaca",
        "revdelete-hide-current": "Éror nyumputkeun anu titimangsana $2, $1: ieu téh révisi kiwari.\nTeu bisa disumputkeun.",
        "revdelete-show-no-access": "Éror némbongkeun anu titimangsana $2, $1: geus ditandaan \"diwates\".\nAnjeun teu diwenangkeun asup.",
        "revdelete-modify-no-access": "Éror ngarobah anu titimangsana $2, $1: geus ditandaan \"diwates\".\nAnjeun teu diwenangkeun asup.",
-       "revdelete-modify-missing": "Éror ngarobah anu IDna $2, $1: leungit ti pangkalan data!",
+       "revdelete-modify-missing": "Kasalahan ngaropéa ID $1: Horéng leungit ti pangkalan data!",
+       "revdelete-no-change": "<strong>Mangkahadé:</strong>Item tanggal $2, $1 geus mibanda  pangaturan visibilitas nu dipundut.",
        "revdelete-reason-dropdown": "*Alesan ngahapus umumna\n** Ngarumpak hakcipta\n** Émbaran pribadi anu teu perlu\n** Émbaranana bisa jadi pitnah",
        "revdelete-otherreason": "Alesan lianna:",
        "revdelete-reasonotherlist": "Alesan séjén",
        "mergehistory-empty": "Euweuh révisi nu bisa digabungkeun.",
        "mergehistory-done": "$3 {{PLURAL:$3|révisi|révisi}} tina $1 parantos digabung ka [[:$2]].",
        "mergehistory-fail": "Jujutan teu bisa digabungkeun! Mangga pariiksa deui paraméter kaca jeung titimangsana.",
+       "mergehistory-fail-bad-timestamp": "Stémpel waktu teu sah.",
+       "mergehistory-fail-invalid-source": "Kaca sumber teu sah.",
+       "mergehistory-fail-invalid-dest": "Kaca tujuan teu sah.",
        "mergehistory-no-source": "Sumber kaca $1 teu aya.",
        "mergehistory-no-destination": "Kaca nu dituju ($1) teu aya.",
        "mergehistory-invalid-source": "Kaca sumber kudu sohéh judulna.",
        "search-interwiki-caption": "Proyék sawargi",
        "search-interwiki-default": "Hasil ti $1:",
        "search-interwiki-more": "(saterusna)",
+       "search-interwiki-more-results": "hasil lianna",
        "search-relatedarticle": "Patula-patali",
        "searchrelated": "patula-patali",
        "searchall": "sadayana",
        "prefs-watchlist": "Awaskeuneun",
        "prefs-editwatchlist": "Ropéa awaskeuneun",
        "prefs-editwatchlist-label": "Ropéa éntri anu aya dina awaskeuneun:",
+       "prefs-editwatchlist-clear": "Bersihan aawaseun anjeun",
        "prefs-watchlist-days": "Jumlah poé anu ditémbongkeun dina daptar awaskeuneun:",
        "prefs-watchlist-days-max": "Panglilana $1 {{PLURAL:$1|poé|poé}}",
        "prefs-watchlist-edits": "Jumlah parobahan maksimum nu ditémbongkeun dina daptar panjang awaskeuneun:",
        "prefs-watchlist-edits-max": "Panglobana: 1000",
+       "prefs-watchlist-token": "Token awaskeuneun:",
        "prefs-misc": "Pangaturan rupa-rupa",
        "prefs-resetpass": "Ganti sandi",
-       "prefs-changeemail": "Ganti alamat surélék",
+       "prefs-changeemail": "Ganti atawa pupus alamat surélék",
        "prefs-setemail": "Asupkeun alamat surélék",
        "prefs-email": "Pilihan surélék",
        "prefs-rendering": "Pidangan",
        "youremail": "Surélék:",
        "username": "{{GENDER:$1|Sandiasma}}:",
        "prefs-memberingroups": "{{GENDER:$2|Anggota}} {{PLURAL:$1|kelompok|kelompok}}:",
+       "group-membership-link-with-expiry": "$1 (nepi ka $2)",
        "prefs-registration": "Waktu daptar:",
        "yourrealname": "Ngaran anjeun*",
        "yourlanguage": "Basa antarbeungeut",
        "userrights": "Manajemén hak pamaké",
        "userrights-lookup-user": "Atur gorombolan pamaké",
        "userrights-user-editname": "Asupkeun sandiasma:",
-       "editusergroup": "Édit Golongan Pamaké",
+       "editusergroup": "Muat gorombolan pamaké",
        "editinguser": "Ngarobah hak kontributor '''[[User:$1|$1]]''' $2",
        "userrights-editusergroup": "Édit gorombolan pamaké",
        "saveusergroups": "Simpen Grup Pamaké",
        "userrights-nodatabase": "Pangkalan data $1 euweuh atawa henteu lokal.",
        "userrights-changeable-col": "Jumplukan anu bisa Anjeun robah",
        "userrights-unchangeable-col": "Jumplukan anu teu bisa Anjeun robah",
+       "userrights-expiry-current": "Kadaluwarsa $1",
+       "userrights-expiry-none": "Teu kadaluwarsa",
+       "userrights-expiry": "Kadaluwarsa:",
+       "userrights-expiry-othertime": "Séjén waktu:",
        "group": "Gorombolan:",
        "group-user": "Pamaké",
        "group-autoconfirmed": "Pamaké anu otomatis dikonfirmasi",
        "group-bot": "Bot",
        "group-sysop": "Kuncén",
        "group-bureaucrat": "Birokrat",
-       "group-suppress": "Oversights",
+       "group-suppress": "Paneueul",
        "group-all": "(sadayana)",
        "group-user-member": "{{GENDER:$1|kontributor}}",
        "group-autoconfirmed-member": "{{GENDER:$1|kontributor anu otomatis dikonfirmasi}}",
        "group-bot-member": "{{GENDER:$1|bot}}",
        "group-sysop-member": "{{GENDER:$1|kuncén}}",
        "group-bureaucrat-member": "{{GENDER:$1|birokrat}}",
-       "group-suppress-member": "{{GENDER:$1|pangawas}}",
+       "group-suppress-member": "{{GENDER:$1|paneueul}}",
        "grouppage-user": "{{ns:project}}:Pamaké",
        "grouppage-autoconfirmed": "{{ns:project}}:Pamaké anu otomatis dikonfirmasi",
        "grouppage-bot": "{{ns:project}}:Bot",
        "grouppage-sysop": "{{ns:project}}:Kuncén",
        "grouppage-bureaucrat": "{{ns:project}}:Birokrat",
-       "grouppage-suppress": "{{ns:project}}:Oversight",
+       "grouppage-suppress": "{{ns:project}}:Paneueul",
        "right-read": "Maca kaca",
        "right-edit": "Ngédit kaca",
        "right-createpage": "Nyieun kaca anyar (nu lain kaca obrolan)",
        "right-userrights-interwiki": "Ngédit hak kontributor di wiki lianna",
        "right-siteadmin": "Ngonci jeung muka konci databés",
        "right-sendemail": "Kirim surélék ka pamaké séjén",
+       "grant-generic": "\"$1\" buntel hak aksés",
+       "grant-group-page-interaction": "Interaksi jeung kaca",
+       "grant-group-file-interaction": "Interaksi jeung média",
+       "grant-group-watchlist-interaction": "Interaksi jeung aawaseun anjeun",
        "grant-group-email": "Kirim surélék",
+       "grant-group-private-information": "Aksés data pribadi ngeunaan anjeun",
+       "grant-group-other": "Lalampahan macem-macem",
+       "grant-blockusers": "Peungpeuk sarta teu meungpeuk pamaké",
+       "grant-createaccount": "Jieun akun",
+       "grant-createeditmovepage": "Jieun, édit, jeung alihkeun kaca",
+       "grant-delete": "Pupus kaca, révisi, jeung éntri log",
+       "grant-editmycssjs": "Édit CSS/JavaScript pamaké anjeun",
+       "grant-editmyoptions": "Édit préférénsi pamaké anjeun",
+       "grant-editmywatchlist": "Édit awaskeuneun anjeun",
+       "grant-editpage": "Édit kaca nu nyangkaruk",
+       "grant-editprotected": "Édit kaca nu dikonci",
+       "grant-highvolume": "Éditan nu rohaka",
+       "grant-oversight": "Sumputkeun pamaké jeung révisi neken",
+       "grant-patrol": "Aawas parobahan kaca",
+       "grant-privateinfo": "Info aksés pribadi",
+       "grant-protect": "Konci sarta buka konci kaca",
+       "grant-rollback": "Balikkeun parobahan kaca",
+       "grant-sendemail": "Kirim surélék ka pamaké séjén",
+       "grant-uploadeditmovefile": "Unjal, ganti, jeung alihkeun berkas",
        "grant-uploadfile": "Unjal berkas anyar",
        "grant-basic": "Aksés dasar",
+       "grant-viewdeleted": "Tempo berkas jeung kaca nu dihapus",
+       "grant-viewmywatchlist": "Tempo aawaseun anjeun",
        "newuserlogpage": "Log akun anyar",
        "newuserlogpagetext": "Di handap ieu béréndélan log pamaké anyar.",
        "rightslog": "Log hak pamaké",
        "action-upload_by_url": "ngamuat ieu berkas ti URL",
        "action-writeapi": "maké API",
        "action-delete": "ngahapus ieu kaca",
-       "action-deleterevision": "ngahapus ieu révisi",
+       "action-deleterevision": "mupus révisi",
+       "action-deletelogentry": "pupus éntri log",
        "action-deletedhistory": "nempo jujutan anu geus dihapus ti ieu kaca",
        "action-browsearchive": "milari kaca nu geus dihapus",
        "action-undelete": "ngabolaykeun hapusan ieu kaca",
        "action-editmywatchlist": "robah awaskeuneun anjeun",
        "action-viewmyprivateinfo": "tempo émbaran pribadi anjeun",
        "action-editmyprivateinfo": "robah émbaran pribadi anjeun",
+       "action-purge": "hapus sindangan ieu kaca",
        "nchanges": "$1 {{PLURAL:$1|parobahan|parobahan}}",
        "enhancedrc-history": "jujutan",
        "recentchanges": "Anyar robah",
        "recentchanges-legend": "Pilihan parobahan anyar",
        "recentchanges-summary": "Lacak parobahan ka wiki panganyarna na kaca ieu.",
+       "recentchanges-noresult": "Taya parobahan dina mangsa anu dipilih cocog jeung kriteria.",
        "recentchanges-feed-description": "Manggihan parobahan panganyarna dina wiki di asupan ieu.",
        "recentchanges-label-newpage": "Ieu parobahan bakal ngahasillkeun kaca anyar",
        "recentchanges-label-minor": "Ieu éditan minor",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (tempo ogé [[Special:NewPages|béréndélan kaca anyar]])",
        "recentchanges-submit": "Témbongkeun",
        "rcfilters-activefilters": "Panyaringan aktif",
+       "rcfilters-savedqueries-rename": "Robah ngaran",
+       "rcfilters-savedqueries-remove": "Hapus",
+       "rcfilters-savedqueries-new-name-label": "Ngaran",
+       "rcfilters-savedqueries-cancel-label": "Bolay",
        "rcfilters-restore-default-filters": "Balikeun panyaringan bawaan",
        "rcfilters-clear-all-filters": "Pupus sakumna panyaringan",
        "rcfilters-search-placeholder": "Sarinh parobahan panganyarna (langlang atawa mimitian ngetik)",
        "rcfilters-invalid-filter": "Panyaringan teu sah",
        "rcfilters-filterlist-title": "Saringan",
+       "rcfilters-filterlist-whatsthis": "Naon ieu téh?",
+       "rcfilters-highlightbutton-title": "Hasil sorotan",
+       "rcfilters-highlightmenu-title": "Pilih warna",
+       "rcfilters-highlightmenu-help": "Pilih warna pikeun nyorot ieu properti",
+       "rcfilters-filterlist-noresults": "Taya saringan nu kapanggih",
        "rcfilters-filtergroup-registration": "Padaptaran pamaké",
        "rcfilters-filter-registered-label": "Kadaptar",
        "rcfilters-filter-registered-description": "Éditor asup log",
        "rcfilters-filter-unregistered-label": "Teu kadaptar",
        "rcfilters-filter-unregistered-description": "Éditor nu teu asup log.",
-       "rcfilters-filter-editsbyself-label": "Éditan anjeun",
-       "rcfilters-filter-editsbyself-description": "Éditan ku anjeun.",
+       "rcfilters-filtergroup-authorship": "Kontribusi kapangarangan",
+       "rcfilters-filter-editsbyself-label": "Éditan meunang anjeun",
+       "rcfilters-filter-editsbyself-description": "Kontribusi anjeun.",
        "rcfilters-filter-editsbyother-label": "Éditan ku batur",
-       "rcfilters-filter-editsbyother-description": "Éditan dijieun ku pamaké sején (lain anjeun).",
+       "rcfilters-filter-editsbyother-description": "Sakumna éditan iwal nu kuring.",
        "rcfilters-filtergroup-userExpLevel": "Undakan mahér (pikeun pamaké kadaptar hungkul)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Padatang anyar",
        "rcfilters-filter-user-experience-level-learner-label": "Palajar",
        "rcfilters-filter-user-experience-level-experienced-label": "Pamaké pangpangalaman",
        "rcfilters-filter-user-experience-level-experienced-description": "Leuwih ti 30 poé tina aktivitas jeung 500 éditan.",
+       "rcfilters-filtergroup-automated": "Kontribusi otomatis",
        "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-bots-description": "Éditan dipigawé ku parabot otomatis.",
        "rcfilters-filter-humans-label": "Jalma (lain bot)",
+       "rcfilters-filter-humans-description": "Éditan dipigawé ku éditor jalma.",
+       "rcfilters-filtergroup-reviewstatus": "Status ulasan",
        "rcfilters-filter-patrolled-label": "Diaawas",
+       "rcfilters-filter-patrolled-description": "Éditan ditandaan geus diaawas.",
        "rcfilters-filter-unpatrolled-label": "Teu kaawaskeun",
        "rcfilters-filter-unpatrolled-description": "Éditan teu ditandaan geus diawaskeun.",
        "rcfilters-filtergroup-significance": "Kapentingan",
        "rcfilters-filter-minor-label": "Éditan minor",
+       "rcfilters-filter-major-label": "Lain éditan minor",
+       "rcfilters-filter-major-description": "Éditan teu ditandaan minangka minor.",
+       "rcfilters-filtergroup-changetype": "Jinis parobahan",
        "rcfilters-filter-pageedits-label": "Éditan kaca",
        "rcfilters-filter-newpages-label": "Panyieunan kaca",
-       "rcnotefrom": "Di handap ieu parobahan saprak <b>$2</b> (nu ditémbongkeun nepi ka <b>$1</b>).",
+       "rcfilters-filter-newpages-description": "Éditan nu nyieun kaca anyar.",
+       "rcfilters-filter-categorization-label": "Parobahan kategori",
+       "rcfilters-filter-logactions-label": "Tarékah kacatet",
+       "rcfilters-filtergroup-lastRevision": "Révisi kiwari",
+       "rcfilters-filter-lastrevision-label": "Révisi kiwari",
+       "rcnotefrom": "Di handap ieu {{PLURAL:$5|parobahan|parobahan}} ti <strong>$3, $4</strong> (nepi ka <strong>$1</strong> ditémbongkeun).",
+       "rclistfromreset": "Rését pilihan kaping",
        "rclistfrom": "Témbongkeun nu anyar robah nepi ka $3 $2",
        "rcshowhideminor": "$1 éditan minor",
        "rcshowhideminor-show": "Témbongkeun",
        "rcshowhidemine": "$1 éditan kuring",
        "rcshowhidemine-show": "Témbongkeun",
        "rcshowhidemine-hide": "Sumputkeun",
-       "rclinks": "Témbongkeun $1 parobahan panungtung ti $2 poé ka tukang<br />$3",
+       "rcshowhidecategorization": "$1 kategorisasi kaca",
+       "rcshowhidecategorization-show": "Témbongkeun",
+       "rcshowhidecategorization-hide": "Sumputkeun",
+       "rclinks": "Témbongkeun $1 parobahan panungtung ti $2 poé ka tukang",
        "diff": "béda",
        "hist": "juj",
        "hide": "sumputkeun",
        "newpageletter": "A",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|ngawaskeun|ngawaskeun}}]",
-       "rc_categories": "Watesan nepi ka kategori (dipisah ku \"|\")",
-       "rc_categories_any": "Naon bae",
+       "rc_categories": "Watesan nepi ka kategori (dipisah ku \"|\"):",
+       "rc_categories_any": "Unggal nu kapilih",
        "rc-change-size-new": "$1 {{PLURAL:$1|bit|bit}} sanggeus robah",
        "newsectionsummary": "/* $1 */ bagean anyar",
-       "rc-enhanced-expand": "Témbongkeun rincian (butuh JavaScript)",
+       "rc-enhanced-expand": "Témbongkeun rincian",
        "rc-enhanced-hide": "Sumputkeun rincian",
        "rc-old-title": "Mimitina dijieun salaku \"$1\"",
        "recentchangeslinked": "Parobahan nu patali",
        "recentchangeslinked-summary": "Ieu kaca husus ngabéréndélkeun parobahan anyar anu numbu ti kaca husus (atawa uesi katagori husus). Kaca anu [[Special:Watchlist|diawaskeun]] némbongan '''kandel'''.",
        "recentchangeslinked-page": "Ngaran kaca:",
        "recentchangeslinked-to": "Témbongkeun parobahan ka kaca-kaca nu ditumbukeun ka kaca nu dimaksud",
+       "recentchanges-page-added-to-category": "[[:$1]] ditambahkeun kana kategori",
+       "recentchanges-page-removed-from-category": "[[:$1]] dipupus tina kategori",
+       "autochange-username": "Parobahan otomatis MédiaWiki",
        "upload": "Unjal berkas",
        "uploadbtn": "Unjal berkas",
        "reuploaddesc": "Balik ka formulir muatan.",
+       "upload-tryagain": "Kirim paropéaan pedaran berkas",
        "uploadnologin": "Can asup log",
        "uploadnologintext": "Mangga $1 pikeun ngunggah berkas.",
        "upload_directory_read_only": "Diréktori muatan ($1) teu bisa ditulis ku server ramat.",
        "filetype-banned": "Jenis berkas ieu dipahing.",
        "verification-error": "Ieu berkas teu lulus vérifikasi.",
        "illegal-filename": "Ngaran berkas dipahing.",
+       "unknown-error": "Aya kasalahan anu teu dikanyahoankeun.",
        "tmp-create-error": "Teu bisa nyieun berkas sementara.",
        "tmp-write-error": "Éror nulis berkas sementara.",
        "large-file": "Hadéna mah koropak nu dimuat téh teu leuwih ti $1 bit; ieu koropak gedéna $2 bit.",
        "largefileserver": "Ieu koropak badag teuing, ngaleuwihan wates nu diwenangkeun ku server.",
        "emptyfile": "Koropak nu dimuatkeun ku anjeun jigana kosong. Hal ieu bisa jadi alatan sarupaning ''typo'' na ngaran koropakna. Mangga parios deui yén anjeun leres-leres hoyong ngamuat koropak éta.",
        "windows-nonascii-filename": "Ieu wiki teu ngarojong ngaran berkas anu maké aksara husus.",
-       "fileexists": "Koropak nu ngaranna kieu geus aya, mangga parios <strong>[[:$1]]</strong> mun anjeun teu yakin rék ngaganti.\n[[$1|thumb]]",
+       "fileexists": "Berkas nu ngaranna kieu geus aya, mangga parios <strong>[[:$1]]</strong> mun {{GENDER:|anjeun}} teu yakin rék ngaganti.\n[[$1|thumb]]",
        "fileexists-extension": "Geus aya berkas anu ngaranna sarupa: [[$2|thumb]]\n* Ngaran berkas nu dimuat: <strong>[[:$1]]</strong>\n* Ngaran berkas nu geus aya: <strong>[[:$2]]</strong>\nPilih ngaran séjén.",
        "fileexists-forbidden": "Berkas  nu ngaranna kitu geus aya sarta teu bisa ditimpah.\nMun anjeun keukeuh rék ngunggahkeun berkas anjeun, mangga balik deui sarta paké ngaran anyar.\n[[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "Gening berkas téh geus aya nu ngaranna sarua dina répositori berkas reujeung.\nMun anjeun keukeuh hayang ngunjal ieu berkas, sok ganti heula ngaranna ku ngaran nu béda. [[File:$1|thumb|center|$1]]",
        "copyuploaddisabled": "Unggahan dumasar URL ditumpurkeun.",
        "uploaddisabledtext": "Fungsi ngamuat koropak ditumpurkeun.",
        "uploadscripted": "Koropak ieu ngandung kode HTML atawa skrip nu bisa dibaca ngaco ku panyungsi ramat (''web browser'').",
+       "uploadinvalidxml": "XML na berkas nu diunjal teu bisa didadarkeun.",
        "uploadvirus": "Koropakna ngandung virus! Katrangan: $1",
        "upload-source": "Koropak sumber",
        "sourcefilename": "Ngaran koropak sumber:",
        "upload-misc-error": "Kasalahan muat anu teu kanyahoan",
        "upload-http-error": "Aya galat HTTP: $1",
        "upload-dialog-title": "Unjal berkas",
+       "upload-dialog-button-cancel": "Bolay",
+       "upload-dialog-button-back": "Balik deui",
+       "upload-dialog-button-done": "Anggeus",
+       "upload-dialog-button-save": "Simpen",
+       "upload-dialog-button-upload": "Unjal",
+       "upload-form-label-infoform-title": "Wincikan",
+       "upload-form-label-infoform-name": "Ngaran",
+       "upload-form-label-infoform-description": "Pedaran",
+       "upload-form-label-usage-title": "Pamakéan",
+       "upload-form-label-usage-filename": "Ngaran berkas",
+       "upload-form-label-own-work": "Ieu mah karya kuring sorangan",
+       "upload-form-label-infoform-categories": "Kategori",
+       "upload-form-label-infoform-date": "Ping",
+       "backend-fail-stream": "Teu bisa malidkeun berkas \"$1\"",
        "backend-fail-backup": "Teu bisa nyadangkeun berkas \"$1\".",
        "backend-fail-notexists": "Berkas $1 euweuh.",
        "backend-fail-notsame": "Berkas anu teu-identik geus aya di $1.",
        "lockmanager-fail-db-release": "Teu bisa ngaleupaskeun konci dina databés $1.",
        "lockmanager-fail-svr-release": "Teu bisa ngaleupaskeun konci dina server $1.",
        "zip-wrong-format": "Berkas anu dipilih lain berkas ZIP.",
+       "uploadstash": "Unjal engkeunan",
+       "uploadstash-clear": "Bersihan berkas engkeunan",
+       "uploadstash-nofiles": "Anjeun teu boga berkas engkeunan.",
+       "uploadstash-errclear": "Mersihan berkas nu garagal.",
+       "uploadstash-refresh": "Nyegerken deui daptar berkas",
+       "uploadstash-thumbnail": "tempo miniatur",
        "img-auth-accessdenied": "Aksés ditolak",
        "img-auth-nofile": "Berkas \"$1\" henteu aya.",
+       "img-auth-streaming": "Palidan \"$1\".",
        "img-auth-noread": "Pamaké teu boga kawenangan maca \"$1\".",
        "http-invalid-url": "URL teu bener: $1",
        "http-invalid-scheme": "URL anu skémana \"$1\" teu karojong",
+       "http-read-error": "Kasalahan maca HTTP.",
+       "http-timed-out": "Pamundutan HTTP béakeun waktu.",
+       "http-curl-error": "Kasalahan keur nyokot URL: $1",
        "upload-curl-error6": "URL teu kahontal",
        "upload-curl-error28": "Seep waktos kanggo muatkeun",
        "license": "Lisénsi:",
        "upload_source_file": " (koropak dina komputer salira)",
        "listfiles-delete": "hapus",
        "listfiles-summary": "Ieu kaca husus némbongkeun sakabéh berkas anu geus diunggah.",
-       "listfiles_search_for": "Sungsi ngaran média:",
+       "listfiles_search_for": "Paluruh ngaran média:",
+       "listfiles-userdoesnotexist": "Akun pamaké \"$1\" teu kadaptar.",
        "imgfile": "Berkas",
        "listfiles": "Daptar gambar",
+       "listfiles_thumb": "Miniatur",
        "listfiles_date": "Titimangsa",
        "listfiles_name": "Ngaran",
        "listfiles_user": "Pamaké",
        "listfiles-latestversion-yes": "Enya",
        "listfiles-latestversion-no": "Henteu",
        "file-anchor-link": "Gambar",
-       "filehist": "Sajarah gambar",
+       "filehist": "Jujutan berkas",
        "filehist-help": "Klik dina titimangsa pikeun nempo koropak nu aya dina mangsa éta.",
        "filehist-deleteall": "hapus kabéh",
        "filehist-deleteone": "hapus",
        "filehist-datetime": "Titimangsa",
        "filehist-thumb": "Miniatur",
        "filehist-thumbtext": "'Thumbnail' pikeun vérsi mangsa $1",
+       "filehist-nothumb": "Taya miniatur",
        "filehist-user": "Kontributor",
        "filehist-dimensions": "Ukuran",
        "filehist-filesize": "Ukuran koropak",
        "nolinkstoimage": "Teu aya kaca anu nutumbu ka ieu berkas.",
        "sharedupload": "Ieu koropak téh ti $1 nu bisa jadi dipaké ku proyék-proyék lianna.",
        "sharedupload-desc-here": "Ieu berkas asalna ti $1 anu bisa jadi dipaké ku proyék séjén. \nPedaran ti [$2 kaca pedaranana] dipidangkeun di handap.",
+       "filepage-nofile": "Taya berkas nu ngaranna kieu.",
        "uploadnewversion-linktext": "ngamuatkeun vérsi anyar koropak ieu",
        "shared-repo-from": "ti $1",
        "upload-disallowed-here": "Anjeun teu bisa nimpah ieu berkas.",
        "filedelete-reason-dropdown": "*Alesan nu ilahar\n** Ngarumpak hak cipta\n** Koropak geus aya",
        "filedelete-edit-reasonlist": "Alesan ngahapus éditan",
        "filedelete-maintenance-title": "Henteu bisa ngahapus berkas",
-       "mimesearch": "Sungsi MIME",
+       "mimesearch": "Pamaluruhan MIME",
        "mimesearch-summary": "Ieu kaca bisa dipaké nyaring koropak dumasar tipeu MIME-na. Asupan: contenttype/subtype, contona <code>image/jpeg</code>.",
        "mimetype": "Tipeu MIME:",
        "download": "pulut",
        "unwatchedpages": "Kaca nu teu diawaskeun",
        "listredirects": "Daptar alihan",
+       "listduplicatedfiles": "Daptar berkas duplikat.",
        "unusedtemplates": "Citakan nu teu kapaké",
        "unusedtemplatestext": "Ieu kaca ngabéréndélkeun sakabéh kaca dina rohang ngaran {{ns:template}} anu teu diwengku ku kaca séjén.\nSaméméh ngahapus, pariksa heula bisi aya tumbu ka ieu citakan.",
        "unusedtemplateswlh": "tutumbu lianna",
        "randompage": "Kaca acak",
        "randompage-nopages": "Euweuh kaca dina ieu spasi ngaran \"$1\".",
        "randomincategory-category": "Kategori:",
+       "randomincategory-legend": "Kaca acak dina kategori",
+       "randomincategory-submit": "Jung",
        "randomredirect": "Alihan acak",
        "randomredirect-nopages": "Euweuh alihan dina ieu spasi ngaran \"$1\".",
        "statistics": "Statistik",
        "statistics-users": "[[Special:ListUsers|Kontributor]] kadaptar",
        "statistics-users-active": "Pamaké getol",
        "statistics-users-active-desc": "Kontributor nu ngoprék salila {{PLURAL:$1|poé|$1 poé}} panungtung",
+       "pageswithprop": "Kaca ku kaca properti",
+       "pageswithprop-prop": "Ngarab properti:",
        "pageswithprop-submit": "Jung",
        "doubleredirects": "Alihan ganda",
        "doubleredirectstext": "Ieu kaca ngabéréndélkeun kaca-kaca alihan ka kaca alihan lianna. Unggal baris ngandung tutumbu ka alihan kahiji jeung kadua, ogé tujul alihan kadua anu biasana tujul kaca anu \"bener\", anu sakuduna dituju ku alihan kahiji. Ëntri nu <del>dicorét</del> geus diropéa.",
        "unusedimages": "Berkas nu teu kaparaké",
        "wantedcategories": "Kategori nu dipikabutuh",
        "wantedpages": "Kaca nu dipikabutuh",
+       "wantedpages-badtitle": "Judul teu sah dina kumpulan hasil: $1",
        "wantedfiles": "Berkas nu dipikabutuh",
        "wantedtemplates": "Citakan nu dipikabutuh",
        "mostlinked": "Nu panglobana numbu ka kaca séjén",
        "mostimages": "Berkas anu panglobana ditumbukeun",
        "mostrevisions": "Artikel nu pangmindengna dirévisi",
        "prefixindex": "Kabeh kaca maké awalan",
+       "prefixindex-submit": "Témbongkeun",
        "shortpages": "Kaca-kaca parondok",
        "longpages": "Kaca-kaca paranjang",
        "deadendpages": "Kaca buntu",
        "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",
+       "protectedpages-noredirect": "Sumputkeun pangalihan",
        "protectedpagesempty": "Dina danget ieu, teu aya kaca nu dikonci dumasar kana ieu paraméter.",
        "protectedpages-timestamp": "Cap titimangsa",
        "protectedpages-page": "Kaca",
        "protectedpages-expiry": "Kadaluwarsa",
+       "protectedpages-performer": "Nangtayungan pamaké",
        "protectedpages-params": "Paraméter protéksi",
        "protectedpages-reason": "Alesan",
+       "protectedpages-submit": "Kaca pidangan",
        "protectedpages-unknown-timestamp": "Teu kanyahoan",
        "protectedpages-unknown-performer": "Pamaké henteu dipikawanoh",
        "protectedtitles": "Judul nu dikonci",
        "protectedtitlesempty": "Dina danget ieu, euweuh judul nu keur dikonci tina paraméter-paraméter éta.",
+       "protectedtitles-submit": "Judul pidangan",
        "listusers": "Daptar pamaké",
        "listusers-editsonly": "Témbongkeun ukur kontributor anu ngédit",
        "listusers-creationsort": "Éntépkeun dumasar titimangsa dijieun",
+       "listusers-desc": "Runtuykeun mudun",
        "usereditcount": "$1 {{PLURAL:$1|édit|édit}}",
        "usercreated": "{{GENDER:$3|Dijieun}} ping $1 tabuh $2",
        "newpages": "Kaca anyar",
+       "newpages-submit": "Témbongkeun",
        "newpages-username": "Sandiasma:",
        "ancientpages": "Kaca pangheubeulna",
        "move": "Pindahkeun",
        "nopagetext": "Kaca anu Anjeun maksud henteu kapanggih.",
        "pager-newer-n": "{{PLURAL:$1|leuwih anyar 1|leuwih anyar $1}}",
        "pager-older-n": "{{PLURAL:$1|leuwih heubeul 1|leuwih heubeul $1}}",
-       "suppress": "Oversight",
+       "suppress": "Neueul",
        "querypage-disabled": "Ieu kaca husus ditumpurkeun ku alesan kinerja.",
+       "apihelp": "Pitulung API",
+       "apihelp-no-such-module": "Modul \"$1\" teu kapanggih.",
+       "apisandbox": "Kotrétan API",
+       "apisandbox-fullscreen": "Mekarkeun panél",
+       "apisandbox-unfullscreen": "Témbongkeun kaca",
+       "apisandbox-submit": "Jieun pundutan",
+       "apisandbox-reset": "Bersihan",
+       "apisandbox-retry": "Cobaan deui",
+       "apisandbox-loading": "Muatkeun info pikeun modul API \"$1\"...",
+       "apisandbox-helpurls": "Tutumbu pitulung",
+       "apisandbox-examples": "Conto",
+       "apisandbox-dynamic-parameters-add-label": "Tambah paraméter:",
+       "apisandbox-dynamic-parameters-add-placeholder": "Ngaran paraméter",
+       "apisandbox-deprecated-parameters": "Paraméter basi",
+       "apisandbox-fetch-token": "Eusi token kalayan otomatis",
+       "apisandbox-submit-invalid-fields-title": "Sawatara kolom teu sah",
+       "apisandbox-results": "Hasil",
+       "apisandbox-sending-request": "Ngirim pundutan API...",
+       "apisandbox-loading-results": "Nampa hasil API...",
+       "apisandbox-request-selectformat-label": "Témbongkeun pundutan data minangka:",
+       "apisandbox-request-url-label": "URL pundutan:",
+       "apisandbox-request-json-label": "Pundut JSON:",
+       "apisandbox-continue": "Tuluykeun",
+       "apisandbox-continue-clear": "Bersihan",
+       "apisandbox-multivalue-all-values": "$1 (Kabéh ajén)",
        "booksources": "Sumber pustaka",
-       "booksources-search-legend": "Sungsi sumber buku",
+       "booksources-search-legend": "Paluruh sumber buku",
        "booksources-search": "Paluruh",
        "booksources-text": "Di handap ieu ngabéréndélkeun tutumbu ka loka-loka nu ngical buku, boh nu anyar atawa loakan, nu sugan uninga kana buku anu nuju dipilari:",
        "booksources-invalid-isbn": "Sigana ISBN-na teu bener; pariksa deui bisi aya salah téplak ti sumber aslina.",
-       "specialloguserlabel": "Pamaké:",
-       "speciallogtitlelabel": "Sasaran (judul atawa pamaké):",
+       "specialloguserlabel": "Palaku:",
+       "speciallogtitlelabel": "Sasaran (judul atawa {{ns:user}}:sandiasma pikeun pamaké):",
        "log": "Log",
+       "logeventslist-submit": "Témbongkeun",
        "all-logs-page": "Sakabéh log umum",
        "alllogstext": "Béréndélan sakabéh log nu aya di {{SITENAME}}.\nBisa dipondokkeun ku cara milih tipe log, ngaran pamaké, atawa kaca nu dimaksud.",
        "logempty": "Taya item nu cocog dina log.",
        "log-title-wildcard": "Téangan judul nu dimimitian ku tulisan ieu",
+       "checkbox-select": "Pilih: $1",
+       "checkbox-all": "Sakumna",
+       "checkbox-none": "Kosong",
+       "checkbox-invert": "Balikkeun",
        "allpages": "Sadaya kaca",
        "nextpage": "Kaca salajengna ($1)",
        "prevpage": "Kaca saméméhna ($1)",
        "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.",
        "allpages-bad-ns": "{{SITENAME}} teu boga spasi ngaran \"$1\".",
+       "allpages-hide-redirects": "Sumputkeun pangalihan",
+       "cachedspecial-refresh-now": "Tempo nu panganyarna.",
        "categories": "Kategori",
+       "categories-submit": "Témbongkeun",
        "categoriespagetext": "{{PLURAL:$1|Kategori|Kategori}} ngandung kaca atawa média.\n[[Special:UnusedCategories|Kategori nu teu kapaké]] henteu ditémbongkeun di dieu.\nBaca ogé [[Special:WantedCategories|kategori nu dipikabutuh]].",
        "categoriesfrom": "Tembongkeun kategori-kategori dimimitian ku:",
        "deletedcontributions": "Kontribusi nu dihapus",
        "deletedcontributions-title": "Kontribusi nu dihapus",
        "sp-deletedcontributions-contribs": "kontribusi",
-       "linksearch": "Tumbu kaluar",
-       "linksearch-pat": "Pola sungsi:",
+       "linksearch": "Pamaluruhan tutumbu luar",
+       "linksearch-pat": "Pola pamaluruhan:",
        "linksearch-ns": "Spasi ngaran:",
-       "linksearch-ok": "Sungsi",
+       "linksearch-ok": "Paluruh",
        "linksearch-text": "''Wildcard'' sarupaning \"*.wikipedia.org\" bisa dipaké.<br />Protokol nu dirojong: $1",
        "linksearch-line": "$1 ditumbu ti $2",
        "linksearch-error": "''Wildcard'' ngan bisa némbongan dina awal ngaran indung (''host'').",
        "listgrouprights-removegroup-self": "Piceun {{PLURAL:$2|grup|grups}} ti akun sorangan: $1",
        "listgrouprights-addgroup-self-all": "Tambahkeun sakabéh grup ka akun sorangan",
        "listgrouprights-removegroup-self-all": "Piceun sakabéh grup ti akun sorangan",
+       "listgrants": "Idin",
+       "listgrants-grant": "Idin",
+       "listgrants-rights": "Hak",
+       "trackingcategories": "Kategori palacak",
+       "trackingcategories-msg": "Kategori palacak",
+       "trackingcategories-name": "Ngaran talatah",
+       "trackingcategories-desc": "Kritéria inklusi kategori",
+       "trackingcategories-nodesc": "Taya pedaran nu sayaga",
+       "trackingcategories-disabled": "Kategori dipareuman",
        "mailnologin": "Euweuh alamat ngirim",
        "mailnologintext": "Anjeun kudu '''[[Special:UserLogin|asup log]]''' sarta boga alamat surélék nu sah na [[Special:Preferences|préferénsi]] anjeun sangkan bisa nyurélékan pamaké séjén.",
        "emailuser": "Surélékan pamaké ieu",
+       "emailuser-title-target": "Kirim surélék ka ieu {{GENDER:$1|pamaké}}",
+       "emailuser-title-notarget": "Surélék pamaké",
        "emailpagetext": "Anjeun bisa maké formulir di handap pikeun ngirim surélék ka ieu pamaké.\nAlamat surélék nu diasupkeun kana [[Special:Preferences|préferénsi pamaké anjeun]] bakal katémbong salaku alamat \"Ti\" dina surélékna, sahingga nu dituju bisa males langsung.",
        "defemailsubject": "Surélék {{SITENAME}} ti pamaké \"$1\"",
        "usermaildisabled": "Surélék kontributor ditumpurkeun",
        "emailsenttext": "Surélék anjeun geus dikirim.",
        "emailuserfooter": "Ieu surélék dikirim ku $1 ka $2 migunakeun fungsi \"Surélékan pamaké ieu\" di {{SITENAME}}.",
        "usermessage-summary": "Ninggalkeun talatah sistem.",
+       "usermessage-editor": "Talatah sistim",
        "watchlist": "Awaskeuneun",
        "mywatchlist": "Awaskeuneun",
        "watchlistfor2": "Pikeun $1 $2",
        "nowatchlist": "Anjeun teu boga awaskeuneun.",
        "watchlistanontext": "Mangga asup log pikeun nempo atawa ngarobah béréndélan awaskeuneun anjeun.",
        "watchnologin": "Can asup log",
+       "addwatch": "Tambahkeun ka aawaseun",
        "addedwatchtext": "Kaca \"[[:$1]]\" geus ditambahkeun ka [[Special:Watchlist|awaskeuneun]] anjeun.\nJaga, parobahan na kaca ieu katut kaca obrolanana bakal dibéréndélkeun di dinya, sarta kacana bakal katémbong '''dikandelan''' dina kaca [[Special:RecentChanges|Nu anyar robah]] sangkan leuwih gampang ngawaskeunana.\n\n<p>Mun jaga anjeun moal deui ngawaskeun parobahan na kaca éta, klik tumbu \"Eureun ngawaskeun\" na lajursisi.",
        "removewatch": "Piceun tina béréndélan awaskeuneun",
        "removedwatchtext": "Kaca \"[[:$1]]\" geus dikaluarkeun tina [[Special:Watchlist|daptar awaskeuneun]] anjeun.",
        "wlheader-showupdated": "Kaca nu robah ti panungtungan anjeun sindang ditémbongkeun kalawan '''kandel'''",
        "wlnote": "Di handap ieu mangrupa $1 {{PLURAL:$1|robahan|robahan}} ahir salila '''$2''' jam.",
        "wlshowlast": "Témbongkeun $1 jam $2 poé  ahir",
+       "watchlist-hide": "Sumputkeun",
+       "watchlist-submit": "Témbongkeun",
+       "wlshowtime": "Periodeu waktu ajang dipidangkeun:",
+       "wlshowhideminor": "éditan minor",
+       "wlshowhidebots": "bot",
+       "wlshowhideliu": "pamaké kadaptar",
+       "wlshowhideanons": "pamaké anonim",
+       "wlshowhidepatr": "éditan karoris",
+       "wlshowhidemine": "éditan kuring",
        "wlshowhidecategorization": "kategorisasi kaca",
        "watchlist-options": "Pilihan awaskeuneun",
        "watching": "Ngawaskeun...",
        "enotif_reset": "Tandaan sadaya kaca nu geus dilongok",
        "enotif_impersonal_salutation": "Pamaké {{SITENAME}}",
        "enotif_subject_deleted": "Kaca {{SITENAME}} $1 geus {{GENDER:$2|dihapus}} ku $2",
-       "enotif_lastvisited": "Tempo $1 pikeun sadaya parobahan ti saprak anjeun ninggalkeun ieu kaca.",
-       "enotif_lastdiff": "Buka $1 pikeun nempo ieu parobahan.",
+       "enotif_lastvisited": "Pikeun sakumna parobahan ti saprak jebulan panungtung, tempo $1",
+       "enotif_lastdiff": "Pikeun nempo parobahan, ilikan $1",
        "enotif_anon_editor": "pamaké anonim $1",
        "enotif_body": "Sadérék $WATCHINGUSERNAME,\n\nKaca $PAGETITLE na {{SITENAME}} geus $CHANGEDORCREATED tanggal $PAGEEDITDATE ku $PAGEEDITOR. Mangga tingal {{SERVER}}{{localurl:$PAGETITLE}} pikeun vérsi kiwari.\n\n$NEWPAGE\n\nRingkesan éditor: $PAGESUMMARY $PAGEMINOREDIT\n\nKontak éditor:\nsurat {{SERVER}}{{localurl:Husus:Emailuser|target=$PAGEEDITOR}}\nwiki {{SERVER}}{{localurl:Pamaké:$PAGEEDITOR}}\n\nMun anjeun teu sindang deui ka ieu kaca, parobahan salajengna moal diémbarkeun. Anjeun bisa ogé nyetél deui umbul-umbul pikeun sadaya kaca nu aya na daptar awaseun anjeun.\n\n             Sistim émbaran {{SITENAME}} pikeun anjeun\n\n--\nPikeun ngarobah setélan dabtar awaseun anjeun, sindang ka {{SERVER}}{{localurl:Husus:Watchlist|edit=yes}}\n\nAsupan jeung bantuan salajengna:\n$HELPPAGE",
        "created": "geus dijieun",
        "delete-confirm": "Hapus \"$1\"",
        "delete-legend": "Hapus",
        "historywarning": "'''Awas:''' kaca nu rék dihapus mibanda jujutan kira $1  {{PLURAL:$1|révisi|révisi}}:",
+       "historyaction-submit": "Témbongkeun",
        "confirmdeletetext": "Anjeun rék ngahapus hiji kaca atawa gambar katut jujutanana tina pangkalan data, mangga yakinkeun yén anjeun mémang niat midamel ieu, yén anjeun ngartos kana sagala konsékuénsina, sarta yén anjeun ngalakukeun ieu saluyu jeung [[{{MediaWiki:Policy-url}}|kawijakan {{SITENAME}}]].",
        "actioncomplete": "Tarékah geus hasil",
        "actionfailed": "Tarékah gagal",
        "rollbacklink": "balikkeun",
        "rollbacklinkcount": "balikkeun $1 {{PLURAL:$1|éditan}}",
        "rollbackfailed": "Gagal malikkeun",
+       "rollback-missingrevision": "Teu bisa muatkeun révisi data.",
        "cantrollback": "Éditan teu bisa dibalikkeun; kontribusi panungtung ngarupakeun hiji-hijina panulis kaca ieu.",
        "alreadyrolled": "Teu bisa mulangkeun édit ahir [[$1]] ku [[User:$2|$2]] ([[User talk:$2|Obrolan]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); geus aya nu ngédit atawa mulangkeun kacana.\n\nÉdit ahir ku [[User:$3|$3]] ([[User talk:$3|Obrolan]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Komentar ngéditna: <em>$1</em>.",
        "revertpage": "Malikkeun éditan $2, diganti deui ka vérsi ahir ku $1",
        "rollback-success": "Mulangkeun éditan $1; balik deui ka vérsi panungtung ku $2.",
+       "sessionfailure-title": "Kagagalan sési",
        "sessionfailure": "Sigana aya masalah jeung termin log anjeun; peta ieu geus dibolaykeun salaku pépéling pikeun ngalawan ayana pangbajak. Mangga pencét \"back\" jeung muat ulang ti kaca asal anjeun, lajeng cobaan deui.",
+       "changecontentmodel-legend": "Robah modél kontén",
+       "changecontentmodel-title-label": "Judul kaca",
+       "changecontentmodel-model-label": "Modél kontén anyar",
+       "changecontentmodel-reason-label": "Alesan:",
+       "changecontentmodel-submit": "Parobahan",
+       "changecontentmodel-success-title": "Modél ieu kontén geus dirobah",
+       "changecontentmodel-emptymodels-title": "Taya modél kontén nu sayaga",
+       "log-name-contentmodel": "Log parobahan modél kontén",
+       "logentry-contentmodel-change-revertlink": "balikkeun",
+       "logentry-contentmodel-change-revert": "balikkeun",
        "protectlogpage": "Log_koncian",
        "protectlogtext": "Di handap ieu mangrupa daptar koncian kaca. Tempo [[Special:ProtectedPages|kaca nu dikonci]] pikeun iber leuwih lengkep.",
        "protectedarticle": "ngonci $1",
        "modifiedarticleprotection": "hambalan koncian \"[[$1]]\" geus dirobah",
-       "unprotectedarticle": "muka konci $1",
+       "unprotectedarticle": "muka konci tina \"[[$1]]\"",
+       "protectedarticle-comment": "{{GENDER:$2|Nangtayungan}} \"[[$1]]\"",
        "protect-title": "Ngonci \"$1\"",
        "prot_1movedto2": "mindahkeun [[$1]] ka [[$2]]",
+       "protect-norestrictiontypes-title": "Kaca nu teu karaksa",
        "protect-legend": "Konfirmasi ngonci",
        "protectcomment": "Alesan:",
        "protectexpiry": "Kadaluwarsa",
        "protect-locked-access": "Akun anjeun teu wenang ngarobah hambalan pangonci kaca.\nSetélan kiwari pikeun kaca <strong>$1</strong>:",
        "protect-cascadeon": "Ieu kaca dikonci sabab kaasup {{PLURAL:$1|kaca nu|kaca-kaca nu}} ngajalankeun pangonci ngaruntuy. Anjeun bisa ngarobah hambalan koncian ieu kaca, tapi ieu moal mangaruhan pangonci ngaruntuyna.",
        "protect-default": "Bisa ku sakabeh pamaké",
-       "protect-fallback": "Kudu aya kawenangan \"$1\"",
+       "protect-fallback": "Ngan pikeun pamaké kalawan idin \"$1\"",
        "protect-level-autoconfirmed": "Peungpeuk pamaké anyar jeung nu teu daptar",
        "protect-level-sysop": "Ngan bisa ku kuncén",
        "protect-summary-cascade": "ngaruntuykeun",
        "undeletepagetitle": "'''Béréndélan révisi [[:$1]]''' anu dihapus.",
        "viewdeletedpage": "Témbongkeun kaca nu dihapus",
        "undeletepagetext": "{{PLURAL:$1|Kaca di handap ieu|Aya $1 kaca}}  geus dihapus tapi masih kénéh aya na arsip sarta bisa disimpen deui. Arsip aya kalana dibersihan.",
-       "undeleterevisions": "$1 {{PLURAL:$1|révisi|révisi}} diarsipkeun",
+       "undelete-fieldset-title": "Malikkeun révisi",
+       "undeleterevisions": "$1 {{PLURAL:$1|révisi}} dipupus",
        "undeletehistory": "Mun anjeun nyimpen deui kacana, sadaya révisi bakal disimpen deui dina jujutan.\nMun aya kaca anyar nu ngaranna sarua dijieun deui satutasna dihapus, révisi nu disimpen tadi bakal némbongan salaku jujutan nu ti heula, sarta révisi kiwari kaca nu hirup moal otomatis kaganti.",
        "undeletehistorynoadmin": "Artikel ieu geus dihapus.\nAlesanana bisa dibaca dina katrangan di handap, katut saha waé nu geus ngédit ieu artikel saméméh dihapus.\nTéks aktual révisi nu geus dihapus ieu ngan bisa dibuka ku kuncén.",
        "undelete-revision": "Révisi nu dihapus ti $1 (dina $5, $4) ku $3:",
        "undeletebtn": "Simpen deui!",
        "undeletelink": "tempo/pulangkeun",
        "undeleteviewlink": "tempo",
+       "undeleteinvert": "Balikkeun pilihan",
        "undeletecomment": "Alesan:",
        "cannotundelete": "Gagal ngabolaykeun hapusan; sigana kapiheulaan ngabolaykeun hapusan ku nu séjén.",
        "undeletedpage": "'''$1 hasil dibalikeun'''\n\nTempo [[Special:Log/delete|log hapusan]] keur data ngahapus jeung malikeun.",
        "undelete-header": "Tempo [[Special:Log/delete|log hapusan]] pikeun béréndélan kaca nu anyar dihapus.",
+       "undelete-search-title": "Paluruh kaca kahapus",
        "undelete-search-box": "Téang kaca nu dihapus",
        "undelete-search-prefix": "Témbongkeun kaca dimimitian ku",
        "undelete-search-submit": "Téang",
        "undelete-bad-store-key": "Hanteu bisa ngabolaykeun hapusan révisi berkas titimangsa $1: Berkas leungit méméh dihapus.",
        "undelete-cleanup-error": "Éror ngahapus berkas arsip \"$1\" anu teu kapaké.",
        "undelete-missing-filearchive": "Hanteu bisa mulangkeun arsip berkas ID $1 kusabab teu kapanggih dina pangkalan data. Bisa jadi éta koropak bolay dihapus.",
+       "undelete-error": "Kasalahan malikkeun kaca",
        "undelete-error-short": "Éror ngabolaykeun hapusan: $1",
        "undelete-error-long": "Aya éror nalika ngabolaykeun hapusan:\n\n$1",
        "undelete-show-file-submit": "Enya",
        "sp-contributions-search": "Paluruh kontribusi",
        "sp-contributions-username": "Alamat IP atawa sandiasma:",
        "sp-contributions-toponly": "Témbongkeun éditan anu révisi panungtung wungkul",
+       "sp-contributions-newonly": "Témbongkeun ukur éditan anu mangrupa kaca anyar",
+       "sp-contributions-hideminor": "Sumputkeun éditan minor",
        "sp-contributions-submit": "Paluruh",
        "whatlinkshere": "Anu nutumbu ka dieu",
        "whatlinkshere-title": "Kaca anu nutumbu ka \"$1\"",
        "whatlinkshere-hidelinks": "$1 tutumbu",
        "whatlinkshere-hideimages": "$1 tutumbu berkas",
        "whatlinkshere-filters": "Saringan",
+       "whatlinkshere-submit": "Jung",
+       "autoblockid": "Otomatis peungpeuk #$1",
        "block": "Peungpeuk kontributor",
        "unblock": "Buka peungpeuk kontributor",
-       "blockip": "Peungpeuk pamaké",
+       "blockip": "Peungpeuk {{GENDER:$1|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).",
        "ipaddressorusername": "Alamat IP atawa sandiasma:",
        "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",
        "ipbhidename": "Sumputkeun ngaran pamaké tina éditan jeung daptar pamaké",
        "ipbwatchuser": "Awaskeun kaca pamaké jeung kaca obrolan pamaké ieu",
+       "ipb-confirm": "Konfirmasi peungpeuk",
        "badipaddress": "Alamat IP teu sah",
        "blockipsuccesssub": "Meungpeuk geus hasil",
        "blockipsuccesstext": "\"$1\" dipeungpeuk.\n<br />Tempo [[Special:BlockList|daptar peungpeuk IP]] pikeun nempoan deui peungpeuk.",
        "ipb-unblock": "Nyabut peungpeuk pamaké atawa alamat IP",
        "ipb-blocklist": "Tempo peungpeuk nu diteurapkeun",
        "ipb-blocklist-contribs": "Ilubiung $1",
+       "ipb-blocklist-duration-left": "Nyésa $1",
        "unblockip": "Buka peungpeuk pamaké",
        "unblockiptext": "Paké formulir di handap pikeun mulangkeun aksés nulis ka alamat IP atawa ngaran pamaké nu saméméhna dipeungpeuk.",
        "ipusubmit": "Buka peungpeuk pikeun pamaké ieu",
        "unblocked-range": "$1 geus teu dipeungpeuk",
        "unblocked-id": "peungpeuk $1 geus dicabut",
        "blocklist": "Kontributor nu dipeungpeuk",
+       "autoblocklist": "Otomatis peungpeuk",
+       "autoblocklist-submit": "Paluruh",
+       "autoblocklist-legend": "Daptar otomatis peungpeuk",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Otomatis peungpeuk}} lokal",
        "ipblocklist": "Pamaké nu dipeungpeuk",
        "ipblocklist-legend": "Téang pamaké nu dipeungpeuk",
+       "blocklist-userblocks": "Sumputkeun peungpeukan akun",
+       "blocklist-tempblocks": "Sumputkeun peungpeukan saheulaanan",
        "blocklist-timestamp": "Cap titimangsa",
+       "blocklist-target": "Udagan",
+       "blocklist-expiry": "Kadaluwarsa",
        "blocklist-by": "Kuncén nu meungpeuk",
+       "blocklist-params": "Paraméter peungpeukan",
        "blocklist-reason": "Alesan",
        "ipblocklist-submit": "Téang",
        "ipblocklist-localblock": "Blok lokal",
+       "ipblocklist-otherblocks": "{{PLURAL:$1|Peungpeukan}} lian",
        "infiniteblock": "tanpa wates",
        "expiringblock": "kadaluwarsa $1 jam $2",
        "anononlyblock": "ngan nu teu daptar",
        "unlockdbsuccesssub": "Konci pangkalan data geus dibuka",
        "lockdbsuccesstext": "pangkalan data dikonci.\n<br />Ulah poho muka konci mun geus bérés diropéa.",
        "unlockdbsuccesstext": "pangkalan data geus teu dikonci.",
+       "databaselocked": "Basis data geus kakonci.",
        "databasenotlocked": "Gudang data teu kakonci.",
        "move-page": "Pindahkeun $1",
        "move-page-legend": "Pindahkeun kaca",
        "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.",
-       "newtitle": "Ka judul anyar",
+       "newtitle": "Judul anyar:",
        "move-watch": "Awaskeuneun kaca ieu",
        "movepagebtn": "Pindahkeun kaca",
        "pagemovedsub": "Mindahkeun geus hasil!",
        "movepage-moved": "'''\"$1\" geus dipindahkeun ka \"$2\"'''",
+       "movepage-moved-redirect": "Alihan geus dijieunkeun.",
        "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",
        "movetalk": "Mun bisa, kaca \"obrolan\" ogé pindahkeun.",
        "imagetypemismatch": "Éksténsi berkas anyar teu cocog jeung tipena",
        "imageinvalidfilename": "Ngaran berkas tujuan teu sah",
        "fix-double-redirects": "Hadéan sakabéh alihan ganda nu mungkin kajadian",
+       "move-leave-redirect": "Tinggalkeun alihan di tukang",
        "protectedpagemovewarning": "'''Awas:''' ieu kaca geus dikonci sarta ngan bisa dipindahkeun ku pamaké nu boga kawenangan kuncén.\nPikeun rujukan, éntri log panungtung dipidangkeun di handap:",
        "semiprotectedpagemovewarning": "'''Awas:''' ieu kaca geus dikonci sarta ukur bisa dipindahkeun ku pamaké nu geus asup log.\nPikeun rujukan, éntri log panungtung dipidangkeun di handap:",
        "export": "Ékspor kaca",
        "exporttext": "Anjeun bisa ngékspor téks sarta jujutan éditan ti kaca tinangtu atawa ti sababaraha kaca nu ngagunduk na sababaraha XML; ieu salajengna tiasa diimpor ka wiki séjén nu ngajalankeun software MediaWiki, ditransformasikeun, atawa ukur disimpen pikeun kaperluan anjeun pribadi.",
+       "exportall": "Ékspor sakumna kaca",
        "exportcuronly": "Asupkeun ukur révisi kiwari, teu sakabéh jujutan",
        "exportnohistory": "----\n'''Catetan:''' Ngékspor sakabéh jujutan éditan kaca ngaliwatan form ieu geus henteu diaktifkeun alatan alesan performance.",
        "export-submit": "Ékspor",
        "export-addns": "Tambahkeun",
        "export-download": "Simpen salaku berkas",
        "export-templates": "Kaasup citakan",
+       "export-manual": "Tambahkeun kaca manual:",
        "allmessages": "Talatah sistim",
        "allmessagesname": "Ngaran",
        "allmessagesdefault": "Téks ti dituna",
        "allmessagestext": "Ieu mangrupa daptar talatah sistim nu aya na spasi ngaran MediaWiki:.",
        "allmessagesnotsupportedDB": "Kaca ieu teu dirojong sabab '''$wgUseDatabaseMessages''' pareum.",
        "allmessages-filter-legend": "Ayakan",
+       "allmessages-filter-unmodified": "Teu diropéa",
        "allmessages-filter-all": "Kabéh",
+       "allmessages-filter-modified": "Diropéa",
        "allmessages-prefix": "Saring dumasar awalan:",
        "allmessages-language": "Basa:",
        "allmessages-filter-submit": "Jung",
+       "allmessages-filter-translate": "Tarjamahkeun",
        "thumbnail-more": "Gedéan",
        "filemissing": "Berkas leungit",
        "thumbnail_error": "Kasalahan sawaktu nyieun gambar leutik (thumbnail): $1",
        "xml-error-string": "$1 dina baris $2, kolom $3 (bit $4): $5",
        "import-upload": "Ngamuat data XML",
        "import-invalid-interwiki": "Teu bisa ngimpor ti wiki nu dipilih.",
+       "import-rootpage-invalid": "Kaca turunan nu dibikeun judulna salah.",
        "importlogpage": "Log impor",
        "importlogpagetext": "Impor administratif kaca-kaca ti wiki séjén katut jujutanana.",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|vérsi heubeul}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|vérsi heubel}} ti $2",
        "javascripttest": "Nguji JavaScript",
+       "javascripttest-pagetext-unknownaction": "Tarékah \"$1\" teu dipikanyaho.",
        "tooltip-pt-userpage": "Kaca {{GENDER:|pamaké anjeun}}",
        "tooltip-pt-anonuserpage": "Kaca pamaké pikeun IP nu ku anjeun keur diédit",
        "tooltip-pt-mytalk": "Kaca obrolan {{GENDER:|anjeun}}",
        "tooltip-pt-watchlist": "Daptar kaca nu diawaskeun ku anjeun parobahanana.",
        "tooltip-pt-mycontris": "Béréndélan kontribusi {{GENDER:|anjeun}}",
        "tooltip-pt-login": "Leuwih hadé asup log, sok sanajan teu wajib",
+       "tooltip-pt-login-private": "Anjeun perlu asup log pikeun migunakeun ieu wiki",
        "tooltip-pt-logout": "Kaluar log",
        "tooltip-pt-createaccount": "Najan henteu kudu, Anjeun leuwih hadé nyieun akun sarta asup log",
        "tooltip-ca-talk": "Sawala ngeunaan eusi kaca",
        "tooltip-ca-viewsource": "Kaca ieu dikonci, tapi anjeun masih bisa muka sumberna.",
        "tooltip-ca-history": "Vérsi heubeul ieu kaca",
        "tooltip-ca-protect": "Konci kaca ieu",
+       "tooltip-ca-unprotect": "Robah protéksi ieu kaca",
        "tooltip-ca-delete": "Hapus kaca ieu",
        "tooltip-ca-undelete": "Simpen deui éditan kaca ieu nu geus dijieun saméméh dihapus",
        "tooltip-ca-move": "Pindahkeun kaca ieu",
        "tooltip-feed-rss": "Asupan RSS pikeun kaca ieu",
        "tooltip-feed-atom": "Asupan atom pikeun kaca ieu",
        "tooltip-t-contributions": "Béréndélan kontribusi ti {{GENDER:$1|ieu pamaké}}",
-       "tooltip-t-emailuser": "Kirim surélék ka ieu kontributor",
+       "tooltip-t-emailuser": "Kirim surélék ka {{GENDER:$1|ieu kontributor}}",
        "tooltip-t-upload": "Unjal berkas",
        "tooltip-t-specialpages": "Daptar sadaya kaca husus",
        "tooltip-t-print": "Vérsi citakeun ieu kaca",
        "tooltip-ca-nstab-category": "Témbongkeun kaca kategori",
        "tooltip-minoredit": "Tandaan ieu salaku éditan minor",
        "tooltip-save": "Simpen parobahan anjeun",
+       "tooltip-publish": "Pedalkeun parobahan anjeun",
        "tooltip-preview": "Tempo parobahanana, lamun geus bener pék simpen!",
        "tooltip-diff": "Témbongkeun parobahan mana nu geus dijieun.",
        "tooltip-compareselectedversions": "Tempo béda antara dua vérsi kaca ieu nu dipilih.",
        "tooltip-watch": "Tambahkeun kaca ieu kana awaskeuneun kuring",
+       "tooltip-watchlistedit-normal-submit": "Pupus judul",
+       "tooltip-watchlistedit-raw-submit": "Anyarkeun aawaseun",
        "tooltip-upload": "Prung unjalkeun",
        "tooltip-rollback": "Mulangkeun éditan ka panulis panungtung dina sakali klik",
        "tooltip-undo": "\"Bolay\" malikkeun ieu éditan sarta muka kotak édit dina modeu pramidang.\nCara kieu bisa nambahkeun alesan dina ringkesanana.",
        "common.js": "/* JavaScript nu aya didieu di angé ku kabeh ''skin'' */",
        "anonymous": "{{PLURAL:$1|Pamaké|Pamaké-pamaké}} anonim di {{SITENAME}}",
        "siteuser": "Pamaké $1 {{SITENAME}}",
-       "lastmodifiedatby": "Kaca ieu panungtungan dirobah $2, $1 ku $3.",
+       "anonuser": "Pamaké anonim {{SITENAME}} $1",
+       "lastmodifiedatby": "Kaca ieu panungtungan diédit $2, $1 ku $3.",
        "othercontribs": "Dumasar karya $1.",
        "others": "Séjénna",
        "siteusers": "{{PLURAL:$2|Pamaké|Pamaké-pamaké}} {{SITENAME}} $1",
        "pageinfo-header-basic": "Émbaran dasar",
        "pageinfo-header-edits": "Jujutan édit",
        "pageinfo-header-restrictions": "Protéksi kaca",
-       "pageinfo-watchers": "Jumlah nu ngawaskeun",
+       "pageinfo-header-properties": "Properti kaca",
+       "pageinfo-display-title": "Judul pidangan",
+       "pageinfo-length": "Panjang kaca (dina bit)",
+       "pageinfo-article-id": "ID kaca",
+       "pageinfo-language": "Basa eusi kaca",
+       "pageinfo-language-change": "robah",
+       "pageinfo-content-model": "Modél kontén kaca",
+       "pageinfo-content-model-change": "robah",
+       "pageinfo-robot-policy": "Pangindékan ku robot",
+       "pageinfo-robot-index": "Digaékeun",
+       "pageinfo-robot-noindex": "Dicaram",
+       "pageinfo-watchers": "Jumlah paroris kaca",
+       "pageinfo-few-watchers": "Kurang ti $1 {{PLURAL:$1|pangawas}}",
+       "pageinfo-redirects-name": "Jumlah pindahan ka ieu kaca",
+       "pageinfo-firstuser": "Panyieun kaca",
+       "pageinfo-lastuser": "Pangédit panungtung",
        "pageinfo-edits": "Jumlah éditan",
        "pageinfo-authors": "Jumlah kontributor nu béda",
        "pageinfo-toolboxlink": "Émbaran kaca",
+       "pageinfo-redirectsto": "Alihkeun ka",
+       "pageinfo-redirectsto-info": "info",
+       "pageinfo-contentpage": "Diitung salaku kaca eusi",
        "pageinfo-contentpage-yes": "Enya",
        "pageinfo-protect-cascading-yes": "Enya",
+       "pageinfo-category-info": "Info kategori",
+       "pageinfo-category-total": "Jumlah anggahota",
+       "pageinfo-category-pages": "Jumlah kaca",
+       "pageinfo-category-subcats": "Jumlah subkategori",
+       "pageinfo-category-files": "Jumlah berkas",
+       "pageinfo-user-id": "ID pamaké",
        "markaspatrolleddiff": "Tandaan salaku geus diriksa",
        "markaspatrolledtext": "Tandaan artikel ieu salaku geus diriksa",
        "markedaspatrolled": "Tandaan salaku geus diriksa",
        "patrol-log-page": "Log patroli",
        "patrol-log-header": "Ieu minangka log pikeun révisi nu geus diroris.",
        "log-show-hide-patrol": "$1 log rorisan",
+       "log-show-hide-tag": "log tag $1",
+       "confirm-markpatrolled-button": "Heug",
        "deletedrevision": "Révisi heubeul nu dihapus $1",
        "filedeleteerror-short": "Éror nalika ngahapus koropak $1",
        "filedeleteerror-long": "Aya kasalahan sawaktu ngahapus koropak:\n\n$1",
        "previousdiff": "← Éditan saméméhna",
        "nextdiff": "Éditan salajengna →",
        "imagemaxsize": "Watesan gambar na kaca dadaran gambar nepi ka:",
+       "thumbsize": "Ukuran miniatur:",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|kaca|kaca}}",
        "file-info": "ukuran koropak: $1, tipeu MIME: $2",
        "file-info-size": "$1 × $2 piksel, ukuran koropak: $3, tipeu MIME: $4",
        "file-info-size-pages": "$1 × $2 pixel, ukuran berkas: $3, tipeu MIME: $4, $5 {{PLURAL:$5|kaca|kaca}}",
        "file-nohires": "Euweuh résolusi nu leuwih luhur.",
        "svg-long-desc": "Koropak SVG, nominalna $1 × $2 piksel, ukuranana $3",
+       "svg-long-desc-animated": "Berkas SVG animasi, biasana $1 x $2 piksel, ukuran gambar: $3",
+       "svg-long-error": "Berkas SVG teu sah: $1",
        "show-big-image": "Berkas asli",
        "show-big-image-preview": "Ukuran ieu pramidang: $1.",
        "show-big-image-other": "{{PLURAL:$2|Resolusi}} lianna: $1.",
        "show-big-image-size": "$1 × $2 pixel",
+       "file-info-gif-looped": "nguriling",
+       "file-info-gif-frames": "$1 {{PLURAL:$1|bingkéy}}",
+       "file-info-png-looped": "kuriling",
+       "file-info-png-repeat": "dipaénkeun $1 {{PLURAL:$1|kali}}",
+       "file-info-png-frames": "$1 {{PLURAL:$1|bingkéy}}",
        "newimages": "Galeri gambar anyar",
        "imagelisttext": "Di handap ieu daptar '''$1''' {{PLURAL:$1|gambar|gambar}} nu disusun $2.",
        "newimages-summary": "Ieu kaca husus ngabéréndélkeun koropak nu alanyar dimuat.",
+       "newimages-legend": "Saringan",
        "newimages-label": "Ngaran berkas (atawa sawaréh tina ngaranna):",
+       "newimages-user": "Alamat IP atawa sandiasma",
        "noimages": "Taya nanaon.",
-       "ilsubmit": "Sungsi",
+       "gallery-slideshow-toggle": "''Toggle'' miniatur",
+       "ilsubmit": "Paluruh",
        "bydate": "dumasar titimangsa",
        "sp-newimages-showfrom": "Témbongkeun gambar anyar ti $2, $1",
+       "seconds": "{{PLURAL:$1|sadetik|$1 detik}}",
+       "minutes": "{{PLURAL:$1|$1 menit}}",
+       "hours": "{{PLURAL:$1|$1 jam}}",
+       "days": "{{PLURAL:$1|$1 poé}}",
+       "weeks": "{{PLURAL:$1|$1 minggu}}",
+       "months": "{{PLURAL:$1|$1 bulan}}",
+       "years": "{{PLURAL:$1|$1 taun}}",
+       "ago": "$1 ka tukang",
+       "just-now": "cik kénéh",
+       "hours-ago": "$1 {{PLURAL:$1|jam}} ka tukang",
+       "minutes-ago": "$1 {{PLURAL:$1|menit}} ka tukang",
+       "seconds-ago": "$1 {{PLURAL:$1|detik}} ka tukang",
+       "monday-at": "Senén jam $1",
+       "tuesday-at": "Salasa jam $1",
+       "wednesday-at": "Rebo jam $1",
+       "thursday-at": "Kemis jam $1",
+       "friday-at": "Jumaah jam $1",
+       "saturday-at": "Saptu jam $1",
        "sunday-at": "Minggu jam $1",
+       "yesterday-at": "Kamari jam $1",
        "bad_image_list": "Formatna kieu:\n\nNgan daptar butiran (baris anu dimimitian ku tanda *) anu diitung. \nTutumbu kahiji dina hiji baris dianggap numbu ka berkas anu goréng. \nTutumbu sanggeusna dina baris anu sarua dianggap bener, nyaéta artikel anu midangkeun éta berkas.",
        "metadata": "Métadata",
        "metadata-help": "Ieu koropak ngandung émbaran tambahan, nu sigana asalna tina kaméra digital atawa paminday nu dipaké pikeun ngadigitalkeunana. Mun ieu koropak geus dirobah tina bentuk aslina, datana bisa jadi teu bener.",
        "metadata-fields": "Widang métadata gambar nu dibéréndélkeun di handap bakal dipidangkeun dina kaca gambar mun tabél métadata disumputkeun.\nNu séjénna bakal disumputkeun sakumaha asalna.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-imagewidth": "Lega",
        "exif-imagelength": "Luhur",
+       "exif-bitspersample": "Bit per komponén",
        "exif-compression": "Skéma komprési",
        "exif-photometricinterpretation": "Komposisi piksel",
        "exif-orientation": "Oriéntasi",
        "exif-fnumber": "Nomer F",
        "exif-exposureprogram": "Program pajanan",
        "exif-spectralsensitivity": "Sénsitivitas spéktral",
-       "exif-brightnessvalue": "Lenglang",
+       "exif-isospeedratings": "Réting gagancangan ISO",
+       "exif-shutterspeedvalue": "Gagancangan rana APEX",
+       "exif-aperturevalue": "Bukaan APEX",
+       "exif-brightnessvalue": "Cacaangan APEX",
        "exif-exposurebiasvalue": "Bias pajanan",
+       "exif-maxaperturevalue": "Bukaan taneuh maksimum",
        "exif-subjectdistance": "Jarak subjék",
+       "exif-meteringmode": "Modeu pangukuran",
        "exif-lightsource": "Sumber cahya",
+       "exif-flash": "Buricak",
        "exif-focallength": "Panjang fokus lénsa",
+       "exif-subjectarea": "Aréa subyék",
+       "exif-flashenergy": "Énérgi burinyay",
        "exif-focalplanexresolution": "Résolusi X datar fokus",
        "exif-focalplaneyresolution": "Résolusi Y datar fokus",
        "exif-focalplaneresolutionunit": "Unit résolusi datar fokus",
        "exif-subjectlocation": "Perenah subjék",
+       "exif-exposureindex": "Indéks pajanan",
+       "exif-sensingmethod": "Metodeu panginderaan",
        "exif-filesource": "Sumber berkas",
        "exif-scenetype": "Tipe adegan",
+       "exif-customrendered": "Prosés jijieunan gambar",
        "exif-exposuremode": "Modeu pajanan",
+       "exif-whitebalance": "Kasaimbangan bodas",
        "exif-digitalzoomratio": "Rasio zum digital",
        "exif-focallengthin35mmfilm": "Panjang fokus dina film 35 mm",
        "exif-contrast": "Kontras",
        "exif-datetimeexpires": "Ulah dipaké sanggeus",
        "exif-datetimereleased": "Dirilis ping",
        "exif-originaltransmissionref": "Kodeu lokasi transmisi asli",
+       "exif-identifier": "Pawanoh",
        "exif-lens": "Lénsa nu dipaké",
        "exif-serialnumber": "Nomer séri kaméra",
        "exif-cameraownername": "Nu boga kaméra",
        "exif-personinimage": "Jalma nu digambarkeun",
        "exif-originalimageheight": "Jangkung gambar saméméh diteukteuk",
        "exif-originalimagewidth": "Lébar gambar saméméh diteukteuk",
+       "exif-compression-1": "Teu kakompres",
+       "exif-copyrighted-true": "Mihak cipta",
        "exif-copyrighted-false": "Domain publik",
        "exif-unknowndate": "Titimangsa teu kanyahoan",
        "exif-orientation-1": "Normal",
        "exif-lightsource-19": "Cahya baku C",
        "exif-lightsource-24": "Tungsten studio ISO",
        "exif-lightsource-255": "Sumber cahya séjén",
+       "exif-flash-fired-1": "Buricak hurung",
+       "exif-flash-mode-3": "modeu otomatis",
        "exif-focalplaneresolutionunit-2": "inci",
+       "exif-sensingmethod-1": "Teu kadéfinisi",
        "exif-scenetype-1": "Gambar poto langsung",
        "exif-customrendered-0": "Prosés normal",
        "exif-customrendered-1": "Prosés biasa",
        "exif-iimcategory-edu": "Atikan",
        "exif-iimcategory-evn": "Lingkungan",
        "exif-iimcategory-hth": "Kawaluyaan",
+       "exif-iimcategory-lab": "Katanagakerjaan",
+       "exif-iimcategory-lif": "Gaya hirup jeung rékréasi",
        "exif-iimcategory-pol": "Politik",
        "exif-iimcategory-rel": "Ageman jeung kayakinan",
+       "exif-iimcategory-sci": "Sayen jeung téknologi",
        "exif-iimcategory-soi": "Isu sosial",
        "exif-iimcategory-spo": "Olahraga",
        "exif-iimcategory-wea": "Cuaca",
        "exif-urgency-normal": "Normal ($1)",
+       "exif-urgency-low": "Landeuh ($1)",
+       "exif-urgency-high": "Luhur ($1)",
        "namespacesall": "kabéh",
        "monthsall": "kabéh",
        "confirmemail": "Konfirmasi alamat surélék",
        "deletedwhileediting": "'''Awas''': ieu kaca geus dihapus nalika anjeun mitembeyan ngédit!",
        "confirmrecreate": "Pamaké [[User:$1|$1]] ([[User talk:$1|ngobrol]]) geus ngahapus artikel ieu nalika anjeun ngédit kalawan alesan:\n: ''$2''\nmangga pastikeun yén anjeun rék nyieun deui artikel ieu.",
        "recreate": "Jieun deui",
+       "confirm-purge-title": "Hapus sindangan ieu",
        "confirm_purge_button": "Heug",
        "confirm-purge-top": "Hapus sindangan kaca ieu?",
-       "imgmultipageprev": "&larr; kaca saacana",
+       "confirm-watch-button": "Heug",
+       "confirm-unwatch-button": "Heug",
+       "confirm-unwatch-top": "Pupus ieu kaca tina aawaseun anjeun?",
+       "confirm-rollback-button": "Heug",
+       "quotation-marks": "\"$1\"",
+       "imgmultipageprev": "← kaca saacana",
        "imgmultipagenext": "kaca salajengna →",
        "imgmultigo": "Téang!",
        "imgmultigoto": "Jung ka kaca $1",
+       "img-lang-default": "(basa default)",
+       "img-lang-go": "Jung",
        "ascending_abbrev": "naék",
        "descending_abbrev": "turun",
        "table_pager_next": "Kaca salajengna",
        "table_pager_first": "Kaca mimiti",
        "table_pager_last": "Kaca tung-tung",
        "table_pager_limit": "Pidangkeun $1 éntri pér halaman",
+       "table_pager_limit_label": "Item per kaca:",
        "table_pager_limit_submit": "Téang",
        "table_pager_empty": "Nyamos",
        "autosumm-blank": "Ngosongkeun eusi kaca",
        "autosumm-replace": "Ngaganti kaca ku '$1'",
        "autoredircomment": "Mindahkeun ka [[$1]]",
        "autosumm-new": "Nyieun kaca anyar  $1",
+       "autosumm-newblank": "Nyieun kaca kosong",
        "lag-warn-normal": "Parobahan nu leuwih anyar ti $1 {{PLURAL:$1|detik|detik}} moal ditémbongkeun dina ieu béréndélan.",
        "lag-warn-high": "Kusabab kasibukan lag server pangkalan data, parobahan nu leuwih anyar $1 {{PLURAL:$1|detik|detik}} moal ditémbongkeun dina ieu béréndélan.",
        "watchlistedit-normal-title": "Édit daptar awaskeuneun",
        "watchlistedit-raw-done": "Daptar awaskeuneun geus diropéa.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 judul geus|$1 judul geus}} ditambahkeun:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 judul geus|$1 judul geus}} dikaluarkeun:",
+       "watchlistedit-clear-title": "Bersihan aawaseun",
+       "watchlistedit-clear-legend": "Bersihan aawaseun",
+       "watchlistedit-clear-titles": "Judul:",
        "watchlisttools-view": "Témbongkeun parobahan nu patali",
        "watchlisttools-edit": "Témbongkeun sarta édit béréndélan awaskeuneun",
        "watchlisttools-raw": "Robah béréndélan awaskeuneun",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|obrolan]])",
+       "timezone-local": "Lokal",
        "duplicate-defaultsort": "'''Awas''': Konci runtuyan asal \"$2\" ngalindih konci runtuyan asal \"$1\" anu saméméhna.",
        "version": "Vérsi",
        "version-extensions": "Éksténsi nu diinstal",
+       "version-skins": "Kalakop nu diinstal",
        "version-specialpages": "Kaca husus",
        "version-parserhooks": "Kait parser",
        "version-variables": "Variabel",
        "version-hook-subscribedby": "Didaptarkeun ku",
        "version-version": "($1)",
        "version-license": "Lisénsi MediaWiki",
+       "version-ext-license": "Lisénsi",
+       "version-ext-colheader-name": "Éksténsi",
+       "version-skin-colheader-name": "Kalakop",
+       "version-ext-colheader-version": "Vérsi",
+       "version-ext-colheader-license": "Lisénsi",
+       "version-ext-colheader-description": "Pedaran",
+       "version-ext-colheader-credits": "Pangarang",
+       "version-license-title": "Lisénsi pikeun $1",
+       "version-credits-title": "Krédit pikeun $1",
+       "version-poweredby-others": "séjénna",
        "version-poweredby-translators": "darmamurcaya translatewiki.net",
        "version-software": "Sopwér nu geus diinstal",
        "version-software-product": "Produk",
        "version-software-version": "Vérsi",
-       "fileduplicatesearch": "Sungsi gambar duplikat",
+       "version-entrypoints-header-url": "URL",
+       "version-libraries": "Pabukon kapasang",
+       "version-libraries-library": "Pabukon",
+       "version-libraries-version": "Vérsi",
+       "version-libraries-license": "Lisénsi",
+       "version-libraries-description": "Pedaran",
+       "version-libraries-authors": "Pangarang",
+       "redirect-summary": "Ieu kaca husus mindahkeun ka berkas (kalawan ngaran berkasna), kaca (kalawan ID répisi atawa ID kaca), kaca pamaké (kalawan ID pamaké nomerik), atawa éntri log (kalawan ID logna). Pamakéan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], atawa [[{{#Special:Redirect}}/logid/186]].",
+       "redirect-submit": "Jung",
+       "redirect-lookup": "Ilikan:",
+       "redirect-value": "Ajén:",
+       "redirect-user": "ID pamaké",
+       "redirect-page": "ID kaca",
+       "redirect-revision": "Révisi kaca",
+       "redirect-file": "Ngaran berkas",
+       "redirect-logid": "ID log",
+       "redirect-not-exists": "Ajén teu kapanggih",
+       "fileduplicatesearch": "Paluruh gambar duplikat",
        "fileduplicatesearch-filename": "Ngaran koropak:",
-       "fileduplicatesearch-submit": "Sungsi",
+       "fileduplicatesearch-submit": "Paluruh",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />Ukuran koropak: $3<br />Tipeu MIME: $4",
        "fileduplicatesearch-result-1": "Koropak \"$1\" teu boga duplikat idéntik.",
        "fileduplicatesearch-result-n": "Koropak \"$1\" mibanda {{PLURAL:$2|1 duplikat idéntik|$2 duplikat idéntik}}.",
        "specialpages": "Kaca husus",
+       "specialpages-note-top": "Kamandang",
        "specialpages-note": "* Kaca husus normal.\n* <span class=\"mw-specialpagerestricted\">Kaca husus diwates.</span>",
        "specialpages-group-maintenance": "Laporan pigawéeun",
        "specialpages-group-other": "Kaca husus lainna",
        "specialpages-group-wiki": "Data jeung parabot",
        "specialpages-group-redirects": "Alihan kaca husus",
        "specialpages-group-spam": "Parabot Spam",
+       "specialpages-group-developer": "Parabot pangembang",
        "blankpage": "Kaca kosong",
        "intentionallyblankpage": "Ieu kaca ngahaja dikosongkeun.",
        "external_image_whitelist": " #Antepkeun ieu baris sakumaha ayana<pre>\n#Paké fragmén éxprési régulér (ukur bagian anu aya di antara //) di handap\n#Ieu fragmén bakal dicocogkeun jeung URL gambar-gambar éksternal\n#Fragmén anu cocog bakal dipidangkeun minangka gambar, lamun henteu nu katémbong ukur tutumbuna #Baris nu dimimitian ku # bakal dianggap koméntar\n#Ieu teu ngabédakeun gedé leutikna aksara\n#Teundeun sakabéh fragmén éxprési régulér luhureun ieu baris. Antepkeun ieu baris sakumaha ayana</pre>",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag}}]]: $2)",
        "tags-title": "Tag",
        "tags-tag": "Ngaran tag",
+       "tags-source-header": "Sumber",
+       "tags-active-header": "Hurung?",
+       "tags-actions-header": "Tarékah",
+       "tags-active-yes": "Enya",
+       "tags-active-no": "Teu",
        "tags-edit": "édit",
+       "tags-activate": "hurungkeun",
+       "tags-deactivate": "pareuman",
        "tags-hitcount": "$1 {{PLURAL:$1|parobahan|parobahan}}",
+       "tags-create-heading": "Nyieun tag anyar",
+       "tags-create-tag-name": "Ngaran tag:",
+       "tags-create-reason": "Alesan:",
+       "tags-create-submit": "Jieun",
+       "tags-delete-title": "Pupus tag",
+       "tags-delete-reason": "Alesan:",
+       "tags-activate-title": "Hurungkeun tag",
+       "tags-activate-reason": "Alesan:",
+       "tags-activate-submit": "Hurungkeun",
+       "tags-deactivate-title": "Pareuman tag",
+       "tags-deactivate-reason": "Alesan:",
+       "tags-deactivate-submit": "Pareuman",
+       "tags-edit-title": "Édit tag",
+       "tags-edit-existing-tags-none": "<em>Taya</em>",
+       "tags-edit-new-tags": "Tag anyar:",
+       "tags-edit-reason": "Alesan:",
        "comparepages": "Bandinkeun kaca",
        "compare-page1": "Kaca 1",
        "compare-page2": "Kaca 2",
        "htmlform-submit": "Kirim",
        "htmlform-reset": "Bolaykeun parobahan",
        "htmlform-selectorother-other": "Lianna",
+       "htmlform-no": "Henteu",
+       "htmlform-yes": "Enya",
+       "htmlform-chosen-placeholder": "Pilih opsi",
+       "htmlform-cloner-delete": "Pupus",
+       "htmlform-date-placeholder": "TTTT-BB-HH",
+       "htmlform-time-placeholder": "JJ:MM:DD",
+       "htmlform-datetime-placeholder": "TTTT-BB-HH JJ:MM:DD",
+       "htmlform-title-not-exists": "$1 euweuh.",
+       "htmlform-user-not-exists": "<strong>$1</strong> taya.",
        "logentry-delete-delete": "$1 {{GENDER:$2|ngahapus}} kaca $3",
        "logentry-delete-restore": "$1 {{GENDER:$2|dibalikkeun}} kaca $3 ($4)",
        "logentry-delete-restore-nocount": "$1 {{GENDER:$2|dibalikkeun}} kaca $3",
        "restore-count-revisions": "$1 {{PLURAL:$1|1 révisi|$1 révisi}}",
        "restore-count-files": "{{PLURAL:$1|1 berkas|$1 berkas}}",
+       "logentry-delete-revision": "$1 {{GENDER:$2|ngarobah}} visibilitas {{PLURAL:$5|hiji répisi|$5 répisi}} kaca $3: $4",
+       "revdelete-content-hid": "kontén disumputkeun",
+       "revdelete-summary-hid": "tingkesan édit disumputkeun",
+       "revdelete-uname-hid": "sandiasma disumputkeun",
+       "revdelete-content-unhid": "kontén teu disumputkeun",
+       "revdelete-summary-unhid": "tingkesan édit teu disumputkeun",
+       "revdelete-uname-unhid": "sandiasma teu disumputkeun",
        "revdelete-restricted": "akses geus dibatesan ukur keur kuncén",
        "revdelete-unrestricted": "Watesan akses kuncén dihapuskeun",
+       "logentry-import-upload": "$1 {{GENDER:$2|ngimpor}} $3 ku pangunjalan berkas",
        "logentry-move-move": "$1 {{GENDER:$2|mindahkeun}} kaca $3 ka $4",
+       "logentry-move-move-noredirect": "$1 {{GENDER:$2|mindahkeun}} kaca $3 ka $4 tanpa ninggalkeun pindahan",
+       "logentry-move-move_redir": "$1 {{GENDER:$2|mindahkeun}} kaca $3 ka $4 maké pindahan",
+       "logentry-patrol-patrol-auto": "$1 otomatis {{GENDER:$2|nandaan}} répisi $4 ti kaca $3 geus diriksa",
        "logentry-newusers-create": "Akun pamaké $1 geus {{GENDER:$2|dijieun}}",
+       "logentry-newusers-autocreate": "Akun pamaké $1 {{GENDER:$2|dijieun}} otomatis",
        "logentry-upload-upload": "$1 {{GENDER:$2|ngamuat}} $3",
        "rightsnone": "(euweuh)",
+       "feedback-back": "Balik deui",
        "feedback-cancel": "Bolay",
+       "feedback-close": "Anggeus",
+       "feedback-error2": "Kasalahan: Édit gagal",
        "feedback-message": "Surat:",
        "feedback-subject": "Ngeunaan:",
-       "searchsuggest-search": "Sungsi di {{SITENAME}}",
+       "feedback-submit": "Kirim",
+       "feedback-thanks-title": "Hatur nuhun!",
+       "feedback-useragent": "Agén pamaké:",
+       "searchsuggest-search": "Paluruh {{SITENAME}}",
        "searchsuggest-containing": "ngandung...",
        "duration-seconds": "$1 {{PLURAL:$1|detik|detik}}",
        "duration-minutes": "$1 {{PLURAL:$1|menit|menit}}",
        "expand_templates_xml_output": "Output XML",
        "expand_templates_ok": "Heug",
        "expand_templates_preview": "Pramidang",
+       "pagelang-name": "Kaca",
+       "pagelang-language": "Basa",
+       "pagelang-select-lang": "Pilih basa",
+       "pagelang-reason": "Alesan",
+       "pagelang-submit": "Kirim",
+       "pagelang-nonexistent-page": "Kaca $1 euweuh.",
+       "mediastatistics": "Statistik média",
+       "mediastatistics-table-mimetype": "Tipeu MIME",
+       "mediastatistics-table-count": "Jumlah berkas",
+       "mediastatistics-table-totalbytes": "Ukuran gabungan",
+       "mediastatistics-header-unknown": "Teu dipikanyaho",
+       "mediastatistics-header-bitmap": "Gambar bitmap",
+       "mediastatistics-header-drawing": "Ngagambar (Gambar véktor)",
+       "mediastatistics-header-audio": "Audio",
+       "mediastatistics-header-video": "Vidio",
+       "mediastatistics-header-multimedia": "Média beunghar",
+       "mediastatistics-header-text": "Tékstual",
+       "mediastatistics-header-total": "Sakumna berkas",
        "special-characters-group-latin": "Latin",
        "special-characters-group-ipa": "IPA",
        "special-characters-group-symbols": "Lambang",
        "special-characters-group-thai": "Thai",
        "special-characters-group-lao": "Lao",
        "special-characters-group-khmer": "Khmer",
+       "log-action-filter-all": "Sakumna",
+       "log-action-filter-block-block": "Peungpeuk",
        "gotointerwiki": "Ninggalkeun{{SITENAME}}",
        "gotointerwiki-invalid": "Judul spésipik henteu valid"
 }
index f8d6b22..b315507 100644 (file)
                        "McDutchie",
                        "Larske",
                        "Rockyfelle",
-                       "Johan"
+                       "Johan",
+                       "Martin Wiss",
+                       "Mdjarv",
+                       "Frisko"
                ]
        },
        "tog-underline": "Stryk under länkar:",
        "anontalk": "Diskussion",
        "navigation": "Navigering",
        "and": "&#32;och",
-       "qbfind": "Hitta",
-       "qbbrowse": "Bläddra igenom",
-       "qbedit": "Redigera",
-       "qbpageoptions": "Denna sida",
-       "qbmyoptions": "Mina sidor",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Åtgärder",
        "namespaces": "Namnrymder",
        "variants": "Varianter",
        "edit-local": "Redigera lokal beskrivning",
        "create": "Skapa",
        "create-local": "Lägg till en lokal beskrivning",
-       "editthispage": "Redigera denna sida",
-       "create-this-page": "Skapa denna sida",
        "delete": "Radera",
-       "deletethispage": "Radera denna sida",
-       "undeletethispage": "Återställ denna sida",
        "undelete_short": "Återställ {{PLURAL:$1|en version|$1 versioner}}",
        "viewdeleted_short": "Visa {{PLURAL:$1|en raderad redigering|$1 raderade redigeringar}}",
        "protect": "Skrivskydda",
        "protect_change": "ändra",
-       "protectthispage": "Skrivskydda denna sida",
        "unprotect": "Ändra skydd",
-       "unprotectthispage": "Ändra skyddet på denna sidan",
        "newpage": "Ny sida",
-       "talkpage": "Diskutera denna sida",
        "talkpagelinktext": "Diskussion",
        "specialpage": "Specialsida",
        "personaltools": "Personliga verktyg",
-       "articlepage": "Visa innehållssida",
        "talk": "Diskussion",
        "views": "Visningar",
        "toolbox": "Verktyg",
        "tool-link-userrights": "Ändra {{GENDER:$1|användargrupper}}",
        "tool-link-userrights-readonly": "Visa {{GENDER:$1|användargrupper}}",
        "tool-link-emailuser": "Skicka e-post till denna {{GENDER:$1|användare}}",
-       "userpage": "Visa användarsida",
-       "projectpage": "Visa projektsida",
        "imagepage": "Visa filsida",
        "mediawikipage": "Visa meddelandesida",
        "templatepage": "Visa mallsida",
        "redirectedfrom": "(Omdirigerad från $1)",
        "redirectpagesub": "Omdirigeringssida",
        "redirectto": "Omdirigering till:",
-       "lastmodifiedat": "Sidan ändrades senast den $1 kl. $2.",
+       "lastmodifiedat": "Sidan redigerades senast den $1 kl. $2.",
        "viewcount": "Den här sidan har visats {{PLURAL:$1|en gång|$1 gånger}}.",
        "protectedpage": "Skrivskyddad sida",
        "jumpto": "Hoppa till:",
        "preview": "Förhandsgranska",
        "showpreview": "Visa förhandsgranskning",
        "showdiff": "Visa ändringar",
-       "blankarticle": "<strong>Varning:</strong> Sidan du skapar är tom.\nOm du klickar på \"{{int:savearticle}}\" igen kommer sidan skapas utan något innehåll.",
+       "blankarticle": "<strong>Varning:</strong> Sidan du skapar är tom.\nOm du klickar på \"$1\" igen kommer sidan skapas utan något innehåll.",
        "anoneditwarning": "<strong>Varning:</strong> Du är inte inloggad. Din IP-adress kommer att vara publikt synlig om du gör några redigeringar. Om du <strong>[$1 loggar in]</strong> eller <strong>[$2 skapar ett konto]</strong> kommer dina redigeringar att tillskrivas ditt användarnamn, tillsammans med andra fördelar.",
        "anonpreviewwarning": "''Du är inte inloggad. Om du sparar kommer din IP-adress registreras på denna sidas redigeringshistorik.''",
-       "missingsummary": "<strong>Påminnelse:</strong> Du har inte skrivit någon redigeringskommentar.\nOm du klickar på \"{{int:savearticle}}\" igen kommer din redigering att sparas utan en sådan.",
-       "selfredirect": "<strong>Varning:</strong> Du omdirigerar denna sida till sig själv.\nDu kanske angav fel mål för din omdirigering, eller redigerar fel sida.\nOm du klickar på \"{{int:savearticle}}\" igen kommer omdirigeringen att skapas trots detta.",
+       "missingsummary": "<strong>Påminnelse:</strong> Du har inte skrivit någon redigeringskommentar.\nOm du klickar på \"$1\" igen kommer din redigering att sparas utan en sådan.",
+       "selfredirect": "<strong>Varning:</strong> Du omdirigerar denna sida till sig själv.\nDu kanske angav fel mål för din omdirigering, eller redigerar fel sida.\nOm du klickar på \"$1\" igen kommer omdirigeringen att skapas trots detta.",
        "missingcommenttext": "Var god och skriv in en kommentar nedan.",
-       "missingcommentheader": "<strong>Påminnelse:</strong> Du har inte skrivit något ämne för den här kommentaren.\nOm du trycker på \"{{int:savearticle}}\" igen kommer din redigering sparas utan rubrik.",
+       "missingcommentheader": "<strong>Påminnelse:</strong> Du har inte skrivit något ämne för den här kommentaren.\nOm du trycker på \"$1\" igen kommer din redigering sparas utan rubrik.",
        "summary-preview": "Förhandsgranskning av redigeringssammanfattning:",
        "subject-preview": "Förhandsgranskning av ämne:",
        "previewerrortext": "Ett fel uppstod när dina ändringar skulle förhandsgranskas.",
        "editingsection": "Redigerar $1 (avsnitt)",
        "editingcomment": "Redigerar $1 (nytt avsnitt)",
        "editconflict": "Redigeringskonflikt: $1",
-       "explainconflict": "Någon har ändrat den här sidan efter att du började att redigera den.\nDen översta textrutan innehåller den nuvarande sparade versionen av texten.\nDin ändrade version visas i den nedre rutan.\nOm du vill spara dina ändringar så måste du infoga dem i den övre texten.\n'''Endast''' texten i den översta textrutan kommer att sparas när du trycker på \"{{int:savearticle}}\".",
+       "explainconflict": "Någon har ändrat den här sidan efter att du började att redigera den.\nDen översta textrutan innehåller den nuvarande sparade versionen av texten.\nDin ändrade version visas i den nedre rutan.\nOm du vill spara dina ändringar så måste du infoga dem i den övre texten.\n<strong>Endast</strong> texten i den översta textrutan kommer att sparas när du trycker på \"$1\".",
        "yourtext": "Din text",
        "storedversion": "Den sparade versionen",
        "nonunicodebrowser": "'''VARNING: Din webbläsare saknar stöd för unicode. För att du ska kunna redigera sidor utan problem, så visas icke-ASCII-tecken som hexadecimala koder i redigeringsrutan.'''",
        "search-file-match": "(överensstämmer filens innehåll)",
        "search-suggest": "Menade du: $1",
        "search-rewritten": "Visar resultat för $1. Sök istället efter $2.",
-       "search-interwiki-caption": "Systerprojekt",
+       "search-interwiki-caption": "Resultat från systerprojekt",
        "search-interwiki-default": "Resultat från $1:",
        "search-interwiki-more": "(mer)",
        "search-interwiki-more-results": "fler resultat",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Visa",
        "rcfilters-activefilters": "Aktiva filter",
+       "rcfilters-quickfilters": "Sparade filterinställningar",
+       "rcfilters-quickfilters-placeholder-title": "Inga länkar har sparats ännu",
+       "rcfilters-quickfilters-placeholder-description": "För att spara dina filterinställningar och återanvända dem senare, klicka på bokmärkesikonen under \"Aktiva filter\" nedan.",
+       "rcfilters-savedqueries-defaultlabel": "Sparade filter",
+       "rcfilters-savedqueries-rename": "Döp om",
+       "rcfilters-savedqueries-setdefault": "Ange som standard",
+       "rcfilters-savedqueries-unsetdefault": "Ta bort som standard",
+       "rcfilters-savedqueries-remove": "Ta bort",
+       "rcfilters-savedqueries-new-name-label": "Namn",
+       "rcfilters-savedqueries-apply-label": "Skapa inställningar",
+       "rcfilters-savedqueries-cancel-label": "Avbryt",
+       "rcfilters-savedqueries-add-new-title": "Spara filterinställningar",
        "rcfilters-restore-default-filters": "Återställ standardfilter",
        "rcfilters-clear-all-filters": "Rensa alla filter",
        "rcfilters-search-placeholder": "Filtrera senaste ändringar (bläddra eller börja skriva)",
        "rcfilters-filter-unregistered-label": "Oregistrerade",
        "rcfilters-filter-unregistered-description": "Redigerare som inte är inloggade.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Detta filter är i konflikt med följande {{PLURAL:$2|upplevelsefilter}}, som endast {{PLURAL:$2|hittar}} registrerade användare: $1",
-       "rcfilters-filtergroup-authorship": "Redigera författarskap",
-       "rcfilters-filter-editsbyself-label": "Dina egna redigeringar",
-       "rcfilters-filter-editsbyself-description": "Redigeringar av dig.",
-       "rcfilters-filter-editsbyother-label": "Redigeringar av andra",
-       "rcfilters-filter-editsbyother-description": "Redigeringar som har skapats av andra användare (inte dig).",
+       "rcfilters-filtergroup-authorship": "Författarskap av bidrag",
+       "rcfilters-filter-editsbyself-label": "Redigeringar av dig",
+       "rcfilters-filter-editsbyself-description": "Dina egna bidrag.",
+       "rcfilters-filter-editsbyother-label": "Ändringar av andra",
+       "rcfilters-filter-editsbyother-description": "Alla ändringar förutom dina egna.",
        "rcfilters-filtergroup-userExpLevel": "Erfarenhetsnivå (endast för registrerade användare)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Upplevelsefilter hittar endast registrerade användare, så detta filter är i konflikt med filtret \"Oregistrerade\".",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filtret \"Oregistrerade\" är i konflikt med en eller flera upplevelsefilter, som endast hittar registrerade användare. Filtren som är i konflikt är markerade i området med aktiva filter ovan.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Nykomlingar",
        "rcfilters-filter-user-experience-level-newcomer-description": "Färre än 10 redigeringar och 4 dagars aktivitet.",
        "rcfilters-filter-user-experience-level-learner-label": "Nybörjare",
-       "rcfilters-filter-user-experience-level-learner-description": "Fler dagars aktivitet och redigeringar än \"Nybörjare\" men färre än \"Erfarna användare\".",
+       "rcfilters-filter-user-experience-level-learner-description": "Mer erfarenhet än \"Nybörjare\" men mindre än \"Erfarna användare\".",
        "rcfilters-filter-user-experience-level-experienced-label": "Erfarna användare",
        "rcfilters-filter-user-experience-level-experienced-description": "Fler än 30 dagars aktivitet och 500 redigeringar.",
        "rcfilters-filtergroup-automated": "Automatiserade bidrag",
        "rcfilters-filter-minor-description": "Redigeringar som är märkta som mindre.",
        "rcfilters-filter-major-label": "Icke-mindre redigeringar",
        "rcfilters-filter-major-description": "Redigeringar som inte är märkta som mindre.",
+       "rcfilters-filtergroup-watchlist": "Bevakade sidor",
+       "rcfilters-filter-watchlist-watched-label": "I bevakningslistan",
+       "rcfilters-filter-watchlist-watched-description": "Ändringar i sidor på din bevakningslista.",
+       "rcfilters-filter-watchlist-watchednew-label": "Nya ändringar i bevakningslistan",
+       "rcfilters-filter-watchlist-watchednew-description": "Ändringar i bevakade sidor som du inte har besökt sedan ändringarna ägde rum.",
+       "rcfilters-filter-watchlist-notwatched-label": "Inte i bevakningslistan",
+       "rcfilters-filter-watchlist-notwatched-description": "Allting förutom ändringar i sidor på din bevakningslista.",
        "rcfilters-filtergroup-changetype": "Typ av ändring",
        "rcfilters-filter-pageedits-label": "Sidredigeringar",
-       "rcfilters-filter-pageedits-description": "Redigeringar till wikiinnehåll, diskussioner, kategoribeskrivningar...",
+       "rcfilters-filter-pageedits-description": "Redigeringar till wikiinnehåll, diskussioner, kategoribeskrivningar",
        "rcfilters-filter-newpages-label": "Sidskapande",
        "rcfilters-filter-newpages-description": "Redigeringar som skapade nya sidor.",
        "rcfilters-filter-categorization-label": "Kategoriändringar",
        "rcfilters-filter-categorization-description": "Poster av sidor som läggs till eller tas bort från kategorier.",
        "rcfilters-filter-logactions-label": "Loggade åtgärder",
-       "rcfilters-filter-logactions-description": "Administrativa åtgärder, kontoskapande, sidraderingar, uppladdningar....",
+       "rcfilters-filter-logactions-description": "Administrativa åtgärder, kontoskapande, sidraderingar, uppladdningar",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Filtret \"Mindre redigering\" är i konflikt med en eller flera ändringstypfilter, eftersom vissa ändringstyper inte kan betecknas som \"mindre\". Filtren som är i konflikt är markerade i området med aktiva filter ovan.",
        "rcfilters-hideminor-conflicts-typeofchange": "Vissa ändringstyper kan inte betecknas som \"mindre\", så detta filter är i konflikt med följande ändringstypfilter: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Detta ändringstypfilter är i konflikt med filtret \"Mindre ändringar\". Vissa ändringstyper kan inte betecknas som \"mindre\".",
+       "rcfilters-filtergroup-lastRevision": "Senaste version",
+       "rcfilters-filter-lastrevision-label": "Senaste version",
+       "rcfilters-filter-lastrevision-description": "Den senaste ändringen av en sida.",
+       "rcfilters-filter-previousrevision-label": "Tidigare versioner",
+       "rcfilters-filter-previousrevision-description": "Alla ändringar som inte är den senaste ändringen av en sida.",
+       "rcfilters-filter-excluded": "Exkluderad",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
+       "rcfilters-view-tags": "Märken",
        "rcnotefrom": "Nedan visas {{PLURAL:$5|ändringen|ändringar}} sedan <strong>$3, $4</strong> (upp till <strong>$1</strong> ändringar visas).",
        "rclistfromreset": "Återställ datumval",
        "rclistfrom": "Visa nya ändringar från och med $2 $3",
        "rcshowhidecategorization": "$1 kategorisering av sidor",
        "rcshowhidecategorization-show": "Visa",
        "rcshowhidecategorization-hide": "Dölj",
-       "rclinks": "Visa senaste $1 ändringar under de senaste $2 dygnen<br />$3",
+       "rclinks": "Visa senaste $1 ändringar under de senaste $2 dygnen",
        "diff": "skillnad",
        "hist": "historik",
        "hide": "Dölj",
        "enotif_body_intro_moved": "{{SITENAME}}sidan $1 flyttades den $PAGEEDITDATE av {{gender:$2|$2}}, se $3 för den aktuella versionen.",
        "enotif_body_intro_restored": "{{SITENAME}}sidan $1 återställdes den $PAGEEDITDATE av {{gender:$2|$2}}, se $3 för den aktuella versionen.",
        "enotif_body_intro_changed": "{{SITENAME}}sidan $1 ändrades den $PAGEEDITDATE av {{gender:$2|$2}}, se $3 för den aktuella versionen.",
-       "enotif_lastvisited": "På $1 återfinner du alla ändringar sedan ditt senaste besök.",
-       "enotif_lastdiff": "Se denna ändring på $1",
+       "enotif_lastvisited": "För alla ändringar sedan ditt senaste besök, se $1",
+       "enotif_lastdiff": "För att se denna ändring, se $1",
        "enotif_anon_editor": "anonym användare $1",
        "enotif_body": "Hej $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nAngiven sammanfattning av redigeringen: $PAGESUMMARY $PAGEMINOREDIT\n\nKontakta användaren:\ne-post: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nSåvida du inte besöker sidan, kommer du inte att få flera meddelanden om aktivitet på sidan när du är inloggad. Du kan också ta bort flaggan för meddelanden om ändringar på alla sidor i din bevakningslista.\n\nHälsningar från {{SITENAME}}s meddelandesystem\n\n--\nFör att ändra inställningarna för dina uppdateringar via e-post, besök\n{{canonicalurl:{{#special:Preferences}}}}\n\nFör att ändra inställningarna i din bevakningslista, besök\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nFör att radera sidan från din bevakningslista, besök\n$UNWATCHURL\n\nFeedback och ytterligare hjälp:\n$HELPPAGE",
        "created": "skapad",
        "sp-contributions-uploads": "uppladdningar",
        "sp-contributions-logs": "loggar",
        "sp-contributions-talk": "diskussion",
-       "sp-contributions-userrights": "hantering av användarrättigheter",
+       "sp-contributions-userrights": "hantering av {{GENDER:$1|användarrättigheter}}",
        "sp-contributions-blocked-notice": "Användaren är blockerad.\nDen senaste posten i blockeringsloggen visas nedan som referens:",
        "sp-contributions-blocked-notice-anon": "Denna IP-adress är för närvarande blockerad.\nDen senaste posten i blockeringsloggen visas nedan som referens:",
        "sp-contributions-search": "Sök efter användarbidrag",
        "autoblocklist-submit": "Sök",
        "autoblocklist-legend": "Lista autoblockeringar",
        "autoblocklist-localblocks": "{{PLURAL:$1|Lokal autoblockering|Lokala autoblockeringar}}",
+       "autoblocklist-total-autoblocks": "Totalt antal autoblockeringar: $1",
        "autoblocklist-empty": "Listan över autoblockeringar är tom.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Annan autoblockering|Andra autoblockeringar}}",
        "ipblocklist": "Blockerade användare",
        "ipb_hide_invalid": "Kan inte undanhålla detta konto; det har fler än {{PLURAL:$1|en redigering|$1 redigeringar}}.",
        "ipb_already_blocked": "\"$1\" är redan blockerad",
        "ipb-needreblock": "$1 är redan blockerad. Vill du ändra inställningarna?",
-       "ipb-otherblocks-header": "Andra {{PLURAL:$1|blockering|blockeringar}}",
+       "ipb-otherblocks-header": "{{PLURAL:$1|Annan blockering|Andra blockeringar}}",
        "unblock-hideuser": "Du kan inte ta bort blockeringen här användaren, eftersom dens användarnamn har dolts.",
        "ipb_cant_unblock": "Fel: Hittade inte blockering $1. Det är möjligt att den redan har upphävts.",
        "ipb_blocked_as_range": "Fel: IP-adressen $1 är inte direkt blockerad, och kan därför inte avblockeras. Adressen är blockerad som en del av IP-intervallet $2, som kan avblockeras.",
        "tooltip-pt-mycontris": "Lista över {{GENDER:|dina}} bidrag",
        "tooltip-pt-anoncontribs": "En lista över redigeringar från denna IP-adress",
        "tooltip-pt-login": "Du uppmuntras att logga in, men det är inget krav",
+       "tooltip-pt-login-private": "Du måste logga in på denna wiki",
        "tooltip-pt-logout": "Logga ut",
        "tooltip-pt-createaccount": "Du uppmuntras att skapa ett konto och logga in, men det är inte obligatoriskt",
        "tooltip-ca-talk": "Diskussion om innehållssidan",
        "anonymous": "{{PLURAL:$1|Anonym användare|Anonyma användare}} på {{SITENAME}}",
        "siteuser": "användaren $1 på {{SITENAME}}",
        "anonuser": "{{SITENAME}} anonym användare $1",
-       "lastmodifiedatby": "Den här sidan ändrades senast kl. $2 den $1 av $3.",
+       "lastmodifiedatby": "Den här sidan redigerades senast kl. $2 den $1 av $3.",
        "othercontribs": "Baserad på arbete av $1.",
        "others": "andra",
        "siteusers": "{{SITENAME}}-{{PLURAL:$2|{{GENDER:$1|användaren}}|användarna}} $1",
        "newimages-legend": "Filter",
        "newimages-label": "Filnamn (eller en del av det):",
        "newimages-user": "IP-adress eller användarnamn",
+       "newimages-newbies": "Visa endast bidrag från nya konton",
        "newimages-showbots": "Visa uppladdningar av botar",
        "newimages-hidepatrolled": "Dölj patrullerade uppladdningar",
+       "newimages-mediatype": "Mediatyp:",
        "noimages": "Ingenting att se.",
        "gallery-slideshow-toggle": "Växla miniatyrer",
        "ilsubmit": "Sök",
        "confirmrecreate": "Användaren [[User:$1|$1]] ([[User talk:$1|diskussion]]) raderade den här sidan efter att du började redigera den med motiveringen:\n: <em>$2</em>\nBekräfta att du verkligen vill återskapa sidan.",
        "confirmrecreate-noreason": "Användare [[User:$1|$1]] ([[User talk:$1|diskussion]]) {{GENDER:$1|raderade}} den här sidan efter att du började redigera. Bekräfta att du verkligen vill återskapa sidan.",
        "recreate": "Återskapa",
+       "confirm-purge-title": "Rensa cachen för denna sida",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Rensa denna sidas cache?",
        "confirm-purge-bottom": "Rensning av en sida tömmer cachen och tvingar fram den senaste versionen.",
        "tags-create-reason": "Anledning:",
        "tags-create-submit": "Skapa",
        "tags-create-no-name": "Du måste ange ett märkesnamn.",
-       "tags-create-invalid-chars": "Märkesnamn får inte innehålla kommatecken (<code>,</code>) eller snedstreck (<code>/</code>).",
+       "tags-create-invalid-chars": "Märkesnamn får inte innehålla kommatecken (<code>,</code>), vertikala streck (<code>|</code>) eller snedstreck (<code>/</code>).",
        "tags-create-invalid-title-chars": "Märkesnamn får inte innehålla tecken som inte kan användas i sidtitlar.",
        "tags-create-already-exists": "Märket \"$1\" finns redan.",
        "tags-create-warnings-above": "Följande {{PLURAL:$2|varning|varningar}} uppstod när du försökte skapa märket \"$1\":",
        "mw-widgets-titleinput-description-redirect": "omdirigerar till $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Lägg till en kategori...",
        "mw-widgets-usersmultiselect-placeholder": "Lägg till fler...",
+       "date-range-from": "Från datum:",
+       "date-range-to": "Till datum:",
        "sessionmanager-tie": "Kan inte kombinera flera begäransautentiseringstyper: $1.",
        "sessionprovider-generic": "$1-sessioner",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "cookiebaserade sessioner",
        "pageid": "sid-ID $1",
        "rawhtml-notallowed": "&lt;html&gt;-taggar kan inte användas utanför normala sidor.",
        "gotointerwiki": "Lämnar {{SITENAME}}",
-       "gotointerwiki-invalid": "Den angivna titeln var ogiltig.",
-       "gotointerwiki-external": "Du håller på att lämna {{SITENAME}} för att besöka [[$2]] som är en separat webbplats.\n\n[$1 Klicka här för att fortsätta till $1].",
+       "gotointerwiki-invalid": "Den angivna titeln är ogiltig.",
+       "gotointerwiki-external": "Du håller på att lämna {{SITENAME}} för att besöka [[$2]] som är en separat webbplats.\n\n'''[$1 Fortsätt till $1]'''",
        "undelete-cantedit": "Du kan inte återställa denna sida eftersom du är inte tillåten att redigera denna sida.",
-       "undelete-cantcreate": "Du kan inte återställa denna sida eftersom det inte finns någon befintlig sida med detta namn och du tillåts inte att skapa denna sida."
+       "undelete-cantcreate": "Du kan inte återställa denna sida eftersom det inte finns någon befintlig sida med detta namn och du tillåts inte att skapa denna sida.",
+       "pagedata-title": "Siddata",
+       "pagedata-text": "Denna sida tillhandahåller ett datagränssnitt till sidor. Ange sidans titel i webbadressen med hjälp av undersidesyntax.\n* Innehållsförhandling gäller baserat på att din klients Accept-header. Detta innebär att siddatan kommer att tillhandahållas i det format som din klient föredrar.",
+       "pagedata-not-acceptable": "Inga matchande format finns. MIME-typer som stöds:$1",
+       "pagedata-bad-title": "Ogiltig titel: $1."
 }
index c4148df..2fa9bab 100644 (file)
        "externaldberror": "Huenda kulikuwa na hitilafu ya database au labda hauruhusiwi kubadilisha akaunti yako ya nje.",
        "login": "Ingia",
        "nav-login-createaccount": "Ingia/ sajili akaunti",
-       "userlogin": "Ingia/ sajili akaunti",
-       "userloginnocreate": "Ingia",
        "logout": "Toka",
        "userlogout": "Toka",
        "notloggedin": "Hujaingia",
        "userlogin-noaccount": "Huna akaunti ya kuingilia?",
        "userlogin-joinproject": "Jiunga na {{SITENAME}}",
-       "nologin": "Huna akaunti ya kuingilia? '''$1'''.",
-       "nologinlink": "Sajili akaunti",
        "createaccount": "Sajili akaunti",
-       "gotaccount": "Unayo akaunti tayari? '''$1'''",
-       "gotaccountlink": "Ingia",
-       "userlogin-resetlink": "Umesahau maelezo yako ya kuingia?",
        "userlogin-resetpassword-link": "Je, umesahau neno la siri?",
        "userlogin-helplink2": "Saidia na kuingia",
        "userlogin-loggedin": "Haujaingia kama {{GENDER:$1|$1}}.\nTumia fomu hapa chini ili uweze kuingia kama mtumiaji mwingine.",
        "createacct-another-email-ph": "Weka anwani ya barua pepe",
        "createaccountmail": "Tumia neno la siri la muda tu na kulituma kwa anwani ya barua pepe ilivyoingizwa",
        "createacct-realname": "Jina la kweli (sio lazima)",
-       "createaccountreason": "Sababu:",
        "createacct-reason": "Sababu",
        "createacct-reason-ph": "Mbona unaunda akaunti mpya",
        "createacct-submit": "Unda akaunti yako",
        "preview": "Hakiki",
        "showpreview": "Onyesha hakikisho la mabadiliko",
        "showdiff": "Onyesha mabadiliko",
-       "blankarticle": "<strong>Ilani:</strong>Ukurasa uliounda ni mtupu.\nUlibofya  \"{{int:savearticle}}\" tena, ukurasa utaundwa bila maudhui yoyote.",
+       "blankarticle": "<strong>Ilani:</strong>Ukurasa uliounda ni mtupu.\nUlibofya  \"$1\" tena, ukurasa utaundwa bila maudhui yoyote.",
        "anoneditwarning": "<strong>Ilani:</strong> Wewe hujaingia rasmi kwenye tovuti. Anwani ya IP ya tarakilishi itaonekana na umma. Uki <strong>[$1 log in]</strong> au <strong>[$2 create an account]</strong>, hariri zako zitahusishwa na jina lako la mtumiaji pamoja na manufaa mengine.",
        "anonpreviewwarning": "''Hujaingia rasmi kwenye tovuti. Ukihifadhi ukurasa anwani ya IP ya tarakilishi yako itahifadhiwa katika historia ya uhariri wa ukurasa huu.''",
        "missingsummary": "'''Taarifa:''' Hujaandika muhtasari ya kuhariri.\nUkibonyeza 'Hifadhi ukurasa' tena, badilisho lako litahifadhiwa bila muhtasari.",
        "editingsection": "Unahariri $1 (fungu)",
        "editingcomment": "Una hariri $1 (sehemu mpya)",
        "editconflict": "Mgongano wa kuhariri: $1",
-       "explainconflict": "Mtu mwingine amebadilisha ukurasa huu tangu ulipoanza kuihariri.\nSanduku la juu inaonyesha maandiko yaliyopo sasa hivi kwenye ukurasa.\nMabadiliko yako yanaonyeshwa kwenye sanduku la chini.\nInabidi uingize mabadiliko yako ndani ya sanduku la juu.\nNi maandiko yaliyopo ndani ya sanduku la juu '''tu''' ambayo yatahifadhiwa utakapobonyeza \"{{int:savearticle}}\".",
+       "explainconflict": "Mtu mwingine amebadilisha ukurasa huu tangu ulipoanza kuihariri.\nSanduku la juu inaonyesha maandiko yaliyopo sasa hivi kwenye ukurasa.\nMabadiliko yako yanaonyeshwa kwenye sanduku la chini.\nInabidi uingize mabadiliko yako ndani ya sanduku la juu.\nNi maandiko yaliyopo ndani ya sanduku la juu '''tu''' ambayo yatahifadhiwa utakapobonyeza \"$1\".",
        "yourtext": "Maandishi yako",
        "storedversion": "Pitio lililohifadhiwa mwishoni",
        "nonunicodebrowser": "'''Ilani: Kivinjari chako hakikubaliani na Unicode.''' \nIli uweze kuhariri kurasa sawasawa, herufi zisizo za ASCII zitaonekana katika sanduku la kuhariri kama msimbo wa hexadecimali.",
        "right-editsemiprotected": "Hariri kurasa zilizozuiwa kama \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Hariri yaliyomo katika ukurasa",
        "right-editinterface": "Kuhariri kusano ya mtumiaji",
-       "right-editusercssjs": "Hariri mafaili ya CSS na Hatijava ya watumiaji wengine",
        "right-editusercss": "Hariri mafaili ya CSS ya watumiaji wengine",
        "right-edituserjs": "Hariri mafaili ya JavaScript ya watumiaji wengine",
        "right-editmyusercss": "Hariri faili zako za CSS",
        "rcshowhidemine": "$1 masahihisho yangu",
        "rcshowhidemine-show": "Onyesha",
        "rcshowhidemine-hide": "Ficha",
-       "rclinks": "Onyesha mabadiliko $1 yaliyofanywa wakati wa siku $2 zilizopita<br />$3",
+       "rclinks": "Onyesha mabadiliko $1 yaliyofanywa wakati wa siku $2 zilizopita",
        "diff": "tofauti",
        "hist": "hist",
        "hide": "Ficha",
        "undeleteviewlink": "tazama",
        "undeleteinvert": "Geuza uteuzi",
        "undeletecomment": "Sababu:",
-       "undeletedrevisions": "{{PLURAL:$1|pitio 1 lilirudishwa|mapitio $1 yalirudishwa}}",
-       "undeletedfiles": "{{PLURAL:$1|faili 1 lilirudishwa|mafaili $1 yalirudishwa}}",
        "cannotundelete": "Kurudisha ukurasa imeshindikana;\nhuenda ikawa mtu mwingine ameurudisha tayari.",
        "undelete-header": "Tazama [[Special:Log/delete|kumbukumbu za ufutaji]] ili kujua kurasa zipi zilizofutwa hivi karibuni.",
        "undelete-search-title": "Tafuta kwenye kurasa zilizofutwa",
        "logentry-newusers-create2": "$1 alianzisha akaunti ya mtumiaji $3",
        "logentry-newusers-autocreate": "Akaunti ya mtumiaji $1 {{GENDER:$2|ilianzishwa}} na mashine",
        "rightsnone": "(hana)",
-       "revdelete-summary": "muhtasari wa kuhariri",
        "feedback-adding": "Maoni yanaongezwa katika ukurasa...",
        "feedback-back": "Rudi",
        "feedback-cancel": "Batilisha",
index 70344cf..13812a5 100644 (file)
        "externaldberror": "Je jaki feler we zewnyntrznyj baźe autentyfikacyjnyj, abo ńy mosz uprawńyń potrzebnych do aktualizacyji zewnyntrznego kůnta.",
        "login": "Zaloguj śe",
        "nav-login-createaccount": "Logowańy / Tworzyńy kůnta",
-       "userlogin": "Logowańy / Tworzyńy kůnta",
-       "userloginnocreate": "Zaloguj śe",
        "logout": "Wyloguj",
        "userlogout": "Uodloguj śe",
        "notloggedin": "Ńy jeżeś zalogowany",
        "userlogin-noaccount": "Ńy mosz kůnta?",
        "userlogin-joinproject": "Doćep śe do {{SITENAME}}",
-       "nologin": "Ńy mosz kůnta? '''$1'''.",
-       "nologinlink": "Twůrz kůnto",
        "createaccount": "Twůrz nowe kůnto",
-       "gotaccount": "Mosz już kůnto? '''$1'''.",
-       "gotaccountlink": "Naloguj śe",
-       "userlogin-resetlink": "Zapomńoł żeś dane lo nalogowańo?",
        "userlogin-resetpassword-link": "Ńy pamjyntosz hasła?",
        "userlogin-helplink2": "Hilfa przi logůwańu",
        "userlogin-loggedin": "Zalogowano kej {{GENDER:$1|$1}}. Użyj formulara půńiżyj, coby zalogować śe kej inkszy używocz.",
        "createacct-another-email-ph": "Nastow e-brif",
        "createaccountmail": "Użyj chwilowygo hasła losowo genyrowanygo a wyślij je na wrychtowany adres e-brifa.",
        "createacct-realname": "Prawdźiwe imje a nazwisko (uopcjůnalńe)",
-       "createaccountreason": "Kůmyntorz:",
        "createacct-reason": "Powůd:",
        "createacct-reason-ph": "Pojakymu tworzisz nowe kůnta",
        "createacct-submit": "Twůrz kůnto",
        "passwordreset-disabled": "No tyj wiki zamkńynto resytowańy hasył.",
        "passwordreset-username": "Miano ôd używŏcza:",
        "passwordreset-domain": "Domyna:",
-       "passwordreset-capture": "Pokozać treść e-brifa?",
-       "passwordreset-capture-help": "Eli zaznaczysz to pole, uobejrzisz wjadůmość e-brifa ze hasłym.",
        "passwordreset-email": "E-brif:",
        "passwordreset-emailtitle": "Kůnto na {{GRAMMAR:MS.lp|{{SITENAME}}}}",
        "passwordreset-emailtext-ip": "Ftoś (cheba Ty, s IP $1)\npado, aże chce informacyji lo konta do {{GRAMMAR:MS.lp{{SITENAME}}}} ($4).\nZe tym ausdrukym sům powjůnzane kůnta:\n$2\n\n{{PLURAL:$3|Tymczasowygo hasła|Tymczasowych hasył}} możno użyć we {{PLURAL:$5|jedyn dźyń|$5 dńi}}.\n\nJak chćołżeś gynał to zrobjyć, to zaloguj śe terozki a podej swoje hasło.\n\nJak ftoś inkszy chćoł nowe hasło abo jak Ci śe przipůmńoło stare a ńy chcysz nowygo, to zignoruj to a używej starygo hasła.",
        "editingsection": "Sprowjosz $1 (sekcyjo)",
        "editingcomment": "Sprowjosz \"$1\" (nowy kůmyntorz)",
        "editconflict": "Kůnflikt sprowjyń: $1",
-       "explainconflict": "Ftoś zdůnżůł wćepać swoja wersyjo artikla ńim żeś naszkryflou sprowjyńy.\nWe polu edycyji na wjyrchu mosz tekst zajty aktuelńy naszkryflany we baźe danych.\nTwoje pomjyńańo sům we polu edycyji půńiżyj.\nBy wćepać swoje pomjyńańo muśisz pomjyńać tekst we polu na wjyrchu.\n'''Ino''' tekst ze pola na wjyrchu bydźe naszkryflany we baźe jak \nwciśńesz knefel \"{{int:savearticle}}\".",
+       "explainconflict": "Ftoś zdůnżůł wćepać swoja wersyjo artikla ńim żeś naszkryflou sprowjyńy.\nWe polu edycyji na wjyrchu mosz tekst zajty aktuelńy naszkryflany we baźe danych.\nTwoje pomjyńańo sům we polu edycyji půńiżyj.\nBy wćepać swoje pomjyńańo muśisz pomjyńać tekst we polu na wjyrchu.\n'''Ino''' tekst ze pola na wjyrchu bydźe naszkryflany we baźe jak \nwciśńesz knefel \"$1\".",
        "yourtext": "Twůj tekst",
        "storedversion": "Naszkryflano wersyjo",
        "nonunicodebrowser": "'''Pozůr! Twoja przeglůndorka ńy umi poprawńe rozpoznować kodowańo UTF-8 (Unicode). Bestůż wszyjske znoki, kerych Twojo przeglůndorka ńy umi rozpoznować, zamjeńůno na jejich kody heksadecymalne.'''",
        "saveprefs": "Spamjyntej",
        "restoreprefs": "Wćep wszyjskie důmyślne preferencyje",
        "prefs-editing": "Sprowjańy",
-       "rows": "Wjyrsze:",
-       "columns": "Kolůmny:",
        "searchresultshead": "Sznupańy",
        "stub-threshold": "Maksymalny rozmjar artikla uoznaczanygo kej <a href=\"#\" class=\"stub\">stub (kůnsek)</a>",
        "stub-threshold-disabled": "Uodymkńynte",
        "userrights-reason": "Czymu:",
        "userrights-no-interwiki": "Ńy mosz dostympu do sprowjańo uprawńyń.",
        "userrights-nodatabase": "Baza danych $1 ńy istńije abo ńy je lokalno.",
-       "userrights-nologin": "Muśisz [[Special:UserLogin|zalůgować śe]] na kůnto admińistratora, coby nadować uprawńyńo użytkowńikům.",
-       "userrights-notallowed": "Ńy mosz dostympu do nadawańo uprawńyń używaczom.",
        "userrights-changeable-col": "Grupy, kere moges wybrać",
        "userrights-unchangeable-col": "Grupy, kerych ńy moges wybrać",
        "group": "Grupa:",
        "right-protect": "Zmjyń poźůmy zawarć i sprowjej zawarte zajty",
        "right-editprotected": "Sprowjej zawarte zajty (ze zawarćym kaskadowym)",
        "right-editinterface": "Sprowjej interfejs użytkowńika",
-       "right-editusercssjs": "Sprowjej pliki CSS i JS inkszych użytkowńikůw",
        "right-editusercss": "Sprowjej pliki CSS inkszych użytkowńikůw",
        "right-edituserjs": "Sprowjej pliki JS inkšych užytkowńikůw",
        "right-rollback": "Rewert drap sprawjyńo uostatńygo użytkowńika kery sprowjoł dano zajta",
        "rcshowhidemine": "$1 uody mje sprowjůne",
        "rcshowhidemine-show": "Pokoż",
        "rcshowhidemine-hide": "Schrůń",
-       "rclinks": "Ukoż uostatńe $1 sprowjyń bez uostatńe $2 dńi.<br />$3",
+       "rclinks": "Ukoż uostatńe $1 sprowjyń bez uostatńe $2 dńi.",
        "diff": "zmj.",
        "hist": "gysz.",
        "hide": "Schrůń",
        "undeleteviewlink": "ukoż",
        "undeleteinvert": "Zaznocz na uopy",
        "undeletecomment": "Powůd wćepańo nazod:",
-       "undeletedrevisions": "Wćepano nazod {{PLURAL:$1|1 wersyja|$1 wersyje|$1 wersyji}}",
-       "undeletedrevisions-files": "Wćepano nazod $1 {{PLURAL:$1|wersyja|wersyje|wersyji}} i $2 {{PLURAL:$2|plik|pliki|plikůw}}",
-       "undeletedfiles": "wćepou nazod $1 {{PLURAL:$1|plik|pliki|plikůw}}",
        "cannotundelete": "Wćepańy nazod ńy powjodo śe.\nKto inkšy můgu wćepać nazod zajta pjyrwšy.",
        "undeletedpage": "'''Wćepano nazod zajta $1.'''\n\nUobejřij [[Special:Log/delete|rejer wyćepań]], kejbyś chćou přeglůndnůnć uostatnie uoperacyje wyćepywańo i wćepywańo nazod zajtůw.",
        "undelete-header": "Uobejřij [[Special:Log/delete|rejer wyćepań]] coby sprawdźić uostatńo wyćepane zajty.",
        "logentry-newusers-create": "Kůnto {{GENDER:$2|używocza}} $1 uostało stworzůne",
        "logentry-upload-upload": "$1 {{GENDER:$2|posłoł|posłała}} $3",
        "rightsnone": "podstawowo",
-       "revdelete-summary": "uopis pomjyńań",
        "searchsuggest-search": "Sznupej we {{SITENAME}}",
        "expand_templates_ok": "OK"
 }
index 1c99b9e..d759fbe 100644 (file)
        "login": "புகுபதிகை",
        "login-security": "தங்கள் அடையாளத்தை உறுதிப்படுத்தவும்",
        "nav-login-createaccount": "புகுபதிகை/பயனர் கணக்கு தொடக்கம்",
-       "userlogin": "புகுபதிகை/பயனர் கணக்கு தொடக்கம்",
-       "userloginnocreate": "புகுபதிகை",
        "logout": "விடுபதிகை",
        "userlogout": "விடுபதிகை",
        "notloggedin": "புகுபதிகை செய்யப்படவில்லை",
        "userlogin-noaccount": "பயனர் கணக்கு இல்லையா?",
        "userlogin-joinproject": "{{SITENAME}}-இல் இணைக",
-       "nologin": "பயனர் கணக்கு இல்லையா? '''$1'''.",
-       "nologinlink": "கணக்கு ஒன்றை உருவாக்கவும்",
        "createaccount": "புதிய கணக்கை உருவாக்கு",
-       "gotaccount": "ஏற்கனவே பயனர் கணக்கு உள்ளதா? '''$1'''.",
-       "gotaccountlink": "புகுபதிகை",
-       "userlogin-resetlink": "உங்கள் புகுபதிகைக் குறிப்புகளை மறந்துவிட்டீர்களா?",
        "userlogin-resetpassword-link": "உங்கள் கடவுச் சொல்லை மறந்து விட்டீர்களா?",
        "userlogin-helplink2": "உள்நுழைவதற்கு உதவி",
        "userlogin-loggedin": "நீங்கள் {{GENDER:$1|$1}} ஆக புகுபதியவில்லை.\nகீழ் உள்ள படிவத்தை பயன்படுத்தி இன்னொரு பயனராக புகுபதிவு செய்க.",
        "createacct-another-email-ph": "உங்கள் மின்னஞ்சல் முகவரியை உள்ளிடுக",
        "createaccountmail": "தற்காலிகமாக எழுந்தமான ஒரு கடவுச்சொல்லை பயன்படுத்துக, அதை குறித்துள்ள மின்னஞ்சலுக்கு அனுப்புக",
        "createacct-realname": "உண்மைப் பெயர் (விருப்பத்தேர்வு)",
-       "createaccountreason": "காரணம்:",
        "createacct-reason": "காரணம்",
        "createacct-reason-ph": "தாங்கள் ஏன் மற்றொரு கணக்கைத் துவங்குகிறீர்கள்?",
        "createacct-submit": "உங்கள் கணக்கை உருவாக்குக",
        "preview": "முன்தோற்றம்",
        "showpreview": "முன்தோற்றம் காட்டு",
        "showdiff": "மாற்றங்களைக் காட்டு",
-       "blankarticle": "<strong>எச்சரிக்கை:</strong> நீங்கள் வெற்றுப்பக்கத்தை உருவாக்குகிறீர்கள்.\n\"{{int:savearticle}}\" ஐ மீண்டும் அழுத்தினால், எந்த உள்ளடக்கமும் இன்றி பக்கம் உருவாக்கப்படும்.",
+       "blankarticle": "<strong>எச்சரிக்கை:</strong> நீங்கள் வெற்றுப்பக்கத்தை உருவாக்குகிறீர்கள்.\n\"$1\" ஐ மீண்டும் அழுத்தினால், எந்த உள்ளடக்கமும் இன்றி பக்கம் உருவாக்கப்படும்.",
        "anoneditwarning": "<strong>எச்சரிக்கை:</strong> நீங்கள் புகுபதிகை செய்யவில்லை. நீங்கள் தொகுத்தால் உங்கள் ஐ.பி. முகவரி எல்லோருக்கும் தெரியும்படி இருக்கும். நீங்கள் <strong>[$1 புகுபதிகை செய்தாலோ]</strong> அல்லது <strong>[$2 புதிய கணக்கு உருவாக்கினாலோ]</strong>, பிற பயன்களோடு நீங்கள் செய்யும் தொகுப்புகள் உங்கள் பயனர் பெயரோடு தொடர்புப்படுத்திக்காட்டப்படும்.",
        "anonpreviewwarning": "நீங்கள் புகுபதிகை செய்யவில்லை. இந்த பக்கத்தை சேமித்தால் உஙகள் ஐ.பி. முகவரி இதன் வரலாற்றுப் பக்கத்தில் பதிவாகும்.",
        "missingsummary": "'''நினைவூட்டல்:''' நீர் தொகுப்புச் சுருக்கமொன்றைக் கொடுக்கவில்லை.\nஇன்னொரு முறை பக்கத்தை சேமி என்பதை அழுத்தினால் உங்கள் தொகுப்பு சுருக்கமெதுவுமில்லாமல் சேமிக்கப்படும்.",
-       "selfredirect": "<strong>எச்சரிக்கை:</strong> நீங்கள் இப்பக்கத்தை இதற்கே வழிமாற்றுகிறீர்கள்.\nநீங்கள் வழிமாற்றுக்கான இலக்கை தவறாக குறிப்பிட்டிருக்கலாம், அல்லது தவறான பக்கத்தை திருத்திக் கொண்டிருக்கலாம்.\n\"{{int:savearticle}}\" ஐ மீண்டும் அழுத்தினால், எவ்வகையிலாது வழிமாற்று உருவாக்கப்படும்.",
+       "selfredirect": "<strong>எச்சரிக்கை:</strong> நீங்கள் இப்பக்கத்தை இதற்கே வழிமாற்றுகிறீர்கள்.\nநீங்கள் வழிமாற்றுக்கான இலக்கை தவறாக குறிப்பிட்டிருக்கலாம், அல்லது தவறான பக்கத்தை திருத்திக் கொண்டிருக்கலாம்.\n\"$1\" ஐ மீண்டும் அழுத்தினால், எவ்வகையிலாது வழிமாற்று உருவாக்கப்படும்.",
        "missingcommenttext": "கீழே சுருக்கமொன்றக் குறிப்பிடவும்.",
        "missingcommentheader": "'''நினைவூட்டல்:'''  தாங்கள் தொகுத்தற்கான சுருக்கமான உரையை கொடுக்கவில்லை.\n\nஇன்னொருமுறை 'சேமி' என்பதனை அழுத்தினால் எந்தவித சுருக்கமான உரையின்றி சேமிக்கப்படும்.",
        "summary-preview": "சுருக்க முன்தோற்றம்:",
        "editingsection": "தொகுப்பு $1 (பிரிவு)",
        "editingcomment": "$1 தொகுக்கப்படுகிறது (புதிய பிரிவு)",
        "editconflict": "முரண்பாடுகளைத் தொகுக்கவும்: $1",
-       "explainconflict": "நீங்கள் தொகுக்கத் தொடங்கியதின் பின்னர் வேறு பயனரொருவர் இப் பக்கத்தில் மாற்றங்கள்ச் செய்துள்ளார்.\nஉரைப் பகுதியின்  மேற்பக்கம் தற்போதுள்ள உரைகளைக் கொண்டிருகிறது.\nநீங்கள் செய்த மாற்றங்கள் உரையின் கீழே தரப்பட்டுள்ளன.\nநீங்கள் உங்களுடைய மாற்றங்களை ஏற்கெனவேயிருக்கும் உரையுடன் ஒருங்கிணைக்க வேண்டியிருக்கும்.\n\"{{int:savearticle}}\" என்ற பொத்தானை அழுத்தும்போது உரைப்பகுதியின் மேற்பக்கத்திலுள்ள உரை '''மட்டுமே''' சேமிக்கப்படும்.",
+       "explainconflict": "நீங்கள் தொகுக்கத் தொடங்கியதின் பின்னர் வேறு பயனரொருவர் இப் பக்கத்தில் மாற்றங்கள்ச் செய்துள்ளார்.\nஉரைப் பகுதியின்  மேற்பக்கம் தற்போதுள்ள உரைகளைக் கொண்டிருகிறது.\nநீங்கள் செய்த மாற்றங்கள் உரையின் கீழே தரப்பட்டுள்ளன.\nநீங்கள் உங்களுடைய மாற்றங்களை ஏற்கெனவேயிருக்கும் உரையுடன் ஒருங்கிணைக்க வேண்டியிருக்கும்.\n\"$1\" என்ற பொத்தானை அழுத்தும்போது உரைப்பகுதியின் மேற்பக்கத்திலுள்ள உரை '''மட்டுமே''' சேமிக்கப்படும்.",
        "yourtext": "உங்கள் உரை",
        "storedversion": "சேமிக்கப்பட்ட பதிப்பு",
        "nonunicodebrowser": "'''எச்சரிக்கை: உங்களது உலாவி ஒருங்குக்குறியை ஆதரிக்கவில்லை. உங்கள் தொகுப்புக்களைத் பாதுகாப்பகத் தொடர்ந்துச் செய்ய வழிமுறையொன்றுள்ளது: அஸ்கியில்லாத எழுத்துகள் அடி பதினாறைக் கொண்ட குறிகளாக தொகுப்புக் கட்டத்தில் தென்படும்.'''",
        "right-editsemiprotected": "\"{{int:protect-level-autoconfirmed}}\" ஆல் பாதுகாக்கப்பட்ட பக்கங்களை திருத்து",
        "right-editcontentmodel": "பக்கத்தின் உள்ளடக்க வகையைத் திருத்து",
        "right-editinterface": "பயனர் இடைமுகப்பை தொகுக்கவும்",
-       "right-editusercssjs": "மற்ற பயனர்களின் CSS மற்றும் JavaScript கோப்புகளை திருத்து",
        "right-editusercss": "மற்ற பயனர்களின் CSS கோப்புகளை திருத்து",
        "right-edituserjs": "மற்ற பயனர்களின் சாவாநிரல் (JavaScript) கோப்புகளைத் திருத்து",
        "right-editmyusercss": "உங்களின் CSS கோப்புகளைத் திருத்து",
        "rcfilters-filter-editsbyself-label": "தங்களின் சொந்த தொகுப்புகள்",
        "rcfilters-filter-editsbyself-description": "தங்களது தொகுப்புகள்.",
        "rcfilters-filter-editsbyother-label": "மற்றவர் தொகுப்புகள்",
-       "rcfilters-filter-userExpLevel-newcomer-label": "புது வரவுகள்",
-       "rcfilters-filter-userExpLevel-learner-label": "கற்போர்",
-       "rcfilters-filter-userExpLevel-experienced-label": "அனுபவமுள்ள பயனர்கள்",
-       "rcfilters-filter-userExpLevel-experienced-description": "30 நாட்கள் நடவடிக்கை மற்றும் 500 தொகுப்புகளுக்கு மேல்",
+       "rcfilters-filter-user-experience-level-newcomer-label": "புது வரவுகள்",
+       "rcfilters-filter-user-experience-level-learner-label": "கற்போர்",
+       "rcfilters-filter-user-experience-level-experienced-label": "அனுபவமுள்ள பயனர்கள்",
+       "rcfilters-filter-user-experience-level-experienced-description": "30 நாட்கள் நடவடிக்கை மற்றும் 500 தொகுப்புகளுக்கு மேல்",
        "rcfilters-filtergroup-automated": "தானியக்க பங்களிப்பு",
        "rcfilters-filter-bots-label": "தானியங்கி",
        "rcfilters-filter-bots-description": "தானியக்க கருவிகளால ஆன தொகுப்புகள்",
        "rcshowhidecategorization": "பக்க பகுப்பாக்கத்தை $1",
        "rcshowhidecategorization-show": "காட்டு",
        "rcshowhidecategorization-hide": "மறை",
-       "rclinks": "கடைசி $2 நாட்களில் கடைசி $1 மாற்றங்களைக் காட்டு.<br />$3",
+       "rclinks": "கடைசி $2 நாட்களில் கடைசி $1 மாற்றங்களைக் காட்டு.",
        "diff": "வேறுபாடு",
        "hist": "வரலாறு",
        "hide": "மறை",
        "withoutinterwiki-legend": "முன்னொட்டு",
        "withoutinterwiki-submit": "காட்டு",
        "fewestrevisions": "மிகக் குறைந்த திருத்தங்களைக் கொண்டப் பக்கங்கள்",
-       "nbytes": "$1 {{PLURAL:$1|பà¯\88à®\9fà¯\8dà®\9fà¯\81|பà¯\88à®\9fà¯\8dà®\9fà¯\81கள்}}",
+       "nbytes": "$1 {{PLURAL:$1|à®\8eணà¯\8dணà¯\81னà¯\8dமி|à®\8eணà¯\8dணà¯\81னà¯\8dமிகள்}}",
        "ncategories": "$1 {{PLURAL:$1|பகுப்பு|பகுப்புகள்}}",
        "ninterwikis": "$1 {{PLURAL:$1|இடைவிக்கி|இடைவிக்கிகள்}}",
        "nlinks": "$1 {{PLURAL:$1|இணைப்பு|இணைப்புக்கள்}}",
        "undeleteviewlink": "பார்வையிடு",
        "undeleteinvert": "தேர்வு செய்ததை ரத்து  செய்",
        "undeletecomment": "காரணம்:",
-       "undeletedrevisions": "{{PLURAL:$1|1 திருத்தம் மீட்கப்பட்டது|$1 திருத்தங்கள் மீட்கப்பட்டன}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 திருத்தம்|$1 திருத்தங்கள்}} மற்றும் {{PLURAL:$2|1 கோப்பு|$2 கோப்புகள்}} மீட்கப்பட்டன.",
-       "undeletedfiles": "{{PLURAL:$1|ஒரு கோப்பு மீட்டெடுக்கப்பட்டது|$1 கோப்புகள் மீட்டெடுக்கப்பட்டன}}",
        "cannotundelete": "மீள்வித்தல் தோல்வி:\n$1",
        "undeletedpage": "'''$1 மீட்கப்பட்டது'''\n\nஅண்மைய நீக்கல்களுக்கும் மீட்புக்களுக்கும் [[Special:Log/delete|நீக்கல் பதிவைப்]] பார்க்கவும்.",
        "undelete-header": "அண்மையில் நீக்கப்பட்ட பக்கங்களைக் காண [[Special:Log/delete|நீக்கல் பதிவைப்]] பார்க்க.",
        "logentry-managetags-deactivate": "$1 பயனர் மற்றும் தானியங்கிகள் பயன்படுத்துவதற்காக \"$4\" தொடுப்பை {{GENDER:$2|செயற்பாட்டை நிறுத்தினார்}}",
        "log-name-tag": "குறிச்சொல் குறிப்பு",
        "rightsnone": "(எதுவுமில்லை)",
-       "revdelete-summary": "தொகுப்பு சுருக்கத்தை",
        "feedback-adding": "பக்கத்தில் கருத்தைச் சேர்க்கிறது...",
        "feedback-back": "பின்செல்க",
        "feedback-bugcheck": "சிறப்பு! அது ஏற்கனவே  [ $1 தெரிந்த  bugs ] என்பதை மட்டும்  சரிபார்க்கவும்,",
index 998f374..3160262 100644 (file)
@@ -10,7 +10,8 @@
                        "Soundarya shetty s",
                        "రహ్మానుద్దీన్",
                        "BHARATHESHA ALASANDEMAJALU",
-                       "Lokesha kunchadka"
+                       "Lokesha kunchadka",
+                       "Kiranpoojary"
                ]
        },
        "tog-underline": "ಲಿಂಕ್‍ಲೆದ ತಿರ್ತ್ ಗೆರೆ(ಅಂಡರ್ ಲೈನ್) ಪಾಡ್‍ಲೆ",
@@ -38,8 +39,8 @@
        "tog-enotifminoredits": "ಎಲ್ಯೆಲ್ಯ ಬದಲಾವನೆ ಆಂಡಲ ಎಂಕ್ ಇ-ಅಂಚೆ ಕಡಪುಡ್ಲೆ",
        "tog-enotifrevealaddr": "ಪ್ರಕಟಣೆ ಇ-ಮೇಲ್‍ಡ್ ಎನ್ನ ಇ-ಮೇಲ್ ವಿಳಾಸನ್ ತೊಜ್ಪಾಲೆ",
        "tog-shownumberswatching": "ಪುಟೊನು ತೂವೊಂದುಪ್ಪುನಂಚಿನ ಸದಸ್ಯೆರ್‍ನ ಸಂಖ್ಯೆನ್ ತೊಜ್ಪಾಲೆ",
-       "tog-oldsig": "ಇತ್ತೆದ ಸೈನ್.",
-       "tog-fancysig": "ವಿà²\95ಿà²\9fà³\86à²\95à³\8dಸà³\8dâ\80\8cà²\9fà³\8dâ\80\8dà²\97à³\8d à²¦à²¸à³\8dà²\95ತà³\8dತà³\8dâ\80\8cದ à²\89ಪà²\9aಾರà³\8a(ಸà³\8dವà²\82ತà³\8a à²\9aಾಲನà³\86ದ à²\95à³\8aà²\82ಡಿ à²\87ದà³\8dಯà²\82ದಿಲà³\86à²\95)",
+       "tog-oldsig": "ಇತ್ತೆ ಉಪ್ಪುನ ದಸ್ಕತ್ತ್",
+       "tog-fancysig": "ದಸà³\8dà²\95ತà³\8dತà³\8dâ\80\8cನà³\8d à²µà²¿à²\95ಿà²\9fà³\86à²\95à³\8dಷà³\8dà²\9fà³\8d à²\86ದà³\8d à²¦à³\86ತà³\8dತà³\8aನà³\81 (ಸà³\8dವಯà²\82 à²\95à³\8aà²\82ಡಿ à²¦à²¾à²\82ತà³\86)",
        "tog-uselivepreview": "ನೇರೊ ಮುನ್ನೋಟೊನು ಉಪಯೋಗ ಮಲ್ಪುಲೆ",
        "tog-forceeditsummary": "ಸಂಪಾದನೆ ಸಾರಾಂಸೊನು ಕಾಲಿ ಬುಡ್‍ಂದ್ ಎಂಕ್ ನೆನಪು ಮಲ್ಪುಲೆ",
        "tog-watchlisthideown": "ವೀಕ್ಷಣಾಪಟ್ಟಿಡ್ ಎನ್ನ ಸಂಪಾದನೆಲೆನ್ ತೊಜ್‍ಪಾವೊಡ್ಚಿ",
@@ -53,7 +54,7 @@
        "tog-diffonly": "ವ್ಯತ್ಯಾಸದ ತಿರ್ತುಪ್ಪುನಂಚಿನ ಪುಟೊತ ವಿವರೊಲೆನ್ ತೊಜ್’ಪಾವೊಚಿ",
        "tog-showhiddencats": "ದೆಂಗಾದಿನ ವರ್ಗೊಲೆನ್ ತೊಜ್ಪಾಲೆ",
        "tog-norollbackdiff": "ದೆತ್ತ್‌ ಪಾಡ್‍ನೆಡ್‍ದ್ ಬುಕ್ಕೊ ವ್ಯತ್ಯಾಸೊನು ಬುಡ್‍ಲೆ",
-       "tog-useeditwarning": "ಸà²\82ಪà³\8aಲಿತà³\8dâ\80\8dನà³\86ನà³\8d à²\92ರಿಪಾವà²\82ದà³\86 à²ªà²¿à²¦à²¡à³\8dà²\82ಡ à²\8eನನà³\8d à²\8eà²\9aà³\8dà²\9aರಿಸಲೆ",
+       "tog-useeditwarning": "ಸà²\82ಪà³\8aಲಿತà³\8dâ\80\8dನà³\86ನà³\8d à²\92ರಿಪಾವà²\82ದà³\86 à²ªà²¿à²¦à²¡à³\8dà²\82ಡ à²\8eನನà³\8d à²\8eà²\9aà³\8dà²\9aರಿಪà³\81ಲೆ",
        "tog-prefershttps": "ಏಪೊಗುಲ ಲಾಗಿನ್ ಆಯಿನ ಬುಕ್ಕೊ ಜಾಗ್ರತೆದ ಸಂಪರ್ಕೊನು  ಬಳಕೆ ಮಲ್ಪುಲೆ",
        "underline-always": "ಯಾಪಲ",
        "underline-never": "ಯಾಪಗ್ಲಾ ಇಜ್ಜಿ",
        "june": "ಜೂನ್",
        "july": "ಜುಲಾಯಿ",
        "august": "ಆಗೋಸ್ಟು",
-       "september": "ಸಪ್ಟಂಬರ",
-       "october": "ಅಕ್ಟೋಬರ",
-       "november": "ನವà²\82ಬರà³\8a",
-       "december": "ದಸà²\82ಬರà³\8a",
+       "september": "ಸಪ್ಟಂಬರ",
+       "october": "ಅಕ್ಟೋಬರ",
+       "november": "ನವà²\82ಬರà³\8d",
+       "december": "ದಸà²\82ಬರà³\8d",
        "january-gen": "ಜನವರಿ",
        "february-gen": "ಪೆಬ್ರವರಿ",
        "march-gen": "ಮಾರ್ಚಿ",
        "jun": "ಜೂನ್",
        "jul": "ಜುಲಾಯಿ",
        "aug": "ಅಗೋಸ್ಟು",
-       "sep": "ಸಪ್ಟಂಬರ",
-       "oct": "ಅಕ್ಟೋಬರ",
-       "nov": "ನವà²\82ಬರà³\8a",
-       "dec": "ದಸà²\82ಬರà³\8a",
+       "sep": "ಸಪ್ಟಂಬರ",
+       "oct": "ಅಕ್ಟೋಬರ",
+       "nov": "ನವà²\82ಬರà³\8d",
+       "dec": "ದಸà²\82ಬರà³\8d",
        "january-date": "ಜನವರಿ $1",
        "february-date": "ಪೆಬ್ರುವರಿ $1",
        "march-date": "ಮಾರ್ಚಿ $1",
        "category_header": "\"$1\" ವರ್ಗಡುಪ್ಪುನಂಚಿನ ಲೇಕನೊಲು",
        "subcategories": "ಉಪ ವರ್ಗೊಲು",
        "category-media-header": "\"$1\" ವರ್ಗಡುಪ್ಪುನಂಚಿನ ಚಿತ್ರೊ/ಶಬ್ಧೊ ಫೈಲ್‍ಲು",
-       "category-empty": "''à²\88 à²µà²°à³\8dà²\97à³\8aಡà³\81 à²¸à²¦à³\8dಯà²\97à³\8d à²\93ವà³\81ಲ à²ªà³\81à²\9fà³\8aಲಾವಡà³\8d à²\85ತà³\8dತà³\8dâ\80\99ನà³\8dಡ ಚಿತ್ರೊಲಾವಡ್ ಇಜ್ಜಿ.''",
-       "hidden-categories": "{{PLURAL:$1|Hidden category|ದà³\86à²\82à²\97ಾದà³\8d à²¦à³\80ಡà³\8dâ\80\8dನ ವರ್ಗೊಲು}}",
+       "category-empty": "''à²\88 à²µà²°à³\8dà²\97à³\8aಡà³\81 à²¸à²¦à³\8dಯà²\97à³\8d à²\93ವà³\81ಲ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲಾವಡà³\8d à²\85ತà³\8dತà²\82ಡ ಚಿತ್ರೊಲಾವಡ್ ಇಜ್ಜಿ.''",
+       "hidden-categories": "{{PLURAL:$1|Hidden category|ದà³\86à²\82à²\97ಾದà³\8d à²¦à³\80ತಿನ ವರ್ಗೊಲು}}",
        "hidden-category-category": "ದೆಂಗಾದ್ ದೀತಿನ ವರ್ಗೊಲು",
        "category-subcat-count": "{{PLURAL:$2|This category has only the following subcategory.|ಈ ವರ್ಗೊಡು ಈ ತಿರ್ತ್‍ದ {{PLURAL:$1|subcategory|$1 ಉಪವರ್ಗೊಲೆನ್}} ಸೇರಾದ್, ಒಟ್ಟಿಗೆ $2 ಉಂಡು.}}",
        "category-subcat-count-limited": "ಈ ವರ್ಗೊಡು ತಿರ್ತ್ ತೊಜ್ಪಾದಿನ {{PLURAL:$1|ಉಪವರ್ಗ|$1 ಉಪವರ್ಗೊಲು}} ಉಂಡು.",
-       "category-article-count": "{{PLURAL:$2|This category contains only the following page.|ಈ ವರ್ಗೊಡು ಈ ತಿರ್ತ್‍ದ {{PLURAL:$1|page is|$1 ಪುಟೊಲೆನ್}} ಸೇರ್ಪಾದ್, ಒಟ್ಟಿಗೆ $2 ಪುಟೊಲು ಉಂಡು.}}",
+       "category-article-count": "{{PLURAL:$2|ಈ ವರ್ಗೊಡು ತಿರ್ತ್ ಉಪ್ಪುನ ಒಂಜಿ ಪುಟೊ ಮಾತ್ರ ಉಂಡು|ಒಟ್ಟು $2 ಪುಟೊಕುಲೆಡ್ ತಿರ್ತ್ ಉಪ್ಪುನ {{PLURAL:$1|ಪುಟೊ|$1 ಪುಟೊಕುಲು}} ಈ ವರ್ಗೊಡು ಉಂಡು.}}",
        "category-article-count-limited": "ಪ್ರಸಕ್ತ ವರ್ಗೊಡು ಈ ತಿರ್ತ್’ದ {{PLURAL:$1|ಪುಟ ಉಂಡು|$1 ಪುಟೊಲು ಉಂಡು}}.",
        "category-file-count": "{{PLURAL:$2|ಈ ವರ್ಗೊಡು ಈ ತಿರ್ತ್‍ದ ಕಾಲಿ ಒಂಜಿ ಫೈಲ್ ಉಂಡು.|ಈ ವರ್ಗೊಡು ಈ ತಿರ್ತ್‍ದ {{PLURAL:$1| ಫೈಲ್‍ನ್|$1  ಫೈಲ್‍ನ್}} ಸೇರ್ಪಾದ್, ಒಟ್ಟಿಗೆ $2 ಉಂಡು.}}",
        "category-file-count-limited": "ಪ್ರಸಕ್ತ ವರ್ಗೊಡು ಈ ತಿರ್ತ್’ದ {{PLURAL:$1|ಫೈಲ್ ಉಂಡು|$1 ಫೈಲ್’ಲು ಉಂಡು}}.",
        "listingcontinuesabbrev": "ದುಂಬು.",
        "index-category": "ವಿಷಯ ಸೂಚಿ ಪುಟಕ್‘ಲು",
-       "noindex-category": "ವಿಷಯಸà³\82à²\9aಿ à²\87à²\9cà³\8dà²\9cಾà²\82ದಿನ à²ªà³\81à²\9fà²\95à³\8dâ\80\98ಲು",
+       "noindex-category": "ವಿಷಯಸà³\82à²\9aಿ à²\87à²\9cà³\8dà²\9cಾà²\82ದಿನ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲು",
        "broken-file-category": "ಪುಟಡ್ ಇಜ್ಜಂದಿನ ಕಡತದ ಕೊಂಡಿಲು",
        "about": "ಎಂಕ್ಲೆನ ಬಗ್ಗೆ",
        "article": "ಲೇಖನ ಪುಟ",
        "anontalk": "ಪಾತೆರ್ಲೆ",
        "navigation": "ಸಂಚಾರೊ",
        "and": "&#32;ಬೊಕ್ಕ",
-       "qbfind": "ನಾಡ್’ಲೆ",
-       "qbbrowse": "ಬ್ರೌಸ್",
-       "qbedit": "ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ",
-       "qbpageoptions": "ಈ ಪುಟ",
-       "qbmyoptions": "ಎನ್ನ ಪುಟೊಲು",
        "faq": "ಸಾಮಾನ್ಯವಾದ್ ಕೇನುನ ಪ್ರಶ್ನೆಲು",
-       "faqpage": "Project:ಸಾಮಾನ್ಯವಾದ್ ಕೇನುನ ಪ್ರಶ್ನೆಲು",
        "actions": "ಕ್ರಿಯೆಕ್ಕುಲು",
        "namespaces": "ಪುದರ್‍ದ ವರ್ಗೊಲು",
        "variants": "ದಿಂಜ",
        "edit-local": "ಸ್ಥಳೀಯ ವಿವರಣೆನ್ ಸೇರಾಲೆ",
        "create": "ಸೃಷ್ಟಿಸಾಲೆ",
        "create-local": "ಸ್ಥಳೀಯ ವಿವರಣೆನ್ ಸೇರಾಲೆ",
-       "editthispage": "ಈ ಪುಟೊನು ಬದಲಾಯಿಸಾಲೆ",
-       "create-this-page": "ಈ ಪುಟೊನು ಸೃಷ್ಟಿಸಾಲೆ",
-       "delete": "ದೆತ್ತ್ ಪಾಡ್ಲೆ",
-       "deletethispage": "ಈ ಪುಟೊನು ದೆತ್ತ್ ಪಾಡ್ಲೆ",
-       "undeletethispage": "ಈ ಪುಟೊ ದೆತ್ತ್‌ ಪಾಡುನವು ರದ್ದಾತ್ಂಡ್",
+       "delete": "ಮಾಜಾಲೆ",
        "undelete_short": "ಪಿರ ಪಾಡ್ಲೆ {{PLURAL:$1|ಒ೦ಜಿ ಬದಲಾವಣೆ|$1 ಬದಲಾವಣೆಲು}}",
        "viewdeleted_short": "ನೋಟ{{PLURAL:$1|1 ಡಿಲೀಟ್ ಆತಿನ ಸಂಪಾದನೆ|$1 ಡಿಲೀಟ್ ಆತಿನ ಸಂಪಾದನೆಲು}}",
        "protect": "ಸ೦ರಕ್ಷಿಸಾಲೆ",
        "protect_change": "ಬದಲಾಲೆ",
-       "protectthispage": "ಈ ಪುಟೊನು ಸ೦ರಕ್ಷಿಸಾಲೆ",
        "unprotect": "ರಕ್ಷಣೆನ್ ಬದಲ್‍ಪುಲೆ",
-       "unprotectthispage": "ಈ ಪುಟೊತ ರಕ್ಷಣೆನ್ ಬದಲ್‍ಪುಲೆ",
        "newpage": "ಪೊಸ ಪುಟೊ",
-       "talkpage": "ಪುಟದ ಬಗ್ಗೆ ಚರ್ಚೆ ಮನ್ಪುಲೆ",
        "talkpagelinktext": "ಪಾತೆರ",
        "specialpage": "ವಿಶೇಷ ಪುಟ",
        "personaltools": "ಸ್ವಂತೊ ಉಪಕರಣೊಲು",
-       "articlepage": "ಲೇಖನ ಪುಟೊನು ತೂಲೆ",
        "talk": "ಚರ್ಚೆ",
        "views": "ಅಬಿಪ್ರಾಯೊಲು",
        "toolbox": "ಉಪಕರಣೊಲು",
-       "userpage": "ಸದಸ್ಯೆರ್ನ ಪುಟೊನು ತೂಲೆ",
-       "projectpage": "ಪ್ರೊಜೆಕ್ಟ್ ಪುಟೊನು ತೂಲೆ",
        "imagepage": "ಫೈಲ್‍ದ ಪುಟೊನು ತೂಲೆ",
        "mediawikipage": "ಸಂದೇಶ ಪುಟೊನು ತೂಲೆ",
        "templatepage": "ಟೆಂಪ್ಲೇಟ್ ಪುಟೊನು ತೂಲೆ",
        "viewtalkpage": "ಚರ್ಚೆನ್ ತೂಲೆ",
        "otherlanguages": "ಬೇತೆ ಬಾಸೆಲೆಡ್",
        "redirectedfrom": "($1 ರ್ದ್ ಪಿರ ನಿರ್ದೇಸನೊದ)",
-       "redirectpagesub": "ಪà³\81ನರà³\8dನಿರà³\8dದà³\87ಶನ à²ªà³\81à²\9f",
+       "redirectpagesub": "ಪಿರ à²¨à²¿à²°à³\8dದà³\87ಶನà³\8aದ à²ªà³\81à²\9fà³\8a",
        "redirectto": "ಪಿರ ಕಡಪುಡ್ಲೆ:",
        "lastmodifiedat": "ಈ ಪುಟೊ ಇಂದೆತ ದುಂಬು $2, $1 ಗ್ ಬದಲಾತ್ಂಡ್.",
        "viewcount": "ಈ ಪುಟೊನು {{PLURAL:$1|1 ಸರಿ|$1 ಸರಿ}} ತೂತೆರ್.",
        "ok": "ಸರಿ",
        "retrievedfrom": "\"$1\"ರ್ದ್ ದೆತೊನ್ನಂಚಿನ",
        "youhavenewmessages": "ಇರೆಗ್ $1 ಉಂಡು ($2).",
-       "youhavenewmessagesfromusers": "{{PLURAL:$4|ನಿà²\95à³\8dà²\95à³\8d}} {{PLURAL:$3|ನಾನ à²\92ರಿ à²¸à²¦à²¸à³\8dಯಡà³\8dದà³\8d|$3 à²¸à²¦à²¸à³\8dಯà³\86ರà³\86à²\97್}} $1 ಉಂಡು. ($2)",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|à²\88ರà³\86à²\97à³\8d}} {{PLURAL:$3|ನನà³\8aರಿ à²¸à²¦à²¸à³\8dಯà³\86ಡà³\8dದà³\8d|$3 à²¸à²¦à²¸à³\8dಯà³\86ರà³\86ಡà³\8dದ್}} $1 ಉಂಡು. ($2)",
        "youhavenewmessagesmanyusers": " ನಿಕ್ಲೆಗ್ ದಿಂಜ ಸದಸ್ಯೆರೆಡ್ದ್ $1 ಉಂಡು ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|ಒಂಜಿ ಪೊಸ ಸಂದೇಸೊ|999=ಪೊಸ ಸಂದೇಸೊಲು}}",
-       "newmessagesdifflinkplural": "ಇಂಚಿಪದೊದ{{PLURAL:$1|ಬದಲಾವಣೆ|999=ಬದಲಾವಣೆಲು}}",
+       "newmessagesdifflinkplural": "ಇಂಚಿಪದ {{PLURAL:$1|ಬದಲಾವಣೆ|999=ಬದಲಾವಣೆಲು}}",
        "youhavenewmessagesmulti": "$1 ಡ್ ಇರೆಗ್ ಪೊಸ ಸಂದೇಶೊಲು ಉಂಡು",
        "editsection": "ಸಂಪೊಲಿಪುಲೆ",
        "editold": "ಸಂಪೊಲಿಪುಲೆ",
        "yourpassword": "ಪಾಸ್-ವರ್ಡ್:",
        "userlogin-yourpassword": "ಪ್ರವೇಸೊಪದೊ",
        "userlogin-yourpassword-ph": "ಪ್ರವೇಸೊ ಪದೊನ್ ನಮೂದಿಸಲೆ",
-       "createacct-yourpassword-ph": "ಪà³\8dರವà³\87ಸà³\8a à²ªà²¦à³\8aನà³\8d à²¨à²®à³\82ದಿಸಲೆ",
+       "createacct-yourpassword-ph": "ಪà³\8dರವà³\87ಸà³\8a à²ªà²¦à³\8aನà³\8d à²ªà²¾à²¡à³\8dâ\80\8cಲೆ",
        "yourpasswordagain": "ಪಾಸ್ವರ್ಡ್ ಪಿರ ಟೈಪ್ ಮಲ್ಪುಲೆ",
        "createacct-yourpasswordagain": "ಪ್ರವೇಸೊ ಪದೊನು ದೃಡೊ ಮಲ್ಪುಲೆ",
-       "createacct-yourpasswordagain-ph": "ಪ್ರವೇಸೊ ಪದೊನು ನನ ಒರ ನಮೂದಿಸಲೆ",
-       "userlogin-remembermypassword": "à²\8eನನà³\8d à²²à²¾à²\97ಿನà³\8d à²\86ತà³\87 à²¦à³\80ಡà³\8dಲà³\86",
+       "createacct-yourpasswordagain-ph": "ಪ್ರವೇಸೊ ಪದೊನು ನನೊರ ಪಾಡ್‍ಲೆ",
+       "userlogin-remembermypassword": "ಎನನ್ ಲಾಗಿನ್ ಆತೇ ದೀಲೆ",
        "userlogin-signwithsecure": "ರಕ್ಷಣೆದ ಕನೆಕ್ಷನ್ ಉಪಯೋಗಿಸಲೆ.",
        "cannotlogin-title": "ಇತ್ತೆ ಉಲಾಯಿ ಪೋಯರ್ ಸಾದ್ಯೊ ಅವೊಂತಿಜ್ಜಿ",
        "cannotloginnow-title": "ಇತ್ತೆ ಉಲಾಯಿ ಪೋಯರ್ ಸಾದ್ಯೊ ಇದ್ದಿ",
        "notloggedin": "ಲಾಗಿನ್ ಆತ್‘ಜ್ಜರ್",
        "userlogin-noaccount": "ಈರೆನ ಖಾತೆ ಇಜ್ಜೇ?",
        "userlogin-joinproject": "{{SITENAME}}ಗ್ ಸೇರ್ಲೆ",
-       "createaccount": "ಪà³\8aಸ à²\85à²\95à³\8dà²\95à³\8cà²\82à²\9fà³\8d ಸುರು ಮಲ್ಪುಲೆ",
+       "createaccount": "ಪà³\8aಸ à²\96ಾತà³\86 ಸುರು ಮಲ್ಪುಲೆ",
        "userlogin-resetpassword-link": "ಈರೆನೆ ಪ್ರವೇಸೊ ಪದೊ ಮರತ್ತ್‌ಂಡಾ?",
        "userlogin-helplink2": "ಲಾಗಿನ್ ಆಯರ ಸಹಾಯೊ",
        "userlogin-createanother": "ಪೊಸ ಕಾತೆ ಸುರು ಮಲ್ಪುಲೆ",
        "createacct-reason-ph": "ಈರ್ ದಾಯೆ ನಾನಲ ಒಂಜಿ ಕಾತೆ ದೆತ್ತೊಂದುಲ್ಲರ್?",
        "createacct-submit": "ಪೊಸ ಕಾತೆ ಸುರು ಮಲ್ಪುಲೆ",
        "createacct-another-submit": "ಪೊಸ ಕಾತೆ ಸುರು ಮಲ್ಪುಲೆ",
-       "createacct-benefit-heading": "{{SITENAME}}ಉಂಡ್ ನಿಕ್ಲೆನಂಚಿತ್ತಿನ ಎಡ್ದೆನ್ತಂಕ್ಲೆಡ್ದ್ ಉಂಡಾತುಂಡ್.",
+       "createacct-benefit-heading": "{{SITENAME}} ನಿಕ್ಲೆನಂಚಿತ್ತಿನ ಎಡ್ದೆಂತಿನಕ್ಲೆಡ್ದ್ ಉಂಡಾತ್‍ಂಡ್.",
        "createacct-benefit-body1": "{{PLURAL:$1|edit|ಸಂಪದೊನೆಲು}}",
        "createacct-benefit-body2": "{{PLURAL:$1|page|ಪುಟೊಕ್ಕುಲು}}",
        "createacct-benefit-body3": "ಇಂಚಿಪೊ{{PLURAL:$1|contributor|ಕಾಣಿಕೆ ಕೊರ್ನರ್}}",
        "noemailcreate": "ಈರ್ ಇತ್ತೆ ಉಪ್ಪುನ ಇ-ಅಂಚೆ ವಿಳಾಸ ಕೊರೊಡ್",
        "passwordsent": "\"$1\" ಇಂಬೆರೆನ ಪುದರ್‘ಡ್ ದಾಖಲಾತ್‘ನ ಇ-ಅಂಚೆ ವಿಳಾಸೊಗ್ ಪೊಸ ಪ್ರವೇಶಪದ ಕಡಪುಡ್‘ದುಂಡು.ಐನ್ ತೂದು ಬೊಕ್ಕ ಕುಡ ಲಾಗಿನ್ ಇನ್ ಆಲೆ.",
        "mailerror": "ಅಂಚೆ ಕಡಪುಡುನೆಡ್ ದೋಸೊ: $1",
+       "emailauthenticated": "ಇರೆನ ಈ-ಮೈಲ್ ವಿಲಾಸೊ $2 ತಾನಿ $3 ಕ್ಕ್ ಒಪ್ಪಿಗೆ ಆತ್ಂಡ್.",
        "noemailprefs": "ಈ ಸೌಲಭ್ಯೊಲ್ ಕೆಲಸ ಮಲ್ಪರೆ ಒಂಜಿ ಇ-ಅಂಚೆ ವಿಳಾಸೊನ್ ನಮೂದು ಮಲ್ಪುಲೆ.",
        "emailconfirmlink": "ಇರೆನ ಇ-ಅಂಚೆ ವಿಳಾಸೊನ್ ದೃಡೀಕರಣ ಮಲ್ಪುಲೆ.",
        "emaildisabled": "ಈ ಜಾಲತಾಣಡ್‍ದ್ ಮಿಂಚಂಚೆ ಕಡಪುಡರ ಆಪುಜ್ಜಿ",
        "passwordreset-domain": "ಕ್ಷೇತ್ರೊ:",
        "passwordreset-email": "ಇ-ಅಂಚೆ ವಿಳಾಸೊ",
        "passwordreset-invalidemail": "ಇಮೇಲ್ ಸರಿ ಇಜ್ಜಿ",
+       "changeemail": "ಈ-ಮೈಲ್ ವಿಲಾಸೊನು ಬದಲ್ ಮಲ್ಪುಲೆ ಅತ್ತಂಡ ದೆತ್ತ್ ಬುಡ್ಲೆ",
        "changeemail-oldemail": "ಇತ್ತೆತಾ ಈಮೇಲ್ ವಿಳಾಸೊ:",
        "changeemail-newemail": "ಪೊಸ ಇ-ಅಂಚೆ ವಿಳಾಸೊ:",
        "changeemail-none": "ಒವ್ವುಲಾ ಇಜ್ಜಿ",
        "accmailtitle": "ಪ್ರವೇಶಪದ ಕಡಪುಡ್‘ದುಂಡು",
        "newarticle": "(ಪೊಸತ್)",
        "newarticletext": "ನನಲ ಅಸ್ಥಿತ್ವಡ್ ಉಪ್ಪಂದಿನ ಪುಟೊಗು ಈರ್ ಬೈದರ್.\nಈ ಪುಟೊನು ಸ್ರಿಸ್ಟಿ ಮಲ್ಪೆರೆ ತಿರ್ತ್‍ದ ಚೌಕೊಡು ಬರೆಯೆರೆ ಸುರು ಮಲ್ಪುಲೆ.\n(ಜಾಸ್ತಿ ಮಾಹಿತಿಗ್ [$1 ಸಹಾಯ ಪುಟೊನು] ತೂಲೆ).\nಈ ಪುಟೊಕು ಈರ್ ತಪ್ಪಾದ್ ಬತ್ತಿತ್ತ್ಂಡ ಇರೆನ ಬ್ರೌಸರ್‍ದ '''back''' ಬಟನ್’ನ್ ಒತ್ತ್’ಲೆ.",
-       "noarticletext": "à²\88 à²ªà³\81à²\9fà³\8aಡà³\8d à²¸à²¦à³\8dಯà²\97à³\8d à²\92ವà³\8dವà³\87 à²¬à²°à²µà³\81ಲಾ à²\87à²\9cà³\8dà²\9cಿ, à²\88ರà³\8d à²¬à³\87ತà³\86 à²ªà³\81à²\9fà³\8aಡà³\8d [[Special:Search/{{PAGENAME}}|ಈ ಲೇಕನೊನು ನಾಡೊಲಿ]] <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ಸಂಬಂದೊ ಇತ್ತಿನ ದಾಕಲೆನ್ ನಾಡ್‍ಲೆ], ಅತ್ತಾಂಡ  [{{fullurl:{{FULLPAGENAME}}|action=edit}} ಈ ಪುಟೊನು ಸಂಪೊಲಿಪೊಲಿ]</span>.",
+       "noarticletext": "à²\88 à²ªà³\81à²\9fà³\8aà²\9fà³\81 à²¸à²¦à³\8dಯà²\97à³\8d à²\92ವà³\8dವà³\87 à²¬à²°à²µà³\81ಲಾ à²\87à²\9cà³\8dà²\9cಿ, à²\88ರà³\8d à²¬à³\87ತà³\86 à²ªà³\81à²\9fà³\8aà²\9fà³\81 [[Special:Search/{{PAGENAME}}|ಈ ಲೇಕನೊನು ನಾಡೊಲಿ]] <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ಸಂಬಂದೊ ಇತ್ತಿನ ದಾಕಲೆನ್ ನಾಡ್‍ಲೆ], ಅತ್ತಾಂಡ  [{{fullurl:{{FULLPAGENAME}}|action=edit}} ಈ ಪುಟೊನು ಸಂಪೊಲಿಪೊಲಿ]</span>.",
        "noarticletext-nopermission": "ಈ ಪುಟೊಡ್ ಸದ್ಯಗ್ ಒವ್ವೇ ಬರವುಲಾ ಇಜ್ಜಿ, ಈರ್ ಬೇತೆ ಪುಟೊಡ್ [[Special:Search/{{PAGENAME}}|ಈ ಲೇಕನೊನು ನಾಡೊಲಿ]] <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ಸಂಬಂದೊ ಇತ್ತ್‌ನ ಲಾಗ್‌ನ್ ನಾಡ್‍ಲೆ],[{{fullurl:{{FULLPAGENAME}}|action=edit}} ಅಂಡ ಇರೆಗ್ ಈ ಪುಟೊನು ಸಂಪೊಲಿಪೊಲಿಪುನೆಗ್ ಒಪ್ಪಿಗೆ ಇಜ್ಜಿ]</span>.",
        "userpage-userdoesnotexist": "ಬಳಕೆದಾರ ಖಾತೆ \"<nowiki>$1</nowiki>\" ದಾಖಲಾತ್‘ಜ್ಜಿ. ಈರ್ ಉಂದುವೇ ಪುಟನ್ ಸಂಪಾದನೆ ಮಲ್ಪರ ಉಂಡಾಂದ್ ಖಾತ್ರಿ ಮಲ್ತೊನಿ.",
-       "previewnote": "'''ಉಂದು ಕೇವಲ ಮುನ್ನೋಟ; ಪುಟೊನು ನನಲ ಒರಿಪಾದಿಜಿ ಪನ್ಪುನೇನ್ ಮರಪೊರ್ಚಿ!'''",
+       "userpage-userdoesnotexist-view": "ಸದಸ್ಯೆರೆ ಖಾತೆ \"$1\" ನೋಂದಣಿ ಆಯಿಜಿ.",
+       "previewnote": "'''ಉಂದು ಕೇವಲ ಮುನ್ನೋಟ; ಪುಟೊನು ನನಲ ಒರಿಪಾದಿಜಿ ಪನ್ಪುನೇನ್ ಮರಪಡೆ!'''",
        "editing": "$1 ಲೇಕನೊನು ಈರ್ ಸಂಪಾದನೆ ಮಲ್ತೊಂದುಲ್ಲರ್",
        "creating": "$1 ನ್ನು ಸ್ರಿಸ್ಟಿಸವೊಂದುಂಡು",
        "editingsection": "$1(ವಿಬಾಗೊನು) ಸಂಪದನೆ ಮಲ್ತೊಂದುಲ್ಲರ್",
        "template-semiprotected": "(ಅರೆ-ಸಂರಕ್ಷಿತೊ)",
        "hiddencategories": "ಈ ಪುಟೊನ್ {{PLURAL:$1|1 hidden category|$1 ಗುಪ್ತ ವರ್ಗೊಲೆಗ್}} ಸೇರ್ದ್‍ನ್ಡ್:",
        "permissionserrors": "ಅನುಮತಿ ದೋಷ",
-       "permissionserrorstext-withaction": "$2 à²\97à³\8d à²\87ರà³\86à²\97à³\8d à²\85ನà³\81ಮತಿ à²\87ದà³\8dದಿ, à²\85ಯಿà²\95à³\8d {{PLURAL:$1||reason|ಕಾರಣೊಲು}}:",
-       "moveddeleted-notice": "à²\88 à²ªà³\81à²\9fà³\8a à²\85ಸà³\8dತಿತà³\8dವà³\8aಡà³\8d à²\87ದà³\8dದಿ.\nಪà³\81à²\9fà³\8aದ à²¡à²¿à²²à³\80ಶನà³\8d à²\85ತà³\8dತà³\8dà²\82ಡà³\8d à²\95ಡಪà³\8dಪà³\81ಡà³\81ನà³\86 à²²à²¾à²\97à³\8dâ\80\8dನà³\8d à²¤à³\82ಯರೆ ತಿರ್ತ್ ಕೊರ್ತ್ಂಡ್.",
+       "permissionserrorstext-withaction": "$2 à²\95à³\8dà²\95à³\8d à²\87ರà³\86à²\97à³\8d à²\85ನà³\81ಮತಿ à²\87à²\9cà³\8dà²\9cಿ. à²¨à³\86à²\95à³\8dà²\95à³\8d {{PLURAL:$1|à²\95ಾರಣà³\8a|ಕಾರಣೊಲು}}:",
+       "moveddeleted-notice": "à²\88 à²ªà³\81à²\9fà³\8a à²¨à²¾à²¶à³\8a à²\86ತà³\8dâ\80\8dà²\82ಡà³\8d. \nಪà³\81à²\9fà³\8aತ à²¨à²¾à²¶à³\8aದ à²\85ತà³\8dತà³\8dà²\82ಡà³\8d à²µà²°à³\8dà²\97ಾವಣà³\86ದ à²¦à²¾à²\95ಲà³\86ನà³\8d à²¤à³\82ಯà³\86ರೆ ತಿರ್ತ್ ಕೊರ್ತ್ಂಡ್.",
        "postedit-confirmation-created": "ಈ ಪುಟೋನು ಉಂಡು ಮಾನ್ತುಂಡು.",
        "postedit-confirmation-saved": "ಇರೇನಾ ಸಂಪಾದನೆನ್ ಒರಿಪಾತುಂಡು.",
        "edit-already-exists": "ಪೊಸ ಪುಟೋನು ಉಂಡು ಮಲ್ಪರೆ ಅಯಿಜಿ. ಅವ್ವು ದುಂಬೇ ಉಂಡು.",
        "currentrevisionlink": "ಇತ್ತೆದ ತಿದ್ದುಪಡಿ",
        "cur": "ಸದ್ಯೊ",
        "next": "ಬೊಕ್ಕದ",
-       "last": "ಪಿರವà³\81",
+       "last": "ದà³\81à²\82ಬà³\81ದ",
        "page_first": "ಸುರುತ",
        "page_last": "ಕಡೆತ",
+       "histlegend": "ವ್ಯತ್ಯಾಸೊದ ಆಯ್ಕೆ: ತುಲನೆ ಮಲ್ಪೆರಿತ್ತಿನ ಪರಿಷ್ಕರಣೆಲೆನ ಬರಿಟುಪ್ಪುನ ಗುಬ್ಬಿಲೆನ್ ಗುರ್ತ ಮಲ್ತ್‌ದ್ ಎಂಟರ್‍ನ್ ಒತ್ತುಲೆ ಅತ್ತಂಡ ತಿರ್ತ್‌ಡುಪ್ಪುನ ಗುಬ್ಬಿನ್ ಒತ್ತುಲೆ.<br /> \nLegend: <strong>({{int:cur}})</strong> = ಇಂಚಿಪದ ಪರಿಷ್ಕರಣೆಲೆಡ್ ವ್ಯತ್ಯಾಸೊ, <strong>({{int:last}})</strong> = ದುಂಬುದ ಪರಿಷ್ಕರಣೆಲೆಡ್ ವ್ಯತ್ಯಾಸೊ, <strong>{{int:minoreditletter}}</strong> = ಕಿಞ್ಞ ಬದಲಾವಣೆ.",
        "history-fieldset-title": "ಇತಿಹಾಸಡ್ ನಾಡ್ಲೆ",
-       "history-show-deleted": "ದà³\86ತà³\8dತà³\8d à²ªà²¾à²¡à²¿à²¨",
+       "history-show-deleted": "ಮಾà²\9cಾದಿನವà³\81 à²®à²¾à²¤à³\8dರ",
        "histfirst": "ಪರ",
        "histlast": "ಪೊಸ",
        "historysize": "({{PLURAL:$1|೧ ಬೈಟ್|$1 ಬೈಟ್‍ಲು}})",
        "historyempty": "(ಖಾಲಿ)",
        "history-feed-title": "ಬದಲಾವಣೆಲೆನ ಇತಿಹಾಸೊ",
        "history-feed-description": "ವಿಕಿದ ಈ ಪುಟೊತ ಬದಲಾವಣೆಲೆ ಇತಿಹಾಸೊ",
-       "history-feed-item-nocomment": "$1 $2 à²\85ಲà³\8dಪ",
+       "history-feed-item-nocomment": "$1 $2 à²\9fà³\8d",
        "rev-delundel": "ತೋಜುನೆನ್ ದೆಂಗಲ",
        "rev-showdeleted": "ತೊಜಾವು",
        "revisiondelete": "ಮಾಜಾಯಿನ/ಮಾಜಾವಂದಿನ ಬದಲಾವಣೆಲು",
        "revdelete-offender": "ಬದಲಾವಣೆದ ಸಂಪಾದಕೆ",
        "mergehistory-from": "ಮೂಲ ಪುಟ",
        "mergehistory-reason": "ಕಾರಣ:",
+       "mergelog": "ಸೇರ್ಗೆದ ದಾಕಲೆ",
        "revertmerge": "ಅನ್-ಮರ್ಜ್ ಮಲ್ಪುಲೆ",
        "history-title": "\"$1\" ಪುಟೊತ ಆವೃತ್ತಿ ಇತಿಹಾಸೊ",
        "difference-title": "ಪಿರ ಪರಿಸೀಲನೆದ ನಡುತ ವ್ಯತ್ಯಾಸೊ \"$1\"",
        "compareselectedversions": "ಆಯ್ಕೆ ಮಲ್ತಿನ ಆವೃತ್ತಿಲೆನ್ ಹೊಂದಾಣಿಕೆ ಮಲ್ತ್ ತೂಲೆ",
        "editundo": "ದುಂಬುದಲೆಕೊ",
        "diff-multi-sameuser": "({{PLURAL:$1|One intermediate revision|$1 ಮದ್ಯಂತರೊ ಪರಿಸ್ಕರಣೆ}} ಅವ್ವೇ ಬಳಕೆದಾರೆರೆನ್ ತೋಜಾದ್‍ಜಿ)",
-       "searchresults": "ನಾಡà³\8dâ\80\8dಪತà³\8dತà³\8dâ\80\8cನà³\86ದ ಪಲಿತಾಂಸೊಲು",
-       "searchresults-title": "\"$1\"à²\95à³\8d à²¨à²¾à²¡à³\8dâ\80\8dಪತà³\8dತà³\8dâ\80\8cನà³\86ದ ಪಲಿತಾಂಸೊಲು",
+       "searchresults": "ನಾಡà³\8dâ\80\8dಪತà³\8dತà³\8dâ\80\8cನà³\86ತ ಪಲಿತಾಂಸೊಲು",
+       "searchresults-title": "\"$1\"à²\95à³\8d à²¨à²¾à²¡à³\8dâ\80\8dಪತà³\8dತà³\8dâ\80\8cನà³\86ತ ಪಲಿತಾಂಸೊಲು",
        "notextmatches": "ವಾ ಪುಟೊತ ಪಠ್ಯೊಡುಲಾ ಹೋಲಿಕೆ ಇಜ್ಜಿ",
        "prevn": "ದುಂಬುತ್ತ {{PLURAL:$1|$1}}",
-       "nextn": "ಬà³\8aà²\95à³\8dà²\95à³\8a {{PLURAL:$1|$1}}",
+       "nextn": "ಬà³\8aà²\95à³\8dà²\95ದ {{PLURAL:$1|$1}}",
        "prev-page": "ದುಂಬುತ ಪುಟೊ",
        "next-page": "ನನತಾ ಪುಟ",
        "nextn-title": "ದುಂಬುದ $1 {{PLURAL:$1|result|ಪಲಿತಾಂಸೊಲು}}",
-       "shown-title": "ಪà³\8dರತಿ à²ªà³\81à²\9fà³\8aಡà³\81ಲಾ $1 {{PLURAL:$1|result|ಪಲಿತಾà²\82ಸà³\8a}} à²¤à³\8bà²\9cಿಪಾವà³\81",
+       "shown-title": "ಪ್ರತಿ ಪುಟೊಡುಲಾ $1 {{PLURAL:$1|result|ಪಲಿತಾಂಸೊ}} ತೋಜಪಾವು",
        "viewprevnext": "ತೂಲೆ ($1 {{int:pipe-separator}} $2) ($3)",
+       "searchmenu-exists": "<strong>ಈ ವಿಕಿಟ್ \"[[:$1]]\" ಪುದರ್ದ ಪುಟೊ ಉಂಡು.</strong> {{PLURAL:$2|0=|ನಾಡಿನ ಪುದರ್ಗ್ ತಿಕ್ಕಿನ ಬೇತೆ ಫಲಿತಾಶೊಲೆನ್ಲಾ ತೂಲೆ.}}",
        "searchmenu-new": "<strong>ಈ ಪುಟೊನು ರಚಿಸಲೆ \"[[:$1]]\" ಈ ವಿಕಿಡ್!</strong> {{PLURAL:$2|0=|See also the page found with your search.|ನಾಡ್‍ನಗ ತೋಜಿದ್ ಬರ್ಪುನ ಪಲಿತಾಂಸೊನು ತೂಲೆ.}}",
        "searchprofile-articles": "ಲೇಕನೊ ಪುಟೊ",
        "searchprofile-images": "ಮಲ್ಟಿಮೀಡಿಯೊ",
        "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-redirect": "($1 ಡ್ದ್ ಪಿರ ನಿರ್ದೇಸನೊ)",
        "search-section": "(ವಿಬಾಗೊ $1)",
+       "search-file-match": "ಫೈಲ್‍ಡಿತ್ತಿ ವಿಸಯೊಗು ಒಂಬುಂಡು",
        "search-suggest": "ಇಂದೆನ್ ನಾಡೊಂದುಲ್ಲರೆ: $1",
        "search-interwiki-caption": "ಬಳಗದ ಇತರ ಯೋಜನೆಲು",
        "search-interwiki-default": "$1 ಫಲಿತಾಂಶೊಲು:",
        "searchrelated": "ಸ೦ಬ೦ಧ ಇತ್ತಿನ",
        "searchall": "ಮಾತ",
        "search-showingresults": "{{PLURAL:$4|ಫಲಿತಾಂಸೊ<strong>$1</strong> of <strong>$3</strong>|ಫಲಿತಾಂಸೊ <strong>$1 - $2</strong> of <strong>$3</strong>}}",
-       "search-nonefound": "à²\88ರà³\86ನ à²µà²¿à²\9aಾರಣà³\86à²\97à³\8d à²¤à²\95à³\8dà²\95à²\82ದಿನ à²ªà²²à²¿à²¤à²¾à²\82ಸà³\8aಲà³\81 à²\87ದà³\8dದಿ.",
+       "search-nonefound": "à²\88ರà³\86ನ à²µà²¿à²\9aಾರಣà³\86à²\97à³\8d à²¤à²\95à³\8dà²\95à²\82ದಿನ à²ªà²²à²¿à²¤à²¾à²\82ಸà³\8aಲà³\81 à²\87à²\9cà³\8dà²\9cಿ.",
        "search-nonefound-thiswiki": "ಈ ಸೈಟ್‍ಡ್ ಪ್ರಸ್ನೆನೆದ ಪಲಿತಾಂಸೊ ಕೂಡೊಂದಿಜ್ಜಿ",
        "powersearch-legend": "ಅಡ್ವಾನ್ಸ್’ಡ್ ಸರ್ಚ್",
        "powersearch-ns": "ನೇಮ್-ಸ್ಪೇಸ್’ಲೆಡ್ ನಾಡ್ಲೆ",
        "search-external": "ಬಾಹ್ಯೊ ಹುಡುಕಾಟೊ",
        "preferences": "ಪ್ರಾಶಸ್ತ್ಯೊಲು",
        "mypreferences": "ಪ್ರಾಸಸ್ತ್ಯೊಲು",
+       "prefs-edits": "ಸಂಪಾದನೆಲೆನ ಸಂಕೆ:",
        "prefs-skin": "ಸ್ಕಿನ್",
        "skin-preview": "ಮುನ್ನೋಟೊ",
        "datedefault": "ಒವ್ವೇ ಪ್ರಾಸಸ್ತ್ಯೊ ಇದ್ದಿ",
        "prefs-user-pages": "ಸದಸ್ಯೆರೆನ ಪುಟೊ",
+       "prefs-personal": "ಸದಸ್ಯೆರ್ನ ಬಗ್ಗೆ",
        "prefs-rc": "ಇಂಚಿಪದ ಬದಲಾವಣೆಲು",
        "prefs-watchlist": "ವೀಕ್ಷಣಾಪಟ್ಟಿ",
        "prefs-resetpass": "ಪ್ರವೇಶಪದೊನ್ ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ",
        "prefs-changeemail": "ಇ-ಅಂಚೆ ವಿಳಾಸೊನು ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ ಅತ್ತಂಡ ದೆಪ್ಪುಲೆ",
        "prefs-setemail": "ಇ-ಅಂಚೆ ವಿಳಾಸೊನು ಸ್ತಾಪನೆ ಮಲ್ಪು",
-       "prefs-email": "à²\87-à²\85à²\82à²\9aà³\86 à²\87à²\9aà³\8dà²\9bೆಲು",
+       "prefs-email": "à²\87-ಮà³\88ಲà³\8d à²\86ಯà³\8dà²\95ೆಲು",
        "prefs-rendering": "ಗೋಚರೊ",
        "saveprefs": "ಒರಿಪಾಲೆ",
        "prefs-editing": "ಸಂಪೊಲಿಪು",
        "prefs-files": "ಕಡತೊಲು",
        "prefs-custom-css": "ಕಸ್ಟಮ್ ಸಿಎಸ್ಎಸ್",
        "prefs-custom-js": "ಕಸ್ಟಮ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್",
-       "prefs-emailconfirm-label": "à²\87-ಮೈಲ್‍ದ ಒಪ್ಪಿಗೆ:",
-       "youremail": "à²\87-à²\85à²\82à²\9aà³\86",
+       "prefs-emailconfirm-label": "à²\88-ಮೈಲ್‍ದ ಒಪ್ಪಿಗೆ:",
+       "youremail": "à²\87-ಮà³\88ಲà³\8d",
        "username": "{{GENDER:$1|ಸದಸ್ಯತ್ವೊದ ಪುದರ್}}:",
+       "prefs-memberingroups": "{{GENDER:$2|ಸದಸ್ಯೆರ್}} ಆದುಪ್ಪುನ {{PLURAL:$1|ಗುಂಪು|ಗುಂಪುಲು}}:",
        "prefs-registration": "ನೋಂದಣಿದ ಸಮಯ:",
        "yourrealname": "ನಿಜವಾಯಿನ ಪುದರ್",
-       "yourlanguage": "ಭಾಷೆ:",
-       "yournick": "ಪà³\8aಸ à²¸à²¹à²¿",
+       "yourlanguage": "ಬಾಸೆ:",
+       "yournick": "ಪà³\8aಸ à²¦à²¸à³\8dà²\95ತà³\8dತà³\8d",
        "badsiglength": "ಇರೆನ ಸಹಿ ಭಾರೀ ಉದ್ದ ಆಂಡ್.  ಉಂದು ಮಸ್ತ್ ಉದ್ದೊ ಆಯೆರೆ ಬಲ್ಲಿ{{PLURAL:$1|character|characters}}.",
-       "yourgender": "ಲಿಂಗೊ",
+       "yourgender": "ಇರೆನ್ ಈರ್ ಎಂಚ ವರ್ಣನೆ ಮಲ್ಪೊಡು ಪಂದ್ ಬಯಕುವರ್?",
+       "gender-unknown": "ಇರೆನ್ ಪ್ರಸ್ತಾಪ ಮಲ್ಪುನಗ, ಸಾಫ್ಟ್‌ವೇರ್ ಸಾದ್ಯ ಆಯಿನಾತ್ ಮಟ್ಟ್‌ಗ್ ಲಿಂಗ ತಟಸ್ಥ ಪದೊಕುಲೆನ್ ಗಲಸುಂಡು.",
        "gender-male": "ಆಯೆ ವಿಕಿ ಪುಟೊನು ಸಂಪೊಲಿಪುವೆ",
        "gender-female": "ಆಲ್ ವಿಕಿ ಪುಟೊನು ಸಂಪೊಲಿಪುವಲ್",
        "email": "ಇ-ಅಂಚೆ",
-       "prefs-help-email": "ಇ-ಮೈಲ್ ಎಡ್ರಾಸ್ ಕಡ್ಡಾಯೊ ಅತ್ತ್, ಆಂಡ ನಿಕುಲು ಅಯಿನ್ ಕೊರ್ಂಡ ಈರ್ ನಿಕ್ಲೆನ ಪ್ರವೇಸೊ ಪದೊನು ಮರತ್ಂಡ ಅಯಿನ್ ಈರೆಗ್ ಇ-ಮೈಲ್‍ಡ್ದ್ ಕಡಪುಡೊಲಿ.",
+       "prefs-help-realname": "ನಿಜ ಪುದರ್ ಕೊರ್ಪಿನವು ಕಡ್ಡಾಯ ಅತ್ತ್. ಒಂಜೇಲೆ ಕೊರ್ಂಡ, ಇರೆನ ಬೇಲೆಗ್ ಮನ್ನಣೆ ಕೊರಿಯೆರೆ ಉಪಯೋಗ ಆಪುಂಡು.",
+       "prefs-help-email": "ಇ-ಮೈಲ್ ವಿಲಾಸೊ ಕಡ್ಡಾಯೊ ಅತ್ತ್, ಆಂಡ ಈರ್ ಪ್ರವೇಸೊ ಪದೊನು ಮರತ್ಂಡ ಅವೆನ್ ಇರೆಗ್ ಇ-ಮೈಲ್‍ಡ್ದ್ ಕಡಪುಡೆರೆ ಬೋಡಾಪುಂಡು.",
+       "prefs-help-email-others": "ಅಂಚೆನೆ ಬೇತಕ್ಲೆಗ್ ಇರೆನ್ ಸಂಪರ್ಕ ಆಯೆರೆ, ಇರೆನ ಖಾತೆಡ್ ಅತ್ತಂಡ ಪಾತೆರ ಪುಟೊಟು ಉಪ್ಪುನ ಒಂಜಿ ಕೊಂಡಿದ ಮೂಲಕ ಇರೆಗ್ ಈ-ಮೈಲ್ ಕಡುಪುಡೆರೆ ಅವಕಾಶ ಮಲ್ತ್‌ದ್‍‌ಲಾ ಕೊರೊಲಿ. ಇರೆನ ಈ-ಮೈಲ್ ವಿಲಾಸೊ ಏರೆಗ್ಲಾ ಗೊತ್ತಾಪುಜಿ.",
        "prefs-help-email-required": "ಇ-ಮೈಲ್ ಎಡ್ರಾಸ್ ಬೋಡಾತ್ಂಡ್.",
        "prefs-info": "ಬುಡೊತ ಮಾಹಿತಿ",
        "prefs-i18n": "ಅಂತರರಾಷ್ಟ್ರೀಕರಣ",
-       "prefs-signature": "ಸಹಿ",
+       "prefs-signature": "ದಸà³\8dà²\95ತà³\8dತà³\8d",
        "prefs-dateformat": "ತಾರೋಕ್‍ದ ಸೈಲಿ",
        "prefs-advancedediting": "ಸಾಮಾನ್ಯೊ ಆಯ್ಕೆಲು",
        "prefs-editor": "ಸಂಪಾದಕೆ",
        "prefs-displayrc": "ಪ್ರದರ್ಸನೊ ಆಯ್ಕೆಲು",
        "prefs-displaywatchlist": "ಪ್ರದರ್ಸನೊ ಆಯ್ಕೆಲು",
        "prefs-tokenwatchlist": "ಟೊಕನ್",
+       "userrights": "ಸದಸ್ಯೆರೆ ಹಕ್ಕುಲು",
        "userrights-lookup-user": "ಬಳಕೆದಾರೆರೆ ಗುಂಪುಲೆನ್ ನಿರ್ವಹಿಸಲ",
        "userrights-user-editname": "ಒಂಜಿ ಸದಸ್ಯ ಪುದರ್ ಬರೆಲೆ",
        "userrights-reason": "ಕಾರಣೊ:",
        "action-edit": "ಈ ಪುಟೊನು ಎಡಿಟ್ ಮಲ್ಪುಲೆ",
        "action-createpage": "ಈ ಪುಟೊನು ಸೃಷ್ಟಿಸಾಲೆ",
        "action-createtalk": "ಚರ್ಚಾ ಪುಟೊನ್ ಸೃಷ್ಟಿಸಾಲೆ",
-       "action-createaccount": "à²\88 à²¸à²¦à²¸à³\8dಯà³\86ರನ à²\96ಾತà³\86ನà³\8d à²¸à³\83ಷà³\8dà²\9fಿ ಮಲ್ಪುಲೆ",
+       "action-createaccount": "à²\88 à²¸à²¦à²¸à³\8dಯà³\86ರನ à²\96ಾತà³\86ನà³\8d à²\89à²\82ಡà³\81 ಮಲ್ಪುಲೆ",
        "action-minoredit": "ಉದೊಂಜಿ ಎಲ್ಯ  ಬದಲಾವಣೆ",
        "action-move": "ಈ ಪೂಟೊನು ಮೂವ್(ಸ್ಥಳಾಂತರ) ಮಲ್ಪುಲೆ",
        "action-movefile": "ಈ ಫೈಲ್‘ನ್ ಸ್ಥಳಾಂತರ ಮಲ್ಪುಲೆ",
        "recentchanges-summary": "ಈ ವಿಕಿಟ್ ಇಂಚಿಪ್ಪ ಮಲ್ತ್‌ನ ಬದಲಾವಣೆನ್ ಈ ಪುಟೊಡು ಈರ್ ತೂವೊಲಿ",
        "recentchanges-feed-description": "ಈ ಫೀಡ್’ಡ್ ವಿಕಿಕ್ ಇಂಚಿಪ್ಪ ಆತಿನಂಚಿನ ಬದಲಾವಣೆಲೆನ್ ಟ್ರ್ಯಾಕ್ ಮಲ್ಪುಲೆ.",
        "recentchanges-label-newpage": "ಇರ್ನ ಈ ಬದಲಾವಣೆ ಪೊಸ ಪುಟೊನು ಸುರು ಮಲ್ಪುಂಡು",
-       "recentchanges-label-minor": "à²\89à²\82ದà³\81 à²\8eಲà³\8dಯ ಬದಲಾವಣೆ",
+       "recentchanges-label-minor": "à²\89à²\82ದà³\81 à²\95ಿà²\9eà³\8dà²\9e ಬದಲಾವಣೆ",
        "recentchanges-label-bot": "ಈ ಸಂಪದನೆ ಒಂಜಿ ಬಾಟ್‍ಡ್ ಆತ್ಂಡ್",
        "recentchanges-label-unpatrolled": "ಈ ಸಂಪಾದನೆನ್ ನನಲಾ ಪರೀಕ್ಷೆ ಮಲ್ತ್‌ಜಿ.",
-       "recentchanges-label-plusminus": "ಬà³\88à²\9fà³\8dಸà³\8dâ\80\8cದ à²²à³\86à²\95à³\8dà²\95à³\8aಡà³\81 à²\88 à²ªà²¾à²²à³\86ದ ಗಾತ್ರೊ ಬದಲಾತ್ಂಡ್",
+       "recentchanges-label-plusminus": "ಬà³\88à²\9fà³\8dಸà³\8dâ\80\8cದ à²²à³\86à²\95à³\8dà²\95à³\8aಡà³\81 à²\88 à²ªà³\81à²\9fà³\8aತà³\8dತ ಗಾತ್ರೊ ಬದಲಾತ್ಂಡ್",
        "recentchanges-legend-heading": "<strong>ಪರಿವಿಡಿ:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ಬೊಕ್ಕೊಲಾ ತೂಲೆ [[Special:NewPages|ಪೊಸ ಪುಟೊದ ಪಟ್ಟಿ]])",
        "recentchanges-submit": "ತೋಜಾಲೆ",
        "rcfilters-filterlist-whatsthis": "ಉಂದು ದಾದಾ?",
        "rcfilters-filter-user-experience-level-learner-label": "ಕಲ್ಪುನರ್",
-       "rclistfrom": "$3 $2 ರ್ದ್ ಸುರುವಾತಿನ ಪೊಸ ಬದಲಾವಣೆಲೆನ್ ತೊಜ್ಪಾವು",
+       "rcnotefrom": "<strong>$3, $4</strong> ಡ್ದ್ ಆತಿನ {{PLURAL:$5|ಬದಲಾವಣೆ|ಬದಲಾವಣೆಲು}} ತಿರ್ತ್ ಉಂಡು (ಒಟ್ಟುಗು <strong>$1</strong>  ತೋಜೊಂದುಂಡು).",
+       "rclistfrom": "$2, $3 ಡ್ದ್ ಸುರುವಾತಿನ ಪೊಸ ಬದಲಾವಣೆಲೆನ್ ತೊಜ್ಪಾವು",
        "rcshowhideminor": "$1 ಎಲ್ಯೆಲ್ಯ ಬದಲಾವಣೆಲು",
        "rcshowhideminor-show": "ತೋಜಾಲೆ",
        "rcshowhideminor-hide": "ಅಡೆಂಗಾವು",
        "rcshowhideliu": "ನೋಂದವಣೆ ಆತಿನಂಚಿನ ಸದಸ್ಯೆರ್ $1",
        "rcshowhideliu-show": "ತೋಜಾಲೆ",
        "rcshowhideliu-hide": "ಅಡೆಂಗಾವು",
-       "rcshowhideanons": "ಪà³\81ದರà³\8d à²\87ದà³\8dಯಾà²\82ದಿನ ಸದಸ್ಯೆರ್ $1",
+       "rcshowhideanons": "ಪà³\81ದರà³\8d à²¦à²¾à²\82ತಿ ಸದಸ್ಯೆರ್ $1",
        "rcshowhideanons-show": "ತೋಜಾಲೆ",
        "rcshowhideanons-hide": "ಅಡೆಂಗಾವು",
        "rcshowhidepatr": "$1 ಪರೀಕ್ಷಿಸಾದಿನ ಸಂಪಾದನೆಲು",
        "rcshowhidemine-hide": "ಅಡೆಂಗಾವು",
        "rcshowhidecategorization-show": "ತೋಜಾಲೆ",
        "rcshowhidecategorization-hide": "ಅಡೆಂಗಾವು",
-       "rclinks": "ದà³\81à²\82ಬà³\81ದ $2 à²¦à²¿à²¨à³\8aಲà³\86ಡà³\8d à²®à²²à³\8dತಿನ $1 à²ªà²¿à²°à²µà³\81ದ à²¬à²¦à²²à²¾à²µà²£à³\86ಲà³\86ನà³\8d à²¤à³\82ಲà³\86 <br />$3",
+       "rclinks": "à²\95ರಿನ $2 à²¦à²¿à²¨à³\8aಲà³\86ಡà³\8d à²®à²²à³\8dತಿನ à²\95ಡà³\86ತà³\8dತ $1 à²¬à²¦à²²à²¾à²µà²£à³\86ಲà³\86ನà³\8d à²¤à³\82ಲà³\86",
        "diff": "ವ್ಯತ್ಯಾಸೊ",
        "hist": "ಇತಿಹಾಸೊ",
        "hide": "ಅಡೆಂಗಾವು",
        "show": "ತೋಜಾವು",
-       "minoreditletter": "à²\9aà³\81",
+       "minoreditletter": "à²\95ಿ",
        "newpageletter": "ಪೊ",
        "boteditletter": "ಬಾ",
        "rc_categories_any": "ಒವ್ವೇ",
        "recentchangeslinked-feed": "ಸಂಬಂಧ ಉಪ್ಪುನಂಚಿನ ಬದಲಾವಣೆಲು",
        "recentchangeslinked-toolbox": "ಸಂಬಂದೊ ಉಪ್ಪುನಂಚಿನ ಬದಲಾವಣೆಲು",
        "recentchangeslinked-title": "\"$1\" ಪುಟೊಟು ಆಯಿನ ಬದಲಾವಣೆಗ್ ಸಂಬಂದಿಸದ್",
-       "recentchangeslinked-summary": "ಒಂಜಿ ನಿರ್ದಿಸ್ಟೊ ಪುಟೊರ್ದು (ಅತ್ತ್’ನ್ಡ ನಿರ್ದಿಸ್ಟೊ ವರ್ಗೊಗು ಸೇರ್ದಿನ ಪುಟೊಲೆರ್ದ್) ಸಂಪರ್ಕೊ ಉಪ್ಪುನ ಪುಟೊಲೆಡ್ ಇಂಚಿಪ ಮಲ್ತಿನಂಚಿನ ಬದಲಾವಣೆಲೆನ್ ತಿರ್ತ್ ಪಟ್ಟಿ ಮಲ್ಪೆರಾತ್ಂಡ್.\n[[Special:Watchlist|ಇರೆನ ವೀಕ್ಷಣೆ ಪಟ್ಟಿಡ್]] ಉಪ್ಪುನ ಪುಟೊಲು '''ದಪ್ಪ ಅಕ್ಷರೊಡು''' ಉಂಡು.",
+       "recentchangeslinked-summary": "ಒಂಜಿ ನಿರ್ದಿಸ್ಟೊ ಪುಟೊರ್ದು ಸಂಪರ್ಕೊ ಉಪ್ಪುನ ಪುಟೊಕುಲೆಗ್ (ಅತ್ತಂಡ ನಿರ್ದಿಸ್ಟೊ ವರ್ಗೊಗು ಸೇರ್ದಿನ ಸದಸ್ಯೆರೆಗ್) ಇಂಚಿಪ ಮಲ್ತಿನಂಚಿನ ಬದಲಾವಣೆಲೆನ್ ತಿರ್ತ್ ಪಟ್ಟಿ ಮಲ್ತ್‌ದ್ಂಡ್.\n[[Special:Watchlist|ಇರೆನ ವೀಕ್ಷಣೆ ಪಟ್ಟಿಡ್]] ಉಪ್ಪುನ ಪುಟೊಕುಲು ''ದಪ್ಪ ಅಕ್ಷರೊಡು\" ಉಂಡು.",
        "recentchangeslinked-page": "ಪುಟೊತ ಪುದರ್:",
        "recentchangeslinked-to": "ಇಂದೆತ ಬದಲ್‍ಗ್ ಕೊರ್ತ್‍ನ ಪುಟೊಗು ಕೊಂಡಿ ಉಪ್ಪುನಂಚಿನ ಪುಟೊಲೆದ ಬದಲಾವಣೆಲೆನ್ ತೋಜಾವು",
        "upload": "ಫೈಲ್’ನ್ ಅಪ್ಲೋಡ್ ಮಲ್ಪುಲೆ",
        "uploadbtn": "ಫೈಲ್’ನ್ ಅಪ್ಲೋಡ್ ಮಲ್ಪುಲೆ",
        "uploadnologin": "ಲಾಗಿನ್ ಆತ್‘ಜ್ಜರ್",
-       "uploadlogpage": "à²\85ಪà³\8dಲà³\8bಡà³\8d à²¦à²¾à²\96ಲೆ",
+       "uploadlogpage": "ದಾà²\96ಲà³\86 à²\85ಪà³\8dಲà³\8bಡà³\8d à²®à²²à³\8dಪà³\81ಲೆ",
        "filename": "ಕಡತದ ಪುದರ್",
        "filedesc": "ಸಾರಾಂಸೊ",
        "fileuploadsummary": "ಸಾರಾಂಸೊ:",
        "license-header": "ಪರವಾನಿಗೆ",
        "listfiles-delete": "ಮಾಜಾಲೆ",
        "imgfile": "ಫೈಲ್",
+       "listfiles": "ಕಡತೊಲೆನ ಪಟ್ಟಿ",
        "listfiles_thumb": "ಎಲ್ಯಚಿತ್ರೊ",
        "listfiles_date": "ದಿನೊ",
        "listfiles_name": "ಪುದರ್",
        "filehist-dimensions": "ಆಯಾಮೊಲು",
        "filehist-filesize": "ಫೈಲ್’ದ ಗಾತ್ರ",
        "filehist-comment": "ಅಬಿಪ್ರಾಯೊ",
-       "imagelinks": "ಫà³\88ಲà³\8dâ\80\8dದ à²¬à²³à²\95à³\86",
+       "imagelinks": "ಫà³\88ಲà³\8dâ\80\8dದ à²\89ಪಯà³\8bà²\97",
        "linkstoimage": "ಈ ತಿರ್ತ್‍ದ {{PLURAL:$1|page links|$1 ಪುಟೊಲೆ ಕೊಂಡಿ}}ಈ ಫೈಲ್‍ಗ್ ಕೊನಪೋಪುಂಡು.",
        "nolinkstoimage": "ಈ ಫೈಲ್‍ಗ್ ಸಂಪರ್ಕೊ ಉಪ್ಪುನ ವಾ ಪುಟೊಲಾ ಇದ್ದಿ.",
        "sharedupload": "ಈ ಫೈಲ್’ನ್ ಮಸ್ತ್ ಜನ ಪಟ್ಟ್’ದುಲ್ಲೆರ್ ಅಂಚೆನೆ ಉಂದು ಮಸ್ತ್ ಪ್ರೊಜೆಕ್ಟ್’ಲೆಡ್ ಉಪಯೋಗಿಸೊಲಿ",
-       "sharedupload-desc-here": "à²\88 à²ªà³\81à²\9fà³\8a $1ಡà³\8dದà³\8d à²¬à³\8aà²\95à³\8dà²\95 à²¬à³\87ತà³\86 à²¯à³\8bà²\9cನà³\86ಡà³\8dದà³\8d à²\97ಳಸೊಲಿ.\nಈ ಪುಟೊತ ವಿವರೊ [$2 ಪುಟೊತ ವಿವರೊ] ತಿರ್ತ ಸಾಲ್‍ಡ್ ತೋಜಾದ್ಂಡ್",
+       "sharedupload-desc-here": "à²\88 à²ªà³\81à²\9fà³\8a $1ಡà³\8dದà³\8d à²¬à³\8aà²\95à³\8dà²\95 à²¬à³\87ತà³\86 à²¯à³\8bà²\9cನà³\86ಡà³\8dದà³\8d à²\97ಲಸೊಲಿ.\nಈ ಪುಟೊತ ವಿವರೊ [$2 ಪುಟೊತ ವಿವರೊ] ತಿರ್ತ ಸಾಲ್‍ಡ್ ತೋಜಾದ್ಂಡ್",
        "upload-disallowed-here": "ಈರ್ ಈ ಫೈಲ್‍ನ್ ಕುಡೊರೊ ಬರೆವರೆ ಸಾದ್ಯೊ ಇದ್ದಿ.",
        "filerevert-comment": "ಕಾರಣ:",
        "filerevert-submit": "ದುಂಬುದ ಲೆಕ ಮಲ್ಪುಲೆ",
        "filedelete-comment": "ಕಾರಣ",
        "filedelete-submit": "ಮಾಜಾಲೆ",
        "filedelete-reason-otherlist": "ಬೇತೆ ಕಾರಣ",
+       "mimesearch": "MIME ನಾಡುನಿ",
        "download": "ಡೌನ್‍ಲೋಡ್",
-       "randompage": "ಯಾದೃಚ್ಛಿಕ ಪುಟೊ",
+       "listredirects": "ರೀಡೈರೆಕ್ಟ್ ಪಟ್ಟಿ",
+       "listduplicatedfiles": "ಡುಪ್ಲಿಕೇಟ್ ಕಡತೊಲೆನ ಪಟ್ಟಿ",
+       "unusedtemplates": "ಗಲಸಂದಿನ ಟೆಂಪ್ಲೇಟ್ಲು",
+       "randompage": "ಗೊತ್ತುದಾಂತಿ ಪುಟೊ",
        "randomincategory-category": "ವರ್ಗೊ:",
        "randomincategory-submit": "ಪೋಲೆ",
+       "randomredirect": "ಗೊತ್ತುದಾಂತಿ ರೀಡೈರೆಕ್ಟ್",
        "statistics": "ಅಂಕಿ ಅಂಶೊಲು",
        "statistics-header-pages": "ಪುಟೊತ ಅಂಕಿ ಅಂಶಲು",
        "statistics-pages": "ಪುಟಕುಲು",
        "statistics-users-active": "ಸಕ್ರಿಯ ಬಳಕೆದಾರೆರ್",
        "pageswithprop-submit": "ಪೋಲೆ",
+       "doubleredirects": "ರಡ್ಡ್ ರಿಡೈರೆಕ್ಟ್‌ಲು",
+       "brokenredirects": "ಕಡಿದಿನ ರಿಡೈರೆಕ್ಟ್‌ಲು",
        "brokenredirects-edit": "ಸಂಪೊಲಿಪುಲೆ",
        "brokenredirects-delete": "ಮಾಜಾಲೆ",
+       "withoutinterwiki": "ಬಾಸೆದ ಸಂಪರ್ಕ ದಾಂತಿನ ಪುಟೊಕುಲು",
        "withoutinterwiki-submit": "ತೋಜಾಲೆ",
+       "fewestrevisions": "ಮಸ್ತ್ ಕಡಮೆ ಬದಲಾವಣೆ ಆತಿನ ಪುಟೊಕುಲು",
        "nbytes": "$1 {{PLURAL:$1|byte|ಬೈಟ್‍ಲು}}",
        "nmembers": "$1 {{PLURAL:$1|member|ಸದಸ್ಯೆರ್}}",
+       "lonelypages": "ಒಂಟಿ ಪುಟೊಕುಲು",
+       "uncategorizedpages": "ಒತ್ತರೆ ಆವಂದಿನ ಪುಟೊಕುಲು",
+       "uncategorizedcategories": "ಒತ್ತರೆ ಆವಂದಿನ ವರ್ಗೊಲು",
+       "uncategorizedimages": "ಒತ್ತರೆ ಆವಂದಿನ ಫೈಲ್‌ಲು",
+       "uncategorizedtemplates": "ಒತ್ತರೆ ಆವಂದಿನ ಟೆಂಪ್ಲೇಟ್ಲು",
+       "unusedcategories": "ಗಲಸಂದಿನ ವರ್ಗೊಲು",
+       "unusedimages": "ಗಲಸಂದಿನ ಫೈಲ್‌ಲು",
+       "wantedcategories": "ಬೋಡಾಯಿನ ವರ್ಗೊಲು",
+       "wantedpages": "ಬೋಡಾಯಿನ ಪುಟೊಕುಲು",
        "wantedfiles": "ಬೋಡಾಯಿನ ಕಡತೊಲು",
-       "prefixindex": "ಪೂರ್ವನಾಮೊಲ್ದ ಸೂಚಿಕೆ",
+       "wantedtemplates": "ಬೋಡಾಯಿನ ಟೆಂಪ್ಲೇಟ್ಲು",
+       "mostlinked": "ಮಸ್ತ್ ಜಾಸ್ತಿ ಕೊಂಡಿಲು ಉಪ್ಪುನ ಪುಟೊಕುಲು",
+       "mostlinkedcategories": "ಮಸ್ತ್ ಜಾಸ್ತಿ ಕೊಂಡಿಲು ಉಪ್ಪುನ ವರ್ಗೊಲು",
+       "mostlinkedtemplates": "ಮಸ್ತ್ ಜಾಸ್ತಿ ಕೊಂಡಿಲು ಉಪ್ಪುನ ಟೆಂಪ್ಲೇಟ್ಲು",
+       "mostcategories": "ಮಸ್ತ್ ಜಾಸ್ತಿ ವರ್ಗೊಲು ಉಪ್ಪುನ ಪುಟೊಕುಲು",
+       "mostimages": "ಮಸ್ತ್ ಜಾಸ್ತಿ ಕೊಂಡಿಲು ಉಪ್ಪುನ ಕಡತೊಲು",
+       "mostinterwikis": "ಮಸ್ತ್ ಜಾಸ್ತಿ ಉಲವಿಕಿ ಉಪ್ಪುನ ಪುಟೊಕುಲು",
+       "mostrevisions": "ಮಸ್ತ್ ಜಾಸ್ತಿ ಬದಲಾವಣೆಲು ಆತಿನ ಪುಟೊಕುಲು",
+       "prefixindex": "ಪೂರ್ವನಾಮ ಇತ್ತಿನ ಮಾತಾ ಪುಟೊಕುಲು",
        "prefixindex-submit": "ತೋಜಾಲೆ",
-       "shortpages": "à²\8eಲà³\8dಯ ಪುಟೊಕುಲು",
+       "shortpages": "à²\95ಿà²\9eà³\8dà²\9e ಪುಟೊಕುಲು",
        "longpages": "ಉದ್ದ ಪುಟೊಕುಲು",
+       "deadendpages": "ಕಡೆತ್ತ ಪುಟೊಕುಲು",
        "protectedpages": "ಸಂರಕ್ಷಿತ ಪುಟೊ",
        "protectedpages-page": "ಪುಟೊ",
        "protectedpages-reason": "ಕಾರಣೊ",
        "protectedpages-unknown-timestamp": "ಗೊತ್ತಿಜ್ಜಾಂದಿನ",
        "protectedpages-unknown-performer": "ಅಜ್ಞಾತ ಬಳಕೆದಾರೆ",
        "protectedtitles": "ಸಂರಕ್ಷಿತ ಶೀರ್ಷಿಕೆಲು",
-       "listusers": "ಬಳà²\95à³\86ದಾರರà³\86ನ à²¤à²\96à³\8dತà³\86",
-       "newpages": "ಪೊಸ ಪುಟೊಲು",
+       "listusers": "ಸದಸà³\8dಯà³\86ರà³\8dನ à²ªà²\9fà³\8dà²\9fಿ",
+       "newpages": "ಪà³\8aಸ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲà³\81",
        "newpages-submit": "ತೋಜಾಲೆ",
        "newpages-username": "ಸದಸ್ಯೆರ್ನ ಪುದರ್:",
-       "move": "ಮೂವ್(ಸ್ಥಳಾಂತರ) ಮಲ್ಪುಲೆ",
+       "ancientpages": "ಪರತ್ತ್ ಪುಟೊಕುಲು",
+       "move": "ಸ್ಥಳಾಂತರ ಮಲ್ಪುಲೆ",
        "movethispage": "ಈ ಪುಟೊನು ಮೂವ್ ಮಲ್ಪುಲೆ",
        "pager-newer-n": "{{PLURAL:$1|ಪೊಸ ೧|ಪೊಸ $1}}",
        "pager-older-n": "{{PLURAL:$1|older 1|ಪರತ್ತ್ $1}}",
        "booksources": "ಬೂಕುದ ಮೂಲೊ",
        "booksources-search-legend": "ಬೂಕುದ ಮೂಲೊನು ನಾಡ್‍ಲೆ",
        "booksources-search": "ನಾಡ್‍ಲೆ",
+       "specialloguserlabel": "ಸಾಧಕೆರ್:",
        "log": "ದಾಕಲೆಲು",
        "logeventslist-submit": "ತೋಜಾಲೆ",
+       "all-logs-page": "ಮಾತಾ ಸಾರ್ವಜನಿಕ ದಾಕಲೆ",
        "checkbox-all": "ಮಾತಾ",
        "checkbox-none": "ಒವ್ವುಲಾ ಇಜ್ಜಿ",
-       "allpages": "ಪೂರಾ ಪೂಟೊಲು",
+       "allpages": "ಪà³\82ರಾ à²ªà³\82à²\9fà³\8aà²\95à³\81ಲà³\81",
        "allpagesfrom": "ಇಂದೆರ್ದ್ ಶುರುವಾಪುನ ಪುಟೊಲೆನ್ ತೊಜ್ಪಾವು:",
        "allpagesto": "ಇಂದೆರ್ದ್ ಅಂತ್ಯ ಆಪುನ ಪುಟೊಲೆನ್ ತೊಜ್ಪಾವು:",
-       "allarticles": "ಮಾತ ಪುಟೊಲು",
+       "allarticles": "ಮಾತ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲà³\81",
        "allpagessubmit": "ಪೋಲೆ",
        "categories": "ವರ್ಗೊಲು",
        "categories-submit": "ತೋಜಾಲೆ",
+       "deletedcontributions": "ಮಾಜಿದಿನ ಸದಸ್ಯೆರೆ ಕಾಣಿಕೆಲು",
        "sp-deletedcontributions-contribs": "ಕಾನಿಕೆಲು",
+       "linksearch": "ಪಿದಯಿದ ಕೊಂಡಿಲೆನ್ ನಾಡುನಿ",
        "linksearch-ok": "ನಾಡ್‍ಲೆ",
        "listusers-submit": "ತೋಜಾಲೆ",
+       "activeusers": "ಸಕ್ರಿಯ ಸದಸ್ಯೆರೆ ಪಟ್ಟಿ",
+       "listgrouprights": "ಸದಸ್ಯೆರೆ ಗುಂಪುದ ಹಕ್ಕುಲು",
        "listgrouprights-group": "ಗುಂಪು",
        "listgrouprights-members": "(ಸದಸ್ಯೆರ್ನ ಪಟ್ಟಿ)",
        "listgrants-rights": "ಹಕ್ಕುಗಳು",
        "emailsend": "ಕಡಪುಡುಲೆ",
        "watchlist": "ವೀಕ್ಷಣಾ ಪಟ್ಟಿ",
        "mywatchlist": "ಎನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿ",
+       "watchlistfor2": "$1 ಗ್ ($2)",
        "watchnologin": "ಲಾಗಿನ್ ಆತ್‍ಜರ್",
        "watch": "ತೂಲೆ",
        "watchthispage": "ಈ ಪುಟೊನು ತೂಲೆ",
        "unwatch": "ವೀಕ್ಷಣಾಪಟ್ಟಿರ್ದ್ ದೆಪ್ಪು",
-       "watchlist-hide": "ಅಡೆಂಗಾವು",
+       "watchlist-details": "ಪಾತೆರ ಪುಟೊಕುಲು ಸೇರ್ದ್ ಒಟ್ಟು {{PLURAL:$1|$1 ಪುಟೊ|$1 ಪುಟೊಕುಲು}} ಇರೆನ ವೀಕ್ಷಣಾಪಟ್ಟಿಡ್ ಉಂಡು.",
+       "wlheader-enotif": "ಈ-ಮೈಲ್ ಸೂಚನೆ ಸಕ್ರಿಯ ಆತ್ಂಡ್.",
+       "wlheader-showupdated": "ಈರ್ ಅಕೇರಿಗ್ ಭೇಟಿ ಕೊರಿ ಬೊಕ್ಕ ಬದಲಾವಣೆ ಆಯಿನ ಪುಟೊಕುಲೆನ್ '''ದಪ್ಪ ಅಕ್ಷರೊಲೆಡ್''' ತೋಜಾದ್ಂಡ್.",
+       "wlnote": "Below {{PLURAL:$1|is the last change|are the last <strong>$1</strong> changes}} in the last {{PLURAL:$2|hour|<strong>$2</strong> hours}}, as of $3, $4.\n\n$3, $4 ದ ಪ್ರಕಾರ ಕರಿನ {{PLURAL:$2|ಗಂಟೆಡ್|<strong>$2</strong> ಗಂಟೆಲೆಡ್}} ಆಯಿನ ಅಕೇರಿದ {{PLURAL:$1|ಬದಲಾವಣೆನ್|<strong>$1</strong> ಬದಲಾವಣೆಲೆನ್}} ತಿರ್ತ್ ತೋಜಾದ್ಂಡ್.",
+       "watchlist-hide": "ದೆಂಗಾವು",
        "watchlist-submit": "ತೋಜಾವು",
-       "wlshowhideminor": "ಎಲ್ಯೆಲ್ಯ ಬದಲಾವಣೆಲು",
+       "wlshowtime": "ತೋಜಾವೊಡಾಯಿನ ಪೊರ್ತುದ ಅವಧಿ:",
+       "wlshowhideminor": "ಕಿಞ್ಞ ಬದಲಾವಣೆಲು",
        "wlshowhideliu": "ನೋಂದವಣೆ ಆತಿನಂಚಿನ ಸದಸ್ಯೆರ್",
-       "wlshowhideanons": "ಪುದರ್ ಇದ್ಯಾಂದಿನ ಸದಸ್ಯೆರ್",
+       "wlshowhideanons": "ಪುದರ್ ದಾಂತಿನ ಸದಸ್ಯೆರ್",
+       "wlshowhidemine": "ಎನ್ನ ಸಂಪಾದನೆಲು",
        "watchlist-options": "ವೀಕ್ಷಣಾಪಟ್ಟಿ ಆಯ್ಕೆಲು",
        "watching": "ವೀಕ್ಷಣಾಪಟ್ಟಿಗ್ ಸೇರ್ಪಾವೊಂದುಂಡು...",
        "unwatching": "ವೀಕ್ಷಣಾಪಟ್ಟಿರ್ದ್ ದೆತ್ತೊಂದುಂಡು...",
+       "enotif_reset": "ಭೇಟಿ ಕೊರಿನ ಮಾತಾ ಪುಟೊಕುಲೆನ್ ಗುರ್ತ ಮಲ್ಪುಲೆ",
        "deletepage": "ಪುಟೊಕುಲೆನ್ ಮಾಜಾಲೆ",
        "confirm": "ಗಟ್ಟಿಮಲ್ಪುಲೆ",
        "delete-legend": "ಮಾಜಾಲೆ",
        "delete-edit-reasonlist": "ಮಾಜಾಯಿನ ಕಾರಣೊಲೆನ್ ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ",
        "rollbacklink": "ಪುಡತ್ತ್ ಪಾಡ್",
        "rollbacklinkcount": "ಪಿರ ದೆತೊನ್ಲೆ $1 {{PLURAL:$1|edit|ಸಂಪದನೆಲು}}",
+       "changecontentmodel": "ಪುಟೊತ ವಿಸಯ ಮಾದರಿನ್ ಬದಲ್ ಮಲ್ಪುಲೆ",
        "changecontentmodel-title-label": "ಪುಟೊದ ಪುದರ್",
        "changecontentmodel-reason-label": "ಕಾರಣ:",
        "changecontentmodel-submit": "ಬದಲಾವಣೆ",
        "protectedarticle": "\"[[$1]]\" ಸಂರಕ್ಷಿತವಾದುಂಡು.",
        "modifiedarticleprotection": "\"[[$1]]\" ಪುಟೊತ ಸಂರಕ್ಷಣೆ ಮಟ್ಟ ಬದಲಾಂಡ್",
        "protectcomment": "ಕಾರಣೊ:",
+       "protect-default": "ಮಾತ ಸದಸ್ಯೆರೆಗ್ಲಾ ಅನುಮತಿ ಕೊರ್ಲೆ",
        "protect-otherreason-op": "ಬೇತೆ ಕಾರಣ",
        "restriction-type": "ಒಪ್ಪುಗೆ:",
        "restriction-edit": "ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ",
        "restriction-move": "ಸ್ಥಳಾಂತರ ಮಲ್ಪುಲೆ",
        "restriction-create": "ಸೃಷ್ಟಿಸಾಲೆ",
        "restriction-upload": "ಅಪ್ಲೊಡ್",
+       "undelete": "ಮಾಜಾದಿನ ಪುಟೊಕುಲೆನ್ ತೂಲೆ",
        "undeletelink": "ದುಂಬುದ ಆವೃತ್ತಿಗ್ ಪೋಲೆ",
        "undeleteviewlink": "ತೂಲೆ",
        "undeletecomment": "ಕಾರಣೊ:",
        "undelete-search-submit": "ನಾಡ್‍ಲೆ",
        "undelete-show-file-submit": "ಅಂದ್",
-       "namespace": "ಪುದರ್‍ದ ಬಗೆ:",
+       "namespace": "ಪುದರ್-ಜಾಗೆ:",
        "invert": "ಆಯ್ಕೆನ್ ತಿರ್ಗಾಲೆ",
-       "tooltip-invert": "à²\88 à²\9aà³\8cà²\95à³\8aದà³\81ಲಯಿಡà³\8d à²\85ಡà³\86à²\82à²\97ಿನ à²ªà³\81ದರà³\8dâ\80\8dನà³\8d à²\88 à²\9aà³\8cà²\95à³\8aಡà³\86 à²ªà²°à³\80à²\95à³\8dಷಿಸಲà³\86ಲà³\86(ಬà³\8aà²\95à³\8dà²\95à³\8a à²\92à²\9fà³\8dà²\9fà³\81à²\97ಿತà³\8dತಿನ à²ªà³\81ದರà³\8dâ\80\8dನà³\8dಲಾ à²ªà²°à³\80à²\95à³\8dಷಿಸವà³\8aಲಿ)",
-       "namespace_association": "à²\9cತà³\86à²\9fಿತà³\8dತಿನ à²ªà³\81ದರà³\8d",
-       "tooltip-namespace_association": "à²\88 à²\9aà³\8cà²\95à³\8aನà³\81 à²\9aರà³\8dà²\9aà³\86ನà³\8d à²¸à³\87ರಾದà³\8d à²ªà²°à³\80à²\95à³\8dಷಿಸಲà³\86 à²\85ತà³\8dತà³\8dà²\82ಡ à²µà²¿à²¸à²¯à³\8aà²\97à³\81 à²¸à²°à²¿à²¯à²¾à²¯à²¿à²¨ à²ªà³\81ದರà³\8dದ à²\9cತà³\86à²\9fà³\8d à²¸à³\87ರಾಲೆ",
+       "tooltip-invert": "à²\86ಯà³\8dತಿ à²ªà³\81ದರà³\8d-à²\9cಾà²\97à³\86ದà³\81ಲಯಿದ (ಬà³\8aà²\95à³\8dà²\95 à²\86ಯà³\8dತಿತà³\8dತà³\8dà²\82ಡ, à²¸à²\82ಬà²\82ಧ à²ªà²\9fà³\8dà²\9fಿನ à²ªà³\81ದರà³\8d-à²\9cಾà²\97à³\86ದಲಾ) à²ªà³\81à²\9fà³\8aà²\95à³\81ಲà³\86ನ à²¬à²¦à²²à²¾à²µà²£à³\86ನà³\8d à²¦à³\86à²\82à²\97ಾಯà³\86ರà³\86 à²\88 à²ªà³\86à²\9fà³\8dà²\9fಿà²\97à³\86ನà³\8d à²\86ಯà³\8dಪà³\81ಲà³\86",
+       "namespace_association": "ಸà²\82ಬà²\82ದà³\8a à²ªà²\9fà³\8dà²\9fಿನ à²ªà³\81ದರà³\8d-à²\9cಾà²\97à³\86",
+       "tooltip-namespace_association": "à²\86ಯà³\8dತಿ à²ªà³\81ದರà³\8d-à²\9cಾà²\97à³\86à²\97à³\8d à²¸à²\82ಬà²\82ಧ à²ªà²\9fà³\8dà²\9fಿನ à²ªà²¾à²¤à³\86ರ à²\85ತà³\8dತಾà²\82ಡ à²µà²¿à²¸à²¯à²¦ à²ªà³\81ದರà³\8d-à²\9cಾà²\97à³\86ನà³\8dಲಾ à²\92à²\9fà³\8dà²\9fà³\81à²\97à³\81 à²¸à³\87ರಾಯà³\86ರà³\86 à²\88 à²ªà³\86à²\9fà³\8dà²\9fಿà²\97à³\86ನà³\8d à²\86ಯà³\8dಪà³\81ಲೆ",
        "blanknamespace": "(ಮುಖ್ಯ)",
        "contributions": "{{GENDER:$1|ಸದಸ್ಯೆರ್ನ}} ಕಾಣಿಕೆಲು",
        "contributions-title": "$1 ಗ್ ಸದಸ್ಯೆರ್ನ ಕಾಣಿಕೆ",
        "mycontris": "ಎನ್ನ ಕಾನಿಕೆಲು",
        "anoncontribs": "ಕಾನಿಕೆಲು",
-       "contribsub2": "$1 ($2) ಗ್",
-       "uctop": " (ಮಿತ್ತ್)",
+       "contribsub2": "{{GENDER:$3|$1}} ($2)",
+       "uctop": "(ಇತ್ತೆದ)",
        "month": "ಈ ತಿಂಗೊಲುರ್ದ್ (ಬೊಕ್ಕ ದುಂಬುದ):",
        "year": "ಈ ಒರ್ಸೊರ್ದು(ಬೊಕ್ಕ ದುಂಬುದ):",
-       "sp-contributions-newbies": "ಪà³\8aಸ à²\96ಾತà³\86ಲà³\86ದ ಕಾಣಿಕೆಲೆನ್ ಮಾತ್ರ ತೊಜ್ಪಾವು",
+       "sp-contributions-newbies": "ಪà³\8aಸ à²\96ಾತà³\86ಲà³\86ನ ಕಾಣಿಕೆಲೆನ್ ಮಾತ್ರ ತೊಜ್ಪಾವು",
        "sp-contributions-blocklog": "ತಡೆಪತ್ತುನ ದಾಖಲೆ",
+       "sp-contributions-deleted": "ಮಾಜಿದಿನ {{GENDER:$1|ಸದಸ್ಯೆರೆ}} ಕಾಣಿಕೆಲು",
+       "sp-contributions-uploads": "ಅಪ್ಲೋಡ್ಲು",
        "sp-contributions-logs": "ದಾಖಲೆಲು",
        "sp-contributions-talk": "ಪಾತೆರ",
+       "sp-contributions-userrights": "{{GENDER:$1|ಸದಸ್ಯೆರ್ನ}} ಹಕ್ಕುಲೆನ ನಿರ್ವಹನೆ",
        "sp-contributions-search": "ಕಾಣಿಕೆಲೆನ್ ನಾಡ್ಲೆ",
-       "sp-contributions-username": "ಐ.ಪಿ ವಿಳಾಸ ಅತ್ತ್’ನ್ಡ ಬಳಕೆದ ಪುದರ್:",
+       "sp-contributions-username": "ಐ.ಪಿ ವಿಳಾಸ ಅತ್ತಂಡ ಸದಸ್ಯೆರ್ನ ಪುದರ್:",
+       "sp-contributions-toponly": "ಇಂಚಿಪದ ಪರಿಷ್ಕರಣೆದ ಸಂಪಾದನೆಲೆನ್ ಮಾತ್ರ ತೋಜಾವು",
+       "sp-contributions-newonly": "ಪುಟೊನು ಉಂಡು ಮಲ್ತಿನ ಸಪಾದನೆಲೆನ್ ಮಾತ್ರ ತೋಜಾವು",
+       "sp-contributions-hideminor": "ಕಿಞ್ಞ ಬದಲಾವಣೆನ್ ದೆಂಗಾಲೆ",
        "sp-contributions-submit": "ನಾಡ್",
        "whatlinkshere": "ಇಡೆ ವಾ ಪುಟೊ ಕೊಂಡಿ ಕೊರ್ಪುಂಡು",
-       "whatlinkshere-title": "\"$1\" à²ªà³\81à²\9fà³\8aà²\97à³\81 à²\95à³\8aà²\82ಡಿ à²\95à³\8aರà³\8dಪà³\81ನ à²ªà³\81à²\9fà³\8aಲು",
+       "whatlinkshere-title": "\"$1\" à²\95à³\8dà²\95à³\8d à²¸à²\82ಪರà³\8dà²\95 à²\95à³\8aರà³\8dಪಿನ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲು",
        "whatlinkshere-page": "ಪುಟೊ:",
        "linkshere": "</strong>[[:$1]]<strong>ಗ್ ಈ ತಿರ್ತ್‍ದ ಪುಟೊಗು ಕೊಂಡಿ ಕೊರ್ಪುಂಡು.",
-       "nolinkshere": "'''[[:$1]]''' à²\97à³\8d à²µà²¾ à²ªà³\81à²\9fà³\8aಲà³\81ಲಾ à²²à²¿à²\82à²\95à³\8d à²\95à³\8aರà³\8dಪà³\81ಜಿ.",
+       "nolinkshere": "'''[[:$1]]''' à²\97à³\8d à²µà²¾ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲà³\86ಡà³\8dಲಾ à²²à²¿à²\82à²\95à³\8d à²\87à²\9cà³\8dಜಿ.",
        "isredirect": "ಪಿರ ನಿರ್ದೇಶನೊದ ಪುಟೊ",
        "istemplate": "ಸೇರಾವುನೆ",
        "isimage": "ಫೈಲ್‍ದ ಕೊಂಡಿ",
        "whatlinkshere-links": "← ಕೊಂಡಿಲು",
        "whatlinkshere-hideredirs": "$1 ಪಿರನಿರ್ದೇಶನೊಲು",
        "whatlinkshere-hidetrans": "$1 ಸೇರಾವುನವು",
-       "whatlinkshere-hidelinks": "$1 à²\95à³\8aà²\82ಡಿà²\95à³\81ಲà³\81",
+       "whatlinkshere-hidelinks": "$1 ಕೊಂಡಿಲು",
        "whatlinkshere-filters": "ಅರಿಪೆಲು",
        "whatlinkshere-submit": "ಪೋಲೆ",
        "blockip": "ಈ ಸದಸ್ಯೆರೆನ್ ಬ್ಲಾಕ್ ಮಲ್ಪುಲೆ",
        "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",
+       "blocklist": "ತಡೆ ಆತಿನ ಸದಸ್ಯೆರ್",
        "ipblocklist": "ತಡೆಪತ್ತ್’ದಿನ ಐ.ಪಿ ವಿಳಾಸೊಲು ಅಂಚೆನೆ ಬಳಕೆದ ಪುದರ್’ಲು",
        "blocklist-target": "ಗುರಿ",
        "blocklist-reason": "ಕಾರಣೊ",
        "change-blocklink": "ಬ್ಲಾಕ್’ನ್ ಬದಲಾಲೆ",
        "contribslink": "ಕಾಣಿಕೆಲು",
        "emaillink": "ಇ-ಅಂಚೆ ಕಡಪುಡುಲೆ",
-       "blocklogpage": "ತಡೆಪತ್ತ್’ದ್’ನ ಸದಸ್ಯೆರ್ನ ದಿನಚರಿ",
-       "blocklogentry": "[[$1]] ಖಾತೆನ್ $2 $3 ಮುಟ್ಟ ತಡೆಪತ್ತ್’ದ್’ನ್ಡ್",
+       "blocklogpage": "ತಡೆ ಆತಿನ ಸದಸ್ಯೆರ್ನ ದಾಕಲೆ",
+       "blocklogentry": "[[$1]] ಖಾತೆ $2 $3 ಮುಟ್ಟ ತಡೆ ಆತ್ಂಡ್",
        "unblocklogentry": "$1 ಖಾತೆನ್ ಅನ್-ಬ್ಲಾಕ್ ಮಲ್ತ್’ನ್ಡ್",
-       "block-log-flags-nocreate": "à²\96ಾತà³\86 à²¸à³\83ಷà³\8dà²\9fಿನà³\8d à²¤à²¡à³\86ಪತà³\8dತà³\8dâ\80\99ದà³\8dâ\80\99ನà³\8dಡ್",
+       "block-log-flags-nocreate": "à²\96ಾತà³\86 à²\89à²\82ಡà³\81 à²®à²²à³\8dಪà³\81ನà³\87ನà³\8d à²¤à²¡à³\86ಪತà³\8dತà³\8d'ದà³\8dà²\82ಡ್",
        "movelogpage": "ಸ್ತಲಾಂತರೊದ ದಾಕಲೆ",
        "movereason": "ಕಾರಣೊ:",
        "revertmove": "ದುಂಬುದ ಲೆಕೆ ಮಲ್ಪುಲೆ",
-       "export": "ಪà³\81à²\9fà³\8aಲà³\86ನà³\8d ಕಡಪುಡ್ಲೆ",
+       "export": "ಪà³\81à²\9fà³\8aà²\95à³\81ಲà³\86ನà³\8d à²ªà²¿à²¦à²¯à²¿ ಕಡಪುಡ್ಲೆ",
        "export-submit": "ರಫ್ತು ಮಲ್ಪುಲೆ",
        "export-addcat": "ಸೇರಾಲೆ",
        "export-addns": "ಸೇರಾಲೆ",
        "allmessages-language": "ಬಾಸೆ:",
        "allmessages-filter-submit": "ಪೋ",
        "allmessages-filter-translate": "ಭಾಷಾಂತರ ಮಲ್ಪುಲೆ",
-       "thumbnail-more": "ಮಲ್ಲ ಮಲ್ಪುಲೆ",
+       "thumbnail-more": "ಮಲ್ಲ ಮಲ್ಪುಲೆ",
        "thumbnail_error": "ಮುನ್ನೋಟ ಚಿತ್ರೊನು ಸೃಷ್ಟಿ ಮನ್ಪುನಗ ದೋಷ: $1",
        "import": "ಪುಟೊಲೆನ್ ಕಡಪುಡ್ಲೆ",
        "import-interwiki-sourcepage": "ಮೂಲ ಪುಟ",
        "tooltip-pt-mycontris": "{{GENDER:|ಎನ್ನ}} ಕಾನಿಕೆಲೆನ ಪಟ್ಟಿ",
        "tooltip-pt-login": "ಈರ್ ಲಾಗಿನ್ ಆವೊಡುಂದು ಕೇನೊಂದುಲ್ಲೊ, ಆಂಡ ಉಂದು ದಾಲ ಕಡ್ಡಾಯ ಅತ್ತ್.",
        "tooltip-pt-logout": "ಲಾಗ್ ಔಟ್",
-       "tooltip-pt-createaccount": "à²\87ರà³\8d  à²ªà³\8bಸ à²\96ಾತà³\86 à²¸à³\81ರà³\81ಮಾà²\82ತà³\8dâ\80\8dದà³\8d, ಲಾಗಿನ್ ಆಪುನೈನ್ ಬೆರಿ ಬೊಟ್ಟುಪೋ, ಆಂಡ ಉಂದು ಕಡ್ಡಾಯ ಅತ್ತ್.",
+       "tooltip-pt-createaccount": "à²\88ರà³\8d à²ªà³\8aಸ à²\96ಾತà³\86 à²¸à³\81ರà³\81ಮಲà³\8dತà³\8d ಲಾಗಿನ್ ಆಪುನೈನ್ ಬೆರಿ ಬೊಟ್ಟುಪೋ, ಆಂಡ ಉಂದು ಕಡ್ಡಾಯ ಅತ್ತ್.",
        "tooltip-ca-talk": "ಮಾಹಿತಿ ಪುಟೊತ ಬಗೆಟ್ ಚರ್ಚೆ",
        "tooltip-ca-edit": "ಈ ಪುಟೊನ್ ಸಂಪೊಲಿಪುಲೆ",
        "tooltip-ca-addsection": "ಪೊಸ ವಿಬಾಗೊನು ಸುರು ಮಲ್ಪುಲೆ",
        "tooltip-ca-viewsource": "ಉಂದೊಂಜಿ ಸಂರಕ್ಷಿತ ಪುಟೊ.\nಇಂದೆತ ಮೂಲೊನು ಈರ್ ತೂವೊಲಿ.",
        "tooltip-ca-history": "ಈ ಪುಟೊದ ಪರತ್ತ್ ಆವೃತ್ತಿಲು",
        "tooltip-ca-protect": "ಈ ಪುಟೊನು ಸಂರಕ್ಷಣೆ ಮಲ್ಪುಲೆ",
-       "tooltip-ca-delete": "à²\88 à²ªà³\81à²\9fà³\8aನà³\81 à²¡à²¿à²²à³\80à²\9fà³\8d ಮಲ್ಪುಲೆ",
+       "tooltip-ca-delete": "à²\88 à²ªà³\81à²\9fà³\8aನà³\81 à²¨à²¾à²¶ ಮಲ್ಪುಲೆ",
        "tooltip-ca-move": "ಈ ಪೂಟೊನು ಬೇತೆ ಕಡೆಕ್ ಪಾಡ್ಲೆ",
        "tooltip-ca-watch": "ಈ ಪುಟೊನು ಈರೆನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗ್ ಸೆರ್ಪಾಲೆ",
        "tooltip-ca-unwatch": "ಈ ಪುಟೊನು ಇರೆನ ವೀಕ್ಷಣಾ ಪಟ್ಟಿರ್ದ್ ದೆಪ್ಪುಲೆ",
        "tooltip-search": "{{SITENAME}}ನ್ ನಾಡ್‍ಲೆ",
-       "tooltip-search-go": "à²\89à²\82ದà³\81ವà³\87 à²ªà³\81ದರà³\8dದ à²ªà³\81à²\9fà³\8a à²\87ತà³\8dತà³\8dâ\80\8cà²\82ಡ à²\86ಡೆ ಪೋಲೆ",
+       "tooltip-search-go": "à²\89à²\82ದà³\81ವà³\87 à²ªà³\81ದರà³\8dದ à²ªà³\81à²\9fà³\8a à²\87ತà³\8dತà³\8dâ\80\8cà²\82ಡ à²\85ಡೆ ಪೋಲೆ",
        "tooltip-search-fulltext": "ಈ ಪಟ್ಯೊಡ್ ಉಪ್ಪುನಂಚಿನ ಪುಟೊಲೆನ್ ನಾಡ್‌ಲೆ",
-       "tooltip-p-logo": "ಮà³\81à²\96à³\8dಯ à²ªà³\81à²\9fà²\97್ ಪೋಲೆ",
+       "tooltip-p-logo": "ಮà³\81à²\96à³\8dಯ à²ªà³\81à²\9fà²\95್ ಪೋಲೆ",
        "tooltip-n-mainpage": "ಮುಖ್ಯಪುಟನ್ ತೂಲೆ",
        "tooltip-n-mainpage-description": "ಮುಕ್ಯೊ ಪುಟೊನ್ ತೂಲೆ",
        "tooltip-n-portal": "ಯೋಜನೆದ ಬಗೆಟ್, ಈರ್ ದಾದ ಮಲ್ಪೊಲಿ, ಓಲು ಇಂದೆತ ಬಗೆಟ್ ತೆರಿಯೊನೊಲಿ",
        "tooltip-n-randompage": "ಇಚ್ಚೆದ ಪುಟೊ ಒಂಜೆನ್ ತೋಜಾವು",
        "tooltip-n-help": "ಇಂದೆತ ಬಗೆಟ್ ತೆರೆಯೊನುನ ಜಾಗೆ",
        "tooltip-t-whatlinkshere": "ಇಡೆಗ್ ಕೊಂಡಿ ಕೊರ್ಪುನಂಚಿನ ಪೂರ ವಿಕಿ ಪುಟೊಲೆನ ಪಟ್ಟಿ",
-       "tooltip-t-recentchangeslinked": "à²\88 à²ªà³\81à²\9fà³\8aಡà³\8dದà³\8d à²¸à²\82ಪರà³\8dà²\95à³\8a à²\89ಪà³\8dಪà³\81ನà²\82à²\9aಿನ à²ªà³\81à²\9fà³\8aಡà³\8d ಇಂಚಿಪೊದ ಬದಲಾವಣೆಲು",
+       "tooltip-t-recentchangeslinked": "à²\88 à²ªà³\81à²\9fà³\8aಡà³\8dದà³\8d à²¸à²\82ಪರà³\8dà²\95à³\8a à²\89ಪà³\8dಪà³\81ನà²\82à²\9aಿನ à²ªà³\81à²\9fà³\8aà²\9fà³\81 ಇಂಚಿಪೊದ ಬದಲಾವಣೆಲು",
        "tooltip-feed-rss": "ಈ ಪುಟೊಗು ಆರ್.ಎಸ್.ಎಸ್ ಫೀಡ್",
-       "tooltip-feed-atom": "à²\88 à²ªà³\81à²\9fà³\8aà²\97ು ಆಟಮ್ ಫೀಡ್ ಮಲ್ಪುಲೆ",
+       "tooltip-feed-atom": "à²\88 à²ªà³\81à²\9fà³\8aà²\95ು ಆಟಮ್ ಫೀಡ್ ಮಲ್ಪುಲೆ",
        "tooltip-t-contributions": "{{GENDER:$1|ಈ ಸದಸ್ಯೆರ್ನ}} ಕಾಣಿಕೆದ ಪಟ್ಟಿನ್ ತೋಜಾವು",
-       "tooltip-t-emailuser": "ಈ ಸದಸ್ಯೆರೆಗ್ ಇ-ಮೇಲ್ ಕಡಪುಡ್ಲೆ",
-       "tooltip-t-upload": "ಫೈಲನ್ ಅಪ್ಲೋಡ್ ಮಲ್ಪುಲೆ",
+       "tooltip-t-emailuser": "{{GENDER:$1|ಈ ಸದಸ್ಯೆರೆಗ್}} ಇ-ಮೇಲ್ ಕಡಪುಡ್ಲೆ",
+       "tooltip-t-upload": "ಫà³\88ಲà³\8dâ\80\99ನà³\8d à²\85ಪà³\8dಲà³\8bಡà³\8d à²®à²²à³\8dಪà³\81ಲà³\86",
        "tooltip-t-specialpages": "ಪೂರ  ವಿಸೇಸೊ ಪುಟೊಲೆನ ಪಟ್ಟಿ",
-       "tooltip-t-print": "à²\88 à²ªà³\81à²\9fà³\8aದ ಮುದ್ರಣೊ ಮಲ್ಪುನ ಆವೃತ್ತಿ",
-       "tooltip-t-permalink": "ಪà³\81à²\9fà³\8aದ ಈ ಆವೃತ್ತಿಗ್ ಸಾಸಿತೊ ಕೊಂಡಿ",
+       "tooltip-t-print": "à²\88 à²ªà³\81à²\9fà³\8aತ ಮುದ್ರಣೊ ಮಲ್ಪುನ ಆವೃತ್ತಿ",
+       "tooltip-t-permalink": "ಪà³\81à²\9fà³\8aತ ಈ ಆವೃತ್ತಿಗ್ ಸಾಸಿತೊ ಕೊಂಡಿ",
        "tooltip-ca-nstab-main": "ಮಾಹಿತಿ ಪುಟೊನ್ ತೂಲೆ",
        "tooltip-ca-nstab-user": "ಸದಸ್ಯೆರ್ನ ಪುಟೊನು ತೂಲೆ",
        "tooltip-ca-nstab-special": "ಉಂದೊಂಜಿ ವಿಸೇಸ ಪುಟೊ, ಇಂದೆನ್ ಈರ್ ಸಂಪೊಲಿಪೆರೆ ಆಪುಜಿ",
        "tooltip-ca-nstab-project": "ಮಾಹಿತಿ ಪುಟೊನು ತೂಲೆ",
        "tooltip-ca-nstab-image": "ಫೈಲ್‍ದ ಪುಟೊನು ತೂಲೆ",
+       "tooltip-ca-nstab-mediawiki": "ಸಿಸ್ಟಮ್ ಸಂದೇಶೊನು ತೂಲೆ",
        "tooltip-ca-nstab-template": "ಟೆಂಪ್ಲೇಟ್‍ನ್ ತೂಲೆ",
        "tooltip-ca-nstab-category": "ವರ್ಗೊದ ಪುಟೊನು ತೂಲೆ",
        "tooltip-minoredit": "ಇಂದೆನ್ ಎಲ್ಯ ಬದಲಾವಣೆ ಪಂಡ್ದ್ ಗುರ್ತ ಮಲ್ಪುಲೆ",
        "tooltip-undo": "\"ವಜಾ ಮಲ್ಪುಲೆ\" ಈ ಬದಲಾವಣೆನ್ ದೆತೊನುಜಿ ಬುಕ್ಕೊ ಪ್ರಿವ್ಯೂ ಮೋಡ್‍ಡ್ ಬದಲಾವಣೆ ಮಲ್ಪೆರ್ ಕೊನೊಪು೦ಡು. ಅ೦ಚೆನೆ ಸಾರಾಂಸೊಡು ಬದಲಾವಣೆಗ್ ಕಾರಣ ಸೇರಾಯರ ಆಪು೦ಡು.",
        "tooltip-summary": "ಒಂಜಿ ಎಲ್ಯ ಸಾರಾಂಸೊ ಕೊರ್ಲೆ",
        "simpleantispam-label": "ಯಾಂಟಿ-ಸ್ಪಾಮ್ ಚೆಕ್.\nಮುಲ್ಪ <strong>ದಿಂಜಾವೊಡ್ಚಿ</strong>",
+       "pageinfo-title": "\"$1\" ಕ್ ಮಾಹಿತಿ",
+       "pageinfo-header-basic": "ಮೂಲ ಮಾಹಿತಿ",
+       "pageinfo-header-edits": "ಸಂಪೊಲಿತಿನ ಇತಿಹಾಸೊ",
+       "pageinfo-header-restrictions": "ಪುಟ ರಕ್ಷಣೆ",
+       "pageinfo-header-properties": "ಪುಟೊತ್ತ ಗುಣಲಕ್ಷಣೊಲು",
+       "pageinfo-display-title": "ತೋಜುನ ಪುದರ್",
+       "pageinfo-length": "ಪುಟೊತ್ತ ಉದ್ದ (ಬೈಟ್ಸ್)",
        "pageinfo-article-id": "ಪುಟೊದ ಐಡಿ",
+       "pageinfo-language": "ಪುಟೊಟಿತ್ತಿ ವಿಸಯೊದ ಬಾಸೆ",
+       "pageinfo-content-model": "ಪುಟೊಟಿತ್ತಿ ವಿಸಯೊದ ಮಾದರಿ",
        "pageinfo-content-model-change": "ಬದಲಾವಣೆಲು",
+       "pageinfo-robot-index": "ಅನುಮತಿ ಉಂಡು",
+       "pageinfo-watchers": "ಪುಟೊತ್ತ ವೀಕ್ಷಕೆರ್ನ ಸಂಕೆ",
+       "pageinfo-few-watchers": "$1 ಡ್ದ್ ಕಮ್ಮಿ {{PLURAL:$1|ವೀಕ್ಷಕೆರ್|ವೀಕ್ಷಕೆರ್ಲು}}",
+       "pageinfo-redirects-name": "ಈ ಪುಟೊಕಿತ್ತಿ ರೀಡೈರೆಕ್ಟ್‌ಲೆನ ಸಂಕೆ",
+       "pageinfo-firstuser": "ಪುಟೊನು ಉಂಡು ಮಲ್ತಿನಾರ್",
+       "pageinfo-firsttime": "ಪುಟೊನು ಉಂಡು ಮಲ್ತಿನ ತಾರಿಕ್",
+       "pageinfo-lastuser": "ಇಂಚಿಪ್ಪೊದ ಸಂಪಾದಕೆರ್",
+       "pageinfo-lasttime": "ಇಂಚಿಪೊಗು ಸಂಪೊಲಿತಿನ ತಾರಿಕ್",
+       "pageinfo-edits": "ಒಟ್ಟು ಸಂಪಾದನೆಲೆನ ಸಂಕೆ",
        "pageinfo-toolboxlink": "ಪುಟೊದ ಮಾಹಿತಿ",
+       "pageinfo-contentpage": "ವಿಸಯೊ ಇತ್ತಿ ಪುಟೊ ಪಂದ್ ಲೆಕ್ಕೊಗು ಪತ್ತ್‌ದ್ಂಡ್",
        "pageinfo-contentpage-yes": "ಅಂದ್",
        "pageinfo-protect-cascading-yes": "ಅಂದ್",
        "pageinfo-category-pages": "ಪುಟೊಕುಲೆ ಸಂಕ್ಯೆ",
        "nextdiff": "ಬುಕ್ಕೊದ ಸಂಪದನೆ →",
        "thumbsize": "ಕಿರುನೋಟದ ಗಾತ್ರೊ:",
        "file-info-size": "$1 × $2 ಚಿತ್ರಬಿಂದುಲು, ಫೈಲ್‍ದ ಗಾತ್ರೊ: $3, MIME ಪ್ರಕಾರೊ: $4",
-       "file-nohires": "à²\87à²\82ದà³\86ರà³\8dದà³\8d à²\9cಾಸà³\8dತಿ à²°à³\86ಸಲà³\8dಯà³\82ಶನà³\8d à²\87ದà³\8dದಿ,",
+       "file-nohires": "à²\87à²\82ದà³\86ರà³\8dದà³\8d à²\9cಾಸà³\8dತಿ à²°à³\86ಸಲà³\8dಯà³\82ಶನà³\8d à²\87à²\9cà³\8dà²\9cಿ.",
        "svg-long-desc": "ಎಸ್.ವಿ.ಜಿ ಫೈಲ್, ಸುಮಾರಾದ್ $1 × $2 ಚಿತ್ರೊಬಿಂದು, ಫೈಲ್‍ದ ಗಾತ್ರ: $3",
        "show-big-image": "ಮೂಲೊ ಫೈಲ್",
-       "show-big-image-preview": "ಪಿರವà³\81ದ à²ªà³\81à²\9fà³\8aದ ಗಾತ್ರೊ: $1.",
+       "show-big-image-preview": "ಪಿರವà³\81ದ à²ªà³\81à²\9fà³\8aತ ಗಾತ್ರೊ: $1.",
        "show-big-image-other": "ಬೇತೆ{{PLURAL:$2|resolution|ಪಟೊತ್ತ ಗಾತ್ರೊ }}: $1.",
        "show-big-image-size": "$1 × $2 ಚಿತ್ರೊ ಬಿಂದುಲು",
+       "newimages": "ಪೊಸ ಕಡತೊಲೆನ್ ಗ್ಯಾಲರಿ",
        "newimages-legend": "ಅರಿಪೆ",
        "ilsubmit": "ನಾಡ್‍ಲೆ",
+       "hours": "{{PLURAL:$1|$1 ಗಂಟೆ|$1 ಗಂಟೆಲು}}",
+       "days": "{{PLURAL:$1|$1 ದಿನೊ|$1 ದಿನೊಕುಲು}}",
        "bad_image_list": "ವ್ಯವಸ್ಥೆದ ಆಕಾರ ಈ ರೀತಿ ಉಂಡು:\n\nಪಟ್ಟಿಡುಪ್ಪುನಂಚಿನ ದಾಖಲೆಲೆನ್ (* ರ್ದ್ ಶುರು ಆಪುನ ಸಾಲ್’ಲು) ಮಾತ್ರ ಪರಿಗಣನೆಗ್ ದೆತೊನೆರಾಪುಂಡು.\nಪ್ರತಿ ಸಾಲ್’ದ ಶುರುತ ಲಿಂಕ್ ಒಂಜಿ ದೋಷ ಉಪ್ಪುನಂಚಿನ ಫೈಲ್’ಗ್ ಲಿಂಕಾದುಪ್ಪೊಡು.\nಅವ್ವೇ ಸಾಲ್’ದ ಶುರುತ ಪೂರಾ ಲಿಂಕ್’ಲೆನ್ ಪರಿಗನೆರ್ದ್ ದೆಪ್ಪೆರಾಪುಂಡು, ಪಂಡ ಓವು ಪುಟೊಲೆಡ್ ಫೈಲ್’ದ ಬಗ್ಗೆ ಬರ್ಪುಂಡೋ ಔಲು.",
        "metadata": "ಮೆಟಾಡೇಟಾ",
-       "metadata-help": "à²\88 à²ªà³\88ಲà³\8dâ\80\8dಡà³\8d à²\9cಾಸà³\8dತಿ à²®à²¾à²¹à²¿à²¤à²¿ à²\89à²\82ಡà³\81. à²¹à³\86à²\9aà³\8dà²\9aಿನà²\82ಸà³\8a à²ªà³\88ಲà³\8dâ\80\8dನà³\8d à²\89à²\82ಡà³\81 à²®à²²à³\8dಪà³\86ರà³\86 à²\89ಪಯà³\8bà²\97 à²®à²²à³\8dತಿನ à²¡à²¿à²\9cಿà²\9fಲà³\8d à²\95à³\8dಯಾಮà³\86ರರà³\8dದà³\8d à²\85ತà³\8dತà³\8dà²\82ಡ à²¸à³\8dà²\95à³\8dಯಾನರà³\8dâ\80\8cರà³\8dದà³\8d à²\88 à²®à²¾à²¹à²¿à²¤à²¿ à²¬à²¤à³\8dತà³\8dà²\82ಡà³\8d.\nಮà³\82ಲಪà³\8dರತಿರà³\8dದà³\8d à²\88 à²ªà³\88ಲà³\8d à²¬à²¦à²²à²¾à²¦à²¿à²¤à³\8dತà³\8dà²\82ಡà³\8d, à²\88 ಮಾಹಿತಿ ಬದಲಾತಿನ ಪೈಲ್‍ದ ವಿವರೊಲೆಗ್ ಸರಿಯಾದ್ ಹೊಂದಂದೆ ಉಪ್ಪು.",
+       "metadata-help": "à²\88 à²ªà³\88ಲà³\8dâ\80\8dಡà³\8d à²\9cಾಸà³\8dತಿ à²®à²¾à²¹à²¿à²¤à²¿ à²\89à²\82ಡà³\81. à²¹à³\86à²\9aà³\8dà²\9aಿನà²\82ಸà³\8a à²ªà³\88ಲà³\8dâ\80\8dನà³\8d à²\89à²\82ಡà³\81 à²®à²²à³\8dಪà³\86ರà³\86 à²\89ಪಯà³\8bà²\97 à²®à²²à³\8dತಿನ à²¡à²¿à²\9cಿà²\9fಲà³\8d à²\95à³\8dಯಾಮà³\86ರರà³\8dದà³\8d à²\85ತà³\8dತà³\8dà²\82ಡ à²¸à³\8dà²\95à³\8dಯಾನರà³\8dâ\80\8cರà³\8dದà³\8d à²\88 à²®à²¾à²¹à²¿à²¤à²¿ à²¬à³\88ದà³\8dà²\82ಡà³\8d.\nಮà³\82ಲಪà³\8dರತಿರà³\8dದà³\8d à²\88 à²ªà³\88ಲà³\8d à²¬à²¦à²²à²¾à²¦à²¿à²¤à³\8dತà³\8dà²\82ಡ, à²\95à³\86ಲವà³\81 ಮಾಹಿತಿ ಬದಲಾತಿನ ಪೈಲ್‍ದ ವಿವರೊಲೆಗ್ ಸರಿಯಾದ್ ಹೊಂದಂದೆ ಉಪ್ಪು.",
        "metadata-expand": "ವಿಸ್ತಾರವಾಯಿನ ವಿವರೊಲೆನ್ ತೊಜ್ಪಾವು",
        "metadata-collapse": "ವಿಸ್ತಾರವಾಯಿನ ವಿವರೊಲೆನ್ ದೆಂಗಾವು",
        "metadata-fields": "ಈ ಸಂದೇಸೊಡು ಪಟ್ಟಿ ಮಲ್ತಿನಂಚಿನ EXIF ಮಿತ್ತ ದರ್ಜೆದ ಮಾಹಿತಿನ್ ಚಿತ್ರೊ ಪುಟೊಕು ಸೇರ್ಪಾಯೆರೆ ಆವೊಂದುಂಡು. ಪುಟೊಟು ಮಿತ್ತ ದರ್ಜೆ ಮಾಹಿತಿದ ಪಟ್ಟಿನ್ ದೆಪ್ಪುನಗ ಉಂದು ತೋಜುಂಡು.\nಒರಿದನವು ಮೂಲೊ ಸ್ಥಿತಿಟ್ ಅಡೆಂಗ್‍ದುಂಡು.\n*ಮಲ್ಪುಲೆ\n*ಮಾದರಿ\n*ದಿನೊ ಪೊರ್ತು ಮೂಲೊ\n*ಮಾನಾದಿಗೆದ ಸಮಯೊ\n*ಫ್‍ಸಂಖ್ಯೆ\n*ಐಎಸ್ಒ ವೇಗೊದ ರೇಟಿಂಗ್\n*ತೂಪಿನ ಜಾಗೆದ ದೂರ\n*ಕಲಾವಿದೆ\n*ಕೃತಿಸ್ವಾಮ್ಯೊ\n*ಚಿತ್ರೊ ವಿವರಣೆ\n*ಜಿಪಿಎಸ್ ಅಕ್ಷಾಂಸೊ\n*ಜಿಪಿಎಸ್ ರೇಖಾಂಸೊ\n*ಜಿಪಿಎಸ್ ಎತ್ತರೊ",
        "confirm-watch-button": "ಸರಿ",
        "confirm-unwatch-button": "ಸರಿ",
        "confirm-rollback-button": "ಸರಿ",
+       "word-separator": "&#32;",
        "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← ದುಂಬುತ ಪುಟೊ",
-       "imgmultipagenext": "ನನತ ಪುಟ →",
+       "imgmultipagenext": "ನನತ ಪುಟ →",
        "img-lang-go": "ಪೋಲೆ",
        "table_pager_next": "ನನತಾ ಪುಟ",
        "table_pager_prev": "ದುಂಬುತ ಪುಟೊ",
        "watchlistedit-clear-title": "ತುಯಿನೇನ್ ಮಾಜಾಲೇ",
        "watchlistedit-clear-legend": "ತುಯಿನೇನ್ ಮಾಜಾಲೇ",
        "watchlistedit-clear-titles": "ತರೆಬರವು:",
+       "watchlisttools-clear": "ವೀಕ್ಷಣಾಪಟ್ಟಿನ್ ಖಾಲಿ ಮಲ್ಪುಲೆ",
        "watchlisttools-view": "ಪ್ರಸ್ತುತ ಬದಲಾವಣೆಲ್ ತೋಜಾಲೆ",
        "watchlisttools-edit": "ವೀಕ್ಷಣಾಪಟ್ಟಿನ್ ತೂಲೆ ಬೊಕ್ಕ ಎಡಿಟ್ ಮಲ್ಪುಲೆ",
+       "watchlisttools-raw": "ಮೂಲ ವೀಕ್ಷಣಾಪಟ್ಟಿನ್ ಎಡಿಟ್ ಮಲ್ಪುಲೆ",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|ಪಾತೆರ್ಲೆ]])",
        "version": "ಆವೃತ್ತಿ",
        "version-specialpages": "ವಿಸೇಸೊ ಪುಟೊಲು",
        "version-libraries-description": "ವಿವರಣೆ",
        "version-libraries-authors": "ಲೇಖಕೆರ್",
        "redirect-submit": "ಪೋಲೆ",
-       "redirect-value": "ಮà³\8cಲà³\8dಯ:",
-       "redirect-user": "ಬಳà²\95à³\86ದಾರà³\86ರ ID",
-       "redirect-page": "ಪà³\81à²\9fà³\8aದ ಐಡಿ",
+       "redirect-value": "ಬಿಲà³\86:",
+       "redirect-user": "ಸದಸà³\8dಯà³\86ರà³\8dನ ID",
+       "redirect-page": "ಪà³\81à²\9fà³\8aತ ಐಡಿ",
        "redirect-file": "ಕಡತದ ಪುದರ್",
        "fileduplicatesearch-filename": "ಕಡತದ ಪುದರ್:",
        "fileduplicatesearch-submit": "ನಾಡ್‍ಲೆ",
-       "specialpages": "ವಿಸೇಸೊ ಪುಟೊಲು",
+       "specialpages": "ವಿಸೇಸೊ ಪುಟೊಕುಲು",
+       "specialpages-group-other": "ಬೇತೆ ವಿಶೇಷ ಪುಟೊಕುಲು",
+       "specialpages-group-login": "ಲಾಗ್ ಇನ್ / ಖಾತೆ ಉಂಡು ಮಲ್ಪುಲೆ",
+       "specialpages-group-changes": "ಇಂಚಿಪೊದ ಬದಲಾವಣೆಲು ಬೊಕ್ಕ ದಾಕಲೆಲು",
+       "specialpages-group-media": "ಮೀಡಿಯ ವರದಿಲು ಬೊಕ್ಕ ಅಪ್ಲೋಡ್ಲು",
+       "specialpages-group-users": "ಸದಸ್ಯೆರ್ ಬೊಕ್ಕ ಹಕ್ಕುಲು",
+       "specialpages-group-highuse": "ಜಾಸ್ತಿ ಗಲಸುನ ಪುಟೊಕುಲು",
+       "specialpages-group-pages": "ಪುಟೊಕುಲೆನ ಪಟ್ಟಿ",
+       "specialpages-group-redirects": "ವಿಶೇಷ ಪುಟೊಕುಲೆನ್ ರೀಡೈರೆಕ್ಟ್ ಮಲ್ಪುನಿ",
        "blankpage": "ಖಾಲಿ ಪುಟ",
        "tag-filter": "[[Special:Tags|ಟ್ಯಾಗ್]]ಅರಿಪೆ:",
        "tag-filter-submit": "ಅರಿಪೆ",
        "tags-active-no": "ಅತ್ತ್",
        "tags-edit": "ಸಂಪೊಲಿಪುಲೆ",
        "tags-delete": "ಮಾಜಾಲೆ",
+       "tags-hitcount": "$1 {{PLURAL:$1|ಬದಲಾವಣೆ|ಬದಲಾವಣೆಲು}}",
        "tags-create-reason": "ಕಾರಣ:",
        "tags-create-submit": "ಸೃಷ್ಟಿಸಾಲೆ",
        "tags-delete-reason": "ಕಾರಣ:",
        "tags-deactivate-reason": "ಕಾರಣ:",
+       "comparepages": "ಪುಟೊಕುಲೆನ್ ತುಲನೆ ಮಲ್ಪುಲೆ",
        "logentry-delete-delete": "$1{{GENDER:$2|ಮಾಜಾತುಂಡ್}}ಪುಟೊ $3",
        "logentry-delete-restore": "$1 {{GENDER:$2|restored}} ಪುಟೊ $3 ($4)",
        "restore-count-files": "{{PLURAL:$1|1 file|$1 ವಿಸಯೊಲು}}",
+       "revdelete-content-hid": "ವಿಸಯ ದೆಂಗ್‍ದ್ಂಡ್",
        "logentry-move-move": "$1 {{GENDER:$2|ಜಾರಲೆ}} ಪುಟೊ $3 ಡ್ದ್ $4",
+       "logentry-move-move-noredirect": "$1 ಪುಟೊ $3 ನ್ ಪುಟೊ $4 ಕ್ ರೀಡೈರೆಕ್ಟ್ ಕೊರಂದೆ {{GENDER:$2|ವರ್ಗಾವಣೆ ಮಲ್ತೆರ್}}",
+       "logentry-move-move_redir": "$1 ಪುಟೊ $3 ನ್ ಪುಟೊ $4 ಕ್ ರೀಡೈರೆಕ್ಟ್ ಕೊರ್ದು {{GENDER:$2|ವರ್ಗಾವಣೆ ಮಲ್ತೆರ್}}",
        "logentry-newusers-create": "ಬಳಕೆದಾರೆರೆ ಕಾತೆ $1 ನ್ {{GENDER:$2|ಸ್ರಿಸ್ಟಿ ಮಲ್ತಾಂಡ್}}",
+       "logentry-newusers-autocreate": "ಸದಸ್ಯೆರೆ ಖಾತೆ $1 ತನ್ನಾತೆಗ್ {{GENDER:$2|ಉಂಡಾತ್ಂಡ್}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|ಅಪ್ಲೋಡ್ ಮಲ್ತ್‌ದೆರ್}} $3",
        "searchsuggest-search": "{{SITENAME}}ನ್ ನಾಡ್‍ಲೆ",
+       "duration-days": "$1 {{PLURAL:$1|ದಿನೊ|ದಿನೊಕುಲು}}",
        "pagelang-reason": "ಕಾರಣೊ",
-       "mw-widgets-usersmultiselect-placeholder": "ನನಾತ್ ಸೇರಲೇ..."
+       "mw-widgets-dateinput-no-date": "ಒವ್ಲಾ ತಾರಿಕ್ ಪಾಡ್ದಿಜಿ",
+       "mw-widgets-usersmultiselect-placeholder": "ನನಾತ್ ಸೇರಲೇ...",
+       "date-range-from": "ತಾರಿಕ್‌ಡ್ದ್:",
+       "date-range-to": "ತಾರಿಕ್ ಮುಟ:"
 }
index 3776c86..f54c390 100644 (file)
        "login": "లాగినవండి",
        "login-security": "మీ ఐడీని ధ్రువపరచుకోండి",
        "nav-login-createaccount": "లాగినవండి / ఖాతాని సృష్టించుకోండి",
-       "userlogin": "లాగినవండి / ఖాతాను సృష్టించుకోండి",
-       "userloginnocreate": "లాగినవండి",
        "logout": "నిష్క్రమించు",
        "userlogout": "లాగౌట్",
        "notloggedin": "లాగిన్‌ అయిలేరు",
        "userlogin-noaccount": "మీకు ఖాతా లేదా?",
        "userlogin-joinproject": "{{SITENAME}}లో చేరండి",
-       "nologin": "ఖాతా లేదా? $1.",
-       "nologinlink": "ఖాతాని సృష్టించుకోండి",
        "createaccount": "ఖాతాని సృష్టించు",
-       "gotaccount": "ఇప్పటికే మీకు ఖాతా ఉందా? $1.",
-       "gotaccountlink": "లాగినవండి",
-       "userlogin-resetlink": "మీ లాగిన్ వివరాలను మరచిపోయారా?",
        "userlogin-resetpassword-link": "మీ సంకేతపదాన్ని మర్చిపోయారా?",
        "userlogin-helplink2": "లాగినవడంలో సహాయం",
        "userlogin-loggedin": "మీరు ఈసరికే {{GENDER:$1|$1}} గా లాగిన్ అయి ఉన్నారు.\nవేరే వాడుకరిగా లాగినయేందుకు కింది ఫారమును వాడండి.",
        "createaccountmail": "ఏదో ఒక తాత్కాలిక సంకేతపదాన్ని వాడి దాన్ని పేర్కొన్న ఈమెయిలు చిరునామాకు పంపించు",
        "createaccountmail-help": "సంకేతపదం తెలుసుకోనవసరం లేకుండా వేరొకరి కోసం ఖాతా సృష్టించేందుకు వాడవచ్చు.",
        "createacct-realname": "అసలు పేరు (ఐచ్చికం)",
-       "createaccountreason": "కారణం:",
        "createacct-reason": "కారణం",
        "createacct-reason-ph": "మీరు మరో ఖాతాను ఎందుకు సృష్టించుకుంటున్నారు",
        "createacct-submit": "మీ ఖాతాను సృష్టించుకోండి",
        "preview": "మునుజూపు",
        "showpreview": "మునుజూపు చూపు",
        "showdiff": "తేడాలను చూపించు",
-       "blankarticle": "<strong>హెచ్చరిక:</strong> మీరు ఖాళీ పేజీని రూపొందిస్తున్నారు. మళ్ళీ  \"{{int:savearticle}}\" ను నొక్కితే ఖాళీ పేజీ సృష్టించబడుతుంది.",
+       "blankarticle": "<strong>హెచ్చరిక:</strong> మీరు ఖాళీ పేజీని రూపొందిస్తున్నారు. మళ్ళీ  \"$1\" ను నొక్కితే ఖాళీ పేజీ సృష్టించబడుతుంది.",
        "anoneditwarning": "<strong>హెచ్చరిక:</strong> మీరు లాగినవలేదు. మీరు ఏమైనా మార్పులు చేస్తే మీ ఐపీ చిరునామా బహిరంగంగా అందరికీ కనిపిస్తుంది. మీరు   <strong>[$1 ప్రవేశించినా]</strong> లేక <strong>[$2 ఖాతా సృష్టించినా]</strong> మీ మార్పులు మీ పేరుతో ఉండటమే కాకుండా మరెన్నో సదుపాయాలుంటాయి.",
        "anonpreviewwarning": "<em>మీరు లాగినవలేదు. భద్రపరిస్తే ఈ పేజీ యొక్క దిద్దుబాటు చరిత్రలో మీ ఐపీ చిరునామా నమోదవుతుంది.</em>",
        "missingsummary": "<strong>గుర్తు చేస్తున్నాం:</strong> మీరు దిద్దుబాటు సారాంశమేమీ ఇవ్వలేదు. పేజీని మళ్ళీ భద్రపరచమని చెబితే సారాంశమేమీ లేకుండానే దిద్దుబాటును భద్రపరుస్తాం.",
-       "selfredirect": "<strong>హెచ్చరిక:</strong> మీరు ఈ పేజీని దానికే దారిమార్పు చేస్తున్నారు. బహుశా మీరు తప్పు దారిమార్పును సూచించి ఉండవచ్చు, లేదా మీరు తప్పుడు పేజీని మారుస్తున్నారు. \nమీరు \"{{int:savearticle}}\" ను నొక్కితే దారిమార్పు పేజీ ఖచ్చితంగా సృష్టించబడుతుంది.",
+       "selfredirect": "<strong>హెచ్చరిక:</strong> మీరు ఈ పేజీని దానికే దారిమార్పు చేస్తున్నారు. బహుశా మీరు తప్పు దారిమార్పును సూచించి ఉండవచ్చు, లేదా మీరు తప్పుడు పేజీని మారుస్తున్నారు. \nమీరు \"$1\" ను నొక్కితే దారిమార్పు పేజీ ఖచ్చితంగా సృష్టించబడుతుంది.",
        "missingcommenttext": "కింద ఓ వ్యాఖ్య రాయండి.",
-       "missingcommentheader": "<strong>గుర్తు చేస్తున్నాం:</strong> ఈ వ్యాఖ్యకు మీరు విషయం పెట్టలేదు.\n\"{{int:savearticle}}\"ని మళ్ళీ నొక్కితే, అది లేకుండానే మీ మార్పును భద్రపరుస్తాం.",
+       "missingcommentheader": "<strong>గుర్తు చేస్తున్నాం:</strong> ఈ వ్యాఖ్యకు మీరు విషయం పెట్టలేదు.\n\"$1\"ని మళ్ళీ నొక్కితే, అది లేకుండానే మీ మార్పును భద్రపరుస్తాం.",
        "summary-preview": "దిద్దుబాటు సారాంశం మునుజూపు:",
        "subject-preview": "విషయపు మునుజూపు:",
        "previewerrortext": "మీ మార్పులు మునుజూపు చూడటంలో తప్పిదమయింది.",
        "editingsection": "$1 ని సవరిస్తున్నారు (విభాగం)",
        "editingcomment": "$1 ని సవరిస్తున్నారు (కొత్త విభాగం)",
        "editconflict": "దిద్దుబాటు ఘర్షణ: $1",
-       "explainconflict": "మీరు మార్పులు చెయ్యడం మొదలుపెట్టిన తరువాత, వేరే ఎవరో ఈ పుటని మార్పారు.\nపైన ఉన్న పాఠ్య పేటికలో ఈ పుట యొక్క ప్రస్తుతపు పాఠ్యం ఉంది.\nమీరు చేసిన మార్పులు క్రింది పాఠ్య పేటికలో చూపించబడ్డాయి.\nమీరు మీ మార్పులను ప్రస్తుతపు పాఠ్యంలో విలీనం చెయ్యవలసి ఉంటుంది.\nమీరు \"{{int:savearticle}}\"ను నొక్కినపుడు, పై పాఠ్య పేటికలో ఉన్న పాఠ్యం '''మాత్రమే''' భద్రపరచబడుతుంది.",
+       "explainconflict": "మీరు మార్పులు చెయ్యడం మొదలుపెట్టిన తరువాత, వేరే ఎవరో ఈ పుటని మార్పారు.\nపైన ఉన్న పాఠ్య పేటికలో ఈ పుట యొక్క ప్రస్తుతపు పాఠ్యం ఉంది.\nమీరు చేసిన మార్పులు క్రింది పాఠ్య పేటికలో చూపించబడ్డాయి.\nమీరు మీ మార్పులను ప్రస్తుతపు పాఠ్యంలో విలీనం చెయ్యవలసి ఉంటుంది.\nమీరు \"$1\"ను నొక్కినపుడు, పై పాఠ్య పేటికలో ఉన్న పాఠ్యం '''మాత్రమే''' భద్రపరచబడుతుంది.",
        "yourtext": "మీ పాఠ్యం",
        "storedversion": "భద్రపరచిన కూర్పు",
        "nonunicodebrowser": "<strong>హెచ్చరిక: మీ బ్రౌజరు యూనికోడుకు అనుకూలంగా లేదు.</strong>\nపేజీలను క్షేమంగా సవరించేందుకు ఓ దారి ఉంది: ASCII యేతర కారెక్టర్లు ఎడిట్ పెట్టెలో హెక్సాడెసిమల్ కోడ్‍లుగా కనిపిస్తాయి.",
        "right-editsemiprotected": "\"{{int:protect-level-autoconfirmed}}\" గా సంరక్షించబడ్డ పేజీలను మార్చు",
        "right-editcontentmodel": "పేజీ యొక్క కంటెంటు మోడలును సవరించు",
        "right-editinterface": "యూజరు ఇంటరుఫేసులో దిద్దుబాటు చెయ్యి",
-       "right-editusercssjs": "ఇతర వాడుకరుల CSS, JS ఫైళ్ళలో దిద్దుబాటు చెయ్యి",
        "right-editusercss": "ఇతర వాడుకరుల CSS ఫైళ్ళలో దిద్దుబాటు చెయ్యడం",
        "right-edituserjs": "ఇతర వాడుకరుల JS ఫైళ్ళలో దిద్దుబాటు చెయ్యడం",
        "right-editmyusercss": "మీ స్వంత వాడుకరి CSS ఫైళ్ళను సరిదిద్దండి",
        "rcfilters-filter-editsbyother-label": "ఇతరుల దిద్దుబాట్లు",
        "rcfilters-filter-editsbyother-description": "ఇతరులు (మీరు కాదు) చేసిన దిద్దుబాట్లు.",
        "rcfilters-filtergroup-userExpLevel": "అనుభవ స్థాయి (నమోదైన వాడుకరులకు మాత్రమే)",
-       "rcfilters-filter-userExpLevel-newcomer-label": "కొత్తవారు",
-       "rcfilters-filter-userExpLevel-newcomer-description": "10 కంటే తక్కువ దిద్దుబాట్లు, 4 రోజుల కంటే తక్కువ పని.",
-       "rcfilters-filter-userExpLevel-learner-label": "నేర్చుకుంటున్నవారు",
-       "rcfilters-filter-userExpLevel-learner-description": "\"కొత్తవారి\" కంటే ఎక్కువ, \"అనుభవజ్ఞులైన వాడుకరుల\" కంటే తక్కువ పనిరోజులు.",
-       "rcfilters-filter-userExpLevel-experienced-label": "అనుభవజ్ఞులైన వాడుకరులు",
-       "rcfilters-filter-userExpLevel-experienced-description": "30 రోజుల కంటే ఎక్కువ పని, 500 పైచిలుకు దిద్దుబాట్లు.",
+       "rcfilters-filter-user-experience-level-newcomer-label": "కొత్తవారు",
+       "rcfilters-filter-user-experience-level-newcomer-description": "10 కంటే తక్కువ దిద్దుబాట్లు, 4 రోజుల కంటే తక్కువ పని.",
+       "rcfilters-filter-user-experience-level-learner-label": "నేర్చుకుంటున్నవారు",
+       "rcfilters-filter-user-experience-level-learner-description": "\"కొత్తవారి\" కంటే ఎక్కువ, \"అనుభవజ్ఞులైన వాడుకరుల\" కంటే తక్కువ పనిరోజులు.",
+       "rcfilters-filter-user-experience-level-experienced-label": "అనుభవజ్ఞులైన వాడుకరులు",
+       "rcfilters-filter-user-experience-level-experienced-description": "30 రోజుల కంటే ఎక్కువ పని, 500 పైచిలుకు దిద్దుబాట్లు.",
        "rcfilters-filtergroup-significance": "ప్రాముఖ్యం",
        "rcfilters-filter-minor-label": "చిన్న మార్పులు",
        "rcfilters-filter-minor-description": "రచయిత చిన్నవిగా గుర్తు పెట్టిన దిద్దుబాట్లు.",
        "rcshowhidecategorization": "పేజి  వర్గీకరణ $1",
        "rcshowhidecategorization-show": "చూపించు",
        "rcshowhidecategorization-hide": "దాచు",
-       "rclinks": "గత  $2 రోజుల లోని చివరి $1 మార్పులను చూపించు <br />$3",
+       "rclinks": "గత  $2 రోజుల లోని చివరి $1 మార్పులను చూపించు",
        "diff": "తేడాలు",
        "hist": "చరిత్ర",
        "hide": "దాచు",
        "undeleteviewlink": "చూడండి",
        "undeleteinvert": "ఎంపికని తిరగవెయ్యి",
        "undeletecomment": "కారణం:",
-       "undeletedrevisions": "{{PLURAL:$1|ఒక సంచిక|$1 సంచికల}} పునఃస్థాపన జరిగింది",
-       "undeletedrevisions-files": "{{PLURAL:$1|ఒక కూర్పు|$1 కూర్పులు}} మరియు {{PLURAL:$2|ఒక ఫైలు|$2 ఫైళ్ళ}}ను పునస్థాపించాం",
-       "undeletedfiles": "{{PLURAL:$1|ఒక ఫైలును|$1 ఫైళ్లను}} పునఃస్థాపించాం",
        "cannotundelete": "తొలగింపు రద్దులు పూర్తిగానో, కొన్నిగానీ విఫలమయ్యాయి:\n$1",
        "undeletedpage": "'''$1 ను పునస్థాపించాం'''\n\nఇటీవల జరిగిన తొలగింపులు, పునస్థాపనల కొరకు [[Special:Log/delete|తొలగింపు చిట్టా]]ని చూడండి.",
        "undelete-header": "ఇటీవల తొలగించిన పేజీల కొరకు [[Special:Log/delete|తొలగింపు చిట్టా]]ని చూడండి.",
        "logentry-managetags-create": "\"$4\" ట్యాగును $1 {{GENDER:$2|సృష్టించారు}}",
        "log-name-tag": "ట్యాగుల చిట్టా",
        "rightsnone": "(ఏమీలేవు)",
-       "revdelete-summary": "మార్పు సంగ్రహం",
        "rightslogentry-temporary-group": "$1 (తాత్కాలికం, $2 వరకు)",
        "feedback-adding": "ఫీడ్‍బ్యాకును పేజీలోకి చేరుస్తున్నాం...",
        "feedback-back": "వెనుకకు",
index a2114de..05cf315 100644 (file)
        },
        "tog-underline": "Subliña ligasaun sira:",
        "tog-hideminor": "Lá'os hatudu muda ki-ki'ik iha mudansa foufoun sira",
-       "tog-usenewrc": "Iha lista \"mudansa foufoun sira\" no \"lista hateke\": Hatudu mudansa iha grupu sira - grupu ida ba pájina ida (presiza JavaScript)",
-       "tog-showtoolbar": "Hatudu kaixa edita (presiza JavaScript)",
+       "tog-usenewrc": "Iha lista \"mudansa foufoun sira\" no \"lista hateke\": Hatudu mudansa iha grupu sira - grupu ida ba pájina ida",
+       "tog-showtoolbar": "Hatudu kaixa edita",
        "tog-watchcreations": "Hateke pájina no imajen sira-ne'ebé ha'u kria/tau iha arkivu laran",
        "tog-watchdefault": "Hateke pájina sira-ne'ebé ha'u edita",
        "tog-watchmoves": "Hateke pájina sira-ne'ebé ha'u book",
        "tog-watchdeletion": "Hateke pájina sira-ne'ebé ha'u halakon",
        "tog-minordefault": "Edita hotu-hotu \"ki'ik\"",
-       "tog-oldsig": "Asinatura atuál",
+       "tog-oldsig": "Asinatura atuál:",
        "tog-watchlisthideown": "La hatudu ha'u-nia edita iha lista hateke",
        "tog-watchlisthidebots": "Hamsumik bot iha lista hateke",
        "tog-watchlisthideminor": "Hamsumik muda ki-ki'ik iha lista hateke",
        "oct": "Out.",
        "nov": "Nov.",
        "dec": "Dez.",
+       "january-date": "$1 Janeiru",
+       "february-date": "$1 Fevereiru",
+       "march-date": "$1 Marsu",
+       "april-date": "$1 Abríl",
+       "may-date": "$1 Maiu",
+       "june-date": "$1 Juñu",
+       "july-date": "$1 Jullu",
+       "august-date": "$1 Agostu",
+       "september-date": "$1 Setembru",
+       "october-date": "$1 Outubru",
+       "november-date": "$1 Novembru",
+       "december-date": "$1 Dezembru",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Kategoria|Kategoria}}",
        "category_header": "Artigu iha kategoría \"$1\"",
        "subcategories": "Sub-kategoria sira",
        "moredotdotdot": "Barak liu...",
        "mypage": "Ha'u-nia pájina",
        "mytalk": "Diskusaun",
-       "anontalk": "Diskusaun ba IP ne'e",
+       "anontalk": "Diskusaun",
        "navigation": "Hatudu-dalan",
        "and": "&#32;ho",
-       "qbfind": "Hetan",
-       "qbedit": "Edita",
-       "qbpageoptions": "Pájina ne'e",
-       "qbmyoptions": "Ha'u-nia pájina sira",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Aksaun sira",
+       "namespaces": "Espasu pájina nian",
        "errorpagetitle": "Sala",
        "returnto": "Fali ba $1.",
        "tagline": "Husi {{SITENAME}}",
        "view": "Lee",
        "edit": "Edita",
        "create": "Kria",
-       "editthispage": "Edita pájina ne'e",
-       "create-this-page": "Kria pájina ne'e",
        "delete": "Halakon",
-       "deletethispage": "Halakon pájina ne'e",
        "undelete_short": "Restaurar {{PLURAL:$1|versaun ida|versaun $1}}",
        "protect": "Proteje",
        "protect_change": "muda",
-       "protectthispage": "Proteje pájina ne'e",
        "unprotect": "Muda protesaun",
-       "unprotectthispage": "Muda protesaun pájina ne'e nian",
        "newpage": "Pájina foun",
-       "talkpage": "Diskusaun kona-ba pájina ne'e",
        "talkpagelinktext": "Diskusaun",
        "specialpage": "Pájina espesiál",
        "talk": "Diskusaun",
        "toolbox": "Kaixa besi nian",
-       "userpage": "Haree pájina uza-na'in",
-       "projectpage": "Haree pájina projetu nian",
+       "tool-link-userrights": "Muda grupu {{GENDER:$1|uza-na'in}} nian",
+       "tool-link-userrights-readonly": "Haree grupu {{GENDER:$1|uza-na'in}} nian",
        "imagepage": "Haree pájina imajen nian",
        "mediawikipage": "Haree pájina mensajen nian",
        "viewhelppage": "Haree pájina ajuda",
        "viewsourcetext": "Ó bele lee no kopia testu pájina nian:",
        "namespaceprotected": "Ó la iha priviléjiu ba edita pájina sira iha espasu '''$1'''.",
        "ns-specialprotected": "La ema ida bele edita pájina espesiál sira.",
+       "welcomeuser": "Benvindu, $1!",
        "yourname": "Naran uza-na'in:",
+       "userlogin-yourname": "Naran uza-na'in",
        "login": "Log in",
        "nav-login-createaccount": "Log in / kriar konta ida",
        "logout": "Husik",
index f4ddfcc..32fbc7f 100644 (file)
        "externaldberror": "Хатое дар иртибот бо пойгоҳи дода рух дода аст ё ин ки шумо иҷозат ба рӯзрасонии ҳисоби берунии худро надоред.",
        "login": "Вуруд",
        "nav-login-createaccount": "Вуруд / Сохтани ҳисоби ҷадид",
-       "userlogin": "Вуруд / Сохтани ҳисоби ҷадид",
-       "userloginnocreate": "Вуруд",
        "logout": "Хуруҷ аз систем",
        "userlogout": "Хуруҷ аз систем",
        "notloggedin": "Ба систем вуруд нашудаед",
        "userlogin-noaccount": "Ҳисоби корбарӣ надоред?",
        "userlogin-joinproject": "Ба {{SITENAME}} ҳамроҳ шавед",
-       "nologin": "Номи корбар надоред? '''$1'''.",
-       "nologinlink": "Ҳисоберо созед",
        "createaccount": "Ҳисоби ҷадидеро созед",
-       "gotaccount": "Ҳисоби корбарӣ доред? '''$1'''.",
-       "gotaccountlink": "Вуруд шавед",
-       "userlogin-resetlink": "Ҷузъиёти вурудро фаромӯш кардаед?",
        "userlogin-resetpassword-link": "Гузарвожаро фаромӯш кардед?",
        "userlogin-helplink2": "Роҳнамои вуруд",
        "userlogin-loggedin": "Шумо дар ҳол чун {{GENDER:$1|$1}} вуруд шудаед.\nБо истифода аз форми зер чун корбари дигар вориди систем шавед.",
        "createacct-another-email-ph": "Нишонаи email-ро ворид кунед",
        "createaccountmail": "Аз гузарвожаи муваққатӣ ва тасодуфӣ истифода кунед ва онро нишонаи электронии мушаххасшуда бифиристед",
        "createacct-realname": "Номи аслӣ (ихтиёрӣ)",
-       "createaccountreason": "Сабаб:",
        "createacct-reason": "Сабаб",
        "createacct-reason-ph": "Барои чӣ ҳисоби дигареро эҷод карда истодаед",
        "createacct-submit": "Ҳисоби худро созед",
        "anonpreviewwarning": "<em>Шумо вориди нашудаед. Захиракунӣ IP нишонаи шуморо дар таърихи вироиши ин саҳифа захира хоҳад кард.</em>",
        "missingsummary": "'''Ёдоварӣ:''' Шумо хулосаи вироиш нанавиштаед.\nАгар дубора тугмаи \"Захира\"-ро клик кунед, вироишатон бидуни хулоса захира хоҳад шуд.",
        "missingcommenttext": "Лутфан тавсифе дар зер бинависед.",
-       "missingcommentheader": "<strong>Ёдоварӣ:</strong> Шумо мавзӯъ/унвони ин ёддоштро мушаххас накардед.\nАгар дубора \"{{int:savearticle}}\" пахш кунед, вироишатон бидуни он захира хоҳад шуд.",
+       "missingcommentheader": "<strong>Ёдоварӣ:</strong> Шумо мавзӯъ/унвони ин ёддоштро мушаххас накардед.\nАгар дубора \"$1\" пахш кунед, вироишатон бидуни он захира хоҳад шуд.",
        "summary-preview": "Пешнамоиши хулоса:",
        "subject-preview": "Пешнамоиши мавзӯъ/унвон:",
        "blockedtitle": "Корбар баста шудааст",
        "editingsection": "Дар ҳоли вироиши $1 (қисмат)",
        "editingcomment": "Дар ҳоли вироиши $1 (қисми нав)",
        "editconflict": "Бархӯрди вироишӣ: $1",
-       "explainconflict": "Аз вақте ки шумо вироиши ин саҳифаро оғоз кардаед, шахси дигаре онро тағйир дода аст.\nНоҳияи матни болои шомили матни саҳифа ба шакли феълии он аст.\nТағйироти шумо дар ноҳияи матни поёни нишон дода шудааст.\nШумо бояд тағйиротатонро бо матни феълӣ таркиб кунед.\n'''Фақат''', вақте, ки тугмаи \"{{int:savearticle}}\"-ро фишор диҳед матни ноҳияи матни болои захира хоҳад шуд.",
+       "explainconflict": "Аз вақте ки шумо вироиши ин саҳифаро оғоз кардаед, шахси дигаре онро тағйир дода аст.\nНоҳияи матни болои шомили матни саҳифа ба шакли феълии он аст.\nТағйироти шумо дар ноҳияи матни поёни нишон дода шудааст.\nШумо бояд тағйиротатонро бо матни феълӣ таркиб кунед.\n'''Фақат''', вақте, ки тугмаи \"$1\"-ро фишор диҳед матни ноҳияи матни болои захира хоҳад шуд.",
        "yourtext": "Матни Шумо",
        "storedversion": "Нусхаи сабтшуда",
        "nonunicodebrowser": "'''Ҳушдор: Муругари шумо бо стандарти Юникод ҷавобгӯ нест. Аломатҳои ғайр аз ASC11 ба сурати адад ба коди шонздаҳ ба шумо нишон дода мешаванд.'''",
        "right-hideuser": "Бастани корбар, бо пинҳон кардани он аз омма",
        "right-editprotected": "Вироиши саҳифаҳои ҳифзшуда чун \"{{int:protect-level-sysop}}\"",
        "right-editinterface": "Вироиши намоиши корбарӣ",
-       "right-editusercssjs": "Вироиши парвандаҳои CSS ва JS дигар корбарон",
        "right-editusercss": "Вироиши парвандаҳои CSS дигар корбарон",
        "right-edituserjs": "Вироиши парвандаҳои JS дигар корбарон",
        "right-rollback": "Вогардонии тези вироишҳои охирин корбаре, ки як саҳифаро вироиш кардааст",
        "rcshowhidemine": "$1 вироишҳои ман",
        "rcshowhidemine-show": "Намоиш",
        "rcshowhidemine-hide": "Пинҳон",
-       "rclinks": "Нишон додани $1 тағйироти охирин дар $2 рӯзи охир<br />$3",
+       "rclinks": "Нишон додани $1 тағйироти охирин дар $2 рӯзи охир",
        "diff": "фарқият",
        "hist": "таърих",
        "hide": "Пинҳон кардани",
        "undeletelink": "дидан/барқарор кардан",
        "undeleteviewlink": "намоиш",
        "undeletecomment": "Сабаб:",
-       "undeletedrevisions": "$1 нусха бақарор {{PLURAL:$1|шуд|шуданд}}",
-       "undeletedrevisions-files": "$1 нусха ва $2 парванда барқарор {{PLURAL:$1|шуд|шуданд}}",
-       "undeletedfiles": "$1 парванда барқарор {{PLURAL:$1|шуд|шуданд}}",
        "cannotundelete": "Барқароркунӣ нашуд; мумкин аст касе дигаре пештар ин саҳифаро барқарор карда бошад.",
        "undeletedpage": "'''$1 барқарор шуд'''\n\nБарои дидани гузориши ҳазфҳо ва барқароркуниҳои охирин ба [[Special:Log/delete|гузориши ҳазф]] нигаред.",
        "undelete-header": "Барои дидани саҳифаҳои ҳазфшудаи охир [[Special:Log/delete|гузоришҳои ҳазфро]] нигаред.",
        "revdelete-restricted": "маҳдудиятҳо ба мудирон амалӣ шуданд",
        "revdelete-unrestricted": "маҳдудиятҳо аз мудирон бардошта шуданд",
        "rightsnone": "(ҳеҷ)",
-       "revdelete-summary": "вироиши хулоса",
        "feedback-cancel": "Лағв",
        "feedback-close": "Анҷом шуд.",
        "feedback-message": "Пайём:",
index a577ebe..f0a4c41 100644 (file)
        "externaldberror": "Xatoe dar irtibot bo pojgohi doda rux doda ast jo in ki şumo içozat ba rūzrasoniji hisobi beruniji xudro nadored.",
        "login": "Vurud",
        "nav-login-createaccount": "Vurud / Soxtani hisobi çadid",
-       "userlogin": "Vurud / Soxtani hisobi çadid",
-       "userloginnocreate": "Vurud",
        "logout": "Xuruç az sistem",
        "userlogout": "Xuruç az sistem",
        "notloggedin": "Ba sistem vurud naşudaed",
-       "nologin": "Nomi korbar nadored? '''$1'''.",
-       "nologinlink": "Hisobero sozed",
        "createaccount": "Hisobi çadidero sozed",
-       "gotaccount": "Hisobi korbarī dored? '''$1'''.",
-       "gotaccountlink": "Vurud şaved",
        "createaccountmail": "bo poctai elektronī",
-       "createaccountreason": "Sabab:",
        "badretype": "Kalimahoi ubure, ki vorid kardaed bo hamdigar muvofiqat namekunand.",
        "userexists": "Nomi korbariji doxil kardaşuda mavridi istifoda ast.\nNomi digareroro intixob kuned.",
        "loginerror": "Iştiboh dar vurud",
        "editing": "Dar holi viroiş $1",
        "editingsection": "Dar holi viroişi $1 (qismat)",
        "editconflict": "Barxūrdi viroişī: $1",
-       "explainconflict": "Az vaqte ki şumo viroişi in sahifaro oƣoz kardaed, şaxsi digare onro taƣjir doda ast.\nNohijai matni boloi şomili matni sahifa ba şakli fe'liji on ast.\nTaƣjiroti şumo dar nohijai matni pojoni nişon doda şudaast.\nŞumo bojad taƣjirotatonro bo matni fe'lī tarkib kuned.\n'''Faqat''', vaqte, ki tugmai \"{{int:savearticle}}\"-ro fişor dihed matni nohijai matni boloi zaxira xohad şud.",
+       "explainconflict": "Az vaqte ki şumo viroişi in sahifaro oƣoz kardaed, şaxsi digare onro taƣjir doda ast.\nNohijai matni boloi şomili matni sahifa ba şakli fe'liji on ast.\nTaƣjiroti şumo dar nohijai matni pojoni nişon doda şudaast.\nŞumo bojad taƣjirotatonro bo matni fe'lī tarkib kuned.\n'''Faqat''', vaqte, ki tugmai \"$1\"-ro fişor dihed matni nohijai matni boloi zaxira xohad şud.",
        "yourtext": "Matni Şumo",
        "storedversion": "Nusxai sabtşuda",
        "nonunicodebrowser": "'''Huşdor: Murugari şumo bo standarti Junikod çavobgū nest. Alomathoi ƣajr az ASC11 ba surati adad ba kodi şonzdah ba şumo nişon doda meşavand.'''",
        "prefs-resetpass": "Taƣjiri guzarvoƶa",
        "saveprefs": "Zaxirai tarçihot",
        "prefs-editing": "Dar holi viroiş",
-       "rows": "Te'dodi satrho:",
-       "columns": "Te'dodi sutunho:",
        "searchresultshead": "Çustuçū",
        "stub-threshold": "Ostonai viroişi pajvandhoi <a href=\"#\" class=\"stub\">noqis</a>:",
        "recentchangesdays": "Te'dodi rūzhoi namoiş dodaşuda dar taƣjiroti oxir:",
        "userrights-reason": "Sabab:",
        "userrights-no-interwiki": "Şumo içozati taƣjiri ixtijoroti korbaroni digar vikihoro nadored.",
        "userrights-nodatabase": "Pojgohi doda $1 vuçud nadorad jo mahallī nest.",
-       "userrights-nologin": "Şumo bojad bo jak hisobi korbarī doroi ixtijoroti mudirijatī [[Special:UserLogin|ba sistem vurud kuned]], to bitavoned ixtijoroti korbaronro ta'jid kuned.",
-       "userrights-notallowed": "Hisobi korbariji şumo içozati taƣjiri ixtijoroti korbariro nadorad.",
        "userrights-changeable-col": "Gurūhhoe, ki şumo metavoned taƣjir dihed",
        "userrights-unchangeable-col": "Gurūhhoe, ki şumo nametavoned taƣjir dihed",
        "group": "Gurūh:",
        "right-hideuser": "Bastani korbar, bo pinhon kardani on az omma",
        "right-editprotected": "Viroişi sahifahoi hifzşuda (biduni hifzi obşorī)",
        "right-editinterface": "Viroişi namoişi korbarī",
-       "right-editusercssjs": "Viroişi parvandahoi CSS va JS digar korbaron",
        "right-editusercss": "Viroişi parvandahoi CSS digar korbaron",
        "right-edituserjs": "Viroişi parvandahoi JS digar korbaron",
        "right-rollback": "Vogardoniji tezi viroişhoi oxirin korbare, ki jak sahifaro viroiş kardaast",
        "rcshowhideanons": "$1 korbaroni vurudnaşuda",
        "rcshowhidepatr": "$1 viroişhoi gaştī",
        "rcshowhidemine": "$1 viroişhoi man",
-       "rclinks": "Nişon dodani $1 taƣjiroti oxirin dar $2 rūzi oxir<br />$3",
+       "rclinks": "Nişon dodani $1 taƣjiroti oxirin dar $2 rūzi oxir",
        "diff": "farqijat",
        "hist": "ta'rix",
        "hide": "Pinhon kardani",
        "undeletelink": "didan/barqaror kardan",
        "undeleteviewlink": "namoiş",
        "undeletecomment": "Tavzeh:",
-       "undeletedrevisions": "$1 nusxa baqaror {{PLURAL:$1|şud|şudand}}",
-       "undeletedrevisions-files": "$1 nusxa va $2 parvanda barqaror {{PLURAL:$1|şud|şudand}}",
-       "undeletedfiles": "$1 parvanda barqaror {{PLURAL:$1|şud|şudand}}",
        "cannotundelete": "Barqarorkunī naşud; mumkin ast kase digare peştar in sahifaro barqaror karda boşad.",
        "undeletedpage": "'''$1 barqaror şud'''\n\nBaroi didani guzorişi hazfho va barqarorkunihoi oxirin ba [[Special:Log/delete|guzorişi hazf]] nigared.",
        "undelete-header": "Baroi didani sahifahoi hazfşudai oxir [[Special:Log/delete|guzorişhoi hazfro]] nigared.",
        "revdelete-restricted": "mahdudijatho ba mudiron amalī şudand",
        "revdelete-unrestricted": "mahdudijatho az mudiron bardoşta şudand",
        "rightsnone": "(heç)",
-       "revdelete-summary": "viroişi xulosa",
        "expandtemplates": "Bastdodani şablonho",
        "expand_templates_intro": "In sahifai viƶa matnero darjoft karda va tamomi şablonhoi ba kor rafta dar onro ba tavri bozgaşte bast medihad. Hamcunin tobehoi taçzeh\n<nowiki>{{</nowiki>#language:...}}, va mutaƣjirhoe cun\n<nowiki>{{</nowiki>CURRENTDAY}}&mdash;ro ham bast medihad – dar voqe' taqriban har ciro ki doxili du akulot boşad.\nIn kor bo sado zadani marhilai taçzehi marbut dar xudi MediaViki surat megirad.",
        "expand_templates_title": "Unvoni mavzū', baroi {{FULLPAGENAME}} va ƣajra.:",
index e688c30..c06e6f2 100644 (file)
@@ -68,7 +68,7 @@
        "tog-watchlisthidepatrolled": "ซ่อนการแก้ไขที่ตรวจสอบแล้วจากรายการเฝ้าดู",
        "tog-watchlisthidecategorization": "ซ่อนการจัดหมวดหมู่หน้า",
        "tog-ccmeonemails": "ส่งสำเนาอีเมลที่ฉันส่งหาผู้อื่นให้ฉัน",
-       "tog-diffonly": "à¹\84มà¹\88à¹\81สà¸\94à¸\87à¹\80à¸\99ืà¹\89อหาหà¸\99à¹\89าà¹\83à¸\95à¹\89à¸\9cลà¸\95à¹\88าà¸\87",
+       "tog-diffonly": "à¹\84มà¹\88à¹\81สà¸\94à¸\87à¹\80à¸\99ืà¹\89อหาหà¸\99à¹\89าà¹\83à¸\95à¹\89à¸\84วามà¹\81à¸\95à¸\81à¸\95à¹\88าà¸\87ระหวà¹\88าà¸\87รุà¹\88à¸\99",
        "tog-showhiddencats": "แสดงหมวดหมู่ที่ซ่อนอยู่",
        "tog-norollbackdiff": "ไม่แสดงผลต่างหลังดำเนินการย้อนกลับฉุกเฉิน",
        "tog-useeditwarning": "เตือนฉันเมื่อออกหน้าแก้ไขโดยมีการเปลี่ยนแปลงที่ยังไม่บันทึก",
        "anontalk": "พูดคุย",
        "navigation": "การนำทาง",
        "and": "&#32;และ",
-       "qbfind": "ค้นหา",
-       "qbbrowse": "สืบค้น",
-       "qbedit": "แก้ไข",
-       "qbpageoptions": "หน้านี้",
-       "qbmyoptions": "หน้าของฉัน",
        "faq": "คำถามที่พบบ่อย",
-       "faqpage": "Project:คำถามที่พบบ่อย",
        "actions": "ปฏิบัติการ",
        "namespaces": "เนมสเปซ",
        "variants": "สิ่งที่แตกต่าง",
        "tagline": "จาก {{SITENAME}}",
        "help": "วิธีใช้",
        "search": "ค้นหา",
+       "search-ignored-headings": " #<!-- leave this line exactly as it is --> <pre>\n# อธิบายหัวข้อที่จะละเว้นในการค้นหา\n# การเปลี่ยนแปลงนี้จะมีผลเมื่อหน้าหัวเรื่องถูกจัดทำดัชนี\n# บังคับให้จัดทำดัชนีหน้าใหม่ด้วยการแก้ไขที่ว่างเปล่า\n# ไวยากรณ์เป็นดังนี้:\n#   * ทุกๆ บรรทัดที่ขึ้นต้นด้วย \"#\" จะเป็นคำอธิบายจนถึงจุดสิ้นสุดของบรรทัด\n#   * บรรทัดที่ไม่ใช่บรรทัดว่างจะเป็นบรรทัดแรกที่คุณต้องการละเลย รวมทั้งการใช้อักษรตัวพิมพ์ใหญ่และทุกๆ อย่างด้วย\nReferences\nExternal links\nSee also\n #</pre> <!-- leave this line exactly as it is -->",
        "searchbutton": "ค้นหา",
        "go": "ไป",
        "searcharticle": "ไป",
        "history": "ประวัติหน้า",
        "history_short": "ประวัติ",
        "history_small": "ประวัติ",
-       "updatedmarker": "à¸\96ูà¸\81à¸\9bรัà¸\9aà¸\95ัà¹\89à¸\87à¹\81à¸\95à¹\88à¸\81ารà¹\80ยีà¹\88ยมà¸\8aมà¸\84รัà¹\89à¸\87สุà¸\94à¸\97à¹\89ายของฉัน",
+       "updatedmarker": "à¸\96ูà¸\81à¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\95ัà¹\89à¸\87à¹\81à¸\95à¹\88à¸\81ารà¹\80ยีà¹\88ยมà¸\8aมà¸\84รัà¹\89à¸\87ลà¹\88าสุà¸\94ของฉัน",
        "printableversion": "รุ่นพร้อมพิมพ์",
        "permalink": "ลิงก์ถาวร",
        "print": "พิมพ์",
        "edit-local": "แก้ไขคำอธิบายท้องถิ่น",
        "create": "สร้าง",
        "create-local": "เพิ่มคำอธิบายท้องถิ่น",
-       "editthispage": "แก้ไขหน้านี้",
-       "create-this-page": "สร้างหน้านี้",
        "delete": "ลบ",
-       "deletethispage": "ลบหน้านี้",
-       "undeletethispage": "กู้คืนหน้านี้",
        "undelete_short": "กู้คืนการแก้ไข $1 ครั้ง",
        "viewdeleted_short": "ดู $1 การแก้ไขที่ถูกลบ",
        "protect": "ล็อก",
        "protect_change": "เปลี่ยน",
-       "protectthispage": "ล็อกหน้านี้",
        "unprotect": "เปลี่ยนการล็อก",
-       "unprotectthispage": "เปลี่ยนการล็อกหน้านี้",
        "newpage": "หน้าใหม่",
-       "talkpage": "อภิปรายหน้านี้",
        "talkpagelinktext": "พูดคุย",
        "specialpage": "หน้าพิเศษ",
        "personaltools": "เครื่องมือส่วนตัว",
-       "articlepage": "ดูหน้าเนื้อหา",
        "talk": "อภิปราย",
        "views": "ดู",
        "toolbox": "เครื่องมือ",
        "tool-link-userrights": "เปลี่ยนกลุ่ม{{GENDER:$1|ผู้ใช้}}",
        "tool-link-userrights-readonly": "ดูกลุ่ม{{GENDER:$1|ผู้ใช้}}",
        "tool-link-emailuser": "ส่งอีเมลหา{{GENDER:$1|ผู้ใช้}}นี้",
-       "userpage": "ดูหน้าผู้ใช้",
-       "projectpage": "ดูหน้าโครงการ",
        "imagepage": "ดูหน้าไฟล์",
        "mediawikipage": "ดูหน้าข้อความ",
        "templatepage": "ดูหน้าแม่แบบ",
        "redirectedfrom": "(เปลี่ยนทางจาก $1)",
        "redirectpagesub": "หน้าเปลี่ยนทาง",
        "redirectto": "เปลี่ยนทางไป:",
-       "lastmodifiedat": "à¸\94ัà¸\94à¹\81à¸\9bรหà¸\99à¹\89าà¸\99ีà¹\89ล่าสุดเมื่อวันที่ $1 เวลา $2",
+       "lastmodifiedat": "หà¸\99à¹\89าà¸\99ีà¹\89à¹\81à¸\81à¹\89à¹\84à¸\82ล่าสุดเมื่อวันที่ $1 เวลา $2",
        "viewcount": "มีการเข้าถึงหน้านี้ $1 ครั้ง",
        "protectedpage": "หน้าถูกป้องกัน",
        "jumpto": "ข้ามไป:",
        "policy-url": "Project:นโยบาย",
        "portal": "ศูนย์รวมชุมชน",
        "portal-url": "Project:ศูนย์รวมชุมชน",
-       "privacy": "à¸\99à¹\82ยà¸\9aายสิà¸\97à¸\98ิสà¹\88วà¸\99à¸\9aุà¸\84à¸\84ล",
-       "privacypage": "Project:à¸\99à¹\82ยà¸\9aายสิà¸\97à¸\98ิสà¹\88วà¸\99à¸\9aุà¸\84à¸\84ล",
+       "privacy": "à¸\99à¹\82ยà¸\9aายà¸\84วามà¹\80à¸\9bà¹\87à¸\99สà¹\88วà¸\99à¸\95ัว",
+       "privacypage": "Project:à¸\99à¹\82ยà¸\9aายà¸\84วามà¹\80à¸\9bà¹\87à¸\99สà¹\88วà¸\99à¸\95ัว",
        "badaccess": "มีข้อผิดพลาดในการใช้สิทธิ",
        "badaccess-group0": "คุณไม่ได้รับอนุญาตให้ดำเนินการตามที่ขอ",
        "badaccess-groups": "ปฏิบัติการที่คุณขอนี้สงวนไว้เฉพาะผู้ใช้ใน{{PLURAL:$2|กลุ่ม|กลุ่มเหล่านี้}}: $1",
        "viewsourcetext": "คุณสามารถดูและคัดลอกโค้ดของหน้านี้",
        "viewyourtext": "คุณสามารถดูและคัดลอกต้นฉบับ<strong>การแก้ไขของคุณ</strong>มาหน้านี้ได้",
        "protectedinterface": "หน้านี้เป็นข้อความส่วนต่อประสานสำหรับซอฟต์แวร์บนวิกินี้ และถูกล็อกเพื่อป้องกันการกระทำผิด\nในการเพิ่มหรือเปลี่ยนแปลงการแปลสำหรับทุกวิกิ โปรดใช้ [https://translatewiki.net/ translatewiki.net] โครงการแปลมีเดียวิกิเป็นภาษาถิ่น",
-       "editinginterface": "<strong>à¸\84ำà¹\80à¸\95ือà¸\99:</strong> à¸\84ุà¸\93à¸\81ำลัà¸\87à¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89าà¸\97ีà¹\88à¹\83à¸\8aà¹\89à¸\88ัà¸\94หาข้อความอินเตอร์เฟซให้ซอฟต์แวร์\nการเปลี่ยนแปลงหน้านี้จะมีผลต่อสภาพปรากฏของส่วนต่อประสานผู้ใช้แก่ผู้ใช้อื่นบนวิกินี้",
+       "editinginterface": "<strong>à¸\84ำà¹\80à¸\95ือà¸\99:</strong> à¸\84ุà¸\93à¸\81ำลัà¸\87à¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89าà¸\97ีà¹\88à¹\83à¸\8aà¹\89à¸\88ัà¸\94à¹\80à¸\95รียมข้อความอินเตอร์เฟซให้ซอฟต์แวร์\nการเปลี่ยนแปลงหน้านี้จะมีผลต่อสภาพปรากฏของส่วนต่อประสานผู้ใช้แก่ผู้ใช้อื่นบนวิกินี้",
        "translateinterface": "ในการเพิ่มหรือเปลี่ยนแปลงคำแปลสำหรับทุกวิกิ โปรดใช้ [https://translatewiki.net/ translatewiki.net] โครงการแปลเป็นภาษาถิ่นของมีเดียวิกิ",
        "cascadeprotected": "หน้านี้ถูกป้องกันมิให้แก้ไข เพราะถูกรวมอยู่ใน{{PLURAL:$1|page, which is|หน้าต่อไปนี้}} ซึ่งถูกล็อกโดยเปิดตัวเลือก \"ต่อเรียง\":\n$2",
        "namespaceprotected": "คุณไม่มีสิทธิแก้ไขหน้าในเนมสเปซ <strong>$1</strong>",
        "login": "ล็อกอิน",
        "login-security": "ยืนยันตัวตนของคุณ",
        "nav-login-createaccount": "ล็อกอิน / สร้างบัญชี",
-       "userlogin": "ล็อกอิน / สร้างบัญชี",
-       "userloginnocreate": "ล็อกอิน",
        "logout": "ล็อกเอาต์",
        "userlogout": "ล็อกเอาต์",
        "notloggedin": "ไม่ได้ล็อกอิน",
        "userlogin-noaccount": "ไม่มีบัญชีหรือ",
        "userlogin-joinproject": "เข้าร่วมกับ{{SITENAME}}",
-       "nologin": "ไม่มีบัญชีหรือ $1",
-       "nologinlink": "สร้างบัญชี",
        "createaccount": "สร้างบัญชี",
-       "gotaccount": "มีบัญชีแล้วใช่ไหม $1",
-       "gotaccountlink": "ล็อกอิน",
-       "userlogin-resetlink": "ลืมรายละเอียดล็อกอินของคุณหรือ",
        "userlogin-resetpassword-link": "ลืมรหัสผ่านหรือ",
        "userlogin-helplink2": "วิธีใช้เรื่องการล็อกอิน",
        "userlogin-loggedin": "คุณล็อกอินในชื่อ {{GENDER:$1|$1}} แล้ว\nใช้แบบด้านล่างเพื่อล็อกอินเป็นอีกผู้ใช้หนึ่ง",
        "createaccountmail": "ใช้รหัสผ่านสุ่มชั่วคราวและส่งไปยังที่อยู่อีเมลที่ระบุ",
        "createaccountmail-help": "สามารถใช้สร้างบัญชีสำหรับบุคคลอื่นๆ โดยที่ไม่ต้องเรียนรู้รหัสผ่านก็ได้",
        "createacct-realname": "ชื่อจริง (เลือกไม่ใส่ได้)",
-       "createaccountreason": "เหตุผล:",
        "createacct-reason": "เหตุผล",
        "createacct-reason-ph": "เหตุใดคุณจึงสร้างอีกบัญชี",
        "createacct-reason-help": "ข้อความที่แสดงในล็อกการสร้างบัญชี",
        "botpasswords-label-delete": "ลบ",
        "botpasswords-label-resetpassword": "ตั้งรหัสผ่านใหม่",
        "botpasswords-label-grants": "การอนุญาตที่นำไปใช้ได้:",
+       "botpasswords-help-grants": "การอนุญาตจะอนุญาตให้เข้าถึงสิทธิ์ต่างๆ ที่บัญชีผู้ใช้ปัจจุบันมีอยู่ การเปิดใช้งานการอนุญาตที่นี่ไม่ใช่การอนุญาตการเข้าถึงที่บัญชีผู้ใช้ของคุณไม่มี สำหรับข้อมูลเพิ่มเติม โปรดดูที่ [[Special:ListGrants|ตารางการอนุญาต]]",
        "botpasswords-label-grants-column": "อนุญาตแล้ว",
        "botpasswords-bad-appid": "ชื่อบอต \"$1\" ไม่ถูกต้อง",
        "botpasswords-insert-failed": "การเพิ่มชื่อบอต \"$1\" ล้มเหลว คุณได้เพิ่มมันไว้แล้วหรือเปล่า?",
        "botpasswords-updated-body": "รหัสผานบอตสำหรับชื่อบอต \"$1\" ของผู้ใช้ \"$2\" ถูกอัปเดตแล้ว",
        "botpasswords-deleted-title": "ลบรหัสผ่านบอตแล้ว",
        "botpasswords-deleted-body": "รหัสผ่านบอตสำหรับชื่อบอต \"$1\" ของผู้ใช้ชื่อ \"$2\" ถูกลบออกแล้ว",
+       "botpasswords-newpassword": "รหัสผ่านใหม่ที่จะใช้กับ <strong>$1</strong> คือ <strong>$2</strong> <em>โปรดเก็บบันทึกข้อมูลนี้ไว้ เพื่อให้สามารถนำไปใช้อ้างอิงในภายหลังได้</em> <br> (ในกรณีที่เป็นบอตเก่าซึ่งต้องใช้ชื่อล็อกอินเหมือนกับชื่อผู้ใช้ โปรดใช้ <strong>$3</strong> เป็นชื่อผู้ใช้และ <strong>$4</strong> เป็นรหัสผ่าน)",
        "botpasswords-no-provider": "BotPasswordsSessionProvider ไม่พร้อมใช้งาน",
        "botpasswords-restriction-failed": "ข้อจำกัดของรหัสผ่านบอตห้ามไม่ให้ล็อกอินครั้งนี้",
        "botpasswords-invalid-name": "ชื่อผู้ใช้ที่ระบุไม่มีเครื่องหมายคั่นในรหัสผ่านบอต (\"$1\")",
        "botpasswords-not-exist": "ผู้ใช้ \"$1\" ไม่มีรหัสผ่านบอต \"$2\".",
        "resetpass_forbidden": "ไม่สามารถเปลี่ยนรหัสผ่านได้",
        "resetpass_forbidden-reason": "ไม่สามารถเปลี่ยนรหัสผ่านได้: $1",
-       "resetpass-no-info": "คุณต้องล็อกอินเพื่อเข้าถึงหน้านี้โดยตรง",
+       "resetpass-no-info": "à¸\84ุà¸\93à¸\88ำà¹\80à¸\9bà¹\87à¸\99à¸\95à¹\89อà¸\87ลà¹\87อà¸\81อิà¸\99à¹\80à¸\9eืà¹\88อà¹\80à¸\82à¹\89าà¸\96ึà¸\87หà¸\99à¹\89าà¸\99ีà¹\89à¹\82à¸\94ยà¸\95รà¸\87",
        "resetpass-submit-loggedin": "เปลี่ยนรหัสผ่าน",
        "resetpass-submit-cancel": "ยกเลิก",
        "resetpass-wrong-oldpass": "รหัสผ่านชั่วคราวหรือปัจจุบันไม่ถูกต้อง\nคุณอาจเปลี่ยนรหัสผ่านของคุณสำเร็จแล้ว หรือขอรหัสผ่านชั่วคราวใหม่แล้ว",
        "resettokens-tokens": "โทเค็น:",
        "resettokens-token-label": "$1 (ค่าปัจจุบัน: $2)",
        "resettokens-watchlist-token": "โทเค็นสำหรับเว็บฟีด (Atom/RSS) ของ[[Special:Watchlist|การเปลี่ยนแปลงแก่หน้าในรายการเฝ้าดูของคุณ]]",
-       "resettokens-done": "ตั้งโทเค็นใหม่แล้ว",
+       "resettokens-done": "à¸\95ัà¹\89à¸\87à¸\84à¹\88าà¹\82à¸\97à¹\80à¸\84à¹\87à¸\99à¹\83หมà¹\88à¹\81ลà¹\89ว",
        "resettokens-resetbutton": "ตั้งโทเค็นที่เลือกใหม่",
        "bold_sample": "ข้อความตัวหนา",
        "bold_tip": "ทำตัวหนา",
        "preview": "ตัวอย่าง",
        "showpreview": "แสดงตัวอย่าง",
        "showdiff": "แสดงการเปลี่ยนแปลง",
-       "blankarticle": "<strong>คำเตือน:</strong> หน้าที่คุณกำลังสร้างว่าง หากคุณคลิก \"{{int:savearticle}}\" อีกครั้ง จะสร้างหน้าโดยไม่มีเนื้อหาใด",
+       "blankarticle": "<strong>คำเตือน:</strong> หน้าที่คุณกำลังสร้างว่าง หากคุณคลิก \"$1\" อีกครั้ง จะสร้างหน้าโดยไม่มีเนื้อหาใด",
        "anoneditwarning": "<strong>คำเตือน:</strong> คุณมิได้ล็อกอิน สาธารณะจะเห็นเลขที่อยู่ไอพีของคุณหากคุณแก้ไข หากคุณ<strong>[$1 ล็อกอิน]</strong>หรือ<strong>[$2 สร้างบัญชี]</strong> การแก้ไขของคุณจะถือว่าเป็นของชื่อผู้ใช้ของคุณ ร่วมกับประโยชน์อื่น",
        "anonpreviewwarning": "<em>คุณมิได้ล็อกอิน การบันทึกจะเก็บเลขที่อยู่ไอพีของคุณในประวัติการแก้ไขของหน้านี้</em>",
-       "missingsummary": "<strong>อย่าลืม:</strong> คุณยังไม่ได้ให้คำอธิบายการแก้ไข \nถ้าคุณคลิก \"{{int:savearticle}}\" อีก จะบันทึกการแก้ไขของคุณโดยไม่มีคำอธิบายการแก้ไข",
-       "selfredirect": "<strong>คำเตือน:</strong> คุณกำลังสร้างการเปลี่ยนทางไปบทความเดียวกัน\nคุณอาจระบุเป้าหมายของการเปลี่ยนทางผิด หรือคถณอาจแก้ไขหน้าผิด \nหากคุณคลิก \"{{int:savearticle}}\" อีกครั้ง จะสร้างการเปลี่ยนทาง",
+       "missingsummary": "<strong>อย่าลืม:</strong> คุณยังไม่ได้ให้คำอธิบายการแก้ไข \nถ้าคุณคลิก \"$1\" อีก จะบันทึกการแก้ไขของคุณโดยไม่มีคำอธิบายการแก้ไข",
+       "selfredirect": "<strong>คำเตือน:</strong> คุณกำลังสร้างการเปลี่ยนทางไปบทความเดียวกัน\nคุณอาจระบุเป้าหมายของการเปลี่ยนทางผิด หรือคถณอาจแก้ไขหน้าผิด \nหากคุณคลิก \"$1\" อีกครั้ง จะสร้างการเปลี่ยนทาง",
        "missingcommenttext": "กรุณากรอกความเห็นด้านล่าง",
-       "missingcommentheader": "<strong>อย่าลืม:</strong> คุณยังไม่ได้ใส่เรื่องสำหรับความเห็นนี้ \nถ้าคุณคลิก \"{{int:savearticle}}\" อีก จะบันทึกการแก้ไขของคุณโดยไม่ระบุเรื่อง",
+       "missingcommentheader": "<strong>อย่าลืม:</strong> คุณยังไม่ได้ใส่เรื่องสำหรับความเห็นนี้ \nถ้าคุณคลิก \"$1\" อีก จะบันทึกการแก้ไขของคุณโดยไม่ระบุเรื่อง",
        "summary-preview": "ตัวอย่างคำอธิบายการแก้ไข:",
        "subject-preview": "ตัวอย่างชื่อเรื่อง:",
        "previewerrortext": "เกิดข้อผิดพลาดขณะกำลังพยายามดูตัวอย่างการเปลี่ยนแปลงของคุณ",
        "editingsection": "กำลังแก้ไข $1 (เฉพาะส่วน)",
        "editingcomment": "กำลังแก้ไข $1 (ส่วนใหม่)",
        "editconflict": "แก้ไขชนกัน: $1",
-       "explainconflict": "มีผู้เปลี่ยนแปลงหน้านี้ตั้งแต่คุณเริ่มแก้ไข\nพื้นที่ข้อความส่วนบนมีข้อความหน้าที่มีอยู่ในปัจจุบัน\nการแก้ไขของคุณแสดงอยู่ในพื้นที่ข้อความส่วนล่าง\nคุณจะต้องรวมการเปลี่ยนแปลงของคุณเข้ากับข้อความที่มีอยู่\n<strong>เฉพาะ</strong>ข้อความในพื้นที่ข้อความส่วนบนเท่านั้นที่จะถูกบันทึก เมื่อกด \"{{int:savearticle}}\"",
+       "explainconflict": "มีผู้เปลี่ยนแปลงหน้านี้ตั้งแต่คุณเริ่มแก้ไข\nพื้นที่ข้อความส่วนบนมีข้อความหน้าที่มีอยู่ในปัจจุบัน\nการแก้ไขของคุณแสดงอยู่ในพื้นที่ข้อความส่วนล่าง\nคุณจะต้องรวมการเปลี่ยนแปลงของคุณเข้ากับข้อความที่มีอยู่\n<strong>เฉพาะ</strong>ข้อความในพื้นที่ข้อความส่วนบนเท่านั้นที่จะถูกบันทึก เมื่อกด \"$1\"",
        "yourtext": "ข้อความของคุณ",
        "storedversion": "รุ่นที่เก็บไว้",
        "nonunicodebrowser": "<strong>คำเตือน: เบราว์เซอร์ของคุณไม่สนับสนุนยูนิโคด</strong> \nการแก้ไขไปพลางจะทำให้คุณแก้ไขหน้าได้อย่างปลอดภัย: อักขระที่มิใช่ ASCII จะปรากฏในกล่องแก้ไขเป็นรหัสฐานสิบหก",
        "page_last": "ท้ายสุด",
        "histlegend": "การเลือกผลต่าง: เลือกปุ่มของสองรุ่นที่ต้องการเปรียบเทียบ และกดป้อนเข้าหรือปุ่มด้านล่าง<br />\nคำอธิบาย: <strong>({{int:cur}})</strong> = ผลต่างกับรุ่นปัจจุบัน, <strong>({{int:last}})</strong> = ผลต่างกับรุ่นก่อนหน้า, <strong>{{int:minoreditletter}}</strong> = การแก้ไขเล็กน้อย",
        "history-fieldset-title": "ค้นดูประวัติ",
-       "history-show-deleted": "เฉพาะที่ถูกลบ",
+       "history-show-deleted": "à¹\80à¸\89à¸\9eาะรุà¹\88à¸\99à¸\97ีà¹\88à¸\96ูà¸\81ลà¸\9a",
        "histfirst": "แรกสุด",
        "histlast": "ล่าสุด",
        "historysize": "($1 ไบต์)",
        "mergehistory-fail-bad-timestamp": "สแตมป์เวลาไม่ถูกต้อง",
        "mergehistory-fail-invalid-source": "หน้าต้นทางไม่ถูกต้อง",
        "mergehistory-fail-invalid-dest": "หน้าปลายทางไม่ถูกต้อง",
+       "mergehistory-fail-no-change": "ไม่ได้มีการควบรวมรุ่นใดๆ ในการควบรวมประวัติหน้า  โปรดตรวจดูค่าตัวแปร หน้า และ เวลา ใหม่อีกครั้ง",
        "mergehistory-fail-permission": "มีสิทธิไม่เพียงพอที่จะผสานประวัติ",
        "mergehistory-fail-self-merge": "หน้าต้นทางและปลายทางเป็นหน้าเดียวกัน",
        "mergehistory-fail-toobig": "ไม่สามารถผสานประวัติได้ เนื่องจาก $1 รุ่นแก้ไขเก่าที่เกินขีดจำกัดสูงสุดจะต้องถูกย้ายไปก่อน",
        "mergelog": "ปูมการรวม",
        "revertmerge": "เลิกรวม",
        "mergelogpagetext": "ด้านล่างนี้เป็นรายการการรวมประวัติหน้าหนึ่งกับของอีกหน้าหนึ่งล่าสุด",
-       "history-title": "à¸\9bระวัà¸\95ิรุà¹\88à¸\99ปรับปรุงของ \"$1\"",
+       "history-title": "à¸\9bระวัà¸\95ิà¸\81ารปรับปรุงของ \"$1\"",
        "difference-title": "ผลต่างระหว่างรุ่นของ \"$1\"",
        "difference-title-multipage": "ผลต่างระหว่างหน้า \"$1\" และ \"$2\"",
        "difference-multipage": "(ผลต่างระหว่างหน้า)",
        "prefsnologintext2": "โปรดล็อกอินเพื่อเปลี่ยนการตั้งค่าของคุณ",
        "prefs-skin": "หน้าตา",
        "skin-preview": "ตัวอย่าง",
-       "datedefault": "à¹\84มà¹\88มีà¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88า",
+       "datedefault": "ไม่ตั้งค่า",
        "prefs-labs": "คุณสมบัติทดลอง",
        "prefs-user-pages": "หน้าผู้ใช้",
-       "prefs-personal": "à¹\82à¸\9eรà¹\84à¸\9fลà¹\8cผู้ใช้",
+       "prefs-personal": "à¸\82à¹\89อมูลผู้ใช้",
        "prefs-rc": "ปรับปรุงล่าสุด",
        "prefs-watchlist": "รายการเฝ้าดู",
        "prefs-editwatchlist": "แก้ไขรายการเฝ้าดู",
        "prefs-changeemail": "เปลี่ยนหรือลบที่อยู่อีเมล",
        "prefs-setemail": "ตั้งที่อยู่อีเมล",
        "prefs-email": "ตัวเลือกอีเมล",
-       "prefs-rendering": "รูà¸\9bลัà¸\81ษà¸\93à¹\8c",
+       "prefs-rendering": "à¸\81ารà¹\81สà¸\94à¸\87à¸\9cล",
        "saveprefs": "บันทึก",
        "restoreprefs": "คืนการตั้งค่าโดยปริยายทั้งหมด (ในทุกส่วน)",
        "prefs-editing": "การแก้ไข",
        "searchresultshead": "ค้นหา",
-       "stub-threshold": "à¸\82ีà¸\94à¹\81à¸\9aà¹\88à¸\87สำหรัà¸\9aà¸\81ารà¸\88ัà¸\94รูà¸\9bà¹\81à¸\9aà¸\9aลิà¸\87à¸\81à¹\8cโครง ($1):",
+       "stub-threshold": "à¸\84วามยาวà¸\82อà¸\87หà¸\99à¹\89าà¸\97ีà¹\88à¹\83à¸\8aà¹\89à¹\80à¸\9bà¹\87à¸\99à¹\80สà¹\89à¸\99à¹\81à¸\9aà¹\88à¸\87à¹\83à¸\99à¸\81ารระà¸\9aุหà¸\99à¹\89าà¹\82à¸\84รà¸\87 à¹\80à¸\9eืà¹\88อà¸\88ะà¹\83หà¹\89มีà¸\81ารà¸\88ัà¸\94รูà¸\9bà¹\81à¸\9aà¸\9aà¹\80à¸\89à¸\9eาะà¸\95ัว à¸ªà¸³à¸«à¸£à¸±à¸\9aลิà¸\87à¸\81à¹\8cà¸\97ีà¹\88à¹\82ยà¸\87มายัà¸\87โครง ($1):",
        "stub-threshold-sample-link": "ตัวอย่าง",
        "stub-threshold-disabled": "ปิดใช้งาน",
        "recentchangesdays": "จำนวนวันที่แสดงในปรับปรุงล่าสุด:",
        "timezoneregion-europe": "ยุโรป",
        "timezoneregion-indian": "มหาสมุทรอินเดีย",
        "timezoneregion-pacific": "มหาสมุทรแปซิฟิก",
-       "allowemail": "à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99อีเมลจากผู้ใช้อื่น",
+       "allowemail": "à¹\80à¸\9bิà¸\94รัà¸\9aอีเมลจากผู้ใช้อื่น",
        "prefs-searchoptions": "ค้นหา",
        "prefs-namespaces": "เนมสเปซ",
        "default": "ค่าโดยปริยาย",
        "prefs-emailconfirm-label": "การยืนยันอีเมล:",
        "youremail": "อีเมล:",
        "username": "{{GENDER:$1|ชื่อผู้ใช้}}:",
-       "prefs-memberingroups": "{{GENDER:$2|สมาชิก}}ใน{{PLURAL:$1|กลุ่ม|กลุ่ม}}:",
+       "prefs-memberingroups": "เป็น{{GENDER:$2|สมาชิก}}ใน{{PLURAL:$1|กลุ่ม|กลุ่ม}}:",
+       "group-membership-link-with-expiry": "$1 (จนกระทั่ง $2)",
        "prefs-registration": "เวลาลงทะเบียน:",
        "yourrealname": "ชื่อจริง:",
        "yourlanguage": "ภาษา:",
        "prefs-help-email": "ไม่จำเป็นต้องใส่ที่อยู่อีเมล แต่จำเป็นสำหรับการตั้งรหัสผ่านใหม่หากคุณลืมรหัสผ่าน",
        "prefs-help-email-others": "คุณยังสามารถเลือกให้ผู้อื่นติดต่อคุณโดยอีเมลผ่านลิงก์บนหน้าผู้ใช้หรือหน้าพูดคุยกับผู้ใช้ของคุณ\nไม่เปิดเผยที่อยู่อีเมลของคุณเมื่อผู้ใช้อื่นติดต่อคุณ",
        "prefs-help-email-required": "ต้องการที่อยู่อีเมล",
-       "prefs-info": "สารสà¸\99à¹\80à¸\97ศเบื้องต้น",
+       "prefs-info": "à¸\82à¹\89อมูลเบื้องต้น",
        "prefs-i18n": "สากลวิวัตน์",
        "prefs-signature": "ลายเซ็น",
-       "prefs-dateformat": "รูปแบบวัน",
+       "prefs-dateformat": "รูปแบบวันที่",
        "prefs-timeoffset": "ส่วนต่างเวลา",
        "prefs-advancedediting": "ตัวเลือกทั่วไป",
        "prefs-editor": "ตัวแก้ไข",
        "prefs-displayrc": "ตัวเลือกผลแสดง",
        "prefs-displaywatchlist": "ตัวเลือกผลแสดง",
        "prefs-tokenwatchlist": "โทเค็น",
-       "prefs-diffs": "à¸\9cลà¸\95à¹\88าà¸\87",
+       "prefs-diffs": "à¸\84วามà¹\81à¸\95à¸\81à¸\95à¹\88าà¸\87ระหวà¹\88าà¸\87รุà¹\88à¸\99",
        "prefs-help-prefershttps": "การตั้งค่านี้จะมีผลเมื่อคุณล็อกอินครั้งถัดไป",
        "prefswarning-warning": "คุณเปลี่ยนแปลงการตั้งค่าของคุณที่ยังไม่ได้บันทึก\nหากคุณออกจากหน้านี้โดยไม่คลิก \"$1\" จะไม่ปรับการตั้งค่าของคุณ",
        "prefs-tabs-navigation-hint": "แนะนำ: คุณสามารถใช้แป้นลูกศรซ้ายและขวาเพื่อนำทางระหว่างแถบในรายการแถบได้",
        "userrights-nodatabase": "ไม่มีฐานข้อมูล $1 หรือฐานข้อมูลอยู่บนเครื่องอื่น",
        "userrights-changeable-col": "กลุ่มที่คุณสามารถเปลี่ยนได้",
        "userrights-unchangeable-col": "กลุ่มที่คุณไม่สามารถเปลี่ยนได้",
+       "userrights-expiry-current": "หมดอายุ $1",
+       "userrights-expiry-none": "ไม่มีวันหมดอายุ",
+       "userrights-expiry": "หมดอายุ:",
        "userrights-conflict": "พบการเปลี่ยนแปลงสิทธิผู้ใช้ขัดกัน! โปรดทบทวนและยืนยันการเปลี่ยนแปลงของคุณ",
        "group": "กลุ่ม:",
        "group-user": "ผู้ใช้",
        "right-editsemiprotected": "แก้ไขหน้าที่ถูกล็อกในฐานะ \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "แก้ไขตัวแบบเนื้อหาของหน้า",
        "right-editinterface": "แก้ไขอินเตอร์เฟซผู้ใช้",
-       "right-editusercssjs": "แก้ไขไฟล์ CSS และจาวาสคริปต์ของผู้ใช้อื่น",
        "right-editusercss": "แก้ไขไฟล์ CSS ของผู้ใช้อื่น",
        "right-edituserjs": "แก้ไขไฟล์จาวาสคริปต์ของผู้ใช้อื่น",
        "right-editmyusercss": "แก้ไขไฟล์ซีเอสเอสผู้ใช้ของคุณเอง",
        "grant-group-watchlist-interaction": "โต้ตอบกับรายการเฝ้าดูของคุณ",
        "grant-group-email": "ส่งอีเมล",
        "grant-group-customization": "การปรับแต่งและการตั้งค่า",
+       "grant-group-private-information": "เข้าถึงข้อมูลส่วนตัวเกี่ยวกับตัวคุณ",
        "grant-group-other": "กิจกรรมเบ็ดเตล็ด",
        "grant-blockusers": "บล็อกและปลดบล็อกผู้ใช้ต่าง ๆ",
        "grant-createaccount": "สร้างบัญชี",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ดูเพิ่มที่ [[Special:NewPages|รายชื่อหน้าใหม่]])",
        "recentchanges-submit": "แสดง",
        "rcfilters-activefilters": "ตัวกรองที่ทำงาน",
+       "rcfilters-quickfilters": "การตั้งค่าตัวกรองที่บันทึกไว้",
+       "rcfilters-savedqueries-new-name-label": "ชื่อ",
+       "rcfilters-savedqueries-apply-label": "บันทึกการตั้งค่า",
+       "rcfilters-savedqueries-cancel-label": "ยกเลิก",
+       "rcfilters-savedqueries-add-new-title": "บันทึกการตั้งค่าตัวกรองปัจจุบัน",
        "rcfilters-restore-default-filters": "คืนค่าตัวกรองปริยาย",
        "rcfilters-clear-all-filters": "ล้างตัวกรองทั้งหมด",
        "rcfilters-invalid-filter": "ตัวกรองไม่ถูกต้อง",
        "rcfilters-filterlist-title": "ตัวกรอง",
+       "rcfilters-highlightmenu-title": "เลือกสี",
        "rcfilters-filterlist-noresults": "ไม่พบตัวกรองใด ๆ",
+       "rcfilters-noresults-conflict": "ไม่พบผลลัพธ์ เนื่องจากเงื่อนไขการค้นขัดแย้งกัน",
        "rcfilters-filtergroup-registration": "การลงทะเบียนผู้ใช้",
        "rcfilters-filter-registered-label": "ลงทะเบียน",
        "rcfilters-filter-registered-description": "ผู้แก้ไขที่ล็อกอินแล้ว",
        "rcfilters-filter-editsbyother-label": "การแก้ไขต่าง ๆ ที่ผู้อื่นทำ",
        "rcfilters-filter-editsbyother-description": "การแก้ไขต่าง ๆ ที่ผู้ใช้อื่นทำ (ไม่ใช่คุณ)",
        "rcfilters-filtergroup-userExpLevel": "ระดับผู้เชี่ยวชาญ (สำหรับผู้ใช้ที่ลงทะเบียนเท่านั้น)",
-       "rcfilters-filter-userExpLevel-newcomer-label": "ผู้ที่มาใหม่",
-       "rcfilters-filter-userExpLevel-experienced-label": "ผู้ใช้ที่มีความเชี่ยวชาญ",
+       "rcfilters-filter-user-experience-level-newcomer-label": "ผู้ที่มาใหม่",
+       "rcfilters-filter-user-experience-level-experienced-label": "ผู้ใช้ที่มีความเชี่ยวชาญ",
+       "rcfilters-filter-minor-label": "การแก้ไขเล็กน้อย",
+       "rcfilters-filter-major-label": "ไม่ใช่การแก้ไขเล็กน้อย",
+       "rcfilters-filter-major-description": "การแก้ไขที่ไม่ได้ทำเครื่องหมายเป็นการแก้ไขเล็กน้อย",
+       "rcfilters-filtergroup-watchlist": "หน้าในรายการเฝ้าดู",
+       "rcfilters-filter-watchlist-watched-label": "ในรายการเฝ้าดู",
+       "rcfilters-filter-watchlist-watched-description": "การปรับปรุงของหน้าในรายการเฝ้าดูของคุณ",
+       "rcfilters-filter-watchlist-notwatched-label": "ไม่อยู่ในรายการเฝ้าดู",
+       "rcfilters-filter-watchlist-notwatched-description": "ทั้งหมดยกเว้นการปรับปรุงของหน้าในรายการเฝ้าดูของคุณ",
+       "rcfilters-filtergroup-changetype": "ประเภทการปรับปรุง",
+       "rcfilters-filter-pageedits-label": "จำนวนการแก้ไขหน้า",
+       "rcfilters-filter-newpages-label": "จำนวนการสร้างหน้า",
+       "rcfilters-filter-categorization-label": "การปรับเปลี่ยนหมวดหมู่",
+       "rcfilters-filtergroup-lastRevision": "รุ่นล่าสุด",
+       "rcfilters-filter-lastrevision-label": "รุ่นล่าสุด",
+       "rcfilters-filter-lastrevision-description": "การปรับปรุงล่าสุดของหน้า",
+       "rcfilters-filter-previousrevision-label": "รุ่นก่อน",
+       "rcfilters-filter-previousrevision-description": "การปรับปรุงทั้งหมดที่ไม่ใช่การปรับปรุงล่าสุดของหน้า",
        "rcnotefrom": "ด้านล่างเป็นการเปลี่ยนแปลงตั้งแต่ <strong>$3, $4</strong> (แสดงมากสุด <strong>$1</strong>)",
+       "rclistfromreset": "กลับค่าเดิมของการเลือกวันที่",
        "rclistfrom": "แสดงการเปลี่ยนแปลงใหม่เริ่มตั้งแต่ $2, $3",
        "rcshowhideminor": "$1การแก้ไขเล็กน้อย",
        "rcshowhideminor-show": "แสดง",
        "rcshowhidecategorization": "$1การจัดหมวดหมู่หน้า",
        "rcshowhidecategorization-show": "แสดง",
        "rcshowhidecategorization-hide": "ซ่อน",
-       "rclinks": "แสดงการปรับปรุงล่าสุด $1 รายการ ในช่วง $2 วันที่ผ่านมา<br />$3",
+       "rclinks": "แสดงการปรับปรุงล่าสุด $1 รายการ ในช่วง $2 วันที่ผ่านมา",
        "diff": "ต่าง",
        "hist": "ประวัติ",
        "hide": "ซ่อน",
        "php-uploaddisabledtext": "ปิดการใช้งานการอัปโหลดไฟล์ในพีเอชพี\nกรุณาตรวจสอบการตั้งค่า file_uploads",
        "uploadscripted": "ไฟล์นี้มีโค้ดเอชทีเอ็มแอลหรือสคริปต์ ซึ่งอาจก่อให้การแปลคำสั่งของเบราว์เซอร์ผิดพลาด",
        "uploadscriptednamespace": "ไฟล์ SVG นี้มีเนมสเปซไม่ถูกต้อง \"<nowiki>$1</nowiki>\"",
+       "uploadinvalidxml": "ไม่สามารถตีความ XML ในไฟลืที่อัปโหลด",
        "uploadvirus": "ไฟล์นี้มีไวรัส! \nรายละเอียด: $1",
        "upload-source": "ไฟล์ต้นทาง",
        "sourcefilename": "ชื่อไฟล์ต้นทาง:",
        "upload-copy-upload-invalid-domain": "ไม่สามารถคัดลอกการอัปโหลดจากโดเมนนี้",
        "upload-dialog-title": "อัปโหลดไฟล์",
        "upload-dialog-button-cancel": "ยกเลิก",
+       "upload-dialog-button-back": "ย้อนกลับ",
        "upload-dialog-button-done": "เสร็จสิ้น",
        "upload-dialog-button-save": "บันทึก",
        "upload-dialog-button-upload": "อัปโหลด",
        "upload-form-label-infoform-description": "คำอธิบาย",
        "upload-form-label-usage-title": "การใช้",
        "upload-form-label-usage-filename": "ชื่อไฟล์",
+       "upload-form-label-own-work": "นี่เป็นงานสร้างสรรค์ของฉันเอง",
        "upload-form-label-infoform-categories": "หมวดหมู่",
        "upload-form-label-infoform-date": "วันที่",
        "backend-fail-backup": "ไม่สามารถสำรองไฟล์ \"$1\"",
        "backend-fail-notexists": "ไม่มีไฟล์ $1",
+       "backend-fail-hashes": "ไม่สามารถดึง hash ของไฟล์ เพื่อใช้เปรียบเทียบ",
        "backend-fail-delete": "ไม่สามารถลบไฟล์ \"$1\"",
+       "backend-fail-describe": "ไม่สามารถเปลี่ยน metadata ของไฟล์ \"$1\"",
        "backend-fail-alreadyexists": "มีไฟล์ \"$1\" อยู่แล้ว",
        "backend-fail-store": "ไม่สามารถเก็บไฟล์ \"$1\" ที่ \"$2\" ได้",
        "backend-fail-copy": "ไม่สามารถคัดลอกไฟล์ \"$1\" ไปยัง \"$2\" ได้",
        "download": "ดาวน์โหลด",
        "unwatchedpages": "หน้าที่ไม่มีผู้เฝ้าดู",
        "listredirects": "รายการหน้าเปลี่ยนทาง",
+       "listduplicatedfiles": "รายการไฟล์ที่ซ้ำกัน",
+       "listduplicatedfiles-entry": "[[:File:$1|$1]] มีไฟล์ซ้ำ[[$3|{{PLURAL:$2|ไฟล์เดียว| $2 ไฟล์}}]].",
        "unusedtemplates": "แม่แบบไม่ได้ใช้",
        "unusedtemplatestext": "หน้านี้แสดงรายการหน้าทั้งหมดในเนมสเปซ {{ns:template}} ซึ่งไม่ได้ถูกรวมอยู่ในหน้าอื่น \nอย่าลืมตรวจสอบการเชื่อมโยงมายังแม่แบบอื่นก่อนลบ",
        "unusedtemplateswlh": "การเชื่อมโยงอื่น",
        "suppress": "ผู้ดูแลประวัติ",
        "querypage-disabled": "หน้าพิเศษนี้ถูกปิดใช้งานด้วยเหตุผลด้านสมรรถภาพ",
        "apihelp-no-such-module": "ไม่พบมอดูล \"$1\"",
+       "apisandbox-api-disabled": "ไซต์นี้ไม่เปิดใช้ API",
        "apisandbox-unfullscreen": "แสดงหน้า",
+       "apisandbox-submit": "ส่งคำขอ",
        "apisandbox-reset": "ล้าง",
        "apisandbox-retry": "ลองใหม่",
+       "apisandbox-loading": "กำลังดึงข้อมูลสำหรับ API module \"$1\"...",
+       "apisandbox-load-error": "เกิดความผิดพลาดขณะดึงข้อมูลสำหรับ API module \"$1\": $2",
+       "apisandbox-no-parameters": "ไม่มีตัวแปรใน API module นี้",
+       "apisandbox-helpurls": "ลิงก์วิธีใช้",
        "apisandbox-examples": "ตัวอย่าง",
+       "apisandbox-dynamic-parameters": "ตัวแปรเพิ่มเติม",
+       "apisandbox-dynamic-parameters-add-label": "เพิ่มตัวแปร:",
+       "apisandbox-dynamic-error-exists": "ชื่อตัวแปร",
+       "apisandbox-deprecated-parameters": "ตัวแปรที่ไม่แนะนำให้ใช้",
        "apisandbox-results": "ผลลัพธ์",
+       "apisandbox-sending-request": "กำลังส่งคำขอ API...",
+       "apisandbox-loading-results": "กำลังรับผลลัพธ์ของ API...",
        "apisandbox-request-url-label": "ขอ URL:",
+       "apisandbox-request-json-label": "คำขอในรูปแบบ JSON:",
+       "apisandbox-request-time": "ระยะเวลาที่คำขอใช้: {{PLURAL:$1|$1 ms}}",
+       "apisandbox-alert-page": "ค่าข้อมูลในหน้านี้ไม่ถูกต้อง",
+       "apisandbox-alert-field": "ค่าของข้อมูลส่วนนี้ไม่ถูกต้อง",
+       "apisandbox-continue": "ดำเนินการต่อ",
+       "apisandbox-continue-clear": "ล้าง",
+       "apisandbox-param-limit": "ใส่ค่า <kbd>max</kbd> เพื่อใช้ ค่าสูงสุดของขีดจำกัด",
+       "apisandbox-multivalue-all-values": "$1 (ค่าทั้งหมด)",
        "booksources": "แหล่งหนังสือ",
        "booksources-search-legend": "ค้นหาแหล่งหนังสือ",
        "booksources-search": "ค้นหา",
        "categories-submit": "แสดง",
        "categoriespagetext": "{{PLURAL:$1|หมวดหมู่นี้|หมวดหมู่ต่อไปนี้}}มีหน้าหรือสื่อต่าง ๆ\n[[Special:UnusedCategories|หมวดหมู่ที่ไม่ได้ใช้]]จะไม่แสดงในที่นี้\nดูเพิ่มที่ [[Special:WantedCategories|หมวดหมู่ที่ต้องการ]]",
        "categoriesfrom": "แสดงหมวดหมู่เริ่มจาก:",
-       "deletedcontributions": "à¹\80รืà¹\88อà¸\87à¸\97ีà¹\88à¹\80à¸\82ียà¸\99à¸\82อà¸\87à¸\9cูà¹\89à¹\83à¸\8aà¹\89ที่ถูกลบ",
-       "deletedcontributions-title": "à¹\80รืà¹\88อà¸\87à¸\97ีà¹\88à¹\80à¸\82ียà¸\99à¸\82อà¸\87à¸\9cูà¹\89à¹\83à¸\8aà¹\89ที่ถูกลบ",
+       "deletedcontributions": "à¹\80รืà¹\88อà¸\87à¸\97ีà¹\88à¸\9cูà¹\89à¹\83à¸\8aà¹\80à¸\82ียà¸\99ที่ถูกลบ",
+       "deletedcontributions-title": "à¹\80รืà¹\88อà¸\87à¸\97ีà¹\88à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\80à¸\82ียà¸\99ที่ถูกลบ",
        "sp-deletedcontributions-contribs": "เรื่องที่เขียน",
        "linksearch": "ค้นหาลิงก์ภายนอก",
        "linksearch-pat": "รูปแบบการค้นหา:",
        "listgrouprights-namespaceprotection-header": "การจำกัดเนมสเปซ",
        "listgrouprights-namespaceprotection-namespace": "เนมสเปซ",
        "listgrouprights-namespaceprotection-restrictedto": "สิทธิอนุญาตให้ผู้ใช้แก้ไข",
+       "listgrants": "สิทธิแต่งตั้ง",
+       "listgrants-grant": "สิทธิแต่งตั้ง",
        "listgrants-rights": "สิทธิ",
        "trackingcategories": "หมวดหมู่ค้นหาและติดตาม",
        "trackingcategories-summary": "หน้านี้แสดงรายการหมวดหมู่ค้นหาและติดตามซึ่งซอฟต์แวร์มีเดียวิกิจัดการอัตโนมัติ สามารถเปลี่ยนชื่อเหล่านี้ได้โดยการเปลี่ยนสารระบบที่เกี่ยวข้องในเนมสเปซ {{ns:8}}",
        "trackingcategories-desc": "เกณฑ์การรวมหมวดหมู่",
        "noindex-category-desc": "โรบอตไม่สามารถทำดัชนีหน้านี้เพราะมีเมจิกเวิร์ด <code><nowiki>__NOINDEX__</nowiki></code> อยู่และอยู่ในเนมสเปซซึ่งอนุญาตตัวบ่งชี้นี้",
        "index-category-desc": "หน้านี้มี <code><nowiki>__INDEX__</nowiki></code> อยู่ (และอยู่ในเนมสเปซซึ่งอนุญาตตัวบ่งชี้นี้) ฉะนั้น โรบอตจึงทำดัชนี้ได้ ซึ่งปกติไม่สามารถทำได้",
+       "post-expand-template-inclusion-category-desc": "การแทนที่แม่แบบทั้งหมดทำให้ขนาดของหน้าใหญ่กว่า <code>$wgMaxArticleSize</code> จึงไม่มีการแทนที่แม่แบบบางตัว",
        "broken-file-category-desc": "หน้ามีลิงก์ไฟล์เสีย (ลิงก์เพื่อฝังตัวไฟล์เมื่อไม่มีไฟล์)",
        "hidden-category-category-desc": "หมวดหมู่นี้มี <code><nowiki>__HIDDENCAT__</nowiki></code> ในเนื้อหาหน้า ซึ่งป้องกันมิให้แสดงในกล่องลิงก์หมวดหมู่ในหน้าโดยปริยาย",
        "trackingcategories-nodesc": "ไม่มีคำอธิบาย",
        "enotif_body_intro_restored": "$2 กู้คืนหน้า $1 บน {{SITENAME}} เมื่อ $PAGEEDITDATE ดูรุ่นปัจจุบันที่ $3",
        "enotif_body_intro_changed": "$2 เปลี่ยนแปลงหน้า $1 บน {{SITENAME}} เมื่อ $PAGEEDITDATE ดูรุ่นปัจจุบันที่ $3",
        "enotif_lastvisited": "ดู $1 สำหรับการเปลี่ยนแปลงทั้งหมดตั้งแต่คุณเยี่ยมชมครั้งสุดท้าย",
-       "enotif_lastdiff": "à¸\94ู $1 à¹\80à¸\9eืà¹\88อà¸\94ูà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87à¸\99ีà¹\89",
+       "enotif_lastdiff": "à¹\80à¸\9eืà¹\88อà¸\94ูà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87à¸\99ีà¹\89 à¹\83หà¹\89à¸\94ู $1",
        "enotif_anon_editor": "ผู้ใช้นิรนาม $1",
        "enotif_body": "เรียน $WATCHINGUSERNAME\n\n$PAGEINTRO $NEWPAGE\n\nคำอธิบายอย่างย่อของผู้เขียน: $PAGESUMMARY $PAGEMINOREDIT\n\nติดต่อผู้เขียน:\nเมล: $PAGEEDITOR_EMAIL\nวิกิ: $PAGEEDITOR_WIKI\n\nจะไม่มีประกาศอื่นหากมีกิจกรรมเพิ่มเติม เว้นเสียแต่คุณจะเข้าชมหน้านี้ขณะที่กำลังล็อกอินอยู่ คุณยังสามารถตั้งค่าตัวบ่งชี้ประกาศใหม่สำหรับหน้าที่คุณเฝ้าดูทุกหน้าในรายการเฝ้าดูของคุณ\n\nระบบประกาศ {{SITENAME}} ที่เป็นมิตรของคุณ\n\n--\nในการเปลี่ยนการตั้งค่าประกาศอีเมลของคุณ โปรดดู\n{{canonicalurl:{{#special:Preferences}}}}\n\nในการเปลี่ยนการตั้งค่ารายการเฝ้าดูของคุณ โปรดดู\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nในการลบหน้าจากรายการเฝ้าดูของคุณ โปรดดู\n$UNWATCHURL\n\nผลป้อนกลับและความช่วยเหลือเพิ่มเติม:\n$HELPPAGE",
        "created": "ถูกสร้าง",
        "rollbacklinkcount": "ย้อนกลับฉุกเฉิน $1 การแก้ไข",
        "rollbacklinkcount-morethan": "ย้อนกลับฉุกเฉินกว่า $1 การแก้ไข",
        "rollbackfailed": "ย้อนกลับฉุกเฉินล้มเหลว",
+       "rollback-missingparam": "ในคำขอไม่มีตัวแปรที่ต้องการ",
+       "rollback-missingrevision": "ไม่สามารถดึงข้อมูลรุ่น",
        "cantrollback": "ไม่สามารถย้อนการแก้ไขได้ ผู้เขียนคนล่าสุดเป็นผู้เขียนคนเดียวของหน้านี้",
        "alreadyrolled": "ไม่สามารถย้อนกลับฉุกเฉินการแก้ไขสุดท้ายโดย [[User:$2|$2]] ([[User talk:$2|พูดคุย]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) ในหน้า [[:$1]] มีผู้อื่นได้แก้ไขหรือย้อนกลับฉุกเฉินหน้านี้ไปก่อนแล้ว\n\nผู้แก้ไขล่าสุดของหน้านี้คือ [[User:$3|$3]] ([[User talk:$3|พูดคุย]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])",
        "editcomment": "คำอธิบายการแก้ไขคือ: <em>$1</em>",
        "undeleteviewlink": "ดู",
        "undeleteinvert": "กลับการเลือก",
        "undeletecomment": "เหตุผล:",
-       "undeletedrevisions": "กู้คืนการแก้ไข $1 รุ่นแล้ว",
-       "undeletedrevisions-files": "กู้คืน $1 รุ่นและ $2 ไฟล์แล้ว",
-       "undeletedfiles": "กู้คืน $1 ไฟล์แล้ว",
        "cannotundelete": "การกู้คืนล้มเหลว:\n$1",
        "undeletedpage": "<strong>กู้คืน $1 แล้ว</strong>\n\nดู[[Special:Log/delete|ปูมการลบ]] สำหรับบันทึกรายชื่อการลบและการกู้คืนล่าสุด",
        "undelete-header": "ดู [[Special:Log/delete|ปูมการลบ]] สำหรับหน้าที่ถูกลบล่าสุด",
        "pageinfo-category-pages": "จำนวนหน้า",
        "pageinfo-category-subcats": "จำนวนหมวดหมู่ย่อย",
        "pageinfo-category-files": "จำนวนไฟล์",
+       "pageinfo-user-id": "หมายเลขประจำตัวผู้ใช้",
        "markaspatrolleddiff": "ทำเครื่องหมายว่าตรวจสอบแล้ว",
        "markaspatrolledtext": "ทำเครื่องหมายว่าหน้านี้ถูกตรวจสอบแล้ว",
        "markaspatrolledtext-file": "ทำเครื่องหมายรุ่นไฟล์นี้ว่าตรวจสอบแล้ว",
        "previousdiff": "← การแก้ไขก่อนหน้า",
        "nextdiff": "การแก้ไขถัดไป →",
        "mediawarning": "'''คำเตือน''': ไฟล์รูปแบบนี้อาจมีโค้ดที่ไม่พึงประสงค์\nระบบของท่านอาจเสียหายอันเนื่องจากโค้ดทำงาน",
-       "imagemaxsize": "à¸\82à¸\99าà¸\94ภาà¸\9eà¸\97ีà¹\88à¸\88ำà¸\81ัà¸\94:<br />''(สำหรัà¸\9aหà¸\99à¹\89าอà¸\98ิà¸\9aายภาà¸\9e)''",
+       "imagemaxsize": "à¸\88ำà¸\81ัà¸\94à¸\82à¸\99าà¸\94รูà¸\9bภาà¸\9e:<br /><em>(สำหรัà¸\9aหà¸\99à¹\89าà¸\84ำอà¸\98ิà¸\9aายà¹\84à¸\9fลà¹\8c)</em>",
        "thumbsize": "ขนาดรูปย่อ:",
        "widthheightpage": "{{PLURAL:$3|หน้า|หน้า}} $1 × $2, $3",
        "file-info": "ขนาดไฟล์: $1, ชนิดไมม์: $2",
        "log-name-tag": "ปูมป้ายระบุ",
        "log-description-tag": "หน้านี้แสดงเมื่อผู้ใช้เพิ่มหรือลบ[[Special:Tags|ป้ายระบุ]]จากรุ่นแก้ไขหรือรายการปูมอันใดอันหนึ่ง ปูมนี้ไม่แสดงรายการการกระทำติดป้ายระบุเมื่อเกิดเป็นส่้วนหนึ่งของการแก้ไข การลบหรือการกระทำที่คล้ายกัน",
        "rightsnone": "(ไม่มี)",
-       "revdelete-summary": "คำอธิบายโดยย่อ",
        "feedback-adding": "เพิ่มคำติชมเข้าไปที่หน้า...",
        "feedback-bugcheck": "ยอดเยี่ยม! เพียงตรวจสอบว่าจุดบกพร่องนั้นมิใช่หนึ่งใน[$1 จุดบกพร่องที่ทราบแล้ว]",
        "feedback-bugnew": "ฉันตรวจสอบแล้ว รายงานจุดบกพร่องใหม่",
index 5d6b0b2..a156a1a 100644 (file)
@@ -10,7 +10,8 @@
                        "Runningfridgesrule",
                        "The Evil IP address",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Stephanecbisson"
                ]
        },
        "tog-underline": "Çykgytlaryň aşagyny çyz:",
        "externaldberror": "Ýa tassyklama maglumat bazasynyň säwligi bar ýa-da öz ulanyjy hasabyňyzy täzelemegiňize rugsat berilmeýär.",
        "login": "Hasaba gir",
        "nav-login-createaccount": "Hasaba gir / Hasap döret",
-       "userlogin": "Hasaba gir / täze hasap aç",
-       "userloginnocreate": "Sessiýa aç",
        "logout": "Hasapdan çyk",
        "userlogout": "Hasapdan çyk",
        "notloggedin": "Hasaba girmänsiňiz",
-       "nologin": "Siziň heniz hasabyňyz ýokmy? '''$1'''",
-       "nologinlink": "Onda özüňize bir hasap ediniň",
        "createaccount": "Täze hasap aç",
-       "gotaccount": "Eýýäm hasap açdyňyzmy? '''$1'''.",
-       "gotaccountlink": "Onda giriberiň!",
-       "userlogin-resetlink": "Giriş maglumatlaryňyzy ýatdan çykardyňyzmy?",
        "createaccountmail": "e-poçta bilen",
-       "createaccountreason": "Sebäp:",
        "badretype": "Girizen parollaryňyz biri-birine gabat gelmeýär.",
        "userexists": "Girizen ulanyjy adyňyz ulanylýar.\nBaşga bir at saýlamagyňyzy haýyş edýäris.",
        "loginerror": "Hasaba girmekde säwlik",
        "anonpreviewwarning": "''Sessiýa açmadyňyz. Ýazdyrsaňyz, sahypanyň redaktirleme geçmişine IP adresiňiz ýazylar.''",
        "missingsummary": "'''Ýatlatma:''' Redaktirleme mazmunyny ýazmadyňyz.\nSahypany ýazdyr düwmesine ýene bir gezek bassaňyz, özgerdişiňiz mazmunsyz ýazdyrylar.",
        "missingcommenttext": "Aşakda teswir ýazmagyňyzy haýyş edýäris.",
-       "missingcommentheader": "'''Ýatladyjy:''' Bu teswir üçin tema/setirbaş görkezmediňiz. \nEger \"{{int:savearticle}}\" düwmesine gaýtadan bassaňyz, özgerdişiňiz temasyz/setirbaşsyz ýazdyrylar.",
+       "missingcommentheader": "'''Ýatladyjy:''' Bu teswir üçin tema/setirbaş görkezmediňiz. \nEger \"$1\" düwmesine gaýtadan bassaňyz, özgerdişiňiz temasyz/setirbaşsyz ýazdyrylar.",
        "summary-preview": "Deslapky synyň mazmuny:",
        "subject-preview": "Temanyň/adyň deslapky syny:",
        "blockedtitle": "Ulanyjy blokirlenen",
        "editingsection": "\"$1\" sahypasynda bölüm redaktirleýärsiňiz",
        "editingcomment": "$1 redaktirlenýär (täze bölüm)",
        "editconflict": "Özgerdiş çaknyşmasy: $1",
-       "explainconflict": "Siz bu sahypany redaktirleýärkäňiz başga biri ony üýtgedipdir.\nÝokardaky redaktirleme penjiresinde häzirki bar bolan tekst görkezilýär.\nSiziň üýtgeşmeleriňiz aşakdaky redaktirleme penjiresinde görkezilýär.\nÖz üýtgeşmeleriňizi bar bolan tekst bilen birleşdirmeli bolduňyz.\n\"{{int:savearticle}}\" düwmesine basanyňyzda '''diňe''' ýokardaky tekst ýazdyrylar.",
+       "explainconflict": "Siz bu sahypany redaktirleýärkäňiz başga biri ony üýtgedipdir.\nÝokardaky redaktirleme penjiresinde häzirki bar bolan tekst görkezilýär.\nSiziň üýtgeşmeleriňiz aşakdaky redaktirleme penjiresinde görkezilýär.\nÖz üýtgeşmeleriňizi bar bolan tekst bilen birleşdirmeli bolduňyz.\n\"$1\" düwmesine basanyňyzda '''diňe''' ýokardaky tekst ýazdyrylar.",
        "yourtext": "Siziň tekstiňiz",
        "storedversion": "Ýazdyrylan wersiýa",
        "nonunicodebrowser": "'''Duvduryş: Brauzeriňiz unicode kodirowkasyny goldamaýar.'''\nSahypalary howpsuz ýagdaýda rdaktirlemegiňiz şeýle aýlawly ýol bar: ASCII däl simwollar redaktirleme penjiresinde onaltylyk kodlar görnüşinde peýda bolar.",
        "saveprefs": "Ýazdyr",
        "restoreprefs": "Ähli gaýybana sazlamalary dikelt",
        "prefs-editing": "Redaktirleme",
-       "rows": "Hatarlar:",
-       "columns": "Sütünler:",
        "searchresultshead": "Gözleg",
        "stub-threshold": "<a href=\"#\" class=\"stub\">Ownuk makala çykgydynyň</a> formaty üçin bosaga (baýt):",
        "stub-threshold-disabled": "Ýapyk",
        "userrights-reason": "Sebäp:",
        "userrights-no-interwiki": "Başga wikilerdäki ulanyjy hukuklaryny redaktirlemäge ygtyýaryňyz ýok.",
        "userrights-nodatabase": "$1 maglumat bazasy ýok ýa-da ol lokal däl.",
-       "userrights-nologin": "Ulanyjy hukuklaryny bermek üçin administrator hasaby bilen [[Special:UserLogin|sessiýa açmagyňyz]] zerurdyr.",
-       "userrights-notallowed": "Siziň hasabyňyzyň ulanyjy hukuklaryny bermäge ygtyýary ýok.",
        "userrights-changeable-col": "Üýtgedip bilýän toparlaryňyz",
        "userrights-unchangeable-col": "Üýtgedip bilmeýän toparlaryňyz",
        "group": "Topar:",
        "right-protect": "Gorag derejelerini üýtget we goragly sahypalary redaktirle",
        "right-editprotected": "Goragly sahypalary redaktirle (goragy kaskadlamazdan)",
        "right-editinterface": "Ulanyjy interfeýsini redaktirle",
-       "right-editusercssjs": "Başga ulanyjylaryň CSS we JS faýllaryny redaktirle",
        "right-editusercss": "Başga ulanyjylaryň CSS faýllaryny redaktirle",
        "right-edituserjs": "Başga ulanyjylaryň JS faýllaryny redaktirle",
        "right-rollback": "Belli bir sahypany redaktirlän iň soňky ulanyjynyň özgerdişlerini dessine öňki katdyna getir",
        "rcshowhideanons": "anonim ulanyjylary $1",
        "rcshowhidepatr": "patrullyk edilen özgerdişleri $1",
        "rcshowhidemine": "özgerdişlerimi $1",
-       "rclinks": "Soňky $2 günde edilen iň soňky $1 üýtgeşmäni görkez;<br /> $3",
+       "rclinks": "Soňky $2 günde edilen iň soňky $1 üýtgeşmäni görkez;",
        "diff": "tapawut",
        "hist": "taryh",
        "hide": "Gizle",
        "undeleteviewlink": "gör",
        "undeleteinvert": "Saýlanmadyklar",
        "undeletecomment": "Sebäp:",
-       "undeletedrevisions": "{{PLURAL:$1|1 wersiýa|$1 wersiýa}} dikeldildi",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 wersiýa|$1 wersiýa}} we {{PLURAL:$2|1 faýl|$2 faýl}} dikeldildi",
-       "undeletedfiles": "{{PLURAL:$1|1 faýl|$1 faýl}} dikeldildi",
        "cannotundelete": "Yzyna dikeltmeklik başa barmady;\nkimdir biri eýýäm sahypany yzyna dikelden bolmagy ahmal.",
        "undeletedpage": "'''$1 yzyna dikeldildi'''\n\nÝaňy-ýakyndaky öçürmeleriň we dikeltmeleriň ýazgysy üçin [[Special:Log/delete|öçürme gündeligine]] serediň.",
        "undelete-header": "Ýaňy-ýakynda öçürilen sahypalary görmek üçin [[Special:Log/delete|öçürme gündeligine]] serediň.",
        "revdelete-restricted": "administratorlara goýlan çäklendirmeler",
        "revdelete-unrestricted": "administratorlardan aýyrylan çäklendirmeler",
        "rightsnone": "(hiç biri)",
-       "revdelete-summary": "özgerdiş mazmuny",
        "searchsuggest-search": "Gözleg",
        "searchsuggest-containing": "öz içine alýar...",
        "expandtemplates": "Şablonlary giňelt",
index 54231b3..2ea966a 100644 (file)
@@ -19,7 +19,8 @@
                        "Matma Rex",
                        "Stranger195",
                        "Emem.calist",
-                       "Asmen"
+                       "Asmen",
+                       "MJPCubelo"
                ]
        },
        "tog-underline": "Pagsasalungguhit ng link:",
@@ -37,6 +38,7 @@
        "tog-watchdefault": "Idagdag sa aking tala ng mga binabantayan ang mga pahina at mga talaksang binago ko",
        "tog-watchmoves": "Idagdag sa aking tala ng mga binabantayan ang mga pahina at mga talaksang inilipat ko",
        "tog-watchdeletion": "Idagdag sa aking tala ng mga binabantayan ang mga pahina at mga talaksang binura ko",
+       "tog-watchuploads": "Magdagdag ng mga bagong file sa aking mga sinusubaybayang listahan.",
        "tog-watchrollback": "Magdagdag ng mga pahina kung saan ako nag-rollback sa aking bantayan",
        "tog-minordefault": "Markahan ang lahat ng pagbabago bilang maliit nang nakatakda",
        "tog-previewontop": "Ipakita ang paunang tingin bago ang kahon ng pagbabago",
@@ -63,7 +65,7 @@
        "tog-showhiddencats": "Ipakita ang mga nakatagong kategorya",
        "tog-norollbackdiff": "Alisin ang mga pagkakaiba pagkatapos isagawa ang pagpapagulong na pabalik sa dati",
        "tog-useeditwarning": "Magbabala sa akin kapag umalis ako sa isang pahina ng pampatnugot na hindi pa nasasagip ang mga pagbabago",
-       "tog-prefershttps": "Laging gamitin ang isang matibay na koneksiyon kapag naka-login",
+       "tog-prefershttps": "Laging gamitin ang isang walang panganib na koneksiyon kapag naka-login",
        "underline-always": "Palagi",
        "underline-never": "Hindi magpakailanman",
        "underline-default": "Tinakda ng pambasa-basa o balat",
        "newwindow": "(magbubukas sa bagong window)",
        "cancel": "Kanselahin",
        "moredotdotdot": "Damihan pa...",
-       "morenotlisted": "Hindi kumpleto ang talang ito.",
+       "morenotlisted": "Maaring hindi kumpleto ang talang ito.",
        "mypage": "Pahina ko",
        "mytalk": "Usapan",
        "anontalk": "Usapan",
        "anonpreviewwarning": "''Hindi ka nakalagda.  Itatala sa inyong pagtatala ang inyong direksiyong IP sa kasaysayan ng pagbabago ng pahinang ito.''",
        "missingsummary": "'''Paalala:''' Hindi ka nagbigay ng buod ng pagbabago.\nKapag pinindot mo uli ang Sagip, masasagip ang pagbabago mo na wala nito.",
        "missingcommenttext": "Magbigay ng isang kumento/puna sa ibaba.",
-       "missingcommentheader": "'''Paalala:''' Hindi ka nagbigay ng isang paksa/paulo para sa punang ito.\nKapag pinindot mo uli ang \"{{int:savearticle}}\", masasagip ang pagbabago mo na wala nito.",
+       "missingcommentheader": "'''Paalala:''' Hindi ka nagbigay ng isang paksa/paulo para sa punang ito.\nKapag pinindot mo uli ang \"$1\", masasagip ang pagbabago mo na wala nito.",
        "summary-preview": "Paunang tingin sa buod:",
        "subject-preview": "Paunang tingin sa paksa/paulo:",
        "blockedtitle": "Hinarang ang tagagamit",
        "editingsection": "Binabago ang $1 (bahagi)",
        "editingcomment": "Binabago ang $1 (bagong seksyon)",
        "editconflict": "Alitan sa pagbabago: $1",
-       "explainconflict": "Mayroon nagbago ng pahinang ito simula nang baguhin mo ito.\nNaglalaman ang mga nasa taas na teksto ng mga pahinang teksto at kasalukuyang mayroon ito.\nIpinapakita sa ibabang teksto ang mga binago mo.\nKailangan mong pagsamahin ang mga binago mo sa kasalukuyang teksto.\nMaitatala '''lamang''' ang nasa taas na teksto kapag pinindot ang \"{{int:savearticle}}\".",
+       "explainconflict": "Mayroon nagbago ng pahinang ito simula nang baguhin mo ito.\nNaglalaman ang mga nasa taas na teksto ng mga pahinang teksto at kasalukuyang mayroon ito.\nIpinapakita sa ibabang teksto ang mga binago mo.\nKailangan mong pagsamahin ang mga binago mo sa kasalukuyang teksto.\nMaitatala '''lamang''' ang nasa taas na teksto kapag pinindot ang \"$1\".",
        "yourtext": "Teksto mo",
        "storedversion": "Nakatagong rebisyon",
        "nonunicodebrowser": "'''Babala: Hindi sumusunod sa unicode ang browser mo.'''\nMay ginawang solusyon para pahintulutan kang magbago ng mga pahina nang ligtas: ang mga 'di-ASCII na karakter ay magpapakita sa kahon ng pagbabago bilang mga kodigong heksadesimal.",
        "recentchanges-label-plusminus": "Nagbago ang laki ng pahina sa ganitong bilang ng mga byte",
        "recentchanges-legend-heading": "<strong>Gabay:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (tingnan din [[Special:NewPages|ang talaan ng mga bagong pahina]])",
+       "rcfilters-quickfilters": "Mga mabilisang kawing",
+       "rcfilters-savedqueries-rename": "Pangalanang muli",
+       "rcfilters-savedqueries-remove": "Alisin",
+       "rcfilters-savedqueries-new-name-label": "Pangalan",
+       "rcfilters-savedqueries-cancel-label": "Balewalain",
        "rcfilters-restore-default-filters": "Ibalik ang mga napagkaukulang 'filters'",
        "rcfilters-clear-all-filters": "Burahin lahat ng mga 'filters'",
        "rcfilters-empty-filter": "Walang aktibong panangga. Lahat ay ipinamalas.",
        "rcshowhidemine": "$1 ang mga pagbabago ko",
        "rcshowhidemine-show": "Ipakita",
        "rcshowhidemine-hide": "Itago",
-       "rclinks": "Ipakita ang huling $1 mga pagbabago sa loob ng huling $2 mga araw<br />$3",
+       "rclinks": "Ipakita ang huling $1 mga pagbabago sa loob ng huling $2 mga araw",
        "diff": "pagkakaiba",
        "hist": "kasaysayan",
        "hide": "Itago",
        "special-characters-group-khmer": "Khmer",
        "mw-widgets-dateinput-placeholder-day": "TTTT-BB-AA",
        "mw-widgets-dateinput-placeholder-month": "TTTT-BB",
-       "randomrootpage": "Alin mang pinag-ugatang/pinagmulang pahina"
+       "date-range-from": "Mula sa petsang:",
+       "randomrootpage": "Alin mang pinag-ugatang/pinagmulang pahina",
+       "gotointerwiki-invalid": "Di-wasto ang tinukoy na pamagat."
 }
index b9f1bc2..ab7005d 100644 (file)
        "yourpasswordagain": "Пароли сәнибәтон гырдә карде:",
        "login": "Ыштәни едаштеј",
        "nav-login-createaccount": "Ыштәни едаштеј / ыштәни ғејд кардовнијеј",
-       "userlogin": "Ыштәни едаштеј / ыштәни ғејд кардовнијеј",
-       "userloginnocreate": "Ыштәни едаштеј",
        "logout": "Системәдә кој орохнијеј",
        "userlogout": "Системәдә кој орохнијеј",
        "notloggedin": "Ыштәни едаштәнијоне",
-       "nologin": "Иштирок кардәкәси сәһифә ни? '''$1'''.",
-       "nologinlink": "Иштирокәкә сәһифә офәје",
        "createaccount": "Нујә иштирокәкә ғејд кардеј",
-       "gotaccount": "Шымә ыштәни ғејд кардәјоне? $1.",
-       "gotaccountlink": "Ыштәни едаштеј",
-       "userlogin-resetlink": "Бә системә дәше мәлумоти јодәдә бекардәјоне?",
        "createaccountmail": "бә е-номә",
-       "createaccountreason": "Сәбәб:",
        "mailmypassword": "Нујә парол вығандеј бә Е-номә.",
        "loginlanguagelabel": "Зывон: $1",
        "pt-login": "Dəşi",
        "prefs-changeemail": "Е-номә дәгиш кардеј",
        "prefs-email": "Е-номә кукон",
        "saveprefs": "Огәтеј",
-       "rows": "Сәтырон:",
        "searchresultshead": "Нәве",
        "timezoneregion-america": "Америка",
        "timezoneregion-europe": "Авропа",
        "rcshowhideanons": "$1 әнәномә иштирокәкон",
        "rcshowhidepatr": "$1 осә кардә быә дәгишон",
        "rcshowhidemine": "$1 ыштә дәгишон",
-       "rclinks": "Нишо дој охонә $1 дәгишон бә охонәни $2 ружон<br />$3",
+       "rclinks": "Нишо дој охонә $1 дәгишон бә охонәни $2 ружон",
        "diff": "фәрғ.",
        "hist": "тарых",
        "hide": "Нијо кардеј",
index 812e34d..9c77dc6 100644 (file)
        "yourdomainname": "ho ngāueʻanga",
        "login": "Kau ki ai",
        "nav-login-createaccount": "Kau ki ai",
-       "userlogin": "Kau ki ai",
        "logout": "ʻAlu mamaʻo",
        "userlogout": "ʻAlu mamaʻo",
        "notloggedin": "ʻIkai kau-ki-ai",
-       "nologin": "Teʻeki maʻu haʻo tohi-kau-ki-ai? '''$1'''.",
-       "nologinlink": "Fakatupu hoʻo tohi-kau-ki-ai",
        "createaccount": "Fakatupu ʻa e tohi-kau-ki-ai",
-       "gotaccount": "ʻOsi maʻu ʻa e tohi-kau-ki-ai? '''$1'''.",
-       "gotaccountlink": "Kau ki ai",
        "createaccountmail": "ʻi he tohila",
        "badretype": "ʻOku kehe hoʻo ongo leatapu.",
        "loginerror": "Halaʻi kau-ki-ai",
        "editingsection": "ʻOku fatuʻi $1 (vahe)",
        "editingcomment": "ʻOku fatuʻi $1 (fakamatala foʻou)",
        "editconflict": "Fepaki fatu: $1",
-       "explainconflict": "Naʻe liliu ʻa e pēsí ni ʻe he ʻetita ʻe taha lolotonga he taimi kuo ke kamata hoʻo fatu.\nKo e konga ʻi olunga, ko e kupu ia he onopooni.\nKo e konga ʻi lalo, ko hoʻo ngaahi liliu ia.\nʻE pau te ke fakataha hoʻo liliu ʻi loto ʻo e kupu ʻoku tuʻu.\nKo e konga ʻi olunga, ko e '''konga pē ʻe taha''' ʻe haofaki ʻi he lomiʻi ʻo e meʻalolomi \"{{int:savearticle}}\".",
+       "explainconflict": "Naʻe liliu ʻa e pēsí ni ʻe he ʻetita ʻe taha lolotonga he taimi kuo ke kamata hoʻo fatu.\nKo e konga ʻi olunga, ko e kupu ia he onopooni.\nKo e konga ʻi lalo, ko hoʻo ngaahi liliu ia.\nʻE pau te ke fakataha hoʻo liliu ʻi loto ʻo e kupu ʻoku tuʻu.\nKo e konga ʻi olunga, ko e '''konga pē ʻe taha''' ʻe haofaki ʻi he lomiʻi ʻo e meʻalolomi \"$1\".",
        "yourtext": "tohi ʻaʻau",
        "storedversion": "Ko e paaki kuo tuku",
        "editingold": "'''FAKATOKANGA: ʻOku ke fatu ʻi he paaki fakaonoʻaho ʻo e pēsi. Kapau te ke haofaki ia, ʻe mole ʻa e ngaahi liliu kotoa talu mei ai.'''",
        "prefs-misc": "Kehekehe",
        "saveprefs": "Haofaki",
        "prefs-editing": "ʻOku fatu",
-       "rows": "Ngaahi ʻotu:",
-       "columns": "Vahaʻa laini:",
        "searchresultshead": "Kumi",
        "recentchangescount": "Ngaahi ʻuluʻitohi ʻoku ʻasi ʻi he toki liliu, hisitōlia peesi, mo e hokohoko:",
        "savedprefs": "Kuo haofaki hoʻo faʻiteliha.",
        "rcshowhideliu": "$1 kau ʻetita ʻoku kau-ki-ai",
        "rcshowhideanons": "$1 kau ʻetita taʻehingoa",
        "rcshowhidemine": "$1 fatu ʻaʻaku",
-       "rclinks": "ʻAsi mai ha liliu ʻe $1 lolotonga ha ʻaho ʻe $2 fakamuimui<br />$3",
+       "rclinks": "ʻAsi mai ha liliu ʻe $1 lolotonga ha ʻaho ʻe $2 fakamuimui",
        "diff": "kehe",
        "hist": "hisi",
        "hide": "Toi",
        "undeletebtn": "Fakafoki",
        "undeletelink": "fakafoki",
        "undeletecomment": "Fakamatala:",
-       "undeletedrevisions": "Kuo fakafoki ʻa e paaki ʻe $1",
-       "undeletedfiles": "Kuo fakafoki ʻa e faile ʻe $1",
        "cannotundelete": "Naʻe movete ʻa e taʻetāmateʻi; mahalo pē kuo taʻetāmateʻi ʻuluaki ia ʻe he ʻetita kehe.",
        "undeletedpage": "'''Kuo fakafoki ko e $1'''\n\nVakai ki he [[Special:Log/delete|hokohoko tāmateʻi]] ki he lekooti ʻo e ngaahi tāmateʻi mo e taʻetāmateʻi onopooni.",
        "namespace": "Vā hingoa:",
index bd0a335..5ab3d1f 100644 (file)
                        "Alikaan",
                        "By erdo can",
                        "1917 Ekim Devrimi",
-                       "Asmen"
+                       "Asmen",
+                       "Stephanecbisson",
+                       "Alerque",
+                       "Bulgu"
                ]
        },
        "tog-underline": "Bağlantıların altını çizme:",
        "anontalk": "Mesaj",
        "navigation": "Gezinti",
        "and": "&#32;ve",
-       "qbfind": "Bul",
-       "qbbrowse": "Gözat",
-       "qbedit": "Düzenle",
-       "qbpageoptions": "Bu sayfa",
-       "qbmyoptions": "Sayfalarım",
        "faq": "SSS",
-       "faqpage": "Project:SSS",
        "actions": "Eylemler",
        "namespaces": "Ad alanları",
        "variants": "Türevler",
        "edit-local": "Yerel açıklamayı düzenle",
        "create": "Oluştur",
        "create-local": "Yerel açıklama ekle",
-       "editthispage": "Bu sayfayı düzenle",
-       "create-this-page": "Bu sayfayı oluştur",
        "delete": "Sil",
-       "deletethispage": "Bu sayfayı sil",
-       "undeletethispage": "Bu sayfanın silme işlemini geri al",
        "undelete_short": "$1 değişikliği geri getir",
        "viewdeleted_short": "{{PLURAL:$1|bir silinmiş değişikliği|$1 silinmiş değişikliği}} görüntüle.",
        "protect": "Korumaya al",
        "protect_change": "değiştir",
-       "protectthispage": "Bu sayfayı koruma altına al",
        "unprotect": "Korumayı değiştir",
-       "unprotectthispage": "Bu sayfanın korumasını değiştir",
        "newpage": "Yeni sayfa",
-       "talkpage": "Tartışma sayfası",
        "talkpagelinktext": "mesaj",
        "specialpage": "Özel sayfa",
        "personaltools": "Kişisel araçlar",
-       "articlepage": "İçerik sayfasını gör",
        "talk": "Tartışma",
        "views": "Görünümler",
        "toolbox": "Araçlar",
        "tool-link-userrights": "{{GENDER:$1|Kullanıcı}} gruplarını değiştir",
        "tool-link-userrights-readonly": "{{GENDER:$1|Kullanıcı}} gruplarını gör",
        "tool-link-emailuser": "Bu {{GENDER:$1|kullanıcıya}} e-posta gönder",
-       "userpage": "Kullanıcı sayfasını görüntüle",
-       "projectpage": "Proje sayfasını görüntüle",
        "imagepage": "Dosya sayfasını görüntüle",
        "mediawikipage": "Mesaj sayfasını görüntüle",
        "templatepage": "Şablon sayfasını görüntüle",
        "redirectedfrom": "($1 sayfasından yönlendirildi)",
        "redirectpagesub": "Yönlendirme sayfası",
        "redirectto": "Şuraya yönlendir:",
-       "lastmodifiedat": "Bu sayfa son olarak $1 tarihinde ve $2 saatinde güncellenmiştir.",
+       "lastmodifiedat": "Bu sayfa son olarak $1 tarihinde ve $2 saatinde düzenlenmiştir.",
        "viewcount": "Bu sayfaya {{PLURAL:$1|bir|$1}} defa erişilmiş.",
        "protectedpage": "Korumalı sayfa",
        "jumpto": "Şuraya atla:",
        "disclaimerpage": "Project:Genel sorumluluk reddi",
        "edithelp": "Düzenleme yardımı",
        "helppage-top-gethelp": "Yardım",
-       "mainpage": "Ana Sayfa",
-       "mainpage-description": "Ana sayfa",
+       "mainpage": "Anasayfa",
+       "mainpage-description": "Anasayfa",
        "policy-url": "Project:Politika",
        "portal": "Topluluk portali",
        "portal-url": "Project:Topluluk portali",
        "nstab-template": "Şablon",
        "nstab-help": "Yardım sayfası",
        "nstab-category": "Kategori",
-       "mainpage-nstab": "Ana sayfa",
+       "mainpage-nstab": "Anasayfa",
        "nosuchaction": "Böyle bir eylem yok",
        "nosuchactiontext": "URL tarafından tanımlanan eylem geçersiz.\nURL'yi yanlış yazmış olabilir, ya da doğru olmayan bir bağlantıyı takip etmiş olabilirsiniz.\nBu, {{SITENAME}} sitesindeki bir hatayı da belirtebilir.",
        "nosuchspecialpage": "Böyle bir özel sayfa yok",
        "preview": "Önizleme",
        "showpreview": "Önizlemeyi göster",
        "showdiff": "Değişiklikleri göster",
-       "blankarticle": "<strong>Uyarı:</strong> Oluşturduğunuz sayfa boş.\nEğer \"{{int:savearticle}}\" düğmesine tekrar tıklarsanız, sayfa içerik olmadan oluşturulacaktır.",
+       "blankarticle": "<strong>Uyarı:</strong> Oluşturduğunuz sayfa boş.\nEğer \"$1\" düğmesine tekrar tıklarsanız, sayfa içerik olmadan oluşturulacaktır.",
        "anoneditwarning": "<strong>Uyarı:</strong> Giriş yapmadınız. Herhangi bir değişiklik yapmanız durumunda IP adresiniz herkese gözükecektir. Eğer <strong>[$1 giriş yaparsanız]</strong> veya <strong>[$2 bir hesap oluşturursanız]</strong>, edineceğiniz çeşitli yararların yanı sıra yaptığınız değişiklikler de kullanıcı adınıza atfedilecektir.",
        "anonpreviewwarning": "''Giriş yapmadınız. Kaydederseniz, sayfanın değişiklik geçmişine IP adresiniz yazılır.''",
        "missingsummary": "'''Uyarı:''' Herhangi bir özet yazmadın.\nKaydet tuşuna tekrar basarsan sayfa özetsiz kaydedilecek.",
-       "selfredirect": "<strong>Uyarı:</strong> Bu sayfanın kendisine yönlendirme vardır.\nYönlendirme için yanlış hedef belirtmiş olabilirsiniz, ya da yanlış sayfa düzenlemeye çalışmış olabilirsiniz.\n\n\"{{int:savearticle}}\" sayfasına tıklayarak, yönlendirmeyi zaten oluşturabilirsiniz.",
+       "selfredirect": "<strong>Uyarı:</strong> Bu sayfanın kendisine yönlendirme vardır.\nYönlendirme için yanlış hedef belirtmiş olabilirsiniz, ya da yanlış sayfa düzenlemeye çalışmış olabilirsiniz.\n\n\"$1\" sayfasına tıklayarak, yönlendirmeyi zaten oluşturabilirsiniz.",
        "missingcommenttext": "Lütfen aşağıda bir açıklama yazınız.",
        "missingcommentheader": "<strong>Hatırlatma:</strong> Bu yorum için bir konu girmediniz.\nEğer \"{{int: savearticle}}\" tuşuna tekrar basarsanız, değişikliğiniz konu olmadan kaydedilecektir.",
        "summary-preview": "Değişiklik özeti ön izlemesi:",
        "editing": "\"$1\" sayfasını değiştirmektesiniz",
        "creating": "$1 sayfasını oluşturuyorsunuz",
        "editingsection": "\"$1\" sayfasında bölüm değiştirmektesiniz",
-       "editingcomment": "$1 değiştiriliyor (yeni bölüm)",
+       "editingcomment": "$1 düzenleniyor (yeni bölüm)",
        "editconflict": "Değişiklik çakışması: $1",
-       "explainconflict": "Siz sayfayı değiştirirken başka biri de değişiklik yaptı.\nYukarıdaki yazı sayfanın şu anki halini göstermektedir.\nSizin değişiklikleriniz alta gösterilmiştir. Son değişiklerinizi yazının içine eklemeniz gerekecektir.\n\"{{int:savearticle}}\"e bastığınızda '''sadece''' yukarıdaki yazı kaydedilecektir.",
+       "explainconflict": "Siz sayfayı değiştirirken başka biri de değişiklik yaptı.\nYukarıdaki yazı sayfanın şu anki halini göstermektedir.\nSizin değişiklikleriniz alta gösterilmiştir. Son değişiklerinizi yazının içine eklemeniz gerekecektir.\n\"$1\"e bastığınızda '''sadece''' yukarıdaki yazı kaydedilecektir.",
        "yourtext": "Sizin metniniz",
        "storedversion": "Kaydedilmiş metin",
        "nonunicodebrowser": "'''UYARI: Tarayıcınız unicode uyumlu değil.\nSayfaları güvenle değiştirmenize izin vermek için: ASCII olmayan karakterler değiştirme kutusunda onaltılık kodlar olarak görünecektir.'''",
        "invalid-content-data": "Geçersiz içerik verisi",
        "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.\nEğer giriş yaptıysanız, bu uyarıyı, tercihlerinizin \"{{int:prefs-editing}}\" bölümünde devre dışı bırakabilirsiniz.",
+       "editpage-invalidcontentmodel-text": "\"$1\" içerik modeli desteklenmemektedir.",
        "editpage-notsupportedcontentformat-title": "İçerik biçimi desteklenmiyor",
        "editpage-notsupportedcontentformat-text": "$1 içerik biçimi $2 içerik modeli tarafından desteklenmiyor.",
        "content-model-wikitext": "vikimetin",
        "userrights-nodatabase": "$1 veritabanı mevcut veya bölgesel değil",
        "userrights-changeable-col": "Değiştirebildiğiniz gruplar",
        "userrights-unchangeable-col": "Değiştiremediğiniz gruplar",
+       "userrights-expiry-current": "$1 tarihi itibarıyla sona eriyor",
+       "userrights-expiry-none": "Süresiz",
+       "userrights-expiry": "Bitiş:",
+       "userrights-expiry-existing": "Mevcut bitiş süresi: $2 $3",
+       "userrights-expiry-othertime": "Diğer süre:",
+       "userrights-expiry-options": "1 gün:1 day,1 hafta:1 week,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 yıl:1 year",
+       "userrights-expiry-in-past": "\"$1\" grubunun bitiş süresi geçmişte.",
        "userrights-conflict": "Kullanıcı hakları değişikliklerinde çakışma! Lütfen değişikliklerinizi gözden geçirin ve onaylayın.",
        "group": "Grup:",
        "group-user": "Kullanıcılar",
        "rcfilters-filter-unregistered-label": "Kayıtsız",
        "rcfilters-filter-unregistered-description": "Oturum açmamış editörler.",
        "rcfilters-filtergroup-authorship": "Düzenleme sahipliği",
-       "rcfilters-filter-editsbyself-label": "Kendi düzenlemeleriniz",
-       "rcfilters-filter-editsbyself-description": "Sizin düzenlemeleriniz.",
+       "rcfilters-filter-editsbyself-label": "Senin değişiklikleriniz",
+       "rcfilters-filter-editsbyself-description": "Kendi katkılarınız.",
        "rcfilters-filter-editsbyother-label": "Başkalarının düzenlemeleri",
-       "rcfilters-filter-editsbyother-description": "Başka kullanıcılar tarafından oluşturulan düzenlemeler (sizin değil).",
+       "rcfilters-filter-editsbyother-description": "Kendi düzenlemeleriniz hariç bütün düzenlemeler.",
        "rcfilters-filtergroup-userExpLevel": "Deneyim düzeyi (yalnızca kayıtlı kullanıcılar için)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Bu süzgeç etkin değildir, çünkü yalnızca kayıtlı kullanıcıları bulmaktadır, yani \"Kayıtsız\" süzgeci etkisini ortadan kaldırmaktadır.",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"Kayıtsız\" süzgeci bir veya daha fazla Deneyim süzgeciyle çakışmaktadır. Deneyim süzgeçleri yalnızca kayıtlı kullanıcıları bulmaktadır. Çakışan süzgeçler yukarıda etkin değil şeklinde işaretlenmiştir.",
        "rcshowhidecategorization": "sayfa kategorizasyonunu $1",
        "rcshowhidecategorization-show": "göster",
        "rcshowhidecategorization-hide": "gizle",
-       "rclinks": "Son $2 günde yapılan son $1 değişikliği göster;<br /> $3",
+       "rclinks": "Son $2 günde yapılan son $1 değişikliği göster",
        "diff": "fark",
        "hist": "geçmiş",
        "hide": "gizle",
        "pageswithprop-submit": "Git",
        "pageswithprop-prophidden-long": "uzun metin özellik değeri gizlendi ($1)",
        "pageswithprop-prophidden-binary": "ikili özellik değeri gizlendi ($1)",
-       "doubleredirects": "Çift yönlendirmeler",
+       "doubleredirects": "Yönlendirmeye olan yönlendirmeler",
        "doubleredirectstext": "Bu sayfa diğer yönlendirme sayfalarına yönlendirme yapan sayfaları listeler.\nHer satırın içerdiği bağlantılar; birinci ve ikinci yönlendirme, ayrıca ikinci yönlendirmenin hedefi, ki bu genelde birinci yönlendirmenin göstermesi gereken \"gerçek\" hedef sayfasıdır.\n<del>Üstü çizili</del> girdiler çözülmüştür.",
        "double-redirect-fixed-move": "[[$1]] taşındı.\nYönlendirme otomatik olarak güncellendi ve [[$2]] sayfasına yönlendirildi.",
        "double-redirect-fixed-maintenance": "[[$1]] sayfasından [[$2]] sayfasına yapılan çift yönlendirme otomatik olarak düzeltiliyor.",
        "activeusers-intro": "Bu, son $1 {{PLURAL:$1|günde|günde}} bir çeşit etkinlik göstermiş kullanıcıların listesidir.",
        "activeusers-count": "Son {{PLURAL:$3|günde|$3 günde}} $1 {{PLURAL:$1|eylem|eylem}}",
        "activeusers-from": "Şununla başlayan kullanıcıları görüntüle:",
+       "activeusers-groups": "Gruplara ait kullanıcıları göster:",
+       "activeusers-excludegroups": "Gruplara ait kullanıcıları hariç tut:",
        "activeusers-noresult": "Kullanıcı bulunamadı.",
+       "activeusers-submit": "Aktif kullanıcıları göster",
        "listgrouprights": "Kullanıcı grubu hakları",
        "listgrouprights-summary": "Aşağıdaki bu vikide tanımlanan kullanıcı gruplarının, ilgili erişim haklarıyla birlikte listesidir.\nBireysel haklarla ilgili [[{{MediaWiki:Listgrouprights-helppage}}|daha fazla bilgi]] olabilir.",
        "listgrouprights-key": "Yetki:\n* <span class=\"listgrouprights-granted\">Verilen yetki</span>\n* <span class=\"listgrouprights-revoked\">Alınan yetki</span>",
        "listgrouprights-namespaceprotection-namespace": "Ad alanı",
        "listgrouprights-namespaceprotection-restrictedto": "Kullanıcının değişiklik yapmasına izin veren hak(lar)",
        "listgrants-rights": "Haklar",
-       "trackingcategories": "Eşleşen kategoriler",
+       "trackingcategories": "Takip kategorileri",
        "trackingcategories-summary": "Bu sayfa MediaWiki yazılımı tarafından otomatik olarak doldurulan takip kategorilerini listelemektedir. {{ns:8}} ad alanındaki ilgili sistem mesajları değiştirilerek isimleri düzenlenebilir.",
        "trackingcategories-msg": "İzleme kategorisi",
        "trackingcategories-name": "Mesaj Duvarı",
        "emailuser-title-target": "Bu {{GENDER:$1|kullanıcıya}} e-posta gönder",
        "emailuser-title-notarget": "Kullanıcı e-posta",
        "emailpagetext": "Bu {{GENDER:$1|kullanıcıya}} e-posta iletisi göndermek için aşağıdaki formu kullanabilirsiniz.\n[[Special:Preferences|Kullanıcı tercihlerinizde]] girdiğiniz e-posta adresiniz, e-postanın \"From (Kimden)\" adresinde görünecektir, bu yüzden alıcı size doğrudan yanıt verebilecektir.",
-       "defemailsubject": "\"$1\" kullanıcısından {{SITENAME}} e-postası",
+       "defemailsubject": "\"$1\" adlı kullanıcıdan {{SITENAME}} e-postası",
        "usermaildisabled": "Kullanıcı e-postası devre dışı",
        "usermaildisabledtext": "Bu vikide diğer kullanıcılara e-posta gönderemezsiniz",
        "noemailtitle": "e-posta adresi yok",
        "addedwatchtext": "\"[[:$1]]\" sayfası [[Special:Watchlist|izleme listenize]] eklenmiştir.\nBundan sonra, bu sayfaya ve ilgili tartışma sayfasına yapılacak değişiklikler burada listelenecek.",
        "addedwatchtext-short": "\"$1\" sayfası izleme listenize eklendi.",
        "removewatch": "İzleme listesinden kaldır",
-       "removedwatchtext": "\"[[:$1]]\" sayfası [[Special:Watchlist|izleme listenizden]] silinmiştir.",
+       "removedwatchtext": "\"[[:$1]]\" sayfası, tartışma sayfası ile birlikte [[Special:Watchlist|izleme listenizden]] silinmiştir.",
        "removedwatchtext-short": "\"$1\" sayfası izleme listenizden çıkarıldı.",
        "watch": "izle",
        "watchthispage": "Sayfayı izle",
        "undeletepagetext": "Aşağıdaki {{PLURAL:$1|sayfa|$1 sayfa}} silinmiştir ama hala arşivdedir ve geri getirilebilir.\nArşiv düzenli olarak temizlenebilir.",
        "undelete-fieldset-title": "Revizyonları geri yükle",
        "undeleteextrahelp": "Sayfanın tüm geçmişini geri getirmek için onay kutularını boş bırakarak '''''{{int:undeletebtn}}''''' tuşuna tıklayın.\nSayfanın geçmişini ayrı ayrı getirmek için geri getirmek istediğiniz değişikliklerin onay kutularını seçip '''''{{int:undeletebtn}}''''' tuşuna tıklayın.",
-       "undeleterevisions": "$1 {{PLURAL:$1|revizyon|revizyon}} arşivlendi",
+       "undeleterevisions": "$1 revizyon silindi",
        "undeletehistory": "Eğer sayfayı geri getirirseniz, tüm revizyonlar geçmişe geri getirilecektir.\nSilindikten sonra aynı isimle yeni bir sayfa oluşturulmuşsa, geri gelen revizyonlar varolan sayfanın geçmişinde görünecektir.",
        "undeleterevdel": "Eğer üst sayfada sonuçlanacaksa ya da dosya revizyonu kısmen silinmiş ise, silmeyi geri alma uygulanamaz.\nBöyle durumlarda, en yeni silinen revizyonu seçmemeli ya da gizlemesini kaldırmalısınız.",
        "undeletehistorynoadmin": "Bu madde silinmiştir. Silinme sebebi ve silinme öncesinde maddeyi düzenleyen kullanıcıların detayları aşağıdaki özette verilmiştir. Bu silinmiş sürümlerin metinleri ise sadece hizmetliler tarafından görülebilir.",
        "unblocked": "[[User:$1|$1]] - engelleme kaldırıldı",
        "unblocked-range": "$1 adlı kullanıcının engeli kaldırıldı.",
        "unblocked-id": "$1 engeli çıkarıldı",
-       "unblocked-ip": "[[Special:Contributions/$1|$1]] engellenmiştir.",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]] adlı kullanıcının engeli kaldırıldı.",
        "blocklist": "Engellenmiş kullanıcılar",
        "ipblocklist": "Engellenmiş kullanıcılar",
        "ipblocklist-legend": "Engellenen kullanıcı ara",
        "expiringblock": "$1 $2 tarihinde doluyor",
        "anononlyblock": "yalnızca anonim",
        "noautoblockblock": "otomatik engelleme devre dışı bırakıldı",
-       "createaccountblock": "hesap açımı engellendi",
+       "createaccountblock": "hesap oluşturma devre dışı bırakıldı",
        "emailblock": "e-posta engellendi",
        "blocklist-nousertalk": "kendi mesaj sayfasını değiştiremez",
        "ipblocklist-empty": "Engelleme listesi boş.",
        "blocklogtext": "Bu, kullanıcı engelleme ve engel kaldırma işlemlerinin bir günlüğüdür.\nOtomatik olarak engellenen IP adresleri listelenmemiştir.\nŞu anda geçerli yasaklama ve engellemelerin listesi için [[Special:BlockList|engelleme listesi]]ne bakın.",
        "unblocklogentry": ", $1 adlı kullanıcının engellemesini kaldırdı",
        "block-log-flags-anononly": "sadece anonim kullanıcılar",
-       "block-log-flags-nocreate": "hesap yaratımı engellendi",
+       "block-log-flags-nocreate": "hesap oluşturma devre dışı bırakıldı",
        "block-log-flags-noautoblock": "Otomatik engelleme iptal edildi",
        "block-log-flags-noemail": "e-posta engellendi",
        "block-log-flags-nousertalk": "kendi mesaj sayfasını değiştiremez",
        "tooltip-pt-watchlist": "Değişiklikler için izlemeye aldığınız sayfaların listesi",
        "tooltip-pt-mycontris": "{{GENDER:|Katkılarınızın}} listesi",
        "tooltip-pt-anoncontribs": "Bu IP adresinden yapılmış değişiklikler listesi",
-       "tooltip-pt-login": "Oturum açmanız tavsiye edilmektedir; ancak bu zorunda değildir",
+       "tooltip-pt-login": "Oturum açmanız tavsiye edilmektedir; ancak bu zorunlu değildir",
        "tooltip-pt-logout": "Sistemden çık",
        "tooltip-pt-createaccount": "Bir hesap oluşturup oturum açmanız tavsiye edilmektedir ancak bu zorunlu değildir",
        "tooltip-ca-talk": "İçerik ile ilgili tartışma",
        "tooltip-search": "{{SITENAME}} içinde ara",
        "tooltip-search-go": "Eğer varsa, aynı isimli sayfaya gidin",
        "tooltip-search-fulltext": "Sayfalarda bu metni ara",
-       "tooltip-p-logo": "Ana sayfayı ziyaret edin",
+       "tooltip-p-logo": "Anasayfayı ziyaret edin",
        "tooltip-n-mainpage": "Ana sayfaya git",
-       "tooltip-n-mainpage-description": "Ana sayfaya git",
+       "tooltip-n-mainpage-description": "Anasayfayı ziyaret et",
        "tooltip-n-portal": "Proje hakkında, neler yapabilirsiniz, ne nerdedir",
        "tooltip-n-currentevents": "Güncel olaylarla ilgili son bilgiler",
        "tooltip-n-recentchanges": "Vikide yapılmış son değişikliklerin listesi",
        "scarytranscludefailed-httpstatus": "[$1 için şablon alımı başarısız oldu: HTTP $2]",
        "scarytranscludetoolong": "[URL çok uzun]",
        "deletedwhileediting": "'''Uyarı''': Bu sayfa siz değişiklik yapmaya başladıktan sonra silinmiş!",
-       "confirmrecreate": "Bu sayfayı [[User:$1|$1]] ([[User talk:$1|mesaj]]) kullanıcısı siz sayfada değişiklik yaparken silmiştir, nedeni:\n: ''$2''\nSayfayı baştan açmak isityorsanız, lütfen onaylayın.",
+       "confirmrecreate": "Bu sayfayı [[User:$1|$1]] ([[User talk:$1|mesaj]]) kullanıcısı siz sayfada değişiklik yaparken silmiştir, nedeni:\n: ''$2''\nSayfayı baştan açmak istiyorsanız, lütfen onaylayın.",
        "confirmrecreate-noreason": "[[User:$1|$1]] ([[User talk:$1|mesaj]]) adlı kullanıcı, siz değişiklik yapmaya başladıktan sonra bu sayfayı sildi. Lütfen bu sayfayı gerçekten yeniden oluşturmak istediğinizi onaylayın.",
        "recreate": "Canlandır",
        "unit-pixel": "px",
+       "confirm-purge-title": "Bu sayfayı temizle",
        "confirm_purge_button": "Tamam",
        "confirm-purge-top": "Sayfa önbelleği temizlensin mi?",
        "confirm-purge-bottom": "Sayfa temizleme işlemi önbelleğin temizlenmesini sağlar ve güncel sürümü görünmeye zorlar.",
        "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-byemail": "$3 kullanıcı hesabı $1 tarafından {{GENDER:$2|oluşturuldu}} ve parola e-posta ile gönderildi",
        "logentry-newusers-autocreate": "$1 kullanıcı hesabı otomatik olarak {{GENDER:$2|oluşturuldu}}",
-       "logentry-protect-unprotect": "$1, $3 sayfasının korumasını {{GENDER:$2|kaldırdı}}",
+       "logentry-protect-move_prot": "$1, koruma ayarlarını $4 adlı sayfadan $3 adlı sayfaya {{GENDER:$2|taşıdı}}",
+       "logentry-protect-unprotect": "$1, $3 adlı sayfanın korumasını {{GENDER:$2|kaldırdı}}",
+       "logentry-protect-protect": "$1, $3 adlı sayfayı {{GENDER:$2|korumaya aldı}} $4",
+       "logentry-protect-protect-cascade": "$1, $3 adlı sayfayı {{GENDER:$2|korumaya aldı}} $4 [kademeli]",
+       "logentry-protect-modify": "$1, $3 adlı sayfa için koruma düzeyini {{GENDER:$2|değiştirdi}} $4",
+       "logentry-protect-modify-cascade": "$1, $3 adlı sayfa için koruma düzeyini {{GENDER:$2|değiştirdi}} $4 [kademeli]",
        "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}}",
        "logentry-tag-update-revision": "$1, $3 sayfasının $4 numaralı sürümündeki etiketleri  {{GENDER:$2|güncelledi}}. Eklenen {{PLURAL:$7|etiket|etiket}}: $6; kaldırılan {{PLURAL:$9|etiket|etiket}}: $8",
        "logentry-tag-update-logentry": "$1, $3 sayfasının $5 numaralı günlük kaydındaki etiketleri {{GENDER:$2|güncelledi}}. Eklenen {{PLURAL:$7|etiket|etiket}}: $6; kaldırılan {{PLURAL:$9|etiket|etiket}}: $8",
        "rightsnone": "(hiçbiri)",
+       "rightslogentry-temporary-group": "$1 ($3 günü $4 saatine kadar geçici)",
        "feedback-adding": "Sayfaya geribildirim ekleniyor...",
        "feedback-back": "Geri",
        "feedback-bugcheck": "Harika! Sadece [bilinen $1 hatalarından] olmadığını kontrol et.",
        "mw-widgets-mediasearch-noresults": "Sonuç bulunamadı.",
        "mw-widgets-titleinput-description-new-page": "sayfa henüz mevcut değil",
        "mw-widgets-titleinput-description-redirect": "$1'e yönlendirildi",
+       "mw-widgets-categoryselector-add-category-placeholder": "Bir kategori ekle...",
+       "date-range-from": "Şu tarihten:",
+       "date-range-to": "Bu güne kadar:",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "çerez tabanlı oturumlar",
        "sessionprovider-nocookies": "Çerezler devre dışı olabilir. Çerkezlerin aktif olduğuna emin olun ve yeniden başlatin.",
        "randomrootpage": "Rastgele kök sayfası",
        "log-action-filter-block": "Blok türü:",
        "log-action-filter-delete": "Silme türü:",
+       "log-action-filter-newusers": "Hesap oluşturma türü:",
        "log-action-filter-patrol": "Devriye türü:",
        "log-action-filter-protect": "Koruma tipi:",
        "log-action-filter-rights": "Hak türü seçimi:",
index a32a979..3af41fc 100644 (file)
        "yourpasswordagain": "Naqla ḥreto kṭaw uQliḍo:",
        "login": "3bar",
        "nav-login-createaccount": "3bar / Hway Hadomo",
-       "userlogin": "3bar / Hway Hadomo",
-       "userloginnocreate": "3bar",
        "logout": "Nfoqo",
        "userlogout": "Nfoqo",
        "notloggedin": "Heş lo3abirat.",
-       "nologin": "Heş lawit Hadomo? $1",
-       "nologinlink": "Hway Hadomo",
        "createaccount": "Hway Hadomo",
-       "gotaccount": "Ma hawit ste Hadomo? $1",
-       "gotaccountlink": "3bar",
-       "userlogin-resetlink": "Ṫa³at uQliḍayḍox?",
        "createaccountmail": "buEmail",
        "wrongpassword": "uQliḍayḍux fawdo yo.\nMjarab Naqla ḥreto.",
        "wrongpasswordempty": "Lo msta³melux uQliḍayḍux.\nMjarab Naqla ḥreto.",
        "rcshowhideanons": "$1 Hadomo nuxroyo",
        "rcshowhidepatr": "$1 patrolled edits",
        "rcshowhidemine": "aMaṫwoṭayḍi ($1)",
-       "rclinks": "Maḥway li $1 aŞuḥlofe ḥaroye men meqım $2 Yawme hul u³do. <br />$3",
+       "rclinks": "Maḥway li $1 aŞuḥlofe ḥaroye men meqım $2 Yawme hul u³do.",
        "diff": "Frişuṭo",
        "hist": "Maktabzabno",
        "hide": "Tlay",
index 6d971d5..fb9184f 100644 (file)
        "yourpasswordagain": "Thlela u hoxa ritompfungulo ra wena:",
        "login": "Pfula u nghena",
        "nav-login-createaccount": "Pfula unghena / Tumbuluxa akhawunti",
-       "userlogin": "Pfula unghena / Tumbuluxa akhawunti",
-       "userloginnocreate": "Pfula unghena",
        "logout": "Pfala u famba",
        "userlogout": "Pfala u famba",
        "notloggedin": "A wusipfula unghena",
-       "nologin": "Xana upfumala akhawunti? $1.",
-       "nologinlink": "Tumbuluxa akhawunti",
        "createaccount": "Tumbuluxa akhawunti",
-       "gotaccount": "Xna una akhawunti hi khale? $1.",
-       "gotaccountlink": "Pfula unghena",
-       "userlogin-resetlink": "Xana u rivele vuxokoxoko bya wena byo pfula unghena?",
-       "createaccountreason": "Xivangelo:",
        "loginsuccess": "'''Ule ndzeni ka {{SITENAME}} tani hi \"$1\".'''",
        "mailmypassword": "Rhumela vito-mpfungulo lerintwsa",
        "loginlanguagelabel": "Ririmi: $1",
        "rcshowhideanons": "$1 wa vatirhisi lava tumbeleke",
        "rcshowhidepatr": "$1 mundzulamiso leyi languteriweke",
        "rcshowhidemine": "$1 wa mindzulamiso ya mina",
-       "rclinks": "Kumba $1 ya ku cinca eka $2 wa masiku lamahundzeke<br />$3",
+       "rclinks": "Kumba $1 ya ku cinca eka $2 wa masiku lamahundzeke",
        "diff": "Hamban",
        "hist": "Matimu",
        "hide": "Tumbeta",
index b7a3ed0..e771d78 100644 (file)
        "anontalk": "Бәхәс",
        "navigation": "Навигация",
        "and": "&#32;һәм",
-       "qbfind": "Эзләү",
-       "qbbrowse": "Карау",
-       "qbedit": "Үзгәртү",
-       "qbpageoptions": "Бу бит",
-       "qbmyoptions": "Битләрем",
        "faq": "ЕБС",
-       "faqpage": "Project:ЕБС",
        "actions": "Гамәлләр",
        "namespaces": "Исемнәр мәйданы",
        "variants": "Вариантлар",
        "edit-local": "Локаль тасвирламаны үзгәртү",
        "create": "Төзү",
        "create-local": "Локаль тасвирлама өстәү",
-       "editthispage": "Бу битне үзгәртү",
-       "create-this-page": "Бу битне төзү",
        "delete": "Бетерү",
-       "deletethispage": "Бу битне бетерү",
-       "undeletethispage": "Бу битне кайтару",
        "undelete_short": "$1 {{PLURAL:$1|төзәтмәне|$1 төзәтмә}} торгызу",
        "viewdeleted_short": "{{PLURAL:$1|1=1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}} карау\n{{PLURAL:$1|бетерелгән төзәтмәне|$1 бетерелгән төзәтмәне}} карау",
        "protect": "Яклау",
        "protect_change": "үзгәртү",
-       "protectthispage": "Бу битне яклау",
        "unprotect": "Яклауны үзгәртү",
-       "unprotectthispage": "Бу битнең яклауын үзгәртү",
        "newpage": "Яңа бит",
-       "talkpage": "Бит турында фикер алышу",
        "talkpagelinktext": "бәхәс",
        "specialpage": "Махсус бит",
        "personaltools": "Шәхси кораллар",
-       "articlepage": "Мәкаләне карау",
        "talk": "Бәхәс",
        "views": "Караулар",
        "toolbox": "Кораллар",
        "tool-link-userrights": "{{GENDER:$1|Кулланучының}} төркемнәрен алмаштыру",
        "tool-link-userrights-readonly": "{{GENDER:$1|Кулланучының}} төркемнәрен карау",
        "tool-link-emailuser": "{{GENDER:$1|Кулланучыга}} хат язу",
-       "userpage": "Кулланучы битен карау",
-       "projectpage": "Проект битен карау",
        "imagepage": "Файл битен карау",
        "mediawikipage": "Хәбәр битен карау",
        "templatepage": "Үрнәк битен карау",
        "redirectedfrom": "($1 битеннән юнәлтелде)",
        "redirectpagesub": "Башка биткә юнәлтү бите",
        "redirectto": "Шунда юнәлтелә:",
-       "lastmodifiedat": "Бу битне соңгы үзгәртү: $2, $1.",
+       "lastmodifiedat": "Бу бит соңгы тапкыр $2 $1 үзгәртелә.",
        "viewcount": "Бу биткә $1 {{PLURAL:$1|бер тапкыр|$1 тапкыр}} мөрәҗәгать иттеләр.",
        "protectedpage": "Якланган бит",
        "jumpto": "Моңа күчү:",
        "createacct-yourpasswordagain-ph": "Серсүзне кабаттан кертегез",
        "userlogin-remembermypassword": "Системада калырга",
        "userlogin-signwithsecure": "Якланган кушылу",
-       "yourdomainname": "Сезнең Ð´оменыгыз:",
+       "yourdomainname": "Ð\94оменыгыз:",
        "password-change-forbidden": "Сез бу викидә серсүзне үзгәртә алмыйсыз.",
        "externaldberror": "Тышкы мәгълүмат базасы ярдәмендә аутентификация үткәндә хата чыкты, яисә тышкы хисап язмагызга үзгәрешләр кертү хокукыгыз юк.",
        "login": "Керү",
        "anonpreviewwarning": "''Сез системада теркәлмәдегез.Сезнең тарафтан эшләнгән барлык үзгәртүләр дә сезнең IP-юлламагызны саклауга китерә.''",
        "missingsummary": "'''Искәртү.''' Сез үзгәртүгә кыскача тасвирлау язмадыгыз. Сез «Битне саклау» төймәсенә тагын бер тапкыр бассагыз, үзгәртүләр тасвирламасыз сакланачак.",
        "missingcommenttext": "Аска тасвирлама язуыгыз сорала.",
-       "missingcommentheader": "<strong>Искәртү:</strong> Сез шәрехнең темасын күрсәтмәгәнсез.\n«{{int:savearticle}}» төймәсенә кабат бассагыз, үзгәртүләр темасыз язылачак.",
-       "summary-preview": "Тасвирламаны алдан карау:",
-       "subject-preview": "Башисем шушындый булачак:",
+       "missingcommentheader": "<strong>Искәртү:</strong> Сез шәрехнең темасын күрсәтмәгәнсез.\n«$1» төймәсенә кабат бассагыз, үзгәртүләр темасыз язылачак.",
+       "summary-preview": "Төзәтмәләрне карап чыгу:",
+       "subject-preview": "Башисемне алдан карау:",
        "blockedtitle": "Кулланучы тыелды",
        "blockedtext": "'''Сезнең хисап язмагыз яки IP адресыгыз тыелган.'''\n\nТыючы идарәче: $1.\nКүрсәтелгән сәбәп: ''$2''.\n\n* Тыю башланган вакыт: $8\n* Тыю ахыры: $6\n* Тыелулар саны: $7\n\nСез $1 яки башка [[{{MediaWiki:Grouppage-sysop}}|идарәчегә]] тыю буенча сорауларыгызны җибәрә аласыз.\nИсегездә тотыгыз: әгәр сез теркәлмәгән һәм электрон почта адресыгызны дәлилләмәгән булсагыз ([[Special:Preferences|дәлилләү өчен шәхси көйләүләр монда]]), идарәчегә хат җибәрә алмыйсыз. Шулай ук тыю вакытында сезнең хат җибәрү мөмкинлегегезне чикләгән булырга да мөмкиннәр.\nСезнең IP адресы — $3, тыю идентификаторы — #$5.\nХатларда бу мәгълүматны күрсәтергә онытмагыз.",
        "autoblockedtext": "Сезнең IP адресыгыз, аның тыелган кулланучы тарафыннан кулланылуы сәбәпле, автомат рәвештә тыелды.\nУл кулланучыны тыючы идарәче: $1. Күрсәтелгән сәбәп:\n\n:''$2''\n\n* Тыю башланган вакыт: $8\n* Тыю ахыры: $6\n* Тыелулар саны: $7\n\nСез $1 яки башка [[{{MediaWiki:Grouppage-sysop}}|идарәчегә]] тыю буенча сорауларыгызны җибәрә аласыз.\nИсегездә тотыгыз: әгәр сез теркәлмәгән һәм электрон почта адресыгызны дәлилләмәгән булсагыз ([[Special:Preferences|дәлилләү өчен шәхси көйләүләр монда]]), идарәчегә хат җибәрә алмыйсыз. Шулай ук тыю вакытында сезнең хат җибәрү мөмкинлегегезне чикләгән булырга да мөмкиннәр.\nСезнең IP адресы — $3, тыю идентификаторы — #$5.\nХатларда бу мәгълүматны күрсәтергә онытмагыз.",
        "editingsection": "«$1» битендә бүлек үзгәртүе",
        "editingcomment": "«$1» битен үзгәртү (яңа бүлек)",
        "editconflict": "Үзгәртү конфликты: $1",
-       "explainconflict": "Сез бу битне төзәткән вакытта кемдер аңа үзгәрешләр кертте.\nӨстәге тәрәзәдә Сез хәзерге текстны күрәсез.\nАстагы тәрәзәдә Сезнең вариант урнашкан.\nЭшләгән үзгәртүләрегезне астагы тәрәзәдән өстәгенә күчерегез.\n«{{int:savearticle}}» төймәсенә баскач өстәге битнең тексты сакланаячак.",
+       "explainconflict": "Сез бу битне төзәткән вакытта кемдер аңа үзгәрешләр кертте.\nӨстәге тәрәзәдә Сез хәзерге текстны күрәсез.\nАстагы тәрәзәдә Сезнең вариант урнашкан.\nЭшләгән үзгәртүләрегезне астагы тәрәзәдән өстәгенә күчерегез.\n«$1» төймәсенә баскач өстәге битнең тексты сакланаячак.",
        "yourtext": "Сезнең текст",
        "storedversion": "Сакланган юрама",
        "nonunicodebrowser": "'''Кисәтү: Сезнең браузер Юникод кодлавын танымый.'''\nҮзгәртү вакытында ASCII булмаган символлар махсус уналтылы кодларга алыштырылачак.",
        "page_first": "беренче",
        "page_last": "соңгы",
        "histlegend": "Аңлатмалар: '''({{int:cur}})''' = хәзерге юрамадан аерымлыклар, '''({{int:last}})''' = баягы юрамадан аерымлыклар, '''{{int:minoreditletter}}''' = кече үзгәртүләр.",
-       "history-fieldset-title": "Тарихын карау",
-       "history-show-deleted": "Бары тик бетерү",
+       "history-fieldset-title": "Үзгәртүләрне эзләү",
+       "history-show-deleted": "Бары тик бетерелгән төзәтмәләр",
        "histfirst": "иң иске",
        "histlast": "иң яңа",
        "historysize": "($1 {{PLURAL:$1|байт}})",
        "search-category": "($1 категориясе)",
        "search-file-match": "(файл эчтәлеге белән туры килә)",
        "search-suggest": "Бәлки, сез моны эзлисез: $1",
-       "search-interwiki-caption": "Тугандаш проектлар",
+       "search-interwiki-caption": "Тугандаш проектлар нәтиҗәсе",
        "search-interwiki-default": "$1 нәтиҗә:",
        "search-interwiki-more": "(тагын)",
        "search-relatedarticle": "Бәйле",
        "prefs-displaywatchlist": "Күрсәтү көйләнмәләре",
        "prefs-tokenwatchlist": "Токен",
        "prefs-diffs": "Юрамалар аермасы",
-       "userrights": "Кулланучы хокуклары белән идарә итү",
+       "userrights": "Кулланучы хокуклары",
        "userrights-lookup-user": "Кулланучыны сайлау",
        "userrights-user-editname": "Кулланучының исемен кертегез:",
        "editusergroup": "Кулланучының төркемнәрен кую",
        "editinguser": "{{GENDER:$1|Кулланучы}} <strong>[[User:$1|$1]]</strong> $2 хокукларын үзгәртү",
-       "userrights-editusergroup": "Кулланучының төркемнәрен алмаштыру",
+       "userrights-editusergroup": " {{GENDER:$1|Кулланучының}} төркемнәрен алмаштыру",
        "saveusergroups": "{{GENDER:$1|Кулланучы}} төркемнәрен саклау",
        "userrights-groupsmember": "Әгъза:",
        "userrights-groupsmember-auto": "Билгесез әгъза:",
        "right-delete": "битләрне бетерү",
        "right-browsearchive": "Бетерелгән битләрне эзләү",
        "right-undelete": "Битләрне торгызу",
+       "right-suppressionlog": "Шәхси журналларны карау",
        "right-editinterface": "Кулланучы интерфейсын үзгәртү",
        "grant-group-email": "Хатлар җибәрү",
        "grant-uploadfile": "Яңа файллар йөкләү",
        "recentchanges-legend-heading": "<strong>Аңлатма:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (шулай ук [[Special:NewPages|яңа битләр исемлеген]] карагыз)",
        "recentchanges-submit": "Күрсәт",
+       "rcfilters-quickfilters": "Сакланган филтр көйләнмәләре",
+       "rcfilters-clear-all-filters": "Барлык филтерләрне чистарту",
+       "rcfilters-filter-registered-label": "Теркәлгән",
+       "rcfilters-filter-registered-description": "Теркәлгән мөхәррирләр.",
+       "rcfilters-filter-user-experience-level-experienced-label": "Тәҗрибәле кулланучылар",
+       "rcfilters-filter-humans-label": "Кеше (бот түгел)",
+       "rcfilters-filter-minor-description": "«Кече үзгәртү» дип тамгаланган үзгәртүләр",
+       "rcfilters-filter-pageedits-label": "Бит үзгәртүләре",
+       "rcfilters-filter-newpages-label": "Бит төзүләре",
+       "rcfilters-filter-logactions-label": "Беркетмәләнүче гамәлләр",
+       "rcfilters-filter-logactions-description": "Административ гамәлләр, хисап язмасын төзүләр, битне бетерүләр, файл йөкләүләр...",
        "rcnotefrom": "Астарак <strong>$3, $4</strong> өчен {{PLURAL:$5|үзгәртүләр күрсәтелгән}} (<strong>$1</strong> артык түгел).",
        "rclistfrom": "$3 $2 башлап яңа үзгәртүләрне күрсәт",
        "rcshowhideminor": "кече үзгәртүләрне $1",
        "rcshowhidecategorization": "битләрне төркемләүне $1",
        "rcshowhidecategorization-show": "Күрсәт",
        "rcshowhidecategorization-hide": "Яшер",
-       "rclinks": "Соңгы $2 көн эчендә ясалган $1 үзгәртүне күрсәт<br />$3",
+       "rclinks": "Соңгы $2 көн эчендә ясалган $1 үзгәртүне күрсәт",
        "diff": "аерма",
        "hist": "тарих",
        "hide": "Яшер",
        "special-characters-group-thai": "Тай",
        "special-characters-group-lao": "Лаос",
        "special-characters-group-khmer": "Кһмер",
+       "special-characters-group-canadianaboriginal": "Канада иҗек язуы",
        "log-action-filter-all": "Барысы",
        "log-action-filter-block-block": "Тыю",
        "authmanager-email-label": "Электрон почта",
index 8e77204..ce1929b 100644 (file)
        "externaldberror": "Tışqı mäğlümat bazası yärdämendä awtentifikatsiä ütkändä xata çıqtı, yäisä tışqı xisap yazmağızğa üzgäreşlär kertü xoquqığız yuq.",
        "login": "Kerü",
        "nav-login-createaccount": "Kerü / terkälü",
-       "userlogin": "Kerü / terkälü",
-       "userloginnocreate": "Kerü",
        "logout": "Çığu",
        "userlogout": "Çığu",
        "notloggedin": "Sez xisap yazmağızğa kermägänsez",
-       "nologin": "Qullanuçı isemeñ yuqmı? '''$1'''",
-       "nologinlink": "Xisap yazması tözegez",
        "createaccount": "Yaña qullanuçı terkäw",
-       "gotaccount": "Sez inde terkäldegezme? '''$1'''.",
-       "gotaccountlink": "Kerü",
        "userlogin-resetpassword-link": "Sersüzegezne onıttığızmı?",
        "createacct-emailrequired": "Email adresı",
        "createacct-emailoptional": "Email adresı (kürsätü mäcbür tügel)",
        "createacct-another-email-ph": "Elektron xatlaşu adresığıznı kertegez",
        "createaccountmail": "Waqıtlıça oçraqlı sersüz qullan häm anı kürsätelgän elektron xatlaşu adresına yulla",
        "createacct-realname": "Çın isemegez (kürsätü mäcbüri tügel)",
-       "createaccountreason": "Säbäp:",
        "createacct-reason": "Säbäp",
        "createacct-reason-ph": "İkençe xisap yazmanı buldıru säbäben",
        "createacct-submit": "Xisap yazmağıznı tözegez",
        "anonpreviewwarning": "''Sez sistemada terkälmädegez.Sezneñ taraftan eşlängän barlıq üzgärtülär dä sezneñ IP-yullamağıznı saqlawğa kiterä.''",
        "missingsummary": "'''İskärtü.''' Sez üzgärtügä qısqaça taswirlaw yazmadığız. Sez «Bitne saqlaw» töymäsenä tağın ber tapqır bassağız, üzgärtülär taswirlamasız saqlanaçaq.",
        "missingcommenttext": "Asqa taswirlama yazuığız sorala.",
-       "missingcommentheader": "''İskärtü:''' Sez taswirlamağa isem birmädegez.\n«{{int:savearticle}}» töymäsenä qabat bassağız, üzgärtülär isemsez yazılaçaq.",
+       "missingcommentheader": "''İskärtü:''' Sez taswirlamağa isem birmädegez.\n«$1» töymäsenä qabat bassağız, üzgärtülär isemsez yazılaçaq.",
        "summary-preview": "Taswirlamanı aldan qaraw:",
        "subject-preview": "Başisemne aldan qaraw:",
        "blockedtitle": "Qullanuçı tıyıldı",
        "editingsection": "«$1» bitendä bülek üzgärtüe",
        "editingcomment": "«$1» biten üzgärtü (yaña bülek)",
        "editconflict": "Üzgärtü konfliktı: $1",
-       "explainconflict": "Sez bu bitne tözätkän waqıtta kemder aña üzgäreşlär kertte.\nÖstäge täräzädä Sez xäzerge tekstnı küräsez.\nAstağı täräzädä Sezneñ wariant urnaşqan.\nEşlägän üzgärtüläregezne astağı täräzädän östägenä küçeregez.\n«{{int:savearticle}}» töymäsenä basqaç östäge bitneñ tekstı saqlanayaçaq.",
+       "explainconflict": "Sez bu bitne tözätkän waqıtta kemder aña üzgäreşlär kertte.\nÖstäge täräzädä Sez xäzerge tekstnı küräsez.\nAstağı täräzädä Sezneñ wariant urnaşqan.\nEşlägän üzgärtüläregezne astağı täräzädän östägenä küçeregez.\n«$1» töymäsenä basqaç östäge bitneñ tekstı saqlanayaçaq.",
        "yourtext": "Sezneñ tekst",
        "storedversion": "Saqlanğan yurama",
        "nonunicodebrowser": "'''Kisätü: Sezneñ brauzer Yünikod kodlawın tanımıy.'''\nÜzgärtü waqıtında ASCII bulmağan simvollar maxsus unaltılı kodlarğa alıştırılaçaq.",
        "saveprefs": "Saqlaw",
        "restoreprefs": "Baştağı köylänmälärne kire qaytaru",
        "prefs-editing": "Üzgärtü",
-       "rows": "Yullar:",
-       "columns": "Bağanalar:",
        "searchresultshead": "Ezläw",
        "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",
        "rcshowhidemine": "minem üzgärtüläremne $1",
        "rcshowhidemine-show": "Kürsätü",
        "rcshowhidemine-hide": "Yäşerü",
-       "rclinks": "Soñğı $2 kön eçendä soñğı $1 üzgärtüne kürsät<br />$3",
+       "rclinks": "Soñğı $2 kön eçendä soñğı $1 üzgärtüne kürsät",
        "diff": "ayırma",
        "hist": "tarix",
        "hide": "yäşer",
        "revdelete-restricted": "çikläwlär idaräçelärgä dä qullanıla",
        "logentry-newusers-create": "$1 qullanuçı xisap yazması {{GENDER:$2|tözelde}}",
        "rightsnone": "(yuq)",
-       "revdelete-summary": "üzgärtülär taswirlaması",
        "feedback-back": "Kire qaytu",
        "feedback-cancel": "Baş tartu",
        "feedback-close": "Yasaldı",
index c357658..fd51e98 100644 (file)
        "yourpasswordagain": "Чажыт сөзүңерни катап бижиңер:",
        "login": "Кирери",
        "nav-login-createaccount": "Кирери / бүрүткел бижикти чогаадыры",
-       "userlogin": "Кирери / бүрүткел бижикти чогаадыры",
-       "userloginnocreate": "Кирери",
        "logout": "Үнери",
        "userlogout": "Үнери",
        "notloggedin": "Кирбес",
-       "nologin": "Силерде бүрүткел бижик чок? $1",
-       "nologinlink": "Бүрүткел бижикти бүдүрери",
        "createaccount": "Бүрүткел бижикти бүдүрери",
-       "gotaccount": "Силер бүрүтекнип алдыңар де? '''$1'''.",
-       "gotaccountlink": "Кирер",
-       "userlogin-resetlink": "Кирер бижик-саныңар уттуп алдыңар бе?",
        "createaccountmail": "Э-чагаадан",
-       "createaccountreason": "Чылдагаан:",
        "badretype": "Силерниң парлаан чажыт сөзүңер таарышпас.",
        "userexists": "Силерниң парлаан адыңар амгы үеде ажыглаттынып турар.\nӨске аттан шилип алыңар.",
        "loginerror": "Кирип шыдавадың, сени танываан боор",
        "prefs-signature": "Хол үжүү",
        "prefs-diffs": "Ылгалдар",
        "editusergroup": "Ажыглакчының бөлгүмнерни өскертири",
-       "editinguser": "Changing user rights of user '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
        "userrights-editusergroup": "Ажыглакчының бөлгүмнерни өскертири",
        "saveusergroups": "{{GENDER:$1|Ажыглакчының|Ажыглакчының}} бөлгүмнерин шыгжаар",
        "userrights-reason": "Чылдагаан:",
        "right-move": "Арыннарны шимчээри",
        "right-movefile": "Файлдарны шимчээри",
        "right-writeapi": "API-ни бижикке ажыглаары",
-       "right-editusercssjs": "Өске ажыглакчыларның CSS база Javascript файлдарын өскертири.",
        "right-editusercss": "Өске ажыглакчыларның CSS файлдарын өскертири.",
        "right-edituserjs": "Өске ажыглакчыларның JavaScript файлдарын өскертири.",
        "newuserlogpage": "Киржикчилер бүрүткээр дептер",
        "rcshowhidemine": "$1 боттуң эдилгелери",
        "rcshowhidemine-show": "көргүзер",
        "rcshowhidemine-hide": "чажырар",
-       "rclinks": "Чоокку $2 хүн иштинде сөөлгү $1 өскерлиишкиннерни көргүзер<br />$3",
+       "rclinks": "Чоокку $2 хүн иштинде сөөлгү $1 өскерлиишкиннерни көргүзер",
        "diff": "ылгал",
        "hist": "төөгү",
        "hide": "Чажырар",
index 4a7a018..7694902 100644 (file)
        "currentrevisionlink": "Алиез версия",
        "cur": "али",
        "last": "азьв.",
-       "history-fieldset-title": "Ð\98Ñ\81Ñ\82оÑ\80иез Ð²Ð¾Ñ\88Ñ\82Ó¥Ñ\81Ñ\8cкон Ð¿Ð¾Ð½Ð½Ð°",
-       "history-show-deleted": "Ӵотаны ӵушылэмъёссэ гинэ",
+       "history-fieldset-title": "ТÑ\83паÑ\82онÑ\8aÑ\91Ñ\81Ñ\82Ñ\8b Ñ\83Ñ\82Ñ\87анÑ\8b",
+       "history-show-deleted": "Ӵушылэм тупатонъёссэ гинэ",
        "rev-delundel": "возьматыны/ватыны",
        "rev-showdeleted": "возьматоно",
        "revdelete-show-file-submit": "Бен",
        "prefs-editing": "Тупатон",
        "yourlanguage": "Интерфейслэн кылыз:",
        "prefs-preview": "Бамез эскерон",
-       "userrights": "Ð\9fÑ\8bÑ\80иÑ\81Ñ\8cкиÑ\81Ñ\8cлÑ\8dн Ð¿Ñ\80авооÑ\81Ñ\8bныз",
+       "userrights": "Ð\92икиавÑ\82оÑ\80лÑ\8dн Ð¿Ñ\80авооÑ\81ыз",
        "editusergroup": "Викиавторлэсь группаоссэ возьматыны",
        "group-autoconfirmed": "Авто-юнматэм викиавторъёс",
        "group-bot": "Ботъёс",
        "rcshowhidemine-hide": "Ватыны",
        "rcshowhidecategorization-show": "Возьматыны",
        "rcshowhidecategorization-hide": "Ватыны",
-       "rclinks": "Возьматыны $1 берло воштонэз $2 нуналскын<br />$3",
+       "rclinks": "Возьматыны $1 берло воштонэз $2 нуналскын",
        "diff": "пӧрт.",
        "hist": "история",
        "hide": "Ватыны",
index edd0508..d942cd8 100644 (file)
        "externaldberror": "بۇ سانداننى دەلىللەش خاتالىقى ياكى سىرتقى ھېساباتىڭىزنى يېڭىلاشنى چەكلىگەنلىكتىن بولغان بولۇشى مۇمكىن.",
        "login": "تىزىمغا كىر",
        "nav-login-createaccount": "تىزىمغا كىر/ھېسابات قۇر",
-       "userlogin": "تىزىمغا كىر/ھېسابات قۇر",
-       "userloginnocreate": "تىزىمغا كىر",
        "logout": "تىزىمدىن چىق",
        "userlogout": "تىزىمدىن چىق",
        "notloggedin": "تىزىمغا كىرمىدى",
        "userlogin-noaccount": "ھېساباتىڭىز يوقمۇ؟",
        "userlogin-joinproject": "{{SITENAME}} قا ئەزا بولۇڭ",
-       "nologin": "ھېساباتىڭىز يوقمۇ؟ '''$1'''.",
-       "nologinlink": "ھېساباتتىن بىرنى قۇر",
        "createaccount": "ھېسابات قۇر",
-       "gotaccount": "ھېساباتىم بار؟ '''$1'''.",
-       "gotaccountlink": "تىزىمغا كىر",
-       "userlogin-resetlink": "تىزىمغا كىرىش تەپسىلاتىنى ئۇنۇتتىڭىز؟",
        "userlogin-resetpassword-link": "پارولىڭىزنى ئۇنتۇپ قالدىڭىزمۇ؟",
        "userlogin-loggedin": "سىز ئاللىقاچان {{GENDER:$1|$1}} ھالىتىدە تىزىمغا كىرىپ بولدىڭىز. تۆۋەندىكىلەرنى تولدۇرۇپ باشقا ئىشلەتكۈچى ھالىتىدە تىزىمغا كىرىڭ.",
        "userlogin-createanother": "باشقا ھېسابات قۇرىمەن",
        "createacct-another-email-ph": "ئېلخەت ئادرېسى كىرگۈزۈڭ",
        "createaccountmail": "ۋاقىتلىق ئىختىيارىي پارولنى ئىشلەت ھەمدە بەلگىلەنگەن ئېلېكتىرونلۇق خەت ئادرېسىغا ئەۋەت",
        "createacct-realname": "ھەقىقى ئىسمىڭىز (ئىختىيارى)",
-       "createaccountreason": "سەۋەب:",
        "createacct-reason": "سەۋەبى",
        "createacct-reason-ph": "نېمىشقا باشقا ھېسابات قۇرماقچى بولدىڭىز",
        "createacct-submit": "ھېساباتىڭىزنى قۇرۇڭ",
        "passwordreset-emaildisabled": "بۇ ۋىكىدا ئېلخەت ئىقتىدار چەكلەنگەن.",
        "passwordreset-username": "ئىشلەتكۈچى نامى:",
        "passwordreset-domain": "دائىرە:",
-       "passwordreset-capture": "ھاسىل قىلىنغان ئېلخەتنى كۆرسىتەمدۇ؟",
-       "passwordreset-capture-help": "ئەگەر بۇ رامكا تاللانسا، ئېلخەت (ۋاقىتلىق پارولنى ئۆز ئىچىگە ئالىدۇ) كۆرسىتىپ ئىشلەتكۈچىگە يوللايدۇ.",
        "passwordreset-email": "ئېلخەت ئادرېس",
        "passwordreset-emailtitle": "{{SITENAME}} دىكى ھېسابات تەپسىلاتى",
        "passwordreset-emailtext-ip": "باشقىلار (بەلكىم سىز، IP ئادرېسى $1) {{SITENAME}} ($4) دىكى پارولنى قايتا بېكىتىشنى ئىلتىماس قىلدى. تۆۋەندىكى ئىشلەتكۈچىنىڭ {{PLURAL:$3|ھېسابات|ھېسابات}}ى مۇشۇ ئېلخەتكە باغلانغان:\n\n$2\n\n{{PLURAL:$3|بۇ ۋاقىتلىق پارول|بۇ ۋاقىتلىق پارول}} {{PLURAL:$5|بىر كۈن|$5 كۈن}}دە ۋاقتى ئۆتىدۇ. ئەگەر بۇ مەشغۇلاتنى سىز ئىلتىماس قىلغان بولسىڭىز، دەرھال تىزىمغا كىرىپ يېڭى پارولدىن بىرنى تاللاڭ.\nسىز بەلگىلىگەن يېڭى پارول  {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ. ئەگەر باشقىلار ئىلتىماس قىلغان بولسا ياكى ئۆزىڭىز بەلگىلىگەن پارول ئېسىڭىزگە كېلىپ ئۇنى ئۆزگەرتمىسىڭىز، \nبۇ ئۇچۇرغا پەرۋا قىلماي ئۆزىڭىزنىڭ كونا پارولىنى ئىشلىتىۋېرىڭ.",
        "anonpreviewwarning": "''سىز تېخى تىزىمغا كىرمىدىڭىز. سىزنىڭ IP ئادرېسىڭىز بۇ بەتنىڭ تەھرىرلەش تارىخىغا خاتىرىلىنىدۇ.''",
        "missingsummary": "'''ئەسكەرتىش:''' سىز تەھرىرلەش ئۈزۈندىسى تەمىنلىمىدىڭىز. .\nئەگەر ساقلانى يەنە بىر قېتىم چەكسىڭىز، تەھرىرلىگىنىڭىزنى ئۈزۈندە يوق ھالەتتە ساقلايدۇ.",
        "missingcommenttext": "تۆۋەندە ئىزاھات كىرگۈزۈڭ.",
-       "missingcommentheader": "'''ئەسكەرتىش:''' سىز ئىزاھاتقا ماۋزۇ تەمىنلىمىدىڭىز.\nئەگەر \"{{int:savearticle}}\"نى يەنە بىر قېتىم چەكسىڭىز، تەھرىرلىگىنىڭىزنى ماۋزۇسىز ھالەتتە ساقلايدۇ.",
+       "missingcommentheader": "'''ئەسكەرتىش:''' سىز ئىزاھاتقا ماۋزۇ تەمىنلىمىدىڭىز.\nئەگەر \"$1\"نى يەنە بىر قېتىم چەكسىڭىز، تەھرىرلىگىنىڭىزنى ماۋزۇسىز ھالەتتە ساقلايدۇ.",
        "summary-preview": "ئۈزۈندە ئالدىن كۆزىتىش:",
        "subject-preview": "تېما/ماۋزۇنى ئالدىن كۆزەت:",
        "blockedtitle": "ئىشلەتكۈچى چەكلەنگەن",
        "saveprefs": "ساقلا",
        "restoreprefs": "بارلىق كۆڭۈلدىكى تەڭشەكنى ئەسلىگە كەلتۈر (بارلىق بۆلەكلەردە)",
        "prefs-editing": "تەھرىر",
-       "rows": "قۇر:",
-       "columns": "ستون:",
        "searchresultshead": "ئىزدە",
        "stub-threshold": "<a href=\"#\" class=\"stub\">قىسقا بەت ئۇلانمىسى</a> فورمات چەك قىممىتى (بايت) :",
        "stub-threshold-disabled": "چەكلەنگەن",
        "userrights-reason": "سەۋەب:",
        "userrights-no-interwiki": "باشقا wiki دىكى ئىشلەتكۈچىلەرنىڭ ھوقۇقىنى ئۆزگەرتىش ھوقۇقىڭىز يوق.",
        "userrights-nodatabase": "$1 ساندان مەۋجۇد ئەمەس ياكى يەرلىك ئوروندا ئەمەس.",
-       "userrights-nologin": "سىز چوقۇم باشقۇرغۇچى سۈپىتىدە [[Special:UserLogin|تىزىمغا كىر]]ىپ ئاندىن ئىشلەتكۈچى ھوقۇقىنى بەلگىلىيەلەيسىز.",
-       "userrights-notallowed": "ھېساباتىڭىزنىڭ ئىشلەتكۈچى ھوقۇقىنى قوشۇش ياكى ئۆزگەرتىش ھوقۇقى يوق.",
        "userrights-changeable-col": "سىز ئۆزگەرتەلەيدىغان گۇرۇپپا",
        "userrights-unchangeable-col": "سىز ئۆزگەرتەلمەيدىغان گۇرۇپپا",
        "userrights-irreversible-marker": "$1*",
        "right-protect": "قوغداش دەرىجىسىنى ئۆزگەرتىپ، قوغدالغان بەتنى تەھرىرلە",
        "right-editprotected": "قوغدالغان بەتنى تەھرىرلە (زەنجىرسىمان قۇلۇپلانمىغان)",
        "right-editinterface": "ئىشلەتكۈچى كۆرۈنمە يۈزىنى تەھرىرلە",
-       "right-editusercssjs": "باشقا ئىشلەتكۈچىنىڭ CSS ۋە JS ھۆججىتىنى تەھرىرلە",
        "right-editusercss": "باشقا ئىشلەتكۈچىنىڭ CSS ھۆججىتىنى تەھرىرلە",
        "right-edituserjs": "باشقا ئىشلەتكۈچىنىڭ  JS ھۆججىتىنى تەھرىرلە",
        "right-editmyusercss": "ئۆزىڭىزنىڭ CSS ھۆججىتىڭىزنى تەھرىرلەڭ",
        "right-siteadmin": "ساندان قۇلۇپلا ۋە قۇلۇپ ئاچ",
        "right-override-export-depth": "بەت قەۋەتلىك ئۇلىنىشى بار بەتنى چىقار",
        "right-sendemail": "باشقا ئىشلەتكۈچىگە ئېلخەت يوللا",
-       "right-passwordreset": "پارول ئەسلىگە قايتۇرۇش ئېلخەت ئادرېس كۆرۈش.",
        "newuserlogpage": "ئىشلەتكۈچى قۇرغان خاتىرە",
        "newuserlogpagetext": "(چەكلەنگەن)",
        "rightslog": "ئىشلەتكۈچى ھوقۇق خاتىرىسى",
        "rcshowhideanons": "$1 ئىمزاسىز ئىشلەتكۈچى تەھرىرى",
        "rcshowhidepatr": "$1 كۆزىتىلگەن تەھرىر",
        "rcshowhidemine": "$1 مېنىڭ تەھرىرىم",
-       "rclinks": "يېقىنقى $2 كۈن ئىچىدىكى ئەڭ يېڭى  $1 قېتىملىق ئۆزگەرتىشنى كۆرسەت. <br />$3",
+       "rclinks": "يېقىنقى $2 كۈن ئىچىدىكى ئەڭ يېڭى  $1 قېتىملىق ئۆزگەرتىشنى كۆرسەت.",
        "diff": "پەرق",
        "hist": "تارىخ",
        "hide": "يوشۇر",
        "undeleteviewlink": "كۆرسەت",
        "undeleteinvert": "ئەكسىچە تاللا",
        "undeletecomment": "سەۋەب:",
-       "undeletedrevisions": "{{PLURAL:$1|1 تۈزىتىش|$1 تۈزىتىش}} ئەسلىگە كەلتۈرۈلدى",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 تۈزىتىش|$1 تۈزىتىش}} ۋە {{PLURAL:$2|1 ھۆججەت|$2 ھۆججەت}}  ئەسلىگە كەلتۈرۈلدى",
-       "undeletedfiles": "{{PLURAL:$1|1 ھۆججەت|$1 ھۆججەت}}  ئەسلىگە كەلتۈرۈلدى",
        "cannotundelete": "ئەسلىگە كەلتۈرۈش مەغلۇپ بولدى:\n$1",
        "undeletedpage": "'''$1 ئەسلىگە كەلتۈرۈلدى'''\n\n [[Special:Log/delete|ئۆچۈرۈش خاتىرىسى]]دىن پايدىلىنىپ ئۆچۈر ۋە ئەسلىگە كەلتۈر خاتىرىسىنى كۆرۈڭ.",
        "undelete-header": "يېقىنقى خاتىرىنى سۈرۈشتۈرمەكچى بولسىڭىز [[Special:Log/delete|ئۆچۈرۈش خاتىرىسى]]دىن پايدىلىنىڭ.",
        "logentry-rights-rights-legacy": "$3 نىڭ ئىشلەتكۈچى گۇرۇپپىسىنى $1 ئۆزگەرتتى",
        "logentry-rights-autopromote": "$1 نىڭ ئىشلەتكۈچى گۇرۇپپىسى ئۆزلۈكىدىن $4 دىن $5 غا يۈكسەلدى",
        "rightsnone": "(يوق)",
-       "revdelete-summary": "ئۈزۈندە تەھرىرلە",
        "feedback-adding": "قايتۇرما ئىنكاسنى بەتكە قوشۇۋاتىدۇ…",
        "feedback-bugcheck": "قالتىس! كەمتۈكنىڭ ئاللىبۇرۇن يوللانغان [$1 مەلۇملۇق كەمتۈك] ياكى ئەمەسلىكىنى تەكشۈرۈڭ.",
        "feedback-bugnew": "تەكشۈردۈم. يېڭى بىر كەمتۈك دوكلات قىل",
        "feedback-thanks": "كۆپ رەھمەت! قايتۇرما ئىنكاسىڭىز \"[$2 $1]\" بەتكە يوللاندى.",
        "searchsuggest-search": "ئىزدەش",
        "searchsuggest-containing": "ئىچىدە…",
-       "api-error-badaccess-groups": "ھۆججەتنى بۇ ۋىكىغا يۈكلەش ھوقۇقىڭىز يوق.",
        "api-error-badtoken": "ئىچكى خاتالىق: سۆزلىشىش ئىناۋەتسىز.",
-       "api-error-copyuploaddisabled": "URL ئارقىلىق يوللايدىغان ئىقتىدارنى بۇ مۇلازىمېتىر چەكلىگەن.",
-       "api-error-duplicate": "تورتۇرادا ئوخشاش مەزمۇندىكى {{PLURAL:$1|is باشقا ھۆججەت|بەزى باشقا ھۆججەتلەر}} مەۋجۇت.",
-       "api-error-duplicate-archive": "تورتۇرادا ئىلگىرى ئوخشاش مەزمۇن بار {{PLURAL:$1|was باشقا بىر ھۆججەت|were باشقا ھۆججەتلەر}} مەۋجۇت ئەمما ئۆچۈرۈلگەن.",
-       "api-error-empty-file": "يوللىغان ھۆججىتىڭىز بوش.",
        "api-error-emptypage": "يېڭىدىن قۇرۇش، قۇرۇق بەت يول قۇيۇلمايدۇ.",
-       "api-error-fetchfileerror": "ئىچكى خاتالىق: ھۆججەتكە ئېرىشىۋاتقاندا خاتالىق كۆرۈلدى.",
-       "api-error-fileexists-forbidden": "\"$1\" ئاتلىق ھۆججەت مەۋجۇت، ئۇنى قاپلىغىلى بولمايدۇ.",
-       "api-error-fileexists-shared-forbidden": "\"$1\" ئاتلىق ھۆججەت ھەمبەھىر ۋاستە ئامبىرىدا مەۋجۇت، ئۇنى قاپلىغىلى بولمايدۇ.",
-       "api-error-file-too-large": "يوللىغان ھۆججىتىڭىز بەك چوڭ.",
-       "api-error-filename-tooshort": "ھۆججەت ئاتى بەك قىسقا.",
-       "api-error-filetype-banned": "بۇ خىل ھۆججەت چەكلەنگەن.",
-       "api-error-filetype-banned-type": "$1 {{PLURAL:$4| ھۆججەت تىپىنى قوللىمايدۇ}}. قوللايدىغان {{PLURAL:$3|ھۆججەت تىپى}} $2.",
-       "api-error-filetype-missing": "بۇ ھۆججەتنىڭ كېڭەيتىلگەن ئاتى يوق.",
-       "api-error-hookaborted": "سىز سىنىغان ئۆزگەرتىشنى قىستۇرما توختاتتى.",
-       "api-error-http": "ئىچكى خاتالىق:مۇلازىمېتىرغا باغلىنالمىدى.",
-       "api-error-illegal-filename": "ھۆججەت ئاتىغا يول قويمايدۇ.",
-       "api-error-internal-error": "ئىچكى خاتالىق:سىز يۈكلىگەن ھۆججەتنى بىرتەرەپ قېلىش جەريانىدا مەسىلە كۆرۈلدى.",
-       "api-error-invalid-file-key": "ئىچكى خاتالىق: ۋاقىتلىق ساقلىغۇچتا ھۆججەت تېپىلمىدى.",
-       "api-error-missingparam": "ئىچكى خاتالىق: ئىلتىماستا پارامېتىر كەم.",
-       "api-error-missingresult": "ئىچكى خاتالىق: كۆچۈرۈشنىڭ مۇۋەپپەقىيەتلىك ياكى ئەمەسلىكىنى جەزملىيەلمىدى.",
-       "api-error-mustbeloggedin": "ھۆججەت يوللاش ئۈچۈن تىزىملىتىڭ.",
-       "api-error-mustbeposted": "ئىچكى خاتالىق: ئىلتىماستا HTTP POST زۆرۈر.",
-       "api-error-noimageinfo": "مۇۋەپپەقىيەتلىك يۈكلەندى ئەمما مۇلازىمېتىر ھۆججەتكە مۇناسىۋەتلىك ئۇچۇر بەرمىدى.",
-       "api-error-nomodule": "ئىچكى خاتالىق: يۈكلەش مودېل توپلىمى يوق.",
-       "api-error-ok-but-empty": "ئىچكى خاتالىق: مۇلازىمېتىردا ئىنكاس يوق.",
-       "api-error-overwrite": "مەۋجۇد ھۆججەت قاپلاشقا يول قويمايدۇ.",
-       "api-error-stashfailed": "ئىچكى خاتالىق: مۇلازىمېتىر ۋاقىتلىق ھۆججەتنى ساقلىيالمىدى.",
        "api-error-publishfailed": "ئىچكى خاتالىق: مۇلازىمېتىر ۋاقىتلىق ھۆججەتنى تارقىتالمىدى.",
-       "api-error-timeout": "مۇلازىمەت كومپيۇتېر كۆتكەن ۋاقتا ئىنكاس قايتۇرمىدى.",
-       "api-error-unclassified": "نامەلۇم خاتالىق كۆرۈلدى.",
-       "api-error-unknown-code": "نامەلۇم خاتالىق:\"$1\"",
-       "api-error-unknown-error": "ئىچكى خاتالىق: ھۆججىتىڭىزنى يۈكلەشنى سىناۋاتقاندا خاتالىق كۆرۈلدى.",
+       "api-error-stashfailed": "ئىچكى خاتالىق: مۇلازىمېتىر ۋاقىتلىق ھۆججەتنى ساقلىيالمىدى.",
        "api-error-unknown-warning": "نامەلۇم ئاگاھلاندۇرۇش:\"$1\"",
        "api-error-unknownerror": "نامەلۇم خاتالىق:\"$1\"",
-       "api-error-uploaddisabled": "بۇقامۇسدا يوللاش مەجرۇھنى قىلىندى.",
-       "api-error-verification-error": "ھۆججەت بۇزۇلغان بولۇشى مۇمكىن ياكى كېڭەيتىلگەن ئاتى خاتا.",
        "duration-seconds": "$1 {{PLURAL:$1|سېكۇنت}}",
        "duration-minutes": "$1 {{PLURAL:$1|مىنۇت}}",
        "duration-hours": "$1 {{PLURAL:$1|سائەت}}",
index a8a7952..7052115 100644 (file)
@@ -68,7 +68,8 @@
                        "Visem",
                        "MMH",
                        "Олександр",
-                       "Similartothissimilartothat"
+                       "Similartothissimilartothat",
+                       "Bunyk"
                ]
        },
        "tog-underline": "Підкреслювання посилань:",
        "anontalk": "Обговорення",
        "navigation": "Навігація",
        "and": "&#32;і",
-       "qbfind": "Знайти",
-       "qbbrowse": "Переглянути",
-       "qbedit": "Редагувати",
-       "qbpageoptions": "Налаштування сторінки",
-       "qbmyoptions": "Мої налаштування",
        "faq": "Часті питання",
-       "faqpage": "Project:Часті питання",
        "actions": "Дії",
        "namespaces": "Простори назв",
        "variants": "Варіанти",
        "edit-local": "Редагувати локальний опис",
        "create": "Створити",
        "create-local": "Додати локальний опис",
-       "editthispage": "Редагувати цю сторінку",
-       "create-this-page": "Створити цю сторінку",
        "delete": "Вилучити",
-       "deletethispage": "Вилучити цю сторінку",
-       "undeletethispage": "Відновити цю сторінку",
        "undelete_short": "Відновити $1 {{PLURAL:$1|редагування|редагування|редагувань}}",
        "viewdeleted_short": "Переглянути {{PLURAL:$1|одне вилучене редагування|$1 вилучені редагування|$1 вилучених редагувань}}",
        "protect": "Захистити",
        "protect_change": "змінити",
-       "protectthispage": "Захистити цю сторінку",
        "unprotect": "Змінити захист",
-       "unprotectthispage": "Змінити захист цієї сторінки",
        "newpage": "Нова сторінка",
-       "talkpage": "Обговорити цю сторінку",
        "talkpagelinktext": "обговорення",
        "specialpage": "Спеціальна сторінка",
        "personaltools": "Особисті інструменти",
-       "articlepage": "Переглянути статтю",
        "talk": "Обговорення",
        "views": "Перегляди",
        "toolbox": "Інструменти",
        "tool-link-userrights": "Змінити групи {{GENDER:$1|користувача|користувачки}}",
        "tool-link-userrights-readonly": "Перегляд груп {{GENDER:$1|користувача|користувачки}}",
        "tool-link-emailuser": "Лист {{GENDER:$1|користувачеві|користувачці}}",
-       "userpage": "Переглянути сторінку користувача",
-       "projectpage": "Переглянути сторінку проекту",
        "imagepage": "Переглянути сторінку файлу",
        "mediawikipage": "Переглянути сторінку повідомлення",
        "templatepage": "Переглянути сторінку шаблону",
        "redirectedfrom": "(Перенаправлено з $1)",
        "redirectpagesub": "Сторінка-перенаправлення",
        "redirectto": "Перенаправити на:",
-       "lastmodifiedat": "ЦÑ\8e Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83 Ð²Ð¾Ñ\81Ñ\82аннÑ\94 Ð·Ð¼Ñ\96нено: $2, $1.",
+       "lastmodifiedat": "ЦÑ\8e Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83 Ð²Ð¾Ñ\81Ñ\82аннÑ\94 Ð²Ñ\96дÑ\80едаговано Ð¾ $2, $1.",
        "viewcount": "Цю сторінку переглядали $1 {{PLURAL:$1|раз|рази|разів}}.",
        "protectedpage": "Захищена сторінка",
        "jumpto": "Перейти до:",
        "preview": "Попередній перегляд",
        "showpreview": "Попередній перегляд",
        "showdiff": "Показати зміни",
-       "blankarticle": "'''Попередження:''' Створена вами сторінка порожня.\nЯкщо Ви знову натиснете «{{int:savearticle}}», сторінку буде створено без вмісту.",
+       "blankarticle": "'''Попередження:''' Створена вами сторінка порожня.\nЯкщо Ви знову натиснете «$1», сторінку буде створено без вмісту.",
        "anoneditwarning": "<strong>Увага!</strong> Ви не авторизувалися на сайті. Ваша IP-адреса буде публічно видима, якщо Ви будете вносити будь-які редагування. Якщо Ви <strong>[$1 увійдете]</strong> або <strong>[$2 створите обліковий запис]</strong>, редагування будуть натомість пов'язані з Вашим іменем користувача, а ще у Вас з'являться інші переваги.",
        "anonpreviewwarning": "''Ви не увійшли в систему. Якщо ви виконаєте збереження, то в історію сторінки буде записана ваша IP-адреса.''",
        "missingsummary": "'''Нагадування''': Ви не дали короткого опису змін.\nНатиснувши кнопку «Зберегти» ще раз, ви збережете зміни без коментаря.",
-       "selfredirect": "<strong>Попередження:</strong> Ви створюєте перенаправлення на цю ж сторінку.\nВи могли вказати невірну цільову сторінку, або ж редагуєте хибну сторінку.\nЯкщо Ви натиснете \"{{int:savearticle}}\" ще раз, перенаправлення буде створено.",
+       "selfredirect": "<strong>Попередження:</strong> Ви створюєте перенаправлення на цю ж сторінку.\nВи могли вказати невірну цільову сторінку, або ж редагуєте хибну сторінку.\nЯкщо Ви натиснете \"$1\" ще раз, перенаправлення буде створено.",
        "missingcommenttext": "Будь ласка, введіть нижче ваше повідомлення.",
-       "missingcommentheader": "<strong>Нагадування</strong>: Ви не вказали тему для цього коментаря.\nНатиснувши кнопку «{{int:savearticle}}» ще раз, Ви збережете редагування без заголовка.",
+       "missingcommentheader": "<strong>Нагадування</strong>: Ви не вказали тему для цього коментаря.\nНатиснувши кнопку «$1» ще раз, Ви збережете редагування без заголовка.",
        "summary-preview": "Попередній перегляд опису редагування:",
        "subject-preview": "Попередній перегляд теми:",
        "previewerrortext": "Сталася помилка при спробі попереднього перегляду Ваших змін.",
        "editingsection": "Редагування $1 (розділ)",
        "editingcomment": "Редагування $1 (новий розділ)",
        "editconflict": "Конфлікт редагування: $1",
-       "explainconflict": "Ще хтось змінив цю сторінку з того часу, як ви розпочали її правити.\nУ верхньому вікні показано поточний текст сторінки.\nВаші зміни показані в нижньому вікні.\nВам необхідно перенести ваші зміни в існуючий текст.\nЯкщо ви натиснете «{{int:savearticle}}», то буде збережено '''лише''' текст з верхнього вікна редагування.",
+       "explainconflict": "Ще хтось змінив цю сторінку з того часу, як ви розпочали її правити.\nУ верхньому вікні показано поточний текст сторінки.\nВаші зміни показані в нижньому вікні.\nВам необхідно перенести ваші зміни в існуючий текст.\nЯкщо ви натиснете «$1», то буде збережено '''лише''' текст з верхнього вікна редагування.",
        "yourtext": "Ваш текст",
        "storedversion": "Збережена версія",
        "nonunicodebrowser": "'''Попередження: Ваш браузер не підтримує Юнікод.''' \nЩоб подолати це обмеження та дозволити вам безпечно редагувати сторінки, усі не-ASCII символи буде показано їх шістнадцятковими кодами.",
        "search-file-match": "(збігається із вмістом файлу)",
        "search-suggest": "Можливо, ви мали на увазі: $1",
        "search-rewritten": "Показуються результати для $1. Шукати натомість $2.",
-       "search-interwiki-caption": "Ð\91Ñ\80аÑ\82нÑ\96 Ð¿Ñ\80оекÑ\82и",
+       "search-interwiki-caption": "РезÑ\83лÑ\8cÑ\82аÑ\82и Ð· Ð±Ñ\80аÑ\82нÑ\96Ñ\85 Ð¿Ñ\80оекÑ\82Ñ\96в",
        "search-interwiki-default": "Результати із $1:",
        "search-interwiki-more": "(більше)",
        "search-interwiki-more-results": "більше результатів",
        "userrights-lookup-user": "Виберіть користувача",
        "userrights-user-editname": "Введіть ім'я користувача:",
        "editusergroup": "Завантажити групи користувачів",
-       "editinguser": "Зміна прав {{GENDER:$1|користувача}} <strong>[[User:$1|$1]]</strong> $2",
+       "editinguser": "Зміна прав {{GENDER:$1|користувача|користувачки}} <strong>[[User:$1|$1]]</strong> $2",
        "viewinguserrights": "Перегляд прав {{GENDER:$1|користувача|користувачки}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Змінити групи {{GENDER:$1|користувача|користувачки}}",
        "userrights-viewusergroup": "Перегляд груп {{GENDER:$1|користувача|користувачки}}",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Показати",
        "rcfilters-activefilters": "Активні фільтри",
+       "rcfilters-quickfilters": "Збережені налаштування фільтрів",
+       "rcfilters-quickfilters-placeholder-title": "Ще немає збережених посилань",
+       "rcfilters-quickfilters-placeholder-description": "Щоб зберегти Ваші налаштування фільтрів та використати їх пізніше, клацніть на іконку закладки в ділянці активних фільтрів нижче.",
+       "rcfilters-savedqueries-defaultlabel": "Збережені фільтри",
+       "rcfilters-savedqueries-rename": "Перейменувати",
+       "rcfilters-savedqueries-setdefault": "Зробити стандартним",
+       "rcfilters-savedqueries-unsetdefault": "Прибрати зі стандартних",
+       "rcfilters-savedqueries-remove": "Вилучити",
+       "rcfilters-savedqueries-new-name-label": "Назва",
+       "rcfilters-savedqueries-apply-label": "Зберегти налаштування",
+       "rcfilters-savedqueries-cancel-label": "Скасувати",
+       "rcfilters-savedqueries-add-new-title": "Зберегти поточні налаштування фільтрів",
        "rcfilters-restore-default-filters": "Відновити стандартні фільтри",
        "rcfilters-clear-all-filters": "Очистити фільтри",
        "rcfilters-search-placeholder": "Фільтруйте нові редагування (переглядайте або почніть вводити)",
        "rcfilters-filter-unregistered-label": "Незареєстровані",
        "rcfilters-filter-unregistered-description": "Користувачі, які не ввійшли в систему.",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "Цей фільтр конфліктує з {{PLURAL:$2|таким фільтром|такими фільтрами}} досвіду, {{PLURAL:$2|який знаходить|які знаходять}} лише зареєстрованих користувачів: $1",
-       "rcfilters-filtergroup-authorship": "Авторство редагувань",
-       "rcfilters-filter-editsbyself-label": "Ð\92аÑ\88Ñ\96 Ð²Ð»Ð°Ñ\81нÑ\96 Ñ\80едагÑ\83ваннÑ\8f",
-       "rcfilters-filter-editsbyself-description": "РедагÑ\83ваннÑ\8f, Ð·Ñ\80обленÑ\96 Ð\92ами.",
-       "rcfilters-filter-editsbyother-label": "РедагÑ\83ваннÑ\8f, Ð·Ñ\80облені іншими",
-       "rcfilters-filter-editsbyother-description": "РедагÑ\83ваннÑ\8f, Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ñ\96 Ñ\96нÑ\88ими ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87ами (не Ð\92ами).",
+       "rcfilters-filtergroup-authorship": "Авторство внеску",
+       "rcfilters-filter-editsbyself-label": "Ð\97мÑ\96ни, Ð·Ð´Ñ\96йÑ\81ненÑ\96 Ð\92ами",
+       "rcfilters-filter-editsbyself-description": "Ð\92аÑ\88 Ð²Ð»Ð°Ñ\81ний Ð²Ð½ÐµÑ\81ок.",
+       "rcfilters-filter-editsbyother-label": "Ð\97мÑ\96ни, Ð·Ð´Ñ\96йÑ\81нені іншими",
+       "rcfilters-filter-editsbyother-description": "УÑ\81Ñ\96 Ð·Ð¼Ñ\96ни, Ð·Ð° Ð²Ð¸Ð½Ñ\8fÑ\82ком Ð\92аÑ\88иÑ\85 Ð²Ð»Ð°Ñ\81ниÑ\85.",
        "rcfilters-filtergroup-userExpLevel": "Рівень досвіду (тільки для зареєстрованих користувачів)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Фільтри досвіду знаходять лише зареєстрованих користувачів, тож цей фільтр конфліктує з фільтром «Незареєстровані».",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Фільтр «Незареєстровані» конфліктує з одним або більше фільтрами досвіду, які знаходять лише зареєстрованих користувачів. Конфліктні фільтри позначені вище в ділянці активних фільтрів.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Новачки",
        "rcfilters-filter-user-experience-level-newcomer-description": "Менше ніж 10 редагувань і 4 дні активності.",
        "rcfilters-filter-user-experience-level-learner-label": "Учні",
-       "rcfilters-filter-user-experience-level-learner-description": "Ð\91Ñ\96лÑ\8cÑ\88е Ð´Ð½Ñ\96в Ð°ÐºÑ\82ивноÑ\81Ñ\82Ñ\96 Ñ\82а Ð±Ñ\96лÑ\8cÑ\88е Ñ\80едагÑ\83ванÑ\8c, ніж у «новачків», але менше, ніж у «досвідчених користувачів».",
+       "rcfilters-filter-user-experience-level-learner-description": "Ð\91Ñ\96лÑ\8cÑ\88е Ð´Ð¾Ñ\81вÑ\96дÑ\83, ніж у «новачків», але менше, ніж у «досвідчених користувачів».",
        "rcfilters-filter-user-experience-level-experienced-label": "Досвідчені користувачі",
        "rcfilters-filter-user-experience-level-experienced-description": "Більше 30 днів активності і понад 500 редагувань.",
        "rcfilters-filtergroup-automated": "Автоматизовані редагування",
        "rcfilters-filter-minor-description": "Редагування, позначені авторами як незначні.",
        "rcfilters-filter-major-label": "Звичайні редагування",
        "rcfilters-filter-major-description": "Редагування, не позначені як незначні.",
+       "rcfilters-filtergroup-watchlist": "Сторінки зі списку спостереження",
+       "rcfilters-filter-watchlist-watched-label": "У списку спостереження",
+       "rcfilters-filter-watchlist-watched-description": "Зміни до сторінок з Вашого списку спостереження",
+       "rcfilters-filter-watchlist-watchednew-label": "Нові зміни в списку спостереження",
+       "rcfilters-filter-watchlist-watchednew-description": "Зміни до сторінок зі списку спостереження, які Ви не відвідували з моменту здійснення змін.",
+       "rcfilters-filter-watchlist-notwatched-label": "Не в списку спостереження",
+       "rcfilters-filter-watchlist-notwatched-description": "Усе, за винятком змін до сторінок з Вашого списку спостереження",
        "rcfilters-filtergroup-changetype": "Вид зміни",
        "rcfilters-filter-pageedits-label": "Редагування сторінок",
        "rcfilters-filter-pageedits-description": "Редагування вікі-вмісту, обговорень, опису категорій тощо.",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Фільтр «Незначні редагування» конфліктує з одним або більше фільтрів за типом змін, оскільки певні типи змін не можна позначити як «незначні». Конфліктні фільтри позначені в ділянці активних фільтрів угорі.",
        "rcfilters-hideminor-conflicts-typeofchange": "Певні типи змін не можна позначити як «незначні», тож цей фільтр конфліктує з такими фільтрами за типом змін: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Цей фільтр за типом змін конфліктує з фільтром «Незначні редагування». Певні типи змін не можна позначати як «незначні».",
+       "rcfilters-filtergroup-lastRevision": "Поточна версія",
+       "rcfilters-filter-lastrevision-label": "Поточна версія",
+       "rcfilters-filter-lastrevision-description": "Остання зміна на сторінці.",
+       "rcfilters-filter-previousrevision-label": "Попередні версії",
+       "rcfilters-filter-previousrevision-description": "Усі зміни, які не є поточною версією сторінки.",
+       "rcfilters-filter-excluded": "Виключено",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:не</strong> $1",
+       "rcfilters-view-tags": "Мітки",
        "rcnotefrom": "Нижче знаходяться {{PLURAL:$5|редагування}} з <strong>$3, $4</strong> (відображено до <strong>$1</strong>).",
        "rclistfromreset": "Скинути вибір дати",
        "rclistfrom": "Показати редагування починаючи з $3 $2.",
        "rcshowhidecategorization": "$1 категоризацію сторінок",
        "rcshowhidecategorization-show": "Показати",
        "rcshowhidecategorization-hide": "Приховати",
-       "rclinks": "Показати останні $1 редагувань за $2 днів<br />$3",
+       "rclinks": "Показати останні $1 редагувань за $2 днів",
        "diff": "різн.",
        "hist": "історія",
        "hide": "сховати",
        "enotif_body_intro_moved": "Сторінку {{GRAMMAR:genitive|{{SITENAME}}}} «$1» було перейменовано $PAGEEDITDATE {{GENDER:$2|користувачем|користувачкою}} $2, див. поточну версію $3.",
        "enotif_body_intro_restored": "Сторінку {{GRAMMAR:genitive|{{SITENAME}}}} «$1» було відновлено $PAGEEDITDATE {{GENDER:$2|користувачем|користувачкою}} $2, див. поточну версію $3.",
        "enotif_body_intro_changed": "Сторінку {{GRAMMAR:genitive|{{SITENAME}}}} «$1» було змінено $PAGEEDITDATE {{GENDER:$2|користувачем|користувачкою}} $2, див. поточну версію $3.",
-       "enotif_lastvisited": "Див. $1 для перегляду всіх змін, що відбулися після вашого останнього перегляду.",
-       "enotif_lastdiff": "Ð\94ив. $1 Ð´Ð»Ñ\8f Ð¾Ð·Ð½Ð°Ð¹Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ\8f Ð· Ñ\86Ñ\96Ñ\94Ñ\8e Ð·Ð¼Ñ\96ноÑ\8e.",
+       "enotif_lastvisited": "Див. $1, щоб переглянути всі зміни, які відбулися після вашого останнього відвідування.",
+       "enotif_lastdiff": "Щоб Ð¿ÐµÑ\80еглÑ\8fнÑ\83Ñ\82и Ñ\86Ñ\8e Ð·Ð¼Ñ\96нÑ\83, Ð´Ð¸Ð². $1",
        "enotif_anon_editor": "анонімний користувач $1",
        "enotif_body": "Шановний $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nКороткий опис змін: $PAGESUMMARY $PAGEMINOREDIT\n\nЗвернутись до редагувальника:\nелектронною поштою: $PAGEEDITOR_EMAIL\nчерез вікі: $PAGEEDITOR_WIKI\n\nЯкщо ви не відвідаєте цю сторінку під своїм обліковим записом, то в подальшому не будете отримувати сповіщень про наступні дії. Ви також можете вимкнути налаштування сповіщень для усіх сторінок зі списку спостереження.\n\nВаша дружня система сповіщення {{grammar:genitive|{{SITENAME}}}}\n\n--\nЗміна налаштувань повідомлень електронною поштою\n{{canonicalurl:{{#special:Preferences}}}}\n\nЩоб змінити налаштування списку спостереження, перейдіть за посиланням\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nЩоб вилучити сторінку зі списку спостереження, відвідайте сторінку\n$UNWATCHURL\n\nЗворотній зв'язок і допомога:\n$HELPPAGE",
        "created": "створена",
        "sp-contributions-uploads": "завантаження",
        "sp-contributions-logs": "журнали",
        "sp-contributions-talk": "обговорення",
-       "sp-contributions-userrights": "управління правами користувача",
+       "sp-contributions-userrights": "управління правами {{GENDER:$1|користувача|користувачки}}",
        "sp-contributions-blocked-notice": "Цей користувач наразі заблокований. Останній запис у журналі блокувань такий:",
        "sp-contributions-blocked-notice-anon": "Доступ з цієї IP-адреси зараз заблокований.\nДалі наведено останній запис з журналу блокувань:",
        "sp-contributions-search": "Пошук внеску",
        "autoblocklist-submit": "Пошук",
        "autoblocklist-legend": "Вивести список автоблокувань",
        "autoblocklist-localblocks": "{{PLURAL:$1|Локальне|Локальні}} автоблокування",
+       "autoblocklist-total-autoblocks": "Загальна кількість автоблокувань: $1",
        "autoblocklist-empty": "Список автоблокувань порожній.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Інше|Інші}} автоблокування",
        "ipblocklist": "Список заблокованих адрес та користувачів",
        "tooltip-pt-mycontris": "{{GENDER:|Ваш}} внесок",
        "tooltip-pt-anoncontribs": "Список редагувань, зроблених з цієї IP-адреси",
        "tooltip-pt-login": "Заохочуємо Вас увійти в систему, але це необов'язково.",
+       "tooltip-pt-login-private": "Вам треба увійти в систему, щоб використовувати цю вікі",
        "tooltip-pt-logout": "Вийти з системи",
        "tooltip-pt-createaccount": "Пропонуємо створити обліковий запис і увійти в систему; однак, це не обов'язково",
        "tooltip-ca-talk": "Обговорення змісту сторінки",
        "anonymous": "{{PLURAL:$1|1=Анонімний користувач|Анонімні користувачі}} {{grammar:genitive|{{SITENAME}}}}",
        "siteuser": "Користувач {{grammar:genitive|{{SITENAME}}}} $1",
        "anonuser": "анонімний користувач {{grammar:genitive|{{SITENAME}}}} $1",
-       "lastmodifiedatby": "Ð\9eÑ\81Ñ\82аннÑ\8f Ð·Ð¼Ñ\96на $2, $1 ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87ем $3.",
+       "lastmodifiedatby": "ЦÑ\8e Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83 Ð²Ð¾Ñ\81Ñ\82аннÑ\94 Ð²Ñ\96дÑ\80едаговано $3 Ð¾ $2, $1.",
        "othercontribs": "Базується на праці $1.",
        "others": "інші",
        "siteusers": "{{PLURAL:$2|1={{GENDER:$1|Користувач|Користувачка}}|Користувачі}} {{grammar:genitive|{{SITENAME}}}} $1",
        "newimages-legend": "Фільтр",
        "newimages-label": "Назва файлу (або її частина):",
        "newimages-user": "IP-адреса або ім'я користувача.",
+       "newimages-newbies": "Показувати лише внесок нових користувачів",
        "newimages-showbots": "Показати завантаження ботами",
        "newimages-hidepatrolled": "Приховати відпатрульовані завантаження",
+       "newimages-mediatype": "Тип медіа:",
        "noimages": "Файли відсутні.",
        "gallery-slideshow-toggle": "Перемикання мініатюр",
        "ilsubmit": "Шукати",
        "tags-create-reason": "Причина:",
        "tags-create-submit": "Створити",
        "tags-create-no-name": "Ви повинні вказати назву мітки.",
-       "tags-create-invalid-chars": "Назви міток не повинні містити коми (<code>,</code>) або косі риски (<code>/</code>).",
+       "tags-create-invalid-chars": "Назви міток не повинні містити коми (<code>,</code>), вертикальні риски (<code>|</code>), або косі риски (<code>/</code>).",
        "tags-create-invalid-title-chars": "Назви міток не повинні містити символи, які не можна використовувати в назвах сторінок.",
        "tags-create-already-exists": "Мітка «$1» вже існує.",
        "tags-create-warnings-above": "При спробі створити мітку «$1» {{PLURAL:$2|з'явились такі|1=з'явилось таке}} попередження:",
        "mw-widgets-titleinput-description-redirect": "перенаправлення на $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Додати категорію...",
        "mw-widgets-usersmultiselect-placeholder": "Додати ще...",
+       "date-range-from": "Від дати:",
+       "date-range-to": "До дати:",
        "sessionmanager-tie": "Не можна поєднувати кілька типів автентифікації запиту: $1.",
        "sessionprovider-generic": "сесій $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "сесій на основі кук",
        "pageid": "ID сторінки $1",
        "rawhtml-notallowed": "Теги &lt;html&gt; не можна використовувати за межами звичайних сторінок.",
        "gotointerwiki": "Ви покидаєте сайт {{SITENAME}}",
-       "gotointerwiki-invalid": "Ð\92казана Ð½Ð°Ð·Ð²Ð° Ð±Ñ\83ла Ð½ÐµÐ¿Ñ\80ипÑ\83Ñ\81Ñ\82имоÑ\8e.",
-       "gotointerwiki-external": "Ви збираєтесь покинути сайт {{SITENAME}}, щоб відвідати проект [[$2]], який є окремим веб-сайтом.\n\n[$1 Клацніть тут, щоб продовжити, перейшовши до $1].",
+       "gotointerwiki-invalid": "Ð\92казана Ð½Ð°Ð·Ð²Ð° Ð½ÐµÐ¿Ñ\80ипÑ\83Ñ\81Ñ\82има.",
+       "gotointerwiki-external": "Ви збираєтесь покинути сайт {{SITENAME}}, щоб відвідати проект [[$2]], який є окремим веб-сайтом.\n\n'''[$1 Продовжити, перейшовши до $1]'''",
        "undelete-cantedit": "Ви не можете відновити цю сторінку, оскільки Ви не маєте прав на редагування цієї сторінки.",
-       "undelete-cantcreate": "Ви не можете відновити цю сторінку, оскільки сторінка з такою назвою не існує, і Ви не маєте прав на створення цієї сторінки."
+       "undelete-cantcreate": "Ви не можете відновити цю сторінку, оскільки сторінка з такою назвою не існує, і Ви не маєте прав на створення цієї сторінки.",
+       "pagedata-title": "Дані сторінки",
+       "pagedata-text": "Ця сторінка надає сторінкам інтерфейс даних. Будь ласка, вкажіть назву сторінки в URL-адресі, скориставшись синтаксисом підсторінок.\n* Переговори щодо контенту застосовуються на основі прийнятних форматів Вашого клієнта. Це означає, що дані сторінки будуть надані в тому форматі, якому віддає перевагу Ваш клієнт.",
+       "pagedata-not-acceptable": "Не знайдено підхожого формату. Підтримувані MIME-типи: $1",
+       "pagedata-bad-title": "Недійсна назва: $1."
 }
index 860697d..1ac6e04 100644 (file)
@@ -30,7 +30,8 @@
                        "امین اکبر",
                        "Jdforrester",
                        "قیصرانی",
-                       "Junaid Ahmad"
+                       "Junaid Ahmad",
+                       "Abuaneeqa"
                ]
        },
        "tog-underline": "ربط کی خط کشیدگی:",
        "anontalk": "اس آئی پی پتہ کا تبادلۂ خیال",
        "navigation": "رہنمائی",
        "and": "&#32;اور",
-       "qbfind": "تلاش",
-       "qbbrowse": "مطالعہ",
-       "qbedit": "ترمیم",
-       "qbpageoptions": "یہ صفحہ",
-       "qbmyoptions": "میرے صفحات",
        "faq": "عام طور پر پوچھے جانے والے سوالات",
-       "faqpage": "Project:عمومی سوالات",
        "actions": "اقدامات",
        "namespaces": "نام فضا",
        "variants": "متغیرات",
        "searcharticle": "چلیں",
        "history": "تاریخچۂ صفحہ",
        "history_short": "تاریخچہ",
+       "history_small": "تاریخچہ",
        "updatedmarker": "میری آخری آمد کے بعد تجدید شدہ",
        "printableversion": "قابل طبع نسخہ",
        "permalink": "مستقل ربط",
        "edit-local": "مقامی وضاحت کی ترمیم",
        "create": "تخلیق",
        "create-local": "مقامی وضاحت کا اندراج",
-       "editthispage": "اس صفحہ میں ترمیم کریں",
-       "create-this-page": "اس صفحہ کو تخلیق کریں",
        "delete": "حذف",
-       "deletethispage": "یہ صفحہ حذف کریں",
-       "undeletethispage": "یہ صفحہ بحال کریں",
        "undelete_short": "بحال {{PLURAL:$1|ایک ترمیم|$1 ترامیم}}",
        "viewdeleted_short": "{{PLURAL:$1|ایک ترمیم حذف ہو چکی|$1 ترامیم حذف ہو چکیں}} دیکھیں",
        "protect": "محفوظ",
        "protect_change": "تبدیل کریں",
-       "protectthispage": "اس صفحے کو محفوظ کریں",
        "unprotect": "حفاظت میں تبدیلی",
-       "unprotectthispage": "اِسے صفحے کی حفاظت بدلیں",
        "newpage": "نیا صفحہ",
-       "talkpage": "اس صفحہ پر تبادلۂ خیال کریں",
        "talkpagelinktext": "تبادلۂ خیال",
        "specialpage": "خصوصی صفحہ",
        "personaltools": "ذاتی آلات",
-       "articlepage": "مندرجاتی صفحہ دیکھیے",
        "talk": "تبادلہٴ خیال",
        "views": "مشاہدات",
        "toolbox": "آلات",
        "tool-link-userrights": "حلقہ ہائے {{GENDER:$1|صارف}} میں تبدیلی",
        "tool-link-userrights-readonly": "حلقے{{GENDER:$1|}}دیکھیں",
        "tool-link-emailuser": "اس {{GENDER:$1|صارف}} کو برقی خط لکھیں",
-       "userpage": "صارف کا صفحہ دیکھیے",
-       "projectpage": "منصوبہ کا صفحہ دیکھیے",
        "imagepage": "فائل کا صفحہ دیکھیے",
        "mediawikipage": "پیغام کا صفحہ دیکھیے",
        "templatepage": "سانچہ کا صفحہ دیکھیے",
        "login": "داخل ہوں",
        "login-security": "اپنی شناخت کی تصدیق کریں",
        "nav-login-createaccount": "کھاتہ کھولیں یا اندراج کریں",
-       "userlogin": "کھاتہ کھولیں یا اندراج کریں",
-       "userloginnocreate": "داخلِ نوشتہ ہوجائیے",
        "logout": "اخراج",
        "userlogout": "خارج ہوجائیں",
        "notloggedin": "داخل نہیں",
        "userlogin-noaccount": "کیا آپ نے کھاتہ نہیں بنایا ہوا؟",
        "userlogin-joinproject": "منسلک ہو {{SITENAME}} سے",
-       "nologin": "کیا آپ نے کھاتہ نہیں بنایا ہوا؟ '''$1'''۔",
-       "nologinlink": "کھاتا بنائیں",
        "createaccount": "کھاتہ کھولیں",
-       "gotaccount": "پہلے سے کھاتہ بنا ہوا ہے؟ '''$1'''۔",
-       "gotaccountlink": "داخل ہوجائیے",
-       "userlogin-resetlink": "داخلِ نوشتہ ہونے کی تفاصیل بھول گئے ہیں؟",
        "userlogin-resetpassword-link": "کلمہ شناخت بھول گئے؟",
        "userlogin-helplink2": "داخل نوشتگی میں معاونت درکار ہے؟",
        "userlogin-loggedin": "آپ ویکیپیڈیا میں بطور صارف {{GENDER:$1|$1}}  پہلے سے داخل نوشتہ (logged in) ہیں۔\nدوسرے کھاتہ سے داخل ہونے کے لیے درج ذیل خانے پر کریں۔",
        "createaccountmail": "عارضی پاسورڈ استعمال کریں اور اسے متعینہ برقی ڈاک پتہ پر ارسال کریں",
        "createaccountmail-help": "پاس ورڈ معلوم کیے بغیر کسی دوسرے شخص کا کھاتہ بنانے کے لیے اسے استعمال کیا جا سکتا ہے۔",
        "createacct-realname": "اصلی نام (اختیاری)",
-       "createaccountreason": "وجہ:",
        "createacct-reason": "وجہ",
        "createacct-reason-ph": "آپ دوسرا کھاتہ کیوں تخلیق کررہے ہیں",
        "createacct-reason-help": "نوشتہ کھاتہ سازی میں نظر آنے والا پیغام",
        "preview": "نمائش",
        "showpreview": "نمائش",
        "showdiff": "تبدیلیاں دکھائیں",
-       "blankarticle": "<strong>انتباہ:</strong> آپ خالی صفحہ تخلیق کر رہے ہیں۔\nاگر آپ «{{int:savearticle}}» پر دوبارہ کلک کریں تو یہ صفحہ بغیر کسی مواد کے محفوظ ہو جائے گا۔",
+       "blankarticle": "<strong>انتباہ:</strong> آپ خالی صفحہ تخلیق کر رہے ہیں۔\nاگر آپ «$1» پر دوبارہ کلک کریں تو یہ صفحہ بغیر کسی مواد کے محفوظ ہو جائے گا۔",
        "anoneditwarning": "<strong>انتباہ:</strong> آپ ویکیپیڈیا میں داخل نہیں ہوئے ہیں۔ لہذا اگر آپ اس صفحہ میں کوئی ترمیم کرتے ہیں تو آپکا آئی پی ایڈریس (IP) اس صفحہ کے تاریخچہ ترمیم میں محفوظ ہوجائے گا۔ اگر آپ  <strong>[$1 لاگ ان]</strong> ہوتے ہیں یا کھاتہ نہ ہونے کی صورت میں <strong>[$2 کھاتہ بنا لیتے ہیں]</strong> تو تو آپ کی ترامیم آپ کے صارف نام سے محفوظ ہوگی، جنھیں آپ کسی بھی وقت ملاحظہ کر سکتے ہیں۔",
        "anonpreviewwarning": "<em>آپ داخل نہیں ہیں، چنانچہ تبدیلیاں محفوظ کرنے کی صورت میں اس صفحہ کا تاریخچہ آپ کا آئی پی پتا محفوظ کر لے گا۔</em>",
        "missingsummary": "'''انتباہ:''' آپ نے ترمیمی خلاصہ مہیّا نہیں کیا.\nاگر آپ نے محفوظ کا بٹن دوبارہ دبایا تو آپ کی ترمیم بغیر کسی خلاصہ کے محفوظ ہوجائے گی.",
-       "selfredirect": "<strong>انتباہ:</strong> آپ پیش نظر صفحہ کو خود اسی کی جانب رجوع مکرر کر رہے ہیں۔\nشاید آپ نے رجوع مکرر کا غلط ہدف درج کیا ہے یا غلط صفحہ میں ترمیم کر رہے ہیں۔\nتاہم اگر آپ «{{int:savearticle}}» پر دوبارہ کلک کریں تو بہرصورت اس رجوع مکرر کو بنا دیا جائے گا۔",
+       "selfredirect": "<strong>انتباہ:</strong> آپ پیش نظر صفحہ کو خود اسی کی جانب رجوع مکرر کر رہے ہیں۔\nشاید آپ نے رجوع مکرر کا غلط ہدف درج کیا ہے یا غلط صفحہ میں ترمیم کر رہے ہیں۔\nتاہم اگر آپ «$1» پر دوبارہ کلک کریں تو بہرصورت اس رجوع مکرر کو بنا دیا جائے گا۔",
        "missingcommenttext": "براہِ کرم! تبصرہ نیچے درج کیجئے.",
-       "missingcommentheader": "<strong>یاددہانی:</strong>  آپ نے اِس تبصرہ کیلئے عنوان یا شہ سرخی مہیّا نہیں کی ہے۔\nاگر آپ نے \"{{int:savearticle}}\" کا بٹن دوبارہ دبایا تو آپ کا تبصرہ بغیر کسی عنوان کے محفوظ ہوجائے گا۔",
+       "missingcommentheader": "<strong>یاددہانی:</strong>  آپ نے اِس تبصرہ کیلئے عنوان یا شہ سرخی مہیّا نہیں کی ہے۔\nاگر آپ نے \"$1\" کا بٹن دوبارہ دبایا تو آپ کا تبصرہ بغیر کسی عنوان کے محفوظ ہوجائے گا۔",
        "summary-preview": "نمائش خلاصہ:",
        "subject-preview": "عنوان/شہ سرخی کی نمائش:",
        "previewerrortext": "آپ کی تبدیلیوں کی نمائش دکھانے کے دوران میں کوئی نقص واقع ہو گیا ہے۔",
        "right-editsemiprotected": "\"{{int:protect-level-autoconfirmed}}\" کے طور پر محفوظ صفحات میں ترمیم",
        "right-editcontentmodel": "صفحہ کے مواد کے ماڈل میں ترمیم",
        "right-editinterface": "صارف انٹرفیس میں ترمیم",
-       "right-editusercssjs": "دیگر صارفین کی سی ایس ایس اور جاوا اسکرپٹ فائلوں میں ترمیم",
        "right-editusercss": "دیگر صارفین کی سی ایس ایس فائلوں میں ترمیم",
        "right-edituserjs": "دیگر صارفین کی جاوا اسکرپٹ فائلوں میں ترمیم",
        "right-editmyusercss": "اپنی ذاتی سی ایس ایس فائلوں میں ترمیم",
        "action-applychangetags": "اپنی تبدیلیوں پر ٹیگ گاری کرنے",
        "action-changetags": "انفرادی نسخوں اور نوشتہ کے اندراج پر ٹیگوں کو لگانے اور ہٹانے",
        "action-deletechangetags": "ڈیٹابیس سے ٹیگوں کو حذف کرنے",
-       "action-purge": "اس صفحہ کا کیشے خالی کرنے",
+       "action-purge": "اس صفحہ کا کیشے خالی کریں",
        "nchanges": "$1 {{PLURAL:$1|تبدیلی|تبدیلیاں}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|آخری آمد کے بعد سے}}",
        "enhancedrc-history": "تاریخچہ",
        "recentchanges-legend-heading": "<strong>اختصارات:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (نیز [[Special:NewPages|جدید صفحات کی فہرست]]) ملاحظہ فرمائیں",
        "recentchanges-submit": "دکھائیں",
+       "rcfilters-filter-user-experience-level-experienced-label": "تجربہ کار صارف",
        "rcnotefrom": "ذیل میں <strong>$2</strong> سے کی گئی {{PLURAL:$5|تبدیلی|تبدیلیاں}} <strong>$1</strong> تک دکھائی جا رہی ہیں۔",
        "rclistfrom": "$2، $3ء سے ہونے والی نئی تبدیلیاں دکھائیں",
        "rcshowhideminor": "معمولی ترامیم $1",
        "rcshowhidecategorization": "صفحاتی زمرہ بندی $1",
        "rcshowhidecategorization-show": "دکھائیں",
        "rcshowhidecategorization-hide": "چھپائیں",
-       "rclinks": "آخری $2 روز میں ہونے والی $1 تبدیلیوں کا مشاہدہ کریں<br />$3",
+       "rclinks": "آخری $2 روز میں ہونے والی $1 تبدیلیوں کا مشاہدہ کریں",
        "diff": "فرق",
        "hist": "تاریخچہ",
        "hide": "چھـپائیں",
        "listusers-blocked": "(مسدود)",
        "activeusers": "متحرک صارفین کی فہرست",
        "activeusers-intro": "ذیل میں ان صارفین کی فہرست ہے جو گزشتہ $1 {{PLURAL:$1|دن|دنوں}} میں کسی بھی قسم کی سرگرمی میں شریک رہے ہوں۔",
-       "activeusers-count": "گزشتÛ\81 {{PLURAL:$3|دÙ\86|$3 Ø¯Ù\86Ù\88Úº}} Ù\85Û\8cÚº $1 {{PLURAL:$1|اÙ\82داÙ\85|اÙ\82داÙ\85ات}}",
+       "activeusers-count": "گزشتÛ\81 {{PLURAL:$3|دÙ\86|$3 Ø¯Ù\86Ù\88Úº}} Ù\85Û\8cÚº $1 {{PLURAL:$1|ترÙ\85Û\8cÙ\85|تراÙ\85Û\8cÙ\85}}",
        "activeusers-from": "اس حرف سے شروع ہونے والے صارفین کے نام دکھائیں:",
        "activeusers-noresult": "یہ صارف نہیں مل سکا",
        "activeusers-submit": "فعال صارفین دکھائیں",
        "undeleteviewlink": "دکھاؤ",
        "undeleteinvert": "انتخاب بالعکس",
        "undeletecomment": "وجہ:",
-       "undeletedrevisions": "{{PLURAL:$1|1 نظر ثانی|$1 نظر ثانیاں}} بحال",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 نسخہ|$1 نسخے}} اور {{PLURAL:$2|1 فائل|$2 فائلیں}} بحال",
-       "undeletedfiles": "{{PLURAL:$1|1 فائل|$1 فائل}} بحال کی {{PLURAL:$1|گئی|گئیں}}",
        "cannotundelete": "کلی یا جزوی طور پر بحالی کا اقدام ناکام رہا:\n$1",
        "undeletedpage": "<strong>$1 کو بحال کر دیا گیا</strong>\n\nحالیہ حذف شدگیوں اور بحالیوں کا نوشتہ دیکھنے کے لیے [[Special:Log/delete|نوشتہ حذف شدگی]] ملاحظہ فرمائیں۔",
        "undelete-header": "حالیہ حذف شدہ صفحات کے لیے [[Special:Log/delete|نوشتۂ حذف شدگی]] دیکھیں۔",
        "confirmrecreate": "آپ کی ترمیم شروع ہونے کے بعد صارف [[User:$1|$1]] ([[User talk:$1|talk]]) نے اس صفحہ کو {{GENDER:$1|حذف کر دیا}}، اس کی وجہ حسب ذیل ہے:\n: <em>$2</em>\nبراہ کرم اس بات کی تصدیق کر لیں کہ آیا آپ واقعی اس صفحہ کو دوبارہ تخلیق کرنا چاہتے ہیں یا نہیں۔",
        "confirmrecreate-noreason": "آپ کی ترمیم شروع ہونے کے بعد صارف [[User:$1|$1]] ([[User talk:$1|talk]]) نے اس صفحہ کو {{GENDER:$1|حذف کر دیا}}۔\nبراہ کرم اس بات کی تصدیق کر لیں کہ آیا آپ واقعی اس صفحہ کو دوبارہ تخلیق کرنا چاہتے ہیں یا نہیں۔",
        "recreate": "دوبارہ تخلیق کریں",
+       "confirm-purge-title": "اس صفحہ کا کیشے خالی کریں",
        "confirm_purge_button": "جی!",
        "confirm-purge-top": "اس صفحہ کا کیشے صاف کریں؟",
        "confirm-purge-bottom": "صفحہ کا کیشے صارف کرنے پر تازہ ترین نسخہ نظر آئے گا۔",
        "logentry-tag-update-revision": "$1 نے صفحہ $3 کے نسخہ $4 پر موجود ٹیگوں کو {{GENDER:$2|تازہ کیا}} ({{PLURAL:$7|شامل کیا گیا|شامل کیے گئے}} $6؛ {{PLURAL:$9|حذف کیا گیا|حذف کیے گئے}} $8)",
        "logentry-tag-update-logentry": "$1 نے صفحہ $3 کے اندراج نوشتہ $5 پر موجود ٹیگوں کو {{GENDER:$2|تازہ کیا}} ({{PLURAL:$7|شامل کیا گیا|شامل کیے گئے}} $6؛ {{PLURAL:$9|حذف کیا گیا|حذف کیے گئے}} $8)",
        "rightsnone": "(کچھ نہیں)",
-       "revdelete-summary": "خلاصۂ تدوین",
        "feedback-adding": "صفحہ میں تبصرہ درج کیا جا رہا ہے۔۔۔",
        "feedback-back": "واپس",
        "feedback-bugcheck": "زبردست! جانچ لیں کہ کہیں پہلے ہی [$1 اس کی اطلاع نہ دے دی گئی ہو]۔",
index 99ab540..29cd8c3 100644 (file)
        "password-change-forbidden": "Siz bu vikida maxfiy soʻzni oʻzgartira olmaysiz.",
        "login": "Kirish",
        "nav-login-createaccount": "Kirish / Hisob yaratish",
-       "userlogin": "Kirish / Hisob yaratish",
-       "userloginnocreate": "Kirish",
        "logout": "Chiqish",
        "userlogout": "Chiqish",
        "notloggedin": "Siz tizimga kirmagansiz",
        "userlogin-noaccount": "Hisobingiz yoʻqmi?",
        "userlogin-joinproject": "{{SITENAME}}ga aʼzo boʻlish",
-       "nologin": "Hisobingiz yoʻqmi? '''$1'''.",
-       "nologinlink": "Hisob yaratish",
        "createaccount": "Hisob yaratish",
-       "gotaccount": "Hisobingiz bormi? '''$1'''.",
-       "gotaccountlink": "Kirish",
-       "userlogin-resetlink": "Kirish maʻlumotlaringiz esdan chiqdimi?",
        "userlogin-resetpassword-link": "Maxfiy so‘zni unutib qoʻydingizmi?",
        "userlogin-helplink2": "Kirish uchun yordam",
        "userlogin-loggedin": "Siz {{GENDER:$1|$1}} nomi bilan kirgansiz.\nBoshqa hisob raqami orqali kirish uchun quyidagi formadan foydalaning.",
        "createacct-another-email-ph": "Elektron pochta manzilini kiriting",
        "createaccountmail": "Tasodifan tanlab beriladigan vaqtinchalik maxfiy soʻzdan foydalanish (elektron pochta manzilingizga joʻnatiladi)",
        "createacct-realname": "Haqiqiy ismi (ixtiyoriy)",
-       "createaccountreason": "Sabab:",
        "createacct-reason": "Sabab",
        "createacct-reason-ph": "Nimaga yana boshqa hisob yaratyapsiz",
        "createacct-submit": "Hisob yaratish",
        "passwordreset-emaildisabled": "Email xususiyatlari ushbu vikida oʻchirib qoʻyilgan.",
        "passwordreset-username": "Foydalanuvchi nomi:",
        "passwordreset-domain": "Domen:",
-       "passwordreset-capture": "Xatni koʻrmoqchimisiz?",
        "passwordreset-email": "Elektron pochta manzilingiz:",
        "passwordreset-emailelement": "Foydalanuvchi ismi: \n$1\n\nVaqtinchalik maxfiy so'z: \n$2",
        "changeemail": "Elektron pochta manzilini oʻzgartirish",
        "editingsection": "Tahrirlanmoqda — $1 (boʻlimi)",
        "editingcomment": "Yangi mavzu yaratilmoqda — $1",
        "editconflict": "Tahrirlash toʻqnashuvi: $1",
-       "explainconflict": "Sahifani tahrirlayotgan mahalingizda boshqa birov unga oʻzgarish kiritib ulgurdi.\nYuqoridagi tahrir oynasida sahifaning joriy matnini koʻrishingiz mumkin.\nPastdagida esa siz kiritgan oʻzgarishlar koʻrsatilgan.\nKiritmoqchi boʻlgan oʻzgarishlaringizni pastdagi oynadan yuqoridagiga oʻtkazing.\n«{{int:savearticle}}» tugmasini bossangiz <strong>faqat</strong> yuqoridagi matn saqlanadi.",
+       "explainconflict": "Sahifani tahrirlayotgan mahalingizda boshqa birov unga oʻzgarish kiritib ulgurdi.\nYuqoridagi tahrir oynasida sahifaning joriy matnini koʻrishingiz mumkin.\nPastdagida esa siz kiritgan oʻzgarishlar koʻrsatilgan.\nKiritmoqchi boʻlgan oʻzgarishlaringizni pastdagi oynadan yuqoridagiga oʻtkazing.\n«$1» tugmasini bossangiz <strong>faqat</strong> yuqoridagi matn saqlanadi.",
        "yourtext": "Sizning matningiz",
        "editingold": "<strong>Ogohlantirish: Siz sahifaning eski nusxasini tahrirlayapsiz.</strong> Uni shunday holicha saqlasangiz, keyingi nusxalardagi oʻzgarishlar yoʻqotiladi.",
        "yourdiff": "Farqlar",
        "saveprefs": "Saqlash",
        "restoreprefs": "Barcha moslamalarni dastlabki holatiga qaytarish",
        "prefs-editing": "Tahrirlash",
-       "rows": "Qatorlar soni:",
-       "columns": "Ustunlar soni:",
        "searchresultshead": "Qidiruv",
        "stub-threshold": "<a href=\"#\" class=\"stub\">Chala maqolalarga</a> ishorat keltirish uchun pastki chegara:",
        "stub-threshold-disabled": "Oʻchirib qoʻyilgan",
        "rcshowhidemine": "Oʻz tahrirlarimni $1",
        "rcshowhidemine-show": "koʻrsat",
        "rcshowhidemine-hide": "yashir",
-       "rclinks": "Oxirgi $2 kun ichida sodir boʻlgan $1 ta oʻzgarish koʻrsatildi<br />$3",
+       "rclinks": "Oxirgi $2 kun ichida sodir boʻlgan $1 ta oʻzgarish koʻrsatildi",
        "diff": "farq",
        "hist": "tarix",
        "hide": "yashir",
        "undeleteviewlink": "koʻrib chiqish",
        "undeleteinvert": "Tanlash tartibini almashtirish",
        "undeletecomment": "Sababi:",
-       "undeletedrevisions": "{{PLURAL:$1|1 ta oʻzgarish|$1 ta tahrirlar}} tiklandi",
-       "undeletedfiles": "{{PLURAL:$1|Bitta fayl|$1 ta fayl}} tiklandi",
        "undelete-search-title": "O'chirilgan sahifalarni qidirish",
        "undelete-search-box": "O'chirilgan sahifalarni qidirish",
        "undelete-search-prefix": "Bundan boshlangan sahifalarni koʻrsatish:",
        "feedback-close": "Bajarildi",
        "searchsuggest-search": "Qidiruv",
        "searchsuggest-containing": "ichida bu boʻlgan...",
-       "api-error-unknown-code": "Noaniq xato: \"$1\".",
        "api-error-unknownerror": "Noaniq xato: \"$1\".",
        "limitreport-title": "Tahlillagich maʼlumotlari:",
        "special-characters-group-latin": "Lotin",
index c72fc02..fc13881 100644 (file)
        "externaldberror": "Se xè verifegà n'erore con el server de autenticasion esterno, opure no se dispone de łe autorizasion nesesarie par ajornare el proprio aceso esterno.",
        "login": "Entra",
        "nav-login-createaccount": "Entra / Regìstrete",
-       "userlogin": "Entra / Regìstrete",
-       "userloginnocreate": "Entra",
        "logout": "Và fora",
        "userlogout": "và fora",
        "notloggedin": "No te sì entrà col to nome utente",
        "userlogin-noaccount": "Gheto mia na utensa?",
        "userlogin-joinproject": "Unìssete a {{SITENAME}}",
-       "nologin": "No te sito gnancora iscrito? '''$1'''.",
-       "nologinlink": "Falo desso",
        "createaccount": "Crea un utente novo",
-       "gotaccount": "Sito zà iscrito? '''$1'''.",
-       "gotaccountlink": "Entra",
-       "userlogin-resetlink": "Desmentegà i to dati d'aceso?",
        "userlogin-resetpassword-link": "Te gheto desmentegà ła paroła d'ordine?",
        "userlogin-helplink2": "Ajuto par 'ndar drento",
        "createacct-emailrequired": "Indirisso 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:",
        "createacct-reason": "Motivo",
        "createacct-reason-ph": "Com'èla te sì drio crear n'altra utensa",
        "createacct-submit": "Crea la to utensa",
        "anonpreviewwarning": "\"No te ghe eseguio el login. Salvando el to indiriso IP sarà rejistrà ne ła cronołosia de sta voxe.\"",
        "missingsummary": "'''Ocio:''' No te ghè indicà l'ogeto de la modifica. Macando de novo 'Salva la pagina' la modifica la vegnerà con l'ogeto vodo.",
        "missingcommenttext": "Inserissi un comento qua soto.",
-       "missingcommentheader": "'''Ocio:''' No te ghè fornìo un ogeto par sto comento. Macando da novo \"{{int:savearticle}}\" la modifica la vegnarà salvà sensa ogeto.",
+       "missingcommentheader": "'''Ocio:''' No te ghè fornìo un ogeto par sto comento. Macando da novo \"$1\" la modifica la vegnarà salvà sensa ogeto.",
        "summary-preview": "Anteprima del comento:",
        "subject-preview": "Anteprima ogeto/intestazion:",
        "blockedtitle": "Utente blocà",
        "editingsection": "Canbia $1 (sezion)",
        "editingcomment": "Modifica de $1 (sezion nova)",
        "editconflict": "Conflito de edizion: $1",
-       "explainconflict": "Qualcun altro el ga salvà na so version de ła voxe nel tempo in cui te stavi preparando ła to version.\nLa casela de modifica de sora contegne el testo de la voxe ne ła so forma atuałe (el testo atualmente online).\nLe to modifiche łe xè invese contegnue ne ła caseła de modifica de soto.\nTe dovarè inserire, se te vołi, le to modifiche nel testo esistente, e perciò scrivarle ne ła caseła de sora.\n'''Soltanto''' el testo ne ła caseła de sora el sarà salvà se te struchi el botón \"{{int:savearticle}}\".",
+       "explainconflict": "Qualcun altro el ga salvà na so version de ła voxe nel tempo in cui te stavi preparando ła to version.\nLa casela de modifica de sora contegne el testo de la voxe ne ła so forma atuałe (el testo atualmente online).\nLe to modifiche łe xè invese contegnue ne ła caseła de modifica de soto.\nTe dovarè inserire, se te vołi, le to modifiche nel testo esistente, e perciò scrivarle ne ła caseła de sora.\n'''Soltanto''' el testo ne ła caseła de sora el sarà salvà se te struchi el botón \"$1\".",
        "yourtext": "El to testo",
        "storedversion": "Version in archivio",
        "nonunicodebrowser": "'''OCIO: Te stè doparando un browser mìa conpatibile coi caràteri Unicode. Par consentir la modifica de le pagine senza crear inconvenienti, i caràteri non ASCII i vien mostrà ne la casela de modifica soto forma de codici esadecimali.'''",
        "right-protect": "Canbiar i livèi de protezion e modificar le pagine protete ricorsivamente",
        "right-editprotected": "Modifica pagine protete",
        "right-editinterface": "Modifica l'interfacia utente",
-       "right-editusercssjs": "Modifica i file CSS e JS de altri utenti",
        "right-editusercss": "Modifica i file CSS de altri utenti",
        "right-edituserjs": "Modifica i file JS de altri utenti",
        "right-rollback": "Anula in prèssia le modifiche fate da l'ultimo utente su na pagina particolar.",
        "rcshowhidemine": "$1 i me canbiamenti",
        "rcshowhidemine-show": "Mostra",
        "rcshowhidemine-hide": "Scondi",
-       "rclinks": "Fà védar i ultimi $1 canbiamenti fati in tei ultimi $2 zorni<br />$3",
+       "rclinks": "Fà védar i ultimi $1 canbiamenti fati in tei ultimi $2 zorni",
        "diff": "dif",
        "hist": "stor",
        "hide": "scondi",
        "undeleteviewlink": "varda",
        "undeleteinvert": "Inverti selession",
        "undeletecomment": "Motivassion:",
-       "undeletedrevisions": "{{PLURAL:$1|Una revision recuperà|$1 revision recuperà}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|Una revision|$1 revision}} e $2 file recuperà",
-       "undeletedfiles": "{{PLURAL:$1|Un file recuperà|$1 file recuperà}}",
        "cannotundelete": "Ripristino nó riusìo:\n$1",
        "undeletedpage": "'''$1 la xè stà recuperà'''\n\nConsulta el [[Special:Log/delete|registro de le scancełassion]] par vardare łe scancełassion e i recuperi pì reçenti.",
        "undelete-header": "Varda el [[Special:Log/delete|registro de le scancelazion]] par védar le scancelazion piassè reçenti.",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|el|la}} xe stà automategamente promoso/a da $4 a $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|el|la}} gà cargà $3",
        "rightsnone": "(nissun)",
-       "revdelete-summary": "modifica ogeto",
        "feedback-adding": "Inserimento del feedback inte ła pàjina...",
        "feedback-back": "Indrìo",
        "feedback-bugcheck": "Otimo! Verifega che nó 'l sia xà infrà i [$1 bug conosui].",
index f22471c..52aad7f 100644 (file)
        "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",
-       "userlogin": "Kirjutadas / Sada registracii",
-       "userloginnocreate": "Kirjutagatoiš sistemha",
        "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?",
        "userlogin-helplink2": "Abu tulendanke sistemha",
        "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?",
        "createacct-submit": "Säta kävutajanprofil'",
        "passwordreset": "Peitsanan alustuz",
        "passwordreset-username": "Kävutajan nimi:",
        "passwordreset-domain": "Domen",
-       "passwordreset-capture": "Ozutada-k loptud kirjeine?",
        "passwordreset-email": "E-počtan adres:",
        "passwordreset-emailelement": "Kävutajannimi: \n$1\n\nAigaline peitsana: \n$2",
        "passwordreset-emailsentemail": "Muštatai kirjeine uden peitsananke oigetihe e-počtadme.",
        "anoneditwarning": "<strong>Homaikat:<strong> Tö et olgoi kirjutanus sistemha. Teiden IP-adres kirjutadas necen lehtpolen redaktiruindan istorijaha, ku toižetaškandet sidä. Ku tö <strong>[$1 kirjutatoiš sistemha]</strong> vai <strong>[$2 sat registracijan]</strong>, ka teiden redakcijad sidotas teiden kävutajannimehe. Siloi teil linneb toižid-ki ližavoimuzid.",
        "missingsummary": "'''Muštatez:''' Tö et olgoi andnuded toižetusiden lühüdad ümbrikacundad.\nKu tö valičet völ kerdan \"Kirjutada lehtpol'\", ka teiden toižetused kirjutase ningoižeta ümbrikacundata.",
        "missingcommenttext": "Olgat hüväd, pangat teiden tedotuz alahaks.",
-       "missingcommentheader": "'''Muštatez:''' Tö et olgoi andnuded toižetusiden ümbrikacundoiden pälkirjutest.\nKu tö valičet völ kerdan ”{{int:savearticle}}” \"Kirjutada lehtpol'\", ka teiden toižetusiden ümbrikacund kirjutase ningoižeta pälkirjuteseta.",
+       "missingcommentheader": "'''Muštatez:''' Tö et olgoi andnuded toižetusiden ümbrikacundoiden pälkirjutest.\nKu tö valičet völ kerdan ”$1” \"Kirjutada lehtpol'\", ka teiden toižetusiden ümbrikacund kirjutase ningoižeta pälkirjuteseta.",
        "summary-preview": "Ümbrikacund linneb mugoi:",
        "subject-preview": "Ümbrikacundan pälkirjutez linneb mugoi:",
        "blockedtitle": "Kävutai om blokiruidud",
        "saveprefs": "Kirjutada",
        "restoreprefs": "Endištada kaik augotižjärgendused (kaikiš sekcijoiš)",
        "prefs-editing": "Redaktiruind",
-       "rows": "Rivid:",
-       "columns": "Pachid:",
        "searchresultshead": "Ecind",
        "stub-threshold": "Nägutesen märitamižen künduz <a href=\"#\" class=\"stub\">kosketust otetile</a> (baitoiš)",
        "stub-threshold-disabled": "Ei ole kävutamas",
        "userrights-reason": "Sü:",
        "userrights-no-interwiki": "Teile ei sa toižetada toižiden wikiden kävutajiden oiktusid.",
        "userrights-nodatabase": "Andmusiden $1-bazad ei ole vai se ei ole lokaline.",
-       "userrights-nologin": "Teile pidab [[Special:UserLogin|kirjutadas sistemha]] administratoran oiktusidenke, miše antta oiktusid kävutajile.",
-       "userrights-notallowed": "Teiden kävutajan registracijanke ei sa antta oiktusid toižile kävutajile da heitta toižiden kävutajiden oiktusid.",
        "userrights-changeable-col": "Gruppad, kudambad teile sab toižetada",
        "userrights-unchangeable-col": "Gruppad, kudambid teile ei sa toižetada",
        "userrights-irreversible-marker": "$1*",
        "right-protect": "Vajehtada lehtpoliden kaičendan tazopind i redaktiruida kaitud lehtpoled",
        "right-editprotected": "Redaktiruida kaitud lehtpoled (kaskadkaičemata)",
        "right-editinterface": "Redaktiruida kävutajan intefeis",
-       "right-editusercssjs": "Redaktiruida toižiden kävutajiden CSS- da JS-failad",
        "right-editusercss": "Redaktiruida toižiden kävutajiden CSS-failad",
        "right-edituserjs": "Redaktiruida toižiden kävutajiden JS-failad",
        "right-noratelimit": "Ei ole kaidendust piguden mödhe",
        "right-userrights-interwiki": "Toižetada toižiden wiki-saitoiden kävutajiden oiktused",
        "right-siteadmin": "Luklostada da avaita andmusiden baz",
        "right-sendemail": "Oigeta e-počtad toižile kävutajile",
-       "right-passwordreset": "Kacta e-kirjeižid peitsanan toižetandanke",
        "newuserlogpage": "Kävutajiden registracijan aigkirj",
        "newuserlogpagetext": "Tantoi registriruidud kävutajiden nimikirjutez.",
        "rightslog": "Kävutajan oiktusiden aigkirj",
        "rcshowhidemine": "$1 ičein redakcijad",
        "rcshowhidemine-show": "Ozutada",
        "rcshowhidemine-hide": "Peitta",
-       "rclinks": "Ozutada jäl'gmäižed $1 toižetust $2 päiväs<br />$3",
+       "rclinks": "Ozutada jäl'gmäižed $1 toižetust $2 päiväs",
        "diff": "erod",
        "hist": "istorii",
        "hide": "Peitta",
        "undeleteviewlink": "nähta",
        "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:\n$1",
        "undeletedpage": "'''$1-lehtpol' om endištadud'''\n\nKc. [[Special:Log/delete|čudandoiden aigkirj]], miše tedištada tantoižiš čudandoiš da endištandoiš.",
        "undelete-header": "Kc. [[Special:Log/delete|čudendoiden aigkirj]], miše tedištada tantoi čudud lehtpoliš.",
        "revdelete-unrestricted": "kaidendused heittud administratoriden täht",
        "logentry-newusers-create": "{{GENDER:$2|tegihe}} $1-kävutajaks",
        "rightsnone": "(ei ole)",
-       "revdelete-summary": "kaik toižetused",
        "feedback-cancel": "Heitta pätand",
        "feedback-close": "Vaumiž",
        "feedback-error2": "Petuz. Ei voi redaktiruida",
        "feedback-subject": "Tem:",
        "searchsuggest-search": "Ectä",
        "searchsuggest-containing": "mülütajad...",
-       "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.",
-       "api-error-illegal-filename": "Kel'tud failannimi.",
-       "api-error-unclassified": "Tundmatoi petuz.",
-       "api-error-unknown-code": "Tundmatoi petuz: \"$1\"",
        "api-error-unknown-warning": "Tadmatoi varutuz: $1",
        "api-error-unknownerror": "Tundmatoi petuz: \"$1\"",
        "duration-seconds": "$1 {{PLURAL:$1|sekund|sekunad}}",
index 5bc1cbe..744918b 100644 (file)
@@ -35,7 +35,8 @@
                        "Matma Rex",
                        "Xð",
                        "Nguyên Lê",
-                       "Asmen"
+                       "Asmen",
+                       "Stephanecbisson"
                ]
        },
        "tog-underline": "Gạch chân liên kết:",
        "anontalk": "Thảo luận",
        "navigation": "Xem nhanh",
        "and": "&#32;và",
-       "qbfind": "Tìm kiếm",
-       "qbbrowse": "Duyệt",
-       "qbedit": "Sửa đổi",
-       "qbpageoptions": "Trang này",
-       "qbmyoptions": "Trang cá nhân",
        "faq": "Câu hỏi thường gặp",
-       "faqpage": "Project:Các câu hỏi thường gặp",
        "actions": "Tác vụ",
        "namespaces": "Không gian tên",
        "variants": "Biến thể",
        "edit-local": "Sửa miêu tả địa phương",
        "create": "Tạo",
        "create-local": "Thêm miêu tả địa phương",
-       "editthispage": "Sửa đổi trang này",
-       "create-this-page": "Tạo trang này",
        "delete": "Xóa",
-       "deletethispage": "Xóa trang này",
-       "undeletethispage": "Phục hồi trang này",
        "undelete_short": "Phục hồi {{PLURAL:$1|một sửa đổi|$1 sửa đổi}}",
        "viewdeleted_short": "Xem {{PLURAL:$1|sửa đổi|$1 sửa đổi}} đã xóa",
        "protect": "Khóa",
        "protect_change": "thay đổi",
-       "protectthispage": "Khóa trang này",
        "unprotect": "Đổi mức khóa",
-       "unprotectthispage": "Thay đổi mức khóa của trang này",
        "newpage": "Trang mới",
-       "talkpage": "Thảo luận về trang này",
        "talkpagelinktext": "Thảo luận",
        "specialpage": "Trang đặc biệt",
        "personaltools": "Công cụ cá nhân",
-       "articlepage": "Xem trang nội dung",
        "talk": "Thảo luận",
        "views": "Các hiển thị",
        "toolbox": "Công cụ",
        "tool-link-userrights": "Thay đổi nhóm {{GENDER:$1}}người dùng",
        "tool-link-userrights-readonly": "Xem {{GENDER:$1}}nhóm người dùng",
        "tool-link-emailuser": "Gửi thư cho {{GENDER:$1}}người dùng này",
-       "userpage": "Xem trang thành viên",
-       "projectpage": "Xem trang dự án",
        "imagepage": "Xem trang tập tin",
        "mediawikipage": "Thông điệp giao diện",
        "templatepage": "Xem trang bản mẫu",
        "preview": "Xem trước",
        "showpreview": "Xem trước",
        "showdiff": "Xem thay đổi",
-       "blankarticle": "<strong>Cảnh báo:</strong> Bạn sẽ tạo ra một trang trống.\nNếu bấm “{{int:savearticle}}” lần nữa, một trang không có nội dung sẽ được tạo ra.",
+       "blankarticle": "<strong>Cảnh báo:</strong> Bạn sẽ tạo ra một trang trống.\nNếu bấm “$1” lần nữa, một trang không có nội dung sẽ được tạo ra.",
        "anoneditwarning": "<strong>Cảnh báo:</strong> Bạn chưa đăng nhập. Địa chỉ IP của bạn sẽ bị hiển thị công khai nếu bạn thực hiện bất kỳ sửa đổi nào. Nếu bạn <strong>[$1 đăng nhập]</strong> hoặc <strong>[$2 mở tài khoản]</strong>, sửa đổi của bạn sẽ được gán bởi tên đăng nhập của bạn, cùng nhiều lợi ích khác.",
        "anonpreviewwarning": "''Bạn chưa đăng nhập. Khi lưu trang này, địa chỉ IP của bạn sẽ được ghi vào lịch sử trang.''",
        "missingsummary": "'''Nhắc nhở:''' Bạn đã không ghi lại tóm lược sửa đổi. Nếu bạn nhấn Lưu trang một lần nữa, sửa đổi của bạn sẽ được lưu mà không có tóm lược.",
-       "selfredirect": "<strong>Cảnh báo:</strong> Bạn sắp đổi hướng trang này đến chính trang này.\nCó lẽ bạn đã định rõ mục tiêu sai hoặc bạn đang sửa trang sai.\nNếu bạn bấm “{{int:savearticle}}” lần nữa, trang đổi hướng sẽ được tạo ra.",
+       "selfredirect": "<strong>Cảnh báo:</strong> Bạn sắp đổi hướng trang này đến chính trang này.\nCó lẽ bạn đã định rõ mục tiêu sai hoặc bạn đang sửa trang sai.\nNếu bạn bấm “$1” lần nữa, trang đổi hướng sẽ được tạo ra.",
        "missingcommenttext": "Xin hãy gõ vào lời bàn luận ở dưới.",
-       "missingcommentheader": "<strong>Nhắc nhở:</strong> Bạn chưa ghi chủ đề/tiêu đề cho bàn luận này.\nNếu bạn nhấn nút “{{int:savearticle}}” lần nữa, sửa đổi của bạn sẽ được lưu mà không có đề mục.",
-       "summary-preview": "Xem trước dòng tóm lược:",
+       "missingcommentheader": "<strong>Nhắc nhở:</strong> Bạn chưa ghi chủ đề/tiêu đề cho bàn luận này.\nNếu bạn nhấn nút “$1” lần nữa, sửa đổi của bạn sẽ được lưu mà không có đề mục.",
+       "summary-preview": "Xem trước dòng tóm lược sửa đổi:",
        "subject-preview": "Xem trước đề mục:",
        "previewerrortext": "Có lỗi xảy ra khi xem trước những thay đổi của bạn.",
        "blockedtitle": "Thành viên bị cấm",
        "editingsection": "Sửa đổi $1 (đề mục)",
        "editingcomment": "Sửa đổi $1 (đề mục mới)",
        "editconflict": "Sửa đổi mâu thuẫn: $1",
-       "explainconflict": "Trang này có đã được lưu bởi người khác sau khi bạn bắt đầu sửa.\nPhía trên là bản hiện tại.\nPhía dưới là sửa đổi của bạn.\nBạn sẽ phải trộn thay đổi của bạn với bản hiện tại.\n'''Chỉ có''' phần văn bản ở phía trên là sẽ được lưu khi bạn nhất nút “{{int:savearticle}}”.",
+       "explainconflict": "Trang này có đã được lưu bởi người khác sau khi bạn bắt đầu sửa.\nPhía trên là bản hiện tại.\nPhía dưới là sửa đổi của bạn.\nBạn sẽ phải trộn thay đổi của bạn với bản hiện tại.\n'''Chỉ có''' phần văn bản ở phía trên là sẽ được lưu khi bạn nhất nút “$1”.",
        "yourtext": "Nội dung bạn nhập",
        "storedversion": "Phiên bản lưu",
        "nonunicodebrowser": "'''CHU' Y': Tri`nh duye^.t cu?a ba.n kho^ng ho^~ tro+. unicode. Mo^.t ca'ch dde^? ba.n co' the^? su+?a ddo^?i an toa`n trang na`y: ca'c ky' tu+. kho^ng pha?i ASCII se~ xua^'t hie^.n trong ho^.p soa.n tha?o du+o+'i da.ng ma~ tha^.p lu.c pha^n.'''",
        "readonlywarning": "<strong>CẢNH BÁO: Cơ sở dữ liệu đã bị khóa để bảo dưỡng, do đó bạn không thể lưu các sửa đổi của mình. Bạn nên cắt-dán đoạn bạn vừa sửa vào một tập tin và lưu nó lại để sửa đổi sau này.</strong>\n\nQuản trị viên hệ thống khi khóa dữ liệu đã đưa ra lý do: $1",
        "protectedpagewarning": "'''Cảnh báo: Trang này đã bị khóa và chỉ có các thành viên có quyền quản lý mới có thể sửa được.'''\nThông tin mới nhất trong nhật trình được ghi dưới đây để tiện theo dõi:",
        "semiprotectedpagewarning": "'''Lưu ý:''' Trang này đã bị khóa nên chỉ có các thành viên có tài khoản mới có thể sửa đổi được.\nThông tin mới nhất trong nhật trình được ghi dưới đây để tiện theo dõi:",
-       "cascadeprotectedwarning": "'''Cảnh báo:''' Trang này đã bị khóa, chỉ có thành viên có quyền quản lý mới có thể sửa đổi được, vì nó được nhúng vào {{PLURAL:$1|trang|những trang}} bị khóa theo tầng sau:",
+       "cascadeprotectedwarning": "'''Cảnh báo:''' Trang này đã bị khóa, chỉ có thành viên có [[Special:ListGroupRights|quyền quản lý]] mới có thể sửa đổi, vì nó được nhúng vào {{PLURAL:$1|trang|những trang}} bị khóa theo tầng sau:",
        "titleprotectedwarning": "'''Cảnh báo:  Trang này đã bị khóa và bạn phải có một số [[Special:ListGroupRights|quyền nhất định]] mới có thể tạo trang.'''\nThông tin mới nhất trong nhật trình được ghi dưới đây để tiện theo dõi:",
        "templatesused": "{{PLURAL:$1|Bản mẫu|Các bản mẫu}} dùng trong trang này:",
        "templatesusedpreview": "{{PLURAL:$1|Bản mẫu|Các bản mẫu}} sẽ được dùng trong trang này:",
        "post-expand-template-argument-warning": "Cảnh báo: Trang này có chứa ít nhất một tham số bản mẫu có kích thước bung ra quá lớn.\nNhững tham số này sẽ bị bỏ đi.",
        "post-expand-template-argument-category": "Trang có chứa tham số bản mẫu bị loại bỏ",
        "parser-template-loop-warning": "Phát hiện bản mẫu lặp vòng: [[$1]]",
+       "template-loop-category": "Trang có bản mẫu lặp vòng",
+       "template-loop-category-desc": "Trang chứa một hoặc nhiều bản mẫu lặp vòng, tức là những bản mẫu tự gọi đệ quy chính nó.",
        "parser-template-recursion-depth-warning": "Bản mẫu đã vượt quá giới hạn về độ sâu đệ quy ($1)",
        "language-converter-depth-warning": "Đã vượt quá giới hạn độ sâu của bộ chuyển đổi ngôn ngữ ($1)",
        "node-count-exceeded-category": "Trang có số nốt vượt quá giới hạn cho phép",
        "page_first": "đầu",
        "page_last": "cuối",
        "histlegend": "Chọn so sánh: Đánh dấu để chọn các phiên bản để so sánh rồi nhấn Enter hoặc nút ở dưới.<br />\nChú giải: '''({{int:cur}})''' = khác với phiên bản hiện hành, '''({{int:last}})''' = khác với phiên bản trước, '''{{int:minoreditletter}}''' = sửa đổi nhỏ.",
-       "history-fieldset-title": "Tìm trong lịch sử",
-       "history-show-deleted": "Chỉ bị xóa",
+       "history-fieldset-title": "Tìm trong lịch sử trang",
+       "history-show-deleted": "Chỉ những sửa đổi bị xóa",
        "histfirst": "cũ nhất",
        "histlast": "mới nhất",
        "historysize": "({{PLURAL:$1|1 byte|$1 byte}})",
        "search-file-match": "(khớp nội dung tập tin)",
        "search-suggest": "Có phải bạn muốn tìm: $1",
        "search-rewritten": "Đang xem các kết quả cho $1. Tìm kiếm cho $2 thay thế.",
-       "search-interwiki-caption": "Các dự án liên quan",
+       "search-interwiki-caption": "Kết quả từ các dự án liên quan",
        "search-interwiki-default": "Kết quả từ $1:",
        "search-interwiki-more": "(thêm)",
        "search-interwiki-more-results": "thêm kết quả",
        "saveusergroups": "Lưu nhóm {{GENDER:$1}}người dùng",
        "userrights-groupsmember": "Thuộc nhóm:",
        "userrights-groupsmember-auto": "Ngầm thuộc nhóm:",
-       "userrights-groups-help": "Bạn có thể xếp thành viên này vào nhóm khác:\n* Hộp kiểm được đánh dấu có nghĩa rằng thành viên thuộc về nhóm đó.\n* Hộp không được đánh dấu có nghĩa rằng thành viên không thuộc về nhóm đó.\n* Dấu * có nghĩa là bạn sẽ không thể loại thành viên ra khỏi nhóm một khi bạn đã đưa thành viên vào, hoặc ngược lại.\n* Dấu # có nghĩa là bạn chỉ có thể trì hoãn thời hạn của nhóm này; bạn không thể đẩy sớm thời hạn.",
+       "userrights-groups-help": "Bạn có thể thay đổi các nhóm người dùng của thành viên này:\n* Hộp kiểm được đánh dấu có nghĩa rằng thành viên thuộc về nhóm đó.\n* Hộp không được đánh dấu có nghĩa rằng thành viên không thuộc về nhóm đó.\n* Dấu * có nghĩa là bạn sẽ không thể xoá thành viên ra khỏi nhóm này một khi bạn đã thêm họ vào, hoặc ngược lại.\n* Dấu # có nghĩa là bạn chỉ có thể giảm thời hạn thành viên được ở trong nhóm này; bạn không thể tăng thời hạn đó lên được.",
        "userrights-reason": "Lý do:",
        "userrights-no-interwiki": "Bạn không có quyền thay đổi quyền hạn của thành viên tại các wiki khác.",
        "userrights-nodatabase": "Cơ sở dữ liệu $1 không tồn tại hoặc nằm ở bên ngoài.",
        "right-editsemiprotected": "Sửa trang khóa ở mức “{{int:protect-level-autoconfirmed}}”",
        "right-editcontentmodel": "Sửa kiểu nội dung của trang",
        "right-editinterface": "Sửa giao diện người dùng",
-       "right-editusercssjs": "Sửa tập tin CSS và JS của người dùng khác",
        "right-editusercss": "Sửa tập tin CSS của người dùng khác",
        "right-edituserjs": "Sửa đổi tập tin JavaScript của người dùng khác",
        "right-editmyusercss": "Sửa đổi tập tin CSS cá nhân của mình",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Xem",
        "rcfilters-activefilters": "Bộ lọc hiện hành",
+       "rcfilters-savedqueries-setdefault": "Đặt làm mặc định",
+       "rcfilters-savedqueries-unsetdefault": "Loại bỏ mặc định",
        "rcfilters-restore-default-filters": "Mặc định lại các bộ lọc",
        "rcfilters-clear-all-filters": "Xóa sạch các bộ lọc",
        "rcfilters-search-placeholder": "Lọc các thay đổi gần đây (duyệt hoặc bắt đầu đánh chữ)",
        "rcfilters-invalid-filter": "Bộ lọc không hợp lệ",
        "rcfilters-empty-filter": "Không có bộ lọc hiện hành. Tất cả các đóng góp được hiển thị.",
        "rcfilters-filterlist-title": "Bộ lọc",
+       "rcfilters-highlightbutton-title": "Làm nổi bật kết quả",
+       "rcfilters-highlightmenu-title": "Chọn màu",
+       "rcfilters-highlightmenu-help": "Chọn màu để làm nổi bật thuộc tính này",
        "rcfilters-filterlist-noresults": "Không tìm thấy bộ lọc",
+       "rcfilters-noresults-conflict": "Không tìm thấy kết quả nào do tiêu chí tìm kiếm đang bị mâu thuẫn",
        "rcfilters-filtergroup-registration": "Trạng thái đăng ký thành viên",
        "rcfilters-filter-registered-label": "Đã đăng ký",
        "rcfilters-filter-registered-description": "Người dùng đã đăng nhập.",
        "rcfilters-filter-unregistered-label": "Vô danh",
        "rcfilters-filter-unregistered-description": "Người dùng chưa đăng nhập.",
        "rcfilters-filtergroup-authorship": "Người sửa đổi",
-       "rcfilters-filter-editsbyself-label": "Bạn",
-       "rcfilters-filter-editsbyself-description": "Các sửa đổi của bạn.",
-       "rcfilters-filter-editsbyother-label": "Người khác",
+       "rcfilters-filter-editsbyself-label": "Sửa đổi của bạn",
+       "rcfilters-filter-editsbyself-description": "Các sửa đổi do bạn tạo ra.",
+       "rcfilters-filter-editsbyother-label": "Sửa đổi của người khác",
        "rcfilters-filter-editsbyother-description": "Các sửa đổi của người khác.",
        "rcfilters-filtergroup-userExpLevel": "Trình độ (chỉ người dùng đã đăng ký)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Người mới đến",
        "rcfilters-filter-bots-description": "Các sửa đổi của công cụ tự động.",
        "rcfilters-filter-humans-label": "Con người (không phải bot)",
        "rcfilters-filter-humans-description": "Các sửa đổi của người thật.",
+       "rcfilters-filtergroup-reviewstatus": "Tình trạng tuần tra",
+       "rcfilters-filter-patrolled-label": "Đã được tuần tra",
+       "rcfilters-filter-patrolled-description": "Các sửa đổi đã được đánh dấu tuần tra.",
+       "rcfilters-filter-unpatrolled-label": "Chưa được tuần tra",
+       "rcfilters-filter-unpatrolled-description": "Các sửa đổi chưa được đánh dấu tuần tra.",
        "rcfilters-filtergroup-significance": "Sự quan trọng",
        "rcfilters-filter-minor-label": "Sửa đổi nhỏ",
        "rcfilters-filter-minor-description": "Các sửa đổi được tác giả đánh dấu là nhỏ.",
        "rcfilters-filter-major-label": "Sửa đổi không nhỏ",
        "rcfilters-filter-major-description": "Các sửa đổi không được tác giả đánh dấu là nhỏ.",
+       "rcfilters-filtergroup-watchlist": "Các trang theo dõi",
+       "rcfilters-filter-watchlist-watched-label": "Nằm trong danh sách theo dõi",
+       "rcfilters-filter-watchlist-watched-description": "Thay đổi trên các trang nằm trong danh sách theo dõi của bạn.",
+       "rcfilters-filter-watchlist-watchednew-label": "Các sửa đổi mới trong danh sách theo dõi",
+       "rcfilters-filter-watchlist-watchednew-description": "Thay đổi mới trên các trang nằm trong danh sách theo dõi kể từ lần cuối bạn xem trang đó.",
+       "rcfilters-filter-watchlist-notwatched-label": "Không trong danh sách theo dõi",
+       "rcfilters-filter-watchlist-notwatched-description": "Sửa đổi trên các trang không nằm trong danh sách theo dõi của bạn.",
        "rcfilters-filtergroup-changetype": "Kiểu thay đổi",
        "rcfilters-filter-pageedits-label": "Sửa đổi trang",
-       "rcfilters-filter-pageedits-description": "Các sửa đổi đối với nội dung, thảo luận, miêu tả thể loại, …",
+       "rcfilters-filter-pageedits-description": "Các sửa đổi đối với nội dung wiki, các trang thảo luận, các miêu tả thể loại…",
        "rcfilters-filter-newpages-label": "Tạo trang",
        "rcfilters-filter-newpages-description": "Các sửa đổi tạo trang mới.",
        "rcfilters-filter-categorization-label": "Thay đổi thể loại",
        "rcfilters-filter-categorization-description": "Các tác vụ xếp trang vào thể loại hoặc gỡ trang khỏi thể loại.",
        "rcfilters-filter-logactions-label": "Tác vụ được ghi trong nhật trình",
-       "rcfilters-filter-logactions-description": "Các tác vụ bảo quản, mở tài khoản, xóa trang, tải lên, …",
+       "rcfilters-filter-logactions-description": "Các tác vụ bảo quản, mở tài khoản, xóa trang, tải lên…",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "Bộ lọc \"Các sửa đổi nhỏ\" mâu thuẫn với một hoặc nhiều bộ lọc Loại sửa đổi, bởi có một số loại sửa đổi không thể được đánh dấu là \"nhỏ\". Các bộ lọc mâu thuẫn với nhau được đánh dấu trong mục Bộ lọc hiện hành ở trên.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Một số loại sửa đổi không thể được đánh dấu là \"nhỏ\", do đó bộ lọc này mâu thuẫn với các bộ lọc Loại sửa đổi dưới đây: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Bộ lọc Loại sửa đổi này mâu thuẫn với bộ lọc \"Các sửa đổi nhỏ\". Có một số loại sửa đổi không thể được đánh dấu là \"nhỏ\".",
+       "rcfilters-filtergroup-lastRevision": "Phiên bản mới nhất",
+       "rcfilters-filter-lastrevision-label": "Phiên bản mới nhất",
+       "rcfilters-filter-lastrevision-description": "Sửa đổi mới nhất trên một trang.",
+       "rcfilters-filter-previousrevision-label": "Các sửa đổi trước",
+       "rcfilters-filter-previousrevision-description": "Tất cả các sửa đổi không phải là sửa đổi mới nhất của trang.",
        "rcnotefrom": "Dưới đây là {{PLURAL:$5|thay đổi duy nhất|các thay đổi}} từ <strong>$3 $4</strong> (hiển thị tối đa <strong>$1</strong> thay đổi).",
+       "rclistfromreset": "Đặt lại lựa chọn ngày",
        "rclistfrom": "Xem các thay đổi từ $2 $3 trở về sau",
        "rcshowhideminor": "$1 sửa đổi nhỏ",
        "rcshowhideminor-show": "Hiện",
        "rcshowhidecategorization": "$1 tác vụ xếp thể loại",
        "rcshowhidecategorization-show": "Hiện",
        "rcshowhidecategorization-hide": "Ẩn",
-       "rclinks": "Xem $1 sửa đổi gần đây nhất trong $2 ngày qua; $3.",
+       "rclinks": "Xem $1 sửa đổi gần đây nhất trong $2 ngày qua;",
        "diff": "khác",
        "hist": "sử",
        "hide": "Ẩn",
        "php-uploaddisabledtext": "Việc tải tập tin trong PHP đã bị tắt. Xin hãy kiểm tra lại thiết lập file_uploads.",
        "uploadscripted": "Tập tin này có chứa mã HTML hoặc kịch bản có thể khiến trình duyệt web thông dịch sai.",
        "upload-scripted-pi-callback": "Không thể tải lên một tập tin có chứa lệnh xử lý xml-stylesheet.",
+       "upload-scripted-dtd": "Không thể tải lên các tập tin SVG chứa khai báo DTD không đúng chuẩn.",
        "uploaded-script-svg": "Tìm thấy phần tử “$1” có khả năng chạy kịch bản trong tập tin SVG được tải lên.",
        "uploaded-hostile-svg": "Tìm thấy CSS nguy hiểm trong phần tử style của tập tin SVG được tải lên.",
        "uploaded-event-handler-on-svg": "Không cho phép đặt thuộc tính xử lý sự kiện <code>$1=\"$2\"</code> trong tập tin SVG.",
        "unblocked-id": "$1 đã hết bị cấm",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] đã được bỏ cấm.",
        "blocklist": "Người dùng bị cấm",
+       "autoblocklist": "Các lệnh cấm tự động",
+       "autoblocklist-submit": "Tìm kiếm",
        "ipblocklist": "Người dùng bị cấm",
        "ipblocklist-legend": "Tìm một thành viên bị cấm",
        "blocklist-userblocks": "Ẩn tác vụ cấm tài khoản",
        "confirmrecreate-noreason": "Người dùng [[User:$1|$1]] ([[User talk:$1|talk]]) xóa trang này sau khi bạn bắt đầu sửa đổi nó. Bạn có chắc chắn muốn tạo lại trang này không?",
        "recreate": "Tạo ra lại",
        "unit-pixel": "điểm ảnh",
+       "confirm-purge-title": "Làm mới trang này",
        "confirm_purge_button": "Làm tươi",
        "confirm-purge-top": "Làm sạch vùng nhớ đệm của trang này?",
        "confirm-purge-bottom": "Làm mới một trang sẽ giúp xóa bộ đệm và buộc hiển thị phiên bản gần nhất.",
        "htmlform-user-not-valid": "<strong>$1</strong> không phải là tên người dùng.",
        "logentry-delete-delete": "$1 {{GENDER:$2}}đã xóa trang “$3”",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2}}đã xóa trang đổi hướng $3 bằng cách ghi đè",
-       "logentry-delete-restore": "$1 {{GENDER:$2}}đã phục hồi trang “$3”",
+       "logentry-delete-restore": "$1 {{GENDER:$2}}đã phục hồi trang $3 ($4)",
        "logentry-delete-event": "$1 {{GENDER:$2}}đã thay đổi mức hiển thị của {{PLURAL:$5|một mục nhật trình|$5 mục nhật trình}} về $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2}}đã thay đổi mức hiển thị của {{PLURAL:$5|một phiên bản|$5 phiên bản}} trang $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2}}đã thay đổi mức hiển thị của các mục nhật trình về $3",
        "mw-widgets-titleinput-description-redirect": "đổi hướng đến $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Thêm thể loại…",
        "mw-widgets-usersmultiselect-placeholder": "Thêm nữa…",
+       "date-range-from": "Từ ngày:",
+       "date-range-to": "Đến ngày:",
        "sessionmanager-tie": "Không thể kết hợp nhiều yêu cầu xác thực loại: $1.",
        "sessionprovider-generic": "phiên $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "phiên dựa trên cookie",
        "restrictionsfield-label": "Các dải IP được cho phép:",
        "restrictionsfield-help": "Mỗi dòng một địa chỉ IP hoặc dải CIDR. Để kích hoạt tất cả mọi địa chỉ IP, sử dụng:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "phiên bản $1",
-       "pageid": "số trang $1"
+       "pageid": "số trang $1",
+       "gotointerwiki": "Rời khỏi {{SITENAME}}",
+       "gotointerwiki-invalid": "Tên trang chỉ định không hợp lệ.",
+       "pagedata-title": "Dữ liệu về trang",
+       "pagedata-not-acceptable": "Không tìm thấy định dạng phù hợp. Các kiểu MIME được hỗ trợ: $1",
+       "pagedata-bad-title": "Tiêu đề không hợp lệ: $1."
 }
index c4d76c3..802c49c 100644 (file)
        "yourpasswordagain": "Bassworrd widderhulln:",
        "login": "Ôômeldn",
        "nav-login-createaccount": "Oomeldn / Ghondoo ooleeng",
-       "userlogin": "Ôômeldn / Als Bajdräächâr ajschrajm",
        "logout": "Abmeldn",
        "userlogout": "Abmeldn",
-       "nologin": "Du hast ka Nutzergonto? $1",
-       "nologinlink": "Sich als najâr Ôôgmeldâr ôômäldn",
        "createaccount": "Nutzergonto olegn",
-       "gotaccount": "Du host scho a Benudtzergondo? $1",
-       "gotaccountlink": "Omeldn",
-       "userlogin-resetlink": "Omeldedadn vergessn?",
        "mailmypassword": " najs passwôrd iwâr iimejl dsuschign lasn",
        "loginlanguagelabel": "Sproch: $1",
        "changepassword": "S'bhaswôrd ändârn",
        "saveprefs": "Aâjschdelungn schbajchrn",
        "restoreprefs": "Uf dii uur-ajschdelungn dsrig",
        "prefs-editing": "Bearbajdungs-fenschdâr",
-       "rows": "Soofiil dsajln:",
-       "columns": "Soofiil schbaldn",
        "searchresultshead": "Suuchn",
        "recentchangesdays": "Wiifiil dääch dsrig baj  „Ledschdn ändrungn“",
        "recentchangesdays-max": "Hegschdns $1 {{PLURAL:$1|daach|dääch}}",
        "rcshowhideanons": "$1 uuôôgmäldâde bearbajdâr",
        "rcshowhidepatr": "Gondrollierde Ändrunga $1",
        "rcshowhidemine": "Ajchne bajdrääch $1",
-       "rclinks": "Dsajch dii ledsdn $1 ändrunga fo di ledsdn $2 dooch.<br />$3",
+       "rclinks": "Dsajch dii ledsdn $1 ändrunga fo di ledsdn $2 dooch.",
        "diff": "undârschiid",
        "hist": "Wärsjoonsfolche",
        "hide": "fârschdegn",
index 52d2d5b..979f214 100644 (file)
        "externaldberror": "U ejenon fümükamapöl plödik nünödema, u no dalol atimükön kali plödik ola.",
        "login": "Nunädolös obi",
        "nav-login-createaccount": "Nunädön oki / jafön kali",
-       "userlogin": "Nunädön oki / jafön kali",
-       "userloginnocreate": "Nunädön oki",
        "logout": "Senunädön oki",
        "userlogout": "Senunädön oki",
        "notloggedin": "No enunädol oli",
        "userlogin-noaccount": "No labol-li kali?",
        "userlogin-joinproject": "Sogolös oki lä {{SITENAME}}",
-       "nologin": "No labol-li kali? $1.",
-       "nologinlink": "Jafolös bali",
        "createaccount": "Jafön kali",
-       "gotaccount": "Ya labol-li kali? '''$1'''.",
-       "gotaccountlink": "Nunädolös obi",
-       "userlogin-resetlink": "Eglömol-li nünis kala olik?",
        "userlogin-resetpassword-link": "Eglömol-li letavödi olik?",
        "createacct-emailrequired": "Ladet leäktronik",
        "createaccountmail": "me pot leäktronik",
-       "createaccountreason": "Kod:",
        "createacct-reason": "Kod",
        "createacct-submit": "Jafön kali olik",
        "createacct-benefit-body1": "{{PLURAL:$1|redakam|redakams}}",
        "anoneditwarning": "'''Nuned:''' No enunädol oli. Ladet-IP olik poregistaron su redakamajenotem pada at.",
        "missingsummary": "'''Noet:''' No epenol redakamipläni. If ovälol dönu knopi: Dakipolöd, redakam olik podakipon nen plän.",
        "missingcommenttext": "Penolös, begö! küpeti dono.",
-       "missingcommentheader": "'''Meib:''' No epenol yegädi/tiädi küpete at.\nIf ovälol dönu knopi: \"{{int:savearticle}}\", redakam olik podakipon nen on.",
+       "missingcommentheader": "'''Meib:''' No epenol yegädi/tiädi küpete at.\nIf ovälol dönu knopi: \"$1\", redakam olik podakipon nen on.",
        "summary-preview": "Büologed brefik:",
        "subject-preview": "Büologed yegäda/diläda:",
        "blockedtitle": "Geban peblokon",
        "editingsection": "Redakam pada: $1 (diläd)",
        "editingcomment": "Redakam pada: $1 (diläd nulik)",
        "editconflict": "Redakamakonflit: $1",
-       "explainconflict": "Ek evotükon padi at sisä äprimol ad redakön oni.\nVödem balid jonon padi soäsä dabinon anu.\nVotükams olik pajonons in vödem telid.\nSludolös, vio fomams tel at mutons pabalön.\nKanol kopiedön se vödem telid ini balid.\n'''Te''' vödem balid podakipon ven knopol knopi: \"{{int:savearticle}}\".",
+       "explainconflict": "Ek evotükon padi at sisä äprimol ad redakön oni.\nVödem balid jonon padi soäsä dabinon anu.\nVotükams olik pajonons in vödem telid.\nSludolös, vio fomams tel at mutons pabalön.\nKanol kopiedön se vödem telid ini balid.\n'''Te''' vödem balid podakipon ven knopol knopi: \"$1\".",
        "yourtext": "Vödem olik",
        "storedversion": "Fomam pedakipöl",
        "nonunicodebrowser": "'''NÜNED: Bevüresodatävöm olik no kanon gebön eli Unicode.\nAd dälön ole ad redakön padis, malats no-ASCII opubons in redakamabog as kots degmälnumatik.'''",
        "saveprefs": "Dakipolöd",
        "restoreprefs": "Geikön lü paramets kösömik valik",
        "prefs-editing": "Redakam",
-       "rows": "Kedets:",
-       "columns": "Padüls:",
        "searchresultshead": "Suk",
        "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:",
        "userrights-reason": "Kod:",
        "userrights-no-interwiki": "No labol däli ad votükön gebanagitätis in vüks votik.",
        "userrights-nodatabase": "Nünodem: $1 no dabinon, u no binon topik.",
-       "userrights-nologin": "Mutol [[Special:UserLogin|nunädön oli]] me guvanakal ad dalön gevön gitätis gebanes.",
-       "userrights-notallowed": "No labol däli ad läükön u moükön gebanagitätis.",
        "userrights-changeable-col": "Grups fa ol votükoviks",
        "userrights-unchangeable-col": "Grups fa ol nevotükoviks",
        "group": "Grup:",
        "right-protect": "Votükön jelanivodis e redakön padis pejelöl",
        "right-editprotected": "Bevobön padis pejelöl äs \"{{int:protect-level-sysop}}\"",
        "right-editinterface": "Votükön gebanaloveikömi",
-       "right-editusercssjs": "Redakön ragivis-CSS e -JS gebanas votik",
        "right-editusercss": "Redakön ragivis-CSS gebanas votik",
        "right-edituserjs": "Redakön ragivis-JS gebanas votik",
        "right-rollback": "Sädunön vifiko redakamis gebana lätik, kel äredakon padi semik.",
        "rcshowhidemine": "$1 redakamis obik",
        "rcshowhidemine-show": "Jonön",
        "rcshowhidemine-hide": "Klänedön",
-       "rclinks": "Jonön votükamis lätik $1 ün dels lätik $2<br />$3",
+       "rclinks": "Jonön votükamis lätik $1 ün dels lätik $2",
        "diff": "dif",
        "hist": "jen",
        "hide": "Klänedön",
        "undeleteviewlink": "logön",
        "undeleteinvert": "Väli güükön",
        "undeletecomment": "Kod:",
-       "undeletedrevisions": "Moükam {{PLURAL:$1|revida 1 pesädunon|revidas $1 pesädunons}}",
-       "undeletedrevisions-files": "Moükam {{PLURAL:$1|revida 1|revidas $1}} e {{PLURAL:$2|ragiva 1|ragivas $2}} pesädunons",
-       "undeletedfiles": "Moükam {{PLURAL:$1|ragiva 1|ragivas $1}} pesädunon",
        "cannotundelete": "Sädunam moükama no eplöpon: $1",
        "undeletedpage": "'''Moükam pada: $1 pesädunon'''\n\nLogolös [[Special:Log/delete|lisedi moükamas]] if vilol kontrolön moükamis e sädunamis brefabüikis.",
        "undelete-header": "Logolös [[Special:Log/delete|jenotalisedi moükamas]] ad tuvön padis brefabüo pemoükölis.",
        "logentry-block-unblock": "$1 {{GENDER:$2|eblokon}} {{GENDER:$4|hieli $3|jieli $3|eli $3}}",
        "logentry-newusers-create": "Gebanakal: $1 pejafon",
        "rightsnone": "(nonik)",
-       "revdelete-summary": "plän redakama",
        "feedback-subject": "Yegäd:",
        "searchsuggest-search": "Suk",
        "searchsuggest-containing": "ninädöl...",
index d1460b8..6976ff0 100644 (file)
        "yourpasswordagain": "Tõissaga salain-sõna:",
        "login": "Cirjut süäme",
        "nav-login-createaccount": "Cirjut süäme vai registriiroit cäüttijässi",
-       "userlogin": "Cirjut süäme",
-       "userloginnocreate": "Cirjut süäme",
        "logout": "Cirjut uloz",
        "userlogout": "Cirjut uloz",
-       "nologin": "Kui Teille veel ebõõ cäüttijänimi, '''$1'''.",
-       "nologinlink": "võitta loovva luguu",
        "createaccount": "Uusi cäüttijää",
-       "gotaccount": "Tüü õõttõ jo registreerittu? $1.",
-       "gotaccountlink": "Cirjut süäme",
-       "userlogin-resetlink": "Vai unõhtittõ õma loginass?",
-       "createaccountreason": "Süü:",
        "mailmypassword": "Lähet uusi salasõna elektropoštiikaa",
        "loginlanguagelabel": "Ceeli: $1",
        "resetpass-submit-cancel": "Otmeńoit",
        "rcshowhideanons": "$1 anonüümid cäüttijäd",
        "rcshowhidepatr": "Tarkasõttu kõrjausije $1",
        "rcshowhidemine": "$1 õmad muutussõd",
-       "rclinks": "Näüt viimõiss $1 muutuhsõiss viimõizõ $2 päivää ajalt.<br />$3",
+       "rclinks": "Näüt viimõiss $1 muutuhsõiss viimõizõ $2 päivää ajalt.",
        "diff": "vahõ",
        "hist": "istori",
        "hide": "Salauta",
index 84edb29..c48e262 100644 (file)
@@ -9,7 +9,8 @@
                        "Trixt",
                        "Võrok",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Stephanecbisson"
                ]
        },
        "tog-underline": "Lingiq ala tõmmadaq",
        "externaldberror": "Välitsen kimmästegemisteedüskogon om viga vai olõ-i sul lubat umma pruukjanimme muutaq.",
        "login": "Nimega sisseminek",
        "nav-login-createaccount": "Mineq nimega sisse",
-       "userlogin": "Mineq nimega sisse vai luuq pruukjanimi",
-       "userloginnocreate": "Nimega sisseminek",
        "logout": "Nime alt välläminek",
        "userlogout": "Mineq nime alt vällä",
        "notloggedin": "Olõ-i nimega sisse mint",
        "userlogin-noaccount": "Sul olõ-i viil pruukjanimme?",
        "userlogin-joinproject": "Nakkaq {{SITENAME}} pruukjas!",
-       "nologin": "Sul olõ-i viil pruukjanimme? '''$1'''.",
-       "nologinlink": "Tiiq hindäle pruukjanimi",
        "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?",
        "userlogin-resetpassword-link": "Kas salasõna läts' meelest ärq?",
        "userlogin-helplink2": "Nimega sisseminemise abi",
        "userlogin-createanother": "Luuq tõõnõ konto",
        "createacct-another-email-ph": "Kirodaq e-postiaadrõss",
        "createaccountmail": "Pruugiq aotlist johuslist salasõnna ja saadaq tuu annõdu aadrõsi pääle",
        "createacct-realname": "Peris nimi (või ka kirotamalda jättäq)",
-       "createaccountreason": "Põhjus:",
        "createacct-reason": "Põhjus",
        "createacct-reason-ph": "Mille tahat luvvaq tõõsõ pruukjakonto?",
        "createacct-submit": "Luuq konto",
        "editingsection": "Toimõndõdas lõiku artiklist $1",
        "editingcomment": "Toimõndõdas kommõntaari lehe $1 pääl",
        "editconflict": "Toimõndamisvastaolo: $1",
-       "explainconflict": "Kiäki om muutnuq seod lehte perän tuud, ku saq taad toimõndama naksiq.\nÜlemädsen toimõnduskastin om teksti perämäne kujo.\nSuq muutmisõq ommaq alomadsõn kastin.\nSul tulõ naaq viimätsehe kujjo üle viiäq.\nKu klõpsahtat nuppi \"{{int:savearticle}}\", sis pästetäs '''õnnõ''' ülembädse toimõnduskasti tekst.",
+       "explainconflict": "Kiäki om muutnuq seod lehte perän tuud, ku saq taad toimõndama naksiq.\nÜlemädsen toimõnduskastin om teksti perämäne kujo.\nSuq muutmisõq ommaq alomadsõn kastin.\nSul tulõ naaq viimätsehe kujjo üle viiäq.\nKu klõpsahtat nuppi \"$1\", sis pästetäs '''õnnõ''' ülembädse toimõnduskasti tekst.",
        "yourtext": "Suq tekst",
        "storedversion": "Pästet kujo",
        "nonunicodebrowser": "'''Hoiatus: su võrgokaeja tukõ-i Unicode'i. Olõq hüä, võtaq toimõndamisõs leht vallalõ tõõsõn võrgokaejan.'''",
        "prefs-misc": "Muuq säädmiseq",
        "saveprefs": "Pästäq säädmiseq ärq",
        "prefs-editing": "Toimõnduskasti suurus",
-       "rows": "Rito",
-       "columns": "Tulpõ",
        "searchresultshead": "Otsminõ",
        "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",
        "rcshowhidemine": "$1 mu toimõndusõq.",
        "rcshowhidemine-show": "näütäq",
        "rcshowhidemine-hide": "Käkiq ärq",
-       "rclinks": "Näütäq viimädseq $1 muutmist, miä ommaq tettüq viimädse $2 päävä seen. $3",
+       "rclinks": "Näütäq viimädseq $1 muutmist, miä ommaq tettüq viimädse $2 päävä seen.",
        "diff": "lahk",
        "hist": "aol",
        "hide": "Käkitäseq",
        "undeletelink": "kaeq/tiiq tagasi",
        "undeleteviewlink": "näütäq",
        "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",
-       "undeletedfiles": "$1 {{PLURAL:$1|teedüstü|teedüstüt}} tagasi tett",
        "cannotundelete": "Tagasitegemine lää-s kõrda; kiäki tõõnõ või-ollaq lehe jo tagasi tennüq.",
        "undeletedpage": "'''$1 om tagasi tett'''\n\nPerämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistutamiisi nimekiräst]].",
        "undelete-header": "Perämäidsi kistutuisi saat kaiaq [[Special:Log/delete|kistutamiisi nimekiräst]].",
index 0d7e00a..da54fcd 100644 (file)
        "editingsection": "Candjant $1 (seccion)",
        "editingcomment": "Candjant $1 (novele seccion)",
        "editconflict": "Ecramiaedje inte deus candjmints: $1",
-       "explainconflict": "Ene sakî a candjî l' pådje do tins ki vos estîz a scrire.\nLi boesse di tecse do dzeur mostere li tecse del pådje come il est\npol moumint sol sierveu. Li tecse da vosse est sol boesse di tecse do dzo.\nLes diferinces sont håynêyes å mitan. Vos dvoz mete vos candjmints dins\nl' tecse d' asteure (å dzeur) si vos lez vloz co evoyî.\n'''Seulmint''' li tecse do dzeur serè candjî cwand vos clitchroz sol boton «{{int:savearticle}}».",
+       "explainconflict": "Ene sakî a candjî l' pådje do tins ki vos estîz a scrire.\nLi boesse di tecse do dzeur mostere li tecse del pådje come il est\npol moumint sol sierveu. Li tecse da vosse est sol boesse di tecse do dzo.\nLes diferinces sont håynêyes å mitan. Vos dvoz mete vos candjmints dins\nl' tecse d' asteure (å dzeur) si vos lez vloz co evoyî.\n'''Seulmint''' li tecse do dzeur serè candjî cwand vos clitchroz sol boton «$1».",
        "yourtext": "Li tecse da vosse",
        "storedversion": "Modêye sol sierveu",
        "nonunicodebrowser": "'''ASTEME: li betchteu waibe da vosse ni sopoite nén l' ecôdaedje unicôde, cåze di çoula les caracteres nén-ASCII vont aparexhe dins l' boesse di tecse come des côdes hecsadecimås, insi vos pôroz tot l' minme candjî l' pådje.'''",
        "rcshowhidecategorization": "$1 li categorijhaedjes des pådjes",
        "rcshowhidecategorization-show": "Mostrer",
        "rcshowhidecategorization-hide": "Catchî",
-       "rclinks": "Mostrer les $1 dierins candjmints des dierins $2 djoûs.<br />$3",
+       "rclinks": "Mostrer les $1 dierins candjmints des dierins $2 djoûs.",
        "diff": "dif.",
        "hist": "ist.",
        "hide": "catch.",
        "undeletelink": "vey/rapexhî",
        "undeleteviewlink": "vey",
        "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",
-       "undeletedfiles": "{{PLURAL:$1|1 fitchî|$1 fitchîs}} di rapexhîs",
        "cannotundelete": "Li rapexhaedje a fwait berwete; motoit bén k' ene ôte sakî l' a ddja rapexhî.",
        "undeletedpage": "'''Li pådje $1 a stî rapexheye.'''\n\nLoukîz l' [[Special:Log/delete|djournå des disfaçaedjes]] po ene djivêye des dierins disfaçaedjes eyet rapexhaedjes.",
        "undelete-search-submit": "Cweri",
index 172f08b..3fd3cf9 100644 (file)
        "externaldberror": "Mayda authenticaton database error o diri ka tinutugotan pag-update an imo akwant ha gawas.",
        "login": "Mag ''log in''",
        "nav-login-createaccount": "Magpalista nga masakob / paghimo hin bag-o nga akawnt",
-       "userlogin": "Magpasabot nga masakob / paghimo hin akawnt",
-       "userloginnocreate": "Magpasabot nga masakob",
        "logout": "Mag ''log out''",
        "userlogout": "Mag ''log out''",
        "notloggedin": "Diri naka-log in",
        "userlogin-noaccount": "Waray ka akawnt?",
        "userlogin-joinproject": "Tambong ha {{SITENAME}}",
-       "nologin": "Waray ka akawnt? $1.",
-       "nologinlink": "Paghimo hin akawnt",
        "createaccount": "Himo-a an akawnt",
-       "gotaccount": "¿Mayda kana akawnt? $1.",
-       "gotaccountlink": "Sakob",
-       "userlogin-resetlink": "Nangalimot han imo detalye han pagsakob?",
        "userlogin-resetpassword-link": "¿Nangalimot ka han imo tigaman-pansulod?",
        "userlogin-helplink2": "Pabúlig hin pagsakob",
        "userlogin-loggedin": "Nakalog-in kana komo hi {{GENDER:$1|$1}}.\nGamiti an porma ha ubos para makalog-in komo iba nga gumaramit.",
        "createacct-another-email-ph": "Igbutang an email address",
        "createaccountmail": "Gamiti hin temporaryo nga bisan ano nag password ngan igpadangat ngada ha espesipikado nga e-mail address",
        "createacct-realname": "Tinuod nga ngaran (opsyonal)",
-       "createaccountreason": "Rason:",
        "createacct-reason": "Rason",
        "createacct-reason-ph": "Kay ano nahimo ka hin usa pa nga akawnt",
        "createacct-submit": "Ighimo an im account",
        "showdiff": "Igpakita an mga ginliwat",
        "anoneditwarning": "<strong>Pahimatngon:</strong> Diri ka nakalog-in. An imo IP address in makikit-an han publiko kun magbuhat ka hin mga pagliwat. Kun ikaw in <strong>[$1 maglog-in]</strong> o <strong>[$2 maghimo hin account]</strong>, an imo mga pagliwat in maa-attribute ha imo agnay-hit-gumaramit, upod han pipira pa nga mga benepisyo.",
        "anonpreviewwarning": "''Diri ka naka-log in.  Mahisusurat an imo IP address ngada ha kanan pakli kaagi hit pagliwat kun igtipig nimo.''",
-       "missingsummary": "<strong>Pahinumdom:</strong> Waray ka humatag hin halipotay nga masisiring hiton pagliwat. Kun pidliton mo an \"{{int:savearticle}}\" utro, an imo ginliwat in matitipig bisan waray hini.",
+       "missingsummary": "<strong>Pahinumdom:</strong> Waray ka humatag hin halipotay nga masisiring hiton pagliwat. Kun pidliton mo an \"$1\" utro, an imo ginliwat in matitipig bisan waray hini.",
        "missingcommenttext": "Alayon pagbutang hin komento ha ilarom.",
-       "missingcommentheader": "<strong>Pahinumdom:</strong> Waray ka humatag hin subject para hinin nga komento.  Kun pinduton mo an \"{{int:savearticle}}\" utro, an imo pagliwat in matitipig bisan waray hini.",
+       "missingcommentheader": "<strong>Pahinumdom:</strong> Waray ka humatag hin subject para hinin nga komento.  Kun pinduton mo an \"$1\" utro, an imo pagliwat in matitipig bisan waray hini.",
        "summary-preview": "Pahiuna nga pagawas han dalikyat nga pulong:",
        "subject-preview": "Pahiuna nga pagawas hit himangrawan:",
        "blockedtitle": "Ginpugngan ini nga gumaramit",
        "right-hideuser": "Pugnga an uska agnay-hin-gumaramit, tago-a ito tikang ha publiko",
        "right-unblockself": "Lugaring nga makakatanggal han pagpugong",
        "right-editinterface": "Igliwat an user interface",
-       "right-editusercssjs": "Igliwat an kanan iba mga gumaramit nga mga paypay han CSS ngan JavaScript",
        "right-editusercss": "Igliwat an kanan iba mga gumaramit nga mga paypay han CSS",
        "right-edituserjs": "Iliwat an kanan iba mga gumaramit nga paypay han JavaScript",
        "right-viewmywatchlist": "Kitaa an imo kalugaringon nga talaan hin barantayon",
        "rcshowhidemine-hide": "Tago-a",
        "rcshowhidecategorization-show": "Pakit-a",
        "rcshowhidecategorization-hide": "Tago-a",
-       "rclinks": "Igpakita an katapusan nga $1 nga pagbabag-o ha sulod han urhi nga $2 ka mga adlaw<br />$3",
+       "rclinks": "Igpakita an katapusan nga $1 nga pagbabag-o ha sulod han urhi nga $2 ka mga adlaw",
        "diff": "kaibhan",
        "hist": "kaagi",
        "hide": "Tago-a",
index dbee858..fffb4fa 100644 (file)
        "externaldberror": "Njuumte judd na ci dàttub njoxe bi, walla day ni rekk amuloo sañ-sañu yeesal sa sàqum biti.",
        "login": "xammeeku",
        "nav-login-createaccount": "Dugg / Bindu",
-       "userlogin": "Dugg / Bindu",
        "logout": "Génnu",
        "userlogout": "Génnu",
        "notloggedin": "Duggoo de",
        "userlogin-noaccount": "Amagoo am sàq?",
        "userlogin-joinproject": "Bindu ci {{SITENAME}}",
-       "nologin": "Sosagoo am sàq ? '''$1'''.",
-       "nologinlink": "Sos ko leegi",
        "createaccount": "Sos am sàq",
-       "gotaccount": "Sos nga am sàq? '''$1'''.",
-       "gotaccountlink": "Dugg",
        "userlogin-resetpassword-link": "Danga fàtte sa baatujàll?",
        "userlogin-helplink2": "Ndimbal ñeel dugg gi",
        "createacct-emailoptional": "Màkkaanu m-bataaxal (mu-neex-la)",
        "saveprefs": "Wattu",
        "restoreprefs": "Delloo say tànneef nañu meloon ca sag mbindu",
        "prefs-editing": "Boyotu coppite",
-       "rows": "Rëdd:",
-       "columns": "Kenu :",
        "searchresultshead": "Seet",
        "recentchangesdays": "Limu bes yi nga koy wone ci coppite yu mujj yi :",
        "recentchangesdays-max": "(bi ëpp $1 {{PLURAL:$1|bés|bés}})",
        "userrights-reason": "Ngirte :",
        "userrights-no-interwiki": "Amoo sañ-sañu soppi sañ-sañi jëfandikukat yi ci yeneen wiki",
        "userrights-nodatabase": "Dàttub njoxe bii « $1 » amul walla nekkul ci barab bi.",
-       "userrights-nologin": "Faaw nga  [[Special:UserLogin|dugg]] ak sàqum ab yorkat ngir man a soppi sañ-sañi ab jëfandukukat.",
-       "userrights-notallowed": "Sa sàq amul sañ-sañ ngir man a joxi sañ-sañ ab jëfandikukat.",
        "userrights-changeable-col": "Mbooloo yees man a soppi",
        "userrights-unchangeable-col": "Mbooloo yees manuta soppi",
        "userrights-irreversible-marker": "$1*",
        "right-protect": "Soppi tolluwaayu kaaraange gi te soppi xët yees aar",
        "right-editprotected": "Soppi xët yees aar",
        "right-editinterface": "Soppi jokkalekaayu jëfandikukat bi",
-       "right-editusercssjs": "Soppi dencukaay yu CSS ak  JS yu yeneen jëfandikukat",
        "right-editusercss": "Soppi dencukaay yu CSS yu yeneen jëfandikukat",
        "right-edituserjs": "Soppi dencukaay yu JS yu yeneen jëfandikukat",
        "right-rollback": "Loppanti gu gaaw gu coppite yub jëfandikukat bu mujj ci wenn xët wi",
        "rcshowhidemine": "$1 samay cëru",
        "rcshowhidemine-show": "Wone",
        "rcshowhidemine-hide": "Nëbb",
-       "rclinks": "Wone $1 coppite yi mujj ci $2  fan yi mujj <br />$3.",
+       "rclinks": "Wone $1 coppite yi mujj ci $2  fan yi mujj",
        "diff": "wuute",
        "hist": "jaar",
        "hide": "Nëbb",
        "undeleteviewlink": "wone",
        "undeleteinvert": "Jallarbi fal gi",
        "undeletecomment": "Tënk :",
-       "undeletedrevisions": "$1 {{PLURAL:$1|delloowaat nañ ab sumb|delloowaat nañ $1 sumb}}",
-       "undeletedrevisions-files": "$1 {{PLURAL:$1|sumb|sumb}} ak $2 {{PLURAL:$2|ŋara|ŋara}} loppanti nañu leen",
-       "undeletedfiles": "{{PLURAL:$1|1 dencukaay|$1 dencukaay}} lañu delloowaat",
        "cannotundelete": "Delloowaat gi antuwul. Xéj-na keneen delloowaat na ko ba noppi.",
        "undeletedpage": "'''Xët wii di $1 delloowaat nañu ko.'''\n\nSaytul [[Special:Log/delete|jaar-jaaru far bi]] ngir xool far yi ak delloowaat yu mujj yi.",
        "undelete-header": "Saltul [[Special:Log/delete|jaar-jaaru far bi ]] ngir xool far yi mujj.",
        "logentry-newusers-create": "Sàqum jëfandikukat $1 sos nañu ko",
        "logentry-upload-upload": "$1 {{GENDER:$2|moo yeb}} $3",
        "rightsnone": "(menn)",
-       "revdelete-summary": "soppi tënk gi",
        "searchsuggest-search": "Seet"
 }
index 5f342a8..0c75fc5 100644 (file)
        "externaldberror": "迭个作兴是由于验证数据库错误或者侬拨禁止更新侬个外部账号。",
        "login": "登进去",
        "nav-login-createaccount": "登进去 / 建账号",
-       "userlogin": "登进去 / 建账号",
-       "userloginnocreate": "登录",
        "logout": "登出",
        "userlogout": "登出",
        "notloggedin": "弗曾登录",
        "userlogin-noaccount": "呒不账号?",
        "userlogin-joinproject": "加进{{SITENAME}}",
-       "nologin": "还呒不账号?$1。",
-       "nologinlink": "建新账号",
        "createaccount": "建账号",
-       "gotaccount": "已经有仔帐号哉? '''$1'''。",
-       "gotaccountlink": "登录",
-       "userlogin-resetlink": "忘记登录细节?",
        "userlogin-resetpassword-link": "忘脱密码?",
        "userlogin-helplink2": "登录帮忙",
        "userlogin-loggedin": "你侬用{{GENDER:$1|$1}}登进来哉。用下向个表以别样身份登进。",
        "createacct-another-email-ph": "电子信地址打进去",
        "createaccountmail": "拿临时随机密码发到指定个电邮地址",
        "createacct-realname": "真名字(随意)",
-       "createaccountreason": "理由:",
        "createacct-reason": "理由:",
        "createacct-reason-ph": "为何物建别样账号",
        "createacct-submit": "建立侬个账号",
        "preview": "望望相",
        "showpreview": "显示预览",
        "showdiff": "显示变化",
-       "blankarticle": "<strong>警告:</strong>侬要创建个页面是空白个。如果侬再次点击“{{int:savearticle}}”,一只呒不任何内容个页面会畀创建。",
+       "blankarticle": "<strong>警告:</strong>侬要创建个页面是空白个。如果侬再次点击“$1”,一只呒不任何内容个页面会畀创建。",
        "anoneditwarning": "<strong>警告:</strong>侬弗曾登录。如果侬做仔啥编辑,箇么侬个IP地址会公开可见。如果侬<strong>[$1 登录]</strong>或者<strong>[$2 建立只账号]</strong>,侬个编辑会归功到侬用户名下底,而且有其他优点。",
        "anonpreviewwarning": "''侬弗曾登录。侬个IP位址会得记录拉此页个编辑历史里向。''",
        "missingsummary": "'''提示:''' 侬弗曾提供编辑摘要。假使侬再次单击保存,侬个编辑将弗带编辑摘要保存。",
-       "selfredirect": "<strong>警告:</strong>侬来上拿本页面重定向到它自家。侬可能搞错著重定向个目标,或者侬来上编辑错个页面。如果侬再次点击“{{int:savearticle}}”,重定向弗管哪亨会畀创建。",
+       "selfredirect": "<strong>警告:</strong>侬来上拿本页面重定向到它自家。侬可能搞错著重定向个目标,或者侬来上编辑错个页面。如果侬再次点击“$1”,重定向弗管哪亨会畀创建。",
        "missingcommenttext": "请垃下头输入备注。",
-       "missingcommentheader": "<strong>提示:</strong>侬弗曾为此评论提供标题。如果侬再次单击“{{int:savearticle}}”,侬个编辑将弗带标题保存。",
+       "missingcommentheader": "<strong>提示:</strong>侬弗曾为此评论提供标题。如果侬再次单击“$1”,侬个编辑将弗带标题保存。",
        "summary-preview": "摘要预览:",
        "subject-preview": "主题预览:",
        "blockedtitle": "用户畀查封",
        "editingsection": "来里编写“$1”(段落)",
        "editingcomment": "垃许编辑 $1 (新段落)",
        "editconflict": "编辑冲突: $1",
-       "explainconflict": "有人垃拉侬开始编辑之后更改仔页面。上头个文字框内显示个是箇歇本页个内容。侬个修改显示垃拉下底只文字框里向。侬应当拿侬个修改合并到现有个文本里向。<strong>只有</strong>上头文字框里向个内容会得垃侬点击“{{int:savearticle}}”之后畀保存。",
+       "explainconflict": "有人垃拉侬开始编辑之后更改仔页面。上头个文字框内显示个是箇歇本页个内容。侬个修改显示垃拉下底只文字框里向。侬应当拿侬个修改合并到现有个文本里向。<strong>只有</strong>上头文字框里向个内容会得垃侬点击“$1”之后畀保存。",
        "yourtext": "侬个文字",
        "storedversion": "已保存版本",
        "nonunicodebrowser": "'''警告:侬个浏览器弗兼容Unicode编码。'''箇搭有一只工作区将使侬可以安全编辑页面:非ASCII字符将以十六进制编码方式出现垃拉编辑框里向。",
        "saveprefs": "保存",
        "restoreprefs": "复原全部默认设定",
        "prefs-editing": "编辑",
-       "rows": "行数:",
-       "columns": "列数:",
        "searchresultshead": "搜索",
        "stub-threshold": "短链接格式阈值($1):",
        "stub-threshold-disabled": "停用",
        "rcshowhidemine-show": "显示",
        "rcshowhidemine-hide": "囥脱",
        "rcshowhidecategorization-hide": "囥脱",
-       "rclinks": "显示来拉上个 $2 日里向个最近 $1 趟改动<br />$3",
+       "rclinks": "显示来拉上个 $2 日里向个最近 $1 趟改动",
        "diff": "两样",
        "hist": "历史",
        "hide": "囥脱",
        "logentry-rights-rights": "$1{{GENDER:$2|更改}}{{GENDER:$6|$3}}个用户组从$4到$5",
        "logentry-upload-upload": "$1{{GENDER:$2|上传}}$3",
        "rightsnone": "(呒)",
-       "revdelete-summary": "编辑摘要",
        "feedback-thanks-title": "谢谢侬!",
        "searchsuggest-search": "搜寻{{SITENAME}}",
        "pagelang-language": "闲话"
index c27fc60..f8d6a09 100644 (file)
        "yourdomainname": "Тана домен:",
        "login": "Орлһн",
        "nav-login-createaccount": "Орх/бүрткгдх",
-       "userlogin": "Орх/бүрткгдх",
-       "userloginnocreate": "Орх",
        "logout": "Һарх",
        "userlogout": "Һарх",
        "notloggedin": "Та орсн уга",
-       "nologin": "Бичгдлһгот? '''$1'''.",
-       "nologinlink": "Бичгдлһн бүтәх",
        "createaccount": "Бичгдлһн бүтәх",
-       "gotaccount": "Бичгдлһтәт? '''$1'''.",
-       "gotaccountlink": "Ортн",
        "createaccountmail": "электрона улаһар",
        "userexists": "Эн нер олзлдг юмн.\nБуйн болтха, талдан нернь автн.",
        "loginerror": "Орлһна эндү",
        "saveprefs": "Хадһлх",
        "restoreprefs": "Хамг таарсн көг босхх (цуг салвр)",
        "prefs-editing": "Ясвр",
-       "rows": "Мөрд:",
-       "columns": "Бахд:",
        "savedprefs": "Тана көгүдиг хадһлв.",
        "timezonelegend": "Цагин бүс:",
        "localtime": "Бәәрн цаг:",
        "rcshowhideliu": "$1 бүрткгдсн демнәч",
        "rcshowhideanons": "нерго демнәчнр $1",
        "rcshowhidemine": "мини ясвр $1",
-       "rclinks": "Отхн $1 ясвр, сүл $2 өдрмүдт үзүлх<br />$3",
+       "rclinks": "Отхн  $2 өдрә $1 ясвр үзүлх",
        "diff": "йилһ",
        "hist": "тууҗ",
        "hide": "Нуух",
index 8093c68..26dbb79 100644 (file)
        "externaldberror": "საგარეო მონაცემთა ბაზაში აუტენტიფიკაციის შეცდომაა, ან თქვენ არ გაქვთ საკმარისი უფლებები საგარეო ანგარიშში ცვლილებების შესატანად.",
        "login": "მიშულა",
        "nav-login-createaccount": "მიშულა/ანგარიშიშ გონწყუმა",
-       "userlogin": "მიშულა/ანგარიშიშ გონწყუმა",
-       "userloginnocreate": "მიშულა",
        "logout": "გიშულა",
        "userlogout": "გიშულა",
        "notloggedin": "შესვლა არ განხორციელდა",
        "userlogin-noaccount": "ვაიღჷნანო ანგარიში?",
        "userlogin-joinproject": "ქაკათით {{SITENAME}}",
-       "nologin": "დიორდე ვარეთო რეგისტრირებული? $1.",
-       "nologinlink": "გონწყით ანგარიში",
        "createaccount": "ანგარიშიშ გონწყუმა",
-       "gotaccount": "უკვე რეგისტრირებული რეთო? '''$1'''",
-       "gotaccountlink": "მინულა",
-       "userlogin-resetlink": "გუგოჭყორდესო მიშაულარო საჭირო ინფორმაციაქ?",
        "userlogin-resetpassword-link": "დუგოჭყორდესო პაროლქ?",
        "userlogin-helplink2": "მოხვარა:მიშულა",
        "userlogin-loggedin": "თქვენ უკვე შეხვედით როგორც {{GENDER:$1|$1}}.\nგამოიყენეთ ფორმა ქვემოთ, რათა შეხვიდეთ სხვა ანგარიშიდან.",
        "createacct-another-email-ph": "გენშიონით თქვანი ელ. ფოსტაშ ოწურაფუ",
        "createaccountmail": "გამოიყენეთ შემთხვევითობის მეთოდით შერჩეული დროებითი პაროლი და გააგზავნეთ მითითებულ ელ.ფოსტის მისამართზე",
        "createacct-realname": "ნამდვილი სახელი (არააუცილებელი)",
-       "createaccountreason": "მიზეზი:",
        "createacct-reason": "მიზეზი",
        "createacct-reason-ph": "რატომ ქმნით ახალ ანგარიშს?",
        "createacct-submit": "გონწყით თქვენ ანგარიში",
        "preview": "გიწოთოლორაფა",
        "showpreview": "ქაძირე გიწოთოლორაფა",
        "showdiff": "თირაფეფიშ ძირაფა",
-       "blankarticle": "გაფრთხილება: გვერდი, რომელსაც ქმნით, ცარიელია. თუკი კვლავ დააჭერთ ღილაკს \"{{int:savearticle}}\", გვერდი შეიქმნება შემცვლელობის გარეშე.",
+       "blankarticle": "გაფრთხილება: გვერდი, რომელსაც ქმნით, ცარიელია. თუკი კვლავ დააჭერთ ღილაკს \"$1\", გვერდი შეიქმნება შემცვლელობის გარეშე.",
        "anoneditwarning": "<strong>გათხილება:</strong> თქვა ვარეთ ავტორიზაფილი. თქანი IP მიოწურაფუ საარძოთ იძირაფედას იჸი, თუ თქვა შეასრულენთ რედაქტირაფას. თუ თქვა გენკურთ <strong>[$1 ავტორიზაციას]</strong> ვარდა <strong>[$2 გონწყუნთ ანგარიშის]</strong>, შხვა ნარსხუნეფწკჷმა ართო, თქვანი რედაქტირაფეფი ქიმიარსხუ თქვან მახვარებუშ ჯოხოს.",
        "anonpreviewwarning": "''თქვენ არ შესულხართ სისტემაში. თქვენი IP მისამართი შეინახება გვერდის ისტორიაში. ''",
        "missingsummary": "<strong>ეხსენება:</strong> თქვენ არ მიგითითებიათ რედაქტირების რეზიუმე.\nთუ ისევ დააწკაპუნებთ შენახვაზე, თქვენი რედაქტირება რეზიუმეს გარეშე დამახსოვრდება.",
-       "selfredirect": "გაფრთხილება: თქვენ გადამისამართებას იმავე გვერდზე ქმნით. შესაძლოა, თქვენ გადამისამართებისთვის აირჩიეთ არასწორი სამიზნე გვერდი ან არედაქტირებთ არასამიზნე გვერდს. \n\nთუ თქვენ კიდევ ერთხელ დააჭერთ ღილაკს \"{{int:savearticle}}\", გადამისამართება შეიქმნება.",
+       "selfredirect": "გაფრთხილება: თქვენ გადამისამართებას იმავე გვერდზე ქმნით. შესაძლოა, თქვენ გადამისამართებისთვის აირჩიეთ არასწორი სამიზნე გვერდი ან არედაქტირებთ არასამიზნე გვერდს. \n\nთუ თქვენ კიდევ ერთხელ დააჭერთ ღილაკს \"$1\", გადამისამართება შეიქმნება.",
        "missingcommenttext": "გთხოვთ კომენტარი შეიყვანოთ ქვემოთ.",
-       "missingcommentheader": "'''შეხსენება:''' თქვენ ამ კომენტარისთვის სათაური/თემა არ მიგითითებიათ. თუ შენახვაზე \"{{int:savearticle}}\" დააწკაპუნებთ, თქვენი ცვლილება მის გარეშე იქნება შენახული.",
+       "missingcommentheader": "'''შეხსენება:''' თქვენ ამ კომენტარისთვის სათაური/თემა არ მიგითითებიათ. თუ შენახვაზე \"$1\" დააწკაპუნებთ, თქვენი ცვლილება მის გარეშე იქნება შენახული.",
        "summary-preview": "რეზიუმეშ გიწოთოლორაფა",
        "subject-preview": "თემის/სათაურის წინასწარი გადახედვა:",
        "previewerrortext": "თქვენი ცვლილებების წინასწარი გადახედვის მცდელობის დროს მოხდა შეცდომა.",
        "editingsection": "$1–იშ (სექციაშ) რედაქტირაფა",
        "editingcomment": "რედაქტირაფა: $1 (ახალი სექცია)",
        "editconflict": "რედაქტირების კონფლიქტი: $1",
-       "explainconflict": "სხვა მომხმარებელმა შეცვალა ეს გვერდი მას შემდეგ რაც თქვენ დაიწყეთ მისი რედატირება.\nზედა ტექსტური ველი შეიცავს გვერდის შიგთავსს მისი ამჟამინდელი სახით.\nთქვენი ცვლილებები ნაჩვენებია ქვედა ტექსტურ ველში.\nთქვენ მოგიწევთ თქვენი ცვლილებების შერწყმა არსებულ ტექსტთან.\n'''მხოლოდ''' ზედა ველში არსებული ტექსტი იქნება შენახული, როდესაც „{{int:savearticle}}“ დააჭერთ.",
+       "explainconflict": "სხვა მომხმარებელმა შეცვალა ეს გვერდი მას შემდეგ რაც თქვენ დაიწყეთ მისი რედატირება.\nზედა ტექსტური ველი შეიცავს გვერდის შიგთავსს მისი ამჟამინდელი სახით.\nთქვენი ცვლილებები ნაჩვენებია ქვედა ტექსტურ ველში.\nთქვენ მოგიწევთ თქვენი ცვლილებების შერწყმა არსებულ ტექსტთან.\n'''მხოლოდ''' ზედა ველში არსებული ტექსტი იქნება შენახული, როდესაც „$1“ დააჭერთ.",
        "yourtext": "თქვან ტექსტი",
        "storedversion": "შენახული ვერსია",
        "nonunicodebrowser": "<strong>გაფრთხილება: თქვენი ბრაუზერი უნიკოდთან თავსებადი არ არის.</strong> \nჩვენ ვცდილობთ ამ პრობლემის გადაჭრას, რათა თქვენ შეძლოთ უსაფრთხოდ შეიტანოთ ცვლილებები გვერდებზე: არა-ASCII ნიშნები რედაქტირების ფანჯარაში გამოჩნდება როგორც ჰექსადეციმალური კოდები.",
        "right-editsemiprotected": "გვერდების რედაქტირება რომლებიც დაცულია როგორც „{{int:protect-level-autoconfirmed}}“",
        "right-editcontentmodel": "გვერდის კონტენტური მოდელის რედაქტირება",
        "right-editinterface": "მომხმარებლის ინტერფეისის შეცვლა",
-       "right-editusercssjs": "სხვა მომხმარებლების CSS და JavaScript ფაილების შესწორება",
        "right-editusercss": "სხვა მომხმარებლების CSS-ფაილების შესწორება",
        "right-edituserjs": "სხვა მომხმარებლების JavaScript-ფაილების შესწორება",
        "right-editmyusercss": "თქვენი საკუთარი CSS-ფაილების რედაქტირება",
        "rcshowhidecategorization": "$1 ხასჷლაშ კატეროტიზაცია",
        "rcshowhidecategorization-show": "ძირაფა",
        "rcshowhidecategorization-hide": "ტყობინაფა",
-       "rclinks": "ეკონია $2 დღას ღოლამირ ეკონია $1 თირაფეფიშ ძირაფა <br />$3",
+       "rclinks": "ეკონია $2 დღას ღოლამირ ეკონია $1 თირაფეფიშ ძირაფა",
        "diff": "შხვანერობა",
        "hist": "ისტ.",
        "hide": "ტყობინაფა",
        "logentry-newusers-create": "{{GENDER:$2|დორსხუაფილი რე}} მახვარებუშ ანგარიში $1",
        "logentry-upload-upload": "მახვარებუქ $1 {{GENDER:$2|ეხარგუ}} $3",
        "rightsnone": "(არცერთი)",
-       "revdelete-summary": "ცვლილებების აღწერა",
        "feedback-adding": "თქვენი შეფასების შენახვა...",
        "feedback-back": "უკან",
        "feedback-bugcheck": "კარგია! გთხოვთ, კიდევ ერთხელ შეამოწმეთ, ხომ არ არის აქ რომელიმე უკვე [$1 ნაცნობი შეცდომა].",
index e8d2ac7..afa9d5c 100644 (file)
@@ -18,7 +18,8 @@
                        "Matma Rex",
                        "Macofe",
                        "Nemo bis",
-                       "Alefbeis"
+                       "Alefbeis",
+                       "Sol lemon"
                ]
        },
        "tog-underline": "שטרייכט אונטער לינקען",
        "anontalk": "שמועס",
        "navigation": "נאַוויגאַציע",
        "and": "&#32;און",
-       "qbfind": "טרעף",
-       "qbbrowse": "בלעטערן",
-       "qbedit": "ענדערן",
-       "qbpageoptions": "דער בלאט",
-       "qbmyoptions": "מיינע בלעטער",
        "faq": "מערסטע געפרעגטע פראגעס",
-       "faqpage": "Project:מערסטע געפרעגט פראגעס",
        "actions": "אַקציעס",
        "namespaces": "נאָמענטיילן",
        "variants": "װאַריאַנטן",
        "edit-local": "רעדאקטירן לאקאלע באשרײַבונג",
        "create": "שאַפֿן",
        "create-local": "צולייגן לאקאלע באשרײַבונג",
-       "editthispage": "ענדערן דעם בלאט",
-       "create-this-page": "שאַפֿן דעם בלאַט",
        "delete": "אויסמעקן",
-       "deletethispage": "אויסמעקן דעם בלאַט",
-       "undeletethispage": "צוריקשטעלן דעם בלאט",
        "undelete_short": "צוריקשטעלן {{PLURAL:$1|איין רעדאַקטירונג|$1 רעדאַקטירונגען}}",
        "viewdeleted_short": "באַקוקן {{PLURAL:$1|איין געמעקטע ענדערונג|$1 געמעקטע ענדערונגען}}",
        "protect": "באשיצן",
        "protect_change": "טוישן",
-       "protectthispage": "באשיץ דעם בלאט",
        "unprotect": "ענדערונג באַשיצונג",
-       "unprotectthispage": "ענדערן באַשיצונג פון דעם בלאַט",
        "newpage": "נייער בלאַט",
-       "talkpage": "שמועסט איבער דעם בלאט",
        "talkpagelinktext": "שמועס",
        "specialpage": "ספעציעלער בלאט",
        "personaltools": "פערזענלעכע געצייג",
-       "articlepage": "זען אינהאַלט בלאַט",
        "talk": "שמועס",
        "views": "קוקן",
        "toolbox": "געצייג",
        "tool-link-userrights": "ענדערן {{GENDER:$1|באַניצער}} גרופעס",
        "tool-link-userrights-readonly": "באקוקן {{GENDER:$1|באַניצער}} גרופעס",
        "tool-link-emailuser": "שיקן {{GENDER:$1|דעם באניצער|די באניצערין}} ע־פאסט",
-       "userpage": "זען באַניצער בלאַט",
-       "projectpage": "זען פראיעקט בלאַט",
        "imagepage": "זען טעקע בלאט",
        "mediawikipage": "זען מעלדונג בלאַט",
        "templatepage": "זעט מוסטער בלאט",
        "redirectedfrom": "(אַריבערגעפֿירט פון $1)",
        "redirectpagesub": "ווייטערפירן בלאט",
        "redirectto": "ווײַטערפירן צו:",
-       "lastmodifiedat": "×\93ער ×\91×\9c×\90×\98 ×\90×\99×\96 ×\9cעצ×\98 ×\92×¢×\95×\95×\90ר×\9f ×\9e×\90×\93×\99פ×\99צירט $2, $1.",
+       "lastmodifiedat": "×\93ער ×\91×\9c×\90×\98 ×\90×\99×\96 ×\9cעצ×\98 ×\92×¢×\95×\95×\90ר×\9f ×¨×¢×\93×\90ק×\98ירט $2, $1.",
        "viewcount": "דער בלאט איז געווארן געליינט {{PLURAL:$1|איין מאל|$1 מאל}}.",
        "protectedpage": "באשיצטער בלאט",
        "jumpto": "שפּרינג צו:",
        "page-atom-feed": "Atom פֿון $1",
        "feed-atom": "אטאם",
        "feed-rss": "אר.עס.עס.",
-       "red-link-title": "$1 (בלאט טוט נאָך נישט עקזיסטירן)",
+       "red-link-title": "$1 (בלאַט עקזיסטירט נאָך נישט)",
        "sort-descending": "סארטירן אַראָפ",
        "sort-ascending": "סארטירן אַרויף",
        "nstab-main": "בלאַט",
        "nocookiesnew": "די באניצער קאנטע איז באשאפן, אבער איר זענט נישט אריינלאגירט.\n{{SITENAME}} ניצט קיכלעך אריינצולאגירן באניצער.\nאיר האט קיכלעך נישט-ערמעגלעכט.\nביטע ערמעגלעכט זיי, דאן טוט אריינלאגירן מיט אייערע נייע באניצער נאמען און פאסווארט.",
        "nocookieslogin": "{{SITENAME}} נוצט קיכלעך כדי אַרײַנלאגירן באַניצער.\nבײַ אײַך זענען קיכלעך אומדערמעגלעכט.\nביטע אַקטיווירט זיי און פרובירט נאכאַמאָל.",
        "nocookiesfornew": "מען האט נישט געשאַפֿן די באַניצער קאנטע, ווײַל מען האט נישט געקענט באַשטעטיקן איר מקור.\nטוט פֿעסטשטעלן אָז קיכלעך זענען אַקטיווירט, לאָדט אָן נאכאַמאל דעם בלאַט און פרואווט ווידער.",
+       "createacct-loginerror": "מען האט געשאפן די קאנטע דערפאלגרייך; איר קענט אבער נישט אריינלאגירן אויטאמאטיש. זייט אזוי גוט און גייט צום [[Special:UserLogin|מאנועלן אריינלאגירן]].",
        "noname": "איר האט נישט אַרײַנגעשטעלט קײַן גילטיקן באַניצער נאָמען.",
        "loginsuccesstitle": "אריינלאגירט",
        "loginsuccess": "'''איר זענט אַצינד אַרײַנלאָגירט אין {{SITENAME}} ווי \"$1\".'''",
        "botpasswords-disabled": "באט פאסווערטער זענען אומאקטיווירט.",
        "botpasswords-existing": "עקזיסטירנדע באט פאסווערטער",
        "botpasswords-createnew": "שאפֿן א ניי באט פאסווארט",
+       "botpasswords-editexisting": "רעדאקטירן אן עקזיסטירנדיק באט פאסווארט",
        "botpasswords-label-appid": "באט נאמען:",
        "botpasswords-label-create": "שאַפֿן",
        "botpasswords-label-update": "דערהײַנטיקן",
        "passwordreset-nocaller": "מען דארף פֿארזארגן א רופֿער",
        "passwordreset-nosuchcaller": "רופֿער איז נישט פֿאראן: $1",
        "passwordreset-invalidemail": "אומגילטיקער ע־פאסט אדרעס",
+       "passwordreset-nodata": "מ׳האט נישט פֿארזארגט נישט קיין באניצער־נאמען און נישט קיין ע־פאסט אדרעס",
        "changeemail": "ענדערן אדער אראפנעמען ע-פּאָסט אַדרעס",
        "changeemail-header": "דערגאַנצט די פֿאָרעם צו ענדערן אייער ע-פּאָסט אַדרעס .\nטאמער ווילט איר אראפנעמען די צוארדנונג פון איינעם פון אייערע ע־פאסט אדרעסן פו אייער קאנטע, לאזט ליידיג דעם נייעם ע־פאסט אדרעס ווען איר גיט איין די פֿארעם.",
        "changeemail-no-info": "איר דאַרפֿט זיין אַרײַנלאגירט צוצוקומען גלײַך צו דעם דאָזיגן בלאַט.",
        "preview": "פֿאראויסקוק",
        "showpreview": "ווייזן פאָרױסקוק",
        "showdiff": "ווײַז די ענדערונגען",
-       "blankarticle": "<strong>×\90×\96×\94ר×\94:</strong> ×\93ער ×\91×\9c×\90×\98 ×\90×\99ר ×\92×\99×\99×\98 ×©×\90פ×\9f ×\90×\99×\96 ×\9c×\99×\99×\93×\99ק.\n×\98×\90×\9eער ×\90×\99ר ×\95×\95×¢×\98 ×\93ר×\99ק×\9f ×\90×\95×\99×£ \"{{int:savearticle}}\" נאכאמאל, וועט דער בלאט ווערן געשאפן אן קיין אינהאלט.",
+       "blankarticle": "<strong>×\90×\96×\94ר×\94:</strong> ×\93ער ×\91×\9c×\90×\98 ×\95×\95×\90ס ×\90×\99ר ×\92×\99×\99×\98 ×©×\90פ×\9f ×\90×\99×\96 ×\9c×\99×\99×\93×\99×\92.\n×\98×\90×\9eער ×\90×\99ר ×\95×\95×¢×\98 ×\93ר×\99ק×\9f ×\90×\95×\99×£ \"$1\" נאכאמאל, וועט דער בלאט ווערן געשאפן אן קיין אינהאלט.",
        "anoneditwarning": "<strong>ווארענונג:</strong> איר זענט נישט אריינלאגירט. אייער איי פי אדרעס וועט ווערן עפנטלעך זעבאר ווען איר פירט דורך  ענדערונגען . אז איר <strong>[$1 לאגירט ארײַן]</strong> אדער <strong>[$2 שאפט א קאנטע]</strong>, וועלן אײַערע רעדאקטירונגען ווערן צוגעשריבן צו אײַער באניצער-נאמען, ווי אויך אנדערע טובות.",
        "anonpreviewwarning": "''איר זענט נישט אַרײַנלאגירט. אויפֿהיטן וועט ארײַנשרײַבן אײַער IP אַדרעס אין דער רעדאַקטירונג היסטאריע פונעם בלאַט.''",
        "missingsummary": "'''דערמאנונג:''' איר האט נישט אויסגעפילט דעם קורץ ווארט אויפקלערונג אויף אייער עדיט. אויב וועט איר דרוקן נאכאמאל אויף  \"היט אפ דעם בלאט\", וועט אייער ענדערונג ווערן געהיטן אן דעם.",
-       "selfredirect": "<strong>×\95×\95×\90רענ×\95× ×\92:</strong> ×\90×\99ר ×\98×\95×\98 ×\95×\95ײַ×\98ערפ×\99ר×\9f ×\93×¢×\9d ×\91×\9c×\90×\98 ×¦×\95 ×\96×\99×\9a ×\90×\9c×\99×\99×\9f.\n×\90×\99ר ×\94×¢×\98 ×\90פשר ×¡×¤×¢×¦×\99פ×\99צ×\99ר×\98 ×\90 ×¤×\90×\9cש×\9f ×\95×\95ײַ×\98ערפ×\99ר×\95× ×\92־צ×\99×\9c  ×\90×\93ער ×\90×\99ר ×¨×¢×\93×\90ק×\98×\99ר×\98 ×\93×¢×\9d ×¤×\90×\9cש×\9f ×\91×\9c×\90×\98.\n×\98×\90×\9eער ×§×\9c×\99ק×\98 ×\90×\99ר × ×\90×\9b×\90×\9e×\90×\9c \"{{int:savearticle}}\", ×\95×\95×¢×\98 ×\9e×¢×\9f ×\98×\90קע ×©×\90פ×\9f ×\93×\99 ×\95×\95ײַטערפירונג.",
+       "selfredirect": "<strong>×\95×\95×\90רענ×\95× ×\92:</strong> ×\90×\99ר ×\98×\95×\98 ×\95×\95ײַ×\98ערפ×\99ר×\9f ×\93×¢×\9d ×\91×\9c×\90×\98 ×¦×\95 ×\96×\99×\9a ×\90×\9c×\99×\99×\9f.\nקע×\9f ×\96×\99×\99×\9f ×\90×\99ר ×\94×\90×\98 ×¡×¤×¢×¦×\99פ×\99צ×\99ר×\98 ×\90 ×¤×\90×\9cש×\9f ×\95×\95ײ×\98ערפ×\99ר×\95× ×\92־צ×\99×\9c  ×\90×\93ער ×\90×\99ר ×¨×¢×\93×\90ק×\98×\99ר×\98 ×\93×¢×\9d ×¤×\90×\9cש×\9f ×\91×\9c×\90×\98.\n×\98×\90×\9eער ×§×\9c×\99ק×\98 ×\90×\99ר × ×\90×\9b×\90×\9e×\90×\9c \"$1\", ×\95×\95×¢×\98 ×\9e×¢×\9f ×\98×\90קע ×©×\90פ×\9f ×\93×\99 ×\95×\95ײטערפירונג.",
        "missingcommenttext": "ביטע שטעלט אריין א אנמערקונג פון אונטן.",
-       "missingcommentheader": "'''דערמאַנונג:''' איר האט נישט אַרײַנגעשטעלט א טעמע פאר דער אנמערקונג. אויב וועט איר דרוקן נאכאמאל אויפן \"{{int:savearticle}}\", וועט אייער ענדערונג ווערן אפגעהיטן אן דעם.",
+       "missingcommentheader": "'''דערמאַנונג:''' איר האט נישט אַרײַנגעשטעלט א טעמע פאר דער אנמערקונג. אויב וועט איר דרוקן נאכאמאל אויפן \"$1\", וועט אייער ענדערונג ווערן אפגעהיטן אן דעם.",
        "summary-preview": "פאראויסקוק פֿון רעדאקטירונג־רעזומע:",
        "subject-preview": " פאראויסקוק פֿון טעמע:",
        "previewerrortext": "א פעלער האט פאסירט ביים פרובירן פארויסקוקן אײַערע ענדערונגען.",
        "readonlywarning": "<strong>ווארענונג: די דאטנבאזע איז געווארן פארשלאסן פאר אויפהאלטונג, ממילא וועט איר נישט קענען אפהיטן אייערע ענדערונגען אצינד.</strong>\nאיר קענט קאפירן און ארײַנלייגן דעם טעקסט אריין צו א טעקסט טעקע און דאס דארטן אפהיטן אויף שפעטער.\n\nדער אדמיניסטראטאר וואס האט זי פארשלאסן האט מסביר געווען אזוי: $1",
        "protectedpagewarning": "'''ווארענונג:  דער בלאט איז געווארן פארשפארט אז בלויז באניצערס מיט סיסאפ פריווילעגיעס קענען אים ענדערן.'''\nדי פארגאנגענע לאגבוך באשרײַבונג ווערט געוויזן דא:",
        "semiprotectedpagewarning": "'''באמערקונג:''' דער דאָזיקער בלאַט איז פאַרשפּאַרט, אַזוי אַז בלויז איינגעשריבענע באַניצער קענען אים ענדערן.\nדאָס פאַרגאַנגענע לאָגבוך באַשרייבונג ווערט געוויזן דאָ:",
-       "cascadeprotectedwarning": "<strong>×\95×\95×\90רענ×\95× ×\92:</strong> ×\93ער ×\91×\9c×\90×\98 ×\90×\99×\96 ×¤×\90רשפ×\90ר×\98 ×\90×\96 ×\91×\9c×\95×\99×\96 ×¡×\99ס×\90פ×\9f קענען אים ענדערן, וויבאלד ער איז איינגעשלאסן אין {{PLURAL:$1| דעם פאלגנדן בלאט, וואס איז|די פאלגנדע בלעטער, וואס זענען}} קאסקאד באשיצט:",
+       "cascadeprotectedwarning": "<strong>×\95×\95×\90רענ×\95× ×\92:</strong> ×\93ער ×\91×\9c×\90×\98 ×\90×\99×\96 ×¤×\90רשפ×\90ר×\98 ×\90×\96 ×\91×\9c×\95×\99×\96 ×\91×\90× ×\99צער ×\9e×\99×\98 [[Special:ListGroupRights|ספעצ×\99פֿ×\99שע ×¨×¢×\9b×\98×\9f]] קענען אים ענדערן, וויבאלד ער איז איינגעשלאסן אין {{PLURAL:$1| דעם פאלגנדן בלאט, וואס איז|די פאלגנדע בלעטער, וואס זענען}} קאסקאד באשיצט:",
        "titleprotectedwarning": "'''אזהרה: דער בלאט איז פֿארשפאַרט טא דארף מען [[Special:ListGroupRights|ספעציפֿישע רעכטן]] צו שאפֿן אים.'''\nדי פֿאַרגאַנגענע לאגבוך באשרײַבונג ווערט געוויזן דאָ:",
        "templatesused": "{{PLURAL:$1|מוסטער|מוסטערן}} באנוצט אויף דעם בלאט:",
        "templatesusedpreview": "{{PLURAL:$1|מוסטער| מוסטערן}}  באַניצט  אין דעם פֿאָראױסקוק:",
        "post-expand-template-argument-warning": "'''ווארענונג''': די בלאט אנטהאלט צו ווייניגסטענס איין טאמפלעיט פארעמיטער וואס איז צו גרויס. די דאזיגע פארעמיטערס זענען אויסגעלאזט געווארן.",
        "post-expand-template-argument-category": "בלעטער וואס זענען פון דעם ארויסגעלאזט געווארן טאמפלעיט פאראמעטערס",
        "parser-template-loop-warning": "מוסטער שלייף געטראפן: [[$1]]",
+       "template-loop-category": "בלעטער מיט מוסטער־שלייפֿן",
        "parser-template-recursion-depth-warning": "מוסטער רעקורסיע טיף מאקסימום איבערגעשטיגן ($1)",
        "language-converter-depth-warning": "אַריבער דעם שפּראַך קאַנווערטער טיף לימיט ($1)",
        "node-count-exceeded-category": "בלעטער וואו קנופצאל איז צו פיל",
        "page_first": "ערשט",
        "page_last": "לעצט",
        "histlegend": "פֿארגלייכן  אויסקלויב: צייכנט די קנעפלעך פֿון די ווערסיעס צו פֿארגלײַכן, און קלאפט  Enter אדער דאס קנעפל '''{{int:compareselectedversions}}'''.<br />\nשליסל: '''({{int:cur}})''' = אונטערשייד פֿון לויפֿיגער ווערסיע, '''({{int:last}})''' = אונטערשייד פֿון פֿריערדיגער ווערסיע, '''({{int:last}})''' = מינערדיקע רעדאקטירונג",
-       "history-fieldset-title": "×\91×\9c×¢×\98ער×\98 ×\93×\99 ×\94×\99ס×\98×\90ר×\99×¢",
-       "history-show-deleted": "נאר אויסגעמעקט",
+       "history-fieldset-title": "×\96×\95×\9b×\9f ×\95×\95ערס×\99עס",
+       "history-show-deleted": "נאר אויסגעמעקטע ווערסיעס",
        "histfirst": "עלטסטע",
        "histlast": "נײַעסטע",
        "historysize": "({{PLURAL:$1|1 בייט|$1 בייטן}})",
        "search-file-match": "(פאסט צו טעקע אינהאלט)",
        "search-suggest": "צי האט איר געמיינט: $1",
        "search-rewritten": "רעזולטאטן וועגן $1 ווערן געוויזן. איר קענט אויך זוכן $2.",
-       "search-interwiki-caption": "שוועסטער פראיעקטן",
+       "search-interwiki-caption": "×\90ר×\95×\99סק×\95×\9e×¢×\9f ×¤Ö¿×\95×\9f ×©×\95×\95עס×\98ער ×¤×¨×\90×\99עק×\98×\9f",
        "search-interwiki-default": "רעזולטאטן פון $1:",
        "search-interwiki-more": "(נאך)",
        "search-interwiki-more-results": "נאך רעזולטאטן",
        "prefs-help-prefershttps": "דער פרעפערענץ וועט ארבעטן ביי אײַער נעקסטער ארײַנלאגירונג.",
        "prefswarning-warning": "איר האט געמאכט ענדערונגען צו אײַערע פרעפערענצן וואס זענען נאך נישט אויפגעהיטן.\nאז איר פארלאזט דעם בלאט אן קליקן ״$1״ וועלן אײַערע פרעפערענצן נישט ווערן דערהײַנטיקט.",
        "prefs-tabs-navigation-hint": "טיפ: איר קענט ניצן די רעכטס און לינקס פייל־קלאווישן צו נאוויגירן צווישן די צינגלעך אין דער צינגלעך־ליסטע.",
-       "userrights": "באַניצער רעכטן פֿאַרוואַלטערשאפט",
+       "userrights": "באַניצער רעכטן",
        "userrights-lookup-user": "אויסוויילן א באניצער",
        "userrights-user-editname": "לייגט אריין א באַניצער-נאמען:",
        "editusergroup": "לאדן באַניצער גרופּעס",
        "saveusergroups": "אויפֿהיטן {{GENDER:$1|באַניצער}} גרופעס",
        "userrights-groupsmember": "מיטגליד פון:",
        "userrights-groupsmember-auto": "אויטאמטישער מיטגליד פֿון:",
-       "userrights-groups-help": "איר מעגט ענדערן די גרופעס צו וועמען {{GENDER:$1|דער באַניצער|די באַניצערין}} געהערט:\n*א מאַרקירט קעסטל באַדײַט אָז דער באַניצער איז א מיטגליד אין דער גרופע.\n* אַן אוממאַרקירט קעסטל באַדײַט אָז דער באַניצער איז נישט קיין מיטגליד אין דער גרופע.\n* א * ווײַזט אַז איר קענט נישט אַראפנעמען די גרופע נאָך דעם וואָט איר האט זי צוגעלייגט, אדער פֿאַרקערט.",
+       "userrights-groups-help": "איר מעגט ענדערן די גרופעס צו וועמען {{GENDER:$1|דער באַניצער|די באַניצערין}} געהערט:\n*א מאַרקירט קעסטל באַדײַט אָז דער באַניצער איז א מיטגליד אין דער גרופע.\n* אַן אוממאַרקירט קעסטל באַדײַט אָז דער באַניצער איז נישט קיין מיטגליד אין דער גרופע.\n* א * ווײַזט אַז איר קענט נישט אַראפנעמען די גרופע נאָך דעם וואָט איר האט זי צוגעלייגט, אדער פֿאַרקערט.\n* א 3 ווײַזט אַז איר קענט נאר מאכן שפעטער די אויסלאז צייט פון דער גרופע־מיטגלידשאפֿט; איר קענט זי נישט מאכן פֿריער.",
        "userrights-reason": "אורזאַך:",
        "userrights-no-interwiki": "איר האט נישט קיין ערלויבניש צו רעדאַקטירן באַניצער רעכטן אויף אַנדערע וויקיס.",
        "userrights-nodatabase": "דאַטנבאַזע $1 אדער עקזיסטירט נישט אדער איז נישט ארטיק.",
        "userrights-expiry-existing": "עקזיסטירנדע אויסלאז צײַט: $3, $2",
        "userrights-expiry-othertime": "אַנדער צײט:",
        "userrights-expiry-options": "1 טאג:1 day,1 וואך:1 week,1 Monat:1 month,3 מאנאט:3 months,6 מאנאטן:6 months,1 יאר:1 year",
+       "userrights-invalid-expiry": "די אויסלאז צייט פאר גרופע \"$1\" איז אומגילטיק.",
+       "userrights-expiry-in-past": "די אויסלאז צייט פאר גרופע \"$1\" איז שוין געווען.",
        "userrights-conflict": "קאנפֿליקט פון באניצער־רעכטן ענדערונגען! זייט אזוי גוט רעצענזירן און באשטעטיקן אײַערע ענדערונגען.",
        "group": "גרופע:",
        "group-user": "באניצערס",
        "right-createpage": "שאַפֿן בלעטער (וואָס זענען נישט שמועס בלעטער)",
        "right-createtalk": "שאַפֿן שמועס בלעטער",
        "right-createaccount": "שאַפֿן נײַע באַניצער קאנטעס",
+       "right-autocreateaccount": "אריינלאגירן אויטאמאטיש מיט א דרויסנדיקער באניצער־קאנטע",
        "right-minoredit": "צייכן רעדאקטירונגען אלס  מינערדיק",
        "right-move": "באוועג בלעטער",
        "right-move-subpages": "באַוועגן בלעטער מיט זייערע אונטערבלעטער",
        "right-editsemiprotected": "רעדאַגירן בלעטער געשיצט ווי \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "רעדאקטירן אינהאלט־מאדעל פון א בלאט",
        "right-editinterface": "רעדאַקטירן די באַניצער אייבערפֿלאַך",
-       "right-editusercssjs": "רעדאַקטירן אַנדערע באַניצערס CSS און JS טעקעס",
        "right-editusercss": "רעדאַקטירן אַנדערע באַניצערס CSS טעקעס",
        "right-edituserjs": "רעדאַקטירן אַנדערע באַניצערס JS טעקעס",
        "right-editmyusercss": "רעדאקטירע אײַערע אייגענע באניצער CSS טעקעס",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (זעט אויך [[Special:NewPages|די רשימה פון נייע בלעטער]])",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "ווייזן",
+       "rcfilters-activefilters": "אַקטיווע פילטערס",
+       "rcfilters-quickfilters": "אויפֿגעהיטענע פֿילטער־שטעלונגען",
+       "rcfilters-quickfilters-placeholder-title": "קיין לינקען נאך נישט אויפֿגעהיטן",
+       "rcfilters-savedqueries-defaultlabel": "אױפֿגעהיטענע פֿילטערס",
+       "rcfilters-savedqueries-rename": "ענדערן נאמען",
+       "rcfilters-savedqueries-setdefault": "האלטן ווי גרונט",
+       "rcfilters-savedqueries-remove": "אראפנעמען",
+       "rcfilters-savedqueries-new-name-label": "נאָמען",
+       "rcfilters-savedqueries-cancel-label": "אַנולירן",
+       "rcfilters-search-placeholder": "פֿילטערן לעצטיקע ענדערונגען (דורכקוקן אדער אָנהייבן אַריינקלאַפן)",
        "rcfilters-invalid-filter": "אומגילטיגער פֿילטער",
+       "rcfilters-empty-filter": "קיין אַקטיווע פילטערס. אלע ביישטייערונגען געוויזן.",
        "rcfilters-filterlist-title": "פֿילטערס",
+       "rcfilters-filterlist-whatsthis": "וואס איז דאס?",
        "rcfilters-filterlist-noresults": "קיין פֿילטערס נישט געטראפֿן",
+       "rcfilters-filter-registered-label": "אײַנגעשריבן",
+       "rcfilters-filter-editsbyself-label": "ענדערונגען פון אייך",
+       "rcfilters-filter-editsbyself-description": "אייערע אייגענע בײשטײערונגען.",
+       "rcfilters-filter-editsbyother-label": "ענדערונגען פֿון אנדערע",
+       "rcfilters-filter-editsbyother-description": "אלע ענדערונגען אחוץ אייערע אייגענע.",
+       "rcfilters-filter-user-experience-level-learner-label": "לערנער",
        "rcfilters-filter-bots-label": "באט",
+       "rcfilters-filter-humans-label": "מענטש (נישט קיין באט)",
+       "rcfilters-filter-humans-description": "רעדאקטירונגען געמאכט פון מענטשן רעדאקטארן.",
+       "rcfilters-filtergroup-reviewstatus": "רעצענזירונג־סטאטוס",
+       "rcfilters-filter-patrolled-label": "פאטראלירט",
+       "rcfilters-filter-newpages-label": "בלאַט־שאַפֿונגען",
+       "rcfilters-filtergroup-lastRevision": "לעצטע ווערסיע",
+       "rcfilters-filter-lastrevision-label": "לעצטע ווערסיע",
        "rcnotefrom": "פֿאלגנד {{PLURAL:$5|איז די ענדערונג| זענען די ענדערונגען}} זײַט <strong>$3, $4</strong> (ביז <strong>$1</strong>).",
        "rclistfrom": "װײַזן נײַע ענדערונגען פֿון $3 $2",
        "rcshowhideminor": "$1 מינערדיגע ענדערונגען",
        "rcshowhidecategorization": "$1 בלאט קאטעגאריזירונג",
        "rcshowhidecategorization-show": "ווײַזן",
        "rcshowhidecategorization-hide": "באַהאַלטן",
-       "rclinks": "װײַזן די לעצטע $1 ענדערונגען אין די לעצטע $2 טעג.<br />$3",
+       "rclinks": "װײַזן די לעצטע $1 ענדערונגען אין די לעצטע $2 טעג.",
        "diff": "אונטערשייד",
        "hist": "היסטאריע",
        "hide": "באַהאַלטן",
        "uploadstash-nofiles": "איר האט נישט קיין טעקעס אין זאפאס.",
        "uploadstash-errclear": "אוועקנעמען די טעקעס דורכגעפאלן.",
        "uploadstash-refresh": "דערפֿרישן די רשימה פון טעקעס",
+       "uploadstash-thumbnail": "באקוקן קליינבילד",
        "invalid-chunk-offset": "אומגילטיקער סטארטפונקט",
        "img-auth-accessdenied": "צוטריט אָפגעזאָגט",
        "img-auth-notindir": "געשיכטעס שטעג איז נישט אין דער קאנפיגורטער ארויפלאד־דירעקטאריע.",
        "enotif_body_intro_moved": "דער {{SITENAME}} בלאט $1 איז באוועגט געווארן אום $PAGEEDITDATE דורך {{gender:$2|$2}}, זעט $3 פאר דער לויפיקער רעוויזיע.",
        "enotif_body_intro_restored": "דער {{SITENAME}} בלאט $1 איז צוריקגעשטעלט געווארן אום $PAGEEDITDATE דורך {{gender:$2|$2}}, זעט $3 פאר דער לויפיקער רעוויזיע.",
        "enotif_body_intro_changed": "דער {{SITENAME}} בלאט $1 איז געענדערט געווארן אום $PAGEEDITDATE דורך {{gender:$2|$2}}, זעט $3 פאר דער לויפיקער רעוויזיע.",
-       "enotif_lastvisited": "×\96×¢×\98 $1 ×¤Ö¿×\90ַר ×\90×\9c×¢ ×¢× ×\93ער×\95× ×\92×¢×\9f ×\96×\99× ×\98 ×\90ײַער ×\9cעצ×\98×\9f ×\95×\95×\99×\96×\99×\98.",
-       "enotif_lastdiff": "×\96×¢×\98 $1 ×¤×\90ר ×\93ער ×¢× ×\93ער×\95× ×\92.",
+       "enotif_lastvisited": "פֿ×\90ַר ×\90×\9c×¢ ×¢× ×\93ער×\95× ×\92×¢×\9f ×\96×\99× ×\98 ×\90ײַער ×\9cעצ×\98×\9f ×\95×\95×\99×\96×\99×\98, ×\96×¢×\98 $1",
+       "enotif_lastdiff": "צ×\95 ×\91×\90ק×\95ק×\9f ×\93×\99 ×¢× ×\93ער×\95× ×\92, ×\96×¢×\98 $1.",
        "enotif_anon_editor": "אַנאנימער באַניצער $1",
        "enotif_body": "טײַערער $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nענדערערס קורץ ווארט: $PAGESUMMARY $PAGEMINOREDIT\n\nפארבינדט זיך צום שרייבער:\nע-פאסט: $PAGEEDITOR_EMAIL\nוויקי: $PAGEEDITOR_WIKI\n\nעס וועט מער נישט זיין קיין מעלדונגען אין פאל פון נאך אקטיוויטעט נאר אויב איר וועט באזוכן דעם בלאט ווען אריינלאגירט.\nאיר קענט אויך צוריקשטעלן די מעלדונגען פאנען פון אלע אייערע אויפֿגעפאסטע בלעטער אין אייער אויפפאסונג ליסטע.\n\nאייער פֿריינטליכע  {{SITENAME}} מעלדונגען סיסטעם\n\n--\nצו ענדערן אייער ע־פאסט נאטיפיקאציע שטעלונגען, באזוכט\n{{canonicalurl:{{#special:Preferences}}}}\n\nצו ענדערן אייער אויפֿפאסונג ליסטע, באזוכט\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nכדי אויסמעקן דעם בלאט פון אײַער אויפֿפאַסונג ליסטע, באַזוכט\n$UNWATCHURL\n\nפאר מער הילף:\n$HELPPAGE",
        "created": "געשאַפֿן",
        "editcomment": "קורץ ווארט איז געווען: <em>$1</em>.",
        "revertpage": "רעדאַקטירונגען פֿון  [[Special:Contributions/$2|$2]] צוריקגענומען ([[User talk:$2|רעדן]])  צו דער לעצטער ווערסיע פֿון [[User:$1|$1]]",
        "revertpage-nouser": "צוריקגעשטעלט רעדאַקטירונגען פֿון א באהאלטענעם באַניצער צו לעצטער רעוויזיע פֿון {{GENDER:$1|[[User:$1|$1]]}}",
-       "rollback-success": "צוריקגעדרייט רעדאַקטירונגען פֿון $1 צו דער לעצטע ווערסיע פֿון $2",
+       "rollback-success": "צוריקגעדרייט רעדאַקטירונגען פֿון {{GENDER:$3|$1}};\nגעענדערט צו דער לעצטע ווערסיע פֿון {{GENDER:$4|$2}}.",
        "sessionfailure-title": "זיצונג דורכפֿאַל",
        "sessionfailure": "ווײַזט אויס אז ס'איז דא א פראבלעם מיט אייער ארײַנלאגירן; די פעולה איז געווארן אנולירט צו פֿאַרהיטן קעגן פֿאַרשטעלן אייער סעסיע. זייט אזוי גוט און גייט צוריק צום פֿריערדיקן בלאט, און פרובירט נאכאַמאָל.",
        "changecontentmodel": "ענדערן אינהאלט־מאדעל פון א בלאט",
        "undeleteviewlink": "באַקוקן",
        "undeleteinvert": "איבערקערן דעם אויסקלויב",
        "undeletecomment": "אורזאַך:",
-       "undeletedrevisions": "{{PLURAL:$1|1 רעוויזיע|$1 רעוויזיעס}} צוריקגעשטעלט",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 רעוויזיע|$1 רעוויזיעס}} און  {{PLURAL:$2|1 טעקע|$2 טעקעס}} צוריקגעשטעלט",
-       "undeletedfiles": "{{PLURAL:$1|1 טעקע|$1 טעקעס}} צוריקגעשטעלט",
        "cannotundelete": "טייל אדער גארע צוריקשטעלונג איז דורכגעפאלן: $1",
        "undeletedpage": "'''דער בלאט $1 איז געווארן צוריקגעשטעלט.'''\n\nזעט דעם [[Special:Log/delete| אויסמעקן לאג]] פֿאר א ליסטע פון די לעצטע אויסגעמעקטע און צוריקגעשטעלטע בלעטער.",
        "undelete-header": "זעט [[Special:Log/delete|דעם אויסמעקונג זשורנאַל]] פֿאַר בלעטער וואָס זענען לעצטנס געווארן אויסגעמעקט recently deleted pages.",
        "sp-contributions-uploads": "אַרויפֿלאָדונגען",
        "sp-contributions-logs": "לאגביכער",
        "sp-contributions-talk": "שמועס",
-       "sp-contributions-userrights": "באַניצער רעכטן פֿאַרוואַלטונג",
+       "sp-contributions-userrights": "{{GENDER:$1|באַניצער|באַניצערין}} רעכטן פֿאַרוואַלטונג",
        "sp-contributions-blocked-notice": "דער באַניצער איז אַצינד בלאקירט. פֿאלגנד איז די לעצטע אַקציע אינעם פֿאַרשפאַרונג לאגבוך:",
        "sp-contributions-blocked-notice-anon": "דער IP אַדרעס איז דערווייַל פֿאַרשפאַרט.\nדי לעצטע בלאָקירן לאג אַקציע איז צוגעשטעלט אונטן:",
        "sp-contributions-search": "זוכן בײַשטײַערונגען",
        "tooltip-pt-mytalk": "{{GENDER:|אייער}} שמועס בלאט",
        "tooltip-pt-anontalk": "שמועס איבער באטייליגען פון די איי.פי.",
        "tooltip-pt-preferences": "{{GENDER:|אייערע}} פרעפערענצן",
-       "tooltip-pt-watchlist": "ליסטע פון בלעטער וואס איר טוט אויפפאסן נאך ענדערונגן",
+       "tooltip-pt-watchlist": "ליסטע פון בלעטער וואס איר טוט אויפפאסן נאָך ענדערונגען",
        "tooltip-pt-mycontris": "ליסטע פון {{GENDER:|אייערע}} ביישטייערונגען",
        "tooltip-pt-login": "עס איז רעקאָמענדירט זיך אײַנשרײַבן; ס'איז אבער נישט קיין פֿליכט",
        "tooltip-pt-logout": "ארויסלאגירן",
        "anonymous": "{{PLURAL:$1|אַנאנימער באַניצער| אַנאנימע באַניצערס}} פֿון {{SITENAME}}",
        "siteuser": "באַניצער {{SITENAME}} $1",
        "anonuser": "{{SITENAME}} אַנאנימער באַניצער $1",
-       "lastmodifiedatby": "×\93×\99 ×\9cעצ×\98×¢ ×¢× ×\93ער×\95× ×\92 ×¤Ö¿×\95×\9f ×\93×¢×\9d ×\91×\9c×\90Ö·×\98 ×\90×\99×\96 ×\92×¢×\95×\95×¢×\9f $2, $1 דורך $3.",
+       "lastmodifiedatby": "×\93ער ×\91×\9c×\90Ö·×\98 ×\90×\99×\96 ×\92×¢×\95×\95×\90ר×\9f ×\92×¢×¢× ×\93ער×\98 ×\9cעצ×\98 $2, $1 דורך $3.",
        "othercontribs": "באזירט אויף ארבעט פון $1.",
        "others": "אנדערע",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1| באַניצער}}| באַניצערס}} $1",
        "htmlform-title-not-exists": "$1 עקזיסטירט נישט",
        "logentry-delete-delete": "$1 {{GENDER:$2|האט אויסגעמעקט}} בלאט $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|האט אויסגעמעקט}} ווייטערפֿירונג $3 דורך איבערשרייבן",
-       "logentry-delete-restore": "$1 {{GENDER:$2|האט צוריקגעשטעלט }} בלאט $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|האט צוריקגעשטעלט }} בלאט $3 ($4)",
        "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-legacy": "$1 {{GENDER:$2|האט געענדערט}} די זעבארקייט פון לאגבוך אקטיוויטעטן אויף $3",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|האט געביטן}} גרופע מיטגלידערשאפט פאר $3",
        "logentry-rights-autopromote": "$1 אויטאמאטיש  {{GENDER:$2|פראמאווירט}} פון $4 צו $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|האט ארויפגעלאדן}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|האט ארויפֿגעלאדן}} א נייע ווערסיע פֿון $3",
        "rightsnone": "(גארנישט)",
        "feedback-adding": "צולייגן פֿידבעק צו בלאַט...",
        "feedback-bugcheck": "געוואלדיק! אבער זייט בודק אז עס איז נישט איינער פון די [$1 באוואוסטע באגן].",
        "special-characters-title-endash": "ען טירע",
        "special-characters-title-emdash": "עם טירע",
        "special-characters-title-minus": "מינוס",
-       "mw-widgets-titleinput-description-new-page": "דער בלאט עקזיסטירט נאך נישט",
+       "mw-widgets-titleinput-description-new-page": "דער בלאַט עקזיסטירט נאך נישט",
+       "date-range-from": "פֿון דאטע",
+       "date-range-to": "ביז דאטע:",
+       "randomrootpage": "צופֿעליגער שטאם־בלאט",
        "log-action-filter-upload": "טיפ ארויפֿלאד:",
        "log-action-filter-all": "אַלע",
        "log-action-filter-delete-delete": "אויסמעקן בלאט",
index bd8577c..5963590 100644 (file)
        "redirectedfrom": "(Àtúnjúwe láti $1)",
        "redirectpagesub": "Ojúewé àtúnjúwe",
        "redirectto": "Àtúnjúwe sí:",
-       "lastmodifiedat": "Àtunṣe ojúewé yi gbẹ̀yìn wáyé ni ago $2, ọjọ́ọdún $1.",
+       "lastmodifiedat": "Àtunṣe ojúewé yi gbẹ̀yìn wáyé ni ọjọ́ $1, ni ago $2.",
        "viewcount": "A ti wo ojúewé yi ni {{PLURAL:$1|ẹ̀kan péré|iye ìgbà $1}}.",
        "protectedpage": "Ojúewé oníàbò",
        "jumpto": "Lọ sí:",
        "cannotdelete": "Ojúewé tàbí fáìlì \"$1\" kò ṣe é parẹ́.\nOníṣe mìíràn le ti paárẹ́.",
        "cannotdelete-title": "Kò le pa ojúewè \"$1\" rẹ́",
        "delete-hook-aborted": "Hook ti ṣe ìdádúró ìparẹ́.\nKò ṣe àlàyé kankan.",
-       "badtitle": "Àkọ́lé búrurú",
+       "badtitle": "Àkọ́lé búburú",
        "badtitletext": "Àkọlé ojúewé tí ẹ bèrè fún kò ní ìbáramu, jẹ́ òfo, tàbí áṣìṣe wà nínú ìjápọ̀ àkọlé láàrin èdè tàbí láàrin wiki.\nÓ ṣe é ṣe kó jẹ́pé ó ní ìkan tàbí ọ̀pọ̀ àmi-lẹ́tà tí kò ṣe é lò nínú àkọlé.",
        "perfcached": "Ìwònyí jẹ́ dátà láti inú cache nítoríẹ̀ ó le mọ́ jẹ̀ẹ́ tuntun. Ó pọ̀jùlọ {{PLURAL:$1|èsì kan|èsì $1}} wà nínú cache.",
        "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.",
        "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": "Ìjáwọlé",
        "nav-login-createaccount": "Ìwọlé / Ìforúkọ sílẹ̀",
-       "userlogin": "Ìwọlé / ìforúkọ sílẹ̀",
-       "userloginnocreate": "Ìjáwọlé",
        "logout": "Ìjáde",
        "userlogout": "Ìjáde",
        "notloggedin": "Ẹ kò tí w'ọlé",
        "userlogin-noaccount": "Ṣé ẹ kò ní àkópamọ́?",
        "userlogin-joinproject": "Ẹ darapọ̀mọ́ {{SITENAME}}",
-       "nologin": "Ṣé ẹ fẹ́ wọlé? '''$1'''.",
-       "nologinlink": "Ìforúkọsílẹ̀",
        "createaccount": "Ẹ fi orúkọ sílẹ̀",
-       "gotaccount": "Ṣé ẹ ti ní àpamọ́ tẹ́lẹ̀? '''$1'''.",
-       "gotaccountlink": "Ẹ w'ọlé",
-       "userlogin-resetlink": "À bí ẹ gbàgbé ìwọlé yín?",
        "userlogin-resetpassword-link": "Ṣé ẹ ti gbàgbé ọ̀rọ̀ìpamọ́ yín?",
        "userlogin-helplink2": "Ìrànlọ́wọ́ láti wọlé",
        "userlogin-loggedin": "Ẹ pilẹ̀ ti jáwọlé bíi {{GENDER:$1|$1}}.\nẸ lo fọ́ọ̀mù ìsàlẹ̀ látí jáwọlé gẹ́gẹ́ bíi oníṣe míràn.",
        "createacct-email-ph": "Ẹ kọ àdírẹ̀sì email yín",
        "createaccountmail": "Lo ọ̀rọ̀ìpamọ́ àrìnnàkò ìgbàdíẹ̀ ná, kí o sì fi ránsẹ́ sí àdírẹ̀sì email tó wà nísàlẹ̀",
        "createacct-realname": "Orúkọ yín gangan (kò pọndandan)",
-       "createaccountreason": "Ìdíẹ̀:",
        "createacct-reason": "Ìdí",
        "createacct-reason-ph": "Ìdí tí ẹ ṣe fẹ́ dá àkópamọ́ míràn",
        "createacct-submit": "Ìdá àkópamọ́ yín",
        "resetpass_submit": "Ẹ ṣe àtúntò ọ̀rọ̀ìpamọ́ kí ẹ tó wọlé",
        "changepassword-success": "Ìyípadà ọ̀rọ̀ìpamọ́ yín ti já sí rere!",
        "changepassword-throttled": "Ẹ ti gbìyànjú lọ́pọ̀ bó ṣe yẹ lọ láti jáwọlé.\nẸ jọ̀wọ́ ẹ dúró fún $1 ná kí ẹ tó tún gbìyànjú lẹ́ẹ̀kan síi.",
+       "botpasswords-label-cancel": "Fagilé",
+       "botpasswords-label-delete": "Ìparẹ́",
+       "botpasswords-label-resetpassword": "Ìtúntò ọ̀rọ̀ìpamọ́",
        "resetpass_forbidden": "Àwọn ọ̀rọ̀ìpamọ́ kò ṣe é yípadà",
        "resetpass-no-info": "Ẹ gbọ́dọ̀ wọlẹ́ láti le lọ sí ojúewé yìí tààrà.",
        "resetpass-submit-loggedin": "Ìyípadà ọ̀rọ̀ìpamọ́",
        "anonpreviewwarning": "''Ẹ kò tíì wọlé. Àdírẹ́ẹ̀sì IP yín yíò jẹ́ kíkọsílẹ̀ sínú ìwé ìtàn àtúnṣe ojúewé yìí tí ẹ bá ṣàmúpamọ́ rẹ̀.''",
        "missingsummary": "'''Ìránlétí:''' Ẹ kò pèsè àkótán fún àtúnṣe yìí\nTí ẹ bá tẹ Ìmúpamọ́ lẹ́ẹ̀kansi, àtúnṣe yín yíò jẹ̀ mímúpamọ́ láìní kankan.",
        "missingcommenttext": "Ẹjọ̀wọ́ ẹ ṣe áríwí ní ìsàlẹ̀",
-       "missingcommentheader": "'''Ìránlétí:''' Ẹ kò pèsè àkọlé/oríọ̀rọ̀ kankan fún àríwí yìí.\nTí ẹ bá tẹ \"{{int:savearticle}}\" lẹ́ẹ̀kansi, àtúnṣe yín yíò jẹ́ mímúpamọ́ láìní kankan.",
+       "missingcommentheader": "'''Ìránlétí:''' Ẹ kò pèsè àkọlé/oríọ̀rọ̀ kankan fún àríwí yìí.\nTí ẹ bá tẹ \"$1\" lẹ́ẹ̀kansi, àtúnṣe yín yíò jẹ́ mímúpamọ́ láìní kankan.",
        "summary-preview": "Àkọ́yẹ̀wò àkótán:",
        "subject-preview": "Àyẹ̀wò àkọlé",
        "blockedtitle": "Ìdínà oníṣe",
        "editingsection": "Àtúnṣe sí $1 (abala)",
        "editingcomment": "Àtúnṣe sí $1 (abala tuntun)",
        "editconflict": "Ìtakora àtúnṣe: $1",
-       "explainconflict": "Ẹlòmíràn ti ṣàyípadà ojúewé yìí látìgbà tí ẹ ti bèrẹ̀ àtúnṣẹ rẹ̀.\nÀlà ìkọ̀rọ̀ òkè lóní ìkọ̀rọ̀ ojúewé bó ṣe wà lọ́wọ́lọ́wọ́ báyìí.\nÀwọn àtúnṣe yín ni wọ́n hàn yìí nínú àlà ìkọ̀rọ̀ ìsàlẹ̀.\nẸ gbọdọ̀ kó àwọn àtúnṣe yín papọ̀ sínú ìkọ̀rọ̀ tó wà lọ́wọ́lọ́wọ́ báyìí.\nÌkọ̀rọ̀ inú àlà ìkọ̀rọ̀ òkè '''nìkan''' ni yíò jẹ́ mímúpamọ́ tí ẹ bá tẹ \"{{int:savearticle}}\".",
+       "explainconflict": "Ẹlòmíràn ti ṣàyípadà ojúewé yìí látìgbà tí ẹ ti bèrẹ̀ àtúnṣẹ rẹ̀.\nÀlà ìkọ̀rọ̀ òkè lóní ìkọ̀rọ̀ ojúewé bó ṣe wà lọ́wọ́lọ́wọ́ báyìí.\nÀwọn àtúnṣe yín ni wọ́n hàn yìí nínú àlà ìkọ̀rọ̀ ìsàlẹ̀.\nẸ gbọdọ̀ kó àwọn àtúnṣe yín papọ̀ sínú ìkọ̀rọ̀ tó wà lọ́wọ́lọ́wọ́ báyìí.\nÌkọ̀rọ̀ inú àlà ìkọ̀rọ̀ òkè '''nìkan''' ni yíò jẹ́ mímúpamọ́ tí ẹ bá tẹ \"$1\".",
        "yourtext": "Ìkọ̀ yín",
        "storedversion": "Àtúnyẹ̀wò tí à múpamọ́",
        "nonunicodebrowser": "'''Ìkìlọ̀: Awòtakùn yín kò ṣe é lò fún unicode.'''\nBáyìí ná ẹ le ṣàtúnṣe àwọn ojúewé láì ṣéwu: áwọn àmììkọ̀rọ̀ àìjẹ́-ASCII yíò hàn nínú àpótí àtúnṣe bíi àmíọ̀rọ̀ onímẹ́rìndínlọ́gún.",
        "saveprefs": "Ì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í",
        "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",
        "right-protect": "Ìyípadà àwọn ìpele àbò àti àtúnṣe àwọn ojúewé aláàbò",
        "right-editprotected": "Àtúnṣe àwọn ojúewé aláàbò (láìsí àbò àjámọ́ra)",
        "right-editinterface": "Àtúnṣe ìfojúkojú oníṣe",
-       "right-editusercssjs": "Àtúnṣe àwọn fáìlì CSS àti JS ti àwọn oníṣe mìíràn",
        "right-editusercss": "Àtúnṣe àwọn fáìlì CSS ti àwọn oníṣe mìíràn",
        "right-edituserjs": "Àtúnṣe àwọn fáìlì JS ti àwọn oníṣe mìíràn",
        "right-rollback": "Kíákíá yí àwọn àtúnṣe oníṣe tó ṣàtúnṣe ojúewé kan pàtó gbẹ̀yìn sẹ́yìn",
        "rcshowhidemine": "$1 àwọn àtúnṣe mi",
        "rcshowhidemine-show": "Fi hàn",
        "rcshowhidemine-hide": "Ìbòmọ́lẹ̀",
-       "rclinks": "Ṣ'àfihàn àtúnṣe $1 tó kẹ̀yìn ní ọjọ́ $2 sẹ́yìn<br />$3",
+       "rclinks": "Ṣ'àfihàn àtúnṣe $1 tó kẹ̀yìn ní ọjọ́ $2 sẹ́yìn",
        "diff": "ìyàtọ̀",
        "hist": "ìtàn",
        "hide": "Ìbòmọ́lẹ̀",
        "undeleteviewlink": "wo",
        "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à",
-       "undeletedrevisions-files": "{{PLURAL:$1|Àtúnyẹ̀wò 1|Àwọn àtúnyẹ̀wò $1}} àti {{PLURAL:$2|fáìlì 1|àwọn fáìlì $2}} ti jẹ́ dídápadà",
-       "undeletedfiles": "{{PLURAL:$1|Fáílì 1|Àwọn fáìlì $1}} ti jẹ́ dídápadà",
        "cannotundelete": "Ìdápadà ìparẹ́ kùnà:\n$1",
        "undeletedpage": "'''$1 ti jẹ́ dídápadà'''\n\nẸ wo [[Special:Log/delete|àkọọ́lẹ̀ ìparẹ́]] fún àkọpamọ́ àwọn ìparẹ́ àti ìdápadà àìpẹ́.",
        "undelete-header": "Ẹ wo [[Special:Log/delete|àkọọ́lẹ̀ ìparẹ́]] fún àwọn ojúewé píparẹ́ láìpẹ́",
        "logentry-rights-autopromote": "$1 jẹ́ {{GENDER:$2|gbígbénípòga}} nífúnraẹni láti $4 sí $5",
        "logentry-upload-upload": "Ó dàfikún",
        "rightsnone": "(kòsí)",
-       "revdelete-summary": "àkótán àtúnṣe",
        "feedback-adding": "Ìfikún ìdáhùn sí ojúewé...",
        "feedback-bugcheck": "Ó dáa bẹ́ẹ̀! Ẹ rí pé kò í ṣe ìkan nínú [$1 àwọn ìsòrò tí a ti mọ̀ tẹ́lẹ̀].",
        "feedback-bugnew": "Mo ti yẹ́wò. Fi ìsòrò sùn",
        "feedback-thanks": "Adúpẹ́! Ìdáhùn yín ti jẹ́ fífikún sí ojúewé \"[$2 $1]\".",
        "searchsuggest-search": "Ṣàwárí",
        "searchsuggest-containing": "tó ní...",
-       "api-error-badaccess-groups": "Ẹ kò ní àṣẹ láti ru fáìlì wọlé sí orí wiki yìí.",
        "api-error-badtoken": "Àsìṣe inú: Ìdáramọ̀ búburú.",
-       "api-error-copyuploaddisabled": "Ìrùsókè pẹ̀lú URL jẹ́ dídálẹ́kun lórí ẹ̀rọ-ìpèsè yìí.",
-       "api-error-duplicate": "{{PLURAL:$1|Fáìlì míràn|Àwọn fáìlì míràn}} kan tilẹ̀ wà lórí ibiìtàkùn pẹ̀lú àkóónú kannáà.",
-       "api-error-duplicate-archive": "{{PLURAL:$1|Fáìlì míràn|Àwọn fáìlì míràn}} kan tilẹ̀ wà lórí ibiìtàkùn pẹ̀lú àkóónú kannáà, sùgbọ́n {{PLURAL:$1|ó|wọ́n}} ti jẹ́ píparẹ́.",
-       "api-error-empty-file": "Fáílì tí ẹ fisílẹ̀ jẹ́ òfo.",
        "api-error-emptypage": "Ẹ kò ní àyè láti dá ojúewé tuntun tó jẹ́ òfo.",
-       "api-error-fetchfileerror": "Àsìṣe inú: Kò le mú fáìlì ná jáde nítorí àsìṣe.",
-       "api-error-fileexists-forbidden": "Fáìlì kan wà pẹ̀lú orúkọ \"$1\", kò ṣe é kọlélórí.",
-       "api-error-fileexists-shared-forbidden": "Fáìlì kan wà pẹ̀lú orúkọ \"$1\" nínú ibi àkójọsí fáìlì, kò ṣe é kọlélórí.",
-       "api-error-file-too-large": "Fáílì tí ẹ fisílẹ̀ jẹ́ tí tóbijù.",
-       "api-error-filename-tooshort": "Orúkọ fáílì kéréjú bó ṣe yẹ lọ.",
-       "api-error-filetype-banned": "Irú fáílì yìí ti jẹ́ dídí lọ́nà.",
-       "api-error-filetype-banned-type": "$1 {{PLURAL:$4|kíì ṣe|kìí ṣe àwọn}} irú fáìlì tí à gbàláyè. {{PLURAL:$3|Irú fáìlì|Àwọn irú fáìlì}} tí à gbàláyè ni $2.",
-       "api-error-filetype-missing": "Orúkọ fáìlì kò ní ìfàgùn.",
-       "api-error-hookaborted": "Ìtúndáṣe tí ẹ fẹ́ ṣe ti jẹ́ dídálẹ́kun látọwọ́ ìfàgùn.",
-       "api-error-http": "Àsìṣe inú: Ìfarakan ẹ̀rọ-ìpèsè kò ṣe é ṣe.",
-       "api-error-illegal-filename": "Orúkọ fáílì yìí kò jẹ́ gbígbàláàyè.",
-       "api-error-internal-error": "Àsìṣe inú: Wàhálà wáyé láti ṣe ìgbéṣe ìrùsókè yín lórí wiki yìí.",
-       "api-error-invalid-file-key": "Àsìṣe inú: Fáìlì kò sí nínú ibi ìfipamọ́ ìgbàdíẹ̀.",
-       "api-error-missingparam": "Àsìṣe inú: Kò sí pàrámítà tó tọrọ.",
-       "api-error-missingresult": "Àsìṣe inú: Kò le sọ bóyá àwòkọ yọrí sí rere.",
-       "api-error-mustbeloggedin": "Ẹ gbọ́dọ̀ wọlé láti ru fáìlì sókè.",
-       "api-error-mustbeposted": "Àsìṣe inú: Ìtọrọ bèèrè fún HTTP POST.",
-       "api-error-noimageinfo": "Ìrùsòkè jásí rere, sùgbọ́n ẹ̀rọ-ìpèsè kò sọ ohùn kankan nípa fáìlì ọ̀hún.",
-       "api-error-nomodule": "Àsìṣe inú: Ẹyọ ìrùsókè kankan kò sí.",
-       "api-error-ok-but-empty": "Àsìṣe inú: Kò sí ìdáhùn látọwọ́ ẹ̀rọ-ìpèsè.",
-       "api-error-overwrite": "Ìkọlélórí fáìlì tó wà kò jẹ́ gbígbà ní àyè.",
-       "api-error-stashfailed": "Àsìṣe inú: Ẹ̀rọ-ìpèsè kùnà láti fi fáìlì ìgbàdíẹ̀ pamọ́.",
        "api-error-publishfailed": "Àṣìṣe inú: Ẹ̀rọ-ìpèsè kùnà láti tẹ fáìlì ìgbàdíẹ̀ jáde.",
-       "api-error-timeout": "Ẹ̀rọ-ìpèsè kò dáhùn ní àrin àsìkò tó yẹ.",
-       "api-error-unclassified": "Àsìṣe àìdámọ̀ kan ti ṣẹlẹ̀.",
-       "api-error-unknown-code": "Àsìṣe aláìlójúùtú: \"$1\".",
-       "api-error-unknown-error": "Àsìṣe inú: Àsìṣe ṣẹlẹ̀ láti ṣe ìrùsókè fáìlì yín.",
+       "api-error-stashfailed": "Àsìṣe inú: Ẹ̀rọ-ìpèsè kùnà láti fi fáìlì ìgbàdíẹ̀ pamọ́.",
        "api-error-unknown-warning": "Ìkìlọ̀ àìmọ̀: \"$1\".",
        "api-error-unknownerror": "Àsìṣe aláìlójúùtú: \"$1\".",
-       "api-error-uploaddisabled": "Ìdálẹ́kun ìrùsókè lórí wiki yìí.",
-       "api-error-verification-error": "Fáìlì náà le ti bàjẹ́, tàbí ó ní ìfàgún tí kò yẹ.",
        "duration-seconds": "{{PLURAL:$1|ìṣẹ́júkejì|ìṣẹ́júkejì}} $1",
        "duration-minutes": "{{PLURAL:$1|ìṣẹ́jú|ìṣẹ́jú}} $1",
        "duration-hours": "{{PLURAL:$1|wákàtí|wákàtí}} $1",
index 52545a1..8902585 100644 (file)
        "anontalk": "傾偈",
        "navigation": "導覽",
        "and": "同埋",
-       "qbfind": "搵嘢",
-       "qbbrowse": "瀏覽",
-       "qbedit": "編輯",
-       "qbpageoptions": "呢一頁",
-       "qbmyoptions": "我嘅選項",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "動作",
        "namespaces": "空間名",
        "variants": "變換",
        "edit-local": "改本地說明",
        "create": "開",
        "create-local": "加本地說明",
-       "editthispage": "改呢版",
-       "create-this-page": "建立呢頁",
        "delete": "剷走",
-       "deletethispage": "剷走呢版",
-       "undeletethispage": "反刪呢一版",
        "undelete_short": "取消剷走$1次修改",
        "viewdeleted_short": "去睇$1次刪除咗嘅修改",
        "protect": "保護",
        "protect_change": "改",
-       "protectthispage": "保護呢頁",
        "unprotect": "改保護",
-       "unprotectthispage": "改呢版保護",
        "newpage": "開新頁",
-       "talkpage": "討論呢版",
        "talkpagelinktext": "傾偈",
        "specialpage": "特別頁",
        "personaltools": "個人工具",
-       "articlepage": "睇目錄",
        "talk": "討論",
        "views": "去睇",
        "toolbox": "架撐",
        "tool-link-userrights": "改{{GENDER:$1|用戶}}組",
        "tool-link-userrights-readonly": "睇{{GENDER:$1|用戶}}組",
        "tool-link-emailuser": "電郵畀呢個{{GENDER:$1|用戶}}",
-       "userpage": "去睇用戶頁",
-       "projectpage": "去睇專題頁",
        "imagepage": "去睇檔案頁",
        "mediawikipage": "去睇信息頁",
        "templatepage": "去睇模頁",
        "changepassword-throttled": "你已經試咗太多次簽到動作。\n請等$1再試過。",
        "botpasswords": "機械人密碼",
        "botpasswords-disabled": "唔俾用機械人密碼。",
+       "botpasswords-no-central-id": "要用機械人密碼,你一定要簽到集中戶口。",
        "botpasswords-existing": "而家已經有嘅機械人密碼",
        "botpasswords-createnew": "整一個新嘅機械人密碼",
+       "botpasswords-editexisting": "改已經有嘅機械人密碼",
+       "botpasswords-label-appid": "機械人名:",
        "botpasswords-label-create": "創造",
        "botpasswords-label-update": "上載",
        "botpasswords-label-cancel": "取消",
        "botpasswords-label-delete": "刪除",
        "botpasswords-label-resetpassword": "改過個個密碼",
+       "botpasswords-label-grants": "啱用嘅授權:",
+       "botpasswords-label-grants-column": "授咗權",
+       "botpasswords-bad-appid": "機械人名 \"$1\" 無效。",
+       "botpasswords-insert-failed": "加機械人名 \"$1\" 衰咗。係咪之前已經加咗?",
+       "botpasswords-update-failed": "更新機械人名 \"$1\" 衰咗。係咪之前已經剷走咗?",
        "botpasswords-created-title": "生成咗機械人密碼",
+       "botpasswords-created-body": "用戶 \"$2\" 嘅機械人 \"$1\" 嘅密碼已經開咗。",
        "botpasswords-updated-title": "改咗機械人密碿",
+       "botpasswords-updated-body": "用戶 \"$2\" 嘅機械人 \"$1\" 嘅密碼已經更新咗。",
        "botpasswords-deleted-title": "鏟咗機械人密碼",
+       "botpasswords-deleted-body": "用戶 \"$2\" 嘅機械人 \"$1\" 嘅密碼已經剷走咗。",
        "botpasswords-restriction-failed": "機械人密碼限制令到呢次簽到失敗。",
        "botpasswords-invalid-name": "呢個用戶名無機械人密碼分隔字(「$1」)",
        "resetpass_forbidden": "唔可以更改密碼",
        "passwordreset-emailtext-user": "{{SITENAME}}用戶$1請求更改閣下喺{{SITENAME}}道嘅密碼$4。同爾個電子郵件有關聯嘅用戶包括:\n\n$2\n\n{{PLURAL:$3|爾個|爾啲}}臨時密碼會喺{{$5}}日之後失效。\n\n如果係閣下自己請求改密碼嘅,請馬上登錄{{SITENAME}}並且更改密碼。如果閣下諗返起自己個密碼,或者根本無申請過改密碼嘅話,請忽略爾條訊息,繼續用返舊密碼。",
        "passwordreset-emailelement": "用戶名:\n$1\n\n臨時密碼:\n$2",
        "passwordreset-emailsentemail": "若果你個戶口有登記電郵,密碼重設電郵經已送出。",
+       "passwordreset-invalidemail": "無效嘅電郵地址",
+       "passwordreset-nodata": "漏咗畀用戶名同電郵地址",
        "changeemail": "改或者剷走電郵地址",
        "changeemail-header": "填好呢份表去改戶口電郵地址。若果你想剷走你戶口個電郵地址,填表時請將電郵地址欄留空。",
        "changeemail-no-info": "你一定要簽到咗去直接入來呢一版。",
        "preview": "預覽",
        "showpreview": "顯示預覽",
        "showdiff": "顯示差異",
-       "blankarticle": "<strong>警告</strong>:閣下開緊爾版係空白嘅,撳多次「{{int:savearticle}}」就會開一個乜都無嘅版(可能被視為破壞)。",
+       "blankarticle": "<strong>警告</strong>:閣下開緊爾版係空白嘅。\n撳多次「$1」就會開一個乜都無嘅版(可能被視為破壞)。",
        "anoneditwarning": "'''警告:'''閣下重未登入。閣下嘅 IP 地址會喺爾一版嘅修訂歷史裡邊記錄落嚟。",
        "anonpreviewwarning": "''你重未登入,你嘅 IP 位址會喺呢個頁面嘅修訂歷史中記錄落嚟。''",
-       "missingsummary": "'''提醒:''' 你未提供編輯摘要。如果你再撳多一下「{{int:savearticle}}」嘅話,咁你儲存嘅編輯就會無摘要。",
-       "selfredirect": "<strong>警告:</strong> 你個跳轉彈返去自己度。\n你可能設錯咗跳轉目標,或者改錯咗版。\n如果你再撳多「{{int:savearticle}}」一下,就會照幫你開呢個跳轉。",
+       "missingsummary": "'''提醒:''' 你未提供編輯摘要。如果你再撳多一下「$1」嘅話,咁你儲存嘅編輯就會無摘要。",
+       "selfredirect": "<strong>警告:</strong> 你個跳轉彈返去自己度。\n你可能設錯咗跳轉目標,或者改錯咗版。\n如果你再撳多「$1」一下,就會照幫你開呢個跳轉。",
        "missingcommenttext": "請輸入一個註解。",
-       "missingcommentheader": "<strong>提醒:</strong>你響呢個註解度並無提供一個主題/標題。如果你再撳一次「{{int:savearticle}}」,你嘅編輯就會無題。",
+       "missingcommentheader": "<strong>提醒:</strong>你響呢個註解度並無提供一個主題/標題。如果你再撳一次「$1」,你嘅編輯就會無題。",
        "summary-preview": "編輯摘要預覽:",
        "subject-preview": "主題預覽:",
        "previewerrortext": "預覽你嘅修改嗰陣出錯。",
        "accmailtext": "「[[User talk:$1|$1]]」嘅隨機產生密碼已經寄咗去 $2。\n\n呢個密碼可以響簽到咗之後嘅<em>[[Special:ChangePassword|改密碼]]</em> 版度改佢。",
        "newarticle": "(新)",
        "newarticletext": "你連連過嚟嘅頁面重未存在。\n要起版新嘅,請你喺下面嗰格度輸入。(睇睇[$1 自助版]拎多啲資料。)\n如果你係唔覺意嚟到呢度,撳一次你個瀏覽器'''返轉頭'''個掣。",
-       "anontalkpagetext": "----''呢度係匿名用戶嘅討論頁,佢可能係重未開戶口,或者佢重唔識開戶口。我哋會用數字表示嘅IP地址嚟代表佢。一個IP地址係可以由幾個用戶夾來用。如果你係匿名用戶,同覺得呢啲留言係同你冇關係嘅話,唔該去[[Special:CreateAccount|開一個新戶口]]或[[Special:UserLogin|登入]],避免喺以後嘅留言會同埋其它用戶混淆。''",
+       "anontalkpagetext": "----\n<em>呢度係匿名用戶嘅討論頁,佢可能係重未開戶口,或者佢重唔識開戶口。</em>\n我哋會用數字表示嘅IP地址嚟代表佢。\n一個IP地址係可以由幾個用戶夾來用。\n如果你係匿名用戶,同覺得呢啲留言係同你冇關係嘅話,唔該去[[Special:CreateAccount|開一個新戶口]]或[[Special:UserLogin|登入]],避免喺以後嘅留言會同埋其它用戶混淆。",
        "noarticletext": "喺呢一頁而家並冇任何嘅文字,你可以喺其它嘅頁面中[[Special:Search/{{PAGENAME}}|搵呢一頁嘅標題]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搵有關嘅日誌],\n或者[{{fullurl:{{FULLPAGENAME}}|action=edit}} 編輯呢一版]</span>。",
        "noarticletext-nopermission": "呢一頁而家冇任何文字,你可以喺其它嘅頁面中[[Special:Search/{{PAGENAME}}|搵呢一頁嘅標題]],或者<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搵有關嘅日誌]</span>。",
        "missing-revision": "The revision #$1 of the page named \"{{FULLPAGENAME}}\" does not exist.\n\nThis is usually caused by following an outdated history link to a page that has been deleted.\nDetails can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].\n\n《{{FULLPAGENAME}}》嘅編輯#$1唔存在。\n\n恁通常係因為一條過徂時嘅鏈接帶徂閣下去一個已經刪除徂嘅版。\n詳情請查閱[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪文紀錄]。",
        "userpage-userdoesnotexist": "用戶戶口\"<nowiki>$1</nowiki>\"重未開。請響䦒/編輯呢版之前先檢查一下。",
        "userpage-userdoesnotexist-view": "用戶戶口\"$1\"重未開。",
        "blocked-notice-logextract": "呢位用戶而家被封鎖緊。\n下面有最近嘅封鎖紀錄以供參考:",
-       "clearyourcache": "<strong>注意</strong>:喺儲存之後,你可能要先略過你嘅瀏覽器快取去睇到更改。\n*<strong>Firefox / Safari:</strong> 㩒住<em>Shift<em>掣再撳<em>重新載入</em>,又或者㩒<em>Ctrl-F5</em>或者<em>Ctrl-R</em>(喺Mac㩒<em>Command-R</em>掣);\n*<strong>Google Chrome:</strong> 㩒<em>Ctrl-Shift-R</em>(喺Mac㩒<em>Command-R</em>掣);\n*<strong>Internet Explorer:</strong> 㩒住<em>Ctrl</em>掣再撳<em>重新整理</em>,又或者㩒<em>Ctrl-F5</em>掣;\n*<strong>Opera:</strong>喺<em>工具→喜好設定</em>之中清佢哋嘅快取。",
+       "clearyourcache": "<strong>注意</strong>:喺儲存之後,你可能要先略過你嘅瀏覽器快取去睇到更改。\n*<strong>Firefox / Safari:</strong> 㩒住<em>Shift<em>掣再撳<em>重新載入</em>,又或者㩒<em>Ctrl-F5</em>或者<em>Ctrl-R</em>(喺Mac㩒<em>Command-R</em>掣);\n*<strong>Google Chrome:</strong> 㩒<em>Ctrl-Shift-R</em>(喺Mac㩒<em>Command-R</em>掣);\n*<strong>Internet Explorer:</strong> 㩒住<em>Ctrl</em>掣再撳<em>重新整理</em>,又或者㩒<em>Ctrl-F5</em>掣;\n*<strong>Opera:</strong> 去 <em>選單 → 設定</em> (喺 Mac 係 <em>Opera → 偏好設定</em>) 跟住再到 <em>隱私 & 安全性 → 清除瀏覽資料 → 已快取的圖片與檔案</em>。",
        "usercssyoucanpreview": "'''提示:'''響儲存前,用「{{int:showpreview}}」個掣嚟測試你嘅新CSS。",
        "userjsyoucanpreview": "'''提示:'''響儲存前,用「{{int:showpreview}}」個掣嚟測試你嘅新JavaScript。",
        "usercsspreview": "'''記住你而家只係預覽緊你嘅用戶CSS樣式表。'''\n'''佢嘅內容重未儲存!'''",
        "previewnote": "'''請記住呢個只係預覽。'''\n更改嘅内容重未儲存!",
        "continue-editing": "去編輯區",
        "previewconflict": "呢個預覽係反映如果你選擇儲存嘅話,嘅上面嘅文字編輯區裏面嘅字會儲存落嚟。",
-       "session_fail_preview": "'''對唔住!由於小節嘅資料唔見咗,我哋唔能夠處理你嘅編輯。'''\n請再試過喇。如果仍然唔得嘅話,試下[[Special:UserLogout|登出]],然後重新登入。",
-       "session_fail_preview_html": "'''對唔住!有關嘅程序資料已經遺失,我哋唔能夠處理你嘅編輯。'''\n\n''由於{{SITENAME}}已經開放咗原 HTML 碼,預覽已經隱藏落嚟以預防 JavaScript 嘅攻擊。''\n\n'''如果呢個係正當嘅編輯嘗試,請再試過。'''如果重係唔得嘅話,請先[[Special:UserLogout|登出]]然後再登入。",
+       "session_fail_preview": "對唔住!由於小節嘅資料唔見咗,我哋唔能夠處理你嘅編輯。\n\n你可能簽退咗。<strong>請你檢查下係咪重係簽到緊,之後再試過</strong>。\n如果仍然唔得嘅話,試下[[Special:UserLogout|簽退]]後再簽到,同埋檢查個瀏覽器係受呢個站嘅曲奇。",
+       "session_fail_preview_html": "對唔住!有關嘅程序資料已經遺失,我哋唔能夠處理你嘅編輯。\n\n<em>由於{{SITENAME}}已經開放咗原 HTML 碼,預覽已經隱藏落嚟以預防 JavaScript 嘅攻擊。</em>\n<strong>如果呢個係正當嘅編輯嘗試,請再試過。</strong>\n如果重係唔得嘅話,請先[[Special:UserLogout|簽退]]後再簽到。",
        "token_suffix_mismatch": "'''因為你嘅用戶端度嘅編輯幣整壞咗一啲標點符號字元,你嘅編輯已經拒絕咗。'''個編輯已經拒絕,以防止嗰版嘅文字損毀。\n當你響度用緊一啲好多臭蟲,以網絡為主嘅匿名代理服務。",
        "edit_form_incomplete": "'''編輯表格嘅某個部份同server唔夾,請檢查多次你嘅編輯同埋再試多次。'''",
        "editing": "而家喺度編輯$1",
        "editingsection": "而家喺度編輯$1 (小節)",
        "editingcomment": "而家喺度編輯$1 (新小節)",
        "editconflict": "由於編輯衝突,{{GENDER:|你|妳|你}}喺$1嘅修改記唔低。{{GENDER:|你|妳|你}}想唔想人手解決呢個衝突?",
-       "explainconflict": "有其他人喺你開始編輯之後已經更改呢一頁。\n喺上面嗰個空間而家現存嘅頁面文字。\n你嘅更改會喺下面嘅文字空間顯示。\n你需要合併你嘅更改到原有嘅文字。\n喺你撳「{{int:savearticle}}」之後,'''只有'''喺上面嘅文字區會被儲存。",
+       "explainconflict": "有其他人喺你開始編輯之後已經更改呢一頁。\n喺上面嗰個空間而家現存嘅頁面文字。\n你嘅更改會喺下面嘅文字空間顯示。\n你需要合併你嘅更改到原有嘅文字。\n喺你撳「$1」之後,'''只有'''喺上面嘅文字區會被儲存。",
        "yourtext": "你嘅文字",
        "storedversion": "已經儲存咗嘅修訂",
        "nonunicodebrowser": "'''警告:你嘅瀏覽器係唔係用緊 Unicode 。'''而家暫時有個解決方法,方便你可以安全咁編輯呢版:唔係 ASCII 嘅字元會喺編輯框裏面用十六進位編碼顯示。",
        "copyrightwarning2": "請留意喺{{SITENAME}}度,所有嘅貢獻可能會被其他嘅貢獻者編輯、修改,或者刪除。如果你係唔想你編輯嘅文字無喇喇咁被編輯,咁就唔好喺呢度遞交。\n\n你亦都要同我哋保證啲文字係你自己寫嘅,或者係由公有領域或相似嘅自由資源複製落嚟(睇$1有更詳細嘅資訊)。\n'''喺未有任何許可嘅情況之下千祈唔好遞交有版權嘅作品!'''",
        "editpage-cannot-use-custom-model": "呢頁嘅目錄模型唔改得",
        "longpageerror": "<strong>出錯:你所遞交嘅文字係有 {{PLURAL:$1|1 KB|$1 KB}} 咁長,長過最大嘅 {{PLURAL:$2|1 KB|$2 KB}}。</strong>\n儲唔到你遞交嘅文字。",
-       "readonlywarning": "<strong>警告:資料庫已經鎖住咗去做定期保養。而家你唔可以儲起你嘅編輯。</strong>\n\n你可以儲啲文字落一份文字檔先。\n\n管理員嘅解釋: $1",
+       "readonlywarning": "<strong>警告:資料庫已經鎖住咗去做定期保養。而家你唔可以儲起你嘅編輯。</strong>\n你可以儲啲文字落一份文字檔先。\n\n鎖資料庫嘅系統管理員畀嘅解釋: $1",
        "protectedpagewarning": "'''警告:呢版已經受到保護,只有管理員權限嘅用戶先至可以改。'''\n最近嘅日誌響下面提供以便參考:",
        "semiprotectedpagewarning": "'''注意:'''呢一頁已經保護咗,只有已經註冊嘅用戶先至可以改。\n最近嘅日誌響下面提供以便參考:",
-       "cascadeprotectedwarning": "'''警告:'''呢一頁已經保護咗,凈得管理員權限嘅用戶先至可以改,因為佢係響以下連串保護嘅{{PLURAL:$1|一|幾}}頁度包含咗:",
+       "cascadeprotectedwarning": "<strong>警告:</strong>呢一頁已經保護咗,凈得[[Special:ListGroupRights|有指定權限]]嘅用戶先至可以改,因為佢係響以下連串保護嘅{{PLURAL:$1|一|幾}}頁度包含咗:",
        "titleprotectedwarning": "'''警告:呢一版已經保護咗,需要一啲[[Special:ListGroupRights|指定權限]]先至可以開到。'''\n最近嘅日誌響下面提供以便參考:",
        "templatesused": "呢版用嘅{{PLURAL:$1|模}}:",
        "templatesusedpreview": "呢一次預覽裏面,用咗下面呢啲{{PLURAL:$1|模|模}}:",
        "permissionserrors": "權限出錯",
        "permissionserrorstext": "根據下面嘅{{PLURAL:$1|原因|原因}},你並無權限去做呢樣嘢:",
        "permissionserrorstext-withaction": "根據下面嘅{{PLURAL:$1|原因|原因}},你並無權限去做$2:",
-       "contentmodelediterror": "你唔改得呢版修訂,因為呢個修訂嘅內容模型係 <code>$1</code> ,而家嘅內容模型係 <code>$2</code>。",
+       "contentmodelediterror": "你唔改得呢版修訂,因為呢個修訂嘅內容模型係 <code>$1</code> ,同而家嘅內容模型 <code>$2</code> 有分別。",
        "recreate-moveddeleted-warn": "'''警告: 你而家重開一版係先前曾經刪除過嘅。'''\n\n你應該要考慮吓繼續編輯呢一版係唔係適合嘅。\n為咗方便起見,呢一版嘅刪除同搬版記錄已經響下面提供:",
        "moveddeleted-notice": "呢一版已經刪咗。\n呢版嘅刪除同搬版日誌響下面提供咗以便參考。",
        "moveddeleted-notice-recent": "唔好意思,呢版啱啱刪走咗(最近24個鐘內)。\n呢版刪版同搬版紀錄喺下低做參考。",
        "invalid-content-data": "無效嘅內容資料",
        "content-not-allowed-here": "「$1」唔可以輸入[[$2]]。",
        "editwarning-warning": "離開爾一版會令到閣下嘅修改唔見咗。\n閣下可以喺喜好設定嘅\"{{int:prefs-editing}}\"小節度停用爾個警告。",
+       "editpage-invalidcontentmodel-title": "唔支援爾種內容模型。",
+       "editpage-invalidcontentmodel-text": "內容模型 \"$1\" 唔支援。",
        "editpage-notsupportedcontentformat-title": "唔支持爾種內容格式。",
        "editpage-notsupportedcontentformat-text": "指定嘅目錄類$1同$2唔兼容",
        "content-model-wikitext": "維基文字",
        "page_first": "最頭",
        "page_last": "最尾",
        "histlegend": "選擇唔同版本:響兩個唔同版本嘅圓框分別撳一下,再撳最底的「比較被選修訂」掣以作比較。<br />\n說明:'''({{int:cur}})'''= 同最新修訂版本嘅差別,'''({{int:last}})'''= 同前一個修訂版本嘅差別,'''{{int:minoreditletter}}''' = 小修改。",
-       "history-fieldset-title": "瀏覽歷史",
-       "history-show-deleted": "只顯示刪除咗嘅",
+       "history-fieldset-title": "搵編輯紀錄",
+       "history-show-deleted": "只顯示刪除咗嘅修訂",
        "histfirst": "最舊",
        "histlast": "最新",
        "historysize": "($1 {{PLURAL:$1|byte|bytes}})",
        "revdelete-unsuppress": "響已經恢復咗嘅修訂度移除限制",
        "revdelete-log": "原因:",
        "revdelete-submit": "應用到已經選取嘅{{PLURAL:$1|修訂}}",
-       "revdelete-success": "'''已經成功設定修訂嘅可見性。'''",
+       "revdelete-success": "已經更新咗修訂嘅可見性。",
        "revdelete-failure": "'''修訂可見性更新唔到:'''\n$1",
-       "logdelete-success": "'''事件可見性已經成功噉更新。'''",
+       "logdelete-success": "事件可見性已經設好咗。",
        "logdelete-failure": "'''事件可見性唔能夠更新:'''\n$1",
        "revdel-restore": "改可見性",
        "pagehist": "頁面歷史",
        "mergehistory-empty": "無修訂可以合併",
        "mergehistory-done": "$1嘅$3次修訂已經成功噉合併到[[:$2]]。",
        "mergehistory-fail": "歷史合併唔到,請重新檢查嗰一版同埋時間參數。",
+       "mergehistory-fail-bad-timestamp": "時間值無效。",
+       "mergehistory-fail-invalid-source": "來源版無效。",
+       "mergehistory-fail-invalid-dest": "目標版無效。",
+       "mergehistory-fail-permission": "唔夠權限去合併歷史。",
+       "mergehistory-fail-self-merge": "來源版同目標版一樣。",
        "mergehistory-fail-toobig": "唔能夠合併編輯紀錄,因為入面超過咗$1個版本嘅上限。",
        "mergehistory-no-source": "來源頁$1唔存在。",
        "mergehistory-no-destination": "目的頁$1唔存在。",
        "search-file-match": "(夾啱樓案内容)",
        "search-suggest": "你係唔係搵: $1",
        "search-rewritten": "顯示緊 $1 嘅搵嘢結果,而唔係 $2 嘅。",
-       "search-interwiki-caption": "å§\8a妹è¨\88å\8a\83",
+       "search-interwiki-caption": "å\85\84å¼\9fè¨\88å\8a\83å\98\85çµ\90æ\9e\9c",
        "search-interwiki-default": "嚟自$1嘅結果:",
        "search-interwiki-more": "(更多)",
+       "search-interwiki-more-results": "多啲結果",
        "search-relatedarticle": "有關",
        "searchrelated": "有關",
        "searchall": "全部",
        "prefs-help-recentchangescount": "呢個包埋最近修改、頁歷史同埋日誌紀錄。",
        "prefs-help-watchlist-token2": "呢個係網上訂閱你個監視清單嘅密匙。\n任何人只要知道個密匙,就會睇到你個監視清單,所以唔好畀人知。\n如果有需要嘅話,[[Special:ResetTokens|你可以重設佢]]。",
        "savedprefs": "你嘅喜好設定已經儲存。",
-       "savedrights": "儲存咗 {{GENDER:$1|$1}} 嘅用戶權限。",
+       "savedrights": "儲存咗 {{GENDER:$1|$1}} 嘅用戶群組。",
        "timezonelegend": "時區:",
        "localtime": "本地時間:",
        "timezoneuseserverdefault": "用維基預設值($1)",
        "youremail": "電郵:",
        "username": "{{GENDER:$1|用戶名}}:",
        "prefs-memberingroups": "{{PLURAL:$1|組}}嘅{{GENDER:$2|成員}}:",
+       "group-membership-link-with-expiry": "$1 (直到 $2)",
        "prefs-registration": "註冊時間:",
        "yourrealname": "真名:",
        "yourlanguage": "話:",
        "userrights": "用戶嘅權限",
        "userrights-lookup-user": "揀一個用戶",
        "userrights-user-editname": "輸入一個用戶名:",
-       "editusergroup": "編輯用戶組",
+       "editusergroup": "載入用戶組",
        "editinguser": "改緊<strong>[[User:$1|$1]]</strong>嘅用戶權限 $2",
-       "userrights-editusergroup": "編輯用戶組",
+       "viewinguserrights": "睇緊<strong>[[User:$1|$1]]</strong>嘅{{GENDER:$1|用戶}}權限 $2",
+       "userrights-editusergroup": "編輯{{GENDER:$1|用戶}}組",
+       "userrights-viewusergroup": "睇{{GENDER:$1|用戶}}組",
        "saveusergroups": "儲存{{GENDER:$1|用戶}}組",
        "userrights-groupsmember": "屬於:",
        "userrights-groupsmember-auto": "固有屬於:",
-       "userrights-groups-help": "你可以改呢位用戶所屬嘅組:\n* 剔咗嘅盒代表個用戶係屬於嗰組。\n* 未剔嘅盒代表個用戶唔係屬於嗰組。\n* 一個 * 表示你加入咗佢之後唔可以拎走,反之亦然。\n* 一個 # 表示你只可以推遲嗰組嘅失效日期,唔可以提早。",
+       "userrights-groups-help": "你可以改呢位用戶所屬嘅組:\n* 剔咗嘅盒代表個用戶係屬於嗰組。\n* 未剔嘅盒代表個用戶唔係屬於嗰組。\n* 一個 * 表示你加入咗佢之後唔可以拎走,反之亦然。\n* 一個 # 表示你只可以推遲嗰組資格嘅失效日期,唔可以提早。",
        "userrights-reason": "原因:",
        "userrights-no-interwiki": "你並無權限去編輯響其它wiki嘅用戶權限。",
        "userrights-nodatabase": "資料庫$1唔存在或者唔係本地嘅。",
        "userrights-expiry": "到期:",
        "userrights-expiry-existing": "現時到期嘅時間: $2 $3",
        "userrights-expiry-othertime": "其它時間:",
+       "userrights-expiry-options": "1日:1 day,1個禮拜:1 week,1個月:1 month,3個月:3 months,6個月:6 months,1年:1 year",
        "userrights-invalid-expiry": "組\"$1\"嘅過期時間冇效",
+       "userrights-expiry-in-past": "組\"$1\"嘅過期時間係過咗嘅時間。",
        "userrights-conflict": "用戶權限更改有衝突!請再睇過同確認你嘅改動。",
        "group": "組:",
        "group-user": "用戶",
        "right-siteadmin": "鎖同解鎖資料庫",
        "right-override-export-depth": "倒出包含有五層深連版嘅頁面",
        "right-sendemail": "寄電郵畀其他用戶",
-       "right-managechangetags": "從數據庫度開或刪走[[Special:Tags|tags]]",
+       "right-managechangetags": "開同(取消)啟用[[Special:Tags|標籤]]",
        "right-applychangetags": "套用[[Special:Tags|標籤]]到某個人嘅改動",
+       "grant-group-page-interaction": "同版面互動",
+       "grant-group-file-interaction": "同傳媒互動",
+       "grant-group-watchlist-interaction": "同監視清單互動",
+       "grant-group-email": "送電郵",
+       "grant-group-customization": "自訂同設定",
+       "grant-group-administration": "做管理行動",
+       "grant-group-private-information": "存取你嘅私隱資料",
+       "grant-group-other": "垃雜活動",
+       "grant-blockusers": "封同解封用戶",
+       "grant-createaccount": "開戶口",
+       "grant-createeditmovepage": "開版、改版同搬版",
+       "grant-delete": "刪版、修訂同日誌紀錄",
+       "grant-editinterface": "改 MediaWiki 名空間同用戶 CSS/JavaScript",
+       "grant-editmycssjs": "改你嘅用戶 CSS/JavaScript",
+       "grant-editmyoptions": "改你嘅用戶設定",
+       "grant-editmywatchlist": "改你嘅監視清單",
+       "grant-editpage": "改已經有嘅版",
+       "grant-editprotected": "改保護咗嘅版",
        "newuserlogpage": "使用者開戶記錄",
        "newuserlogpagetext": "呢個係一個使用者開戶嘅日誌",
        "rightslog": "用戶權限日誌",
        "rcshowhidecategorization": "$1 頁面分類",
        "rcshowhidecategorization-show": "顯示",
        "rcshowhidecategorization-hide": "收埋",
-       "rclinks": "顯示最後$1次喺$2日內嘅更改<br />$3",
+       "rclinks": "顯示最後$1次喺$2日內嘅更改",
        "diff": "差異",
        "hist": "歷史",
        "hide": "隱藏",
        "tooltip-feed-rss": "呢一頁嘅RSS集合",
        "tooltip-feed-atom": "呢一頁嘅Atom集合",
        "tooltip-t-contributions": "{{GENDER:$1|呢個用戶}}嘅貢獻一覽",
-       "tooltip-t-emailuser": "寄封電子郵件畀呢一位用戶",
+       "tooltip-t-emailuser": "寄封電子郵件畀{{GENDER:$1|呢一位用戶}}",
        "tooltip-t-info": "更多關於呢版嘅資料",
        "tooltip-t-upload": "上載檔案",
        "tooltip-t-specialpages": "所有特別頁嘅一覽",
        "version-libraries-license": "牌照",
        "version-libraries-description": "敘述",
        "version-libraries-authors": "作者",
+       "redirect": "跟檔案、用戶、版面、修訂或者日誌 ID 去跳轉",
+       "redirect-summary": "呢個特別版可以跳轉到一個檔案(指定檔名稱)、一個版面(指定修訂 ID 或版 ID)、一個用戶版(指定用戶 ID)或者一個日誌項目(指定日誌 ID)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/page/64308]]、[[{{#Special:Redirect}}/revision/328429]]、[[{{#Special:Redirect}}/user/101]] 或者 [[{{#Special:Redirect}}/logid/186]]。",
        "redirect-submit": "去",
+       "redirect-lookup": "搵:",
        "redirect-value": "值:",
        "redirect-user": "用戶ID",
        "redirect-page": "頁ID",
        "htmlform-cloner-create": "加多啲",
        "htmlform-cloner-delete": "拎走",
        "logentry-delete-delete": "$1 刪咗頁 $3",
+       "logentry-delete-restore": "$1{{GENDER:$2|還原咗}}版面 $3($4)",
+       "logentry-delete-revision": "$1 {{GENDER:$2|改咗}}版 $3 入面 {{PLURAL:$5|1 筆修訂|$5 筆修訂}}嘅可見性:$4",
+       "revdelete-content-hid": "內容隱藏咗",
        "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 已經搬版 $3 到 $4 ,衾咗原先個跳轉",
+       "logentry-patrol-patrol-auto": "$1 自動{{GENDER:$2|標記低}}版 $3 嘅修訂 $4 係巡查咗",
        "logentry-newusers-create": "戶口$1經已{{GENDER:$2|開咗}}",
+       "logentry-newusers-autocreate": "戶口 $1 已經自動{{GENDER:$2|開咗}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|上傳咗}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|上載咗}}新版本嘅 $3",
        "rightsnone": "(冇)",
        "feedback-back": "返轉頭",
        "feedback-cancel": "取消",
        "special-characters-title-minus": "減號",
        "mw-widgets-titleinput-description-new-page": "冇呢頁",
        "mw-widgets-titleinput-description-redirect": "跳轉到$1",
+       "randomrootpage": "是但一版根版",
        "authmanager-authplugin-setpass-failed-title": "改唔到密碼"
 }
index 9a3a44f..a97b24e 100644 (file)
        "externaldberror": "Der is een fout opetreeën bie 't anmelden bie de database of je ei hin toestemmieng jen externe gebruker bie te werken.",
        "login": "Anmelden",
        "nav-login-createaccount": "Anmelden / Inschrieven",
-       "userlogin": "Anmelden / Inschrieven",
        "logout": "Ofmelden",
        "userlogout": "Ofmelden",
        "notloggedin": "Nie anemeld",
-       "nologin": "Nog hin gebrukersnaem? $1.",
-       "nologinlink": "Mik een gebruker an",
        "createaccount": "Gebruker anmaeken",
-       "gotaccount": "È je a een gebrukersnaem? '''$1'''.",
-       "gotaccountlink": "Anmelden",
-       "userlogin-resetlink": "Ben jie je anmeldgegevens vergeet'n?",
        "createaccountmail": "per e-mail",
        "badretype": "De wachtwoôrden die-a je ingegeven typ bin nie eênder.",
        "userexists": "De hekozen gebrukersnaem is a in gebruuk.\nKies asjeblieft een aore naem.",
        "editingsection": "Bezig mie bewerken van $1 (deêlpagina)",
        "editingcomment": "Bezig mie bewerken van $1 (opmerkieng)",
        "editconflict": "Bewerkiengsconflict: $1",
-       "explainconflict": "Een aore gebruker ei deêze pagina bewerkt sins a je mie je bewerkieng bin behonnen.\nIn 't bovenste deêl van 't venster sti de tekst van de udihe pagina.\nJe bewerkieng sti in 't onderste hedeêlte.\nJe dien je bewerkiengen in te voehen in de bestaende tekst.\n'''Alleên''' de tekst in 't bovenste hedeêlte wor opeslogen a je op \"{{int:savearticle}}\" klik.",
+       "explainconflict": "Een aore gebruker ei deêze pagina bewerkt sins a je mie je bewerkieng bin behonnen.\nIn 't bovenste deêl van 't venster sti de tekst van de udihe pagina.\nJe bewerkieng sti in 't onderste hedeêlte.\nJe dien je bewerkiengen in te voehen in de bestaende tekst.\n'''Alleên''' de tekst in 't bovenste hedeêlte wor opeslogen a je op \"$1\" klik.",
        "yourtext": "Joe tekst",
        "storedversion": "Opeslogen versie",
        "nonunicodebrowser": "'''WAERSCHUWIENG: Je browser kan nie hoed overwig mie unicode.\nIermie wor deur de MediaWiki-software rekenienge ehouwen zoda je toch zonder probleemn pagina's kan bewerken: nie-ASCII karakters worn in 't bewerkiengsveld weereheven as hexadecimale codes.'''",
        "prefs-misc": "Rest",
        "saveprefs": "Opslaene",
        "prefs-editing": "Bewerken",
-       "rows": "Rehels:",
-       "columns": "Kolomm'n:",
        "searchresultshead": "Zoek",
        "stub-threshold": "Drempel voe markerieng <a href=\"#\" class=\"stub\">stompje</a>:",
        "recentchangesdays": "Antal daehen weer te heven in Juust angepast:",
        "userrights-reason": "Reeën voe 't verandern:",
        "userrights-no-interwiki": "Je ei hin rechen om gebrukersrechen op aore wiki's te wiezigen.",
        "userrights-nodatabase": "Database $1 besti nie of is hin plaetselijke database.",
-       "userrights-nologin": "Je mò jen eihen[[Special:UserLogin|anmelden]] mie een gebruker mie de juuste rechen om gebrukersrechen toe te wiezen.",
-       "userrights-notallowed": "Je ei hin rechen om gebrukersrechen toe te wiezen.",
        "userrights-changeable-col": "Hroep'n die a je kan beheern",
        "userrights-unchangeable-col": "Hroep'n die a je nie kan beheern",
        "group": "Hroep:",
        "rcshowhideanons": "$1 anonieme gebrukers",
        "rcshowhidepatr": "hecontroleerde bewerkiengen $1",
        "rcshowhidemine": "$1 mien bewerkiengen",
-       "rclinks": "Bekiek de lèste $1 wiezigingen in de lèste $2 daegen<br />$3",
+       "rclinks": "Bekiek de lèste $1 wiezigingen in de lèste $2 daegen",
        "diff": "wiez",
        "hist": "hesch",
        "hide": "Verberge",
        "revdelete-restricted": "ei beperkiengen an beheêrders opeleid",
        "revdelete-unrestricted": "ei beperkiengen voe beheêrders opeheven",
        "rightsnone": "(hin)",
-       "revdelete-summary": "saemenvattieng bewerken",
        "searchsuggest-search": "Zoek"
 }
index 34793ca..1c4d694 100644 (file)
                        "Myy730",
                        "SolidBlock",
                        "D41D8CD98F",
-                       "Wmr"
+                       "Wmr",
+                       "逆襲的天邪鬼",
+                       "WhitePhosphorus"
                ]
        },
        "tog-underline": "链接下划线:",
        "tog-hideminor": "在最近更改中隐藏小编辑",
-       "tog-hidepatrolled": "在最近更改中隐藏已巡查的编辑",
+       "tog-hidepatrolled": "在最近更改中隐藏已检查过的编辑",
        "tog-newpageshidepatrolled": "在新页面列表中隐藏已巡查页面",
        "tog-hidecategorization": "隐藏页面的分类",
        "tog-extendwatchlist": "扩展监视列表以显示所有更改,而不仅是最近的更改",
        "anontalk": "讨论",
        "navigation": "导航",
        "and": "和",
-       "qbfind": "查找",
-       "qbbrowse": "浏览",
-       "qbedit": "编辑",
-       "qbpageoptions": "该页面",
-       "qbmyoptions": "我的页面",
        "faq": "常见问题",
-       "faqpage": "Project:常见问题",
        "actions": "操作",
        "namespaces": "命名空间",
        "variants": "变种",
        "edit-local": "编辑本地说明",
        "create": "创建",
        "create-local": "添加本地说明",
-       "editthispage": "编辑本页",
-       "create-this-page": "创建本页",
        "delete": "删除",
-       "deletethispage": "删除本页",
-       "undeletethispage": "还原本页",
        "undelete_short": "还原$1次编辑",
        "viewdeleted_short": "查看{{PLURAL:$1|$1个被删除的编辑}}",
        "protect": "保护",
        "protect_change": "更改",
-       "protectthispage": "保护本页",
        "unprotect": "更改保护",
-       "unprotectthispage": "更改本页的保护",
        "newpage": "新页面",
-       "talkpage": "讨论本页",
        "talkpagelinktext": "讨论",
        "specialpage": "特殊页面",
        "personaltools": "个人工具",
-       "articlepage": "查看内容页面",
        "talk": "讨论",
        "views": "视图",
        "toolbox": "工具",
        "tool-link-userrights": "更改{{GENDER:$1|用户}}组",
        "tool-link-userrights-readonly": "查看{{GENDER:$1|用户}}组",
        "tool-link-emailuser": "电邮联系该{{GENDER:$1|用户}}",
-       "userpage": "查看用户页面",
-       "projectpage": "查看项目页面",
        "imagepage": "查看文件页面",
        "mediawikipage": "查看信息页面",
        "templatepage": "查看模板页面",
        "redirectedfrom": "(重定向自$1)",
        "redirectpagesub": "重定向页面",
        "redirectto": "重定向至:",
-       "lastmodifiedat": "本页面最后修改于$1 $2。",
+       "lastmodifiedat": "本页面最后编辑于$1 $2。",
        "viewcount": "本页面已经被访问过{{PLURAL:$1|$1次}}。",
        "protectedpage": "受保护页面",
        "jumpto": "跳转至:",
        "preview": "预览",
        "showpreview": "显示预览",
        "showdiff": "显示更改",
-       "blankarticle": "<strong>警告</strong>:您创建的页面是空白的。如果您再次点击“{{int:savearticle}}”,您将真的创建没有任何内容的页面。",
+       "blankarticle": "<strong>警告</strong>:您创建的页面是空白的。如果您再次点击“$1”,您将真的创建没有任何内容的页面。",
        "anoneditwarning": "<strong>警告:</strong>您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您<strong>[$1 登录]</strong>或<strong>[$2 创建]</strong>一个账户,您的编辑将归属于您的用户名,且将享受其他好处。",
        "anonpreviewwarning": "<em>您没有登录。保存将您的IP地址记录至此页面的编辑历史中。</em>",
-       "missingsummary": "<strong>提示:</strong>您没有提供编辑摘要。如果您再次点击“{{int:savearticle}}”,您的编辑将不带摘要保存。",
-       "selfredirect": "<strong>警告:</strong>您正在将此页面重定向至它自己。您可能指定了错误的重定向目标,或者您正在编辑错误的页面。如果您再次点击“{{int:savearticle}}”,重定向仍将被创建。",
+       "missingsummary": "<strong>提示:</strong>您没有提供编辑摘要。如果您再次点击“$1”,您的编辑将不带摘要保存。",
+       "selfredirect": "<strong>警告:</strong>您正在将此页面重定向至它自己。您可能指定了错误的重定向目标,或者您正在编辑错误的页面。如果您再次点击“$1”,重定向仍将被创建。",
        "missingcommenttext": "请在下面输入评论。",
-       "missingcommentheader": "<strong>提示:</strong>您还没有为此评论提供一个标题。如果您再次点击“{{int:savearticle}}”,您的编辑将不带标题保存。",
+       "missingcommentheader": "<strong>提示:</strong>您还没有为此评论提供一个标题。如果您再次点击“$1”,您的编辑将不带标题保存。",
        "summary-preview": "编辑摘要的预览:",
        "subject-preview": "主题的预览:",
        "previewerrortext": "尝试预览您的更改时发生未知错误。",
        "editingsection": "编辑“$1”(章节)",
        "editingcomment": "编辑“$1”(新章节)",
        "editconflict": "编辑冲突:$1",
-       "explainconflict": "其他用户在您开始编辑后更改了该页面。上面的文字区含有该页面当前的文字。下面的文字区显示您的更改。您必须把您的更改合并至现有文字。<strong>只有</strong>当您单击“{{int:savearticle}}”后,上面的文字区中的文字才会被保存。",
+       "explainconflict": "其他用户在您开始编辑后更改了该页面。上面的文字区含有该页面当前的文字。下面的文字区显示您的更改。您必须把您的更改合并至现有文字。<strong>只有</strong>当您单击“$1”后,上面的文字区中的文字才会被保存。",
        "yourtext": "您的文字",
        "storedversion": "已保存的版本",
        "nonunicodebrowser": "<strong>警告:您的浏览器不兼容Unicode编码。</strong>这里有一个工作区将使您能安全地编辑页面:非ASCII字符将以十六进制编码方式出现在编辑框中。",
        "rev-deleted-text-view": "本页面版本已被<strong>删除</strong>。您可以查看它,详情请见[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]。",
        "rev-suppressed-text-view": "该页面版本已经被<strong>监督隐藏</strong>。您可以查看它。在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 监督日志]中可以找到详细的信息。",
        "rev-deleted-no-diff": "您不能查看该差异,因为其中一个版本已被<strong>删除</strong>。详情请见[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]。",
-       "rev-suppressed-no-diff": "无法查看该差异,因为其中一个版本已被<strong>删除<strong>。",
+       "rev-suppressed-no-diff": "无法查看该差异,因为其中一个版本已被<strong>删除</strong>。",
        "rev-deleted-unhide-diff": "该差异对比的其中的一个版本已经被<strong>删除</strong>。在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中可以找到更多的信息。如果您想继续的话,您仍然可以[$1 查看此版本]。",
        "rev-suppressed-unhide-diff": "该页面的其中一次版本已经被<strong>屏蔽</strong>。在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 监督日志]中可以找到更多的资料。如果您想继续的话,您仍然可以[$1 查看该差异]。",
        "rev-deleted-diff-view": "差异对比中的一次版本已被<strong>删除</strong>。您可以对比此差异。详细信息可在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中找到。",
        "search-file-match": "(匹配文件内容)",
        "search-suggest": "您是不是要找:$1",
        "search-rewritten": "显示用于$1的结果。而不是寻找$2。",
-       "search-interwiki-caption": "姊妹项目",
+       "search-interwiki-caption": "来自姊妹项目的结果",
        "search-interwiki-default": "来自$1的结果:",
        "search-interwiki-more": "(更多)",
        "search-interwiki-more-results": "更多结果",
        "gender-unknown": "当提及您时,软件将尽可能使用性别中性的词法",
        "gender-male": "他",
        "gender-female": "她",
-       "prefs-help-gender": "该设置为可选项。软件根据该值在称呼您及对他人提及您时使用适当的语法性别。该信息会被公开。",
+       "prefs-help-gender": "该设置为可选项。系统会使用您选择的方式来称呼您,对他人提及您时也会使用适当语法称呼。该信息会公开。",
        "email": "电子邮件",
        "prefs-help-realname": "真实姓名是选填项目。如果提供,它可能用于署名您的贡献。",
        "prefs-help-email": "电子邮件地址是选填项,但是当您忘记您的密码要重置密码时,需要该信息。",
        "action-deletechangetags": "从数据库删除标签",
        "action-purge": "刷新此页面",
        "nchanges": "$1次更改",
-       "enhancedrc-since-last-visit": "{{PLURAL:$1|上次访问后}}$1个",
+       "enhancedrc-since-last-visit": "{{PLURAL:$1|自上次访问}}有$1次",
        "enhancedrc-history": "历史",
        "recentchanges": "最近更改",
        "recentchanges-legend": "最近更改选项",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "显示",
        "rcfilters-activefilters": "激活的过滤器",
+       "rcfilters-quickfilters": "已保存过滤器设置",
+       "rcfilters-quickfilters-placeholder-title": "尚未保存链接",
+       "rcfilters-quickfilters-placeholder-description": "要保存您的过滤器设置并供日后再利用,点击下方激活的过滤器区域内的书签图标。",
+       "rcfilters-savedqueries-defaultlabel": "保存的过滤器",
+       "rcfilters-savedqueries-rename": "重命名",
+       "rcfilters-savedqueries-setdefault": "设置为默认",
+       "rcfilters-savedqueries-unsetdefault": "移除为默认",
+       "rcfilters-savedqueries-remove": "移除",
+       "rcfilters-savedqueries-new-name-label": "名称",
+       "rcfilters-savedqueries-apply-label": "保存设置",
+       "rcfilters-savedqueries-cancel-label": "取消",
+       "rcfilters-savedqueries-add-new-title": "保存当前过滤器设置",
        "rcfilters-restore-default-filters": "恢复默认过滤器",
        "rcfilters-clear-all-filters": "清空所有过滤器",
        "rcfilters-search-placeholder": "过滤器最近更改(浏览或开始输入)",
        "rcfilters-filter-unregistered-label": "未注册",
        "rcfilters-filter-unregistered-description": "未登录的编辑者。",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "该过滤器与以下体验{{PLURAL:$2|过滤器}}相冲突,而它只{{PLURAL:$2|寻找}}注册用户:$1",
-       "rcfilters-filtergroup-authorship": "编辑的作者",
-       "rcfilters-filter-editsbyself-label": "您自己的编辑",
-       "rcfilters-filter-editsbyself-description": "由您编辑。",
-       "rcfilters-filter-editsbyother-label": "由其他人编辑",
-       "rcfilters-filter-editsbyother-description": "由其他用户(而不是您)创建的编辑。",
+       "rcfilters-filtergroup-authorship": "贡献的作者",
+       "rcfilters-filter-editsbyself-label": "您的更改",
+       "rcfilters-filter-editsbyself-description": "您自己的贡献。",
+       "rcfilters-filter-editsbyother-label": "他人更改",
+       "rcfilters-filter-editsbyother-description": "除了您的更改以外的所有更改。",
        "rcfilters-filtergroup-userExpLevel": "体验水平(仅限注册用户)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "体验过滤器只寻找注册用户,因此该过滤器与“未注册”过滤器相冲突。",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "“未注册”过滤器与一个或更多体验过滤器相冲突,而它只寻找注册用户。冲突过滤器已在上方激活过滤器区域中被标记。",
        "rcfilters-filter-user-experience-level-newcomer-label": "新手",
        "rcfilters-filter-user-experience-level-newcomer-description": "少于10次编辑和4天活跃。",
        "rcfilters-filter-user-experience-level-learner-label": "初学者",
-       "rcfilters-filter-user-experience-level-learner-description": "比“新手”拥有更多活跃天数和编辑数,但少于“有经验的用户”。",
+       "rcfilters-filter-user-experience-level-learner-description": "比“新手”拥有更多经验,但少于“有经验的用户”。",
        "rcfilters-filter-user-experience-level-experienced-label": "有经验的用户",
        "rcfilters-filter-user-experience-level-experienced-description": "超过30天活跃和500次编辑。",
        "rcfilters-filtergroup-automated": "自动化贡献者",
        "rcfilters-filter-bots-label": "机器人",
        "rcfilters-filter-bots-description": "由自动化工具做出的编辑。",
-       "rcfilters-filter-humans-label": "人类(不是机器人)",
+       "rcfilters-filter-humans-label": "人类(机器人)",
        "rcfilters-filter-humans-description": "由人类编辑者做出的编辑。",
        "rcfilters-filtergroup-reviewstatus": "巡查状态",
        "rcfilters-filter-patrolled-label": "已巡查",
        "rcfilters-filter-minor-description": "作者已标记为小编辑的编辑。",
        "rcfilters-filter-major-label": "不是小编辑",
        "rcfilters-filter-major-description": "未标记为小编辑的编辑。",
+       "rcfilters-filtergroup-watchlist": "监视列表中的页面",
+       "rcfilters-filter-watchlist-watched-label": "在监视列表上",
+       "rcfilters-filter-watchlist-watched-description": "对您的监视列表上页面做出的更改。",
+       "rcfilters-filter-watchlist-watchednew-label": "新监视列表更改",
+       "rcfilters-filter-watchlist-watchednew-description": "自从更改发生以来,对您没有访问的监视页面做出的更改。",
+       "rcfilters-filter-watchlist-notwatched-label": "未在监视列表上",
+       "rcfilters-filter-watchlist-notwatched-description": "除了对您监视的页面做出更改以外的任何事项。",
        "rcfilters-filtergroup-changetype": "更改类型",
        "rcfilters-filter-pageedits-label": "页面编辑",
-       "rcfilters-filter-pageedits-description": "对wikiå\86\85容ã\80\81讨论ã\80\81å\88\86ç±»æ\8f\8fè¿°ç\9a\84ç¼\96è¾\91....",
+       "rcfilters-filter-pageedits-description": "对wikiå\86\85容ã\80\81讨论ã\80\81å\88\86ç±»æ\8f\8fè¿°ç­\89ç\9a\84ç¼\96è¾\91",
        "rcfilters-filter-newpages-label": "页面创建",
        "rcfilters-filter-newpages-description": "做出新页面的编辑。",
        "rcfilters-filter-categorization-label": "分类更改",
        "rcfilters-filter-categorization-description": "从分类中添加或移除页面的记录。",
-       "rcfilters-filter-logactions-label": "记录的操作",
-       "rcfilters-filter-logactions-description": "管理操作、账户创建、页面删除、上传....",
+       "rcfilters-filter-logactions-label": "日志操作",
+       "rcfilters-filter-logactions-description": "管理操作、账户创建、页面删除、上传",
        "rcfilters-hideminor-conflicts-typeofchange-global": "“小编辑”过滤器与一个或多个更改类型过滤器冲突,因为其中某种更改类型不可指定为“小编辑”。冲突过滤器已在上方活跃过滤器中被标记。",
        "rcfilters-hideminor-conflicts-typeofchange": "某种更改类型不可指定为“小编辑”,因此该过滤器与以下更改类型过滤器相冲突:$1",
        "rcfilters-typeofchange-conflicts-hideminor": "这种更改类型过滤器与“小编辑”过滤器相冲突。某种更改类型不可指定为“小编辑”。",
+       "rcfilters-filtergroup-lastRevision": "最新版本",
+       "rcfilters-filter-lastrevision-label": "最新版本",
+       "rcfilters-filter-lastrevision-description": "对页面的最近更改。",
+       "rcfilters-filter-previousrevision-label": "早期版本",
+       "rcfilters-filter-previousrevision-description": "除最近更改外,所有对某一页面的更改。",
+       "rcfilters-filter-excluded": "已排除",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:不是</strong>$1",
+       "rcfilters-view-tags": "标签",
        "rcnotefrom": "下面{{PLURAL:$5|是}}<strong>$3 $4</strong>之后的更改(最多显示<strong>$1</strong>个)。",
        "rclistfromreset": "重置时间选择",
        "rclistfrom": "显示$3 $2之后的新更改",
        "rcshowhidecategorization": "$1页面分类",
        "rcshowhidecategorization-show": "显示",
        "rcshowhidecategorization-hide": "隐藏",
-       "rclinks": "显示过去$2天的最后$1个更改<br />$3",
+       "rclinks": "显示过去$2天的最后$1个更改",
        "diff": "差异",
        "hist": "历史",
        "hide": "隐藏",
        "upload-description": "文件说明",
        "upload-options": "上传选项",
        "watchthisupload": "监视这个文件",
-       "filewasdeleted": "之前已经有一个同名文件被上传后又被删除了。在上传此文件之前您需要检查$1。",
+       "filewasdeleted": "之前已经上传过一个同名文件,后来又删除了。在上传此文件之前您应该检查$1。",
        "filename-thumb-name": "这看起来像是缩略图标题。请不要将缩略图上传回同一wiki。否则,请修改文件名使其更有意义,并且没有缩略图前缀。",
        "filename-bad-prefix": "您上传的文件名称是以<strong>“$1”</strong>作为开头,通常这种没有含意的文件名称是由数码相机中自动编排。请在您的文件中重新选择一个更加有意义的文件名称。",
        "filename-prefix-blacklist": " #<!-- 请将本行保留为原样 --> <pre>\n# 语法如下:\n#  * 任何以“#”开头到结尾的行为注释\n#  * 任何非空行是根据相机自动分配特定文件名的前缀\nCIMG # 卡西欧\nDSC_ # 尼康\nDSCF # 富士\nDSCN # 尼康\nDUW # 部分手机\nIMG # 一般\nJD # 业纳\nMGP # 宾得\nPICT # 其他\n #</pre> <!-- 请将本行保留为原样 -->",
        "ancientpages": "最老页面",
        "move": "移动",
        "movethispage": "移动本页",
-       "unusedimagestext": "存在以下没有插入任何页面的文件。请注意,其他网站可能会使用直接URL链接某个文件,因此它即使被实际使用也可能在这里列出。",
+       "unusedimagestext": "下面为未被任何页面使用的文件。请注意,其他网站可能会通过URL直接链接某个文件,因此列表中的文件有可能仍在使用。",
        "unusedcategoriestext": "以下分类页面实际存在,即使没有其它页面或分类利用它们。",
        "notargettitle": "无目标",
        "notargettext": "您还没有指定一个目标页面或用户以进行此项操作。",
        "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": "请æµ\8fè§\88 $1 æ\9f¥ç\9c\8bå\9c¨ä½ ä¸\8a次访é\97®å\90\8eç\9a\84æ\89\80æ\9c\89æ\9b´æ\94¹ã\80\82",
-       "enotif_lastdiff": "请æµ\8fè§\88 $1 æ\9f¥ç\9c\8b该æ\9b´æ\94¹ã\80\82",
+       "enotif_lastvisited": "è¦\81æ\9f¥ç\9c\8bæ\82¨ä¸\8a次访é\97®ä»¥æ\9d¥ç\9a\84æ\89\80æ\9c\89æ\9b´æ\94¹ï¼\8c请å\8f\82è§\81$1",
+       "enotif_lastdiff": "è¦\81æµ\8fè§\88此次æ\9b´æ\94¹ï¼\8c请å\8f\82è§\81$1",
        "enotif_anon_editor": "匿名用户$1",
        "enotif_body": "亲爱的$WATCHINGUSERNAME:\n\n您好!\n$PAGEINTRO$NEWPAGE\n\n编辑摘要:$PAGESUMMARY $PAGEMINOREDIT\n\n可通过以下方式联系编辑者:\n电子邮件:$PAGEEDITOR_EMAIL\n用户页面:$PAGEEDITOR_WIKI\n\n在您登录并访问该页面之前,我们不会发送新增更改的通知。您也可以重设您的监视列表中所有监视页面的通知标志。\n\n{{SITENAME}}通知系统\n\n--\n更改邮件通知设置:\n{{canonicalurl:{{#special:Preferences}}}}\n更改监视列表设置:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n从监视列表中删除该页面:\n$UNWATCHURL\n反馈与其他帮助:\n$HELPPAGE",
        "created": "创建",
        "undeletepage": "查看和还原被删除的页面",
        "undeletepagetitle": "<strong>以下包含[[:$1|$1]]的已删除之版本</strong>。",
        "viewdeletedpage": "查看被删页面",
-       "undeletepagetext": "以下{{PLURAL:$1|页面|$1个页面}}已被删除,但依然在归档中并可以被恢复。归档可能会被定时清理。",
+       "undeletepagetext": "以下{{PLURAL:$1|页面|$1个页面}}已删除,但内容仍然在存档中,而且可以恢复。存档可能会定时清理。",
        "undelete-fieldset-title": "还原版本",
        "undeleteextrahelp": "要恢复该页面的整个历史记录时,不选中任何复选框直接点击<strong><em>{{int:undeletebtn}}</em></strong>。要选择性地恢复部分版本时,请选中相应版本前的复选框再点击<strong><em>{{int:undeletebtn}}</em></strong>。",
        "undeleterevisions": "$1个{{PLURAL:$1|修订版本}}已删除",
        "sp-contributions-uploads": "上传",
        "sp-contributions-logs": "日志",
        "sp-contributions-talk": "讨论",
-       "sp-contributions-userrights": "用户权限管理",
+       "sp-contributions-userrights": "{{GENDER:$1|用户}}权限管理",
        "sp-contributions-blocked-notice": "这位用户目前正在被封禁。最近的封禁日志记录在下面提供以供参考:",
        "sp-contributions-blocked-notice-anon": "这个IP地址目前正在被封禁。最近的封禁日志记录在下面提供以供参考:",
        "sp-contributions-search": "搜索贡献",
        "autoblocklist-submit": "搜索",
        "autoblocklist-legend": "自动封禁列表",
        "autoblocklist-localblocks": "本地{{PLURAL:$1|自动封禁}}",
+       "autoblocklist-total-autoblocks": "自动封禁总数:$1",
        "autoblocklist-empty": "自动封禁列表为空。",
        "autoblocklist-otherblocks": "其他{{PLURAL:$1|自动封禁}}",
        "ipblocklist": "被封禁用户",
        "ipb_expiry_invalid": "无效的终止时间。",
        "ipb_expiry_old": "终止时间已过去。",
        "ipb_expiry_temp": "隐藏用户名的封禁必须是永久性的。",
-       "ipb_hide_invalid": "无法封禁此账户;它拥有多于$1次编辑。",
+       "ipb_hide_invalid": "无法隐藏此用户名;它拥有多于$1次编辑。",
        "ipb_already_blocked": "“$1”已被封禁。",
        "ipb-needreblock": "$1已被封禁。您是否想更改封禁设置?",
        "ipb-otherblocks-header": "其他{{PLURAL:$1|封禁}}",
        "tooltip-pt-mycontris": "{{GENDER:|您}}的贡献的列表",
        "tooltip-pt-anoncontribs": "来自此IP地址的编辑列表",
        "tooltip-pt-login": "我们鼓励您登录;然而,这不是强制性的",
+       "tooltip-pt-login-private": "您需要登录以使用此wiki",
        "tooltip-pt-logout": "退出登录",
        "tooltip-pt-createaccount": "建议您创建一个账户并登录,但这不是强制的",
        "tooltip-ca-talk": "关于内容页面的讨论",
        "anonymous": "{{SITENAME}}匿名{{PLURAL:$1|用户}}",
        "siteuser": "{{SITENAME}}用户$1",
        "anonuser": "{{SITENAME}}匿名用户$1",
-       "lastmodifiedatby": "本页面被$3最后修改于$1 $2。",
+       "lastmodifiedatby": "本页面被$3最后编辑于$1 $2。",
        "othercontribs": "基于$1的劳动成果。",
        "others": "其他",
        "siteusers": "{{SITENAME}}{{PLURAL:$2|{{GENDER:$1|用户}}}}$1",
        "newimages-legend": "过滤",
        "newimages-label": "文件名(或它的一部份):",
        "newimages-user": "IP地址或用户名",
+       "newimages-newbies": "只显示新账户的贡献",
        "newimages-showbots": "显示机器人上传",
        "newimages-hidepatrolled": "隐藏已巡查的上传",
+       "newimages-mediatype": "媒体类型:",
        "noimages": "无可查看文件。",
        "gallery-slideshow-toggle": "开启/关闭缩略图",
        "ilsubmit": "搜索",
        "metadata-help": "此文件中包含有额外的信息。这些信息可能是由数码相机或扫描仪在创建或数字化过程中所添加的。如果文件自初始状态已受到修改,一些详细说明可能无法反映修改后的文件。",
        "metadata-expand": "显示详细资料",
        "metadata-collapse": "隐藏详细资料",
-       "metadata-fields": "在本信息中所列出的 EXIF 元数据域将包含在图片显示页面,当元数据表损坏时只显示以下信息。\n其他的元数据默认为隐藏。\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-fields": "在本信息中所列出的 EXIF 元数据域将包含在图片显示页面,当元数据表损坏时只显示以下信息。其他的元数据默认为隐藏。\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-imagewidth": "宽度",
        "exif-imagelength": "高度",
        "exif-bitspersample": "每像素字节数",
        "tags-create-reason": "原因:",
        "tags-create-submit": "创建",
        "tags-create-no-name": "您必须指定一个标签名称。",
-       "tags-create-invalid-chars": "标签名称必须不包含逗号(<code>,</code>)或正斜线(<code>/</code>)。",
+       "tags-create-invalid-chars": "标签名称必须不包含逗号(<code>,</code>)、竖线(<code>|</code>)或正斜线(<code>/</code>)。",
        "tags-create-invalid-title-chars": "标签名称不得含有无法在网页标题中使用的字符。",
        "tags-create-already-exists": "“$1”标签已存在。",
        "tags-create-warnings-above": "下列{{PLURAL:$2|警告}}是尝试创建“$1”标签时遇到的:",
        "mw-widgets-titleinput-description-redirect": "重定向至$1",
        "mw-widgets-categoryselector-add-category-placeholder": "添加分类...",
        "mw-widgets-usersmultiselect-placeholder": "添加更多...",
+       "date-range-from": "起始日:",
+       "date-range-to": "截止日:",
        "sessionmanager-tie": "不能结合多个请求的身份验证类型:$1。",
        "sessionprovider-generic": "$1会话",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "基于cookie的会话",
        "rawhtml-notallowed": "&lt;html&gt;标签不能在一般页面以外使用。",
        "gotointerwiki": "离开{{SITENAME}}",
        "gotointerwiki-invalid": "指定的标题无效。",
-       "gotointerwiki-external": "您将要离开{{SITENAME}}来访问[[$2]],这是一个独立网站。\n\n[$1 点此继续访问$1]。",
+       "gotointerwiki-external": "您将要离开{{SITENAME}}来访问[[$2]],这是一个独立网站。\n\n'''[$1 继续访问$1]'''",
        "undelete-cantedit": "您不能还原该页面,因为您未被允许编辑该页面。",
-       "undelete-cantcreate": "您不能还原该页面,因为没有使用该页面名称的现有页面,并且您未被允许编辑该页面。"
+       "undelete-cantcreate": "您不能还原该页面,因为没有使用该页面名称的现有页面,并且您未被允许编辑该页面。",
+       "pagedata-title": "页面数据",
+       "pagedata-text": "此页面提供相关页面的数据界面。请在URL中,使用子页面语法提供页面标题。\n* 内容协商基于您客户端的接受标头应用。这意味着页面数据将以您客户端首选的格式提供。",
+       "pagedata-not-acceptable": "没有找到匹配的格式。支持的MIME类型:$1",
+       "pagedata-bad-title": "无效标题:$1。"
 }
index 75227c4..cb9b5ca 100644 (file)
                        "Wmr",
                        "烈羽",
                        "和平奮鬥救地球",
-                       "Arthur2e5"
+                       "Arthur2e5",
+                       "逆襲的天邪鬼",
+                       "A2093064",
+                       "Wwycheuk"
                ]
        },
        "tog-underline": "底線標示連結:",
        "period-am": "AM",
        "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|分類|$1 個分類}}",
-       "category_header": "分類 \"$1\" 中的頁面",
+       "category_header": "「$1」分類的頁面",
        "subcategories": "子分類",
-       "category-media-header": "分類 \"$1\" 中的媒體",
+       "category-media-header": "「$1」分類的媒體",
        "category-empty": "<em>此分類目前未包含頁面或媒體。</em>",
        "hidden-categories": "{{PLURAL:$1|隱藏分類}}",
        "hidden-category-category": "隱藏分類",
        "anontalk": "對話",
        "navigation": "導覽",
        "and": "&#32;和&#32;",
-       "qbfind": "尋找",
-       "qbbrowse": "瀏覽",
-       "qbedit": "編輯",
-       "qbpageoptions": "此頁面",
-       "qbmyoptions": "我的頁面",
        "faq": "常見問題",
-       "faqpage": "Project:FAQ",
        "actions": "動作",
        "namespaces": "命名空間",
        "variants": "變體",
        "navigation-heading": "導覽選單",
        "errorpagetitle": "錯誤",
-       "returnto": "返回至 $1。",
+       "returnto": "返回「$1」頁面",
        "tagline": "出自 {{SITENAME}}",
        "help": "說明",
        "search": "搜尋",
        "edit-local": "編輯本地說明",
        "create": "建立",
        "create-local": "新增本地說明",
-       "editthispage": "編輯本頁",
-       "create-this-page": "建立本頁",
        "delete": "刪除",
-       "deletethispage": "刪除此頁",
-       "undeletethispage": "取消刪除此頁",
        "undelete_short": "取消刪除 $1 項修訂",
        "viewdeleted_short": "檢視 {{PLURAL:$1|1 項已刪除的修訂|$1 項已刪除的修訂}}",
        "protect": "保護",
        "protect_change": "變更",
-       "protectthispage": "保護此頁面",
        "unprotect": "變更保護",
-       "unprotectthispage": "變更此頁的保護",
        "newpage": "新頁面",
-       "talkpage": "討論此頁面",
        "talkpagelinktext": "對話",
        "specialpage": "特殊頁面",
        "personaltools": "個人工具",
-       "articlepage": "檢視內容頁面",
        "talk": "討論",
        "views": "檢視",
        "toolbox": "工具",
        "tool-link-userrights": "變更{{GENDER:$1|使用者}}群組",
        "tool-link-userrights-readonly": "檢視{{GENDER:$1|使用者}}群組",
        "tool-link-emailuser": "寄信給這位{{GENDER:$1|使用者}}",
-       "userpage": "檢視使用者頁面",
-       "projectpage": "檢視專案頁面",
        "imagepage": "檢視檔案頁面",
        "mediawikipage": "檢視訊息頁面",
        "templatepage": "檢視模板頁面",
        "redirectedfrom": "(已重新導向自 $1)",
        "redirectpagesub": "重新導向頁面",
        "redirectto": "重新導向至:",
-       "lastmodifiedat": "此頁面最後修改於 $1 $2。",
+       "lastmodifiedat": "此頁面最後編輯於 $1 $2。",
        "viewcount": "此頁面已被存取過 {{PLURAL:$1|$1 次}}。",
        "protectedpage": "受保護頁面",
        "jumpto": "前往:",
        "poolcounter-usage-error": "用法錯誤:$1",
        "aboutsite": "關於 {{SITENAME}}",
        "aboutpage": "Project:關於",
-       "copyright": "除非額外說明,否則本站內容均使用 $1 授權條款。",
+       "copyright": "除非另有註明,否則頁面內容均以 $1 條款授權。",
        "copyrightpage": "{{ns:project}}:版權",
        "currentevents": "新聞動態",
        "currentevents-url": "Project:Current events",
        "preview": "預覽",
        "showpreview": "顯示預覽",
        "showdiff": "顯示變更",
-       "blankarticle": "<strong>警告:</strong>您正在建立的頁面是空白的。\n如果您再按一下\"{{int:savearticle}}\",將建立沒有任何內容的頁面。",
+       "blankarticle": "<strong>警告:</strong>您正在建立的頁面是空白的。\n如果您再按一下\"$1\",將建立沒有任何內容的頁面。",
        "anoneditwarning": "<strong>警告:</strong>您尚未登入。 若您進行任何的編輯您的 IP 位置將會被公開。 若您 <strong>[$1 登入]</strong> 或 <strong>[$2 建立帳號]</strong>,您的編輯將會以您的使用者名稱標示,擁有其他優點。",
        "anonpreviewwarning": "<em>您尚未登入。儲存頁面會將您的 IP 位址記錄在此頁面的編輯歷史中。</em>",
-       "missingsummary": "<strong>提醒:</strong>您未填寫編輯摘要。\n若您再點選 \"{{int:savearticle}}\" 一次,將略過摘要直接儲存您的編輯。",
-       "selfredirect": "<strong>警告:</strong> 您正建立連結至自己的重新導向。\n您可能指定錯要重新導向的目標頁面或者編輯錯頁面。\n若您再點選 \"{{int:savearticle}}\" 一次,將會繼續建立重新導向。",
+       "missingsummary": "<strong>提醒:</strong>您未填寫編輯摘要。\n若您再點選 \"$1\" 一次,將略過摘要直接儲存您的編輯。",
+       "selfredirect": "<strong>警告:</strong> 您正建立連結至自己的重新導向。\n您可能指定錯要重新導向的目標頁面或者編輯錯頁面。\n若您再點選 \"$1\" 一次,將會繼續建立重新導向。",
        "missingcommenttext": "請在下方輸入評論。",
-       "missingcommentheader": "<strong>提醒:</strong>您未填寫此評論的主旨。\n若您再點選 \"{{int:savearticle}}\" 一次,將略過主旨/標題直接儲存您的評論。",
+       "missingcommentheader": "<strong>提醒:</strong>您未填寫此評論的主旨。\n若您再點選 \"$1\" 一次,將略過主旨/標題直接儲存您的評論。",
        "summary-preview": "編輯摘要預覽:",
        "subject-preview": "預覽主旨:",
        "previewerrortext": "嘗試預覽您的變更時發生錯誤。",
        "editingsection": "正在編輯 $1 (章節)",
        "editingcomment": "正在編輯 $1 (新章節)",
        "editconflict": "編輯衝突:$1",
-       "explainconflict": "在您開始編輯之後已有其他人儲存了此頁面。\n上方的文字框內顯示了目前頁面中的文字內容,\n您所變更的文字內容顯示在下方文字框中。\n您須要將您所變更的文字內容合併到已儲存的文字內容當中。\n若您直接點選 \"{{int:savearticle}}\" <strong>只有</strong> 上方文字框中的內容會被儲存。",
+       "explainconflict": "在您開始編輯之後已有其他人儲存了此頁面。\n上方的文字框內顯示了目前頁面中的文字內容,\n您所變更的文字內容顯示在下方文字框中。\n您須要將您所變更的文字內容合併到已儲存的文字內容當中。\n若您直接點選 \"$1\" <strong>只有</strong> 上方文字框中的內容會被儲存。",
        "yourtext": "您的文字",
        "storedversion": "已儲存修訂",
        "nonunicodebrowser": "<strong>警告:您的瀏覽器與 Unicode 不相容。</strong>\n暫時解決的方式是先在您可安全編輯頁面的地方編輯:非 ASCII 字元在編輯框中會以 16 進位編碼顯示。",
        "readonlywarning": "<strong>警告:資料庫已被鎖定以進行維護,因此無法儲存您目前所做的編輯動作。</strong>\n您可先複製您的文字並貼上到文字檔案中儲存,稍後再儲存您編輯。\n\n鎖定資料庫的系統管理員有以下說明:$1",
        "protectedpagewarning": "<strong>警告:本頁已經被保護,只有擁有管理員權限的使用者才可編輯。</strong>\n以下提供最近的日誌以便參考:",
        "semiprotectedpagewarning": "<strong>注意:</strong>本頁已經被保護,只有已註冊的使用者才可編輯。\n以下提供最近的日誌以便參考:",
-       "cascadeprotectedwarning": "<strong>警告:</strong>本頁已經被保護,只有擁有管理員權限的使用者才可編輯,此頁面被下列{{PLURAL:$1|頁面|頁面}}引用因此連鎖保護:",
+       "cascadeprotectedwarning": "<strong>警告:</strong>由於本頁被下列{{PLURAL:$1|頁面|頁面}}嵌入,所以受連鎖保護。只有得到[[Special:ListGroupRights|特殊權限]]的使用者才可編輯。",
        "titleprotectedwarning": "<strong>警告:本頁面已被保護,需要 [[Special:ListGroupRights|特殊權限]] 方可建立。</strong>\n以下提供最近的日誌以便參考:",
        "templatesused": "此頁面使用了以下{{PLURAL:$1|模板}}:",
        "templatesusedpreview": "此預覽使用了以下{{PLURAL:$1|模板}}:",
        "revdelete-reasonotherlist": "其它原因",
        "revdelete-edit-reasonlist": "編輯刪除原因",
        "revdelete-offender": "修訂作者:",
-       "suppressionlog": "ç¦\81止顯示日誌",
+       "suppressionlog": "ç\9b£ç\9d£日誌",
        "suppressionlogtext": "以下清單為管理員透過刪除或封鎖所隱藏的內容。\n請至 [[Special:BlockList|封鎖清單]] 取得目前已封鎖的清單。",
        "mergehistory": "合併頁面歷史",
        "mergehistory-header": "這頁可以讓您合併一個來源頁面的歷史到另一個新頁面中。\n請確認這次更改能夠繼續保留該頁面先前歷史版本的連續性。",
        "mergelog": "合併日誌",
        "revertmerge": "取消合併",
        "mergelogpagetext": "以下是最近合併頁面歷史的清單。",
-       "history-title": "\"$1\" 的修訂歷史",
+       "history-title": "「$1」的修訂歷史",
        "difference-title": "\"$1\" 修訂間的差異",
        "difference-title-multipage": "頁面 \"$1\" 與 \"$2\" 間的差異",
        "difference-multipage": "(頁面間的差異)",
        "diff-multi-manyusers": "(未顯示由超過 $2 位使用者於中間所作的 $1 次修訂)",
        "difference-missing-revision": "查無此差異 ($1) 中的{{PLURAL:$2|1 次修訂|$2 次修訂}}。\n\n這通常是因為差異的連結過時,頁面已被刪除。\n詳情資訊請參閱 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]。",
        "searchresults": "搜尋結果",
-       "searchresults-title": "\"$1\" 的搜尋結果",
+       "searchresults-title": "搜尋「$1」的結果",
        "titlematches": "頁面標題符合",
        "textmatches": "頁面內容符合",
        "notextmatches": "沒有符合的頁面內容",
        "search-file-match": "(符合檔案內容)",
        "search-suggest": "您指的是不是:$1",
        "search-rewritten": "顯示 $1 的搜尋結果,改搜尋 $2。",
-       "search-interwiki-caption": "姐妹專案",
+       "search-interwiki-caption": "源自姐妹專案的結果",
        "search-interwiki-default": "來自 $1 的結果:",
        "search-interwiki-more": "(更多)",
        "search-interwiki-more-results": "更多結果",
        "action-deletechangetags": "從資料庫刪除標籤",
        "action-purge": "清除此頁面",
        "nchanges": "$1 次變更",
-       "enhancedrc-since-last-visit": "{{PLURAL:$1|自上次拜訪}}已有 $1",
+       "enhancedrc-since-last-visit": "{{PLURAL:$1|自上次拜訪}}有$1次",
        "enhancedrc-history": "歷史",
        "recentchanges": "近期變更",
        "recentchanges-legend": "近期變更選項",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "顯示",
        "rcfilters-activefilters": "使用中的過濾條件",
+       "rcfilters-quickfilters": "已儲存的查詢條件設定",
+       "rcfilters-quickfilters-placeholder-title": "尚未儲存任何連結",
+       "rcfilters-savedqueries-defaultlabel": "已儲存的查詢條件",
+       "rcfilters-savedqueries-rename": "重新命名",
+       "rcfilters-savedqueries-setdefault": "設為預設",
+       "rcfilters-savedqueries-unsetdefault": "取消設為預設",
+       "rcfilters-savedqueries-remove": "移除",
+       "rcfilters-savedqueries-new-name-label": "名稱",
+       "rcfilters-savedqueries-apply-label": "儲存設定",
+       "rcfilters-savedqueries-cancel-label": "取消",
+       "rcfilters-savedqueries-add-new-title": "儲存目前的過濾器設定",
        "rcfilters-restore-default-filters": "還原預設過濾條件",
        "rcfilters-clear-all-filters": "清除所有過濾條件",
        "rcfilters-search-placeholder": "過濾條件近期變更 (瀏覽或開始輸入)",
        "rcfilters-filter-unregistered-label": "未註冊",
        "rcfilters-filter-unregistered-description": "尚未登入的編輯者。",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "此過濾條件與以下經歷{{PLURAL:$2|過濾條件|過濾條件}}衝突,因其只會{{PLURAL:$2|尋找|尋找}}已註冊的使用者:$1",
-       "rcfilters-filtergroup-authorship": "編輯作者身份",
-       "rcfilters-filter-editsbyself-label": "您自己的編輯",
-       "rcfilters-filter-editsbyself-description": "您的編輯。",
-       "rcfilters-filter-editsbyother-label": "其他人的編輯",
-       "rcfilters-filter-editsbyother-description": "由其他使用者而非您所作的編輯。",
+       "rcfilters-filtergroup-authorship": "貢獻的作者",
+       "rcfilters-filter-editsbyself-label": "您的編輯",
+       "rcfilters-filter-editsbyself-description": "您的貢獻",
+       "rcfilters-filter-editsbyother-label": "其他人的更改",
+       "rcfilters-filter-editsbyother-description": "除了您以外的所有更改",
        "rcfilters-filtergroup-userExpLevel": "經驗等級 (僅限已註冊的使用者)",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "經歷過濾條件只會尋找已註冊的使用者,所以此過濾條件會與 \"未註冊\" 的過濾條件衝突。",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"未註冊\" 的過濾條件與一個或多個經歷過濾條件衝突,該過濾條件只會尋找已註冊使用者。衝突的過濾條件已在上方使用的過濾條件區域中標示。",
        "rcfilters-filter-user-experience-level-newcomer-label": "新手",
        "rcfilters-filter-user-experience-level-newcomer-description": "編輯數低於 10 次,活躍低於 4 天。",
        "rcfilters-filter-user-experience-level-learner-label": "初學者",
-       "rcfilters-filter-user-experience-level-learner-description": "æ´»èº\8dç\9a\84天æ\95¸ä»¥å\8f\8a編輯æ\95¸æ¯\94 \"æ\96°æ\89\8b\" å¤\9aï¼\8cä½\86æ¯\94 \"æ\9c\89ç¶\93é©\97ç\9a\84使ç\94¨è\80\85\" å°\91。",
+       "rcfilters-filter-user-experience-level-learner-description": "æ¯\94ã\80\8cæ\96°æ\89\8bã\80\8dè³\87æ·±ï¼\8cä½\86æ¯\94ã\80\8cæ\9c\89ç¶\93é©\97ç\9a\84使ç\94¨è\80\85ã\80\8dè³\87æ·º。",
        "rcfilters-filter-user-experience-level-experienced-label": "有經驗的使用者",
        "rcfilters-filter-user-experience-level-experienced-description": "活躍超過 30 天,編輯超過 500 次。",
        "rcfilters-filtergroup-automated": "自動化貢獻",
        "rcfilters-filter-minor-description": "作者已標示為次要的編輯。",
        "rcfilters-filter-major-label": "非次要編輯",
        "rcfilters-filter-major-description": "未標記為次要的編輯。",
+       "rcfilters-filtergroup-watchlist": "監視列表的頁面",
+       "rcfilters-filter-watchlist-watched-label": "監視列表上",
+       "rcfilters-filter-watchlist-watched-description": "在您監視列表的更改",
+       "rcfilters-filter-watchlist-watchednew-label": "新監視列表的更改",
+       "rcfilters-filter-watchlist-notwatched-label": "不在監視列表上",
        "rcfilters-filtergroup-changetype": "變更類型",
        "rcfilters-filter-pageedits-label": "頁面編輯",
-       "rcfilters-filter-pageedits-description": "對 Wiki 內容、討論、分類說明所做的編輯...",
+       "rcfilters-filter-pageedits-description": "對 Wiki 內容、討論、分類說明所做的編輯",
        "rcfilters-filter-newpages-label": "頁面建立",
        "rcfilters-filter-newpages-description": "建立新頁面的編輯。",
        "rcfilters-filter-categorization-label": "分類變更",
        "rcfilters-filter-categorization-description": "已加入到分類或從分類中移除的頁面記錄。",
-       "rcfilters-filter-logactions-label": "已記錄的動作",
+       "rcfilters-filter-logactions-label": "日誌動作",
        "rcfilters-filter-logactions-description": "管理動作、帳號建立、頁面刪除、上傳....",
        "rcfilters-hideminor-conflicts-typeofchange-global": "\"次要編輯\" 過濾條件與一個或多個變更類型過濾條件衝突,因為某些變更類型無法指定為 \"次要\"。衝突的過濾條件已在上方使用的過濾條件區域中標示。",
        "rcfilters-hideminor-conflicts-typeofchange": "某些變更類型無法指定為 \"次要\",所以此過濾條件與以下變更類型的過濾條件衝突:$1",
        "rcfilters-typeofchange-conflicts-hideminor": "此變更類型過濾條件與 \"次要編輯\" 過濾條件衝突,某些變更類型無法指定為 \"次要\"。",
+       "rcfilters-filtergroup-lastRevision": "最新版本",
+       "rcfilters-filter-lastrevision-label": "最新版本",
+       "rcfilters-filter-lastrevision-description": "對頁面最近做的更改。",
+       "rcfilters-filter-previousrevision-label": "早期版本",
        "rcnotefrom": "以下{{PLURAL:$5|為}}自 <strong>$3 $4</strong> 以來的變更 (最多顯示 <strong>$1</strong> 筆)。",
+       "rclistfromreset": "重設日期選擇",
        "rclistfrom": "顯示自 $3 $2 以來的新變更",
        "rcshowhideminor": "$1 次要編輯",
        "rcshowhideminor-show": "顯示",
        "rcshowhidecategorization": "$1 頁面分類",
        "rcshowhidecategorization-show": "顯示",
        "rcshowhidecategorization-hide": "隱藏",
-       "rclinks": "顯示最近 $2 天內的 $1 次變更。<br />$3",
+       "rclinks": "顯示最近 $2 天內的 $1 次變更。",
        "diff": "差異",
        "hist": "歷史",
        "hide": "隱藏",
        "uploadwarning": "上傳警告",
        "uploadwarning-text": "請修改以下的檔案描述並重試。",
        "savefile": "儲存檔案",
-       "uploaddisabled": "å·±停用上傳。",
-       "copyuploaddisabled": "å·±å\81\9cç\94¨使用 URL 上傳。",
+       "uploaddisabled": "å·²停用上傳。",
+       "copyuploaddisabled": "å·²å\81\9cæ­¢使用 URL 上傳。",
        "uploaddisabledtext": "已停用檔案上傳。",
        "php-uploaddisabledtext": "PHP 已停用檔案上傳。\n請檢查 file_uploads 設定。",
        "uploadscripted": "此檔案包含可能會被網頁瀏覽器錯誤執行的 HTML 或 Script。",
        "shared-repo-from": "來自 $1",
        "shared-repo": "共用檔案庫",
        "shared-repo-name-wikimediacommons": "維基共享資源",
-       "upload-disallowed-here": "無法覆蓋此檔案。",
+       "upload-disallowed-here": "無法覆蓋此檔案。",
        "filerevert": "還原 $1",
        "filerevert-legend": "還原檔案",
        "filerevert-intro": "您現正在還原檔案 <strong>[[Media:$1|$1]]</strong> 至 [$4 於 $2 $3 的版本]。",
        "ancientpages": "最舊頁面",
        "move": "移動",
        "movethispage": "移動此頁面",
-       "unusedimagestext": "下列為未被任何頁面使用的檔案。\n請注意,其它網站可能直接透過 URL 連結至檔案,所以這裡列出的檔案仍有可能被使用。",
+       "unusedimagestext": "下列為未被任何頁面使用的檔案。\n請注意,其它網站可能直接透過 URL 連結至檔案,所以這裡列出的檔案有可能仍在使用。",
        "unusedcategoriestext": "下列分類沒有被其它頁面或者分類所使用。",
        "notargettitle": "無目標",
        "notargettext": "您尚未指定目標頁面或使用者以進行此項操作。",
        "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": "è«\8bå\8f\83è\80\83 $1 æª¢è¦\96è\87ªæ\82¨ä¸\8a次檢è¦\96å¾\8cæ\89\80æ\9c\89ç\9a\84è®\8aæ\9b´ã\80\82",
-       "enotif_lastdiff": "è«\8bå\8f\83è\80\83 $1 æª¢è¦\96æ­¤è®\8aæ\9b´ã\80\82",
+       "enotif_lastvisited": "è¦\81檢è¦\96è\87ªæ\82¨ä¸\8a次檢è¦\96å¾\8cæ\89\80æ\9c\89ç\9a\84è®\8aæ\9b´è«\8bè¦\8b $1",
+       "enotif_lastdiff": "è¦\81檢è¦\96此次è®\8aæ\9b´è«\8bè¦\8b $1",
        "enotif_anon_editor": "匿名使用者 $1",
        "enotif_body": "$WATCHINGUSERNAME 您好,\n\n$PAGEINTRO $NEWPAGE\n\n編輯摘要:$PAGESUMMARY $PAGEMINOREDIT\n\n編輯者聯絡方式:\n信箱:$PAGEEDITOR_EMAIL\n本站:$PAGEEDITOR_WIKI\n\n在您檢視該頁面之前,接下來的變更系統不會再向您發出通知。您也可以在監視清單中重設您所有監視頁面的通知狀態。\n\n{{SITENAME}} 通知系統\n\n--\n更改您的電子郵件通知設定,請至:\n{{canonicalurl:{{#special:Preferences}}}}\n\n更改您的監視清單設定,請至:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\n從監視清單中刪除此頁面,請至:\n$UNWATCHURL\n\n回函並取得進一步協助:\n$HELPPAGE",
        "created": "建立了",
        "deleteprotected": "此頁面已受保護,您無法刪除此頁面。",
        "deleting-backlinks-warning": "<strong>警告:</strong>您正要刪除的頁面有[[Special:WhatLinksHere/{{FULLPAGENAME}}|其他頁面]]連結或引用。",
        "rollback": "復原編輯",
-       "rollbacklink": "原",
+       "rollbacklink": "原",
        "rollbacklinkcount": "還原 $1 次編輯",
        "rollbacklinkcount-morethan": "還原超過 $1 次{{PLURAL:$1|編輯}}",
        "rollbackfailed": "還原失敗",
        "undeleteextrahelp": "若要還原所有的頁面歷史,請取消勾選所有核選方塊並點選 <strong><em>{{int:undeletebtn}}</em></strong>。\n若要還原指定的頁面歷史,請勾選要還原的修訂核選方塊並點選 <strong><em>{{int:undeletebtn}}</em></strong>。",
        "undeleterevisions": "已刪除 $1 個修訂",
        "undeletehistory": "若您還原該頁面,所有的修訂歷史也會一併還原。\n若刪除之後已有使用相同名稱建立的新頁面,還原的修訂歷史會出現在此頁面之前的歷史中。",
-       "undeleterevdel": "若最新頁面或檔案修訂被部份刪除,將無法執行取消刪除的動作。\n這種情況您必須取勾選或取消隱藏已刪除的最新修訂。",
+       "undeleterevdel": "若最新頁面或檔案修訂被部份刪除,將無法執行取消刪除的動作。\n這種情況您必須取勾選或取消隱藏已刪除的最新修訂。",
        "undeletehistorynoadmin": "已刪除此頁面。\n以下摘要顯示刪除原因與刪除前所有編輯過此頁面的使用者詳細資料。\n這些已刪除的實際文字修訂僅對管理員可用。",
        "undelete-revision": "被 $3 刪除的 $1 (於 $4 $5) 修訂:",
        "undeleterevision-missing": "無效或遺失的修訂。\n您可能使用了錯誤的連結,或該修訂已從封存中還原或刪除。",
        "sp-contributions-uploads": "上傳",
        "sp-contributions-logs": "日誌",
        "sp-contributions-talk": "對話",
-       "sp-contributions-userrights": "使用者權限管理",
+       "sp-contributions-userrights": "{{GENDER:$1|使用者}}權限管理",
        "sp-contributions-blocked-notice": "此使用者目前已被封鎖。\n以下為最近的封鎖紀錄以供參考:",
        "sp-contributions-blocked-notice-anon": "此 IP 位址目前已被封鎖。\n以下為最近的封鎖記錄以供參考:",
        "sp-contributions-search": "搜尋貢獻",
        "sp-contributions-hideminor": "隱藏次要編輯",
        "sp-contributions-submit": "搜尋",
        "whatlinkshere": "連結至此的頁面",
-       "whatlinkshere-title": "連結至 \"$1\" 的頁面",
+       "whatlinkshere-title": "連結至「$1」的頁面",
        "whatlinkshere-page": "頁面:",
        "linkshere": "以下頁面連結至 <strong>[[:$1]]</strong>:",
        "nolinkshere": "沒有頁面連結至 <strong>[[:$1]]</strong>。",
        "unblocked-id": "已經移除 $1 的封鎖。",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] 已解除封鎖。",
        "blocklist": "已封鎖的使用者",
+       "autoblocklist": "自動封禁",
+       "autoblocklist-submit": "搜尋",
+       "autoblocklist-legend": "列出自動封鎖",
+       "autoblocklist-localblocks": "本地{{PLURAL:$1|自動封鎖|自動封鎖}}",
+       "autoblocklist-total-autoblocks": "自動封鎖總數:$1",
+       "autoblocklist-empty": "自動封鎖清單是空的。",
+       "autoblocklist-otherblocks": "其他{{PLURAL:$1|自動封鎖|自動封鎖}}",
        "ipblocklist": "已封鎖的使用者",
        "ipblocklist-legend": "搜尋已封鎖的使用者",
        "blocklist-userblocks": "隱藏帳號封鎖",
        "tooltip-pt-mycontris": "{{GENDER:|您的}}貢獻清單",
        "tooltip-pt-anoncontribs": "由此 IP 位址編輯的清單",
        "tooltip-pt-login": "建議您先登入,但並非必要。",
+       "tooltip-pt-login-private": "您需要登入才能使用此 wiki",
        "tooltip-pt-logout": "登出",
        "tooltip-pt-createaccount": "我們會鼓勵您建立一個帳號並且登入,即使這不是必要的動作。",
        "tooltip-ca-talk": "有關頁面內容的討論",
        "tooltip-ca-edit": "編輯此頁面",
-       "tooltip-ca-addsection": "開始一個新章節",
-       "tooltip-ca-viewsource": "此頁面已保護。您可檢視此頁面原始碼",
+       "tooltip-ca-addsection": "開始新章節",
+       "tooltip-ca-viewsource": "此頁面已保護。您可檢視此頁面原始碼",
        "tooltip-ca-history": "此頁面先前的修訂",
        "tooltip-ca-protect": "保護此頁面",
        "tooltip-ca-unprotect": "變更此頁面保護",
        "tooltip-watchlistedit-raw-submit": "更新監視清單",
        "tooltip-recreate": "無論是否被刪除,重新建立該頁面。",
        "tooltip-upload": "開始上傳",
-       "tooltip-rollback": "點選 \"還原\" 連結便可還原至上一位貢獻者對此頁面的編輯",
+       "tooltip-rollback": "點選「還原」連結便可還原至上一位貢獻者對此頁面的編輯",
        "tooltip-undo": "\"還原\" 可還原此編輯並以預覽模式開啟編輯表單,讓您可在摘要中加入原因。",
        "tooltip-preferences-save": "儲存偏好設定",
        "tooltip-summary": "請輸入簡短摘要",
        "anonymous": "{{SITENAME}} 的匿名{{PLURAL:$1|使用者}}",
        "siteuser": "{{SITENAME}} 使用者 $1",
        "anonuser": "{{SITENAME}} 匿名使用者 $1",
-       "lastmodifiedatby": "此頁面由 $3 於 $1 $2 做最後修改。",
+       "lastmodifiedatby": "此頁面由 $3 於 $1 $2 做最後編輯。",
        "othercontribs": "此頁面由 $1 所貢獻。",
        "others": "其他",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|使用者}} $1",
        "confirmrecreate": "在您編輯的同時,使用者 [[User:$1|$1]] ([[User talk:$1|對話]]) 刪除了此頁面,原因為:\n: <em>$2</em>\n請確認您是否真的要重新建立此頁面。",
        "confirmrecreate-noreason": "在您編輯的同時,使用者 [[User:$1|$1]] ([[User talk:$1|對話]]) 刪除了此頁面,請確認您是否真的要重新建立此頁面。",
        "recreate": "重新建立",
+       "confirm-purge-title": "刪除此頁",
        "confirm_purge_button": "確定",
        "confirm-purge-top": "要清除此頁面的快取嗎?",
        "confirm-purge-bottom": "清除頁面會清空頁面的快取記錄並強制顯示最近的頁面修訂。",
        "htmlform-user-not-valid": "<strong>$1</strong> 不是有效的使用者名稱。",
        "logentry-delete-delete": "$1 刪除頁面 $3",
        "logentry-delete-delete_redir": "$1 透過覆寫{{GENDER:$2|刪除了}}重新導向 $3",
-       "logentry-delete-restore": "$1 還原頁面 $3",
+       "logentry-delete-restore": "$1{{GENDER:$2|還原}}頁面 $3($4)",
+       "logentry-delete-restore-nocount": "$1 {{GENDER:$2|已還原}}頁面 $3",
+       "restore-count-revisions": "{{PLURAL:$1|1 修訂|$1 修訂}}",
+       "restore-count-files": "{{PLURAL:$1|1 檔案|$1 檔案}}",
        "logentry-delete-event": "$1 {{GENDER:$2|已更改}} $3 中 {{PLURAL:$5|1 筆日誌|$5 筆日誌}}的可見性:$4",
        "logentry-delete-revision": "$1 {{GENDER:$2|已更改}}頁面 $3 中 {{PLURAL:$5|1 筆修訂|$5 筆修訂}}的可見性:$4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|已變更}} $3 中日誌的可見性",
        "mw-widgets-titleinput-description-redirect": "重新導向至 $1",
        "mw-widgets-categoryselector-add-category-placeholder": "加入分類...",
        "mw-widgets-usersmultiselect-placeholder": "加入更多...",
+       "date-range-from": "開始日期:",
+       "date-range-to": "結束日期:",
        "sessionmanager-tie": "無法合併多個請求認証類型:$1。",
        "sessionprovider-generic": "$1 連線階段",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "以 cookie 為基礎的連線階段",
        "restrictionsfield-help": "一個 IP 位址或 CIDR 範圍一行,要開啟所有範圍可使用:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "修訂 $1",
        "pageid": "頁面 ID $1",
-       "rawhtml-notallowed": "&lt;html&gt; 標籤無法在一般頁面之外使用。"
+       "rawhtml-notallowed": "&lt;html&gt; 標籤無法在一般頁面之外使用。",
+       "gotointerwiki": "離開 {{SITENAME}}",
+       "gotointerwiki-invalid": "指定的標題無效。",
+       "gotointerwiki-external": "您正離開 {{SITENAME}} 並前往 [[$2]],這是另一個網站。\n\n'''[$1 繼續前往 $1]'''",
+       "undelete-cantedit": "您無法取消刪除此頁面,由於您並不被允許編輯此頁。",
+       "undelete-cantcreate": "您無法取消刪除此頁面,由於使用此名稱的頁面並不存在且您並不被允許建立此頁面。"
 }
index 795d706..e2845a5 100644 (file)
@@ -234,6 +234,7 @@ $magicWords = [
        'stylepath'                 => [ '0', 'مسار_الهيئة', 'STYLEPATH' ],
        'grammar'                   => [ '0', 'قواعد_اللغة:', 'GRAMMAR:' ],
        'gender'                    => [ '0', 'نوع:', 'GENDER:' ],
+       'bidi'                      => [ '0', 'ثا:', 'BIDI:' ],
        'notitleconvert'            => [ '0', '__لاتحويل_عنوان__', '__لاتع__', '__NOTITLECONVERT__', '__NOTC__' ],
        'nocontentconvert'          => [ '0', '__لاتحويل_محتوى__', '__لاتم__', '__NOCONTENTCONVERT__', '__NOCC__' ],
        'currentweek'               => [ '1', 'أسبوع_حالي', 'CURRENTWEEK' ],
@@ -290,6 +291,7 @@ $magicWords = [
        'numberingroup'             => [ '1', 'عدد_في_المجموعة', 'عدد_في_مجموعة', 'NUMBERINGROUP', 'NUMINGROUP' ],
        'staticredirect'            => [ '1', '__تحويلة_إستاتيكية__', '__تحويلة_ساكنة__', '__STATICREDIRECT__' ],
        'protectionlevel'           => [ '1', 'مستوى_الحماية', 'PROTECTIONLEVEL' ],
+       'protectionexpiry'          => [ '1', 'انتهاء_الحماية', 'PROTECTIONEXPIRY' ],
        'cascadingsources'          => [ '1', 'مصادر_مضمنة', 'CASCADINGSOURCES' ],
        'formatdate'                => [ '0', 'تهيئة_التاريخ', 'تهيئة_تاريخ', 'formatdate', 'dateformat' ],
        'url_path'                  => [ '0', 'مسار', 'PATH' ],
@@ -311,13 +313,17 @@ $specialPageAliases = [
        'AllMyUploads'              => [ 'كل_ملفاتي' ],
        'Allpages'                  => [ 'كل_الصفحات' ],
        'ApiHelp'                   => [ 'مساعدة_إيه_بي_آي' ],
+       'ApiSandbox'                => [ 'ملعب_إيه_بي_آي' ],
        'Ancientpages'              => [ 'صفحات_قديمة' ],
        'Badtitle'                  => [ 'عنوان_سيئ' ],
        'Blankpage'                 => [ 'صفحة_فارغة' ],
        'Block'                     => [ 'منع', 'منع_أيبي', 'منع_مستخدم' ],
        'Booksources'               => [ 'مصادر_كتاب' ],
+       'BotPasswords'              => [ 'كلمات_سر_البوت' ],
        'BrokenRedirects'           => [ 'تحويلات_مكسورة' ],
        'Categories'                => [ 'تصنيفات' ],
+       'ChangeContentModel'        => [ 'تغيير_موديل_المحتوى' ],
+       'ChangeCredentials'         => [ 'تغيير_الاعتمادات' ],
        'ChangeEmail'               => [ 'تغيير_البريد' ],
        'ChangePassword'            => [ 'تغيير_كلمة_السر', 'ضبط_كلمة_السر' ],
        'ComparePages'              => [ 'مقارنة_الصفحات' ],
@@ -328,6 +334,7 @@ $specialPageAliases = [
        'DeletedContributions'      => [ 'مساهمات_محذوفة' ],
        'Diff'                      => [ 'فرق' ],
        'DoubleRedirects'           => [ 'تحويلات_مزدوجة' ],
+       'EditTags'                  => [ 'تعديل_الوسوم' ],
        'EditWatchlist'             => [ 'تعديل_قائمة_المراقبة' ],
        'Emailuser'                 => [ 'مراسلة_المستخدم' ],
        'ExpandTemplates'           => [ 'فرد_القوالب' ],
@@ -340,10 +347,12 @@ $specialPageAliases = [
        'JavaScriptTest'            => [ 'اختبار_جافا_سكريبت' ],
        'BlockList'                 => [ 'قائمة_المنع', 'عرض_المنع', 'قائمة_منع_أيبي' ],
        'LinkSearch'                => [ 'بحث_الوصلات' ],
+       'LinkAccounts'              => [ 'وصل_الحسابات' ],
        'Listadmins'                => [ 'عرض_الإداريين' ],
        'Listbots'                  => [ 'عرض_البوتات' ],
        'Listfiles'                 => [ 'عرض_الملفات', 'قائمة_الملفات', 'قائمة_الصور' ],
        'Listgrouprights'           => [ 'عرض_صلاحيات_المجموعات', 'صلاحيات_مجموعات_المستخدمين' ],
+       'Listgrants'                => [ 'عرض_المنح' ],
        'Listredirects'             => [ 'عرض_التحويلات' ],
        'ListDuplicatedFiles'       => [ 'عرض_الملفات_المكررة', 'عرض_تكرار_الملفات' ],
        'Listusers'                 => [ 'عرض_المستخدمين', 'قائمة_المستخدمين' ],
@@ -384,6 +393,7 @@ $specialPageAliases = [
        'Recentchanges'             => [ 'أحدث_التغييرات' ],
        'Recentchangeslinked'       => [ 'أحدث_التغييرات_الموصولة', 'تغييرات_مرتبطة' ],
        'Redirect'                  => [ 'تحويل' ],
+       'RemoveCredentials'         => [ 'إزالة_الاعتمادات' ],
        'ResetTokens'               => [ 'إعادة_ضبط_المفاتيح' ],
        'Revisiondelete'            => [ 'حذف_مراجعة', 'حذف_نسخة' ],
        'RunJobs'                   => [ 'تشغيل_الوظائف' ],
@@ -399,6 +409,7 @@ $specialPageAliases = [
        'Uncategorizedpages'        => [ 'صفحات_غير_مصنفة' ],
        'Uncategorizedtemplates'    => [ 'قوالب_غير_مصنفة' ],
        'Undelete'                  => [ 'استرجاع' ],
+       'UnlinkAccounts'            => [ 'فك_الحسابات' ],
        'Unlockdb'                  => [ 'فتح_قب' ],
        'Unusedcategories'          => [ 'تصنيفات_غير_مستخدمة' ],
        'Unusedimages'              => [ 'ملفات_غير_مستخدمة', 'صور_غير_مستخدمة' ],
index 8a43998..bb99553 100644 (file)
@@ -42,13 +42,18 @@ $specialPageAliases = [
        'Allmessages'               => [ 'كل_الرسايل' ],
        'AllMyUploads'              => [ 'كل_مرفوعاتى', 'كل_فايلاتى' ],
        'Allpages'                  => [ 'كل_الصفح' ],
+       'ApiHelp'                   => [ 'مساعده_Api' ],
+       'ApiSandbox'                => [ 'ملعب_Api' ],
        'Ancientpages'              => [ 'صفح_قديمه' ],
        'Badtitle'                  => [ 'عنوان_وحش' ],
        'Blankpage'                 => [ 'صفحه_فارضيه' ],
        'Block'                     => [ 'بلوك', 'بلوك_IP', 'بلوك_يوزر' ],
        'Booksources'               => [ 'مصادر_كتاب' ],
+       'BotPasswords'              => [ 'باسووردات_البوت' ],
        'BrokenRedirects'           => [ 'تحويلات_مكسوره' ],
        'Categories'                => [ 'تصانيف' ],
+       'ChangeContentModel'        => [ 'تغيير_موديل_المحتوى' ],
+       'ChangeCredentials'         => [ 'تغيير_الكريدينشيال' ],
        'ChangeEmail'               => [ 'تغيير_الميل' ],
        'ChangePassword'            => [ 'تغيير_الپاسوورد', 'ظبط_الپاسوورد' ],
        'ComparePages'              => [ 'مقارنه_الصفحات' ],
@@ -59,6 +64,7 @@ $specialPageAliases = [
        'DeletedContributions'      => [ 'مساهمات_ممسوحه' ],
        'Diff'                      => [ 'فرق' ],
        'DoubleRedirects'           => [ 'تحويلات_دوبل' ],
+       'EditTags'                  => [ 'تغيير_التاجز' ],
        'EditWatchlist'             => [ 'تغيير_قايمه_المراقبه' ],
        'Emailuser'                 => [ 'ابعت_ايميل_لليوزر' ],
        'ExpandTemplates'           => [ 'فرد-القوالب' ],
@@ -71,16 +77,20 @@ $specialPageAliases = [
        'JavaScriptTest'            => [ 'تجربه_جافا_سكريبت' ],
        'BlockList'                 => [ 'ليستة_البلوك', 'بيّن_البلوك', 'ليستة_بلوك_IP' ],
        'LinkSearch'                => [ 'تدوير_اللينكات' ],
+       'LinkAccounts'              => [ 'توصيل_الحسابات' ],
        'Listadmins'                => [ 'عرض_الاداريين' ],
        'Listbots'                  => [ 'عرض_البوتات' ],
        'Listfiles'                 => [ 'عرض_الفايلات', 'ليستة_الفايلات', 'ليستة_الصور' ],
        'Listgrouprights'           => [ 'عرض_حقوق_الجروپات' ],
+       'Listgrants'                => [ 'عرض_المنح' ],
        'Listredirects'             => [ 'عرض_التحويلات' ],
+       'ListDuplicatedFiles'       => [ 'عرض_الفايلات_المتكرره' ],
        'Listusers'                 => [ 'عرض_اليوزرات', 'ليستة_اليوزرات' ],
        'Lockdb'                    => [ 'قفل_قب' ],
        'Log'                       => [ 'سجل', 'سجلات' ],
        'Lonelypages'               => [ 'صفح_وحدانيه', 'صفح_يتيمه' ],
        'Longpages'                 => [ 'صفح_طويله' ],
+       'MediaStatistics'           => [ 'احصائيات_الميديا' ],
        'MergeHistory'              => [ 'دمج_التاريخ' ],
        'MIMEsearch'                => [ 'تدوير_MIME' ],
        'Mostcategories'            => [ 'اكتر_تصانيف' ],
@@ -113,6 +123,7 @@ $specialPageAliases = [
        'Recentchanges'             => [ 'اخر_تعديلات' ],
        'Recentchangeslinked'       => [ 'اجدد_التغييرات_اللى_معمول_ليها_لينك', 'تغييرات_مرتبطه' ],
        'Redirect'                  => [ 'تحويل' ],
+       'RemoveCredentials'         => [ 'مسح_الكريدينشيال' ],
        'ResetTokens'               => [ 'ضبط_المفاتيح' ],
        'Revisiondelete'            => [ 'مسح_نسخه' ],
        'RunJobs'                   => [ 'تشغيل_الوظايف' ],
@@ -128,6 +139,7 @@ $specialPageAliases = [
        'Uncategorizedpages'        => [ 'صفح_مش_متصنفه' ],
        'Uncategorizedtemplates'    => [ 'قوالب_مش_متصنفه' ],
        'Undelete'                  => [ 'استرجاع' ],
+       'UnlinkAccounts'            => [ 'فك_الحسابات' ],
        'Unlockdb'                  => [ 'فتح_قب' ],
        'Unusedcategories'          => [ 'تصانيف_مش_مستعمله' ],
        'Unusedimages'              => [ 'فايلات_مش_مستعمله', 'صور_مش_مستعمله' ],
index 69bcaa5..1e986ff 100644 (file)
@@ -9,3 +9,22 @@
  */
 
 $fallback = 'fr';
+
+$namespaceNames = [
+       NS_MEDIA            => 'Tipatcimoctakewin',
+       NS_SPECIAL          => 'Kotakahi',
+       NS_TALK             => 'Ke_ici_aimihitonaniwok',
+       NS_USER             => 'Ka_notcitatc',
+       NS_USER_TALK        => 'Ke_ici_aimihitonaniwok_notcita_iriniw',
+       NS_PROJECT_TALK     => 'Ke_ici_aimihitonaniwok_$1',
+       NS_FILE             => 'Natisinahikaniwoc',
+       NS_FILE_TALK        => 'Ke_ici_aimihitonaniwok_natisinihikaniwoc',
+       NS_MEDIAWIKI        => 'MediaWiki',
+       NS_MEDIAWIKI_TALK   => 'Ke_ici_aimihitonaniwok_MediaWiki',
+       NS_TEMPLATE         => 'Tapapitcikesinihikan',
+       NS_TEMPLATE_TALK    => 'Ke_ici_arimotcikatek_tapapitcikesinihikan',
+       NS_HELP             => 'Witcihikoiin',
+       NS_HELP_TALK        => 'Ke_ici_aimihitonaniwok_witcihewinik',
+       NS_CATEGORY         => 'Tipanictawin',
+       NS_CATEGORY_TALK    => 'Ke_ici_aimihitonaniwok_tipanictawin',
+];
index b38287e..3ccd3c4 100644 (file)
@@ -129,20 +129,79 @@ $specialPageAliases = [
 
 $magicWords = [
        'redirect'                  => [ '0', '#REDIRECCIÓ', '#REDIRECCIO', '#REDIRECT' ],
-       'numberofarticles'          => [ '1', 'NOMBRED\'ARTICLES', 'NUMBEROFARTICLES' ],
-       'numberoffiles'             => [ '1', 'NOMBRED\'ARXIUS', 'NUMBEROFFILES' ],
-       'numberofusers'             => [ '1', 'NOMBRED\'USUARIS', 'NUMBEROFUSERS' ],
-       'numberofedits'             => [ '1', 'NOMBRED\'EDICIONS', 'NUMBEROFEDITS' ],
-       'pagename'                  => [ '1', 'NOMDELAPLANA', 'PAGENAME' ],
+       'notoc'                     => [ '0', '__CAPTAULA__', '__NOTAULA__', '__NOTOC__' ],
+       'nogallery'                 => [ '0', '__CAPGALERIA__', '__NOGALERIA__', '__NOGALLERY__' ],
+       'forcetoc'                  => [ '0', '__FORÇATAULA__', '__FORCETOC__' ],
+       'toc'                       => [ '0', '__TAULA__', '__RESUM__', '__TDM__', '__TOC__' ],
+       'noeditsection'             => [ '0', '__SECCIÓNOEDITABLE__', '__SECCIONOEDITABLE__', '__NOEDITSECTION__' ],
+       'currentmonth'              => [ '1', 'MESACTUAL', 'CURRENTMONTH', 'CURRENTMONTH2' ],
+       'currentmonthname'          => [ '1', 'NOMMESACTUAL', 'CURRENTMONTHNAME' ],
+       'currentmonthnamegen'       => [ '1', 'NOMGENMESACTUAL', 'CURRENTMONTHNAMEGEN' ],
+       'currentmonthabbrev'        => [ '1', 'ABREVMESACTUAL', 'CURRENTMONTHABBREV' ],
+       'currentday'                => [ '1', 'DIAACTUAL', 'CURRENTDAY' ],
+       'currentday2'               => [ '1', 'DIAACTUAL2', 'CURRENTDAY2' ],
+       'currentdayname'            => [ '1', 'NOMDIAACTUAL', 'CURRENTDAYNAME' ],
+       'currentyear'               => [ '1', 'ANYACTUAL', 'CURRENTYEAR' ],
+       'currenttime'               => [ '1', 'HORARICTUAL', 'CURRENTTIME' ],
+       'currenthour'               => [ '1', 'HORAACTUAL', 'CURRENTHOUR' ],
+       'localmonth'                => [ '1', 'MESLOCAL', 'LOCALMONTH', 'LOCALMONTH2' ],
+       'localmonthname'            => [ '1', 'NOMMESLOCAL', 'LOCALMONTHNAME' ],
+       'localmonthnamegen'         => [ '1', 'NOMGENMESLOCAL', 'LOCALMONTHNAMEGEN' ],
+       'localmonthabbrev'          => [ '1', 'ABREVMESLOCAL', 'LOCALMONTHABBREV' ],
+       'localday'                  => [ '1', 'DIALOCAL', 'LOCALDAY' ],
+       'localday2'                 => [ '1', 'DIALOCAL2', 'LOCALDAY2' ],
+       'localdayname'              => [ '1', 'NOMDIALOCAL', 'LOCALDAYNAME' ],
+       'localyear'                 => [ '1', 'ANYLOCAL', 'LOCALYEAR' ],
+       'localtime'                 => [ '1', 'HORARILOCAL', 'LOCALTIME' ],
+       'localhour'                 => [ '1', 'HORALOCAL', 'LOCALHOUR' ],
+       'numberofarticles'          => [ '1', 'NOMBREARTICLES', 'NOMBRED\'ARTICLES', 'NUMBEROFARTICLES' ],
+       'numberoffiles'             => [ '1', 'NOMBREFITXERS', 'NOMBRED\'ARXIUS', 'NUMBEROFFILES' ],
+       'numberofusers'             => [ '1', 'NOMBREUSUARIS', 'NOMBRED\'USUARIS', 'NUMBEROFUSERS' ],
+       'numberofedits'             => [ '1', 'NOMBREEDICIONS', 'NOMBRED\'EDICIONS', 'NUMBEROFEDITS' ],
+       'pagename'                  => [ '1', 'NOMPÀGINA', 'NOMPAGINA', 'NOMDELAPLANA', 'PAGENAME' ],
+       'img_thumbnail'             => [ '1', 'miniatura', 'thumb', 'thumbnail' ],
+       'img_manualthumb'           => [ '1', 'miniatura=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'dreta', 'right' ],
        'img_left'                  => [ '1', 'esquerra', 'left' ],
+       'img_none'                  => [ '1', 'cap', 'none' ],
+       'img_width'                 => [ '1', '$1px' ],
+       'img_center'                => [ '1', 'center', 'centre' ],
+       'img_framed'                => [ '1', 'marc', 'frame', 'framed', 'enframed' ],
+       'img_frameless'             => [ '1', 'sense marc', 'frameless' ],
+       'img_lang'                  => [ '1', 'lang=$1', 'llengua=$1', 'idioma=$1' ],
+       'img_page'                  => [ '1', 'pàgina=$1', 'pàgina $1', 'page=$1', 'page $1' ],
+       'img_upright'               => [ '1', 'redreçat', 'upright', 'redreçat=$1', 'upright=$1', 'redreçat $1', 'upright $1' ],
        'img_border'                => [ '1', 'vora', 'border' ],
+       'img_baseline'              => [ '1', 'línia de base', 'baseline' ],
+       'img_sub'                   => [ '1', 'sub' ],
+       'img_super'                 => [ '1', 'super', 'sup' ],
+       'img_top'                   => [ '1', 'dalt', 'top' ],
+       'img_text_top'              => [ '1', 'dalt-text', 'text-top' ],
+       'img_middle'                => [ '1', 'mitjà', 'middle' ],
+       'img_bottom'                => [ '1', 'baix', 'bottom' ],
+       'img_text_bottom'           => [ '1', 'baix-text', 'text-bottom' ],
        'img_link'                  => [ '1', 'enllaç=$1', 'link=$1' ],
-       'displaytitle'              => [ '1', 'TÍTOL', 'DISPLAYTITLE' ],
-       'language'                  => [ '0', '#IDIOMA:', '#LANGUAGE:' ],
+       'img_alt'                   => [ '1', 'alt=$1' ],
+       'img_class'                 => [ '1', 'class=$1' ],
+       'displaytitle'              => [ '1', 'TÍTOL', 'TITOL', 'DISPLAYTITLE' ],
+       'currentversion'            => [ '1', 'VERSIÓACTUAL', 'VERSIOACTUAL', 'CURRENTVERSION' ],
+       'language'                  => [ '0', '#IDIOMA:', '#LLENGUA:', '#LANGUAGE:' ],
+       'contentlanguage'           => [ '1', 'IDIOMACONTINGUT', 'LLENGUACONTINGUT', 'CONTENTLANGUAGE', 'CONTENTLANG' ],
+       'pagesinnamespace'          => [ '1', 'PÀGINESENESPAINOMS:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ],
+       'numberofadmins'            => [ '1', 'NOMBREADMINS', 'NUMBEROFADMINS' ],
+       'formatnum'                 => [ '0', 'FORMATNOMBRE', 'FORMATNUM' ],
+       'padleft'                   => [ '0', 'SEPARACIÓESQUERRA', 'SEPARACIOESQUERRA', 'PADLEFT' ],
+       'padright'                  => [ '0', 'SEPARACIÓDRETA', 'SEPARACIODRETA', 'PADRIGHT' ],
        'special'                   => [ '0', 'especial', 'special' ],
        'defaultsort'               => [ '1', 'ORDENA:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ],
-       'pagesize'                  => [ '1', 'MIDADELAPLANA', 'PAGESIZE' ],
+       'filepath'                  => [ '0', 'CAMÍ:', 'CAMI:', 'FILEPATH:' ],
+       'tag'                       => [ '0', 'etiqueta', 'marcador', 'tag' ],
+       'hiddencat'                 => [ '1', '__CATAMAGADA__', '__HIDDENCAT__' ],
+       'pagesincategory'           => [ '1', 'PÀGINESENCATEGORIA', 'PAGINESENCATEGORIA', 'PAGINESENCAT', 'PAGESINCATEGORY', 'PAGESINCAT' ],
+       'pagesize'                  => [ '1', 'MIDAPÀGINA', 'MIDAPAGINA', 'MIDADELAPLANA', 'PAGESIZE' ],
+       'noindex'                   => [ '1', '__CAPINDEX__', '__NOINDEX__' ],
+       'staticredirect'            => [ '1', '__REDIRECCIÓESTATICA__', '__REDIRECCIOESTATICA__', '__STATICREDIRECT__' ],
+       'protectionlevel'           => [ '1', 'NIVELLPROTECCIÓ', 'NIVELLPROTECCIO', 'PROTECTIONLEVEL' ],
 ];
 
 $separatorTransformTable = [ ',' => '.', '.' => ',' ];
index 160f57d..60e08cc 100644 (file)
@@ -217,8 +217,8 @@ $magicWords = [
        'img_framed'                => [ '1', 'gerahmt', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'rahmenlos', 'frameless' ],
        'img_lang'                  => [ '1', 'sprache=$1', 'lang=$1' ],
-       'img_page'                  => [ '1', 'seite=$1', 'seite_$1', 'page=$1', 'page $1' ],
-       'img_upright'               => [ '1', 'hochkant', 'hochkant=$1', 'hochkant_$1', 'upright', 'upright=$1', 'upright $1' ],
+       'img_page'                  => [ '1', 'seite=$1', 'seite $1', 'seite_$1', 'page=$1', 'page $1' ],
+       'img_upright'               => [ '1', 'hochkant', 'hochkant=$1', 'hochkant $1', 'hochkant_$1', 'upright', 'upright=$1', 'upright $1' ],
        'img_border'                => [ '1', 'rand', 'border' ],
        'img_baseline'              => [ '1', 'grundlinie', 'baseline' ],
        'img_sub'                   => [ '1', 'tief', 'tiefgestellt', 'sub' ],
diff --git a/languages/messages/MessagesDin.php b/languages/messages/MessagesDin.php
new file mode 100644 (file)
index 0000000..8b3d09d
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+/** Dinka (Thuɔŋjäŋ)
+ *
+ * To improve a translation please visit https://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ */
+
+$namespaceNames = [
+       NS_MEDIA            => 'Ciɛl',
+       NS_SPECIAL          => 'Këcëweek',
+       NS_TALK             => 'Jam',
+       NS_USER             => 'Dulooi',
+       NS_USER_TALK        => 'Jam_kekë_dulooi',
+       NS_PROJECT_TALK     => 'Jam_wɛ̈t_ë_$1',
+       NS_FILE             => 'Apamduööt',
+       NS_FILE_TALK        => 'Jam_wɛ̈t_ë_apamduööt',
+       NS_MEDIAWIKI        => 'MediaWiki',
+       NS_MEDIAWIKI_TALK   => 'Jam_wɛ̈t_ë_MediaWiki',
+       NS_TEMPLATE         => 'Macuëc',
+       NS_TEMPLATE_TALK    => 'Jam_wɛ̈t_ë_macuëc',
+       NS_HELP             => 'Kuɔny',
+       NS_HELP_TALK        => 'Jam_wɛ̈t_ë_kuɔny',
+       NS_CATEGORY         => 'Bekätakthook',
+       NS_CATEGORY_TALK    => 'Jam_wɛ̈t_ë_bekätakthook',
+];
+
+$linkTrail = '/^([äëɛɛ̈éɣïŋöɔɔ̈óa-z]+)(.*)$/sDu';
index ac9f1b7..17b00b7 100644 (file)
@@ -466,6 +466,7 @@ $specialPageAliases = [
        'Newimages'                 => [ 'NewFiles', 'NewImages' ],
        'Newpages'                  => [ 'NewPages' ],
        'PagesWithProp'             => [ 'PagesWithProp', 'Pageswithprop', 'PagesByProp', 'Pagesbyprop' ],
+       'PageData'                  => [ 'Pagedata' ],
        'PageLanguage'              => [ 'PageLanguage' ],
        'PasswordReset'             => [ 'PasswordReset' ],
        'PermanentLink'             => [ 'PermanentLink', 'PermaLink' ],
index 01bd00c..d7a780e 100644 (file)
@@ -44,7 +44,7 @@ $specialPageAliases = [
        'Allpages'                  => [ 'Todas', 'Todas_las_páginas' ],
        'Ancientpages'              => [ 'PáginasAntiguas', 'Páginas_antiguas' ],
        'Badtitle'                  => [ 'Título_incorrecto' ],
-       'Blankpage'                 => [ 'Blanquear_página', 'PáginaEnBlanco', 'BlanquearPágina', 'Página_en_blanco' ],
+       'Blankpage'                 => [ 'PáginaEnBlanco', 'Blanquear_página', 'BlanquearPágina', 'Página_en_blanco' ],
        'Block'                     => [ 'Bloquear' ],
        'Booksources'               => [ 'FuentesDeLibros', 'Fuentes_de_libros' ],
        'BrokenRedirects'           => [ 'RedireccionesRotas', 'Redirecciones_rotas' ],
diff --git a/languages/messages/MessagesKbp.php b/languages/messages/MessagesKbp.php
new file mode 100644 (file)
index 0000000..c473933
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+/** Kabiyè (Kabɩyɛ)
+ *
+ * To improve a translation please visit https://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ */
+
+$fallback = 'fr';
index 3bafe48..97b0496 100644 (file)
@@ -21,7 +21,6 @@
  * @author Saiddzone
  * @author Thanlwin
  * @author Thitaung
- * @author Umherirrender
  * @author Zawthet
  * @author ကိုရာဝီ
  */
index 5db6ce4..26f1443 100644 (file)
@@ -8,7 +8,6 @@
  *
  * @author Ahmed-Najib-Biabani-Ibrahimkhel
  * @author Kaganer
- * @author Umherirrender
  */
 
 $rtl = true;
index 480d94f..d851e1c 100644 (file)
@@ -51,6 +51,7 @@
  * @author Дар'я Козлова
  * @author Максим Підліснюк
  * @author Тест
+ * @author Eugene Gvozdetsky
  */
 
 $separatorTransformTable = [
@@ -102,6 +103,11 @@ $namespaceAliases = [
        'Обсуждение_изображения' => NS_FILE_TALK,
 ];
 
+$namespaceGenderAliases = [
+       NS_USER      => [ 'male' => 'Користувач', 'female' => 'Користувачка' ],
+       NS_USER_TALK => [ 'male' => 'Обговорення_користувача', 'female' => 'Обговорення_користувачки' ],
+];
+
 $dateFormats = [
        'mdy time' => 'H:i',
        'mdy date' => 'xg j, Y',
index e5ba411..478a0c4 100644 (file)
@@ -25,6 +25,8 @@
 require_once __DIR__ . '/../includes/PHPVersionCheck.php';
 wfEntryPointCheck( 'cli' );
 
+use Wikimedia\Rdbms\DBReplicationWaitError;
+
 /**
  * @defgroup MaintenanceArchive Maintenance archives
  * @ingroup Maintenance
old mode 100755 (executable)
new mode 100644 (file)
index 265800e..6a2d3bf 100644 (file)
@@ -40,6 +40,7 @@
  * @ingroup Maintenance
  */
 class BaseDump {
+       /** @var XMLReader */
        protected $reader = null;
        protected $atEnd = false;
        protected $atPageEnd = false;
index 5fab082..0039d20 100644 (file)
@@ -34,67 +34,104 @@ require_once __DIR__ . '/../Maintenance.php';
  * @ingroup Benchmark
  */
 abstract class Benchmarker extends Maintenance {
-       private $results;
+       protected $defaultCount = 100;
 
        public function __construct() {
                parent::__construct();
-               $this->addOption( 'count', "How many times to run a benchmark", false, true );
+               $this->addOption( 'count', 'How many times to run a benchmark', false, true );
        }
 
        public function bench( array $benchs ) {
-               $bench_number = 0;
-               $count = $this->getOption( 'count', 100 );
+               $this->startBench();
+               $count = $this->getOption( 'count', $this->defaultCount );
+               foreach ( $benchs as $key => $bench ) {
+                       // Shortcut for simple functions
+                       if ( is_callable( $bench ) ) {
+                               $bench = [ 'function' => $bench ];
+                       }
 
-               foreach ( $benchs as $bench ) {
-                       // handle empty args
-                       if ( !array_key_exists( 'args', $bench ) ) {
+                       // Default to no arguments
+                       if ( !isset( $bench['args'] ) ) {
                                $bench['args'] = [];
                        }
 
-                       $bench_number++;
-                       $start = microtime( true );
+                       // Optional setup called outside time measure
+                       if ( isset( $bench['setup'] ) ) {
+                               call_user_func( $bench['setup'] );
+                       }
+
+                       // Run benchmarks
+                       $times = [];
                        for ( $i = 0; $i < $count; $i++ ) {
+                               $t = microtime( true );
                                call_user_func_array( $bench['function'], $bench['args'] );
+                               $t = ( microtime( true ) - $t ) * 1000;
+                               $times[] = $t;
+                       }
+
+                       // Collect metrics
+                       sort( $times, SORT_NUMERIC );
+                       $min = $times[0];
+                       $max = end( $times );
+                       if ( $count % 2 ) {
+                               $median = $times[ ( $count - 1 ) / 2 ];
+                       } else {
+                               $median = ( $times[$count / 2] + $times[$count / 2 - 1] ) / 2;
                        }
-                       $delta = microtime( true ) - $start;
+                       $total = array_sum( $times );
+                       $mean = $total / $count;
 
-                       // function passed as a callback
-                       if ( is_array( $bench['function'] ) ) {
-                               $ret = get_class( $bench['function'][0] ) . '->' . $bench['function'][1];
-                               $bench['function'] = $ret;
+                       // Name defaults to name of called function
+                       if ( is_string( $key ) ) {
+                               $name = $key;
+                       } else {
+                               if ( is_array( $bench['function'] ) ) {
+                                       $name = get_class( $bench['function'][0] ) . '::' . $bench['function'][1];
+                               } else {
+                                       $name = strval( $bench['function'] );
+                               }
+                               $name = sprintf( "%s(%s)",
+                                       $name,
+                                       implode( ', ', $bench['args'] )
+                               );
                        }
 
-                       $this->results[$bench_number] = [
-                               'function' => $bench['function'],
-                               'arguments' => $bench['args'],
+                       $this->addResult( [
+                               'name' => $name,
                                'count' => $count,
-                               'delta' => $delta,
-                               'average' => $delta / $count,
-                       ];
+                               'total' => $total,
+                               'min' => $min,
+                               'median' => $median,
+                               'mean' => $mean,
+                               'max' => $max,
+                       ] );
                }
        }
 
-       public function getFormattedResults() {
-               $ret = sprintf( "Running PHP version %s (%s) on %s %s %s\n\n",
-                       phpversion(),
-                       php_uname( 'm' ),
-                       php_uname( 's' ),
-                       php_uname( 'r' ),
-                       php_uname( 'v' )
+       public function startBench() {
+               $this->output(
+                       sprintf( "Running PHP version %s (%s) on %s %s %s\n\n",
+                               phpversion(),
+                               php_uname( 'm' ),
+                               php_uname( 's' ),
+                               php_uname( 'r' ),
+                               php_uname( 'v' )
+                       )
                );
-               foreach ( $this->results as $res ) {
-                       // show function with args
-                       $ret .= sprintf( "%s times: function %s(%s) :\n",
-                               $res['count'],
-                               $res['function'],
-                               implode( ', ', $res['arguments'] )
-                       );
-                       $ret .= sprintf( "   %6.2fms (%6.2fms each)\n",
-                               $res['delta'] * 1000,
-                               $res['average'] * 1000
+       }
+
+       public function addResult( $res ) {
+               $ret = sprintf( "%s\n  %' 6s: %d\n",
+                       $res['name'],
+                       'times',
+                       $res['count']
+               );
+               foreach ( [ 'total', 'min', 'median', 'mean', 'max' ] as $metric ) {
+                       $ret .= sprintf( "  %' 6s: %6.2fms\n",
+                               $metric,
+                               $res[$metric]
                        );
                }
-
-               return $ret;
+               $this->output( "$ret\n" );
        }
 }
index c021abd..27da9de 100644 (file)
@@ -5,3 +5,6 @@ To get somehow accurate result, you might want to bound the PHP process
 to a specific CPU with `taskset` and raise its priority with `nice`. Example:
 
  $ taskset 1 nice -n-10 php bench_wfIsWindows.php
+
+australia-untidy.html.gz contains representative input text for
+benchmarkTidy.php. It needs to be decompressed before use.
diff --git a/maintenance/benchmarks/australia-untidy.html.gz b/maintenance/benchmarks/australia-untidy.html.gz
new file mode 100644 (file)
index 0000000..148481d
Binary files /dev/null and b/maintenance/benchmarks/australia-untidy.html.gz differ
index 5b64bee..0e3cd73 100644 (file)
@@ -42,20 +42,19 @@ class BenchHttpHttps extends Benchmarker {
                        [ 'function' => [ $this, 'getHTTP' ] ],
                        [ 'function' => [ $this, 'getHTTPS' ] ],
                ] );
-               print $this->getFormattedResults();
        }
 
-       static function doRequest( $proto ) {
+       private function doRequest( $proto ) {
                Http::get( "$proto://localhost/", [], __METHOD__ );
        }
 
        // bench function 1
-       function getHTTP() {
+       protected function getHTTP() {
                $this->doRequest( 'http' );
        }
 
        // bench function 2
-       function getHTTPS() {
+       protected function getHTTPS() {
                $this->doRequest( 'https' );
        }
 }
index c8a9055..86bcc8a 100644 (file)
@@ -60,13 +60,11 @@ class BenchWikimediaBaseConvert extends Benchmarker {
                                'args' => [ $number, $inbase, $outbase, 0, true, 'gmp' ]
                        ],
                ] );
-
-               $this->output( $this->getFormattedResults() );
        }
 
        protected static function makeRandomNumber( $base, $length ) {
-               $baseChars = "0123456789abcdefghijklmnopqrstuvwxyz";
-               $res = "";
+               $baseChars = '0123456789abcdefghijklmnopqrstuvwxyz';
+               $res = '';
                for ( $i = 0; $i < $length; $i++ ) {
                        $res .= $baseChars[mt_rand( 0, $base - 1 )];
                }
index 2369d99..0a999ec 100644 (file)
@@ -32,6 +32,8 @@ use Wikimedia\Rdbms\IMaintainableDatabase;
  * @ingroup Benchmark
  */
 class BenchmarkDeleteTruncate extends Benchmarker {
+       protected $defaultCount = 10;
+
        public function __construct() {
                parent::__construct();
                $this->addDescription( 'Benchmarks SQL DELETE vs SQL TRUNCATE.' );
@@ -46,27 +48,24 @@ class BenchmarkDeleteTruncate extends Benchmarker {
   text varbinary(255) NOT NULL
 );" );
 
-               $this->insertData( $dbw );
-
-               $start = microtime( true );
-
-               $this->delete( $dbw );
-
-               $end = microtime( true );
-
-               echo "Delete: " . sprintf( "%6.3fms", ( $end - $start ) * 1000 );
-               echo "\r\n";
-
-               $this->insertData( $dbw );
-
-               $start = microtime( true );
-
-               $this->truncate( $dbw );
-
-               $end = microtime( true );
-
-               echo "Truncate: " . sprintf( "%6.3fms", ( $end - $start ) * 1000 );
-               echo "\r\n";
+               $this->bench( [
+                       'Delete' => [
+                               'setup' => function () use ( $dbw ) {
+                                       $this->insertData( $dbw );
+                               },
+                               'function' => function () use ( $dbw ) {
+                                       $this->delete( $dbw );
+                               }
+                       ],
+                       'Truncate' => [
+                               'setup' => function () use ( $dbw ) {
+                                       $this->insertData( $dbw );
+                               },
+                               'function' => function () use ( $dbw ) {
+                                       $this->truncate( $dbw );
+                               }
+                       ]
+               ] );
 
                $dbw->dropTable( 'test' );
        }
@@ -102,5 +101,5 @@ class BenchmarkDeleteTruncate extends Benchmarker {
        }
 }
 
-$maintClass = "BenchmarkDeleteTruncate";
+$maintClass = 'BenchmarkDeleteTruncate';
 require_once RUN_MAINTENANCE_IF_MAIN;
index 46c9d39..843ef7c 100644 (file)
@@ -42,11 +42,10 @@ class BenchIfSwitch extends Benchmarker {
                        [ 'function' => [ $this, 'doElseIf' ] ],
                        [ 'function' => [ $this, 'doSwitch' ] ],
                ] );
-               print $this->getFormattedResults();
        }
 
        // bench function 1
-       function doElseIf() {
+       protected function doElseIf() {
                $a = 'z';
                if ( $a == 'a' ) {
                } elseif ( $a == 'b' ) {
@@ -69,7 +68,7 @@ class BenchIfSwitch extends Benchmarker {
        }
 
        // bench function 2
-       function doSwitch() {
+       protected function doSwitch() {
                $a = 'z';
                switch ( $a ) {
                        case 'b':
index 156f8fc..55c7159 100644 (file)
@@ -51,22 +51,21 @@ class BenchStrtrStrReplace extends Benchmarker {
                        [ 'function' => [ $this, 'benchstrtr_indirect' ] ],
                        [ 'function' => [ $this, 'benchstr_replace_indirect' ] ],
                ] );
-               print $this->getFormattedResults();
        }
 
-       function benchstrtr() {
+       protected function benchstrtr() {
                strtr( "[[MediaWiki:Some_random_test_page]]", "_", " " );
        }
 
-       function benchstr_replace() {
+       protected function benchstr_replace() {
                str_replace( "_", " ", "[[MediaWiki:Some_random_test_page]]" );
        }
 
-       function benchstrtr_indirect() {
+       protected function benchstrtr_indirect() {
                bfNormalizeTitleStrTr( "[[MediaWiki:Some_random_test_page]]" );
        }
 
-       function benchstr_replace_indirect() {
+       protected function benchstr_replace_indirect() {
                bfNormalizeTitleStrReplace( "[[MediaWiki:Some_random_test_page]]" );
        }
 }
index b2f7e96..3091de6 100644 (file)
@@ -32,6 +32,8 @@ require_once __DIR__ . '/Benchmarker.php';
 class BenchUtf8TitleCheck extends Benchmarker {
        private $data;
 
+       private $isutf8;
+
        public function __construct() {
                parent::__construct();
 
@@ -84,29 +86,26 @@ class BenchUtf8TitleCheck extends Benchmarker {
                        ];
                }
                $this->bench( $benchmarks );
-               print $this->getFormattedResults();
        }
 
-       private $isutf8;
-
-       function use_regexp( $s ) {
+       protected function use_regexp( $s ) {
                $this->isutf8 = preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
                        '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );
        }
 
-       function use_regexp_non_capturing( $s ) {
+       protected function use_regexp_non_capturing( $s ) {
                // Same as above with a non-capturing subgroup.
                $this->isutf8 = preg_match( '/^(?:[\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
                        '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );
        }
 
-       function use_regexp_once_only( $s ) {
+       protected function use_regexp_once_only( $s ) {
                // Same as above with a once-only subgroup.
                $this->isutf8 = preg_match( '/^(?>[\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
                        '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );
        }
 
-       function use_mb_check_encoding( $s ) {
+       protected function use_mb_check_encoding( $s ) {
                $this->isutf8 = mb_check_encoding( $s, 'UTF-8' );
        }
 }
index ac0caf6..960ef0e 100644 (file)
@@ -42,20 +42,19 @@ class BenchWfIsWindows extends Benchmarker {
                        [ 'function' => [ $this, 'wfIsWindows' ] ],
                        [ 'function' => [ $this, 'wfIsWindowsCached' ] ],
                ] );
-               print $this->getFormattedResults();
        }
 
-       static function is_win() {
+       protected static function is_win() {
                return substr( php_uname(), 0, 7 ) == 'Windows';
        }
 
        // bench function 1
-       function wfIsWindows() {
+       protected function wfIsWindows() {
                return self::is_win();
        }
 
        // bench function 2
-       function wfIsWindowsCached() {
+       protected function wfIsWindowsCached() {
                static $isWindows = null;
                if ( $isWindows == null ) {
                        $isWindows = self::is_win();
diff --git a/maintenance/benchmarks/benchmarkCSSMin.php b/maintenance/benchmarks/benchmarkCSSMin.php
new file mode 100644 (file)
index 0000000..3eaa88d
--- /dev/null
@@ -0,0 +1,76 @@
+<?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
+ * @ingroup Benchmark
+ * @author Timo Tijhof
+ */
+
+require_once __DIR__ . '/Benchmarker.php';
+
+/**
+ * Maintenance script that benchmarks CSSMin.
+ *
+ * @ingroup Benchmark
+ */
+class BenchmarkCSSMin extends Benchmarker {
+       public function __construct() {
+               parent::__construct();
+               $this->addDescription( 'Benchmarks CSSMin.' );
+               $this->addOption( 'file', 'Path to CSS file (may be gzipped)', false, true );
+               $this->addOption( 'out', 'Echo output of one run to stdout for inspection', false, false );
+       }
+
+       public function execute() {
+               $file = $this->getOption( 'file', __DIR__ . '/cssmin/styles.css' );
+               $filename = basename( $file );
+               $css = $this->loadFile( $file );
+
+               if ( $this->hasOption( 'out' ) ) {
+                       echo "## minify\n\n",
+                               CSSMin::minify( $css ),
+                               "\n\n";
+                       echo "## remap\n\n",
+                               CSSMin::remap( $css, dirname( $file ), 'https://example.org/test/', true ),
+                               "\n";
+                       return;
+               }
+
+               $this->bench( [
+                       "minify ($filename)" => [
+                               'function' => [ 'CSSMin', 'minify' ],
+                               'args' => [ $css ]
+                       ],
+                       "remap ($filename)" => [
+                               'function' => [ 'CSSMin', 'remap' ],
+                               'args' => [ $css, dirname( $file ), 'https://example.org/test/', true ]
+                       ],
+               ] );
+       }
+
+       private function loadFile( $file ) {
+               $css = file_get_contents( $file );
+               // Detect GZIP compression header
+               if ( substr( $css, 0, 2 ) === "\037\213" ) {
+                       $css = gzdecode( $css );
+               }
+               return $css;
+       }
+}
+
+$maintClass = 'BenchmarkCSSMin';
+require_once RUN_MAINTENANCE_IF_MAIN;
index c59ce0d..d49fa1d 100644 (file)
@@ -29,50 +29,36 @@ require_once __DIR__ . '/Benchmarker.php';
  * @ingroup Benchmark
  */
 class BenchmarkHooks extends Benchmarker {
+       protected $defaultCount = 10;
+
        public function __construct() {
                parent::__construct();
                $this->addDescription( 'Benchmark MediaWiki Hooks.' );
        }
 
        public function execute() {
-               global $wgHooks;
-               $wgHooks['Test'] = [];
-
-               $time = $this->benchHooks();
-               $this->output( 'Empty hook: ' . $time . "\n" );
-
-               $wgHooks['Test'][] = [ $this, 'test' ];
-               $time = $this->benchHooks();
-               $this->output( 'Loaded (one) hook: ' . $time . "\n" );
-
-               for ( $i = 0; $i < 9; $i++ ) {
-                       $wgHooks['Test'][] = [ $this, 'test' ];
-               }
-               $time = $this->benchHooks();
-               $this->output( 'Loaded (ten) hook: ' . $time . "\n" );
-
-               for ( $i = 0; $i < 90; $i++ ) {
-                       $wgHooks['Test'][] = [ $this, 'test' ];
+               $cases = [
+                       'Loaded 0 hooks' => 0,
+                       'Loaded 1 hook' => 1,
+                       'Loaded 10 hooks' => 10,
+                       'Loaded 100 hooks' => 100,
+               ];
+               $benches = [];
+               foreach ( $cases as $label => $load ) {
+                       $benches[$label] = [
+                               'setup' => function () use ( $load ) {
+                                       global $wgHooks;
+                                       $wgHooks['Test'] = [];
+                                       for ( $i = 1; $i <= $load; $i++ ) {
+                                               $wgHooks['Test'][] = [ $this, 'test' ];
+                                       }
+                               },
+                               'function' => function () {
+                                       Hooks::run( 'Test' );
+                               }
+                       ];
                }
-               $time = $this->benchHooks();
-               $this->output( 'Loaded (one hundred) hook: ' . $time . "\n" );
-               $this->output( "\n" );
-       }
-
-       /**
-        * @param int $trials
-        * @return string
-        */
-       private function benchHooks( $trials = 10 ) {
-               $start = microtime( true );
-               for ( $i = 0; $i < $trials; $i++ ) {
-                       Hooks::run( 'Test' );
-               }
-               $delta = microtime( true ) - $start;
-               $pertrial = $delta / $trials;
-
-               return sprintf( "Took %6.3fms",
-                       $pertrial * 1000 );
+               $this->bench( $benches );
        }
 
        /**
diff --git a/maintenance/benchmarks/benchmarkTidy.php b/maintenance/benchmarks/benchmarkTidy.php
new file mode 100644 (file)
index 0000000..1479174
--- /dev/null
@@ -0,0 +1,78 @@
+<?php
+
+require __DIR__ . '/../Maintenance.php';
+
+class BenchmarkTidy extends Maintenance {
+       public function __construct() {
+               parent::__construct();
+               $this->addOption( 'file', 'A filename which contains the input text', true, true );
+               $this->addOption( 'driver', 'The Tidy driver name, or false to use the configured instance',
+                       false,  true );
+               $this->addOption( 'tidy-config', 'JSON encoded value for the tidy configuration array',
+                       false, true );
+       }
+
+       public function execute() {
+               $html = file_get_contents( $this->getOption( 'file' ) );
+               if ( $html === false ) {
+                       $this->error( "Unable to open input file", 1 );
+               }
+               if ( $this->hasOption( 'driver' ) || $this->hasOption( 'tidy-config' ) ) {
+                       $config = json_decode( $this->getOption( 'tidy-config', '{}' ), true );
+                       if ( !is_array( $config ) ) {
+                               $this->error( "Invalid JSON tidy config", 1 );
+                       }
+                       $config += [ 'driver' => $this->getOption( 'driver', 'RemexHtml' ) ];
+                       $driver = MWTidy::factory( $config );
+               } else {
+                       $driver = MWTidy::singleton();
+                       if ( !$driver ) {
+                               $this->error( "Tidy disabled or not installed", 1 );
+                       }
+               }
+
+               $this->benchmark( $driver, $html );
+       }
+
+       private function benchmark( $driver, $html ) {
+               global $wgContLang;
+
+               $times = [];
+               $innerCount = 10;
+               $outerCount = 10;
+               for ( $j = 1; $j <= $outerCount; $j++ ) {
+                       $t = microtime( true );
+                       for ( $i = 0; $i < $innerCount; $i++ ) {
+                               $driver->tidy( $html );
+                               print $wgContLang->formatSize( memory_get_usage( true ) ) . "\n";
+                       }
+                       $t = ( ( microtime( true ) - $t ) / $innerCount ) * 1000;
+                       $times[] = $t;
+                       print "Run $j: $t\n";
+               }
+               print "\n";
+
+               sort( $times, SORT_NUMERIC );
+               $n = $outerCount;
+               $min = $times[0];
+               $max = end( $times );
+               if ( $n % 2 ) {
+                       $median = $times[ ( $n - 1 ) / 2 ];
+               } else {
+                       $median = ( $times[$n / 2] + $times[$n / 2 - 1] ) / 2;
+               }
+               $mean = array_sum( $times ) / $n;
+
+               print "Minimum: $min ms\n";
+               print "Median: $median ms\n";
+               print "Mean: $mean ms\n";
+               print "Maximum: $max ms\n";
+               print "Memory usage: " .
+                       $wgContLang->formatSize( memory_get_usage( true ) ) . "\n";
+               print "Peak memory usage: " .
+                       $wgContLang->formatSize( memory_get_peak_usage( true ) ) . "\n";
+       }
+}
+
+$maintClass = 'BenchmarkTidy';
+require RUN_MAINTENANCE_IF_MAIN;
diff --git a/maintenance/benchmarks/cssmin/circle.svg b/maintenance/benchmarks/cssmin/circle.svg
new file mode 100644 (file)
index 0000000..6b7d1af
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8">
+<circle cx="4" cy="4" r="2"/>
+</svg>
diff --git a/maintenance/benchmarks/cssmin/styles.css b/maintenance/benchmarks/cssmin/styles.css
new file mode 100644 (file)
index 0000000..3cc1520
--- /dev/null
@@ -0,0 +1,32 @@
+/**
+ * Header
+ */
+
+.foo {
+       background: url(wiki.png);
+}
+
+.foo {
+       background: url(unknown.png);
+}
+
+.foo {
+       background: url(https://example.org/foo.png);
+       background: url('https://example.org/foo.png');
+       background: url("https://example.org/foo.png");
+}
+
+.foo {
+       /* @embed */
+       background: url(wiki.png);
+}
+
+.foo {
+       /* @embed */
+       background: url(circle.svg);
+}
+
+.foo {
+       /* @embed */
+       background: url(wiki.png), url(wiki.png);
+}
diff --git a/maintenance/benchmarks/cssmin/wiki.png b/maintenance/benchmarks/cssmin/wiki.png
new file mode 100644 (file)
index 0000000..8c42118
Binary files /dev/null and b/maintenance/benchmarks/cssmin/wiki.png differ
diff --git a/maintenance/cleanupInvalidDbKeys.php b/maintenance/cleanupInvalidDbKeys.php
new file mode 100644 (file)
index 0000000..b487f89
--- /dev/null
@@ -0,0 +1,311 @@
+<?php
+/**
+ * Cleans up invalid titles in various tables.
+ *
+ * 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 that cleans up invalid titles in various tables.
+ *
+ * @since 1.29
+ * @ingroup Maintenance
+ */
+class CleanupInvalidDbKeys extends Maintenance {
+       /** @var array List of tables to clean up, and the field prefix for that table */
+       protected static $tables = [
+               // Data tables
+               [ 'page', 'page' ],
+               [ 'redirect', 'rd', 'idField' => 'rd_from' ],
+               [ 'archive', 'ar' ],
+               [ 'logging', 'log' ],
+               [ 'protected_titles', 'pt', 'idField' => 0 ],
+               [ 'category', 'cat', 'nsField' => 14 ],
+               [ 'recentchanges', 'rc' ],
+               [ 'watchlist', 'wl' ],
+               // The querycache tables' qc(c)_title and qcc_titletwo may contain titles,
+               // but also usernames or other things like that, so we leave them alone
+
+               // Links tables
+               [ 'pagelinks', 'pl', 'idField' => 'pl_from' ],
+               [ 'templatelinks', 'tl', 'idField' => 'tl_from' ],
+               [ 'categorylinks', 'cl', 'idField' => 'cl_from', 'nsField' => 14, 'titleField' => 'cl_to' ],
+       ];
+
+       public function __construct() {
+               parent::__construct();
+               $this->addDescription( <<<'TEXT'
+This script cleans up the title fields in various tables to remove entries that
+will be rejected by the constructor of TitleValue.  This constructor throws an
+exception when invalid data is encountered, which will not normally occur on
+regular page views, but can happen on query special pages.
+
+The script targets titles matching the regular expression /^_|[ \r\n\t]|_$/.
+Because any foreign key relationships involving these titles will already be
+broken, the titles are corrected to a valid version or the rows are deleted
+entirely, depending on the table.
+
+The script runs with the expectation that STDOUT is redirected to a file.
+TEXT
+               );
+               $this->addOption( 'fix', 'Actually clean up invalid titles. If this parameter is ' .
+                       'not specified, the script will report invalid titles but not clean them up.',
+                       false, false );
+               $this->addOption( 'table', 'The table(s) to process. This option can be specified ' .
+                       'more than once (e.g. -t category -t watchlist). If not specified, all available ' .
+                       'tables will be processed. Available tables are: ' .
+                       implode( ', ', array_column( static::$tables, 0 ) ), false, true, 't', true );
+
+               $this->setBatchSize( 500 );
+       }
+
+       public function execute() {
+               $tablesToProcess = $this->getOption( 'table' );
+               foreach ( static::$tables as $tableParams ) {
+                       if ( !$tablesToProcess || in_array( $tableParams[0], $tablesToProcess ) ) {
+                               $this->cleanupTable( $tableParams );
+                       }
+               }
+
+               $this->outputStatus( 'Done!' );
+               if ( $this->hasOption( 'fix' ) ) {
+                       $this->outputStatus( ' Cleaned up invalid DB keys on ' . wfWikiID() . "!\n" );
+               }
+       }
+
+       /**
+        * Prints text to STDOUT, and STDERR if STDOUT was redirected to a file.
+        * Used for progress reporting.
+        *
+        * @param string $str Text to write to both places
+        * @param string|null $channel Ignored
+        */
+       protected function outputStatus( $str, $channel = null ) {
+               // Make it easier to find progress lines in the STDOUT log
+               if ( trim( $str ) ) {
+                       fwrite( STDOUT, '*** ' . trim( $str ) . "\n" );
+               }
+               fwrite( STDERR, $str );
+       }
+
+       /**
+        * Prints text to STDOUT. Used for logging output.
+        *
+        * @param string $str Text to write
+        */
+       protected function writeToReport( $str ) {
+               fwrite( STDOUT, $str );
+       }
+
+       /**
+        * Identifies, and optionally cleans up, invalid titles.
+        *
+        * @param array $tableParams A child array of self::$tables
+        */
+       protected function cleanupTable( $tableParams ) {
+               $table = $tableParams[0];
+               $prefix = $tableParams[1];
+               $idField = isset( $tableParams['idField'] ) ?
+                       $tableParams['idField'] :
+                       "{$prefix}_id";
+               $nsField = isset( $tableParams['nsField'] ) ?
+                       $tableParams['nsField'] :
+                       "{$prefix}_namespace";
+               $titleField = isset( $tableParams['titleField'] ) ?
+                       $tableParams['titleField'] :
+                       "{$prefix}_title";
+
+               $this->outputStatus( "Looking for invalid $titleField entries in $table...\n" );
+
+               // Do all the select queries on the replicas, as they are slow (they use
+               // unanchored LIKEs). Naturally this could cause problems if rows are
+               // modified after selecting and before deleting/updating, but working on
+               // the hypothesis that invalid rows will be old and in all likelihood
+               // unreferenced, we should be fine to do it like this.
+               $dbr = $this->getDB( DB_REPLICA, 'vslow' );
+
+               // Find all TitleValue-invalid titles.
+               $percent = $dbr->anyString(); // DBMS-agnostic equivalent of '%' LIKE wildcard
+               $res = $dbr->select(
+                       $table,
+                       [
+                               'id' => $idField,
+                               'ns' => $nsField,
+                               'title' => $titleField,
+                       ],
+                       // The REGEXP operator is not cross-DBMS, so we have to use lots of LIKEs
+                       [ $dbr->makeList( [
+                               $titleField . $dbr->buildLike( $percent, ' ', $percent ),
+                               $titleField . $dbr->buildLike( $percent, "\r", $percent ),
+                               $titleField . $dbr->buildLike( $percent, "\n", $percent ),
+                               $titleField . $dbr->buildLike( $percent, "\t", $percent ),
+                               $titleField . $dbr->buildLike( '_', $percent ),
+                               $titleField . $dbr->buildLike( $percent, '_' ),
+                       ], LIST_OR ) ],
+                       __METHOD__,
+                       [ 'LIMIT' => $this->mBatchSize ]
+               );
+
+               $this->outputStatus( "Number of invalid rows: " . $res->numRows() . "\n" );
+               if ( !$res->numRows() ) {
+                       $this->outputStatus( "\n" );
+                       return;
+               }
+
+               // Write a table of titles to the report file. Also keep a list of the found
+               // IDs, as we might need it later for DB updates
+               $this->writeToReport( sprintf( "%10s |  ns | dbkey\n", $idField ) );
+               $ids = [];
+               foreach ( $res as $row ) {
+                       $this->writeToReport( sprintf( "%10d | %3d | %s\n", $row->id, $row->ns, $row->title ) );
+                       $ids[] = $row->id;
+               }
+
+               // If we're doing a dry run, output the new titles we would use for the UPDATE
+               // queries (if relevant), and finish
+               if ( !$this->hasOption( 'fix' ) ) {
+                       if ( $table === 'logging' || $table === 'archive' ) {
+                               $this->writeToReport( "The following updates would be run with the --fix flag:\n" );
+                               foreach ( $res as $row ) {
+                                       $newTitle = self::makeValidTitle( $row->title );
+                                       $this->writeToReport(
+                                               "$idField={$row->id}: update '{$row->title}' to '$newTitle'\n" );
+                               }
+                       }
+
+                       if ( $table !== 'page' && $table !== 'redirect' ) {
+                               $this->outputStatus( "Run with --fix to clean up these rows\n" );
+                       }
+                       $this->outputStatus( "\n" );
+                       return;
+               }
+
+               // Fix the bad data, using different logic for the various tables
+               $dbw = $this->getDB( DB_MASTER );
+               switch ( $table ) {
+                       case 'page':
+                       case 'redirect':
+                               // This shouldn't happen on production wikis, and we already have a script
+                               // to handle 'page' rows anyway, so just notify the user and let them decide
+                               // what to do next.
+                               $this->outputStatus( <<<TEXT
+IMPORTANT: This script does not fix invalid entries in the $table table.
+Consider repairing these rows, and rows in related tables, by hand.
+You may like to run, or borrow logic from, the cleanupTitles.php script.
+
+TEXT
+                               );
+                               break;
+
+                       case 'archive':
+                       case 'logging':
+                               // Rename the title to a corrected equivalent. Any foreign key relationships
+                               // to the page_title field are already broken, so this will just make sure
+                               // users can still access the log entries/deleted revisions from the interface
+                               // using a valid page title.
+                               $this->outputStatus(
+                                       "Updating these rows, setting $titleField to the closest valid DB key...\n" );
+                               $affectedRowCount = 0;
+                               foreach ( $res as $row ) {
+                                       $newTitle = self::makeValidTitle( $row->title );
+                                       $this->writeToReport(
+                                               "$idField={$row->id}: updating '{$row->title}' to '$newTitle'\n" );
+
+                                       $dbw->update( $table,
+                                               [ $titleField => $newTitle ],
+                                               [ $idField => $row->id ],
+                                               __METHOD__ );
+                                       $affectedRowCount += $dbw->affectedRows();
+                               }
+                               wfWaitForSlaves();
+                               $this->outputStatus( "Updated $affectedRowCount rows on $table.\n" );
+
+                               break;
+
+                       case 'recentchanges':
+                       case 'watchlist':
+                       case 'category':
+                               // Since these broken titles can't exist, there's really nothing to watch,
+                               // nothing can be categorised in them, and they can't have been changed
+                               // recently, so we can just remove these rows.
+                               $this->outputStatus( "Deleting invalid $table rows...\n" );
+                               $dbw->delete( $table, [ $idField => $ids ], __METHOD__ );
+                               wfWaitForSlaves();
+                               $this->outputStatus( 'Deleted ' . $dbw->affectedRows() . " rows from $table.\n" );
+                               break;
+
+                       case 'protected_titles':
+                               // Since these broken titles can't exist, there's really nothing to protect,
+                               // so we can just remove these rows. Made more complicated by this table
+                               // not having an ID field
+                               $this->outputStatus( "Deleting invalid $table rows...\n" );
+                               $affectedRowCount = 0;
+                               foreach ( $res as $row ) {
+                                       $dbw->delete( $table,
+                                               [ $nsField => $row->ns, $titleField => $row->title ],
+                                               __METHOD__ );
+                                       $affectedRowCount += $dbw->affectedRows();
+                               }
+                               wfWaitForSlaves();
+                               $this->outputStatus( "Deleted $affectedRowCount rows from $table.\n" );
+                               break;
+
+                       case 'pagelinks':
+                       case 'templatelinks':
+                       case 'categorylinks':
+                               // Update links tables for each page where these bogus links are supposedly
+                               // located. If the invalid rows don't go away after these jobs go through,
+                               // they're probably being added by a buggy hook.
+                               $this->outputStatus( "Queueing link update jobs for the pages in $idField...\n" );
+                               foreach ( $res as $row ) {
+                                       $wp = WikiPage::newFromID( $row->id );
+                                       if ( $wp ) {
+                                               RefreshLinks::fixLinksFromArticle( $row->id );
+                                       } else {
+                                               // This link entry points to a nonexistent page, so just get rid of it
+                                               $dbw->delete( $table,
+                                                       [ $idField => $row->id, $nsField => $row->ns, $titleField => $row->title ],
+                                                       __METHOD__ );
+                                       }
+                               }
+                               wfWaitForSlaves();
+                               $this->outputStatus( "Link update jobs have been added to the job queue.\n" );
+                               break;
+               }
+
+               $this->outputStatus( "\n" );
+               return;
+       }
+
+       /**
+        * Fix possible validation issues in the given title (DB key).
+        *
+        * @param string $invalidTitle
+        * @return string
+        */
+       protected static function makeValidTitle( $invalidTitle ) {
+               return strtr( trim( $invalidTitle, '_' ),
+                       [ ' ' => '_', "\r" => '', "\n" => '', "\t" => '_' ] );
+       }
+}
+
+$maintClass = 'CleanupInvalidDbKeys';
+require_once RUN_MAINTENANCE_IF_MAIN;
index 581f0d7..c6e9aad 100644 (file)
@@ -33,7 +33,12 @@ use Wikimedia\Rdbms\IMaintainableDatabase;
  * @ingroup Maintenance
  */
 class TextPassDumper extends BackupDumper {
+       /** @var BaseDump */
        public $prefetch = null;
+       /** @var string|bool */
+       private $thisPage;
+       /** @var string|bool */
+       private $thisRev;
 
        // when we spend more than maxTimeAllowed seconds on this run, we continue
        // processing until we write out the next complete page, then save output file(s),
@@ -583,8 +588,7 @@ TEXT
                                if ( $text === false && isset( $this->prefetch ) && $prefetchNotTried ) {
                                        $prefetchNotTried = false;
                                        $tryIsPrefetch = true;
-                                       $text = $this->prefetch->prefetch( intval( $this->thisPage ),
-                                               intval( $this->thisRev ) );
+                                       $text = $this->prefetch->prefetch( (int)$this->thisPage, (int)$this->thisRev );
 
                                        if ( $text === null ) {
                                                $text = false;
index d98e5cd..40d29ef 100644 (file)
  * @ingroup Maintenance
  */
 
+use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\Logger\ConsoleSpi;
+use MediaWiki\MediaWikiServices;
+
 $optionsWithArgs = [ 'd' ];
 
 require_once __DIR__ . "/commandLine.inc";
@@ -37,16 +41,13 @@ require_once __DIR__ . "/commandLine.inc";
 if ( isset( $options['d'] ) ) {
        $d = $options['d'];
        if ( $d > 0 ) {
-               $wgDebugLogFile = '/dev/stdout';
+               LoggerFactory::registerProvider( new ConsoleSpi );
+               // Some services hold Logger instances in object properties
+               MediaWikiServices::resetGlobalInstance();
        }
        if ( $d > 1 ) {
-               $lb = wfGetLB();
-               $serverCount = $lb->getServerCount();
-               for ( $i = 0; $i < $serverCount; $i++ ) {
-                       $server = $lb->getServerInfo( $i );
-                       $server['flags'] |= DBO_DEBUG;
-                       $lb->setServerInfo( $i, $server );
-               }
+               wfGetDB( DB_MASTER )->setFlag( DBO_DEBUG );
+               wfGetDB( DB_REPLICA )->setFlag( DBO_DEBUG );
        }
 }
 
index 6717a8e..802619e 100644 (file)
@@ -80,6 +80,7 @@ TEXT
                        'Disable link table updates. Is faster but leaves the wiki in an inconsistent state'
                );
                $this->addOption( 'image-base-path', 'Import files from a specified path', false, true );
+               $this->addOption( 'skip-to', 'Start from nth page by skipping first n-1 pages', false, true );
                $this->addArg( 'file', 'Dump file to import [else use stdin]', false );
        }
 
@@ -301,6 +302,11 @@ TEXT
                                return false;
                        }
                }
+               if ( $this->hasOption( 'skip-to' ) ) {
+                       $nthPage = (int)$this->getOption( 'skip-to' );
+                       $importer->setPageOffset( $nthPage );
+                       $this->pageCount = $nthPage - 1;
+               }
                $importer->setPageCallback( [ $this, 'reportPage' ] );
                $this->importCallback = $importer->setRevisionCallback(
                        [ $this, 'handleRevision' ] );
index 23bdb3f..b3866c1 100644 (file)
@@ -307,7 +307,9 @@ class ImportImages extends Maintenance {
                                        $publishOptions = [];
                                        $handler = MediaHandler::getHandler( $props['mime'] );
                                        if ( $handler ) {
-                                               $publishOptions['headers'] = $handler->getStreamHeaders( $props['metadata'] );
+                                               $metadata = MediaWiki\quietCall( 'unserialize', $props['metadata'] );
+
+                                               $publishOptions['headers'] = $handler->getContentHeaders( $metadata );
                                        } else {
                                                $publishOptions['headers'] = [];
                                        }
index f106db1..1d53615 100644 (file)
 杜琪峰      杜琪峯
 單向 單向
 轉向 轉向 #分詞用
+十出頭      十出頭
index 4effa8e..9b2e081 100644 (file)
 精制服
 經有云
 編制法
+防制法
 能干休
 能干戈
 能干擾
 于海
 於海邊
 於海上
+於海拔
+於山東
+於山西
 于凌辰
 于魁智
 于鬯
 蒸製
 烹製
 醃製
+鐵製
+鋼製
+銅製
+鋅製
 和製漢
 和製英語
 壓製機
 短發生
 頭發現
 蛋白發
+發狀態
+發狀況
 古人有云
 昔人有云
 云敞
 金聖歎
 天台 #分詞用
 性別扭曲
+箇舊市
+雲南箇舊
index 07aa282..feaad12 100644 (file)
@@ -38,6 +38,7 @@
  * DEALINGS IN THE SOFTWARE.
  */
 
+// Warning: Converting this to a Maintenance script may reduce performance.
 if ( PHP_SAPI != 'cli' ) {
        die( "This filter can only be run from the command line.\n" );
 }
index dc2eccd..d005629 100644 (file)
@@ -72,7 +72,7 @@ class MWDocGen extends Maintenance {
        }
 
        protected function init() {
-               global $IP;
+               global $wgPhpCli, $IP;
 
                $this->doxygen = $this->getOption( 'doxygen', 'doxygen' );
                $this->mwVersion = $this->getOption( 'version', 'master' );
@@ -86,7 +86,13 @@ class MWDocGen extends Maintenance {
 
                $this->output = $this->getOption( 'output', "$IP/docs" );
 
-               $this->inputFilter = wfShellWikiCmd( $IP . '/maintenance/mwdoc-filter.php' );
+               // Do not use wfShellWikiCmd, because mwdoc-filter.php is not
+               // a Maintenance script.
+               $this->inputFilter = wfEscapeShellArg( [
+                       $wgPhpCli,
+                       $IP . '/maintenance/mwdoc-filter.php'
+               ] );
+
                $this->template = $IP . '/maintenance/Doxyfile';
                $this->excludes = [
                        'vendor',
index ba1e879..48c3d37 100644 (file)
@@ -19,6 +19,8 @@
  * @ingroup Maintenance
  */
 
+use Wikimedia\Rdbms\DBQueryError;
+
 /**
  * When using shared tables that are referenced by foreign keys on local
  * tables you have to change the constraints on local tables.
index 3520279..04ac967 100644 (file)
@@ -41,7 +41,7 @@ class RebuildFileCache extends Maintenance {
        }
 
        public function finalSetup() {
-               global $wgDebugToolbar, $wgUseFileCache, $wgReadOnly;
+               global $wgDebugToolbar, $wgUseFileCache;
 
                $this->enabled = $wgUseFileCache;
                // Script will handle capturing output and saving it itself
@@ -50,7 +50,8 @@ class RebuildFileCache extends Maintenance {
                // Has to be done before Setup.php initialize MWDebug
                $wgDebugToolbar = false;
                //  Avoid DB writes (like enotif/counters)
-               $wgReadOnly = 'Building cache'; // avoid DB writes (like enotif/counters)
+               MediaWiki\MediaWikiServices::getInstance()->getReadOnlyMode()
+                       ->setReason( 'Building cache' );
 
                parent::finalSetup();
        }
index 966864e..109350c 100644 (file)
@@ -63,7 +63,8 @@ class ImageBuilder extends Maintenance {
                $this->dbw = $this->getDB( DB_MASTER );
                $this->dryrun = $this->hasOption( 'dry-run' );
                if ( $this->dryrun ) {
-                       $GLOBALS['wgReadOnly'] = 'Dry run mode, image upgrades are suppressed';
+                       MediaWiki\MediaWikiServices::getInstance()->getReadOnlyMode()
+                               ->setReason( 'Dry run mode, image upgrades are suppressed' );
                }
 
                if ( $this->hasOption( 'missing' ) ) {
index 458dacf..142a4e5 100644 (file)
@@ -24,6 +24,7 @@
  */
 
 require_once __DIR__ . '/Maintenance.php';
+use MediaWiki\MediaWikiServices;
 
 /**
  * Maintenance script that rebuilds recent changes from scratch.
@@ -478,15 +479,16 @@ class RebuildRecentchanges extends Maintenance {
        }
 
        /**
-        * Purge cached feeds in $messageMemc
+        * Purge cached feeds in $wanCache
         */
        private function purgeFeeds() {
-               global $wgFeedClasses, $messageMemc;
+               global $wgFeedClasses;
 
                $this->output( "Deleting feed timestamps.\n" );
 
+               $wanCache = MediaWikiServices::getInstance()->getMainWANObjectCache();
                foreach ( $wgFeedClasses as $feed => $className ) {
-                       $messageMemc->delete( wfMemcKey( 'rcfeed', $feed, 'timestamp' ) ); # Good enough for now.
+                       $wanCache->delete( $wanCache->makeKey( 'rcfeed', $feed, 'timestamp' ) ); # Good enough for now.
                }
        }
 }
index e075501..e252256 100644 (file)
@@ -48,41 +48,65 @@ class RefreshFileHeaders extends Maintenance {
 
                $count = 0;
                $dbr = $this->getDB( DB_REPLICA );
+
                do {
                        $conds = [ "img_name > {$dbr->addQuotes( $start )}" ];
+
                        if ( strlen( $end ) ) {
                                $conds[] = "img_name <= {$dbr->addQuotes( $end )}";
                        }
+
                        $res = $dbr->select( 'image', '*', $conds,
                                __METHOD__, [ 'LIMIT' => $this->mBatchSize, 'ORDER BY' => 'img_name ASC' ] );
+
+                       if ( $res->numRows() > 0 ) {
+                               $row1 = $res->current();
+                               $this->output( "Processing next {$res->numRows()} row(s) starting with {$row1->img_name}.\n" );
+                               $res->rewind();
+                       }
+
+                       $backendOperations = [];
+
                        foreach ( $res as $row ) {
                                $file = $repo->newFileFromRow( $row );
-                               $headers = $file->getStreamHeaders();
+                               $headers = $file->getContentHeaders();
+
                                if ( count( $headers ) ) {
-                                       $this->updateFileHeaders( $file, $headers );
+                                       $backendOperations[] = [
+                                               'op' => 'describe', 'src' => $file->getPath(), 'headers' => $headers
+                                       ];
                                }
+
                                // Do all of the older file versions...
                                foreach ( $file->getHistory() as $oldFile ) {
-                                       $headers = $oldFile->getStreamHeaders();
+                                       $headers = $oldFile->getContentHeaders();
                                        if ( count( $headers ) ) {
-                                               $this->updateFileHeaders( $oldFile, $headers );
+                                               $backendOperations[] = [
+                                                       'op' => 'describe', 'src' => $oldFile->getPath(), 'headers' => $headers
+                                               ];
                                        }
                                }
+
                                if ( $this->hasOption( 'verbose' ) ) {
-                                       $this->output( "Updated headers for file '{$row->img_name}'.\n" );
+                                       $this->output( "Queued headers update for file '{$row->img_name}'.\n" );
                                }
-                               ++$count;
+
                                $start = $row->img_name; // advance
                        }
-               } while ( $res->numRows() > 0 );
+
+                       $backendOperationsCount = count( $backendOperations );
+                       $count += $backendOperationsCount;
+
+                       $this->output( "Updating headers for {$backendOperationsCount} file(s).\n" );
+                       $this->updateFileHeaders( $repo, $backendOperations );
+               } while ( $res->numRows() === $this->mBatchSize );
 
                $this->output( "Done. Updated headers for $count file(s).\n" );
        }
 
-       protected function updateFileHeaders( File $file, array $headers ) {
-               $status = $file->getRepo()->getBackend()->describe( [
-                       'src' => $file->getPath(), 'headers' => $headers
-               ] );
+       protected function updateFileHeaders( $repo, $backendOperations ) {
+               $status = $repo->getBackend()->doQuickOperations( $backendOperations );
+
                if ( !$status->isGood() ) {
                        $this->error( "Encountered error: " . print_r( $status, true ) );
                }
index b557f3d..f6e9e9c 100644 (file)
@@ -135,10 +135,8 @@ class RefreshImageMetadata extends Maintenance {
 
                        if ( $res->numRows() > 0 ) {
                                $row1 = $res->current();
-                               $this->output( "Processing next {$this->mBatchSize} rows starting with {$row1->img_name}.\n" );
+                               $this->output( "Processing next {$res->numRows()} row(s) starting with {$row1->img_name}.\n" );
                                $res->rewind();
-                       } else {
-                               $this->error( "No images to process.", 4 );
                        }
 
                        foreach ( $res as $row ) {
index a6cd548..9f3552a 100644 (file)
@@ -278,6 +278,7 @@ class RefreshLinks extends Maintenance {
                        $page->getTitle(), /* $old = */ null, /* $recursive = */ false );
                foreach ( $updates as $update ) {
                        DeferredUpdates::addUpdate( $update );
+                       DeferredUpdates::doUpdates();
                }
        }
 
index dbce7a7..bfa359f 100755 (executable)
@@ -42,21 +42,21 @@ fi
 rm -r "$REPO_DIR/$TARGET_DIR"
 mkdir -p "$REPO_DIR/$TARGET_DIR/i18n"
 mkdir -p "$REPO_DIR/$TARGET_DIR/images"
-mkdir -p "$REPO_DIR/$TARGET_DIR/themes/mediawiki/images"
+mkdir -p "$REPO_DIR/$TARGET_DIR/themes/wikimediaui/images"
 mkdir -p "$REPO_DIR/$TARGET_DIR/themes/apex/images"
-cp ./node_modules/oojs-ui/dist/oojs-ui-core.js "$REPO_DIR/$TARGET_DIR"
-cp ./node_modules/oojs-ui/dist/oojs-ui-core-{mediawiki,apex}.css "$REPO_DIR/$TARGET_DIR"
-cp ./node_modules/oojs-ui/dist/oojs-ui-widgets.js "$REPO_DIR/$TARGET_DIR"
-cp ./node_modules/oojs-ui/dist/oojs-ui-widgets-{mediawiki,apex}.css "$REPO_DIR/$TARGET_DIR"
-cp ./node_modules/oojs-ui/dist/oojs-ui-toolbars.js "$REPO_DIR/$TARGET_DIR"
-cp ./node_modules/oojs-ui/dist/oojs-ui-toolbars-{mediawiki,apex}.css "$REPO_DIR/$TARGET_DIR"
-cp ./node_modules/oojs-ui/dist/oojs-ui-windows.js "$REPO_DIR/$TARGET_DIR"
-cp ./node_modules/oojs-ui/dist/oojs-ui-windows-{mediawiki,apex}.css "$REPO_DIR/$TARGET_DIR"
-cp ./node_modules/oojs-ui/dist/oojs-ui-{mediawiki,apex}.js "$REPO_DIR/$TARGET_DIR"
+cp ./node_modules/oojs-ui/dist/oojs-ui-core.js{,.map} "$REPO_DIR/$TARGET_DIR"
+cp ./node_modules/oojs-ui/dist/oojs-ui-core-{wikimediaui,apex}.css "$REPO_DIR/$TARGET_DIR"
+cp ./node_modules/oojs-ui/dist/oojs-ui-widgets.js{,.map} "$REPO_DIR/$TARGET_DIR"
+cp ./node_modules/oojs-ui/dist/oojs-ui-widgets-{wikimediaui,apex}.css "$REPO_DIR/$TARGET_DIR"
+cp ./node_modules/oojs-ui/dist/oojs-ui-toolbars.js{,.map} "$REPO_DIR/$TARGET_DIR"
+cp ./node_modules/oojs-ui/dist/oojs-ui-toolbars-{wikimediaui,apex}.css "$REPO_DIR/$TARGET_DIR"
+cp ./node_modules/oojs-ui/dist/oojs-ui-windows.js{,.map} "$REPO_DIR/$TARGET_DIR"
+cp ./node_modules/oojs-ui/dist/oojs-ui-windows-{wikimediaui,apex}.css "$REPO_DIR/$TARGET_DIR"
+cp ./node_modules/oojs-ui/dist/oojs-ui-{wikimediaui,apex}.js{,.map} "$REPO_DIR/$TARGET_DIR"
 cp -R ./node_modules/oojs-ui/dist/i18n "$REPO_DIR/$TARGET_DIR"
 cp -R ./node_modules/oojs-ui/dist/images "$REPO_DIR/$TARGET_DIR"
-cp -R ./node_modules/oojs-ui/dist/themes/mediawiki/images "$REPO_DIR/$TARGET_DIR/themes/mediawiki"
-cp ./node_modules/oojs-ui/src/themes/mediawiki/*.json "$REPO_DIR/$TARGET_DIR/themes/mediawiki"
+cp -R ./node_modules/oojs-ui/dist/themes/wikimediaui/images "$REPO_DIR/$TARGET_DIR/themes/wikimediaui"
+cp ./node_modules/oojs-ui/src/themes/wikimediaui/*.json "$REPO_DIR/$TARGET_DIR/themes/wikimediaui"
 cp -R ./node_modules/oojs-ui/dist/themes/apex/images "$REPO_DIR/$TARGET_DIR/themes/apex"
 cp ./node_modules/oojs-ui/src/themes/apex/*.json "$REPO_DIR/$TARGET_DIR/themes/apex"
 
index d3e778c..267bd96 100755 (executable)
@@ -38,6 +38,9 @@ fi
 
 # Copy file(s)
 rsync --force ./node_modules/oojs/dist/oojs.jquery.js "$REPO_DIR/$TARGET_DIR"
+rsync --force ./node_modules/oojs/dist/AUTHORS.txt "$REPO_DIR/$TARGET_DIR"
+rsync --force ./node_modules/oojs/dist/LICENSE-MIT "$REPO_DIR/$TARGET_DIR"
+rsync --force ./node_modules/oojs/dist/README.md "$REPO_DIR/$TARGET_DIR"
 
 # Clean up temporary area
 rm -rf "$NPM_DIR"
index 47ef804..65c353a 100644 (file)
  * @author Gergő Tisza <tgr.huwiki@gmail.com>
  */
 
+use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\Logger\ConsoleSpi;
+use MediaWiki\MediaWikiServices;
+
 require_once __DIR__ . '/Maintenance.php';
 
 /**
@@ -46,8 +50,8 @@ class MediaWikiShell extends Maintenance {
                parent::__construct();
                $this->addOption( 'd',
                        'For back compatibility with eval.php. ' .
-                       '0 send debug to stdout. ' .
-                       'With 1 additionally initialize database with debugging ',
+                       '1 send debug to stderr. ' .
+                       'With 2 additionally initialize database with debugging ',
                        false, true
                );
        }
@@ -77,22 +81,16 @@ class MediaWikiShell extends Maintenance {
         * For back compatibility with eval.php
         */
        protected function setupLegacy() {
-               global $wgDebugLogFile;
-
                $d = intval( $this->getOption( 'd' ) );
                if ( $d > 0 ) {
-                       $wgDebugLogFile = 'php://stdout';
+                       LoggerFactory::registerProvider( new ConsoleSpi );
+                       // Some services hold Logger instances in object properties
+                       MediaWikiServices::resetGlobalInstance();
                }
                if ( $d > 1 ) {
                        # Set DBO_DEBUG (equivalent of $wgDebugDumpSql)
-                       # XXX copy pasted from eval.php :(
-                       $lb = wfGetLB();
-                       $serverCount = $lb->getServerCount();
-                       for ( $i = 0; $i < $serverCount; $i++ ) {
-                               $server = $lb->getServerInfo( $i );
-                               $server['flags'] |= DBO_DEBUG;
-                               $lb->setServerInfo( $i, $server );
-                       }
+                       wfGetDB( DB_MASTER )->setFlag( DBO_DEBUG );
+                       wfGetDB( DB_REPLICA )->setFlag( DBO_DEBUG );
                }
        }
 
index 70f9aaa..36e55f3 100644 (file)
@@ -26,6 +26,7 @@ require_once __DIR__ . '/Maintenance.php';
 
 use Wikimedia\Rdbms\ResultWrapper;
 use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\DBQueryError;
 
 /**
  * Maintenance script that sends SQL queries from the specified file to the database.
index cbb0c79..117e9cc 100644 (file)
@@ -22,6 +22,7 @@
  */
 
 use Wikimedia\Rdbms\DatabaseSqlite;
+use Wikimedia\Rdbms\DBError;
 
 /**
  * This class contains code common to different SQLite-related maintenance scripts
index 4f22843..b4514ec 100644 (file)
@@ -22,6 +22,8 @@
  * @see wfWaitForSlaves()
  */
 
+use Wikimedia\Rdbms\DBConnectionError;
+
 require __DIR__ . '/../commandLine.inc';
 
 if ( count( $args ) < 1 ) {
index e1fb791..14f6932 100644 (file)
@@ -311,9 +311,21 @@ CREATE TABLE /*_*/page (
   page_lang varbinary(35) DEFAULT NULL
 ) /*$wgDBTableOptions*/;
 
+-- The title index. Care must be taken to always specify a namespace when
+-- by title, so that the index is used. Even listing all known namespaces
+-- with IN() is better than omitting page_namespace from the WHERE clause.
 CREATE UNIQUE INDEX /*i*/name_title ON /*_*/page (page_namespace,page_title);
+
+-- The index for Special:Random
 CREATE INDEX /*i*/page_random ON /*_*/page (page_random);
+
+-- Questionable utility, used by ProofreadPage, possibly DynamicPageList.
+-- ApiQueryAllPages unconditionally filters on namespace and so hopefully does
+-- not use it.
 CREATE INDEX /*i*/page_len ON /*_*/page (page_len);
+
+-- The index for Special:Shortpages and Special:Longpages. Also SiteStats::articles()
+-- in 'comma' counting mode, MessageCache::loadFromDB().
 CREATE INDEX /*i*/page_redirect_namespace_len ON /*_*/page (page_is_redirect, page_namespace, page_len);
 
 --
@@ -375,11 +387,27 @@ CREATE TABLE /*_*/revision (
 ) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=1024;
 -- In case tables are created as MyISAM, use row hints for MySQL <5.0 to avoid 4GB limit
 
+-- The index is proposed for removal, do not use it in new code: T163532.
+-- Used for ordering revisions within a page by rev_id, which is usually
+-- incorrect, since rev_timestamp is normally the correct order. It can also
+-- be used by dumpBackup.php, if a page and rev_id range is specified.
 CREATE INDEX /*i*/rev_page_id ON /*_*/revision (rev_page, rev_id);
+
+-- Used by ApiQueryAllRevisions
 CREATE INDEX /*i*/rev_timestamp ON /*_*/revision (rev_timestamp);
+
+-- History index
 CREATE INDEX /*i*/page_timestamp ON /*_*/revision (rev_page,rev_timestamp);
+
+-- Logged-in user contributions index
 CREATE INDEX /*i*/user_timestamp ON /*_*/revision (rev_user,rev_timestamp);
+
+-- Anonymous user countributions index
 CREATE INDEX /*i*/usertext_timestamp ON /*_*/revision (rev_user_text,rev_timestamp);
+
+-- Credits index. This is scanned in order to compile credits lists for pages,
+-- in ApiQueryContributors. Also for ApiQueryRevisions if rvuser is specified
+-- and is a logged-in user.
 CREATE INDEX /*i*/page_user_timestamp ON /*_*/revision (rev_page,rev_user,rev_timestamp);
 
 --
@@ -499,8 +527,14 @@ CREATE TABLE /*_*/archive (
   ar_content_format varbinary(64) DEFAULT NULL
 ) /*$wgDBTableOptions*/;
 
+-- Index for Special:Undelete to page through deleted revisions
 CREATE INDEX /*i*/name_title_timestamp ON /*_*/archive (ar_namespace,ar_title,ar_timestamp);
+
+-- Index for Special:DeletedContributions
 CREATE INDEX /*i*/ar_usertext_timestamp ON /*_*/archive (ar_user_text,ar_timestamp);
+
+-- Index for linking archive rows with tables that normally link with revision
+-- rows, such as change_tag.
 CREATE INDEX /*i*/ar_revid ON /*_*/archive (ar_rev_id);
 
 
@@ -521,8 +555,13 @@ CREATE TABLE /*_*/pagelinks (
   pl_title varchar(255) binary NOT NULL default ''
 ) /*$wgDBTableOptions*/;
 
+-- Forward index, for page edit, save
 CREATE UNIQUE INDEX /*i*/pl_from ON /*_*/pagelinks (pl_from,pl_namespace,pl_title);
+
+-- Reverse index, for Special:Whatlinkshere
 CREATE INDEX /*i*/pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from);
+
+-- Index for Special:Whatlinkshere with namespace filter
 CREATE INDEX /*i*/pl_backlinks_namespace ON /*_*/pagelinks (pl_from_namespace,pl_namespace,pl_title,pl_from);
 
 
@@ -543,8 +582,13 @@ CREATE TABLE /*_*/templatelinks (
   tl_title varchar(255) binary NOT NULL default ''
 ) /*$wgDBTableOptions*/;
 
+-- Forward index, for page edit, save
 CREATE UNIQUE INDEX /*i*/tl_from ON /*_*/templatelinks (tl_from,tl_namespace,tl_title);
+
+-- Reverse index, for Special:Whatlinkshere
 CREATE INDEX /*i*/tl_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from);
+
+-- Index for Special:Whatlinkshere with namespace filter
 CREATE INDEX /*i*/tl_backlinks_namespace ON /*_*/templatelinks (tl_from_namespace,tl_namespace,tl_title,tl_from);
 
 
@@ -565,8 +609,13 @@ CREATE TABLE /*_*/imagelinks (
   il_to varchar(255) binary NOT NULL default ''
 ) /*$wgDBTableOptions*/;
 
+-- Forward index, for cache invalidation on file update, etc.
 CREATE UNIQUE INDEX /*i*/il_from ON /*_*/imagelinks (il_from,il_to);
+
+-- Reverse index, for Special:Whatlinkshere and file description page local usage
 CREATE INDEX /*i*/il_to ON /*_*/imagelinks (il_to,il_from);
+
+-- Index for Special:Whatlinkshere with namespace filter
 CREATE INDEX /*i*/il_backlinks_namespace ON /*_*/imagelinks (il_from_namespace,il_to,il_from);
 
 
@@ -690,9 +739,16 @@ CREATE TABLE /*_*/externallinks (
   el_index_60 varbinary(60) NOT NULL default ''
 ) /*$wgDBTableOptions*/;
 
+-- Forward index, for page edit, save
 CREATE INDEX /*i*/el_from ON /*_*/externallinks (el_from, el_to(40));
+
+-- Index for Special:LinkSearch exact search
 CREATE INDEX /*i*/el_to ON /*_*/externallinks (el_to(60), el_from);
+
+-- For Special:LinkSearch wildcard search
 CREATE INDEX /*i*/el_index ON /*_*/externallinks (el_index(60));
+
+-- For Special:LinkSearch wildcard search with efficient paging by el_id
 CREATE INDEX /*i*/el_index_60 ON /*_*/externallinks (el_index_60, el_id);
 CREATE INDEX /*i*/el_from_index_60 ON /*_*/externallinks (el_from, el_index_60, el_id);
 
@@ -710,7 +766,10 @@ CREATE TABLE /*_*/langlinks (
   ll_title varchar(255) binary NOT NULL default ''
 ) /*$wgDBTableOptions*/;
 
+-- Forward index, for page edit, save, ApiQueryLanglinks
 CREATE UNIQUE INDEX /*i*/ll_from ON /*_*/langlinks (ll_from, ll_lang);
+
+-- Index for ApiQueryLangbacklinks
 CREATE INDEX /*i*/ll_lang ON /*_*/langlinks (ll_lang, ll_title);
 
 
@@ -728,8 +787,13 @@ CREATE TABLE /*_*/iwlinks (
   iwl_title varchar(255) binary NOT NULL default ''
 ) /*$wgDBTableOptions*/;
 
+-- Forward index, for page edit, save, ApiQueryIWLinks
 CREATE UNIQUE INDEX /*i*/iwl_from ON /*_*/iwlinks (iwl_from, iwl_prefix, iwl_title);
+
+-- Index for ApiQueryIWBacklinks
 CREATE INDEX /*i*/iwl_prefix_title_from ON /*_*/iwlinks (iwl_prefix, iwl_title, iwl_from);
+
+-- Index for ApiQueryIWLinks
 CREATE INDEX /*i*/iwl_prefix_from_title ON /*_*/iwlinks (iwl_prefix, iwl_from, iwl_title);
 
 
@@ -841,10 +905,19 @@ CREATE TABLE /*_*/ipblocks (
 -- Any new options which prevent collisions should be included
 CREATE UNIQUE INDEX /*i*/ipb_address ON /*_*/ipblocks (ipb_address(255), ipb_user, ipb_auto, ipb_anon_only);
 
+-- For querying whether a logged-in user is blocked
 CREATE INDEX /*i*/ipb_user ON /*_*/ipblocks (ipb_user);
+
+-- For querying whether an IP address is in any range
 CREATE INDEX /*i*/ipb_range ON /*_*/ipblocks (ipb_range_start(8), ipb_range_end(8));
+
+-- Index for Special:BlockList
 CREATE INDEX /*i*/ipb_timestamp ON /*_*/ipblocks (ipb_timestamp);
+
+-- Index for table pruning
 CREATE INDEX /*i*/ipb_expiry ON /*_*/ipblocks (ipb_expiry);
+
+-- Index for removing autoblocks when a parent block is removed
 CREATE INDEX /*i*/ipb_parent_block_id ON /*_*/ipblocks (ipb_parent_block_id);
 
 
@@ -1144,13 +1217,29 @@ CREATE TABLE /*_*/recentchanges (
   rc_params blob NULL
 ) /*$wgDBTableOptions*/;
 
+-- Special:Recentchanges
 CREATE INDEX /*i*/rc_timestamp ON /*_*/recentchanges (rc_timestamp);
+
+-- Special:Watchlist
 CREATE INDEX /*i*/rc_namespace_title ON /*_*/recentchanges (rc_namespace, rc_title);
+
+-- Special:Recentchangeslinked when finding changes in pages linked from a page
 CREATE INDEX /*i*/rc_cur_id ON /*_*/recentchanges (rc_cur_id);
+
+-- Special:Newpages
 CREATE INDEX /*i*/new_name_timestamp ON /*_*/recentchanges (rc_new,rc_namespace,rc_timestamp);
+
+-- Blank unless $wgPutIPinRC=true (false at WMF), possibly used by extensions,
+-- but mostly replaced by CheckUser.
 CREATE INDEX /*i*/rc_ip ON /*_*/recentchanges (rc_ip);
+
+-- Probably intended for Special:NewPages namespace filter
 CREATE INDEX /*i*/rc_ns_usertext ON /*_*/recentchanges (rc_namespace, rc_user_text);
+
+-- SiteStats active user count, Special:ActiveUsers, Special:NewPages user filter
 CREATE INDEX /*i*/rc_user_text ON /*_*/recentchanges (rc_user_text, rc_timestamp);
+
+-- ApiQueryRecentChanges (T140108)
 CREATE INDEX /*i*/rc_name_type_patrolled_timestamp ON /*_*/recentchanges (rc_namespace, rc_type, rc_patrolled, rc_timestamp);
 
 
@@ -1172,8 +1261,13 @@ CREATE TABLE /*_*/watchlist (
 
 ) /*$wgDBTableOptions*/;
 
+-- Special:Watchlist
 CREATE UNIQUE INDEX /*i*/wl_user ON /*_*/watchlist (wl_user, wl_namespace, wl_title);
+
+-- Special:Movepage (WatchedItemStore::duplicateEntry)
 CREATE INDEX /*i*/namespace_title ON /*_*/watchlist (wl_namespace, wl_title);
+
+-- ApiQueryWatchlistRaw changed filter
 CREATE INDEX /*i*/wl_user_notificationtimestamp ON /*_*/watchlist (wl_user, wl_notificationtimestamp);
 
 
@@ -1307,14 +1401,32 @@ CREATE TABLE /*_*/logging (
   log_deleted tinyint unsigned NOT NULL default 0
 ) /*$wgDBTableOptions*/;
 
+-- Special:Log type filter
 CREATE INDEX /*i*/type_time ON /*_*/logging (log_type, log_timestamp);
+
+-- Special:Log performer filter
 CREATE INDEX /*i*/user_time ON /*_*/logging (log_user, log_timestamp);
+
+-- Special:Log title filter, log extract
 CREATE INDEX /*i*/page_time ON /*_*/logging (log_namespace, log_title, log_timestamp);
+
+-- Special:Log unfiltered
 CREATE INDEX /*i*/times ON /*_*/logging (log_timestamp);
+
+-- Special:Log filter by performer and type
 CREATE INDEX /*i*/log_user_type_time ON /*_*/logging (log_user, log_type, log_timestamp);
+
+-- Apparently just used for a few maintenance pages (findMissingFiles.php, Flow).
+-- Could be removed?
 CREATE INDEX /*i*/log_page_id_time ON /*_*/logging (log_page,log_timestamp);
+
+-- Special:Log action filter
 CREATE INDEX /*i*/type_action ON /*_*/logging (log_type, log_action, log_timestamp);
+
+-- Special:Log filter by type and anonymous performer
 CREATE INDEX /*i*/log_user_text_type_time ON /*_*/logging (log_user_text, log_type, log_timestamp);
+
+-- Special:Log filter by anonymous performer
 CREATE INDEX /*i*/log_user_text_time ON /*_*/logging (log_user_text, log_timestamp);
 
 
index eb717e8..287a40c 100644 (file)
@@ -59,7 +59,7 @@ unset( $lines );
 
 $lines = explode( "\n", shell_exec( 'git log --format="%aN"' ) );
 foreach ( $lines as $line ) {
-       if ( empty( $line ) )  {
+       if ( empty( $line ) ) {
                continue;
        }
        if ( substr( $line, 0, 5 ) === '[BOT]' ) {
index 29388c5..66c13cd 100644 (file)
@@ -9,7 +9,7 @@
   "devDependencies": {
     "deepmerge": "1.3.2",
     "eslint": "3.12.2",
-    "eslint-config-wikimedia": "0.3.0",
+    "eslint-config-wikimedia": "0.4.0",
     "grunt": "1.0.1",
     "grunt-banana-checker": "0.6.0",
     "grunt-contrib-copy": "1.0.0",
     "karma-firefox-launcher": "1.0.1",
     "karma-mocha-reporter": "2.2.3",
     "karma-qunit": "1.0.0",
-    "qunitjs": "1.22.0",
+    "qunitjs": "1.23.1",
     "stylelint-config-wikimedia": "0.4.1",
     "wdio-junit-reporter": "0.2.0",
     "wdio-mocha-framework": "0.5.8",
+    "wdio-sauce-service": "^0.3.1",
     "wdio-spec-reporter": "0.0.5",
     "webdriverio": "4.6.2"
   }
index 4693b42..440604e 100644 (file)
--- a/phpcs.xml
+++ b/phpcs.xml
@@ -1,6 +1,32 @@
 <?xml version="1.0"?>
 <ruleset name="MediaWiki">
-       <rule ref="vendor/mediawiki/mediawiki-codesniffer/MediaWiki" />
+       <rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
+               <!-- Disable rules added in 0.8.0 that don't pass yet -->
+               <exclude name="MediaWiki.Commenting.FunctionComment.ExtraParamComment" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamComment" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamName" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamTag" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.MissingReturn" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.Missing.Protected" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.Missing.Public" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.ParamNameNoMatch" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.SpacingAfter" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.SpacingAfterParamName" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.SpacingAfterParamType" />
+               <exclude name="MediaWiki.Commenting.IllegalSingleLineComment.IllegalSingleLineCommentStart" />
+               <exclude name="MediaWiki.Commenting.IllegalSingleLineComment.IllegalSingleLineCommentEnd" />
+               <exclude name="MediaWiki.ControlStructures.AssignmentInControlStructures.AssignmentInControlStructures" />
+               <exclude name="MediaWiki.ExtraCharacters.ParenthesesAroundKeyword.ParenthesesAroundKeywords" />
+               <exclude name="MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName" />
+               <exclude name="MediaWiki.WhiteSpace.DisallowEmptyLineFunctions.NoEmptyLine" />
+               <exclude name="MediaWiki.WhiteSpace.SpaceBeforeControlStructureBrace.EmptyLines" />
+               <exclude name="MediaWiki.WhiteSpace.SpaceBeforeClassBrace.NoSpaceBeforeBrace" />
+               <exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment" />
+               <exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.SingleSpaceBeforeSingleLineComment" />
+               <exclude name="MediaWiki.Usage.DbrQueryUsage.DbrQueryFound" />
+               <exclude name="MediaWiki.Usage.ExtendClassUsage.FunctionVarUsage" />
+               <exclude name="MediaWiki.Usage.SuperGlobalsUsage.SuperGlobals" />
+       </rule>
        <rule ref="MediaWiki.NamingConventions.PrefixedGlobalFunctions">
                <properties>
                        <property name="ignoreList" type="array" value="bfNormalizeTitleStrReplace,bfNormalizeTitleStrTr,cdbShowHelp,codepointToUtf8,compare_point,cssfilter,escapeSingleString,findAuxFile,findFiles,getEscapedProfileUrl,getFileCommentFromSourceWiki,getFileUserFromSourceWiki,hexSequenceToUtf8,mccGetHelp,mccShowUsage,mimeTypeMatch,moveToExternal,NothingFunction,NothingFunctionData,resolveStub,resolveStubs,showUsage,splitFilename,utf8ToCodepoint,utf8ToHexSequence" />
        <rule ref="PSR2.Methods.MethodDeclaration.Underscore">
                <exclude-pattern>*/includes/StubObject.php</exclude-pattern>
        </rule>
-       <rule ref="MediaWiki.ControlStructures.AssignmentInControlStructures.AssignmentInControlStructures">
+       <rule ref="Generic.ControlStructures.InlineControlStructure.NotAllowed">
                <severity>0</severity>
        </rule>
-       <rule ref="Generic.ControlStructures.InlineControlStructure.NotAllowed">
+       <rule ref="Generic.Formatting.NoSpaceAfterCast.SpaceFound">
                <severity>0</severity>
        </rule>
        <exclude-pattern>node_modules/</exclude-pattern>
index 71a5f61..eab00cf 100644 (file)
@@ -904,6 +904,7 @@ return [
                'dependencies' => [
                        'mediawiki.api',
                        'mediawiki.Title',
+                       'mediawiki.user',
                ],
                'targets' => [ 'desktop', 'mobile' ],
        ],
@@ -1027,6 +1028,7 @@ return [
                'styles' => 'resources/src/mediawiki/mediawiki.filewarning.less',
                'dependencies' => [
                        'oojs-ui-core',
+                       'oojs-ui.styles.icons-alerts',
                ],
        ],
        'mediawiki.ForeignApi' => [
@@ -1056,7 +1058,9 @@ return [
                'targets' => [ 'desktop', 'mobile' ],
        ],
        'mediawiki.hlist' => [
-               'styles' => 'resources/src/mediawiki/mediawiki.hlist.css',
+               'skinStyles' => [
+                       'default' => 'resources/src/mediawiki/mediawiki.hlist.css',
+               ],
        ],
        'mediawiki.htmlform' => [
                'scripts' => [
@@ -1148,7 +1152,9 @@ return [
                        'default' => 'resources/src/mediawiki/mediawiki.notification.css',
                ],
                'scripts' => 'resources/src/mediawiki/mediawiki.notification.js',
-               'dependencies' => 'mediawiki.page.startup',
+               'dependencies' => [
+                       'mediawiki.util',
+               ],
                'targets' => [ 'desktop', 'mobile' ],
        ],
        'mediawiki.notify' => [
@@ -1351,7 +1357,6 @@ return [
                'dependencies' => [
                        'mediawiki.api',
                        'mediawiki.api.user',
-                       'mediawiki.cookie',
                        'mediawiki.storage',
                        'user.options',
                        'user.tokens',
@@ -1410,12 +1415,14 @@ return [
                'styles' => 'resources/src/mediawiki.action/mediawiki.action.edit.css',
                'dependencies' => [
                        'mediawiki.action.edit.styles',
+                       'jquery.accessKeyLabel',
                        'jquery.textSelection',
                        'jquery.byteLimit',
                        'mediawiki.api',
                ],
        ],
        'mediawiki.action.edit.styles' => [
+               'targets' => [ 'desktop', 'mobile' ],
                'styles' => 'resources/src/mediawiki.action/mediawiki.action.edit.styles.css',
        ],
        'mediawiki.action.edit.collapsibleFooter' => [
@@ -1474,7 +1481,6 @@ return [
                'scripts' => 'resources/src/mediawiki.action/mediawiki.action.view.dblClickEdit.js',
                'dependencies' => [
                        'mediawiki.util',
-                       'mediawiki.page.startup',
                        'user.options',
                ],
        ],
@@ -1491,14 +1497,11 @@ return [
                'targets' => [ 'desktop', 'mobile' ]
        ],
        'mediawiki.action.view.postEdit' => [
-               'templates' => [
-                       'postEdit.html' => 'resources/src/mediawiki.action/templates/postEdit.html',
-               ],
                'scripts' => 'resources/src/mediawiki.action/mediawiki.action.view.postEdit.js',
-               'styles' => 'resources/src/mediawiki.action/mediawiki.action.view.postEdit.css',
+               'styles' => 'resources/src/mediawiki.action/mediawiki.action.view.postEdit.less',
                'dependencies' => [
-                       'mediawiki.cookie',
-                       'mediawiki.jqueryMsg'
+                       'mediawiki.jqueryMsg',
+                       'mediawiki.notification'
                ],
                'messages' => [
                        'postedit-confirmation-created',
@@ -1649,7 +1652,8 @@ return [
                        'oojs',
                        'oojs-ui-core',
                        'oojs-ui-widgets',
-                       'oojs-ui.styles.icons-media'
+                       'oojs-ui.styles.icons-media',
+                       'oojs-ui.styles.icons-movement'
                ],
                'messages' => [
                        'gallery-slideshow-toggle'
@@ -1666,13 +1670,11 @@ return [
        ],
        'mediawiki.page.startup' => [
                'scripts' => 'resources/src/mediawiki/page/startup.js',
-               'dependencies' => 'mediawiki.util',
                'targets' => [ 'desktop', 'mobile' ],
        ],
        'mediawiki.page.patrol.ajax' => [
                'scripts' => 'resources/src/mediawiki/page/patrol.ajax.js',
                'dependencies' => [
-                       'mediawiki.page.startup',
                        'mediawiki.api',
                        'mediawiki.util',
                        'mediawiki.Title',
@@ -1717,6 +1719,7 @@ return [
                'dependencies' => [
                        'mediawiki.api.rollback',
                        'mediawiki.notify',
+                       'mediawiki.util',
                        'jquery.spinner',
                ],
                'messages' => [
@@ -1742,28 +1745,40 @@ return [
        'mediawiki.rcfilters.filters.dm' => [
                'scripts' => [
                        'resources/src/mediawiki.rcfilters/mw.rcfilters.js',
+                       'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ItemModel.js',
                        'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterItem.js',
                        'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js',
                        'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js',
+                       'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueryItemModel.js',
+                       'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js',
                        'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js',
                        'resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js',
+                       'resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js',
                ],
                'dependencies' => [
                        'oojs',
+                       'mediawiki.api',
+                       'mediawiki.api.options',
                        'mediawiki.Uri',
+                       'mediawiki.user',
                ],
        ],
        'mediawiki.rcfilters.filters.ui' => [
                'scripts' => [
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CheckboxInputWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js',
+                       'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ItemMenuOptionWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuOptionWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuSectionOptionWidget.js',
+                       'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.TagItemWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagItemWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuHeaderWidget.js',
-                       'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterFloatingMenuSelectWidget.js',
+                       'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js',
+                       'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SavedLinksListWidget.js',
+                       'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SavedLinksListItemWidget.js',
+                       'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SaveFiltersPopupButtonWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterItemHighlightButton.js',
                        'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.HighlightColorPickerWidget.js',
@@ -1776,24 +1791,41 @@ return [
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.Overlay.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterTagMultiselectWidget.less',
+                       'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ItemMenuOptionWidget.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuOptionWidget.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuSectionOptionWidget.less',
-                       'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterTagItemWidget.less',
+                       'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.TagItemWidget.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuHeaderWidget.less',
-                       'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterFloatingMenuSelectWidget.less',
+                       'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.MenuSelectWidget.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterWrapperWidget.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ChangesListWrapperWidget.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.HighlightColorPickerWidget.less',
                        'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterItemHighlightButton.less',
+                       'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.SavedLinksListWidget.less',
+                       'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.SavedLinksListItemWidget.less',
+                       'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.SaveFiltersPopupButtonWidget.less',
                ],
                'skinStyles' => [
                        'monobook' => [
                                'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.Overlay.monobook.less',
                                'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.CapsuleItemWidget.monobook.less',
+                               'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuOptionWidget.monobook.less',
                        ],
                ],
                'messages' => [
                        'rcfilters-activefilters',
+                       'rcfilters-quickfilters',
+                       'rcfilters-quickfilters-placeholder-title',
+                       'rcfilters-quickfilters-placeholder-description',
+                       'rcfilters-savedqueries-defaultlabel',
+                       'rcfilters-savedqueries-rename',
+                       'rcfilters-savedqueries-setdefault',
+                       'rcfilters-savedqueries-unsetdefault',
+                       'rcfilters-savedqueries-remove',
+                       'rcfilters-savedqueries-new-name-label',
+                       'rcfilters-savedqueries-add-new-title',
+                       'rcfilters-savedqueries-apply-label',
+                       'rcfilters-savedqueries-cancel-label',
                        'rcfilters-restore-default-filters',
                        'rcfilters-clear-all-filters',
                        'rcfilters-search-placeholder',
@@ -1809,6 +1841,14 @@ return [
                        'rcfilters-noresults-conflict',
                        'rcfilters-state-message-subset',
                        'rcfilters-state-message-fullcoverage',
+                       'rcfilters-filter-excluded',
+                       'rcfilters-tag-prefix-namespace',
+                       'rcfilters-tag-prefix-namespace-inverted',
+                       'rcfilters-tag-prefix-tags',
+                       'rcfilters-view-tags',
+                       'blanknamespace',
+                       'namespaces',
+                       'invert',
                        'recentchanges-noresult',
                        'quotation-marks',
                ],
@@ -1817,10 +1857,12 @@ return [
                        'mediawiki.language',
                        'mediawiki.user',
                        'mediawiki.rcfilters.filters.dm',
+                       'oojs-ui.styles.icons-content',
                        'oojs-ui.styles.icons-moderation',
                        'oojs-ui.styles.icons-editing-core',
                        'oojs-ui.styles.icons-editing-styling',
                        'oojs-ui.styles.icons-interactions',
+                       'oojs-ui.styles.icons-content',
                ],
        ],
        'mediawiki.special' => [
@@ -1838,7 +1880,12 @@ return [
                'dependencies' => [
                        'mediawiki.api',
                        'mediawiki.jqueryMsg',
+                       'mediawiki.util',
                        'oojs-ui',
+                       'oojs-ui.styles.icons-content',
+                       'oojs-ui.styles.icons-editing-advanced',
+                       'oojs-ui.styles.icons-interactions',
+                       'oojs-ui.styles.icons-moderation',
                        'mediawiki.widgets.datetime',
                ],
                'messages' => [
@@ -1874,6 +1921,7 @@ return [
                        'apisandbox-sending-request',
                        'apisandbox-loading-results',
                        'apisandbox-results-error',
+                       'apisandbox-results-login-suppressed',
                        'apisandbox-request-selectformat-label',
                        'apisandbox-request-format-url-label',
                        'apisandbox-request-url-label',
@@ -1896,7 +1944,6 @@ return [
        ],
        'mediawiki.special.block' => [
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.block.js',
-               'styles' => 'resources/src/mediawiki.special/mediawiki.special.block.css',
                'dependencies' => [
                        'mediawiki.util',
                        'mediawiki.htmlform',
@@ -1914,6 +1961,9 @@ return [
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.changeslist.css',
                'targets' => [ 'desktop', 'mobile' ],
        ],
+       'mediawiki.special.changeslist.enhanced' => [
+               'styles' => 'resources/src/mediawiki.special/mediawiki.special.changeslist.enhanced.css',
+       ],
        'mediawiki.special.changeslist.legend' => [
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.changeslist.legend.css',
                'targets' => [ 'desktop', 'mobile' ],
@@ -1926,15 +1976,19 @@ return [
                ],
                'targets' => [ 'desktop', 'mobile' ],
        ],
-       'mediawiki.special.changeslist.enhanced' => [
-               'styles' => 'resources/src/mediawiki.special/mediawiki.special.changeslist.enhanced.css',
-       ],
        'mediawiki.special.changeslist.visitedstatus' => [
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.changeslist.visitedstatus.js',
        ],
        'mediawiki.special.comparepages.styles' => [
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.comparepages.styles.less',
        ],
+       'mediawiki.special.contributions' => [
+               'scripts' => 'resources/src/mediawiki.special/mediawiki.special.contributions.js',
+               'dependencies' => [
+                       'mediawiki.widgets.DateInputWidget',
+                       'mediawiki.jqueryMsg',
+               ]
+       ],
        'mediawiki.special.edittags' => [
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.edittags.js',
                'dependencies' => [
@@ -1961,6 +2015,12 @@ return [
        'mediawiki.special.movePage.styles' => [
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.movePage.css',
        ],
+       'mediawiki.special.newFiles' => [
+               'scripts' => 'resources/src/mediawiki.special/mediawiki.special.newFiles.js',
+               'dependencies' => [
+                       'mediawiki.widgets.datetime',
+               ],
+       ],
        'mediawiki.special.pageLanguage' => [
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.pageLanguage.js',
                'dependencies' => [
@@ -1984,13 +2044,6 @@ return [
                        'mediawiki.notification.convertmessagebox',
                ],
        ],
-       'mediawiki.special.userrights' => [
-               'styles' => 'resources/src/mediawiki.special/mediawiki.special.userrights.css',
-               'scripts' => 'resources/src/mediawiki.special/mediawiki.special.userrights.js',
-               'dependencies' => [
-                       'mediawiki.notification.convertmessagebox',
-               ],
-       ],
        'mediawiki.special.preferences.styles' => [
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.preferences.styles.css',
        ],
@@ -2008,18 +2061,10 @@ return [
                        'powersearch-togglenone',
                ],
        ],
-       'mediawiki.special.search.styles' => [
-               'styles' => 'resources/src/mediawiki.special/mediawiki.special.search.styles.css',
-               'targets' => [ 'desktop', 'mobile' ],
-       ],
-       'mediawiki.special.search.interwikiwidget.styles' => [
-               'styles' => 'resources/src/mediawiki.special/'
-                       . 'mediawiki.special.search.interwikiwidget.styles.less',
-               'targets' => [ 'desktop', 'mobile' ]
-       ],
        'mediawiki.special.search.commonsInterwikiWidget' => [
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.search.commonsInterwikiWidget.js',
                'dependencies' => [
+                       'mediawiki.api',
                        'mediawiki.Uri',
                        'mediawiki.jqueryMsg'
                ],
@@ -2029,9 +2074,38 @@ return [
                        'searchprofile-images'
                ],
        ],
+       'mediawiki.special.search.interwikiwidget.styles' => [
+               'styles' => 'resources/src/mediawiki.special/'
+                       . 'mediawiki.special.search.interwikiwidget.styles.less',
+               'targets' => [ 'desktop', 'mobile' ]
+       ],
+       'mediawiki.special.search.styles' => [
+               'styles' => 'resources/src/mediawiki.special/mediawiki.special.search.styles.css',
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
        'mediawiki.special.undelete' => [
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.undelete.js',
        ],
+       'mediawiki.special.unwatchedPages' => [
+               'scripts' => 'resources/src/mediawiki.special/mediawiki.special.unwatchedPages.js',
+               'styles' => 'resources/src/mediawiki.special/mediawiki.special.unwatchedPages.css',
+               'messages' => [
+                       'addedwatchtext-short',
+                       'removedwatchtext-short',
+                       'unwatch',
+                       'unwatching',
+                       'watch',
+                       'watcherrortext',
+                       'watching',
+               ],
+               'dependencies' => [
+                       'mediawiki.api',
+                       'mediawiki.api.watch',
+                       'mediawiki.notify',
+                       'mediawiki.Title',
+                       'mediawiki.util',
+               ],
+       ],
        'mediawiki.special.upload' => [
                'templates' => [
                        'thumbnail.html' => 'resources/src/mediawiki.special/templates/thumbnail.html',
@@ -2068,11 +2142,6 @@ return [
                        'resources/src/mediawiki.special/mediawiki.special.userlogin.common.css',
                ],
        ],
-       'mediawiki.special.userlogin.signup.styles' => [
-               'styles' => [
-                       'resources/src/mediawiki.special/mediawiki.special.userlogin.signup.css',
-               ],
-       ],
        'mediawiki.special.userlogin.login.styles' => [
                'styles' => [
                        'resources/src/mediawiki.special/mediawiki.special.userlogin.login.css',
@@ -2092,24 +2161,16 @@ return [
                        'mediawiki.htmlform.checker',
                ],
        ],
-       'mediawiki.special.unwatchedPages' => [
-               'scripts' => 'resources/src/mediawiki.special/mediawiki.special.unwatchedPages.js',
-               'styles' => 'resources/src/mediawiki.special/mediawiki.special.unwatchedPages.css',
-               'messages' => [
-                       'addedwatchtext-short',
-                       'removedwatchtext-short',
-                       'unwatch',
-                       'unwatching',
-                       'watch',
-                       'watcherrortext',
-                       'watching',
+       'mediawiki.special.userlogin.signup.styles' => [
+               'styles' => [
+                       'resources/src/mediawiki.special/mediawiki.special.userlogin.signup.css',
                ],
+       ],
+       'mediawiki.special.userrights' => [
+               'styles' => 'resources/src/mediawiki.special/mediawiki.special.userrights.css',
+               'scripts' => 'resources/src/mediawiki.special/mediawiki.special.userrights.js',
                'dependencies' => [
-                       'mediawiki.api',
-                       'mediawiki.api.watch',
-                       'mediawiki.notify',
-                       'mediawiki.Title',
-                       'mediawiki.util',
+                       'mediawiki.notification.convertmessagebox',
                ],
        ],
        'mediawiki.special.watchlist' => [
@@ -2293,7 +2354,17 @@ return [
                ],
                'dependencies' => [
                        'oojs-ui-widgets',
+                       'oojs-ui.styles.icons-movement',
                        'moment',
+                       'mediawiki.widgets.DateInputWidget.styles',
+               ],
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
+       'mediawiki.widgets.DateInputWidget.styles' => [
+               'skinStyles' => [
+                       'default' => [
+                               'resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.styles.less',
+                       ],
                ],
                'targets' => [ 'desktop', 'mobile' ],
        ],
@@ -2357,6 +2428,8 @@ return [
                ],
                'dependencies' => [
                        'oojs-ui-core',
+                       'oojs-ui.styles.icons-moderation',
+                       'oojs-ui.styles.icons-movement',
                ],
                'targets' => [ 'desktop', 'mobile' ],
        ],
@@ -2383,6 +2456,18 @@ return [
                ],
                'targets' => [ 'desktop', 'mobile' ],
        ],
+       'mediawiki.widgets.SelectWithInputWidget' => [
+               'scripts' => 'resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.js',
+               'dependencies' => [
+                       'mediawiki.widgets.SelectWithInputWidget.styles',
+                       'oojs-ui-widgets',
+               ],
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
+       'mediawiki.widgets.SelectWithInputWidget.styles' => [
+               'styles' => 'resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.base.css',
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
        'mediawiki.widgets.MediaSearch' => [
                'scripts' => [
                        'resources/src/mediawiki.widgets/MediaSearch/mw.widgets.APIResultsProvider.js',
@@ -2402,6 +2487,7 @@ return [
                        'oojs-ui-widgets',
                        'mediawiki.ForeignApi',
                        'mediawiki.Title',
+                       'mediawiki.util',
                ],
                'messages' => [
                        'mw-widgets-mediasearch-noresults',
@@ -2414,6 +2500,7 @@ return [
                        'resources/src/mediawiki.widgets/mw.widgets.UserInputWidget.js',
                ],
                'dependencies' => [
+                       'mediawiki.api',
                        'oojs-ui-widgets',
                ],
                'targets' => [ 'desktop', 'mobile' ],
@@ -2423,6 +2510,7 @@ return [
                        'resources/src/mediawiki.widgets/mw.widgets.UsersMultiselectWidget.js',
                ],
                'dependencies' => [
+                       'mediawiki.api',
                        'oojs-ui-widgets',
                ],
                'targets' => [ 'desktop', 'mobile' ],
@@ -2433,6 +2521,7 @@ return [
                ],
                'dependencies' => [
                        'mediawiki.searchSuggest',
+                       'oojs-ui.styles.icons-interactions',
                        // FIXME: Needs TitleInputWidget only
                        'mediawiki.widgets',
                ],
@@ -2455,6 +2544,7 @@ return [
                        ],
                ],
                'dependencies' => [
+                       'mediawiki.api',
                        'oojs-ui-core',
                ],
        ],
@@ -2501,5 +2591,171 @@ return [
        ],
 
        /* OOjs UI */
-       // @see ResourcesOOUI.php
+
+       // Omnibus module.
+       'oojs-ui' => [
+               'dependencies' => [
+                       'oojs-ui-core',
+                       'oojs-ui-widgets',
+                       'oojs-ui-toolbars',
+                       'oojs-ui-windows',
+               ],
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
+
+       // The core JavaScript library.
+       'oojs-ui-core' => [
+               'class' => 'ResourceLoaderOOUIFileModule',
+               'scripts' => [
+                       'resources/lib/oojs-ui/oojs-ui-core.js',
+                       'resources/src/oojs-ui-local.js',
+               ],
+               'themeScripts' => 'core',
+               'dependencies' => [
+                       'oojs',
+                       'oojs-ui-core.styles',
+                       'oojs-ui.styles.indicators',
+                       'oojs-ui.styles.textures',
+                       'mediawiki.language',
+                       'oojs-ui.styles.icons-content',
+                       'oojs-ui.styles.icons-alerts',
+                       'oojs-ui.styles.icons-interactions',
+               ],
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
+       // This contains only the styles required by core widgets.
+       'oojs-ui-core.styles' => [
+               'class' => 'ResourceLoaderOOUIFileModule',
+               'styles' => 'resources/src/oojs-ui-local.css', // HACK, see inside the file
+               'themeStyles' => 'core',
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
+       // Additional widgets and layouts module.
+       'oojs-ui-widgets' => [
+               'class' => 'ResourceLoaderOOUIFileModule',
+               'scripts' => 'resources/lib/oojs-ui/oojs-ui-widgets.js',
+               'themeStyles' => 'widgets',
+               'dependencies' => [
+                       'oojs-ui-core',
+                       'oojs-ui.styles.icons-interactions',
+                       'oojs-ui.styles.icons-content',
+                       'oojs-ui.styles.icons-editing-advanced',
+                       'oojs-ui.styles.icons-movement',
+                       'oojs-ui.styles.icons-moderation',
+               ],
+               'messages' => [
+                       'ooui-outline-control-move-down',
+                       'ooui-outline-control-move-up',
+                       'ooui-outline-control-remove',
+                       'ooui-selectfile-button-select',
+                       'ooui-selectfile-dragdrop-placeholder',
+                       'ooui-selectfile-not-supported',
+                       'ooui-selectfile-placeholder',
+               ],
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
+       // Toolbar and tools module.
+       'oojs-ui-toolbars' => [
+               'class' => 'ResourceLoaderOOUIFileModule',
+               'scripts' => 'resources/lib/oojs-ui/oojs-ui-toolbars.js',
+               'themeStyles' => 'toolbars',
+               'dependencies' => [
+                       'oojs-ui-core',
+                       'oojs-ui.styles.icons-movement',
+               ],
+               'messages' => [
+                       'ooui-toolbar-more',
+                       'ooui-toolgroup-collapse',
+                       'ooui-toolgroup-expand',
+               ],
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
+       // Windows and dialogs module.
+       'oojs-ui-windows' => [
+               'class' => 'ResourceLoaderOOUIFileModule',
+               'scripts' => 'resources/lib/oojs-ui/oojs-ui-windows.js',
+               'themeStyles' => 'windows',
+               'dependencies' => [
+                       'oojs-ui-core',
+                       'oojs-ui.styles.icons-movement',
+               ],
+               'messages' => [
+                       'ooui-dialog-message-accept',
+                       'ooui-dialog-message-reject',
+                       'ooui-dialog-process-continue',
+                       'ooui-dialog-process-dismiss',
+                       'ooui-dialog-process-error',
+                       'ooui-dialog-process-retry',
+               ],
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
+
+       'oojs-ui.styles.indicators' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'indicators',
+       ],
+       'oojs-ui.styles.textures' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'textures',
+       ],
+       'oojs-ui.styles.icons-accessibility' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-accessibility',
+       ],
+       'oojs-ui.styles.icons-alerts' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-alerts',
+       ],
+       'oojs-ui.styles.icons-content' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-content',
+       ],
+       'oojs-ui.styles.icons-editing-advanced' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-editing-advanced',
+       ],
+       'oojs-ui.styles.icons-editing-core' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-editing-core',
+       ],
+       'oojs-ui.styles.icons-editing-list' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-editing-list',
+       ],
+       'oojs-ui.styles.icons-editing-styling' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-editing-styling',
+       ],
+       'oojs-ui.styles.icons-interactions' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-interactions',
+       ],
+       'oojs-ui.styles.icons-layout' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-layout',
+       ],
+       'oojs-ui.styles.icons-location' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-location',
+       ],
+       'oojs-ui.styles.icons-media' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-media',
+       ],
+       'oojs-ui.styles.icons-moderation' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-moderation',
+       ],
+       'oojs-ui.styles.icons-movement' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-movement',
+       ],
+       'oojs-ui.styles.icons-user' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-user',
+       ],
+       'oojs-ui.styles.icons-wikimedia' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-wikimedia',
+       ],
 ];
diff --git a/resources/ResourcesOOUI.php b/resources/ResourcesOOUI.php
deleted file mode 100644 (file)
index 9339e98..0000000
+++ /dev/null
@@ -1,173 +0,0 @@
-<?php
-/**
- * Definition of OOjs UI ResourceLoader modules.
- *
- * 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' ) ) {
-       die( 'Not an entry point.' );
-}
-
-// WARNING: OOjs-UI is NOT TESTED with older browsers and is likely to break
-// if loaded in browsers that don't support ES5
-return call_user_func( function () {
-       $themes = ExtensionRegistry::getInstance()->getAttribute( 'SkinOOUIThemes' );
-       // We only use the theme names for file names, and they are lowercase
-       $themes = array_map( 'strtolower', $themes );
-       $themes['default'] = 'mediawiki';
-
-       // Helper function to generate paths to files used in 'skinStyles' and 'skinScripts'.
-       $getSkinSpecific = function ( $module, $ext = 'css' ) use ( $themes ) {
-               return array_combine(
-                       array_keys( $themes ),
-                       array_map( function ( $theme ) use ( $module, $ext ) {
-                               $module = $module ? "$module-" : '';
-                               // TODO Allow extensions to specify this path somehow
-                               return "resources/lib/oojs-ui/oojs-ui-$module$theme.$ext";
-                       }, array_values( $themes ) )
-               );
-       };
-
-       $modules = [];
-
-       // Omnibus module.
-       $modules['oojs-ui'] = [
-               'dependencies' => [
-                       'oojs-ui-core',
-                       'oojs-ui-widgets',
-                       'oojs-ui-toolbars',
-                       'oojs-ui-windows',
-               ],
-               'targets' => [ 'desktop', 'mobile' ],
-       ];
-
-       // The core JavaScript library.
-       $modules['oojs-ui-core'] = [
-               'scripts' => [
-                       'resources/lib/oojs-ui/oojs-ui-core.js',
-                       'resources/src/oojs-ui-local.js',
-               ],
-               'skinScripts' => $getSkinSpecific( null, 'js' ),
-               'dependencies' => [
-                       'oojs',
-                       'oojs-ui-core.styles',
-                       'oojs-ui.styles.icons',
-                       'oojs-ui.styles.indicators',
-                       'oojs-ui.styles.textures',
-                       'mediawiki.language',
-               ],
-               'targets' => [ 'desktop', 'mobile' ],
-       ];
-       // This contains only the styles required by core widgets.
-       $modules['oojs-ui-core.styles'] = [
-               'position' => 'top',
-               'styles' => 'resources/src/oojs-ui-local.css', // HACK, see inside the file
-               'skinStyles' => $getSkinSpecific( 'core' ),
-               'targets' => [ 'desktop', 'mobile' ],
-       ];
-
-       // Additional widgets and layouts module.
-       $modules['oojs-ui-widgets'] = [
-               'scripts' => 'resources/lib/oojs-ui/oojs-ui-widgets.js',
-               'skinStyles' => $getSkinSpecific( 'widgets' ),
-               'dependencies' => 'oojs-ui-core',
-               'messages' => [
-                       'ooui-outline-control-move-down',
-                       'ooui-outline-control-move-up',
-                       'ooui-outline-control-remove',
-                       'ooui-selectfile-button-select',
-                       'ooui-selectfile-dragdrop-placeholder',
-                       'ooui-selectfile-not-supported',
-                       'ooui-selectfile-placeholder',
-               ],
-               'targets' => [ 'desktop', 'mobile' ],
-       ];
-       // Toolbar and tools module.
-       $modules['oojs-ui-toolbars'] = [
-               'scripts' => 'resources/lib/oojs-ui/oojs-ui-toolbars.js',
-               'skinStyles' => $getSkinSpecific( 'toolbars' ),
-               'dependencies' => 'oojs-ui-core',
-               'messages' => [
-                       'ooui-toolbar-more',
-                       'ooui-toolgroup-collapse',
-                       'ooui-toolgroup-expand',
-               ],
-               'targets' => [ 'desktop', 'mobile' ],
-       ];
-       // Windows and dialogs module.
-       $modules['oojs-ui-windows'] = [
-               'scripts' => 'resources/lib/oojs-ui/oojs-ui-windows.js',
-               'skinStyles' => $getSkinSpecific( 'windows' ),
-               'dependencies' => 'oojs-ui-core',
-               'messages' => [
-                       'ooui-dialog-message-accept',
-                       'ooui-dialog-message-reject',
-                       'ooui-dialog-process-continue',
-                       'ooui-dialog-process-dismiss',
-                       'ooui-dialog-process-error',
-                       'ooui-dialog-process-retry',
-               ],
-               'targets' => [ 'desktop', 'mobile' ],
-       ];
-
-       $imageSets = [
-               // Comments for greppability
-               'icons', // oojs-ui.styles.icons
-               'indicators', // oojs-ui.styles.indicators
-               'textures', // oojs-ui.styles.textures
-               'icons-accessibility', // oojs-ui.styles.icons-accessibility
-               'icons-alerts', // oojs-ui.styles.icons-alerts
-               'icons-content', // oojs-ui.styles.icons-content
-               'icons-editing-advanced', // oojs-ui.styles.icons-editing-advanced
-               'icons-editing-core', // oojs-ui.styles.icons-editing-core
-               'icons-editing-list', // oojs-ui.styles.icons-editing-list
-               'icons-editing-styling', // oojs-ui.styles.icons-editing-styling
-               'icons-interactions', // oojs-ui.styles.icons-interactions
-               'icons-layout', // oojs-ui.styles.icons-layout
-               'icons-location', // oojs-ui.styles.icons-location
-               'icons-media', // oojs-ui.styles.icons-media
-               'icons-moderation', // oojs-ui.styles.icons-moderation
-               'icons-movement', // oojs-ui.styles.icons-movement
-               'icons-user', // oojs-ui.styles.icons-user
-               'icons-wikimedia', // oojs-ui.styles.icons-wikimedia
-       ];
-       $rootPath = 'resources/lib/oojs-ui/themes';
-
-       foreach ( $imageSets as $name ) {
-               $module = [
-                       'position' => 'top',
-                       'class' => 'ResourceLoaderOOUIImageModule',
-                       'name' => $name,
-                       'rootPath' => $rootPath,
-               ];
-
-               if ( substr( $name, 0, 5 ) === 'icons' ) {
-                       $module['selectorWithoutVariant'] = '.oo-ui-icon-{name}, .mw-ui-icon-{name}:before';
-                       $module['selectorWithVariant'] = '
-                               .oo-ui-image-{variant}.oo-ui-icon-{name}, .mw-ui-icon-{name}-{variant}:before,
-                               /* Hack for Flow, see T110051 */
-                               .mw-ui-hovericon:hover .mw-ui-icon-{name}-{variant}-hover:before,
-                               .mw-ui-hovericon.mw-ui-icon-{name}-{variant}-hover:hover:before';
-               }
-
-               $modules["oojs-ui.styles.$name"] = $module;
-       }
-
-       return $modules;
-} );
index a8eba94..bcff2ac 100644 (file)
@@ -1,3 +1,7 @@
+jquery.ui.core.js
+* I7ffbfd2e5 Avoid deprecated jQuery.expr[":"].
+
+
 jquery.ui.draggable.js
 * 71e11de2a3 Fix positioning error with draggable, revert and grid.
              https://phabricator.wikimedia.org/T140965#2944610
@@ -9,6 +13,10 @@ jquery.ui.datepicker
 * 19531f3c23 Add translations in de-AT and de-CH
 
 
+jquery.ui.widget.js
+* I7ffbfd2e5 Avoid deprecated jQuery.expr[":"].
+
+
 themes/smoothness/jquery.ui.theme.css
 * 5e772e39dd Remove dark color from links inside dialogs
              https://phabricator.wikimedia.org/T85857
index 4ef4b76..19f0069 100644 (file)
@@ -157,7 +157,7 @@ function visible( element ) {
                }).length;
 }
 
-$.extend( $.expr[ ":" ], {
+$.extend( $.expr.pseudos, {
        data: $.expr.createPseudo ?
                $.expr.createPseudo(function( dataName ) {
                        return function( elem ) {
index 067476d..4d84afc 100644 (file)
@@ -36,7 +36,7 @@ $.widget = function( name, base, prototype ) {
        }
 
        // create selector for plugin
-       $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
+       $.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {
                return !!$.data( elem, fullName );
        };
 
index 67ec517..ed56521 100644 (file)
@@ -18,6 +18,7 @@
        "ooui-dialog-process-retry": "Probeer weer",
        "ooui-dialog-process-continue": "Gaan voort",
        "ooui-selectfile-button-select": "Kies 'n lêer",
+       "ooui-selectfile-not-supported": "Lêers kan nie gekies word nie",
        "ooui-selectfile-placeholder": "Geen lêer is gekies nie",
        "ooui-selectfile-dragdrop-placeholder": "Laat val die lêer hier"
 }
index 5674a78..7ef5a51 100644 (file)
@@ -13,7 +13,7 @@
        "ooui-toolgroup-expand": "Više",
        "ooui-toolgroup-collapse": "Manje",
        "ooui-dialog-message-accept": "U redu",
-       "ooui-dialog-message-reject": "Odustani",
+       "ooui-dialog-message-reject": "Otkaži",
        "ooui-dialog-process-error": "Nešto je pošlo naopako",
        "ooui-dialog-process-dismiss": "Odbaci",
        "ooui-dialog-process-retry": "Pokušaj ponovo",
index ac7f6c6..c53e058 100644 (file)
@@ -9,7 +9,8 @@
                        "McDutchie",
                        "Rv77ax",
                        "William Surya Permana",
-                       "Rachmat.Wahidi"
+                       "Rachmat.Wahidi",
+                       "Rachmat04"
                ]
        },
        "ooui-outline-control-move-down": "Pindahkan butir ke bawah",
index 546cc47..25aff68 100644 (file)
        "ooui-toolbar-more": "Liyané",
        "ooui-toolgroup-expand": "Liyané",
        "ooui-toolgroup-collapse": "Sacukupé",
-       "ooui-dialog-message-accept": "Ha'a",
+       "ooui-dialog-message-accept": "Oké",
        "ooui-dialog-message-reject": "Wurung",
        "ooui-dialog-process-error": "Ana sing klèru",
        "ooui-dialog-process-dismiss": "Tutup",
        "ooui-dialog-process-retry": "Jajal manèh",
-       "ooui-dialog-process-continue": "Banjuraké",
+       "ooui-dialog-process-continue": "Bacutaké",
        "ooui-selectfile-button-select": "Pilih barkas",
-       "ooui-selectfile-not-supported": "Barkas pilihan ora disengkuyung",
+       "ooui-selectfile-not-supported": "Ora bisa milih barkas",
        "ooui-selectfile-placeholder": "Ora ana barkas sing dipilih",
        "ooui-selectfile-dragdrop-placeholder": "Dèkèk barkas ing kéné"
 }
index 9d3b926..87b7c2b 100644 (file)
@@ -4,11 +4,12 @@
                        "Milicevic01",
                        "Nikola Smolenski",
                        "Милан Јелисавчић",
-                       "Zoranzoki21"
+                       "Zoranzoki21",
+                       "Obsuser"
                ]
        },
-       "ooui-outline-control-move-down": "Премести ставку на доле",
-       "ooui-outline-control-move-up": "Премести ставку на горе",
+       "ooui-outline-control-move-down": "Премести ставку надоле",
+       "ooui-outline-control-move-up": "Премести ставку нагоре",
        "ooui-outline-control-remove": "Уклони ставку",
        "ooui-toolbar-more": "Више",
        "ooui-toolgroup-expand": "Више",
index be94720..7d5286c 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.0
+ * OOjs UI v0.22.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-11T22:51:05Z
+ * Date: 2017-05-31T19:07:36Z
  */
 ( function ( OO ) {
 
@@ -41,3 +41,5 @@ OO.ui.ApexTheme.prototype.getDialogTransitionDuration = function () {
 OO.ui.theme = new OO.ui.ApexTheme();
 
 }( OO ) );
+
+//# sourceMappingURL=oojs-ui-apex.js.map
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/oojs-ui-apex.js.map b/resources/lib/oojs-ui/oojs-ui-apex.js.map
new file mode 100644 (file)
index 0000000..f509343
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/intro.js.txt","../src/themes/apex/ApexTheme.js","../src/outro.js.txt"],"names":[],"mappings":";;;;;;;;;;AAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnB;AACA,CAAC,GAAG,CAAC,MAAM,EAAE;;ACFb,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK;AACvB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;AAC5C,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACrC,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AAChD;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC,MAAM,CAAC,GAAG,CAAC;AACZ,EAAE;AACF;AACA,EAAE,CAAC,aAAa,CAAC,EAAE;AACnB;AACA,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG;;AC1BpC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE","file":"oojs-ui-apex.js","sourcesContent":["( function ( OO ) {\n\n'use strict';\n","/**\n * @class\n * @extends OO.ui.Theme\n *\n * @constructor\n */\nOO.ui.ApexTheme = function OoUiApexTheme() {\n\t// Parent constructor\n\tOO.ui.ApexTheme.parent.call( this );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ApexTheme, OO.ui.Theme );\n\n/* Methods */\n\n/**\n * @inheritdoc\n */\nOO.ui.ApexTheme.prototype.getDialogTransitionDuration = function () {\n\treturn 250;\n};\n\n/* Instantiation */\n\nOO.ui.theme = new OO.ui.ApexTheme();\n","}( OO ) );\n"]}
\ No newline at end of file
index 0313da4..0b3943b 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.0
+ * OOjs UI v0.22.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-11T22:51:10Z
+ * Date: 2017-05-31T19:07:44Z
  */
 .oo-ui-element-hidden {
   display: none !important;
   cursor: pointer;
   display: inline-block;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
   vertical-align: middle;
   font-family: inherit;
   font-size: inherit;
   white-space: nowrap;
   -webkit-touch-callout: none;
   -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
 }
 .oo-ui-buttonElement > .oo-ui-buttonElement-button::-moz-focus-inner {
   border-color: transparent;
 }
 .oo-ui-buttonElement > .oo-ui-buttonElement-button {
   color: #333;
+  border-radius: 0.3em;
 }
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  margin-left: 0;
+.oo-ui-buttonElement > .oo-ui-buttonElement-button:focus {
+  outline: 0;
 }
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  margin: 0.46875em;
+.oo-ui-buttonElement > input.oo-ui-buttonElement-button,
+.oo-ui-buttonElement.oo-ui-labelElement .oo-ui-labelElement-label {
+  line-height: 1.875em;
+}
+.oo-ui-buttonElement.oo-ui-iconElement .oo-ui-iconElement-icon {
+  height: 100%;
+  margin-left: 0;
 }
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
+.oo-ui-buttonElement.oo-ui-iconElement .oo-ui-indicatorElement-indicator {
   margin-left: 0.46875em;
 }
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus {
-  outline: 0;
+.oo-ui-buttonElement.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
+  margin: 0.46875em;
 }
 .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon,
 .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus > .oo-ui-iconElement-icon {
 .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
   color: #333;
 }
-.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
+.oo-ui-buttonElement-frameless.oo-ui-labelElement:first-child,
+.oo-ui-buttonElement-frameless.oo-ui-iconElement:first-child {
+  margin-left: -0.3125em;
+}
+.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button,
+.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button {
+  padding: 0.3125em 0.3125em;
+}
+.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
+.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
+  color: #333;
   margin-left: 0.25em;
 }
+.oo-ui-buttonElement-frameless.oo-ui-labelElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button,
+.oo-ui-buttonElement-frameless.oo-ui-iconElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button {
+  padding: 0.3125em 0.3125em;
+}
+.oo-ui-buttonElement-frameless.oo-ui-indicatorElement > .oo-ui-buttonElement-button {
+  padding: 0;
+}
 .oo-ui-buttonElement-frameless > input.oo-ui-buttonElement-button {
   padding-left: 0.25em;
   color: #333;
   color: #ccc;
 }
 .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-  padding: 0.2em 0.8em;
-  border-radius: 0.3em;
+  padding: 0.234375em 0.78125em;
   text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
   border: 1px #c9c9c9 solid;
   -webkit-transition: border-color 100ms ease;
-     -moz-transition: border-color 100ms ease;
-          transition: border-color 100ms ease;
+  -moz-transition: border-color 100ms ease;
+  transition: border-color 100ms ease;
   background-color: #eeeeee;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #fff), color-stop(100%, #ddd));
   background-image: -webkit-linear-gradient(top, #fff 0, #ddd 100%);
-  background-image:    -moz-linear-gradient(top, #fff 0, #ddd 100%);
-  background-image:         linear-gradient(to bottom, #fff 0, #ddd 100%);
+  background-image: -moz-linear-gradient(top, #fff 0, #ddd 100%);
+  background-image: linear-gradient(to bottom, #fff 0, #ddd 100%);
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffffff', endColorstr='#ffdddddd' )";
 }
 .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:hover,
 .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:focus {
   border-color: #aaa;
-  outline: 0;
 }
 .oo-ui-buttonElement-framed > input.oo-ui-buttonElement-button,
 .oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
   background-color: #eeeeee;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #ddd), color-stop(100%, #fff));
   background-image: -webkit-linear-gradient(top, #ddd 0, #fff 100%);
-  background-image:    -moz-linear-gradient(top, #ddd 0, #fff 100%);
-  background-image:         linear-gradient(to bottom, #ddd 0, #fff 100%);
+  background-image: -moz-linear-gradient(top, #ddd 0, #fff 100%);
+  background-image: linear-gradient(to bottom, #ddd 0, #fff 100%);
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffdddddd', endColorstr='#ffffffff' )";
 }
 .oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
   background-color: #cde7f4;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #eaf4fa), color-stop(100%, #b0d9ee));
   background-image: -webkit-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%);
-  background-image:    -moz-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%);
-  background-image:         linear-gradient(to bottom, #eaf4fa 0, #b0d9ee 100%);
+  background-image: -moz-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%);
+  background-image: linear-gradient(to bottom, #eaf4fa 0, #b0d9ee 100%);
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffeaf4fa', endColorstr='#ffb0d9ee' )";
 }
 .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover,
   background-color: #cde7f4;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #b0d9ee), color-stop(100%, #eaf4fa));
   background-image: -webkit-linear-gradient(top, #b0d9ee 0, #eaf4fa 100%);
-  background-image:    -moz-linear-gradient(top, #b0d9ee 0, #eaf4fa 100%);
-  background-image:         linear-gradient(to bottom, #b0d9ee 0, #eaf4fa 100%);
+  background-image: -moz-linear-gradient(top, #b0d9ee 0, #eaf4fa 100%);
+  background-image: linear-gradient(to bottom, #b0d9ee 0, #eaf4fa 100%);
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffb0d9ee', endColorstr='#ffeaf4fa' )";
 }
 .oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button {
   background-color: #daf0bd;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #f0fbe1), color-stop(100%, #c3e59a));
   background-image: -webkit-linear-gradient(top, #f0fbe1 0, #c3e59a 100%);
-  background-image:    -moz-linear-gradient(top, #f0fbe1 0, #c3e59a 100%);
-  background-image:         linear-gradient(to bottom, #f0fbe1 0, #c3e59a 100%);
+  background-image: -moz-linear-gradient(top, #f0fbe1 0, #c3e59a 100%);
+  background-image: linear-gradient(to bottom, #f0fbe1 0, #c3e59a 100%);
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff0fbe1', endColorstr='#ffc3e59a' )";
 }
 .oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover,
   background-color: #daf0bd;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #c3e59a), color-stop(100%, #f0fbe1));
   background-image: -webkit-linear-gradient(top, #c3e59a 0, #f0fbe1 100%);
-  background-image:    -moz-linear-gradient(top, #c3e59a 0, #f0fbe1 100%);
-  background-image:         linear-gradient(to bottom, #c3e59a 0, #f0fbe1 100%);
+  background-image: -moz-linear-gradient(top, #c3e59a 0, #f0fbe1 100%);
+  background-image: linear-gradient(to bottom, #c3e59a 0, #f0fbe1 100%);
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffc3e59a', endColorstr='#fff0fbe1' )";
 }
 .oo-ui-buttonElement-framed.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button {
 .oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
   opacity: 0.5;
   -webkit-transform: translateZ(0);
-          transform: translateZ(0);
+  transform: translateZ(0);
   box-shadow: none;
   color: #333;
   background: #eee;
 }
 .oo-ui-clippableElement-clippable {
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
   min-height: 3.125em;
 }
 .oo-ui-floatableElement {
 }
 .oo-ui-fieldLayout {
   display: block;
-  margin-bottom: 1em;
+  margin-top: 1em;
 }
 .oo-ui-fieldLayout:before,
 .oo-ui-fieldLayout:after {
 .oo-ui-fieldLayout .oo-ui-fieldLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
   z-index: 1;
 }
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top .oo-ui-fieldLayout-help,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline .oo-ui-fieldLayout-help {
-  margin-top: -0.3em;
-}
-.oo-ui-fieldLayout:last-child {
-  margin-bottom: 0;
+.oo-ui-fieldLayout:first-child {
+  margin-top: 0;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help,
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help {
   padding-top: 0.5em;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline {
-  margin-bottom: 1.25em;
+  margin-top: 1.25em;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body {
   max-width: 50em;
   max-width: 50em;
   padding: 0.5em 0;
 }
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top .oo-ui-fieldLayout-help,
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline .oo-ui-fieldLayout-help {
+  margin-top: -0.3em;
+}
 .oo-ui-fieldLayout > .oo-ui-popupButtonWidget {
   margin-right: 0;
   margin-top: 0.25em;
@@ -454,7 +474,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
 }
 .oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label {
   display: inline-block;
-  font-size: 1.1em;
+  font-size: 1.15em;
   margin-bottom: 0.5em;
   padding: 0.25em 0;
   font-weight: bold;
@@ -483,7 +503,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
 .oo-ui-panelLayout-scrollable {
   overflow: auto;
   -webkit-transform: translateZ(0);
-          transform: translateZ(0);
+  transform: translateZ(0);
 }
 .oo-ui-panelLayout-expanded {
   position: absolute;
@@ -533,7 +553,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
 .oo-ui-optionWidget.oo-ui-widget-disabled {
   cursor: default;
 }
-.oo-ui-optionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
+.oo-ui-optionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
   display: block;
   white-space: nowrap;
   text-overflow: ellipsis;
@@ -559,8 +579,8 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
 .oo-ui-decoratedOptionWidget {
   padding: 0.5em 2em 0.5em 3em;
 }
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
+.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
+.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
   position: absolute;
 }
 .oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
@@ -717,12 +737,12 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
 .oo-ui-popupWidget-head {
   -webkit-touch-callout: none;
   -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
 }
 .oo-ui-popupWidget-head > .oo-ui-buttonWidget {
-  float: right;
+  position: absolute;
 }
 .oo-ui-popupWidget-head > .oo-ui-labelElement-label {
   float: left;
@@ -814,17 +834,18 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
 }
 .oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup {
   -webkit-transition: width 100ms ease, height 100ms ease, left 100ms ease;
-     -moz-transition: width 100ms ease, height 100ms ease, left 100ms ease;
-          transition: width 100ms ease, height 100ms ease, left 100ms ease;
+  -moz-transition: width 100ms ease, height 100ms ease, left 100ms ease;
+  transition: width 100ms ease, height 100ms ease, left 100ms ease;
 }
 .oo-ui-popupWidget-head {
   height: 2.5em;
 }
 .oo-ui-popupWidget-head > .oo-ui-buttonWidget {
-  margin: 0.25em;
+  top: 0.25em;
+  right: 0.25em;
 }
 .oo-ui-popupWidget-head > .oo-ui-labelElement-label {
-  margin: 0.75em 1em;
+  margin: 0.75em 2.125em 0.75em 1em;
 }
 .oo-ui-popupWidget-body {
   line-height: 1.4;
@@ -857,8 +878,8 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
   position: relative;
   vertical-align: middle;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
   width: 100%;
   max-width: 50em;
 }
@@ -871,8 +892,8 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
   background-repeat: no-repeat;
   width: 100%;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
 }
 .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select {
   cursor: pointer;
@@ -909,8 +930,8 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
   position: relative;
   vertical-align: middle;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
   width: 100%;
   max-width: 50em;
 }
@@ -919,8 +940,8 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
   display: block;
   width: 100%;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
 }
 .oo-ui-textInputWidget textarea {
   overflow: auto;
@@ -935,7 +956,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
   margin: 0;
 }
 .oo-ui-textInputWidget [type='search'] {
-  -webkit-appearance: textfield;
+  -webkit-appearance: none;
 }
 .oo-ui-textInputWidget [type='search']::-ms-clear {
   display: none;
@@ -957,9 +978,9 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
   height: 100%;
   -webkit-touch-callout: none;
   -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
 }
 .oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-iconElement-icon,
 .oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator {
@@ -973,9 +994,9 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
 .oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label {
   -webkit-touch-callout: none;
   -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
 }
 .oo-ui-textInputWidget.oo-ui-labelElement > .oo-ui-labelElement-label {
   display: block;
@@ -999,7 +1020,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
 }
 .oo-ui-textInputWidget input,
 .oo-ui-textInputWidget textarea {
-  padding: 0.5em;
+  padding: 0.546875em 0.5em 0.625em 0.5em;
   line-height: 1.275em;
   font-size: inherit;
   font-family: inherit;
@@ -1009,8 +1030,8 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
   box-shadow: 0 0 0 #fff, inset 0 0.1em 0.2em #ddd;
   border-radius: 0.25em;
   -webkit-transition: border-color 250ms ease, box-shadow 250ms ease;
-     -moz-transition: border-color 250ms ease, box-shadow 250ms ease;
-          transition: border-color 250ms ease, box-shadow 250ms ease;
+  -moz-transition: border-color 250ms ease, box-shadow 250ms ease;
+  transition: border-color 250ms ease, box-shadow 250ms ease;
 }
 .oo-ui-textInputWidget input.oo-ui-pendingElement-pending,
 .oo-ui-textInputWidget textarea.oo-ui-pendingElement-pending {
@@ -1107,28 +1128,31 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
   border-radius: 0 0 0.25em 0.25em;
   box-shadow: 0 0.15em 1em 0 rgba(0, 0, 0, 0.2);
 }
-.oo-ui-menuSelectWidget input {
-  position: absolute;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-  opacity: 0;
-}
 .oo-ui-menuSelectWidget.oo-ui-clippableElement-clippable {
   min-height: 2.6em;
 }
 .oo-ui-menuSelectWidget-invisible {
   display: none;
 }
-.oo-ui-menuOptionWidget .oo-ui-iconElement-icon {
-  display: none;
-}
-.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon {
-  display: block;
-}
 .oo-ui-menuOptionWidget.oo-ui-optionWidget-selected {
   background-color: transparent;
 }
+.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected > .oo-ui-iconElement-icon {
+  background-image: url('themes/apex/images/icons/check.png');
+  background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url('themes/apex/images/icons/check.svg');
+  background-image: linear-gradient(transparent, transparent), /* @embed */ url('themes/apex/images/icons/check.svg');
+  background-image: -o-linear-gradient(transparent, transparent), url('themes/apex/images/icons/check.png');
+  background-position: center center;
+  background-repeat: no-repeat;
+  background-size: contain;
+  display: block;
+  left: 0.5em;
+  top: 0;
+  min-width: 24px;
+  width: 1.875em;
+  min-height: 24px;
+  height: 100%;
+}
 .oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,
 .oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected {
   background-color: #e1f3ff;
@@ -1158,12 +1182,12 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
   cursor: default;
   -webkit-touch-callout: none;
   -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
 }
 .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon,
 .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
@@ -1322,6 +1346,9 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
   margin-right: 0;
 }
 .oo-ui-progressBarWidget {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
   max-width: 50em;
   background-color: #fff;
   border: 1px solid #ccc;
@@ -1332,24 +1359,24 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
   height: 1em;
   border-right: 1px solid #ccc;
   -webkit-transition: width 250ms ease;
-     -moz-transition: width 250ms ease;
-          transition: width 250ms ease;
+  -moz-transition: width 250ms ease;
+  transition: width 250ms ease;
   background-color: #cde7f4;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #eaf4fa), color-stop(100%, #b0d9ee));
   background-image: -webkit-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%);
-  background-image:    -moz-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%);
-  background-image:         linear-gradient(to bottom, #eaf4fa 0, #b0d9ee 100%);
+  background-image: -moz-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%);
+  background-image: linear-gradient(to bottom, #eaf4fa 0, #b0d9ee 100%);
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffeaf4fa', endColorstr='#ffb0d9ee' )";
 }
 .oo-ui-progressBarWidget-indeterminate .oo-ui-progressBarWidget-bar {
   -webkit-animation: oo-ui-progressBarWidget-slide 2s infinite linear;
-     -moz-animation: oo-ui-progressBarWidget-slide 2s infinite linear;
-          animation: oo-ui-progressBarWidget-slide 2s infinite linear;
+  -moz-animation: oo-ui-progressBarWidget-slide 2s infinite linear;
+  animation: oo-ui-progressBarWidget-slide 2s infinite linear;
   width: 40%;
   -webkit-transform: translate(-25%);
-     -moz-transform: translate(-25%);
-      -ms-transform: translate(-25%);
-          transform: translate(-25%);
+  -moz-transform: translate(-25%);
+  -ms-transform: translate(-25%);
+  transform: translate(-25%);
   border-left: 1px solid #a6cee1;
 }
 .oo-ui-progressBarWidget.oo-ui-widget-disabled {
@@ -1358,42 +1385,42 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
   from {
     -webkit-transform: translate(-100%);
-       -moz-transform: translate(-100%);
-        -ms-transform: translate(-100%);
-            transform: translate(-100%);
+    -moz-transform: translate(-100%);
+    -ms-transform: translate(-100%);
+    transform: translate(-100%);
   }
   to {
     -webkit-transform: translate(350%);
-       -moz-transform: translate(350%);
-        -ms-transform: translate(350%);
-            transform: translate(350%);
+    -moz-transform: translate(350%);
+    -ms-transform: translate(350%);
+    transform: translate(350%);
   }
 }
 @-moz-keyframes oo-ui-progressBarWidget-slide {
   from {
     -webkit-transform: translate(-100%);
-       -moz-transform: translate(-100%);
-        -ms-transform: translate(-100%);
-            transform: translate(-100%);
+    -moz-transform: translate(-100%);
+    -ms-transform: translate(-100%);
+    transform: translate(-100%);
   }
   to {
     -webkit-transform: translate(350%);
-       -moz-transform: translate(350%);
-        -ms-transform: translate(350%);
-            transform: translate(350%);
+    -moz-transform: translate(350%);
+    -ms-transform: translate(350%);
+    transform: translate(350%);
   }
 }
 @keyframes oo-ui-progressBarWidget-slide {
   from {
     -webkit-transform: translate(-100%);
-       -moz-transform: translate(-100%);
-        -ms-transform: translate(-100%);
-            transform: translate(-100%);
+    -moz-transform: translate(-100%);
+    -ms-transform: translate(-100%);
+    transform: translate(-100%);
   }
   to {
     -webkit-transform: translate(350%);
-       -moz-transform: translate(350%);
-        -ms-transform: translate(350%);
-            transform: translate(350%);
+    -moz-transform: translate(350%);
+    -ms-transform: translate(350%);
+    transform: translate(350%);
   }
 }
diff --git a/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css
deleted file mode 100644 (file)
index 4cc49c8..0000000
+++ /dev/null
@@ -1,1904 +0,0 @@
-/*!
- * OOjs UI v0.21.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2017 OOjs UI Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2017-04-11T22:51:10Z
- */
-.oo-ui-element-hidden {
-  display: none !important;
-}
-.oo-ui-buttonElement {
-  display: inline-block;
-  line-height: normal;
-  vertical-align: middle;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button {
-  cursor: pointer;
-  display: inline-block;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  vertical-align: middle;
-  font-family: inherit;
-  font-size: inherit;
-  white-space: nowrap;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button::-moz-focus-inner {
-  border-color: transparent;
-  padding: 0;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  display: none;
-}
-.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-  cursor: default;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-buttonElement-frameless {
-  position: relative;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-  vertical-align: top;
-  text-align: center;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button {
-  position: relative;
-  font-weight: bold;
-  text-decoration: none;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button:focus {
-  outline: 0;
-}
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
-.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  position: absolute;
-  top: 0;
-  height: 100%;
-}
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  display: block;
-}
-.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement > input.oo-ui-buttonElement-button {
-  line-height: 1;
-}
-.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  line-height: 1.172em;
-}
-.oo-ui-buttonElement.oo-ui-labelElement.oo-ui-iconElement > .oo-ui-buttonElement-button {
-  padding-left: 2.03125em;
-}
-.oo-ui-buttonElement.oo-ui-labelElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button {
-  padding-right: 2.5em;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  display: block;
-}
-.oo-ui-buttonElement.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
-.oo-ui-buttonElement.oo-ui-indicatorElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  right: 0.9375em;
-}
-.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button {
-  -webkit-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
-     -moz-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
-          transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
-}
-.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
-.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  opacity: 0.87;
-  -webkit-transition: opacity 100ms;
-     -moz-transition: opacity 100ms;
-          transition: opacity 100ms;
-}
-.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon.oo-ui-image-invert,
-.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator.oo-ui-image-invert {
-  opacity: 1;
-}
-.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon,
-.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover > .oo-ui-indicatorElement-indicator {
-  opacity: 0.73;
-}
-.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon.oo-ui-image-invert,
-.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover > .oo-ui-indicatorElement-indicator.oo-ui-image-invert {
-  opacity: 1;
-}
-.oo-ui-buttonElement.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
-.oo-ui-buttonElement.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  opacity: 1;
-}
-.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button {
-  border-radius: 1px;
-}
-.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button {
-  min-width: 1.875em;
-  min-height: 1.875em;
-}
-.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  left: 0;
-}
-.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button {
-  margin-left: -1px;
-  border: 1px solid #fff;
-  padding: 0.3125em 0;
-}
-.oo-ui-buttonElement-frameless.oo-ui-indicatorElement > .oo-ui-buttonElement-button {
-  min-width: 0.9375em;
-  min-height: 0.9375em;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button {
-  color: #222;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover {
-  color: #444;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus {
-  box-shadow: 0 0 0 2px #36c;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > input.oo-ui-buttonElement-button,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button:active {
-  color: #000;
-  box-shadow: none;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button {
-  color: #36c;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover {
-  color: #447ff5;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active:focus,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  color: #2a4b8d;
-  box-shadow: none;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button {
-  color: #36c;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover {
-  color: #447ff5;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active:focus,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  color: #2a4b8d;
-  box-shadow: none;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button {
-  color: #d33;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover {
-  color: #ff4242;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active:focus,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  color: #b32424;
-  box-shadow: none;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled[class*='oo-ui-flaggedElement'] > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled[class*='oo-ui-flaggedElement'] > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  opacity: 1;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled[class*='oo-ui-flaggedElement'] > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled[class*='oo-ui-flaggedElement'] > .oo-ui-buttonElement-button:hover > .oo-ui-indicatorElement-indicator {
-  opacity: 0.73;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-  color: #72777d;
-}
-.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
-.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  opacity: 0.51;
-}
-.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-  min-height: 2.5em;
-  border-radius: 2px;
-  padding: 0.625em 0.9375em 0.546875em;
-}
-.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button {
-  padding-left: 2.03125em;
-}
-.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  left: 0.546875em;
-}
-.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button {
-  padding-left: 2.5em;
-}
-.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
-.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  left: 0.46875em;
-}
-.oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button {
-  padding-right: 2.03125em;
-}
-.oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  right: 1.015625em;
-}
-.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-iconElement > .oo-ui-buttonElement-button {
-  padding-right: 2.5em;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-  background-color: #c8ccd1;
-  color: #fff;
-  border: 1px solid #c8ccd1;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-disabled + .oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-  border-left-color: #fff;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button {
-  background-color: #f8f9fa;
-  color: #222;
-  border: 1px solid #a2a9b1;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover {
-  background-color: #fff;
-  color: #444;
-  border-color: #a2a9b1;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus {
-  border-color: #36c;
-  box-shadow: inset 0 0 0 1px #36c;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active:focus,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-  background-color: #c8ccd1;
-  color: #000;
-  border-color: #72777d;
-  box-shadow: none;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button {
-  background-color: #2a4b8d;
-  color: #fff;
-  border-color: #2a4b8d;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:focus {
-  border-color: #36c;
-  box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button {
-  color: #36c;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover {
-  background-color: #fff;
-  border-color: #447ff5;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active:focus,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button {
-  background-color: #eff3fa;
-  color: #2a4b8d;
-  border-color: #2a4b8d;
-  box-shadow: none;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus {
-  border-color: #36c;
-  box-shadow: inset 0 0 0 1px #36c;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button {
-  color: #36c;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover {
-  background-color: #fff;
-  border-color: #447ff5;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active:focus,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button {
-  background-color: #eff3fa;
-  color: #2a4b8d;
-  border-color: #2a4b8d;
-  box-shadow: none;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus {
-  border-color: #36c;
-  box-shadow: inset 0 0 0 1px #36c;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button {
-  color: #d33;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover {
-  background-color: #fff;
-  border-color: #ff4242;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active:focus,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button {
-  background-color: #ffffff;
-  color: #b32424;
-  border-color: #b32424;
-  box-shadow: none;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus {
-  border-color: #d33;
-  box-shadow: inset 0 0 0 1px #d33;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button {
-  color: #fff;
-  background-color: #36c;
-  border-color: #36c;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover {
-  background-color: #447ff5;
-  border-color: #447ff5;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active:focus,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button {
-  color: #fff;
-  background-color: #2a4b8d;
-  border-color: #2a4b8d;
-  box-shadow: none;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus {
-  border-color: #36c;
-  box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button {
-  color: #fff;
-  background-color: #36c;
-  border-color: #36c;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover {
-  background-color: #447ff5;
-  border-color: #447ff5;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active:focus,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button {
-  color: #fff;
-  background-color: #2a4b8d;
-  border-color: #2a4b8d;
-  box-shadow: none;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus {
-  border-color: #36c;
-  box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button {
-  color: #fff;
-  background-color: #d33;
-  border-color: #d33;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover {
-  background-color: #ff4242;
-  border-color: #ff4242;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active:focus,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button {
-  color: #fff;
-  background-color: #b32424;
-  border-color: #b32424;
-  box-shadow: none;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus {
-  border-color: #d33;
-  box-shadow: inset 0 0 0 1px #d33, inset 0 0 0 2px #fff;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  opacity: 1;
-}
-.oo-ui-clippableElement-clippable {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  min-height: 3.125em;
-}
-.oo-ui-floatableElement {
-  position: absolute;
-}
-.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-iconElement.oo-ui-iconElement-icon {
-  background-size: contain;
-  background-position: center center;
-  background-repeat: no-repeat;
-  min-width: 24px;
-  width: 1.875em;
-  min-height: 24px;
-  height: 1.875em;
-}
-.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator,
-.oo-ui-indicatorElement.oo-ui-indicatorElement-indicator {
-  background-size: contain;
-  background-position: center center;
-  background-repeat: no-repeat;
-  min-width: 12px;
-  width: 0.9375em;
-  min-height: 12px;
-  height: 0.9375em;
-}
-.oo-ui-labelElement .oo-ui-labelElement-label-highlight {
-  font-weight: bold;
-}
-.oo-ui-pendingElement-pending {
-  background-image: /* @embed */ url(themes/mediawiki/images/textures/pending.gif);
-}
-.oo-ui-fieldLayout {
-  display: block;
-  margin-top: 1.640625em;
-}
-.oo-ui-fieldLayout:before,
-.oo-ui-fieldLayout:after {
-  content: ' ';
-  display: table;
-}
-.oo-ui-fieldLayout:after {
-  clear: both;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field {
-  display: block;
-  float: left;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header {
-  text-align: right;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body {
-  display: table;
-  width: 100%;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field {
-  display: table-cell;
-  vertical-align: middle;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field {
-  width: 1px;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field {
-  display: block;
-}
-.oo-ui-fieldLayout .oo-ui-fieldLayout-help {
-  float: right;
-}
-.oo-ui-fieldLayout .oo-ui-fieldLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-  z-index: 1;
-}
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top .oo-ui-fieldLayout-help,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline .oo-ui-fieldLayout-help {
-  margin-top: -0.3em;
-}
-.oo-ui-fieldLayout.oo-ui-labelElement,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline {
-  margin-top: 1.171875em;
-}
-.oo-ui-fieldLayout:first-child,
-.oo-ui-fieldLayout.oo-ui-labelElement:first-child,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline:first-child {
-  margin-top: 0;
-}
-.oo-ui-fieldLayout.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header {
-  padding-bottom: 0.3125em;
-}
-.oo-ui-fieldLayout.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label {
-  line-height: 1.4;
-}
-.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header,
-.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body {
-  max-width: 50em;
-}
-.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header,
-.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header {
-  width: 35%;
-  margin-right: 5%;
-}
-.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label,
-.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label {
-  display: block;
-  padding-top: 0.3125em;
-}
-.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help,
-.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help {
-  margin-right: 0;
-  margin-left: -1.875em;
-}
-.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field {
-  width: 60%;
-}
-.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header {
-  padding: 0.3125em 0.46875em;
-  padding-right: 0;
-}
-.oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label {
-  color: #72777d;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget {
-  margin-right: 0;
-}
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget:last-child {
-  margin-right: 0;
-}
-.oo-ui-fieldLayout-messages {
-  list-style: none none;
-  margin: 0.25em 0 0 0.25em;
-  padding: 0;
-}
-.oo-ui-fieldLayout-messages > li {
-  margin: 0;
-  padding: 0;
-  display: table;
-}
-.oo-ui-fieldLayout-messages .oo-ui-iconWidget {
-  display: table-cell;
-}
-.oo-ui-fieldLayout-messages .oo-ui-labelWidget {
-  display: table-cell;
-  padding: 0.1em 0 0.1em 0.3125em;
-  line-height: 1.4;
-  vertical-align: middle;
-}
-.oo-ui-actionFieldLayout-input,
-.oo-ui-actionFieldLayout-button {
-  display: table-cell;
-  vertical-align: middle;
-}
-.oo-ui-actionFieldLayout-input {
-  padding-right: 1em;
-}
-.oo-ui-actionFieldLayout-button {
-  width: 1%;
-  white-space: nowrap;
-}
-.oo-ui-actionFieldLayout.oo-ui-fieldLayout-align-top {
-  max-width: 50em;
-}
-.oo-ui-fieldsetLayout {
-  position: relative;
-  min-width: 0;
-  margin: 0;
-  border: 0;
-  padding: 0.01px 0 0 0;
-}
-body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
-  display: table-cell;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-iconElement-icon {
-  display: block;
-  position: absolute;
-}
-.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header {
-  color: inherit;
-  display: inline-table;
-  box-sizing: border-box;
-  padding: 0;
-  white-space: normal;
-  float: left;
-  width: 100%;
-}
-.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label:empty {
-  display: none;
-}
-.oo-ui-fieldsetLayout-group {
-  clear: both;
-}
-.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help {
-  float: right;
-}
-.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-  z-index: 1;
-}
-.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-header {
-  max-width: 50em;
-}
-.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout,
-.oo-ui-fieldsetLayout + .oo-ui-formLayout {
-  margin-top: 2em;
-}
-.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label {
-  display: inline-block;
-  margin-bottom: 0.56818em;
-  font-size: 1.1em;
-  font-weight: bold;
-  line-height: 1.4;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label {
-  padding-left: 2em;
-  line-height: 1.8;
-}
-.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-iconElement-icon {
-  top: 0;
-  left: 0;
-}
-.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-header > .oo-ui-popupButtonWidget {
-  margin-right: 0;
-}
-.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-header > .oo-ui-popupButtonWidget:last-child {
-  margin-right: 0;
-}
-.oo-ui-formLayout + .oo-ui-fieldsetLayout,
-.oo-ui-formLayout + .oo-ui-formLayout {
-  margin-top: 2em;
-}
-.oo-ui-panelLayout {
-  position: relative;
-}
-.oo-ui-panelLayout-scrollable {
-  overflow: auto;
-  -webkit-transform: translateZ(0);
-          transform: translateZ(0);
-}
-.oo-ui-panelLayout-expanded {
-  position: absolute;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-}
-.oo-ui-panelLayout-padded {
-  padding: 1.25em;
-}
-.oo-ui-panelLayout-padded.oo-ui-formLayout > .oo-ui-fieldsetLayout .oo-ui-labelElement-label,
-.oo-ui-panelLayout-padded.oo-ui-formLayout > .oo-ui-fieldsetLayout .oo-ui-iconElement-icon {
-  margin-top: -0.25em;
-}
-.oo-ui-panelLayout-framed {
-  border: 1px solid #a2a9b1;
-  border-radius: 2px;
-}
-.oo-ui-panelLayout-padded.oo-ui-panelLayout-framed {
-  margin: 1em 0;
-}
-.oo-ui-horizontalLayout > .oo-ui-widget {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-horizontalLayout > .oo-ui-layout {
-  display: inline-block;
-}
-.oo-ui-horizontalLayout > .oo-ui-layout,
-.oo-ui-horizontalLayout > .oo-ui-widget {
-  margin-right: 0.5em;
-}
-.oo-ui-horizontalLayout > .oo-ui-layout:last-child,
-.oo-ui-horizontalLayout > .oo-ui-widget:last-child {
-  margin-right: 0;
-}
-.oo-ui-horizontalLayout > .oo-ui-layout {
-  margin-top: 0;
-}
-.oo-ui-optionWidget {
-  position: relative;
-  display: block;
-}
-.oo-ui-optionWidget.oo-ui-widget-enabled {
-  cursor: pointer;
-}
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-.oo-ui-optionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-  display: block;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-}
-.oo-ui-optionWidget .oo-ui-labelElement-label {
-  line-height: 1.6;
-}
-.oo-ui-optionWidget-selected .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  opacity: 1;
-}
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  color: #72777d;
-}
-.oo-ui-decoratedOptionWidget {
-  padding: 0.703125em 0.9375em 0.625em;
-  line-height: 1;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-  position: absolute;
-}
-.oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  top: 0;
-  height: 100%;
-}
-.oo-ui-decoratedOptionWidget.oo-ui-iconElement {
-  padding-left: 2.5em;
-}
-.oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  left: 0.46875em;
-}
-.oo-ui-decoratedOptionWidget .oo-ui-labelElement-label {
-  line-height: 1.172em;
-}
-.oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  right: 0.9375em;
-}
-.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon,
-.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
-  opacity: 0.51;
-}
-.oo-ui-radioSelectWidget:focus {
-  outline: 0;
-}
-.oo-ui-radioSelectWidget:focus [type='radio']:checked + span:before {
-  border-color: #fff;
-}
-.oo-ui-radioOptionWidget {
-  padding: 0.3125em 0;
-}
-.oo-ui-radioOptionWidget .oo-ui-radioInputWidget,
-.oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-  padding-left: 0.46875em;
-}
-.oo-ui-radioOptionWidget .oo-ui-radioInputWidget {
-  margin-right: 0;
-}
-.oo-ui-labelWidget {
-  display: inline-block;
-}
-.oo-ui-iconWidget {
-  display: inline-block;
-  vertical-align: middle;
-  line-height: 2.5;
-}
-.oo-ui-iconWidget.oo-ui-widget-disabled {
-  opacity: 0.51;
-}
-.oo-ui-indicatorWidget {
-  display: inline-block;
-  vertical-align: middle;
-  line-height: 2.5;
-  margin: 0.46875em;
-}
-.oo-ui-indicatorWidget.oo-ui-widget-disabled {
-  opacity: 0.51;
-}
-.oo-ui-buttonWidget {
-  margin-right: 0.5em;
-}
-.oo-ui-buttonWidget:last-child {
-  margin-right: 0;
-}
-.oo-ui-buttonGroupWidget {
-  display: inline-block;
-  white-space: nowrap;
-  border-radius: 2px;
-  margin-right: 0.5em;
-  z-index: 0;
-  position: relative;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonWidget.oo-ui-buttonElement-active .oo-ui-buttonElement-button {
-  cursor: default;
-}
-.oo-ui-buttonGroupWidget:last-child {
-  margin-right: 0;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement {
-  margin-right: 0;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement:last-child {
-  margin-right: 0;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-  border-radius: 0;
-  margin-left: -1px;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button {
-  border-bottom-left-radius: 2px;
-  border-top-left-radius: 2px;
-  margin-left: 0;
-}
-.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button {
-  border-bottom-right-radius: 2px;
-  border-top-right-radius: 2px;
-}
-.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active {
-  z-index: 1;
-}
-.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus {
-  z-index: 2;
-}
-.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-buttonElement-active > .oo-ui-buttonElement-button {
-  z-index: 3;
-}
-.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-  z-index: -1;
-}
-.oo-ui-popupWidget {
-  position: absolute;
-}
-.oo-ui-popupWidget-popup {
-  position: relative;
-  overflow: hidden;
-  z-index: 1;
-}
-.oo-ui-popupWidget-anchor {
-  display: none;
-  z-index: 1;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-  display: block;
-  position: absolute;
-  background-repeat: no-repeat;
-}
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before,
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after {
-  content: '';
-  position: absolute;
-  width: 0;
-  height: 0;
-  border-style: solid;
-  border-color: transparent;
-}
-.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor {
-  left: 0;
-  /* `top` property is to be set in theme's selector due to specific `@size-anchor` values */
-}
-.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:before,
-.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:after {
-  border-top: 0;
-}
-.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor {
-  left: 0;
-  /* `bottom` property is to be set in theme's selector due to specific `@size-anchor` values */
-}
-.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:before,
-.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:after {
-  border-bottom: 0;
-}
-.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor {
-  top: 0;
-  /* `left` property is to be set in theme's selector due to specific `@size-anchor` values */
-}
-.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:before,
-.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:after {
-  border-left: 0;
-}
-.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor {
-  top: 0;
-  /* `right` property is to be set in theme's selector due to specific `@size-anchor` values */
-}
-.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:before,
-.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:after {
-  border-right: 0;
-}
-.oo-ui-popupWidget-head {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.oo-ui-popupWidget-head > .oo-ui-buttonWidget {
-  float: right;
-}
-.oo-ui-popupWidget-head > .oo-ui-labelElement-label {
-  float: left;
-  cursor: default;
-}
-.oo-ui-popupWidget-body {
-  clear: both;
-}
-.oo-ui-popupWidget-body.oo-ui-clippableElement-clippable {
-  min-height: 1em;
-}
-.oo-ui-popupWidget-popup {
-  background-color: #fff;
-  border: 1px solid #a2a9b1;
-  border-radius: 2px;
-  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25);
-}
-.oo-ui-popupWidget-anchored-top {
-  margin-top: 9px;
-}
-.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor {
-  top: -9px;
-}
-.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:before {
-  bottom: -10px;
-  left: -9px;
-  border-bottom-color: #a2a9b1;
-  border-width: 10px;
-}
-.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:after {
-  bottom: -10px;
-  left: -8px;
-  border-bottom-color: #fff;
-  border-width: 9px;
-}
-.oo-ui-popupWidget-anchored-bottom {
-  margin-bottom: 9px;
-}
-.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor {
-  bottom: -9px;
-}
-.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:before {
-  top: -10px;
-  left: -9px;
-  border-top-color: #a2a9b1;
-  border-width: 10px;
-}
-.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:after {
-  top: -10px;
-  left: -8px;
-  border-top-color: #fff;
-  border-width: 9px;
-}
-.oo-ui-popupWidget-anchored-start {
-  margin-left: 9px;
-}
-.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor {
-  left: -9px;
-}
-.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:before {
-  right: -10px;
-  top: -9px;
-  border-right-color: #a2a9b1;
-  border-width: 10px;
-}
-.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:after {
-  right: -10px;
-  top: -8px;
-  border-right-color: #fff;
-  border-width: 9px;
-}
-.oo-ui-popupWidget-anchored-end {
-  margin-right: 9px;
-}
-.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor {
-  right: -9px;
-}
-.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:before {
-  left: -10px;
-  top: -9px;
-  border-left-color: #a2a9b1;
-  border-width: 10px;
-}
-.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:after {
-  left: -10px;
-  top: -8px;
-  border-left-color: #fff;
-  border-width: 9px;
-}
-.oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup {
-  -webkit-transition: width 100ms, height 100ms, left 100ms;
-     -moz-transition: width 100ms, height 100ms, left 100ms;
-          transition: width 100ms, height 100ms, left 100ms;
-}
-.oo-ui-popupWidget-head {
-  height: 2.5em;
-}
-.oo-ui-popupWidget-head > .oo-ui-buttonWidget {
-  margin: 0.25em;
-}
-.oo-ui-popupWidget-head > .oo-ui-labelElement-label {
-  margin: 0.75em 1em;
-}
-.oo-ui-popupWidget-body {
-  line-height: 1.4;
-}
-.oo-ui-popupWidget-body-padded {
-  margin: 0.75em 1em;
-}
-.oo-ui-popupButtonWidget {
-  position: relative;
-}
-.oo-ui-popupButtonWidget .oo-ui-popupWidget {
-  cursor: auto;
-}
-.oo-ui-inputWidget {
-  margin-right: 0.5em;
-}
-.oo-ui-inputWidget:last-child {
-  margin-right: 0;
-}
-.oo-ui-buttonInputWidget > button,
-.oo-ui-buttonInputWidget > input {
-  border: 0;
-  padding: 0;
-  background-color: transparent;
-}
-.oo-ui-checkboxInputWidget {
-  position: relative;
-  line-height: 1.5625em;
-  white-space: nowrap;
-}
-.oo-ui-checkboxInputWidget * {
-  font: inherit;
-  vertical-align: middle;
-}
-.oo-ui-checkboxInputWidget [type='checkbox'] {
-  position: relative;
-  max-width: none;
-  width: 1.5625em;
-  height: 1.5625em;
-  margin: 0;
-  opacity: 0;
-  z-index: 1;
-}
-.oo-ui-checkboxInputWidget [type='checkbox'] + span {
-  background-color: #fff;
-  background-origin: border-box;
-  background-position: center center;
-  background-repeat: no-repeat;
-  background-size: 0 0;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  position: absolute;
-  left: 0;
-  width: 1.5625em;
-  height: 1.5625em;
-  border: 1px solid #72777d;
-  border-radius: 2px;
-}
-.oo-ui-checkboxInputWidget [type='checkbox']:checked + span {
-  background-image: url('themes/mediawiki/images/icons/check-invert.png');
-  background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url('themes/mediawiki/images/icons/check-invert.svg');
-  background-image:         linear-gradient(transparent, transparent), /* @embed */ url('themes/mediawiki/images/icons/check-invert.svg');
-  background-image:      -o-linear-gradient(transparent, transparent), url('themes/mediawiki/images/icons/check-invert.png');
-  background-size: 90% 90%;
-}
-.oo-ui-checkboxInputWidget [type='checkbox']:disabled + span {
-  background-color: #c8ccd1;
-  border-color: #c8ccd1;
-}
-.oo-ui-checkboxInputWidget [type='checkbox']:disabled:hover + span {
-  background-color: #c8ccd1;
-  border-color: #c8ccd1;
-}
-.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox'] {
-  cursor: pointer;
-}
-.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox'] + span {
-  cursor: pointer;
-  -webkit-transition: background-color 100ms, background-size 100ms, border-color 100ms, box-shadow 100ms;
-     -moz-transition: background-color 100ms, background-size 100ms, border-color 100ms, box-shadow 100ms;
-          transition: background-color 100ms, background-size 100ms, border-color 100ms, box-shadow 100ms;
-}
-.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:hover + span,
-.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:focus:hover + span {
-  border-color: #36c;
-}
-.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:active + span,
-.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:active:focus + span {
-  background-color: #2a4b8d;
-  border-color: #2a4b8d;
-  box-shadow: inset 0 0 0 1px #2a4b8d;
-}
-.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:focus + span {
-  border-color: #36c;
-  box-shadow: inset 0 0 0 1px #36c;
-}
-.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked + span {
-  background-color: #36c;
-  border-color: #36c;
-}
-.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:hover + span,
-.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:focus:hover + span {
-  background-color: #447ff5;
-  border-color: #447ff5;
-}
-.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:active + span,
-.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:active:hover + span,
-.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:active:focus + span {
-  background-color: #2a4b8d;
-  border-color: #2a4b8d;
-  box-shadow: inset 0 0 0 1px #2a4b8d;
-}
-.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:focus + span {
-  background-color: #36c;
-  border-color: #36c;
-  box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;
-}
-.oo-ui-checkboxMultiselectInputWidget .oo-ui-fieldLayout {
-  margin-top: 0;
-}
-.oo-ui-checkboxMultiselectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body {
-  padding: 0.3125em 0;
-}
-.oo-ui-checkboxMultiselectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body .oo-ui-labelElement-label {
-  line-height: 1.5;
-}
-.oo-ui-dropdownInputWidget {
-  position: relative;
-  vertical-align: middle;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  width: 100%;
-  max-width: 50em;
-}
-.oo-ui-dropdownInputWidget .oo-ui-dropdownWidget,
-.oo-ui-dropdownInputWidget select {
-  display: block;
-}
-.oo-ui-dropdownInputWidget select {
-  background-position: -9999em 0;
-  background-repeat: no-repeat;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select {
-  cursor: pointer;
-}
-.oo-ui-dropdownInputWidget-php {
-  border-right: 1px solid #a2a9b1;
-  border-radius: 2px;
-  overflow-x: hidden;
-}
-.oo-ui-dropdownInputWidget select {
-  -webkit-appearance: none;
-     -moz-appearance: none;
-          appearance: none;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  border: 1px solid #a2a9b1;
-  border-radius: 2px;
-  padding: 0.625em 0.9375em 0.546875em;
-  font-size: inherit;
-  font-family: inherit;
-  vertical-align: middle;
-}
-.oo-ui-dropdownInputWidget select::-ms-expand {
-  display: none;
-}
-.oo-ui-dropdownInputWidget select:not( [no-ie] ) {
-  background-position: right 1.75em center;
-  width: calc( 100% + 1em );
-  height: 2.5em;
-  padding: 0 0 0 0.9375em;
-}
-.oo-ui-dropdownInputWidget option {
-  font-size: inherit;
-  font-family: inherit;
-  height: 1.5em;
-  padding: 0.625em 0.9375em;
-}
-.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select {
-  background-color: #f8f9fa;
-  color: #222;
-  -webkit-transition: background-color 100ms, border-color 100ms, box-shadow 100ms;
-     -moz-transition: background-color 100ms, border-color 100ms, box-shadow 100ms;
-          transition: background-color 100ms, border-color 100ms, box-shadow 100ms;
-}
-.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover {
-  background-color: #fff;
-  color: #444;
-  border-color: #a2a9b1;
-}
-.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:active {
-  color: #000;
-  border-color: #72777d;
-}
-.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus {
-  border-color: #36c;
-  outline: 0;
-  box-shadow: inset 0 0 0 1px #36c;
-}
-.oo-ui-dropdownInputWidget.oo-ui-widget-disabled select {
-  background-color: #eaecf0;
-  color: #72777d;
-  border-color: #c8ccd1;
-}
-.oo-ui-radioInputWidget {
-  position: relative;
-  line-height: 1.5625em;
-  white-space: nowrap;
-}
-.oo-ui-radioInputWidget * {
-  font: inherit;
-  vertical-align: middle;
-}
-.oo-ui-radioInputWidget [type='radio'] {
-  position: relative;
-  max-width: none;
-  width: 1.5625em;
-  height: 1.5625em;
-  margin: 0;
-  opacity: 0;
-  z-index: 1;
-}
-.oo-ui-radioInputWidget [type='radio'] + span {
-  background-color: #fff;
-  position: absolute;
-  left: 0;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  width: 1.5625em;
-  height: 1.5625em;
-  border: 1px solid #72777d;
-  border-radius: 100%;
-}
-.oo-ui-radioInputWidget [type='radio'] + span:before {
-  content: ' ';
-  position: absolute;
-  top: -4px;
-  left: -4px;
-  right: -4px;
-  bottom: -4px;
-  border: 1px solid transparent;
-  border-radius: 100%;
-}
-.oo-ui-radioInputWidget [type='radio']:checked + span {
-  border-width: 0.390625em;
-}
-.oo-ui-radioInputWidget [type='radio']:checked:hover + span,
-.oo-ui-radioInputWidget [type='radio']:checked:focus:hover + span {
-  border-width: 0.390625em;
-}
-.oo-ui-radioInputWidget [type='radio']:disabled + span {
-  background-color: #c8ccd1;
-  border-color: #c8ccd1;
-}
-.oo-ui-radioInputWidget [type='radio']:disabled:checked + span {
-  background-color: #fff;
-}
-.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio'] {
-  cursor: pointer;
-}
-.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio'] + span {
-  cursor: pointer;
-  -webkit-transition: background-color 100ms, border-color 100ms, border-width 100ms;
-     -moz-transition: background-color 100ms, border-color 100ms, border-width 100ms;
-          transition: background-color 100ms, border-color 100ms, border-width 100ms;
-}
-.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:hover + span {
-  border-color: #36c;
-}
-.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:active + span {
-  background-color: #2a4b8d;
-  border-color: #2a4b8d;
-}
-.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked + span {
-  border-color: #36c;
-}
-.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:hover + span {
-  border-color: #447ff5;
-}
-.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:hover:focus + span {
-  border-color: #447ff5;
-  box-shadow: inset 0 0 0 1px #447ff5;
-}
-.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:active + span,
-.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:active:focus + span {
-  border-color: #2a4b8d;
-  box-shadow: inset 0 0 0 1px #2a4b8d;
-}
-.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:active + span:before,
-.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:active:focus + span:before {
-  border-color: #2a4b8d;
-}
-.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:focus + span {
-  box-shadow: inset 0 0 0 1px #36c;
-}
-.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:focus + span:before {
-  border-color: #fff;
-  top: -3px;
-  right: -3px;
-  bottom: -3px;
-  left: -3px;
-}
-.oo-ui-radioSelectInputWidget .oo-ui-fieldLayout {
-  margin-top: 0;
-}
-.oo-ui-radioSelectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body {
-  padding: 0.3125em 0;
-}
-.oo-ui-radioSelectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body .oo-ui-labelElement-label {
-  line-height: 1.5;
-}
-.oo-ui-textInputWidget {
-  position: relative;
-  vertical-align: middle;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  width: 100%;
-  max-width: 50em;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  display: block;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.oo-ui-textInputWidget textarea {
-  overflow: auto;
-  resize: none;
-}
-.oo-ui-textInputWidget [type='number'] {
-  -moz-appearance: textfield;
-}
-.oo-ui-textInputWidget [type='number']::-webkit-outer-spin-button,
-.oo-ui-textInputWidget [type='number']::-webkit-inner-spin-button {
-  -webkit-appearance: none;
-  margin: 0;
-}
-.oo-ui-textInputWidget [type='search'] {
-  -webkit-appearance: textfield;
-}
-.oo-ui-textInputWidget [type='search']::-ms-clear {
-  display: none;
-}
-.oo-ui-textInputWidget [type='search']::-webkit-search-decoration,
-.oo-ui-textInputWidget [type='search']::-webkit-search-cancel-button {
-  display: none;
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator,
-.oo-ui-textInputWidget > .oo-ui-labelElement-label {
-  display: none;
-}
-.oo-ui-textInputWidget.oo-ui-iconElement > .oo-ui-iconElement-icon,
-.oo-ui-textInputWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator {
-  display: block;
-  position: absolute;
-  top: 0;
-  height: 100%;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-iconElement-icon,
-.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator {
-  cursor: text;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-textInputWidget-type-search > .oo-ui-indicatorElement-indicator {
-  cursor: pointer;
-}
-.oo-ui-textInputWidget.oo-ui-widget-disabled input,
-.oo-ui-textInputWidget.oo-ui-widget-disabled textarea,
-.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.oo-ui-textInputWidget.oo-ui-labelElement > .oo-ui-labelElement-label {
-  display: block;
-}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
-.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label {
-  left: 0;
-}
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator,
-.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label {
-  right: 0;
-}
-.oo-ui-textInputWidget > .oo-ui-labelElement-label {
-  position: absolute;
-  top: 0;
-}
-.oo-ui-textInputWidget-php > .oo-ui-iconElement-icon,
-.oo-ui-textInputWidget-php > .oo-ui-indicatorElement-indicator,
-.oo-ui-textInputWidget-php > .oo-ui-labelElement-label {
-  pointer-events: none;
-}
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  margin: 0;
-  font-size: inherit;
-  font-family: inherit;
-  background-color: #fff;
-  color: #000;
-  border: 1px solid #a2a9b1;
-  border-radius: 2px;
-  padding: 0.625em 0.625em 0.546875em;
-}
-.oo-ui-textInputWidget input {
-  line-height: 1.172em;
-}
-.oo-ui-textInputWidget textarea {
-  line-height: 1.275;
-}
-.oo-ui-textInputWidget .oo-ui-pendingElement-pending {
-  background-color: transparent;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled input,
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea {
-  box-shadow: inset 0 0 0 1px #fff;
-  -webkit-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
-     -moz-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
-          transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled input:hover,
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:hover {
-  border-color: #72777d;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus {
-  outline: 0;
-  border-color: #36c;
-  box-shadow: inset 0 0 0 1px #36c;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled input[readonly],
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea[readonly] {
-  color: #72777d;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled input[readonly]:hover,
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea[readonly]:hover {
-  border-color: #c8ccd1;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled input[readonly]:focus,
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea[readonly]:focus {
-  border-color: #c8ccd1;
-  box-shadow: inset 0 0 0 1px #c8ccd1;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled input::-webkit-input-placeholder,
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea::-webkit-input-placeholder {
-  color: #72777d;
-  opacity: 1;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled input:-ms-input-placeholder,
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:-ms-input-placeholder {
-  color: #72777d;
-  opacity: 1;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled input::-moz-placeholder,
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea::-moz-placeholder {
-  color: #72777d;
-  opacity: 1;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled input:-moz-placeholder,
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:-moz-placeholder {
-  color: #72777d;
-  opacity: 1;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled input::placeholder,
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea::placeholder {
-  color: #72777d;
-  opacity: 1;
-}
-@media screen and (min-width: 0) {
-  .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus {
-    outline: 1px solid #36c;
-    outline-offset: -2px;
-  }
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input,
-.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea {
-  border-color: #d33;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input:hover,
-.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea:hover {
-  border-color: #d33;
-}
-.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input:focus,
-.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea:focus {
-  border-color: #d33;
-  box-shadow: inset 0 0 0 1px #d33;
-}
-.oo-ui-textInputWidget.oo-ui-widget-disabled input,
-.oo-ui-textInputWidget.oo-ui-widget-disabled textarea {
-  background-color: #eaecf0;
-  -webkit-text-fill-color: #72777d;
-  color: #72777d;
-  text-shadow: 0 1px 1px #fff;
-  border-color: #c8ccd1;
-}
-.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon,
-.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
-  opacity: 0.51;
-}
-.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label {
-  color: #72777d;
-  text-shadow: 0 1px 1px #fff;
-}
-.oo-ui-textInputWidget.oo-ui-iconElement input,
-.oo-ui-textInputWidget.oo-ui-iconElement textarea {
-  padding-left: 2.5em;
-}
-.oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-  left: 0.46875em;
-  max-height: 2.5em;
-}
-.oo-ui-textInputWidget.oo-ui-indicatorElement input,
-.oo-ui-textInputWidget.oo-ui-indicatorElement textarea {
-  padding-right: 2.1875em;
-}
-.oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  max-height: 2.5em;
-  margin-right: 0.9375em;
-}
-.oo-ui-textInputWidget > .oo-ui-labelElement-label {
-  color: #72777d;
-  margin-top: 1px;
-  padding: 0.625em 0 0.546875em 0.625em;
-  line-height: 1.172em;
-}
-.oo-ui-textInputWidget-labelPosition-after.oo-ui-indicatorElement > .oo-ui-labelElement-label {
-  margin-right: 2.5em;
-}
-.oo-ui-textInputWidget-labelPosition-before.oo-ui-iconElement > .oo-ui-labelElement-label {
-  padding-left: 2.5em;
-}
-.oo-ui-menuSelectWidget {
-  position: absolute;
-  width: 100%;
-  z-index: 4;
-  background-color: #fff;
-  margin-top: -1px;
-  border: 1px solid #a2a9b1;
-  border-radius: 0 0 2px 2px;
-  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25);
-}
-.oo-ui-menuSelectWidget input {
-  position: absolute;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-  opacity: 0;
-}
-.oo-ui-menuSelectWidget.oo-ui-clippableElement-clippable {
-  min-height: 2.6em;
-}
-.oo-ui-menuSelectWidget-invisible {
-  display: none;
-}
-.oo-ui-menuOptionWidget {
-  -webkit-transition: background-color 100ms, color 100ms;
-     -moz-transition: background-color 100ms, color 100ms;
-          transition: background-color 100ms, color 100ms;
-}
-.oo-ui-menuOptionWidget .oo-ui-iconElement-icon {
-  display: none;
-}
-.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon {
-  display: block;
-}
-.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted {
-  background-color: #eaecf0;
-  color: #000;
-}
-.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected {
-  background-color: #eaf3ff;
-  color: #36c;
-}
-.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon {
-  display: none;
-}
-.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,
-.oo-ui-menuOptionWidget.oo-ui-optionWidget-pressed.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted {
-  background-color: rgba(41, 98, 204, 0.1);
-  color: #36c;
-}
-.oo-ui-menuOptionWidget.oo-ui-iconElement {
-  padding-left: 0.9375em;
-}
-.oo-ui-menuSectionOptionWidget {
-  color: #72777d;
-  padding: 0.703125em 0.9375em 0.3125em;
-  font-weight: bold;
-}
-.oo-ui-menuSectionOptionWidget.oo-ui-widget-enabled {
-  cursor: default;
-}
-.oo-ui-dropdownWidget {
-  display: inline-block;
-  position: relative;
-  width: 100%;
-  max-width: 50em;
-  margin-right: 0.5em;
-}
-.oo-ui-dropdownWidget-handle {
-  position: relative;
-  width: 100%;
-  display: block;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  cursor: default;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon,
-.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
-  position: absolute;
-  top: 0;
-  height: 100%;
-}
-.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle {
-  cursor: pointer;
-}
-.oo-ui-dropdownWidget:last-child {
-  margin-right: 0;
-}
-.oo-ui-dropdownWidget-handle {
-  min-height: 2.5em;
-  border: 1px solid #a2a9b1;
-  border-radius: 2px;
-  padding: 0.625em 0.9375em 0.546875em;
-  line-height: 1;
-}
-.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon {
-  left: 0.46875em;
-}
-.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
-  right: 0.9375em;
-}
-.oo-ui-dropdownWidget-handle .oo-ui-labelElement-label {
-  line-height: 1.172em;
-}
-.oo-ui-dropdownWidget.oo-ui-iconElement .oo-ui-dropdownWidget-handle {
-  padding-left: 2.5em;
-}
-.oo-ui-dropdownWidget.oo-ui-indicatorElement .oo-ui-dropdownWidget-handle {
-  padding-right: 1.875em;
-}
-.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle {
-  background-color: #f8f9fa;
-  color: #222;
-  -webkit-transition: background-color 100ms, border-color 100ms, box-shadow 100ms;
-     -moz-transition: background-color 100ms, border-color 100ms, box-shadow 100ms;
-          transition: background-color 100ms, border-color 100ms, box-shadow 100ms;
-}
-.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:hover {
-  background-color: #fff;
-  color: #444;
-  border-color: #a2a9b1;
-}
-.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:hover .oo-ui-iconElement-icon,
-.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:hover .oo-ui-indicatorElement-indicator {
-  opacity: 0.73;
-}
-.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:active {
-  color: #000;
-  border-color: #72777d;
-}
-.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:focus {
-  border-color: #36c;
-  outline: 0;
-  box-shadow: inset 0 0 0 1px #36c;
-}
-.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon,
-.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
-  opacity: 0.87;
-  -webkit-transition: opacity 100ms;
-     -moz-transition: opacity 100ms;
-          transition: opacity 100ms;
-}
-.oo-ui-dropdownWidget.oo-ui-widget-enabled.oo-ui-dropdownWidget-open .oo-ui-dropdownWidget-handle {
-  background-color: #fff;
-}
-.oo-ui-dropdownWidget.oo-ui-widget-enabled.oo-ui-dropdownWidget-open .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon,
-.oo-ui-dropdownWidget.oo-ui-widget-enabled.oo-ui-dropdownWidget-open .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
-  opacity: 1;
-}
-.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle {
-  color: #72777d;
-  text-shadow: 0 1px 1px #fff;
-  border-color: #c8ccd1;
-  background-color: #eaecf0;
-}
-.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle:focus {
-  outline: 0;
-}
-.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
-  opacity: 0.15;
-}
-.oo-ui-comboBoxInputWidget {
-  display: inline-block;
-  position: relative;
-}
-.oo-ui-comboBoxInputWidget-field {
-  display: table;
-  width: 100%;
-  table-layout: fixed;
-}
-.oo-ui-comboBoxInputWidget .oo-ui-inputWidget-input {
-  display: table-cell;
-  vertical-align: middle;
-  position: relative;
-  overflow: hidden;
-}
-.oo-ui-comboBoxInputWidget-dropdownButton {
-  display: table-cell;
-}
-.oo-ui-comboBoxInputWidget-dropdownButton > .oo-ui-buttonElement-button {
-  display: block;
-  overflow: hidden;
-}
-.oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty .oo-ui-comboBoxInputWidget-dropdownButton {
-  display: none;
-}
-.oo-ui-comboBoxInputWidget-php ::-webkit-calendar-picker-indicator {
-  opacity: 0;
-  position: absolute;
-  right: 0;
-  top: 0;
-  width: 2.5em;
-  height: 2.5em;
-  padding: 0;
-}
-.oo-ui-comboBoxInputWidget-php > .oo-ui-indicatorWidget {
-  display: block;
-  position: absolute;
-  top: 0;
-  height: 100%;
-  pointer-events: none;
-}
-.oo-ui-comboBoxInputWidget input {
-  height: 2.5em;
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-  border-right-width: 0;
-}
-.oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty input,
-.oo-ui-comboBoxInputWidget-php input {
-  border-top-right-radius: 2px;
-  border-bottom-right-radius: 2px;
-  border-right-width: 1px;
-}
-.oo-ui-comboBoxInputWidget-dropdownButton.oo-ui-indicatorElement {
-  width: 2.5em;
-}
-.oo-ui-comboBoxInputWidget-dropdownButton.oo-ui-indicatorElement .oo-ui-buttonElement-button {
-  min-width: 2.5em;
-  min-height: 2.5em;
-  padding-left: 0;
-}
-.oo-ui-comboBoxInputWidget-dropdownButton.oo-ui-indicatorElement .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  right: 0.703125em;
-}
-.oo-ui-comboBoxInputWidget-dropdownButton.oo-ui-indicatorElement .oo-ui-buttonElement-button,
-.oo-ui-comboBoxInputWidget-dropdownButton.oo-ui-indicatorElement .oo-ui-buttonElement-button:focus {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.oo-ui-comboBoxInputWidget-php .oo-ui-indicatorWidget {
-  right: 0.9375em;
-  margin: 0;
-}
-.oo-ui-comboBoxInputWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
-  opacity: 1;
-}
-.oo-ui-multioptionWidget {
-  position: relative;
-  display: block;
-}
-.oo-ui-multioptionWidget.oo-ui-widget-enabled {
-  cursor: pointer;
-}
-.oo-ui-multioptionWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-.oo-ui-multioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-  display: block;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-}
-.oo-ui-multioptionWidget.oo-ui-widget-disabled {
-  color: #72777d;
-}
-.oo-ui-checkboxMultioptionWidget {
-  padding: 0.3125em 0;
-}
-.oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget,
-.oo-ui-checkboxMultioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-checkboxMultioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-  padding-left: 0.46875em;
-}
-.oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget {
-  margin-right: 0;
-}
-.oo-ui-progressBarWidget {
-  max-width: 50em;
-  background-color: #fff;
-  border: 1px solid #a2a9b1;
-  border-radius: 2px;
-  overflow: hidden;
-}
-.oo-ui-progressBarWidget-bar {
-  height: 1em;
-  -webkit-transition: width 200ms;
-     -moz-transition: width 200ms;
-          transition: width 200ms;
-}
-.oo-ui-progressBarWidget-indeterminate .oo-ui-progressBarWidget-bar {
-  -webkit-animation: oo-ui-progressBarWidget-slide 2s infinite linear;
-     -moz-animation: oo-ui-progressBarWidget-slide 2s infinite linear;
-          animation: oo-ui-progressBarWidget-slide 2s infinite linear;
-  width: 40%;
-  -webkit-transform: translate(-25%);
-     -moz-transform: translate(-25%);
-      -ms-transform: translate(-25%);
-          transform: translate(-25%);
-  border-left-width: 1px;
-}
-.oo-ui-progressBarWidget.oo-ui-widget-enabled .oo-ui-progressBarWidget-bar {
-  background-color: #36c;
-}
-.oo-ui-progressBarWidget.oo-ui-widget-disabled .oo-ui-progressBarWidget-bar {
-  background-color: #c8ccd1;
-}
-@-webkit-keyframes oo-ui-progressBarWidget-slide {
-  from {
-    -webkit-transform: translate(-100%);
-       -moz-transform: translate(-100%);
-        -ms-transform: translate(-100%);
-            transform: translate(-100%);
-  }
-  to {
-    -webkit-transform: translate(350%);
-       -moz-transform: translate(350%);
-        -ms-transform: translate(350%);
-            transform: translate(350%);
-  }
-}
-@-moz-keyframes oo-ui-progressBarWidget-slide {
-  from {
-    -webkit-transform: translate(-100%);
-       -moz-transform: translate(-100%);
-        -ms-transform: translate(-100%);
-            transform: translate(-100%);
-  }
-  to {
-    -webkit-transform: translate(350%);
-       -moz-transform: translate(350%);
-        -ms-transform: translate(350%);
-            transform: translate(350%);
-  }
-}
-@keyframes oo-ui-progressBarWidget-slide {
-  from {
-    -webkit-transform: translate(-100%);
-       -moz-transform: translate(-100%);
-        -ms-transform: translate(-100%);
-            transform: translate(-100%);
-  }
-  to {
-    -webkit-transform: translate(350%);
-       -moz-transform: translate(350%);
-        -ms-transform: translate(350%);
-            transform: translate(350%);
-  }
-}
diff --git a/resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css b/resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css
new file mode 100644 (file)
index 0000000..f9a6c6f
--- /dev/null
@@ -0,0 +1,1984 @@
+/*!
+ * OOjs UI v0.22.1
+ * https://www.mediawiki.org/wiki/OOjs_UI
+ *
+ * Copyright 2011–2017 OOjs UI Team and other contributors.
+ * Released under the MIT license
+ * http://oojs.mit-license.org
+ *
+ * Date: 2017-05-31T19:07:44Z
+ */
+.oo-ui-element-hidden {
+  display: none !important;
+}
+.oo-ui-buttonElement {
+  display: inline-block;
+  line-height: normal;
+  vertical-align: middle;
+}
+.oo-ui-buttonElement > .oo-ui-buttonElement-button {
+  cursor: pointer;
+  display: inline-block;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  vertical-align: middle;
+  font-family: inherit;
+  font-size: inherit;
+  white-space: nowrap;
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+.oo-ui-buttonElement > .oo-ui-buttonElement-button::-moz-focus-inner {
+  border-color: transparent;
+  padding: 0;
+}
+.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
+.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
+  display: none;
+}
+.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
+  cursor: default;
+}
+.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
+.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
+.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
+  display: inline-block;
+  vertical-align: middle;
+}
+.oo-ui-buttonElement-frameless {
+  position: relative;
+}
+.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
+  vertical-align: top;
+  text-align: center;
+}
+.oo-ui-buttonElement > .oo-ui-buttonElement-button {
+  position: relative;
+  border-radius: 2px;
+  font-weight: bold;
+  text-decoration: none;
+}
+.oo-ui-buttonElement > .oo-ui-buttonElement-button:focus {
+  outline: 0;
+}
+.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
+.oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
+  position: absolute;
+  top: 0;
+  height: 100%;
+}
+.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
+  display: block;
+}
+.oo-ui-buttonElement > input.oo-ui-buttonElement-button {
+  -webkit-appearance: none;
+}
+.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button {
+  line-height: 1;
+}
+.oo-ui-buttonElement.oo-ui-labelElement > input.oo-ui-buttonElement-button,
+.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
+  line-height: 1.172em;
+}
+.oo-ui-buttonElement.oo-ui-labelElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button {
+  padding-right: 2.5em;
+}
+.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
+  display: block;
+}
+.oo-ui-buttonElement.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
+.oo-ui-buttonElement.oo-ui-indicatorElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
+  right: 0.9375em;
+}
+.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button {
+  -webkit-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
+  -moz-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
+  transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
+}
+.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
+.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
+  opacity: 0.87;
+  -webkit-transition: opacity 100ms;
+  -moz-transition: opacity 100ms;
+  transition: opacity 100ms;
+}
+.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon.oo-ui-image-invert,
+.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator.oo-ui-image-invert {
+  opacity: 1;
+}
+.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon,
+.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover > .oo-ui-indicatorElement-indicator {
+  opacity: 0.73;
+}
+.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon.oo-ui-image-invert,
+.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover > .oo-ui-indicatorElement-indicator.oo-ui-image-invert {
+  opacity: 1;
+}
+.oo-ui-buttonElement.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
+.oo-ui-buttonElement.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
+  opacity: 1;
+}
+.oo-ui-buttonElement-frameless.oo-ui-iconElement:first-child {
+  margin-left: -0.234375em;
+}
+.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button {
+  min-width: 1.875em;
+  min-height: 1.875em;
+  border-color: #fff;
+  border-color: transparent;
+  border-style: solid;
+  border-width: 1px;
+  padding-top: 2.34375em;
+  padding-left: 2.34375em;
+}
+.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
+  left: 0.234375em;
+}
+.oo-ui-buttonElement-frameless.oo-ui-labelElement:first-child {
+  margin-left: -0.3125em;
+}
+.oo-ui-buttonElement-frameless.oo-ui-labelElement.oo-ui-iconElement:first-child {
+  margin-left: -0.234375em;
+}
+.oo-ui-buttonElement-frameless.oo-ui-labelElement.oo-ui-iconElement > .oo-ui-buttonElement-button {
+  padding-left: 2.34375em;
+}
+.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button {
+  border-color: #fff;
+  border-color: transparent;
+  border-style: solid;
+  border-width: 1px;
+  padding: 0.625em 0.3125em 0.546875em 0.3125em;
+}
+.oo-ui-buttonElement-frameless.oo-ui-indicatorElement > .oo-ui-buttonElement-button {
+  min-width: 12px;
+  min-height: 12px;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button {
+  color: #222;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover {
+  color: #444;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-iconElement > .oo-ui-buttonElement-button:focus,
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-labelElement > .oo-ui-buttonElement-button:focus {
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-iconElement > .oo-ui-buttonElement-button:focus:active,
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-labelElement > .oo-ui-buttonElement-button:focus:active {
+  border-color: #fff;
+  border-color: transparent;
+  box-shadow: none;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-indicatorElement:not( .oo-ui-iconElement ):not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button {
+  border-radius: 1px;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-indicatorElement:not( .oo-ui-iconElement ):not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button:focus {
+  box-shadow: 0 0 0 2px #36c;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-indicatorElement:not( .oo-ui-iconElement ):not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button:focus:active {
+  box-shadow: none;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > input.oo-ui-buttonElement-button,
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active {
+  color: #000;
+  border-color: #fff;
+  border-color: transparent;
+  box-shadow: none;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button {
+  color: #36c;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover {
+  color: #447ff5;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active:focus,
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
+  color: #2a4b8d;
+  box-shadow: none;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button {
+  color: #36c;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover {
+  color: #447ff5;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active:focus,
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
+  color: #2a4b8d;
+  box-shadow: none;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button {
+  color: #d33;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover {
+  color: #ff4242;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active:focus,
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
+  color: #b32424;
+  box-shadow: none;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled[class*='oo-ui-flaggedElement'] > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled[class*='oo-ui-flaggedElement'] > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
+  opacity: 1;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled[class*='oo-ui-flaggedElement'] > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon,
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled[class*='oo-ui-flaggedElement'] > .oo-ui-buttonElement-button:hover > .oo-ui-indicatorElement-indicator {
+  opacity: 0.73;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
+  color: #72777d;
+}
+.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
+.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
+  opacity: 0.51;
+}
+.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
+  border-style: solid;
+  border-width: 1px;
+  border-radius: 2px;
+  padding-left: 0.9375em;
+  padding-right: 0.9375em;
+}
+.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button {
+  padding-top: 2.34375em;
+  padding-bottom: 0;
+  padding-left: 2.03125em;
+}
+.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
+  left: 0.546875em;
+}
+.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button,
+.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button {
+  padding-left: 2.5em;
+}
+.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
+.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
+  left: 0.46875em;
+}
+.oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button {
+  padding-top: 2.34375em;
+  padding-right: 2.03125em;
+  padding-bottom: 0;
+}
+.oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
+  right: 1.015625em;
+}
+.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button,
+.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-iconElement > .oo-ui-buttonElement-button {
+  padding-right: 2.5em;
+}
+.oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button {
+  padding-top: 0.625em;
+  padding-bottom: 0.546875em;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
+  background-color: #c8ccd1;
+  color: #fff;
+  border-color: #c8ccd1;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button {
+  background-color: #f8f9fa;
+  color: #222;
+  border-color: #a2a9b1;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover {
+  background-color: #fff;
+  color: #444;
+  border-color: #a2a9b1;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus {
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active:focus,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
+  background-color: #c8ccd1;
+  color: #000;
+  border-color: #72777d;
+  box-shadow: none;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button {
+  background-color: #2a4b8d;
+  color: #fff;
+  border-color: #2a4b8d;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:focus {
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button {
+  color: #36c;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover {
+  background-color: #fff;
+  border-color: #447ff5;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active:focus,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button {
+  background-color: #eff3fa;
+  color: #2a4b8d;
+  border-color: #2a4b8d;
+  box-shadow: none;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus {
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c;
+  outline: 0;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button {
+  color: #36c;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover {
+  background-color: #fff;
+  border-color: #447ff5;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active:focus,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button {
+  background-color: #eff3fa;
+  color: #2a4b8d;
+  border-color: #2a4b8d;
+  box-shadow: none;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus {
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c;
+  outline: 0;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button {
+  color: #d73333;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover {
+  background-color: #fff;
+  border-color: #ff4242;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active:focus,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button {
+  background-color: #ffffff;
+  color: #b32424;
+  border-color: #b32424;
+  box-shadow: none;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus {
+  border-color: #d33;
+  box-shadow: inset 0 0 0 1px #d33;
+  outline: 0;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button {
+  color: #fff;
+  background-color: #36c;
+  border-color: #36c;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover {
+  background-color: #447ff5;
+  border-color: #447ff5;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active:focus,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button {
+  color: #fff;
+  background-color: #2a4b8d;
+  border-color: #2a4b8d;
+  box-shadow: none;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus {
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;
+  outline: 0;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button {
+  color: #fff;
+  background-color: #36c;
+  border-color: #36c;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover {
+  background-color: #447ff5;
+  border-color: #447ff5;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active:focus,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button {
+  color: #fff;
+  background-color: #2a4b8d;
+  border-color: #2a4b8d;
+  box-shadow: none;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus {
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;
+  outline: 0;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button {
+  color: #fff;
+  background-color: #d33;
+  border-color: #d33;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover {
+  background-color: #ff4242;
+  border-color: #ff4242;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active:focus,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button {
+  color: #fff;
+  background-color: #b32424;
+  border-color: #b32424;
+  box-shadow: none;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus {
+  border-color: #d33;
+  box-shadow: inset 0 0 0 1px #d33, inset 0 0 0 2px #fff;
+  outline: 0;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
+  opacity: 1;
+}
+.oo-ui-clippableElement-clippable {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  min-height: 3.125em;
+}
+.oo-ui-floatableElement {
+  position: absolute;
+}
+.oo-ui-iconElement .oo-ui-iconElement-icon,
+.oo-ui-iconElement.oo-ui-iconElement-icon {
+  background-size: contain;
+  background-position: center center;
+  background-repeat: no-repeat;
+  min-width: 24px;
+  width: 1.875em;
+  min-height: 24px;
+  height: 1.875em;
+}
+.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator,
+.oo-ui-indicatorElement.oo-ui-indicatorElement-indicator {
+  background-size: contain;
+  background-position: center center;
+  background-repeat: no-repeat;
+  min-width: 12px;
+  width: 0.9375em;
+  min-height: 12px;
+  height: 0.9375em;
+}
+.oo-ui-labelElement .oo-ui-labelElement-label-highlight {
+  font-weight: bold;
+}
+.oo-ui-pendingElement-pending {
+  background-image: /* @embed */ url(themes/wikimediaui/images/textures/pending.gif);
+}
+.oo-ui-fieldLayout {
+  display: block;
+  margin-top: 1.640625em;
+}
+.oo-ui-fieldLayout:before,
+.oo-ui-fieldLayout:after {
+  content: ' ';
+  display: table;
+}
+.oo-ui-fieldLayout:after {
+  clear: both;
+}
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header,
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header,
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help,
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help,
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field,
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field {
+  display: block;
+  float: left;
+}
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header {
+  text-align: right;
+}
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body {
+  display: table;
+  width: 100%;
+}
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header,
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field {
+  display: table-cell;
+  vertical-align: middle;
+}
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field {
+  width: 1px;
+}
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header,
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field {
+  display: block;
+}
+.oo-ui-fieldLayout .oo-ui-fieldLayout-help {
+  float: right;
+}
+.oo-ui-fieldLayout .oo-ui-fieldLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
+  z-index: 1;
+}
+.oo-ui-fieldLayout.oo-ui-labelElement,
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline {
+  margin-top: 1.171875em;
+}
+.oo-ui-fieldLayout:first-child,
+.oo-ui-fieldLayout.oo-ui-labelElement:first-child,
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline:first-child {
+  margin-top: 0;
+}
+.oo-ui-fieldLayout.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header {
+  padding-bottom: 0.3125em;
+}
+.oo-ui-fieldLayout.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label {
+  line-height: 1.4;
+}
+.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header,
+.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body {
+  max-width: 50em;
+}
+.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header,
+.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header {
+  width: 35%;
+  margin-right: 5%;
+}
+.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label,
+.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label {
+  display: block;
+  padding-top: 0.3125em;
+}
+.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help,
+.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help {
+  margin-right: 0;
+  margin-left: -1.875em;
+}
+.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field,
+.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field {
+  width: 60%;
+}
+.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header {
+  padding: 0.3125em 0 0.3125em 0.46875em;
+}
+.oo-ui-fieldLayout .oo-ui-fieldLayout-help {
+  margin-right: 0;
+}
+.oo-ui-fieldLayout .oo-ui-fieldLayout-help:last-child {
+  margin-right: 0;
+}
+.oo-ui-fieldLayout .oo-ui-fieldLayout-help .oo-ui-buttonElement-button {
+  padding-top: 1.71875em;
+  padding-left: 1.71875em;
+}
+.oo-ui-fieldLayout .oo-ui-fieldLayout-help .oo-ui-buttonElement-button .oo-ui-iconElement-icon {
+  left: 0;
+}
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top .oo-ui-fieldLayout-help,
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline .oo-ui-fieldLayout-help {
+  margin-top: -0.46875em;
+}
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top .oo-ui-fieldLayout-help:last-child,
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline .oo-ui-fieldLayout-help:last-child {
+  margin-right: -0.3125em;
+}
+.oo-ui-fieldLayout-messages {
+  list-style: none none;
+  margin: 0.25em 0 0 0.25em;
+  padding: 0;
+}
+.oo-ui-fieldLayout-messages > li {
+  margin: 0;
+  padding: 0;
+  display: table;
+}
+.oo-ui-fieldLayout-messages .oo-ui-iconWidget {
+  display: table-cell;
+}
+.oo-ui-fieldLayout-messages .oo-ui-labelWidget {
+  display: table-cell;
+  padding: 0.1em 0 0.1em 0.3125em;
+  line-height: 1.4;
+  vertical-align: middle;
+}
+.oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label {
+  color: #72777d;
+}
+.oo-ui-actionFieldLayout-input,
+.oo-ui-actionFieldLayout-button {
+  display: table-cell;
+  vertical-align: middle;
+}
+.oo-ui-actionFieldLayout-input {
+  padding-right: 1em;
+}
+.oo-ui-actionFieldLayout-button {
+  width: 1%;
+  white-space: nowrap;
+}
+.oo-ui-actionFieldLayout.oo-ui-fieldLayout-align-top {
+  max-width: 50em;
+}
+.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-button .oo-ui-buttonElement-frameless {
+  margin-left: 0.3125em;
+}
+.oo-ui-fieldsetLayout {
+  position: relative;
+  min-width: 0;
+  margin: 0;
+  border: 0;
+  padding: 0.01px 0 0 0;
+}
+body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout {
+  display: table-cell;
+}
+.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-iconElement-icon {
+  display: block;
+  position: absolute;
+}
+.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header {
+  color: inherit;
+  display: inline-table;
+  box-sizing: border-box;
+  padding: 0;
+  white-space: normal;
+  float: left;
+  width: 100%;
+}
+.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label:empty {
+  display: none;
+}
+.oo-ui-fieldsetLayout-group {
+  clear: both;
+}
+.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help {
+  float: right;
+}
+.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
+  z-index: 1;
+}
+.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-header {
+  max-width: 50em;
+}
+.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout,
+.oo-ui-fieldsetLayout + .oo-ui-formLayout {
+  margin-top: 2em;
+}
+.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label {
+  display: inline-block;
+  margin-bottom: 0.54347826em;
+  font-size: 1.15em;
+  font-weight: bold;
+  line-height: 1.4;
+}
+.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label {
+  padding-left: 1.76630435em;
+  line-height: 1.63043478em;
+}
+.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-iconElement-icon {
+  top: 0;
+  left: 0;
+}
+.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help {
+  margin-right: 0;
+  margin-top: -0.234375em;
+  margin-right: -0.3125em;
+}
+.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help:last-child {
+  margin-right: 0;
+}
+.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help:last-child {
+  margin-right: -0.3125em;
+}
+.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help .oo-ui-buttonElement-button {
+  padding-top: 1.71875em;
+  padding-left: 1.71875em;
+}
+.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help .oo-ui-buttonElement-button .oo-ui-iconElement-icon {
+  left: 0;
+}
+.oo-ui-formLayout + .oo-ui-fieldsetLayout,
+.oo-ui-formLayout + .oo-ui-formLayout {
+  margin-top: 2em;
+}
+.oo-ui-panelLayout {
+  position: relative;
+}
+.oo-ui-panelLayout-scrollable {
+  overflow: auto;
+  -webkit-transform: translateZ(0);
+  transform: translateZ(0);
+}
+.oo-ui-panelLayout-expanded {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+}
+.oo-ui-panelLayout-padded {
+  padding: 1.25em;
+}
+.oo-ui-panelLayout-padded.oo-ui-formLayout > .oo-ui-fieldsetLayout .oo-ui-labelElement-label,
+.oo-ui-panelLayout-padded.oo-ui-formLayout > .oo-ui-fieldsetLayout .oo-ui-iconElement-icon {
+  margin-top: -0.25em;
+}
+.oo-ui-panelLayout-framed {
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+}
+.oo-ui-panelLayout-padded.oo-ui-panelLayout-framed {
+  margin: 1em 0;
+}
+.oo-ui-horizontalLayout > .oo-ui-widget {
+  display: inline-block;
+  vertical-align: middle;
+}
+.oo-ui-horizontalLayout > .oo-ui-layout {
+  display: inline-block;
+}
+.oo-ui-horizontalLayout > .oo-ui-layout,
+.oo-ui-horizontalLayout > .oo-ui-widget {
+  margin-right: 0.5em;
+}
+.oo-ui-horizontalLayout > .oo-ui-layout:last-child,
+.oo-ui-horizontalLayout > .oo-ui-widget:last-child {
+  margin-right: 0;
+}
+.oo-ui-horizontalLayout > .oo-ui-layout {
+  margin-top: 0;
+}
+.oo-ui-optionWidget {
+  position: relative;
+  display: block;
+}
+.oo-ui-optionWidget.oo-ui-widget-enabled {
+  cursor: pointer;
+}
+.oo-ui-optionWidget.oo-ui-widget-disabled {
+  cursor: default;
+}
+.oo-ui-optionWidget.oo-ui-labelElement > .oo-ui-labelElement-label {
+  display: block;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  overflow: hidden;
+}
+.oo-ui-optionWidget .oo-ui-labelElement-label {
+  line-height: 1.6;
+}
+.oo-ui-optionWidget-selected .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
+  opacity: 1;
+}
+.oo-ui-optionWidget.oo-ui-widget-disabled {
+  color: #72777d;
+}
+.oo-ui-decoratedOptionWidget {
+  padding: 0.703125em 0.9375em 0.625em;
+  line-height: 1;
+}
+.oo-ui-decoratedOptionWidget > .oo-ui-iconElement-icon,
+.oo-ui-decoratedOptionWidget > .oo-ui-indicatorElement-indicator {
+  position: absolute;
+}
+.oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
+.oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
+  top: 0;
+  height: 100%;
+}
+.oo-ui-decoratedOptionWidget.oo-ui-iconElement {
+  padding-left: 2.96875em;
+}
+.oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
+  left: 0.9375em;
+}
+.oo-ui-decoratedOptionWidget .oo-ui-labelElement-label {
+  line-height: 1.172em;
+}
+.oo-ui-decoratedOptionWidget.oo-ui-indicatorElement {
+  padding-right: 2.5em;
+}
+.oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
+  right: 0.9375em;
+}
+.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon,
+.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
+  opacity: 0.51;
+}
+.oo-ui-radioSelectWidget:focus {
+  outline: 0;
+}
+.oo-ui-radioSelectWidget:focus [type='radio']:checked + span:before {
+  border-color: #fff;
+}
+.oo-ui-radioOptionWidget {
+  padding: 0.3125em 0;
+}
+.oo-ui-radioOptionWidget .oo-ui-radioInputWidget,
+.oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
+  display: inline-block;
+  vertical-align: middle;
+}
+.oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
+  padding-left: 0.46875em;
+}
+.oo-ui-radioOptionWidget .oo-ui-radioInputWidget {
+  margin-right: 0;
+}
+.oo-ui-labelWidget {
+  display: inline-block;
+}
+.oo-ui-iconWidget {
+  display: inline-block;
+  vertical-align: middle;
+  line-height: 2.5;
+}
+.oo-ui-iconWidget.oo-ui-widget-disabled {
+  opacity: 0.51;
+}
+.oo-ui-indicatorWidget {
+  display: inline-block;
+  vertical-align: middle;
+  line-height: 2.5;
+  margin: 0.46875em;
+}
+.oo-ui-indicatorWidget.oo-ui-widget-disabled {
+  opacity: 0.51;
+}
+.oo-ui-buttonWidget {
+  margin-right: 0.5em;
+}
+.oo-ui-buttonWidget:last-child {
+  margin-right: 0;
+}
+.oo-ui-buttonGroupWidget {
+  display: inline-block;
+  white-space: nowrap;
+  border-radius: 2px;
+  margin-right: 0.5em;
+  z-index: 0;
+  position: relative;
+}
+.oo-ui-buttonGroupWidget .oo-ui-buttonWidget.oo-ui-buttonElement-active .oo-ui-buttonElement-button {
+  cursor: default;
+}
+.oo-ui-buttonGroupWidget:last-child {
+  margin-right: 0;
+}
+.oo-ui-buttonGroupWidget .oo-ui-buttonElement {
+  margin-right: 0;
+}
+.oo-ui-buttonGroupWidget .oo-ui-buttonElement:last-child {
+  margin-right: 0;
+}
+.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
+  margin-left: -1px;
+  border-radius: 0;
+}
+.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button {
+  margin-left: 0;
+  border-bottom-left-radius: 2px;
+  border-top-left-radius: 2px;
+}
+.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button {
+  border-bottom-right-radius: 2px;
+  border-top-right-radius: 2px;
+}
+.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed.oo-ui-widget-disabled + .oo-ui-widget-disabled > .oo-ui-buttonElement-button {
+  border-left-color: #fff;
+}
+.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active {
+  z-index: 1;
+}
+.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus {
+  z-index: 2;
+}
+.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-buttonElement-active > .oo-ui-buttonElement-button {
+  z-index: 3;
+}
+.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
+  z-index: -1;
+}
+.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-toggleWidget-on + .oo-ui-toggleWidget-on > .oo-ui-buttonElement-button,
+.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-toggleWidget-on + .oo-ui-toggleWidget-on > .oo-ui-buttonElement-button:active {
+  border-left-color: #a2a9b1;
+  z-index: 3;
+}
+.oo-ui-popupWidget {
+  position: absolute;
+}
+.oo-ui-popupWidget-popup {
+  position: relative;
+  overflow: hidden;
+  z-index: 1;
+}
+.oo-ui-popupWidget-anchor {
+  display: none;
+  z-index: 1;
+}
+.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
+  display: block;
+  position: absolute;
+  background-repeat: no-repeat;
+}
+.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before,
+.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after {
+  content: '';
+  position: absolute;
+  width: 0;
+  height: 0;
+  border-style: solid;
+  border-color: transparent;
+}
+.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor {
+  left: 0;
+  /* `top` property is to be set in theme's selector due to specific `@size-anchor` values */
+}
+.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:before,
+.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:after {
+  border-top: 0;
+}
+.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor {
+  left: 0;
+  /* `bottom` property is to be set in theme's selector due to specific `@size-anchor` values */
+}
+.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:before,
+.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:after {
+  border-bottom: 0;
+}
+.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor {
+  top: 0;
+  /* `left` property is to be set in theme's selector due to specific `@size-anchor` values */
+}
+.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:before,
+.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:after {
+  border-left: 0;
+}
+.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor {
+  top: 0;
+  /* `right` property is to be set in theme's selector due to specific `@size-anchor` values */
+}
+.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:before,
+.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:after {
+  border-right: 0;
+}
+.oo-ui-popupWidget-head {
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+.oo-ui-popupWidget-head > .oo-ui-buttonWidget {
+  position: absolute;
+}
+.oo-ui-popupWidget-head > .oo-ui-labelElement-label {
+  float: left;
+  cursor: default;
+}
+.oo-ui-popupWidget-body {
+  clear: both;
+}
+.oo-ui-popupWidget-body.oo-ui-clippableElement-clippable {
+  min-height: 1em;
+}
+.oo-ui-popupWidget-popup {
+  background-color: #fff;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25);
+}
+.oo-ui-popupWidget-anchored-top {
+  margin-top: 9px;
+}
+.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor {
+  top: -9px;
+}
+.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:before {
+  bottom: -10px;
+  left: -9px;
+  border-bottom-color: #a2a9b1;
+  border-width: 10px;
+}
+.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:after {
+  bottom: -10px;
+  left: -8px;
+  border-bottom-color: #fff;
+  border-width: 9px;
+}
+.oo-ui-popupWidget-anchored-bottom {
+  margin-bottom: 9px;
+}
+.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor {
+  bottom: -9px;
+}
+.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:before {
+  top: -10px;
+  left: -9px;
+  border-top-color: #a2a9b1;
+  border-width: 10px;
+}
+.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:after {
+  top: -10px;
+  left: -8px;
+  border-top-color: #fff;
+  border-width: 9px;
+}
+.oo-ui-popupWidget-anchored-start {
+  margin-left: 9px;
+}
+.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor {
+  left: -9px;
+}
+.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:before {
+  right: -10px;
+  top: -9px;
+  border-right-color: #a2a9b1;
+  border-width: 10px;
+}
+.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:after {
+  right: -10px;
+  top: -8px;
+  border-right-color: #fff;
+  border-width: 9px;
+}
+.oo-ui-popupWidget-anchored-end {
+  margin-right: 9px;
+}
+.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor {
+  right: -9px;
+}
+.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:before {
+  left: -10px;
+  top: -9px;
+  border-left-color: #a2a9b1;
+  border-width: 10px;
+}
+.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:after {
+  left: -10px;
+  top: -8px;
+  border-left-color: #fff;
+  border-width: 9px;
+}
+.oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup {
+  -webkit-transition: width 100ms, height 100ms, left 100ms;
+  -moz-transition: width 100ms, height 100ms, left 100ms;
+  transition: width 100ms, height 100ms, left 100ms;
+}
+.oo-ui-popupWidget-head {
+  height: 2.5em;
+}
+.oo-ui-popupWidget-head > .oo-ui-buttonWidget {
+  top: 0.3125em;
+  right: 0.3125em;
+}
+.oo-ui-popupWidget-head > .oo-ui-labelElement-label {
+  margin: 0.75em 2.5em 0.75em 1em;
+}
+.oo-ui-popupWidget-body {
+  line-height: 1.4;
+}
+.oo-ui-popupWidget-body-padded {
+  margin: 0.75em 1em;
+}
+.oo-ui-popupButtonWidget {
+  position: relative;
+}
+.oo-ui-popupButtonWidget .oo-ui-popupWidget {
+  cursor: auto;
+}
+.oo-ui-inputWidget {
+  margin-right: 0.5em;
+}
+.oo-ui-inputWidget:last-child {
+  margin-right: 0;
+}
+.oo-ui-buttonInputWidget > button,
+.oo-ui-buttonInputWidget > input {
+  border: 0;
+  padding: 0;
+  background-color: transparent;
+}
+.oo-ui-checkboxInputWidget {
+  position: relative;
+  line-height: 1.5625em;
+  white-space: nowrap;
+}
+.oo-ui-checkboxInputWidget * {
+  font: inherit;
+  vertical-align: middle;
+}
+.oo-ui-checkboxInputWidget [type='checkbox'] {
+  position: relative;
+  max-width: none;
+  width: 1.5625em;
+  height: 1.5625em;
+  margin: 0;
+  opacity: 0;
+  z-index: 1;
+}
+.oo-ui-checkboxInputWidget [type='checkbox'] + span {
+  background-color: #fff;
+  background-origin: border-box;
+  background-position: center center;
+  background-repeat: no-repeat;
+  background-size: 0 0;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  position: absolute;
+  left: 0;
+  width: 1.5625em;
+  height: 1.5625em;
+  border: 1px solid #72777d;
+  border-radius: 2px;
+}
+.oo-ui-checkboxInputWidget [type='checkbox']:checked + span {
+  background-image: url('themes/wikimediaui/images/icons/check-invert.png');
+  background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url('themes/wikimediaui/images/icons/check-invert.svg');
+  background-image: linear-gradient(transparent, transparent), /* @embed */ url('themes/wikimediaui/images/icons/check-invert.svg');
+  background-image: -o-linear-gradient(transparent, transparent), url('themes/wikimediaui/images/icons/check-invert.png');
+  background-size: 90% 90%;
+}
+.oo-ui-checkboxInputWidget [type='checkbox']:disabled + span {
+  background-color: #c8ccd1;
+  border-color: #c8ccd1;
+}
+.oo-ui-checkboxInputWidget [type='checkbox']:disabled:hover + span {
+  background-color: #c8ccd1;
+  border-color: #c8ccd1;
+}
+.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox'] {
+  cursor: pointer;
+}
+.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox'] + span {
+  cursor: pointer;
+  -webkit-transition: background-color 100ms, background-size 100ms, border-color 100ms, box-shadow 100ms;
+  -moz-transition: background-color 100ms, background-size 100ms, border-color 100ms, box-shadow 100ms;
+  transition: background-color 100ms, background-size 100ms, border-color 100ms, box-shadow 100ms;
+}
+.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:hover + span,
+.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:focus:hover + span {
+  border-color: #36c;
+}
+.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:active + span,
+.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:active:focus + span {
+  background-color: #2a4b8d;
+  border-color: #2a4b8d;
+  box-shadow: inset 0 0 0 1px #2a4b8d;
+}
+.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:focus + span {
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c;
+}
+.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked + span {
+  background-color: #36c;
+  border-color: #36c;
+}
+.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:hover + span,
+.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:focus:hover + span {
+  background-color: #447ff5;
+  border-color: #447ff5;
+}
+.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:active + span,
+.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:active:hover + span,
+.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:active:focus + span {
+  background-color: #2a4b8d;
+  border-color: #2a4b8d;
+  box-shadow: inset 0 0 0 1px #2a4b8d;
+}
+.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:focus + span {
+  background-color: #36c;
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;
+}
+.oo-ui-checkboxMultiselectInputWidget .oo-ui-fieldLayout {
+  margin-top: 0;
+}
+.oo-ui-checkboxMultiselectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body {
+  padding: 0.3125em 0;
+}
+.oo-ui-checkboxMultiselectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body .oo-ui-labelElement-label {
+  line-height: 1.5;
+}
+.oo-ui-dropdownInputWidget {
+  position: relative;
+  vertical-align: middle;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  width: 100%;
+  max-width: 50em;
+}
+.oo-ui-dropdownInputWidget .oo-ui-dropdownWidget,
+.oo-ui-dropdownInputWidget select {
+  display: block;
+}
+.oo-ui-dropdownInputWidget select {
+  background-position: -9999em 0;
+  background-repeat: no-repeat;
+  width: 100%;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select {
+  cursor: pointer;
+}
+.oo-ui-dropdownInputWidget-php {
+  border-right: 1px solid #a2a9b1;
+  border-radius: 2px;
+  overflow-x: hidden;
+}
+.oo-ui-dropdownInputWidget select {
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  padding: 0.625em 0.9375em 0.546875em;
+  font-size: inherit;
+  font-family: inherit;
+  vertical-align: middle;
+}
+.oo-ui-dropdownInputWidget select::-ms-expand {
+  display: none;
+}
+.oo-ui-dropdownInputWidget select:not( [no-ie] ) {
+  background-position: right 1.75em center;
+  width: calc( 100% + 1em );
+  height: 2.5em;
+  padding: 0 0 0 0.9375em;
+}
+.oo-ui-dropdownInputWidget option {
+  font-size: inherit;
+  font-family: inherit;
+  height: 1.5em;
+  padding: 0.625em 0.9375em;
+}
+.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select {
+  background-color: #f8f9fa;
+  color: #222;
+  -webkit-transition: background-color 100ms, border-color 100ms, box-shadow 100ms;
+  -moz-transition: background-color 100ms, border-color 100ms, box-shadow 100ms;
+  transition: background-color 100ms, border-color 100ms, box-shadow 100ms;
+}
+.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover {
+  background-color: #fff;
+  color: #444;
+  border-color: #a2a9b1;
+}
+.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:active {
+  color: #000;
+  border-color: #72777d;
+}
+.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus {
+  border-color: #36c;
+  outline: 0;
+  box-shadow: inset 0 0 0 1px #36c;
+}
+.oo-ui-dropdownInputWidget.oo-ui-widget-disabled select {
+  background-color: #eaecf0;
+  color: #72777d;
+  border-color: #c8ccd1;
+}
+.oo-ui-radioInputWidget {
+  position: relative;
+  line-height: 1.5625em;
+  white-space: nowrap;
+}
+.oo-ui-radioInputWidget * {
+  font: inherit;
+  vertical-align: middle;
+}
+.oo-ui-radioInputWidget [type='radio'] {
+  position: relative;
+  max-width: none;
+  width: 1.5625em;
+  height: 1.5625em;
+  margin: 0;
+  opacity: 0;
+  z-index: 1;
+}
+.oo-ui-radioInputWidget [type='radio'] + span {
+  background-color: #fff;
+  position: absolute;
+  left: 0;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  width: 1.5625em;
+  height: 1.5625em;
+  border: 1px solid #72777d;
+  border-radius: 100%;
+}
+.oo-ui-radioInputWidget [type='radio'] + span:before {
+  content: ' ';
+  position: absolute;
+  top: -4px;
+  left: -4px;
+  right: -4px;
+  bottom: -4px;
+  border: 1px solid transparent;
+  border-radius: 100%;
+}
+.oo-ui-radioInputWidget [type='radio']:checked + span {
+  border-width: 0.390625em;
+}
+.oo-ui-radioInputWidget [type='radio']:checked:hover + span,
+.oo-ui-radioInputWidget [type='radio']:checked:focus:hover + span {
+  border-width: 0.390625em;
+}
+.oo-ui-radioInputWidget [type='radio']:disabled + span {
+  background-color: #c8ccd1;
+  border-color: #c8ccd1;
+}
+.oo-ui-radioInputWidget [type='radio']:disabled:checked + span {
+  background-color: #fff;
+}
+.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio'] {
+  cursor: pointer;
+}
+.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio'] + span {
+  cursor: pointer;
+  -webkit-transition: background-color 100ms, border-color 100ms, border-width 100ms;
+  -moz-transition: background-color 100ms, border-color 100ms, border-width 100ms;
+  transition: background-color 100ms, border-color 100ms, border-width 100ms;
+}
+.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:hover + span {
+  border-color: #36c;
+}
+.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:active + span {
+  background-color: #2a4b8d;
+  border-color: #2a4b8d;
+}
+.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked + span {
+  border-color: #36c;
+}
+.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:hover + span {
+  border-color: #447ff5;
+}
+.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:hover:focus + span {
+  border-color: #447ff5;
+  box-shadow: inset 0 0 0 1px #447ff5;
+}
+.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:active + span,
+.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:active:focus + span {
+  border-color: #2a4b8d;
+  box-shadow: inset 0 0 0 1px #2a4b8d;
+}
+.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:active + span:before,
+.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:active:focus + span:before {
+  border-color: #2a4b8d;
+}
+.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:focus + span {
+  box-shadow: inset 0 0 0 1px #36c;
+}
+.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:focus + span:before {
+  border-color: #fff;
+  top: -3px;
+  right: -3px;
+  bottom: -3px;
+  left: -3px;
+}
+.oo-ui-radioSelectInputWidget .oo-ui-fieldLayout {
+  margin-top: 0;
+}
+.oo-ui-radioSelectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body {
+  padding: 0.3125em 0;
+}
+.oo-ui-radioSelectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body .oo-ui-labelElement-label {
+  line-height: 1.5;
+}
+.oo-ui-textInputWidget {
+  position: relative;
+  vertical-align: middle;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  width: 100%;
+  max-width: 50em;
+}
+.oo-ui-textInputWidget input,
+.oo-ui-textInputWidget textarea {
+  display: block;
+  width: 100%;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.oo-ui-textInputWidget textarea {
+  overflow: auto;
+  resize: none;
+}
+.oo-ui-textInputWidget [type='number'] {
+  -moz-appearance: textfield;
+}
+.oo-ui-textInputWidget [type='number']::-webkit-outer-spin-button,
+.oo-ui-textInputWidget [type='number']::-webkit-inner-spin-button {
+  -webkit-appearance: none;
+  margin: 0;
+}
+.oo-ui-textInputWidget [type='search'] {
+  -webkit-appearance: none;
+}
+.oo-ui-textInputWidget [type='search']::-ms-clear {
+  display: none;
+}
+.oo-ui-textInputWidget [type='search']::-webkit-search-decoration,
+.oo-ui-textInputWidget [type='search']::-webkit-search-cancel-button {
+  display: none;
+}
+.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
+.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator,
+.oo-ui-textInputWidget > .oo-ui-labelElement-label {
+  display: none;
+}
+.oo-ui-textInputWidget.oo-ui-iconElement > .oo-ui-iconElement-icon,
+.oo-ui-textInputWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator {
+  display: block;
+  position: absolute;
+  top: 0;
+  height: 100%;
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-iconElement-icon,
+.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator {
+  cursor: text;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-textInputWidget-type-search > .oo-ui-indicatorElement-indicator {
+  cursor: pointer;
+}
+.oo-ui-textInputWidget.oo-ui-widget-disabled input,
+.oo-ui-textInputWidget.oo-ui-widget-disabled textarea,
+.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label {
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+.oo-ui-textInputWidget.oo-ui-labelElement > .oo-ui-labelElement-label {
+  display: block;
+}
+.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
+.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label {
+  left: 0;
+}
+.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator,
+.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label {
+  right: 0;
+}
+.oo-ui-textInputWidget > .oo-ui-labelElement-label {
+  position: absolute;
+  top: 0;
+}
+.oo-ui-textInputWidget-php > .oo-ui-iconElement-icon,
+.oo-ui-textInputWidget-php > .oo-ui-indicatorElement-indicator,
+.oo-ui-textInputWidget-php > .oo-ui-labelElement-label {
+  pointer-events: none;
+}
+.oo-ui-textInputWidget input,
+.oo-ui-textInputWidget textarea {
+  -webkit-appearance: none;
+  margin: 0;
+  font-size: inherit;
+  font-family: inherit;
+  background-color: #fff;
+  color: #000;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  padding: 0.625em 0.625em 0.546875em;
+}
+.oo-ui-textInputWidget input {
+  line-height: 1.172em;
+}
+.oo-ui-textInputWidget textarea {
+  line-height: 1.275;
+}
+.oo-ui-textInputWidget .oo-ui-pendingElement-pending {
+  background-color: transparent;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled input,
+.oo-ui-textInputWidget.oo-ui-widget-enabled textarea {
+  box-shadow: inset 0 0 0 1px transparent;
+  -webkit-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
+  -moz-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
+  transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled input:hover,
+.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:hover {
+  border-color: #72777d;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,
+.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus {
+  outline: 0;
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled input[readonly],
+.oo-ui-textInputWidget.oo-ui-widget-enabled textarea[readonly] {
+  background-color: #f8f9fa;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled input[readonly]:hover,
+.oo-ui-textInputWidget.oo-ui-widget-enabled textarea[readonly]:hover {
+  border-color: #c8ccd1;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled input[readonly]:focus,
+.oo-ui-textInputWidget.oo-ui-widget-enabled textarea[readonly]:focus {
+  border-color: #36c;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled input::-webkit-input-placeholder,
+.oo-ui-textInputWidget.oo-ui-widget-enabled textarea::-webkit-input-placeholder {
+  color: #72777d;
+  opacity: 1;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled input:-ms-input-placeholder,
+.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:-ms-input-placeholder {
+  color: #72777d;
+  opacity: 1;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled input::-moz-placeholder,
+.oo-ui-textInputWidget.oo-ui-widget-enabled textarea::-moz-placeholder {
+  color: #72777d;
+  opacity: 1;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled input:-moz-placeholder,
+.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:-moz-placeholder {
+  color: #72777d;
+  opacity: 1;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled input::placeholder,
+.oo-ui-textInputWidget.oo-ui-widget-enabled textarea::placeholder {
+  color: #72777d;
+  opacity: 1;
+}
+@media screen and (min-width: 0) {
+  .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus {
+    outline: 1px solid #36c;
+    outline-offset: -2px;
+  }
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input,
+.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea {
+  border-color: #d33;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input:hover,
+.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea:hover {
+  border-color: #d33;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input:focus,
+.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea:focus {
+  border-color: #d33;
+  box-shadow: inset 0 0 0 1px #d33;
+}
+.oo-ui-textInputWidget.oo-ui-widget-disabled input,
+.oo-ui-textInputWidget.oo-ui-widget-disabled textarea {
+  background-color: #eaecf0;
+  -webkit-text-fill-color: #72777d;
+  color: #72777d;
+  text-shadow: 0 1px 1px #fff;
+  border-color: #c8ccd1;
+}
+.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon,
+.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
+  opacity: 0.51;
+}
+.oo-ui-textInputWidget.oo-ui-widget-disabled > .oo-ui-labelElement-label {
+  color: #72777d;
+  text-shadow: 0 1px 1px #fff;
+}
+.oo-ui-textInputWidget.oo-ui-iconElement input,
+.oo-ui-textInputWidget.oo-ui-iconElement textarea {
+  padding-left: 2.5em;
+}
+.oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
+  left: 0.46875em;
+}
+.oo-ui-textInputWidget.oo-ui-iconElement textarea + .oo-ui-iconElement-icon {
+  max-height: 2.5em;
+}
+.oo-ui-textInputWidget > .oo-ui-labelElement-label {
+  color: #72777d;
+  margin-top: 1px;
+  padding: 0.625em 0.9375em 0.546875em 0.625em;
+  line-height: 1.172em;
+}
+.oo-ui-textInputWidget.oo-ui-indicatorElement input,
+.oo-ui-textInputWidget.oo-ui-indicatorElement textarea {
+  padding-right: 2.1875em;
+}
+.oo-ui-textInputWidget.oo-ui-indicatorElement.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label {
+  padding-right: 0;
+}
+.oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
+  max-height: 2.5em;
+  margin-right: 0.9375em;
+}
+.oo-ui-textInputWidget-labelPosition-after.oo-ui-indicatorElement > .oo-ui-labelElement-label {
+  margin-right: 2.5em;
+}
+.oo-ui-textInputWidget-labelPosition-before.oo-ui-iconElement > .oo-ui-labelElement-label {
+  padding-left: 2.5em;
+}
+.oo-ui-menuSelectWidget {
+  position: absolute;
+  width: 100%;
+  z-index: 4;
+  background-color: #fff;
+  margin-top: -1px;
+  border: 1px solid #a2a9b1;
+  border-radius: 0 0 2px 2px;
+  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25);
+}
+.oo-ui-menuSelectWidget.oo-ui-clippableElement-clippable {
+  min-height: 2.6em;
+}
+.oo-ui-menuSelectWidget-invisible {
+  display: none;
+}
+.oo-ui-menuOptionWidget {
+  -webkit-transition: background-color 100ms, color 100ms;
+  -moz-transition: background-color 100ms, color 100ms;
+  transition: background-color 100ms, color 100ms;
+}
+.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted {
+  background-color: #eaecf0;
+  color: #000;
+}
+.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected {
+  background-color: #eaf3ff;
+  color: #36c;
+}
+.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,
+.oo-ui-menuOptionWidget.oo-ui-optionWidget-pressed.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted {
+  background-color: rgba(41, 98, 204, 0.1);
+  color: #36c;
+}
+.oo-ui-menuSectionOptionWidget {
+  color: #72777d;
+  padding: 0.703125em 0.9375em 0.3125em;
+  font-weight: bold;
+}
+.oo-ui-menuSectionOptionWidget.oo-ui-widget-enabled {
+  cursor: default;
+}
+.oo-ui-dropdownWidget {
+  display: inline-block;
+  position: relative;
+  width: 100%;
+  max-width: 50em;
+  margin-right: 0.5em;
+}
+.oo-ui-dropdownWidget-handle {
+  position: relative;
+  width: 100%;
+  display: block;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  cursor: default;
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon,
+.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
+  position: absolute;
+  top: 0;
+  height: 100%;
+}
+.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle {
+  cursor: pointer;
+}
+.oo-ui-dropdownWidget:last-child {
+  margin-right: 0;
+}
+.oo-ui-dropdownWidget-handle {
+  min-height: 2.5em;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  padding: 0.625em 0.9375em 0.546875em;
+  line-height: 1;
+}
+.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon {
+  left: 0.46875em;
+}
+.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
+  right: 0.9375em;
+}
+.oo-ui-dropdownWidget-handle .oo-ui-labelElement-label {
+  line-height: 1.172em;
+}
+.oo-ui-dropdownWidget.oo-ui-iconElement .oo-ui-dropdownWidget-handle {
+  padding-left: 2.5em;
+}
+.oo-ui-dropdownWidget.oo-ui-indicatorElement .oo-ui-dropdownWidget-handle {
+  padding-right: 1.875em;
+}
+.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle {
+  background-color: #f8f9fa;
+  color: #222;
+  -webkit-transition: background-color 100ms, border-color 100ms, box-shadow 100ms;
+  -moz-transition: background-color 100ms, border-color 100ms, box-shadow 100ms;
+  transition: background-color 100ms, border-color 100ms, box-shadow 100ms;
+}
+.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:hover {
+  background-color: #fff;
+  color: #444;
+  border-color: #a2a9b1;
+}
+.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:hover .oo-ui-iconElement-icon,
+.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:hover .oo-ui-indicatorElement-indicator {
+  opacity: 0.73;
+}
+.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:active {
+  color: #000;
+  border-color: #72777d;
+}
+.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:focus {
+  border-color: #36c;
+  outline: 0;
+  box-shadow: inset 0 0 0 1px #36c;
+}
+.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon,
+.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
+  opacity: 0.87;
+  -webkit-transition: opacity 100ms;
+  -moz-transition: opacity 100ms;
+  transition: opacity 100ms;
+}
+.oo-ui-dropdownWidget.oo-ui-widget-enabled.oo-ui-dropdownWidget-open .oo-ui-dropdownWidget-handle {
+  background-color: #fff;
+}
+.oo-ui-dropdownWidget.oo-ui-widget-enabled.oo-ui-dropdownWidget-open .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon,
+.oo-ui-dropdownWidget.oo-ui-widget-enabled.oo-ui-dropdownWidget-open .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
+  opacity: 1;
+}
+.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle {
+  color: #72777d;
+  text-shadow: 0 1px 1px #fff;
+  border-color: #c8ccd1;
+  background-color: #eaecf0;
+}
+.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle:focus {
+  outline: 0;
+}
+.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
+  opacity: 0.15;
+}
+.oo-ui-comboBoxInputWidget {
+  display: inline-block;
+  position: relative;
+}
+.oo-ui-comboBoxInputWidget-field {
+  display: table;
+  width: 100%;
+  table-layout: fixed;
+}
+.oo-ui-comboBoxInputWidget .oo-ui-inputWidget-input {
+  display: table-cell;
+  vertical-align: middle;
+  position: relative;
+  overflow: hidden;
+}
+.oo-ui-comboBoxInputWidget-dropdownButton {
+  display: table-cell;
+}
+.oo-ui-comboBoxInputWidget-dropdownButton > .oo-ui-buttonElement-button {
+  display: block;
+  overflow: hidden;
+}
+.oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty .oo-ui-comboBoxInputWidget-dropdownButton {
+  display: none;
+}
+.oo-ui-comboBoxInputWidget-php ::-webkit-calendar-picker-indicator {
+  opacity: 0;
+  position: absolute;
+  right: 0;
+  top: 0;
+  width: 2.5em;
+  height: 2.5em;
+  padding: 0;
+}
+.oo-ui-comboBoxInputWidget-php > .oo-ui-indicatorWidget {
+  display: block;
+  position: absolute;
+  top: 0;
+  height: 100%;
+  pointer-events: none;
+}
+.oo-ui-comboBoxInputWidget input {
+  height: 2.5em;
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+  border-right-width: 0;
+}
+.oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty input,
+.oo-ui-comboBoxInputWidget-php input {
+  border-top-right-radius: 2px;
+  border-bottom-right-radius: 2px;
+  border-right-width: 1px;
+}
+.oo-ui-comboBoxInputWidget-dropdownButton.oo-ui-indicatorElement {
+  width: 2.5em;
+}
+.oo-ui-comboBoxInputWidget-dropdownButton.oo-ui-indicatorElement .oo-ui-buttonElement-button {
+  min-width: 2.5em;
+  min-height: 2.5em;
+  padding-left: 0;
+}
+.oo-ui-comboBoxInputWidget-dropdownButton.oo-ui-indicatorElement .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
+  right: 0.703125em;
+}
+.oo-ui-comboBoxInputWidget-dropdownButton.oo-ui-indicatorElement .oo-ui-buttonElement-button,
+.oo-ui-comboBoxInputWidget-dropdownButton.oo-ui-indicatorElement .oo-ui-buttonElement-button:focus {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.oo-ui-comboBoxInputWidget-php .oo-ui-indicatorWidget {
+  right: 0.9375em;
+  margin: 0;
+}
+.oo-ui-comboBoxInputWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
+  opacity: 1;
+}
+.oo-ui-multioptionWidget {
+  position: relative;
+  display: block;
+}
+.oo-ui-multioptionWidget.oo-ui-widget-enabled {
+  cursor: pointer;
+}
+.oo-ui-multioptionWidget.oo-ui-widget-disabled {
+  cursor: default;
+}
+.oo-ui-multioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
+  display: block;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  overflow: hidden;
+}
+.oo-ui-multioptionWidget.oo-ui-widget-disabled {
+  color: #72777d;
+}
+.oo-ui-checkboxMultioptionWidget {
+  padding: 0.3125em 0;
+}
+.oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget,
+.oo-ui-checkboxMultioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
+  display: inline-block;
+  vertical-align: middle;
+}
+.oo-ui-checkboxMultioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
+  padding-left: 0.46875em;
+}
+.oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget {
+  margin-right: 0;
+}
+.oo-ui-progressBarWidget {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  max-width: 50em;
+  background-color: #fff;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  overflow: hidden;
+}
+.oo-ui-progressBarWidget-bar {
+  height: 1em;
+  -webkit-transition: width 200ms;
+  -moz-transition: width 200ms;
+  transition: width 200ms;
+}
+.oo-ui-progressBarWidget-indeterminate .oo-ui-progressBarWidget-bar {
+  -webkit-animation: oo-ui-progressBarWidget-slide 2s infinite linear;
+  -moz-animation: oo-ui-progressBarWidget-slide 2s infinite linear;
+  animation: oo-ui-progressBarWidget-slide 2s infinite linear;
+  width: 40%;
+  -webkit-transform: translate(-25%);
+  -moz-transform: translate(-25%);
+  -ms-transform: translate(-25%);
+  transform: translate(-25%);
+  border-left-width: 1px;
+}
+.oo-ui-progressBarWidget.oo-ui-widget-enabled .oo-ui-progressBarWidget-bar {
+  background-color: #36c;
+}
+.oo-ui-progressBarWidget.oo-ui-widget-disabled .oo-ui-progressBarWidget-bar {
+  background-color: #c8ccd1;
+}
+@-webkit-keyframes oo-ui-progressBarWidget-slide {
+  from {
+    -webkit-transform: translate(-100%);
+    -moz-transform: translate(-100%);
+    -ms-transform: translate(-100%);
+    transform: translate(-100%);
+  }
+  to {
+    -webkit-transform: translate(350%);
+    -moz-transform: translate(350%);
+    -ms-transform: translate(350%);
+    transform: translate(350%);
+  }
+}
+@-moz-keyframes oo-ui-progressBarWidget-slide {
+  from {
+    -webkit-transform: translate(-100%);
+    -moz-transform: translate(-100%);
+    -ms-transform: translate(-100%);
+    transform: translate(-100%);
+  }
+  to {
+    -webkit-transform: translate(350%);
+    -moz-transform: translate(350%);
+    -ms-transform: translate(350%);
+    transform: translate(350%);
+  }
+}
+@keyframes oo-ui-progressBarWidget-slide {
+  from {
+    -webkit-transform: translate(-100%);
+    -moz-transform: translate(-100%);
+    -ms-transform: translate(-100%);
+    transform: translate(-100%);
+  }
+  to {
+    -webkit-transform: translate(350%);
+    -moz-transform: translate(350%);
+    -ms-transform: translate(350%);
+    transform: translate(350%);
+  }
+}
index e566d96..199ab62 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.0
+ * OOjs UI v0.22.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-11T22:51:05Z
+ * Date: 2017-05-31T19:07:36Z
  */
 ( function ( OO ) {
 
@@ -579,11 +579,13 @@ OO.ui.mixin = {};
  *  Data can also be specified with the #setData method.
  */
 OO.ui.Element = function OoUiElement( config ) {
+       this.initialConfig = config;
        // Configuration initialization
        config = config || {};
 
        // Properties
        this.$ = $;
+       this.elementId = null;
        this.visible = true;
        this.data = config.data;
        this.$element = config.$element ||
@@ -595,7 +597,7 @@ OO.ui.Element = function OoUiElement( config ) {
                this.$element.addClass( config.classes.join( ' ' ) );
        }
        if ( config.id ) {
-               this.$element.attr( 'id', config.id );
+               this.setElementId( config.id );
        }
        if ( config.text ) {
                this.$element.text( config.text );
@@ -719,7 +721,7 @@ OO.ui.Element.static.unsafeInfuse = function ( idOrNode, domPromise ) {
                throw new Error( 'No infusion data found: ' + id );
        }
        try {
-               data = $.parseJSON( data );
+               data = JSON.parse( data );
        } catch ( _ ) {
                data = null;
        }
@@ -1375,6 +1377,31 @@ OO.ui.Element.prototype.setData = function ( data ) {
        return this;
 };
 
+/**
+ * Set the element has an 'id' attribute.
+ *
+ * @param {string} id
+ * @chainable
+ */
+OO.ui.Element.prototype.setElementId = function ( id ) {
+       this.elementId = id;
+       this.$element.attr( 'id', id );
+       return this;
+};
+
+/**
+ * Ensure that the element has an 'id' attribute, setting it to an unique value if it's missing,
+ * and return its value.
+ *
+ * @return {string}
+ */
+OO.ui.Element.prototype.getElementId = function () {
+       if ( this.elementId === null ) {
+               this.setElementId( OO.ui.generateElementId() );
+       }
+       return this.elementId;
+};
+
 /**
  * Check if element supports one or more methods.
  *
@@ -1606,19 +1633,6 @@ OO.ui.Widget = function OoUiWidget( config ) {
 OO.inheritClass( OO.ui.Widget, OO.ui.Element );
 OO.mixinClass( OO.ui.Widget, OO.EventEmitter );
 
-/* Static Properties */
-
-/**
- * Whether this widget will behave reasonably when wrapped in an HTML `<label>`. If this is true,
- * wrappers such as OO.ui.FieldLayout may use a `<label>` instead of implementing own label click
- * handling.
- *
- * @static
- * @inheritable
- * @property {boolean}
- */
-OO.ui.Widget.static.supportsSimpleLabel = false;
-
 /* Events */
 
 /**
@@ -1684,6 +1698,33 @@ OO.ui.Widget.prototype.updateDisabled = function () {
        return this;
 };
 
+/**
+ * Get an ID of a labelable node which is part of this widget, if any, to be used for `<label for>`
+ * value.
+ *
+ * If this function returns null, the widget should have a meaningful #simulateLabelClick method
+ * instead.
+ *
+ * @return {string|null} The ID of the labelable element
+ */
+OO.ui.Widget.prototype.getInputId = function () {
+       return null;
+};
+
+/**
+ * Simulate the behavior of clicking on a label (a HTML `<label>` element) bound to this input.
+ * HTML only allows `<label>` to act on specific "labelable" elements; complex widgets might need to
+ * override this method to provide intuitive, accessible behavior.
+ *
+ * By default, this does nothing. OO.ui.mixin.TabIndexedElement overrides it for focusable widgets.
+ * Individual widgets may override it too.
+ *
+ * This method is called by OO.ui.LabelWidget and OO.ui.FieldLayout. It should not be called
+ * directly.
+ */
+OO.ui.Widget.prototype.simulateLabelClick = function () {
+};
+
 /**
  * Theme logic.
  *
@@ -1921,6 +1962,85 @@ OO.ui.mixin.TabIndexedElement.prototype.getTabIndex = function () {
        return this.tabIndex;
 };
 
+/**
+ * Get an ID of a focusable element of this widget, if any, to be used for `<label for>` value.
+ *
+ * If the element already has an ID then that is returned, otherwise unique ID is
+ * generated, set on the element, and returned.
+ *
+ * @return {string|null} The ID of the focusable element
+ */
+OO.ui.mixin.TabIndexedElement.prototype.getInputId = function () {
+       var id;
+
+       if ( !this.$tabIndexed ) {
+               return null;
+       }
+       if ( !this.isLabelableNode( this.$tabIndexed ) ) {
+               return null;
+       }
+
+       id = this.$tabIndexed.attr( 'id' );
+       if ( id === undefined ) {
+               id = OO.ui.generateElementId();
+               this.$tabIndexed.attr( 'id', id );
+       }
+
+       return id;
+};
+
+/**
+ * Whether the node is 'labelable' according to the HTML spec
+ * (i.e., whether it can be interacted with through a `<label for="…">`).
+ * See: <https://html.spec.whatwg.org/multipage/forms.html#category-label>.
+ *
+ * @private
+ * @param {jQuery} $node
+ * @return {boolean}
+ */
+OO.ui.mixin.TabIndexedElement.prototype.isLabelableNode = function ( $node ) {
+       var
+               labelableTags = [ 'button', 'meter', 'output', 'progress', 'select', 'textarea' ],
+               tagName = $node.prop( 'tagName' ).toLowerCase();
+
+       if ( tagName === 'input' && $node.attr( 'type' ) !== 'hidden' ) {
+               return true;
+       }
+       if ( labelableTags.indexOf( tagName ) !== -1 ) {
+               return true;
+       }
+       return false;
+};
+
+/**
+ * Focus this element.
+ *
+ * @chainable
+ */
+OO.ui.mixin.TabIndexedElement.prototype.focus = function () {
+       if ( !this.isDisabled() ) {
+               this.$tabIndexed.focus();
+       }
+       return this;
+};
+
+/**
+ * Blur this element.
+ *
+ * @chainable
+ */
+OO.ui.mixin.TabIndexedElement.prototype.blur = function () {
+       this.$tabIndexed.blur();
+       return this;
+};
+
+/**
+ * @inheritdoc OO.ui.Widget
+ */
+OO.ui.mixin.TabIndexedElement.prototype.simulateLabelClick = function () {
+       this.focus();
+};
+
 /**
  * ButtonElement is often mixed into other classes to generate a button, which is a clickable
  * interface element that can be configured with access keys for accessibility.
@@ -3652,6 +3772,29 @@ OO.mixinClass( OO.ui.ButtonGroupWidget, OO.ui.mixin.GroupElement );
  */
 OO.ui.ButtonGroupWidget.static.tagName = 'span';
 
+/* Methods */
+
+/**
+ * Focus the widget
+ *
+ * @chainable
+ */
+OO.ui.ButtonGroupWidget.prototype.focus = function () {
+       if ( !this.isDisabled() ) {
+               if ( this.items[ 0 ] ) {
+                       this.items[ 0 ].focus();
+               }
+       }
+       return this;
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.ButtonGroupWidget.prototype.simulateLabelClick = function () {
+       this.focus();
+};
+
 /**
  * IconWidget is a generic widget for {@link OO.ui.mixin.IconElement icons}. In general, IconWidgets should be used with OO.ui.LabelWidget,
  * which creates a label that identifies the icon’s function. See the [OOjs UI documentation on MediaWiki] [1]
@@ -3822,12 +3965,12 @@ OO.ui.LabelWidget = function OoUiLabelWidget( config ) {
        this.input = config.input;
 
        // Initialization
-       if ( this.input instanceof OO.ui.InputWidget ) {
+       if ( this.input ) {
                if ( this.input.getInputId() ) {
                        this.$element.attr( 'for', this.input.getInputId() );
                } else {
                        this.$label.on( 'click', function () {
-                               this.fieldWidget.focus();
+                               this.input.simulateLabelClick();
                                return false;
                        }.bind( this ) );
                }
@@ -4932,8 +5075,10 @@ OO.ui.PopupWidget.prototype.toggleAnchor = function ( show ) {
        if ( this.anchored !== show ) {
                if ( show ) {
                        this.$element.addClass( 'oo-ui-popupWidget-anchored' );
+                       this.$element.addClass( 'oo-ui-popupWidget-anchored-' + this.anchorEdge );
                } else {
                        this.$element.removeClass( 'oo-ui-popupWidget-anchored' );
+                       this.$element.removeClass( 'oo-ui-popupWidget-anchored-' + this.anchorEdge );
                }
                this.anchored = show;
        }
@@ -4951,7 +5096,9 @@ OO.ui.PopupWidget.prototype.setAnchorEdge = function ( edge ) {
                this.$element.removeClass( 'oo-ui-popupWidget-anchored-' + this.anchorEdge );
        }
        this.anchorEdge = edge;
-       this.$element.addClass( 'oo-ui-popupWidget-anchored-' + edge );
+       if ( this.anchored ) {
+               this.$element.addClass( 'oo-ui-popupWidget-anchored-' + edge );
+       }
 };
 
 /**
@@ -5094,7 +5241,7 @@ OO.ui.PopupWidget.prototype.computePosition = function () {
                hPosMap = {
                        forwards: 'start',
                        center: 'center',
-                       backwards: 'before'
+                       backwards: this.anchored ? 'before' : 'end'
                },
                vPosMap = {
                        forwards: 'top',
@@ -5151,22 +5298,26 @@ OO.ui.PopupWidget.prototype.computePosition = function () {
                popupPos[ near ] = popupPos[ far ] - popupSize;
        }
 
-       // Position the anchor (which is positioned relative to the popup) to point to $floatableContainer
-       anchorPos = ( floatablePos[ start ] + floatablePos[ end ] ) / 2;
-       anchorOffset = ( start === far ? -1 : 1 ) * ( anchorPos - popupPos[ start ] );
-
-       // If the anchor is less than 2*anchorSize from either edge, move the popup to make more space
-       // this.$anchor.width()/height() returns 0 because of the CSS trickery we use, so use scrollWidth/Height
-       anchorSize = this.$anchor[ 0 ][ 'scroll' + sizeProp ];
-       anchorMargin = parseFloat( this.$anchor.css( 'margin-' + start ) );
-       if ( anchorOffset + anchorMargin < 2 * anchorSize ) {
-               // Not enough space for the anchor on the start side; pull the popup startwards
-               positionAdjustment = ( positionProp === start ? -1 : 1 ) *
-                       ( 2 * anchorSize - ( anchorOffset + anchorMargin ) );
-       } else if ( anchorOffset + anchorMargin > popupSize - 2 * anchorSize ) {
-               // Not enough space for the anchor on the end side; pull the popup endwards
-               positionAdjustment = ( positionProp === end ? -1 : 1 ) *
-                       ( anchorOffset + anchorMargin - ( popupSize - 2 * anchorSize ) );
+       if ( this.anchored ) {
+               // Position the anchor (which is positioned relative to the popup) to point to $floatableContainer
+               anchorPos = ( floatablePos[ start ] + floatablePos[ end ] ) / 2;
+               anchorOffset = ( start === far ? -1 : 1 ) * ( anchorPos - popupPos[ start ] );
+
+               // If the anchor is less than 2*anchorSize from either edge, move the popup to make more space
+               // this.$anchor.width()/height() returns 0 because of the CSS trickery we use, so use scrollWidth/Height
+               anchorSize = this.$anchor[ 0 ][ 'scroll' + sizeProp ];
+               anchorMargin = parseFloat( this.$anchor.css( 'margin-' + start ) );
+               if ( anchorOffset + anchorMargin < 2 * anchorSize ) {
+                       // Not enough space for the anchor on the start side; pull the popup startwards
+                       positionAdjustment = ( positionProp === start ? -1 : 1 ) *
+                               ( 2 * anchorSize - ( anchorOffset + anchorMargin ) );
+               } else if ( anchorOffset + anchorMargin > popupSize - 2 * anchorSize ) {
+                       // Not enough space for the anchor on the end side; pull the popup endwards
+                       positionAdjustment = ( positionProp === end ? -1 : 1 ) *
+                               ( anchorOffset + anchorMargin - ( popupSize - 2 * anchorSize ) );
+               } else {
+                       positionAdjustment = 0;
+               }
        } else {
                positionAdjustment = 0;
        }
@@ -5187,12 +5338,15 @@ OO.ui.PopupWidget.prototype.computePosition = function () {
                        ( popupPos[ far ] - ( containerPos[ far ] - this.containerPadding ) );
        }
 
-       // Adjust anchorOffset for positionAdjustment
-       anchorOffset += ( positionProp === start ? -1 : 1 ) * positionAdjustment;
+       if ( this.anchored ) {
+               // Adjust anchorOffset for positionAdjustment
+               anchorOffset += ( positionProp === start ? -1 : 1 ) * positionAdjustment;
+
+               // Position the anchor
+               anchorCss[ start ] = anchorOffset;
+               this.$anchor.css( anchorCss );
+       }
 
-       // Position the anchor
-       anchorCss[ start ] = anchorOffset;
-       this.$anchor.css( anchorCss );
        // Move the popup if needed
        parentPosition[ positionProp ] += positionAdjustment;
 
@@ -5316,8 +5470,12 @@ OO.ui.mixin.PopupElement.prototype.getPopup = function () {
  * @cfg {jQuery} [$overlay] Render the popup into a separate layer. This configuration is useful in cases where
  *  the expanded popup is larger than its containing `<div>`. The specified overlay layer is usually on top of the
  *  containing `<div>` and has a larger area. By default, the popup uses relative positioning.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  */
 OO.ui.PopupButtonWidget = function OoUiPopupButtonWidget( config ) {
+       // Configuration initialization
+       config = config || {};
+
        // Parent constructor
        OO.ui.PopupButtonWidget.parent.call( this, config );
 
@@ -5760,6 +5918,7 @@ OO.ui.SelectWidget = function OoUiSelectWidget( config ) {
        this.$element
                .addClass( 'oo-ui-selectWidget oo-ui-selectWidget-depressed' )
                .attr( 'role', 'listbox' );
+       this.setFocusOwner( this.$element );
        if ( Array.isArray( config.items ) ) {
                this.addItems( config.items );
        }
@@ -5852,7 +6011,7 @@ OO.ui.SelectWidget.prototype.onFocus = function ( event ) {
        }
 
        if ( event.target !== this.$element[ 0 ] ) {
-               this.$element.focus();
+               this.$focusOwner.focus();
        }
 };
 
@@ -6266,6 +6425,11 @@ OO.ui.SelectWidget.prototype.highlightItem = function ( item ) {
                }
        }
        if ( changed ) {
+               if ( item ) {
+                       this.$focusOwner.attr( 'aria-activedescendant', item.getElementId() );
+               } else {
+                       this.$focusOwner.removeAttr( 'aria-activedescendant' );
+               }
                this.emit( 'highlight', item );
        }
 
@@ -6364,6 +6528,13 @@ OO.ui.SelectWidget.prototype.selectItem = function ( item ) {
                }
        }
        if ( changed ) {
+               if ( item && !item.constructor.static.highlightable ) {
+                       if ( item ) {
+                               this.$focusOwner.attr( 'aria-activedescendant', item.getElementId() );
+                       } else {
+                               this.$focusOwner.removeAttr( 'aria-activedescendant' );
+                       }
+               }
                this.emit( 'select', item );
        }
 
@@ -6540,6 +6711,18 @@ OO.ui.SelectWidget.prototype.clearItems = function () {
        return this;
 };
 
+/**
+ * Set the DOM element which has focus while the user is interacting with this SelectWidget.
+ *
+ * Currently this is just used to set `aria-activedescendant` on it.
+ *
+ * @protected
+ * @param {jQuery} $focusOwner
+ */
+OO.ui.SelectWidget.prototype.setFocusOwner = function ( $focusOwner ) {
+       this.$focusOwner = $focusOwner;
+};
+
 /**
  * DecoratedOptionWidgets are {@link OO.ui.OptionWidget options} that can be configured
  * with an {@link OO.ui.mixin.IconElement icon} and/or {@link OO.ui.mixin.IndicatorElement indicator}.
@@ -6610,16 +6793,11 @@ OO.mixinClass( OO.ui.DecoratedOptionWidget, OO.ui.mixin.IndicatorElement );
  * @param {Object} [config] Configuration options
  */
 OO.ui.MenuOptionWidget = function OoUiMenuOptionWidget( config ) {
-       // Configuration initialization
-       config = $.extend( { icon: 'check' }, config );
-
        // Parent constructor
        OO.ui.MenuOptionWidget.parent.call( this, config );
 
        // Initialization
-       this.$element
-               .attr( 'role', 'menuitem' )
-               .addClass( 'oo-ui-menuOptionWidget' );
+       this.$element.addClass( 'oo-ui-menuOptionWidget' );
 };
 
 /* Setup */
@@ -6677,7 +6855,7 @@ OO.ui.MenuSectionOptionWidget = function OoUiMenuSectionOptionWidget( config ) {
 
        // Initialization
        this.$element.addClass( 'oo-ui-menuSectionOptionWidget' )
-               .attr( 'role', '' );
+               .removeAttr( 'role aria-selected' );
 };
 
 /* Setup */
@@ -6724,6 +6902,7 @@ OO.ui.MenuSectionOptionWidget.static.highlightable = false;
  * @class
  * @extends OO.ui.SelectWidget
  * @mixins OO.ui.mixin.ClippableElement
+ * @mixins OO.ui.mixin.FloatableElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
@@ -6741,6 +6920,7 @@ OO.ui.MenuSectionOptionWidget.static.highlightable = false;
  * @cfg {boolean} [hideOnChoose=true] Hide the menu when the user chooses an option.
  * @cfg {boolean} [filterFromInput=false] Filter the displayed options from the input
  * @cfg {boolean} [highlightOnFilter] Highlight the first result when filtering
+ * @cfg {number} [width] Width of the menu
  */
 OO.ui.MenuSelectWidget = function OoUiMenuSelectWidget( config ) {
        // Configuration initialization
@@ -6751,6 +6931,7 @@ OO.ui.MenuSelectWidget = function OoUiMenuSelectWidget( config ) {
 
        // Mixin constructors
        OO.ui.mixin.ClippableElement.call( this, $.extend( {}, config, { $clippable: this.$group } ) );
+       OO.ui.mixin.FloatableElement.call( this, config );
 
        // Properties
        this.autoHide = config.autoHide === undefined || !!config.autoHide;
@@ -6762,11 +6943,13 @@ OO.ui.MenuSelectWidget = function OoUiMenuSelectWidget( config ) {
        this.onDocumentMouseDownHandler = this.onDocumentMouseDown.bind( this );
        this.onInputEditHandler = OO.ui.debounce( this.updateItemVisibility.bind( this ), 100 );
        this.highlightOnFilter = !!config.highlightOnFilter;
+       this.width = config.width;
 
        // Initialization
-       this.$element
-               .addClass( 'oo-ui-menuSelectWidget' )
-               .attr( 'role', 'menu' );
+       this.$element.addClass( 'oo-ui-menuSelectWidget' );
+       if ( config.widget ) {
+               this.setFocusOwner( config.widget.$tabIndexed );
+       }
 
        // Initially hidden - using #toggle may cause errors if subclasses override toggle with methods
        // that reference properties not initialized at that time of parent class construction
@@ -6779,6 +6962,15 @@ OO.ui.MenuSelectWidget = function OoUiMenuSelectWidget( config ) {
 
 OO.inheritClass( OO.ui.MenuSelectWidget, OO.ui.SelectWidget );
 OO.mixinClass( OO.ui.MenuSelectWidget, OO.ui.mixin.ClippableElement );
+OO.mixinClass( OO.ui.MenuSelectWidget, OO.ui.mixin.FloatableElement );
+
+/* Events */
+
+/**
+ * @event ready
+ *
+ * The menu is ready: it is visible and has been positioned and clipped.
+ */
 
 /* Methods */
 
@@ -6846,7 +7038,9 @@ OO.ui.MenuSelectWidget.prototype.updateItemVisibility = function () {
                anyVisible = false,
                len = this.items.length,
                showAll = !this.isVisible(),
-               filter = showAll ? null : this.getItemMatcher( this.$input.val() );
+               filter = showAll ? null : this.getItemMatcher( this.$input.val() ),
+               exactFilter = this.getItemMatcher( this.$input.val(), true ),
+               exactMatch = false;
 
        // Hide non-matching options, and also hide section headers if all options
        // in their section are hidden.
@@ -6861,6 +7055,7 @@ OO.ui.MenuSelectWidget.prototype.updateItemVisibility = function () {
                        sectionEmpty = true;
                } else if ( item instanceof OO.ui.OptionWidget ) {
                        visible = showAll || filter( item );
+                       exactMatch = exactMatch || exactFilter( item );
                        anyVisible = anyVisible || visible;
                        sectionEmpty = sectionEmpty && !visible;
                        item.toggle( visible );
@@ -6876,6 +7071,10 @@ OO.ui.MenuSelectWidget.prototype.updateItemVisibility = function () {
                section.toggle( showAll || !sectionEmpty );
        }
 
+       if ( anyVisible && this.items.length && !exactMatch ) {
+               this.scrollItemIntoView( this.items[ 0 ] );
+       }
+
        this.$element.toggleClass( 'oo-ui-menuSelectWidget-invisible', !anyVisible );
 
        // Reevaluate clipping
@@ -6911,6 +7110,7 @@ OO.ui.MenuSelectWidget.prototype.bindKeyPressListener = function () {
        if ( this.$input ) {
                if ( this.filterFromInput ) {
                        this.$input.on( 'keydown mouseup cut paste change input select', this.onInputEditHandler );
+                       this.updateItemVisibility();
                }
        } else {
                OO.ui.MenuSelectWidget.parent.prototype.bindKeyPressListener.call( this );
@@ -6998,6 +7198,7 @@ OO.ui.MenuSelectWidget.prototype.clearItems = function () {
  * Side-effects may include broken interface and exceptions being thrown. This wasn't always
  * strictly enforced, so currently it only generates a warning in the browser console.
  *
+ * @fires ready
  * @inheritdoc
  */
 OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) {
@@ -7011,6 +7212,10 @@ OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) {
                this.warnedUnattached = true;
        }
 
+       if ( change && visible && ( this.width || this.$floatableContainer ) ) {
+               this.setIdealSize( this.width || this.$floatableContainer.width() );
+       }
+
        // Parent method
        OO.ui.MenuSelectWidget.parent.prototype.toggle.call( this, visible );
 
@@ -7019,9 +7224,11 @@ OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) {
                        this.bindKeyDownListener();
                        this.bindKeyPressListener();
 
+                       this.togglePositioning( !!this.$floatableContainer );
                        this.toggleClipping( true );
 
                        if ( this.getSelectedItem() ) {
+                               this.$focusOwner.attr( 'aria-activedescendant', this.getSelectedItem().getElementId() );
                                this.getSelectedItem().scrollElementIntoView( { duration: 0 } );
                        }
 
@@ -7029,10 +7236,14 @@ OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) {
                        if ( this.autoHide ) {
                                this.getElementDocument().addEventListener( 'mousedown', this.onDocumentMouseDownHandler, true );
                        }
+
+                       this.emit( 'ready' );
                } else {
+                       this.$focusOwner.removeAttr( 'aria-activedescendant' );
                        this.unbindKeyDownListener();
                        this.unbindKeyPressListener();
                        this.getElementDocument().removeEventListener( 'mousedown', this.onDocumentMouseDownHandler, true );
+                       this.togglePositioning( false );
                        this.toggleClipping( false );
                }
        }
@@ -7090,10 +7301,11 @@ OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) {
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {Object} [menu] Configuration options to pass to {@link OO.ui.FloatingMenuSelectWidget menu select widget}
+ * @cfg {Object} [menu] Configuration options to pass to {@link OO.ui.MenuSelectWidget menu select widget}
  * @cfg {jQuery} [$overlay] Render the menu into a separate layer. This configuration is useful in cases where
  *  the expanded menu is larger than its containing `<div>`. The specified overlay layer is usually on top of the
  *  containing `<div>` and has a larger area. By default, the menu uses relative positioning.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  */
 OO.ui.DropdownWidget = function OoUiDropdownWidget( config ) {
        // Configuration initialization
@@ -7114,9 +7326,9 @@ OO.ui.DropdownWidget = function OoUiDropdownWidget( config ) {
        OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$handle } ) );
 
        // Properties
-       this.menu = new OO.ui.FloatingMenuSelectWidget( $.extend( {
+       this.menu = new OO.ui.MenuSelectWidget( $.extend( {
                widget: this,
-               $container: this.$element
+               $floatableContainer: this.$element
        }, config.menu ) );
 
        // Events
@@ -7135,6 +7347,11 @@ OO.ui.DropdownWidget = function OoUiDropdownWidget( config ) {
        // Initialization
        this.$handle
                .addClass( 'oo-ui-dropdownWidget-handle' )
+               .attr( {
+                       role: 'combobox',
+                       'aria-owns': this.menu.getElementId(),
+                       'aria-autocomplete': 'list'
+               } )
                .append( this.$icon, this.$label, this.$indicator );
        this.$element
                .addClass( 'oo-ui-dropdownWidget' )
@@ -7830,28 +8047,47 @@ OO.ui.CheckboxMultiselectWidget.prototype.onClick = function ( e ) {
 };
 
 /**
- * FloatingMenuSelectWidget is a menu that will stick under a specified
- * container, even when it is inserted elsewhere in the document (for example,
- * in a OO.ui.Window's $overlay). This is sometimes necessary to prevent the
- * menu from being clipped too aggresively.
- *
- * The menu's position is automatically calculated and maintained when the menu
- * is toggled or the window is resized.
+ * Focus the widget
  *
- * See OO.ui.ComboBoxInputWidget for an example of a widget that uses this class.
+ * @chainable
+ */
+OO.ui.CheckboxMultiselectWidget.prototype.focus = function () {
+       var item;
+       if ( !this.isDisabled() ) {
+               item = this.getRelativeFocusableItem( null, 1 );
+               if ( item ) {
+                       item.focus();
+               }
+       }
+       return this;
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.CheckboxMultiselectWidget.prototype.simulateLabelClick = function () {
+       this.focus();
+};
+
+/**
+ * FloatingMenuSelectWidget was a menu that would stick under a specified
+ * container, even when it is inserted elsewhere in the document.
+ * This functionality is now included in MenuSelectWidget, and FloatingMenuSelectWidget
+ * is preserved for backwards-compatibility.
  *
  * @class
  * @extends OO.ui.MenuSelectWidget
- * @mixins OO.ui.mixin.FloatableElement
+ * @deprecated since v0.21.3, use MenuSelectWidget instead.
  *
  * @constructor
  * @param {OO.ui.Widget} [inputWidget] Widget to provide the menu for.
  *   Deprecated, omit this parameter and specify `$container` instead.
  * @param {Object} [config] Configuration options
  * @cfg {jQuery} [$container=inputWidget.$element] Element to render menu under
- * @cfg {number} [width] Width of the menu
  */
 OO.ui.FloatingMenuSelectWidget = function OoUiFloatingMenuSelectWidget( inputWidget, config ) {
+       OO.ui.warnDeprecation( 'FloatingMenuSelectWidget is deprecated. Use the MenuSelectWidget instead.' );
+
        // Allow 'inputWidget' parameter and config for backwards compatibility
        if ( OO.isPlainObject( inputWidget ) && config === undefined ) {
                config = inputWidget;
@@ -7861,17 +8097,12 @@ OO.ui.FloatingMenuSelectWidget = function OoUiFloatingMenuSelectWidget( inputWid
        // Configuration initialization
        config = config || {};
 
-       this.width = config.width;
-
-       // Parent constructor
-       OO.ui.FloatingMenuSelectWidget.parent.call( this, config );
-
-       // Properties (must be set before mixin constructors)
+       // Properties
        this.inputWidget = inputWidget; // For backwards compatibility
-       this.$container = config.$container || this.inputWidget.$element;
+       this.$container = config.$floatableContainer || config.$container || this.inputWidget.$element;
 
-       // Mixins constructors
-       OO.ui.mixin.FloatableElement.call( this, $.extend( {}, config, { $floatableContainer: this.$container } ) );
+       // Parent constructor
+       OO.ui.FloatingMenuSelectWidget.parent.call( this, $.extend( {}, config, { $floatableContainer: this.$container } ) );
 
        // Initialization
        this.$element.addClass( 'oo-ui-floatingMenuSelectWidget' );
@@ -7882,33 +8113,6 @@ OO.ui.FloatingMenuSelectWidget = function OoUiFloatingMenuSelectWidget( inputWid
 /* Setup */
 
 OO.inheritClass( OO.ui.FloatingMenuSelectWidget, OO.ui.MenuSelectWidget );
-OO.mixinClass( OO.ui.FloatingMenuSelectWidget, OO.ui.mixin.FloatableElement );
-
-/* Methods */
-
-/**
- * @inheritdoc
- */
-OO.ui.FloatingMenuSelectWidget.prototype.toggle = function ( visible ) {
-       var change;
-       visible = visible === undefined ? !this.isVisible() : !!visible;
-       change = visible !== this.isVisible();
-
-       if ( change && visible ) {
-               // Make sure the width is set before the parent method runs.
-               this.setIdealSize( this.width || this.$container.width() );
-       }
-
-       // Parent method
-       // This will call this.clip(), which is nonsensical since we're not positioned yet...
-       OO.ui.FloatingMenuSelectWidget.parent.prototype.toggle.call( this, visible );
-
-       if ( change ) {
-               this.togglePositioning( this.isVisible() );
-       }
-
-       return this;
-};
 
 /**
  * Progress bars visually display the status of an operation, such as a download,
@@ -8032,6 +8236,7 @@ OO.ui.ProgressBarWidget.prototype.setProgress = function ( progress ) {
  * @cfg {string} [name=''] The value of the input’s HTML `name` attribute.
  * @cfg {string} [value=''] The value of the input.
  * @cfg {string} [dir] The directionality of the input (ltr/rtl).
+ * @cfg {string} [inputId] The value of the input’s HTML `id` attribute.
  * @cfg {Function} [inputFilter] The name of an input filter function. Input filters modify the value of an input
  *  before it is accepted.
  */
@@ -8069,6 +8274,9 @@ OO.ui.InputWidget = function OoUiInputWidget( config ) {
        if ( config.dir ) {
                this.setDir( config.dir );
        }
+       if ( config.inputId !== undefined ) {
+               this.setInputId( config.inputId );
+       }
 };
 
 /* Setup */
@@ -8079,14 +8287,6 @@ OO.mixinClass( OO.ui.InputWidget, OO.ui.mixin.TabIndexedElement );
 OO.mixinClass( OO.ui.InputWidget, OO.ui.mixin.TitledElement );
 OO.mixinClass( OO.ui.InputWidget, OO.ui.mixin.AccessKeyedElement );
 
-/* Static Properties */
-
-/**
- * @static
- * @inheritdoc
- */
-OO.ui.InputWidget.static.supportsSimpleLabel = true;
-
 /* Static Methods */
 
 /**
@@ -8138,25 +8338,6 @@ OO.ui.InputWidget.prototype.getInputElement = function () {
        return $( '<input>' );
 };
 
-/**
- * Get input element's ID.
- *
- * If the element already has an ID then that is returned, otherwise unique ID is
- * generated, set on the element, and returned.
- *
- * @return {string} The ID of the element
- */
-OO.ui.InputWidget.prototype.getInputId = function () {
-       var id = this.$input.attr( 'id' );
-
-       if ( id === undefined ) {
-               id = OO.ui.generateElementId();
-               this.$input.attr( 'id', id );
-       }
-
-       return id;
-};
-
 /**
  * Handle potentially value-changing events.
  *
@@ -8239,23 +8420,6 @@ OO.ui.InputWidget.prototype.cleanUpValue = function ( value ) {
        }
 };
 
-/**
- * Simulate the behavior of clicking on a label bound to this input. This method is only called by
- * {@link OO.ui.LabelWidget LabelWidget} and {@link OO.ui.FieldLayout FieldLayout}. It should not be
- * called directly.
- */
-OO.ui.InputWidget.prototype.simulateLabelClick = function () {
-       OO.ui.warnDeprecation( 'InputWidget: simulateLabelClick() is deprecated.' );
-       if ( !this.isDisabled() ) {
-               if ( this.$input.is( ':checkbox, :radio' ) ) {
-                       this.$input.click();
-               }
-               if ( this.$input.is( ':input' ) ) {
-                       this.$input[ 0 ].focus();
-               }
-       }
-};
-
 /**
  * @inheritdoc
  */
@@ -8268,22 +8432,13 @@ OO.ui.InputWidget.prototype.setDisabled = function ( state ) {
 };
 
 /**
- * Focus the input.
+ * Set the 'id' attribute of the `<input>` element.
  *
+ * @param {string} id
  * @chainable
  */
-OO.ui.InputWidget.prototype.focus = function () {
-       this.$input[ 0 ].focus();
-       return this;
-};
-
-/**
- * Blur the input.
- *
- * @chainable
- */
-OO.ui.InputWidget.prototype.blur = function () {
-       this.$input[ 0 ].blur();
+OO.ui.InputWidget.prototype.setInputId = function ( id ) {
+       this.$input.attr( 'id', id );
        return this;
 };
 
@@ -8300,6 +8455,45 @@ OO.ui.InputWidget.prototype.restorePreInfuseState = function ( state ) {
        }
 };
 
+/**
+ * Data widget intended for creating 'hidden'-type inputs.
+ *
+ * @class
+ * @extends OO.ui.Widget
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ * @cfg {string} [value=''] The value of the input.
+ * @cfg {string} [name=''] The value of the input’s HTML `name` attribute.
+ */
+OO.ui.HiddenInputWidget = function OoUiHiddenInputWidget( config ) {
+       // Configuration initialization
+       config = $.extend( { value: '', name: '' }, config );
+
+       // Parent constructor
+       OO.ui.HiddenInputWidget.parent.call( this, config );
+
+       // Initialization
+       this.$element.attr( {
+               type: 'hidden',
+               value: config.value,
+               name: config.name
+       } );
+       this.$element.removeAttr( 'aria-disabled' );
+};
+
+/* Setup */
+
+OO.inheritClass( OO.ui.HiddenInputWidget, OO.ui.Widget );
+
+/* Static Properties */
+
+/**
+ * @static
+ * @inheritdoc
+ */
+OO.ui.HiddenInputWidget.static.tagName = 'input';
+
 /**
  * ButtonInputWidget is used to submit HTML forms and is intended to be used within
  * a OO.ui.FormLayout. If you do not need the button to work with HTML forms, you probably
@@ -8374,15 +8568,6 @@ OO.mixinClass( OO.ui.ButtonInputWidget, OO.ui.mixin.TitledElement );
 
 /* Static Properties */
 
-/**
- * Disable generating `<label>` elements for buttons. One would very rarely need additional label
- * for a button, and it's already a big clickable target, and it causes unexpected rendering.
- *
- * @static
- * @inheritdoc
- */
-OO.ui.ButtonInputWidget.static.supportsSimpleLabel = false;
-
 /**
  * @static
  * @inheritdoc
@@ -8443,6 +8628,15 @@ OO.ui.ButtonInputWidget.prototype.setValue = function ( value ) {
        return this;
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.ButtonInputWidget.prototype.getInputId = function () {
+       // Disable generating `<label>` elements for buttons. One would very rarely need additional label
+       // for a button, and it's already a big clickable target, and it causes unexpected rendering.
+       return null;
+};
+
 /**
  * CheckboxInputWidgets, like HTML checkboxes, can be selected and/or configured with a value.
  * Note that these {@link OO.ui.InputWidget input widgets} are best laid out
@@ -8494,7 +8688,7 @@ OO.ui.CheckboxInputWidget = function OoUiCheckboxInputWidget( config ) {
        // Initialization
        this.$element
                .addClass( 'oo-ui-checkboxInputWidget' )
-               // Required for pretty styling in MediaWiki theme
+               // Required for pretty styling in WikimediaUI theme
                .append( $( '<span>' ) );
        this.setSelected( config.selected !== undefined ? config.selected : false );
 };
@@ -8576,6 +8770,16 @@ OO.ui.CheckboxInputWidget.prototype.isSelected = function () {
        return this.selected;
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.CheckboxInputWidget.prototype.simulateLabelClick = function () {
+       if ( !this.isDisabled() ) {
+               this.$input.click();
+       }
+       this.focus();
+};
+
 /**
  * @inheritdoc
  */
@@ -8646,6 +8850,7 @@ OO.ui.DropdownInputWidget = function OoUiDropdownInputWidget( config ) {
        this.$element
                .addClass( 'oo-ui-dropdownInputWidget' )
                .append( this.dropdownWidget.$element );
+       this.setTabIndexedElement( null );
 };
 
 /* Setup */
@@ -8743,7 +8948,7 @@ OO.ui.DropdownInputWidget.prototype.setOptions = function ( options ) {
  * @inheritdoc
  */
 OO.ui.DropdownInputWidget.prototype.focus = function () {
-       this.dropdownWidget.getMenu().toggle( true );
+       this.dropdownWidget.focus();
        return this;
 };
 
@@ -8751,7 +8956,7 @@ OO.ui.DropdownInputWidget.prototype.focus = function () {
  * @inheritdoc
  */
 OO.ui.DropdownInputWidget.prototype.blur = function () {
-       this.dropdownWidget.getMenu().toggle( false );
+       this.dropdownWidget.blur();
        return this;
 };
 
@@ -8806,7 +9011,7 @@ OO.ui.RadioInputWidget = function OoUiRadioInputWidget( config ) {
        // Initialization
        this.$element
                .addClass( 'oo-ui-radioInputWidget' )
-               // Required for pretty styling in MediaWiki theme
+               // Required for pretty styling in WikimediaUI theme
                .append( $( '<span>' ) );
        this.setSelected( config.selected !== undefined ? config.selected : false );
 };
@@ -8872,6 +9077,16 @@ OO.ui.RadioInputWidget.prototype.isSelected = function () {
        return this.$input.prop( 'checked' );
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.RadioInputWidget.prototype.simulateLabelClick = function () {
+       if ( !this.isDisabled() ) {
+               this.$input.click();
+       }
+       this.focus();
+};
+
 /**
  * @inheritdoc
  */
@@ -8928,20 +9143,13 @@ OO.ui.RadioSelectInputWidget = function OoUiRadioSelectInputWidget( config ) {
        this.$element
                .addClass( 'oo-ui-radioSelectInputWidget' )
                .append( this.radioSelectWidget.$element );
+       this.setTabIndexedElement( null );
 };
 
 /* Setup */
 
 OO.inheritClass( OO.ui.RadioSelectInputWidget, OO.ui.InputWidget );
 
-/* Static Properties */
-
-/**
- * @static
- * @inheritdoc
- */
-OO.ui.RadioSelectInputWidget.static.supportsSimpleLabel = false;
-
 /* Static Methods */
 
 /**
@@ -9038,6 +9246,22 @@ OO.ui.RadioSelectInputWidget.prototype.setOptions = function ( options ) {
        return this;
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.RadioSelectInputWidget.prototype.focus = function () {
+       this.radioSelectWidget.focus();
+       return this;
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.RadioSelectInputWidget.prototype.blur = function () {
+       this.radioSelectWidget.blur();
+       return this;
+};
+
 /**
  * CheckboxMultiselectInputWidget is a
  * {@link OO.ui.CheckboxMultiselectWidget CheckboxMultiselectWidget} intended to be used within a
@@ -9093,14 +9317,6 @@ OO.ui.CheckboxMultiselectInputWidget = function OoUiCheckboxMultiselectInputWidg
 
 OO.inheritClass( OO.ui.CheckboxMultiselectInputWidget, OO.ui.InputWidget );
 
-/* Static Properties */
-
-/**
- * @static
- * @inheritdoc
- */
-OO.ui.CheckboxMultiselectInputWidget.static.supportsSimpleLabel = false;
-
 /* Static Methods */
 
 /**
@@ -9131,7 +9347,7 @@ OO.ui.CheckboxMultiselectInputWidget.static.reusePreInfuseDOM = function ( node,
  */
 OO.ui.CheckboxMultiselectInputWidget.prototype.getInputElement = function () {
        // Actually unused
-       return $( '<div>' );
+       return $( '<unused>' );
 };
 
 /**
@@ -9224,6 +9440,14 @@ OO.ui.CheckboxMultiselectInputWidget.prototype.setOptions = function ( options )
        return this;
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.CheckboxMultiselectInputWidget.prototype.focus = function () {
+       this.checkboxMultiselectWidget.focus();
+       return this;
+};
+
 /**
  * TextInputWidgets, like HTML text inputs, can be configured with options that customize the
  * size of the field as well as its presentation. In addition, these widgets can be configured
@@ -9252,13 +9476,8 @@ OO.ui.CheckboxMultiselectInputWidget.prototype.setOptions = function ( options )
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string} [type='text'] The value of the HTML `type` attribute: 'text', 'password', 'search',
+ * @cfg {string} [type='text'] The value of the HTML `type` attribute: 'text', 'password'
  *  'email', 'url' or 'number'. Ignored if `multiline` is true.
- *
- *  Some values of `type` result in additional behaviors:
- *
- *  - `search`: implies `icon: 'search'` and `indicator: 'clear'`; when clicked, the indicator
- *    empties the text field
  * @cfg {string} [placeholder] Placeholder text
  * @cfg {boolean} [autofocus=false] Use an HTML `autofocus` attribute to
  *  instruct the browser to focus this widget.
@@ -9288,14 +9507,6 @@ OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
                labelPosition: 'after'
        }, config );
 
-       if ( config.type === 'search' ) {
-               OO.ui.warnDeprecation( 'TextInputWidget: config.type=\'search\' is deprecated. Use the SearchInputWidget instead. See T148471 for details.' );
-               if ( config.icon === undefined ) {
-                       config.icon = 'search';
-               }
-               // indicator: 'clear' is set dynamically later, depending on value
-       }
-
        // Parent constructor
        OO.ui.TextInputWidget.parent.call( this, config );
 
@@ -9339,8 +9550,7 @@ OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
        this.$indicator.on( 'mousedown', this.onIndicatorMouseDown.bind( this ) );
        this.on( 'labelChange', this.updatePosition.bind( this ) );
        this.connect( this, {
-               change: 'onChange',
-               disable: 'onDisable'
+               change: 'onChange'
        } );
        this.on( 'change', OO.ui.debounce( this.onDebouncedChange.bind( this ), 250 ) );
 
@@ -9350,7 +9560,6 @@ OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
                .append( this.$icon, this.$indicator );
        this.setReadOnly( !!config.readOnly );
        this.setRequired( !!config.required );
-       this.updateSearchIndicator();
        if ( config.placeholder !== undefined ) {
                this.$input.attr( 'placeholder', config.placeholder );
        }
@@ -9438,7 +9647,7 @@ OO.ui.TextInputWidget.static.gatherPreInfuseState = function ( node, config ) {
  */
 OO.ui.TextInputWidget.prototype.onIconMouseDown = function ( e ) {
        if ( e.which === OO.ui.MouseButtons.LEFT ) {
-               this.$input[ 0 ].focus();
+               this.focus();
                return false;
        }
 };
@@ -9451,11 +9660,7 @@ OO.ui.TextInputWidget.prototype.onIconMouseDown = function ( e ) {
  */
 OO.ui.TextInputWidget.prototype.onIndicatorMouseDown = function ( e ) {
        if ( e.which === OO.ui.MouseButtons.LEFT ) {
-               if ( this.type === 'search' ) {
-                       // Clear the text field
-                       this.setValue( '' );
-               }
-               this.$input[ 0 ].focus();
+               this.focus();
                return false;
        }
 };
@@ -9519,7 +9724,6 @@ OO.ui.TextInputWidget.prototype.onElementAttach = function () {
  * @private
  */
 OO.ui.TextInputWidget.prototype.onChange = function () {
-       this.updateSearchIndicator();
        this.adjustSize();
 };
 
@@ -9533,16 +9737,6 @@ OO.ui.TextInputWidget.prototype.onDebouncedChange = function () {
        this.setValidityFlag();
 };
 
-/**
- * Handle disable events.
- *
- * @param {boolean} disabled Element is disabled
- * @private
- */
-OO.ui.TextInputWidget.prototype.onDisable = function () {
-       this.updateSearchIndicator();
-};
-
 /**
  * Check if the input is {@link #readOnly read-only}.
  *
@@ -9561,7 +9755,6 @@ OO.ui.TextInputWidget.prototype.isReadOnly = function () {
 OO.ui.TextInputWidget.prototype.setReadOnly = function ( state ) {
        this.readOnly = !!state;
        this.$input.prop( 'readOnly', this.readOnly );
-       this.updateSearchIndicator();
        return this;
 };
 
@@ -9597,7 +9790,6 @@ OO.ui.TextInputWidget.prototype.setRequired = function ( state ) {
                        this.setIndicator( null );
                }
        }
-       this.updateSearchIndicator();
        return this;
 };
 
@@ -9777,7 +9969,6 @@ OO.ui.TextInputWidget.prototype.getSaneType = function ( config ) {
        var allowedTypes = [
                'text',
                'password',
-               'search',
                'email',
                'url',
                'number'
@@ -10058,20 +10249,6 @@ OO.ui.TextInputWidget.prototype.updatePosition = function () {
        return this;
 };
 
-/**
- * Update the 'clear' indicator displayed on type: 'search' text fields, hiding it when the field is
- * already empty or when it's not editable.
- */
-OO.ui.TextInputWidget.prototype.updateSearchIndicator = function () {
-       if ( this.type === 'search' ) {
-               if ( this.getValue() === '' || this.isDisabled() || this.isReadOnly() ) {
-                       this.setIndicator( null );
-               } else {
-                       this.setIndicator( 'clear' );
-               }
-       }
-};
-
 /**
  * Position the label by setting the correct padding on the input.
  *
@@ -10168,7 +10345,7 @@ OO.ui.SearchInputWidget.prototype.onIndicatorMouseDown = function ( e ) {
        if ( e.which === OO.ui.MouseButtons.LEFT ) {
                // Clear the text field
                this.setValue( '' );
-               this.$input[ 0 ].focus();
+               this.focus();
                return false;
        }
 };
@@ -10272,10 +10449,11 @@ OO.ui.SearchInputWidget.prototype.setReadOnly = function ( state ) {
  * @constructor
  * @param {Object} [config] Configuration options
  * @cfg {Object[]} [options=[]] Array of menu options in the format `{ data: …, label: … }`
- * @cfg {Object} [menu] Configuration options to pass to the {@link OO.ui.FloatingMenuSelectWidget menu select widget}.
+ * @cfg {Object} [menu] Configuration options to pass to the {@link OO.ui.MenuSelectWidget menu select widget}.
  * @cfg {jQuery} [$overlay] Render the menu into a separate layer. This configuration is useful in cases where
  *  the expanded menu is larger than its containing `<div>`. The specified overlay layer is usually on top of the
  *  containing `<div>` and has a larger area. By default, the menu uses relative positioning.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  */
 OO.ui.ComboBoxInputWidget = function OoUiComboBoxInputWidget( config ) {
        // Configuration initialization
@@ -10301,11 +10479,11 @@ OO.ui.ComboBoxInputWidget = function OoUiComboBoxInputWidget( config ) {
                indicator: 'down',
                disabled: this.disabled
        } );
-       this.menu = new OO.ui.FloatingMenuSelectWidget( $.extend(
+       this.menu = new OO.ui.MenuSelectWidget( $.extend(
                {
                        widget: this,
                        input: this,
-                       $container: this.$element,
+                       $floatableContainer: this.$element,
                        disabled: this.isDisabled()
                },
                config.menu
@@ -10328,6 +10506,7 @@ OO.ui.ComboBoxInputWidget = function OoUiComboBoxInputWidget( config ) {
        // Initialization
        this.$input.attr( {
                role: 'combobox',
+               'aria-owns': this.menu.getElementId(),
                'aria-autocomplete': 'list'
        } );
        // Do not override options set via config.menu.items
@@ -10353,7 +10532,7 @@ OO.inheritClass( OO.ui.ComboBoxInputWidget, OO.ui.TextInputWidget );
 /**
  * Get the combobox's menu.
  *
- * @return {OO.ui.FloatingMenuSelectWidget} Menu widget
+ * @return {OO.ui.MenuSelectWidget} Menu widget
  */
 OO.ui.ComboBoxInputWidget.prototype.getMenu = function () {
        return this.menu;
@@ -10405,7 +10584,7 @@ OO.ui.ComboBoxInputWidget.prototype.onInputEnter = function () {
  */
 OO.ui.ComboBoxInputWidget.prototype.onDropdownButtonClick = function () {
        this.menu.toggle();
-       this.$input[ 0 ].focus();
+       this.focus();
 };
 
 /**
@@ -10506,6 +10685,7 @@ OO.ui.ComboBoxInputWidget.prototype.setOptions = function ( options ) {
  *  in the upper-right corner of the rendered field; clicking it will display the text in a popup.
  *  For important messages, you are advised to use `notices`, as they are always shown.
  * @cfg {jQuery} [$overlay] Passed to OO.ui.PopupButtonWidget for help popup, if `help` is given.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  *
  * @throws {Error} An error is thrown if no widget is specified
  */
@@ -10566,15 +10746,13 @@ OO.ui.FieldLayout = function OoUiFieldLayout( fieldWidget, config ) {
        this.fieldWidget.connect( this, { disable: 'onFieldDisable' } );
 
        // Initialization
-       if ( fieldWidget.constructor.static.supportsSimpleLabel ) {
-               if ( this.fieldWidget.getInputId() ) {
-                       this.$label.attr( 'for', this.fieldWidget.getInputId() );
-               } else {
-                       this.$label.on( 'click', function () {
-                               this.fieldWidget.focus();
-                               return false;
-                       }.bind( this ) );
-               }
+       if ( this.fieldWidget.getInputId() ) {
+               this.$label.attr( 'for', this.fieldWidget.getInputId() );
+       } else {
+               this.$label.on( 'click', function () {
+                       this.fieldWidget.simulateLabelClick();
+                       return false;
+               }.bind( this ) );
        }
        this.$element
                .addClass( 'oo-ui-fieldLayout' )
@@ -10870,6 +11048,7 @@ OO.inheritClass( OO.ui.ActionFieldLayout, OO.ui.FieldLayout );
  *  in the upper-right corner of the rendered field; clicking it will display the text in a popup.
  *  For important messages, you are advised to use `notices`, as they are always shown.
  * @cfg {jQuery} [$overlay] Passed to OO.ui.PopupButtonWidget for help popup, if `help` is given.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  */
 OO.ui.FieldsetLayout = function OoUiFieldsetLayout( config ) {
        // Configuration initialization
@@ -11180,3 +11359,5 @@ OO.inheritClass( OO.ui.HorizontalLayout, OO.ui.Layout );
 OO.mixinClass( OO.ui.HorizontalLayout, OO.ui.mixin.GroupElement );
 
 }( OO ) );
+
+//# sourceMappingURL=oojs-ui-core.js.map
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/oojs-ui-core.js.map b/resources/lib/oojs-ui/oojs-ui-core.js.map
new file mode 100644 (file)
index 0000000..5e573c7
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/intro.js.txt","../src/core.js","../src/mixin.js","../src/Element.js","../src/HtmlSnippet.js","../src/Layout.js","../src/Widget.js","../src/Theme.js","../src/mixins/TabIndexedElement.js","../src/mixins/ButtonElement.js","../src/mixins/GroupElement.js","../src/mixins/IconElement.js","../src/mixins/IndicatorElement.js","../src/mixins/LabelElement.js","../src/mixins/FlaggedElement.js","../src/mixins/TitledElement.js","../src/mixins/AccessKeyedElement.js","../src/widgets/ButtonWidget.js","../src/widgets/ButtonGroupWidget.js","../src/widgets/IconWidget.js","../src/widgets/IndicatorWidget.js","../src/widgets/LabelWidget.js","../src/mixins/PendingElement.js","../src/mixins/FloatableElement.js","../src/mixins/ClippableElement.js","../src/widgets/PopupWidget.js","../src/mixins/PopupElement.js","../src/widgets/PopupButtonWidget.js","../src/mixins/GroupWidget.js","../src/mixins/ItemWidget.js","../src/widgets/OptionWidget.js","../src/widgets/SelectWidget.js","../src/widgets/DecoratedOptionWidget.js","../src/widgets/MenuOptionWidget.js","../src/widgets/MenuSectionOptionWidget.js","../src/widgets/MenuSelectWidget.js","../src/widgets/DropdownWidget.js","../src/widgets/RadioOptionWidget.js","../src/widgets/RadioSelectWidget.js","../src/widgets/MultioptionWidget.js","../src/widgets/MultiselectWidget.js","../src/widgets/CheckboxMultioptionWidget.js","../src/widgets/CheckboxMultiselectWidget.js","../src/widgets/FloatingMenuSelectWidget.js","../src/widgets/ProgressBarWidget.js","../src/widgets/InputWidget.js","../src/widgets/HiddenInputWidget.js","../src/widgets/ButtonInputWidget.js","../src/widgets/CheckboxInputWidget.js","../src/widgets/DropdownInputWidget.js","../src/widgets/RadioInputWidget.js","../src/widgets/RadioSelectInputWidget.js","../src/widgets/CheckboxMultiselectInputWidget.js","../src/widgets/TextInputWidget.js","../src/widgets/SearchInputWidget.js","../src/widgets/ComboBoxInputWidget.js","../src/layouts/FieldLayout.js","../src/layouts/ActionFieldLayout.js","../src/layouts/FieldsetLayout.js","../src/layouts/FormLayout.js","../src/layouts/PanelLayout.js","../src/layouts/HorizontalLayout.js","../src/outro.js.txt"],"names":[],"mappings":"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","file":"oojs-ui-core.js","sourcesContent":["( function ( OO ) {\n\n'use strict';\n","/**\n * Namespace for all classes, static methods and static properties.\n *\n * @class\n * @singleton\n */\nOO.ui = {};\n\nOO.ui.bind = $.proxy;\n\n/**\n * @property {Object}\n */\nOO.ui.Keys = {\n\tUNDEFINED: 0,\n\tBACKSPACE: 8,\n\tDELETE: 46,\n\tLEFT: 37,\n\tRIGHT: 39,\n\tUP: 38,\n\tDOWN: 40,\n\tENTER: 13,\n\tEND: 35,\n\tHOME: 36,\n\tTAB: 9,\n\tPAGEUP: 33,\n\tPAGEDOWN: 34,\n\tESCAPE: 27,\n\tSHIFT: 16,\n\tSPACE: 32\n};\n\n/**\n * Constants for MouseEvent.which\n *\n * @property {Object}\n */\nOO.ui.MouseButtons = {\n\tLEFT: 1,\n\tMIDDLE: 2,\n\tRIGHT: 3\n};\n\n/**\n * @property {number}\n * @private\n */\nOO.ui.elementId = 0;\n\n/**\n * Generate a unique ID for element\n *\n * @return {string} ID\n */\nOO.ui.generateElementId = function () {\n\tOO.ui.elementId++;\n\treturn 'oojsui-' + OO.ui.elementId;\n};\n\n/**\n * Check if an element is focusable.\n * Inspired by :focusable in jQueryUI v1.11.4 - 2015-04-14\n *\n * @param {jQuery} $element Element to test\n * @return {boolean} Element is focusable\n */\nOO.ui.isFocusableElement = function ( $element ) {\n\tvar nodeName,\n\t\telement = $element[ 0 ];\n\n\t// Anything disabled is not focusable\n\tif ( element.disabled ) {\n\t\treturn false;\n\t}\n\n\t// Check if the element is visible\n\tif ( !(\n\t\t// This is quicker than calling $element.is( ':visible' )\n\t\t$.expr.pseudos.visible( element ) &&\n\t\t// Check that all parents are visible\n\t\t!$element.parents().addBack().filter( function () {\n\t\t\treturn $.css( this, 'visibility' ) === 'hidden';\n\t\t} ).length\n\t) ) {\n\t\treturn false;\n\t}\n\n\t// Check if the element is ContentEditable, which is the string 'true'\n\tif ( element.contentEditable === 'true' ) {\n\t\treturn true;\n\t}\n\n\t// Anything with a non-negative numeric tabIndex is focusable.\n\t// Use .prop to avoid browser bugs\n\tif ( $element.prop( 'tabIndex' ) >= 0 ) {\n\t\treturn true;\n\t}\n\n\t// Some element types are naturally focusable\n\t// (indexOf is much faster than regex in Chrome and about the\n\t// same in FF: https://jsperf.com/regex-vs-indexof-array2)\n\tnodeName = element.nodeName.toLowerCase();\n\tif ( [ 'input', 'select', 'textarea', 'button', 'object' ].indexOf( nodeName ) !== -1 ) {\n\t\treturn true;\n\t}\n\n\t// Links and areas are focusable if they have an href\n\tif ( ( nodeName === 'a' || nodeName === 'area' ) && $element.attr( 'href' ) !== undefined ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n/**\n * Find a focusable child\n *\n * @param {jQuery} $container Container to search in\n * @param {boolean} [backwards] Search backwards\n * @return {jQuery} Focusable child, or an empty jQuery object if none found\n */\nOO.ui.findFocusable = function ( $container, backwards ) {\n\tvar $focusable = $( [] ),\n\t\t// $focusableCandidates is a superset of things that\n\t\t// could get matched by isFocusableElement\n\t\t$focusableCandidates = $container\n\t\t\t.find( 'input, select, textarea, button, object, a, area, [contenteditable], [tabindex]' );\n\n\tif ( backwards ) {\n\t\t$focusableCandidates = Array.prototype.reverse.call( $focusableCandidates );\n\t}\n\n\t$focusableCandidates.each( function () {\n\t\tvar $this = $( this );\n\t\tif ( OO.ui.isFocusableElement( $this ) ) {\n\t\t\t$focusable = $this;\n\t\t\treturn false;\n\t\t}\n\t} );\n\treturn $focusable;\n};\n\n/**\n * Get the user's language and any fallback languages.\n *\n * These language codes are used to localize user interface elements in the user's language.\n *\n * In environments that provide a localization system, this function should be overridden to\n * return the user's language(s). The default implementation returns English (en) only.\n *\n * @return {string[]} Language codes, in descending order of priority\n */\nOO.ui.getUserLanguages = function () {\n\treturn [ 'en' ];\n};\n\n/**\n * Get a value in an object keyed by language code.\n *\n * @param {Object.<string,Mixed>} obj Object keyed by language code\n * @param {string|null} [lang] Language code, if omitted or null defaults to any user language\n * @param {string} [fallback] Fallback code, used if no matching language can be found\n * @return {Mixed} Local value\n */\nOO.ui.getLocalValue = function ( obj, lang, fallback ) {\n\tvar i, len, langs;\n\n\t// Requested language\n\tif ( obj[ lang ] ) {\n\t\treturn obj[ lang ];\n\t}\n\t// Known user language\n\tlangs = OO.ui.getUserLanguages();\n\tfor ( i = 0, len = langs.length; i < len; i++ ) {\n\t\tlang = langs[ i ];\n\t\tif ( obj[ lang ] ) {\n\t\t\treturn obj[ lang ];\n\t\t}\n\t}\n\t// Fallback language\n\tif ( obj[ fallback ] ) {\n\t\treturn obj[ fallback ];\n\t}\n\t// First existing language\n\tfor ( lang in obj ) {\n\t\treturn obj[ lang ];\n\t}\n\n\treturn undefined;\n};\n\n/**\n * Check if a node is contained within another node\n *\n * Similar to jQuery#contains except a list of containers can be supplied\n * and a boolean argument allows you to include the container in the match list\n *\n * @param {HTMLElement|HTMLElement[]} containers Container node(s) to search in\n * @param {HTMLElement} contained Node to find\n * @param {boolean} [matchContainers] Include the container(s) in the list of nodes to match, otherwise only match descendants\n * @return {boolean} The node is in the list of target nodes\n */\nOO.ui.contains = function ( containers, contained, matchContainers ) {\n\tvar i;\n\tif ( !Array.isArray( containers ) ) {\n\t\tcontainers = [ containers ];\n\t}\n\tfor ( i = containers.length - 1; i >= 0; i-- ) {\n\t\tif ( ( matchContainers && contained === containers[ i ] ) || $.contains( containers[ i ], contained ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/**\n * Return a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n *\n * Ported from: http://underscorejs.org/underscore.js\n *\n * @param {Function} func Function to debounce\n * @param {number} [wait=0] Wait period in milliseconds\n * @param {boolean} [immediate] Trigger on leading edge\n * @return {Function} Debounced function\n */\nOO.ui.debounce = function ( func, wait, immediate ) {\n\tvar timeout;\n\treturn function () {\n\t\tvar context = this,\n\t\t\targs = arguments,\n\t\t\tlater = function () {\n\t\t\t\ttimeout = null;\n\t\t\t\tif ( !immediate ) {\n\t\t\t\t\tfunc.apply( context, args );\n\t\t\t\t}\n\t\t\t};\n\t\tif ( immediate && !timeout ) {\n\t\t\tfunc.apply( context, args );\n\t\t}\n\t\tif ( !timeout || wait ) {\n\t\t\tclearTimeout( timeout );\n\t\t\ttimeout = setTimeout( later, wait );\n\t\t}\n\t};\n};\n\n/**\n * Puts a console warning with provided message.\n *\n * @param {string} message Message\n */\nOO.ui.warnDeprecation = function ( message ) {\n\tif ( OO.getProp( window, 'console', 'warn' ) !== undefined ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn( message );\n\t}\n};\n\n/**\n * Returns a function, that, when invoked, will only be triggered at most once\n * during a given window of time. If called again during that window, it will\n * wait until the window ends and then trigger itself again.\n *\n * As it's not knowable to the caller whether the function will actually run\n * when the wrapper is called, return values from the function are entirely\n * discarded.\n *\n * @param {Function} func Function to throttle\n * @param {number} wait Throttle window length, in milliseconds\n * @return {Function} Throttled function\n */\nOO.ui.throttle = function ( func, wait ) {\n\tvar context, args, timeout,\n\t\tprevious = 0,\n\t\trun = function () {\n\t\t\ttimeout = null;\n\t\t\tprevious = OO.ui.now();\n\t\t\tfunc.apply( context, args );\n\t\t};\n\treturn function () {\n\t\t// Check how long it's been since the last time the function was\n\t\t// called, and whether it's more or less than the requested throttle\n\t\t// period. If it's less, run the function immediately. If it's more,\n\t\t// set a timeout for the remaining time -- but don't replace an\n\t\t// existing timeout, since that'd indefinitely prolong the wait.\n\t\tvar remaining = wait - ( OO.ui.now() - previous );\n\t\tcontext = this;\n\t\targs = arguments;\n\t\tif ( remaining <= 0 ) {\n\t\t\t// Note: unless wait was ridiculously large, this means we'll\n\t\t\t// automatically run the first time the function was called in a\n\t\t\t// given period. (If you provide a wait period larger than the\n\t\t\t// current Unix timestamp, you *deserve* unexpected behavior.)\n\t\t\tclearTimeout( timeout );\n\t\t\trun();\n\t\t} else if ( !timeout ) {\n\t\t\ttimeout = setTimeout( run, remaining );\n\t\t}\n\t};\n};\n\n/**\n * A (possibly faster) way to get the current timestamp as an integer\n *\n * @return {number} Current timestamp, in milliseconds since the Unix epoch\n */\nOO.ui.now = Date.now || function () {\n\treturn new Date().getTime();\n};\n\n/**\n * Reconstitute a JavaScript object corresponding to a widget created by\n * the PHP implementation.\n *\n * This is an alias for `OO.ui.Element.static.infuse()`.\n *\n * @param {string|HTMLElement|jQuery} idOrNode\n *   A DOM id (if a string) or node for the widget to infuse.\n * @return {OO.ui.Element}\n *   The `OO.ui.Element` corresponding to this (infusable) document node.\n */\nOO.ui.infuse = function ( idOrNode ) {\n\treturn OO.ui.Element.static.infuse( idOrNode );\n};\n\n( function () {\n\t/**\n\t * Message store for the default implementation of OO.ui.msg\n\t *\n\t * Environments that provide a localization system should not use this, but should override\n\t * OO.ui.msg altogether.\n\t *\n\t * @private\n\t */\n\tvar messages = {\n\t\t// Tool tip for a button that moves items in a list down one place\n\t\t'ooui-outline-control-move-down': 'Move item down',\n\t\t// Tool tip for a button that moves items in a list up one place\n\t\t'ooui-outline-control-move-up': 'Move item up',\n\t\t// Tool tip for a button that removes items from a list\n\t\t'ooui-outline-control-remove': 'Remove item',\n\t\t// Label for the toolbar group that contains a list of all other available tools\n\t\t'ooui-toolbar-more': 'More',\n\t\t// Label for the fake tool that expands the full list of tools in a toolbar group\n\t\t'ooui-toolgroup-expand': 'More',\n\t\t// Label for the fake tool that collapses the full list of tools in a toolbar group\n\t\t'ooui-toolgroup-collapse': 'Fewer',\n\t\t// Default label for the accept button of a confirmation dialog\n\t\t'ooui-dialog-message-accept': 'OK',\n\t\t// Default label for the reject button of a confirmation dialog\n\t\t'ooui-dialog-message-reject': 'Cancel',\n\t\t// Title for process dialog error description\n\t\t'ooui-dialog-process-error': 'Something went wrong',\n\t\t// Label for process dialog dismiss error button, visible when describing errors\n\t\t'ooui-dialog-process-dismiss': 'Dismiss',\n\t\t// Label for process dialog retry action button, visible when describing only recoverable errors\n\t\t'ooui-dialog-process-retry': 'Try again',\n\t\t// Label for process dialog retry action button, visible when describing only warnings\n\t\t'ooui-dialog-process-continue': 'Continue',\n\t\t// Label for the file selection widget's select file button\n\t\t'ooui-selectfile-button-select': 'Select a file',\n\t\t// Label for the file selection widget if file selection is not supported\n\t\t'ooui-selectfile-not-supported': 'File selection is not supported',\n\t\t// Label for the file selection widget when no file is currently selected\n\t\t'ooui-selectfile-placeholder': 'No file is selected',\n\t\t// Label for the file selection widget's drop target\n\t\t'ooui-selectfile-dragdrop-placeholder': 'Drop file here'\n\t};\n\n\t/**\n\t * Get a localized message.\n\t *\n\t * After the message key, message parameters may optionally be passed. In the default implementation,\n\t * any occurrences of $1 are replaced with the first parameter, $2 with the second parameter, etc.\n\t * Alternative implementations of OO.ui.msg may use any substitution system they like, as long as\n\t * they support unnamed, ordered message parameters.\n\t *\n\t * In environments that provide a localization system, this function should be overridden to\n\t * return the message translated in the user's language. The default implementation always returns\n\t * English messages. An example of doing this with [jQuery.i18n](https://github.com/wikimedia/jquery.i18n)\n\t * follows.\n\t *\n\t *     @example\n\t *     var i, iLen, button,\n\t *         messagePath = 'oojs-ui/dist/i18n/',\n\t *         languages = [ $.i18n().locale, 'ur', 'en' ],\n\t *         languageMap = {};\n\t *\n\t *     for ( i = 0, iLen = languages.length; i < iLen; i++ ) {\n\t *         languageMap[ languages[ i ] ] = messagePath + languages[ i ].toLowerCase() + '.json';\n\t *     }\n\t *\n\t *     $.i18n().load( languageMap ).done( function() {\n\t *         // Replace the built-in `msg` only once we've loaded the internationalization.\n\t *         // OOjs UI uses `OO.ui.deferMsg` for all initially-loaded messages. So long as\n\t *         // you put off creating any widgets until this promise is complete, no English\n\t *         // will be displayed.\n\t *         OO.ui.msg = $.i18n;\n\t *\n\t *         // A button displaying \"OK\" in the default locale\n\t *         button = new OO.ui.ButtonWidget( {\n\t *             label: OO.ui.msg( 'ooui-dialog-message-accept' ),\n\t *             icon: 'check'\n\t *         } );\n\t *         $( 'body' ).append( button.$element );\n\t *\n\t *         // A button displaying \"OK\" in Urdu\n\t *         $.i18n().locale = 'ur';\n\t *         button = new OO.ui.ButtonWidget( {\n\t *             label: OO.ui.msg( 'ooui-dialog-message-accept' ),\n\t *             icon: 'check'\n\t *         } );\n\t *         $( 'body' ).append( button.$element );\n\t *     } );\n\t *\n\t * @param {string} key Message key\n\t * @param {...Mixed} [params] Message parameters\n\t * @return {string} Translated message with parameters substituted\n\t */\n\tOO.ui.msg = function ( key ) {\n\t\tvar message = messages[ key ],\n\t\t\tparams = Array.prototype.slice.call( arguments, 1 );\n\t\tif ( typeof message === 'string' ) {\n\t\t\t// Perform $1 substitution\n\t\t\tmessage = message.replace( /\\$(\\d+)/g, function ( unused, n ) {\n\t\t\t\tvar i = parseInt( n, 10 );\n\t\t\t\treturn params[ i - 1 ] !== undefined ? params[ i - 1 ] : '$' + n;\n\t\t\t} );\n\t\t} else {\n\t\t\t// Return placeholder if message not found\n\t\t\tmessage = '[' + key + ']';\n\t\t}\n\t\treturn message;\n\t};\n}() );\n\n/**\n * Package a message and arguments for deferred resolution.\n *\n * Use this when you are statically specifying a message and the message may not yet be present.\n *\n * @param {string} key Message key\n * @param {...Mixed} [params] Message parameters\n * @return {Function} Function that returns the resolved message when executed\n */\nOO.ui.deferMsg = function () {\n\tvar args = arguments;\n\treturn function () {\n\t\treturn OO.ui.msg.apply( OO.ui, args );\n\t};\n};\n\n/**\n * Resolve a message.\n *\n * If the message is a function it will be executed, otherwise it will pass through directly.\n *\n * @param {Function|string} msg Deferred message, or message text\n * @return {string} Resolved message\n */\nOO.ui.resolveMsg = function ( msg ) {\n\tif ( $.isFunction( msg ) ) {\n\t\treturn msg();\n\t}\n\treturn msg;\n};\n\n/**\n * @param {string} url\n * @return {boolean}\n */\nOO.ui.isSafeUrl = function ( url ) {\n\t// Keep this function in sync with php/Tag.php\n\tvar i, protocolWhitelist;\n\n\tfunction stringStartsWith( haystack, needle ) {\n\t\treturn haystack.substr( 0, needle.length ) === needle;\n\t}\n\n\tprotocolWhitelist = [\n\t\t'bitcoin', 'ftp', 'ftps', 'geo', 'git', 'gopher', 'http', 'https', 'irc', 'ircs',\n\t\t'magnet', 'mailto', 'mms', 'news', 'nntp', 'redis', 'sftp', 'sip', 'sips', 'sms', 'ssh',\n\t\t'svn', 'tel', 'telnet', 'urn', 'worldwind', 'xmpp'\n\t];\n\n\tif ( url === '' ) {\n\t\treturn true;\n\t}\n\n\tfor ( i = 0; i < protocolWhitelist.length; i++ ) {\n\t\tif ( stringStartsWith( url, protocolWhitelist[ i ] + ':' ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t// This matches '//' too\n\tif ( stringStartsWith( url, '/' ) || stringStartsWith( url, './' ) ) {\n\t\treturn true;\n\t}\n\tif ( stringStartsWith( url, '?' ) || stringStartsWith( url, '#' ) ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n/**\n * Check if the user has a 'mobile' device.\n *\n * For our purposes this means the user is primarily using an\n * on-screen keyboard, touch input instead of a mouse and may\n * have a physically small display.\n *\n * It is left up to implementors to decide how to compute this\n * so the default implementation always returns false.\n *\n * @return {boolean} Use is on a mobile device\n */\nOO.ui.isMobile = function () {\n\treturn false;\n};\n","/*!\n * Mixin namespace.\n */\n\n/**\n * Namespace for OOjs UI mixins.\n *\n * Mixins are named according to the type of object they are intended to\n * be mixed in to.  For example, OO.ui.mixin.GroupElement is intended to be\n * mixed in to an instance of OO.ui.Element, and OO.ui.mixin.GroupWidget\n * is intended to be mixed in to an instance of OO.ui.Widget.\n *\n * @class\n * @singleton\n */\nOO.ui.mixin = {};\n","/**\n * Each Element represents a rendering in the DOM—a button or an icon, for example, or anything\n * that is visible to a user. Unlike {@link OO.ui.Widget widgets}, plain elements usually do not have events\n * connected to them and can't be interacted with.\n *\n * @abstract\n * @class\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {string[]} [classes] The names of the CSS classes to apply to the element. CSS styles are added\n *  to the top level (e.g., the outermost div) of the element. See the [OOjs UI documentation on MediaWiki][2]\n *  for an example.\n *  [2]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Buttons_and_Switches#cssExample\n * @cfg {string} [id] The HTML id attribute used in the rendered tag.\n * @cfg {string} [text] Text to insert\n * @cfg {Array} [content] An array of content elements to append (after #text).\n *  Strings will be html-escaped; use an OO.ui.HtmlSnippet to append raw HTML.\n *  Instances of OO.ui.Element will have their $element appended.\n * @cfg {jQuery} [$content] Content elements to append (after #text).\n * @cfg {jQuery} [$element] Wrapper element. Defaults to a new element with #getTagName.\n * @cfg {Mixed} [data] Custom data of any type or combination of types (e.g., string, number, array, object).\n *  Data can also be specified with the #setData method.\n */\nOO.ui.Element = function OoUiElement( config ) {\n\tthis.initialConfig = config;\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties\n\tthis.$ = $;\n\tthis.elementId = null;\n\tthis.visible = true;\n\tthis.data = config.data;\n\tthis.$element = config.$element ||\n\t\t$( document.createElement( this.getTagName() ) );\n\tthis.elementGroup = null;\n\n\t// Initialization\n\tif ( Array.isArray( config.classes ) ) {\n\t\tthis.$element.addClass( config.classes.join( ' ' ) );\n\t}\n\tif ( config.id ) {\n\t\tthis.setElementId( config.id );\n\t}\n\tif ( config.text ) {\n\t\tthis.$element.text( config.text );\n\t}\n\tif ( config.content ) {\n\t\t// The `content` property treats plain strings as text; use an\n\t\t// HtmlSnippet to append HTML content.  `OO.ui.Element`s get their\n\t\t// appropriate $element appended.\n\t\tthis.$element.append( config.content.map( function ( v ) {\n\t\t\tif ( typeof v === 'string' ) {\n\t\t\t\t// Escape string so it is properly represented in HTML.\n\t\t\t\treturn document.createTextNode( v );\n\t\t\t} else if ( v instanceof OO.ui.HtmlSnippet ) {\n\t\t\t\t// Bypass escaping.\n\t\t\t\treturn v.toString();\n\t\t\t} else if ( v instanceof OO.ui.Element ) {\n\t\t\t\treturn v.$element;\n\t\t\t}\n\t\t\treturn v;\n\t\t} ) );\n\t}\n\tif ( config.$content ) {\n\t\t// The `$content` property treats plain strings as HTML.\n\t\tthis.$element.append( config.$content );\n\t}\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.Element );\n\n/* Static Properties */\n\n/**\n * The name of the HTML tag used by the element.\n *\n * The static value may be ignored if the #getTagName method is overridden.\n *\n * @static\n * @inheritable\n * @property {string}\n */\nOO.ui.Element.static.tagName = 'div';\n\n/* Static Methods */\n\n/**\n * Reconstitute a JavaScript object corresponding to a widget created\n * by the PHP implementation.\n *\n * @param {string|HTMLElement|jQuery} idOrNode\n *   A DOM id (if a string) or node for the widget to infuse.\n * @return {OO.ui.Element}\n *   The `OO.ui.Element` corresponding to this (infusable) document node.\n *   For `Tag` objects emitted on the HTML side (used occasionally for content)\n *   the value returned is a newly-created Element wrapping around the existing\n *   DOM node.\n */\nOO.ui.Element.static.infuse = function ( idOrNode ) {\n\tvar obj = OO.ui.Element.static.unsafeInfuse( idOrNode, false );\n\t// Verify that the type matches up.\n\t// FIXME: uncomment after T89721 is fixed (see T90929)\n\t/*\n\tif ( !( obj instanceof this['class'] ) ) {\n\t\tthrow new Error( 'Infusion type mismatch!' );\n\t}\n\t*/\n\treturn obj;\n};\n\n/**\n * Implementation helper for `infuse`; skips the type check and has an\n * extra property so that only the top-level invocation touches the DOM.\n *\n * @private\n * @param {string|HTMLElement|jQuery} idOrNode\n * @param {jQuery.Promise|boolean} domPromise A promise that will be resolved\n *     when the top-level widget of this infusion is inserted into DOM,\n *     replacing the original node; or false for top-level invocation.\n * @return {OO.ui.Element}\n */\nOO.ui.Element.static.unsafeInfuse = function ( idOrNode, domPromise ) {\n\t// look for a cached result of a previous infusion.\n\tvar id, $elem, data, cls, parts, parent, obj, top, state, infusedChildren;\n\tif ( typeof idOrNode === 'string' ) {\n\t\tid = idOrNode;\n\t\t$elem = $( document.getElementById( id ) );\n\t} else {\n\t\t$elem = $( idOrNode );\n\t\tid = $elem.attr( 'id' );\n\t}\n\tif ( !$elem.length ) {\n\t\tthrow new Error( 'Widget not found: ' + id );\n\t}\n\tif ( $elem[ 0 ].oouiInfused ) {\n\t\t$elem = $elem[ 0 ].oouiInfused;\n\t}\n\tdata = $elem.data( 'ooui-infused' );\n\tif ( data ) {\n\t\t// cached!\n\t\tif ( data === true ) {\n\t\t\tthrow new Error( 'Circular dependency! ' + id );\n\t\t}\n\t\tif ( domPromise ) {\n\t\t\t// pick up dynamic state, like focus, value of form inputs, scroll position, etc.\n\t\t\tstate = data.constructor.static.gatherPreInfuseState( $elem, data );\n\t\t\t// restore dynamic state after the new element is re-inserted into DOM under infused parent\n\t\t\tdomPromise.done( data.restorePreInfuseState.bind( data, state ) );\n\t\t\tinfusedChildren = $elem.data( 'ooui-infused-children' );\n\t\t\tif ( infusedChildren && infusedChildren.length ) {\n\t\t\t\tinfusedChildren.forEach( function ( data ) {\n\t\t\t\t\tvar state = data.constructor.static.gatherPreInfuseState( $elem, data );\n\t\t\t\t\tdomPromise.done( data.restorePreInfuseState.bind( data, state ) );\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\treturn data;\n\t}\n\tdata = $elem.attr( 'data-ooui' );\n\tif ( !data ) {\n\t\tthrow new Error( 'No infusion data found: ' + id );\n\t}\n\ttry {\n\t\tdata = JSON.parse( data );\n\t} catch ( _ ) {\n\t\tdata = null;\n\t}\n\tif ( !( data && data._ ) ) {\n\t\tthrow new Error( 'No valid infusion data found: ' + id );\n\t}\n\tif ( data._ === 'Tag' ) {\n\t\t// Special case: this is a raw Tag; wrap existing node, don't rebuild.\n\t\treturn new OO.ui.Element( { $element: $elem } );\n\t}\n\tparts = data._.split( '.' );\n\tcls = OO.getProp.apply( OO, [ window ].concat( parts ) );\n\tif ( cls === undefined ) {\n\t\t// The PHP output might be old and not including the \"OO.ui\" prefix\n\t\t// TODO: Remove this back-compat after next major release\n\t\tcls = OO.getProp.apply( OO, [ OO.ui ].concat( parts ) );\n\t\tif ( cls === undefined ) {\n\t\t\tthrow new Error( 'Unknown widget type: id: ' + id + ', class: ' + data._ );\n\t\t}\n\t}\n\n\t// Verify that we're creating an OO.ui.Element instance\n\tparent = cls.parent;\n\n\twhile ( parent !== undefined ) {\n\t\tif ( parent === OO.ui.Element ) {\n\t\t\t// Safe\n\t\t\tbreak;\n\t\t}\n\n\t\tparent = parent.parent;\n\t}\n\n\tif ( parent !== OO.ui.Element ) {\n\t\tthrow new Error( 'Unknown widget type: id: ' + id + ', class: ' + data._ );\n\t}\n\n\tif ( domPromise === false ) {\n\t\ttop = $.Deferred();\n\t\tdomPromise = top.promise();\n\t}\n\t$elem.data( 'ooui-infused', true ); // prevent loops\n\tdata.id = id; // implicit\n\tinfusedChildren = [];\n\tdata = OO.copy( data, null, function deserialize( value ) {\n\t\tvar infused;\n\t\tif ( OO.isPlainObject( value ) ) {\n\t\t\tif ( value.tag ) {\n\t\t\t\tinfused = OO.ui.Element.static.unsafeInfuse( value.tag, domPromise );\n\t\t\t\tinfusedChildren.push( infused );\n\t\t\t\t// Flatten the structure\n\t\t\t\tinfusedChildren.push.apply( infusedChildren, infused.$element.data( 'ooui-infused-children' ) || [] );\n\t\t\t\tinfused.$element.removeData( 'ooui-infused-children' );\n\t\t\t\treturn infused;\n\t\t\t}\n\t\t\tif ( value.html !== undefined ) {\n\t\t\t\treturn new OO.ui.HtmlSnippet( value.html );\n\t\t\t}\n\t\t}\n\t} );\n\t// allow widgets to reuse parts of the DOM\n\tdata = cls.static.reusePreInfuseDOM( $elem[ 0 ], data );\n\t// pick up dynamic state, like focus, value of form inputs, scroll position, etc.\n\tstate = cls.static.gatherPreInfuseState( $elem[ 0 ], data );\n\t// rebuild widget\n\t// eslint-disable-next-line new-cap\n\tobj = new cls( data );\n\t// now replace old DOM with this new DOM.\n\tif ( top ) {\n\t\t// An efficient constructor might be able to reuse the entire DOM tree of the original element,\n\t\t// so only mutate the DOM if we need to.\n\t\tif ( $elem[ 0 ] !== obj.$element[ 0 ] ) {\n\t\t\t$elem.replaceWith( obj.$element );\n\t\t\t// This element is now gone from the DOM, but if anyone is holding a reference to it,\n\t\t\t// let's allow them to OO.ui.infuse() it and do what they expect (T105828).\n\t\t\t// Do not use jQuery.data(), as using it on detached nodes leaks memory in 1.x line by design.\n\t\t\t$elem[ 0 ].oouiInfused = obj.$element;\n\t\t}\n\t\ttop.resolve();\n\t}\n\tobj.$element.data( 'ooui-infused', obj );\n\tobj.$element.data( 'ooui-infused-children', infusedChildren );\n\t// set the 'data-ooui' attribute so we can identify infused widgets\n\tobj.$element.attr( 'data-ooui', '' );\n\t// restore dynamic state after the new element is inserted into DOM\n\tdomPromise.done( obj.restorePreInfuseState.bind( obj, state ) );\n\treturn obj;\n};\n\n/**\n * Pick out parts of `node`'s DOM to be reused when infusing a widget.\n *\n * This method **must not** make any changes to the DOM, only find interesting pieces and add them\n * to `config` (which should then be returned). Actual DOM juggling should then be done by the\n * constructor, which will be given the enhanced config.\n *\n * @protected\n * @param {HTMLElement} node\n * @param {Object} config\n * @return {Object}\n */\nOO.ui.Element.static.reusePreInfuseDOM = function ( node, config ) {\n\treturn config;\n};\n\n/**\n * Gather the dynamic state (focus, value of form inputs, scroll position, etc.) of an HTML DOM node\n * (and its children) that represent an Element of the same class and the given configuration,\n * generated by the PHP implementation.\n *\n * This method is called just before `node` is detached from the DOM. The return value of this\n * function will be passed to #restorePreInfuseState after the newly created widget's #$element\n * is inserted into DOM to replace `node`.\n *\n * @protected\n * @param {HTMLElement} node\n * @param {Object} config\n * @return {Object}\n */\nOO.ui.Element.static.gatherPreInfuseState = function () {\n\treturn {};\n};\n\n/**\n * Get a jQuery function within a specific document.\n *\n * @static\n * @param {jQuery|HTMLElement|HTMLDocument|Window} context Context to bind the function to\n * @param {jQuery} [$iframe] HTML iframe element that contains the document, omit if document is\n *   not in an iframe\n * @return {Function} Bound jQuery function\n */\nOO.ui.Element.static.getJQuery = function ( context, $iframe ) {\n\tfunction wrapper( selector ) {\n\t\treturn $( selector, wrapper.context );\n\t}\n\n\twrapper.context = this.getDocument( context );\n\n\tif ( $iframe ) {\n\t\twrapper.$iframe = $iframe;\n\t}\n\n\treturn wrapper;\n};\n\n/**\n * Get the document of an element.\n *\n * @static\n * @param {jQuery|HTMLElement|HTMLDocument|Window} obj Object to get the document for\n * @return {HTMLDocument|null} Document object\n */\nOO.ui.Element.static.getDocument = function ( obj ) {\n\t// jQuery - selections created \"offscreen\" won't have a context, so .context isn't reliable\n\treturn ( obj[ 0 ] && obj[ 0 ].ownerDocument ) ||\n\t\t// Empty jQuery selections might have a context\n\t\tobj.context ||\n\t\t// HTMLElement\n\t\tobj.ownerDocument ||\n\t\t// Window\n\t\tobj.document ||\n\t\t// HTMLDocument\n\t\t( obj.nodeType === Node.DOCUMENT_NODE && obj ) ||\n\t\tnull;\n};\n\n/**\n * Get the window of an element or document.\n *\n * @static\n * @param {jQuery|HTMLElement|HTMLDocument|Window} obj Context to get the window for\n * @return {Window} Window object\n */\nOO.ui.Element.static.getWindow = function ( obj ) {\n\tvar doc = this.getDocument( obj );\n\treturn doc.defaultView;\n};\n\n/**\n * Get the direction of an element or document.\n *\n * @static\n * @param {jQuery|HTMLElement|HTMLDocument|Window} obj Context to get the direction for\n * @return {string} Text direction, either 'ltr' or 'rtl'\n */\nOO.ui.Element.static.getDir = function ( obj ) {\n\tvar isDoc, isWin;\n\n\tif ( obj instanceof jQuery ) {\n\t\tobj = obj[ 0 ];\n\t}\n\tisDoc = obj.nodeType === Node.DOCUMENT_NODE;\n\tisWin = obj.document !== undefined;\n\tif ( isDoc || isWin ) {\n\t\tif ( isWin ) {\n\t\t\tobj = obj.document;\n\t\t}\n\t\tobj = obj.body;\n\t}\n\treturn $( obj ).css( 'direction' );\n};\n\n/**\n * Get the offset between two frames.\n *\n * TODO: Make this function not use recursion.\n *\n * @static\n * @param {Window} from Window of the child frame\n * @param {Window} [to=window] Window of the parent frame\n * @param {Object} [offset] Offset to start with, used internally\n * @return {Object} Offset object, containing left and top properties\n */\nOO.ui.Element.static.getFrameOffset = function ( from, to, offset ) {\n\tvar i, len, frames, frame, rect;\n\n\tif ( !to ) {\n\t\tto = window;\n\t}\n\tif ( !offset ) {\n\t\toffset = { top: 0, left: 0 };\n\t}\n\tif ( from.parent === from ) {\n\t\treturn offset;\n\t}\n\n\t// Get iframe element\n\tframes = from.parent.document.getElementsByTagName( 'iframe' );\n\tfor ( i = 0, len = frames.length; i < len; i++ ) {\n\t\tif ( frames[ i ].contentWindow === from ) {\n\t\t\tframe = frames[ i ];\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Recursively accumulate offset values\n\tif ( frame ) {\n\t\trect = frame.getBoundingClientRect();\n\t\toffset.left += rect.left;\n\t\toffset.top += rect.top;\n\t\tif ( from !== to ) {\n\t\t\tthis.getFrameOffset( from.parent, offset );\n\t\t}\n\t}\n\treturn offset;\n};\n\n/**\n * Get the offset between two elements.\n *\n * The two elements may be in a different frame, but in that case the frame $element is in must\n * be contained in the frame $anchor is in.\n *\n * @static\n * @param {jQuery} $element Element whose position to get\n * @param {jQuery} $anchor Element to get $element's position relative to\n * @return {Object} Translated position coordinates, containing top and left properties\n */\nOO.ui.Element.static.getRelativePosition = function ( $element, $anchor ) {\n\tvar iframe, iframePos,\n\t\tpos = $element.offset(),\n\t\tanchorPos = $anchor.offset(),\n\t\telementDocument = this.getDocument( $element ),\n\t\tanchorDocument = this.getDocument( $anchor );\n\n\t// If $element isn't in the same document as $anchor, traverse up\n\twhile ( elementDocument !== anchorDocument ) {\n\t\tiframe = elementDocument.defaultView.frameElement;\n\t\tif ( !iframe ) {\n\t\t\tthrow new Error( '$element frame is not contained in $anchor frame' );\n\t\t}\n\t\tiframePos = $( iframe ).offset();\n\t\tpos.left += iframePos.left;\n\t\tpos.top += iframePos.top;\n\t\telementDocument = iframe.ownerDocument;\n\t}\n\tpos.left -= anchorPos.left;\n\tpos.top -= anchorPos.top;\n\treturn pos;\n};\n\n/**\n * Get element border sizes.\n *\n * @static\n * @param {HTMLElement} el Element to measure\n * @return {Object} Dimensions object with `top`, `left`, `bottom` and `right` properties\n */\nOO.ui.Element.static.getBorders = function ( el ) {\n\tvar doc = el.ownerDocument,\n\t\twin = doc.defaultView,\n\t\tstyle = win.getComputedStyle( el, null ),\n\t\t$el = $( el ),\n\t\ttop = parseFloat( style ? style.borderTopWidth : $el.css( 'borderTopWidth' ) ) || 0,\n\t\tleft = parseFloat( style ? style.borderLeftWidth : $el.css( 'borderLeftWidth' ) ) || 0,\n\t\tbottom = parseFloat( style ? style.borderBottomWidth : $el.css( 'borderBottomWidth' ) ) || 0,\n\t\tright = parseFloat( style ? style.borderRightWidth : $el.css( 'borderRightWidth' ) ) || 0;\n\n\treturn {\n\t\ttop: top,\n\t\tleft: left,\n\t\tbottom: bottom,\n\t\tright: right\n\t};\n};\n\n/**\n * Get dimensions of an element or window.\n *\n * @static\n * @param {HTMLElement|Window} el Element to measure\n * @return {Object} Dimensions object with `borders`, `scroll`, `scrollbar` and `rect` properties\n */\nOO.ui.Element.static.getDimensions = function ( el ) {\n\tvar $el, $win,\n\t\tdoc = el.ownerDocument || el.document,\n\t\twin = doc.defaultView;\n\n\tif ( win === el || el === doc.documentElement ) {\n\t\t$win = $( win );\n\t\treturn {\n\t\t\tborders: { top: 0, left: 0, bottom: 0, right: 0 },\n\t\t\tscroll: {\n\t\t\t\ttop: $win.scrollTop(),\n\t\t\t\tleft: $win.scrollLeft()\n\t\t\t},\n\t\t\tscrollbar: { right: 0, bottom: 0 },\n\t\t\trect: {\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tbottom: $win.innerHeight(),\n\t\t\t\tright: $win.innerWidth()\n\t\t\t}\n\t\t};\n\t} else {\n\t\t$el = $( el );\n\t\treturn {\n\t\t\tborders: this.getBorders( el ),\n\t\t\tscroll: {\n\t\t\t\ttop: $el.scrollTop(),\n\t\t\t\tleft: $el.scrollLeft()\n\t\t\t},\n\t\t\tscrollbar: {\n\t\t\t\tright: $el.innerWidth() - el.clientWidth,\n\t\t\t\tbottom: $el.innerHeight() - el.clientHeight\n\t\t\t},\n\t\t\trect: el.getBoundingClientRect()\n\t\t};\n\t}\n};\n\n/**\n * Get the number of pixels that an element's content is scrolled to the left.\n *\n * Adapted from <https://github.com/othree/jquery.rtl-scroll-type>.\n * Original code copyright 2012 Wei-Ko Kao, licensed under the MIT License.\n *\n * This function smooths out browser inconsistencies (nicely described in the README at\n * <https://github.com/othree/jquery.rtl-scroll-type>) and produces a result consistent\n * with Firefox's 'scrollLeft', which seems the sanest.\n *\n * @static\n * @method\n * @param {HTMLElement|Window} el Element to measure\n * @return {number} Scroll position from the left.\n *  If the element's direction is LTR, this is a positive number between `0` (initial scroll position)\n *  and `el.scrollWidth - el.clientWidth` (furthest possible scroll position).\n *  If the element's direction is RTL, this is a negative number between `0` (initial scroll position)\n *  and `-el.scrollWidth + el.clientWidth` (furthest possible scroll position).\n */\nOO.ui.Element.static.getScrollLeft = ( function () {\n\tvar rtlScrollType = null;\n\n\tfunction test() {\n\t\tvar $definer = $( '<div dir=\"rtl\" style=\"font-size: 14px; width: 1px; height: 1px; position: absolute; top: -1000px; overflow: scroll\">A</div>' ),\n\t\t\tdefiner = $definer[ 0 ];\n\n\t\t$definer.appendTo( 'body' );\n\t\tif ( definer.scrollLeft > 0 ) {\n\t\t\t// Safari, Chrome\n\t\t\trtlScrollType = 'default';\n\t\t} else {\n\t\t\tdefiner.scrollLeft = 1;\n\t\t\tif ( definer.scrollLeft === 0 ) {\n\t\t\t\t// Firefox, old Opera\n\t\t\t\trtlScrollType = 'negative';\n\t\t\t} else {\n\t\t\t\t// Internet Explorer, Edge\n\t\t\t\trtlScrollType = 'reverse';\n\t\t\t}\n\t\t}\n\t\t$definer.remove();\n\t}\n\n\treturn function getScrollLeft( el ) {\n\t\tvar isRoot = el.window === el ||\n\t\t\t\tel === el.ownerDocument.body ||\n\t\t\t\tel === el.ownerDocument.documentElement,\n\t\t\tscrollLeft = isRoot ? $( window ).scrollLeft() : el.scrollLeft,\n\t\t\t// All browsers use the correct scroll type ('negative') on the root, so don't\n\t\t\t// do any fixups when looking at the root element\n\t\t\tdirection = isRoot ? 'ltr' : $( el ).css( 'direction' );\n\n\t\tif ( direction === 'rtl' ) {\n\t\t\tif ( rtlScrollType === null ) {\n\t\t\t\ttest();\n\t\t\t}\n\t\t\tif ( rtlScrollType === 'reverse' ) {\n\t\t\t\tscrollLeft = -scrollLeft;\n\t\t\t} else if ( rtlScrollType === 'default' ) {\n\t\t\t\tscrollLeft = scrollLeft - el.scrollWidth + el.clientWidth;\n\t\t\t}\n\t\t}\n\n\t\treturn scrollLeft;\n\t};\n}() );\n\n/**\n * Get the root scrollable element of given element's document.\n *\n * On Blink-based browsers (Chrome etc.), `document.documentElement` can't be used to get or set\n * the scrollTop property; instead we have to use `document.body`. Changing and testing the value\n * lets us use 'body' or 'documentElement' based on what is working.\n *\n * https://code.google.com/p/chromium/issues/detail?id=303131\n *\n * @static\n * @param {HTMLElement} el Element to find root scrollable parent for\n * @return {HTMLElement} Scrollable parent, `document.body` or `document.documentElement`\n *     depending on browser\n */\nOO.ui.Element.static.getRootScrollableElement = function ( el ) {\n\tvar scrollTop, body;\n\n\tif ( OO.ui.scrollableElement === undefined ) {\n\t\tbody = el.ownerDocument.body;\n\t\tscrollTop = body.scrollTop;\n\t\tbody.scrollTop = 1;\n\n\t\tif ( body.scrollTop === 1 ) {\n\t\t\tbody.scrollTop = scrollTop;\n\t\t\tOO.ui.scrollableElement = 'body';\n\t\t} else {\n\t\t\tOO.ui.scrollableElement = 'documentElement';\n\t\t}\n\t}\n\n\treturn el.ownerDocument[ OO.ui.scrollableElement ];\n};\n\n/**\n * Get closest scrollable container.\n *\n * Traverses up until either a scrollable element or the root is reached, in which case the root\n * scrollable element will be returned (see #getRootScrollableElement).\n *\n * @static\n * @param {HTMLElement} el Element to find scrollable container for\n * @param {string} [dimension] Dimension of scrolling to look for; `x`, `y` or omit for either\n * @return {HTMLElement} Closest scrollable container\n */\nOO.ui.Element.static.getClosestScrollableContainer = function ( el, dimension ) {\n\tvar i, val,\n\t\t// Browsers do not correctly return the computed value of 'overflow' when 'overflow-x' and\n\t\t// 'overflow-y' have different values, so we need to check the separate properties.\n\t\tprops = [ 'overflow-x', 'overflow-y' ],\n\t\t$parent = $( el ).parent();\n\n\tif ( dimension === 'x' || dimension === 'y' ) {\n\t\tprops = [ 'overflow-' + dimension ];\n\t}\n\n\t// Special case for the document root (which doesn't really have any scrollable container, since\n\t// it is the ultimate scrollable container, but this is probably saner than null or exception)\n\tif ( $( el ).is( 'html, body' ) ) {\n\t\treturn this.getRootScrollableElement( el );\n\t}\n\n\twhile ( $parent.length ) {\n\t\tif ( $parent[ 0 ] === this.getRootScrollableElement( el ) ) {\n\t\t\treturn $parent[ 0 ];\n\t\t}\n\t\ti = props.length;\n\t\twhile ( i-- ) {\n\t\t\tval = $parent.css( props[ i ] );\n\t\t\t// We assume that elements with 'overflow' (in any direction) set to 'hidden' will never be\n\t\t\t// scrolled in that direction, but they can actually be scrolled programatically. The user can\n\t\t\t// unintentionally perform a scroll in such case even if the application doesn't scroll\n\t\t\t// programatically, e.g. when jumping to an anchor, or when using built-in find functionality.\n\t\t\t// This could cause funny issues...\n\t\t\tif ( val === 'auto' || val === 'scroll' ) {\n\t\t\t\treturn $parent[ 0 ];\n\t\t\t}\n\t\t}\n\t\t$parent = $parent.parent();\n\t}\n\t// The element is unattached... return something mostly sane\n\treturn this.getRootScrollableElement( el );\n};\n\n/**\n * Scroll element into view.\n *\n * @static\n * @param {HTMLElement} el Element to scroll into view\n * @param {Object} [config] Configuration options\n * @param {string} [config.duration='fast'] jQuery animation duration value\n * @param {string} [config.direction] Scroll in only one direction, e.g. 'x' or 'y', omit\n *  to scroll in both directions\n * @return {jQuery.Promise} Promise which resolves when the scroll is complete\n */\nOO.ui.Element.static.scrollIntoView = function ( el, config ) {\n\tvar position, animations, container, $container, elementDimensions, containerDimensions, $window,\n\t\tdeferred = $.Deferred();\n\n\t// Configuration initialization\n\tconfig = config || {};\n\n\tanimations = {};\n\tcontainer = this.getClosestScrollableContainer( el, config.direction );\n\t$container = $( container );\n\telementDimensions = this.getDimensions( el );\n\tcontainerDimensions = this.getDimensions( container );\n\t$window = $( this.getWindow( el ) );\n\n\t// Compute the element's position relative to the container\n\tif ( $container.is( 'html, body' ) ) {\n\t\t// If the scrollable container is the root, this is easy\n\t\tposition = {\n\t\t\ttop: elementDimensions.rect.top,\n\t\t\tbottom: $window.innerHeight() - elementDimensions.rect.bottom,\n\t\t\tleft: elementDimensions.rect.left,\n\t\t\tright: $window.innerWidth() - elementDimensions.rect.right\n\t\t};\n\t} else {\n\t\t// Otherwise, we have to subtract el's coordinates from container's coordinates\n\t\tposition = {\n\t\t\ttop: elementDimensions.rect.top - ( containerDimensions.rect.top + containerDimensions.borders.top ),\n\t\t\tbottom: containerDimensions.rect.bottom - containerDimensions.borders.bottom - containerDimensions.scrollbar.bottom - elementDimensions.rect.bottom,\n\t\t\tleft: elementDimensions.rect.left - ( containerDimensions.rect.left + containerDimensions.borders.left ),\n\t\t\tright: containerDimensions.rect.right - containerDimensions.borders.right - containerDimensions.scrollbar.right - elementDimensions.rect.right\n\t\t};\n\t}\n\n\tif ( !config.direction || config.direction === 'y' ) {\n\t\tif ( position.top < 0 ) {\n\t\t\tanimations.scrollTop = containerDimensions.scroll.top + position.top;\n\t\t} else if ( position.top > 0 && position.bottom < 0 ) {\n\t\t\tanimations.scrollTop = containerDimensions.scroll.top + Math.min( position.top, -position.bottom );\n\t\t}\n\t}\n\tif ( !config.direction || config.direction === 'x' ) {\n\t\tif ( position.left < 0 ) {\n\t\t\tanimations.scrollLeft = containerDimensions.scroll.left + position.left;\n\t\t} else if ( position.left > 0 && position.right < 0 ) {\n\t\t\tanimations.scrollLeft = containerDimensions.scroll.left + Math.min( position.left, -position.right );\n\t\t}\n\t}\n\tif ( !$.isEmptyObject( animations ) ) {\n\t\t$container.stop( true ).animate( animations, config.duration === undefined ? 'fast' : config.duration );\n\t\t$container.queue( function ( next ) {\n\t\t\tdeferred.resolve();\n\t\t\tnext();\n\t\t} );\n\t} else {\n\t\tdeferred.resolve();\n\t}\n\treturn deferred.promise();\n};\n\n/**\n * Force the browser to reconsider whether it really needs to render scrollbars inside the element\n * and reserve space for them, because it probably doesn't.\n *\n * Workaround primarily for <https://code.google.com/p/chromium/issues/detail?id=387290>, but also\n * similar bugs in other browsers. \"Just\" forcing a reflow is not sufficient in all cases, we need\n * to first actually detach (or hide, but detaching is simpler) all children, *then* force a reflow,\n * and then reattach (or show) them back.\n *\n * @static\n * @param {HTMLElement} el Element to reconsider the scrollbars on\n */\nOO.ui.Element.static.reconsiderScrollbars = function ( el ) {\n\tvar i, len, scrollLeft, scrollTop, nodes = [];\n\t// Save scroll position\n\tscrollLeft = el.scrollLeft;\n\tscrollTop = el.scrollTop;\n\t// Detach all children\n\twhile ( el.firstChild ) {\n\t\tnodes.push( el.firstChild );\n\t\tel.removeChild( el.firstChild );\n\t}\n\t// Force reflow\n\tvoid el.offsetHeight;\n\t// Reattach all children\n\tfor ( i = 0, len = nodes.length; i < len; i++ ) {\n\t\tel.appendChild( nodes[ i ] );\n\t}\n\t// Restore scroll position (no-op if scrollbars disappeared)\n\tel.scrollLeft = scrollLeft;\n\tel.scrollTop = scrollTop;\n};\n\n/* Methods */\n\n/**\n * Toggle visibility of an element.\n *\n * @param {boolean} [show] Make element visible, omit to toggle visibility\n * @fires visible\n * @chainable\n */\nOO.ui.Element.prototype.toggle = function ( show ) {\n\tshow = show === undefined ? !this.visible : !!show;\n\n\tif ( show !== this.isVisible() ) {\n\t\tthis.visible = show;\n\t\tthis.$element.toggleClass( 'oo-ui-element-hidden', !this.visible );\n\t\tthis.emit( 'toggle', show );\n\t}\n\n\treturn this;\n};\n\n/**\n * Check if element is visible.\n *\n * @return {boolean} element is visible\n */\nOO.ui.Element.prototype.isVisible = function () {\n\treturn this.visible;\n};\n\n/**\n * Get element data.\n *\n * @return {Mixed} Element data\n */\nOO.ui.Element.prototype.getData = function () {\n\treturn this.data;\n};\n\n/**\n * Set element data.\n *\n * @param {Mixed} data Element data\n * @chainable\n */\nOO.ui.Element.prototype.setData = function ( data ) {\n\tthis.data = data;\n\treturn this;\n};\n\n/**\n * Set the element has an 'id' attribute.\n *\n * @param {string} id\n * @chainable\n */\nOO.ui.Element.prototype.setElementId = function ( id ) {\n\tthis.elementId = id;\n\tthis.$element.attr( 'id', id );\n\treturn this;\n};\n\n/**\n * Ensure that the element has an 'id' attribute, setting it to an unique value if it's missing,\n * and return its value.\n *\n * @return {string}\n */\nOO.ui.Element.prototype.getElementId = function () {\n\tif ( this.elementId === null ) {\n\t\tthis.setElementId( OO.ui.generateElementId() );\n\t}\n\treturn this.elementId;\n};\n\n/**\n * Check if element supports one or more methods.\n *\n * @param {string|string[]} methods Method or list of methods to check\n * @return {boolean} All methods are supported\n */\nOO.ui.Element.prototype.supports = function ( methods ) {\n\tvar i, len,\n\t\tsupport = 0;\n\n\tmethods = Array.isArray( methods ) ? methods : [ methods ];\n\tfor ( i = 0, len = methods.length; i < len; i++ ) {\n\t\tif ( $.isFunction( this[ methods[ i ] ] ) ) {\n\t\t\tsupport++;\n\t\t}\n\t}\n\n\treturn methods.length === support;\n};\n\n/**\n * Update the theme-provided classes.\n *\n * @localdoc This is called in element mixins and widget classes any time state changes.\n *   Updating is debounced, minimizing overhead of changing multiple attributes and\n *   guaranteeing that theme updates do not occur within an element's constructor\n */\nOO.ui.Element.prototype.updateThemeClasses = function () {\n\tOO.ui.theme.queueUpdateElementClasses( this );\n};\n\n/**\n * Get the HTML tag name.\n *\n * Override this method to base the result on instance information.\n *\n * @return {string} HTML tag name\n */\nOO.ui.Element.prototype.getTagName = function () {\n\treturn this.constructor.static.tagName;\n};\n\n/**\n * Check if the element is attached to the DOM\n *\n * @return {boolean} The element is attached to the DOM\n */\nOO.ui.Element.prototype.isElementAttached = function () {\n\treturn $.contains( this.getElementDocument(), this.$element[ 0 ] );\n};\n\n/**\n * Get the DOM document.\n *\n * @return {HTMLDocument} Document object\n */\nOO.ui.Element.prototype.getElementDocument = function () {\n\t// Don't cache this in other ways either because subclasses could can change this.$element\n\treturn OO.ui.Element.static.getDocument( this.$element );\n};\n\n/**\n * Get the DOM window.\n *\n * @return {Window} Window object\n */\nOO.ui.Element.prototype.getElementWindow = function () {\n\treturn OO.ui.Element.static.getWindow( this.$element );\n};\n\n/**\n * Get closest scrollable container.\n *\n * @return {HTMLElement} Closest scrollable container\n */\nOO.ui.Element.prototype.getClosestScrollableElementContainer = function () {\n\treturn OO.ui.Element.static.getClosestScrollableContainer( this.$element[ 0 ] );\n};\n\n/**\n * Get group element is in.\n *\n * @return {OO.ui.mixin.GroupElement|null} Group element, null if none\n */\nOO.ui.Element.prototype.getElementGroup = function () {\n\treturn this.elementGroup;\n};\n\n/**\n * Set group element is in.\n *\n * @param {OO.ui.mixin.GroupElement|null} group Group element, null if none\n * @chainable\n */\nOO.ui.Element.prototype.setElementGroup = function ( group ) {\n\tthis.elementGroup = group;\n\treturn this;\n};\n\n/**\n * Scroll element into view.\n *\n * @param {Object} [config] Configuration options\n * @return {jQuery.Promise} Promise which resolves when the scroll is complete\n */\nOO.ui.Element.prototype.scrollElementIntoView = function ( config ) {\n\tif (\n\t\t!this.isElementAttached() ||\n\t\t!this.isVisible() ||\n\t\t( this.getElementGroup() && !this.getElementGroup().isVisible() )\n\t) {\n\t\treturn $.Deferred().resolve();\n\t}\n\treturn OO.ui.Element.static.scrollIntoView( this.$element[ 0 ], config );\n};\n\n/**\n * Restore the pre-infusion dynamic state for this widget.\n *\n * This method is called after #$element has been inserted into DOM. The parameter is the return\n * value of #gatherPreInfuseState.\n *\n * @protected\n * @param {Object} state\n */\nOO.ui.Element.prototype.restorePreInfuseState = function () {\n};\n","/**\n * Wraps an HTML snippet for use with configuration values which default\n * to strings.  This bypasses the default html-escaping done to string\n * values.\n *\n * @class\n *\n * @constructor\n * @param {string} [content] HTML content\n */\nOO.ui.HtmlSnippet = function OoUiHtmlSnippet( content ) {\n\t// Properties\n\tthis.content = content;\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.HtmlSnippet );\n\n/* Methods */\n\n/**\n * Render into HTML.\n *\n * @return {string} Unchanged HTML snippet.\n */\nOO.ui.HtmlSnippet.prototype.toString = function () {\n\treturn this.content;\n};\n","/**\n * Layouts are containers for elements and are used to arrange other widgets of arbitrary type in a way\n * that is centrally controlled and can be updated dynamically. Layouts can be, and usually are, combined.\n * See {@link OO.ui.FieldsetLayout FieldsetLayout}, {@link OO.ui.FieldLayout FieldLayout}, {@link OO.ui.FormLayout FormLayout},\n * {@link OO.ui.PanelLayout PanelLayout}, {@link OO.ui.StackLayout StackLayout}, {@link OO.ui.PageLayout PageLayout},\n * {@link OO.ui.HorizontalLayout HorizontalLayout}, and {@link OO.ui.BookletLayout BookletLayout} for more information and examples.\n *\n * @abstract\n * @class\n * @extends OO.ui.Element\n * @mixins OO.EventEmitter\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.Layout = function OoUiLayout( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.Layout.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.EventEmitter.call( this );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-layout' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.Layout, OO.ui.Element );\nOO.mixinClass( OO.ui.Layout, OO.EventEmitter );\n","/**\n * Widgets are compositions of one or more OOjs UI elements that users can both view\n * and interact with. All widgets can be configured and modified via a standard API,\n * and their state can change dynamically according to a model.\n *\n * @abstract\n * @class\n * @extends OO.ui.Element\n * @mixins OO.EventEmitter\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {boolean} [disabled=false] Disable the widget. Disabled widgets cannot be used and their\n *  appearance reflects this state.\n */\nOO.ui.Widget = function OoUiWidget( config ) {\n\t// Initialize config\n\tconfig = $.extend( { disabled: false }, config );\n\n\t// Parent constructor\n\tOO.ui.Widget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.EventEmitter.call( this );\n\n\t// Properties\n\tthis.disabled = null;\n\tthis.wasDisabled = null;\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-widget' );\n\tthis.setDisabled( !!config.disabled );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.Widget, OO.ui.Element );\nOO.mixinClass( OO.ui.Widget, OO.EventEmitter );\n\n/* Events */\n\n/**\n * @event disable\n *\n * A 'disable' event is emitted when the disabled state of the widget changes\n * (i.e. on disable **and** enable).\n *\n * @param {boolean} disabled Widget is disabled\n */\n\n/**\n * @event toggle\n *\n * A 'toggle' event is emitted when the visibility of the widget changes.\n *\n * @param {boolean} visible Widget is visible\n */\n\n/* Methods */\n\n/**\n * Check if the widget is disabled.\n *\n * @return {boolean} Widget is disabled\n */\nOO.ui.Widget.prototype.isDisabled = function () {\n\treturn this.disabled;\n};\n\n/**\n * Set the 'disabled' state of the widget.\n *\n * When a widget is disabled, it cannot be used and its appearance is updated to reflect this state.\n *\n * @param {boolean} disabled Disable widget\n * @chainable\n */\nOO.ui.Widget.prototype.setDisabled = function ( disabled ) {\n\tvar isDisabled;\n\n\tthis.disabled = !!disabled;\n\tisDisabled = this.isDisabled();\n\tif ( isDisabled !== this.wasDisabled ) {\n\t\tthis.$element.toggleClass( 'oo-ui-widget-disabled', isDisabled );\n\t\tthis.$element.toggleClass( 'oo-ui-widget-enabled', !isDisabled );\n\t\tthis.$element.attr( 'aria-disabled', isDisabled.toString() );\n\t\tthis.emit( 'disable', isDisabled );\n\t\tthis.updateThemeClasses();\n\t}\n\tthis.wasDisabled = isDisabled;\n\n\treturn this;\n};\n\n/**\n * Update the disabled state, in case of changes in parent widget.\n *\n * @chainable\n */\nOO.ui.Widget.prototype.updateDisabled = function () {\n\tthis.setDisabled( this.disabled );\n\treturn this;\n};\n\n/**\n * Get an ID of a labelable node which is part of this widget, if any, to be used for `<label for>`\n * value.\n *\n * If this function returns null, the widget should have a meaningful #simulateLabelClick method\n * instead.\n *\n * @return {string|null} The ID of the labelable element\n */\nOO.ui.Widget.prototype.getInputId = function () {\n\treturn null;\n};\n\n/**\n * Simulate the behavior of clicking on a label (a HTML `<label>` element) bound to this input.\n * HTML only allows `<label>` to act on specific \"labelable\" elements; complex widgets might need to\n * override this method to provide intuitive, accessible behavior.\n *\n * By default, this does nothing. OO.ui.mixin.TabIndexedElement overrides it for focusable widgets.\n * Individual widgets may override it too.\n *\n * This method is called by OO.ui.LabelWidget and OO.ui.FieldLayout. It should not be called\n * directly.\n */\nOO.ui.Widget.prototype.simulateLabelClick = function () {\n};\n","/**\n * Theme logic.\n *\n * @abstract\n * @class\n *\n * @constructor\n */\nOO.ui.Theme = function OoUiTheme() {\n\tthis.elementClassesQueue = [];\n\tthis.debouncedUpdateQueuedElementClasses = OO.ui.debounce( this.updateQueuedElementClasses );\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.Theme );\n\n/* Methods */\n\n/**\n * Get a list of classes to be applied to a widget.\n *\n * The 'on' and 'off' lists combined MUST contain keys for all classes the theme adds or removes,\n * otherwise state transitions will not work properly.\n *\n * @param {OO.ui.Element} element Element for which to get classes\n * @return {Object.<string,string[]>} Categorized class names with `on` and `off` lists\n */\nOO.ui.Theme.prototype.getElementClasses = function () {\n\treturn { on: [], off: [] };\n};\n\n/**\n * Update CSS classes provided by the theme.\n *\n * For elements with theme logic hooks, this should be called any time there's a state change.\n *\n * @param {OO.ui.Element} element Element for which to update classes\n */\nOO.ui.Theme.prototype.updateElementClasses = function ( element ) {\n\tvar $elements = $( [] ),\n\t\tclasses = this.getElementClasses( element );\n\n\tif ( element.$icon ) {\n\t\t$elements = $elements.add( element.$icon );\n\t}\n\tif ( element.$indicator ) {\n\t\t$elements = $elements.add( element.$indicator );\n\t}\n\n\t$elements\n\t\t.removeClass( classes.off.join( ' ' ) )\n\t\t.addClass( classes.on.join( ' ' ) );\n};\n\n/**\n * @private\n */\nOO.ui.Theme.prototype.updateQueuedElementClasses = function () {\n\tvar i;\n\tfor ( i = 0; i < this.elementClassesQueue.length; i++ ) {\n\t\tthis.updateElementClasses( this.elementClassesQueue[ i ] );\n\t}\n\t// Clear the queue\n\tthis.elementClassesQueue = [];\n};\n\n/**\n * Queue #updateElementClasses to be called for this element.\n *\n * @localdoc QUnit tests override this method to directly call #queueUpdateElementClasses,\n *   to make them synchronous.\n *\n * @param {OO.ui.Element} element Element for which to update classes\n */\nOO.ui.Theme.prototype.queueUpdateElementClasses = function ( element ) {\n\t// Keep items in the queue unique. Use lastIndexOf to start checking from the end because that's\n\t// the most common case (this method is often called repeatedly for the same element).\n\tif ( this.elementClassesQueue.lastIndexOf( element ) !== -1 ) {\n\t\treturn;\n\t}\n\tthis.elementClassesQueue.push( element );\n\tthis.debouncedUpdateQueuedElementClasses();\n};\n\n/**\n * Get the transition duration in milliseconds for dialogs opening/closing\n *\n * The dialog should be fully rendered this many milliseconds after the\n * ready process has executed.\n *\n * @return {number} Transition duration in milliseconds\n */\nOO.ui.Theme.prototype.getDialogTransitionDuration = function () {\n\treturn 0;\n};\n","/**\n * The TabIndexedElement class is an attribute mixin used to add additional functionality to an\n * element created by another class. The mixin provides a ‘tabIndex’ property, which specifies the\n * order in which users will navigate through the focusable elements via the \"tab\" key.\n *\n *     @example\n *     // TabIndexedElement is mixed into the ButtonWidget class\n *     // to provide a tabIndex property.\n *     var button1 = new OO.ui.ButtonWidget( {\n *         label: 'fourth',\n *         tabIndex: 4\n *     } );\n *     var button2 = new OO.ui.ButtonWidget( {\n *         label: 'second',\n *         tabIndex: 2\n *     } );\n *     var button3 = new OO.ui.ButtonWidget( {\n *         label: 'third',\n *         tabIndex: 3\n *     } );\n *     var button4 = new OO.ui.ButtonWidget( {\n *         label: 'first',\n *         tabIndex: 1\n *     } );\n *     $( 'body' ).append( button1.$element, button2.$element, button3.$element, button4.$element );\n *\n * @abstract\n * @class\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {jQuery} [$tabIndexed] The element that should use the tabindex functionality. By default,\n *  the functionality is applied to the element created by the class ($element). If a different element is specified, the tabindex\n *  functionality will be applied to it instead.\n * @cfg {number|null} [tabIndex=0] Number that specifies the element’s position in the tab-navigation\n *  order (e.g., 1 for the first focusable element). Use 0 to use the default navigation order; use -1\n *  to remove the element from the tab-navigation flow.\n */\nOO.ui.mixin.TabIndexedElement = function OoUiMixinTabIndexedElement( config ) {\n\t// Configuration initialization\n\tconfig = $.extend( { tabIndex: 0 }, config );\n\n\t// Properties\n\tthis.$tabIndexed = null;\n\tthis.tabIndex = null;\n\n\t// Events\n\tthis.connect( this, { disable: 'onTabIndexedElementDisable' } );\n\n\t// Initialization\n\tthis.setTabIndex( config.tabIndex );\n\tthis.setTabIndexedElement( config.$tabIndexed || this.$element );\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.mixin.TabIndexedElement );\n\n/* Methods */\n\n/**\n * Set the element that should use the tabindex functionality.\n *\n * This method is used to retarget a tabindex mixin so that its functionality applies\n * to the specified element. If an element is currently using the functionality, the mixin’s\n * effect on that element is removed before the new element is set up.\n *\n * @param {jQuery} $tabIndexed Element that should use the tabindex functionality\n * @chainable\n */\nOO.ui.mixin.TabIndexedElement.prototype.setTabIndexedElement = function ( $tabIndexed ) {\n\tvar tabIndex = this.tabIndex;\n\t// Remove attributes from old $tabIndexed\n\tthis.setTabIndex( null );\n\t// Force update of new $tabIndexed\n\tthis.$tabIndexed = $tabIndexed;\n\tthis.tabIndex = tabIndex;\n\treturn this.updateTabIndex();\n};\n\n/**\n * Set the value of the tabindex.\n *\n * @param {number|null} tabIndex Tabindex value, or `null` for no tabindex\n * @chainable\n */\nOO.ui.mixin.TabIndexedElement.prototype.setTabIndex = function ( tabIndex ) {\n\ttabIndex = typeof tabIndex === 'number' ? tabIndex : null;\n\n\tif ( this.tabIndex !== tabIndex ) {\n\t\tthis.tabIndex = tabIndex;\n\t\tthis.updateTabIndex();\n\t}\n\n\treturn this;\n};\n\n/**\n * Update the `tabindex` attribute, in case of changes to tab index or\n * disabled state.\n *\n * @private\n * @chainable\n */\nOO.ui.mixin.TabIndexedElement.prototype.updateTabIndex = function () {\n\tif ( this.$tabIndexed ) {\n\t\tif ( this.tabIndex !== null ) {\n\t\t\t// Do not index over disabled elements\n\t\t\tthis.$tabIndexed.attr( {\n\t\t\t\ttabindex: this.isDisabled() ? -1 : this.tabIndex,\n\t\t\t\t// Support: ChromeVox and NVDA\n\t\t\t\t// These do not seem to inherit aria-disabled from parent elements\n\t\t\t\t'aria-disabled': this.isDisabled().toString()\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.$tabIndexed.removeAttr( 'tabindex aria-disabled' );\n\t\t}\n\t}\n\treturn this;\n};\n\n/**\n * Handle disable events.\n *\n * @private\n * @param {boolean} disabled Element is disabled\n */\nOO.ui.mixin.TabIndexedElement.prototype.onTabIndexedElementDisable = function () {\n\tthis.updateTabIndex();\n};\n\n/**\n * Get the value of the tabindex.\n *\n * @return {number|null} Tabindex value\n */\nOO.ui.mixin.TabIndexedElement.prototype.getTabIndex = function () {\n\treturn this.tabIndex;\n};\n\n/**\n * Get an ID of a focusable element of this widget, if any, to be used for `<label for>` value.\n *\n * If the element already has an ID then that is returned, otherwise unique ID is\n * generated, set on the element, and returned.\n *\n * @return {string|null} The ID of the focusable element\n */\nOO.ui.mixin.TabIndexedElement.prototype.getInputId = function () {\n\tvar id;\n\n\tif ( !this.$tabIndexed ) {\n\t\treturn null;\n\t}\n\tif ( !this.isLabelableNode( this.$tabIndexed ) ) {\n\t\treturn null;\n\t}\n\n\tid = this.$tabIndexed.attr( 'id' );\n\tif ( id === undefined ) {\n\t\tid = OO.ui.generateElementId();\n\t\tthis.$tabIndexed.attr( 'id', id );\n\t}\n\n\treturn id;\n};\n\n/**\n * Whether the node is 'labelable' according to the HTML spec\n * (i.e., whether it can be interacted with through a `<label for=\"…\">`).\n * See: <https://html.spec.whatwg.org/multipage/forms.html#category-label>.\n *\n * @private\n * @param {jQuery} $node\n * @return {boolean}\n */\nOO.ui.mixin.TabIndexedElement.prototype.isLabelableNode = function ( $node ) {\n\tvar\n\t\tlabelableTags = [ 'button', 'meter', 'output', 'progress', 'select', 'textarea' ],\n\t\ttagName = $node.prop( 'tagName' ).toLowerCase();\n\n\tif ( tagName === 'input' && $node.attr( 'type' ) !== 'hidden' ) {\n\t\treturn true;\n\t}\n\tif ( labelableTags.indexOf( tagName ) !== -1 ) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n/**\n * Focus this element.\n *\n * @chainable\n */\nOO.ui.mixin.TabIndexedElement.prototype.focus = function () {\n\tif ( !this.isDisabled() ) {\n\t\tthis.$tabIndexed.focus();\n\t}\n\treturn this;\n};\n\n/**\n * Blur this element.\n *\n * @chainable\n */\nOO.ui.mixin.TabIndexedElement.prototype.blur = function () {\n\tthis.$tabIndexed.blur();\n\treturn this;\n};\n\n/**\n * @inheritdoc OO.ui.Widget\n */\nOO.ui.mixin.TabIndexedElement.prototype.simulateLabelClick = function () {\n\tthis.focus();\n};\n","/**\n * ButtonElement is often mixed into other classes to generate a button, which is a clickable\n * interface element that can be configured with access keys for accessibility.\n * See the [OOjs UI documentation on MediaWiki] [1] for examples.\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Buttons_and_Switches#Buttons\n *\n * @abstract\n * @class\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {jQuery} [$button] The button element created by the class.\n *  If this configuration is omitted, the button element will use a generated `<a>`.\n * @cfg {boolean} [framed=true] Render the button with a frame\n */\nOO.ui.mixin.ButtonElement = function OoUiMixinButtonElement( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties\n\tthis.$button = null;\n\tthis.framed = null;\n\tthis.active = config.active !== undefined && config.active;\n\tthis.onMouseUpHandler = this.onMouseUp.bind( this );\n\tthis.onMouseDownHandler = this.onMouseDown.bind( this );\n\tthis.onKeyDownHandler = this.onKeyDown.bind( this );\n\tthis.onKeyUpHandler = this.onKeyUp.bind( this );\n\tthis.onClickHandler = this.onClick.bind( this );\n\tthis.onKeyPressHandler = this.onKeyPress.bind( this );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-buttonElement' );\n\tthis.toggleFramed( config.framed === undefined || config.framed );\n\tthis.setButtonElement( config.$button || $( '<a>' ) );\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.mixin.ButtonElement );\n\n/* Static Properties */\n\n/**\n * Cancel mouse down events.\n *\n * This property is usually set to `true` to prevent the focus from changing when the button is clicked.\n * Classes such as {@link OO.ui.mixin.DraggableElement DraggableElement} and {@link OO.ui.ButtonOptionWidget ButtonOptionWidget}\n * use a value of `false` so that dragging behavior is possible and mousedown events can be handled by a\n * parent widget.\n *\n * @static\n * @inheritable\n * @property {boolean}\n */\nOO.ui.mixin.ButtonElement.static.cancelButtonMouseDownEvents = true;\n\n/* Events */\n\n/**\n * A 'click' event is emitted when the button element is clicked.\n *\n * @event click\n */\n\n/* Methods */\n\n/**\n * Set the button element.\n *\n * This method is used to retarget a button mixin so that its functionality applies to\n * the specified button element instead of the one created by the class. If a button element\n * is already set, the method will remove the mixin’s effect on that element.\n *\n * @param {jQuery} $button Element to use as button\n */\nOO.ui.mixin.ButtonElement.prototype.setButtonElement = function ( $button ) {\n\tif ( this.$button ) {\n\t\tthis.$button\n\t\t\t.removeClass( 'oo-ui-buttonElement-button' )\n\t\t\t.removeAttr( 'role accesskey' )\n\t\t\t.off( {\n\t\t\t\tmousedown: this.onMouseDownHandler,\n\t\t\t\tkeydown: this.onKeyDownHandler,\n\t\t\t\tclick: this.onClickHandler,\n\t\t\t\tkeypress: this.onKeyPressHandler\n\t\t\t} );\n\t}\n\n\tthis.$button = $button\n\t\t.addClass( 'oo-ui-buttonElement-button' )\n\t\t.on( {\n\t\t\tmousedown: this.onMouseDownHandler,\n\t\t\tkeydown: this.onKeyDownHandler,\n\t\t\tclick: this.onClickHandler,\n\t\t\tkeypress: this.onKeyPressHandler\n\t\t} );\n\n\t// Add `role=\"button\"` on `<a>` elements, where it's needed\n\t// `toUppercase()` is added for XHTML documents\n\tif ( this.$button.prop( 'tagName' ).toUpperCase() === 'A' ) {\n\t\tthis.$button.attr( 'role', 'button' );\n\t}\n};\n\n/**\n * Handles mouse down events.\n *\n * @protected\n * @param {jQuery.Event} e Mouse down event\n */\nOO.ui.mixin.ButtonElement.prototype.onMouseDown = function ( e ) {\n\tif ( this.isDisabled() || e.which !== OO.ui.MouseButtons.LEFT ) {\n\t\treturn;\n\t}\n\tthis.$element.addClass( 'oo-ui-buttonElement-pressed' );\n\t// Run the mouseup handler no matter where the mouse is when the button is let go, so we can\n\t// reliably remove the pressed class\n\tthis.getElementDocument().addEventListener( 'mouseup', this.onMouseUpHandler, true );\n\t// Prevent change of focus unless specifically configured otherwise\n\tif ( this.constructor.static.cancelButtonMouseDownEvents ) {\n\t\treturn false;\n\t}\n};\n\n/**\n * Handles mouse up events.\n *\n * @protected\n * @param {MouseEvent} e Mouse up event\n */\nOO.ui.mixin.ButtonElement.prototype.onMouseUp = function ( e ) {\n\tif ( this.isDisabled() || e.which !== OO.ui.MouseButtons.LEFT ) {\n\t\treturn;\n\t}\n\tthis.$element.removeClass( 'oo-ui-buttonElement-pressed' );\n\t// Stop listening for mouseup, since we only needed this once\n\tthis.getElementDocument().removeEventListener( 'mouseup', this.onMouseUpHandler, true );\n};\n\n/**\n * Handles mouse click events.\n *\n * @protected\n * @param {jQuery.Event} e Mouse click event\n * @fires click\n */\nOO.ui.mixin.ButtonElement.prototype.onClick = function ( e ) {\n\tif ( !this.isDisabled() && e.which === OO.ui.MouseButtons.LEFT ) {\n\t\tif ( this.emit( 'click' ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n};\n\n/**\n * Handles key down events.\n *\n * @protected\n * @param {jQuery.Event} e Key down event\n */\nOO.ui.mixin.ButtonElement.prototype.onKeyDown = function ( e ) {\n\tif ( this.isDisabled() || ( e.which !== OO.ui.Keys.SPACE && e.which !== OO.ui.Keys.ENTER ) ) {\n\t\treturn;\n\t}\n\tthis.$element.addClass( 'oo-ui-buttonElement-pressed' );\n\t// Run the keyup handler no matter where the key is when the button is let go, so we can\n\t// reliably remove the pressed class\n\tthis.getElementDocument().addEventListener( 'keyup', this.onKeyUpHandler, true );\n};\n\n/**\n * Handles key up events.\n *\n * @protected\n * @param {KeyboardEvent} e Key up event\n */\nOO.ui.mixin.ButtonElement.prototype.onKeyUp = function ( e ) {\n\tif ( this.isDisabled() || ( e.which !== OO.ui.Keys.SPACE && e.which !== OO.ui.Keys.ENTER ) ) {\n\t\treturn;\n\t}\n\tthis.$element.removeClass( 'oo-ui-buttonElement-pressed' );\n\t// Stop listening for keyup, since we only needed this once\n\tthis.getElementDocument().removeEventListener( 'keyup', this.onKeyUpHandler, true );\n};\n\n/**\n * Handles key press events.\n *\n * @protected\n * @param {jQuery.Event} e Key press event\n * @fires click\n */\nOO.ui.mixin.ButtonElement.prototype.onKeyPress = function ( e ) {\n\tif ( !this.isDisabled() && ( e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER ) ) {\n\t\tif ( this.emit( 'click' ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n};\n\n/**\n * Check if button has a frame.\n *\n * @return {boolean} Button is framed\n */\nOO.ui.mixin.ButtonElement.prototype.isFramed = function () {\n\treturn this.framed;\n};\n\n/**\n * Render the button with or without a frame. Omit the `framed` parameter to toggle the button frame on and off.\n *\n * @param {boolean} [framed] Make button framed, omit to toggle\n * @chainable\n */\nOO.ui.mixin.ButtonElement.prototype.toggleFramed = function ( framed ) {\n\tframed = framed === undefined ? !this.framed : !!framed;\n\tif ( framed !== this.framed ) {\n\t\tthis.framed = framed;\n\t\tthis.$element\n\t\t\t.toggleClass( 'oo-ui-buttonElement-frameless', !framed )\n\t\t\t.toggleClass( 'oo-ui-buttonElement-framed', framed );\n\t\tthis.updateThemeClasses();\n\t}\n\n\treturn this;\n};\n\n/**\n * Set the button's active state.\n *\n * The active state can be set on:\n *\n *  - {@link OO.ui.ButtonOptionWidget ButtonOptionWidget} when it is selected\n *  - {@link OO.ui.ToggleButtonWidget ToggleButtonWidget} when it is toggle on\n *  - {@link OO.ui.ButtonWidget ButtonWidget} when clicking the button would only refresh the page\n *\n * @protected\n * @param {boolean} value Make button active\n * @chainable\n */\nOO.ui.mixin.ButtonElement.prototype.setActive = function ( value ) {\n\tthis.active = !!value;\n\tthis.$element.toggleClass( 'oo-ui-buttonElement-active', this.active );\n\tthis.updateThemeClasses();\n\treturn this;\n};\n\n/**\n * Check if the button is active\n *\n * @protected\n * @return {boolean} The button is active\n */\nOO.ui.mixin.ButtonElement.prototype.isActive = function () {\n\treturn this.active;\n};\n","/**\n * Any OOjs UI widget that contains other widgets (such as {@link OO.ui.ButtonWidget buttons} or\n * {@link OO.ui.OptionWidget options}) mixes in GroupElement. Adding, removing, and clearing\n * items from the group is done through the interface the class provides.\n * For more information, please see the [OOjs UI documentation on MediaWiki] [1].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Elements/Groups\n *\n * @abstract\n * @mixins OO.EmitterList\n * @class\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {jQuery} [$group] The container element created by the class. If this configuration\n *  is omitted, the group element will use a generated `<div>`.\n */\nOO.ui.mixin.GroupElement = function OoUiMixinGroupElement( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Mixin constructors\n\tOO.EmitterList.call( this, config );\n\n\t// Properties\n\tthis.$group = null;\n\n\t// Initialization\n\tthis.setGroupElement( config.$group || $( '<div>' ) );\n};\n\n/* Setup */\n\nOO.mixinClass( OO.ui.mixin.GroupElement, OO.EmitterList );\n\n/* Events */\n\n/**\n * @event change\n *\n * A change event is emitted when the set of selected items changes.\n *\n * @param {OO.ui.Element[]} items Items currently in the group\n */\n\n/* Methods */\n\n/**\n * Set the group element.\n *\n * If an element is already set, items will be moved to the new element.\n *\n * @param {jQuery} $group Element to use as group\n */\nOO.ui.mixin.GroupElement.prototype.setGroupElement = function ( $group ) {\n\tvar i, len;\n\n\tthis.$group = $group;\n\tfor ( i = 0, len = this.items.length; i < len; i++ ) {\n\t\tthis.$group.append( this.items[ i ].$element );\n\t}\n};\n\n/**\n * Get an item by its data.\n *\n * Only the first item with matching data will be returned. To return all matching items,\n * use the #getItemsFromData method.\n *\n * @param {Object} data Item data to search for\n * @return {OO.ui.Element|null} Item with equivalent data, `null` if none exists\n */\nOO.ui.mixin.GroupElement.prototype.getItemFromData = function ( data ) {\n\tvar i, len, item,\n\t\thash = OO.getHash( data );\n\n\tfor ( i = 0, len = this.items.length; i < len; i++ ) {\n\t\titem = this.items[ i ];\n\t\tif ( hash === OO.getHash( item.getData() ) ) {\n\t\t\treturn item;\n\t\t}\n\t}\n\n\treturn null;\n};\n\n/**\n * Get items by their data.\n *\n * All items with matching data will be returned. To return only the first match, use the #getItemFromData method instead.\n *\n * @param {Object} data Item data to search for\n * @return {OO.ui.Element[]} Items with equivalent data\n */\nOO.ui.mixin.GroupElement.prototype.getItemsFromData = function ( data ) {\n\tvar i, len, item,\n\t\thash = OO.getHash( data ),\n\t\titems = [];\n\n\tfor ( i = 0, len = this.items.length; i < len; i++ ) {\n\t\titem = this.items[ i ];\n\t\tif ( hash === OO.getHash( item.getData() ) ) {\n\t\t\titems.push( item );\n\t\t}\n\t}\n\n\treturn items;\n};\n\n/**\n * Add items to the group.\n *\n * Items will be added to the end of the group array unless the optional `index` parameter specifies\n * a different insertion point. Adding an existing item will move it to the end of the array or the point specified by the `index`.\n *\n * @param {OO.ui.Element[]} items An array of items to add to the group\n * @param {number} [index] Index of the insertion point\n * @chainable\n */\nOO.ui.mixin.GroupElement.prototype.addItems = function ( items, index ) {\n\t// Mixin method\n\tOO.EmitterList.prototype.addItems.call( this, items, index );\n\n\tthis.emit( 'change', this.getItems() );\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.mixin.GroupElement.prototype.moveItem = function ( items, newIndex ) {\n\t// insertItemElements expects this.items to not have been modified yet, so call before the mixin\n\tthis.insertItemElements( items, newIndex );\n\n\t// Mixin method\n\tnewIndex = OO.EmitterList.prototype.moveItem.call( this, items, newIndex );\n\n\treturn newIndex;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.mixin.GroupElement.prototype.insertItem = function ( item, index ) {\n\titem.setElementGroup( this );\n\tthis.insertItemElements( item, index );\n\n\t// Mixin method\n\tindex = OO.EmitterList.prototype.insertItem.call( this, item, index );\n\n\treturn index;\n};\n\n/**\n * Insert elements into the group\n *\n * @private\n * @param {OO.ui.Element} itemWidget Item to insert\n * @param {number} index Insertion index\n */\nOO.ui.mixin.GroupElement.prototype.insertItemElements = function ( itemWidget, index ) {\n\tif ( index === undefined || index < 0 || index >= this.items.length ) {\n\t\tthis.$group.append( itemWidget.$element );\n\t} else if ( index === 0 ) {\n\t\tthis.$group.prepend( itemWidget.$element );\n\t} else {\n\t\tthis.items[ index ].$element.before( itemWidget.$element );\n\t}\n};\n\n/**\n * Remove the specified items from a group.\n *\n * Removed items are detached (not removed) from the DOM so that they may be reused.\n * To remove all items from a group, you may wish to use the #clearItems method instead.\n *\n * @param {OO.ui.Element[]} items An array of items to remove\n * @chainable\n */\nOO.ui.mixin.GroupElement.prototype.removeItems = function ( items ) {\n\tvar i, len, item, index;\n\n\t// Remove specific items elements\n\tfor ( i = 0, len = items.length; i < len; i++ ) {\n\t\titem = items[ i ];\n\t\tindex = this.items.indexOf( item );\n\t\tif ( index !== -1 ) {\n\t\t\titem.setElementGroup( null );\n\t\t\titem.$element.detach();\n\t\t}\n\t}\n\n\t// Mixin method\n\tOO.EmitterList.prototype.removeItems.call( this, items );\n\n\tthis.emit( 'change', this.getItems() );\n\treturn this;\n};\n\n/**\n * Clear all items from the group.\n *\n * Cleared items are detached from the DOM, not removed, so that they may be reused.\n * To remove only a subset of items from a group, use the #removeItems method.\n *\n * @chainable\n */\nOO.ui.mixin.GroupElement.prototype.clearItems = function () {\n\tvar i, len;\n\n\t// Remove all item elements\n\tfor ( i = 0, len = this.items.length; i < len; i++ ) {\n\t\tthis.items[ i ].setElementGroup( null );\n\t\tthis.items[ i ].$element.detach();\n\t}\n\n\t// Mixin method\n\tOO.EmitterList.prototype.clearItems.call( this );\n\n\tthis.emit( 'change', this.getItems() );\n\treturn this;\n};\n","/**\n * IconElement is often mixed into other classes to generate an icon.\n * Icons are graphics, about the size of normal text. They are used to aid the user\n * in locating a control or to convey information in a space-efficient way. See the\n * [OOjs UI documentation on MediaWiki] [1] for a list of icons\n * included in the library.\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Icons,_Indicators,_and_Labels#Icons\n *\n * @abstract\n * @class\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {jQuery} [$icon] The icon element created by the class. If this configuration is omitted,\n *  the icon element will use a generated `<span>`. To use a different HTML tag, or to specify that\n *  the icon element be set to an existing icon instead of the one generated by this class, set a\n *  value using a jQuery selection. For example:\n *\n *      // Use a <div> tag instead of a <span>\n *     $icon: $(\"<div>\")\n *     // Use an existing icon element instead of the one generated by the class\n *     $icon: this.$element\n *     // Use an icon element from a child widget\n *     $icon: this.childwidget.$element\n * @cfg {Object|string} [icon=''] The symbolic name of the icon (e.g., ‘remove’ or ‘menu’), or a map of\n *  symbolic names.  A map is used for i18n purposes and contains a `default` icon\n *  name and additional names keyed by language code. The `default` name is used when no icon is keyed\n *  by the user's language.\n *\n *  Example of an i18n map:\n *\n *     { default: 'bold-a', en: 'bold-b', de: 'bold-f' }\n *  See the [OOjs UI documentation on MediaWiki] [2] for a list of icons included in the library.\n * [2]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Icons,_Indicators,_and_Labels#Icons\n * @cfg {string|Function} [iconTitle] A text string used as the icon title, or a function that returns title\n *  text. The icon title is displayed when users move the mouse over the icon.\n */\nOO.ui.mixin.IconElement = function OoUiMixinIconElement( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties\n\tthis.$icon = null;\n\tthis.icon = null;\n\tthis.iconTitle = null;\n\n\t// Initialization\n\tthis.setIcon( config.icon || this.constructor.static.icon );\n\tthis.setIconTitle( config.iconTitle || this.constructor.static.iconTitle );\n\tthis.setIconElement( config.$icon || $( '<span>' ) );\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.mixin.IconElement );\n\n/* Static Properties */\n\n/**\n * The symbolic name of the icon (e.g., ‘remove’ or ‘menu’), or a map of symbolic names. A map is used\n * for i18n purposes and contains a `default` icon name and additional names keyed by\n * language code. The `default` name is used when no icon is keyed by the user's language.\n *\n * Example of an i18n map:\n *\n *     { default: 'bold-a', en: 'bold-b', de: 'bold-f' }\n *\n * Note: the static property will be overridden if the #icon configuration is used.\n *\n * @static\n * @inheritable\n * @property {Object|string}\n */\nOO.ui.mixin.IconElement.static.icon = null;\n\n/**\n * The icon title, displayed when users move the mouse over the icon. The value can be text, a\n * function that returns title text, or `null` for no title.\n *\n * The static property will be overridden if the #iconTitle configuration is used.\n *\n * @static\n * @inheritable\n * @property {string|Function|null}\n */\nOO.ui.mixin.IconElement.static.iconTitle = null;\n\n/* Methods */\n\n/**\n * Set the icon element. This method is used to retarget an icon mixin so that its functionality\n * applies to the specified icon element instead of the one created by the class. If an icon\n * element is already set, the mixin’s effect on that element is removed. Generated CSS classes\n * and mixin methods will no longer affect the element.\n *\n * @param {jQuery} $icon Element to use as icon\n */\nOO.ui.mixin.IconElement.prototype.setIconElement = function ( $icon ) {\n\tif ( this.$icon ) {\n\t\tthis.$icon\n\t\t\t.removeClass( 'oo-ui-iconElement-icon oo-ui-icon-' + this.icon )\n\t\t\t.removeAttr( 'title' );\n\t}\n\n\tthis.$icon = $icon\n\t\t.addClass( 'oo-ui-iconElement-icon' )\n\t\t.toggleClass( 'oo-ui-icon-' + this.icon, !!this.icon );\n\tif ( this.iconTitle !== null ) {\n\t\tthis.$icon.attr( 'title', this.iconTitle );\n\t}\n\n\tthis.updateThemeClasses();\n};\n\n/**\n * Set icon by symbolic name (e.g., ‘remove’ or ‘menu’). Use `null` to remove an icon.\n * The icon parameter can also be set to a map of icon names. See the #icon config setting\n * for an example.\n *\n * @param {Object|string|null} icon A symbolic icon name, a {@link #icon map of icon names} keyed\n *  by language code, or `null` to remove the icon.\n * @chainable\n */\nOO.ui.mixin.IconElement.prototype.setIcon = function ( icon ) {\n\ticon = OO.isPlainObject( icon ) ? OO.ui.getLocalValue( icon, null, 'default' ) : icon;\n\ticon = typeof icon === 'string' && icon.trim().length ? icon.trim() : null;\n\n\tif ( this.icon !== icon ) {\n\t\tif ( this.$icon ) {\n\t\t\tif ( this.icon !== null ) {\n\t\t\t\tthis.$icon.removeClass( 'oo-ui-icon-' + this.icon );\n\t\t\t}\n\t\t\tif ( icon !== null ) {\n\t\t\t\tthis.$icon.addClass( 'oo-ui-icon-' + icon );\n\t\t\t}\n\t\t}\n\t\tthis.icon = icon;\n\t}\n\n\tthis.$element.toggleClass( 'oo-ui-iconElement', !!this.icon );\n\tthis.updateThemeClasses();\n\n\treturn this;\n};\n\n/**\n * Set the icon title. Use `null` to remove the title.\n *\n * @param {string|Function|null} iconTitle A text string used as the icon title,\n *  a function that returns title text, or `null` for no title.\n * @chainable\n */\nOO.ui.mixin.IconElement.prototype.setIconTitle = function ( iconTitle ) {\n\ticonTitle = typeof iconTitle === 'function' ||\n\t\t( typeof iconTitle === 'string' && iconTitle.length ) ?\n\t\t\tOO.ui.resolveMsg( iconTitle ) : null;\n\n\tif ( this.iconTitle !== iconTitle ) {\n\t\tthis.iconTitle = iconTitle;\n\t\tif ( this.$icon ) {\n\t\t\tif ( this.iconTitle !== null ) {\n\t\t\t\tthis.$icon.attr( 'title', iconTitle );\n\t\t\t} else {\n\t\t\t\tthis.$icon.removeAttr( 'title' );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * Get the symbolic name of the icon.\n *\n * @return {string} Icon name\n */\nOO.ui.mixin.IconElement.prototype.getIcon = function () {\n\treturn this.icon;\n};\n\n/**\n * Get the icon title. The title text is displayed when a user moves the mouse over the icon.\n *\n * @return {string} Icon title text\n */\nOO.ui.mixin.IconElement.prototype.getIconTitle = function () {\n\treturn this.iconTitle;\n};\n","/**\n * IndicatorElement is often mixed into other classes to generate an indicator.\n * Indicators are small graphics that are generally used in two ways:\n *\n * - To draw attention to the status of an item. For example, an indicator might be\n *   used to show that an item in a list has errors that need to be resolved.\n * - To clarify the function of a control that acts in an exceptional way (a button\n *   that opens a menu instead of performing an action directly, for example).\n *\n * For a list of indicators included in the library, please see the\n * [OOjs UI documentation on MediaWiki] [1].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Icons,_Indicators,_and_Labels#Indicators\n *\n * @abstract\n * @class\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {jQuery} [$indicator] The indicator element created by the class. If this\n *  configuration is omitted, the indicator element will use a generated `<span>`.\n * @cfg {string} [indicator] Symbolic name of the indicator (e.g., ‘alert’ or  ‘down’).\n *  See the [OOjs UI documentation on MediaWiki][2] for a list of indicators included\n *  in the library.\n * [2]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Icons,_Indicators,_and_Labels#Indicators\n * @cfg {string|Function} [indicatorTitle] A text string used as the indicator title,\n *  or a function that returns title text. The indicator title is displayed when users move\n *  the mouse over the indicator.\n */\nOO.ui.mixin.IndicatorElement = function OoUiMixinIndicatorElement( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties\n\tthis.$indicator = null;\n\tthis.indicator = null;\n\tthis.indicatorTitle = null;\n\n\t// Initialization\n\tthis.setIndicator( config.indicator || this.constructor.static.indicator );\n\tthis.setIndicatorTitle( config.indicatorTitle || this.constructor.static.indicatorTitle );\n\tthis.setIndicatorElement( config.$indicator || $( '<span>' ) );\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.mixin.IndicatorElement );\n\n/* Static Properties */\n\n/**\n * Symbolic name of the indicator (e.g., ‘alert’ or  ‘down’).\n * The static property will be overridden if the #indicator configuration is used.\n *\n * @static\n * @inheritable\n * @property {string|null}\n */\nOO.ui.mixin.IndicatorElement.static.indicator = null;\n\n/**\n * A text string used as the indicator title, a function that returns title text, or `null`\n * for no title. The static property will be overridden if the #indicatorTitle configuration is used.\n *\n * @static\n * @inheritable\n * @property {string|Function|null}\n */\nOO.ui.mixin.IndicatorElement.static.indicatorTitle = null;\n\n/* Methods */\n\n/**\n * Set the indicator element.\n *\n * If an element is already set, it will be cleaned up before setting up the new element.\n *\n * @param {jQuery} $indicator Element to use as indicator\n */\nOO.ui.mixin.IndicatorElement.prototype.setIndicatorElement = function ( $indicator ) {\n\tif ( this.$indicator ) {\n\t\tthis.$indicator\n\t\t\t.removeClass( 'oo-ui-indicatorElement-indicator oo-ui-indicator-' + this.indicator )\n\t\t\t.removeAttr( 'title' );\n\t}\n\n\tthis.$indicator = $indicator\n\t\t.addClass( 'oo-ui-indicatorElement-indicator' )\n\t\t.toggleClass( 'oo-ui-indicator-' + this.indicator, !!this.indicator );\n\tif ( this.indicatorTitle !== null ) {\n\t\tthis.$indicator.attr( 'title', this.indicatorTitle );\n\t}\n\n\tthis.updateThemeClasses();\n};\n\n/**\n * Set the indicator by its symbolic name: ‘alert’, ‘down’, ‘next’, ‘previous’, ‘required’, ‘up’. Use `null` to remove the indicator.\n *\n * @param {string|null} indicator Symbolic name of indicator, or `null` for no indicator\n * @chainable\n */\nOO.ui.mixin.IndicatorElement.prototype.setIndicator = function ( indicator ) {\n\tindicator = typeof indicator === 'string' && indicator.length ? indicator.trim() : null;\n\n\tif ( this.indicator !== indicator ) {\n\t\tif ( this.$indicator ) {\n\t\t\tif ( this.indicator !== null ) {\n\t\t\t\tthis.$indicator.removeClass( 'oo-ui-indicator-' + this.indicator );\n\t\t\t}\n\t\t\tif ( indicator !== null ) {\n\t\t\t\tthis.$indicator.addClass( 'oo-ui-indicator-' + indicator );\n\t\t\t}\n\t\t}\n\t\tthis.indicator = indicator;\n\t}\n\n\tthis.$element.toggleClass( 'oo-ui-indicatorElement', !!this.indicator );\n\tthis.updateThemeClasses();\n\n\treturn this;\n};\n\n/**\n * Set the indicator title.\n *\n * The title is displayed when a user moves the mouse over the indicator.\n *\n * @param {string|Function|null} indicatorTitle Indicator title text, a function that returns text, or\n *   `null` for no indicator title\n * @chainable\n */\nOO.ui.mixin.IndicatorElement.prototype.setIndicatorTitle = function ( indicatorTitle ) {\n\tindicatorTitle = typeof indicatorTitle === 'function' ||\n\t\t( typeof indicatorTitle === 'string' && indicatorTitle.length ) ?\n\t\t\tOO.ui.resolveMsg( indicatorTitle ) : null;\n\n\tif ( this.indicatorTitle !== indicatorTitle ) {\n\t\tthis.indicatorTitle = indicatorTitle;\n\t\tif ( this.$indicator ) {\n\t\t\tif ( this.indicatorTitle !== null ) {\n\t\t\t\tthis.$indicator.attr( 'title', indicatorTitle );\n\t\t\t} else {\n\t\t\t\tthis.$indicator.removeAttr( 'title' );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * Get the symbolic name of the indicator (e.g., ‘alert’ or  ‘down’).\n *\n * @return {string} Symbolic name of indicator\n */\nOO.ui.mixin.IndicatorElement.prototype.getIndicator = function () {\n\treturn this.indicator;\n};\n\n/**\n * Get the indicator title.\n *\n * The title is displayed when a user moves the mouse over the indicator.\n *\n * @return {string} Indicator title text\n */\nOO.ui.mixin.IndicatorElement.prototype.getIndicatorTitle = function () {\n\treturn this.indicatorTitle;\n};\n","/**\n * LabelElement is often mixed into other classes to generate a label, which\n * helps identify the function of an interface element.\n * See the [OOjs UI documentation on MediaWiki] [1] for more information.\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Icons,_Indicators,_and_Labels#Labels\n *\n * @abstract\n * @class\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {jQuery} [$label] The label element created by the class. If this\n *  configuration is omitted, the label element will use a generated `<span>`.\n * @cfg {jQuery|string|Function|OO.ui.HtmlSnippet} [label] The label text. The label can be specified\n *  as a plaintext string, a jQuery selection of elements, or a function that will produce a string\n *  in the future. See the [OOjs UI documentation on MediaWiki] [2] for examples.\n *  [2]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Icons,_Indicators,_and_Labels#Labels\n */\nOO.ui.mixin.LabelElement = function OoUiMixinLabelElement( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties\n\tthis.$label = null;\n\tthis.label = null;\n\n\t// Initialization\n\tthis.setLabel( config.label || this.constructor.static.label );\n\tthis.setLabelElement( config.$label || $( '<span>' ) );\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.mixin.LabelElement );\n\n/* Events */\n\n/**\n * @event labelChange\n * @param {string} value\n */\n\n/* Static Properties */\n\n/**\n * The label text. The label can be specified as a plaintext string, a function that will\n * produce a string in the future, or `null` for no label. The static value will\n * be overridden if a label is specified with the #label config option.\n *\n * @static\n * @inheritable\n * @property {string|Function|null}\n */\nOO.ui.mixin.LabelElement.static.label = null;\n\n/* Static methods */\n\n/**\n * Highlight the first occurrence of the query in the given text\n *\n * @param {string} text Text\n * @param {string} query Query to find\n * @return {jQuery} Text with the first match of the query\n *  sub-string wrapped in highlighted span\n */\nOO.ui.mixin.LabelElement.static.highlightQuery = function ( text, query ) {\n\tvar $result = $( '<span>' ),\n\t\toffset = text.toLowerCase().indexOf( query.toLowerCase() );\n\n\tif ( !query.length || offset === -1 ) {\n\t\treturn $result.text( text );\n\t}\n\t$result.append(\n\t\tdocument.createTextNode( text.slice( 0, offset ) ),\n\t\t$( '<span>' )\n\t\t\t.addClass( 'oo-ui-labelElement-label-highlight' )\n\t\t\t.text( text.slice( offset, offset + query.length ) ),\n\t\tdocument.createTextNode( text.slice( offset + query.length ) )\n\t);\n\treturn $result.contents();\n};\n\n/* Methods */\n\n/**\n * Set the label element.\n *\n * If an element is already set, it will be cleaned up before setting up the new element.\n *\n * @param {jQuery} $label Element to use as label\n */\nOO.ui.mixin.LabelElement.prototype.setLabelElement = function ( $label ) {\n\tif ( this.$label ) {\n\t\tthis.$label.removeClass( 'oo-ui-labelElement-label' ).empty();\n\t}\n\n\tthis.$label = $label.addClass( 'oo-ui-labelElement-label' );\n\tthis.setLabelContent( this.label );\n};\n\n/**\n * Set the label.\n *\n * An empty string will result in the label being hidden. A string containing only whitespace will\n * be converted to a single `&nbsp;`.\n *\n * @param {jQuery|string|OO.ui.HtmlSnippet|Function|null} label Label nodes; text; a function that returns nodes or\n *  text; or null for no label\n * @chainable\n */\nOO.ui.mixin.LabelElement.prototype.setLabel = function ( label ) {\n\tlabel = typeof label === 'function' ? OO.ui.resolveMsg( label ) : label;\n\tlabel = ( ( typeof label === 'string' || label instanceof jQuery ) && label.length ) || ( label instanceof OO.ui.HtmlSnippet && label.toString().length ) ? label : null;\n\n\tif ( this.label !== label ) {\n\t\tif ( this.$label ) {\n\t\t\tthis.setLabelContent( label );\n\t\t}\n\t\tthis.label = label;\n\t\tthis.emit( 'labelChange' );\n\t}\n\n\tthis.$element.toggleClass( 'oo-ui-labelElement', !!this.label );\n\n\treturn this;\n};\n\n/**\n * Set the label as plain text with a highlighted query\n *\n * @param {string} text Text label to set\n * @param {string} query Substring of text to highlight\n * @chainable\n */\nOO.ui.mixin.LabelElement.prototype.setHighlightedQuery = function ( text, query ) {\n\treturn this.setLabel( this.constructor.static.highlightQuery( text, query ) );\n};\n\n/**\n * Get the label.\n *\n * @return {jQuery|string|Function|null} Label nodes; text; a function that returns nodes or\n *  text; or null for no label\n */\nOO.ui.mixin.LabelElement.prototype.getLabel = function () {\n\treturn this.label;\n};\n\n/**\n * Set the content of the label.\n *\n * Do not call this method until after the label element has been set by #setLabelElement.\n *\n * @private\n * @param {jQuery|string|Function|null} label Label nodes; text; a function that returns nodes or\n *  text; or null for no label\n */\nOO.ui.mixin.LabelElement.prototype.setLabelContent = function ( label ) {\n\tif ( typeof label === 'string' ) {\n\t\tif ( label.match( /^\\s*$/ ) ) {\n\t\t\t// Convert whitespace only string to a single non-breaking space\n\t\t\tthis.$label.html( '&nbsp;' );\n\t\t} else {\n\t\t\tthis.$label.text( label );\n\t\t}\n\t} else if ( label instanceof OO.ui.HtmlSnippet ) {\n\t\tthis.$label.html( label.toString() );\n\t} else if ( label instanceof jQuery ) {\n\t\tthis.$label.empty().append( label );\n\t} else {\n\t\tthis.$label.empty();\n\t}\n};\n","/**\n * The FlaggedElement class is an attribute mixin, meaning that it is used to add\n * additional functionality to an element created by another class. The class provides\n * a ‘flags’ property assigned the name (or an array of names) of styling flags,\n * which are used to customize the look and feel of a widget to better describe its\n * importance and functionality.\n *\n * The library currently contains the following styling flags for general use:\n *\n * - **progressive**:  Progressive styling is applied to convey that the widget will move the user forward in a process.\n * - **destructive**: Destructive styling is applied to convey that the widget will remove something.\n * - **constructive**: Constructive styling is applied to convey that the widget will create something.\n *\n * The flags affect the appearance of the buttons:\n *\n *     @example\n *     // FlaggedElement is mixed into ButtonWidget to provide styling flags\n *     var button1 = new OO.ui.ButtonWidget( {\n *         label: 'Constructive',\n *         flags: 'constructive'\n *     } );\n *     var button2 = new OO.ui.ButtonWidget( {\n *         label: 'Destructive',\n *         flags: 'destructive'\n *     } );\n *     var button3 = new OO.ui.ButtonWidget( {\n *         label: 'Progressive',\n *         flags: 'progressive'\n *     } );\n *     $( 'body' ).append( button1.$element, button2.$element, button3.$element );\n *\n * {@link OO.ui.ActionWidget ActionWidgets}, which are a special kind of button that execute an action, use these flags: **primary** and **safe**.\n * Please see the [OOjs UI documentation on MediaWiki] [1] for more information.\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Elements/Flagged\n *\n * @abstract\n * @class\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {string|string[]} [flags] The name or names of the flags (e.g., 'constructive' or 'primary') to apply.\n *  Please see the [OOjs UI documentation on MediaWiki] [2] for more information about available flags.\n *  [2]: https://www.mediawiki.org/wiki/OOjs_UI/Elements/Flagged\n * @cfg {jQuery} [$flagged] The flagged element. By default,\n *  the flagged functionality is applied to the element created by the class ($element).\n *  If a different element is specified, the flagged functionality will be applied to it instead.\n */\nOO.ui.mixin.FlaggedElement = function OoUiMixinFlaggedElement( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties\n\tthis.flags = {};\n\tthis.$flagged = null;\n\n\t// Initialization\n\tthis.setFlags( config.flags );\n\tthis.setFlaggedElement( config.$flagged || this.$element );\n};\n\n/* Events */\n\n/**\n * @event flag\n * A flag event is emitted when the #clearFlags or #setFlags methods are used. The `changes`\n * parameter contains the name of each modified flag and indicates whether it was\n * added or removed.\n *\n * @param {Object.<string,boolean>} changes Object keyed by flag name. A Boolean `true` indicates\n * that the flag was added, `false` that the flag was removed.\n */\n\n/* Methods */\n\n/**\n * Set the flagged element.\n *\n * This method is used to retarget a flagged mixin so that its functionality applies to the specified element.\n * If an element is already set, the method will remove the mixin’s effect on that element.\n *\n * @param {jQuery} $flagged Element that should be flagged\n */\nOO.ui.mixin.FlaggedElement.prototype.setFlaggedElement = function ( $flagged ) {\n\tvar classNames = Object.keys( this.flags ).map( function ( flag ) {\n\t\treturn 'oo-ui-flaggedElement-' + flag;\n\t} ).join( ' ' );\n\n\tif ( this.$flagged ) {\n\t\tthis.$flagged.removeClass( classNames );\n\t}\n\n\tthis.$flagged = $flagged.addClass( classNames );\n};\n\n/**\n * Check if the specified flag is set.\n *\n * @param {string} flag Name of flag\n * @return {boolean} The flag is set\n */\nOO.ui.mixin.FlaggedElement.prototype.hasFlag = function ( flag ) {\n\t// This may be called before the constructor, thus before this.flags is set\n\treturn this.flags && ( flag in this.flags );\n};\n\n/**\n * Get the names of all flags set.\n *\n * @return {string[]} Flag names\n */\nOO.ui.mixin.FlaggedElement.prototype.getFlags = function () {\n\t// This may be called before the constructor, thus before this.flags is set\n\treturn Object.keys( this.flags || {} );\n};\n\n/**\n * Clear all flags.\n *\n * @chainable\n * @fires flag\n */\nOO.ui.mixin.FlaggedElement.prototype.clearFlags = function () {\n\tvar flag, className,\n\t\tchanges = {},\n\t\tremove = [],\n\t\tclassPrefix = 'oo-ui-flaggedElement-';\n\n\tfor ( flag in this.flags ) {\n\t\tclassName = classPrefix + flag;\n\t\tchanges[ flag ] = false;\n\t\tdelete this.flags[ flag ];\n\t\tremove.push( className );\n\t}\n\n\tif ( this.$flagged ) {\n\t\tthis.$flagged.removeClass( remove.join( ' ' ) );\n\t}\n\n\tthis.updateThemeClasses();\n\tthis.emit( 'flag', changes );\n\n\treturn this;\n};\n\n/**\n * Add one or more flags.\n *\n * @param {string|string[]|Object.<string, boolean>} flags A flag name, an array of flag names,\n *  or an object keyed by flag name with a boolean value that indicates whether the flag should\n *  be added (`true`) or removed (`false`).\n * @chainable\n * @fires flag\n */\nOO.ui.mixin.FlaggedElement.prototype.setFlags = function ( flags ) {\n\tvar i, len, flag, className,\n\t\tchanges = {},\n\t\tadd = [],\n\t\tremove = [],\n\t\tclassPrefix = 'oo-ui-flaggedElement-';\n\n\tif ( typeof flags === 'string' ) {\n\t\tclassName = classPrefix + flags;\n\t\t// Set\n\t\tif ( !this.flags[ flags ] ) {\n\t\t\tthis.flags[ flags ] = true;\n\t\t\tadd.push( className );\n\t\t}\n\t} else if ( Array.isArray( flags ) ) {\n\t\tfor ( i = 0, len = flags.length; i < len; i++ ) {\n\t\t\tflag = flags[ i ];\n\t\t\tclassName = classPrefix + flag;\n\t\t\t// Set\n\t\t\tif ( !this.flags[ flag ] ) {\n\t\t\t\tchanges[ flag ] = true;\n\t\t\t\tthis.flags[ flag ] = true;\n\t\t\t\tadd.push( className );\n\t\t\t}\n\t\t}\n\t} else if ( OO.isPlainObject( flags ) ) {\n\t\tfor ( flag in flags ) {\n\t\t\tclassName = classPrefix + flag;\n\t\t\tif ( flags[ flag ] ) {\n\t\t\t\t// Set\n\t\t\t\tif ( !this.flags[ flag ] ) {\n\t\t\t\t\tchanges[ flag ] = true;\n\t\t\t\t\tthis.flags[ flag ] = true;\n\t\t\t\t\tadd.push( className );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Remove\n\t\t\t\tif ( this.flags[ flag ] ) {\n\t\t\t\t\tchanges[ flag ] = false;\n\t\t\t\t\tdelete this.flags[ flag ];\n\t\t\t\t\tremove.push( className );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( this.$flagged ) {\n\t\tthis.$flagged\n\t\t\t.addClass( add.join( ' ' ) )\n\t\t\t.removeClass( remove.join( ' ' ) );\n\t}\n\n\tthis.updateThemeClasses();\n\tthis.emit( 'flag', changes );\n\n\treturn this;\n};\n","/**\n * TitledElement is mixed into other classes to provide a `title` attribute.\n * Titles are rendered by the browser and are made visible when the user moves\n * the mouse over the element. Titles are not visible on touch devices.\n *\n *     @example\n *     // TitledElement provides a 'title' attribute to the\n *     // ButtonWidget class\n *     var button = new OO.ui.ButtonWidget( {\n *         label: 'Button with Title',\n *         title: 'I am a button'\n *     } );\n *     $( 'body' ).append( button.$element );\n *\n * @abstract\n * @class\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {jQuery} [$titled] The element to which the `title` attribute is applied.\n *  If this config is omitted, the title functionality is applied to $element, the\n *  element created by the class.\n * @cfg {string|Function} [title] The title text or a function that returns text. If\n *  this config is omitted, the value of the {@link #static-title static title} property is used.\n */\nOO.ui.mixin.TitledElement = function OoUiMixinTitledElement( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties\n\tthis.$titled = null;\n\tthis.title = null;\n\n\t// Initialization\n\tthis.setTitle( config.title !== undefined ? config.title : this.constructor.static.title );\n\tthis.setTitledElement( config.$titled || this.$element );\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.mixin.TitledElement );\n\n/* Static Properties */\n\n/**\n * The title text, a function that returns text, or `null` for no title. The value of the static property\n * is overridden if the #title config option is used.\n *\n * @static\n * @inheritable\n * @property {string|Function|null}\n */\nOO.ui.mixin.TitledElement.static.title = null;\n\n/* Methods */\n\n/**\n * Set the titled element.\n *\n * This method is used to retarget a titledElement mixin so that its functionality applies to the specified element.\n * If an element is already set, the mixin’s effect on that element is removed before the new element is set up.\n *\n * @param {jQuery} $titled Element that should use the 'titled' functionality\n */\nOO.ui.mixin.TitledElement.prototype.setTitledElement = function ( $titled ) {\n\tif ( this.$titled ) {\n\t\tthis.$titled.removeAttr( 'title' );\n\t}\n\n\tthis.$titled = $titled;\n\tif ( this.title ) {\n\t\tthis.$titled.attr( 'title', this.title );\n\t}\n};\n\n/**\n * Set title.\n *\n * @param {string|Function|null} title Title text, a function that returns text, or `null` for no title\n * @chainable\n */\nOO.ui.mixin.TitledElement.prototype.setTitle = function ( title ) {\n\ttitle = typeof title === 'function' ? OO.ui.resolveMsg( title ) : title;\n\ttitle = ( typeof title === 'string' && title.length ) ? title : null;\n\n\tif ( this.title !== title ) {\n\t\tif ( this.$titled ) {\n\t\t\tif ( title !== null ) {\n\t\t\t\tthis.$titled.attr( 'title', title );\n\t\t\t} else {\n\t\t\t\tthis.$titled.removeAttr( 'title' );\n\t\t\t}\n\t\t}\n\t\tthis.title = title;\n\t}\n\n\treturn this;\n};\n\n/**\n * Get title.\n *\n * @return {string} Title string\n */\nOO.ui.mixin.TitledElement.prototype.getTitle = function () {\n\treturn this.title;\n};\n","/**\n * AccessKeyedElement is mixed into other classes to provide an `accesskey` attribute.\n * Accesskeys allow an user to go to a specific element by using\n * a shortcut combination of a browser specific keys + the key\n * set to the field.\n *\n *     @example\n *     // AccessKeyedElement provides an 'accesskey' attribute to the\n *     // ButtonWidget class\n *     var button = new OO.ui.ButtonWidget( {\n *         label: 'Button with Accesskey',\n *         accessKey: 'k'\n *     } );\n *     $( 'body' ).append( button.$element );\n *\n * @abstract\n * @class\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {jQuery} [$accessKeyed] The element to which the `accesskey` attribute is applied.\n *  If this config is omitted, the accesskey functionality is applied to $element, the\n *  element created by the class.\n * @cfg {string|Function} [accessKey] The key or a function that returns the key. If\n *  this config is omitted, no accesskey will be added.\n */\nOO.ui.mixin.AccessKeyedElement = function OoUiMixinAccessKeyedElement( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties\n\tthis.$accessKeyed = null;\n\tthis.accessKey = null;\n\n\t// Initialization\n\tthis.setAccessKey( config.accessKey || null );\n\tthis.setAccessKeyedElement( config.$accessKeyed || this.$element );\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.mixin.AccessKeyedElement );\n\n/* Static Properties */\n\n/**\n * The access key, a function that returns a key, or `null` for no accesskey.\n *\n * @static\n * @inheritable\n * @property {string|Function|null}\n */\nOO.ui.mixin.AccessKeyedElement.static.accessKey = null;\n\n/* Methods */\n\n/**\n * Set the accesskeyed element.\n *\n * This method is used to retarget a AccessKeyedElement mixin so that its functionality applies to the specified element.\n * If an element is already set, the mixin's effect on that element is removed before the new element is set up.\n *\n * @param {jQuery} $accessKeyed Element that should use the 'accesskeyes' functionality\n */\nOO.ui.mixin.AccessKeyedElement.prototype.setAccessKeyedElement = function ( $accessKeyed ) {\n\tif ( this.$accessKeyed ) {\n\t\tthis.$accessKeyed.removeAttr( 'accesskey' );\n\t}\n\n\tthis.$accessKeyed = $accessKeyed;\n\tif ( this.accessKey ) {\n\t\tthis.$accessKeyed.attr( 'accesskey', this.accessKey );\n\t}\n};\n\n/**\n * Set accesskey.\n *\n * @param {string|Function|null} accessKey Key, a function that returns a key, or `null` for no accesskey\n * @chainable\n */\nOO.ui.mixin.AccessKeyedElement.prototype.setAccessKey = function ( accessKey ) {\n\taccessKey = typeof accessKey === 'string' ? OO.ui.resolveMsg( accessKey ) : null;\n\n\tif ( this.accessKey !== accessKey ) {\n\t\tif ( this.$accessKeyed ) {\n\t\t\tif ( accessKey !== null ) {\n\t\t\t\tthis.$accessKeyed.attr( 'accesskey', accessKey );\n\t\t\t} else {\n\t\t\t\tthis.$accessKeyed.removeAttr( 'accesskey' );\n\t\t\t}\n\t\t}\n\t\tthis.accessKey = accessKey;\n\t}\n\n\treturn this;\n};\n\n/**\n * Get accesskey.\n *\n * @return {string} accessKey string\n */\nOO.ui.mixin.AccessKeyedElement.prototype.getAccessKey = function () {\n\treturn this.accessKey;\n};\n","/**\n * ButtonWidget is a generic widget for buttons. A wide variety of looks,\n * feels, and functionality can be customized via the class’s configuration options\n * and methods. Please see the [OOjs UI documentation on MediaWiki] [1] for more information\n * and examples.\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Buttons_and_Switches\n *\n *     @example\n *     // A button widget\n *     var button = new OO.ui.ButtonWidget( {\n *         label: 'Button with Icon',\n *         icon: 'remove',\n *         iconTitle: 'Remove'\n *     } );\n *     $( 'body' ).append( button.$element );\n *\n * NOTE: HTML form buttons should use the OO.ui.ButtonInputWidget class.\n *\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.ButtonElement\n * @mixins OO.ui.mixin.IconElement\n * @mixins OO.ui.mixin.IndicatorElement\n * @mixins OO.ui.mixin.LabelElement\n * @mixins OO.ui.mixin.TitledElement\n * @mixins OO.ui.mixin.FlaggedElement\n * @mixins OO.ui.mixin.TabIndexedElement\n * @mixins OO.ui.mixin.AccessKeyedElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {boolean} [active=false] Whether button should be shown as active\n * @cfg {string} [href] Hyperlink to visit when the button is clicked.\n * @cfg {string} [target] The frame or window in which to open the hyperlink.\n * @cfg {boolean} [noFollow] Search engine traversal hint (default: true)\n */\nOO.ui.ButtonWidget = function OoUiButtonWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.ButtonWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.ButtonElement.call( this, config );\n\tOO.ui.mixin.IconElement.call( this, config );\n\tOO.ui.mixin.IndicatorElement.call( this, config );\n\tOO.ui.mixin.LabelElement.call( this, config );\n\tOO.ui.mixin.TitledElement.call( this, $.extend( {}, config, { $titled: this.$button } ) );\n\tOO.ui.mixin.FlaggedElement.call( this, config );\n\tOO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$button } ) );\n\tOO.ui.mixin.AccessKeyedElement.call( this, $.extend( {}, config, { $accessKeyed: this.$button } ) );\n\n\t// Properties\n\tthis.href = null;\n\tthis.target = null;\n\tthis.noFollow = false;\n\n\t// Events\n\tthis.connect( this, { disable: 'onDisable' } );\n\n\t// Initialization\n\tthis.$button.append( this.$icon, this.$label, this.$indicator );\n\tthis.$element\n\t\t.addClass( 'oo-ui-buttonWidget' )\n\t\t.append( this.$button );\n\tthis.setActive( config.active );\n\tthis.setHref( config.href );\n\tthis.setTarget( config.target );\n\tthis.setNoFollow( config.noFollow );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ButtonWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.ButtonElement );\nOO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.IconElement );\nOO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.IndicatorElement );\nOO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.LabelElement );\nOO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.TitledElement );\nOO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.FlaggedElement );\nOO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.TabIndexedElement );\nOO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.AccessKeyedElement );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.ButtonWidget.static.cancelButtonMouseDownEvents = false;\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.ButtonWidget.static.tagName = 'span';\n\n/* Methods */\n\n/**\n * Get hyperlink location.\n *\n * @return {string} Hyperlink location\n */\nOO.ui.ButtonWidget.prototype.getHref = function () {\n\treturn this.href;\n};\n\n/**\n * Get hyperlink target.\n *\n * @return {string} Hyperlink target\n */\nOO.ui.ButtonWidget.prototype.getTarget = function () {\n\treturn this.target;\n};\n\n/**\n * Get search engine traversal hint.\n *\n * @return {boolean} Whether search engines should avoid traversing this hyperlink\n */\nOO.ui.ButtonWidget.prototype.getNoFollow = function () {\n\treturn this.noFollow;\n};\n\n/**\n * Set hyperlink location.\n *\n * @param {string|null} href Hyperlink location, null to remove\n */\nOO.ui.ButtonWidget.prototype.setHref = function ( href ) {\n\thref = typeof href === 'string' ? href : null;\n\tif ( href !== null && !OO.ui.isSafeUrl( href ) ) {\n\t\thref = './' + href;\n\t}\n\n\tif ( href !== this.href ) {\n\t\tthis.href = href;\n\t\tthis.updateHref();\n\t}\n\n\treturn this;\n};\n\n/**\n * Update the `href` attribute, in case of changes to href or\n * disabled state.\n *\n * @private\n * @chainable\n */\nOO.ui.ButtonWidget.prototype.updateHref = function () {\n\tif ( this.href !== null && !this.isDisabled() ) {\n\t\tthis.$button.attr( 'href', this.href );\n\t} else {\n\t\tthis.$button.removeAttr( 'href' );\n\t}\n\n\treturn this;\n};\n\n/**\n * Handle disable events.\n *\n * @private\n * @param {boolean} disabled Element is disabled\n */\nOO.ui.ButtonWidget.prototype.onDisable = function () {\n\tthis.updateHref();\n};\n\n/**\n * Set hyperlink target.\n *\n * @param {string|null} target Hyperlink target, null to remove\n */\nOO.ui.ButtonWidget.prototype.setTarget = function ( target ) {\n\ttarget = typeof target === 'string' ? target : null;\n\n\tif ( target !== this.target ) {\n\t\tthis.target = target;\n\t\tif ( target !== null ) {\n\t\t\tthis.$button.attr( 'target', target );\n\t\t} else {\n\t\t\tthis.$button.removeAttr( 'target' );\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * Set search engine traversal hint.\n *\n * @param {boolean} noFollow True if search engines should avoid traversing this hyperlink\n */\nOO.ui.ButtonWidget.prototype.setNoFollow = function ( noFollow ) {\n\tnoFollow = typeof noFollow === 'boolean' ? noFollow : true;\n\n\tif ( noFollow !== this.noFollow ) {\n\t\tthis.noFollow = noFollow;\n\t\tif ( noFollow ) {\n\t\t\tthis.$button.attr( 'rel', 'nofollow' );\n\t\t} else {\n\t\t\tthis.$button.removeAttr( 'rel' );\n\t\t}\n\t}\n\n\treturn this;\n};\n\n// Override method visibility hints from ButtonElement\n/**\n * @method setActive\n * @inheritdoc\n */\n/**\n * @method isActive\n * @inheritdoc\n */\n","/**\n * A ButtonGroupWidget groups related buttons and is used together with OO.ui.ButtonWidget and\n * its subclasses. Each button in a group is addressed by a unique reference. Buttons can be added,\n * removed, and cleared from the group.\n *\n *     @example\n *     // Example: A ButtonGroupWidget with two buttons\n *     var button1 = new OO.ui.PopupButtonWidget( {\n *         label: 'Select a category',\n *         icon: 'menu',\n *         popup: {\n *             $content: $( '<p>List of categories...</p>' ),\n *             padded: true,\n *             align: 'left'\n *         }\n *     } );\n *     var button2 = new OO.ui.ButtonWidget( {\n *         label: 'Add item'\n *     });\n *     var buttonGroup = new OO.ui.ButtonGroupWidget( {\n *         items: [button1, button2]\n *     } );\n *     $( 'body' ).append( buttonGroup.$element );\n *\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.GroupElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {OO.ui.ButtonWidget[]} [items] Buttons to add\n */\nOO.ui.ButtonGroupWidget = function OoUiButtonGroupWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.ButtonGroupWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.GroupElement.call( this, $.extend( {}, config, { $group: this.$element } ) );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-buttonGroupWidget' );\n\tif ( Array.isArray( config.items ) ) {\n\t\tthis.addItems( config.items );\n\t}\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ButtonGroupWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.ButtonGroupWidget, OO.ui.mixin.GroupElement );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.ButtonGroupWidget.static.tagName = 'span';\n\n/* Methods */\n\n/**\n * Focus the widget\n *\n * @chainable\n */\nOO.ui.ButtonGroupWidget.prototype.focus = function () {\n\tif ( !this.isDisabled() ) {\n\t\tif ( this.items[ 0 ] ) {\n\t\t\tthis.items[ 0 ].focus();\n\t\t}\n\t}\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.ButtonGroupWidget.prototype.simulateLabelClick = function () {\n\tthis.focus();\n};\n","/**\n * IconWidget is a generic widget for {@link OO.ui.mixin.IconElement icons}. In general, IconWidgets should be used with OO.ui.LabelWidget,\n * which creates a label that identifies the icon’s function. See the [OOjs UI documentation on MediaWiki] [1]\n * for a list of icons included in the library.\n *\n *     @example\n *     // An icon widget with a label\n *     var myIcon = new OO.ui.IconWidget( {\n *         icon: 'help',\n *         iconTitle: 'Help'\n *      } );\n *      // Create a label.\n *      var iconLabel = new OO.ui.LabelWidget( {\n *          label: 'Help'\n *      } );\n *      $( 'body' ).append( myIcon.$element, iconLabel.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Icons,_Indicators,_and_Labels#Icons\n *\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.IconElement\n * @mixins OO.ui.mixin.TitledElement\n * @mixins OO.ui.mixin.FlaggedElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.IconWidget = function OoUiIconWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.IconWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.IconElement.call( this, $.extend( {}, config, { $icon: this.$element } ) );\n\tOO.ui.mixin.TitledElement.call( this, $.extend( {}, config, { $titled: this.$element } ) );\n\tOO.ui.mixin.FlaggedElement.call( this, $.extend( {}, config, { $flagged: this.$element } ) );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-iconWidget' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.IconWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.IconWidget, OO.ui.mixin.IconElement );\nOO.mixinClass( OO.ui.IconWidget, OO.ui.mixin.TitledElement );\nOO.mixinClass( OO.ui.IconWidget, OO.ui.mixin.FlaggedElement );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.IconWidget.static.tagName = 'span';\n","/**\n * IndicatorWidgets create indicators, which are small graphics that are generally used to draw\n * attention to the status of an item or to clarify the function of a control. For a list of\n * indicators included in the library, please see the [OOjs UI documentation on MediaWiki][1].\n *\n *     @example\n *     // Example of an indicator widget\n *     var indicator1 = new OO.ui.IndicatorWidget( {\n *         indicator: 'alert'\n *     } );\n *\n *     // Create a fieldset layout to add a label\n *     var fieldset = new OO.ui.FieldsetLayout();\n *     fieldset.addItems( [\n *         new OO.ui.FieldLayout( indicator1, { label: 'An alert indicator:' } )\n *     ] );\n *     $( 'body' ).append( fieldset.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Icons,_Indicators,_and_Labels#Indicators\n *\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.IndicatorElement\n * @mixins OO.ui.mixin.TitledElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.IndicatorWidget = function OoUiIndicatorWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.IndicatorWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.IndicatorElement.call( this, $.extend( {}, config, { $indicator: this.$element } ) );\n\tOO.ui.mixin.TitledElement.call( this, $.extend( {}, config, { $titled: this.$element } ) );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-indicatorWidget' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.IndicatorWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.IndicatorWidget, OO.ui.mixin.IndicatorElement );\nOO.mixinClass( OO.ui.IndicatorWidget, OO.ui.mixin.TitledElement );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.IndicatorWidget.static.tagName = 'span';\n","/**\n * LabelWidgets help identify the function of interface elements. Each LabelWidget can\n * be configured with a `label` option that is set to a string, a label node, or a function:\n *\n * - String: a plaintext string\n * - jQuery selection: a jQuery selection, used for anything other than a plaintext label, e.g., a\n *   label that includes a link or special styling, such as a gray color or additional graphical elements.\n * - Function: a function that will produce a string in the future. Functions are used\n *   in cases where the value of the label is not currently defined.\n *\n * In addition, the LabelWidget can be associated with an {@link OO.ui.InputWidget input widget}, which\n * will come into focus when the label is clicked.\n *\n *     @example\n *     // Examples of LabelWidgets\n *     var label1 = new OO.ui.LabelWidget( {\n *         label: 'plaintext label'\n *     } );\n *     var label2 = new OO.ui.LabelWidget( {\n *         label: $( '<a href=\"default.html\">jQuery label</a>' )\n *     } );\n *     // Create a fieldset layout with fields for each example\n *     var fieldset = new OO.ui.FieldsetLayout();\n *     fieldset.addItems( [\n *         new OO.ui.FieldLayout( label1 ),\n *         new OO.ui.FieldLayout( label2 )\n *     ] );\n *     $( 'body' ).append( fieldset.$element );\n *\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.LabelElement\n * @mixins OO.ui.mixin.TitledElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {OO.ui.InputWidget} [input] {@link OO.ui.InputWidget Input widget} that uses the label.\n *  Clicking the label will focus the specified input field.\n */\nOO.ui.LabelWidget = function OoUiLabelWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.LabelWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.LabelElement.call( this, $.extend( {}, config, { $label: this.$element } ) );\n\tOO.ui.mixin.TitledElement.call( this, config );\n\n\t// Properties\n\tthis.input = config.input;\n\n\t// Initialization\n\tif ( this.input ) {\n\t\tif ( this.input.getInputId() ) {\n\t\t\tthis.$element.attr( 'for', this.input.getInputId() );\n\t\t} else {\n\t\t\tthis.$label.on( 'click', function () {\n\t\t\t\tthis.input.simulateLabelClick();\n\t\t\t\treturn false;\n\t\t\t}.bind( this ) );\n\t\t}\n\t}\n\tthis.$element.addClass( 'oo-ui-labelWidget' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.LabelWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.LabelWidget, OO.ui.mixin.LabelElement );\nOO.mixinClass( OO.ui.LabelWidget, OO.ui.mixin.TitledElement );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.LabelWidget.static.tagName = 'label';\n","/**\n * PendingElement is a mixin that is used to create elements that notify users that something is happening\n * and that they should wait before proceeding. The pending state is visually represented with a pending\n * texture that appears in the head of a pending {@link OO.ui.ProcessDialog process dialog} or in the input\n * field of a {@link OO.ui.TextInputWidget text input widget}.\n *\n * Currently, {@link OO.ui.ActionWidget Action widgets}, which mix in this class, can also be marked as pending, but only when\n * used in {@link OO.ui.MessageDialog message dialogs}. The behavior is not currently supported for action widgets used\n * in process dialogs.\n *\n *     @example\n *     function MessageDialog( config ) {\n *         MessageDialog.parent.call( this, config );\n *     }\n *     OO.inheritClass( MessageDialog, OO.ui.MessageDialog );\n *\n *     MessageDialog.static.name = 'myMessageDialog';\n *     MessageDialog.static.actions = [\n *         { action: 'save', label: 'Done', flags: 'primary' },\n *         { label: 'Cancel', flags: 'safe' }\n *     ];\n *\n *     MessageDialog.prototype.initialize = function () {\n *         MessageDialog.parent.prototype.initialize.apply( this, arguments );\n *         this.content = new OO.ui.PanelLayout( { $: this.$, padded: true } );\n *         this.content.$element.append( '<p>Click the \\'Done\\' action widget to see its pending state. Note that action widgets can be marked pending in message dialogs but not process dialogs.</p>' );\n *         this.$body.append( this.content.$element );\n *     };\n *     MessageDialog.prototype.getBodyHeight = function () {\n *         return 100;\n *     }\n *     MessageDialog.prototype.getActionProcess = function ( action ) {\n *         var dialog = this;\n *         if ( action === 'save' ) {\n *             dialog.getActions().get({actions: 'save'})[0].pushPending();\n *             return new OO.ui.Process()\n *             .next( 1000 )\n *             .next( function () {\n *                 dialog.getActions().get({actions: 'save'})[0].popPending();\n *             } );\n *         }\n *         return MessageDialog.parent.prototype.getActionProcess.call( this, action );\n *     };\n *\n *     var windowManager = new OO.ui.WindowManager();\n *     $( 'body' ).append( windowManager.$element );\n *\n *     var dialog = new MessageDialog();\n *     windowManager.addWindows( [ dialog ] );\n *     windowManager.openWindow( dialog );\n *\n * @abstract\n * @class\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {jQuery} [$pending] Element to mark as pending, defaults to this.$element\n */\nOO.ui.mixin.PendingElement = function OoUiMixinPendingElement( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties\n\tthis.pending = 0;\n\tthis.$pending = null;\n\n\t// Initialisation\n\tthis.setPendingElement( config.$pending || this.$element );\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.mixin.PendingElement );\n\n/* Methods */\n\n/**\n * Set the pending element (and clean up any existing one).\n *\n * @param {jQuery} $pending The element to set to pending.\n */\nOO.ui.mixin.PendingElement.prototype.setPendingElement = function ( $pending ) {\n\tif ( this.$pending ) {\n\t\tthis.$pending.removeClass( 'oo-ui-pendingElement-pending' );\n\t}\n\n\tthis.$pending = $pending;\n\tif ( this.pending > 0 ) {\n\t\tthis.$pending.addClass( 'oo-ui-pendingElement-pending' );\n\t}\n};\n\n/**\n * Check if an element is pending.\n *\n * @return {boolean} Element is pending\n */\nOO.ui.mixin.PendingElement.prototype.isPending = function () {\n\treturn !!this.pending;\n};\n\n/**\n * Increase the pending counter. The pending state will remain active until the counter is zero\n * (i.e., the number of calls to #pushPending and #popPending is the same).\n *\n * @chainable\n */\nOO.ui.mixin.PendingElement.prototype.pushPending = function () {\n\tif ( this.pending === 0 ) {\n\t\tthis.$pending.addClass( 'oo-ui-pendingElement-pending' );\n\t\tthis.updateThemeClasses();\n\t}\n\tthis.pending++;\n\n\treturn this;\n};\n\n/**\n * Decrease the pending counter. The pending state will remain active until the counter is zero\n * (i.e., the number of calls to #pushPending and #popPending is the same).\n *\n * @chainable\n */\nOO.ui.mixin.PendingElement.prototype.popPending = function () {\n\tif ( this.pending === 1 ) {\n\t\tthis.$pending.removeClass( 'oo-ui-pendingElement-pending' );\n\t\tthis.updateThemeClasses();\n\t}\n\tthis.pending = Math.max( 0, this.pending - 1 );\n\n\treturn this;\n};\n","/**\n * Element that will stick adjacent to a specified container, even when it is inserted elsewhere\n * in the document (for example, in an OO.ui.Window's $overlay).\n *\n * The elements's position is automatically calculated and maintained when window is resized or the\n * page is scrolled. If you reposition the container manually, you have to call #position to make\n * sure the element is still placed correctly.\n *\n * As positioning is only possible when both the element and the container are attached to the DOM\n * and visible, it's only done after you call #togglePositioning. You might want to do this inside\n * the #toggle method to display a floating popup, for example.\n *\n * @abstract\n * @class\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {jQuery} [$floatable] Node to position, assigned to #$floatable, omit to use #$element\n * @cfg {jQuery} [$floatableContainer] Node to position adjacent to\n * @cfg {string} [verticalPosition='below'] Where to position $floatable vertically:\n *  'below': Directly below $floatableContainer, aligning f's top edge with fC's bottom edge\n *  'above': Directly above $floatableContainer, aligning f's bottom edge with fC's top edge\n *  'top': Align the top edge with $floatableContainer's top edge\n *  'bottom': Align the bottom edge with $floatableContainer's bottom edge\n *  'center': Vertically align the center with $floatableContainer's center\n * @cfg {string} [horizontalPosition='start'] Where to position $floatable horizontally:\n *  'before': Directly before $floatableContainer, aligning f's end edge with fC's start edge\n *  'after': Directly after $floatableContainer, algining f's start edge with fC's end edge\n *  'start': Align the start (left in LTR, right in RTL) edge with $floatableContainer's start edge\n *  'end': Align the end (right in LTR, left in RTL) edge with $floatableContainer's end edge\n *  'center': Horizontally align the center with $floatableContainer's center\n * @cfg {boolean} [hideWhenOutOfView=true] Whether to hide the floatable element if the container\n *  is out of view\n */\nOO.ui.mixin.FloatableElement = function OoUiMixinFloatableElement( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties\n\tthis.$floatable = null;\n\tthis.$floatableContainer = null;\n\tthis.$floatableWindow = null;\n\tthis.$floatableClosestScrollable = null;\n\tthis.onFloatableScrollHandler = this.position.bind( this );\n\tthis.onFloatableWindowResizeHandler = this.position.bind( this );\n\n\t// Initialization\n\tthis.setFloatableContainer( config.$floatableContainer );\n\tthis.setFloatableElement( config.$floatable || this.$element );\n\tthis.setVerticalPosition( config.verticalPosition || 'below' );\n\tthis.setHorizontalPosition( config.horizontalPosition || 'start' );\n\tthis.hideWhenOutOfView = config.hideWhenOutOfView === undefined ? true : !!config.hideWhenOutOfView;\n};\n\n/* Methods */\n\n/**\n * Set floatable element.\n *\n * If an element is already set, it will be cleaned up before setting up the new element.\n *\n * @param {jQuery} $floatable Element to make floatable\n */\nOO.ui.mixin.FloatableElement.prototype.setFloatableElement = function ( $floatable ) {\n\tif ( this.$floatable ) {\n\t\tthis.$floatable.removeClass( 'oo-ui-floatableElement-floatable' );\n\t\tthis.$floatable.css( { left: '', top: '' } );\n\t}\n\n\tthis.$floatable = $floatable.addClass( 'oo-ui-floatableElement-floatable' );\n\tthis.position();\n};\n\n/**\n * Set floatable container.\n *\n * The element will be positioned relative to the specified container.\n *\n * @param {jQuery|null} $floatableContainer Container to keep visible, or null to unset\n */\nOO.ui.mixin.FloatableElement.prototype.setFloatableContainer = function ( $floatableContainer ) {\n\tthis.$floatableContainer = $floatableContainer;\n\tif ( this.$floatable ) {\n\t\tthis.position();\n\t}\n};\n\n/**\n * Change how the element is positioned vertically.\n *\n * @param {string} position 'below', 'above', 'top', 'bottom' or 'center'\n */\nOO.ui.mixin.FloatableElement.prototype.setVerticalPosition = function ( position ) {\n\tif ( [ 'below', 'above', 'top', 'bottom', 'center' ].indexOf( position ) === -1 ) {\n\t\tthrow new Error( 'Invalid value for vertical position: ' + position );\n\t}\n\tif ( this.verticalPosition !== position ) {\n\t\tthis.verticalPosition = position;\n\t\tif ( this.$floatable ) {\n\t\t\tthis.position();\n\t\t}\n\t}\n};\n\n/**\n * Change how the element is positioned horizontally.\n *\n * @param {string} position 'before', 'after', 'start', 'end' or 'center'\n */\nOO.ui.mixin.FloatableElement.prototype.setHorizontalPosition = function ( position ) {\n\tif ( [ 'before', 'after', 'start', 'end', 'center' ].indexOf( position ) === -1 ) {\n\t\tthrow new Error( 'Invalid value for horizontal position: ' + position );\n\t}\n\tif ( this.horizontalPosition !== position ) {\n\t\tthis.horizontalPosition = position;\n\t\tif ( this.$floatable ) {\n\t\t\tthis.position();\n\t\t}\n\t}\n};\n\n/**\n * Toggle positioning.\n *\n * Do not turn positioning on until after the element is attached to the DOM and visible.\n *\n * @param {boolean} [positioning] Enable positioning, omit to toggle\n * @chainable\n */\nOO.ui.mixin.FloatableElement.prototype.togglePositioning = function ( positioning ) {\n\tvar closestScrollableOfContainer;\n\n\tif ( !this.$floatable || !this.$floatableContainer ) {\n\t\treturn this;\n\t}\n\n\tpositioning = positioning === undefined ? !this.positioning : !!positioning;\n\n\tif ( positioning && !this.warnedUnattached && !this.isElementAttached() ) {\n\t\tOO.ui.warnDeprecation( 'FloatableElement#togglePositioning: Before calling this method, the element must be attached to the DOM.' );\n\t\tthis.warnedUnattached = true;\n\t}\n\n\tif ( this.positioning !== positioning ) {\n\t\tthis.positioning = positioning;\n\n\t\tthis.needsCustomPosition =\n\t\t\tthis.verticalPostion !== 'below' ||\n\t\t\tthis.horizontalPosition !== 'start' ||\n\t\t\t!OO.ui.contains( this.$floatableContainer[ 0 ], this.$floatable[ 0 ] );\n\n\t\tclosestScrollableOfContainer = OO.ui.Element.static.getClosestScrollableContainer( this.$floatableContainer[ 0 ] );\n\t\t// If the scrollable is the root, we have to listen to scroll events\n\t\t// on the window because of browser inconsistencies.\n\t\tif ( $( closestScrollableOfContainer ).is( 'html, body' ) ) {\n\t\t\tclosestScrollableOfContainer = OO.ui.Element.static.getWindow( closestScrollableOfContainer );\n\t\t}\n\n\t\tif ( positioning ) {\n\t\t\tthis.$floatableWindow = $( this.getElementWindow() );\n\t\t\tthis.$floatableWindow.on( 'resize', this.onFloatableWindowResizeHandler );\n\n\t\t\tthis.$floatableClosestScrollable = $( closestScrollableOfContainer );\n\t\t\tthis.$floatableClosestScrollable.on( 'scroll', this.onFloatableScrollHandler );\n\n\t\t\t// Initial position after visible\n\t\t\tthis.position();\n\t\t} else {\n\t\t\tif ( this.$floatableWindow ) {\n\t\t\t\tthis.$floatableWindow.off( 'resize', this.onFloatableWindowResizeHandler );\n\t\t\t\tthis.$floatableWindow = null;\n\t\t\t}\n\n\t\t\tif ( this.$floatableClosestScrollable ) {\n\t\t\t\tthis.$floatableClosestScrollable.off( 'scroll', this.onFloatableScrollHandler );\n\t\t\t\tthis.$floatableClosestScrollable = null;\n\t\t\t}\n\n\t\t\tthis.$floatable.css( { left: '', right: '', top: '' } );\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * Check whether the bottom edge of the given element is within the viewport of the given container.\n *\n * @private\n * @param {jQuery} $element\n * @param {jQuery} $container\n * @return {boolean}\n */\nOO.ui.mixin.FloatableElement.prototype.isElementInViewport = function ( $element, $container ) {\n\tvar elemRect, contRect, topEdgeInBounds, bottomEdgeInBounds, leftEdgeInBounds, rightEdgeInBounds,\n\t\tstartEdgeInBounds, endEdgeInBounds,\n\t\tdirection = $element.css( 'direction' );\n\n\telemRect = $element[ 0 ].getBoundingClientRect();\n\tif ( $container[ 0 ] === window ) {\n\t\tcontRect = {\n\t\t\ttop: 0,\n\t\t\tleft: 0,\n\t\t\tright: document.documentElement.clientWidth,\n\t\t\tbottom: document.documentElement.clientHeight\n\t\t};\n\t} else {\n\t\tcontRect = $container[ 0 ].getBoundingClientRect();\n\t}\n\n\ttopEdgeInBounds = elemRect.top >= contRect.top && elemRect.top <= contRect.bottom;\n\tbottomEdgeInBounds = elemRect.bottom >= contRect.top && elemRect.bottom <= contRect.bottom;\n\tleftEdgeInBounds = elemRect.left >= contRect.left && elemRect.left <= contRect.right;\n\trightEdgeInBounds = elemRect.right >= contRect.left && elemRect.right <= contRect.right;\n\tif ( direction === 'rtl' ) {\n\t\tstartEdgeInBounds = rightEdgeInBounds;\n\t\tendEdgeInBounds = leftEdgeInBounds;\n\t} else {\n\t\tstartEdgeInBounds = leftEdgeInBounds;\n\t\tendEdgeInBounds = rightEdgeInBounds;\n\t}\n\n\tif ( this.verticalPosition === 'below' && !bottomEdgeInBounds ) {\n\t\treturn false;\n\t}\n\tif ( this.verticalPosition === 'above' && !topEdgeInBounds ) {\n\t\treturn false;\n\t}\n\tif ( this.horizontalPosition === 'before' && !startEdgeInBounds ) {\n\t\treturn false;\n\t}\n\tif ( this.horizontalPosition === 'after' && !endEdgeInBounds ) {\n\t\treturn false;\n\t}\n\n\t// The other positioning values are all about being inside the container,\n\t// so in those cases all we care about is that any part of the container is visible.\n\treturn elemRect.top <= contRect.bottom && elemRect.bottom >= contRect.top &&\n\t\telemRect.left <= contRect.right && elemRect.right >= contRect.left;\n};\n\n/**\n * Position the floatable below its container.\n *\n * This should only be done when both of them are attached to the DOM and visible.\n *\n * @chainable\n */\nOO.ui.mixin.FloatableElement.prototype.position = function () {\n\tif ( !this.positioning ) {\n\t\treturn this;\n\t}\n\n\tif ( !(\n\t\t// To continue, some things need to be true:\n\t\t// The element must actually be in the DOM\n\t\tthis.isElementAttached() && (\n\t\t\t// The closest scrollable is the current window\n\t\t\tthis.$floatableClosestScrollable[ 0 ] === this.getElementWindow() ||\n\t\t\t// OR is an element in the element's DOM\n\t\t\t$.contains( this.getElementDocument(), this.$floatableClosestScrollable[ 0 ] )\n\t\t)\n\t) ) {\n\t\t// Abort early if important parts of the widget are no longer attached to the DOM\n\t\treturn this;\n\t}\n\n\tif ( this.hideWhenOutOfView && !this.isElementInViewport( this.$floatableContainer, this.$floatableClosestScrollable ) ) {\n\t\tthis.$floatable.addClass( 'oo-ui-element-hidden' );\n\t\treturn this;\n\t} else {\n\t\tthis.$floatable.removeClass( 'oo-ui-element-hidden' );\n\t}\n\n\tif ( !this.needsCustomPosition ) {\n\t\treturn this;\n\t}\n\n\tthis.$floatable.css( this.computePosition() );\n\n\t// We updated the position, so re-evaluate the clipping state.\n\t// (ClippableElement does not listen to 'scroll' events on $floatableContainer's parent, and so\n\t// will not notice the need to update itself.)\n\t// TODO: This is terrible, we shouldn't need to know about ClippableElement at all here. Why does\n\t// it not listen to the right events in the right places?\n\tif ( this.clip ) {\n\t\tthis.clip();\n\t}\n\n\treturn this;\n};\n\n/**\n * Compute how #$floatable should be positioned based on the position of #$floatableContainer\n * and the positioning settings. This is a helper for #position that shouldn't be called directly,\n * but may be overridden by subclasses if they want to change or add to the positioning logic.\n *\n * @return {Object} New position to apply with .css(). Keys are 'top', 'left', 'bottom' and 'right'.\n */\nOO.ui.mixin.FloatableElement.prototype.computePosition = function () {\n\tvar isBody, scrollableX, scrollableY, containerPos,\n\t\thorizScrollbarHeight, vertScrollbarWidth, scrollTop, scrollLeft,\n\t\tnewPos = { top: '', left: '', bottom: '', right: '' },\n\t\tdirection = this.$floatableContainer.css( 'direction' ),\n\t\t$offsetParent = this.$floatable.offsetParent();\n\n\tif ( $offsetParent.is( 'html' ) ) {\n\t\t// The innerHeight/Width and clientHeight/Width calculations don't work well on the\n\t\t// <html> element, but they do work on the <body>\n\t\t$offsetParent = $( $offsetParent[ 0 ].ownerDocument.body );\n\t}\n\tisBody = $offsetParent.is( 'body' );\n\tscrollableX = $offsetParent.css( 'overflow-x' ) === 'scroll' || $offsetParent.css( 'overflow-x' ) === 'auto';\n\tscrollableY = $offsetParent.css( 'overflow-y' ) === 'scroll' || $offsetParent.css( 'overflow-y' ) === 'auto';\n\n\tvertScrollbarWidth = $offsetParent.innerWidth() - $offsetParent.prop( 'clientWidth' );\n\thorizScrollbarHeight = $offsetParent.innerHeight() - $offsetParent.prop( 'clientHeight' );\n\t// We don't need to compute and add scrollTop and scrollLeft if the scrollable container is the body,\n\t// or if it isn't scrollable\n\tscrollTop = scrollableY && !isBody ? $offsetParent.scrollTop() : 0;\n\tscrollLeft = scrollableX && !isBody ? OO.ui.Element.static.getScrollLeft( $offsetParent[ 0 ] ) : 0;\n\n\t// Avoid passing the <body> to getRelativePosition(), because it won't return what we expect\n\t// if the <body> has a margin\n\tcontainerPos = isBody ?\n\t\tthis.$floatableContainer.offset() :\n\t\tOO.ui.Element.static.getRelativePosition( this.$floatableContainer, $offsetParent );\n\tcontainerPos.bottom = containerPos.top + this.$floatableContainer.outerHeight();\n\tcontainerPos.right = containerPos.left + this.$floatableContainer.outerWidth();\n\tcontainerPos.start = direction === 'rtl' ? containerPos.right : containerPos.left;\n\tcontainerPos.end = direction === 'rtl' ? containerPos.left : containerPos.right;\n\n\tif ( this.verticalPosition === 'below' ) {\n\t\tnewPos.top = containerPos.bottom;\n\t} else if ( this.verticalPosition === 'above' ) {\n\t\tnewPos.bottom = $offsetParent.outerHeight() - containerPos.top;\n\t} else if ( this.verticalPosition === 'top' ) {\n\t\tnewPos.top = containerPos.top;\n\t} else if ( this.verticalPosition === 'bottom' ) {\n\t\tnewPos.bottom = $offsetParent.outerHeight() - containerPos.bottom;\n\t} else if ( this.verticalPosition === 'center' ) {\n\t\tnewPos.top = containerPos.top +\n\t\t\t( this.$floatableContainer.height() - this.$floatable.height() ) / 2;\n\t}\n\n\tif ( this.horizontalPosition === 'before' ) {\n\t\tnewPos.end = containerPos.start;\n\t} else if ( this.horizontalPosition === 'after' ) {\n\t\tnewPos.start = containerPos.end;\n\t} else if ( this.horizontalPosition === 'start' ) {\n\t\tnewPos.start = containerPos.start;\n\t} else if ( this.horizontalPosition === 'end' ) {\n\t\tnewPos.end = containerPos.end;\n\t} else if ( this.horizontalPosition === 'center' ) {\n\t\tnewPos.left = containerPos.left +\n\t\t\t( this.$floatableContainer.width() - this.$floatable.width() ) / 2;\n\t}\n\n\tif ( newPos.start !== undefined ) {\n\t\tif ( direction === 'rtl' ) {\n\t\t\tnewPos.right = ( isBody ? $( $offsetParent[ 0 ].ownerDocument.documentElement ) : $offsetParent ).outerWidth() - newPos.start;\n\t\t} else {\n\t\t\tnewPos.left = newPos.start;\n\t\t}\n\t\tdelete newPos.start;\n\t}\n\tif ( newPos.end !== undefined ) {\n\t\tif ( direction === 'rtl' ) {\n\t\t\tnewPos.left = newPos.end;\n\t\t} else {\n\t\t\tnewPos.right = ( isBody ? $( $offsetParent[ 0 ].ownerDocument.documentElement ) : $offsetParent ).outerWidth() - newPos.end;\n\t\t}\n\t\tdelete newPos.end;\n\t}\n\n\t// Account for scroll position\n\tif ( newPos.top !== '' ) {\n\t\tnewPos.top += scrollTop;\n\t}\n\tif ( newPos.bottom !== '' ) {\n\t\tnewPos.bottom -= scrollTop;\n\t}\n\tif ( newPos.left !== '' ) {\n\t\tnewPos.left += scrollLeft;\n\t}\n\tif ( newPos.right !== '' ) {\n\t\tnewPos.right -= scrollLeft;\n\t}\n\n\t// Account for scrollbar gutter\n\tif ( newPos.bottom !== '' ) {\n\t\tnewPos.bottom -= horizScrollbarHeight;\n\t}\n\tif ( direction === 'rtl' ) {\n\t\tif ( newPos.left !== '' ) {\n\t\t\tnewPos.left -= vertScrollbarWidth;\n\t\t}\n\t} else {\n\t\tif ( newPos.right !== '' ) {\n\t\t\tnewPos.right -= vertScrollbarWidth;\n\t\t}\n\t}\n\n\treturn newPos;\n};\n","/**\n * Element that can be automatically clipped to visible boundaries.\n *\n * Whenever the element's natural height changes, you have to call\n * {@link OO.ui.mixin.ClippableElement#clip} to make sure it's still\n * clipping correctly.\n *\n * The dimensions of #$clippableContainer will be compared to the boundaries of the\n * nearest scrollable container. If #$clippableContainer is too tall and/or too wide,\n * then #$clippable will be given a fixed reduced height and/or width and will be made\n * scrollable. By default, #$clippable and #$clippableContainer are the same element,\n * but you can build a static footer by setting #$clippableContainer to an element that contains\n * #$clippable and the footer.\n *\n * @abstract\n * @class\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {jQuery} [$clippable] Node to clip, assigned to #$clippable, omit to use #$element\n * @cfg {jQuery} [$clippableContainer] Node to keep visible, assigned to #$clippableContainer,\n *   omit to use #$clippable\n */\nOO.ui.mixin.ClippableElement = function OoUiMixinClippableElement( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties\n\tthis.$clippable = null;\n\tthis.$clippableContainer = null;\n\tthis.clipping = false;\n\tthis.clippedHorizontally = false;\n\tthis.clippedVertically = false;\n\tthis.$clippableScrollableContainer = null;\n\tthis.$clippableScroller = null;\n\tthis.$clippableWindow = null;\n\tthis.idealWidth = null;\n\tthis.idealHeight = null;\n\tthis.onClippableScrollHandler = this.clip.bind( this );\n\tthis.onClippableWindowResizeHandler = this.clip.bind( this );\n\n\t// Initialization\n\tif ( config.$clippableContainer ) {\n\t\tthis.setClippableContainer( config.$clippableContainer );\n\t}\n\tthis.setClippableElement( config.$clippable || this.$element );\n};\n\n/* Methods */\n\n/**\n * Set clippable element.\n *\n * If an element is already set, it will be cleaned up before setting up the new element.\n *\n * @param {jQuery} $clippable Element to make clippable\n */\nOO.ui.mixin.ClippableElement.prototype.setClippableElement = function ( $clippable ) {\n\tif ( this.$clippable ) {\n\t\tthis.$clippable.removeClass( 'oo-ui-clippableElement-clippable' );\n\t\tthis.$clippable.css( { width: '', height: '', overflowX: '', overflowY: '' } );\n\t\tOO.ui.Element.static.reconsiderScrollbars( this.$clippable[ 0 ] );\n\t}\n\n\tthis.$clippable = $clippable.addClass( 'oo-ui-clippableElement-clippable' );\n\tthis.clip();\n};\n\n/**\n * Set clippable container.\n *\n * This is the container that will be measured when deciding whether to clip. When clipping,\n * #$clippable will be resized in order to keep the clippable container fully visible.\n *\n * If the clippable container is unset, #$clippable will be used.\n *\n * @param {jQuery|null} $clippableContainer Container to keep visible, or null to unset\n */\nOO.ui.mixin.ClippableElement.prototype.setClippableContainer = function ( $clippableContainer ) {\n\tthis.$clippableContainer = $clippableContainer;\n\tif ( this.$clippable ) {\n\t\tthis.clip();\n\t}\n};\n\n/**\n * Toggle clipping.\n *\n * Do not turn clipping on until after the element is attached to the DOM and visible.\n *\n * @param {boolean} [clipping] Enable clipping, omit to toggle\n * @chainable\n */\nOO.ui.mixin.ClippableElement.prototype.toggleClipping = function ( clipping ) {\n\tclipping = clipping === undefined ? !this.clipping : !!clipping;\n\n\tif ( clipping && !this.warnedUnattached && !this.isElementAttached() ) {\n\t\tOO.ui.warnDeprecation( 'ClippableElement#toggleClipping: Before calling this method, the element must be attached to the DOM.' );\n\t\tthis.warnedUnattached = true;\n\t}\n\n\tif ( this.clipping !== clipping ) {\n\t\tthis.clipping = clipping;\n\t\tif ( clipping ) {\n\t\t\tthis.$clippableScrollableContainer = $( this.getClosestScrollableElementContainer() );\n\t\t\t// If the clippable container is the root, we have to listen to scroll events and check\n\t\t\t// jQuery.scrollTop on the window because of browser inconsistencies\n\t\t\tthis.$clippableScroller = this.$clippableScrollableContainer.is( 'html, body' ) ?\n\t\t\t\t$( OO.ui.Element.static.getWindow( this.$clippableScrollableContainer ) ) :\n\t\t\t\tthis.$clippableScrollableContainer;\n\t\t\tthis.$clippableScroller.on( 'scroll', this.onClippableScrollHandler );\n\t\t\tthis.$clippableWindow = $( this.getElementWindow() )\n\t\t\t\t.on( 'resize', this.onClippableWindowResizeHandler );\n\t\t\t// Initial clip after visible\n\t\t\tthis.clip();\n\t\t} else {\n\t\t\tthis.$clippable.css( {\n\t\t\t\twidth: '',\n\t\t\t\theight: '',\n\t\t\t\tmaxWidth: '',\n\t\t\t\tmaxHeight: '',\n\t\t\t\toverflowX: '',\n\t\t\t\toverflowY: ''\n\t\t\t} );\n\t\t\tOO.ui.Element.static.reconsiderScrollbars( this.$clippable[ 0 ] );\n\n\t\t\tthis.$clippableScrollableContainer = null;\n\t\t\tthis.$clippableScroller.off( 'scroll', this.onClippableScrollHandler );\n\t\t\tthis.$clippableScroller = null;\n\t\t\tthis.$clippableWindow.off( 'resize', this.onClippableWindowResizeHandler );\n\t\t\tthis.$clippableWindow = null;\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * Check if the element will be clipped to fit the visible area of the nearest scrollable container.\n *\n * @return {boolean} Element will be clipped to the visible area\n */\nOO.ui.mixin.ClippableElement.prototype.isClipping = function () {\n\treturn this.clipping;\n};\n\n/**\n * Check if the bottom or right of the element is being clipped by the nearest scrollable container.\n *\n * @return {boolean} Part of the element is being clipped\n */\nOO.ui.mixin.ClippableElement.prototype.isClipped = function () {\n\treturn this.clippedHorizontally || this.clippedVertically;\n};\n\n/**\n * Check if the right of the element is being clipped by the nearest scrollable container.\n *\n * @return {boolean} Part of the element is being clipped\n */\nOO.ui.mixin.ClippableElement.prototype.isClippedHorizontally = function () {\n\treturn this.clippedHorizontally;\n};\n\n/**\n * Check if the bottom of the element is being clipped by the nearest scrollable container.\n *\n * @return {boolean} Part of the element is being clipped\n */\nOO.ui.mixin.ClippableElement.prototype.isClippedVertically = function () {\n\treturn this.clippedVertically;\n};\n\n/**\n * Set the ideal size. These are the dimensions #$clippable will have when it's not being clipped.\n *\n * @param {number|string} [width] Width as a number of pixels or CSS string with unit suffix\n * @param {number|string} [height] Height as a number of pixels or CSS string with unit suffix\n */\nOO.ui.mixin.ClippableElement.prototype.setIdealSize = function ( width, height ) {\n\tthis.idealWidth = width;\n\tthis.idealHeight = height;\n\n\tif ( !this.clipping ) {\n\t\t// Update dimensions\n\t\tthis.$clippable.css( { width: width, height: height } );\n\t}\n\t// While clipping, idealWidth and idealHeight are not considered\n};\n\n/**\n * Clip element to visible boundaries and allow scrolling when needed. You should call this method\n * when the element's natural height changes.\n *\n * Element will be clipped the bottom or right of the element is within 10px of the edge of, or\n * overlapped by, the visible area of the nearest scrollable container.\n *\n * Because calling clip() when the natural height changes isn't always possible, we also set\n * max-height when the element isn't being clipped. This means that if the element tries to grow\n * beyond the edge, something reasonable will happen before clip() is called.\n *\n * @chainable\n */\nOO.ui.mixin.ClippableElement.prototype.clip = function () {\n\tvar $container, extraHeight, extraWidth, ccOffset,\n\t\t$scrollableContainer, scOffset, scHeight, scWidth,\n\t\tccWidth, scrollerIsWindow, scrollTop, scrollLeft,\n\t\tdesiredWidth, desiredHeight, allotedWidth, allotedHeight,\n\t\tnaturalWidth, naturalHeight, clipWidth, clipHeight,\n\t\tbuffer = 7; // Chosen by fair dice roll\n\n\tif ( !this.clipping ) {\n\t\t// this.$clippableScrollableContainer and this.$clippableWindow are null, so the below will fail\n\t\treturn this;\n\t}\n\n\t$container = this.$clippableContainer || this.$clippable;\n\textraHeight = $container.outerHeight() - this.$clippable.outerHeight();\n\textraWidth = $container.outerWidth() - this.$clippable.outerWidth();\n\tccOffset = $container.offset();\n\tif ( this.$clippableScrollableContainer.is( 'html, body' ) ) {\n\t\t$scrollableContainer = this.$clippableWindow;\n\t\tscOffset = { top: 0, left: 0 };\n\t} else {\n\t\t$scrollableContainer = this.$clippableScrollableContainer;\n\t\tscOffset = $scrollableContainer.offset();\n\t}\n\tscHeight = $scrollableContainer.innerHeight() - buffer;\n\tscWidth = $scrollableContainer.innerWidth() - buffer;\n\tccWidth = $container.outerWidth() + buffer;\n\tscrollerIsWindow = this.$clippableScroller[ 0 ] === this.$clippableWindow[ 0 ];\n\tscrollTop = scrollerIsWindow ? this.$clippableScroller.scrollTop() : 0;\n\tscrollLeft = scrollerIsWindow ? this.$clippableScroller.scrollLeft() : 0;\n\tdesiredWidth = ccOffset.left < 0 ?\n\t\tccWidth + ccOffset.left :\n\t\t( scOffset.left + scrollLeft + scWidth ) - ccOffset.left;\n\tdesiredHeight = ( scOffset.top + scrollTop + scHeight ) - ccOffset.top;\n\t// It should never be desirable to exceed the dimensions of the browser viewport... right?\n\tdesiredWidth = Math.min( desiredWidth, document.documentElement.clientWidth );\n\tdesiredHeight = Math.min( desiredHeight, document.documentElement.clientHeight );\n\tallotedWidth = Math.ceil( desiredWidth - extraWidth );\n\tallotedHeight = Math.ceil( desiredHeight - extraHeight );\n\tnaturalWidth = this.$clippable.prop( 'scrollWidth' );\n\tnaturalHeight = this.$clippable.prop( 'scrollHeight' );\n\tclipWidth = allotedWidth < naturalWidth;\n\tclipHeight = allotedHeight < naturalHeight;\n\n\tif ( clipWidth ) {\n\t\t// The order matters here. If overflow is not set first, Chrome displays bogus scrollbars. (T157672)\n\t\t// Forcing a reflow is a smaller workaround than calling reconsiderScrollbars() for this case.\n\t\tthis.$clippable.css( 'overflowX', 'scroll' );\n\t\tvoid this.$clippable[ 0 ].offsetHeight; // Force reflow\n\t\tthis.$clippable.css( {\n\t\t\twidth: Math.max( 0, allotedWidth ),\n\t\t\tmaxWidth: ''\n\t\t} );\n\t} else {\n\t\tthis.$clippable.css( {\n\t\t\toverflowX: '',\n\t\t\twidth: this.idealWidth || '',\n\t\t\tmaxWidth: Math.max( 0, allotedWidth )\n\t\t} );\n\t}\n\tif ( clipHeight ) {\n\t\t// The order matters here. If overflow is not set first, Chrome displays bogus scrollbars. (T157672)\n\t\t// Forcing a reflow is a smaller workaround than calling reconsiderScrollbars() for this case.\n\t\tthis.$clippable.css( 'overflowY', 'scroll' );\n\t\tvoid this.$clippable[ 0 ].offsetHeight; // Force reflow\n\t\tthis.$clippable.css( {\n\t\t\theight: Math.max( 0, allotedHeight ),\n\t\t\tmaxHeight: ''\n\t\t} );\n\t} else {\n\t\tthis.$clippable.css( {\n\t\t\toverflowY: '',\n\t\t\theight: this.idealHeight || '',\n\t\t\tmaxHeight: Math.max( 0, allotedHeight )\n\t\t} );\n\t}\n\n\t// If we stopped clipping in at least one of the dimensions\n\tif ( ( this.clippedHorizontally && !clipWidth ) || ( this.clippedVertically && !clipHeight ) ) {\n\t\tOO.ui.Element.static.reconsiderScrollbars( this.$clippable[ 0 ] );\n\t}\n\n\tthis.clippedHorizontally = clipWidth;\n\tthis.clippedVertically = clipHeight;\n\n\treturn this;\n};\n","/**\n * PopupWidget is a container for content. The popup is overlaid and positioned absolutely.\n * By default, each popup has an anchor that points toward its origin.\n * Please see the [OOjs UI documentation on Mediawiki] [1] for more information and examples.\n *\n * Unlike most widgets, PopupWidget is initially hidden and must be shown by calling #toggle.\n *\n *     @example\n *     // A popup widget.\n *     var popup = new OO.ui.PopupWidget( {\n *         $content: $( '<p>Hi there!</p>' ),\n *         padded: true,\n *         width: 300\n *     } );\n *\n *     $( 'body' ).append( popup.$element );\n *     // To display the popup, toggle the visibility to 'true'.\n *     popup.toggle( true );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Popups\n *\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.LabelElement\n * @mixins OO.ui.mixin.ClippableElement\n * @mixins OO.ui.mixin.FloatableElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {number} [width=320] Width of popup in pixels\n * @cfg {number} [height] Height of popup in pixels. Omit to use the automatic height.\n * @cfg {boolean} [anchor=true] Show anchor pointing to origin of popup\n * @cfg {string} [position='below'] Where to position the popup relative to $floatableContainer\n *  'above': Put popup above $floatableContainer; anchor points down to the horizontal center\n *           of $floatableContainer\n *  'below': Put popup below $floatableContainer; anchor points up to the horizontal center\n *           of $floatableContainer\n *  'before': Put popup to the left (LTR) / right (RTL) of $floatableContainer; anchor points\n *            endwards (right/left) to the vertical center of $floatableContainer\n *  'after': Put popup to the right (LTR) / left (RTL) of $floatableContainer; anchor points\n *            startwards (left/right) to the vertical center of $floatableContainer\n * @cfg {string} [align='center'] How to align the popup to $floatableContainer\n *  'forwards': If position is above/below, move the popup as far endwards (right in LTR, left in RTL)\n *              as possible while still keeping the anchor within the popup;\n *              if position is before/after, move the popup as far downwards as possible.\n *  'backwards': If position is above/below, move the popup as far startwards (left in LTR, right in RTL)\n *               as possible while still keeping the anchor within the popup;\n *               if position in before/after, move the popup as far upwards as possible.\n *  'center': Horizontally (if position is above/below) or vertically (before/after) align the center\n *            of the popup with the center of $floatableContainer.\n * 'force-left': Alias for 'forwards' in LTR and 'backwards' in RTL\n * 'force-right': Alias for 'backwards' in RTL and 'forwards' in LTR\n * @cfg {jQuery} [$container] Constrain the popup to the boundaries of the specified container.\n *  See the [OOjs UI docs on MediaWiki][3] for an example.\n *  [3]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Popups#containerExample\n * @cfg {number} [containerPadding=10] Padding between the popup and its container, specified as a number of pixels.\n * @cfg {jQuery} [$content] Content to append to the popup's body\n * @cfg {jQuery} [$footer] Content to append to the popup's footer\n * @cfg {boolean} [autoClose=false] Automatically close the popup when it loses focus.\n * @cfg {jQuery} [$autoCloseIgnore] Elements that will not close the popup when clicked.\n *  This config option is only relevant if #autoClose is set to `true`. See the [OOjs UI docs on MediaWiki][2]\n *  for an example.\n *  [2]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Popups#autocloseExample\n * @cfg {boolean} [head=false] Show a popup header that contains a #label (if specified) and close\n *  button.\n * @cfg {boolean} [padded=false] Add padding to the popup's body\n */\nOO.ui.PopupWidget = function OoUiPopupWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.PopupWidget.parent.call( this, config );\n\n\t// Properties (must be set before ClippableElement constructor call)\n\tthis.$body = $( '<div>' );\n\tthis.$popup = $( '<div>' );\n\n\t// Mixin constructors\n\tOO.ui.mixin.LabelElement.call( this, config );\n\tOO.ui.mixin.ClippableElement.call( this, $.extend( {}, config, {\n\t\t$clippable: this.$body,\n\t\t$clippableContainer: this.$popup\n\t} ) );\n\tOO.ui.mixin.FloatableElement.call( this, config );\n\n\t// Properties\n\tthis.$anchor = $( '<div>' );\n\t// If undefined, will be computed lazily in updateDimensions()\n\tthis.$container = config.$container;\n\tthis.containerPadding = config.containerPadding !== undefined ? config.containerPadding : 10;\n\tthis.autoClose = !!config.autoClose;\n\tthis.$autoCloseIgnore = config.$autoCloseIgnore;\n\tthis.transitionTimeout = null;\n\tthis.anchored = false;\n\tthis.width = config.width !== undefined ? config.width : 320;\n\tthis.height = config.height !== undefined ? config.height : null;\n\tthis.onMouseDownHandler = this.onMouseDown.bind( this );\n\tthis.onDocumentKeyDownHandler = this.onDocumentKeyDown.bind( this );\n\n\t// Initialization\n\tthis.toggleAnchor( config.anchor === undefined || config.anchor );\n\tthis.setAlignment( config.align || 'center' );\n\tthis.setPosition( config.position || 'below' );\n\tthis.$body.addClass( 'oo-ui-popupWidget-body' );\n\tthis.$anchor.addClass( 'oo-ui-popupWidget-anchor' );\n\tthis.$popup\n\t\t.addClass( 'oo-ui-popupWidget-popup' )\n\t\t.append( this.$body );\n\tthis.$element\n\t\t.addClass( 'oo-ui-popupWidget' )\n\t\t.append( this.$popup, this.$anchor );\n\t// Move content, which was added to #$element by OO.ui.Widget, to the body\n\t// FIXME This is gross, we should use '$body' or something for the config\n\tif ( config.$content instanceof jQuery ) {\n\t\tthis.$body.append( config.$content );\n\t}\n\n\tif ( config.padded ) {\n\t\tthis.$body.addClass( 'oo-ui-popupWidget-body-padded' );\n\t}\n\n\tif ( config.head ) {\n\t\tthis.closeButton = new OO.ui.ButtonWidget( { framed: false, icon: 'close' } );\n\t\tthis.closeButton.connect( this, { click: 'onCloseButtonClick' } );\n\t\tthis.$head = $( '<div>' )\n\t\t\t.addClass( 'oo-ui-popupWidget-head' )\n\t\t\t.append( this.$label, this.closeButton.$element );\n\t\tthis.$popup.prepend( this.$head );\n\t}\n\n\tif ( config.$footer ) {\n\t\tthis.$footer = $( '<div>' )\n\t\t\t.addClass( 'oo-ui-popupWidget-footer' )\n\t\t\t.append( config.$footer );\n\t\tthis.$popup.append( this.$footer );\n\t}\n\n\t// Initially hidden - using #toggle may cause errors if subclasses override toggle with methods\n\t// that reference properties not initialized at that time of parent class construction\n\t// TODO: Find a better way to handle post-constructor setup\n\tthis.visible = false;\n\tthis.$element.addClass( 'oo-ui-element-hidden' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.PopupWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.PopupWidget, OO.ui.mixin.LabelElement );\nOO.mixinClass( OO.ui.PopupWidget, OO.ui.mixin.ClippableElement );\nOO.mixinClass( OO.ui.PopupWidget, OO.ui.mixin.FloatableElement );\n\n/* Events */\n\n/**\n * @event ready\n *\n * The popup is ready: it is visible and has been positioned and clipped.\n */\n\n/* Methods */\n\n/**\n * Handles mouse down events.\n *\n * @private\n * @param {MouseEvent} e Mouse down event\n */\nOO.ui.PopupWidget.prototype.onMouseDown = function ( e ) {\n\tif (\n\t\tthis.isVisible() &&\n\t\t!OO.ui.contains( this.$element.add( this.$autoCloseIgnore ).get(), e.target, true )\n\t) {\n\t\tthis.toggle( false );\n\t}\n};\n\n/**\n * Bind mouse down listener.\n *\n * @private\n */\nOO.ui.PopupWidget.prototype.bindMouseDownListener = function () {\n\t// Capture clicks outside popup\n\tthis.getElementWindow().addEventListener( 'mousedown', this.onMouseDownHandler, true );\n};\n\n/**\n * Handles close button click events.\n *\n * @private\n */\nOO.ui.PopupWidget.prototype.onCloseButtonClick = function () {\n\tif ( this.isVisible() ) {\n\t\tthis.toggle( false );\n\t}\n};\n\n/**\n * Unbind mouse down listener.\n *\n * @private\n */\nOO.ui.PopupWidget.prototype.unbindMouseDownListener = function () {\n\tthis.getElementWindow().removeEventListener( 'mousedown', this.onMouseDownHandler, true );\n};\n\n/**\n * Handles key down events.\n *\n * @private\n * @param {KeyboardEvent} e Key down event\n */\nOO.ui.PopupWidget.prototype.onDocumentKeyDown = function ( e ) {\n\tif (\n\t\te.which === OO.ui.Keys.ESCAPE &&\n\t\tthis.isVisible()\n\t) {\n\t\tthis.toggle( false );\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t}\n};\n\n/**\n * Bind key down listener.\n *\n * @private\n */\nOO.ui.PopupWidget.prototype.bindKeyDownListener = function () {\n\tthis.getElementWindow().addEventListener( 'keydown', this.onDocumentKeyDownHandler, true );\n};\n\n/**\n * Unbind key down listener.\n *\n * @private\n */\nOO.ui.PopupWidget.prototype.unbindKeyDownListener = function () {\n\tthis.getElementWindow().removeEventListener( 'keydown', this.onDocumentKeyDownHandler, true );\n};\n\n/**\n * Show, hide, or toggle the visibility of the anchor.\n *\n * @param {boolean} [show] Show anchor, omit to toggle\n */\nOO.ui.PopupWidget.prototype.toggleAnchor = function ( show ) {\n\tshow = show === undefined ? !this.anchored : !!show;\n\n\tif ( this.anchored !== show ) {\n\t\tif ( show ) {\n\t\t\tthis.$element.addClass( 'oo-ui-popupWidget-anchored' );\n\t\t\tthis.$element.addClass( 'oo-ui-popupWidget-anchored-' + this.anchorEdge );\n\t\t} else {\n\t\t\tthis.$element.removeClass( 'oo-ui-popupWidget-anchored' );\n\t\t\tthis.$element.removeClass( 'oo-ui-popupWidget-anchored-' + this.anchorEdge );\n\t\t}\n\t\tthis.anchored = show;\n\t}\n};\n/**\n * Change which edge the anchor appears on.\n *\n * @param {string} edge 'top', 'bottom', 'start' or 'end'\n */\nOO.ui.PopupWidget.prototype.setAnchorEdge = function ( edge ) {\n\tif ( [ 'top', 'bottom', 'start', 'end' ].indexOf( edge ) === -1 ) {\n\t\tthrow new Error( 'Invalid value for edge: ' + edge );\n\t}\n\tif ( this.anchorEdge !== null ) {\n\t\tthis.$element.removeClass( 'oo-ui-popupWidget-anchored-' + this.anchorEdge );\n\t}\n\tthis.anchorEdge = edge;\n\tif ( this.anchored ) {\n\t\tthis.$element.addClass( 'oo-ui-popupWidget-anchored-' + edge );\n\t}\n};\n\n/**\n * Check if the anchor is visible.\n *\n * @return {boolean} Anchor is visible\n */\nOO.ui.PopupWidget.prototype.hasAnchor = function () {\n\treturn this.anchored;\n};\n\n/**\n * Toggle visibility of the popup. The popup is initially hidden and must be shown by calling\n * `.toggle( true )` after its #$element is attached to the DOM.\n *\n * Do not show the popup while it is not attached to the DOM. The calculations required to display\n * it in the right place and with the right dimensions only work correctly while it is attached.\n * Side-effects may include broken interface and exceptions being thrown. This wasn't always\n * strictly enforced, so currently it only generates a warning in the browser console.\n *\n * @fires ready\n * @inheritdoc\n */\nOO.ui.PopupWidget.prototype.toggle = function ( show ) {\n\tvar change;\n\tshow = show === undefined ? !this.isVisible() : !!show;\n\n\tchange = show !== this.isVisible();\n\n\tif ( show && !this.warnedUnattached && !this.isElementAttached() ) {\n\t\tOO.ui.warnDeprecation( 'PopupWidget#toggle: Before calling this method, the popup must be attached to the DOM.' );\n\t\tthis.warnedUnattached = true;\n\t}\n\tif ( show && !this.$floatableContainer && this.isElementAttached() ) {\n\t\t// Fall back to the parent node if the floatableContainer is not set\n\t\tthis.setFloatableContainer( this.$element.parent() );\n\t}\n\n\t// Parent method\n\tOO.ui.PopupWidget.parent.prototype.toggle.call( this, show );\n\n\tif ( change ) {\n\t\tthis.togglePositioning( show && !!this.$floatableContainer );\n\n\t\tif ( show ) {\n\t\t\tif ( this.autoClose ) {\n\t\t\t\tthis.bindMouseDownListener();\n\t\t\t\tthis.bindKeyDownListener();\n\t\t\t}\n\t\t\tthis.updateDimensions();\n\t\t\tthis.toggleClipping( true );\n\t\t\tthis.emit( 'ready' );\n\t\t} else {\n\t\t\tthis.toggleClipping( false );\n\t\t\tif ( this.autoClose ) {\n\t\t\t\tthis.unbindMouseDownListener();\n\t\t\t\tthis.unbindKeyDownListener();\n\t\t\t}\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * Set the size of the popup.\n *\n * Changing the size may also change the popup's position depending on the alignment.\n *\n * @param {number} width Width in pixels\n * @param {number} height Height in pixels\n * @param {boolean} [transition=false] Use a smooth transition\n * @chainable\n */\nOO.ui.PopupWidget.prototype.setSize = function ( width, height, transition ) {\n\tthis.width = width;\n\tthis.height = height !== undefined ? height : null;\n\tif ( this.isVisible() ) {\n\t\tthis.updateDimensions( transition );\n\t}\n};\n\n/**\n * Update the size and position.\n *\n * Only use this to keep the popup properly anchored. Use #setSize to change the size, and this will\n * be called automatically.\n *\n * @param {boolean} [transition=false] Use a smooth transition\n * @chainable\n */\nOO.ui.PopupWidget.prototype.updateDimensions = function ( transition ) {\n\tvar widget = this;\n\n\t// Prevent transition from being interrupted\n\tclearTimeout( this.transitionTimeout );\n\tif ( transition ) {\n\t\t// Enable transition\n\t\tthis.$element.addClass( 'oo-ui-popupWidget-transitioning' );\n\t}\n\n\tthis.position();\n\n\tif ( transition ) {\n\t\t// Prevent transitioning after transition is complete\n\t\tthis.transitionTimeout = setTimeout( function () {\n\t\t\twidget.$element.removeClass( 'oo-ui-popupWidget-transitioning' );\n\t\t}, 200 );\n\t} else {\n\t\t// Prevent transitioning immediately\n\t\tthis.$element.removeClass( 'oo-ui-popupWidget-transitioning' );\n\t}\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.PopupWidget.prototype.computePosition = function () {\n\tvar direction, align, vertical, start, end, near, far, sizeProp, popupSize, anchorSize, anchorPos,\n\t\tanchorOffset, anchorMargin, parentPosition, positionProp, positionAdjustment, floatablePos,\n\t\toffsetParentPos, containerPos,\n\t\tpopupPos = {},\n\t\tanchorCss = { left: '', right: '', top: '', bottom: '' },\n\t\talignMap = {\n\t\t\tltr: {\n\t\t\t\t'force-left': 'backwards',\n\t\t\t\t'force-right': 'forwards'\n\t\t\t},\n\t\t\trtl: {\n\t\t\t\t'force-left': 'forwards',\n\t\t\t\t'force-right': 'backwards'\n\t\t\t}\n\t\t},\n\t\tanchorEdgeMap = {\n\t\t\tabove: 'bottom',\n\t\t\tbelow: 'top',\n\t\t\tbefore: 'end',\n\t\t\tafter: 'start'\n\t\t},\n\t\thPosMap = {\n\t\t\tforwards: 'start',\n\t\t\tcenter: 'center',\n\t\t\tbackwards: this.anchored ? 'before' : 'end'\n\t\t},\n\t\tvPosMap = {\n\t\t\tforwards: 'top',\n\t\t\tcenter: 'center',\n\t\t\tbackwards: 'bottom'\n\t\t};\n\n\tif ( !this.$container ) {\n\t\t// Lazy-initialize $container if not specified in constructor\n\t\tthis.$container = $( this.getClosestScrollableElementContainer() );\n\t}\n\tdirection = this.$container.css( 'direction' );\n\n\t// Set height and width before we do anything else, since it might cause our measurements\n\t// to change (e.g. due to scrollbars appearing or disappearing), and it also affects centering\n\tthis.$popup.css( {\n\t\twidth: this.width,\n\t\theight: this.height !== null ? this.height : 'auto'\n\t} );\n\n\talign = alignMap[ direction ][ this.align ] || this.align;\n\t// If the popup is positioned before or after, then the anchor positioning is vertical, otherwise horizontal\n\tvertical = this.popupPosition === 'before' || this.popupPosition === 'after';\n\tstart = vertical ? 'top' : ( direction === 'rtl' ? 'right' : 'left' );\n\tend = vertical ? 'bottom' : ( direction === 'rtl' ? 'left' : 'right' );\n\tnear = vertical ? 'top' : 'left';\n\tfar = vertical ? 'bottom' : 'right';\n\tsizeProp = vertical ? 'Height' : 'Width';\n\tpopupSize = vertical ? ( this.height || this.$popup.height() ) : this.width;\n\n\tthis.setAnchorEdge( anchorEdgeMap[ this.popupPosition ] );\n\tthis.horizontalPosition = vertical ? this.popupPosition : hPosMap[ align ];\n\tthis.verticalPosition = vertical ? vPosMap[ align ] : this.popupPosition;\n\n\t// Parent method\n\tparentPosition = OO.ui.mixin.FloatableElement.prototype.computePosition.call( this );\n\t// Find out which property FloatableElement used for positioning, and adjust that value\n\tpositionProp = vertical ?\n\t\t( parentPosition.top !== '' ? 'top' : 'bottom' ) :\n\t\t( parentPosition.left !== '' ? 'left' : 'right' );\n\n\t// Figure out where the near and far edges of the popup and $floatableContainer are\n\tfloatablePos = this.$floatableContainer.offset();\n\tfloatablePos[ far ] = floatablePos[ near ] + this.$floatableContainer[ 'outer' + sizeProp ]();\n\t// Measure where the offsetParent is and compute our position based on that and parentPosition\n\toffsetParentPos = this.$element.offsetParent().offset();\n\n\tif ( positionProp === near ) {\n\t\tpopupPos[ near ] = offsetParentPos[ near ] + parentPosition[ near ];\n\t\tpopupPos[ far ] = popupPos[ near ] + popupSize;\n\t} else {\n\t\tpopupPos[ far ] = offsetParentPos[ near ] +\n\t\t\tthis.$element.offsetParent()[ 'inner' + sizeProp ]() - parentPosition[ far ];\n\t\tpopupPos[ near ] = popupPos[ far ] - popupSize;\n\t}\n\n\tif ( this.anchored ) {\n\t\t// Position the anchor (which is positioned relative to the popup) to point to $floatableContainer\n\t\tanchorPos = ( floatablePos[ start ] + floatablePos[ end ] ) / 2;\n\t\tanchorOffset = ( start === far ? -1 : 1 ) * ( anchorPos - popupPos[ start ] );\n\n\t\t// If the anchor is less than 2*anchorSize from either edge, move the popup to make more space\n\t\t// this.$anchor.width()/height() returns 0 because of the CSS trickery we use, so use scrollWidth/Height\n\t\tanchorSize = this.$anchor[ 0 ][ 'scroll' + sizeProp ];\n\t\tanchorMargin = parseFloat( this.$anchor.css( 'margin-' + start ) );\n\t\tif ( anchorOffset + anchorMargin < 2 * anchorSize ) {\n\t\t\t// Not enough space for the anchor on the start side; pull the popup startwards\n\t\t\tpositionAdjustment = ( positionProp === start ? -1 : 1 ) *\n\t\t\t\t( 2 * anchorSize - ( anchorOffset + anchorMargin ) );\n\t\t} else if ( anchorOffset + anchorMargin > popupSize - 2 * anchorSize ) {\n\t\t\t// Not enough space for the anchor on the end side; pull the popup endwards\n\t\t\tpositionAdjustment = ( positionProp === end ? -1 : 1 ) *\n\t\t\t\t( anchorOffset + anchorMargin - ( popupSize - 2 * anchorSize ) );\n\t\t} else {\n\t\t\tpositionAdjustment = 0;\n\t\t}\n\t} else {\n\t\tpositionAdjustment = 0;\n\t}\n\n\t// Check if the popup will go beyond the edge of this.$container\n\tcontainerPos = this.$container.offset();\n\tcontainerPos[ far ] = containerPos[ near ] + this.$container[ 'inner' + sizeProp ]();\n\t// Take into account how much the popup will move because of the adjustments we're going to make\n\tpopupPos[ near ] += ( positionProp === near ? 1 : -1 ) * positionAdjustment;\n\tpopupPos[ far ] += ( positionProp === near ? 1 : -1 ) * positionAdjustment;\n\tif ( containerPos[ near ] + this.containerPadding > popupPos[ near ] ) {\n\t\t// Popup goes beyond the near (left/top) edge, move it to the right/bottom\n\t\tpositionAdjustment += ( positionProp === near ? 1 : -1 ) *\n\t\t\t( containerPos[ near ] + this.containerPadding - popupPos[ near ] );\n\t} else if ( containerPos[ far ] - this.containerPadding < popupPos[ far ] ) {\n\t\t// Popup goes beyond the far (right/bottom) edge, move it to the left/top\n\t\tpositionAdjustment += ( positionProp === far ? 1 : -1 ) *\n\t\t\t( popupPos[ far ] - ( containerPos[ far ] - this.containerPadding ) );\n\t}\n\n\tif ( this.anchored ) {\n\t\t// Adjust anchorOffset for positionAdjustment\n\t\tanchorOffset += ( positionProp === start ? -1 : 1 ) * positionAdjustment;\n\n\t\t// Position the anchor\n\t\tanchorCss[ start ] = anchorOffset;\n\t\tthis.$anchor.css( anchorCss );\n\t}\n\n\t// Move the popup if needed\n\tparentPosition[ positionProp ] += positionAdjustment;\n\n\treturn parentPosition;\n};\n\n/**\n * Set popup alignment\n *\n * @param {string} [align=center] Alignment of the popup, `center`, `force-left`, `force-right`,\n *  `backwards` or `forwards`.\n */\nOO.ui.PopupWidget.prototype.setAlignment = function ( align ) {\n\t// Validate alignment\n\tif ( [ 'force-left', 'force-right', 'backwards', 'forwards', 'center' ].indexOf( align ) > -1 ) {\n\t\tthis.align = align;\n\t} else {\n\t\tthis.align = 'center';\n\t}\n\tthis.position();\n};\n\n/**\n * Get popup alignment\n *\n * @return {string} Alignment of the popup, `center`, `force-left`, `force-right`,\n *  `backwards` or `forwards`.\n */\nOO.ui.PopupWidget.prototype.getAlignment = function () {\n\treturn this.align;\n};\n\n/**\n * Change the positioning of the popup.\n *\n * @param {string} position 'above', 'below', 'before' or 'after'\n */\nOO.ui.PopupWidget.prototype.setPosition = function ( position ) {\n\tif ( [ 'above', 'below', 'before', 'after' ].indexOf( position ) === -1 ) {\n\t\tposition = 'below';\n\t}\n\tthis.popupPosition = position;\n\tthis.position();\n};\n\n/**\n * Get popup positioning.\n *\n * @return {string} 'above', 'below', 'before' or 'after'\n */\nOO.ui.PopupWidget.prototype.getPosition = function () {\n\treturn this.popupPosition;\n};\n","/**\n * PopupElement is mixed into other classes to generate a {@link OO.ui.PopupWidget popup widget}.\n * A popup is a container for content. It is overlaid and positioned absolutely. By default, each\n * popup has an anchor, which is an arrow-like protrusion that points toward the popup’s origin.\n * See {@link OO.ui.PopupWidget PopupWidget} for an example.\n *\n * @abstract\n * @class\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {Object} [popup] Configuration to pass to popup\n * @cfg {boolean} [popup.autoClose=true] Popup auto-closes when it loses focus\n */\nOO.ui.mixin.PopupElement = function OoUiMixinPopupElement( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties\n\tthis.popup = new OO.ui.PopupWidget( $.extend(\n\t\t{\n\t\t\tautoClose: true,\n\t\t\t$floatableContainer: this.$element\n\t\t},\n\t\tconfig.popup,\n\t\t{\n\t\t\t$autoCloseIgnore: this.$element.add( config.popup && config.popup.$autoCloseIgnore )\n\t\t}\n\t) );\n};\n\n/* Methods */\n\n/**\n * Get popup.\n *\n * @return {OO.ui.PopupWidget} Popup widget\n */\nOO.ui.mixin.PopupElement.prototype.getPopup = function () {\n\treturn this.popup;\n};\n","/**\n * PopupButtonWidgets toggle the visibility of a contained {@link OO.ui.PopupWidget PopupWidget},\n * which is used to display additional information or options.\n *\n *     @example\n *     // Example of a popup button.\n *     var popupButton = new OO.ui.PopupButtonWidget( {\n *         label: 'Popup button with options',\n *         icon: 'menu',\n *         popup: {\n *             $content: $( '<p>Additional options here.</p>' ),\n *             padded: true,\n *             align: 'force-left'\n *         }\n *     } );\n *     // Append the button to the DOM.\n *     $( 'body' ).append( popupButton.$element );\n *\n * @class\n * @extends OO.ui.ButtonWidget\n * @mixins OO.ui.mixin.PopupElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {jQuery} [$overlay] Render the popup into a separate layer. This configuration is useful in cases where\n *  the expanded popup is larger than its containing `<div>`. The specified overlay layer is usually on top of the\n *  containing `<div>` and has a larger area. By default, the popup uses relative positioning.\n *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.\n */\nOO.ui.PopupButtonWidget = function OoUiPopupButtonWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.PopupButtonWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.PopupElement.call( this, config );\n\n\t// Properties\n\tthis.$overlay = config.$overlay || this.$element;\n\n\t// Events\n\tthis.connect( this, { click: 'onAction' } );\n\n\t// Initialization\n\tthis.$element\n\t\t.addClass( 'oo-ui-popupButtonWidget' )\n\t\t.attr( 'aria-haspopup', 'true' );\n\tthis.popup.$element\n\t\t.addClass( 'oo-ui-popupButtonWidget-popup' )\n\t\t.toggleClass( 'oo-ui-popupButtonWidget-framed-popup', this.isFramed() )\n\t\t.toggleClass( 'oo-ui-popupButtonWidget-frameless-popup', !this.isFramed() );\n\tthis.$overlay.append( this.popup.$element );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.PopupButtonWidget, OO.ui.ButtonWidget );\nOO.mixinClass( OO.ui.PopupButtonWidget, OO.ui.mixin.PopupElement );\n\n/* Methods */\n\n/**\n * Handle the button action being triggered.\n *\n * @private\n */\nOO.ui.PopupButtonWidget.prototype.onAction = function () {\n\tthis.popup.toggle();\n};\n","/**\n * Mixin for OO.ui.Widget subclasses to provide OO.ui.mixin.GroupElement.\n *\n * Use together with OO.ui.mixin.ItemWidget to make disabled state inheritable.\n *\n * @private\n * @abstract\n * @class\n * @mixins OO.ui.mixin.GroupElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.mixin.GroupWidget = function OoUiMixinGroupWidget( config ) {\n\t// Mixin constructors\n\tOO.ui.mixin.GroupElement.call( this, config );\n};\n\n/* Setup */\n\nOO.mixinClass( OO.ui.mixin.GroupWidget, OO.ui.mixin.GroupElement );\n\n/* Methods */\n\n/**\n * Set the disabled state of the widget.\n *\n * This will also update the disabled state of child widgets.\n *\n * @param {boolean} disabled Disable widget\n * @chainable\n */\nOO.ui.mixin.GroupWidget.prototype.setDisabled = function ( disabled ) {\n\tvar i, len;\n\n\t// Parent method\n\t// Note: Calling #setDisabled this way assumes this is mixed into an OO.ui.Widget\n\tOO.ui.Widget.prototype.setDisabled.call( this, disabled );\n\n\t// During construction, #setDisabled is called before the OO.ui.mixin.GroupElement constructor\n\tif ( this.items ) {\n\t\tfor ( i = 0, len = this.items.length; i < len; i++ ) {\n\t\t\tthis.items[ i ].updateDisabled();\n\t\t}\n\t}\n\n\treturn this;\n};\n","/**\n * Mixin for widgets used as items in widgets that mix in OO.ui.mixin.GroupWidget.\n *\n * Item widgets have a reference to a OO.ui.mixin.GroupWidget while they are attached to the group. This\n * allows bidirectional communication.\n *\n * Use together with OO.ui.mixin.GroupWidget to make disabled state inheritable.\n *\n * @private\n * @abstract\n * @class\n *\n * @constructor\n */\nOO.ui.mixin.ItemWidget = function OoUiMixinItemWidget() {\n\t//\n};\n\n/* Methods */\n\n/**\n * Check if widget is disabled.\n *\n * Checks parent if present, making disabled state inheritable.\n *\n * @return {boolean} Widget is disabled\n */\nOO.ui.mixin.ItemWidget.prototype.isDisabled = function () {\n\treturn this.disabled ||\n\t\t( this.elementGroup instanceof OO.ui.Widget && this.elementGroup.isDisabled() );\n};\n\n/**\n * Set group element is in.\n *\n * @param {OO.ui.mixin.GroupElement|null} group Group element, null if none\n * @chainable\n */\nOO.ui.mixin.ItemWidget.prototype.setElementGroup = function ( group ) {\n\t// Parent method\n\t// Note: Calling #setElementGroup this way assumes this is mixed into an OO.ui.Element\n\tOO.ui.Element.prototype.setElementGroup.call( this, group );\n\n\t// Initialize item disabled states\n\tthis.updateDisabled();\n\n\treturn this;\n};\n","/**\n * OptionWidgets are special elements that can be selected and configured with data. The\n * data is often unique for each option, but it does not have to be. OptionWidgets are used\n * with OO.ui.SelectWidget to create a selection of mutually exclusive options. For more information\n * and examples, please see the [OOjs UI documentation on MediaWiki][1].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options\n *\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.ItemWidget\n * @mixins OO.ui.mixin.LabelElement\n * @mixins OO.ui.mixin.FlaggedElement\n * @mixins OO.ui.mixin.AccessKeyedElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.OptionWidget = function OoUiOptionWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.OptionWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.ItemWidget.call( this );\n\tOO.ui.mixin.LabelElement.call( this, config );\n\tOO.ui.mixin.FlaggedElement.call( this, config );\n\tOO.ui.mixin.AccessKeyedElement.call( this, config );\n\n\t// Properties\n\tthis.selected = false;\n\tthis.highlighted = false;\n\tthis.pressed = false;\n\n\t// Initialization\n\tthis.$element\n\t\t.data( 'oo-ui-optionWidget', this )\n\t\t// Allow programmatic focussing (and by accesskey), but not tabbing\n\t\t.attr( 'tabindex', '-1' )\n\t\t.attr( 'role', 'option' )\n\t\t.attr( 'aria-selected', 'false' )\n\t\t.addClass( 'oo-ui-optionWidget' )\n\t\t.append( this.$label );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.OptionWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.OptionWidget, OO.ui.mixin.ItemWidget );\nOO.mixinClass( OO.ui.OptionWidget, OO.ui.mixin.LabelElement );\nOO.mixinClass( OO.ui.OptionWidget, OO.ui.mixin.FlaggedElement );\nOO.mixinClass( OO.ui.OptionWidget, OO.ui.mixin.AccessKeyedElement );\n\n/* Static Properties */\n\n/**\n * Whether this option can be selected. See #setSelected.\n *\n * @static\n * @inheritable\n * @property {boolean}\n */\nOO.ui.OptionWidget.static.selectable = true;\n\n/**\n * Whether this option can be highlighted. See #setHighlighted.\n *\n * @static\n * @inheritable\n * @property {boolean}\n */\nOO.ui.OptionWidget.static.highlightable = true;\n\n/**\n * Whether this option can be pressed. See #setPressed.\n *\n * @static\n * @inheritable\n * @property {boolean}\n */\nOO.ui.OptionWidget.static.pressable = true;\n\n/**\n * Whether this option will be scrolled into view when it is selected.\n *\n * @static\n * @inheritable\n * @property {boolean}\n */\nOO.ui.OptionWidget.static.scrollIntoViewOnSelect = false;\n\n/* Methods */\n\n/**\n * Check if the option can be selected.\n *\n * @return {boolean} Item is selectable\n */\nOO.ui.OptionWidget.prototype.isSelectable = function () {\n\treturn this.constructor.static.selectable && !this.isDisabled() && this.isVisible();\n};\n\n/**\n * Check if the option can be highlighted. A highlight indicates that the option\n * may be selected when a user presses enter or clicks. Disabled items cannot\n * be highlighted.\n *\n * @return {boolean} Item is highlightable\n */\nOO.ui.OptionWidget.prototype.isHighlightable = function () {\n\treturn this.constructor.static.highlightable && !this.isDisabled() && this.isVisible();\n};\n\n/**\n * Check if the option can be pressed. The pressed state occurs when a user mouses\n * down on an item, but has not yet let go of the mouse.\n *\n * @return {boolean} Item is pressable\n */\nOO.ui.OptionWidget.prototype.isPressable = function () {\n\treturn this.constructor.static.pressable && !this.isDisabled() && this.isVisible();\n};\n\n/**\n * Check if the option is selected.\n *\n * @return {boolean} Item is selected\n */\nOO.ui.OptionWidget.prototype.isSelected = function () {\n\treturn this.selected;\n};\n\n/**\n * Check if the option is highlighted. A highlight indicates that the\n * item may be selected when a user presses enter or clicks.\n *\n * @return {boolean} Item is highlighted\n */\nOO.ui.OptionWidget.prototype.isHighlighted = function () {\n\treturn this.highlighted;\n};\n\n/**\n * Check if the option is pressed. The pressed state occurs when a user mouses\n * down on an item, but has not yet let go of the mouse. The item may appear\n * selected, but it will not be selected until the user releases the mouse.\n *\n * @return {boolean} Item is pressed\n */\nOO.ui.OptionWidget.prototype.isPressed = function () {\n\treturn this.pressed;\n};\n\n/**\n * Set the option’s selected state. In general, all modifications to the selection\n * should be handled by the SelectWidget’s {@link OO.ui.SelectWidget#selectItem selectItem( [item] )}\n * method instead of this method.\n *\n * @param {boolean} [state=false] Select option\n * @chainable\n */\nOO.ui.OptionWidget.prototype.setSelected = function ( state ) {\n\tif ( this.constructor.static.selectable ) {\n\t\tthis.selected = !!state;\n\t\tthis.$element\n\t\t\t.toggleClass( 'oo-ui-optionWidget-selected', state )\n\t\t\t.attr( 'aria-selected', state.toString() );\n\t\tif ( state && this.constructor.static.scrollIntoViewOnSelect ) {\n\t\t\tthis.scrollElementIntoView();\n\t\t}\n\t\tthis.updateThemeClasses();\n\t}\n\treturn this;\n};\n\n/**\n * Set the option’s highlighted state. In general, all programmatic\n * modifications to the highlight should be handled by the\n * SelectWidget’s {@link OO.ui.SelectWidget#highlightItem highlightItem( [item] )}\n * method instead of this method.\n *\n * @param {boolean} [state=false] Highlight option\n * @chainable\n */\nOO.ui.OptionWidget.prototype.setHighlighted = function ( state ) {\n\tif ( this.constructor.static.highlightable ) {\n\t\tthis.highlighted = !!state;\n\t\tthis.$element.toggleClass( 'oo-ui-optionWidget-highlighted', state );\n\t\tthis.updateThemeClasses();\n\t}\n\treturn this;\n};\n\n/**\n * Set the option’s pressed state. In general, all\n * programmatic modifications to the pressed state should be handled by the\n * SelectWidget’s {@link OO.ui.SelectWidget#pressItem pressItem( [item] )}\n * method instead of this method.\n *\n * @param {boolean} [state=false] Press option\n * @chainable\n */\nOO.ui.OptionWidget.prototype.setPressed = function ( state ) {\n\tif ( this.constructor.static.pressable ) {\n\t\tthis.pressed = !!state;\n\t\tthis.$element.toggleClass( 'oo-ui-optionWidget-pressed', state );\n\t\tthis.updateThemeClasses();\n\t}\n\treturn this;\n};\n\n/**\n * Get text to match search strings against.\n *\n * The default implementation returns the label text, but subclasses\n * can override this to provide more complex behavior.\n *\n * @return {string|boolean} String to match search string against\n */\nOO.ui.OptionWidget.prototype.getMatchText = function () {\n\tvar label = this.getLabel();\n\treturn typeof label === 'string' ? label : this.$label.text();\n};\n","/**\n * A SelectWidget is of a generic selection of options. The OOjs UI library contains several types of\n * select widgets, including {@link OO.ui.ButtonSelectWidget button selects},\n * {@link OO.ui.RadioSelectWidget radio selects}, and {@link OO.ui.MenuSelectWidget\n * menu selects}.\n *\n * This class should be used together with OO.ui.OptionWidget or OO.ui.DecoratedOptionWidget. For more\n * information, please see the [OOjs UI documentation on MediaWiki][1].\n *\n *     @example\n *     // Example of a select widget with three options\n *     var select = new OO.ui.SelectWidget( {\n *         items: [\n *             new OO.ui.OptionWidget( {\n *                 data: 'a',\n *                 label: 'Option One',\n *             } ),\n *             new OO.ui.OptionWidget( {\n *                 data: 'b',\n *                 label: 'Option Two',\n *             } ),\n *             new OO.ui.OptionWidget( {\n *                 data: 'c',\n *                 label: 'Option Three',\n *             } )\n *         ]\n *     } );\n *     $( 'body' ).append( select.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options\n *\n * @abstract\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.GroupWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {OO.ui.OptionWidget[]} [items] An array of options to add to the select.\n *  Options are created with {@link OO.ui.OptionWidget OptionWidget} classes. See\n *  the [OOjs UI documentation on MediaWiki] [2] for examples.\n *  [2]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options\n */\nOO.ui.SelectWidget = function OoUiSelectWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.SelectWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.GroupWidget.call( this, $.extend( {}, config, { $group: this.$element } ) );\n\n\t// Properties\n\tthis.pressed = false;\n\tthis.selecting = null;\n\tthis.onMouseUpHandler = this.onMouseUp.bind( this );\n\tthis.onMouseMoveHandler = this.onMouseMove.bind( this );\n\tthis.onKeyDownHandler = this.onKeyDown.bind( this );\n\tthis.onKeyPressHandler = this.onKeyPress.bind( this );\n\tthis.keyPressBuffer = '';\n\tthis.keyPressBufferTimer = null;\n\tthis.blockMouseOverEvents = 0;\n\n\t// Events\n\tthis.connect( this, {\n\t\ttoggle: 'onToggle'\n\t} );\n\tthis.$element.on( {\n\t\tfocusin: this.onFocus.bind( this ),\n\t\tmousedown: this.onMouseDown.bind( this ),\n\t\tmouseover: this.onMouseOver.bind( this ),\n\t\tmouseleave: this.onMouseLeave.bind( this )\n\t} );\n\n\t// Initialization\n\tthis.$element\n\t\t.addClass( 'oo-ui-selectWidget oo-ui-selectWidget-depressed' )\n\t\t.attr( 'role', 'listbox' );\n\tthis.setFocusOwner( this.$element );\n\tif ( Array.isArray( config.items ) ) {\n\t\tthis.addItems( config.items );\n\t}\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.SelectWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.SelectWidget, OO.ui.mixin.GroupWidget );\n\n/* Events */\n\n/**\n * @event highlight\n *\n * A `highlight` event is emitted when the highlight is changed with the #highlightItem method.\n *\n * @param {OO.ui.OptionWidget|null} item Highlighted item\n */\n\n/**\n * @event press\n *\n * A `press` event is emitted when the #pressItem method is used to programmatically modify the\n * pressed state of an option.\n *\n * @param {OO.ui.OptionWidget|null} item Pressed item\n */\n\n/**\n * @event select\n *\n * A `select` event is emitted when the selection is modified programmatically with the #selectItem method.\n *\n * @param {OO.ui.OptionWidget|null} item Selected item\n */\n\n/**\n * @event choose\n * A `choose` event is emitted when an item is chosen with the #chooseItem method.\n * @param {OO.ui.OptionWidget} item Chosen item\n */\n\n/**\n * @event add\n *\n * An `add` event is emitted when options are added to the select with the #addItems method.\n *\n * @param {OO.ui.OptionWidget[]} items Added items\n * @param {number} index Index of insertion point\n */\n\n/**\n * @event remove\n *\n * A `remove` event is emitted when options are removed from the select with the #clearItems\n * or #removeItems methods.\n *\n * @param {OO.ui.OptionWidget[]} items Removed items\n */\n\n/* Methods */\n\n/**\n * Handle focus events\n *\n * @private\n * @param {jQuery.Event} event\n */\nOO.ui.SelectWidget.prototype.onFocus = function ( event ) {\n\tvar item;\n\tif ( event.target === this.$element[ 0 ] ) {\n\t\t// This widget was focussed, e.g. by the user tabbing to it.\n\t\t// The styles for focus state depend on one of the items being selected.\n\t\tif ( !this.getSelectedItem() ) {\n\t\t\titem = this.getFirstSelectableItem();\n\t\t}\n\t} else {\n\t\t// One of the options got focussed (and the event bubbled up here).\n\t\t// They can't be tabbed to, but they can be activated using accesskeys.\n\t\titem = this.getTargetItem( event );\n\t}\n\n\tif ( item ) {\n\t\tif ( item.constructor.static.highlightable ) {\n\t\t\tthis.highlightItem( item );\n\t\t} else {\n\t\t\tthis.selectItem( item );\n\t\t}\n\t}\n\n\tif ( event.target !== this.$element[ 0 ] ) {\n\t\tthis.$focusOwner.focus();\n\t}\n};\n\n/**\n * Handle mouse down events.\n *\n * @private\n * @param {jQuery.Event} e Mouse down event\n */\nOO.ui.SelectWidget.prototype.onMouseDown = function ( e ) {\n\tvar item;\n\n\tif ( !this.isDisabled() && e.which === OO.ui.MouseButtons.LEFT ) {\n\t\tthis.togglePressed( true );\n\t\titem = this.getTargetItem( e );\n\t\tif ( item && item.isSelectable() ) {\n\t\t\tthis.pressItem( item );\n\t\t\tthis.selecting = item;\n\t\t\tthis.getElementDocument().addEventListener( 'mouseup', this.onMouseUpHandler, true );\n\t\t\tthis.getElementDocument().addEventListener( 'mousemove', this.onMouseMoveHandler, true );\n\t\t}\n\t}\n\treturn false;\n};\n\n/**\n * Handle mouse up events.\n *\n * @private\n * @param {MouseEvent} e Mouse up event\n */\nOO.ui.SelectWidget.prototype.onMouseUp = function ( e ) {\n\tvar item;\n\n\tthis.togglePressed( false );\n\tif ( !this.selecting ) {\n\t\titem = this.getTargetItem( e );\n\t\tif ( item && item.isSelectable() ) {\n\t\t\tthis.selecting = item;\n\t\t}\n\t}\n\tif ( !this.isDisabled() && e.which === OO.ui.MouseButtons.LEFT && this.selecting ) {\n\t\tthis.pressItem( null );\n\t\tthis.chooseItem( this.selecting );\n\t\tthis.selecting = null;\n\t}\n\n\tthis.getElementDocument().removeEventListener( 'mouseup', this.onMouseUpHandler, true );\n\tthis.getElementDocument().removeEventListener( 'mousemove', this.onMouseMoveHandler, true );\n\n\treturn false;\n};\n\n/**\n * Handle mouse move events.\n *\n * @private\n * @param {MouseEvent} e Mouse move event\n */\nOO.ui.SelectWidget.prototype.onMouseMove = function ( e ) {\n\tvar item;\n\n\tif ( !this.isDisabled() && this.pressed ) {\n\t\titem = this.getTargetItem( e );\n\t\tif ( item && item !== this.selecting && item.isSelectable() ) {\n\t\t\tthis.pressItem( item );\n\t\t\tthis.selecting = item;\n\t\t}\n\t}\n};\n\n/**\n * Handle mouse over events.\n *\n * @private\n * @param {jQuery.Event} e Mouse over event\n */\nOO.ui.SelectWidget.prototype.onMouseOver = function ( e ) {\n\tvar item;\n\tif ( this.blockMouseOverEvents ) {\n\t\treturn;\n\t}\n\tif ( !this.isDisabled() ) {\n\t\titem = this.getTargetItem( e );\n\t\tthis.highlightItem( item && item.isHighlightable() ? item : null );\n\t}\n\treturn false;\n};\n\n/**\n * Handle mouse leave events.\n *\n * @private\n * @param {jQuery.Event} e Mouse over event\n */\nOO.ui.SelectWidget.prototype.onMouseLeave = function () {\n\tif ( !this.isDisabled() ) {\n\t\tthis.highlightItem( null );\n\t}\n\treturn false;\n};\n\n/**\n * Handle key down events.\n *\n * @protected\n * @param {KeyboardEvent} e Key down event\n */\nOO.ui.SelectWidget.prototype.onKeyDown = function ( e ) {\n\tvar nextItem,\n\t\thandled = false,\n\t\tcurrentItem = this.getHighlightedItem() || this.getSelectedItem();\n\n\tif ( !this.isDisabled() && this.isVisible() ) {\n\t\tswitch ( e.keyCode ) {\n\t\t\tcase OO.ui.Keys.ENTER:\n\t\t\t\tif ( currentItem && currentItem.constructor.static.highlightable ) {\n\t\t\t\t\t// Was only highlighted, now let's select it. No-op if already selected.\n\t\t\t\t\tthis.chooseItem( currentItem );\n\t\t\t\t\thandled = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase OO.ui.Keys.UP:\n\t\t\tcase OO.ui.Keys.LEFT:\n\t\t\t\tthis.clearKeyPressBuffer();\n\t\t\t\tnextItem = this.getRelativeSelectableItem( currentItem, -1 );\n\t\t\t\thandled = true;\n\t\t\t\tbreak;\n\t\t\tcase OO.ui.Keys.DOWN:\n\t\t\tcase OO.ui.Keys.RIGHT:\n\t\t\t\tthis.clearKeyPressBuffer();\n\t\t\t\tnextItem = this.getRelativeSelectableItem( currentItem, 1 );\n\t\t\t\thandled = true;\n\t\t\t\tbreak;\n\t\t\tcase OO.ui.Keys.ESCAPE:\n\t\t\tcase OO.ui.Keys.TAB:\n\t\t\t\tif ( currentItem && currentItem.constructor.static.highlightable ) {\n\t\t\t\t\tcurrentItem.setHighlighted( false );\n\t\t\t\t}\n\t\t\t\tthis.unbindKeyDownListener();\n\t\t\t\tthis.unbindKeyPressListener();\n\t\t\t\t// Don't prevent tabbing away / defocusing\n\t\t\t\thandled = false;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( nextItem ) {\n\t\t\tif ( nextItem.constructor.static.highlightable ) {\n\t\t\t\tthis.highlightItem( nextItem );\n\t\t\t} else {\n\t\t\t\tthis.chooseItem( nextItem );\n\t\t\t}\n\t\t\tthis.scrollItemIntoView( nextItem );\n\t\t}\n\n\t\tif ( handled ) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\t}\n};\n\n/**\n * Bind key down listener.\n *\n * @protected\n */\nOO.ui.SelectWidget.prototype.bindKeyDownListener = function () {\n\tthis.getElementWindow().addEventListener( 'keydown', this.onKeyDownHandler, true );\n};\n\n/**\n * Unbind key down listener.\n *\n * @protected\n */\nOO.ui.SelectWidget.prototype.unbindKeyDownListener = function () {\n\tthis.getElementWindow().removeEventListener( 'keydown', this.onKeyDownHandler, true );\n};\n\n/**\n * Scroll item into view, preventing spurious mouse highlight actions from happening.\n *\n * @param {OO.ui.OptionWidget} item Item to scroll into view\n */\nOO.ui.SelectWidget.prototype.scrollItemIntoView = function ( item ) {\n\tvar widget = this;\n\t// Chromium's Blink engine will generate spurious 'mouseover' events during programmatic scrolling\n\t// and around 100-150 ms after it is finished.\n\tthis.blockMouseOverEvents++;\n\titem.scrollElementIntoView().done( function () {\n\t\tsetTimeout( function () {\n\t\t\twidget.blockMouseOverEvents--;\n\t\t}, 200 );\n\t} );\n};\n\n/**\n * Clear the key-press buffer\n *\n * @protected\n */\nOO.ui.SelectWidget.prototype.clearKeyPressBuffer = function () {\n\tif ( this.keyPressBufferTimer ) {\n\t\tclearTimeout( this.keyPressBufferTimer );\n\t\tthis.keyPressBufferTimer = null;\n\t}\n\tthis.keyPressBuffer = '';\n};\n\n/**\n * Handle key press events.\n *\n * @protected\n * @param {KeyboardEvent} e Key press event\n */\nOO.ui.SelectWidget.prototype.onKeyPress = function ( e ) {\n\tvar c, filter, item;\n\n\tif ( !e.charCode ) {\n\t\tif ( e.keyCode === OO.ui.Keys.BACKSPACE && this.keyPressBuffer !== '' ) {\n\t\t\tthis.keyPressBuffer = this.keyPressBuffer.substr( 0, this.keyPressBuffer.length - 1 );\n\t\t\treturn false;\n\t\t}\n\t\treturn;\n\t}\n\tif ( String.fromCodePoint ) {\n\t\tc = String.fromCodePoint( e.charCode );\n\t} else {\n\t\tc = String.fromCharCode( e.charCode );\n\t}\n\n\tif ( this.keyPressBufferTimer ) {\n\t\tclearTimeout( this.keyPressBufferTimer );\n\t}\n\tthis.keyPressBufferTimer = setTimeout( this.clearKeyPressBuffer.bind( this ), 1500 );\n\n\titem = this.getHighlightedItem() || this.getSelectedItem();\n\n\tif ( this.keyPressBuffer === c ) {\n\t\t// Common (if weird) special case: typing \"xxxx\" will cycle through all\n\t\t// the items beginning with \"x\".\n\t\tif ( item ) {\n\t\t\titem = this.getRelativeSelectableItem( item, 1 );\n\t\t}\n\t} else {\n\t\tthis.keyPressBuffer += c;\n\t}\n\n\tfilter = this.getItemMatcher( this.keyPressBuffer, false );\n\tif ( !item || !filter( item ) ) {\n\t\titem = this.getRelativeSelectableItem( item, 1, filter );\n\t}\n\tif ( item ) {\n\t\tif ( this.isVisible() && item.constructor.static.highlightable ) {\n\t\t\tthis.highlightItem( item );\n\t\t} else {\n\t\t\tthis.chooseItem( item );\n\t\t}\n\t\tthis.scrollItemIntoView( item );\n\t}\n\n\te.preventDefault();\n\te.stopPropagation();\n};\n\n/**\n * Get a matcher for the specific string\n *\n * @protected\n * @param {string} s String to match against items\n * @param {boolean} [exact=false] Only accept exact matches\n * @return {Function} function ( OO.ui.OptionWidget ) => boolean\n */\nOO.ui.SelectWidget.prototype.getItemMatcher = function ( s, exact ) {\n\tvar re;\n\n\tif ( s.normalize ) {\n\t\ts = s.normalize();\n\t}\n\ts = exact ? s.trim() : s.replace( /^\\s+/, '' );\n\tre = '^\\\\s*' + s.replace( /([\\\\{}()|.?*+\\-\\^$\\[\\]])/g, '\\\\$1' ).replace( /\\s+/g, '\\\\s+' );\n\tif ( exact ) {\n\t\tre += '\\\\s*$';\n\t}\n\tre = new RegExp( re, 'i' );\n\treturn function ( item ) {\n\t\tvar matchText = item.getMatchText();\n\t\tif ( matchText.normalize ) {\n\t\t\tmatchText = matchText.normalize();\n\t\t}\n\t\treturn re.test( matchText );\n\t};\n};\n\n/**\n * Bind key press listener.\n *\n * @protected\n */\nOO.ui.SelectWidget.prototype.bindKeyPressListener = function () {\n\tthis.getElementWindow().addEventListener( 'keypress', this.onKeyPressHandler, true );\n};\n\n/**\n * Unbind key down listener.\n *\n * If you override this, be sure to call this.clearKeyPressBuffer() from your\n * implementation.\n *\n * @protected\n */\nOO.ui.SelectWidget.prototype.unbindKeyPressListener = function () {\n\tthis.getElementWindow().removeEventListener( 'keypress', this.onKeyPressHandler, true );\n\tthis.clearKeyPressBuffer();\n};\n\n/**\n * Visibility change handler\n *\n * @protected\n * @param {boolean} visible\n */\nOO.ui.SelectWidget.prototype.onToggle = function ( visible ) {\n\tif ( !visible ) {\n\t\tthis.clearKeyPressBuffer();\n\t}\n};\n\n/**\n * Get the closest item to a jQuery.Event.\n *\n * @private\n * @param {jQuery.Event} e\n * @return {OO.ui.OptionWidget|null} Outline item widget, `null` if none was found\n */\nOO.ui.SelectWidget.prototype.getTargetItem = function ( e ) {\n\treturn $( e.target ).closest( '.oo-ui-optionWidget' ).data( 'oo-ui-optionWidget' ) || null;\n};\n\n/**\n * Get selected item.\n *\n * @return {OO.ui.OptionWidget|null} Selected item, `null` if no item is selected\n */\nOO.ui.SelectWidget.prototype.getSelectedItem = function () {\n\tvar i, len;\n\n\tfor ( i = 0, len = this.items.length; i < len; i++ ) {\n\t\tif ( this.items[ i ].isSelected() ) {\n\t\t\treturn this.items[ i ];\n\t\t}\n\t}\n\treturn null;\n};\n\n/**\n * Get highlighted item.\n *\n * @return {OO.ui.OptionWidget|null} Highlighted item, `null` if no item is highlighted\n */\nOO.ui.SelectWidget.prototype.getHighlightedItem = function () {\n\tvar i, len;\n\n\tfor ( i = 0, len = this.items.length; i < len; i++ ) {\n\t\tif ( this.items[ i ].isHighlighted() ) {\n\t\t\treturn this.items[ i ];\n\t\t}\n\t}\n\treturn null;\n};\n\n/**\n * Toggle pressed state.\n *\n * Press is a state that occurs when a user mouses down on an item, but\n * has not yet let go of the mouse. The item may appear selected, but it will not be selected\n * until the user releases the mouse.\n *\n * @param {boolean} pressed An option is being pressed\n */\nOO.ui.SelectWidget.prototype.togglePressed = function ( pressed ) {\n\tif ( pressed === undefined ) {\n\t\tpressed = !this.pressed;\n\t}\n\tif ( pressed !== this.pressed ) {\n\t\tthis.$element\n\t\t\t.toggleClass( 'oo-ui-selectWidget-pressed', pressed )\n\t\t\t.toggleClass( 'oo-ui-selectWidget-depressed', !pressed );\n\t\tthis.pressed = pressed;\n\t}\n};\n\n/**\n * Highlight an option. If the `item` param is omitted, no options will be highlighted\n * and any existing highlight will be removed. The highlight is mutually exclusive.\n *\n * @param {OO.ui.OptionWidget} [item] Item to highlight, omit for no highlight\n * @fires highlight\n * @chainable\n */\nOO.ui.SelectWidget.prototype.highlightItem = function ( item ) {\n\tvar i, len, highlighted,\n\t\tchanged = false;\n\n\tfor ( i = 0, len = this.items.length; i < len; i++ ) {\n\t\thighlighted = this.items[ i ] === item;\n\t\tif ( this.items[ i ].isHighlighted() !== highlighted ) {\n\t\t\tthis.items[ i ].setHighlighted( highlighted );\n\t\t\tchanged = true;\n\t\t}\n\t}\n\tif ( changed ) {\n\t\tif ( item ) {\n\t\t\tthis.$focusOwner.attr( 'aria-activedescendant', item.getElementId() );\n\t\t} else {\n\t\t\tthis.$focusOwner.removeAttr( 'aria-activedescendant' );\n\t\t}\n\t\tthis.emit( 'highlight', item );\n\t}\n\n\treturn this;\n};\n\n/**\n * Fetch an item by its label.\n *\n * @param {string} label Label of the item to select.\n * @param {boolean} [prefix=false] Allow a prefix match, if only a single item matches\n * @return {OO.ui.Element|null} Item with equivalent label, `null` if none exists\n */\nOO.ui.SelectWidget.prototype.getItemFromLabel = function ( label, prefix ) {\n\tvar i, item, found,\n\t\tlen = this.items.length,\n\t\tfilter = this.getItemMatcher( label, true );\n\n\tfor ( i = 0; i < len; i++ ) {\n\t\titem = this.items[ i ];\n\t\tif ( item instanceof OO.ui.OptionWidget && item.isSelectable() && filter( item ) ) {\n\t\t\treturn item;\n\t\t}\n\t}\n\n\tif ( prefix ) {\n\t\tfound = null;\n\t\tfilter = this.getItemMatcher( label, false );\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\titem = this.items[ i ];\n\t\t\tif ( item instanceof OO.ui.OptionWidget && item.isSelectable() && filter( item ) ) {\n\t\t\t\tif ( found ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tfound = item;\n\t\t\t}\n\t\t}\n\t\tif ( found ) {\n\t\t\treturn found;\n\t\t}\n\t}\n\n\treturn null;\n};\n\n/**\n * Programmatically select an option by its label. If the item does not exist,\n * all options will be deselected.\n *\n * @param {string} [label] Label of the item to select.\n * @param {boolean} [prefix=false] Allow a prefix match, if only a single item matches\n * @fires select\n * @chainable\n */\nOO.ui.SelectWidget.prototype.selectItemByLabel = function ( label, prefix ) {\n\tvar itemFromLabel = this.getItemFromLabel( label, !!prefix );\n\tif ( label === undefined || !itemFromLabel ) {\n\t\treturn this.selectItem();\n\t}\n\treturn this.selectItem( itemFromLabel );\n};\n\n/**\n * Programmatically select an option by its data. If the `data` parameter is omitted,\n * or if the item does not exist, all options will be deselected.\n *\n * @param {Object|string} [data] Value of the item to select, omit to deselect all\n * @fires select\n * @chainable\n */\nOO.ui.SelectWidget.prototype.selectItemByData = function ( data ) {\n\tvar itemFromData = this.getItemFromData( data );\n\tif ( data === undefined || !itemFromData ) {\n\t\treturn this.selectItem();\n\t}\n\treturn this.selectItem( itemFromData );\n};\n\n/**\n * Programmatically select an option by its reference. If the `item` parameter is omitted,\n * all options will be deselected.\n *\n * @param {OO.ui.OptionWidget} [item] Item to select, omit to deselect all\n * @fires select\n * @chainable\n */\nOO.ui.SelectWidget.prototype.selectItem = function ( item ) {\n\tvar i, len, selected,\n\t\tchanged = false;\n\n\tfor ( i = 0, len = this.items.length; i < len; i++ ) {\n\t\tselected = this.items[ i ] === item;\n\t\tif ( this.items[ i ].isSelected() !== selected ) {\n\t\t\tthis.items[ i ].setSelected( selected );\n\t\t\tchanged = true;\n\t\t}\n\t}\n\tif ( changed ) {\n\t\tif ( item && !item.constructor.static.highlightable ) {\n\t\t\tif ( item ) {\n\t\t\t\tthis.$focusOwner.attr( 'aria-activedescendant', item.getElementId() );\n\t\t\t} else {\n\t\t\t\tthis.$focusOwner.removeAttr( 'aria-activedescendant' );\n\t\t\t}\n\t\t}\n\t\tthis.emit( 'select', item );\n\t}\n\n\treturn this;\n};\n\n/**\n * Press an item.\n *\n * Press is a state that occurs when a user mouses down on an item, but has not\n * yet let go of the mouse. The item may appear selected, but it will not be selected until the user\n * releases the mouse.\n *\n * @param {OO.ui.OptionWidget} [item] Item to press, omit to depress all\n * @fires press\n * @chainable\n */\nOO.ui.SelectWidget.prototype.pressItem = function ( item ) {\n\tvar i, len, pressed,\n\t\tchanged = false;\n\n\tfor ( i = 0, len = this.items.length; i < len; i++ ) {\n\t\tpressed = this.items[ i ] === item;\n\t\tif ( this.items[ i ].isPressed() !== pressed ) {\n\t\t\tthis.items[ i ].setPressed( pressed );\n\t\t\tchanged = true;\n\t\t}\n\t}\n\tif ( changed ) {\n\t\tthis.emit( 'press', item );\n\t}\n\n\treturn this;\n};\n\n/**\n * Choose an item.\n *\n * Note that ‘choose’ should never be modified programmatically. A user can choose\n * an option with the keyboard or mouse and it becomes selected. To select an item programmatically,\n * use the #selectItem method.\n *\n * This method is identical to #selectItem, but may vary in subclasses that take additional action\n * when users choose an item with the keyboard or mouse.\n *\n * @param {OO.ui.OptionWidget} item Item to choose\n * @fires choose\n * @chainable\n */\nOO.ui.SelectWidget.prototype.chooseItem = function ( item ) {\n\tif ( item ) {\n\t\tthis.selectItem( item );\n\t\tthis.emit( 'choose', item );\n\t}\n\n\treturn this;\n};\n\n/**\n * Get an option by its position relative to the specified item (or to the start of the option array,\n * if item is `null`). The direction in which to search through the option array is specified with a\n * number: -1 for reverse (the default) or 1 for forward. The method will return an option, or\n * `null` if there are no options in the array.\n *\n * @param {OO.ui.OptionWidget|null} item Item to describe the start position, or `null` to start at the beginning of the array.\n * @param {number} direction Direction to move in: -1 to move backward, 1 to move forward\n * @param {Function} [filter] Only consider items for which this function returns\n *  true. Function takes an OO.ui.OptionWidget and returns a boolean.\n * @return {OO.ui.OptionWidget|null} Item at position, `null` if there are no items in the select\n */\nOO.ui.SelectWidget.prototype.getRelativeSelectableItem = function ( item, direction, filter ) {\n\tvar currentIndex, nextIndex, i,\n\t\tincrease = direction > 0 ? 1 : -1,\n\t\tlen = this.items.length;\n\n\tif ( item instanceof OO.ui.OptionWidget ) {\n\t\tcurrentIndex = this.items.indexOf( item );\n\t\tnextIndex = ( currentIndex + increase + len ) % len;\n\t} else {\n\t\t// If no item is selected and moving forward, start at the beginning.\n\t\t// If moving backward, start at the end.\n\t\tnextIndex = direction > 0 ? 0 : len - 1;\n\t}\n\n\tfor ( i = 0; i < len; i++ ) {\n\t\titem = this.items[ nextIndex ];\n\t\tif (\n\t\t\titem instanceof OO.ui.OptionWidget && item.isSelectable() &&\n\t\t\t( !filter || filter( item ) )\n\t\t) {\n\t\t\treturn item;\n\t\t}\n\t\tnextIndex = ( nextIndex + increase + len ) % len;\n\t}\n\treturn null;\n};\n\n/**\n * Get the next selectable item or `null` if there are no selectable items.\n * Disabled options and menu-section markers and breaks are not selectable.\n *\n * @return {OO.ui.OptionWidget|null} Item, `null` if there aren't any selectable items\n */\nOO.ui.SelectWidget.prototype.getFirstSelectableItem = function () {\n\treturn this.getRelativeSelectableItem( null, 1 );\n};\n\n/**\n * Add an array of options to the select. Optionally, an index number can be used to\n * specify an insertion point.\n *\n * @param {OO.ui.OptionWidget[]} items Items to add\n * @param {number} [index] Index to insert items after\n * @fires add\n * @chainable\n */\nOO.ui.SelectWidget.prototype.addItems = function ( items, index ) {\n\t// Mixin method\n\tOO.ui.mixin.GroupWidget.prototype.addItems.call( this, items, index );\n\n\t// Always provide an index, even if it was omitted\n\tthis.emit( 'add', items, index === undefined ? this.items.length - items.length - 1 : index );\n\n\treturn this;\n};\n\n/**\n * Remove the specified array of options from the select. Options will be detached\n * from the DOM, not removed, so they can be reused later. To remove all options from\n * the select, you may wish to use the #clearItems method instead.\n *\n * @param {OO.ui.OptionWidget[]} items Items to remove\n * @fires remove\n * @chainable\n */\nOO.ui.SelectWidget.prototype.removeItems = function ( items ) {\n\tvar i, len, item;\n\n\t// Deselect items being removed\n\tfor ( i = 0, len = items.length; i < len; i++ ) {\n\t\titem = items[ i ];\n\t\tif ( item.isSelected() ) {\n\t\t\tthis.selectItem( null );\n\t\t}\n\t}\n\n\t// Mixin method\n\tOO.ui.mixin.GroupWidget.prototype.removeItems.call( this, items );\n\n\tthis.emit( 'remove', items );\n\n\treturn this;\n};\n\n/**\n * Clear all options from the select. Options will be detached from the DOM, not removed,\n * so that they can be reused later. To remove a subset of options from the select, use\n * the #removeItems method.\n *\n * @fires remove\n * @chainable\n */\nOO.ui.SelectWidget.prototype.clearItems = function () {\n\tvar items = this.items.slice();\n\n\t// Mixin method\n\tOO.ui.mixin.GroupWidget.prototype.clearItems.call( this );\n\n\t// Clear selection\n\tthis.selectItem( null );\n\n\tthis.emit( 'remove', items );\n\n\treturn this;\n};\n\n/**\n * Set the DOM element which has focus while the user is interacting with this SelectWidget.\n *\n * Currently this is just used to set `aria-activedescendant` on it.\n *\n * @protected\n * @param {jQuery} $focusOwner\n */\nOO.ui.SelectWidget.prototype.setFocusOwner = function ( $focusOwner ) {\n\tthis.$focusOwner = $focusOwner;\n};\n","/**\n * DecoratedOptionWidgets are {@link OO.ui.OptionWidget options} that can be configured\n * with an {@link OO.ui.mixin.IconElement icon} and/or {@link OO.ui.mixin.IndicatorElement indicator}.\n * This class is used with OO.ui.SelectWidget to create a selection of mutually exclusive\n * options. For more information about options and selects, please see the\n * [OOjs UI documentation on MediaWiki][1].\n *\n *     @example\n *     // Decorated options in a select widget\n *     var select = new OO.ui.SelectWidget( {\n *         items: [\n *             new OO.ui.DecoratedOptionWidget( {\n *                 data: 'a',\n *                 label: 'Option with icon',\n *                 icon: 'help'\n *             } ),\n *             new OO.ui.DecoratedOptionWidget( {\n *                 data: 'b',\n *                 label: 'Option with indicator',\n *                 indicator: 'next'\n *             } )\n *         ]\n *     } );\n *     $( 'body' ).append( select.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options\n *\n * @class\n * @extends OO.ui.OptionWidget\n * @mixins OO.ui.mixin.IconElement\n * @mixins OO.ui.mixin.IndicatorElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.DecoratedOptionWidget = function OoUiDecoratedOptionWidget( config ) {\n\t// Parent constructor\n\tOO.ui.DecoratedOptionWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.IconElement.call( this, config );\n\tOO.ui.mixin.IndicatorElement.call( this, config );\n\n\t// Initialization\n\tthis.$element\n\t\t.addClass( 'oo-ui-decoratedOptionWidget' )\n\t\t.prepend( this.$icon )\n\t\t.append( this.$indicator );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.DecoratedOptionWidget, OO.ui.OptionWidget );\nOO.mixinClass( OO.ui.DecoratedOptionWidget, OO.ui.mixin.IconElement );\nOO.mixinClass( OO.ui.DecoratedOptionWidget, OO.ui.mixin.IndicatorElement );\n","/**\n * MenuOptionWidget is an option widget that looks like a menu item. The class is used with\n * OO.ui.MenuSelectWidget to create a menu of mutually exclusive options. Please see\n * the [OOjs UI documentation on MediaWiki] [1] for more information.\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options#Menu_selects_and_options\n *\n * @class\n * @extends OO.ui.DecoratedOptionWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.MenuOptionWidget = function OoUiMenuOptionWidget( config ) {\n\t// Parent constructor\n\tOO.ui.MenuOptionWidget.parent.call( this, config );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-menuOptionWidget' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.MenuOptionWidget, OO.ui.DecoratedOptionWidget );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.MenuOptionWidget.static.scrollIntoViewOnSelect = true;\n","/**\n * MenuSectionOptionWidgets are used inside {@link OO.ui.MenuSelectWidget menu select widgets} to group one or more related\n * {@link OO.ui.MenuOptionWidget menu options}. MenuSectionOptionWidgets cannot be highlighted or selected.\n *\n *     @example\n *     var myDropdown = new OO.ui.DropdownWidget( {\n *         menu: {\n *             items: [\n *                 new OO.ui.MenuSectionOptionWidget( {\n *                     label: 'Dogs'\n *                 } ),\n *                 new OO.ui.MenuOptionWidget( {\n *                     data: 'corgi',\n *                     label: 'Welsh Corgi'\n *                 } ),\n *                 new OO.ui.MenuOptionWidget( {\n *                     data: 'poodle',\n *                     label: 'Standard Poodle'\n *                 } ),\n *                 new OO.ui.MenuSectionOptionWidget( {\n *                     label: 'Cats'\n *                 } ),\n *                 new OO.ui.MenuOptionWidget( {\n *                     data: 'lion',\n *                     label: 'Lion'\n *                 } )\n *             ]\n *         }\n *     } );\n *     $( 'body' ).append( myDropdown.$element );\n *\n * @class\n * @extends OO.ui.DecoratedOptionWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.MenuSectionOptionWidget = function OoUiMenuSectionOptionWidget( config ) {\n\t// Parent constructor\n\tOO.ui.MenuSectionOptionWidget.parent.call( this, config );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-menuSectionOptionWidget' )\n\t\t.removeAttr( 'role aria-selected' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.MenuSectionOptionWidget, OO.ui.DecoratedOptionWidget );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.MenuSectionOptionWidget.static.selectable = false;\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.MenuSectionOptionWidget.static.highlightable = false;\n","/**\n * MenuSelectWidget is a {@link OO.ui.SelectWidget select widget} that contains options and\n * is used together with OO.ui.MenuOptionWidget. It is designed be used as part of another widget.\n * See {@link OO.ui.DropdownWidget DropdownWidget}, {@link OO.ui.ComboBoxInputWidget ComboBoxInputWidget},\n * and {@link OO.ui.mixin.LookupElement LookupElement} for examples of widgets that contain menus.\n * MenuSelectWidgets themselves are not instantiated directly, rather subclassed\n * and customized to be opened, closed, and displayed as needed.\n *\n * By default, menus are clipped to the visible viewport and are not visible when a user presses the\n * mouse outside the menu.\n *\n * Menus also have support for keyboard interaction:\n *\n * - Enter/Return key: choose and select a menu option\n * - Up-arrow key: highlight the previous menu option\n * - Down-arrow key: highlight the next menu option\n * - Esc key: hide the menu\n *\n * Unlike most widgets, MenuSelectWidget is initially hidden and must be shown by calling #toggle.\n *\n * Please see the [OOjs UI documentation on MediaWiki][1] for more information.\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options\n *\n * @class\n * @extends OO.ui.SelectWidget\n * @mixins OO.ui.mixin.ClippableElement\n * @mixins OO.ui.mixin.FloatableElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {OO.ui.TextInputWidget} [input] Text input used to implement option highlighting for menu items that match\n *  the text the user types. This config is used by {@link OO.ui.ComboBoxInputWidget ComboBoxInputWidget}\n *  and {@link OO.ui.mixin.LookupElement LookupElement}\n * @cfg {jQuery} [$input] Text input used to implement option highlighting for menu items that match\n *  the text the user types. This config is used by {@link OO.ui.CapsuleMultiselectWidget CapsuleMultiselectWidget}\n * @cfg {OO.ui.Widget} [widget] Widget associated with the menu's active state. If the user clicks the mouse\n *  anywhere on the page outside of this widget, the menu is hidden. For example, if there is a button\n *  that toggles the menu's visibility on click, the menu will be hidden then re-shown when the user clicks\n *  that button, unless the button (or its parent widget) is passed in here.\n * @cfg {boolean} [autoHide=true] Hide the menu when the mouse is pressed outside the menu.\n * @cfg {jQuery} [$autoCloseIgnore] If these elements are clicked, don't auto-hide the menu.\n * @cfg {boolean} [hideOnChoose=true] Hide the menu when the user chooses an option.\n * @cfg {boolean} [filterFromInput=false] Filter the displayed options from the input\n * @cfg {boolean} [highlightOnFilter] Highlight the first result when filtering\n * @cfg {number} [width] Width of the menu\n */\nOO.ui.MenuSelectWidget = function OoUiMenuSelectWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.MenuSelectWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.ClippableElement.call( this, $.extend( {}, config, { $clippable: this.$group } ) );\n\tOO.ui.mixin.FloatableElement.call( this, config );\n\n\t// Properties\n\tthis.autoHide = config.autoHide === undefined || !!config.autoHide;\n\tthis.hideOnChoose = config.hideOnChoose === undefined || !!config.hideOnChoose;\n\tthis.filterFromInput = !!config.filterFromInput;\n\tthis.$input = config.$input ? config.$input : config.input ? config.input.$input : null;\n\tthis.$widget = config.widget ? config.widget.$element : null;\n\tthis.$autoCloseIgnore = config.$autoCloseIgnore || $( [] );\n\tthis.onDocumentMouseDownHandler = this.onDocumentMouseDown.bind( this );\n\tthis.onInputEditHandler = OO.ui.debounce( this.updateItemVisibility.bind( this ), 100 );\n\tthis.highlightOnFilter = !!config.highlightOnFilter;\n\tthis.width = config.width;\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-menuSelectWidget' );\n\tif ( config.widget ) {\n\t\tthis.setFocusOwner( config.widget.$tabIndexed );\n\t}\n\n\t// Initially hidden - using #toggle may cause errors if subclasses override toggle with methods\n\t// that reference properties not initialized at that time of parent class construction\n\t// TODO: Find a better way to handle post-constructor setup\n\tthis.visible = false;\n\tthis.$element.addClass( 'oo-ui-element-hidden' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.MenuSelectWidget, OO.ui.SelectWidget );\nOO.mixinClass( OO.ui.MenuSelectWidget, OO.ui.mixin.ClippableElement );\nOO.mixinClass( OO.ui.MenuSelectWidget, OO.ui.mixin.FloatableElement );\n\n/* Events */\n\n/**\n * @event ready\n *\n * The menu is ready: it is visible and has been positioned and clipped.\n */\n\n/* Methods */\n\n/**\n * Handles document mouse down events.\n *\n * @protected\n * @param {MouseEvent} e Mouse down event\n */\nOO.ui.MenuSelectWidget.prototype.onDocumentMouseDown = function ( e ) {\n\tif (\n\t\tthis.isVisible() &&\n\t\t!OO.ui.contains(\n\t\t\t\tthis.$element.add( this.$widget ).add( this.$autoCloseIgnore ).get(),\n\t\t\t\te.target,\n\t\t\t\ttrue\n\t\t)\n\t) {\n\t\tthis.toggle( false );\n\t}\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MenuSelectWidget.prototype.onKeyDown = function ( e ) {\n\tvar currentItem = this.getHighlightedItem() || this.getSelectedItem();\n\n\tif ( !this.isDisabled() && this.isVisible() ) {\n\t\tswitch ( e.keyCode ) {\n\t\t\tcase OO.ui.Keys.LEFT:\n\t\t\tcase OO.ui.Keys.RIGHT:\n\t\t\t\t// Do nothing if a text field is associated, arrow keys will be handled natively\n\t\t\t\tif ( !this.$input ) {\n\t\t\t\t\tOO.ui.MenuSelectWidget.parent.prototype.onKeyDown.call( this, e );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase OO.ui.Keys.ESCAPE:\n\t\t\tcase OO.ui.Keys.TAB:\n\t\t\t\tif ( currentItem ) {\n\t\t\t\t\tcurrentItem.setHighlighted( false );\n\t\t\t\t}\n\t\t\t\tthis.toggle( false );\n\t\t\t\t// Don't prevent tabbing away, prevent defocusing\n\t\t\t\tif ( e.keyCode === OO.ui.Keys.ESCAPE ) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tOO.ui.MenuSelectWidget.parent.prototype.onKeyDown.call( this, e );\n\t\t\t\treturn;\n\t\t}\n\t}\n};\n\n/**\n * Update menu item visibility after input changes.\n *\n * @protected\n */\nOO.ui.MenuSelectWidget.prototype.updateItemVisibility = function () {\n\tvar i, item, visible, section, sectionEmpty,\n\t\tfirstItemFound = false,\n\t\tanyVisible = false,\n\t\tlen = this.items.length,\n\t\tshowAll = !this.isVisible(),\n\t\tfilter = showAll ? null : this.getItemMatcher( this.$input.val() ),\n\t\texactFilter = this.getItemMatcher( this.$input.val(), true ),\n\t\texactMatch = false;\n\n\t// Hide non-matching options, and also hide section headers if all options\n\t// in their section are hidden.\n\tfor ( i = 0; i < len; i++ ) {\n\t\titem = this.items[ i ];\n\t\tif ( item instanceof OO.ui.MenuSectionOptionWidget ) {\n\t\t\tif ( section ) {\n\t\t\t\t// If the previous section was empty, hide its header\n\t\t\t\tsection.toggle( showAll || !sectionEmpty );\n\t\t\t}\n\t\t\tsection = item;\n\t\t\tsectionEmpty = true;\n\t\t} else if ( item instanceof OO.ui.OptionWidget ) {\n\t\t\tvisible = showAll || filter( item );\n\t\t\texactMatch = exactMatch || exactFilter( item );\n\t\t\tanyVisible = anyVisible || visible;\n\t\t\tsectionEmpty = sectionEmpty && !visible;\n\t\t\titem.toggle( visible );\n\t\t\tif ( this.highlightOnFilter && visible && !firstItemFound ) {\n\t\t\t\t// Highlight the first item in the list\n\t\t\t\tthis.highlightItem( item );\n\t\t\t\tfirstItemFound = true;\n\t\t\t}\n\t\t}\n\t}\n\t// Process the final section\n\tif ( section ) {\n\t\tsection.toggle( showAll || !sectionEmpty );\n\t}\n\n\tif ( anyVisible && this.items.length && !exactMatch ) {\n\t\tthis.scrollItemIntoView( this.items[ 0 ] );\n\t}\n\n\tthis.$element.toggleClass( 'oo-ui-menuSelectWidget-invisible', !anyVisible );\n\n\t// Reevaluate clipping\n\tthis.clip();\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MenuSelectWidget.prototype.bindKeyDownListener = function () {\n\tif ( this.$input ) {\n\t\tthis.$input.on( 'keydown', this.onKeyDownHandler );\n\t} else {\n\t\tOO.ui.MenuSelectWidget.parent.prototype.bindKeyDownListener.call( this );\n\t}\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MenuSelectWidget.prototype.unbindKeyDownListener = function () {\n\tif ( this.$input ) {\n\t\tthis.$input.off( 'keydown', this.onKeyDownHandler );\n\t} else {\n\t\tOO.ui.MenuSelectWidget.parent.prototype.unbindKeyDownListener.call( this );\n\t}\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MenuSelectWidget.prototype.bindKeyPressListener = function () {\n\tif ( this.$input ) {\n\t\tif ( this.filterFromInput ) {\n\t\t\tthis.$input.on( 'keydown mouseup cut paste change input select', this.onInputEditHandler );\n\t\t\tthis.updateItemVisibility();\n\t\t}\n\t} else {\n\t\tOO.ui.MenuSelectWidget.parent.prototype.bindKeyPressListener.call( this );\n\t}\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MenuSelectWidget.prototype.unbindKeyPressListener = function () {\n\tif ( this.$input ) {\n\t\tif ( this.filterFromInput ) {\n\t\t\tthis.$input.off( 'keydown mouseup cut paste change input select', this.onInputEditHandler );\n\t\t\tthis.updateItemVisibility();\n\t\t}\n\t} else {\n\t\tOO.ui.MenuSelectWidget.parent.prototype.unbindKeyPressListener.call( this );\n\t}\n};\n\n/**\n * Choose an item.\n *\n * When a user chooses an item, the menu is closed, unless the hideOnChoose config option is set to false.\n *\n * Note that ‘choose’ should never be modified programmatically. A user can choose an option with the keyboard\n * or mouse and it becomes selected. To select an item programmatically, use the #selectItem method.\n *\n * @param {OO.ui.OptionWidget} item Item to choose\n * @chainable\n */\nOO.ui.MenuSelectWidget.prototype.chooseItem = function ( item ) {\n\tOO.ui.MenuSelectWidget.parent.prototype.chooseItem.call( this, item );\n\tif ( this.hideOnChoose ) {\n\t\tthis.toggle( false );\n\t}\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MenuSelectWidget.prototype.addItems = function ( items, index ) {\n\t// Parent method\n\tOO.ui.MenuSelectWidget.parent.prototype.addItems.call( this, items, index );\n\n\t// Reevaluate clipping\n\tthis.clip();\n\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MenuSelectWidget.prototype.removeItems = function ( items ) {\n\t// Parent method\n\tOO.ui.MenuSelectWidget.parent.prototype.removeItems.call( this, items );\n\n\t// Reevaluate clipping\n\tthis.clip();\n\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MenuSelectWidget.prototype.clearItems = function () {\n\t// Parent method\n\tOO.ui.MenuSelectWidget.parent.prototype.clearItems.call( this );\n\n\t// Reevaluate clipping\n\tthis.clip();\n\n\treturn this;\n};\n\n/**\n * Toggle visibility of the menu. The menu is initially hidden and must be shown by calling\n * `.toggle( true )` after its #$element is attached to the DOM.\n *\n * Do not show the menu while it is not attached to the DOM. The calculations required to display\n * it in the right place and with the right dimensions only work correctly while it is attached.\n * Side-effects may include broken interface and exceptions being thrown. This wasn't always\n * strictly enforced, so currently it only generates a warning in the browser console.\n *\n * @fires ready\n * @inheritdoc\n */\nOO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) {\n\tvar change;\n\n\tvisible = ( visible === undefined ? !this.visible : !!visible ) && !!this.items.length;\n\tchange = visible !== this.isVisible();\n\n\tif ( visible && !this.warnedUnattached && !this.isElementAttached() ) {\n\t\tOO.ui.warnDeprecation( 'MenuSelectWidget#toggle: Before calling this method, the menu must be attached to the DOM.' );\n\t\tthis.warnedUnattached = true;\n\t}\n\n\tif ( change && visible && ( this.width || this.$floatableContainer ) ) {\n\t\tthis.setIdealSize( this.width || this.$floatableContainer.width() );\n\t}\n\n\t// Parent method\n\tOO.ui.MenuSelectWidget.parent.prototype.toggle.call( this, visible );\n\n\tif ( change ) {\n\t\tif ( visible ) {\n\t\t\tthis.bindKeyDownListener();\n\t\t\tthis.bindKeyPressListener();\n\n\t\t\tthis.togglePositioning( !!this.$floatableContainer );\n\t\t\tthis.toggleClipping( true );\n\n\t\t\tif ( this.getSelectedItem() ) {\n\t\t\t\tthis.$focusOwner.attr( 'aria-activedescendant', this.getSelectedItem().getElementId() );\n\t\t\t\tthis.getSelectedItem().scrollElementIntoView( { duration: 0 } );\n\t\t\t}\n\n\t\t\t// Auto-hide\n\t\t\tif ( this.autoHide ) {\n\t\t\t\tthis.getElementDocument().addEventListener( 'mousedown', this.onDocumentMouseDownHandler, true );\n\t\t\t}\n\n\t\t\tthis.emit( 'ready' );\n\t\t} else {\n\t\t\tthis.$focusOwner.removeAttr( 'aria-activedescendant' );\n\t\t\tthis.unbindKeyDownListener();\n\t\t\tthis.unbindKeyPressListener();\n\t\t\tthis.getElementDocument().removeEventListener( 'mousedown', this.onDocumentMouseDownHandler, true );\n\t\t\tthis.togglePositioning( false );\n\t\t\tthis.toggleClipping( false );\n\t\t}\n\t}\n\n\treturn this;\n};\n","/**\n * DropdownWidgets are not menus themselves, rather they contain a menu of options created with\n * OO.ui.MenuOptionWidget. The DropdownWidget takes care of opening and displaying the menu so that\n * users can interact with it.\n *\n * If you want to use this within an HTML form, such as a OO.ui.FormLayout, use\n * OO.ui.DropdownInputWidget instead.\n *\n *     @example\n *     // Example: A DropdownWidget with a menu that contains three options\n *     var dropDown = new OO.ui.DropdownWidget( {\n *         label: 'Dropdown menu: Select a menu option',\n *         menu: {\n *             items: [\n *                 new OO.ui.MenuOptionWidget( {\n *                     data: 'a',\n *                     label: 'First'\n *                 } ),\n *                 new OO.ui.MenuOptionWidget( {\n *                     data: 'b',\n *                     label: 'Second'\n *                 } ),\n *                 new OO.ui.MenuOptionWidget( {\n *                     data: 'c',\n *                     label: 'Third'\n *                 } )\n *             ]\n *         }\n *     } );\n *\n *     $( 'body' ).append( dropDown.$element );\n *\n *     dropDown.getMenu().selectItemByData( 'b' );\n *\n *     dropDown.getMenu().getSelectedItem().getData(); // returns 'b'\n *\n * For more information, please see the [OOjs UI documentation on MediaWiki] [1].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options#Menu_selects_and_options\n *\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.IconElement\n * @mixins OO.ui.mixin.IndicatorElement\n * @mixins OO.ui.mixin.LabelElement\n * @mixins OO.ui.mixin.TitledElement\n * @mixins OO.ui.mixin.TabIndexedElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {Object} [menu] Configuration options to pass to {@link OO.ui.MenuSelectWidget menu select widget}\n * @cfg {jQuery} [$overlay] Render the menu into a separate layer. This configuration is useful in cases where\n *  the expanded menu is larger than its containing `<div>`. The specified overlay layer is usually on top of the\n *  containing `<div>` and has a larger area. By default, the menu uses relative positioning.\n *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.\n */\nOO.ui.DropdownWidget = function OoUiDropdownWidget( config ) {\n\t// Configuration initialization\n\tconfig = $.extend( { indicator: 'down' }, config );\n\n\t// Parent constructor\n\tOO.ui.DropdownWidget.parent.call( this, config );\n\n\t// Properties (must be set before TabIndexedElement constructor call)\n\tthis.$handle = this.$( '<span>' );\n\tthis.$overlay = config.$overlay || this.$element;\n\n\t// Mixin constructors\n\tOO.ui.mixin.IconElement.call( this, config );\n\tOO.ui.mixin.IndicatorElement.call( this, config );\n\tOO.ui.mixin.LabelElement.call( this, config );\n\tOO.ui.mixin.TitledElement.call( this, $.extend( {}, config, { $titled: this.$label } ) );\n\tOO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$handle } ) );\n\n\t// Properties\n\tthis.menu = new OO.ui.MenuSelectWidget( $.extend( {\n\t\twidget: this,\n\t\t$floatableContainer: this.$element\n\t}, config.menu ) );\n\n\t// Events\n\tthis.$handle.on( {\n\t\tclick: this.onClick.bind( this ),\n\t\tkeydown: this.onKeyDown.bind( this ),\n\t\t// Hack? Handle type-to-search when menu is not expanded and not handling its own events\n\t\tkeypress: this.menu.onKeyPressHandler,\n\t\tblur: this.menu.clearKeyPressBuffer.bind( this.menu )\n\t} );\n\tthis.menu.connect( this, {\n\t\tselect: 'onMenuSelect',\n\t\ttoggle: 'onMenuToggle'\n\t} );\n\n\t// Initialization\n\tthis.$handle\n\t\t.addClass( 'oo-ui-dropdownWidget-handle' )\n\t\t.attr( {\n\t\t\trole: 'combobox',\n\t\t\t'aria-owns': this.menu.getElementId(),\n\t\t\t'aria-autocomplete': 'list'\n\t\t} )\n\t\t.append( this.$icon, this.$label, this.$indicator );\n\tthis.$element\n\t\t.addClass( 'oo-ui-dropdownWidget' )\n\t\t.append( this.$handle );\n\tthis.$overlay.append( this.menu.$element );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.DropdownWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.DropdownWidget, OO.ui.mixin.IconElement );\nOO.mixinClass( OO.ui.DropdownWidget, OO.ui.mixin.IndicatorElement );\nOO.mixinClass( OO.ui.DropdownWidget, OO.ui.mixin.LabelElement );\nOO.mixinClass( OO.ui.DropdownWidget, OO.ui.mixin.TitledElement );\nOO.mixinClass( OO.ui.DropdownWidget, OO.ui.mixin.TabIndexedElement );\n\n/* Methods */\n\n/**\n * Get the menu.\n *\n * @return {OO.ui.MenuSelectWidget} Menu of widget\n */\nOO.ui.DropdownWidget.prototype.getMenu = function () {\n\treturn this.menu;\n};\n\n/**\n * Handles menu select events.\n *\n * @private\n * @param {OO.ui.MenuOptionWidget} item Selected menu item\n */\nOO.ui.DropdownWidget.prototype.onMenuSelect = function ( item ) {\n\tvar selectedLabel;\n\n\tif ( !item ) {\n\t\tthis.setLabel( null );\n\t\treturn;\n\t}\n\n\tselectedLabel = item.getLabel();\n\n\t// If the label is a DOM element, clone it, because setLabel will append() it\n\tif ( selectedLabel instanceof jQuery ) {\n\t\tselectedLabel = selectedLabel.clone();\n\t}\n\n\tthis.setLabel( selectedLabel );\n};\n\n/**\n * Handle menu toggle events.\n *\n * @private\n * @param {boolean} isVisible Menu toggle event\n */\nOO.ui.DropdownWidget.prototype.onMenuToggle = function ( isVisible ) {\n\tthis.$element.toggleClass( 'oo-ui-dropdownWidget-open', isVisible );\n};\n\n/**\n * Handle mouse click events.\n *\n * @private\n * @param {jQuery.Event} e Mouse click event\n */\nOO.ui.DropdownWidget.prototype.onClick = function ( e ) {\n\tif ( !this.isDisabled() && e.which === OO.ui.MouseButtons.LEFT ) {\n\t\tthis.menu.toggle();\n\t}\n\treturn false;\n};\n\n/**\n * Handle key down events.\n *\n * @private\n * @param {jQuery.Event} e Key down event\n */\nOO.ui.DropdownWidget.prototype.onKeyDown = function ( e ) {\n\tif (\n\t\t!this.isDisabled() &&\n\t\t(\n\t\t\te.which === OO.ui.Keys.ENTER ||\n\t\t\t(\n\t\t\t\t!this.menu.isVisible() &&\n\t\t\t\t(\n\t\t\t\t\te.which === OO.ui.Keys.SPACE ||\n\t\t\t\t\te.which === OO.ui.Keys.UP ||\n\t\t\t\t\te.which === OO.ui.Keys.DOWN\n\t\t\t\t)\n\t\t\t)\n\t\t)\n\t) {\n\t\tthis.menu.toggle();\n\t\treturn false;\n\t}\n};\n","/**\n * RadioOptionWidget is an option widget that looks like a radio button.\n * The class is used with OO.ui.RadioSelectWidget to create a selection of radio options.\n * Please see the [OOjs UI documentation on MediaWiki] [1] for more information.\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options#Button_selects_and_option\n *\n * @class\n * @extends OO.ui.OptionWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.RadioOptionWidget = function OoUiRadioOptionWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties (must be done before parent constructor which calls #setDisabled)\n\tthis.radio = new OO.ui.RadioInputWidget( { value: config.data, tabIndex: -1 } );\n\n\t// Parent constructor\n\tOO.ui.RadioOptionWidget.parent.call( this, config );\n\n\t// Initialization\n\t// Remove implicit role, we're handling it ourselves\n\tthis.radio.$input.attr( 'role', 'presentation' );\n\tthis.$element\n\t\t.addClass( 'oo-ui-radioOptionWidget' )\n\t\t.attr( 'role', 'radio' )\n\t\t.attr( 'aria-checked', 'false' )\n\t\t.removeAttr( 'aria-selected' )\n\t\t.prepend( this.radio.$element );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.RadioOptionWidget, OO.ui.OptionWidget );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.RadioOptionWidget.static.highlightable = false;\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.RadioOptionWidget.static.scrollIntoViewOnSelect = true;\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.RadioOptionWidget.static.pressable = false;\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.RadioOptionWidget.static.tagName = 'label';\n\n/* Methods */\n\n/**\n * @inheritdoc\n */\nOO.ui.RadioOptionWidget.prototype.setSelected = function ( state ) {\n\tOO.ui.RadioOptionWidget.parent.prototype.setSelected.call( this, state );\n\n\tthis.radio.setSelected( state );\n\tthis.$element\n\t\t.attr( 'aria-checked', state.toString() )\n\t\t.removeAttr( 'aria-selected' );\n\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.RadioOptionWidget.prototype.setDisabled = function ( disabled ) {\n\tOO.ui.RadioOptionWidget.parent.prototype.setDisabled.call( this, disabled );\n\n\tthis.radio.setDisabled( this.isDisabled() );\n\n\treturn this;\n};\n","/**\n * RadioSelectWidget is a {@link OO.ui.SelectWidget select widget} that contains radio\n * options and is used together with OO.ui.RadioOptionWidget. The RadioSelectWidget provides\n * an interface for adding, removing and selecting options.\n * Please see the [OOjs UI documentation on MediaWiki][1] for more information.\n *\n * If you want to use this within an HTML form, such as a OO.ui.FormLayout, use\n * OO.ui.RadioSelectInputWidget instead.\n *\n *     @example\n *     // A RadioSelectWidget with RadioOptions.\n *     var option1 = new OO.ui.RadioOptionWidget( {\n *         data: 'a',\n *         label: 'Selected radio option'\n *     } );\n *\n *     var option2 = new OO.ui.RadioOptionWidget( {\n *         data: 'b',\n *         label: 'Unselected radio option'\n *     } );\n *\n *     var radioSelect=new OO.ui.RadioSelectWidget( {\n *         items: [ option1, option2 ]\n *      } );\n *\n *     // Select 'option 1' using the RadioSelectWidget's selectItem() method.\n *     radioSelect.selectItem( option1 );\n *\n *     $( 'body' ).append( radioSelect.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options\n\n *\n * @class\n * @extends OO.ui.SelectWidget\n * @mixins OO.ui.mixin.TabIndexedElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.RadioSelectWidget = function OoUiRadioSelectWidget( config ) {\n\t// Parent constructor\n\tOO.ui.RadioSelectWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.TabIndexedElement.call( this, config );\n\n\t// Events\n\tthis.$element.on( {\n\t\tfocus: this.bindKeyDownListener.bind( this ),\n\t\tblur: this.unbindKeyDownListener.bind( this )\n\t} );\n\n\t// Initialization\n\tthis.$element\n\t\t.addClass( 'oo-ui-radioSelectWidget' )\n\t\t.attr( 'role', 'radiogroup' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.RadioSelectWidget, OO.ui.SelectWidget );\nOO.mixinClass( OO.ui.RadioSelectWidget, OO.ui.mixin.TabIndexedElement );\n","/**\n * MultioptionWidgets are special elements that can be selected and configured with data. The\n * data is often unique for each option, but it does not have to be. MultioptionWidgets are used\n * with OO.ui.SelectWidget to create a selection of mutually exclusive options. For more information\n * and examples, please see the [OOjs UI documentation on MediaWiki][1].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Multioptions\n *\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.ItemWidget\n * @mixins OO.ui.mixin.LabelElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {boolean} [selected=false] Whether the option is initially selected\n */\nOO.ui.MultioptionWidget = function OoUiMultioptionWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.MultioptionWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.ItemWidget.call( this );\n\tOO.ui.mixin.LabelElement.call( this, config );\n\n\t// Properties\n\tthis.selected = null;\n\n\t// Initialization\n\tthis.$element\n\t\t.addClass( 'oo-ui-multioptionWidget' )\n\t\t.append( this.$label );\n\tthis.setSelected( config.selected );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.MultioptionWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.MultioptionWidget, OO.ui.mixin.ItemWidget );\nOO.mixinClass( OO.ui.MultioptionWidget, OO.ui.mixin.LabelElement );\n\n/* Events */\n\n/**\n * @event change\n *\n * A change event is emitted when the selected state of the option changes.\n *\n * @param {boolean} selected Whether the option is now selected\n */\n\n/* Methods */\n\n/**\n * Check if the option is selected.\n *\n * @return {boolean} Item is selected\n */\nOO.ui.MultioptionWidget.prototype.isSelected = function () {\n\treturn this.selected;\n};\n\n/**\n * Set the option’s selected state. In general, all modifications to the selection\n * should be handled by the SelectWidget’s {@link OO.ui.SelectWidget#selectItem selectItem( [item] )}\n * method instead of this method.\n *\n * @param {boolean} [state=false] Select option\n * @chainable\n */\nOO.ui.MultioptionWidget.prototype.setSelected = function ( state ) {\n\tstate = !!state;\n\tif ( this.selected !== state ) {\n\t\tthis.selected = state;\n\t\tthis.emit( 'change', state );\n\t\tthis.$element.toggleClass( 'oo-ui-multioptionWidget-selected', state );\n\t}\n\treturn this;\n};\n","/**\n * MultiselectWidget allows selecting multiple options from a list.\n *\n * For more information about menus and options, please see the [OOjs UI documentation on MediaWiki][1].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options#Menu_selects_and_options\n *\n * @class\n * @abstract\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.GroupWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {OO.ui.MultioptionWidget[]} [items] An array of options to add to the multiselect.\n */\nOO.ui.MultiselectWidget = function OoUiMultiselectWidget( config ) {\n\t// Parent constructor\n\tOO.ui.MultiselectWidget.parent.call( this, config );\n\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Mixin constructors\n\tOO.ui.mixin.GroupWidget.call( this, config );\n\n\t// Events\n\tthis.aggregate( { change: 'select' } );\n\t// This is mostly for compatibility with CapsuleMultiselectWidget... normally, 'change' is emitted\n\t// by GroupElement only when items are added/removed\n\tthis.connect( this, { select: [ 'emit', 'change' ] } );\n\n\t// Initialization\n\tif ( config.items ) {\n\t\tthis.addItems( config.items );\n\t}\n\tthis.$group.addClass( 'oo-ui-multiselectWidget-group' );\n\tthis.$element.addClass( 'oo-ui-multiselectWidget' )\n\t\t.append( this.$group );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.MultiselectWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.MultiselectWidget, OO.ui.mixin.GroupWidget );\n\n/* Events */\n\n/**\n * @event change\n *\n * A change event is emitted when the set of items changes, or an item is selected or deselected.\n */\n\n/**\n * @event select\n *\n * A select event is emitted when an item is selected or deselected.\n */\n\n/* Methods */\n\n/**\n * Get options that are selected.\n *\n * @return {OO.ui.MultioptionWidget[]} Selected options\n */\nOO.ui.MultiselectWidget.prototype.getSelectedItems = function () {\n\treturn this.items.filter( function ( item ) {\n\t\treturn item.isSelected();\n\t} );\n};\n\n/**\n * Get the data of options that are selected.\n *\n * @return {Object[]|string[]} Values of selected options\n */\nOO.ui.MultiselectWidget.prototype.getSelectedItemsData = function () {\n\treturn this.getSelectedItems().map( function ( item ) {\n\t\treturn item.data;\n\t} );\n};\n\n/**\n * Select options by reference. Options not mentioned in the `items` array will be deselected.\n *\n * @param {OO.ui.MultioptionWidget[]} items Items to select\n * @chainable\n */\nOO.ui.MultiselectWidget.prototype.selectItems = function ( items ) {\n\tthis.items.forEach( function ( item ) {\n\t\tvar selected = items.indexOf( item ) !== -1;\n\t\titem.setSelected( selected );\n\t} );\n\treturn this;\n};\n\n/**\n * Select items by their data. Options not mentioned in the `datas` array will be deselected.\n *\n * @param {Object[]|string[]} datas Values of items to select\n * @chainable\n */\nOO.ui.MultiselectWidget.prototype.selectItemsByData = function ( datas ) {\n\tvar items,\n\t\twidget = this;\n\titems = datas.map( function ( data ) {\n\t\treturn widget.getItemFromData( data );\n\t} );\n\tthis.selectItems( items );\n\treturn this;\n};\n","/**\n * CheckboxMultioptionWidget is an option widget that looks like a checkbox.\n * The class is used with OO.ui.CheckboxMultiselectWidget to create a selection of checkbox options.\n * Please see the [OOjs UI documentation on MediaWiki] [1] for more information.\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options#Button_selects_and_option\n *\n * @class\n * @extends OO.ui.MultioptionWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.CheckboxMultioptionWidget = function OoUiCheckboxMultioptionWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties (must be done before parent constructor which calls #setDisabled)\n\tthis.checkbox = new OO.ui.CheckboxInputWidget();\n\n\t// Parent constructor\n\tOO.ui.CheckboxMultioptionWidget.parent.call( this, config );\n\n\t// Events\n\tthis.checkbox.on( 'change', this.onCheckboxChange.bind( this ) );\n\tthis.$element.on( 'keydown', this.onKeyDown.bind( this ) );\n\n\t// Initialization\n\tthis.$element\n\t\t.addClass( 'oo-ui-checkboxMultioptionWidget' )\n\t\t.prepend( this.checkbox.$element );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.CheckboxMultioptionWidget, OO.ui.MultioptionWidget );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.CheckboxMultioptionWidget.static.tagName = 'label';\n\n/* Methods */\n\n/**\n * Handle checkbox selected state change.\n *\n * @private\n */\nOO.ui.CheckboxMultioptionWidget.prototype.onCheckboxChange = function () {\n\tthis.setSelected( this.checkbox.isSelected() );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.CheckboxMultioptionWidget.prototype.setSelected = function ( state ) {\n\tOO.ui.CheckboxMultioptionWidget.parent.prototype.setSelected.call( this, state );\n\tthis.checkbox.setSelected( state );\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.CheckboxMultioptionWidget.prototype.setDisabled = function ( disabled ) {\n\tOO.ui.CheckboxMultioptionWidget.parent.prototype.setDisabled.call( this, disabled );\n\tthis.checkbox.setDisabled( this.isDisabled() );\n\treturn this;\n};\n\n/**\n * Focus the widget.\n */\nOO.ui.CheckboxMultioptionWidget.prototype.focus = function () {\n\tthis.checkbox.focus();\n};\n\n/**\n * Handle key down events.\n *\n * @protected\n * @param {jQuery.Event} e\n */\nOO.ui.CheckboxMultioptionWidget.prototype.onKeyDown = function ( e ) {\n\tvar\n\t\telement = this.getElementGroup(),\n\t\tnextItem;\n\n\tif ( e.keyCode === OO.ui.Keys.LEFT || e.keyCode === OO.ui.Keys.UP ) {\n\t\tnextItem = element.getRelativeFocusableItem( this, -1 );\n\t} else if ( e.keyCode === OO.ui.Keys.RIGHT || e.keyCode === OO.ui.Keys.DOWN ) {\n\t\tnextItem = element.getRelativeFocusableItem( this, 1 );\n\t}\n\n\tif ( nextItem ) {\n\t\te.preventDefault();\n\t\tnextItem.focus();\n\t}\n};\n","/**\n * CheckboxMultiselectWidget is a {@link OO.ui.MultiselectWidget multiselect widget} that contains\n * checkboxes and is used together with OO.ui.CheckboxMultioptionWidget. The\n * CheckboxMultiselectWidget provides an interface for adding, removing and selecting options.\n * Please see the [OOjs UI documentation on MediaWiki][1] for more information.\n *\n * If you want to use this within an HTML form, such as a OO.ui.FormLayout, use\n * OO.ui.CheckboxMultiselectInputWidget instead.\n *\n *     @example\n *     // A CheckboxMultiselectWidget with CheckboxMultioptions.\n *     var option1 = new OO.ui.CheckboxMultioptionWidget( {\n *         data: 'a',\n *         selected: true,\n *         label: 'Selected checkbox'\n *     } );\n *\n *     var option2 = new OO.ui.CheckboxMultioptionWidget( {\n *         data: 'b',\n *         label: 'Unselected checkbox'\n *     } );\n *\n *     var multiselect=new OO.ui.CheckboxMultiselectWidget( {\n *         items: [ option1, option2 ]\n *      } );\n *\n *     $( 'body' ).append( multiselect.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options\n *\n * @class\n * @extends OO.ui.MultiselectWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.CheckboxMultiselectWidget = function OoUiCheckboxMultiselectWidget( config ) {\n\t// Parent constructor\n\tOO.ui.CheckboxMultiselectWidget.parent.call( this, config );\n\n\t// Properties\n\tthis.$lastClicked = null;\n\n\t// Events\n\tthis.$group.on( 'click', this.onClick.bind( this ) );\n\n\t// Initialization\n\tthis.$element\n\t\t.addClass( 'oo-ui-checkboxMultiselectWidget' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.CheckboxMultiselectWidget, OO.ui.MultiselectWidget );\n\n/* Methods */\n\n/**\n * Get an option by its position relative to the specified item (or to the start of the option array,\n * if item is `null`). The direction in which to search through the option array is specified with a\n * number: -1 for reverse (the default) or 1 for forward. The method will return an option, or\n * `null` if there are no options in the array.\n *\n * @param {OO.ui.CheckboxMultioptionWidget|null} item Item to describe the start position, or `null` to start at the beginning of the array.\n * @param {number} direction Direction to move in: -1 to move backward, 1 to move forward\n * @return {OO.ui.CheckboxMultioptionWidget|null} Item at position, `null` if there are no items in the select\n */\nOO.ui.CheckboxMultiselectWidget.prototype.getRelativeFocusableItem = function ( item, direction ) {\n\tvar currentIndex, nextIndex, i,\n\t\tincrease = direction > 0 ? 1 : -1,\n\t\tlen = this.items.length;\n\n\tif ( item ) {\n\t\tcurrentIndex = this.items.indexOf( item );\n\t\tnextIndex = ( currentIndex + increase + len ) % len;\n\t} else {\n\t\t// If no item is selected and moving forward, start at the beginning.\n\t\t// If moving backward, start at the end.\n\t\tnextIndex = direction > 0 ? 0 : len - 1;\n\t}\n\n\tfor ( i = 0; i < len; i++ ) {\n\t\titem = this.items[ nextIndex ];\n\t\tif ( item && !item.isDisabled() ) {\n\t\t\treturn item;\n\t\t}\n\t\tnextIndex = ( nextIndex + increase + len ) % len;\n\t}\n\treturn null;\n};\n\n/**\n * Handle click events on checkboxes.\n *\n * @param {jQuery.Event} e\n */\nOO.ui.CheckboxMultiselectWidget.prototype.onClick = function ( e ) {\n\tvar $options, lastClickedIndex, nowClickedIndex, i, direction, wasSelected, items,\n\t\t$lastClicked = this.$lastClicked,\n\t\t$nowClicked = $( e.target ).closest( '.oo-ui-checkboxMultioptionWidget' )\n\t\t\t.not( '.oo-ui-widget-disabled' );\n\n\t// Allow selecting multiple options at once by Shift-clicking them\n\tif ( $lastClicked && $nowClicked.length && e.shiftKey ) {\n\t\t$options = this.$group.find( '.oo-ui-checkboxMultioptionWidget' );\n\t\tlastClickedIndex = $options.index( $lastClicked );\n\t\tnowClickedIndex = $options.index( $nowClicked );\n\t\t// If it's the same item, either the user is being silly, or it's a fake event generated by the\n\t\t// browser. In either case we don't need custom handling.\n\t\tif ( nowClickedIndex !== lastClickedIndex ) {\n\t\t\titems = this.items;\n\t\t\twasSelected = items[ nowClickedIndex ].isSelected();\n\t\t\tdirection = nowClickedIndex > lastClickedIndex ? 1 : -1;\n\n\t\t\t// This depends on the DOM order of the items and the order of the .items array being the same.\n\t\t\tfor ( i = lastClickedIndex; i !== nowClickedIndex; i += direction ) {\n\t\t\t\tif ( !items[ i ].isDisabled() ) {\n\t\t\t\t\titems[ i ].setSelected( !wasSelected );\n\t\t\t\t}\n\t\t\t}\n\t\t\t// For the now-clicked element, use immediate timeout to allow the browser to do its own\n\t\t\t// handling first, then set our value. The order in which events happen is different for\n\t\t\t// clicks on the <input> and on the <label> and there are additional fake clicks fired for\n\t\t\t// non-click actions that change the checkboxes.\n\t\t\te.preventDefault();\n\t\t\tsetTimeout( function () {\n\t\t\t\tif ( !items[ nowClickedIndex ].isDisabled() ) {\n\t\t\t\t\titems[ nowClickedIndex ].setSelected( !wasSelected );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\tif ( $nowClicked.length ) {\n\t\tthis.$lastClicked = $nowClicked;\n\t}\n};\n\n/**\n * Focus the widget\n *\n * @chainable\n */\nOO.ui.CheckboxMultiselectWidget.prototype.focus = function () {\n\tvar item;\n\tif ( !this.isDisabled() ) {\n\t\titem = this.getRelativeFocusableItem( null, 1 );\n\t\tif ( item ) {\n\t\t\titem.focus();\n\t\t}\n\t}\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.CheckboxMultiselectWidget.prototype.simulateLabelClick = function () {\n\tthis.focus();\n};\n","/**\n * FloatingMenuSelectWidget was a menu that would stick under a specified\n * container, even when it is inserted elsewhere in the document.\n * This functionality is now included in MenuSelectWidget, and FloatingMenuSelectWidget\n * is preserved for backwards-compatibility.\n *\n * @class\n * @extends OO.ui.MenuSelectWidget\n * @deprecated since v0.21.3, use MenuSelectWidget instead.\n *\n * @constructor\n * @param {OO.ui.Widget} [inputWidget] Widget to provide the menu for.\n *   Deprecated, omit this parameter and specify `$container` instead.\n * @param {Object} [config] Configuration options\n * @cfg {jQuery} [$container=inputWidget.$element] Element to render menu under\n */\nOO.ui.FloatingMenuSelectWidget = function OoUiFloatingMenuSelectWidget( inputWidget, config ) {\n\tOO.ui.warnDeprecation( 'FloatingMenuSelectWidget is deprecated. Use the MenuSelectWidget instead.' );\n\n\t// Allow 'inputWidget' parameter and config for backwards compatibility\n\tif ( OO.isPlainObject( inputWidget ) && config === undefined ) {\n\t\tconfig = inputWidget;\n\t\tinputWidget = config.inputWidget;\n\t}\n\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties\n\tthis.inputWidget = inputWidget; // For backwards compatibility\n\tthis.$container = config.$floatableContainer || config.$container || this.inputWidget.$element;\n\n\t// Parent constructor\n\tOO.ui.FloatingMenuSelectWidget.parent.call( this, $.extend( {}, config, { $floatableContainer: this.$container } ) );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-floatingMenuSelectWidget' );\n\t// For backwards compatibility\n\tthis.$element.addClass( 'oo-ui-textInputMenuSelectWidget' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.FloatingMenuSelectWidget, OO.ui.MenuSelectWidget );\n","/**\n * Progress bars visually display the status of an operation, such as a download,\n * and can be either determinate or indeterminate:\n *\n * - **determinate** process bars show the percent of an operation that is complete.\n *\n * - **indeterminate** process bars use a visual display of motion to indicate that an operation\n *   is taking place. Because the extent of an indeterminate operation is unknown, the bar does\n *   not use percentages.\n *\n * The value of the `progress` configuration determines whether the bar is determinate or indeterminate.\n *\n *     @example\n *     // Examples of determinate and indeterminate progress bars.\n *     var progressBar1 = new OO.ui.ProgressBarWidget( {\n *         progress: 33\n *     } );\n *     var progressBar2 = new OO.ui.ProgressBarWidget();\n *\n *     // Create a FieldsetLayout to layout progress bars\n *     var fieldset = new OO.ui.FieldsetLayout;\n *     fieldset.addItems( [\n *        new OO.ui.FieldLayout( progressBar1, {label: 'Determinate', align: 'top'}),\n *        new OO.ui.FieldLayout( progressBar2, {label: 'Indeterminate', align: 'top'})\n *     ] );\n *     $( 'body' ).append( fieldset.$element );\n *\n * @class\n * @extends OO.ui.Widget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {number|boolean} [progress=false] The type of progress bar (determinate or indeterminate).\n *  To create a determinate progress bar, specify a number that reflects the initial percent complete.\n *  By default, the progress bar is indeterminate.\n */\nOO.ui.ProgressBarWidget = function OoUiProgressBarWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.ProgressBarWidget.parent.call( this, config );\n\n\t// Properties\n\tthis.$bar = $( '<div>' );\n\tthis.progress = null;\n\n\t// Initialization\n\tthis.setProgress( config.progress !== undefined ? config.progress : false );\n\tthis.$bar.addClass( 'oo-ui-progressBarWidget-bar' );\n\tthis.$element\n\t\t.attr( {\n\t\t\trole: 'progressbar',\n\t\t\t'aria-valuemin': 0,\n\t\t\t'aria-valuemax': 100\n\t\t} )\n\t\t.addClass( 'oo-ui-progressBarWidget' )\n\t\t.append( this.$bar );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ProgressBarWidget, OO.ui.Widget );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.ProgressBarWidget.static.tagName = 'div';\n\n/* Methods */\n\n/**\n * Get the percent of the progress that has been completed. Indeterminate progresses will return `false`.\n *\n * @return {number|boolean} Progress percent\n */\nOO.ui.ProgressBarWidget.prototype.getProgress = function () {\n\treturn this.progress;\n};\n\n/**\n * Set the percent of the process completed or `false` for an indeterminate process.\n *\n * @param {number|boolean} progress Progress percent or `false` for indeterminate\n */\nOO.ui.ProgressBarWidget.prototype.setProgress = function ( progress ) {\n\tthis.progress = progress;\n\n\tif ( progress !== false ) {\n\t\tthis.$bar.css( 'width', this.progress + '%' );\n\t\tthis.$element.attr( 'aria-valuenow', this.progress );\n\t} else {\n\t\tthis.$bar.css( 'width', '' );\n\t\tthis.$element.removeAttr( 'aria-valuenow' );\n\t}\n\tthis.$element.toggleClass( 'oo-ui-progressBarWidget-indeterminate', progress === false );\n};\n","/**\n * InputWidget is the base class for all input widgets, which\n * include {@link OO.ui.TextInputWidget text inputs}, {@link OO.ui.CheckboxInputWidget checkbox inputs},\n * {@link OO.ui.RadioInputWidget radio inputs}, and {@link OO.ui.ButtonInputWidget button inputs}.\n * See the [OOjs UI documentation on MediaWiki] [1] for more information and examples.\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Inputs\n *\n * @abstract\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.FlaggedElement\n * @mixins OO.ui.mixin.TabIndexedElement\n * @mixins OO.ui.mixin.TitledElement\n * @mixins OO.ui.mixin.AccessKeyedElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {string} [name=''] The value of the input’s HTML `name` attribute.\n * @cfg {string} [value=''] The value of the input.\n * @cfg {string} [dir] The directionality of the input (ltr/rtl).\n * @cfg {string} [inputId] The value of the input’s HTML `id` attribute.\n * @cfg {Function} [inputFilter] The name of an input filter function. Input filters modify the value of an input\n *  before it is accepted.\n */\nOO.ui.InputWidget = function OoUiInputWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.InputWidget.parent.call( this, config );\n\n\t// Properties\n\t// See #reusePreInfuseDOM about config.$input\n\tthis.$input = config.$input || this.getInputElement( config );\n\tthis.value = '';\n\tthis.inputFilter = config.inputFilter;\n\n\t// Mixin constructors\n\tOO.ui.mixin.FlaggedElement.call( this, config );\n\tOO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$input } ) );\n\tOO.ui.mixin.TitledElement.call( this, $.extend( {}, config, { $titled: this.$input } ) );\n\tOO.ui.mixin.AccessKeyedElement.call( this, $.extend( {}, config, { $accessKeyed: this.$input } ) );\n\n\t// Events\n\tthis.$input.on( 'keydown mouseup cut paste change input select', this.onEdit.bind( this ) );\n\n\t// Initialization\n\tthis.$input\n\t\t.addClass( 'oo-ui-inputWidget-input' )\n\t\t.attr( 'name', config.name )\n\t\t.prop( 'disabled', this.isDisabled() );\n\tthis.$element\n\t\t.addClass( 'oo-ui-inputWidget' )\n\t\t.append( this.$input );\n\tthis.setValue( config.value );\n\tif ( config.dir ) {\n\t\tthis.setDir( config.dir );\n\t}\n\tif ( config.inputId !== undefined ) {\n\t\tthis.setInputId( config.inputId );\n\t}\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.InputWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.InputWidget, OO.ui.mixin.FlaggedElement );\nOO.mixinClass( OO.ui.InputWidget, OO.ui.mixin.TabIndexedElement );\nOO.mixinClass( OO.ui.InputWidget, OO.ui.mixin.TitledElement );\nOO.mixinClass( OO.ui.InputWidget, OO.ui.mixin.AccessKeyedElement );\n\n/* Static Methods */\n\n/**\n * @inheritdoc\n */\nOO.ui.InputWidget.static.reusePreInfuseDOM = function ( node, config ) {\n\tconfig = OO.ui.InputWidget.parent.static.reusePreInfuseDOM( node, config );\n\t// Reusing $input lets browsers preserve inputted values across page reloads (T114134)\n\tconfig.$input = $( node ).find( '.oo-ui-inputWidget-input' );\n\treturn config;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.InputWidget.static.gatherPreInfuseState = function ( node, config ) {\n\tvar state = OO.ui.InputWidget.parent.static.gatherPreInfuseState( node, config );\n\tif ( config.$input && config.$input.length ) {\n\t\tstate.value = config.$input.val();\n\t\t// Might be better in TabIndexedElement, but it's awkward to do there because mixins are awkward\n\t\tstate.focus = config.$input.is( ':focus' );\n\t}\n\treturn state;\n};\n\n/* Events */\n\n/**\n * @event change\n *\n * A change event is emitted when the value of the input changes.\n *\n * @param {string} value\n */\n\n/* Methods */\n\n/**\n * Get input element.\n *\n * Subclasses of OO.ui.InputWidget use the `config` parameter to produce different elements in\n * different circumstances. The element must have a `value` property (like form elements).\n *\n * @protected\n * @param {Object} config Configuration options\n * @return {jQuery} Input element\n */\nOO.ui.InputWidget.prototype.getInputElement = function () {\n\treturn $( '<input>' );\n};\n\n/**\n * Handle potentially value-changing events.\n *\n * @private\n * @param {jQuery.Event} e Key down, mouse up, cut, paste, change, input, or select event\n */\nOO.ui.InputWidget.prototype.onEdit = function () {\n\tvar widget = this;\n\tif ( !this.isDisabled() ) {\n\t\t// Allow the stack to clear so the value will be updated\n\t\tsetTimeout( function () {\n\t\t\twidget.setValue( widget.$input.val() );\n\t\t} );\n\t}\n};\n\n/**\n * Get the value of the input.\n *\n * @return {string} Input value\n */\nOO.ui.InputWidget.prototype.getValue = function () {\n\t// Resynchronize our internal data with DOM data. Other scripts executing on the page can modify\n\t// it, and we won't know unless they're kind enough to trigger a 'change' event.\n\tvar value = this.$input.val();\n\tif ( this.value !== value ) {\n\t\tthis.setValue( value );\n\t}\n\treturn this.value;\n};\n\n/**\n * Set the directionality of the input.\n *\n * @param {string} dir Text directionality: 'ltr', 'rtl' or 'auto'\n * @chainable\n */\nOO.ui.InputWidget.prototype.setDir = function ( dir ) {\n\tthis.$input.prop( 'dir', dir );\n\treturn this;\n};\n\n/**\n * Set the value of the input.\n *\n * @param {string} value New value\n * @fires change\n * @chainable\n */\nOO.ui.InputWidget.prototype.setValue = function ( value ) {\n\tvalue = this.cleanUpValue( value );\n\t// Update the DOM if it has changed. Note that with cleanUpValue, it\n\t// is possible for the DOM value to change without this.value changing.\n\tif ( this.$input.val() !== value ) {\n\t\tthis.$input.val( value );\n\t}\n\tif ( this.value !== value ) {\n\t\tthis.value = value;\n\t\tthis.emit( 'change', this.value );\n\t}\n\treturn this;\n};\n\n/**\n * Clean up incoming value.\n *\n * Ensures value is a string, and converts undefined and null to empty string.\n *\n * @private\n * @param {string} value Original value\n * @return {string} Cleaned up value\n */\nOO.ui.InputWidget.prototype.cleanUpValue = function ( value ) {\n\tif ( value === undefined || value === null ) {\n\t\treturn '';\n\t} else if ( this.inputFilter ) {\n\t\treturn this.inputFilter( String( value ) );\n\t} else {\n\t\treturn String( value );\n\t}\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.InputWidget.prototype.setDisabled = function ( state ) {\n\tOO.ui.InputWidget.parent.prototype.setDisabled.call( this, state );\n\tif ( this.$input ) {\n\t\tthis.$input.prop( 'disabled', this.isDisabled() );\n\t}\n\treturn this;\n};\n\n/**\n * Set the 'id' attribute of the `<input>` element.\n *\n * @param {string} id\n * @chainable\n */\nOO.ui.InputWidget.prototype.setInputId = function ( id ) {\n\tthis.$input.attr( 'id', id );\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.InputWidget.prototype.restorePreInfuseState = function ( state ) {\n\tOO.ui.InputWidget.parent.prototype.restorePreInfuseState.call( this, state );\n\tif ( state.value !== undefined && state.value !== this.getValue() ) {\n\t\tthis.setValue( state.value );\n\t}\n\tif ( state.focus ) {\n\t\tthis.focus();\n\t}\n};\n","/**\n * Data widget intended for creating 'hidden'-type inputs.\n *\n * @class\n * @extends OO.ui.Widget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {string} [value=''] The value of the input.\n * @cfg {string} [name=''] The value of the input’s HTML `name` attribute.\n */\nOO.ui.HiddenInputWidget = function OoUiHiddenInputWidget( config ) {\n\t// Configuration initialization\n\tconfig = $.extend( { value: '', name: '' }, config );\n\n\t// Parent constructor\n\tOO.ui.HiddenInputWidget.parent.call( this, config );\n\n\t// Initialization\n\tthis.$element.attr( {\n\t\ttype: 'hidden',\n\t\tvalue: config.value,\n\t\tname: config.name\n\t} );\n\tthis.$element.removeAttr( 'aria-disabled' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.HiddenInputWidget, OO.ui.Widget );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.HiddenInputWidget.static.tagName = 'input';\n","/**\n * ButtonInputWidget is used to submit HTML forms and is intended to be used within\n * a OO.ui.FormLayout. If you do not need the button to work with HTML forms, you probably\n * want to use OO.ui.ButtonWidget instead. Button input widgets can be rendered as either an\n * HTML `<button>` (the default) or an HTML `<input>` tags. See the\n * [OOjs UI documentation on MediaWiki] [1] for more information.\n *\n *     @example\n *     // A ButtonInputWidget rendered as an HTML button, the default.\n *     var button = new OO.ui.ButtonInputWidget( {\n *         label: 'Input button',\n *         icon: 'check',\n *         value: 'check'\n *     } );\n *     $( 'body' ).append( button.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Inputs#Button_inputs\n *\n * @class\n * @extends OO.ui.InputWidget\n * @mixins OO.ui.mixin.ButtonElement\n * @mixins OO.ui.mixin.IconElement\n * @mixins OO.ui.mixin.IndicatorElement\n * @mixins OO.ui.mixin.LabelElement\n * @mixins OO.ui.mixin.TitledElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {string} [type='button'] The value of the HTML `'type'` attribute: 'button', 'submit' or 'reset'.\n * @cfg {boolean} [useInputTag=false] Use an `<input>` tag instead of a `<button>` tag, the default.\n *  Widgets configured to be an `<input>` do not support {@link #icon icons} and {@link #indicator indicators},\n *  non-plaintext {@link #label labels}, or {@link #value values}. In general, useInputTag should only\n *  be set to `true` when there’s need to support IE 6 in a form with multiple buttons.\n */\nOO.ui.ButtonInputWidget = function OoUiButtonInputWidget( config ) {\n\t// Configuration initialization\n\tconfig = $.extend( { type: 'button', useInputTag: false }, config );\n\n\t// See InputWidget#reusePreInfuseDOM about config.$input\n\tif ( config.$input ) {\n\t\tconfig.$input.empty();\n\t}\n\n\t// Properties (must be set before parent constructor, which calls #setValue)\n\tthis.useInputTag = config.useInputTag;\n\n\t// Parent constructor\n\tOO.ui.ButtonInputWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.ButtonElement.call( this, $.extend( {}, config, { $button: this.$input } ) );\n\tOO.ui.mixin.IconElement.call( this, config );\n\tOO.ui.mixin.IndicatorElement.call( this, config );\n\tOO.ui.mixin.LabelElement.call( this, config );\n\tOO.ui.mixin.TitledElement.call( this, $.extend( {}, config, { $titled: this.$input } ) );\n\n\t// Initialization\n\tif ( !config.useInputTag ) {\n\t\tthis.$input.append( this.$icon, this.$label, this.$indicator );\n\t}\n\tthis.$element.addClass( 'oo-ui-buttonInputWidget' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ButtonInputWidget, OO.ui.InputWidget );\nOO.mixinClass( OO.ui.ButtonInputWidget, OO.ui.mixin.ButtonElement );\nOO.mixinClass( OO.ui.ButtonInputWidget, OO.ui.mixin.IconElement );\nOO.mixinClass( OO.ui.ButtonInputWidget, OO.ui.mixin.IndicatorElement );\nOO.mixinClass( OO.ui.ButtonInputWidget, OO.ui.mixin.LabelElement );\nOO.mixinClass( OO.ui.ButtonInputWidget, OO.ui.mixin.TitledElement );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.ButtonInputWidget.static.tagName = 'span';\n\n/* Methods */\n\n/**\n * @inheritdoc\n * @protected\n */\nOO.ui.ButtonInputWidget.prototype.getInputElement = function ( config ) {\n\tvar type;\n\ttype = [ 'button', 'submit', 'reset' ].indexOf( config.type ) !== -1 ? config.type : 'button';\n\treturn $( '<' + ( config.useInputTag ? 'input' : 'button' ) + ' type=\"' + type + '\">' );\n};\n\n/**\n * Set label value.\n *\n * If #useInputTag is `true`, the label is set as the `value` of the `<input>` tag.\n *\n * @param {jQuery|string|Function|null} label Label nodes, text, a function that returns nodes or\n *  text, or `null` for no label\n * @chainable\n */\nOO.ui.ButtonInputWidget.prototype.setLabel = function ( label ) {\n\tif ( typeof label === 'function' ) {\n\t\tlabel = OO.ui.resolveMsg( label );\n\t}\n\n\tif ( this.useInputTag ) {\n\t\t// Discard non-plaintext labels\n\t\tif ( typeof label !== 'string' ) {\n\t\t\tlabel = '';\n\t\t}\n\n\t\tthis.$input.val( label );\n\t}\n\n\treturn OO.ui.mixin.LabelElement.prototype.setLabel.call( this, label );\n};\n\n/**\n * Set the value of the input.\n *\n * This method is disabled for button inputs configured as {@link #useInputTag <input> tags}, as\n * they do not support {@link #value values}.\n *\n * @param {string} value New value\n * @chainable\n */\nOO.ui.ButtonInputWidget.prototype.setValue = function ( value ) {\n\tif ( !this.useInputTag ) {\n\t\tOO.ui.ButtonInputWidget.parent.prototype.setValue.call( this, value );\n\t}\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.ButtonInputWidget.prototype.getInputId = function () {\n\t// Disable generating `<label>` elements for buttons. One would very rarely need additional label\n\t// for a button, and it's already a big clickable target, and it causes unexpected rendering.\n\treturn null;\n};\n","/**\n * CheckboxInputWidgets, like HTML checkboxes, can be selected and/or configured with a value.\n * Note that these {@link OO.ui.InputWidget input widgets} are best laid out\n * in {@link OO.ui.FieldLayout field layouts} that use the {@link OO.ui.FieldLayout#align inline}\n * alignment. For more information, please see the [OOjs UI documentation on MediaWiki][1].\n *\n * This widget can be used inside an HTML form, such as a OO.ui.FormLayout.\n *\n *     @example\n *     // An example of selected, unselected, and disabled checkbox inputs\n *     var checkbox1=new OO.ui.CheckboxInputWidget( {\n *          value: 'a',\n *          selected: true\n *     } );\n *     var checkbox2=new OO.ui.CheckboxInputWidget( {\n *         value: 'b'\n *     } );\n *     var checkbox3=new OO.ui.CheckboxInputWidget( {\n *         value:'c',\n *         disabled: true\n *     } );\n *     // Create a fieldset layout with fields for each checkbox.\n *     var fieldset = new OO.ui.FieldsetLayout( {\n *         label: 'Checkboxes'\n *     } );\n *     fieldset.addItems( [\n *         new OO.ui.FieldLayout( checkbox1, { label: 'Selected checkbox', align: 'inline' } ),\n *         new OO.ui.FieldLayout( checkbox2, { label: 'Unselected checkbox', align: 'inline' } ),\n *         new OO.ui.FieldLayout( checkbox3, { label: 'Disabled checkbox', align: 'inline' } ),\n *     ] );\n *     $( 'body' ).append( fieldset.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Inputs\n *\n * @class\n * @extends OO.ui.InputWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {boolean} [selected=false] Select the checkbox initially. By default, the checkbox is not selected.\n */\nOO.ui.CheckboxInputWidget = function OoUiCheckboxInputWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.CheckboxInputWidget.parent.call( this, config );\n\n\t// Initialization\n\tthis.$element\n\t\t.addClass( 'oo-ui-checkboxInputWidget' )\n\t\t// Required for pretty styling in WikimediaUI theme\n\t\t.append( $( '<span>' ) );\n\tthis.setSelected( config.selected !== undefined ? config.selected : false );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.CheckboxInputWidget, OO.ui.InputWidget );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.CheckboxInputWidget.static.tagName = 'span';\n\n/* Static Methods */\n\n/**\n * @inheritdoc\n */\nOO.ui.CheckboxInputWidget.static.gatherPreInfuseState = function ( node, config ) {\n\tvar state = OO.ui.CheckboxInputWidget.parent.static.gatherPreInfuseState( node, config );\n\tstate.checked = config.$input.prop( 'checked' );\n\treturn state;\n};\n\n/* Methods */\n\n/**\n * @inheritdoc\n * @protected\n */\nOO.ui.CheckboxInputWidget.prototype.getInputElement = function () {\n\treturn $( '<input>' ).attr( 'type', 'checkbox' );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.CheckboxInputWidget.prototype.onEdit = function () {\n\tvar widget = this;\n\tif ( !this.isDisabled() ) {\n\t\t// Allow the stack to clear so the value will be updated\n\t\tsetTimeout( function () {\n\t\t\twidget.setSelected( widget.$input.prop( 'checked' ) );\n\t\t} );\n\t}\n};\n\n/**\n * Set selection state of this checkbox.\n *\n * @param {boolean} state `true` for selected\n * @chainable\n */\nOO.ui.CheckboxInputWidget.prototype.setSelected = function ( state ) {\n\tstate = !!state;\n\tif ( this.selected !== state ) {\n\t\tthis.selected = state;\n\t\tthis.$input.prop( 'checked', this.selected );\n\t\tthis.emit( 'change', this.selected );\n\t}\n\treturn this;\n};\n\n/**\n * Check if this checkbox is selected.\n *\n * @return {boolean} Checkbox is selected\n */\nOO.ui.CheckboxInputWidget.prototype.isSelected = function () {\n\t// Resynchronize our internal data with DOM data. Other scripts executing on the page can modify\n\t// it, and we won't know unless they're kind enough to trigger a 'change' event.\n\tvar selected = this.$input.prop( 'checked' );\n\tif ( this.selected !== selected ) {\n\t\tthis.setSelected( selected );\n\t}\n\treturn this.selected;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.CheckboxInputWidget.prototype.simulateLabelClick = function () {\n\tif ( !this.isDisabled() ) {\n\t\tthis.$input.click();\n\t}\n\tthis.focus();\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.CheckboxInputWidget.prototype.restorePreInfuseState = function ( state ) {\n\tOO.ui.CheckboxInputWidget.parent.prototype.restorePreInfuseState.call( this, state );\n\tif ( state.checked !== undefined && state.checked !== this.isSelected() ) {\n\t\tthis.setSelected( state.checked );\n\t}\n};\n","/**\n * DropdownInputWidget is a {@link OO.ui.DropdownWidget DropdownWidget} intended to be used\n * within an HTML form, such as a OO.ui.FormLayout. The selected value is synchronized with the value\n * of a hidden HTML `input` tag. Please see the [OOjs UI documentation on MediaWiki][1] for\n * more information about input widgets.\n *\n * A DropdownInputWidget always has a value (one of the options is always selected), unless there\n * are no options. If no `value` configuration option is provided, the first option is selected.\n * If you need a state representing no value (no option being selected), use a DropdownWidget.\n *\n * This and OO.ui.RadioSelectInputWidget support the same configuration options.\n *\n *     @example\n *     // Example: A DropdownInputWidget with three options\n *     var dropdownInput = new OO.ui.DropdownInputWidget( {\n *         options: [\n *             { data: 'a', label: 'First' },\n *             { data: 'b', label: 'Second'},\n *             { data: 'c', label: 'Third' }\n *         ]\n *     } );\n *     $( 'body' ).append( dropdownInput.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Inputs\n *\n * @class\n * @extends OO.ui.InputWidget\n * @mixins OO.ui.mixin.TitledElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {Object[]} [options=[]] Array of menu options in the format `{ data: …, label: … }`\n * @cfg {Object} [dropdown] Configuration options for {@link OO.ui.DropdownWidget DropdownWidget}\n */\nOO.ui.DropdownInputWidget = function OoUiDropdownInputWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// See InputWidget#reusePreInfuseDOM about config.$input\n\tif ( config.$input ) {\n\t\tconfig.$input.addClass( 'oo-ui-element-hidden' );\n\t}\n\n\t// Properties (must be done before parent constructor which calls #setDisabled)\n\tthis.dropdownWidget = new OO.ui.DropdownWidget( config.dropdown );\n\n\t// Parent constructor\n\tOO.ui.DropdownInputWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.TitledElement.call( this, config );\n\n\t// Events\n\tthis.dropdownWidget.getMenu().connect( this, { select: 'onMenuSelect' } );\n\n\t// Initialization\n\tthis.setOptions( config.options || [] );\n\tthis.$element\n\t\t.addClass( 'oo-ui-dropdownInputWidget' )\n\t\t.append( this.dropdownWidget.$element );\n\tthis.setTabIndexedElement( null );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.DropdownInputWidget, OO.ui.InputWidget );\nOO.mixinClass( OO.ui.DropdownInputWidget, OO.ui.mixin.TitledElement );\n\n/* Methods */\n\n/**\n * @inheritdoc\n * @protected\n */\nOO.ui.DropdownInputWidget.prototype.getInputElement = function () {\n\treturn $( '<input>' ).attr( 'type', 'hidden' );\n};\n\n/**\n * Handles menu select events.\n *\n * @private\n * @param {OO.ui.MenuOptionWidget} item Selected menu item\n */\nOO.ui.DropdownInputWidget.prototype.onMenuSelect = function ( item ) {\n\tthis.setValue( item.getData() );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.DropdownInputWidget.prototype.setValue = function ( value ) {\n\tvar selected;\n\tvalue = this.cleanUpValue( value );\n\tthis.dropdownWidget.getMenu().selectItemByData( value );\n\t// Only allow setting values that are actually present in the dropdown\n\tselected = this.dropdownWidget.getMenu().getSelectedItem();\n\tvalue = selected ? selected.getData() : '';\n\tOO.ui.DropdownInputWidget.parent.prototype.setValue.call( this, value );\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.DropdownInputWidget.prototype.setDisabled = function ( state ) {\n\tthis.dropdownWidget.setDisabled( state );\n\tOO.ui.DropdownInputWidget.parent.prototype.setDisabled.call( this, state );\n\treturn this;\n};\n\n/**\n * Set the options available for this input.\n *\n * @param {Object[]} options Array of menu options in the format `{ data: …, label: … }`\n * @chainable\n */\nOO.ui.DropdownInputWidget.prototype.setOptions = function ( options ) {\n\tvar\n\t\tvalue = this.getValue(),\n\t\twidget = this;\n\n\t// Rebuild the dropdown menu\n\tthis.dropdownWidget.getMenu()\n\t\t.clearItems()\n\t\t.addItems( options.map( function ( opt ) {\n\t\t\tvar optValue = widget.cleanUpValue( opt.data );\n\n\t\t\tif ( opt.optgroup === undefined ) {\n\t\t\t\treturn new OO.ui.MenuOptionWidget( {\n\t\t\t\t\tdata: optValue,\n\t\t\t\t\tlabel: opt.label !== undefined ? opt.label : optValue\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\treturn new OO.ui.MenuSectionOptionWidget( {\n\t\t\t\t\tlabel: opt.optgroup\n\t\t\t\t} );\n\t\t\t}\n\t\t} ) );\n\n\t// Restore the previous value, or reset to something sensible\n\tif ( this.dropdownWidget.getMenu().getItemFromData( value ) ) {\n\t\t// Previous value is still available, ensure consistency with the dropdown\n\t\tthis.setValue( value );\n\t} else {\n\t\t// No longer valid, reset\n\t\tif ( options.length ) {\n\t\t\tthis.setValue( options[ 0 ].data );\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.DropdownInputWidget.prototype.focus = function () {\n\tthis.dropdownWidget.focus();\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.DropdownInputWidget.prototype.blur = function () {\n\tthis.dropdownWidget.blur();\n\treturn this;\n};\n","/**\n * RadioInputWidget creates a single radio button. Because radio buttons are usually used as a set,\n * in most cases you will want to use a {@link OO.ui.RadioSelectWidget radio select}\n * with {@link OO.ui.RadioOptionWidget radio options} instead of this class. For more information,\n * please see the [OOjs UI documentation on MediaWiki][1].\n *\n * This widget can be used inside an HTML form, such as a OO.ui.FormLayout.\n *\n *     @example\n *     // An example of selected, unselected, and disabled radio inputs\n *     var radio1 = new OO.ui.RadioInputWidget( {\n *         value: 'a',\n *         selected: true\n *     } );\n *     var radio2 = new OO.ui.RadioInputWidget( {\n *         value: 'b'\n *     } );\n *     var radio3 = new OO.ui.RadioInputWidget( {\n *         value: 'c',\n *         disabled: true\n *     } );\n *     // Create a fieldset layout with fields for each radio button.\n *     var fieldset = new OO.ui.FieldsetLayout( {\n *         label: 'Radio inputs'\n *     } );\n *     fieldset.addItems( [\n *         new OO.ui.FieldLayout( radio1, { label: 'Selected', align: 'inline' } ),\n *         new OO.ui.FieldLayout( radio2, { label: 'Unselected', align: 'inline' } ),\n *         new OO.ui.FieldLayout( radio3, { label: 'Disabled', align: 'inline' } ),\n *     ] );\n *     $( 'body' ).append( fieldset.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Inputs\n *\n * @class\n * @extends OO.ui.InputWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {boolean} [selected=false] Select the radio button initially. By default, the radio button is not selected.\n */\nOO.ui.RadioInputWidget = function OoUiRadioInputWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.RadioInputWidget.parent.call( this, config );\n\n\t// Initialization\n\tthis.$element\n\t\t.addClass( 'oo-ui-radioInputWidget' )\n\t\t// Required for pretty styling in WikimediaUI theme\n\t\t.append( $( '<span>' ) );\n\tthis.setSelected( config.selected !== undefined ? config.selected : false );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.RadioInputWidget, OO.ui.InputWidget );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.RadioInputWidget.static.tagName = 'span';\n\n/* Static Methods */\n\n/**\n * @inheritdoc\n */\nOO.ui.RadioInputWidget.static.gatherPreInfuseState = function ( node, config ) {\n\tvar state = OO.ui.RadioInputWidget.parent.static.gatherPreInfuseState( node, config );\n\tstate.checked = config.$input.prop( 'checked' );\n\treturn state;\n};\n\n/* Methods */\n\n/**\n * @inheritdoc\n * @protected\n */\nOO.ui.RadioInputWidget.prototype.getInputElement = function () {\n\treturn $( '<input>' ).attr( 'type', 'radio' );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.RadioInputWidget.prototype.onEdit = function () {\n\t// RadioInputWidget doesn't track its state.\n};\n\n/**\n * Set selection state of this radio button.\n *\n * @param {boolean} state `true` for selected\n * @chainable\n */\nOO.ui.RadioInputWidget.prototype.setSelected = function ( state ) {\n\t// RadioInputWidget doesn't track its state.\n\tthis.$input.prop( 'checked', state );\n\treturn this;\n};\n\n/**\n * Check if this radio button is selected.\n *\n * @return {boolean} Radio is selected\n */\nOO.ui.RadioInputWidget.prototype.isSelected = function () {\n\treturn this.$input.prop( 'checked' );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.RadioInputWidget.prototype.simulateLabelClick = function () {\n\tif ( !this.isDisabled() ) {\n\t\tthis.$input.click();\n\t}\n\tthis.focus();\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.RadioInputWidget.prototype.restorePreInfuseState = function ( state ) {\n\tOO.ui.RadioInputWidget.parent.prototype.restorePreInfuseState.call( this, state );\n\tif ( state.checked !== undefined && state.checked !== this.isSelected() ) {\n\t\tthis.setSelected( state.checked );\n\t}\n};\n","/**\n * RadioSelectInputWidget is a {@link OO.ui.RadioSelectWidget RadioSelectWidget} intended to be used\n * within an HTML form, such as a OO.ui.FormLayout. The selected value is synchronized with the value\n * of a hidden HTML `input` tag. Please see the [OOjs UI documentation on MediaWiki][1] for\n * more information about input widgets.\n *\n * This and OO.ui.DropdownInputWidget support the same configuration options.\n *\n *     @example\n *     // Example: A RadioSelectInputWidget with three options\n *     var radioSelectInput = new OO.ui.RadioSelectInputWidget( {\n *         options: [\n *             { data: 'a', label: 'First' },\n *             { data: 'b', label: 'Second'},\n *             { data: 'c', label: 'Third' }\n *         ]\n *     } );\n *     $( 'body' ).append( radioSelectInput.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Inputs\n *\n * @class\n * @extends OO.ui.InputWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {Object[]} [options=[]] Array of menu options in the format `{ data: …, label: … }`\n */\nOO.ui.RadioSelectInputWidget = function OoUiRadioSelectInputWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties (must be done before parent constructor which calls #setDisabled)\n\tthis.radioSelectWidget = new OO.ui.RadioSelectWidget();\n\n\t// Parent constructor\n\tOO.ui.RadioSelectInputWidget.parent.call( this, config );\n\n\t// Events\n\tthis.radioSelectWidget.connect( this, { select: 'onMenuSelect' } );\n\n\t// Initialization\n\tthis.setOptions( config.options || [] );\n\tthis.$element\n\t\t.addClass( 'oo-ui-radioSelectInputWidget' )\n\t\t.append( this.radioSelectWidget.$element );\n\tthis.setTabIndexedElement( null );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.RadioSelectInputWidget, OO.ui.InputWidget );\n\n/* Static Methods */\n\n/**\n * @inheritdoc\n */\nOO.ui.RadioSelectInputWidget.static.gatherPreInfuseState = function ( node, config ) {\n\tvar state = OO.ui.RadioSelectInputWidget.parent.static.gatherPreInfuseState( node, config );\n\tstate.value = $( node ).find( '.oo-ui-radioInputWidget .oo-ui-inputWidget-input:checked' ).val();\n\treturn state;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.RadioSelectInputWidget.static.reusePreInfuseDOM = function ( node, config ) {\n\tconfig = OO.ui.RadioSelectInputWidget.parent.static.reusePreInfuseDOM( node, config );\n\t// Cannot reuse the `<input type=radio>` set\n\tdelete config.$input;\n\treturn config;\n};\n\n/* Methods */\n\n/**\n * @inheritdoc\n * @protected\n */\nOO.ui.RadioSelectInputWidget.prototype.getInputElement = function () {\n\treturn $( '<input>' ).attr( 'type', 'hidden' );\n};\n\n/**\n * Handles menu select events.\n *\n * @private\n * @param {OO.ui.RadioOptionWidget} item Selected menu item\n */\nOO.ui.RadioSelectInputWidget.prototype.onMenuSelect = function ( item ) {\n\tthis.setValue( item.getData() );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.RadioSelectInputWidget.prototype.setValue = function ( value ) {\n\tvalue = this.cleanUpValue( value );\n\tthis.radioSelectWidget.selectItemByData( value );\n\tOO.ui.RadioSelectInputWidget.parent.prototype.setValue.call( this, value );\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.RadioSelectInputWidget.prototype.setDisabled = function ( state ) {\n\tthis.radioSelectWidget.setDisabled( state );\n\tOO.ui.RadioSelectInputWidget.parent.prototype.setDisabled.call( this, state );\n\treturn this;\n};\n\n/**\n * Set the options available for this input.\n *\n * @param {Object[]} options Array of menu options in the format `{ data: …, label: … }`\n * @chainable\n */\nOO.ui.RadioSelectInputWidget.prototype.setOptions = function ( options ) {\n\tvar\n\t\tvalue = this.getValue(),\n\t\twidget = this;\n\n\t// Rebuild the radioSelect menu\n\tthis.radioSelectWidget\n\t\t.clearItems()\n\t\t.addItems( options.map( function ( opt ) {\n\t\t\tvar optValue = widget.cleanUpValue( opt.data );\n\t\t\treturn new OO.ui.RadioOptionWidget( {\n\t\t\t\tdata: optValue,\n\t\t\t\tlabel: opt.label !== undefined ? opt.label : optValue\n\t\t\t} );\n\t\t} ) );\n\n\t// Restore the previous value, or reset to something sensible\n\tif ( this.radioSelectWidget.getItemFromData( value ) ) {\n\t\t// Previous value is still available, ensure consistency with the radioSelect\n\t\tthis.setValue( value );\n\t} else {\n\t\t// No longer valid, reset\n\t\tif ( options.length ) {\n\t\t\tthis.setValue( options[ 0 ].data );\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.RadioSelectInputWidget.prototype.focus = function () {\n\tthis.radioSelectWidget.focus();\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.RadioSelectInputWidget.prototype.blur = function () {\n\tthis.radioSelectWidget.blur();\n\treturn this;\n};\n","/**\n * CheckboxMultiselectInputWidget is a\n * {@link OO.ui.CheckboxMultiselectWidget CheckboxMultiselectWidget} intended to be used within a\n * HTML form, such as a OO.ui.FormLayout. The selected values are synchronized with the value of\n * HTML `<input type=checkbox>` tags. Please see the [OOjs UI documentation on MediaWiki][1] for\n * more information about input widgets.\n *\n *     @example\n *     // Example: A CheckboxMultiselectInputWidget with three options\n *     var multiselectInput = new OO.ui.CheckboxMultiselectInputWidget( {\n *         options: [\n *             { data: 'a', label: 'First' },\n *             { data: 'b', label: 'Second'},\n *             { data: 'c', label: 'Third' }\n *         ]\n *     } );\n *     $( 'body' ).append( multiselectInput.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Inputs\n *\n * @class\n * @extends OO.ui.InputWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {Object[]} [options=[]] Array of menu options in the format `{ data: …, label: …, disabled: … }`\n */\nOO.ui.CheckboxMultiselectInputWidget = function OoUiCheckboxMultiselectInputWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties (must be done before parent constructor which calls #setDisabled)\n\tthis.checkboxMultiselectWidget = new OO.ui.CheckboxMultiselectWidget();\n\n\t// Parent constructor\n\tOO.ui.CheckboxMultiselectInputWidget.parent.call( this, config );\n\n\t// Properties\n\tthis.inputName = config.name;\n\n\t// Initialization\n\tthis.$element\n\t\t.addClass( 'oo-ui-checkboxMultiselectInputWidget' )\n\t\t.append( this.checkboxMultiselectWidget.$element );\n\t// We don't use this.$input, but rather the CheckboxInputWidgets inside each option\n\tthis.$input.detach();\n\tthis.setOptions( config.options || [] );\n\t// Have to repeat this from parent, as we need options to be set up for this to make sense\n\tthis.setValue( config.value );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.CheckboxMultiselectInputWidget, OO.ui.InputWidget );\n\n/* Static Methods */\n\n/**\n * @inheritdoc\n */\nOO.ui.CheckboxMultiselectInputWidget.static.gatherPreInfuseState = function ( node, config ) {\n\tvar state = OO.ui.CheckboxMultiselectInputWidget.parent.static.gatherPreInfuseState( node, config );\n\tstate.value = $( node ).find( '.oo-ui-checkboxInputWidget .oo-ui-inputWidget-input:checked' )\n\t\t.toArray().map( function ( el ) { return el.value; } );\n\treturn state;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.CheckboxMultiselectInputWidget.static.reusePreInfuseDOM = function ( node, config ) {\n\tconfig = OO.ui.CheckboxMultiselectInputWidget.parent.static.reusePreInfuseDOM( node, config );\n\t// Cannot reuse the `<input type=checkbox>` set\n\tdelete config.$input;\n\treturn config;\n};\n\n/* Methods */\n\n/**\n * @inheritdoc\n * @protected\n */\nOO.ui.CheckboxMultiselectInputWidget.prototype.getInputElement = function () {\n\t// Actually unused\n\treturn $( '<unused>' );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.CheckboxMultiselectInputWidget.prototype.getValue = function () {\n\tvar value = this.$element.find( '.oo-ui-checkboxInputWidget .oo-ui-inputWidget-input:checked' )\n\t\t.toArray().map( function ( el ) { return el.value; } );\n\tif ( this.value !== value ) {\n\t\tthis.setValue( value );\n\t}\n\treturn this.value;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.CheckboxMultiselectInputWidget.prototype.setValue = function ( value ) {\n\tvalue = this.cleanUpValue( value );\n\tthis.checkboxMultiselectWidget.selectItemsByData( value );\n\tOO.ui.CheckboxMultiselectInputWidget.parent.prototype.setValue.call( this, value );\n\treturn this;\n};\n\n/**\n * Clean up incoming value.\n *\n * @param {string[]} value Original value\n * @return {string[]} Cleaned up value\n */\nOO.ui.CheckboxMultiselectInputWidget.prototype.cleanUpValue = function ( value ) {\n\tvar i, singleValue,\n\t\tcleanValue = [];\n\tif ( !Array.isArray( value ) ) {\n\t\treturn cleanValue;\n\t}\n\tfor ( i = 0; i < value.length; i++ ) {\n\t\tsingleValue =\n\t\t\tOO.ui.CheckboxMultiselectInputWidget.parent.prototype.cleanUpValue.call( this, value[ i ] );\n\t\t// Remove options that we don't have here\n\t\tif ( !this.checkboxMultiselectWidget.getItemFromData( singleValue ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tcleanValue.push( singleValue );\n\t}\n\treturn cleanValue;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.CheckboxMultiselectInputWidget.prototype.setDisabled = function ( state ) {\n\tthis.checkboxMultiselectWidget.setDisabled( state );\n\tOO.ui.CheckboxMultiselectInputWidget.parent.prototype.setDisabled.call( this, state );\n\treturn this;\n};\n\n/**\n * Set the options available for this input.\n *\n * @param {Object[]} options Array of menu options in the format `{ data: …, label: …, disabled: … }`\n * @chainable\n */\nOO.ui.CheckboxMultiselectInputWidget.prototype.setOptions = function ( options ) {\n\tvar widget = this;\n\n\t// Rebuild the checkboxMultiselectWidget menu\n\tthis.checkboxMultiselectWidget\n\t\t.clearItems()\n\t\t.addItems( options.map( function ( opt ) {\n\t\t\tvar optValue, item, optDisabled;\n\t\t\toptValue =\n\t\t\t\tOO.ui.CheckboxMultiselectInputWidget.parent.prototype.cleanUpValue.call( widget, opt.data );\n\t\t\toptDisabled = opt.disabled !== undefined ? opt.disabled : false;\n\t\t\titem = new OO.ui.CheckboxMultioptionWidget( {\n\t\t\t\tdata: optValue,\n\t\t\t\tlabel: opt.label !== undefined ? opt.label : optValue,\n\t\t\t\tdisabled: optDisabled\n\t\t\t} );\n\t\t\t// Set the 'name' and 'value' for form submission\n\t\t\titem.checkbox.$input.attr( 'name', widget.inputName );\n\t\t\titem.checkbox.setValue( optValue );\n\t\t\treturn item;\n\t\t} ) );\n\n\t// Re-set the value, checking the checkboxes as needed.\n\t// This will also get rid of any stale options that we just removed.\n\tthis.setValue( this.getValue() );\n\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.CheckboxMultiselectInputWidget.prototype.focus = function () {\n\tthis.checkboxMultiselectWidget.focus();\n\treturn this;\n};\n","/**\n * TextInputWidgets, like HTML text inputs, can be configured with options that customize the\n * size of the field as well as its presentation. In addition, these widgets can be configured\n * with {@link OO.ui.mixin.IconElement icons}, {@link OO.ui.mixin.IndicatorElement indicators}, an optional\n * validation-pattern (used to determine if an input value is valid or not) and an input filter,\n * which modifies incoming values rather than validating them.\n * Please see the [OOjs UI documentation on MediaWiki] [1] for more information and examples.\n *\n * This widget can be used inside an HTML form, such as a OO.ui.FormLayout.\n *\n *     @example\n *     // Example of a text input widget\n *     var textInput = new OO.ui.TextInputWidget( {\n *         value: 'Text input'\n *     } )\n *     $( 'body' ).append( textInput.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Inputs\n *\n * @class\n * @extends OO.ui.InputWidget\n * @mixins OO.ui.mixin.IconElement\n * @mixins OO.ui.mixin.IndicatorElement\n * @mixins OO.ui.mixin.PendingElement\n * @mixins OO.ui.mixin.LabelElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {string} [type='text'] The value of the HTML `type` attribute: 'text', 'password'\n *  'email', 'url' or 'number'. Ignored if `multiline` is true.\n * @cfg {string} [placeholder] Placeholder text\n * @cfg {boolean} [autofocus=false] Use an HTML `autofocus` attribute to\n *  instruct the browser to focus this widget.\n * @cfg {boolean} [readOnly=false] Prevent changes to the value of the text input.\n * @cfg {number} [maxLength] Maximum number of characters allowed in the input.\n * @cfg {boolean} [multiline=false] Allow multiple lines of text\n * @cfg {number} [rows] If multiline, number of visible lines in textarea. If used with `autosize`,\n *  specifies minimum number of rows to display.\n * @cfg {boolean} [autosize=false] Automatically resize the text input to fit its content.\n *  Use the #maxRows config to specify a maximum number of displayed rows.\n * @cfg {number} [maxRows] Maximum number of rows to display when #autosize is set to true.\n *  Defaults to the maximum of `10` and `2 * rows`, or `10` if `rows` isn't provided.\n * @cfg {string} [labelPosition='after'] The position of the inline label relative to that of\n *  the value or placeholder text: `'before'` or `'after'`\n * @cfg {boolean} [required=false] Mark the field as required. Implies `indicator: 'required'`.\n * @cfg {boolean} [autocomplete=true] Should the browser support autocomplete for this field\n * @cfg {RegExp|Function|string} [validate] Validation pattern: when string, a symbolic name of a\n *  pattern defined by the class: 'non-empty' (the value cannot be an empty string) or 'integer'\n *  (the value must contain only numbers); when RegExp, a regular expression that must match the\n *  value for it to be considered valid; when Function, a function receiving the value as parameter\n *  that must return true, or promise resolving to true, for it to be considered valid.\n */\nOO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {\n\t// Configuration initialization\n\tconfig = $.extend( {\n\t\ttype: 'text',\n\t\tlabelPosition: 'after'\n\t}, config );\n\n\t// Parent constructor\n\tOO.ui.TextInputWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.IconElement.call( this, config );\n\tOO.ui.mixin.IndicatorElement.call( this, config );\n\tOO.ui.mixin.PendingElement.call( this, $.extend( {}, config, { $pending: this.$input } ) );\n\tOO.ui.mixin.LabelElement.call( this, config );\n\n\t// Properties\n\tthis.type = this.getSaneType( config );\n\tthis.readOnly = false;\n\tthis.required = false;\n\tthis.multiline = !!config.multiline;\n\tthis.autosize = !!config.autosize;\n\tthis.minRows = config.rows !== undefined ? config.rows : '';\n\tthis.maxRows = config.maxRows || Math.max( 2 * ( this.minRows || 0 ), 10 );\n\tthis.validate = null;\n\tthis.styleHeight = null;\n\tthis.scrollWidth = null;\n\n\t// Clone for resizing\n\tif ( this.autosize ) {\n\t\tthis.$clone = this.$input\n\t\t\t.clone()\n\t\t\t.insertAfter( this.$input )\n\t\t\t.attr( 'aria-hidden', 'true' )\n\t\t\t.addClass( 'oo-ui-element-hidden' );\n\t}\n\n\tthis.setValidation( config.validate );\n\tthis.setLabelPosition( config.labelPosition );\n\n\t// Events\n\tthis.$input.on( {\n\t\tkeypress: this.onKeyPress.bind( this ),\n\t\tblur: this.onBlur.bind( this ),\n\t\tfocus: this.onFocus.bind( this )\n\t} );\n\tthis.$icon.on( 'mousedown', this.onIconMouseDown.bind( this ) );\n\tthis.$indicator.on( 'mousedown', this.onIndicatorMouseDown.bind( this ) );\n\tthis.on( 'labelChange', this.updatePosition.bind( this ) );\n\tthis.connect( this, {\n\t\tchange: 'onChange'\n\t} );\n\tthis.on( 'change', OO.ui.debounce( this.onDebouncedChange.bind( this ), 250 ) );\n\n\t// Initialization\n\tthis.$element\n\t\t.addClass( 'oo-ui-textInputWidget oo-ui-textInputWidget-type-' + this.type )\n\t\t.append( this.$icon, this.$indicator );\n\tthis.setReadOnly( !!config.readOnly );\n\tthis.setRequired( !!config.required );\n\tif ( config.placeholder !== undefined ) {\n\t\tthis.$input.attr( 'placeholder', config.placeholder );\n\t}\n\tif ( config.maxLength !== undefined ) {\n\t\tthis.$input.attr( 'maxlength', config.maxLength );\n\t}\n\tif ( config.autofocus ) {\n\t\tthis.$input.attr( 'autofocus', 'autofocus' );\n\t}\n\tif ( config.autocomplete === false ) {\n\t\tthis.$input.attr( 'autocomplete', 'off' );\n\t\t// Turning off autocompletion also disables \"form caching\" when the user navigates to a\n\t\t// different page and then clicks \"Back\". Re-enable it when leaving. Borrowed from jQuery UI.\n\t\t$( window ).on( {\n\t\t\tbeforeunload: function () {\n\t\t\t\tthis.$input.removeAttr( 'autocomplete' );\n\t\t\t}.bind( this ),\n\t\t\tpageshow: function () {\n\t\t\t\t// Browsers don't seem to actually fire this event on \"Back\", they instead just reload the\n\t\t\t\t// whole page... it shouldn't hurt, though.\n\t\t\t\tthis.$input.attr( 'autocomplete', 'off' );\n\t\t\t}.bind( this )\n\t\t} );\n\t}\n\tif ( this.multiline && config.rows ) {\n\t\tthis.$input.attr( 'rows', config.rows );\n\t}\n\tif ( this.label || config.autosize ) {\n\t\tthis.isWaitingToBeAttached = true;\n\t\tthis.installParentChangeDetector();\n\t}\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.TextInputWidget, OO.ui.InputWidget );\nOO.mixinClass( OO.ui.TextInputWidget, OO.ui.mixin.IconElement );\nOO.mixinClass( OO.ui.TextInputWidget, OO.ui.mixin.IndicatorElement );\nOO.mixinClass( OO.ui.TextInputWidget, OO.ui.mixin.PendingElement );\nOO.mixinClass( OO.ui.TextInputWidget, OO.ui.mixin.LabelElement );\n\n/* Static Properties */\n\nOO.ui.TextInputWidget.static.validationPatterns = {\n\t'non-empty': /.+/,\n\tinteger: /^\\d+$/\n};\n\n/* Static Methods */\n\n/**\n * @inheritdoc\n */\nOO.ui.TextInputWidget.static.gatherPreInfuseState = function ( node, config ) {\n\tvar state = OO.ui.TextInputWidget.parent.static.gatherPreInfuseState( node, config );\n\tif ( config.multiline ) {\n\t\tstate.scrollTop = config.$input.scrollTop();\n\t}\n\treturn state;\n};\n\n/* Events */\n\n/**\n * An `enter` event is emitted when the user presses 'enter' inside the text box.\n *\n * Not emitted if the input is multiline.\n *\n * @event enter\n */\n\n/**\n * A `resize` event is emitted when autosize is set and the widget resizes\n *\n * @event resize\n */\n\n/* Methods */\n\n/**\n * Handle icon mouse down events.\n *\n * @private\n * @param {jQuery.Event} e Mouse down event\n */\nOO.ui.TextInputWidget.prototype.onIconMouseDown = function ( e ) {\n\tif ( e.which === OO.ui.MouseButtons.LEFT ) {\n\t\tthis.focus();\n\t\treturn false;\n\t}\n};\n\n/**\n * Handle indicator mouse down events.\n *\n * @private\n * @param {jQuery.Event} e Mouse down event\n */\nOO.ui.TextInputWidget.prototype.onIndicatorMouseDown = function ( e ) {\n\tif ( e.which === OO.ui.MouseButtons.LEFT ) {\n\t\tthis.focus();\n\t\treturn false;\n\t}\n};\n\n/**\n * Handle key press events.\n *\n * @private\n * @param {jQuery.Event} e Key press event\n * @fires enter If enter key is pressed and input is not multiline\n */\nOO.ui.TextInputWidget.prototype.onKeyPress = function ( e ) {\n\tif ( e.which === OO.ui.Keys.ENTER && !this.multiline ) {\n\t\tthis.emit( 'enter', e );\n\t}\n};\n\n/**\n * Handle blur events.\n *\n * @private\n * @param {jQuery.Event} e Blur event\n */\nOO.ui.TextInputWidget.prototype.onBlur = function () {\n\tthis.setValidityFlag();\n};\n\n/**\n * Handle focus events.\n *\n * @private\n * @param {jQuery.Event} e Focus event\n */\nOO.ui.TextInputWidget.prototype.onFocus = function () {\n\tif ( this.isWaitingToBeAttached ) {\n\t\t// If we've received focus, then we must be attached to the document, and if\n\t\t// isWaitingToBeAttached is still true, that means the handler never fired. Fire it now.\n\t\tthis.onElementAttach();\n\t}\n\tthis.setValidityFlag( true );\n};\n\n/**\n * Handle element attach events.\n *\n * @private\n * @param {jQuery.Event} e Element attach event\n */\nOO.ui.TextInputWidget.prototype.onElementAttach = function () {\n\tthis.isWaitingToBeAttached = false;\n\t// Any previously calculated size is now probably invalid if we reattached elsewhere\n\tthis.valCache = null;\n\tthis.adjustSize();\n\tthis.positionLabel();\n};\n\n/**\n * Handle change events.\n *\n * @param {string} value\n * @private\n */\nOO.ui.TextInputWidget.prototype.onChange = function () {\n\tthis.adjustSize();\n};\n\n/**\n * Handle debounced change events.\n *\n * @param {string} value\n * @private\n */\nOO.ui.TextInputWidget.prototype.onDebouncedChange = function () {\n\tthis.setValidityFlag();\n};\n\n/**\n * Check if the input is {@link #readOnly read-only}.\n *\n * @return {boolean}\n */\nOO.ui.TextInputWidget.prototype.isReadOnly = function () {\n\treturn this.readOnly;\n};\n\n/**\n * Set the {@link #readOnly read-only} state of the input.\n *\n * @param {boolean} state Make input read-only\n * @chainable\n */\nOO.ui.TextInputWidget.prototype.setReadOnly = function ( state ) {\n\tthis.readOnly = !!state;\n\tthis.$input.prop( 'readOnly', this.readOnly );\n\treturn this;\n};\n\n/**\n * Check if the input is {@link #required required}.\n *\n * @return {boolean}\n */\nOO.ui.TextInputWidget.prototype.isRequired = function () {\n\treturn this.required;\n};\n\n/**\n * Set the {@link #required required} state of the input.\n *\n * @param {boolean} state Make input required\n * @chainable\n */\nOO.ui.TextInputWidget.prototype.setRequired = function ( state ) {\n\tthis.required = !!state;\n\tif ( this.required ) {\n\t\tthis.$input\n\t\t\t.prop( 'required', true )\n\t\t\t.attr( 'aria-required', 'true' );\n\t\tif ( this.getIndicator() === null ) {\n\t\t\tthis.setIndicator( 'required' );\n\t\t}\n\t} else {\n\t\tthis.$input\n\t\t\t.prop( 'required', false )\n\t\t\t.removeAttr( 'aria-required' );\n\t\tif ( this.getIndicator() === 'required' ) {\n\t\t\tthis.setIndicator( null );\n\t\t}\n\t}\n\treturn this;\n};\n\n/**\n * Support function for making #onElementAttach work across browsers.\n *\n * This whole function could be replaced with one line of code using the DOMNodeInsertedIntoDocument\n * event, but it's not supported by Firefox and allegedly deprecated, so we only use it as fallback.\n *\n * Due to MutationObserver performance woes, #onElementAttach is only somewhat reliably called the\n * first time that the element gets attached to the documented.\n */\nOO.ui.TextInputWidget.prototype.installParentChangeDetector = function () {\n\tvar mutationObserver, onRemove, topmostNode, fakeParentNode,\n\t\tMutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver,\n\t\twidget = this;\n\n\tif ( MutationObserver ) {\n\t\t// The new way. If only it wasn't so ugly.\n\n\t\tif ( this.isElementAttached() ) {\n\t\t\t// Widget is attached already, do nothing. This breaks the functionality of this function when\n\t\t\t// the widget is detached and reattached. Alas, doing this correctly with MutationObserver\n\t\t\t// would require observation of the whole document, which would hurt performance of other,\n\t\t\t// more important code.\n\t\t\treturn;\n\t\t}\n\n\t\t// Find topmost node in the tree\n\t\ttopmostNode = this.$element[ 0 ];\n\t\twhile ( topmostNode.parentNode ) {\n\t\t\ttopmostNode = topmostNode.parentNode;\n\t\t}\n\n\t\t// We have no way to detect the $element being attached somewhere without observing the entire\n\t\t// DOM with subtree modifications, which would hurt performance. So we cheat: we hook to the\n\t\t// parent node of $element, and instead detect when $element is removed from it (and thus\n\t\t// probably attached somewhere else). If there is no parent, we create a \"fake\" one. If it\n\t\t// doesn't get attached, we end up back here and create the parent.\n\n\t\tmutationObserver = new MutationObserver( function ( mutations ) {\n\t\t\tvar i, j, removedNodes;\n\t\t\tfor ( i = 0; i < mutations.length; i++ ) {\n\t\t\t\tremovedNodes = mutations[ i ].removedNodes;\n\t\t\t\tfor ( j = 0; j < removedNodes.length; j++ ) {\n\t\t\t\t\tif ( removedNodes[ j ] === topmostNode ) {\n\t\t\t\t\t\tsetTimeout( onRemove, 0 );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tonRemove = function () {\n\t\t\t// If the node was attached somewhere else, report it\n\t\t\tif ( widget.isElementAttached() ) {\n\t\t\t\twidget.onElementAttach();\n\t\t\t}\n\t\t\tmutationObserver.disconnect();\n\t\t\twidget.installParentChangeDetector();\n\t\t};\n\n\t\t// Create a fake parent and observe it\n\t\tfakeParentNode = $( '<div>' ).append( topmostNode )[ 0 ];\n\t\tmutationObserver.observe( fakeParentNode, { childList: true } );\n\t} else {\n\t\t// Using the DOMNodeInsertedIntoDocument event is much nicer and less magical, and works for\n\t\t// detachment and reattachment, but it's not supported by Firefox and allegedly deprecated.\n\t\tthis.$element.on( 'DOMNodeInsertedIntoDocument', this.onElementAttach.bind( this ) );\n\t}\n};\n\n/**\n * Automatically adjust the size of the text input.\n *\n * This only affects #multiline inputs that are {@link #autosize autosized}.\n *\n * @chainable\n * @fires resize\n */\nOO.ui.TextInputWidget.prototype.adjustSize = function () {\n\tvar scrollHeight, innerHeight, outerHeight, maxInnerHeight, measurementError,\n\t\tidealHeight, newHeight, scrollWidth, property;\n\n\tif ( this.isWaitingToBeAttached ) {\n\t\t// #onElementAttach will be called soon, which calls this method\n\t\treturn this;\n\t}\n\n\tif ( this.multiline && this.$input.val() !== this.valCache ) {\n\t\tif ( this.autosize ) {\n\t\t\tthis.$clone\n\t\t\t\t.val( this.$input.val() )\n\t\t\t\t.attr( 'rows', this.minRows )\n\t\t\t\t// Set inline height property to 0 to measure scroll height\n\t\t\t\t.css( 'height', 0 );\n\n\t\t\tthis.$clone.removeClass( 'oo-ui-element-hidden' );\n\n\t\t\tthis.valCache = this.$input.val();\n\n\t\t\tscrollHeight = this.$clone[ 0 ].scrollHeight;\n\n\t\t\t// Remove inline height property to measure natural heights\n\t\t\tthis.$clone.css( 'height', '' );\n\t\t\tinnerHeight = this.$clone.innerHeight();\n\t\t\touterHeight = this.$clone.outerHeight();\n\n\t\t\t// Measure max rows height\n\t\t\tthis.$clone\n\t\t\t\t.attr( 'rows', this.maxRows )\n\t\t\t\t.css( 'height', 'auto' )\n\t\t\t\t.val( '' );\n\t\t\tmaxInnerHeight = this.$clone.innerHeight();\n\n\t\t\t// Difference between reported innerHeight and scrollHeight with no scrollbars present.\n\t\t\t// This is sometimes non-zero on Blink-based browsers, depending on zoom level.\n\t\t\tmeasurementError = maxInnerHeight - this.$clone[ 0 ].scrollHeight;\n\t\t\tidealHeight = Math.min( maxInnerHeight, scrollHeight + measurementError );\n\n\t\t\tthis.$clone.addClass( 'oo-ui-element-hidden' );\n\n\t\t\t// Only apply inline height when expansion beyond natural height is needed\n\t\t\t// Use the difference between the inner and outer height as a buffer\n\t\t\tnewHeight = idealHeight > innerHeight ? idealHeight + ( outerHeight - innerHeight ) : '';\n\t\t\tif ( newHeight !== this.styleHeight ) {\n\t\t\t\tthis.$input.css( 'height', newHeight );\n\t\t\t\tthis.styleHeight = newHeight;\n\t\t\t\tthis.emit( 'resize' );\n\t\t\t}\n\t\t}\n\t\tscrollWidth = this.$input[ 0 ].offsetWidth - this.$input[ 0 ].clientWidth;\n\t\tif ( scrollWidth !== this.scrollWidth ) {\n\t\t\tproperty = this.$element.css( 'direction' ) === 'rtl' ? 'left' : 'right';\n\t\t\t// Reset\n\t\t\tthis.$label.css( { right: '', left: '' } );\n\t\t\tthis.$indicator.css( { right: '', left: '' } );\n\n\t\t\tif ( scrollWidth ) {\n\t\t\t\tthis.$indicator.css( property, scrollWidth );\n\t\t\t\tif ( this.labelPosition === 'after' ) {\n\t\t\t\t\tthis.$label.css( property, scrollWidth );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.scrollWidth = scrollWidth;\n\t\t\tthis.positionLabel();\n\t\t}\n\t}\n\treturn this;\n};\n\n/**\n * @inheritdoc\n * @protected\n */\nOO.ui.TextInputWidget.prototype.getInputElement = function ( config ) {\n\tif ( config.multiline ) {\n\t\treturn $( '<textarea>' );\n\t} else if ( this.getSaneType( config ) === 'number' ) {\n\t\treturn $( '<input>' )\n\t\t\t.attr( 'step', 'any' )\n\t\t\t.attr( 'type', 'number' );\n\t} else {\n\t\treturn $( '<input>' ).attr( 'type', this.getSaneType( config ) );\n\t}\n};\n\n/**\n * Get sanitized value for 'type' for given config.\n *\n * @param {Object} config Configuration options\n * @return {string|null}\n * @private\n */\nOO.ui.TextInputWidget.prototype.getSaneType = function ( config ) {\n\tvar allowedTypes = [\n\t\t'text',\n\t\t'password',\n\t\t'email',\n\t\t'url',\n\t\t'number'\n\t];\n\treturn allowedTypes.indexOf( config.type ) !== -1 ? config.type : 'text';\n};\n\n/**\n * Check if the input supports multiple lines.\n *\n * @return {boolean}\n */\nOO.ui.TextInputWidget.prototype.isMultiline = function () {\n\treturn !!this.multiline;\n};\n\n/**\n * Check if the input automatically adjusts its size.\n *\n * @return {boolean}\n */\nOO.ui.TextInputWidget.prototype.isAutosizing = function () {\n\treturn !!this.autosize;\n};\n\n/**\n * Focus the input and select a specified range within the text.\n *\n * @param {number} from Select from offset\n * @param {number} [to] Select to offset, defaults to from\n * @chainable\n */\nOO.ui.TextInputWidget.prototype.selectRange = function ( from, to ) {\n\tvar isBackwards, start, end,\n\t\tinput = this.$input[ 0 ];\n\n\tto = to || from;\n\n\tisBackwards = to < from;\n\tstart = isBackwards ? to : from;\n\tend = isBackwards ? from : to;\n\n\tthis.focus();\n\n\ttry {\n\t\tinput.setSelectionRange( start, end, isBackwards ? 'backward' : 'forward' );\n\t} catch ( e ) {\n\t\t// IE throws an exception if you call setSelectionRange on a unattached DOM node.\n\t\t// Rather than expensively check if the input is attached every time, just check\n\t\t// if it was the cause of an error being thrown. If not, rethrow the error.\n\t\tif ( this.getElementDocument().body.contains( input ) ) {\n\t\t\tthrow e;\n\t\t}\n\t}\n\treturn this;\n};\n\n/**\n * Get an object describing the current selection range in a directional manner\n *\n * @return {Object} Object containing 'from' and 'to' offsets\n */\nOO.ui.TextInputWidget.prototype.getRange = function () {\n\tvar input = this.$input[ 0 ],\n\t\tstart = input.selectionStart,\n\t\tend = input.selectionEnd,\n\t\tisBackwards = input.selectionDirection === 'backward';\n\n\treturn {\n\t\tfrom: isBackwards ? end : start,\n\t\tto: isBackwards ? start : end\n\t};\n};\n\n/**\n * Get the length of the text input value.\n *\n * This could differ from the length of #getValue if the\n * value gets filtered\n *\n * @return {number} Input length\n */\nOO.ui.TextInputWidget.prototype.getInputLength = function () {\n\treturn this.$input[ 0 ].value.length;\n};\n\n/**\n * Focus the input and select the entire text.\n *\n * @chainable\n */\nOO.ui.TextInputWidget.prototype.select = function () {\n\treturn this.selectRange( 0, this.getInputLength() );\n};\n\n/**\n * Focus the input and move the cursor to the start.\n *\n * @chainable\n */\nOO.ui.TextInputWidget.prototype.moveCursorToStart = function () {\n\treturn this.selectRange( 0 );\n};\n\n/**\n * Focus the input and move the cursor to the end.\n *\n * @chainable\n */\nOO.ui.TextInputWidget.prototype.moveCursorToEnd = function () {\n\treturn this.selectRange( this.getInputLength() );\n};\n\n/**\n * Insert new content into the input.\n *\n * @param {string} content Content to be inserted\n * @chainable\n */\nOO.ui.TextInputWidget.prototype.insertContent = function ( content ) {\n\tvar start, end,\n\t\trange = this.getRange(),\n\t\tvalue = this.getValue();\n\n\tstart = Math.min( range.from, range.to );\n\tend = Math.max( range.from, range.to );\n\n\tthis.setValue( value.slice( 0, start ) + content + value.slice( end ) );\n\tthis.selectRange( start + content.length );\n\treturn this;\n};\n\n/**\n * Insert new content either side of a selection.\n *\n * @param {string} pre Content to be inserted before the selection\n * @param {string} post Content to be inserted after the selection\n * @chainable\n */\nOO.ui.TextInputWidget.prototype.encapsulateContent = function ( pre, post ) {\n\tvar start, end,\n\t\trange = this.getRange(),\n\t\toffset = pre.length;\n\n\tstart = Math.min( range.from, range.to );\n\tend = Math.max( range.from, range.to );\n\n\tthis.selectRange( start ).insertContent( pre );\n\tthis.selectRange( offset + end ).insertContent( post );\n\n\tthis.selectRange( offset + start, offset + end );\n\treturn this;\n};\n\n/**\n * Set the validation pattern.\n *\n * The validation pattern is either a regular expression, a function, or the symbolic name of a\n * pattern defined by the class: 'non-empty' (the value cannot be an empty string) or 'integer' (the\n * value must contain only numbers).\n *\n * @param {RegExp|Function|string|null} validate Regular expression, function, or the symbolic name\n *  of a pattern (either ‘integer’ or ‘non-empty’) defined by the class.\n */\nOO.ui.TextInputWidget.prototype.setValidation = function ( validate ) {\n\tif ( validate instanceof RegExp || validate instanceof Function ) {\n\t\tthis.validate = validate;\n\t} else {\n\t\tthis.validate = this.constructor.static.validationPatterns[ validate ] || /.*/;\n\t}\n};\n\n/**\n * Sets the 'invalid' flag appropriately.\n *\n * @param {boolean} [isValid] Optionally override validation result\n */\nOO.ui.TextInputWidget.prototype.setValidityFlag = function ( isValid ) {\n\tvar widget = this,\n\t\tsetFlag = function ( valid ) {\n\t\t\tif ( !valid ) {\n\t\t\t\twidget.$input.attr( 'aria-invalid', 'true' );\n\t\t\t} else {\n\t\t\t\twidget.$input.removeAttr( 'aria-invalid' );\n\t\t\t}\n\t\t\twidget.setFlags( { invalid: !valid } );\n\t\t};\n\n\tif ( isValid !== undefined ) {\n\t\tsetFlag( isValid );\n\t} else {\n\t\tthis.getValidity().then( function () {\n\t\t\tsetFlag( true );\n\t\t}, function () {\n\t\t\tsetFlag( false );\n\t\t} );\n\t}\n};\n\n/**\n * Get the validity of current value.\n *\n * This method returns a promise that resolves if the value is valid and rejects if\n * it isn't. Uses the {@link #validate validation pattern}  to check for validity.\n *\n * @return {jQuery.Promise} A promise that resolves if the value is valid, rejects if not.\n */\nOO.ui.TextInputWidget.prototype.getValidity = function () {\n\tvar result;\n\n\tfunction rejectOrResolve( valid ) {\n\t\tif ( valid ) {\n\t\t\treturn $.Deferred().resolve().promise();\n\t\t} else {\n\t\t\treturn $.Deferred().reject().promise();\n\t\t}\n\t}\n\n\t// Check browser validity and reject if it is invalid\n\tif (\n\t\tthis.$input[ 0 ].checkValidity !== undefined &&\n\t\tthis.$input[ 0 ].checkValidity() === false\n\t) {\n\t\treturn rejectOrResolve( false );\n\t}\n\n\t// Run our checks if the browser thinks the field is valid\n\tif ( this.validate instanceof Function ) {\n\t\tresult = this.validate( this.getValue() );\n\t\tif ( result && $.isFunction( result.promise ) ) {\n\t\t\treturn result.promise().then( function ( valid ) {\n\t\t\t\treturn rejectOrResolve( valid );\n\t\t\t} );\n\t\t} else {\n\t\t\treturn rejectOrResolve( result );\n\t\t}\n\t} else {\n\t\treturn rejectOrResolve( this.getValue().match( this.validate ) );\n\t}\n};\n\n/**\n * Set the position of the inline label relative to that of the value: `‘before’` or `‘after’`.\n *\n * @param {string} labelPosition Label position, 'before' or 'after'\n * @chainable\n */\nOO.ui.TextInputWidget.prototype.setLabelPosition = function ( labelPosition ) {\n\tthis.labelPosition = labelPosition;\n\tif ( this.label ) {\n\t\t// If there is no label and we only change the position, #updatePosition is a no-op,\n\t\t// but it takes really a lot of work to do nothing.\n\t\tthis.updatePosition();\n\t}\n\treturn this;\n};\n\n/**\n * Update the position of the inline label.\n *\n * This method is called by #setLabelPosition, and can also be called on its own if\n * something causes the label to be mispositioned.\n *\n * @chainable\n */\nOO.ui.TextInputWidget.prototype.updatePosition = function () {\n\tvar after = this.labelPosition === 'after';\n\n\tthis.$element\n\t\t.toggleClass( 'oo-ui-textInputWidget-labelPosition-after', !!this.label && after )\n\t\t.toggleClass( 'oo-ui-textInputWidget-labelPosition-before', !!this.label && !after );\n\n\tthis.valCache = null;\n\tthis.scrollWidth = null;\n\tthis.adjustSize();\n\tthis.positionLabel();\n\n\treturn this;\n};\n\n/**\n * Position the label by setting the correct padding on the input.\n *\n * @private\n * @chainable\n */\nOO.ui.TextInputWidget.prototype.positionLabel = function () {\n\tvar after, rtl, property;\n\n\tif ( this.isWaitingToBeAttached ) {\n\t\t// #onElementAttach will be called soon, which calls this method\n\t\treturn this;\n\t}\n\n\t// Clear old values\n\tthis.$input\n\t\t// Clear old values if present\n\t\t.css( {\n\t\t\t'padding-right': '',\n\t\t\t'padding-left': ''\n\t\t} );\n\n\tif ( this.label ) {\n\t\tthis.$element.append( this.$label );\n\t} else {\n\t\tthis.$label.detach();\n\t\treturn;\n\t}\n\n\tafter = this.labelPosition === 'after';\n\trtl = this.$element.css( 'direction' ) === 'rtl';\n\tproperty = after === rtl ? 'padding-left' : 'padding-right';\n\n\tthis.$input.css( property, this.$label.outerWidth( true ) + ( after ? this.scrollWidth : 0 ) );\n\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.TextInputWidget.prototype.restorePreInfuseState = function ( state ) {\n\tOO.ui.TextInputWidget.parent.prototype.restorePreInfuseState.call( this, state );\n\tif ( state.scrollTop !== undefined ) {\n\t\tthis.$input.scrollTop( state.scrollTop );\n\t}\n};\n","/**\n * @class\n * @extends OO.ui.TextInputWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.SearchInputWidget = function OoUiSearchInputWidget( config ) {\n\tconfig = $.extend( {\n\t\ticon: 'search'\n\t}, config );\n\n\t// Set type to text so that TextInputWidget doesn't\n\t// get stuck in an infinite loop.\n\tconfig.type = 'text';\n\n\t// Parent constructor\n\tOO.ui.SearchInputWidget.parent.call( this, config );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-textInputWidget-type-search' );\n\tthis.updateSearchIndicator();\n\tthis.connect( this, {\n\t\tdisable: 'onDisable'\n\t} );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.SearchInputWidget, OO.ui.TextInputWidget );\n\n/* Methods */\n\n/**\n * @inheritdoc\n * @protected\n */\nOO.ui.SearchInputWidget.prototype.getInputElement = function () {\n\treturn $( '<input>' ).attr( 'type', 'search' );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.SearchInputWidget.prototype.onIndicatorMouseDown = function ( e ) {\n\tif ( e.which === OO.ui.MouseButtons.LEFT ) {\n\t\t// Clear the text field\n\t\tthis.setValue( '' );\n\t\tthis.focus();\n\t\treturn false;\n\t}\n};\n\n/**\n * Update the 'clear' indicator displayed on type: 'search' text\n * fields, hiding it when the field is already empty or when it's not\n * editable.\n */\nOO.ui.SearchInputWidget.prototype.updateSearchIndicator = function () {\n\tif ( this.getValue() === '' || this.isDisabled() || this.isReadOnly() ) {\n\t\tthis.setIndicator( null );\n\t} else {\n\t\tthis.setIndicator( 'clear' );\n\t}\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.SearchInputWidget.prototype.onChange = function () {\n\tOO.ui.SearchInputWidget.parent.prototype.onChange.call( this );\n\tthis.updateSearchIndicator();\n};\n\n/**\n * Handle disable events.\n *\n * @param {boolean} disabled Element is disabled\n * @private\n */\nOO.ui.SearchInputWidget.prototype.onDisable = function () {\n\tthis.updateSearchIndicator();\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.SearchInputWidget.prototype.setReadOnly = function ( state ) {\n\tOO.ui.SearchInputWidget.parent.prototype.setReadOnly.call( this, state );\n\tthis.updateSearchIndicator();\n\treturn this;\n};\n","/**\n * ComboBoxInputWidgets combine a {@link OO.ui.TextInputWidget text input} (where a value\n * can be entered manually) and a {@link OO.ui.MenuSelectWidget menu of options} (from which\n * a value can be chosen instead). Users can choose options from the combo box in one of two ways:\n *\n * - by typing a value in the text input field. If the value exactly matches the value of a menu\n *   option, that option will appear to be selected.\n * - by choosing a value from the menu. The value of the chosen option will then appear in the text\n *   input field.\n *\n * After the user chooses an option, its `data` will be used as a new value for the widget.\n * A `label` also can be specified for each option: if given, it will be shown instead of the\n * `data` in the dropdown menu.\n *\n * This widget can be used inside an HTML form, such as a OO.ui.FormLayout.\n *\n * For more information about menus and options, please see the [OOjs UI documentation on MediaWiki][1].\n *\n *     @example\n *     // Example: A ComboBoxInputWidget.\n *     var comboBox = new OO.ui.ComboBoxInputWidget( {\n *         value: 'Option 1',\n *         options: [\n *             { data: 'Option 1' },\n *             { data: 'Option 2' },\n *             { data: 'Option 3' }\n *         ]\n *     } );\n *     $( 'body' ).append( comboBox.$element );\n *\n *     @example\n *     // Example: A ComboBoxInputWidget with additional option labels.\n *     var comboBox = new OO.ui.ComboBoxInputWidget( {\n *         value: 'Option 1',\n *         options: [\n *             {\n *                 data: 'Option 1',\n *                 label: 'Option One'\n *             },\n *             {\n *                 data: 'Option 2',\n *                 label: 'Option Two'\n *             },\n *             {\n *                 data: 'Option 3',\n *                 label: 'Option Three'\n *             }\n *         ]\n *     } );\n *     $( 'body' ).append( comboBox.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options#Menu_selects_and_options\n *\n * @class\n * @extends OO.ui.TextInputWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {Object[]} [options=[]] Array of menu options in the format `{ data: …, label: … }`\n * @cfg {Object} [menu] Configuration options to pass to the {@link OO.ui.MenuSelectWidget menu select widget}.\n * @cfg {jQuery} [$overlay] Render the menu into a separate layer. This configuration is useful in cases where\n *  the expanded menu is larger than its containing `<div>`. The specified overlay layer is usually on top of the\n *  containing `<div>` and has a larger area. By default, the menu uses relative positioning.\n *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.\n */\nOO.ui.ComboBoxInputWidget = function OoUiComboBoxInputWidget( config ) {\n\t// Configuration initialization\n\tconfig = $.extend( {\n\t\tautocomplete: false\n\t}, config );\n\n\t// ComboBoxInputWidget shouldn't support `multiline`\n\tconfig.multiline = false;\n\n\t// See InputWidget#reusePreInfuseDOM about `config.$input`\n\tif ( config.$input ) {\n\t\tconfig.$input.removeAttr( 'list' );\n\t}\n\n\t// Parent constructor\n\tOO.ui.ComboBoxInputWidget.parent.call( this, config );\n\n\t// Properties\n\tthis.$overlay = config.$overlay || this.$element;\n\tthis.dropdownButton = new OO.ui.ButtonWidget( {\n\t\tclasses: [ 'oo-ui-comboBoxInputWidget-dropdownButton' ],\n\t\tindicator: 'down',\n\t\tdisabled: this.disabled\n\t} );\n\tthis.menu = new OO.ui.MenuSelectWidget( $.extend(\n\t\t{\n\t\t\twidget: this,\n\t\t\tinput: this,\n\t\t\t$floatableContainer: this.$element,\n\t\t\tdisabled: this.isDisabled()\n\t\t},\n\t\tconfig.menu\n\t) );\n\n\t// Events\n\tthis.connect( this, {\n\t\tchange: 'onInputChange',\n\t\tenter: 'onInputEnter'\n\t} );\n\tthis.dropdownButton.connect( this, {\n\t\tclick: 'onDropdownButtonClick'\n\t} );\n\tthis.menu.connect( this, {\n\t\tchoose: 'onMenuChoose',\n\t\tadd: 'onMenuItemsChange',\n\t\tremove: 'onMenuItemsChange'\n\t} );\n\n\t// Initialization\n\tthis.$input.attr( {\n\t\trole: 'combobox',\n\t\t'aria-owns': this.menu.getElementId(),\n\t\t'aria-autocomplete': 'list'\n\t} );\n\t// Do not override options set via config.menu.items\n\tif ( config.options !== undefined ) {\n\t\tthis.setOptions( config.options );\n\t}\n\tthis.$field = $( '<div>' )\n\t\t.addClass( 'oo-ui-comboBoxInputWidget-field' )\n\t\t.append( this.$input, this.dropdownButton.$element );\n\tthis.$element\n\t\t.addClass( 'oo-ui-comboBoxInputWidget' )\n\t\t.append( this.$field );\n\tthis.$overlay.append( this.menu.$element );\n\tthis.onMenuItemsChange();\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ComboBoxInputWidget, OO.ui.TextInputWidget );\n\n/* Methods */\n\n/**\n * Get the combobox's menu.\n *\n * @return {OO.ui.MenuSelectWidget} Menu widget\n */\nOO.ui.ComboBoxInputWidget.prototype.getMenu = function () {\n\treturn this.menu;\n};\n\n/**\n * Get the combobox's text input widget.\n *\n * @return {OO.ui.TextInputWidget} Text input widget\n */\nOO.ui.ComboBoxInputWidget.prototype.getInput = function () {\n\treturn this;\n};\n\n/**\n * Handle input change events.\n *\n * @private\n * @param {string} value New value\n */\nOO.ui.ComboBoxInputWidget.prototype.onInputChange = function ( value ) {\n\tvar match = this.menu.getItemFromData( value );\n\n\tthis.menu.selectItem( match );\n\tif ( this.menu.getHighlightedItem() ) {\n\t\tthis.menu.highlightItem( match );\n\t}\n\n\tif ( !this.isDisabled() ) {\n\t\tthis.menu.toggle( true );\n\t}\n};\n\n/**\n * Handle input enter events.\n *\n * @private\n */\nOO.ui.ComboBoxInputWidget.prototype.onInputEnter = function () {\n\tif ( !this.isDisabled() ) {\n\t\tthis.menu.toggle( false );\n\t}\n};\n\n/**\n * Handle button click events.\n *\n * @private\n */\nOO.ui.ComboBoxInputWidget.prototype.onDropdownButtonClick = function () {\n\tthis.menu.toggle();\n\tthis.focus();\n};\n\n/**\n * Handle menu choose events.\n *\n * @private\n * @param {OO.ui.OptionWidget} item Chosen item\n */\nOO.ui.ComboBoxInputWidget.prototype.onMenuChoose = function ( item ) {\n\tthis.setValue( item.getData() );\n};\n\n/**\n * Handle menu item change events.\n *\n * @private\n */\nOO.ui.ComboBoxInputWidget.prototype.onMenuItemsChange = function () {\n\tvar match = this.menu.getItemFromData( this.getValue() );\n\tthis.menu.selectItem( match );\n\tif ( this.menu.getHighlightedItem() ) {\n\t\tthis.menu.highlightItem( match );\n\t}\n\tthis.$element.toggleClass( 'oo-ui-comboBoxInputWidget-empty', this.menu.isEmpty() );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.ComboBoxInputWidget.prototype.setDisabled = function ( disabled ) {\n\t// Parent method\n\tOO.ui.ComboBoxInputWidget.parent.prototype.setDisabled.call( this, disabled );\n\n\tif ( this.dropdownButton ) {\n\t\tthis.dropdownButton.setDisabled( this.isDisabled() );\n\t}\n\tif ( this.menu ) {\n\t\tthis.menu.setDisabled( this.isDisabled() );\n\t}\n\n\treturn this;\n};\n\n/**\n * Set the options available for this input.\n *\n * @param {Object[]} options Array of menu options in the format `{ data: …, label: … }`\n * @chainable\n */\nOO.ui.ComboBoxInputWidget.prototype.setOptions = function ( options ) {\n\tthis.getMenu()\n\t\t.clearItems()\n\t\t.addItems( options.map( function ( opt ) {\n\t\t\treturn new OO.ui.MenuOptionWidget( {\n\t\t\t\tdata: opt.data,\n\t\t\t\tlabel: opt.label !== undefined ? opt.label : opt.data\n\t\t\t} );\n\t\t} ) );\n\n\treturn this;\n};\n","/**\n * FieldLayouts are used with OO.ui.FieldsetLayout. Each FieldLayout requires a field-widget,\n * which is a widget that is specified by reference before any optional configuration settings.\n *\n * Field layouts can be configured with help text and/or labels. Labels are aligned in one of four ways:\n *\n * - **left**: The label is placed before the field-widget and aligned with the left margin.\n *   A left-alignment is used for forms with many fields.\n * - **right**: The label is placed before the field-widget and aligned to the right margin.\n *   A right-alignment is used for long but familiar forms which users tab through,\n *   verifying the current field with a quick glance at the label.\n * - **top**: The label is placed above the field-widget. A top-alignment is used for brief forms\n *   that users fill out from top to bottom.\n * - **inline**: The label is placed after the field-widget and aligned to the left.\n *   An inline-alignment is best used with checkboxes or radio buttons.\n *\n * Help text is accessed via a help icon that appears in the upper right corner of the rendered field layout.\n * Please see the [OOjs UI documentation on MediaWiki] [1] for examples and more information.\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Layouts/Fields_and_Fieldsets\n *\n * @class\n * @extends OO.ui.Layout\n * @mixins OO.ui.mixin.LabelElement\n * @mixins OO.ui.mixin.TitledElement\n *\n * @constructor\n * @param {OO.ui.Widget} fieldWidget Field widget\n * @param {Object} [config] Configuration options\n * @cfg {string} [align='left'] Alignment of the label: 'left', 'right', 'top' or 'inline'\n * @cfg {Array} [errors] Error messages about the widget, which will be displayed below the widget.\n *  The array may contain strings or OO.ui.HtmlSnippet instances.\n * @cfg {Array} [notices] Notices about the widget, which will be displayed below the widget.\n *  The array may contain strings or OO.ui.HtmlSnippet instances.\n * @cfg {string|OO.ui.HtmlSnippet} [help] Help text. When help text is specified, a \"help\" icon will appear\n *  in the upper-right corner of the rendered field; clicking it will display the text in a popup.\n *  For important messages, you are advised to use `notices`, as they are always shown.\n * @cfg {jQuery} [$overlay] Passed to OO.ui.PopupButtonWidget for help popup, if `help` is given.\n *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.\n *\n * @throws {Error} An error is thrown if no widget is specified\n */\nOO.ui.FieldLayout = function OoUiFieldLayout( fieldWidget, config ) {\n\t// Allow passing positional parameters inside the config object\n\tif ( OO.isPlainObject( fieldWidget ) && config === undefined ) {\n\t\tconfig = fieldWidget;\n\t\tfieldWidget = config.fieldWidget;\n\t}\n\n\t// Make sure we have required constructor arguments\n\tif ( fieldWidget === undefined ) {\n\t\tthrow new Error( 'Widget not found' );\n\t}\n\n\t// Configuration initialization\n\tconfig = $.extend( { align: 'left' }, config );\n\n\t// Parent constructor\n\tOO.ui.FieldLayout.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.LabelElement.call( this, $.extend( {}, config, {\n\t\t$label: $( '<label>' )\n\t} ) );\n\tOO.ui.mixin.TitledElement.call( this, $.extend( {}, config, { $titled: this.$label } ) );\n\n\t// Properties\n\tthis.fieldWidget = fieldWidget;\n\tthis.errors = [];\n\tthis.notices = [];\n\tthis.$field = this.isFieldInline() ? $( '<span>' ) : $( '<div>' );\n\tthis.$messages = $( '<ul>' );\n\tthis.$header = $( '<span>' );\n\tthis.$body = $( '<div>' );\n\tthis.align = null;\n\tif ( config.help ) {\n\t\tthis.popupButtonWidget = new OO.ui.PopupButtonWidget( {\n\t\t\t$overlay: config.$overlay,\n\t\t\tpopup: {\n\t\t\t\tpadded: true\n\t\t\t},\n\t\t\tclasses: [ 'oo-ui-fieldLayout-help' ],\n\t\t\tframed: false,\n\t\t\ticon: 'info'\n\t\t} );\n\t\tif ( config.help instanceof OO.ui.HtmlSnippet ) {\n\t\t\tthis.popupButtonWidget.getPopup().$body.html( config.help.toString() );\n\t\t} else {\n\t\t\tthis.popupButtonWidget.getPopup().$body.text( config.help );\n\t\t}\n\t\tthis.$help = this.popupButtonWidget.$element;\n\t} else {\n\t\tthis.$help = $( [] );\n\t}\n\n\t// Events\n\tthis.fieldWidget.connect( this, { disable: 'onFieldDisable' } );\n\n\t// Initialization\n\tif ( this.fieldWidget.getInputId() ) {\n\t\tthis.$label.attr( 'for', this.fieldWidget.getInputId() );\n\t} else {\n\t\tthis.$label.on( 'click', function () {\n\t\t\tthis.fieldWidget.simulateLabelClick();\n\t\t\treturn false;\n\t\t}.bind( this ) );\n\t}\n\tthis.$element\n\t\t.addClass( 'oo-ui-fieldLayout' )\n\t\t.toggleClass( 'oo-ui-fieldLayout-disabled', this.fieldWidget.isDisabled() )\n\t\t.append( this.$body );\n\tthis.$body.addClass( 'oo-ui-fieldLayout-body' );\n\tthis.$header.addClass( 'oo-ui-fieldLayout-header' );\n\tthis.$messages.addClass( 'oo-ui-fieldLayout-messages' );\n\tthis.$field\n\t\t.addClass( 'oo-ui-fieldLayout-field' )\n\t\t.append( this.fieldWidget.$element );\n\n\tthis.setErrors( config.errors || [] );\n\tthis.setNotices( config.notices || [] );\n\tthis.setAlignment( config.align );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.FieldLayout, OO.ui.Layout );\nOO.mixinClass( OO.ui.FieldLayout, OO.ui.mixin.LabelElement );\nOO.mixinClass( OO.ui.FieldLayout, OO.ui.mixin.TitledElement );\n\n/* Methods */\n\n/**\n * Handle field disable events.\n *\n * @private\n * @param {boolean} value Field is disabled\n */\nOO.ui.FieldLayout.prototype.onFieldDisable = function ( value ) {\n\tthis.$element.toggleClass( 'oo-ui-fieldLayout-disabled', value );\n};\n\n/**\n * Get the widget contained by the field.\n *\n * @return {OO.ui.Widget} Field widget\n */\nOO.ui.FieldLayout.prototype.getField = function () {\n\treturn this.fieldWidget;\n};\n\n/**\n * Return `true` if the given field widget can be used with `'inline'` alignment (see\n * #setAlignment). Return `false` if it can't or if this can't be determined.\n *\n * @return {boolean}\n */\nOO.ui.FieldLayout.prototype.isFieldInline = function () {\n\t// This is very simplistic, but should be good enough.\n\treturn this.getField().$element.prop( 'tagName' ).toLowerCase() === 'span';\n};\n\n/**\n * @protected\n * @param {string} kind 'error' or 'notice'\n * @param {string|OO.ui.HtmlSnippet} text\n * @return {jQuery}\n */\nOO.ui.FieldLayout.prototype.makeMessage = function ( kind, text ) {\n\tvar $listItem, $icon, message;\n\t$listItem = $( '<li>' );\n\tif ( kind === 'error' ) {\n\t\t$icon = new OO.ui.IconWidget( { icon: 'alert', flags: [ 'warning' ] } ).$element;\n\t} else if ( kind === 'notice' ) {\n\t\t$icon = new OO.ui.IconWidget( { icon: 'info' } ).$element;\n\t} else {\n\t\t$icon = '';\n\t}\n\tmessage = new OO.ui.LabelWidget( { label: text } );\n\t$listItem\n\t\t.append( $icon, message.$element )\n\t\t.addClass( 'oo-ui-fieldLayout-messages-' + kind );\n\treturn $listItem;\n};\n\n/**\n * Set the field alignment mode.\n *\n * @private\n * @param {string} value Alignment mode, either 'left', 'right', 'top' or 'inline'\n * @chainable\n */\nOO.ui.FieldLayout.prototype.setAlignment = function ( value ) {\n\tif ( value !== this.align ) {\n\t\t// Default to 'left'\n\t\tif ( [ 'left', 'right', 'top', 'inline' ].indexOf( value ) === -1 ) {\n\t\t\tvalue = 'left';\n\t\t}\n\t\t// Validate\n\t\tif ( value === 'inline' && !this.isFieldInline() ) {\n\t\t\tvalue = 'top';\n\t\t}\n\t\t// Reorder elements\n\t\tif ( value === 'top' ) {\n\t\t\tthis.$header.append( this.$label, this.$help );\n\t\t\tthis.$body.append( this.$header, this.$field );\n\t\t} else if ( value === 'inline' ) {\n\t\t\tthis.$header.append( this.$label, this.$help );\n\t\t\tthis.$body.append( this.$field, this.$header );\n\t\t} else {\n\t\t\tthis.$header.append( this.$label );\n\t\t\tthis.$body.append( this.$header, this.$help, this.$field );\n\t\t}\n\t\t// Set classes. The following classes can be used here:\n\t\t// * oo-ui-fieldLayout-align-left\n\t\t// * oo-ui-fieldLayout-align-right\n\t\t// * oo-ui-fieldLayout-align-top\n\t\t// * oo-ui-fieldLayout-align-inline\n\t\tif ( this.align ) {\n\t\t\tthis.$element.removeClass( 'oo-ui-fieldLayout-align-' + this.align );\n\t\t}\n\t\tthis.$element.addClass( 'oo-ui-fieldLayout-align-' + value );\n\t\tthis.align = value;\n\t}\n\n\treturn this;\n};\n\n/**\n * Set the list of error messages.\n *\n * @param {Array} errors Error messages about the widget, which will be displayed below the widget.\n *  The array may contain strings or OO.ui.HtmlSnippet instances.\n * @chainable\n */\nOO.ui.FieldLayout.prototype.setErrors = function ( errors ) {\n\tthis.errors = errors.slice();\n\tthis.updateMessages();\n\treturn this;\n};\n\n/**\n * Set the list of notice messages.\n *\n * @param {Array} notices Notices about the widget, which will be displayed below the widget.\n *  The array may contain strings or OO.ui.HtmlSnippet instances.\n * @chainable\n */\nOO.ui.FieldLayout.prototype.setNotices = function ( notices ) {\n\tthis.notices = notices.slice();\n\tthis.updateMessages();\n\treturn this;\n};\n\n/**\n * Update the rendering of error and notice messages.\n *\n * @private\n */\nOO.ui.FieldLayout.prototype.updateMessages = function () {\n\tvar i;\n\tthis.$messages.empty();\n\n\tif ( this.errors.length || this.notices.length ) {\n\t\tthis.$body.after( this.$messages );\n\t} else {\n\t\tthis.$messages.remove();\n\t\treturn;\n\t}\n\n\tfor ( i = 0; i < this.notices.length; i++ ) {\n\t\tthis.$messages.append( this.makeMessage( 'notice', this.notices[ i ] ) );\n\t}\n\tfor ( i = 0; i < this.errors.length; i++ ) {\n\t\tthis.$messages.append( this.makeMessage( 'error', this.errors[ i ] ) );\n\t}\n};\n","/**\n * ActionFieldLayouts are used with OO.ui.FieldsetLayout. The layout consists of a field-widget, a button,\n * and an optional label and/or help text. The field-widget (e.g., a {@link OO.ui.TextInputWidget TextInputWidget}),\n * is required and is specified before any optional configuration settings.\n *\n * Labels can be aligned in one of four ways:\n *\n * - **left**: The label is placed before the field-widget and aligned with the left margin.\n *   A left-alignment is used for forms with many fields.\n * - **right**: The label is placed before the field-widget and aligned to the right margin.\n *   A right-alignment is used for long but familiar forms which users tab through,\n *   verifying the current field with a quick glance at the label.\n * - **top**: The label is placed above the field-widget. A top-alignment is used for brief forms\n *   that users fill out from top to bottom.\n * - **inline**: The label is placed after the field-widget and aligned to the left.\n *   An inline-alignment is best used with checkboxes or radio buttons.\n *\n * Help text is accessed via a help icon that appears in the upper right corner of the rendered field layout when help\n * text is specified.\n *\n *     @example\n *     // Example of an ActionFieldLayout\n *     var actionFieldLayout = new OO.ui.ActionFieldLayout(\n *         new OO.ui.TextInputWidget( {\n *             placeholder: 'Field widget'\n *         } ),\n *         new OO.ui.ButtonWidget( {\n *             label: 'Button'\n *         } ),\n *         {\n *             label: 'An ActionFieldLayout. This label is aligned top',\n *             align: 'top',\n *             help: 'This is help text'\n *         }\n *     );\n *\n *     $( 'body' ).append( actionFieldLayout.$element );\n *\n * @class\n * @extends OO.ui.FieldLayout\n *\n * @constructor\n * @param {OO.ui.Widget} fieldWidget Field widget\n * @param {OO.ui.ButtonWidget} buttonWidget Button widget\n * @param {Object} config\n */\nOO.ui.ActionFieldLayout = function OoUiActionFieldLayout( fieldWidget, buttonWidget, config ) {\n\t// Allow passing positional parameters inside the config object\n\tif ( OO.isPlainObject( fieldWidget ) && config === undefined ) {\n\t\tconfig = fieldWidget;\n\t\tfieldWidget = config.fieldWidget;\n\t\tbuttonWidget = config.buttonWidget;\n\t}\n\n\t// Parent constructor\n\tOO.ui.ActionFieldLayout.parent.call( this, fieldWidget, config );\n\n\t// Properties\n\tthis.buttonWidget = buttonWidget;\n\tthis.$button = $( '<span>' );\n\tthis.$input = this.isFieldInline() ? $( '<span>' ) : $( '<div>' );\n\n\t// Initialization\n\tthis.$element\n\t\t.addClass( 'oo-ui-actionFieldLayout' );\n\tthis.$button\n\t\t.addClass( 'oo-ui-actionFieldLayout-button' )\n\t\t.append( this.buttonWidget.$element );\n\tthis.$input\n\t\t.addClass( 'oo-ui-actionFieldLayout-input' )\n\t\t.append( this.fieldWidget.$element );\n\tthis.$field\n\t\t.append( this.$input, this.$button );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ActionFieldLayout, OO.ui.FieldLayout );\n","/**\n * FieldsetLayouts are composed of one or more {@link OO.ui.FieldLayout FieldLayouts},\n * which each contain an individual widget and, optionally, a label. Each Fieldset can be\n * configured with a label as well. For more information and examples,\n * please see the [OOjs UI documentation on MediaWiki][1].\n *\n *     @example\n *     // Example of a fieldset layout\n *     var input1 = new OO.ui.TextInputWidget( {\n *         placeholder: 'A text input field'\n *     } );\n *\n *     var input2 = new OO.ui.TextInputWidget( {\n *         placeholder: 'A text input field'\n *     } );\n *\n *     var fieldset = new OO.ui.FieldsetLayout( {\n *         label: 'Example of a fieldset layout'\n *     } );\n *\n *     fieldset.addItems( [\n *         new OO.ui.FieldLayout( input1, {\n *             label: 'Field One'\n *         } ),\n *         new OO.ui.FieldLayout( input2, {\n *             label: 'Field Two'\n *         } )\n *     ] );\n *     $( 'body' ).append( fieldset.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Layouts/Fields_and_Fieldsets\n *\n * @class\n * @extends OO.ui.Layout\n * @mixins OO.ui.mixin.IconElement\n * @mixins OO.ui.mixin.LabelElement\n * @mixins OO.ui.mixin.GroupElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {OO.ui.FieldLayout[]} [items] An array of fields to add to the fieldset. See OO.ui.FieldLayout for more information about fields.\n * @cfg {string|OO.ui.HtmlSnippet} [help] Help text. When help text is specified, a \"help\" icon will appear\n *  in the upper-right corner of the rendered field; clicking it will display the text in a popup.\n *  For important messages, you are advised to use `notices`, as they are always shown.\n * @cfg {jQuery} [$overlay] Passed to OO.ui.PopupButtonWidget for help popup, if `help` is given.\n *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.\n */\nOO.ui.FieldsetLayout = function OoUiFieldsetLayout( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.FieldsetLayout.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.IconElement.call( this, config );\n\tOO.ui.mixin.LabelElement.call( this, $.extend( {}, config, { $label: $( '<div>' ) } ) );\n\tOO.ui.mixin.GroupElement.call( this, config );\n\n\t// Properties\n\tthis.$header = $( '<div>' );\n\tif ( config.help ) {\n\t\tthis.popupButtonWidget = new OO.ui.PopupButtonWidget( {\n\t\t\t$overlay: config.$overlay,\n\t\t\tpopup: {\n\t\t\t\tpadded: true\n\t\t\t},\n\t\t\tclasses: [ 'oo-ui-fieldsetLayout-help' ],\n\t\t\tframed: false,\n\t\t\ticon: 'info'\n\t\t} );\n\t\tif ( config.help instanceof OO.ui.HtmlSnippet ) {\n\t\t\tthis.popupButtonWidget.getPopup().$body.html( config.help.toString() );\n\t\t} else {\n\t\t\tthis.popupButtonWidget.getPopup().$body.text( config.help );\n\t\t}\n\t\tthis.$help = this.popupButtonWidget.$element;\n\t} else {\n\t\tthis.$help = $( [] );\n\t}\n\n\t// Initialization\n\tthis.$header\n\t\t.addClass( 'oo-ui-fieldsetLayout-header' )\n\t\t.append( this.$icon, this.$label, this.$help );\n\tthis.$group.addClass( 'oo-ui-fieldsetLayout-group' );\n\tthis.$element\n\t\t.addClass( 'oo-ui-fieldsetLayout' )\n\t\t.prepend( this.$header, this.$group );\n\tif ( Array.isArray( config.items ) ) {\n\t\tthis.addItems( config.items );\n\t}\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.FieldsetLayout, OO.ui.Layout );\nOO.mixinClass( OO.ui.FieldsetLayout, OO.ui.mixin.IconElement );\nOO.mixinClass( OO.ui.FieldsetLayout, OO.ui.mixin.LabelElement );\nOO.mixinClass( OO.ui.FieldsetLayout, OO.ui.mixin.GroupElement );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.FieldsetLayout.static.tagName = 'fieldset';\n","/**\n * FormLayouts are used to wrap {@link OO.ui.FieldsetLayout FieldsetLayouts} when you intend to use browser-based\n * form submission for the fields instead of handling them in JavaScript. Form layouts can be configured with an\n * HTML form action, an encoding type, and a method using the #action, #enctype, and #method configs, respectively.\n * See the [OOjs UI documentation on MediaWiki] [1] for more information and examples.\n *\n * Only widgets from the {@link OO.ui.InputWidget InputWidget} family support form submission. It\n * includes standard form elements like {@link OO.ui.CheckboxInputWidget checkboxes}, {@link\n * OO.ui.RadioInputWidget radio buttons} and {@link OO.ui.TextInputWidget text fields}, as well as\n * some fancier controls. Some controls have both regular and InputWidget variants, for example\n * OO.ui.DropdownWidget and OO.ui.DropdownInputWidget – only the latter support form submission and\n * often have simplified APIs to match the capabilities of HTML forms.\n * See the [OOjs UI Inputs documentation on MediaWiki] [2] for more information about InputWidgets.\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Layouts/Forms\n * [2]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Inputs\n *\n *     @example\n *     // Example of a form layout that wraps a fieldset layout\n *     var input1 = new OO.ui.TextInputWidget( {\n *         placeholder: 'Username'\n *     } );\n *     var input2 = new OO.ui.TextInputWidget( {\n *         placeholder: 'Password',\n *         type: 'password'\n *     } );\n *     var submit = new OO.ui.ButtonInputWidget( {\n *         label: 'Submit'\n *     } );\n *\n *     var fieldset = new OO.ui.FieldsetLayout( {\n *         label: 'A form layout'\n *     } );\n *     fieldset.addItems( [\n *         new OO.ui.FieldLayout( input1, {\n *             label: 'Username',\n *             align: 'top'\n *         } ),\n *         new OO.ui.FieldLayout( input2, {\n *             label: 'Password',\n *             align: 'top'\n *         } ),\n *         new OO.ui.FieldLayout( submit )\n *     ] );\n *     var form = new OO.ui.FormLayout( {\n *         items: [ fieldset ],\n *         action: '/api/formhandler',\n *         method: 'get'\n *     } )\n *     $( 'body' ).append( form.$element );\n *\n * @class\n * @extends OO.ui.Layout\n * @mixins OO.ui.mixin.GroupElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {string} [method] HTML form `method` attribute\n * @cfg {string} [action] HTML form `action` attribute\n * @cfg {string} [enctype] HTML form `enctype` attribute\n * @cfg {OO.ui.FieldsetLayout[]} [items] Fieldset layouts to add to the form layout.\n */\nOO.ui.FormLayout = function OoUiFormLayout( config ) {\n\tvar action;\n\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.FormLayout.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.GroupElement.call( this, $.extend( {}, config, { $group: this.$element } ) );\n\n\t// Events\n\tthis.$element.on( 'submit', this.onFormSubmit.bind( this ) );\n\n\t// Make sure the action is safe\n\taction = config.action;\n\tif ( action !== undefined && !OO.ui.isSafeUrl( action ) ) {\n\t\taction = './' + action;\n\t}\n\n\t// Initialization\n\tthis.$element\n\t\t.addClass( 'oo-ui-formLayout' )\n\t\t.attr( {\n\t\t\tmethod: config.method,\n\t\t\taction: action,\n\t\t\tenctype: config.enctype\n\t\t} );\n\tif ( Array.isArray( config.items ) ) {\n\t\tthis.addItems( config.items );\n\t}\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.FormLayout, OO.ui.Layout );\nOO.mixinClass( OO.ui.FormLayout, OO.ui.mixin.GroupElement );\n\n/* Events */\n\n/**\n * A 'submit' event is emitted when the form is submitted.\n *\n * @event submit\n */\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.FormLayout.static.tagName = 'form';\n\n/* Methods */\n\n/**\n * Handle form submit events.\n *\n * @private\n * @param {jQuery.Event} e Submit event\n * @fires submit\n */\nOO.ui.FormLayout.prototype.onFormSubmit = function () {\n\tif ( this.emit( 'submit' ) ) {\n\t\treturn false;\n\t}\n};\n","/**\n * PanelLayouts expand to cover the entire area of their parent. They can be configured with scrolling, padding,\n * and a frame, and are often used together with {@link OO.ui.StackLayout StackLayouts}.\n *\n *     @example\n *     // Example of a panel layout\n *     var panel = new OO.ui.PanelLayout( {\n *         expanded: false,\n *         framed: true,\n *         padded: true,\n *         $content: $( '<p>A panel layout with padding and a frame.</p>' )\n *     } );\n *     $( 'body' ).append( panel.$element );\n *\n * @class\n * @extends OO.ui.Layout\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {boolean} [scrollable=false] Allow vertical scrolling\n * @cfg {boolean} [padded=false] Add padding between the content and the edges of the panel.\n * @cfg {boolean} [expanded=true] Expand the panel to fill the entire parent element.\n * @cfg {boolean} [framed=false] Render the panel with a frame to visually separate it from outside content.\n */\nOO.ui.PanelLayout = function OoUiPanelLayout( config ) {\n\t// Configuration initialization\n\tconfig = $.extend( {\n\t\tscrollable: false,\n\t\tpadded: false,\n\t\texpanded: true,\n\t\tframed: false\n\t}, config );\n\n\t// Parent constructor\n\tOO.ui.PanelLayout.parent.call( this, config );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-panelLayout' );\n\tif ( config.scrollable ) {\n\t\tthis.$element.addClass( 'oo-ui-panelLayout-scrollable' );\n\t}\n\tif ( config.padded ) {\n\t\tthis.$element.addClass( 'oo-ui-panelLayout-padded' );\n\t}\n\tif ( config.expanded ) {\n\t\tthis.$element.addClass( 'oo-ui-panelLayout-expanded' );\n\t}\n\tif ( config.framed ) {\n\t\tthis.$element.addClass( 'oo-ui-panelLayout-framed' );\n\t}\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.PanelLayout, OO.ui.Layout );\n\n/* Methods */\n\n/**\n * Focus the panel layout\n *\n * The default implementation just focuses the first focusable element in the panel\n */\nOO.ui.PanelLayout.prototype.focus = function () {\n\tOO.ui.findFocusable( this.$element ).focus();\n};\n","/**\n * HorizontalLayout arranges its contents in a single line (using `display: inline-block` for its\n * items), with small margins between them. Convenient when you need to put a number of block-level\n * widgets on a single line next to each other.\n *\n * Note that inline elements, such as OO.ui.ButtonWidgets, do not need this wrapper.\n *\n *     @example\n *     // HorizontalLayout with a text input and a label\n *     var layout = new OO.ui.HorizontalLayout( {\n *       items: [\n *         new OO.ui.LabelWidget( { label: 'Label' } ),\n *         new OO.ui.TextInputWidget( { value: 'Text' } )\n *       ]\n *     } );\n *     $( 'body' ).append( layout.$element );\n *\n * @class\n * @extends OO.ui.Layout\n * @mixins OO.ui.mixin.GroupElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {OO.ui.Widget[]|OO.ui.Layout[]} [items] Widgets or other layouts to add to the layout.\n */\nOO.ui.HorizontalLayout = function OoUiHorizontalLayout( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.HorizontalLayout.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.GroupElement.call( this, $.extend( {}, config, { $group: this.$element } ) );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-horizontalLayout' );\n\tif ( Array.isArray( config.items ) ) {\n\t\tthis.addItems( config.items );\n\t}\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.HorizontalLayout, OO.ui.Layout );\nOO.mixinClass( OO.ui.HorizontalLayout, OO.ui.mixin.GroupElement );\n","}( OO ) );\n"]}
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/oojs-ui-mediawiki.js b/resources/lib/oojs-ui/oojs-ui-mediawiki.js
deleted file mode 100644 (file)
index ec6e45d..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/*!
- * OOjs UI v0.21.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2017 OOjs UI Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2017-04-11T22:51:05Z
- */
-( function ( OO ) {
-
-'use strict';
-
-/**
- * @class
- * @extends OO.ui.Theme
- *
- * @constructor
- */
-OO.ui.MediaWikiTheme = function OoUiMediaWikiTheme() {
-       // Parent constructor
-       OO.ui.MediaWikiTheme.parent.call( this );
-};
-
-/* Setup */
-
-OO.inheritClass( OO.ui.MediaWikiTheme, OO.ui.Theme );
-
-/* Methods */
-
-/**
- * @inheritdoc
- */
-OO.ui.MediaWikiTheme.prototype.getElementClasses = function ( element ) {
-       // Parent method
-       var variant, isFramed, isActive,
-               variants = {
-                       warning: false,
-                       invert: false,
-                       progressive: false,
-                       constructive: false,
-                       destructive: false
-               },
-               // Parent method
-               classes = OO.ui.MediaWikiTheme.parent.prototype.getElementClasses.call( this, element );
-
-       if ( element.supports( [ 'hasFlag' ] ) ) {
-               isFramed = element.supports( [ 'isFramed' ] ) && element.isFramed();
-               isActive = element.supports( [ 'isActive' ] ) && element.isActive();
-               if ( isFramed && ( isActive || element.isDisabled() || element.hasFlag( 'primary' ) ) ) {
-                       // Button with a dark background, use white icon
-                       variants.invert = true;
-               } else if ( !isFramed && element.isDisabled() ) {
-                       // Frameless disabled button, always use black icon regardless of flags
-                       variants.invert = false;
-               } else if ( !element.isDisabled() ) {
-                       // Any other kind of button, use the right colored icon if available
-                       variants.progressive = element.hasFlag( 'progressive' );
-                       variants.constructive = element.hasFlag( 'constructive' );
-                       variants.destructive = element.hasFlag( 'destructive' );
-                       variants.warning = element.hasFlag( 'warning' );
-               }
-       }
-
-       for ( variant in variants ) {
-               classes[ variants[ variant ] ? 'on' : 'off' ].push( 'oo-ui-image-' + variant );
-       }
-
-       return classes;
-};
-
-/**
- * @inheritdoc
- */
-OO.ui.MediaWikiTheme.prototype.getDialogTransitionDuration = function () {
-       return 250;
-};
-
-/* Instantiation */
-
-OO.ui.theme = new OO.ui.MediaWikiTheme();
-
-}( OO ) );
index cb6ebc3..f50abdd 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.0
+ * OOjs UI v0.22.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-11T22:51:10Z
+ * Date: 2017-05-31T19:07:44Z
  */
 .oo-ui-popupTool .oo-ui-popupWidget-popup,
 .oo-ui-popupTool .oo-ui-popupWidget-anchor {
@@ -43,8 +43,8 @@
   border-radius: 0.3125em;
   border: 1px solid transparent;
   -webkit-transition: border-color 250ms ease;
-     -moz-transition: border-color 250ms ease;
-          transition: border-color 250ms ease;
+  -moz-transition: border-color 250ms ease;
+  transition: border-color 250ms ease;
 }
 .oo-ui-toolGroup-empty {
   display: none;
   background-color: #f8fbfd;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #f1f7fb), color-stop(100%, #fff));
   background-image: -webkit-linear-gradient(top, #f1f7fb 0, #fff 100%);
-  background-image:    -moz-linear-gradient(top, #f1f7fb 0, #fff 100%);
-  background-image:         linear-gradient(to bottom, #f1f7fb 0, #fff 100%);
+  background-image: -moz-linear-gradient(top, #f1f7fb 0, #fff 100%);
+  background-image: linear-gradient(to bottom, #f1f7fb 0, #fff 100%);
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff1f7fb', endColorstr='#ffffffff' )";
 }
 .oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
 .oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
   margin-right: 1.75em;
 }
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-progressive > .oo-ui-popupToolGroup-handle {
+  border: 1px solid #a6cee1;
+  background-color: #cde7f4;
+  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #eaf4fa), color-stop(100%, #b0d9ee));
+  background-image: -webkit-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%);
+  background-image: -moz-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%);
+  background-image: linear-gradient(to bottom, #eaf4fa 0, #b0d9ee 100%);
+  -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffeaf4fa', endColorstr='#ffb0d9ee' )";
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-progressive > .oo-ui-popupToolGroup-handle:hover,
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-progressive > .oo-ui-popupToolGroup-handle:focus {
+  border-color: #9dc2d4;
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-popupToolGroup-handle:active,
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-progressive.oo-ui-popupToolGroup-active > .oo-ui-popupToolGroup-handle {
+  border: 1px solid #a6cee1;
+  background-color: #cde7f4;
+  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #b0d9ee), color-stop(100%, #eaf4fa));
+  background-image: -webkit-linear-gradient(top, #b0d9ee 0, #eaf4fa 100%);
+  background-image: -moz-linear-gradient(top, #b0d9ee 0, #eaf4fa 100%);
+  background-image: linear-gradient(to bottom, #b0d9ee 0, #eaf4fa 100%);
+  -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffb0d9ee', endColorstr='#ffeaf4fa' )";
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-constructive > .oo-ui-popupToolGroup-handle {
+  border: 1px solid #b8d892;
+  background-color: #daf0bd;
+  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #f0fbe1), color-stop(100%, #c3e59a));
+  background-image: -webkit-linear-gradient(top, #f0fbe1 0, #c3e59a 100%);
+  background-image: -moz-linear-gradient(top, #f0fbe1 0, #c3e59a 100%);
+  background-image: linear-gradient(to bottom, #f0fbe1 0, #c3e59a 100%);
+  -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff0fbe1', endColorstr='#ffc3e59a' )";
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-constructive > .oo-ui-popupToolGroup-handle:hover,
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-constructive > .oo-ui-popupToolGroup-handle:focus {
+  border-color: #adcb89;
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled > .oo-ui-popupToolGroup-handle:active,
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-constructive.oo-ui-popupToolGroup-active > .oo-ui-popupToolGroup-handle {
+  border: 1px solid #b8d892;
+  background-color: #daf0bd;
+  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #c3e59a), color-stop(100%, #f0fbe1));
+  background-image: -webkit-linear-gradient(top, #c3e59a 0, #f0fbe1 100%);
+  background-image: -moz-linear-gradient(top, #c3e59a 0, #f0fbe1 100%);
+  background-image: linear-gradient(to bottom, #c3e59a 0, #f0fbe1 100%);
+  -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffc3e59a', endColorstr='#fff0fbe1' )";
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-destructive > .oo-ui-popupToolGroup-handle {
+  color: #d45353;
+}
+.oo-ui-buttonGroupWidget .oo-ui-popupToolGroup {
+  margin-left: 0;
+}
+.oo-ui-buttonGroupWidget .oo-ui-popupToolGroup > .oo-ui-popupToolGroup-handle {
+  height: 2.4em;
+  border-radius: 0;
+  margin-left: -2px;
+}
+.oo-ui-buttonGroupWidget .oo-ui-popupToolGroup:first-child > .oo-ui-popupToolGroup-handle {
+  border-bottom-left-radius: 0.3em;
+  border-top-left-radius: 0.3em;
+  margin-left: 0;
+}
+.oo-ui-buttonGroupWidget .oo-ui-popupToolGroup:last-child {
+  margin-right: 0.5em;
+}
+.oo-ui-buttonGroupWidget .oo-ui-popupToolGroup:last-child > .oo-ui-popupToolGroup-handle {
+  border-bottom-right-radius: 0.3em;
+  border-top-right-radius: 0.3em;
+}
 .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
   width: 0.9375em;
   height: 0.9375em;
   background-color: #f8fbfd;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #f1f7fb), color-stop(100%, #fff));
   background-image: -webkit-linear-gradient(top, #f1f7fb 0, #fff 100%);
-  background-image:    -moz-linear-gradient(top, #f1f7fb 0, #fff 100%);
-  background-image:         linear-gradient(to bottom, #f1f7fb 0, #fff 100%);
+  background-image: -moz-linear-gradient(top, #f1f7fb 0, #fff 100%);
+  background-image: linear-gradient(to bottom, #f1f7fb 0, #fff 100%);
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff1f7fb', endColorstr='#ffffffff' )";
 }
 .oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
 .oo-ui-listToolGroup .oo-ui-tool {
   display: block;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
 }
 .oo-ui-listToolGroup .oo-ui-toolGroup-tools {
   padding: 0.3125em;
   background-color: #f8fbfd;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #f1f7fb), color-stop(100%, #fff));
   background-image: -webkit-linear-gradient(top, #f1f7fb 0, #fff 100%);
-  background-image:    -moz-linear-gradient(top, #f1f7fb 0, #fff 100%);
-  background-image:         linear-gradient(to bottom, #f1f7fb 0, #fff 100%);
+  background-image: -moz-linear-gradient(top, #f1f7fb 0, #fff 100%);
+  background-image: linear-gradient(to bottom, #f1f7fb 0, #fff 100%);
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff1f7fb', endColorstr='#ffffffff' )";
 }
 .oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
 .oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconElement-icon {
   background-image: url('themes/apex/images/icons/check.png');
   background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url('themes/apex/images/icons/check.svg');
-  background-image:         linear-gradient(transparent, transparent), /* @embed */ url('themes/apex/images/icons/check.svg');
-  background-image:      -o-linear-gradient(transparent, transparent), url('themes/apex/images/icons/check.png');
+  background-image: linear-gradient(transparent, transparent), /* @embed */ url('themes/apex/images/icons/check.svg');
+  background-image: -o-linear-gradient(transparent, transparent), url('themes/apex/images/icons/check.png');
   background-size: contain;
   background-position: center center;
   background-repeat: no-repeat;
 .oo-ui-toolbar-actions {
   -webkit-touch-callout: none;
   -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
 }
 .oo-ui-toolbar-tools {
   display: inline;
 .oo-ui-toolbar-actions .oo-ui-popupWidget {
   -webkit-touch-callout: default;
   -webkit-user-select: all;
-     -moz-user-select: all;
-      -ms-user-select: all;
-          user-select: all;
+  -moz-user-select: all;
+  -ms-user-select: all;
+  user-select: all;
 }
 .oo-ui-toolbar-bar {
   background-color: #f8fbfd;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #fff), color-stop(100%, #F1F7FB));
   background-image: -webkit-linear-gradient(top, #fff 0, #F1F7FB 100%);
-  background-image:    -moz-linear-gradient(top, #fff 0, #F1F7FB 100%);
-  background-image:         linear-gradient(to bottom, #fff 0, #F1F7FB 100%);
+  background-image: -moz-linear-gradient(top, #fff 0, #F1F7FB 100%);
+  background-image: linear-gradient(to bottom, #fff 0, #F1F7FB 100%);
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffffff', endColorstr='#fff1f7fb' )";
 }
 .oo-ui-toolbar-position-top > .oo-ui-toolbar-bar {
diff --git a/resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css
deleted file mode 100644 (file)
index 85095d3..0000000
+++ /dev/null
@@ -1,451 +0,0 @@
-/*!
- * OOjs UI v0.21.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2017 OOjs UI Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2017-04-11T22:51:10Z
- */
-.oo-ui-tool.oo-ui-widget-enabled {
-  -webkit-transition: background-color 100ms;
-     -moz-transition: background-color 100ms;
-          transition: background-color 100ms;
-}
-.oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title {
-  -webkit-transition: color 100ms;
-     -moz-transition: color 100ms;
-          transition: color 100ms;
-}
-.oo-ui-popupTool .oo-ui-popupWidget-popup,
-.oo-ui-popupTool .oo-ui-popupWidget-anchor {
-  z-index: 4;
-}
-.oo-ui-toolGroupTool > .oo-ui-toolGroup {
-  border-right: 0;
-}
-.oo-ui-toolGroupTool > .oo-ui-popupToolGroup > .oo-ui-popupToolGroup-handle {
-  height: 2.5em;
-  padding: 0.3125em;
-}
-.oo-ui-toolGroupTool > .oo-ui-popupToolGroup > .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  height: 2.5em;
-  width: 1.875em;
-}
-.oo-ui-toolGroup {
-  display: inline-block;
-  vertical-align: middle;
-  border-right: 1px solid #c8ccd1;
-}
-.oo-ui-toolGroup-empty {
-  display: none;
-}
-.oo-ui-toolGroup .oo-ui-tool-link {
-  text-decoration: none;
-  cursor: pointer;
-}
-.oo-ui-toolGroup.oo-ui-widget-disabled .oo-ui-tool-link,
-.oo-ui-toolGroup .oo-ui-widget-disabled > .oo-ui-tool-link {
-  outline: 0;
-  cursor: default;
-}
-.oo-ui-toolbar-actions .oo-ui-toolGroup {
-  border-right: 0;
-  border-left: 1px solid #c8ccd1;
-}
-.oo-ui-toolbar-narrow .oo-ui-toolGroup + .oo-ui-toolGroup {
-  margin-left: 0;
-}
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool {
-  display: inline-block;
-  position: relative;
-  vertical-align: top;
-}
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link {
-  display: block;
-}
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-accel {
-  display: none;
-}
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-iconElement > .oo-ui-tool-link .oo-ui-iconElement-icon {
-  display: inline-block;
-  vertical-align: top;
-}
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-iconElement > .oo-ui-tool-link .oo-ui-tool-title {
-  display: none;
-}
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-iconElement.oo-ui-tool-with-label > .oo-ui-tool-link .oo-ui-tool-title {
-  display: inline;
-}
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link {
-  height: 1.875em;
-  padding: 0.625em;
-}
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-iconElement-icon {
-  height: 1.875em;
-  width: 1.875em;
-}
-.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-title {
-  line-height: 2.1;
-  padding: 0 0.4em;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled:hover {
-  background-color: #eaecf0;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled > .oo-ui-tool-link .oo-ui-tool-title {
-  color: #222;
-  -webkit-transition: color 100ms;
-     -moz-transition: color 100ms;
-          transition: color 100ms;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled.oo-ui-tool-active {
-  background-color: #eaf3ff;
-  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled.oo-ui-tool-active:hover {
-  background-color: rgba(41, 98, 204, 0.1);
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled.oo-ui-tool-active > .oo-ui-tool-link .oo-ui-tool-title {
-  color: #36c;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link .oo-ui-tool-title,
-.oo-ui-barToolGroup.oo-ui-widget-disabled .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-title {
-  color: #72777d;
-}
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link .oo-ui-iconElement-icon,
-.oo-ui-barToolGroup.oo-ui-widget-disabled .oo-ui-tool > .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.3;
-}
-.oo-ui-popupToolGroup {
-  position: relative;
-  height: 3.125em;
-  min-width: 2em;
-}
-.oo-ui-popupToolGroup-handle {
-  display: block;
-  cursor: pointer;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  position: absolute;
-}
-.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
-  outline: 0;
-  cursor: default;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  display: none;
-  position: absolute;
-  z-index: 4;
-}
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
-  display: block;
-}
-.oo-ui-popupToolGroup-left > .oo-ui-toolGroup-tools {
-  left: 0;
-}
-.oo-ui-popupToolGroup-right > .oo-ui-toolGroup-tools {
-  right: 0;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link {
-  display: table;
-  width: 100%;
-  vertical-align: middle;
-  white-space: nowrap;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon,
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel,
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: table-cell;
-  vertical-align: middle;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel {
-  text-align: right;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel:not( :empty ) {
-  padding-left: 3em;
-}
-.oo-ui-toolbar-narrow .oo-ui-popupToolGroup {
-  min-width: 1.875em;
-}
-.oo-ui-popupToolGroup.oo-ui-iconElement {
-  min-width: 3.125em;
-}
-.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-iconElement {
-  min-width: 2.5em;
-}
-.oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
-  min-width: 4.375em;
-}
-.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
-  min-width: 3.75em;
-}
-.oo-ui-popupToolGroup.oo-ui-labelElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  line-height: 2.6;
-  margin: 0 1em;
-}
-.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-labelElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin: 0 0.5em;
-}
-.oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin-left: 3em;
-}
-.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin-left: 2.5em;
-}
-.oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin-right: 2em;
-}
-.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-  margin-right: 1.75em;
-}
-.oo-ui-popupToolGroup-header {
-  line-height: 2.6;
-  margin: 0 0.6em;
-  font-weight: bold;
-}
-.oo-ui-popupToolGroup-handle {
-  padding: 0.3125em;
-  height: 2.5em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
-  top: 0;
-  right: 0;
-  width: 0.9375em;
-  height: 100%;
-  margin: 0 0.5em;
-  opacity: 0.87;
-}
-.oo-ui-toolbar-narrow .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
-  right: -0.3125em;
-}
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  width: 1.875em;
-  height: 2.6em;
-  margin: 0.25em;
-  top: 0;
-  left: 0.3125em;
-  opacity: 0.7;
-}
-.oo-ui-toolbar-narrow .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-  left: 0;
-}
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  margin: 0 -1px;
-  border: 1px solid #c8ccd1;
-  background-color: #fff;
-  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25);
-  min-width: 16em;
-}
-.oo-ui-toolbar-position-top .oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  top: 3.125em;
-}
-.oo-ui-toolbar-position-bottom .oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  bottom: 3.125em;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link {
-  padding: 0.4em 0.625em;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  height: 2.5em;
-  width: 1.875em;
-  min-width: 1.875em;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  padding-left: 0.5em;
-  color: #222;
-}
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel {
-  color: #72777d;
-}
-.oo-ui-popupToolGroup.oo-ui-widget-enabled {
-  -webkit-transition: background-color 100ms, box-shadow 100ms;
-     -moz-transition: background-color 100ms, box-shadow 100ms;
-          transition: background-color 100ms, box-shadow 100ms;
-}
-.oo-ui-popupToolGroup.oo-ui-widget-enabled.oo-ui-popupToolGroup-active {
-  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
-  background-color: #eaecf0;
-}
-.oo-ui-popupToolGroup.oo-ui-widget-enabled.oo-ui-popupToolGroup-active .oo-ui-tool-active.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #36c;
-}
-.oo-ui-popupToolGroup.oo-ui-widget-enabled > .oo-ui-popupToolGroup-handle {
-  -webkit-transition: background-color 100ms, box-shadow 100ms;
-     -moz-transition: background-color 100ms, box-shadow 100ms;
-          transition: background-color 100ms, box-shadow 100ms;
-}
-.oo-ui-popupToolGroup.oo-ui-widget-enabled > .oo-ui-popupToolGroup-handle:hover {
-  background-color: #eaecf0;
-}
-.oo-ui-popupToolGroup.oo-ui-widget-enabled > .oo-ui-popupToolGroup-handle:active {
-  background-color: #eaf3ff;
-}
-.oo-ui-listToolGroup .oo-ui-tool {
-  display: block;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
-  background-color: #eaecf0;
-}
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconElement-icon {
-  opacity: 0.9;
-}
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled {
-  background-color: #eaf3ff;
-}
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled:first-child {
-  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
-}
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled:hover {
-  background-color: rgba(41, 98, 204, 0.1);
-}
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #36c;
-}
-.oo-ui-listToolGroup.oo-ui-widget-disabled,
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-title {
-  color: #72777d;
-}
-.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator,
-.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon,
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-iconElement-icon {
-  opacity: 0.3;
-}
-.oo-ui-menuToolGroup .oo-ui-tool {
-  display: block;
-}
-.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-  min-width: 10em;
-}
-.oo-ui-toolbar-narrow .oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-  min-width: 8.125em;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-image: none;
-}
-.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconElement-icon {
-  background-image: url('themes/mediawiki/images/icons/check-progressive.png');
-  background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url('themes/mediawiki/images/icons/check-progressive.svg');
-  background-image:         linear-gradient(transparent, transparent), /* @embed */ url('themes/mediawiki/images/icons/check-progressive.svg');
-  background-image:      -o-linear-gradient(transparent, transparent), url('themes/mediawiki/images/icons/check-progressive.png');
-  background-size: contain;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
-  background-color: rgba(41, 98, 204, 0.1);
-}
-.oo-ui-menuToolGroup .oo-ui-tool-name-menuTool.oo-ui-tool-active {
-  background-color: #eaf3ff;
-}
-.oo-ui-menuToolGroup.oo-ui-widget-disabled,
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-title {
-  color: #72777d;
-}
-.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator,
-.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon,
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-iconElement-icon {
-  opacity: 0.3;
-}
-.oo-ui-toolbar {
-  clear: both;
-}
-.oo-ui-toolbar-bar {
-  line-height: 1;
-  position: relative;
-}
-.oo-ui-toolbar-tools,
-.oo-ui-toolbar-actions {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.oo-ui-toolbar-tools {
-  display: inline;
-  white-space: nowrap;
-}
-.oo-ui-toolbar-narrow .oo-ui-toolbar-tools {
-  white-space: normal;
-}
-.oo-ui-toolbar-tools .oo-ui-tool {
-  white-space: normal;
-}
-.oo-ui-toolbar-actions {
-  float: right;
-}
-.oo-ui-toolbar-actions .oo-ui-toolbar {
-  display: inline-block;
-}
-.oo-ui-toolbar-actions .oo-ui-popupWidget {
-  -webkit-touch-callout: default;
-  -webkit-user-select: all;
-     -moz-user-select: all;
-      -ms-user-select: all;
-          user-select: all;
-}
-.oo-ui-toolbar-bar {
-  background-color: #fff;
-  color: #222;
-}
-.oo-ui-toolbar-position-top > .oo-ui-toolbar-bar {
-  border-bottom: 1px solid #c8ccd1;
-  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
-}
-.oo-ui-toolbar-position-bottom > .oo-ui-toolbar-bar {
-  border-top: 1px solid #c8ccd1;
-  box-shadow: 0 -1px 1px 0 rgba(0, 0, 0, 0.1);
-}
-.oo-ui-toolbar-bar .oo-ui-toolbar-bar {
-  border: 0;
-  background-color: transparent;
-  box-shadow: none;
-}
-.oo-ui-toolbar-narrow .oo-ui-toolbar-bar:after {
-  content: '';
-  display: block;
-  position: absolute;
-  top: 3.125em;
-  left: 0;
-  width: 100%;
-  height: 0;
-  border-bottom: 1px solid #c8ccd1;
-}
-.oo-ui-toolbar-actions > .oo-ui-buttonElement.oo-ui-labelElement,
-.oo-ui-toolbar-actions > .oo-ui-buttonElement.oo-ui-indicatorElement,
-.oo-ui-toolbar-actions > .oo-ui-buttonGroupWidget > .oo-ui-buttonElement.oo-ui-labelElement,
-.oo-ui-toolbar-actions > .oo-ui-buttonGroupWidget > .oo-ui-buttonElement.oo-ui-indicatorElement {
-  margin: 0;
-}
-.oo-ui-toolbar-actions > .oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button,
-.oo-ui-toolbar-actions > .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button,
-.oo-ui-toolbar-actions > .oo-ui-buttonGroupWidget > .oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button,
-.oo-ui-toolbar-actions > .oo-ui-buttonGroupWidget > .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button {
-  border: 0;
-  border-radius: 0;
-  padding: 0 0.3125em;
-}
-.oo-ui-toolbar-actions > .oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
-.oo-ui-toolbar-actions > .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
-.oo-ui-toolbar-actions > .oo-ui-buttonGroupWidget > .oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
-.oo-ui-toolbar-actions > .oo-ui-buttonGroupWidget > .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  margin: 0 1em;
-  line-height: 3.125em;
-}
-.oo-ui-toolbar-actions > .oo-ui-buttonGroupWidget > .oo-ui-buttonElement.oo-ui-indicatorElement:not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-  margin: 0;
-}
-.oo-ui-toolbar-actions > .oo-ui-buttonGroupWidget > .oo-ui-buttonElement.oo-ui-indicatorElement:not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-  margin: 0 0.3125em;
-}
-.oo-ui-toolbar-actions > .oo-ui-toolbar:not( :last-child ) {
-  border-right: 1px solid #c8ccd1;
-}
diff --git a/resources/lib/oojs-ui/oojs-ui-toolbars-wikimediaui.css b/resources/lib/oojs-ui/oojs-ui-toolbars-wikimediaui.css
new file mode 100644 (file)
index 0000000..007e074
--- /dev/null
@@ -0,0 +1,529 @@
+/*!
+ * OOjs UI v0.22.1
+ * https://www.mediawiki.org/wiki/OOjs_UI
+ *
+ * Copyright 2011–2017 OOjs UI Team and other contributors.
+ * Released under the MIT license
+ * http://oojs.mit-license.org
+ *
+ * Date: 2017-05-31T19:07:44Z
+ */
+.oo-ui-tool.oo-ui-widget-enabled {
+  -webkit-transition: background-color 100ms;
+  -moz-transition: background-color 100ms;
+  transition: background-color 100ms;
+}
+.oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title {
+  -webkit-transition: color 100ms;
+  -moz-transition: color 100ms;
+  transition: color 100ms;
+}
+.oo-ui-popupTool .oo-ui-popupWidget-popup,
+.oo-ui-popupTool .oo-ui-popupWidget-anchor {
+  z-index: 4;
+}
+.oo-ui-toolGroupTool > .oo-ui-toolGroup {
+  border-right: 0;
+}
+.oo-ui-toolGroupTool > .oo-ui-popupToolGroup > .oo-ui-popupToolGroup-handle {
+  height: 2.5em;
+  padding: 0.3125em;
+}
+.oo-ui-toolGroupTool > .oo-ui-popupToolGroup > .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
+  height: 2.5em;
+  width: 1.875em;
+}
+.oo-ui-toolGroup {
+  display: inline-block;
+  vertical-align: middle;
+  border-right: 1px solid #c8ccd1;
+}
+.oo-ui-toolGroup-empty {
+  display: none;
+}
+.oo-ui-toolGroup .oo-ui-tool-link {
+  text-decoration: none;
+  cursor: pointer;
+}
+.oo-ui-toolGroup.oo-ui-widget-disabled .oo-ui-tool-link,
+.oo-ui-toolGroup .oo-ui-widget-disabled > .oo-ui-tool-link {
+  outline: 0;
+  cursor: default;
+}
+.oo-ui-toolbar-actions .oo-ui-toolGroup {
+  border-right: 0;
+  border-left: 1px solid #c8ccd1;
+}
+.oo-ui-toolbar-narrow .oo-ui-toolGroup + .oo-ui-toolGroup {
+  margin-left: 0;
+}
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool {
+  display: inline-block;
+  position: relative;
+  vertical-align: top;
+}
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link {
+  display: block;
+}
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-accel {
+  display: none;
+}
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-iconElement > .oo-ui-tool-link .oo-ui-iconElement-icon {
+  display: inline-block;
+  vertical-align: top;
+}
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-iconElement > .oo-ui-tool-link .oo-ui-tool-title {
+  display: none;
+}
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-iconElement.oo-ui-tool-with-label > .oo-ui-tool-link .oo-ui-tool-title {
+  display: inline;
+}
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link {
+  height: 1.875em;
+  padding: 0.625em;
+}
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-iconElement-icon {
+  height: 1.875em;
+  width: 1.875em;
+}
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-title {
+  line-height: 2.1;
+  padding: 0 0.4em;
+}
+.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled:hover {
+  background-color: #eaecf0;
+}
+.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled > .oo-ui-tool-link .oo-ui-tool-title {
+  color: #222;
+  -webkit-transition: color 100ms;
+  -moz-transition: color 100ms;
+  transition: color 100ms;
+}
+.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled.oo-ui-tool-active {
+  background-color: #eaf3ff;
+  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
+}
+.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled.oo-ui-tool-active:hover {
+  background-color: rgba(41, 98, 204, 0.1);
+}
+.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled.oo-ui-tool-active > .oo-ui-tool-link .oo-ui-tool-title {
+  color: #36c;
+}
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link .oo-ui-tool-title,
+.oo-ui-barToolGroup.oo-ui-widget-disabled .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-title {
+  color: #72777d;
+}
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link .oo-ui-iconElement-icon,
+.oo-ui-barToolGroup.oo-ui-widget-disabled .oo-ui-tool > .oo-ui-tool-link .oo-ui-iconElement-icon {
+  opacity: 0.3;
+}
+.oo-ui-popupToolGroup {
+  position: relative;
+  height: 3.125em;
+  min-width: 2em;
+}
+.oo-ui-popupToolGroup-handle {
+  display: block;
+  cursor: pointer;
+}
+.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
+.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
+  position: absolute;
+}
+.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
+  outline: 0;
+  cursor: default;
+}
+.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
+  display: none;
+  position: absolute;
+  z-index: 4;
+}
+.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
+  display: block;
+}
+.oo-ui-popupToolGroup-left > .oo-ui-toolGroup-tools {
+  left: 0;
+}
+.oo-ui-popupToolGroup-right > .oo-ui-toolGroup-tools {
+  right: 0;
+}
+.oo-ui-popupToolGroup .oo-ui-tool-link {
+  display: table;
+  width: 100%;
+  vertical-align: middle;
+  white-space: nowrap;
+}
+.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon,
+.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel,
+.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
+  display: table-cell;
+  vertical-align: middle;
+}
+.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel {
+  text-align: right;
+}
+.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel:not( :empty ) {
+  padding-left: 3em;
+}
+.oo-ui-toolbar-narrow .oo-ui-popupToolGroup {
+  min-width: 1.875em;
+}
+.oo-ui-popupToolGroup.oo-ui-iconElement {
+  min-width: 3.125em;
+}
+.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-iconElement {
+  min-width: 2.5em;
+}
+.oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
+  min-width: 4.375em;
+}
+.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
+  min-width: 3.75em;
+}
+.oo-ui-popupToolGroup.oo-ui-labelElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
+  line-height: 2.6;
+  margin: 0 1em;
+}
+.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-labelElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
+  margin: 0 0.5em;
+}
+.oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
+  margin-left: 3em;
+}
+.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
+  margin-left: 2.5em;
+}
+.oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
+  margin-right: 2em;
+}
+.oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
+  margin-right: 1.75em;
+}
+.oo-ui-popupToolGroup.oo-ui-labelElement:not( .oo-ui-indicatorElement ) .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
+  margin: 0 0.5em;
+}
+.oo-ui-popupToolGroup-header {
+  line-height: 2.6;
+  margin: 0 0.6em;
+  font-weight: bold;
+}
+.oo-ui-popupToolGroup-handle {
+  padding: 0.3125em;
+  height: 2.5em;
+}
+.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
+  top: 0;
+  right: 0;
+  width: 0.9375em;
+  height: 100%;
+  margin: 0 0.5em;
+  opacity: 0.87;
+}
+.oo-ui-toolbar-narrow .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
+  right: -0.3125em;
+}
+.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
+  width: 1.875em;
+  height: 2.6em;
+  margin: 0.25em;
+  top: 0;
+  left: 0.3125em;
+  opacity: 0.7;
+}
+.oo-ui-toolbar-narrow .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
+  left: 0;
+}
+.oo-ui-popupToolGroup:not( .oo-ui-labelElement ):not( .oo-ui-iconElement ) .oo-ui-indicatorElement-indicator {
+  opacity: 1;
+}
+.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
+  margin: 0 -1px;
+  border: 1px solid #c8ccd1;
+  background-color: #fff;
+  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25);
+  min-width: 16em;
+}
+.oo-ui-toolbar-position-top .oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
+  top: 3.125em;
+}
+.oo-ui-toolbar-position-bottom .oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
+  bottom: 3.125em;
+}
+.oo-ui-popupToolGroup .oo-ui-tool-link {
+  padding: 0.4em 0.625em;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
+  height: 2.5em;
+  width: 1.875em;
+  min-width: 1.875em;
+}
+.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
+  padding-left: 0.5em;
+  color: #222;
+}
+.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel {
+  color: #72777d;
+}
+.oo-ui-popupToolGroup.oo-ui-widget-enabled {
+  -webkit-transition: background-color 100ms, box-shadow 100ms;
+  -moz-transition: background-color 100ms, box-shadow 100ms;
+  transition: background-color 100ms, box-shadow 100ms;
+}
+.oo-ui-popupToolGroup.oo-ui-widget-enabled.oo-ui-popupToolGroup-active {
+  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
+  background-color: #eaecf0;
+}
+.oo-ui-popupToolGroup.oo-ui-widget-enabled.oo-ui-popupToolGroup-active .oo-ui-tool-active.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title {
+  color: #36c;
+}
+.oo-ui-popupToolGroup.oo-ui-widget-enabled > .oo-ui-popupToolGroup-handle {
+  -webkit-transition: background-color 100ms, box-shadow 100ms;
+  -moz-transition: background-color 100ms, box-shadow 100ms;
+  transition: background-color 100ms, box-shadow 100ms;
+}
+.oo-ui-popupToolGroup.oo-ui-widget-enabled > .oo-ui-popupToolGroup-handle:hover {
+  background-color: #eaecf0;
+}
+.oo-ui-popupToolGroup.oo-ui-widget-enabled > .oo-ui-popupToolGroup-handle:active {
+  background-color: #eaf3ff;
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-progressive > .oo-ui-popupToolGroup-handle {
+  color: #fff;
+  background-color: #36c;
+  border-color: #36c;
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-progressive > .oo-ui-popupToolGroup-handle:hover {
+  background-color: #447ff5;
+  border-color: #447ff5;
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-progressive > .oo-ui-popupToolGroup-handle:active,
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-progressive > .oo-ui-popupToolGroup-handle:active:focus,
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-popupToolGroup-handle,
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-popupToolGroup-handle,
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-progressive.oo-ui-popupToolGroup-active > .oo-ui-popupToolGroup-handle {
+  color: #fff;
+  background-color: #2a4b8d;
+  border-color: #2a4b8d;
+  box-shadow: none;
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-progressive > .oo-ui-popupToolGroup-handle:focus {
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;
+  outline: 0;
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-constructive > .oo-ui-popupToolGroup-handle {
+  color: #fff;
+  background-color: #36c;
+  border-color: #36c;
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-constructive > .oo-ui-popupToolGroup-handle:hover {
+  background-color: #447ff5;
+  border-color: #447ff5;
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-constructive > .oo-ui-popupToolGroup-handle:active,
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-constructive > .oo-ui-popupToolGroup-handle:active:focus,
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-popupToolGroup-handle,
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-popupToolGroup-handle,
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-constructive.oo-ui-popupToolGroup-active > .oo-ui-popupToolGroup-handle {
+  color: #fff;
+  background-color: #2a4b8d;
+  border-color: #2a4b8d;
+  box-shadow: none;
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-constructive > .oo-ui-popupToolGroup-handle:focus {
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;
+  outline: 0;
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-destructive > .oo-ui-popupToolGroup-handle {
+  color: #fff;
+  background-color: #d33;
+  border-color: #d33;
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-destructive > .oo-ui-popupToolGroup-handle:hover {
+  background-color: #ff4242;
+  border-color: #ff4242;
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-destructive > .oo-ui-popupToolGroup-handle:active,
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-destructive > .oo-ui-popupToolGroup-handle:active:focus,
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-pressed > .oo-ui-popupToolGroup-handle,
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-active > .oo-ui-popupToolGroup-handle,
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-destructive.oo-ui-popupToolGroup-active > .oo-ui-popupToolGroup-handle {
+  color: #fff;
+  background-color: #b32424;
+  border-color: #b32424;
+  box-shadow: none;
+}
+.oo-ui-popupToolGroup.oo-ui-flaggedElement-destructive > .oo-ui-popupToolGroup-handle:focus {
+  border-color: #d33;
+  box-shadow: inset 0 0 0 1px #d33, inset 0 0 0 2px #fff;
+  outline: 0;
+}
+.oo-ui-listToolGroup .oo-ui-tool {
+  display: block;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
+  background-color: #eaecf0;
+}
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconElement-icon {
+  opacity: 0.9;
+}
+.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled {
+  background-color: #eaf3ff;
+}
+.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled:first-child {
+  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
+}
+.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled:hover {
+  background-color: rgba(41, 98, 204, 0.1);
+}
+.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title {
+  color: #36c;
+}
+.oo-ui-listToolGroup.oo-ui-widget-disabled,
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-title {
+  color: #72777d;
+}
+.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator,
+.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon,
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-iconElement-icon {
+  opacity: 0.3;
+}
+.oo-ui-menuToolGroup .oo-ui-tool {
+  display: block;
+}
+.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
+  min-width: 10em;
+}
+.oo-ui-toolbar-narrow .oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
+  min-width: 8.125em;
+}
+.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
+  background-image: none;
+}
+.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconElement-icon {
+  background-image: url('themes/wikimediaui/images/icons/check-progressive.png');
+  background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url('themes/wikimediaui/images/icons/check-progressive.svg');
+  background-image: linear-gradient(transparent, transparent), /* @embed */ url('themes/wikimediaui/images/icons/check-progressive.svg');
+  background-image: -o-linear-gradient(transparent, transparent), url('themes/wikimediaui/images/icons/check-progressive.png');
+  background-size: contain;
+  background-position: center center;
+  background-repeat: no-repeat;
+}
+.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
+  background-color: rgba(41, 98, 204, 0.1);
+}
+.oo-ui-menuToolGroup .oo-ui-tool-name-menuTool.oo-ui-tool-active {
+  background-color: #eaf3ff;
+}
+.oo-ui-menuToolGroup.oo-ui-widget-disabled,
+.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-title {
+  color: #72777d;
+}
+.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator,
+.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon,
+.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-iconElement-icon {
+  opacity: 0.3;
+}
+.oo-ui-toolbar {
+  clear: both;
+}
+.oo-ui-toolbar-bar {
+  line-height: 1;
+  position: relative;
+}
+.oo-ui-toolbar-tools,
+.oo-ui-toolbar-actions {
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+.oo-ui-toolbar-tools {
+  display: inline;
+  white-space: nowrap;
+}
+.oo-ui-toolbar-narrow .oo-ui-toolbar-tools {
+  white-space: normal;
+}
+.oo-ui-toolbar-tools .oo-ui-tool {
+  white-space: normal;
+}
+.oo-ui-toolbar-actions {
+  float: right;
+}
+.oo-ui-toolbar-actions .oo-ui-toolbar {
+  display: inline-block;
+}
+.oo-ui-toolbar-actions .oo-ui-popupWidget {
+  -webkit-touch-callout: default;
+  -webkit-user-select: all;
+  -moz-user-select: all;
+  -ms-user-select: all;
+  user-select: all;
+}
+.oo-ui-toolbar-bar {
+  background-color: #fff;
+  color: #222;
+}
+.oo-ui-toolbar-position-top > .oo-ui-toolbar-bar {
+  border-bottom: 1px solid #c8ccd1;
+  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
+}
+.oo-ui-toolbar-position-bottom > .oo-ui-toolbar-bar {
+  border-top: 1px solid #c8ccd1;
+  box-shadow: 0 -1px 1px 0 rgba(0, 0, 0, 0.1);
+}
+.oo-ui-toolbar-bar .oo-ui-toolbar-bar {
+  border: 0;
+  background-color: transparent;
+  box-shadow: none;
+}
+.oo-ui-toolbar-narrow .oo-ui-toolbar-bar:after {
+  content: '';
+  display: block;
+  position: absolute;
+  top: 3.125em;
+  left: 0;
+  width: 100%;
+  height: 0;
+  border-bottom: 1px solid #c8ccd1;
+}
+.oo-ui-toolbar-actions > .oo-ui-buttonElement.oo-ui-labelElement,
+.oo-ui-toolbar-actions > .oo-ui-buttonElement.oo-ui-indicatorElement,
+.oo-ui-toolbar-actions > .oo-ui-buttonGroupWidget > .oo-ui-buttonElement.oo-ui-labelElement,
+.oo-ui-toolbar-actions > .oo-ui-buttonGroupWidget > .oo-ui-buttonElement.oo-ui-indicatorElement {
+  margin: 0;
+}
+.oo-ui-toolbar-actions > .oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button,
+.oo-ui-toolbar-actions > .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button,
+.oo-ui-toolbar-actions > .oo-ui-buttonGroupWidget > .oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button,
+.oo-ui-toolbar-actions > .oo-ui-buttonGroupWidget > .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button {
+  border: 0;
+  border-radius: 0;
+  padding: 0 0.3125em;
+}
+.oo-ui-toolbar-actions > .oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
+.oo-ui-toolbar-actions > .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
+.oo-ui-toolbar-actions > .oo-ui-buttonGroupWidget > .oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
+.oo-ui-toolbar-actions > .oo-ui-buttonGroupWidget > .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
+  margin: 0 1em;
+  line-height: 3.125em;
+}
+.oo-ui-toolbar-actions > .oo-ui-buttonGroupWidget > .oo-ui-buttonElement.oo-ui-indicatorElement:not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
+  margin: 0;
+}
+.oo-ui-toolbar-actions > .oo-ui-buttonGroupWidget > .oo-ui-buttonElement.oo-ui-indicatorElement:not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
+  margin: 0 0.3125em;
+}
+.oo-ui-toolbar-actions > .oo-ui-toolbar:not( :last-child ) {
+  border-right: 1px solid #c8ccd1;
+}
index 665e9dc..a0751ea 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.0
+ * OOjs UI v0.22.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-11T22:51:05Z
+ * Date: 2017-05-31T19:07:36Z
  */
 ( function ( OO ) {
 
@@ -629,10 +629,8 @@ OO.ui.Tool = function OoUiTool( toolGroup, config ) {
                .attr( 'role', 'button' );
        this.$element
                .data( 'oo-ui-tool', this )
-               .addClass(
-                       'oo-ui-tool ' + 'oo-ui-tool-name-' +
-                       this.constructor.static.name.replace( /^([^\/]+)\/([^\/]+).*$/, '$1-$2' )
-               )
+               .addClass( 'oo-ui-tool' )
+               .addClass( 'oo-ui-tool-name-' + this.constructor.static.name.replace( /^([^\/]+)\/([^\/]+).*$/, '$1-$2' ) )
                .toggleClass( 'oo-ui-tool-with-label', this.constructor.static.displayBothIconAndLabel )
                .append( this.$link );
        this.setTitle( config.title || this.constructor.static.title );
@@ -1043,8 +1041,8 @@ OO.ui.ToolGroup.prototype.onMouseKeyDown = function ( e ) {
                        this.pressed.setActive( true );
                        this.getElementDocument().addEventListener( 'mouseup', this.onCapturedMouseKeyUpHandler, true );
                        this.getElementDocument().addEventListener( 'keyup', this.onCapturedMouseKeyUpHandler, true );
+                       return false;
                }
-               return false;
        }
 };
 
@@ -1778,6 +1776,7 @@ OO.ui.BarToolGroup.static.name = 'bar';
  * @mixins OO.ui.mixin.IndicatorElement
  * @mixins OO.ui.mixin.LabelElement
  * @mixins OO.ui.mixin.TitledElement
+ * @mixins OO.ui.mixin.FlaggedElement
  * @mixins OO.ui.mixin.ClippableElement
  * @mixins OO.ui.mixin.TabIndexedElement
  *
@@ -1795,7 +1794,7 @@ OO.ui.PopupToolGroup = function OoUiPopupToolGroup( toolbar, config ) {
 
        // Configuration initialization
        config = $.extend( {
-               indicator: toolbar.position === 'bottom' ? 'up' : 'down'
+               indicator: config.indicator === undefined ? ( toolbar.position === 'bottom' ? 'up' : 'down' ) : config.indicator
        }, config );
 
        // Parent constructor
@@ -1812,6 +1811,7 @@ OO.ui.PopupToolGroup = function OoUiPopupToolGroup( toolbar, config ) {
        OO.ui.mixin.IndicatorElement.call( this, config );
        OO.ui.mixin.LabelElement.call( this, config );
        OO.ui.mixin.TitledElement.call( this, config );
+       OO.ui.mixin.FlaggedElement.call( this, config );
        OO.ui.mixin.ClippableElement.call( this, $.extend( {}, config, { $clippable: this.$group } ) );
        OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$handle } ) );
 
@@ -1826,6 +1826,7 @@ OO.ui.PopupToolGroup = function OoUiPopupToolGroup( toolbar, config ) {
        // Initialization
        this.$handle
                .addClass( 'oo-ui-popupToolGroup-handle' )
+               .attr( 'role', 'button' )
                .append( this.$icon, this.$label, this.$indicator );
        // If the pop-up should have a header, add it to the top of the toolGroup.
        // Note: If this feature is useful for other widgets, we could abstract it into an
@@ -1849,6 +1850,7 @@ OO.mixinClass( OO.ui.PopupToolGroup, OO.ui.mixin.IconElement );
 OO.mixinClass( OO.ui.PopupToolGroup, OO.ui.mixin.IndicatorElement );
 OO.mixinClass( OO.ui.PopupToolGroup, OO.ui.mixin.LabelElement );
 OO.mixinClass( OO.ui.PopupToolGroup, OO.ui.mixin.TitledElement );
+OO.mixinClass( OO.ui.PopupToolGroup, OO.ui.mixin.FlaggedElement );
 OO.mixinClass( OO.ui.PopupToolGroup, OO.ui.mixin.ClippableElement );
 OO.mixinClass( OO.ui.PopupToolGroup, OO.ui.mixin.TabIndexedElement );
 
@@ -2359,3 +2361,5 @@ OO.ui.MenuToolGroup.prototype.onUpdateState = function () {
 };
 
 }( OO ) );
+
+//# sourceMappingURL=oojs-ui-toolbars.js.map
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/oojs-ui-toolbars.js.map b/resources/lib/oojs-ui/oojs-ui-toolbars.js.map
new file mode 100644 (file)
index 0000000..936c0da
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/intro.js.txt","../src/Toolbar.js","../src/Tool.js","../src/ToolGroup.js","../src/ToolFactory.js","../src/ToolGroupFactory.js","../src/tools/PopupTool.js","../src/tools/ToolGroupTool.js","../src/toolgroups/BarToolGroup.js","../src/toolgroups/PopupToolGroup.js","../src/toolgroups/ListToolGroup.js","../src/toolgroups/MenuToolGroup.js","../src/outro.js.txt"],"names":[],"mappings":"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","file":"oojs-ui-toolbars.js","sourcesContent":["( function ( OO ) {\n\n'use strict';\n","/**\n * Toolbars are complex interface components that permit users to easily access a variety\n * of {@link OO.ui.Tool tools} (e.g., formatting commands) and actions, which are additional commands that are\n * part of the toolbar, but not configured as tools.\n *\n * Individual tools are customized and then registered with a {@link OO.ui.ToolFactory tool factory}, which creates\n * the tools on demand. Each tool has a symbolic name (used when registering the tool), a title (e.g., ‘Insert\n * image’), and an icon.\n *\n * Individual tools are organized in {@link OO.ui.ToolGroup toolgroups}, which can be {@link OO.ui.MenuToolGroup menus}\n * of tools, {@link OO.ui.ListToolGroup lists} of tools, or a single {@link OO.ui.BarToolGroup bar} of tools.\n * The arrangement and order of the toolgroups is customized when the toolbar is set up. Tools can be presented in\n * any order, but each can only appear once in the toolbar.\n *\n * The toolbar can be synchronized with the state of the external \"application\", like a text\n * editor's editing area, marking tools as active/inactive (e.g. a 'bold' tool would be shown as\n * active when the text cursor was inside bolded text) or enabled/disabled (e.g. a table caption\n * tool would be disabled while the user is not editing a table). A state change is signalled by\n * emitting the {@link #event-updateState 'updateState' event}, which calls Tools'\n * {@link OO.ui.Tool#onUpdateState onUpdateState method}.\n *\n * The following is an example of a basic toolbar.\n *\n *     @example\n *     // Example of a toolbar\n *     // Create the toolbar\n *     var toolFactory = new OO.ui.ToolFactory();\n *     var toolGroupFactory = new OO.ui.ToolGroupFactory();\n *     var toolbar = new OO.ui.Toolbar( toolFactory, toolGroupFactory );\n *\n *     // We will be placing status text in this element when tools are used\n *     var $area = $( '<p>' ).text( 'Toolbar example' );\n *\n *     // Define the tools that we're going to place in our toolbar\n *\n *     // Create a class inheriting from OO.ui.Tool\n *     function SearchTool() {\n *         SearchTool.parent.apply( this, arguments );\n *     }\n *     OO.inheritClass( SearchTool, OO.ui.Tool );\n *     // Each tool must have a 'name' (used as an internal identifier, see later) and at least one\n *     // of 'icon' and 'title' (displayed icon and text).\n *     SearchTool.static.name = 'search';\n *     SearchTool.static.icon = 'search';\n *     SearchTool.static.title = 'Search...';\n *     // Defines the action that will happen when this tool is selected (clicked).\n *     SearchTool.prototype.onSelect = function () {\n *         $area.text( 'Search tool clicked!' );\n *         // Never display this tool as \"active\" (selected).\n *         this.setActive( false );\n *     };\n *     SearchTool.prototype.onUpdateState = function () {};\n *     // Make this tool available in our toolFactory and thus our toolbar\n *     toolFactory.register( SearchTool );\n *\n *     // Register two more tools, nothing interesting here\n *     function SettingsTool() {\n *         SettingsTool.parent.apply( this, arguments );\n *     }\n *     OO.inheritClass( SettingsTool, OO.ui.Tool );\n *     SettingsTool.static.name = 'settings';\n *     SettingsTool.static.icon = 'settings';\n *     SettingsTool.static.title = 'Change settings';\n *     SettingsTool.prototype.onSelect = function () {\n *         $area.text( 'Settings tool clicked!' );\n *         this.setActive( false );\n *     };\n *     SettingsTool.prototype.onUpdateState = function () {};\n *     toolFactory.register( SettingsTool );\n *\n *     // Register two more tools, nothing interesting here\n *     function StuffTool() {\n *         StuffTool.parent.apply( this, arguments );\n *     }\n *     OO.inheritClass( StuffTool, OO.ui.Tool );\n *     StuffTool.static.name = 'stuff';\n *     StuffTool.static.icon = 'ellipsis';\n *     StuffTool.static.title = 'More stuff';\n *     StuffTool.prototype.onSelect = function () {\n *         $area.text( 'More stuff tool clicked!' );\n *         this.setActive( false );\n *     };\n *     StuffTool.prototype.onUpdateState = function () {};\n *     toolFactory.register( StuffTool );\n *\n *     // This is a PopupTool. Rather than having a custom 'onSelect' action, it will display a\n *     // little popup window (a PopupWidget).\n *     function HelpTool( toolGroup, config ) {\n *         OO.ui.PopupTool.call( this, toolGroup, $.extend( { popup: {\n *             padded: true,\n *             label: 'Help',\n *             head: true\n *         } }, config ) );\n *         this.popup.$body.append( '<p>I am helpful!</p>' );\n *     }\n *     OO.inheritClass( HelpTool, OO.ui.PopupTool );\n *     HelpTool.static.name = 'help';\n *     HelpTool.static.icon = 'help';\n *     HelpTool.static.title = 'Help';\n *     toolFactory.register( HelpTool );\n *\n *     // Finally define which tools and in what order appear in the toolbar. Each tool may only be\n *     // used once (but not all defined tools must be used).\n *     toolbar.setup( [\n *         {\n *             // 'bar' tool groups display tools' icons only, side-by-side.\n *             type: 'bar',\n *             include: [ 'search', 'help' ]\n *         },\n *         {\n *             // 'list' tool groups display both the titles and icons, in a dropdown list.\n *             type: 'list',\n *             indicator: 'down',\n *             label: 'More',\n *             include: [ 'settings', 'stuff' ]\n *         }\n *         // Note how the tools themselves are toolgroup-agnostic - the same tool can be displayed\n *         // either in a 'list' or a 'bar'. There is a 'menu' tool group too, not showcased here,\n *         // since it's more complicated to use. (See the next example snippet on this page.)\n *     ] );\n *\n *     // Create some UI around the toolbar and place it in the document\n *     var frame = new OO.ui.PanelLayout( {\n *         expanded: false,\n *         framed: true\n *     } );\n *     var contentFrame = new OO.ui.PanelLayout( {\n *         expanded: false,\n *         padded: true\n *     } );\n *     frame.$element.append(\n *         toolbar.$element,\n *         contentFrame.$element.append( $area )\n *     );\n *     $( 'body' ).append( frame.$element );\n *\n *     // Here is where the toolbar is actually built. This must be done after inserting it into the\n *     // document.\n *     toolbar.initialize();\n *     toolbar.emit( 'updateState' );\n *\n * The following example extends the previous one to illustrate 'menu' toolgroups and the usage of\n * {@link #event-updateState 'updateState' event}.\n *\n *     @example\n *     // Create the toolbar\n *     var toolFactory = new OO.ui.ToolFactory();\n *     var toolGroupFactory = new OO.ui.ToolGroupFactory();\n *     var toolbar = new OO.ui.Toolbar( toolFactory, toolGroupFactory );\n *\n *     // We will be placing status text in this element when tools are used\n *     var $area = $( '<p>' ).text( 'Toolbar example' );\n *\n *     // Define the tools that we're going to place in our toolbar\n *\n *     // Create a class inheriting from OO.ui.Tool\n *     function SearchTool() {\n *         SearchTool.parent.apply( this, arguments );\n *     }\n *     OO.inheritClass( SearchTool, OO.ui.Tool );\n *     // Each tool must have a 'name' (used as an internal identifier, see later) and at least one\n *     // of 'icon' and 'title' (displayed icon and text).\n *     SearchTool.static.name = 'search';\n *     SearchTool.static.icon = 'search';\n *     SearchTool.static.title = 'Search...';\n *     // Defines the action that will happen when this tool is selected (clicked).\n *     SearchTool.prototype.onSelect = function () {\n *         $area.text( 'Search tool clicked!' );\n *         // Never display this tool as \"active\" (selected).\n *         this.setActive( false );\n *     };\n *     SearchTool.prototype.onUpdateState = function () {};\n *     // Make this tool available in our toolFactory and thus our toolbar\n *     toolFactory.register( SearchTool );\n *\n *     // Register two more tools, nothing interesting here\n *     function SettingsTool() {\n *         SettingsTool.parent.apply( this, arguments );\n *         this.reallyActive = false;\n *     }\n *     OO.inheritClass( SettingsTool, OO.ui.Tool );\n *     SettingsTool.static.name = 'settings';\n *     SettingsTool.static.icon = 'settings';\n *     SettingsTool.static.title = 'Change settings';\n *     SettingsTool.prototype.onSelect = function () {\n *         $area.text( 'Settings tool clicked!' );\n *         // Toggle the active state on each click\n *         this.reallyActive = !this.reallyActive;\n *         this.setActive( this.reallyActive );\n *         // To update the menu label\n *         this.toolbar.emit( 'updateState' );\n *     };\n *     SettingsTool.prototype.onUpdateState = function () {};\n *     toolFactory.register( SettingsTool );\n *\n *     // Register two more tools, nothing interesting here\n *     function StuffTool() {\n *         StuffTool.parent.apply( this, arguments );\n *         this.reallyActive = false;\n *     }\n *     OO.inheritClass( StuffTool, OO.ui.Tool );\n *     StuffTool.static.name = 'stuff';\n *     StuffTool.static.icon = 'ellipsis';\n *     StuffTool.static.title = 'More stuff';\n *     StuffTool.prototype.onSelect = function () {\n *         $area.text( 'More stuff tool clicked!' );\n *         // Toggle the active state on each click\n *         this.reallyActive = !this.reallyActive;\n *         this.setActive( this.reallyActive );\n *         // To update the menu label\n *         this.toolbar.emit( 'updateState' );\n *     };\n *     StuffTool.prototype.onUpdateState = function () {};\n *     toolFactory.register( StuffTool );\n *\n *     // This is a PopupTool. Rather than having a custom 'onSelect' action, it will display a\n *     // little popup window (a PopupWidget). 'onUpdateState' is also already implemented.\n *     function HelpTool( toolGroup, config ) {\n *         OO.ui.PopupTool.call( this, toolGroup, $.extend( { popup: {\n *             padded: true,\n *             label: 'Help',\n *             head: true\n *         } }, config ) );\n *         this.popup.$body.append( '<p>I am helpful!</p>' );\n *     }\n *     OO.inheritClass( HelpTool, OO.ui.PopupTool );\n *     HelpTool.static.name = 'help';\n *     HelpTool.static.icon = 'help';\n *     HelpTool.static.title = 'Help';\n *     toolFactory.register( HelpTool );\n *\n *     // Finally define which tools and in what order appear in the toolbar. Each tool may only be\n *     // used once (but not all defined tools must be used).\n *     toolbar.setup( [\n *         {\n *             // 'bar' tool groups display tools' icons only, side-by-side.\n *             type: 'bar',\n *             include: [ 'search', 'help' ]\n *         },\n *         {\n *             // 'menu' tool groups display both the titles and icons, in a dropdown menu.\n *             // Menu label indicates which items are selected.\n *             type: 'menu',\n *             indicator: 'down',\n *             include: [ 'settings', 'stuff' ]\n *         }\n *     ] );\n *\n *     // Create some UI around the toolbar and place it in the document\n *     var frame = new OO.ui.PanelLayout( {\n *         expanded: false,\n *         framed: true\n *     } );\n *     var contentFrame = new OO.ui.PanelLayout( {\n *         expanded: false,\n *         padded: true\n *     } );\n *     frame.$element.append(\n *         toolbar.$element,\n *         contentFrame.$element.append( $area )\n *     );\n *     $( 'body' ).append( frame.$element );\n *\n *     // Here is where the toolbar is actually built. This must be done after inserting it into the\n *     // document.\n *     toolbar.initialize();\n *     toolbar.emit( 'updateState' );\n *\n * @class\n * @extends OO.ui.Element\n * @mixins OO.EventEmitter\n * @mixins OO.ui.mixin.GroupElement\n *\n * @constructor\n * @param {OO.ui.ToolFactory} toolFactory Factory for creating tools\n * @param {OO.ui.ToolGroupFactory} toolGroupFactory Factory for creating toolgroups\n * @param {Object} [config] Configuration options\n * @cfg {boolean} [actions] Add an actions section to the toolbar. Actions are commands that are included\n *  in the toolbar, but are not configured as tools. By default, actions are displayed on the right side of\n *  the toolbar.\n * @cfg {string} [position='top'] Whether the toolbar is positioned above ('top') or below ('bottom') content.\n */\nOO.ui.Toolbar = function OoUiToolbar( toolFactory, toolGroupFactory, config ) {\n\t// Allow passing positional parameters inside the config object\n\tif ( OO.isPlainObject( toolFactory ) && config === undefined ) {\n\t\tconfig = toolFactory;\n\t\ttoolFactory = config.toolFactory;\n\t\ttoolGroupFactory = config.toolGroupFactory;\n\t}\n\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.Toolbar.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.EventEmitter.call( this );\n\tOO.ui.mixin.GroupElement.call( this, config );\n\n\t// Properties\n\tthis.toolFactory = toolFactory;\n\tthis.toolGroupFactory = toolGroupFactory;\n\tthis.groups = [];\n\tthis.tools = {};\n\tthis.position = config.position || 'top';\n\tthis.$bar = $( '<div>' );\n\tthis.$actions = $( '<div>' );\n\tthis.initialized = false;\n\tthis.narrowThreshold = null;\n\tthis.onWindowResizeHandler = this.onWindowResize.bind( this );\n\n\t// Events\n\tthis.$element\n\t\t.add( this.$bar ).add( this.$group ).add( this.$actions )\n\t\t.on( 'mousedown keydown', this.onPointerDown.bind( this ) );\n\n\t// Initialization\n\tthis.$group.addClass( 'oo-ui-toolbar-tools' );\n\tif ( config.actions ) {\n\t\tthis.$bar.append( this.$actions.addClass( 'oo-ui-toolbar-actions' ) );\n\t}\n\tthis.$bar\n\t\t.addClass( 'oo-ui-toolbar-bar' )\n\t\t.append( this.$group, '<div style=\"clear:both\"></div>' );\n\tthis.$element.addClass( 'oo-ui-toolbar oo-ui-toolbar-position-' + this.position ).append( this.$bar );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.Toolbar, OO.ui.Element );\nOO.mixinClass( OO.ui.Toolbar, OO.EventEmitter );\nOO.mixinClass( OO.ui.Toolbar, OO.ui.mixin.GroupElement );\n\n/* Events */\n\n/**\n * @event updateState\n *\n * An 'updateState' event must be emitted on the Toolbar (by calling `toolbar.emit( 'updateState' )`)\n * every time the state of the application using the toolbar changes, and an update to the state of\n * tools is required.\n *\n * @param {...Mixed} data Application-defined parameters\n */\n\n/* Methods */\n\n/**\n * Get the tool factory.\n *\n * @return {OO.ui.ToolFactory} Tool factory\n */\nOO.ui.Toolbar.prototype.getToolFactory = function () {\n\treturn this.toolFactory;\n};\n\n/**\n * Get the toolgroup factory.\n *\n * @return {OO.Factory} Toolgroup factory\n */\nOO.ui.Toolbar.prototype.getToolGroupFactory = function () {\n\treturn this.toolGroupFactory;\n};\n\n/**\n * Handles mouse down events.\n *\n * @private\n * @param {jQuery.Event} e Mouse down event\n */\nOO.ui.Toolbar.prototype.onPointerDown = function ( e ) {\n\tvar $closestWidgetToEvent = $( e.target ).closest( '.oo-ui-widget' ),\n\t\t$closestWidgetToToolbar = this.$element.closest( '.oo-ui-widget' );\n\tif ( !$closestWidgetToEvent.length || $closestWidgetToEvent[ 0 ] === $closestWidgetToToolbar[ 0 ] ) {\n\t\treturn false;\n\t}\n};\n\n/**\n * Handle window resize event.\n *\n * @private\n * @param {jQuery.Event} e Window resize event\n */\nOO.ui.Toolbar.prototype.onWindowResize = function () {\n\tthis.$element.toggleClass(\n\t\t'oo-ui-toolbar-narrow',\n\t\tthis.$bar.width() <= this.getNarrowThreshold()\n\t);\n};\n\n/**\n * Get the (lazily-computed) width threshold for applying the oo-ui-toolbar-narrow\n * class.\n *\n * @private\n * @return {number} Width threshold in pixels\n */\nOO.ui.Toolbar.prototype.getNarrowThreshold = function () {\n\tif ( this.narrowThreshold === null ) {\n\t\tthis.narrowThreshold = this.$group.width() + this.$actions.width();\n\t}\n\treturn this.narrowThreshold;\n};\n\n/**\n * Sets up handles and preloads required information for the toolbar to work.\n * This must be called after it is attached to a visible document and before doing anything else.\n */\nOO.ui.Toolbar.prototype.initialize = function () {\n\tif ( !this.initialized ) {\n\t\tthis.initialized = true;\n\t\t$( this.getElementWindow() ).on( 'resize', this.onWindowResizeHandler );\n\t\tthis.onWindowResize();\n\t}\n};\n\n/**\n * Set up the toolbar.\n *\n * The toolbar is set up with a list of toolgroup configurations that specify the type of\n * toolgroup ({@link OO.ui.BarToolGroup bar}, {@link OO.ui.MenuToolGroup menu}, or {@link OO.ui.ListToolGroup list})\n * to add and which tools to include, exclude, promote, or demote within that toolgroup. Please\n * see {@link OO.ui.ToolGroup toolgroups} for more information about including tools in toolgroups.\n *\n * @param {Object.<string,Array>} groups List of toolgroup configurations\n * @param {Array|string} [groups.include] Tools to include in the toolgroup\n * @param {Array|string} [groups.exclude] Tools to exclude from the toolgroup\n * @param {Array|string} [groups.promote] Tools to promote to the beginning of the toolgroup\n * @param {Array|string} [groups.demote] Tools to demote to the end of the toolgroup\n */\nOO.ui.Toolbar.prototype.setup = function ( groups ) {\n\tvar i, len, type, group,\n\t\titems = [],\n\t\tdefaultType = 'bar';\n\n\t// Cleanup previous groups\n\tthis.reset();\n\n\t// Build out new groups\n\tfor ( i = 0, len = groups.length; i < len; i++ ) {\n\t\tgroup = groups[ i ];\n\t\tif ( group.include === '*' ) {\n\t\t\t// Apply defaults to catch-all groups\n\t\t\tif ( group.type === undefined ) {\n\t\t\t\tgroup.type = 'list';\n\t\t\t}\n\t\t\tif ( group.label === undefined ) {\n\t\t\t\tgroup.label = OO.ui.msg( 'ooui-toolbar-more' );\n\t\t\t}\n\t\t}\n\t\t// Check type has been registered\n\t\ttype = this.getToolGroupFactory().lookup( group.type ) ? group.type : defaultType;\n\t\titems.push(\n\t\t\tthis.getToolGroupFactory().create( type, this, group )\n\t\t);\n\t}\n\tthis.addItems( items );\n};\n\n/**\n * Remove all tools and toolgroups from the toolbar.\n */\nOO.ui.Toolbar.prototype.reset = function () {\n\tvar i, len;\n\n\tthis.groups = [];\n\tthis.tools = {};\n\tfor ( i = 0, len = this.items.length; i < len; i++ ) {\n\t\tthis.items[ i ].destroy();\n\t}\n\tthis.clearItems();\n};\n\n/**\n * Destroy the toolbar.\n *\n * Destroying the toolbar removes all event handlers and DOM elements that constitute the toolbar. Call\n * this method whenever you are done using a toolbar.\n */\nOO.ui.Toolbar.prototype.destroy = function () {\n\t$( this.getElementWindow() ).off( 'resize', this.onWindowResizeHandler );\n\tthis.reset();\n\tthis.$element.remove();\n};\n\n/**\n * Check if the tool is available.\n *\n * Available tools are ones that have not yet been added to the toolbar.\n *\n * @param {string} name Symbolic name of tool\n * @return {boolean} Tool is available\n */\nOO.ui.Toolbar.prototype.isToolAvailable = function ( name ) {\n\treturn !this.tools[ name ];\n};\n\n/**\n * Prevent tool from being used again.\n *\n * @param {OO.ui.Tool} tool Tool to reserve\n */\nOO.ui.Toolbar.prototype.reserveTool = function ( tool ) {\n\tthis.tools[ tool.getName() ] = tool;\n};\n\n/**\n * Allow tool to be used again.\n *\n * @param {OO.ui.Tool} tool Tool to release\n */\nOO.ui.Toolbar.prototype.releaseTool = function ( tool ) {\n\tdelete this.tools[ tool.getName() ];\n};\n\n/**\n * Get accelerator label for tool.\n *\n * The OOjs UI library does not contain an accelerator system, but this is the hook for one. To\n * use an accelerator system, subclass the toolbar and override this method, which is meant to return a label\n * that describes the accelerator keys for the tool passed (by symbolic name) to the method.\n *\n * @param {string} name Symbolic name of tool\n * @return {string|undefined} Tool accelerator label if available\n */\nOO.ui.Toolbar.prototype.getToolAccelerator = function () {\n\treturn undefined;\n};\n","/**\n * Tools, together with {@link OO.ui.ToolGroup toolgroups}, constitute {@link OO.ui.Toolbar toolbars}.\n * Each tool is configured with a static name, title, and icon and is customized with the command to carry\n * out when the tool is selected. Tools must also be registered with a {@link OO.ui.ToolFactory tool factory},\n * which creates the tools on demand.\n *\n * Every Tool subclass must implement two methods:\n *\n * - {@link #onUpdateState}\n * - {@link #onSelect}\n *\n * Tools are added to toolgroups ({@link OO.ui.ListToolGroup ListToolGroup},\n * {@link OO.ui.BarToolGroup BarToolGroup}, or {@link OO.ui.MenuToolGroup MenuToolGroup}), which determine how\n * the tool is displayed in the toolbar. See {@link OO.ui.Toolbar toolbars} for an example.\n *\n * For more information, please see the [OOjs UI documentation on MediaWiki][1].\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Toolbars\n *\n * @abstract\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.IconElement\n * @mixins OO.ui.mixin.FlaggedElement\n * @mixins OO.ui.mixin.TabIndexedElement\n *\n * @constructor\n * @param {OO.ui.ToolGroup} toolGroup\n * @param {Object} [config] Configuration options\n * @cfg {string|Function} [title] Title text or a function that returns text. If this config is omitted, the value of\n *  the {@link #static-title static title} property is used.\n *\n *  The title is used in different ways depending on the type of toolgroup that contains the tool. The\n *  title is used as a tooltip if the tool is part of a {@link OO.ui.BarToolGroup bar} toolgroup, or as the label text if the tool is\n *  part of a {@link OO.ui.ListToolGroup list} or {@link OO.ui.MenuToolGroup menu} toolgroup.\n *\n *  For bar toolgroups, a description of the accelerator key is appended to the title if an accelerator key\n *  is associated with an action by the same name as the tool and accelerator functionality has been added to the application.\n *  To add accelerator key functionality, you must subclass OO.ui.Toolbar and override the {@link OO.ui.Toolbar#getToolAccelerator getToolAccelerator} method.\n */\nOO.ui.Tool = function OoUiTool( toolGroup, config ) {\n\t// Allow passing positional parameters inside the config object\n\tif ( OO.isPlainObject( toolGroup ) && config === undefined ) {\n\t\tconfig = toolGroup;\n\t\ttoolGroup = config.toolGroup;\n\t}\n\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.Tool.parent.call( this, config );\n\n\t// Properties\n\tthis.toolGroup = toolGroup;\n\tthis.toolbar = this.toolGroup.getToolbar();\n\tthis.active = false;\n\tthis.$title = $( '<span>' );\n\tthis.$accel = $( '<span>' );\n\tthis.$link = $( '<a>' );\n\tthis.title = null;\n\n\t// Mixin constructors\n\tOO.ui.mixin.IconElement.call( this, config );\n\tOO.ui.mixin.FlaggedElement.call( this, config );\n\tOO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$link } ) );\n\n\t// Events\n\tthis.toolbar.connect( this, { updateState: 'onUpdateState' } );\n\n\t// Initialization\n\tthis.$title.addClass( 'oo-ui-tool-title' );\n\tthis.$accel\n\t\t.addClass( 'oo-ui-tool-accel' )\n\t\t.prop( {\n\t\t\t// This may need to be changed if the key names are ever localized,\n\t\t\t// but for now they are essentially written in English\n\t\t\tdir: 'ltr',\n\t\t\tlang: 'en'\n\t\t} );\n\tthis.$link\n\t\t.addClass( 'oo-ui-tool-link' )\n\t\t.append( this.$icon, this.$title, this.$accel )\n\t\t.attr( 'role', 'button' );\n\tthis.$element\n\t\t.data( 'oo-ui-tool', this )\n\t\t.addClass( 'oo-ui-tool' )\n\t\t.addClass( 'oo-ui-tool-name-' + this.constructor.static.name.replace( /^([^\\/]+)\\/([^\\/]+).*$/, '$1-$2' ) )\n\t\t.toggleClass( 'oo-ui-tool-with-label', this.constructor.static.displayBothIconAndLabel )\n\t\t.append( this.$link );\n\tthis.setTitle( config.title || this.constructor.static.title );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.Tool, OO.ui.Widget );\nOO.mixinClass( OO.ui.Tool, OO.ui.mixin.IconElement );\nOO.mixinClass( OO.ui.Tool, OO.ui.mixin.FlaggedElement );\nOO.mixinClass( OO.ui.Tool, OO.ui.mixin.TabIndexedElement );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.Tool.static.tagName = 'span';\n\n/**\n * Symbolic name of tool.\n *\n * The symbolic name is used internally to register the tool with a {@link OO.ui.ToolFactory ToolFactory}. It can\n * also be used when adding tools to toolgroups.\n *\n * @abstract\n * @static\n * @inheritable\n * @property {string}\n */\nOO.ui.Tool.static.name = '';\n\n/**\n * Symbolic name of the group.\n *\n * The group name is used to associate tools with each other so that they can be selected later by\n * a {@link OO.ui.ToolGroup toolgroup}.\n *\n * @abstract\n * @static\n * @inheritable\n * @property {string}\n */\nOO.ui.Tool.static.group = '';\n\n/**\n * Tool title text or a function that returns title text. The value of the static property is overridden if the #title config option is used.\n *\n * @abstract\n * @static\n * @inheritable\n * @property {string|Function}\n */\nOO.ui.Tool.static.title = '';\n\n/**\n * Display both icon and label when the tool is used in a {@link OO.ui.BarToolGroup bar} toolgroup.\n * Normally only the icon is displayed, or only the label if no icon is given.\n *\n * @static\n * @inheritable\n * @property {boolean}\n */\nOO.ui.Tool.static.displayBothIconAndLabel = false;\n\n/**\n * Add tool to catch-all groups automatically.\n *\n * A catch-all group, which contains all tools that do not currently belong to a toolgroup,\n * can be included in a toolgroup using the wildcard selector, an asterisk (*).\n *\n * @static\n * @inheritable\n * @property {boolean}\n */\nOO.ui.Tool.static.autoAddToCatchall = true;\n\n/**\n * Add tool to named groups automatically.\n *\n * By default, tools that are configured with a static ‘group’ property are added\n * to that group and will be selected when the symbolic name of the group is specified (e.g., when\n * toolgroups include tools by group name).\n *\n * @static\n * @property {boolean}\n * @inheritable\n */\nOO.ui.Tool.static.autoAddToGroup = true;\n\n/**\n * Check if this tool is compatible with given data.\n *\n * This is a stub that can be overridden to provide support for filtering tools based on an\n * arbitrary piece of information  (e.g., where the cursor is in a document). The implementation\n * must also call this method so that the compatibility check can be performed.\n *\n * @static\n * @inheritable\n * @param {Mixed} data Data to check\n * @return {boolean} Tool can be used with data\n */\nOO.ui.Tool.static.isCompatibleWith = function () {\n\treturn false;\n};\n\n/* Methods */\n\n/**\n * Handle the toolbar state being updated. This method is called when the\n * {@link OO.ui.Toolbar#event-updateState 'updateState' event} is emitted on the\n * {@link OO.ui.Toolbar Toolbar} that uses this tool, and should set the state of this tool\n * depending on application state (usually by calling #setDisabled to enable or disable the tool,\n * or #setActive to mark is as currently in-use or not).\n *\n * This is an abstract method that must be overridden in a concrete subclass.\n *\n * @method\n * @protected\n * @abstract\n */\nOO.ui.Tool.prototype.onUpdateState = null;\n\n/**\n * Handle the tool being selected. This method is called when the user triggers this tool,\n * usually by clicking on its label/icon.\n *\n * This is an abstract method that must be overridden in a concrete subclass.\n *\n * @method\n * @protected\n * @abstract\n */\nOO.ui.Tool.prototype.onSelect = null;\n\n/**\n * Check if the tool is active.\n *\n * Tools become active when their #onSelect or #onUpdateState handlers change them to appear pressed\n * with the #setActive method. Additional CSS is applied to the tool to reflect the active state.\n *\n * @return {boolean} Tool is active\n */\nOO.ui.Tool.prototype.isActive = function () {\n\treturn this.active;\n};\n\n/**\n * Make the tool appear active or inactive.\n *\n * This method should be called within #onSelect or #onUpdateState event handlers to make the tool\n * appear pressed or not.\n *\n * @param {boolean} state Make tool appear active\n */\nOO.ui.Tool.prototype.setActive = function ( state ) {\n\tthis.active = !!state;\n\tif ( this.active ) {\n\t\tthis.$element.addClass( 'oo-ui-tool-active' );\n\t\tthis.setFlags( { progressive: true } );\n\t} else {\n\t\tthis.$element.removeClass( 'oo-ui-tool-active' );\n\t\tthis.setFlags( { progressive: false } );\n\t}\n};\n\n/**\n * Set the tool #title.\n *\n * @param {string|Function} title Title text or a function that returns text\n * @chainable\n */\nOO.ui.Tool.prototype.setTitle = function ( title ) {\n\tthis.title = OO.ui.resolveMsg( title );\n\tthis.updateTitle();\n\treturn this;\n};\n\n/**\n * Get the tool #title.\n *\n * @return {string} Title text\n */\nOO.ui.Tool.prototype.getTitle = function () {\n\treturn this.title;\n};\n\n/**\n * Get the tool's symbolic name.\n *\n * @return {string} Symbolic name of tool\n */\nOO.ui.Tool.prototype.getName = function () {\n\treturn this.constructor.static.name;\n};\n\n/**\n * Update the title.\n */\nOO.ui.Tool.prototype.updateTitle = function () {\n\tvar titleTooltips = this.toolGroup.constructor.static.titleTooltips,\n\t\taccelTooltips = this.toolGroup.constructor.static.accelTooltips,\n\t\taccel = this.toolbar.getToolAccelerator( this.constructor.static.name ),\n\t\ttooltipParts = [];\n\n\tthis.$title.text( this.title );\n\tthis.$accel.text( accel );\n\n\tif ( titleTooltips && typeof this.title === 'string' && this.title.length ) {\n\t\ttooltipParts.push( this.title );\n\t}\n\tif ( accelTooltips && typeof accel === 'string' && accel.length ) {\n\t\ttooltipParts.push( accel );\n\t}\n\tif ( tooltipParts.length ) {\n\t\tthis.$link.attr( 'title', tooltipParts.join( ' ' ) );\n\t} else {\n\t\tthis.$link.removeAttr( 'title' );\n\t}\n};\n\n/**\n * Destroy tool.\n *\n * Destroying the tool removes all event handlers and the tool’s DOM elements.\n * Call this method whenever you are done using a tool.\n */\nOO.ui.Tool.prototype.destroy = function () {\n\tthis.toolbar.disconnect( this );\n\tthis.$element.remove();\n};\n","/**\n * ToolGroups are collections of {@link OO.ui.Tool tools} that are used in a {@link OO.ui.Toolbar toolbar}.\n * The type of toolgroup ({@link OO.ui.ListToolGroup list}, {@link OO.ui.BarToolGroup bar}, or {@link OO.ui.MenuToolGroup menu})\n * to which a tool belongs determines how the tool is arranged and displayed in the toolbar. Toolgroups\n * themselves are created on demand with a {@link OO.ui.ToolGroupFactory toolgroup factory}.\n *\n * Toolgroups can contain individual tools, groups of tools, or all available tools, as specified\n * using the `include` config option. See OO.ui.ToolFactory#extract on documentation of the format.\n * The options `exclude`, `promote`, and `demote` support the same formats.\n *\n * See {@link OO.ui.Toolbar toolbars} for a full example. For more information about toolbars in general,\n * please see the [OOjs UI documentation on MediaWiki][1].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Toolbars\n *\n * @abstract\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.GroupElement\n *\n * @constructor\n * @param {OO.ui.Toolbar} toolbar\n * @param {Object} [config] Configuration options\n * @cfg {Array|string} [include] List of tools to include in the toolgroup, see above.\n * @cfg {Array|string} [exclude] List of tools to exclude from the toolgroup, see above.\n * @cfg {Array|string} [promote] List of tools to promote to the beginning of the toolgroup, see above.\n * @cfg {Array|string} [demote] List of tools to demote to the end of the toolgroup, see above.\n *  This setting is particularly useful when tools have been added to the toolgroup\n *  en masse (e.g., via the catch-all selector).\n */\nOO.ui.ToolGroup = function OoUiToolGroup( toolbar, config ) {\n\t// Allow passing positional parameters inside the config object\n\tif ( OO.isPlainObject( toolbar ) && config === undefined ) {\n\t\tconfig = toolbar;\n\t\ttoolbar = config.toolbar;\n\t}\n\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.ToolGroup.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.GroupElement.call( this, config );\n\n\t// Properties\n\tthis.toolbar = toolbar;\n\tthis.tools = {};\n\tthis.pressed = null;\n\tthis.autoDisabled = false;\n\tthis.include = config.include || [];\n\tthis.exclude = config.exclude || [];\n\tthis.promote = config.promote || [];\n\tthis.demote = config.demote || [];\n\tthis.onCapturedMouseKeyUpHandler = this.onCapturedMouseKeyUp.bind( this );\n\n\t// Events\n\tthis.$element.on( {\n\t\tmousedown: this.onMouseKeyDown.bind( this ),\n\t\tmouseup: this.onMouseKeyUp.bind( this ),\n\t\tkeydown: this.onMouseKeyDown.bind( this ),\n\t\tkeyup: this.onMouseKeyUp.bind( this ),\n\t\tfocus: this.onMouseOverFocus.bind( this ),\n\t\tblur: this.onMouseOutBlur.bind( this ),\n\t\tmouseover: this.onMouseOverFocus.bind( this ),\n\t\tmouseout: this.onMouseOutBlur.bind( this )\n\t} );\n\tthis.toolbar.getToolFactory().connect( this, { register: 'onToolFactoryRegister' } );\n\tthis.aggregate( { disable: 'itemDisable' } );\n\tthis.connect( this, { itemDisable: 'updateDisabled' } );\n\n\t// Initialization\n\tthis.$group.addClass( 'oo-ui-toolGroup-tools' );\n\tthis.$element\n\t\t.addClass( 'oo-ui-toolGroup' )\n\t\t.append( this.$group );\n\tthis.populate();\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ToolGroup, OO.ui.Widget );\nOO.mixinClass( OO.ui.ToolGroup, OO.ui.mixin.GroupElement );\n\n/* Events */\n\n/**\n * @event update\n */\n\n/* Static Properties */\n\n/**\n * Show labels in tooltips.\n *\n * @static\n * @inheritable\n * @property {boolean}\n */\nOO.ui.ToolGroup.static.titleTooltips = false;\n\n/**\n * Show acceleration labels in tooltips.\n *\n * Note: The OOjs UI library does not include an accelerator system, but does contain\n * a hook for one. To use an accelerator system, subclass the {@link OO.ui.Toolbar toolbar} and\n * override the {@link OO.ui.Toolbar#getToolAccelerator getToolAccelerator} method, which is\n * meant to return a label that describes the accelerator keys for a given tool (e.g., 'Ctrl + M').\n *\n * @static\n * @inheritable\n * @property {boolean}\n */\nOO.ui.ToolGroup.static.accelTooltips = false;\n\n/**\n * Automatically disable the toolgroup when all tools are disabled\n *\n * @static\n * @inheritable\n * @property {boolean}\n */\nOO.ui.ToolGroup.static.autoDisable = true;\n\n/**\n * @abstract\n * @static\n * @inheritable\n * @property {string}\n */\nOO.ui.ToolGroup.static.name = null;\n\n/* Methods */\n\n/**\n * @inheritdoc\n */\nOO.ui.ToolGroup.prototype.isDisabled = function () {\n\treturn this.autoDisabled || OO.ui.ToolGroup.parent.prototype.isDisabled.apply( this, arguments );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.ToolGroup.prototype.updateDisabled = function () {\n\tvar i, item, allDisabled = true;\n\n\tif ( this.constructor.static.autoDisable ) {\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\titem = this.items[ i ];\n\t\t\tif ( !item.isDisabled() ) {\n\t\t\t\tallDisabled = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis.autoDisabled = allDisabled;\n\t}\n\tOO.ui.ToolGroup.parent.prototype.updateDisabled.apply( this, arguments );\n};\n\n/**\n * Handle mouse down and key down events.\n *\n * @protected\n * @param {jQuery.Event} e Mouse down or key down event\n */\nOO.ui.ToolGroup.prototype.onMouseKeyDown = function ( e ) {\n\tif (\n\t\t!this.isDisabled() &&\n\t\t( e.which === OO.ui.MouseButtons.LEFT || e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER )\n\t) {\n\t\tthis.pressed = this.getTargetTool( e );\n\t\tif ( this.pressed ) {\n\t\t\tthis.pressed.setActive( true );\n\t\t\tthis.getElementDocument().addEventListener( 'mouseup', this.onCapturedMouseKeyUpHandler, true );\n\t\t\tthis.getElementDocument().addEventListener( 'keyup', this.onCapturedMouseKeyUpHandler, true );\n\t\t\treturn false;\n\t\t}\n\t}\n};\n\n/**\n * Handle captured mouse up and key up events.\n *\n * @protected\n * @param {MouseEvent|KeyboardEvent} e Mouse up or key up event\n */\nOO.ui.ToolGroup.prototype.onCapturedMouseKeyUp = function ( e ) {\n\tthis.getElementDocument().removeEventListener( 'mouseup', this.onCapturedMouseKeyUpHandler, true );\n\tthis.getElementDocument().removeEventListener( 'keyup', this.onCapturedMouseKeyUpHandler, true );\n\t// onMouseKeyUp may be called a second time, depending on where the mouse is when the button is\n\t// released, but since `this.pressed` will no longer be true, the second call will be ignored.\n\tthis.onMouseKeyUp( e );\n};\n\n/**\n * Handle mouse up and key up events.\n *\n * @protected\n * @param {MouseEvent|KeyboardEvent} e Mouse up or key up event\n */\nOO.ui.ToolGroup.prototype.onMouseKeyUp = function ( e ) {\n\tvar tool = this.getTargetTool( e );\n\n\tif (\n\t\t!this.isDisabled() && this.pressed && this.pressed === tool &&\n\t\t( e.which === OO.ui.MouseButtons.LEFT || e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER )\n\t) {\n\t\tthis.pressed.onSelect();\n\t\tthis.pressed = null;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t}\n\n\tthis.pressed = null;\n};\n\n/**\n * Handle mouse over and focus events.\n *\n * @protected\n * @param {jQuery.Event} e Mouse over or focus event\n */\nOO.ui.ToolGroup.prototype.onMouseOverFocus = function ( e ) {\n\tvar tool = this.getTargetTool( e );\n\n\tif ( this.pressed && this.pressed === tool ) {\n\t\tthis.pressed.setActive( true );\n\t}\n};\n\n/**\n * Handle mouse out and blur events.\n *\n * @protected\n * @param {jQuery.Event} e Mouse out or blur event\n */\nOO.ui.ToolGroup.prototype.onMouseOutBlur = function ( e ) {\n\tvar tool = this.getTargetTool( e );\n\n\tif ( this.pressed && this.pressed === tool ) {\n\t\tthis.pressed.setActive( false );\n\t}\n};\n\n/**\n * Get the closest tool to a jQuery.Event.\n *\n * Only tool links are considered, which prevents other elements in the tool such as popups from\n * triggering tool group interactions.\n *\n * @private\n * @param {jQuery.Event} e\n * @return {OO.ui.Tool|null} Tool, `null` if none was found\n */\nOO.ui.ToolGroup.prototype.getTargetTool = function ( e ) {\n\tvar tool,\n\t\t$item = $( e.target ).closest( '.oo-ui-tool-link' );\n\n\tif ( $item.length ) {\n\t\ttool = $item.parent().data( 'oo-ui-tool' );\n\t}\n\n\treturn tool && !tool.isDisabled() ? tool : null;\n};\n\n/**\n * Handle tool registry register events.\n *\n * If a tool is registered after the group is created, we must repopulate the list to account for:\n *\n * - a tool being added that may be included\n * - a tool already included being overridden\n *\n * @protected\n * @param {string} name Symbolic name of tool\n */\nOO.ui.ToolGroup.prototype.onToolFactoryRegister = function () {\n\tthis.populate();\n};\n\n/**\n * Get the toolbar that contains the toolgroup.\n *\n * @return {OO.ui.Toolbar} Toolbar that contains the toolgroup\n */\nOO.ui.ToolGroup.prototype.getToolbar = function () {\n\treturn this.toolbar;\n};\n\n/**\n * Add and remove tools based on configuration.\n */\nOO.ui.ToolGroup.prototype.populate = function () {\n\tvar i, len, name, tool,\n\t\ttoolFactory = this.toolbar.getToolFactory(),\n\t\tnames = {},\n\t\tadd = [],\n\t\tremove = [],\n\t\tlist = this.toolbar.getToolFactory().getTools(\n\t\t\tthis.include, this.exclude, this.promote, this.demote\n\t\t);\n\n\t// Build a list of needed tools\n\tfor ( i = 0, len = list.length; i < len; i++ ) {\n\t\tname = list[ i ];\n\t\tif (\n\t\t\t// Tool exists\n\t\t\ttoolFactory.lookup( name ) &&\n\t\t\t// Tool is available or is already in this group\n\t\t\t( this.toolbar.isToolAvailable( name ) || this.tools[ name ] )\n\t\t) {\n\t\t\t// Hack to prevent infinite recursion via ToolGroupTool. We need to reserve the tool before\n\t\t\t// creating it, but we can't call reserveTool() yet because we haven't created the tool.\n\t\t\tthis.toolbar.tools[ name ] = true;\n\t\t\ttool = this.tools[ name ];\n\t\t\tif ( !tool ) {\n\t\t\t\t// Auto-initialize tools on first use\n\t\t\t\tthis.tools[ name ] = tool = toolFactory.create( name, this );\n\t\t\t\ttool.updateTitle();\n\t\t\t}\n\t\t\tthis.toolbar.reserveTool( tool );\n\t\t\tadd.push( tool );\n\t\t\tnames[ name ] = true;\n\t\t}\n\t}\n\t// Remove tools that are no longer needed\n\tfor ( name in this.tools ) {\n\t\tif ( !names[ name ] ) {\n\t\t\tthis.tools[ name ].destroy();\n\t\t\tthis.toolbar.releaseTool( this.tools[ name ] );\n\t\t\tremove.push( this.tools[ name ] );\n\t\t\tdelete this.tools[ name ];\n\t\t}\n\t}\n\tif ( remove.length ) {\n\t\tthis.removeItems( remove );\n\t}\n\t// Update emptiness state\n\tif ( add.length ) {\n\t\tthis.$element.removeClass( 'oo-ui-toolGroup-empty' );\n\t} else {\n\t\tthis.$element.addClass( 'oo-ui-toolGroup-empty' );\n\t}\n\t// Re-add tools (moving existing ones to new locations)\n\tthis.addItems( add );\n\t// Disabled state may depend on items\n\tthis.updateDisabled();\n};\n\n/**\n * Destroy toolgroup.\n */\nOO.ui.ToolGroup.prototype.destroy = function () {\n\tvar name;\n\n\tthis.clearItems();\n\tthis.toolbar.getToolFactory().disconnect( this );\n\tfor ( name in this.tools ) {\n\t\tthis.toolbar.releaseTool( this.tools[ name ] );\n\t\tthis.tools[ name ].disconnect( this ).destroy();\n\t\tdelete this.tools[ name ];\n\t}\n\tthis.$element.remove();\n};\n","/**\n * A ToolFactory creates tools on demand. All tools ({@link OO.ui.Tool Tools}, {@link OO.ui.PopupTool PopupTools},\n * and {@link OO.ui.ToolGroupTool ToolGroupTools}) must be registered with a tool factory. Tools are\n * registered by their symbolic name. See {@link OO.ui.Toolbar toolbars} for an example.\n *\n * For more information about toolbars in general, please see the [OOjs UI documentation on MediaWiki][1].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Toolbars\n *\n * @class\n * @extends OO.Factory\n * @constructor\n */\nOO.ui.ToolFactory = function OoUiToolFactory() {\n\t// Parent constructor\n\tOO.ui.ToolFactory.parent.call( this );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ToolFactory, OO.Factory );\n\n/* Methods */\n\n/**\n * Get tools from the factory\n *\n * @param {Array|string} [include] Included tools, see #extract for format\n * @param {Array|string} [exclude] Excluded tools, see #extract for format\n * @param {Array|string} [promote] Promoted tools, see #extract for format\n * @param {Array|string} [demote] Demoted tools, see #extract for format\n * @return {string[]} List of tools\n */\nOO.ui.ToolFactory.prototype.getTools = function ( include, exclude, promote, demote ) {\n\tvar i, len, included, promoted, demoted,\n\t\tauto = [],\n\t\tused = {};\n\n\t// Collect included and not excluded tools\n\tincluded = OO.simpleArrayDifference( this.extract( include ), this.extract( exclude ) );\n\n\t// Promotion\n\tpromoted = this.extract( promote, used );\n\tdemoted = this.extract( demote, used );\n\n\t// Auto\n\tfor ( i = 0, len = included.length; i < len; i++ ) {\n\t\tif ( !used[ included[ i ] ] ) {\n\t\t\tauto.push( included[ i ] );\n\t\t}\n\t}\n\n\treturn promoted.concat( auto ).concat( demoted );\n};\n\n/**\n * Get a flat list of names from a list of names or groups.\n *\n * Normally, `collection` is an array of tool specifications. Tools can be specified in the\n * following ways:\n *\n * - To include an individual tool, use the symbolic name: `{ name: 'tool-name' }` or `'tool-name'`.\n * - To include all tools in a group, use the group name: `{ group: 'group-name' }`. (To assign the\n *   tool to a group, use OO.ui.Tool.static.group.)\n *\n * Alternatively, to include all tools that are not yet assigned to any other toolgroup, use the\n * catch-all selector `'*'`.\n *\n * If `used` is passed, tool names that appear as properties in this object will be considered\n * already assigned, and will not be returned even if specified otherwise. The tool names extracted\n * by this function call will be added as new properties in the object.\n *\n * @private\n * @param {Array|string} collection List of tools, see above\n * @param {Object} [used] Object containing information about used tools, see above\n * @return {string[]} List of extracted tool names\n */\nOO.ui.ToolFactory.prototype.extract = function ( collection, used ) {\n\tvar i, len, item, name, tool,\n\t\tnames = [];\n\n\tcollection = !Array.isArray( collection ) ? [ collection ] : collection;\n\n\tfor ( i = 0, len = collection.length; i < len; i++ ) {\n\t\titem = collection[ i ];\n\t\tif ( item === '*' ) {\n\t\t\tfor ( name in this.registry ) {\n\t\t\t\ttool = this.registry[ name ];\n\t\t\t\tif (\n\t\t\t\t\t// Only add tools by group name when auto-add is enabled\n\t\t\t\t\ttool.static.autoAddToCatchall &&\n\t\t\t\t\t// Exclude already used tools\n\t\t\t\t\t( !used || !used[ name ] )\n\t\t\t\t) {\n\t\t\t\t\tnames.push( name );\n\t\t\t\t\tif ( used ) {\n\t\t\t\t\t\tused[ name ] = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Allow plain strings as shorthand for named tools\n\t\t\tif ( typeof item === 'string' ) {\n\t\t\t\titem = { name: item };\n\t\t\t}\n\t\t\tif ( OO.isPlainObject( item ) ) {\n\t\t\t\tif ( item.group ) {\n\t\t\t\t\tfor ( name in this.registry ) {\n\t\t\t\t\t\ttool = this.registry[ name ];\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t// Include tools with matching group\n\t\t\t\t\t\t\ttool.static.group === item.group &&\n\t\t\t\t\t\t\t// Only add tools by group name when auto-add is enabled\n\t\t\t\t\t\t\ttool.static.autoAddToGroup &&\n\t\t\t\t\t\t\t// Exclude already used tools\n\t\t\t\t\t\t\t( !used || !used[ name ] )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tnames.push( name );\n\t\t\t\t\t\t\tif ( used ) {\n\t\t\t\t\t\t\t\tused[ name ] = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t// Include tools with matching name and exclude already used tools\n\t\t\t\t} else if ( item.name && ( !used || !used[ item.name ] ) ) {\n\t\t\t\t\tnames.push( item.name );\n\t\t\t\t\tif ( used ) {\n\t\t\t\t\t\tused[ item.name ] = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn names;\n};\n","/**\n * ToolGroupFactories create {@link OO.ui.ToolGroup toolgroups} on demand. The toolgroup classes must\n * specify a symbolic name and be registered with the factory. The following classes are registered by\n * default:\n *\n * - {@link OO.ui.BarToolGroup BarToolGroups} (‘bar’)\n * - {@link OO.ui.MenuToolGroup MenuToolGroups} (‘menu’)\n * - {@link OO.ui.ListToolGroup ListToolGroups} (‘list’)\n *\n * See {@link OO.ui.Toolbar toolbars} for an example.\n *\n * For more information about toolbars in general, please see the [OOjs UI documentation on MediaWiki][1].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Toolbars\n *\n * @class\n * @extends OO.Factory\n * @constructor\n */\nOO.ui.ToolGroupFactory = function OoUiToolGroupFactory() {\n\tvar i, l, defaultClasses;\n\t// Parent constructor\n\tOO.Factory.call( this );\n\n\tdefaultClasses = this.constructor.static.getDefaultClasses();\n\n\t// Register default toolgroups\n\tfor ( i = 0, l = defaultClasses.length; i < l; i++ ) {\n\t\tthis.register( defaultClasses[ i ] );\n\t}\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ToolGroupFactory, OO.Factory );\n\n/* Static Methods */\n\n/**\n * Get a default set of classes to be registered on construction.\n *\n * @return {Function[]} Default classes\n */\nOO.ui.ToolGroupFactory.static.getDefaultClasses = function () {\n\treturn [\n\t\tOO.ui.BarToolGroup,\n\t\tOO.ui.ListToolGroup,\n\t\tOO.ui.MenuToolGroup\n\t];\n};\n","/**\n * Popup tools open a popup window when they are selected from the {@link OO.ui.Toolbar toolbar}. Each popup tool is configured\n * with a static name, title, and icon, as well with as any popup configurations. Unlike other tools, popup tools do not require that developers specify\n * an #onSelect or #onUpdateState method, as these methods have been implemented already.\n *\n *     // Example of a popup tool. When selected, a popup tool displays\n *     // a popup window.\n *     function HelpTool( toolGroup, config ) {\n *        OO.ui.PopupTool.call( this, toolGroup, $.extend( { popup: {\n *            padded: true,\n *            label: 'Help',\n *            head: true\n *        } }, config ) );\n *        this.popup.$body.append( '<p>I am helpful!</p>' );\n *     };\n *     OO.inheritClass( HelpTool, OO.ui.PopupTool );\n *     HelpTool.static.name = 'help';\n *     HelpTool.static.icon = 'help';\n *     HelpTool.static.title = 'Help';\n *     toolFactory.register( HelpTool );\n *\n * For an example of a toolbar that contains a popup tool, see {@link OO.ui.Toolbar toolbars}. For more information about\n * toolbars in genreral, please see the [OOjs UI documentation on MediaWiki][1].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Toolbars\n *\n * @abstract\n * @class\n * @extends OO.ui.Tool\n * @mixins OO.ui.mixin.PopupElement\n *\n * @constructor\n * @param {OO.ui.ToolGroup} toolGroup\n * @param {Object} [config] Configuration options\n */\nOO.ui.PopupTool = function OoUiPopupTool( toolGroup, config ) {\n\t// Allow passing positional parameters inside the config object\n\tif ( OO.isPlainObject( toolGroup ) && config === undefined ) {\n\t\tconfig = toolGroup;\n\t\ttoolGroup = config.toolGroup;\n\t}\n\n\t// Parent constructor\n\tOO.ui.PopupTool.parent.call( this, toolGroup, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.PopupElement.call( this, config );\n\n\t// Initialization\n\tthis.popup.setPosition( toolGroup.getToolbar().position === 'bottom' ? 'above' : 'below' );\n\tthis.$element\n\t\t.addClass( 'oo-ui-popupTool' )\n\t\t.append( this.popup.$element );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.PopupTool, OO.ui.Tool );\nOO.mixinClass( OO.ui.PopupTool, OO.ui.mixin.PopupElement );\n\n/* Methods */\n\n/**\n * Handle the tool being selected.\n *\n * @inheritdoc\n */\nOO.ui.PopupTool.prototype.onSelect = function () {\n\tif ( !this.isDisabled() ) {\n\t\tthis.popup.toggle();\n\t}\n\tthis.setActive( false );\n\treturn false;\n};\n\n/**\n * Handle the toolbar state being updated.\n *\n * @inheritdoc\n */\nOO.ui.PopupTool.prototype.onUpdateState = function () {\n\tthis.setActive( false );\n};\n","/**\n * A ToolGroupTool is a special sort of tool that can contain other {@link OO.ui.Tool tools}\n * and {@link OO.ui.ToolGroup toolgroups}. The ToolGroupTool was specifically designed to be used\n * inside a {@link OO.ui.BarToolGroup bar} toolgroup to provide access to additional tools from\n * the bar item. Included tools will be displayed in a dropdown {@link OO.ui.ListToolGroup list}\n * when the ToolGroupTool is selected.\n *\n *     // Example: ToolGroupTool with two nested tools, 'setting1' and 'setting2', defined elsewhere.\n *\n *     function SettingsTool() {\n *         SettingsTool.parent.apply( this, arguments );\n *     };\n *     OO.inheritClass( SettingsTool, OO.ui.ToolGroupTool );\n *     SettingsTool.static.name = 'settings';\n *     SettingsTool.static.title = 'Change settings';\n *     SettingsTool.static.groupConfig = {\n *         icon: 'settings',\n *         label: 'ToolGroupTool',\n *         include: [  'setting1', 'setting2'  ]\n *     };\n *     toolFactory.register( SettingsTool );\n *\n * For more information, please see the [OOjs UI documentation on MediaWiki][1].\n *\n * Please note that this implementation is subject to change per [T74159] [2].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Toolbars#ToolGroupTool\n * [2]: https://phabricator.wikimedia.org/T74159\n *\n * @abstract\n * @class\n * @extends OO.ui.Tool\n *\n * @constructor\n * @param {OO.ui.ToolGroup} toolGroup\n * @param {Object} [config] Configuration options\n */\nOO.ui.ToolGroupTool = function OoUiToolGroupTool( toolGroup, config ) {\n\t// Allow passing positional parameters inside the config object\n\tif ( OO.isPlainObject( toolGroup ) && config === undefined ) {\n\t\tconfig = toolGroup;\n\t\ttoolGroup = config.toolGroup;\n\t}\n\n\t// Parent constructor\n\tOO.ui.ToolGroupTool.parent.call( this, toolGroup, config );\n\n\t// Properties\n\tthis.innerToolGroup = this.createGroup( this.constructor.static.groupConfig );\n\n\t// Events\n\tthis.innerToolGroup.connect( this, { disable: 'onToolGroupDisable' } );\n\n\t// Initialization\n\tthis.$link.remove();\n\tthis.$element\n\t\t.addClass( 'oo-ui-toolGroupTool' )\n\t\t.append( this.innerToolGroup.$element );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ToolGroupTool, OO.ui.Tool );\n\n/* Static Properties */\n\n/**\n * Toolgroup configuration.\n *\n * The toolgroup configuration consists of the tools to include, as well as an icon and label\n * to use for the bar item. Tools can be included by symbolic name, group, or with the\n * wildcard selector. Please see {@link OO.ui.ToolGroup toolgroup} for more information.\n *\n * @property {Object.<string,Array>}\n */\nOO.ui.ToolGroupTool.static.groupConfig = {};\n\n/* Methods */\n\n/**\n * Handle the tool being selected.\n *\n * @inheritdoc\n */\nOO.ui.ToolGroupTool.prototype.onSelect = function () {\n\tthis.innerToolGroup.setActive( !this.innerToolGroup.active );\n\treturn false;\n};\n\n/**\n * Synchronize disabledness state of the tool with the inner toolgroup.\n *\n * @private\n * @param {boolean} disabled Element is disabled\n */\nOO.ui.ToolGroupTool.prototype.onToolGroupDisable = function ( disabled ) {\n\tthis.setDisabled( disabled );\n};\n\n/**\n * Handle the toolbar state being updated.\n *\n * @inheritdoc\n */\nOO.ui.ToolGroupTool.prototype.onUpdateState = function () {\n\tthis.setActive( false );\n};\n\n/**\n * Build a {@link OO.ui.ToolGroup toolgroup} from the specified configuration.\n *\n * @param {Object.<string,Array>} group Toolgroup configuration. Please see {@link OO.ui.ToolGroup toolgroup} for\n *  more information.\n * @return {OO.ui.ListToolGroup}\n */\nOO.ui.ToolGroupTool.prototype.createGroup = function ( group ) {\n\tif ( group.include === '*' ) {\n\t\t// Apply defaults to catch-all groups\n\t\tif ( group.label === undefined ) {\n\t\t\tgroup.label = OO.ui.msg( 'ooui-toolbar-more' );\n\t\t}\n\t}\n\n\treturn this.toolbar.getToolGroupFactory().create( 'list', this.toolbar, group );\n};\n","/**\n * BarToolGroups are one of three types of {@link OO.ui.ToolGroup toolgroups} that are used to\n * create {@link OO.ui.Toolbar toolbars} (the other types of groups are {@link OO.ui.MenuToolGroup MenuToolGroup}\n * and {@link OO.ui.ListToolGroup ListToolGroup}). The {@link OO.ui.Tool tools} in a BarToolGroup are\n * displayed by icon in a single row. The title of the tool is displayed when users move the mouse over\n * the tool.\n *\n * BarToolGroups are created by a {@link OO.ui.ToolGroupFactory tool group factory} when the toolbar is\n * set up.\n *\n *     @example\n *     // Example of a BarToolGroup with two tools\n *     var toolFactory = new OO.ui.ToolFactory();\n *     var toolGroupFactory = new OO.ui.ToolGroupFactory();\n *     var toolbar = new OO.ui.Toolbar( toolFactory, toolGroupFactory );\n *\n *     // We will be placing status text in this element when tools are used\n *     var $area = $( '<p>' ).text( 'Example of a BarToolGroup with two tools.' );\n *\n *     // Define the tools that we're going to place in our toolbar\n *\n *     // Create a class inheriting from OO.ui.Tool\n *     function SearchTool() {\n *         SearchTool.parent.apply( this, arguments );\n *     }\n *     OO.inheritClass( SearchTool, OO.ui.Tool );\n *     // Each tool must have a 'name' (used as an internal identifier, see later) and at least one\n *     // of 'icon' and 'title' (displayed icon and text).\n *     SearchTool.static.name = 'search';\n *     SearchTool.static.icon = 'search';\n *     SearchTool.static.title = 'Search...';\n *     // Defines the action that will happen when this tool is selected (clicked).\n *     SearchTool.prototype.onSelect = function () {\n *         $area.text( 'Search tool clicked!' );\n *         // Never display this tool as \"active\" (selected).\n *         this.setActive( false );\n *     };\n *     SearchTool.prototype.onUpdateState = function () {};\n *     // Make this tool available in our toolFactory and thus our toolbar\n *     toolFactory.register( SearchTool );\n *\n *     // This is a PopupTool. Rather than having a custom 'onSelect' action, it will display a\n *     // little popup window (a PopupWidget).\n *     function HelpTool( toolGroup, config ) {\n *         OO.ui.PopupTool.call( this, toolGroup, $.extend( { popup: {\n *             padded: true,\n *             label: 'Help',\n *             head: true\n *         } }, config ) );\n *         this.popup.$body.append( '<p>I am helpful!</p>' );\n *     }\n *     OO.inheritClass( HelpTool, OO.ui.PopupTool );\n *     HelpTool.static.name = 'help';\n *     HelpTool.static.icon = 'help';\n *     HelpTool.static.title = 'Help';\n *     toolFactory.register( HelpTool );\n *\n *     // Finally define which tools and in what order appear in the toolbar. Each tool may only be\n *     // used once (but not all defined tools must be used).\n *     toolbar.setup( [\n *         {\n *             // 'bar' tool groups display tools by icon only\n *             type: 'bar',\n *             include: [ 'search', 'help' ]\n *         }\n *     ] );\n *\n *     // Create some UI around the toolbar and place it in the document\n *     var frame = new OO.ui.PanelLayout( {\n *         expanded: false,\n *         framed: true\n *     } );\n *     var contentFrame = new OO.ui.PanelLayout( {\n *         expanded: false,\n *         padded: true\n *     } );\n *     frame.$element.append(\n *         toolbar.$element,\n *         contentFrame.$element.append( $area )\n *     );\n *     $( 'body' ).append( frame.$element );\n *\n *     // Here is where the toolbar is actually built. This must be done after inserting it into the\n *     // document.\n *     toolbar.initialize();\n *\n * For more information about how to add tools to a bar tool group, please see {@link OO.ui.ToolGroup toolgroup}.\n * For more information about toolbars in general, please see the [OOjs UI documentation on MediaWiki][1].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Toolbars\n *\n * @class\n * @extends OO.ui.ToolGroup\n *\n * @constructor\n * @param {OO.ui.Toolbar} toolbar\n * @param {Object} [config] Configuration options\n */\nOO.ui.BarToolGroup = function OoUiBarToolGroup( toolbar, config ) {\n\t// Allow passing positional parameters inside the config object\n\tif ( OO.isPlainObject( toolbar ) && config === undefined ) {\n\t\tconfig = toolbar;\n\t\ttoolbar = config.toolbar;\n\t}\n\n\t// Parent constructor\n\tOO.ui.BarToolGroup.parent.call( this, toolbar, config );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-barToolGroup' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.BarToolGroup, OO.ui.ToolGroup );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.BarToolGroup.static.titleTooltips = true;\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.BarToolGroup.static.accelTooltips = true;\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.BarToolGroup.static.name = 'bar';\n","/**\n * PopupToolGroup is an abstract base class used by both {@link OO.ui.MenuToolGroup MenuToolGroup}\n * and {@link OO.ui.ListToolGroup ListToolGroup} to provide a popup--an overlaid menu or list of tools with an\n * optional icon and label. This class can be used for other base classes that also use this functionality.\n *\n * @abstract\n * @class\n * @extends OO.ui.ToolGroup\n * @mixins OO.ui.mixin.IconElement\n * @mixins OO.ui.mixin.IndicatorElement\n * @mixins OO.ui.mixin.LabelElement\n * @mixins OO.ui.mixin.TitledElement\n * @mixins OO.ui.mixin.FlaggedElement\n * @mixins OO.ui.mixin.ClippableElement\n * @mixins OO.ui.mixin.TabIndexedElement\n *\n * @constructor\n * @param {OO.ui.Toolbar} toolbar\n * @param {Object} [config] Configuration options\n * @cfg {string} [header] Text to display at the top of the popup\n */\nOO.ui.PopupToolGroup = function OoUiPopupToolGroup( toolbar, config ) {\n\t// Allow passing positional parameters inside the config object\n\tif ( OO.isPlainObject( toolbar ) && config === undefined ) {\n\t\tconfig = toolbar;\n\t\ttoolbar = config.toolbar;\n\t}\n\n\t// Configuration initialization\n\tconfig = $.extend( {\n\t\tindicator: config.indicator === undefined ? ( toolbar.position === 'bottom' ? 'up' : 'down' ) : config.indicator\n\t}, config );\n\n\t// Parent constructor\n\tOO.ui.PopupToolGroup.parent.call( this, toolbar, config );\n\n\t// Properties\n\tthis.active = false;\n\tthis.dragging = false;\n\tthis.onBlurHandler = this.onBlur.bind( this );\n\tthis.$handle = $( '<span>' );\n\n\t// Mixin constructors\n\tOO.ui.mixin.IconElement.call( this, config );\n\tOO.ui.mixin.IndicatorElement.call( this, config );\n\tOO.ui.mixin.LabelElement.call( this, config );\n\tOO.ui.mixin.TitledElement.call( this, config );\n\tOO.ui.mixin.FlaggedElement.call( this, config );\n\tOO.ui.mixin.ClippableElement.call( this, $.extend( {}, config, { $clippable: this.$group } ) );\n\tOO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$handle } ) );\n\n\t// Events\n\tthis.$handle.on( {\n\t\tkeydown: this.onHandleMouseKeyDown.bind( this ),\n\t\tkeyup: this.onHandleMouseKeyUp.bind( this ),\n\t\tmousedown: this.onHandleMouseKeyDown.bind( this ),\n\t\tmouseup: this.onHandleMouseKeyUp.bind( this )\n\t} );\n\n\t// Initialization\n\tthis.$handle\n\t\t.addClass( 'oo-ui-popupToolGroup-handle' )\n\t\t.attr( 'role', 'button' )\n\t\t.append( this.$icon, this.$label, this.$indicator );\n\t// If the pop-up should have a header, add it to the top of the toolGroup.\n\t// Note: If this feature is useful for other widgets, we could abstract it into an\n\t// OO.ui.HeaderedElement mixin constructor.\n\tif ( config.header !== undefined ) {\n\t\tthis.$group\n\t\t\t.prepend( $( '<span>' )\n\t\t\t\t.addClass( 'oo-ui-popupToolGroup-header' )\n\t\t\t\t.text( config.header )\n\t\t\t);\n\t}\n\tthis.$element\n\t\t.addClass( 'oo-ui-popupToolGroup' )\n\t\t.prepend( this.$handle );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.PopupToolGroup, OO.ui.ToolGroup );\nOO.mixinClass( OO.ui.PopupToolGroup, OO.ui.mixin.IconElement );\nOO.mixinClass( OO.ui.PopupToolGroup, OO.ui.mixin.IndicatorElement );\nOO.mixinClass( OO.ui.PopupToolGroup, OO.ui.mixin.LabelElement );\nOO.mixinClass( OO.ui.PopupToolGroup, OO.ui.mixin.TitledElement );\nOO.mixinClass( OO.ui.PopupToolGroup, OO.ui.mixin.FlaggedElement );\nOO.mixinClass( OO.ui.PopupToolGroup, OO.ui.mixin.ClippableElement );\nOO.mixinClass( OO.ui.PopupToolGroup, OO.ui.mixin.TabIndexedElement );\n\n/* Methods */\n\n/**\n * @inheritdoc\n */\nOO.ui.PopupToolGroup.prototype.setDisabled = function () {\n\t// Parent method\n\tOO.ui.PopupToolGroup.parent.prototype.setDisabled.apply( this, arguments );\n\n\tif ( this.isDisabled() && this.isElementAttached() ) {\n\t\tthis.setActive( false );\n\t}\n};\n\n/**\n * Handle focus being lost.\n *\n * The event is actually generated from a mouseup/keyup, so it is not a normal blur event object.\n *\n * @protected\n * @param {MouseEvent|KeyboardEvent} e Mouse up or key up event\n */\nOO.ui.PopupToolGroup.prototype.onBlur = function ( e ) {\n\t// Only deactivate when clicking outside the dropdown element\n\tif ( $( e.target ).closest( '.oo-ui-popupToolGroup' )[ 0 ] !== this.$element[ 0 ] ) {\n\t\tthis.setActive( false );\n\t}\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.PopupToolGroup.prototype.onMouseKeyUp = function ( e ) {\n\t// Only close toolgroup when a tool was actually selected\n\tif (\n\t\t!this.isDisabled() && this.pressed && this.pressed === this.getTargetTool( e ) &&\n\t\t( e.which === OO.ui.MouseButtons.LEFT || e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER )\n\t) {\n\t\tthis.setActive( false );\n\t}\n\treturn OO.ui.PopupToolGroup.parent.prototype.onMouseKeyUp.call( this, e );\n};\n\n/**\n * Handle mouse up and key up events.\n *\n * @protected\n * @param {jQuery.Event} e Mouse up or key up event\n */\nOO.ui.PopupToolGroup.prototype.onHandleMouseKeyUp = function ( e ) {\n\tif (\n\t\t!this.isDisabled() &&\n\t\t( e.which === OO.ui.MouseButtons.LEFT || e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER )\n\t) {\n\t\treturn false;\n\t}\n};\n\n/**\n * Handle mouse down and key down events.\n *\n * @protected\n * @param {jQuery.Event} e Mouse down or key down event\n */\nOO.ui.PopupToolGroup.prototype.onHandleMouseKeyDown = function ( e ) {\n\tif (\n\t\t!this.isDisabled() &&\n\t\t( e.which === OO.ui.MouseButtons.LEFT || e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER )\n\t) {\n\t\tthis.setActive( !this.active );\n\t\treturn false;\n\t}\n};\n\n/**\n * Switch into 'active' mode.\n *\n * When active, the popup is visible. A mouseup event anywhere in the document will trigger\n * deactivation.\n *\n * @param {boolean} value The active state to set\n */\nOO.ui.PopupToolGroup.prototype.setActive = function ( value ) {\n\tvar containerWidth, containerLeft;\n\tvalue = !!value;\n\tif ( this.active !== value ) {\n\t\tthis.active = value;\n\t\tif ( value ) {\n\t\t\tthis.getElementDocument().addEventListener( 'mouseup', this.onBlurHandler, true );\n\t\t\tthis.getElementDocument().addEventListener( 'keyup', this.onBlurHandler, true );\n\n\t\t\tthis.$clippable.css( 'left', '' );\n\t\t\t// Try anchoring the popup to the left first\n\t\t\tthis.$element.addClass( 'oo-ui-popupToolGroup-active oo-ui-popupToolGroup-left' );\n\t\t\tthis.toggleClipping( true );\n\t\t\tif ( this.isClippedHorizontally() ) {\n\t\t\t\t// Anchoring to the left caused the popup to clip, so anchor it to the right instead\n\t\t\t\tthis.toggleClipping( false );\n\t\t\t\tthis.$element\n\t\t\t\t\t.removeClass( 'oo-ui-popupToolGroup-left' )\n\t\t\t\t\t.addClass( 'oo-ui-popupToolGroup-right' );\n\t\t\t\tthis.toggleClipping( true );\n\t\t\t}\n\t\t\tif ( this.isClippedHorizontally() ) {\n\t\t\t\t// Anchoring to the right also caused the popup to clip, so just make it fill the container\n\t\t\t\tcontainerWidth = this.$clippableScrollableContainer.width();\n\t\t\t\tcontainerLeft = this.$clippableScrollableContainer.offset().left;\n\n\t\t\t\tthis.toggleClipping( false );\n\t\t\t\tthis.$element.removeClass( 'oo-ui-popupToolGroup-right' );\n\n\t\t\t\tthis.$clippable.css( {\n\t\t\t\t\tleft: -( this.$element.offset().left - containerLeft ),\n\t\t\t\t\twidth: containerWidth\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\t\t\tthis.getElementDocument().removeEventListener( 'mouseup', this.onBlurHandler, true );\n\t\t\tthis.getElementDocument().removeEventListener( 'keyup', this.onBlurHandler, true );\n\t\t\tthis.$element.removeClass(\n\t\t\t\t'oo-ui-popupToolGroup-active oo-ui-popupToolGroup-left  oo-ui-popupToolGroup-right'\n\t\t\t);\n\t\t\tthis.toggleClipping( false );\n\t\t}\n\t}\n};\n","/**\n * ListToolGroups are one of three types of {@link OO.ui.ToolGroup toolgroups} that are used to\n * create {@link OO.ui.Toolbar toolbars} (the other types of groups are {@link OO.ui.MenuToolGroup MenuToolGroup}\n * and {@link OO.ui.BarToolGroup BarToolGroup}). The {@link OO.ui.Tool tools} in a ListToolGroup are displayed\n * by label in a dropdown menu. The title of the tool is used as the label text. The menu itself can be configured\n * with a label, icon, indicator, header, and title.\n *\n * ListToolGroups can be configured to be expanded and collapsed. Collapsed lists will have a ‘More’ option that\n * users can select to see the full list of tools. If a collapsed toolgroup is expanded, a ‘Fewer’ option permits\n * users to collapse the list again.\n *\n * ListToolGroups are created by a {@link OO.ui.ToolGroupFactory toolgroup factory} when the toolbar is set up. The factory\n * requires the ListToolGroup's symbolic name, 'list', which is specified along with the other configurations. For more\n * information about how to add tools to a ListToolGroup, please see {@link OO.ui.ToolGroup toolgroup}.\n *\n *     @example\n *     // Example of a ListToolGroup\n *     var toolFactory = new OO.ui.ToolFactory();\n *     var toolGroupFactory = new OO.ui.ToolGroupFactory();\n *     var toolbar = new OO.ui.Toolbar( toolFactory, toolGroupFactory );\n *\n *     // Configure and register two tools\n *     function SettingsTool() {\n *         SettingsTool.parent.apply( this, arguments );\n *     }\n *     OO.inheritClass( SettingsTool, OO.ui.Tool );\n *     SettingsTool.static.name = 'settings';\n *     SettingsTool.static.icon = 'settings';\n *     SettingsTool.static.title = 'Change settings';\n *     SettingsTool.prototype.onSelect = function () {\n *         this.setActive( false );\n *     };\n *     SettingsTool.prototype.onUpdateState = function () {};\n *     toolFactory.register( SettingsTool );\n *     // Register two more tools, nothing interesting here\n *     function StuffTool() {\n *         StuffTool.parent.apply( this, arguments );\n *     }\n *     OO.inheritClass( StuffTool, OO.ui.Tool );\n *     StuffTool.static.name = 'stuff';\n *     StuffTool.static.icon = 'search';\n *     StuffTool.static.title = 'Change the world';\n *     StuffTool.prototype.onSelect = function () {\n *         this.setActive( false );\n *     };\n *     StuffTool.prototype.onUpdateState = function () {};\n *     toolFactory.register( StuffTool );\n *     toolbar.setup( [\n *         {\n *             // Configurations for list toolgroup.\n *             type: 'list',\n *             label: 'ListToolGroup',\n *             icon: 'ellipsis',\n *             title: 'This is the title, displayed when user moves the mouse over the list toolgroup',\n *             header: 'This is the header',\n *             include: [ 'settings', 'stuff' ],\n *             allowCollapse: ['stuff']\n *         }\n *     ] );\n *\n *     // Create some UI around the toolbar and place it in the document\n *     var frame = new OO.ui.PanelLayout( {\n *         expanded: false,\n *         framed: true\n *     } );\n *     frame.$element.append(\n *         toolbar.$element\n *     );\n *     $( 'body' ).append( frame.$element );\n *     // Build the toolbar. This must be done after the toolbar has been appended to the document.\n *     toolbar.initialize();\n *\n * For more information about toolbars in general, please see the [OOjs UI documentation on MediaWiki][1].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Toolbars\n *\n * @class\n * @extends OO.ui.PopupToolGroup\n *\n * @constructor\n * @param {OO.ui.Toolbar} toolbar\n * @param {Object} [config] Configuration options\n * @cfg {Array} [allowCollapse] Allow the specified tools to be collapsed. By default, collapsible tools\n *  will only be displayed if users click the ‘More’ option displayed at the bottom of the list. If\n *  the list is expanded, a ‘Fewer’ option permits users to collapse the list again. Any tools that\n *  are included in the toolgroup, but are not designated as collapsible, will always be displayed.\n *  To open a collapsible list in its expanded state, set #expanded to 'true'.\n * @cfg {Array} [forceExpand] Expand the specified tools. All other tools will be designated as collapsible.\n *  Unless #expanded is set to true, the collapsible tools will be collapsed when the list is first opened.\n * @cfg {boolean} [expanded=false] Expand collapsible tools. This config is only relevant if tools have\n *  been designated as collapsible. When expanded is set to true, all tools in the group will be displayed\n *  when the list is first opened. Users can collapse the list with a ‘Fewer’ option at the bottom.\n */\nOO.ui.ListToolGroup = function OoUiListToolGroup( toolbar, config ) {\n\t// Allow passing positional parameters inside the config object\n\tif ( OO.isPlainObject( toolbar ) && config === undefined ) {\n\t\tconfig = toolbar;\n\t\ttoolbar = config.toolbar;\n\t}\n\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties (must be set before parent constructor, which calls #populate)\n\tthis.allowCollapse = config.allowCollapse;\n\tthis.forceExpand = config.forceExpand;\n\tthis.expanded = config.expanded !== undefined ? config.expanded : false;\n\tthis.collapsibleTools = [];\n\n\t// Parent constructor\n\tOO.ui.ListToolGroup.parent.call( this, toolbar, config );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-listToolGroup' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ListToolGroup, OO.ui.PopupToolGroup );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.ListToolGroup.static.name = 'list';\n\n/* Methods */\n\n/**\n * @inheritdoc\n */\nOO.ui.ListToolGroup.prototype.populate = function () {\n\tvar i, len, allowCollapse = [];\n\n\tOO.ui.ListToolGroup.parent.prototype.populate.call( this );\n\n\t// Update the list of collapsible tools\n\tif ( this.allowCollapse !== undefined ) {\n\t\tallowCollapse = this.allowCollapse;\n\t} else if ( this.forceExpand !== undefined ) {\n\t\tallowCollapse = OO.simpleArrayDifference( Object.keys( this.tools ), this.forceExpand );\n\t}\n\n\tthis.collapsibleTools = [];\n\tfor ( i = 0, len = allowCollapse.length; i < len; i++ ) {\n\t\tif ( this.tools[ allowCollapse[ i ] ] !== undefined ) {\n\t\t\tthis.collapsibleTools.push( this.tools[ allowCollapse[ i ] ] );\n\t\t}\n\t}\n\n\t// Keep at the end, even when tools are added\n\tthis.$group.append( this.getExpandCollapseTool().$element );\n\n\tthis.getExpandCollapseTool().toggle( this.collapsibleTools.length !== 0 );\n\tthis.updateCollapsibleState();\n};\n\n/**\n * Get the expand/collapse tool for this group\n *\n * @return {OO.ui.Tool} Expand collapse tool\n */\nOO.ui.ListToolGroup.prototype.getExpandCollapseTool = function () {\n\tvar ExpandCollapseTool;\n\tif ( this.expandCollapseTool === undefined ) {\n\t\tExpandCollapseTool = function () {\n\t\t\tExpandCollapseTool.parent.apply( this, arguments );\n\t\t};\n\n\t\tOO.inheritClass( ExpandCollapseTool, OO.ui.Tool );\n\n\t\tExpandCollapseTool.prototype.onSelect = function () {\n\t\t\tthis.toolGroup.expanded = !this.toolGroup.expanded;\n\t\t\tthis.toolGroup.updateCollapsibleState();\n\t\t\tthis.setActive( false );\n\t\t};\n\t\tExpandCollapseTool.prototype.onUpdateState = function () {\n\t\t\t// Do nothing. Tool interface requires an implementation of this function.\n\t\t};\n\n\t\tExpandCollapseTool.static.name = 'more-fewer';\n\n\t\tthis.expandCollapseTool = new ExpandCollapseTool( this );\n\t}\n\treturn this.expandCollapseTool;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.ListToolGroup.prototype.onMouseKeyUp = function ( e ) {\n\t// Do not close the popup when the user wants to show more/fewer tools\n\tif (\n\t\t$( e.target ).closest( '.oo-ui-tool-name-more-fewer' ).length &&\n\t\t( e.which === OO.ui.MouseButtons.LEFT || e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER )\n\t) {\n\t\t// HACK: Prevent the popup list from being hidden. Skip the PopupToolGroup implementation (which\n\t\t// hides the popup list when a tool is selected) and call ToolGroup's implementation directly.\n\t\treturn OO.ui.ListToolGroup.parent.parent.prototype.onMouseKeyUp.call( this, e );\n\t} else {\n\t\treturn OO.ui.ListToolGroup.parent.prototype.onMouseKeyUp.call( this, e );\n\t}\n};\n\nOO.ui.ListToolGroup.prototype.updateCollapsibleState = function () {\n\tvar i, len;\n\n\tthis.getExpandCollapseTool()\n\t\t.setIcon( this.expanded ? 'collapse' : 'expand' )\n\t\t.setTitle( OO.ui.msg( this.expanded ? 'ooui-toolgroup-collapse' : 'ooui-toolgroup-expand' ) );\n\n\tfor ( i = 0, len = this.collapsibleTools.length; i < len; i++ ) {\n\t\tthis.collapsibleTools[ i ].toggle( this.expanded );\n\t}\n\n\t// Re-evaluate clipping, because our height has changed\n\tthis.clip();\n};\n","/**\n * MenuToolGroups are one of three types of {@link OO.ui.ToolGroup toolgroups} that are used to\n * create {@link OO.ui.Toolbar toolbars} (the other types of groups are {@link OO.ui.BarToolGroup BarToolGroup}\n * and {@link OO.ui.ListToolGroup ListToolGroup}). MenuToolGroups contain selectable {@link OO.ui.Tool tools},\n * which are displayed by label in a dropdown menu. The tool's title is used as the label text, and the\n * menu label is updated to reflect which tool or tools are currently selected. If no tools are selected,\n * the menu label is empty. The menu can be configured with an indicator, icon, title, and/or header.\n *\n * MenuToolGroups are created by a {@link OO.ui.ToolGroupFactory tool group factory} when the toolbar\n * is set up.\n *\n *     @example\n *     // Example of a MenuToolGroup\n *     var toolFactory = new OO.ui.ToolFactory();\n *     var toolGroupFactory = new OO.ui.ToolGroupFactory();\n *     var toolbar = new OO.ui.Toolbar( toolFactory, toolGroupFactory );\n *\n *     // We will be placing status text in this element when tools are used\n *     var $area = $( '<p>' ).text( 'An example of a MenuToolGroup. Select a tool from the dropdown menu.' );\n *\n *     // Define the tools that we're going to place in our toolbar\n *\n *     function SettingsTool() {\n *         SettingsTool.parent.apply( this, arguments );\n *         this.reallyActive = false;\n *     }\n *     OO.inheritClass( SettingsTool, OO.ui.Tool );\n *     SettingsTool.static.name = 'settings';\n *     SettingsTool.static.icon = 'settings';\n *     SettingsTool.static.title = 'Change settings';\n *     SettingsTool.prototype.onSelect = function () {\n *         $area.text( 'Settings tool clicked!' );\n *         // Toggle the active state on each click\n *         this.reallyActive = !this.reallyActive;\n *         this.setActive( this.reallyActive );\n *         // To update the menu label\n *         this.toolbar.emit( 'updateState' );\n *     };\n *     SettingsTool.prototype.onUpdateState = function () {};\n *     toolFactory.register( SettingsTool );\n *\n *     function StuffTool() {\n *         StuffTool.parent.apply( this, arguments );\n *         this.reallyActive = false;\n *     }\n *     OO.inheritClass( StuffTool, OO.ui.Tool );\n *     StuffTool.static.name = 'stuff';\n *     StuffTool.static.icon = 'ellipsis';\n *     StuffTool.static.title = 'More stuff';\n *     StuffTool.prototype.onSelect = function () {\n *         $area.text( 'More stuff tool clicked!' );\n *         // Toggle the active state on each click\n *         this.reallyActive = !this.reallyActive;\n *         this.setActive( this.reallyActive );\n *         // To update the menu label\n *         this.toolbar.emit( 'updateState' );\n *     };\n *     StuffTool.prototype.onUpdateState = function () {};\n *     toolFactory.register( StuffTool );\n *\n *     // Finally define which tools and in what order appear in the toolbar. Each tool may only be\n *     // used once (but not all defined tools must be used).\n *     toolbar.setup( [\n *         {\n *             type: 'menu',\n *             header: 'This is the (optional) header',\n *             title: 'This is the (optional) title',\n *             include: [ 'settings', 'stuff' ]\n *         }\n *     ] );\n *\n *     // Create some UI around the toolbar and place it in the document\n *     var frame = new OO.ui.PanelLayout( {\n *         expanded: false,\n *         framed: true\n *     } );\n *     var contentFrame = new OO.ui.PanelLayout( {\n *         expanded: false,\n *         padded: true\n *     } );\n *     frame.$element.append(\n *         toolbar.$element,\n *         contentFrame.$element.append( $area )\n *     );\n *     $( 'body' ).append( frame.$element );\n *\n *     // Here is where the toolbar is actually built. This must be done after inserting it into the\n *     // document.\n *     toolbar.initialize();\n *     toolbar.emit( 'updateState' );\n *\n * For more information about how to add tools to a MenuToolGroup, please see {@link OO.ui.ToolGroup toolgroup}.\n * For more information about toolbars in general, please see the [OOjs UI documentation on MediaWiki] [1].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Toolbars\n *\n * @class\n * @extends OO.ui.PopupToolGroup\n *\n * @constructor\n * @param {OO.ui.Toolbar} toolbar\n * @param {Object} [config] Configuration options\n */\nOO.ui.MenuToolGroup = function OoUiMenuToolGroup( toolbar, config ) {\n\t// Allow passing positional parameters inside the config object\n\tif ( OO.isPlainObject( toolbar ) && config === undefined ) {\n\t\tconfig = toolbar;\n\t\ttoolbar = config.toolbar;\n\t}\n\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.MenuToolGroup.parent.call( this, toolbar, config );\n\n\t// Events\n\tthis.toolbar.connect( this, { updateState: 'onUpdateState' } );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-menuToolGroup' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.MenuToolGroup, OO.ui.PopupToolGroup );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.MenuToolGroup.static.name = 'menu';\n\n/* Methods */\n\n/**\n * Handle the toolbar state being updated.\n *\n * When the state changes, the title of each active item in the menu will be joined together and\n * used as a label for the group. The label will be empty if none of the items are active.\n *\n * @private\n */\nOO.ui.MenuToolGroup.prototype.onUpdateState = function () {\n\tvar name,\n\t\tlabelTexts = [];\n\n\tfor ( name in this.tools ) {\n\t\tif ( this.tools[ name ].isActive() ) {\n\t\t\tlabelTexts.push( this.tools[ name ].getTitle() );\n\t\t}\n\t}\n\n\tthis.setLabel( labelTexts.join( ', ' ) || ' ' );\n};\n","}( OO ) );\n"]}
\ No newline at end of file
index 0d51782..ede4a70 100644 (file)
@@ -1,25 +1,25 @@
 /*!
- * OOjs UI v0.21.0
+ * OOjs UI v0.22.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-11T22:51:10Z
+ * Date: 2017-05-31T19:07:44Z
  */
 .oo-ui-draggableElement-handle:not( .oo-ui-draggableElement-undraggable ).oo-ui-widget {
   cursor: move;
   cursor: url(images/grab.cur );
   cursor: -webkit-grab;
-  cursor:    -moz-grab;
-  cursor:         grab;
+  cursor: -moz-grab;
+  cursor: grab;
 }
 .oo-ui-draggableElement-handle:not( .oo-ui-draggableElement-undraggable ):active {
   cursor: url(images/grabbing.cur );
   cursor: -webkit-grabbing;
-  cursor:    -moz-grabbing;
-  cursor:         grabbing;
+  cursor: -moz-grabbing;
+  cursor: grabbing;
 }
 .oo-ui-draggableElement-handle.oo-ui-widget-disabled,
 .oo-ui-widget-disabled .oo-ui-draggableElement-handle {
@@ -37,8 +37,8 @@
 .oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout {
   width: 100%;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
 }
 .oo-ui-bookletLayout-outlinePanel-editable > .oo-ui-outlineSelectWidget {
   position: absolute;
@@ -83,8 +83,8 @@
 .oo-ui-menuLayout-content {
   position: absolute;
   -webkit-transition: all 200ms ease;
-     -moz-transition: all 200ms ease;
-          transition: all 200ms ease;
+  -moz-transition: all 200ms ease;
+  transition: all 200ms ease;
 }
 .oo-ui-menuLayout-menu {
   height: 18em;
   vertical-align: middle;
   overflow: hidden;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
   -webkit-transform: translateZ(0);
-          transform: translateZ(0);
+  transform: translateZ(0);
   height: 2em;
   width: 4em;
   border-radius: 1em;
   background-color: #eeeeee;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #ddd), color-stop(100%, #fff));
   background-image: -webkit-linear-gradient(top, #ddd 0, #fff 100%);
-  background-image:    -moz-linear-gradient(top, #ddd 0, #fff 100%);
-  background-image:         linear-gradient(to bottom, #ddd 0, #fff 100%);
+  background-image: -moz-linear-gradient(top, #ddd 0, #fff 100%);
+  background-image: linear-gradient(to bottom, #ddd 0, #fff 100%);
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffdddddd', endColorstr='#ffffffff' )";
 }
 .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled {
   position: absolute;
   display: block;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
 }
 .oo-ui-toggleSwitchWidget:last-child {
   margin-right: 0;
   box-shadow: 0 0.1em 0.25em rgba(0, 0, 0, 0.1);
   border: 1px #c9c9c9 solid;
   -webkit-transition: left 250ms ease, margin-left 250ms ease;
-     -moz-transition: left 250ms ease, margin-left 250ms ease;
-          transition: left 250ms ease, margin-left 250ms ease;
+  -moz-transition: left 250ms ease, margin-left 250ms ease;
+  transition: left 250ms ease, margin-left 250ms ease;
   background-color: #eeeeee;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #fff), color-stop(100%, #ddd));
   background-image: -webkit-linear-gradient(top, #fff 0, #ddd 100%);
-  background-image:    -moz-linear-gradient(top, #fff 0, #ddd 100%);
-  background-image:         linear-gradient(to bottom, #fff 0, #ddd 100%);
+  background-image: -moz-linear-gradient(top, #fff 0, #ddd 100%);
+  background-image: linear-gradient(to bottom, #fff 0, #ddd 100%);
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffffff', endColorstr='#ffdddddd' )";
 }
 .oo-ui-toggleSwitchWidget-glow {
   border-radius: 1em;
   box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
   -webkit-transition: opacity 250ms ease;
-     -moz-transition: opacity 250ms ease;
-          transition: opacity 250ms ease;
+  -moz-transition: opacity 250ms ease;
+  transition: opacity 250ms ease;
   background-color: #cde7f4;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #b0d9ee), color-stop(100%, #eaf4fa));
   background-image: -webkit-linear-gradient(top, #b0d9ee 0, #eaf4fa 100%);
-  background-image:    -moz-linear-gradient(top, #b0d9ee 0, #eaf4fa 100%);
-  background-image:         linear-gradient(to bottom, #b0d9ee 0, #eaf4fa 100%);
+  background-image: -moz-linear-gradient(top, #b0d9ee 0, #eaf4fa 100%);
+  background-image: linear-gradient(to bottom, #b0d9ee 0, #eaf4fa 100%);
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffb0d9ee', endColorstr='#ffeaf4fa' )";
   -webkit-touch-callout: none;
   -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
 }
 .oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
   opacity: 0;
   position: relative;
   overflow: hidden;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
 }
 .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator,
 .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
   cursor: default;
   -webkit-touch-callout: none;
   -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
 }
 .oo-ui-selectFileWidget-label {
   position: absolute;
 .oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget {
   -webkit-touch-callout: none;
   -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
 }
 .oo-ui-selectFileWidget-empty.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget,
 .oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget,
 }
 .oo-ui-selectFileWidget-label {
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
   left: 0.5em;
   right: 2.175em;
   line-height: 2.3em;
 .oo-ui-outlineOptionWidget {
   -webkit-touch-callout: none;
   -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
   font-size: 1.1em;
   padding: 0.75em;
 }
 .oo-ui-outlineControlsWidget-movers {
   float: left;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
 }
 .oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
   float: left;
 }
 .oo-ui-tabOptionWidget {
   display: inline-block;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
   vertical-align: bottom;
-  padding: 0.5em 1em;
   margin: 0.5em 0 0 0.75em;
-  border: 1px solid transparent;
-  border-bottom: 0;
+  border-color: transparent;
+  border-style: solid;
+  border-width: 1px 1px 0 1px;
   border-top-left-radius: 0.5em;
   border-top-right-radius: 0.5em;
+  padding: 0.5em 1em;
 }
-.oo-ui-tabOptionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
-  padding-right: 1.5em;
-}
-.oo-ui-tabOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  opacity: 0.5;
-}
-.oo-ui-selectWidget-pressed .oo-ui-tabOptionWidget.oo-ui-optionWidget-pressed {
-  background-color: transparent;
+.oo-ui-tabOptionWidget.oo-ui-optionWidget-selected {
+  background-color: #fff;
+  border-color: #ddd;
 }
 .oo-ui-tabOptionWidget.oo-ui-widget-enabled:hover {
   background-color: rgba(255, 255, 255, 0.2);
   background-color: #fff;
   border-color: #ddd;
 }
-.oo-ui-selectWidget-pressed .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected,
-.oo-ui-selectWidget-depressed .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected,
-.oo-ui-tabOptionWidget.oo-ui-optionWidget-selected:hover {
+.oo-ui-tabOptionWidget.oo-ui-widget-enabled.oo-ui-optionWidget-selected:hover {
   background-color: #fff;
-  border-color: #ddd;
 }
 .oo-ui-tagMultiselectWidget {
   display: inline-block;
 .oo-ui-tagMultiselectWidget-content {
   position: relative;
 }
-.oo-ui-tagMultiselectWidget.oo-ui-widget-disabled .oo-ui-tagMultiselectWidget-content > input {
-  display: none;
-}
 .oo-ui-tagMultiselectWidget-group {
   display: inline;
 }
-.oo-ui-tagMultiselectWidget-inputPosition-outline {
+.oo-ui-tagMultiselectWidget-outlined {
   width: 100%;
 }
+.oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-inlined .oo-ui-tagMultiselectWidget-handle {
+  cursor: text;
+}
+.oo-ui-tagMultiselectWidget.oo-ui-widget-disabled .oo-ui-tagMultiselectWidget-content > input {
+  display: none;
+}
 .oo-ui-tagMultiselectWidget-focusTrap {
   display: inline-block;
   height: 1px;
   border: 1px solid rgba(0, 0, 0, 0.1);
   border-radius: 0.25em;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
 }
 .oo-ui-tagMultiselectWidget-handle:last-child {
   margin-right: 0;
   width: auto;
   max-width: 100%;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
   vertical-align: middle;
   padding: 0 0.4em;
   margin: 0.1em;
   background-color: #eeeeee;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #fff), color-stop(100%, #ddd));
   background-image: -webkit-linear-gradient(top, #fff 0, #ddd 100%);
-  background-image:    -moz-linear-gradient(top, #fff 0, #ddd 100%);
-  background-image:         linear-gradient(to bottom, #fff 0, #ddd 100%);
+  background-image: -moz-linear-gradient(top, #fff 0, #ddd 100%);
+  background-image: linear-gradient(to bottom, #fff 0, #ddd 100%);
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffffff', endColorstr='#ffdddddd' )";
   border: 1px solid #ccc;
   color: #333;
 .oo-ui-tagItemWidget.oo-ui-widget-disabled {
   opacity: 0.5;
   -webkit-transform: translateZ(0);
-          transform: translateZ(0);
+  transform: translateZ(0);
   box-shadow: none;
   color: #333;
   background: #eee;
   border: 1px solid rgba(0, 0, 0, 0.1);
   border-radius: 0.25em;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
 }
 .oo-ui-capsuleMultiselectWidget-handle:last-child {
   margin-right: 0;
   width: auto;
   max-width: 100%;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
   vertical-align: middle;
   padding: 0 0.4em;
   margin: 0.1em;
   background-color: #eeeeee;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #fff), color-stop(100%, #ddd));
   background-image: -webkit-linear-gradient(top, #fff 0, #ddd 100%);
-  background-image:    -moz-linear-gradient(top, #fff 0, #ddd 100%);
-  background-image:         linear-gradient(to bottom, #fff 0, #ddd 100%);
+  background-image: -moz-linear-gradient(top, #fff 0, #ddd 100%);
+  background-image: linear-gradient(to bottom, #fff 0, #ddd 100%);
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffffff', endColorstr='#ffdddddd' )";
   border: 1px solid #ccc;
   color: #333;
 .oo-ui-capsuleItemWidget.oo-ui-widget-disabled {
   opacity: 0.5;
   -webkit-transform: translateZ(0);
-          transform: translateZ(0);
+  transform: translateZ(0);
   box-shadow: none;
   color: #333;
   background: #eee;
   max-width: 50em;
 }
 .oo-ui-numberInputWidget-buttoned .oo-ui-buttonWidget,
-.oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget {
+.oo-ui-numberInputWidget-buttoned .oo-ui-inputWidget-input {
   display: table-cell;
   height: 100%;
 }
-.oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget input {
-  height: 100%;
-}
 .oo-ui-numberInputWidget-field {
   display: table;
   table-layout: fixed;
 .oo-ui-numberInputWidget-field > .oo-ui-buttonWidget {
   width: 2.25em;
 }
-.oo-ui-numberInputWidget-minusButton.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
+.oo-ui-numberInputWidget-buttoned .oo-ui-buttonElement-button .oo-ui-iconElement-icon {
+  min-width: 20px;
+  width: 1.5625em;
+}
+.oo-ui-numberInputWidget-buttoned .oo-ui-inputWidget-input {
+  border-radius: 0;
+}
+.oo-ui-numberInputWidget-minusButton > .oo-ui-buttonElement-button {
   border-top-right-radius: 0;
   border-bottom-right-radius: 0;
   border-right-width: 0;
 }
-.oo-ui-numberInputWidget-plusButton.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
+.oo-ui-numberInputWidget-plusButton > .oo-ui-buttonElement-button {
   border-top-left-radius: 0;
   border-bottom-left-radius: 0;
   border-left-width: 0;
 }
-.oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget input {
-  border-radius: 0;
-}
diff --git a/resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css
deleted file mode 100644 (file)
index 25add3d..0000000
+++ /dev/null
@@ -1,1264 +0,0 @@
-/*!
- * OOjs UI v0.21.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2017 OOjs UI Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2017-04-11T22:51:10Z
- */
-.oo-ui-draggableElement {
-  padding: 1.0546875em 0.9375em 0.9375em;
-}
-.oo-ui-draggableElement-handle:not( .oo-ui-draggableElement-undraggable ).oo-ui-widget {
-  cursor: move;
-  cursor: url(images/grab.cur );
-  cursor: -webkit-grab;
-  cursor:    -moz-grab;
-  cursor:         grab;
-}
-.oo-ui-draggableElement-handle:not( .oo-ui-draggableElement-undraggable ):active {
-  cursor: url(images/grabbing.cur );
-  cursor: -webkit-grabbing;
-  cursor:    -moz-grabbing;
-  cursor:         grabbing;
-}
-.oo-ui-draggableElement-handle.oo-ui-widget-disabled,
-.oo-ui-widget-disabled .oo-ui-draggableElement-handle {
-  cursor: default;
-}
-.oo-ui-draggableElement-placeholder {
-  opacity: 0.2;
-}
-.oo-ui-draggableGroupElement-horizontal .oo-ui-draggableElement {
-  display: inline-block;
-}
-.oo-ui-draggableElement-handle.oo-ui-widget-enabled:focus {
-  border-radius: 2px;
-  box-shadow: inset 0 0 0 1px #36c, 0 0 0 1px #36c;
-  outline: 0;
-}
-.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous > .oo-ui-panelLayout-scrollable {
-  overflow: hidden;
-}
-.oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout {
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.oo-ui-bookletLayout-outlinePanel-editable > .oo-ui-outlineSelectWidget {
-  position: absolute;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 3em;
-  overflow: auto;
-}
-.oo-ui-bookletLayout-outlinePanel > .oo-ui-outlineControlsWidget {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  right: 0;
-}
-.oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout {
-  padding: 1.5em;
-}
-.oo-ui-bookletLayout-outlinePanel {
-  border-right: 1px solid #ddd;
-}
-.oo-ui-bookletLayout-outlinePanel > .oo-ui-outlineControlsWidget {
-  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25);
-}
-.oo-ui-indexLayout > .oo-ui-menuLayout-menu {
-  height: 3em;
-}
-.oo-ui-indexLayout > .oo-ui-menuLayout-content {
-  top: 3em;
-}
-.oo-ui-indexLayout-stackLayout > .oo-ui-panelLayout {
-  padding: 1.5em;
-}
-.oo-ui-indexLayout > .oo-ui-menuLayout-menu {
-  height: 2.75em;
-}
-.oo-ui-indexLayout > .oo-ui-menuLayout-content {
-  top: 2.75em;
-}
-.oo-ui-menuLayout {
-  position: absolute;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-}
-.oo-ui-menuLayout-menu,
-.oo-ui-menuLayout-content {
-  position: absolute;
-  -webkit-transition: all 200ms ease;
-     -moz-transition: all 200ms ease;
-          transition: all 200ms ease;
-}
-.oo-ui-menuLayout-menu {
-  height: 18em;
-  width: 18em;
-}
-.oo-ui-menuLayout-content {
-  top: 18em;
-  left: 18em;
-  right: 18em;
-  bottom: 18em;
-}
-.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu > .oo-ui-menuLayout-menu {
-  width: 0 !important;
-  height: 0 !important;
-  overflow: hidden;
-}
-.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu > .oo-ui-menuLayout-content {
-  top: 0 !important;
-  left: 0 !important;
-  right: 0 !important;
-  bottom: 0 !important;
-}
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top > .oo-ui-menuLayout-menu {
-  width: auto !important;
-  left: 0;
-  top: 0;
-  right: 0;
-}
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top > .oo-ui-menuLayout-content {
-  right: 0 !important;
-  bottom: 0 !important;
-  left: 0 !important;
-}
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after > .oo-ui-menuLayout-menu {
-  height: auto !important;
-  top: 0;
-  right: 0;
-  bottom: 0;
-}
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after > .oo-ui-menuLayout-content {
-  bottom: 0 !important;
-  left: 0 !important;
-  top: 0 !important;
-}
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom > .oo-ui-menuLayout-menu {
-  width: auto !important;
-  right: 0;
-  bottom: 0;
-  left: 0;
-}
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom > .oo-ui-menuLayout-content {
-  left: 0 !important;
-  top: 0 !important;
-  right: 0 !important;
-}
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before > .oo-ui-menuLayout-menu {
-  height: auto !important;
-  bottom: 0;
-  left: 0;
-  top: 0;
-}
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before > .oo-ui-menuLayout-content {
-  top: 0 !important;
-  right: 0 !important;
-  bottom: 0 !important;
-}
-.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
-  display: block;
-  position: relative;
-}
-.oo-ui-buttonSelectWidget {
-  display: inline-block;
-  white-space: nowrap;
-  border-radius: 2px;
-  margin-right: 0.5em;
-  z-index: 0;
-  position: relative;
-}
-.oo-ui-buttonSelectWidget:last-child {
-  margin-right: 0;
-}
-.oo-ui-buttonSelectWidget:focus {
-  outline: 0;
-}
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-  border-radius: 0;
-  margin-left: -1px;
-}
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:first-child .oo-ui-buttonElement-button {
-  border-bottom-left-radius: 2px;
-  border-top-left-radius: 2px;
-  margin-left: 0;
-}
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:last-child .oo-ui-buttonElement-button {
-  border-bottom-right-radius: 2px;
-  border-top-right-radius: 2px;
-}
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  position: absolute;
-}
-.oo-ui-buttonSelectWidget.oo-ui-widget-enabled:focus .oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected .oo-ui-buttonElement-button {
-  border-color: #36c;
-  box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;
-}
-.oo-ui-buttonSelectWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonSelectWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active {
-  z-index: 1;
-}
-.oo-ui-buttonSelectWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-buttonElement-active > .oo-ui-buttonElement-button {
-  z-index: 3;
-}
-.oo-ui-buttonSelectWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-  z-index: -1;
-}
-.oo-ui-buttonOptionWidget {
-  display: inline-block;
-}
-.oo-ui-buttonOptionWidget.oo-ui-buttonElement-active .oo-ui-buttonElement-button {
-  cursor: default;
-}
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  position: static;
-  display: inline-block;
-  vertical-align: middle;
-}
-.oo-ui-toggleButtonWidget {
-  margin-right: 0.5em;
-}
-.oo-ui-toggleButtonWidget:last-child {
-  margin-right: 0;
-}
-.oo-ui-toggleSwitchWidget {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle;
-  overflow: hidden;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-transform: translateZ(0);
-          transform: translateZ(0);
-  background-color: #f8f9fa;
-  width: 3.5em;
-  min-height: 26px;
-  height: 2em;
-  border: 1px solid #72777d;
-  border-radius: 1em;
-  margin-right: 0.5em;
-  -webkit-transition: background-color 250ms, border-color 250ms;
-     -moz-transition: background-color 250ms, border-color 250ms;
-          transition: background-color 250ms, border-color 250ms;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled {
-  cursor: pointer;
-}
-.oo-ui-toggleSwitchWidget-grip {
-  position: absolute;
-  display: block;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.oo-ui-toggleSwitchWidget:last-child {
-  margin-right: 0;
-}
-.oo-ui-toggleSwitchWidget:before {
-  content: '';
-  display: block;
-  position: absolute;
-  top: 1px;
-  left: 1px;
-  bottom: 1px;
-  right: 1px;
-  border: 1px solid transparent;
-  border-radius: 1em;
-  z-index: 1;
-  -webkit-transition: border-color 250ms;
-     -moz-transition: border-color 250ms;
-          transition: border-color 250ms;
-}
-.oo-ui-toggleSwitchWidget-grip {
-  top: 0.3125em;
-  min-width: 16px;
-  width: 1.25em;
-  min-height: 16px;
-  height: 1.25em;
-  border-radius: 1.25em;
-  -webkit-transition: background-color 250ms, left 100ms, margin-left 100ms;
-     -moz-transition: background-color 250ms, left 100ms, margin-left 100ms;
-          transition: background-color 250ms, left 100ms, margin-left 100ms;
-}
-.oo-ui-toggleSwitchWidget-glow {
-  display: none;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-  left: 0.4em;
-  margin-left: 0;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-  left: 1.9em;
-  margin-left: -2px;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled .oo-ui-toggleSwitchWidget-grip {
-  background-color: #f8f9fa;
-  border: 1px solid #72777d;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover {
-  background-color: #fff;
-  border-color: #447ff5;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover .oo-ui-toggleSwitchWidget-grip {
-  background-color: #fff;
-  border-color: #447ff5;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active,
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active:hover,
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active:focus {
-  background-color: #2a4b8d;
-  border-color: #2a4b8d;
-  box-shadow: inset 0 0 0 1px #2a4b8d;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active .oo-ui-toggleSwitchWidget-grip,
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active:hover .oo-ui-toggleSwitchWidget-grip,
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active:focus .oo-ui-toggleSwitchWidget-grip {
-  background-color: #fff;
-  border-color: #fff;
-  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1);
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:focus {
-  border-color: #36c;
-  box-shadow: inset 0 0 0 1px #36c;
-  outline: 0;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:focus .oo-ui-toggleSwitchWidget-grip {
-  border-color: #36c;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on {
-  background-color: #36c;
-  border-color: #36c;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-  background-color: #fff;
-  border-color: #fff;
-  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1);
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:hover {
-  background-color: #447ff5;
-  border-color: #447ff5;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:active,
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:active:hover {
-  background-color: #2a4b8d;
-  border-color: #2a4b8d;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:focus {
-  border-color: #36c;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:focus:before {
-  border-color: #fff;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-  background-color: #c8ccd1;
-  border-color: #c8ccd1;
-  outline: 0;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-  border: 1px solid #fff;
-  box-shadow: inset 0 0 0 1px #fff;
-}
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-  background-color: #fff;
-}
-.oo-ui-selectFileWidget {
-  display: inline-block;
-  vertical-align: middle;
-  width: 100%;
-  max-width: 50em;
-  margin-right: 0.5em;
-}
-.oo-ui-selectFileWidget-selectButton {
-  display: table-cell;
-}
-.oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button {
-  position: relative;
-  overflow: hidden;
-}
-.oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button > [type='file'] {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  width: 100%;
-  height: 100%;
-  opacity: 0;
-  z-index: 1;
-  cursor: pointer;
-  padding-top: 100px;
-}
-.oo-ui-selectFileWidget-selectButton.oo-ui-widget-disabled > .oo-ui-buttonElement-button > [type='file'] {
-  display: none;
-}
-.oo-ui-selectFileWidget-info {
-  width: 100%;
-  display: table-cell;
-  vertical-align: middle;
-  position: relative;
-  overflow: hidden;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator,
-.oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
-  position: absolute;
-  top: 0;
-  height: 100%;
-}
-.oo-ui-widget-disabled .oo-ui-selectFileWidget-info {
-  cursor: default;
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.oo-ui-selectFileWidget-label {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  text-overflow: ellipsis;
-}
-.oo-ui-selectFileWidget-clearButton {
-  position: absolute;
-  z-index: 2;
-}
-.oo-ui-selectFileWidget-dropTarget {
-  position: relative;
-  cursor: default;
-  height: 8.815em;
-}
-.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-dropLabel,
-.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-selectButton,
-.oo-ui-selectFileWidget-dropTarget .oo-ui-iconElement-icon {
-  display: none;
-}
-.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-thumbnail {
-  width: 7.815em;
-  position: absolute;
-  top: 0.5em;
-  bottom: 0.5em;
-  left: 0.5em;
-  background-position: center center;
-  background-repeat: no-repeat;
-  background-size: contain;
-}
-.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-thumbnail.oo-ui-pendingElement-pending {
-  background-repeat: repeat;
-  background-size: auto;
-}
-.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-thumbnail > .oo-ui-selectFileWidget-noThumbnail-icon {
-  opacity: 0.4;
-  height: 7.815em;
-  width: 7.815em;
-}
-.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-info {
-  display: block;
-  height: 100%;
-  width: auto;
-  margin-left: 8.815em;
-  border: 0;
-}
-.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-label {
-  display: block;
-  position: relative;
-  top: inherit;
-}
-.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-fileName {
-  display: block;
-}
-.oo-ui-selectFileWidget-empty.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-thumbnail,
-.oo-ui-selectFileWidget-empty.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-info {
-  display: none;
-}
-.oo-ui-selectFileWidget-empty.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-selectButton {
-  display: block;
-  margin: 2.2em 1em 1em;
-}
-.oo-ui-selectFileWidget-empty.oo-ui-selectFileWidget-dropTarget,
-.oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget {
-  text-align: center;
-}
-.oo-ui-selectFileWidget-empty.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-info,
-.oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-info {
-  margin: 0;
-}
-.oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-clearButton,
-.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-clearButton {
-  display: none;
-}
-.oo-ui-selectFileWidget-empty.oo-ui-widget-enabled .oo-ui-selectFileWidget-label {
-  cursor: default;
-}
-.oo-ui-selectFileWidget-empty.oo-ui-widget-enabled .oo-ui-selectFileWidget-dropLabel {
-  display: block;
-}
-.oo-ui-selectFileWidget-empty.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget,
-.oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.oo-ui-selectFileWidget-empty.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget,
-.oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget,
-.oo-ui-selectFileWidget-empty.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget .oo-ui-buttonElement-button,
-.oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget .oo-ui-buttonElement-button {
-  cursor: no-drop;
-}
-.oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget {
-  height: auto;
-}
-.oo-ui-selectFileWidget:last-child {
-  margin-right: 0;
-}
-.oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button {
-  border-radius: 0 2px 2px 0;
-}
-.oo-ui-selectFileWidget-info {
-  background-color: #fff;
-  border: 1px solid #a2a9b1;
-  border-radius: 2px 0 0 2px;
-  border-right-width: 0;
-}
-.oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
-  left: 0.46875em;
-  min-height: 2.4em;
-  margin-left: -1px;
-}
-.oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator {
-  right: 0.9375em;
-  min-height: 2.4em;
-}
-.oo-ui-selectFileWidget-label {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  display: block;
-  right: 2.375em;
-  padding-top: 0.625em;
-  padding-left: 0.625em;
-  padding-bottom: 0.546875em;
-  line-height: 1.172em;
-  white-space: nowrap;
-}
-.oo-ui-selectFileWidget-fileName {
-  display: block;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-.oo-ui-selectFileWidget-clearButton {
-  top: -1px;
-  right: 0.46875em;
-  min-width: 24px;
-  width: 1.875em;
-  margin-right: 0;
-}
-.oo-ui-selectFileWidget-clearButton .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-  height: 2.5em;
-}
-.oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-label {
-  color: #72777d;
-}
-.oo-ui-selectFileWidget.oo-ui-iconElement .oo-ui-selectFileWidget-label {
-  left: 2.5em;
-}
-.oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-label {
-  right: 3.75em;
-  padding-left: 0;
-}
-.oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-clearButton {
-  right: 2.0875em;
-}
-.oo-ui-selectFileWidget-empty.oo-ui-indicatorElement .oo-ui-selectFileWidget-label,
-.oo-ui-selectFileWidget-notsupported.oo-ui-indicatorElement .oo-ui-selectFileWidget-label {
-  right: 2em;
-}
-.oo-ui-selectFileWidget-dropTarget {
-  background-color: #fff;
-  border: 1px solid #a2a9b1;
-  border-radius: 2px;
-  vertical-align: middle;
-  overflow: hidden;
-}
-.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button {
-  border-radius: 2px;
-}
-.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-label {
-  line-height: 1.4;
-  overflow: inherit;
-  white-space: normal;
-}
-.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-fileName {
-  padding-right: 2.5em;
-}
-.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-clearButton {
-  top: 0;
-}
-.oo-ui-selectFileWidget-empty.oo-ui-widget-enabled.oo-ui-selectFileWidget-dropTarget {
-  background-color: #fff;
-  border-style: dashed;
-  -webkit-transition: background-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
-     -moz-transition: background-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
-          transition: background-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
-}
-.oo-ui-selectFileWidget-empty.oo-ui-widget-enabled.oo-ui-selectFileWidget-dropTarget:hover {
-  border-color: #72777d;
-}
-.oo-ui-selectFileWidget-supported.oo-ui-widget-enabled.oo-ui-selectFileWidget-canDrop.oo-ui-selectFileWidget-dropTarget {
-  background-color: #eaf3ff;
-  color: #36c;
-}
-.oo-ui-selectFileWidget.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget,
-.oo-ui-selectFileWidget-empty.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget,
-.oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget {
-  background-color: #eaecf0;
-  border-color: #c8ccd1;
-}
-.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-info,
-.oo-ui-selectFileWidget-empty.oo-ui-widget-disabled .oo-ui-selectFileWidget-info,
-.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-info {
-  background-color: #eaecf0;
-  color: #72777d;
-  border-color: #c8ccd1;
-  text-shadow: 0 1px 1px #fff;
-}
-.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon,
-.oo-ui-selectFileWidget-empty.oo-ui-widget-disabled .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon,
-.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
-  opacity: 0.51;
-}
-.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator,
-.oo-ui-selectFileWidget-empty.oo-ui-widget-disabled .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator,
-.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator {
-  opacity: 0.15;
-}
-.oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-label {
-  padding: 1em 0.9375em;
-}
-.oo-ui-widget-disabled .oo-ui-selectFileWidget-dropLabel {
-  display: none;
-}
-.oo-ui-outlineSelectWidget {
-  height: 100%;
-}
-.oo-ui-outlineSelectWidget:focus {
-  box-shadow: inset 0 0 0 2px #36c;
-}
-.oo-ui-outlineOptionWidget {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  padding: 1.0546875em 0.9375em 0.9375em;
-  -webkit-transition: background-color 100ms, color 100ms;
-     -moz-transition: background-color 100ms, color 100ms;
-          transition: background-color 100ms, color 100ms;
-}
-.oo-ui-outlineOptionWidget.oo-ui-optionWidget-highlighted {
-  background-color: #eaecf0;
-  color: #000;
-}
-.oo-ui-outlineOptionWidget.oo-ui-optionWidget-selected {
-  background-color: #eaf3ff;
-  color: #36c;
-}
-.oo-ui-outlineOptionWidget.oo-ui-optionWidget-pressed {
-  background-color: rgba(41, 98, 204, 0.1);
-  color: #36c;
-}
-.oo-ui-outlineOptionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
-  padding-right: 1.5em;
-}
-.oo-ui-outlineOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  opacity: 0.5;
-}
-.oo-ui-outlineOptionWidget .oo-ui-labelElement-label {
-  font-size: 1.1em;
-}
-.oo-ui-outlineOptionWidget-level-1 {
-  padding-left: 2.571em;
-}
-.oo-ui-outlineOptionWidget-level-1.oo-ui-iconElement {
-  padding-left: 4.429em;
-}
-.oo-ui-outlineOptionWidget-level-1.oo-ui-iconElement .oo-ui-iconElement-icon {
-  left: 2.571em;
-}
-.oo-ui-outlineOptionWidget-level-2 {
-  padding-left: 5.142em;
-}
-.oo-ui-outlineOptionWidget-level-2.oo-ui-iconElement {
-  padding-left: 6.857em;
-}
-.oo-ui-outlineOptionWidget-level-2.oo-ui-iconElement .oo-ui-iconElement-icon {
-  left: 4.429em;
-}
-.oo-ui-outlineControlsWidget {
-  height: 3em;
-  background-color: #fff;
-}
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-  float: left;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
-  float: left;
-  background-position: right center;
-}
-.oo-ui-outlineControlsWidget-items {
-  float: left;
-}
-.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
-  float: left;
-}
-.oo-ui-outlineControlsWidget-movers {
-  float: right;
-}
-.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
-  float: right;
-}
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-  height: 2em;
-  margin: 0.5em 0.5em 0.5em 0;
-  padding: 0;
-}
-.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
-  width: 1.5em;
-  height: 2em;
-  margin: 0.5em 0 0.5em 0.5em;
-  opacity: 0.2;
-}
-.oo-ui-tabSelectWidget {
-  text-align: left;
-  white-space: nowrap;
-  overflow: hidden;
-  background-color: #eaecf0;
-}
-.oo-ui-tabOptionWidget {
-  display: inline-block;
-  vertical-align: bottom;
-  color: #222;
-  margin: 0.5em 0 0 0.75em;
-  border: 1px solid transparent;
-  border-bottom: 0;
-  border-top-left-radius: 2px;
-  border-top-right-radius: 2px;
-  padding: 0.35em 1em;
-  font-weight: bold;
-  -webkit-transition: background-color 100ms, color 100ms;
-     -moz-transition: background-color 100ms, color 100ms;
-          transition: background-color 100ms, color 100ms;
-}
-.oo-ui-tabOptionWidget.oo-ui-widget-enabled:hover {
-  background-color: rgba(255, 255, 255, 0.3);
-}
-.oo-ui-tabOptionWidget.oo-ui-widget-enabled:active {
-  background-color: rgba(255, 255, 255, 0.8);
-}
-.oo-ui-tabOptionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
-  padding-right: 1.5em;
-}
-.oo-ui-tabOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-  opacity: 0.5;
-}
-.oo-ui-selectWidget-pressed .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected,
-.oo-ui-selectWidget-depressed .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected,
-.oo-ui-tabOptionWidget.oo-ui-optionWidget-selected:hover {
-  background-color: #fff;
-  color: #000;
-}
-.oo-ui-tagMultiselectWidget {
-  display: inline-block;
-  position: relative;
-  width: 100%;
-  max-width: 50em;
-}
-.oo-ui-tagMultiselectWidget-handle {
-  width: 100%;
-  display: block;
-  position: relative;
-}
-.oo-ui-tagMultiselectWidget-handle > .oo-ui-iconElement-icon,
-.oo-ui-tagMultiselectWidget-handle > .oo-ui-indicatorElement-indicator {
-  position: absolute;
-  top: 0;
-  height: 100%;
-}
-.oo-ui-tagMultiselectWidget-content {
-  position: relative;
-}
-.oo-ui-tagMultiselectWidget.oo-ui-widget-disabled .oo-ui-tagMultiselectWidget-content > input {
-  display: none;
-}
-.oo-ui-tagMultiselectWidget-group {
-  display: inline;
-}
-.oo-ui-tagMultiselectWidget-inputPosition-outline {
-  width: 100%;
-}
-.oo-ui-tagMultiselectWidget-focusTrap {
-  display: inline-block;
-  height: 1px;
-  width: 1px;
-}
-.oo-ui-tagMultiselectWidget-handle {
-  min-height: 2.4em;
-  margin-right: 0.5em;
-  padding: 0.15em 0.25em;
-  border: 1px solid #a2a9b1;
-  border-radius: 2px;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.oo-ui-tagMultiselectWidget-handle:last-child {
-  margin-right: 0;
-}
-.oo-ui-tagMultiselectWidget-handle > .oo-ui-tagMultiselectWidget-content > input {
-  border: 0;
-  line-height: 1.675;
-  margin: 0 0 0 0.2em;
-  padding: 0;
-  font-size: inherit;
-  font-family: inherit;
-  background-color: transparent;
-  color: #000;
-  vertical-align: middle;
-}
-.oo-ui-tagMultiselectWidget-handle > .oo-ui-tagMultiselectWidget-content > input::-webkit-input-placeholder {
-  color: #72777d;
-  opacity: 1;
-}
-.oo-ui-tagMultiselectWidget-handle > .oo-ui-tagMultiselectWidget-content > input:-ms-input-placeholder {
-  color: #72777d;
-  opacity: 1;
-}
-.oo-ui-tagMultiselectWidget-handle > .oo-ui-tagMultiselectWidget-content > input::-moz-placeholder {
-  color: #72777d;
-  opacity: 1;
-}
-.oo-ui-tagMultiselectWidget-handle > .oo-ui-tagMultiselectWidget-content > input:-moz-placeholder {
-  color: #72777d;
-  opacity: 1;
-}
-.oo-ui-tagMultiselectWidget-handle > .oo-ui-tagMultiselectWidget-content > input::placeholder {
-  color: #72777d;
-  opacity: 1;
-}
-.oo-ui-tagMultiselectWidget-handle > .oo-ui-tagMultiselectWidget-content > input:focus {
-  outline: 0;
-}
-.oo-ui-tagMultiselectWidget.oo-ui-iconElement .oo-ui-tagMultiselectWidget-handle {
-  padding-left: 2.475em;
-}
-.oo-ui-tagMultiselectWidget.oo-ui-iconElement .oo-ui-tagMultiselectWidget-handle > .oo-ui-iconElement-icon {
-  left: 0;
-  margin: 0 0.3em;
-}
-.oo-ui-tagMultiselectWidget.oo-ui-indicatorElement .oo-ui-tagMultiselectWidget-handle {
-  padding-right: 2.4875em;
-}
-.oo-ui-tagMultiselectWidget.oo-ui-indicatorElement .oo-ui-tagMultiselectWidget-handle > .oo-ui-indicatorElement-indicator {
-  right: 0;
-  margin: 0 0.775em;
-}
-.oo-ui-tagMultiselectWidget.oo-ui-widget-enabled .oo-ui-tagMultiselectWidget-handle {
-  background-color: #fff;
-  cursor: text;
-  -webkit-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
-     -moz-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
-          transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
-}
-.oo-ui-tagMultiselectWidget.oo-ui-widget-enabled:hover .oo-ui-tagMultiselectWidget-handle {
-  border-color: #72777d;
-}
-.oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-open .oo-ui-tagMultiselectWidget-handle {
-  border-color: #36c;
-  outline: 0;
-  box-shadow: inset 0 0 0 1px #36c;
-}
-.oo-ui-tagMultiselectWidget.oo-ui-widget-disabled .oo-ui-tagMultiselectWidget-handle {
-  color: #72777d;
-  text-shadow: 0 1px 1px #fff;
-  border-color: #c8ccd1;
-  background-color: #eaecf0;
-}
-.oo-ui-tagMultiselectWidget.oo-ui-widget-disabled .oo-ui-tagMultiselectWidget-handle > .oo-ui-iconElement-icon {
-  opacity: 0.51;
-}
-.oo-ui-tagMultiselectWidget.oo-ui-widget-disabled .oo-ui-tagMultiselectWidget-handle > .oo-ui-indicatorElement-indicator {
-  opacity: 0.15;
-}
-.oo-ui-tagItemWidget {
-  position: relative;
-  display: inline-block;
-  cursor: default;
-  white-space: nowrap;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  width: auto;
-  max-width: 100%;
-  height: 1.7em;
-  margin: 0.1em;
-  border: 1px solid #a2a9b1;
-  border-radius: 2px;
-  padding: 0 0.4em;
-  line-height: 1.7;
-  vertical-align: middle;
-}
-.oo-ui-tagItemWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-  display: inline-block;
-  text-overflow: ellipsis;
-  overflow: hidden;
-  cursor: text;
-}
-.oo-ui-tagItemWidget.oo-ui-flaggedElement-invalid {
-  border-color: #d33;
-}
-.oo-ui-tagItemWidget.oo-ui-flaggedElement-invalid:hover {
-  border-color: #d33;
-}
-.oo-ui-tagItemWidget.oo-ui-flaggedElement-invalid:focus {
-  border-color: #d33;
-  box-shadow: inset 0 0 0 1px #d33;
-}
-.oo-ui-tagItemWidget.oo-ui-widget-enabled {
-  background-color: #f8f9fa;
-  color: #222;
-  padding-right: 1.5375em;
-  -webkit-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
-     -moz-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
-          transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
-}
-.oo-ui-tagItemWidget.oo-ui-widget-enabled:hover {
-  background-color: #fff;
-  color: #444;
-  border-color: #a2a9b1;
-}
-.oo-ui-tagItemWidget.oo-ui-widget-enabled:focus {
-  border-color: #36c;
-  box-shadow: inset 0 0 0 1px #36c;
-  outline: 0;
-}
-.oo-ui-tagItemWidget.oo-ui-widget-enabled > .oo-ui-buttonElement {
-  display: block;
-  position: absolute;
-  top: 0;
-  right: 0;
-  bottom: 0;
-}
-.oo-ui-tagItemWidget.oo-ui-widget-enabled .oo-ui-buttonElement-button {
-  display: block;
-  width: 1.5375em;
-  height: 100%;
-}
-.oo-ui-tagItemWidget.oo-ui-widget-enabled .oo-ui-buttonElement-button .oo-ui-indicator-clear {
-  position: absolute;
-  top: 0;
-  right: 0.3em;
-  bottom: 0;
-  height: auto;
-}
-.oo-ui-tagItemWidget.oo-ui-widget-disabled {
-  background-color: #eaecf0;
-  color: #72777d;
-  border-color: #c8ccd1;
-  text-shadow: 0 1px 1px #fff;
-}
-.oo-ui-tagItemWidget.oo-ui-widget-disabled:focus {
-  outline: 0;
-}
-.oo-ui-tagItemWidget.oo-ui-widget-disabled > .oo-ui-buttonElement {
-  display: none;
-}
-.oo-ui-capsuleMultiselectWidget {
-  display: inline-block;
-  position: relative;
-  width: 100%;
-  max-width: 50em;
-}
-.oo-ui-capsuleMultiselectWidget-handle {
-  width: 100%;
-  display: block;
-  position: relative;
-}
-.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon,
-.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator {
-  position: absolute;
-  top: 0;
-  height: 100%;
-}
-.oo-ui-capsuleMultiselectWidget-content {
-  position: relative;
-}
-.oo-ui-capsuleMultiselectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiselectWidget-content > input {
-  display: none;
-}
-.oo-ui-capsuleMultiselectWidget-group {
-  display: inline;
-}
-.oo-ui-capsuleMultiselectWidget-popup > .oo-ui-popupWidget-popup > .oo-ui-popupWidget-body > * {
-  display: block;
-}
-.oo-ui-capsuleMultiselectWidget-focusTrap {
-  display: inline-block;
-  height: 1px;
-  width: 1px;
-}
-.oo-ui-capsuleMultiselectWidget-handle {
-  min-height: 2.4em;
-  margin-right: 0.5em;
-  padding: 0.15em 0.25em;
-  border: 1px solid #a2a9b1;
-  border-radius: 2px;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.oo-ui-capsuleMultiselectWidget-handle:last-child {
-  margin-right: 0;
-}
-.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input {
-  border: 0;
-  line-height: 1.675;
-  margin: 0 0 0 0.2em;
-  padding: 0;
-  font-size: inherit;
-  font-family: inherit;
-  background-color: transparent;
-  color: #000;
-  vertical-align: middle;
-}
-.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::-webkit-input-placeholder {
-  color: #72777d;
-  opacity: 1;
-}
-.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:-ms-input-placeholder {
-  color: #72777d;
-  opacity: 1;
-}
-.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::-moz-placeholder {
-  color: #72777d;
-  opacity: 1;
-}
-.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:-moz-placeholder {
-  color: #72777d;
-  opacity: 1;
-}
-.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::placeholder {
-  color: #72777d;
-  opacity: 1;
-}
-.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:focus {
-  outline: 0;
-}
-.oo-ui-capsuleMultiselectWidget.oo-ui-iconElement .oo-ui-capsuleMultiselectWidget-handle {
-  padding-left: 2.5em;
-}
-.oo-ui-capsuleMultiselectWidget.oo-ui-iconElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon {
-  left: 0.46875em;
-}
-.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle {
-  padding-right: 2.8125em;
-}
-.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator {
-  right: 0.9375em;
-}
-.oo-ui-capsuleMultiselectWidget-popup {
-  margin-top: -1px;
-}
-.oo-ui-capsuleMultiselectWidget-popup > .oo-ui-popupWidget-popup {
-  border: 0;
-}
-.oo-ui-capsuleMultiselectWidget.oo-ui-widget-enabled .oo-ui-capsuleMultiselectWidget-handle {
-  background-color: #fff;
-  cursor: text;
-  -webkit-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
-     -moz-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
-          transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
-}
-.oo-ui-capsuleMultiselectWidget.oo-ui-widget-enabled:hover .oo-ui-capsuleMultiselectWidget-handle {
-  border-color: #72777d;
-}
-.oo-ui-capsuleMultiselectWidget.oo-ui-widget-enabled.oo-ui-capsuleMultiselectWidget-open .oo-ui-capsuleMultiselectWidget-handle {
-  border-color: #36c;
-  outline: 0;
-  box-shadow: inset 0 0 0 1px #36c;
-}
-.oo-ui-capsuleMultiselectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiselectWidget-handle {
-  color: #72777d;
-  text-shadow: 0 1px 1px #fff;
-  border-color: #c8ccd1;
-  background-color: #eaecf0;
-}
-.oo-ui-capsuleMultiselectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon {
-  opacity: 0.51;
-}
-.oo-ui-capsuleMultiselectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator {
-  opacity: 0.15;
-}
-.oo-ui-capsuleItemWidget {
-  position: relative;
-  display: inline-block;
-  cursor: default;
-  white-space: nowrap;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  width: auto;
-  max-width: 100%;
-  height: 1.7em;
-  margin: 0.1em;
-  border: 1px solid #a2a9b1;
-  border-radius: 2px;
-  padding: 0 0.4em;
-  line-height: 1.7;
-  vertical-align: middle;
-}
-.oo-ui-capsuleItemWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-  display: inline-block;
-  text-overflow: ellipsis;
-  overflow: hidden;
-  cursor: text;
-}
-.oo-ui-capsuleItemWidget.oo-ui-widget-enabled {
-  background-color: #f8f9fa;
-  color: #222;
-  padding-right: 1.5375em;
-  -webkit-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
-     -moz-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
-          transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
-}
-.oo-ui-capsuleItemWidget.oo-ui-widget-enabled:hover {
-  background-color: #fff;
-  color: #444;
-  border-color: #a2a9b1;
-}
-.oo-ui-capsuleItemWidget.oo-ui-widget-enabled:focus {
-  border-color: #36c;
-  box-shadow: inset 0 0 0 1px #36c;
-  outline: 0;
-}
-.oo-ui-capsuleItemWidget.oo-ui-widget-enabled > .oo-ui-buttonElement {
-  display: block;
-  position: absolute;
-  top: 0;
-  right: 0;
-  bottom: 0;
-}
-.oo-ui-capsuleItemWidget.oo-ui-widget-enabled .oo-ui-buttonElement-button {
-  display: block;
-  width: 1.5375em;
-  height: 100%;
-}
-.oo-ui-capsuleItemWidget.oo-ui-widget-enabled .oo-ui-buttonElement-button .oo-ui-indicator-clear {
-  position: absolute;
-  top: 0;
-  right: 0.3em;
-  bottom: 0;
-  height: auto;
-}
-.oo-ui-capsuleItemWidget.oo-ui-widget-disabled {
-  background-color: #eaecf0;
-  color: #72777d;
-  border-color: #c8ccd1;
-  text-shadow: 0 1px 1px #fff;
-}
-.oo-ui-capsuleItemWidget.oo-ui-widget-disabled > .oo-ui-buttonElement {
-  display: none;
-}
-.oo-ui-searchWidget-query {
-  position: absolute;
-  top: 0;
-  left: 0;
-  right: 0;
-}
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  width: 100%;
-}
-.oo-ui-searchWidget-results {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-.oo-ui-searchWidget-query {
-  height: 4em;
-  padding: 0 1em;
-  border-bottom: 1px solid #a2a9b1;
-}
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  margin: 0.75em 0;
-}
-.oo-ui-searchWidget-results {
-  top: 4em;
-  padding: 1em;
-  line-height: 0;
-}
-.oo-ui-numberInputWidget {
-  display: inline-block;
-  position: relative;
-  max-width: 50em;
-}
-.oo-ui-numberInputWidget-buttoned .oo-ui-buttonWidget,
-.oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget {
-  display: table-cell;
-  height: 100%;
-}
-.oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget input {
-  height: 100%;
-}
-.oo-ui-numberInputWidget-field {
-  display: table;
-  table-layout: fixed;
-  width: 100%;
-}
-.oo-ui-numberInputWidget-buttoned .oo-ui-buttonWidget {
-  width: 2.5em;
-}
-.oo-ui-numberInputWidget-buttoned .oo-ui-buttonElement-button {
-  display: block;
-  min-width: 2.5em;
-  min-height: 2.5em;
-  padding-left: 0;
-  padding-right: 0;
-}
-.oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget input {
-  border-radius: 0;
-}
-.oo-ui-numberInputWidget-minusButton.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-  border-right-width: 0;
-}
-.oo-ui-numberInputWidget-plusButton.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-  border-left-width: 0;
-}
diff --git a/resources/lib/oojs-ui/oojs-ui-widgets-wikimediaui.css b/resources/lib/oojs-ui/oojs-ui-widgets-wikimediaui.css
new file mode 100644 (file)
index 0000000..dc687bb
--- /dev/null
@@ -0,0 +1,1306 @@
+/*!
+ * OOjs UI v0.22.1
+ * https://www.mediawiki.org/wiki/OOjs_UI
+ *
+ * Copyright 2011–2017 OOjs UI Team and other contributors.
+ * Released under the MIT license
+ * http://oojs.mit-license.org
+ *
+ * Date: 2017-05-31T19:07:44Z
+ */
+.oo-ui-draggableElement {
+  padding: 1.0546875em 0.9375em 0.9375em;
+}
+.oo-ui-draggableElement-handle:not( .oo-ui-draggableElement-undraggable ).oo-ui-widget {
+  cursor: move;
+  cursor: url(images/grab.cur );
+  cursor: -webkit-grab;
+  cursor: -moz-grab;
+  cursor: grab;
+}
+.oo-ui-draggableElement-handle:not( .oo-ui-draggableElement-undraggable ):active {
+  cursor: url(images/grabbing.cur );
+  cursor: -webkit-grabbing;
+  cursor: -moz-grabbing;
+  cursor: grabbing;
+}
+.oo-ui-draggableElement-handle.oo-ui-widget-disabled,
+.oo-ui-widget-disabled .oo-ui-draggableElement-handle {
+  cursor: default;
+}
+.oo-ui-draggableElement-placeholder {
+  opacity: 0.2;
+}
+.oo-ui-draggableGroupElement-horizontal .oo-ui-draggableElement {
+  display: inline-block;
+}
+.oo-ui-draggableElement-handle.oo-ui-widget-enabled:focus {
+  border-radius: 2px;
+  box-shadow: inset 0 0 0 1px #36c, 0 0 0 1px #36c;
+  outline: 0;
+}
+.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous > .oo-ui-panelLayout-scrollable {
+  overflow: hidden;
+}
+.oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout {
+  width: 100%;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.oo-ui-bookletLayout-outlinePanel-editable > .oo-ui-outlineSelectWidget {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 3em;
+  overflow: auto;
+}
+.oo-ui-bookletLayout-outlinePanel > .oo-ui-outlineControlsWidget {
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  right: 0;
+}
+.oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout {
+  padding: 1.5em;
+}
+.oo-ui-bookletLayout-outlinePanel {
+  border-right: 1px solid #ddd;
+}
+.oo-ui-bookletLayout-outlinePanel > .oo-ui-outlineControlsWidget {
+  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25);
+}
+.oo-ui-indexLayout > .oo-ui-menuLayout-menu {
+  height: 3em;
+}
+.oo-ui-indexLayout > .oo-ui-menuLayout-content {
+  top: 3em;
+}
+.oo-ui-indexLayout-stackLayout > .oo-ui-panelLayout {
+  padding: 1.5em;
+}
+.oo-ui-indexLayout > .oo-ui-menuLayout-menu {
+  height: 2.75em;
+}
+.oo-ui-indexLayout > .oo-ui-menuLayout-content {
+  top: 2.75em;
+}
+.oo-ui-menuLayout {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+}
+.oo-ui-menuLayout-menu,
+.oo-ui-menuLayout-content {
+  position: absolute;
+  -webkit-transition: all 200ms ease;
+  -moz-transition: all 200ms ease;
+  transition: all 200ms ease;
+}
+.oo-ui-menuLayout-menu {
+  height: 18em;
+  width: 18em;
+}
+.oo-ui-menuLayout-content {
+  top: 18em;
+  left: 18em;
+  right: 18em;
+  bottom: 18em;
+}
+.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu > .oo-ui-menuLayout-menu {
+  width: 0 !important;
+  height: 0 !important;
+  overflow: hidden;
+}
+.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu > .oo-ui-menuLayout-content {
+  top: 0 !important;
+  left: 0 !important;
+  right: 0 !important;
+  bottom: 0 !important;
+}
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top > .oo-ui-menuLayout-menu {
+  width: auto !important;
+  left: 0;
+  top: 0;
+  right: 0;
+}
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top > .oo-ui-menuLayout-content {
+  right: 0 !important;
+  bottom: 0 !important;
+  left: 0 !important;
+}
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after > .oo-ui-menuLayout-menu {
+  height: auto !important;
+  top: 0;
+  right: 0;
+  bottom: 0;
+}
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after > .oo-ui-menuLayout-content {
+  bottom: 0 !important;
+  left: 0 !important;
+  top: 0 !important;
+}
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom > .oo-ui-menuLayout-menu {
+  width: auto !important;
+  right: 0;
+  bottom: 0;
+  left: 0;
+}
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom > .oo-ui-menuLayout-content {
+  left: 0 !important;
+  top: 0 !important;
+  right: 0 !important;
+}
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before > .oo-ui-menuLayout-menu {
+  height: auto !important;
+  bottom: 0;
+  left: 0;
+  top: 0;
+}
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before > .oo-ui-menuLayout-content {
+  top: 0 !important;
+  right: 0 !important;
+  bottom: 0 !important;
+}
+.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
+  display: block;
+  position: relative;
+}
+.oo-ui-buttonSelectWidget {
+  display: inline-block;
+  white-space: nowrap;
+  border-radius: 2px;
+  margin-right: 0.5em;
+  z-index: 0;
+  position: relative;
+}
+.oo-ui-buttonSelectWidget:last-child {
+  margin-right: 0;
+}
+.oo-ui-buttonSelectWidget:focus {
+  outline: 0;
+}
+.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
+  margin-left: -1px;
+  border-radius: 0;
+}
+.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:first-child .oo-ui-buttonElement-button {
+  margin-left: 0;
+  border-bottom-left-radius: 2px;
+  border-top-left-radius: 2px;
+}
+.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:last-child .oo-ui-buttonElement-button {
+  border-bottom-right-radius: 2px;
+  border-top-right-radius: 2px;
+}
+.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
+.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
+  position: absolute;
+}
+.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget.oo-ui-widget-disabled + .oo-ui-widget-disabled > .oo-ui-buttonElement-button {
+  border-left-color: #fff;
+}
+.oo-ui-buttonSelectWidget.oo-ui-widget-enabled:focus .oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected .oo-ui-buttonElement-button {
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;
+}
+.oo-ui-buttonSelectWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover,
+.oo-ui-buttonSelectWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active {
+  z-index: 1;
+}
+.oo-ui-buttonSelectWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-buttonElement-active > .oo-ui-buttonElement-button {
+  z-index: 3;
+}
+.oo-ui-buttonSelectWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
+  z-index: -1;
+}
+.oo-ui-buttonOptionWidget {
+  display: inline-block;
+}
+.oo-ui-buttonOptionWidget.oo-ui-buttonElement-active .oo-ui-buttonElement-button {
+  cursor: default;
+}
+.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
+.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
+  position: static;
+  display: inline-block;
+  vertical-align: middle;
+}
+.oo-ui-toggleButtonWidget {
+  margin-right: 0.5em;
+}
+.oo-ui-toggleButtonWidget:last-child {
+  margin-right: 0;
+}
+.oo-ui-toggleSwitchWidget {
+  position: relative;
+  display: inline-block;
+  vertical-align: middle;
+  overflow: hidden;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  -webkit-transform: translateZ(0);
+  transform: translateZ(0);
+  background-color: #f8f9fa;
+  width: 3.5em;
+  min-height: 26px;
+  height: 2em;
+  border: 1px solid #72777d;
+  border-radius: 1em;
+  margin-right: 0.5em;
+  -webkit-transition: background-color 250ms, border-color 250ms;
+  -moz-transition: background-color 250ms, border-color 250ms;
+  transition: background-color 250ms, border-color 250ms;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled {
+  cursor: pointer;
+}
+.oo-ui-toggleSwitchWidget-grip {
+  position: absolute;
+  display: block;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.oo-ui-toggleSwitchWidget:last-child {
+  margin-right: 0;
+}
+.oo-ui-toggleSwitchWidget:before {
+  content: '';
+  display: block;
+  position: absolute;
+  top: 1px;
+  left: 1px;
+  bottom: 1px;
+  right: 1px;
+  border: 1px solid transparent;
+  border-radius: 1em;
+  z-index: 1;
+  -webkit-transition: border-color 250ms;
+  -moz-transition: border-color 250ms;
+  transition: border-color 250ms;
+}
+.oo-ui-toggleSwitchWidget-grip {
+  top: 0.3125em;
+  min-width: 16px;
+  width: 1.25em;
+  min-height: 16px;
+  height: 1.25em;
+  border-radius: 1.25em;
+  -webkit-transition: background-color 250ms, left 100ms, margin-left 100ms;
+  -moz-transition: background-color 250ms, left 100ms, margin-left 100ms;
+  transition: background-color 250ms, left 100ms, margin-left 100ms;
+}
+.oo-ui-toggleSwitchWidget-glow {
+  display: none;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
+  left: 0.4em;
+  margin-left: 0;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
+  left: 1.9em;
+  margin-left: -2px;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled .oo-ui-toggleSwitchWidget-grip {
+  background-color: #f8f9fa;
+  border: 1px solid #72777d;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover {
+  background-color: #fff;
+  border-color: #447ff5;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover .oo-ui-toggleSwitchWidget-grip {
+  background-color: #fff;
+  border-color: #447ff5;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active,
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active:hover,
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active:focus {
+  background-color: #2a4b8d;
+  border-color: #2a4b8d;
+  box-shadow: inset 0 0 0 1px #2a4b8d;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active .oo-ui-toggleSwitchWidget-grip,
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active:hover .oo-ui-toggleSwitchWidget-grip,
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active:focus .oo-ui-toggleSwitchWidget-grip {
+  background-color: #fff;
+  border-color: #fff;
+  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1);
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:focus {
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c;
+  outline: 0;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:focus .oo-ui-toggleSwitchWidget-grip {
+  border-color: #36c;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on {
+  background-color: #36c;
+  border-color: #36c;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
+  background-color: #fff;
+  border-color: #fff;
+  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1);
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:hover {
+  background-color: #447ff5;
+  border-color: #447ff5;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:active,
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:active:hover {
+  background-color: #2a4b8d;
+  border-color: #2a4b8d;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:focus {
+  border-color: #36c;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:focus:before {
+  border-color: #fff;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
+  background-color: #c8ccd1;
+  border-color: #c8ccd1;
+  outline: 0;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
+  border: 1px solid #fff;
+  box-shadow: inset 0 0 0 1px #fff;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
+  background-color: #fff;
+}
+.oo-ui-selectFileWidget {
+  display: inline-block;
+  vertical-align: middle;
+  width: 100%;
+  max-width: 50em;
+  margin-right: 0.5em;
+}
+.oo-ui-selectFileWidget-selectButton {
+  display: table-cell;
+}
+.oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button {
+  position: relative;
+  overflow: hidden;
+}
+.oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button > [type='file'] {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  width: 100%;
+  height: 100%;
+  opacity: 0;
+  z-index: 1;
+  cursor: pointer;
+  padding-top: 100px;
+}
+.oo-ui-selectFileWidget-selectButton.oo-ui-widget-disabled > .oo-ui-buttonElement-button > [type='file'] {
+  display: none;
+}
+.oo-ui-selectFileWidget-info {
+  width: 100%;
+  display: table-cell;
+  vertical-align: middle;
+  position: relative;
+  overflow: hidden;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator,
+.oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
+  position: absolute;
+  top: 0;
+  height: 100%;
+}
+.oo-ui-widget-disabled .oo-ui-selectFileWidget-info {
+  cursor: default;
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+.oo-ui-selectFileWidget-label {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  text-overflow: ellipsis;
+}
+.oo-ui-selectFileWidget-clearButton {
+  position: absolute;
+  z-index: 2;
+}
+.oo-ui-selectFileWidget-dropTarget {
+  position: relative;
+  cursor: default;
+  height: 8.815em;
+}
+.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-dropLabel,
+.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-selectButton,
+.oo-ui-selectFileWidget-dropTarget .oo-ui-iconElement-icon {
+  display: none;
+}
+.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-thumbnail {
+  width: 7.815em;
+  position: absolute;
+  top: 0.5em;
+  bottom: 0.5em;
+  left: 0.5em;
+  background-position: center center;
+  background-repeat: no-repeat;
+  background-size: contain;
+}
+.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-thumbnail.oo-ui-pendingElement-pending {
+  background-repeat: repeat;
+  background-size: auto;
+}
+.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-thumbnail > .oo-ui-selectFileWidget-noThumbnail-icon {
+  opacity: 0.4;
+  height: 7.815em;
+  width: 7.815em;
+}
+.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-info {
+  display: block;
+  height: 100%;
+  width: auto;
+  margin-left: 8.815em;
+  border: 0;
+}
+.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-label {
+  display: block;
+  position: relative;
+  top: inherit;
+}
+.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-fileName {
+  display: block;
+}
+.oo-ui-selectFileWidget-empty.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-thumbnail,
+.oo-ui-selectFileWidget-empty.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-info {
+  display: none;
+}
+.oo-ui-selectFileWidget-empty.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-selectButton {
+  display: block;
+  margin: 2.2em 1em 1em;
+}
+.oo-ui-selectFileWidget-empty.oo-ui-selectFileWidget-dropTarget,
+.oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget {
+  text-align: center;
+}
+.oo-ui-selectFileWidget-empty.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-info,
+.oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-info {
+  margin: 0;
+}
+.oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-clearButton,
+.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-clearButton {
+  display: none;
+}
+.oo-ui-selectFileWidget-empty.oo-ui-widget-enabled .oo-ui-selectFileWidget-label {
+  cursor: default;
+}
+.oo-ui-selectFileWidget-empty.oo-ui-widget-enabled .oo-ui-selectFileWidget-dropLabel {
+  display: block;
+}
+.oo-ui-selectFileWidget-empty.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget,
+.oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget {
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+.oo-ui-selectFileWidget-empty.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget,
+.oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget,
+.oo-ui-selectFileWidget-empty.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget .oo-ui-buttonElement-button,
+.oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget .oo-ui-buttonElement-button {
+  cursor: no-drop;
+}
+.oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget {
+  height: auto;
+}
+.oo-ui-selectFileWidget:last-child {
+  margin-right: 0;
+}
+.oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button {
+  border-radius: 0 2px 2px 0;
+}
+.oo-ui-selectFileWidget-info {
+  background-color: #fff;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px 0 0 2px;
+  border-right-width: 0;
+}
+.oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
+  top: -1px;
+  left: 0.46875em;
+  min-height: 2.5em;
+  margin-left: -1px;
+}
+.oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator {
+  top: -1px;
+  right: 0.9375em;
+  min-height: 2.5em;
+}
+.oo-ui-selectFileWidget-label {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  display: block;
+  right: 2.375em;
+  padding-top: 0.625em;
+  padding-left: 0.625em;
+  padding-bottom: 0.546875em;
+  line-height: 1.172em;
+  white-space: nowrap;
+}
+.oo-ui-selectFileWidget-fileName {
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+.oo-ui-selectFileWidget-clearButton {
+  top: -1px;
+  right: 0.46875em;
+  min-width: 24px;
+  width: 1.875em;
+  margin-right: 0;
+}
+.oo-ui-selectFileWidget-clearButton .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
+  height: 2.5em;
+}
+.oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-label {
+  color: #72777d;
+}
+.oo-ui-selectFileWidget.oo-ui-iconElement .oo-ui-selectFileWidget-label {
+  left: 2.5em;
+}
+.oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-label {
+  right: 3.75em;
+  padding-left: 0;
+}
+.oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-clearButton {
+  right: 2.0875em;
+}
+.oo-ui-selectFileWidget-empty.oo-ui-indicatorElement .oo-ui-selectFileWidget-label,
+.oo-ui-selectFileWidget-notsupported.oo-ui-indicatorElement .oo-ui-selectFileWidget-label {
+  right: 2em;
+}
+.oo-ui-selectFileWidget-dropTarget {
+  background-color: #fff;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  vertical-align: middle;
+  overflow: hidden;
+}
+.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button {
+  border-radius: 2px;
+}
+.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-label {
+  line-height: 1.4;
+  overflow: inherit;
+  white-space: normal;
+}
+.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-fileName {
+  padding-right: 2.5em;
+}
+.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-clearButton {
+  top: 0;
+}
+.oo-ui-selectFileWidget-empty.oo-ui-widget-enabled.oo-ui-selectFileWidget-dropTarget {
+  background-color: #fff;
+  border-style: dashed;
+  -webkit-transition: background-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
+  -moz-transition: background-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
+  transition: background-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
+}
+.oo-ui-selectFileWidget-empty.oo-ui-widget-enabled.oo-ui-selectFileWidget-dropTarget:hover {
+  border-color: #72777d;
+}
+.oo-ui-selectFileWidget-supported.oo-ui-widget-enabled.oo-ui-selectFileWidget-canDrop.oo-ui-selectFileWidget-dropTarget {
+  background-color: #eaf3ff;
+  color: #36c;
+}
+.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-info,
+.oo-ui-selectFileWidget-empty.oo-ui-widget-disabled .oo-ui-selectFileWidget-info {
+  background-color: #eaecf0;
+  color: #72777d;
+  border-color: #c8ccd1;
+  text-shadow: 0 1px 1px #fff;
+}
+.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon,
+.oo-ui-selectFileWidget-empty.oo-ui-widget-disabled .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
+  opacity: 0.51;
+}
+.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator,
+.oo-ui-selectFileWidget-empty.oo-ui-widget-disabled .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator {
+  opacity: 0.15;
+}
+.oo-ui-selectFileWidget.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget,
+.oo-ui-selectFileWidget-empty.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget {
+  background-color: #eaecf0;
+  border-color: #c8ccd1;
+}
+.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-info {
+  background-color: #eaecf0;
+  color: #222;
+  border-color: #c8ccd1;
+}
+.oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget {
+  background-color: #eaecf0;
+  border-color: #c8ccd1;
+}
+.oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-label {
+  padding: 1em 0.9375em;
+}
+.oo-ui-widget-disabled .oo-ui-selectFileWidget-dropLabel {
+  display: none;
+}
+.oo-ui-outlineSelectWidget {
+  height: 100%;
+}
+.oo-ui-outlineSelectWidget:focus {
+  box-shadow: inset 0 0 0 2px #36c;
+}
+.oo-ui-outlineOptionWidget {
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  padding: 1.0546875em 0.9375em 0.9375em;
+  -webkit-transition: background-color 100ms, color 100ms;
+  -moz-transition: background-color 100ms, color 100ms;
+  transition: background-color 100ms, color 100ms;
+}
+.oo-ui-outlineOptionWidget.oo-ui-optionWidget-highlighted {
+  background-color: #eaecf0;
+  color: #000;
+}
+.oo-ui-outlineOptionWidget.oo-ui-optionWidget-selected {
+  background-color: #eaf3ff;
+  color: #36c;
+}
+.oo-ui-outlineOptionWidget.oo-ui-optionWidget-pressed {
+  background-color: rgba(41, 98, 204, 0.1);
+  color: #36c;
+}
+.oo-ui-outlineOptionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
+  padding-right: 1.5em;
+}
+.oo-ui-outlineOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
+  opacity: 0.5;
+}
+.oo-ui-outlineOptionWidget .oo-ui-labelElement-label {
+  font-size: 1.1em;
+}
+.oo-ui-outlineOptionWidget-level-1 {
+  padding-left: 2.571em;
+}
+.oo-ui-outlineOptionWidget-level-1.oo-ui-iconElement {
+  padding-left: 4.429em;
+}
+.oo-ui-outlineOptionWidget-level-1.oo-ui-iconElement .oo-ui-iconElement-icon {
+  left: 2.571em;
+}
+.oo-ui-outlineOptionWidget-level-2 {
+  padding-left: 5.142em;
+}
+.oo-ui-outlineOptionWidget-level-2.oo-ui-iconElement {
+  padding-left: 6.857em;
+}
+.oo-ui-outlineOptionWidget-level-2.oo-ui-iconElement .oo-ui-iconElement-icon {
+  left: 4.429em;
+}
+.oo-ui-outlineControlsWidget {
+  height: 3em;
+  background-color: #fff;
+}
+.oo-ui-outlineControlsWidget-items,
+.oo-ui-outlineControlsWidget-movers {
+  float: left;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
+  float: left;
+  background-position: right center;
+}
+.oo-ui-outlineControlsWidget-items {
+  float: left;
+}
+.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
+  float: left;
+}
+.oo-ui-outlineControlsWidget-movers {
+  float: right;
+}
+.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
+  float: right;
+}
+.oo-ui-outlineControlsWidget-items,
+.oo-ui-outlineControlsWidget-movers {
+  height: 2em;
+  margin: 0.5em 0.5em 0.5em 0;
+  padding: 0;
+}
+.oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
+  width: 1.5em;
+  height: 2em;
+  margin: 0.5em 0 0.5em 0.5em;
+  opacity: 0.2;
+}
+.oo-ui-tabSelectWidget {
+  text-align: left;
+  white-space: nowrap;
+  overflow: hidden;
+  background-color: #eaecf0;
+}
+.oo-ui-tabOptionWidget {
+  display: inline-block;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  vertical-align: bottom;
+  color: #222;
+  margin: 0.46875em 0 0 0.46875em;
+  border-color: transparent;
+  border-style: solid;
+  border-width: 1px 1px 0 1px;
+  border-top-left-radius: 2px;
+  border-top-right-radius: 2px;
+  padding: 0.625em 1.015625em 0.546875em;
+  font-weight: bold;
+  line-height: 1;
+  -webkit-transition: background-color 100ms, color 100ms;
+  -moz-transition: background-color 100ms, color 100ms;
+  transition: background-color 100ms, color 100ms;
+}
+.oo-ui-tabOptionWidget.oo-ui-optionWidget-selected {
+  background-color: #fff;
+  color: #000;
+}
+.oo-ui-tabOptionWidget .oo-ui-labelElement-label {
+  line-height: 1.172em;
+}
+.oo-ui-tabOptionWidget.oo-ui-widget-enabled:hover {
+  background-color: rgba(255, 255, 255, 0.3);
+}
+.oo-ui-tabOptionWidget.oo-ui-widget-enabled:active {
+  background-color: rgba(255, 255, 255, 0.8);
+}
+.oo-ui-tabOptionWidget.oo-ui-widget-enabled.oo-ui-optionWidget-selected:hover {
+  background-color: #fff;
+}
+.oo-ui-tagMultiselectWidget {
+  display: inline-block;
+  position: relative;
+  width: 100%;
+  max-width: 50em;
+}
+.oo-ui-tagMultiselectWidget-handle {
+  width: 100%;
+  display: block;
+  position: relative;
+}
+.oo-ui-tagMultiselectWidget-handle > .oo-ui-iconElement-icon,
+.oo-ui-tagMultiselectWidget-handle > .oo-ui-indicatorElement-indicator {
+  position: absolute;
+  top: 0;
+  height: 100%;
+}
+.oo-ui-tagMultiselectWidget-content {
+  position: relative;
+}
+.oo-ui-tagMultiselectWidget-group {
+  display: inline;
+}
+.oo-ui-tagMultiselectWidget-outlined {
+  width: 100%;
+}
+.oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-inlined .oo-ui-tagMultiselectWidget-handle {
+  cursor: text;
+}
+.oo-ui-tagMultiselectWidget.oo-ui-widget-disabled .oo-ui-tagMultiselectWidget-content > input {
+  display: none;
+}
+.oo-ui-tagMultiselectWidget-focusTrap {
+  display: inline-block;
+  height: 1px;
+  width: 1px;
+}
+.oo-ui-tagMultiselectWidget-handle {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  min-height: 2.5em;
+  margin-right: 0.5em;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  padding: 0 0.625em 0.3125em;
+  line-height: 1;
+}
+.oo-ui-tagMultiselectWidget-handle:last-child {
+  margin-right: 0;
+}
+.oo-ui-tagMultiselectWidget-handle > .oo-ui-tagMultiselectWidget-content > input {
+  background-color: transparent;
+  color: #000;
+  margin: 0.46875em 0 0 0.390625em;
+  border: 0;
+  padding: 0;
+  font-family: inherit;
+  font-size: inherit;
+  line-height: 1.563em;
+  vertical-align: middle;
+}
+.oo-ui-tagMultiselectWidget-handle > .oo-ui-tagMultiselectWidget-content > input::-webkit-input-placeholder {
+  color: #72777d;
+  opacity: 1;
+}
+.oo-ui-tagMultiselectWidget-handle > .oo-ui-tagMultiselectWidget-content > input:-ms-input-placeholder {
+  color: #72777d;
+  opacity: 1;
+}
+.oo-ui-tagMultiselectWidget-handle > .oo-ui-tagMultiselectWidget-content > input::-moz-placeholder {
+  color: #72777d;
+  opacity: 1;
+}
+.oo-ui-tagMultiselectWidget-handle > .oo-ui-tagMultiselectWidget-content > input:-moz-placeholder {
+  color: #72777d;
+  opacity: 1;
+}
+.oo-ui-tagMultiselectWidget-handle > .oo-ui-tagMultiselectWidget-content > input::placeholder {
+  color: #72777d;
+  opacity: 1;
+}
+.oo-ui-tagMultiselectWidget-handle > .oo-ui-tagMultiselectWidget-content > input:focus {
+  outline: 0;
+}
+.oo-ui-tagMultiselectWidget-handle > .oo-ui-tagMultiselectWidget-content .oo-ui-tagMultiselectWidget-group:empty + input {
+  margin-left: 0;
+}
+.oo-ui-tagMultiselectWidget.oo-ui-iconElement .oo-ui-tagMultiselectWidget-handle {
+  padding-left: 2.475em;
+}
+.oo-ui-tagMultiselectWidget.oo-ui-iconElement .oo-ui-tagMultiselectWidget-handle > .oo-ui-iconElement-icon {
+  left: 0;
+  margin: 0 0.3em;
+}
+.oo-ui-tagMultiselectWidget.oo-ui-indicatorElement .oo-ui-tagMultiselectWidget-handle {
+  padding-right: 2.4875em;
+}
+.oo-ui-tagMultiselectWidget.oo-ui-indicatorElement .oo-ui-tagMultiselectWidget-handle > .oo-ui-indicatorElement-indicator {
+  right: 0;
+  margin: 0 0.775em;
+}
+.oo-ui-tagMultiselectWidget.oo-ui-widget-enabled .oo-ui-tagMultiselectWidget-handle {
+  background-color: #fff;
+  -webkit-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
+  -moz-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
+  transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
+}
+.oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-inlined:hover .oo-ui-tagMultiselectWidget-handle {
+  border-color: #72777d;
+}
+.oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-inlined.oo-ui-tagMultiselectWidget-focus .oo-ui-tagMultiselectWidget-handle {
+  border-color: #36c;
+  outline: 0;
+  box-shadow: inset 0 0 0 1px #36c;
+}
+.oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-outlined .oo-ui-tagMultiselectWidget-handle {
+  background-color: #f8f9fa;
+  border-bottom: 0;
+  border-bottom-left-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-outlined .oo-ui-tagItemWidget.oo-ui-widget-enabled {
+  background-color: #fff;
+}
+.oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-outlined .oo-ui-inputWidget-input {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.oo-ui-tagMultiselectWidget.oo-ui-widget-disabled .oo-ui-tagMultiselectWidget-handle {
+  color: #72777d;
+  text-shadow: 0 1px 1px #fff;
+  border-color: #c8ccd1;
+  background-color: #eaecf0;
+}
+.oo-ui-tagMultiselectWidget.oo-ui-widget-disabled .oo-ui-tagMultiselectWidget-handle > .oo-ui-iconElement-icon {
+  opacity: 0.51;
+}
+.oo-ui-tagMultiselectWidget.oo-ui-widget-disabled .oo-ui-tagMultiselectWidget-handle > .oo-ui-indicatorElement-indicator {
+  opacity: 0.15;
+}
+.oo-ui-tagItemWidget {
+  position: relative;
+  display: inline-block;
+  cursor: default;
+  white-space: nowrap;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  width: auto;
+  max-width: 100%;
+  height: 1.71875em;
+  margin: 0.3125em 0.3125em 0 0;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  padding: 0 0.3125em;
+  line-height: 1.71875em;
+  vertical-align: middle;
+}
+.oo-ui-tagItemWidget.oo-ui-labelElement .oo-ui-labelElement-label {
+  display: inline-block;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  cursor: text;
+}
+.oo-ui-tagItemWidget.oo-ui-widget-enabled {
+  background-color: #f8f9fa;
+  color: #222;
+  padding-right: 1.5375em;
+  -webkit-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
+  -moz-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
+  transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
+}
+.oo-ui-tagItemWidget.oo-ui-widget-enabled:hover {
+  background-color: #fff;
+  color: #444;
+  border-color: #a2a9b1;
+}
+.oo-ui-tagItemWidget.oo-ui-widget-enabled:focus {
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c;
+  outline: 0;
+}
+.oo-ui-tagItemWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid {
+  border-color: #d33;
+}
+.oo-ui-tagItemWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid:hover {
+  border-color: #d33;
+}
+.oo-ui-tagItemWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid:focus {
+  border-color: #d33;
+  box-shadow: inset 0 0 0 1px #d33;
+}
+.oo-ui-tagItemWidget.oo-ui-widget-enabled > .oo-ui-buttonElement {
+  display: block;
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+}
+.oo-ui-tagItemWidget.oo-ui-widget-enabled .oo-ui-buttonElement-button {
+  display: block;
+  width: 1.5375em;
+  height: 100%;
+}
+.oo-ui-tagItemWidget.oo-ui-widget-enabled .oo-ui-buttonElement-button .oo-ui-indicator-clear {
+  position: absolute;
+  top: 0;
+  right: 0.3em;
+  bottom: 0;
+  height: auto;
+}
+.oo-ui-tagItemWidget.oo-ui-widget-disabled {
+  background-color: #eaecf0;
+  color: #72777d;
+  border-color: #c8ccd1;
+  text-shadow: 0 1px 1px #fff;
+}
+.oo-ui-tagItemWidget.oo-ui-widget-disabled:focus {
+  outline: 0;
+}
+.oo-ui-tagItemWidget.oo-ui-widget-disabled > .oo-ui-buttonElement {
+  display: none;
+}
+.oo-ui-capsuleMultiselectWidget {
+  display: inline-block;
+  position: relative;
+  width: 100%;
+  max-width: 50em;
+}
+.oo-ui-capsuleMultiselectWidget-handle {
+  width: 100%;
+  display: block;
+  position: relative;
+}
+.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon,
+.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator {
+  position: absolute;
+  top: 0;
+  height: 100%;
+}
+.oo-ui-capsuleMultiselectWidget-content {
+  position: relative;
+}
+.oo-ui-capsuleMultiselectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiselectWidget-content > input {
+  display: none;
+}
+.oo-ui-capsuleMultiselectWidget-group {
+  display: inline;
+}
+.oo-ui-capsuleMultiselectWidget-popup > .oo-ui-popupWidget-popup > .oo-ui-popupWidget-body > * {
+  display: block;
+}
+.oo-ui-capsuleMultiselectWidget-focusTrap {
+  display: inline-block;
+  height: 1px;
+  width: 1px;
+}
+.oo-ui-capsuleMultiselectWidget-handle {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  min-height: 2.5em;
+  margin-right: 0.5em;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  padding: 0 0.625em 0.3125em;
+  line-height: 1;
+}
+.oo-ui-capsuleMultiselectWidget-handle:last-child {
+  margin-right: 0;
+}
+.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input {
+  background-color: transparent;
+  color: #000;
+  border: 0;
+  margin: 0.46875em 0 0 0.390625em;
+  padding: 0;
+  font-family: inherit;
+  font-size: inherit;
+  line-height: 1.563em;
+  vertical-align: middle;
+}
+.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::-webkit-input-placeholder {
+  color: #72777d;
+  opacity: 1;
+}
+.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:-ms-input-placeholder {
+  color: #72777d;
+  opacity: 1;
+}
+.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::-moz-placeholder {
+  color: #72777d;
+  opacity: 1;
+}
+.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:-moz-placeholder {
+  color: #72777d;
+  opacity: 1;
+}
+.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::placeholder {
+  color: #72777d;
+  opacity: 1;
+}
+.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:focus {
+  outline: 0;
+}
+.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content .oo-ui-capsuleMultiselectWidget-group:empty + input {
+  margin-left: 0;
+}
+.oo-ui-capsuleMultiselectWidget.oo-ui-iconElement .oo-ui-capsuleMultiselectWidget-handle {
+  padding-left: 2.5em;
+}
+.oo-ui-capsuleMultiselectWidget.oo-ui-iconElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon {
+  left: 0.46875em;
+}
+.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle {
+  padding-right: 2.8125em;
+}
+.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator {
+  right: 0.9375em;
+}
+.oo-ui-capsuleMultiselectWidget-popup {
+  margin-top: -1px;
+}
+.oo-ui-capsuleMultiselectWidget-popup > .oo-ui-popupWidget-popup {
+  border: 0;
+}
+.oo-ui-capsuleMultiselectWidget.oo-ui-widget-enabled .oo-ui-capsuleMultiselectWidget-handle {
+  background-color: #fff;
+  cursor: text;
+  -webkit-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
+  -moz-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
+  transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
+}
+.oo-ui-capsuleMultiselectWidget.oo-ui-widget-enabled:hover .oo-ui-capsuleMultiselectWidget-handle {
+  border-color: #72777d;
+}
+.oo-ui-capsuleMultiselectWidget.oo-ui-widget-enabled.oo-ui-capsuleMultiselectWidget-open .oo-ui-capsuleMultiselectWidget-handle {
+  border-color: #36c;
+  outline: 0;
+  box-shadow: inset 0 0 0 1px #36c;
+}
+.oo-ui-capsuleMultiselectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiselectWidget-handle {
+  color: #72777d;
+  text-shadow: 0 1px 1px #fff;
+  border-color: #c8ccd1;
+  background-color: #eaecf0;
+}
+.oo-ui-capsuleMultiselectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon {
+  opacity: 0.51;
+}
+.oo-ui-capsuleMultiselectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator {
+  opacity: 0.15;
+}
+.oo-ui-capsuleItemWidget {
+  position: relative;
+  display: inline-block;
+  cursor: default;
+  white-space: nowrap;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  width: auto;
+  max-width: 100%;
+  height: 1.71875em;
+  margin: 0.3125em 0.3125em 0 0;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  padding: 0 0.3125em;
+  line-height: 1.71875em;
+  vertical-align: middle;
+}
+.oo-ui-capsuleItemWidget.oo-ui-labelElement .oo-ui-labelElement-label {
+  display: inline-block;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  cursor: text;
+}
+.oo-ui-capsuleItemWidget.oo-ui-widget-enabled {
+  background-color: #f8f9fa;
+  color: #222;
+  padding-right: 1.5375em;
+  -webkit-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
+  -moz-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
+  transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
+}
+.oo-ui-capsuleItemWidget.oo-ui-widget-enabled:hover {
+  background-color: #fff;
+  color: #444;
+  border-color: #a2a9b1;
+}
+.oo-ui-capsuleItemWidget.oo-ui-widget-enabled:focus {
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c;
+  outline: 0;
+}
+.oo-ui-capsuleItemWidget.oo-ui-widget-enabled > .oo-ui-buttonElement {
+  display: block;
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+}
+.oo-ui-capsuleItemWidget.oo-ui-widget-enabled .oo-ui-buttonElement-button {
+  display: block;
+  width: 1.5375em;
+  height: 100%;
+}
+.oo-ui-capsuleItemWidget.oo-ui-widget-enabled .oo-ui-buttonElement-button .oo-ui-indicator-clear {
+  position: absolute;
+  top: 0;
+  right: 0.3em;
+  bottom: 0;
+  height: auto;
+}
+.oo-ui-capsuleItemWidget.oo-ui-widget-disabled {
+  background-color: #eaecf0;
+  color: #72777d;
+  border-color: #c8ccd1;
+  text-shadow: 0 1px 1px #fff;
+}
+.oo-ui-capsuleItemWidget.oo-ui-widget-disabled > .oo-ui-buttonElement {
+  display: none;
+}
+.oo-ui-searchWidget-query {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+}
+.oo-ui-searchWidget-query .oo-ui-textInputWidget {
+  width: 100%;
+}
+.oo-ui-searchWidget-results {
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+.oo-ui-searchWidget-query {
+  height: 4.375em;
+  padding: 0 1.25em;
+  border-bottom: 1px solid #c8ccd1;
+  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
+}
+.oo-ui-searchWidget-query .oo-ui-textInputWidget {
+  margin: 0.9375em 0;
+}
+.oo-ui-searchWidget-results {
+  top: 4.375em;
+  padding: 1.25em;
+  line-height: 0;
+}
+.oo-ui-numberInputWidget {
+  display: inline-block;
+  position: relative;
+  max-width: 50em;
+}
+.oo-ui-numberInputWidget-buttoned .oo-ui-buttonWidget,
+.oo-ui-numberInputWidget-buttoned .oo-ui-inputWidget-input {
+  display: table-cell;
+  height: 100%;
+}
+.oo-ui-numberInputWidget-field {
+  display: table;
+  table-layout: fixed;
+  width: 100%;
+}
+.oo-ui-numberInputWidget-buttoned .oo-ui-buttonWidget {
+  width: 2.5em;
+}
+.oo-ui-numberInputWidget-buttoned .oo-ui-buttonWidget .oo-ui-buttonElement-button {
+  display: block;
+  min-width: 2.5em;
+  min-height: 2.5em;
+  padding-left: 0;
+  padding-right: 0;
+}
+.oo-ui-numberInputWidget-buttoned .oo-ui-buttonWidget .oo-ui-buttonElement-button .oo-ui-iconElement-icon {
+  left: 0.46875em;
+  min-width: 20px;
+  width: 1.5625em;
+}
+.oo-ui-numberInputWidget-buttoned .oo-ui-inputWidget-input {
+  border-radius: 0;
+}
+.oo-ui-numberInputWidget-minusButton > .oo-ui-buttonElement-button {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+  border-right-width: 0;
+}
+.oo-ui-numberInputWidget-plusButton > .oo-ui-buttonElement-button {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+  border-left-width: 0;
+}
+.oo-ui-numberInputWidget.oo-ui-widget-disabled.oo-ui-numberInputWidget-buttoned .oo-ui-iconElement-icon {
+  opacity: 1;
+}
index 2b2f2ca..ee4d8c4 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.0
+ * OOjs UI v0.22.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-11T22:51:05Z
+ * Date: 2017-05-31T19:07:36Z
  */
 ( function ( OO ) {
 
@@ -609,7 +609,7 @@ OO.ui.mixin.RequestManager.prototype.getRequest = null;
 OO.ui.mixin.RequestManager.prototype.getRequestCacheDataFromResponse = null;
 
 /**
- * LookupElement is a mixin that creates a {@link OO.ui.FloatingMenuSelectWidget menu} of suggested values for
+ * LookupElement is a mixin that creates a {@link OO.ui.MenuSelectWidget menu} of suggested values for
  * a {@link OO.ui.TextInputWidget text input widget}. Suggested values are based on the characters the user types
  * into the text input field and, in general, the menu is only displayed when the user types. If a suggested value is chosen
  * from the lookup menu, that value becomes the value of the input field.
@@ -628,7 +628,8 @@ OO.ui.mixin.RequestManager.prototype.getRequestCacheDataFromResponse = null;
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$overlay] Overlay for the lookup menu; defaults to relative positioning
+ * @cfg {jQuery} [$overlay] Overlay for the lookup menu; defaults to relative positioning.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  * @cfg {jQuery} [$container=this.$element] The container element. The lookup menu is rendered beneath the specified element.
  * @cfg {boolean} [allowSuggestionsWhenEmpty=false] Request and display a lookup menu when the text input is empty.
  *  By default, the lookup menu is not generated and displayed until the user begins to type.
@@ -644,10 +645,10 @@ OO.ui.mixin.LookupElement = function OoUiMixinLookupElement( config ) {
 
        // Properties
        this.$overlay = config.$overlay || this.$element;
-       this.lookupMenu = new OO.ui.FloatingMenuSelectWidget( {
+       this.lookupMenu = new OO.ui.MenuSelectWidget( {
                widget: this,
                input: this,
-               $container: config.$container || this.$element
+               $floatableContainer: config.$container || this.$element
        } );
 
        this.allowSuggestionsWhenEmpty = config.allowSuggestionsWhenEmpty || false;
@@ -669,6 +670,11 @@ OO.ui.mixin.LookupElement = function OoUiMixinLookupElement( config ) {
        } );
 
        // Initialization
+       this.$input.attr( {
+               role: 'combobox',
+               'aria-owns': this.lookupMenu.getElementId(),
+               'aria-autocomplete': 'list'
+       } );
        this.$element.addClass( 'oo-ui-lookupElement' );
        this.lookupMenu.$element.addClass( 'oo-ui-lookupElement-menu' );
        this.$overlay.append( this.lookupMenu.$element );
@@ -760,7 +766,7 @@ OO.ui.mixin.LookupElement.prototype.onLookupMenuItemChoose = function ( item ) {
  * Get lookup menu.
  *
  * @private
- * @return {OO.ui.FloatingMenuSelectWidget}
+ * @return {OO.ui.MenuSelectWidget}
  */
 OO.ui.mixin.LookupElement.prototype.getLookupMenu = function () {
        return this.lookupMenu;
@@ -959,23 +965,24 @@ OO.ui.mixin.LookupElement.prototype.getRequestCacheDataFromResponse = function (
 };
 
 /**
- * CardLayouts are used within {@link OO.ui.IndexLayout index layouts} to create cards that users can select and display
- * from the index's optional {@link OO.ui.TabSelectWidget tab} navigation. Cards are usually not instantiated directly,
- * rather extended to include the required content and functionality.
+ * TabPanelLayouts are used within {@link OO.ui.IndexLayout index layouts} to create tab panels that
+ * users can select and display from the index's optional {@link OO.ui.TabSelectWidget tab}
+ * navigation. TabPanels are usually not instantiated directly, rather extended to include the
+ * required content and functionality.
  *
- * Each card must have a unique symbolic name, which is passed to the constructor. In addition, the card's tab
- * item is customized (with a label) using the #setupTabItem method. See
+ * Each tab panel must have a unique symbolic name, which is passed to the constructor. In addition,
+ * the tab panel's tab item is customized (with a label) using the #setupTabItem method. See
  * {@link OO.ui.IndexLayout IndexLayout} for an example.
  *
  * @class
  * @extends OO.ui.PanelLayout
  *
  * @constructor
- * @param {string} name Unique symbolic name of card
+ * @param {string} name Unique symbolic name of tab panel
  * @param {Object} [config] Configuration options
- * @cfg {jQuery|string|Function|OO.ui.HtmlSnippet} [label] Label for card's tab
+ * @cfg {jQuery|string|Function|OO.ui.HtmlSnippet} [label] Label for tab panel's tab
  */
-OO.ui.CardLayout = function OoUiCardLayout( name, config ) {
+OO.ui.TabPanelLayout = function OoUiTabPanelLayout( name, config ) {
        // Allow passing positional parameters inside the config object
        if ( OO.isPlainObject( name ) && config === undefined ) {
                config = name;
@@ -986,7 +993,7 @@ OO.ui.CardLayout = function OoUiCardLayout( name, config ) {
        config = $.extend( { scrollable: true }, config );
 
        // Parent constructor
-       OO.ui.CardLayout.parent.call( this, config );
+       OO.ui.TabPanelLayout.parent.call( this, config );
 
        // Properties
        this.name = name;
@@ -995,55 +1002,56 @@ OO.ui.CardLayout = function OoUiCardLayout( name, config ) {
        this.active = false;
 
        // Initialization
-       this.$element.addClass( 'oo-ui-cardLayout' );
+       this.$element.addClass( 'oo-ui-tabPanelLayout' );
 };
 
 /* Setup */
 
-OO.inheritClass( OO.ui.CardLayout, OO.ui.PanelLayout );
+OO.inheritClass( OO.ui.TabPanelLayout, OO.ui.PanelLayout );
 
 /* Events */
 
 /**
- * An 'active' event is emitted when the card becomes active. Cards become active when they are
- * shown in a index layout that is configured to display only one card at a time.
+ * An 'active' event is emitted when the tab panel becomes active. Tab panels become active when they are
+ * shown in a index layout that is configured to display only one tab panel at a time.
  *
  * @event active
- * @param {boolean} active Card is active
+ * @param {boolean} active Tab panel is active
  */
 
 /* Methods */
 
 /**
- * Get the symbolic name of the card.
+ * Get the symbolic name of the tab panel.
  *
- * @return {string} Symbolic name of card
+ * @return {string} Symbolic name of tab panel
  */
-OO.ui.CardLayout.prototype.getName = function () {
+OO.ui.TabPanelLayout.prototype.getName = function () {
        return this.name;
 };
 
 /**
- * Check if card is active.
+ * Check if tab panel is active.
  *
- * Cards become active when they are shown in a {@link OO.ui.IndexLayout index layout} that is configured to display
- * only one card at a time. Additional CSS is applied to the card's tab item to reflect the active state.
+ * Tab panels become active when they are shown in a {@link OO.ui.IndexLayout index layout} that is configured to
+ * display only one tab panel at a time. Additional CSS is applied to the tab panel's tab item to reflect the
+ * active state.
  *
- * @return {boolean} Card is active
+ * @return {boolean} Tab panel is active
  */
-OO.ui.CardLayout.prototype.isActive = function () {
+OO.ui.TabPanelLayout.prototype.isActive = function () {
        return this.active;
 };
 
 /**
  * Get tab item.
  *
- * The tab item allows users to access the card from the index's tab
+ * The tab item allows users to access the tab panel from the index's tab
  * navigation. The tab item itself can be customized (with a label, level, etc.) using the #setupTabItem method.
  *
  * @return {OO.ui.TabOptionWidget|null} Tab option widget
  */
-OO.ui.CardLayout.prototype.getTabItem = function () {
+OO.ui.TabPanelLayout.prototype.getTabItem = function () {
        return this.tabItem;
 };
 
@@ -1057,7 +1065,7 @@ OO.ui.CardLayout.prototype.getTabItem = function () {
  * @param {OO.ui.TabOptionWidget|null} tabItem Tab option widget, null to clear
  * @chainable
  */
-OO.ui.CardLayout.prototype.setTabItem = function ( tabItem ) {
+OO.ui.TabPanelLayout.prototype.setTabItem = function ( tabItem ) {
        this.tabItem = tabItem || null;
        if ( tabItem ) {
                this.setupTabItem();
@@ -1075,7 +1083,7 @@ OO.ui.CardLayout.prototype.setTabItem = function ( tabItem ) {
  * @param {OO.ui.TabOptionWidget} tabItem Tab option widget to set up
  * @chainable
  */
-OO.ui.CardLayout.prototype.setupTabItem = function () {
+OO.ui.TabPanelLayout.prototype.setupTabItem = function () {
        if ( this.label ) {
                this.tabItem.setLabel( this.label );
        }
@@ -1083,25 +1091,42 @@ OO.ui.CardLayout.prototype.setupTabItem = function () {
 };
 
 /**
- * Set the card to its 'active' state.
+ * Set the tab panel to its 'active' state.
  *
- * Cards become active when they are shown in a index layout that is configured to display only one card at a time. Additional
- * CSS is applied to the tab item to reflect the card's active state. Outside of the index
- * context, setting the active state on a card does nothing.
+ * Tab panels become active when they are shown in a index layout that is configured to display only
+ * one tab panel at a time. Additional CSS is applied to the tab item to reflect the tab panel's
+ * active state. Outside of the index context, setting the active state on a tab panel does nothing.
  *
- * @param {boolean} active Card is active
+ * @param {boolean} active Tab panel is active
  * @fires active
  */
-OO.ui.CardLayout.prototype.setActive = function ( active ) {
+OO.ui.TabPanelLayout.prototype.setActive = function ( active ) {
        active = !!active;
 
        if ( active !== this.active ) {
                this.active = active;
-               this.$element.toggleClass( 'oo-ui-cardLayout-active', this.active );
+               this.$element.toggleClass( 'oo-ui-tabPanelLayout-active', this.active );
                this.emit( 'active', this.active );
        }
 };
 
+/**
+ * The deprecated name for the TabPanelLayout, provided for backwards-compatibility.
+ *
+ * @class
+ * @extends OO.ui.TabPanelLayout
+ *
+ * @constructor
+ * @deprecated since v0.21.3
+ */
+OO.ui.CardLayout = function OoUiCardLayout() {
+       OO.ui.warnDeprecation( 'CardLayout has been renamed to TabPanel layout. Use that instead. See T155152' );
+       // Parent constructor
+       OO.ui.CardLayout.parent.apply( this, arguments );
+};
+
+OO.inheritClass( OO.ui.CardLayout, OO.ui.TabPanelLayout );
+
 /**
  * PageLayouts are used within {@link OO.ui.BookletLayout booklet layouts} to create pages that users can select and display
  * from the booklet's optional {@link OO.ui.OutlineSelectWidget outline} navigation. Pages are usually not instantiated directly,
@@ -2229,34 +2254,34 @@ OO.ui.BookletLayout.prototype.selectFirstSelectablePage = function () {
 };
 
 /**
- * IndexLayouts contain {@link OO.ui.CardLayout card layouts} as well as
- * {@link OO.ui.TabSelectWidget tabs} that allow users to easily navigate through the cards and
- * select which one to display. By default, only one card is displayed at a time. When a user
- * navigates to a new card, the index layout automatically focuses on the first focusable element,
+ * IndexLayouts contain {@link OO.ui.TabPanelLayout tab panel layouts} as well as
+ * {@link OO.ui.TabSelectWidget tabs} that allow users to easily navigate through the tab panels and
+ * select which one to display. By default, only one tab panel is displayed at a time. When a user
+ * navigates to a new tab panel, the index layout automatically focuses on the first focusable element,
  * unless the default setting is changed.
  *
  * TODO: This class is similar to BookletLayout, we may want to refactor to reduce duplication
  *
  *     @example
- *     // Example of a IndexLayout that contains two CardLayouts.
+ *     // Example of a IndexLayout that contains two TabPanelLayouts.
  *
- *     function CardOneLayout( name, config ) {
- *         CardOneLayout.parent.call( this, name, config );
- *         this.$element.append( '<p>First card</p>' );
+ *     function TabPanelOneLayout( name, config ) {
+ *         TabPanelOneLayout.parent.call( this, name, config );
+ *         this.$element.append( '<p>First tab panel</p>' );
  *     }
- *     OO.inheritClass( CardOneLayout, OO.ui.CardLayout );
- *     CardOneLayout.prototype.setupTabItem = function () {
- *         this.tabItem.setLabel( 'Card one' );
+ *     OO.inheritClass( TabPanelOneLayout, OO.ui.TabPanelLayout );
+ *     TabPanelOneLayout.prototype.setupTabItem = function () {
+ *         this.tabItem.setLabel( 'Tab panel one' );
  *     };
  *
- *     var card1 = new CardOneLayout( 'one' ),
- *         card2 = new OO.ui.CardLayout( 'two', { label: 'Card two' } );
+ *     var tabPanel1 = new TabPanelOneLayout( 'one' ),
+ *         tabPanel2 = new OO.ui.TabPanelLayout( 'two', { label: 'Tab panel two' } );
  *
- *     card2.$element.append( '<p>Second card</p>' );
+ *     tabPanel2.$element.append( '<p>Second tab panel</p>' );
  *
  *     var index = new OO.ui.IndexLayout();
  *
- *     index.addCards ( [ card1, card2 ] );
+ *     index.addTabPanels ( [ tabPanel1, tabPanel2 ] );
  *     $( 'body' ).append( index.$element );
  *
  * @class
@@ -2264,9 +2289,9 @@ OO.ui.BookletLayout.prototype.selectFirstSelectablePage = function () {
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [continuous=false] Show all cards, one after another
+ * @cfg {boolean} [continuous=false] Show all tab panels, one after another
  * @cfg {boolean} [expanded=true] Expand the content panel to fill the entire parent element.
- * @cfg {boolean} [autoFocus=true] Focus on the first focusable element when a new card is displayed. Disabled on mobile.
+ * @cfg {boolean} [autoFocus=true] Focus on the first focusable element when a new tab panel is displayed. Disabled on mobile.
  */
 OO.ui.IndexLayout = function OoUiIndexLayout( config ) {
        // Configuration initialization
@@ -2276,8 +2301,37 @@ OO.ui.IndexLayout = function OoUiIndexLayout( config ) {
        OO.ui.IndexLayout.parent.call( this, config );
 
        // Properties
-       this.currentCardName = null;
-       this.cards = {};
+       this.currentTabPanelName = null;
+       this.tabPanels = {};
+
+       Object.defineProperty( this, 'currentCardName', {
+               // TODO: read documentation
+               configurable: true,
+               enumerable: true,
+               get: function () {
+                       OO.ui.warnDeprecation( 'IndexLayout\'s currentCardName property is deprecated. Use currentTabPanelName instead. See T155152' );
+                       return this.currentTabPanelName;
+               },
+               set: function ( value ) {
+                       OO.ui.warnDeprecation( 'IndexLayout\'s currentCardName property is deprecated. Use currentTabPanelName instead. See T155152' );
+                       this.currentTabPanelName = value;
+               }
+       } );
+
+       Object.defineProperty( this, 'cards', {
+               // TODO: read documentation
+               configurable: true,
+               enumerable: true,
+               get: function () {
+                       OO.ui.warnDeprecation( 'IndexLayout\'s cards property is deprecated. Use tabPanels instead. See T155152' );
+                       return this.tabPanels;
+               },
+               set: function ( value ) {
+                       OO.ui.warnDeprecation( 'IndexLayout\'s cards property is deprecated. Use tabPanels instead. See T155152' );
+                       this.tabPanels = value;
+               }
+       } );
+
        this.ignoreFocus = false;
        this.stackLayout = new OO.ui.StackLayout( {
                continuous: !!config.continuous,
@@ -2315,25 +2369,25 @@ OO.inheritClass( OO.ui.IndexLayout, OO.ui.MenuLayout );
 /* Events */
 
 /**
- * A 'set' event is emitted when a card is {@link #setCard set} to be displayed by the index layout.
+ * A 'set' event is emitted when a tab panel is {@link #setTabPanel set} to be displayed by the index layout.
  * @event set
- * @param {OO.ui.CardLayout} card Current card
+ * @param {OO.ui.TabPanelLayout} tabPanel Current tab panel
  */
 
 /**
- * An 'add' event is emitted when cards are {@link #addCards added} to the index layout.
+ * An 'add' event is emitted when tab panels are {@link #addTabPanels added} to the index layout.
  *
  * @event add
- * @param {OO.ui.CardLayout[]} card Added cards
- * @param {number} index Index cards were added at
+ * @param {OO.ui.TabPanelLayout[]} tabPanel Added tab panels
+ * @param {number} index Index tab panels were added at
  */
 
 /**
- * A 'remove' event is emitted when cards are {@link #clearCards cleared} or
- * {@link #removeCards removed} from the index.
+ * A 'remove' event is emitted when tab panels are {@link #clearTabPanels cleared} or
+ * {@link #removeTabPanels removed} from the index.
  *
  * @event remove
- * @param {OO.ui.CardLayout[]} cards Removed cards
+ * @param {OO.ui.TabPanelLayout[]} tabPanel Removed tab panels
  */
 
 /* Methods */
@@ -2342,17 +2396,17 @@ OO.inheritClass( OO.ui.IndexLayout, OO.ui.MenuLayout );
  * Handle stack layout focus.
  *
  * @private
- * @param {jQuery.Event} e Focusin event
+ * @param {jQuery.Event} e Focusing event
  */
 OO.ui.IndexLayout.prototype.onStackLayoutFocus = function ( e ) {
        var name, $target;
 
-       // Find the card that an element was focused within
-       $target = $( e.target ).closest( '.oo-ui-cardLayout' );
-       for ( name in this.cards ) {
-               // Check for card match, exclude current card to find only card changes
-               if ( this.cards[ name ].$element[ 0 ] === $target[ 0 ] && name !== this.currentCardName ) {
-                       this.setCard( name );
+       // Find the tab panel that an element was focused within
+       $target = $( e.target ).closest( '.oo-ui-tabPanelLayout' );
+       for ( name in this.tabPanels ) {
+               // Check for tab panel match, exclude current tab panel to find only tab panel changes
+               if ( this.tabPanels[ name ].$element[ 0 ] === $target[ 0 ] && name !== this.currentTabPanelName ) {
+                       this.setTabPanel( name );
                        break;
                }
        }
@@ -2362,12 +2416,12 @@ OO.ui.IndexLayout.prototype.onStackLayoutFocus = function ( e ) {
  * Handle stack layout set events.
  *
  * @private
- * @param {OO.ui.PanelLayout|null} card The card panel that is now the current panel
+ * @param {OO.ui.PanelLayout|null} tabPanel The tab panel that is now the current panel
  */
-OO.ui.IndexLayout.prototype.onStackLayoutSet = function ( card ) {
+OO.ui.IndexLayout.prototype.onStackLayoutSet = function ( tabPanel ) {
        var layout = this;
-       if ( card ) {
-               card.scrollElementIntoView().done( function () {
+       if ( tabPanel ) {
+               tabPanel.scrollElementIntoView().done( function () {
                        if ( layout.autoFocus && !OO.ui.isMobile() ) {
                                layout.focus();
                        }
@@ -2376,33 +2430,33 @@ OO.ui.IndexLayout.prototype.onStackLayoutSet = function ( card ) {
 };
 
 /**
- * Focus the first input in the current card.
+ * Focus the first input in the current tab panel.
  *
- * If no card is selected, the first selectable card will be selected.
- * If the focus is already in an element on the current card, nothing will happen.
+ * If no tab panel is selected, the first selectable tab panel will be selected.
+ * If the focus is already in an element on the current tab panel, nothing will happen.
  *
  * @param {number} [itemIndex] A specific item to focus on
  */
 OO.ui.IndexLayout.prototype.focus = function ( itemIndex ) {
-       var card,
+       var tabPanel,
                items = this.stackLayout.getItems();
 
        if ( itemIndex !== undefined && items[ itemIndex ] ) {
-               card = items[ itemIndex ];
+               tabPanel = items[ itemIndex ];
        } else {
-               card = this.stackLayout.getCurrentItem();
+               tabPanel = this.stackLayout.getCurrentItem();
        }
 
-       if ( !card ) {
-               this.selectFirstSelectableCard();
-               card = this.stackLayout.getCurrentItem();
+       if ( !tabPanel ) {
+               this.selectFirstSelectableTabPanel();
+               tabPanel = this.stackLayout.getCurrentItem();
        }
-       if ( !card ) {
+       if ( !tabPanel ) {
                return;
        }
        // Only change the focus if is not already in the current page
-       if ( !OO.ui.contains( card.$element[ 0 ], this.getElementDocument().activeElement, true ) ) {
-               card.focus();
+       if ( !OO.ui.contains( tabPanel.$element[ 0 ], this.getElementDocument().activeElement, true ) ) {
+               tabPanel.focus();
        }
 };
 
@@ -2422,26 +2476,26 @@ OO.ui.IndexLayout.prototype.focusFirstFocusable = function () {
  */
 OO.ui.IndexLayout.prototype.onTabSelectWidgetSelect = function ( item ) {
        if ( item ) {
-               this.setCard( item.getData() );
+               this.setTabPanel( item.getData() );
        }
 };
 
 /**
- * Get the card closest to the specified card.
+ * Get the tab panel closest to the specified tab panel.
  *
- * @param {OO.ui.CardLayout} card Card to use as a reference point
- * @return {OO.ui.CardLayout|null} Card closest to the specified card
+ * @param {OO.ui.TabPanelLayout} tabPanel Tab panel to use as a reference point
+ * @return {OO.ui.TabPanelLayout|null} Tab panel closest to the specified
  */
-OO.ui.IndexLayout.prototype.getClosestCard = function ( card ) {
+OO.ui.IndexLayout.prototype.getClosestTabPanel = function ( tabPanel ) {
        var next, prev, level,
-               cards = this.stackLayout.getItems(),
-               index = cards.indexOf( card );
+               tabPanels = this.stackLayout.getItems(),
+               index = tabPanels.indexOf( tabPanel );
 
        if ( index !== -1 ) {
-               next = cards[ index + 1 ];
-               prev = cards[ index - 1 ];
-               // Prefer adjacent cards at the same level
-               level = this.tabSelectWidget.getItemFromData( card.getName() ).getLevel();
+               next = tabPanels[ index + 1 ];
+               prev = tabPanels[ index - 1 ];
+               // Prefer adjacent tab panels at the same level
+               level = this.tabSelectWidget.getItemFromData( tabPanel.getName() ).getLevel();
                if (
                        prev &&
                        level === this.tabSelectWidget.getItemFromData( prev.getName() ).getLevel()
@@ -2458,6 +2512,18 @@ OO.ui.IndexLayout.prototype.getClosestCard = function ( card ) {
        return prev || next || null;
 };
 
+/**
+ * Get the tab panel closest to the specified tab panel.
+ *
+ * @param {OO.ui.TabPanelLayout} tabPanel Tab panel to use as a reference point
+ * @return {OO.ui.TabPanelLayout|null} Tab panel closest to the specified
+ * @deprecated since v0.21.3, use `getClosestTabPanel` instead
+ */
+OO.ui.IndexLayout.prototype.getClosestCard = function ( tabPanel ) {
+       OO.ui.warnDeprecation( 'IndexLayout\'s getClosestCard method is deprecated. Use getClosestTabPanel instead. See T155152' );
+       return this.getClosestTabPanel( tabPanel );
+};
+
 /**
  * Get the tabs widget.
  *
@@ -2468,202 +2534,294 @@ OO.ui.IndexLayout.prototype.getTabs = function () {
 };
 
 /**
- * Get a card by its symbolic name.
+ * Get a tab panel by its symbolic name.
+ *
+ * @param {string} name Symbolic name of tab panel
+ * @return {OO.ui.TabPanelLayout|undefined} Tab panel, if found
+ */
+OO.ui.IndexLayout.prototype.getTabPanel = function ( name ) {
+       return this.tabPanels[ name ];
+};
+
+/**
+ * Get a tab panel by its symbolic name.
  *
- * @param {string} name Symbolic name of card
- * @return {OO.ui.CardLayout|undefined} Card, if found
+ * @param {string} name Symbolic name of tab panel
+ * @return {OO.ui.TabPanelLayout|undefined} Tab panel, if found
+ * @deprecated since v0.21.3, use `getTabPanel` instead
  */
 OO.ui.IndexLayout.prototype.getCard = function ( name ) {
-       return this.cards[ name ];
+       OO.ui.warnDeprecation( 'IndexLayout\'s getCard method is deprecated. Use getTabPanel instead. See T155152' );
+       return this.getTabPanel( name );
+};
+
+/**
+ * Get the current tab panel.
+ *
+ * @return {OO.ui.TabPanelLayout|undefined} Current tab panel, if found
+ */
+OO.ui.IndexLayout.prototype.getCurrentTabPanel = function () {
+       var name = this.getCurrentTabPanelName();
+       return name ? this.getTabPanel( name ) : undefined;
 };
 
 /**
- * Get the current card.
+ * Get the current tab panel.
  *
- * @return {OO.ui.CardLayout|undefined} Current card, if found
+ * @return {OO.ui.TabPanelLayout|undefined} Current tab panel, if found
+ * @deprecated since v0.21.3, use `getCurrentTabPanel` instead
  */
 OO.ui.IndexLayout.prototype.getCurrentCard = function () {
-       var name = this.getCurrentCardName();
-       return name ? this.getCard( name ) : undefined;
+       OO.ui.warnDeprecation( 'IndexLayout\'s getCurrentCard method is deprecated. Use getCurrentTabPanel instead. See T155152' );
+       return this.getCurrentTabPanel();
 };
 
 /**
- * Get the symbolic name of the current card.
+ * Get the symbolic name of the current tab panel.
  *
- * @return {string|null} Symbolic name of the current card
+ * @return {string|null} Symbolic name of the current tab panel
+ */
+OO.ui.IndexLayout.prototype.getCurrentTabPanelName = function () {
+       return this.currentTabPanelName;
+};
+
+/**
+ * Get the symbolic name of the current tab panel.
+ *
+ * @return {string|null} Symbolic name of the current tab panel
+ * @deprecated since v0.21.3, use `getCurrentTabPanelName` instead
  */
 OO.ui.IndexLayout.prototype.getCurrentCardName = function () {
-       return this.currentCardName;
+       OO.ui.warnDeprecation( 'IndexLayout\'s getCurrentCardName method is deprecated. Use getCurrentTabPanelName instead. See T155152' );
+       return this.getCurrentTabPanelName();
 };
 
 /**
- * Add cards to the index layout
+ * Add tab panels to the index layout
  *
- * When cards are added with the same names as existing cards, the existing cards will be
- * automatically removed before the new cards are added.
+ * When tab panels are added with the same names as existing tab panels, the existing tab panels
+ * will be automatically removed before the new tab panels are added.
  *
- * @param {OO.ui.CardLayout[]} cards Cards to add
+ * @param {OO.ui.TabPanelLayout[]} tabPanels Tab panels to add
  * @param {number} index Index of the insertion point
  * @fires add
  * @chainable
  */
-OO.ui.IndexLayout.prototype.addCards = function ( cards, index ) {
-       var i, len, name, card, item, currentIndex,
-               stackLayoutCards = this.stackLayout.getItems(),
+OO.ui.IndexLayout.prototype.addTabPanels = function ( tabPanels, index ) {
+       var i, len, name, tabPanel, item, currentIndex,
+               stackLayoutTabPanels = this.stackLayout.getItems(),
                remove = [],
                items = [];
 
-       // Remove cards with same names
-       for ( i = 0, len = cards.length; i < len; i++ ) {
-               card = cards[ i ];
-               name = card.getName();
+       // Remove tab panels with same names
+       for ( i = 0, len = tabPanels.length; i < len; i++ ) {
+               tabPanel = tabPanels[ i ];
+               name = tabPanel.getName();
 
-               if ( Object.prototype.hasOwnProperty.call( this.cards, name ) ) {
+               if ( Object.prototype.hasOwnProperty.call( this.tabPanels, name ) ) {
                        // Correct the insertion index
-                       currentIndex = stackLayoutCards.indexOf( this.cards[ name ] );
+                       currentIndex = stackLayoutTabPanels.indexOf( this.tabPanels[ name ] );
                        if ( currentIndex !== -1 && currentIndex + 1 < index ) {
                                index--;
                        }
-                       remove.push( this.cards[ name ] );
+                       remove.push( this.tabPanels[ name ] );
                }
        }
        if ( remove.length ) {
-               this.removeCards( remove );
+               this.removeTabPanels( remove );
        }
 
-       // Add new cards
-       for ( i = 0, len = cards.length; i < len; i++ ) {
-               card = cards[ i ];
-               name = card.getName();
-               this.cards[ card.getName() ] = card;
+       // Add new tab panels
+       for ( i = 0, len = tabPanels.length; i < len; i++ ) {
+               tabPanel = tabPanels[ i ];
+               name = tabPanel.getName();
+               this.tabPanels[ tabPanel.getName() ] = tabPanel;
                item = new OO.ui.TabOptionWidget( { data: name } );
-               card.setTabItem( item );
+               tabPanel.setTabItem( item );
                items.push( item );
        }
 
        if ( items.length ) {
                this.tabSelectWidget.addItems( items, index );
-               this.selectFirstSelectableCard();
+               this.selectFirstSelectableTabPanel();
        }
-       this.stackLayout.addItems( cards, index );
-       this.emit( 'add', cards, index );
+       this.stackLayout.addItems( tabPanels, index );
+       this.emit( 'add', tabPanels, index );
 
        return this;
 };
 
 /**
- * Remove the specified cards from the index layout.
+ * Add tab panels to the index layout
+ *
+ * When tab panels are added with the same names as existing tab panels, the existing tab panels
+ * will be automatically removed before the new tab panels are added.
+ *
+ * @param {OO.ui.TabPanelLayout[]} tabPanels Tab panels to add
+ * @param {number} index Index of the insertion point
+ * @fires add
+ * @chainable
+ * @deprecated since v0.21.3, use `addTabPanels` instead
+ */
+OO.ui.IndexLayout.prototype.addCards = function ( tabPanels, index ) {
+       OO.ui.warnDeprecation( 'IndexLayout\'s addCards method is deprecated. Use addTabPanels instead. See T155152' );
+       return this.addTabPanels( tabPanels, index );
+};
+
+/**
+ * Remove the specified tab panels from the index layout.
  *
- * To remove all cards from the index, you may wish to use the #clearCards method instead.
+ * To remove all tab panels from the index, you may wish to use the #clearTabPanels method instead.
  *
- * @param {OO.ui.CardLayout[]} cards An array of cards to remove
+ * @param {OO.ui.TabPanelLayout[]} tabPanels An array of tab panels to remove
  * @fires remove
  * @chainable
  */
-OO.ui.IndexLayout.prototype.removeCards = function ( cards ) {
-       var i, len, name, card,
+OO.ui.IndexLayout.prototype.removeTabPanels = function ( tabPanels ) {
+       var i, len, name, tabPanel,
                items = [];
 
-       for ( i = 0, len = cards.length; i < len; i++ ) {
-               card = cards[ i ];
-               name = card.getName();
-               delete this.cards[ name ];
+       for ( i = 0, len = tabPanels.length; i < len; i++ ) {
+               tabPanel = tabPanels[ i ];
+               name = tabPanel.getName();
+               delete this.tabPanels[ name ];
                items.push( this.tabSelectWidget.getItemFromData( name ) );
-               card.setTabItem( null );
+               tabPanel.setTabItem( null );
        }
        if ( items.length ) {
                this.tabSelectWidget.removeItems( items );
-               this.selectFirstSelectableCard();
+               this.selectFirstSelectableTabPanel();
        }
-       this.stackLayout.removeItems( cards );
-       this.emit( 'remove', cards );
+       this.stackLayout.removeItems( tabPanels );
+       this.emit( 'remove', tabPanels );
 
        return this;
 };
 
 /**
- * Clear all cards from the index layout.
+ * Remove the specified tab panels from the index layout.
  *
- * To remove only a subset of cards from the index, use the #removeCards method.
+ * To remove all tab panels from the index, you may wish to use the #clearTabPanels method instead.
  *
+ * @param {OO.ui.TabPanelLayout[]} tabPanels An array of tab panels to remove
  * @fires remove
  * @chainable
+ * @deprecated since v0.21.3, use `removeTabPanels` instead
  */
-OO.ui.IndexLayout.prototype.clearCards = function () {
+OO.ui.IndexLayout.prototype.removeCards = function ( tabPanels ) {
+       OO.ui.warnDeprecation( 'IndexLayout\'s removeCards method is deprecated. Use removeTabPanels instead. See T155152.' );
+       return this.removeTabPanels( tabPanels );
+};
+
+/**
+ * Clear all tab panels from the index layout.
+ *
+ * To remove only a subset of tab panels from the index, use the #removeTabPanels method.
+ *
+ * @fires remove
+ * @chainable
+ */
+OO.ui.IndexLayout.prototype.clearTabPanels = function () {
        var i, len,
-               cards = this.stackLayout.getItems();
+               tabPanels = this.stackLayout.getItems();
 
-       this.cards = {};
-       this.currentCardName = null;
+       this.tabPanels = {};
+       this.currentTabPanelName = null;
        this.tabSelectWidget.clearItems();
-       for ( i = 0, len = cards.length; i < len; i++ ) {
-               cards[ i ].setTabItem( null );
+       for ( i = 0, len = tabPanels.length; i < len; i++ ) {
+               tabPanels[ i ].setTabItem( null );
        }
        this.stackLayout.clearItems();
 
-       this.emit( 'remove', cards );
+       this.emit( 'remove', tabPanels );
 
        return this;
 };
 
 /**
- * Set the current card by symbolic name.
+ * Clear all tab panels from the index layout.
+ *
+ * To remove only a subset of tab panels from the index, use the #removeTabPanels method.
+ *
+ * @fires remove
+ * @chainable
+ * @deprecated since v0.21.3, use `clearTabPanels` instead
+ */
+OO.ui.IndexLayout.prototype.clearCards = function () {
+       OO.ui.warnDeprecation( 'IndexLayout\'s clearCards method is deprecated. Use clearTabPanels instead. See T155152.' );
+       return this.clearTabPanels();
+};
+
+/**
+ * Set the current tab panel by symbolic name.
  *
  * @fires set
- * @param {string} name Symbolic name of card
+ * @param {string} name Symbolic name of tab panel
  */
-OO.ui.IndexLayout.prototype.setCard = function ( name ) {
+OO.ui.IndexLayout.prototype.setTabPanel = function ( name ) {
        var selectedItem,
                $focused,
-               card = this.cards[ name ],
-               previousCard = this.currentCardName && this.cards[ this.currentCardName ];
+               tabPanel = this.tabPanels[ name ],
+               previousTabPanel = this.currentTabPanelName && this.tabPanels[ this.currentTabPanelName ];
 
-       if ( name !== this.currentCardName ) {
+       if ( name !== this.currentTabPanelName ) {
                selectedItem = this.tabSelectWidget.getSelectedItem();
                if ( selectedItem && selectedItem.getData() !== name ) {
                        this.tabSelectWidget.selectItemByData( name );
                }
-               if ( card ) {
-                       if ( previousCard ) {
-                               previousCard.setActive( false );
-                               // Blur anything focused if the next card doesn't have anything focusable.
-                               // This is not needed if the next card has something focusable (because once it is focused
+               if ( tabPanel ) {
+                       if ( previousTabPanel ) {
+                               previousTabPanel.setActive( false );
+                               // Blur anything focused if the next tab panel doesn't have anything focusable.
+                               // This is not needed if the next tab panel has something focusable (because once it is focused
                                // this blur happens automatically). If the layout is non-continuous, this check is
-                               // meaningless because the next card is not visible yet and thus can't hold focus.
+                               // meaningless because the next tab panel is not visible yet and thus can't hold focus.
                                if (
                                        this.autoFocus &&
                                        !OO.ui.isMobile() &&
                                        this.stackLayout.continuous &&
-                                       OO.ui.findFocusable( card.$element ).length !== 0
+                                       OO.ui.findFocusable( tabPanel.$element ).length !== 0
                                ) {
-                                       $focused = previousCard.$element.find( ':focus' );
+                                       $focused = previousTabPanel.$element.find( ':focus' );
                                        if ( $focused.length ) {
                                                $focused[ 0 ].blur();
                                        }
                                }
                        }
-                       this.currentCardName = name;
-                       card.setActive( true );
-                       this.stackLayout.setItem( card );
-                       if ( !this.stackLayout.continuous && previousCard ) {
-                               // This should not be necessary, since any inputs on the previous card should have been
+                       this.currentTabPanelName = name;
+                       tabPanel.setActive( true );
+                       this.stackLayout.setItem( tabPanel );
+                       if ( !this.stackLayout.continuous && previousTabPanel ) {
+                               // This should not be necessary, since any inputs on the previous tab panel should have been
                                // blurred when it was hidden, but browsers are not very consistent about this.
-                               $focused = previousCard.$element.find( ':focus' );
+                               $focused = previousTabPanel.$element.find( ':focus' );
                                if ( $focused.length ) {
                                        $focused[ 0 ].blur();
                                }
                        }
-                       this.emit( 'set', card );
+                       this.emit( 'set', tabPanel );
                }
        }
 };
 
 /**
- * Select the first selectable card.
+ * Set the current tab panel by symbolic name.
+ *
+ * @fires set
+ * @param {string} name Symbolic name of tab panel
+ * @deprecated since v0.21.3, use `setTabPanel` instead
+ */
+OO.ui.IndexLayout.prototype.setCard = function ( name ) {
+       OO.ui.warnDeprecation( 'IndexLayout\'s setCard method is deprecated. Use setTabPanel instead. See T155152.' );
+       return this.setTabPanel( name );
+};
+
+/**
+ * Select the first selectable tab panel.
  *
  * @chainable
  */
-OO.ui.IndexLayout.prototype.selectFirstSelectableCard = function () {
+OO.ui.IndexLayout.prototype.selectFirstSelectableTabPanel = function () {
        if ( !this.tabSelectWidget.getSelectedItem() ) {
                this.tabSelectWidget.selectItem( this.tabSelectWidget.getFirstSelectableItem() );
        }
@@ -2671,6 +2829,17 @@ OO.ui.IndexLayout.prototype.selectFirstSelectableCard = function () {
        return this;
 };
 
+/**
+ * Select the first selectable tab panel.
+ *
+ * @chainable
+ * @deprecated since v0.21.3, use `selectFirstSelectableTabPanel` instead
+ */
+OO.ui.IndexLayout.prototype.selectFirstSelectableCard = function () {
+       OO.ui.warnDeprecation( 'IndexLayout\'s selectFirstSelectableCard method is deprecated. Use selectFirestSelectableTabPanel instead. See T155152.' );
+       return this.selectFirstSelectableTabPanel();
+};
+
 /**
  * ToggleWidget implements basic behavior of widgets with an on/off state.
  * Please see OO.ui.ToggleButtonWidget and OO.ui.ToggleSwitchWidget for examples.
@@ -2725,7 +2894,7 @@ OO.ui.ToggleWidget.prototype.getValue = function () {
 };
 
 /**
- * Set the state of the toggle: `true` for 'on', `false' for 'off'.
+ * Set the state of the toggle: `true` for 'on', `false` for 'off'.
  *
  * @param {boolean} value The state of the toggle
  * @fires change
@@ -2738,7 +2907,6 @@ OO.ui.ToggleWidget.prototype.setValue = function ( value ) {
                this.emit( 'change', value );
                this.$element.toggleClass( 'oo-ui-toggleWidget-on', value );
                this.$element.toggleClass( 'oo-ui-toggleWidget-off', !value );
-               this.$element.attr( 'aria-checked', value.toString() );
        }
        return this;
 };
@@ -2959,6 +3127,25 @@ OO.ui.ToggleSwitchWidget.prototype.onKeyPress = function ( e ) {
        }
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.ToggleSwitchWidget.prototype.setValue = function ( value ) {
+       OO.ui.ToggleSwitchWidget.parent.prototype.setValue.call( this, value );
+       this.$element.attr( 'aria-checked', this.value.toString() );
+       return this;
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.ToggleSwitchWidget.prototype.simulateLabelClick = function () {
+       if ( !this.isDisabled() ) {
+               this.setValue( !this.value );
+       }
+       this.focus();
+};
+
 /**
  * OutlineControlsWidget is a set of controls for an {@link OO.ui.OutlineSelectWidget outline select widget}.
  * Controls include moving items up and down, removing items, and adding different kinds of items.
@@ -3459,7 +3646,7 @@ OO.mixinClass( OO.ui.ButtonSelectWidget, OO.ui.mixin.TabIndexedElement );
  * TabOptionWidget is an item in a {@link OO.ui.TabSelectWidget TabSelectWidget}.
  *
  * Currently, this class is only used by {@link OO.ui.IndexLayout index layouts}, which contain
- * {@link OO.ui.CardLayout card layouts}. See {@link OO.ui.IndexLayout IndexLayout}
+ * {@link OO.ui.TabPanelLayout tab panel layouts}. See {@link OO.ui.IndexLayout IndexLayout}
  * for an example.
  *
  * @class
@@ -3628,13 +3815,6 @@ OO.ui.CapsuleItemWidget.prototype.onKeyDown = function ( e ) {
        }
 };
 
-/**
- * Focuses the capsule
- */
-OO.ui.CapsuleItemWidget.prototype.focus = function () {
-       this.$element.focus();
-};
-
 /**
  * CapsuleMultiselectWidgets are something like a {@link OO.ui.ComboBoxInputWidget combo box widget}
  * that allows for selecting multiple values.
@@ -3683,7 +3863,7 @@ OO.ui.CapsuleItemWidget.prototype.focus = function () {
  * @mixins OO.ui.mixin.IndicatorElement
  * @mixins OO.ui.mixin.IconElement
  * @uses OO.ui.CapsuleItemWidget
- * @uses OO.ui.FloatingMenuSelectWidget
+ * @uses OO.ui.MenuSelectWidget
  *
  * @constructor
  * @param {Object} [config] Configuration options
@@ -3701,6 +3881,7 @@ OO.ui.CapsuleItemWidget.prototype.focus = function () {
  *  its containing `<div>`. The specified overlay layer is usually on top of
  *  the containing `<div>` and has a larger area. By default, the menu uses
  *  relative positioning.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  */
 OO.ui.CapsuleMultiselectWidget = function OoUiCapsuleMultiselectWidget( config ) {
        var $tabFocus;
@@ -3745,11 +3926,11 @@ OO.ui.CapsuleMultiselectWidget = function OoUiCapsuleMultiselectWidget( config )
        this.allowArbitrary = config.allowArbitrary;
        this.allowDuplicates = config.allowDuplicates;
        this.$overlay = config.$overlay;
-       this.menu = new OO.ui.FloatingMenuSelectWidget( $.extend(
+       this.menu = new OO.ui.MenuSelectWidget( $.extend(
                {
                        widget: this,
                        $input: this.$input,
-                       $container: this.$element,
+                       $floatableContainer: this.$element,
                        filterFromInput: true,
                        disabled: this.isDisabled()
                },
@@ -3795,6 +3976,7 @@ OO.ui.CapsuleMultiselectWidget = function OoUiCapsuleMultiselectWidget( config )
                this.$input.prop( 'disabled', this.isDisabled() );
                this.$input.attr( {
                        role: 'combobox',
+                       'aria-owns': this.menu.getElementId(),
                        'aria-autocomplete': 'list'
                } );
        }
@@ -3839,10 +4021,6 @@ OO.mixinClass( OO.ui.CapsuleMultiselectWidget, OO.ui.mixin.TabIndexedElement );
 OO.mixinClass( OO.ui.CapsuleMultiselectWidget, OO.ui.mixin.IndicatorElement );
 OO.mixinClass( OO.ui.CapsuleMultiselectWidget, OO.ui.mixin.IconElement );
 
-/* Static Properties */
-
-OO.ui.CapsuleMultiselectWidget.static.supportsSimpleLabel = true;
-
 /* Events */
 
 /**
@@ -3879,23 +4057,13 @@ OO.ui.CapsuleMultiselectWidget.prototype.createItemWidget = function ( data, lab
 };
 
 /**
- * Get the widget's input's id, or generate one, if it has an input.
- *
- * @return {string}
+ * @inheritdoc
  */
 OO.ui.CapsuleMultiselectWidget.prototype.getInputId = function () {
-       var id;
        if ( !this.$input ) {
-               return false;
-       }
-
-       id = this.$input.attr( 'id' );
-       if ( id === undefined ) {
-               id = OO.ui.generateElementId();
-               this.$input.attr( 'id', id );
+               return null;
        }
-
-       return id;
+       return OO.ui.mixin.TabIndexedElement.prototype.getInputId.call( this );
 };
 
 /**
@@ -4180,6 +4348,7 @@ OO.ui.CapsuleMultiselectWidget.prototype.getMenu = function () {
  */
 OO.ui.CapsuleMultiselectWidget.prototype.onInputFocus = function () {
        if ( !this.isDisabled() ) {
+               this.updateInputSize();
                this.menu.toggle( true );
        }
 };
@@ -4448,7 +4617,6 @@ OO.ui.CapsuleMultiselectWidget.prototype.setDisabled = function ( disabled ) {
  * Focus the widget
  *
  * @chainable
- * @return {OO.ui.CapsuleMultiselectWidget}
  */
 OO.ui.CapsuleMultiselectWidget.prototype.focus = function () {
        if ( !this.isDisabled() ) {
@@ -4457,9 +4625,7 @@ OO.ui.CapsuleMultiselectWidget.prototype.focus = function () {
                        this.popup.toggle( true );
                        OO.ui.findFocusable( this.popup.$element ).focus();
                } else {
-                       this.updateInputSize();
-                       this.menu.toggle( true );
-                       this.$input.focus();
+                       OO.ui.mixin.TabIndexedElement.prototype.focus.call( this );
                }
        }
        return this;
@@ -4598,6 +4764,7 @@ OO.ui.TagItemWidget.prototype.remove = function () {
  *
  * @fires navigate
  * @fires remove
+ * @param {jQuery.Event} e Key down event
  * @return {boolean|undefined} false to stop the operation
  */
 OO.ui.TagItemWidget.prototype.onKeyDown = function ( e ) {
@@ -4633,15 +4800,6 @@ OO.ui.TagItemWidget.prototype.onKeyDown = function ( e ) {
        }
 };
 
-/**
- * Focuses the capsule
- */
-OO.ui.TagItemWidget.prototype.focus = function () {
-       if ( !this.isDisabled() ) {
-               this.$element.focus();
-       }
-};
-
 /**
  * Select this item
  *
@@ -4713,6 +4871,9 @@ OO.ui.TagItemWidget.prototype.isValid = function () {
  * @constructor
  * @param {Object} config Configuration object
  * @cfg {Object} [input] Configuration options for the input widget
+ * @cfg {OO.ui.InputWidget} [inputWidget] An optional input widget. If given, it will
+ *  replace the input widget used in the TagMultiselectWidget. If not given,
+ *  TagMultiselectWidget creates its own.
  * @cfg {boolean} [inputPosition='inline'] Position of the input. Options are:
  *     - inline: The input is invisible, but exists inside the tag list, so
  *             the user types into the tag groups to add tags.
@@ -4802,14 +4963,17 @@ OO.ui.TagMultiselectWidget = function OoUiTagMultiselectWidget( config ) {
        // Initialize
        this.$element
                .addClass( 'oo-ui-tagMultiselectWidget' )
-               .addClass( 'oo-ui-tagMultiselectWidget-inputPosition-' + this.inputPosition )
                .append( this.$handle );
 
        if ( this.hasInput ) {
-               this.input = new OO.ui.TextInputWidget( $.extend( {
-                       placeholder: config.placeholder,
-                       classes: [ 'oo-ui-tagMultiselectWidget-input' ]
-               }, config.input ) );
+               if ( config.inputWidget ) {
+                       this.input = config.inputWidget;
+               } else {
+                       this.input = new OO.ui.TextInputWidget( $.extend( {
+                               placeholder: config.placeholder,
+                               classes: [ 'oo-ui-tagMultiselectWidget-input' ]
+                       }, config.input ) );
+               }
                this.input.setDisabled( this.isDisabled() );
 
                inputEvents = {
@@ -4828,8 +4992,11 @@ OO.ui.TagMultiselectWidget = function OoUiTagMultiselectWidget( config ) {
                        // in the case the widget is outline so it can
                        // stretch all the way if the widet is wide
                        this.input.$element.css( 'max-width', 'inherit' );
-                       this.$element.append( this.input.$element );
+                       this.$element
+                               .addClass( 'oo-ui-tagMultiselectWidget-outlined' )
+                               .append( this.input.$element );
                } else {
+                       this.$element.addClass( 'oo-ui-tagMultiselectWidget-inlined' );
                        // HACK: When the widget is using 'inline' input, the
                        // behavior needs to only use the $input itself
                        // so we style and size it accordingly (otherwise
@@ -4841,6 +5008,8 @@ OO.ui.TagMultiselectWidget = function OoUiTagMultiselectWidget( config ) {
                        // having only the $input attached to the DOM
                        this.$content.append( this.input.$input );
                }
+       } else {
+               this.$content.append( $tabFocus );
        }
 
        this.setTabIndexedElement(
@@ -4965,12 +5134,16 @@ OO.ui.TagMultiselectWidget.prototype.onInputKeyDown = function ( e ) {
 /**
  * Respond to input focus event
  */
-OO.ui.TagMultiselectWidget.prototype.onInputFocus = function () {};
+OO.ui.TagMultiselectWidget.prototype.onInputFocus = function () {
+       this.$element.addClass( 'oo-ui-tagMultiselectWidget-focus' );
+};
 
 /**
  * Respond to input blur event
  */
-OO.ui.TagMultiselectWidget.prototype.onInputBlur = function () {};
+OO.ui.TagMultiselectWidget.prototype.onInputBlur = function () {
+       this.$element.removeClass( 'oo-ui-tagMultiselectWidget-focus' );
+};
 
 /**
  * Perform an action after the enter key on the input
@@ -4993,7 +5166,7 @@ OO.ui.TagMultiselectWidget.prototype.doInputEnter = function () {
  * a meta key like 'ctrl'
  * @return {boolean} Whether to prevent defaults
  */
-OO.ui.TagMultiselectWidget.prototype.doInputBackspace = function () {
+OO.ui.TagMultiselectWidget.prototype.doInputBackspace = function ( e, withMetaKey ) {
        var items, item;
 
        if (
@@ -5004,8 +5177,12 @@ OO.ui.TagMultiselectWidget.prototype.doInputBackspace = function () {
                // Delete the last item
                items = this.getItems();
                item = items[ items.length - 1 ];
-               this.input.setValue( item.getData() );
                this.removeItems( [ item ] );
+               // If Ctrl/Cmd was pressed, delete item entirely.
+               // Otherwise put it into the text field for editing.
+               if ( !withMetaKey ) {
+                       this.input.setValue( item.getData() );
+               }
 
                return false;
        }
@@ -5015,7 +5192,6 @@ OO.ui.TagMultiselectWidget.prototype.doInputBackspace = function () {
  * Perform an action after the escape key on the input
  *
  * @param {jQuery.Event} e Event data
- * @return {boolean} Whether to prevent defaults
  */
 OO.ui.TagMultiselectWidget.prototype.doInputEscape = function () {
        this.clearInput();
@@ -5030,9 +5206,8 @@ OO.ui.TagMultiselectWidget.prototype.doInputEscape = function () {
  * @param {string} direction Direction of the movement; forwards or backwards
  * @param {boolean} [withMetaKey] Whether this key was pressed with
  *  a meta key like 'ctrl'
- * @return {boolean} Whether to prevent defaults
  */
-OO.ui.TagMultiselectWidget.prototype.doInputArrow = function ( direction ) {
+OO.ui.TagMultiselectWidget.prototype.doInputArrow = function ( e, direction ) {
        if (
                this.inputPosition === 'inline' &&
                !this.isEmpty()
@@ -5049,6 +5224,8 @@ OO.ui.TagMultiselectWidget.prototype.doInputArrow = function ( direction ) {
 
 /**
  * Respond to item select event
+ *
+ * @param {OO.ui.TagItemWidget} item Selected item
  */
 OO.ui.TagMultiselectWidget.prototype.onTagSelect = function ( item ) {
        if ( this.hasInput && this.allowEditTags ) {
@@ -5155,15 +5332,9 @@ OO.ui.TagMultiselectWidget.prototype.isDuplicateData = function ( data ) {
  * Check whether a given value is allowed to be added
  *
  * @param {string|Object} data Requested value
- * @return {boolean} Value exists in the allowed values list
+ * @return {boolean} Value is allowed
  */
 OO.ui.TagMultiselectWidget.prototype.isAllowedData = function ( data ) {
-       var hash = OO.getHash( data );
-
-       if ( this.allowArbitrary ) {
-               return true;
-       }
-
        if (
                !this.allowDuplicates &&
                this.isDuplicateData( data )
@@ -5171,10 +5342,14 @@ OO.ui.TagMultiselectWidget.prototype.isAllowedData = function ( data ) {
                return false;
        }
 
+       if ( this.allowArbitrary ) {
+               return true;
+       }
+
        // Check with allowed values
        if (
                this.getAllowedValues().some( function ( value ) {
-                       return hash === OO.getHash( value );
+                       return data === value;
                } )
        ) {
                return true;
@@ -5203,15 +5378,6 @@ OO.ui.TagMultiselectWidget.prototype.addAllowedValue = function ( value ) {
        }
 };
 
-/**
- * Focus the widget
- */
-OO.ui.TagMultiselectWidget.prototype.focus = function () {
-       if ( this.hasInput ) {
-               this.input.focus();
-       }
-};
-
 /**
  * Get the datas of the currently selected items
  *
@@ -5230,7 +5396,7 @@ OO.ui.TagMultiselectWidget.prototype.getValue = function () {
 /**
  * Set the value of this widget by datas.
  *
- * @param {string|string[]|Object|Object[]} value An object representing the data
+ * @param {string|string[]|Object|Object[]} valueObject An object representing the data
  *  and label of the value. If the widget allows arbitrary values,
  *  the items will be added as-is. Otherwise, the data value will
  *  be checked against allowedValues.
@@ -5273,7 +5439,9 @@ OO.ui.TagMultiselectWidget.prototype.addTag = function ( data, label ) {
                newItemWidget = this.createTagItemWidget( data, label );
                newItemWidget.toggleValid( isValid );
                this.addItems( [ newItemWidget ] );
+               return true;
        }
+       return false;
 };
 
 /**
@@ -5505,7 +5673,8 @@ OO.ui.TagMultiselectWidget.prototype.isValid = function () {
  * @mixins OO.ui.mixin.PopupElement
  *
  * @param {Object} config Configuration object
- * @cfg {jQuery} [$overlay] An overlay for the popup
+ * @cfg {jQuery} [$overlay] An overlay for the popup.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  * @cfg {Object} [popup] Configuration options for the popup
  * @cfg {OO.ui.InputWidget} [popupInput] An input widget inside the popup that will be
  *  focused when the popup is opened and will be used as replacement for the
@@ -5559,9 +5728,10 @@ OO.ui.PopupTagMultiselectWidget = function OoUiPopupTagMultiselectWidget( config
        }
 
        // Events
+       this.on( 'resize', this.popup.updateDimensions.bind( this.popup ) );
        this.popup.connect( this, { toggle: 'onPopupToggle' } );
        this.$tabIndexed
-               .on( 'focus', this.focus.bind( this ) );
+               .on( 'focus', this.onFocus.bind( this ) );
 
        // Initialize
        this.$element
@@ -5577,17 +5747,11 @@ OO.mixinClass( OO.ui.PopupTagMultiselectWidget, OO.ui.mixin.PopupElement );
 /* Methods */
 
 /**
- * @inheritdoc
+ * Focus event handler.
+ *
+ * @private
  */
-OO.ui.PopupTagMultiselectWidget.prototype.focus = function () {
-       // Since the parent deals with input focus, only
-       // call the parent method if our input isn't in the
-       // popup
-       if ( !this.popupInput ) {
-               // Parent method
-               OO.ui.PopupTagMultiselectWidget.parent.prototype.focus.call( this );
-       }
-
+OO.ui.PopupTagMultiselectWidget.prototype.onFocus = function () {
        this.popup.toggle( true );
 };
 
@@ -5668,7 +5832,8 @@ OO.ui.PopupTagMultiselectWidget.prototype.addTagByPopupValue = function ( data,
  * @constructor
  * @param {Object} [config] Configuration object
  * @cfg {Object} [menu] Configuration object for the menu widget
- * @cfg {jQuery} [$overlay] An overlay for the menu
+ * @cfg {jQuery} [$overlay] An overlay for the menu.
+ *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
  * @cfg {Object[]} [options=[]] Array of menu options in the format `{ data: …, label: … }`
  */
 OO.ui.MenuTagMultiselectWidget = function OoUiMenuTagMultiselectWidget( config ) {
@@ -5686,7 +5851,7 @@ OO.ui.MenuTagMultiselectWidget = function OoUiMenuTagMultiselectWidget( config )
                filterFromInput: !!this.hasInput,
                $autoCloseIgnore: this.hasInput ?
                        this.input.$element.add( this.$overlay ) : this.$overlay,
-               $container: this.hasInput && this.inputPosition === 'outline' ?
+               $floatableContainer: this.hasInput && this.inputPosition === 'outline' ?
                        this.input.$element : this.$element,
                $overlay: this.$overlay,
                disabled: this.isDisabled()
@@ -5708,6 +5873,11 @@ OO.ui.MenuTagMultiselectWidget = function OoUiMenuTagMultiselectWidget( config )
                .append( this.menu.$element );
        this.$element
                .addClass( 'oo-ui-menuTagMultiselectWidget' );
+       // TagMultiselectWidget already does this, but it doesn't work right because this.menu is not yet
+       // set up while the parent constructor runs, and #getAllowedValues rejects everything.
+       if ( config.selected ) {
+               this.setValue( config.selected );
+       }
 };
 
 /* Initialization */
@@ -5784,6 +5954,7 @@ OO.ui.MenuTagMultiselectWidget.prototype.onTagSelect = function ( tagItem ) {
  */
 OO.ui.MenuTagMultiselectWidget.prototype.addTagFromInput = function () {
        var inputValue = this.input.getValue(),
+               validated = false,
                highlightedItem = this.menu.getHighlightedItem(),
                item = this.menu.getItemFromData( inputValue );
 
@@ -5792,14 +5963,19 @@ OO.ui.MenuTagMultiselectWidget.prototype.addTagFromInput = function () {
 
        // Look for a highlighted item first
        if ( highlightedItem ) {
-               this.addTag( highlightedItem.getData(), highlightedItem.getLabel() );
+               validated = this.addTag( highlightedItem.getData(), highlightedItem.getLabel() );
        } else if ( item ) {
                // Look for the element that fits the data
-               this.addTag( item.getData(), item.getLabel() );
+               validated = this.addTag( item.getData(), item.getLabel() );
        } else {
                // Otherwise, add the tag - the method will only add if the
                // tag is valid or if invalid tags are allowed
-               this.addTag( inputValue );
+               validated = this.addTag( inputValue );
+       }
+
+       if ( validated ) {
+               this.clearInput();
+               this.focus();
        }
 };
 
@@ -5824,13 +6000,13 @@ OO.ui.MenuTagMultiselectWidget.prototype.getMenuVisibleItems = function () {
  * @return {OO.ui.MenuSelectWidget} Menu widget
  */
 OO.ui.MenuTagMultiselectWidget.prototype.createMenuWidget = function ( menuConfig ) {
-       return new OO.ui.FloatingMenuSelectWidget( menuConfig );
+       return new OO.ui.MenuSelectWidget( menuConfig );
 };
 
 /**
  * Add options to the menu
  *
- * @param {Object[]} options Object defining options
+ * @param {Object[]} menuOptions Object defining options
  */
 OO.ui.MenuTagMultiselectWidget.prototype.addOptions = function ( menuOptions ) {
        var widget = this,
@@ -5865,23 +6041,19 @@ OO.ui.MenuTagMultiselectWidget.prototype.getMenu = function () {
 };
 
 /**
- * @inheritdoc
- */
-OO.ui.MenuTagMultiselectWidget.prototype.isAllowedData = function ( data ) {
-       return OO.ui.MenuTagMultiselectWidget.parent.prototype.isAllowedData.call( this, data ) &&
-               !!this.menu.getItemFromData( data );
-};
-
-/**
- * @inheritdoc
+ * Get the allowed values list
+ *
+ * @return {string[]} Allowed data values
  */
-OO.ui.MenuTagMultiselectWidget.prototype.focus = function () {
-       // Parent method
-       OO.ui.MenuTagMultiselectWidget.parent.prototype.focus.call( this );
-
-       if ( !this.isDisabled() ) {
-               this.menu.toggle( true );
+OO.ui.MenuTagMultiselectWidget.prototype.getAllowedValues = function () {
+       var menuDatas = [];
+       if ( this.menu ) {
+               // If the parent constructor is calling us, we're not ready yet, this.menu is not set up.
+               menuDatas = this.menu.getItems().map( function ( menuItem ) {
+                       return menuItem.getData();
+               } );
        }
+       return this.allowedValues.concat( menuDatas );
 };
 
 /**
@@ -6082,10 +6254,27 @@ OO.ui.SelectFileWidget.prototype.setValue = function ( file ) {
  * @chainable
  */
 OO.ui.SelectFileWidget.prototype.focus = function () {
-       this.selectButton.$button[ 0 ].focus();
+       this.selectButton.focus();
+       return this;
+};
+
+/**
+ * Blur the widget.
+ *
+ * @chainable
+ */
+OO.ui.SelectFileWidget.prototype.blur = function () {
+       this.selectButton.blur();
        return this;
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.SelectFileWidget.prototype.simulateLabelClick = function () {
+       this.focus();
+};
+
 /**
  * Update the user interface when a file is selected or unselected
  *
@@ -6535,14 +6724,13 @@ OO.ui.SearchWidget.prototype.getResults = function () {
  *     $( 'body' ).append( numberInput.$element );
  *
  * @class
- * @extends OO.ui.Widget
+ * @extends OO.ui.TextInputWidget
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {Object} [input] Configuration options to pass to the {@link OO.ui.TextInputWidget text input widget}.
  * @cfg {Object} [minusButton] Configuration options to pass to the {@link OO.ui.ButtonWidget decrementing button widget}.
  * @cfg {Object} [plusButton] Configuration options to pass to the {@link OO.ui.ButtonWidget incrementing button widget}.
- * @cfg {boolean} [isInteger=false] Whether the field accepts only integer values.
+ * @cfg {boolean} [allowInteger=false] Whether the field accepts only integer values.
  * @cfg {number} [min=-Infinity] Minimum allowed value
  * @cfg {number} [max=Infinity] Maximum allowed value
  * @cfg {number} [step=1] Delta when using the buttons or up/down arrow keys
@@ -6550,9 +6738,12 @@ OO.ui.SearchWidget.prototype.getResults = function () {
  * @cfg {boolean} [showButtons=true] Whether to show the plus and minus buttons.
  */
 OO.ui.NumberInputWidget = function OoUiNumberInputWidget( config ) {
+       var $field = $( '<div>' )
+               .addClass( 'oo-ui-numberInputWidget-field' );
+
        // Configuration initialization
        config = $.extend( {
-               isInteger: false,
+               allowInteger: false,
                min: -Infinity,
                max: Infinity,
                step: 1,
@@ -6560,24 +6751,22 @@ OO.ui.NumberInputWidget = function OoUiNumberInputWidget( config ) {
                showButtons: true
        }, config );
 
+       // For backward compatibility
+       $.extend( config, config.input );
+       this.input = this;
+
        // Parent constructor
-       OO.ui.NumberInputWidget.parent.call( this, config );
+       OO.ui.NumberInputWidget.parent.call( this, $.extend( config, {
+               type: 'number'
+       } ) );
 
-       // Properties
-       this.input = new OO.ui.TextInputWidget( $.extend(
-               {
-                       disabled: this.isDisabled(),
-                       type: 'number'
-               },
-               config.input
-       ) );
        if ( config.showButtons ) {
                this.minusButton = new OO.ui.ButtonWidget( $.extend(
                        {
                                disabled: this.isDisabled(),
                                tabIndex: -1,
                                classes: [ 'oo-ui-numberInputWidget-minusButton' ],
-                               label: '−'
+                               icon: 'subtract'
                        },
                        config.minusButton
                ) );
@@ -6586,18 +6775,14 @@ OO.ui.NumberInputWidget = function OoUiNumberInputWidget( config ) {
                                disabled: this.isDisabled(),
                                tabIndex: -1,
                                classes: [ 'oo-ui-numberInputWidget-plusButton' ],
-                               label: '+'
+                               icon: 'add'
                        },
                        config.plusButton
                ) );
        }
 
        // Events
-       this.input.connect( this, {
-               change: this.emit.bind( this, 'change' ),
-               enter: this.emit.bind( this, 'enter' )
-       } );
-       this.input.$input.on( {
+       this.$input.on( {
                keydown: this.onKeyDown.bind( this ),
                'wheel mousewheel DOMMouseScroll': this.onWheel.bind( this )
        } );
@@ -6610,40 +6795,31 @@ OO.ui.NumberInputWidget = function OoUiNumberInputWidget( config ) {
                } );
        }
 
-       // Initialization
-       this.setIsInteger( !!config.isInteger );
-       this.setRange( config.min, config.max );
-       this.setStep( config.step, config.pageStep );
-
-       this.$field = $( '<div>' ).addClass( 'oo-ui-numberInputWidget-field' )
-               .append( this.input.$element );
-       this.$element.addClass( 'oo-ui-numberInputWidget' ).append( this.$field );
+       // Build the field
+       $field.append( this.$input );
        if ( config.showButtons ) {
-               this.$field
+               $field
                        .prepend( this.minusButton.$element )
                        .append( this.plusButton.$element );
-               this.$element.addClass( 'oo-ui-numberInputWidget-buttoned' );
        }
-       this.input.setValidation( this.validateNumber.bind( this ) );
-};
-
-/* Setup */
 
-OO.inheritClass( OO.ui.NumberInputWidget, OO.ui.Widget );
+       // Initialization
+       this.setAllowInteger( config.allowInteger || config.isInteger );
+       this.setRange( config.min, config.max );
+       this.setStep( config.step, config.pageStep );
+       // Set the validation method after we set allowInteger and range
+       // so that it doesn't immediately call setValidityFlag
+       this.setValidation( this.validateNumber.bind( this ) );
 
-/* Events */
+       this.$element
+               .addClass( 'oo-ui-numberInputWidget' )
+               .toggleClass( 'oo-ui-numberInputWidget-buttoned', config.showButtons )
+               .append( $field );
+};
 
-/**
- * A `change` event is emitted when the value of the input changes.
- *
- * @event change
- */
+/* Setup */
 
-/**
- * An `enter` event is emitted when the user presses 'enter' inside the text box.
- *
- * @event enter
- */
+OO.inheritClass( OO.ui.NumberInputWidget, OO.ui.TextInputWidget );
 
 /* Methods */
 
@@ -6652,19 +6828,23 @@ OO.inheritClass( OO.ui.NumberInputWidget, OO.ui.Widget );
  *
  * @param {boolean} flag
  */
-OO.ui.NumberInputWidget.prototype.setIsInteger = function ( flag ) {
-       this.isInteger = !!flag;
-       this.input.setValidityFlag();
+OO.ui.NumberInputWidget.prototype.setAllowInteger = function ( flag ) {
+       this.allowInteger = !!flag;
+       this.setValidityFlag();
 };
+// Backward compatibility
+OO.ui.NumberInputWidget.prototype.setIsInteger = OO.ui.NumberInputWidget.prototype.setAllowInteger;
 
 /**
  * Get whether only integers are allowed
  *
  * @return {boolean} Flag value
  */
-OO.ui.NumberInputWidget.prototype.getIsInteger = function () {
-       return this.isInteger;
+OO.ui.NumberInputWidget.prototype.getAllowInteger = function () {
+       return this.allowInteger;
 };
+// Backward compatibility
+OO.ui.NumberInputWidget.prototype.getIsInteger = OO.ui.NumberInputWidget.prototype.getAllowInteger;
 
 /**
  * Set the range of allowed values
@@ -6678,7 +6858,7 @@ OO.ui.NumberInputWidget.prototype.setRange = function ( min, max ) {
        }
        this.min = min;
        this.max = max;
-       this.input.setValidityFlag();
+       this.setValidityFlag();
 };
 
 /**
@@ -6718,31 +6898,13 @@ OO.ui.NumberInputWidget.prototype.getStep = function () {
        return [ this.step, this.pageStep ];
 };
 
-/**
- * Get the current value of the widget
- *
- * @return {string}
- */
-OO.ui.NumberInputWidget.prototype.getValue = function () {
-       return this.input.getValue();
-};
-
 /**
  * Get the current value of the widget as a number
  *
  * @return {number} May be NaN, or an invalid number
  */
 OO.ui.NumberInputWidget.prototype.getNumericValue = function () {
-       return +this.input.getValue();
-};
-
-/**
- * Set the value of the widget
- *
- * @param {string} value Invalid values are allowed
- */
-OO.ui.NumberInputWidget.prototype.setValue = function ( value ) {
-       this.input.setValue( value );
+       return +this.getValue();
 };
 
 /**
@@ -6763,7 +6925,7 @@ OO.ui.NumberInputWidget.prototype.adjustValue = function ( delta ) {
        } else {
                n = v + delta;
                n = Math.max( Math.min( n, this.max ), this.min );
-               if ( this.isInteger ) {
+               if ( this.allowInteger ) {
                        n = Math.round( n );
                }
        }
@@ -6772,7 +6934,6 @@ OO.ui.NumberInputWidget.prototype.adjustValue = function ( delta ) {
                this.setValue( n );
        }
 };
-
 /**
  * Validate input
  *
@@ -6782,11 +6943,15 @@ OO.ui.NumberInputWidget.prototype.adjustValue = function ( delta ) {
  */
 OO.ui.NumberInputWidget.prototype.validateNumber = function ( value ) {
        var n = +value;
+       if ( value === '' ) {
+               return !this.isRequired();
+       }
+
        if ( isNaN( n ) || !isFinite( n ) ) {
                return false;
        }
 
-       if ( this.isInteger && Math.floor( n ) !== n ) {
+       if ( this.allowInteger && Math.floor( n ) !== n ) {
                return false;
        }
 
@@ -6816,7 +6981,7 @@ OO.ui.NumberInputWidget.prototype.onButtonClick = function ( dir ) {
 OO.ui.NumberInputWidget.prototype.onWheel = function ( event ) {
        var delta = 0;
 
-       if ( !this.isDisabled() && this.input.$input.is( ':focus' ) ) {
+       if ( !this.isDisabled() && this.$input.is( ':focus' ) ) {
                // Standard 'wheel' event
                if ( event.originalEvent.deltaMode !== undefined ) {
                        this.sawWheelEvent = true;
@@ -6881,9 +7046,6 @@ OO.ui.NumberInputWidget.prototype.setDisabled = function ( disabled ) {
        // Parent method
        OO.ui.NumberInputWidget.parent.prototype.setDisabled.call( this, disabled );
 
-       if ( this.input ) {
-               this.input.setDisabled( this.isDisabled() );
-       }
        if ( this.minusButton ) {
                this.minusButton.setDisabled( this.isDisabled() );
        }
@@ -6895,3 +7057,5 @@ OO.ui.NumberInputWidget.prototype.setDisabled = function ( disabled ) {
 };
 
 }( OO ) );
+
+//# sourceMappingURL=oojs-ui-widgets.js.map
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/oojs-ui-widgets.js.map b/resources/lib/oojs-ui/oojs-ui-widgets.js.map
new file mode 100644 (file)
index 0000000..85d88db
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/intro.js.txt","../src/mixins/DraggableElement.js","../src/mixins/DraggableGroupElement.js","../src/mixins/RequestManager.js","../src/mixins/LookupElement.js","../src/layouts/TabPanelLayout.js","../src/layouts/PageLayout.js","../src/layouts/StackLayout.js","../src/layouts/MenuLayout.js","../src/layouts/BookletLayout.js","../src/layouts/IndexLayout.js","../src/widgets/ToggleWidget.js","../src/widgets/ToggleButtonWidget.js","../src/widgets/ToggleSwitchWidget.js","../src/widgets/OutlineControlsWidget.js","../src/widgets/OutlineOptionWidget.js","../src/widgets/OutlineSelectWidget.js","../src/widgets/ButtonOptionWidget.js","../src/widgets/ButtonSelectWidget.js","../src/widgets/TabOptionWidget.js","../src/widgets/TabSelectWidget.js","../src/widgets/CapsuleItemWidget.js","../src/widgets/CapsuleMultiselectWidget.js","../src/widgets/TagItemWidget.js","../src/widgets/TagMultiselectWidget.js","../src/widgets/PopupTagMultiselectWidget.js","../src/widgets/MenuTagMultiselectWidget.js","../src/widgets/SelectFileWidget.js","../src/widgets/SearchWidget.js","../src/widgets/NumberInputWidget.js","../src/outro.js.txt"],"names":[],"mappings":"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","file":"oojs-ui-widgets.js","sourcesContent":["( function ( OO ) {\n\n'use strict';\n","/**\n * DraggableElement is a mixin class used to create elements that can be clicked\n * and dragged by a mouse to a new position within a group. This class must be used\n * in conjunction with OO.ui.mixin.DraggableGroupElement, which provides a container for\n * the draggable elements.\n *\n * @abstract\n * @class\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {jQuery} [$handle] The part of the element which can be used for dragging, defaults to the whole element\n * @cfg {boolean} [draggable] The items are draggable. This can change with #toggleDraggable\n *  but the draggable state should be called from the DraggableGroupElement, which updates\n *  the whole group\n */\nOO.ui.mixin.DraggableElement = function OoUiMixinDraggableElement( config ) {\n\tconfig = config || {};\n\n\t// Properties\n\tthis.index = null;\n\tthis.$handle = config.$handle || this.$element;\n\tthis.wasHandleUsed = null;\n\tthis.draggable = config.draggable === undefined ? true : !!config.draggable;\n\n\t// Initialize and events\n\tthis.$element.addClass( 'oo-ui-draggableElement' )\n\t\t// We make the entire element draggable, not just the handle, so that\n\t\t// the whole element appears to move. wasHandleUsed prevents drags from\n\t\t// starting outside the handle\n\t\t.attr( 'draggable', true )\n\t\t.on( {\n\t\t\tmousedown: this.onDragMouseDown.bind( this ),\n\t\t\tdragstart: this.onDragStart.bind( this ),\n\t\t\tdragover: this.onDragOver.bind( this ),\n\t\t\tdragend: this.onDragEnd.bind( this ),\n\t\t\tdrop: this.onDrop.bind( this )\n\t\t} );\n\tthis.$handle.addClass( 'oo-ui-draggableElement-handle' );\n};\n\nOO.initClass( OO.ui.mixin.DraggableElement );\n\n/* Events */\n\n/**\n * @event dragstart\n *\n * A dragstart event is emitted when the user clicks and begins dragging an item.\n * @param {OO.ui.mixin.DraggableElement} item The item the user has clicked and is dragging with the mouse.\n */\n\n/**\n * @event dragend\n * A dragend event is emitted when the user drags an item and releases the mouse,\n * thus terminating the drag operation.\n */\n\n/**\n * @event drop\n * A drop event is emitted when the user drags an item and then releases the mouse button\n * over a valid target.\n */\n\n/* Static Properties */\n\n/**\n * @inheritdoc OO.ui.mixin.ButtonElement\n */\nOO.ui.mixin.DraggableElement.static.cancelButtonMouseDownEvents = false;\n\n/* Methods */\n\n/**\n * Change the draggable state of this widget.\n * This allows users to temporarily halt the dragging operations.\n *\n * @param {boolean} isDraggable Widget supports draggable operations\n * @fires draggable\n */\nOO.ui.mixin.DraggableElement.prototype.toggleDraggable = function ( isDraggable ) {\n\tisDraggable = isDraggable !== undefined ? !!isDraggable : !this.draggable;\n\n\tif ( this.draggable !== isDraggable ) {\n\t\tthis.draggable = isDraggable;\n\n\t\tthis.$handle.toggleClass( 'oo-ui-draggableElement-undraggable', !this.draggable );\n\t}\n};\n\n/**\n * Check the draggable state of this widget\n *\n * @return {boolean} Widget supports draggable operations\n */\nOO.ui.mixin.DraggableElement.prototype.isDraggable = function () {\n\treturn this.draggable;\n};\n\n/**\n * Respond to mousedown event.\n *\n * @private\n * @param {jQuery.Event} e Drag event\n */\nOO.ui.mixin.DraggableElement.prototype.onDragMouseDown = function ( e ) {\n\tif ( !this.isDraggable() ) {\n\t\treturn;\n\t}\n\n\tthis.wasHandleUsed =\n\t\t// Optimization: if the handle is the whole element this is always true\n\t\tthis.$handle[ 0 ] === this.$element[ 0 ] ||\n\t\t// Check the mousedown occurred inside the handle\n\t\tOO.ui.contains( this.$handle[ 0 ], e.target, true );\n};\n\n/**\n * Respond to dragstart event.\n *\n * @private\n * @param {jQuery.Event} e Drag event\n * @return {boolean} False if the event is cancelled\n * @fires dragstart\n */\nOO.ui.mixin.DraggableElement.prototype.onDragStart = function ( e ) {\n\tvar element = this,\n\t\tdataTransfer = e.originalEvent.dataTransfer;\n\n\tif ( !this.wasHandleUsed || !this.isDraggable() ) {\n\t\treturn false;\n\t}\n\n\t// Define drop effect\n\tdataTransfer.dropEffect = 'none';\n\tdataTransfer.effectAllowed = 'move';\n\t// Support: Firefox\n\t// We must set up a dataTransfer data property or Firefox seems to\n\t// ignore the fact the element is draggable.\n\ttry {\n\t\tdataTransfer.setData( 'application-x/OOjs-UI-draggable', this.getIndex() );\n\t} catch ( err ) {\n\t\t// The above is only for Firefox. Move on if it fails.\n\t}\n\t// Briefly add a 'clone' class to style the browser's native drag image\n\tthis.$element.addClass( 'oo-ui-draggableElement-clone' );\n\t// Add placeholder class after the browser has rendered the clone\n\tsetTimeout( function () {\n\t\telement.$element\n\t\t\t.removeClass( 'oo-ui-draggableElement-clone' )\n\t\t\t.addClass( 'oo-ui-draggableElement-placeholder' );\n\t} );\n\t// Emit event\n\tthis.emit( 'dragstart', this );\n\treturn true;\n};\n\n/**\n * Respond to dragend event.\n *\n * @private\n * @fires dragend\n */\nOO.ui.mixin.DraggableElement.prototype.onDragEnd = function () {\n\tthis.$element.removeClass( 'oo-ui-draggableElement-placeholder' );\n\tthis.emit( 'dragend' );\n};\n\n/**\n * Handle drop event.\n *\n * @private\n * @param {jQuery.Event} e Drop event\n * @fires drop\n */\nOO.ui.mixin.DraggableElement.prototype.onDrop = function ( e ) {\n\te.preventDefault();\n\tthis.emit( 'drop', e );\n};\n\n/**\n * In order for drag/drop to work, the dragover event must\n * return false and stop propogation.\n *\n * @param {jQuery.Event} e Drag event\n * @private\n */\nOO.ui.mixin.DraggableElement.prototype.onDragOver = function ( e ) {\n\te.preventDefault();\n};\n\n/**\n * Set item index.\n * Store it in the DOM so we can access from the widget drag event\n *\n * @private\n * @param {number} index Item index\n */\nOO.ui.mixin.DraggableElement.prototype.setIndex = function ( index ) {\n\tif ( this.index !== index ) {\n\t\tthis.index = index;\n\t\tthis.$element.data( 'index', index );\n\t}\n};\n\n/**\n * Get item index\n *\n * @private\n * @return {number} Item index\n */\nOO.ui.mixin.DraggableElement.prototype.getIndex = function () {\n\treturn this.index;\n};\n","/**\n * DraggableGroupElement is a mixin class used to create a group element to\n * contain draggable elements, which are items that can be clicked and dragged by a mouse.\n * The class is used with OO.ui.mixin.DraggableElement.\n *\n * @abstract\n * @class\n * @mixins OO.ui.mixin.GroupElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {string} [orientation] Item orientation: 'horizontal' or 'vertical'. The orientation\n *  should match the layout of the items. Items displayed in a single row\n *  or in several rows should use horizontal orientation. The vertical orientation should only be\n *  used when the items are displayed in a single column. Defaults to 'vertical'\n * @cfg {boolean} [draggable] The items are draggable. This can change with #toggleDraggable\n */\nOO.ui.mixin.DraggableGroupElement = function OoUiMixinDraggableGroupElement( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.mixin.GroupElement.call( this, config );\n\n\t// Properties\n\tthis.orientation = config.orientation || 'vertical';\n\tthis.dragItem = null;\n\tthis.itemKeys = {};\n\tthis.dir = null;\n\tthis.itemsOrder = null;\n\tthis.draggable = config.draggable === undefined ? true : !!config.draggable;\n\n\t// Events\n\tthis.aggregate( {\n\t\tdragstart: 'itemDragStart',\n\t\tdragend: 'itemDragEnd',\n\t\tdrop: 'itemDrop'\n\t} );\n\tthis.connect( this, {\n\t\titemDragStart: 'onItemDragStart',\n\t\titemDrop: 'onItemDropOrDragEnd',\n\t\titemDragEnd: 'onItemDropOrDragEnd'\n\t} );\n\n\t// Initialize\n\tif ( Array.isArray( config.items ) ) {\n\t\tthis.addItems( config.items );\n\t}\n\tthis.$element\n\t\t.addClass( 'oo-ui-draggableGroupElement' )\n\t\t.attr( 'role', 'listbox' )\n\t\t.append( this.$status )\n\t\t.toggleClass( 'oo-ui-draggableGroupElement-horizontal', this.orientation === 'horizontal' );\n};\n\n/* Setup */\nOO.mixinClass( OO.ui.mixin.DraggableGroupElement, OO.ui.mixin.GroupElement );\n\n/* Events */\n\n/**\n * An item has been dragged to a new position, but not yet dropped.\n *\n * @event drag\n * @param {OO.ui.mixin.DraggableElement} item Dragged item\n * @param {number} [newIndex] New index for the item\n */\n\n/**\n * An item has been dropped at a new position.\n *\n * @event reorder\n * @param {OO.ui.mixin.DraggableElement} item Reordered item\n * @param {number} [newIndex] New index for the item\n */\n\n/**\n * Draggable state of this widget has changed.\n *\n * @event draggable\n * @param {boolean} [draggable] Widget is draggable\n */\n\n/* Methods */\n\n/**\n * Change the draggable state of this widget.\n * This allows users to temporarily halt the dragging operations.\n *\n * @param {boolean} isDraggable Widget supports draggable operations\n * @fires draggable\n */\nOO.ui.mixin.DraggableGroupElement.prototype.toggleDraggable = function ( isDraggable ) {\n\tisDraggable = isDraggable !== undefined ? !!isDraggable : !this.draggable;\n\n\tif ( this.draggable !== isDraggable ) {\n\t\tthis.draggable = isDraggable;\n\n\t\t// Tell the items their draggable state changed\n\t\tthis.getItems().forEach( function ( item ) {\n\t\t\titem.toggleDraggable( this.draggable );\n\t\t}.bind( this ) );\n\n\t\t// Emit event\n\t\tthis.emit( 'draggable', this.draggable );\n\t}\n};\n\n/**\n * Check the draggable state of this widget\n *\n * @return {boolean} Widget supports draggable operations\n */\nOO.ui.mixin.DraggableGroupElement.prototype.isDraggable = function () {\n\treturn this.draggable;\n};\n\n/**\n * Respond to item drag start event\n *\n * @private\n * @param {OO.ui.mixin.DraggableElement} item Dragged item\n */\nOO.ui.mixin.DraggableGroupElement.prototype.onItemDragStart = function ( item ) {\n\tif ( !this.isDraggable() ) {\n\t\treturn;\n\t}\n\t// Make a shallow copy of this.items so we can re-order it during previews\n\t// without affecting the original array.\n\tthis.itemsOrder = this.items.slice();\n\tthis.updateIndexes();\n\tif ( this.orientation === 'horizontal' ) {\n\t\t// Calculate and cache directionality on drag start - it's a little\n\t\t// expensive and it shouldn't change while dragging.\n\t\tthis.dir = this.$element.css( 'direction' );\n\t}\n\tthis.setDragItem( item );\n};\n\n/**\n * Update the index properties of the items\n */\nOO.ui.mixin.DraggableGroupElement.prototype.updateIndexes = function () {\n\tvar i, len;\n\n\t// Map the index of each object\n\tfor ( i = 0, len = this.itemsOrder.length; i < len; i++ ) {\n\t\tthis.itemsOrder[ i ].setIndex( i );\n\t}\n};\n\n/**\n * Handle drop or dragend event and switch the order of the items accordingly\n *\n * @private\n * @param {OO.ui.mixin.DraggableElement} item Dropped item\n */\nOO.ui.mixin.DraggableGroupElement.prototype.onItemDropOrDragEnd = function () {\n\tvar targetIndex, originalIndex,\n\t\titem = this.getDragItem();\n\n\t// TODO: Figure out a way to configure a list of legally droppable\n\t// elements even if they are not yet in the list\n\tif ( item ) {\n\t\toriginalIndex = this.items.indexOf( item );\n\t\t// If the item has moved forward, add one to the index to account for the left shift\n\t\ttargetIndex = item.getIndex() + ( item.getIndex() > originalIndex ? 1 : 0 );\n\t\tif ( targetIndex !== originalIndex ) {\n\t\t\tthis.reorder( this.getDragItem(), targetIndex );\n\t\t\tthis.emit( 'reorder', this.getDragItem(), targetIndex );\n\t\t}\n\t\tthis.updateIndexes();\n\t}\n\tthis.unsetDragItem();\n\t// Return false to prevent propogation\n\treturn false;\n};\n\n/**\n * Respond to dragover event\n *\n * @private\n * @param {jQuery.Event} e Dragover event\n * @fires reorder\n */\nOO.ui.mixin.DraggableGroupElement.prototype.onDragOver = function ( e ) {\n\tvar overIndex, targetIndex,\n\t\titem = this.getDragItem(),\n\t\tdragItemIndex = item.getIndex();\n\n\t// Get the OptionWidget item we are dragging over\n\toverIndex = $( e.target ).closest( '.oo-ui-draggableElement' ).data( 'index' );\n\n\tif ( overIndex !== undefined && overIndex !== dragItemIndex ) {\n\t\ttargetIndex = overIndex + ( overIndex > dragItemIndex ? 1 : 0 );\n\n\t\tif ( targetIndex > 0 ) {\n\t\t\tthis.$group.children().eq( targetIndex - 1 ).after( item.$element );\n\t\t} else {\n\t\t\tthis.$group.prepend( item.$element );\n\t\t}\n\t\t// Move item in itemsOrder array\n\t\tthis.itemsOrder.splice( overIndex, 0,\n\t\t\tthis.itemsOrder.splice( dragItemIndex, 1 )[ 0 ]\n\t\t);\n\t\tthis.updateIndexes();\n\t\tthis.emit( 'drag', item, targetIndex );\n\t}\n\t// Prevent default\n\te.preventDefault();\n};\n\n/**\n * Reorder the items in the group\n *\n * @param {OO.ui.mixin.DraggableElement} item Reordered item\n * @param {number} newIndex New index\n */\nOO.ui.mixin.DraggableGroupElement.prototype.reorder = function ( item, newIndex ) {\n\tthis.addItems( [ item ], newIndex );\n};\n\n/**\n * Set a dragged item\n *\n * @param {OO.ui.mixin.DraggableElement} item Dragged item\n */\nOO.ui.mixin.DraggableGroupElement.prototype.setDragItem = function ( item ) {\n\tif ( this.dragItem !== item ) {\n\t\tthis.dragItem = item;\n\t\tthis.$element.on( 'dragover', this.onDragOver.bind( this ) );\n\t\tthis.$element.addClass( 'oo-ui-draggableGroupElement-dragging' );\n\t}\n};\n\n/**\n * Unset the current dragged item\n */\nOO.ui.mixin.DraggableGroupElement.prototype.unsetDragItem = function () {\n\tif ( this.dragItem ) {\n\t\tthis.dragItem = null;\n\t\tthis.$element.off( 'dragover' );\n\t\tthis.$element.removeClass( 'oo-ui-draggableGroupElement-dragging' );\n\t}\n};\n\n/**\n * Get the item that is currently being dragged.\n *\n * @return {OO.ui.mixin.DraggableElement|null} The currently dragged item, or `null` if no item is being dragged\n */\nOO.ui.mixin.DraggableGroupElement.prototype.getDragItem = function () {\n\treturn this.dragItem;\n};\n","/**\n * RequestManager is a mixin that manages the lifecycle of a promise-backed request for a widget, such as\n * the {@link OO.ui.mixin.LookupElement}.\n *\n * @class\n * @abstract\n *\n * @constructor\n */\nOO.ui.mixin.RequestManager = function OoUiMixinRequestManager() {\n\tthis.requestCache = {};\n\tthis.requestQuery = null;\n\tthis.requestRequest = null;\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.mixin.RequestManager );\n\n/**\n * Get request results for the current query.\n *\n * @return {jQuery.Promise} Promise object which will be passed response data as the first argument of\n *   the done event. If the request was aborted to make way for a subsequent request, this promise\n *   may not be rejected, depending on what jQuery feels like doing.\n */\nOO.ui.mixin.RequestManager.prototype.getRequestData = function () {\n\tvar widget = this,\n\t\tvalue = this.getRequestQuery(),\n\t\tdeferred = $.Deferred(),\n\t\tourRequest;\n\n\tthis.abortRequest();\n\tif ( Object.prototype.hasOwnProperty.call( this.requestCache, value ) ) {\n\t\tdeferred.resolve( this.requestCache[ value ] );\n\t} else {\n\t\tif ( this.pushPending ) {\n\t\t\tthis.pushPending();\n\t\t}\n\t\tthis.requestQuery = value;\n\t\tourRequest = this.requestRequest = this.getRequest();\n\t\tourRequest\n\t\t\t.always( function () {\n\t\t\t\t// We need to pop pending even if this is an old request, otherwise\n\t\t\t\t// the widget will remain pending forever.\n\t\t\t\t// TODO: this assumes that an aborted request will fail or succeed soon after\n\t\t\t\t// being aborted, or at least eventually. It would be nice if we could popPending()\n\t\t\t\t// at abort time, but only if we knew that we hadn't already called popPending()\n\t\t\t\t// for that request.\n\t\t\t\tif ( widget.popPending ) {\n\t\t\t\t\twidget.popPending();\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.done( function ( response ) {\n\t\t\t\t// If this is an old request (and aborting it somehow caused it to still succeed),\n\t\t\t\t// ignore its success completely\n\t\t\t\tif ( ourRequest === widget.requestRequest ) {\n\t\t\t\t\twidget.requestQuery = null;\n\t\t\t\t\twidget.requestRequest = null;\n\t\t\t\t\twidget.requestCache[ value ] = widget.getRequestCacheDataFromResponse( response );\n\t\t\t\t\tdeferred.resolve( widget.requestCache[ value ] );\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.fail( function () {\n\t\t\t\t// If this is an old request (or a request failing because it's being aborted),\n\t\t\t\t// ignore its failure completely\n\t\t\t\tif ( ourRequest === widget.requestRequest ) {\n\t\t\t\t\twidget.requestQuery = null;\n\t\t\t\t\twidget.requestRequest = null;\n\t\t\t\t\tdeferred.reject();\n\t\t\t\t}\n\t\t\t} );\n\t}\n\treturn deferred.promise();\n};\n\n/**\n * Abort the currently pending request, if any.\n *\n * @private\n */\nOO.ui.mixin.RequestManager.prototype.abortRequest = function () {\n\tvar oldRequest = this.requestRequest;\n\tif ( oldRequest ) {\n\t\t// First unset this.requestRequest to the fail handler will notice\n\t\t// that the request is no longer current\n\t\tthis.requestRequest = null;\n\t\tthis.requestQuery = null;\n\t\toldRequest.abort();\n\t}\n};\n\n/**\n * Get the query to be made.\n *\n * @protected\n * @method\n * @abstract\n * @return {string} query to be used\n */\nOO.ui.mixin.RequestManager.prototype.getRequestQuery = null;\n\n/**\n * Get a new request object of the current query value.\n *\n * @protected\n * @method\n * @abstract\n * @return {jQuery.Promise} jQuery AJAX object, or promise object with an .abort() method\n */\nOO.ui.mixin.RequestManager.prototype.getRequest = null;\n\n/**\n * Pre-process data returned by the request from #getRequest.\n *\n * The return value of this function will be cached, and any further queries for the given value\n * will use the cache rather than doing API requests.\n *\n * @protected\n * @method\n * @abstract\n * @param {Mixed} response Response from server\n * @return {Mixed} Cached result data\n */\nOO.ui.mixin.RequestManager.prototype.getRequestCacheDataFromResponse = null;\n","/**\n * LookupElement is a mixin that creates a {@link OO.ui.MenuSelectWidget menu} of suggested values for\n * a {@link OO.ui.TextInputWidget text input widget}. Suggested values are based on the characters the user types\n * into the text input field and, in general, the menu is only displayed when the user types. If a suggested value is chosen\n * from the lookup menu, that value becomes the value of the input field.\n *\n * Note that a new menu of suggested items is displayed when a value is chosen from the lookup menu. If this is\n * not the desired behavior, disable lookup menus with the #setLookupsDisabled method, then set the value, then\n * re-enable lookups.\n *\n * See the [OOjs UI demos][1] for an example.\n *\n * [1]: https://tools.wmflabs.org/oojs-ui/oojs-ui/demos/index.html#widgets-apex-vector-ltr\n *\n * @class\n * @abstract\n * @mixins OO.ui.mixin.RequestManager\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {jQuery} [$overlay] Overlay for the lookup menu; defaults to relative positioning.\n *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.\n * @cfg {jQuery} [$container=this.$element] The container element. The lookup menu is rendered beneath the specified element.\n * @cfg {boolean} [allowSuggestionsWhenEmpty=false] Request and display a lookup menu when the text input is empty.\n *  By default, the lookup menu is not generated and displayed until the user begins to type.\n * @cfg {boolean} [highlightFirst=true] Whether the first lookup result should be highlighted (so, that the user can\n *  take it over into the input with simply pressing return) automatically or not.\n */\nOO.ui.mixin.LookupElement = function OoUiMixinLookupElement( config ) {\n\t// Configuration initialization\n\tconfig = $.extend( { highlightFirst: true }, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.RequestManager.call( this, config );\n\n\t// Properties\n\tthis.$overlay = config.$overlay || this.$element;\n\tthis.lookupMenu = new OO.ui.MenuSelectWidget( {\n\t\twidget: this,\n\t\tinput: this,\n\t\t$floatableContainer: config.$container || this.$element\n\t} );\n\n\tthis.allowSuggestionsWhenEmpty = config.allowSuggestionsWhenEmpty || false;\n\n\tthis.lookupsDisabled = false;\n\tthis.lookupInputFocused = false;\n\tthis.lookupHighlightFirstItem = config.highlightFirst;\n\n\t// Events\n\tthis.$input.on( {\n\t\tfocus: this.onLookupInputFocus.bind( this ),\n\t\tblur: this.onLookupInputBlur.bind( this ),\n\t\tmousedown: this.onLookupInputMouseDown.bind( this )\n\t} );\n\tthis.connect( this, { change: 'onLookupInputChange' } );\n\tthis.lookupMenu.connect( this, {\n\t\ttoggle: 'onLookupMenuToggle',\n\t\tchoose: 'onLookupMenuItemChoose'\n\t} );\n\n\t// Initialization\n\tthis.$input.attr( {\n\t\trole: 'combobox',\n\t\t'aria-owns': this.lookupMenu.getElementId(),\n\t\t'aria-autocomplete': 'list'\n\t} );\n\tthis.$element.addClass( 'oo-ui-lookupElement' );\n\tthis.lookupMenu.$element.addClass( 'oo-ui-lookupElement-menu' );\n\tthis.$overlay.append( this.lookupMenu.$element );\n};\n\n/* Setup */\n\nOO.mixinClass( OO.ui.mixin.LookupElement, OO.ui.mixin.RequestManager );\n\n/* Methods */\n\n/**\n * Handle input focus event.\n *\n * @protected\n * @param {jQuery.Event} e Input focus event\n */\nOO.ui.mixin.LookupElement.prototype.onLookupInputFocus = function () {\n\tthis.lookupInputFocused = true;\n\tthis.populateLookupMenu();\n};\n\n/**\n * Handle input blur event.\n *\n * @protected\n * @param {jQuery.Event} e Input blur event\n */\nOO.ui.mixin.LookupElement.prototype.onLookupInputBlur = function () {\n\tthis.closeLookupMenu();\n\tthis.lookupInputFocused = false;\n};\n\n/**\n * Handle input mouse down event.\n *\n * @protected\n * @param {jQuery.Event} e Input mouse down event\n */\nOO.ui.mixin.LookupElement.prototype.onLookupInputMouseDown = function () {\n\t// Only open the menu if the input was already focused.\n\t// This way we allow the user to open the menu again after closing it with Esc\n\t// by clicking in the input. Opening (and populating) the menu when initially\n\t// clicking into the input is handled by the focus handler.\n\tif ( this.lookupInputFocused && !this.lookupMenu.isVisible() ) {\n\t\tthis.populateLookupMenu();\n\t}\n};\n\n/**\n * Handle input change event.\n *\n * @protected\n * @param {string} value New input value\n */\nOO.ui.mixin.LookupElement.prototype.onLookupInputChange = function () {\n\tif ( this.lookupInputFocused ) {\n\t\tthis.populateLookupMenu();\n\t}\n};\n\n/**\n * Handle the lookup menu being shown/hidden.\n *\n * @protected\n * @param {boolean} visible Whether the lookup menu is now visible.\n */\nOO.ui.mixin.LookupElement.prototype.onLookupMenuToggle = function ( visible ) {\n\tif ( !visible ) {\n\t\t// When the menu is hidden, abort any active request and clear the menu.\n\t\t// This has to be done here in addition to closeLookupMenu(), because\n\t\t// MenuSelectWidget will close itself when the user presses Esc.\n\t\tthis.abortLookupRequest();\n\t\tthis.lookupMenu.clearItems();\n\t}\n};\n\n/**\n * Handle menu item 'choose' event, updating the text input value to the value of the clicked item.\n *\n * @protected\n * @param {OO.ui.MenuOptionWidget} item Selected item\n */\nOO.ui.mixin.LookupElement.prototype.onLookupMenuItemChoose = function ( item ) {\n\tthis.setValue( item.getData() );\n};\n\n/**\n * Get lookup menu.\n *\n * @private\n * @return {OO.ui.MenuSelectWidget}\n */\nOO.ui.mixin.LookupElement.prototype.getLookupMenu = function () {\n\treturn this.lookupMenu;\n};\n\n/**\n * Disable or re-enable lookups.\n *\n * When lookups are disabled, calls to #populateLookupMenu will be ignored.\n *\n * @param {boolean} disabled Disable lookups\n */\nOO.ui.mixin.LookupElement.prototype.setLookupsDisabled = function ( disabled ) {\n\tthis.lookupsDisabled = !!disabled;\n};\n\n/**\n * Open the menu. If there are no entries in the menu, this does nothing.\n *\n * @private\n * @chainable\n */\nOO.ui.mixin.LookupElement.prototype.openLookupMenu = function () {\n\tif ( !this.lookupMenu.isEmpty() ) {\n\t\tthis.lookupMenu.toggle( true );\n\t}\n\treturn this;\n};\n\n/**\n * Close the menu, empty it, and abort any pending request.\n *\n * @private\n * @chainable\n */\nOO.ui.mixin.LookupElement.prototype.closeLookupMenu = function () {\n\tthis.lookupMenu.toggle( false );\n\tthis.abortLookupRequest();\n\tthis.lookupMenu.clearItems();\n\treturn this;\n};\n\n/**\n * Request menu items based on the input's current value, and when they arrive,\n * populate the menu with these items and show the menu.\n *\n * If lookups have been disabled with #setLookupsDisabled, this function does nothing.\n *\n * @private\n * @chainable\n */\nOO.ui.mixin.LookupElement.prototype.populateLookupMenu = function () {\n\tvar widget = this,\n\t\tvalue = this.getValue();\n\n\tif ( this.lookupsDisabled || this.isReadOnly() ) {\n\t\treturn;\n\t}\n\n\t// If the input is empty, clear the menu, unless suggestions when empty are allowed.\n\tif ( !this.allowSuggestionsWhenEmpty && value === '' ) {\n\t\tthis.closeLookupMenu();\n\t// Skip population if there is already a request pending for the current value\n\t} else if ( value !== this.lookupQuery ) {\n\t\tthis.getLookupMenuItems()\n\t\t\t.done( function ( items ) {\n\t\t\t\twidget.lookupMenu.clearItems();\n\t\t\t\tif ( items.length ) {\n\t\t\t\t\twidget.lookupMenu\n\t\t\t\t\t\t.addItems( items )\n\t\t\t\t\t\t.toggle( true );\n\t\t\t\t\twidget.initializeLookupMenuSelection();\n\t\t\t\t} else {\n\t\t\t\t\twidget.lookupMenu.toggle( false );\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.fail( function () {\n\t\t\t\twidget.lookupMenu.clearItems();\n\t\t\t} );\n\t}\n\n\treturn this;\n};\n\n/**\n * Highlight the first selectable item in the menu, if configured.\n *\n * @private\n * @chainable\n */\nOO.ui.mixin.LookupElement.prototype.initializeLookupMenuSelection = function () {\n\tif ( this.lookupHighlightFirstItem && !this.lookupMenu.getSelectedItem() ) {\n\t\tthis.lookupMenu.highlightItem( this.lookupMenu.getFirstSelectableItem() );\n\t}\n};\n\n/**\n * Get lookup menu items for the current query.\n *\n * @private\n * @return {jQuery.Promise} Promise object which will be passed menu items as the first argument of\n *   the done event. If the request was aborted to make way for a subsequent request, this promise\n *   will not be rejected: it will remain pending forever.\n */\nOO.ui.mixin.LookupElement.prototype.getLookupMenuItems = function () {\n\treturn this.getRequestData().then( function ( data ) {\n\t\treturn this.getLookupMenuOptionsFromData( data );\n\t}.bind( this ) );\n};\n\n/**\n * Abort the currently pending lookup request, if any.\n *\n * @private\n */\nOO.ui.mixin.LookupElement.prototype.abortLookupRequest = function () {\n\tthis.abortRequest();\n};\n\n/**\n * Get a new request object of the current lookup query value.\n *\n * @protected\n * @method\n * @abstract\n * @return {jQuery.Promise} jQuery AJAX object, or promise object with an .abort() method\n */\nOO.ui.mixin.LookupElement.prototype.getLookupRequest = null;\n\n/**\n * Pre-process data returned by the request from #getLookupRequest.\n *\n * The return value of this function will be cached, and any further queries for the given value\n * will use the cache rather than doing API requests.\n *\n * @protected\n * @method\n * @abstract\n * @param {Mixed} response Response from server\n * @return {Mixed} Cached result data\n */\nOO.ui.mixin.LookupElement.prototype.getLookupCacheDataFromResponse = null;\n\n/**\n * Get a list of menu option widgets from the (possibly cached) data returned by\n * #getLookupCacheDataFromResponse.\n *\n * @protected\n * @method\n * @abstract\n * @param {Mixed} data Cached result data, usually an array\n * @return {OO.ui.MenuOptionWidget[]} Menu items\n */\nOO.ui.mixin.LookupElement.prototype.getLookupMenuOptionsFromData = null;\n\n/**\n * Set the read-only state of the widget.\n *\n * This will also disable/enable the lookups functionality.\n *\n * @param {boolean} readOnly Make input read-only\n * @chainable\n */\nOO.ui.mixin.LookupElement.prototype.setReadOnly = function ( readOnly ) {\n\t// Parent method\n\t// Note: Calling #setReadOnly this way assumes this is mixed into an OO.ui.TextInputWidget\n\tOO.ui.TextInputWidget.prototype.setReadOnly.call( this, readOnly );\n\n\t// During construction, #setReadOnly is called before the OO.ui.mixin.LookupElement constructor\n\tif ( this.isReadOnly() && this.lookupMenu ) {\n\t\tthis.closeLookupMenu();\n\t}\n\n\treturn this;\n};\n\n/**\n * @inheritdoc OO.ui.mixin.RequestManager\n */\nOO.ui.mixin.LookupElement.prototype.getRequestQuery = function () {\n\treturn this.getValue();\n};\n\n/**\n * @inheritdoc OO.ui.mixin.RequestManager\n */\nOO.ui.mixin.LookupElement.prototype.getRequest = function () {\n\treturn this.getLookupRequest();\n};\n\n/**\n * @inheritdoc OO.ui.mixin.RequestManager\n */\nOO.ui.mixin.LookupElement.prototype.getRequestCacheDataFromResponse = function ( response ) {\n\treturn this.getLookupCacheDataFromResponse( response );\n};\n","/**\n * TabPanelLayouts are used within {@link OO.ui.IndexLayout index layouts} to create tab panels that\n * users can select and display from the index's optional {@link OO.ui.TabSelectWidget tab}\n * navigation. TabPanels are usually not instantiated directly, rather extended to include the\n * required content and functionality.\n *\n * Each tab panel must have a unique symbolic name, which is passed to the constructor. In addition,\n * the tab panel's tab item is customized (with a label) using the #setupTabItem method. See\n * {@link OO.ui.IndexLayout IndexLayout} for an example.\n *\n * @class\n * @extends OO.ui.PanelLayout\n *\n * @constructor\n * @param {string} name Unique symbolic name of tab panel\n * @param {Object} [config] Configuration options\n * @cfg {jQuery|string|Function|OO.ui.HtmlSnippet} [label] Label for tab panel's tab\n */\nOO.ui.TabPanelLayout = function OoUiTabPanelLayout( name, config ) {\n\t// Allow passing positional parameters inside the config object\n\tif ( OO.isPlainObject( name ) && config === undefined ) {\n\t\tconfig = name;\n\t\tname = config.name;\n\t}\n\n\t// Configuration initialization\n\tconfig = $.extend( { scrollable: true }, config );\n\n\t// Parent constructor\n\tOO.ui.TabPanelLayout.parent.call( this, config );\n\n\t// Properties\n\tthis.name = name;\n\tthis.label = config.label;\n\tthis.tabItem = null;\n\tthis.active = false;\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-tabPanelLayout' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.TabPanelLayout, OO.ui.PanelLayout );\n\n/* Events */\n\n/**\n * An 'active' event is emitted when the tab panel becomes active. Tab panels become active when they are\n * shown in a index layout that is configured to display only one tab panel at a time.\n *\n * @event active\n * @param {boolean} active Tab panel is active\n */\n\n/* Methods */\n\n/**\n * Get the symbolic name of the tab panel.\n *\n * @return {string} Symbolic name of tab panel\n */\nOO.ui.TabPanelLayout.prototype.getName = function () {\n\treturn this.name;\n};\n\n/**\n * Check if tab panel is active.\n *\n * Tab panels become active when they are shown in a {@link OO.ui.IndexLayout index layout} that is configured to\n * display only one tab panel at a time. Additional CSS is applied to the tab panel's tab item to reflect the\n * active state.\n *\n * @return {boolean} Tab panel is active\n */\nOO.ui.TabPanelLayout.prototype.isActive = function () {\n\treturn this.active;\n};\n\n/**\n * Get tab item.\n *\n * The tab item allows users to access the tab panel from the index's tab\n * navigation. The tab item itself can be customized (with a label, level, etc.) using the #setupTabItem method.\n *\n * @return {OO.ui.TabOptionWidget|null} Tab option widget\n */\nOO.ui.TabPanelLayout.prototype.getTabItem = function () {\n\treturn this.tabItem;\n};\n\n/**\n * Set or unset the tab item.\n *\n * Specify a {@link OO.ui.TabOptionWidget tab option} to set it,\n * or `null` to clear the tab item. To customize the tab item itself (e.g., to set a label or tab\n * level), use #setupTabItem instead of this method.\n *\n * @param {OO.ui.TabOptionWidget|null} tabItem Tab option widget, null to clear\n * @chainable\n */\nOO.ui.TabPanelLayout.prototype.setTabItem = function ( tabItem ) {\n\tthis.tabItem = tabItem || null;\n\tif ( tabItem ) {\n\t\tthis.setupTabItem();\n\t}\n\treturn this;\n};\n\n/**\n * Set up the tab item.\n *\n * Use this method to customize the tab item (e.g., to add a label or tab level). To set or unset\n * the tab item itself (with a {@link OO.ui.TabOptionWidget tab option} or `null`), use\n * the #setTabItem method instead.\n *\n * @param {OO.ui.TabOptionWidget} tabItem Tab option widget to set up\n * @chainable\n */\nOO.ui.TabPanelLayout.prototype.setupTabItem = function () {\n\tif ( this.label ) {\n\t\tthis.tabItem.setLabel( this.label );\n\t}\n\treturn this;\n};\n\n/**\n * Set the tab panel to its 'active' state.\n *\n * Tab panels become active when they are shown in a index layout that is configured to display only\n * one tab panel at a time. Additional CSS is applied to the tab item to reflect the tab panel's\n * active state. Outside of the index context, setting the active state on a tab panel does nothing.\n *\n * @param {boolean} active Tab panel is active\n * @fires active\n */\nOO.ui.TabPanelLayout.prototype.setActive = function ( active ) {\n\tactive = !!active;\n\n\tif ( active !== this.active ) {\n\t\tthis.active = active;\n\t\tthis.$element.toggleClass( 'oo-ui-tabPanelLayout-active', this.active );\n\t\tthis.emit( 'active', this.active );\n\t}\n};\n\n/**\n * The deprecated name for the TabPanelLayout, provided for backwards-compatibility.\n *\n * @class\n * @extends OO.ui.TabPanelLayout\n *\n * @constructor\n * @deprecated since v0.21.3\n */\nOO.ui.CardLayout = function OoUiCardLayout() {\n\tOO.ui.warnDeprecation( 'CardLayout has been renamed to TabPanel layout. Use that instead. See T155152' );\n\t// Parent constructor\n\tOO.ui.CardLayout.parent.apply( this, arguments );\n};\n\nOO.inheritClass( OO.ui.CardLayout, OO.ui.TabPanelLayout );\n","/**\n * PageLayouts are used within {@link OO.ui.BookletLayout booklet layouts} to create pages that users can select and display\n * from the booklet's optional {@link OO.ui.OutlineSelectWidget outline} navigation. Pages are usually not instantiated directly,\n * rather extended to include the required content and functionality.\n *\n * Each page must have a unique symbolic name, which is passed to the constructor. In addition, the page's outline\n * item is customized (with a label, outline level, etc.) using the #setupOutlineItem method. See\n * {@link OO.ui.BookletLayout BookletLayout} for an example.\n *\n * @class\n * @extends OO.ui.PanelLayout\n *\n * @constructor\n * @param {string} name Unique symbolic name of page\n * @param {Object} [config] Configuration options\n */\nOO.ui.PageLayout = function OoUiPageLayout( name, config ) {\n\t// Allow passing positional parameters inside the config object\n\tif ( OO.isPlainObject( name ) && config === undefined ) {\n\t\tconfig = name;\n\t\tname = config.name;\n\t}\n\n\t// Configuration initialization\n\tconfig = $.extend( { scrollable: true }, config );\n\n\t// Parent constructor\n\tOO.ui.PageLayout.parent.call( this, config );\n\n\t// Properties\n\tthis.name = name;\n\tthis.outlineItem = null;\n\tthis.active = false;\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-pageLayout' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.PageLayout, OO.ui.PanelLayout );\n\n/* Events */\n\n/**\n * An 'active' event is emitted when the page becomes active. Pages become active when they are\n * shown in a booklet layout that is configured to display only one page at a time.\n *\n * @event active\n * @param {boolean} active Page is active\n */\n\n/* Methods */\n\n/**\n * Get the symbolic name of the page.\n *\n * @return {string} Symbolic name of page\n */\nOO.ui.PageLayout.prototype.getName = function () {\n\treturn this.name;\n};\n\n/**\n * Check if page is active.\n *\n * Pages become active when they are shown in a {@link OO.ui.BookletLayout booklet layout} that is configured to display\n * only one page at a time. Additional CSS is applied to the page's outline item to reflect the active state.\n *\n * @return {boolean} Page is active\n */\nOO.ui.PageLayout.prototype.isActive = function () {\n\treturn this.active;\n};\n\n/**\n * Get outline item.\n *\n * The outline item allows users to access the page from the booklet's outline\n * navigation. The outline item itself can be customized (with a label, level, etc.) using the #setupOutlineItem method.\n *\n * @return {OO.ui.OutlineOptionWidget|null} Outline option widget\n */\nOO.ui.PageLayout.prototype.getOutlineItem = function () {\n\treturn this.outlineItem;\n};\n\n/**\n * Set or unset the outline item.\n *\n * Specify an {@link OO.ui.OutlineOptionWidget outline option} to set it,\n * or `null` to clear the outline item. To customize the outline item itself (e.g., to set a label or outline\n * level), use #setupOutlineItem instead of this method.\n *\n * @param {OO.ui.OutlineOptionWidget|null} outlineItem Outline option widget, null to clear\n * @chainable\n */\nOO.ui.PageLayout.prototype.setOutlineItem = function ( outlineItem ) {\n\tthis.outlineItem = outlineItem || null;\n\tif ( outlineItem ) {\n\t\tthis.setupOutlineItem();\n\t}\n\treturn this;\n};\n\n/**\n * Set up the outline item.\n *\n * Use this method to customize the outline item (e.g., to add a label or outline level). To set or unset\n * the outline item itself (with an {@link OO.ui.OutlineOptionWidget outline option} or `null`), use\n * the #setOutlineItem method instead.\n *\n * @param {OO.ui.OutlineOptionWidget} outlineItem Outline option widget to set up\n * @chainable\n */\nOO.ui.PageLayout.prototype.setupOutlineItem = function () {\n\treturn this;\n};\n\n/**\n * Set the page to its 'active' state.\n *\n * Pages become active when they are shown in a booklet layout that is configured to display only one page at a time. Additional\n * CSS is applied to the outline item to reflect the page's active state. Outside of the booklet\n * context, setting the active state on a page does nothing.\n *\n * @param {boolean} active Page is active\n * @fires active\n */\nOO.ui.PageLayout.prototype.setActive = function ( active ) {\n\tactive = !!active;\n\n\tif ( active !== this.active ) {\n\t\tthis.active = active;\n\t\tthis.$element.toggleClass( 'oo-ui-pageLayout-active', active );\n\t\tthis.emit( 'active', this.active );\n\t}\n};\n","/**\n * StackLayouts contain a series of {@link OO.ui.PanelLayout panel layouts}. By default, only one panel is displayed\n * at a time, though the stack layout can also be configured to show all contained panels, one after another,\n * by setting the #continuous option to 'true'.\n *\n *     @example\n *     // A stack layout with two panels, configured to be displayed continously\n *     var myStack = new OO.ui.StackLayout( {\n *         items: [\n *             new OO.ui.PanelLayout( {\n *                 $content: $( '<p>Panel One</p>' ),\n *                 padded: true,\n *                 framed: true\n *             } ),\n *             new OO.ui.PanelLayout( {\n *                 $content: $( '<p>Panel Two</p>' ),\n *                 padded: true,\n *                 framed: true\n *             } )\n *         ],\n *         continuous: true\n *     } );\n *     $( 'body' ).append( myStack.$element );\n *\n * @class\n * @extends OO.ui.PanelLayout\n * @mixins OO.ui.mixin.GroupElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {boolean} [continuous=false] Show all panels, one after another. By default, only one panel is displayed at a time.\n * @cfg {OO.ui.Layout[]} [items] Panel layouts to add to the stack layout.\n */\nOO.ui.StackLayout = function OoUiStackLayout( config ) {\n\t// Configuration initialization\n\tconfig = $.extend( { scrollable: true }, config );\n\n\t// Parent constructor\n\tOO.ui.StackLayout.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.GroupElement.call( this, $.extend( {}, config, { $group: this.$element } ) );\n\n\t// Properties\n\tthis.currentItem = null;\n\tthis.continuous = !!config.continuous;\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-stackLayout' );\n\tif ( this.continuous ) {\n\t\tthis.$element.addClass( 'oo-ui-stackLayout-continuous' );\n\t\tthis.$element.on( 'scroll', OO.ui.debounce( this.onScroll.bind( this ), 250 ) );\n\t}\n\tif ( Array.isArray( config.items ) ) {\n\t\tthis.addItems( config.items );\n\t}\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.StackLayout, OO.ui.PanelLayout );\nOO.mixinClass( OO.ui.StackLayout, OO.ui.mixin.GroupElement );\n\n/* Events */\n\n/**\n * A 'set' event is emitted when panels are {@link #addItems added}, {@link #removeItems removed},\n * {@link #clearItems cleared} or {@link #setItem displayed}.\n *\n * @event set\n * @param {OO.ui.Layout|null} item Current panel or `null` if no panel is shown\n */\n\n/**\n * When used in continuous mode, this event is emitted when the user scrolls down\n * far enough such that currentItem is no longer visible.\n *\n * @event visibleItemChange\n * @param {OO.ui.PanelLayout} panel The next visible item in the layout\n */\n\n/* Methods */\n\n/**\n * Handle scroll events from the layout element\n *\n * @param {jQuery.Event} e\n * @fires visibleItemChange\n */\nOO.ui.StackLayout.prototype.onScroll = function () {\n\tvar currentRect,\n\t\tlen = this.items.length,\n\t\tcurrentIndex = this.items.indexOf( this.currentItem ),\n\t\tnewIndex = currentIndex,\n\t\tcontainerRect = this.$element[ 0 ].getBoundingClientRect();\n\n\tif ( !containerRect || ( !containerRect.top && !containerRect.bottom ) ) {\n\t\t// Can't get bounding rect, possibly not attached.\n\t\treturn;\n\t}\n\n\tfunction getRect( item ) {\n\t\treturn item.$element[ 0 ].getBoundingClientRect();\n\t}\n\n\tfunction isVisible( item ) {\n\t\tvar rect = getRect( item );\n\t\treturn rect.bottom > containerRect.top && rect.top < containerRect.bottom;\n\t}\n\n\tcurrentRect = getRect( this.currentItem );\n\n\tif ( currentRect.bottom < containerRect.top ) {\n\t\t// Scrolled down past current item\n\t\twhile ( ++newIndex < len ) {\n\t\t\tif ( isVisible( this.items[ newIndex ] ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else if ( currentRect.top > containerRect.bottom ) {\n\t\t// Scrolled up past current item\n\t\twhile ( --newIndex >= 0 ) {\n\t\t\tif ( isVisible( this.items[ newIndex ] ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( newIndex !== currentIndex ) {\n\t\tthis.emit( 'visibleItemChange', this.items[ newIndex ] );\n\t}\n};\n\n/**\n * Get the current panel.\n *\n * @return {OO.ui.Layout|null}\n */\nOO.ui.StackLayout.prototype.getCurrentItem = function () {\n\treturn this.currentItem;\n};\n\n/**\n * Unset the current item.\n *\n * @private\n * @param {OO.ui.StackLayout} layout\n * @fires set\n */\nOO.ui.StackLayout.prototype.unsetCurrentItem = function () {\n\tvar prevItem = this.currentItem;\n\tif ( prevItem === null ) {\n\t\treturn;\n\t}\n\n\tthis.currentItem = null;\n\tthis.emit( 'set', null );\n};\n\n/**\n * Add panel layouts to the stack layout.\n *\n * Panels will be added to the end of the stack layout array unless the optional index parameter specifies a different\n * insertion point. Adding a panel that is already in the stack will move it to the end of the array or the point specified\n * by the index.\n *\n * @param {OO.ui.Layout[]} items Panels to add\n * @param {number} [index] Index of the insertion point\n * @chainable\n */\nOO.ui.StackLayout.prototype.addItems = function ( items, index ) {\n\t// Update the visibility\n\tthis.updateHiddenState( items, this.currentItem );\n\n\t// Mixin method\n\tOO.ui.mixin.GroupElement.prototype.addItems.call( this, items, index );\n\n\tif ( !this.currentItem && items.length ) {\n\t\tthis.setItem( items[ 0 ] );\n\t}\n\n\treturn this;\n};\n\n/**\n * Remove the specified panels from the stack layout.\n *\n * Removed panels are detached from the DOM, not removed, so that they may be reused. To remove all panels,\n * you may wish to use the #clearItems method instead.\n *\n * @param {OO.ui.Layout[]} items Panels to remove\n * @chainable\n * @fires set\n */\nOO.ui.StackLayout.prototype.removeItems = function ( items ) {\n\t// Mixin method\n\tOO.ui.mixin.GroupElement.prototype.removeItems.call( this, items );\n\n\tif ( items.indexOf( this.currentItem ) !== -1 ) {\n\t\tif ( this.items.length ) {\n\t\t\tthis.setItem( this.items[ 0 ] );\n\t\t} else {\n\t\t\tthis.unsetCurrentItem();\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * Clear all panels from the stack layout.\n *\n * Cleared panels are detached from the DOM, not removed, so that they may be reused. To remove only\n * a subset of panels, use the #removeItems method.\n *\n * @chainable\n * @fires set\n */\nOO.ui.StackLayout.prototype.clearItems = function () {\n\tthis.unsetCurrentItem();\n\tOO.ui.mixin.GroupElement.prototype.clearItems.call( this );\n\n\treturn this;\n};\n\n/**\n * Show the specified panel.\n *\n * If another panel is currently displayed, it will be hidden.\n *\n * @param {OO.ui.Layout} item Panel to show\n * @chainable\n * @fires set\n */\nOO.ui.StackLayout.prototype.setItem = function ( item ) {\n\tif ( item !== this.currentItem ) {\n\t\tthis.updateHiddenState( this.items, item );\n\n\t\tif ( this.items.indexOf( item ) !== -1 ) {\n\t\t\tthis.currentItem = item;\n\t\t\tthis.emit( 'set', item );\n\t\t} else {\n\t\t\tthis.unsetCurrentItem();\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * Update the visibility of all items in case of non-continuous view.\n *\n * Ensure all items are hidden except for the selected one.\n * This method does nothing when the stack is continuous.\n *\n * @private\n * @param {OO.ui.Layout[]} items Item list iterate over\n * @param {OO.ui.Layout} [selectedItem] Selected item to show\n */\nOO.ui.StackLayout.prototype.updateHiddenState = function ( items, selectedItem ) {\n\tvar i, len;\n\n\tif ( !this.continuous ) {\n\t\tfor ( i = 0, len = items.length; i < len; i++ ) {\n\t\t\tif ( !selectedItem || selectedItem !== items[ i ] ) {\n\t\t\t\titems[ i ].$element.addClass( 'oo-ui-element-hidden' );\n\t\t\t\titems[ i ].$element.attr( 'aria-hidden', 'true' );\n\t\t\t}\n\t\t}\n\t\tif ( selectedItem ) {\n\t\t\tselectedItem.$element.removeClass( 'oo-ui-element-hidden' );\n\t\t\tselectedItem.$element.removeAttr( 'aria-hidden' );\n\t\t}\n\t}\n};\n","/**\n * MenuLayouts combine a menu and a content {@link OO.ui.PanelLayout panel}. The menu is positioned relative to the content (after, before, top, or bottom)\n * and its size is customized with the #menuSize config. The content area will fill all remaining space.\n *\n *     @example\n *     var menuLayout = new OO.ui.MenuLayout( {\n *         position: 'top'\n *     } ),\n *         menuPanel = new OO.ui.PanelLayout( { padded: true, expanded: true, scrollable: true } ),\n *         contentPanel = new OO.ui.PanelLayout( { padded: true, expanded: true, scrollable: true } ),\n *         select = new OO.ui.SelectWidget( {\n *             items: [\n *                 new OO.ui.OptionWidget( {\n *                     data: 'before',\n *                     label: 'Before',\n *                 } ),\n *                 new OO.ui.OptionWidget( {\n *                     data: 'after',\n *                     label: 'After',\n *                 } ),\n *                 new OO.ui.OptionWidget( {\n *                     data: 'top',\n *                     label: 'Top',\n *                 } ),\n *                 new OO.ui.OptionWidget( {\n *                     data: 'bottom',\n *                     label: 'Bottom',\n *                 } )\n *              ]\n *         } ).on( 'select', function ( item ) {\n *            menuLayout.setMenuPosition( item.getData() );\n *         } );\n *\n *     menuLayout.$menu.append(\n *         menuPanel.$element.append( '<b>Menu panel</b>', select.$element )\n *     );\n *     menuLayout.$content.append(\n *         contentPanel.$element.append( '<b>Content panel</b>', '<p>Note that the menu is positioned relative to the content panel: top, bottom, after, before.</p>')\n *     );\n *     $( 'body' ).append( menuLayout.$element );\n *\n * If menu size needs to be overridden, it can be accomplished using CSS similar to the snippet\n * below. MenuLayout's CSS will override the appropriate values with 'auto' or '0' to display the\n * menu correctly. If `menuPosition` is known beforehand, CSS rules corresponding to other positions\n * may be omitted.\n *\n *     .oo-ui-menuLayout-menu {\n *         height: 200px;\n *         width: 200px;\n *     }\n *     .oo-ui-menuLayout-content {\n *         top: 200px;\n *         left: 200px;\n *         right: 200px;\n *         bottom: 200px;\n *     }\n *\n * @class\n * @extends OO.ui.Layout\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {boolean} [showMenu=true] Show menu\n * @cfg {string} [menuPosition='before'] Position of menu: `top`, `after`, `bottom` or `before`\n */\nOO.ui.MenuLayout = function OoUiMenuLayout( config ) {\n\t// Configuration initialization\n\tconfig = $.extend( {\n\t\tshowMenu: true,\n\t\tmenuPosition: 'before'\n\t}, config );\n\n\t// Parent constructor\n\tOO.ui.MenuLayout.parent.call( this, config );\n\n\t/**\n\t * Menu DOM node\n\t *\n\t * @property {jQuery}\n\t */\n\tthis.$menu = $( '<div>' );\n\t/**\n\t * Content DOM node\n\t *\n\t * @property {jQuery}\n\t */\n\tthis.$content = $( '<div>' );\n\n\t// Initialization\n\tthis.$menu\n\t\t.addClass( 'oo-ui-menuLayout-menu' );\n\tthis.$content.addClass( 'oo-ui-menuLayout-content' );\n\tthis.$element\n\t\t.addClass( 'oo-ui-menuLayout' )\n\t\t.append( this.$content, this.$menu );\n\tthis.setMenuPosition( config.menuPosition );\n\tthis.toggleMenu( config.showMenu );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.MenuLayout, OO.ui.Layout );\n\n/* Methods */\n\n/**\n * Toggle menu.\n *\n * @param {boolean} showMenu Show menu, omit to toggle\n * @chainable\n */\nOO.ui.MenuLayout.prototype.toggleMenu = function ( showMenu ) {\n\tshowMenu = showMenu === undefined ? !this.showMenu : !!showMenu;\n\n\tif ( this.showMenu !== showMenu ) {\n\t\tthis.showMenu = showMenu;\n\t\tthis.$element\n\t\t\t.toggleClass( 'oo-ui-menuLayout-showMenu', this.showMenu )\n\t\t\t.toggleClass( 'oo-ui-menuLayout-hideMenu', !this.showMenu );\n\t\tthis.$menu.attr( 'aria-hidden', this.showMenu ? 'false' : 'true' );\n\t}\n\n\treturn this;\n};\n\n/**\n * Check if menu is visible\n *\n * @return {boolean} Menu is visible\n */\nOO.ui.MenuLayout.prototype.isMenuVisible = function () {\n\treturn this.showMenu;\n};\n\n/**\n * Set menu position.\n *\n * @param {string} position Position of menu, either `top`, `after`, `bottom` or `before`\n * @throws {Error} If position value is not supported\n * @chainable\n */\nOO.ui.MenuLayout.prototype.setMenuPosition = function ( position ) {\n\tthis.$element.removeClass( 'oo-ui-menuLayout-' + this.menuPosition );\n\tthis.menuPosition = position;\n\tthis.$element.addClass( 'oo-ui-menuLayout-' + position );\n\n\treturn this;\n};\n\n/**\n * Get menu position.\n *\n * @return {string} Menu position\n */\nOO.ui.MenuLayout.prototype.getMenuPosition = function () {\n\treturn this.menuPosition;\n};\n","/**\n * BookletLayouts contain {@link OO.ui.PageLayout page layouts} as well as\n * an {@link OO.ui.OutlineSelectWidget outline} that allows users to easily navigate\n * through the pages and select which one to display. By default, only one page is\n * displayed at a time and the outline is hidden. When a user navigates to a new page,\n * the booklet layout automatically focuses on the first focusable element, unless the\n * default setting is changed. Optionally, booklets can be configured to show\n * {@link OO.ui.OutlineControlsWidget controls} for adding, moving, and removing items.\n *\n *     @example\n *     // Example of a BookletLayout that contains two PageLayouts.\n *\n *     function PageOneLayout( name, config ) {\n *         PageOneLayout.parent.call( this, name, config );\n *         this.$element.append( '<p>First page</p><p>(This booklet has an outline, displayed on the left)</p>' );\n *     }\n *     OO.inheritClass( PageOneLayout, OO.ui.PageLayout );\n *     PageOneLayout.prototype.setupOutlineItem = function () {\n *         this.outlineItem.setLabel( 'Page One' );\n *     };\n *\n *     function PageTwoLayout( name, config ) {\n *         PageTwoLayout.parent.call( this, name, config );\n *         this.$element.append( '<p>Second page</p>' );\n *     }\n *     OO.inheritClass( PageTwoLayout, OO.ui.PageLayout );\n *     PageTwoLayout.prototype.setupOutlineItem = function () {\n *         this.outlineItem.setLabel( 'Page Two' );\n *     };\n *\n *     var page1 = new PageOneLayout( 'one' ),\n *         page2 = new PageTwoLayout( 'two' );\n *\n *     var booklet = new OO.ui.BookletLayout( {\n *         outlined: true\n *     } );\n *\n *     booklet.addPages ( [ page1, page2 ] );\n *     $( 'body' ).append( booklet.$element );\n *\n * @class\n * @extends OO.ui.MenuLayout\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {boolean} [continuous=false] Show all pages, one after another\n * @cfg {boolean} [autoFocus=true] Focus on the first focusable element when a new page is displayed. Disabled on mobile.\n * @cfg {boolean} [outlined=false] Show the outline. The outline is used to navigate through the pages of the booklet.\n * @cfg {boolean} [editable=false] Show controls for adding, removing and reordering pages\n */\nOO.ui.BookletLayout = function OoUiBookletLayout( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.BookletLayout.parent.call( this, config );\n\n\t// Properties\n\tthis.currentPageName = null;\n\tthis.pages = {};\n\tthis.ignoreFocus = false;\n\tthis.stackLayout = new OO.ui.StackLayout( { continuous: !!config.continuous } );\n\tthis.$content.append( this.stackLayout.$element );\n\tthis.autoFocus = config.autoFocus === undefined || !!config.autoFocus;\n\tthis.outlineVisible = false;\n\tthis.outlined = !!config.outlined;\n\tif ( this.outlined ) {\n\t\tthis.editable = !!config.editable;\n\t\tthis.outlineControlsWidget = null;\n\t\tthis.outlineSelectWidget = new OO.ui.OutlineSelectWidget();\n\t\tthis.outlinePanel = new OO.ui.PanelLayout( { scrollable: true } );\n\t\tthis.$menu.append( this.outlinePanel.$element );\n\t\tthis.outlineVisible = true;\n\t\tif ( this.editable ) {\n\t\t\tthis.outlineControlsWidget = new OO.ui.OutlineControlsWidget(\n\t\t\t\tthis.outlineSelectWidget\n\t\t\t);\n\t\t}\n\t}\n\tthis.toggleMenu( this.outlined );\n\n\t// Events\n\tthis.stackLayout.connect( this, { set: 'onStackLayoutSet' } );\n\tif ( this.outlined ) {\n\t\tthis.outlineSelectWidget.connect( this, { select: 'onOutlineSelectWidgetSelect' } );\n\t\tthis.scrolling = false;\n\t\tthis.stackLayout.connect( this, { visibleItemChange: 'onStackLayoutVisibleItemChange' } );\n\t}\n\tif ( this.autoFocus ) {\n\t\t// Event 'focus' does not bubble, but 'focusin' does\n\t\tthis.stackLayout.$element.on( 'focusin', this.onStackLayoutFocus.bind( this ) );\n\t}\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-bookletLayout' );\n\tthis.stackLayout.$element.addClass( 'oo-ui-bookletLayout-stackLayout' );\n\tif ( this.outlined ) {\n\t\tthis.outlinePanel.$element\n\t\t\t.addClass( 'oo-ui-bookletLayout-outlinePanel' )\n\t\t\t.append( this.outlineSelectWidget.$element );\n\t\tif ( this.editable ) {\n\t\t\tthis.outlinePanel.$element\n\t\t\t\t.addClass( 'oo-ui-bookletLayout-outlinePanel-editable' )\n\t\t\t\t.append( this.outlineControlsWidget.$element );\n\t\t}\n\t}\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.BookletLayout, OO.ui.MenuLayout );\n\n/* Events */\n\n/**\n * A 'set' event is emitted when a page is {@link #setPage set} to be displayed by the booklet layout.\n * @event set\n * @param {OO.ui.PageLayout} page Current page\n */\n\n/**\n * An 'add' event is emitted when pages are {@link #addPages added} to the booklet layout.\n *\n * @event add\n * @param {OO.ui.PageLayout[]} page Added pages\n * @param {number} index Index pages were added at\n */\n\n/**\n * A 'remove' event is emitted when pages are {@link #clearPages cleared} or\n * {@link #removePages removed} from the booklet.\n *\n * @event remove\n * @param {OO.ui.PageLayout[]} pages Removed pages\n */\n\n/* Methods */\n\n/**\n * Handle stack layout focus.\n *\n * @private\n * @param {jQuery.Event} e Focusin event\n */\nOO.ui.BookletLayout.prototype.onStackLayoutFocus = function ( e ) {\n\tvar name, $target;\n\n\t// Find the page that an element was focused within\n\t$target = $( e.target ).closest( '.oo-ui-pageLayout' );\n\tfor ( name in this.pages ) {\n\t\t// Check for page match, exclude current page to find only page changes\n\t\tif ( this.pages[ name ].$element[ 0 ] === $target[ 0 ] && name !== this.currentPageName ) {\n\t\t\tthis.setPage( name );\n\t\t\tbreak;\n\t\t}\n\t}\n};\n\n/**\n * Handle visibleItemChange events from the stackLayout\n *\n * The next visible page is set as the current page by selecting it\n * in the outline\n *\n * @param {OO.ui.PageLayout} page The next visible page in the layout\n */\nOO.ui.BookletLayout.prototype.onStackLayoutVisibleItemChange = function ( page ) {\n\t// Set a flag to so that the resulting call to #onStackLayoutSet doesn't\n\t// try and scroll the item into view again.\n\tthis.scrolling = true;\n\tthis.outlineSelectWidget.selectItemByData( page.getName() );\n\tthis.scrolling = false;\n};\n\n/**\n * Handle stack layout set events.\n *\n * @private\n * @param {OO.ui.PanelLayout|null} page The page panel that is now the current panel\n */\nOO.ui.BookletLayout.prototype.onStackLayoutSet = function ( page ) {\n\tvar layout = this;\n\tif ( !this.scrolling && page ) {\n\t\tpage.scrollElementIntoView().done( function () {\n\t\t\tif ( layout.autoFocus && !OO.ui.isMobile() ) {\n\t\t\t\tlayout.focus();\n\t\t\t}\n\t\t} );\n\t}\n};\n\n/**\n * Focus the first input in the current page.\n *\n * If no page is selected, the first selectable page will be selected.\n * If the focus is already in an element on the current page, nothing will happen.\n *\n * @param {number} [itemIndex] A specific item to focus on\n */\nOO.ui.BookletLayout.prototype.focus = function ( itemIndex ) {\n\tvar page,\n\t\titems = this.stackLayout.getItems();\n\n\tif ( itemIndex !== undefined && items[ itemIndex ] ) {\n\t\tpage = items[ itemIndex ];\n\t} else {\n\t\tpage = this.stackLayout.getCurrentItem();\n\t}\n\n\tif ( !page && this.outlined ) {\n\t\tthis.selectFirstSelectablePage();\n\t\tpage = this.stackLayout.getCurrentItem();\n\t}\n\tif ( !page ) {\n\t\treturn;\n\t}\n\t// Only change the focus if is not already in the current page\n\tif ( !OO.ui.contains( page.$element[ 0 ], this.getElementDocument().activeElement, true ) ) {\n\t\tpage.focus();\n\t}\n};\n\n/**\n * Find the first focusable input in the booklet layout and focus\n * on it.\n */\nOO.ui.BookletLayout.prototype.focusFirstFocusable = function () {\n\tOO.ui.findFocusable( this.stackLayout.$element ).focus();\n};\n\n/**\n * Handle outline widget select events.\n *\n * @private\n * @param {OO.ui.OptionWidget|null} item Selected item\n */\nOO.ui.BookletLayout.prototype.onOutlineSelectWidgetSelect = function ( item ) {\n\tif ( item ) {\n\t\tthis.setPage( item.getData() );\n\t}\n};\n\n/**\n * Check if booklet has an outline.\n *\n * @return {boolean} Booklet has an outline\n */\nOO.ui.BookletLayout.prototype.isOutlined = function () {\n\treturn this.outlined;\n};\n\n/**\n * Check if booklet has editing controls.\n *\n * @return {boolean} Booklet is editable\n */\nOO.ui.BookletLayout.prototype.isEditable = function () {\n\treturn this.editable;\n};\n\n/**\n * Check if booklet has a visible outline.\n *\n * @return {boolean} Outline is visible\n */\nOO.ui.BookletLayout.prototype.isOutlineVisible = function () {\n\treturn this.outlined && this.outlineVisible;\n};\n\n/**\n * Hide or show the outline.\n *\n * @param {boolean} [show] Show outline, omit to invert current state\n * @chainable\n */\nOO.ui.BookletLayout.prototype.toggleOutline = function ( show ) {\n\tif ( this.outlined ) {\n\t\tshow = show === undefined ? !this.outlineVisible : !!show;\n\t\tthis.outlineVisible = show;\n\t\tthis.toggleMenu( show );\n\t}\n\n\treturn this;\n};\n\n/**\n * Get the page closest to the specified page.\n *\n * @param {OO.ui.PageLayout} page Page to use as a reference point\n * @return {OO.ui.PageLayout|null} Page closest to the specified page\n */\nOO.ui.BookletLayout.prototype.getClosestPage = function ( page ) {\n\tvar next, prev, level,\n\t\tpages = this.stackLayout.getItems(),\n\t\tindex = pages.indexOf( page );\n\n\tif ( index !== -1 ) {\n\t\tnext = pages[ index + 1 ];\n\t\tprev = pages[ index - 1 ];\n\t\t// Prefer adjacent pages at the same level\n\t\tif ( this.outlined ) {\n\t\t\tlevel = this.outlineSelectWidget.getItemFromData( page.getName() ).getLevel();\n\t\t\tif (\n\t\t\t\tprev &&\n\t\t\t\tlevel === this.outlineSelectWidget.getItemFromData( prev.getName() ).getLevel()\n\t\t\t) {\n\t\t\t\treturn prev;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tnext &&\n\t\t\t\tlevel === this.outlineSelectWidget.getItemFromData( next.getName() ).getLevel()\n\t\t\t) {\n\t\t\t\treturn next;\n\t\t\t}\n\t\t}\n\t}\n\treturn prev || next || null;\n};\n\n/**\n * Get the outline widget.\n *\n * If the booklet is not outlined, the method will return `null`.\n *\n * @return {OO.ui.OutlineSelectWidget|null} Outline widget, or null if the booklet is not outlined\n */\nOO.ui.BookletLayout.prototype.getOutline = function () {\n\treturn this.outlineSelectWidget;\n};\n\n/**\n * Get the outline controls widget.\n *\n * If the outline is not editable, the method will return `null`.\n *\n * @return {OO.ui.OutlineControlsWidget|null} The outline controls widget.\n */\nOO.ui.BookletLayout.prototype.getOutlineControls = function () {\n\treturn this.outlineControlsWidget;\n};\n\n/**\n * Get a page by its symbolic name.\n *\n * @param {string} name Symbolic name of page\n * @return {OO.ui.PageLayout|undefined} Page, if found\n */\nOO.ui.BookletLayout.prototype.getPage = function ( name ) {\n\treturn this.pages[ name ];\n};\n\n/**\n * Get the current page.\n *\n * @return {OO.ui.PageLayout|undefined} Current page, if found\n */\nOO.ui.BookletLayout.prototype.getCurrentPage = function () {\n\tvar name = this.getCurrentPageName();\n\treturn name ? this.getPage( name ) : undefined;\n};\n\n/**\n * Get the symbolic name of the current page.\n *\n * @return {string|null} Symbolic name of the current page\n */\nOO.ui.BookletLayout.prototype.getCurrentPageName = function () {\n\treturn this.currentPageName;\n};\n\n/**\n * Add pages to the booklet layout\n *\n * When pages are added with the same names as existing pages, the existing pages will be\n * automatically removed before the new pages are added.\n *\n * @param {OO.ui.PageLayout[]} pages Pages to add\n * @param {number} index Index of the insertion point\n * @fires add\n * @chainable\n */\nOO.ui.BookletLayout.prototype.addPages = function ( pages, index ) {\n\tvar i, len, name, page, item, currentIndex,\n\t\tstackLayoutPages = this.stackLayout.getItems(),\n\t\tremove = [],\n\t\titems = [];\n\n\t// Remove pages with same names\n\tfor ( i = 0, len = pages.length; i < len; i++ ) {\n\t\tpage = pages[ i ];\n\t\tname = page.getName();\n\n\t\tif ( Object.prototype.hasOwnProperty.call( this.pages, name ) ) {\n\t\t\t// Correct the insertion index\n\t\t\tcurrentIndex = stackLayoutPages.indexOf( this.pages[ name ] );\n\t\t\tif ( currentIndex !== -1 && currentIndex + 1 < index ) {\n\t\t\t\tindex--;\n\t\t\t}\n\t\t\tremove.push( this.pages[ name ] );\n\t\t}\n\t}\n\tif ( remove.length ) {\n\t\tthis.removePages( remove );\n\t}\n\n\t// Add new pages\n\tfor ( i = 0, len = pages.length; i < len; i++ ) {\n\t\tpage = pages[ i ];\n\t\tname = page.getName();\n\t\tthis.pages[ page.getName() ] = page;\n\t\tif ( this.outlined ) {\n\t\t\titem = new OO.ui.OutlineOptionWidget( { data: name } );\n\t\t\tpage.setOutlineItem( item );\n\t\t\titems.push( item );\n\t\t}\n\t}\n\n\tif ( this.outlined && items.length ) {\n\t\tthis.outlineSelectWidget.addItems( items, index );\n\t\tthis.selectFirstSelectablePage();\n\t}\n\tthis.stackLayout.addItems( pages, index );\n\tthis.emit( 'add', pages, index );\n\n\treturn this;\n};\n\n/**\n * Remove the specified pages from the booklet layout.\n *\n * To remove all pages from the booklet, you may wish to use the #clearPages method instead.\n *\n * @param {OO.ui.PageLayout[]} pages An array of pages to remove\n * @fires remove\n * @chainable\n */\nOO.ui.BookletLayout.prototype.removePages = function ( pages ) {\n\tvar i, len, name, page,\n\t\titems = [];\n\n\tfor ( i = 0, len = pages.length; i < len; i++ ) {\n\t\tpage = pages[ i ];\n\t\tname = page.getName();\n\t\tdelete this.pages[ name ];\n\t\tif ( this.outlined ) {\n\t\t\titems.push( this.outlineSelectWidget.getItemFromData( name ) );\n\t\t\tpage.setOutlineItem( null );\n\t\t}\n\t}\n\tif ( this.outlined && items.length ) {\n\t\tthis.outlineSelectWidget.removeItems( items );\n\t\tthis.selectFirstSelectablePage();\n\t}\n\tthis.stackLayout.removeItems( pages );\n\tthis.emit( 'remove', pages );\n\n\treturn this;\n};\n\n/**\n * Clear all pages from the booklet layout.\n *\n * To remove only a subset of pages from the booklet, use the #removePages method.\n *\n * @fires remove\n * @chainable\n */\nOO.ui.BookletLayout.prototype.clearPages = function () {\n\tvar i, len,\n\t\tpages = this.stackLayout.getItems();\n\n\tthis.pages = {};\n\tthis.currentPageName = null;\n\tif ( this.outlined ) {\n\t\tthis.outlineSelectWidget.clearItems();\n\t\tfor ( i = 0, len = pages.length; i < len; i++ ) {\n\t\t\tpages[ i ].setOutlineItem( null );\n\t\t}\n\t}\n\tthis.stackLayout.clearItems();\n\n\tthis.emit( 'remove', pages );\n\n\treturn this;\n};\n\n/**\n * Set the current page by symbolic name.\n *\n * @fires set\n * @param {string} name Symbolic name of page\n */\nOO.ui.BookletLayout.prototype.setPage = function ( name ) {\n\tvar selectedItem,\n\t\t$focused,\n\t\tpage = this.pages[ name ],\n\t\tpreviousPage = this.currentPageName && this.pages[ this.currentPageName ];\n\n\tif ( name !== this.currentPageName ) {\n\t\tif ( this.outlined ) {\n\t\t\tselectedItem = this.outlineSelectWidget.getSelectedItem();\n\t\t\tif ( selectedItem && selectedItem.getData() !== name ) {\n\t\t\t\tthis.outlineSelectWidget.selectItemByData( name );\n\t\t\t}\n\t\t}\n\t\tif ( page ) {\n\t\t\tif ( previousPage ) {\n\t\t\t\tpreviousPage.setActive( false );\n\t\t\t\t// Blur anything focused if the next page doesn't have anything focusable.\n\t\t\t\t// This is not needed if the next page has something focusable (because once it is focused\n\t\t\t\t// this blur happens automatically). If the layout is non-continuous, this check is\n\t\t\t\t// meaningless because the next page is not visible yet and thus can't hold focus.\n\t\t\t\tif (\n\t\t\t\t\tthis.autoFocus &&\n\t\t\t\t\t!OO.ui.isMobile() &&\n\t\t\t\t\tthis.stackLayout.continuous &&\n\t\t\t\t\tOO.ui.findFocusable( page.$element ).length !== 0\n\t\t\t\t) {\n\t\t\t\t\t$focused = previousPage.$element.find( ':focus' );\n\t\t\t\t\tif ( $focused.length ) {\n\t\t\t\t\t\t$focused[ 0 ].blur();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.currentPageName = name;\n\t\t\tpage.setActive( true );\n\t\t\tthis.stackLayout.setItem( page );\n\t\t\tif ( !this.stackLayout.continuous && previousPage ) {\n\t\t\t\t// This should not be necessary, since any inputs on the previous page should have been\n\t\t\t\t// blurred when it was hidden, but browsers are not very consistent about this.\n\t\t\t\t$focused = previousPage.$element.find( ':focus' );\n\t\t\t\tif ( $focused.length ) {\n\t\t\t\t\t$focused[ 0 ].blur();\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.emit( 'set', page );\n\t\t}\n\t}\n};\n\n/**\n * Select the first selectable page.\n *\n * @chainable\n */\nOO.ui.BookletLayout.prototype.selectFirstSelectablePage = function () {\n\tif ( !this.outlineSelectWidget.getSelectedItem() ) {\n\t\tthis.outlineSelectWidget.selectItem( this.outlineSelectWidget.getFirstSelectableItem() );\n\t}\n\n\treturn this;\n};\n","/**\n * IndexLayouts contain {@link OO.ui.TabPanelLayout tab panel layouts} as well as\n * {@link OO.ui.TabSelectWidget tabs} that allow users to easily navigate through the tab panels and\n * select which one to display. By default, only one tab panel is displayed at a time. When a user\n * navigates to a new tab panel, the index layout automatically focuses on the first focusable element,\n * unless the default setting is changed.\n *\n * TODO: This class is similar to BookletLayout, we may want to refactor to reduce duplication\n *\n *     @example\n *     // Example of a IndexLayout that contains two TabPanelLayouts.\n *\n *     function TabPanelOneLayout( name, config ) {\n *         TabPanelOneLayout.parent.call( this, name, config );\n *         this.$element.append( '<p>First tab panel</p>' );\n *     }\n *     OO.inheritClass( TabPanelOneLayout, OO.ui.TabPanelLayout );\n *     TabPanelOneLayout.prototype.setupTabItem = function () {\n *         this.tabItem.setLabel( 'Tab panel one' );\n *     };\n *\n *     var tabPanel1 = new TabPanelOneLayout( 'one' ),\n *         tabPanel2 = new OO.ui.TabPanelLayout( 'two', { label: 'Tab panel two' } );\n *\n *     tabPanel2.$element.append( '<p>Second tab panel</p>' );\n *\n *     var index = new OO.ui.IndexLayout();\n *\n *     index.addTabPanels ( [ tabPanel1, tabPanel2 ] );\n *     $( 'body' ).append( index.$element );\n *\n * @class\n * @extends OO.ui.MenuLayout\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {boolean} [continuous=false] Show all tab panels, one after another\n * @cfg {boolean} [expanded=true] Expand the content panel to fill the entire parent element.\n * @cfg {boolean} [autoFocus=true] Focus on the first focusable element when a new tab panel is displayed. Disabled on mobile.\n */\nOO.ui.IndexLayout = function OoUiIndexLayout( config ) {\n\t// Configuration initialization\n\tconfig = $.extend( {}, config, { menuPosition: 'top' } );\n\n\t// Parent constructor\n\tOO.ui.IndexLayout.parent.call( this, config );\n\n\t// Properties\n\tthis.currentTabPanelName = null;\n\tthis.tabPanels = {};\n\n\tObject.defineProperty( this, 'currentCardName', {\n\t\t// TODO: read documentation\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget: function () {\n\t\t\tOO.ui.warnDeprecation( 'IndexLayout\\'s currentCardName property is deprecated. Use currentTabPanelName instead. See T155152' );\n\t\t\treturn this.currentTabPanelName;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tOO.ui.warnDeprecation( 'IndexLayout\\'s currentCardName property is deprecated. Use currentTabPanelName instead. See T155152' );\n\t\t\tthis.currentTabPanelName = value;\n\t\t}\n\t} );\n\n\tObject.defineProperty( this, 'cards', {\n\t\t// TODO: read documentation\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget: function () {\n\t\t\tOO.ui.warnDeprecation( 'IndexLayout\\'s cards property is deprecated. Use tabPanels instead. See T155152' );\n\t\t\treturn this.tabPanels;\n\t\t},\n\t\tset: function ( value ) {\n\t\t\tOO.ui.warnDeprecation( 'IndexLayout\\'s cards property is deprecated. Use tabPanels instead. See T155152' );\n\t\t\tthis.tabPanels = value;\n\t\t}\n\t} );\n\n\tthis.ignoreFocus = false;\n\tthis.stackLayout = new OO.ui.StackLayout( {\n\t\tcontinuous: !!config.continuous,\n\t\texpanded: config.expanded\n\t} );\n\tthis.$content.append( this.stackLayout.$element );\n\tthis.autoFocus = config.autoFocus === undefined || !!config.autoFocus;\n\n\tthis.tabSelectWidget = new OO.ui.TabSelectWidget();\n\tthis.tabPanel = new OO.ui.PanelLayout();\n\tthis.$menu.append( this.tabPanel.$element );\n\n\tthis.toggleMenu( true );\n\n\t// Events\n\tthis.stackLayout.connect( this, { set: 'onStackLayoutSet' } );\n\tthis.tabSelectWidget.connect( this, { select: 'onTabSelectWidgetSelect' } );\n\tif ( this.autoFocus ) {\n\t\t// Event 'focus' does not bubble, but 'focusin' does\n\t\tthis.stackLayout.$element.on( 'focusin', this.onStackLayoutFocus.bind( this ) );\n\t}\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-indexLayout' );\n\tthis.stackLayout.$element.addClass( 'oo-ui-indexLayout-stackLayout' );\n\tthis.tabPanel.$element\n\t\t.addClass( 'oo-ui-indexLayout-tabPanel' )\n\t\t.append( this.tabSelectWidget.$element );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.IndexLayout, OO.ui.MenuLayout );\n\n/* Events */\n\n/**\n * A 'set' event is emitted when a tab panel is {@link #setTabPanel set} to be displayed by the index layout.\n * @event set\n * @param {OO.ui.TabPanelLayout} tabPanel Current tab panel\n */\n\n/**\n * An 'add' event is emitted when tab panels are {@link #addTabPanels added} to the index layout.\n *\n * @event add\n * @param {OO.ui.TabPanelLayout[]} tabPanel Added tab panels\n * @param {number} index Index tab panels were added at\n */\n\n/**\n * A 'remove' event is emitted when tab panels are {@link #clearTabPanels cleared} or\n * {@link #removeTabPanels removed} from the index.\n *\n * @event remove\n * @param {OO.ui.TabPanelLayout[]} tabPanel Removed tab panels\n */\n\n/* Methods */\n\n/**\n * Handle stack layout focus.\n *\n * @private\n * @param {jQuery.Event} e Focusing event\n */\nOO.ui.IndexLayout.prototype.onStackLayoutFocus = function ( e ) {\n\tvar name, $target;\n\n\t// Find the tab panel that an element was focused within\n\t$target = $( e.target ).closest( '.oo-ui-tabPanelLayout' );\n\tfor ( name in this.tabPanels ) {\n\t\t// Check for tab panel match, exclude current tab panel to find only tab panel changes\n\t\tif ( this.tabPanels[ name ].$element[ 0 ] === $target[ 0 ] && name !== this.currentTabPanelName ) {\n\t\t\tthis.setTabPanel( name );\n\t\t\tbreak;\n\t\t}\n\t}\n};\n\n/**\n * Handle stack layout set events.\n *\n * @private\n * @param {OO.ui.PanelLayout|null} tabPanel The tab panel that is now the current panel\n */\nOO.ui.IndexLayout.prototype.onStackLayoutSet = function ( tabPanel ) {\n\tvar layout = this;\n\tif ( tabPanel ) {\n\t\ttabPanel.scrollElementIntoView().done( function () {\n\t\t\tif ( layout.autoFocus && !OO.ui.isMobile() ) {\n\t\t\t\tlayout.focus();\n\t\t\t}\n\t\t} );\n\t}\n};\n\n/**\n * Focus the first input in the current tab panel.\n *\n * If no tab panel is selected, the first selectable tab panel will be selected.\n * If the focus is already in an element on the current tab panel, nothing will happen.\n *\n * @param {number} [itemIndex] A specific item to focus on\n */\nOO.ui.IndexLayout.prototype.focus = function ( itemIndex ) {\n\tvar tabPanel,\n\t\titems = this.stackLayout.getItems();\n\n\tif ( itemIndex !== undefined && items[ itemIndex ] ) {\n\t\ttabPanel = items[ itemIndex ];\n\t} else {\n\t\ttabPanel = this.stackLayout.getCurrentItem();\n\t}\n\n\tif ( !tabPanel ) {\n\t\tthis.selectFirstSelectableTabPanel();\n\t\ttabPanel = this.stackLayout.getCurrentItem();\n\t}\n\tif ( !tabPanel ) {\n\t\treturn;\n\t}\n\t// Only change the focus if is not already in the current page\n\tif ( !OO.ui.contains( tabPanel.$element[ 0 ], this.getElementDocument().activeElement, true ) ) {\n\t\ttabPanel.focus();\n\t}\n};\n\n/**\n * Find the first focusable input in the index layout and focus\n * on it.\n */\nOO.ui.IndexLayout.prototype.focusFirstFocusable = function () {\n\tOO.ui.findFocusable( this.stackLayout.$element ).focus();\n};\n\n/**\n * Handle tab widget select events.\n *\n * @private\n * @param {OO.ui.OptionWidget|null} item Selected item\n */\nOO.ui.IndexLayout.prototype.onTabSelectWidgetSelect = function ( item ) {\n\tif ( item ) {\n\t\tthis.setTabPanel( item.getData() );\n\t}\n};\n\n/**\n * Get the tab panel closest to the specified tab panel.\n *\n * @param {OO.ui.TabPanelLayout} tabPanel Tab panel to use as a reference point\n * @return {OO.ui.TabPanelLayout|null} Tab panel closest to the specified\n */\nOO.ui.IndexLayout.prototype.getClosestTabPanel = function ( tabPanel ) {\n\tvar next, prev, level,\n\t\ttabPanels = this.stackLayout.getItems(),\n\t\tindex = tabPanels.indexOf( tabPanel );\n\n\tif ( index !== -1 ) {\n\t\tnext = tabPanels[ index + 1 ];\n\t\tprev = tabPanels[ index - 1 ];\n\t\t// Prefer adjacent tab panels at the same level\n\t\tlevel = this.tabSelectWidget.getItemFromData( tabPanel.getName() ).getLevel();\n\t\tif (\n\t\t\tprev &&\n\t\t\tlevel === this.tabSelectWidget.getItemFromData( prev.getName() ).getLevel()\n\t\t) {\n\t\t\treturn prev;\n\t\t}\n\t\tif (\n\t\t\tnext &&\n\t\t\tlevel === this.tabSelectWidget.getItemFromData( next.getName() ).getLevel()\n\t\t) {\n\t\t\treturn next;\n\t\t}\n\t}\n\treturn prev || next || null;\n};\n\n/**\n * Get the tab panel closest to the specified tab panel.\n *\n * @param {OO.ui.TabPanelLayout} tabPanel Tab panel to use as a reference point\n * @return {OO.ui.TabPanelLayout|null} Tab panel closest to the specified\n * @deprecated since v0.21.3, use `getClosestTabPanel` instead\n */\nOO.ui.IndexLayout.prototype.getClosestCard = function ( tabPanel ) {\n\tOO.ui.warnDeprecation( 'IndexLayout\\'s getClosestCard method is deprecated. Use getClosestTabPanel instead. See T155152' );\n\treturn this.getClosestTabPanel( tabPanel );\n};\n\n/**\n * Get the tabs widget.\n *\n * @return {OO.ui.TabSelectWidget} Tabs widget\n */\nOO.ui.IndexLayout.prototype.getTabs = function () {\n\treturn this.tabSelectWidget;\n};\n\n/**\n * Get a tab panel by its symbolic name.\n *\n * @param {string} name Symbolic name of tab panel\n * @return {OO.ui.TabPanelLayout|undefined} Tab panel, if found\n */\nOO.ui.IndexLayout.prototype.getTabPanel = function ( name ) {\n\treturn this.tabPanels[ name ];\n};\n\n/**\n * Get a tab panel by its symbolic name.\n *\n * @param {string} name Symbolic name of tab panel\n * @return {OO.ui.TabPanelLayout|undefined} Tab panel, if found\n * @deprecated since v0.21.3, use `getTabPanel` instead\n */\nOO.ui.IndexLayout.prototype.getCard = function ( name ) {\n\tOO.ui.warnDeprecation( 'IndexLayout\\'s getCard method is deprecated. Use getTabPanel instead. See T155152' );\n\treturn this.getTabPanel( name );\n};\n\n/**\n * Get the current tab panel.\n *\n * @return {OO.ui.TabPanelLayout|undefined} Current tab panel, if found\n */\nOO.ui.IndexLayout.prototype.getCurrentTabPanel = function () {\n\tvar name = this.getCurrentTabPanelName();\n\treturn name ? this.getTabPanel( name ) : undefined;\n};\n\n/**\n * Get the current tab panel.\n *\n * @return {OO.ui.TabPanelLayout|undefined} Current tab panel, if found\n * @deprecated since v0.21.3, use `getCurrentTabPanel` instead\n */\nOO.ui.IndexLayout.prototype.getCurrentCard = function () {\n\tOO.ui.warnDeprecation( 'IndexLayout\\'s getCurrentCard method is deprecated. Use getCurrentTabPanel instead. See T155152' );\n\treturn this.getCurrentTabPanel();\n};\n\n/**\n * Get the symbolic name of the current tab panel.\n *\n * @return {string|null} Symbolic name of the current tab panel\n */\nOO.ui.IndexLayout.prototype.getCurrentTabPanelName = function () {\n\treturn this.currentTabPanelName;\n};\n\n/**\n * Get the symbolic name of the current tab panel.\n *\n * @return {string|null} Symbolic name of the current tab panel\n * @deprecated since v0.21.3, use `getCurrentTabPanelName` instead\n */\nOO.ui.IndexLayout.prototype.getCurrentCardName = function () {\n\tOO.ui.warnDeprecation( 'IndexLayout\\'s getCurrentCardName method is deprecated. Use getCurrentTabPanelName instead. See T155152' );\n\treturn this.getCurrentTabPanelName();\n};\n\n/**\n * Add tab panels to the index layout\n *\n * When tab panels are added with the same names as existing tab panels, the existing tab panels\n * will be automatically removed before the new tab panels are added.\n *\n * @param {OO.ui.TabPanelLayout[]} tabPanels Tab panels to add\n * @param {number} index Index of the insertion point\n * @fires add\n * @chainable\n */\nOO.ui.IndexLayout.prototype.addTabPanels = function ( tabPanels, index ) {\n\tvar i, len, name, tabPanel, item, currentIndex,\n\t\tstackLayoutTabPanels = this.stackLayout.getItems(),\n\t\tremove = [],\n\t\titems = [];\n\n\t// Remove tab panels with same names\n\tfor ( i = 0, len = tabPanels.length; i < len; i++ ) {\n\t\ttabPanel = tabPanels[ i ];\n\t\tname = tabPanel.getName();\n\n\t\tif ( Object.prototype.hasOwnProperty.call( this.tabPanels, name ) ) {\n\t\t\t// Correct the insertion index\n\t\t\tcurrentIndex = stackLayoutTabPanels.indexOf( this.tabPanels[ name ] );\n\t\t\tif ( currentIndex !== -1 && currentIndex + 1 < index ) {\n\t\t\t\tindex--;\n\t\t\t}\n\t\t\tremove.push( this.tabPanels[ name ] );\n\t\t}\n\t}\n\tif ( remove.length ) {\n\t\tthis.removeTabPanels( remove );\n\t}\n\n\t// Add new tab panels\n\tfor ( i = 0, len = tabPanels.length; i < len; i++ ) {\n\t\ttabPanel = tabPanels[ i ];\n\t\tname = tabPanel.getName();\n\t\tthis.tabPanels[ tabPanel.getName() ] = tabPanel;\n\t\titem = new OO.ui.TabOptionWidget( { data: name } );\n\t\ttabPanel.setTabItem( item );\n\t\titems.push( item );\n\t}\n\n\tif ( items.length ) {\n\t\tthis.tabSelectWidget.addItems( items, index );\n\t\tthis.selectFirstSelectableTabPanel();\n\t}\n\tthis.stackLayout.addItems( tabPanels, index );\n\tthis.emit( 'add', tabPanels, index );\n\n\treturn this;\n};\n\n/**\n * Add tab panels to the index layout\n *\n * When tab panels are added with the same names as existing tab panels, the existing tab panels\n * will be automatically removed before the new tab panels are added.\n *\n * @param {OO.ui.TabPanelLayout[]} tabPanels Tab panels to add\n * @param {number} index Index of the insertion point\n * @fires add\n * @chainable\n * @deprecated since v0.21.3, use `addTabPanels` instead\n */\nOO.ui.IndexLayout.prototype.addCards = function ( tabPanels, index ) {\n\tOO.ui.warnDeprecation( 'IndexLayout\\'s addCards method is deprecated. Use addTabPanels instead. See T155152' );\n\treturn this.addTabPanels( tabPanels, index );\n};\n\n/**\n * Remove the specified tab panels from the index layout.\n *\n * To remove all tab panels from the index, you may wish to use the #clearTabPanels method instead.\n *\n * @param {OO.ui.TabPanelLayout[]} tabPanels An array of tab panels to remove\n * @fires remove\n * @chainable\n */\nOO.ui.IndexLayout.prototype.removeTabPanels = function ( tabPanels ) {\n\tvar i, len, name, tabPanel,\n\t\titems = [];\n\n\tfor ( i = 0, len = tabPanels.length; i < len; i++ ) {\n\t\ttabPanel = tabPanels[ i ];\n\t\tname = tabPanel.getName();\n\t\tdelete this.tabPanels[ name ];\n\t\titems.push( this.tabSelectWidget.getItemFromData( name ) );\n\t\ttabPanel.setTabItem( null );\n\t}\n\tif ( items.length ) {\n\t\tthis.tabSelectWidget.removeItems( items );\n\t\tthis.selectFirstSelectableTabPanel();\n\t}\n\tthis.stackLayout.removeItems( tabPanels );\n\tthis.emit( 'remove', tabPanels );\n\n\treturn this;\n};\n\n/**\n * Remove the specified tab panels from the index layout.\n *\n * To remove all tab panels from the index, you may wish to use the #clearTabPanels method instead.\n *\n * @param {OO.ui.TabPanelLayout[]} tabPanels An array of tab panels to remove\n * @fires remove\n * @chainable\n * @deprecated since v0.21.3, use `removeTabPanels` instead\n */\nOO.ui.IndexLayout.prototype.removeCards = function ( tabPanels ) {\n\tOO.ui.warnDeprecation( 'IndexLayout\\'s removeCards method is deprecated. Use removeTabPanels instead. See T155152.' );\n\treturn this.removeTabPanels( tabPanels );\n};\n\n/**\n * Clear all tab panels from the index layout.\n *\n * To remove only a subset of tab panels from the index, use the #removeTabPanels method.\n *\n * @fires remove\n * @chainable\n */\nOO.ui.IndexLayout.prototype.clearTabPanels = function () {\n\tvar i, len,\n\t\ttabPanels = this.stackLayout.getItems();\n\n\tthis.tabPanels = {};\n\tthis.currentTabPanelName = null;\n\tthis.tabSelectWidget.clearItems();\n\tfor ( i = 0, len = tabPanels.length; i < len; i++ ) {\n\t\ttabPanels[ i ].setTabItem( null );\n\t}\n\tthis.stackLayout.clearItems();\n\n\tthis.emit( 'remove', tabPanels );\n\n\treturn this;\n};\n\n/**\n * Clear all tab panels from the index layout.\n *\n * To remove only a subset of tab panels from the index, use the #removeTabPanels method.\n *\n * @fires remove\n * @chainable\n * @deprecated since v0.21.3, use `clearTabPanels` instead\n */\nOO.ui.IndexLayout.prototype.clearCards = function () {\n\tOO.ui.warnDeprecation( 'IndexLayout\\'s clearCards method is deprecated. Use clearTabPanels instead. See T155152.' );\n\treturn this.clearTabPanels();\n};\n\n/**\n * Set the current tab panel by symbolic name.\n *\n * @fires set\n * @param {string} name Symbolic name of tab panel\n */\nOO.ui.IndexLayout.prototype.setTabPanel = function ( name ) {\n\tvar selectedItem,\n\t\t$focused,\n\t\ttabPanel = this.tabPanels[ name ],\n\t\tpreviousTabPanel = this.currentTabPanelName && this.tabPanels[ this.currentTabPanelName ];\n\n\tif ( name !== this.currentTabPanelName ) {\n\t\tselectedItem = this.tabSelectWidget.getSelectedItem();\n\t\tif ( selectedItem && selectedItem.getData() !== name ) {\n\t\t\tthis.tabSelectWidget.selectItemByData( name );\n\t\t}\n\t\tif ( tabPanel ) {\n\t\t\tif ( previousTabPanel ) {\n\t\t\t\tpreviousTabPanel.setActive( false );\n\t\t\t\t// Blur anything focused if the next tab panel doesn't have anything focusable.\n\t\t\t\t// This is not needed if the next tab panel has something focusable (because once it is focused\n\t\t\t\t// this blur happens automatically). If the layout is non-continuous, this check is\n\t\t\t\t// meaningless because the next tab panel is not visible yet and thus can't hold focus.\n\t\t\t\tif (\n\t\t\t\t\tthis.autoFocus &&\n\t\t\t\t\t!OO.ui.isMobile() &&\n\t\t\t\t\tthis.stackLayout.continuous &&\n\t\t\t\t\tOO.ui.findFocusable( tabPanel.$element ).length !== 0\n\t\t\t\t) {\n\t\t\t\t\t$focused = previousTabPanel.$element.find( ':focus' );\n\t\t\t\t\tif ( $focused.length ) {\n\t\t\t\t\t\t$focused[ 0 ].blur();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.currentTabPanelName = name;\n\t\t\ttabPanel.setActive( true );\n\t\t\tthis.stackLayout.setItem( tabPanel );\n\t\t\tif ( !this.stackLayout.continuous && previousTabPanel ) {\n\t\t\t\t// This should not be necessary, since any inputs on the previous tab panel should have been\n\t\t\t\t// blurred when it was hidden, but browsers are not very consistent about this.\n\t\t\t\t$focused = previousTabPanel.$element.find( ':focus' );\n\t\t\t\tif ( $focused.length ) {\n\t\t\t\t\t$focused[ 0 ].blur();\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.emit( 'set', tabPanel );\n\t\t}\n\t}\n};\n\n/**\n * Set the current tab panel by symbolic name.\n *\n * @fires set\n * @param {string} name Symbolic name of tab panel\n * @deprecated since v0.21.3, use `setTabPanel` instead\n */\nOO.ui.IndexLayout.prototype.setCard = function ( name ) {\n\tOO.ui.warnDeprecation( 'IndexLayout\\'s setCard method is deprecated. Use setTabPanel instead. See T155152.' );\n\treturn this.setTabPanel( name );\n};\n\n/**\n * Select the first selectable tab panel.\n *\n * @chainable\n */\nOO.ui.IndexLayout.prototype.selectFirstSelectableTabPanel = function () {\n\tif ( !this.tabSelectWidget.getSelectedItem() ) {\n\t\tthis.tabSelectWidget.selectItem( this.tabSelectWidget.getFirstSelectableItem() );\n\t}\n\n\treturn this;\n};\n\n/**\n * Select the first selectable tab panel.\n *\n * @chainable\n * @deprecated since v0.21.3, use `selectFirstSelectableTabPanel` instead\n */\nOO.ui.IndexLayout.prototype.selectFirstSelectableCard = function () {\n\tOO.ui.warnDeprecation( 'IndexLayout\\'s selectFirstSelectableCard method is deprecated. Use selectFirestSelectableTabPanel instead. See T155152.' );\n\treturn this.selectFirstSelectableTabPanel();\n};\n","/**\n * ToggleWidget implements basic behavior of widgets with an on/off state.\n * Please see OO.ui.ToggleButtonWidget and OO.ui.ToggleSwitchWidget for examples.\n *\n * @abstract\n * @class\n * @extends OO.ui.Widget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {boolean} [value=false] The toggle’s initial on/off state.\n *  By default, the toggle is in the 'off' state.\n */\nOO.ui.ToggleWidget = function OoUiToggleWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.ToggleWidget.parent.call( this, config );\n\n\t// Properties\n\tthis.value = null;\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-toggleWidget' );\n\tthis.setValue( !!config.value );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ToggleWidget, OO.ui.Widget );\n\n/* Events */\n\n/**\n * @event change\n *\n * A change event is emitted when the on/off state of the toggle changes.\n *\n * @param {boolean} value Value representing the new state of the toggle\n */\n\n/* Methods */\n\n/**\n * Get the value representing the toggle’s state.\n *\n * @return {boolean} The on/off state of the toggle\n */\nOO.ui.ToggleWidget.prototype.getValue = function () {\n\treturn this.value;\n};\n\n/**\n * Set the state of the toggle: `true` for 'on', `false` for 'off'.\n *\n * @param {boolean} value The state of the toggle\n * @fires change\n * @chainable\n */\nOO.ui.ToggleWidget.prototype.setValue = function ( value ) {\n\tvalue = !!value;\n\tif ( this.value !== value ) {\n\t\tthis.value = value;\n\t\tthis.emit( 'change', value );\n\t\tthis.$element.toggleClass( 'oo-ui-toggleWidget-on', value );\n\t\tthis.$element.toggleClass( 'oo-ui-toggleWidget-off', !value );\n\t}\n\treturn this;\n};\n","/**\n * ToggleButtons are buttons that have a state (‘on’ or ‘off’) that is represented by a\n * Boolean value. Like other {@link OO.ui.ButtonWidget buttons}, toggle buttons can be\n * configured with {@link OO.ui.mixin.IconElement icons}, {@link OO.ui.mixin.IndicatorElement indicators},\n * {@link OO.ui.mixin.TitledElement titles}, {@link OO.ui.mixin.FlaggedElement styling flags},\n * and {@link OO.ui.mixin.LabelElement labels}. Please see\n * the [OOjs UI documentation][1] on MediaWiki for more information.\n *\n *     @example\n *     // Toggle buttons in the 'off' and 'on' state.\n *     var toggleButton1 = new OO.ui.ToggleButtonWidget( {\n *         label: 'Toggle Button off'\n *     } );\n *     var toggleButton2 = new OO.ui.ToggleButtonWidget( {\n *         label: 'Toggle Button on',\n *         value: true\n *     } );\n *     // Append the buttons to the DOM.\n *     $( 'body' ).append( toggleButton1.$element, toggleButton2.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Buttons_and_Switches#Toggle_buttons\n *\n * @class\n * @extends OO.ui.ToggleWidget\n * @mixins OO.ui.mixin.ButtonElement\n * @mixins OO.ui.mixin.IconElement\n * @mixins OO.ui.mixin.IndicatorElement\n * @mixins OO.ui.mixin.LabelElement\n * @mixins OO.ui.mixin.TitledElement\n * @mixins OO.ui.mixin.FlaggedElement\n * @mixins OO.ui.mixin.TabIndexedElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {boolean} [value=false] The toggle button’s initial on/off\n *  state. By default, the button is in the 'off' state.\n */\nOO.ui.ToggleButtonWidget = function OoUiToggleButtonWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.ToggleButtonWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.ButtonElement.call( this, $.extend( {}, config, { active: this.active } ) );\n\tOO.ui.mixin.IconElement.call( this, config );\n\tOO.ui.mixin.IndicatorElement.call( this, config );\n\tOO.ui.mixin.LabelElement.call( this, config );\n\tOO.ui.mixin.TitledElement.call( this, $.extend( {}, config, { $titled: this.$button } ) );\n\tOO.ui.mixin.FlaggedElement.call( this, config );\n\tOO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$button } ) );\n\n\t// Events\n\tthis.connect( this, { click: 'onAction' } );\n\n\t// Initialization\n\tthis.$button.append( this.$icon, this.$label, this.$indicator );\n\tthis.$element\n\t\t.addClass( 'oo-ui-toggleButtonWidget' )\n\t\t.append( this.$button );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ToggleButtonWidget, OO.ui.ToggleWidget );\nOO.mixinClass( OO.ui.ToggleButtonWidget, OO.ui.mixin.ButtonElement );\nOO.mixinClass( OO.ui.ToggleButtonWidget, OO.ui.mixin.IconElement );\nOO.mixinClass( OO.ui.ToggleButtonWidget, OO.ui.mixin.IndicatorElement );\nOO.mixinClass( OO.ui.ToggleButtonWidget, OO.ui.mixin.LabelElement );\nOO.mixinClass( OO.ui.ToggleButtonWidget, OO.ui.mixin.TitledElement );\nOO.mixinClass( OO.ui.ToggleButtonWidget, OO.ui.mixin.FlaggedElement );\nOO.mixinClass( OO.ui.ToggleButtonWidget, OO.ui.mixin.TabIndexedElement );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.ToggleButtonWidget.static.tagName = 'span';\n\n/* Methods */\n\n/**\n * Handle the button action being triggered.\n *\n * @private\n */\nOO.ui.ToggleButtonWidget.prototype.onAction = function () {\n\tthis.setValue( !this.value );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.ToggleButtonWidget.prototype.setValue = function ( value ) {\n\tvalue = !!value;\n\tif ( value !== this.value ) {\n\t\t// Might be called from parent constructor before ButtonElement constructor\n\t\tif ( this.$button ) {\n\t\t\tthis.$button.attr( 'aria-pressed', value.toString() );\n\t\t}\n\t\tthis.setActive( value );\n\t}\n\n\t// Parent method\n\tOO.ui.ToggleButtonWidget.parent.prototype.setValue.call( this, value );\n\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.ToggleButtonWidget.prototype.setButtonElement = function ( $button ) {\n\tif ( this.$button ) {\n\t\tthis.$button.removeAttr( 'aria-pressed' );\n\t}\n\tOO.ui.mixin.ButtonElement.prototype.setButtonElement.call( this, $button );\n\tthis.$button.attr( 'aria-pressed', this.value.toString() );\n};\n","/**\n * ToggleSwitches are switches that slide on and off. Their state is represented by a Boolean\n * value (`true` for ‘on’, and `false` otherwise, the default). The ‘off’ state is represented\n * visually by a slider in the leftmost position.\n *\n *     @example\n *     // Toggle switches in the 'off' and 'on' position.\n *     var toggleSwitch1 = new OO.ui.ToggleSwitchWidget();\n *     var toggleSwitch2 = new OO.ui.ToggleSwitchWidget( {\n *         value: true\n *     } );\n *\n *     // Create a FieldsetLayout to layout and label switches\n *     var fieldset = new OO.ui.FieldsetLayout( {\n *        label: 'Toggle switches'\n *     } );\n *     fieldset.addItems( [\n *         new OO.ui.FieldLayout( toggleSwitch1, { label: 'Off', align: 'top' } ),\n *         new OO.ui.FieldLayout( toggleSwitch2, { label: 'On', align: 'top' } )\n *     ] );\n *     $( 'body' ).append( fieldset.$element );\n *\n * @class\n * @extends OO.ui.ToggleWidget\n * @mixins OO.ui.mixin.TabIndexedElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {boolean} [value=false] The toggle switch’s initial on/off state.\n *  By default, the toggle switch is in the 'off' position.\n */\nOO.ui.ToggleSwitchWidget = function OoUiToggleSwitchWidget( config ) {\n\t// Parent constructor\n\tOO.ui.ToggleSwitchWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.TabIndexedElement.call( this, config );\n\n\t// Properties\n\tthis.dragging = false;\n\tthis.dragStart = null;\n\tthis.sliding = false;\n\tthis.$glow = $( '<span>' );\n\tthis.$grip = $( '<span>' );\n\n\t// Events\n\tthis.$element.on( {\n\t\tclick: this.onClick.bind( this ),\n\t\tkeypress: this.onKeyPress.bind( this )\n\t} );\n\n\t// Initialization\n\tthis.$glow.addClass( 'oo-ui-toggleSwitchWidget-glow' );\n\tthis.$grip.addClass( 'oo-ui-toggleSwitchWidget-grip' );\n\tthis.$element\n\t\t.addClass( 'oo-ui-toggleSwitchWidget' )\n\t\t.attr( 'role', 'checkbox' )\n\t\t.append( this.$glow, this.$grip );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ToggleSwitchWidget, OO.ui.ToggleWidget );\nOO.mixinClass( OO.ui.ToggleSwitchWidget, OO.ui.mixin.TabIndexedElement );\n\n/* Methods */\n\n/**\n * Handle mouse click events.\n *\n * @private\n * @param {jQuery.Event} e Mouse click event\n */\nOO.ui.ToggleSwitchWidget.prototype.onClick = function ( e ) {\n\tif ( !this.isDisabled() && e.which === OO.ui.MouseButtons.LEFT ) {\n\t\tthis.setValue( !this.value );\n\t}\n\treturn false;\n};\n\n/**\n * Handle key press events.\n *\n * @private\n * @param {jQuery.Event} e Key press event\n */\nOO.ui.ToggleSwitchWidget.prototype.onKeyPress = function ( e ) {\n\tif ( !this.isDisabled() && ( e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER ) ) {\n\t\tthis.setValue( !this.value );\n\t\treturn false;\n\t}\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.ToggleSwitchWidget.prototype.setValue = function ( value ) {\n\tOO.ui.ToggleSwitchWidget.parent.prototype.setValue.call( this, value );\n\tthis.$element.attr( 'aria-checked', this.value.toString() );\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.ToggleSwitchWidget.prototype.simulateLabelClick = function () {\n\tif ( !this.isDisabled() ) {\n\t\tthis.setValue( !this.value );\n\t}\n\tthis.focus();\n};\n","/**\n * OutlineControlsWidget is a set of controls for an {@link OO.ui.OutlineSelectWidget outline select widget}.\n * Controls include moving items up and down, removing items, and adding different kinds of items.\n *\n * **Currently, this class is only used by {@link OO.ui.BookletLayout booklet layouts}.**\n *\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.GroupElement\n * @mixins OO.ui.mixin.IconElement\n *\n * @constructor\n * @param {OO.ui.OutlineSelectWidget} outline Outline to control\n * @param {Object} [config] Configuration options\n * @cfg {Object} [abilities] List of abilties\n * @cfg {boolean} [abilities.move=true] Allow moving movable items\n * @cfg {boolean} [abilities.remove=true] Allow removing removable items\n */\nOO.ui.OutlineControlsWidget = function OoUiOutlineControlsWidget( outline, config ) {\n\t// Allow passing positional parameters inside the config object\n\tif ( OO.isPlainObject( outline ) && config === undefined ) {\n\t\tconfig = outline;\n\t\toutline = config.outline;\n\t}\n\n\t// Configuration initialization\n\tconfig = $.extend( { icon: 'add' }, config );\n\n\t// Parent constructor\n\tOO.ui.OutlineControlsWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.GroupElement.call( this, config );\n\tOO.ui.mixin.IconElement.call( this, config );\n\n\t// Properties\n\tthis.outline = outline;\n\tthis.$movers = $( '<div>' );\n\tthis.upButton = new OO.ui.ButtonWidget( {\n\t\tframed: false,\n\t\ticon: 'collapse',\n\t\ttitle: OO.ui.msg( 'ooui-outline-control-move-up' )\n\t} );\n\tthis.downButton = new OO.ui.ButtonWidget( {\n\t\tframed: false,\n\t\ticon: 'expand',\n\t\ttitle: OO.ui.msg( 'ooui-outline-control-move-down' )\n\t} );\n\tthis.removeButton = new OO.ui.ButtonWidget( {\n\t\tframed: false,\n\t\ticon: 'remove',\n\t\ttitle: OO.ui.msg( 'ooui-outline-control-remove' )\n\t} );\n\tthis.abilities = { move: true, remove: true };\n\n\t// Events\n\toutline.connect( this, {\n\t\tselect: 'onOutlineChange',\n\t\tadd: 'onOutlineChange',\n\t\tremove: 'onOutlineChange'\n\t} );\n\tthis.upButton.connect( this, { click: [ 'emit', 'move', -1 ] } );\n\tthis.downButton.connect( this, { click: [ 'emit', 'move', 1 ] } );\n\tthis.removeButton.connect( this, { click: [ 'emit', 'remove' ] } );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-outlineControlsWidget' );\n\tthis.$group.addClass( 'oo-ui-outlineControlsWidget-items' );\n\tthis.$movers\n\t\t.addClass( 'oo-ui-outlineControlsWidget-movers' )\n\t\t.append( this.removeButton.$element, this.upButton.$element, this.downButton.$element );\n\tthis.$element.append( this.$icon, this.$group, this.$movers );\n\tthis.setAbilities( config.abilities || {} );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.OutlineControlsWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.OutlineControlsWidget, OO.ui.mixin.GroupElement );\nOO.mixinClass( OO.ui.OutlineControlsWidget, OO.ui.mixin.IconElement );\n\n/* Events */\n\n/**\n * @event move\n * @param {number} places Number of places to move\n */\n\n/**\n * @event remove\n */\n\n/* Methods */\n\n/**\n * Set abilities.\n *\n * @param {Object} abilities List of abilties\n * @param {boolean} [abilities.move] Allow moving movable items\n * @param {boolean} [abilities.remove] Allow removing removable items\n */\nOO.ui.OutlineControlsWidget.prototype.setAbilities = function ( abilities ) {\n\tvar ability;\n\n\tfor ( ability in this.abilities ) {\n\t\tif ( abilities[ ability ] !== undefined ) {\n\t\t\tthis.abilities[ ability ] = !!abilities[ ability ];\n\t\t}\n\t}\n\n\tthis.onOutlineChange();\n};\n\n/**\n * Handle outline change events.\n *\n * @private\n */\nOO.ui.OutlineControlsWidget.prototype.onOutlineChange = function () {\n\tvar i, len, firstMovable, lastMovable,\n\t\titems = this.outline.getItems(),\n\t\tselectedItem = this.outline.getSelectedItem(),\n\t\tmovable = this.abilities.move && selectedItem && selectedItem.isMovable(),\n\t\tremovable = this.abilities.remove && selectedItem && selectedItem.isRemovable();\n\n\tif ( movable ) {\n\t\ti = -1;\n\t\tlen = items.length;\n\t\twhile ( ++i < len ) {\n\t\t\tif ( items[ i ].isMovable() ) {\n\t\t\t\tfirstMovable = items[ i ];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\ti = len;\n\t\twhile ( i-- ) {\n\t\t\tif ( items[ i ].isMovable() ) {\n\t\t\t\tlastMovable = items[ i ];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tthis.upButton.setDisabled( !movable || selectedItem === firstMovable );\n\tthis.downButton.setDisabled( !movable || selectedItem === lastMovable );\n\tthis.removeButton.setDisabled( !removable );\n};\n","/**\n * OutlineOptionWidget is an item in an {@link OO.ui.OutlineSelectWidget OutlineSelectWidget}.\n *\n * Currently, this class is only used by {@link OO.ui.BookletLayout booklet layouts}, which contain\n * {@link OO.ui.PageLayout page layouts}. See {@link OO.ui.BookletLayout BookletLayout}\n * for an example.\n *\n * @class\n * @extends OO.ui.DecoratedOptionWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {number} [level] Indentation level\n * @cfg {boolean} [movable] Allow modification from {@link OO.ui.OutlineControlsWidget outline controls}.\n */\nOO.ui.OutlineOptionWidget = function OoUiOutlineOptionWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.OutlineOptionWidget.parent.call( this, config );\n\n\t// Properties\n\tthis.level = 0;\n\tthis.movable = !!config.movable;\n\tthis.removable = !!config.removable;\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-outlineOptionWidget' );\n\tthis.setLevel( config.level );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.OutlineOptionWidget, OO.ui.DecoratedOptionWidget );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.OutlineOptionWidget.static.highlightable = true;\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.OutlineOptionWidget.static.scrollIntoViewOnSelect = true;\n\n/**\n * @static\n * @inheritable\n * @property {string}\n */\nOO.ui.OutlineOptionWidget.static.levelClass = 'oo-ui-outlineOptionWidget-level-';\n\n/**\n * @static\n * @inheritable\n * @property {number}\n */\nOO.ui.OutlineOptionWidget.static.levels = 3;\n\n/* Methods */\n\n/**\n * Check if item is movable.\n *\n * Movability is used by {@link OO.ui.OutlineControlsWidget outline controls}.\n *\n * @return {boolean} Item is movable\n */\nOO.ui.OutlineOptionWidget.prototype.isMovable = function () {\n\treturn this.movable;\n};\n\n/**\n * Check if item is removable.\n *\n * Removability is used by {@link OO.ui.OutlineControlsWidget outline controls}.\n *\n * @return {boolean} Item is removable\n */\nOO.ui.OutlineOptionWidget.prototype.isRemovable = function () {\n\treturn this.removable;\n};\n\n/**\n * Get indentation level.\n *\n * @return {number} Indentation level\n */\nOO.ui.OutlineOptionWidget.prototype.getLevel = function () {\n\treturn this.level;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.OutlineOptionWidget.prototype.setPressed = function ( state ) {\n\tOO.ui.OutlineOptionWidget.parent.prototype.setPressed.call( this, state );\n\tif ( this.pressed ) {\n\t\tthis.setFlags( { progressive: true } );\n\t} else if ( !this.selected ) {\n\t\tthis.setFlags( { progressive: false } );\n\t}\n\treturn this;\n};\n\n/**\n * Set movability.\n *\n * Movability is used by {@link OO.ui.OutlineControlsWidget outline controls}.\n *\n * @param {boolean} movable Item is movable\n * @chainable\n */\nOO.ui.OutlineOptionWidget.prototype.setMovable = function ( movable ) {\n\tthis.movable = !!movable;\n\tthis.updateThemeClasses();\n\treturn this;\n};\n\n/**\n * Set removability.\n *\n * Removability is used by {@link OO.ui.OutlineControlsWidget outline controls}.\n *\n * @param {boolean} removable Item is removable\n * @chainable\n */\nOO.ui.OutlineOptionWidget.prototype.setRemovable = function ( removable ) {\n\tthis.removable = !!removable;\n\tthis.updateThemeClasses();\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.OutlineOptionWidget.prototype.setSelected = function ( state ) {\n\tOO.ui.OutlineOptionWidget.parent.prototype.setSelected.call( this, state );\n\tif ( this.selected ) {\n\t\tthis.setFlags( { progressive: true } );\n\t} else {\n\t\tthis.setFlags( { progressive: false } );\n\t}\n\treturn this;\n};\n\n/**\n * Set indentation level.\n *\n * @param {number} [level=0] Indentation level, in the range of [0,#maxLevel]\n * @chainable\n */\nOO.ui.OutlineOptionWidget.prototype.setLevel = function ( level ) {\n\tvar levels = this.constructor.static.levels,\n\t\tlevelClass = this.constructor.static.levelClass,\n\t\ti = levels;\n\n\tthis.level = level ? Math.max( 0, Math.min( levels - 1, level ) ) : 0;\n\twhile ( i-- ) {\n\t\tif ( this.level === i ) {\n\t\t\tthis.$element.addClass( levelClass + i );\n\t\t} else {\n\t\t\tthis.$element.removeClass( levelClass + i );\n\t\t}\n\t}\n\tthis.updateThemeClasses();\n\n\treturn this;\n};\n","/**\n * OutlineSelectWidget is a structured list that contains {@link OO.ui.OutlineOptionWidget outline options}\n * A set of controls can be provided with an {@link OO.ui.OutlineControlsWidget outline controls} widget.\n *\n * **Currently, this class is only used by {@link OO.ui.BookletLayout booklet layouts}.**\n *\n * @class\n * @extends OO.ui.SelectWidget\n * @mixins OO.ui.mixin.TabIndexedElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.OutlineSelectWidget = function OoUiOutlineSelectWidget( config ) {\n\t// Parent constructor\n\tOO.ui.OutlineSelectWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.TabIndexedElement.call( this, config );\n\n\t// Events\n\tthis.$element.on( {\n\t\tfocus: this.bindKeyDownListener.bind( this ),\n\t\tblur: this.unbindKeyDownListener.bind( this )\n\t} );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-outlineSelectWidget' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.OutlineSelectWidget, OO.ui.SelectWidget );\nOO.mixinClass( OO.ui.OutlineSelectWidget, OO.ui.mixin.TabIndexedElement );\n","/**\n * ButtonOptionWidget is a special type of {@link OO.ui.mixin.ButtonElement button element} that\n * can be selected and configured with data. The class is\n * used with OO.ui.ButtonSelectWidget to create a selection of button options. Please see the\n * [OOjs UI documentation on MediaWiki] [1] for more information.\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options#Button_selects_and_options\n *\n * @class\n * @extends OO.ui.OptionWidget\n * @mixins OO.ui.mixin.ButtonElement\n * @mixins OO.ui.mixin.IconElement\n * @mixins OO.ui.mixin.IndicatorElement\n * @mixins OO.ui.mixin.TitledElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.ButtonOptionWidget = function OoUiButtonOptionWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.ButtonOptionWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.ButtonElement.call( this, config );\n\tOO.ui.mixin.IconElement.call( this, config );\n\tOO.ui.mixin.IndicatorElement.call( this, config );\n\tOO.ui.mixin.TitledElement.call( this, $.extend( {}, config, { $titled: this.$button } ) );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-buttonOptionWidget' );\n\tthis.$button.append( this.$icon, this.$label, this.$indicator );\n\tthis.$element.append( this.$button );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ButtonOptionWidget, OO.ui.OptionWidget );\nOO.mixinClass( OO.ui.ButtonOptionWidget, OO.ui.mixin.ButtonElement );\nOO.mixinClass( OO.ui.ButtonOptionWidget, OO.ui.mixin.IconElement );\nOO.mixinClass( OO.ui.ButtonOptionWidget, OO.ui.mixin.IndicatorElement );\nOO.mixinClass( OO.ui.ButtonOptionWidget, OO.ui.mixin.TitledElement );\n\n/* Static Properties */\n\n/**\n * Allow button mouse down events to pass through so they can be handled by the parent select widget\n *\n * @static\n * @inheritdoc\n */\nOO.ui.ButtonOptionWidget.static.cancelButtonMouseDownEvents = false;\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.ButtonOptionWidget.static.highlightable = false;\n\n/* Methods */\n\n/**\n * @inheritdoc\n */\nOO.ui.ButtonOptionWidget.prototype.setSelected = function ( state ) {\n\tOO.ui.ButtonOptionWidget.parent.prototype.setSelected.call( this, state );\n\n\tif ( this.constructor.static.selectable ) {\n\t\tthis.setActive( state );\n\t}\n\n\treturn this;\n};\n","/**\n * ButtonSelectWidget is a {@link OO.ui.SelectWidget select widget} that contains\n * button options and is used together with\n * OO.ui.ButtonOptionWidget. The ButtonSelectWidget provides an interface for\n * highlighting, choosing, and selecting mutually exclusive options. Please see\n * the [OOjs UI documentation on MediaWiki] [1] for more information.\n *\n *     @example\n *     // Example: A ButtonSelectWidget that contains three ButtonOptionWidgets\n *     var option1 = new OO.ui.ButtonOptionWidget( {\n *         data: 1,\n *         label: 'Option 1',\n *         title: 'Button option 1'\n *     } );\n *\n *     var option2 = new OO.ui.ButtonOptionWidget( {\n *         data: 2,\n *         label: 'Option 2',\n *         title: 'Button option 2'\n *     } );\n *\n *     var option3 = new OO.ui.ButtonOptionWidget( {\n *         data: 3,\n *         label: 'Option 3',\n *         title: 'Button option 3'\n *     } );\n *\n *     var buttonSelect=new OO.ui.ButtonSelectWidget( {\n *         items: [ option1, option2, option3 ]\n *     } );\n *     $( 'body' ).append( buttonSelect.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options\n *\n * @class\n * @extends OO.ui.SelectWidget\n * @mixins OO.ui.mixin.TabIndexedElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.ButtonSelectWidget = function OoUiButtonSelectWidget( config ) {\n\t// Parent constructor\n\tOO.ui.ButtonSelectWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.TabIndexedElement.call( this, config );\n\n\t// Events\n\tthis.$element.on( {\n\t\tfocus: this.bindKeyDownListener.bind( this ),\n\t\tblur: this.unbindKeyDownListener.bind( this )\n\t} );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-buttonSelectWidget' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ButtonSelectWidget, OO.ui.SelectWidget );\nOO.mixinClass( OO.ui.ButtonSelectWidget, OO.ui.mixin.TabIndexedElement );\n","/**\n * TabOptionWidget is an item in a {@link OO.ui.TabSelectWidget TabSelectWidget}.\n *\n * Currently, this class is only used by {@link OO.ui.IndexLayout index layouts}, which contain\n * {@link OO.ui.TabPanelLayout tab panel layouts}. See {@link OO.ui.IndexLayout IndexLayout}\n * for an example.\n *\n * @class\n * @extends OO.ui.OptionWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.TabOptionWidget = function OoUiTabOptionWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.TabOptionWidget.parent.call( this, config );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-tabOptionWidget' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.TabOptionWidget, OO.ui.OptionWidget );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.TabOptionWidget.static.highlightable = false;\n","/**\n * TabSelectWidget is a list that contains {@link OO.ui.TabOptionWidget tab options}\n *\n * **Currently, this class is only used by {@link OO.ui.IndexLayout index layouts}.**\n *\n * @class\n * @extends OO.ui.SelectWidget\n * @mixins OO.ui.mixin.TabIndexedElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.TabSelectWidget = function OoUiTabSelectWidget( config ) {\n\t// Parent constructor\n\tOO.ui.TabSelectWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.TabIndexedElement.call( this, config );\n\n\t// Events\n\tthis.$element.on( {\n\t\tfocus: this.bindKeyDownListener.bind( this ),\n\t\tblur: this.unbindKeyDownListener.bind( this )\n\t} );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-tabSelectWidget' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.TabSelectWidget, OO.ui.SelectWidget );\nOO.mixinClass( OO.ui.TabSelectWidget, OO.ui.mixin.TabIndexedElement );\n","/**\n * CapsuleItemWidgets are used within a {@link OO.ui.CapsuleMultiselectWidget\n * CapsuleMultiselectWidget} to display the selected items.\n *\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.ItemWidget\n * @mixins OO.ui.mixin.LabelElement\n * @mixins OO.ui.mixin.FlaggedElement\n * @mixins OO.ui.mixin.TabIndexedElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.CapsuleItemWidget = function OoUiCapsuleItemWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.CapsuleItemWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.ItemWidget.call( this );\n\tOO.ui.mixin.LabelElement.call( this, config );\n\tOO.ui.mixin.FlaggedElement.call( this, config );\n\tOO.ui.mixin.TabIndexedElement.call( this, config );\n\n\t// Events\n\tthis.closeButton = new OO.ui.ButtonWidget( {\n\t\tframed: false,\n\t\tindicator: 'clear',\n\t\ttabIndex: -1\n\t} ).on( 'click', this.onCloseClick.bind( this ) );\n\n\tthis.on( 'disable', function ( disabled ) {\n\t\tthis.closeButton.setDisabled( disabled );\n\t}.bind( this ) );\n\n\t// Initialization\n\tthis.$element\n\t\t.on( {\n\t\t\tclick: this.onClick.bind( this ),\n\t\t\tkeydown: this.onKeyDown.bind( this )\n\t\t} )\n\t\t.addClass( 'oo-ui-capsuleItemWidget' )\n\t\t.append( this.$label, this.closeButton.$element );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.CapsuleItemWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.CapsuleItemWidget, OO.ui.mixin.ItemWidget );\nOO.mixinClass( OO.ui.CapsuleItemWidget, OO.ui.mixin.LabelElement );\nOO.mixinClass( OO.ui.CapsuleItemWidget, OO.ui.mixin.FlaggedElement );\nOO.mixinClass( OO.ui.CapsuleItemWidget, OO.ui.mixin.TabIndexedElement );\n\n/* Methods */\n\n/**\n * Handle close icon clicks\n */\nOO.ui.CapsuleItemWidget.prototype.onCloseClick = function () {\n\tvar element = this.getElementGroup();\n\n\tif ( element && $.isFunction( element.removeItems ) ) {\n\t\telement.removeItems( [ this ] );\n\t\telement.focus();\n\t}\n};\n\n/**\n * Handle click event for the entire capsule\n */\nOO.ui.CapsuleItemWidget.prototype.onClick = function () {\n\tvar element = this.getElementGroup();\n\n\tif ( !this.isDisabled() && element && $.isFunction( element.editItem ) ) {\n\t\telement.editItem( this );\n\t}\n};\n\n/**\n * Handle keyDown event for the entire capsule\n *\n * @param {jQuery.Event} e Key down event\n */\nOO.ui.CapsuleItemWidget.prototype.onKeyDown = function ( e ) {\n\tvar element = this.getElementGroup();\n\n\tif ( e.keyCode === OO.ui.Keys.BACKSPACE || e.keyCode === OO.ui.Keys.DELETE ) {\n\t\telement.removeItems( [ this ] );\n\t\telement.focus();\n\t\treturn false;\n\t} else if ( e.keyCode === OO.ui.Keys.ENTER ) {\n\t\telement.editItem( this );\n\t\treturn false;\n\t} else if ( e.keyCode === OO.ui.Keys.LEFT ) {\n\t\telement.getPreviousItem( this ).focus();\n\t} else if ( e.keyCode === OO.ui.Keys.RIGHT ) {\n\t\telement.getNextItem( this ).focus();\n\t}\n};\n","/**\n * CapsuleMultiselectWidgets are something like a {@link OO.ui.ComboBoxInputWidget combo box widget}\n * that allows for selecting multiple values.\n *\n * For more information about menus and options, please see the [OOjs UI documentation on MediaWiki][1].\n *\n *     @example\n *     // Example: A CapsuleMultiselectWidget.\n *     var capsule = new OO.ui.CapsuleMultiselectWidget( {\n *         label: 'CapsuleMultiselectWidget',\n *         selected: [ 'Option 1', 'Option 3' ],\n *         menu: {\n *             items: [\n *                 new OO.ui.MenuOptionWidget( {\n *                     data: 'Option 1',\n *                     label: 'Option One'\n *                 } ),\n *                 new OO.ui.MenuOptionWidget( {\n *                     data: 'Option 2',\n *                     label: 'Option Two'\n *                 } ),\n *                 new OO.ui.MenuOptionWidget( {\n *                     data: 'Option 3',\n *                     label: 'Option Three'\n *                 } ),\n *                 new OO.ui.MenuOptionWidget( {\n *                     data: 'Option 4',\n *                     label: 'Option Four'\n *                 } ),\n *                 new OO.ui.MenuOptionWidget( {\n *                     data: 'Option 5',\n *                     label: 'Option Five'\n *                 } )\n *             ]\n *         }\n *     } );\n *     $( 'body' ).append( capsule.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options#Menu_selects_and_options\n *\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.GroupElement\n * @mixins OO.ui.mixin.PopupElement\n * @mixins OO.ui.mixin.TabIndexedElement\n * @mixins OO.ui.mixin.IndicatorElement\n * @mixins OO.ui.mixin.IconElement\n * @uses OO.ui.CapsuleItemWidget\n * @uses OO.ui.MenuSelectWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {string} [placeholder] Placeholder text\n * @cfg {boolean} [allowArbitrary=false] Allow data items to be added even if not present in the menu.\n * @cfg {boolean} [allowDuplicates=false] Allow duplicate items to be added.\n * @cfg {Object} [menu] (required) Configuration options to pass to the\n *  {@link OO.ui.MenuSelectWidget menu select widget}.\n * @cfg {Object} [popup] Configuration options to pass to the {@link OO.ui.PopupWidget popup widget}.\n *  If specified, this popup will be shown instead of the menu (but the menu\n *  will still be used for item labels and allowArbitrary=false). The widgets\n *  in the popup should use {@link #addItemsFromData} or {@link #addItems} as necessary.\n * @cfg {jQuery} [$overlay=this.$element] Render the menu or popup into a separate layer.\n *  This configuration is useful in cases where the expanded menu is larger than\n *  its containing `<div>`. The specified overlay layer is usually on top of\n *  the containing `<div>` and has a larger area. By default, the menu uses\n *  relative positioning.\n *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.\n */\nOO.ui.CapsuleMultiselectWidget = function OoUiCapsuleMultiselectWidget( config ) {\n\tvar $tabFocus;\n\n\t// Parent constructor\n\tOO.ui.CapsuleMultiselectWidget.parent.call( this, config );\n\n\t// Configuration initialization\n\tconfig = $.extend( {\n\t\tallowArbitrary: false,\n\t\tallowDuplicates: false,\n\t\t$overlay: this.$element\n\t}, config );\n\n\t// Properties (must be set before mixin constructor calls)\n\tthis.$handle = $( '<div>' );\n\tthis.$input = config.popup ? null : $( '<input>' );\n\tif ( config.placeholder !== undefined && config.placeholder !== '' ) {\n\t\tthis.$input.attr( 'placeholder', config.placeholder );\n\t}\n\n\t// Mixin constructors\n\tOO.ui.mixin.GroupElement.call( this, config );\n\tif ( config.popup ) {\n\t\tconfig.popup = $.extend( {}, config.popup, {\n\t\t\talign: 'forwards',\n\t\t\tanchor: false\n\t\t} );\n\t\tOO.ui.mixin.PopupElement.call( this, config );\n\t\t$tabFocus = $( '<span>' );\n\t\tOO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: $tabFocus } ) );\n\t} else {\n\t\tthis.popup = null;\n\t\t$tabFocus = null;\n\t\tOO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$input } ) );\n\t}\n\tOO.ui.mixin.IndicatorElement.call( this, config );\n\tOO.ui.mixin.IconElement.call( this, config );\n\n\t// Properties\n\tthis.$content = $( '<div>' );\n\tthis.allowArbitrary = config.allowArbitrary;\n\tthis.allowDuplicates = config.allowDuplicates;\n\tthis.$overlay = config.$overlay;\n\tthis.menu = new OO.ui.MenuSelectWidget( $.extend(\n\t\t{\n\t\t\twidget: this,\n\t\t\t$input: this.$input,\n\t\t\t$floatableContainer: this.$element,\n\t\t\tfilterFromInput: true,\n\t\t\tdisabled: this.isDisabled()\n\t\t},\n\t\tconfig.menu\n\t) );\n\n\t// Events\n\tif ( this.popup ) {\n\t\t$tabFocus.on( {\n\t\t\tfocus: this.focus.bind( this )\n\t\t} );\n\t\tthis.popup.$element.on( 'focusout', this.onPopupFocusOut.bind( this ) );\n\t\tif ( this.popup.$autoCloseIgnore ) {\n\t\t\tthis.popup.$autoCloseIgnore.on( 'focusout', this.onPopupFocusOut.bind( this ) );\n\t\t}\n\t\tthis.popup.connect( this, {\n\t\t\ttoggle: function ( visible ) {\n\t\t\t\t$tabFocus.toggle( !visible );\n\t\t\t}\n\t\t} );\n\t} else {\n\t\tthis.$input.on( {\n\t\t\tfocus: this.onInputFocus.bind( this ),\n\t\t\tblur: this.onInputBlur.bind( this ),\n\t\t\t'propertychange change click mouseup keydown keyup input cut paste select focus':\n\t\t\t\tOO.ui.debounce( this.updateInputSize.bind( this ) ),\n\t\t\tkeydown: this.onKeyDown.bind( this ),\n\t\t\tkeypress: this.onKeyPress.bind( this )\n\t\t} );\n\t}\n\tthis.menu.connect( this, {\n\t\tchoose: 'onMenuChoose',\n\t\ttoggle: 'onMenuToggle',\n\t\tadd: 'onMenuItemsChange',\n\t\tremove: 'onMenuItemsChange'\n\t} );\n\tthis.$handle.on( {\n\t\tmousedown: this.onMouseDown.bind( this )\n\t} );\n\n\t// Initialization\n\tif ( this.$input ) {\n\t\tthis.$input.prop( 'disabled', this.isDisabled() );\n\t\tthis.$input.attr( {\n\t\t\trole: 'combobox',\n\t\t\t'aria-owns': this.menu.getElementId(),\n\t\t\t'aria-autocomplete': 'list'\n\t\t} );\n\t}\n\tif ( config.data ) {\n\t\tthis.setItemsFromData( config.data );\n\t}\n\tthis.$content.addClass( 'oo-ui-capsuleMultiselectWidget-content' )\n\t\t.append( this.$group );\n\tthis.$group.addClass( 'oo-ui-capsuleMultiselectWidget-group' );\n\tthis.$handle.addClass( 'oo-ui-capsuleMultiselectWidget-handle' )\n\t\t.append( this.$indicator, this.$icon, this.$content );\n\tthis.$element.addClass( 'oo-ui-capsuleMultiselectWidget' )\n\t\t.append( this.$handle );\n\tif ( this.popup ) {\n\t\tthis.popup.$element.addClass( 'oo-ui-capsuleMultiselectWidget-popup' );\n\t\tthis.$content.append( $tabFocus );\n\t\tthis.$overlay.append( this.popup.$element );\n\t} else {\n\t\tthis.$content.append( this.$input );\n\t\tthis.$overlay.append( this.menu.$element );\n\t}\n\tif ( $tabFocus ) {\n\t\t$tabFocus.addClass( 'oo-ui-capsuleMultiselectWidget-focusTrap' );\n\t}\n\n\t// Input size needs to be calculated after everything else is rendered\n\tsetTimeout( function () {\n\t\tif ( this.$input ) {\n\t\t\tthis.updateInputSize();\n\t\t}\n\t}.bind( this ) );\n\n\tthis.onMenuItemsChange();\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.CapsuleMultiselectWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.CapsuleMultiselectWidget, OO.ui.mixin.GroupElement );\nOO.mixinClass( OO.ui.CapsuleMultiselectWidget, OO.ui.mixin.PopupElement );\nOO.mixinClass( OO.ui.CapsuleMultiselectWidget, OO.ui.mixin.TabIndexedElement );\nOO.mixinClass( OO.ui.CapsuleMultiselectWidget, OO.ui.mixin.IndicatorElement );\nOO.mixinClass( OO.ui.CapsuleMultiselectWidget, OO.ui.mixin.IconElement );\n\n/* Events */\n\n/**\n * @event change\n *\n * A change event is emitted when the set of selected items changes.\n *\n * @param {Mixed[]} datas Data of the now-selected items\n */\n\n/**\n * @event resize\n *\n * A resize event is emitted when the widget's dimensions change to accomodate newly added items or\n * current user input.\n */\n\n/* Methods */\n\n/**\n * Construct a OO.ui.CapsuleItemWidget (or a subclass thereof) from given label and data.\n * May return `null` if the given label and data are not valid.\n *\n * @protected\n * @param {Mixed} data Custom data of any type.\n * @param {string} label The label text.\n * @return {OO.ui.CapsuleItemWidget|null}\n */\nOO.ui.CapsuleMultiselectWidget.prototype.createItemWidget = function ( data, label ) {\n\tif ( label === '' ) {\n\t\treturn null;\n\t}\n\treturn new OO.ui.CapsuleItemWidget( { data: data, label: label } );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.CapsuleMultiselectWidget.prototype.getInputId = function () {\n\tif ( !this.$input ) {\n\t\treturn null;\n\t}\n\treturn OO.ui.mixin.TabIndexedElement.prototype.getInputId.call( this );\n};\n\n/**\n * Get the data of the items in the capsule\n *\n * @return {Mixed[]}\n */\nOO.ui.CapsuleMultiselectWidget.prototype.getItemsData = function () {\n\treturn this.getItems().map( function ( item ) {\n\t\treturn item.data;\n\t} );\n};\n\n/**\n * Set the items in the capsule by providing data\n *\n * @chainable\n * @param {Mixed[]} datas\n * @return {OO.ui.CapsuleMultiselectWidget}\n */\nOO.ui.CapsuleMultiselectWidget.prototype.setItemsFromData = function ( datas ) {\n\tvar widget = this,\n\t\tmenu = this.menu,\n\t\titems = this.getItems();\n\n\t$.each( datas, function ( i, data ) {\n\t\tvar j, label,\n\t\t\titem = menu.getItemFromData( data );\n\n\t\tif ( item ) {\n\t\t\tlabel = item.label;\n\t\t} else if ( widget.allowArbitrary ) {\n\t\t\tlabel = String( data );\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\titem = null;\n\t\tfor ( j = 0; j < items.length; j++ ) {\n\t\t\tif ( items[ j ].data === data && items[ j ].label === label ) {\n\t\t\t\titem = items[ j ];\n\t\t\t\titems.splice( j, 1 );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif ( !item ) {\n\t\t\titem = widget.createItemWidget( data, label );\n\t\t}\n\t\tif ( item ) {\n\t\t\twidget.addItems( [ item ], i );\n\t\t}\n\t} );\n\n\tif ( items.length ) {\n\t\twidget.removeItems( items );\n\t}\n\n\treturn this;\n};\n\n/**\n * Add items to the capsule by providing their data\n *\n * @chainable\n * @param {Mixed[]} datas\n * @return {OO.ui.CapsuleMultiselectWidget}\n */\nOO.ui.CapsuleMultiselectWidget.prototype.addItemsFromData = function ( datas ) {\n\tvar widget = this,\n\t\tmenu = this.menu,\n\t\titems = [];\n\n\t$.each( datas, function ( i, data ) {\n\t\tvar item;\n\n\t\tif ( !widget.getItemFromData( data ) || widget.allowDuplicates ) {\n\t\t\titem = menu.getItemFromData( data );\n\t\t\tif ( item ) {\n\t\t\t\titem = widget.createItemWidget( data, item.label );\n\t\t\t} else if ( widget.allowArbitrary ) {\n\t\t\t\titem = widget.createItemWidget( data, String( data ) );\n\t\t\t}\n\t\t\tif ( item ) {\n\t\t\t\titems.push( item );\n\t\t\t}\n\t\t}\n\t} );\n\n\tif ( items.length ) {\n\t\tthis.addItems( items );\n\t}\n\n\treturn this;\n};\n\n/**\n * Add items to the capsule by providing a label\n *\n * @param {string} label\n * @return {boolean} Whether the item was added or not\n */\nOO.ui.CapsuleMultiselectWidget.prototype.addItemFromLabel = function ( label ) {\n\tvar item, items;\n\titem = this.menu.getItemFromLabel( label, true );\n\tif ( item ) {\n\t\tthis.addItemsFromData( [ item.data ] );\n\t\treturn true;\n\t} else if ( this.allowArbitrary ) {\n\t\titems = this.getItems();\n\t\tthis.addItemsFromData( [ label ] );\n\t\treturn !OO.compare( this.getItems(), items );\n\t}\n\treturn false;\n};\n\n/**\n * Remove items by data\n *\n * @chainable\n * @param {Mixed[]} datas\n * @return {OO.ui.CapsuleMultiselectWidget}\n */\nOO.ui.CapsuleMultiselectWidget.prototype.removeItemsFromData = function ( datas ) {\n\tvar widget = this,\n\t\titems = [];\n\n\t$.each( datas, function ( i, data ) {\n\t\tvar item = widget.getItemFromData( data );\n\t\tif ( item ) {\n\t\t\titems.push( item );\n\t\t}\n\t} );\n\n\tif ( items.length ) {\n\t\tthis.removeItems( items );\n\t}\n\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.CapsuleMultiselectWidget.prototype.addItems = function ( items ) {\n\tvar same, i, l,\n\t\toldItems = this.items.slice();\n\n\tOO.ui.mixin.GroupElement.prototype.addItems.call( this, items );\n\n\tif ( this.items.length !== oldItems.length ) {\n\t\tsame = false;\n\t} else {\n\t\tsame = true;\n\t\tfor ( i = 0, l = oldItems.length; same && i < l; i++ ) {\n\t\t\tsame = same && this.items[ i ] === oldItems[ i ];\n\t\t}\n\t}\n\tif ( !same ) {\n\t\tthis.emit( 'change', this.getItemsData() );\n\t\tthis.updateInputSize();\n\t}\n\n\treturn this;\n};\n\n/**\n * Removes the item from the list and copies its label to `this.$input`.\n *\n * @param {Object} item\n */\nOO.ui.CapsuleMultiselectWidget.prototype.editItem = function ( item ) {\n\tthis.addItemFromLabel( this.$input.val() );\n\tthis.clearInput();\n\tthis.$input.val( item.label );\n\tthis.updateInputSize();\n\tthis.focus();\n\tthis.menu.updateItemVisibility(); // Hack, we shouldn't be calling this method directly\n\tthis.removeItems( [ item ] );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.CapsuleMultiselectWidget.prototype.removeItems = function ( items ) {\n\tvar same, i, l,\n\t\toldItems = this.items.slice();\n\n\tOO.ui.mixin.GroupElement.prototype.removeItems.call( this, items );\n\n\tif ( this.items.length !== oldItems.length ) {\n\t\tsame = false;\n\t} else {\n\t\tsame = true;\n\t\tfor ( i = 0, l = oldItems.length; same && i < l; i++ ) {\n\t\t\tsame = same && this.items[ i ] === oldItems[ i ];\n\t\t}\n\t}\n\tif ( !same ) {\n\t\tthis.emit( 'change', this.getItemsData() );\n\t\tthis.updateInputSize();\n\t}\n\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.CapsuleMultiselectWidget.prototype.clearItems = function () {\n\tif ( this.items.length ) {\n\t\tOO.ui.mixin.GroupElement.prototype.clearItems.call( this );\n\t\tthis.emit( 'change', this.getItemsData() );\n\t\tthis.updateInputSize();\n\t}\n\treturn this;\n};\n\n/**\n * Given an item, returns the item after it. If its the last item,\n * returns `this.$input`. If no item is passed, returns the very first\n * item.\n *\n * @param {OO.ui.CapsuleItemWidget} [item]\n * @return {OO.ui.CapsuleItemWidget|jQuery|boolean}\n */\nOO.ui.CapsuleMultiselectWidget.prototype.getNextItem = function ( item ) {\n\tvar itemIndex;\n\n\tif ( item === undefined ) {\n\t\treturn this.items[ 0 ];\n\t}\n\n\titemIndex = this.items.indexOf( item );\n\tif ( itemIndex < 0 ) { // Item not in list\n\t\treturn false;\n\t} else if ( itemIndex === this.items.length - 1 ) { // Last item\n\t\treturn this.$input;\n\t} else {\n\t\treturn this.items[ itemIndex + 1 ];\n\t}\n};\n\n/**\n * Given an item, returns the item before it. If its the first item,\n * returns `this.$input`. If no item is passed, returns the very last\n * item.\n *\n * @param {OO.ui.CapsuleItemWidget} [item]\n * @return {OO.ui.CapsuleItemWidget|jQuery|boolean}\n */\nOO.ui.CapsuleMultiselectWidget.prototype.getPreviousItem = function ( item ) {\n\tvar itemIndex;\n\n\tif ( item === undefined ) {\n\t\treturn this.items[ this.items.length - 1 ];\n\t}\n\n\titemIndex = this.items.indexOf( item );\n\tif ( itemIndex < 0 ) { // Item not in list\n\t\treturn false;\n\t} else if ( itemIndex === 0 ) { // First item\n\t\treturn this.$input;\n\t} else {\n\t\treturn this.items[ itemIndex - 1 ];\n\t}\n};\n\n/**\n * Get the capsule widget's menu.\n *\n * @return {OO.ui.MenuSelectWidget} Menu widget\n */\nOO.ui.CapsuleMultiselectWidget.prototype.getMenu = function () {\n\treturn this.menu;\n};\n\n/**\n * Handle focus events\n *\n * @private\n * @param {jQuery.Event} event\n */\nOO.ui.CapsuleMultiselectWidget.prototype.onInputFocus = function () {\n\tif ( !this.isDisabled() ) {\n\t\tthis.updateInputSize();\n\t\tthis.menu.toggle( true );\n\t}\n};\n\n/**\n * Handle blur events\n *\n * @private\n * @param {jQuery.Event} event\n */\nOO.ui.CapsuleMultiselectWidget.prototype.onInputBlur = function () {\n\tthis.addItemFromLabel( this.$input.val() );\n\tthis.clearInput();\n};\n\n/**\n * Handles popup focus out events.\n *\n * @private\n * @param {jQuery.Event} e Focus out event\n */\nOO.ui.CapsuleMultiselectWidget.prototype.onPopupFocusOut = function () {\n\tvar widget = this.popup;\n\n\tsetTimeout( function () {\n\t\tif (\n\t\t\twidget.isVisible() &&\n\t\t\t!OO.ui.contains( widget.$element.add( widget.$autoCloseIgnore ).get(), document.activeElement, true )\n\t\t) {\n\t\t\twidget.toggle( false );\n\t\t}\n\t} );\n};\n\n/**\n * Handle mouse down events.\n *\n * @private\n * @param {jQuery.Event} e Mouse down event\n */\nOO.ui.CapsuleMultiselectWidget.prototype.onMouseDown = function ( e ) {\n\tif ( e.which === OO.ui.MouseButtons.LEFT ) {\n\t\tthis.focus();\n\t\treturn false;\n\t} else {\n\t\tthis.updateInputSize();\n\t}\n};\n\n/**\n * Handle key press events.\n *\n * @private\n * @param {jQuery.Event} e Key press event\n */\nOO.ui.CapsuleMultiselectWidget.prototype.onKeyPress = function ( e ) {\n\tif ( !this.isDisabled() ) {\n\t\tif ( e.which === OO.ui.Keys.ESCAPE ) {\n\t\t\tthis.clearInput();\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !this.popup ) {\n\t\t\tthis.menu.toggle( true );\n\t\t\tif ( e.which === OO.ui.Keys.ENTER ) {\n\t\t\t\tif ( this.addItemFromLabel( this.$input.val() ) ) {\n\t\t\t\t\tthis.clearInput();\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Make sure the input gets resized.\n\t\t\tsetTimeout( this.updateInputSize.bind( this ), 0 );\n\t\t}\n\t}\n};\n\n/**\n * Handle key down events.\n *\n * @private\n * @param {jQuery.Event} e Key down event\n */\nOO.ui.CapsuleMultiselectWidget.prototype.onKeyDown = function ( e ) {\n\tif (\n\t\t!this.isDisabled() &&\n\t\tthis.$input.val() === '' &&\n\t\tthis.items.length\n\t) {\n\t\t// 'keypress' event is not triggered for Backspace\n\t\tif ( e.keyCode === OO.ui.Keys.BACKSPACE ) {\n\t\t\tif ( e.metaKey || e.ctrlKey ) {\n\t\t\t\tthis.removeItems( this.items.slice( -1 ) );\n\t\t\t} else {\n\t\t\t\tthis.editItem( this.items[ this.items.length - 1 ] );\n\t\t\t}\n\t\t\treturn false;\n\t\t} else if ( e.keyCode === OO.ui.Keys.LEFT ) {\n\t\t\tthis.getPreviousItem().focus();\n\t\t} else if ( e.keyCode === OO.ui.Keys.RIGHT ) {\n\t\t\tthis.getNextItem().focus();\n\t\t}\n\t}\n};\n\n/**\n * Update the dimensions of the text input field to encompass all available area.\n *\n * @private\n * @param {jQuery.Event} e Event of some sort\n */\nOO.ui.CapsuleMultiselectWidget.prototype.updateInputSize = function () {\n\tvar $lastItem, direction, contentWidth, currentWidth, bestWidth;\n\tif ( this.$input && !this.isDisabled() ) {\n\t\tthis.$input.css( 'width', '1em' );\n\t\t$lastItem = this.$group.children().last();\n\t\tdirection = OO.ui.Element.static.getDir( this.$handle );\n\n\t\t// Get the width of the input with the placeholder text as\n\t\t// the value and save it so that we don't keep recalculating\n\t\tif (\n\t\t\tthis.contentWidthWithPlaceholder === undefined &&\n\t\t\tthis.$input.val() === '' &&\n\t\t\tthis.$input.attr( 'placeholder' ) !== undefined\n\t\t) {\n\t\t\tthis.$input.val( this.$input.attr( 'placeholder' ) );\n\t\t\tthis.contentWidthWithPlaceholder = this.$input[ 0 ].scrollWidth;\n\t\t\tthis.$input.val( '' );\n\n\t\t}\n\n\t\t// Always keep the input wide enough for the placeholder text\n\t\tcontentWidth = Math.max(\n\t\t\tthis.$input[ 0 ].scrollWidth,\n\t\t\t// undefined arguments in Math.max lead to NaN\n\t\t\t( this.contentWidthWithPlaceholder === undefined ) ?\n\t\t\t\t0 : this.contentWidthWithPlaceholder\n\t\t);\n\t\tcurrentWidth = this.$input.width();\n\n\t\tif ( contentWidth < currentWidth ) {\n\t\t\tthis.updateIfHeightChanged();\n\t\t\t// All is fine, don't perform expensive calculations\n\t\t\treturn;\n\t\t}\n\n\t\tif ( $lastItem.length === 0 ) {\n\t\t\tbestWidth = this.$content.innerWidth();\n\t\t} else {\n\t\t\tbestWidth = direction === 'ltr' ?\n\t\t\t\tthis.$content.innerWidth() - $lastItem.position().left - $lastItem.outerWidth() :\n\t\t\t\t$lastItem.position().left;\n\t\t}\n\n\t\t// Some safety margin for sanity, because I *really* don't feel like finding out where the few\n\t\t// pixels this is off by are coming from.\n\t\tbestWidth -= 10;\n\t\tif ( contentWidth > bestWidth ) {\n\t\t\t// This will result in the input getting shifted to the next line\n\t\t\tbestWidth = this.$content.innerWidth() - 10;\n\t\t}\n\t\tthis.$input.width( Math.floor( bestWidth ) );\n\t\tthis.updateIfHeightChanged();\n\t} else {\n\t\tthis.updateIfHeightChanged();\n\t}\n};\n\n/**\n * Determine if widget height changed, and if so, update menu position and emit 'resize' event.\n *\n * @private\n */\nOO.ui.CapsuleMultiselectWidget.prototype.updateIfHeightChanged = function () {\n\tvar height = this.$element.height();\n\tif ( height !== this.height ) {\n\t\tthis.height = height;\n\t\tthis.menu.position();\n\t\tif ( this.popup ) {\n\t\t\tthis.popup.updateDimensions();\n\t\t}\n\t\tthis.emit( 'resize' );\n\t}\n};\n\n/**\n * Handle menu choose events.\n *\n * @private\n * @param {OO.ui.OptionWidget} item Chosen item\n */\nOO.ui.CapsuleMultiselectWidget.prototype.onMenuChoose = function ( item ) {\n\tif ( item && item.isVisible() ) {\n\t\tthis.addItemsFromData( [ item.getData() ] );\n\t\tthis.clearInput();\n\t}\n};\n\n/**\n * Handle menu toggle events.\n *\n * @private\n * @param {boolean} isVisible Menu toggle event\n */\nOO.ui.CapsuleMultiselectWidget.prototype.onMenuToggle = function ( isVisible ) {\n\tthis.$element.toggleClass( 'oo-ui-capsuleMultiselectWidget-open', isVisible );\n};\n\n/**\n * Handle menu item change events.\n *\n * @private\n */\nOO.ui.CapsuleMultiselectWidget.prototype.onMenuItemsChange = function () {\n\tthis.setItemsFromData( this.getItemsData() );\n\tthis.$element.toggleClass( 'oo-ui-capsuleMultiselectWidget-empty', this.menu.isEmpty() );\n};\n\n/**\n * Clear the input field\n *\n * @private\n */\nOO.ui.CapsuleMultiselectWidget.prototype.clearInput = function () {\n\tif ( this.$input ) {\n\t\tthis.$input.val( '' );\n\t\tthis.updateInputSize();\n\t}\n\tif ( this.popup ) {\n\t\tthis.popup.toggle( false );\n\t}\n\tthis.menu.toggle( false );\n\tthis.menu.selectItem();\n\tthis.menu.highlightItem();\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.CapsuleMultiselectWidget.prototype.setDisabled = function ( disabled ) {\n\tvar i, len;\n\n\t// Parent method\n\tOO.ui.CapsuleMultiselectWidget.parent.prototype.setDisabled.call( this, disabled );\n\n\tif ( this.$input ) {\n\t\tthis.$input.prop( 'disabled', this.isDisabled() );\n\t}\n\tif ( this.menu ) {\n\t\tthis.menu.setDisabled( this.isDisabled() );\n\t}\n\tif ( this.popup ) {\n\t\tthis.popup.setDisabled( this.isDisabled() );\n\t}\n\n\tif ( this.items ) {\n\t\tfor ( i = 0, len = this.items.length; i < len; i++ ) {\n\t\t\tthis.items[ i ].updateDisabled();\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * Focus the widget\n *\n * @chainable\n */\nOO.ui.CapsuleMultiselectWidget.prototype.focus = function () {\n\tif ( !this.isDisabled() ) {\n\t\tif ( this.popup ) {\n\t\t\tthis.popup.setSize( this.$handle.outerWidth() );\n\t\t\tthis.popup.toggle( true );\n\t\t\tOO.ui.findFocusable( this.popup.$element ).focus();\n\t\t} else {\n\t\t\tOO.ui.mixin.TabIndexedElement.prototype.focus.call( this );\n\t\t}\n\t}\n\treturn this;\n};\n","/**\n * TagItemWidgets are used within a {@link OO.ui.TagMultiselectWidget\n * TagMultiselectWidget} to display the selected items.\n *\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.ItemWidget\n * @mixins OO.ui.mixin.LabelElement\n * @mixins OO.ui.mixin.FlaggedElement\n * @mixins OO.ui.mixin.TabIndexedElement\n * @mixins OO.ui.mixin.DraggableElement\n *\n * @constructor\n * @param {Object} [config] Configuration object\n * @cfg {boolean} [valid=true] Item is valid\n */\nOO.ui.TagItemWidget = function OoUiTagItemWidget( config ) {\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.TagItemWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.ItemWidget.call( this );\n\tOO.ui.mixin.LabelElement.call( this, config );\n\tOO.ui.mixin.FlaggedElement.call( this, config );\n\tOO.ui.mixin.TabIndexedElement.call( this, config );\n\tOO.ui.mixin.DraggableElement.call( this, config );\n\n\tthis.valid = config.valid === undefined ? true : !!config.valid;\n\n\tthis.closeButton = new OO.ui.ButtonWidget( {\n\t\tframed: false,\n\t\tindicator: 'clear',\n\t\ttabIndex: -1\n\t} );\n\tthis.closeButton.setDisabled( this.isDisabled() );\n\n\t// Events\n\tthis.closeButton\n\t\t.connect( this, { click: 'remove' } );\n\tthis.$element\n\t\t.on( 'click', this.select.bind( this ) )\n\t\t.on( 'keydown', this.onKeyDown.bind( this ) )\n\t\t// Prevent propagation of mousedown; the tag item \"lives\" in the\n\t\t// clickable area of the TagMultiselectWidget, which listens to\n\t\t// mousedown to open the menu or popup. We want to prevent that\n\t\t// for clicks specifically on the tag itself, so the actions taken\n\t\t// are more deliberate. When the tag is clicked, it will emit the\n\t\t// selection event (similar to how #OO.ui.MultioptionWidget emits 'change')\n\t\t// and can be handled separately.\n\t\t.on( 'mousedown', function ( e ) { e.stopPropagation(); } );\n\n\t// Initialization\n\tthis.$element\n\t\t.addClass( 'oo-ui-tagItemWidget' )\n\t\t.append( this.$label, this.closeButton.$element );\n};\n\n/* Initialization */\n\nOO.inheritClass( OO.ui.TagItemWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.TagItemWidget, OO.ui.mixin.ItemWidget );\nOO.mixinClass( OO.ui.TagItemWidget, OO.ui.mixin.LabelElement );\nOO.mixinClass( OO.ui.TagItemWidget, OO.ui.mixin.FlaggedElement );\nOO.mixinClass( OO.ui.TagItemWidget, OO.ui.mixin.TabIndexedElement );\nOO.mixinClass( OO.ui.TagItemWidget, OO.ui.mixin.DraggableElement );\n\n/* Events */\n\n/**\n * @event remove\n *\n * A remove action was performed on the item\n */\n\n/**\n * @event navigate\n * @param {string} direction Direction of the movement, forward or backwards\n *\n * A navigate action was performed on the item\n */\n\n/**\n * @event select\n *\n * The tag widget was selected. This can occur when the widget\n * is either clicked or enter was pressed on it.\n */\n\n/**\n * @event valid\n * @param {boolean} isValid Item is valid\n *\n * Item validity has changed\n */\n\n/* Methods */\n\n/**\n * @inheritdoc\n */\nOO.ui.TagItemWidget.prototype.setDisabled = function ( state ) {\n\t// Parent method\n\tOO.ui.TagItemWidget.parent.prototype.setDisabled.call( this, state );\n\n\tif ( this.closeButton ) {\n\t\tthis.closeButton.setDisabled( state );\n\t}\n\treturn this;\n};\n\n/**\n * Handle removal of the item\n *\n * This is mainly for extensibility concerns, so other children\n * of this class can change the behavior if they need to. This\n * is called by both clicking the 'remove' button but also\n * on keypress, which is harder to override if needed.\n *\n * @fires remove\n */\nOO.ui.TagItemWidget.prototype.remove = function () {\n\tif ( !this.isDisabled() ) {\n\t\tthis.emit( 'remove' );\n\t}\n};\n\n/**\n * Handle a keydown event on the widget\n *\n * @fires navigate\n * @fires remove\n * @param {jQuery.Event} e Key down event\n * @return {boolean|undefined} false to stop the operation\n */\nOO.ui.TagItemWidget.prototype.onKeyDown = function ( e ) {\n\tvar movement;\n\n\tif ( e.keyCode === OO.ui.Keys.BACKSPACE || e.keyCode === OO.ui.Keys.DELETE ) {\n\t\tthis.remove();\n\t\treturn false;\n\t} else if ( e.keyCode === OO.ui.Keys.ENTER ) {\n\t\tthis.select();\n\t\treturn false;\n\t} else if (\n\t\te.keyCode === OO.ui.Keys.LEFT ||\n\t\te.keyCode === OO.ui.Keys.RIGHT\n\t) {\n\t\tif ( OO.ui.Element.static.getDir( this.$element ) === 'rtl' ) {\n\t\t\tmovement = {\n\t\t\t\tleft: 'forwards',\n\t\t\t\tright: 'backwards'\n\t\t\t};\n\t\t} else {\n\t\t\tmovement = {\n\t\t\t\tleft: 'backwards',\n\t\t\t\tright: 'forwards'\n\t\t\t};\n\t\t}\n\n\t\tthis.emit(\n\t\t\t'navigate',\n\t\t\te.keyCode === OO.ui.Keys.LEFT ?\n\t\t\t\tmovement.left : movement.right\n\t\t);\n\t}\n};\n\n/**\n * Select this item\n *\n * @fires select\n */\nOO.ui.TagItemWidget.prototype.select = function () {\n\tif ( !this.isDisabled() ) {\n\t\tthis.emit( 'select' );\n\t}\n};\n\n/**\n * Set the valid state of this item\n *\n * @param {boolean} [valid] Item is valid\n * @fires valid\n */\nOO.ui.TagItemWidget.prototype.toggleValid = function ( valid ) {\n\tvalid = valid === undefined ? !this.valid : !!valid;\n\n\tif ( this.valid !== valid ) {\n\t\tthis.valid = valid;\n\n\t\tthis.setFlags( { invalid: !this.valid } );\n\n\t\tthis.emit( 'valid', this.valid );\n\t}\n};\n\n/**\n * Check whether the item is valid\n *\n * @return {boolean} Item is valid\n */\nOO.ui.TagItemWidget.prototype.isValid = function () {\n\treturn this.valid;\n};\n","/**\n * A basic tag multiselect widget, similar in concept to {@link OO.ui.ComboBoxInputWidget combo box widget}\n * that allows the user to add multiple values that are displayed in a tag area.\n *\n * For more information about menus and options, please see the [OOjs UI documentation on MediaWiki][1].\n *\n * This widget is a base widget; see {@link OO.ui.MenuTagMultiselectWidget MenuTagMultiselectWidget} and\n * {@link OO.ui.PopupTagMultiselectWidget PopupTagMultiselectWidget} for the implementations that use\n * a menu and a popup respectively.\n *\n *     @example\n *     // Example: A basic TagMultiselectWidget.\n *     var widget = new OO.ui.TagMultiselectWidget( {\n *         inputPosition: 'outline',\n *         allowedValues: [ 'Option 1', 'Option 2', 'Option 3' ],\n *         selected: [ 'Option 1' ]\n *     } );\n *     $( 'body' ).append( widget.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options#Menu_selects_and_options\n *\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.GroupWidget\n * @mixins OO.ui.mixin.DraggableGroupElement\n * @mixins OO.ui.mixin.IndicatorElement\n * @mixins OO.ui.mixin.IconElement\n * @mixins OO.ui.mixin.TabIndexedElement\n * @mixins OO.ui.mixin.FlaggedElement\n *\n * @constructor\n * @param {Object} config Configuration object\n * @cfg {Object} [input] Configuration options for the input widget\n * @cfg {OO.ui.InputWidget} [inputWidget] An optional input widget. If given, it will\n *  replace the input widget used in the TagMultiselectWidget. If not given,\n *  TagMultiselectWidget creates its own.\n * @cfg {boolean} [inputPosition='inline'] Position of the input. Options are:\n * \t- inline: The input is invisible, but exists inside the tag list, so\n * \t\tthe user types into the tag groups to add tags.\n * \t- outline: The input is underneath the tag area.\n * \t- none: No input supplied\n * @cfg {boolean} [allowEditTags=true] Allow editing of the tags by clicking them\n * @cfg {boolean} [allowArbitrary=false] Allow data items to be added even if\n *  not present in the menu.\n * @cfg {Object[]} [allowedValues] An array representing the allowed items\n *  by their datas.\n * @cfg {boolean} [allowDuplicates=false] Allow duplicate items to be added\n * @cfg {boolean} [allowDisplayInvalidTags=false] Allow the display of\n *  invalid tags. These tags will display with an invalid state, and\n *  the widget as a whole will have an invalid state if any invalid tags\n *  are present.\n * @cfg {boolean} [allowReordering=true] Allow reordering of the items\n * @cfg {Object[]|String[]} [selected] A set of selected tags. If given,\n *  these will appear in the tag list on initialization, as long as they\n *  pass the validity tests.\n */\nOO.ui.TagMultiselectWidget = function OoUiTagMultiselectWidget( config ) {\n\tvar inputEvents,\n\t\trAF = window.requestAnimationFrame || setTimeout,\n\t\twidget = this,\n\t\t$tabFocus = $( '<span>' )\n\t\t\t.addClass( 'oo-ui-tagMultiselectWidget-focusTrap' );\n\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.TagMultiselectWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.GroupWidget.call( this, config );\n\tOO.ui.mixin.IndicatorElement.call( this, config );\n\tOO.ui.mixin.IconElement.call( this, config );\n\tOO.ui.mixin.TabIndexedElement.call( this, config );\n\tOO.ui.mixin.FlaggedElement.call( this, config );\n\tOO.ui.mixin.DraggableGroupElement.call( this, config );\n\n\tthis.toggleDraggable(\n\t\tconfig.allowReordering === undefined ?\n\t\t\ttrue : !!config.allowReordering\n\t);\n\n\tthis.inputPosition = this.constructor.static.allowedInputPositions.indexOf( config.inputPosition ) > -1 ?\n\t\t\tconfig.inputPosition : 'inline';\n\tthis.allowEditTags = config.allowEditTags === undefined ? true : !!config.allowEditTags;\n\tthis.allowArbitrary = !!config.allowArbitrary;\n\tthis.allowDuplicates = !!config.allowDuplicates;\n\tthis.allowedValues = config.allowedValues || [];\n\tthis.allowDisplayInvalidTags = config.allowDisplayInvalidTags;\n\tthis.hasInput = this.inputPosition !== 'none';\n\tthis.height = null;\n\tthis.valid = true;\n\n\tthis.$content = $( '<div>' )\n\t\t.addClass( 'oo-ui-tagMultiselectWidget-content' );\n\tthis.$handle = $( '<div>' )\n\t\t.addClass( 'oo-ui-tagMultiselectWidget-handle' )\n\t\t.append(\n\t\t\tthis.$indicator,\n\t\t\tthis.$icon,\n\t\t\tthis.$content\n\t\t\t\t.append(\n\t\t\t\t\tthis.$group\n\t\t\t\t\t\t.addClass( 'oo-ui-tagMultiselectWidget-group' )\n\t\t\t\t)\n\t\t);\n\n\t// Events\n\tthis.aggregate( {\n\t\tremove: 'itemRemove',\n\t\tnavigate: 'itemNavigate',\n\t\tselect: 'itemSelect'\n\t} );\n\tthis.connect( this, {\n\t\titemRemove: 'onTagRemove',\n\t\titemSelect: 'onTagSelect',\n\t\titemNavigate: 'onTagNavigate',\n\t\tchange: 'onChangeTags'\n\t} );\n\tthis.$handle.on( {\n\t\tmousedown: this.onMouseDown.bind( this )\n\t} );\n\n\t// Initialize\n\tthis.$element\n\t\t.addClass( 'oo-ui-tagMultiselectWidget' )\n\t\t.append( this.$handle );\n\n\tif ( this.hasInput ) {\n\t\tif ( config.inputWidget ) {\n\t\t\tthis.input = config.inputWidget;\n\t\t} else {\n\t\t\tthis.input = new OO.ui.TextInputWidget( $.extend( {\n\t\t\t\tplaceholder: config.placeholder,\n\t\t\t\tclasses: [ 'oo-ui-tagMultiselectWidget-input' ]\n\t\t\t}, config.input ) );\n\t\t}\n\t\tthis.input.setDisabled( this.isDisabled() );\n\n\t\tinputEvents = {\n\t\t\tfocus: this.onInputFocus.bind( this ),\n\t\t\tblur: this.onInputBlur.bind( this ),\n\t\t\t'propertychange change click mouseup keydown keyup input cut paste select focus':\n\t\t\t\tOO.ui.debounce( this.updateInputSize.bind( this ) ),\n\t\t\tkeydown: this.onInputKeyDown.bind( this ),\n\t\t\tkeypress: this.onInputKeyPress.bind( this )\n\t\t};\n\n\t\tthis.input.$input.on( inputEvents );\n\n\t\tif ( this.inputPosition === 'outline' ) {\n\t\t\t// Override max-height for the input widget\n\t\t\t// in the case the widget is outline so it can\n\t\t\t// stretch all the way if the widet is wide\n\t\t\tthis.input.$element.css( 'max-width', 'inherit' );\n\t\t\tthis.$element\n\t\t\t\t.addClass( 'oo-ui-tagMultiselectWidget-outlined' )\n\t\t\t\t.append( this.input.$element );\n\t\t} else {\n\t\t\tthis.$element.addClass( 'oo-ui-tagMultiselectWidget-inlined' );\n\t\t\t// HACK: When the widget is using 'inline' input, the\n\t\t\t// behavior needs to only use the $input itself\n\t\t\t// so we style and size it accordingly (otherwise\n\t\t\t// the styling and sizing can get very convoluted\n\t\t\t// when the wrapping divs and other elements)\n\t\t\t// We are taking advantage of still being able to\n\t\t\t// call the widget itself for operations like\n\t\t\t// .getValue() and setDisabled() and .focus() but\n\t\t\t// having only the $input attached to the DOM\n\t\t\tthis.$content.append( this.input.$input );\n\t\t}\n\t} else {\n\t\tthis.$content.append( $tabFocus );\n\t}\n\n\tthis.setTabIndexedElement(\n\t\tthis.hasInput ?\n\t\t\tthis.input.$input :\n\t\t\t$tabFocus\n\t);\n\n\tif ( config.selected ) {\n\t\tthis.setValue( config.selected );\n\t}\n\n\t// HACK: Input size needs to be calculated after everything\n\t// else is rendered\n\trAF( function () {\n\t\tif ( widget.hasInput ) {\n\t\t\twidget.updateInputSize();\n\t\t}\n\t} );\n};\n\n/* Initialization */\n\nOO.inheritClass( OO.ui.TagMultiselectWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.TagMultiselectWidget, OO.ui.mixin.GroupWidget );\nOO.mixinClass( OO.ui.TagMultiselectWidget, OO.ui.mixin.DraggableGroupElement );\nOO.mixinClass( OO.ui.TagMultiselectWidget, OO.ui.mixin.IndicatorElement );\nOO.mixinClass( OO.ui.TagMultiselectWidget, OO.ui.mixin.IconElement );\nOO.mixinClass( OO.ui.TagMultiselectWidget, OO.ui.mixin.TabIndexedElement );\nOO.mixinClass( OO.ui.TagMultiselectWidget, OO.ui.mixin.FlaggedElement );\n\n/* Static properties */\n\n/**\n * Allowed input positions.\n * - inline: The input is inside the tag list\n * - outline: The input is under the tag list\n * - none: There is no input\n *\n * @property {Array}\n */\nOO.ui.TagMultiselectWidget.static.allowedInputPositions = [ 'inline', 'outline', 'none' ];\n\n/* Methods */\n\n/**\n * Handle mouse down events.\n *\n * @private\n * @param {jQuery.Event} e Mouse down event\n * @return {boolean} False to prevent defaults\n */\nOO.ui.TagMultiselectWidget.prototype.onMouseDown = function ( e ) {\n\tif ( !this.isDisabled() && e.which === OO.ui.MouseButtons.LEFT ) {\n\t\tthis.focus();\n\t\treturn false;\n\t}\n};\n\n/**\n * Handle key press events.\n *\n * @private\n * @param {jQuery.Event} e Key press event\n * @return {boolean} Whether to prevent defaults\n */\nOO.ui.TagMultiselectWidget.prototype.onInputKeyPress = function ( e ) {\n\tvar stopOrContinue,\n\t\twithMetaKey = e.metaKey || e.ctrlKey;\n\n\tif ( !this.isDisabled() ) {\n\t\tif ( e.which === OO.ui.Keys.ENTER ) {\n\t\t\tstopOrContinue = this.doInputEnter( e, withMetaKey );\n\t\t}\n\n\t\t// Make sure the input gets resized.\n\t\tsetTimeout( this.updateInputSize.bind( this ), 0 );\n\t\treturn stopOrContinue;\n\t}\n};\n\n/**\n * Handle key down events.\n *\n * @private\n * @param {jQuery.Event} e Key down event\n * @return {boolean}\n */\nOO.ui.TagMultiselectWidget.prototype.onInputKeyDown = function ( e ) {\n\tvar movement, direction,\n\t\twithMetaKey = e.metaKey || e.ctrlKey;\n\n\tif ( !this.isDisabled() ) {\n\t\t// 'keypress' event is not triggered for Backspace\n\t\tif ( e.keyCode === OO.ui.Keys.BACKSPACE ) {\n\t\t\treturn this.doInputBackspace( e, withMetaKey );\n\t\t} else if ( e.keyCode === OO.ui.Keys.ESCAPE ) {\n\t\t\treturn this.doInputEscape( e );\n\t\t} else if (\n\t\t\te.keyCode === OO.ui.Keys.LEFT ||\n\t\t\te.keyCode === OO.ui.Keys.RIGHT\n\t\t) {\n\t\t\tif ( OO.ui.Element.static.getDir( this.$element ) === 'rtl' ) {\n\t\t\t\tmovement = {\n\t\t\t\t\tleft: 'forwards',\n\t\t\t\t\tright: 'backwards'\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tmovement = {\n\t\t\t\t\tleft: 'backwards',\n\t\t\t\t\tright: 'forwards'\n\t\t\t\t};\n\t\t\t}\n\t\t\tdirection = e.keyCode === OO.ui.Keys.LEFT ?\n\t\t\t\tmovement.left : movement.right;\n\n\t\t\treturn this.doInputArrow( e, direction, withMetaKey );\n\t\t}\n\t}\n};\n\n/**\n * Respond to input focus event\n */\nOO.ui.TagMultiselectWidget.prototype.onInputFocus = function () {\n\tthis.$element.addClass( 'oo-ui-tagMultiselectWidget-focus' );\n};\n\n/**\n * Respond to input blur event\n */\nOO.ui.TagMultiselectWidget.prototype.onInputBlur = function () {\n\tthis.$element.removeClass( 'oo-ui-tagMultiselectWidget-focus' );\n};\n\n/**\n * Perform an action after the enter key on the input\n *\n * @param {jQuery.Event} e Event data\n * @param {boolean} [withMetaKey] Whether this key was pressed with\n * a meta key like 'ctrl'\n * @return {boolean} Whether to prevent defaults\n */\nOO.ui.TagMultiselectWidget.prototype.doInputEnter = function () {\n\tthis.addTagFromInput();\n\treturn false;\n};\n\n/**\n * Perform an action responding to the enter key on the input\n *\n * @param {jQuery.Event} e Event data\n * @param {boolean} [withMetaKey] Whether this key was pressed with\n * a meta key like 'ctrl'\n * @return {boolean} Whether to prevent defaults\n */\nOO.ui.TagMultiselectWidget.prototype.doInputBackspace = function ( e, withMetaKey ) {\n\tvar items, item;\n\n\tif (\n\t\tthis.inputPosition === 'inline' &&\n\t\tthis.input.getValue() === '' &&\n\t\t!this.isEmpty()\n\t) {\n\t\t// Delete the last item\n\t\titems = this.getItems();\n\t\titem = items[ items.length - 1 ];\n\t\tthis.removeItems( [ item ] );\n\t\t// If Ctrl/Cmd was pressed, delete item entirely.\n\t\t// Otherwise put it into the text field for editing.\n\t\tif ( !withMetaKey ) {\n\t\t\tthis.input.setValue( item.getData() );\n\t\t}\n\n\t\treturn false;\n\t}\n};\n\n/**\n * Perform an action after the escape key on the input\n *\n * @param {jQuery.Event} e Event data\n */\nOO.ui.TagMultiselectWidget.prototype.doInputEscape = function () {\n\tthis.clearInput();\n};\n\n/**\n * Perform an action after the arrow key on the input, select the previous\n * or next item from the input.\n * See #getPreviousItem and #getNextItem\n *\n * @param {jQuery.Event} e Event data\n * @param {string} direction Direction of the movement; forwards or backwards\n * @param {boolean} [withMetaKey] Whether this key was pressed with\n *  a meta key like 'ctrl'\n */\nOO.ui.TagMultiselectWidget.prototype.doInputArrow = function ( e, direction ) {\n\tif (\n\t\tthis.inputPosition === 'inline' &&\n\t\t!this.isEmpty()\n\t) {\n\t\tif ( direction === 'backwards' ) {\n\t\t\t// Get previous item\n\t\t\tthis.getPreviousItem().focus();\n\t\t} else {\n\t\t\t// Get next item\n\t\t\tthis.getNextItem().focus();\n\t\t}\n\t}\n};\n\n/**\n * Respond to item select event\n *\n * @param {OO.ui.TagItemWidget} item Selected item\n */\nOO.ui.TagMultiselectWidget.prototype.onTagSelect = function ( item ) {\n\tif ( this.hasInput && this.allowEditTags ) {\n\t\tif ( this.input.getValue() ) {\n\t\t\tthis.addTagFromInput();\n\t\t}\n\t\t// 1. Get the label of the tag into the input\n\t\tthis.input.setValue( item.getData() );\n\t\t// 2. Remove the tag\n\t\tthis.removeItems( [ item ] );\n\t\t// 3. Focus the input\n\t\tthis.focus();\n\t}\n};\n\n/**\n * Respond to change event, where items were added, removed, or cleared.\n */\nOO.ui.TagMultiselectWidget.prototype.onChangeTags = function () {\n\tthis.toggleValid( this.checkValidity() );\n\tif ( this.hasInput ) {\n\t\tthis.updateInputSize();\n\t}\n\tthis.updateIfHeightChanged();\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.TagMultiselectWidget.prototype.setDisabled = function ( isDisabled ) {\n\t// Parent method\n\tOO.ui.TagMultiselectWidget.parent.prototype.setDisabled.call( this, isDisabled );\n\n\tif ( this.hasInput && this.input ) {\n\t\tthis.input.setDisabled( !!isDisabled );\n\t}\n\n\tif ( this.items ) {\n\t\tthis.getItems().forEach( function ( item ) {\n\t\t\titem.setDisabled( !!isDisabled );\n\t\t} );\n\t}\n};\n\n/**\n * Respond to tag remove event\n * @param {OO.ui.TagItemWidget} item Removed tag\n */\nOO.ui.TagMultiselectWidget.prototype.onTagRemove = function ( item ) {\n\tthis.removeTagByData( item.getData() );\n};\n\n/**\n * Respond to navigate event on the tag\n *\n * @param {OO.ui.TagItemWidget} item Removed tag\n * @param {string} direction Direction of movement; 'forwards' or 'backwards'\n */\nOO.ui.TagMultiselectWidget.prototype.onTagNavigate = function ( item, direction ) {\n\tif ( direction === 'forwards' ) {\n\t\tthis.getNextItem( item ).focus();\n\t} else {\n\t\tthis.getPreviousItem( item ).focus();\n\t}\n};\n\n/**\n * Add tag from input value\n */\nOO.ui.TagMultiselectWidget.prototype.addTagFromInput = function () {\n\tvar val = this.input.getValue(),\n\t\tisValid = this.isAllowedData( val );\n\n\tif ( !val ) {\n\t\treturn;\n\t}\n\n\tif ( isValid || this.allowDisplayInvalidTags ) {\n\t\tthis.addTag( val );\n\t\tthis.clearInput();\n\t\tthis.focus();\n\t}\n};\n\n/**\n * Clear the input\n */\nOO.ui.TagMultiselectWidget.prototype.clearInput = function () {\n\tthis.input.setValue( '' );\n};\n\n/**\n * Check whether the given value is a duplicate of an existing\n * tag already in the list.\n *\n * @param {string|Object} data Requested value\n * @return {boolean} Value is duplicate\n */\nOO.ui.TagMultiselectWidget.prototype.isDuplicateData = function ( data ) {\n\treturn !!this.getItemFromData( data );\n};\n\n/**\n * Check whether a given value is allowed to be added\n *\n * @param {string|Object} data Requested value\n * @return {boolean} Value is allowed\n */\nOO.ui.TagMultiselectWidget.prototype.isAllowedData = function ( data ) {\n\tif (\n\t\t!this.allowDuplicates &&\n\t\tthis.isDuplicateData( data )\n\t) {\n\t\treturn false;\n\t}\n\n\tif ( this.allowArbitrary ) {\n\t\treturn true;\n\t}\n\n\t// Check with allowed values\n\tif (\n\t\tthis.getAllowedValues().some( function ( value ) {\n\t\t\treturn data === value;\n\t\t} )\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n/**\n * Get the allowed values list\n *\n * @return {string[]} Allowed data values\n */\nOO.ui.TagMultiselectWidget.prototype.getAllowedValues = function () {\n\treturn this.allowedValues;\n};\n\n/**\n * Add a value to the allowed values list\n *\n * @param {string} value Allowed data value\n */\nOO.ui.TagMultiselectWidget.prototype.addAllowedValue = function ( value ) {\n\tif ( this.allowedValues.indexOf( value ) === -1 ) {\n\t\tthis.allowedValues.push( value );\n\t}\n};\n\n/**\n * Get the datas of the currently selected items\n *\n * @return {string[]|Object[]} Datas of currently selected items\n */\nOO.ui.TagMultiselectWidget.prototype.getValue = function () {\n\treturn this.getItems()\n\t\t.filter( function ( item ) {\n\t\t\treturn item.isValid();\n\t\t} )\n\t\t.map( function ( item ) {\n\t\t\treturn item.getData();\n\t\t} );\n};\n\n/**\n * Set the value of this widget by datas.\n *\n * @param {string|string[]|Object|Object[]} valueObject An object representing the data\n *  and label of the value. If the widget allows arbitrary values,\n *  the items will be added as-is. Otherwise, the data value will\n *  be checked against allowedValues.\n *  This object must contain at least a data key. Example:\n *  { data: 'foo', label: 'Foo item' }\n *  For multiple items, use an array of objects. For example:\n *   [\n *      { data: 'foo', label: 'Foo item' },\n *      { data: 'bar', label: 'Bar item' }\n * \t ]\n *  Value can also be added with plaintext array, for example:\n *  [ 'foo', 'bar', 'bla' ] or a single string, like 'foo'\n */\nOO.ui.TagMultiselectWidget.prototype.setValue = function ( valueObject ) {\n\tvalueObject = Array.isArray( valueObject ) ? valueObject : [ valueObject ];\n\n\tthis.clearItems();\n\tvalueObject.forEach( function ( obj ) {\n\t\tif ( typeof obj === 'string' ) {\n\t\t\tthis.addTag( obj );\n\t\t} else {\n\t\t\tthis.addTag( obj.data, obj.label );\n\t\t}\n\t}.bind( this ) );\n};\n\n/**\n * Add tag to the display area\n *\n * @param {string|Object} data Tag data\n * @param {string} [label] Tag label. If no label is provided, the\n *  stringified version of the data will be used instead.\n * @return {boolean} Item was added successfully\n */\nOO.ui.TagMultiselectWidget.prototype.addTag = function ( data, label ) {\n\tvar newItemWidget,\n\t\tisValid = this.isAllowedData( data );\n\n\tif ( isValid || this.allowDisplayInvalidTags ) {\n\t\tnewItemWidget = this.createTagItemWidget( data, label );\n\t\tnewItemWidget.toggleValid( isValid );\n\t\tthis.addItems( [ newItemWidget ] );\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n/**\n * Remove tag by its data property.\n *\n * @param {string|Object} data Tag data\n */\nOO.ui.TagMultiselectWidget.prototype.removeTagByData = function ( data ) {\n\tvar item = this.getItemFromData( data );\n\n\tthis.removeItems( [ item ] );\n};\n\n/**\n * Construct a OO.ui.TagItemWidget (or a subclass thereof) from given label and data.\n *\n * @protected\n * @param {string} data Item data\n * @param {string} label The label text.\n * @return {OO.ui.TagItemWidget}\n */\nOO.ui.TagMultiselectWidget.prototype.createTagItemWidget = function ( data, label ) {\n\tlabel = label || data;\n\n\treturn new OO.ui.TagItemWidget( { data: data, label: label } );\n};\n\n/**\n * Given an item, returns the item after it. If the item is already the\n * last item, return `this.input`. If no item is passed, returns the\n * very first item.\n *\n * @protected\n * @param {OO.ui.TagItemWidget} [item] Tag item\n * @return {OO.ui.Widget} The next widget available.\n */\nOO.ui.TagMultiselectWidget.prototype.getNextItem = function ( item ) {\n\tvar itemIndex = this.items.indexOf( item );\n\n\tif ( item === undefined || itemIndex === -1 ) {\n\t\treturn this.items[ 0 ];\n\t}\n\n\tif ( itemIndex === this.items.length - 1 ) { // Last item\n\t\tif ( this.hasInput ) {\n\t\t\treturn this.input;\n\t\t} else {\n\t\t\t// Return first item\n\t\t\treturn this.items[ 0 ];\n\t\t}\n\t} else {\n\t\treturn this.items[ itemIndex + 1 ];\n\t}\n};\n\n/**\n * Given an item, returns the item before it. If the item is already the\n * first item, return `this.input`. If no item is passed, returns the\n * very last item.\n *\n * @protected\n * @param {OO.ui.TagItemWidget} [item] Tag item\n * @return {OO.ui.Widget} The previous widget available.\n */\nOO.ui.TagMultiselectWidget.prototype.getPreviousItem = function ( item ) {\n\tvar itemIndex = this.items.indexOf( item );\n\n\tif ( item === undefined || itemIndex === -1 ) {\n\t\treturn this.items[ this.items.length - 1 ];\n\t}\n\n\tif ( itemIndex === 0 ) {\n\t\tif ( this.hasInput ) {\n\t\t\treturn this.input;\n\t\t} else {\n\t\t\t// Return the last item\n\t\t\treturn this.items[ this.items.length - 1 ];\n\t\t}\n\t} else {\n\t\treturn this.items[ itemIndex - 1 ];\n\t}\n};\n\n/**\n * Update the dimensions of the text input field to encompass all available area.\n * This is especially relevant for when the input is at the edge of a line\n * and should get smaller. The usual operation (as an inline-block with min-width)\n * does not work in that case, pushing the input downwards to the next line.\n *\n * @private\n */\nOO.ui.TagMultiselectWidget.prototype.updateInputSize = function () {\n\tvar $lastItem, direction, contentWidth, currentWidth, bestWidth;\n\tif ( this.inputPosition === 'inline' && !this.isDisabled() ) {\n\t\tthis.input.$input.css( 'width', '1em' );\n\t\t$lastItem = this.$group.children().last();\n\t\tdirection = OO.ui.Element.static.getDir( this.$handle );\n\n\t\t// Get the width of the input with the placeholder text as\n\t\t// the value and save it so that we don't keep recalculating\n\t\tif (\n\t\t\tthis.contentWidthWithPlaceholder === undefined &&\n\t\t\tthis.input.getValue() === '' &&\n\t\t\tthis.input.$input.attr( 'placeholder' ) !== undefined\n\t\t) {\n\t\t\tthis.input.setValue( this.input.$input.attr( 'placeholder' ) );\n\t\t\tthis.contentWidthWithPlaceholder = this.input.$input[ 0 ].scrollWidth;\n\t\t\tthis.input.setValue( '' );\n\n\t\t}\n\n\t\t// Always keep the input wide enough for the placeholder text\n\t\tcontentWidth = Math.max(\n\t\t\tthis.input.$input[ 0 ].scrollWidth,\n\t\t\t// undefined arguments in Math.max lead to NaN\n\t\t\t( this.contentWidthWithPlaceholder === undefined ) ?\n\t\t\t\t0 : this.contentWidthWithPlaceholder\n\t\t);\n\t\tcurrentWidth = this.input.$input.width();\n\n\t\tif ( contentWidth < currentWidth ) {\n\t\t\tthis.updateIfHeightChanged();\n\t\t\t// All is fine, don't perform expensive calculations\n\t\t\treturn;\n\t\t}\n\n\t\tif ( $lastItem.length === 0 ) {\n\t\t\tbestWidth = this.$content.innerWidth();\n\t\t} else {\n\t\t\tbestWidth = direction === 'ltr' ?\n\t\t\t\tthis.$content.innerWidth() - $lastItem.position().left - $lastItem.outerWidth() :\n\t\t\t\t$lastItem.position().left;\n\t\t}\n\n\t\t// Some safety margin for sanity, because I *really* don't feel like finding out where the few\n\t\t// pixels this is off by are coming from.\n\t\tbestWidth -= 10;\n\t\tif ( contentWidth > bestWidth ) {\n\t\t\t// This will result in the input getting shifted to the next line\n\t\t\tbestWidth = this.$content.innerWidth() - 10;\n\t\t}\n\t\tthis.input.$input.width( Math.floor( bestWidth ) );\n\t\tthis.updateIfHeightChanged();\n\t} else {\n\t\tthis.updateIfHeightChanged();\n\t}\n};\n\n/**\n * Determine if widget height changed, and if so,\n * emit the resize event. This is useful for when there are either\n * menus or popups attached to the bottom of the widget, to allow\n * them to change their positioning in case the widget moved down\n * or up.\n *\n * @private\n */\nOO.ui.TagMultiselectWidget.prototype.updateIfHeightChanged = function () {\n\tvar height = this.$element.height();\n\tif ( height !== this.height ) {\n\t\tthis.height = height;\n\t\tthis.emit( 'resize' );\n\t}\n};\n\n/**\n * Check whether all items in the widget are valid\n *\n * @return {boolean} Widget is valid\n */\nOO.ui.TagMultiselectWidget.prototype.checkValidity = function () {\n\treturn this.getItems().every( function ( item ) {\n\t\treturn item.isValid();\n\t} );\n};\n\n/**\n * Set the valid state of this item\n *\n * @param {boolean} [valid] Item is valid\n * @fires valid\n */\nOO.ui.TagMultiselectWidget.prototype.toggleValid = function ( valid ) {\n\tvalid = valid === undefined ? !this.valid : !!valid;\n\n\tif ( this.valid !== valid ) {\n\t\tthis.valid = valid;\n\n\t\tthis.setFlags( { invalid: !this.valid } );\n\n\t\tthis.emit( 'valid', this.valid );\n\t}\n};\n\n/**\n * Get the current valid state of the widget\n *\n * @return {boolean} Widget is valid\n */\nOO.ui.TagMultiselectWidget.prototype.isValid = function () {\n\treturn this.valid;\n};\n","/**\n * PopupTagMultiselectWidget is a {@link OO.ui.TagMultiselectWidget OO.ui.TagMultiselectWidget} intended\n * to use a popup. The popup can be configured to have a default input to insert values into the widget.\n *\n * For more information about menus and options, please see the [OOjs UI documentation on MediaWiki][1].\n *\n *     @example\n *     // Example: A basic PopupTagMultiselectWidget.\n *     var widget = new OO.ui.PopupTagMultiselectWidget();\n *     $( 'body' ).append( widget.$element );\n *\n *     // Example: A PopupTagMultiselectWidget with an external popup.\n *     var popupInput = new OO.ui.TextInputWidget(),\n *         widget = new OO.ui.PopupTagMultiselectWidget( {\n *            popupInput: popupInput,\n *            popup: {\n *               $content: popupInput.$element\n *            }\n *         } );\n *     $( 'body' ).append( widget.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options#Menu_selects_and_options\n *\n * @class\n * @extends OO.ui.TagMultiselectWidget\n * @mixins OO.ui.mixin.PopupElement\n *\n * @param {Object} config Configuration object\n * @cfg {jQuery} [$overlay] An overlay for the popup.\n *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.\n * @cfg {Object} [popup] Configuration options for the popup\n * @cfg {OO.ui.InputWidget} [popupInput] An input widget inside the popup that will be\n *  focused when the popup is opened and will be used as replacement for the\n *  general input in the widget.\n */\nOO.ui.PopupTagMultiselectWidget = function OoUiPopupTagMultiselectWidget( config ) {\n\tvar defaultInput,\n\t\tdefaultConfig = { popup: {} };\n\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.PopupTagMultiselectWidget.parent.call( this, $.extend( { inputPosition: 'none' }, config ) );\n\n\tthis.$overlay = config.$overlay || this.$element;\n\n\tif ( !config.popup ) {\n\t\t// For the default base implementation, we give a popup\n\t\t// with an input widget inside it. For any other use cases\n\t\t// the popup needs to be populated externally and the\n\t\t// event handled to add tags separately and manually\n\t\tdefaultInput = new OO.ui.TextInputWidget();\n\n\t\tdefaultConfig.popupInput = defaultInput;\n\t\tdefaultConfig.popup.$content = defaultInput.$element;\n\n\t\tthis.$element.addClass( 'oo-ui-popupTagMultiselectWidget-defaultPopup' );\n\t}\n\n\t// Add overlay, and add that to the autoCloseIgnore\n\tdefaultConfig.popup.$overlay = this.$overlay;\n\tdefaultConfig.popup.$autoCloseIgnore = this.hasInput ?\n\t\tthis.input.$element.add( this.$overlay ) : this.$overlay;\n\n\t// Allow extending any of the above\n\tconfig = $.extend( defaultConfig, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.PopupElement.call( this, config );\n\n\tif ( this.hasInput ) {\n\t\tthis.input.$input.on( 'focus', this.popup.toggle.bind( this.popup, true ) );\n\t}\n\n\t// Configuration options\n\tthis.popupInput = config.popupInput;\n\tif ( this.popupInput ) {\n\t\tthis.popupInput.connect( this, {\n\t\t\tenter: 'onPopupInputEnter'\n\t\t} );\n\t}\n\n\t// Events\n\tthis.on( 'resize', this.popup.updateDimensions.bind( this.popup ) );\n\tthis.popup.connect( this, { toggle: 'onPopupToggle' } );\n\tthis.$tabIndexed\n\t\t.on( 'focus', this.onFocus.bind( this ) );\n\n\t// Initialize\n\tthis.$element\n\t\t.append( this.popup.$element )\n\t\t.addClass( 'oo-ui-popupTagMultiselectWidget' );\n};\n\n/* Initialization */\n\nOO.inheritClass( OO.ui.PopupTagMultiselectWidget, OO.ui.TagMultiselectWidget );\nOO.mixinClass( OO.ui.PopupTagMultiselectWidget, OO.ui.mixin.PopupElement );\n\n/* Methods */\n\n/**\n * Focus event handler.\n *\n * @private\n */\nOO.ui.PopupTagMultiselectWidget.prototype.onFocus = function () {\n\tthis.popup.toggle( true );\n};\n\n/**\n * Respond to popup toggle event\n *\n * @param {boolean} isVisible Popup is visible\n */\nOO.ui.PopupTagMultiselectWidget.prototype.onPopupToggle = function ( isVisible ) {\n\tif ( isVisible && this.popupInput ) {\n\t\tthis.popupInput.focus();\n\t}\n};\n\n/**\n * Respond to popup input enter event\n */\nOO.ui.PopupTagMultiselectWidget.prototype.onPopupInputEnter = function () {\n\tif ( this.popupInput ) {\n\t\tthis.addTagByPopupValue( this.popupInput.getValue() );\n\t\tthis.popupInput.setValue( '' );\n\t}\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.PopupTagMultiselectWidget.prototype.onTagSelect = function ( item ) {\n\tif ( this.popupInput && this.allowEditTags ) {\n\t\tthis.popupInput.setValue( item.getData() );\n\t\tthis.removeItems( [ item ] );\n\n\t\tthis.popup.toggle( true );\n\t\tthis.popupInput.focus();\n\t} else {\n\t\t// Parent\n\t\tOO.ui.PopupTagMultiselectWidget.parent.prototype.onTagSelect.call( this, item );\n\t}\n};\n\n/**\n * Add a tag by the popup value.\n * Whatever is responsible for setting the value in the popup should call\n * this method to add a tag, or use the regular methods like #addTag or\n * #setValue directly.\n *\n * @param {string} data The value of item\n * @param {string} [label] The label of the tag. If not given, the data is used.\n */\nOO.ui.PopupTagMultiselectWidget.prototype.addTagByPopupValue = function ( data, label ) {\n\tthis.addTag( data, label );\n};\n","/**\n * MenuTagMultiselectWidget is a {@link OO.ui.TagMultiselectWidget OO.ui.TagMultiselectWidget} intended\n * to use a menu of selectable options.\n *\n * For more information about menus and options, please see the [OOjs UI documentation on MediaWiki][1].\n *\n *     @example\n *     // Example: A basic MenuTagMultiselectWidget.\n *     var widget = new OO.ui.MenuTagMultiselectWidget( {\n *         inputPosition: 'outline',\n *         options: [\n *            { data: 'option1', label: 'Option 1' },\n *            { data: 'option2', label: 'Option 2' },\n *            { data: 'option3', label: 'Option 3' },\n *         ],\n *         selected: [ 'option1', 'option2' ]\n *     } );\n *     $( 'body' ).append( widget.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options#Menu_selects_and_options\n *\n * @class\n * @extends OO.ui.TagMultiselectWidget\n *\n * @constructor\n * @param {Object} [config] Configuration object\n * @cfg {Object} [menu] Configuration object for the menu widget\n * @cfg {jQuery} [$overlay] An overlay for the menu.\n *  See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.\n * @cfg {Object[]} [options=[]] Array of menu options in the format `{ data: …, label: … }`\n */\nOO.ui.MenuTagMultiselectWidget = function OoUiMenuTagMultiselectWidget( config ) {\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.MenuTagMultiselectWidget.parent.call( this, config );\n\n\tthis.$overlay = config.$overlay || this.$element;\n\n\tthis.menu = this.createMenuWidget( $.extend( {\n\t\twidget: this,\n\t\tinput: this.hasInput ? this.input : null,\n\t\t$input: this.hasInput ? this.input.$input : null,\n\t\tfilterFromInput: !!this.hasInput,\n\t\t$autoCloseIgnore: this.hasInput ?\n\t\t\tthis.input.$element.add( this.$overlay ) : this.$overlay,\n\t\t$floatableContainer: this.hasInput && this.inputPosition === 'outline' ?\n\t\t\tthis.input.$element : this.$element,\n\t\t$overlay: this.$overlay,\n\t\tdisabled: this.isDisabled()\n\t}, config.menu ) );\n\tthis.addOptions( config.options || [] );\n\n\t// Events\n\tthis.menu.connect( this, {\n\t\tchoose: 'onMenuChoose',\n\t\ttoggle: 'onMenuToggle'\n\t} );\n\tif ( this.hasInput ) {\n\t\tthis.input.connect( this, { change: 'onInputChange' } );\n\t}\n\tthis.connect( this, { resize: 'onResize' } );\n\n\t// Initialization\n\tthis.$overlay\n\t\t.append( this.menu.$element );\n\tthis.$element\n\t\t.addClass( 'oo-ui-menuTagMultiselectWidget' );\n\t// TagMultiselectWidget already does this, but it doesn't work right because this.menu is not yet\n\t// set up while the parent constructor runs, and #getAllowedValues rejects everything.\n\tif ( config.selected ) {\n\t\tthis.setValue( config.selected );\n\t}\n};\n\n/* Initialization */\n\nOO.inheritClass( OO.ui.MenuTagMultiselectWidget, OO.ui.TagMultiselectWidget );\n\n/* Methods */\n\n/**\n * Respond to resize event\n */\nOO.ui.MenuTagMultiselectWidget.prototype.onResize = function () {\n\t// Reposition the menu\n\tthis.menu.position();\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MenuTagMultiselectWidget.prototype.onInputFocus = function () {\n\t// Parent method\n\tOO.ui.MenuTagMultiselectWidget.parent.prototype.onInputFocus.call( this );\n\n\tthis.menu.toggle( true );\n};\n\n/**\n * Respond to input change event\n */\nOO.ui.MenuTagMultiselectWidget.prototype.onInputChange = function () {\n\tthis.menu.toggle( true );\n};\n\n/**\n * Respond to menu choose event\n *\n * @param {OO.ui.OptionWidget} menuItem Chosen menu item\n */\nOO.ui.MenuTagMultiselectWidget.prototype.onMenuChoose = function ( menuItem ) {\n\t// Add tag\n\tthis.addTag( menuItem.getData(), menuItem.getLabel() );\n};\n\n/**\n * Respond to menu toggle event. Reset item highlights on hide.\n *\n * @param {boolean} isVisible The menu is visible\n */\nOO.ui.MenuTagMultiselectWidget.prototype.onMenuToggle = function ( isVisible ) {\n\tif ( !isVisible ) {\n\t\tthis.menu.selectItem( null );\n\t\tthis.menu.highlightItem( null );\n\t}\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MenuTagMultiselectWidget.prototype.onTagSelect = function ( tagItem ) {\n\tvar menuItem = this.menu.getItemFromData( tagItem.getData() );\n\t// Override the base behavior from TagMultiselectWidget; the base behavior\n\t// in TagMultiselectWidget is to remove the tag to edit it in the input,\n\t// but in our case, we want to utilize the menu selection behavior, and\n\t// definitely not remove the item.\n\n\t// Select the menu item\n\tthis.menu.selectItem( menuItem );\n\n\tthis.focus();\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MenuTagMultiselectWidget.prototype.addTagFromInput = function () {\n\tvar inputValue = this.input.getValue(),\n\t\tvalidated = false,\n\t\thighlightedItem = this.menu.getHighlightedItem(),\n\t\titem = this.menu.getItemFromData( inputValue );\n\n\t// Override the parent method so we add from the menu\n\t// rather than directly from the input\n\n\t// Look for a highlighted item first\n\tif ( highlightedItem ) {\n\t\tvalidated = this.addTag( highlightedItem.getData(), highlightedItem.getLabel() );\n\t} else if ( item ) {\n\t\t// Look for the element that fits the data\n\t\tvalidated = this.addTag( item.getData(), item.getLabel() );\n\t} else {\n\t\t// Otherwise, add the tag - the method will only add if the\n\t\t// tag is valid or if invalid tags are allowed\n\t\tvalidated = this.addTag( inputValue );\n\t}\n\n\tif ( validated ) {\n\t\tthis.clearInput();\n\t\tthis.focus();\n\t}\n};\n\n/**\n * Return the visible items in the menu. This is mainly used for when\n * the menu is filtering results.\n *\n * @return {OO.ui.MenuOptionWidget[]} Visible results\n */\nOO.ui.MenuTagMultiselectWidget.prototype.getMenuVisibleItems = function () {\n\treturn this.menu.getItems().filter( function ( menuItem ) {\n\t\treturn menuItem.isVisible();\n\t} );\n};\n\n/**\n * Create the menu for this widget. This is in a separate method so that\n * child classes can override this without polluting the constructor with\n * unnecessary extra objects that will be overidden.\n *\n * @param {Object} menuConfig Configuration options\n * @return {OO.ui.MenuSelectWidget} Menu widget\n */\nOO.ui.MenuTagMultiselectWidget.prototype.createMenuWidget = function ( menuConfig ) {\n\treturn new OO.ui.MenuSelectWidget( menuConfig );\n};\n\n/**\n * Add options to the menu\n *\n * @param {Object[]} menuOptions Object defining options\n */\nOO.ui.MenuTagMultiselectWidget.prototype.addOptions = function ( menuOptions ) {\n\tvar widget = this,\n\t\titems = menuOptions.map( function ( obj ) {\n\t\t\treturn widget.createMenuOptionWidget( obj.data, obj.label );\n\t\t} );\n\n\tthis.menu.addItems( items );\n};\n\n/**\n * Create a menu option widget.\n *\n * @param {string} data Item data\n * @param {string} [label] Item label\n * @return {OO.ui.OptionWidget} Option widget\n */\nOO.ui.MenuTagMultiselectWidget.prototype.createMenuOptionWidget = function ( data, label ) {\n\treturn new OO.ui.MenuOptionWidget( {\n\t\tdata: data,\n\t\tlabel: label || data\n\t} );\n};\n\n/**\n * Get the menu\n *\n * @return {OO.ui.MenuSelectWidget} Menu\n */\nOO.ui.MenuTagMultiselectWidget.prototype.getMenu = function () {\n\treturn this.menu;\n};\n\n/**\n * Get the allowed values list\n *\n * @return {string[]} Allowed data values\n */\nOO.ui.MenuTagMultiselectWidget.prototype.getAllowedValues = function () {\n\tvar menuDatas = [];\n\tif ( this.menu ) {\n\t\t// If the parent constructor is calling us, we're not ready yet, this.menu is not set up.\n\t\tmenuDatas = this.menu.getItems().map( function ( menuItem ) {\n\t\t\treturn menuItem.getData();\n\t\t} );\n\t}\n\treturn this.allowedValues.concat( menuDatas );\n};\n","/**\n * SelectFileWidgets allow for selecting files, using the HTML5 File API. These\n * widgets can be configured with {@link OO.ui.mixin.IconElement icons} and {@link\n * OO.ui.mixin.IndicatorElement indicators}.\n * Please see the [OOjs UI documentation on MediaWiki] [1] for more information and examples.\n *\n *     @example\n *     // Example of a file select widget\n *     var selectFile = new OO.ui.SelectFileWidget();\n *     $( 'body' ).append( selectFile.$element );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets\n *\n * @class\n * @extends OO.ui.Widget\n * @mixins OO.ui.mixin.IconElement\n * @mixins OO.ui.mixin.IndicatorElement\n * @mixins OO.ui.mixin.PendingElement\n * @mixins OO.ui.mixin.LabelElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {string[]|null} [accept=null] MIME types to accept. null accepts all types.\n * @cfg {string} [placeholder] Text to display when no file is selected.\n * @cfg {string} [notsupported] Text to display when file support is missing in the browser.\n * @cfg {boolean} [droppable=true] Whether to accept files by drag and drop.\n * @cfg {boolean} [showDropTarget=false] Whether to show a drop target. Requires droppable to be true.\n * @cfg {number} [thumbnailSizeLimit=20] File size limit in MiB above which to not try and show a\n *  preview (for performance)\n */\nOO.ui.SelectFileWidget = function OoUiSelectFileWidget( config ) {\n\tvar dragHandler;\n\n\t// Configuration initialization\n\tconfig = $.extend( {\n\t\taccept: null,\n\t\tplaceholder: OO.ui.msg( 'ooui-selectfile-placeholder' ),\n\t\tnotsupported: OO.ui.msg( 'ooui-selectfile-not-supported' ),\n\t\tdroppable: true,\n\t\tshowDropTarget: false,\n\t\tthumbnailSizeLimit: 20\n\t}, config );\n\n\t// Parent constructor\n\tOO.ui.SelectFileWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.IconElement.call( this, config );\n\tOO.ui.mixin.IndicatorElement.call( this, config );\n\tOO.ui.mixin.PendingElement.call( this, $.extend( {}, config, { $pending: this.$info } ) );\n\tOO.ui.mixin.LabelElement.call( this, config );\n\n\t// Properties\n\tthis.$info = $( '<span>' );\n\tthis.showDropTarget = config.showDropTarget;\n\tthis.thumbnailSizeLimit = config.thumbnailSizeLimit;\n\tthis.isSupported = this.constructor.static.isSupported();\n\tthis.currentFile = null;\n\tif ( Array.isArray( config.accept ) ) {\n\t\tthis.accept = config.accept;\n\t} else {\n\t\tthis.accept = null;\n\t}\n\tthis.placeholder = config.placeholder;\n\tthis.notsupported = config.notsupported;\n\tthis.onFileSelectedHandler = this.onFileSelected.bind( this );\n\n\tthis.selectButton = new OO.ui.ButtonWidget( {\n\t\tclasses: [ 'oo-ui-selectFileWidget-selectButton' ],\n\t\tlabel: OO.ui.msg( 'ooui-selectfile-button-select' ),\n\t\tdisabled: this.disabled || !this.isSupported\n\t} );\n\n\tthis.clearButton = new OO.ui.ButtonWidget( {\n\t\tclasses: [ 'oo-ui-selectFileWidget-clearButton' ],\n\t\tframed: false,\n\t\ticon: 'close',\n\t\tdisabled: this.disabled\n\t} );\n\n\t// Events\n\tthis.selectButton.$button.on( {\n\t\tkeypress: this.onKeyPress.bind( this )\n\t} );\n\tthis.clearButton.connect( this, {\n\t\tclick: 'onClearClick'\n\t} );\n\tif ( config.droppable ) {\n\t\tdragHandler = this.onDragEnterOrOver.bind( this );\n\t\tthis.$element.on( {\n\t\t\tdragenter: dragHandler,\n\t\t\tdragover: dragHandler,\n\t\t\tdragleave: this.onDragLeave.bind( this ),\n\t\t\tdrop: this.onDrop.bind( this )\n\t\t} );\n\t}\n\n\t// Initialization\n\tthis.addInput();\n\tthis.$label.addClass( 'oo-ui-selectFileWidget-label' );\n\tthis.$info\n\t\t.addClass( 'oo-ui-selectFileWidget-info' )\n\t\t.append( this.$icon, this.$label, this.clearButton.$element, this.$indicator );\n\n\tif ( config.droppable && config.showDropTarget ) {\n\t\tthis.selectButton.setIcon( 'upload' );\n\t\tthis.$thumbnail = $( '<div>' ).addClass( 'oo-ui-selectFileWidget-thumbnail' );\n\t\tthis.setPendingElement( this.$thumbnail );\n\t\tthis.$element\n\t\t\t.addClass( 'oo-ui-selectFileWidget-dropTarget oo-ui-selectFileWidget' )\n\t\t\t.on( {\n\t\t\t\tclick: this.onDropTargetClick.bind( this )\n\t\t\t} )\n\t\t\t.append(\n\t\t\t\tthis.$thumbnail,\n\t\t\t\tthis.$info,\n\t\t\t\tthis.selectButton.$element,\n\t\t\t\t$( '<span>' )\n\t\t\t\t\t.addClass( 'oo-ui-selectFileWidget-dropLabel' )\n\t\t\t\t\t.text( OO.ui.msg( 'ooui-selectfile-dragdrop-placeholder' ) )\n\t\t\t);\n\t} else {\n\t\tthis.$element\n\t\t\t.addClass( 'oo-ui-selectFileWidget' )\n\t\t\t.append( this.$info, this.selectButton.$element );\n\t}\n\tthis.updateUI();\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.SelectFileWidget, OO.ui.Widget );\nOO.mixinClass( OO.ui.SelectFileWidget, OO.ui.mixin.IconElement );\nOO.mixinClass( OO.ui.SelectFileWidget, OO.ui.mixin.IndicatorElement );\nOO.mixinClass( OO.ui.SelectFileWidget, OO.ui.mixin.PendingElement );\nOO.mixinClass( OO.ui.SelectFileWidget, OO.ui.mixin.LabelElement );\n\n/* Static Properties */\n\n/**\n * Check if this widget is supported\n *\n * @static\n * @return {boolean}\n */\nOO.ui.SelectFileWidget.static.isSupported = function () {\n\tvar $input;\n\tif ( OO.ui.SelectFileWidget.static.isSupportedCache === null ) {\n\t\t$input = $( '<input>' ).attr( 'type', 'file' );\n\t\tOO.ui.SelectFileWidget.static.isSupportedCache = $input[ 0 ].files !== undefined;\n\t}\n\treturn OO.ui.SelectFileWidget.static.isSupportedCache;\n};\n\nOO.ui.SelectFileWidget.static.isSupportedCache = null;\n\n/* Events */\n\n/**\n * @event change\n *\n * A change event is emitted when the on/off state of the toggle changes.\n *\n * @param {File|null} value New value\n */\n\n/* Methods */\n\n/**\n * Get the current value of the field\n *\n * @return {File|null}\n */\nOO.ui.SelectFileWidget.prototype.getValue = function () {\n\treturn this.currentFile;\n};\n\n/**\n * Set the current value of the field\n *\n * @param {File|null} file File to select\n */\nOO.ui.SelectFileWidget.prototype.setValue = function ( file ) {\n\tif ( this.currentFile !== file ) {\n\t\tthis.currentFile = file;\n\t\tthis.updateUI();\n\t\tthis.emit( 'change', this.currentFile );\n\t}\n};\n\n/**\n * Focus the widget.\n *\n * Focusses the select file button.\n *\n * @chainable\n */\nOO.ui.SelectFileWidget.prototype.focus = function () {\n\tthis.selectButton.focus();\n\treturn this;\n};\n\n/**\n * Blur the widget.\n *\n * @chainable\n */\nOO.ui.SelectFileWidget.prototype.blur = function () {\n\tthis.selectButton.blur();\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.SelectFileWidget.prototype.simulateLabelClick = function () {\n\tthis.focus();\n};\n\n/**\n * Update the user interface when a file is selected or unselected\n *\n * @protected\n */\nOO.ui.SelectFileWidget.prototype.updateUI = function () {\n\tvar $label;\n\tif ( !this.isSupported ) {\n\t\tthis.$element.addClass( 'oo-ui-selectFileWidget-notsupported' );\n\t\tthis.$element.removeClass( 'oo-ui-selectFileWidget-empty' );\n\t\tthis.setLabel( this.notsupported );\n\t} else {\n\t\tthis.$element.addClass( 'oo-ui-selectFileWidget-supported' );\n\t\tif ( this.currentFile ) {\n\t\t\tthis.$element.removeClass( 'oo-ui-selectFileWidget-empty' );\n\t\t\t$label = $( [] );\n\t\t\t$label = $label.add(\n\t\t\t\t$( '<span>' )\n\t\t\t\t\t.addClass( 'oo-ui-selectFileWidget-fileName' )\n\t\t\t\t\t.text( this.currentFile.name )\n\t\t\t);\n\t\t\tthis.setLabel( $label );\n\n\t\t\tif ( this.showDropTarget ) {\n\t\t\t\tthis.pushPending();\n\t\t\t\tthis.loadAndGetImageUrl().done( function ( url ) {\n\t\t\t\t\tthis.$thumbnail.css( 'background-image', 'url( ' + url + ' )' );\n\t\t\t\t}.bind( this ) ).fail( function () {\n\t\t\t\t\tthis.$thumbnail.append(\n\t\t\t\t\t\tnew OO.ui.IconWidget( {\n\t\t\t\t\t\t\ticon: 'attachment',\n\t\t\t\t\t\t\tclasses: [ 'oo-ui-selectFileWidget-noThumbnail-icon' ]\n\t\t\t\t\t\t} ).$element\n\t\t\t\t\t);\n\t\t\t\t}.bind( this ) ).always( function () {\n\t\t\t\t\tthis.popPending();\n\t\t\t\t}.bind( this ) );\n\t\t\t\tthis.$element.off( 'click' );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( this.showDropTarget ) {\n\t\t\t\tthis.$element.off( 'click' );\n\t\t\t\tthis.$element.on( {\n\t\t\t\t\tclick: this.onDropTargetClick.bind( this )\n\t\t\t\t} );\n\t\t\t\tthis.$thumbnail\n\t\t\t\t\t.empty()\n\t\t\t\t\t.css( 'background-image', '' );\n\t\t\t}\n\t\t\tthis.$element.addClass( 'oo-ui-selectFileWidget-empty' );\n\t\t\tthis.setLabel( this.placeholder );\n\t\t}\n\t}\n};\n\n/**\n * If the selected file is an image, get its URL and load it.\n *\n * @return {jQuery.Promise} Promise resolves with the image URL after it has loaded\n */\nOO.ui.SelectFileWidget.prototype.loadAndGetImageUrl = function () {\n\tvar deferred = $.Deferred(),\n\t\tfile = this.currentFile,\n\t\treader = new FileReader();\n\n\tif (\n\t\tfile &&\n\t\t( OO.getProp( file, 'type' ) || '' ).indexOf( 'image/' ) === 0 &&\n\t\tfile.size < this.thumbnailSizeLimit * 1024 * 1024\n\t) {\n\t\treader.onload = function ( event ) {\n\t\t\tvar img = document.createElement( 'img' );\n\t\t\timg.addEventListener( 'load', function () {\n\t\t\t\tif (\n\t\t\t\t\timg.naturalWidth === 0 ||\n\t\t\t\t\timg.naturalHeight === 0 ||\n\t\t\t\t\timg.complete === false\n\t\t\t\t) {\n\t\t\t\t\tdeferred.reject();\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.resolve( event.target.result );\n\t\t\t\t}\n\t\t\t} );\n\t\t\timg.src = event.target.result;\n\t\t};\n\t\treader.readAsDataURL( file );\n\t} else {\n\t\tdeferred.reject();\n\t}\n\n\treturn deferred.promise();\n};\n\n/**\n * Add the input to the widget\n *\n * @private\n */\nOO.ui.SelectFileWidget.prototype.addInput = function () {\n\tif ( this.$input ) {\n\t\tthis.$input.remove();\n\t}\n\n\tif ( !this.isSupported ) {\n\t\tthis.$input = null;\n\t\treturn;\n\t}\n\n\tthis.$input = $( '<input>' ).attr( 'type', 'file' );\n\tthis.$input.on( 'change', this.onFileSelectedHandler );\n\tthis.$input.on( 'click', function ( e ) {\n\t\t// Prevents dropTarget to get clicked which calls\n\t\t// a click on this input\n\t\te.stopPropagation();\n\t} );\n\tthis.$input.attr( {\n\t\ttabindex: -1\n\t} );\n\tif ( this.accept ) {\n\t\tthis.$input.attr( 'accept', this.accept.join( ', ' ) );\n\t}\n\tthis.selectButton.$button.append( this.$input );\n};\n\n/**\n * Determine if we should accept this file\n *\n * @private\n * @param {string} mimeType File MIME type\n * @return {boolean}\n */\nOO.ui.SelectFileWidget.prototype.isAllowedType = function ( mimeType ) {\n\tvar i, mimeTest;\n\n\tif ( !this.accept || !mimeType ) {\n\t\treturn true;\n\t}\n\n\tfor ( i = 0; i < this.accept.length; i++ ) {\n\t\tmimeTest = this.accept[ i ];\n\t\tif ( mimeTest === mimeType ) {\n\t\t\treturn true;\n\t\t} else if ( mimeTest.substr( -2 ) === '/*' ) {\n\t\t\tmimeTest = mimeTest.substr( 0, mimeTest.length - 1 );\n\t\t\tif ( mimeType.substr( 0, mimeTest.length ) === mimeTest ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n};\n\n/**\n * Handle file selection from the input\n *\n * @private\n * @param {jQuery.Event} e\n */\nOO.ui.SelectFileWidget.prototype.onFileSelected = function ( e ) {\n\tvar file = OO.getProp( e.target, 'files', 0 ) || null;\n\n\tif ( file && !this.isAllowedType( file.type ) ) {\n\t\tfile = null;\n\t}\n\n\tthis.setValue( file );\n\tthis.addInput();\n};\n\n/**\n * Handle clear button click events.\n *\n * @private\n */\nOO.ui.SelectFileWidget.prototype.onClearClick = function () {\n\tthis.setValue( null );\n\treturn false;\n};\n\n/**\n * Handle key press events.\n *\n * @private\n * @param {jQuery.Event} e Key press event\n */\nOO.ui.SelectFileWidget.prototype.onKeyPress = function ( e ) {\n\tif ( this.isSupported && !this.isDisabled() && this.$input &&\n\t\t( e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER )\n\t) {\n\t\tthis.$input.click();\n\t\treturn false;\n\t}\n};\n\n/**\n * Handle drop target click events.\n *\n * @private\n * @param {jQuery.Event} e Key press event\n */\nOO.ui.SelectFileWidget.prototype.onDropTargetClick = function () {\n\tif ( this.isSupported && !this.isDisabled() && this.$input ) {\n\t\tthis.$input.click();\n\t\treturn false;\n\t}\n};\n\n/**\n * Handle drag enter and over events\n *\n * @private\n * @param {jQuery.Event} e Drag event\n */\nOO.ui.SelectFileWidget.prototype.onDragEnterOrOver = function ( e ) {\n\tvar itemOrFile,\n\t\tdroppableFile = false,\n\t\tdt = e.originalEvent.dataTransfer;\n\n\te.preventDefault();\n\te.stopPropagation();\n\n\tif ( this.isDisabled() || !this.isSupported ) {\n\t\tthis.$element.removeClass( 'oo-ui-selectFileWidget-canDrop' );\n\t\tdt.dropEffect = 'none';\n\t\treturn false;\n\t}\n\n\t// DataTransferItem and File both have a type property, but in Chrome files\n\t// have no information at this point.\n\titemOrFile = OO.getProp( dt, 'items', 0 ) || OO.getProp( dt, 'files', 0 );\n\tif ( itemOrFile ) {\n\t\tif ( this.isAllowedType( itemOrFile.type ) ) {\n\t\t\tdroppableFile = true;\n\t\t}\n\t// dt.types is Array-like, but not an Array\n\t} else if ( Array.prototype.indexOf.call( OO.getProp( dt, 'types' ) || [], 'Files' ) !== -1 ) {\n\t\t// File information is not available at this point for security so just assume\n\t\t// it is acceptable for now.\n\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=640534\n\t\tdroppableFile = true;\n\t}\n\n\tthis.$element.toggleClass( 'oo-ui-selectFileWidget-canDrop', droppableFile );\n\tif ( !droppableFile ) {\n\t\tdt.dropEffect = 'none';\n\t}\n\n\treturn false;\n};\n\n/**\n * Handle drag leave events\n *\n * @private\n * @param {jQuery.Event} e Drag event\n */\nOO.ui.SelectFileWidget.prototype.onDragLeave = function () {\n\tthis.$element.removeClass( 'oo-ui-selectFileWidget-canDrop' );\n};\n\n/**\n * Handle drop events\n *\n * @private\n * @param {jQuery.Event} e Drop event\n */\nOO.ui.SelectFileWidget.prototype.onDrop = function ( e ) {\n\tvar file = null,\n\t\tdt = e.originalEvent.dataTransfer;\n\n\te.preventDefault();\n\te.stopPropagation();\n\tthis.$element.removeClass( 'oo-ui-selectFileWidget-canDrop' );\n\n\tif ( this.isDisabled() || !this.isSupported ) {\n\t\treturn false;\n\t}\n\n\tfile = OO.getProp( dt, 'files', 0 );\n\tif ( file && !this.isAllowedType( file.type ) ) {\n\t\tfile = null;\n\t}\n\tif ( file ) {\n\t\tthis.setValue( file );\n\t}\n\n\treturn false;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.SelectFileWidget.prototype.setDisabled = function ( disabled ) {\n\tOO.ui.SelectFileWidget.parent.prototype.setDisabled.call( this, disabled );\n\tif ( this.selectButton ) {\n\t\tthis.selectButton.setDisabled( disabled );\n\t}\n\tif ( this.clearButton ) {\n\t\tthis.clearButton.setDisabled( disabled );\n\t}\n\treturn this;\n};\n","/**\n * SearchWidgets combine a {@link OO.ui.TextInputWidget text input field}, where users can type a search query,\n * and a menu of search results, which is displayed beneath the query\n * field. Unlike {@link OO.ui.mixin.LookupElement lookup menus}, search result menus are always visible to the user.\n * Users can choose an item from the menu or type a query into the text field to search for a matching result item.\n * In general, search widgets are used inside a separate {@link OO.ui.Dialog dialog} window.\n *\n * Each time the query is changed, the search result menu is cleared and repopulated. Please see\n * the [OOjs UI demos][1] for an example.\n *\n * [1]: https://tools.wmflabs.org/oojs-ui/oojs-ui/demos/#dialogs-mediawiki-vector-ltr\n *\n * @class\n * @extends OO.ui.Widget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {string|jQuery} [placeholder] Placeholder text for query input\n * @cfg {string} [value] Initial query value\n */\nOO.ui.SearchWidget = function OoUiSearchWidget( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.SearchWidget.parent.call( this, config );\n\n\t// Properties\n\tthis.query = new OO.ui.TextInputWidget( {\n\t\ticon: 'search',\n\t\tplaceholder: config.placeholder,\n\t\tvalue: config.value\n\t} );\n\tthis.results = new OO.ui.SelectWidget();\n\tthis.$query = $( '<div>' );\n\tthis.$results = $( '<div>' );\n\n\t// Events\n\tthis.query.connect( this, {\n\t\tchange: 'onQueryChange',\n\t\tenter: 'onQueryEnter'\n\t} );\n\tthis.query.$input.on( 'keydown', this.onQueryKeydown.bind( this ) );\n\n\t// Initialization\n\tthis.$query\n\t\t.addClass( 'oo-ui-searchWidget-query' )\n\t\t.append( this.query.$element );\n\tthis.$results\n\t\t.addClass( 'oo-ui-searchWidget-results' )\n\t\t.append( this.results.$element );\n\tthis.$element\n\t\t.addClass( 'oo-ui-searchWidget' )\n\t\t.append( this.$results, this.$query );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.SearchWidget, OO.ui.Widget );\n\n/* Methods */\n\n/**\n * Handle query key down events.\n *\n * @private\n * @param {jQuery.Event} e Key down event\n */\nOO.ui.SearchWidget.prototype.onQueryKeydown = function ( e ) {\n\tvar highlightedItem, nextItem,\n\t\tdir = e.which === OO.ui.Keys.DOWN ? 1 : ( e.which === OO.ui.Keys.UP ? -1 : 0 );\n\n\tif ( dir ) {\n\t\thighlightedItem = this.results.getHighlightedItem();\n\t\tif ( !highlightedItem ) {\n\t\t\thighlightedItem = this.results.getSelectedItem();\n\t\t}\n\t\tnextItem = this.results.getRelativeSelectableItem( highlightedItem, dir );\n\t\tthis.results.highlightItem( nextItem );\n\t\tnextItem.scrollElementIntoView();\n\t}\n};\n\n/**\n * Handle select widget select events.\n *\n * Clears existing results. Subclasses should repopulate items according to new query.\n *\n * @private\n * @param {string} value New value\n */\nOO.ui.SearchWidget.prototype.onQueryChange = function () {\n\t// Reset\n\tthis.results.clearItems();\n};\n\n/**\n * Handle select widget enter key events.\n *\n * Chooses highlighted item.\n *\n * @private\n * @param {string} value New value\n */\nOO.ui.SearchWidget.prototype.onQueryEnter = function () {\n\tvar highlightedItem = this.results.getHighlightedItem();\n\tif ( highlightedItem ) {\n\t\tthis.results.chooseItem( highlightedItem );\n\t}\n};\n\n/**\n * Get the query input.\n *\n * @return {OO.ui.TextInputWidget} Query input\n */\nOO.ui.SearchWidget.prototype.getQuery = function () {\n\treturn this.query;\n};\n\n/**\n * Get the search results menu.\n *\n * @return {OO.ui.SelectWidget} Menu of search results\n */\nOO.ui.SearchWidget.prototype.getResults = function () {\n\treturn this.results;\n};\n","/**\n * NumberInputWidgets combine a {@link OO.ui.TextInputWidget text input} (where a value\n * can be entered manually) and two {@link OO.ui.ButtonWidget button widgets}\n * (to adjust the value in increments) to allow the user to enter a number.\n *\n *     @example\n *     // Example: A NumberInputWidget.\n *     var numberInput = new OO.ui.NumberInputWidget( {\n *         label: 'NumberInputWidget',\n *         input: { value: 5 },\n *         min: 1,\n *         max: 10\n *     } );\n *     $( 'body' ).append( numberInput.$element );\n *\n * @class\n * @extends OO.ui.TextInputWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {Object} [minusButton] Configuration options to pass to the {@link OO.ui.ButtonWidget decrementing button widget}.\n * @cfg {Object} [plusButton] Configuration options to pass to the {@link OO.ui.ButtonWidget incrementing button widget}.\n * @cfg {boolean} [allowInteger=false] Whether the field accepts only integer values.\n * @cfg {number} [min=-Infinity] Minimum allowed value\n * @cfg {number} [max=Infinity] Maximum allowed value\n * @cfg {number} [step=1] Delta when using the buttons or up/down arrow keys\n * @cfg {number|null} [pageStep] Delta when using the page-up/page-down keys. Defaults to 10 times #step.\n * @cfg {boolean} [showButtons=true] Whether to show the plus and minus buttons.\n */\nOO.ui.NumberInputWidget = function OoUiNumberInputWidget( config ) {\n\tvar $field = $( '<div>' )\n\t\t.addClass( 'oo-ui-numberInputWidget-field' );\n\n\t// Configuration initialization\n\tconfig = $.extend( {\n\t\tallowInteger: false,\n\t\tmin: -Infinity,\n\t\tmax: Infinity,\n\t\tstep: 1,\n\t\tpageStep: null,\n\t\tshowButtons: true\n\t}, config );\n\n\t// For backward compatibility\n\t$.extend( config, config.input );\n\tthis.input = this;\n\n\t// Parent constructor\n\tOO.ui.NumberInputWidget.parent.call( this, $.extend( config, {\n\t\ttype: 'number'\n\t} ) );\n\n\tif ( config.showButtons ) {\n\t\tthis.minusButton = new OO.ui.ButtonWidget( $.extend(\n\t\t\t{\n\t\t\t\tdisabled: this.isDisabled(),\n\t\t\t\ttabIndex: -1,\n\t\t\t\tclasses: [ 'oo-ui-numberInputWidget-minusButton' ],\n\t\t\t\ticon: 'subtract'\n\t\t\t},\n\t\t\tconfig.minusButton\n\t\t) );\n\t\tthis.plusButton = new OO.ui.ButtonWidget( $.extend(\n\t\t\t{\n\t\t\t\tdisabled: this.isDisabled(),\n\t\t\t\ttabIndex: -1,\n\t\t\t\tclasses: [ 'oo-ui-numberInputWidget-plusButton' ],\n\t\t\t\ticon: 'add'\n\t\t\t},\n\t\t\tconfig.plusButton\n\t\t) );\n\t}\n\n\t// Events\n\tthis.$input.on( {\n\t\tkeydown: this.onKeyDown.bind( this ),\n\t\t'wheel mousewheel DOMMouseScroll': this.onWheel.bind( this )\n\t} );\n\tif ( config.showButtons ) {\n\t\tthis.plusButton.connect( this, {\n\t\t\tclick: [ 'onButtonClick', +1 ]\n\t\t} );\n\t\tthis.minusButton.connect( this, {\n\t\t\tclick: [ 'onButtonClick', -1 ]\n\t\t} );\n\t}\n\n\t// Build the field\n\t$field.append( this.$input );\n\tif ( config.showButtons ) {\n\t\t$field\n\t\t\t.prepend( this.minusButton.$element )\n\t\t\t.append( this.plusButton.$element );\n\t}\n\n\t// Initialization\n\tthis.setAllowInteger( config.allowInteger || config.isInteger );\n\tthis.setRange( config.min, config.max );\n\tthis.setStep( config.step, config.pageStep );\n\t// Set the validation method after we set allowInteger and range\n\t// so that it doesn't immediately call setValidityFlag\n\tthis.setValidation( this.validateNumber.bind( this ) );\n\n\tthis.$element\n\t\t.addClass( 'oo-ui-numberInputWidget' )\n\t\t.toggleClass( 'oo-ui-numberInputWidget-buttoned', config.showButtons )\n\t\t.append( $field );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.NumberInputWidget, OO.ui.TextInputWidget );\n\n/* Methods */\n\n/**\n * Set whether only integers are allowed\n *\n * @param {boolean} flag\n */\nOO.ui.NumberInputWidget.prototype.setAllowInteger = function ( flag ) {\n\tthis.allowInteger = !!flag;\n\tthis.setValidityFlag();\n};\n// Backward compatibility\nOO.ui.NumberInputWidget.prototype.setIsInteger = OO.ui.NumberInputWidget.prototype.setAllowInteger;\n\n/**\n * Get whether only integers are allowed\n *\n * @return {boolean} Flag value\n */\nOO.ui.NumberInputWidget.prototype.getAllowInteger = function () {\n\treturn this.allowInteger;\n};\n// Backward compatibility\nOO.ui.NumberInputWidget.prototype.getIsInteger = OO.ui.NumberInputWidget.prototype.getAllowInteger;\n\n/**\n * Set the range of allowed values\n *\n * @param {number} min Minimum allowed value\n * @param {number} max Maximum allowed value\n */\nOO.ui.NumberInputWidget.prototype.setRange = function ( min, max ) {\n\tif ( min > max ) {\n\t\tthrow new Error( 'Minimum (' + min + ') must not be greater than maximum (' + max + ')' );\n\t}\n\tthis.min = min;\n\tthis.max = max;\n\tthis.setValidityFlag();\n};\n\n/**\n * Get the current range\n *\n * @return {number[]} Minimum and maximum values\n */\nOO.ui.NumberInputWidget.prototype.getRange = function () {\n\treturn [ this.min, this.max ];\n};\n\n/**\n * Set the stepping deltas\n *\n * @param {number} step Normal step\n * @param {number|null} pageStep Page step. If null, 10 * step will be used.\n */\nOO.ui.NumberInputWidget.prototype.setStep = function ( step, pageStep ) {\n\tif ( step <= 0 ) {\n\t\tthrow new Error( 'Step value must be positive' );\n\t}\n\tif ( pageStep === null ) {\n\t\tpageStep = step * 10;\n\t} else if ( pageStep <= 0 ) {\n\t\tthrow new Error( 'Page step value must be positive' );\n\t}\n\tthis.step = step;\n\tthis.pageStep = pageStep;\n};\n\n/**\n * Get the current stepping values\n *\n * @return {number[]} Step and page step\n */\nOO.ui.NumberInputWidget.prototype.getStep = function () {\n\treturn [ this.step, this.pageStep ];\n};\n\n/**\n * Get the current value of the widget as a number\n *\n * @return {number} May be NaN, or an invalid number\n */\nOO.ui.NumberInputWidget.prototype.getNumericValue = function () {\n\treturn +this.getValue();\n};\n\n/**\n * Adjust the value of the widget\n *\n * @param {number} delta Adjustment amount\n */\nOO.ui.NumberInputWidget.prototype.adjustValue = function ( delta ) {\n\tvar n, v = this.getNumericValue();\n\n\tdelta = +delta;\n\tif ( isNaN( delta ) || !isFinite( delta ) ) {\n\t\tthrow new Error( 'Delta must be a finite number' );\n\t}\n\n\tif ( isNaN( v ) ) {\n\t\tn = 0;\n\t} else {\n\t\tn = v + delta;\n\t\tn = Math.max( Math.min( n, this.max ), this.min );\n\t\tif ( this.allowInteger ) {\n\t\t\tn = Math.round( n );\n\t\t}\n\t}\n\n\tif ( n !== v ) {\n\t\tthis.setValue( n );\n\t}\n};\n/**\n * Validate input\n *\n * @private\n * @param {string} value Field value\n * @return {boolean}\n */\nOO.ui.NumberInputWidget.prototype.validateNumber = function ( value ) {\n\tvar n = +value;\n\tif ( value === '' ) {\n\t\treturn !this.isRequired();\n\t}\n\n\tif ( isNaN( n ) || !isFinite( n ) ) {\n\t\treturn false;\n\t}\n\n\tif ( this.allowInteger && Math.floor( n ) !== n ) {\n\t\treturn false;\n\t}\n\n\tif ( n < this.min || n > this.max ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n\n/**\n * Handle mouse click events.\n *\n * @private\n * @param {number} dir +1 or -1\n */\nOO.ui.NumberInputWidget.prototype.onButtonClick = function ( dir ) {\n\tthis.adjustValue( dir * this.step );\n};\n\n/**\n * Handle mouse wheel events.\n *\n * @private\n * @param {jQuery.Event} event\n */\nOO.ui.NumberInputWidget.prototype.onWheel = function ( event ) {\n\tvar delta = 0;\n\n\tif ( !this.isDisabled() && this.$input.is( ':focus' ) ) {\n\t\t// Standard 'wheel' event\n\t\tif ( event.originalEvent.deltaMode !== undefined ) {\n\t\t\tthis.sawWheelEvent = true;\n\t\t}\n\t\tif ( event.originalEvent.deltaY ) {\n\t\t\tdelta = -event.originalEvent.deltaY;\n\t\t} else if ( event.originalEvent.deltaX ) {\n\t\t\tdelta = event.originalEvent.deltaX;\n\t\t}\n\n\t\t// Non-standard events\n\t\tif ( !this.sawWheelEvent ) {\n\t\t\tif ( event.originalEvent.wheelDeltaX ) {\n\t\t\t\tdelta = -event.originalEvent.wheelDeltaX;\n\t\t\t} else if ( event.originalEvent.wheelDeltaY ) {\n\t\t\t\tdelta = event.originalEvent.wheelDeltaY;\n\t\t\t} else if ( event.originalEvent.wheelDelta ) {\n\t\t\t\tdelta = event.originalEvent.wheelDelta;\n\t\t\t} else if ( event.originalEvent.detail ) {\n\t\t\t\tdelta = -event.originalEvent.detail;\n\t\t\t}\n\t\t}\n\n\t\tif ( delta ) {\n\t\t\tdelta = delta < 0 ? -1 : 1;\n\t\t\tthis.adjustValue( delta * this.step );\n\t\t}\n\n\t\treturn false;\n\t}\n};\n\n/**\n * Handle key down events.\n *\n * @private\n * @param {jQuery.Event} e Key down event\n */\nOO.ui.NumberInputWidget.prototype.onKeyDown = function ( e ) {\n\tif ( !this.isDisabled() ) {\n\t\tswitch ( e.which ) {\n\t\t\tcase OO.ui.Keys.UP:\n\t\t\t\tthis.adjustValue( this.step );\n\t\t\t\treturn false;\n\t\t\tcase OO.ui.Keys.DOWN:\n\t\t\t\tthis.adjustValue( -this.step );\n\t\t\t\treturn false;\n\t\t\tcase OO.ui.Keys.PAGEUP:\n\t\t\t\tthis.adjustValue( this.pageStep );\n\t\t\t\treturn false;\n\t\t\tcase OO.ui.Keys.PAGEDOWN:\n\t\t\t\tthis.adjustValue( -this.pageStep );\n\t\t\t\treturn false;\n\t\t}\n\t}\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.NumberInputWidget.prototype.setDisabled = function ( disabled ) {\n\t// Parent method\n\tOO.ui.NumberInputWidget.parent.prototype.setDisabled.call( this, disabled );\n\n\tif ( this.minusButton ) {\n\t\tthis.minusButton.setDisabled( this.isDisabled() );\n\t}\n\tif ( this.plusButton ) {\n\t\tthis.plusButton.setDisabled( this.isDisabled() );\n\t}\n\n\treturn this;\n};\n","}( OO ) );\n"]}
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/oojs-ui-wikimediaui.js b/resources/lib/oojs-ui/oojs-ui-wikimediaui.js
new file mode 100644 (file)
index 0000000..9a5ad13
--- /dev/null
@@ -0,0 +1,91 @@
+/*!
+ * OOjs UI v0.22.1
+ * https://www.mediawiki.org/wiki/OOjs_UI
+ *
+ * Copyright 2011–2017 OOjs UI Team and other contributors.
+ * Released under the MIT license
+ * http://oojs.mit-license.org
+ *
+ * Date: 2017-05-31T19:07:36Z
+ */
+( function ( OO ) {
+
+'use strict';
+
+/**
+ * @class
+ * @extends OO.ui.Theme
+ *
+ * @constructor
+ */
+OO.ui.WikimediaUITheme = function OoUiWikimediaUITheme() {
+       // Parent constructor
+       OO.ui.WikimediaUITheme.parent.call( this );
+};
+
+/* Setup */
+
+OO.inheritClass( OO.ui.WikimediaUITheme, OO.ui.Theme );
+
+/* Methods */
+
+/**
+ * @inheritdoc
+ */
+OO.ui.WikimediaUITheme.prototype.getElementClasses = function ( element ) {
+       // Parent method
+       var variant, isFramed, isActive,
+               variants = {
+                       warning: false,
+                       invert: false,
+                       progressive: false,
+                       constructive: false,
+                       destructive: false
+               },
+               // Parent method
+               classes = OO.ui.WikimediaUITheme.parent.prototype.getElementClasses.call( this, element );
+
+       if ( element.supports( [ 'hasFlag' ] ) ) {
+               isFramed = element.supports( [ 'isFramed' ] ) && element.isFramed();
+               isActive = element.supports( [ 'isActive' ] ) && element.isActive();
+               if (
+                       // Button with a dark background
+                       isFramed && ( isActive || element.isDisabled() || element.hasFlag( 'primary' ) ) ||
+                       // Toolbar with a dark background
+                       OO.ui.ToolGroup && element instanceof OO.ui.ToolGroup && ( isActive || element.hasFlag( 'primary' ) )
+               ) {
+                       // … use white icon / indicator, regardless of other flags
+                       variants.invert = true;
+               } else if ( !isFramed && element.isDisabled() ) {
+                       // Frameless disabled button, always use black icon / indicator regardless of other flags
+                       variants.invert = false;
+               } else if ( !element.isDisabled() ) {
+                       // Any other kind of button, use the right colored icon / indicator if available
+                       variants.progressive = element.hasFlag( 'progressive' );
+                       variants.constructive = element.hasFlag( 'constructive' );
+                       variants.destructive = element.hasFlag( 'destructive' );
+                       variants.warning = element.hasFlag( 'warning' );
+               }
+       }
+
+       for ( variant in variants ) {
+               classes[ variants[ variant ] ? 'on' : 'off' ].push( 'oo-ui-image-' + variant );
+       }
+
+       return classes;
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.WikimediaUITheme.prototype.getDialogTransitionDuration = function () {
+       return 250;
+};
+
+/* Instantiation */
+
+OO.ui.theme = new OO.ui.WikimediaUITheme();
+
+}( OO ) );
+
+//# sourceMappingURL=oojs-ui-wikimediaui.js.map
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/oojs-ui-wikimediaui.js.map b/resources/lib/oojs-ui/oojs-ui-wikimediaui.js.map
new file mode 100644 (file)
index 0000000..a27b8e7
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/intro.js.txt","../src/themes/wikimediaui/WikimediaUITheme.js","../src/outro.js.txt"],"names":[],"mappings":"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","file":"oojs-ui-wikimediaui.js","sourcesContent":["( function ( OO ) {\n\n'use strict';\n","/**\n * @class\n * @extends OO.ui.Theme\n *\n * @constructor\n */\nOO.ui.WikimediaUITheme = function OoUiWikimediaUITheme() {\n\t// Parent constructor\n\tOO.ui.WikimediaUITheme.parent.call( this );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.WikimediaUITheme, OO.ui.Theme );\n\n/* Methods */\n\n/**\n * @inheritdoc\n */\nOO.ui.WikimediaUITheme.prototype.getElementClasses = function ( element ) {\n\t// Parent method\n\tvar variant, isFramed, isActive,\n\t\tvariants = {\n\t\t\twarning: false,\n\t\t\tinvert: false,\n\t\t\tprogressive: false,\n\t\t\tconstructive: false,\n\t\t\tdestructive: false\n\t\t},\n\t\t// Parent method\n\t\tclasses = OO.ui.WikimediaUITheme.parent.prototype.getElementClasses.call( this, element );\n\n\tif ( element.supports( [ 'hasFlag' ] ) ) {\n\t\tisFramed = element.supports( [ 'isFramed' ] ) && element.isFramed();\n\t\tisActive = element.supports( [ 'isActive' ] ) && element.isActive();\n\t\tif (\n\t\t\t// Button with a dark background\n\t\t\tisFramed && ( isActive || element.isDisabled() || element.hasFlag( 'primary' ) ) ||\n\t\t\t// Toolbar with a dark background\n\t\t\tOO.ui.ToolGroup && element instanceof OO.ui.ToolGroup && ( isActive || element.hasFlag( 'primary' ) )\n\t\t) {\n\t\t\t// … use white icon / indicator, regardless of other flags\n\t\t\tvariants.invert = true;\n\t\t} else if ( !isFramed && element.isDisabled() ) {\n\t\t\t// Frameless disabled button, always use black icon / indicator regardless of other flags\n\t\t\tvariants.invert = false;\n\t\t} else if ( !element.isDisabled() ) {\n\t\t\t// Any other kind of button, use the right colored icon / indicator if available\n\t\t\tvariants.progressive = element.hasFlag( 'progressive' );\n\t\t\tvariants.constructive = element.hasFlag( 'constructive' );\n\t\t\tvariants.destructive = element.hasFlag( 'destructive' );\n\t\t\tvariants.warning = element.hasFlag( 'warning' );\n\t\t}\n\t}\n\n\tfor ( variant in variants ) {\n\t\tclasses[ variants[ variant ] ? 'on' : 'off' ].push( 'oo-ui-image-' + variant );\n\t}\n\n\treturn classes;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.WikimediaUITheme.prototype.getDialogTransitionDuration = function () {\n\treturn 250;\n};\n\n/* Instantiation */\n\nOO.ui.theme = new OO.ui.WikimediaUITheme();\n","}( OO ) );\n"]}
\ No newline at end of file
index 013d52d..43cfd45 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.0
+ * OOjs UI v0.22.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-11T22:51:10Z
+ * Date: 2017-05-31T19:07:44Z
  */
 .oo-ui-actionWidget.oo-ui-pendingElement-pending {
   background-image: /* @embed */ url(themes/apex/images/textures/pending.gif);
@@ -17,8 +17,8 @@
 }
 .oo-ui-window-frame {
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
 }
 .oo-ui-window-content {
   position: absolute;
@@ -34,9 +34,9 @@
 .oo-ui-window-foot {
   -webkit-touch-callout: none;
   -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
 }
 .oo-ui-window-body {
   margin: 0;
@@ -56,8 +56,8 @@
   left: 0;
   right: 0;
   -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
 }
 .oo-ui-dialog-content > .oo-ui-window-head {
   overflow: hidden;
   border-bottom-width: 0;
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget {
-  height: 3.4em;
+  min-height: 3.4em;
   margin-right: 0;
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget:last-child {
   margin-right: 0;
 }
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-  text-align: center;
-  line-height: 3.4em;
-}
 .oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
   background-color: rgba(0, 0, 0, 0.05);
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
   background-color: rgba(0, 0, 0, 0.1);
 }
+.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonElement-button {
+  padding: 0;
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
+  text-align: center;
+  line-height: 3.4em;
+}
 .oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:hover {
   background-color: rgba(8, 126, 204, 0.05);
 }
   left: 0;
   right: 0;
   bottom: 0;
-  z-index: 2;
+  z-index: 4;
   overflow-x: hidden;
   overflow-y: auto;
 }
   background-color: rgba(255, 255, 255, 0.5);
   opacity: 0;
   -webkit-transition: opacity 250ms ease;
-     -moz-transition: opacity 250ms ease;
-          transition: opacity 250ms ease;
+  -moz-transition: opacity 250ms ease;
+  transition: opacity 250ms ease;
 }
 .oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
   background-color: #fff;
   opacity: 0;
   -webkit-transform: scale(0.5);
-     -moz-transform: scale(0.5);
-      -ms-transform: scale(0.5);
-          transform: scale(0.5);
+  -moz-transform: scale(0.5);
+  -ms-transform: scale(0.5);
+  transform: scale(0.5);
   -webkit-transition: all 250ms ease;
-     -moz-transition: all 250ms ease;
-          transition: all 250ms ease;
+  -moz-transition: all 250ms ease;
+  transition: all 250ms ease;
 }
 .oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
   opacity: 1;
 .oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
   opacity: 1;
   -webkit-transform: scale(1);
-     -moz-transform: scale(1);
-      -ms-transform: scale(1);
-          transform: scale(1);
+  -moz-transform: scale(1);
+  -ms-transform: scale(1);
+  transform: scale(1);
 }
 .oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
   top: 1em;
diff --git a/resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css
deleted file mode 100644 (file)
index 1cb55d6..0000000
+++ /dev/null
@@ -1,377 +0,0 @@
-/*!
- * OOjs UI v0.21.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2017 OOjs UI Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2017-04-11T22:51:10Z
- */
-.oo-ui-window {
-  background: transparent;
-}
-.oo-ui-window-frame {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.oo-ui-window-content {
-  position: absolute;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-}
-.oo-ui-window-content:focus {
-  outline: 0;
-}
-.oo-ui-window-head,
-.oo-ui-window-foot {
-  -webkit-touch-callout: none;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.oo-ui-window-body {
-  margin: 0;
-  padding: 0;
-  background: none;
-}
-.oo-ui-window-overlay {
-  position: absolute;
-  top: 0;
-  /* @noflip */
-  left: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-head,
-.oo-ui-dialog-content > .oo-ui-window-body,
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  position: absolute;
-  left: 0;
-  right: 0;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.oo-ui-dialog-content > .oo-ui-window-head {
-  overflow: hidden;
-  z-index: 1;
-  top: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-body {
-  overflow: auto;
-  z-index: 2;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  z-index: 3;
-  bottom: 0;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget {
-  position: relative;
-  text-align: center;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonElement-button {
-  display: block;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
-  position: relative;
-  top: auto;
-  bottom: auto;
-}
-.oo-ui-messageDialog-actions-horizontal {
-  display: table;
-  table-layout: fixed;
-  width: 100%;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  display: table-cell;
-  width: 1%;
-}
-.oo-ui-messageDialog-actions-vertical {
-  display: block;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  display: block;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-.oo-ui-messageDialog-content > .oo-ui-window-foot {
-  outline: 1px solid #a2a9b1;
-}
-.oo-ui-messageDialog-title,
-.oo-ui-messageDialog-message {
-  display: block;
-  text-align: center;
-}
-.oo-ui-messageDialog-title.oo-ui-labelElement,
-.oo-ui-messageDialog-message.oo-ui-labelElement {
-  padding-top: 0.5em;
-}
-.oo-ui-messageDialog-title {
-  font-size: 1.5em;
-  line-height: 1;
-  color: #000;
-}
-.oo-ui-messageDialog-message {
-  font-size: 1.1em;
-  line-height: 1.4;
-  color: #222;
-  text-align: left;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  border-right: 1px solid #a2a9b1;
-  margin: 0;
-}
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
-  border-right-width: 0;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  border-bottom: 1px solid #a2a9b1;
-  margin: 0;
-}
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
-  border-bottom-width: 0;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget {
-  min-height: 3.4375em;
-  margin-right: 0;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:last-child {
-  margin-right: 0;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonElement-button {
-  border-radius: 0;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-  line-height: 3.4375em;
-  text-align: center;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:hover,
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:active,
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label,
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label {
-  font-weight: bold;
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-.oo-ui-processDialog-location {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.oo-ui-processDialog-title {
-  display: inline;
-  padding: 0;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
-  white-space: nowrap;
-}
-.oo-ui-processDialog-actions-safe,
-.oo-ui-processDialog-actions-primary {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-processDialog-actions-safe {
-  left: 0;
-}
-.oo-ui-processDialog-actions-primary {
-  right: 0;
-}
-.oo-ui-processDialog-errors {
-  position: absolute;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  z-index: 2;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-.oo-ui-processDialog-content .oo-ui-window-head {
-  height: 3.4375em;
-}
-.oo-ui-processDialog-content .oo-ui-window-body {
-  top: 3.4375em;
-  outline: 1px solid #c8ccd1;
-}
-.oo-ui-processDialog-navigation {
-  position: relative;
-  height: 3.4375em;
-}
-.oo-ui-processDialog-location {
-  height: 3.4375em;
-  cursor: default;
-  text-align: center;
-}
-.oo-ui-processDialog-title {
-  font-weight: bold;
-  line-height: 3.4375em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed {
-  margin: 0.46875em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless .oo-ui-buttonElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-frameless .oo-ui-buttonElement-button {
-  padding: 0.75em 1em;
-  vertical-align: middle;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-frameless .oo-ui-labelElement-label {
-  line-height: 1.875em;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive:hover,
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive:active,
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label {
-  font-weight: bold;
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement {
-  margin-right: 0;
-}
-.oo-ui-processDialog > .oo-ui-window-frame {
-  min-height: 5em;
-}
-.oo-ui-processDialog-errors {
-  background-color: rgba(255, 255, 255, 0.9);
-  padding: 3em 3em 1.5em 3em;
-  text-align: center;
-}
-.oo-ui-processDialog-errors .oo-ui-buttonWidget {
-  margin: 2em 1em 2em 1em;
-}
-.oo-ui-processDialog-errors-title {
-  font-size: 1.5em;
-  color: #000;
-  margin-bottom: 2em;
-}
-.oo-ui-processDialog-error {
-  text-align: left;
-  margin: 1em;
-  padding: 1em;
-  border: 1px solid #d33;
-  background-color: #fff7f7;
-  border-radius: 2px;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  position: fixed;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-  z-index: 4;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-active {
-  width: auto;
-  height: auto;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  padding: 1em;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
-  position: absolute;
-  right: 0;
-  left: 0;
-  margin: auto;
-  overflow: hidden;
-  max-width: 100%;
-  max-height: 100%;
-}
-.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
-  width: 100%;
-  height: 100%;
-  top: 0;
-  bottom: 0;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  background-color: rgba(255, 255, 255, 0.5);
-  opacity: 0;
-  -webkit-transition: opacity 250ms;
-     -moz-transition: opacity 250ms;
-          transition: opacity 250ms;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
-  background-color: #fff;
-  opacity: 0;
-  -webkit-transform: scale(0.5);
-     -moz-transform: scale(0.5);
-      -ms-transform: scale(0.5);
-          transform: scale(0.5);
-  -webkit-transition: all 250ms;
-     -moz-transition: all 250ms;
-          transition: all 250ms;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
-  opacity: 1;
-}
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
-  opacity: 1;
-  -webkit-transform: scale(1);
-     -moz-transform: scale(1);
-      -ms-transform: scale(1);
-          transform: scale(1);
-}
-.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
-  top: 1em;
-  bottom: 1em;
-  max-height: 100%;
-  max-height: calc( 100% - 2em );
-  border: 1px solid #a2a9b1;
-  border-radius: 2px;
-  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25);
-}
diff --git a/resources/lib/oojs-ui/oojs-ui-windows-wikimediaui.css b/resources/lib/oojs-ui/oojs-ui-windows-wikimediaui.css
new file mode 100644 (file)
index 0000000..1c1557f
--- /dev/null
@@ -0,0 +1,411 @@
+/*!
+ * OOjs UI v0.22.1
+ * https://www.mediawiki.org/wiki/OOjs_UI
+ *
+ * Copyright 2011–2017 OOjs UI Team and other contributors.
+ * Released under the MIT license
+ * http://oojs.mit-license.org
+ *
+ * Date: 2017-05-31T19:07:44Z
+ */
+.oo-ui-window {
+  background: transparent;
+}
+.oo-ui-window-frame {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.oo-ui-window-content {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+}
+.oo-ui-window-content:focus {
+  outline: 0;
+}
+.oo-ui-window-head,
+.oo-ui-window-foot {
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+.oo-ui-window-body {
+  margin: 0;
+  padding: 0;
+  background: none;
+}
+.oo-ui-window-overlay {
+  position: absolute;
+  top: 0;
+  /* @noflip */
+  left: 0;
+}
+.oo-ui-dialog-content > .oo-ui-window-head,
+.oo-ui-dialog-content > .oo-ui-window-body,
+.oo-ui-dialog-content > .oo-ui-window-foot {
+  position: absolute;
+  left: 0;
+  right: 0;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.oo-ui-dialog-content > .oo-ui-window-head {
+  overflow: hidden;
+  z-index: 1;
+  top: 0;
+}
+.oo-ui-dialog-content > .oo-ui-window-body {
+  overflow: auto;
+  z-index: 2;
+  top: 0;
+  bottom: 0;
+}
+.oo-ui-dialog-content > .oo-ui-window-foot {
+  z-index: 3;
+  bottom: 0;
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget {
+  position: relative;
+  text-align: center;
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonElement-button {
+  display: block;
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labelElement-label {
+  position: relative;
+  top: auto;
+  bottom: auto;
+}
+.oo-ui-messageDialog-actions-horizontal {
+  display: table;
+  table-layout: fixed;
+  width: 100%;
+}
+.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
+  display: table-cell;
+  width: 1%;
+}
+.oo-ui-messageDialog-actions-vertical {
+  display: block;
+}
+.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+.oo-ui-messageDialog-content > .oo-ui-window-foot {
+  outline: 1px solid #a2a9b1;
+}
+.oo-ui-messageDialog-title,
+.oo-ui-messageDialog-message {
+  display: block;
+  text-align: center;
+}
+.oo-ui-messageDialog-title.oo-ui-labelElement,
+.oo-ui-messageDialog-message.oo-ui-labelElement {
+  padding-top: 0.5em;
+}
+.oo-ui-messageDialog-title {
+  font-size: 1.5em;
+  line-height: 1;
+  color: #000;
+}
+.oo-ui-messageDialog-message {
+  font-size: 1.1em;
+  line-height: 1.4;
+  color: #222;
+  text-align: left;
+}
+.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
+  border-right: 1px solid #a2a9b1;
+  margin: 0;
+}
+.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
+  border-right-width: 0;
+}
+.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
+  border-bottom: 1px solid #a2a9b1;
+  margin: 0;
+}
+.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
+  border-bottom-width: 0;
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget {
+  min-height: 3.4375em;
+  margin-right: 0;
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget:last-child {
+  margin-right: 0;
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget:first-child {
+  margin-left: 0;
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonElement-button {
+  border: 0;
+  border-radius: 0;
+  padding: 0;
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
+  line-height: 3.4375em;
+  text-align: center;
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-widget-enabled .oo-ui-buttonElement-button:hover {
+  background-color: #f8f9fa;
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-widget-enabled .oo-ui-buttonElement-button:active {
+  background-color: #c8ccd1;
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-widget-enabled .oo-ui-buttonElement-button:focus {
+  box-shadow: inset 0 0 0 1px #36c, 0 0 0 1px #36c;
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive .oo-ui-buttonElement-button:hover,
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive .oo-ui-buttonElement-button:hover {
+  background-color: #eaf3ff;
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive .oo-ui-buttonElement-button:active,
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive .oo-ui-buttonElement-button:active {
+  background-color: rgba(8, 126, 204, 0.1);
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label,
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label {
+  font-weight: bold;
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button:hover {
+  background-color: #fee7e6;
+}
+.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button:active {
+  background-color: rgba(212, 83, 83, 0.1);
+}
+.oo-ui-processDialog-location {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.oo-ui-processDialog-title {
+  display: inline;
+  padding: 0;
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
+  white-space: nowrap;
+}
+.oo-ui-processDialog-actions-safe,
+.oo-ui-processDialog-actions-primary {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+}
+.oo-ui-processDialog-actions-safe {
+  left: 0;
+}
+.oo-ui-processDialog-actions-primary {
+  right: 0;
+}
+.oo-ui-processDialog-errors {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 4;
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+.oo-ui-processDialog-content .oo-ui-window-head {
+  height: 3.4375em;
+}
+.oo-ui-processDialog-content .oo-ui-window-body {
+  top: 3.4375em;
+  outline: 1px solid #c8ccd1;
+}
+.oo-ui-processDialog-navigation {
+  position: relative;
+  height: 3.4375em;
+}
+.oo-ui-processDialog-location {
+  height: 3.4375em;
+  cursor: default;
+  text-align: center;
+}
+.oo-ui-processDialog-title {
+  font-weight: bold;
+  line-height: 3.4375em;
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed {
+  margin: 0.46875em;
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-iconElement:first-child,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-iconElement:first-child,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-iconElement:first-child {
+  margin-left: 0;
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button {
+  padding-left: 2.875em;
+  padding-top: 0;
+  min-height: 3.4375em;
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
+  left: 0.5em;
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-labelElement:first-child,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-labelElement:first-child,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-labelElement:first-child {
+  margin-left: 0;
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button {
+  padding: 0.75em 1em;
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-labelElement.oo-ui-iconElement > .oo-ui-buttonElement-button,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-labelElement.oo-ui-iconElement > .oo-ui-buttonElement-button,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-labelElement.oo-ui-iconElement > .oo-ui-buttonElement-button {
+  padding-left: 2.625em;
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless .oo-ui-labelElement-label,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless .oo-ui-labelElement-label,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-frameless .oo-ui-labelElement-label {
+  line-height: 1.875em;
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless:hover,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless:hover {
+  background-color: rgba(0, 0, 0, 0.05);
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless:active,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless:active {
+  background-color: rgba(0, 0, 0, 0.1);
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive:hover,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive:hover,
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover {
+  background-color: rgba(8, 126, 204, 0.05);
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive:active,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive:active,
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active {
+  background-color: rgba(8, 126, 204, 0.1);
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label,
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label {
+  font-weight: bold;
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive:hover,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive:hover {
+  background-color: rgba(212, 83, 83, 0.05);
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive:active,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive:active {
+  background-color: rgba(212, 83, 83, 0.1);
+}
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement {
+  margin-right: 0;
+}
+.oo-ui-processDialog > .oo-ui-window-frame {
+  min-height: 5em;
+}
+.oo-ui-processDialog-errors {
+  background-color: rgba(255, 255, 255, 0.9);
+  padding: 3em 3em 1.5em 3em;
+  text-align: center;
+}
+.oo-ui-processDialog-errors .oo-ui-buttonWidget {
+  margin: 2em 1em 2em 1em;
+}
+.oo-ui-processDialog-errors-title {
+  font-size: 1.5em;
+  color: #000;
+  margin-bottom: 2em;
+}
+.oo-ui-processDialog-error {
+  text-align: left;
+  margin: 1em;
+  padding: 1em;
+  border: 1px solid #d33;
+  background-color: #fff7f7;
+  border-radius: 2px;
+}
+.oo-ui-windowManager-modal > .oo-ui-dialog {
+  position: fixed;
+  width: 0;
+  height: 0;
+  overflow: hidden;
+  z-index: 4;
+}
+.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-active {
+  width: auto;
+  height: auto;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  padding: 1em;
+}
+.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
+  position: absolute;
+  right: 0;
+  left: 0;
+  margin: auto;
+  overflow: hidden;
+  max-width: 100%;
+  max-height: 100%;
+}
+.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
+  width: 100%;
+  height: 100%;
+  top: 0;
+  bottom: 0;
+}
+.oo-ui-windowManager-modal > .oo-ui-dialog {
+  background-color: rgba(255, 255, 255, 0.5);
+  opacity: 0;
+  -webkit-transition: opacity 250ms;
+  -moz-transition: opacity 250ms;
+  transition: opacity 250ms;
+}
+.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
+  background-color: #fff;
+  opacity: 0;
+  -webkit-transform: scale(0.5);
+  -moz-transform: scale(0.5);
+  -ms-transform: scale(0.5);
+  transform: scale(0.5);
+  -webkit-transition: all 250ms;
+  -moz-transition: all 250ms;
+  transition: all 250ms;
+}
+.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
+  opacity: 1;
+}
+.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
+  opacity: 1;
+  -webkit-transform: scale(1);
+  -moz-transform: scale(1);
+  -ms-transform: scale(1);
+  transform: scale(1);
+}
+.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
+  top: 1em;
+  bottom: 1em;
+  max-height: 100%;
+  max-height: calc( 100% - 2em );
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25);
+}
index b23949f..23db06a 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.21.0
+ * OOjs UI v0.22.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2017 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2017-04-11T22:51:05Z
+ * Date: 2017-05-31T19:07:36Z
  */
 ( function ( OO ) {
 
@@ -851,6 +851,67 @@ OO.ui.Process.prototype.next = function ( step, context ) {
        return this;
 };
 
+/**
+ * A window instance represents the life cycle for one single opening of a window
+ * until its closing.
+ *
+ * While OO.ui.WindowManager will reuse OO.ui.Window objects, each time a window is
+ * opened, a new lifecycle starts.
+ *
+ * For more information, please see the [OOjs UI documentation on MediaWiki] [1].
+ *
+ * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Windows
+ *
+ * @class
+ *
+ * @constructor
+ */
+OO.ui.WindowInstance = function OOuiWindowInstance() {
+       var deferreds = {
+               opening: $.Deferred(),
+               opened: $.Deferred(),
+               closing: $.Deferred(),
+               closed: $.Deferred()
+       };
+
+       /**
+        * @private
+        * @property {Object}
+        */
+       this.deferreds = deferreds;
+
+       // Set these up as chained promises so that rejecting of
+       // an earlier stage automatically rejects the subsequent
+       // would-be stages as well.
+
+       /**
+        * @property {jQuery.Promise}
+        */
+       this.opening = deferreds.opening.promise();
+       /**
+        * @property {jQuery.Promise}
+        */
+       this.opened = this.opening.then( function () {
+               return deferreds.opened;
+       } );
+       /**
+        * @property {jQuery.Promise}
+        */
+       this.closing = this.opened.then( function () {
+               return deferreds.closing;
+       } );
+       /**
+        * @property {jQuery.Promise}
+        */
+       this.closed = this.closing.then( function () {
+               return deferreds.closed;
+       } );
+};
+
+/* Setup */
+
+OO.initClass( OO.ui.WindowInstance );
+
 /**
  * Window managers are used to open and close {@link OO.ui.Window windows} and control their presentation.
  * Managed windows are mutually exclusive. If a new window is opened while a current window is opening
@@ -865,13 +926,11 @@ OO.ui.Process.prototype.next = function ( step, context ) {
  * {@link OO.ui.Window#open open} method is used, and the window manager begins to open the window.
  *
  * - an `opening` event is emitted with an `opening` promise
- * - the #getSetupDelay method is called and the returned value is used to time a pause in execution before
- *   the window’s {@link OO.ui.Window#getSetupProcess getSetupProcess} method is called on the
- *   window and its result executed
+ * - the #getSetupDelay method is called and the returned value is used to time a pause in execution before the
+ *   window’s {@link OO.ui.Window#method-setup setup} method is called which executes OO.ui.Window#getSetupProcess.
  * - a `setup` progress notification is emitted from the `opening` promise
- * - the #getReadyDelay method is called the returned value is used to time a pause in execution before
- *   the window’s {@link OO.ui.Window#getReadyProcess getReadyProcess} method is called on the
- *   window and its result executed
+ * - the #getReadyDelay method is called the returned value is used to time a pause in execution before the
+ *   window’s {@link OO.ui.Window#method-ready ready} method is called which executes OO.ui.Window#getReadyProcess.
  * - a `ready` progress notification is emitted from the `opening` promise
  * - the `opening` promise is resolved with an `opened` promise
  *
@@ -921,9 +980,9 @@ OO.ui.WindowManager = function OoUiWindowManager( config ) {
        this.factory = config.factory;
        this.modal = config.modal === undefined || !!config.modal;
        this.windows = {};
-       this.opening = null;
-       this.opened = null;
-       this.closing = null;
+       // Deprecated placeholder promise given to compatOpening in openWindow()
+       // that is resolved in closeWindow().
+       this.compatOpened = null;
        this.preparingToOpen = null;
        this.preparingToClose = null;
        this.currentWindow = null;
@@ -952,9 +1011,9 @@ OO.mixinClass( OO.ui.WindowManager, OO.EventEmitter );
  *
  * @event opening
  * @param {OO.ui.Window} win Window that's being opened
- * @param {jQuery.Promise} opening An `opening` promise resolved with a value when the window is opened successfully.
- *  When the `opening` promise is resolved, the first argument of the value is an 'opened' promise, the second argument
- *  is the opening data. The `opening` promise emits `setup` and `ready` notifications when those processes are complete.
+ * @param {jQuery.Promise} opened A promise resolved with a value when the window is opened successfully.
+ *  This promise also emits `setup` and `ready` notifications. When this promise is resolved, the first
+ *  argument of the value is an 'closed' promise, the second argument is the opening data.
  * @param {Object} data Window opening data
  */
 
@@ -963,10 +1022,9 @@ OO.mixinClass( OO.ui.WindowManager, OO.EventEmitter );
  *
  * @event closing
  * @param {OO.ui.Window} win Window that's being closed
- * @param {jQuery.Promise} closing A `closing` promise is resolved with a value when the window
- *  is closed successfully. The promise emits `hold` and `teardown` notifications when those
- *  processes are complete. When the `closing` promise is resolved, the first argument of its value
- *  is the closing data.
+ * @param {jQuery.Promise} closed A promise resolved with a value when the window is closed successfully.
+ *  This promise also emits `hold` and `teardown` notifications. When this promise is resolved, the first
+ *  argument of its value is the closing data.
  * @param {Object} data Window closing data
  */
 
@@ -1049,7 +1107,8 @@ OO.ui.WindowManager.prototype.afterWindowResize = function () {
  * @return {boolean} Window is opening
  */
 OO.ui.WindowManager.prototype.isOpening = function ( win ) {
-       return win === this.currentWindow && !!this.opening && this.opening.state() === 'pending';
+       return win === this.currentWindow && !!this.lifecycle &&
+               this.lifecycle.opened.state() === 'pending';
 };
 
 /**
@@ -1059,7 +1118,9 @@ OO.ui.WindowManager.prototype.isOpening = function ( win ) {
  * @return {boolean} Window is closing
  */
 OO.ui.WindowManager.prototype.isClosing = function ( win ) {
-       return win === this.currentWindow && !!this.closing && this.closing.state() === 'pending';
+       return win === this.currentWindow && !!this.lifecycle &&
+               this.lifecycle.closing.state() === 'resolved' &&
+               this.lifecycle.closed.state() === 'pending';
 };
 
 /**
@@ -1069,7 +1130,9 @@ OO.ui.WindowManager.prototype.isClosing = function ( win ) {
  * @return {boolean} Window is opened
  */
 OO.ui.WindowManager.prototype.isOpened = function ( win ) {
-       return win === this.currentWindow && !!this.opened && this.opened.state() === 'pending';
+       return win === this.currentWindow && !!this.lifecycle &&
+               this.lifecycle.opened.state() === 'resolved' &&
+               this.lifecycle.closing.state() === 'pending';
 };
 
 /**
@@ -1191,76 +1254,107 @@ OO.ui.WindowManager.prototype.getCurrentWindow = function () {
  * @param {Object} [data] Window opening data
  * @param {jQuery|null} [data.$returnFocusTo] Element to which the window will return focus when closed.
  *  Defaults the current activeElement. If set to null, focus isn't changed on close.
- * @return {jQuery.Promise} An `opening` promise resolved when the window is done opening.
- *  See {@link #event-opening 'opening' event}  for more information about `opening` promises.
+ * @return {OO.ui.WindowInstance|jQuery.Promise} A lifecycle object representing this particular
+ *  opening of the window. For backwards-compatibility, then object is also a Thenable that is resolved
+ *  when the window is done opening, with nested promise for when closing starts. This behaviour
+ *  is deprecated and is not compatible with jQuery 3 (T163510).
  * @fires opening
  */
-OO.ui.WindowManager.prototype.openWindow = function ( win, data ) {
-       var manager = this,
-               opening = $.Deferred();
+OO.ui.WindowManager.prototype.openWindow = function ( win, data, lifecycle, compatOpening ) {
+       var manager = this;
        data = data || {};
 
+       // Internal parameter 'lifecycle' allows this method to always return
+       // a lifecycle even if the window still needs to be created
+       // asynchronously when 'win' is a string.
+       lifecycle = lifecycle || new OO.ui.WindowInstance();
+       compatOpening = compatOpening || $.Deferred();
+
+       // Turn lifecycle into a Thenable for backwards-compatibility with
+       // the deprecated nested-promise behaviour (T163510).
+       [ 'state', 'always', 'catch', 'pipe', 'then', 'promise', 'progress', 'done', 'fail' ]
+               .forEach( function ( method ) {
+                       lifecycle[ method ] = function () {
+                               OO.ui.warnDeprecation(
+                                       'Using the return value of openWindow as a promise is deprecated. ' +
+                                       'Use .openWindow( ... ).opening.' + method + '( ... ) instead.'
+                               );
+                               return compatOpening[ method ].apply( this, arguments );
+                       };
+               } );
+
        // Argument handling
        if ( typeof win === 'string' ) {
-               return this.getWindow( win ).then( function ( win ) {
-                       return manager.openWindow( win, data );
-               } );
+               this.getWindow( win ).then(
+                       function ( win ) {
+                               manager.openWindow( win, data, lifecycle, compatOpening );
+                       },
+                       function ( err ) {
+                               lifecycle.deferreds.opening.reject( err );
+                       }
+               );
+               return lifecycle;
        }
 
        // Error handling
        if ( !this.hasWindow( win ) ) {
-               opening.reject( new OO.ui.Error(
+               compatOpening.reject( new OO.ui.Error(
+                       'Cannot open window: window is not attached to manager'
+               ) );
+               lifecycle.deferreds.opening.reject( new OO.ui.Error(
                        'Cannot open window: window is not attached to manager'
                ) );
-       } else if ( this.preparingToOpen || this.opening || this.opened ) {
-               opening.reject( new OO.ui.Error(
+               return lifecycle;
+       }
+       if ( this.preparingToOpen || ( this.lifecycle && this.lifecycle.closing.state() !== 'resolved' ) ) {
+               compatOpening.reject( new OO.ui.Error(
+                       'Cannot open window: another window is opening or open'
+               ) );
+               lifecycle.deferreds.opening.reject( new OO.ui.Error(
                        'Cannot open window: another window is opening or open'
                ) );
+               return lifecycle;
        }
 
-       // Window opening
-       if ( opening.state() !== 'rejected' ) {
-               // If a window is currently closing, wait for it to complete
-               this.preparingToOpen = $.when( this.closing );
-               // Ensure handlers get called after preparingToOpen is set
-               this.preparingToOpen.done( function () {
-                       if ( manager.modal ) {
-                               manager.toggleGlobalEvents( true );
-                               manager.toggleAriaIsolation( true );
-                       }
-                       manager.$returnFocusTo = data.$returnFocusTo !== undefined ? data.$returnFocusTo : $( document.activeElement );
-                       manager.currentWindow = win;
-                       manager.opening = opening;
-                       manager.preparingToOpen = null;
-                       manager.emit( 'opening', win, opening, data );
-                       setTimeout( function () {
-                               win.setup( data ).then( function () {
-                                       manager.updateWindowSize( win );
-                                       manager.opening.notify( { state: 'setup' } );
-                                       setTimeout( function () {
-                                               win.ready( data ).then( function () {
-                                                       manager.opening.notify( { state: 'ready' } );
-                                                       manager.opening = null;
-                                                       manager.opened = $.Deferred();
-                                                       opening.resolve( manager.opened.promise(), data );
-                                               }, function () {
-                                                       manager.opening = null;
-                                                       manager.opened = $.Deferred();
-                                                       opening.reject();
-                                                       manager.closeWindow( win );
-                                               } );
-                                       }, manager.getReadyDelay() );
-                               }, function () {
-                                       manager.opening = null;
-                                       manager.opened = $.Deferred();
-                                       opening.reject();
-                                       manager.closeWindow( win );
-                               } );
-                       }, manager.getSetupDelay() );
-               } );
-       }
+       // If a window is currently closing, wait for it to complete
+       this.preparingToOpen = $.when( this.lifecycle && this.lifecycle.closed );
+       // Ensure handlers get called after preparingToOpen is set
+       this.preparingToOpen.done( function () {
+               if ( manager.modal ) {
+                       manager.toggleGlobalEvents( true );
+                       manager.toggleAriaIsolation( true );
+               }
+               manager.$returnFocusTo = data.$returnFocusTo !== undefined ? data.$returnFocusTo : $( document.activeElement );
+               manager.currentWindow = win;
+               manager.lifecycle = lifecycle;
+               manager.preparingToOpen = null;
+               manager.emit( 'opening', win, compatOpening, data );
+               lifecycle.deferreds.opening.resolve( data );
+               setTimeout( function () {
+                       manager.compatOpened = $.Deferred();
+                       win.setup( data ).then( function () {
+                               manager.updateWindowSize( win );
+                               compatOpening.notify( { state: 'setup' } );
+                               setTimeout( function () {
+                                       win.ready( data ).then( function () {
+                                               compatOpening.notify( { state: 'ready' } );
+                                               lifecycle.deferreds.opened.resolve( data );
+                                               compatOpening.resolve( manager.compatOpened.promise(), data );
+                                       }, function () {
+                                               lifecycle.deferreds.opened.reject();
+                                               compatOpening.reject();
+                                               manager.closeWindow( win );
+                                       } );
+                               }, manager.getReadyDelay() );
+                       }, function () {
+                               lifecycle.deferreds.opened.reject();
+                               compatOpening.reject();
+                               manager.closeWindow( win );
+                       } );
+               }, manager.getSetupDelay() );
+       } );
 
-       return opening.promise();
+       return lifecycle;
 };
 
 /**
@@ -1268,15 +1362,17 @@ OO.ui.WindowManager.prototype.openWindow = function ( win, data ) {
  *
  * @param {OO.ui.Window|string} win Window object or symbolic name of window to close
  * @param {Object} [data] Window closing data
- * @return {jQuery.Promise} A `closing` promise resolved when the window is done closing.
- *  See {@link #event-closing 'closing' event} for more information about closing promises.
- * @throws {Error} An error is thrown if the window is not managed by the window manager.
+ * @return {OO.ui.WindowInstance|jQuery.Promise} A lifecycle object representing this particular
+ *  opening of the window. For backwards-compatibility, the object is also a Thenable that is resolved
+ *  when the window is done closing (T163510).
  * @fires closing
  */
 OO.ui.WindowManager.prototype.closeWindow = function ( win, data ) {
-       var manager = this,
-               closing = $.Deferred(),
-               opened;
+       var error,
+               manager = this,
+               compatClosing = $.Deferred(),
+               lifecycle = this.lifecycle,
+               compatOpened;
 
        // Argument handling
        if ( typeof win === 'string' ) {
@@ -1286,56 +1382,78 @@ OO.ui.WindowManager.prototype.closeWindow = function ( win, data ) {
        }
 
        // Error handling
-       if ( !win ) {
-               closing.reject( new OO.ui.Error(
-                       'Cannot close window: window is not attached to manager'
-               ) );
+       if ( !lifecycle ) {
+               error = 'Cannot close window: no window is currently open';
+       } else if ( !win ) {
+               error = 'Cannot close window: window is not attached to manager';
        } else if ( win !== this.currentWindow ) {
-               closing.reject( new OO.ui.Error(
-                       'Cannot close window: window already closed with different data'
-               ) );
-       } else if ( this.preparingToClose || this.closing ) {
-               closing.reject( new OO.ui.Error(
-                       'Cannot close window: window already closing with different data'
-               ) );
-       }
-
-       // Window closing
-       if ( closing.state() !== 'rejected' ) {
-               // If the window is currently opening, close it when it's done
-               this.preparingToClose = $.when( this.opening );
-               // Ensure handlers get called after preparingToClose is set
-               this.preparingToClose.always( function () {
-                       manager.closing = closing;
-                       manager.preparingToClose = null;
-                       manager.emit( 'closing', win, closing, data );
-                       opened = manager.opened;
-                       manager.opened = null;
-                       opened.resolve( closing.promise(), data );
-                       setTimeout( function () {
-                               win.hold( data ).then( function () {
-                                       closing.notify( { state: 'hold' } );
-                                       setTimeout( function () {
-                                               win.teardown( data ).then( function () {
-                                                       closing.notify( { state: 'teardown' } );
-                                                       if ( manager.modal ) {
-                                                               manager.toggleGlobalEvents( false );
-                                                               manager.toggleAriaIsolation( false );
-                                                       }
-                                                       if ( manager.$returnFocusTo && manager.$returnFocusTo.length ) {
-                                                               manager.$returnFocusTo[ 0 ].focus();
-                                                       }
-                                                       manager.closing = null;
-                                                       manager.currentWindow = null;
-                                                       closing.resolve( data );
-                                               } );
-                                       }, manager.getTeardownDelay() );
-                               } );
-                       }, manager.getHoldDelay() );
+               error = 'Cannot close window: window already closed with different data';
+       } else if ( this.preparingToClose || lifecycle.closing.state() === 'resolved' ) {
+               error = 'Cannot close window: window already closing with different data';
+       }
+
+       if ( error ) {
+               // This function was called for the wrong window and we don't want to mess with the current
+               // window's state.
+               lifecycle = new OO.ui.WindowInstance();
+               // Pretend the window has been opened, so that we can pretend to fail to close it.
+               lifecycle.deferreds.opening.resolve( {} );
+               lifecycle.deferreds.opened.resolve( {} );
+       }
+
+       // Turn lifecycle into a Thenable for backwards-compatibility with
+       // the deprecated nested-promise behaviour (T163510).
+       [ 'state', 'always', 'catch', 'pipe', 'then', 'promise', 'progress', 'done', 'fail' ]
+               .forEach( function ( method ) {
+                       lifecycle[ method ] = function () {
+                               OO.ui.warnDeprecation(
+                                       'Using the return value of closeWindow as a promise is deprecated. ' +
+                                       'Use .closeWindow( ... ).closed.' + method + '( ... ) instead.'
+                               );
+                               return compatClosing[ method ].apply( this, arguments );
+                       };
                } );
-       }
 
-       return closing.promise();
+       if ( error ) {
+               compatClosing.reject( new OO.ui.Error( error ) );
+               lifecycle.deferreds.closing.reject( new OO.ui.Error( error ) );
+               return lifecycle;
+       }
+
+       // If the window is currently opening, close it when it's done
+       this.preparingToClose = $.when( this.lifecycle.opened );
+       // Ensure handlers get called after preparingToClose is set
+       this.preparingToClose.always( function () {
+               manager.preparingToClose = null;
+               manager.emit( 'closing', win, compatClosing, data );
+               lifecycle.deferreds.closing.resolve( data );
+               compatOpened = manager.compatOpened;
+               manager.compatOpened = null;
+               compatOpened.resolve( compatClosing.promise(), data );
+               setTimeout( function () {
+                       win.hold( data ).then( function () {
+                               compatClosing.notify( { state: 'hold' } );
+                               setTimeout( function () {
+                                       win.teardown( data ).then( function () {
+                                               compatClosing.notify( { state: 'teardown' } );
+                                               if ( manager.modal ) {
+                                                       manager.toggleGlobalEvents( false );
+                                                       manager.toggleAriaIsolation( false );
+                                               }
+                                               if ( manager.$returnFocusTo && manager.$returnFocusTo.length ) {
+                                                       manager.$returnFocusTo[ 0 ].focus();
+                                               }
+                                               manager.currentWindow = null;
+                                               manager.lifecycle = null;
+                                               lifecycle.deferreds.closed.resolve( data );
+                                               compatClosing.resolve( data );
+                                       } );
+                               }, manager.getTeardownDelay() );
+                       } );
+               }, manager.getHoldDelay() );
+       } );
+
+       return lifecycle;
 };
 
 /**
@@ -1438,7 +1556,7 @@ OO.ui.WindowManager.prototype.removeWindows = function ( names ) {
                        throw new Error( 'Cannot remove window' );
                }
                cleanupWindow = cleanup.bind( null, name, win );
-               promises.push( this.closeWindow( name ).then( cleanupWindow, cleanupWindow ) );
+               promises.push( this.closeWindow( name ).closed.then( cleanupWindow, cleanupWindow ) );
        }
 
        return $.when.apply( $, promises );
@@ -1636,6 +1754,26 @@ OO.ui.Window = function OoUiWindow( config ) {
        this.manager = null;
        this.size = config.size || this.constructor.static.size;
        this.$frame = $( '<div>' );
+       /**
+        * Overlay element to use for the `$overlay` configuration option of widgets that support it.
+        * Things put inside of it are overlaid on top of the window and are not bound to its dimensions.
+        * See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.
+        *
+        *     MyDialog.prototype.initialize = function () {
+        *       ...
+        *       var popupButton = new OO.ui.PopupButtonWidget( {
+        *         $overlay: this.$overlay,
+        *         label: 'Popup button',
+        *         popup: {
+        *           $content: $( '<p>Popup contents.</p><p>Popup contents.</p><p>Popup contents.</p>' ),
+        *           padded: true
+        *         }
+        *       } );
+        *       ...
+        *     };
+        *
+        * @property {jQuery}
+        */
        this.$overlay = $( '<div>' );
        this.$content = $( '<div>' );
 
@@ -2492,21 +2630,15 @@ OO.ui.Dialog.prototype.getTeardownProcess = function ( data ) {
  * @inheritdoc
  */
 OO.ui.Dialog.prototype.initialize = function () {
-       var titleId;
-
        // Parent method
        OO.ui.Dialog.parent.prototype.initialize.call( this );
 
-       titleId = OO.ui.generateElementId();
-
        // Properties
-       this.title = new OO.ui.LabelWidget( {
-               id: titleId
-       } );
+       this.title = new OO.ui.LabelWidget();
 
        // Initialization
        this.$content.addClass( 'oo-ui-dialog-content' );
-       this.$element.attr( 'aria-labelledby', titleId );
+       this.$element.attr( 'aria-labelledby', this.title.getElementId() );
        this.setPendingElement( this.$head );
 };
 
@@ -2772,7 +2904,7 @@ OO.ui.MessageDialog.prototype.getReadyProcess = function ( data ) {
                                return action.getFlags().indexOf( 'primary' ) > -1;
                        } );
                        if ( actions.length > 0 ) {
-                               actions[ 0 ].$button.focus();
+                               actions[ 0 ].focus();
                        }
                }, this );
 };
@@ -3160,7 +3292,8 @@ OO.ui.ProcessDialog.prototype.fitLabel = function () {
                } else if ( this.isOpening() ) {
                        if ( !this.fitOnOpen ) {
                                // Size is relative and the dialog isn't open yet, so wait.
-                               this.manager.opening.done( this.fitLabel.bind( this ) );
+                               // FIXME: This should ideally be handled by setup somehow.
+                               this.manager.lifecycle.opened.done( this.fitLabel.bind( this ) );
                                this.fitOnOpen = true;
                        }
                        return;
@@ -3315,12 +3448,8 @@ OO.ui.alert = function ( text, options ) {
        return OO.ui.getWindowManager().openWindow( 'message', $.extend( {
                message: text,
                actions: [ OO.ui.MessageDialog.static.actions[ 0 ] ]
-       }, options ) ).then( function ( opened ) {
-               return opened.then( function ( closing ) {
-                       return closing.then( function () {
-                               return $.Deferred().resolve();
-                       } );
-               } );
+       }, options ) ).closed.then( function () {
+               return undefined;
        } );
 };
 
@@ -3350,12 +3479,8 @@ OO.ui.alert = function ( text, options ) {
 OO.ui.confirm = function ( text, options ) {
        return OO.ui.getWindowManager().openWindow( 'message', $.extend( {
                message: text
-       }, options ) ).then( function ( opened ) {
-               return opened.then( function ( closing ) {
-                       return closing.then( function ( data ) {
-                               return $.Deferred().resolve( !!( data && data.action === 'accept' ) );
-                       } );
-               } );
+       }, options ) ).closed.then( function ( data ) {
+               return !!( data && data.action === 'accept' );
        } );
 };
 
@@ -3384,29 +3509,31 @@ OO.ui.confirm = function ( text, options ) {
  *  resolve to `null`.
  */
 OO.ui.prompt = function ( text, options ) {
-       var manager = OO.ui.getWindowManager(),
+       var instance,
+               manager = OO.ui.getWindowManager(),
                textInput = new OO.ui.TextInputWidget( ( options && options.textInput ) || {} ),
                textField = new OO.ui.FieldLayout( textInput, {
                        align: 'top',
                        label: text
                } );
 
-       // TODO: This is a little hacky, and could be done by extending MessageDialog instead.
-
-       return manager.openWindow( 'message', $.extend( {
+       instance = manager.openWindow( 'message', $.extend( {
                message: textField.$element
-       }, options ) ).then( function ( opened ) {
-               // After ready
+       }, options ) );
+
+       // TODO: This is a little hacky, and could be done by extending MessageDialog instead.
+       instance.opened.then( function () {
                textInput.on( 'enter', function () {
                        manager.getCurrentWindow().close( { action: 'accept' } );
                } );
                textInput.focus();
-               return opened.then( function ( closing ) {
-                       return closing.then( function ( data ) {
-                               return $.Deferred().resolve( data && data.action === 'accept' ? textInput.getValue() : null );
-                       } );
-               } );
+       } );
+
+       return instance.closed.then( function ( data ) {
+               return data && data.action === 'accept' ? textInput.getValue() : null;
        } );
 };
 
 }( OO ) );
+
+//# sourceMappingURL=oojs-ui-windows.js.map
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/oojs-ui-windows.js.map b/resources/lib/oojs-ui/oojs-ui-windows.js.map
new file mode 100644 (file)
index 0000000..0d1c1c0
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/intro.js.txt","../src/widgets/ActionWidget.js","../src/ActionSet.js","../src/Error.js","../src/Process.js","../src/WindowInstance.js","../src/WindowManager.js","../src/Window.js","../src/Dialog.js","../src/dialogs/MessageDialog.js","../src/dialogs/ProcessDialog.js","../src/windows.js","../src/outro.js.txt"],"names":[],"mappings":"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","file":"oojs-ui-windows.js","sourcesContent":["( function ( OO ) {\n\n'use strict';\n","/**\n * An ActionWidget is a {@link OO.ui.ButtonWidget button widget} that executes an action.\n * Action widgets are used with OO.ui.ActionSet, which manages the behavior and availability\n * of the actions.\n *\n * Both actions and action sets are primarily used with {@link OO.ui.Dialog Dialogs}.\n * Please see the [OOjs UI documentation on MediaWiki] [1] for more information\n * and examples.\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Windows/Process_Dialogs#Action_sets\n *\n * @class\n * @extends OO.ui.ButtonWidget\n * @mixins OO.ui.mixin.PendingElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {string} [action] Symbolic name of the action (e.g., ‘continue’ or ‘cancel’).\n * @cfg {string[]} [modes] Symbolic names of the modes (e.g., ‘edit’ or ‘read’) in which the action\n *  should be made available. See the action set's {@link OO.ui.ActionSet#setMode setMode} method\n *  for more information about setting modes.\n * @cfg {boolean} [framed=false] Render the action button with a frame\n */\nOO.ui.ActionWidget = function OoUiActionWidget( config ) {\n\t// Configuration initialization\n\tconfig = $.extend( { framed: false }, config );\n\n\t// Parent constructor\n\tOO.ui.ActionWidget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.PendingElement.call( this, config );\n\n\t// Properties\n\tthis.action = config.action || '';\n\tthis.modes = config.modes || [];\n\tthis.width = 0;\n\tthis.height = 0;\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-actionWidget' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ActionWidget, OO.ui.ButtonWidget );\nOO.mixinClass( OO.ui.ActionWidget, OO.ui.mixin.PendingElement );\n\n/* Methods */\n\n/**\n * Check if the action is configured to be available in the specified `mode`.\n *\n * @param {string} mode Name of mode\n * @return {boolean} The action is configured with the mode\n */\nOO.ui.ActionWidget.prototype.hasMode = function ( mode ) {\n\treturn this.modes.indexOf( mode ) !== -1;\n};\n\n/**\n * Get the symbolic name of the action (e.g., ‘continue’ or ‘cancel’).\n *\n * @return {string}\n */\nOO.ui.ActionWidget.prototype.getAction = function () {\n\treturn this.action;\n};\n\n/**\n * Get the symbolic name of the mode or modes for which the action is configured to be available.\n *\n * The current mode is set with the action set's {@link OO.ui.ActionSet#setMode setMode} method.\n * Only actions that are configured to be avaiable in the current mode will be visible. All other actions\n * are hidden.\n *\n * @return {string[]}\n */\nOO.ui.ActionWidget.prototype.getModes = function () {\n\treturn this.modes.slice();\n};\n","/* eslint-disable no-unused-vars */\n/**\n * ActionSets manage the behavior of the {@link OO.ui.ActionWidget action widgets} that comprise them.\n * Actions can be made available for specific contexts (modes) and circumstances\n * (abilities). Action sets are primarily used with {@link OO.ui.Dialog Dialogs}.\n *\n * ActionSets contain two types of actions:\n *\n * - Special: Special actions are the first visible actions with special flags, such as 'safe' and 'primary', the default special flags. Additional special flags can be configured in subclasses with the static #specialFlags property.\n * - Other: Other actions include all non-special visible actions.\n *\n * Please see the [OOjs UI documentation on MediaWiki][1] for more information.\n *\n *     @example\n *     // Example: An action set used in a process dialog\n *     function MyProcessDialog( config ) {\n *         MyProcessDialog.parent.call( this, config );\n *     }\n *     OO.inheritClass( MyProcessDialog, OO.ui.ProcessDialog );\n *     MyProcessDialog.static.title = 'An action set in a process dialog';\n *     MyProcessDialog.static.name = 'myProcessDialog';\n *     // An action set that uses modes ('edit' and 'help' mode, in this example).\n *     MyProcessDialog.static.actions = [\n *         { action: 'continue', modes: 'edit', label: 'Continue', flags: [ 'primary', 'constructive' ] },\n *         { action: 'help', modes: 'edit', label: 'Help' },\n *         { modes: 'edit', label: 'Cancel', flags: 'safe' },\n *         { action: 'back', modes: 'help', label: 'Back', flags: 'safe' }\n *     ];\n *\n *     MyProcessDialog.prototype.initialize = function () {\n *         MyProcessDialog.parent.prototype.initialize.apply( this, arguments );\n *         this.panel1 = new OO.ui.PanelLayout( { padded: true, expanded: false } );\n *         this.panel1.$element.append( '<p>This dialog uses an action set (continue, help, cancel, back) configured with modes. This is edit mode. Click \\'help\\' to see help mode.</p>' );\n *         this.panel2 = new OO.ui.PanelLayout( { padded: true, expanded: false } );\n *         this.panel2.$element.append( '<p>This is help mode. Only the \\'back\\' action widget is configured to be visible here. Click \\'back\\' to return to \\'edit\\' mode.</p>' );\n *         this.stackLayout = new OO.ui.StackLayout( {\n *             items: [ this.panel1, this.panel2 ]\n *         } );\n *         this.$body.append( this.stackLayout.$element );\n *     };\n *     MyProcessDialog.prototype.getSetupProcess = function ( data ) {\n *         return MyProcessDialog.parent.prototype.getSetupProcess.call( this, data )\n *             .next( function () {\n *                 this.actions.setMode( 'edit' );\n *             }, this );\n *     };\n *     MyProcessDialog.prototype.getActionProcess = function ( action ) {\n *         if ( action === 'help' ) {\n *             this.actions.setMode( 'help' );\n *             this.stackLayout.setItem( this.panel2 );\n *         } else if ( action === 'back' ) {\n *             this.actions.setMode( 'edit' );\n *             this.stackLayout.setItem( this.panel1 );\n *         } else if ( action === 'continue' ) {\n *             var dialog = this;\n *             return new OO.ui.Process( function () {\n *                 dialog.close();\n *             } );\n *         }\n *         return MyProcessDialog.parent.prototype.getActionProcess.call( this, action );\n *     };\n *     MyProcessDialog.prototype.getBodyHeight = function () {\n *         return this.panel1.$element.outerHeight( true );\n *     };\n *     var windowManager = new OO.ui.WindowManager();\n *     $( 'body' ).append( windowManager.$element );\n *     var dialog = new MyProcessDialog( {\n *         size: 'medium'\n *     } );\n *     windowManager.addWindows( [ dialog ] );\n *     windowManager.openWindow( dialog );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Windows/Process_Dialogs#Action_sets\n *\n * @abstract\n * @class\n * @mixins OO.EventEmitter\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.ActionSet = function OoUiActionSet( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Mixin constructors\n\tOO.EventEmitter.call( this );\n\n\t// Properties\n\tthis.list = [];\n\tthis.categories = {\n\t\tactions: 'getAction',\n\t\tflags: 'getFlags',\n\t\tmodes: 'getModes'\n\t};\n\tthis.categorized = {};\n\tthis.special = {};\n\tthis.others = [];\n\tthis.organized = false;\n\tthis.changing = false;\n\tthis.changed = false;\n};\n/* eslint-enable no-unused-vars */\n\n/* Setup */\n\nOO.mixinClass( OO.ui.ActionSet, OO.EventEmitter );\n\n/* Static Properties */\n\n/**\n * Symbolic name of the flags used to identify special actions. Special actions are displayed in the\n *  header of a {@link OO.ui.ProcessDialog process dialog}.\n *  See the [OOjs UI documentation on MediaWiki][2] for more information and examples.\n *\n *  [2]:https://www.mediawiki.org/wiki/OOjs_UI/Windows/Process_Dialogs\n *\n * @abstract\n * @static\n * @inheritable\n * @property {string}\n */\nOO.ui.ActionSet.static.specialFlags = [ 'safe', 'primary' ];\n\n/* Events */\n\n/**\n * @event click\n *\n * A 'click' event is emitted when an action is clicked.\n *\n * @param {OO.ui.ActionWidget} action Action that was clicked\n */\n\n/**\n * @event add\n *\n * An 'add' event is emitted when actions are {@link #method-add added} to the action set.\n *\n * @param {OO.ui.ActionWidget[]} added Actions added\n */\n\n/**\n * @event remove\n *\n * A 'remove' event is emitted when actions are {@link #method-remove removed}\n *  or {@link #clear cleared}.\n *\n * @param {OO.ui.ActionWidget[]} added Actions removed\n */\n\n/**\n * @event change\n *\n * A 'change' event is emitted when actions are {@link #method-add added}, {@link #clear cleared},\n * or {@link #method-remove removed} from the action set or when the {@link #setMode mode} is changed.\n *\n */\n\n/* Methods */\n\n/**\n * Handle action change events.\n *\n * @private\n * @fires change\n */\nOO.ui.ActionSet.prototype.onActionChange = function () {\n\tthis.organized = false;\n\tif ( this.changing ) {\n\t\tthis.changed = true;\n\t} else {\n\t\tthis.emit( 'change' );\n\t}\n};\n\n/**\n * Check if an action is one of the special actions.\n *\n * @param {OO.ui.ActionWidget} action Action to check\n * @return {boolean} Action is special\n */\nOO.ui.ActionSet.prototype.isSpecial = function ( action ) {\n\tvar flag;\n\n\tfor ( flag in this.special ) {\n\t\tif ( action === this.special[ flag ] ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\n/**\n * Get action widgets based on the specified filter: ‘actions’, ‘flags’, ‘modes’, ‘visible’,\n *  or ‘disabled’.\n *\n * @param {Object} [filters] Filters to use, omit to get all actions\n * @param {string|string[]} [filters.actions] Actions that action widgets must have\n * @param {string|string[]} [filters.flags] Flags that action widgets must have (e.g., 'safe')\n * @param {string|string[]} [filters.modes] Modes that action widgets must have\n * @param {boolean} [filters.visible] Action widgets must be visible\n * @param {boolean} [filters.disabled] Action widgets must be disabled\n * @return {OO.ui.ActionWidget[]} Action widgets matching all criteria\n */\nOO.ui.ActionSet.prototype.get = function ( filters ) {\n\tvar i, len, list, category, actions, index, match, matches;\n\n\tif ( filters ) {\n\t\tthis.organize();\n\n\t\t// Collect category candidates\n\t\tmatches = [];\n\t\tfor ( category in this.categorized ) {\n\t\t\tlist = filters[ category ];\n\t\t\tif ( list ) {\n\t\t\t\tif ( !Array.isArray( list ) ) {\n\t\t\t\t\tlist = [ list ];\n\t\t\t\t}\n\t\t\t\tfor ( i = 0, len = list.length; i < len; i++ ) {\n\t\t\t\t\tactions = this.categorized[ category ][ list[ i ] ];\n\t\t\t\t\tif ( Array.isArray( actions ) ) {\n\t\t\t\t\t\tmatches.push.apply( matches, actions );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Remove by boolean filters\n\t\tfor ( i = 0, len = matches.length; i < len; i++ ) {\n\t\t\tmatch = matches[ i ];\n\t\t\tif (\n\t\t\t\t( filters.visible !== undefined && match.isVisible() !== filters.visible ) ||\n\t\t\t\t( filters.disabled !== undefined && match.isDisabled() !== filters.disabled )\n\t\t\t) {\n\t\t\t\tmatches.splice( i, 1 );\n\t\t\t\tlen--;\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t\t// Remove duplicates\n\t\tfor ( i = 0, len = matches.length; i < len; i++ ) {\n\t\t\tmatch = matches[ i ];\n\t\t\tindex = matches.lastIndexOf( match );\n\t\t\twhile ( index !== i ) {\n\t\t\t\tmatches.splice( index, 1 );\n\t\t\t\tlen--;\n\t\t\t\tindex = matches.lastIndexOf( match );\n\t\t\t}\n\t\t}\n\t\treturn matches;\n\t}\n\treturn this.list.slice();\n};\n\n/**\n * Get 'special' actions.\n *\n * Special actions are the first visible action widgets with special flags, such as 'safe' and 'primary'.\n * Special flags can be configured in subclasses by changing the static #specialFlags property.\n *\n * @return {OO.ui.ActionWidget[]|null} 'Special' action widgets.\n */\nOO.ui.ActionSet.prototype.getSpecial = function () {\n\tthis.organize();\n\treturn $.extend( {}, this.special );\n};\n\n/**\n * Get 'other' actions.\n *\n * Other actions include all non-special visible action widgets.\n *\n * @return {OO.ui.ActionWidget[]} 'Other' action widgets\n */\nOO.ui.ActionSet.prototype.getOthers = function () {\n\tthis.organize();\n\treturn this.others.slice();\n};\n\n/**\n * Set the mode  (e.g., ‘edit’ or ‘view’). Only {@link OO.ui.ActionWidget#modes actions} configured\n * to be available in the specified mode will be made visible. All other actions will be hidden.\n *\n * @param {string} mode The mode. Only actions configured to be available in the specified\n *  mode will be made visible.\n * @chainable\n * @fires toggle\n * @fires change\n */\nOO.ui.ActionSet.prototype.setMode = function ( mode ) {\n\tvar i, len, action;\n\n\tthis.changing = true;\n\tfor ( i = 0, len = this.list.length; i < len; i++ ) {\n\t\taction = this.list[ i ];\n\t\taction.toggle( action.hasMode( mode ) );\n\t}\n\n\tthis.organized = false;\n\tthis.changing = false;\n\tthis.emit( 'change' );\n\n\treturn this;\n};\n\n/**\n * Set the abilities of the specified actions.\n *\n * Action widgets that are configured with the specified actions will be enabled\n * or disabled based on the boolean values specified in the `actions`\n * parameter.\n *\n * @param {Object.<string,boolean>} actions A list keyed by action name with boolean\n *  values that indicate whether or not the action should be enabled.\n * @chainable\n */\nOO.ui.ActionSet.prototype.setAbilities = function ( actions ) {\n\tvar i, len, action, item;\n\n\tfor ( i = 0, len = this.list.length; i < len; i++ ) {\n\t\titem = this.list[ i ];\n\t\taction = item.getAction();\n\t\tif ( actions[ action ] !== undefined ) {\n\t\t\titem.setDisabled( !actions[ action ] );\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * Executes a function once per action.\n *\n * When making changes to multiple actions, use this method instead of iterating over the actions\n * manually to defer emitting a #change event until after all actions have been changed.\n *\n * @param {Object|null} filter Filters to use to determine which actions to iterate over; see #get\n * @param {Function} callback Callback to run for each action; callback is invoked with three\n *   arguments: the action, the action's index, the list of actions being iterated over\n * @chainable\n */\nOO.ui.ActionSet.prototype.forEach = function ( filter, callback ) {\n\tthis.changed = false;\n\tthis.changing = true;\n\tthis.get( filter ).forEach( callback );\n\tthis.changing = false;\n\tif ( this.changed ) {\n\t\tthis.emit( 'change' );\n\t}\n\n\treturn this;\n};\n\n/**\n * Add action widgets to the action set.\n *\n * @param {OO.ui.ActionWidget[]} actions Action widgets to add\n * @chainable\n * @fires add\n * @fires change\n */\nOO.ui.ActionSet.prototype.add = function ( actions ) {\n\tvar i, len, action;\n\n\tthis.changing = true;\n\tfor ( i = 0, len = actions.length; i < len; i++ ) {\n\t\taction = actions[ i ];\n\t\taction.connect( this, {\n\t\t\tclick: [ 'emit', 'click', action ],\n\t\t\ttoggle: [ 'onActionChange' ]\n\t\t} );\n\t\tthis.list.push( action );\n\t}\n\tthis.organized = false;\n\tthis.emit( 'add', actions );\n\tthis.changing = false;\n\tthis.emit( 'change' );\n\n\treturn this;\n};\n\n/**\n * Remove action widgets from the set.\n *\n * To remove all actions, you may wish to use the #clear method instead.\n *\n * @param {OO.ui.ActionWidget[]} actions Action widgets to remove\n * @chainable\n * @fires remove\n * @fires change\n */\nOO.ui.ActionSet.prototype.remove = function ( actions ) {\n\tvar i, len, index, action;\n\n\tthis.changing = true;\n\tfor ( i = 0, len = actions.length; i < len; i++ ) {\n\t\taction = actions[ i ];\n\t\tindex = this.list.indexOf( action );\n\t\tif ( index !== -1 ) {\n\t\t\taction.disconnect( this );\n\t\t\tthis.list.splice( index, 1 );\n\t\t}\n\t}\n\tthis.organized = false;\n\tthis.emit( 'remove', actions );\n\tthis.changing = false;\n\tthis.emit( 'change' );\n\n\treturn this;\n};\n\n/**\n * Remove all action widets from the set.\n *\n * To remove only specified actions, use the {@link #method-remove remove} method instead.\n *\n * @chainable\n * @fires remove\n * @fires change\n */\nOO.ui.ActionSet.prototype.clear = function () {\n\tvar i, len, action,\n\t\tremoved = this.list.slice();\n\n\tthis.changing = true;\n\tfor ( i = 0, len = this.list.length; i < len; i++ ) {\n\t\taction = this.list[ i ];\n\t\taction.disconnect( this );\n\t}\n\n\tthis.list = [];\n\n\tthis.organized = false;\n\tthis.emit( 'remove', removed );\n\tthis.changing = false;\n\tthis.emit( 'change' );\n\n\treturn this;\n};\n\n/**\n * Organize actions.\n *\n * This is called whenever organized information is requested. It will only reorganize the actions\n * if something has changed since the last time it ran.\n *\n * @private\n * @chainable\n */\nOO.ui.ActionSet.prototype.organize = function () {\n\tvar i, iLen, j, jLen, flag, action, category, list, item, special,\n\t\tspecialFlags = this.constructor.static.specialFlags;\n\n\tif ( !this.organized ) {\n\t\tthis.categorized = {};\n\t\tthis.special = {};\n\t\tthis.others = [];\n\t\tfor ( i = 0, iLen = this.list.length; i < iLen; i++ ) {\n\t\t\taction = this.list[ i ];\n\t\t\tif ( action.isVisible() ) {\n\t\t\t\t// Populate categories\n\t\t\t\tfor ( category in this.categories ) {\n\t\t\t\t\tif ( !this.categorized[ category ] ) {\n\t\t\t\t\t\tthis.categorized[ category ] = {};\n\t\t\t\t\t}\n\t\t\t\t\tlist = action[ this.categories[ category ] ]();\n\t\t\t\t\tif ( !Array.isArray( list ) ) {\n\t\t\t\t\t\tlist = [ list ];\n\t\t\t\t\t}\n\t\t\t\t\tfor ( j = 0, jLen = list.length; j < jLen; j++ ) {\n\t\t\t\t\t\titem = list[ j ];\n\t\t\t\t\t\tif ( !this.categorized[ category ][ item ] ) {\n\t\t\t\t\t\t\tthis.categorized[ category ][ item ] = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.categorized[ category ][ item ].push( action );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Populate special/others\n\t\t\t\tspecial = false;\n\t\t\t\tfor ( j = 0, jLen = specialFlags.length; j < jLen; j++ ) {\n\t\t\t\t\tflag = specialFlags[ j ];\n\t\t\t\t\tif ( !this.special[ flag ] && action.hasFlag( flag ) ) {\n\t\t\t\t\t\tthis.special[ flag ] = action;\n\t\t\t\t\t\tspecial = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( !special ) {\n\t\t\t\t\tthis.others.push( action );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.organized = true;\n\t}\n\n\treturn this;\n};\n","/**\n * Errors contain a required message (either a string or jQuery selection) that is used to describe what went wrong\n * in a {@link OO.ui.Process process}. The error's #recoverable and #warning configurations are used to customize the\n * appearance and functionality of the error interface.\n *\n * The basic error interface contains a formatted error message as well as two buttons: 'Dismiss' and 'Try again' (i.e., the error\n * is 'recoverable' by default). If the error is not recoverable, the 'Try again' button will not be rendered and the widget\n * that initiated the failed process will be disabled.\n *\n * If the error is a warning, the error interface will include a 'Dismiss' and a 'Continue' button, which will try the\n * process again.\n *\n * For an example of error interfaces, please see the [OOjs UI documentation on MediaWiki][1].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Windows/Process_Dialogs#Processes_and_errors\n *\n * @class\n *\n * @constructor\n * @param {string|jQuery} message Description of error\n * @param {Object} [config] Configuration options\n * @cfg {boolean} [recoverable=true] Error is recoverable.\n *  By default, errors are recoverable, and users can try the process again.\n * @cfg {boolean} [warning=false] Error is a warning.\n *  If the error is a warning, the error interface will include a\n *  'Dismiss' and a 'Continue' button. It is the responsibility of the developer to ensure that the warning\n *  is not triggered a second time if the user chooses to continue.\n */\nOO.ui.Error = function OoUiError( message, config ) {\n\t// Allow passing positional parameters inside the config object\n\tif ( OO.isPlainObject( message ) && config === undefined ) {\n\t\tconfig = message;\n\t\tmessage = config.message;\n\t}\n\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties\n\tthis.message = message instanceof jQuery ? message : String( message );\n\tthis.recoverable = config.recoverable === undefined || !!config.recoverable;\n\tthis.warning = !!config.warning;\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.Error );\n\n/* Methods */\n\n/**\n * Check if the error is recoverable.\n *\n * If the error is recoverable, users are able to try the process again.\n *\n * @return {boolean} Error is recoverable\n */\nOO.ui.Error.prototype.isRecoverable = function () {\n\treturn this.recoverable;\n};\n\n/**\n * Check if the error is a warning.\n *\n * If the error is a warning, the error interface will include a 'Dismiss' and a 'Continue' button.\n *\n * @return {boolean} Error is warning\n */\nOO.ui.Error.prototype.isWarning = function () {\n\treturn this.warning;\n};\n\n/**\n * Get error message as DOM nodes.\n *\n * @return {jQuery} Error message in DOM nodes\n */\nOO.ui.Error.prototype.getMessage = function () {\n\treturn this.message instanceof jQuery ?\n\t\tthis.message.clone() :\n\t\t$( '<div>' ).text( this.message ).contents();\n};\n\n/**\n * Get the error message text.\n *\n * @return {string} Error message\n */\nOO.ui.Error.prototype.getMessageText = function () {\n\treturn this.message instanceof jQuery ? this.message.text() : this.message;\n};\n","/**\n * A Process is a list of steps that are called in sequence. The step can be a number, a jQuery promise,\n * or a function:\n *\n * - **number**: the process will wait for the specified number of milliseconds before proceeding.\n * - **promise**: the process will continue to the next step when the promise is successfully resolved\n *  or stop if the promise is rejected.\n * - **function**: the process will execute the function. The process will stop if the function returns\n *  either a boolean `false` or a promise that is rejected; if the function returns a number, the process\n *  will wait for that number of milliseconds before proceeding.\n *\n * If the process fails, an {@link OO.ui.Error error} is generated. Depending on how the error is\n * configured, users can dismiss the error and try the process again, or not. If a process is stopped,\n * its remaining steps will not be performed.\n *\n * @class\n *\n * @constructor\n * @param {number|jQuery.Promise|Function} step Number of miliseconds to wait before proceeding, promise\n *  that must be resolved before proceeding, or a function to execute. See #createStep for more information. see #createStep for more information\n * @param {Object} [context=null] Execution context of the function. The context is ignored if the step is\n *  a number or promise.\n */\nOO.ui.Process = function ( step, context ) {\n\t// Properties\n\tthis.steps = [];\n\n\t// Initialization\n\tif ( step !== undefined ) {\n\t\tthis.next( step, context );\n\t}\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.Process );\n\n/* Methods */\n\n/**\n * Start the process.\n *\n * @return {jQuery.Promise} Promise that is resolved when all steps have successfully completed.\n *  If any of the steps return a promise that is rejected or a boolean false, this promise is rejected\n *  and any remaining steps are not performed.\n */\nOO.ui.Process.prototype.execute = function () {\n\tvar i, len, promise;\n\n\t/**\n\t * Continue execution.\n\t *\n\t * @ignore\n\t * @param {Array} step A function and the context it should be called in\n\t * @return {Function} Function that continues the process\n\t */\n\tfunction proceed( step ) {\n\t\treturn function () {\n\t\t\t// Execute step in the correct context\n\t\t\tvar deferred,\n\t\t\t\tresult = step.callback.call( step.context );\n\n\t\t\tif ( result === false ) {\n\t\t\t\t// Use rejected promise for boolean false results\n\t\t\t\treturn $.Deferred().reject( [] ).promise();\n\t\t\t}\n\t\t\tif ( typeof result === 'number' ) {\n\t\t\t\tif ( result < 0 ) {\n\t\t\t\t\tthrow new Error( 'Cannot go back in time: flux capacitor is out of service' );\n\t\t\t\t}\n\t\t\t\t// Use a delayed promise for numbers, expecting them to be in milliseconds\n\t\t\t\tdeferred = $.Deferred();\n\t\t\t\tsetTimeout( deferred.resolve, result );\n\t\t\t\treturn deferred.promise();\n\t\t\t}\n\t\t\tif ( result instanceof OO.ui.Error ) {\n\t\t\t\t// Use rejected promise for error\n\t\t\t\treturn $.Deferred().reject( [ result ] ).promise();\n\t\t\t}\n\t\t\tif ( Array.isArray( result ) && result.length && result[ 0 ] instanceof OO.ui.Error ) {\n\t\t\t\t// Use rejected promise for list of errors\n\t\t\t\treturn $.Deferred().reject( result ).promise();\n\t\t\t}\n\t\t\t// Duck-type the object to see if it can produce a promise\n\t\t\tif ( result && $.isFunction( result.promise ) ) {\n\t\t\t\t// Use a promise generated from the result\n\t\t\t\treturn result.promise();\n\t\t\t}\n\t\t\t// Use resolved promise for other results\n\t\t\treturn $.Deferred().resolve().promise();\n\t\t};\n\t}\n\n\tif ( this.steps.length ) {\n\t\t// Generate a chain reaction of promises\n\t\tpromise = proceed( this.steps[ 0 ] )();\n\t\tfor ( i = 1, len = this.steps.length; i < len; i++ ) {\n\t\t\tpromise = promise.then( proceed( this.steps[ i ] ) );\n\t\t}\n\t} else {\n\t\tpromise = $.Deferred().resolve().promise();\n\t}\n\n\treturn promise;\n};\n\n/**\n * Create a process step.\n *\n * @private\n * @param {number|jQuery.Promise|Function} step\n *\n * - Number of milliseconds to wait before proceeding\n * - Promise that must be resolved before proceeding\n * - Function to execute\n *   - If the function returns a boolean false the process will stop\n *   - If the function returns a promise, the process will continue to the next\n *     step when the promise is resolved or stop if the promise is rejected\n *   - If the function returns a number, the process will wait for that number of\n *     milliseconds before proceeding\n * @param {Object} [context=null] Execution context of the function. The context is\n *  ignored if the step is a number or promise.\n * @return {Object} Step object, with `callback` and `context` properties\n */\nOO.ui.Process.prototype.createStep = function ( step, context ) {\n\tif ( typeof step === 'number' || $.isFunction( step.promise ) ) {\n\t\treturn {\n\t\t\tcallback: function () {\n\t\t\t\treturn step;\n\t\t\t},\n\t\t\tcontext: null\n\t\t};\n\t}\n\tif ( $.isFunction( step ) ) {\n\t\treturn {\n\t\t\tcallback: step,\n\t\t\tcontext: context\n\t\t};\n\t}\n\tthrow new Error( 'Cannot create process step: number, promise or function expected' );\n};\n\n/**\n * Add step to the beginning of the process.\n *\n * @inheritdoc #createStep\n * @return {OO.ui.Process} this\n * @chainable\n */\nOO.ui.Process.prototype.first = function ( step, context ) {\n\tthis.steps.unshift( this.createStep( step, context ) );\n\treturn this;\n};\n\n/**\n * Add step to the end of the process.\n *\n * @inheritdoc #createStep\n * @return {OO.ui.Process} this\n * @chainable\n */\nOO.ui.Process.prototype.next = function ( step, context ) {\n\tthis.steps.push( this.createStep( step, context ) );\n\treturn this;\n};\n","/**\n * A window instance represents the life cycle for one single opening of a window\n * until its closing.\n *\n * While OO.ui.WindowManager will reuse OO.ui.Window objects, each time a window is\n * opened, a new lifecycle starts.\n *\n * For more information, please see the [OOjs UI documentation on MediaWiki] [1].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Windows\n *\n * @class\n *\n * @constructor\n */\nOO.ui.WindowInstance = function OOuiWindowInstance() {\n\tvar deferreds = {\n\t\topening: $.Deferred(),\n\t\topened: $.Deferred(),\n\t\tclosing: $.Deferred(),\n\t\tclosed: $.Deferred()\n\t};\n\n\t/**\n\t * @private\n\t * @property {Object}\n\t */\n\tthis.deferreds = deferreds;\n\n\t// Set these up as chained promises so that rejecting of\n\t// an earlier stage automatically rejects the subsequent\n\t// would-be stages as well.\n\n\t/**\n\t * @property {jQuery.Promise}\n\t */\n\tthis.opening = deferreds.opening.promise();\n\t/**\n\t * @property {jQuery.Promise}\n\t */\n\tthis.opened = this.opening.then( function () {\n\t\treturn deferreds.opened;\n\t} );\n\t/**\n\t * @property {jQuery.Promise}\n\t */\n\tthis.closing = this.opened.then( function () {\n\t\treturn deferreds.closing;\n\t} );\n\t/**\n\t * @property {jQuery.Promise}\n\t */\n\tthis.closed = this.closing.then( function () {\n\t\treturn deferreds.closed;\n\t} );\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.WindowInstance );\n","/**\n * Window managers are used to open and close {@link OO.ui.Window windows} and control their presentation.\n * Managed windows are mutually exclusive. If a new window is opened while a current window is opening\n * or is opened, the current window will be closed and any ongoing {@link OO.ui.Process process} will be cancelled. Windows\n * themselves are persistent and—rather than being torn down when closed—can be repopulated with the\n * pertinent data and reused.\n *\n * Over the lifecycle of a window, the window manager makes available three promises: `opening`,\n * `opened`, and `closing`, which represent the primary stages of the cycle:\n *\n * **Opening**: the opening stage begins when the window manager’s #openWindow or a window’s\n * {@link OO.ui.Window#open open} method is used, and the window manager begins to open the window.\n *\n * - an `opening` event is emitted with an `opening` promise\n * - the #getSetupDelay method is called and the returned value is used to time a pause in execution before the\n *   window’s {@link OO.ui.Window#method-setup setup} method is called which executes OO.ui.Window#getSetupProcess.\n * - a `setup` progress notification is emitted from the `opening` promise\n * - the #getReadyDelay method is called the returned value is used to time a pause in execution before the\n *   window’s {@link OO.ui.Window#method-ready ready} method is called which executes OO.ui.Window#getReadyProcess.\n * - a `ready` progress notification is emitted from the `opening` promise\n * - the `opening` promise is resolved with an `opened` promise\n *\n * **Opened**: the window is now open.\n *\n * **Closing**: the closing stage begins when the window manager's #closeWindow or the\n * window's {@link OO.ui.Window#close close} methods is used, and the window manager begins\n * to close the window.\n *\n * - the `opened` promise is resolved with `closing` promise and a `closing` event is emitted\n * - the #getHoldDelay method is called and the returned value is used to time a pause in execution before\n *   the window's {@link OO.ui.Window#getHoldProcess getHoldProces} method is called on the\n *   window and its result executed\n * - a `hold` progress notification is emitted from the `closing` promise\n * - the #getTeardownDelay() method is called and the returned value is used to time a pause in execution before\n *   the window's {@link OO.ui.Window#getTeardownProcess getTeardownProcess} method is called on the\n *   window and its result executed\n * - a `teardown` progress notification is emitted from the `closing` promise\n * - the `closing` promise is resolved. The window is now closed\n *\n * See the [OOjs UI documentation on MediaWiki][1] for more information.\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Windows/Window_managers\n *\n * @class\n * @extends OO.ui.Element\n * @mixins OO.EventEmitter\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {OO.Factory} [factory] Window factory to use for automatic instantiation\n *  Note that window classes that are instantiated with a factory must have\n *  a {@link OO.ui.Dialog#static-name static name} property that specifies a symbolic name.\n * @cfg {boolean} [modal=true] Prevent interaction outside the dialog\n */\nOO.ui.WindowManager = function OoUiWindowManager( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.WindowManager.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.EventEmitter.call( this );\n\n\t// Properties\n\tthis.factory = config.factory;\n\tthis.modal = config.modal === undefined || !!config.modal;\n\tthis.windows = {};\n\t// Deprecated placeholder promise given to compatOpening in openWindow()\n\t// that is resolved in closeWindow().\n\tthis.compatOpened = null;\n\tthis.preparingToOpen = null;\n\tthis.preparingToClose = null;\n\tthis.currentWindow = null;\n\tthis.globalEvents = false;\n\tthis.$returnFocusTo = null;\n\tthis.$ariaHidden = null;\n\tthis.onWindowResizeTimeout = null;\n\tthis.onWindowResizeHandler = this.onWindowResize.bind( this );\n\tthis.afterWindowResizeHandler = this.afterWindowResize.bind( this );\n\n\t// Initialization\n\tthis.$element\n\t\t.addClass( 'oo-ui-windowManager' )\n\t\t.toggleClass( 'oo-ui-windowManager-modal', this.modal );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.WindowManager, OO.ui.Element );\nOO.mixinClass( OO.ui.WindowManager, OO.EventEmitter );\n\n/* Events */\n\n/**\n * An 'opening' event is emitted when the window begins to be opened.\n *\n * @event opening\n * @param {OO.ui.Window} win Window that's being opened\n * @param {jQuery.Promise} opened A promise resolved with a value when the window is opened successfully.\n *  This promise also emits `setup` and `ready` notifications. When this promise is resolved, the first\n *  argument of the value is an 'closed' promise, the second argument is the opening data.\n * @param {Object} data Window opening data\n */\n\n/**\n * A 'closing' event is emitted when the window begins to be closed.\n *\n * @event closing\n * @param {OO.ui.Window} win Window that's being closed\n * @param {jQuery.Promise} closed A promise resolved with a value when the window is closed successfully.\n *  This promise also emits `hold` and `teardown` notifications. When this promise is resolved, the first\n *  argument of its value is the closing data.\n * @param {Object} data Window closing data\n */\n\n/**\n * A 'resize' event is emitted when a window is resized.\n *\n * @event resize\n * @param {OO.ui.Window} win Window that was resized\n */\n\n/* Static Properties */\n\n/**\n * Map of the symbolic name of each window size and its CSS properties.\n *\n * @static\n * @inheritable\n * @property {Object}\n */\nOO.ui.WindowManager.static.sizes = {\n\tsmall: {\n\t\twidth: 300\n\t},\n\tmedium: {\n\t\twidth: 500\n\t},\n\tlarge: {\n\t\twidth: 700\n\t},\n\tlarger: {\n\t\twidth: 900\n\t},\n\tfull: {\n\t\t// These can be non-numeric because they are never used in calculations\n\t\twidth: '100%',\n\t\theight: '100%'\n\t}\n};\n\n/**\n * Symbolic name of the default window size.\n *\n * The default size is used if the window's requested size is not recognized.\n *\n * @static\n * @inheritable\n * @property {string}\n */\nOO.ui.WindowManager.static.defaultSize = 'medium';\n\n/* Methods */\n\n/**\n * Handle window resize events.\n *\n * @private\n * @param {jQuery.Event} e Window resize event\n */\nOO.ui.WindowManager.prototype.onWindowResize = function () {\n\tclearTimeout( this.onWindowResizeTimeout );\n\tthis.onWindowResizeTimeout = setTimeout( this.afterWindowResizeHandler, 200 );\n};\n\n/**\n * Handle window resize events.\n *\n * @private\n * @param {jQuery.Event} e Window resize event\n */\nOO.ui.WindowManager.prototype.afterWindowResize = function () {\n\tif ( this.currentWindow ) {\n\t\tthis.updateWindowSize( this.currentWindow );\n\t}\n};\n\n/**\n * Check if window is opening.\n *\n * @param {OO.ui.Window} win Window to check\n * @return {boolean} Window is opening\n */\nOO.ui.WindowManager.prototype.isOpening = function ( win ) {\n\treturn win === this.currentWindow && !!this.lifecycle &&\n\t\tthis.lifecycle.opened.state() === 'pending';\n};\n\n/**\n * Check if window is closing.\n *\n * @param {OO.ui.Window} win Window to check\n * @return {boolean} Window is closing\n */\nOO.ui.WindowManager.prototype.isClosing = function ( win ) {\n\treturn win === this.currentWindow && !!this.lifecycle &&\n\t\tthis.lifecycle.closing.state() === 'resolved' &&\n\t\tthis.lifecycle.closed.state() === 'pending';\n};\n\n/**\n * Check if window is opened.\n *\n * @param {OO.ui.Window} win Window to check\n * @return {boolean} Window is opened\n */\nOO.ui.WindowManager.prototype.isOpened = function ( win ) {\n\treturn win === this.currentWindow && !!this.lifecycle &&\n\t\tthis.lifecycle.opened.state() === 'resolved' &&\n\t\tthis.lifecycle.closing.state() === 'pending';\n};\n\n/**\n * Check if a window is being managed.\n *\n * @param {OO.ui.Window} win Window to check\n * @return {boolean} Window is being managed\n */\nOO.ui.WindowManager.prototype.hasWindow = function ( win ) {\n\tvar name;\n\n\tfor ( name in this.windows ) {\n\t\tif ( this.windows[ name ] === win ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\n/**\n * Get the number of milliseconds to wait after opening begins before executing the ‘setup’ process.\n *\n * @param {OO.ui.Window} win Window being opened\n * @param {Object} [data] Window opening data\n * @return {number} Milliseconds to wait\n */\nOO.ui.WindowManager.prototype.getSetupDelay = function () {\n\treturn 0;\n};\n\n/**\n * Get the number of milliseconds to wait after setup has finished before executing the ‘ready’ process.\n *\n * @param {OO.ui.Window} win Window being opened\n * @param {Object} [data] Window opening data\n * @return {number} Milliseconds to wait\n */\nOO.ui.WindowManager.prototype.getReadyDelay = function () {\n\treturn 0;\n};\n\n/**\n * Get the number of milliseconds to wait after closing has begun before executing the 'hold' process.\n *\n * @param {OO.ui.Window} win Window being closed\n * @param {Object} [data] Window closing data\n * @return {number} Milliseconds to wait\n */\nOO.ui.WindowManager.prototype.getHoldDelay = function () {\n\treturn 0;\n};\n\n/**\n * Get the number of milliseconds to wait after the ‘hold’ process has finished before\n * executing the ‘teardown’ process.\n *\n * @param {OO.ui.Window} win Window being closed\n * @param {Object} [data] Window closing data\n * @return {number} Milliseconds to wait\n */\nOO.ui.WindowManager.prototype.getTeardownDelay = function () {\n\treturn this.modal ? 250 : 0;\n};\n\n/**\n * Get a window by its symbolic name.\n *\n * If the window is not yet instantiated and its symbolic name is recognized by a factory, it will be\n * instantiated and added to the window manager automatically. Please see the [OOjs UI documentation on MediaWiki][3]\n * for more information about using factories.\n * [3]: https://www.mediawiki.org/wiki/OOjs_UI/Windows/Window_managers\n *\n * @param {string} name Symbolic name of the window\n * @return {jQuery.Promise} Promise resolved with matching window, or rejected with an OO.ui.Error\n * @throws {Error} An error is thrown if the symbolic name is not recognized by the factory.\n * @throws {Error} An error is thrown if the named window is not recognized as a managed window.\n */\nOO.ui.WindowManager.prototype.getWindow = function ( name ) {\n\tvar deferred = $.Deferred(),\n\t\twin = this.windows[ name ];\n\n\tif ( !( win instanceof OO.ui.Window ) ) {\n\t\tif ( this.factory ) {\n\t\t\tif ( !this.factory.lookup( name ) ) {\n\t\t\t\tdeferred.reject( new OO.ui.Error(\n\t\t\t\t\t'Cannot auto-instantiate window: symbolic name is unrecognized by the factory'\n\t\t\t\t) );\n\t\t\t} else {\n\t\t\t\twin = this.factory.create( name );\n\t\t\t\tthis.addWindows( [ win ] );\n\t\t\t\tdeferred.resolve( win );\n\t\t\t}\n\t\t} else {\n\t\t\tdeferred.reject( new OO.ui.Error(\n\t\t\t\t'Cannot get unmanaged window: symbolic name unrecognized as a managed window'\n\t\t\t) );\n\t\t}\n\t} else {\n\t\tdeferred.resolve( win );\n\t}\n\n\treturn deferred.promise();\n};\n\n/**\n * Get current window.\n *\n * @return {OO.ui.Window|null} Currently opening/opened/closing window\n */\nOO.ui.WindowManager.prototype.getCurrentWindow = function () {\n\treturn this.currentWindow;\n};\n\n/**\n * Open a window.\n *\n * @param {OO.ui.Window|string} win Window object or symbolic name of window to open\n * @param {Object} [data] Window opening data\n * @param {jQuery|null} [data.$returnFocusTo] Element to which the window will return focus when closed.\n *  Defaults the current activeElement. If set to null, focus isn't changed on close.\n * @return {OO.ui.WindowInstance|jQuery.Promise} A lifecycle object representing this particular\n *  opening of the window. For backwards-compatibility, then object is also a Thenable that is resolved\n *  when the window is done opening, with nested promise for when closing starts. This behaviour\n *  is deprecated and is not compatible with jQuery 3 (T163510).\n * @fires opening\n */\nOO.ui.WindowManager.prototype.openWindow = function ( win, data, lifecycle, compatOpening ) {\n\tvar manager = this;\n\tdata = data || {};\n\n\t// Internal parameter 'lifecycle' allows this method to always return\n\t// a lifecycle even if the window still needs to be created\n\t// asynchronously when 'win' is a string.\n\tlifecycle = lifecycle || new OO.ui.WindowInstance();\n\tcompatOpening = compatOpening || $.Deferred();\n\n\t// Turn lifecycle into a Thenable for backwards-compatibility with\n\t// the deprecated nested-promise behaviour (T163510).\n\t[ 'state', 'always', 'catch', 'pipe', 'then', 'promise', 'progress', 'done', 'fail' ]\n\t\t.forEach( function ( method ) {\n\t\t\tlifecycle[ method ] = function () {\n\t\t\t\tOO.ui.warnDeprecation(\n\t\t\t\t\t'Using the return value of openWindow as a promise is deprecated. ' +\n\t\t\t\t\t'Use .openWindow( ... ).opening.' + method + '( ... ) instead.'\n\t\t\t\t);\n\t\t\t\treturn compatOpening[ method ].apply( this, arguments );\n\t\t\t};\n\t\t} );\n\n\t// Argument handling\n\tif ( typeof win === 'string' ) {\n\t\tthis.getWindow( win ).then(\n\t\t\tfunction ( win ) {\n\t\t\t\tmanager.openWindow( win, data, lifecycle, compatOpening );\n\t\t\t},\n\t\t\tfunction ( err ) {\n\t\t\t\tlifecycle.deferreds.opening.reject( err );\n\t\t\t}\n\t\t);\n\t\treturn lifecycle;\n\t}\n\n\t// Error handling\n\tif ( !this.hasWindow( win ) ) {\n\t\tcompatOpening.reject( new OO.ui.Error(\n\t\t\t'Cannot open window: window is not attached to manager'\n\t\t) );\n\t\tlifecycle.deferreds.opening.reject( new OO.ui.Error(\n\t\t\t'Cannot open window: window is not attached to manager'\n\t\t) );\n\t\treturn lifecycle;\n\t}\n\tif ( this.preparingToOpen || ( this.lifecycle && this.lifecycle.closing.state() !== 'resolved' ) ) {\n\t\tcompatOpening.reject( new OO.ui.Error(\n\t\t\t'Cannot open window: another window is opening or open'\n\t\t) );\n\t\tlifecycle.deferreds.opening.reject( new OO.ui.Error(\n\t\t\t'Cannot open window: another window is opening or open'\n\t\t) );\n\t\treturn lifecycle;\n\t}\n\n\t// If a window is currently closing, wait for it to complete\n\tthis.preparingToOpen = $.when( this.lifecycle && this.lifecycle.closed );\n\t// Ensure handlers get called after preparingToOpen is set\n\tthis.preparingToOpen.done( function () {\n\t\tif ( manager.modal ) {\n\t\t\tmanager.toggleGlobalEvents( true );\n\t\t\tmanager.toggleAriaIsolation( true );\n\t\t}\n\t\tmanager.$returnFocusTo = data.$returnFocusTo !== undefined ? data.$returnFocusTo : $( document.activeElement );\n\t\tmanager.currentWindow = win;\n\t\tmanager.lifecycle = lifecycle;\n\t\tmanager.preparingToOpen = null;\n\t\tmanager.emit( 'opening', win, compatOpening, data );\n\t\tlifecycle.deferreds.opening.resolve( data );\n\t\tsetTimeout( function () {\n\t\t\tmanager.compatOpened = $.Deferred();\n\t\t\twin.setup( data ).then( function () {\n\t\t\t\tmanager.updateWindowSize( win );\n\t\t\t\tcompatOpening.notify( { state: 'setup' } );\n\t\t\t\tsetTimeout( function () {\n\t\t\t\t\twin.ready( data ).then( function () {\n\t\t\t\t\t\tcompatOpening.notify( { state: 'ready' } );\n\t\t\t\t\t\tlifecycle.deferreds.opened.resolve( data );\n\t\t\t\t\t\tcompatOpening.resolve( manager.compatOpened.promise(), data );\n\t\t\t\t\t}, function () {\n\t\t\t\t\t\tlifecycle.deferreds.opened.reject();\n\t\t\t\t\t\tcompatOpening.reject();\n\t\t\t\t\t\tmanager.closeWindow( win );\n\t\t\t\t\t} );\n\t\t\t\t}, manager.getReadyDelay() );\n\t\t\t}, function () {\n\t\t\t\tlifecycle.deferreds.opened.reject();\n\t\t\t\tcompatOpening.reject();\n\t\t\t\tmanager.closeWindow( win );\n\t\t\t} );\n\t\t}, manager.getSetupDelay() );\n\t} );\n\n\treturn lifecycle;\n};\n\n/**\n * Close a window.\n *\n * @param {OO.ui.Window|string} win Window object or symbolic name of window to close\n * @param {Object} [data] Window closing data\n * @return {OO.ui.WindowInstance|jQuery.Promise} A lifecycle object representing this particular\n *  opening of the window. For backwards-compatibility, the object is also a Thenable that is resolved\n *  when the window is done closing (T163510).\n * @fires closing\n */\nOO.ui.WindowManager.prototype.closeWindow = function ( win, data ) {\n\tvar error,\n\t\tmanager = this,\n\t\tcompatClosing = $.Deferred(),\n\t\tlifecycle = this.lifecycle,\n\t\tcompatOpened;\n\n\t// Argument handling\n\tif ( typeof win === 'string' ) {\n\t\twin = this.windows[ win ];\n\t} else if ( !this.hasWindow( win ) ) {\n\t\twin = null;\n\t}\n\n\t// Error handling\n\tif ( !lifecycle ) {\n\t\terror = 'Cannot close window: no window is currently open';\n\t} else if ( !win ) {\n\t\terror = 'Cannot close window: window is not attached to manager';\n\t} else if ( win !== this.currentWindow ) {\n\t\terror = 'Cannot close window: window already closed with different data';\n\t} else if ( this.preparingToClose || lifecycle.closing.state() === 'resolved' ) {\n\t\terror = 'Cannot close window: window already closing with different data';\n\t}\n\n\tif ( error ) {\n\t\t// This function was called for the wrong window and we don't want to mess with the current\n\t\t// window's state.\n\t\tlifecycle = new OO.ui.WindowInstance();\n\t\t// Pretend the window has been opened, so that we can pretend to fail to close it.\n\t\tlifecycle.deferreds.opening.resolve( {} );\n\t\tlifecycle.deferreds.opened.resolve( {} );\n\t}\n\n\t// Turn lifecycle into a Thenable for backwards-compatibility with\n\t// the deprecated nested-promise behaviour (T163510).\n\t[ 'state', 'always', 'catch', 'pipe', 'then', 'promise', 'progress', 'done', 'fail' ]\n\t\t.forEach( function ( method ) {\n\t\t\tlifecycle[ method ] = function () {\n\t\t\t\tOO.ui.warnDeprecation(\n\t\t\t\t\t'Using the return value of closeWindow as a promise is deprecated. ' +\n\t\t\t\t\t'Use .closeWindow( ... ).closed.' + method + '( ... ) instead.'\n\t\t\t\t);\n\t\t\t\treturn compatClosing[ method ].apply( this, arguments );\n\t\t\t};\n\t\t} );\n\n\tif ( error ) {\n\t\tcompatClosing.reject( new OO.ui.Error( error ) );\n\t\tlifecycle.deferreds.closing.reject( new OO.ui.Error( error ) );\n\t\treturn lifecycle;\n\t}\n\n\t// If the window is currently opening, close it when it's done\n\tthis.preparingToClose = $.when( this.lifecycle.opened );\n\t// Ensure handlers get called after preparingToClose is set\n\tthis.preparingToClose.always( function () {\n\t\tmanager.preparingToClose = null;\n\t\tmanager.emit( 'closing', win, compatClosing, data );\n\t\tlifecycle.deferreds.closing.resolve( data );\n\t\tcompatOpened = manager.compatOpened;\n\t\tmanager.compatOpened = null;\n\t\tcompatOpened.resolve( compatClosing.promise(), data );\n\t\tsetTimeout( function () {\n\t\t\twin.hold( data ).then( function () {\n\t\t\t\tcompatClosing.notify( { state: 'hold' } );\n\t\t\t\tsetTimeout( function () {\n\t\t\t\t\twin.teardown( data ).then( function () {\n\t\t\t\t\t\tcompatClosing.notify( { state: 'teardown' } );\n\t\t\t\t\t\tif ( manager.modal ) {\n\t\t\t\t\t\t\tmanager.toggleGlobalEvents( false );\n\t\t\t\t\t\t\tmanager.toggleAriaIsolation( false );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( manager.$returnFocusTo && manager.$returnFocusTo.length ) {\n\t\t\t\t\t\t\tmanager.$returnFocusTo[ 0 ].focus();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmanager.currentWindow = null;\n\t\t\t\t\t\tmanager.lifecycle = null;\n\t\t\t\t\t\tlifecycle.deferreds.closed.resolve( data );\n\t\t\t\t\t\tcompatClosing.resolve( data );\n\t\t\t\t\t} );\n\t\t\t\t}, manager.getTeardownDelay() );\n\t\t\t} );\n\t\t}, manager.getHoldDelay() );\n\t} );\n\n\treturn lifecycle;\n};\n\n/**\n * Add windows to the window manager.\n *\n * Windows can be added by reference, symbolic name, or explicitly defined symbolic names.\n * See the [OOjs ui documentation on MediaWiki] [2] for examples.\n * [2]: https://www.mediawiki.org/wiki/OOjs_UI/Windows/Window_managers\n *\n * This function can be called in two manners:\n *\n * 1. `.addWindows( [ windowA, windowB, ... ] )` (where `windowA`, `windowB` are OO.ui.Window objects)\n *\n *    This syntax registers windows under the symbolic names defined in their `.static.name`\n *    properties. For example, if `windowA.constructor.static.name` is `'nameA'`, calling\n *    `.openWindow( 'nameA' )` afterwards will open the window `windowA`. This syntax requires the\n *    static name to be set, otherwise an exception will be thrown.\n *\n *    This is the recommended way, as it allows for an easier switch to using a window factory.\n *\n * 2. `.addWindows( { nameA: windowA, nameB: windowB, ... } )`\n *\n *    This syntax registers windows under the explicitly given symbolic names. In this example,\n *    calling `.openWindow( 'nameA' )` afterwards will open the window `windowA`, regardless of what\n *    its `.static.name` is set to. The static name is not required to be set.\n *\n *    This should only be used if you need to override the default symbolic names.\n *\n * Example:\n *\n *     var windowManager = new OO.ui.WindowManager();\n *     $( 'body' ).append( windowManager.$element );\n *\n *     // Add a window under the default name: see OO.ui.MessageDialog.static.name\n *     windowManager.addWindows( [ new OO.ui.MessageDialog() ] );\n *     // Add a window under an explicit name\n *     windowManager.addWindows( { myMessageDialog: new OO.ui.MessageDialog() } );\n *\n *     // Open window by default name\n *     windowManager.openWindow( 'message' );\n *     // Open window by explicitly given name\n *     windowManager.openWindow( 'myMessageDialog' );\n *\n *\n * @param {Object.<string,OO.ui.Window>|OO.ui.Window[]} windows An array of window objects specified\n *  by reference, symbolic name, or explicitly defined symbolic names.\n * @throws {Error} An error is thrown if a window is added by symbolic name, but has neither an\n *  explicit nor a statically configured symbolic name.\n */\nOO.ui.WindowManager.prototype.addWindows = function ( windows ) {\n\tvar i, len, win, name, list;\n\n\tif ( Array.isArray( windows ) ) {\n\t\t// Convert to map of windows by looking up symbolic names from static configuration\n\t\tlist = {};\n\t\tfor ( i = 0, len = windows.length; i < len; i++ ) {\n\t\t\tname = windows[ i ].constructor.static.name;\n\t\t\tif ( !name ) {\n\t\t\t\tthrow new Error( 'Windows must have a `name` static property defined.' );\n\t\t\t}\n\t\t\tlist[ name ] = windows[ i ];\n\t\t}\n\t} else if ( OO.isPlainObject( windows ) ) {\n\t\tlist = windows;\n\t}\n\n\t// Add windows\n\tfor ( name in list ) {\n\t\twin = list[ name ];\n\t\tthis.windows[ name ] = win.toggle( false );\n\t\tthis.$element.append( win.$element );\n\t\twin.setManager( this );\n\t}\n};\n\n/**\n * Remove the specified windows from the windows manager.\n *\n * Windows will be closed before they are removed. If you wish to remove all windows, you may wish to use\n * the #clearWindows method instead. If you no longer need the window manager and want to ensure that it no\n * longer listens to events, use the #destroy method.\n *\n * @param {string[]} names Symbolic names of windows to remove\n * @return {jQuery.Promise} Promise resolved when window is closed and removed\n * @throws {Error} An error is thrown if the named windows are not managed by the window manager.\n */\nOO.ui.WindowManager.prototype.removeWindows = function ( names ) {\n\tvar i, len, win, name, cleanupWindow,\n\t\tmanager = this,\n\t\tpromises = [],\n\t\tcleanup = function ( name, win ) {\n\t\t\tdelete manager.windows[ name ];\n\t\t\twin.$element.detach();\n\t\t};\n\n\tfor ( i = 0, len = names.length; i < len; i++ ) {\n\t\tname = names[ i ];\n\t\twin = this.windows[ name ];\n\t\tif ( !win ) {\n\t\t\tthrow new Error( 'Cannot remove window' );\n\t\t}\n\t\tcleanupWindow = cleanup.bind( null, name, win );\n\t\tpromises.push( this.closeWindow( name ).closed.then( cleanupWindow, cleanupWindow ) );\n\t}\n\n\treturn $.when.apply( $, promises );\n};\n\n/**\n * Remove all windows from the window manager.\n *\n * Windows will be closed before they are removed. Note that the window manager, though not in use, will still\n * listen to events. If the window manager will not be used again, you may wish to use the #destroy method instead.\n * To remove just a subset of windows, use the #removeWindows method.\n *\n * @return {jQuery.Promise} Promise resolved when all windows are closed and removed\n */\nOO.ui.WindowManager.prototype.clearWindows = function () {\n\treturn this.removeWindows( Object.keys( this.windows ) );\n};\n\n/**\n * Set dialog size. In general, this method should not be called directly.\n *\n * Fullscreen mode will be used if the dialog is too wide to fit in the screen.\n *\n * @param {OO.ui.Window} win Window to update, should be the current window\n * @chainable\n */\nOO.ui.WindowManager.prototype.updateWindowSize = function ( win ) {\n\tvar isFullscreen;\n\n\t// Bypass for non-current, and thus invisible, windows\n\tif ( win !== this.currentWindow ) {\n\t\treturn;\n\t}\n\n\tisFullscreen = win.getSize() === 'full';\n\n\tthis.$element.toggleClass( 'oo-ui-windowManager-fullscreen', isFullscreen );\n\tthis.$element.toggleClass( 'oo-ui-windowManager-floating', !isFullscreen );\n\twin.setDimensions( win.getSizeProperties() );\n\n\tthis.emit( 'resize', win );\n\n\treturn this;\n};\n\n/**\n * Bind or unbind global events for scrolling.\n *\n * @private\n * @param {boolean} [on] Bind global events\n * @chainable\n */\nOO.ui.WindowManager.prototype.toggleGlobalEvents = function ( on ) {\n\tvar scrollWidth, bodyMargin,\n\t\t$body = $( this.getElementDocument().body ),\n\t\t// We could have multiple window managers open so only modify\n\t\t// the body css at the bottom of the stack\n\t\tstackDepth = $body.data( 'windowManagerGlobalEvents' ) || 0;\n\n\ton = on === undefined ? !!this.globalEvents : !!on;\n\n\tif ( on ) {\n\t\tif ( !this.globalEvents ) {\n\t\t\t$( this.getElementWindow() ).on( {\n\t\t\t\t// Start listening for top-level window dimension changes\n\t\t\t\t'orientationchange resize': this.onWindowResizeHandler\n\t\t\t} );\n\t\t\tif ( stackDepth === 0 ) {\n\t\t\t\tscrollWidth = window.innerWidth - document.documentElement.clientWidth;\n\t\t\t\tbodyMargin = parseFloat( $body.css( 'margin-right' ) ) || 0;\n\t\t\t\t$body.css( {\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t'margin-right': bodyMargin + scrollWidth\n\t\t\t\t} );\n\t\t\t}\n\t\t\tstackDepth++;\n\t\t\tthis.globalEvents = true;\n\t\t}\n\t} else if ( this.globalEvents ) {\n\t\t$( this.getElementWindow() ).off( {\n\t\t\t// Stop listening for top-level window dimension changes\n\t\t\t'orientationchange resize': this.onWindowResizeHandler\n\t\t} );\n\t\tstackDepth--;\n\t\tif ( stackDepth === 0 ) {\n\t\t\t$body.css( {\n\t\t\t\toverflow: '',\n\t\t\t\t'margin-right': ''\n\t\t\t} );\n\t\t}\n\t\tthis.globalEvents = false;\n\t}\n\t$body.data( 'windowManagerGlobalEvents', stackDepth );\n\n\treturn this;\n};\n\n/**\n * Toggle screen reader visibility of content other than the window manager.\n *\n * @private\n * @param {boolean} [isolate] Make only the window manager visible to screen readers\n * @chainable\n */\nOO.ui.WindowManager.prototype.toggleAriaIsolation = function ( isolate ) {\n\tisolate = isolate === undefined ? !this.$ariaHidden : !!isolate;\n\n\tif ( isolate ) {\n\t\tif ( !this.$ariaHidden ) {\n\t\t\t// Hide everything other than the window manager from screen readers\n\t\t\tthis.$ariaHidden = $( 'body' )\n\t\t\t\t.children()\n\t\t\t\t.not( this.$element.parentsUntil( 'body' ).last() )\n\t\t\t\t.attr( 'aria-hidden', '' );\n\t\t}\n\t} else if ( this.$ariaHidden ) {\n\t\t// Restore screen reader visibility\n\t\tthis.$ariaHidden.removeAttr( 'aria-hidden' );\n\t\tthis.$ariaHidden = null;\n\t}\n\n\treturn this;\n};\n\n/**\n * Destroy the window manager.\n *\n * Destroying the window manager ensures that it will no longer listen to events. If you would like to\n * continue using the window manager, but wish to remove all windows from it, use the #clearWindows method\n * instead.\n */\nOO.ui.WindowManager.prototype.destroy = function () {\n\tthis.toggleGlobalEvents( false );\n\tthis.toggleAriaIsolation( false );\n\tthis.clearWindows();\n\tthis.$element.remove();\n};\n","/**\n * A window is a container for elements that are in a child frame. They are used with\n * a window manager (OO.ui.WindowManager), which is used to open and close the window and control\n * its presentation. The size of a window is specified using a symbolic name (e.g., ‘small’, ‘medium’,\n * ‘large’), which is interpreted by the window manager. If the requested size is not recognized,\n * the window manager will choose a sensible fallback.\n *\n * The lifecycle of a window has three primary stages (opening, opened, and closing) in which\n * different processes are executed:\n *\n * **opening**: The opening stage begins when the window manager's {@link OO.ui.WindowManager#openWindow\n * openWindow} or the window's {@link #open open} methods are used, and the window manager begins to open\n * the window.\n *\n * - {@link #getSetupProcess} method is called and its result executed\n * - {@link #getReadyProcess} method is called and its result executed\n *\n * **opened**: The window is now open\n *\n * **closing**: The closing stage begins when the window manager's\n * {@link OO.ui.WindowManager#closeWindow closeWindow}\n * or the window's {@link #close} methods are used, and the window manager begins to close the window.\n *\n * - {@link #getHoldProcess} method is called and its result executed\n * - {@link #getTeardownProcess} method is called and its result executed. The window is now closed\n *\n * Each of the window's processes (setup, ready, hold, and teardown) can be extended in subclasses\n * by overriding the window's #getSetupProcess, #getReadyProcess, #getHoldProcess and #getTeardownProcess\n * methods. Note that each {@link OO.ui.Process process} is executed in series, so asynchronous\n * processing can complete. Always assume window processes are executed asynchronously.\n *\n * For more information, please see the [OOjs UI documentation on MediaWiki] [1].\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Windows\n *\n * @abstract\n * @class\n * @extends OO.ui.Element\n * @mixins OO.EventEmitter\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {string} [size] Symbolic name of the dialog size: `small`, `medium`, `large`, `larger` or\n *  `full`.  If omitted, the value of the {@link #static-size static size} property will be used.\n */\nOO.ui.Window = function OoUiWindow( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.Window.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.EventEmitter.call( this );\n\n\t// Properties\n\tthis.manager = null;\n\tthis.size = config.size || this.constructor.static.size;\n\tthis.$frame = $( '<div>' );\n\t/**\n\t * Overlay element to use for the `$overlay` configuration option of widgets that support it.\n\t * Things put inside of it are overlaid on top of the window and are not bound to its dimensions.\n\t * See <https://www.mediawiki.org/wiki/OOjs_UI/Concepts#Overlays>.\n\t *\n\t *     MyDialog.prototype.initialize = function () {\n\t *       ...\n\t *       var popupButton = new OO.ui.PopupButtonWidget( {\n\t *         $overlay: this.$overlay,\n\t *         label: 'Popup button',\n\t *         popup: {\n\t *           $content: $( '<p>Popup contents.</p><p>Popup contents.</p><p>Popup contents.</p>' ),\n\t *           padded: true\n\t *         }\n\t *       } );\n\t *       ...\n\t *     };\n\t *\n\t * @property {jQuery}\n\t */\n\tthis.$overlay = $( '<div>' );\n\tthis.$content = $( '<div>' );\n\n\tthis.$focusTrapBefore = $( '<div>' ).prop( 'tabIndex', 0 );\n\tthis.$focusTrapAfter = $( '<div>' ).prop( 'tabIndex', 0 );\n\tthis.$focusTraps = this.$focusTrapBefore.add( this.$focusTrapAfter );\n\n\t// Initialization\n\tthis.$overlay.addClass( 'oo-ui-window-overlay' );\n\tthis.$content\n\t\t.addClass( 'oo-ui-window-content' )\n\t\t.attr( 'tabindex', 0 );\n\tthis.$frame\n\t\t.addClass( 'oo-ui-window-frame' )\n\t\t.append( this.$focusTrapBefore, this.$content, this.$focusTrapAfter );\n\n\tthis.$element\n\t\t.addClass( 'oo-ui-window' )\n\t\t.append( this.$frame, this.$overlay );\n\n\t// Initially hidden - using #toggle may cause errors if subclasses override toggle with methods\n\t// that reference properties not initialized at that time of parent class construction\n\t// TODO: Find a better way to handle post-constructor setup\n\tthis.visible = false;\n\tthis.$element.addClass( 'oo-ui-element-hidden' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.Window, OO.ui.Element );\nOO.mixinClass( OO.ui.Window, OO.EventEmitter );\n\n/* Static Properties */\n\n/**\n * Symbolic name of the window size: `small`, `medium`, `large`, `larger` or `full`.\n *\n * The static size is used if no #size is configured during construction.\n *\n * @static\n * @inheritable\n * @property {string}\n */\nOO.ui.Window.static.size = 'medium';\n\n/* Methods */\n\n/**\n * Handle mouse down events.\n *\n * @private\n * @param {jQuery.Event} e Mouse down event\n */\nOO.ui.Window.prototype.onMouseDown = function ( e ) {\n\t// Prevent clicking on the click-block from stealing focus\n\tif ( e.target === this.$element[ 0 ] ) {\n\t\treturn false;\n\t}\n};\n\n/**\n * Check if the window has been initialized.\n *\n * Initialization occurs when a window is added to a manager.\n *\n * @return {boolean} Window has been initialized\n */\nOO.ui.Window.prototype.isInitialized = function () {\n\treturn !!this.manager;\n};\n\n/**\n * Check if the window is visible.\n *\n * @return {boolean} Window is visible\n */\nOO.ui.Window.prototype.isVisible = function () {\n\treturn this.visible;\n};\n\n/**\n * Check if the window is opening.\n *\n * This method is a wrapper around the window manager's {@link OO.ui.WindowManager#isOpening isOpening}\n * method.\n *\n * @return {boolean} Window is opening\n */\nOO.ui.Window.prototype.isOpening = function () {\n\treturn this.manager.isOpening( this );\n};\n\n/**\n * Check if the window is closing.\n *\n * This method is a wrapper around the window manager's {@link OO.ui.WindowManager#isClosing isClosing} method.\n *\n * @return {boolean} Window is closing\n */\nOO.ui.Window.prototype.isClosing = function () {\n\treturn this.manager.isClosing( this );\n};\n\n/**\n * Check if the window is opened.\n *\n * This method is a wrapper around the window manager's {@link OO.ui.WindowManager#isOpened isOpened} method.\n *\n * @return {boolean} Window is opened\n */\nOO.ui.Window.prototype.isOpened = function () {\n\treturn this.manager.isOpened( this );\n};\n\n/**\n * Get the window manager.\n *\n * All windows must be attached to a window manager, which is used to open\n * and close the window and control its presentation.\n *\n * @return {OO.ui.WindowManager} Manager of window\n */\nOO.ui.Window.prototype.getManager = function () {\n\treturn this.manager;\n};\n\n/**\n * Get the symbolic name of the window size (e.g., `small` or `medium`).\n *\n * @return {string} Symbolic name of the size: `small`, `medium`, `large`, `larger`, `full`\n */\nOO.ui.Window.prototype.getSize = function () {\n\tvar viewport = OO.ui.Element.static.getDimensions( this.getElementWindow() ),\n\t\tsizes = this.manager.constructor.static.sizes,\n\t\tsize = this.size;\n\n\tif ( !sizes[ size ] ) {\n\t\tsize = this.manager.constructor.static.defaultSize;\n\t}\n\tif ( size !== 'full' && viewport.rect.right - viewport.rect.left < sizes[ size ].width ) {\n\t\tsize = 'full';\n\t}\n\n\treturn size;\n};\n\n/**\n * Get the size properties associated with the current window size\n *\n * @return {Object} Size properties\n */\nOO.ui.Window.prototype.getSizeProperties = function () {\n\treturn this.manager.constructor.static.sizes[ this.getSize() ];\n};\n\n/**\n * Disable transitions on window's frame for the duration of the callback function, then enable them\n * back.\n *\n * @private\n * @param {Function} callback Function to call while transitions are disabled\n */\nOO.ui.Window.prototype.withoutSizeTransitions = function ( callback ) {\n\t// Temporarily resize the frame so getBodyHeight() can use scrollHeight measurements.\n\t// Disable transitions first, otherwise we'll get values from when the window was animating.\n\t// We need to build the transition CSS properties using these specific properties since\n\t// Firefox doesn't return anything useful when asked just for 'transition'.\n\tvar oldTransition = this.$frame.css( 'transition-property' ) + ' ' +\n\t\tthis.$frame.css( 'transition-duration' ) + ' ' +\n\t\tthis.$frame.css( 'transition-timing-function' ) + ' ' +\n\t\tthis.$frame.css( 'transition-delay' );\n\n\tthis.$frame.css( 'transition', 'none' );\n\tcallback();\n\n\t// Force reflow to make sure the style changes done inside callback\n\t// really are not transitioned\n\tthis.$frame.height();\n\tthis.$frame.css( 'transition', oldTransition );\n};\n\n/**\n * Get the height of the full window contents (i.e., the window head, body and foot together).\n *\n * What consistitutes the head, body, and foot varies depending on the window type.\n * A {@link OO.ui.MessageDialog message dialog} displays a title and message in its body,\n * and any actions in the foot. A {@link OO.ui.ProcessDialog process dialog} displays a title\n * and special actions in the head, and dialog content in the body.\n *\n * To get just the height of the dialog body, use the #getBodyHeight method.\n *\n * @return {number} The height of the window contents (the dialog head, body and foot) in pixels\n */\nOO.ui.Window.prototype.getContentHeight = function () {\n\tvar bodyHeight,\n\t\twin = this,\n\t\tbodyStyleObj = this.$body[ 0 ].style,\n\t\tframeStyleObj = this.$frame[ 0 ].style;\n\n\t// Temporarily resize the frame so getBodyHeight() can use scrollHeight measurements.\n\t// Disable transitions first, otherwise we'll get values from when the window was animating.\n\tthis.withoutSizeTransitions( function () {\n\t\tvar oldHeight = frameStyleObj.height,\n\t\t\toldPosition = bodyStyleObj.position;\n\t\tframeStyleObj.height = '1px';\n\t\t// Force body to resize to new width\n\t\tbodyStyleObj.position = 'relative';\n\t\tbodyHeight = win.getBodyHeight();\n\t\tframeStyleObj.height = oldHeight;\n\t\tbodyStyleObj.position = oldPosition;\n\t} );\n\n\treturn (\n\t\t// Add buffer for border\n\t\t( this.$frame.outerHeight() - this.$frame.innerHeight() ) +\n\t\t// Use combined heights of children\n\t\t( this.$head.outerHeight( true ) + bodyHeight + this.$foot.outerHeight( true ) )\n\t);\n};\n\n/**\n * Get the height of the window body.\n *\n * To get the height of the full window contents (the window body, head, and foot together),\n * use #getContentHeight.\n *\n * When this function is called, the window will temporarily have been resized\n * to height=1px, so .scrollHeight measurements can be taken accurately.\n *\n * @return {number} Height of the window body in pixels\n */\nOO.ui.Window.prototype.getBodyHeight = function () {\n\treturn this.$body[ 0 ].scrollHeight;\n};\n\n/**\n * Get the directionality of the frame (right-to-left or left-to-right).\n *\n * @return {string} Directionality: `'ltr'` or `'rtl'`\n */\nOO.ui.Window.prototype.getDir = function () {\n\treturn OO.ui.Element.static.getDir( this.$content ) || 'ltr';\n};\n\n/**\n * Get the 'setup' process.\n *\n * The setup process is used to set up a window for use in a particular context,\n * based on the `data` argument. This method is called during the opening phase of the window’s\n * lifecycle.\n *\n * Override this method to add additional steps to the ‘setup’ process the parent method provides\n * using the {@link OO.ui.Process#first first} and {@link OO.ui.Process#next next} methods\n * of OO.ui.Process.\n *\n * To add window content that persists between openings, you may wish to use the #initialize method\n * instead.\n *\n * @param {Object} [data] Window opening data\n * @return {OO.ui.Process} Setup process\n */\nOO.ui.Window.prototype.getSetupProcess = function () {\n\treturn new OO.ui.Process();\n};\n\n/**\n * Get the ‘ready’ process.\n *\n * The ready process is used to ready a window for use in a particular\n * context, based on the `data` argument. This method is called during the opening phase of\n * the window’s lifecycle, after the window has been {@link #getSetupProcess setup}.\n *\n * Override this method to add additional steps to the ‘ready’ process the parent method\n * provides using the {@link OO.ui.Process#first first} and {@link OO.ui.Process#next next}\n * methods of OO.ui.Process.\n *\n * @param {Object} [data] Window opening data\n * @return {OO.ui.Process} Ready process\n */\nOO.ui.Window.prototype.getReadyProcess = function () {\n\treturn new OO.ui.Process();\n};\n\n/**\n * Get the 'hold' process.\n *\n * The hold process is used to keep a window from being used in a particular context,\n * based on the `data` argument. This method is called during the closing phase of the window’s\n * lifecycle.\n *\n * Override this method to add additional steps to the 'hold' process the parent method provides\n * using the {@link OO.ui.Process#first first} and {@link OO.ui.Process#next next} methods\n * of OO.ui.Process.\n *\n * @param {Object} [data] Window closing data\n * @return {OO.ui.Process} Hold process\n */\nOO.ui.Window.prototype.getHoldProcess = function () {\n\treturn new OO.ui.Process();\n};\n\n/**\n * Get the ‘teardown’ process.\n *\n * The teardown process is used to teardown a window after use. During teardown,\n * user interactions within the window are conveyed and the window is closed, based on the `data`\n * argument. This method is called during the closing phase of the window’s lifecycle.\n *\n * Override this method to add additional steps to the ‘teardown’ process the parent method provides\n * using the {@link OO.ui.Process#first first} and {@link OO.ui.Process#next next} methods\n * of OO.ui.Process.\n *\n * @param {Object} [data] Window closing data\n * @return {OO.ui.Process} Teardown process\n */\nOO.ui.Window.prototype.getTeardownProcess = function () {\n\treturn new OO.ui.Process();\n};\n\n/**\n * Set the window manager.\n *\n * This will cause the window to initialize. Calling it more than once will cause an error.\n *\n * @param {OO.ui.WindowManager} manager Manager for this window\n * @throws {Error} An error is thrown if the method is called more than once\n * @chainable\n */\nOO.ui.Window.prototype.setManager = function ( manager ) {\n\tif ( this.manager ) {\n\t\tthrow new Error( 'Cannot set window manager, window already has a manager' );\n\t}\n\n\tthis.manager = manager;\n\tthis.initialize();\n\n\treturn this;\n};\n\n/**\n * Set the window size by symbolic name (e.g., 'small' or 'medium')\n *\n * @param {string} size Symbolic name of size: `small`, `medium`, `large`, `larger` or\n *  `full`\n * @chainable\n */\nOO.ui.Window.prototype.setSize = function ( size ) {\n\tthis.size = size;\n\tthis.updateSize();\n\treturn this;\n};\n\n/**\n * Update the window size.\n *\n * @throws {Error} An error is thrown if the window is not attached to a window manager\n * @chainable\n */\nOO.ui.Window.prototype.updateSize = function () {\n\tif ( !this.manager ) {\n\t\tthrow new Error( 'Cannot update window size, must be attached to a manager' );\n\t}\n\n\tthis.manager.updateWindowSize( this );\n\n\treturn this;\n};\n\n/**\n * Set window dimensions. This method is called by the {@link OO.ui.WindowManager window manager}\n * when the window is opening. In general, setDimensions should not be called directly.\n *\n * To set the size of the window, use the #setSize method.\n *\n * @param {Object} dim CSS dimension properties\n * @param {string|number} [dim.width] Width\n * @param {string|number} [dim.minWidth] Minimum width\n * @param {string|number} [dim.maxWidth] Maximum width\n * @param {string|number} [dim.height] Height, omit to set based on height of contents\n * @param {string|number} [dim.minHeight] Minimum height\n * @param {string|number} [dim.maxHeight] Maximum height\n * @chainable\n */\nOO.ui.Window.prototype.setDimensions = function ( dim ) {\n\tvar height,\n\t\twin = this,\n\t\tstyleObj = this.$frame[ 0 ].style;\n\n\t// Calculate the height we need to set using the correct width\n\tif ( dim.height === undefined ) {\n\t\tthis.withoutSizeTransitions( function () {\n\t\t\tvar oldWidth = styleObj.width;\n\t\t\twin.$frame.css( 'width', dim.width || '' );\n\t\t\theight = win.getContentHeight();\n\t\t\tstyleObj.width = oldWidth;\n\t\t} );\n\t} else {\n\t\theight = dim.height;\n\t}\n\n\tthis.$frame.css( {\n\t\twidth: dim.width || '',\n\t\tminWidth: dim.minWidth || '',\n\t\tmaxWidth: dim.maxWidth || '',\n\t\theight: height || '',\n\t\tminHeight: dim.minHeight || '',\n\t\tmaxHeight: dim.maxHeight || ''\n\t} );\n\n\treturn this;\n};\n\n/**\n * Initialize window contents.\n *\n * Before the window is opened for the first time, #initialize is called so that content that\n * persists between openings can be added to the window.\n *\n * To set up a window with new content each time the window opens, use #getSetupProcess.\n *\n * @throws {Error} An error is thrown if the window is not attached to a window manager\n * @chainable\n */\nOO.ui.Window.prototype.initialize = function () {\n\tif ( !this.manager ) {\n\t\tthrow new Error( 'Cannot initialize window, must be attached to a manager' );\n\t}\n\n\t// Properties\n\tthis.$head = $( '<div>' );\n\tthis.$body = $( '<div>' );\n\tthis.$foot = $( '<div>' );\n\tthis.$document = $( this.getElementDocument() );\n\n\t// Events\n\tthis.$element.on( 'mousedown', this.onMouseDown.bind( this ) );\n\n\t// Initialization\n\tthis.$head.addClass( 'oo-ui-window-head' );\n\tthis.$body.addClass( 'oo-ui-window-body' );\n\tthis.$foot.addClass( 'oo-ui-window-foot' );\n\tthis.$content.append( this.$head, this.$body, this.$foot );\n\n\treturn this;\n};\n\n/**\n * Called when someone tries to focus the hidden element at the end of the dialog.\n * Sends focus back to the start of the dialog.\n *\n * @param {jQuery.Event} event Focus event\n */\nOO.ui.Window.prototype.onFocusTrapFocused = function ( event ) {\n\tvar backwards = this.$focusTrapBefore.is( event.target ),\n\t\telement = OO.ui.findFocusable( this.$content, backwards );\n\tif ( element ) {\n\t\t// There's a focusable element inside the content, at the front or\n\t\t// back depending on which focus trap we hit; select it.\n\t\telement.focus();\n\t} else {\n\t\t// There's nothing focusable inside the content. As a fallback,\n\t\t// this.$content is focusable, and focusing it will keep our focus\n\t\t// properly trapped. It's not a *meaningful* focus, since it's just\n\t\t// the content-div for the Window, but it's better than letting focus\n\t\t// escape into the page.\n\t\tthis.$content.focus();\n\t}\n};\n\n/**\n * Open the window.\n *\n * This method is a wrapper around a call to the window manager’s {@link OO.ui.WindowManager#openWindow openWindow}\n * method, which returns a promise resolved when the window is done opening.\n *\n * To customize the window each time it opens, use #getSetupProcess or #getReadyProcess.\n *\n * @param {Object} [data] Window opening data\n * @return {jQuery.Promise} Promise resolved with a value when the window is opened, or rejected\n *  if the window fails to open. When the promise is resolved successfully, the first argument of the\n *  value is a new promise, which is resolved when the window begins closing.\n * @throws {Error} An error is thrown if the window is not attached to a window manager\n */\nOO.ui.Window.prototype.open = function ( data ) {\n\tif ( !this.manager ) {\n\t\tthrow new Error( 'Cannot open window, must be attached to a manager' );\n\t}\n\n\treturn this.manager.openWindow( this, data );\n};\n\n/**\n * Close the window.\n *\n * This method is a wrapper around a call to the window\n * manager’s {@link OO.ui.WindowManager#closeWindow closeWindow} method,\n * which returns a closing promise resolved when the window is done closing.\n *\n * The window's #getHoldProcess and #getTeardownProcess methods are called during the closing\n * phase of the window’s lifecycle and can be used to specify closing behavior each time\n * the window closes.\n *\n * @param {Object} [data] Window closing data\n * @return {jQuery.Promise} Promise resolved when window is closed\n * @throws {Error} An error is thrown if the window is not attached to a window manager\n */\nOO.ui.Window.prototype.close = function ( data ) {\n\tif ( !this.manager ) {\n\t\tthrow new Error( 'Cannot close window, must be attached to a manager' );\n\t}\n\n\treturn this.manager.closeWindow( this, data );\n};\n\n/**\n * Setup window.\n *\n * This is called by OO.ui.WindowManager during window opening, and should not be called directly\n * by other systems.\n *\n * @param {Object} [data] Window opening data\n * @return {jQuery.Promise} Promise resolved when window is setup\n */\nOO.ui.Window.prototype.setup = function ( data ) {\n\tvar win = this;\n\n\tthis.toggle( true );\n\n\tthis.focusTrapHandler = OO.ui.bind( this.onFocusTrapFocused, this );\n\tthis.$focusTraps.on( 'focus', this.focusTrapHandler );\n\n\treturn this.getSetupProcess( data ).execute().then( function () {\n\t\t// Force redraw by asking the browser to measure the elements' widths\n\t\twin.$element.addClass( 'oo-ui-window-active oo-ui-window-setup' ).width();\n\t\twin.$content.addClass( 'oo-ui-window-content-setup' ).width();\n\t} );\n};\n\n/**\n * Ready window.\n *\n * This is called by OO.ui.WindowManager during window opening, and should not be called directly\n * by other systems.\n *\n * @param {Object} [data] Window opening data\n * @return {jQuery.Promise} Promise resolved when window is ready\n */\nOO.ui.Window.prototype.ready = function ( data ) {\n\tvar win = this;\n\n\tthis.$content.focus();\n\treturn this.getReadyProcess( data ).execute().then( function () {\n\t\t// Force redraw by asking the browser to measure the elements' widths\n\t\twin.$element.addClass( 'oo-ui-window-ready' ).width();\n\t\twin.$content.addClass( 'oo-ui-window-content-ready' ).width();\n\t} );\n};\n\n/**\n * Hold window.\n *\n * This is called by OO.ui.WindowManager during window closing, and should not be called directly\n * by other systems.\n *\n * @param {Object} [data] Window closing data\n * @return {jQuery.Promise} Promise resolved when window is held\n */\nOO.ui.Window.prototype.hold = function ( data ) {\n\tvar win = this;\n\n\treturn this.getHoldProcess( data ).execute().then( function () {\n\t\t// Get the focused element within the window's content\n\t\tvar $focus = win.$content.find( OO.ui.Element.static.getDocument( win.$content ).activeElement );\n\n\t\t// Blur the focused element\n\t\tif ( $focus.length ) {\n\t\t\t$focus[ 0 ].blur();\n\t\t}\n\n\t\t// Force redraw by asking the browser to measure the elements' widths\n\t\twin.$element.removeClass( 'oo-ui-window-ready' ).width();\n\t\twin.$content.removeClass( 'oo-ui-window-content-ready' ).width();\n\t} );\n};\n\n/**\n * Teardown window.\n *\n * This is called by OO.ui.WindowManager during window closing, and should not be called directly\n * by other systems.\n *\n * @param {Object} [data] Window closing data\n * @return {jQuery.Promise} Promise resolved when window is torn down\n */\nOO.ui.Window.prototype.teardown = function ( data ) {\n\tvar win = this;\n\n\treturn this.getTeardownProcess( data ).execute().then( function () {\n\t\t// Force redraw by asking the browser to measure the elements' widths\n\t\twin.$element.removeClass( 'oo-ui-window-active oo-ui-window-setup' ).width();\n\t\twin.$content.removeClass( 'oo-ui-window-content-setup' ).width();\n\t\twin.$focusTraps.off( 'focus', win.focusTrapHandler );\n\t\twin.toggle( false );\n\t} );\n};\n","/**\n * The Dialog class serves as the base class for the other types of dialogs.\n * Unless extended to include controls, the rendered dialog box is a simple window\n * that users can close by hitting the ‘Esc’ key. Dialog windows are used with OO.ui.WindowManager,\n * which opens, closes, and controls the presentation of the window. See the\n * [OOjs UI documentation on MediaWiki] [1] for more information.\n *\n *     @example\n *     // A simple dialog window.\n *     function MyDialog( config ) {\n *         MyDialog.parent.call( this, config );\n *     }\n *     OO.inheritClass( MyDialog, OO.ui.Dialog );\n *     MyDialog.static.name = 'myDialog';\n *     MyDialog.prototype.initialize = function () {\n *         MyDialog.parent.prototype.initialize.call( this );\n *         this.content = new OO.ui.PanelLayout( { padded: true, expanded: false } );\n *         this.content.$element.append( '<p>A simple dialog window. Press \\'Esc\\' to close.</p>' );\n *         this.$body.append( this.content.$element );\n *     };\n *     MyDialog.prototype.getBodyHeight = function () {\n *         return this.content.$element.outerHeight( true );\n *     };\n *     var myDialog = new MyDialog( {\n *         size: 'medium'\n *     } );\n *     // Create and append a window manager, which opens and closes the window.\n *     var windowManager = new OO.ui.WindowManager();\n *     $( 'body' ).append( windowManager.$element );\n *     windowManager.addWindows( [ myDialog ] );\n *     // Open the window!\n *     windowManager.openWindow( myDialog );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Windows/Dialogs\n *\n * @abstract\n * @class\n * @extends OO.ui.Window\n * @mixins OO.ui.mixin.PendingElement\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.Dialog = function OoUiDialog( config ) {\n\t// Parent constructor\n\tOO.ui.Dialog.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.ui.mixin.PendingElement.call( this );\n\n\t// Properties\n\tthis.actions = new OO.ui.ActionSet();\n\tthis.attachedActions = [];\n\tthis.currentAction = null;\n\tthis.onDialogKeyDownHandler = this.onDialogKeyDown.bind( this );\n\n\t// Events\n\tthis.actions.connect( this, {\n\t\tclick: 'onActionClick',\n\t\tchange: 'onActionsChange'\n\t} );\n\n\t// Initialization\n\tthis.$element\n\t\t.addClass( 'oo-ui-dialog' )\n\t\t.attr( 'role', 'dialog' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.Dialog, OO.ui.Window );\nOO.mixinClass( OO.ui.Dialog, OO.ui.mixin.PendingElement );\n\n/* Static Properties */\n\n/**\n * Symbolic name of dialog.\n *\n * The dialog class must have a symbolic name in order to be registered with OO.Factory.\n * Please see the [OOjs UI documentation on MediaWiki] [3] for more information.\n *\n * [3]: https://www.mediawiki.org/wiki/OOjs_UI/Windows/Window_managers\n *\n * @abstract\n * @static\n * @inheritable\n * @property {string}\n */\nOO.ui.Dialog.static.name = '';\n\n/**\n * The dialog title.\n *\n * The title can be specified as a plaintext string, a {@link OO.ui.mixin.LabelElement Label} node, or a function\n * that will produce a Label node or string. The title can also be specified with data passed to the\n * constructor (see #getSetupProcess). In this case, the static value will be overridden.\n *\n * @abstract\n * @static\n * @inheritable\n * @property {jQuery|string|Function}\n */\nOO.ui.Dialog.static.title = '';\n\n/**\n * An array of configured {@link OO.ui.ActionWidget action widgets}.\n *\n * Actions can also be specified with data passed to the constructor (see #getSetupProcess). In this case, the static\n * value will be overridden.\n *\n * [2]: https://www.mediawiki.org/wiki/OOjs_UI/Windows/Process_Dialogs#Action_sets\n *\n * @static\n * @inheritable\n * @property {Object[]}\n */\nOO.ui.Dialog.static.actions = [];\n\n/**\n * Close the dialog when the 'Esc' key is pressed.\n *\n * @static\n * @abstract\n * @inheritable\n * @property {boolean}\n */\nOO.ui.Dialog.static.escapable = true;\n\n/* Methods */\n\n/**\n * Handle frame document key down events.\n *\n * @private\n * @param {jQuery.Event} e Key down event\n */\nOO.ui.Dialog.prototype.onDialogKeyDown = function ( e ) {\n\tvar actions;\n\tif ( e.which === OO.ui.Keys.ESCAPE && this.constructor.static.escapable ) {\n\t\tthis.executeAction( '' );\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t} else if ( e.which === OO.ui.Keys.ENTER && ( e.ctrlKey || e.metaKey ) ) {\n\t\tactions = this.actions.get( { flags: 'primary', visible: true, disabled: false } );\n\t\tif ( actions.length > 0 ) {\n\t\t\tthis.executeAction( actions[ 0 ].getAction() );\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\t}\n};\n\n/**\n * Handle action click events.\n *\n * @private\n * @param {OO.ui.ActionWidget} action Action that was clicked\n */\nOO.ui.Dialog.prototype.onActionClick = function ( action ) {\n\tif ( !this.isPending() ) {\n\t\tthis.executeAction( action.getAction() );\n\t}\n};\n\n/**\n * Handle actions change event.\n *\n * @private\n */\nOO.ui.Dialog.prototype.onActionsChange = function () {\n\tthis.detachActions();\n\tif ( !this.isClosing() ) {\n\t\tthis.attachActions();\n\t}\n};\n\n/**\n * Get the set of actions used by the dialog.\n *\n * @return {OO.ui.ActionSet}\n */\nOO.ui.Dialog.prototype.getActions = function () {\n\treturn this.actions;\n};\n\n/**\n * Get a process for taking action.\n *\n * When you override this method, you can create a new OO.ui.Process and return it, or add additional\n * accept steps to the process the parent method provides using the {@link OO.ui.Process#first 'first'}\n * and {@link OO.ui.Process#next 'next'} methods of OO.ui.Process.\n *\n * @param {string} [action] Symbolic name of action\n * @return {OO.ui.Process} Action process\n */\nOO.ui.Dialog.prototype.getActionProcess = function ( action ) {\n\treturn new OO.ui.Process()\n\t\t.next( function () {\n\t\t\tif ( !action ) {\n\t\t\t\t// An empty action always closes the dialog without data, which should always be\n\t\t\t\t// safe and make no changes\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t}, this );\n};\n\n/**\n * @inheritdoc\n *\n * @param {Object} [data] Dialog opening data\n * @param {jQuery|string|Function|null} [data.title] Dialog title, omit to use\n *  the {@link #static-title static title}\n * @param {Object[]} [data.actions] List of configuration options for each\n *   {@link OO.ui.ActionWidget action widget}, omit to use {@link #static-actions static actions}.\n */\nOO.ui.Dialog.prototype.getSetupProcess = function ( data ) {\n\tdata = data || {};\n\n\t// Parent method\n\treturn OO.ui.Dialog.parent.prototype.getSetupProcess.call( this, data )\n\t\t.next( function () {\n\t\t\tvar config = this.constructor.static,\n\t\t\t\tactions = data.actions !== undefined ? data.actions : config.actions,\n\t\t\t\ttitle = data.title !== undefined ? data.title : config.title;\n\n\t\t\tthis.title.setLabel( title ).setTitle( title );\n\t\t\tthis.actions.add( this.getActionWidgets( actions ) );\n\n\t\t\tthis.$element.on( 'keydown', this.onDialogKeyDownHandler );\n\t\t}, this );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.Dialog.prototype.getTeardownProcess = function ( data ) {\n\t// Parent method\n\treturn OO.ui.Dialog.parent.prototype.getTeardownProcess.call( this, data )\n\t\t.first( function () {\n\t\t\tthis.$element.off( 'keydown', this.onDialogKeyDownHandler );\n\n\t\t\tthis.actions.clear();\n\t\t\tthis.currentAction = null;\n\t\t}, this );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.Dialog.prototype.initialize = function () {\n\t// Parent method\n\tOO.ui.Dialog.parent.prototype.initialize.call( this );\n\n\t// Properties\n\tthis.title = new OO.ui.LabelWidget();\n\n\t// Initialization\n\tthis.$content.addClass( 'oo-ui-dialog-content' );\n\tthis.$element.attr( 'aria-labelledby', this.title.getElementId() );\n\tthis.setPendingElement( this.$head );\n};\n\n/**\n * Get action widgets from a list of configs\n *\n * @param {Object[]} actions Action widget configs\n * @return {OO.ui.ActionWidget[]} Action widgets\n */\nOO.ui.Dialog.prototype.getActionWidgets = function ( actions ) {\n\tvar i, len, widgets = [];\n\tfor ( i = 0, len = actions.length; i < len; i++ ) {\n\t\twidgets.push(\n\t\t\tnew OO.ui.ActionWidget( actions[ i ] )\n\t\t);\n\t}\n\treturn widgets;\n};\n\n/**\n * Attach action actions.\n *\n * @protected\n */\nOO.ui.Dialog.prototype.attachActions = function () {\n\t// Remember the list of potentially attached actions\n\tthis.attachedActions = this.actions.get();\n};\n\n/**\n * Detach action actions.\n *\n * @protected\n * @chainable\n */\nOO.ui.Dialog.prototype.detachActions = function () {\n\tvar i, len;\n\n\t// Detach all actions that may have been previously attached\n\tfor ( i = 0, len = this.attachedActions.length; i < len; i++ ) {\n\t\tthis.attachedActions[ i ].$element.detach();\n\t}\n\tthis.attachedActions = [];\n};\n\n/**\n * Execute an action.\n *\n * @param {string} action Symbolic name of action to execute\n * @return {jQuery.Promise} Promise resolved when action completes, rejected if it fails\n */\nOO.ui.Dialog.prototype.executeAction = function ( action ) {\n\tthis.pushPending();\n\tthis.currentAction = action;\n\treturn this.getActionProcess( action ).execute()\n\t\t.always( this.popPending.bind( this ) );\n};\n","/**\n * MessageDialogs display a confirmation or alert message. By default, the rendered dialog box\n * consists of a header that contains the dialog title, a body with the message, and a footer that\n * contains any {@link OO.ui.ActionWidget action widgets}. The MessageDialog class is the only type\n * of {@link OO.ui.Dialog dialog} that is usually instantiated directly.\n *\n * There are two basic types of message dialogs, confirmation and alert:\n *\n * - **confirmation**: the dialog title describes what a progressive action will do and the message provides\n *  more details about the consequences.\n * - **alert**: the dialog title describes which event occurred and the message provides more information\n *  about why the event occurred.\n *\n * The MessageDialog class specifies two actions: ‘accept’, the primary\n * action (e.g., ‘ok’) and ‘reject,’ the safe action (e.g., ‘cancel’). Both will close the window,\n * passing along the selected action.\n *\n * For more information and examples, please see the [OOjs UI documentation on MediaWiki][1].\n *\n *     @example\n *     // Example: Creating and opening a message dialog window.\n *     var messageDialog = new OO.ui.MessageDialog();\n *\n *     // Create and append a window manager.\n *     var windowManager = new OO.ui.WindowManager();\n *     $( 'body' ).append( windowManager.$element );\n *     windowManager.addWindows( [ messageDialog ] );\n *     // Open the window.\n *     windowManager.openWindow( messageDialog, {\n *         title: 'Basic message dialog',\n *         message: 'This is the message'\n *     } );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Windows/Message_Dialogs\n *\n * @class\n * @extends OO.ui.Dialog\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.MessageDialog = function OoUiMessageDialog( config ) {\n\t// Parent constructor\n\tOO.ui.MessageDialog.parent.call( this, config );\n\n\t// Properties\n\tthis.verticalActionLayout = null;\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-messageDialog' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.MessageDialog, OO.ui.Dialog );\n\n/* Static Properties */\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.MessageDialog.static.name = 'message';\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.MessageDialog.static.size = 'small';\n\n/**\n * Dialog title.\n *\n * The title of a confirmation dialog describes what a progressive action will do. The\n * title of an alert dialog describes which event occurred.\n *\n * @static\n * @inheritable\n * @property {jQuery|string|Function|null}\n */\nOO.ui.MessageDialog.static.title = null;\n\n/**\n * The message displayed in the dialog body.\n *\n * A confirmation message describes the consequences of a progressive action. An alert\n * message describes why an event occurred.\n *\n * @static\n * @inheritable\n * @property {jQuery|string|Function|null}\n */\nOO.ui.MessageDialog.static.message = null;\n\n/**\n * @static\n * @inheritdoc\n */\nOO.ui.MessageDialog.static.actions = [\n\t// Note that OO.ui.alert() and OO.ui.confirm() rely on these.\n\t{ action: 'accept', label: OO.ui.deferMsg( 'ooui-dialog-message-accept' ), flags: 'primary' },\n\t{ action: 'reject', label: OO.ui.deferMsg( 'ooui-dialog-message-reject' ), flags: 'safe' }\n];\n\n/* Methods */\n\n/**\n * @inheritdoc\n */\nOO.ui.MessageDialog.prototype.setManager = function ( manager ) {\n\tOO.ui.MessageDialog.parent.prototype.setManager.call( this, manager );\n\n\t// Events\n\tthis.manager.connect( this, {\n\t\tresize: 'onResize'\n\t} );\n\n\treturn this;\n};\n\n/**\n * Handle window resized events.\n *\n * @private\n */\nOO.ui.MessageDialog.prototype.onResize = function () {\n\tvar dialog = this;\n\tdialog.fitActions();\n\t// Wait for CSS transition to finish and do it again :(\n\tsetTimeout( function () {\n\t\tdialog.fitActions();\n\t}, 300 );\n};\n\n/**\n * Toggle action layout between vertical and horizontal.\n *\n * @private\n * @param {boolean} [value] Layout actions vertically, omit to toggle\n * @chainable\n */\nOO.ui.MessageDialog.prototype.toggleVerticalActionLayout = function ( value ) {\n\tvalue = value === undefined ? !this.verticalActionLayout : !!value;\n\n\tif ( value !== this.verticalActionLayout ) {\n\t\tthis.verticalActionLayout = value;\n\t\tthis.$actions\n\t\t\t.toggleClass( 'oo-ui-messageDialog-actions-vertical', value )\n\t\t\t.toggleClass( 'oo-ui-messageDialog-actions-horizontal', !value );\n\t}\n\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MessageDialog.prototype.getActionProcess = function ( action ) {\n\tif ( action ) {\n\t\treturn new OO.ui.Process( function () {\n\t\t\tthis.close( { action: action } );\n\t\t}, this );\n\t}\n\treturn OO.ui.MessageDialog.parent.prototype.getActionProcess.call( this, action );\n};\n\n/**\n * @inheritdoc\n *\n * @param {Object} [data] Dialog opening data\n * @param {jQuery|string|Function|null} [data.title] Description of the action being confirmed\n * @param {jQuery|string|Function|null} [data.message] Description of the action's consequence\n * @param {string} [data.size] Symbolic name of the dialog size, see OO.ui.Window\n * @param {Object[]} [data.actions] List of OO.ui.ActionOptionWidget configuration options for each\n *   action item\n */\nOO.ui.MessageDialog.prototype.getSetupProcess = function ( data ) {\n\tdata = data || {};\n\n\t// Parent method\n\treturn OO.ui.MessageDialog.parent.prototype.getSetupProcess.call( this, data )\n\t\t.next( function () {\n\t\t\tthis.title.setLabel(\n\t\t\t\tdata.title !== undefined ? data.title : this.constructor.static.title\n\t\t\t);\n\t\t\tthis.message.setLabel(\n\t\t\t\tdata.message !== undefined ? data.message : this.constructor.static.message\n\t\t\t);\n\t\t\tthis.size = data.size !== undefined ? data.size : this.constructor.static.size;\n\t\t}, this );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MessageDialog.prototype.getReadyProcess = function ( data ) {\n\tdata = data || {};\n\n\t// Parent method\n\treturn OO.ui.MessageDialog.parent.prototype.getReadyProcess.call( this, data )\n\t\t.next( function () {\n\t\t\t// Focus the primary action button\n\t\t\tvar actions = this.actions.get();\n\t\t\tactions = actions.filter( function ( action ) {\n\t\t\t\treturn action.getFlags().indexOf( 'primary' ) > -1;\n\t\t\t} );\n\t\t\tif ( actions.length > 0 ) {\n\t\t\t\tactions[ 0 ].focus();\n\t\t\t}\n\t\t}, this );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MessageDialog.prototype.getBodyHeight = function () {\n\tvar bodyHeight, oldOverflow,\n\t\t$scrollable = this.container.$element;\n\n\toldOverflow = $scrollable[ 0 ].style.overflow;\n\t$scrollable[ 0 ].style.overflow = 'hidden';\n\n\tOO.ui.Element.static.reconsiderScrollbars( $scrollable[ 0 ] );\n\n\tbodyHeight = this.text.$element.outerHeight( true );\n\t$scrollable[ 0 ].style.overflow = oldOverflow;\n\n\treturn bodyHeight;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MessageDialog.prototype.setDimensions = function ( dim ) {\n\tvar $scrollable = this.container.$element;\n\tOO.ui.MessageDialog.parent.prototype.setDimensions.call( this, dim );\n\n\t// Twiddle the overflow property, otherwise an unnecessary scrollbar will be produced.\n\t// Need to do it after transition completes (250ms), add 50ms just in case.\n\tsetTimeout( function () {\n\t\tvar oldOverflow = $scrollable[ 0 ].style.overflow,\n\t\t\tactiveElement = document.activeElement;\n\n\t\t$scrollable[ 0 ].style.overflow = 'hidden';\n\n\t\tOO.ui.Element.static.reconsiderScrollbars( $scrollable[ 0 ] );\n\n\t\t// Check reconsiderScrollbars didn't destroy our focus, as we\n\t\t// are doing this after the ready process.\n\t\tif ( activeElement && activeElement !== document.activeElement && activeElement.focus ) {\n\t\t\tactiveElement.focus();\n\t\t}\n\n\t\t$scrollable[ 0 ].style.overflow = oldOverflow;\n\t}, 300 );\n\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MessageDialog.prototype.initialize = function () {\n\t// Parent method\n\tOO.ui.MessageDialog.parent.prototype.initialize.call( this );\n\n\t// Properties\n\tthis.$actions = $( '<div>' );\n\tthis.container = new OO.ui.PanelLayout( {\n\t\tscrollable: true, classes: [ 'oo-ui-messageDialog-container' ]\n\t} );\n\tthis.text = new OO.ui.PanelLayout( {\n\t\tpadded: true, expanded: false, classes: [ 'oo-ui-messageDialog-text' ]\n\t} );\n\tthis.message = new OO.ui.LabelWidget( {\n\t\tclasses: [ 'oo-ui-messageDialog-message' ]\n\t} );\n\n\t// Initialization\n\tthis.title.$element.addClass( 'oo-ui-messageDialog-title' );\n\tthis.$content.addClass( 'oo-ui-messageDialog-content' );\n\tthis.container.$element.append( this.text.$element );\n\tthis.text.$element.append( this.title.$element, this.message.$element );\n\tthis.$body.append( this.container.$element );\n\tthis.$actions.addClass( 'oo-ui-messageDialog-actions' );\n\tthis.$foot.append( this.$actions );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.MessageDialog.prototype.attachActions = function () {\n\tvar i, len, other, special, others;\n\n\t// Parent method\n\tOO.ui.MessageDialog.parent.prototype.attachActions.call( this );\n\n\tspecial = this.actions.getSpecial();\n\tothers = this.actions.getOthers();\n\n\tif ( special.safe ) {\n\t\tthis.$actions.append( special.safe.$element );\n\t\tspecial.safe.toggleFramed( false );\n\t}\n\tif ( others.length ) {\n\t\tfor ( i = 0, len = others.length; i < len; i++ ) {\n\t\t\tother = others[ i ];\n\t\t\tthis.$actions.append( other.$element );\n\t\t\tother.toggleFramed( false );\n\t\t}\n\t}\n\tif ( special.primary ) {\n\t\tthis.$actions.append( special.primary.$element );\n\t\tspecial.primary.toggleFramed( false );\n\t}\n\n\tif ( !this.isOpening() ) {\n\t\t// If the dialog is currently opening, this will be called automatically soon.\n\t\t// This also calls #fitActions.\n\t\tthis.updateSize();\n\t}\n};\n\n/**\n * Fit action actions into columns or rows.\n *\n * Columns will be used if all labels can fit without overflow, otherwise rows will be used.\n *\n * @private\n */\nOO.ui.MessageDialog.prototype.fitActions = function () {\n\tvar i, len, action,\n\t\tprevious = this.verticalActionLayout,\n\t\tactions = this.actions.get();\n\n\t// Detect clipping\n\tthis.toggleVerticalActionLayout( false );\n\tfor ( i = 0, len = actions.length; i < len; i++ ) {\n\t\taction = actions[ i ];\n\t\tif ( action.$element.innerWidth() < action.$label.outerWidth( true ) ) {\n\t\t\tthis.toggleVerticalActionLayout( true );\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Move the body out of the way of the foot\n\tthis.$body.css( 'bottom', this.$foot.outerHeight( true ) );\n\n\tif ( this.verticalActionLayout !== previous ) {\n\t\t// We changed the layout, window height might need to be updated.\n\t\tthis.updateSize();\n\t}\n};\n","/**\n * ProcessDialog windows encapsulate a {@link OO.ui.Process process} and all of the code necessary\n * to complete it. If the process terminates with an error, a customizable {@link OO.ui.Error error\n * interface} alerts users to the trouble, permitting the user to dismiss the error and try again when\n * relevant. The ProcessDialog class is always extended and customized with the actions and content\n * required for each process.\n *\n * The process dialog box consists of a header that visually represents the ‘working’ state of long\n * processes with an animation. The header contains the dialog title as well as\n * two {@link OO.ui.ActionWidget action widgets}:  a ‘safe’ action on the left (e.g., ‘Cancel’) and\n * a ‘primary’ action on the right (e.g., ‘Done’).\n *\n * Like other windows, the process dialog is managed by a {@link OO.ui.WindowManager window manager}.\n * Please see the [OOjs UI documentation on MediaWiki][1] for more information and examples.\n *\n *     @example\n *     // Example: Creating and opening a process dialog window.\n *     function MyProcessDialog( config ) {\n *         MyProcessDialog.parent.call( this, config );\n *     }\n *     OO.inheritClass( MyProcessDialog, OO.ui.ProcessDialog );\n *\n *     MyProcessDialog.static.name = 'myProcessDialog';\n *     MyProcessDialog.static.title = 'Process dialog';\n *     MyProcessDialog.static.actions = [\n *         { action: 'save', label: 'Done', flags: 'primary' },\n *         { label: 'Cancel', flags: 'safe' }\n *     ];\n *\n *     MyProcessDialog.prototype.initialize = function () {\n *         MyProcessDialog.parent.prototype.initialize.apply( this, arguments );\n *         this.content = new OO.ui.PanelLayout( { padded: true, expanded: false } );\n *         this.content.$element.append( '<p>This is a process dialog window. The header contains the title and two buttons: \\'Cancel\\' (a safe action) on the left and \\'Done\\' (a primary action)  on the right.</p>' );\n *         this.$body.append( this.content.$element );\n *     };\n *     MyProcessDialog.prototype.getActionProcess = function ( action ) {\n *         var dialog = this;\n *         if ( action ) {\n *             return new OO.ui.Process( function () {\n *                 dialog.close( { action: action } );\n *             } );\n *         }\n *         return MyProcessDialog.parent.prototype.getActionProcess.call( this, action );\n *     };\n *\n *     var windowManager = new OO.ui.WindowManager();\n *     $( 'body' ).append( windowManager.$element );\n *\n *     var dialog = new MyProcessDialog();\n *     windowManager.addWindows( [ dialog ] );\n *     windowManager.openWindow( dialog );\n *\n * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Windows/Process_Dialogs\n *\n * @abstract\n * @class\n * @extends OO.ui.Dialog\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.ProcessDialog = function OoUiProcessDialog( config ) {\n\t// Parent constructor\n\tOO.ui.ProcessDialog.parent.call( this, config );\n\n\t// Properties\n\tthis.fitOnOpen = false;\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-processDialog' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ProcessDialog, OO.ui.Dialog );\n\n/* Methods */\n\n/**\n * Handle dismiss button click events.\n *\n * Hides errors.\n *\n * @private\n */\nOO.ui.ProcessDialog.prototype.onDismissErrorButtonClick = function () {\n\tthis.hideErrors();\n};\n\n/**\n * Handle retry button click events.\n *\n * Hides errors and then tries again.\n *\n * @private\n */\nOO.ui.ProcessDialog.prototype.onRetryButtonClick = function () {\n\tthis.hideErrors();\n\tthis.executeAction( this.currentAction );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.ProcessDialog.prototype.initialize = function () {\n\t// Parent method\n\tOO.ui.ProcessDialog.parent.prototype.initialize.call( this );\n\n\t// Properties\n\tthis.$navigation = $( '<div>' );\n\tthis.$location = $( '<div>' );\n\tthis.$safeActions = $( '<div>' );\n\tthis.$primaryActions = $( '<div>' );\n\tthis.$otherActions = $( '<div>' );\n\tthis.dismissButton = new OO.ui.ButtonWidget( {\n\t\tlabel: OO.ui.msg( 'ooui-dialog-process-dismiss' )\n\t} );\n\tthis.retryButton = new OO.ui.ButtonWidget();\n\tthis.$errors = $( '<div>' );\n\tthis.$errorsTitle = $( '<div>' );\n\n\t// Events\n\tthis.dismissButton.connect( this, { click: 'onDismissErrorButtonClick' } );\n\tthis.retryButton.connect( this, { click: 'onRetryButtonClick' } );\n\n\t// Initialization\n\tthis.title.$element.addClass( 'oo-ui-processDialog-title' );\n\tthis.$location\n\t\t.append( this.title.$element )\n\t\t.addClass( 'oo-ui-processDialog-location' );\n\tthis.$safeActions.addClass( 'oo-ui-processDialog-actions-safe' );\n\tthis.$primaryActions.addClass( 'oo-ui-processDialog-actions-primary' );\n\tthis.$otherActions.addClass( 'oo-ui-processDialog-actions-other' );\n\tthis.$errorsTitle\n\t\t.addClass( 'oo-ui-processDialog-errors-title' )\n\t\t.text( OO.ui.msg( 'ooui-dialog-process-error' ) );\n\tthis.$errors\n\t\t.addClass( 'oo-ui-processDialog-errors oo-ui-element-hidden' )\n\t\t.append( this.$errorsTitle, this.dismissButton.$element, this.retryButton.$element );\n\tthis.$content\n\t\t.addClass( 'oo-ui-processDialog-content' )\n\t\t.append( this.$errors );\n\tthis.$navigation\n\t\t.addClass( 'oo-ui-processDialog-navigation' )\n\t\t// Note: Order of appends below is important. These are in the order\n\t\t// we want tab to go through them. Display-order is handled entirely\n\t\t// by CSS absolute-positioning. As such, primary actions like \"done\"\n\t\t// should go first.\n\t\t.append( this.$primaryActions, this.$location, this.$safeActions );\n\tthis.$head.append( this.$navigation );\n\tthis.$foot.append( this.$otherActions );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.ProcessDialog.prototype.getActionWidgets = function ( actions ) {\n\tvar i, len, config,\n\t\tisMobile = OO.ui.isMobile(),\n\t\twidgets = [];\n\n\tfor ( i = 0, len = actions.length; i < len; i++ ) {\n\t\tconfig = $.extend( { framed: !OO.ui.isMobile() }, actions[ i ] );\n\t\tif ( isMobile &&\n\t\t\t( config.flags === 'back' || ( Array.isArray( config.flags ) && config.flags.indexOf( 'back' ) !== -1 ) )\n\t\t) {\n\t\t\t$.extend( config, {\n\t\t\t\ticon: 'previous',\n\t\t\t\tlabel: ''\n\t\t\t} );\n\t\t}\n\t\twidgets.push(\n\t\t\tnew OO.ui.ActionWidget( config )\n\t\t);\n\t}\n\treturn widgets;\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.ProcessDialog.prototype.attachActions = function () {\n\tvar i, len, other, special, others;\n\n\t// Parent method\n\tOO.ui.ProcessDialog.parent.prototype.attachActions.call( this );\n\n\tspecial = this.actions.getSpecial();\n\tothers = this.actions.getOthers();\n\tif ( special.primary ) {\n\t\tthis.$primaryActions.append( special.primary.$element );\n\t}\n\tfor ( i = 0, len = others.length; i < len; i++ ) {\n\t\tother = others[ i ];\n\t\tthis.$otherActions.append( other.$element );\n\t}\n\tif ( special.safe ) {\n\t\tthis.$safeActions.append( special.safe.$element );\n\t}\n\n\tthis.fitLabel();\n\tthis.$body.css( 'bottom', this.$foot.outerHeight( true ) );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.ProcessDialog.prototype.executeAction = function ( action ) {\n\tvar process = this;\n\treturn OO.ui.ProcessDialog.parent.prototype.executeAction.call( this, action )\n\t\t.fail( function ( errors ) {\n\t\t\tprocess.showErrors( errors || [] );\n\t\t} );\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.ProcessDialog.prototype.setDimensions = function () {\n\t// Parent method\n\tOO.ui.ProcessDialog.parent.prototype.setDimensions.apply( this, arguments );\n\n\tthis.fitLabel();\n};\n\n/**\n * Fit label between actions.\n *\n * @private\n * @chainable\n */\nOO.ui.ProcessDialog.prototype.fitLabel = function () {\n\tvar safeWidth, primaryWidth, biggerWidth, labelWidth, navigationWidth, leftWidth, rightWidth,\n\t\tsize = this.getSizeProperties();\n\n\tif ( typeof size.width !== 'number' ) {\n\t\tif ( this.isOpened() ) {\n\t\t\tnavigationWidth = this.$head.width() - 20;\n\t\t} else if ( this.isOpening() ) {\n\t\t\tif ( !this.fitOnOpen ) {\n\t\t\t\t// Size is relative and the dialog isn't open yet, so wait.\n\t\t\t\t// FIXME: This should ideally be handled by setup somehow.\n\t\t\t\tthis.manager.lifecycle.opened.done( this.fitLabel.bind( this ) );\n\t\t\t\tthis.fitOnOpen = true;\n\t\t\t}\n\t\t\treturn;\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t} else {\n\t\tnavigationWidth = size.width - 20;\n\t}\n\n\tsafeWidth = this.$safeActions.is( ':visible' ) ? this.$safeActions.width() : 0;\n\tprimaryWidth = this.$primaryActions.is( ':visible' ) ? this.$primaryActions.width() : 0;\n\tbiggerWidth = Math.max( safeWidth, primaryWidth );\n\n\tlabelWidth = this.title.$element.width();\n\n\tif ( 2 * biggerWidth + labelWidth < navigationWidth ) {\n\t\t// We have enough space to center the label\n\t\tleftWidth = rightWidth = biggerWidth;\n\t} else {\n\t\t// Let's hope we at least have enough space not to overlap, because we can't wrap the label…\n\t\tif ( this.getDir() === 'ltr' ) {\n\t\t\tleftWidth = safeWidth;\n\t\t\trightWidth = primaryWidth;\n\t\t} else {\n\t\t\tleftWidth = primaryWidth;\n\t\t\trightWidth = safeWidth;\n\t\t}\n\t}\n\n\tthis.$location.css( { paddingLeft: leftWidth, paddingRight: rightWidth } );\n\n\treturn this;\n};\n\n/**\n * Handle errors that occurred during accept or reject processes.\n *\n * @private\n * @param {OO.ui.Error[]|OO.ui.Error} errors Errors to be handled\n */\nOO.ui.ProcessDialog.prototype.showErrors = function ( errors ) {\n\tvar i, len, $item, actions,\n\t\titems = [],\n\t\tabilities = {},\n\t\trecoverable = true,\n\t\twarning = false;\n\n\tif ( errors instanceof OO.ui.Error ) {\n\t\terrors = [ errors ];\n\t}\n\n\tfor ( i = 0, len = errors.length; i < len; i++ ) {\n\t\tif ( !errors[ i ].isRecoverable() ) {\n\t\t\trecoverable = false;\n\t\t}\n\t\tif ( errors[ i ].isWarning() ) {\n\t\t\twarning = true;\n\t\t}\n\t\t$item = $( '<div>' )\n\t\t\t.addClass( 'oo-ui-processDialog-error' )\n\t\t\t.append( errors[ i ].getMessage() );\n\t\titems.push( $item[ 0 ] );\n\t}\n\tthis.$errorItems = $( items );\n\tif ( recoverable ) {\n\t\tabilities[ this.currentAction ] = true;\n\t\t// Copy the flags from the first matching action\n\t\tactions = this.actions.get( { actions: this.currentAction } );\n\t\tif ( actions.length ) {\n\t\t\tthis.retryButton.clearFlags().setFlags( actions[ 0 ].getFlags() );\n\t\t}\n\t} else {\n\t\tabilities[ this.currentAction ] = false;\n\t\tthis.actions.setAbilities( abilities );\n\t}\n\tif ( warning ) {\n\t\tthis.retryButton.setLabel( OO.ui.msg( 'ooui-dialog-process-continue' ) );\n\t} else {\n\t\tthis.retryButton.setLabel( OO.ui.msg( 'ooui-dialog-process-retry' ) );\n\t}\n\tthis.retryButton.toggle( recoverable );\n\tthis.$errorsTitle.after( this.$errorItems );\n\tthis.$errors.removeClass( 'oo-ui-element-hidden' ).scrollTop( 0 );\n};\n\n/**\n * Hide errors.\n *\n * @private\n */\nOO.ui.ProcessDialog.prototype.hideErrors = function () {\n\tthis.$errors.addClass( 'oo-ui-element-hidden' );\n\tif ( this.$errorItems ) {\n\t\tthis.$errorItems.remove();\n\t\tthis.$errorItems = null;\n\t}\n};\n\n/**\n * @inheritdoc\n */\nOO.ui.ProcessDialog.prototype.getTeardownProcess = function ( data ) {\n\t// Parent method\n\treturn OO.ui.ProcessDialog.parent.prototype.getTeardownProcess.call( this, data )\n\t\t.first( function () {\n\t\t\t// Make sure to hide errors\n\t\t\tthis.hideErrors();\n\t\t\tthis.fitOnOpen = false;\n\t\t}, this );\n};\n","/**\n * @class OO.ui\n */\n\n/**\n * Lazy-initialize and return a global OO.ui.WindowManager instance, used by OO.ui.alert and\n * OO.ui.confirm.\n *\n * @private\n * @return {OO.ui.WindowManager}\n */\nOO.ui.getWindowManager = function () {\n\tif ( !OO.ui.windowManager ) {\n\t\tOO.ui.windowManager = new OO.ui.WindowManager();\n\t\t$( 'body' ).append( OO.ui.windowManager.$element );\n\t\tOO.ui.windowManager.addWindows( [ new OO.ui.MessageDialog() ] );\n\t}\n\treturn OO.ui.windowManager;\n};\n\n/**\n * Display a quick modal alert dialog, using a OO.ui.MessageDialog. While the dialog is open, the\n * rest of the page will be dimmed out and the user won't be able to interact with it. The dialog\n * has only one action button, labelled \"OK\", clicking it will simply close the dialog.\n *\n * A window manager is created automatically when this function is called for the first time.\n *\n *     @example\n *     OO.ui.alert( 'Something happened!' ).done( function () {\n *         console.log( 'User closed the dialog.' );\n *     } );\n *\n *     OO.ui.alert( 'Something larger happened!', { size: 'large' } );\n *\n * @param {jQuery|string} text Message text to display\n * @param {Object} [options] Additional options, see OO.ui.MessageDialog#getSetupProcess\n * @return {jQuery.Promise} Promise resolved when the user closes the dialog\n */\nOO.ui.alert = function ( text, options ) {\n\treturn OO.ui.getWindowManager().openWindow( 'message', $.extend( {\n\t\tmessage: text,\n\t\tactions: [ OO.ui.MessageDialog.static.actions[ 0 ] ]\n\t}, options ) ).closed.then( function () {\n\t\treturn undefined;\n\t} );\n};\n\n/**\n * Display a quick modal confirmation dialog, using a OO.ui.MessageDialog. While the dialog is open,\n * the rest of the page will be dimmed out and the user won't be able to interact with it. The\n * dialog has two action buttons, one to confirm an operation (labelled \"OK\") and one to cancel it\n * (labelled \"Cancel\").\n *\n * A window manager is created automatically when this function is called for the first time.\n *\n *     @example\n *     OO.ui.confirm( 'Are you sure?' ).done( function ( confirmed ) {\n *         if ( confirmed ) {\n *             console.log( 'User clicked \"OK\"!' );\n *         } else {\n *             console.log( 'User clicked \"Cancel\" or closed the dialog.' );\n *         }\n *     } );\n *\n * @param {jQuery|string} text Message text to display\n * @param {Object} [options] Additional options, see OO.ui.MessageDialog#getSetupProcess\n * @return {jQuery.Promise} Promise resolved when the user closes the dialog. If the user chose to\n *  confirm, the promise will resolve to boolean `true`; otherwise, it will resolve to boolean\n *  `false`.\n */\nOO.ui.confirm = function ( text, options ) {\n\treturn OO.ui.getWindowManager().openWindow( 'message', $.extend( {\n\t\tmessage: text\n\t}, options ) ).closed.then( function ( data ) {\n\t\treturn !!( data && data.action === 'accept' );\n\t} );\n};\n\n/**\n * Display a quick modal prompt dialog, using a OO.ui.MessageDialog. While the dialog is open,\n * the rest of the page will be dimmed out and the user won't be able to interact with it. The\n * dialog has a text input widget and two action buttons, one to confirm an operation (labelled \"OK\")\n * and one to cancel it (labelled \"Cancel\").\n *\n * A window manager is created automatically when this function is called for the first time.\n *\n *     @example\n *     OO.ui.prompt( 'Choose a line to go to', { textInput: { placeholder: 'Line number' } } ).done( function ( result ) {\n *         if ( result !== null ) {\n *             console.log( 'User typed \"' + result + '\" then clicked \"OK\".' );\n *         } else {\n *             console.log( 'User clicked \"Cancel\" or closed the dialog.' );\n *         }\n *     } );\n *\n * @param {jQuery|string} text Message text to display\n * @param {Object} [options] Additional options, see OO.ui.MessageDialog#getSetupProcess\n * @param {Object} [options.textInput] Additional options for text input widget, see OO.ui.TextInputWidget\n * @return {jQuery.Promise} Promise resolved when the user closes the dialog. If the user chose to\n *  confirm, the promise will resolve with the value of the text input widget; otherwise, it will\n *  resolve to `null`.\n */\nOO.ui.prompt = function ( text, options ) {\n\tvar instance,\n\t\tmanager = OO.ui.getWindowManager(),\n\t\ttextInput = new OO.ui.TextInputWidget( ( options && options.textInput ) || {} ),\n\t\ttextField = new OO.ui.FieldLayout( textInput, {\n\t\t\talign: 'top',\n\t\t\tlabel: text\n\t\t} );\n\n\tinstance = manager.openWindow( 'message', $.extend( {\n\t\tmessage: textField.$element\n\t}, options ) );\n\n\t// TODO: This is a little hacky, and could be done by extending MessageDialog instead.\n\tinstance.opened.then( function () {\n\t\ttextInput.on( 'enter', function () {\n\t\t\tmanager.getCurrentWindow().close( { action: 'accept' } );\n\t\t} );\n\t\ttextInput.focus();\n\t} );\n\n\treturn instance.closed.then( function ( data ) {\n\t\treturn data && data.action === 'accept' ? textInput.getValue() : null;\n\t} );\n};\n","}( OO ) );\n"]}
\ No newline at end of file
index 64651fc..5ebaaec 100644 (file)
@@ -4,10 +4,6 @@
        "images": {
                "add": { "file": "images/icons/add.svg" },
                "advanced": { "file": "images/icons/advanced.svg" },
-               "bookmark": { "file": {
-                       "ltr": "images/icons/bookmark-ltr.svg",
-                       "rtl": "images/icons/bookmark-rtl.svg"
-               } },
                "browser": { "file": {
                        "ltr": "images/icons/browser-ltr.svg",
                        "rtl": "images/icons/browser-rtl.svg"
index b32ffbb..6e6cde3 100644 (file)
@@ -7,6 +7,8 @@
                        "ltr": "images/icons/unBlock-ltr.svg",
                        "rtl": "images/icons/unBlock-rtl.svg"
                } },
+               "clip": { "file": "images/icons/clip.svg" },
+               "unClip": { "file": "images/icons/unClip.svg" },
                "flag": { "file": {
                        "ltr": "images/icons/flag-ltr.svg",
                        "rtl": "images/icons/flag-rtl.svg"
@@ -31,6 +33,7 @@
                        "ltr": "images/icons/unTrash-ltr.svg",
                        "rtl": "images/icons/unTrash-rtl.svg"
                } },
+               "pushPin": { "file": "images/icons/pushPin.svg" },
                "ongoingConversation": {
                        "file": {
                                "ltr": "images/icons/ongoingConversation-ltr.svg",
index 7ab6eaa..ca49d20 100644 (file)
                        "ltr": "images/icons/arrow-rtl.svg",
                        "rtl": "images/icons/arrow-ltr.svg"
                } },
-               "caretNext": { "file": {
-                       "ltr": "images/icons/caret-rtl.svg",
-                       "rtl": "images/icons/caret-ltr.svg"
-               } },
-               "caretLast": { "file": {
-                       "ltr": "images/icons/caret-ltr.svg",
-                       "rtl": "images/icons/caret-rtl.svg"
-               } },
-               "caretDown": { "file": "images/icons/caretDown.svg" },
-               "caretUp": { "file": "images/icons/caretUp.svg" },
+               "caretNext": {
+                       "file": {
+                               "ltr": "images/icons/move-rtl.svg",
+                               "rtl": "images/icons/move-ltr.svg"
+                       },
+                       "deprecated": "Replaced since v0.21.3, use 'next' instead."
+               },
+               "caretLast": {
+                       "file": {
+                               "ltr": "images/icons/move-ltr.svg",
+                               "rtl": "images/icons/move-rtl.svg"
+                       },
+                       "deprecated": "Replaced since v0.21.3, use 'previous' instead."
+               },
+               "caretDown": { "file": "images/icons/expand.svg", "deprecated": "Replaced since v0.21.3, use 'expand' instead." },
+               "caretUp": { "file": "images/icons/collapse.svg", "deprecated": "Replaced since v0.21.3, use 'collapse' instead." },
                "collapse": { "file": "images/icons/collapse.svg" },
                "downTriangle": { "file": "images/icons/downTriangle.svg" },
                "expand": { "file": "images/icons/expand.svg" },
                        "rtl": "images/icons/move-ltr.svg"
                        }
                },
+               "last": { "file": {
+                       "ltr": "images/icons/move-end-ltr.svg",
+                       "rtl": "images/icons/move-end-rtl.svg"
+                       }
+               },
+               "first": { "file": {
+                       "ltr": "images/icons/move-end-rtl.svg",
+                       "rtl": "images/icons/move-end-ltr.svg"
+                       }
+               },
                "upTriangle": { "file": "images/icons/upTriangle.svg" }
        }
 }
diff --git a/resources/lib/oojs-ui/themes/apex/icons-user.json b/resources/lib/oojs-ui/themes/apex/icons-user.json
new file mode 100644 (file)
index 0000000..1aa8723
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "prefix": "oo-ui-icon",
+       "intro": "@import '../../../../src/styles/common';",
+       "images": {
+               "userAvatar": { "file": "images/icons/userAvatar.svg" }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/apex/icons.json b/resources/lib/oojs-ui/themes/apex/icons.json
deleted file mode 100644 (file)
index c0ccb36..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-{
-       "prefix": "oo-ui-icon",
-       "intro": "@import '../../../../src/styles/common';",
-       "images": {
-               "add": { "file": "images/icons/add.svg", "deprecated": "Moved since v0.19.5, use from the 'interactions' pack instead." },
-               "advanced": { "file": "images/icons/advanced.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
-               "alert": { "file": "images/icons/alert.svg", "deprecated": "Moved since v0.20.1, use from the 'alerts' pack instead." },
-               "cancel": { "file": "images/icons/cancel.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
-               "check": { "file": "images/icons/check.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
-               "circle": { "file": "images/icons/circle.svg", "deprecated": "Deprecated since v0.20.1, do not use." },
-               "close": { "file": "images/icons/close.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
-               "code": { "file": "images/icons/code.svg", "deprecated": "Moved since v0.16.2, use from the 'editing-advanced' pack instead." },
-               "collapse": { "file": "images/icons/collapse.svg", "deprecated": "Moved since v0.20.1, use from the 'movement' pack instead." },
-               "comment": { "file": "images/icons/comment.svg", "deprecated": "Moved since v0.20.1, use from the 'alerts' pack instead." },
-               "ellipsis": { "file": "images/icons/ellipsis.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
-               "expand": { "file": "images/icons/expand.svg", "deprecated": "Moved since v0.20.1, use from the 'movement' pack instead." },
-               "help": { "file": {
-                       "ltr": "images/icons/help-ltr.svg",
-                       "rtl": "images/icons/help-rtl.svg",
-                       "lang": {
-                               "he,yi": "images/icons/help-ltr.svg"
-                       },
-                       "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead."
-               } },
-               "history": { "file": "images/icons/history.svg", "deprecated": "Moved since v0.20.1, use from the 'content' pack instead." },
-               "info": { "file": "images/icons/info.svg", "deprecated": "Moved since v0.20.1, use from the 'content' pack instead." },
-               "menu": { "file": "images/icons/menu.svg", "deprecated": "Moved since v0.20.1, use from the 'layout' pack instead." },
-               "next": { "file": {
-                       "ltr": "images/icons/move-ltr.svg",
-                       "rtl": "images/icons/move-rtl.svg"
-                       },
-                       "deprecated": "Moved since v0.20.1, use from the 'movement' pack instead."
-               },
-               "notice": { "file": "images/icons/notice.svg", "deprecated": "Moved since v0.20.1, use from the 'alerts' pack instead." },
-               "previous": { "file": {
-                       "ltr": "images/icons/move-rtl.svg",
-                       "rtl": "images/icons/move-ltr.svg"
-                       },
-                       "deprecated": "Moved since v0.20.1, use from the 'movement' pack instead."
-               },
-               "redo": { "file": {
-                       "ltr": "images/icons/arched-arrow-ltr.svg",
-                       "rtl": "images/icons/arched-arrow-rtl.svg"
-                       },
-                       "deprecated": "Moved since v0.16.2, use from the 'editing-core' pack instead."
-               },
-               "remove": { "file": "images/icons/trash.svg", "deprecated": "Replaced since v0.14.0, use 'trash' from the 'moderation' pack instead." },
-               "search": { "file": {
-                       "ltr": "images/icons/search-ltr.svg",
-                       "rtl": "images/icons/search-rtl.svg"
-                       },
-                       "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead."
-               },
-               "settings": { "file": "images/icons/settings.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
-               "tag": { "file": "images/icons/tag.svg", "deprecated": "Moved since v0.20.1, use from the 'content' pack instead." },
-               "undo": { "file": {
-                       "ltr": "images/icons/arched-arrow-rtl.svg",
-                       "rtl": "images/icons/arched-arrow-ltr.svg"
-                       },
-                       "deprecated": "Moved since v0.16.2, use from the 'editing-core' pack instead."
-               },
-               "window": { "file": "images/icons/window.svg", "deprecated": "Moved since v0.20.1, use from the 'content' pack instead." }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr.png b/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr.png
deleted file mode 100644 (file)
index ad046b6..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr.svg b/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr.svg
deleted file mode 100644 (file)
index ba3ff91..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M15 5H8c-1.1 0-2 .9-2 2v3h3v11l4-3 4 3V7c0-1.1-.9-2-2-2zM9 9H7V7c0-.6.4-1 1-1h1v3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl.png b/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl.png
deleted file mode 100644 (file)
index 0d19f03..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl.svg b/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl.svg
deleted file mode 100644 (file)
index fcbd135..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M8 5h7c1.1 0 2 .9 2 2v3h-3v11l-4-3-4 3V7c0-1.1.9-2 2-2zm6 4h2V7c0-.6-.4-1-1-1h-1v3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/caret-ltr.png b/resources/lib/oojs-ui/themes/apex/images/icons/caret-ltr.png
deleted file mode 100644 (file)
index e95caf2..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/caret-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/caret-ltr.svg b/resources/lib/oojs-ui/themes/apex/images/icons/caret-ltr.svg
deleted file mode 100644 (file)
index 44d2d1a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M7 13.1l8.9 8.9c.8-.8.8-2 0-2.8l-6.1-6.1 6-6.1c.8-.8.8-2 0-2.8L7 13.1z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/caret-rtl.png b/resources/lib/oojs-ui/themes/apex/images/icons/caret-rtl.png
deleted file mode 100644 (file)
index e59bdd5..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/caret-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/caret-rtl.svg b/resources/lib/oojs-ui/themes/apex/images/icons/caret-rtl.svg
deleted file mode 100644 (file)
index 1f90f5c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M16.5 13.1L7.6 22c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/caretDown.png b/resources/lib/oojs-ui/themes/apex/images/icons/caretDown.png
deleted file mode 100644 (file)
index a46ffdb..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/caretDown.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/caretDown.svg b/resources/lib/oojs-ui/themes/apex/images/icons/caretDown.svg
deleted file mode 100644 (file)
index 89e0612..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 16l8.9-8.9c-.8-.8-2-.8-2.8 0L12 13.2l-6.1-6c-.8-.8-2-.8-2.8 0L12 16z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/caretUp.png b/resources/lib/oojs-ui/themes/apex/images/icons/caretUp.png
deleted file mode 100644 (file)
index 9e5c022..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/caretUp.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/caretUp.svg b/resources/lib/oojs-ui/themes/apex/images/icons/caretUp.svg
deleted file mode 100644 (file)
index fcf4e13..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 6.5l8.9 8.9c-.8.8-2 .8-2.8 0L12 9.3l-6.1 6c-.8.8-2 .8-2.8 0L12 6.5z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/circle.png b/resources/lib/oojs-ui/themes/apex/images/icons/circle.png
deleted file mode 100644 (file)
index 32ba403..0000000
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/circle.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/circle.svg b/resources/lib/oojs-ui/themes/apex/images/icons/circle.svg
deleted file mode 100644 (file)
index 18133cc..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <circle cx="12" cy="12" r="6"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/clip.png b/resources/lib/oojs-ui/themes/apex/images/icons/clip.png
new file mode 100644 (file)
index 0000000..ac25483
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/clip.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/clip.svg b/resources/lib/oojs-ui/themes/apex/images/icons/clip.svg
new file mode 100644 (file)
index 0000000..86d1dbf
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M17.5 4.5v13.2L12 13.5l-5.5 4.2V4.5zM5 21l7-6 7 6V3H5z" fill-rule="evenodd"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/move-end-ltr.png b/resources/lib/oojs-ui/themes/apex/images/icons/move-end-ltr.png
new file mode 100644 (file)
index 0000000..9d35b9e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/move-end-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/move-end-ltr.svg b/resources/lib/oojs-ui/themes/apex/images/icons/move-end-ltr.svg
new file mode 100644 (file)
index 0000000..98adcf7
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="move-end-ltr">
+        <path id="arrow" d="M7.935 7.18l5.302 5.303-5.302 5.303L9.35 19.2l6.715-6.717L9.35 5.767z"/>
+        <path id="bar" d="M16 7h2v11h-2z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/move-end-rtl.png b/resources/lib/oojs-ui/themes/apex/images/icons/move-end-rtl.png
new file mode 100644 (file)
index 0000000..bcd8a0c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/move-end-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/move-end-rtl.svg b/resources/lib/oojs-ui/themes/apex/images/icons/move-end-rtl.svg
new file mode 100644 (file)
index 0000000..5f9d60d
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="move-end-ltr">
+        <path id="arrow" d="M16.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.72 6.714 6.71z"/>
+        <path id="bar" d="M6 7h2v11H6z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/pushPin.png b/resources/lib/oojs-ui/themes/apex/images/icons/pushPin.png
new file mode 100644 (file)
index 0000000..27d49e2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/pushPin.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/pushPin.svg b/resources/lib/oojs-ui/themes/apex/images/icons/pushPin.svg
new file mode 100644 (file)
index 0000000..b852cd0
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M17.445 12.225c-.813-.935-1.775-.739-2.883-1.768-.55-.511-.498-2.36-.498-2.36s-.041-1.836.524-2.401c.39-.39 1.076-.49 1.475-.883a.973.973 0 0 0 .217-.317c.007-.013.014-.023.018-.035.035-.092.054-.2.064-.316.003-.03.017-.055.017-.085 0-.005-.003-.01-.004-.015.001-.008.004-.014.004-.022 0-.02-.015-.03-.017-.048a1.052 1.052 0 0 0-1.043-.974H8.681c-.555 0-.997.43-1.043.974-.002.018-.017.028-.017.048 0 .008.003.014.003.022 0 .006-.003.01-.003.015 0 .03.014.055.017.085.01.116.029.224.064.316.004.012.012.022.018.035a.965.965 0 0 0 .217.317c.399.393 1.084.493 1.475.883.565.565.523 2.401.523 2.401s.053 1.849-.497 2.36c-1.108 1.03-2.07.833-2.883 1.768C5.979 12.887 6 14 6 14h5.333v4.578L12 21l.668-2.422V14H18s.02-1.113-.555-1.775z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/unClip.png b/resources/lib/oojs-ui/themes/apex/images/icons/unClip.png
new file mode 100644 (file)
index 0000000..37916ef
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/unClip.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/unClip.svg b/resources/lib/oojs-ui/themes/apex/images/icons/unClip.svg
new file mode 100644 (file)
index 0000000..68459db
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M5 21l7-6 7 6V3H5z" fill-rule="evenodd"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/userAvatar.png b/resources/lib/oojs-ui/themes/apex/images/icons/userAvatar.png
new file mode 100644 (file)
index 0000000..8190095
Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/userAvatar.png differ
diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/userAvatar.svg b/resources/lib/oojs-ui/themes/apex/images/icons/userAvatar.svg
new file mode 100644 (file)
index 0000000..ce714e6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M18.75 17.4c-1.08-.36-3.6-1.35-3.6-1.35-.81-.27-.81-.99-.9-1.8v-.09c1.26-1.08 2.25-2.88 2.25-4.86 0-4.23-1.8-5.85-4.5-5.85-1.89 0-4.5 1.08-4.5 5.85 0 1.89.99 3.69 2.25 4.86v.09c0 .81-.09 1.53-.9 1.8 0 0-2.61.99-3.6 1.35-1.17.36-2.25.9-2.25 2.25v.9h18v-.9c0-1.08-.72-1.8-2.25-2.25z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-accessibility.json b/resources/lib/oojs-ui/themes/mediawiki/icons-accessibility.json
deleted file mode 100644 (file)
index 4db45f4..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#ffffff",
-                       "global": true
-               }
-       },
-       "images": {
-               "bright": { "file": "images/icons/bright.svg" },
-               "halfBright": { "file": "images/icons/halfBright.svg" },
-               "notBright": { "file": "images/icons/notBright.svg" },
-               "moon": { "file": "images/icons/moon.svg" },
-               "largerText": { "file": {
-                       "ltr": "images/icons/largerText-ltr.svg",
-                       "rtl": "images/icons/largerText-rtl.svg"
-               } },
-               "smallerText": { "file": {
-                       "ltr": "images/icons/smallerText-ltr.svg",
-                       "rtl": "images/icons/smallerText-rtl.svg"
-               } },
-               "visionSimulator": { "file": "images/icons/visionSimulator.svg" }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-alerts.json b/resources/lib/oojs-ui/themes/mediawiki/icons-alerts.json
deleted file mode 100644 (file)
index c169b56..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#fff",
-                       "global": true
-               },
-               "progressive": {
-                       "color": "#36c",
-                       "global": true
-               },
-               "constructive": {
-                       "color": "#36c"
-               },
-               "destructive": {
-                       "color": "#d33"
-               },
-               "warning": {
-                       "color": "#ff5d00"
-               }
-       },
-       "images": {
-               "alert": { "file": "images/icons/alert.svg", "variants": [ "warning" ] },
-               "bell": { "file": "images/icons/bell.svg" },
-               "bellOn": { "file": {
-                       "ltr": "images/icons/bellOn-ltr.svg",
-                       "rtl": "images/icons/bellOn-rtl.svg"
-               } },
-               "comment": { "file": "images/icons/comment.svg" },
-               "eye": { "file": "images/icons/eye.svg" },
-               "eyeClosed": { "file": "images/icons/eyeClosed.svg" },
-               "message": { "file": {
-                       "ltr": "images/icons/message-ltr.svg",
-                       "rtl": "images/icons/message-rtl.svg"
-               } },
-               "notice": { "file": "images/icons/notice.svg" },
-               "signature": { "file": {
-                       "ltr": "images/icons/signature-ltr.svg",
-                       "rtl": "images/icons/signature-rtl.svg"
-               } },
-               "speechBubble": { "file": {
-                       "ltr": "images/icons/speechBubble-ltr.svg",
-                       "rtl": "images/icons/speechBubble-rtl.svg"
-               } },
-               "speechBubbleAdd": { "file": {
-                       "ltr": "images/icons/speechBubbleAdd-ltr.svg",
-                       "rtl": "images/icons/speechBubbleAdd-rtl.svg"
-               } },
-               "speechBubbles": { "file": {
-                       "ltr": "images/icons/speechBubbles-ltr.svg",
-                       "rtl": "images/icons/speechBubbles-rtl.svg"
-               } },
-               "tray": { "file": "images/icons/tray.svg" }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-content.json b/resources/lib/oojs-ui/themes/mediawiki/icons-content.json
deleted file mode 100644 (file)
index e952108..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#fff",
-                       "global": true
-               },
-               "progressive": {
-                       "color": "#36c",
-                       "global": true
-               },
-               "constructive": {
-                       "color": "#36c"
-               },
-               "destructive": {
-                       "color": "#d33"
-               },
-               "warning": {
-                       "color": "#ff5d00"
-               }
-       },
-       "images": {
-               "article": { "file": {
-                       "ltr": "images/icons/article-ltr.svg",
-                       "rtl": "images/icons/article-rtl.svg"
-               } },
-               "articles": { "file": {
-                       "ltr": "images/icons/articles-ltr.svg",
-                       "rtl": "images/icons/articles-rtl.svg"
-               } },
-               "articleCheck": { "file": {
-                       "ltr": "images/icons/articleCheck-ltr.svg",
-                       "rtl": "images/icons/articleCheck-rtl.svg"
-               } },
-               "articleSearch": { "file": {
-                       "ltr": "images/icons/articleSearch-ltr.svg",
-                       "rtl": "images/icons/articleSearch-rtl.svg"
-               } },
-               "articleRedirect": { "file": {
-                       "ltr": "images/icons/articleRedirect-ltr.svg",
-                       "rtl": "images/icons/articleRedirect-rtl.svg"
-               } },
-               "book": { "file": {
-                       "ltr": "images/icons/book-ltr.svg",
-                       "rtl": "images/icons/book-rtl.svg"
-               } },
-               "citeArticle": { "file": {
-                       "ltr": "images/icons/citeArticle-ltr.svg",
-                       "rtl": "images/icons/citeArticle-rtl.svg"
-               } },
-               "die": { "file": {
-                       "ltr": "images/icons/die-ltr.svg",
-                       "rtl": "images/icons/die-rtl.svg"
-               } },
-               "download": { "file": {
-                       "ltr": "images/icons/download-ltr.svg",
-                       "rtl": "images/icons/download-rtl.svg"
-               } },
-               "folderPlaceholder": { "file": {
-                       "ltr": "images/icons/folderPlaceholder-ltr.svg",
-                       "rtl": "images/icons/folderPlaceholder-rtl.svg"
-               } },
-               "history": { "file": "images/icons/history.svg" },
-               "info": { "file": "images/icons/info.svg" },
-               "journal": { "file": {
-                       "ltr": "images/icons/journal-ltr.svg",
-                       "rtl": "images/icons/journal-rtl.svg"
-               } },
-               "newspaper": { "file": {
-                       "ltr": "images/icons/newspaper-ltr.svg",
-                       "rtl": "images/icons/newspaper-rtl.svg"
-               } },
-               "tag": { "file": "images/icons/tag.svg", "variants": [ "destructive", "warning", "constructive" ] },
-               "upload": { "file": {
-                       "ltr": "images/icons/upload-ltr.svg",
-                       "rtl": "images/icons/upload-rtl.svg"
-               } },
-               "window": { "file": "images/icons/window.svg" }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-editing-advanced.json b/resources/lib/oojs-ui/themes/mediawiki/icons-editing-advanced.json
deleted file mode 100644 (file)
index 7cbbced..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#fff",
-                       "global": true
-               },
-               "progressive": {
-                       "color": "#36c",
-                       "global": true
-               },
-               "constructive": {
-                       "color": "#36c"
-               },
-               "destructive": {
-                       "color": "#d33"
-               },
-               "warning": {
-                       "color": "#ff5d00"
-               }
-       },
-       "images": {
-               "alignCentre": { "file": "images/icons/align-center.svg" },
-               "alignLeft": { "file": "images/icons/align-float-left.svg" },
-               "alignRight": { "file": "images/icons/align-float-right.svg" },
-               "attachment": { "file": {
-                       "ltr": "images/icons/attachment-ltr.svg",
-                       "rtl": "images/icons/attachment-rtl.svg"
-               } },
-               "calendar": { "file": {
-                       "ltr": "images/icons/calendar-ltr.svg",
-                       "rtl": "images/icons/calendar-rtl.svg"
-               } },
-               "code": { "file": "images/icons/code.svg" },
-               "find": { "file": {
-                       "ltr": "images/icons/find-ltr.svg",
-                       "rtl": "images/icons/find-rtl.svg"
-               } },
-               "language": { "file": {
-                       "ltr": "images/icons/language-ltr.svg",
-                       "rtl": "images/icons/language-rtl.svg"
-               } },
-               "layout": { "file": {
-                       "ltr": "images/icons/layout-ltr.svg",
-                       "rtl": "images/icons/layout-rtl.svg"
-               } },
-               "markup": { "file": "images/icons/markup.svg" },
-               "newline": { "file": {
-                       "ltr": "images/icons/newline-ltr.svg",
-                       "rtl": "images/icons/newline-rtl.svg"
-               } },
-               "noWikiText": { "file": {
-                       "ltr": "images/icons/noWikiText-ltr.svg",
-                       "rtl": "images/icons/noWikiText-rtl.svg"
-               } },
-               "outline": { "file": {
-                       "ltr": "images/icons/outline-ltr.svg",
-                       "rtl": "images/icons/outline-rtl.svg"
-               } },
-               "puzzle": { "file": {
-                       "ltr": "images/icons/puzzle-ltr.svg",
-                       "rtl": "images/icons/puzzle-rtl.svg"
-               } },
-               "quotes": { "file": {
-                       "ltr": "images/icons/quotes-ltr.svg",
-                       "rtl": "images/icons/quotes-rtl.svg"
-               } },
-               "quotesAdd": { "file": {
-                       "ltr": "images/icons/quotesAdd-ltr.svg",
-                       "rtl": "images/icons/quotesAdd-rtl.svg"
-               } },
-               "redirect": { "file": {
-                       "ltr": "images/icons/articleRedirect-ltr.svg",
-                       "rtl": "images/icons/articleRedirect-rtl.svg"
-               } },
-               "searchCaseSensitive": { "file": "images/icons/case-sensitive.svg" },
-               "searchDiacritics": { "file": "images/icons/diacritic.svg" },
-               "searchRegularExpression": { "file": "images/icons/regular-expression.svg" },
-               "specialCharacter": { "file": "images/icons/specialCharacter.svg" },
-               "table": { "file": "images/icons/table.svg" },
-               "tableAddColumnAfter": { "file": {
-                       "ltr": "images/icons/table-insert-column-rtl.svg",
-                       "rtl": "images/icons/table-insert-column-ltr.svg"
-               } },
-               "tableAddColumnBefore": { "file": {
-                       "ltr": "images/icons/table-insert-column-ltr.svg",
-                       "rtl": "images/icons/table-insert-column-rtl.svg"
-               } },
-               "tableAddRowAfter": { "file": "images/icons/table-insert-row-after.svg" },
-               "tableAddRowBefore": { "file": "images/icons/table-insert-row-before.svg" },
-               "tableCaption": { "file": "images/icons/table-caption.svg" },
-               "tableMergeCells": { "file": "images/icons/table-merge-cells.svg" },
-               "templateAdd": { "file": {
-                       "ltr": "images/icons/templateAdd-ltr.svg",
-                       "rtl": "images/icons/templateAdd-rtl.svg"
-               } },
-               "translation": { "file": {
-                       "ltr": "images/icons/language-ltr.svg",
-                       "rtl": "images/icons/language-rtl.svg"
-               } },
-               "wikiText": { "file": "images/icons/wikiText.svg" }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-editing-core.json b/resources/lib/oojs-ui/themes/mediawiki/icons-editing-core.json
deleted file mode 100644 (file)
index 4515405..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#fff",
-                       "global": true
-               },
-               "progressive": {
-                       "color": "#36c",
-                       "global": true
-               },
-               "constructive": {
-                       "color": "#36c"
-               },
-               "destructive": {
-                       "color": "#d33"
-               },
-               "warning": {
-                       "color": "#ff5d00"
-               }
-       },
-       "images": {
-               "edit": { "file": {
-                       "ltr": "images/icons/edit-ltr.svg",
-                       "rtl": "images/icons/edit-rtl.svg"
-               }, "variants": [ "progressive" ] },
-               "editLock": { "file": {
-                       "ltr": "images/icons/editLock-ltr.svg",
-                       "rtl": "images/icons/editLock-rtl.svg"
-               } },
-               "editUndo": { "file": {
-                       "ltr": "images/icons/editUndo-ltr.svg",
-                       "rtl": "images/icons/editUndo-rtl.svg"
-               } },
-               "link": { "file": {
-                       "ltr": "images/icons/link-ltr.svg",
-                       "rtl": "images/icons/link-rtl.svg"
-               } },
-               "linkExternal": { "file": {
-                       "ltr": "images/icons/external-link-ltr.svg",
-                       "rtl":  "images/icons/external-link-rtl.svg"
-               } },
-               "linkSecure": { "file": "images/icons/secure-link.svg" },
-               "redo": { "file": {
-                       "ltr": "images/icons/arched-arrow-ltr.svg",
-                       "rtl": "images/icons/arched-arrow-rtl.svg"
-               } },
-               "undo": { "file": {
-                       "ltr": "images/icons/arched-arrow-rtl.svg",
-                       "rtl": "images/icons/arched-arrow-ltr.svg"
-               } }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-editing-list.json b/resources/lib/oojs-ui/themes/mediawiki/icons-editing-list.json
deleted file mode 100644 (file)
index 3edb545..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#fff",
-                       "global": true
-               },
-               "progressive": {
-                       "color": "#36c",
-                       "global": true
-               },
-               "constructive": {
-                       "color": "#36c"
-               },
-               "destructive": {
-                       "color": "#d33"
-               },
-               "warning": {
-                       "color": "#ff5d00"
-               }
-       },
-       "images": {
-               "indent": { "file": {
-                       "ltr": "images/icons/indent-ltr.svg",
-                       "rtl": "images/icons/indent-rtl.svg"
-               } },
-               "listBullet": { "file": {
-                       "ltr": "images/icons/listBullet-ltr.svg",
-                       "rtl": "images/icons/listBullet-rtl.svg"
-               } },
-               "listNumbered": { "file": {
-                       "ltr": "images/icons/listNumbered-ltr.svg",
-                       "rtl": "images/icons/listNumbered-rtl.svg"
-               } },
-               "outdent": { "file": {
-                       "ltr": "images/icons/outdent-ltr.svg",
-                       "rtl": "images/icons/outdent-rtl.svg"
-               } }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-editing-styling.json b/resources/lib/oojs-ui/themes/mediawiki/icons-editing-styling.json
deleted file mode 100644 (file)
index 85e47ee..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#fff",
-                       "global": true
-               },
-               "progressive": {
-                       "color": "#36c",
-                       "global": true
-               },
-               "constructive": {
-                       "color": "#36c"
-               },
-               "destructive": {
-                       "color": "#d33"
-               },
-               "warning": {
-                       "color": "#ff5d00"
-               }
-       },
-       "images": {
-               "bigger": { "file": {
-                       "ltr": "images/icons/bigger-ltr.svg",
-                       "rtl": "images/icons/bigger-rtl.svg"
-               } },
-               "smaller": { "file": {
-                       "ltr": "images/icons/smaller-ltr.svg",
-                       "rtl": "images/icons/smaller-rtl.svg"
-               } },
-               "subscript": { "file": {
-                       "ltr": "images/icons/subscript-ltr.svg",
-                       "rtl": "images/icons/subscript-rtl.svg"
-               } },
-               "superscript": { "file": {
-                       "ltr": "images/icons/superscript-ltr.svg",
-                       "rtl": "images/icons/superscript-rtl.svg"
-               } },
-               "bold": { "file": {
-                       "default": "images/icons/bold-a.svg",
-                       "lang": {
-                               "ar": "images/icons/bold-arab-ain.svg",
-                               "be": "images/icons/bold-cyrl-te.svg",
-                               "cs,en,en-ca,en-gb,he,ml,pl,sco": "images/icons/bold-b.svg",
-                               "da,de,hu,ksh,nn,no,sv": "images/icons/bold-f.svg",
-                               "es,gl,pt": "images/icons/bold-n.svg",
-                               "eu,fi": "images/icons/bold-l.svg",
-                               "fa": "images/icons/bold-arab-dad.svg",
-                               "fr,it": "images/icons/bold-g.svg",
-                               "hy": "images/icons/bold-armn-to.svg",
-                               "ka": "images/icons/bold-geor-man.svg",
-                               "ky,ru,uk": "images/icons/bold-cyrl-zhe.svg",
-                               "nl": "images/icons/bold-v.svg",
-                               "os": "images/icons/bold-cyrl-be.svg"
-                       }
-               } },
-               "highlight": { "file": {
-                       "ltr": "images/icons/highlight-ltr.svg",
-                       "rtl": "images/icons/highlight-rtl.svg"
-               } },
-               "italic": { "file": {
-                       "default": "images/icons/italic-a.svg",
-                       "lang": {
-                                       "ar": "images/icons/italic-arab-meem.svg",
-                                       "cs,en,en-ca,en-gb,fr,he,ml,pl,pt,sco": "images/icons/italic-i.svg",
-                                       "be,da,de,fi,ky,nn,no,os,sv,ru,uk": "images/icons/italic-k.svg",
-                                       "es,gl,it,nl": "images/icons/italic-c.svg",
-                                       "eu": "images/icons/italic-e.svg",
-                                       "fa": "images/icons/italic-arab-keheh-jeem.svg",
-                                       "hu": "images/icons/italic-d.svg",
-                                       "hy": "images/icons/italic-armn-sha.svg",
-                                       "ksh": "images/icons/italic-s.svg",
-                                       "ka": "images/icons/italic-geor-kan.svg"
-                               }
-               } },
-               "strikethrough": { "file": {
-                       "default": "images/icons/strikethrough-a.svg",
-                       "lang": {
-                               "en,en-ca,en-gb": "images/icons/strikethrough-s.svg",
-                               "fi": "images/icons/strikethrough-y.svg"
-                       }
-               } },
-               "underline": { "file": {
-                       "default": "images/icons/underline-a.svg",
-                       "lang": {
-                               "en,en-ca,en-gb": "images/icons/underline-u.svg"
-                       }
-               } },
-               "textLanguage": { "file": {
-                       "ltr": "images/icons/language-ltr.svg",
-                       "rtl": "images/icons/language-rtl.svg"
-               } },
-               "textDirLTR": { "file": "images/icons/text-dir-lefttoright.svg" },
-               "textDirRTL": { "file": "images/icons/text-dir-righttoleft.svg" },
-               "textStyle": { "file": "images/icons/text-style.svg" }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json b/resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json
deleted file mode 100644 (file)
index 668173f..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#fff",
-                       "global": true
-               },
-               "progressive": {
-                       "color": "#36c",
-                       "global": true
-               },
-               "constructive": {
-                       "color": "#36c"
-               },
-               "destructive": {
-                       "color": "#d33"
-               },
-               "warning": {
-                       "color": "#ff5d00"
-               }
-       },
-       "images": {
-               "add": { "file": "images/icons/add.svg", "variants": [ "constructive", "progressive" ] },
-               "advanced": { "file": "images/icons/advanced.svg" },
-               "bookmark": { "file": {
-                       "ltr": "images/icons/bookmark-ltr.svg",
-                       "rtl": "images/icons/bookmark-rtl.svg"
-               } },
-               "browser": { "file": {
-                       "ltr": "images/icons/browser-ltr.svg",
-                       "rtl": "images/icons/browser-rtl.svg"
-               } },
-               "cancel": { "file": "images/icons/cancel.svg", "variants": [ "destructive" ] },
-               "check": { "file": "images/icons/check.svg", "variants": [ "constructive", "progressive", "destructive" ] },
-               "clear": { "file": "images/icons/clear.svg" },
-               "clock": { "file": "images/icons/clock.svg" },
-               "close": { "file": "images/icons/close.svg" },
-               "ellipsis": { "file": "images/icons/ellipsis.svg" },
-               "feedback": {
-                       "file": {
-                               "ltr": "images/icons/feedback-ltr.svg",
-                               "rtl": "images/icons/feedback-rtl.svg"
-                       },
-                       "variants": [ "progressive" ]
-               },
-               "funnel": { "file": {
-                       "ltr": "images/icons/funnel-ltr.svg",
-                       "rtl": "images/icons/funnel-rtl.svg"
-               } },
-               "heart": { "file": "images/icons/heart.svg" },
-               "help": { "file": {
-                       "ltr": "images/icons/help-ltr.svg",
-                       "rtl": "images/icons/help-rtl.svg",
-                       "lang": {
-                               "he,yi": "images/icons/help-ltr.svg"
-                       }
-               } },
-               "key": { "file": {
-                       "ltr": "images/icons/key-ltr.svg",
-                       "rtl": "images/icons/key-rtl.svg"
-               } },
-               "keyboard": { "file": {
-                       "ltr": "images/icons/keyboard-ltr.svg",
-                       "rtl": "images/icons/keyboard-rtl.svg"
-               } },
-               "logOut": { "file": {
-                       "ltr": "images/icons/logOut-ltr.svg",
-                       "rtl": "images/icons/logOut-rtl.svg"
-               } },
-               "newWindow": { "file": {
-                       "ltr": "images/icons/newWindow-ltr.svg",
-                       "rtl": "images/icons/newWindow-rtl.svg"
-               } },
-               "printer": { "file": {
-                       "ltr": "images/icons/printer-ltr.svg",
-                       "rtl": "images/icons/printer-rtl.svg"
-               } },
-               "search": { "file": {
-                       "ltr": "images/icons/search-ltr.svg",
-                       "rtl": "images/icons/search-rtl.svg"
-                       }
-               },
-               "settings": { "file": "images/icons/settings.svg" },
-               "subtract": { "file": "images/icons/subtract.svg" },
-               "sun": { "file": {
-                       "ltr": "images/icons/sun-ltr.svg",
-                       "rtl": "images/icons/sun-rtl.svg"
-               } },
-               "watchlist": { "file": {
-                       "ltr": "images/icons/watchlist-ltr.svg",
-                       "rtl": "images/icons/watchlist-rtl.svg"
-               } }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-layout.json b/resources/lib/oojs-ui/themes/mediawiki/icons-layout.json
deleted file mode 100644 (file)
index f720a25..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#fff",
-                       "global": true
-               },
-               "progressive": {
-                       "color": "#36c",
-                       "global": true
-               },
-               "constructive": {
-                       "color": "#36c"
-               },
-               "destructive": {
-                       "color": "#d33"
-               },
-               "warning": {
-                       "color": "#ff5d00"
-               }
-       },
-       "images": {
-               "menu": { "file": "images/icons/menu.svg" },
-               "stripeFlow": { "file": {
-                       "ltr": "images/icons/stripeFlow-ltr.svg",
-                       "rtl": "images/icons/stripeFlow-rtl.svg"
-               } },
-               "stripeSideMenu": { "file": "images/icons/stripeSideMenu.svg" },
-               "stripeSummary": { "file": {
-                       "ltr": "images/icons/stripeSummary-ltr.svg",
-                       "rtl": "images/icons/stripeSummary-rtl.svg"
-               } },
-               "stripeToC": { "file": {
-                       "ltr": "images/icons/stripeToC-ltr.svg",
-                       "rtl": "images/icons/stripeToC-rtl.svg"
-               }, "variants": [ "progressive" ] },
-               "viewCompact": { "file": "images/icons/viewCompact.svg" },
-               "viewDetails": { "file": {
-                       "ltr": "images/icons/viewDetails-ltr.svg",
-                       "rtl": "images/icons/viewDetails-rtl.svg"
-               } }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-location.json b/resources/lib/oojs-ui/themes/mediawiki/icons-location.json
deleted file mode 100644 (file)
index 58feb23..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#fff",
-                       "global": true
-               },
-               "progressive": {
-                       "color": "#36c",
-                       "global": true
-               },
-               "constructive": {
-                       "color": "#36c"
-               },
-               "destructive": {
-                       "color": "#d33"
-               },
-               "warning": {
-                       "color": "#ff5d00"
-               }
-       },
-       "images": {
-               "map": { "file": {
-                       "ltr": "images/icons/map-ltr.svg",
-                       "rtl": "images/icons/map-rtl.svg"
-               } },
-               "mapPin": { "file": "images/icons/mapPin.svg" },
-               "mapPinAdd": { "file": {
-                       "ltr": "images/icons/mapPinAdd-ltr.svg",
-                       "rtl": "images/icons/mapPinAdd-rtl.svg"
-               } },
-               "mapTrail": { "file": {
-                       "ltr": "images/icons/mapTrail-ltr.svg",
-                       "rtl": "images/icons/mapTrail-rtl.svg"
-               } },
-               "wikitrail": { "file": {
-                       "ltr": "images/icons/mapTrail-ltr.svg",
-                       "rtl": "images/icons/mapTrail-rtl.svg"
-               }, "deprecated": "Renamed to 'mapTrail' since v0.20.1."
-               }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-media.json b/resources/lib/oojs-ui/themes/mediawiki/icons-media.json
deleted file mode 100644 (file)
index afdb9e5..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#fff",
-                       "global": true
-               },
-               "progressive": {
-                       "color": "#36c",
-                       "global": true
-               },
-               "constructive": {
-                       "color": "#36c"
-               },
-               "destructive": {
-                       "color": "#d33"
-               },
-               "warning": {
-                       "color": "#ff5d00"
-               }
-       },
-       "images": {
-               "fullScreen": { "file": "images/icons/fullScreen.svg" },
-               "image": { "file": {
-                       "ltr": "images/icons/image-ltr.svg",
-                       "rtl": "images/icons/image-rtl.svg"
-               } },
-               "imageAdd": { "file": {
-                       "ltr": "images/icons/imageAdd-ltr.svg",
-                       "rtl": "images/icons/imageAdd-rtl.svg"
-               } },
-               "imageLock": { "file": {
-                       "ltr": "images/icons/imageLock-ltr.svg",
-                       "rtl": "images/icons/imageLock-rtl.svg"
-               } },
-               "imageGallery": { "file": {
-                       "ltr": "images/icons/imageGallery-ltr.svg",
-                       "rtl": "images/icons/imageGallery-rtl.svg"
-               } },
-               "play": { "file": {
-                       "ltr": "images/icons/play-ltr.svg",
-                       "rtl": "images/icons/play-rtl.svg"
-               } },
-               "stop": { "file": "images/icons/stop.svg" }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-moderation.json b/resources/lib/oojs-ui/themes/mediawiki/icons-moderation.json
deleted file mode 100644 (file)
index 0a1ccd7..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#fff",
-                       "global": true
-               },
-               "progressive": {
-                       "color": "#36c",
-                       "global": true
-               },
-               "constructive": {
-                       "color": "#36c"
-               },
-               "destructive": {
-                       "color": "#d33"
-               },
-               "warning": {
-                       "color": "#ff5d00"
-               }
-       },
-       "images": {
-               "block": { "file": "images/icons/block.svg", "variants": [ "destructive" ] },
-               "unBlock": { "file": {
-                       "ltr": "images/icons/unBlock-ltr.svg",
-                       "rtl": "images/icons/unBlock-rtl.svg"
-               } },
-               "flag": { "file": {
-                       "ltr": "images/icons/flag-ltr.svg",
-                       "rtl": "images/icons/flag-rtl.svg"
-               } },
-               "unFlag": { "file": {
-                       "ltr": "images/icons/unFlag-ltr.svg",
-                       "rtl": "images/icons/unFlag-rtl.svg"
-               } },
-               "lock": { "file": {
-                       "ltr": "images/icons/lock-ltr.svg",
-                       "rtl": "images/icons/lock-rtl.svg"
-               }, "variants": [ "destructive" ] },
-               "unLock": { "file": {
-                       "ltr": "images/icons/unLock-ltr.svg",
-                       "rtl": "images/icons/unLock-rtl.svg"
-               }, "variants": [ "destructive" ] },
-               "star": { "file": "images/icons/star.svg", "variants": [ "constructive", "progressive" ] },
-               "halfStar": { "file": {
-                       "ltr": "images/icons/halfStar-ltr.svg",
-                       "rtl": "images/icons/halfStar-rtl.svg"
-               }, "variants": [ "constructive", "progressive" ] },
-               "unStar": { "file": "images/icons/unStar.svg", "variants": [ "constructive", "progressive" ] },
-               "trash": { "file": "images/icons/trash.svg" },
-               "unTrash": { "file": {
-                       "ltr": "images/icons/unTrash-ltr.svg",
-                       "rtl": "images/icons/unTrash-rtl.svg"
-               } },
-               "ongoingConversation": {
-                       "file": {
-                               "ltr": "images/icons/ongoingConversation-ltr.svg",
-                               "rtl": "images/icons/ongoingConversation-rtl.svg"
-                       },
-                       "variants": [ "progressive" ]
-               }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-movement.json b/resources/lib/oojs-ui/themes/mediawiki/icons-movement.json
deleted file mode 100644 (file)
index 0dc88e3..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#fff",
-                       "global": true
-               },
-               "progressive": {
-                       "color": "#36c",
-                       "global": true
-               },
-               "constructive": {
-                       "color": "#36c"
-               },
-               "destructive": {
-                       "color": "#d33"
-               },
-               "warning": {
-                       "color": "#ff5d00"
-               }
-       },
-       "images": {
-               "arrowNext": { "file": {
-                       "ltr": "images/icons/arrow-ltr.svg",
-                       "rtl": "images/icons/arrow-rtl.svg"
-               } },
-               "arrowLast": { "file": {
-                       "ltr": "images/icons/arrow-rtl.svg",
-                       "rtl": "images/icons/arrow-ltr.svg"
-               } },
-               "caretNext": { "file": {
-                       "ltr": "images/icons/caret-rtl.svg",
-                       "rtl": "images/icons/caret-ltr.svg"
-               } },
-               "caretLast": { "file": {
-                       "ltr": "images/icons/caret-ltr.svg",
-                       "rtl": "images/icons/caret-rtl.svg"
-               } },
-               "caretDown": { "file": "images/icons/caretDown.svg" },
-               "caretUp": { "file": "images/icons/caretUp.svg" },
-               "collapse": { "file": "images/icons/collapse.svg" },
-               "downTriangle": { "file": "images/icons/downTriangle.svg" },
-               "expand": { "file": "images/icons/expand.svg" },
-               "move": { "file": "images/icons/move.svg" },
-               "next": { "file": {
-                       "ltr": "images/icons/move-ltr.svg",
-                       "rtl": "images/icons/move-rtl.svg"
-                       }
-               },
-               "previous": { "file": {
-                       "ltr": "images/icons/move-rtl.svg",
-                       "rtl": "images/icons/move-ltr.svg"
-                       }
-               },
-               "upTriangle": { "file": "images/icons/upTriangle.svg" }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-user.json b/resources/lib/oojs-ui/themes/mediawiki/icons-user.json
deleted file mode 100644 (file)
index 5a70c5e..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#fff",
-                       "global": true
-               },
-               "progressive": {
-                       "color": "#36c",
-                       "global": true
-               },
-               "constructive": {
-                       "color": "#36c"
-               },
-               "destructive": {
-                       "color": "#d33"
-               },
-               "warning": {
-                       "color": "#ff5d00"
-               }
-       },
-       "images": {
-               "userActive": { "file": {
-                       "ltr": "images/icons/userActive-ltr.svg",
-                       "rtl": "images/icons/userActive-rtl.svg"
-               } },
-               "userAvatar": { "file": "images/icons/userAvatar.svg" },
-               "userInactive": { "file": {
-                       "ltr": "images/icons/userInactive-ltr.svg",
-                       "rtl": "images/icons/userInactive-rtl.svg"
-               } },
-               "userTalk": { "file": {
-                       "ltr": "images/icons/userTalk-ltr.svg",
-                       "rtl": "images/icons/userTalk-rtl.svg"
-               } }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-wikimedia.json b/resources/lib/oojs-ui/themes/mediawiki/icons-wikimedia.json
deleted file mode 100644 (file)
index 3bdecff..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#fff",
-                       "global": true
-               },
-               "progressive": {
-                       "color": "#36c",
-                       "global": true
-               }
-       },
-       "images": {
-               "logoCC": { "file": "images/icons/logo-cc.svg" },
-               "logoWikimediaCommons": { "file": "images/icons/logo-wikimediaCommons.svg" },
-               "logoWikimediaDiscovery": { "file": "images/icons/logo-wikimediaDiscovery.svg" },
-               "logoWikipedia": { "file": "images/icons/logo-wikipedia.svg" }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons.json b/resources/lib/oojs-ui/themes/mediawiki/icons.json
deleted file mode 100644 (file)
index 958e7e3..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-icon-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#fff",
-                       "global": true
-               },
-               "progressive": {
-                       "color": "#36c",
-                       "global": true
-               },
-               "constructive": {
-                       "color": "#36c"
-               },
-               "destructive": {
-                       "color": "#d33"
-               },
-               "warning": {
-                       "color": "#ff5d00"
-               }
-       },
-       "images": {
-               "add": { "file": "images/icons/add.svg", "variants": [ "constructive", "progressive" ], "deprecated": "Moved since v0.19.5, use from the 'interactions' pack instead." },
-               "advanced": { "file": "images/icons/advanced.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
-               "alert": { "file": "images/icons/alert.svg", "variants": [ "warning" ], "deprecated": "Moved since v0.20.1, use from the 'alerts' pack instead." },
-               "cancel": { "file": "images/icons/cancel.svg", "variants": [ "destructive" ], "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
-               "check": { "file": "images/icons/check.svg", "variants": [ "constructive", "progressive", "destructive" ], "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
-       "circle": { "file": "images/icons/circle.svg", "variants": [ "constructive", "progressive" ], "deprecated": "Deprecated since v0.20.1, do not use." },
-               "close": { "file": "images/icons/close.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
-               "code": { "file": "images/icons/code.svg", "deprecated": "Moved since v0.16.2, use from the 'editing-advanced' pack instead." },
-               "collapse": { "file": "images/icons/collapse.svg", "deprecated": "Moved since v0.20.1, use from the 'movement' pack instead." },
-               "comment": { "file": "images/icons/comment.svg", "deprecated": "Moved since v0.20.1, use from the 'alerts' pack instead." },
-               "ellipsis": { "file": "images/icons/ellipsis.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
-               "expand": { "file": "images/icons/expand.svg", "deprecated": "Moved since v0.20.1, use from the 'movement' pack instead." },
-               "help": { "file": {
-                       "ltr": "images/icons/help-ltr.svg",
-                       "rtl": "images/icons/help-rtl.svg",
-                       "lang": {
-                               "he,yi": "images/icons/help-ltr.svg"
-                       },
-                       "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead."
-               } },
-               "history": { "file": "images/icons/history.svg", "deprecated": "Moved since v0.20.1, use from the 'content' pack instead." },
-               "info": { "file": "images/icons/info.svg", "deprecated": "Moved since v0.20.1, use from the 'content' pack instead." },
-               "menu": { "file": "images/icons/menu.svg", "deprecated": "Moved since v0.20.1, use from the 'layout' pack instead." },
-               "next": { "file": {
-                       "ltr": "images/icons/move-ltr.svg",
-                       "rtl": "images/icons/move-rtl.svg"
-                       },
-                       "deprecated": "Moved since v0.20.1, use from the 'movement' pack instead."
-               },
-               "notice": { "file": "images/icons/notice.svg", "deprecated": "Moved since v0.20.1, use from the 'alerts' pack instead." },
-               "previous": { "file": {
-                       "ltr": "images/icons/move-rtl.svg",
-                       "rtl": "images/icons/move-ltr.svg"
-                       },
-                       "deprecated": "Moved since v0.20.1, use from the 'movement' pack instead."
-               },
-               "redo": { "file": {
-                       "ltr": "images/icons/arched-arrow-ltr.svg",
-                       "rtl": "images/icons/arched-arrow-rtl.svg"
-                       },
-                       "deprecated": "Moved since v0.16.2, use from the 'editing-core' pack instead."
-               },
-               "remove": { "file": "images/icons/trash.svg", "variants": [ "destructive" ], "deprecated": "Replaced since v0.14.0, use 'trash' from the 'moderation' pack instead." },
-               "search": { "file": {
-                       "ltr": "images/icons/search-ltr.svg",
-                       "rtl": "images/icons/search-rtl.svg"
-                       },
-                       "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead."
-               },
-               "settings": { "file": "images/icons/settings.svg", "deprecated": "Moved since v0.20.1, use from the 'interactions' pack instead." },
-               "tag": { "file": "images/icons/tag.svg", "variants": [ "destructive", "warning", "constructive" ], "deprecated": "Moved since v0.20.1, use from the 'content' pack instead." },
-               "undo": { "file": {
-                       "ltr": "images/icons/arched-arrow-rtl.svg",
-                       "rtl": "images/icons/arched-arrow-ltr.svg"
-                       },
-                       "deprecated": "Moved since v0.16.2, use from the 'editing-core' pack instead."
-               },
-               "window": { "file": "images/icons/window.svg", "deprecated": "Moved since v0.20.1, use from the 'content' pack instead." }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.png
deleted file mode 100644 (file)
index 42209e7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.svg
deleted file mode 100644 (file)
index 60c74f5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="add">
-        <path id="plus" d="M13 6h-2v5H6v2h5v5h2v-5h5v-2h-5z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-invert.png
deleted file mode 100644 (file)
index 8deeddf..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-invert.svg
deleted file mode 100644 (file)
index dfbbc82..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="add">
-        <path id="plus" d="M13 6h-2v5H6v2h5v5h2v-5h5v-2h-5z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-progressive.png
deleted file mode 100644 (file)
index 42209e7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-progressive.svg
deleted file mode 100644 (file)
index 60c74f5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="add">
-        <path id="plus" d="M13 6h-2v5H6v2h5v5h2v-5h5v-2h-5z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add.png
deleted file mode 100644 (file)
index 4c70ee4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add.svg
deleted file mode 100644 (file)
index 62e5496..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="add">
-        <path id="plus" d="M13 6h-2v5H6v2h5v5h2v-5h5v-2h-5z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.png
deleted file mode 100644 (file)
index 67fec17..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.svg
deleted file mode 100644 (file)
index feb4dd4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M20 13.44v-2.88l-1.8-.3c-.1-.397-.3-.794-.6-1.39l1.1-1.49-2.1-2.088-1.5 1.093c-.5-.298-1-.497-1.4-.596L13.5 4h-2.9l-.3 1.79c-.5.098-.9.297-1.4.595L7.4 5.292 5.3 7.38l1 1.49c-.3.496-.4.894-.6 1.39l-1.7.2v2.882l1.8.298c.1.497.3.894.6 1.39l-1 1.492 2.1 2.087 1.5-1c.4.2.9.395 1.4.594l.3 1.79h3l.3-1.79c.5-.1.9-.298 1.4-.596l1.5 1.092 2.1-2.08-1.1-1.49c.3-.496.5-.993.6-1.39l1.5-.3zm-8 1.492c-1.7 0-3-1.292-3-2.982 0-1.69 1.3-2.98 3-2.98s3 1.29 3 2.98-1.3 2.982-3 2.982z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-progressive.png
deleted file mode 100644 (file)
index e64bd2a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-progressive.svg
deleted file mode 100644 (file)
index 6bb1b10..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M20 13.44v-2.88l-1.8-.3c-.1-.397-.3-.794-.6-1.39l1.1-1.49-2.1-2.088-1.5 1.093c-.5-.298-1-.497-1.4-.596L13.5 4h-2.9l-.3 1.79c-.5.098-.9.297-1.4.595L7.4 5.292 5.3 7.38l1 1.49c-.3.496-.4.894-.6 1.39l-1.7.2v2.882l1.8.298c.1.497.3.894.6 1.39l-1 1.492 2.1 2.087 1.5-1c.4.2.9.395 1.4.594l.3 1.79h3l.3-1.79c.5-.1.9-.298 1.4-.596l1.5 1.092 2.1-2.08-1.1-1.49c.3-.496.5-.993.6-1.39l1.5-.3zm-8 1.492c-1.7 0-3-1.292-3-2.982 0-1.69 1.3-2.98 3-2.98s3 1.29 3 2.98-1.3 2.982-3 2.982z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.png
deleted file mode 100644 (file)
index 32892a5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.svg
deleted file mode 100644 (file)
index 95d72f9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M20 13.44v-2.88l-1.8-.3c-.1-.397-.3-.794-.6-1.39l1.1-1.49-2.1-2.088-1.5 1.093c-.5-.298-1-.497-1.4-.596L13.5 4h-2.9l-.3 1.79c-.5.098-.9.297-1.4.595L7.4 5.292 5.3 7.38l1 1.49c-.3.496-.4.894-.6 1.39l-1.7.2v2.882l1.8.298c.1.497.3.894.6 1.39l-1 1.492 2.1 2.087 1.5-1c.4.2.9.395 1.4.594l.3 1.79h3l.3-1.79c.5-.1.9-.298 1.4-.596l1.5 1.092 2.1-2.08-1.1-1.49c.3-.496.5-.993.6-1.39l1.5-.3zm-8 1.492c-1.7 0-3-1.292-3-2.982 0-1.69 1.3-2.98 3-2.98s3 1.29 3 2.98-1.3 2.982-3 2.982z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-invert.png
deleted file mode 100644 (file)
index 2a66b03..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-invert.svg
deleted file mode 100644 (file)
index 0f64141..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="alert">
-        <path id="point" d="M11 16h2v2h-2z"/>
-        <path id="stroke" d="M13.516 10h-3L11 15h2z"/>
-        <path id="triangle" d="M12.017 5.974L19.537 19H4.497l7.52-13.026m0-2.474c-.545 0-1.09.357-1.5 1.07L2.53 18.403C1.705 19.833 2.38 21 4.03 21H20c1.65 0 2.325-1.17 1.5-2.6L13.517 4.575c-.413-.715-.956-1.072-1.5-1.072z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-progressive.png
deleted file mode 100644 (file)
index 66973b8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-progressive.svg
deleted file mode 100644 (file)
index 78c22cd..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="alert">
-        <path id="point" d="M11 16h2v2h-2z"/>
-        <path id="stroke" d="M13.516 10h-3L11 15h2z"/>
-        <path id="triangle" d="M12.017 5.974L19.537 19H4.497l7.52-13.026m0-2.474c-.545 0-1.09.357-1.5 1.07L2.53 18.403C1.705 19.833 2.38 21 4.03 21H20c1.65 0 2.325-1.17 1.5-2.6L13.517 4.575c-.413-.715-.956-1.072-1.5-1.072z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-warning.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-warning.png
deleted file mode 100644 (file)
index 6276502..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-warning.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-warning.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-warning.svg
deleted file mode 100644 (file)
index 6e96e13..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ff5d00">
-    <g id="alert">
-        <path id="point" d="M11 16h2v2h-2z"/>
-        <path id="stroke" d="M13.516 10h-3L11 15h2z"/>
-        <path id="triangle" d="M12.017 5.974L19.537 19H4.497l7.52-13.026m0-2.474c-.545 0-1.09.357-1.5 1.07L2.53 18.403C1.705 19.833 2.38 21 4.03 21H20c1.65 0 2.325-1.17 1.5-2.6L13.517 4.575c-.413-.715-.956-1.072-1.5-1.072z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert.png
deleted file mode 100644 (file)
index 7355084..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert.svg
deleted file mode 100644 (file)
index 8b601d5..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="alert">
-        <path id="point" d="M11 16h2v2h-2z"/>
-        <path id="stroke" d="M13.516 10h-3L11 15h2z"/>
-        <path id="triangle" d="M12.017 5.974L19.537 19H4.497l7.52-13.026m0-2.474c-.545 0-1.09.357-1.5 1.07L2.53 18.403C1.705 19.833 2.38 21 4.03 21H20c1.65 0 2.325-1.17 1.5-2.6L13.517 4.575c-.413-.715-.956-1.072-1.5-1.072z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-invert.png
deleted file mode 100644 (file)
index a3495eb..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-invert.svg
deleted file mode 100644 (file)
index b6db392..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M9 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H9c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm-5.5 9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0-12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-center"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-progressive.png
deleted file mode 100644 (file)
index 9032e12..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-progressive.svg
deleted file mode 100644 (file)
index e69f542..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M9 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H9c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm-5.5 9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0-12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-center"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center.png
deleted file mode 100644 (file)
index a912b03..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center.svg
deleted file mode 100644 (file)
index 6f47977..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M9 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H9c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm-5.5 9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0-12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-center"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-invert.png
deleted file mode 100644 (file)
index e274be4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-invert.svg
deleted file mode 100644 (file)
index 5232a48..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M4 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H4c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm9.5 0h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm-10-9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0 12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-float-left"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-progressive.png
deleted file mode 100644 (file)
index d37112a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-progressive.svg
deleted file mode 100644 (file)
index 7e03b95..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M4 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H4c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm9.5 0h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm-10-9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0 12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-float-left"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left.png
deleted file mode 100644 (file)
index e395036..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left.svg
deleted file mode 100644 (file)
index a577600..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M4 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H4c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm9.5 0h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm-10-9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0 12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-float-left"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-invert.png
deleted file mode 100644 (file)
index c6659fb..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-invert.svg
deleted file mode 100644 (file)
index 3395516..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M20 9h-6c-.554 0-1 .446-1 1v5c0 .554.446 1 1 1h6c.554 0 1-.446 1-1v-5c0-.554-.446-1-1-1zm-9.5 0h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm10-9h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1zm0 12h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1z" id="align-float-right"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-progressive.png
deleted file mode 100644 (file)
index 8d3f480..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-progressive.svg
deleted file mode 100644 (file)
index f7f45e2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M20 9h-6c-.554 0-1 .446-1 1v5c0 .554.446 1 1 1h6c.554 0 1-.446 1-1v-5c0-.554-.446-1-1-1zm-9.5 0h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm10-9h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1zm0 12h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1z" id="align-float-right"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right.png
deleted file mode 100644 (file)
index c72a956..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right.svg
deleted file mode 100644 (file)
index 0f46bc1..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M20 9h-6c-.554 0-1 .446-1 1v5c0 .554.446 1 1 1h6c.554 0 1-.446 1-1v-5c0-.554-.446-1-1-1zm-9.5 0h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm10-9h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1zm0 12h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1z" id="align-float-right"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.png
deleted file mode 100644 (file)
index d8d64f1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.svg
deleted file mode 100644 (file)
index 7a6c6a4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M13.3 6.3l6.3 5.7-6.3 5.7v-3.8H12c-3.2 0-6.3 1.3-7.6 3.8 0-4.7 2.8-7.6 7.9-7.6h.9V6.3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-progressive.png
deleted file mode 100644 (file)
index 28f8835..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-progressive.svg
deleted file mode 100644 (file)
index c17ebc7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M13.3 6.3l6.3 5.7-6.3 5.7v-3.8H12c-3.2 0-6.3 1.3-7.6 3.8 0-4.7 2.8-7.6 7.9-7.6h.9V6.3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr.png
deleted file mode 100644 (file)
index c2fae72..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr.svg
deleted file mode 100644 (file)
index c229120..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M13.3 6.3l6.3 5.7-6.3 5.7v-3.8H12c-3.2 0-6.3 1.3-7.6 3.8 0-4.7 2.8-7.6 7.9-7.6h.9V6.3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.png
deleted file mode 100644 (file)
index 21fa9ab..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.svg
deleted file mode 100644 (file)
index b05aec3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M10.7 6.3L4.4 12l6.3 5.7v-3.8H12c3.2 0 6.3 1.3 7.6 3.8 0-4.7-2.8-7.6-7.9-7.6h-.9V6.3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-progressive.png
deleted file mode 100644 (file)
index 11f0c84..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-progressive.svg
deleted file mode 100644 (file)
index cc7b2aa..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M10.7 6.3L4.4 12l6.3 5.7v-3.8H12c3.2 0 6.3 1.3 7.6 3.8 0-4.7-2.8-7.6-7.9-7.6h-.9V6.3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl.png
deleted file mode 100644 (file)
index df22b7d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl.svg
deleted file mode 100644 (file)
index 9f4bd13..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M10.7 6.3L4.4 12l6.3 5.7v-3.8H12c3.2 0 6.3 1.3 7.6 3.8 0-4.7-2.8-7.6-7.9-7.6h-.9V6.3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-invert.png
deleted file mode 100644 (file)
index 6299e86..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-invert.svg
deleted file mode 100644 (file)
index cfde7f5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M16 12H6c-1.7 0-3 1.3-3 3h13v3l5-4.5L16 9v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-progressive.png
deleted file mode 100644 (file)
index 119a8be..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-progressive.svg
deleted file mode 100644 (file)
index 020e740..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M16 12H6c-1.7 0-3 1.3-3 3h13v3l5-4.5L16 9v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr.png
deleted file mode 100644 (file)
index 24905bc..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr.svg
deleted file mode 100644 (file)
index b4c0e0d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M16 12H6c-1.7 0-3 1.3-3 3h13v3l5-4.5L16 9v3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-invert.png
deleted file mode 100644 (file)
index fb375e4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-invert.svg
deleted file mode 100644 (file)
index b701b61..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M8 12h10c1.7 0 3 1.3 3 3H8v3l-5-4.5L8 9v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-progressive.png
deleted file mode 100644 (file)
index 3192d35..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-progressive.svg
deleted file mode 100644 (file)
index 476c443..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M8 12h10c1.7 0 3 1.3 3 3H8v3l-5-4.5L8 9v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl.png
deleted file mode 100644 (file)
index 1cd81cb..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl.svg
deleted file mode 100644 (file)
index 1087ff9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M8 12h10c1.7 0 3 1.3 3 3H8v3l-5-4.5L8 9v3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-invert.png
deleted file mode 100644 (file)
index 231cb1b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-invert.svg
deleted file mode 100644 (file)
index 3285cc7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M12 10h4V5h-4v5zm-5 2h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zM5 3h13v16H8c-1.7 0-3-1.3-3-3V3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-progressive.png
deleted file mode 100644 (file)
index db45541..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-progressive.svg
deleted file mode 100644 (file)
index 61dda31..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 10h4V5h-4v5zm-5 2h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zM5 3h13v16H8c-1.7 0-3-1.3-3-3V3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr.png
deleted file mode 100644 (file)
index cf7de13..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr.svg
deleted file mode 100644 (file)
index 862bc2b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 10h4V5h-4v5zm-5 2h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zM5 3h13v16H8c-1.7 0-3-1.3-3-3V3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-invert.png
deleted file mode 100644 (file)
index 7b83a3a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-invert.svg
deleted file mode 100644 (file)
index b92172a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M11 10H7V5h4v5zm5 2H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zm6-2H5v16h10c1.7 0 3-1.3 3-3V3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-progressive.png
deleted file mode 100644 (file)
index aba3c0b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-progressive.svg
deleted file mode 100644 (file)
index d0e6a7a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M11 10H7V5h4v5zm5 2H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zm6-2H5v16h10c1.7 0 3-1.3 3-3V3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl.png
deleted file mode 100644 (file)
index d0b0e70..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl.svg
deleted file mode 100644 (file)
index 3b16dcb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M11 10H7V5h4v5zm5 2H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zm6-2H5v16h10c1.7 0 3-1.3 3-3V3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-invert.png
deleted file mode 100644 (file)
index 5eed717..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-invert.svg
deleted file mode 100644 (file)
index 9557c56..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M21 11l-6 7-4-4-1 1 5 5 7-8z"/>
-    <path d="M17 14V3H4v13c0 1.7 1.3 3 3 3h5l-3-3H6v-1h2.6l1-1H6v-1h9v1h-2l1 1h2l1-1zM6 5h4v1H6V5zm0 2h4v1H6V7zm0 2h4v1H6V9zm9 3H6v-1h9v1zm-4-2V5h4v5h-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-progressive.png
deleted file mode 100644 (file)
index 688ec05..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-progressive.svg
deleted file mode 100644 (file)
index 5802afd..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M21 11l-6 7-4-4-1 1 5 5 7-8z"/>
-    <path d="M17 14V3H4v13c0 1.7 1.3 3 3 3h5l-3-3H6v-1h2.6l1-1H6v-1h9v1h-2l1 1h2l1-1zM6 5h4v1H6V5zm0 2h4v1H6V7zm0 2h4v1H6V9zm9 3H6v-1h9v1zm-4-2V5h4v5h-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr.png
deleted file mode 100644 (file)
index 5b169e2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr.svg
deleted file mode 100644 (file)
index 396e6a1..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M21 11l-6 7-4-4-1 1 5 5 7-8z"/>
-    <path d="M17 14V3H4v13c0 1.7 1.3 3 3 3h5l-3-3H6v-1h2.6l1-1H6v-1h9v1h-2l1 1h2l1-1zM6 5h4v1H6V5zm0 2h4v1H6V7zm0 2h4v1H6V9zm9 3H6v-1h9v1zm-4-2V5h4v5h-4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-invert.png
deleted file mode 100644 (file)
index cc9c9de..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-invert.svg
deleted file mode 100644 (file)
index fba5a32..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M5 11l6 7 4-4 1 1-5 5-7-8z"/>
-    <path d="M9 14V3h13v13c0 1.7-1.3 3-3 3h-5l3-3h3v-1h-2.6l-1-1H20v-1h-9v1h2l-1 1h-2l-1-1zm11-9h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm-9 3h9v-1h-9v1zm4-2V5h-4v5h4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-progressive.png
deleted file mode 100644 (file)
index b271ac5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-progressive.svg
deleted file mode 100644 (file)
index 0215593..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M5 11l6 7 4-4 1 1-5 5-7-8z"/>
-    <path d="M9 14V3h13v13c0 1.7-1.3 3-3 3h-5l3-3h3v-1h-2.6l-1-1H20v-1h-9v1h2l-1 1h-2l-1-1zm11-9h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm-9 3h9v-1h-9v1zm4-2V5h-4v5h4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl.png
deleted file mode 100644 (file)
index 9f22672..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl.svg
deleted file mode 100644 (file)
index 604143b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M5 11l6 7 4-4 1 1-5 5-7-8z"/>
-    <path d="M9 14V3h13v13c0 1.7-1.3 3-3 3h-5l3-3h3v-1h-2.6l-1-1H20v-1h-9v1h2l-1 1h-2l-1-1zm11-9h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm-9 3h9v-1h-9v1zm4-2V5h-4v5h4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-invert.png
deleted file mode 100644 (file)
index 76cc11f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-invert.svg
deleted file mode 100644 (file)
index f68467f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="article-redirect">
-        <path id="arrow" d="M18.1 14.2L23 18l-4.9 4.8v-2.2c-1.7 0-2.9-.2-4.3-1.2-1.2-.8-2.5-2.6-2.3-4.1 1.4 1 2.9 1.5 4.4 1.5.7 0 1.4-.1 2.1-.3l.1-2.3"/>
-        <path id="page" d="M5 3v13c0 1.7 1.3 3 3 3h3.375c-.157-.205-.3-.43-.438-.656-.42-.688-.77-1.483-.843-2.344H7v-1h3.125l.125-1H7v-1h3.375l.03-.188.283.188H16v1h-3.906l.22.156c.523.375 1.065.64 1.592.844H16v.406c.208-.013.418-.07.625-.094.068-1.294.125-3.874.125-3.874l1.25.968V3H5zm2 2h4v1H7V5zm5 0h4v5h-4V5zM7 7h4v1H7V7zm0 2h4v1H7V9zm0 2h9v1H7v-1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-progressive.png
deleted file mode 100644 (file)
index 7b22a84..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-progressive.svg
deleted file mode 100644 (file)
index 28e7a46..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="article-redirect">
-        <path id="arrow" d="M18.1 14.2L23 18l-4.9 4.8v-2.2c-1.7 0-2.9-.2-4.3-1.2-1.2-.8-2.5-2.6-2.3-4.1 1.4 1 2.9 1.5 4.4 1.5.7 0 1.4-.1 2.1-.3l.1-2.3"/>
-        <path id="page" d="M5 3v13c0 1.7 1.3 3 3 3h3.375c-.157-.205-.3-.43-.438-.656-.42-.688-.77-1.483-.843-2.344H7v-1h3.125l.125-1H7v-1h3.375l.03-.188.283.188H16v1h-3.906l.22.156c.523.375 1.065.64 1.592.844H16v.406c.208-.013.418-.07.625-.094.068-1.294.125-3.874.125-3.874l1.25.968V3H5zm2 2h4v1H7V5zm5 0h4v5h-4V5zM7 7h4v1H7V7zm0 2h4v1H7V9zm0 2h9v1H7v-1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr.png
deleted file mode 100644 (file)
index 3dbe20e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr.svg
deleted file mode 100644 (file)
index 028c64c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="article-redirect">
-        <path id="arrow" d="M18.1 14.2L23 18l-4.9 4.8v-2.2c-1.7 0-2.9-.2-4.3-1.2-1.2-.8-2.5-2.6-2.3-4.1 1.4 1 2.9 1.5 4.4 1.5.7 0 1.4-.1 2.1-.3l.1-2.3"/>
-        <path id="page" d="M5 3v13c0 1.7 1.3 3 3 3h3.375c-.157-.205-.3-.43-.438-.656-.42-.688-.77-1.483-.843-2.344H7v-1h3.125l.125-1H7v-1h3.375l.03-.188.283.188H16v1h-3.906l.22.156c.523.375 1.065.64 1.592.844H16v.406c.208-.013.418-.07.625-.094.068-1.294.125-3.874.125-3.874l1.25.968V3H5zm2 2h4v1H7V5zm5 0h4v5h-4V5zM7 7h4v1H7V7zm0 2h4v1H7V9zm0 2h9v1H7v-1z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-invert.png
deleted file mode 100644 (file)
index b31e0f9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-invert.svg
deleted file mode 100644 (file)
index d70b35f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="article-redirect">
-        <path id="arrow" d="M5.9 14.2L1 18l4.9 4.8v-2.2c1.7 0 2.9-.2 4.3-1.2 1.2-.8 2.5-2.6 2.3-4.1-1.4 1-2.9 1.5-4.4 1.5-.7 0-1.4-.1-2.1-.3l-.1-2.3"/>
-        <path id="page" d="M19 3v13c0 1.7-1.3 3-3 3h-3.375c.157-.205.3-.43.438-.656.42-.688.77-1.483.843-2.344H17v-1h-3.125l-.125-1H17v-1h-3.375l-.03-.188-.283.188H8v1h3.906l-.22.156a7.097 7.097 0 0 1-1.592.844H8v.406c-.208-.013-.418-.07-.625-.094a178.903 178.903 0 0 1-.125-3.874L6 12.405V3zm-2 2h-4v1h4zm-5 0H8v5h4zm5 2h-4v1h4zm0 2h-4v1h4zm0 2H8v1h9z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-progressive.png
deleted file mode 100644 (file)
index 464c344..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-progressive.svg
deleted file mode 100644 (file)
index d49b9bd..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="article-redirect">
-        <path id="arrow" d="M5.9 14.2L1 18l4.9 4.8v-2.2c1.7 0 2.9-.2 4.3-1.2 1.2-.8 2.5-2.6 2.3-4.1-1.4 1-2.9 1.5-4.4 1.5-.7 0-1.4-.1-2.1-.3l-.1-2.3"/>
-        <path id="page" d="M19 3v13c0 1.7-1.3 3-3 3h-3.375c.157-.205.3-.43.438-.656.42-.688.77-1.483.843-2.344H17v-1h-3.125l-.125-1H17v-1h-3.375l-.03-.188-.283.188H8v1h3.906l-.22.156a7.097 7.097 0 0 1-1.592.844H8v.406c-.208-.013-.418-.07-.625-.094a178.903 178.903 0 0 1-.125-3.874L6 12.405V3zm-2 2h-4v1h4zm-5 0H8v5h4zm5 2h-4v1h4zm0 2h-4v1h4zm0 2H8v1h9z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl.png
deleted file mode 100644 (file)
index 60beb6e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl.svg
deleted file mode 100644 (file)
index 316d36c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="article-redirect">
-        <path id="arrow" d="M5.9 14.2L1 18l4.9 4.8v-2.2c1.7 0 2.9-.2 4.3-1.2 1.2-.8 2.5-2.6 2.3-4.1-1.4 1-2.9 1.5-4.4 1.5-.7 0-1.4-.1-2.1-.3l-.1-2.3"/>
-        <path id="page" d="M19 3v13c0 1.7-1.3 3-3 3h-3.375c.157-.205.3-.43.438-.656.42-.688.77-1.483.843-2.344H17v-1h-3.125l-.125-1H17v-1h-3.375l-.03-.188-.283.188H8v1h3.906l-.22.156a7.097 7.097 0 0 1-1.592.844H8v.406c-.208-.013-.418-.07-.625-.094a178.903 178.903 0 0 1-.125-3.874L6 12.405V3zm-2 2h-4v1h4zm-5 0H8v5h4zm5 2h-4v1h4zm0 2h-4v1h4zm0 2H8v1h9z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-invert.png
deleted file mode 100644 (file)
index 1bd1587..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-invert.svg
deleted file mode 100644 (file)
index c4dbcde..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M19.1 18.5c.6-.7.9-1.5.9-2.5 0-2.2-1.8-4-4-4s-4 1.8-4 4 1.8 4 4 4c.7 0 1.3-.1 1.8-.4l2.7 2.7 1.1-1.1-2.5-2.7zm-3.1-.3c-1.2 0-2.2-1-2.2-2.3 0-1.2 1-2.2 2.2-2.2 1.2 0 2.3 1 2.3 2.2-.1 1.3-1.1 2.3-2.3 2.3zM11.8 13c.3-.4.6-.7 1-1H7v-1h9s1.2 0 2 .6V3H5v13c0 1.7 1.3 3 3 3h3.8c-.6-.8-1-1.9-1-3H7v-1h3.9l.3-1H7v-1h4.8zm.2-8h4v5h-4V5zM7 5h4v1H7V5zm0 2h4v1H7V7zm0 2h4v1H7V9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-progressive.png
deleted file mode 100644 (file)
index d22174e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-progressive.svg
deleted file mode 100644 (file)
index 2d71a62..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M19.1 18.5c.6-.7.9-1.5.9-2.5 0-2.2-1.8-4-4-4s-4 1.8-4 4 1.8 4 4 4c.7 0 1.3-.1 1.8-.4l2.7 2.7 1.1-1.1-2.5-2.7zm-3.1-.3c-1.2 0-2.2-1-2.2-2.3 0-1.2 1-2.2 2.2-2.2 1.2 0 2.3 1 2.3 2.2-.1 1.3-1.1 2.3-2.3 2.3zM11.8 13c.3-.4.6-.7 1-1H7v-1h9s1.2 0 2 .6V3H5v13c0 1.7 1.3 3 3 3h3.8c-.6-.8-1-1.9-1-3H7v-1h3.9l.3-1H7v-1h4.8zm.2-8h4v5h-4V5zM7 5h4v1H7V5zm0 2h4v1H7V7zm0 2h4v1H7V9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr.png
deleted file mode 100644 (file)
index 1802dfc..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr.svg
deleted file mode 100644 (file)
index ac41c2b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M19.1 18.5c.6-.7.9-1.5.9-2.5 0-2.2-1.8-4-4-4s-4 1.8-4 4 1.8 4 4 4c.7 0 1.3-.1 1.8-.4l2.7 2.7 1.1-1.1-2.5-2.7zm-3.1-.3c-1.2 0-2.2-1-2.2-2.3 0-1.2 1-2.2 2.2-2.2 1.2 0 2.3 1 2.3 2.2-.1 1.3-1.1 2.3-2.3 2.3zM11.8 13c.3-.4.6-.7 1-1H7v-1h9s1.2 0 2 .6V3H5v13c0 1.7 1.3 3 3 3h3.8c-.6-.8-1-1.9-1-3H7v-1h3.9l.3-1H7v-1h4.8zm.2-8h4v5h-4V5zM7 5h4v1H7V5zm0 2h4v1H7V7zm0 2h4v1H7V9z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-invert.png
deleted file mode 100644 (file)
index a8e8a3a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-invert.svg
deleted file mode 100644 (file)
index ffd4285..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M7.5 18.5c-.6-.7-.9-1.5-.9-2.5 0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4c-.7 0-1.3-.1-1.8-.4l-2.7 2.7L5 21.2l2.5-2.7zm3.1-.3c1.2 0 2.2-1 2.2-2.3 0-1.2-1-2.2-2.2-2.2-1.2 0-2.3 1-2.3 2.2.1 1.3 1.1 2.3 2.3 2.3zm4.2-5.2c-.3-.4-.6-.7-1-1h5.8v-1h-9s-1.2 0-2 .6V3h13v13c0 1.7-1.3 3-3 3h-3.8c.6-.8 1-1.9 1-3h3.8v-1h-3.9l-.3-1h4.2v-1h-4.8zm-.2-8h-4v5h4V5zm5 0h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-progressive.png
deleted file mode 100644 (file)
index e83f1ee..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-progressive.svg
deleted file mode 100644 (file)
index 48ae222..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M7.5 18.5c-.6-.7-.9-1.5-.9-2.5 0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4c-.7 0-1.3-.1-1.8-.4l-2.7 2.7L5 21.2l2.5-2.7zm3.1-.3c1.2 0 2.2-1 2.2-2.3 0-1.2-1-2.2-2.2-2.2-1.2 0-2.3 1-2.3 2.2.1 1.3 1.1 2.3 2.3 2.3zm4.2-5.2c-.3-.4-.6-.7-1-1h5.8v-1h-9s-1.2 0-2 .6V3h13v13c0 1.7-1.3 3-3 3h-3.8c.6-.8 1-1.9 1-3h3.8v-1h-3.9l-.3-1h4.2v-1h-4.8zm-.2-8h-4v5h4V5zm5 0h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl.png
deleted file mode 100644 (file)
index a2611da..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl.svg
deleted file mode 100644 (file)
index ed43acf..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M7.5 18.5c-.6-.7-.9-1.5-.9-2.5 0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4c-.7 0-1.3-.1-1.8-.4l-2.7 2.7L5 21.2l2.5-2.7zm3.1-.3c1.2 0 2.2-1 2.2-2.3 0-1.2-1-2.2-2.2-2.2-1.2 0-2.3 1-2.3 2.2.1 1.3 1.1 2.3 2.3 2.3zm4.2-5.2c-.3-.4-.6-.7-1-1h5.8v-1h-9s-1.2 0-2 .6V3h13v13c0 1.7-1.3 3-3 3h-3.8c.6-.8 1-1.9 1-3h3.8v-1h-3.9l-.3-1h4.2v-1h-4.8zm-.2-8h-4v5h4V5zm5 0h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-invert.png
deleted file mode 100644 (file)
index 3a418f4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-invert.svg
deleted file mode 100644 (file)
index 86b004f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M11 12h4V7h-4v5zm-5 2h9v-1H6v1zm0 2h9v-1H6v1zm0 2h9v-1H6v1zm4-9H6v1h4V9zm0 2H6v1h4v-1zm0-4H6v1h4V7zM4 5h13v16H7c-1.7 0-3-1.3-3-3V5z"/>
-    <path d="M18 4v14h2V2H7v2" fill-rule="evenodd"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-progressive.png
deleted file mode 100644 (file)
index af2b7f0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-progressive.svg
deleted file mode 100644 (file)
index 838655b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M11 12h4V7h-4v5zm-5 2h9v-1H6v1zm0 2h9v-1H6v1zm0 2h9v-1H6v1zm4-9H6v1h4V9zm0 2H6v1h4v-1zm0-4H6v1h4V7zM4 5h13v16H7c-1.7 0-3-1.3-3-3V5z"/>
-    <path d="M18 4v14h2V2H7v2" fill-rule="evenodd"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr.png
deleted file mode 100644 (file)
index bd048c4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr.svg
deleted file mode 100644 (file)
index c194497..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M11 12h4V7h-4v5zm-5 2h9v-1H6v1zm0 2h9v-1H6v1zm0 2h9v-1H6v1zm4-9H6v1h4V9zm0 2H6v1h4v-1zm0-4H6v1h4V7zM4 5h13v16H7c-1.7 0-3-1.3-3-3V5z"/>
-    <path d="M18 4v14h2V2H7v2" fill-rule="evenodd"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-invert.png
deleted file mode 100644 (file)
index fe548a1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-invert.svg
deleted file mode 100644 (file)
index e2793b5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M13 12H9V7h4v5zm5 2H9v-1h9v1zm0 2H9v-1h9v1zm0 2H9v-1h9v1zm-4-9h4v1h-4V9zm0 2h4v1h-4v-1zm0-4h4v1h-4V7zm6-2H7v16h10c1.7 0 3-1.3 3-3V5z"/>
-    <path d="M6 4v14H4V2h13v2" fill-rule="evenodd"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-progressive.png
deleted file mode 100644 (file)
index 839f135..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-progressive.svg
deleted file mode 100644 (file)
index bf3d169..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M13 12H9V7h4v5zm5 2H9v-1h9v1zm0 2H9v-1h9v1zm0 2H9v-1h9v1zm-4-9h4v1h-4V9zm0 2h4v1h-4v-1zm0-4h4v1h-4V7zm6-2H7v16h10c1.7 0 3-1.3 3-3V5z"/>
-    <path d="M6 4v14H4V2h13v2" fill-rule="evenodd"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl.png
deleted file mode 100644 (file)
index 3ebb113..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl.svg
deleted file mode 100644 (file)
index 40a9348..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M13 12H9V7h4v5zm5 2H9v-1h9v1zm0 2H9v-1h9v1zm0 2H9v-1h9v1zm-4-9h4v1h-4V9zm0 2h4v1h-4v-1zm0-4h4v1h-4V7zm6-2H7v16h10c1.7 0 3-1.3 3-3V5z"/>
-    <path d="M6 4v14H4V2h13v2" fill-rule="evenodd"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-invert.png
deleted file mode 100644 (file)
index aa1b38e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-invert.svg
deleted file mode 100644 (file)
index 2ced027..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-293 385 24 24"><g fill="#fff">
-    <path d="M-274.3 390.9c-1.6-1.6-4.3-1.5-5.8.1l.2.2c.5.5 1.3.7 2.1.4.8-.3 1.7-.1 2.4.6 1 .9.9 2.4 0 3.4l-7.1 7.1c-.9 1-2.4.9-3.4 0s-.9-2.4 0-3.4l4.4-4.4c.3-.3.9-.5 1.3-.1s.2 1-.1 1.3l-3.4 3.4c-.6.6-.6 1.7.1 2.3l4.3-4.3c.8-.8 1.1-1.8.9-2.7-.2-.9-.9-1.6-1.7-1.9-.9-.2-1.9 0-2.6.7l-4.4 4.4c-1.6 1.6-1.6 4.3.1 5.8 1.5 1.6 4.3 1.5 5.8-.1l7-7c.8-.8 1.2-1.9 1.2-3s-.5-2.1-1.3-2.8c-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-1.5-1.6.8.7 0 0z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-progressive.png
deleted file mode 100644 (file)
index 9723ae9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-progressive.svg
deleted file mode 100644 (file)
index 0f02b30..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-293 385 24 24"><g fill="#36c">
-    <path d="M-274.3 390.9c-1.6-1.6-4.3-1.5-5.8.1l.2.2c.5.5 1.3.7 2.1.4.8-.3 1.7-.1 2.4.6 1 .9.9 2.4 0 3.4l-7.1 7.1c-.9 1-2.4.9-3.4 0s-.9-2.4 0-3.4l4.4-4.4c.3-.3.9-.5 1.3-.1s.2 1-.1 1.3l-3.4 3.4c-.6.6-.6 1.7.1 2.3l4.3-4.3c.8-.8 1.1-1.8.9-2.7-.2-.9-.9-1.6-1.7-1.9-.9-.2-1.9 0-2.6.7l-4.4 4.4c-1.6 1.6-1.6 4.3.1 5.8 1.5 1.6 4.3 1.5 5.8-.1l7-7c.8-.8 1.2-1.9 1.2-3s-.5-2.1-1.3-2.8c-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-1.5-1.6.8.7 0 0z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr.png
deleted file mode 100644 (file)
index 92dfaf2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr.svg
deleted file mode 100644 (file)
index 74a4d64..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-293 385 24 24">
-    <path d="M-274.3 390.9c-1.6-1.6-4.3-1.5-5.8.1l.2.2c.5.5 1.3.7 2.1.4.8-.3 1.7-.1 2.4.6 1 .9.9 2.4 0 3.4l-7.1 7.1c-.9 1-2.4.9-3.4 0s-.9-2.4 0-3.4l4.4-4.4c.3-.3.9-.5 1.3-.1s.2 1-.1 1.3l-3.4 3.4c-.6.6-.6 1.7.1 2.3l4.3-4.3c.8-.8 1.1-1.8.9-2.7-.2-.9-.9-1.6-1.7-1.9-.9-.2-1.9 0-2.6.7l-4.4 4.4c-1.6 1.6-1.6 4.3.1 5.8 1.5 1.6 4.3 1.5 5.8-.1l7-7c.8-.8 1.2-1.9 1.2-3s-.5-2.1-1.3-2.8c-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-1.5-1.6.8.7 0 0z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-invert.png
deleted file mode 100644 (file)
index bba8db5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-invert.svg
deleted file mode 100644 (file)
index faa925c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-119 70 24 24"><g fill="#fff">
-    <path d="M-113.3 75.6c-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7-1.3 1.7-1.3 2.8 0 1.1.4 2.2 1.2 3l7 7c1.5 1.6 4.3 1.7 5.8.1 1.7-1.5 1.7-4.2.1-5.8l-4.4-4.4c-.7-.7-1.7-.9-2.6-.7-.8.3-1.5 1-1.7 1.9-.2.9.1 1.9.9 2.7l4.3 4.3c.7-.6.7-1.7.1-2.3l-3.4-3.4c-.3-.3-.5-.9-.1-1.3s1-.2 1.3.1l4.4 4.4c.9 1 1 2.5 0 3.4s-2.5 1-3.4 0l-7.1-7.1c-.9-1-1-2.5 0-3.4.7-.7 1.6-.9 2.4-.6.8.3 1.6.1 2.1-.4l.2-.2c-1.5-1.6-4.2-1.8-5.8-.1-.8.7 1.5-1.7 0 0z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-progressive.png
deleted file mode 100644 (file)
index 8786e5a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-progressive.svg
deleted file mode 100644 (file)
index 5e234a0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-119 70 24 24"><g fill="#36c">
-    <path d="M-113.3 75.6c-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7-1.3 1.7-1.3 2.8 0 1.1.4 2.2 1.2 3l7 7c1.5 1.6 4.3 1.7 5.8.1 1.7-1.5 1.7-4.2.1-5.8l-4.4-4.4c-.7-.7-1.7-.9-2.6-.7-.8.3-1.5 1-1.7 1.9-.2.9.1 1.9.9 2.7l4.3 4.3c.7-.6.7-1.7.1-2.3l-3.4-3.4c-.3-.3-.5-.9-.1-1.3s1-.2 1.3.1l4.4 4.4c.9 1 1 2.5 0 3.4s-2.5 1-3.4 0l-7.1-7.1c-.9-1-1-2.5 0-3.4.7-.7 1.6-.9 2.4-.6.8.3 1.6.1 2.1-.4l.2-.2c-1.5-1.6-4.2-1.8-5.8-.1-.8.7 1.5-1.7 0 0z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl.png
deleted file mode 100644 (file)
index f793246..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl.svg
deleted file mode 100644 (file)
index f53f5a4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-119 70 24 24">
-    <path d="M-113.3 75.6c-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7-1.3 1.7-1.3 2.8 0 1.1.4 2.2 1.2 3l7 7c1.5 1.6 4.3 1.7 5.8.1 1.7-1.5 1.7-4.2.1-5.8l-4.4-4.4c-.7-.7-1.7-.9-2.6-.7-.8.3-1.5 1-1.7 1.9-.2.9.1 1.9.9 2.7l4.3 4.3c.7-.6.7-1.7.1-2.3l-3.4-3.4c-.3-.3-.5-.9-.1-1.3s1-.2 1.3.1l4.4 4.4c.9 1 1 2.5 0 3.4s-2.5 1-3.4 0l-7.1-7.1c-.9-1-1-2.5 0-3.4.7-.7 1.6-.9 2.4-.6.8.3 1.6.1 2.1-.4l.2-.2c-1.5-1.6-4.2-1.8-5.8-.1-.8.7 1.5-1.7 0 0z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-invert.png
deleted file mode 100644 (file)
index 05911d3..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-invert.svg
deleted file mode 100644 (file)
index 61caba7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M17.5 13V8c0-3-2.3-5-5.5-5S6.5 5 6.5 8v5c0 2 0 3-2 3v1h15v-1c-2 0-2-1-2-3zM12 19H9c0 1 1.6 2 3 2s3-1 3-2h-3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-progressive.png
deleted file mode 100644 (file)
index 81294ff..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-progressive.svg
deleted file mode 100644 (file)
index 157430b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M17.5 13V8c0-3-2.3-5-5.5-5S6.5 5 6.5 8v5c0 2 0 3-2 3v1h15v-1c-2 0-2-1-2-3zM12 19H9c0 1 1.6 2 3 2s3-1 3-2h-3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell.png
deleted file mode 100644 (file)
index 91e8397..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell.svg
deleted file mode 100644 (file)
index 09b65f2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M17.5 13V8c0-3-2.3-5-5.5-5S6.5 5 6.5 8v5c0 2 0 3-2 3v1h15v-1c-2 0-2-1-2-3zM12 19H9c0 1 1.6 2 3 2s3-1 3-2h-3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-invert.png
deleted file mode 100644 (file)
index fb21370..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-invert.svg
deleted file mode 100644 (file)
index 49416aa..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M17.8 13.7L19.5 9c1-2.8-.5-5.5-3.5-6.6-3-1.1-5.9 0-6.9 2.8L7.4 9.9c-.7 1.9-1 2.8-2.9 2.1l-.3 1 14.1 5.1.3-.9c-1.9-.7-1.5-1.6-.8-3.5zM12 18.8l-2.8-1c-.3.9.8 2.4 2.1 2.9s3.2.1 3.5-.9l-2.8-1z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-progressive.png
deleted file mode 100644 (file)
index 91641ac..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-progressive.svg
deleted file mode 100644 (file)
index d064356..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M17.8 13.7L19.5 9c1-2.8-.5-5.5-3.5-6.6-3-1.1-5.9 0-6.9 2.8L7.4 9.9c-.7 1.9-1 2.8-2.9 2.1l-.3 1 14.1 5.1.3-.9c-1.9-.7-1.5-1.6-.8-3.5zM12 18.8l-2.8-1c-.3.9.8 2.4 2.1 2.9s3.2.1 3.5-.9l-2.8-1z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr.png
deleted file mode 100644 (file)
index fb13de1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr.svg
deleted file mode 100644 (file)
index 855581b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M17.8 13.7L19.5 9c1-2.8-.5-5.5-3.5-6.6-3-1.1-5.9 0-6.9 2.8L7.4 9.9c-.7 1.9-1 2.8-2.9 2.1l-.3 1 14.1 5.1.3-.9c-1.9-.7-1.5-1.6-.8-3.5zM12 18.8l-2.8-1c-.3.9.8 2.4 2.1 2.9s3.2.1 3.5-.9l-2.8-1z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-invert.png
deleted file mode 100644 (file)
index d0ebae5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-invert.svg
deleted file mode 100644 (file)
index b854834..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M6.21 13.7L4.51 9c-1-2.8.5-5.5 3.5-6.6 3-1.1 5.9 0 6.9 2.8l1.7 4.7c.7 1.9 1 2.8 2.9 2.1l.3 1-14.1 5.1-.3-.9c1.9-.7 1.5-1.6.8-3.5zm5.8 5.1l2.8-1c.3.9-.8 2.4-2.1 2.9s-3.2.1-3.5-.9l2.8-1z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-progressive.png
deleted file mode 100644 (file)
index eddcf73..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-progressive.svg
deleted file mode 100644 (file)
index a9cdb3c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M6.21 13.7L4.51 9c-1-2.8.5-5.5 3.5-6.6 3-1.1 5.9 0 6.9 2.8l1.7 4.7c.7 1.9 1 2.8 2.9 2.1l.3 1-14.1 5.1-.3-.9c1.9-.7 1.5-1.6.8-3.5zm5.8 5.1l2.8-1c.3.9-.8 2.4-2.1 2.9s-3.2.1-3.5-.9l2.8-1z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl.png
deleted file mode 100644 (file)
index b05fd4c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl.svg
deleted file mode 100644 (file)
index e1f2961..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M6.21 13.7L4.51 9c-1-2.8.5-5.5 3.5-6.6 3-1.1 5.9 0 6.9 2.8l1.7 4.7c.7 1.9 1 2.8 2.9 2.1l.3 1-14.1 5.1-.3-.9c1.9-.7 1.5-1.6.8-3.5zm5.8 5.1l2.8-1c.3.9-.8 2.4-2.1 2.9s-3.2.1-3.5-.9l2.8-1z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-invert.png
deleted file mode 100644 (file)
index ad247d3..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-invert.svg
deleted file mode 100644 (file)
index 60d7fd4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path id="big-a" d="M14.334 6h1.372l4.48 12H18.48l-1.493-4h-4l-1.507 4H9.814zm2.28 7l-1.617-4.333L13.363 13h3.25z"/>
-    <path id="small-a" d="M6.172 12h.686l2.24 6h-.853L7.5 16H5.497l-.753 2h-.833zm1.14 3.5l-.81-2.166-.816 2.166h1.625z"/>
-    <path id="arrow" d="M9 9H4l2.5-3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-progressive.png
deleted file mode 100644 (file)
index af290b9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-progressive.svg
deleted file mode 100644 (file)
index 863fe92..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path id="big-a" d="M14.334 6h1.372l4.48 12H18.48l-1.493-4h-4l-1.507 4H9.814zm2.28 7l-1.617-4.333L13.363 13h3.25z"/>
-    <path id="small-a" d="M6.172 12h.686l2.24 6h-.853L7.5 16H5.497l-.753 2h-.833zm1.14 3.5l-.81-2.166-.816 2.166h1.625z"/>
-    <path id="arrow" d="M9 9H4l2.5-3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr.png
deleted file mode 100644 (file)
index e8b2911..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr.svg
deleted file mode 100644 (file)
index fffbcdd..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path id="big-a" d="M14.334 6h1.372l4.48 12H18.48l-1.493-4h-4l-1.507 4H9.814zm2.28 7l-1.617-4.333L13.363 13h3.25z"/>
-    <path id="small-a" d="M6.172 12h.686l2.24 6h-.853L7.5 16H5.497l-.753 2h-.833zm1.14 3.5l-.81-2.166-.816 2.166h1.625z"/>
-    <path id="arrow" d="M9 9H4l2.5-3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-invert.png
deleted file mode 100644 (file)
index f40c303..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-invert.svg
deleted file mode 100644 (file)
index b2fbe9e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path id="big-a" d="M9.666 6H8.294l-4.48 12H5.52l1.493-4h4l1.507 4h1.666zm-2.28 7l1.617-4.333L10.637 13h-3.25z"/>
-    <path id="small-a" d="M17.828 12h-.686l-2.24 6h.853l.747-2h2l.753 2h.833zm-1.14 3.5l.81-2.167.816 2.167H16.69z"/>
-    <path id="arrow" d="M15 9h5l-2.5-3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-progressive.png
deleted file mode 100644 (file)
index a5095a1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-progressive.svg
deleted file mode 100644 (file)
index 46c5048..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path id="big-a" d="M9.666 6H8.294l-4.48 12H5.52l1.493-4h4l1.507 4h1.666zm-2.28 7l1.617-4.333L10.637 13h-3.25z"/>
-    <path id="small-a" d="M17.828 12h-.686l-2.24 6h.853l.747-2h2l.753 2h.833zm-1.14 3.5l.81-2.167.816 2.167H16.69z"/>
-    <path id="arrow" d="M15 9h5l-2.5-3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl.png
deleted file mode 100644 (file)
index 2f5e05d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl.svg
deleted file mode 100644 (file)
index 7b903c4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path id="big-a" d="M9.666 6H8.294l-4.48 12H5.52l1.493-4h4l1.507 4h1.666zm-2.28 7l1.617-4.333L10.637 13h-3.25z"/>
-    <path id="small-a" d="M17.828 12h-.686l-2.24 6h.853l.747-2h2l.753 2h.833zm-1.14 3.5l.81-2.167.816 2.167H16.69z"/>
-    <path id="arrow" d="M15 9h5l-2.5-3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-destructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-destructive.png
deleted file mode 100644 (file)
index 54b9f62..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-destructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-destructive.svg
deleted file mode 100644 (file)
index b703094..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
-    <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-invert.png
deleted file mode 100644 (file)
index ca81ab7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-invert.svg
deleted file mode 100644 (file)
index 97f21c3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-progressive.png
deleted file mode 100644 (file)
index c82c3eb..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-progressive.svg
deleted file mode 100644 (file)
index e3648cf..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/block.png
deleted file mode 100644 (file)
index 7f8eb2a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/block.svg
deleted file mode 100644 (file)
index b50bb61..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-invert.png
deleted file mode 100644 (file)
index 8c11dad..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-invert.svg
deleted file mode 100644 (file)
index b02b5c7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M16 18h3L14 6h-3L6 18h3l1.25-3h4.5L16 18zm-4.917-5L12.5 9.6l1.417 3.4h-2.834z" id="bold-a"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-progressive.png
deleted file mode 100644 (file)
index 36f6920..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-progressive.svg
deleted file mode 100644 (file)
index 4f051bf..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M16 18h3L14 6h-3L6 18h3l1.25-3h4.5L16 18zm-4.917-5L12.5 9.6l1.417 3.4h-2.834z" id="bold-a"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a.png
deleted file mode 100644 (file)
index 2907677..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a.svg
deleted file mode 100644 (file)
index ce9f4f8..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M16 18h3L14 6h-3L6 18h3l1.25-3h4.5L16 18zm-4.917-5L12.5 9.6l1.417 3.4h-2.834z" id="bold-a"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.png
deleted file mode 100644 (file)
index eac1ac7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.svg
deleted file mode 100644 (file)
index ab901fb..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="bold-arab-ain">
-        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.12-.25.34-.66.65l-.09.06c-1.233.93-2.42 1.394-3.56 1.394-1.14 0-2.043-.33-2.71-.99-.65-.66-.973-1.56-.973-2.7.006-1.353.567-2.572 1.685-3.657v-.044l-.606-.55a.952.952 0 0 1-.222-.63c0-.49.24-1.11.72-1.863.65-1.045 1.302-1.565 1.957-1.56.886.005 1.618.42 2.194 1.246.325.48-.03.55-1.064.22-.843-.33-1.528-.05-2.055.826l.016.074 1.125.866.05.005c1.405-.497 2.42-.74 3.044-.725-.06.116-.14.36-.244.732a27.75 27.75 0 0 1-.304.982l-.125.372-.386.05c-1.743.24-2.992.716-3.745 1.43-.465.463-.7.972-.704 1.524"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-progressive.png
deleted file mode 100644 (file)
index 0e9c1b0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-progressive.svg
deleted file mode 100644 (file)
index d905f22..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="bold-arab-ain">
-        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.12-.25.34-.66.65l-.09.06c-1.233.93-2.42 1.394-3.56 1.394-1.14 0-2.043-.33-2.71-.99-.65-.66-.973-1.56-.973-2.7.006-1.353.567-2.572 1.685-3.657v-.044l-.606-.55a.952.952 0 0 1-.222-.63c0-.49.24-1.11.72-1.863.65-1.045 1.302-1.565 1.957-1.56.886.005 1.618.42 2.194 1.246.325.48-.03.55-1.064.22-.843-.33-1.528-.05-2.055.826l.016.074 1.125.866.05.005c1.405-.497 2.42-.74 3.044-.725-.06.116-.14.36-.244.732a27.75 27.75 0 0 1-.304.982l-.125.372-.386.05c-1.743.24-2.992.716-3.745 1.43-.465.463-.7.972-.704 1.524"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain.png
deleted file mode 100644 (file)
index 931b6cf..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain.svg
deleted file mode 100644 (file)
index 452c3d0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-arab-ain">
-        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.12-.25.34-.66.65l-.09.06c-1.233.93-2.42 1.394-3.56 1.394-1.14 0-2.043-.33-2.71-.99-.65-.66-.973-1.56-.973-2.7.006-1.353.567-2.572 1.685-3.657v-.044l-.606-.55a.952.952 0 0 1-.222-.63c0-.49.24-1.11.72-1.863.65-1.045 1.302-1.565 1.957-1.56.886.005 1.618.42 2.194 1.246.325.48-.03.55-1.064.22-.843-.33-1.528-.05-2.055.826l.016.074 1.125.866.05.005c1.405-.497 2.42-.74 3.044-.725-.06.116-.14.36-.244.732a27.75 27.75 0 0 1-.304.982l-.125.372-.386.05c-1.743.24-2.992.716-3.745 1.43-.465.463-.7.972-.704 1.524"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.png
deleted file mode 100644 (file)
index 0973b1f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.svg
deleted file mode 100644 (file)
index e02613e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="bold-arab-dad">
-        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.478 0-.99.205-1.54.616l-.505.38.006.024c1.085.066 1.935.1 2.55.1h.315c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.006M10.38 14.6c-.016-.905-.33-1.87-.937-2.9l1.294-1.73.118.15c.267.337.504.925.713 1.767l.064.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.383.003.85.194 1.394.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.193.31-.474.555-.845.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.064l-.142.43c-.254.67-.463 1.112-.625 1.323-.724.937-1.785 1.405-3.182 1.405-1.71-.006-2.56-.92-2.56-2.74.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-progressive.png
deleted file mode 100644 (file)
index 8158ca1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-progressive.svg
deleted file mode 100644 (file)
index bbf7a38..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="bold-arab-dad">
-        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.478 0-.99.205-1.54.616l-.505.38.006.024c1.085.066 1.935.1 2.55.1h.315c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.006M10.38 14.6c-.016-.905-.33-1.87-.937-2.9l1.294-1.73.118.15c.267.337.504.925.713 1.767l.064.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.383.003.85.194 1.394.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.193.31-.474.555-.845.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.064l-.142.43c-.254.67-.463 1.112-.625 1.323-.724.937-1.785 1.405-3.182 1.405-1.71-.006-2.56-.92-2.56-2.74.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad.png
deleted file mode 100644 (file)
index 1121257..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad.svg
deleted file mode 100644 (file)
index b90bb77..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-arab-dad">
-        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.478 0-.99.205-1.54.616l-.505.38.006.024c1.085.066 1.935.1 2.55.1h.315c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.006M10.38 14.6c-.016-.905-.33-1.87-.937-2.9l1.294-1.73.118.15c.267.337.504.925.713 1.767l.064.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.383.003.85.194 1.394.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.193.31-.474.555-.845.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.064l-.142.43c-.254.67-.463 1.112-.625 1.323-.724.937-1.785 1.405-3.182 1.405-1.71-.006-2.56-.92-2.56-2.74.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.png
deleted file mode 100644 (file)
index 2ae27c2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.svg
deleted file mode 100644 (file)
index 1d9ea40..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="bold-armn-to">
-        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.28a1.43 1.43 0 0 0 .273-.517c.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078a.905.905 0 0 0-.383.258c-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.21.18.39.29.53.12.13.25.23.39.29.14.05.276.07.406.07m-2.97-7.84a2.67 2.67 0 0 0-.975.45 2.1 2.1 0 0 0-.672.813c-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04a4.227 4.227 0 0 1 1.234-1.467c.52-.39 1.13-.685 1.83-.883a8.114 8.114 0 0 1 2.225-.297c.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.34.49.73.64 1.17.15.43.226 1.09.226 1.61h1.36v2.04h-1.36v1.6c0 .58-.102 1.09-.31 1.54-.21.44-.49.81-.844 1.11-.35.302-.834.53-1.297.687-.465.15-.954.226-1.47.226-.51 0-.997-.08-1.46-.235a3.46 3.46 0 0 1-1.22-.703 3.452 3.452 0 0 1-.836-1.174c-.203-.472-.304-1.027-.304-1.662s.1-1.18.32-1.64c.21-.46.49-.684.85-.976.35-.297.76-.513 1.22-.648.452-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36a2.26 2.26 0 0 0-.77-.767 3.234 3.234 0 0 0-.986-.427c-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.102z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-progressive.png
deleted file mode 100644 (file)
index 66b22c5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-progressive.svg
deleted file mode 100644 (file)
index 4bb91c9..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="bold-armn-to">
-        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.28a1.43 1.43 0 0 0 .273-.517c.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078a.905.905 0 0 0-.383.258c-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.21.18.39.29.53.12.13.25.23.39.29.14.05.276.07.406.07m-2.97-7.84a2.67 2.67 0 0 0-.975.45 2.1 2.1 0 0 0-.672.813c-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04a4.227 4.227 0 0 1 1.234-1.467c.52-.39 1.13-.685 1.83-.883a8.114 8.114 0 0 1 2.225-.297c.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.34.49.73.64 1.17.15.43.226 1.09.226 1.61h1.36v2.04h-1.36v1.6c0 .58-.102 1.09-.31 1.54-.21.44-.49.81-.844 1.11-.35.302-.834.53-1.297.687-.465.15-.954.226-1.47.226-.51 0-.997-.08-1.46-.235a3.46 3.46 0 0 1-1.22-.703 3.452 3.452 0 0 1-.836-1.174c-.203-.472-.304-1.027-.304-1.662s.1-1.18.32-1.64c.21-.46.49-.684.85-.976.35-.297.76-.513 1.22-.648.452-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36a2.26 2.26 0 0 0-.77-.767 3.234 3.234 0 0 0-.986-.427c-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.102z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to.png
deleted file mode 100644 (file)
index 6f6349b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to.svg
deleted file mode 100644 (file)
index c35979a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-armn-to">
-        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.28a1.43 1.43 0 0 0 .273-.517c.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078a.905.905 0 0 0-.383.258c-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.21.18.39.29.53.12.13.25.23.39.29.14.05.276.07.406.07m-2.97-7.84a2.67 2.67 0 0 0-.975.45 2.1 2.1 0 0 0-.672.813c-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04a4.227 4.227 0 0 1 1.234-1.467c.52-.39 1.13-.685 1.83-.883a8.114 8.114 0 0 1 2.225-.297c.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.34.49.73.64 1.17.15.43.226 1.09.226 1.61h1.36v2.04h-1.36v1.6c0 .58-.102 1.09-.31 1.54-.21.44-.49.81-.844 1.11-.35.302-.834.53-1.297.687-.465.15-.954.226-1.47.226-.51 0-.997-.08-1.46-.235a3.46 3.46 0 0 1-1.22-.703 3.452 3.452 0 0 1-.836-1.174c-.203-.472-.304-1.027-.304-1.662s.1-1.18.32-1.64c.21-.46.49-.684.85-.976.35-.297.76-.513 1.22-.648.452-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36a2.26 2.26 0 0 0-.77-.767 3.234 3.234 0 0 0-.986-.427c-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.102z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-invert.png
deleted file mode 100644 (file)
index e242b55..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-invert.svg
deleted file mode 100644 (file)
index 0a03c2e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="bold-b">
-        <path id="b" d="M7 18h6c2 0 4-1 4-3 0-1.064.01-1.975-1.99-3 2-.975 1.99-1.935 1.99-3 0-2-2-3-4-3H7v12zm7-8c0 1 0 1-2 1h-2V8h2c2 0 2 0 2 1v1zm-2 6h-2v-3h2c2 0 2 0 2 1v1s0 1-2 1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-progressive.png
deleted file mode 100644 (file)
index 96f917a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-progressive.svg
deleted file mode 100644 (file)
index adf665e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="bold-b">
-        <path id="b" d="M7 18h6c2 0 4-1 4-3 0-1.064.01-1.975-1.99-3 2-.975 1.99-1.935 1.99-3 0-2-2-3-4-3H7v12zm7-8c0 1 0 1-2 1h-2V8h2c2 0 2 0 2 1v1zm-2 6h-2v-3h2c2 0 2 0 2 1v1s0 1-2 1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b.png
deleted file mode 100644 (file)
index 8d09636..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b.svg
deleted file mode 100644 (file)
index 1806709..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-b">
-        <path id="b" d="M7 18h6c2 0 4-1 4-3 0-1.064.01-1.975-1.99-3 2-.975 1.99-1.935 1.99-3 0-2-2-3-4-3H7v12zm7-8c0 1 0 1-2 1h-2V8h2c2 0 2 0 2 1v1zm-2 6h-2v-3h2c2 0 2 0 2 1v1s0 1-2 1z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-invert.png
deleted file mode 100644 (file)
index c131903..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-invert.svg
deleted file mode 100644 (file)
index cd67107..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="bold-cyrl-be">
-        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.4-.255-1.07-.397-2.02-.397H10v3"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-progressive.png
deleted file mode 100644 (file)
index 4337f73..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-progressive.svg
deleted file mode 100644 (file)
index 22c3bf5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="bold-cyrl-be">
-        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.4-.255-1.07-.397-2.02-.397H10v3"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be.png
deleted file mode 100644 (file)
index de9e9d1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be.svg
deleted file mode 100644 (file)
index 9d84cb0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-cyrl-be">
-        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.4-.255-1.07-.397-2.02-.397H10v3"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-invert.png
deleted file mode 100644 (file)
index ce6f320..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-invert.svg
deleted file mode 100644 (file)
index 42ba193..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="bold-cyrl-te">
-        <path id="te" d="M11 18V8H7V6h11v2h-4v10"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-progressive.png
deleted file mode 100644 (file)
index 5e2073a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-progressive.svg
deleted file mode 100644 (file)
index 73a76a3..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="bold-cyrl-te">
-        <path id="te" d="M11 18V8H7V6h11v2h-4v10"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te.png
deleted file mode 100644 (file)
index 281d718..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te.svg
deleted file mode 100644 (file)
index 63aee3e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-cyrl-te">
-        <path id="te" d="M11 18V8H7V6h11v2h-4v10"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-invert.png
deleted file mode 100644 (file)
index 080e731..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-invert.svg
deleted file mode 100644 (file)
index 4643345..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="bold-cyrl-zhe">
-        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.112-.337.3-.452.55-.115.25-.286.76-.512 1.533-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.455.603 1.103.944 1.943L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09A.726.726 0 0 0 13 12.78V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772a6.357 6.357 0 0 1-.392-1.04c-.222-.76-.39-1.26-.505-1.52-.11-.25-.26-.44-.45-.57-.18-.12-.49-.18-.912-.18H6V6l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-progressive.png
deleted file mode 100644 (file)
index 86de0d4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-progressive.svg
deleted file mode 100644 (file)
index 3b7fee9..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="bold-cyrl-zhe">
-        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.112-.337.3-.452.55-.115.25-.286.76-.512 1.533-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.455.603 1.103.944 1.943L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09A.726.726 0 0 0 13 12.78V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772a6.357 6.357 0 0 1-.392-1.04c-.222-.76-.39-1.26-.505-1.52-.11-.25-.26-.44-.45-.57-.18-.12-.49-.18-.912-.18H6V6l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe.png
deleted file mode 100644 (file)
index 9838701..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe.svg
deleted file mode 100644 (file)
index aab3f4c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-cyrl-zhe">
-        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.112-.337.3-.452.55-.115.25-.286.76-.512 1.533-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.455.603 1.103.944 1.943L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09A.726.726 0 0 0 13 12.78V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772a6.357 6.357 0 0 1-.392-1.04c-.222-.76-.39-1.26-.505-1.52-.11-.25-.26-.44-.45-.57-.18-.12-.49-.18-.912-.18H6V6l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-invert.png
deleted file mode 100644 (file)
index ba2c976..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-invert.svg
deleted file mode 100644 (file)
index 5cf18ff..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="bold-f">
-        <path id="f" d="M16 8V6H8v12h3v-5h4v-2h-4V8z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-progressive.png
deleted file mode 100644 (file)
index e225017..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-progressive.svg
deleted file mode 100644 (file)
index cce2c59..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="bold-f">
-        <path id="f" d="M16 8V6H8v12h3v-5h4v-2h-4V8z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f.png
deleted file mode 100644 (file)
index ad0d89b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f.svg
deleted file mode 100644 (file)
index 89061f1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-f">
-        <path id="f" d="M16 8V6H8v12h3v-5h4v-2h-4V8z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.png
deleted file mode 100644 (file)
index 2f1b7ac..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.svg
deleted file mode 100644 (file)
index 2741c4f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="bold-g">
-        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26A7.994 7.994 0 0 1 11.97 18c-1.23 0-2.303-.253-3.217-.76a4.908 4.908 0 0 1-2.062-2.185A7.008 7.008 0 0 1 6 11.96c0-1.208.26-2.282.77-3.222.518-.94 1.27-1.66 2.26-2.16.754-.386 1.693-.58 2.816-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435a2.433 2.433 0 0 0-.94-1.346c-.454-.34-1.022-.5-1.707-.5-1.038 0-1.864.32-2.48.97-.61.65-.914 1.61-.914 2.89 0 1.375.31 2.41.93 3.1.62.687 1.434 1.03 2.44 1.03.497 0 .995-.095 1.49-.285.505-.196 1.334-.57 1.69-.846v-.868"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-progressive.png
deleted file mode 100644 (file)
index 8f3febe..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-progressive.svg
deleted file mode 100644 (file)
index 9e85e63..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="bold-g">
-        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26A7.994 7.994 0 0 1 11.97 18c-1.23 0-2.303-.253-3.217-.76a4.908 4.908 0 0 1-2.062-2.185A7.008 7.008 0 0 1 6 11.96c0-1.208.26-2.282.77-3.222.518-.94 1.27-1.66 2.26-2.16.754-.386 1.693-.58 2.816-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435a2.433 2.433 0 0 0-.94-1.346c-.454-.34-1.022-.5-1.707-.5-1.038 0-1.864.32-2.48.97-.61.65-.914 1.61-.914 2.89 0 1.375.31 2.41.93 3.1.62.687 1.434 1.03 2.44 1.03.497 0 .995-.095 1.49-.285.505-.196 1.334-.57 1.69-.846v-.868"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g.png
deleted file mode 100644 (file)
index 55e766a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g.svg
deleted file mode 100644 (file)
index 3150d95..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-g">
-        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26A7.994 7.994 0 0 1 11.97 18c-1.23 0-2.303-.253-3.217-.76a4.908 4.908 0 0 1-2.062-2.185A7.008 7.008 0 0 1 6 11.96c0-1.208.26-2.282.77-3.222.518-.94 1.27-1.66 2.26-2.16.754-.386 1.693-.58 2.816-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435a2.433 2.433 0 0 0-.94-1.346c-.454-.34-1.022-.5-1.707-.5-1.038 0-1.864.32-2.48.97-.61.65-.914 1.61-.914 2.89 0 1.375.31 2.41.93 3.1.62.687 1.434 1.03 2.44 1.03.497 0 .995-.095 1.49-.285.505-.196 1.334-.57 1.69-.846v-.868"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-invert.png
deleted file mode 100644 (file)
index ef2da34..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-invert.svg
deleted file mode 100644 (file)
index c6eea49..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="bold-geor-man">
-        <path id="geor-man" d="M13.832 14.06c0-1.714-.394-2.572-1.182-2.572-.868 0-1.302.78-1.302 2.338-.01 1.624.42 2.436 1.295 2.436.793 0 1.19-.734 1.19-2.2m2.167 0C16 16.686 14.884 18 12.65 18 10.218 18 9 16.614 9 13.84c0-2.737 1.217-4.105 3.65-4.105.842 0 1.183.63 1.183.63v-1.58c0-.788-.45-1.183-1.347-1.183-.572 0-.858.374-.858 1.123h-2.34C9.29 6.908 10.35 6 12.462 6 14.83 6 16.01 6.946 16 8.84"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-progressive.png
deleted file mode 100644 (file)
index ad5c93f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-progressive.svg
deleted file mode 100644 (file)
index bca4a1a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="bold-geor-man">
-        <path id="geor-man" d="M13.832 14.06c0-1.714-.394-2.572-1.182-2.572-.868 0-1.302.78-1.302 2.338-.01 1.624.42 2.436 1.295 2.436.793 0 1.19-.734 1.19-2.2m2.167 0C16 16.686 14.884 18 12.65 18 10.218 18 9 16.614 9 13.84c0-2.737 1.217-4.105 3.65-4.105.842 0 1.183.63 1.183.63v-1.58c0-.788-.45-1.183-1.347-1.183-.572 0-.858.374-.858 1.123h-2.34C9.29 6.908 10.35 6 12.462 6 14.83 6 16.01 6.946 16 8.84"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man.png
deleted file mode 100644 (file)
index c050074..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man.svg
deleted file mode 100644 (file)
index deb95b7..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-geor-man">
-        <path id="geor-man" d="M13.832 14.06c0-1.714-.394-2.572-1.182-2.572-.868 0-1.302.78-1.302 2.338-.01 1.624.42 2.436 1.295 2.436.793 0 1.19-.734 1.19-2.2m2.167 0C16 16.686 14.884 18 12.65 18 10.218 18 9 16.614 9 13.84c0-2.737 1.217-4.105 3.65-4.105.842 0 1.183.63 1.183.63v-1.58c0-.788-.45-1.183-1.347-1.183-.572 0-.858.374-.858 1.123h-2.34C9.29 6.908 10.35 6 12.462 6 14.83 6 16.01 6.946 16 8.84"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-invert.png
deleted file mode 100644 (file)
index 0736aab..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-invert.svg
deleted file mode 100644 (file)
index a5516ed..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="bold-l">
-        <path id="l" d="M8 18V6h3v10h5v2"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-progressive.png
deleted file mode 100644 (file)
index 7a1c401..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-progressive.svg
deleted file mode 100644 (file)
index 44178b7..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="bold-l">
-        <path id="l" d="M8 18V6h3v10h5v2"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l.png
deleted file mode 100644 (file)
index 11b67a1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l.svg
deleted file mode 100644 (file)
index 7695623..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-l">
-        <path id="l" d="M8 18V6h3v10h5v2"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-invert.png
deleted file mode 100644 (file)
index d57d0a5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-invert.svg
deleted file mode 100644 (file)
index 528efe8..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="bold-n">
-        <path id="n" d="M7 18V6h3l4 8V6h3v12h-3l-4-8v8H7"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-progressive.png
deleted file mode 100644 (file)
index bb0299c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-progressive.svg
deleted file mode 100644 (file)
index d686921..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="bold-n">
-        <path id="n" d="M7 18V6h3l4 8V6h3v12h-3l-4-8v8H7"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n.png
deleted file mode 100644 (file)
index 708d421..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n.svg
deleted file mode 100644 (file)
index 62f66a2..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-n">
-        <path id="n" d="M7 18V6h3l4 8V6h3v12h-3l-4-8v8H7"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-invert.png
deleted file mode 100644 (file)
index ad990be..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-invert.svg
deleted file mode 100644 (file)
index c1549dc..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="bold-v">
-        <path id="v" d="M10.5 18L6 6h3l3 8 3-8h3l-4.5 12"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-progressive.png
deleted file mode 100644 (file)
index d7c5eb0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-progressive.svg
deleted file mode 100644 (file)
index a94a50c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="bold-v">
-        <path id="v" d="M10.5 18L6 6h3l3 8 3-8h3l-4.5 12"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v.png
deleted file mode 100644 (file)
index a60786c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v.svg
deleted file mode 100644 (file)
index 027db27..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-v">
-        <path id="v" d="M10.5 18L6 6h3l3 8 3-8h3l-4.5 12"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-invert.png
deleted file mode 100644 (file)
index a32272e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-invert.svg
deleted file mode 100644 (file)
index 83265e4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M15 7c-1.7 0-3 1.3-3 3 0-1.7-1.3-3-3-3H3v13h6c1.7 0 3 1 3 2 0-1 1.3-2 3-2h6V7h-6zm5 12h-5c-1.7 0-2 .4-2 .4v-8.9C13 9.1 14.1 8 15.5 8H20v11z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-progressive.png
deleted file mode 100644 (file)
index 9a63c72..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-progressive.svg
deleted file mode 100644 (file)
index 89fff50..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M15 7c-1.7 0-3 1.3-3 3 0-1.7-1.3-3-3-3H3v13h6c1.7 0 3 1 3 2 0-1 1.3-2 3-2h6V7h-6zm5 12h-5c-1.7 0-2 .4-2 .4v-8.9C13 9.1 14.1 8 15.5 8H20v11z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr.png
deleted file mode 100644 (file)
index 49ac06a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr.svg
deleted file mode 100644 (file)
index 6a9a748..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M15 7c-1.7 0-3 1.3-3 3 0-1.7-1.3-3-3-3H3v13h6c1.7 0 3 1 3 2 0-1 1.3-2 3-2h6V7h-6zm5 12h-5c-1.7 0-2 .4-2 .4v-8.9C13 9.1 14.1 8 15.5 8H20v11z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-invert.png
deleted file mode 100644 (file)
index 7258970..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-invert.svg
deleted file mode 100644 (file)
index 256ee41..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M9 7c1.7 0 3 1.3 3 3 0-1.7 1.3-3 3-3h6v13h-6c-1.7 0-3 1-3 2 0-1-1.3-2-3-2H3V7h6zM4 19h5c1.7 0 2 .4 2 .4v-8.9C11 9.1 9.9 8 8.5 8H4v11z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-progressive.png
deleted file mode 100644 (file)
index 6ff5355..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-progressive.svg
deleted file mode 100644 (file)
index 150fd95..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M9 7c1.7 0 3 1.3 3 3 0-1.7 1.3-3 3-3h6v13h-6c-1.7 0-3 1-3 2 0-1-1.3-2-3-2H3V7h6zM4 19h5c1.7 0 2 .4 2 .4v-8.9C11 9.1 9.9 8 8.5 8H4v11z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl.png
deleted file mode 100644 (file)
index e0edc34..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl.svg
deleted file mode 100644 (file)
index 3797328..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M9 7c1.7 0 3 1.3 3 3 0-1.7 1.3-3 3-3h6v13h-6c-1.7 0-3 1-3 2 0-1-1.3-2-3-2H3V7h6zM4 19h5c1.7 0 2 .4 2 .4v-8.9C11 9.1 9.9 8 8.5 8H4v11z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-invert.png
deleted file mode 100644 (file)
index 084cbc7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-invert.svg
deleted file mode 100644 (file)
index e511a8a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M15 5H8c-1.1 0-2 .9-2 2v3h3v11l4-3 4 3V7c0-1.1-.9-2-2-2zM9 9H7V7c0-.6.4-1 1-1h1v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-progressive.png
deleted file mode 100644 (file)
index f748967..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-progressive.svg
deleted file mode 100644 (file)
index 9f1c2b4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M15 5H8c-1.1 0-2 .9-2 2v3h3v11l4-3 4 3V7c0-1.1-.9-2-2-2zM9 9H7V7c0-.6.4-1 1-1h1v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr.png
deleted file mode 100644 (file)
index ad046b6..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr.svg
deleted file mode 100644 (file)
index ba3ff91..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M15 5H8c-1.1 0-2 .9-2 2v3h3v11l4-3 4 3V7c0-1.1-.9-2-2-2zM9 9H7V7c0-.6.4-1 1-1h1v3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-invert.png
deleted file mode 100644 (file)
index 125fb74..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-invert.svg
deleted file mode 100644 (file)
index f949201..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M8 5h7c1.1 0 2 .9 2 2v3h-3v11l-4-3-4 3V7c0-1.1.9-2 2-2zm6 4h2V7c0-.6-.4-1-1-1h-1v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-progressive.png
deleted file mode 100644 (file)
index 366eedc..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-progressive.svg
deleted file mode 100644 (file)
index 4967af9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M8 5h7c1.1 0 2 .9 2 2v3h-3v11l-4-3-4 3V7c0-1.1.9-2 2-2zm6 4h2V7c0-.6-.4-1-1-1h-1v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl.png
deleted file mode 100644 (file)
index 0d19f03..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl.svg
deleted file mode 100644 (file)
index fcbd135..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M8 5h7c1.1 0 2 .9 2 2v3h-3v11l-4-3-4 3V7c0-1.1.9-2 2-2zm6 4h2V7c0-.6-.4-1-1-1h-1v3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.png
deleted file mode 100644 (file)
index 6194ed4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.svg
deleted file mode 100644 (file)
index 8f41c1a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
-    <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9-.3.3-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8zM12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/>
-    <path d="M12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright.png
deleted file mode 100644 (file)
index 788fc94..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright.svg
deleted file mode 100644 (file)
index 5a399fe..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9-.3.3-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8zM12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/>
-    <path d="M12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-invert.png
deleted file mode 100644 (file)
index 027df2d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-invert.svg
deleted file mode 100644 (file)
index 3ee311a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M3 6v11c0 1.7 1.3 3 3 3h15V6H3zm2.5 1C6.3 7 7 7.7 7 8.5S6.3 10 5.5 10 4 9.3 4 8.5 4.7 7 5.5 7zM20 19H6c-1.1 0-2-.9-2-2v-6h16v8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-progressive.png
deleted file mode 100644 (file)
index 4ab9a1b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-progressive.svg
deleted file mode 100644 (file)
index d3dd3fe..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M3 6v11c0 1.7 1.3 3 3 3h15V6H3zm2.5 1C6.3 7 7 7.7 7 8.5S6.3 10 5.5 10 4 9.3 4 8.5 4.7 7 5.5 7zM20 19H6c-1.1 0-2-.9-2-2v-6h16v8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr.png
deleted file mode 100644 (file)
index ae059ad..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr.svg
deleted file mode 100644 (file)
index e7be7e5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M3 6v11c0 1.7 1.3 3 3 3h15V6H3zm2.5 1C6.3 7 7 7.7 7 8.5S6.3 10 5.5 10 4 9.3 4 8.5 4.7 7 5.5 7zM20 19H6c-1.1 0-2-.9-2-2v-6h16v8z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-invert.png
deleted file mode 100644 (file)
index 51937b7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-invert.svg
deleted file mode 100644 (file)
index 98238cf..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-progressive.png
deleted file mode 100644 (file)
index 1f33d14..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-progressive.svg
deleted file mode 100644 (file)
index e2ad0ab..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl.png
deleted file mode 100644 (file)
index 939a858..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl.svg
deleted file mode 100644 (file)
index 38807b5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.png
deleted file mode 100644 (file)
index 1463874..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.svg
deleted file mode 100644 (file)
index f933a1e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-progressive.png
deleted file mode 100644 (file)
index 5f6143b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-progressive.svg
deleted file mode 100644 (file)
index 97d6a58..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr.png
deleted file mode 100644 (file)
index 0ab46dd..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr.svg
deleted file mode 100644 (file)
index b0bc0e5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.png
deleted file mode 100644 (file)
index 806c55d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.svg
deleted file mode 100644 (file)
index dccd818..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM7 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-progressive.png
deleted file mode 100644 (file)
index 1864f52..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-progressive.svg
deleted file mode 100644 (file)
index 3757322..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM7 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl.png
deleted file mode 100644 (file)
index 0236393..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl.svg
deleted file mode 100644 (file)
index d8ff5a9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM7 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-destructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-destructive.png
deleted file mode 100644 (file)
index f574a39..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-destructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-destructive.svg
deleted file mode 100644 (file)
index c0f8dc0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
-    <g id="cancel">
-        <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-invert.png
deleted file mode 100644 (file)
index b7529a2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-invert.svg
deleted file mode 100644 (file)
index 893486d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="cancel">
-        <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-progressive.png
deleted file mode 100644 (file)
index 04b8a08..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-progressive.svg
deleted file mode 100644 (file)
index 18698eb..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="cancel">
-        <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel.png
deleted file mode 100644 (file)
index f9354e3..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel.svg
deleted file mode 100644 (file)
index 04ff5c3..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="cancel">
-        <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-invert.png
deleted file mode 100644 (file)
index 0bf8286..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-invert.svg
deleted file mode 100644 (file)
index f4e15cf..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M7 13.1l8.9 8.9c.8-.8.8-2 0-2.8l-6.1-6.1 6-6.1c.8-.8.8-2 0-2.8L7 13.1z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-progressive.png
deleted file mode 100644 (file)
index ddb2318..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-progressive.svg
deleted file mode 100644 (file)
index 0558da7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M7 13.1l8.9 8.9c.8-.8.8-2 0-2.8l-6.1-6.1 6-6.1c.8-.8.8-2 0-2.8L7 13.1z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr.png
deleted file mode 100644 (file)
index e95caf2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr.svg
deleted file mode 100644 (file)
index 44d2d1a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M7 13.1l8.9 8.9c.8-.8.8-2 0-2.8l-6.1-6.1 6-6.1c.8-.8.8-2 0-2.8L7 13.1z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-invert.png
deleted file mode 100644 (file)
index 4a880d3..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-invert.svg
deleted file mode 100644 (file)
index 6a74d9b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M16.5 13.1L7.6 22c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-progressive.png
deleted file mode 100644 (file)
index b5711f8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-progressive.svg
deleted file mode 100644 (file)
index 3274959..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M16.5 13.1L7.6 22c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl.png
deleted file mode 100644 (file)
index e59bdd5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl.svg
deleted file mode 100644 (file)
index 1f90f5c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M16.5 13.1L7.6 22c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-invert.png
deleted file mode 100644 (file)
index f3031d9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-invert.svg
deleted file mode 100644 (file)
index 4d4bf6e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M12 16l8.9-8.9c-.8-.8-2-.8-2.8 0L12 13.2l-6.1-6c-.8-.8-2-.8-2.8 0L12 16z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-progressive.png
deleted file mode 100644 (file)
index b7a6e5a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-progressive.svg
deleted file mode 100644 (file)
index e651488..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 16l8.9-8.9c-.8-.8-2-.8-2.8 0L12 13.2l-6.1-6c-.8-.8-2-.8-2.8 0L12 16z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown.png
deleted file mode 100644 (file)
index a46ffdb..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown.svg
deleted file mode 100644 (file)
index 89e0612..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 16l8.9-8.9c-.8-.8-2-.8-2.8 0L12 13.2l-6.1-6c-.8-.8-2-.8-2.8 0L12 16z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-invert.png
deleted file mode 100644 (file)
index 5706cb4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-invert.svg
deleted file mode 100644 (file)
index 9686715..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M12 6.5l8.9 8.9c-.8.8-2 .8-2.8 0L12 9.3l-6.1 6c-.8.8-2 .8-2.8 0L12 6.5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-progressive.png
deleted file mode 100644 (file)
index 285aba6..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-progressive.svg
deleted file mode 100644 (file)
index 6f1b02d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 6.5l8.9 8.9c-.8.8-2 .8-2.8 0L12 9.3l-6.1 6c-.8.8-2 .8-2.8 0L12 6.5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp.png
deleted file mode 100644 (file)
index 9e5c022..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp.svg
deleted file mode 100644 (file)
index fcf4e13..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 6.5l8.9 8.9c-.8.8-2 .8-2.8 0L12 9.3l-6.1 6c-.8.8-2 .8-2.8 0L12 6.5z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.png
deleted file mode 100644 (file)
index 6fe1260..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.svg
deleted file mode 100644 (file)
index e5590a3..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="case-sensitive">
-        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
-        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-progressive.png
deleted file mode 100644 (file)
index cc6f665..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-progressive.svg
deleted file mode 100644 (file)
index ff6e102..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="case-sensitive">
-        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
-        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.png
deleted file mode 100644 (file)
index 426c5de..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.svg
deleted file mode 100644 (file)
index 749e38f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="case-sensitive">
-        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
-        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-constructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-constructive.png
deleted file mode 100644 (file)
index 1dc3ae4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-constructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-constructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-constructive.svg
deleted file mode 100644 (file)
index 4cea8a3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-destructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-destructive.png
deleted file mode 100644 (file)
index 305f41d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-destructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-destructive.svg
deleted file mode 100644 (file)
index 3609a7b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
-    <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-invert.png
deleted file mode 100644 (file)
index 708bb39..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-invert.svg
deleted file mode 100644 (file)
index 7f3299a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-progressive.png
deleted file mode 100644 (file)
index 1dc3ae4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-progressive.svg
deleted file mode 100644 (file)
index 4cea8a3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check.png
deleted file mode 100644 (file)
index 65ab0e9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check.svg
deleted file mode 100644 (file)
index 2fa9dfb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-constructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-constructive.png
deleted file mode 100644 (file)
index 99daf8c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-constructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-constructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-constructive.svg
deleted file mode 100644 (file)
index 2c20c6e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <circle cx="12" cy="12" r="6"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-invert.png
deleted file mode 100644 (file)
index f4dd1ff..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-invert.svg
deleted file mode 100644 (file)
index 88a64fe..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <circle cx="12" cy="12" r="6"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-progressive.png
deleted file mode 100644 (file)
index 99daf8c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-progressive.svg
deleted file mode 100644 (file)
index 2c20c6e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <circle cx="12" cy="12" r="6"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle.png
deleted file mode 100644 (file)
index 32ba403..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle.svg
deleted file mode 100644 (file)
index 18133cc..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <circle cx="12" cy="12" r="6"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-invert.png
deleted file mode 100644 (file)
index 442399a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-invert.svg
deleted file mode 100644 (file)
index 9e2795e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M7 12h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zm5-2h2v16H8c-1.7 0-3-1.3-3-3V3h8v7l1.5-2 1.5 2V3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-progressive.png
deleted file mode 100644 (file)
index e27df80..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-progressive.svg
deleted file mode 100644 (file)
index 677ee81..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M7 12h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zm5-2h2v16H8c-1.7 0-3-1.3-3-3V3h8v7l1.5-2 1.5 2V3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr.png
deleted file mode 100644 (file)
index ca0bdc4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr.svg
deleted file mode 100644 (file)
index 6a55c05..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M7 12h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zm5-2h2v16H8c-1.7 0-3-1.3-3-3V3h8v7l1.5-2 1.5 2V3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-invert.png
deleted file mode 100644 (file)
index 0159650..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-invert.svg
deleted file mode 100644 (file)
index 131a271..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M16 12H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zM7 3H5v16h10c1.7 0 3-1.3 3-3V3h-8v7L8.5 8 7 10V3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-progressive.png
deleted file mode 100644 (file)
index 7fb92a7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-progressive.svg
deleted file mode 100644 (file)
index b19d640..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M16 12H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zM7 3H5v16h10c1.7 0 3-1.3 3-3V3h-8v7L8.5 8 7 10V3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl.png
deleted file mode 100644 (file)
index 3eae601..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl.svg
deleted file mode 100644 (file)
index 0c0c411..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M16 12H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zM7 3H5v16h10c1.7 0 3-1.3 3-3V3h-8v7L8.5 8 7 10V3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-invert.png
deleted file mode 100644 (file)
index ec90ed9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-invert.svg
deleted file mode 100644 (file)
index b43d794..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="clear">
-        <path id="circle-with-cross" d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm4 11l-1 1-3-3-3 3-1-1 3-3-3-3 1-1 3 3 3-3 1 1-3 3 3 3z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-progressive.png
deleted file mode 100644 (file)
index fb0d269..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-progressive.svg
deleted file mode 100644 (file)
index 2fa1f2f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="clear">
-        <path id="circle-with-cross" d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm4 11l-1 1-3-3-3 3-1-1 3-3-3-3 1-1 3 3 3-3 1 1-3 3 3 3z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear.png
deleted file mode 100644 (file)
index 973dc03..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear.svg
deleted file mode 100644 (file)
index 8689e77..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="clear">
-        <path id="circle-with-cross" d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm4 11l-1 1-3-3-3 3-1-1 3-3-3-3 1-1 3 3 3-3 1 1-3 3 3 3z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-invert.png
deleted file mode 100644 (file)
index 2f944d7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-invert.svg
deleted file mode 100644 (file)
index 8376288..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 12l-4-3V8h2v5l1.7 1.2c1.3.9 1 1.9.3 2.8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-progressive.png
deleted file mode 100644 (file)
index f2683e5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-progressive.svg
deleted file mode 100644 (file)
index 4c8accd..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 12l-4-3V8h2v5l1.7 1.2c1.3.9 1 1.9.3 2.8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock.png
deleted file mode 100644 (file)
index 98b504e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock.svg
deleted file mode 100644 (file)
index 85b0628..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 12l-4-3V8h2v5l1.7 1.2c1.3.9 1 1.9.3 2.8z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.png
deleted file mode 100644 (file)
index 92af7b6..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.svg
deleted file mode 100644 (file)
index 8027fff..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-  <path d="M18 7.6l-1.4-1.4-4.6 4.6-4.6-4.6L6 7.6l4.6 4.6L6 16.8l1.4 1.4 4.6-4.6 4.6 4.6 1.4-1.4-4.6-4.6z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-progressive.png
deleted file mode 100644 (file)
index 06fcd5d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-progressive.svg
deleted file mode 100644 (file)
index 37c960e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-  <path d="M18 7.6l-1.4-1.4-4.6 4.6-4.6-4.6L6 7.6l4.6 4.6L6 16.8l1.4 1.4 4.6-4.6 4.6 4.6 1.4-1.4-4.6-4.6z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close.png
deleted file mode 100644 (file)
index cdb037a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close.svg
deleted file mode 100644 (file)
index 88ffb56..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-  <path d="M18 7.6l-1.4-1.4-4.6 4.6-4.6-4.6L6 7.6l4.6 4.6L6 16.8l1.4 1.4 4.6-4.6 4.6 4.6 1.4-1.4-4.6-4.6z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.png
deleted file mode 100644 (file)
index 1804fb8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.svg
deleted file mode 100644 (file)
index e9179bf..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="code">
-        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.59.335-.11.872-.25 1.835-.25H10v1h-.752c-.457 0-.77.19-.936.406-.167.216-.312.446-.312 1.07v1.856c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.31.238.76.238 1.49v1.86c0 .62.145.85.312 1.06.166.22.48.41.936.41H10v1H8.973c-.963 0-1.5-.133-1.835-.248a1.578 1.578 0 0 1-.808-.59 1.68 1.68 0 0 1-.257-.626C6.023 16.283 6 15.9 6 15.386V13c0-1 0-1-1-1H4z"/>
-        <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" width="24" height="24" xlink:href="#left-bracket"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-progressive.png
deleted file mode 100644 (file)
index 21656c4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-progressive.svg
deleted file mode 100644 (file)
index ce0e492..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="code">
-        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.59.335-.11.872-.25 1.835-.25H10v1h-.752c-.457 0-.77.19-.936.406-.167.216-.312.446-.312 1.07v1.856c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.31.238.76.238 1.49v1.86c0 .62.145.85.312 1.06.166.22.48.41.936.41H10v1H8.973c-.963 0-1.5-.133-1.835-.248a1.578 1.578 0 0 1-.808-.59 1.68 1.68 0 0 1-.257-.626C6.023 16.283 6 15.9 6 15.386V13c0-1 0-1-1-1H4z"/>
-        <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" width="24" height="24" xlink:href="#left-bracket"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code.png
deleted file mode 100644 (file)
index ba89e4e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code.svg
deleted file mode 100644 (file)
index a00d158..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
-    <g id="code">
-        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.59.335-.11.872-.25 1.835-.25H10v1h-.752c-.457 0-.77.19-.936.406-.167.216-.312.446-.312 1.07v1.856c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.31.238.76.238 1.49v1.86c0 .62.145.85.312 1.06.166.22.48.41.936.41H10v1H8.973c-.963 0-1.5-.133-1.835-.248a1.578 1.578 0 0 1-.808-.59 1.68 1.68 0 0 1-.257-.626C6.023 16.283 6 15.9 6 15.386V13c0-1 0-1-1-1H4z"/>
-        <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" width="24" height="24" xlink:href="#left-bracket"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-invert.png
deleted file mode 100644 (file)
index 951a840..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-invert.svg
deleted file mode 100644 (file)
index 7b7305a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="collapse">
-        <path id="arrow" d="M6.697 15.714L12 10.412l5.303 5.302 1.414-1.414L12 7.583 5.283 14.3z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-progressive.png
deleted file mode 100644 (file)
index 8b4d5c7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-progressive.svg
deleted file mode 100644 (file)
index 29157ae..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="collapse">
-        <path id="arrow" d="M6.697 15.714L12 10.412l5.303 5.302 1.414-1.414L12 7.583 5.283 14.3z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse.png
deleted file mode 100644 (file)
index 1d8c6db..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse.svg
deleted file mode 100644 (file)
index 645bfda..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="collapse">
-        <path id="arrow" d="M6.697 15.714L12 10.412l5.303 5.302 1.414-1.414L12 7.583 5.283 14.3z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.png
deleted file mode 100644 (file)
index 1de3b9d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.svg
deleted file mode 100644 (file)
index e6f6bb1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="comment">
-        <path id="speech-bubble" d="M15 6H9a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3v3l3-3h3a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-progressive.png
deleted file mode 100644 (file)
index 6bb0a73..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-progressive.svg
deleted file mode 100644 (file)
index 63bdad9..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="comment">
-        <path id="speech-bubble" d="M15 6H9a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3v3l3-3h3a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment.png
deleted file mode 100644 (file)
index dcaa881..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment.svg
deleted file mode 100644 (file)
index 861611a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="comment">
-        <path id="speech-bubble" d="M15 6H9a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3v3l3-3h3a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.png
deleted file mode 100644 (file)
index 7bb19e3..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.svg
deleted file mode 100644 (file)
index b19dd0d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="diacritic">
-      <path id="letter-a" d="M13.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.563 0-.954-.208-1.376-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.323-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.69-1.4c.878-.46 1.85-.69 2.917-.69 1.024 0 1.59.22 2.134.66.546.446.82 1.12.82 2.03V17h-1.45m-.395-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.337.87 1.01.87.48 0 .864-.138 1.15-.415.29-.277.437-.645.437-1.103v-.627"/>
-      <path id="tilde" d="M12.012 7.527l-.466-.306a.832.832 0 0 1-.085-.048c-.264-.17-.467-.256-.608-.256a.518.518 0 0 0-.466.256c-.107.17-.16.418-.16.743v.066H9.047c0-.748.144-1.326.432-1.733.294-.407.703-.61 1.228-.61.203 0 .406.037.61.114.208.073.43.19.66.357l.517.355c.124.082.237.146.338.19a.77.77 0 0 0 .288.066c.204 0 .362-.088.475-.265.113-.176.17-.42.17-.735v-.066h1.177c0 .75-.147 1.327-.44 1.735-.29.407-.695.61-1.22.61-.203 0-.4-.032-.593-.098a3.107 3.107 0 0 1-.678-.373z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.png
deleted file mode 100644 (file)
index eb76fd0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.svg
deleted file mode 100644 (file)
index fed1164..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="diacritic">
-      <path id="letter-a" d="M13.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.563 0-.954-.208-1.376-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.323-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.69-1.4c.878-.46 1.85-.69 2.917-.69 1.024 0 1.59.22 2.134.66.546.446.82 1.12.82 2.03V17h-1.45m-.395-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.337.87 1.01.87.48 0 .864-.138 1.15-.415.29-.277.437-.645.437-1.103v-.627"/>
-      <path id="tilde" d="M12.012 7.527l-.466-.306a.832.832 0 0 1-.085-.048c-.264-.17-.467-.256-.608-.256a.518.518 0 0 0-.466.256c-.107.17-.16.418-.16.743v.066H9.047c0-.748.144-1.326.432-1.733.294-.407.703-.61 1.228-.61.203 0 .406.037.61.114.208.073.43.19.66.357l.517.355c.124.082.237.146.338.19a.77.77 0 0 0 .288.066c.204 0 .362-.088.475-.265.113-.176.17-.42.17-.735v-.066h1.177c0 .75-.147 1.327-.44 1.735-.29.407-.695.61-1.22.61-.203 0-.4-.032-.593-.098a3.107 3.107 0 0 1-.678-.373z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.png
deleted file mode 100644 (file)
index 2359b19..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.svg
deleted file mode 100644 (file)
index 4565101..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="diacritic">
-      <path id="letter-a" d="M13.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.563 0-.954-.208-1.376-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.323-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.69-1.4c.878-.46 1.85-.69 2.917-.69 1.024 0 1.59.22 2.134.66.546.446.82 1.12.82 2.03V17h-1.45m-.395-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.337.87 1.01.87.48 0 .864-.138 1.15-.415.29-.277.437-.645.437-1.103v-.627"/>
-      <path id="tilde" d="M12.012 7.527l-.466-.306a.832.832 0 0 1-.085-.048c-.264-.17-.467-.256-.608-.256a.518.518 0 0 0-.466.256c-.107.17-.16.418-.16.743v.066H9.047c0-.748.144-1.326.432-1.733.294-.407.703-.61 1.228-.61.203 0 .406.037.61.114.208.073.43.19.66.357l.517.355c.124.082.237.146.338.19a.77.77 0 0 0 .288.066c.204 0 .362-.088.475-.265.113-.176.17-.42.17-.735v-.066h1.177c0 .75-.147 1.327-.44 1.735-.29.407-.695.61-1.22.61-.203 0-.4-.032-.593-.098a3.107 3.107 0 0 1-.678-.373z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-invert.png
deleted file mode 100644 (file)
index ea8beb9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-invert.svg
deleted file mode 100644 (file)
index a9ef321..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M16 5H4v12c0 1.6 1.3 3 3 3h12V8c0-1.7-1.4-3-3-3zM7.5 17c-.8 0-1.5-.7-1.5-1.5S6.7 14 7.5 14s1.5.7 1.5 1.5S8.3 17 7.5 17zm0-6C6.7 11 6 10.3 6 9.5S6.7 8 7.5 8 9 8.7 9 9.5 8.3 11 7.5 11zm4 3c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm4 3c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm0-6c-.8 0-1.5-.7-1.5-1.5S14.7 8 15.5 8s1.5.7 1.5 1.5-.7 1.5-1.5 1.5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-progressive.png
deleted file mode 100644 (file)
index 8e7e83a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-progressive.svg
deleted file mode 100644 (file)
index a63bf03..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M16 5H4v12c0 1.6 1.3 3 3 3h12V8c0-1.7-1.4-3-3-3zM7.5 17c-.8 0-1.5-.7-1.5-1.5S6.7 14 7.5 14s1.5.7 1.5 1.5S8.3 17 7.5 17zm0-6C6.7 11 6 10.3 6 9.5S6.7 8 7.5 8 9 8.7 9 9.5 8.3 11 7.5 11zm4 3c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm4 3c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm0-6c-.8 0-1.5-.7-1.5-1.5S14.7 8 15.5 8s1.5.7 1.5 1.5-.7 1.5-1.5 1.5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr.png
deleted file mode 100644 (file)
index 79f4497..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr.svg
deleted file mode 100644 (file)
index 2571d4d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M16 5H4v12c0 1.6 1.3 3 3 3h12V8c0-1.7-1.4-3-3-3zM7.5 17c-.8 0-1.5-.7-1.5-1.5S6.7 14 7.5 14s1.5.7 1.5 1.5S8.3 17 7.5 17zm0-6C6.7 11 6 10.3 6 9.5S6.7 8 7.5 8 9 8.7 9 9.5 8.3 11 7.5 11zm4 3c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm4 3c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm0-6c-.8 0-1.5-.7-1.5-1.5S14.7 8 15.5 8s1.5.7 1.5 1.5-.7 1.5-1.5 1.5z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-invert.png
deleted file mode 100644 (file)
index 32bbeef..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-invert.svg
deleted file mode 100644 (file)
index 344e2fb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M7 5h12v12c0 1.6-1.3 3-3 3H4V8c0-1.7 1.4-3 3-3zm8.5 12c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm0-6c.8 0 1.5-.7 1.5-1.5S16.3 8 15.5 8 14 8.7 14 9.5s.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5S8.3 14 7.5 14 6 14.7 6 15.5 6.7 17 7.5 17zm0-6c.8 0 1.5-.7 1.5-1.5S8.3 8 7.5 8 6 8.7 6 9.5 6.7 11 7.5 11z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-progressive.png
deleted file mode 100644 (file)
index 5edaf86..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-progressive.svg
deleted file mode 100644 (file)
index fd4f13b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M7 5h12v12c0 1.6-1.3 3-3 3H4V8c0-1.7 1.4-3 3-3zm8.5 12c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm0-6c.8 0 1.5-.7 1.5-1.5S16.3 8 15.5 8 14 8.7 14 9.5s.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5S8.3 14 7.5 14 6 14.7 6 15.5 6.7 17 7.5 17zm0-6c.8 0 1.5-.7 1.5-1.5S8.3 8 7.5 8 6 8.7 6 9.5 6.7 11 7.5 11z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl.png
deleted file mode 100644 (file)
index c01002f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl.svg
deleted file mode 100644 (file)
index 9be97f6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M7 5h12v12c0 1.6-1.3 3-3 3H4V8c0-1.7 1.4-3 3-3zm8.5 12c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm0-6c.8 0 1.5-.7 1.5-1.5S16.3 8 15.5 8 14 8.7 14 9.5s.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5S8.3 14 7.5 14 6 14.7 6 15.5 6.7 17 7.5 17zm0-6c.8 0 1.5-.7 1.5-1.5S8.3 8 7.5 8 6 8.7 6 9.5 6.7 11 7.5 11z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-invert.png
deleted file mode 100644 (file)
index b186eb0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-invert.svg
deleted file mode 100644 (file)
index 9c64f50..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M12 18l8-10H4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-progressive.png
deleted file mode 100644 (file)
index ebe6abf..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-progressive.svg
deleted file mode 100644 (file)
index aaa6ec9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 18l8-10H4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle.png
deleted file mode 100644 (file)
index 7df0592..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle.svg
deleted file mode 100644 (file)
index e1fb989..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 18l8-10H4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-invert.png
deleted file mode 100644 (file)
index ce0f041..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-invert.svg
deleted file mode 100644 (file)
index 312b19e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M16 11h-3V4c-1.7 0-3 1.3-3 3v4H7l4.5 5 4.5-5zm1 2v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-progressive.png
deleted file mode 100644 (file)
index 28812d2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-progressive.svg
deleted file mode 100644 (file)
index 8d69423..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M16 11h-3V4c-1.7 0-3 1.3-3 3v4H7l4.5 5 4.5-5zm1 2v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr.png
deleted file mode 100644 (file)
index 4d67c8d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr.svg
deleted file mode 100644 (file)
index dfb2bb6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M16 11h-3V4c-1.7 0-3 1.3-3 3v4H7l4.5 5 4.5-5zm1 2v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-invert.png
deleted file mode 100644 (file)
index 09286f7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-invert.svg
deleted file mode 100644 (file)
index 141ca5c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M7 11h3V4c1.7 0 3 1.3 3 3v4h3l-4.5 5L7 11zm-1 2v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-progressive.png
deleted file mode 100644 (file)
index 6ba5e29..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-progressive.svg
deleted file mode 100644 (file)
index 4767dc1..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M7 11h3V4c1.7 0 3 1.3 3 3v4h3l-4.5 5L7 11zm-1 2v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl.png
deleted file mode 100644 (file)
index 660d7d0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl.svg
deleted file mode 100644 (file)
index 276b153..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M7 11h3V4c1.7 0 3 1.3 3 3v4h3l-4.5 5L7 11zm-1 2v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-invert.png
deleted file mode 100644 (file)
index 682e18f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-invert.svg
deleted file mode 100644 (file)
index 138f8e8..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M17 2L5 14l-1 5 5-1L21 6c0-2-2-4-4-4zM7.2 15.5c-.3-.3-.7-.6-1-.8C8.5 12.4 17.5 3.3 17.5 3.3c.4.1.7.3 1 .7L7.2 15.5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-progressive.png
deleted file mode 100644 (file)
index 92d625a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-progressive.svg
deleted file mode 100644 (file)
index 40446e9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M17 2L5 14l-1 5 5-1L21 6c0-2-2-4-4-4zM7.2 15.5c-.3-.3-.7-.6-1-.8C8.5 12.4 17.5 3.3 17.5 3.3c.4.1.7.3 1 .7L7.2 15.5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr.png
deleted file mode 100644 (file)
index 504f29b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr.svg
deleted file mode 100644 (file)
index 02ab6e4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M17 2L5 14l-1 5 5-1L21 6c0-2-2-4-4-4zM7.2 15.5c-.3-.3-.7-.6-1-.8C8.5 12.4 17.5 3.3 17.5 3.3c.4.1.7.3 1 .7L7.2 15.5z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-invert.png
deleted file mode 100644 (file)
index 2d23719..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-invert.svg
deleted file mode 100644 (file)
index 0b9a4af..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M8 2l12 12 1 5-5-1L4 6c0-2 2-4 4-4zm9.8 13.5c.3-.3.7-.6 1-.8C16.5 12.4 7.5 3.3 7.5 3.3c-.4.1-.7.3-1 .7l11.3 11.5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-progressive.png
deleted file mode 100644 (file)
index 90653f2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-progressive.svg
deleted file mode 100644 (file)
index 8c0b879..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M8 2l12 12 1 5-5-1L4 6c0-2 2-4 4-4zm9.8 13.5c.3-.3.7-.6 1-.8C16.5 12.4 7.5 3.3 7.5 3.3c-.4.1-.7.3-1 .7l11.3 11.5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl.png
deleted file mode 100644 (file)
index 7ea3aee..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl.svg
deleted file mode 100644 (file)
index 83033c5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M8 2l12 12 1 5-5-1L4 6c0-2 2-4 4-4zm9.8 13.5c.3-.3.7-.6 1-.8C16.5 12.4 7.5 3.3 7.5 3.3c-.4.1-.7.3-1 .7l11.3 11.5z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-invert.png
deleted file mode 100644 (file)
index c90c593..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-invert.svg
deleted file mode 100644 (file)
index 82b39cd..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M21 4V3s0-3-3-3-3 3-3 3v1h-1v6h8V4zm-1.5 0h-3V3s0-1.5 1.5-1.5c1.48.06 1.5 1.5 1.5 1.5zM13 9.6l-6.8 6.9c-.3-.3-.7-.6-1-.8 1.4-1.4 5-5 7.8-7.9V6l-9 9-1 5 5-1 8-8h-3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-progressive.png
deleted file mode 100644 (file)
index 4b4c8b4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-progressive.svg
deleted file mode 100644 (file)
index 618debe..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M21 4V3s0-3-3-3-3 3-3 3v1h-1v6h8V4zm-1.5 0h-3V3s0-1.5 1.5-1.5c1.48.06 1.5 1.5 1.5 1.5zM13 9.6l-6.8 6.9c-.3-.3-.7-.6-1-.8 1.4-1.4 5-5 7.8-7.9V6l-9 9-1 5 5-1 8-8h-3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr.png
deleted file mode 100644 (file)
index aa4b8c3..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr.svg
deleted file mode 100644 (file)
index e06e5a0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M21 4V3s0-3-3-3-3 3-3 3v1h-1v6h8V4zm-1.5 0h-3V3s0-1.5 1.5-1.5c1.48.06 1.5 1.5 1.5 1.5zM13 9.6l-6.8 6.9c-.3-.3-.7-.6-1-.8 1.4-1.4 5-5 7.8-7.9V6l-9 9-1 5 5-1 8-8h-3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-invert.png
deleted file mode 100644 (file)
index 5a40486..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-invert.svg
deleted file mode 100644 (file)
index 9b9f765..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M4 4V3s0-3 3-3 3 3 3 3v1h1v6H3V4zm1.5 0h3V3s0-1.5-1.5-1.5C5.52 1.56 5.5 3 5.5 3zM12 9.6l6.8 6.9c.3-.3.7-.6 1-.8-1.4-1.4-5-5-7.8-7.9V6l9 9 1 5-5-1-8-8h3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-progressive.png
deleted file mode 100644 (file)
index 720a501..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-progressive.svg
deleted file mode 100644 (file)
index ad87acc..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M4 4V3s0-3 3-3 3 3 3 3v1h1v6H3V4zm1.5 0h3V3s0-1.5-1.5-1.5C5.52 1.56 5.5 3 5.5 3zM12 9.6l6.8 6.9c.3-.3.7-.6 1-.8-1.4-1.4-5-5-7.8-7.9V6l9 9 1 5-5-1-8-8h3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl.png
deleted file mode 100644 (file)
index 3d8b751..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl.svg
deleted file mode 100644 (file)
index fb1001f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M4 4V3s0-3 3-3 3 3 3 3v1h1v6H3V4zm1.5 0h3V3s0-1.5-1.5-1.5C5.52 1.56 5.5 3 5.5 3zM12 9.6l6.8 6.9c.3-.3.7-.6 1-.8-1.4-1.4-5-5-7.8-7.9V6l9 9 1 5-5-1-8-8h3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-invert.png
deleted file mode 100644 (file)
index 19726d1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-invert.svg
deleted file mode 100644 (file)
index a34235e..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M14.9 2.8c.9 0 1.8.2 2.7.6.9.4 1.6.9 1.9 1.6-2.8.1-5 1.1-6.6 3.1l1.3 2-6.7-.3L8 3l1.7 2c1.8-1.5 3.5-2.2 5.2-2.2z"/>
-    <path d="M15.2 11.1l-2.6-.1-5.4 5.5c-.3-.3-.7-.6-1-.8.9-.9 2.8-2.8 4.7-4.8H9.1L5 15l-1 5 5-1 7.8-7.8-1.6-.1zM20.6 6c-1.7 0-3.2.5-4.4 1.4l-.9.9.8 1.3.9 1.4 4-4c0-.3-.1-.7-.2-1h-.2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-progressive.png
deleted file mode 100644 (file)
index 7932aa5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-progressive.svg
deleted file mode 100644 (file)
index c7d9bbe..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M14.9 2.8c.9 0 1.8.2 2.7.6.9.4 1.6.9 1.9 1.6-2.8.1-5 1.1-6.6 3.1l1.3 2-6.7-.3L8 3l1.7 2c1.8-1.5 3.5-2.2 5.2-2.2z"/>
-    <path d="M15.2 11.1l-2.6-.1-5.4 5.5c-.3-.3-.7-.6-1-.8.9-.9 2.8-2.8 4.7-4.8H9.1L5 15l-1 5 5-1 7.8-7.8-1.6-.1zM20.6 6c-1.7 0-3.2.5-4.4 1.4l-.9.9.8 1.3.9 1.4 4-4c0-.3-.1-.7-.2-1h-.2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr.png
deleted file mode 100644 (file)
index c163360..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr.svg
deleted file mode 100644 (file)
index 50f4214..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M14.9 2.8c.9 0 1.8.2 2.7.6.9.4 1.6.9 1.9 1.6-2.8.1-5 1.1-6.6 3.1l1.3 2-6.7-.3L8 3l1.7 2c1.8-1.5 3.5-2.2 5.2-2.2z"/>
-    <path d="M15.2 11.1l-2.6-.1-5.4 5.5c-.3-.3-.7-.6-1-.8.9-.9 2.8-2.8 4.7-4.8H9.1L5 15l-1 5 5-1 7.8-7.8-1.6-.1zM20.6 6c-1.7 0-3.2.5-4.4 1.4l-.9.9.8 1.3.9 1.4 4-4c0-.3-.1-.7-.2-1h-.2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-invert.png
deleted file mode 100644 (file)
index 8e72010..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-invert.svg
deleted file mode 100644 (file)
index 1aea7a8..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M10.1 2.8c-.9 0-1.8.2-2.7.6-.9.4-1.6.9-1.9 1.6 2.8.1 5 1.1 6.6 3.1l-1.3 2 6.7-.3L17 3l-1.7 2c-1.8-1.5-3.5-2.2-5.2-2.2z"/>
-    <path d="M9.8 11.1l2.6-.1 5.4 5.5c.3-.3.7-.6 1-.8-.9-.9-2.8-2.8-4.7-4.8h1.8L20 15l1 5-5-1-7.8-7.8 1.6-.1zM4.4 6c1.7 0 3.2.5 4.4 1.4l.9.9-.8 1.3L8 11 4 7c0-.3.1-.7.2-1h.2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-progressive.png
deleted file mode 100644 (file)
index f563ed8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-progressive.svg
deleted file mode 100644 (file)
index a743341..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M10.1 2.8c-.9 0-1.8.2-2.7.6-.9.4-1.6.9-1.9 1.6 2.8.1 5 1.1 6.6 3.1l-1.3 2 6.7-.3L17 3l-1.7 2c-1.8-1.5-3.5-2.2-5.2-2.2z"/>
-    <path d="M9.8 11.1l2.6-.1 5.4 5.5c.3-.3.7-.6 1-.8-.9-.9-2.8-2.8-4.7-4.8h1.8L20 15l1 5-5-1-7.8-7.8 1.6-.1zM4.4 6c1.7 0 3.2.5 4.4 1.4l.9.9-.8 1.3L8 11 4 7c0-.3.1-.7.2-1h.2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl.png
deleted file mode 100644 (file)
index fc98968..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl.svg
deleted file mode 100644 (file)
index b7cfed7..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M10.1 2.8c-.9 0-1.8.2-2.7.6-.9.4-1.6.9-1.9 1.6 2.8.1 5 1.1 6.6 3.1l-1.3 2 6.7-.3L17 3l-1.7 2c-1.8-1.5-3.5-2.2-5.2-2.2z"/>
-    <path d="M9.8 11.1l2.6-.1 5.4 5.5c.3-.3.7-.6 1-.8-.9-.9-2.8-2.8-4.7-4.8h1.8L20 15l1 5-5-1-7.8-7.8 1.6-.1zM4.4 6c1.7 0 3.2.5 4.4 1.4l.9.9-.8 1.3L8 11 4 7c0-.3.1-.7.2-1h.2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-invert.png
deleted file mode 100644 (file)
index 7d57d11..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-invert.svg
deleted file mode 100644 (file)
index e5b0d24..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M8 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM14 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM20 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-progressive.png
deleted file mode 100644 (file)
index ae7d071..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-progressive.svg
deleted file mode 100644 (file)
index 0675f6e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M8 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM14 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM20 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis.png
deleted file mode 100644 (file)
index 85fa4f3..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis.svg
deleted file mode 100644 (file)
index ef7d485..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M8 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM14 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM20 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-invert.png
deleted file mode 100644 (file)
index 38a2c39..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-invert.svg
deleted file mode 100644 (file)
index a8260ae..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="expand">
-        <path id="arrow" d="M17.303 8.283L12 13.586 6.697 8.283 5.283 9.697 12 16.414l6.717-6.717z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-progressive.png
deleted file mode 100644 (file)
index 4a183b5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-progressive.svg
deleted file mode 100644 (file)
index e7f6aa5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="expand">
-        <path id="arrow" d="M17.303 8.283L12 13.586 6.697 8.283 5.283 9.697 12 16.414l6.717-6.717z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand.png
deleted file mode 100644 (file)
index f72b6f2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand.svg
deleted file mode 100644 (file)
index 84b9e0a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="expand">
-        <path id="arrow" d="M17.303 8.283L12 13.586 6.697 8.283 5.283 9.697 12 16.414l6.717-6.717z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-invert.png
deleted file mode 100644 (file)
index 18a1801..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-invert.svg
deleted file mode 100644 (file)
index e9ddf2c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="external">
-        <path id="box" d="M4 4h6v2H6v12h12v-4h2v6H4z"/>
-        <path id="arrow" d="M12.42 4H20v7.58l-2.84-2.846L12.892 13 11 11.106l4.264-4.266z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-progressive.png
deleted file mode 100644 (file)
index 00fd178..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-progressive.svg
deleted file mode 100644 (file)
index dcc2962..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="external">
-        <path id="box" d="M4 4h6v2H6v12h12v-4h2v6H4z"/>
-        <path id="arrow" d="M12.42 4H20v7.58l-2.84-2.846L12.892 13 11 11.106l4.264-4.266z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr.png
deleted file mode 100644 (file)
index 185ffc6..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr.svg
deleted file mode 100644 (file)
index 1d7980d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="external">
-        <path id="box" d="M4 4h6v2H6v12h12v-4h2v6H4z"/>
-        <path id="arrow" d="M12.42 4H20v7.58l-2.84-2.846L12.892 13 11 11.106l4.264-4.266z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-invert.png
deleted file mode 100644 (file)
index 105fd0d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-invert.svg
deleted file mode 100644 (file)
index 59cd0aa..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="external">
-        <path id="box" d="M20 4h-6v2h4v12H6v-4H4v6h16z"/>
-        <path id="arrow" d="M11.58 4H4v7.58l2.84-2.846L11.108 13 13 11.106 8.736 6.84z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-progressive.png
deleted file mode 100644 (file)
index 569492e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-progressive.svg
deleted file mode 100644 (file)
index 8d0cd25..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="external">
-        <path id="box" d="M20 4h-6v2h4v12H6v-4H4v6h16z"/>
-        <path id="arrow" d="M11.58 4H4v7.58l2.84-2.846L11.108 13 13 11.106 8.736 6.84z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl.png
deleted file mode 100644 (file)
index 7066001..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl.svg
deleted file mode 100644 (file)
index 7e25d03..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="external">
-        <path id="box" d="M20 4h-6v2h4v12H6v-4H4v6h16z"/>
-        <path id="arrow" d="M11.58 4H4v7.58l2.84-2.846L11.108 13 13 11.106 8.736 6.84z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-invert.png
deleted file mode 100644 (file)
index 4e11ebc..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-invert.svg
deleted file mode 100644 (file)
index 158860e..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path id="sclera" d="M12 6C7 6 1 12 1 12s6 6 11 6 11-6 11-6-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/>
-    <circle id="pupil" r="2" cy="12" cx="12"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-progressive.png
deleted file mode 100644 (file)
index 94524c0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-progressive.svg
deleted file mode 100644 (file)
index ae45685..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path id="sclera" d="M12 6C7 6 1 12 1 12s6 6 11 6 11-6 11-6-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/>
-    <circle id="pupil" r="2" cy="12" cx="12"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye.png
deleted file mode 100644 (file)
index eb5f963..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye.svg
deleted file mode 100644 (file)
index cec85d0..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path id="sclera" d="M12 6C7 6 1 12 1 12s6 6 11 6 11-6 11-6-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/>
-    <circle id="pupil" r="2" cy="12" cx="12"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-invert.png
deleted file mode 100644 (file)
index bd499f1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-invert.svg
deleted file mode 100644 (file)
index 7e1567d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M19.4 12.7c.7-.8 1.2-1.7 1.4-2.7h-1.6c-.9 2.5-3.9 4.4-7.7 4.6h-.1c-3.7-.2-6.8-2.1-7.7-4.6H2.2c.2 1 .8 1.9 1.4 2.7l-2 2 .7.7 2-2c.8.6 1.7 1.2 2.7 1.7l-1 2.8.9.3 1-2.8c1 .3 2 .6 3.1.6v3h1v-3c1.1-.1 2.2-.3 3.1-.6l1 2.8.9-.3-1-2.8c1-.4 1.9-1 2.6-1.7l2 2 .7-.7-1.9-2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-progressive.png
deleted file mode 100644 (file)
index 9c22844..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-progressive.svg
deleted file mode 100644 (file)
index 5d0d44d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M19.4 12.7c.7-.8 1.2-1.7 1.4-2.7h-1.6c-.9 2.5-3.9 4.4-7.7 4.6h-.1c-3.7-.2-6.8-2.1-7.7-4.6H2.2c.2 1 .8 1.9 1.4 2.7l-2 2 .7.7 2-2c.8.6 1.7 1.2 2.7 1.7l-1 2.8.9.3 1-2.8c1 .3 2 .6 3.1.6v3h1v-3c1.1-.1 2.2-.3 3.1-.6l1 2.8.9-.3-1-2.8c1-.4 1.9-1 2.6-1.7l2 2 .7-.7-1.9-2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed.png
deleted file mode 100644 (file)
index 1ac37d6..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed.svg
deleted file mode 100644 (file)
index d17f2c8..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M19.4 12.7c.7-.8 1.2-1.7 1.4-2.7h-1.6c-.9 2.5-3.9 4.4-7.7 4.6h-.1c-3.7-.2-6.8-2.1-7.7-4.6H2.2c.2 1 .8 1.9 1.4 2.7l-2 2 .7.7 2-2c.8.6 1.7 1.2 2.7 1.7l-1 2.8.9.3 1-2.8c1 .3 2 .6 3.1.6v3h1v-3c1.1-.1 2.2-.3 3.1-.6l1 2.8.9-.3-1-2.8c1-.4 1.9-1 2.6-1.7l2 2 .7-.7-1.9-2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.png
deleted file mode 100644 (file)
index f49ebeb..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.svg
deleted file mode 100644 (file)
index 8ed4be9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.png
deleted file mode 100644 (file)
index 28405a8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.svg
deleted file mode 100644 (file)
index 49425d0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.png
deleted file mode 100644 (file)
index ac5787b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.svg
deleted file mode 100644 (file)
index 0fdeed9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.png
deleted file mode 100644 (file)
index efba220..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.svg
deleted file mode 100644 (file)
index f4e7932..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.png
deleted file mode 100644 (file)
index 27bcc2d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.svg
deleted file mode 100644 (file)
index 413ea34..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.png
deleted file mode 100644 (file)
index fdbe5e1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.svg
deleted file mode 100644 (file)
index 022d86d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.png
deleted file mode 100644 (file)
index e6602c9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.svg
deleted file mode 100644 (file)
index 928e954..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="find">
-        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.15.78-.096s.315-.59.126-.78l-2.37-2.377-.185-.094a3.545 3.545 0 0 0 .655-2.03c0-1.92-1.55-3.47-3.47-3.47zm0 1.656a1.8 1.8 0 0 1 1.813 1.813 1.83 1.83 0 0 1-1.82 1.84c-1.01 0-1.844-.83-1.844-1.847s.832-1.814 1.844-1.814z"/>
-        <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53a4.443 4.443 0 0 1 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-progressive.png
deleted file mode 100644 (file)
index 0ca17c1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-progressive.svg
deleted file mode 100644 (file)
index 65fc298..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="find">
-        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.15.78-.096s.315-.59.126-.78l-2.37-2.377-.185-.094a3.545 3.545 0 0 0 .655-2.03c0-1.92-1.55-3.47-3.47-3.47zm0 1.656a1.8 1.8 0 0 1 1.813 1.813 1.83 1.83 0 0 1-1.82 1.84c-1.01 0-1.844-.83-1.844-1.847s.832-1.814 1.844-1.814z"/>
-        <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53a4.443 4.443 0 0 1 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr.png
deleted file mode 100644 (file)
index 066d84a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr.svg
deleted file mode 100644 (file)
index ef44f57..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="find">
-        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.15.78-.096s.315-.59.126-.78l-2.37-2.377-.185-.094a3.545 3.545 0 0 0 .655-2.03c0-1.92-1.55-3.47-3.47-3.47zm0 1.656a1.8 1.8 0 0 1 1.813 1.813 1.83 1.83 0 0 1-1.82 1.84c-1.01 0-1.844-.83-1.844-1.847s.832-1.814 1.844-1.814z"/>
-        <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53a4.443 4.443 0 0 1 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.png
deleted file mode 100644 (file)
index bd3e862..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.svg
deleted file mode 100644 (file)
index 612c1dc..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="find">
-        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.15-.78-.096s-.315-.59-.126-.78l2.37-2.377.185-.094a3.545 3.545 0 0 1-.655-2.03c0-1.92 1.55-3.47 3.47-3.47zm0 1.656A1.8 1.8 0 0 0 9.53 14.47c0 1.01.806 1.84 1.818 1.84 1.01 0 1.844-.83 1.844-1.845s-.832-1.814-1.844-1.814z"/>
-        <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53a4.443 4.443 0 0 0-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-progressive.png
deleted file mode 100644 (file)
index 142dbe4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-progressive.svg
deleted file mode 100644 (file)
index f18e0ad..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="find">
-        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.15-.78-.096s-.315-.59-.126-.78l2.37-2.377.185-.094a3.545 3.545 0 0 1-.655-2.03c0-1.92 1.55-3.47 3.47-3.47zm0 1.656A1.8 1.8 0 0 0 9.53 14.47c0 1.01.806 1.84 1.818 1.84 1.01 0 1.844-.83 1.844-1.845s-.832-1.814-1.844-1.814z"/>
-        <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53a4.443 4.443 0 0 0-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl.png
deleted file mode 100644 (file)
index ed834af..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl.svg
deleted file mode 100644 (file)
index 51fd39b..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="find">
-        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.15-.78-.096s-.315-.59-.126-.78l2.37-2.377.185-.094a3.545 3.545 0 0 1-.655-2.03c0-1.92 1.55-3.47 3.47-3.47zm0 1.656A1.8 1.8 0 0 0 9.53 14.47c0 1.01.806 1.84 1.818 1.84 1.01 0 1.844-.83 1.844-1.845s-.832-1.814-1.844-1.814z"/>
-        <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53a4.443 4.443 0 0 0-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-invert.png
deleted file mode 100644 (file)
index ea79f46..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-invert.svg
deleted file mode 100644 (file)
index f6c2213..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-progressive.png
deleted file mode 100644 (file)
index 4d76692..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-progressive.svg
deleted file mode 100644 (file)
index c1f681a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr.png
deleted file mode 100644 (file)
index bd19f2b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr.svg
deleted file mode 100644 (file)
index 1097561..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-invert.png
deleted file mode 100644 (file)
index 159bdb9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-invert.svg
deleted file mode 100644 (file)
index ce147ec..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-       <path d="M10.3 7.5V6c1.4-1.5 5.2-1.2 6 0V5h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V14c-1.2 1.5-4.3 1.2-5 0V7c.7.7 2.7.9 4 .5z"/>
-</g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-progressive.png
deleted file mode 100644 (file)
index e88e061..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-progressive.svg
deleted file mode 100644 (file)
index 661f234..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-       <path d="M10.3 7.5V6c1.4-1.5 5.2-1.2 6 0V5h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V14c-1.2 1.5-4.3 1.2-5 0V7c.7.7 2.7.9 4 .5z"/>
-</g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl.png
deleted file mode 100644 (file)
index a9943cc..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl.svg
deleted file mode 100644 (file)
index 397a3da..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-       <path d="M10.3 7.5V6c1.4-1.5 5.2-1.2 6 0V5h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V14c-1.2 1.5-4.3 1.2-5 0V7c.7.7 2.7.9 4 .5z"/>
-</svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-invert.png
deleted file mode 100644 (file)
index d7c6e28..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-invert.svg
deleted file mode 100644 (file)
index 4c6d402..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M2 5v15h20V5H2zm15 11H8c-.6 0-1-.4-1-1V9h3l2 1h5v6z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-progressive.png
deleted file mode 100644 (file)
index 39c58be..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-progressive.svg
deleted file mode 100644 (file)
index e1f8be3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M2 5v15h20V5H2zm15 11H8c-.6 0-1-.4-1-1V9h3l2 1h5v6z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr.png
deleted file mode 100644 (file)
index 45c3ee9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr.svg
deleted file mode 100644 (file)
index 7e60fb4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M2 5v15h20V5H2zm15 11H8c-.6 0-1-.4-1-1V9h3l2 1h5v6z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-invert.png
deleted file mode 100644 (file)
index 46b3f94..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-invert.svg
deleted file mode 100644 (file)
index d2bfb08..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M22 5v15H2V5h20zM7 16h9c.6 0 1-.4 1-1V9h-3l-2 1H7v6z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-progressive.png
deleted file mode 100644 (file)
index a384c8d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-progressive.svg
deleted file mode 100644 (file)
index ba0eb3b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M22 5v15H2V5h20zM7 16h9c.6 0 1-.4 1-1V9h-3l-2 1H7v6z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl.png
deleted file mode 100644 (file)
index 8a624c1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl.svg
deleted file mode 100644 (file)
index e0a6f61..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M22 5v15H2V5h20zM7 16h9c.6 0 1-.4 1-1V9h-3l-2 1H7v6z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-invert.png
deleted file mode 100644 (file)
index b7a3cb5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-invert.svg
deleted file mode 100644 (file)
index 588bef0..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path id="arrow" d="M6 6v4l1.28-1.28 2 2 1.423-1.44-2-2L10 6z"/>
-    <use transform="rotate(90 12 12)" xlink:href="#arrow"/>
-    <use transform="rotate(180 12 12)" xlink:href="#arrow"/>
-    <use transform="rotate(-90 12 12)" xlink:href="#arrow"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-progressive.png
deleted file mode 100644 (file)
index 8b86269..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-progressive.svg
deleted file mode 100644 (file)
index a9a0aa0..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path id="arrow" d="M6 6v4l1.28-1.28 2 2 1.423-1.44-2-2L10 6z"/>
-    <use transform="rotate(90 12 12)" xlink:href="#arrow"/>
-    <use transform="rotate(180 12 12)" xlink:href="#arrow"/>
-    <use transform="rotate(-90 12 12)" xlink:href="#arrow"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen.png
deleted file mode 100644 (file)
index ced1035..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen.svg
deleted file mode 100644 (file)
index 06b709b..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
-    <path id="arrow" d="M6 6v4l1.28-1.28 2 2 1.423-1.44-2-2L10 6z"/>
-    <use transform="rotate(90 12 12)" xlink:href="#arrow"/>
-    <use transform="rotate(180 12 12)" xlink:href="#arrow"/>
-    <use transform="rotate(-90 12 12)" xlink:href="#arrow"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-invert.png
deleted file mode 100644 (file)
index 2949648..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-invert.svg
deleted file mode 100644 (file)
index cffafb7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-progressive.png
deleted file mode 100644 (file)
index a6079a4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-progressive.svg
deleted file mode 100644 (file)
index 9ef43f0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr.png
deleted file mode 100644 (file)
index 9396cba..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr.svg
deleted file mode 100644 (file)
index df863b9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-invert.png
deleted file mode 100644 (file)
index c0f155a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-invert.svg
deleted file mode 100644 (file)
index 64a71fa..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-progressive.png
deleted file mode 100644 (file)
index 5c57662..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-progressive.svg
deleted file mode 100644 (file)
index b44b385..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl.png
deleted file mode 100644 (file)
index 7aee05f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl.svg
deleted file mode 100644 (file)
index 4eade2d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.png
deleted file mode 100644 (file)
index 2a4d547..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.svg
deleted file mode 100644 (file)
index 82f466e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
-    <path d="M11.4 5.4V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm-5.2-.5c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8zM12 7c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm-3 4c0-1.7 1.3-3 3-3v6c-1.7 0-3-1.3-3-3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright.png
deleted file mode 100644 (file)
index f843210..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright.svg
deleted file mode 100644 (file)
index 2745ec7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M11.4 5.4V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm-5.2-.5c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8zM12 7c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm-3 4c0-1.7 1.3-3 3-3v6c-1.7 0-3-1.3-3-3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-constructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-constructive.png
deleted file mode 100644 (file)
index 57dfe53..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-constructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-constructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-constructive.svg
deleted file mode 100644 (file)
index dbdacc6..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/>
-    <path d="M10.1 11l-3.9.5L9 14.3l-.6 3.9 3.6-1.7-.1-9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-invert.png
deleted file mode 100644 (file)
index f28e35d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-invert.svg
deleted file mode 100644 (file)
index febf500..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/>
-    <path d="M10.1 11l-3.9.5L9 14.3l-.6 3.9 3.6-1.7-.1-9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-progressive.png
deleted file mode 100644 (file)
index 57dfe53..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-progressive.svg
deleted file mode 100644 (file)
index dbdacc6..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/>
-    <path d="M10.1 11l-3.9.5L9 14.3l-.6 3.9 3.6-1.7-.1-9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr.png
deleted file mode 100644 (file)
index d52a908..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr.svg
deleted file mode 100644 (file)
index cfb17d8..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/>
-    <path d="M10.1 11l-3.9.5L9 14.3l-.6 3.9 3.6-1.7-.1-9z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-constructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-constructive.png
deleted file mode 100644 (file)
index d24672a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-constructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-constructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-constructive.svg
deleted file mode 100644 (file)
index 2f45816..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 7.4L10.3 11l-4 .5L9 14.3l-.5 3.9 3.5-1.7 3.6 1.7-.6-3.9 2.8-2.8-3.9-.5L12 7.4M12 4l2.8 5.6 6.2.9-4.5 4.4 1.1 6.1-5.6-3-5.5 3 1-6.2L3 10.4l6.3-.9L12 4z"/>
-    <path d="M12.1 7.5l1.8 3.5 3.9.5-2.8 2.8.6 3.9-3.6-1.7z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-invert.png
deleted file mode 100644 (file)
index c9429ae..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-invert.svg
deleted file mode 100644 (file)
index 11b99df..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M12 7.4L10.3 11l-4 .5L9 14.3l-.5 3.9 3.5-1.7 3.6 1.7-.6-3.9 2.8-2.8-3.9-.5L12 7.4M12 4l2.8 5.6 6.2.9-4.5 4.4 1.1 6.1-5.6-3-5.5 3 1-6.2L3 10.4l6.3-.9L12 4z"/>
-    <path d="M12.1 7.5l1.8 3.5 3.9.5-2.8 2.8.6 3.9-3.6-1.7z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-progressive.png
deleted file mode 100644 (file)
index d24672a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-progressive.svg
deleted file mode 100644 (file)
index 2f45816..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 7.4L10.3 11l-4 .5L9 14.3l-.5 3.9 3.5-1.7 3.6 1.7-.6-3.9 2.8-2.8-3.9-.5L12 7.4M12 4l2.8 5.6 6.2.9-4.5 4.4 1.1 6.1-5.6-3-5.5 3 1-6.2L3 10.4l6.3-.9L12 4z"/>
-    <path d="M12.1 7.5l1.8 3.5 3.9.5-2.8 2.8.6 3.9-3.6-1.7z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl.png
deleted file mode 100644 (file)
index 4991b65..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl.svg
deleted file mode 100644 (file)
index c649b50..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 7.4L10.3 11l-4 .5L9 14.3l-.5 3.9 3.5-1.7 3.6 1.7-.6-3.9 2.8-2.8-3.9-.5L12 7.4M12 4l2.8 5.6 6.2.9-4.5 4.4 1.1 6.1-5.6-3-5.5 3 1-6.2L3 10.4l6.3-.9L12 4z"/>
-    <path d="M12.1 7.5l1.8 3.5 3.9.5-2.8 2.8.6 3.9-3.6-1.7z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-invert.png
deleted file mode 100644 (file)
index 2070997..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-invert.svg
deleted file mode 100644 (file)
index 1607feb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M15 7c-2 0-3 2-3 2s-1-2-3-2c-2.5 0-4 2-4 4 0 4 5 5 7 8 2-3 7-4 7-8 0-2-1.5-4-4-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-progressive.png
deleted file mode 100644 (file)
index 8797321..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-progressive.svg
deleted file mode 100644 (file)
index 816e672..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M15 7c-2 0-3 2-3 2s-1-2-3-2c-2.5 0-4 2-4 4 0 4 5 5 7 8 2-3 7-4 7-8 0-2-1.5-4-4-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart.png
deleted file mode 100644 (file)
index 76d76d0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart.svg
deleted file mode 100644 (file)
index 6433201..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M15 7c-2 0-3 2-3 2s-1-2-3-2c-2.5 0-4 2-4 4 0 4 5 5 7 8 2-3 7-4 7-8 0-2-1.5-4-4-4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-invert.png
deleted file mode 100644 (file)
index 35d8f22..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-invert.svg
deleted file mode 100644 (file)
index 7e0a658..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="help">
-        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.92 9.916 9.92 5.48 0 9.92-4.44 9.92-9.913 0-5.477-4.44-9.915-9.913-9.915zm.002 18a8.084 8.084 0 1 1 0-16.168 8.084 8.084 0 0 1 0 16.168z"/>
-        <g id="question-mark">
-            <path id="top" d="M11.766 6.688c-2.5 0-3.22 2.188-3.22 2.188l1.412.854s.298-.79.9-1.23c.517-.374 1.626-.624 2.22.126.7.885-.17 1.587-1.078 2.72C11.047 12.53 11 15 11 15h1.97s.134-2.318 1.04-3.38c.603-.708 1.443-1.34 1.443-2.495s-1.187-2.437-3.687-2.437z"/>
-            <path id="bottom" d="M11 16h2v2h-2z"/>
-        </g>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-progressive.png
deleted file mode 100644 (file)
index 87236a8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-progressive.svg
deleted file mode 100644 (file)
index 8a2e3ca..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="help">
-        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.92 9.916 9.92 5.48 0 9.92-4.44 9.92-9.913 0-5.477-4.44-9.915-9.913-9.915zm.002 18a8.084 8.084 0 1 1 0-16.168 8.084 8.084 0 0 1 0 16.168z"/>
-        <g id="question-mark">
-            <path id="top" d="M11.766 6.688c-2.5 0-3.22 2.188-3.22 2.188l1.412.854s.298-.79.9-1.23c.517-.374 1.626-.624 2.22.126.7.885-.17 1.587-1.078 2.72C11.047 12.53 11 15 11 15h1.97s.134-2.318 1.04-3.38c.603-.708 1.443-1.34 1.443-2.495s-1.187-2.437-3.687-2.437z"/>
-            <path id="bottom" d="M11 16h2v2h-2z"/>
-        </g>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr.png
deleted file mode 100644 (file)
index 9bb1382..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr.svg
deleted file mode 100644 (file)
index a77dca2..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="help">
-        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.92 9.916 9.92 5.48 0 9.92-4.44 9.92-9.913 0-5.477-4.44-9.915-9.913-9.915zm.002 18a8.084 8.084 0 1 1 0-16.168 8.084 8.084 0 0 1 0 16.168z"/>
-        <g id="question-mark">
-            <path id="top" d="M11.766 6.688c-2.5 0-3.22 2.188-3.22 2.188l1.412.854s.298-.79.9-1.23c.517-.374 1.626-.624 2.22.126.7.885-.17 1.587-1.078 2.72C11.047 12.53 11 15 11 15h1.97s.134-2.318 1.04-3.38c.603-.708 1.443-1.34 1.443-2.495s-1.187-2.437-3.687-2.437z"/>
-            <path id="bottom" d="M11 16h2v2h-2z"/>
-        </g>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-invert.png
deleted file mode 100644 (file)
index 9cb8cb2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-invert.svg
deleted file mode 100644 (file)
index 2d78cb8..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="help">
-        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.92-9.916 9.92-5.48 0-9.92-4.44-9.92-9.913 0-5.477 4.44-9.915 9.913-9.915zm-.002 18a8.084 8.084 0 1 0 0-16.168 8.084 8.084 0 0 0 0 16.168z"/>
-        <g id="question-mark">
-            <path id="top" d="M12.234 6.688c2.5 0 3.22 2.188 3.22 2.188l-1.412.854s-.298-.79-.9-1.23c-.517-.374-1.626-.624-2.22.126-.7.885.17 1.587 1.078 2.72C12.953 12.53 13 15 13 15h-1.97s-.134-2.318-1.04-3.38c-.603-.708-1.443-1.34-1.443-2.495 0-1.156 1.187-2.437 3.687-2.437z"/>
-            <path id="bottom" d="M13 16h-2v2h2z"/>
-        </g>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-progressive.png
deleted file mode 100644 (file)
index 72f95c2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-progressive.svg
deleted file mode 100644 (file)
index 878c72c..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="help">
-        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.92-9.916 9.92-5.48 0-9.92-4.44-9.92-9.913 0-5.477 4.44-9.915 9.913-9.915zm-.002 18a8.084 8.084 0 1 0 0-16.168 8.084 8.084 0 0 0 0 16.168z"/>
-        <g id="question-mark">
-            <path id="top" d="M12.234 6.688c2.5 0 3.22 2.188 3.22 2.188l-1.412.854s-.298-.79-.9-1.23c-.517-.374-1.626-.624-2.22.126-.7.885.17 1.587 1.078 2.72C12.953 12.53 13 15 13 15h-1.97s-.134-2.318-1.04-3.38c-.603-.708-1.443-1.34-1.443-2.495 0-1.156 1.187-2.437 3.687-2.437z"/>
-            <path id="bottom" d="M13 16h-2v2h2z"/>
-        </g>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl.png
deleted file mode 100644 (file)
index 50899b0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl.svg
deleted file mode 100644 (file)
index 278b906..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="help">
-        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.92-9.916 9.92-5.48 0-9.92-4.44-9.92-9.913 0-5.477 4.44-9.915 9.913-9.915zm-.002 18a8.084 8.084 0 1 0 0-16.168 8.084 8.084 0 0 0 0 16.168z"/>
-        <g id="question-mark">
-            <path id="top" d="M12.234 6.688c2.5 0 3.22 2.188 3.22 2.188l-1.412.854s-.298-.79-.9-1.23c-.517-.374-1.626-.624-2.22.126-.7.885.17 1.587 1.078 2.72C12.953 12.53 13 15 13 15h-1.97s-.134-2.318-1.04-3.38c-.603-.708-1.443-1.34-1.443-2.495 0-1.156 1.187-2.437 3.687-2.437z"/>
-            <path id="bottom" d="M13 16h-2v2h2z"/>
-        </g>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-invert.png
deleted file mode 100644 (file)
index 314d7ac..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-invert.svg
deleted file mode 100644 (file)
index e301dea..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"><g fill="#fff">
-    <path d="M5.066 18.236l.14-.244c.976-1.69 1.341-4.587.815-6.469l-.14-.507.2-.365L11.074 2l9.011 5.203-4.994 8.65-.204.354-.522.134c-1.893.485-4.22 2.252-5.195 3.94l-.14.244-.721-.416-1.041 1.89H3.914l1.893-3.336z" fill-rule="evenodd"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-progressive.png
deleted file mode 100644 (file)
index 14bd7be..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-progressive.svg
deleted file mode 100644 (file)
index 4cc90b5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"><g fill="#36c">
-    <path d="M5.066 18.236l.14-.244c.976-1.69 1.341-4.587.815-6.469l-.14-.507.2-.365L11.074 2l9.011 5.203-4.994 8.65-.204.354-.522.134c-1.893.485-4.22 2.252-5.195 3.94l-.14.244-.721-.416-1.041 1.89H3.914l1.893-3.336z" fill-rule="evenodd"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr.png
deleted file mode 100644 (file)
index 73dd6b9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr.svg
deleted file mode 100644 (file)
index eb42923..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24">
-    <path d="M5.066 18.236l.14-.244c.976-1.69 1.341-4.587.815-6.469l-.14-.507.2-.365L11.074 2l9.011 5.203-4.994 8.65-.204.354-.522.134c-1.893.485-4.22 2.252-5.195 3.94l-.14.244-.721-.416-1.041 1.89H3.914l1.893-3.336z" fill-rule="evenodd"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-invert.png
deleted file mode 100644 (file)
index 024595e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-invert.svg
deleted file mode 100644 (file)
index 46d61c2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"><g fill="#fff">
-    <path d="M18.934 18.236l-.14-.244c-.976-1.69-1.341-4.587-.815-6.469l.14-.507-.2-.365L12.926 2 3.914 7.203l4.994 8.65.204.354.522.134c1.893.485 4.22 2.252 5.195 3.94l.14.244.721-.416 1.041 1.89h3.355l-1.893-3.336z" fill-rule="evenodd"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-progressive.png
deleted file mode 100644 (file)
index 039ccbe..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-progressive.svg
deleted file mode 100644 (file)
index 4f3997a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"><g fill="#36c">
-    <path d="M18.934 18.236l-.14-.244c-.976-1.69-1.341-4.587-.815-6.469l.14-.507-.2-.365L12.926 2 3.914 7.203l4.994 8.65.204.354.522.134c1.893.485 4.22 2.252 5.195 3.94l.14.244.721-.416 1.041 1.89h3.355l-1.893-3.336z" fill-rule="evenodd"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl.png
deleted file mode 100644 (file)
index 2ea2983..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl.svg
deleted file mode 100644 (file)
index 9b1940e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24">
-    <path d="M18.934 18.236l-.14-.244c-.976-1.69-1.341-4.587-.815-6.469l.14-.507-.2-.365L12.926 2 3.914 7.203l4.994 8.65.204.354.522.134c1.893.485 4.22 2.252 5.195 3.94l.14.244.721-.416 1.041 1.89h3.355l-1.893-3.336z" fill-rule="evenodd"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-invert.png
deleted file mode 100644 (file)
index 0bd8394..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-invert.svg
deleted file mode 100644 (file)
index fa0a150..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="history">
-        <path id="clock-hands" d="M17.26 15.076s-2.385-1.935-4.005-3.062c.72-2.397 1.702-6.56 1.702-6.56s-4.35 5.364-4.877 6.7c-.463 1.168 1.46 2.21 2.346 1.678 1.9.55 4.834 1.244 4.834 1.244z"/>
-        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12a9.86 9.86 0 0 0 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616A7.982 7.982 0 0 1 4.004 12a8.084 8.084 0 0 1 16.167.004 8.08 8.08 0 0 1-8.08 8.085 7.975 7.975 0 0 1-3.21-.68L8.05 21.04a9.81 9.81 0 0 0 4.045.874C17.563 21.914 22 17.476 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-progressive.png
deleted file mode 100644 (file)
index ec635a1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-progressive.svg
deleted file mode 100644 (file)
index bd26dfb..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="history">
-        <path id="clock-hands" d="M17.26 15.076s-2.385-1.935-4.005-3.062c.72-2.397 1.702-6.56 1.702-6.56s-4.35 5.364-4.877 6.7c-.463 1.168 1.46 2.21 2.346 1.678 1.9.55 4.834 1.244 4.834 1.244z"/>
-        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12a9.86 9.86 0 0 0 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616A7.982 7.982 0 0 1 4.004 12a8.084 8.084 0 0 1 16.167.004 8.08 8.08 0 0 1-8.08 8.085 7.975 7.975 0 0 1-3.21-.68L8.05 21.04a9.81 9.81 0 0 0 4.045.874C17.563 21.914 22 17.476 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/history.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/history.png
deleted file mode 100644 (file)
index 417f529..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/history.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/history.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/history.svg
deleted file mode 100644 (file)
index 68beaa1..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="history">
-        <path id="clock-hands" d="M17.26 15.076s-2.385-1.935-4.005-3.062c.72-2.397 1.702-6.56 1.702-6.56s-4.35 5.364-4.877 6.7c-.463 1.168 1.46 2.21 2.346 1.678 1.9.55 4.834 1.244 4.834 1.244z"/>
-        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12a9.86 9.86 0 0 0 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616A7.982 7.982 0 0 1 4.004 12a8.084 8.084 0 0 1 16.167.004 8.08 8.08 0 0 1-8.08 8.085 7.975 7.975 0 0 1-3.21-.68L8.05 21.04a9.81 9.81 0 0 0 4.045.874C17.563 21.914 22 17.476 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-invert.png
deleted file mode 100644 (file)
index 42797a2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-invert.svg
deleted file mode 100644 (file)
index 04354ce..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="image">
-        <path id="mountains" d="M18 17l-3-3-2 1-3-3-4 5zm2-11v13H4V6z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-progressive.png
deleted file mode 100644 (file)
index f5cefdf..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-progressive.svg
deleted file mode 100644 (file)
index 252099f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="image">
-        <path id="mountains" d="M18 17l-3-3-2 1-3-3-4 5zm2-11v13H4V6z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr.png
deleted file mode 100644 (file)
index f91dfa2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr.svg
deleted file mode 100644 (file)
index dfcbd8b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="image">
-        <path id="mountains" d="M18 17l-3-3-2 1-3-3-4 5zm2-11v13H4V6z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-invert.png
deleted file mode 100644 (file)
index c33eed6..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-invert.svg
deleted file mode 100644 (file)
index 875fe66..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="image">
-        <path id="mountains" d="M6 17l3-3 2 1 3-3 4 5zM4 6v13h16V6z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-progressive.png
deleted file mode 100644 (file)
index eadff85..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-progressive.svg
deleted file mode 100644 (file)
index d015e8b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="image">
-        <path id="mountains" d="M6 17l3-3 2 1 3-3 4 5zM4 6v13h16V6z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl.png
deleted file mode 100644 (file)
index f33be17..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl.svg
deleted file mode 100644 (file)
index 2251c0e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="image">
-        <path id="mountains" d="M6 17l3-3 2 1 3-3 4 5zM4 6v13h16V6z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-invert.png
deleted file mode 100644 (file)
index 422f8ea..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-invert.svg
deleted file mode 100644 (file)
index 78c40b3..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="imageAdd">
-        <path id="mountains" d="M16 17l-3-3-2 1-3-3-4 5zm-1-8v4h3v6H2V6h9v3z"/>
-        <path id="add" d="M22 6h-4V2h-2v4h-4v2h4v4h2V8h4z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-progressive.png
deleted file mode 100644 (file)
index e64819c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-progressive.svg
deleted file mode 100644 (file)
index b898956..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="imageAdd">
-        <path id="mountains" d="M16 17l-3-3-2 1-3-3-4 5zm-1-8v4h3v6H2V6h9v3z"/>
-        <path id="add" d="M22 6h-4V2h-2v4h-4v2h4v4h2V8h4z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr.png
deleted file mode 100644 (file)
index f08883c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr.svg
deleted file mode 100644 (file)
index 1b60cf0..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="imageAdd">
-        <path id="mountains" d="M16 17l-3-3-2 1-3-3-4 5zm-1-8v4h3v6H2V6h9v3z"/>
-        <path id="add" d="M22 6h-4V2h-2v4h-4v2h4v4h2V8h4z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-invert.png
deleted file mode 100644 (file)
index 375a79f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-invert.svg
deleted file mode 100644 (file)
index e76b43f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="imageAdd">
-        <path id="mountains" d="M8 17l3-3 2 1 3-3 4 5zm1-8v4H6v6h16V6h-9v3z"/>
-        <path id="add" d="M2 6h4V2h2v4h4v2H8v4H6V8H2z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-progressive.png
deleted file mode 100644 (file)
index dec9401..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-progressive.svg
deleted file mode 100644 (file)
index 61e2ed4..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="imageAdd">
-        <path id="mountains" d="M8 17l3-3 2 1 3-3 4 5zm1-8v4H6v6h16V6h-9v3z"/>
-        <path id="add" d="M2 6h4V2h2v4h4v2H8v4H6V8H2z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl.png
deleted file mode 100644 (file)
index dd60447..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl.svg
deleted file mode 100644 (file)
index b86d499..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="imageAdd">
-        <path id="mountains" d="M8 17l3-3 2 1 3-3 4 5zm1-8v4H6v6h16V6h-9v3z"/>
-        <path id="add" d="M2 6h4V2h2v4h4v2H8v4H6V8H2z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-invert.png
deleted file mode 100644 (file)
index bd15ff0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-invert.svg
deleted file mode 100644 (file)
index c2d3d8a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M2 4v14h2V6h15V4H2zm3 3v13h16V7H5zm6 6l3 3 2-1 3 3H7l4-5z" id="imageGallery"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-progressive.png
deleted file mode 100644 (file)
index 7e360aa..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-progressive.svg
deleted file mode 100644 (file)
index 4029c27..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M2 4v14h2V6h15V4H2zm3 3v13h16V7H5zm6 6l3 3 2-1 3 3H7l4-5z" id="imageGallery"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr.png
deleted file mode 100644 (file)
index 3934d14..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr.svg
deleted file mode 100644 (file)
index 2fa2e52..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M2 4v14h2V6h15V4H2zm3 3v13h16V7H5zm6 6l3 3 2-1 3 3H7l4-5z" id="imageGallery"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-invert.png
deleted file mode 100644 (file)
index 85b22c4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-invert.svg
deleted file mode 100644 (file)
index b32a86a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M21 4v14h-2V6H4V4h17zm-3 3v13H2V7h16zm-6 6l-3 3-2-1-3 3h12l-4-5z" id="imageGallery"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-progressive.png
deleted file mode 100644 (file)
index 3d014a5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-progressive.svg
deleted file mode 100644 (file)
index 21f4a80..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M21 4v14h-2V6H4V4h17zm-3 3v13H2V7h16zm-6 6l-3 3-2-1-3 3h12l-4-5z" id="imageGallery"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl.png
deleted file mode 100644 (file)
index f8af41f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl.svg
deleted file mode 100644 (file)
index c705cec..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M21 4v14h-2V6H4V4h17zm-3 3v13H2V7h16zm-6 6l-3 3-2-1-3 3h12l-4-5z" id="imageGallery"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-invert.png
deleted file mode 100644 (file)
index 61b5d22..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-invert.svg
deleted file mode 100644 (file)
index b726d4b..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="imageAdd">
-        <path id="mountains" d="M18 17l-3-3-2 1-3-3-4 5zm2-5v7H4V6h8v6z"/>
-        <path id="lock" d="M18.5 5h-3V4s0-1.5 1.5-1.5c1.5.06 1.5 1.5 1.5 1.5zM20 5V4s0-3-3-3-3 3-3 3v1h-1v6h8V5z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-progressive.png
deleted file mode 100644 (file)
index f5604bf..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-progressive.svg
deleted file mode 100644 (file)
index e726c03..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="imageAdd">
-        <path id="mountains" d="M18 17l-3-3-2 1-3-3-4 5zm2-5v7H4V6h8v6z"/>
-        <path id="lock" d="M18.5 5h-3V4s0-1.5 1.5-1.5c1.5.06 1.5 1.5 1.5 1.5zM20 5V4s0-3-3-3-3 3-3 3v1h-1v6h8V5z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr.png
deleted file mode 100644 (file)
index a1a1e1e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr.svg
deleted file mode 100644 (file)
index 50a928a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="imageAdd">
-        <path id="mountains" d="M18 17l-3-3-2 1-3-3-4 5zm2-5v7H4V6h8v6z"/>
-        <path id="lock" d="M18.5 5h-3V4s0-1.5 1.5-1.5c1.5.06 1.5 1.5 1.5 1.5zM20 5V4s0-3-3-3-3 3-3 3v1h-1v6h8V5z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-invert.png
deleted file mode 100644 (file)
index 2223f5f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-invert.svg
deleted file mode 100644 (file)
index c92cd7f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="imageAdd">
-        <path id="mountains" d="M7 17l3-3 2 1 3-3 4 5zm-2-5v7h16V6h-8v6z"/>
-        <path id="lock" d="M6.5 5h3V4s0-1.5-1.5-1.5C6.5 2.56 6.5 4 6.5 4zM5 5V4s0-3 3-3 3 3 3 3v1h1v6H4V5z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-progressive.png
deleted file mode 100644 (file)
index 817e599..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-progressive.svg
deleted file mode 100644 (file)
index 8381443..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="imageAdd">
-        <path id="mountains" d="M7 17l3-3 2 1 3-3 4 5zm-2-5v7h16V6h-8v6z"/>
-        <path id="lock" d="M6.5 5h3V4s0-1.5-1.5-1.5C6.5 2.56 6.5 4 6.5 4zM5 5V4s0-3 3-3 3 3 3 3v1h1v6H4V5z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl.png
deleted file mode 100644 (file)
index f0ddda4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl.svg
deleted file mode 100644 (file)
index e8ac3ed..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="imageAdd">
-        <path id="mountains" d="M7 17l3-3 2 1 3-3 4 5zm-2-5v7h16V6h-8v6z"/>
-        <path id="lock" d="M6.5 5h3V4s0-1.5-1.5-1.5C6.5 2.56 6.5 4 6.5 4zM5 5V4s0-3 3-3 3 3 3 3v1h1v6H4V5z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-invert.png
deleted file mode 100644 (file)
index af944e7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-invert.svg
deleted file mode 100644 (file)
index 04768db..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 8v8l5-4-5-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-progressive.png
deleted file mode 100644 (file)
index eec5149..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-progressive.svg
deleted file mode 100644 (file)
index 2734879..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 8v8l5-4-5-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr.png
deleted file mode 100644 (file)
index b7663ae..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr.svg
deleted file mode 100644 (file)
index 3760696..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 8v8l5-4-5-4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-invert.png
deleted file mode 100644 (file)
index f52ff9b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-invert.svg
deleted file mode 100644 (file)
index c70f991..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zM21 8v8l-5-4 5-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-progressive.png
deleted file mode 100644 (file)
index b6edc33..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-progressive.svg
deleted file mode 100644 (file)
index 992ed82..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zM21 8v8l-5-4 5-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl.png
deleted file mode 100644 (file)
index 63b2750..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl.svg
deleted file mode 100644 (file)
index 9648f34..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zM21 8v8l-5-4 5-4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-invert.png
deleted file mode 100644 (file)
index 78532de..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-invert.svg
deleted file mode 100644 (file)
index f3519f3..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="info">
-        <path id="circled-i" d="M11.5 17a5.5 5.5 0 1 1 0-11 5.5 5.5 0 0 1 0 11zm0-12a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zm.5 5v4h1v1h-3v-1h1v-3h-1v-1zm-1-2h1v1h-1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-progressive.png
deleted file mode 100644 (file)
index 9a0f5d7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-progressive.svg
deleted file mode 100644 (file)
index 1e2ecf8..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="info">
-        <path id="circled-i" d="M11.5 17a5.5 5.5 0 1 1 0-11 5.5 5.5 0 0 1 0 11zm0-12a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zm.5 5v4h1v1h-3v-1h1v-3h-1v-1zm-1-2h1v1h-1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/info.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/info.png
deleted file mode 100644 (file)
index 0b4270d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/info.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/info.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/info.svg
deleted file mode 100644 (file)
index 72a9b4c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="info">
-        <path id="circled-i" d="M11.5 17a5.5 5.5 0 1 1 0-11 5.5 5.5 0 0 1 0 11zm0-12a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zm.5 5v4h1v1h-3v-1h1v-3h-1v-1zm-1-2h1v1h-1z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-invert.png
deleted file mode 100644 (file)
index 12dfc56..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-invert.svg
deleted file mode 100644 (file)
index 7a52242..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="italic-a">
-        <path id="a" d="M14.667 6h-1.372l-7 12H8l2.333-4h4L15 18h1.667l-2-12zm-3.75 7l2.527-4.333.723 4.333h-3.25z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-progressive.png
deleted file mode 100644 (file)
index f8c25a9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-progressive.svg
deleted file mode 100644 (file)
index 2431aeb..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="italic-a">
-        <path id="a" d="M14.667 6h-1.372l-7 12H8l2.333-4h4L15 18h1.667l-2-12zm-3.75 7l2.527-4.333.723 4.333h-3.25z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a.png
deleted file mode 100644 (file)
index 2f5fd18..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a.svg
deleted file mode 100644 (file)
index a3a11c6..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="italic-a">
-        <path id="a" d="M14.667 6h-1.372l-7 12H8l2.333-4h4L15 18h1.667l-2-12zm-3.75 7l2.527-4.333.723 4.333h-3.25z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.png
deleted file mode 100644 (file)
index 567b290..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.svg
deleted file mode 100644 (file)
index 4d68c38..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="italic-arab-keheh-jeem">
-        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125a1.26 1.26 0 0 0 .065.78c.19.406.54.575.844.814l.093-.12.53.627c.14.165.345.514.47.94.138.462.08.724 0 1.124h-3.44c-.34 0-.592.007-.766-.02-.34-.053-.256-.21-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.046-.698-.185-1.094-.155-.36.026-.77.24-1.03.72-.25.447-.436.838-.66 1.28l.75-.47c.23-.14.486-.226.72-.218.158.004.276.053.407.093-.234.204-.51.4-.72.56-.3.26-.704.69-.908 1-.403.617-.694 1.086-.875 1.78-.18.69.003 1.34.468 1.75.426.38.846.52 1.28.566.65.064 1.206.092 2-.19.658-.23 1.022-.552 1.5-.97-.882.11-1.816.09-2.53.033-.87-.07-1.268-.386-1.47-.596-.27-.283-.306-.64-.155-1.22a1.44 1.44 0 0 1 .25-.53c.17-.228.363-.435.593-.656.45-.436 1.01-.737 1.46-.94-.042.207-.104.444-.052.69.05.23.25.38.44.47.26.12.506.152.69.153 1.42.01 2.86 0 4.28 0 .246 0 .45-.163.593-.375.14-.21.25-.48.343-.845.13-.5.094-1.062-.094-1.625a4.812 4.812 0 0 0-.72-1.406c-.336-.444-.675-.83-1-1.22 1.256-.815 2.715-1.24 3.97-1.688.12-.452.222-.926.31-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.1.813.336-.303.627-.674.876-.97-.39-.267-.77-.587-1.093-.843z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-progressive.png
deleted file mode 100644 (file)
index 3c3ed9f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-progressive.svg
deleted file mode 100644 (file)
index 8c23b30..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="italic-arab-keheh-jeem">
-        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125a1.26 1.26 0 0 0 .065.78c.19.406.54.575.844.814l.093-.12.53.627c.14.165.345.514.47.94.138.462.08.724 0 1.124h-3.44c-.34 0-.592.007-.766-.02-.34-.053-.256-.21-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.046-.698-.185-1.094-.155-.36.026-.77.24-1.03.72-.25.447-.436.838-.66 1.28l.75-.47c.23-.14.486-.226.72-.218.158.004.276.053.407.093-.234.204-.51.4-.72.56-.3.26-.704.69-.908 1-.403.617-.694 1.086-.875 1.78-.18.69.003 1.34.468 1.75.426.38.846.52 1.28.566.65.064 1.206.092 2-.19.658-.23 1.022-.552 1.5-.97-.882.11-1.816.09-2.53.033-.87-.07-1.268-.386-1.47-.596-.27-.283-.306-.64-.155-1.22a1.44 1.44 0 0 1 .25-.53c.17-.228.363-.435.593-.656.45-.436 1.01-.737 1.46-.94-.042.207-.104.444-.052.69.05.23.25.38.44.47.26.12.506.152.69.153 1.42.01 2.86 0 4.28 0 .246 0 .45-.163.593-.375.14-.21.25-.48.343-.845.13-.5.094-1.062-.094-1.625a4.812 4.812 0 0 0-.72-1.406c-.336-.444-.675-.83-1-1.22 1.256-.815 2.715-1.24 3.97-1.688.12-.452.222-.926.31-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.1.813.336-.303.627-.674.876-.97-.39-.267-.77-.587-1.093-.843z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem.png
deleted file mode 100644 (file)
index c8e03ee..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem.svg
deleted file mode 100644 (file)
index 11b1458..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="italic-arab-keheh-jeem">
-        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125a1.26 1.26 0 0 0 .065.78c.19.406.54.575.844.814l.093-.12.53.627c.14.165.345.514.47.94.138.462.08.724 0 1.124h-3.44c-.34 0-.592.007-.766-.02-.34-.053-.256-.21-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.046-.698-.185-1.094-.155-.36.026-.77.24-1.03.72-.25.447-.436.838-.66 1.28l.75-.47c.23-.14.486-.226.72-.218.158.004.276.053.407.093-.234.204-.51.4-.72.56-.3.26-.704.69-.908 1-.403.617-.694 1.086-.875 1.78-.18.69.003 1.34.468 1.75.426.38.846.52 1.28.566.65.064 1.206.092 2-.19.658-.23 1.022-.552 1.5-.97-.882.11-1.816.09-2.53.033-.87-.07-1.268-.386-1.47-.596-.27-.283-.306-.64-.155-1.22a1.44 1.44 0 0 1 .25-.53c.17-.228.363-.435.593-.656.45-.436 1.01-.737 1.46-.94-.042.207-.104.444-.052.69.05.23.25.38.44.47.26.12.506.152.69.153 1.42.01 2.86 0 4.28 0 .246 0 .45-.163.593-.375.14-.21.25-.48.343-.845.13-.5.094-1.062-.094-1.625a4.812 4.812 0 0 0-.72-1.406c-.336-.444-.675-.83-1-1.22 1.256-.815 2.715-1.24 3.97-1.688.12-.452.222-.926.31-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.1.813.336-.303.627-.674.876-.97-.39-.267-.77-.587-1.093-.843z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.png
deleted file mode 100644 (file)
index 03989d4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.svg
deleted file mode 100644 (file)
index 799a785..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="italic-arab-meem">
-        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627a8.31 8.31 0 0 1-1.082 1.833c-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.692-.98a24.1 24.1 0 0 1 .94-1.09c.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.765-.293l.065-.128c.01-.11-.01-.24-.052-.394a2.403 2.403 0 0 0-.232-.522c-.22-.428-.438-.64-.654-.64-.294 0-.915.268-1.864.805-.36.208-.378.125-.05-.247 1.555-1.71 2.705-2.566 3.45-2.566.38 0 .67.13.86.394.134.195.25.6.343 1.21l.202 1.2c.105.586.24.895.408.925"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-progressive.png
deleted file mode 100644 (file)
index 7179cb6..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-progressive.svg
deleted file mode 100644 (file)
index b22bd45..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="italic-arab-meem">
-        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627a8.31 8.31 0 0 1-1.082 1.833c-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.692-.98a24.1 24.1 0 0 1 .94-1.09c.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.765-.293l.065-.128c.01-.11-.01-.24-.052-.394a2.403 2.403 0 0 0-.232-.522c-.22-.428-.438-.64-.654-.64-.294 0-.915.268-1.864.805-.36.208-.378.125-.05-.247 1.555-1.71 2.705-2.566 3.45-2.566.38 0 .67.13.86.394.134.195.25.6.343 1.21l.202 1.2c.105.586.24.895.408.925"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem.png
deleted file mode 100644 (file)
index 409a416..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem.svg
deleted file mode 100644 (file)
index f15586e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="italic-arab-meem">
-        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627a8.31 8.31 0 0 1-1.082 1.833c-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.692-.98a24.1 24.1 0 0 1 .94-1.09c.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.765-.293l.065-.128c.01-.11-.01-.24-.052-.394a2.403 2.403 0 0 0-.232-.522c-.22-.428-.438-.64-.654-.64-.294 0-.915.268-1.864.805-.36.208-.378.125-.05-.247 1.555-1.71 2.705-2.566 3.45-2.566.38 0 .67.13.86.394.134.195.25.6.343 1.21l.202 1.2c.105.586.24.895.408.925"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.png
deleted file mode 100644 (file)
index 75dc339..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.svg
deleted file mode 100644 (file)
index 6b56e37..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="italic-armn-sha">
-        <path id="armn-sha" d="M11.564 7.678a3.073 3.073 0 0 0-.93-.268c-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.33 1.67-2.625-1.165a1.867 1.867 0 0 0-.433-.134 2.45 2.45 0 0 0-.576-.06 4.88 4.88 0 0 0-1.663.28c-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283a5.48 5.48 0 0 0-.63 1.71c-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.044-.08 1.48-.236a3.488 3.488 0 0 0 1.135-.66c.325-.29.59-.634.795-1.034.21-.4.363-.84.458-1.322l.11-.56h1.6l-.12.59a5.925 5.925 0 0 1-.676 1.844 5.19 5.19 0 0 1-1.214 1.423c-.488.395-1.053.7-1.694.923a6.573 6.573 0 0 1-2.106.324c-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.437-.573-.97-.678-1.608-.105-.64-.078-1.366.08-2.186.125-.66.346-1.274.66-1.836A6.332 6.332 0 0 1 8.792 9.54a5.955 5.955 0 0 1 1.496-1.072 5.87 5.87 0 0 1 1.732-.57l-.465-.23"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-progressive.png
deleted file mode 100644 (file)
index db31afa..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-progressive.svg
deleted file mode 100644 (file)
index 50ee046..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="italic-armn-sha">
-        <path id="armn-sha" d="M11.564 7.678a3.073 3.073 0 0 0-.93-.268c-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.33 1.67-2.625-1.165a1.867 1.867 0 0 0-.433-.134 2.45 2.45 0 0 0-.576-.06 4.88 4.88 0 0 0-1.663.28c-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283a5.48 5.48 0 0 0-.63 1.71c-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.044-.08 1.48-.236a3.488 3.488 0 0 0 1.135-.66c.325-.29.59-.634.795-1.034.21-.4.363-.84.458-1.322l.11-.56h1.6l-.12.59a5.925 5.925 0 0 1-.676 1.844 5.19 5.19 0 0 1-1.214 1.423c-.488.395-1.053.7-1.694.923a6.573 6.573 0 0 1-2.106.324c-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.437-.573-.97-.678-1.608-.105-.64-.078-1.366.08-2.186.125-.66.346-1.274.66-1.836A6.332 6.332 0 0 1 8.792 9.54a5.955 5.955 0 0 1 1.496-1.072 5.87 5.87 0 0 1 1.732-.57l-.465-.23"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha.png
deleted file mode 100644 (file)
index 2dd80f7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha.svg
deleted file mode 100644 (file)
index c32ff49..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="italic-armn-sha">
-        <path id="armn-sha" d="M11.564 7.678a3.073 3.073 0 0 0-.93-.268c-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.33 1.67-2.625-1.165a1.867 1.867 0 0 0-.433-.134 2.45 2.45 0 0 0-.576-.06 4.88 4.88 0 0 0-1.663.28c-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283a5.48 5.48 0 0 0-.63 1.71c-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.044-.08 1.48-.236a3.488 3.488 0 0 0 1.135-.66c.325-.29.59-.634.795-1.034.21-.4.363-.84.458-1.322l.11-.56h1.6l-.12.59a5.925 5.925 0 0 1-.676 1.844 5.19 5.19 0 0 1-1.214 1.423c-.488.395-1.053.7-1.694.923a6.573 6.573 0 0 1-2.106.324c-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.437-.573-.97-.678-1.608-.105-.64-.078-1.366.08-2.186.125-.66.346-1.274.66-1.836A6.332 6.332 0 0 1 8.792 9.54a5.955 5.955 0 0 1 1.496-1.072 5.87 5.87 0 0 1 1.732-.57l-.465-.23"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.png
deleted file mode 100644 (file)
index a165657..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.svg
deleted file mode 100644 (file)
index 01afe88..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="italic-c">
-        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04a4.835 4.835 0 0 1-3.015 1.03c-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.89-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.78 0 1.48-.26 2.1-.785.63-.52 1.08-1.26 1.37-2.216"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-progressive.png
deleted file mode 100644 (file)
index 5b36059..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-progressive.svg
deleted file mode 100644 (file)
index 03aa494..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="italic-c">
-        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04a4.835 4.835 0 0 1-3.015 1.03c-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.89-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.78 0 1.48-.26 2.1-.785.63-.52 1.08-1.26 1.37-2.216"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c.png
deleted file mode 100644 (file)
index dc70ded..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c.svg
deleted file mode 100644 (file)
index b85eb02..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="italic-c">
-        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04a4.835 4.835 0 0 1-3.015 1.03c-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.89-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.78 0 1.48-.26 2.1-.785.63-.52 1.08-1.26 1.37-2.216"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-invert.png
deleted file mode 100644 (file)
index b656d1c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-invert.svg
deleted file mode 100644 (file)
index dcd0d94..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="italic-d">
-        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.642.17 1.192.472 1.65.91.454.43.8.97 1.03 1.62.23.65.344 1.378.344 2.186 0 .966-.146 1.847-.436 2.644-.284.79-.66 1.49-1.127 2.095-.46.6-.946 1.072-1.455 1.416-.504.33-1.1.582-1.794.75-.525.122-1.17.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24a3.26 3.26 0 0 0 1.05-.436 4.19 4.19 0 0 0 1.04-.975 6.652 6.652 0 0 0 .975-1.825c.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.522-.755-.87-1.27-1.04-.38-.124-.974-.186-1.78-.186H11L9.095 16.64"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-progressive.png
deleted file mode 100644 (file)
index 73e4545..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-progressive.svg
deleted file mode 100644 (file)
index ff61b37..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="italic-d">
-        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.642.17 1.192.472 1.65.91.454.43.8.97 1.03 1.62.23.65.344 1.378.344 2.186 0 .966-.146 1.847-.436 2.644-.284.79-.66 1.49-1.127 2.095-.46.6-.946 1.072-1.455 1.416-.504.33-1.1.582-1.794.75-.525.122-1.17.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24a3.26 3.26 0 0 0 1.05-.436 4.19 4.19 0 0 0 1.04-.975 6.652 6.652 0 0 0 .975-1.825c.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.522-.755-.87-1.27-1.04-.38-.124-.974-.186-1.78-.186H11L9.095 16.64"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d.png
deleted file mode 100644 (file)
index cd5ac9d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d.svg
deleted file mode 100644 (file)
index dbc1d40..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="italic-d">
-        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.642.17 1.192.472 1.65.91.454.43.8.97 1.03 1.62.23.65.344 1.378.344 2.186 0 .966-.146 1.847-.436 2.644-.284.79-.66 1.49-1.127 2.095-.46.6-.946 1.072-1.455 1.416-.504.33-1.1.582-1.794.75-.525.122-1.17.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24a3.26 3.26 0 0 0 1.05-.436 4.19 4.19 0 0 0 1.04-.975 6.652 6.652 0 0 0 .975-1.825c.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.522-.755-.87-1.27-1.04-.38-.124-.974-.186-1.78-.186H11L9.095 16.64"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-invert.png
deleted file mode 100644 (file)
index 2e0918d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-invert.svg
deleted file mode 100644 (file)
index f91db71..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="italic-e">
-        <path id="e" d="M7 18L9.474 6H18l-.282 1.367H10.77L10.02 11h6.09l-.28 1.367H9.74l-.88 4.273h7.44L16.018 18H7"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-progressive.png
deleted file mode 100644 (file)
index 0444ac2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-progressive.svg
deleted file mode 100644 (file)
index c5ca7b1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="italic-e">
-        <path id="e" d="M7 18L9.474 6H18l-.282 1.367H10.77L10.02 11h6.09l-.28 1.367H9.74l-.88 4.273h7.44L16.018 18H7"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e.png
deleted file mode 100644 (file)
index bb51c22..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e.svg
deleted file mode 100644 (file)
index f385149..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="italic-e">
-        <path id="e" d="M7 18L9.474 6H18l-.282 1.367H10.77L10.02 11h6.09l-.28 1.367H9.74l-.88 4.273h7.44L16.018 18H7"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.png
deleted file mode 100644 (file)
index b0e5b2c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.svg
deleted file mode 100644 (file)
index fea68a5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="italic-geor-kan">
-        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.62c-.055.26-.083.497-.083.71 0 .97.52 1.46 1.564 1.46 1.31 0 2.108-.724 2.39-2.17l.058-.33a3.17 3.17 0 0 0 .066-.615c0-.927-.546-1.39-1.64-1.39H10.87l.247-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.696-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-progressive.png
deleted file mode 100644 (file)
index ff933e2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-progressive.svg
deleted file mode 100644 (file)
index bacc38c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="italic-geor-kan">
-        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.62c-.055.26-.083.497-.083.71 0 .97.52 1.46 1.564 1.46 1.31 0 2.108-.724 2.39-2.17l.058-.33a3.17 3.17 0 0 0 .066-.615c0-.927-.546-1.39-1.64-1.39H10.87l.247-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.696-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan.png
deleted file mode 100644 (file)
index 9750f42..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan.svg
deleted file mode 100644 (file)
index 9a54880..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="italic-geor-kan">
-        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.62c-.055.26-.083.497-.083.71 0 .97.52 1.46 1.564 1.46 1.31 0 2.108-.724 2.39-2.17l.058-.33a3.17 3.17 0 0 0 .066-.615c0-.927-.546-1.39-1.64-1.39H10.87l.247-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.696-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-invert.png
deleted file mode 100644 (file)
index cc8fee4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-invert.svg
deleted file mode 100644 (file)
index 3919051..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="italic-i">
-        <path id="i" d="M12.5 18l.25-.995h-1.5l2.508-10.037h1.5L15.5 6h-5l-.242.968h1.5l-2.51 10.037h-1.5L7.5 18z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-progressive.png
deleted file mode 100644 (file)
index 5c78d59..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-progressive.svg
deleted file mode 100644 (file)
index f71f6f7..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="italic-i">
-        <path id="i" d="M12.5 18l.25-.995h-1.5l2.508-10.037h1.5L15.5 6h-5l-.242.968h1.5l-2.51 10.037h-1.5L7.5 18z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i.png
deleted file mode 100644 (file)
index a37620b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i.svg
deleted file mode 100644 (file)
index e670e9b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="italic-i">
-        <path id="i" d="M12.5 18l.25-.995h-1.5l2.508-10.037h1.5L15.5 6h-5l-.242.968h1.5l-2.51 10.037h-1.5L7.5 18z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-invert.png
deleted file mode 100644 (file)
index 5387c36..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-invert.svg
deleted file mode 100644 (file)
index b6e87b4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="italic-k">
-        <path id="k" d="M12.018 10.652L17 6h-2l-5.31 5.234L11 6H9.5l-3 12H8l1.173-4.693 1.54-1.438C11 16 14 18 14 18h2s-4-2-3.982-7.348z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-progressive.png
deleted file mode 100644 (file)
index a2e715f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-progressive.svg
deleted file mode 100644 (file)
index 7494e8f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="italic-k">
-        <path id="k" d="M12.018 10.652L17 6h-2l-5.31 5.234L11 6H9.5l-3 12H8l1.173-4.693 1.54-1.438C11 16 14 18 14 18h2s-4-2-3.982-7.348z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k.png
deleted file mode 100644 (file)
index 9b156fd..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k.svg
deleted file mode 100644 (file)
index 38bcd73..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="italic-k">
-        <path id="k" d="M12.018 10.652L17 6h-2l-5.31 5.234L11 6H9.5l-3 12H8l1.173-4.693 1.54-1.438C11 16 14 18 14 18h2s-4-2-3.982-7.348z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.png
deleted file mode 100644 (file)
index 42b674e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.svg
deleted file mode 100644 (file)
index ed2fe67..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="italic-s">
-        <path id="s" d="M16.474 6.59l-.302 1.525a7.36 7.36 0 0 0-1.557-.628 5.432 5.432 0 0 0-1.487-.217c-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.65.302.86.207.19.733.4 1.58.63l.937.23c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.31-1.61a7.613 7.613 0 0 0 1.72.805c.58.18 1.155.27 1.73.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.354-1.054-.233-.242-.737-.46-1.512-.657l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.368-.584-.88-.584-1.535 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.555 0 1.1.05 1.644.146.542.1 1.085.245 1.627.442"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-progressive.png
deleted file mode 100644 (file)
index d517352..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-progressive.svg
deleted file mode 100644 (file)
index 0eeeb50..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="italic-s">
-        <path id="s" d="M16.474 6.59l-.302 1.525a7.36 7.36 0 0 0-1.557-.628 5.432 5.432 0 0 0-1.487-.217c-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.65.302.86.207.19.733.4 1.58.63l.937.23c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.31-1.61a7.613 7.613 0 0 0 1.72.805c.58.18 1.155.27 1.73.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.354-1.054-.233-.242-.737-.46-1.512-.657l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.368-.584-.88-.584-1.535 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.555 0 1.1.05 1.644.146.542.1 1.085.245 1.627.442"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s.png
deleted file mode 100644 (file)
index 3213d6d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s.svg
deleted file mode 100644 (file)
index b3fb340..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="italic-s">
-        <path id="s" d="M16.474 6.59l-.302 1.525a7.36 7.36 0 0 0-1.557-.628 5.432 5.432 0 0 0-1.487-.217c-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.65.302.86.207.19.733.4 1.58.63l.937.23c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.31-1.61a7.613 7.613 0 0 0 1.72.805c.58.18 1.155.27 1.73.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.354-1.054-.233-.242-.737-.46-1.512-.657l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.368-.584-.88-.584-1.535 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.555 0 1.1.05 1.644.146.542.1 1.085.245 1.627.442"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-invert.png
deleted file mode 100644 (file)
index bc2e9cc..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-invert.svg
deleted file mode 100644 (file)
index 370d0a3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-  <path d="M16 8V7h-6v1h6zm-2 2V9h-4v1h4zM6 4h1v16H6V4zm2 0h10v13c0 1.7-1.3 3-3 3H8V4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-progressive.png
deleted file mode 100644 (file)
index 19f17bd..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-progressive.svg
deleted file mode 100644 (file)
index baf8a4a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-  <path d="M16 8V7h-6v1h6zm-2 2V9h-4v1h4zM6 4h1v16H6V4zm2 0h10v13c0 1.7-1.3 3-3 3H8V4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr.png
deleted file mode 100644 (file)
index 2af4eb0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr.svg
deleted file mode 100644 (file)
index 8a83e41..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-  <path d="M16 8V7h-6v1h6zm-2 2V9h-4v1h4zM6 4h1v16H6V4zm2 0h10v13c0 1.7-1.3 3-3 3H8V4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-invert.png
deleted file mode 100644 (file)
index 60b5f47..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-invert.svg
deleted file mode 100644 (file)
index 4660285..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-  <path d="M8 8V7h6v1H8zm2 2V9h4v1h-4zm8-6h-1v16h1V4zm-2 0H6v13c0 1.7 1.3 3 3 3h7V4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-progressive.png
deleted file mode 100644 (file)
index b16badc..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-progressive.svg
deleted file mode 100644 (file)
index 17ccb82..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-  <path d="M8 8V7h6v1H8zm2 2V9h4v1h-4zm8-6h-1v16h1V4zm-2 0H6v13c0 1.7 1.3 3 3 3h7V4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl.png
deleted file mode 100644 (file)
index 033ede1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl.svg
deleted file mode 100644 (file)
index 2a07a44..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-  <path d="M8 8V7h6v1H8zm2 2V9h4v1h-4zm8-6h-1v16h1V4zm-2 0H6v13c0 1.7 1.3 3 3 3h7V4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-invert.png
deleted file mode 100644 (file)
index 265da14..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-invert.svg
deleted file mode 100644 (file)
index 4b00ee7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M14.5 4C11.5 4 9 6.5 9 9.5c0 1 .3 1.9.7 2.8L4 18v2h4v-2h2v-2h2l1.2-1.2c.4.1.9.2 1.3.2 3 0 5.5-2.5 5.5-5.5S17.5 4 14.5 4zM16 9c-.8 0-1.5-.7-1.5-1.5S15.2 6 16 6s1.5.7 1.5 1.5S16.8 9 16 9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-progressive.png
deleted file mode 100644 (file)
index 37b1788..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-progressive.svg
deleted file mode 100644 (file)
index e079ac6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M14.5 4C11.5 4 9 6.5 9 9.5c0 1 .3 1.9.7 2.8L4 18v2h4v-2h2v-2h2l1.2-1.2c.4.1.9.2 1.3.2 3 0 5.5-2.5 5.5-5.5S17.5 4 14.5 4zM16 9c-.8 0-1.5-.7-1.5-1.5S15.2 6 16 6s1.5.7 1.5 1.5S16.8 9 16 9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr.png
deleted file mode 100644 (file)
index 9a4dca8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr.svg
deleted file mode 100644 (file)
index fc0d3c3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M14.5 4C11.5 4 9 6.5 9 9.5c0 1 .3 1.9.7 2.8L4 18v2h4v-2h2v-2h2l1.2-1.2c.4.1.9.2 1.3.2 3 0 5.5-2.5 5.5-5.5S17.5 4 14.5 4zM16 9c-.8 0-1.5-.7-1.5-1.5S15.2 6 16 6s1.5.7 1.5 1.5S16.8 9 16 9z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-invert.png
deleted file mode 100644 (file)
index a5f2904..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-invert.svg
deleted file mode 100644 (file)
index 1777cec..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-progressive.png
deleted file mode 100644 (file)
index 69a032a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-progressive.svg
deleted file mode 100644 (file)
index d070568..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl.png
deleted file mode 100644 (file)
index f49e112..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl.svg
deleted file mode 100644 (file)
index 6dedfe8..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-invert.png
deleted file mode 100644 (file)
index d7d1a0b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-invert.svg
deleted file mode 100644 (file)
index 2230bf5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-progressive.png
deleted file mode 100644 (file)
index 49a0c4a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-progressive.svg
deleted file mode 100644 (file)
index 25f22c7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr.png
deleted file mode 100644 (file)
index 886d37a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr.svg
deleted file mode 100644 (file)
index c4c442e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-invert.png
deleted file mode 100644 (file)
index 1b0275e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-invert.svg
deleted file mode 100644 (file)
index df9d39d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-progressive.png
deleted file mode 100644 (file)
index cf144b7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-progressive.svg
deleted file mode 100644 (file)
index 1cff12c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl.png
deleted file mode 100644 (file)
index 790a5e2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl.svg
deleted file mode 100644 (file)
index b37d7f4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-invert.png
deleted file mode 100644 (file)
index d9ac348..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-invert.svg
deleted file mode 100644 (file)
index 9b8523f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="A">
-        <path d="M18.738 15.673l1.137 3.15h1.575L17.775 7.448h-2.188l-3.85 11.375h1.575l1.05-3.15h4.375zM16.55 8.76l1.837 5.427h-3.675l1.838-5.425z"/>
-    </g>
-    <g id="文">
-        <path d="M8.325 6.573h.787l-.875-1.75h-1.75l.438.875a1.56 1.56 0 0 0 1.4.875z"/>
-        <path d="m 9.202,12.874 c 0.7,0.525 1.486,0.963 2.45,1.225 l -0.438,1.31 A 9.17,9.17 0 0 1 8.151,13.835 c -1.49,1.137 -3.063,1.837 -4.813,2.363 L 2.9,14.885 C 4.386,14.36 5.874,13.835 7.1,12.872 5.962,11.648 5.174,10.335 4.65,8.758 l -1.663,0 0,-1.31 10.85,0 -0.438,1.312 -1.75,0 c -0.308,1.33 -1.255,2.957 -2.45,4.114 z m 1.05,-4.114 -4.114,0 c 0.35,1.226 1.138,2.363 2.013,3.238 0.926,-1 1.617,-1.957 2.1,-3.237 z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-progressive.png
deleted file mode 100644 (file)
index cfc3a36..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-progressive.svg
deleted file mode 100644 (file)
index 1adc6aa..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="A">
-        <path d="M18.738 15.673l1.137 3.15h1.575L17.775 7.448h-2.188l-3.85 11.375h1.575l1.05-3.15h4.375zM16.55 8.76l1.837 5.427h-3.675l1.838-5.425z"/>
-    </g>
-    <g id="文">
-        <path d="M8.325 6.573h.787l-.875-1.75h-1.75l.438.875a1.56 1.56 0 0 0 1.4.875z"/>
-        <path d="m 9.202,12.874 c 0.7,0.525 1.486,0.963 2.45,1.225 l -0.438,1.31 A 9.17,9.17 0 0 1 8.151,13.835 c -1.49,1.137 -3.063,1.837 -4.813,2.363 L 2.9,14.885 C 4.386,14.36 5.874,13.835 7.1,12.872 5.962,11.648 5.174,10.335 4.65,8.758 l -1.663,0 0,-1.31 10.85,0 -0.438,1.312 -1.75,0 c -0.308,1.33 -1.255,2.957 -2.45,4.114 z m 1.05,-4.114 -4.114,0 c 0.35,1.226 1.138,2.363 2.013,3.238 0.926,-1 1.617,-1.957 2.1,-3.237 z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr.png
deleted file mode 100644 (file)
index f7b785c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr.svg
deleted file mode 100644 (file)
index d64b734..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="A">
-        <path d="M18.738 15.673l1.137 3.15h1.575L17.775 7.448h-2.188l-3.85 11.375h1.575l1.05-3.15h4.375zM16.55 8.76l1.837 5.427h-3.675l1.838-5.425z"/>
-    </g>
-    <g id="文">
-        <path d="M8.325 6.573h.787l-.875-1.75h-1.75l.438.875a1.56 1.56 0 0 0 1.4.875z"/>
-        <path d="m 9.202,12.874 c 0.7,0.525 1.486,0.963 2.45,1.225 l -0.438,1.31 A 9.17,9.17 0 0 1 8.151,13.835 c -1.49,1.137 -3.063,1.837 -4.813,2.363 L 2.9,14.885 C 4.386,14.36 5.874,13.835 7.1,12.872 5.962,11.648 5.174,10.335 4.65,8.758 l -1.663,0 0,-1.31 10.85,0 -0.438,1.312 -1.75,0 c -0.308,1.33 -1.255,2.957 -2.45,4.114 z m 1.05,-4.114 -4.114,0 c 0.35,1.226 1.138,2.363 2.013,3.238 0.926,-1 1.617,-1.957 2.1,-3.237 z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-invert.png
deleted file mode 100644 (file)
index 80dad94..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-invert.svg
deleted file mode 100644 (file)
index 3ceea08..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="A">
-        <path d="M5.612 15.673l-1.137 3.15H2.9L6.575 7.448h2.188l3.85 11.375h-1.575l-1.05-3.15H5.613zM7.8 8.76l-1.837 5.427h3.675L7.8 8.762z" id="path5"/>
-    </g>
-    <g id="文">
-        <path d="M16.384 6.573h.787l-.873-1.75h-1.75l.438.875c.26.535.805.874 1.4.875z" id="path7"/>
-        <path d="M15.15 12.874c-.7.525-1.486.963-2.45 1.225l.438 1.31a9.17 9.17 0 0 0 3.063-1.575c1.49 1.137 3.064 1.837 4.814 2.363l.438-1.313c-1.486-.525-2.974-1.05-4.2-2.013 1.138-1.224 1.926-2.537 2.45-4.114h1.663v-1.31h-10.85l.438 1.312h1.75c.308 1.33 1.255 2.957 2.45 4.114zM14.1 8.76h4.114c-.35 1.226-1.138 2.363-2.013 3.238-.925-1-1.616-1.957-2.1-3.237z" id="path11-7"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-progressive.png
deleted file mode 100644 (file)
index 51d8ecf..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-progressive.svg
deleted file mode 100644 (file)
index 050fe1e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="A">
-        <path d="M5.612 15.673l-1.137 3.15H2.9L6.575 7.448h2.188l3.85 11.375h-1.575l-1.05-3.15H5.613zM7.8 8.76l-1.837 5.427h3.675L7.8 8.762z" id="path5"/>
-    </g>
-    <g id="文">
-        <path d="M16.384 6.573h.787l-.873-1.75h-1.75l.438.875c.26.535.805.874 1.4.875z" id="path7"/>
-        <path d="M15.15 12.874c-.7.525-1.486.963-2.45 1.225l.438 1.31a9.17 9.17 0 0 0 3.063-1.575c1.49 1.137 3.064 1.837 4.814 2.363l.438-1.313c-1.486-.525-2.974-1.05-4.2-2.013 1.138-1.224 1.926-2.537 2.45-4.114h1.663v-1.31h-10.85l.438 1.312h1.75c.308 1.33 1.255 2.957 2.45 4.114zM14.1 8.76h4.114c-.35 1.226-1.138 2.363-2.013 3.238-.925-1-1.616-1.957-2.1-3.237z" id="path11-7"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl.png
deleted file mode 100644 (file)
index c78f2cd..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl.svg
deleted file mode 100644 (file)
index cf6c1d5..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="A">
-        <path d="M5.612 15.673l-1.137 3.15H2.9L6.575 7.448h2.188l3.85 11.375h-1.575l-1.05-3.15H5.613zM7.8 8.76l-1.837 5.427h3.675L7.8 8.762z" id="path5"/>
-    </g>
-    <g id="文">
-        <path d="M16.384 6.573h.787l-.873-1.75h-1.75l.438.875c.26.535.805.874 1.4.875z" id="path7"/>
-        <path d="M15.15 12.874c-.7.525-1.486.963-2.45 1.225l.438 1.31a9.17 9.17 0 0 0 3.063-1.575c1.49 1.137 3.064 1.837 4.814 2.363l.438-1.313c-1.486-.525-2.974-1.05-4.2-2.013 1.138-1.224 1.926-2.537 2.45-4.114h1.663v-1.31h-10.85l.438 1.312h1.75c.308 1.33 1.255 2.957 2.45 4.114zM14.1 8.76h4.114c-.35 1.226-1.138 2.363-2.013 3.238-.925-1-1.616-1.957-2.1-3.237z" id="path11-7"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.png
deleted file mode 100644 (file)
index 264811b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.svg
deleted file mode 100644 (file)
index 491adb5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
-    <path d="M20.8 20h-8.1v-.8c.4 0 .8-.1 1.3-.2s.8-.2.8-.4v-.2c0-.1 0-.2-.1-.3L13.4 15H8.3c-.1.3-.2.6-.4 1-.1.4-.3.7-.4 1-.1.4-.2.7-.2.8v.4c0 .2.2.4.5.6.3.2.9.3 1.7.3v.9H3.4v-.8c.2 0 .5-.1.8-.1.3-.1.5-.1.7-.2.3-.2.5-.4.7-.6.2-.3.4-.6.5-.9.8-2 1.6-3.9 2.4-5.9.8-2 1.7-4.1 2.7-6.5h2.1c1.4 3.3 2.4 6 3.2 7.9.8 1.9 1.4 3.6 2 4.8l.3.6c.1.2.3.3.6.5.2.1.4.2.7.3.3.1.5.1.7.1v.8zM13 14l-2.1-5.3L8.8 14H13z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr.png
deleted file mode 100644 (file)
index 4b6d298..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr.svg
deleted file mode 100644 (file)
index 4b01d74..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M20.8 20h-8.1v-.8c.4 0 .8-.1 1.3-.2s.8-.2.8-.4v-.2c0-.1 0-.2-.1-.3L13.4 15H8.3c-.1.3-.2.6-.4 1-.1.4-.3.7-.4 1-.1.4-.2.7-.2.8v.4c0 .2.2.4.5.6.3.2.9.3 1.7.3v.9H3.4v-.8c.2 0 .5-.1.8-.1.3-.1.5-.1.7-.2.3-.2.5-.4.7-.6.2-.3.4-.6.5-.9.8-2 1.6-3.9 2.4-5.9.8-2 1.7-4.1 2.7-6.5h2.1c1.4 3.3 2.4 6 3.2 7.9.8 1.9 1.4 3.6 2 4.8l.3.6c.1.2.3.3.6.5.2.1.4.2.7.3.3.1.5.1.7.1v.8zM13 14l-2.1-5.3L8.8 14H13z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.png
deleted file mode 100644 (file)
index b91b35c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.svg
deleted file mode 100644 (file)
index 4842411..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
-    <path d="M3.4 20h8.1v-.8c-.4 0-.8-.1-1.3-.2s-.8-.2-.8-.4v-.2c0-.1 0-.2.1-.3l1.3-3.1h5.1c.1.3.2.6.4 1 .1.4.3.7.4 1 .1.4.2.7.2.8v.4c0 .2-.2.4-.5.6-.3.2-.9.3-1.7.3v.9h6.1v-.8c-.2 0-.5-.1-.8-.1-.3-.1-.5-.1-.7-.2-.3-.2-.5-.4-.7-.6-.2-.3-.4-.6-.5-.9-.8-2-1.6-3.9-2.4-5.9-.8-2-1.7-4.1-2.7-6.5h-2.1c-1.4 3.3-2.4 6-3.2 7.9-.8 1.9-1.4 3.6-2 4.8l-.3.6c-.1.2-.3.3-.6.5-.2.1-.4.2-.7.3-.3.1-.5.1-.7.1v.8zm7.8-6l2.1-5.3 2.1 5.3h-4.2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.png
deleted file mode 100644 (file)
index 77d7796..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.svg
deleted file mode 100644 (file)
index 6ac62dc..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M3.4 20h8.1v-.8c-.4 0-.8-.1-1.3-.2s-.8-.2-.8-.4v-.2c0-.1 0-.2.1-.3l1.3-3.1h5.1c.1.3.2.6.4 1 .1.4.3.7.4 1 .1.4.2.7.2.8v.4c0 .2-.2.4-.5.6-.3.2-.9.3-1.7.3v.9h6.1v-.8c-.2 0-.5-.1-.8-.1-.3-.1-.5-.1-.7-.2-.3-.2-.5-.4-.7-.6-.2-.3-.4-.6-.5-.9-.8-2-1.6-3.9-2.4-5.9-.8-2-1.7-4.1-2.7-6.5h-2.1c-1.4 3.3-2.4 6-3.2 7.9-.8 1.9-1.4 3.6-2 4.8l-.3.6c-.1.2-.3.3-.6.5-.2.1-.4.2-.7.3-.3.1-.5.1-.7.1v.8zm7.8-6l2.1-5.3 2.1 5.3h-4.2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-invert.png
deleted file mode 100644 (file)
index 844b6f9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-invert.svg
deleted file mode 100644 (file)
index a12fc5a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="layout-ltr">
-        <path id="text" d="M5 19V5h6v8h8v6H5z"/>
-        <path id="float" d="M13 5v6h6V5h-6zm5 5h-4V6h4v4z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-progressive.png
deleted file mode 100644 (file)
index 8dc8a31..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-progressive.svg
deleted file mode 100644 (file)
index 8243e34..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="layout-ltr">
-        <path id="text" d="M5 19V5h6v8h8v6H5z"/>
-        <path id="float" d="M13 5v6h6V5h-6zm5 5h-4V6h4v4z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr.png
deleted file mode 100644 (file)
index ea6d2f5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr.svg
deleted file mode 100644 (file)
index c3be66c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="layout-ltr">
-        <path id="text" d="M5 19V5h6v8h8v6H5z"/>
-        <path id="float" d="M13 5v6h6V5h-6zm5 5h-4V6h4v4z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-invert.png
deleted file mode 100644 (file)
index 1ef7734..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-invert.svg
deleted file mode 100644 (file)
index 165c996..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="layout-rtl">
-        <path id="text" d="M5 19v-6h8V5h6v14H5z"/>
-        <path id="float" d="M5 5v6h6V5H5zm1 1h4v4H6V6z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-progressive.png
deleted file mode 100644 (file)
index 2c190ce..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-progressive.svg
deleted file mode 100644 (file)
index db1081c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="layout-rtl">
-        <path id="text" d="M5 19v-6h8V5h6v14H5z"/>
-        <path id="float" d="M5 5v6h6V5H5zm1 1h4v4H6V6z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl.png
deleted file mode 100644 (file)
index 46bf59b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl.svg
deleted file mode 100644 (file)
index ce7feb8..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="layout-rtl">
-        <path id="text" d="M5 19v-6h8V5h6v14H5z"/>
-        <path id="float" d="M5 5v6h6V5H5zm1 1h4v4H6V6z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-invert.png
deleted file mode 100644 (file)
index 7c9195e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-invert.svg
deleted file mode 100644 (file)
index 7c36535..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M15.387 4.33c-2.1 0-3.6 1.9-5.1 3.3.2 0 .5-.1.8-.1.5 0 1 .1 1.5.3.8-.8 1.6-1.7 2.8-1.7.6 0 1.3.3 1.8.7 1 1 1 2.6 0 3.6l-2.6 2.6c-.4.4-1.2.7-1.8.7-1.4 0-2.1-.9-2.6-2l-1.3 1.3c.8 1.5 2 2.6 3.8 2.6 1.2 0 2.3-.5 3-1.3l2.6-2.6c.9-.9 1.5-2 1.5-3.3-.2-2.2-2.2-4.1-4.4-4.1zm-4.3 12.1l-.9.9c-.4.4-1.2.7-1.8.7-.6 0-1.3-.3-1.8-.7-1-1-1-2.7 0-3.6l2.6-2.6c.4-.4 1.2-.7 1.8-.7 1.4 0 2.1 1 2.6 2l1.3-1.3c-.8-1.5-2-2.6-3.8-2.6-1.2 0-2.3.5-3 1.3l-2.6 2.6c-1.7 1.7-1.7 4.4 0 6 1.6 1.6 4.4 1.7 5.9 0l1.9-1.9c-.3.1-.6.1-.9.1-.5 0-.9 0-1.3-.2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-progressive.png
deleted file mode 100644 (file)
index fb88cdf..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-progressive.svg
deleted file mode 100644 (file)
index 22228cd..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M15.387 4.33c-2.1 0-3.6 1.9-5.1 3.3.2 0 .5-.1.8-.1.5 0 1 .1 1.5.3.8-.8 1.6-1.7 2.8-1.7.6 0 1.3.3 1.8.7 1 1 1 2.6 0 3.6l-2.6 2.6c-.4.4-1.2.7-1.8.7-1.4 0-2.1-.9-2.6-2l-1.3 1.3c.8 1.5 2 2.6 3.8 2.6 1.2 0 2.3-.5 3-1.3l2.6-2.6c.9-.9 1.5-2 1.5-3.3-.2-2.2-2.2-4.1-4.4-4.1zm-4.3 12.1l-.9.9c-.4.4-1.2.7-1.8.7-.6 0-1.3-.3-1.8-.7-1-1-1-2.7 0-3.6l2.6-2.6c.4-.4 1.2-.7 1.8-.7 1.4 0 2.1 1 2.6 2l1.3-1.3c-.8-1.5-2-2.6-3.8-2.6-1.2 0-2.3.5-3 1.3l-2.6 2.6c-1.7 1.7-1.7 4.4 0 6 1.6 1.6 4.4 1.7 5.9 0l1.9-1.9c-.3.1-.6.1-.9.1-.5 0-.9 0-1.3-.2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr.png
deleted file mode 100644 (file)
index 617d325..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr.svg
deleted file mode 100644 (file)
index aaaee54..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M15.387 4.33c-2.1 0-3.6 1.9-5.1 3.3.2 0 .5-.1.8-.1.5 0 1 .1 1.5.3.8-.8 1.6-1.7 2.8-1.7.6 0 1.3.3 1.8.7 1 1 1 2.6 0 3.6l-2.6 2.6c-.4.4-1.2.7-1.8.7-1.4 0-2.1-.9-2.6-2l-1.3 1.3c.8 1.5 2 2.6 3.8 2.6 1.2 0 2.3-.5 3-1.3l2.6-2.6c.9-.9 1.5-2 1.5-3.3-.2-2.2-2.2-4.1-4.4-4.1zm-4.3 12.1l-.9.9c-.4.4-1.2.7-1.8.7-.6 0-1.3-.3-1.8-.7-1-1-1-2.7 0-3.6l2.6-2.6c.4-.4 1.2-.7 1.8-.7 1.4 0 2.1 1 2.6 2l1.3-1.3c-.8-1.5-2-2.6-3.8-2.6-1.2 0-2.3.5-3 1.3l-2.6 2.6c-1.7 1.7-1.7 4.4 0 6 1.6 1.6 4.4 1.7 5.9 0l1.9-1.9c-.3.1-.6.1-.9.1-.5 0-.9 0-1.3-.2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-invert.png
deleted file mode 100644 (file)
index ece611a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-invert.svg
deleted file mode 100644 (file)
index 1ea19e8..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M9.025 3.6c2.1 0 3.6 1.9 5.1 3.3-.2 0-.5-.1-.8-.1-.5 0-1 .1-1.5.3-.8-.8-1.6-1.7-2.8-1.7-.6 0-1.3.3-1.8.7-1 1-1 2.6 0 3.6l2.6 2.6c.4.4 1.2.7 1.8.7 1.4 0 2.1-.9 2.6-2l1.3 1.3c-.8 1.5-2 2.6-3.8 2.6-1.2 0-2.3-.5-3-1.3l-2.6-2.6c-.9-.9-1.5-2-1.5-3.3.2-2.2 2.2-4.1 4.4-4.1zm4.3 12.1l.9.9c.4.4 1.2.7 1.8.7.6 0 1.3-.3 1.8-.7 1-1 1-2.7 0-3.6l-2.6-2.6c-.4-.4-1.2-.7-1.8-.7-1.4 0-2.1 1-2.6 2l-1.3-1.3c.8-1.5 2-2.6 3.8-2.6 1.2 0 2.3.5 3 1.3l2.6 2.6c1.7 1.7 1.7 4.4 0 6-1.6 1.6-4.4 1.7-5.9 0l-1.9-1.9c.3.1.6.1.9.1.5 0 .9 0 1.3-.2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-progressive.png
deleted file mode 100644 (file)
index c030b01..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-progressive.svg
deleted file mode 100644 (file)
index 3af1611..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M9.025 3.6c2.1 0 3.6 1.9 5.1 3.3-.2 0-.5-.1-.8-.1-.5 0-1 .1-1.5.3-.8-.8-1.6-1.7-2.8-1.7-.6 0-1.3.3-1.8.7-1 1-1 2.6 0 3.6l2.6 2.6c.4.4 1.2.7 1.8.7 1.4 0 2.1-.9 2.6-2l1.3 1.3c-.8 1.5-2 2.6-3.8 2.6-1.2 0-2.3-.5-3-1.3l-2.6-2.6c-.9-.9-1.5-2-1.5-3.3.2-2.2 2.2-4.1 4.4-4.1zm4.3 12.1l.9.9c.4.4 1.2.7 1.8.7.6 0 1.3-.3 1.8-.7 1-1 1-2.7 0-3.6l-2.6-2.6c-.4-.4-1.2-.7-1.8-.7-1.4 0-2.1 1-2.6 2l-1.3-1.3c.8-1.5 2-2.6 3.8-2.6 1.2 0 2.3.5 3 1.3l2.6 2.6c1.7 1.7 1.7 4.4 0 6-1.6 1.6-4.4 1.7-5.9 0l-1.9-1.9c.3.1.6.1.9.1.5 0 .9 0 1.3-.2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl.png
deleted file mode 100644 (file)
index ef48413..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl.svg
deleted file mode 100644 (file)
index 82a8e63..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M9.025 3.6c2.1 0 3.6 1.9 5.1 3.3-.2 0-.5-.1-.8-.1-.5 0-1 .1-1.5.3-.8-.8-1.6-1.7-2.8-1.7-.6 0-1.3.3-1.8.7-1 1-1 2.6 0 3.6l2.6 2.6c.4.4 1.2.7 1.8.7 1.4 0 2.1-.9 2.6-2l1.3 1.3c-.8 1.5-2 2.6-3.8 2.6-1.2 0-2.3-.5-3-1.3l-2.6-2.6c-.9-.9-1.5-2-1.5-3.3.2-2.2 2.2-4.1 4.4-4.1zm4.3 12.1l.9.9c.4.4 1.2.7 1.8.7.6 0 1.3-.3 1.8-.7 1-1 1-2.7 0-3.6l-2.6-2.6c-.4-.4-1.2-.7-1.8-.7-1.4 0-2.1 1-2.6 2l-1.3-1.3c.8-1.5 2-2.6 3.8-2.6 1.2 0 2.3.5 3 1.3l2.6 2.6c1.7 1.7 1.7 4.4 0 6-1.6 1.6-4.4 1.7-5.9 0l-1.9-1.9c.3.1.6.1.9.1.5 0 .9 0 1.3-.2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-invert.png
deleted file mode 100644 (file)
index 88cdd9d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-invert.svg
deleted file mode 100644 (file)
index cb63d50..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M21 7H9V5h12v2zM7 6c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm14 7H9v-2h12v2zM7 12c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm14 7H9v-2h12v2zM7 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-progressive.png
deleted file mode 100644 (file)
index 350c708..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-progressive.svg
deleted file mode 100644 (file)
index 0417a94..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M21 7H9V5h12v2zM7 6c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm14 7H9v-2h12v2zM7 12c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm14 7H9v-2h12v2zM7 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr.png
deleted file mode 100644 (file)
index 7796dd1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr.svg
deleted file mode 100644 (file)
index 5f0b15f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M21 7H9V5h12v2zM7 6c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm14 7H9v-2h12v2zM7 12c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm14 7H9v-2h12v2zM7 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-invert.png
deleted file mode 100644 (file)
index 6aeed4c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-invert.svg
deleted file mode 100644 (file)
index 081fee4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M3 7h12V5H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 13h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 19h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-progressive.png
deleted file mode 100644 (file)
index 9a9e5ca..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-progressive.svg
deleted file mode 100644 (file)
index c8610c9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M3 7h12V5H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 13h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 19h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl.png
deleted file mode 100644 (file)
index 2c727b1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl.svg
deleted file mode 100644 (file)
index c9c94eb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M3 7h12V5H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 13h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 19h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-invert.png
deleted file mode 100644 (file)
index 13810b2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-invert.svg
deleted file mode 100644 (file)
index c752585..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M21 7H8V5h13v2zm0 6H8v-2h13v2zm0 6H8v-2h13v2zM4 4h2v4H5V5H4zm-1 6V9h3v3H4v1h2v1H3v-3h2v-1zm3 10H3v-1h2v-1H4v-1h1v-1H3v-1h3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-progressive.png
deleted file mode 100644 (file)
index bf3c311..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-progressive.svg
deleted file mode 100644 (file)
index 150723f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M21 7H8V5h13v2zm0 6H8v-2h13v2zm0 6H8v-2h13v2zM4 4h2v4H5V5H4zm-1 6V9h3v3H4v1h2v1H3v-3h2v-1zm3 10H3v-1h2v-1H4v-1h1v-1H3v-1h3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr.png
deleted file mode 100644 (file)
index 631c266..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr.svg
deleted file mode 100644 (file)
index 8e849a7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M21 7H8V5h13v2zm0 6H8v-2h13v2zm0 6H8v-2h13v2zM4 4h2v4H5V5H4zm-1 6V9h3v3H4v1h2v1H3v-3h2v-1zm3 10H3v-1h2v-1H4v-1h1v-1H3v-1h3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-invert.png
deleted file mode 100644 (file)
index 9b2e821..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-invert.svg
deleted file mode 100644 (file)
index 493654d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M3 7h13V5H3zm0 6h13v-2H3zm0 6h13v-2H3zM18 4h2v4h-1V5h-1zm0 6V9h3v3h-2v1h2v1h-3v-3h2v-1zm3 10h-3v-1h2v-1h-1v-1h1v-1h-2v-1h3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-progressive.png
deleted file mode 100644 (file)
index 7e1df5d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-progressive.svg
deleted file mode 100644 (file)
index 469f949..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M3 7h13V5H3zm0 6h13v-2H3zm0 6h13v-2H3zM18 4h2v4h-1V5h-1zm0 6V9h3v3h-2v1h2v1h-3v-3h2v-1zm3 10h-3v-1h2v-1h-1v-1h1v-1h-2v-1h3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl.png
deleted file mode 100644 (file)
index 2c3b9d0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl.svg
deleted file mode 100644 (file)
index 9ec4801..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M3 7h13V5H3zm0 6h13v-2H3zm0 6h13v-2H3zM18 4h2v4h-1V5h-1zm0 6V9h3v3h-2v1h2v1h-3v-3h2v-1zm3 10h-3v-1h2v-1h-1v-1h1v-1h-2v-1h3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-destructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-destructive.png
deleted file mode 100644 (file)
index e16f042..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-destructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-destructive.svg
deleted file mode 100644 (file)
index 9e4aee0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
-    <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-invert.png
deleted file mode 100644 (file)
index a81a2a1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-invert.svg
deleted file mode 100644 (file)
index 7e11b41..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-progressive.png
deleted file mode 100644 (file)
index 181c0cb..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-progressive.svg
deleted file mode 100644 (file)
index a90a981..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr.png
deleted file mode 100644 (file)
index a87541f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr.svg
deleted file mode 100644 (file)
index a18b2c4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-destructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-destructive.png
deleted file mode 100644 (file)
index 29cd2b5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-destructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-destructive.svg
deleted file mode 100644 (file)
index 1eea0ed..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
-    <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-invert.png
deleted file mode 100644 (file)
index ab62257..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-invert.svg
deleted file mode 100644 (file)
index 9396317..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-progressive.png
deleted file mode 100644 (file)
index d17e790..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-progressive.svg
deleted file mode 100644 (file)
index 6d2fa9c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl.png
deleted file mode 100644 (file)
index 55f2d22..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl.svg
deleted file mode 100644 (file)
index 6c4a3c5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-invert.png
deleted file mode 100644 (file)
index fb1bb0c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-invert.svg
deleted file mode 100644 (file)
index da6a634..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-progressive.png
deleted file mode 100644 (file)
index 8ede173..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-progressive.svg
deleted file mode 100644 (file)
index bdf23f4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr.png
deleted file mode 100644 (file)
index 18f82eb..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr.svg
deleted file mode 100644 (file)
index f2be068..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-invert.png
deleted file mode 100644 (file)
index dcd2f15..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-invert.svg
deleted file mode 100644 (file)
index ea35803..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-progressive.png
deleted file mode 100644 (file)
index 642db7d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-progressive.svg
deleted file mode 100644 (file)
index 403bfc9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl.png
deleted file mode 100644 (file)
index 0ffb723..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl.svg
deleted file mode 100644 (file)
index 5f5ebb9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-invert.png
deleted file mode 100644 (file)
index 7f04a80..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-invert.svg
deleted file mode 100644 (file)
index 6d95c87..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M12 6c-3.9 0-7 3.1-7 7s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm0 13c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm-1.7-4.6c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5zm4 0c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-progressive.png
deleted file mode 100644 (file)
index 2e37da7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-progressive.svg
deleted file mode 100644 (file)
index ee16220..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 6c-3.9 0-7 3.1-7 7s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm0 13c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm-1.7-4.6c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5zm4 0c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc.png
deleted file mode 100644 (file)
index 80ef2a6..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc.svg
deleted file mode 100644 (file)
index 00af35d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 6c-3.9 0-7 3.1-7 7s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm0 13c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm-1.7-4.6c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5zm4 0c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-invert.png
deleted file mode 100644 (file)
index 0f8d9a6..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-invert.svg
deleted file mode 100644 (file)
index 27513cc..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M15.4 7.8c-2-.9-2.3-2.5-2.4-2.8.1.1 2 1 2 1l-3-5-3 5 2-1s0 .8.6 2.1c.8 1.5 2.2 2.2 2.2 2.2s1.6.7 2.2 1.3l-.7.7-.5-.5-.4 1.8 1.8-.4-.5-.5.7-.7c.9 1 1.5 2.3 1.6 3.8h-1V14l-1.5 1 1.5 1v-.8h1c-.1 1.5-.6 2.8-1.6 3.8l-.7-.7.5-.5-1.8-.4.4 1.8.5-.5.7.7c-1 .9-2.3 1.5-3.8 1.6v-1h.8l-1-1.5-1 1.5h.8v1c-1.5-.1-2.8-.6-3.8-1.6l.7-.7.5.5.4-1.8-1.8.4.5.5-.7.7c-.9-1-1.5-2.3-1.6-3.8h1v.8l1.5-1L7 14v.8H6c.1-1.5.6-2.8 1.6-3.8l.7.7-.5.5 1.8.4-.4-1.8-.5.5-.7-.7-1.5-1.4A7.99 7.99 0 0 0 4 15c0 4.4 3.6 8 8 8s8-3.6 8-8c0-3.2-1.9-5.9-4.6-7.2z"/>
-    <circle cx="12" cy="15" r="3"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-progressive.png
deleted file mode 100644 (file)
index 6aa047c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-progressive.svg
deleted file mode 100644 (file)
index bb82d1f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M15.4 7.8c-2-.9-2.3-2.5-2.4-2.8.1.1 2 1 2 1l-3-5-3 5 2-1s0 .8.6 2.1c.8 1.5 2.2 2.2 2.2 2.2s1.6.7 2.2 1.3l-.7.7-.5-.5-.4 1.8 1.8-.4-.5-.5.7-.7c.9 1 1.5 2.3 1.6 3.8h-1V14l-1.5 1 1.5 1v-.8h1c-.1 1.5-.6 2.8-1.6 3.8l-.7-.7.5-.5-1.8-.4.4 1.8.5-.5.7.7c-1 .9-2.3 1.5-3.8 1.6v-1h.8l-1-1.5-1 1.5h.8v1c-1.5-.1-2.8-.6-3.8-1.6l.7-.7.5.5.4-1.8-1.8.4.5.5-.7.7c-.9-1-1.5-2.3-1.6-3.8h1v.8l1.5-1L7 14v.8H6c.1-1.5.6-2.8 1.6-3.8l.7.7-.5.5 1.8.4-.4-1.8-.5.5-.7-.7-1.5-1.4A7.99 7.99 0 0 0 4 15c0 4.4 3.6 8 8 8s8-3.6 8-8c0-3.2-1.9-5.9-4.6-7.2z"/>
-    <circle cx="12" cy="15" r="3"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons.png
deleted file mode 100644 (file)
index c41c247..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons.svg
deleted file mode 100644 (file)
index f2492ce..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M15.4 7.8c-2-.9-2.3-2.5-2.4-2.8.1.1 2 1 2 1l-3-5-3 5 2-1s0 .8.6 2.1c.8 1.5 2.2 2.2 2.2 2.2s1.6.7 2.2 1.3l-.7.7-.5-.5-.4 1.8 1.8-.4-.5-.5.7-.7c.9 1 1.5 2.3 1.6 3.8h-1V14l-1.5 1 1.5 1v-.8h1c-.1 1.5-.6 2.8-1.6 3.8l-.7-.7.5-.5-1.8-.4.4 1.8.5-.5.7.7c-1 .9-2.3 1.5-3.8 1.6v-1h.8l-1-1.5-1 1.5h.8v1c-1.5-.1-2.8-.6-3.8-1.6l.7-.7.5.5.4-1.8-1.8.4.5.5-.7.7c-.9-1-1.5-2.3-1.6-3.8h1v.8l1.5-1L7 14v.8H6c.1-1.5.6-2.8 1.6-3.8l.7.7-.5.5 1.8.4-.4-1.8-.5.5-.7-.7-1.5-1.4A7.99 7.99 0 0 0 4 15c0 4.4 3.6 8 8 8s8-3.6 8-8c0-3.2-1.9-5.9-4.6-7.2z"/>
-    <circle cx="12" cy="15" r="3"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-invert.png
deleted file mode 100644 (file)
index 0963538..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-invert.svg
deleted file mode 100644 (file)
index 9c4a955..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M15.3 14.7C16.1 10.9 14.7 4 12 4c-2.7 0-4.2 6.7-3.4 10.5L7 18h2.7l.3 1h4c.2-.3.1-.5.3-1H17l-1.7-3.3zM12 10c-.8 0-1.5-.7-1.5-1.5S11.2 7 12 7s1.5.7 1.5 1.5S12.8 10 12 10zm2 10c0 1.1-2 2-2 2s-2-.9-2-2"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-progressive.png
deleted file mode 100644 (file)
index 6afb2bd..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-progressive.svg
deleted file mode 100644 (file)
index 594cdfb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M15.3 14.7C16.1 10.9 14.7 4 12 4c-2.7 0-4.2 6.7-3.4 10.5L7 18h2.7l.3 1h4c.2-.3.1-.5.3-1H17l-1.7-3.3zM12 10c-.8 0-1.5-.7-1.5-1.5S11.2 7 12 7s1.5.7 1.5 1.5S12.8 10 12 10zm2 10c0 1.1-2 2-2 2s-2-.9-2-2"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery.png
deleted file mode 100644 (file)
index 6d3c067..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery.svg
deleted file mode 100644 (file)
index c3f99d6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M15.3 14.7C16.1 10.9 14.7 4 12 4c-2.7 0-4.2 6.7-3.4 10.5L7 18h2.7l.3 1h4c.2-.3.1-.5.3-1H17l-1.7-3.3zM12 10c-.8 0-1.5-.7-1.5-1.5S11.2 7 12 7s1.5.7 1.5 1.5S12.8 10 12 10zm2 10c0 1.1-2 2-2 2s-2-.9-2-2"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-invert.png
deleted file mode 100644 (file)
index 9d576d0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-invert.svg
deleted file mode 100644 (file)
index fb304f6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M22.3 6.3c0 .2 0 .3-.1.3-.7.1-1.2.5-1.6 1.1-.1.2-.2.4-.3.7l-4.6 10.1c-.1.2-.2.3-.2.3s-.1.1-.2.1c-.2 0-.4-.1-.5-.4L12.2 13l-2.8 5.5c-.1.3-.3.4-.5.4s-.4-.1-.5-.4L4.1 8.4c-.3-.8-.6-1.2-.8-1.4-.2-.2-.5-.3-1-.4-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h4.3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.6.1-1 .2-1.1.4-.1.2 0 .6.3 1.2l3.6 8.2h.1l2.2-4.4L10 8.4c-.3-.7-.6-1.2-.8-1.4s-.5-.3-.9-.4c-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h3.6c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.4.1-.6.2-.6.4s.1.6.4 1.2l1 1.9 1-1.9c.3-.6.5-.9.5-1.1 0-.2 0-.3-.1-.4-.1-.1-.3-.1-.5-.1l-.1-.3c0-.2 0-.3.1-.3h3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.5.1-.8.2-1.1.5-.3.3-.6.7-.8 1.3l-1.3 2.8 2.5 5.2h.1l3.7-8.1c.3-.5.3-.9.2-1.2-.1-.3-.5-.4-1.1-.5-.1-.1-.1-.2-.1-.3s0-.3.1-.3h3.7c-.2.1-.2.2-.2.3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-progressive.png
deleted file mode 100644 (file)
index bc141ed..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-progressive.svg
deleted file mode 100644 (file)
index 4c7864b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M22.3 6.3c0 .2 0 .3-.1.3-.7.1-1.2.5-1.6 1.1-.1.2-.2.4-.3.7l-4.6 10.1c-.1.2-.2.3-.2.3s-.1.1-.2.1c-.2 0-.4-.1-.5-.4L12.2 13l-2.8 5.5c-.1.3-.3.4-.5.4s-.4-.1-.5-.4L4.1 8.4c-.3-.8-.6-1.2-.8-1.4-.2-.2-.5-.3-1-.4-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h4.3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.6.1-1 .2-1.1.4-.1.2 0 .6.3 1.2l3.6 8.2h.1l2.2-4.4L10 8.4c-.3-.7-.6-1.2-.8-1.4s-.5-.3-.9-.4c-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h3.6c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.4.1-.6.2-.6.4s.1.6.4 1.2l1 1.9 1-1.9c.3-.6.5-.9.5-1.1 0-.2 0-.3-.1-.4-.1-.1-.3-.1-.5-.1l-.1-.3c0-.2 0-.3.1-.3h3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.5.1-.8.2-1.1.5-.3.3-.6.7-.8 1.3l-1.3 2.8 2.5 5.2h.1l3.7-8.1c.3-.5.3-.9.2-1.2-.1-.3-.5-.4-1.1-.5-.1-.1-.1-.2-.1-.3s0-.3.1-.3h3.7c-.2.1-.2.2-.2.3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia.png
deleted file mode 100644 (file)
index f1d8330..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia.svg
deleted file mode 100644 (file)
index 9208f3b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M22.3 6.3c0 .2 0 .3-.1.3-.7.1-1.2.5-1.6 1.1-.1.2-.2.4-.3.7l-4.6 10.1c-.1.2-.2.3-.2.3s-.1.1-.2.1c-.2 0-.4-.1-.5-.4L12.2 13l-2.8 5.5c-.1.3-.3.4-.5.4s-.4-.1-.5-.4L4.1 8.4c-.3-.8-.6-1.2-.8-1.4-.2-.2-.5-.3-1-.4-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h4.3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.6.1-1 .2-1.1.4-.1.2 0 .6.3 1.2l3.6 8.2h.1l2.2-4.4L10 8.4c-.3-.7-.6-1.2-.8-1.4s-.5-.3-.9-.4c-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h3.6c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.4.1-.6.2-.6.4s.1.6.4 1.2l1 1.9 1-1.9c.3-.6.5-.9.5-1.1 0-.2 0-.3-.1-.4-.1-.1-.3-.1-.5-.1l-.1-.3c0-.2 0-.3.1-.3h3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.5.1-.8.2-1.1.5-.3.3-.6.7-.8 1.3l-1.3 2.8 2.5 5.2h.1l3.7-8.1c.3-.5.3-.9.2-1.2-.1-.3-.5-.4-1.1-.5-.1-.1-.1-.2-.1-.3s0-.3.1-.3h3.7c-.2.1-.2.2-.2.3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-invert.png
deleted file mode 100644 (file)
index 6e0cd01..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-invert.svg
deleted file mode 100644 (file)
index 59bb24e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M15 6L9 4 3 6v15l6-2 6 2 6-2V4l-6 2zM8.7 18.1L4 19.6V6.7L9 5v12.9l-.3.2zm11.3.2L15 20V7.1l.3-.1L20 5.4v12.9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-progressive.png
deleted file mode 100644 (file)
index e856237..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-progressive.svg
deleted file mode 100644 (file)
index bebac9c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M15 6L9 4 3 6v15l6-2 6 2 6-2V4l-6 2zM8.7 18.1L4 19.6V6.7L9 5v12.9l-.3.2zm11.3.2L15 20V7.1l.3-.1L20 5.4v12.9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr.png
deleted file mode 100644 (file)
index 43a97d2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr.svg
deleted file mode 100644 (file)
index 0e5a52e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M15 6L9 4 3 6v15l6-2 6 2 6-2V4l-6 2zM8.7 18.1L4 19.6V6.7L9 5v12.9l-.3.2zm11.3.2L15 20V7.1l.3-.1L20 5.4v12.9z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-invert.png
deleted file mode 100644 (file)
index 4993f57..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-invert.svg
deleted file mode 100644 (file)
index 06c3d10..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M9 6l6-2 6 2v15l-6-2-6 2-6-2V4l6 2zm6.3 12.1l4.7 1.5V6.7L15 5v12.9l.3.2zM4 18.3L9 20V7.1L8.7 7 4 5.4v12.9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-progressive.png
deleted file mode 100644 (file)
index 6dbb6c5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-progressive.svg
deleted file mode 100644 (file)
index a969ee6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M9 6l6-2 6 2v15l-6-2-6 2-6-2V4l6 2zm6.3 12.1l4.7 1.5V6.7L15 5v12.9l.3.2zM4 18.3L9 20V7.1L8.7 7 4 5.4v12.9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl.png
deleted file mode 100644 (file)
index 36e9cad..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl.svg
deleted file mode 100644 (file)
index 835781d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M9 6l6-2 6 2v15l-6-2-6 2-6-2V4l6 2zm6.3 12.1l4.7 1.5V6.7L15 5v12.9l.3.2zM4 18.3L9 20V7.1L8.7 7 4 5.4v12.9z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-invert.png
deleted file mode 100644 (file)
index 441fe2d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-invert.svg
deleted file mode 100644 (file)
index a8010f9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M19 12c0-3.9-3.1-7-7-7s-7 3.1-7 7c0 1.4.4 2.6 1.1 3.7L12 23l5.9-7.3c.7-1.1 1.1-2.3 1.1-3.7zm-7 3c-1.6 0-3-1.4-3-3s1.4-3 3-3 3 1.4 3 3-1.4 3-3 3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-progressive.png
deleted file mode 100644 (file)
index 2e7107d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-progressive.svg
deleted file mode 100644 (file)
index 717b91c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M19 12c0-3.9-3.1-7-7-7s-7 3.1-7 7c0 1.4.4 2.6 1.1 3.7L12 23l5.9-7.3c.7-1.1 1.1-2.3 1.1-3.7zm-7 3c-1.6 0-3-1.4-3-3s1.4-3 3-3 3 1.4 3 3-1.4 3-3 3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin.png
deleted file mode 100644 (file)
index ddb1c5c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin.svg
deleted file mode 100644 (file)
index 26fb6b7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M19 12c0-3.9-3.1-7-7-7s-7 3.1-7 7c0 1.4.4 2.6 1.1 3.7L12 23l5.9-7.3c.7-1.1 1.1-2.3 1.1-3.7zm-7 3c-1.6 0-3-1.4-3-3s1.4-3 3-3 3 1.4 3 3-1.4 3-3 3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-invert.png
deleted file mode 100644 (file)
index ee5de90..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-invert.svg
deleted file mode 100644 (file)
index eb5e624..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-  <path d="M24 4h-4V0h-2v4h-4v2h4v4h2V6h4V4z"/>
-  <path d="M18.9 11c.1.3.1.7.1 1 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-3.9 3.1-7 7-7 .3 0 .7 0 1 .1V7h3.9l.1.1V11h1.9zM15 12c0-1.6-1.4-3-3-3s-3 1.4-3 3 1.4 3 3 3 3-1.4 3-3z"/>
-</g></svg>
-
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-progressive.png
deleted file mode 100644 (file)
index 036a31d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-progressive.svg
deleted file mode 100644 (file)
index 3e0ea6c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-  <path d="M24 4h-4V0h-2v4h-4v2h4v4h2V6h4V4z"/>
-  <path d="M18.9 11c.1.3.1.7.1 1 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-3.9 3.1-7 7-7 .3 0 .7 0 1 .1V7h3.9l.1.1V11h1.9zM15 12c0-1.6-1.4-3-3-3s-3 1.4-3 3 1.4 3 3 3 3-1.4 3-3z"/>
-</g></svg>
-
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr.png
deleted file mode 100644 (file)
index d8c1691..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr.svg
deleted file mode 100644 (file)
index 9d71335..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-  <path d="M24 4h-4V0h-2v4h-4v2h4v4h2V6h4V4z"/>
-  <path d="M18.9 11c.1.3.1.7.1 1 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-3.9 3.1-7 7-7 .3 0 .7 0 1 .1V7h3.9l.1.1V11h1.9zM15 12c0-1.6-1.4-3-3-3s-3 1.4-3 3 1.4 3 3 3 3-1.4 3-3z"/>
-</svg>
-
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-invert.png
deleted file mode 100644 (file)
index 934d5cc..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-invert.svg
deleted file mode 100644 (file)
index a7a14e9..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M0 4h4V0h2v4h4v2H6v4H4V6H0"/>
-    <path d="M6 11h1V7.1l.1-.1H11V5.1c.3-.1.7-.1 1-.1 3.9 0 7 3.1 7 7 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-.3 0-.7.1-1H6zm6 4c1.65 0 3-1.35 3-3s-1.35-3-3-3-3 1.35-3 3 1.35 3 3 3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-progressive.png
deleted file mode 100644 (file)
index be7c51e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-progressive.svg
deleted file mode 100644 (file)
index 9bcc436..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M0 4h4V0h2v4h4v2H6v4H4V6H0"/>
-    <path d="M6 11h1V7.1l.1-.1H11V5.1c.3-.1.7-.1 1-.1 3.9 0 7 3.1 7 7 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-.3 0-.7.1-1H6zm6 4c1.65 0 3-1.35 3-3s-1.35-3-3-3-3 1.35-3 3 1.35 3 3 3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl.png
deleted file mode 100644 (file)
index 7cc1f74..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl.svg
deleted file mode 100644 (file)
index 03c484a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M0 4h4V0h2v4h4v2H6v4H4V6H0"/>
-    <path d="M6 11h1V7.1l.1-.1H11V5.1c.3-.1.7-.1 1-.1 3.9 0 7 3.1 7 7 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-.3 0-.7.1-1H6zm6 4c1.65 0 3-1.35 3-3s-1.35-3-3-3-3 1.35-3 3 1.35 3 3 3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-invert.png
deleted file mode 100644 (file)
index 075f84e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-invert.svg
deleted file mode 100644 (file)
index 17d3645..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M15 9l.7-1.8c.9.4 1.8.7 2.4.9l-.6 1.7v.2L15 9zm-4.3-1.9l.8-1.8c1.2.5 2.6 1.1 3 1.4l-.8 1.8-3-1.4zm-5.9-1c-.8 0-1.4.2-2 .6L1.7 5c.9-.6 1.9-.9 3.1-.9v2zm-4.3.7l1.8.8c-.3.7-.3 1.3-.1 1.8l-1.9.7C0 8.9 0 7.8.5 6.8zm4.2 5.4l-1.3 1.5c-1-1-1.7-1.6-2-2l1.5-1.3c.7.8 1.3 1.4 1.8 1.8zm7.3 4.3c0 1.9-1.6 3.5-3.5 3.5S5 18.4 5 16.5 6.6 13 8.5 13s3.5 1.6 3.5 3.5zM24 8l-1-1-1.5 1.5L20 7l-1 1 1.5 1.5L19 11l1 1 1.5-1.5L23 12l1-1-1.5-1.5z"/>
-    <circle cx="8" cy="5" r="2"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-progressive.png
deleted file mode 100644 (file)
index 2b26e15..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr-progressive.svg
deleted file mode 100644 (file)
index 2b49b99..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M15 9l.7-1.8c.9.4 1.8.7 2.4.9l-.6 1.7v.2L15 9zm-4.3-1.9l.8-1.8c1.2.5 2.6 1.1 3 1.4l-.8 1.8-3-1.4zm-5.9-1c-.8 0-1.4.2-2 .6L1.7 5c.9-.6 1.9-.9 3.1-.9v2zm-4.3.7l1.8.8c-.3.7-.3 1.3-.1 1.8l-1.9.7C0 8.9 0 7.8.5 6.8zm4.2 5.4l-1.3 1.5c-1-1-1.7-1.6-2-2l1.5-1.3c.7.8 1.3 1.4 1.8 1.8zm7.3 4.3c0 1.9-1.6 3.5-3.5 3.5S5 18.4 5 16.5 6.6 13 8.5 13s3.5 1.6 3.5 3.5zM24 8l-1-1-1.5 1.5L20 7l-1 1 1.5 1.5L19 11l1 1 1.5-1.5L23 12l1-1-1.5-1.5z"/>
-    <circle cx="8" cy="5" r="2"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr.png
deleted file mode 100644 (file)
index 331fd59..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-ltr.svg
deleted file mode 100644 (file)
index cb073b9..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M15 9l.7-1.8c.9.4 1.8.7 2.4.9l-.6 1.7v.2L15 9zm-4.3-1.9l.8-1.8c1.2.5 2.6 1.1 3 1.4l-.8 1.8-3-1.4zm-5.9-1c-.8 0-1.4.2-2 .6L1.7 5c.9-.6 1.9-.9 3.1-.9v2zm-4.3.7l1.8.8c-.3.7-.3 1.3-.1 1.8l-1.9.7C0 8.9 0 7.8.5 6.8zm4.2 5.4l-1.3 1.5c-1-1-1.7-1.6-2-2l1.5-1.3c.7.8 1.3 1.4 1.8 1.8zm7.3 4.3c0 1.9-1.6 3.5-3.5 3.5S5 18.4 5 16.5 6.6 13 8.5 13s3.5 1.6 3.5 3.5zM24 8l-1-1-1.5 1.5L20 7l-1 1 1.5 1.5L19 11l1 1 1.5-1.5L23 12l1-1-1.5-1.5z"/>
-    <circle cx="8" cy="5" r="2"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-invert.png
deleted file mode 100644 (file)
index 75c8dcf..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-invert.svg
deleted file mode 100644 (file)
index fbb9cab..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M9.095 9l-.7-1.8c-.9.4-1.8.7-2.4.9l.6 1.7v.2l2.5-1zm4.3-1.9l-.8-1.8c-1.2.5-2.6 1.1-3 1.4l.8 1.8 3-1.4zm5.9-1c.8 0 1.4.2 2 .6l1.1-1.7c-.9-.6-1.9-.9-3.1-.9v2zm4.3.7l-1.8.8c.3.7.3 1.3.1 1.8l1.9.7c.3-1.2.3-2.3-.2-3.3zm-4.2 5.4l1.3 1.5c1-1 1.7-1.6 2-2l-1.5-1.3c-.7.8-1.3 1.4-1.8 1.8zm-7.3 4.3c0 1.9 1.6 3.5 3.5 3.5s3.5-1.6 3.5-3.5-1.6-3.5-3.5-3.5-3.5 1.6-3.5 3.5zM.095 8l1-1 1.5 1.5 1.5-1.5 1 1-1.5 1.5 1.5 1.5-1 1-1.5-1.5-1.5 1.5-1-1 1.5-1.5z"/>
-    <circle cx="8" cy="5" r="2" transform="matrix(-1 0 0 1 24.095 0)"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-progressive.png
deleted file mode 100644 (file)
index fc0b2d9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl-progressive.svg
deleted file mode 100644 (file)
index a2f62ff..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M9.095 9l-.7-1.8c-.9.4-1.8.7-2.4.9l.6 1.7v.2l2.5-1zm4.3-1.9l-.8-1.8c-1.2.5-2.6 1.1-3 1.4l.8 1.8 3-1.4zm5.9-1c.8 0 1.4.2 2 .6l1.1-1.7c-.9-.6-1.9-.9-3.1-.9v2zm4.3.7l-1.8.8c.3.7.3 1.3.1 1.8l1.9.7c.3-1.2.3-2.3-.2-3.3zm-4.2 5.4l1.3 1.5c1-1 1.7-1.6 2-2l-1.5-1.3c-.7.8-1.3 1.4-1.8 1.8zm-7.3 4.3c0 1.9 1.6 3.5 3.5 3.5s3.5-1.6 3.5-3.5-1.6-3.5-3.5-3.5-3.5 1.6-3.5 3.5zM.095 8l1-1 1.5 1.5 1.5-1.5 1 1-1.5 1.5 1.5 1.5-1 1-1.5-1.5-1.5 1.5-1-1 1.5-1.5z"/>
-    <circle cx="8" cy="5" r="2" transform="matrix(-1 0 0 1 24.095 0)"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl.png
deleted file mode 100644 (file)
index 62f1fe9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapTrail-rtl.svg
deleted file mode 100644 (file)
index e8b1a08..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M9.095 9l-.7-1.8c-.9.4-1.8.7-2.4.9l.6 1.7v.2l2.5-1zm4.3-1.9l-.8-1.8c-1.2.5-2.6 1.1-3 1.4l.8 1.8 3-1.4zm5.9-1c.8 0 1.4.2 2 .6l1.1-1.7c-.9-.6-1.9-.9-3.1-.9v2zm4.3.7l-1.8.8c.3.7.3 1.3.1 1.8l1.9.7c.3-1.2.3-2.3-.2-3.3zm-4.2 5.4l1.3 1.5c1-1 1.7-1.6 2-2l-1.5-1.3c-.7.8-1.3 1.4-1.8 1.8zm-7.3 4.3c0 1.9 1.6 3.5 3.5 3.5s3.5-1.6 3.5-3.5-1.6-3.5-3.5-3.5-3.5 1.6-3.5 3.5zM.095 8l1-1 1.5 1.5 1.5-1.5 1 1-1.5 1.5 1.5 1.5-1 1-1.5-1.5-1.5 1.5-1-1 1.5-1.5z"/>
-    <circle cx="8" cy="5" r="2" transform="matrix(-1 0 0 1 24.095 0)"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-invert.png
deleted file mode 100644 (file)
index 0f64c02..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-invert.svg
deleted file mode 100644 (file)
index cb54763..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="markup">
-        <path id="left-bracket" d="M9.665 6.32l-4.259 4.274-1.406 1.406 1.406 1.406 4.259 4.274 1.406-1.438-4.259-4.243 4.259-4.243z"/>
-        <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" xlink:href="#left-bracket"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-progressive.png
deleted file mode 100644 (file)
index 47ac730..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-progressive.svg
deleted file mode 100644 (file)
index af2f0ff..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="markup">
-        <path id="left-bracket" d="M9.665 6.32l-4.259 4.274-1.406 1.406 1.406 1.406 4.259 4.274 1.406-1.438-4.259-4.243 4.259-4.243z"/>
-        <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" xlink:href="#left-bracket"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup.png
deleted file mode 100644 (file)
index c78f418..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup.svg
deleted file mode 100644 (file)
index 7f8c253..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
-    <g id="markup">
-        <path id="left-bracket" d="M9.665 6.32l-4.259 4.274-1.406 1.406 1.406 1.406 4.259 4.274 1.406-1.438-4.259-4.243 4.259-4.243z"/>
-        <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" xlink:href="#left-bracket"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.png
deleted file mode 100644 (file)
index b61db4a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.svg
deleted file mode 100644 (file)
index e87b9bf..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="menu">
-        <path id="lines" d="M6 15h12a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1zm-1-4v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1zm0-5v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-progressive.png
deleted file mode 100644 (file)
index f395e3a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-progressive.svg
deleted file mode 100644 (file)
index 6d9edd1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="menu">
-        <path id="lines" d="M6 15h12a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1zm-1-4v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1zm0-5v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu.png
deleted file mode 100644 (file)
index d2278db..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu.svg
deleted file mode 100644 (file)
index a33c21c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="menu">
-        <path id="lines" d="M6 15h12a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1zm-1-4v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1zm0-5v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-invert.png
deleted file mode 100644 (file)
index 33a9800..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-invert.svg
deleted file mode 100644 (file)
index a3aae21..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M21 9c0-1.7-1.3-3-3-3H3v3l9 4 9-4zM3 11v6c0 1.7 1.3 3 3 3h15v-9l-9 4-9-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-progressive.png
deleted file mode 100644 (file)
index fb11ff2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-progressive.svg
deleted file mode 100644 (file)
index 36bfd0c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M21 9c0-1.7-1.3-3-3-3H3v3l9 4 9-4zM3 11v6c0 1.7 1.3 3 3 3h15v-9l-9 4-9-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr.png
deleted file mode 100644 (file)
index 2171c1f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr.svg
deleted file mode 100644 (file)
index 842d312..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M21 9c0-1.7-1.3-3-3-3H3v3l9 4 9-4zM3 11v6c0 1.7 1.3 3 3 3h15v-9l-9 4-9-4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-invert.png
deleted file mode 100644 (file)
index c2d617b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-invert.svg
deleted file mode 100644 (file)
index 0a52eec..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M3 9c0-1.7 1.3-3 3-3h15v3l-9 4-9-4zm18 2v6c0 1.7-1.3 3-3 3H3v-9l9 4 9-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-progressive.png
deleted file mode 100644 (file)
index a6975d7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-progressive.svg
deleted file mode 100644 (file)
index 0beb5ee..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M3 9c0-1.7 1.3-3 3-3h15v3l-9 4-9-4zm18 2v6c0 1.7-1.3 3-3 3H3v-9l9 4 9-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl.png
deleted file mode 100644 (file)
index fba7920..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl.svg
deleted file mode 100644 (file)
index 0a22c75..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M3 9c0-1.7 1.3-3 3-3h15v3l-9 4-9-4zm18 2v6c0 1.7-1.3 3-3 3H3v-9l9 4 9-4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.png
deleted file mode 100644 (file)
index 38bcc0a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.svg
deleted file mode 100644 (file)
index 7ecd512..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
-    <path d="M19.1 17.5c-3.3 1.4-7.1-.2-8.5-3.5-1.4-3.3.2-7.1 3.5-8.5.2-.1.5-.2.7-.3-1.6-.4-3.2-.3-4.8.4C6 7.3 4 12 5.7 16c1.7 4.1 6.4 6 10.5 4.3 1.7-.7 3-1.9 3.8-3.4-.3.3-.6.4-.9.6z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon.png
deleted file mode 100644 (file)
index 7aef8bd..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon.svg
deleted file mode 100644 (file)
index bdbf234..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M19.1 17.5c-3.3 1.4-7.1-.2-8.5-3.5-1.4-3.3.2-7.1 3.5-8.5.2-.1.5-.2.7-.3-1.6-.4-3.2-.3-4.8.4C6 7.3 4 12 5.7 16c1.7 4.1 6.4 6 10.5 4.3 1.7-.7 3-1.9 3.8-3.4-.3.3-.6.4-.9.6z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-invert.png
deleted file mode 100644 (file)
index 6d7e5ec..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-invert.svg
deleted file mode 100644 (file)
index 2da24a5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M20 11l-4-3v2h-3V7h2l-3-4-3 4h2v3H8V8l-4 3 4 3v-2h3v3H9l3 4 3-4h-2v-3h3v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-invert.png
deleted file mode 100644 (file)
index fe5f614..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-invert.svg
deleted file mode 100644 (file)
index 468ad1b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="move-ltr">
-        <path id="arrow" d="M8.935 7.18l5.302 5.303-5.302 5.303L10.35 19.2l6.715-6.717-6.716-6.716z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-progressive.png
deleted file mode 100644 (file)
index 5f37c25..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-progressive.svg
deleted file mode 100644 (file)
index dd47881..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="move-ltr">
-        <path id="arrow" d="M8.935 7.18l5.302 5.303-5.302 5.303L10.35 19.2l6.715-6.717-6.716-6.716z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr.png
deleted file mode 100644 (file)
index b57d8da..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr.svg
deleted file mode 100644 (file)
index 670d84d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="move-ltr">
-        <path id="arrow" d="M8.935 7.18l5.302 5.303-5.302 5.303L10.35 19.2l6.715-6.717-6.716-6.716z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-progressive.png
deleted file mode 100644 (file)
index c2d6a84..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-progressive.svg
deleted file mode 100644 (file)
index 6274f6f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M20 11l-4-3v2h-3V7h2l-3-4-3 4h2v3H8V8l-4 3 4 3v-2h3v3H9l3 4 3-4h-2v-3h3v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.png
deleted file mode 100644 (file)
index cfca1e2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.svg
deleted file mode 100644 (file)
index 264f3b6..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="move-rtl">
-        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.72 6.714 6.71z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-progressive.png
deleted file mode 100644 (file)
index 3dbedd5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-progressive.svg
deleted file mode 100644 (file)
index 32aee25..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="move-rtl">
-        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.72 6.714 6.71z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl.png
deleted file mode 100644 (file)
index e401a8f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl.svg
deleted file mode 100644 (file)
index ce5b444..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="move-rtl">
-        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.72 6.714 6.71z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move.png
deleted file mode 100644 (file)
index 7071499..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move.svg
deleted file mode 100644 (file)
index b04ecdd..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M20 11l-4-3v2h-3V7h2l-3-4-3 4h2v3H8V8l-4 3 4 3v-2h3v3H9l3 4 3-4h-2v-3h3v2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-invert.png
deleted file mode 100644 (file)
index 5e432b0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-invert.svg
deleted file mode 100644 (file)
index bc7fedc..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-progressive.png
deleted file mode 100644 (file)
index 26be088..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-progressive.svg
deleted file mode 100644 (file)
index 1ef309b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr.png
deleted file mode 100644 (file)
index 29563d8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr.svg
deleted file mode 100644 (file)
index 2d19a78..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-invert.png
deleted file mode 100644 (file)
index f9a742e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-invert.svg
deleted file mode 100644 (file)
index 41e0401..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-progressive.png
deleted file mode 100644 (file)
index 10e2735..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-progressive.svg
deleted file mode 100644 (file)
index a877db8..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl.png
deleted file mode 100644 (file)
index c49609f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl.svg
deleted file mode 100644 (file)
index 133442e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-invert.png
deleted file mode 100644 (file)
index 874ff29..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-invert.svg
deleted file mode 100644 (file)
index 6ec8972..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M17.8 5.7c-.5 0-.9.2-1.2.5s-.5.7-.5 1.2v4.3H11v-4l-6 5.5 6 5.5v-4h8v-9h-1.2z" id="line_return"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-progressive.png
deleted file mode 100644 (file)
index 67ec969..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-progressive.svg
deleted file mode 100644 (file)
index b0e6aaf..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M17.8 5.7c-.5 0-.9.2-1.2.5s-.5.7-.5 1.2v4.3H11v-4l-6 5.5 6 5.5v-4h8v-9h-1.2z" id="line_return"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr.png
deleted file mode 100644 (file)
index f41eb0c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr.svg
deleted file mode 100644 (file)
index a7e5b12..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M17.8 5.7c-.5 0-.9.2-1.2.5s-.5.7-.5 1.2v4.3H11v-4l-6 5.5 6 5.5v-4h8v-9h-1.2z" id="line_return"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-invert.png
deleted file mode 100644 (file)
index 99be840..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-invert.svg
deleted file mode 100644 (file)
index c919608..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M6.2 5.7c.5 0 .9.2 1.2.5.3.3.5.7.5 1.2v4.3H13v-4l6 5.5-6 5.5v-4H5v-9h1.2z" id="line_return"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-progressive.png
deleted file mode 100644 (file)
index 8e748e5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-progressive.svg
deleted file mode 100644 (file)
index 1547e82..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M6.2 5.7c.5 0 .9.2 1.2.5.3.3.5.7.5 1.2v4.3H13v-4l6 5.5-6 5.5v-4H5v-9h1.2z" id="line_return"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl.png
deleted file mode 100644 (file)
index 93c7e52..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl.svg
deleted file mode 100644 (file)
index 40752fa..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M6.2 5.7c.5 0 .9.2 1.2.5.3.3.5.7.5 1.2v4.3H13v-4l6 5.5-6 5.5v-4H5v-9h1.2z" id="line_return"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-invert.png
deleted file mode 100644 (file)
index 3f48ede..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-invert.svg
deleted file mode 100644 (file)
index 69b737a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M6 7v12c-.6 0-1-.4-1-1V9H4v9c0 1.1.9 2 2 2h15V7H6zm9 11H8v-1h7v1zm0-2H8v-1h7v1zm0-2H8v-1h7v1zm4 4h-3v-5h3v5zm0-7H8V9h11v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-progressive.png
deleted file mode 100644 (file)
index 182f316..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-progressive.svg
deleted file mode 100644 (file)
index df59aac..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M6 7v12c-.6 0-1-.4-1-1V9H4v9c0 1.1.9 2 2 2h15V7H6zm9 11H8v-1h7v1zm0-2H8v-1h7v1zm0-2H8v-1h7v1zm4 4h-3v-5h3v5zm0-7H8V9h11v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr.png
deleted file mode 100644 (file)
index ccd6474..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr.svg
deleted file mode 100644 (file)
index 4ff5856..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M6 7v12c-.6 0-1-.4-1-1V9H4v9c0 1.1.9 2 2 2h15V7H6zm9 11H8v-1h7v1zm0-2H8v-1h7v1zm0-2H8v-1h7v1zm4 4h-3v-5h3v5zm0-7H8V9h11v2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-invert.png
deleted file mode 100644 (file)
index 85cfa83..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-invert.svg
deleted file mode 100644 (file)
index 74fa337..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M19 7v12c.6 0 1-.4 1-1V9h1v9c0 1.1-.9 2-2 2H4V7h15zm-9 11h7v-1h-7v1zm0-2h7v-1h-7v1zm0-2h7v-1h-7v1zm-4 4h3v-5H6v5zm0-7h11V9H6v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-progressive.png
deleted file mode 100644 (file)
index 8a6d99c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-progressive.svg
deleted file mode 100644 (file)
index 5533c83..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M19 7v12c.6 0 1-.4 1-1V9h1v9c0 1.1-.9 2-2 2H4V7h15zm-9 11h7v-1h-7v1zm0-2h7v-1h-7v1zm0-2h7v-1h-7v1zm-4 4h3v-5H6v5zm0-7h11V9H6v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl.png
deleted file mode 100644 (file)
index b5df1df..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl.svg
deleted file mode 100644 (file)
index f9d4e55..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M19 7v12c.6 0 1-.4 1-1V9h1v9c0 1.1-.9 2-2 2H4V7h15zm-9 11h7v-1h-7v1zm0-2h7v-1h-7v1zm0-2h7v-1h-7v1zm-4 4h3v-5H6v5zm0-7h11V9H6v2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-invert.png
deleted file mode 100644 (file)
index a17092e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-invert.svg
deleted file mode 100644 (file)
index d4cad39..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M15 13l2 2V5h-3v2h1zM3 3L2 4l1 1v14h3v-2H5V7l2 2v10h3v-2H9v-6l6 6h-1v2h3l3 3 1-1-3-3zm7 4V5H7l2 2zm8-2v2h1v10l2 2V5z" id="noWikiText-rtl"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-progressive.png
deleted file mode 100644 (file)
index 2ac38b3..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-progressive.svg
deleted file mode 100644 (file)
index 3fb2dd9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M15 13l2 2V5h-3v2h1zM3 3L2 4l1 1v14h3v-2H5V7l2 2v10h3v-2H9v-6l6 6h-1v2h3l3 3 1-1-3-3zm7 4V5H7l2 2zm8-2v2h1v10l2 2V5z" id="noWikiText-rtl"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr.png
deleted file mode 100644 (file)
index 2623b84..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr.svg
deleted file mode 100644 (file)
index 2dfa2c7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M15 13l2 2V5h-3v2h1zM3 3L2 4l1 1v14h3v-2H5V7l2 2v10h3v-2H9v-6l6 6h-1v2h3l3 3 1-1-3-3zm7 4V5H7l2 2zm8-2v2h1v10l2 2V5z" id="noWikiText-rtl"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-invert.png
deleted file mode 100644 (file)
index 1f7ed87..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-invert.svg
deleted file mode 100644 (file)
index 346c582..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M9 13l-2 2V5h3v2H9zM21 3l1 1-1 1v14h-3v-2h1V7l-2 2v10h-3v-2h1v-6l-6 6h1v2H7l-3 3-1-1 3-3zm-7 4V5h3l-2 2zM6 5v2H5v10l-2 2V5z" id="noWikiText-rtl"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-progressive.png
deleted file mode 100644 (file)
index aba76c8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-progressive.svg
deleted file mode 100644 (file)
index 9915009..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M9 13l-2 2V5h3v2H9zM21 3l1 1-1 1v14h-3v-2h1V7l-2 2v10h-3v-2h1v-6l-6 6h1v2H7l-3 3-1-1 3-3zm-7 4V5h3l-2 2zM6 5v2H5v10l-2 2V5z" id="noWikiText-rtl"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl.png
deleted file mode 100644 (file)
index 4d0ce86..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl.svg
deleted file mode 100644 (file)
index 4f275fd..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M9 13l-2 2V5h3v2H9zM21 3l1 1-1 1v14h-3v-2h1V7l-2 2v10h-3v-2h1v-6l-6 6h1v2H7l-3 3-1-1 3-3zm-7 4V5h3l-2 2zM6 5v2H5v10l-2 2V5z" id="noWikiText-rtl"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.png
deleted file mode 100644 (file)
index de7e529..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.svg
deleted file mode 100644 (file)
index ca20b5a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
-    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright.png
deleted file mode 100644 (file)
index 5273b4c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright.svg
deleted file mode 100644 (file)
index af87ff9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-invert.png
deleted file mode 100644 (file)
index e18795b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-invert.svg
deleted file mode 100644 (file)
index a0f8ddc..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="svg3116"><g fill="#fff">
-    <path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="alert"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-progressive.png
deleted file mode 100644 (file)
index 52e8b87..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-progressive.svg
deleted file mode 100644 (file)
index d828121..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="svg3116"><g fill="#36c">
-    <path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="alert"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice.png
deleted file mode 100644 (file)
index 114020e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice.svg
deleted file mode 100644 (file)
index 8dc4fec..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="svg3116">
-    <path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="alert"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-invert.png
deleted file mode 100644 (file)
index b2dea7c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-invert.svg
deleted file mode 100644 (file)
index ffd31b2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="#fff">
-    <path d="M17.8 18.6H2.5l2.7-2.7V6h15.3v9.9c0 1.53-1.17 2.7-2.7 2.7zm-7.542-4.95c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-progressive.png
deleted file mode 100644 (file)
index dd7100e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-progressive.svg
deleted file mode 100644 (file)
index 7178cb4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="#36c">
-    <path d="M17.8 18.6H2.5l2.7-2.7V6h15.3v9.9c0 1.53-1.17 2.7-2.7 2.7zm-7.542-4.95c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr.png
deleted file mode 100644 (file)
index df49095..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr.svg
deleted file mode 100644 (file)
index 658809d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
-    <path d="M17.8 18.6H2.5l2.7-2.7V6h15.3v9.9c0 1.53-1.17 2.7-2.7 2.7zm-7.542-4.95c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-invert.png
deleted file mode 100644 (file)
index a3d6013..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-invert.svg
deleted file mode 100644 (file)
index 61e51ca..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="#fff">
-    <path d="M5.2 18.6h15.3l-2.7-2.7V6H2.5v9.9c0 1.53 1.17 2.7 2.7 2.7zm7.542-4.95c0 .405.135.675.405.945.27.27.607.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.607-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.608-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.332 1.332 0 0 0-.945-.405c-.337 0-.675.135-.945.405-.27.27-.405.608-.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-progressive.png
deleted file mode 100644 (file)
index 950fad5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-progressive.svg
deleted file mode 100644 (file)
index 6320f87..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="#36c">
-    <path d="M5.2 18.6h15.3l-2.7-2.7V6H2.5v9.9c0 1.53 1.17 2.7 2.7 2.7zm7.542-4.95c0 .405.135.675.405.945.27.27.607.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.607-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.608-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.332 1.332 0 0 0-.945-.405c-.337 0-.675.135-.945.405-.27.27-.405.608-.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl.png
deleted file mode 100644 (file)
index 3d7e9bd..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl.svg
deleted file mode 100644 (file)
index 648ce55..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
-    <path d="M5.2 18.6h15.3l-2.7-2.7V6H2.5v9.9c0 1.53 1.17 2.7 2.7 2.7zm7.542-4.95c0 .405.135.675.405.945.27.27.607.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.607-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.608-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.332 1.332 0 0 0-.945-.405c-.337 0-.675.135-.945.405-.27.27-.405.608-.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-invert.png
deleted file mode 100644 (file)
index 6bb2f99..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-invert.svg
deleted file mode 100644 (file)
index efdbe9a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 12l5 4V8l-5 4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-progressive.png
deleted file mode 100644 (file)
index 00e8a09..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-progressive.svg
deleted file mode 100644 (file)
index 29e5f42..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 12l5 4V8l-5 4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr.png
deleted file mode 100644 (file)
index c1cd66a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr.svg
deleted file mode 100644 (file)
index c004db0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 12l5 4V8l-5 4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-invert.png
deleted file mode 100644 (file)
index eb3d700..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-invert.svg
deleted file mode 100644 (file)
index 3a9d2b5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zm18-8l-5 4V8l5 4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-progressive.png
deleted file mode 100644 (file)
index b0223bf..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-progressive.svg
deleted file mode 100644 (file)
index 560abbb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zm18-8l-5 4V8l5 4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl.png
deleted file mode 100644 (file)
index a1d9454..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl.svg
deleted file mode 100644 (file)
index a71bfdc..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zm18-8l-5 4V8l5 4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-invert.png
deleted file mode 100644 (file)
index eceedbd..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-invert.svg
deleted file mode 100644 (file)
index e9fb818..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="outline-ltr">
-        <path id="text" d="M5 13h14v6H5v-6z"/>
-        <path id="float" d="M5 5v6h6V5H5zm5 5H6V6h4v4z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-progressive.png
deleted file mode 100644 (file)
index df70c26..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-progressive.svg
deleted file mode 100644 (file)
index 662409a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="outline-ltr">
-        <path id="text" d="M5 13h14v6H5v-6z"/>
-        <path id="float" d="M5 5v6h6V5H5zm5 5H6V6h4v4z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr.png
deleted file mode 100644 (file)
index bcbfa5c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr.svg
deleted file mode 100644 (file)
index 44c1591..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="outline-ltr">
-        <path id="text" d="M5 13h14v6H5v-6z"/>
-        <path id="float" d="M5 5v6h6V5H5zm5 5H6V6h4v4z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-invert.png
deleted file mode 100644 (file)
index 96c4719..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-invert.svg
deleted file mode 100644 (file)
index 74689d1..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="outline-rtl">
-        <path id="text" d="M19 19H5v-6h14v6z"/>
-        <path id="float" d="M13 5v6h6V5h-6zm1 1h4v4h-4V6z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-progressive.png
deleted file mode 100644 (file)
index f5af3f3..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-progressive.svg
deleted file mode 100644 (file)
index b579315..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="outline-rtl">
-        <path id="text" d="M19 19H5v-6h14v6z"/>
-        <path id="float" d="M13 5v6h6V5h-6zm1 1h4v4h-4V6z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl.png
deleted file mode 100644 (file)
index d89e06e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl.svg
deleted file mode 100644 (file)
index c5b19c8..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="outline-rtl">
-        <path id="text" d="M19 19H5v-6h14v6z"/>
-        <path id="float" d="M13 5v6h6V5h-6zm1 1h4v4h-4V6z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-invert.png
deleted file mode 100644 (file)
index 82fcfa3..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-invert.svg
deleted file mode 100644 (file)
index 1a0340c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm-2 12V9l6 4-6 4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-progressive.png
deleted file mode 100644 (file)
index 7f2ef08..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-progressive.svg
deleted file mode 100644 (file)
index 5b62113..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm-2 12V9l6 4-6 4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr.png
deleted file mode 100644 (file)
index a3b711b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr.svg
deleted file mode 100644 (file)
index 82a16a4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm-2 12V9l6 4-6 4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-invert.png
deleted file mode 100644 (file)
index c31dbea..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-invert.svg
deleted file mode 100644 (file)
index b27b913..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M12 5c4.4 0 8 3.6 8 8s-3.6 8-8 8-8-3.6-8-8 3.6-8 8-8zm2 12V9l-6 4 6 4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-progressive.png
deleted file mode 100644 (file)
index a6bf5b1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-progressive.svg
deleted file mode 100644 (file)
index 05b7749..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 5c4.4 0 8 3.6 8 8s-3.6 8-8 8-8-3.6-8-8 3.6-8 8-8zm2 12V9l-6 4 6 4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl.png
deleted file mode 100644 (file)
index 2e45883..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl.svg
deleted file mode 100644 (file)
index dae95c4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 5c4.4 0 8 3.6 8 8s-3.6 8-8 8-8-3.6-8-8 3.6-8 8-8zm2 12V9l-6 4 6 4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-invert.png
deleted file mode 100644 (file)
index ca07bcc..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-invert.svg
deleted file mode 100644 (file)
index ae4352f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M18 8h-1V4H7v4H3v6c0 1.7 1.3 3 3 3h1v3h10v-3h4v-6c0-1.7-1.3-3-3-3zM8 5h8v3H8V5zm8 14H8v-6h8v6z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-progressive.png
deleted file mode 100644 (file)
index e37b3ea..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-progressive.svg
deleted file mode 100644 (file)
index fb372de..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M18 8h-1V4H7v4H3v6c0 1.7 1.3 3 3 3h1v3h10v-3h4v-6c0-1.7-1.3-3-3-3zM8 5h8v3H8V5zm8 14H8v-6h8v6z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr.png
deleted file mode 100644 (file)
index a7f6717..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr.svg
deleted file mode 100644 (file)
index 7081606..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M18 8h-1V4H7v4H3v6c0 1.7 1.3 3 3 3h1v3h10v-3h4v-6c0-1.7-1.3-3-3-3zM8 5h8v3H8V5zm8 14H8v-6h8v6z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-invert.png
deleted file mode 100644 (file)
index 95ef54a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-invert.svg
deleted file mode 100644 (file)
index d045ff9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-progressive.png
deleted file mode 100644 (file)
index 0a0a198..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-progressive.svg
deleted file mode 100644 (file)
index 91ccc6f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl.png
deleted file mode 100644 (file)
index 6e5b175..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl.svg
deleted file mode 100644 (file)
index d6188eb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-invert.png
deleted file mode 100644 (file)
index 0dbe87e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-invert.svg
deleted file mode 100644 (file)
index 27c3ab6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M18 9.9c-.7 0-1.4.3-1.8.9V6h-4c.2-.4.4-.8.4-1.2 0-1.2-1-2.2-2.2-2.2-1.3-.1-2.3.9-2.3 2.2 0 .4.2.8.4 1.2H4.1v3.6l.6-.1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5c-.2 0-.4 0-.6-.1V18H9c-.5.4-.9 1-.9 1.8 0 1.2 1 2.2 2.3 2.2 1.2 0 2.2-1 2.2-2.2 0-.7-.3-1.4-.9-1.8h4.5v-4.5c.4.5 1 .9 1.8.9 1.2 0 2.2-1 2.2-2.2 0-1.3-1-2.3-2.2-2.3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-progressive.png
deleted file mode 100644 (file)
index 75418d7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-progressive.svg
deleted file mode 100644 (file)
index 3406199..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M18 9.9c-.7 0-1.4.3-1.8.9V6h-4c.2-.4.4-.8.4-1.2 0-1.2-1-2.2-2.2-2.2-1.3-.1-2.3.9-2.3 2.2 0 .4.2.8.4 1.2H4.1v3.6l.6-.1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5c-.2 0-.4 0-.6-.1V18H9c-.5.4-.9 1-.9 1.8 0 1.2 1 2.2 2.3 2.2 1.2 0 2.2-1 2.2-2.2 0-.7-.3-1.4-.9-1.8h4.5v-4.5c.4.5 1 .9 1.8.9 1.2 0 2.2-1 2.2-2.2 0-1.3-1-2.3-2.2-2.3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr.png
deleted file mode 100644 (file)
index 9b40609..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr.svg
deleted file mode 100644 (file)
index fb9d338..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M18 9.9c-.7 0-1.4.3-1.8.9V6h-4c.2-.4.4-.8.4-1.2 0-1.2-1-2.2-2.2-2.2-1.3-.1-2.3.9-2.3 2.2 0 .4.2.8.4 1.2H4.1v3.6l.6-.1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5c-.2 0-.4 0-.6-.1V18H9c-.5.4-.9 1-.9 1.8 0 1.2 1 2.2 2.3 2.2 1.2 0 2.2-1 2.2-2.2 0-.7-.3-1.4-.9-1.8h4.5v-4.5c.4.5 1 .9 1.8.9 1.2 0 2.2-1 2.2-2.2 0-1.3-1-2.3-2.2-2.3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-invert.png
deleted file mode 100644 (file)
index dc5a97f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-invert.svg
deleted file mode 100644 (file)
index cee2e1a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M6.3 9.9c.7 0 1.4.3 1.8.9V6h4c-.2-.4-.4-.8-.4-1.2 0-1.2 1-2.2 2.2-2.2 1.3-.1 2.3.9 2.3 2.2 0 .4-.2.8-.4 1.2h4.4v3.6l-.6-.1c-1.4 0-2.5 1.1-2.5 2.5s1.1 2.5 2.5 2.5c.2 0 .4 0 .6-.1V18h-4.9c.5.4.9 1 .9 1.8 0 1.2-1 2.2-2.3 2.2-1.2 0-2.2-1-2.2-2.2 0-.7.3-1.4.9-1.8H8.1v-4.5c-.4.5-1 .9-1.8.9-1.2 0-2.2-1-2.2-2.2 0-1.3 1-2.3 2.2-2.3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-progressive.png
deleted file mode 100644 (file)
index e8273ec..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-progressive.svg
deleted file mode 100644 (file)
index 3f6a3a8..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M6.3 9.9c.7 0 1.4.3 1.8.9V6h4c-.2-.4-.4-.8-.4-1.2 0-1.2 1-2.2 2.2-2.2 1.3-.1 2.3.9 2.3 2.2 0 .4-.2.8-.4 1.2h4.4v3.6l-.6-.1c-1.4 0-2.5 1.1-2.5 2.5s1.1 2.5 2.5 2.5c.2 0 .4 0 .6-.1V18h-4.9c.5.4.9 1 .9 1.8 0 1.2-1 2.2-2.3 2.2-1.2 0-2.2-1-2.2-2.2 0-.7.3-1.4.9-1.8H8.1v-4.5c-.4.5-1 .9-1.8.9-1.2 0-2.2-1-2.2-2.2 0-1.3 1-2.3 2.2-2.3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl.png
deleted file mode 100644 (file)
index 6f7334b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl.svg
deleted file mode 100644 (file)
index 1d48308..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M6.3 9.9c.7 0 1.4.3 1.8.9V6h4c-.2-.4-.4-.8-.4-1.2 0-1.2 1-2.2 2.2-2.2 1.3-.1 2.3.9 2.3 2.2 0 .4-.2.8-.4 1.2h4.4v3.6l-.6-.1c-1.4 0-2.5 1.1-2.5 2.5s1.1 2.5 2.5 2.5c.2 0 .4 0 .6-.1V18h-4.9c.5.4.9 1 .9 1.8 0 1.2-1 2.2-2.3 2.2-1.2 0-2.2-1-2.2-2.2 0-.7.3-1.4.9-1.8H8.1v-4.5c-.4.5-1 .9-1.8.9-1.2 0-2.2-1-2.2-2.2 0-1.3 1-2.3 2.2-2.3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.png
deleted file mode 100644 (file)
index 46ac181..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.svg
deleted file mode 100644 (file)
index 7c9feea..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="quotes">
-        <path id="quote" d="M6.9 8.4c-.446.55-1.974 2.6-1.9 5.7V17h4.7c.9 0 1.6-.7 1.6-1.6V11H8.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
-    </g>
-    <use transform="translate(8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-progressive.png
deleted file mode 100644 (file)
index ce64429..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-progressive.svg
deleted file mode 100644 (file)
index c64995d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="quotes">
-        <path id="quote" d="M6.9 8.4c-.446.55-1.974 2.6-1.9 5.7V17h4.7c.9 0 1.6-.7 1.6-1.6V11H8.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
-    </g>
-    <use transform="translate(8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr.png
deleted file mode 100644 (file)
index 0252b74..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr.svg
deleted file mode 100644 (file)
index dc366b7..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
-    <g id="quotes">
-        <path id="quote" d="M6.9 8.4c-.446.55-1.974 2.6-1.9 5.7V17h4.7c.9 0 1.6-.7 1.6-1.6V11H8.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
-    </g>
-    <use transform="translate(8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.png
deleted file mode 100644 (file)
index 6637ca2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.svg
deleted file mode 100644 (file)
index baae1fa..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="quotes">
-        <path id="quote" d="M17.1 8.4c.446.55 1.9 2.6 1.9 5.7V17h-4.7c-.9 0-1.6-.7-1.6-1.6V11h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
-    </g>
-    <use transform="translate(-8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-progressive.png
deleted file mode 100644 (file)
index dff8962..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-progressive.svg
deleted file mode 100644 (file)
index 255faad..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="quotes">
-        <path id="quote" d="M17.1 8.4c.446.55 1.9 2.6 1.9 5.7V17h-4.7c-.9 0-1.6-.7-1.6-1.6V11h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
-    </g>
-    <use transform="translate(-8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl.png
deleted file mode 100644 (file)
index 7bcc7c7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl.svg
deleted file mode 100644 (file)
index e652b31..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
-    <g id="quotes">
-        <path id="quote" d="M17.1 8.4c.446.55 1.9 2.6 1.9 5.7V17h-4.7c-.9 0-1.6-.7-1.6-1.6V11h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
-    </g>
-    <use transform="translate(-8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-invert.png
deleted file mode 100644 (file)
index 40e3a06..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-invert.svg
deleted file mode 100644 (file)
index 0d79616..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="quotes-add">
-        <path id="quote" d="M5.9 10.4c-.446.55-1.974 2.6-1.9 5.7V19h4.7c.9 0 1.593-.7 1.6-1.6V13H7.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
-        <path id="quote2" d="M15 9.344c-.476.32-.78.677-1.094 1.062A8.76 8.76 0 0 0 12 16.094V19h4.688a1.6 1.6 0 0 0 1.625-1.594V13H15V9.344z"/>
-        <path id="add" d="M18 6V2h-2v4h-4v2h4v4h2V8h4V6z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-progressive.png
deleted file mode 100644 (file)
index f36a0ca..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-progressive.svg
deleted file mode 100644 (file)
index 755708d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="quotes-add">
-        <path id="quote" d="M5.9 10.4c-.446.55-1.974 2.6-1.9 5.7V19h4.7c.9 0 1.593-.7 1.6-1.6V13H7.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
-        <path id="quote2" d="M15 9.344c-.476.32-.78.677-1.094 1.062A8.76 8.76 0 0 0 12 16.094V19h4.688a1.6 1.6 0 0 0 1.625-1.594V13H15V9.344z"/>
-        <path id="add" d="M18 6V2h-2v4h-4v2h4v4h2V8h4V6z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr.png
deleted file mode 100644 (file)
index e1a0c4b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr.svg
deleted file mode 100644 (file)
index 6704c51..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="quotes-add">
-        <path id="quote" d="M5.9 10.4c-.446.55-1.974 2.6-1.9 5.7V19h4.7c.9 0 1.593-.7 1.6-1.6V13H7.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
-        <path id="quote2" d="M15 9.344c-.476.32-.78.677-1.094 1.062A8.76 8.76 0 0 0 12 16.094V19h4.688a1.6 1.6 0 0 0 1.625-1.594V13H15V9.344z"/>
-        <path id="add" d="M18 6V2h-2v4h-4v2h4v4h2V8h4V6z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-invert.png
deleted file mode 100644 (file)
index e15cc90..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-invert.svg
deleted file mode 100644 (file)
index 2a839f0..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="quotes-add">
-        <path id="quote" d="M18.097 10.4c.446.55 1.974 2.6 1.9 5.7V19h-4.7c-.9 0-1.593-.7-1.6-1.6V13h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
-        <path id="quote2" d="M8.997 9.344c.476.32.782.677 1.094 1.062A8.758 8.758 0 0 1 12 16.094V19H7.31c-.9 0-1.618-.694-1.625-1.594V13h3.312V9.344z"/>
-        <path id="add" d="M5.997 6V2h2v4h4v2h-4v4h-2V8h-4V6z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-progressive.png
deleted file mode 100644 (file)
index f824259..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-progressive.svg
deleted file mode 100644 (file)
index a5c10b4..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="quotes-add">
-        <path id="quote" d="M18.097 10.4c.446.55 1.974 2.6 1.9 5.7V19h-4.7c-.9 0-1.593-.7-1.6-1.6V13h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
-        <path id="quote2" d="M8.997 9.344c.476.32.782.677 1.094 1.062A8.758 8.758 0 0 1 12 16.094V19H7.31c-.9 0-1.618-.694-1.625-1.594V13h3.312V9.344z"/>
-        <path id="add" d="M5.997 6V2h2v4h4v2h-4v4h-2V8h-4V6z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl.png
deleted file mode 100644 (file)
index 0ef9d01..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl.svg
deleted file mode 100644 (file)
index d972ad3..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="quotes-add">
-        <path id="quote" d="M18.097 10.4c.446.55 1.974 2.6 1.9 5.7V19h-4.7c-.9 0-1.593-.7-1.6-1.6V13h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
-        <path id="quote2" d="M8.997 9.344c.476.32.782.677 1.094 1.062A8.758 8.758 0 0 1 12 16.094V19H7.31c-.9 0-1.618-.694-1.625-1.594V13h3.312V9.344z"/>
-        <path id="add" d="M5.997 6V2h2v4h4v2h-4v4h-2V8h-4V6z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.png
deleted file mode 100644 (file)
index 0206be9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.svg
deleted file mode 100644 (file)
index 0cb419e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="regular-expression">
-        <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777A6.886 6.886 0 0 1 4.764 7H6.23a7.923 7.923 0 0 0-1.25 2.374 8.563 8.563 0 0 0 .007 5.314c.29.85.7 1.622 1.23 2.312h-1.45a6.53 6.53 0 0 1-1.314-2.223 8.126 8.126 0 0 1-.45-2.732"/>
-        <path id="dot" d="M10 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/>
-        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.47-1.992.14 1.307 1.74-1.33.71-.914-1.833-.8 1.822-1.38-.698 1.296-1.74-1.98-.152.23-1.464 2.14.61-.24-2.158h1.534"/>
-        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744A6.51 6.51 0 0 1 19.236 17h-1.453a8.017 8.017 0 0 0 1.225-2.31c.29-.855.434-1.74.434-2.66 0-.91-.14-1.797-.422-2.66a7.913 7.913 0 0 0-1.248-2.374h1.465a6.764 6.764 0 0 1 1.313 2.28c.3.86.45 1.782.45 2.764"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-progressive.png
deleted file mode 100644 (file)
index af85e03..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-progressive.svg
deleted file mode 100644 (file)
index 5e2894b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="regular-expression">
-        <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777A6.886 6.886 0 0 1 4.764 7H6.23a7.923 7.923 0 0 0-1.25 2.374 8.563 8.563 0 0 0 .007 5.314c.29.85.7 1.622 1.23 2.312h-1.45a6.53 6.53 0 0 1-1.314-2.223 8.126 8.126 0 0 1-.45-2.732"/>
-        <path id="dot" d="M10 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/>
-        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.47-1.992.14 1.307 1.74-1.33.71-.914-1.833-.8 1.822-1.38-.698 1.296-1.74-1.98-.152.23-1.464 2.14.61-.24-2.158h1.534"/>
-        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744A6.51 6.51 0 0 1 19.236 17h-1.453a8.017 8.017 0 0 0 1.225-2.31c.29-.855.434-1.74.434-2.66 0-.91-.14-1.797-.422-2.66a7.913 7.913 0 0 0-1.248-2.374h1.465a6.764 6.764 0 0 1 1.313 2.28c.3.86.45 1.782.45 2.764"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression.png
deleted file mode 100644 (file)
index f27e421..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression.svg
deleted file mode 100644 (file)
index d5fcfcf..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="regular-expression">
-        <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777A6.886 6.886 0 0 1 4.764 7H6.23a7.923 7.923 0 0 0-1.25 2.374 8.563 8.563 0 0 0 .007 5.314c.29.85.7 1.622 1.23 2.312h-1.45a6.53 6.53 0 0 1-1.314-2.223 8.126 8.126 0 0 1-.45-2.732"/>
-        <path id="dot" d="M10 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/>
-        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.47-1.992.14 1.307 1.74-1.33.71-.914-1.833-.8 1.822-1.38-.698 1.296-1.74-1.98-.152.23-1.464 2.14.61-.24-2.158h1.534"/>
-        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744A6.51 6.51 0 0 1 19.236 17h-1.453a8.017 8.017 0 0 0 1.225-2.31c.29-.855.434-1.74.434-2.66 0-.91-.14-1.797-.422-2.66a7.913 7.913 0 0 0-1.248-2.374h1.465a6.764 6.764 0 0 1 1.313 2.28c.3.86.45 1.782.45 2.764"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-invert.png
deleted file mode 100644 (file)
index 4b2913b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-invert.svg
deleted file mode 100644 (file)
index 3c02eb4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="search">
-        <path id="magnifying-glass" d="M10.5 4a6.5 6.5 0 1 0 2.844 12.344L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438A6.426 6.426 0 0 0 17 10.5 6.5 6.5 0 0 0 10.5 4zm0 2a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-progressive.png
deleted file mode 100644 (file)
index 50a7305..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-progressive.svg
deleted file mode 100644 (file)
index efc8223..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="search">
-        <path id="magnifying-glass" d="M10.5 4a6.5 6.5 0 1 0 2.844 12.344L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438A6.426 6.426 0 0 0 17 10.5 6.5 6.5 0 0 0 10.5 4zm0 2a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr.png
deleted file mode 100644 (file)
index e8e99f8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr.svg
deleted file mode 100644 (file)
index ebc654a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="search">
-        <path id="magnifying-glass" d="M10.5 4a6.5 6.5 0 1 0 2.844 12.344L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438A6.426 6.426 0 0 0 17 10.5 6.5 6.5 0 0 0 10.5 4zm0 2a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-invert.png
deleted file mode 100644 (file)
index 0409aa4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-invert.svg
deleted file mode 100644 (file)
index 8df7b16..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="search">
-        <path id="magnifying-glass" d="M13.5 4a6.5 6.5 0 1 1-2.844 12.344L8 19c-1.4 1.4-2.5 1.5-4 0l4.438-4.438A6.426 6.426 0 0 1 7 10.5 6.5 6.5 0 0 1 13.5 4zm0 2a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-progressive.png
deleted file mode 100644 (file)
index 4f49e18..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-progressive.svg
deleted file mode 100644 (file)
index 07f23a8..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="search">
-        <path id="magnifying-glass" d="M13.5 4a6.5 6.5 0 1 1-2.844 12.344L8 19c-1.4 1.4-2.5 1.5-4 0l4.438-4.438A6.426 6.426 0 0 1 7 10.5 6.5 6.5 0 0 1 13.5 4zm0 2a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl.png
deleted file mode 100644 (file)
index 3ab96be..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl.svg
deleted file mode 100644 (file)
index c51d4cb..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="search">
-        <path id="magnifying-glass" d="M13.5 4a6.5 6.5 0 1 1-2.844 12.344L8 19c-1.4 1.4-2.5 1.5-4 0l4.438-4.438A6.426 6.426 0 0 1 7 10.5 6.5 6.5 0 0 1 13.5 4zm0 2a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-invert.png
deleted file mode 100644 (file)
index a74063d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-invert.svg
deleted file mode 100644 (file)
index 1b24dbb..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
-    <g id="secure">
-        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.49-.485 1.45-.487 1.94-.002.543.546.545 1.536.545 1.55V5H3.998z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-progressive.png
deleted file mode 100644 (file)
index f29d856..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-progressive.svg
deleted file mode 100644 (file)
index ee69fc4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#36c">
-    <g id="secure">
-        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.49-.485 1.45-.487 1.94-.002.543.546.545 1.536.545 1.55V5H3.998z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link.png
deleted file mode 100644 (file)
index 8a44a92..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link.svg
deleted file mode 100644 (file)
index 453d166..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
-    <g id="secure">
-        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.49-.485 1.45-.487 1.94-.002.543.546.545 1.536.545 1.55V5H3.998z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-invert.png
deleted file mode 100644 (file)
index 34c6afe..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-invert.svg
deleted file mode 100644 (file)
index 630835a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="settings">
-        <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-progressive.png
deleted file mode 100644 (file)
index 46011d2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-progressive.svg
deleted file mode 100644 (file)
index a93d312..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="settings">
-        <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings.png
deleted file mode 100644 (file)
index 1c8e587..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings.svg
deleted file mode 100644 (file)
index 3245dbe..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="settings">
-        <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-invert.png
deleted file mode 100644 (file)
index 4538011..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-invert.svg
deleted file mode 100644 (file)
index b783779..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M0 20h24v1H0v-1zm6-8l-1-1-2 2-2-2-1 1 2 2-2 2 1 1 2-2 2 2 1-1-2-2zm15.6 3.7c-.9-.5-1.9-.5-2.7 0-1.5.9-3.1.4-3.1.4-.4-.2-.8-.4-1.1-.6 2.2-.6 4.4-1.8 6-3.9 1.1-1.2 2.5-3.9.4-6-.7-.7-1.6-1.1-2.7-1-1.4.1-2.8.9-3.9 2.1-.9 1.1-3.1 4.5-2.3 7.5 0 .1 0 .2.1.3-2.3.3-4.2.2-4.4.1v1.5c.7.1 2.7.2 5.1-.2.5.7 1.3 1.2 2.3 1.6.1 0 2.4.8 4.5-.6.5-.3.9-.1 1.1 0 .4.2.7.6.7 1H23c0-.8-.6-1.7-1.4-2.2zm-8-1.7c-.5-2.2 1.1-5.1 2-6.2.8-.9 1.8-1.5 2.8-1.6h.1c.6 0 1.1.2 1.5.6 1.6 1.6-.4 3.9-.5 4-1.5 2-3.7 3-5.8 3.5l-.1-.3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-progressive.png
deleted file mode 100644 (file)
index f7d6da8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-progressive.svg
deleted file mode 100644 (file)
index 366aafb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M0 20h24v1H0v-1zm6-8l-1-1-2 2-2-2-1 1 2 2-2 2 1 1 2-2 2 2 1-1-2-2zm15.6 3.7c-.9-.5-1.9-.5-2.7 0-1.5.9-3.1.4-3.1.4-.4-.2-.8-.4-1.1-.6 2.2-.6 4.4-1.8 6-3.9 1.1-1.2 2.5-3.9.4-6-.7-.7-1.6-1.1-2.7-1-1.4.1-2.8.9-3.9 2.1-.9 1.1-3.1 4.5-2.3 7.5 0 .1 0 .2.1.3-2.3.3-4.2.2-4.4.1v1.5c.7.1 2.7.2 5.1-.2.5.7 1.3 1.2 2.3 1.6.1 0 2.4.8 4.5-.6.5-.3.9-.1 1.1 0 .4.2.7.6.7 1H23c0-.8-.6-1.7-1.4-2.2zm-8-1.7c-.5-2.2 1.1-5.1 2-6.2.8-.9 1.8-1.5 2.8-1.6h.1c.6 0 1.1.2 1.5.6 1.6 1.6-.4 3.9-.5 4-1.5 2-3.7 3-5.8 3.5l-.1-.3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr.png
deleted file mode 100644 (file)
index f68a7bf..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr.svg
deleted file mode 100644 (file)
index 03b34cf..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M0 20h24v1H0v-1zm6-8l-1-1-2 2-2-2-1 1 2 2-2 2 1 1 2-2 2 2 1-1-2-2zm15.6 3.7c-.9-.5-1.9-.5-2.7 0-1.5.9-3.1.4-3.1.4-.4-.2-.8-.4-1.1-.6 2.2-.6 4.4-1.8 6-3.9 1.1-1.2 2.5-3.9.4-6-.7-.7-1.6-1.1-2.7-1-1.4.1-2.8.9-3.9 2.1-.9 1.1-3.1 4.5-2.3 7.5 0 .1 0 .2.1.3-2.3.3-4.2.2-4.4.1v1.5c.7.1 2.7.2 5.1-.2.5.7 1.3 1.2 2.3 1.6.1 0 2.4.8 4.5-.6.5-.3.9-.1 1.1 0 .4.2.7.6.7 1H23c0-.8-.6-1.7-1.4-2.2zm-8-1.7c-.5-2.2 1.1-5.1 2-6.2.8-.9 1.8-1.5 2.8-1.6h.1c.6 0 1.1.2 1.5.6 1.6 1.6-.4 3.9-.5 4-1.5 2-3.7 3-5.8 3.5l-.1-.3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-invert.png
deleted file mode 100644 (file)
index a99fe52..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-invert.svg
deleted file mode 100644 (file)
index ffbf189..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M24 20H0v1h24v-1zm-6-8l1-1 2 2 2-2 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2zM2.4 15.7c.9-.5 1.9-.5 2.7 0 1.5.9 3.1.4 3.1.4.4-.2.8-.4 1.1-.6-2.2-.6-4.4-1.8-6-3.9-1.1-1.2-2.5-3.9-.4-6 .7-.7 1.6-1.1 2.7-1 1.4.1 2.8.9 3.9 2.1.9 1.1 3.1 4.5 2.3 7.5 0 .1 0 .2-.1.3 2.3.3 4.2.2 4.4.1v1.5c-.7.1-2.7.2-5.1-.2-.5.7-1.3 1.2-2.3 1.6-.1 0-2.4.8-4.5-.6-.5-.3-.9-.1-1.1 0-.4.2-.7.6-.7 1H1c0-.8.6-1.7 1.4-2.2zm8-1.7c.5-2.2-1.1-5.1-2-6.2-.8-.9-1.8-1.5-2.8-1.6h-.1c-.6 0-1.1.2-1.5.6-1.6 1.6.4 3.9.5 4 1.5 2 3.7 3 5.8 3.5l.1-.3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-progressive.png
deleted file mode 100644 (file)
index b5e08ca..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-progressive.svg
deleted file mode 100644 (file)
index 3131849..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M24 20H0v1h24v-1zm-6-8l1-1 2 2 2-2 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2zM2.4 15.7c.9-.5 1.9-.5 2.7 0 1.5.9 3.1.4 3.1.4.4-.2.8-.4 1.1-.6-2.2-.6-4.4-1.8-6-3.9-1.1-1.2-2.5-3.9-.4-6 .7-.7 1.6-1.1 2.7-1 1.4.1 2.8.9 3.9 2.1.9 1.1 3.1 4.5 2.3 7.5 0 .1 0 .2-.1.3 2.3.3 4.2.2 4.4.1v1.5c-.7.1-2.7.2-5.1-.2-.5.7-1.3 1.2-2.3 1.6-.1 0-2.4.8-4.5-.6-.5-.3-.9-.1-1.1 0-.4.2-.7.6-.7 1H1c0-.8.6-1.7 1.4-2.2zm8-1.7c.5-2.2-1.1-5.1-2-6.2-.8-.9-1.8-1.5-2.8-1.6h-.1c-.6 0-1.1.2-1.5.6-1.6 1.6.4 3.9.5 4 1.5 2 3.7 3 5.8 3.5l.1-.3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl.png
deleted file mode 100644 (file)
index 9166e8d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl.svg
deleted file mode 100644 (file)
index 326281a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M24 20H0v1h24v-1zm-6-8l1-1 2 2 2-2 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2zM2.4 15.7c.9-.5 1.9-.5 2.7 0 1.5.9 3.1.4 3.1.4.4-.2.8-.4 1.1-.6-2.2-.6-4.4-1.8-6-3.9-1.1-1.2-2.5-3.9-.4-6 .7-.7 1.6-1.1 2.7-1 1.4.1 2.8.9 3.9 2.1.9 1.1 3.1 4.5 2.3 7.5 0 .1 0 .2-.1.3 2.3.3 4.2.2 4.4.1v1.5c-.7.1-2.7.2-5.1-.2-.5.7-1.3 1.2-2.3 1.6-.1 0-2.4.8-4.5-.6-.5-.3-.9-.1-1.1 0-.4.2-.7.6-.7 1H1c0-.8.6-1.7 1.4-2.2zm8-1.7c.5-2.2-1.1-5.1-2-6.2-.8-.9-1.8-1.5-2.8-1.6h-.1c-.6 0-1.1.2-1.5.6-1.6 1.6.4 3.9.5 4 1.5 2 3.7 3 5.8 3.5l.1-.3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-invert.png
deleted file mode 100644 (file)
index 1b597da..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-invert.svg
deleted file mode 100644 (file)
index 3f82d69..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path id="big-a" d="M9.666 6H8.294l-4.48 12H5.52l1.493-4h4l1.507 4h1.666zm-2.28 7l1.617-4.333L10.637 13h-3.25z"/>
-    <path id="small-a" d="M17.828 12h-.686l-2.24 6h.853l.747-2h2l.753 2h.833zm-1.14 3.5l.81-2.167.816 2.167H16.69z"/>
-    <path id="arrow" d="M15 6h5l-2.5 3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-progressive.png
deleted file mode 100644 (file)
index 2878f23..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-progressive.svg
deleted file mode 100644 (file)
index 67bf3a9..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path id="big-a" d="M9.666 6H8.294l-4.48 12H5.52l1.493-4h4l1.507 4h1.666zm-2.28 7l1.617-4.333L10.637 13h-3.25z"/>
-    <path id="small-a" d="M17.828 12h-.686l-2.24 6h.853l.747-2h2l.753 2h.833zm-1.14 3.5l.81-2.167.816 2.167H16.69z"/>
-    <path id="arrow" d="M15 6h5l-2.5 3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr.png
deleted file mode 100644 (file)
index a9b29d8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr.svg
deleted file mode 100644 (file)
index 9431252..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path id="big-a" d="M9.666 6H8.294l-4.48 12H5.52l1.493-4h4l1.507 4h1.666zm-2.28 7l1.617-4.333L10.637 13h-3.25z"/>
-    <path id="small-a" d="M17.828 12h-.686l-2.24 6h.853l.747-2h2l.753 2h.833zm-1.14 3.5l.81-2.167.816 2.167H16.69z"/>
-    <path id="arrow" d="M15 6h5l-2.5 3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-invert.png
deleted file mode 100644 (file)
index f94184a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-invert.svg
deleted file mode 100644 (file)
index 3d99520..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path id="big-a" d="M14.334 6h1.372l4.48 12H18.48l-1.493-4h-4l-1.507 4H9.814zm2.28 7l-1.617-4.333L13.363 13h3.25z"/>
-    <path id="small-a" d="M6.172 12h.686l2.24 6h-.853L7.5 16H5.497l-.753 2h-.833zm1.14 3.5l-.81-2.166-.816 2.166h1.625z"/>
-    <path id="arrow" d="M9 6H4l2.5 3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-progressive.png
deleted file mode 100644 (file)
index 99abfdb..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-progressive.svg
deleted file mode 100644 (file)
index 2ca5200..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path id="big-a" d="M14.334 6h1.372l4.48 12H18.48l-1.493-4h-4l-1.507 4H9.814zm2.28 7l-1.617-4.333L13.363 13h3.25z"/>
-    <path id="small-a" d="M6.172 12h.686l2.24 6h-.853L7.5 16H5.497l-.753 2h-.833zm1.14 3.5l-.81-2.166-.816 2.166h1.625z"/>
-    <path id="arrow" d="M9 6H4l2.5 3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl.png
deleted file mode 100644 (file)
index 006bd2b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl.svg
deleted file mode 100644 (file)
index d2d2858..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path id="big-a" d="M14.334 6h1.372l4.48 12H18.48l-1.493-4h-4l-1.507 4H9.814zm2.28 7l-1.617-4.333L13.363 13h3.25z"/>
-    <path id="small-a" d="M6.172 12h.686l2.24 6h-.853L7.5 16H5.497l-.753 2h-.833zm1.14 3.5l-.81-2.166-.816 2.166h1.625z"/>
-    <path id="arrow" d="M9 6H4l2.5 3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.png
deleted file mode 100644 (file)
index dec125e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.svg
deleted file mode 100644 (file)
index 146a212..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
-    <path d="M17.6 20h-5.4v-.5c.2 0 .5-.1.9-.1.3-.1.5-.2.5-.3V19s0-.1-.1-.2l-.8-2H9.3c-.1.2-.2.4-.3.7-.1.3-.2.5-.2.7-.1.3-.1.4-.2.6v.2c0 .1.1.3.3.4.2.1.6.2 1.1.2v.4H6v-.5c.2 0 .3 0 .5-.1.2 0 .3-.1.5-.2s.4-.2.5-.4l.3-.6c.5-1.3 1.1-2.6 1.6-3.9.5-1.3 1.1-2.7 1.8-4.3h1.4c.9 2.2 1.6 4 2.1 5.3.5 1.3 1 2.4 1.3 3.2.1.1.1.3.2.4.1.1.2.2.4.3.1.1.3.1.5.2s.3.1.5.1v.5zm-5.2-4L11 12.4 9.6 16h2.8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr.png
deleted file mode 100644 (file)
index b38dca3..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr.svg
deleted file mode 100644 (file)
index 446d10a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M17.6 20h-5.4v-.5c.2 0 .5-.1.9-.1.3-.1.5-.2.5-.3V19s0-.1-.1-.2l-.8-2H9.3c-.1.2-.2.4-.3.7-.1.3-.2.5-.2.7-.1.3-.1.4-.2.6v.2c0 .1.1.3.3.4.2.1.6.2 1.1.2v.4H6v-.5c.2 0 .3 0 .5-.1.2 0 .3-.1.5-.2s.4-.2.5-.4l.3-.6c.5-1.3 1.1-2.6 1.6-3.9.5-1.3 1.1-2.7 1.8-4.3h1.4c.9 2.2 1.6 4 2.1 5.3.5 1.3 1 2.4 1.3 3.2.1.1.1.3.2.4.1.1.2.2.4.3.1.1.3.1.5.2s.3.1.5.1v.5zm-5.2-4L11 12.4 9.6 16h2.8z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.png
deleted file mode 100644 (file)
index 9aba246..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.svg
deleted file mode 100644 (file)
index 960793c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
-    <path d="M6 19.5c.1 0 .3 0 .5-.1s.3-.1.5-.2.3-.2.4-.3c.1-.1.2-.2.2-.4.4-.9.8-1.9 1.3-3.2.5-1.3 1.2-3.1 2.1-5.3h1.4c.7 1.6 1.2 3 1.8 4.3.5 1.3 1.1 2.6 1.6 3.9l.3.6c.1.2.3.3.5.4.1.1.3.1.5.2.2 0 .4.1.5.1v.5h-4v-.5c.5 0 .9-.1 1.1-.2.2-.1.3-.2.3-.4v-.2c0-.1-.1-.3-.2-.6-.1-.2-.2-.4-.2-.7-.1-.3-.2-.5-.3-.7h-3.4l-.8 2c0 .1-.1.1-.1.2v.1c0 .1.2.2.5.3.3.1.6.1.9.1v.6H6v-.5zm8-3.5l-1.4-3.6-1.4 3.6H14z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl.png
deleted file mode 100644 (file)
index b9864ef..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl.svg
deleted file mode 100644 (file)
index ebcea4d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M6 19.5c.1 0 .3 0 .5-.1s.3-.1.5-.2.3-.2.4-.3c.1-.1.2-.2.2-.4.4-.9.8-1.9 1.3-3.2.5-1.3 1.2-3.1 2.1-5.3h1.4c.7 1.6 1.2 3 1.8 4.3.5 1.3 1.1 2.6 1.6 3.9l.3.6c.1.2.3.3.5.4.1.1.3.1.5.2.2 0 .4.1.5.1v.5h-4v-.5c.5 0 .9-.1 1.1-.2.2-.1.3-.2.3-.4v-.2c0-.1-.1-.3-.2-.6-.1-.2-.2-.4-.2-.7-.1-.3-.2-.5-.3-.7h-3.4l-.8 2c0 .1-.1.1-.1.2v.1c0 .1.2.2.5.3.3.1.6.1.9.1v.6H6v-.5zm8-3.5l-1.4-3.6-1.4 3.6H14z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.png
deleted file mode 100644 (file)
index b7c9996..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.svg
deleted file mode 100644 (file)
index b234e63..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="special-character">
-        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327a7.232 7.232 0 0 0-.19 1.7c0 .512.06 1 .18 1.46.12.46.31.87.567 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.455.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99a4.428 4.428 0 0 1-.89-1.4 4.78 4.78 0 0 1-.32-1.778c0-.82.13-1.537.394-2.15a3.97 3.97 0 0 1 1.163-1.54c.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.9.92 1.16 1.54.27.614.404 1.33.404 2.15a4.79 4.79 0 0 1-.32 1.78 4.35 4.35 0 0 1-.9 1.397c-.38.4-.83.732-1.355.99-.526.255-.708.43-1.337.523l-.092.894h.66l.448-.01.75-.034.606-.044.4-.053.534-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.698 2.002-1.365.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.07-1.186-.198-1.7a3.175 3.175 0 0 0-.66-1.326c-.31-.37-.73-.66-1.255-.867-.525-.206-1.1-.31-1.894-.31"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-progressive.png
deleted file mode 100644 (file)
index 1ce4549..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-progressive.svg
deleted file mode 100644 (file)
index 091063f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="special-character">
-        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327a7.232 7.232 0 0 0-.19 1.7c0 .512.06 1 .18 1.46.12.46.31.87.567 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.455.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99a4.428 4.428 0 0 1-.89-1.4 4.78 4.78 0 0 1-.32-1.778c0-.82.13-1.537.394-2.15a3.97 3.97 0 0 1 1.163-1.54c.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.9.92 1.16 1.54.27.614.404 1.33.404 2.15a4.79 4.79 0 0 1-.32 1.78 4.35 4.35 0 0 1-.9 1.397c-.38.4-.83.732-1.355.99-.526.255-.708.43-1.337.523l-.092.894h.66l.448-.01.75-.034.606-.044.4-.053.534-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.698 2.002-1.365.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.07-1.186-.198-1.7a3.175 3.175 0 0 0-.66-1.326c-.31-.37-.73-.66-1.255-.867-.525-.206-1.1-.31-1.894-.31"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter.png
deleted file mode 100644 (file)
index 9b02a41..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter.svg
deleted file mode 100644 (file)
index 5cba080..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="special-character">
-        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327a7.232 7.232 0 0 0-.19 1.7c0 .512.06 1 .18 1.46.12.46.31.87.567 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.455.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99a4.428 4.428 0 0 1-.89-1.4 4.78 4.78 0 0 1-.32-1.778c0-.82.13-1.537.394-2.15a3.97 3.97 0 0 1 1.163-1.54c.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.9.92 1.16 1.54.27.614.404 1.33.404 2.15a4.79 4.79 0 0 1-.32 1.78 4.35 4.35 0 0 1-.9 1.397c-.38.4-.83.732-1.355.99-.526.255-.708.43-1.337.523l-.092.894h.66l.448-.01.75-.034.606-.044.4-.053.534-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.698 2.002-1.365.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.07-1.186-.198-1.7a3.175 3.175 0 0 0-.66-1.326c-.31-.37-.73-.66-1.255-.867-.525-.206-1.1-.31-1.894-.31"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-invert.png
deleted file mode 100644 (file)
index 6409de2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-invert.svg
deleted file mode 100644 (file)
index 5fa3f49..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-progressive.png
deleted file mode 100644 (file)
index 049b6ca..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-progressive.svg
deleted file mode 100644 (file)
index d196d55..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr.png
deleted file mode 100644 (file)
index 2eedf9f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr.svg
deleted file mode 100644 (file)
index 83d47c1..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-invert.png
deleted file mode 100644 (file)
index e85fd44..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-invert.svg
deleted file mode 100644 (file)
index 2da483c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-progressive.png
deleted file mode 100644 (file)
index 0524649..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-progressive.svg
deleted file mode 100644 (file)
index 43b2364..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl.png
deleted file mode 100644 (file)
index 0d14443..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl.svg
deleted file mode 100644 (file)
index e7dd668..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-invert.png
deleted file mode 100644 (file)
index 9575bdb..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-invert.svg
deleted file mode 100644 (file)
index 843469e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm8 3h1v3h3v1h-3v3h-1v-3h-3v-1h3V9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-progressive.png
deleted file mode 100644 (file)
index 19a88b5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-progressive.svg
deleted file mode 100644 (file)
index bd4128b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm8 3h1v3h3v1h-3v3h-1v-3h-3v-1h3V9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr.png
deleted file mode 100644 (file)
index aafac18..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr.svg
deleted file mode 100644 (file)
index c7134c3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm8 3h1v3h3v1h-3v3h-1v-3h-3v-1h3V9z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-invert.png
deleted file mode 100644 (file)
index 0520123..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-invert.svg
deleted file mode 100644 (file)
index d0e2cc4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M2 6v11c0 1.7 1.3 3 3 3h17l-3-3V6H2zm8 3h1v3h3v1h-3v3h-1v-3H7v-1h3V9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-progressive.png
deleted file mode 100644 (file)
index 2140a27..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-progressive.svg
deleted file mode 100644 (file)
index a35ff20..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M2 6v11c0 1.7 1.3 3 3 3h17l-3-3V6H2zm8 3h1v3h3v1h-3v3h-1v-3H7v-1h3V9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl.png
deleted file mode 100644 (file)
index feff2ba..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl.svg
deleted file mode 100644 (file)
index 08462e0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M2 6v11c0 1.7 1.3 3 3 3h17l-3-3V6H2zm8 3h1v3h3v1h-3v3h-1v-3H7v-1h3V9z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-invert.png
deleted file mode 100644 (file)
index 24a8e4e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-invert.svg
deleted file mode 100644 (file)
index a9ea6c8..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M20 9v9l2 2H8V9h12zM3 4h12v4H7v7H1l2-2V4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-progressive.png
deleted file mode 100644 (file)
index 8b7029b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-progressive.svg
deleted file mode 100644 (file)
index 1c79ef6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M20 9v9l2 2H8V9h12zM3 4h12v4H7v7H1l2-2V4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr.png
deleted file mode 100644 (file)
index f2e0564..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr.svg
deleted file mode 100644 (file)
index d683218..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M20 9v9l2 2H8V9h12zM3 4h12v4H7v7H1l2-2V4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-invert.png
deleted file mode 100644 (file)
index 4b9ca3a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-invert.svg
deleted file mode 100644 (file)
index c8b684a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M3 9v9l-2 2h14V9H3zm17-5H8v4h8v7h6l-2-2V4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-progressive.png
deleted file mode 100644 (file)
index 856fd7b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-progressive.svg
deleted file mode 100644 (file)
index fe65227..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M3 9v9l-2 2h14V9H3zm17-5H8v4h8v7h6l-2-2V4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl.png
deleted file mode 100644 (file)
index 9c67f3f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl.svg
deleted file mode 100644 (file)
index db548a4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M3 9v9l-2 2h14V9H3zm17-5H8v4h8v7h6l-2-2V4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-constructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-constructive.png
deleted file mode 100644 (file)
index 1cdcf99..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-constructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-constructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-constructive.svg
deleted file mode 100644 (file)
index 407d2da..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-invert.png
deleted file mode 100644 (file)
index 7c949a6..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-invert.svg
deleted file mode 100644 (file)
index 0cbd1d0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-progressive.png
deleted file mode 100644 (file)
index 1cdcf99..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-progressive.svg
deleted file mode 100644 (file)
index 407d2da..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/star.png
deleted file mode 100644 (file)
index 36b6a1f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/star.svg
deleted file mode 100644 (file)
index 54ba77a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-invert.png
deleted file mode 100644 (file)
index 9cd13be..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-invert.svg
deleted file mode 100644 (file)
index 40f44d7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-       <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 11.1H9v-6h6v6z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-progressive.png
deleted file mode 100644 (file)
index d3c906c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-progressive.svg
deleted file mode 100644 (file)
index 5b44a8d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-       <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 11.1H9v-6h6v6z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop.png
deleted file mode 100644 (file)
index 77dd75f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop.svg
deleted file mode 100644 (file)
index 4631b85..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-       <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 11.1H9v-6h6v6z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-invert.png
deleted file mode 100644 (file)
index ebabd3b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-invert.svg
deleted file mode 100644 (file)
index e277ae3..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="strikethrough-a">
-        <path id="strikethrough" d="M6 11h12v1H6v-1z"/>
-        <path id="a" d="M12.666 6h-1.372l-4.48 12H8.52l1.493-4h4l1.507 4h1.666l-4.52-12zm-2.28 7l1.617-4.333L13.637 13h-3.25z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-progressive.png
deleted file mode 100644 (file)
index a3189f4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-progressive.svg
deleted file mode 100644 (file)
index a957e80..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="strikethrough-a">
-        <path id="strikethrough" d="M6 11h12v1H6v-1z"/>
-        <path id="a" d="M12.666 6h-1.372l-4.48 12H8.52l1.493-4h4l1.507 4h1.666l-4.52-12zm-2.28 7l1.617-4.333L13.637 13h-3.25z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a.png
deleted file mode 100644 (file)
index 279d1f7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a.svg
deleted file mode 100644 (file)
index 070d785..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="strikethrough-a">
-        <path id="strikethrough" d="M6 11h12v1H6v-1z"/>
-        <path id="a" d="M12.666 6h-1.372l-4.48 12H8.52l1.493-4h4l1.507 4h1.666l-4.52-12zm-2.28 7l1.617-4.333L13.637 13h-3.25z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-invert.png
deleted file mode 100644 (file)
index 2a29a6e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-invert.svg
deleted file mode 100644 (file)
index a8301f2..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="strikethrough-s">
-        <path id="strikethrough" d="M6 12h12v1H6v-1z"/>
-        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.47 0-.962-.074-1.462-.24a7.288 7.288 0 0 1-1.562-.75l-.374-.238v2.158l.156.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.714-.148-1.202-.352-1.404-.54-.206-.202-.313-.484-.313-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.375.18V6.63s-1.19-.383-1.69-.48c-.5-.097-.983-.15-1.467-.15z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-progressive.png
deleted file mode 100644 (file)
index 0b215bd..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-progressive.svg
deleted file mode 100644 (file)
index f6f5331..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="strikethrough-s">
-        <path id="strikethrough" d="M6 12h12v1H6v-1z"/>
-        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.47 0-.962-.074-1.462-.24a7.288 7.288 0 0 1-1.562-.75l-.374-.238v2.158l.156.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.714-.148-1.202-.352-1.404-.54-.206-.202-.313-.484-.313-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.375.18V6.63s-1.19-.383-1.69-.48c-.5-.097-.983-.15-1.467-.15z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s.png
deleted file mode 100644 (file)
index 21b9baa..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s.svg
deleted file mode 100644 (file)
index 171f8f3..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="strikethrough-s">
-        <path id="strikethrough" d="M6 12h12v1H6v-1z"/>
-        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.47 0-.962-.074-1.462-.24a7.288 7.288 0 0 1-1.562-.75l-.374-.238v2.158l.156.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.714-.148-1.202-.352-1.404-.54-.206-.202-.313-.484-.313-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.375.18V6.63s-1.19-.383-1.69-.48c-.5-.097-.983-.15-1.467-.15z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-invert.png
deleted file mode 100644 (file)
index 5ed9097..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-invert.svg
deleted file mode 100644 (file)
index f34be15..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="strikethrough-y">
-        <path id="strikethrough" d="M6 11h12v1H6v-1z"/>
-        <path id="a" d="M7 6h1.724l3.288 4.935L15.276 6H17l-4.194 6.285V18h-1.612v-5.715L7 6"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-progressive.png
deleted file mode 100644 (file)
index a96d906..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-progressive.svg
deleted file mode 100644 (file)
index 778a941..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="strikethrough-y">
-        <path id="strikethrough" d="M6 11h12v1H6v-1z"/>
-        <path id="a" d="M7 6h1.724l3.288 4.935L15.276 6H17l-4.194 6.285V18h-1.612v-5.715L7 6"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y.png
deleted file mode 100644 (file)
index d769468..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y.svg
deleted file mode 100644 (file)
index 2fdbc87..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="strikethrough-y">
-        <path id="strikethrough" d="M6 11h12v1H6v-1z"/>
-        <path id="a" d="M7 6h1.724l3.288 4.935L15.276 6H17l-4.194 6.285V18h-1.612v-5.715L7 6"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-invert.png
deleted file mode 100644 (file)
index 41fabd9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-invert.svg
deleted file mode 100644 (file)
index 4b2040c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M4 9h12v2H4V9zm0 3h8v2H4v-2zm0-7h16v3H4V5zm16 14H4v-3h16v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-progressive.png
deleted file mode 100644 (file)
index 7f4954c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-progressive.svg
deleted file mode 100644 (file)
index a7ddaac..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M4 9h12v2H4V9zm0 3h8v2H4v-2zm0-7h16v3H4V5zm16 14H4v-3h16v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr.png
deleted file mode 100644 (file)
index 5423b36..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr.svg
deleted file mode 100644 (file)
index 2112bb2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M4 9h12v2H4V9zm0 3h8v2H4v-2zm0-7h16v3H4V5zm16 14H4v-3h16v3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-invert.png
deleted file mode 100644 (file)
index fc723a6..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-invert.svg
deleted file mode 100644 (file)
index af6e715..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M20 9H8v2h12V9zm0 3h-8v2h8v-2zm0-7H4v3h16V5zM4 19h16v-3H4v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-progressive.png
deleted file mode 100644 (file)
index 5e82b68..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-progressive.svg
deleted file mode 100644 (file)
index e835c21..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M20 9H8v2h12V9zm0 3h-8v2h8v-2zm0-7H4v3h16V5zM4 19h16v-3H4v3z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl.png
deleted file mode 100644 (file)
index 0ff3d7c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl.svg
deleted file mode 100644 (file)
index 39790a9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M20 9H8v2h12V9zm0 3h-8v2h8v-2zm0-7H4v3h16V5zM4 19h16v-3H4v3z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-invert.png
deleted file mode 100644 (file)
index 4dd5fd8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-invert.svg
deleted file mode 100644 (file)
index 68085f9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M20 19H4v-2h16v2zM20 15H4v-2h16v2zM20 11H4V9h16v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-progressive.png
deleted file mode 100644 (file)
index 6d0aa12..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-progressive.svg
deleted file mode 100644 (file)
index 7bb2d16..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M20 19H4v-2h16v2zM20 15H4v-2h16v2zM20 11H4V9h16v2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu.png
deleted file mode 100644 (file)
index e031527..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu.svg
deleted file mode 100644 (file)
index e63a7d5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M20 19H4v-2h16v2zM20 15H4v-2h16v2zM20 11H4V9h16v2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-invert.png
deleted file mode 100644 (file)
index 453cb73..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-invert.svg
deleted file mode 100644 (file)
index 91fcd8f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M20 11H4V9h16v2zM4 12h8v2H4v-2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-progressive.png
deleted file mode 100644 (file)
index cc2cd8c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-progressive.svg
deleted file mode 100644 (file)
index 59342a5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M20 11H4V9h16v2zM4 12h8v2H4v-2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr.png
deleted file mode 100644 (file)
index ce15bd8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr.svg
deleted file mode 100644 (file)
index 767d6cd..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M20 11H4V9h16v2zM4 12h8v2H4v-2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-invert.png
deleted file mode 100644 (file)
index 458015c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-invert.svg
deleted file mode 100644 (file)
index dae554e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M4 11h16V9H4v2zm16 1h-8v2h8v-2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-progressive.png
deleted file mode 100644 (file)
index 9180978..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-progressive.svg
deleted file mode 100644 (file)
index 6b94663..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M4 11h16V9H4v2zm16 1h-8v2h8v-2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl.png
deleted file mode 100644 (file)
index 82ca2bf..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl.svg
deleted file mode 100644 (file)
index 4d16337..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M4 11h16V9H4v2zm16 1h-8v2h8v-2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-invert.png
deleted file mode 100644 (file)
index 629ea35..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-invert.svg
deleted file mode 100644 (file)
index 7b2ec17..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M17 13H4v-3h13v3zm-5 6H4v-3h8v3zM4 7V4h16v3H4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-progressive.png
deleted file mode 100644 (file)
index cee45e8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-progressive.svg
deleted file mode 100644 (file)
index d027539..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M17 13H4v-3h13v3zm-5 6H4v-3h8v3zM4 7V4h16v3H4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr.png
deleted file mode 100644 (file)
index b482d3e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr.svg
deleted file mode 100644 (file)
index d7c202e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M17 13H4v-3h13v3zm-5 6H4v-3h8v3zM4 7V4h16v3H4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-invert.png
deleted file mode 100644 (file)
index f81e503..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-invert.svg
deleted file mode 100644 (file)
index 2e75158..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M7 13h13v-3H7v3zm5 6h8v-3h-8v3zm8-12V4H4v3h16z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-progressive.png
deleted file mode 100644 (file)
index 424aa99..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-progressive.svg
deleted file mode 100644 (file)
index 3c27eaf..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M7 13h13v-3H7v3zm5 6h8v-3h-8v3zm8-12V4H4v3h16z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl.png
deleted file mode 100644 (file)
index 516bc2c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl.svg
deleted file mode 100644 (file)
index 0859be6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M7 13h13v-3H7v3zm5 6h8v-3h-8v3zm8-12V4H4v3h16z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-invert.png
deleted file mode 100644 (file)
index f7f291e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-invert.svg
deleted file mode 100644 (file)
index b6f5d6d..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path id="x" d="M14 9l-2.354 3.406L14 16h-1.2L11 13.25 9.2 16H8l2.403-3.662L8 9h1.188l1.857 2.494L12.797 9H14z"/>
-    <path d="M18 13l-1 1v3l1 1h-1l-.527-.46L16 18h-1l1-1v-3l-1-1h1l.485.497L17 13z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-progressive.png
deleted file mode 100644 (file)
index 55df817..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-progressive.svg
deleted file mode 100644 (file)
index 11dc32f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path id="x" d="M14 9l-2.354 3.406L14 16h-1.2L11 13.25 9.2 16H8l2.403-3.662L8 9h1.188l1.857 2.494L12.797 9H14z"/>
-    <path d="M18 13l-1 1v3l1 1h-1l-.527-.46L16 18h-1l1-1v-3l-1-1h1l.485.497L17 13z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr.png
deleted file mode 100644 (file)
index c2cf4cf..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr.svg
deleted file mode 100644 (file)
index fbb0c3c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path id="x" d="M14 9l-2.354 3.406L14 16h-1.2L11 13.25 9.2 16H8l2.403-3.662L8 9h1.188l1.857 2.494L12.797 9H14z"/>
-    <path d="M18 13l-1 1v3l1 1h-1l-.527-.46L16 18h-1l1-1v-3l-1-1h1l.485.497L17 13z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-invert.png
deleted file mode 100644 (file)
index 56ad252..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-invert.svg
deleted file mode 100644 (file)
index b1608f9..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path id="x" d="M12 9l2.354 3.406L12 16h1.2l1.8-2.75L16.8 16H18l-2.403-3.662L18 9h-1.188l-1.857 2.494L13.203 9H12z"/>
-    <path d="M8 13l1 1v3l-1 1h1l.527-.46L10 18h1l-1-1v-3l1-1h-1l-.485.497L9 13z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-progressive.png
deleted file mode 100644 (file)
index bf343f1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-progressive.svg
deleted file mode 100644 (file)
index f0c5d31..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path id="x" d="M12 9l2.354 3.406L12 16h1.2l1.8-2.75L16.8 16H18l-2.403-3.662L18 9h-1.188l-1.857 2.494L13.203 9H12z"/>
-    <path d="M8 13l1 1v3l-1 1h1l.527-.46L10 18h1l-1-1v-3l1-1h-1l-.485.497L9 13z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl.png
deleted file mode 100644 (file)
index b1ee51b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl.svg
deleted file mode 100644 (file)
index 91a71ec..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path id="x" d="M12 9l2.354 3.406L12 16h1.2l1.8-2.75L16.8 16H18l-2.403-3.662L18 9h-1.188l-1.857 2.494L13.203 9H12z"/>
-    <path d="M8 13l1 1v3l-1 1h1l.527-.46L10 18h1l-1-1v-3l1-1h-1l-.485.497L9 13z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-invert.png
deleted file mode 100644 (file)
index 4e58b70..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-invert.svg
deleted file mode 100644 (file)
index d76eb3c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-       <path d="M18 13H6v-2h12"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-progressive.png
deleted file mode 100644 (file)
index 1732972..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-progressive.svg
deleted file mode 100644 (file)
index 24795ac..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-       <path d="M18 13H6v-2h12"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract.png
deleted file mode 100644 (file)
index bd719cb..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract.svg
deleted file mode 100644 (file)
index a79f0b5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-       <path d="M18 13H6v-2h12"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-invert.png
deleted file mode 100644 (file)
index 2bc944a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-invert.svg
deleted file mode 100644 (file)
index 498df82..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9s-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4s.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4s-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9s.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8s.1-.6.3-.8z"/>
-    <circle cx="12" cy="11" r="4"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-progressive.png
deleted file mode 100644 (file)
index dbe14b5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-progressive.svg
deleted file mode 100644 (file)
index afd390c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9s-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4s.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4s-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9s.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8s.1-.6.3-.8z"/>
-    <circle cx="12" cy="11" r="4"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr.png
deleted file mode 100644 (file)
index 0c00745..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr.svg
deleted file mode 100644 (file)
index 4bde183..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9s-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4s.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4s-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9s.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8s.1-.6.3-.8z"/>
-    <circle cx="12" cy="11" r="4"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-invert.png
deleted file mode 100644 (file)
index 7ac54ff..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-invert.svg
deleted file mode 100644 (file)
index f932701..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z"/>
-    <circle cx="12" cy="11" r="4" transform="matrix(-1 0 0 1 24 0)"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-progressive.png
deleted file mode 100644 (file)
index 5ee10ee..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-progressive.svg
deleted file mode 100644 (file)
index 72754d4..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z"/>
-    <circle cx="12" cy="11" r="4" transform="matrix(-1 0 0 1 24 0)"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl.png
deleted file mode 100644 (file)
index 77c7806..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl.svg
deleted file mode 100644 (file)
index 868334e..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z"/>
-    <circle cx="12" cy="11" r="4" transform="matrix(-1 0 0 1 24 0)"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-invert.png
deleted file mode 100644 (file)
index abb7229..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-invert.svg
deleted file mode 100644 (file)
index 430abf0..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path id="x" d="M14 9l-2.354 3.406L14 16h-1.2L11 13.25 9.2 16H8l2.403-3.662L8 9h1.188l1.857 2.494L12.797 9H14z"/>
-    <path d="M18 7l-1 1v3l1 1h-1l-.527-.46L16 12h-1l1-1V8l-1-1h1l.485.497L17 7z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-progressive.png
deleted file mode 100644 (file)
index 37c45c0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-progressive.svg
deleted file mode 100644 (file)
index 80495b8..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path id="x" d="M14 9l-2.354 3.406L14 16h-1.2L11 13.25 9.2 16H8l2.403-3.662L8 9h1.188l1.857 2.494L12.797 9H14z"/>
-    <path d="M18 7l-1 1v3l1 1h-1l-.527-.46L16 12h-1l1-1V8l-1-1h1l.485.497L17 7z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr.png
deleted file mode 100644 (file)
index 8df4609..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr.svg
deleted file mode 100644 (file)
index 45abfda..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path id="x" d="M14 9l-2.354 3.406L14 16h-1.2L11 13.25 9.2 16H8l2.403-3.662L8 9h1.188l1.857 2.494L12.797 9H14z"/>
-    <path d="M18 7l-1 1v3l1 1h-1l-.527-.46L16 12h-1l1-1V8l-1-1h1l.485.497L17 7z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-invert.png
deleted file mode 100644 (file)
index ee76ff4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-invert.svg
deleted file mode 100644 (file)
index ea8ea9c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path id="x" d="M12 9l2.354 3.406L12 16h1.2l1.8-2.75L16.8 16H18l-2.403-3.662L18 9h-1.188l-1.857 2.494L13.203 9H12z"/>
-    <path d="M8 7l1 1v3l-1 1h1l.527-.46L10 12h1l-1-1V8l1-1h-1l-.485.497L9 7z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-progressive.png
deleted file mode 100644 (file)
index 2c63a82..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-progressive.svg
deleted file mode 100644 (file)
index e742990..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path id="x" d="M12 9l2.354 3.406L12 16h1.2l1.8-2.75L16.8 16H18l-2.403-3.662L18 9h-1.188l-1.857 2.494L13.203 9H12z"/>
-    <path d="M8 7l1 1v3l-1 1h1l.527-.46L10 12h1l-1-1V8l1-1h-1l-.485.497L9 7z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl.png
deleted file mode 100644 (file)
index 48bfd68..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl.svg
deleted file mode 100644 (file)
index 33b5814..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path id="x" d="M12 9l2.354 3.406L12 16h1.2l1.8-2.75L16.8 16H18l-2.403-3.662L18 9h-1.188l-1.857 2.494L13.203 9H12z"/>
-    <path d="M8 7l1 1v3l-1 1h1l.527-.46L10 12h1l-1-1V8l1-1h-1l-.485.497L9 7z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-invert.png
deleted file mode 100644 (file)
index 9d50a42..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-invert.svg
deleted file mode 100644 (file)
index 360fbe1..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="table-caption">
-        <path id="caption" d="M6 6h12v3H6z"/>
-        <path id="table" d="M4 10v7h16v-7H4zm1 1h4v2H5v-2zm5 0h4v2h-4v-2zm5 0h4v2h-4v-2zM5 14h4v2H5v-2zm5 0h4v2h-4v-2zm5 0h4v2h-4v-2z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-progressive.png
deleted file mode 100644 (file)
index ef657ee..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-progressive.svg
deleted file mode 100644 (file)
index 02faf85..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="table-caption">
-        <path id="caption" d="M6 6h12v3H6z"/>
-        <path id="table" d="M4 10v7h16v-7H4zm1 1h4v2H5v-2zm5 0h4v2h-4v-2zm5 0h4v2h-4v-2zM5 14h4v2H5v-2zm5 0h4v2h-4v-2zm5 0h4v2h-4v-2z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption.png
deleted file mode 100644 (file)
index 80b474d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption.svg
deleted file mode 100644 (file)
index 6b7edc6..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="table-caption">
-        <path id="caption" d="M6 6h12v3H6z"/>
-        <path id="table" d="M4 10v7h16v-7H4zm1 1h4v2H5v-2zm5 0h4v2h-4v-2zm5 0h4v2h-4v-2zM5 14h4v2H5v-2zm5 0h4v2h-4v-2zm5 0h4v2h-4v-2z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-invert.png
deleted file mode 100644 (file)
index b97ac0a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-invert.svg
deleted file mode 100644 (file)
index 9a93e24..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="table-insert-column-ltr">
-        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
-        <path d="M5 5h2v14H5z" id="column"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-progressive.png
deleted file mode 100644 (file)
index 5565c15..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-progressive.svg
deleted file mode 100644 (file)
index 1f560bb..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="table-insert-column-ltr">
-        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
-        <path d="M5 5h2v14H5z" id="column"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr.png
deleted file mode 100644 (file)
index fe3eb18..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr.svg
deleted file mode 100644 (file)
index a67ed20..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="table-insert-column-ltr">
-        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
-        <path d="M5 5h2v14H5z" id="column"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-invert.png
deleted file mode 100644 (file)
index c10abc5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-invert.svg
deleted file mode 100644 (file)
index 7c54e2c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="table-insert-column-rtl">
-        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
-        <path d="M17 5h2v14h-2z" id="column"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-progressive.png
deleted file mode 100644 (file)
index d974a07..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-progressive.svg
deleted file mode 100644 (file)
index 3e178ee..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="table-insert-column-rtl">
-        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
-        <path d="M17 5h2v14h-2z" id="column"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl.png
deleted file mode 100644 (file)
index ddaafe9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl.svg
deleted file mode 100644 (file)
index dee782e..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="table-insert-column-rtl">
-        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
-        <path d="M17 5h2v14h-2z" id="column"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-invert.png
deleted file mode 100644 (file)
index ea1a5d8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-invert.svg
deleted file mode 100644 (file)
index 2df3cfc..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="table-insert-row-after">
-        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
-        <path d="M5 17h14v2H5z" id="row"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-progressive.png
deleted file mode 100644 (file)
index ba1e54c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-progressive.svg
deleted file mode 100644 (file)
index f85c5a3..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="table-insert-row-after">
-        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
-        <path d="M5 17h14v2H5z" id="row"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after.png
deleted file mode 100644 (file)
index 31a2306..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after.svg
deleted file mode 100644 (file)
index ad9d86d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="table-insert-row-after">
-        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
-        <path d="M5 17h14v2H5z" id="row"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-invert.png
deleted file mode 100644 (file)
index a54f05c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-invert.svg
deleted file mode 100644 (file)
index 5d529f1..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="table-insert-row-before">
-        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
-        <path d="M5 5h14v2H5z" id="row"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-progressive.png
deleted file mode 100644 (file)
index 0a54444..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-progressive.svg
deleted file mode 100644 (file)
index f26feef..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="table-insert-row-before">
-        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
-        <path d="M5 5h14v2H5z" id="row"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before.png
deleted file mode 100644 (file)
index 2477475..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before.svg
deleted file mode 100644 (file)
index e9dfe04..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="table-insert-row-before">
-        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
-        <path d="M5 5h14v2H5z" id="row"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-invert.png
deleted file mode 100644 (file)
index 4c19203..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-invert.svg
deleted file mode 100644 (file)
index 85a3f97..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="table-insert">
-        <path id="table" d="M4 6v11h15V6zm1 3h6v3H5zm7 0h6v3h-6zm-7 4h6v3H5zm7 0h6v3h-6z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-invert.png
deleted file mode 100644 (file)
index b24537d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-invert.svg
deleted file mode 100644 (file)
index 102a686..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="table-merge-cells">
-        <g id="merge-cell-left">
-            <path id="cell-border" d="M4 7v9h7v-3l-1 .834V15H5V8h5v1.167L11 10V7z"/>
-            <path id="arrow" d="M8 9v2H6v1h2v2l3-2.5z"/>
-        </g>
-        <use id="merge-cell-right" xlink:href="#merge-cell-left" transform="matrix(-1 0 0 1 24 0)"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-progressive.png
deleted file mode 100644 (file)
index a75b2a0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-progressive.svg
deleted file mode 100644 (file)
index c2c5a7e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="table-merge-cells">
-        <g id="merge-cell-left">
-            <path id="cell-border" d="M4 7v9h7v-3l-1 .834V15H5V8h5v1.167L11 10V7z"/>
-            <path id="arrow" d="M8 9v2H6v1h2v2l3-2.5z"/>
-        </g>
-        <use id="merge-cell-right" xlink:href="#merge-cell-left" transform="matrix(-1 0 0 1 24 0)"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells.png
deleted file mode 100644 (file)
index e6b2da3..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells.svg
deleted file mode 100644 (file)
index 3ffb9e5..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
-    <g id="table-merge-cells">
-        <g id="merge-cell-left">
-            <path id="cell-border" d="M4 7v9h7v-3l-1 .834V15H5V8h5v1.167L11 10V7z"/>
-            <path id="arrow" d="M8 9v2H6v1h2v2l3-2.5z"/>
-        </g>
-        <use id="merge-cell-right" xlink:href="#merge-cell-left" transform="matrix(-1 0 0 1 24 0)"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-progressive.png
deleted file mode 100644 (file)
index b364a8f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-progressive.svg
deleted file mode 100644 (file)
index 3441e65..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="table-insert">
-        <path id="table" d="M4 6v11h15V6zm1 3h6v3H5zm7 0h6v3h-6zm-7 4h6v3H5zm7 0h6v3h-6z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table.png
deleted file mode 100644 (file)
index f4008f6..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table.svg
deleted file mode 100644 (file)
index b5733fb..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="table-insert">
-        <path id="table" d="M4 6v11h15V6zm1 3h6v3H5zm7 0h6v3h-6zm-7 4h6v3H5zm7 0h6v3h-6z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-constructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-constructive.png
deleted file mode 100644 (file)
index 6372f39..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-constructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-constructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-constructive.svg
deleted file mode 100644 (file)
index ce04687..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-destructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-destructive.png
deleted file mode 100644 (file)
index cf85c4d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-destructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-destructive.svg
deleted file mode 100644 (file)
index cb00c1c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
-    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.png
deleted file mode 100644 (file)
index fd5956c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.svg
deleted file mode 100644 (file)
index a4f38b4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-progressive.png
deleted file mode 100644 (file)
index 6372f39..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-progressive.svg
deleted file mode 100644 (file)
index ce04687..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-warning.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-warning.png
deleted file mode 100644 (file)
index 24dff07..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-warning.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-warning.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-warning.svg
deleted file mode 100644 (file)
index bf31a97..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ff5d00">
-    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag.png
deleted file mode 100644 (file)
index 82461ef..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag.svg
deleted file mode 100644 (file)
index 7a211a3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-invert.png
deleted file mode 100644 (file)
index cba38d2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-invert.svg
deleted file mode 100644 (file)
index 4d0e4a5..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="template-add">
-        <path id="add" d="M23 7h-4V3h-2v4h-4v2h4v4h2V9h4z"/>
-        <path id="template" d="M18 14v4H6c-1.1 0-2-.9-2-2V8h8V7H3v9c0 1.7 1.3 3 3 3h13v-5z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-progressive.png
deleted file mode 100644 (file)
index 7034110..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-progressive.svg
deleted file mode 100644 (file)
index 8b6325e..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="template-add">
-        <path id="add" d="M23 7h-4V3h-2v4h-4v2h4v4h2V9h4z"/>
-        <path id="template" d="M18 14v4H6c-1.1 0-2-.9-2-2V8h8V7H3v9c0 1.7 1.3 3 3 3h13v-5z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr.png
deleted file mode 100644 (file)
index f3ce49e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr.svg
deleted file mode 100644 (file)
index 8cd95e0..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="template-add">
-        <path id="add" d="M23 7h-4V3h-2v4h-4v2h4v4h2V9h4z"/>
-        <path id="template" d="M18 14v4H6c-1.1 0-2-.9-2-2V8h8V7H3v9c0 1.7 1.3 3 3 3h13v-5z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-invert.png
deleted file mode 100644 (file)
index eb8d08d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-invert.svg
deleted file mode 100644 (file)
index 3277986..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="template-add">
-        <path id="add" d="M1 7h4V3h2v4h4v2H7v4H5V9H1z"/>
-        <path id="template" d="M6 14v4h12c1.1 0 2-.9 2-2V8h-8V7h9v9c0 1.7-1.3 3-3 3H5v-5z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-progressive.png
deleted file mode 100644 (file)
index 7514278..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-progressive.svg
deleted file mode 100644 (file)
index ea7a4ce..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="template-add">
-        <path id="add" d="M1 7h4V3h2v4h4v2H7v4H5V9H1z"/>
-        <path id="template" d="M6 14v4h12c1.1 0 2-.9 2-2V8h-8V7h9v9c0 1.7-1.3 3-3 3H5v-5z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl.png
deleted file mode 100644 (file)
index 448caf4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl.svg
deleted file mode 100644 (file)
index 62b30f5..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="template-add">
-        <path id="add" d="M1 7h4V3h2v4h4v2H7v4H5V9H1z"/>
-        <path id="template" d="M6 14v4h12c1.1 0 2-.9 2-2V8h-8V7h9v9c0 1.7-1.3 3-3 3H5v-5z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-invert.png
deleted file mode 100644 (file)
index 44394d9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-invert.svg
deleted file mode 100644 (file)
index 8824e9c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M7 7H5V6h2l.47.5L8 6h2v1H8v10h2v1H8l-.5-.53L7 18H5v-1h2zm6.976 9v-2H11v-4h2.976V8.044L20 12.022z" id="text-dir-ltr"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-progressive.png
deleted file mode 100644 (file)
index 4e9b0fc..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-progressive.svg
deleted file mode 100644 (file)
index 968e13b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M7 7H5V6h2l.47.5L8 6h2v1H8v10h2v1H8l-.5-.53L7 18H5v-1h2zm6.976 9v-2H11v-4h2.976V8.044L20 12.022z" id="text-dir-ltr"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright.png
deleted file mode 100644 (file)
index fede39a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright.svg
deleted file mode 100644 (file)
index 83dd769..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M7 7H5V6h2l.47.5L8 6h2v1H8v10h2v1H8l-.5-.53L7 18H5v-1h2zm6.976 9v-2H11v-4h2.976V8.044L20 12.022z" id="text-dir-ltr"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-invert.png
deleted file mode 100644 (file)
index d5b78c2..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-invert.svg
deleted file mode 100644 (file)
index 12544d9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M17 17h2v1h-2l-.47-.5-.53.5h-2v-1h2V7h-2V6h2l.5.53L17 6h2v1h-2zm-6.976-9v2H13v4h-2.976v1.956L4 11.978z" id="text-dir-rtl"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-progressive.png
deleted file mode 100644 (file)
index 955a65f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-progressive.svg
deleted file mode 100644 (file)
index 73ebe60..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M17 17h2v1h-2l-.47-.5-.53.5h-2v-1h2V7h-2V6h2l.5.53L17 6h2v1h-2zm-6.976-9v2H13v4h-2.976v1.956L4 11.978z" id="text-dir-rtl"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft.png
deleted file mode 100644 (file)
index 9f60ed5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft.svg
deleted file mode 100644 (file)
index 78cb85b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M17 17h2v1h-2l-.47-.5-.53.5h-2v-1h2V7h-2V6h2l.5.53L17 6h2v1h-2zm-6.976-9v2H13v4h-2.976v1.956L4 11.978z" id="text-dir-rtl"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-invert.png
deleted file mode 100644 (file)
index f173ad7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-invert.svg
deleted file mode 100644 (file)
index 318c168..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="text-style">
-        <path id="a" d="M15.296 18h2.79l-1.14-12h-2.79L6 18h2.79l2.038-3h4.183l.29 3zm-3.11-5L14.5 9.6l.323 3.4H12.19z"/>
-        <path id="underline" d="M6 19h12v1H6v-1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-progressive.png
deleted file mode 100644 (file)
index 5cbdfa4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-progressive.svg
deleted file mode 100644 (file)
index 6f17920..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="text-style">
-        <path id="a" d="M15.296 18h2.79l-1.14-12h-2.79L6 18h2.79l2.038-3h4.183l.29 3zm-3.11-5L14.5 9.6l.323 3.4H12.19z"/>
-        <path id="underline" d="M6 19h12v1H6v-1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style.png
deleted file mode 100644 (file)
index 65ab476..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style.svg
deleted file mode 100644 (file)
index 466672e..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="text-style">
-        <path id="a" d="M15.296 18h2.79l-1.14-12h-2.79L6 18h2.79l2.038-3h4.183l.29 3zm-3.11-5L14.5 9.6l.323 3.4H12.19z"/>
-        <path id="underline" d="M6 19h12v1H6v-1z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-destructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-destructive.png
deleted file mode 100644 (file)
index c367e77..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-destructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-destructive.svg
deleted file mode 100644 (file)
index eb52343..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
-    <path d="M6 8c0-1.1.9-2 2-2h2l1-1h2l1 1h2c1.1 0 2 .9 2 2H6zm1 1h10l-1 11H8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-invert.png
deleted file mode 100644 (file)
index 04eaa41..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-invert.svg
deleted file mode 100644 (file)
index f84bfe9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M6 8c0-1.1.9-2 2-2h2l1-1h2l1 1h2c1.1 0 2 .9 2 2H6zm1 1h10l-1 11H8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-progressive.png
deleted file mode 100644 (file)
index 478c702..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-progressive.svg
deleted file mode 100644 (file)
index 1099f6a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M6 8c0-1.1.9-2 2-2h2l1-1h2l1 1h2c1.1 0 2 .9 2 2H6zm1 1h10l-1 11H8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash.png
deleted file mode 100644 (file)
index b3e899d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash.svg
deleted file mode 100644 (file)
index 76502dc..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M6 8c0-1.1.9-2 2-2h2l1-1h2l1 1h2c1.1 0 2 .9 2 2H6zm1 1h10l-1 11H8z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-invert.png
deleted file mode 100644 (file)
index 6196d39..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-invert.svg
deleted file mode 100644 (file)
index 28442a3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M3 13.35l1.8-7.2c.2-.996.81-1.8 1.8-1.8h10.8c.99 0 1.6.867 1.8 1.8l1.8 7.2v4.5c0 .99-.81 1.8-1.8 1.8H4.8c-.99 0-1.8-.81-1.8-1.8v-4.5zm6.96 1.8h4.08c-.49.557-1.212.9-2.04.9a2.68 2.68 0 0 1-2.04-.9h4.08c.414-.472.66-1.098.66-1.8h4.14l-1.44-7.2H6.6l-1.44 7.2H9.3c0 .702.246 1.328.66 1.8z" id="tray"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-progressive.png
deleted file mode 100644 (file)
index f655449..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-progressive.svg
deleted file mode 100644 (file)
index 7b079ea..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M3 13.35l1.8-7.2c.2-.996.81-1.8 1.8-1.8h10.8c.99 0 1.6.867 1.8 1.8l1.8 7.2v4.5c0 .99-.81 1.8-1.8 1.8H4.8c-.99 0-1.8-.81-1.8-1.8v-4.5zm6.96 1.8h4.08c-.49.557-1.212.9-2.04.9a2.68 2.68 0 0 1-2.04-.9h4.08c.414-.472.66-1.098.66-1.8h4.14l-1.44-7.2H6.6l-1.44 7.2H9.3c0 .702.246 1.328.66 1.8z" id="tray"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray.png
deleted file mode 100644 (file)
index e5c5e8f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray.svg
deleted file mode 100644 (file)
index d7ab69b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M3 13.35l1.8-7.2c.2-.996.81-1.8 1.8-1.8h10.8c.99 0 1.6.867 1.8 1.8l1.8 7.2v4.5c0 .99-.81 1.8-1.8 1.8H4.8c-.99 0-1.8-.81-1.8-1.8v-4.5zm6.96 1.8h4.08c-.49.557-1.212.9-2.04.9a2.68 2.68 0 0 1-2.04-.9h4.08c.414-.472.66-1.098.66-1.8h4.14l-1.44-7.2H6.6l-1.44 7.2H9.3c0 .702.246 1.328.66 1.8z" id="tray"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-invert.png
deleted file mode 100644 (file)
index 7426f56..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-invert.svg
deleted file mode 100644 (file)
index 148da47..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M17 11v2h-2l3.6 3.6c.9-1.3 1.4-2.9 1.4-4.6 0-4.4-3.6-8-8-8-1.7 0-3.3.5-4.6 1.4L13 11h4zM4 4L3 5l2.4 2.4C4.5 8.7 4 10.3 4 12c0 4.4 3.6 8 8 8 1.7 0 3.3-.5 4.6-1.4L19 21l1-1L4 4zm3 9v-2h2l2 2H7z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-progressive.png
deleted file mode 100644 (file)
index d797f3e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-progressive.svg
deleted file mode 100644 (file)
index e80e6ae..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M17 11v2h-2l3.6 3.6c.9-1.3 1.4-2.9 1.4-4.6 0-4.4-3.6-8-8-8-1.7 0-3.3.5-4.6 1.4L13 11h4zM4 4L3 5l2.4 2.4C4.5 8.7 4 10.3 4 12c0 4.4 3.6 8 8 8 1.7 0 3.3-.5 4.6-1.4L19 21l1-1L4 4zm3 9v-2h2l2 2H7z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr.png
deleted file mode 100644 (file)
index 640bb2a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr.svg
deleted file mode 100644 (file)
index 160219c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M17 11v2h-2l3.6 3.6c.9-1.3 1.4-2.9 1.4-4.6 0-4.4-3.6-8-8-8-1.7 0-3.3.5-4.6 1.4L13 11h4zM4 4L3 5l2.4 2.4C4.5 8.7 4 10.3 4 12c0 4.4 3.6 8 8 8 1.7 0 3.3-.5 4.6-1.4L19 21l1-1L4 4zm3 9v-2h2l2 2H7z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-invert.png
deleted file mode 100644 (file)
index a02e2e0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-invert.svg
deleted file mode 100644 (file)
index 8aace96..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M7 11v2h2l-3.6 3.6C4.5 15.3 4 13.7 4 12c0-4.4 3.6-8 8-8 1.7 0 3.3.5 4.6 1.4L11 11H7zm13-7l1 1-2.4 2.4c.9 1.3 1.4 2.9 1.4 4.6 0 4.4-3.6 8-8 8-1.7 0-3.3-.5-4.6-1.4L5 21l-1-1L20 4zm-3 9v-2h-2l-2 2h4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-progressive.png
deleted file mode 100644 (file)
index 4d062cb..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-progressive.svg
deleted file mode 100644 (file)
index 1337e16..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M7 11v2h2l-3.6 3.6C4.5 15.3 4 13.7 4 12c0-4.4 3.6-8 8-8 1.7 0 3.3.5 4.6 1.4L11 11H7zm13-7l1 1-2.4 2.4c.9 1.3 1.4 2.9 1.4 4.6 0 4.4-3.6 8-8 8-1.7 0-3.3-.5-4.6-1.4L5 21l-1-1L20 4zm-3 9v-2h-2l-2 2h4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl.png
deleted file mode 100644 (file)
index 2475b06..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl.svg
deleted file mode 100644 (file)
index 90fe46a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M7 11v2h2l-3.6 3.6C4.5 15.3 4 13.7 4 12c0-4.4 3.6-8 8-8 1.7 0 3.3.5 4.6 1.4L11 11H7zm13-7l1 1-2.4 2.4c.9 1.3 1.4 2.9 1.4 4.6 0 4.4-3.6 8-8 8-1.7 0-3.3-.5-4.6-1.4L5 21l-1-1L20 4zm-3 9v-2h-2l-2 2h4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-invert.png
deleted file mode 100644 (file)
index 8338017..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-invert.svg
deleted file mode 100644 (file)
index dba18af..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-       <path d="M19.9 19.6l-16-16-1.1 1.1L6 7.9V20h1v-7c.6-.6 2-.8 3.4-.7l8.4 8.4 1.1-1.1zM17 14V7c-.7.7-2.7.9-4 .5V6c-1.2-1.3-3.9-1.3-5.4-.5l8.9 9c.3-.2.4-.3.5-.5z"/>
-</g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-progressive.png
deleted file mode 100644 (file)
index bf1a6e0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-progressive.svg
deleted file mode 100644 (file)
index e84befe..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-       <path d="M19.9 19.6l-16-16-1.1 1.1L6 7.9V20h1v-7c.6-.6 2-.8 3.4-.7l8.4 8.4 1.1-1.1zM17 14V7c-.7.7-2.7.9-4 .5V6c-1.2-1.3-3.9-1.3-5.4-.5l8.9 9c.3-.2.4-.3.5-.5z"/>
-</g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr.png
deleted file mode 100644 (file)
index 780cb87..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr.svg
deleted file mode 100644 (file)
index 4bbd61c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-       <path d="M19.9 19.6l-16-16-1.1 1.1L6 7.9V20h1v-7c.6-.6 2-.8 3.4-.7l8.4 8.4 1.1-1.1zM17 14V7c-.7.7-2.7.9-4 .5V6c-1.2-1.3-3.9-1.3-5.4-.5l8.9 9c.3-.2.4-.3.5-.5z"/>
-</svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-invert.png
deleted file mode 100644 (file)
index 4f9c3ad..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-invert.svg
deleted file mode 100644 (file)
index 88256ec..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-       <path d="M3.5 19.6l16-16 1.1 1.1-3.2 3.2V20h-1v-7c-.6-.6-2-.8-3.4-.7l-8.4 8.4-1.1-1.1zM6.3 14V7c.7.7 2.7.9 4 .5V6c1.2-1.3 3.9-1.3 5.4-.5l-8.9 9c-.3-.2-.4-.3-.5-.5z"/>
-</g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-progressive.png
deleted file mode 100644 (file)
index 4abe9c8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-progressive.svg
deleted file mode 100644 (file)
index fcb4d11..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-       <path d="M3.5 19.6l16-16 1.1 1.1-3.2 3.2V20h-1v-7c-.6-.6-2-.8-3.4-.7l-8.4 8.4-1.1-1.1zM6.3 14V7c.7.7 2.7.9 4 .5V6c1.2-1.3 3.9-1.3 5.4-.5l-8.9 9c-.3-.2-.4-.3-.5-.5z"/>
-</g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl.png
deleted file mode 100644 (file)
index fa3696a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl.svg
deleted file mode 100644 (file)
index 5d94425..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-       <path d="M3.5 19.6l16-16 1.1 1.1-3.2 3.2V20h-1v-7c-.6-.6-2-.8-3.4-.7l-8.4 8.4-1.1-1.1zM6.3 14V7c.7.7 2.7.9 4 .5V6c1.2-1.3 3.9-1.3 5.4-.5l-8.9 9c-.3-.2-.4-.3-.5-.5z"/>
-</svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-destructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-destructive.png
deleted file mode 100644 (file)
index 2cb27f1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-destructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-destructive.svg
deleted file mode 100644 (file)
index cf82e1f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
-    <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-invert.png
deleted file mode 100644 (file)
index 68c1437..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-invert.svg
deleted file mode 100644 (file)
index 3c6f966..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-progressive.png
deleted file mode 100644 (file)
index 6f6a5d4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-progressive.svg
deleted file mode 100644 (file)
index 55b8cc3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr.png
deleted file mode 100644 (file)
index e6d9aae..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr.svg
deleted file mode 100644 (file)
index 25e0860..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-destructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-destructive.png
deleted file mode 100644 (file)
index fac51b9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-destructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-destructive.svg
deleted file mode 100644 (file)
index d70f3a9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
-    <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-invert.png
deleted file mode 100644 (file)
index d50b4c7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-invert.svg
deleted file mode 100644 (file)
index bfe53ad..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-progressive.png
deleted file mode 100644 (file)
index a7e7d32..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-progressive.svg
deleted file mode 100644 (file)
index 20e4afa..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl.png
deleted file mode 100644 (file)
index 0529c16..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl.svg
deleted file mode 100644 (file)
index 577b570..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-constructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-constructive.png
deleted file mode 100644 (file)
index 580d694..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-constructive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-constructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-constructive.svg
deleted file mode 100644 (file)
index 7265f4a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M21 11l-6-1-3-6-3 6-6 1 4 4-1 6 6-3 6 3-1-6 4-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-invert.png
deleted file mode 100644 (file)
index 20ce036..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-invert.svg
deleted file mode 100644 (file)
index b34f49b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M21 11l-6-1-3-6-3 6-6 1 4 4-1 6 6-3 6 3-1-6 4-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-progressive.png
deleted file mode 100644 (file)
index 580d694..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-progressive.svg
deleted file mode 100644 (file)
index 7265f4a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M21 11l-6-1-3-6-3 6-6 1 4 4-1 6 6-3 6 3-1-6 4-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar.png
deleted file mode 100644 (file)
index 2329af3..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar.svg
deleted file mode 100644 (file)
index 724d190..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M21 11l-6-1-3-6-3 6-6 1 4 4-1 6 6-3 6 3-1-6 4-4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-invert.png
deleted file mode 100644 (file)
index af3f0e9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-invert.svg
deleted file mode 100644 (file)
index efa8e83..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M20.5 20.5L5 5 4 6l3 3 1 11h8l.2-1.8 3.3 3.3zM17 9h-6l5.5 5.5zm1-1c0-1.1-.9-2-2-2h-2l-1-1h-2l-1 1H8l2 2h8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-progressive.png
deleted file mode 100644 (file)
index 2f09eb6..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-progressive.svg
deleted file mode 100644 (file)
index c5bf2cc..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M20.5 20.5L5 5 4 6l3 3 1 11h8l.2-1.8 3.3 3.3zM17 9h-6l5.5 5.5zm1-1c0-1.1-.9-2-2-2h-2l-1-1h-2l-1 1H8l2 2h8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr.png
deleted file mode 100644 (file)
index 3b5231f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr.svg
deleted file mode 100644 (file)
index 64b3b71..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M20.5 20.5L5 5 4 6l3 3 1 11h8l.2-1.8 3.3 3.3zM17 9h-6l5.5 5.5zm1-1c0-1.1-.9-2-2-2h-2l-1-1h-2l-1 1H8l2 2h8z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-invert.png
deleted file mode 100644 (file)
index 1cb5449..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-invert.svg
deleted file mode 100644 (file)
index 3fb2085..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M4 20.5L19.5 5l1 1-3 3-1 11h-8l-.2-1.8L5 21.5zM7.5 9h6L8 14.5zm-1-1c0-1.1.9-2 2-2h2l1-1h2l1 1h2l-2 2h-8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-progressive.png
deleted file mode 100644 (file)
index e828b36..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-progressive.svg
deleted file mode 100644 (file)
index 0a67774..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M4 20.5L19.5 5l1 1-3 3-1 11h-8l-.2-1.8L5 21.5zM7.5 9h6L8 14.5zm-1-1c0-1.1.9-2 2-2h2l1-1h2l1 1h2l-2 2h-8z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl.png
deleted file mode 100644 (file)
index a1d2388..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl.svg
deleted file mode 100644 (file)
index e5e4032..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M4 20.5L19.5 5l1 1-3 3-1 11h-8l-.2-1.8L5 21.5zM7.5 9h6L8 14.5zm-1-1c0-1.1.9-2 2-2h2l1-1h2l1 1h2l-2 2h-8z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-invert.png
deleted file mode 100644 (file)
index 8a6ca42..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-invert.svg
deleted file mode 100644 (file)
index 3078617..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="underline-a">
-        <path id="a" d="M14.424 16H16.5L13.037 6H10.96L7.5 16h2.077l.627-2h3.604l.616 2zm-3.92-3.623L12 7.997l1.51 4.38h-3z"/>
-        <path id="underline" d="M7 17h10v1H7v-1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-progressive.png
deleted file mode 100644 (file)
index f84ad6c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-progressive.svg
deleted file mode 100644 (file)
index 99d9dad..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="underline-a">
-        <path id="a" d="M14.424 16H16.5L13.037 6H10.96L7.5 16h2.077l.627-2h3.604l.616 2zm-3.92-3.623L12 7.997l1.51 4.38h-3z"/>
-        <path id="underline" d="M7 17h10v1H7v-1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a.png
deleted file mode 100644 (file)
index 78a3c3f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a.svg
deleted file mode 100644 (file)
index 1ddae10..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="underline-a">
-        <path id="a" d="M14.424 16H16.5L13.037 6H10.96L7.5 16h2.077l.627-2h3.604l.616 2zm-3.92-3.623L12 7.997l1.51 4.38h-3z"/>
-        <path id="underline" d="M7 17h10v1H7v-1z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-invert.png
deleted file mode 100644 (file)
index 9f0af6c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-invert.svg
deleted file mode 100644 (file)
index 8136276..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="underline-u">
-        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.658-1.666.98-2.98.98-1.32 0-2.32-.32-2.996-.98C8.336 14.37 8 13.41 8 12.13V6"/>
-        <path id="underline" d="M7 17h10v1H7v-1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-progressive.png
deleted file mode 100644 (file)
index a8bcf2d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-progressive.svg
deleted file mode 100644 (file)
index 2953213..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="underline-u">
-        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.658-1.666.98-2.98.98-1.32 0-2.32-.32-2.996-.98C8.336 14.37 8 13.41 8 12.13V6"/>
-        <path id="underline" d="M7 17h10v1H7v-1z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u.png
deleted file mode 100644 (file)
index 0dbeb80..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u.svg
deleted file mode 100644 (file)
index ff47e2c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="underline-u">
-        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.658-1.666.98-2.98.98-1.32 0-2.32-.32-2.996-.98C8.336 14.37 8 13.41 8 12.13V6"/>
-        <path id="underline" d="M7 17h10v1H7v-1z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-invert.png
deleted file mode 100644 (file)
index 9fcea7f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-invert.svg
deleted file mode 100644 (file)
index e5c84a9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M12 8l8 10H4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-progressive.png
deleted file mode 100644 (file)
index 5cc7e79..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-progressive.svg
deleted file mode 100644 (file)
index b6bbc97..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M12 8l8 10H4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle.png
deleted file mode 100644 (file)
index f1aca31..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle.svg
deleted file mode 100644 (file)
index 9f0efc5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 8l8 10H4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-invert.png
deleted file mode 100644 (file)
index aa26066..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-invert.svg
deleted file mode 100644 (file)
index 4a7cf26..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M10 13c0 1.7 1.3 3 3 3V9h3l-4.5-5L7 9h3v4zm7 0v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-progressive.png
deleted file mode 100644 (file)
index 7ec3b64..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-progressive.svg
deleted file mode 100644 (file)
index 85bb62f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M10 13c0 1.7 1.3 3 3 3V9h3l-4.5-5L7 9h3v4zm7 0v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr.png
deleted file mode 100644 (file)
index 08e31e9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr.svg
deleted file mode 100644 (file)
index dc4676f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M10 13c0 1.7 1.3 3 3 3V9h3l-4.5-5L7 9h3v4zm7 0v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-invert.png
deleted file mode 100644 (file)
index 602ae42..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-invert.svg
deleted file mode 100644 (file)
index d347e6a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M13 13c0 1.7-1.3 3-3 3V9H7l4.5-5L16 9h-3v4zm-7 0v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-progressive.png
deleted file mode 100644 (file)
index 42fb647..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-progressive.svg
deleted file mode 100644 (file)
index d367074..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M13 13c0 1.7-1.3 3-3 3V9H7l4.5-5L16 9h-3v4zm-7 0v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl.png
deleted file mode 100644 (file)
index ccabf98..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl.svg
deleted file mode 100644 (file)
index ed3fe77..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M13 13c0 1.7-1.3 3-3 3V9H7l4.5-5L16 9h-3v4zm-7 0v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-invert.png
deleted file mode 100644 (file)
index 98083be..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-invert.svg
deleted file mode 100644 (file)
index beefd8d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M16 5H4v12c0 1.7 1.3 3 3 3h12V8c0-1.7-1.3-3-3-3zm-2 4c.7 0 1.2.6 1.2 1.2s-.6 1.2-1.2 1.2-1.2-.6-1.2-1.2S13.3 9 14 9zM9 9c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2S8.3 9 9 9zm7 5.4c0 .2-.1.3-.3.5-.7.6-1.6 1-2.6 1.3s-2.1.2-3.1 0-2-.9-2.7-1.5c-.1-.1-.2-.3-.2-.4s.1-.3.2-.4c.1-.1.3-.2.4-.2.2 0 .3.1.4.2.5.5 1.2.9 2.1 1.1s1.7.2 2.6 0 1.6-.5 2.1-1c.1-.1.3-.2.4-.2s.3.1.5.2.2.2.2.4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-progressive.png
deleted file mode 100644 (file)
index decc2ca..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-progressive.svg
deleted file mode 100644 (file)
index 3232e97..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M16 5H4v12c0 1.7 1.3 3 3 3h12V8c0-1.7-1.3-3-3-3zm-2 4c.7 0 1.2.6 1.2 1.2s-.6 1.2-1.2 1.2-1.2-.6-1.2-1.2S13.3 9 14 9zM9 9c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2S8.3 9 9 9zm7 5.4c0 .2-.1.3-.3.5-.7.6-1.6 1-2.6 1.3s-2.1.2-3.1 0-2-.9-2.7-1.5c-.1-.1-.2-.3-.2-.4s.1-.3.2-.4c.1-.1.3-.2.4-.2.2 0 .3.1.4.2.5.5 1.2.9 2.1 1.1s1.7.2 2.6 0 1.6-.5 2.1-1c.1-.1.3-.2.4-.2s.3.1.5.2.2.2.2.4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr.png
deleted file mode 100644 (file)
index ce385f9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr.svg
deleted file mode 100644 (file)
index 7f526e5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M16 5H4v12c0 1.7 1.3 3 3 3h12V8c0-1.7-1.3-3-3-3zm-2 4c.7 0 1.2.6 1.2 1.2s-.6 1.2-1.2 1.2-1.2-.6-1.2-1.2S13.3 9 14 9zM9 9c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2S8.3 9 9 9zm7 5.4c0 .2-.1.3-.3.5-.7.6-1.6 1-2.6 1.3s-2.1.2-3.1 0-2-.9-2.7-1.5c-.1-.1-.2-.3-.2-.4s.1-.3.2-.4c.1-.1.3-.2.4-.2.2 0 .3.1.4.2.5.5 1.2.9 2.1 1.1s1.7.2 2.6 0 1.6-.5 2.1-1c.1-.1.3-.2.4-.2s.3.1.5.2.2.2.2.4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-invert.png
deleted file mode 100644 (file)
index 3dc0f44..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-invert.svg
deleted file mode 100644 (file)
index 08a382a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm2 4c-.7 0-1.2.6-1.2 1.2s.6 1.2 1.2 1.2 1.2-.6 1.2-1.2S9.7 9 9 9zm5 0c-.7 0-1.2.6-1.2 1.2s.5 1.3 1.2 1.3 1.2-.6 1.2-1.2S14.7 9 14 9zm-7 5.4c0 .2.1.3.3.5.7.6 1.6 1 2.6 1.3 1 .3 2.1.2 3.1 0s2-.9 2.7-1.5c.1-.1.2-.3.2-.4 0-.1-.1-.3-.2-.4-.1-.1-.3-.2-.4-.2-.2 0-.3.1-.4.2-.5.5-1.2.9-2.1 1.1-.9.2-1.7.2-2.6 0-.9-.2-1.6-.5-2.1-1-.1-.1-.3-.2-.4-.2-.1 0-.3.1-.5.2s-.2.2-.2.4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-progressive.png
deleted file mode 100644 (file)
index fde69b8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-progressive.svg
deleted file mode 100644 (file)
index c38292e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm2 4c-.7 0-1.2.6-1.2 1.2s.6 1.2 1.2 1.2 1.2-.6 1.2-1.2S9.7 9 9 9zm5 0c-.7 0-1.2.6-1.2 1.2s.5 1.3 1.2 1.3 1.2-.6 1.2-1.2S14.7 9 14 9zm-7 5.4c0 .2.1.3.3.5.7.6 1.6 1 2.6 1.3 1 .3 2.1.2 3.1 0s2-.9 2.7-1.5c.1-.1.2-.3.2-.4 0-.1-.1-.3-.2-.4-.1-.1-.3-.2-.4-.2-.2 0-.3.1-.4.2-.5.5-1.2.9-2.1 1.1-.9.2-1.7.2-2.6 0-.9-.2-1.6-.5-2.1-1-.1-.1-.3-.2-.4-.2-.1 0-.3.1-.5.2s-.2.2-.2.4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl.png
deleted file mode 100644 (file)
index ee1afbc..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl.svg
deleted file mode 100644 (file)
index 838ae31..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm2 4c-.7 0-1.2.6-1.2 1.2s.6 1.2 1.2 1.2 1.2-.6 1.2-1.2S9.7 9 9 9zm5 0c-.7 0-1.2.6-1.2 1.2s.5 1.3 1.2 1.3 1.2-.6 1.2-1.2S14.7 9 14 9zm-7 5.4c0 .2.1.3.3.5.7.6 1.6 1 2.6 1.3 1 .3 2.1.2 3.1 0s2-.9 2.7-1.5c.1-.1.2-.3.2-.4 0-.1-.1-.3-.2-.4-.1-.1-.3-.2-.4-.2-.2 0-.3.1-.4.2-.5.5-1.2.9-2.1 1.1-.9.2-1.7.2-2.6 0-.9-.2-1.6-.5-2.1-1-.1-.1-.3-.2-.4-.2-.1 0-.3.1-.5.2s-.2.2-.2.4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-invert.png
deleted file mode 100644 (file)
index 1f4d3a4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-invert.svg
deleted file mode 100644 (file)
index 5f4e136..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M18.75 17.4c-1.08-.36-3.6-1.35-3.6-1.35-.81-.27-.81-.99-.9-1.8v-.09c1.26-1.08 2.25-2.88 2.25-4.86 0-4.23-1.8-5.85-4.5-5.85-1.89 0-4.5 1.08-4.5 5.85 0 1.89.99 3.69 2.25 4.86v.09c0 .81-.09 1.53-.9 1.8 0 0-2.61.99-3.6 1.35-1.17.36-2.25.9-2.25 2.25v.9h18v-.9c0-1.08-.72-1.8-2.25-2.25z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-progressive.png
deleted file mode 100644 (file)
index 74b699b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-progressive.svg
deleted file mode 100644 (file)
index 26ae8b6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M18.75 17.4c-1.08-.36-3.6-1.35-3.6-1.35-.81-.27-.81-.99-.9-1.8v-.09c1.26-1.08 2.25-2.88 2.25-4.86 0-4.23-1.8-5.85-4.5-5.85-1.89 0-4.5 1.08-4.5 5.85 0 1.89.99 3.69 2.25 4.86v.09c0 .81-.09 1.53-.9 1.8 0 0-2.61.99-3.6 1.35-1.17.36-2.25.9-2.25 2.25v.9h18v-.9c0-1.08-.72-1.8-2.25-2.25z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar.png
deleted file mode 100644 (file)
index 8190095..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar.svg
deleted file mode 100644 (file)
index ce714e6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M18.75 17.4c-1.08-.36-3.6-1.35-3.6-1.35-.81-.27-.81-.99-.9-1.8v-.09c1.26-1.08 2.25-2.88 2.25-4.86 0-4.23-1.8-5.85-4.5-5.85-1.89 0-4.5 1.08-4.5 5.85 0 1.89.99 3.69 2.25 4.86v.09c0 .81-.09 1.53-.9 1.8 0 0-2.61.99-3.6 1.35-1.17.36-2.25.9-2.25 2.25v.9h18v-.9c0-1.08-.72-1.8-2.25-2.25z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-invert.png
deleted file mode 100644 (file)
index db34f59..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-invert.svg
deleted file mode 100644 (file)
index 075ea5c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M16 5H4v12c0 1.7 1.3 3 3 3h12V8c0-1.7-1.3-3-3-3zm-9.3 5.4C6.2 10 6 9.6 6 9c.6.6 1.5.9 2.5.9s1.9-.3 2.5-.9c0 .6-.2 1-.7 1.4-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6zm8.4 4.3c0 .2-.1.3-.3.4-1 .6-2.2.9-3.5.9-1.2 0-2.3-.3-3.3-1-.2-.1-.2-.2-.3-.4s0-.3.1-.5.2-.2.4-.3.3 0 .5.1c.8.5 1.7.8 2.8.8s2-.2 2.8-.7c.1-.1.3-.1.5-.1s.3.1.4.3l-.1.5zm1.2-4.3c-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6S12 9.6 12 9c.6.6 1.5.9 2.5.9s1.9-.3 2.5-.9c0 .6-.2 1-.7 1.4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-progressive.png
deleted file mode 100644 (file)
index 4d7f0eb..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-progressive.svg
deleted file mode 100644 (file)
index f48929d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M16 5H4v12c0 1.7 1.3 3 3 3h12V8c0-1.7-1.3-3-3-3zm-9.3 5.4C6.2 10 6 9.6 6 9c.6.6 1.5.9 2.5.9s1.9-.3 2.5-.9c0 .6-.2 1-.7 1.4-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6zm8.4 4.3c0 .2-.1.3-.3.4-1 .6-2.2.9-3.5.9-1.2 0-2.3-.3-3.3-1-.2-.1-.2-.2-.3-.4s0-.3.1-.5.2-.2.4-.3.3 0 .5.1c.8.5 1.7.8 2.8.8s2-.2 2.8-.7c.1-.1.3-.1.5-.1s.3.1.4.3l-.1.5zm1.2-4.3c-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6S12 9.6 12 9c.6.6 1.5.9 2.5.9s1.9-.3 2.5-.9c0 .6-.2 1-.7 1.4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr.png
deleted file mode 100644 (file)
index 05170e1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr.svg
deleted file mode 100644 (file)
index e58bbc3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M16 5H4v12c0 1.7 1.3 3 3 3h12V8c0-1.7-1.3-3-3-3zm-9.3 5.4C6.2 10 6 9.6 6 9c.6.6 1.5.9 2.5.9s1.9-.3 2.5-.9c0 .6-.2 1-.7 1.4-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6zm8.4 4.3c0 .2-.1.3-.3.4-1 .6-2.2.9-3.5.9-1.2 0-2.3-.3-3.3-1-.2-.1-.2-.2-.3-.4s0-.3.1-.5.2-.2.4-.3.3 0 .5.1c.8.5 1.7.8 2.8.8s2-.2 2.8-.7c.1-.1.3-.1.5-.1s.3.1.4.3l-.1.5zm1.2-4.3c-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6S12 9.6 12 9c.6.6 1.5.9 2.5.9s1.9-.3 2.5-.9c0 .6-.2 1-.7 1.4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-invert.png
deleted file mode 100644 (file)
index 8fe830a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-invert.svg
deleted file mode 100644 (file)
index 0b3aa4d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm9.3 5.4c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S12.6 9.6 12 9c0 .6.2 1 .7 1.4.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6zm-8.4 4.3c0 .2.1.3.3.4 1 .6 2.2.9 3.5.9 1.2 0 2.3-.3 3.3-1 .2-.1.2-.2.3-.4.1-.2 0-.3-.1-.5s-.2-.2-.4-.3c-.2-.1-.3 0-.5.1-.8.5-1.7.8-2.8.8-1.1 0-2-.2-2.8-.7-.1-.1-.3-.1-.5-.1s-.3.1-.4.3l.1.5zm-1.2-4.3c.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S6.6 9.6 6 9c0 .6.2 1 .7 1.4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-progressive.png
deleted file mode 100644 (file)
index 10ebac4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-progressive.svg
deleted file mode 100644 (file)
index 76d950c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm9.3 5.4c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S12.6 9.6 12 9c0 .6.2 1 .7 1.4.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6zm-8.4 4.3c0 .2.1.3.3.4 1 .6 2.2.9 3.5.9 1.2 0 2.3-.3 3.3-1 .2-.1.2-.2.3-.4.1-.2 0-.3-.1-.5s-.2-.2-.4-.3c-.2-.1-.3 0-.5.1-.8.5-1.7.8-2.8.8-1.1 0-2-.2-2.8-.7-.1-.1-.3-.1-.5-.1s-.3.1-.4.3l.1.5zm-1.2-4.3c.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S6.6 9.6 6 9c0 .6.2 1 .7 1.4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl.png
deleted file mode 100644 (file)
index bf953f1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl.svg
deleted file mode 100644 (file)
index 039e662..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm9.3 5.4c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S12.6 9.6 12 9c0 .6.2 1 .7 1.4.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6zm-8.4 4.3c0 .2.1.3.3.4 1 .6 2.2.9 3.5.9 1.2 0 2.3-.3 3.3-1 .2-.1.2-.2.3-.4.1-.2 0-.3-.1-.5s-.2-.2-.4-.3c-.2-.1-.3 0-.5.1-.8.5-1.7.8-2.8.8-1.1 0-2-.2-2.8-.7-.1-.1-.3-.1-.5-.1s-.3.1-.4.3l.1.5zm-1.2-4.3c.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S6.6 9.6 6 9c0 .6.2 1 .7 1.4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-invert.png
deleted file mode 100644 (file)
index 332bcba..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-invert.svg
deleted file mode 100644 (file)
index 934128f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm11.2 2.5c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2.6-1.3 1.2-1.3zm-5.4 0c.7 0 1.2.6 1.2 1.2s-.6 1.3-1.2 1.3-1.2-.6-1.2-1.2.5-1.3 1.2-1.3zm2.7 8.5c-5.1 0-6-5-6-5s2 1 6 1l6-1s-1 5-6 5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-progressive.png
deleted file mode 100644 (file)
index 2ef91f0..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-progressive.svg
deleted file mode 100644 (file)
index 232a04a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm11.2 2.5c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2.6-1.3 1.2-1.3zm-5.4 0c.7 0 1.2.6 1.2 1.2s-.6 1.3-1.2 1.3-1.2-.6-1.2-1.2.5-1.3 1.2-1.3zm2.7 8.5c-5.1 0-6-5-6-5s2 1 6 1l6-1s-1 5-6 5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr.png
deleted file mode 100644 (file)
index 18981fd..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr.svg
deleted file mode 100644 (file)
index f277ce4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm11.2 2.5c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2.6-1.3 1.2-1.3zm-5.4 0c.7 0 1.2.6 1.2 1.2s-.6 1.3-1.2 1.3-1.2-.6-1.2-1.2.5-1.3 1.2-1.3zm2.7 8.5c-5.1 0-6-5-6-5s2 1 6 1l6-1s-1 5-6 5z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-invert.png
deleted file mode 100644 (file)
index 187f3e6..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-invert.svg
deleted file mode 100644 (file)
index 5c48db2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M19 6v11l3 3H5c-1.7 0-3-1.3-3-3V6h17zM7.8 8.5c-.7 0-1.2.6-1.2 1.2S7.1 11 7.8 11 9 10.4 9 9.8s-.6-1.3-1.2-1.3zm5.4 0c-.7 0-1.2.6-1.2 1.2s.6 1.3 1.2 1.3 1.2-.6 1.2-1.2-.5-1.3-1.2-1.3zM10.5 17c5.1 0 6-5 6-5s-2 1-6 1l-6-1s1 5 6 5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-progressive.png
deleted file mode 100644 (file)
index 91c703d..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-progressive.svg
deleted file mode 100644 (file)
index 2a2b17b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M19 6v11l3 3H5c-1.7 0-3-1.3-3-3V6h17zM7.8 8.5c-.7 0-1.2.6-1.2 1.2S7.1 11 7.8 11 9 10.4 9 9.8s-.6-1.3-1.2-1.3zm5.4 0c-.7 0-1.2.6-1.2 1.2s.6 1.3 1.2 1.3 1.2-.6 1.2-1.2-.5-1.3-1.2-1.3zM10.5 17c5.1 0 6-5 6-5s-2 1-6 1l-6-1s1 5 6 5z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl.png
deleted file mode 100644 (file)
index 7122efa..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl.svg
deleted file mode 100644 (file)
index 0f9a6fb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M19 6v11l3 3H5c-1.7 0-3-1.3-3-3V6h17zM7.8 8.5c-.7 0-1.2.6-1.2 1.2S7.1 11 7.8 11 9 10.4 9 9.8s-.6-1.3-1.2-1.3zm5.4 0c-.7 0-1.2.6-1.2 1.2s.6 1.3 1.2 1.3 1.2-.6 1.2-1.2-.5-1.3-1.2-1.3zM10.5 17c5.1 0 6-5 6-5s-2 1-6 1l-6-1s1 5 6 5z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-invert.png
deleted file mode 100644 (file)
index e716ba5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-invert.svg
deleted file mode 100644 (file)
index b70f4f9..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="viewCompact">
-        <circle cx="6" cy="6" r="2"/>
-        <circle cx="12" cy="6" r="2"/>
-        <circle cx="18" cy="6" r="2"/>
-        <circle cx="6" cy="12" r="2"/>
-        <circle cx="12" cy="12" r="2"/>
-        <circle cx="18" cy="12" r="2"/>
-        <circle cx="6" cy="18" r="2"/>
-        <circle cx="12" cy="18" r="2"/>
-        <circle cx="18" cy="18" r="2"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-progressive.png
deleted file mode 100644 (file)
index 545814b..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-progressive.svg
deleted file mode 100644 (file)
index a7edfc5..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="viewCompact">
-        <circle cx="6" cy="6" r="2"/>
-        <circle cx="12" cy="6" r="2"/>
-        <circle cx="18" cy="6" r="2"/>
-        <circle cx="6" cy="12" r="2"/>
-        <circle cx="12" cy="12" r="2"/>
-        <circle cx="18" cy="12" r="2"/>
-        <circle cx="6" cy="18" r="2"/>
-        <circle cx="12" cy="18" r="2"/>
-        <circle cx="18" cy="18" r="2"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact.png
deleted file mode 100644 (file)
index 13fe420..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact.svg
deleted file mode 100644 (file)
index d96a2e3..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="viewCompact">
-        <circle cx="6" cy="6" r="2"/>
-        <circle cx="12" cy="6" r="2"/>
-        <circle cx="18" cy="6" r="2"/>
-        <circle cx="6" cy="12" r="2"/>
-        <circle cx="12" cy="12" r="2"/>
-        <circle cx="18" cy="12" r="2"/>
-        <circle cx="6" cy="18" r="2"/>
-        <circle cx="12" cy="18" r="2"/>
-        <circle cx="18" cy="18" r="2"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-invert.png
deleted file mode 100644 (file)
index 3ea093a..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-invert.svg
deleted file mode 100644 (file)
index 1e349b3..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="viewDetails">
-        <circle cx="5.5" cy="8.5" r="2.5"/>
-        <path d="M10 6h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/>
-        <circle cx="5.5" cy="16.5" r="2.5"/>
-        <path d="M10 14h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-progressive.png
deleted file mode 100644 (file)
index 9cef283..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-progressive.svg
deleted file mode 100644 (file)
index c6588c2..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="viewDetails">
-        <circle cx="5.5" cy="8.5" r="2.5"/>
-        <path d="M10 6h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/>
-        <circle cx="5.5" cy="16.5" r="2.5"/>
-        <path d="M10 14h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr.png
deleted file mode 100644 (file)
index 4341f0e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr.svg
deleted file mode 100644 (file)
index 1a5092a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="viewDetails">
-        <circle cx="5.5" cy="8.5" r="2.5"/>
-        <path d="M10 6h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/>
-        <circle cx="5.5" cy="16.5" r="2.5"/>
-        <path d="M10 14h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-invert.png
deleted file mode 100644 (file)
index ea861d8..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-invert.svg
deleted file mode 100644 (file)
index f2d6a87..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="viewDetails">
-        <circle cx="18.5" cy="8.5" r="2.5"/>
-        <path d="M14 6H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/>
-        <circle cx="18.5" cy="16.5" r="2.5"/>
-        <path d="M14 14H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-progressive.png
deleted file mode 100644 (file)
index 0317820..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-progressive.svg
deleted file mode 100644 (file)
index 9b7b78d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="viewDetails">
-        <circle cx="18.5" cy="8.5" r="2.5"/>
-        <path d="M14 6H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/>
-        <circle cx="18.5" cy="16.5" r="2.5"/>
-        <path d="M14 14H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl.png
deleted file mode 100644 (file)
index 338294c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl.svg
deleted file mode 100644 (file)
index f43b05f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="viewDetails">
-        <circle cx="18.5" cy="8.5" r="2.5"/>
-        <path d="M14 6H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/>
-        <circle cx="18.5" cy="16.5" r="2.5"/>
-        <path d="M14 14H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.png
deleted file mode 100644 (file)
index e18ee17..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.svg
deleted file mode 100644 (file)
index 10edb0f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
-    <path d="M0 10v8h2.3c.3.6 1 1 1.7 1h4c1.5 0 2.7-.8 3-2h2c.3 1.2 1.5 2 3 2h4c.7 0 1.4 0 1.7-1H24v-8zm10 6c0 1-.4 2-2 2H4c-.6 0-1-.4-1-1v-3c0-.6.4-1 1-1h5c.6 0 1 .4 1 1zm11 1c0 .6-.4 1-1 1h-4c-1.6 0-2-1-2-2v-2c0-.6.4-1 1-1h5c.6 0 1 .4 1 1z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator.png
deleted file mode 100644 (file)
index afa5652..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator.svg
deleted file mode 100644 (file)
index ae6ba27..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M0 10v8h2.3c.3.6 1 1 1.7 1h4c1.5 0 2.7-.8 3-2h2c.3 1.2 1.5 2 3 2h4c.7 0 1.4 0 1.7-1H24v-8zm10 6c0 1-.4 2-2 2H4c-.6 0-1-.4-1-1v-3c0-.6.4-1 1-1h5c.6 0 1 .4 1 1zm11 1c0 .6-.4 1-1 1h-4c-1.6 0-2-1-2-2v-2c0-.6.4-1 1-1h5c.6 0 1 .4 1 1z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-invert.png
deleted file mode 100644 (file)
index 7018968..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-invert.svg
deleted file mode 100644 (file)
index ff99d08..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-progressive.png
deleted file mode 100644 (file)
index 1767614..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-progressive.svg
deleted file mode 100644 (file)
index 6d06ede..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr.png
deleted file mode 100644 (file)
index 53e7011..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr.svg
deleted file mode 100644 (file)
index b13df22..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-invert.png
deleted file mode 100644 (file)
index 28008b5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-invert.svg
deleted file mode 100644 (file)
index 50224d0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-progressive.png
deleted file mode 100644 (file)
index 53c5983..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-progressive.svg
deleted file mode 100644 (file)
index a2589bd..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl.png
deleted file mode 100644 (file)
index 8fc4df5..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl.svg
deleted file mode 100644 (file)
index a4ec49a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-invert.png
deleted file mode 100644 (file)
index 30ef53e..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-invert.svg
deleted file mode 100644 (file)
index 72601da..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="wikiText">
-        <path id="opening-bracket-inner" d="M7 19h3v-2H9V7h1V5H7z"/>
-        <path id="closing-bracket-inner" d="M17 19h-3v-2h1V7h-1V5h3z"/>
-        <path id="closing-bracket-outer" d="M21 19h-3v-2h1V7h-1V5h3z"/>
-        <path id="opening-bracket-outer" d="M3 19h3v-2H5V7h1V5H3z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-progressive.png
deleted file mode 100644 (file)
index e1f516c..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-progressive.svg
deleted file mode 100644 (file)
index f7ba89d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="wikiText">
-        <path id="opening-bracket-inner" d="M7 19h3v-2H9V7h1V5H7z"/>
-        <path id="closing-bracket-inner" d="M17 19h-3v-2h1V7h-1V5h3z"/>
-        <path id="closing-bracket-outer" d="M21 19h-3v-2h1V7h-1V5h3z"/>
-        <path id="opening-bracket-outer" d="M3 19h3v-2H5V7h1V5H3z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText.png
deleted file mode 100644 (file)
index 40309aa..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText.svg
deleted file mode 100644 (file)
index 4512cf5..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="wikiText">
-        <path id="opening-bracket-inner" d="M7 19h3v-2H9V7h1V5H7z"/>
-        <path id="closing-bracket-inner" d="M17 19h-3v-2h1V7h-1V5h3z"/>
-        <path id="closing-bracket-outer" d="M21 19h-3v-2h1V7h-1V5h3z"/>
-        <path id="opening-bracket-outer" d="M3 19h3v-2H5V7h1V5H3z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-invert.png
deleted file mode 100644 (file)
index 74c54ff..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-invert.svg
deleted file mode 100644 (file)
index bebd3a8..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
-    <g id="window">
-        <path id="title" d="M7 10h10v1H7z"/>
-        <path id="frame" d="M16 19H8c-2.206 0-4-1.794-4-4V9c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v6c0 2.206-1.794 4-4 4zM8 7c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2h8c1.103 0 2-.897 2-2V9c0-1.103-.897-2-2-2H8z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-progressive.png
deleted file mode 100644 (file)
index 2a18bea..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-progressive.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-progressive.svg
deleted file mode 100644 (file)
index 9204afe..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
-    <g id="window">
-        <path id="title" d="M7 10h10v1H7z"/>
-        <path id="frame" d="M16 19H8c-2.206 0-4-1.794-4-4V9c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v6c0 2.206-1.794 4-4 4zM8 7c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2h8c1.103 0 2-.897 2-2V9c0-1.103-.897-2-2-2H8z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/window.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/window.png
deleted file mode 100644 (file)
index bae13d7..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/window.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/window.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/window.svg
deleted file mode 100644 (file)
index 093c822..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="window">
-        <path id="title" d="M7 10h10v1H7z"/>
-        <path id="frame" d="M16 19H8c-2.206 0-4-1.794-4-4V9c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v6c0 2.206-1.794 4-4 4zM8 7c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2h8c1.103 0 2-.897 2-2V9c0-1.103-.897-2-2-2H8z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.png
deleted file mode 100644 (file)
index 035b626..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.svg
deleted file mode 100644 (file)
index a520175..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
-    <path d="M6 12A6 6 0 1 1 6 0a6 6 0 0 1 0 12zM5 7h2V2H5zm0 3h2V8H5z" id="alert"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert.png
deleted file mode 100644 (file)
index 9d25a24..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert.svg
deleted file mode 100644 (file)
index f94346a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
-    <path d="M6 12A6 6 0 1 1 6 0a6 6 0 0 1 0 12zM5 7h2V2H5zm0 3h2V8H5z" id="alert"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.png
deleted file mode 100644 (file)
index ae66af4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.svg
deleted file mode 100644 (file)
index b5e6144..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
-       <path d="M11.05 3.996l-.965-1.053-4.035 3.86-3.947-3.86L1.05 3.996l5 5 5-5"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down.png
deleted file mode 100644 (file)
index 34f5041..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down.svg
deleted file mode 100644 (file)
index d3e55d1..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
-       <path d="M11.05 3.996l-.965-1.053-4.035 3.86-3.947-3.86L1.05 3.996l5 5 5-5"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-invert.png
deleted file mode 100644 (file)
index 68bf475..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-invert.svg
deleted file mode 100644 (file)
index 78f4b51..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
-       <path d="M4.026 11l-1.052-.965L6.832 6 2.974 2.053 4.026 1l5 5-5 5"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr.png
deleted file mode 100644 (file)
index cadc38f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr.svg
deleted file mode 100644 (file)
index e99855b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
-       <path d="M4.026 11l-1.052-.965L6.832 6 2.974 2.053 4.026 1l5 5-5 5"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-invert.png
deleted file mode 100644 (file)
index fae56f1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-invert.svg
deleted file mode 100644 (file)
index bc0ff6f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
-       <path d="M7.974 11l1.052-.965L5.168 6l3.858-3.947L7.974 1l-5 5 5 5"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl.png
deleted file mode 100644 (file)
index 5a4c0b6..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl.svg
deleted file mode 100644 (file)
index 1647501..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
-       <path d="M7.974 11l1.052-.965L5.168 6l3.858-3.947L7.974 1l-5 5 5 5"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-invert.png
deleted file mode 100644 (file)
index 56eeea4..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-invert.svg
deleted file mode 100644 (file)
index 3c81ae5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
-       <path d="M11 7.974l-.965 1.052L6 5.168 2.053 9.026 1 7.974l5-5 5 5"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up.png
deleted file mode 100644 (file)
index 672b7f3..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up.svg
deleted file mode 100644 (file)
index ca93281..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
-       <path d="M11 7.974l-.965 1.052L6 5.168 2.053 9.026 1 7.974l5-5 5 5"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.png
deleted file mode 100644 (file)
index 82f5bf1..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.svg
deleted file mode 100644 (file)
index eb45dfc..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
-    <g id="clear">
-        <path id="circle-with-cross" d="M6 0C2.7 0 0 2.7 0 6s2.7 6 6 6 6-2.7 6-6-2.7-6-6-6zM3.5 2.5L6 5l2.5-2.5 1 1L7 6l2.5 2.5-1 1L6 7 3.5 9.5l-1-1L5 6 2.5 3.5z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear.png
deleted file mode 100644 (file)
index a858a03..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear.svg
deleted file mode 100644 (file)
index 3c010c1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
-    <g id="clear">
-        <path id="circle-with-cross" d="M6 0C2.7 0 0 2.7 0 6s2.7 6 6 6 6-2.7 6-6-2.7-6-6-6zM3.5 2.5L6 5l2.5-2.5 1 1L7 6l2.5 2.5-1 1L6 7 3.5 9.5l-1-1L5 6 2.5 3.5z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.png
deleted file mode 100644 (file)
index d9ff42f..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.svg
deleted file mode 100644 (file)
index efd0840..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
-    <path d="M5 1h2v10H5zm4.83 1.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z" id="required"/>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required.png
deleted file mode 100644 (file)
index aca9239..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required.svg
deleted file mode 100644 (file)
index 94b0066..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
-    <path d="M5 1h2v10H5zm4.83 1.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z" id="required"/>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.png
deleted file mode 100644 (file)
index 9529803..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.svg
deleted file mode 100644 (file)
index cc383ee..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
-    <g id="search">
-        <path id="magnifying-glass" d="M10.37 9.474L7.994 7.1l-.17-.1a3.45 3.45 0 0 0 .644-2.01A3.478 3.478 0 1 0 4.99 8.47c.75 0 1.442-.24 2.01-.648l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27a2.21 2.21 0 1 1 2.21-2.21A2.21 2.21 0 0 1 4.99 7.21z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr.png
deleted file mode 100644 (file)
index 123fbfa..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr.svg
deleted file mode 100644 (file)
index 80c72bb..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
-    <g id="search">
-        <path id="magnifying-glass" d="M10.37 9.474L7.994 7.1l-.17-.1a3.45 3.45 0 0 0 .644-2.01A3.478 3.478 0 1 0 4.99 8.47c.75 0 1.442-.24 2.01-.648l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27a2.21 2.21 0 1 1 2.21-2.21A2.21 2.21 0 0 1 4.99 7.21z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.png
deleted file mode 100644 (file)
index a727057..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.svg
deleted file mode 100644 (file)
index 19114d8..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
-    <g id="search">
-        <path id="magnifying-glass" d="M1.63 9.474L4.006 7.1l.17-.1a3.45 3.45 0 0 1-.644-2.01A3.478 3.478 0 1 1 7.01 8.47 3.43 3.43 0 0 1 5 7.822l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27A2.21 2.21 0 1 0 4.8 4.994 2.21 2.21 0 0 0 7.01 7.21z"/>
-    </g>
-</g></svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl.png
deleted file mode 100644 (file)
index db74061..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl.svg
deleted file mode 100644 (file)
index 4b3cff4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
-    <g id="search">
-        <path id="magnifying-glass" d="M1.63 9.474L4.006 7.1l.17-.1a3.45 3.45 0 0 1-.644-2.01A3.478 3.478 0 1 1 7.01 8.47 3.43 3.43 0 0 1 5 7.822l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27A2.21 2.21 0 1 0 4.8 4.994 2.21 2.21 0 0 0 7.01 7.21z"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/textures/pending.gif b/resources/lib/oojs-ui/themes/mediawiki/images/textures/pending.gif
deleted file mode 100644 (file)
index 1194eed..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/textures/pending.gif and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/textures/transparency.png b/resources/lib/oojs-ui/themes/mediawiki/images/textures/transparency.png
deleted file mode 100644 (file)
index dbf69b9..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/textures/transparency.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/textures/transparency.svg b/resources/lib/oojs-ui/themes/mediawiki/images/textures/transparency.svg
deleted file mode 100644 (file)
index cadec2a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
-    <g id="transparency">
-        <path d="M0 0h8v8H0zm8 8h8v8H8z" fill="#ccc"/>
-        <path d="M8 0h8v8H8zM0 8h8v8H0z" fill="#fff"/>
-    </g>
-</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/indicators.json b/resources/lib/oojs-ui/themes/mediawiki/indicators.json
deleted file mode 100644 (file)
index 1b99365..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-       "selectorWithoutVariant": ".oo-ui-indicator-{name}",
-       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-indicator-{name}",
-       "intro": "@import '../../../../src/styles/common';",
-       "variants": {
-               "invert": {
-                       "color": "#fff",
-                       "global": true
-               }
-       },
-       "images": {
-               "alert": { "file": "images/indicators/alert.svg" },
-               "clear": { "file": "images/indicators/clear.svg" },
-               "up": { "file": "images/indicators/arrow-up.svg" },
-               "down": { "file": "images/indicators/arrow-down.svg" },
-               "next": { "file": {
-                       "ltr": "images/indicators/arrow-ltr.svg",
-                       "rtl": "images/indicators/arrow-rtl.svg"
-               } },
-               "previous": { "file": {
-                       "ltr": "images/indicators/arrow-rtl.svg",
-                       "rtl": "images/indicators/arrow-ltr.svg"
-               } },
-               "required": { "file": "images/indicators/required.svg" },
-               "search": { "file": {
-                       "ltr": "images/indicators/search-ltr.svg",
-                       "rtl": "images/indicators/search-rtl.svg"
-               } }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/mediawiki/textures.json b/resources/lib/oojs-ui/themes/mediawiki/textures.json
deleted file mode 100644 (file)
index e90730a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "prefix": "oo-ui-texture",
-       "intro": "@import '../../../../src/styles/common';",
-       "images": {
-               "pending": { "file": "images/textures/pending.gif" },
-               "transparency": { "file": "images/textures/transparency.svg" }
-       }
-}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/icons-accessibility.json b/resources/lib/oojs-ui/themes/wikimediaui/icons-accessibility.json
new file mode 100644 (file)
index 0000000..4db45f4
--- /dev/null
@@ -0,0 +1,26 @@
+{
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
+       "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#ffffff",
+                       "global": true
+               }
+       },
+       "images": {
+               "bright": { "file": "images/icons/bright.svg" },
+               "halfBright": { "file": "images/icons/halfBright.svg" },
+               "notBright": { "file": "images/icons/notBright.svg" },
+               "moon": { "file": "images/icons/moon.svg" },
+               "largerText": { "file": {
+                       "ltr": "images/icons/largerText-ltr.svg",
+                       "rtl": "images/icons/largerText-rtl.svg"
+               } },
+               "smallerText": { "file": {
+                       "ltr": "images/icons/smallerText-ltr.svg",
+                       "rtl": "images/icons/smallerText-rtl.svg"
+               } },
+               "visionSimulator": { "file": "images/icons/visionSimulator.svg" }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/icons-alerts.json b/resources/lib/oojs-ui/themes/wikimediaui/icons-alerts.json
new file mode 100644 (file)
index 0000000..c169b56
--- /dev/null
@@ -0,0 +1,57 @@
+{
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
+       "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#fff",
+                       "global": true
+               },
+               "progressive": {
+                       "color": "#36c",
+                       "global": true
+               },
+               "constructive": {
+                       "color": "#36c"
+               },
+               "destructive": {
+                       "color": "#d33"
+               },
+               "warning": {
+                       "color": "#ff5d00"
+               }
+       },
+       "images": {
+               "alert": { "file": "images/icons/alert.svg", "variants": [ "warning" ] },
+               "bell": { "file": "images/icons/bell.svg" },
+               "bellOn": { "file": {
+                       "ltr": "images/icons/bellOn-ltr.svg",
+                       "rtl": "images/icons/bellOn-rtl.svg"
+               } },
+               "comment": { "file": "images/icons/comment.svg" },
+               "eye": { "file": "images/icons/eye.svg" },
+               "eyeClosed": { "file": "images/icons/eyeClosed.svg" },
+               "message": { "file": {
+                       "ltr": "images/icons/message-ltr.svg",
+                       "rtl": "images/icons/message-rtl.svg"
+               } },
+               "notice": { "file": "images/icons/notice.svg" },
+               "signature": { "file": {
+                       "ltr": "images/icons/signature-ltr.svg",
+                       "rtl": "images/icons/signature-rtl.svg"
+               } },
+               "speechBubble": { "file": {
+                       "ltr": "images/icons/speechBubble-ltr.svg",
+                       "rtl": "images/icons/speechBubble-rtl.svg"
+               } },
+               "speechBubbleAdd": { "file": {
+                       "ltr": "images/icons/speechBubbleAdd-ltr.svg",
+                       "rtl": "images/icons/speechBubbleAdd-rtl.svg"
+               } },
+               "speechBubbles": { "file": {
+                       "ltr": "images/icons/speechBubbles-ltr.svg",
+                       "rtl": "images/icons/speechBubbles-rtl.svg"
+               } },
+               "tray": { "file": "images/icons/tray.svg" }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/icons-content.json b/resources/lib/oojs-ui/themes/wikimediaui/icons-content.json
new file mode 100644 (file)
index 0000000..e952108
--- /dev/null
@@ -0,0 +1,82 @@
+{
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
+       "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#fff",
+                       "global": true
+               },
+               "progressive": {
+                       "color": "#36c",
+                       "global": true
+               },
+               "constructive": {
+                       "color": "#36c"
+               },
+               "destructive": {
+                       "color": "#d33"
+               },
+               "warning": {
+                       "color": "#ff5d00"
+               }
+       },
+       "images": {
+               "article": { "file": {
+                       "ltr": "images/icons/article-ltr.svg",
+                       "rtl": "images/icons/article-rtl.svg"
+               } },
+               "articles": { "file": {
+                       "ltr": "images/icons/articles-ltr.svg",
+                       "rtl": "images/icons/articles-rtl.svg"
+               } },
+               "articleCheck": { "file": {
+                       "ltr": "images/icons/articleCheck-ltr.svg",
+                       "rtl": "images/icons/articleCheck-rtl.svg"
+               } },
+               "articleSearch": { "file": {
+                       "ltr": "images/icons/articleSearch-ltr.svg",
+                       "rtl": "images/icons/articleSearch-rtl.svg"
+               } },
+               "articleRedirect": { "file": {
+                       "ltr": "images/icons/articleRedirect-ltr.svg",
+                       "rtl": "images/icons/articleRedirect-rtl.svg"
+               } },
+               "book": { "file": {
+                       "ltr": "images/icons/book-ltr.svg",
+                       "rtl": "images/icons/book-rtl.svg"
+               } },
+               "citeArticle": { "file": {
+                       "ltr": "images/icons/citeArticle-ltr.svg",
+                       "rtl": "images/icons/citeArticle-rtl.svg"
+               } },
+               "die": { "file": {
+                       "ltr": "images/icons/die-ltr.svg",
+                       "rtl": "images/icons/die-rtl.svg"
+               } },
+               "download": { "file": {
+                       "ltr": "images/icons/download-ltr.svg",
+                       "rtl": "images/icons/download-rtl.svg"
+               } },
+               "folderPlaceholder": { "file": {
+                       "ltr": "images/icons/folderPlaceholder-ltr.svg",
+                       "rtl": "images/icons/folderPlaceholder-rtl.svg"
+               } },
+               "history": { "file": "images/icons/history.svg" },
+               "info": { "file": "images/icons/info.svg" },
+               "journal": { "file": {
+                       "ltr": "images/icons/journal-ltr.svg",
+                       "rtl": "images/icons/journal-rtl.svg"
+               } },
+               "newspaper": { "file": {
+                       "ltr": "images/icons/newspaper-ltr.svg",
+                       "rtl": "images/icons/newspaper-rtl.svg"
+               } },
+               "tag": { "file": "images/icons/tag.svg", "variants": [ "destructive", "warning", "constructive" ] },
+               "upload": { "file": {
+                       "ltr": "images/icons/upload-ltr.svg",
+                       "rtl": "images/icons/upload-rtl.svg"
+               } },
+               "window": { "file": "images/icons/window.svg" }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/icons-editing-advanced.json b/resources/lib/oojs-ui/themes/wikimediaui/icons-editing-advanced.json
new file mode 100644 (file)
index 0000000..7cbbced
--- /dev/null
@@ -0,0 +1,105 @@
+{
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
+       "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#fff",
+                       "global": true
+               },
+               "progressive": {
+                       "color": "#36c",
+                       "global": true
+               },
+               "constructive": {
+                       "color": "#36c"
+               },
+               "destructive": {
+                       "color": "#d33"
+               },
+               "warning": {
+                       "color": "#ff5d00"
+               }
+       },
+       "images": {
+               "alignCentre": { "file": "images/icons/align-center.svg" },
+               "alignLeft": { "file": "images/icons/align-float-left.svg" },
+               "alignRight": { "file": "images/icons/align-float-right.svg" },
+               "attachment": { "file": {
+                       "ltr": "images/icons/attachment-ltr.svg",
+                       "rtl": "images/icons/attachment-rtl.svg"
+               } },
+               "calendar": { "file": {
+                       "ltr": "images/icons/calendar-ltr.svg",
+                       "rtl": "images/icons/calendar-rtl.svg"
+               } },
+               "code": { "file": "images/icons/code.svg" },
+               "find": { "file": {
+                       "ltr": "images/icons/find-ltr.svg",
+                       "rtl": "images/icons/find-rtl.svg"
+               } },
+               "language": { "file": {
+                       "ltr": "images/icons/language-ltr.svg",
+                       "rtl": "images/icons/language-rtl.svg"
+               } },
+               "layout": { "file": {
+                       "ltr": "images/icons/layout-ltr.svg",
+                       "rtl": "images/icons/layout-rtl.svg"
+               } },
+               "markup": { "file": "images/icons/markup.svg" },
+               "newline": { "file": {
+                       "ltr": "images/icons/newline-ltr.svg",
+                       "rtl": "images/icons/newline-rtl.svg"
+               } },
+               "noWikiText": { "file": {
+                       "ltr": "images/icons/noWikiText-ltr.svg",
+                       "rtl": "images/icons/noWikiText-rtl.svg"
+               } },
+               "outline": { "file": {
+                       "ltr": "images/icons/outline-ltr.svg",
+                       "rtl": "images/icons/outline-rtl.svg"
+               } },
+               "puzzle": { "file": {
+                       "ltr": "images/icons/puzzle-ltr.svg",
+                       "rtl": "images/icons/puzzle-rtl.svg"
+               } },
+               "quotes": { "file": {
+                       "ltr": "images/icons/quotes-ltr.svg",
+                       "rtl": "images/icons/quotes-rtl.svg"
+               } },
+               "quotesAdd": { "file": {
+                       "ltr": "images/icons/quotesAdd-ltr.svg",
+                       "rtl": "images/icons/quotesAdd-rtl.svg"
+               } },
+               "redirect": { "file": {
+                       "ltr": "images/icons/articleRedirect-ltr.svg",
+                       "rtl": "images/icons/articleRedirect-rtl.svg"
+               } },
+               "searchCaseSensitive": { "file": "images/icons/case-sensitive.svg" },
+               "searchDiacritics": { "file": "images/icons/diacritic.svg" },
+               "searchRegularExpression": { "file": "images/icons/regular-expression.svg" },
+               "specialCharacter": { "file": "images/icons/specialCharacter.svg" },
+               "table": { "file": "images/icons/table.svg" },
+               "tableAddColumnAfter": { "file": {
+                       "ltr": "images/icons/table-insert-column-rtl.svg",
+                       "rtl": "images/icons/table-insert-column-ltr.svg"
+               } },
+               "tableAddColumnBefore": { "file": {
+                       "ltr": "images/icons/table-insert-column-ltr.svg",
+                       "rtl": "images/icons/table-insert-column-rtl.svg"
+               } },
+               "tableAddRowAfter": { "file": "images/icons/table-insert-row-after.svg" },
+               "tableAddRowBefore": { "file": "images/icons/table-insert-row-before.svg" },
+               "tableCaption": { "file": "images/icons/table-caption.svg" },
+               "tableMergeCells": { "file": "images/icons/table-merge-cells.svg" },
+               "templateAdd": { "file": {
+                       "ltr": "images/icons/templateAdd-ltr.svg",
+                       "rtl": "images/icons/templateAdd-rtl.svg"
+               } },
+               "translation": { "file": {
+                       "ltr": "images/icons/language-ltr.svg",
+                       "rtl": "images/icons/language-rtl.svg"
+               } },
+               "wikiText": { "file": "images/icons/wikiText.svg" }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/icons-editing-core.json b/resources/lib/oojs-ui/themes/wikimediaui/icons-editing-core.json
new file mode 100644 (file)
index 0000000..4515405
--- /dev/null
@@ -0,0 +1,55 @@
+{
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
+       "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#fff",
+                       "global": true
+               },
+               "progressive": {
+                       "color": "#36c",
+                       "global": true
+               },
+               "constructive": {
+                       "color": "#36c"
+               },
+               "destructive": {
+                       "color": "#d33"
+               },
+               "warning": {
+                       "color": "#ff5d00"
+               }
+       },
+       "images": {
+               "edit": { "file": {
+                       "ltr": "images/icons/edit-ltr.svg",
+                       "rtl": "images/icons/edit-rtl.svg"
+               }, "variants": [ "progressive" ] },
+               "editLock": { "file": {
+                       "ltr": "images/icons/editLock-ltr.svg",
+                       "rtl": "images/icons/editLock-rtl.svg"
+               } },
+               "editUndo": { "file": {
+                       "ltr": "images/icons/editUndo-ltr.svg",
+                       "rtl": "images/icons/editUndo-rtl.svg"
+               } },
+               "link": { "file": {
+                       "ltr": "images/icons/link-ltr.svg",
+                       "rtl": "images/icons/link-rtl.svg"
+               } },
+               "linkExternal": { "file": {
+                       "ltr": "images/icons/external-link-ltr.svg",
+                       "rtl":  "images/icons/external-link-rtl.svg"
+               } },
+               "linkSecure": { "file": "images/icons/secure-link.svg" },
+               "redo": { "file": {
+                       "ltr": "images/icons/arched-arrow-ltr.svg",
+                       "rtl": "images/icons/arched-arrow-rtl.svg"
+               } },
+               "undo": { "file": {
+                       "ltr": "images/icons/arched-arrow-rtl.svg",
+                       "rtl": "images/icons/arched-arrow-ltr.svg"
+               } }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/icons-editing-list.json b/resources/lib/oojs-ui/themes/wikimediaui/icons-editing-list.json
new file mode 100644 (file)
index 0000000..3edb545
--- /dev/null
@@ -0,0 +1,42 @@
+{
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
+       "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#fff",
+                       "global": true
+               },
+               "progressive": {
+                       "color": "#36c",
+                       "global": true
+               },
+               "constructive": {
+                       "color": "#36c"
+               },
+               "destructive": {
+                       "color": "#d33"
+               },
+               "warning": {
+                       "color": "#ff5d00"
+               }
+       },
+       "images": {
+               "indent": { "file": {
+                       "ltr": "images/icons/indent-ltr.svg",
+                       "rtl": "images/icons/indent-rtl.svg"
+               } },
+               "listBullet": { "file": {
+                       "ltr": "images/icons/listBullet-ltr.svg",
+                       "rtl": "images/icons/listBullet-rtl.svg"
+               } },
+               "listNumbered": { "file": {
+                       "ltr": "images/icons/listNumbered-ltr.svg",
+                       "rtl": "images/icons/listNumbered-rtl.svg"
+               } },
+               "outdent": { "file": {
+                       "ltr": "images/icons/outdent-ltr.svg",
+                       "rtl": "images/icons/outdent-rtl.svg"
+               } }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/icons-editing-styling.json b/resources/lib/oojs-ui/themes/wikimediaui/icons-editing-styling.json
new file mode 100644 (file)
index 0000000..85e47ee
--- /dev/null
@@ -0,0 +1,99 @@
+{
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
+       "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#fff",
+                       "global": true
+               },
+               "progressive": {
+                       "color": "#36c",
+                       "global": true
+               },
+               "constructive": {
+                       "color": "#36c"
+               },
+               "destructive": {
+                       "color": "#d33"
+               },
+               "warning": {
+                       "color": "#ff5d00"
+               }
+       },
+       "images": {
+               "bigger": { "file": {
+                       "ltr": "images/icons/bigger-ltr.svg",
+                       "rtl": "images/icons/bigger-rtl.svg"
+               } },
+               "smaller": { "file": {
+                       "ltr": "images/icons/smaller-ltr.svg",
+                       "rtl": "images/icons/smaller-rtl.svg"
+               } },
+               "subscript": { "file": {
+                       "ltr": "images/icons/subscript-ltr.svg",
+                       "rtl": "images/icons/subscript-rtl.svg"
+               } },
+               "superscript": { "file": {
+                       "ltr": "images/icons/superscript-ltr.svg",
+                       "rtl": "images/icons/superscript-rtl.svg"
+               } },
+               "bold": { "file": {
+                       "default": "images/icons/bold-a.svg",
+                       "lang": {
+                               "ar": "images/icons/bold-arab-ain.svg",
+                               "be": "images/icons/bold-cyrl-te.svg",
+                               "cs,en,en-ca,en-gb,he,ml,pl,sco": "images/icons/bold-b.svg",
+                               "da,de,hu,ksh,nn,no,sv": "images/icons/bold-f.svg",
+                               "es,gl,pt": "images/icons/bold-n.svg",
+                               "eu,fi": "images/icons/bold-l.svg",
+                               "fa": "images/icons/bold-arab-dad.svg",
+                               "fr,it": "images/icons/bold-g.svg",
+                               "hy": "images/icons/bold-armn-to.svg",
+                               "ka": "images/icons/bold-geor-man.svg",
+                               "ky,ru,uk": "images/icons/bold-cyrl-zhe.svg",
+                               "nl": "images/icons/bold-v.svg",
+                               "os": "images/icons/bold-cyrl-be.svg"
+                       }
+               } },
+               "highlight": { "file": {
+                       "ltr": "images/icons/highlight-ltr.svg",
+                       "rtl": "images/icons/highlight-rtl.svg"
+               } },
+               "italic": { "file": {
+                       "default": "images/icons/italic-a.svg",
+                       "lang": {
+                                       "ar": "images/icons/italic-arab-meem.svg",
+                                       "cs,en,en-ca,en-gb,fr,he,ml,pl,pt,sco": "images/icons/italic-i.svg",
+                                       "be,da,de,fi,ky,nn,no,os,sv,ru,uk": "images/icons/italic-k.svg",
+                                       "es,gl,it,nl": "images/icons/italic-c.svg",
+                                       "eu": "images/icons/italic-e.svg",
+                                       "fa": "images/icons/italic-arab-keheh-jeem.svg",
+                                       "hu": "images/icons/italic-d.svg",
+                                       "hy": "images/icons/italic-armn-sha.svg",
+                                       "ksh": "images/icons/italic-s.svg",
+                                       "ka": "images/icons/italic-geor-kan.svg"
+                               }
+               } },
+               "strikethrough": { "file": {
+                       "default": "images/icons/strikethrough-a.svg",
+                       "lang": {
+                               "en,en-ca,en-gb": "images/icons/strikethrough-s.svg",
+                               "fi": "images/icons/strikethrough-y.svg"
+                       }
+               } },
+               "underline": { "file": {
+                       "default": "images/icons/underline-a.svg",
+                       "lang": {
+                               "en,en-ca,en-gb": "images/icons/underline-u.svg"
+                       }
+               } },
+               "textLanguage": { "file": {
+                       "ltr": "images/icons/language-ltr.svg",
+                       "rtl": "images/icons/language-rtl.svg"
+               } },
+               "textDirLTR": { "file": "images/icons/text-dir-lefttoright.svg" },
+               "textDirRTL": { "file": "images/icons/text-dir-righttoleft.svg" },
+               "textStyle": { "file": "images/icons/text-style.svg" }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/icons-interactions.json b/resources/lib/oojs-ui/themes/wikimediaui/icons-interactions.json
new file mode 100644 (file)
index 0000000..a805227
--- /dev/null
@@ -0,0 +1,92 @@
+{
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
+       "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#fff",
+                       "global": true
+               },
+               "progressive": {
+                       "color": "#36c",
+                       "global": true
+               },
+               "constructive": {
+                       "color": "#36c"
+               },
+               "destructive": {
+                       "color": "#d33"
+               },
+               "warning": {
+                       "color": "#ff5d00"
+               }
+       },
+       "images": {
+               "add": { "file": "images/icons/add.svg", "variants": [ "constructive", "progressive" ] },
+               "advanced": { "file": "images/icons/advanced.svg" },
+               "browser": { "file": {
+                       "ltr": "images/icons/browser-ltr.svg",
+                       "rtl": "images/icons/browser-rtl.svg"
+               } },
+               "cancel": { "file": "images/icons/cancel.svg", "variants": [ "destructive" ] },
+               "check": { "file": "images/icons/check.svg", "variants": [ "constructive", "progressive", "destructive" ] },
+               "clear": { "file": "images/icons/clear.svg" },
+               "clock": { "file": "images/icons/clock.svg" },
+               "close": { "file": "images/icons/close.svg" },
+               "ellipsis": { "file": "images/icons/ellipsis.svg" },
+               "feedback": {
+                       "file": {
+                               "ltr": "images/icons/feedback-ltr.svg",
+                               "rtl": "images/icons/feedback-rtl.svg"
+                       },
+                       "variants": [ "progressive" ]
+               },
+               "funnel": { "file": {
+                       "ltr": "images/icons/funnel-ltr.svg",
+                       "rtl": "images/icons/funnel-rtl.svg"
+               } },
+               "heart": { "file": "images/icons/heart.svg" },
+               "help": { "file": {
+                       "ltr": "images/icons/help-ltr.svg",
+                       "rtl": "images/icons/help-rtl.svg",
+                       "lang": {
+                               "he,yi": "images/icons/help-ltr.svg"
+                       }
+               } },
+               "key": { "file": {
+                       "ltr": "images/icons/key-ltr.svg",
+                       "rtl": "images/icons/key-rtl.svg"
+               } },
+               "keyboard": { "file": {
+                       "ltr": "images/icons/keyboard-ltr.svg",
+                       "rtl": "images/icons/keyboard-rtl.svg"
+               } },
+               "logOut": { "file": {
+                       "ltr": "images/icons/logOut-ltr.svg",
+                       "rtl": "images/icons/logOut-rtl.svg"
+               } },
+               "newWindow": { "file": {
+                       "ltr": "images/icons/newWindow-ltr.svg",
+                       "rtl": "images/icons/newWindow-rtl.svg"
+               } },
+               "printer": { "file": {
+                       "ltr": "images/icons/printer-ltr.svg",
+                       "rtl": "images/icons/printer-rtl.svg"
+               } },
+               "search": { "file": {
+                       "ltr": "images/icons/search-ltr.svg",
+                       "rtl": "images/icons/search-rtl.svg"
+                       }
+               },
+               "settings": { "file": "images/icons/settings.svg" },
+               "subtract": { "file": "images/icons/subtract.svg" },
+               "sun": { "file": {
+                       "ltr": "images/icons/sun-ltr.svg",
+                       "rtl": "images/icons/sun-rtl.svg"
+               } },
+               "watchlist": { "file": {
+                       "ltr": "images/icons/watchlist-ltr.svg",
+                       "rtl": "images/icons/watchlist-rtl.svg"
+               } }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/icons-layout.json b/resources/lib/oojs-ui/themes/wikimediaui/icons-layout.json
new file mode 100644 (file)
index 0000000..f720a25
--- /dev/null
@@ -0,0 +1,45 @@
+{
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
+       "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#fff",
+                       "global": true
+               },
+               "progressive": {
+                       "color": "#36c",
+                       "global": true
+               },
+               "constructive": {
+                       "color": "#36c"
+               },
+               "destructive": {
+                       "color": "#d33"
+               },
+               "warning": {
+                       "color": "#ff5d00"
+               }
+       },
+       "images": {
+               "menu": { "file": "images/icons/menu.svg" },
+               "stripeFlow": { "file": {
+                       "ltr": "images/icons/stripeFlow-ltr.svg",
+                       "rtl": "images/icons/stripeFlow-rtl.svg"
+               } },
+               "stripeSideMenu": { "file": "images/icons/stripeSideMenu.svg" },
+               "stripeSummary": { "file": {
+                       "ltr": "images/icons/stripeSummary-ltr.svg",
+                       "rtl": "images/icons/stripeSummary-rtl.svg"
+               } },
+               "stripeToC": { "file": {
+                       "ltr": "images/icons/stripeToC-ltr.svg",
+                       "rtl": "images/icons/stripeToC-rtl.svg"
+               }, "variants": [ "progressive" ] },
+               "viewCompact": { "file": "images/icons/viewCompact.svg" },
+               "viewDetails": { "file": {
+                       "ltr": "images/icons/viewDetails-ltr.svg",
+                       "rtl": "images/icons/viewDetails-rtl.svg"
+               } }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/icons-location.json b/resources/lib/oojs-ui/themes/wikimediaui/icons-location.json
new file mode 100644 (file)
index 0000000..58feb23
--- /dev/null
@@ -0,0 +1,44 @@
+{
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
+       "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#fff",
+                       "global": true
+               },
+               "progressive": {
+                       "color": "#36c",
+                       "global": true
+               },
+               "constructive": {
+                       "color": "#36c"
+               },
+               "destructive": {
+                       "color": "#d33"
+               },
+               "warning": {
+                       "color": "#ff5d00"
+               }
+       },
+       "images": {
+               "map": { "file": {
+                       "ltr": "images/icons/map-ltr.svg",
+                       "rtl": "images/icons/map-rtl.svg"
+               } },
+               "mapPin": { "file": "images/icons/mapPin.svg" },
+               "mapPinAdd": { "file": {
+                       "ltr": "images/icons/mapPinAdd-ltr.svg",
+                       "rtl": "images/icons/mapPinAdd-rtl.svg"
+               } },
+               "mapTrail": { "file": {
+                       "ltr": "images/icons/mapTrail-ltr.svg",
+                       "rtl": "images/icons/mapTrail-rtl.svg"
+               } },
+               "wikitrail": { "file": {
+                       "ltr": "images/icons/mapTrail-ltr.svg",
+                       "rtl": "images/icons/mapTrail-rtl.svg"
+               }, "deprecated": "Renamed to 'mapTrail' since v0.20.1."
+               }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/icons-media.json b/resources/lib/oojs-ui/themes/wikimediaui/icons-media.json
new file mode 100644 (file)
index 0000000..afdb9e5
--- /dev/null
@@ -0,0 +1,48 @@
+{
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
+       "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#fff",
+                       "global": true
+               },
+               "progressive": {
+                       "color": "#36c",
+                       "global": true
+               },
+               "constructive": {
+                       "color": "#36c"
+               },
+               "destructive": {
+                       "color": "#d33"
+               },
+               "warning": {
+                       "color": "#ff5d00"
+               }
+       },
+       "images": {
+               "fullScreen": { "file": "images/icons/fullScreen.svg" },
+               "image": { "file": {
+                       "ltr": "images/icons/image-ltr.svg",
+                       "rtl": "images/icons/image-rtl.svg"
+               } },
+               "imageAdd": { "file": {
+                       "ltr": "images/icons/imageAdd-ltr.svg",
+                       "rtl": "images/icons/imageAdd-rtl.svg"
+               } },
+               "imageLock": { "file": {
+                       "ltr": "images/icons/imageLock-ltr.svg",
+                       "rtl": "images/icons/imageLock-rtl.svg"
+               } },
+               "imageGallery": { "file": {
+                       "ltr": "images/icons/imageGallery-ltr.svg",
+                       "rtl": "images/icons/imageGallery-rtl.svg"
+               } },
+               "play": { "file": {
+                       "ltr": "images/icons/play-ltr.svg",
+                       "rtl": "images/icons/play-rtl.svg"
+               } },
+               "stop": { "file": "images/icons/stop.svg" }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/icons-moderation.json b/resources/lib/oojs-ui/themes/wikimediaui/icons-moderation.json
new file mode 100644 (file)
index 0000000..8f0ff15
--- /dev/null
@@ -0,0 +1,68 @@
+{
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
+       "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#fff",
+                       "global": true
+               },
+               "progressive": {
+                       "color": "#36c",
+                       "global": true
+               },
+               "constructive": {
+                       "color": "#36c"
+               },
+               "destructive": {
+                       "color": "#d33"
+               },
+               "warning": {
+                       "color": "#ff5d00"
+               }
+       },
+       "images": {
+               "block": { "file": "images/icons/block.svg", "variants": [ "destructive" ] },
+               "unBlock": { "file": {
+                       "ltr": "images/icons/unBlock-ltr.svg",
+                       "rtl": "images/icons/unBlock-rtl.svg"
+               } },
+               "clip": { "file": "images/icons/clip.svg", "variants": [ "progressive" ] },
+               "unClip": { "file": "images/icons/unClip.svg", "variants": [ "progressive" ] },
+               "flag": { "file": {
+                       "ltr": "images/icons/flag-ltr.svg",
+                       "rtl": "images/icons/flag-rtl.svg"
+               } },
+               "unFlag": { "file": {
+                       "ltr": "images/icons/unFlag-ltr.svg",
+                       "rtl": "images/icons/unFlag-rtl.svg"
+               } },
+               "lock": { "file": {
+                       "ltr": "images/icons/lock-ltr.svg",
+                       "rtl": "images/icons/lock-rtl.svg"
+               }, "variants": [ "destructive" ] },
+               "unLock": { "file": {
+                       "ltr": "images/icons/unLock-ltr.svg",
+                       "rtl": "images/icons/unLock-rtl.svg"
+               }, "variants": [ "destructive" ] },
+               "star": { "file": "images/icons/star.svg", "variants": [ "constructive", "progressive" ] },
+               "halfStar": { "file": {
+                       "ltr": "images/icons/halfStar-ltr.svg",
+                       "rtl": "images/icons/halfStar-rtl.svg"
+               }, "variants": [ "constructive", "progressive" ] },
+               "unStar": { "file": "images/icons/unStar.svg", "variants": [ "constructive", "progressive" ] },
+               "trash": { "file": "images/icons/trash.svg", "variants": [ "destructive" ] },
+               "unTrash": { "file": {
+                       "ltr": "images/icons/unTrash-ltr.svg",
+                       "rtl": "images/icons/unTrash-rtl.svg"
+               } },
+               "pushPin": { "file": "images/icons/pushPin.svg", "variants": [ "progressive" ] },
+               "ongoingConversation": {
+                       "file": {
+                               "ltr": "images/icons/ongoingConversation-ltr.svg",
+                               "rtl": "images/icons/ongoingConversation-rtl.svg"
+                       },
+                       "variants": [ "progressive" ]
+               }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/icons-movement.json b/resources/lib/oojs-ui/themes/wikimediaui/icons-movement.json
new file mode 100644 (file)
index 0000000..9eafbe3
--- /dev/null
@@ -0,0 +1,75 @@
+{
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
+       "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#fff",
+                       "global": true
+               },
+               "progressive": {
+                       "color": "#36c",
+                       "global": true
+               },
+               "constructive": {
+                       "color": "#36c"
+               },
+               "destructive": {
+                       "color": "#d33"
+               },
+               "warning": {
+                       "color": "#ff5d00"
+               }
+       },
+       "images": {
+               "arrowNext": { "file": {
+                       "ltr": "images/icons/arrow-ltr.svg",
+                       "rtl": "images/icons/arrow-rtl.svg"
+               } },
+               "arrowLast": { "file": {
+                       "ltr": "images/icons/arrow-rtl.svg",
+                       "rtl": "images/icons/arrow-ltr.svg"
+               } },
+               "caretNext": {
+                       "file": {
+                               "ltr": "images/icons/move-rtl.svg",
+                               "rtl": "images/icons/move-ltr.svg"
+                       },
+                       "deprecated": "Replaced since v0.21.3, use 'next' instead."
+               },
+               "caretLast": {
+                       "file": {
+                               "ltr": "images/icons/move-ltr.svg",
+                               "rtl": "images/icons/move-rtl.svg"
+                       },
+                       "deprecated": "Replaced since v0.21.3, use 'previous' instead."
+               },
+               "caretDown": { "file": "images/icons/expand.svg", "deprecated": "Replaced since v0.21.3, use 'expand' instead." },
+               "caretUp": { "file": "images/icons/collapse.svg", "deprecated": "Replaced since v0.21.3, use 'collapse' instead." },
+               "collapse": { "file": "images/icons/collapse.svg" },
+               "downTriangle": { "file": "images/icons/downTriangle.svg" },
+               "expand": { "file": "images/icons/expand.svg" },
+               "move": { "file": "images/icons/move.svg" },
+               "next": { "file": {
+                       "ltr": "images/icons/move-ltr.svg",
+                       "rtl": "images/icons/move-rtl.svg"
+                       }
+               },
+               "previous": { "file": {
+                       "ltr": "images/icons/move-rtl.svg",
+                       "rtl": "images/icons/move-ltr.svg"
+                       }
+               },
+               "last": { "file": {
+                       "ltr": "images/icons/move-end-ltr.svg",
+                       "rtl": "images/icons/move-end-rtl.svg"
+                       }
+               },
+               "first": { "file": {
+                       "ltr": "images/icons/move-end-rtl.svg",
+                       "rtl": "images/icons/move-end-ltr.svg"
+                       }
+               },
+               "upTriangle": { "file": "images/icons/upTriangle.svg" }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/icons-user.json b/resources/lib/oojs-ui/themes/wikimediaui/icons-user.json
new file mode 100644 (file)
index 0000000..5a70c5e
--- /dev/null
@@ -0,0 +1,39 @@
+{
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
+       "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#fff",
+                       "global": true
+               },
+               "progressive": {
+                       "color": "#36c",
+                       "global": true
+               },
+               "constructive": {
+                       "color": "#36c"
+               },
+               "destructive": {
+                       "color": "#d33"
+               },
+               "warning": {
+                       "color": "#ff5d00"
+               }
+       },
+       "images": {
+               "userActive": { "file": {
+                       "ltr": "images/icons/userActive-ltr.svg",
+                       "rtl": "images/icons/userActive-rtl.svg"
+               } },
+               "userAvatar": { "file": "images/icons/userAvatar.svg" },
+               "userInactive": { "file": {
+                       "ltr": "images/icons/userInactive-ltr.svg",
+                       "rtl": "images/icons/userInactive-rtl.svg"
+               } },
+               "userTalk": { "file": {
+                       "ltr": "images/icons/userTalk-ltr.svg",
+                       "rtl": "images/icons/userTalk-rtl.svg"
+               } }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/icons-wikimedia.json b/resources/lib/oojs-ui/themes/wikimediaui/icons-wikimedia.json
new file mode 100644 (file)
index 0000000..3bdecff
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
+       "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#fff",
+                       "global": true
+               },
+               "progressive": {
+                       "color": "#36c",
+                       "global": true
+               }
+       },
+       "images": {
+               "logoCC": { "file": "images/icons/logo-cc.svg" },
+               "logoWikimediaCommons": { "file": "images/icons/logo-wikimediaCommons.svg" },
+               "logoWikimediaDiscovery": { "file": "images/icons/logo-wikimediaDiscovery.svg" },
+               "logoWikipedia": { "file": "images/icons/logo-wikipedia.svg" }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-constructive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-constructive.png
new file mode 100644 (file)
index 0000000..42209e7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-constructive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-constructive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-constructive.svg
new file mode 100644 (file)
index 0000000..60c74f5
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="add">
+        <path id="plus" d="M13 6h-2v5H6v2h5v5h2v-5h5v-2h-5z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-invert.png
new file mode 100644 (file)
index 0000000..8deeddf
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-invert.svg
new file mode 100644 (file)
index 0000000..dfbbc82
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="add">
+        <path id="plus" d="M13 6h-2v5H6v2h5v5h2v-5h5v-2h-5z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-progressive.png
new file mode 100644 (file)
index 0000000..42209e7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add-progressive.svg
new file mode 100644 (file)
index 0000000..60c74f5
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="add">
+        <path id="plus" d="M13 6h-2v5H6v2h5v5h2v-5h5v-2h-5z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add.png
new file mode 100644 (file)
index 0000000..4c70ee4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/add.svg
new file mode 100644 (file)
index 0000000..62e5496
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="add">
+        <path id="plus" d="M13 6h-2v5H6v2h5v5h2v-5h5v-2h-5z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-invert.png
new file mode 100644 (file)
index 0000000..67fec17
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-invert.svg
new file mode 100644 (file)
index 0000000..feb4dd4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M20 13.44v-2.88l-1.8-.3c-.1-.397-.3-.794-.6-1.39l1.1-1.49-2.1-2.088-1.5 1.093c-.5-.298-1-.497-1.4-.596L13.5 4h-2.9l-.3 1.79c-.5.098-.9.297-1.4.595L7.4 5.292 5.3 7.38l1 1.49c-.3.496-.4.894-.6 1.39l-1.7.2v2.882l1.8.298c.1.497.3.894.6 1.39l-1 1.492 2.1 2.087 1.5-1c.4.2.9.395 1.4.594l.3 1.79h3l.3-1.79c.5-.1.9-.298 1.4-.596l1.5 1.092 2.1-2.08-1.1-1.49c.3-.496.5-.993.6-1.39l1.5-.3zm-8 1.492c-1.7 0-3-1.292-3-2.982 0-1.69 1.3-2.98 3-2.98s3 1.29 3 2.98-1.3 2.982-3 2.982z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-progressive.png
new file mode 100644 (file)
index 0000000..e64bd2a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced-progressive.svg
new file mode 100644 (file)
index 0000000..6bb1b10
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M20 13.44v-2.88l-1.8-.3c-.1-.397-.3-.794-.6-1.39l1.1-1.49-2.1-2.088-1.5 1.093c-.5-.298-1-.497-1.4-.596L13.5 4h-2.9l-.3 1.79c-.5.098-.9.297-1.4.595L7.4 5.292 5.3 7.38l1 1.49c-.3.496-.4.894-.6 1.39l-1.7.2v2.882l1.8.298c.1.497.3.894.6 1.39l-1 1.492 2.1 2.087 1.5-1c.4.2.9.395 1.4.594l.3 1.79h3l.3-1.79c.5-.1.9-.298 1.4-.596l1.5 1.092 2.1-2.08-1.1-1.49c.3-.496.5-.993.6-1.39l1.5-.3zm-8 1.492c-1.7 0-3-1.292-3-2.982 0-1.69 1.3-2.98 3-2.98s3 1.29 3 2.98-1.3 2.982-3 2.982z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced.png
new file mode 100644 (file)
index 0000000..32892a5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/advanced.svg
new file mode 100644 (file)
index 0000000..95d72f9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M20 13.44v-2.88l-1.8-.3c-.1-.397-.3-.794-.6-1.39l1.1-1.49-2.1-2.088-1.5 1.093c-.5-.298-1-.497-1.4-.596L13.5 4h-2.9l-.3 1.79c-.5.098-.9.297-1.4.595L7.4 5.292 5.3 7.38l1 1.49c-.3.496-.4.894-.6 1.39l-1.7.2v2.882l1.8.298c.1.497.3.894.6 1.39l-1 1.492 2.1 2.087 1.5-1c.4.2.9.395 1.4.594l.3 1.79h3l.3-1.79c.5-.1.9-.298 1.4-.596l1.5 1.092 2.1-2.08-1.1-1.49c.3-.496.5-.993.6-1.39l1.5-.3zm-8 1.492c-1.7 0-3-1.292-3-2.982 0-1.69 1.3-2.98 3-2.98s3 1.29 3 2.98-1.3 2.982-3 2.982z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-invert.png
new file mode 100644 (file)
index 0000000..2a66b03
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-invert.svg
new file mode 100644 (file)
index 0000000..0f64141
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="alert">
+        <path id="point" d="M11 16h2v2h-2z"/>
+        <path id="stroke" d="M13.516 10h-3L11 15h2z"/>
+        <path id="triangle" d="M12.017 5.974L19.537 19H4.497l7.52-13.026m0-2.474c-.545 0-1.09.357-1.5 1.07L2.53 18.403C1.705 19.833 2.38 21 4.03 21H20c1.65 0 2.325-1.17 1.5-2.6L13.517 4.575c-.413-.715-.956-1.072-1.5-1.072z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-progressive.png
new file mode 100644 (file)
index 0000000..66973b8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-progressive.svg
new file mode 100644 (file)
index 0000000..78c22cd
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="alert">
+        <path id="point" d="M11 16h2v2h-2z"/>
+        <path id="stroke" d="M13.516 10h-3L11 15h2z"/>
+        <path id="triangle" d="M12.017 5.974L19.537 19H4.497l7.52-13.026m0-2.474c-.545 0-1.09.357-1.5 1.07L2.53 18.403C1.705 19.833 2.38 21 4.03 21H20c1.65 0 2.325-1.17 1.5-2.6L13.517 4.575c-.413-.715-.956-1.072-1.5-1.072z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-warning.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-warning.png
new file mode 100644 (file)
index 0000000..6276502
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-warning.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-warning.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert-warning.svg
new file mode 100644 (file)
index 0000000..6e96e13
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ff5d00">
+    <g id="alert">
+        <path id="point" d="M11 16h2v2h-2z"/>
+        <path id="stroke" d="M13.516 10h-3L11 15h2z"/>
+        <path id="triangle" d="M12.017 5.974L19.537 19H4.497l7.52-13.026m0-2.474c-.545 0-1.09.357-1.5 1.07L2.53 18.403C1.705 19.833 2.38 21 4.03 21H20c1.65 0 2.325-1.17 1.5-2.6L13.517 4.575c-.413-.715-.956-1.072-1.5-1.072z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert.png
new file mode 100644 (file)
index 0000000..7355084
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/alert.svg
new file mode 100644 (file)
index 0000000..8b601d5
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="alert">
+        <path id="point" d="M11 16h2v2h-2z"/>
+        <path id="stroke" d="M13.516 10h-3L11 15h2z"/>
+        <path id="triangle" d="M12.017 5.974L19.537 19H4.497l7.52-13.026m0-2.474c-.545 0-1.09.357-1.5 1.07L2.53 18.403C1.705 19.833 2.38 21 4.03 21H20c1.65 0 2.325-1.17 1.5-2.6L13.517 4.575c-.413-.715-.956-1.072-1.5-1.072z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center-invert.png
new file mode 100644 (file)
index 0000000..a3495eb
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center-invert.svg
new file mode 100644 (file)
index 0000000..b6db392
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M9 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H9c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm-5.5 9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0-12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-center"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center-progressive.png
new file mode 100644 (file)
index 0000000..9032e12
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center-progressive.svg
new file mode 100644 (file)
index 0000000..e69f542
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M9 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H9c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm-5.5 9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0-12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-center"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center.png
new file mode 100644 (file)
index 0000000..a912b03
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-center.svg
new file mode 100644 (file)
index 0000000..6f47977
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M9 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H9c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm-5.5 9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0-12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-center"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left-invert.png
new file mode 100644 (file)
index 0000000..e274be4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left-invert.svg
new file mode 100644 (file)
index 0000000..5232a48
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M4 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H4c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm9.5 0h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm-10-9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0 12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-float-left"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left-progressive.png
new file mode 100644 (file)
index 0000000..d37112a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left-progressive.svg
new file mode 100644 (file)
index 0000000..7e03b95
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M4 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H4c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm9.5 0h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm-10-9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0 12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-float-left"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left.png
new file mode 100644 (file)
index 0000000..e395036
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-left.svg
new file mode 100644 (file)
index 0000000..a577600
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M4 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H4c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm9.5 0h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm-10-9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0 12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-float-left"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right-invert.png
new file mode 100644 (file)
index 0000000..c6659fb
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right-invert.svg
new file mode 100644 (file)
index 0000000..3395516
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M20 9h-6c-.554 0-1 .446-1 1v5c0 .554.446 1 1 1h6c.554 0 1-.446 1-1v-5c0-.554-.446-1-1-1zm-9.5 0h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm10-9h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1zm0 12h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1z" id="align-float-right"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right-progressive.png
new file mode 100644 (file)
index 0000000..8d3f480
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right-progressive.svg
new file mode 100644 (file)
index 0000000..f7f45e2
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M20 9h-6c-.554 0-1 .446-1 1v5c0 .554.446 1 1 1h6c.554 0 1-.446 1-1v-5c0-.554-.446-1-1-1zm-9.5 0h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm10-9h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1zm0 12h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1z" id="align-float-right"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right.png
new file mode 100644 (file)
index 0000000..c72a956
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/align-float-right.svg
new file mode 100644 (file)
index 0000000..0f46bc1
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M20 9h-6c-.554 0-1 .446-1 1v5c0 .554.446 1 1 1h6c.554 0 1-.446 1-1v-5c0-.554-.446-1-1-1zm-9.5 0h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm10-9h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1zm0 12h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1z" id="align-float-right"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr-invert.png
new file mode 100644 (file)
index 0000000..d8d64f1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr-invert.svg
new file mode 100644 (file)
index 0000000..7a6c6a4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M13.3 6.3l6.3 5.7-6.3 5.7v-3.8H12c-3.2 0-6.3 1.3-7.6 3.8 0-4.7 2.8-7.6 7.9-7.6h.9V6.3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr-progressive.png
new file mode 100644 (file)
index 0000000..28f8835
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..c17ebc7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M13.3 6.3l6.3 5.7-6.3 5.7v-3.8H12c-3.2 0-6.3 1.3-7.6 3.8 0-4.7 2.8-7.6 7.9-7.6h.9V6.3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr.png
new file mode 100644 (file)
index 0000000..c2fae72
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-ltr.svg
new file mode 100644 (file)
index 0000000..c229120
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M13.3 6.3l6.3 5.7-6.3 5.7v-3.8H12c-3.2 0-6.3 1.3-7.6 3.8 0-4.7 2.8-7.6 7.9-7.6h.9V6.3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl-invert.png
new file mode 100644 (file)
index 0000000..21fa9ab
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl-invert.svg
new file mode 100644 (file)
index 0000000..b05aec3
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M10.7 6.3L4.4 12l6.3 5.7v-3.8H12c3.2 0 6.3 1.3 7.6 3.8 0-4.7-2.8-7.6-7.9-7.6h-.9V6.3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl-progressive.png
new file mode 100644 (file)
index 0000000..11f0c84
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..cc7b2aa
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M10.7 6.3L4.4 12l6.3 5.7v-3.8H12c3.2 0 6.3 1.3 7.6 3.8 0-4.7-2.8-7.6-7.9-7.6h-.9V6.3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl.png
new file mode 100644 (file)
index 0000000..df22b7d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arched-arrow-rtl.svg
new file mode 100644 (file)
index 0000000..9f4bd13
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M10.7 6.3L4.4 12l6.3 5.7v-3.8H12c3.2 0 6.3 1.3 7.6 3.8 0-4.7-2.8-7.6-7.9-7.6h-.9V6.3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr-invert.png
new file mode 100644 (file)
index 0000000..6299e86
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr-invert.svg
new file mode 100644 (file)
index 0000000..cfde7f5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M16 12H6c-1.7 0-3 1.3-3 3h13v3l5-4.5L16 9v3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr-progressive.png
new file mode 100644 (file)
index 0000000..119a8be
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..020e740
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M16 12H6c-1.7 0-3 1.3-3 3h13v3l5-4.5L16 9v3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr.png
new file mode 100644 (file)
index 0000000..24905bc
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-ltr.svg
new file mode 100644 (file)
index 0000000..b4c0e0d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M16 12H6c-1.7 0-3 1.3-3 3h13v3l5-4.5L16 9v3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl-invert.png
new file mode 100644 (file)
index 0000000..fb375e4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl-invert.svg
new file mode 100644 (file)
index 0000000..b701b61
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M8 12h10c1.7 0 3 1.3 3 3H8v3l-5-4.5L8 9v3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl-progressive.png
new file mode 100644 (file)
index 0000000..3192d35
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..476c443
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M8 12h10c1.7 0 3 1.3 3 3H8v3l-5-4.5L8 9v3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl.png
new file mode 100644 (file)
index 0000000..1cd81cb
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/arrow-rtl.svg
new file mode 100644 (file)
index 0000000..1087ff9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M8 12h10c1.7 0 3 1.3 3 3H8v3l-5-4.5L8 9v3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-invert.png
new file mode 100644 (file)
index 0000000..231cb1b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-invert.svg
new file mode 100644 (file)
index 0000000..3285cc7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M12 10h4V5h-4v5zm-5 2h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zM5 3h13v16H8c-1.7 0-3-1.3-3-3V3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-progressive.png
new file mode 100644 (file)
index 0000000..db45541
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..61dda31
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 10h4V5h-4v5zm-5 2h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zM5 3h13v16H8c-1.7 0-3-1.3-3-3V3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr.png
new file mode 100644 (file)
index 0000000..cf7de13
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-ltr.svg
new file mode 100644 (file)
index 0000000..862bc2b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M12 10h4V5h-4v5zm-5 2h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zM5 3h13v16H8c-1.7 0-3-1.3-3-3V3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-invert.png
new file mode 100644 (file)
index 0000000..7b83a3a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-invert.svg
new file mode 100644 (file)
index 0000000..b92172a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M11 10H7V5h4v5zm5 2H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zm6-2H5v16h10c1.7 0 3-1.3 3-3V3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-progressive.png
new file mode 100644 (file)
index 0000000..aba3c0b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..d0e6a7a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M11 10H7V5h4v5zm5 2H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zm6-2H5v16h10c1.7 0 3-1.3 3-3V3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl.png
new file mode 100644 (file)
index 0000000..d0b0e70
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/article-rtl.svg
new file mode 100644 (file)
index 0000000..3b16dcb
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M11 10H7V5h4v5zm5 2H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zm6-2H5v16h10c1.7 0 3-1.3 3-3V3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr-invert.png
new file mode 100644 (file)
index 0000000..5eed717
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr-invert.svg
new file mode 100644 (file)
index 0000000..9557c56
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M21 11l-6 7-4-4-1 1 5 5 7-8z"/>
+    <path d="M17 14V3H4v13c0 1.7 1.3 3 3 3h5l-3-3H6v-1h2.6l1-1H6v-1h9v1h-2l1 1h2l1-1zM6 5h4v1H6V5zm0 2h4v1H6V7zm0 2h4v1H6V9zm9 3H6v-1h9v1zm-4-2V5h4v5h-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr-progressive.png
new file mode 100644 (file)
index 0000000..688ec05
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..5802afd
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M21 11l-6 7-4-4-1 1 5 5 7-8z"/>
+    <path d="M17 14V3H4v13c0 1.7 1.3 3 3 3h5l-3-3H6v-1h2.6l1-1H6v-1h9v1h-2l1 1h2l1-1zM6 5h4v1H6V5zm0 2h4v1H6V7zm0 2h4v1H6V9zm9 3H6v-1h9v1zm-4-2V5h4v5h-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr.png
new file mode 100644 (file)
index 0000000..5b169e2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-ltr.svg
new file mode 100644 (file)
index 0000000..396e6a1
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M21 11l-6 7-4-4-1 1 5 5 7-8z"/>
+    <path d="M17 14V3H4v13c0 1.7 1.3 3 3 3h5l-3-3H6v-1h2.6l1-1H6v-1h9v1h-2l1 1h2l1-1zM6 5h4v1H6V5zm0 2h4v1H6V7zm0 2h4v1H6V9zm9 3H6v-1h9v1zm-4-2V5h4v5h-4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl-invert.png
new file mode 100644 (file)
index 0000000..cc9c9de
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl-invert.svg
new file mode 100644 (file)
index 0000000..fba5a32
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M5 11l6 7 4-4 1 1-5 5-7-8z"/>
+    <path d="M9 14V3h13v13c0 1.7-1.3 3-3 3h-5l3-3h3v-1h-2.6l-1-1H20v-1h-9v1h2l-1 1h-2l-1-1zm11-9h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm-9 3h9v-1h-9v1zm4-2V5h-4v5h4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl-progressive.png
new file mode 100644 (file)
index 0000000..b271ac5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..0215593
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M5 11l6 7 4-4 1 1-5 5-7-8z"/>
+    <path d="M9 14V3h13v13c0 1.7-1.3 3-3 3h-5l3-3h3v-1h-2.6l-1-1H20v-1h-9v1h2l-1 1h-2l-1-1zm11-9h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm-9 3h9v-1h-9v1zm4-2V5h-4v5h4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl.png
new file mode 100644 (file)
index 0000000..9f22672
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleCheck-rtl.svg
new file mode 100644 (file)
index 0000000..604143b
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M5 11l6 7 4-4 1 1-5 5-7-8z"/>
+    <path d="M9 14V3h13v13c0 1.7-1.3 3-3 3h-5l3-3h3v-1h-2.6l-1-1H20v-1h-9v1h2l-1 1h-2l-1-1zm11-9h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm-9 3h9v-1h-9v1zm4-2V5h-4v5h4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-invert.png
new file mode 100644 (file)
index 0000000..76cc11f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-invert.svg
new file mode 100644 (file)
index 0000000..f68467f
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="article-redirect">
+        <path id="arrow" d="M18.1 14.2L23 18l-4.9 4.8v-2.2c-1.7 0-2.9-.2-4.3-1.2-1.2-.8-2.5-2.6-2.3-4.1 1.4 1 2.9 1.5 4.4 1.5.7 0 1.4-.1 2.1-.3l.1-2.3"/>
+        <path id="page" d="M5 3v13c0 1.7 1.3 3 3 3h3.375c-.157-.205-.3-.43-.438-.656-.42-.688-.77-1.483-.843-2.344H7v-1h3.125l.125-1H7v-1h3.375l.03-.188.283.188H16v1h-3.906l.22.156c.523.375 1.065.64 1.592.844H16v.406c.208-.013.418-.07.625-.094.068-1.294.125-3.874.125-3.874l1.25.968V3H5zm2 2h4v1H7V5zm5 0h4v5h-4V5zM7 7h4v1H7V7zm0 2h4v1H7V9zm0 2h9v1H7v-1z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-progressive.png
new file mode 100644 (file)
index 0000000..7b22a84
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..28e7a46
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="article-redirect">
+        <path id="arrow" d="M18.1 14.2L23 18l-4.9 4.8v-2.2c-1.7 0-2.9-.2-4.3-1.2-1.2-.8-2.5-2.6-2.3-4.1 1.4 1 2.9 1.5 4.4 1.5.7 0 1.4-.1 2.1-.3l.1-2.3"/>
+        <path id="page" d="M5 3v13c0 1.7 1.3 3 3 3h3.375c-.157-.205-.3-.43-.438-.656-.42-.688-.77-1.483-.843-2.344H7v-1h3.125l.125-1H7v-1h3.375l.03-.188.283.188H16v1h-3.906l.22.156c.523.375 1.065.64 1.592.844H16v.406c.208-.013.418-.07.625-.094.068-1.294.125-3.874.125-3.874l1.25.968V3H5zm2 2h4v1H7V5zm5 0h4v5h-4V5zM7 7h4v1H7V7zm0 2h4v1H7V9zm0 2h9v1H7v-1z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr.png
new file mode 100644 (file)
index 0000000..3dbe20e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-ltr.svg
new file mode 100644 (file)
index 0000000..028c64c
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="article-redirect">
+        <path id="arrow" d="M18.1 14.2L23 18l-4.9 4.8v-2.2c-1.7 0-2.9-.2-4.3-1.2-1.2-.8-2.5-2.6-2.3-4.1 1.4 1 2.9 1.5 4.4 1.5.7 0 1.4-.1 2.1-.3l.1-2.3"/>
+        <path id="page" d="M5 3v13c0 1.7 1.3 3 3 3h3.375c-.157-.205-.3-.43-.438-.656-.42-.688-.77-1.483-.843-2.344H7v-1h3.125l.125-1H7v-1h3.375l.03-.188.283.188H16v1h-3.906l.22.156c.523.375 1.065.64 1.592.844H16v.406c.208-.013.418-.07.625-.094.068-1.294.125-3.874.125-3.874l1.25.968V3H5zm2 2h4v1H7V5zm5 0h4v5h-4V5zM7 7h4v1H7V7zm0 2h4v1H7V9zm0 2h9v1H7v-1z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-invert.png
new file mode 100644 (file)
index 0000000..b31e0f9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-invert.svg
new file mode 100644 (file)
index 0000000..d70b35f
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="article-redirect">
+        <path id="arrow" d="M5.9 14.2L1 18l4.9 4.8v-2.2c1.7 0 2.9-.2 4.3-1.2 1.2-.8 2.5-2.6 2.3-4.1-1.4 1-2.9 1.5-4.4 1.5-.7 0-1.4-.1-2.1-.3l-.1-2.3"/>
+        <path id="page" d="M19 3v13c0 1.7-1.3 3-3 3h-3.375c.157-.205.3-.43.438-.656.42-.688.77-1.483.843-2.344H17v-1h-3.125l-.125-1H17v-1h-3.375l-.03-.188-.283.188H8v1h3.906l-.22.156a7.097 7.097 0 0 1-1.592.844H8v.406c-.208-.013-.418-.07-.625-.094a178.903 178.903 0 0 1-.125-3.874L6 12.405V3zm-2 2h-4v1h4zm-5 0H8v5h4zm5 2h-4v1h4zm0 2h-4v1h4zm0 2H8v1h9z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-progressive.png
new file mode 100644 (file)
index 0000000..464c344
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..d49b9bd
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="article-redirect">
+        <path id="arrow" d="M5.9 14.2L1 18l4.9 4.8v-2.2c1.7 0 2.9-.2 4.3-1.2 1.2-.8 2.5-2.6 2.3-4.1-1.4 1-2.9 1.5-4.4 1.5-.7 0-1.4-.1-2.1-.3l-.1-2.3"/>
+        <path id="page" d="M19 3v13c0 1.7-1.3 3-3 3h-3.375c.157-.205.3-.43.438-.656.42-.688.77-1.483.843-2.344H17v-1h-3.125l-.125-1H17v-1h-3.375l-.03-.188-.283.188H8v1h3.906l-.22.156a7.097 7.097 0 0 1-1.592.844H8v.406c-.208-.013-.418-.07-.625-.094a178.903 178.903 0 0 1-.125-3.874L6 12.405V3zm-2 2h-4v1h4zm-5 0H8v5h4zm5 2h-4v1h4zm0 2h-4v1h4zm0 2H8v1h9z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl.png
new file mode 100644 (file)
index 0000000..60beb6e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleRedirect-rtl.svg
new file mode 100644 (file)
index 0000000..316d36c
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="article-redirect">
+        <path id="arrow" d="M5.9 14.2L1 18l4.9 4.8v-2.2c1.7 0 2.9-.2 4.3-1.2 1.2-.8 2.5-2.6 2.3-4.1-1.4 1-2.9 1.5-4.4 1.5-.7 0-1.4-.1-2.1-.3l-.1-2.3"/>
+        <path id="page" d="M19 3v13c0 1.7-1.3 3-3 3h-3.375c.157-.205.3-.43.438-.656.42-.688.77-1.483.843-2.344H17v-1h-3.125l-.125-1H17v-1h-3.375l-.03-.188-.283.188H8v1h3.906l-.22.156a7.097 7.097 0 0 1-1.592.844H8v.406c-.208-.013-.418-.07-.625-.094a178.903 178.903 0 0 1-.125-3.874L6 12.405V3zm-2 2h-4v1h4zm-5 0H8v5h4zm5 2h-4v1h4zm0 2h-4v1h4zm0 2H8v1h9z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr-invert.png
new file mode 100644 (file)
index 0000000..1bd1587
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr-invert.svg
new file mode 100644 (file)
index 0000000..c4dbcde
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M19.1 18.5c.6-.7.9-1.5.9-2.5 0-2.2-1.8-4-4-4s-4 1.8-4 4 1.8 4 4 4c.7 0 1.3-.1 1.8-.4l2.7 2.7 1.1-1.1-2.5-2.7zm-3.1-.3c-1.2 0-2.2-1-2.2-2.3 0-1.2 1-2.2 2.2-2.2 1.2 0 2.3 1 2.3 2.2-.1 1.3-1.1 2.3-2.3 2.3zM11.8 13c.3-.4.6-.7 1-1H7v-1h9s1.2 0 2 .6V3H5v13c0 1.7 1.3 3 3 3h3.8c-.6-.8-1-1.9-1-3H7v-1h3.9l.3-1H7v-1h4.8zm.2-8h4v5h-4V5zM7 5h4v1H7V5zm0 2h4v1H7V7zm0 2h4v1H7V9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr-progressive.png
new file mode 100644 (file)
index 0000000..d22174e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..2d71a62
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M19.1 18.5c.6-.7.9-1.5.9-2.5 0-2.2-1.8-4-4-4s-4 1.8-4 4 1.8 4 4 4c.7 0 1.3-.1 1.8-.4l2.7 2.7 1.1-1.1-2.5-2.7zm-3.1-.3c-1.2 0-2.2-1-2.2-2.3 0-1.2 1-2.2 2.2-2.2 1.2 0 2.3 1 2.3 2.2-.1 1.3-1.1 2.3-2.3 2.3zM11.8 13c.3-.4.6-.7 1-1H7v-1h9s1.2 0 2 .6V3H5v13c0 1.7 1.3 3 3 3h3.8c-.6-.8-1-1.9-1-3H7v-1h3.9l.3-1H7v-1h4.8zm.2-8h4v5h-4V5zM7 5h4v1H7V5zm0 2h4v1H7V7zm0 2h4v1H7V9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr.png
new file mode 100644 (file)
index 0000000..1802dfc
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-ltr.svg
new file mode 100644 (file)
index 0000000..ac41c2b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M19.1 18.5c.6-.7.9-1.5.9-2.5 0-2.2-1.8-4-4-4s-4 1.8-4 4 1.8 4 4 4c.7 0 1.3-.1 1.8-.4l2.7 2.7 1.1-1.1-2.5-2.7zm-3.1-.3c-1.2 0-2.2-1-2.2-2.3 0-1.2 1-2.2 2.2-2.2 1.2 0 2.3 1 2.3 2.2-.1 1.3-1.1 2.3-2.3 2.3zM11.8 13c.3-.4.6-.7 1-1H7v-1h9s1.2 0 2 .6V3H5v13c0 1.7 1.3 3 3 3h3.8c-.6-.8-1-1.9-1-3H7v-1h3.9l.3-1H7v-1h4.8zm.2-8h4v5h-4V5zM7 5h4v1H7V5zm0 2h4v1H7V7zm0 2h4v1H7V9z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl-invert.png
new file mode 100644 (file)
index 0000000..a8e8a3a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl-invert.svg
new file mode 100644 (file)
index 0000000..ffd4285
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M7.5 18.5c-.6-.7-.9-1.5-.9-2.5 0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4c-.7 0-1.3-.1-1.8-.4l-2.7 2.7L5 21.2l2.5-2.7zm3.1-.3c1.2 0 2.2-1 2.2-2.3 0-1.2-1-2.2-2.2-2.2-1.2 0-2.3 1-2.3 2.2.1 1.3 1.1 2.3 2.3 2.3zm4.2-5.2c-.3-.4-.6-.7-1-1h5.8v-1h-9s-1.2 0-2 .6V3h13v13c0 1.7-1.3 3-3 3h-3.8c.6-.8 1-1.9 1-3h3.8v-1h-3.9l-.3-1h4.2v-1h-4.8zm-.2-8h-4v5h4V5zm5 0h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl-progressive.png
new file mode 100644 (file)
index 0000000..e83f1ee
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..48ae222
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M7.5 18.5c-.6-.7-.9-1.5-.9-2.5 0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4c-.7 0-1.3-.1-1.8-.4l-2.7 2.7L5 21.2l2.5-2.7zm3.1-.3c1.2 0 2.2-1 2.2-2.3 0-1.2-1-2.2-2.2-2.2-1.2 0-2.3 1-2.3 2.2.1 1.3 1.1 2.3 2.3 2.3zm4.2-5.2c-.3-.4-.6-.7-1-1h5.8v-1h-9s-1.2 0-2 .6V3h13v13c0 1.7-1.3 3-3 3h-3.8c.6-.8 1-1.9 1-3h3.8v-1h-3.9l-.3-1h4.2v-1h-4.8zm-.2-8h-4v5h4V5zm5 0h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl.png
new file mode 100644 (file)
index 0000000..a2611da
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articleSearch-rtl.svg
new file mode 100644 (file)
index 0000000..ed43acf
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M7.5 18.5c-.6-.7-.9-1.5-.9-2.5 0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4c-.7 0-1.3-.1-1.8-.4l-2.7 2.7L5 21.2l2.5-2.7zm3.1-.3c1.2 0 2.2-1 2.2-2.3 0-1.2-1-2.2-2.2-2.2-1.2 0-2.3 1-2.3 2.2.1 1.3 1.1 2.3 2.3 2.3zm4.2-5.2c-.3-.4-.6-.7-1-1h5.8v-1h-9s-1.2 0-2 .6V3h13v13c0 1.7-1.3 3-3 3h-3.8c.6-.8 1-1.9 1-3h3.8v-1h-3.9l-.3-1h4.2v-1h-4.8zm-.2-8h-4v5h4V5zm5 0h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-invert.png
new file mode 100644 (file)
index 0000000..3a418f4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-invert.svg
new file mode 100644 (file)
index 0000000..86b004f
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M11 12h4V7h-4v5zm-5 2h9v-1H6v1zm0 2h9v-1H6v1zm0 2h9v-1H6v1zm4-9H6v1h4V9zm0 2H6v1h4v-1zm0-4H6v1h4V7zM4 5h13v16H7c-1.7 0-3-1.3-3-3V5z"/>
+    <path d="M18 4v14h2V2H7v2" fill-rule="evenodd"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-progressive.png
new file mode 100644 (file)
index 0000000..af2b7f0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..838655b
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M11 12h4V7h-4v5zm-5 2h9v-1H6v1zm0 2h9v-1H6v1zm0 2h9v-1H6v1zm4-9H6v1h4V9zm0 2H6v1h4v-1zm0-4H6v1h4V7zM4 5h13v16H7c-1.7 0-3-1.3-3-3V5z"/>
+    <path d="M18 4v14h2V2H7v2" fill-rule="evenodd"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr.png
new file mode 100644 (file)
index 0000000..bd048c4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-ltr.svg
new file mode 100644 (file)
index 0000000..c194497
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M11 12h4V7h-4v5zm-5 2h9v-1H6v1zm0 2h9v-1H6v1zm0 2h9v-1H6v1zm4-9H6v1h4V9zm0 2H6v1h4v-1zm0-4H6v1h4V7zM4 5h13v16H7c-1.7 0-3-1.3-3-3V5z"/>
+    <path d="M18 4v14h2V2H7v2" fill-rule="evenodd"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-invert.png
new file mode 100644 (file)
index 0000000..fe548a1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-invert.svg
new file mode 100644 (file)
index 0000000..e2793b5
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M13 12H9V7h4v5zm5 2H9v-1h9v1zm0 2H9v-1h9v1zm0 2H9v-1h9v1zm-4-9h4v1h-4V9zm0 2h4v1h-4v-1zm0-4h4v1h-4V7zm6-2H7v16h10c1.7 0 3-1.3 3-3V5z"/>
+    <path d="M6 4v14H4V2h13v2" fill-rule="evenodd"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-progressive.png
new file mode 100644 (file)
index 0000000..839f135
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..bf3d169
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M13 12H9V7h4v5zm5 2H9v-1h9v1zm0 2H9v-1h9v1zm0 2H9v-1h9v1zm-4-9h4v1h-4V9zm0 2h4v1h-4v-1zm0-4h4v1h-4V7zm6-2H7v16h10c1.7 0 3-1.3 3-3V5z"/>
+    <path d="M6 4v14H4V2h13v2" fill-rule="evenodd"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl.png
new file mode 100644 (file)
index 0000000..3ebb113
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/articles-rtl.svg
new file mode 100644 (file)
index 0000000..40a9348
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M13 12H9V7h4v5zm5 2H9v-1h9v1zm0 2H9v-1h9v1zm0 2H9v-1h9v1zm-4-9h4v1h-4V9zm0 2h4v1h-4v-1zm0-4h4v1h-4V7zm6-2H7v16h10c1.7 0 3-1.3 3-3V5z"/>
+    <path d="M6 4v14H4V2h13v2" fill-rule="evenodd"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr-invert.png
new file mode 100644 (file)
index 0000000..aa1b38e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr-invert.svg
new file mode 100644 (file)
index 0000000..2ced027
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-293 385 24 24"><g fill="#fff">
+    <path d="M-274.3 390.9c-1.6-1.6-4.3-1.5-5.8.1l.2.2c.5.5 1.3.7 2.1.4.8-.3 1.7-.1 2.4.6 1 .9.9 2.4 0 3.4l-7.1 7.1c-.9 1-2.4.9-3.4 0s-.9-2.4 0-3.4l4.4-4.4c.3-.3.9-.5 1.3-.1s.2 1-.1 1.3l-3.4 3.4c-.6.6-.6 1.7.1 2.3l4.3-4.3c.8-.8 1.1-1.8.9-2.7-.2-.9-.9-1.6-1.7-1.9-.9-.2-1.9 0-2.6.7l-4.4 4.4c-1.6 1.6-1.6 4.3.1 5.8 1.5 1.6 4.3 1.5 5.8-.1l7-7c.8-.8 1.2-1.9 1.2-3s-.5-2.1-1.3-2.8c-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-1.5-1.6.8.7 0 0z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr-progressive.png
new file mode 100644 (file)
index 0000000..9723ae9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..0f02b30
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-293 385 24 24"><g fill="#36c">
+    <path d="M-274.3 390.9c-1.6-1.6-4.3-1.5-5.8.1l.2.2c.5.5 1.3.7 2.1.4.8-.3 1.7-.1 2.4.6 1 .9.9 2.4 0 3.4l-7.1 7.1c-.9 1-2.4.9-3.4 0s-.9-2.4 0-3.4l4.4-4.4c.3-.3.9-.5 1.3-.1s.2 1-.1 1.3l-3.4 3.4c-.6.6-.6 1.7.1 2.3l4.3-4.3c.8-.8 1.1-1.8.9-2.7-.2-.9-.9-1.6-1.7-1.9-.9-.2-1.9 0-2.6.7l-4.4 4.4c-1.6 1.6-1.6 4.3.1 5.8 1.5 1.6 4.3 1.5 5.8-.1l7-7c.8-.8 1.2-1.9 1.2-3s-.5-2.1-1.3-2.8c-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-1.5-1.6.8.7 0 0z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr.png
new file mode 100644 (file)
index 0000000..92dfaf2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-ltr.svg
new file mode 100644 (file)
index 0000000..74a4d64
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-293 385 24 24">
+    <path d="M-274.3 390.9c-1.6-1.6-4.3-1.5-5.8.1l.2.2c.5.5 1.3.7 2.1.4.8-.3 1.7-.1 2.4.6 1 .9.9 2.4 0 3.4l-7.1 7.1c-.9 1-2.4.9-3.4 0s-.9-2.4 0-3.4l4.4-4.4c.3-.3.9-.5 1.3-.1s.2 1-.1 1.3l-3.4 3.4c-.6.6-.6 1.7.1 2.3l4.3-4.3c.8-.8 1.1-1.8.9-2.7-.2-.9-.9-1.6-1.7-1.9-.9-.2-1.9 0-2.6.7l-4.4 4.4c-1.6 1.6-1.6 4.3.1 5.8 1.5 1.6 4.3 1.5 5.8-.1l7-7c.8-.8 1.2-1.9 1.2-3s-.5-2.1-1.3-2.8c-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-1.5-1.6.8.7 0 0z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl-invert.png
new file mode 100644 (file)
index 0000000..bba8db5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl-invert.svg
new file mode 100644 (file)
index 0000000..faa925c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-119 70 24 24"><g fill="#fff">
+    <path d="M-113.3 75.6c-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7-1.3 1.7-1.3 2.8 0 1.1.4 2.2 1.2 3l7 7c1.5 1.6 4.3 1.7 5.8.1 1.7-1.5 1.7-4.2.1-5.8l-4.4-4.4c-.7-.7-1.7-.9-2.6-.7-.8.3-1.5 1-1.7 1.9-.2.9.1 1.9.9 2.7l4.3 4.3c.7-.6.7-1.7.1-2.3l-3.4-3.4c-.3-.3-.5-.9-.1-1.3s1-.2 1.3.1l4.4 4.4c.9 1 1 2.5 0 3.4s-2.5 1-3.4 0l-7.1-7.1c-.9-1-1-2.5 0-3.4.7-.7 1.6-.9 2.4-.6.8.3 1.6.1 2.1-.4l.2-.2c-1.5-1.6-4.2-1.8-5.8-.1-.8.7 1.5-1.7 0 0z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl-progressive.png
new file mode 100644 (file)
index 0000000..8786e5a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..5e234a0
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-119 70 24 24"><g fill="#36c">
+    <path d="M-113.3 75.6c-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7-1.3 1.7-1.3 2.8 0 1.1.4 2.2 1.2 3l7 7c1.5 1.6 4.3 1.7 5.8.1 1.7-1.5 1.7-4.2.1-5.8l-4.4-4.4c-.7-.7-1.7-.9-2.6-.7-.8.3-1.5 1-1.7 1.9-.2.9.1 1.9.9 2.7l4.3 4.3c.7-.6.7-1.7.1-2.3l-3.4-3.4c-.3-.3-.5-.9-.1-1.3s1-.2 1.3.1l4.4 4.4c.9 1 1 2.5 0 3.4s-2.5 1-3.4 0l-7.1-7.1c-.9-1-1-2.5 0-3.4.7-.7 1.6-.9 2.4-.6.8.3 1.6.1 2.1-.4l.2-.2c-1.5-1.6-4.2-1.8-5.8-.1-.8.7 1.5-1.7 0 0z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl.png
new file mode 100644 (file)
index 0000000..f793246
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/attachment-rtl.svg
new file mode 100644 (file)
index 0000000..f53f5a4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-119 70 24 24">
+    <path d="M-113.3 75.6c-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7-1.3 1.7-1.3 2.8 0 1.1.4 2.2 1.2 3l7 7c1.5 1.6 4.3 1.7 5.8.1 1.7-1.5 1.7-4.2.1-5.8l-4.4-4.4c-.7-.7-1.7-.9-2.6-.7-.8.3-1.5 1-1.7 1.9-.2.9.1 1.9.9 2.7l4.3 4.3c.7-.6.7-1.7.1-2.3l-3.4-3.4c-.3-.3-.5-.9-.1-1.3s1-.2 1.3.1l4.4 4.4c.9 1 1 2.5 0 3.4s-2.5 1-3.4 0l-7.1-7.1c-.9-1-1-2.5 0-3.4.7-.7 1.6-.9 2.4-.6.8.3 1.6.1 2.1-.4l.2-.2c-1.5-1.6-4.2-1.8-5.8-.1-.8.7 1.5-1.7 0 0z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-invert.png
new file mode 100644 (file)
index 0000000..05911d3
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-invert.svg
new file mode 100644 (file)
index 0000000..61caba7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M17.5 13V8c0-3-2.3-5-5.5-5S6.5 5 6.5 8v5c0 2 0 3-2 3v1h15v-1c-2 0-2-1-2-3zM12 19H9c0 1 1.6 2 3 2s3-1 3-2h-3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-progressive.png
new file mode 100644 (file)
index 0000000..81294ff
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell-progressive.svg
new file mode 100644 (file)
index 0000000..157430b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M17.5 13V8c0-3-2.3-5-5.5-5S6.5 5 6.5 8v5c0 2 0 3-2 3v1h15v-1c-2 0-2-1-2-3zM12 19H9c0 1 1.6 2 3 2s3-1 3-2h-3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell.png
new file mode 100644 (file)
index 0000000..91e8397
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bell.svg
new file mode 100644 (file)
index 0000000..09b65f2
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M17.5 13V8c0-3-2.3-5-5.5-5S6.5 5 6.5 8v5c0 2 0 3-2 3v1h15v-1c-2 0-2-1-2-3zM12 19H9c0 1 1.6 2 3 2s3-1 3-2h-3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr-invert.png
new file mode 100644 (file)
index 0000000..fb21370
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr-invert.svg
new file mode 100644 (file)
index 0000000..49416aa
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M17.8 13.7L19.5 9c1-2.8-.5-5.5-3.5-6.6-3-1.1-5.9 0-6.9 2.8L7.4 9.9c-.7 1.9-1 2.8-2.9 2.1l-.3 1 14.1 5.1.3-.9c-1.9-.7-1.5-1.6-.8-3.5zM12 18.8l-2.8-1c-.3.9.8 2.4 2.1 2.9s3.2.1 3.5-.9l-2.8-1z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr-progressive.png
new file mode 100644 (file)
index 0000000..91641ac
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..d064356
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M17.8 13.7L19.5 9c1-2.8-.5-5.5-3.5-6.6-3-1.1-5.9 0-6.9 2.8L7.4 9.9c-.7 1.9-1 2.8-2.9 2.1l-.3 1 14.1 5.1.3-.9c-1.9-.7-1.5-1.6-.8-3.5zM12 18.8l-2.8-1c-.3.9.8 2.4 2.1 2.9s3.2.1 3.5-.9l-2.8-1z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr.png
new file mode 100644 (file)
index 0000000..fb13de1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-ltr.svg
new file mode 100644 (file)
index 0000000..855581b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M17.8 13.7L19.5 9c1-2.8-.5-5.5-3.5-6.6-3-1.1-5.9 0-6.9 2.8L7.4 9.9c-.7 1.9-1 2.8-2.9 2.1l-.3 1 14.1 5.1.3-.9c-1.9-.7-1.5-1.6-.8-3.5zM12 18.8l-2.8-1c-.3.9.8 2.4 2.1 2.9s3.2.1 3.5-.9l-2.8-1z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl-invert.png
new file mode 100644 (file)
index 0000000..d0ebae5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl-invert.svg
new file mode 100644 (file)
index 0000000..b854834
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M6.21 13.7L4.51 9c-1-2.8.5-5.5 3.5-6.6 3-1.1 5.9 0 6.9 2.8l1.7 4.7c.7 1.9 1 2.8 2.9 2.1l.3 1-14.1 5.1-.3-.9c1.9-.7 1.5-1.6.8-3.5zm5.8 5.1l2.8-1c.3.9-.8 2.4-2.1 2.9s-3.2.1-3.5-.9l2.8-1z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl-progressive.png
new file mode 100644 (file)
index 0000000..eddcf73
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..a9cdb3c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M6.21 13.7L4.51 9c-1-2.8.5-5.5 3.5-6.6 3-1.1 5.9 0 6.9 2.8l1.7 4.7c.7 1.9 1 2.8 2.9 2.1l.3 1-14.1 5.1-.3-.9c1.9-.7 1.5-1.6.8-3.5zm5.8 5.1l2.8-1c.3.9-.8 2.4-2.1 2.9s-3.2.1-3.5-.9l2.8-1z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl.png
new file mode 100644 (file)
index 0000000..b05fd4c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bellOn-rtl.svg
new file mode 100644 (file)
index 0000000..e1f2961
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M6.21 13.7L4.51 9c-1-2.8.5-5.5 3.5-6.6 3-1.1 5.9 0 6.9 2.8l1.7 4.7c.7 1.9 1 2.8 2.9 2.1l.3 1-14.1 5.1-.3-.9c1.9-.7 1.5-1.6.8-3.5zm5.8 5.1l2.8-1c.3.9-.8 2.4-2.1 2.9s-3.2.1-3.5-.9l2.8-1z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr-invert.png
new file mode 100644 (file)
index 0000000..ad247d3
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr-invert.svg
new file mode 100644 (file)
index 0000000..60d7fd4
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path id="big-a" d="M14.334 6h1.372l4.48 12H18.48l-1.493-4h-4l-1.507 4H9.814zm2.28 7l-1.617-4.333L13.363 13h3.25z"/>
+    <path id="small-a" d="M6.172 12h.686l2.24 6h-.853L7.5 16H5.497l-.753 2h-.833zm1.14 3.5l-.81-2.166-.816 2.166h1.625z"/>
+    <path id="arrow" d="M9 9H4l2.5-3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr-progressive.png
new file mode 100644 (file)
index 0000000..af290b9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..863fe92
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path id="big-a" d="M14.334 6h1.372l4.48 12H18.48l-1.493-4h-4l-1.507 4H9.814zm2.28 7l-1.617-4.333L13.363 13h3.25z"/>
+    <path id="small-a" d="M6.172 12h.686l2.24 6h-.853L7.5 16H5.497l-.753 2h-.833zm1.14 3.5l-.81-2.166-.816 2.166h1.625z"/>
+    <path id="arrow" d="M9 9H4l2.5-3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr.png
new file mode 100644 (file)
index 0000000..e8b2911
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-ltr.svg
new file mode 100644 (file)
index 0000000..fffbcdd
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path id="big-a" d="M14.334 6h1.372l4.48 12H18.48l-1.493-4h-4l-1.507 4H9.814zm2.28 7l-1.617-4.333L13.363 13h3.25z"/>
+    <path id="small-a" d="M6.172 12h.686l2.24 6h-.853L7.5 16H5.497l-.753 2h-.833zm1.14 3.5l-.81-2.166-.816 2.166h1.625z"/>
+    <path id="arrow" d="M9 9H4l2.5-3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl-invert.png
new file mode 100644 (file)
index 0000000..f40c303
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl-invert.svg
new file mode 100644 (file)
index 0000000..b2fbe9e
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path id="big-a" d="M9.666 6H8.294l-4.48 12H5.52l1.493-4h4l1.507 4h1.666zm-2.28 7l1.617-4.333L10.637 13h-3.25z"/>
+    <path id="small-a" d="M17.828 12h-.686l-2.24 6h.853l.747-2h2l.753 2h.833zm-1.14 3.5l.81-2.167.816 2.167H16.69z"/>
+    <path id="arrow" d="M15 9h5l-2.5-3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl-progressive.png
new file mode 100644 (file)
index 0000000..a5095a1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..46c5048
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path id="big-a" d="M9.666 6H8.294l-4.48 12H5.52l1.493-4h4l1.507 4h1.666zm-2.28 7l1.617-4.333L10.637 13h-3.25z"/>
+    <path id="small-a" d="M17.828 12h-.686l-2.24 6h.853l.747-2h2l.753 2h.833zm-1.14 3.5l.81-2.167.816 2.167H16.69z"/>
+    <path id="arrow" d="M15 9h5l-2.5-3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl.png
new file mode 100644 (file)
index 0000000..2f5e05d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bigger-rtl.svg
new file mode 100644 (file)
index 0000000..7b903c4
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path id="big-a" d="M9.666 6H8.294l-4.48 12H5.52l1.493-4h4l1.507 4h1.666zm-2.28 7l1.617-4.333L10.637 13h-3.25z"/>
+    <path id="small-a" d="M17.828 12h-.686l-2.24 6h.853l.747-2h2l.753 2h.833zm-1.14 3.5l.81-2.167.816 2.167H16.69z"/>
+    <path id="arrow" d="M15 9h5l-2.5-3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-destructive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-destructive.png
new file mode 100644 (file)
index 0000000..54b9f62
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-destructive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-destructive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-destructive.svg
new file mode 100644 (file)
index 0000000..b703094
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
+    <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-invert.png
new file mode 100644 (file)
index 0000000..ca81ab7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-invert.svg
new file mode 100644 (file)
index 0000000..97f21c3
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-progressive.png
new file mode 100644 (file)
index 0000000..c82c3eb
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block-progressive.svg
new file mode 100644 (file)
index 0000000..e3648cf
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block.png
new file mode 100644 (file)
index 0000000..7f8eb2a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/block.svg
new file mode 100644 (file)
index 0000000..b50bb61
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-invert.png
new file mode 100644 (file)
index 0000000..8c11dad
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-invert.svg
new file mode 100644 (file)
index 0000000..b02b5c7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M16 18h3L14 6h-3L6 18h3l1.25-3h4.5L16 18zm-4.917-5L12.5 9.6l1.417 3.4h-2.834z" id="bold-a"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-progressive.png
new file mode 100644 (file)
index 0000000..36f6920
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a-progressive.svg
new file mode 100644 (file)
index 0000000..4f051bf
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M16 18h3L14 6h-3L6 18h3l1.25-3h4.5L16 18zm-4.917-5L12.5 9.6l1.417 3.4h-2.834z" id="bold-a"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a.png
new file mode 100644 (file)
index 0000000..2907677
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-a.svg
new file mode 100644 (file)
index 0000000..ce9f4f8
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M16 18h3L14 6h-3L6 18h3l1.25-3h4.5L16 18zm-4.917-5L12.5 9.6l1.417 3.4h-2.834z" id="bold-a"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-invert.png
new file mode 100644 (file)
index 0000000..eac1ac7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-invert.svg
new file mode 100644 (file)
index 0000000..ab901fb
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="bold-arab-ain">
+        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.12-.25.34-.66.65l-.09.06c-1.233.93-2.42 1.394-3.56 1.394-1.14 0-2.043-.33-2.71-.99-.65-.66-.973-1.56-.973-2.7.006-1.353.567-2.572 1.685-3.657v-.044l-.606-.55a.952.952 0 0 1-.222-.63c0-.49.24-1.11.72-1.863.65-1.045 1.302-1.565 1.957-1.56.886.005 1.618.42 2.194 1.246.325.48-.03.55-1.064.22-.843-.33-1.528-.05-2.055.826l.016.074 1.125.866.05.005c1.405-.497 2.42-.74 3.044-.725-.06.116-.14.36-.244.732a27.75 27.75 0 0 1-.304.982l-.125.372-.386.05c-1.743.24-2.992.716-3.745 1.43-.465.463-.7.972-.704 1.524"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-progressive.png
new file mode 100644 (file)
index 0000000..0e9c1b0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain-progressive.svg
new file mode 100644 (file)
index 0000000..d905f22
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="bold-arab-ain">
+        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.12-.25.34-.66.65l-.09.06c-1.233.93-2.42 1.394-3.56 1.394-1.14 0-2.043-.33-2.71-.99-.65-.66-.973-1.56-.973-2.7.006-1.353.567-2.572 1.685-3.657v-.044l-.606-.55a.952.952 0 0 1-.222-.63c0-.49.24-1.11.72-1.863.65-1.045 1.302-1.565 1.957-1.56.886.005 1.618.42 2.194 1.246.325.48-.03.55-1.064.22-.843-.33-1.528-.05-2.055.826l.016.074 1.125.866.05.005c1.405-.497 2.42-.74 3.044-.725-.06.116-.14.36-.244.732a27.75 27.75 0 0 1-.304.982l-.125.372-.386.05c-1.743.24-2.992.716-3.745 1.43-.465.463-.7.972-.704 1.524"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain.png
new file mode 100644 (file)
index 0000000..931b6cf
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-ain.svg
new file mode 100644 (file)
index 0000000..452c3d0
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="bold-arab-ain">
+        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.12-.25.34-.66.65l-.09.06c-1.233.93-2.42 1.394-3.56 1.394-1.14 0-2.043-.33-2.71-.99-.65-.66-.973-1.56-.973-2.7.006-1.353.567-2.572 1.685-3.657v-.044l-.606-.55a.952.952 0 0 1-.222-.63c0-.49.24-1.11.72-1.863.65-1.045 1.302-1.565 1.957-1.56.886.005 1.618.42 2.194 1.246.325.48-.03.55-1.064.22-.843-.33-1.528-.05-2.055.826l.016.074 1.125.866.05.005c1.405-.497 2.42-.74 3.044-.725-.06.116-.14.36-.244.732a27.75 27.75 0 0 1-.304.982l-.125.372-.386.05c-1.743.24-2.992.716-3.745 1.43-.465.463-.7.972-.704 1.524"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-invert.png
new file mode 100644 (file)
index 0000000..0973b1f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-invert.svg
new file mode 100644 (file)
index 0000000..e02613e
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="bold-arab-dad">
+        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.478 0-.99.205-1.54.616l-.505.38.006.024c1.085.066 1.935.1 2.55.1h.315c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.006M10.38 14.6c-.016-.905-.33-1.87-.937-2.9l1.294-1.73.118.15c.267.337.504.925.713 1.767l.064.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.383.003.85.194 1.394.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.193.31-.474.555-.845.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.064l-.142.43c-.254.67-.463 1.112-.625 1.323-.724.937-1.785 1.405-3.182 1.405-1.71-.006-2.56-.92-2.56-2.74.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-progressive.png
new file mode 100644 (file)
index 0000000..8158ca1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad-progressive.svg
new file mode 100644 (file)
index 0000000..bbf7a38
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="bold-arab-dad">
+        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.478 0-.99.205-1.54.616l-.505.38.006.024c1.085.066 1.935.1 2.55.1h.315c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.006M10.38 14.6c-.016-.905-.33-1.87-.937-2.9l1.294-1.73.118.15c.267.337.504.925.713 1.767l.064.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.383.003.85.194 1.394.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.193.31-.474.555-.845.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.064l-.142.43c-.254.67-.463 1.112-.625 1.323-.724.937-1.785 1.405-3.182 1.405-1.71-.006-2.56-.92-2.56-2.74.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad.png
new file mode 100644 (file)
index 0000000..1121257
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-arab-dad.svg
new file mode 100644 (file)
index 0000000..b90bb77
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="bold-arab-dad">
+        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.478 0-.99.205-1.54.616l-.505.38.006.024c1.085.066 1.935.1 2.55.1h.315c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.006M10.38 14.6c-.016-.905-.33-1.87-.937-2.9l1.294-1.73.118.15c.267.337.504.925.713 1.767l.064.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.383.003.85.194 1.394.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.193.31-.474.555-.845.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.064l-.142.43c-.254.67-.463 1.112-.625 1.323-.724.937-1.785 1.405-3.182 1.405-1.71-.006-2.56-.92-2.56-2.74.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-invert.png
new file mode 100644 (file)
index 0000000..2ae27c2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-invert.svg
new file mode 100644 (file)
index 0000000..1d9ea40
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="bold-armn-to">
+        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.28a1.43 1.43 0 0 0 .273-.517c.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078a.905.905 0 0 0-.383.258c-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.21.18.39.29.53.12.13.25.23.39.29.14.05.276.07.406.07m-2.97-7.84a2.67 2.67 0 0 0-.975.45 2.1 2.1 0 0 0-.672.813c-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04a4.227 4.227 0 0 1 1.234-1.467c.52-.39 1.13-.685 1.83-.883a8.114 8.114 0 0 1 2.225-.297c.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.34.49.73.64 1.17.15.43.226 1.09.226 1.61h1.36v2.04h-1.36v1.6c0 .58-.102 1.09-.31 1.54-.21.44-.49.81-.844 1.11-.35.302-.834.53-1.297.687-.465.15-.954.226-1.47.226-.51 0-.997-.08-1.46-.235a3.46 3.46 0 0 1-1.22-.703 3.452 3.452 0 0 1-.836-1.174c-.203-.472-.304-1.027-.304-1.662s.1-1.18.32-1.64c.21-.46.49-.684.85-.976.35-.297.76-.513 1.22-.648.452-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36a2.26 2.26 0 0 0-.77-.767 3.234 3.234 0 0 0-.986-.427c-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.102z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-progressive.png
new file mode 100644 (file)
index 0000000..66b22c5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to-progressive.svg
new file mode 100644 (file)
index 0000000..4bb91c9
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="bold-armn-to">
+        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.28a1.43 1.43 0 0 0 .273-.517c.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078a.905.905 0 0 0-.383.258c-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.21.18.39.29.53.12.13.25.23.39.29.14.05.276.07.406.07m-2.97-7.84a2.67 2.67 0 0 0-.975.45 2.1 2.1 0 0 0-.672.813c-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04a4.227 4.227 0 0 1 1.234-1.467c.52-.39 1.13-.685 1.83-.883a8.114 8.114 0 0 1 2.225-.297c.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.34.49.73.64 1.17.15.43.226 1.09.226 1.61h1.36v2.04h-1.36v1.6c0 .58-.102 1.09-.31 1.54-.21.44-.49.81-.844 1.11-.35.302-.834.53-1.297.687-.465.15-.954.226-1.47.226-.51 0-.997-.08-1.46-.235a3.46 3.46 0 0 1-1.22-.703 3.452 3.452 0 0 1-.836-1.174c-.203-.472-.304-1.027-.304-1.662s.1-1.18.32-1.64c.21-.46.49-.684.85-.976.35-.297.76-.513 1.22-.648.452-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36a2.26 2.26 0 0 0-.77-.767 3.234 3.234 0 0 0-.986-.427c-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.102z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to.png
new file mode 100644 (file)
index 0000000..6f6349b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-armn-to.svg
new file mode 100644 (file)
index 0000000..c35979a
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="bold-armn-to">
+        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.28a1.43 1.43 0 0 0 .273-.517c.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078a.905.905 0 0 0-.383.258c-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.21.18.39.29.53.12.13.25.23.39.29.14.05.276.07.406.07m-2.97-7.84a2.67 2.67 0 0 0-.975.45 2.1 2.1 0 0 0-.672.813c-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04a4.227 4.227 0 0 1 1.234-1.467c.52-.39 1.13-.685 1.83-.883a8.114 8.114 0 0 1 2.225-.297c.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.34.49.73.64 1.17.15.43.226 1.09.226 1.61h1.36v2.04h-1.36v1.6c0 .58-.102 1.09-.31 1.54-.21.44-.49.81-.844 1.11-.35.302-.834.53-1.297.687-.465.15-.954.226-1.47.226-.51 0-.997-.08-1.46-.235a3.46 3.46 0 0 1-1.22-.703 3.452 3.452 0 0 1-.836-1.174c-.203-.472-.304-1.027-.304-1.662s.1-1.18.32-1.64c.21-.46.49-.684.85-.976.35-.297.76-.513 1.22-.648.452-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36a2.26 2.26 0 0 0-.77-.767 3.234 3.234 0 0 0-.986-.427c-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.102z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-invert.png
new file mode 100644 (file)
index 0000000..e242b55
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-invert.svg
new file mode 100644 (file)
index 0000000..0a03c2e
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="bold-b">
+        <path id="b" d="M7 18h6c2 0 4-1 4-3 0-1.064.01-1.975-1.99-3 2-.975 1.99-1.935 1.99-3 0-2-2-3-4-3H7v12zm7-8c0 1 0 1-2 1h-2V8h2c2 0 2 0 2 1v1zm-2 6h-2v-3h2c2 0 2 0 2 1v1s0 1-2 1z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-progressive.png
new file mode 100644 (file)
index 0000000..96f917a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b-progressive.svg
new file mode 100644 (file)
index 0000000..adf665e
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="bold-b">
+        <path id="b" d="M7 18h6c2 0 4-1 4-3 0-1.064.01-1.975-1.99-3 2-.975 1.99-1.935 1.99-3 0-2-2-3-4-3H7v12zm7-8c0 1 0 1-2 1h-2V8h2c2 0 2 0 2 1v1zm-2 6h-2v-3h2c2 0 2 0 2 1v1s0 1-2 1z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b.png
new file mode 100644 (file)
index 0000000..8d09636
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-b.svg
new file mode 100644 (file)
index 0000000..1806709
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="bold-b">
+        <path id="b" d="M7 18h6c2 0 4-1 4-3 0-1.064.01-1.975-1.99-3 2-.975 1.99-1.935 1.99-3 0-2-2-3-4-3H7v12zm7-8c0 1 0 1-2 1h-2V8h2c2 0 2 0 2 1v1zm-2 6h-2v-3h2c2 0 2 0 2 1v1s0 1-2 1z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-invert.png
new file mode 100644 (file)
index 0000000..c131903
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-invert.svg
new file mode 100644 (file)
index 0000000..cd67107
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="bold-cyrl-be">
+        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.4-.255-1.07-.397-2.02-.397H10v3"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-progressive.png
new file mode 100644 (file)
index 0000000..4337f73
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be-progressive.svg
new file mode 100644 (file)
index 0000000..22c3bf5
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="bold-cyrl-be">
+        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.4-.255-1.07-.397-2.02-.397H10v3"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be.png
new file mode 100644 (file)
index 0000000..de9e9d1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-be.svg
new file mode 100644 (file)
index 0000000..9d84cb0
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="bold-cyrl-be">
+        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.4-.255-1.07-.397-2.02-.397H10v3"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-invert.png
new file mode 100644 (file)
index 0000000..ce6f320
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-invert.svg
new file mode 100644 (file)
index 0000000..42ba193
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="bold-cyrl-te">
+        <path id="te" d="M11 18V8H7V6h11v2h-4v10"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-progressive.png
new file mode 100644 (file)
index 0000000..5e2073a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te-progressive.svg
new file mode 100644 (file)
index 0000000..73a76a3
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="bold-cyrl-te">
+        <path id="te" d="M11 18V8H7V6h11v2h-4v10"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te.png
new file mode 100644 (file)
index 0000000..281d718
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-te.svg
new file mode 100644 (file)
index 0000000..63aee3e
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="bold-cyrl-te">
+        <path id="te" d="M11 18V8H7V6h11v2h-4v10"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-invert.png
new file mode 100644 (file)
index 0000000..080e731
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-invert.svg
new file mode 100644 (file)
index 0000000..4643345
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="bold-cyrl-zhe">
+        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.112-.337.3-.452.55-.115.25-.286.76-.512 1.533-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.455.603 1.103.944 1.943L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09A.726.726 0 0 0 13 12.78V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772a6.357 6.357 0 0 1-.392-1.04c-.222-.76-.39-1.26-.505-1.52-.11-.25-.26-.44-.45-.57-.18-.12-.49-.18-.912-.18H6V6l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-progressive.png
new file mode 100644 (file)
index 0000000..86de0d4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe-progressive.svg
new file mode 100644 (file)
index 0000000..3b7fee9
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="bold-cyrl-zhe">
+        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.112-.337.3-.452.55-.115.25-.286.76-.512 1.533-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.455.603 1.103.944 1.943L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09A.726.726 0 0 0 13 12.78V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772a6.357 6.357 0 0 1-.392-1.04c-.222-.76-.39-1.26-.505-1.52-.11-.25-.26-.44-.45-.57-.18-.12-.49-.18-.912-.18H6V6l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe.png
new file mode 100644 (file)
index 0000000..9838701
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-cyrl-zhe.svg
new file mode 100644 (file)
index 0000000..aab3f4c
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="bold-cyrl-zhe">
+        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.112-.337.3-.452.55-.115.25-.286.76-.512 1.533-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.455.603 1.103.944 1.943L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09A.726.726 0 0 0 13 12.78V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772a6.357 6.357 0 0 1-.392-1.04c-.222-.76-.39-1.26-.505-1.52-.11-.25-.26-.44-.45-.57-.18-.12-.49-.18-.912-.18H6V6l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-invert.png
new file mode 100644 (file)
index 0000000..ba2c976
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-invert.svg
new file mode 100644 (file)
index 0000000..5cf18ff
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="bold-f">
+        <path id="f" d="M16 8V6H8v12h3v-5h4v-2h-4V8z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-progressive.png
new file mode 100644 (file)
index 0000000..e225017
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f-progressive.svg
new file mode 100644 (file)
index 0000000..cce2c59
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="bold-f">
+        <path id="f" d="M16 8V6H8v12h3v-5h4v-2h-4V8z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f.png
new file mode 100644 (file)
index 0000000..ad0d89b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-f.svg
new file mode 100644 (file)
index 0000000..89061f1
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="bold-f">
+        <path id="f" d="M16 8V6H8v12h3v-5h4v-2h-4V8z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-invert.png
new file mode 100644 (file)
index 0000000..2f1b7ac
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-invert.svg
new file mode 100644 (file)
index 0000000..2741c4f
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="bold-g">
+        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26A7.994 7.994 0 0 1 11.97 18c-1.23 0-2.303-.253-3.217-.76a4.908 4.908 0 0 1-2.062-2.185A7.008 7.008 0 0 1 6 11.96c0-1.208.26-2.282.77-3.222.518-.94 1.27-1.66 2.26-2.16.754-.386 1.693-.58 2.816-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435a2.433 2.433 0 0 0-.94-1.346c-.454-.34-1.022-.5-1.707-.5-1.038 0-1.864.32-2.48.97-.61.65-.914 1.61-.914 2.89 0 1.375.31 2.41.93 3.1.62.687 1.434 1.03 2.44 1.03.497 0 .995-.095 1.49-.285.505-.196 1.334-.57 1.69-.846v-.868"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-progressive.png
new file mode 100644 (file)
index 0000000..8f3febe
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g-progressive.svg
new file mode 100644 (file)
index 0000000..9e85e63
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="bold-g">
+        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26A7.994 7.994 0 0 1 11.97 18c-1.23 0-2.303-.253-3.217-.76a4.908 4.908 0 0 1-2.062-2.185A7.008 7.008 0 0 1 6 11.96c0-1.208.26-2.282.77-3.222.518-.94 1.27-1.66 2.26-2.16.754-.386 1.693-.58 2.816-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435a2.433 2.433 0 0 0-.94-1.346c-.454-.34-1.022-.5-1.707-.5-1.038 0-1.864.32-2.48.97-.61.65-.914 1.61-.914 2.89 0 1.375.31 2.41.93 3.1.62.687 1.434 1.03 2.44 1.03.497 0 .995-.095 1.49-.285.505-.196 1.334-.57 1.69-.846v-.868"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g.png
new file mode 100644 (file)
index 0000000..55e766a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-g.svg
new file mode 100644 (file)
index 0000000..3150d95
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="bold-g">
+        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26A7.994 7.994 0 0 1 11.97 18c-1.23 0-2.303-.253-3.217-.76a4.908 4.908 0 0 1-2.062-2.185A7.008 7.008 0 0 1 6 11.96c0-1.208.26-2.282.77-3.222.518-.94 1.27-1.66 2.26-2.16.754-.386 1.693-.58 2.816-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435a2.433 2.433 0 0 0-.94-1.346c-.454-.34-1.022-.5-1.707-.5-1.038 0-1.864.32-2.48.97-.61.65-.914 1.61-.914 2.89 0 1.375.31 2.41.93 3.1.62.687 1.434 1.03 2.44 1.03.497 0 .995-.095 1.49-.285.505-.196 1.334-.57 1.69-.846v-.868"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-invert.png
new file mode 100644 (file)
index 0000000..ef2da34
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-invert.svg
new file mode 100644 (file)
index 0000000..c6eea49
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="bold-geor-man">
+        <path id="geor-man" d="M13.832 14.06c0-1.714-.394-2.572-1.182-2.572-.868 0-1.302.78-1.302 2.338-.01 1.624.42 2.436 1.295 2.436.793 0 1.19-.734 1.19-2.2m2.167 0C16 16.686 14.884 18 12.65 18 10.218 18 9 16.614 9 13.84c0-2.737 1.217-4.105 3.65-4.105.842 0 1.183.63 1.183.63v-1.58c0-.788-.45-1.183-1.347-1.183-.572 0-.858.374-.858 1.123h-2.34C9.29 6.908 10.35 6 12.462 6 14.83 6 16.01 6.946 16 8.84"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-progressive.png
new file mode 100644 (file)
index 0000000..ad5c93f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man-progressive.svg
new file mode 100644 (file)
index 0000000..bca4a1a
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="bold-geor-man">
+        <path id="geor-man" d="M13.832 14.06c0-1.714-.394-2.572-1.182-2.572-.868 0-1.302.78-1.302 2.338-.01 1.624.42 2.436 1.295 2.436.793 0 1.19-.734 1.19-2.2m2.167 0C16 16.686 14.884 18 12.65 18 10.218 18 9 16.614 9 13.84c0-2.737 1.217-4.105 3.65-4.105.842 0 1.183.63 1.183.63v-1.58c0-.788-.45-1.183-1.347-1.183-.572 0-.858.374-.858 1.123h-2.34C9.29 6.908 10.35 6 12.462 6 14.83 6 16.01 6.946 16 8.84"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man.png
new file mode 100644 (file)
index 0000000..c050074
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-geor-man.svg
new file mode 100644 (file)
index 0000000..deb95b7
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="bold-geor-man">
+        <path id="geor-man" d="M13.832 14.06c0-1.714-.394-2.572-1.182-2.572-.868 0-1.302.78-1.302 2.338-.01 1.624.42 2.436 1.295 2.436.793 0 1.19-.734 1.19-2.2m2.167 0C16 16.686 14.884 18 12.65 18 10.218 18 9 16.614 9 13.84c0-2.737 1.217-4.105 3.65-4.105.842 0 1.183.63 1.183.63v-1.58c0-.788-.45-1.183-1.347-1.183-.572 0-.858.374-.858 1.123h-2.34C9.29 6.908 10.35 6 12.462 6 14.83 6 16.01 6.946 16 8.84"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-invert.png
new file mode 100644 (file)
index 0000000..0736aab
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-invert.svg
new file mode 100644 (file)
index 0000000..a5516ed
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="bold-l">
+        <path id="l" d="M8 18V6h3v10h5v2"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-progressive.png
new file mode 100644 (file)
index 0000000..7a1c401
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l-progressive.svg
new file mode 100644 (file)
index 0000000..44178b7
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="bold-l">
+        <path id="l" d="M8 18V6h3v10h5v2"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l.png
new file mode 100644 (file)
index 0000000..11b67a1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-l.svg
new file mode 100644 (file)
index 0000000..7695623
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="bold-l">
+        <path id="l" d="M8 18V6h3v10h5v2"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-invert.png
new file mode 100644 (file)
index 0000000..d57d0a5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-invert.svg
new file mode 100644 (file)
index 0000000..528efe8
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="bold-n">
+        <path id="n" d="M7 18V6h3l4 8V6h3v12h-3l-4-8v8H7"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-progressive.png
new file mode 100644 (file)
index 0000000..bb0299c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n-progressive.svg
new file mode 100644 (file)
index 0000000..d686921
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="bold-n">
+        <path id="n" d="M7 18V6h3l4 8V6h3v12h-3l-4-8v8H7"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n.png
new file mode 100644 (file)
index 0000000..708d421
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-n.svg
new file mode 100644 (file)
index 0000000..62f66a2
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="bold-n">
+        <path id="n" d="M7 18V6h3l4 8V6h3v12h-3l-4-8v8H7"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-invert.png
new file mode 100644 (file)
index 0000000..ad990be
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-invert.svg
new file mode 100644 (file)
index 0000000..c1549dc
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="bold-v">
+        <path id="v" d="M10.5 18L6 6h3l3 8 3-8h3l-4.5 12"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-progressive.png
new file mode 100644 (file)
index 0000000..d7c5eb0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v-progressive.svg
new file mode 100644 (file)
index 0000000..a94a50c
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="bold-v">
+        <path id="v" d="M10.5 18L6 6h3l3 8 3-8h3l-4.5 12"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v.png
new file mode 100644 (file)
index 0000000..a60786c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bold-v.svg
new file mode 100644 (file)
index 0000000..027db27
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="bold-v">
+        <path id="v" d="M10.5 18L6 6h3l3 8 3-8h3l-4.5 12"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-invert.png
new file mode 100644 (file)
index 0000000..a32272e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-invert.svg
new file mode 100644 (file)
index 0000000..83265e4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M15 7c-1.7 0-3 1.3-3 3 0-1.7-1.3-3-3-3H3v13h6c1.7 0 3 1 3 2 0-1 1.3-2 3-2h6V7h-6zm5 12h-5c-1.7 0-2 .4-2 .4v-8.9C13 9.1 14.1 8 15.5 8H20v11z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-progressive.png
new file mode 100644 (file)
index 0000000..9a63c72
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..89fff50
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M15 7c-1.7 0-3 1.3-3 3 0-1.7-1.3-3-3-3H3v13h6c1.7 0 3 1 3 2 0-1 1.3-2 3-2h6V7h-6zm5 12h-5c-1.7 0-2 .4-2 .4v-8.9C13 9.1 14.1 8 15.5 8H20v11z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr.png
new file mode 100644 (file)
index 0000000..49ac06a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-ltr.svg
new file mode 100644 (file)
index 0000000..6a9a748
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M15 7c-1.7 0-3 1.3-3 3 0-1.7-1.3-3-3-3H3v13h6c1.7 0 3 1 3 2 0-1 1.3-2 3-2h6V7h-6zm5 12h-5c-1.7 0-2 .4-2 .4v-8.9C13 9.1 14.1 8 15.5 8H20v11z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-invert.png
new file mode 100644 (file)
index 0000000..7258970
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-invert.svg
new file mode 100644 (file)
index 0000000..256ee41
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M9 7c1.7 0 3 1.3 3 3 0-1.7 1.3-3 3-3h6v13h-6c-1.7 0-3 1-3 2 0-1-1.3-2-3-2H3V7h6zM4 19h5c1.7 0 2 .4 2 .4v-8.9C11 9.1 9.9 8 8.5 8H4v11z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-progressive.png
new file mode 100644 (file)
index 0000000..6ff5355
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..150fd95
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M9 7c1.7 0 3 1.3 3 3 0-1.7 1.3-3 3-3h6v13h-6c-1.7 0-3 1-3 2 0-1-1.3-2-3-2H3V7h6zM4 19h5c1.7 0 2 .4 2 .4v-8.9C11 9.1 9.9 8 8.5 8H4v11z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl.png
new file mode 100644 (file)
index 0000000..e0edc34
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/book-rtl.svg
new file mode 100644 (file)
index 0000000..3797328
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M9 7c1.7 0 3 1.3 3 3 0-1.7 1.3-3 3-3h6v13h-6c-1.7 0-3 1-3 2 0-1-1.3-2-3-2H3V7h6zM4 19h5c1.7 0 2 .4 2 .4v-8.9C11 9.1 9.9 8 8.5 8H4v11z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright-invert.png
new file mode 100644 (file)
index 0000000..6194ed4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright-invert.svg
new file mode 100644 (file)
index 0000000..8f41c1a
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
+    <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9-.3.3-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8zM12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/>
+    <path d="M12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright.png
new file mode 100644 (file)
index 0000000..788fc94
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/bright.svg
new file mode 100644 (file)
index 0000000..5a399fe
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9-.3.3-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8zM12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/>
+    <path d="M12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-invert.png
new file mode 100644 (file)
index 0000000..027df2d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-invert.svg
new file mode 100644 (file)
index 0000000..3ee311a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M3 6v11c0 1.7 1.3 3 3 3h15V6H3zm2.5 1C6.3 7 7 7.7 7 8.5S6.3 10 5.5 10 4 9.3 4 8.5 4.7 7 5.5 7zM20 19H6c-1.1 0-2-.9-2-2v-6h16v8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-progressive.png
new file mode 100644 (file)
index 0000000..4ab9a1b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..d3dd3fe
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M3 6v11c0 1.7 1.3 3 3 3h15V6H3zm2.5 1C6.3 7 7 7.7 7 8.5S6.3 10 5.5 10 4 9.3 4 8.5 4.7 7 5.5 7zM20 19H6c-1.1 0-2-.9-2-2v-6h16v8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr.png
new file mode 100644 (file)
index 0000000..ae059ad
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-ltr.svg
new file mode 100644 (file)
index 0000000..e7be7e5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M3 6v11c0 1.7 1.3 3 3 3h15V6H3zm2.5 1C6.3 7 7 7.7 7 8.5S6.3 10 5.5 10 4 9.3 4 8.5 4.7 7 5.5 7zM20 19H6c-1.1 0-2-.9-2-2v-6h16v8z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-invert.png
new file mode 100644 (file)
index 0000000..51937b7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-invert.svg
new file mode 100644 (file)
index 0000000..98238cf
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-progressive.png
new file mode 100644 (file)
index 0000000..1f33d14
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..e2ad0ab
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl.png
new file mode 100644 (file)
index 0000000..939a858
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/browser-rtl.svg
new file mode 100644 (file)
index 0000000..38807b5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr-invert.png
new file mode 100644 (file)
index 0000000..1463874
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr-invert.svg
new file mode 100644 (file)
index 0000000..f933a1e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr-progressive.png
new file mode 100644 (file)
index 0000000..5f6143b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..97d6a58
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr.png
new file mode 100644 (file)
index 0000000..0ab46dd
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-ltr.svg
new file mode 100644 (file)
index 0000000..b0bc0e5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl-invert.png
new file mode 100644 (file)
index 0000000..806c55d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl-invert.svg
new file mode 100644 (file)
index 0000000..dccd818
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM7 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl-progressive.png
new file mode 100644 (file)
index 0000000..1864f52
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..3757322
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM7 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl.png
new file mode 100644 (file)
index 0000000..0236393
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/calendar-rtl.svg
new file mode 100644 (file)
index 0000000..d8ff5a9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM7 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-destructive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-destructive.png
new file mode 100644 (file)
index 0000000..f574a39
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-destructive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-destructive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-destructive.svg
new file mode 100644 (file)
index 0000000..c0f8dc0
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
+    <g id="cancel">
+        <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-invert.png
new file mode 100644 (file)
index 0000000..b7529a2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-invert.svg
new file mode 100644 (file)
index 0000000..893486d
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="cancel">
+        <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-progressive.png
new file mode 100644 (file)
index 0000000..04b8a08
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel-progressive.svg
new file mode 100644 (file)
index 0000000..18698eb
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="cancel">
+        <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel.png
new file mode 100644 (file)
index 0000000..f9354e3
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/cancel.svg
new file mode 100644 (file)
index 0000000..04ff5c3
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="cancel">
+        <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive-invert.png
new file mode 100644 (file)
index 0000000..6fe1260
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive-invert.svg
new file mode 100644 (file)
index 0000000..e5590a3
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="case-sensitive">
+        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
+        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive-progressive.png
new file mode 100644 (file)
index 0000000..cc6f665
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive-progressive.svg
new file mode 100644 (file)
index 0000000..ff6e102
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="case-sensitive">
+        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
+        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive.png
new file mode 100644 (file)
index 0000000..426c5de
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/case-sensitive.svg
new file mode 100644 (file)
index 0000000..749e38f
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="case-sensitive">
+        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
+        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-constructive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-constructive.png
new file mode 100644 (file)
index 0000000..1dc3ae4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-constructive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-constructive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-constructive.svg
new file mode 100644 (file)
index 0000000..4cea8a3
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-destructive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-destructive.png
new file mode 100644 (file)
index 0000000..305f41d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-destructive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-destructive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-destructive.svg
new file mode 100644 (file)
index 0000000..3609a7b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
+    <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-invert.png
new file mode 100644 (file)
index 0000000..708bb39
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-invert.svg
new file mode 100644 (file)
index 0000000..7f3299a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-progressive.png
new file mode 100644 (file)
index 0000000..1dc3ae4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check-progressive.svg
new file mode 100644 (file)
index 0000000..4cea8a3
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check.png
new file mode 100644 (file)
index 0000000..65ab0e9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/check.svg
new file mode 100644 (file)
index 0000000..2fa9dfb
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr-invert.png
new file mode 100644 (file)
index 0000000..442399a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr-invert.svg
new file mode 100644 (file)
index 0000000..9e2795e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M7 12h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zm5-2h2v16H8c-1.7 0-3-1.3-3-3V3h8v7l1.5-2 1.5 2V3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr-progressive.png
new file mode 100644 (file)
index 0000000..e27df80
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..677ee81
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M7 12h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zm5-2h2v16H8c-1.7 0-3-1.3-3-3V3h8v7l1.5-2 1.5 2V3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr.png
new file mode 100644 (file)
index 0000000..ca0bdc4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-ltr.svg
new file mode 100644 (file)
index 0000000..6a55c05
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M7 12h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zm5-2h2v16H8c-1.7 0-3-1.3-3-3V3h8v7l1.5-2 1.5 2V3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl-invert.png
new file mode 100644 (file)
index 0000000..0159650
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl-invert.svg
new file mode 100644 (file)
index 0000000..131a271
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M16 12H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zM7 3H5v16h10c1.7 0 3-1.3 3-3V3h-8v7L8.5 8 7 10V3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl-progressive.png
new file mode 100644 (file)
index 0000000..7fb92a7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..b19d640
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M16 12H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zM7 3H5v16h10c1.7 0 3-1.3 3-3V3h-8v7L8.5 8 7 10V3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl.png
new file mode 100644 (file)
index 0000000..3eae601
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/citeArticle-rtl.svg
new file mode 100644 (file)
index 0000000..0c0c411
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M16 12H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zM7 3H5v16h10c1.7 0 3-1.3 3-3V3h-8v7L8.5 8 7 10V3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-invert.png
new file mode 100644 (file)
index 0000000..ec90ed9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-invert.svg
new file mode 100644 (file)
index 0000000..b43d794
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="clear">
+        <path id="circle-with-cross" d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm4 11l-1 1-3-3-3 3-1-1 3-3-3-3 1-1 3 3 3-3 1 1-3 3 3 3z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-progressive.png
new file mode 100644 (file)
index 0000000..fb0d269
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear-progressive.svg
new file mode 100644 (file)
index 0000000..2fa1f2f
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="clear">
+        <path id="circle-with-cross" d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm4 11l-1 1-3-3-3 3-1-1 3-3-3-3 1-1 3 3 3-3 1 1-3 3 3 3z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear.png
new file mode 100644 (file)
index 0000000..973dc03
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clear.svg
new file mode 100644 (file)
index 0000000..8689e77
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="clear">
+        <path id="circle-with-cross" d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm4 11l-1 1-3-3-3 3-1-1 3-3-3-3 1-1 3 3 3-3 1 1-3 3 3 3z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip-invert.png
new file mode 100644 (file)
index 0000000..eab8915
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip-invert.svg
new file mode 100644 (file)
index 0000000..14b03f6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M17.5 4.5v13.2L12 13.5l-5.5 4.2V4.5zM5 21l7-6 7 6V3H5z" fill-rule="evenodd"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip-progressive.png
new file mode 100644 (file)
index 0000000..633956d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip-progressive.svg
new file mode 100644 (file)
index 0000000..3744540
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M17.5 4.5v13.2L12 13.5l-5.5 4.2V4.5zM5 21l7-6 7 6V3H5z" fill-rule="evenodd"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip.png
new file mode 100644 (file)
index 0000000..ac25483
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clip.svg
new file mode 100644 (file)
index 0000000..86d1dbf
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M17.5 4.5v13.2L12 13.5l-5.5 4.2V4.5zM5 21l7-6 7 6V3H5z" fill-rule="evenodd"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-invert.png
new file mode 100644 (file)
index 0000000..2f944d7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-invert.svg
new file mode 100644 (file)
index 0000000..8376288
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 12l-4-3V8h2v5l1.7 1.2c1.3.9 1 1.9.3 2.8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-progressive.png
new file mode 100644 (file)
index 0000000..f2683e5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock-progressive.svg
new file mode 100644 (file)
index 0000000..4c8accd
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 12l-4-3V8h2v5l1.7 1.2c1.3.9 1 1.9.3 2.8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock.png
new file mode 100644 (file)
index 0000000..98b504e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/clock.svg
new file mode 100644 (file)
index 0000000..85b0628
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 12l-4-3V8h2v5l1.7 1.2c1.3.9 1 1.9.3 2.8z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-invert.png
new file mode 100644 (file)
index 0000000..92af7b6
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-invert.svg
new file mode 100644 (file)
index 0000000..8027fff
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+  <path d="M18 7.6l-1.4-1.4-4.6 4.6-4.6-4.6L6 7.6l4.6 4.6L6 16.8l1.4 1.4 4.6-4.6 4.6 4.6 1.4-1.4-4.6-4.6z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-progressive.png
new file mode 100644 (file)
index 0000000..06fcd5d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close-progressive.svg
new file mode 100644 (file)
index 0000000..37c960e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+  <path d="M18 7.6l-1.4-1.4-4.6 4.6-4.6-4.6L6 7.6l4.6 4.6L6 16.8l1.4 1.4 4.6-4.6 4.6 4.6 1.4-1.4-4.6-4.6z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close.png
new file mode 100644 (file)
index 0000000..cdb037a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/close.svg
new file mode 100644 (file)
index 0000000..88ffb56
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+  <path d="M18 7.6l-1.4-1.4-4.6 4.6-4.6-4.6L6 7.6l4.6 4.6L6 16.8l1.4 1.4 4.6-4.6 4.6 4.6 1.4-1.4-4.6-4.6z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-invert.png
new file mode 100644 (file)
index 0000000..1804fb8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-invert.svg
new file mode 100644 (file)
index 0000000..e9179bf
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="code">
+        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.59.335-.11.872-.25 1.835-.25H10v1h-.752c-.457 0-.77.19-.936.406-.167.216-.312.446-.312 1.07v1.856c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.31.238.76.238 1.49v1.86c0 .62.145.85.312 1.06.166.22.48.41.936.41H10v1H8.973c-.963 0-1.5-.133-1.835-.248a1.578 1.578 0 0 1-.808-.59 1.68 1.68 0 0 1-.257-.626C6.023 16.283 6 15.9 6 15.386V13c0-1 0-1-1-1H4z"/>
+        <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" width="24" height="24" xlink:href="#left-bracket"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-progressive.png
new file mode 100644 (file)
index 0000000..21656c4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code-progressive.svg
new file mode 100644 (file)
index 0000000..ce0e492
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="code">
+        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.59.335-.11.872-.25 1.835-.25H10v1h-.752c-.457 0-.77.19-.936.406-.167.216-.312.446-.312 1.07v1.856c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.31.238.76.238 1.49v1.86c0 .62.145.85.312 1.06.166.22.48.41.936.41H10v1H8.973c-.963 0-1.5-.133-1.835-.248a1.578 1.578 0 0 1-.808-.59 1.68 1.68 0 0 1-.257-.626C6.023 16.283 6 15.9 6 15.386V13c0-1 0-1-1-1H4z"/>
+        <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" width="24" height="24" xlink:href="#left-bracket"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code.png
new file mode 100644 (file)
index 0000000..ba89e4e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/code.svg
new file mode 100644 (file)
index 0000000..a00d158
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
+    <g id="code">
+        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.59.335-.11.872-.25 1.835-.25H10v1h-.752c-.457 0-.77.19-.936.406-.167.216-.312.446-.312 1.07v1.856c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.31.238.76.238 1.49v1.86c0 .62.145.85.312 1.06.166.22.48.41.936.41H10v1H8.973c-.963 0-1.5-.133-1.835-.248a1.578 1.578 0 0 1-.808-.59 1.68 1.68 0 0 1-.257-.626C6.023 16.283 6 15.9 6 15.386V13c0-1 0-1-1-1H4z"/>
+        <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" width="24" height="24" xlink:href="#left-bracket"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-invert.png
new file mode 100644 (file)
index 0000000..951a840
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-invert.svg
new file mode 100644 (file)
index 0000000..7b7305a
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="collapse">
+        <path id="arrow" d="M6.697 15.714L12 10.412l5.303 5.302 1.414-1.414L12 7.583 5.283 14.3z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-progressive.png
new file mode 100644 (file)
index 0000000..8b4d5c7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse-progressive.svg
new file mode 100644 (file)
index 0000000..29157ae
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="collapse">
+        <path id="arrow" d="M6.697 15.714L12 10.412l5.303 5.302 1.414-1.414L12 7.583 5.283 14.3z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse.png
new file mode 100644 (file)
index 0000000..1d8c6db
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/collapse.svg
new file mode 100644 (file)
index 0000000..645bfda
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="collapse">
+        <path id="arrow" d="M6.697 15.714L12 10.412l5.303 5.302 1.414-1.414L12 7.583 5.283 14.3z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment-invert.png
new file mode 100644 (file)
index 0000000..1de3b9d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment-invert.svg
new file mode 100644 (file)
index 0000000..e6f6bb1
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="comment">
+        <path id="speech-bubble" d="M15 6H9a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3v3l3-3h3a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment-progressive.png
new file mode 100644 (file)
index 0000000..6bb0a73
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment-progressive.svg
new file mode 100644 (file)
index 0000000..63bdad9
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="comment">
+        <path id="speech-bubble" d="M15 6H9a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3v3l3-3h3a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment.png
new file mode 100644 (file)
index 0000000..dcaa881
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/comment.svg
new file mode 100644 (file)
index 0000000..861611a
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="comment">
+        <path id="speech-bubble" d="M15 6H9a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3v3l3-3h3a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic-invert.png
new file mode 100644 (file)
index 0000000..7bb19e3
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic-invert.svg
new file mode 100644 (file)
index 0000000..b19dd0d
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="diacritic">
+      <path id="letter-a" d="M13.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.563 0-.954-.208-1.376-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.323-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.69-1.4c.878-.46 1.85-.69 2.917-.69 1.024 0 1.59.22 2.134.66.546.446.82 1.12.82 2.03V17h-1.45m-.395-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.337.87 1.01.87.48 0 .864-.138 1.15-.415.29-.277.437-.645.437-1.103v-.627"/>
+      <path id="tilde" d="M12.012 7.527l-.466-.306a.832.832 0 0 1-.085-.048c-.264-.17-.467-.256-.608-.256a.518.518 0 0 0-.466.256c-.107.17-.16.418-.16.743v.066H9.047c0-.748.144-1.326.432-1.733.294-.407.703-.61 1.228-.61.203 0 .406.037.61.114.208.073.43.19.66.357l.517.355c.124.082.237.146.338.19a.77.77 0 0 0 .288.066c.204 0 .362-.088.475-.265.113-.176.17-.42.17-.735v-.066h1.177c0 .75-.147 1.327-.44 1.735-.29.407-.695.61-1.22.61-.203 0-.4-.032-.593-.098a3.107 3.107 0 0 1-.678-.373z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic-progressive.png
new file mode 100644 (file)
index 0000000..eb76fd0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic-progressive.svg
new file mode 100644 (file)
index 0000000..fed1164
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="diacritic">
+      <path id="letter-a" d="M13.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.563 0-.954-.208-1.376-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.323-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.69-1.4c.878-.46 1.85-.69 2.917-.69 1.024 0 1.59.22 2.134.66.546.446.82 1.12.82 2.03V17h-1.45m-.395-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.337.87 1.01.87.48 0 .864-.138 1.15-.415.29-.277.437-.645.437-1.103v-.627"/>
+      <path id="tilde" d="M12.012 7.527l-.466-.306a.832.832 0 0 1-.085-.048c-.264-.17-.467-.256-.608-.256a.518.518 0 0 0-.466.256c-.107.17-.16.418-.16.743v.066H9.047c0-.748.144-1.326.432-1.733.294-.407.703-.61 1.228-.61.203 0 .406.037.61.114.208.073.43.19.66.357l.517.355c.124.082.237.146.338.19a.77.77 0 0 0 .288.066c.204 0 .362-.088.475-.265.113-.176.17-.42.17-.735v-.066h1.177c0 .75-.147 1.327-.44 1.735-.29.407-.695.61-1.22.61-.203 0-.4-.032-.593-.098a3.107 3.107 0 0 1-.678-.373z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic.png
new file mode 100644 (file)
index 0000000..2359b19
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/diacritic.svg
new file mode 100644 (file)
index 0000000..4565101
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="diacritic">
+      <path id="letter-a" d="M13.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.563 0-.954-.208-1.376-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.323-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.69-1.4c.878-.46 1.85-.69 2.917-.69 1.024 0 1.59.22 2.134.66.546.446.82 1.12.82 2.03V17h-1.45m-.395-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.337.87 1.01.87.48 0 .864-.138 1.15-.415.29-.277.437-.645.437-1.103v-.627"/>
+      <path id="tilde" d="M12.012 7.527l-.466-.306a.832.832 0 0 1-.085-.048c-.264-.17-.467-.256-.608-.256a.518.518 0 0 0-.466.256c-.107.17-.16.418-.16.743v.066H9.047c0-.748.144-1.326.432-1.733.294-.407.703-.61 1.228-.61.203 0 .406.037.61.114.208.073.43.19.66.357l.517.355c.124.082.237.146.338.19a.77.77 0 0 0 .288.066c.204 0 .362-.088.475-.265.113-.176.17-.42.17-.735v-.066h1.177c0 .75-.147 1.327-.44 1.735-.29.407-.695.61-1.22.61-.203 0-.4-.032-.593-.098a3.107 3.107 0 0 1-.678-.373z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr-invert.png
new file mode 100644 (file)
index 0000000..ea8beb9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr-invert.svg
new file mode 100644 (file)
index 0000000..a9ef321
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M16 5H4v12c0 1.6 1.3 3 3 3h12V8c0-1.7-1.4-3-3-3zM7.5 17c-.8 0-1.5-.7-1.5-1.5S6.7 14 7.5 14s1.5.7 1.5 1.5S8.3 17 7.5 17zm0-6C6.7 11 6 10.3 6 9.5S6.7 8 7.5 8 9 8.7 9 9.5 8.3 11 7.5 11zm4 3c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm4 3c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm0-6c-.8 0-1.5-.7-1.5-1.5S14.7 8 15.5 8s1.5.7 1.5 1.5-.7 1.5-1.5 1.5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr-progressive.png
new file mode 100644 (file)
index 0000000..8e7e83a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..a63bf03
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M16 5H4v12c0 1.6 1.3 3 3 3h12V8c0-1.7-1.4-3-3-3zM7.5 17c-.8 0-1.5-.7-1.5-1.5S6.7 14 7.5 14s1.5.7 1.5 1.5S8.3 17 7.5 17zm0-6C6.7 11 6 10.3 6 9.5S6.7 8 7.5 8 9 8.7 9 9.5 8.3 11 7.5 11zm4 3c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm4 3c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm0-6c-.8 0-1.5-.7-1.5-1.5S14.7 8 15.5 8s1.5.7 1.5 1.5-.7 1.5-1.5 1.5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr.png
new file mode 100644 (file)
index 0000000..79f4497
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-ltr.svg
new file mode 100644 (file)
index 0000000..2571d4d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M16 5H4v12c0 1.6 1.3 3 3 3h12V8c0-1.7-1.4-3-3-3zM7.5 17c-.8 0-1.5-.7-1.5-1.5S6.7 14 7.5 14s1.5.7 1.5 1.5S8.3 17 7.5 17zm0-6C6.7 11 6 10.3 6 9.5S6.7 8 7.5 8 9 8.7 9 9.5 8.3 11 7.5 11zm4 3c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm4 3c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm0-6c-.8 0-1.5-.7-1.5-1.5S14.7 8 15.5 8s1.5.7 1.5 1.5-.7 1.5-1.5 1.5z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl-invert.png
new file mode 100644 (file)
index 0000000..32bbeef
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl-invert.svg
new file mode 100644 (file)
index 0000000..344e2fb
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M7 5h12v12c0 1.6-1.3 3-3 3H4V8c0-1.7 1.4-3 3-3zm8.5 12c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm0-6c.8 0 1.5-.7 1.5-1.5S16.3 8 15.5 8 14 8.7 14 9.5s.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5S8.3 14 7.5 14 6 14.7 6 15.5 6.7 17 7.5 17zm0-6c.8 0 1.5-.7 1.5-1.5S8.3 8 7.5 8 6 8.7 6 9.5 6.7 11 7.5 11z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl-progressive.png
new file mode 100644 (file)
index 0000000..5edaf86
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..fd4f13b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M7 5h12v12c0 1.6-1.3 3-3 3H4V8c0-1.7 1.4-3 3-3zm8.5 12c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm0-6c.8 0 1.5-.7 1.5-1.5S16.3 8 15.5 8 14 8.7 14 9.5s.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5S8.3 14 7.5 14 6 14.7 6 15.5 6.7 17 7.5 17zm0-6c.8 0 1.5-.7 1.5-1.5S8.3 8 7.5 8 6 8.7 6 9.5 6.7 11 7.5 11z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl.png
new file mode 100644 (file)
index 0000000..c01002f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/die-rtl.svg
new file mode 100644 (file)
index 0000000..9be97f6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M7 5h12v12c0 1.6-1.3 3-3 3H4V8c0-1.7 1.4-3 3-3zm8.5 12c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm0-6c.8 0 1.5-.7 1.5-1.5S16.3 8 15.5 8 14 8.7 14 9.5s.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5S8.3 14 7.5 14 6 14.7 6 15.5 6.7 17 7.5 17zm0-6c.8 0 1.5-.7 1.5-1.5S8.3 8 7.5 8 6 8.7 6 9.5 6.7 11 7.5 11z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-invert.png
new file mode 100644 (file)
index 0000000..b186eb0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-invert.svg
new file mode 100644 (file)
index 0000000..9c64f50
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M12 18l8-10H4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-progressive.png
new file mode 100644 (file)
index 0000000..ebe6abf
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle-progressive.svg
new file mode 100644 (file)
index 0000000..aaa6ec9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 18l8-10H4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle.png
new file mode 100644 (file)
index 0000000..7df0592
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/downTriangle.svg
new file mode 100644 (file)
index 0000000..e1fb989
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M12 18l8-10H4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr-invert.png
new file mode 100644 (file)
index 0000000..ce0f041
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr-invert.svg
new file mode 100644 (file)
index 0000000..312b19e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M16 11h-3V4c-1.7 0-3 1.3-3 3v4H7l4.5 5 4.5-5zm1 2v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr-progressive.png
new file mode 100644 (file)
index 0000000..28812d2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..8d69423
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M16 11h-3V4c-1.7 0-3 1.3-3 3v4H7l4.5 5 4.5-5zm1 2v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr.png
new file mode 100644 (file)
index 0000000..4d67c8d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-ltr.svg
new file mode 100644 (file)
index 0000000..dfb2bb6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M16 11h-3V4c-1.7 0-3 1.3-3 3v4H7l4.5 5 4.5-5zm1 2v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl-invert.png
new file mode 100644 (file)
index 0000000..09286f7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl-invert.svg
new file mode 100644 (file)
index 0000000..141ca5c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M7 11h3V4c1.7 0 3 1.3 3 3v4h3l-4.5 5L7 11zm-1 2v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl-progressive.png
new file mode 100644 (file)
index 0000000..6ba5e29
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..4767dc1
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M7 11h3V4c1.7 0 3 1.3 3 3v4h3l-4.5 5L7 11zm-1 2v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl.png
new file mode 100644 (file)
index 0000000..660d7d0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/download-rtl.svg
new file mode 100644 (file)
index 0000000..276b153
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M7 11h3V4c1.7 0 3 1.3 3 3v4h3l-4.5 5L7 11zm-1 2v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr-invert.png
new file mode 100644 (file)
index 0000000..682e18f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr-invert.svg
new file mode 100644 (file)
index 0000000..138f8e8
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M17 2L5 14l-1 5 5-1L21 6c0-2-2-4-4-4zM7.2 15.5c-.3-.3-.7-.6-1-.8C8.5 12.4 17.5 3.3 17.5 3.3c.4.1.7.3 1 .7L7.2 15.5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr-progressive.png
new file mode 100644 (file)
index 0000000..92d625a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..40446e9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M17 2L5 14l-1 5 5-1L21 6c0-2-2-4-4-4zM7.2 15.5c-.3-.3-.7-.6-1-.8C8.5 12.4 17.5 3.3 17.5 3.3c.4.1.7.3 1 .7L7.2 15.5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr.png
new file mode 100644 (file)
index 0000000..504f29b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-ltr.svg
new file mode 100644 (file)
index 0000000..02ab6e4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M17 2L5 14l-1 5 5-1L21 6c0-2-2-4-4-4zM7.2 15.5c-.3-.3-.7-.6-1-.8C8.5 12.4 17.5 3.3 17.5 3.3c.4.1.7.3 1 .7L7.2 15.5z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl-invert.png
new file mode 100644 (file)
index 0000000..2d23719
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl-invert.svg
new file mode 100644 (file)
index 0000000..0b9a4af
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M8 2l12 12 1 5-5-1L4 6c0-2 2-4 4-4zm9.8 13.5c.3-.3.7-.6 1-.8C16.5 12.4 7.5 3.3 7.5 3.3c-.4.1-.7.3-1 .7l11.3 11.5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl-progressive.png
new file mode 100644 (file)
index 0000000..90653f2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..8c0b879
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M8 2l12 12 1 5-5-1L4 6c0-2 2-4 4-4zm9.8 13.5c.3-.3.7-.6 1-.8C16.5 12.4 7.5 3.3 7.5 3.3c-.4.1-.7.3-1 .7l11.3 11.5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl.png
new file mode 100644 (file)
index 0000000..7ea3aee
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/edit-rtl.svg
new file mode 100644 (file)
index 0000000..83033c5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M8 2l12 12 1 5-5-1L4 6c0-2 2-4 4-4zm9.8 13.5c.3-.3.7-.6 1-.8C16.5 12.4 7.5 3.3 7.5 3.3c-.4.1-.7.3-1 .7l11.3 11.5z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr-invert.png
new file mode 100644 (file)
index 0000000..c90c593
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr-invert.svg
new file mode 100644 (file)
index 0000000..82b39cd
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M21 4V3s0-3-3-3-3 3-3 3v1h-1v6h8V4zm-1.5 0h-3V3s0-1.5 1.5-1.5c1.48.06 1.5 1.5 1.5 1.5zM13 9.6l-6.8 6.9c-.3-.3-.7-.6-1-.8 1.4-1.4 5-5 7.8-7.9V6l-9 9-1 5 5-1 8-8h-3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr-progressive.png
new file mode 100644 (file)
index 0000000..4b4c8b4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..618debe
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M21 4V3s0-3-3-3-3 3-3 3v1h-1v6h8V4zm-1.5 0h-3V3s0-1.5 1.5-1.5c1.48.06 1.5 1.5 1.5 1.5zM13 9.6l-6.8 6.9c-.3-.3-.7-.6-1-.8 1.4-1.4 5-5 7.8-7.9V6l-9 9-1 5 5-1 8-8h-3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr.png
new file mode 100644 (file)
index 0000000..aa4b8c3
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-ltr.svg
new file mode 100644 (file)
index 0000000..e06e5a0
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M21 4V3s0-3-3-3-3 3-3 3v1h-1v6h8V4zm-1.5 0h-3V3s0-1.5 1.5-1.5c1.48.06 1.5 1.5 1.5 1.5zM13 9.6l-6.8 6.9c-.3-.3-.7-.6-1-.8 1.4-1.4 5-5 7.8-7.9V6l-9 9-1 5 5-1 8-8h-3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl-invert.png
new file mode 100644 (file)
index 0000000..5a40486
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl-invert.svg
new file mode 100644 (file)
index 0000000..9b9f765
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M4 4V3s0-3 3-3 3 3 3 3v1h1v6H3V4zm1.5 0h3V3s0-1.5-1.5-1.5C5.52 1.56 5.5 3 5.5 3zM12 9.6l6.8 6.9c.3-.3.7-.6 1-.8-1.4-1.4-5-5-7.8-7.9V6l9 9 1 5-5-1-8-8h3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl-progressive.png
new file mode 100644 (file)
index 0000000..720a501
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..ad87acc
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M4 4V3s0-3 3-3 3 3 3 3v1h1v6H3V4zm1.5 0h3V3s0-1.5-1.5-1.5C5.52 1.56 5.5 3 5.5 3zM12 9.6l6.8 6.9c.3-.3.7-.6 1-.8-1.4-1.4-5-5-7.8-7.9V6l9 9 1 5-5-1-8-8h3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl.png
new file mode 100644 (file)
index 0000000..3d8b751
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editLock-rtl.svg
new file mode 100644 (file)
index 0000000..fb1001f
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M4 4V3s0-3 3-3 3 3 3 3v1h1v6H3V4zm1.5 0h3V3s0-1.5-1.5-1.5C5.52 1.56 5.5 3 5.5 3zM12 9.6l6.8 6.9c.3-.3.7-.6 1-.8-1.4-1.4-5-5-7.8-7.9V6l9 9 1 5-5-1-8-8h3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-invert.png
new file mode 100644 (file)
index 0000000..19726d1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-invert.svg
new file mode 100644 (file)
index 0000000..a34235e
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M14.9 2.8c.9 0 1.8.2 2.7.6.9.4 1.6.9 1.9 1.6-2.8.1-5 1.1-6.6 3.1l1.3 2-6.7-.3L8 3l1.7 2c1.8-1.5 3.5-2.2 5.2-2.2z"/>
+    <path d="M15.2 11.1l-2.6-.1-5.4 5.5c-.3-.3-.7-.6-1-.8.9-.9 2.8-2.8 4.7-4.8H9.1L5 15l-1 5 5-1 7.8-7.8-1.6-.1zM20.6 6c-1.7 0-3.2.5-4.4 1.4l-.9.9.8 1.3.9 1.4 4-4c0-.3-.1-.7-.2-1h-.2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-progressive.png
new file mode 100644 (file)
index 0000000..7932aa5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..c7d9bbe
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M14.9 2.8c.9 0 1.8.2 2.7.6.9.4 1.6.9 1.9 1.6-2.8.1-5 1.1-6.6 3.1l1.3 2-6.7-.3L8 3l1.7 2c1.8-1.5 3.5-2.2 5.2-2.2z"/>
+    <path d="M15.2 11.1l-2.6-.1-5.4 5.5c-.3-.3-.7-.6-1-.8.9-.9 2.8-2.8 4.7-4.8H9.1L5 15l-1 5 5-1 7.8-7.8-1.6-.1zM20.6 6c-1.7 0-3.2.5-4.4 1.4l-.9.9.8 1.3.9 1.4 4-4c0-.3-.1-.7-.2-1h-.2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr.png
new file mode 100644 (file)
index 0000000..c163360
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-ltr.svg
new file mode 100644 (file)
index 0000000..50f4214
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M14.9 2.8c.9 0 1.8.2 2.7.6.9.4 1.6.9 1.9 1.6-2.8.1-5 1.1-6.6 3.1l1.3 2-6.7-.3L8 3l1.7 2c1.8-1.5 3.5-2.2 5.2-2.2z"/>
+    <path d="M15.2 11.1l-2.6-.1-5.4 5.5c-.3-.3-.7-.6-1-.8.9-.9 2.8-2.8 4.7-4.8H9.1L5 15l-1 5 5-1 7.8-7.8-1.6-.1zM20.6 6c-1.7 0-3.2.5-4.4 1.4l-.9.9.8 1.3.9 1.4 4-4c0-.3-.1-.7-.2-1h-.2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-invert.png
new file mode 100644 (file)
index 0000000..8e72010
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-invert.svg
new file mode 100644 (file)
index 0000000..1aea7a8
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M10.1 2.8c-.9 0-1.8.2-2.7.6-.9.4-1.6.9-1.9 1.6 2.8.1 5 1.1 6.6 3.1l-1.3 2 6.7-.3L17 3l-1.7 2c-1.8-1.5-3.5-2.2-5.2-2.2z"/>
+    <path d="M9.8 11.1l2.6-.1 5.4 5.5c.3-.3.7-.6 1-.8-.9-.9-2.8-2.8-4.7-4.8h1.8L20 15l1 5-5-1-7.8-7.8 1.6-.1zM4.4 6c1.7 0 3.2.5 4.4 1.4l.9.9-.8 1.3L8 11 4 7c0-.3.1-.7.2-1h.2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-progressive.png
new file mode 100644 (file)
index 0000000..f563ed8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..a743341
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M10.1 2.8c-.9 0-1.8.2-2.7.6-.9.4-1.6.9-1.9 1.6 2.8.1 5 1.1 6.6 3.1l-1.3 2 6.7-.3L17 3l-1.7 2c-1.8-1.5-3.5-2.2-5.2-2.2z"/>
+    <path d="M9.8 11.1l2.6-.1 5.4 5.5c.3-.3.7-.6 1-.8-.9-.9-2.8-2.8-4.7-4.8h1.8L20 15l1 5-5-1-7.8-7.8 1.6-.1zM4.4 6c1.7 0 3.2.5 4.4 1.4l.9.9-.8 1.3L8 11 4 7c0-.3.1-.7.2-1h.2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl.png
new file mode 100644 (file)
index 0000000..fc98968
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/editUndo-rtl.svg
new file mode 100644 (file)
index 0000000..b7cfed7
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M10.1 2.8c-.9 0-1.8.2-2.7.6-.9.4-1.6.9-1.9 1.6 2.8.1 5 1.1 6.6 3.1l-1.3 2 6.7-.3L17 3l-1.7 2c-1.8-1.5-3.5-2.2-5.2-2.2z"/>
+    <path d="M9.8 11.1l2.6-.1 5.4 5.5c.3-.3.7-.6 1-.8-.9-.9-2.8-2.8-4.7-4.8h1.8L20 15l1 5-5-1-7.8-7.8 1.6-.1zM4.4 6c1.7 0 3.2.5 4.4 1.4l.9.9-.8 1.3L8 11 4 7c0-.3.1-.7.2-1h.2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-invert.png
new file mode 100644 (file)
index 0000000..7d57d11
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-invert.svg
new file mode 100644 (file)
index 0000000..e5b0d24
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M8 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM14 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM20 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-progressive.png
new file mode 100644 (file)
index 0000000..ae7d071
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis-progressive.svg
new file mode 100644 (file)
index 0000000..0675f6e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M8 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM14 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM20 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis.png
new file mode 100644 (file)
index 0000000..85fa4f3
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ellipsis.svg
new file mode 100644 (file)
index 0000000..ef7d485
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M8 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM14 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM20 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-invert.png
new file mode 100644 (file)
index 0000000..38a2c39
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-invert.svg
new file mode 100644 (file)
index 0000000..a8260ae
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="expand">
+        <path id="arrow" d="M17.303 8.283L12 13.586 6.697 8.283 5.283 9.697 12 16.414l6.717-6.717z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-progressive.png
new file mode 100644 (file)
index 0000000..4a183b5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand-progressive.svg
new file mode 100644 (file)
index 0000000..e7f6aa5
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="expand">
+        <path id="arrow" d="M17.303 8.283L12 13.586 6.697 8.283 5.283 9.697 12 16.414l6.717-6.717z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand.png
new file mode 100644 (file)
index 0000000..f72b6f2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/expand.svg
new file mode 100644 (file)
index 0000000..84b9e0a
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="expand">
+        <path id="arrow" d="M17.303 8.283L12 13.586 6.697 8.283 5.283 9.697 12 16.414l6.717-6.717z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr-invert.png
new file mode 100644 (file)
index 0000000..18a1801
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr-invert.svg
new file mode 100644 (file)
index 0000000..e9ddf2c
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="external">
+        <path id="box" d="M4 4h6v2H6v12h12v-4h2v6H4z"/>
+        <path id="arrow" d="M12.42 4H20v7.58l-2.84-2.846L12.892 13 11 11.106l4.264-4.266z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr-progressive.png
new file mode 100644 (file)
index 0000000..00fd178
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..dcc2962
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="external">
+        <path id="box" d="M4 4h6v2H6v12h12v-4h2v6H4z"/>
+        <path id="arrow" d="M12.42 4H20v7.58l-2.84-2.846L12.892 13 11 11.106l4.264-4.266z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr.png
new file mode 100644 (file)
index 0000000..185ffc6
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-ltr.svg
new file mode 100644 (file)
index 0000000..1d7980d
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="external">
+        <path id="box" d="M4 4h6v2H6v12h12v-4h2v6H4z"/>
+        <path id="arrow" d="M12.42 4H20v7.58l-2.84-2.846L12.892 13 11 11.106l4.264-4.266z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl-invert.png
new file mode 100644 (file)
index 0000000..105fd0d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl-invert.svg
new file mode 100644 (file)
index 0000000..59cd0aa
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="external">
+        <path id="box" d="M20 4h-6v2h4v12H6v-4H4v6h16z"/>
+        <path id="arrow" d="M11.58 4H4v7.58l2.84-2.846L11.108 13 13 11.106 8.736 6.84z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl-progressive.png
new file mode 100644 (file)
index 0000000..569492e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..8d0cd25
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="external">
+        <path id="box" d="M20 4h-6v2h4v12H6v-4H4v6h16z"/>
+        <path id="arrow" d="M11.58 4H4v7.58l2.84-2.846L11.108 13 13 11.106 8.736 6.84z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl.png
new file mode 100644 (file)
index 0000000..7066001
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/external-link-rtl.svg
new file mode 100644 (file)
index 0000000..7e25d03
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="external">
+        <path id="box" d="M20 4h-6v2h4v12H6v-4H4v6h16z"/>
+        <path id="arrow" d="M11.58 4H4v7.58l2.84-2.846L11.108 13 13 11.106 8.736 6.84z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-invert.png
new file mode 100644 (file)
index 0000000..4e11ebc
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-invert.svg
new file mode 100644 (file)
index 0000000..158860e
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path id="sclera" d="M12 6C7 6 1 12 1 12s6 6 11 6 11-6 11-6-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/>
+    <circle id="pupil" r="2" cy="12" cx="12"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-progressive.png
new file mode 100644 (file)
index 0000000..94524c0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye-progressive.svg
new file mode 100644 (file)
index 0000000..ae45685
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path id="sclera" d="M12 6C7 6 1 12 1 12s6 6 11 6 11-6 11-6-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/>
+    <circle id="pupil" r="2" cy="12" cx="12"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye.png
new file mode 100644 (file)
index 0000000..eb5f963
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eye.svg
new file mode 100644 (file)
index 0000000..cec85d0
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path id="sclera" d="M12 6C7 6 1 12 1 12s6 6 11 6 11-6 11-6-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/>
+    <circle id="pupil" r="2" cy="12" cx="12"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-invert.png
new file mode 100644 (file)
index 0000000..bd499f1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-invert.svg
new file mode 100644 (file)
index 0000000..7e1567d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M19.4 12.7c.7-.8 1.2-1.7 1.4-2.7h-1.6c-.9 2.5-3.9 4.4-7.7 4.6h-.1c-3.7-.2-6.8-2.1-7.7-4.6H2.2c.2 1 .8 1.9 1.4 2.7l-2 2 .7.7 2-2c.8.6 1.7 1.2 2.7 1.7l-1 2.8.9.3 1-2.8c1 .3 2 .6 3.1.6v3h1v-3c1.1-.1 2.2-.3 3.1-.6l1 2.8.9-.3-1-2.8c1-.4 1.9-1 2.6-1.7l2 2 .7-.7-1.9-2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-progressive.png
new file mode 100644 (file)
index 0000000..9c22844
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed-progressive.svg
new file mode 100644 (file)
index 0000000..5d0d44d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M19.4 12.7c.7-.8 1.2-1.7 1.4-2.7h-1.6c-.9 2.5-3.9 4.4-7.7 4.6h-.1c-3.7-.2-6.8-2.1-7.7-4.6H2.2c.2 1 .8 1.9 1.4 2.7l-2 2 .7.7 2-2c.8.6 1.7 1.2 2.7 1.7l-1 2.8.9.3 1-2.8c1 .3 2 .6 3.1.6v3h1v-3c1.1-.1 2.2-.3 3.1-.6l1 2.8.9-.3-1-2.8c1-.4 1.9-1 2.6-1.7l2 2 .7-.7-1.9-2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed.png
new file mode 100644 (file)
index 0000000..1ac37d6
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/eyeClosed.svg
new file mode 100644 (file)
index 0000000..d17f2c8
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M19.4 12.7c.7-.8 1.2-1.7 1.4-2.7h-1.6c-.9 2.5-3.9 4.4-7.7 4.6h-.1c-3.7-.2-6.8-2.1-7.7-4.6H2.2c.2 1 .8 1.9 1.4 2.7l-2 2 .7.7 2-2c.8.6 1.7 1.2 2.7 1.7l-1 2.8.9.3 1-2.8c1 .3 2 .6 3.1.6v3h1v-3c1.1-.1 2.2-.3 3.1-.6l1 2.8.9-.3-1-2.8c1-.4 1.9-1 2.6-1.7l2 2 .7-.7-1.9-2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-invert.png
new file mode 100644 (file)
index 0000000..f49ebeb
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-invert.svg
new file mode 100644 (file)
index 0000000..8ed4be9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-progressive.png
new file mode 100644 (file)
index 0000000..28405a8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..49425d0
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr.png
new file mode 100644 (file)
index 0000000..ac5787b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-ltr.svg
new file mode 100644 (file)
index 0000000..0fdeed9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-invert.png
new file mode 100644 (file)
index 0000000..efba220
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-invert.svg
new file mode 100644 (file)
index 0000000..f4e7932
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-progressive.png
new file mode 100644 (file)
index 0000000..27bcc2d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..413ea34
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl.png
new file mode 100644 (file)
index 0000000..fdbe5e1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/feedback-rtl.svg
new file mode 100644 (file)
index 0000000..022d86d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr-invert.png
new file mode 100644 (file)
index 0000000..e6602c9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr-invert.svg
new file mode 100644 (file)
index 0000000..928e954
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="find">
+        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.15.78-.096s.315-.59.126-.78l-2.37-2.377-.185-.094a3.545 3.545 0 0 0 .655-2.03c0-1.92-1.55-3.47-3.47-3.47zm0 1.656a1.8 1.8 0 0 1 1.813 1.813 1.83 1.83 0 0 1-1.82 1.84c-1.01 0-1.844-.83-1.844-1.847s.832-1.814 1.844-1.814z"/>
+        <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53a4.443 4.443 0 0 1 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr-progressive.png
new file mode 100644 (file)
index 0000000..0ca17c1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..65fc298
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="find">
+        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.15.78-.096s.315-.59.126-.78l-2.37-2.377-.185-.094a3.545 3.545 0 0 0 .655-2.03c0-1.92-1.55-3.47-3.47-3.47zm0 1.656a1.8 1.8 0 0 1 1.813 1.813 1.83 1.83 0 0 1-1.82 1.84c-1.01 0-1.844-.83-1.844-1.847s.832-1.814 1.844-1.814z"/>
+        <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53a4.443 4.443 0 0 1 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr.png
new file mode 100644 (file)
index 0000000..066d84a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-ltr.svg
new file mode 100644 (file)
index 0000000..ef44f57
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="find">
+        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.15.78-.096s.315-.59.126-.78l-2.37-2.377-.185-.094a3.545 3.545 0 0 0 .655-2.03c0-1.92-1.55-3.47-3.47-3.47zm0 1.656a1.8 1.8 0 0 1 1.813 1.813 1.83 1.83 0 0 1-1.82 1.84c-1.01 0-1.844-.83-1.844-1.847s.832-1.814 1.844-1.814z"/>
+        <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53a4.443 4.443 0 0 1 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl-invert.png
new file mode 100644 (file)
index 0000000..bd3e862
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl-invert.svg
new file mode 100644 (file)
index 0000000..612c1dc
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="find">
+        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.15-.78-.096s-.315-.59-.126-.78l2.37-2.377.185-.094a3.545 3.545 0 0 1-.655-2.03c0-1.92 1.55-3.47 3.47-3.47zm0 1.656A1.8 1.8 0 0 0 9.53 14.47c0 1.01.806 1.84 1.818 1.84 1.01 0 1.844-.83 1.844-1.845s-.832-1.814-1.844-1.814z"/>
+        <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53a4.443 4.443 0 0 0-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl-progressive.png
new file mode 100644 (file)
index 0000000..142dbe4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..f18e0ad
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="find">
+        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.15-.78-.096s-.315-.59-.126-.78l2.37-2.377.185-.094a3.545 3.545 0 0 1-.655-2.03c0-1.92 1.55-3.47 3.47-3.47zm0 1.656A1.8 1.8 0 0 0 9.53 14.47c0 1.01.806 1.84 1.818 1.84 1.01 0 1.844-.83 1.844-1.845s-.832-1.814-1.844-1.814z"/>
+        <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53a4.443 4.443 0 0 0-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl.png
new file mode 100644 (file)
index 0000000..ed834af
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/find-rtl.svg
new file mode 100644 (file)
index 0000000..51fd39b
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="find">
+        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.15-.78-.096s-.315-.59-.126-.78l2.37-2.377.185-.094a3.545 3.545 0 0 1-.655-2.03c0-1.92 1.55-3.47 3.47-3.47zm0 1.656A1.8 1.8 0 0 0 9.53 14.47c0 1.01.806 1.84 1.818 1.84 1.01 0 1.844-.83 1.844-1.845s-.832-1.814-1.844-1.814z"/>
+        <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53a4.443 4.443 0 0 0-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-invert.png
new file mode 100644 (file)
index 0000000..ea79f46
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-invert.svg
new file mode 100644 (file)
index 0000000..f6c2213
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-progressive.png
new file mode 100644 (file)
index 0000000..4d76692
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..c1f681a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr.png
new file mode 100644 (file)
index 0000000..bd19f2b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-ltr.svg
new file mode 100644 (file)
index 0000000..1097561
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-invert.png
new file mode 100644 (file)
index 0000000..159bdb9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-invert.svg
new file mode 100644 (file)
index 0000000..ce147ec
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+       <path d="M10.3 7.5V6c1.4-1.5 5.2-1.2 6 0V5h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V14c-1.2 1.5-4.3 1.2-5 0V7c.7.7 2.7.9 4 .5z"/>
+</g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-progressive.png
new file mode 100644 (file)
index 0000000..e88e061
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..661f234
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+       <path d="M10.3 7.5V6c1.4-1.5 5.2-1.2 6 0V5h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V14c-1.2 1.5-4.3 1.2-5 0V7c.7.7 2.7.9 4 .5z"/>
+</g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl.png
new file mode 100644 (file)
index 0000000..a9943cc
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/flag-rtl.svg
new file mode 100644 (file)
index 0000000..397a3da
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+       <path d="M10.3 7.5V6c1.4-1.5 5.2-1.2 6 0V5h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V14c-1.2 1.5-4.3 1.2-5 0V7c.7.7 2.7.9 4 .5z"/>
+</svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-invert.png
new file mode 100644 (file)
index 0000000..d7c6e28
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-invert.svg
new file mode 100644 (file)
index 0000000..4c6d402
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M2 5v15h20V5H2zm15 11H8c-.6 0-1-.4-1-1V9h3l2 1h5v6z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-progressive.png
new file mode 100644 (file)
index 0000000..39c58be
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..e1f8be3
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M2 5v15h20V5H2zm15 11H8c-.6 0-1-.4-1-1V9h3l2 1h5v6z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr.png
new file mode 100644 (file)
index 0000000..45c3ee9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-ltr.svg
new file mode 100644 (file)
index 0000000..7e60fb4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M2 5v15h20V5H2zm15 11H8c-.6 0-1-.4-1-1V9h3l2 1h5v6z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-invert.png
new file mode 100644 (file)
index 0000000..46b3f94
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-invert.svg
new file mode 100644 (file)
index 0000000..d2bfb08
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M22 5v15H2V5h20zM7 16h9c.6 0 1-.4 1-1V9h-3l-2 1H7v6z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-progressive.png
new file mode 100644 (file)
index 0000000..a384c8d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..ba0eb3b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M22 5v15H2V5h20zM7 16h9c.6 0 1-.4 1-1V9h-3l-2 1H7v6z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl.png
new file mode 100644 (file)
index 0000000..8a624c1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/folderPlaceholder-rtl.svg
new file mode 100644 (file)
index 0000000..e0a6f61
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M22 5v15H2V5h20zM7 16h9c.6 0 1-.4 1-1V9h-3l-2 1H7v6z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-invert.png
new file mode 100644 (file)
index 0000000..b7a3cb5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-invert.svg
new file mode 100644 (file)
index 0000000..588bef0
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path id="arrow" d="M6 6v4l1.28-1.28 2 2 1.423-1.44-2-2L10 6z"/>
+    <use transform="rotate(90 12 12)" xlink:href="#arrow"/>
+    <use transform="rotate(180 12 12)" xlink:href="#arrow"/>
+    <use transform="rotate(-90 12 12)" xlink:href="#arrow"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-progressive.png
new file mode 100644 (file)
index 0000000..8b86269
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen-progressive.svg
new file mode 100644 (file)
index 0000000..a9a0aa0
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path id="arrow" d="M6 6v4l1.28-1.28 2 2 1.423-1.44-2-2L10 6z"/>
+    <use transform="rotate(90 12 12)" xlink:href="#arrow"/>
+    <use transform="rotate(180 12 12)" xlink:href="#arrow"/>
+    <use transform="rotate(-90 12 12)" xlink:href="#arrow"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen.png
new file mode 100644 (file)
index 0000000..ced1035
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/fullScreen.svg
new file mode 100644 (file)
index 0000000..06b709b
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
+    <path id="arrow" d="M6 6v4l1.28-1.28 2 2 1.423-1.44-2-2L10 6z"/>
+    <use transform="rotate(90 12 12)" xlink:href="#arrow"/>
+    <use transform="rotate(180 12 12)" xlink:href="#arrow"/>
+    <use transform="rotate(-90 12 12)" xlink:href="#arrow"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-invert.png
new file mode 100644 (file)
index 0000000..2949648
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-invert.svg
new file mode 100644 (file)
index 0000000..cffafb7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-progressive.png
new file mode 100644 (file)
index 0000000..a6079a4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..9ef43f0
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr.png
new file mode 100644 (file)
index 0000000..9396cba
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-ltr.svg
new file mode 100644 (file)
index 0000000..df863b9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-invert.png
new file mode 100644 (file)
index 0000000..c0f155a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-invert.svg
new file mode 100644 (file)
index 0000000..64a71fa
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-progressive.png
new file mode 100644 (file)
index 0000000..5c57662
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..b44b385
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl.png
new file mode 100644 (file)
index 0000000..7aee05f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/funnel-rtl.svg
new file mode 100644 (file)
index 0000000..4eade2d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-invert.png
new file mode 100644 (file)
index 0000000..2a4d547
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright-invert.svg
new file mode 100644 (file)
index 0000000..82f466e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
+    <path d="M11.4 5.4V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm-5.2-.5c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8zM12 7c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm-3 4c0-1.7 1.3-3 3-3v6c-1.7 0-3-1.3-3-3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright.png
new file mode 100644 (file)
index 0000000..f843210
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfBright.svg
new file mode 100644 (file)
index 0000000..2745ec7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M11.4 5.4V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm-5.2-.5c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8zM12 7c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm-3 4c0-1.7 1.3-3 3-3v6c-1.7 0-3-1.3-3-3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-constructive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-constructive.png
new file mode 100644 (file)
index 0000000..57dfe53
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-constructive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-constructive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-constructive.svg
new file mode 100644 (file)
index 0000000..dbdacc6
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/>
+    <path d="M10.1 11l-3.9.5L9 14.3l-.6 3.9 3.6-1.7-.1-9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-invert.png
new file mode 100644 (file)
index 0000000..f28e35d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-invert.svg
new file mode 100644 (file)
index 0000000..febf500
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/>
+    <path d="M10.1 11l-3.9.5L9 14.3l-.6 3.9 3.6-1.7-.1-9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-progressive.png
new file mode 100644 (file)
index 0000000..57dfe53
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..dbdacc6
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/>
+    <path d="M10.1 11l-3.9.5L9 14.3l-.6 3.9 3.6-1.7-.1-9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr.png
new file mode 100644 (file)
index 0000000..d52a908
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-ltr.svg
new file mode 100644 (file)
index 0000000..cfb17d8
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/>
+    <path d="M10.1 11l-3.9.5L9 14.3l-.6 3.9 3.6-1.7-.1-9z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-constructive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-constructive.png
new file mode 100644 (file)
index 0000000..d24672a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-constructive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-constructive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-constructive.svg
new file mode 100644 (file)
index 0000000..2f45816
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 7.4L10.3 11l-4 .5L9 14.3l-.5 3.9 3.5-1.7 3.6 1.7-.6-3.9 2.8-2.8-3.9-.5L12 7.4M12 4l2.8 5.6 6.2.9-4.5 4.4 1.1 6.1-5.6-3-5.5 3 1-6.2L3 10.4l6.3-.9L12 4z"/>
+    <path d="M12.1 7.5l1.8 3.5 3.9.5-2.8 2.8.6 3.9-3.6-1.7z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-invert.png
new file mode 100644 (file)
index 0000000..c9429ae
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-invert.svg
new file mode 100644 (file)
index 0000000..11b99df
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M12 7.4L10.3 11l-4 .5L9 14.3l-.5 3.9 3.5-1.7 3.6 1.7-.6-3.9 2.8-2.8-3.9-.5L12 7.4M12 4l2.8 5.6 6.2.9-4.5 4.4 1.1 6.1-5.6-3-5.5 3 1-6.2L3 10.4l6.3-.9L12 4z"/>
+    <path d="M12.1 7.5l1.8 3.5 3.9.5-2.8 2.8.6 3.9-3.6-1.7z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-progressive.png
new file mode 100644 (file)
index 0000000..d24672a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..2f45816
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 7.4L10.3 11l-4 .5L9 14.3l-.5 3.9 3.5-1.7 3.6 1.7-.6-3.9 2.8-2.8-3.9-.5L12 7.4M12 4l2.8 5.6 6.2.9-4.5 4.4 1.1 6.1-5.6-3-5.5 3 1-6.2L3 10.4l6.3-.9L12 4z"/>
+    <path d="M12.1 7.5l1.8 3.5 3.9.5-2.8 2.8.6 3.9-3.6-1.7z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl.png
new file mode 100644 (file)
index 0000000..4991b65
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/halfStar-rtl.svg
new file mode 100644 (file)
index 0000000..c649b50
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M12 7.4L10.3 11l-4 .5L9 14.3l-.5 3.9 3.5-1.7 3.6 1.7-.6-3.9 2.8-2.8-3.9-.5L12 7.4M12 4l2.8 5.6 6.2.9-4.5 4.4 1.1 6.1-5.6-3-5.5 3 1-6.2L3 10.4l6.3-.9L12 4z"/>
+    <path d="M12.1 7.5l1.8 3.5 3.9.5-2.8 2.8.6 3.9-3.6-1.7z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-invert.png
new file mode 100644 (file)
index 0000000..2070997
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-invert.svg
new file mode 100644 (file)
index 0000000..1607feb
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M15 7c-2 0-3 2-3 2s-1-2-3-2c-2.5 0-4 2-4 4 0 4 5 5 7 8 2-3 7-4 7-8 0-2-1.5-4-4-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-progressive.png
new file mode 100644 (file)
index 0000000..8797321
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart-progressive.svg
new file mode 100644 (file)
index 0000000..816e672
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M15 7c-2 0-3 2-3 2s-1-2-3-2c-2.5 0-4 2-4 4 0 4 5 5 7 8 2-3 7-4 7-8 0-2-1.5-4-4-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart.png
new file mode 100644 (file)
index 0000000..76d76d0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/heart.svg
new file mode 100644 (file)
index 0000000..6433201
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M15 7c-2 0-3 2-3 2s-1-2-3-2c-2.5 0-4 2-4 4 0 4 5 5 7 8 2-3 7-4 7-8 0-2-1.5-4-4-4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr-invert.png
new file mode 100644 (file)
index 0000000..35d8f22
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr-invert.svg
new file mode 100644 (file)
index 0000000..7e0a658
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="help">
+        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.92 9.916 9.92 5.48 0 9.92-4.44 9.92-9.913 0-5.477-4.44-9.915-9.913-9.915zm.002 18a8.084 8.084 0 1 1 0-16.168 8.084 8.084 0 0 1 0 16.168z"/>
+        <g id="question-mark">
+            <path id="top" d="M11.766 6.688c-2.5 0-3.22 2.188-3.22 2.188l1.412.854s.298-.79.9-1.23c.517-.374 1.626-.624 2.22.126.7.885-.17 1.587-1.078 2.72C11.047 12.53 11 15 11 15h1.97s.134-2.318 1.04-3.38c.603-.708 1.443-1.34 1.443-2.495s-1.187-2.437-3.687-2.437z"/>
+            <path id="bottom" d="M11 16h2v2h-2z"/>
+        </g>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr-progressive.png
new file mode 100644 (file)
index 0000000..87236a8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..8a2e3ca
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="help">
+        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.92 9.916 9.92 5.48 0 9.92-4.44 9.92-9.913 0-5.477-4.44-9.915-9.913-9.915zm.002 18a8.084 8.084 0 1 1 0-16.168 8.084 8.084 0 0 1 0 16.168z"/>
+        <g id="question-mark">
+            <path id="top" d="M11.766 6.688c-2.5 0-3.22 2.188-3.22 2.188l1.412.854s.298-.79.9-1.23c.517-.374 1.626-.624 2.22.126.7.885-.17 1.587-1.078 2.72C11.047 12.53 11 15 11 15h1.97s.134-2.318 1.04-3.38c.603-.708 1.443-1.34 1.443-2.495s-1.187-2.437-3.687-2.437z"/>
+            <path id="bottom" d="M11 16h2v2h-2z"/>
+        </g>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr.png
new file mode 100644 (file)
index 0000000..9bb1382
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-ltr.svg
new file mode 100644 (file)
index 0000000..a77dca2
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="help">
+        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.92 9.916 9.92 5.48 0 9.92-4.44 9.92-9.913 0-5.477-4.44-9.915-9.913-9.915zm.002 18a8.084 8.084 0 1 1 0-16.168 8.084 8.084 0 0 1 0 16.168z"/>
+        <g id="question-mark">
+            <path id="top" d="M11.766 6.688c-2.5 0-3.22 2.188-3.22 2.188l1.412.854s.298-.79.9-1.23c.517-.374 1.626-.624 2.22.126.7.885-.17 1.587-1.078 2.72C11.047 12.53 11 15 11 15h1.97s.134-2.318 1.04-3.38c.603-.708 1.443-1.34 1.443-2.495s-1.187-2.437-3.687-2.437z"/>
+            <path id="bottom" d="M11 16h2v2h-2z"/>
+        </g>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl-invert.png
new file mode 100644 (file)
index 0000000..9cb8cb2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl-invert.svg
new file mode 100644 (file)
index 0000000..2d78cb8
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="help">
+        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.92-9.916 9.92-5.48 0-9.92-4.44-9.92-9.913 0-5.477 4.44-9.915 9.913-9.915zm-.002 18a8.084 8.084 0 1 0 0-16.168 8.084 8.084 0 0 0 0 16.168z"/>
+        <g id="question-mark">
+            <path id="top" d="M12.234 6.688c2.5 0 3.22 2.188 3.22 2.188l-1.412.854s-.298-.79-.9-1.23c-.517-.374-1.626-.624-2.22.126-.7.885.17 1.587 1.078 2.72C12.953 12.53 13 15 13 15h-1.97s-.134-2.318-1.04-3.38c-.603-.708-1.443-1.34-1.443-2.495 0-1.156 1.187-2.437 3.687-2.437z"/>
+            <path id="bottom" d="M13 16h-2v2h2z"/>
+        </g>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl-progressive.png
new file mode 100644 (file)
index 0000000..72f95c2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..878c72c
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="help">
+        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.92-9.916 9.92-5.48 0-9.92-4.44-9.92-9.913 0-5.477 4.44-9.915 9.913-9.915zm-.002 18a8.084 8.084 0 1 0 0-16.168 8.084 8.084 0 0 0 0 16.168z"/>
+        <g id="question-mark">
+            <path id="top" d="M12.234 6.688c2.5 0 3.22 2.188 3.22 2.188l-1.412.854s-.298-.79-.9-1.23c-.517-.374-1.626-.624-2.22.126-.7.885.17 1.587 1.078 2.72C12.953 12.53 13 15 13 15h-1.97s-.134-2.318-1.04-3.38c-.603-.708-1.443-1.34-1.443-2.495 0-1.156 1.187-2.437 3.687-2.437z"/>
+            <path id="bottom" d="M13 16h-2v2h2z"/>
+        </g>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl.png
new file mode 100644 (file)
index 0000000..50899b0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/help-rtl.svg
new file mode 100644 (file)
index 0000000..278b906
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="help">
+        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.92-9.916 9.92-5.48 0-9.92-4.44-9.92-9.913 0-5.477 4.44-9.915 9.913-9.915zm-.002 18a8.084 8.084 0 1 0 0-16.168 8.084 8.084 0 0 0 0 16.168z"/>
+        <g id="question-mark">
+            <path id="top" d="M12.234 6.688c2.5 0 3.22 2.188 3.22 2.188l-1.412.854s-.298-.79-.9-1.23c-.517-.374-1.626-.624-2.22.126-.7.885.17 1.587 1.078 2.72C12.953 12.53 13 15 13 15h-1.97s-.134-2.318-1.04-3.38c-.603-.708-1.443-1.34-1.443-2.495 0-1.156 1.187-2.437 3.687-2.437z"/>
+            <path id="bottom" d="M13 16h-2v2h2z"/>
+        </g>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr-invert.png
new file mode 100644 (file)
index 0000000..314d7ac
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr-invert.svg
new file mode 100644 (file)
index 0000000..e301dea
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"><g fill="#fff">
+    <path d="M5.066 18.236l.14-.244c.976-1.69 1.341-4.587.815-6.469l-.14-.507.2-.365L11.074 2l9.011 5.203-4.994 8.65-.204.354-.522.134c-1.893.485-4.22 2.252-5.195 3.94l-.14.244-.721-.416-1.041 1.89H3.914l1.893-3.336z" fill-rule="evenodd"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr-progressive.png
new file mode 100644 (file)
index 0000000..14bd7be
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..4cc90b5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"><g fill="#36c">
+    <path d="M5.066 18.236l.14-.244c.976-1.69 1.341-4.587.815-6.469l-.14-.507.2-.365L11.074 2l9.011 5.203-4.994 8.65-.204.354-.522.134c-1.893.485-4.22 2.252-5.195 3.94l-.14.244-.721-.416-1.041 1.89H3.914l1.893-3.336z" fill-rule="evenodd"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr.png
new file mode 100644 (file)
index 0000000..73dd6b9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-ltr.svg
new file mode 100644 (file)
index 0000000..eb42923
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24">
+    <path d="M5.066 18.236l.14-.244c.976-1.69 1.341-4.587.815-6.469l-.14-.507.2-.365L11.074 2l9.011 5.203-4.994 8.65-.204.354-.522.134c-1.893.485-4.22 2.252-5.195 3.94l-.14.244-.721-.416-1.041 1.89H3.914l1.893-3.336z" fill-rule="evenodd"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl-invert.png
new file mode 100644 (file)
index 0000000..024595e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl-invert.svg
new file mode 100644 (file)
index 0000000..46d61c2
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"><g fill="#fff">
+    <path d="M18.934 18.236l-.14-.244c-.976-1.69-1.341-4.587-.815-6.469l.14-.507-.2-.365L12.926 2 3.914 7.203l4.994 8.65.204.354.522.134c1.893.485 4.22 2.252 5.195 3.94l.14.244.721-.416 1.041 1.89h3.355l-1.893-3.336z" fill-rule="evenodd"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl-progressive.png
new file mode 100644 (file)
index 0000000..039ccbe
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..4f3997a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"><g fill="#36c">
+    <path d="M18.934 18.236l-.14-.244c-.976-1.69-1.341-4.587-.815-6.469l.14-.507-.2-.365L12.926 2 3.914 7.203l4.994 8.65.204.354.522.134c1.893.485 4.22 2.252 5.195 3.94l.14.244.721-.416 1.041 1.89h3.355l-1.893-3.336z" fill-rule="evenodd"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl.png
new file mode 100644 (file)
index 0000000..2ea2983
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/highlight-rtl.svg
new file mode 100644 (file)
index 0000000..9b1940e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24">
+    <path d="M18.934 18.236l-.14-.244c-.976-1.69-1.341-4.587-.815-6.469l.14-.507-.2-.365L12.926 2 3.914 7.203l4.994 8.65.204.354.522.134c1.893.485 4.22 2.252 5.195 3.94l.14.244.721-.416 1.041 1.89h3.355l-1.893-3.336z" fill-rule="evenodd"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-invert.png
new file mode 100644 (file)
index 0000000..0bd8394
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-invert.svg
new file mode 100644 (file)
index 0000000..fa0a150
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="history">
+        <path id="clock-hands" d="M17.26 15.076s-2.385-1.935-4.005-3.062c.72-2.397 1.702-6.56 1.702-6.56s-4.35 5.364-4.877 6.7c-.463 1.168 1.46 2.21 2.346 1.678 1.9.55 4.834 1.244 4.834 1.244z"/>
+        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12a9.86 9.86 0 0 0 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616A7.982 7.982 0 0 1 4.004 12a8.084 8.084 0 0 1 16.167.004 8.08 8.08 0 0 1-8.08 8.085 7.975 7.975 0 0 1-3.21-.68L8.05 21.04a9.81 9.81 0 0 0 4.045.874C17.563 21.914 22 17.476 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-progressive.png
new file mode 100644 (file)
index 0000000..ec635a1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history-progressive.svg
new file mode 100644 (file)
index 0000000..bd26dfb
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="history">
+        <path id="clock-hands" d="M17.26 15.076s-2.385-1.935-4.005-3.062c.72-2.397 1.702-6.56 1.702-6.56s-4.35 5.364-4.877 6.7c-.463 1.168 1.46 2.21 2.346 1.678 1.9.55 4.834 1.244 4.834 1.244z"/>
+        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12a9.86 9.86 0 0 0 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616A7.982 7.982 0 0 1 4.004 12a8.084 8.084 0 0 1 16.167.004 8.08 8.08 0 0 1-8.08 8.085 7.975 7.975 0 0 1-3.21-.68L8.05 21.04a9.81 9.81 0 0 0 4.045.874C17.563 21.914 22 17.476 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history.png
new file mode 100644 (file)
index 0000000..417f529
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/history.svg
new file mode 100644 (file)
index 0000000..68beaa1
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="history">
+        <path id="clock-hands" d="M17.26 15.076s-2.385-1.935-4.005-3.062c.72-2.397 1.702-6.56 1.702-6.56s-4.35 5.364-4.877 6.7c-.463 1.168 1.46 2.21 2.346 1.678 1.9.55 4.834 1.244 4.834 1.244z"/>
+        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12a9.86 9.86 0 0 0 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616A7.982 7.982 0 0 1 4.004 12a8.084 8.084 0 0 1 16.167.004 8.08 8.08 0 0 1-8.08 8.085 7.975 7.975 0 0 1-3.21-.68L8.05 21.04a9.81 9.81 0 0 0 4.045.874C17.563 21.914 22 17.476 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr-invert.png
new file mode 100644 (file)
index 0000000..42797a2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr-invert.svg
new file mode 100644 (file)
index 0000000..04354ce
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="image">
+        <path id="mountains" d="M18 17l-3-3-2 1-3-3-4 5zm2-11v13H4V6z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr-progressive.png
new file mode 100644 (file)
index 0000000..f5cefdf
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..252099f
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="image">
+        <path id="mountains" d="M18 17l-3-3-2 1-3-3-4 5zm2-11v13H4V6z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr.png
new file mode 100644 (file)
index 0000000..f91dfa2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-ltr.svg
new file mode 100644 (file)
index 0000000..dfcbd8b
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="image">
+        <path id="mountains" d="M18 17l-3-3-2 1-3-3-4 5zm2-11v13H4V6z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl-invert.png
new file mode 100644 (file)
index 0000000..c33eed6
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl-invert.svg
new file mode 100644 (file)
index 0000000..875fe66
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="image">
+        <path id="mountains" d="M6 17l3-3 2 1 3-3 4 5zM4 6v13h16V6z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl-progressive.png
new file mode 100644 (file)
index 0000000..eadff85
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..d015e8b
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="image">
+        <path id="mountains" d="M6 17l3-3 2 1 3-3 4 5zM4 6v13h16V6z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl.png
new file mode 100644 (file)
index 0000000..f33be17
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/image-rtl.svg
new file mode 100644 (file)
index 0000000..2251c0e
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="image">
+        <path id="mountains" d="M6 17l3-3 2 1 3-3 4 5zM4 6v13h16V6z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-invert.png
new file mode 100644 (file)
index 0000000..422f8ea
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-invert.svg
new file mode 100644 (file)
index 0000000..78c40b3
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="imageAdd">
+        <path id="mountains" d="M16 17l-3-3-2 1-3-3-4 5zm-1-8v4h3v6H2V6h9v3z"/>
+        <path id="add" d="M22 6h-4V2h-2v4h-4v2h4v4h2V8h4z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-progressive.png
new file mode 100644 (file)
index 0000000..e64819c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..b898956
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="imageAdd">
+        <path id="mountains" d="M16 17l-3-3-2 1-3-3-4 5zm-1-8v4h3v6H2V6h9v3z"/>
+        <path id="add" d="M22 6h-4V2h-2v4h-4v2h4v4h2V8h4z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr.png
new file mode 100644 (file)
index 0000000..f08883c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-ltr.svg
new file mode 100644 (file)
index 0000000..1b60cf0
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="imageAdd">
+        <path id="mountains" d="M16 17l-3-3-2 1-3-3-4 5zm-1-8v4h3v6H2V6h9v3z"/>
+        <path id="add" d="M22 6h-4V2h-2v4h-4v2h4v4h2V8h4z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-invert.png
new file mode 100644 (file)
index 0000000..375a79f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-invert.svg
new file mode 100644 (file)
index 0000000..e76b43f
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="imageAdd">
+        <path id="mountains" d="M8 17l3-3 2 1 3-3 4 5zm1-8v4H6v6h16V6h-9v3z"/>
+        <path id="add" d="M2 6h4V2h2v4h4v2H8v4H6V8H2z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-progressive.png
new file mode 100644 (file)
index 0000000..dec9401
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..61e2ed4
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="imageAdd">
+        <path id="mountains" d="M8 17l3-3 2 1 3-3 4 5zm1-8v4H6v6h16V6h-9v3z"/>
+        <path id="add" d="M2 6h4V2h2v4h4v2H8v4H6V8H2z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl.png
new file mode 100644 (file)
index 0000000..dd60447
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageAdd-rtl.svg
new file mode 100644 (file)
index 0000000..b86d499
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="imageAdd">
+        <path id="mountains" d="M8 17l3-3 2 1 3-3 4 5zm1-8v4H6v6h16V6h-9v3z"/>
+        <path id="add" d="M2 6h4V2h2v4h4v2H8v4H6V8H2z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr-invert.png
new file mode 100644 (file)
index 0000000..bd15ff0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr-invert.svg
new file mode 100644 (file)
index 0000000..c2d3d8a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M2 4v14h2V6h15V4H2zm3 3v13h16V7H5zm6 6l3 3 2-1 3 3H7l4-5z" id="imageGallery"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr-progressive.png
new file mode 100644 (file)
index 0000000..7e360aa
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..4029c27
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M2 4v14h2V6h15V4H2zm3 3v13h16V7H5zm6 6l3 3 2-1 3 3H7l4-5z" id="imageGallery"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr.png
new file mode 100644 (file)
index 0000000..3934d14
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-ltr.svg
new file mode 100644 (file)
index 0000000..2fa2e52
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M2 4v14h2V6h15V4H2zm3 3v13h16V7H5zm6 6l3 3 2-1 3 3H7l4-5z" id="imageGallery"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl-invert.png
new file mode 100644 (file)
index 0000000..85b22c4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl-invert.svg
new file mode 100644 (file)
index 0000000..b32a86a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M21 4v14h-2V6H4V4h17zm-3 3v13H2V7h16zm-6 6l-3 3-2-1-3 3h12l-4-5z" id="imageGallery"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl-progressive.png
new file mode 100644 (file)
index 0000000..3d014a5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..21f4a80
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M21 4v14h-2V6H4V4h17zm-3 3v13H2V7h16zm-6 6l-3 3-2-1-3 3h12l-4-5z" id="imageGallery"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl.png
new file mode 100644 (file)
index 0000000..f8af41f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageGallery-rtl.svg
new file mode 100644 (file)
index 0000000..c705cec
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M21 4v14h-2V6H4V4h17zm-3 3v13H2V7h16zm-6 6l-3 3-2-1-3 3h12l-4-5z" id="imageGallery"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-invert.png
new file mode 100644 (file)
index 0000000..61b5d22
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-invert.svg
new file mode 100644 (file)
index 0000000..b726d4b
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="imageAdd">
+        <path id="mountains" d="M18 17l-3-3-2 1-3-3-4 5zm2-5v7H4V6h8v6z"/>
+        <path id="lock" d="M18.5 5h-3V4s0-1.5 1.5-1.5c1.5.06 1.5 1.5 1.5 1.5zM20 5V4s0-3-3-3-3 3-3 3v1h-1v6h8V5z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-progressive.png
new file mode 100644 (file)
index 0000000..f5604bf
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..e726c03
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="imageAdd">
+        <path id="mountains" d="M18 17l-3-3-2 1-3-3-4 5zm2-5v7H4V6h8v6z"/>
+        <path id="lock" d="M18.5 5h-3V4s0-1.5 1.5-1.5c1.5.06 1.5 1.5 1.5 1.5zM20 5V4s0-3-3-3-3 3-3 3v1h-1v6h8V5z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr.png
new file mode 100644 (file)
index 0000000..a1a1e1e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-ltr.svg
new file mode 100644 (file)
index 0000000..50a928a
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="imageAdd">
+        <path id="mountains" d="M18 17l-3-3-2 1-3-3-4 5zm2-5v7H4V6h8v6z"/>
+        <path id="lock" d="M18.5 5h-3V4s0-1.5 1.5-1.5c1.5.06 1.5 1.5 1.5 1.5zM20 5V4s0-3-3-3-3 3-3 3v1h-1v6h8V5z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-invert.png
new file mode 100644 (file)
index 0000000..2223f5f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-invert.svg
new file mode 100644 (file)
index 0000000..c92cd7f
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="imageAdd">
+        <path id="mountains" d="M7 17l3-3 2 1 3-3 4 5zm-2-5v7h16V6h-8v6z"/>
+        <path id="lock" d="M6.5 5h3V4s0-1.5-1.5-1.5C6.5 2.56 6.5 4 6.5 4zM5 5V4s0-3 3-3 3 3 3 3v1h1v6H4V5z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-progressive.png
new file mode 100644 (file)
index 0000000..817e599
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..8381443
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="imageAdd">
+        <path id="mountains" d="M7 17l3-3 2 1 3-3 4 5zm-2-5v7h16V6h-8v6z"/>
+        <path id="lock" d="M6.5 5h3V4s0-1.5-1.5-1.5C6.5 2.56 6.5 4 6.5 4zM5 5V4s0-3 3-3 3 3 3 3v1h1v6H4V5z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl.png
new file mode 100644 (file)
index 0000000..f0ddda4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/imageLock-rtl.svg
new file mode 100644 (file)
index 0000000..e8ac3ed
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="imageAdd">
+        <path id="mountains" d="M7 17l3-3 2 1 3-3 4 5zm-2-5v7h16V6h-8v6z"/>
+        <path id="lock" d="M6.5 5h3V4s0-1.5-1.5-1.5C6.5 2.56 6.5 4 6.5 4zM5 5V4s0-3 3-3 3 3 3 3v1h1v6H4V5z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-invert.png
new file mode 100644 (file)
index 0000000..af944e7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-invert.svg
new file mode 100644 (file)
index 0000000..04768db
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 8v8l5-4-5-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-progressive.png
new file mode 100644 (file)
index 0000000..eec5149
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..2734879
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 8v8l5-4-5-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr.png
new file mode 100644 (file)
index 0000000..b7663ae
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-ltr.svg
new file mode 100644 (file)
index 0000000..3760696
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 8v8l5-4-5-4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-invert.png
new file mode 100644 (file)
index 0000000..f52ff9b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-invert.svg
new file mode 100644 (file)
index 0000000..c70f991
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zM21 8v8l-5-4 5-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-progressive.png
new file mode 100644 (file)
index 0000000..b6edc33
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..992ed82
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zM21 8v8l-5-4 5-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl.png
new file mode 100644 (file)
index 0000000..63b2750
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/indent-rtl.svg
new file mode 100644 (file)
index 0000000..9648f34
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zM21 8v8l-5-4 5-4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-invert.png
new file mode 100644 (file)
index 0000000..78532de
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-invert.svg
new file mode 100644 (file)
index 0000000..f3519f3
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="info">
+        <path id="circled-i" d="M11.5 17a5.5 5.5 0 1 1 0-11 5.5 5.5 0 0 1 0 11zm0-12a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zm.5 5v4h1v1h-3v-1h1v-3h-1v-1zm-1-2h1v1h-1z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-progressive.png
new file mode 100644 (file)
index 0000000..9a0f5d7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info-progressive.svg
new file mode 100644 (file)
index 0000000..1e2ecf8
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="info">
+        <path id="circled-i" d="M11.5 17a5.5 5.5 0 1 1 0-11 5.5 5.5 0 0 1 0 11zm0-12a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zm.5 5v4h1v1h-3v-1h1v-3h-1v-1zm-1-2h1v1h-1z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info.png
new file mode 100644 (file)
index 0000000..0b4270d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/info.svg
new file mode 100644 (file)
index 0000000..72a9b4c
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="info">
+        <path id="circled-i" d="M11.5 17a5.5 5.5 0 1 1 0-11 5.5 5.5 0 0 1 0 11zm0-12a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zm.5 5v4h1v1h-3v-1h1v-3h-1v-1zm-1-2h1v1h-1z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-invert.png
new file mode 100644 (file)
index 0000000..12dfc56
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-invert.svg
new file mode 100644 (file)
index 0000000..7a52242
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="italic-a">
+        <path id="a" d="M14.667 6h-1.372l-7 12H8l2.333-4h4L15 18h1.667l-2-12zm-3.75 7l2.527-4.333.723 4.333h-3.25z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-progressive.png
new file mode 100644 (file)
index 0000000..f8c25a9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a-progressive.svg
new file mode 100644 (file)
index 0000000..2431aeb
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="italic-a">
+        <path id="a" d="M14.667 6h-1.372l-7 12H8l2.333-4h4L15 18h1.667l-2-12zm-3.75 7l2.527-4.333.723 4.333h-3.25z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a.png
new file mode 100644 (file)
index 0000000..2f5fd18
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-a.svg
new file mode 100644 (file)
index 0000000..a3a11c6
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="italic-a">
+        <path id="a" d="M14.667 6h-1.372l-7 12H8l2.333-4h4L15 18h1.667l-2-12zm-3.75 7l2.527-4.333.723 4.333h-3.25z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-invert.png
new file mode 100644 (file)
index 0000000..567b290
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-invert.svg
new file mode 100644 (file)
index 0000000..4d68c38
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="italic-arab-keheh-jeem">
+        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125a1.26 1.26 0 0 0 .065.78c.19.406.54.575.844.814l.093-.12.53.627c.14.165.345.514.47.94.138.462.08.724 0 1.124h-3.44c-.34 0-.592.007-.766-.02-.34-.053-.256-.21-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.046-.698-.185-1.094-.155-.36.026-.77.24-1.03.72-.25.447-.436.838-.66 1.28l.75-.47c.23-.14.486-.226.72-.218.158.004.276.053.407.093-.234.204-.51.4-.72.56-.3.26-.704.69-.908 1-.403.617-.694 1.086-.875 1.78-.18.69.003 1.34.468 1.75.426.38.846.52 1.28.566.65.064 1.206.092 2-.19.658-.23 1.022-.552 1.5-.97-.882.11-1.816.09-2.53.033-.87-.07-1.268-.386-1.47-.596-.27-.283-.306-.64-.155-1.22a1.44 1.44 0 0 1 .25-.53c.17-.228.363-.435.593-.656.45-.436 1.01-.737 1.46-.94-.042.207-.104.444-.052.69.05.23.25.38.44.47.26.12.506.152.69.153 1.42.01 2.86 0 4.28 0 .246 0 .45-.163.593-.375.14-.21.25-.48.343-.845.13-.5.094-1.062-.094-1.625a4.812 4.812 0 0 0-.72-1.406c-.336-.444-.675-.83-1-1.22 1.256-.815 2.715-1.24 3.97-1.688.12-.452.222-.926.31-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.1.813.336-.303.627-.674.876-.97-.39-.267-.77-.587-1.093-.843z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-progressive.png
new file mode 100644 (file)
index 0000000..3c3ed9f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem-progressive.svg
new file mode 100644 (file)
index 0000000..8c23b30
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="italic-arab-keheh-jeem">
+        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125a1.26 1.26 0 0 0 .065.78c.19.406.54.575.844.814l.093-.12.53.627c.14.165.345.514.47.94.138.462.08.724 0 1.124h-3.44c-.34 0-.592.007-.766-.02-.34-.053-.256-.21-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.046-.698-.185-1.094-.155-.36.026-.77.24-1.03.72-.25.447-.436.838-.66 1.28l.75-.47c.23-.14.486-.226.72-.218.158.004.276.053.407.093-.234.204-.51.4-.72.56-.3.26-.704.69-.908 1-.403.617-.694 1.086-.875 1.78-.18.69.003 1.34.468 1.75.426.38.846.52 1.28.566.65.064 1.206.092 2-.19.658-.23 1.022-.552 1.5-.97-.882.11-1.816.09-2.53.033-.87-.07-1.268-.386-1.47-.596-.27-.283-.306-.64-.155-1.22a1.44 1.44 0 0 1 .25-.53c.17-.228.363-.435.593-.656.45-.436 1.01-.737 1.46-.94-.042.207-.104.444-.052.69.05.23.25.38.44.47.26.12.506.152.69.153 1.42.01 2.86 0 4.28 0 .246 0 .45-.163.593-.375.14-.21.25-.48.343-.845.13-.5.094-1.062-.094-1.625a4.812 4.812 0 0 0-.72-1.406c-.336-.444-.675-.83-1-1.22 1.256-.815 2.715-1.24 3.97-1.688.12-.452.222-.926.31-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.1.813.336-.303.627-.674.876-.97-.39-.267-.77-.587-1.093-.843z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem.png
new file mode 100644 (file)
index 0000000..c8e03ee
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-keheh-jeem.svg
new file mode 100644 (file)
index 0000000..11b1458
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="italic-arab-keheh-jeem">
+        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125a1.26 1.26 0 0 0 .065.78c.19.406.54.575.844.814l.093-.12.53.627c.14.165.345.514.47.94.138.462.08.724 0 1.124h-3.44c-.34 0-.592.007-.766-.02-.34-.053-.256-.21-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.046-.698-.185-1.094-.155-.36.026-.77.24-1.03.72-.25.447-.436.838-.66 1.28l.75-.47c.23-.14.486-.226.72-.218.158.004.276.053.407.093-.234.204-.51.4-.72.56-.3.26-.704.69-.908 1-.403.617-.694 1.086-.875 1.78-.18.69.003 1.34.468 1.75.426.38.846.52 1.28.566.65.064 1.206.092 2-.19.658-.23 1.022-.552 1.5-.97-.882.11-1.816.09-2.53.033-.87-.07-1.268-.386-1.47-.596-.27-.283-.306-.64-.155-1.22a1.44 1.44 0 0 1 .25-.53c.17-.228.363-.435.593-.656.45-.436 1.01-.737 1.46-.94-.042.207-.104.444-.052.69.05.23.25.38.44.47.26.12.506.152.69.153 1.42.01 2.86 0 4.28 0 .246 0 .45-.163.593-.375.14-.21.25-.48.343-.845.13-.5.094-1.062-.094-1.625a4.812 4.812 0 0 0-.72-1.406c-.336-.444-.675-.83-1-1.22 1.256-.815 2.715-1.24 3.97-1.688.12-.452.222-.926.31-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.1.813.336-.303.627-.674.876-.97-.39-.267-.77-.587-1.093-.843z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-invert.png
new file mode 100644 (file)
index 0000000..03989d4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-invert.svg
new file mode 100644 (file)
index 0000000..799a785
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="italic-arab-meem">
+        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627a8.31 8.31 0 0 1-1.082 1.833c-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.692-.98a24.1 24.1 0 0 1 .94-1.09c.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.765-.293l.065-.128c.01-.11-.01-.24-.052-.394a2.403 2.403 0 0 0-.232-.522c-.22-.428-.438-.64-.654-.64-.294 0-.915.268-1.864.805-.36.208-.378.125-.05-.247 1.555-1.71 2.705-2.566 3.45-2.566.38 0 .67.13.86.394.134.195.25.6.343 1.21l.202 1.2c.105.586.24.895.408.925"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-progressive.png
new file mode 100644 (file)
index 0000000..7179cb6
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem-progressive.svg
new file mode 100644 (file)
index 0000000..b22bd45
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="italic-arab-meem">
+        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627a8.31 8.31 0 0 1-1.082 1.833c-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.692-.98a24.1 24.1 0 0 1 .94-1.09c.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.765-.293l.065-.128c.01-.11-.01-.24-.052-.394a2.403 2.403 0 0 0-.232-.522c-.22-.428-.438-.64-.654-.64-.294 0-.915.268-1.864.805-.36.208-.378.125-.05-.247 1.555-1.71 2.705-2.566 3.45-2.566.38 0 .67.13.86.394.134.195.25.6.343 1.21l.202 1.2c.105.586.24.895.408.925"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem.png
new file mode 100644 (file)
index 0000000..409a416
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-arab-meem.svg
new file mode 100644 (file)
index 0000000..f15586e
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="italic-arab-meem">
+        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627a8.31 8.31 0 0 1-1.082 1.833c-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.692-.98a24.1 24.1 0 0 1 .94-1.09c.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.765-.293l.065-.128c.01-.11-.01-.24-.052-.394a2.403 2.403 0 0 0-.232-.522c-.22-.428-.438-.64-.654-.64-.294 0-.915.268-1.864.805-.36.208-.378.125-.05-.247 1.555-1.71 2.705-2.566 3.45-2.566.38 0 .67.13.86.394.134.195.25.6.343 1.21l.202 1.2c.105.586.24.895.408.925"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-invert.png
new file mode 100644 (file)
index 0000000..75dc339
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-invert.svg
new file mode 100644 (file)
index 0000000..6b56e37
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="italic-armn-sha">
+        <path id="armn-sha" d="M11.564 7.678a3.073 3.073 0 0 0-.93-.268c-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.33 1.67-2.625-1.165a1.867 1.867 0 0 0-.433-.134 2.45 2.45 0 0 0-.576-.06 4.88 4.88 0 0 0-1.663.28c-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283a5.48 5.48 0 0 0-.63 1.71c-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.044-.08 1.48-.236a3.488 3.488 0 0 0 1.135-.66c.325-.29.59-.634.795-1.034.21-.4.363-.84.458-1.322l.11-.56h1.6l-.12.59a5.925 5.925 0 0 1-.676 1.844 5.19 5.19 0 0 1-1.214 1.423c-.488.395-1.053.7-1.694.923a6.573 6.573 0 0 1-2.106.324c-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.437-.573-.97-.678-1.608-.105-.64-.078-1.366.08-2.186.125-.66.346-1.274.66-1.836A6.332 6.332 0 0 1 8.792 9.54a5.955 5.955 0 0 1 1.496-1.072 5.87 5.87 0 0 1 1.732-.57l-.465-.23"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-progressive.png
new file mode 100644 (file)
index 0000000..db31afa
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha-progressive.svg
new file mode 100644 (file)
index 0000000..50ee046
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="italic-armn-sha">
+        <path id="armn-sha" d="M11.564 7.678a3.073 3.073 0 0 0-.93-.268c-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.33 1.67-2.625-1.165a1.867 1.867 0 0 0-.433-.134 2.45 2.45 0 0 0-.576-.06 4.88 4.88 0 0 0-1.663.28c-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283a5.48 5.48 0 0 0-.63 1.71c-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.044-.08 1.48-.236a3.488 3.488 0 0 0 1.135-.66c.325-.29.59-.634.795-1.034.21-.4.363-.84.458-1.322l.11-.56h1.6l-.12.59a5.925 5.925 0 0 1-.676 1.844 5.19 5.19 0 0 1-1.214 1.423c-.488.395-1.053.7-1.694.923a6.573 6.573 0 0 1-2.106.324c-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.437-.573-.97-.678-1.608-.105-.64-.078-1.366.08-2.186.125-.66.346-1.274.66-1.836A6.332 6.332 0 0 1 8.792 9.54a5.955 5.955 0 0 1 1.496-1.072 5.87 5.87 0 0 1 1.732-.57l-.465-.23"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha.png
new file mode 100644 (file)
index 0000000..2dd80f7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-armn-sha.svg
new file mode 100644 (file)
index 0000000..c32ff49
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="italic-armn-sha">
+        <path id="armn-sha" d="M11.564 7.678a3.073 3.073 0 0 0-.93-.268c-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.33 1.67-2.625-1.165a1.867 1.867 0 0 0-.433-.134 2.45 2.45 0 0 0-.576-.06 4.88 4.88 0 0 0-1.663.28c-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283a5.48 5.48 0 0 0-.63 1.71c-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.044-.08 1.48-.236a3.488 3.488 0 0 0 1.135-.66c.325-.29.59-.634.795-1.034.21-.4.363-.84.458-1.322l.11-.56h1.6l-.12.59a5.925 5.925 0 0 1-.676 1.844 5.19 5.19 0 0 1-1.214 1.423c-.488.395-1.053.7-1.694.923a6.573 6.573 0 0 1-2.106.324c-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.437-.573-.97-.678-1.608-.105-.64-.078-1.366.08-2.186.125-.66.346-1.274.66-1.836A6.332 6.332 0 0 1 8.792 9.54a5.955 5.955 0 0 1 1.496-1.072 5.87 5.87 0 0 1 1.732-.57l-.465-.23"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-invert.png
new file mode 100644 (file)
index 0000000..a165657
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-invert.svg
new file mode 100644 (file)
index 0000000..01afe88
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="italic-c">
+        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04a4.835 4.835 0 0 1-3.015 1.03c-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.89-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.78 0 1.48-.26 2.1-.785.63-.52 1.08-1.26 1.37-2.216"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-progressive.png
new file mode 100644 (file)
index 0000000..5b36059
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c-progressive.svg
new file mode 100644 (file)
index 0000000..03aa494
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="italic-c">
+        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04a4.835 4.835 0 0 1-3.015 1.03c-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.89-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.78 0 1.48-.26 2.1-.785.63-.52 1.08-1.26 1.37-2.216"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c.png
new file mode 100644 (file)
index 0000000..dc70ded
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-c.svg
new file mode 100644 (file)
index 0000000..b85eb02
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="italic-c">
+        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04a4.835 4.835 0 0 1-3.015 1.03c-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.89-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.78 0 1.48-.26 2.1-.785.63-.52 1.08-1.26 1.37-2.216"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-invert.png
new file mode 100644 (file)
index 0000000..b656d1c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-invert.svg
new file mode 100644 (file)
index 0000000..dcd0d94
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="italic-d">
+        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.642.17 1.192.472 1.65.91.454.43.8.97 1.03 1.62.23.65.344 1.378.344 2.186 0 .966-.146 1.847-.436 2.644-.284.79-.66 1.49-1.127 2.095-.46.6-.946 1.072-1.455 1.416-.504.33-1.1.582-1.794.75-.525.122-1.17.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24a3.26 3.26 0 0 0 1.05-.436 4.19 4.19 0 0 0 1.04-.975 6.652 6.652 0 0 0 .975-1.825c.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.522-.755-.87-1.27-1.04-.38-.124-.974-.186-1.78-.186H11L9.095 16.64"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-progressive.png
new file mode 100644 (file)
index 0000000..73e4545
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d-progressive.svg
new file mode 100644 (file)
index 0000000..ff61b37
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="italic-d">
+        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.642.17 1.192.472 1.65.91.454.43.8.97 1.03 1.62.23.65.344 1.378.344 2.186 0 .966-.146 1.847-.436 2.644-.284.79-.66 1.49-1.127 2.095-.46.6-.946 1.072-1.455 1.416-.504.33-1.1.582-1.794.75-.525.122-1.17.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24a3.26 3.26 0 0 0 1.05-.436 4.19 4.19 0 0 0 1.04-.975 6.652 6.652 0 0 0 .975-1.825c.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.522-.755-.87-1.27-1.04-.38-.124-.974-.186-1.78-.186H11L9.095 16.64"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d.png
new file mode 100644 (file)
index 0000000..cd5ac9d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-d.svg
new file mode 100644 (file)
index 0000000..dbc1d40
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="italic-d">
+        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.642.17 1.192.472 1.65.91.454.43.8.97 1.03 1.62.23.65.344 1.378.344 2.186 0 .966-.146 1.847-.436 2.644-.284.79-.66 1.49-1.127 2.095-.46.6-.946 1.072-1.455 1.416-.504.33-1.1.582-1.794.75-.525.122-1.17.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24a3.26 3.26 0 0 0 1.05-.436 4.19 4.19 0 0 0 1.04-.975 6.652 6.652 0 0 0 .975-1.825c.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.522-.755-.87-1.27-1.04-.38-.124-.974-.186-1.78-.186H11L9.095 16.64"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-invert.png
new file mode 100644 (file)
index 0000000..2e0918d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-invert.svg
new file mode 100644 (file)
index 0000000..f91db71
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="italic-e">
+        <path id="e" d="M7 18L9.474 6H18l-.282 1.367H10.77L10.02 11h6.09l-.28 1.367H9.74l-.88 4.273h7.44L16.018 18H7"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-progressive.png
new file mode 100644 (file)
index 0000000..0444ac2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e-progressive.svg
new file mode 100644 (file)
index 0000000..c5ca7b1
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="italic-e">
+        <path id="e" d="M7 18L9.474 6H18l-.282 1.367H10.77L10.02 11h6.09l-.28 1.367H9.74l-.88 4.273h7.44L16.018 18H7"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e.png
new file mode 100644 (file)
index 0000000..bb51c22
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-e.svg
new file mode 100644 (file)
index 0000000..f385149
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="italic-e">
+        <path id="e" d="M7 18L9.474 6H18l-.282 1.367H10.77L10.02 11h6.09l-.28 1.367H9.74l-.88 4.273h7.44L16.018 18H7"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-invert.png
new file mode 100644 (file)
index 0000000..b0e5b2c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-invert.svg
new file mode 100644 (file)
index 0000000..fea68a5
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="italic-geor-kan">
+        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.62c-.055.26-.083.497-.083.71 0 .97.52 1.46 1.564 1.46 1.31 0 2.108-.724 2.39-2.17l.058-.33a3.17 3.17 0 0 0 .066-.615c0-.927-.546-1.39-1.64-1.39H10.87l.247-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.696-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-progressive.png
new file mode 100644 (file)
index 0000000..ff933e2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan-progressive.svg
new file mode 100644 (file)
index 0000000..bacc38c
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="italic-geor-kan">
+        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.62c-.055.26-.083.497-.083.71 0 .97.52 1.46 1.564 1.46 1.31 0 2.108-.724 2.39-2.17l.058-.33a3.17 3.17 0 0 0 .066-.615c0-.927-.546-1.39-1.64-1.39H10.87l.247-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.696-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan.png
new file mode 100644 (file)
index 0000000..9750f42
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-geor-kan.svg
new file mode 100644 (file)
index 0000000..9a54880
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="italic-geor-kan">
+        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.62c-.055.26-.083.497-.083.71 0 .97.52 1.46 1.564 1.46 1.31 0 2.108-.724 2.39-2.17l.058-.33a3.17 3.17 0 0 0 .066-.615c0-.927-.546-1.39-1.64-1.39H10.87l.247-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.696-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-invert.png
new file mode 100644 (file)
index 0000000..cc8fee4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-invert.svg
new file mode 100644 (file)
index 0000000..3919051
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="italic-i">
+        <path id="i" d="M12.5 18l.25-.995h-1.5l2.508-10.037h1.5L15.5 6h-5l-.242.968h1.5l-2.51 10.037h-1.5L7.5 18z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-progressive.png
new file mode 100644 (file)
index 0000000..5c78d59
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i-progressive.svg
new file mode 100644 (file)
index 0000000..f71f6f7
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="italic-i">
+        <path id="i" d="M12.5 18l.25-.995h-1.5l2.508-10.037h1.5L15.5 6h-5l-.242.968h1.5l-2.51 10.037h-1.5L7.5 18z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i.png
new file mode 100644 (file)
index 0000000..a37620b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-i.svg
new file mode 100644 (file)
index 0000000..e670e9b
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="italic-i">
+        <path id="i" d="M12.5 18l.25-.995h-1.5l2.508-10.037h1.5L15.5 6h-5l-.242.968h1.5l-2.51 10.037h-1.5L7.5 18z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-invert.png
new file mode 100644 (file)
index 0000000..5387c36
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-invert.svg
new file mode 100644 (file)
index 0000000..b6e87b4
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="italic-k">
+        <path id="k" d="M12.018 10.652L17 6h-2l-5.31 5.234L11 6H9.5l-3 12H8l1.173-4.693 1.54-1.438C11 16 14 18 14 18h2s-4-2-3.982-7.348z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-progressive.png
new file mode 100644 (file)
index 0000000..a2e715f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k-progressive.svg
new file mode 100644 (file)
index 0000000..7494e8f
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="italic-k">
+        <path id="k" d="M12.018 10.652L17 6h-2l-5.31 5.234L11 6H9.5l-3 12H8l1.173-4.693 1.54-1.438C11 16 14 18 14 18h2s-4-2-3.982-7.348z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k.png
new file mode 100644 (file)
index 0000000..9b156fd
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-k.svg
new file mode 100644 (file)
index 0000000..38bcd73
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="italic-k">
+        <path id="k" d="M12.018 10.652L17 6h-2l-5.31 5.234L11 6H9.5l-3 12H8l1.173-4.693 1.54-1.438C11 16 14 18 14 18h2s-4-2-3.982-7.348z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-invert.png
new file mode 100644 (file)
index 0000000..42b674e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-invert.svg
new file mode 100644 (file)
index 0000000..ed2fe67
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="italic-s">
+        <path id="s" d="M16.474 6.59l-.302 1.525a7.36 7.36 0 0 0-1.557-.628 5.432 5.432 0 0 0-1.487-.217c-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.65.302.86.207.19.733.4 1.58.63l.937.23c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.31-1.61a7.613 7.613 0 0 0 1.72.805c.58.18 1.155.27 1.73.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.354-1.054-.233-.242-.737-.46-1.512-.657l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.368-.584-.88-.584-1.535 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.555 0 1.1.05 1.644.146.542.1 1.085.245 1.627.442"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-progressive.png
new file mode 100644 (file)
index 0000000..d517352
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s-progressive.svg
new file mode 100644 (file)
index 0000000..0eeeb50
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="italic-s">
+        <path id="s" d="M16.474 6.59l-.302 1.525a7.36 7.36 0 0 0-1.557-.628 5.432 5.432 0 0 0-1.487-.217c-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.65.302.86.207.19.733.4 1.58.63l.937.23c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.31-1.61a7.613 7.613 0 0 0 1.72.805c.58.18 1.155.27 1.73.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.354-1.054-.233-.242-.737-.46-1.512-.657l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.368-.584-.88-.584-1.535 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.555 0 1.1.05 1.644.146.542.1 1.085.245 1.627.442"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s.png
new file mode 100644 (file)
index 0000000..3213d6d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/italic-s.svg
new file mode 100644 (file)
index 0000000..b3fb340
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="italic-s">
+        <path id="s" d="M16.474 6.59l-.302 1.525a7.36 7.36 0 0 0-1.557-.628 5.432 5.432 0 0 0-1.487-.217c-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.65.302.86.207.19.733.4 1.58.63l.937.23c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.31-1.61a7.613 7.613 0 0 0 1.72.805c.58.18 1.155.27 1.73.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.354-1.054-.233-.242-.737-.46-1.512-.657l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.368-.584-.88-.584-1.535 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.555 0 1.1.05 1.644.146.542.1 1.085.245 1.627.442"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-invert.png
new file mode 100644 (file)
index 0000000..bc2e9cc
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-invert.svg
new file mode 100644 (file)
index 0000000..370d0a3
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+  <path d="M16 8V7h-6v1h6zm-2 2V9h-4v1h4zM6 4h1v16H6V4zm2 0h10v13c0 1.7-1.3 3-3 3H8V4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-progressive.png
new file mode 100644 (file)
index 0000000..19f17bd
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..baf8a4a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+  <path d="M16 8V7h-6v1h6zm-2 2V9h-4v1h4zM6 4h1v16H6V4zm2 0h10v13c0 1.7-1.3 3-3 3H8V4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr.png
new file mode 100644 (file)
index 0000000..2af4eb0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-ltr.svg
new file mode 100644 (file)
index 0000000..8a83e41
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+  <path d="M16 8V7h-6v1h6zm-2 2V9h-4v1h4zM6 4h1v16H6V4zm2 0h10v13c0 1.7-1.3 3-3 3H8V4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-invert.png
new file mode 100644 (file)
index 0000000..60b5f47
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-invert.svg
new file mode 100644 (file)
index 0000000..4660285
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+  <path d="M8 8V7h6v1H8zm2 2V9h4v1h-4zm8-6h-1v16h1V4zm-2 0H6v13c0 1.7 1.3 3 3 3h7V4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-progressive.png
new file mode 100644 (file)
index 0000000..b16badc
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..17ccb82
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+  <path d="M8 8V7h6v1H8zm2 2V9h4v1h-4zm8-6h-1v16h1V4zm-2 0H6v13c0 1.7 1.3 3 3 3h7V4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl.png
new file mode 100644 (file)
index 0000000..033ede1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/journal-rtl.svg
new file mode 100644 (file)
index 0000000..2a07a44
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+  <path d="M8 8V7h6v1H8zm2 2V9h4v1h-4zm8-6h-1v16h1V4zm-2 0H6v13c0 1.7 1.3 3 3 3h7V4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr-invert.png
new file mode 100644 (file)
index 0000000..265da14
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr-invert.svg
new file mode 100644 (file)
index 0000000..4b00ee7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M14.5 4C11.5 4 9 6.5 9 9.5c0 1 .3 1.9.7 2.8L4 18v2h4v-2h2v-2h2l1.2-1.2c.4.1.9.2 1.3.2 3 0 5.5-2.5 5.5-5.5S17.5 4 14.5 4zM16 9c-.8 0-1.5-.7-1.5-1.5S15.2 6 16 6s1.5.7 1.5 1.5S16.8 9 16 9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr-progressive.png
new file mode 100644 (file)
index 0000000..37b1788
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..e079ac6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M14.5 4C11.5 4 9 6.5 9 9.5c0 1 .3 1.9.7 2.8L4 18v2h4v-2h2v-2h2l1.2-1.2c.4.1.9.2 1.3.2 3 0 5.5-2.5 5.5-5.5S17.5 4 14.5 4zM16 9c-.8 0-1.5-.7-1.5-1.5S15.2 6 16 6s1.5.7 1.5 1.5S16.8 9 16 9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr.png
new file mode 100644 (file)
index 0000000..9a4dca8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-ltr.svg
new file mode 100644 (file)
index 0000000..fc0d3c3
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M14.5 4C11.5 4 9 6.5 9 9.5c0 1 .3 1.9.7 2.8L4 18v2h4v-2h2v-2h2l1.2-1.2c.4.1.9.2 1.3.2 3 0 5.5-2.5 5.5-5.5S17.5 4 14.5 4zM16 9c-.8 0-1.5-.7-1.5-1.5S15.2 6 16 6s1.5.7 1.5 1.5S16.8 9 16 9z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl-invert.png
new file mode 100644 (file)
index 0000000..a5f2904
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl-invert.svg
new file mode 100644 (file)
index 0000000..1777cec
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl-progressive.png
new file mode 100644 (file)
index 0000000..69a032a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..d070568
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl.png
new file mode 100644 (file)
index 0000000..f49e112
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/key-rtl.svg
new file mode 100644 (file)
index 0000000..6dedfe8
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr-invert.png
new file mode 100644 (file)
index 0000000..d7d1a0b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr-invert.svg
new file mode 100644 (file)
index 0000000..2230bf5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr-progressive.png
new file mode 100644 (file)
index 0000000..49a0c4a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..25f22c7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr.png
new file mode 100644 (file)
index 0000000..886d37a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-ltr.svg
new file mode 100644 (file)
index 0000000..c4c442e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl-invert.png
new file mode 100644 (file)
index 0000000..1b0275e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl-invert.svg
new file mode 100644 (file)
index 0000000..df9d39d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl-progressive.png
new file mode 100644 (file)
index 0000000..cf144b7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..1cff12c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl.png
new file mode 100644 (file)
index 0000000..790a5e2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/keyboard-rtl.svg
new file mode 100644 (file)
index 0000000..b37d7f4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr-invert.png
new file mode 100644 (file)
index 0000000..d9ac348
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr-invert.svg
new file mode 100644 (file)
index 0000000..9b8523f
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="A">
+        <path d="M18.738 15.673l1.137 3.15h1.575L17.775 7.448h-2.188l-3.85 11.375h1.575l1.05-3.15h4.375zM16.55 8.76l1.837 5.427h-3.675l1.838-5.425z"/>
+    </g>
+    <g id="文">
+        <path d="M8.325 6.573h.787l-.875-1.75h-1.75l.438.875a1.56 1.56 0 0 0 1.4.875z"/>
+        <path d="m 9.202,12.874 c 0.7,0.525 1.486,0.963 2.45,1.225 l -0.438,1.31 A 9.17,9.17 0 0 1 8.151,13.835 c -1.49,1.137 -3.063,1.837 -4.813,2.363 L 2.9,14.885 C 4.386,14.36 5.874,13.835 7.1,12.872 5.962,11.648 5.174,10.335 4.65,8.758 l -1.663,0 0,-1.31 10.85,0 -0.438,1.312 -1.75,0 c -0.308,1.33 -1.255,2.957 -2.45,4.114 z m 1.05,-4.114 -4.114,0 c 0.35,1.226 1.138,2.363 2.013,3.238 0.926,-1 1.617,-1.957 2.1,-3.237 z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr-progressive.png
new file mode 100644 (file)
index 0000000..cfc3a36
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..1adc6aa
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="A">
+        <path d="M18.738 15.673l1.137 3.15h1.575L17.775 7.448h-2.188l-3.85 11.375h1.575l1.05-3.15h4.375zM16.55 8.76l1.837 5.427h-3.675l1.838-5.425z"/>
+    </g>
+    <g id="文">
+        <path d="M8.325 6.573h.787l-.875-1.75h-1.75l.438.875a1.56 1.56 0 0 0 1.4.875z"/>
+        <path d="m 9.202,12.874 c 0.7,0.525 1.486,0.963 2.45,1.225 l -0.438,1.31 A 9.17,9.17 0 0 1 8.151,13.835 c -1.49,1.137 -3.063,1.837 -4.813,2.363 L 2.9,14.885 C 4.386,14.36 5.874,13.835 7.1,12.872 5.962,11.648 5.174,10.335 4.65,8.758 l -1.663,0 0,-1.31 10.85,0 -0.438,1.312 -1.75,0 c -0.308,1.33 -1.255,2.957 -2.45,4.114 z m 1.05,-4.114 -4.114,0 c 0.35,1.226 1.138,2.363 2.013,3.238 0.926,-1 1.617,-1.957 2.1,-3.237 z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr.png
new file mode 100644 (file)
index 0000000..f7b785c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-ltr.svg
new file mode 100644 (file)
index 0000000..d64b734
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="A">
+        <path d="M18.738 15.673l1.137 3.15h1.575L17.775 7.448h-2.188l-3.85 11.375h1.575l1.05-3.15h4.375zM16.55 8.76l1.837 5.427h-3.675l1.838-5.425z"/>
+    </g>
+    <g id="文">
+        <path d="M8.325 6.573h.787l-.875-1.75h-1.75l.438.875a1.56 1.56 0 0 0 1.4.875z"/>
+        <path d="m 9.202,12.874 c 0.7,0.525 1.486,0.963 2.45,1.225 l -0.438,1.31 A 9.17,9.17 0 0 1 8.151,13.835 c -1.49,1.137 -3.063,1.837 -4.813,2.363 L 2.9,14.885 C 4.386,14.36 5.874,13.835 7.1,12.872 5.962,11.648 5.174,10.335 4.65,8.758 l -1.663,0 0,-1.31 10.85,0 -0.438,1.312 -1.75,0 c -0.308,1.33 -1.255,2.957 -2.45,4.114 z m 1.05,-4.114 -4.114,0 c 0.35,1.226 1.138,2.363 2.013,3.238 0.926,-1 1.617,-1.957 2.1,-3.237 z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl-invert.png
new file mode 100644 (file)
index 0000000..80dad94
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl-invert.svg
new file mode 100644 (file)
index 0000000..3ceea08
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="A">
+        <path d="M5.612 15.673l-1.137 3.15H2.9L6.575 7.448h2.188l3.85 11.375h-1.575l-1.05-3.15H5.613zM7.8 8.76l-1.837 5.427h3.675L7.8 8.762z" id="path5"/>
+    </g>
+    <g id="文">
+        <path d="M16.384 6.573h.787l-.873-1.75h-1.75l.438.875c.26.535.805.874 1.4.875z" id="path7"/>
+        <path d="M15.15 12.874c-.7.525-1.486.963-2.45 1.225l.438 1.31a9.17 9.17 0 0 0 3.063-1.575c1.49 1.137 3.064 1.837 4.814 2.363l.438-1.313c-1.486-.525-2.974-1.05-4.2-2.013 1.138-1.224 1.926-2.537 2.45-4.114h1.663v-1.31h-10.85l.438 1.312h1.75c.308 1.33 1.255 2.957 2.45 4.114zM14.1 8.76h4.114c-.35 1.226-1.138 2.363-2.013 3.238-.925-1-1.616-1.957-2.1-3.237z" id="path11-7"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl-progressive.png
new file mode 100644 (file)
index 0000000..51d8ecf
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..050fe1e
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="A">
+        <path d="M5.612 15.673l-1.137 3.15H2.9L6.575 7.448h2.188l3.85 11.375h-1.575l-1.05-3.15H5.613zM7.8 8.76l-1.837 5.427h3.675L7.8 8.762z" id="path5"/>
+    </g>
+    <g id="文">
+        <path d="M16.384 6.573h.787l-.873-1.75h-1.75l.438.875c.26.535.805.874 1.4.875z" id="path7"/>
+        <path d="M15.15 12.874c-.7.525-1.486.963-2.45 1.225l.438 1.31a9.17 9.17 0 0 0 3.063-1.575c1.49 1.137 3.064 1.837 4.814 2.363l.438-1.313c-1.486-.525-2.974-1.05-4.2-2.013 1.138-1.224 1.926-2.537 2.45-4.114h1.663v-1.31h-10.85l.438 1.312h1.75c.308 1.33 1.255 2.957 2.45 4.114zM14.1 8.76h4.114c-.35 1.226-1.138 2.363-2.013 3.238-.925-1-1.616-1.957-2.1-3.237z" id="path11-7"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl.png
new file mode 100644 (file)
index 0000000..c78f2cd
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/language-rtl.svg
new file mode 100644 (file)
index 0000000..cf6c1d5
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="A">
+        <path d="M5.612 15.673l-1.137 3.15H2.9L6.575 7.448h2.188l3.85 11.375h-1.575l-1.05-3.15H5.613zM7.8 8.76l-1.837 5.427h3.675L7.8 8.762z" id="path5"/>
+    </g>
+    <g id="文">
+        <path d="M16.384 6.573h.787l-.873-1.75h-1.75l.438.875c.26.535.805.874 1.4.875z" id="path7"/>
+        <path d="M15.15 12.874c-.7.525-1.486.963-2.45 1.225l.438 1.31a9.17 9.17 0 0 0 3.063-1.575c1.49 1.137 3.064 1.837 4.814 2.363l.438-1.313c-1.486-.525-2.974-1.05-4.2-2.013 1.138-1.224 1.926-2.537 2.45-4.114h1.663v-1.31h-10.85l.438 1.312h1.75c.308 1.33 1.255 2.957 2.45 4.114zM14.1 8.76h4.114c-.35 1.226-1.138 2.363-2.013 3.238-.925-1-1.616-1.957-2.1-3.237z" id="path11-7"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-ltr-invert.png
new file mode 100644 (file)
index 0000000..264811b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-ltr-invert.svg
new file mode 100644 (file)
index 0000000..491adb5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
+    <path d="M20.8 20h-8.1v-.8c.4 0 .8-.1 1.3-.2s.8-.2.8-.4v-.2c0-.1 0-.2-.1-.3L13.4 15H8.3c-.1.3-.2.6-.4 1-.1.4-.3.7-.4 1-.1.4-.2.7-.2.8v.4c0 .2.2.4.5.6.3.2.9.3 1.7.3v.9H3.4v-.8c.2 0 .5-.1.8-.1.3-.1.5-.1.7-.2.3-.2.5-.4.7-.6.2-.3.4-.6.5-.9.8-2 1.6-3.9 2.4-5.9.8-2 1.7-4.1 2.7-6.5h2.1c1.4 3.3 2.4 6 3.2 7.9.8 1.9 1.4 3.6 2 4.8l.3.6c.1.2.3.3.6.5.2.1.4.2.7.3.3.1.5.1.7.1v.8zM13 14l-2.1-5.3L8.8 14H13z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-ltr.png
new file mode 100644 (file)
index 0000000..4b6d298
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-ltr.svg
new file mode 100644 (file)
index 0000000..4b01d74
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M20.8 20h-8.1v-.8c.4 0 .8-.1 1.3-.2s.8-.2.8-.4v-.2c0-.1 0-.2-.1-.3L13.4 15H8.3c-.1.3-.2.6-.4 1-.1.4-.3.7-.4 1-.1.4-.2.7-.2.8v.4c0 .2.2.4.5.6.3.2.9.3 1.7.3v.9H3.4v-.8c.2 0 .5-.1.8-.1.3-.1.5-.1.7-.2.3-.2.5-.4.7-.6.2-.3.4-.6.5-.9.8-2 1.6-3.9 2.4-5.9.8-2 1.7-4.1 2.7-6.5h2.1c1.4 3.3 2.4 6 3.2 7.9.8 1.9 1.4 3.6 2 4.8l.3.6c.1.2.3.3.6.5.2.1.4.2.7.3.3.1.5.1.7.1v.8zM13 14l-2.1-5.3L8.8 14H13z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-rtl-invert.png
new file mode 100644 (file)
index 0000000..b91b35c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-rtl-invert.svg
new file mode 100644 (file)
index 0000000..4842411
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
+    <path d="M3.4 20h8.1v-.8c-.4 0-.8-.1-1.3-.2s-.8-.2-.8-.4v-.2c0-.1 0-.2.1-.3l1.3-3.1h5.1c.1.3.2.6.4 1 .1.4.3.7.4 1 .1.4.2.7.2.8v.4c0 .2-.2.4-.5.6-.3.2-.9.3-1.7.3v.9h6.1v-.8c-.2 0-.5-.1-.8-.1-.3-.1-.5-.1-.7-.2-.3-.2-.5-.4-.7-.6-.2-.3-.4-.6-.5-.9-.8-2-1.6-3.9-2.4-5.9-.8-2-1.7-4.1-2.7-6.5h-2.1c-1.4 3.3-2.4 6-3.2 7.9-.8 1.9-1.4 3.6-2 4.8l-.3.6c-.1.2-.3.3-.6.5-.2.1-.4.2-.7.3-.3.1-.5.1-.7.1v.8zm7.8-6l2.1-5.3 2.1 5.3h-4.2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-rtl.png
new file mode 100644 (file)
index 0000000..77d7796
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/largerText-rtl.svg
new file mode 100644 (file)
index 0000000..6ac62dc
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M3.4 20h8.1v-.8c-.4 0-.8-.1-1.3-.2s-.8-.2-.8-.4v-.2c0-.1 0-.2.1-.3l1.3-3.1h5.1c.1.3.2.6.4 1 .1.4.3.7.4 1 .1.4.2.7.2.8v.4c0 .2-.2.4-.5.6-.3.2-.9.3-1.7.3v.9h6.1v-.8c-.2 0-.5-.1-.8-.1-.3-.1-.5-.1-.7-.2-.3-.2-.5-.4-.7-.6-.2-.3-.4-.6-.5-.9-.8-2-1.6-3.9-2.4-5.9-.8-2-1.7-4.1-2.7-6.5h-2.1c-1.4 3.3-2.4 6-3.2 7.9-.8 1.9-1.4 3.6-2 4.8l-.3.6c-.1.2-.3.3-.6.5-.2.1-.4.2-.7.3-.3.1-.5.1-.7.1v.8zm7.8-6l2.1-5.3 2.1 5.3h-4.2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-invert.png
new file mode 100644 (file)
index 0000000..844b6f9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-invert.svg
new file mode 100644 (file)
index 0000000..a12fc5a
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="layout-ltr">
+        <path id="text" d="M5 19V5h6v8h8v6H5z"/>
+        <path id="float" d="M13 5v6h6V5h-6zm5 5h-4V6h4v4z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-progressive.png
new file mode 100644 (file)
index 0000000..8dc8a31
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..8243e34
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="layout-ltr">
+        <path id="text" d="M5 19V5h6v8h8v6H5z"/>
+        <path id="float" d="M13 5v6h6V5h-6zm5 5h-4V6h4v4z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr.png
new file mode 100644 (file)
index 0000000..ea6d2f5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-ltr.svg
new file mode 100644 (file)
index 0000000..c3be66c
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="layout-ltr">
+        <path id="text" d="M5 19V5h6v8h8v6H5z"/>
+        <path id="float" d="M13 5v6h6V5h-6zm5 5h-4V6h4v4z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-invert.png
new file mode 100644 (file)
index 0000000..1ef7734
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-invert.svg
new file mode 100644 (file)
index 0000000..165c996
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="layout-rtl">
+        <path id="text" d="M5 19v-6h8V5h6v14H5z"/>
+        <path id="float" d="M5 5v6h6V5H5zm1 1h4v4H6V6z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-progressive.png
new file mode 100644 (file)
index 0000000..2c190ce
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..db1081c
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="layout-rtl">
+        <path id="text" d="M5 19v-6h8V5h6v14H5z"/>
+        <path id="float" d="M5 5v6h6V5H5zm1 1h4v4H6V6z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl.png
new file mode 100644 (file)
index 0000000..46bf59b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/layout-rtl.svg
new file mode 100644 (file)
index 0000000..ce7feb8
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="layout-rtl">
+        <path id="text" d="M5 19v-6h8V5h6v14H5z"/>
+        <path id="float" d="M5 5v6h6V5H5zm1 1h4v4H6V6z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr-invert.png
new file mode 100644 (file)
index 0000000..7c9195e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr-invert.svg
new file mode 100644 (file)
index 0000000..7c36535
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M15.387 4.33c-2.1 0-3.6 1.9-5.1 3.3.2 0 .5-.1.8-.1.5 0 1 .1 1.5.3.8-.8 1.6-1.7 2.8-1.7.6 0 1.3.3 1.8.7 1 1 1 2.6 0 3.6l-2.6 2.6c-.4.4-1.2.7-1.8.7-1.4 0-2.1-.9-2.6-2l-1.3 1.3c.8 1.5 2 2.6 3.8 2.6 1.2 0 2.3-.5 3-1.3l2.6-2.6c.9-.9 1.5-2 1.5-3.3-.2-2.2-2.2-4.1-4.4-4.1zm-4.3 12.1l-.9.9c-.4.4-1.2.7-1.8.7-.6 0-1.3-.3-1.8-.7-1-1-1-2.7 0-3.6l2.6-2.6c.4-.4 1.2-.7 1.8-.7 1.4 0 2.1 1 2.6 2l1.3-1.3c-.8-1.5-2-2.6-3.8-2.6-1.2 0-2.3.5-3 1.3l-2.6 2.6c-1.7 1.7-1.7 4.4 0 6 1.6 1.6 4.4 1.7 5.9 0l1.9-1.9c-.3.1-.6.1-.9.1-.5 0-.9 0-1.3-.2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr-progressive.png
new file mode 100644 (file)
index 0000000..fb88cdf
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..22228cd
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M15.387 4.33c-2.1 0-3.6 1.9-5.1 3.3.2 0 .5-.1.8-.1.5 0 1 .1 1.5.3.8-.8 1.6-1.7 2.8-1.7.6 0 1.3.3 1.8.7 1 1 1 2.6 0 3.6l-2.6 2.6c-.4.4-1.2.7-1.8.7-1.4 0-2.1-.9-2.6-2l-1.3 1.3c.8 1.5 2 2.6 3.8 2.6 1.2 0 2.3-.5 3-1.3l2.6-2.6c.9-.9 1.5-2 1.5-3.3-.2-2.2-2.2-4.1-4.4-4.1zm-4.3 12.1l-.9.9c-.4.4-1.2.7-1.8.7-.6 0-1.3-.3-1.8-.7-1-1-1-2.7 0-3.6l2.6-2.6c.4-.4 1.2-.7 1.8-.7 1.4 0 2.1 1 2.6 2l1.3-1.3c-.8-1.5-2-2.6-3.8-2.6-1.2 0-2.3.5-3 1.3l-2.6 2.6c-1.7 1.7-1.7 4.4 0 6 1.6 1.6 4.4 1.7 5.9 0l1.9-1.9c-.3.1-.6.1-.9.1-.5 0-.9 0-1.3-.2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr.png
new file mode 100644 (file)
index 0000000..617d325
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-ltr.svg
new file mode 100644 (file)
index 0000000..aaaee54
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M15.387 4.33c-2.1 0-3.6 1.9-5.1 3.3.2 0 .5-.1.8-.1.5 0 1 .1 1.5.3.8-.8 1.6-1.7 2.8-1.7.6 0 1.3.3 1.8.7 1 1 1 2.6 0 3.6l-2.6 2.6c-.4.4-1.2.7-1.8.7-1.4 0-2.1-.9-2.6-2l-1.3 1.3c.8 1.5 2 2.6 3.8 2.6 1.2 0 2.3-.5 3-1.3l2.6-2.6c.9-.9 1.5-2 1.5-3.3-.2-2.2-2.2-4.1-4.4-4.1zm-4.3 12.1l-.9.9c-.4.4-1.2.7-1.8.7-.6 0-1.3-.3-1.8-.7-1-1-1-2.7 0-3.6l2.6-2.6c.4-.4 1.2-.7 1.8-.7 1.4 0 2.1 1 2.6 2l1.3-1.3c-.8-1.5-2-2.6-3.8-2.6-1.2 0-2.3.5-3 1.3l-2.6 2.6c-1.7 1.7-1.7 4.4 0 6 1.6 1.6 4.4 1.7 5.9 0l1.9-1.9c-.3.1-.6.1-.9.1-.5 0-.9 0-1.3-.2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl-invert.png
new file mode 100644 (file)
index 0000000..ece611a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl-invert.svg
new file mode 100644 (file)
index 0000000..1ea19e8
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M9.025 3.6c2.1 0 3.6 1.9 5.1 3.3-.2 0-.5-.1-.8-.1-.5 0-1 .1-1.5.3-.8-.8-1.6-1.7-2.8-1.7-.6 0-1.3.3-1.8.7-1 1-1 2.6 0 3.6l2.6 2.6c.4.4 1.2.7 1.8.7 1.4 0 2.1-.9 2.6-2l1.3 1.3c-.8 1.5-2 2.6-3.8 2.6-1.2 0-2.3-.5-3-1.3l-2.6-2.6c-.9-.9-1.5-2-1.5-3.3.2-2.2 2.2-4.1 4.4-4.1zm4.3 12.1l.9.9c.4.4 1.2.7 1.8.7.6 0 1.3-.3 1.8-.7 1-1 1-2.7 0-3.6l-2.6-2.6c-.4-.4-1.2-.7-1.8-.7-1.4 0-2.1 1-2.6 2l-1.3-1.3c.8-1.5 2-2.6 3.8-2.6 1.2 0 2.3.5 3 1.3l2.6 2.6c1.7 1.7 1.7 4.4 0 6-1.6 1.6-4.4 1.7-5.9 0l-1.9-1.9c.3.1.6.1.9.1.5 0 .9 0 1.3-.2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl-progressive.png
new file mode 100644 (file)
index 0000000..c030b01
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..3af1611
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M9.025 3.6c2.1 0 3.6 1.9 5.1 3.3-.2 0-.5-.1-.8-.1-.5 0-1 .1-1.5.3-.8-.8-1.6-1.7-2.8-1.7-.6 0-1.3.3-1.8.7-1 1-1 2.6 0 3.6l2.6 2.6c.4.4 1.2.7 1.8.7 1.4 0 2.1-.9 2.6-2l1.3 1.3c-.8 1.5-2 2.6-3.8 2.6-1.2 0-2.3-.5-3-1.3l-2.6-2.6c-.9-.9-1.5-2-1.5-3.3.2-2.2 2.2-4.1 4.4-4.1zm4.3 12.1l.9.9c.4.4 1.2.7 1.8.7.6 0 1.3-.3 1.8-.7 1-1 1-2.7 0-3.6l-2.6-2.6c-.4-.4-1.2-.7-1.8-.7-1.4 0-2.1 1-2.6 2l-1.3-1.3c.8-1.5 2-2.6 3.8-2.6 1.2 0 2.3.5 3 1.3l2.6 2.6c1.7 1.7 1.7 4.4 0 6-1.6 1.6-4.4 1.7-5.9 0l-1.9-1.9c.3.1.6.1.9.1.5 0 .9 0 1.3-.2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl.png
new file mode 100644 (file)
index 0000000..ef48413
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/link-rtl.svg
new file mode 100644 (file)
index 0000000..82a8e63
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M9.025 3.6c2.1 0 3.6 1.9 5.1 3.3-.2 0-.5-.1-.8-.1-.5 0-1 .1-1.5.3-.8-.8-1.6-1.7-2.8-1.7-.6 0-1.3.3-1.8.7-1 1-1 2.6 0 3.6l2.6 2.6c.4.4 1.2.7 1.8.7 1.4 0 2.1-.9 2.6-2l1.3 1.3c-.8 1.5-2 2.6-3.8 2.6-1.2 0-2.3-.5-3-1.3l-2.6-2.6c-.9-.9-1.5-2-1.5-3.3.2-2.2 2.2-4.1 4.4-4.1zm4.3 12.1l.9.9c.4.4 1.2.7 1.8.7.6 0 1.3-.3 1.8-.7 1-1 1-2.7 0-3.6l-2.6-2.6c-.4-.4-1.2-.7-1.8-.7-1.4 0-2.1 1-2.6 2l-1.3-1.3c.8-1.5 2-2.6 3.8-2.6 1.2 0 2.3.5 3 1.3l2.6 2.6c1.7 1.7 1.7 4.4 0 6-1.6 1.6-4.4 1.7-5.9 0l-1.9-1.9c.3.1.6.1.9.1.5 0 .9 0 1.3-.2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-invert.png
new file mode 100644 (file)
index 0000000..88cdd9d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-invert.svg
new file mode 100644 (file)
index 0000000..cb63d50
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M21 7H9V5h12v2zM7 6c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm14 7H9v-2h12v2zM7 12c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm14 7H9v-2h12v2zM7 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-progressive.png
new file mode 100644 (file)
index 0000000..350c708
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..0417a94
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M21 7H9V5h12v2zM7 6c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm14 7H9v-2h12v2zM7 12c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm14 7H9v-2h12v2zM7 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr.png
new file mode 100644 (file)
index 0000000..7796dd1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-ltr.svg
new file mode 100644 (file)
index 0000000..5f0b15f
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M21 7H9V5h12v2zM7 6c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm14 7H9v-2h12v2zM7 12c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm14 7H9v-2h12v2zM7 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-invert.png
new file mode 100644 (file)
index 0000000..6aeed4c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-invert.svg
new file mode 100644 (file)
index 0000000..081fee4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M3 7h12V5H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 13h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 19h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-progressive.png
new file mode 100644 (file)
index 0000000..9a9e5ca
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..c8610c9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M3 7h12V5H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 13h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 19h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl.png
new file mode 100644 (file)
index 0000000..2c727b1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listBullet-rtl.svg
new file mode 100644 (file)
index 0000000..c9c94eb
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M3 7h12V5H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 13h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 19h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-invert.png
new file mode 100644 (file)
index 0000000..13810b2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-invert.svg
new file mode 100644 (file)
index 0000000..c752585
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M21 7H8V5h13v2zm0 6H8v-2h13v2zm0 6H8v-2h13v2zM4 4h2v4H5V5H4zm-1 6V9h3v3H4v1h2v1H3v-3h2v-1zm3 10H3v-1h2v-1H4v-1h1v-1H3v-1h3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-progressive.png
new file mode 100644 (file)
index 0000000..bf3c311
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..150723f
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M21 7H8V5h13v2zm0 6H8v-2h13v2zm0 6H8v-2h13v2zM4 4h2v4H5V5H4zm-1 6V9h3v3H4v1h2v1H3v-3h2v-1zm3 10H3v-1h2v-1H4v-1h1v-1H3v-1h3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr.png
new file mode 100644 (file)
index 0000000..631c266
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-ltr.svg
new file mode 100644 (file)
index 0000000..8e849a7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M21 7H8V5h13v2zm0 6H8v-2h13v2zm0 6H8v-2h13v2zM4 4h2v4H5V5H4zm-1 6V9h3v3H4v1h2v1H3v-3h2v-1zm3 10H3v-1h2v-1H4v-1h1v-1H3v-1h3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-invert.png
new file mode 100644 (file)
index 0000000..9b2e821
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-invert.svg
new file mode 100644 (file)
index 0000000..493654d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M3 7h13V5H3zm0 6h13v-2H3zm0 6h13v-2H3zM18 4h2v4h-1V5h-1zm0 6V9h3v3h-2v1h2v1h-3v-3h2v-1zm3 10h-3v-1h2v-1h-1v-1h1v-1h-2v-1h3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-progressive.png
new file mode 100644 (file)
index 0000000..7e1df5d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..469f949
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M3 7h13V5H3zm0 6h13v-2H3zm0 6h13v-2H3zM18 4h2v4h-1V5h-1zm0 6V9h3v3h-2v1h2v1h-3v-3h2v-1zm3 10h-3v-1h2v-1h-1v-1h1v-1h-2v-1h3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl.png
new file mode 100644 (file)
index 0000000..2c3b9d0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/listNumbered-rtl.svg
new file mode 100644 (file)
index 0000000..9ec4801
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M3 7h13V5H3zm0 6h13v-2H3zm0 6h13v-2H3zM18 4h2v4h-1V5h-1zm0 6V9h3v3h-2v1h2v1h-3v-3h2v-1zm3 10h-3v-1h2v-1h-1v-1h1v-1h-2v-1h3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-destructive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-destructive.png
new file mode 100644 (file)
index 0000000..e16f042
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-destructive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-destructive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-destructive.svg
new file mode 100644 (file)
index 0000000..9e4aee0
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
+    <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-invert.png
new file mode 100644 (file)
index 0000000..a81a2a1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-invert.svg
new file mode 100644 (file)
index 0000000..7e11b41
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-progressive.png
new file mode 100644 (file)
index 0000000..181c0cb
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..a90a981
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr.png
new file mode 100644 (file)
index 0000000..a87541f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-ltr.svg
new file mode 100644 (file)
index 0000000..a18b2c4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-destructive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-destructive.png
new file mode 100644 (file)
index 0000000..29cd2b5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-destructive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-destructive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-destructive.svg
new file mode 100644 (file)
index 0000000..1eea0ed
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
+    <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-invert.png
new file mode 100644 (file)
index 0000000..ab62257
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-invert.svg
new file mode 100644 (file)
index 0000000..9396317
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-progressive.png
new file mode 100644 (file)
index 0000000..d17e790
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..6d2fa9c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl.png
new file mode 100644 (file)
index 0000000..55f2d22
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/lock-rtl.svg
new file mode 100644 (file)
index 0000000..6c4a3c5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-invert.png
new file mode 100644 (file)
index 0000000..fb1bb0c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-invert.svg
new file mode 100644 (file)
index 0000000..da6a634
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-progressive.png
new file mode 100644 (file)
index 0000000..8ede173
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..bdf23f4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr.png
new file mode 100644 (file)
index 0000000..18f82eb
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-ltr.svg
new file mode 100644 (file)
index 0000000..f2be068
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-invert.png
new file mode 100644 (file)
index 0000000..dcd2f15
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-invert.svg
new file mode 100644 (file)
index 0000000..ea35803
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-progressive.png
new file mode 100644 (file)
index 0000000..642db7d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..403bfc9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl.png
new file mode 100644 (file)
index 0000000..0ffb723
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logOut-rtl.svg
new file mode 100644 (file)
index 0000000..5f5ebb9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc-invert.png
new file mode 100644 (file)
index 0000000..7f04a80
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc-invert.svg
new file mode 100644 (file)
index 0000000..6d95c87
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M12 6c-3.9 0-7 3.1-7 7s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm0 13c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm-1.7-4.6c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5zm4 0c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc-progressive.png
new file mode 100644 (file)
index 0000000..2e37da7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc-progressive.svg
new file mode 100644 (file)
index 0000000..ee16220
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 6c-3.9 0-7 3.1-7 7s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm0 13c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm-1.7-4.6c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5zm4 0c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc.png
new file mode 100644 (file)
index 0000000..80ef2a6
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-cc.svg
new file mode 100644 (file)
index 0000000..00af35d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M12 6c-3.9 0-7 3.1-7 7s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm0 13c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm-1.7-4.6c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5zm4 0c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons-invert.png
new file mode 100644 (file)
index 0000000..0f8d9a6
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons-invert.svg
new file mode 100644 (file)
index 0000000..27513cc
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M15.4 7.8c-2-.9-2.3-2.5-2.4-2.8.1.1 2 1 2 1l-3-5-3 5 2-1s0 .8.6 2.1c.8 1.5 2.2 2.2 2.2 2.2s1.6.7 2.2 1.3l-.7.7-.5-.5-.4 1.8 1.8-.4-.5-.5.7-.7c.9 1 1.5 2.3 1.6 3.8h-1V14l-1.5 1 1.5 1v-.8h1c-.1 1.5-.6 2.8-1.6 3.8l-.7-.7.5-.5-1.8-.4.4 1.8.5-.5.7.7c-1 .9-2.3 1.5-3.8 1.6v-1h.8l-1-1.5-1 1.5h.8v1c-1.5-.1-2.8-.6-3.8-1.6l.7-.7.5.5.4-1.8-1.8.4.5.5-.7.7c-.9-1-1.5-2.3-1.6-3.8h1v.8l1.5-1L7 14v.8H6c.1-1.5.6-2.8 1.6-3.8l.7.7-.5.5 1.8.4-.4-1.8-.5.5-.7-.7-1.5-1.4A7.99 7.99 0 0 0 4 15c0 4.4 3.6 8 8 8s8-3.6 8-8c0-3.2-1.9-5.9-4.6-7.2z"/>
+    <circle cx="12" cy="15" r="3"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons-progressive.png
new file mode 100644 (file)
index 0000000..6aa047c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons-progressive.svg
new file mode 100644 (file)
index 0000000..bb82d1f
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M15.4 7.8c-2-.9-2.3-2.5-2.4-2.8.1.1 2 1 2 1l-3-5-3 5 2-1s0 .8.6 2.1c.8 1.5 2.2 2.2 2.2 2.2s1.6.7 2.2 1.3l-.7.7-.5-.5-.4 1.8 1.8-.4-.5-.5.7-.7c.9 1 1.5 2.3 1.6 3.8h-1V14l-1.5 1 1.5 1v-.8h1c-.1 1.5-.6 2.8-1.6 3.8l-.7-.7.5-.5-1.8-.4.4 1.8.5-.5.7.7c-1 .9-2.3 1.5-3.8 1.6v-1h.8l-1-1.5-1 1.5h.8v1c-1.5-.1-2.8-.6-3.8-1.6l.7-.7.5.5.4-1.8-1.8.4.5.5-.7.7c-.9-1-1.5-2.3-1.6-3.8h1v.8l1.5-1L7 14v.8H6c.1-1.5.6-2.8 1.6-3.8l.7.7-.5.5 1.8.4-.4-1.8-.5.5-.7-.7-1.5-1.4A7.99 7.99 0 0 0 4 15c0 4.4 3.6 8 8 8s8-3.6 8-8c0-3.2-1.9-5.9-4.6-7.2z"/>
+    <circle cx="12" cy="15" r="3"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons.png
new file mode 100644 (file)
index 0000000..c41c247
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaCommons.svg
new file mode 100644 (file)
index 0000000..f2492ce
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M15.4 7.8c-2-.9-2.3-2.5-2.4-2.8.1.1 2 1 2 1l-3-5-3 5 2-1s0 .8.6 2.1c.8 1.5 2.2 2.2 2.2 2.2s1.6.7 2.2 1.3l-.7.7-.5-.5-.4 1.8 1.8-.4-.5-.5.7-.7c.9 1 1.5 2.3 1.6 3.8h-1V14l-1.5 1 1.5 1v-.8h1c-.1 1.5-.6 2.8-1.6 3.8l-.7-.7.5-.5-1.8-.4.4 1.8.5-.5.7.7c-1 .9-2.3 1.5-3.8 1.6v-1h.8l-1-1.5-1 1.5h.8v1c-1.5-.1-2.8-.6-3.8-1.6l.7-.7.5.5.4-1.8-1.8.4.5.5-.7.7c-.9-1-1.5-2.3-1.6-3.8h1v.8l1.5-1L7 14v.8H6c.1-1.5.6-2.8 1.6-3.8l.7.7-.5.5 1.8.4-.4-1.8-.5.5-.7-.7-1.5-1.4A7.99 7.99 0 0 0 4 15c0 4.4 3.6 8 8 8s8-3.6 8-8c0-3.2-1.9-5.9-4.6-7.2z"/>
+    <circle cx="12" cy="15" r="3"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery-invert.png
new file mode 100644 (file)
index 0000000..0963538
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery-invert.svg
new file mode 100644 (file)
index 0000000..9c4a955
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M15.3 14.7C16.1 10.9 14.7 4 12 4c-2.7 0-4.2 6.7-3.4 10.5L7 18h2.7l.3 1h4c.2-.3.1-.5.3-1H17l-1.7-3.3zM12 10c-.8 0-1.5-.7-1.5-1.5S11.2 7 12 7s1.5.7 1.5 1.5S12.8 10 12 10zm2 10c0 1.1-2 2-2 2s-2-.9-2-2"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery-progressive.png
new file mode 100644 (file)
index 0000000..6afb2bd
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery-progressive.svg
new file mode 100644 (file)
index 0000000..594cdfb
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M15.3 14.7C16.1 10.9 14.7 4 12 4c-2.7 0-4.2 6.7-3.4 10.5L7 18h2.7l.3 1h4c.2-.3.1-.5.3-1H17l-1.7-3.3zM12 10c-.8 0-1.5-.7-1.5-1.5S11.2 7 12 7s1.5.7 1.5 1.5S12.8 10 12 10zm2 10c0 1.1-2 2-2 2s-2-.9-2-2"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery.png
new file mode 100644 (file)
index 0000000..6d3c067
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikimediaDiscovery.svg
new file mode 100644 (file)
index 0000000..c3f99d6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M15.3 14.7C16.1 10.9 14.7 4 12 4c-2.7 0-4.2 6.7-3.4 10.5L7 18h2.7l.3 1h4c.2-.3.1-.5.3-1H17l-1.7-3.3zM12 10c-.8 0-1.5-.7-1.5-1.5S11.2 7 12 7s1.5.7 1.5 1.5S12.8 10 12 10zm2 10c0 1.1-2 2-2 2s-2-.9-2-2"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia-invert.png
new file mode 100644 (file)
index 0000000..9d576d0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia-invert.svg
new file mode 100644 (file)
index 0000000..fb304f6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M22.3 6.3c0 .2 0 .3-.1.3-.7.1-1.2.5-1.6 1.1-.1.2-.2.4-.3.7l-4.6 10.1c-.1.2-.2.3-.2.3s-.1.1-.2.1c-.2 0-.4-.1-.5-.4L12.2 13l-2.8 5.5c-.1.3-.3.4-.5.4s-.4-.1-.5-.4L4.1 8.4c-.3-.8-.6-1.2-.8-1.4-.2-.2-.5-.3-1-.4-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h4.3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.6.1-1 .2-1.1.4-.1.2 0 .6.3 1.2l3.6 8.2h.1l2.2-4.4L10 8.4c-.3-.7-.6-1.2-.8-1.4s-.5-.3-.9-.4c-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h3.6c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.4.1-.6.2-.6.4s.1.6.4 1.2l1 1.9 1-1.9c.3-.6.5-.9.5-1.1 0-.2 0-.3-.1-.4-.1-.1-.3-.1-.5-.1l-.1-.3c0-.2 0-.3.1-.3h3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.5.1-.8.2-1.1.5-.3.3-.6.7-.8 1.3l-1.3 2.8 2.5 5.2h.1l3.7-8.1c.3-.5.3-.9.2-1.2-.1-.3-.5-.4-1.1-.5-.1-.1-.1-.2-.1-.3s0-.3.1-.3h3.7c-.2.1-.2.2-.2.3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia-progressive.png
new file mode 100644 (file)
index 0000000..bc141ed
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia-progressive.svg
new file mode 100644 (file)
index 0000000..4c7864b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M22.3 6.3c0 .2 0 .3-.1.3-.7.1-1.2.5-1.6 1.1-.1.2-.2.4-.3.7l-4.6 10.1c-.1.2-.2.3-.2.3s-.1.1-.2.1c-.2 0-.4-.1-.5-.4L12.2 13l-2.8 5.5c-.1.3-.3.4-.5.4s-.4-.1-.5-.4L4.1 8.4c-.3-.8-.6-1.2-.8-1.4-.2-.2-.5-.3-1-.4-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h4.3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.6.1-1 .2-1.1.4-.1.2 0 .6.3 1.2l3.6 8.2h.1l2.2-4.4L10 8.4c-.3-.7-.6-1.2-.8-1.4s-.5-.3-.9-.4c-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h3.6c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.4.1-.6.2-.6.4s.1.6.4 1.2l1 1.9 1-1.9c.3-.6.5-.9.5-1.1 0-.2 0-.3-.1-.4-.1-.1-.3-.1-.5-.1l-.1-.3c0-.2 0-.3.1-.3h3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.5.1-.8.2-1.1.5-.3.3-.6.7-.8 1.3l-1.3 2.8 2.5 5.2h.1l3.7-8.1c.3-.5.3-.9.2-1.2-.1-.3-.5-.4-1.1-.5-.1-.1-.1-.2-.1-.3s0-.3.1-.3h3.7c-.2.1-.2.2-.2.3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia.png
new file mode 100644 (file)
index 0000000..f1d8330
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/logo-wikipedia.svg
new file mode 100644 (file)
index 0000000..9208f3b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M22.3 6.3c0 .2 0 .3-.1.3-.7.1-1.2.5-1.6 1.1-.1.2-.2.4-.3.7l-4.6 10.1c-.1.2-.2.3-.2.3s-.1.1-.2.1c-.2 0-.4-.1-.5-.4L12.2 13l-2.8 5.5c-.1.3-.3.4-.5.4s-.4-.1-.5-.4L4.1 8.4c-.3-.8-.6-1.2-.8-1.4-.2-.2-.5-.3-1-.4-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h4.3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.6.1-1 .2-1.1.4-.1.2 0 .6.3 1.2l3.6 8.2h.1l2.2-4.4L10 8.4c-.3-.7-.6-1.2-.8-1.4s-.5-.3-.9-.4c-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h3.6c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.4.1-.6.2-.6.4s.1.6.4 1.2l1 1.9 1-1.9c.3-.6.5-.9.5-1.1 0-.2 0-.3-.1-.4-.1-.1-.3-.1-.5-.1l-.1-.3c0-.2 0-.3.1-.3h3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.5.1-.8.2-1.1.5-.3.3-.6.7-.8 1.3l-1.3 2.8 2.5 5.2h.1l3.7-8.1c.3-.5.3-.9.2-1.2-.1-.3-.5-.4-1.1-.5-.1-.1-.1-.2-.1-.3s0-.3.1-.3h3.7c-.2.1-.2.2-.2.3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-invert.png
new file mode 100644 (file)
index 0000000..6e0cd01
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-invert.svg
new file mode 100644 (file)
index 0000000..59bb24e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M15 6L9 4 3 6v15l6-2 6 2 6-2V4l-6 2zM8.7 18.1L4 19.6V6.7L9 5v12.9l-.3.2zm11.3.2L15 20V7.1l.3-.1L20 5.4v12.9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-progressive.png
new file mode 100644 (file)
index 0000000..e856237
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..bebac9c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M15 6L9 4 3 6v15l6-2 6 2 6-2V4l-6 2zM8.7 18.1L4 19.6V6.7L9 5v12.9l-.3.2zm11.3.2L15 20V7.1l.3-.1L20 5.4v12.9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr.png
new file mode 100644 (file)
index 0000000..43a97d2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-ltr.svg
new file mode 100644 (file)
index 0000000..0e5a52e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M15 6L9 4 3 6v15l6-2 6 2 6-2V4l-6 2zM8.7 18.1L4 19.6V6.7L9 5v12.9l-.3.2zm11.3.2L15 20V7.1l.3-.1L20 5.4v12.9z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-invert.png
new file mode 100644 (file)
index 0000000..4993f57
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-invert.svg
new file mode 100644 (file)
index 0000000..06c3d10
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M9 6l6-2 6 2v15l-6-2-6 2-6-2V4l6 2zm6.3 12.1l4.7 1.5V6.7L15 5v12.9l.3.2zM4 18.3L9 20V7.1L8.7 7 4 5.4v12.9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-progressive.png
new file mode 100644 (file)
index 0000000..6dbb6c5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..a969ee6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M9 6l6-2 6 2v15l-6-2-6 2-6-2V4l6 2zm6.3 12.1l4.7 1.5V6.7L15 5v12.9l.3.2zM4 18.3L9 20V7.1L8.7 7 4 5.4v12.9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl.png
new file mode 100644 (file)
index 0000000..36e9cad
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/map-rtl.svg
new file mode 100644 (file)
index 0000000..835781d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M9 6l6-2 6 2v15l-6-2-6 2-6-2V4l6 2zm6.3 12.1l4.7 1.5V6.7L15 5v12.9l.3.2zM4 18.3L9 20V7.1L8.7 7 4 5.4v12.9z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-invert.png
new file mode 100644 (file)
index 0000000..441fe2d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-invert.svg
new file mode 100644 (file)
index 0000000..a8010f9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M19 12c0-3.9-3.1-7-7-7s-7 3.1-7 7c0 1.4.4 2.6 1.1 3.7L12 23l5.9-7.3c.7-1.1 1.1-2.3 1.1-3.7zm-7 3c-1.6 0-3-1.4-3-3s1.4-3 3-3 3 1.4 3 3-1.4 3-3 3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-progressive.png
new file mode 100644 (file)
index 0000000..2e7107d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin-progressive.svg
new file mode 100644 (file)
index 0000000..717b91c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M19 12c0-3.9-3.1-7-7-7s-7 3.1-7 7c0 1.4.4 2.6 1.1 3.7L12 23l5.9-7.3c.7-1.1 1.1-2.3 1.1-3.7zm-7 3c-1.6 0-3-1.4-3-3s1.4-3 3-3 3 1.4 3 3-1.4 3-3 3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin.png
new file mode 100644 (file)
index 0000000..ddb1c5c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPin.svg
new file mode 100644 (file)
index 0000000..26fb6b7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M19 12c0-3.9-3.1-7-7-7s-7 3.1-7 7c0 1.4.4 2.6 1.1 3.7L12 23l5.9-7.3c.7-1.1 1.1-2.3 1.1-3.7zm-7 3c-1.6 0-3-1.4-3-3s1.4-3 3-3 3 1.4 3 3-1.4 3-3 3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr-invert.png
new file mode 100644 (file)
index 0000000..ee5de90
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr-invert.svg
new file mode 100644 (file)
index 0000000..eb5e624
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+  <path d="M24 4h-4V0h-2v4h-4v2h4v4h2V6h4V4z"/>
+  <path d="M18.9 11c.1.3.1.7.1 1 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-3.9 3.1-7 7-7 .3 0 .7 0 1 .1V7h3.9l.1.1V11h1.9zM15 12c0-1.6-1.4-3-3-3s-3 1.4-3 3 1.4 3 3 3 3-1.4 3-3z"/>
+</g></svg>
+
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr-progressive.png
new file mode 100644 (file)
index 0000000..036a31d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..3e0ea6c
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+  <path d="M24 4h-4V0h-2v4h-4v2h4v4h2V6h4V4z"/>
+  <path d="M18.9 11c.1.3.1.7.1 1 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-3.9 3.1-7 7-7 .3 0 .7 0 1 .1V7h3.9l.1.1V11h1.9zM15 12c0-1.6-1.4-3-3-3s-3 1.4-3 3 1.4 3 3 3 3-1.4 3-3z"/>
+</g></svg>
+
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr.png
new file mode 100644 (file)
index 0000000..d8c1691
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-ltr.svg
new file mode 100644 (file)
index 0000000..9d71335
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+  <path d="M24 4h-4V0h-2v4h-4v2h4v4h2V6h4V4z"/>
+  <path d="M18.9 11c.1.3.1.7.1 1 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-3.9 3.1-7 7-7 .3 0 .7 0 1 .1V7h3.9l.1.1V11h1.9zM15 12c0-1.6-1.4-3-3-3s-3 1.4-3 3 1.4 3 3 3 3-1.4 3-3z"/>
+</svg>
+
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl-invert.png
new file mode 100644 (file)
index 0000000..934d5cc
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl-invert.svg
new file mode 100644 (file)
index 0000000..a7a14e9
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M0 4h4V0h2v4h4v2H6v4H4V6H0"/>
+    <path d="M6 11h1V7.1l.1-.1H11V5.1c.3-.1.7-.1 1-.1 3.9 0 7 3.1 7 7 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-.3 0-.7.1-1H6zm6 4c1.65 0 3-1.35 3-3s-1.35-3-3-3-3 1.35-3 3 1.35 3 3 3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl-progressive.png
new file mode 100644 (file)
index 0000000..be7c51e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..9bcc436
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M0 4h4V0h2v4h4v2H6v4H4V6H0"/>
+    <path d="M6 11h1V7.1l.1-.1H11V5.1c.3-.1.7-.1 1-.1 3.9 0 7 3.1 7 7 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-.3 0-.7.1-1H6zm6 4c1.65 0 3-1.35 3-3s-1.35-3-3-3-3 1.35-3 3 1.35 3 3 3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl.png
new file mode 100644 (file)
index 0000000..7cc1f74
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapPinAdd-rtl.svg
new file mode 100644 (file)
index 0000000..03c484a
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M0 4h4V0h2v4h4v2H6v4H4V6H0"/>
+    <path d="M6 11h1V7.1l.1-.1H11V5.1c.3-.1.7-.1 1-.1 3.9 0 7 3.1 7 7 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-.3 0-.7.1-1H6zm6 4c1.65 0 3-1.35 3-3s-1.35-3-3-3-3 1.35-3 3 1.35 3 3 3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr-invert.png
new file mode 100644 (file)
index 0000000..075f84e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr-invert.svg
new file mode 100644 (file)
index 0000000..17d3645
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M15 9l.7-1.8c.9.4 1.8.7 2.4.9l-.6 1.7v.2L15 9zm-4.3-1.9l.8-1.8c1.2.5 2.6 1.1 3 1.4l-.8 1.8-3-1.4zm-5.9-1c-.8 0-1.4.2-2 .6L1.7 5c.9-.6 1.9-.9 3.1-.9v2zm-4.3.7l1.8.8c-.3.7-.3 1.3-.1 1.8l-1.9.7C0 8.9 0 7.8.5 6.8zm4.2 5.4l-1.3 1.5c-1-1-1.7-1.6-2-2l1.5-1.3c.7.8 1.3 1.4 1.8 1.8zm7.3 4.3c0 1.9-1.6 3.5-3.5 3.5S5 18.4 5 16.5 6.6 13 8.5 13s3.5 1.6 3.5 3.5zM24 8l-1-1-1.5 1.5L20 7l-1 1 1.5 1.5L19 11l1 1 1.5-1.5L23 12l1-1-1.5-1.5z"/>
+    <circle cx="8" cy="5" r="2"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr-progressive.png
new file mode 100644 (file)
index 0000000..2b26e15
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..2b49b99
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M15 9l.7-1.8c.9.4 1.8.7 2.4.9l-.6 1.7v.2L15 9zm-4.3-1.9l.8-1.8c1.2.5 2.6 1.1 3 1.4l-.8 1.8-3-1.4zm-5.9-1c-.8 0-1.4.2-2 .6L1.7 5c.9-.6 1.9-.9 3.1-.9v2zm-4.3.7l1.8.8c-.3.7-.3 1.3-.1 1.8l-1.9.7C0 8.9 0 7.8.5 6.8zm4.2 5.4l-1.3 1.5c-1-1-1.7-1.6-2-2l1.5-1.3c.7.8 1.3 1.4 1.8 1.8zm7.3 4.3c0 1.9-1.6 3.5-3.5 3.5S5 18.4 5 16.5 6.6 13 8.5 13s3.5 1.6 3.5 3.5zM24 8l-1-1-1.5 1.5L20 7l-1 1 1.5 1.5L19 11l1 1 1.5-1.5L23 12l1-1-1.5-1.5z"/>
+    <circle cx="8" cy="5" r="2"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr.png
new file mode 100644 (file)
index 0000000..331fd59
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-ltr.svg
new file mode 100644 (file)
index 0000000..cb073b9
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M15 9l.7-1.8c.9.4 1.8.7 2.4.9l-.6 1.7v.2L15 9zm-4.3-1.9l.8-1.8c1.2.5 2.6 1.1 3 1.4l-.8 1.8-3-1.4zm-5.9-1c-.8 0-1.4.2-2 .6L1.7 5c.9-.6 1.9-.9 3.1-.9v2zm-4.3.7l1.8.8c-.3.7-.3 1.3-.1 1.8l-1.9.7C0 8.9 0 7.8.5 6.8zm4.2 5.4l-1.3 1.5c-1-1-1.7-1.6-2-2l1.5-1.3c.7.8 1.3 1.4 1.8 1.8zm7.3 4.3c0 1.9-1.6 3.5-3.5 3.5S5 18.4 5 16.5 6.6 13 8.5 13s3.5 1.6 3.5 3.5zM24 8l-1-1-1.5 1.5L20 7l-1 1 1.5 1.5L19 11l1 1 1.5-1.5L23 12l1-1-1.5-1.5z"/>
+    <circle cx="8" cy="5" r="2"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl-invert.png
new file mode 100644 (file)
index 0000000..75c8dcf
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl-invert.svg
new file mode 100644 (file)
index 0000000..fbb9cab
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M9.095 9l-.7-1.8c-.9.4-1.8.7-2.4.9l.6 1.7v.2l2.5-1zm4.3-1.9l-.8-1.8c-1.2.5-2.6 1.1-3 1.4l.8 1.8 3-1.4zm5.9-1c.8 0 1.4.2 2 .6l1.1-1.7c-.9-.6-1.9-.9-3.1-.9v2zm4.3.7l-1.8.8c.3.7.3 1.3.1 1.8l1.9.7c.3-1.2.3-2.3-.2-3.3zm-4.2 5.4l1.3 1.5c1-1 1.7-1.6 2-2l-1.5-1.3c-.7.8-1.3 1.4-1.8 1.8zm-7.3 4.3c0 1.9 1.6 3.5 3.5 3.5s3.5-1.6 3.5-3.5-1.6-3.5-3.5-3.5-3.5 1.6-3.5 3.5zM.095 8l1-1 1.5 1.5 1.5-1.5 1 1-1.5 1.5 1.5 1.5-1 1-1.5-1.5-1.5 1.5-1-1 1.5-1.5z"/>
+    <circle cx="8" cy="5" r="2" transform="matrix(-1 0 0 1 24.095 0)"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl-progressive.png
new file mode 100644 (file)
index 0000000..fc0b2d9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..a2f62ff
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M9.095 9l-.7-1.8c-.9.4-1.8.7-2.4.9l.6 1.7v.2l2.5-1zm4.3-1.9l-.8-1.8c-1.2.5-2.6 1.1-3 1.4l.8 1.8 3-1.4zm5.9-1c.8 0 1.4.2 2 .6l1.1-1.7c-.9-.6-1.9-.9-3.1-.9v2zm4.3.7l-1.8.8c.3.7.3 1.3.1 1.8l1.9.7c.3-1.2.3-2.3-.2-3.3zm-4.2 5.4l1.3 1.5c1-1 1.7-1.6 2-2l-1.5-1.3c-.7.8-1.3 1.4-1.8 1.8zm-7.3 4.3c0 1.9 1.6 3.5 3.5 3.5s3.5-1.6 3.5-3.5-1.6-3.5-3.5-3.5-3.5 1.6-3.5 3.5zM.095 8l1-1 1.5 1.5 1.5-1.5 1 1-1.5 1.5 1.5 1.5-1 1-1.5-1.5-1.5 1.5-1-1 1.5-1.5z"/>
+    <circle cx="8" cy="5" r="2" transform="matrix(-1 0 0 1 24.095 0)"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl.png
new file mode 100644 (file)
index 0000000..62f1fe9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/mapTrail-rtl.svg
new file mode 100644 (file)
index 0000000..e8b1a08
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M9.095 9l-.7-1.8c-.9.4-1.8.7-2.4.9l.6 1.7v.2l2.5-1zm4.3-1.9l-.8-1.8c-1.2.5-2.6 1.1-3 1.4l.8 1.8 3-1.4zm5.9-1c.8 0 1.4.2 2 .6l1.1-1.7c-.9-.6-1.9-.9-3.1-.9v2zm4.3.7l-1.8.8c.3.7.3 1.3.1 1.8l1.9.7c.3-1.2.3-2.3-.2-3.3zm-4.2 5.4l1.3 1.5c1-1 1.7-1.6 2-2l-1.5-1.3c-.7.8-1.3 1.4-1.8 1.8zm-7.3 4.3c0 1.9 1.6 3.5 3.5 3.5s3.5-1.6 3.5-3.5-1.6-3.5-3.5-3.5-3.5 1.6-3.5 3.5zM.095 8l1-1 1.5 1.5 1.5-1.5 1 1-1.5 1.5 1.5 1.5-1 1-1.5-1.5-1.5 1.5-1-1 1.5-1.5z"/>
+    <circle cx="8" cy="5" r="2" transform="matrix(-1 0 0 1 24.095 0)"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-invert.png
new file mode 100644 (file)
index 0000000..0f64c02
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-invert.svg
new file mode 100644 (file)
index 0000000..cb54763
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="markup">
+        <path id="left-bracket" d="M9.665 6.32l-4.259 4.274-1.406 1.406 1.406 1.406 4.259 4.274 1.406-1.438-4.259-4.243 4.259-4.243z"/>
+        <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" xlink:href="#left-bracket"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-progressive.png
new file mode 100644 (file)
index 0000000..47ac730
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup-progressive.svg
new file mode 100644 (file)
index 0000000..af2f0ff
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="markup">
+        <path id="left-bracket" d="M9.665 6.32l-4.259 4.274-1.406 1.406 1.406 1.406 4.259 4.274 1.406-1.438-4.259-4.243 4.259-4.243z"/>
+        <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" xlink:href="#left-bracket"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup.png
new file mode 100644 (file)
index 0000000..c78f418
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/markup.svg
new file mode 100644 (file)
index 0000000..7f8c253
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
+    <g id="markup">
+        <path id="left-bracket" d="M9.665 6.32l-4.259 4.274-1.406 1.406 1.406 1.406 4.259 4.274 1.406-1.438-4.259-4.243 4.259-4.243z"/>
+        <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" xlink:href="#left-bracket"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-invert.png
new file mode 100644 (file)
index 0000000..b61db4a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-invert.svg
new file mode 100644 (file)
index 0000000..e87b9bf
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="menu">
+        <path id="lines" d="M6 15h12a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1zm-1-4v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1zm0-5v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-progressive.png
new file mode 100644 (file)
index 0000000..f395e3a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu-progressive.svg
new file mode 100644 (file)
index 0000000..6d9edd1
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="menu">
+        <path id="lines" d="M6 15h12a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1zm-1-4v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1zm0-5v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu.png
new file mode 100644 (file)
index 0000000..d2278db
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/menu.svg
new file mode 100644 (file)
index 0000000..a33c21c
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="menu">
+        <path id="lines" d="M6 15h12a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1zm-1-4v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1zm0-5v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr-invert.png
new file mode 100644 (file)
index 0000000..33a9800
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr-invert.svg
new file mode 100644 (file)
index 0000000..a3aae21
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M21 9c0-1.7-1.3-3-3-3H3v3l9 4 9-4zM3 11v6c0 1.7 1.3 3 3 3h15v-9l-9 4-9-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr-progressive.png
new file mode 100644 (file)
index 0000000..fb11ff2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..36bfd0c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M21 9c0-1.7-1.3-3-3-3H3v3l9 4 9-4zM3 11v6c0 1.7 1.3 3 3 3h15v-9l-9 4-9-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr.png
new file mode 100644 (file)
index 0000000..2171c1f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-ltr.svg
new file mode 100644 (file)
index 0000000..842d312
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M21 9c0-1.7-1.3-3-3-3H3v3l9 4 9-4zM3 11v6c0 1.7 1.3 3 3 3h15v-9l-9 4-9-4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl-invert.png
new file mode 100644 (file)
index 0000000..c2d617b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl-invert.svg
new file mode 100644 (file)
index 0000000..0a52eec
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M3 9c0-1.7 1.3-3 3-3h15v3l-9 4-9-4zm18 2v6c0 1.7-1.3 3-3 3H3v-9l9 4 9-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl-progressive.png
new file mode 100644 (file)
index 0000000..a6975d7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..0beb5ee
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M3 9c0-1.7 1.3-3 3-3h15v3l-9 4-9-4zm18 2v6c0 1.7-1.3 3-3 3H3v-9l9 4 9-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl.png
new file mode 100644 (file)
index 0000000..fba7920
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/message-rtl.svg
new file mode 100644 (file)
index 0000000..0a22c75
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M3 9c0-1.7 1.3-3 3-3h15v3l-9 4-9-4zm18 2v6c0 1.7-1.3 3-3 3H3v-9l9 4 9-4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon-invert.png
new file mode 100644 (file)
index 0000000..38bcc0a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon-invert.svg
new file mode 100644 (file)
index 0000000..7ecd512
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
+    <path d="M19.1 17.5c-3.3 1.4-7.1-.2-8.5-3.5-1.4-3.3.2-7.1 3.5-8.5.2-.1.5-.2.7-.3-1.6-.4-3.2-.3-4.8.4C6 7.3 4 12 5.7 16c1.7 4.1 6.4 6 10.5 4.3 1.7-.7 3-1.9 3.8-3.4-.3.3-.6.4-.9.6z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon.png
new file mode 100644 (file)
index 0000000..7aef8bd
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/moon.svg
new file mode 100644 (file)
index 0000000..bdbf234
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M19.1 17.5c-3.3 1.4-7.1-.2-8.5-3.5-1.4-3.3.2-7.1 3.5-8.5.2-.1.5-.2.7-.3-1.6-.4-3.2-.3-4.8.4C6 7.3 4 12 5.7 16c1.7 4.1 6.4 6 10.5 4.3 1.7-.7 3-1.9 3.8-3.4-.3.3-.6.4-.9.6z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr-invert.png
new file mode 100644 (file)
index 0000000..43f819f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr-invert.svg
new file mode 100644 (file)
index 0000000..f5b4b22
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="move-end-ltr">
+        <path id="arrow" d="M7.935 7.18l5.302 5.303-5.302 5.303L9.35 19.2l6.715-6.717L9.35 5.767z"/>
+        <path id="bar" d="M16 7h2v11h-2z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr-progressive.png
new file mode 100644 (file)
index 0000000..cbbfa79
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..d55fc51
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="move-end-ltr">
+        <path id="arrow" d="M7.935 7.18l5.302 5.303-5.302 5.303L9.35 19.2l6.715-6.717L9.35 5.767z"/>
+        <path id="bar" d="M16 7h2v11h-2z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr.png
new file mode 100644 (file)
index 0000000..9d35b9e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-ltr.svg
new file mode 100644 (file)
index 0000000..98adcf7
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="move-end-ltr">
+        <path id="arrow" d="M7.935 7.18l5.302 5.303-5.302 5.303L9.35 19.2l6.715-6.717L9.35 5.767z"/>
+        <path id="bar" d="M16 7h2v11h-2z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl-invert.png
new file mode 100644 (file)
index 0000000..a745af2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl-invert.svg
new file mode 100644 (file)
index 0000000..121b08d
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="move-end-ltr">
+        <path id="arrow" d="M16.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.72 6.714 6.71z"/>
+        <path id="bar" d="M6 7h2v11H6z"/>
+    </g>
+</g></svg>
+
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl-progressive.png
new file mode 100644 (file)
index 0000000..b999538
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..11ed934
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="move-end-ltr">
+        <path id="arrow" d="M16.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.72 6.714 6.71z"/>
+        <path id="bar" d="M6 7h2v11H6z"/>
+    </g>
+</g></svg>
+
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl.png
new file mode 100644 (file)
index 0000000..bcd8a0c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-end-rtl.svg
new file mode 100644 (file)
index 0000000..ee09f7c
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="move-end-ltr">
+        <path id="arrow" d="M16.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.72 6.714 6.71z"/>
+        <path id="bar" d="M6 7h2v11H6z"/>
+    </g>
+</svg>
+
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-invert.png
new file mode 100644 (file)
index 0000000..6d7e5ec
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-invert.svg
new file mode 100644 (file)
index 0000000..2da24a5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M20 11l-4-3v2h-3V7h2l-3-4-3 4h2v3H8V8l-4 3 4 3v-2h3v3H9l3 4 3-4h-2v-3h3v2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr-invert.png
new file mode 100644 (file)
index 0000000..fe5f614
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr-invert.svg
new file mode 100644 (file)
index 0000000..468ad1b
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="move-ltr">
+        <path id="arrow" d="M8.935 7.18l5.302 5.303-5.302 5.303L10.35 19.2l6.715-6.717-6.716-6.716z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr-progressive.png
new file mode 100644 (file)
index 0000000..5f37c25
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..dd47881
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="move-ltr">
+        <path id="arrow" d="M8.935 7.18l5.302 5.303-5.302 5.303L10.35 19.2l6.715-6.717-6.716-6.716z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr.png
new file mode 100644 (file)
index 0000000..b57d8da
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-ltr.svg
new file mode 100644 (file)
index 0000000..670d84d
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="move-ltr">
+        <path id="arrow" d="M8.935 7.18l5.302 5.303-5.302 5.303L10.35 19.2l6.715-6.717-6.716-6.716z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-progressive.png
new file mode 100644 (file)
index 0000000..c2d6a84
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-progressive.svg
new file mode 100644 (file)
index 0000000..6274f6f
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M20 11l-4-3v2h-3V7h2l-3-4-3 4h2v3H8V8l-4 3 4 3v-2h3v3H9l3 4 3-4h-2v-3h3v2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl-invert.png
new file mode 100644 (file)
index 0000000..cfca1e2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl-invert.svg
new file mode 100644 (file)
index 0000000..264f3b6
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="move-rtl">
+        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.72 6.714 6.71z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl-progressive.png
new file mode 100644 (file)
index 0000000..3dbedd5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..32aee25
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="move-rtl">
+        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.72 6.714 6.71z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl.png
new file mode 100644 (file)
index 0000000..e401a8f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move-rtl.svg
new file mode 100644 (file)
index 0000000..ce5b444
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="move-rtl">
+        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.72 6.714 6.71z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move.png
new file mode 100644 (file)
index 0000000..7071499
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/move.svg
new file mode 100644 (file)
index 0000000..b04ecdd
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M20 11l-4-3v2h-3V7h2l-3-4-3 4h2v3H8V8l-4 3 4 3v-2h3v3H9l3 4 3-4h-2v-3h3v2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-invert.png
new file mode 100644 (file)
index 0000000..5e432b0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-invert.svg
new file mode 100644 (file)
index 0000000..bc7fedc
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-progressive.png
new file mode 100644 (file)
index 0000000..26be088
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..1ef309b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr.png
new file mode 100644 (file)
index 0000000..29563d8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-ltr.svg
new file mode 100644 (file)
index 0000000..2d19a78
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-invert.png
new file mode 100644 (file)
index 0000000..f9a742e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-invert.svg
new file mode 100644 (file)
index 0000000..41e0401
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-progressive.png
new file mode 100644 (file)
index 0000000..10e2735
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..a877db8
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl.png
new file mode 100644 (file)
index 0000000..c49609f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newWindow-rtl.svg
new file mode 100644 (file)
index 0000000..133442e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-invert.png
new file mode 100644 (file)
index 0000000..874ff29
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-invert.svg
new file mode 100644 (file)
index 0000000..6ec8972
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M17.8 5.7c-.5 0-.9.2-1.2.5s-.5.7-.5 1.2v4.3H11v-4l-6 5.5 6 5.5v-4h8v-9h-1.2z" id="line_return"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-progressive.png
new file mode 100644 (file)
index 0000000..67ec969
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..b0e6aaf
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M17.8 5.7c-.5 0-.9.2-1.2.5s-.5.7-.5 1.2v4.3H11v-4l-6 5.5 6 5.5v-4h8v-9h-1.2z" id="line_return"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr.png
new file mode 100644 (file)
index 0000000..f41eb0c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-ltr.svg
new file mode 100644 (file)
index 0000000..a7e5b12
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M17.8 5.7c-.5 0-.9.2-1.2.5s-.5.7-.5 1.2v4.3H11v-4l-6 5.5 6 5.5v-4h8v-9h-1.2z" id="line_return"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-invert.png
new file mode 100644 (file)
index 0000000..99be840
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-invert.svg
new file mode 100644 (file)
index 0000000..c919608
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M6.2 5.7c.5 0 .9.2 1.2.5.3.3.5.7.5 1.2v4.3H13v-4l6 5.5-6 5.5v-4H5v-9h1.2z" id="line_return"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-progressive.png
new file mode 100644 (file)
index 0000000..8e748e5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..1547e82
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M6.2 5.7c.5 0 .9.2 1.2.5.3.3.5.7.5 1.2v4.3H13v-4l6 5.5-6 5.5v-4H5v-9h1.2z" id="line_return"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl.png
new file mode 100644 (file)
index 0000000..93c7e52
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newline-rtl.svg
new file mode 100644 (file)
index 0000000..40752fa
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M6.2 5.7c.5 0 .9.2 1.2.5.3.3.5.7.5 1.2v4.3H13v-4l6 5.5-6 5.5v-4H5v-9h1.2z" id="line_return"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-invert.png
new file mode 100644 (file)
index 0000000..3f48ede
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-invert.svg
new file mode 100644 (file)
index 0000000..69b737a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M6 7v12c-.6 0-1-.4-1-1V9H4v9c0 1.1.9 2 2 2h15V7H6zm9 11H8v-1h7v1zm0-2H8v-1h7v1zm0-2H8v-1h7v1zm4 4h-3v-5h3v5zm0-7H8V9h11v2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-progressive.png
new file mode 100644 (file)
index 0000000..182f316
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..df59aac
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M6 7v12c-.6 0-1-.4-1-1V9H4v9c0 1.1.9 2 2 2h15V7H6zm9 11H8v-1h7v1zm0-2H8v-1h7v1zm0-2H8v-1h7v1zm4 4h-3v-5h3v5zm0-7H8V9h11v2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr.png
new file mode 100644 (file)
index 0000000..ccd6474
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-ltr.svg
new file mode 100644 (file)
index 0000000..4ff5856
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M6 7v12c-.6 0-1-.4-1-1V9H4v9c0 1.1.9 2 2 2h15V7H6zm9 11H8v-1h7v1zm0-2H8v-1h7v1zm0-2H8v-1h7v1zm4 4h-3v-5h3v5zm0-7H8V9h11v2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-invert.png
new file mode 100644 (file)
index 0000000..85cfa83
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-invert.svg
new file mode 100644 (file)
index 0000000..74fa337
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M19 7v12c.6 0 1-.4 1-1V9h1v9c0 1.1-.9 2-2 2H4V7h15zm-9 11h7v-1h-7v1zm0-2h7v-1h-7v1zm0-2h7v-1h-7v1zm-4 4h3v-5H6v5zm0-7h11V9H6v2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-progressive.png
new file mode 100644 (file)
index 0000000..8a6d99c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..5533c83
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M19 7v12c.6 0 1-.4 1-1V9h1v9c0 1.1-.9 2-2 2H4V7h15zm-9 11h7v-1h-7v1zm0-2h7v-1h-7v1zm0-2h7v-1h-7v1zm-4 4h3v-5H6v5zm0-7h11V9H6v2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl.png
new file mode 100644 (file)
index 0000000..b5df1df
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/newspaper-rtl.svg
new file mode 100644 (file)
index 0000000..f9d4e55
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M19 7v12c.6 0 1-.4 1-1V9h1v9c0 1.1-.9 2-2 2H4V7h15zm-9 11h7v-1h-7v1zm0-2h7v-1h-7v1zm0-2h7v-1h-7v1zm-4 4h3v-5H6v5zm0-7h11V9H6v2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr-invert.png
new file mode 100644 (file)
index 0000000..a17092e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr-invert.svg
new file mode 100644 (file)
index 0000000..d4cad39
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M15 13l2 2V5h-3v2h1zM3 3L2 4l1 1v14h3v-2H5V7l2 2v10h3v-2H9v-6l6 6h-1v2h3l3 3 1-1-3-3zm7 4V5H7l2 2zm8-2v2h1v10l2 2V5z" id="noWikiText-rtl"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr-progressive.png
new file mode 100644 (file)
index 0000000..2ac38b3
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..3fb2dd9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M15 13l2 2V5h-3v2h1zM3 3L2 4l1 1v14h3v-2H5V7l2 2v10h3v-2H9v-6l6 6h-1v2h3l3 3 1-1-3-3zm7 4V5H7l2 2zm8-2v2h1v10l2 2V5z" id="noWikiText-rtl"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr.png
new file mode 100644 (file)
index 0000000..2623b84
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-ltr.svg
new file mode 100644 (file)
index 0000000..2dfa2c7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M15 13l2 2V5h-3v2h1zM3 3L2 4l1 1v14h3v-2H5V7l2 2v10h3v-2H9v-6l6 6h-1v2h3l3 3 1-1-3-3zm7 4V5H7l2 2zm8-2v2h1v10l2 2V5z" id="noWikiText-rtl"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl-invert.png
new file mode 100644 (file)
index 0000000..1f7ed87
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl-invert.svg
new file mode 100644 (file)
index 0000000..346c582
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M9 13l-2 2V5h3v2H9zM21 3l1 1-1 1v14h-3v-2h1V7l-2 2v10h-3v-2h1v-6l-6 6h1v2H7l-3 3-1-1 3-3zm-7 4V5h3l-2 2zM6 5v2H5v10l-2 2V5z" id="noWikiText-rtl"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl-progressive.png
new file mode 100644 (file)
index 0000000..aba76c8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..9915009
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M9 13l-2 2V5h3v2H9zM21 3l1 1-1 1v14h-3v-2h1V7l-2 2v10h-3v-2h1v-6l-6 6h1v2H7l-3 3-1-1 3-3zm-7 4V5h3l-2 2zM6 5v2H5v10l-2 2V5z" id="noWikiText-rtl"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl.png
new file mode 100644 (file)
index 0000000..4d0ce86
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/noWikiText-rtl.svg
new file mode 100644 (file)
index 0000000..4f275fd
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M9 13l-2 2V5h3v2H9zM21 3l1 1-1 1v14h-3v-2h1V7l-2 2v10h-3v-2h1v-6l-6 6h1v2H7l-3 3-1-1 3-3zm-7 4V5h3l-2 2zM6 5v2H5v10l-2 2V5z" id="noWikiText-rtl"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright-invert.png
new file mode 100644 (file)
index 0000000..de7e529
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright-invert.svg
new file mode 100644 (file)
index 0000000..ca20b5a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
+    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright.png
new file mode 100644 (file)
index 0000000..5273b4c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notBright.svg
new file mode 100644 (file)
index 0000000..af87ff9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-invert.png
new file mode 100644 (file)
index 0000000..e18795b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-invert.svg
new file mode 100644 (file)
index 0000000..a0f8ddc
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="svg3116"><g fill="#fff">
+    <path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="alert"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-progressive.png
new file mode 100644 (file)
index 0000000..52e8b87
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice-progressive.svg
new file mode 100644 (file)
index 0000000..d828121
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="svg3116"><g fill="#36c">
+    <path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="alert"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice.png
new file mode 100644 (file)
index 0000000..114020e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/notice.svg
new file mode 100644 (file)
index 0000000..8dc4fec
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="svg3116">
+    <path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="alert"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-invert.png
new file mode 100644 (file)
index 0000000..b2dea7c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-invert.svg
new file mode 100644 (file)
index 0000000..ffd31b2
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="#fff">
+    <path d="M17.8 18.6H2.5l2.7-2.7V6h15.3v9.9c0 1.53-1.17 2.7-2.7 2.7zm-7.542-4.95c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-progressive.png
new file mode 100644 (file)
index 0000000..dd7100e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..7178cb4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="#36c">
+    <path d="M17.8 18.6H2.5l2.7-2.7V6h15.3v9.9c0 1.53-1.17 2.7-2.7 2.7zm-7.542-4.95c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr.png
new file mode 100644 (file)
index 0000000..df49095
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-ltr.svg
new file mode 100644 (file)
index 0000000..658809d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
+    <path d="M17.8 18.6H2.5l2.7-2.7V6h15.3v9.9c0 1.53-1.17 2.7-2.7 2.7zm-7.542-4.95c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-invert.png
new file mode 100644 (file)
index 0000000..a3d6013
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-invert.svg
new file mode 100644 (file)
index 0000000..61e51ca
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="#fff">
+    <path d="M5.2 18.6h15.3l-2.7-2.7V6H2.5v9.9c0 1.53 1.17 2.7 2.7 2.7zm7.542-4.95c0 .405.135.675.405.945.27.27.607.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.607-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.608-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.332 1.332 0 0 0-.945-.405c-.337 0-.675.135-.945.405-.27.27-.405.608-.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-progressive.png
new file mode 100644 (file)
index 0000000..950fad5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..6320f87
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="#36c">
+    <path d="M5.2 18.6h15.3l-2.7-2.7V6H2.5v9.9c0 1.53 1.17 2.7 2.7 2.7zm7.542-4.95c0 .405.135.675.405.945.27.27.607.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.607-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.608-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.332 1.332 0 0 0-.945-.405c-.337 0-.675.135-.945.405-.27.27-.405.608-.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl.png
new file mode 100644 (file)
index 0000000..3d7e9bd
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/ongoingConversation-rtl.svg
new file mode 100644 (file)
index 0000000..648ce55
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
+    <path d="M5.2 18.6h15.3l-2.7-2.7V6H2.5v9.9c0 1.53 1.17 2.7 2.7 2.7zm7.542-4.95c0 .405.135.675.405.945.27.27.607.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.607-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.608-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.332 1.332 0 0 0-.945-.405c-.337 0-.675.135-.945.405-.27.27-.405.608-.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-invert.png
new file mode 100644 (file)
index 0000000..6bb2f99
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-invert.svg
new file mode 100644 (file)
index 0000000..efdbe9a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 12l5 4V8l-5 4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-progressive.png
new file mode 100644 (file)
index 0000000..00e8a09
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..29e5f42
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 12l5 4V8l-5 4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr.png
new file mode 100644 (file)
index 0000000..c1cd66a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-ltr.svg
new file mode 100644 (file)
index 0000000..c004db0
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 12l5 4V8l-5 4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-invert.png
new file mode 100644 (file)
index 0000000..eb3d700
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-invert.svg
new file mode 100644 (file)
index 0000000..3a9d2b5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zm18-8l-5 4V8l5 4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-progressive.png
new file mode 100644 (file)
index 0000000..b0223bf
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..560abbb
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zm18-8l-5 4V8l5 4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl.png
new file mode 100644 (file)
index 0000000..a1d9454
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outdent-rtl.svg
new file mode 100644 (file)
index 0000000..a71bfdc
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zm18-8l-5 4V8l5 4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-invert.png
new file mode 100644 (file)
index 0000000..eceedbd
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-invert.svg
new file mode 100644 (file)
index 0000000..e9fb818
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="outline-ltr">
+        <path id="text" d="M5 13h14v6H5v-6z"/>
+        <path id="float" d="M5 5v6h6V5H5zm5 5H6V6h4v4z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-progressive.png
new file mode 100644 (file)
index 0000000..df70c26
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..662409a
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="outline-ltr">
+        <path id="text" d="M5 13h14v6H5v-6z"/>
+        <path id="float" d="M5 5v6h6V5H5zm5 5H6V6h4v4z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr.png
new file mode 100644 (file)
index 0000000..bcbfa5c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-ltr.svg
new file mode 100644 (file)
index 0000000..44c1591
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="outline-ltr">
+        <path id="text" d="M5 13h14v6H5v-6z"/>
+        <path id="float" d="M5 5v6h6V5H5zm5 5H6V6h4v4z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-invert.png
new file mode 100644 (file)
index 0000000..96c4719
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-invert.svg
new file mode 100644 (file)
index 0000000..74689d1
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="outline-rtl">
+        <path id="text" d="M19 19H5v-6h14v6z"/>
+        <path id="float" d="M13 5v6h6V5h-6zm1 1h4v4h-4V6z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-progressive.png
new file mode 100644 (file)
index 0000000..f5af3f3
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..b579315
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="outline-rtl">
+        <path id="text" d="M19 19H5v-6h14v6z"/>
+        <path id="float" d="M13 5v6h6V5h-6zm1 1h4v4h-4V6z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl.png
new file mode 100644 (file)
index 0000000..d89e06e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/outline-rtl.svg
new file mode 100644 (file)
index 0000000..c5b19c8
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="outline-rtl">
+        <path id="text" d="M19 19H5v-6h14v6z"/>
+        <path id="float" d="M13 5v6h6V5h-6zm1 1h4v4h-4V6z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr-invert.png
new file mode 100644 (file)
index 0000000..82fcfa3
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr-invert.svg
new file mode 100644 (file)
index 0000000..1a0340c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm-2 12V9l6 4-6 4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr-progressive.png
new file mode 100644 (file)
index 0000000..7f2ef08
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..5b62113
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm-2 12V9l6 4-6 4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr.png
new file mode 100644 (file)
index 0000000..a3b711b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-ltr.svg
new file mode 100644 (file)
index 0000000..82a16a4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm-2 12V9l6 4-6 4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl-invert.png
new file mode 100644 (file)
index 0000000..c31dbea
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl-invert.svg
new file mode 100644 (file)
index 0000000..b27b913
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M12 5c4.4 0 8 3.6 8 8s-3.6 8-8 8-8-3.6-8-8 3.6-8 8-8zm2 12V9l-6 4 6 4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl-progressive.png
new file mode 100644 (file)
index 0000000..a6bf5b1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..05b7749
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 5c4.4 0 8 3.6 8 8s-3.6 8-8 8-8-3.6-8-8 3.6-8 8-8zm2 12V9l-6 4 6 4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl.png
new file mode 100644 (file)
index 0000000..2e45883
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/play-rtl.svg
new file mode 100644 (file)
index 0000000..dae95c4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M12 5c4.4 0 8 3.6 8 8s-3.6 8-8 8-8-3.6-8-8 3.6-8 8-8zm2 12V9l-6 4 6 4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr-invert.png
new file mode 100644 (file)
index 0000000..ca07bcc
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr-invert.svg
new file mode 100644 (file)
index 0000000..ae4352f
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M18 8h-1V4H7v4H3v6c0 1.7 1.3 3 3 3h1v3h10v-3h4v-6c0-1.7-1.3-3-3-3zM8 5h8v3H8V5zm8 14H8v-6h8v6z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr-progressive.png
new file mode 100644 (file)
index 0000000..e37b3ea
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..fb372de
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M18 8h-1V4H7v4H3v6c0 1.7 1.3 3 3 3h1v3h10v-3h4v-6c0-1.7-1.3-3-3-3zM8 5h8v3H8V5zm8 14H8v-6h8v6z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr.png
new file mode 100644 (file)
index 0000000..a7f6717
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-ltr.svg
new file mode 100644 (file)
index 0000000..7081606
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M18 8h-1V4H7v4H3v6c0 1.7 1.3 3 3 3h1v3h10v-3h4v-6c0-1.7-1.3-3-3-3zM8 5h8v3H8V5zm8 14H8v-6h8v6z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl-invert.png
new file mode 100644 (file)
index 0000000..95ef54a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl-invert.svg
new file mode 100644 (file)
index 0000000..d045ff9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl-progressive.png
new file mode 100644 (file)
index 0000000..0a0a198
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..91ccc6f
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl.png
new file mode 100644 (file)
index 0000000..6e5b175
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/printer-rtl.svg
new file mode 100644 (file)
index 0000000..d6188eb
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-invert.png
new file mode 100644 (file)
index 0000000..10c46ef
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-invert.svg
new file mode 100644 (file)
index 0000000..9bee56b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M17.445 12.225c-.813-.935-1.775-.739-2.883-1.768-.55-.511-.498-2.36-.498-2.36s-.041-1.836.524-2.401c.39-.39 1.076-.49 1.475-.883a.973.973 0 0 0 .217-.317c.007-.013.014-.023.018-.035.035-.092.054-.2.064-.316.003-.03.017-.055.017-.085 0-.005-.003-.01-.004-.015.001-.008.004-.014.004-.022 0-.02-.015-.03-.017-.048a1.052 1.052 0 0 0-1.043-.974H8.681c-.555 0-.997.43-1.043.974-.002.018-.017.028-.017.048 0 .008.003.014.003.022 0 .006-.003.01-.003.015 0 .03.014.055.017.085.01.116.029.224.064.316.004.012.012.022.018.035a.965.965 0 0 0 .217.317c.399.393 1.084.493 1.475.883.565.565.523 2.401.523 2.401s.053 1.849-.497 2.36c-1.108 1.03-2.07.833-2.883 1.768C5.979 12.887 6 14 6 14h5.333v4.578L12 21l.668-2.422V14H18s.02-1.113-.555-1.775z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-progressive.png
new file mode 100644 (file)
index 0000000..ea2ec8c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin-progressive.svg
new file mode 100644 (file)
index 0000000..1cc4d60
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M17.445 12.225c-.813-.935-1.775-.739-2.883-1.768-.55-.511-.498-2.36-.498-2.36s-.041-1.836.524-2.401c.39-.39 1.076-.49 1.475-.883a.973.973 0 0 0 .217-.317c.007-.013.014-.023.018-.035.035-.092.054-.2.064-.316.003-.03.017-.055.017-.085 0-.005-.003-.01-.004-.015.001-.008.004-.014.004-.022 0-.02-.015-.03-.017-.048a1.052 1.052 0 0 0-1.043-.974H8.681c-.555 0-.997.43-1.043.974-.002.018-.017.028-.017.048 0 .008.003.014.003.022 0 .006-.003.01-.003.015 0 .03.014.055.017.085.01.116.029.224.064.316.004.012.012.022.018.035a.965.965 0 0 0 .217.317c.399.393 1.084.493 1.475.883.565.565.523 2.401.523 2.401s.053 1.849-.497 2.36c-1.108 1.03-2.07.833-2.883 1.768C5.979 12.887 6 14 6 14h5.333v4.578L12 21l.668-2.422V14H18s.02-1.113-.555-1.775z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin.png
new file mode 100644 (file)
index 0000000..27d49e2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/pushPin.svg
new file mode 100644 (file)
index 0000000..b852cd0
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M17.445 12.225c-.813-.935-1.775-.739-2.883-1.768-.55-.511-.498-2.36-.498-2.36s-.041-1.836.524-2.401c.39-.39 1.076-.49 1.475-.883a.973.973 0 0 0 .217-.317c.007-.013.014-.023.018-.035.035-.092.054-.2.064-.316.003-.03.017-.055.017-.085 0-.005-.003-.01-.004-.015.001-.008.004-.014.004-.022 0-.02-.015-.03-.017-.048a1.052 1.052 0 0 0-1.043-.974H8.681c-.555 0-.997.43-1.043.974-.002.018-.017.028-.017.048 0 .008.003.014.003.022 0 .006-.003.01-.003.015 0 .03.014.055.017.085.01.116.029.224.064.316.004.012.012.022.018.035a.965.965 0 0 0 .217.317c.399.393 1.084.493 1.475.883.565.565.523 2.401.523 2.401s.053 1.849-.497 2.36c-1.108 1.03-2.07.833-2.883 1.768C5.979 12.887 6 14 6 14h5.333v4.578L12 21l.668-2.422V14H18s.02-1.113-.555-1.775z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-invert.png
new file mode 100644 (file)
index 0000000..0dbe87e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-invert.svg
new file mode 100644 (file)
index 0000000..27c3ab6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M18 9.9c-.7 0-1.4.3-1.8.9V6h-4c.2-.4.4-.8.4-1.2 0-1.2-1-2.2-2.2-2.2-1.3-.1-2.3.9-2.3 2.2 0 .4.2.8.4 1.2H4.1v3.6l.6-.1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5c-.2 0-.4 0-.6-.1V18H9c-.5.4-.9 1-.9 1.8 0 1.2 1 2.2 2.3 2.2 1.2 0 2.2-1 2.2-2.2 0-.7-.3-1.4-.9-1.8h4.5v-4.5c.4.5 1 .9 1.8.9 1.2 0 2.2-1 2.2-2.2 0-1.3-1-2.3-2.2-2.3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-progressive.png
new file mode 100644 (file)
index 0000000..75418d7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..3406199
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M18 9.9c-.7 0-1.4.3-1.8.9V6h-4c.2-.4.4-.8.4-1.2 0-1.2-1-2.2-2.2-2.2-1.3-.1-2.3.9-2.3 2.2 0 .4.2.8.4 1.2H4.1v3.6l.6-.1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5c-.2 0-.4 0-.6-.1V18H9c-.5.4-.9 1-.9 1.8 0 1.2 1 2.2 2.3 2.2 1.2 0 2.2-1 2.2-2.2 0-.7-.3-1.4-.9-1.8h4.5v-4.5c.4.5 1 .9 1.8.9 1.2 0 2.2-1 2.2-2.2 0-1.3-1-2.3-2.2-2.3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr.png
new file mode 100644 (file)
index 0000000..9b40609
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-ltr.svg
new file mode 100644 (file)
index 0000000..fb9d338
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M18 9.9c-.7 0-1.4.3-1.8.9V6h-4c.2-.4.4-.8.4-1.2 0-1.2-1-2.2-2.2-2.2-1.3-.1-2.3.9-2.3 2.2 0 .4.2.8.4 1.2H4.1v3.6l.6-.1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5c-.2 0-.4 0-.6-.1V18H9c-.5.4-.9 1-.9 1.8 0 1.2 1 2.2 2.3 2.2 1.2 0 2.2-1 2.2-2.2 0-.7-.3-1.4-.9-1.8h4.5v-4.5c.4.5 1 .9 1.8.9 1.2 0 2.2-1 2.2-2.2 0-1.3-1-2.3-2.2-2.3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-invert.png
new file mode 100644 (file)
index 0000000..dc5a97f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-invert.svg
new file mode 100644 (file)
index 0000000..cee2e1a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M6.3 9.9c.7 0 1.4.3 1.8.9V6h4c-.2-.4-.4-.8-.4-1.2 0-1.2 1-2.2 2.2-2.2 1.3-.1 2.3.9 2.3 2.2 0 .4-.2.8-.4 1.2h4.4v3.6l-.6-.1c-1.4 0-2.5 1.1-2.5 2.5s1.1 2.5 2.5 2.5c.2 0 .4 0 .6-.1V18h-4.9c.5.4.9 1 .9 1.8 0 1.2-1 2.2-2.3 2.2-1.2 0-2.2-1-2.2-2.2 0-.7.3-1.4.9-1.8H8.1v-4.5c-.4.5-1 .9-1.8.9-1.2 0-2.2-1-2.2-2.2 0-1.3 1-2.3 2.2-2.3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-progressive.png
new file mode 100644 (file)
index 0000000..e8273ec
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..3f6a3a8
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M6.3 9.9c.7 0 1.4.3 1.8.9V6h4c-.2-.4-.4-.8-.4-1.2 0-1.2 1-2.2 2.2-2.2 1.3-.1 2.3.9 2.3 2.2 0 .4-.2.8-.4 1.2h4.4v3.6l-.6-.1c-1.4 0-2.5 1.1-2.5 2.5s1.1 2.5 2.5 2.5c.2 0 .4 0 .6-.1V18h-4.9c.5.4.9 1 .9 1.8 0 1.2-1 2.2-2.3 2.2-1.2 0-2.2-1-2.2-2.2 0-.7.3-1.4.9-1.8H8.1v-4.5c-.4.5-1 .9-1.8.9-1.2 0-2.2-1-2.2-2.2 0-1.3 1-2.3 2.2-2.3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl.png
new file mode 100644 (file)
index 0000000..6f7334b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/puzzle-rtl.svg
new file mode 100644 (file)
index 0000000..1d48308
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M6.3 9.9c.7 0 1.4.3 1.8.9V6h4c-.2-.4-.4-.8-.4-1.2 0-1.2 1-2.2 2.2-2.2 1.3-.1 2.3.9 2.3 2.2 0 .4-.2.8-.4 1.2h4.4v3.6l-.6-.1c-1.4 0-2.5 1.1-2.5 2.5s1.1 2.5 2.5 2.5c.2 0 .4 0 .6-.1V18h-4.9c.5.4.9 1 .9 1.8 0 1.2-1 2.2-2.3 2.2-1.2 0-2.2-1-2.2-2.2 0-.7.3-1.4.9-1.8H8.1v-4.5c-.4.5-1 .9-1.8.9-1.2 0-2.2-1-2.2-2.2 0-1.3 1-2.3 2.2-2.3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-invert.png
new file mode 100644 (file)
index 0000000..46ac181
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-invert.svg
new file mode 100644 (file)
index 0000000..7c9feea
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="quotes">
+        <path id="quote" d="M6.9 8.4c-.446.55-1.974 2.6-1.9 5.7V17h4.7c.9 0 1.6-.7 1.6-1.6V11H8.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
+    </g>
+    <use transform="translate(8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-progressive.png
new file mode 100644 (file)
index 0000000..ce64429
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..c64995d
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="quotes">
+        <path id="quote" d="M6.9 8.4c-.446.55-1.974 2.6-1.9 5.7V17h4.7c.9 0 1.6-.7 1.6-1.6V11H8.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
+    </g>
+    <use transform="translate(8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr.png
new file mode 100644 (file)
index 0000000..0252b74
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-ltr.svg
new file mode 100644 (file)
index 0000000..dc366b7
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
+    <g id="quotes">
+        <path id="quote" d="M6.9 8.4c-.446.55-1.974 2.6-1.9 5.7V17h4.7c.9 0 1.6-.7 1.6-1.6V11H8.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
+    </g>
+    <use transform="translate(8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-invert.png
new file mode 100644 (file)
index 0000000..6637ca2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-invert.svg
new file mode 100644 (file)
index 0000000..baae1fa
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="quotes">
+        <path id="quote" d="M17.1 8.4c.446.55 1.9 2.6 1.9 5.7V17h-4.7c-.9 0-1.6-.7-1.6-1.6V11h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
+    </g>
+    <use transform="translate(-8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-progressive.png
new file mode 100644 (file)
index 0000000..dff8962
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..255faad
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="quotes">
+        <path id="quote" d="M17.1 8.4c.446.55 1.9 2.6 1.9 5.7V17h-4.7c-.9 0-1.6-.7-1.6-1.6V11h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
+    </g>
+    <use transform="translate(-8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl.png
new file mode 100644 (file)
index 0000000..7bcc7c7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotes-rtl.svg
new file mode 100644 (file)
index 0000000..e652b31
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
+    <g id="quotes">
+        <path id="quote" d="M17.1 8.4c.446.55 1.9 2.6 1.9 5.7V17h-4.7c-.9 0-1.6-.7-1.6-1.6V11h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
+    </g>
+    <use transform="translate(-8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr-invert.png
new file mode 100644 (file)
index 0000000..40e3a06
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr-invert.svg
new file mode 100644 (file)
index 0000000..0d79616
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="quotes-add">
+        <path id="quote" d="M5.9 10.4c-.446.55-1.974 2.6-1.9 5.7V19h4.7c.9 0 1.593-.7 1.6-1.6V13H7.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
+        <path id="quote2" d="M15 9.344c-.476.32-.78.677-1.094 1.062A8.76 8.76 0 0 0 12 16.094V19h4.688a1.6 1.6 0 0 0 1.625-1.594V13H15V9.344z"/>
+        <path id="add" d="M18 6V2h-2v4h-4v2h4v4h2V8h4V6z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr-progressive.png
new file mode 100644 (file)
index 0000000..f36a0ca
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..755708d
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="quotes-add">
+        <path id="quote" d="M5.9 10.4c-.446.55-1.974 2.6-1.9 5.7V19h4.7c.9 0 1.593-.7 1.6-1.6V13H7.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
+        <path id="quote2" d="M15 9.344c-.476.32-.78.677-1.094 1.062A8.76 8.76 0 0 0 12 16.094V19h4.688a1.6 1.6 0 0 0 1.625-1.594V13H15V9.344z"/>
+        <path id="add" d="M18 6V2h-2v4h-4v2h4v4h2V8h4V6z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr.png
new file mode 100644 (file)
index 0000000..e1a0c4b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-ltr.svg
new file mode 100644 (file)
index 0000000..6704c51
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="quotes-add">
+        <path id="quote" d="M5.9 10.4c-.446.55-1.974 2.6-1.9 5.7V19h4.7c.9 0 1.593-.7 1.6-1.6V13H7.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
+        <path id="quote2" d="M15 9.344c-.476.32-.78.677-1.094 1.062A8.76 8.76 0 0 0 12 16.094V19h4.688a1.6 1.6 0 0 0 1.625-1.594V13H15V9.344z"/>
+        <path id="add" d="M18 6V2h-2v4h-4v2h4v4h2V8h4V6z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl-invert.png
new file mode 100644 (file)
index 0000000..e15cc90
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl-invert.svg
new file mode 100644 (file)
index 0000000..2a839f0
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="quotes-add">
+        <path id="quote" d="M18.097 10.4c.446.55 1.974 2.6 1.9 5.7V19h-4.7c-.9 0-1.593-.7-1.6-1.6V13h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
+        <path id="quote2" d="M8.997 9.344c.476.32.782.677 1.094 1.062A8.758 8.758 0 0 1 12 16.094V19H7.31c-.9 0-1.618-.694-1.625-1.594V13h3.312V9.344z"/>
+        <path id="add" d="M5.997 6V2h2v4h4v2h-4v4h-2V8h-4V6z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl-progressive.png
new file mode 100644 (file)
index 0000000..f824259
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..a5c10b4
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="quotes-add">
+        <path id="quote" d="M18.097 10.4c.446.55 1.974 2.6 1.9 5.7V19h-4.7c-.9 0-1.593-.7-1.6-1.6V13h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
+        <path id="quote2" d="M8.997 9.344c.476.32.782.677 1.094 1.062A8.758 8.758 0 0 1 12 16.094V19H7.31c-.9 0-1.618-.694-1.625-1.594V13h3.312V9.344z"/>
+        <path id="add" d="M5.997 6V2h2v4h4v2h-4v4h-2V8h-4V6z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl.png
new file mode 100644 (file)
index 0000000..0ef9d01
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/quotesAdd-rtl.svg
new file mode 100644 (file)
index 0000000..d972ad3
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="quotes-add">
+        <path id="quote" d="M18.097 10.4c.446.55 1.974 2.6 1.9 5.7V19h-4.7c-.9 0-1.593-.7-1.6-1.6V13h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
+        <path id="quote2" d="M8.997 9.344c.476.32.782.677 1.094 1.062A8.758 8.758 0 0 1 12 16.094V19H7.31c-.9 0-1.618-.694-1.625-1.594V13h3.312V9.344z"/>
+        <path id="add" d="M5.997 6V2h2v4h4v2h-4v4h-2V8h-4V6z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression-invert.png
new file mode 100644 (file)
index 0000000..0206be9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression-invert.svg
new file mode 100644 (file)
index 0000000..0cb419e
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="regular-expression">
+        <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777A6.886 6.886 0 0 1 4.764 7H6.23a7.923 7.923 0 0 0-1.25 2.374 8.563 8.563 0 0 0 .007 5.314c.29.85.7 1.622 1.23 2.312h-1.45a6.53 6.53 0 0 1-1.314-2.223 8.126 8.126 0 0 1-.45-2.732"/>
+        <path id="dot" d="M10 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/>
+        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.47-1.992.14 1.307 1.74-1.33.71-.914-1.833-.8 1.822-1.38-.698 1.296-1.74-1.98-.152.23-1.464 2.14.61-.24-2.158h1.534"/>
+        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744A6.51 6.51 0 0 1 19.236 17h-1.453a8.017 8.017 0 0 0 1.225-2.31c.29-.855.434-1.74.434-2.66 0-.91-.14-1.797-.422-2.66a7.913 7.913 0 0 0-1.248-2.374h1.465a6.764 6.764 0 0 1 1.313 2.28c.3.86.45 1.782.45 2.764"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression-progressive.png
new file mode 100644 (file)
index 0000000..af85e03
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression-progressive.svg
new file mode 100644 (file)
index 0000000..5e2894b
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="regular-expression">
+        <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777A6.886 6.886 0 0 1 4.764 7H6.23a7.923 7.923 0 0 0-1.25 2.374 8.563 8.563 0 0 0 .007 5.314c.29.85.7 1.622 1.23 2.312h-1.45a6.53 6.53 0 0 1-1.314-2.223 8.126 8.126 0 0 1-.45-2.732"/>
+        <path id="dot" d="M10 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/>
+        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.47-1.992.14 1.307 1.74-1.33.71-.914-1.833-.8 1.822-1.38-.698 1.296-1.74-1.98-.152.23-1.464 2.14.61-.24-2.158h1.534"/>
+        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744A6.51 6.51 0 0 1 19.236 17h-1.453a8.017 8.017 0 0 0 1.225-2.31c.29-.855.434-1.74.434-2.66 0-.91-.14-1.797-.422-2.66a7.913 7.913 0 0 0-1.248-2.374h1.465a6.764 6.764 0 0 1 1.313 2.28c.3.86.45 1.782.45 2.764"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression.png
new file mode 100644 (file)
index 0000000..f27e421
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/regular-expression.svg
new file mode 100644 (file)
index 0000000..d5fcfcf
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="regular-expression">
+        <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777A6.886 6.886 0 0 1 4.764 7H6.23a7.923 7.923 0 0 0-1.25 2.374 8.563 8.563 0 0 0 .007 5.314c.29.85.7 1.622 1.23 2.312h-1.45a6.53 6.53 0 0 1-1.314-2.223 8.126 8.126 0 0 1-.45-2.732"/>
+        <path id="dot" d="M10 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/>
+        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.47-1.992.14 1.307 1.74-1.33.71-.914-1.833-.8 1.822-1.38-.698 1.296-1.74-1.98-.152.23-1.464 2.14.61-.24-2.158h1.534"/>
+        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744A6.51 6.51 0 0 1 19.236 17h-1.453a8.017 8.017 0 0 0 1.225-2.31c.29-.855.434-1.74.434-2.66 0-.91-.14-1.797-.422-2.66a7.913 7.913 0 0 0-1.248-2.374h1.465a6.764 6.764 0 0 1 1.313 2.28c.3.86.45 1.782.45 2.764"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr-invert.png
new file mode 100644 (file)
index 0000000..4b2913b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr-invert.svg
new file mode 100644 (file)
index 0000000..3c02eb4
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="search">
+        <path id="magnifying-glass" d="M10.5 4a6.5 6.5 0 1 0 2.844 12.344L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438A6.426 6.426 0 0 0 17 10.5 6.5 6.5 0 0 0 10.5 4zm0 2a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr-progressive.png
new file mode 100644 (file)
index 0000000..50a7305
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..efc8223
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="search">
+        <path id="magnifying-glass" d="M10.5 4a6.5 6.5 0 1 0 2.844 12.344L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438A6.426 6.426 0 0 0 17 10.5 6.5 6.5 0 0 0 10.5 4zm0 2a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr.png
new file mode 100644 (file)
index 0000000..e8e99f8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-ltr.svg
new file mode 100644 (file)
index 0000000..ebc654a
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="search">
+        <path id="magnifying-glass" d="M10.5 4a6.5 6.5 0 1 0 2.844 12.344L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438A6.426 6.426 0 0 0 17 10.5 6.5 6.5 0 0 0 10.5 4zm0 2a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl-invert.png
new file mode 100644 (file)
index 0000000..0409aa4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl-invert.svg
new file mode 100644 (file)
index 0000000..8df7b16
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="search">
+        <path id="magnifying-glass" d="M13.5 4a6.5 6.5 0 1 1-2.844 12.344L8 19c-1.4 1.4-2.5 1.5-4 0l4.438-4.438A6.426 6.426 0 0 1 7 10.5 6.5 6.5 0 0 1 13.5 4zm0 2a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl-progressive.png
new file mode 100644 (file)
index 0000000..4f49e18
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..07f23a8
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="search">
+        <path id="magnifying-glass" d="M13.5 4a6.5 6.5 0 1 1-2.844 12.344L8 19c-1.4 1.4-2.5 1.5-4 0l4.438-4.438A6.426 6.426 0 0 1 7 10.5 6.5 6.5 0 0 1 13.5 4zm0 2a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl.png
new file mode 100644 (file)
index 0000000..3ab96be
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/search-rtl.svg
new file mode 100644 (file)
index 0000000..c51d4cb
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="search">
+        <path id="magnifying-glass" d="M13.5 4a6.5 6.5 0 1 1-2.844 12.344L8 19c-1.4 1.4-2.5 1.5-4 0l4.438-4.438A6.426 6.426 0 0 1 7 10.5 6.5 6.5 0 0 1 13.5 4zm0 2a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link-invert.png
new file mode 100644 (file)
index 0000000..a74063d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link-invert.svg
new file mode 100644 (file)
index 0000000..1b24dbb
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
+    <g id="secure">
+        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.49-.485 1.45-.487 1.94-.002.543.546.545 1.536.545 1.55V5H3.998z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link-progressive.png
new file mode 100644 (file)
index 0000000..f29d856
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link-progressive.svg
new file mode 100644 (file)
index 0000000..ee69fc4
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#36c">
+    <g id="secure">
+        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.49-.485 1.45-.487 1.94-.002.543.546.545 1.536.545 1.55V5H3.998z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link.png
new file mode 100644 (file)
index 0000000..8a44a92
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/secure-link.svg
new file mode 100644 (file)
index 0000000..453d166
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="secure">
+        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.49-.485 1.45-.487 1.94-.002.543.546.545 1.536.545 1.55V5H3.998z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-invert.png
new file mode 100644 (file)
index 0000000..34c6afe
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-invert.svg
new file mode 100644 (file)
index 0000000..630835a
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="settings">
+        <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-progressive.png
new file mode 100644 (file)
index 0000000..46011d2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings-progressive.svg
new file mode 100644 (file)
index 0000000..a93d312
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="settings">
+        <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings.png
new file mode 100644 (file)
index 0000000..1c8e587
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/settings.svg
new file mode 100644 (file)
index 0000000..3245dbe
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="settings">
+        <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-invert.png
new file mode 100644 (file)
index 0000000..4538011
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-invert.svg
new file mode 100644 (file)
index 0000000..b783779
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M0 20h24v1H0v-1zm6-8l-1-1-2 2-2-2-1 1 2 2-2 2 1 1 2-2 2 2 1-1-2-2zm15.6 3.7c-.9-.5-1.9-.5-2.7 0-1.5.9-3.1.4-3.1.4-.4-.2-.8-.4-1.1-.6 2.2-.6 4.4-1.8 6-3.9 1.1-1.2 2.5-3.9.4-6-.7-.7-1.6-1.1-2.7-1-1.4.1-2.8.9-3.9 2.1-.9 1.1-3.1 4.5-2.3 7.5 0 .1 0 .2.1.3-2.3.3-4.2.2-4.4.1v1.5c.7.1 2.7.2 5.1-.2.5.7 1.3 1.2 2.3 1.6.1 0 2.4.8 4.5-.6.5-.3.9-.1 1.1 0 .4.2.7.6.7 1H23c0-.8-.6-1.7-1.4-2.2zm-8-1.7c-.5-2.2 1.1-5.1 2-6.2.8-.9 1.8-1.5 2.8-1.6h.1c.6 0 1.1.2 1.5.6 1.6 1.6-.4 3.9-.5 4-1.5 2-3.7 3-5.8 3.5l-.1-.3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-progressive.png
new file mode 100644 (file)
index 0000000..f7d6da8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..366aafb
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M0 20h24v1H0v-1zm6-8l-1-1-2 2-2-2-1 1 2 2-2 2 1 1 2-2 2 2 1-1-2-2zm15.6 3.7c-.9-.5-1.9-.5-2.7 0-1.5.9-3.1.4-3.1.4-.4-.2-.8-.4-1.1-.6 2.2-.6 4.4-1.8 6-3.9 1.1-1.2 2.5-3.9.4-6-.7-.7-1.6-1.1-2.7-1-1.4.1-2.8.9-3.9 2.1-.9 1.1-3.1 4.5-2.3 7.5 0 .1 0 .2.1.3-2.3.3-4.2.2-4.4.1v1.5c.7.1 2.7.2 5.1-.2.5.7 1.3 1.2 2.3 1.6.1 0 2.4.8 4.5-.6.5-.3.9-.1 1.1 0 .4.2.7.6.7 1H23c0-.8-.6-1.7-1.4-2.2zm-8-1.7c-.5-2.2 1.1-5.1 2-6.2.8-.9 1.8-1.5 2.8-1.6h.1c.6 0 1.1.2 1.5.6 1.6 1.6-.4 3.9-.5 4-1.5 2-3.7 3-5.8 3.5l-.1-.3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr.png
new file mode 100644 (file)
index 0000000..f68a7bf
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-ltr.svg
new file mode 100644 (file)
index 0000000..03b34cf
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M0 20h24v1H0v-1zm6-8l-1-1-2 2-2-2-1 1 2 2-2 2 1 1 2-2 2 2 1-1-2-2zm15.6 3.7c-.9-.5-1.9-.5-2.7 0-1.5.9-3.1.4-3.1.4-.4-.2-.8-.4-1.1-.6 2.2-.6 4.4-1.8 6-3.9 1.1-1.2 2.5-3.9.4-6-.7-.7-1.6-1.1-2.7-1-1.4.1-2.8.9-3.9 2.1-.9 1.1-3.1 4.5-2.3 7.5 0 .1 0 .2.1.3-2.3.3-4.2.2-4.4.1v1.5c.7.1 2.7.2 5.1-.2.5.7 1.3 1.2 2.3 1.6.1 0 2.4.8 4.5-.6.5-.3.9-.1 1.1 0 .4.2.7.6.7 1H23c0-.8-.6-1.7-1.4-2.2zm-8-1.7c-.5-2.2 1.1-5.1 2-6.2.8-.9 1.8-1.5 2.8-1.6h.1c.6 0 1.1.2 1.5.6 1.6 1.6-.4 3.9-.5 4-1.5 2-3.7 3-5.8 3.5l-.1-.3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-invert.png
new file mode 100644 (file)
index 0000000..a99fe52
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-invert.svg
new file mode 100644 (file)
index 0000000..ffbf189
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M24 20H0v1h24v-1zm-6-8l1-1 2 2 2-2 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2zM2.4 15.7c.9-.5 1.9-.5 2.7 0 1.5.9 3.1.4 3.1.4.4-.2.8-.4 1.1-.6-2.2-.6-4.4-1.8-6-3.9-1.1-1.2-2.5-3.9-.4-6 .7-.7 1.6-1.1 2.7-1 1.4.1 2.8.9 3.9 2.1.9 1.1 3.1 4.5 2.3 7.5 0 .1 0 .2-.1.3 2.3.3 4.2.2 4.4.1v1.5c-.7.1-2.7.2-5.1-.2-.5.7-1.3 1.2-2.3 1.6-.1 0-2.4.8-4.5-.6-.5-.3-.9-.1-1.1 0-.4.2-.7.6-.7 1H1c0-.8.6-1.7 1.4-2.2zm8-1.7c.5-2.2-1.1-5.1-2-6.2-.8-.9-1.8-1.5-2.8-1.6h-.1c-.6 0-1.1.2-1.5.6-1.6 1.6.4 3.9.5 4 1.5 2 3.7 3 5.8 3.5l.1-.3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-progressive.png
new file mode 100644 (file)
index 0000000..b5e08ca
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..3131849
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M24 20H0v1h24v-1zm-6-8l1-1 2 2 2-2 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2zM2.4 15.7c.9-.5 1.9-.5 2.7 0 1.5.9 3.1.4 3.1.4.4-.2.8-.4 1.1-.6-2.2-.6-4.4-1.8-6-3.9-1.1-1.2-2.5-3.9-.4-6 .7-.7 1.6-1.1 2.7-1 1.4.1 2.8.9 3.9 2.1.9 1.1 3.1 4.5 2.3 7.5 0 .1 0 .2-.1.3 2.3.3 4.2.2 4.4.1v1.5c-.7.1-2.7.2-5.1-.2-.5.7-1.3 1.2-2.3 1.6-.1 0-2.4.8-4.5-.6-.5-.3-.9-.1-1.1 0-.4.2-.7.6-.7 1H1c0-.8.6-1.7 1.4-2.2zm8-1.7c.5-2.2-1.1-5.1-2-6.2-.8-.9-1.8-1.5-2.8-1.6h-.1c-.6 0-1.1.2-1.5.6-1.6 1.6.4 3.9.5 4 1.5 2 3.7 3 5.8 3.5l.1-.3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl.png
new file mode 100644 (file)
index 0000000..9166e8d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/signature-rtl.svg
new file mode 100644 (file)
index 0000000..326281a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M24 20H0v1h24v-1zm-6-8l1-1 2 2 2-2 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2zM2.4 15.7c.9-.5 1.9-.5 2.7 0 1.5.9 3.1.4 3.1.4.4-.2.8-.4 1.1-.6-2.2-.6-4.4-1.8-6-3.9-1.1-1.2-2.5-3.9-.4-6 .7-.7 1.6-1.1 2.7-1 1.4.1 2.8.9 3.9 2.1.9 1.1 3.1 4.5 2.3 7.5 0 .1 0 .2-.1.3 2.3.3 4.2.2 4.4.1v1.5c-.7.1-2.7.2-5.1-.2-.5.7-1.3 1.2-2.3 1.6-.1 0-2.4.8-4.5-.6-.5-.3-.9-.1-1.1 0-.4.2-.7.6-.7 1H1c0-.8.6-1.7 1.4-2.2zm8-1.7c.5-2.2-1.1-5.1-2-6.2-.8-.9-1.8-1.5-2.8-1.6h-.1c-.6 0-1.1.2-1.5.6-1.6 1.6.4 3.9.5 4 1.5 2 3.7 3 5.8 3.5l.1-.3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr-invert.png
new file mode 100644 (file)
index 0000000..1b597da
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr-invert.svg
new file mode 100644 (file)
index 0000000..3f82d69
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path id="big-a" d="M9.666 6H8.294l-4.48 12H5.52l1.493-4h4l1.507 4h1.666zm-2.28 7l1.617-4.333L10.637 13h-3.25z"/>
+    <path id="small-a" d="M17.828 12h-.686l-2.24 6h.853l.747-2h2l.753 2h.833zm-1.14 3.5l.81-2.167.816 2.167H16.69z"/>
+    <path id="arrow" d="M15 6h5l-2.5 3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr-progressive.png
new file mode 100644 (file)
index 0000000..2878f23
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..67bf3a9
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path id="big-a" d="M9.666 6H8.294l-4.48 12H5.52l1.493-4h4l1.507 4h1.666zm-2.28 7l1.617-4.333L10.637 13h-3.25z"/>
+    <path id="small-a" d="M17.828 12h-.686l-2.24 6h.853l.747-2h2l.753 2h.833zm-1.14 3.5l.81-2.167.816 2.167H16.69z"/>
+    <path id="arrow" d="M15 6h5l-2.5 3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr.png
new file mode 100644 (file)
index 0000000..a9b29d8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-ltr.svg
new file mode 100644 (file)
index 0000000..9431252
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path id="big-a" d="M9.666 6H8.294l-4.48 12H5.52l1.493-4h4l1.507 4h1.666zm-2.28 7l1.617-4.333L10.637 13h-3.25z"/>
+    <path id="small-a" d="M17.828 12h-.686l-2.24 6h.853l.747-2h2l.753 2h.833zm-1.14 3.5l.81-2.167.816 2.167H16.69z"/>
+    <path id="arrow" d="M15 6h5l-2.5 3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl-invert.png
new file mode 100644 (file)
index 0000000..f94184a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl-invert.svg
new file mode 100644 (file)
index 0000000..3d99520
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path id="big-a" d="M14.334 6h1.372l4.48 12H18.48l-1.493-4h-4l-1.507 4H9.814zm2.28 7l-1.617-4.333L13.363 13h3.25z"/>
+    <path id="small-a" d="M6.172 12h.686l2.24 6h-.853L7.5 16H5.497l-.753 2h-.833zm1.14 3.5l-.81-2.166-.816 2.166h1.625z"/>
+    <path id="arrow" d="M9 6H4l2.5 3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl-progressive.png
new file mode 100644 (file)
index 0000000..99abfdb
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..2ca5200
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path id="big-a" d="M14.334 6h1.372l4.48 12H18.48l-1.493-4h-4l-1.507 4H9.814zm2.28 7l-1.617-4.333L13.363 13h3.25z"/>
+    <path id="small-a" d="M6.172 12h.686l2.24 6h-.853L7.5 16H5.497l-.753 2h-.833zm1.14 3.5l-.81-2.166-.816 2.166h1.625z"/>
+    <path id="arrow" d="M9 6H4l2.5 3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl.png
new file mode 100644 (file)
index 0000000..006bd2b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smaller-rtl.svg
new file mode 100644 (file)
index 0000000..d2d2858
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path id="big-a" d="M14.334 6h1.372l4.48 12H18.48l-1.493-4h-4l-1.507 4H9.814zm2.28 7l-1.617-4.333L13.363 13h3.25z"/>
+    <path id="small-a" d="M6.172 12h.686l2.24 6h-.853L7.5 16H5.497l-.753 2h-.833zm1.14 3.5l-.81-2.166-.816 2.166h1.625z"/>
+    <path id="arrow" d="M9 6H4l2.5 3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-ltr-invert.png
new file mode 100644 (file)
index 0000000..dec125e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-ltr-invert.svg
new file mode 100644 (file)
index 0000000..146a212
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
+    <path d="M17.6 20h-5.4v-.5c.2 0 .5-.1.9-.1.3-.1.5-.2.5-.3V19s0-.1-.1-.2l-.8-2H9.3c-.1.2-.2.4-.3.7-.1.3-.2.5-.2.7-.1.3-.1.4-.2.6v.2c0 .1.1.3.3.4.2.1.6.2 1.1.2v.4H6v-.5c.2 0 .3 0 .5-.1.2 0 .3-.1.5-.2s.4-.2.5-.4l.3-.6c.5-1.3 1.1-2.6 1.6-3.9.5-1.3 1.1-2.7 1.8-4.3h1.4c.9 2.2 1.6 4 2.1 5.3.5 1.3 1 2.4 1.3 3.2.1.1.1.3.2.4.1.1.2.2.4.3.1.1.3.1.5.2s.3.1.5.1v.5zm-5.2-4L11 12.4 9.6 16h2.8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-ltr.png
new file mode 100644 (file)
index 0000000..b38dca3
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-ltr.svg
new file mode 100644 (file)
index 0000000..446d10a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M17.6 20h-5.4v-.5c.2 0 .5-.1.9-.1.3-.1.5-.2.5-.3V19s0-.1-.1-.2l-.8-2H9.3c-.1.2-.2.4-.3.7-.1.3-.2.5-.2.7-.1.3-.1.4-.2.6v.2c0 .1.1.3.3.4.2.1.6.2 1.1.2v.4H6v-.5c.2 0 .3 0 .5-.1.2 0 .3-.1.5-.2s.4-.2.5-.4l.3-.6c.5-1.3 1.1-2.6 1.6-3.9.5-1.3 1.1-2.7 1.8-4.3h1.4c.9 2.2 1.6 4 2.1 5.3.5 1.3 1 2.4 1.3 3.2.1.1.1.3.2.4.1.1.2.2.4.3.1.1.3.1.5.2s.3.1.5.1v.5zm-5.2-4L11 12.4 9.6 16h2.8z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-rtl-invert.png
new file mode 100644 (file)
index 0000000..9aba246
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-rtl-invert.svg
new file mode 100644 (file)
index 0000000..960793c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
+    <path d="M6 19.5c.1 0 .3 0 .5-.1s.3-.1.5-.2.3-.2.4-.3c.1-.1.2-.2.2-.4.4-.9.8-1.9 1.3-3.2.5-1.3 1.2-3.1 2.1-5.3h1.4c.7 1.6 1.2 3 1.8 4.3.5 1.3 1.1 2.6 1.6 3.9l.3.6c.1.2.3.3.5.4.1.1.3.1.5.2.2 0 .4.1.5.1v.5h-4v-.5c.5 0 .9-.1 1.1-.2.2-.1.3-.2.3-.4v-.2c0-.1-.1-.3-.2-.6-.1-.2-.2-.4-.2-.7-.1-.3-.2-.5-.3-.7h-3.4l-.8 2c0 .1-.1.1-.1.2v.1c0 .1.2.2.5.3.3.1.6.1.9.1v.6H6v-.5zm8-3.5l-1.4-3.6-1.4 3.6H14z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-rtl.png
new file mode 100644 (file)
index 0000000..b9864ef
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/smallerText-rtl.svg
new file mode 100644 (file)
index 0000000..ebcea4d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M6 19.5c.1 0 .3 0 .5-.1s.3-.1.5-.2.3-.2.4-.3c.1-.1.2-.2.2-.4.4-.9.8-1.9 1.3-3.2.5-1.3 1.2-3.1 2.1-5.3h1.4c.7 1.6 1.2 3 1.8 4.3.5 1.3 1.1 2.6 1.6 3.9l.3.6c.1.2.3.3.5.4.1.1.3.1.5.2.2 0 .4.1.5.1v.5h-4v-.5c.5 0 .9-.1 1.1-.2.2-.1.3-.2.3-.4v-.2c0-.1-.1-.3-.2-.6-.1-.2-.2-.4-.2-.7-.1-.3-.2-.5-.3-.7h-3.4l-.8 2c0 .1-.1.1-.1.2v.1c0 .1.2.2.5.3.3.1.6.1.9.1v.6H6v-.5zm8-3.5l-1.4-3.6-1.4 3.6H14z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-invert.png
new file mode 100644 (file)
index 0000000..b7c9996
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-invert.svg
new file mode 100644 (file)
index 0000000..b234e63
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="special-character">
+        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327a7.232 7.232 0 0 0-.19 1.7c0 .512.06 1 .18 1.46.12.46.31.87.567 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.455.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99a4.428 4.428 0 0 1-.89-1.4 4.78 4.78 0 0 1-.32-1.778c0-.82.13-1.537.394-2.15a3.97 3.97 0 0 1 1.163-1.54c.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.9.92 1.16 1.54.27.614.404 1.33.404 2.15a4.79 4.79 0 0 1-.32 1.78 4.35 4.35 0 0 1-.9 1.397c-.38.4-.83.732-1.355.99-.526.255-.708.43-1.337.523l-.092.894h.66l.448-.01.75-.034.606-.044.4-.053.534-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.698 2.002-1.365.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.07-1.186-.198-1.7a3.175 3.175 0 0 0-.66-1.326c-.31-.37-.73-.66-1.255-.867-.525-.206-1.1-.31-1.894-.31"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-progressive.png
new file mode 100644 (file)
index 0000000..1ce4549
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter-progressive.svg
new file mode 100644 (file)
index 0000000..091063f
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="special-character">
+        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327a7.232 7.232 0 0 0-.19 1.7c0 .512.06 1 .18 1.46.12.46.31.87.567 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.455.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99a4.428 4.428 0 0 1-.89-1.4 4.78 4.78 0 0 1-.32-1.778c0-.82.13-1.537.394-2.15a3.97 3.97 0 0 1 1.163-1.54c.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.9.92 1.16 1.54.27.614.404 1.33.404 2.15a4.79 4.79 0 0 1-.32 1.78 4.35 4.35 0 0 1-.9 1.397c-.38.4-.83.732-1.355.99-.526.255-.708.43-1.337.523l-.092.894h.66l.448-.01.75-.034.606-.044.4-.053.534-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.698 2.002-1.365.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.07-1.186-.198-1.7a3.175 3.175 0 0 0-.66-1.326c-.31-.37-.73-.66-1.255-.867-.525-.206-1.1-.31-1.894-.31"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter.png
new file mode 100644 (file)
index 0000000..9b02a41
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/specialCharacter.svg
new file mode 100644 (file)
index 0000000..5cba080
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="special-character">
+        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327a7.232 7.232 0 0 0-.19 1.7c0 .512.06 1 .18 1.46.12.46.31.87.567 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.455.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99a4.428 4.428 0 0 1-.89-1.4 4.78 4.78 0 0 1-.32-1.778c0-.82.13-1.537.394-2.15a3.97 3.97 0 0 1 1.163-1.54c.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.9.92 1.16 1.54.27.614.404 1.33.404 2.15a4.79 4.79 0 0 1-.32 1.78 4.35 4.35 0 0 1-.9 1.397c-.38.4-.83.732-1.355.99-.526.255-.708.43-1.337.523l-.092.894h.66l.448-.01.75-.034.606-.044.4-.053.534-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.698 2.002-1.365.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.07-1.186-.198-1.7a3.175 3.175 0 0 0-.66-1.326c-.31-.37-.73-.66-1.255-.867-.525-.206-1.1-.31-1.894-.31"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-invert.png
new file mode 100644 (file)
index 0000000..6409de2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-invert.svg
new file mode 100644 (file)
index 0000000..5fa3f49
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-progressive.png
new file mode 100644 (file)
index 0000000..049b6ca
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..d196d55
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr.png
new file mode 100644 (file)
index 0000000..2eedf9f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-ltr.svg
new file mode 100644 (file)
index 0000000..83d47c1
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-invert.png
new file mode 100644 (file)
index 0000000..e85fd44
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-invert.svg
new file mode 100644 (file)
index 0000000..2da483c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-progressive.png
new file mode 100644 (file)
index 0000000..0524649
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..43b2364
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl.png
new file mode 100644 (file)
index 0000000..0d14443
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubble-rtl.svg
new file mode 100644 (file)
index 0000000..e7dd668
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-invert.png
new file mode 100644 (file)
index 0000000..9575bdb
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-invert.svg
new file mode 100644 (file)
index 0000000..843469e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm8 3h1v3h3v1h-3v3h-1v-3h-3v-1h3V9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-progressive.png
new file mode 100644 (file)
index 0000000..19a88b5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..bd4128b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm8 3h1v3h3v1h-3v3h-1v-3h-3v-1h3V9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr.png
new file mode 100644 (file)
index 0000000..aafac18
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-ltr.svg
new file mode 100644 (file)
index 0000000..c7134c3
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm8 3h1v3h3v1h-3v3h-1v-3h-3v-1h3V9z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-invert.png
new file mode 100644 (file)
index 0000000..0520123
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-invert.svg
new file mode 100644 (file)
index 0000000..d0e2cc4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M2 6v11c0 1.7 1.3 3 3 3h17l-3-3V6H2zm8 3h1v3h3v1h-3v3h-1v-3H7v-1h3V9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-progressive.png
new file mode 100644 (file)
index 0000000..2140a27
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..a35ff20
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M2 6v11c0 1.7 1.3 3 3 3h17l-3-3V6H2zm8 3h1v3h3v1h-3v3h-1v-3H7v-1h3V9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl.png
new file mode 100644 (file)
index 0000000..feff2ba
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbleAdd-rtl.svg
new file mode 100644 (file)
index 0000000..08462e0
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M2 6v11c0 1.7 1.3 3 3 3h17l-3-3V6H2zm8 3h1v3h3v1h-3v3h-1v-3H7v-1h3V9z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-invert.png
new file mode 100644 (file)
index 0000000..24a8e4e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-invert.svg
new file mode 100644 (file)
index 0000000..a9ea6c8
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M20 9v9l2 2H8V9h12zM3 4h12v4H7v7H1l2-2V4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-progressive.png
new file mode 100644 (file)
index 0000000..8b7029b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..1c79ef6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M20 9v9l2 2H8V9h12zM3 4h12v4H7v7H1l2-2V4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr.png
new file mode 100644 (file)
index 0000000..f2e0564
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-ltr.svg
new file mode 100644 (file)
index 0000000..d683218
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M20 9v9l2 2H8V9h12zM3 4h12v4H7v7H1l2-2V4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-invert.png
new file mode 100644 (file)
index 0000000..4b9ca3a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-invert.svg
new file mode 100644 (file)
index 0000000..c8b684a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M3 9v9l-2 2h14V9H3zm17-5H8v4h8v7h6l-2-2V4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-progressive.png
new file mode 100644 (file)
index 0000000..856fd7b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..fe65227
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M3 9v9l-2 2h14V9H3zm17-5H8v4h8v7h6l-2-2V4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl.png
new file mode 100644 (file)
index 0000000..9c67f3f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/speechBubbles-rtl.svg
new file mode 100644 (file)
index 0000000..db548a4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M3 9v9l-2 2h14V9H3zm17-5H8v4h8v7h6l-2-2V4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-constructive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-constructive.png
new file mode 100644 (file)
index 0000000..1cdcf99
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-constructive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-constructive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-constructive.svg
new file mode 100644 (file)
index 0000000..407d2da
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-invert.png
new file mode 100644 (file)
index 0000000..7c949a6
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-invert.svg
new file mode 100644 (file)
index 0000000..0cbd1d0
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-progressive.png
new file mode 100644 (file)
index 0000000..1cdcf99
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star-progressive.svg
new file mode 100644 (file)
index 0000000..407d2da
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star.png
new file mode 100644 (file)
index 0000000..36b6a1f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/star.svg
new file mode 100644 (file)
index 0000000..54ba77a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-invert.png
new file mode 100644 (file)
index 0000000..9cd13be
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-invert.svg
new file mode 100644 (file)
index 0000000..40f44d7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+       <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 11.1H9v-6h6v6z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-progressive.png
new file mode 100644 (file)
index 0000000..d3c906c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop-progressive.svg
new file mode 100644 (file)
index 0000000..5b44a8d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+       <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 11.1H9v-6h6v6z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop.png
new file mode 100644 (file)
index 0000000..77dd75f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stop.svg
new file mode 100644 (file)
index 0000000..4631b85
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+       <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 11.1H9v-6h6v6z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-invert.png
new file mode 100644 (file)
index 0000000..ebabd3b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-invert.svg
new file mode 100644 (file)
index 0000000..e277ae3
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="strikethrough-a">
+        <path id="strikethrough" d="M6 11h12v1H6v-1z"/>
+        <path id="a" d="M12.666 6h-1.372l-4.48 12H8.52l1.493-4h4l1.507 4h1.666l-4.52-12zm-2.28 7l1.617-4.333L13.637 13h-3.25z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-progressive.png
new file mode 100644 (file)
index 0000000..a3189f4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a-progressive.svg
new file mode 100644 (file)
index 0000000..a957e80
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="strikethrough-a">
+        <path id="strikethrough" d="M6 11h12v1H6v-1z"/>
+        <path id="a" d="M12.666 6h-1.372l-4.48 12H8.52l1.493-4h4l1.507 4h1.666l-4.52-12zm-2.28 7l1.617-4.333L13.637 13h-3.25z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a.png
new file mode 100644 (file)
index 0000000..279d1f7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-a.svg
new file mode 100644 (file)
index 0000000..070d785
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="strikethrough-a">
+        <path id="strikethrough" d="M6 11h12v1H6v-1z"/>
+        <path id="a" d="M12.666 6h-1.372l-4.48 12H8.52l1.493-4h4l1.507 4h1.666l-4.52-12zm-2.28 7l1.617-4.333L13.637 13h-3.25z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-invert.png
new file mode 100644 (file)
index 0000000..2a29a6e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-invert.svg
new file mode 100644 (file)
index 0000000..a8301f2
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="strikethrough-s">
+        <path id="strikethrough" d="M6 12h12v1H6v-1z"/>
+        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.47 0-.962-.074-1.462-.24a7.288 7.288 0 0 1-1.562-.75l-.374-.238v2.158l.156.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.714-.148-1.202-.352-1.404-.54-.206-.202-.313-.484-.313-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.375.18V6.63s-1.19-.383-1.69-.48c-.5-.097-.983-.15-1.467-.15z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-progressive.png
new file mode 100644 (file)
index 0000000..0b215bd
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s-progressive.svg
new file mode 100644 (file)
index 0000000..f6f5331
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="strikethrough-s">
+        <path id="strikethrough" d="M6 12h12v1H6v-1z"/>
+        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.47 0-.962-.074-1.462-.24a7.288 7.288 0 0 1-1.562-.75l-.374-.238v2.158l.156.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.714-.148-1.202-.352-1.404-.54-.206-.202-.313-.484-.313-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.375.18V6.63s-1.19-.383-1.69-.48c-.5-.097-.983-.15-1.467-.15z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s.png
new file mode 100644 (file)
index 0000000..21b9baa
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-s.svg
new file mode 100644 (file)
index 0000000..171f8f3
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="strikethrough-s">
+        <path id="strikethrough" d="M6 12h12v1H6v-1z"/>
+        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.47 0-.962-.074-1.462-.24a7.288 7.288 0 0 1-1.562-.75l-.374-.238v2.158l.156.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.714-.148-1.202-.352-1.404-.54-.206-.202-.313-.484-.313-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.375.18V6.63s-1.19-.383-1.69-.48c-.5-.097-.983-.15-1.467-.15z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-invert.png
new file mode 100644 (file)
index 0000000..5ed9097
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-invert.svg
new file mode 100644 (file)
index 0000000..f34be15
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="strikethrough-y">
+        <path id="strikethrough" d="M6 11h12v1H6v-1z"/>
+        <path id="a" d="M7 6h1.724l3.288 4.935L15.276 6H17l-4.194 6.285V18h-1.612v-5.715L7 6"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-progressive.png
new file mode 100644 (file)
index 0000000..a96d906
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y-progressive.svg
new file mode 100644 (file)
index 0000000..778a941
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="strikethrough-y">
+        <path id="strikethrough" d="M6 11h12v1H6v-1z"/>
+        <path id="a" d="M7 6h1.724l3.288 4.935L15.276 6H17l-4.194 6.285V18h-1.612v-5.715L7 6"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y.png
new file mode 100644 (file)
index 0000000..d769468
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/strikethrough-y.svg
new file mode 100644 (file)
index 0000000..2fdbc87
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="strikethrough-y">
+        <path id="strikethrough" d="M6 11h12v1H6v-1z"/>
+        <path id="a" d="M7 6h1.724l3.288 4.935L15.276 6H17l-4.194 6.285V18h-1.612v-5.715L7 6"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-invert.png
new file mode 100644 (file)
index 0000000..41fabd9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-invert.svg
new file mode 100644 (file)
index 0000000..4b2040c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M4 9h12v2H4V9zm0 3h8v2H4v-2zm0-7h16v3H4V5zm16 14H4v-3h16v3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-progressive.png
new file mode 100644 (file)
index 0000000..7f4954c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..a7ddaac
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M4 9h12v2H4V9zm0 3h8v2H4v-2zm0-7h16v3H4V5zm16 14H4v-3h16v3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr.png
new file mode 100644 (file)
index 0000000..5423b36
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-ltr.svg
new file mode 100644 (file)
index 0000000..2112bb2
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M4 9h12v2H4V9zm0 3h8v2H4v-2zm0-7h16v3H4V5zm16 14H4v-3h16v3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-invert.png
new file mode 100644 (file)
index 0000000..fc723a6
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-invert.svg
new file mode 100644 (file)
index 0000000..af6e715
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M20 9H8v2h12V9zm0 3h-8v2h8v-2zm0-7H4v3h16V5zM4 19h16v-3H4v3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-progressive.png
new file mode 100644 (file)
index 0000000..5e82b68
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..e835c21
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M20 9H8v2h12V9zm0 3h-8v2h8v-2zm0-7H4v3h16V5zM4 19h16v-3H4v3z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl.png
new file mode 100644 (file)
index 0000000..0ff3d7c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeFlow-rtl.svg
new file mode 100644 (file)
index 0000000..39790a9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M20 9H8v2h12V9zm0 3h-8v2h8v-2zm0-7H4v3h16V5zM4 19h16v-3H4v3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu-invert.png
new file mode 100644 (file)
index 0000000..4dd5fd8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu-invert.svg
new file mode 100644 (file)
index 0000000..68085f9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M20 19H4v-2h16v2zM20 15H4v-2h16v2zM20 11H4V9h16v2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu-progressive.png
new file mode 100644 (file)
index 0000000..6d0aa12
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu-progressive.svg
new file mode 100644 (file)
index 0000000..7bb2d16
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M20 19H4v-2h16v2zM20 15H4v-2h16v2zM20 11H4V9h16v2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu.png
new file mode 100644 (file)
index 0000000..e031527
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSideMenu.svg
new file mode 100644 (file)
index 0000000..e63a7d5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M20 19H4v-2h16v2zM20 15H4v-2h16v2zM20 11H4V9h16v2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-invert.png
new file mode 100644 (file)
index 0000000..453cb73
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-invert.svg
new file mode 100644 (file)
index 0000000..91fcd8f
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M20 11H4V9h16v2zM4 12h8v2H4v-2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-progressive.png
new file mode 100644 (file)
index 0000000..cc2cd8c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..59342a5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M20 11H4V9h16v2zM4 12h8v2H4v-2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr.png
new file mode 100644 (file)
index 0000000..ce15bd8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-ltr.svg
new file mode 100644 (file)
index 0000000..767d6cd
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M20 11H4V9h16v2zM4 12h8v2H4v-2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-invert.png
new file mode 100644 (file)
index 0000000..458015c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-invert.svg
new file mode 100644 (file)
index 0000000..dae554e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M4 11h16V9H4v2zm16 1h-8v2h8v-2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-progressive.png
new file mode 100644 (file)
index 0000000..9180978
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..6b94663
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M4 11h16V9H4v2zm16 1h-8v2h8v-2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl.png
new file mode 100644 (file)
index 0000000..82ca2bf
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeSummary-rtl.svg
new file mode 100644 (file)
index 0000000..4d16337
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M4 11h16V9H4v2zm16 1h-8v2h8v-2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-invert.png
new file mode 100644 (file)
index 0000000..629ea35
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-invert.svg
new file mode 100644 (file)
index 0000000..7b2ec17
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M17 13H4v-3h13v3zm-5 6H4v-3h8v3zM4 7V4h16v3H4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-progressive.png
new file mode 100644 (file)
index 0000000..cee45e8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..d027539
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M17 13H4v-3h13v3zm-5 6H4v-3h8v3zM4 7V4h16v3H4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr.png
new file mode 100644 (file)
index 0000000..b482d3e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-ltr.svg
new file mode 100644 (file)
index 0000000..d7c202e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M17 13H4v-3h13v3zm-5 6H4v-3h8v3zM4 7V4h16v3H4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-invert.png
new file mode 100644 (file)
index 0000000..f81e503
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-invert.svg
new file mode 100644 (file)
index 0000000..2e75158
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M7 13h13v-3H7v3zm5 6h8v-3h-8v3zm8-12V4H4v3h16z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-progressive.png
new file mode 100644 (file)
index 0000000..424aa99
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..3c27eaf
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M7 13h13v-3H7v3zm5 6h8v-3h-8v3zm8-12V4H4v3h16z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl.png
new file mode 100644 (file)
index 0000000..516bc2c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/stripeToC-rtl.svg
new file mode 100644 (file)
index 0000000..0859be6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M7 13h13v-3H7v3zm5 6h8v-3h-8v3zm8-12V4H4v3h16z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-invert.png
new file mode 100644 (file)
index 0000000..f7f291e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-invert.svg
new file mode 100644 (file)
index 0000000..b6f5d6d
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path id="x" d="M14 9l-2.354 3.406L14 16h-1.2L11 13.25 9.2 16H8l2.403-3.662L8 9h1.188l1.857 2.494L12.797 9H14z"/>
+    <path d="M18 13l-1 1v3l1 1h-1l-.527-.46L16 18h-1l1-1v-3l-1-1h1l.485.497L17 13z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-progressive.png
new file mode 100644 (file)
index 0000000..55df817
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..11dc32f
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path id="x" d="M14 9l-2.354 3.406L14 16h-1.2L11 13.25 9.2 16H8l2.403-3.662L8 9h1.188l1.857 2.494L12.797 9H14z"/>
+    <path d="M18 13l-1 1v3l1 1h-1l-.527-.46L16 18h-1l1-1v-3l-1-1h1l.485.497L17 13z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr.png
new file mode 100644 (file)
index 0000000..c2cf4cf
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-ltr.svg
new file mode 100644 (file)
index 0000000..fbb0c3c
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path id="x" d="M14 9l-2.354 3.406L14 16h-1.2L11 13.25 9.2 16H8l2.403-3.662L8 9h1.188l1.857 2.494L12.797 9H14z"/>
+    <path d="M18 13l-1 1v3l1 1h-1l-.527-.46L16 18h-1l1-1v-3l-1-1h1l.485.497L17 13z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-invert.png
new file mode 100644 (file)
index 0000000..56ad252
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-invert.svg
new file mode 100644 (file)
index 0000000..b1608f9
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path id="x" d="M12 9l2.354 3.406L12 16h1.2l1.8-2.75L16.8 16H18l-2.403-3.662L18 9h-1.188l-1.857 2.494L13.203 9H12z"/>
+    <path d="M8 13l1 1v3l-1 1h1l.527-.46L10 18h1l-1-1v-3l1-1h-1l-.485.497L9 13z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-progressive.png
new file mode 100644 (file)
index 0000000..bf343f1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..f0c5d31
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path id="x" d="M12 9l2.354 3.406L12 16h1.2l1.8-2.75L16.8 16H18l-2.403-3.662L18 9h-1.188l-1.857 2.494L13.203 9H12z"/>
+    <path d="M8 13l1 1v3l-1 1h1l.527-.46L10 18h1l-1-1v-3l1-1h-1l-.485.497L9 13z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl.png
new file mode 100644 (file)
index 0000000..b1ee51b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subscript-rtl.svg
new file mode 100644 (file)
index 0000000..91a71ec
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path id="x" d="M12 9l2.354 3.406L12 16h1.2l1.8-2.75L16.8 16H18l-2.403-3.662L18 9h-1.188l-1.857 2.494L13.203 9H12z"/>
+    <path d="M8 13l1 1v3l-1 1h1l.527-.46L10 18h1l-1-1v-3l1-1h-1l-.485.497L9 13z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-invert.png
new file mode 100644 (file)
index 0000000..4e58b70
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-invert.svg
new file mode 100644 (file)
index 0000000..d76eb3c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+       <path d="M18 13H6v-2h12"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-progressive.png
new file mode 100644 (file)
index 0000000..1732972
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract-progressive.svg
new file mode 100644 (file)
index 0000000..24795ac
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+       <path d="M18 13H6v-2h12"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract.png
new file mode 100644 (file)
index 0000000..bd719cb
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/subtract.svg
new file mode 100644 (file)
index 0000000..a79f0b5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+       <path d="M18 13H6v-2h12"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr-invert.png
new file mode 100644 (file)
index 0000000..2bc944a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr-invert.svg
new file mode 100644 (file)
index 0000000..498df82
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9s-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4s.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4s-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9s.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8s.1-.6.3-.8z"/>
+    <circle cx="12" cy="11" r="4"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr-progressive.png
new file mode 100644 (file)
index 0000000..dbe14b5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..afd390c
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9s-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4s.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4s-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9s.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8s.1-.6.3-.8z"/>
+    <circle cx="12" cy="11" r="4"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr.png
new file mode 100644 (file)
index 0000000..0c00745
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-ltr.svg
new file mode 100644 (file)
index 0000000..4bde183
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9s-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4s.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4s-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9s.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8s.1-.6.3-.8z"/>
+    <circle cx="12" cy="11" r="4"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl-invert.png
new file mode 100644 (file)
index 0000000..7ac54ff
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl-invert.svg
new file mode 100644 (file)
index 0000000..f932701
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z"/>
+    <circle cx="12" cy="11" r="4" transform="matrix(-1 0 0 1 24 0)"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl-progressive.png
new file mode 100644 (file)
index 0000000..5ee10ee
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..72754d4
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z"/>
+    <circle cx="12" cy="11" r="4" transform="matrix(-1 0 0 1 24 0)"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl.png
new file mode 100644 (file)
index 0000000..77c7806
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/sun-rtl.svg
new file mode 100644 (file)
index 0000000..868334e
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z"/>
+    <circle cx="12" cy="11" r="4" transform="matrix(-1 0 0 1 24 0)"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-invert.png
new file mode 100644 (file)
index 0000000..abb7229
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-invert.svg
new file mode 100644 (file)
index 0000000..430abf0
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path id="x" d="M14 9l-2.354 3.406L14 16h-1.2L11 13.25 9.2 16H8l2.403-3.662L8 9h1.188l1.857 2.494L12.797 9H14z"/>
+    <path d="M18 7l-1 1v3l1 1h-1l-.527-.46L16 12h-1l1-1V8l-1-1h1l.485.497L17 7z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-progressive.png
new file mode 100644 (file)
index 0000000..37c45c0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..80495b8
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path id="x" d="M14 9l-2.354 3.406L14 16h-1.2L11 13.25 9.2 16H8l2.403-3.662L8 9h1.188l1.857 2.494L12.797 9H14z"/>
+    <path d="M18 7l-1 1v3l1 1h-1l-.527-.46L16 12h-1l1-1V8l-1-1h1l.485.497L17 7z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr.png
new file mode 100644 (file)
index 0000000..8df4609
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-ltr.svg
new file mode 100644 (file)
index 0000000..45abfda
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path id="x" d="M14 9l-2.354 3.406L14 16h-1.2L11 13.25 9.2 16H8l2.403-3.662L8 9h1.188l1.857 2.494L12.797 9H14z"/>
+    <path d="M18 7l-1 1v3l1 1h-1l-.527-.46L16 12h-1l1-1V8l-1-1h1l.485.497L17 7z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-invert.png
new file mode 100644 (file)
index 0000000..ee76ff4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-invert.svg
new file mode 100644 (file)
index 0000000..ea8ea9c
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path id="x" d="M12 9l2.354 3.406L12 16h1.2l1.8-2.75L16.8 16H18l-2.403-3.662L18 9h-1.188l-1.857 2.494L13.203 9H12z"/>
+    <path d="M8 7l1 1v3l-1 1h1l.527-.46L10 12h1l-1-1V8l1-1h-1l-.485.497L9 7z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-progressive.png
new file mode 100644 (file)
index 0000000..2c63a82
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..e742990
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path id="x" d="M12 9l2.354 3.406L12 16h1.2l1.8-2.75L16.8 16H18l-2.403-3.662L18 9h-1.188l-1.857 2.494L13.203 9H12z"/>
+    <path d="M8 7l1 1v3l-1 1h1l.527-.46L10 12h1l-1-1V8l1-1h-1l-.485.497L9 7z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl.png
new file mode 100644 (file)
index 0000000..48bfd68
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/superscript-rtl.svg
new file mode 100644 (file)
index 0000000..33b5814
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path id="x" d="M12 9l2.354 3.406L12 16h1.2l1.8-2.75L16.8 16H18l-2.403-3.662L18 9h-1.188l-1.857 2.494L13.203 9H12z"/>
+    <path d="M8 7l1 1v3l-1 1h1l.527-.46L10 12h1l-1-1V8l1-1h-1l-.485.497L9 7z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption-invert.png
new file mode 100644 (file)
index 0000000..9d50a42
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption-invert.svg
new file mode 100644 (file)
index 0000000..360fbe1
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="table-caption">
+        <path id="caption" d="M6 6h12v3H6z"/>
+        <path id="table" d="M4 10v7h16v-7H4zm1 1h4v2H5v-2zm5 0h4v2h-4v-2zm5 0h4v2h-4v-2zM5 14h4v2H5v-2zm5 0h4v2h-4v-2zm5 0h4v2h-4v-2z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption-progressive.png
new file mode 100644 (file)
index 0000000..ef657ee
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption-progressive.svg
new file mode 100644 (file)
index 0000000..02faf85
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="table-caption">
+        <path id="caption" d="M6 6h12v3H6z"/>
+        <path id="table" d="M4 10v7h16v-7H4zm1 1h4v2H5v-2zm5 0h4v2h-4v-2zm5 0h4v2h-4v-2zM5 14h4v2H5v-2zm5 0h4v2h-4v-2zm5 0h4v2h-4v-2z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption.png
new file mode 100644 (file)
index 0000000..80b474d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-caption.svg
new file mode 100644 (file)
index 0000000..6b7edc6
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="table-caption">
+        <path id="caption" d="M6 6h12v3H6z"/>
+        <path id="table" d="M4 10v7h16v-7H4zm1 1h4v2H5v-2zm5 0h4v2h-4v-2zm5 0h4v2h-4v-2zM5 14h4v2H5v-2zm5 0h4v2h-4v-2zm5 0h4v2h-4v-2z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr-invert.png
new file mode 100644 (file)
index 0000000..b97ac0a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr-invert.svg
new file mode 100644 (file)
index 0000000..9a93e24
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="table-insert-column-ltr">
+        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
+        <path d="M5 5h2v14H5z" id="column"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr-progressive.png
new file mode 100644 (file)
index 0000000..5565c15
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..1f560bb
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="table-insert-column-ltr">
+        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
+        <path d="M5 5h2v14H5z" id="column"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr.png
new file mode 100644 (file)
index 0000000..fe3eb18
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-ltr.svg
new file mode 100644 (file)
index 0000000..a67ed20
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="table-insert-column-ltr">
+        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
+        <path d="M5 5h2v14H5z" id="column"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl-invert.png
new file mode 100644 (file)
index 0000000..c10abc5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl-invert.svg
new file mode 100644 (file)
index 0000000..7c54e2c
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="table-insert-column-rtl">
+        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
+        <path d="M17 5h2v14h-2z" id="column"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl-progressive.png
new file mode 100644 (file)
index 0000000..d974a07
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..3e178ee
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="table-insert-column-rtl">
+        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
+        <path d="M17 5h2v14h-2z" id="column"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl.png
new file mode 100644 (file)
index 0000000..ddaafe9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-column-rtl.svg
new file mode 100644 (file)
index 0000000..dee782e
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="table-insert-column-rtl">
+        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
+        <path d="M17 5h2v14h-2z" id="column"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after-invert.png
new file mode 100644 (file)
index 0000000..ea1a5d8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after-invert.svg
new file mode 100644 (file)
index 0000000..2df3cfc
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="table-insert-row-after">
+        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
+        <path d="M5 17h14v2H5z" id="row"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after-progressive.png
new file mode 100644 (file)
index 0000000..ba1e54c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after-progressive.svg
new file mode 100644 (file)
index 0000000..f85c5a3
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="table-insert-row-after">
+        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
+        <path d="M5 17h14v2H5z" id="row"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after.png
new file mode 100644 (file)
index 0000000..31a2306
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-after.svg
new file mode 100644 (file)
index 0000000..ad9d86d
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="table-insert-row-after">
+        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
+        <path d="M5 17h14v2H5z" id="row"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before-invert.png
new file mode 100644 (file)
index 0000000..a54f05c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before-invert.svg
new file mode 100644 (file)
index 0000000..5d529f1
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="table-insert-row-before">
+        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
+        <path d="M5 5h14v2H5z" id="row"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before-progressive.png
new file mode 100644 (file)
index 0000000..0a54444
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before-progressive.svg
new file mode 100644 (file)
index 0000000..f26feef
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="table-insert-row-before">
+        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
+        <path d="M5 5h14v2H5z" id="row"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before.png
new file mode 100644 (file)
index 0000000..2477475
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-insert-row-before.svg
new file mode 100644 (file)
index 0000000..e9dfe04
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="table-insert-row-before">
+        <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/>
+        <path d="M5 5h14v2H5z" id="row"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-invert.png
new file mode 100644 (file)
index 0000000..4c19203
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-invert.svg
new file mode 100644 (file)
index 0000000..85a3f97
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="table-insert">
+        <path id="table" d="M4 6v11h15V6zm1 3h6v3H5zm7 0h6v3h-6zm-7 4h6v3H5zm7 0h6v3h-6z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells-invert.png
new file mode 100644 (file)
index 0000000..b24537d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells-invert.svg
new file mode 100644 (file)
index 0000000..102a686
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="table-merge-cells">
+        <g id="merge-cell-left">
+            <path id="cell-border" d="M4 7v9h7v-3l-1 .834V15H5V8h5v1.167L11 10V7z"/>
+            <path id="arrow" d="M8 9v2H6v1h2v2l3-2.5z"/>
+        </g>
+        <use id="merge-cell-right" xlink:href="#merge-cell-left" transform="matrix(-1 0 0 1 24 0)"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells-progressive.png
new file mode 100644 (file)
index 0000000..a75b2a0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells-progressive.svg
new file mode 100644 (file)
index 0000000..c2c5a7e
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="table-merge-cells">
+        <g id="merge-cell-left">
+            <path id="cell-border" d="M4 7v9h7v-3l-1 .834V15H5V8h5v1.167L11 10V7z"/>
+            <path id="arrow" d="M8 9v2H6v1h2v2l3-2.5z"/>
+        </g>
+        <use id="merge-cell-right" xlink:href="#merge-cell-left" transform="matrix(-1 0 0 1 24 0)"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells.png
new file mode 100644 (file)
index 0000000..e6b2da3
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-merge-cells.svg
new file mode 100644 (file)
index 0000000..3ffb9e5
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
+    <g id="table-merge-cells">
+        <g id="merge-cell-left">
+            <path id="cell-border" d="M4 7v9h7v-3l-1 .834V15H5V8h5v1.167L11 10V7z"/>
+            <path id="arrow" d="M8 9v2H6v1h2v2l3-2.5z"/>
+        </g>
+        <use id="merge-cell-right" xlink:href="#merge-cell-left" transform="matrix(-1 0 0 1 24 0)"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-progressive.png
new file mode 100644 (file)
index 0000000..b364a8f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table-progressive.svg
new file mode 100644 (file)
index 0000000..3441e65
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="table-insert">
+        <path id="table" d="M4 6v11h15V6zm1 3h6v3H5zm7 0h6v3h-6zm-7 4h6v3H5zm7 0h6v3h-6z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table.png
new file mode 100644 (file)
index 0000000..f4008f6
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/table.svg
new file mode 100644 (file)
index 0000000..b5733fb
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="table-insert">
+        <path id="table" d="M4 6v11h15V6zm1 3h6v3H5zm7 0h6v3h-6zm-7 4h6v3H5zm7 0h6v3h-6z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-constructive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-constructive.png
new file mode 100644 (file)
index 0000000..6372f39
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-constructive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-constructive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-constructive.svg
new file mode 100644 (file)
index 0000000..ce04687
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-destructive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-destructive.png
new file mode 100644 (file)
index 0000000..cf85c4d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-destructive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-destructive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-destructive.svg
new file mode 100644 (file)
index 0000000..cb00c1c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
+    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-invert.png
new file mode 100644 (file)
index 0000000..fd5956c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-invert.svg
new file mode 100644 (file)
index 0000000..a4f38b4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-progressive.png
new file mode 100644 (file)
index 0000000..6372f39
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-progressive.svg
new file mode 100644 (file)
index 0000000..ce04687
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-warning.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-warning.png
new file mode 100644 (file)
index 0000000..24dff07
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-warning.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-warning.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag-warning.svg
new file mode 100644 (file)
index 0000000..bf31a97
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ff5d00">
+    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag.png
new file mode 100644 (file)
index 0000000..82461ef
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tag.svg
new file mode 100644 (file)
index 0000000..7a211a3
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-invert.png
new file mode 100644 (file)
index 0000000..cba38d2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-invert.svg
new file mode 100644 (file)
index 0000000..4d0e4a5
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="template-add">
+        <path id="add" d="M23 7h-4V3h-2v4h-4v2h4v4h2V9h4z"/>
+        <path id="template" d="M18 14v4H6c-1.1 0-2-.9-2-2V8h8V7H3v9c0 1.7 1.3 3 3 3h13v-5z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-progressive.png
new file mode 100644 (file)
index 0000000..7034110
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..8b6325e
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="template-add">
+        <path id="add" d="M23 7h-4V3h-2v4h-4v2h4v4h2V9h4z"/>
+        <path id="template" d="M18 14v4H6c-1.1 0-2-.9-2-2V8h8V7H3v9c0 1.7 1.3 3 3 3h13v-5z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr.png
new file mode 100644 (file)
index 0000000..f3ce49e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-ltr.svg
new file mode 100644 (file)
index 0000000..8cd95e0
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="template-add">
+        <path id="add" d="M23 7h-4V3h-2v4h-4v2h4v4h2V9h4z"/>
+        <path id="template" d="M18 14v4H6c-1.1 0-2-.9-2-2V8h8V7H3v9c0 1.7 1.3 3 3 3h13v-5z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-invert.png
new file mode 100644 (file)
index 0000000..eb8d08d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-invert.svg
new file mode 100644 (file)
index 0000000..3277986
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="template-add">
+        <path id="add" d="M1 7h4V3h2v4h4v2H7v4H5V9H1z"/>
+        <path id="template" d="M6 14v4h12c1.1 0 2-.9 2-2V8h-8V7h9v9c0 1.7-1.3 3-3 3H5v-5z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-progressive.png
new file mode 100644 (file)
index 0000000..7514278
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..ea7a4ce
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="template-add">
+        <path id="add" d="M1 7h4V3h2v4h4v2H7v4H5V9H1z"/>
+        <path id="template" d="M6 14v4h12c1.1 0 2-.9 2-2V8h-8V7h9v9c0 1.7-1.3 3-3 3H5v-5z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl.png
new file mode 100644 (file)
index 0000000..448caf4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/templateAdd-rtl.svg
new file mode 100644 (file)
index 0000000..62b30f5
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="template-add">
+        <path id="add" d="M1 7h4V3h2v4h4v2H7v4H5V9H1z"/>
+        <path id="template" d="M6 14v4h12c1.1 0 2-.9 2-2V8h-8V7h9v9c0 1.7-1.3 3-3 3H5v-5z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright-invert.png
new file mode 100644 (file)
index 0000000..44394d9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright-invert.svg
new file mode 100644 (file)
index 0000000..8824e9c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M7 7H5V6h2l.47.5L8 6h2v1H8v10h2v1H8l-.5-.53L7 18H5v-1h2zm6.976 9v-2H11v-4h2.976V8.044L20 12.022z" id="text-dir-ltr"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright-progressive.png
new file mode 100644 (file)
index 0000000..4e9b0fc
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright-progressive.svg
new file mode 100644 (file)
index 0000000..968e13b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M7 7H5V6h2l.47.5L8 6h2v1H8v10h2v1H8l-.5-.53L7 18H5v-1h2zm6.976 9v-2H11v-4h2.976V8.044L20 12.022z" id="text-dir-ltr"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright.png
new file mode 100644 (file)
index 0000000..fede39a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-lefttoright.svg
new file mode 100644 (file)
index 0000000..83dd769
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M7 7H5V6h2l.47.5L8 6h2v1H8v10h2v1H8l-.5-.53L7 18H5v-1h2zm6.976 9v-2H11v-4h2.976V8.044L20 12.022z" id="text-dir-ltr"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft-invert.png
new file mode 100644 (file)
index 0000000..d5b78c2
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft-invert.svg
new file mode 100644 (file)
index 0000000..12544d9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M17 17h2v1h-2l-.47-.5-.53.5h-2v-1h2V7h-2V6h2l.5.53L17 6h2v1h-2zm-6.976-9v2H13v4h-2.976v1.956L4 11.978z" id="text-dir-rtl"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft-progressive.png
new file mode 100644 (file)
index 0000000..955a65f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft-progressive.svg
new file mode 100644 (file)
index 0000000..73ebe60
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M17 17h2v1h-2l-.47-.5-.53.5h-2v-1h2V7h-2V6h2l.5.53L17 6h2v1h-2zm-6.976-9v2H13v4h-2.976v1.956L4 11.978z" id="text-dir-rtl"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft.png
new file mode 100644 (file)
index 0000000..9f60ed5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-dir-righttoleft.svg
new file mode 100644 (file)
index 0000000..78cb85b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M17 17h2v1h-2l-.47-.5-.53.5h-2v-1h2V7h-2V6h2l.5.53L17 6h2v1h-2zm-6.976-9v2H13v4h-2.976v1.956L4 11.978z" id="text-dir-rtl"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style-invert.png
new file mode 100644 (file)
index 0000000..f173ad7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style-invert.svg
new file mode 100644 (file)
index 0000000..318c168
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="text-style">
+        <path id="a" d="M15.296 18h2.79l-1.14-12h-2.79L6 18h2.79l2.038-3h4.183l.29 3zm-3.11-5L14.5 9.6l.323 3.4H12.19z"/>
+        <path id="underline" d="M6 19h12v1H6v-1z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style-progressive.png
new file mode 100644 (file)
index 0000000..5cbdfa4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style-progressive.svg
new file mode 100644 (file)
index 0000000..6f17920
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="text-style">
+        <path id="a" d="M15.296 18h2.79l-1.14-12h-2.79L6 18h2.79l2.038-3h4.183l.29 3zm-3.11-5L14.5 9.6l.323 3.4H12.19z"/>
+        <path id="underline" d="M6 19h12v1H6v-1z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style.png
new file mode 100644 (file)
index 0000000..65ab476
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/text-style.svg
new file mode 100644 (file)
index 0000000..466672e
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="text-style">
+        <path id="a" d="M15.296 18h2.79l-1.14-12h-2.79L6 18h2.79l2.038-3h4.183l.29 3zm-3.11-5L14.5 9.6l.323 3.4H12.19z"/>
+        <path id="underline" d="M6 19h12v1H6v-1z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-destructive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-destructive.png
new file mode 100644 (file)
index 0000000..c367e77
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-destructive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-destructive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-destructive.svg
new file mode 100644 (file)
index 0000000..eb52343
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
+    <path d="M6 8c0-1.1.9-2 2-2h2l1-1h2l1 1h2c1.1 0 2 .9 2 2H6zm1 1h10l-1 11H8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-invert.png
new file mode 100644 (file)
index 0000000..04eaa41
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-invert.svg
new file mode 100644 (file)
index 0000000..f84bfe9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M6 8c0-1.1.9-2 2-2h2l1-1h2l1 1h2c1.1 0 2 .9 2 2H6zm1 1h10l-1 11H8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-progressive.png
new file mode 100644 (file)
index 0000000..478c702
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash-progressive.svg
new file mode 100644 (file)
index 0000000..1099f6a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M6 8c0-1.1.9-2 2-2h2l1-1h2l1 1h2c1.1 0 2 .9 2 2H6zm1 1h10l-1 11H8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash.png
new file mode 100644 (file)
index 0000000..b3e899d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/trash.svg
new file mode 100644 (file)
index 0000000..76502dc
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M6 8c0-1.1.9-2 2-2h2l1-1h2l1 1h2c1.1 0 2 .9 2 2H6zm1 1h10l-1 11H8z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-invert.png
new file mode 100644 (file)
index 0000000..6196d39
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-invert.svg
new file mode 100644 (file)
index 0000000..28442a3
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M3 13.35l1.8-7.2c.2-.996.81-1.8 1.8-1.8h10.8c.99 0 1.6.867 1.8 1.8l1.8 7.2v4.5c0 .99-.81 1.8-1.8 1.8H4.8c-.99 0-1.8-.81-1.8-1.8v-4.5zm6.96 1.8h4.08c-.49.557-1.212.9-2.04.9a2.68 2.68 0 0 1-2.04-.9h4.08c.414-.472.66-1.098.66-1.8h4.14l-1.44-7.2H6.6l-1.44 7.2H9.3c0 .702.246 1.328.66 1.8z" id="tray"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-progressive.png
new file mode 100644 (file)
index 0000000..f655449
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray-progressive.svg
new file mode 100644 (file)
index 0000000..7b079ea
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M3 13.35l1.8-7.2c.2-.996.81-1.8 1.8-1.8h10.8c.99 0 1.6.867 1.8 1.8l1.8 7.2v4.5c0 .99-.81 1.8-1.8 1.8H4.8c-.99 0-1.8-.81-1.8-1.8v-4.5zm6.96 1.8h4.08c-.49.557-1.212.9-2.04.9a2.68 2.68 0 0 1-2.04-.9h4.08c.414-.472.66-1.098.66-1.8h4.14l-1.44-7.2H6.6l-1.44 7.2H9.3c0 .702.246 1.328.66 1.8z" id="tray"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray.png
new file mode 100644 (file)
index 0000000..e5c5e8f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/tray.svg
new file mode 100644 (file)
index 0000000..d7ab69b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M3 13.35l1.8-7.2c.2-.996.81-1.8 1.8-1.8h10.8c.99 0 1.6.867 1.8 1.8l1.8 7.2v4.5c0 .99-.81 1.8-1.8 1.8H4.8c-.99 0-1.8-.81-1.8-1.8v-4.5zm6.96 1.8h4.08c-.49.557-1.212.9-2.04.9a2.68 2.68 0 0 1-2.04-.9h4.08c.414-.472.66-1.098.66-1.8h4.14l-1.44-7.2H6.6l-1.44 7.2H9.3c0 .702.246 1.328.66 1.8z" id="tray"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr-invert.png
new file mode 100644 (file)
index 0000000..7426f56
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr-invert.svg
new file mode 100644 (file)
index 0000000..148da47
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M17 11v2h-2l3.6 3.6c.9-1.3 1.4-2.9 1.4-4.6 0-4.4-3.6-8-8-8-1.7 0-3.3.5-4.6 1.4L13 11h4zM4 4L3 5l2.4 2.4C4.5 8.7 4 10.3 4 12c0 4.4 3.6 8 8 8 1.7 0 3.3-.5 4.6-1.4L19 21l1-1L4 4zm3 9v-2h2l2 2H7z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr-progressive.png
new file mode 100644 (file)
index 0000000..d797f3e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..e80e6ae
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M17 11v2h-2l3.6 3.6c.9-1.3 1.4-2.9 1.4-4.6 0-4.4-3.6-8-8-8-1.7 0-3.3.5-4.6 1.4L13 11h4zM4 4L3 5l2.4 2.4C4.5 8.7 4 10.3 4 12c0 4.4 3.6 8 8 8 1.7 0 3.3-.5 4.6-1.4L19 21l1-1L4 4zm3 9v-2h2l2 2H7z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr.png
new file mode 100644 (file)
index 0000000..640bb2a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-ltr.svg
new file mode 100644 (file)
index 0000000..160219c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M17 11v2h-2l3.6 3.6c.9-1.3 1.4-2.9 1.4-4.6 0-4.4-3.6-8-8-8-1.7 0-3.3.5-4.6 1.4L13 11h4zM4 4L3 5l2.4 2.4C4.5 8.7 4 10.3 4 12c0 4.4 3.6 8 8 8 1.7 0 3.3-.5 4.6-1.4L19 21l1-1L4 4zm3 9v-2h2l2 2H7z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl-invert.png
new file mode 100644 (file)
index 0000000..a02e2e0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl-invert.svg
new file mode 100644 (file)
index 0000000..8aace96
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M7 11v2h2l-3.6 3.6C4.5 15.3 4 13.7 4 12c0-4.4 3.6-8 8-8 1.7 0 3.3.5 4.6 1.4L11 11H7zm13-7l1 1-2.4 2.4c.9 1.3 1.4 2.9 1.4 4.6 0 4.4-3.6 8-8 8-1.7 0-3.3-.5-4.6-1.4L5 21l-1-1L20 4zm-3 9v-2h-2l-2 2h4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl-progressive.png
new file mode 100644 (file)
index 0000000..4d062cb
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..1337e16
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M7 11v2h2l-3.6 3.6C4.5 15.3 4 13.7 4 12c0-4.4 3.6-8 8-8 1.7 0 3.3.5 4.6 1.4L11 11H7zm13-7l1 1-2.4 2.4c.9 1.3 1.4 2.9 1.4 4.6 0 4.4-3.6 8-8 8-1.7 0-3.3-.5-4.6-1.4L5 21l-1-1L20 4zm-3 9v-2h-2l-2 2h4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl.png
new file mode 100644 (file)
index 0000000..2475b06
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unBlock-rtl.svg
new file mode 100644 (file)
index 0000000..90fe46a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M7 11v2h2l-3.6 3.6C4.5 15.3 4 13.7 4 12c0-4.4 3.6-8 8-8 1.7 0 3.3.5 4.6 1.4L11 11H7zm13-7l1 1-2.4 2.4c.9 1.3 1.4 2.9 1.4 4.6 0 4.4-3.6 8-8 8-1.7 0-3.3-.5-4.6-1.4L5 21l-1-1L20 4zm-3 9v-2h-2l-2 2h4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip-invert.png
new file mode 100644 (file)
index 0000000..6535d43
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip-invert.svg
new file mode 100644 (file)
index 0000000..dcc4ebf
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M5 21l7-6 7 6V3H5z" fill-rule="evenodd"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip-progressive.png
new file mode 100644 (file)
index 0000000..6177f6b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip-progressive.svg
new file mode 100644 (file)
index 0000000..92e965b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M5 21l7-6 7 6V3H5z" fill-rule="evenodd"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip.png
new file mode 100644 (file)
index 0000000..37916ef
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unClip.svg
new file mode 100644 (file)
index 0000000..68459db
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M5 21l7-6 7 6V3H5z" fill-rule="evenodd"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-invert.png
new file mode 100644 (file)
index 0000000..8338017
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-invert.svg
new file mode 100644 (file)
index 0000000..dba18af
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+       <path d="M19.9 19.6l-16-16-1.1 1.1L6 7.9V20h1v-7c.6-.6 2-.8 3.4-.7l8.4 8.4 1.1-1.1zM17 14V7c-.7.7-2.7.9-4 .5V6c-1.2-1.3-3.9-1.3-5.4-.5l8.9 9c.3-.2.4-.3.5-.5z"/>
+</g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-progressive.png
new file mode 100644 (file)
index 0000000..bf1a6e0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..e84befe
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+       <path d="M19.9 19.6l-16-16-1.1 1.1L6 7.9V20h1v-7c.6-.6 2-.8 3.4-.7l8.4 8.4 1.1-1.1zM17 14V7c-.7.7-2.7.9-4 .5V6c-1.2-1.3-3.9-1.3-5.4-.5l8.9 9c.3-.2.4-.3.5-.5z"/>
+</g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr.png
new file mode 100644 (file)
index 0000000..780cb87
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-ltr.svg
new file mode 100644 (file)
index 0000000..4bbd61c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+       <path d="M19.9 19.6l-16-16-1.1 1.1L6 7.9V20h1v-7c.6-.6 2-.8 3.4-.7l8.4 8.4 1.1-1.1zM17 14V7c-.7.7-2.7.9-4 .5V6c-1.2-1.3-3.9-1.3-5.4-.5l8.9 9c.3-.2.4-.3.5-.5z"/>
+</svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-invert.png
new file mode 100644 (file)
index 0000000..4f9c3ad
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-invert.svg
new file mode 100644 (file)
index 0000000..88256ec
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+       <path d="M3.5 19.6l16-16 1.1 1.1-3.2 3.2V20h-1v-7c-.6-.6-2-.8-3.4-.7l-8.4 8.4-1.1-1.1zM6.3 14V7c.7.7 2.7.9 4 .5V6c1.2-1.3 3.9-1.3 5.4-.5l-8.9 9c-.3-.2-.4-.3-.5-.5z"/>
+</g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-progressive.png
new file mode 100644 (file)
index 0000000..4abe9c8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..fcb4d11
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+       <path d="M3.5 19.6l16-16 1.1 1.1-3.2 3.2V20h-1v-7c-.6-.6-2-.8-3.4-.7l-8.4 8.4-1.1-1.1zM6.3 14V7c.7.7 2.7.9 4 .5V6c1.2-1.3 3.9-1.3 5.4-.5l-8.9 9c-.3-.2-.4-.3-.5-.5z"/>
+</g></svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl.png
new file mode 100644 (file)
index 0000000..fa3696a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unFlag-rtl.svg
new file mode 100644 (file)
index 0000000..5d94425
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+       <path d="M3.5 19.6l16-16 1.1 1.1-3.2 3.2V20h-1v-7c-.6-.6-2-.8-3.4-.7l-8.4 8.4-1.1-1.1zM6.3 14V7c.7.7 2.7.9 4 .5V6c1.2-1.3 3.9-1.3 5.4-.5l-8.9 9c-.3-.2-.4-.3-.5-.5z"/>
+</svg>
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-destructive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-destructive.png
new file mode 100644 (file)
index 0000000..2cb27f1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-destructive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-destructive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-destructive.svg
new file mode 100644 (file)
index 0000000..cf82e1f
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
+    <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-invert.png
new file mode 100644 (file)
index 0000000..68c1437
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-invert.svg
new file mode 100644 (file)
index 0000000..3c6f966
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-progressive.png
new file mode 100644 (file)
index 0000000..6f6a5d4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..55b8cc3
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr.png
new file mode 100644 (file)
index 0000000..e6d9aae
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-ltr.svg
new file mode 100644 (file)
index 0000000..25e0860
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-destructive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-destructive.png
new file mode 100644 (file)
index 0000000..fac51b9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-destructive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-destructive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-destructive.svg
new file mode 100644 (file)
index 0000000..d70f3a9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33">
+    <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-invert.png
new file mode 100644 (file)
index 0000000..d50b4c7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-invert.svg
new file mode 100644 (file)
index 0000000..bfe53ad
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-progressive.png
new file mode 100644 (file)
index 0000000..a7e7d32
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..20e4afa
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl.png
new file mode 100644 (file)
index 0000000..0529c16
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unLock-rtl.svg
new file mode 100644 (file)
index 0000000..577b570
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-constructive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-constructive.png
new file mode 100644 (file)
index 0000000..580d694
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-constructive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-constructive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-constructive.svg
new file mode 100644 (file)
index 0000000..7265f4a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M21 11l-6-1-3-6-3 6-6 1 4 4-1 6 6-3 6 3-1-6 4-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-invert.png
new file mode 100644 (file)
index 0000000..20ce036
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-invert.svg
new file mode 100644 (file)
index 0000000..b34f49b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M21 11l-6-1-3-6-3 6-6 1 4 4-1 6 6-3 6 3-1-6 4-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-progressive.png
new file mode 100644 (file)
index 0000000..580d694
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar-progressive.svg
new file mode 100644 (file)
index 0000000..7265f4a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M21 11l-6-1-3-6-3 6-6 1 4 4-1 6 6-3 6 3-1-6 4-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar.png
new file mode 100644 (file)
index 0000000..2329af3
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unStar.svg
new file mode 100644 (file)
index 0000000..724d190
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M21 11l-6-1-3-6-3 6-6 1 4 4-1 6 6-3 6 3-1-6 4-4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr-invert.png
new file mode 100644 (file)
index 0000000..af3f0e9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr-invert.svg
new file mode 100644 (file)
index 0000000..efa8e83
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M20.5 20.5L5 5 4 6l3 3 1 11h8l.2-1.8 3.3 3.3zM17 9h-6l5.5 5.5zm1-1c0-1.1-.9-2-2-2h-2l-1-1h-2l-1 1H8l2 2h8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr-progressive.png
new file mode 100644 (file)
index 0000000..2f09eb6
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..c5bf2cc
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M20.5 20.5L5 5 4 6l3 3 1 11h8l.2-1.8 3.3 3.3zM17 9h-6l5.5 5.5zm1-1c0-1.1-.9-2-2-2h-2l-1-1h-2l-1 1H8l2 2h8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr.png
new file mode 100644 (file)
index 0000000..3b5231f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-ltr.svg
new file mode 100644 (file)
index 0000000..64b3b71
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M20.5 20.5L5 5 4 6l3 3 1 11h8l.2-1.8 3.3 3.3zM17 9h-6l5.5 5.5zm1-1c0-1.1-.9-2-2-2h-2l-1-1h-2l-1 1H8l2 2h8z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl-invert.png
new file mode 100644 (file)
index 0000000..1cb5449
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl-invert.svg
new file mode 100644 (file)
index 0000000..3fb2085
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M4 20.5L19.5 5l1 1-3 3-1 11h-8l-.2-1.8L5 21.5zM7.5 9h6L8 14.5zm-1-1c0-1.1.9-2 2-2h2l1-1h2l1 1h2l-2 2h-8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl-progressive.png
new file mode 100644 (file)
index 0000000..e828b36
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..0a67774
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M4 20.5L19.5 5l1 1-3 3-1 11h-8l-.2-1.8L5 21.5zM7.5 9h6L8 14.5zm-1-1c0-1.1.9-2 2-2h2l1-1h2l1 1h2l-2 2h-8z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl.png
new file mode 100644 (file)
index 0000000..a1d2388
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/unTrash-rtl.svg
new file mode 100644 (file)
index 0000000..e5e4032
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M4 20.5L19.5 5l1 1-3 3-1 11h-8l-.2-1.8L5 21.5zM7.5 9h6L8 14.5zm-1-1c0-1.1.9-2 2-2h2l1-1h2l1 1h2l-2 2h-8z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-invert.png
new file mode 100644 (file)
index 0000000..8a6ca42
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-invert.svg
new file mode 100644 (file)
index 0000000..3078617
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="underline-a">
+        <path id="a" d="M14.424 16H16.5L13.037 6H10.96L7.5 16h2.077l.627-2h3.604l.616 2zm-3.92-3.623L12 7.997l1.51 4.38h-3z"/>
+        <path id="underline" d="M7 17h10v1H7v-1z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-progressive.png
new file mode 100644 (file)
index 0000000..f84ad6c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a-progressive.svg
new file mode 100644 (file)
index 0000000..99d9dad
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="underline-a">
+        <path id="a" d="M14.424 16H16.5L13.037 6H10.96L7.5 16h2.077l.627-2h3.604l.616 2zm-3.92-3.623L12 7.997l1.51 4.38h-3z"/>
+        <path id="underline" d="M7 17h10v1H7v-1z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a.png
new file mode 100644 (file)
index 0000000..78a3c3f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-a.svg
new file mode 100644 (file)
index 0000000..1ddae10
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="underline-a">
+        <path id="a" d="M14.424 16H16.5L13.037 6H10.96L7.5 16h2.077l.627-2h3.604l.616 2zm-3.92-3.623L12 7.997l1.51 4.38h-3z"/>
+        <path id="underline" d="M7 17h10v1H7v-1z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-invert.png
new file mode 100644 (file)
index 0000000..9f0af6c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-invert.svg
new file mode 100644 (file)
index 0000000..8136276
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="underline-u">
+        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.658-1.666.98-2.98.98-1.32 0-2.32-.32-2.996-.98C8.336 14.37 8 13.41 8 12.13V6"/>
+        <path id="underline" d="M7 17h10v1H7v-1z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-progressive.png
new file mode 100644 (file)
index 0000000..a8bcf2d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u-progressive.svg
new file mode 100644 (file)
index 0000000..2953213
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="underline-u">
+        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.658-1.666.98-2.98.98-1.32 0-2.32-.32-2.996-.98C8.336 14.37 8 13.41 8 12.13V6"/>
+        <path id="underline" d="M7 17h10v1H7v-1z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u.png
new file mode 100644 (file)
index 0000000..0dbeb80
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/underline-u.svg
new file mode 100644 (file)
index 0000000..ff47e2c
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="underline-u">
+        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.658-1.666.98-2.98.98-1.32 0-2.32-.32-2.996-.98C8.336 14.37 8 13.41 8 12.13V6"/>
+        <path id="underline" d="M7 17h10v1H7v-1z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-invert.png
new file mode 100644 (file)
index 0000000..9fcea7f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-invert.svg
new file mode 100644 (file)
index 0000000..e5c84a9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M12 8l8 10H4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-progressive.png
new file mode 100644 (file)
index 0000000..5cc7e79
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle-progressive.svg
new file mode 100644 (file)
index 0000000..b6bbc97
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M12 8l8 10H4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle.png
new file mode 100644 (file)
index 0000000..f1aca31
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upTriangle.svg
new file mode 100644 (file)
index 0000000..9f0efc5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M12 8l8 10H4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr-invert.png
new file mode 100644 (file)
index 0000000..aa26066
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr-invert.svg
new file mode 100644 (file)
index 0000000..4a7cf26
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M10 13c0 1.7 1.3 3 3 3V9h3l-4.5-5L7 9h3v4zm7 0v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr-progressive.png
new file mode 100644 (file)
index 0000000..7ec3b64
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..85bb62f
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M10 13c0 1.7 1.3 3 3 3V9h3l-4.5-5L7 9h3v4zm7 0v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr.png
new file mode 100644 (file)
index 0000000..08e31e9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-ltr.svg
new file mode 100644 (file)
index 0000000..dc4676f
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M10 13c0 1.7 1.3 3 3 3V9h3l-4.5-5L7 9h3v4zm7 0v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl-invert.png
new file mode 100644 (file)
index 0000000..602ae42
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl-invert.svg
new file mode 100644 (file)
index 0000000..d347e6a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M13 13c0 1.7-1.3 3-3 3V9H7l4.5-5L16 9h-3v4zm-7 0v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl-progressive.png
new file mode 100644 (file)
index 0000000..42fb647
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..d367074
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M13 13c0 1.7-1.3 3-3 3V9H7l4.5-5L16 9h-3v4zm-7 0v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl.png
new file mode 100644 (file)
index 0000000..ccabf98
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/upload-rtl.svg
new file mode 100644 (file)
index 0000000..ed3fe77
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M13 13c0 1.7-1.3 3-3 3V9H7l4.5-5L16 9h-3v4zm-7 0v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr-invert.png
new file mode 100644 (file)
index 0000000..98083be
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr-invert.svg
new file mode 100644 (file)
index 0000000..beefd8d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M16 5H4v12c0 1.7 1.3 3 3 3h12V8c0-1.7-1.3-3-3-3zm-2 4c.7 0 1.2.6 1.2 1.2s-.6 1.2-1.2 1.2-1.2-.6-1.2-1.2S13.3 9 14 9zM9 9c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2S8.3 9 9 9zm7 5.4c0 .2-.1.3-.3.5-.7.6-1.6 1-2.6 1.3s-2.1.2-3.1 0-2-.9-2.7-1.5c-.1-.1-.2-.3-.2-.4s.1-.3.2-.4c.1-.1.3-.2.4-.2.2 0 .3.1.4.2.5.5 1.2.9 2.1 1.1s1.7.2 2.6 0 1.6-.5 2.1-1c.1-.1.3-.2.4-.2s.3.1.5.2.2.2.2.4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr-progressive.png
new file mode 100644 (file)
index 0000000..decc2ca
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..3232e97
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M16 5H4v12c0 1.7 1.3 3 3 3h12V8c0-1.7-1.3-3-3-3zm-2 4c.7 0 1.2.6 1.2 1.2s-.6 1.2-1.2 1.2-1.2-.6-1.2-1.2S13.3 9 14 9zM9 9c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2S8.3 9 9 9zm7 5.4c0 .2-.1.3-.3.5-.7.6-1.6 1-2.6 1.3s-2.1.2-3.1 0-2-.9-2.7-1.5c-.1-.1-.2-.3-.2-.4s.1-.3.2-.4c.1-.1.3-.2.4-.2.2 0 .3.1.4.2.5.5 1.2.9 2.1 1.1s1.7.2 2.6 0 1.6-.5 2.1-1c.1-.1.3-.2.4-.2s.3.1.5.2.2.2.2.4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr.png
new file mode 100644 (file)
index 0000000..ce385f9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-ltr.svg
new file mode 100644 (file)
index 0000000..7f526e5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M16 5H4v12c0 1.7 1.3 3 3 3h12V8c0-1.7-1.3-3-3-3zm-2 4c.7 0 1.2.6 1.2 1.2s-.6 1.2-1.2 1.2-1.2-.6-1.2-1.2S13.3 9 14 9zM9 9c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2S8.3 9 9 9zm7 5.4c0 .2-.1.3-.3.5-.7.6-1.6 1-2.6 1.3s-2.1.2-3.1 0-2-.9-2.7-1.5c-.1-.1-.2-.3-.2-.4s.1-.3.2-.4c.1-.1.3-.2.4-.2.2 0 .3.1.4.2.5.5 1.2.9 2.1 1.1s1.7.2 2.6 0 1.6-.5 2.1-1c.1-.1.3-.2.4-.2s.3.1.5.2.2.2.2.4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl-invert.png
new file mode 100644 (file)
index 0000000..3dc0f44
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl-invert.svg
new file mode 100644 (file)
index 0000000..08a382a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm2 4c-.7 0-1.2.6-1.2 1.2s.6 1.2 1.2 1.2 1.2-.6 1.2-1.2S9.7 9 9 9zm5 0c-.7 0-1.2.6-1.2 1.2s.5 1.3 1.2 1.3 1.2-.6 1.2-1.2S14.7 9 14 9zm-7 5.4c0 .2.1.3.3.5.7.6 1.6 1 2.6 1.3 1 .3 2.1.2 3.1 0s2-.9 2.7-1.5c.1-.1.2-.3.2-.4 0-.1-.1-.3-.2-.4-.1-.1-.3-.2-.4-.2-.2 0-.3.1-.4.2-.5.5-1.2.9-2.1 1.1-.9.2-1.7.2-2.6 0-.9-.2-1.6-.5-2.1-1-.1-.1-.3-.2-.4-.2-.1 0-.3.1-.5.2s-.2.2-.2.4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl-progressive.png
new file mode 100644 (file)
index 0000000..fde69b8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..c38292e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm2 4c-.7 0-1.2.6-1.2 1.2s.6 1.2 1.2 1.2 1.2-.6 1.2-1.2S9.7 9 9 9zm5 0c-.7 0-1.2.6-1.2 1.2s.5 1.3 1.2 1.3 1.2-.6 1.2-1.2S14.7 9 14 9zm-7 5.4c0 .2.1.3.3.5.7.6 1.6 1 2.6 1.3 1 .3 2.1.2 3.1 0s2-.9 2.7-1.5c.1-.1.2-.3.2-.4 0-.1-.1-.3-.2-.4-.1-.1-.3-.2-.4-.2-.2 0-.3.1-.4.2-.5.5-1.2.9-2.1 1.1-.9.2-1.7.2-2.6 0-.9-.2-1.6-.5-2.1-1-.1-.1-.3-.2-.4-.2-.1 0-.3.1-.5.2s-.2.2-.2.4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl.png
new file mode 100644 (file)
index 0000000..ee1afbc
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userActive-rtl.svg
new file mode 100644 (file)
index 0000000..838ae31
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm2 4c-.7 0-1.2.6-1.2 1.2s.6 1.2 1.2 1.2 1.2-.6 1.2-1.2S9.7 9 9 9zm5 0c-.7 0-1.2.6-1.2 1.2s.5 1.3 1.2 1.3 1.2-.6 1.2-1.2S14.7 9 14 9zm-7 5.4c0 .2.1.3.3.5.7.6 1.6 1 2.6 1.3 1 .3 2.1.2 3.1 0s2-.9 2.7-1.5c.1-.1.2-.3.2-.4 0-.1-.1-.3-.2-.4-.1-.1-.3-.2-.4-.2-.2 0-.3.1-.4.2-.5.5-1.2.9-2.1 1.1-.9.2-1.7.2-2.6 0-.9-.2-1.6-.5-2.1-1-.1-.1-.3-.2-.4-.2-.1 0-.3.1-.5.2s-.2.2-.2.4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-invert.png
new file mode 100644 (file)
index 0000000..1f4d3a4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-invert.svg
new file mode 100644 (file)
index 0000000..5f4e136
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M18.75 17.4c-1.08-.36-3.6-1.35-3.6-1.35-.81-.27-.81-.99-.9-1.8v-.09c1.26-1.08 2.25-2.88 2.25-4.86 0-4.23-1.8-5.85-4.5-5.85-1.89 0-4.5 1.08-4.5 5.85 0 1.89.99 3.69 2.25 4.86v.09c0 .81-.09 1.53-.9 1.8 0 0-2.61.99-3.6 1.35-1.17.36-2.25.9-2.25 2.25v.9h18v-.9c0-1.08-.72-1.8-2.25-2.25z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-progressive.png
new file mode 100644 (file)
index 0000000..74b699b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar-progressive.svg
new file mode 100644 (file)
index 0000000..26ae8b6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M18.75 17.4c-1.08-.36-3.6-1.35-3.6-1.35-.81-.27-.81-.99-.9-1.8v-.09c1.26-1.08 2.25-2.88 2.25-4.86 0-4.23-1.8-5.85-4.5-5.85-1.89 0-4.5 1.08-4.5 5.85 0 1.89.99 3.69 2.25 4.86v.09c0 .81-.09 1.53-.9 1.8 0 0-2.61.99-3.6 1.35-1.17.36-2.25.9-2.25 2.25v.9h18v-.9c0-1.08-.72-1.8-2.25-2.25z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar.png
new file mode 100644 (file)
index 0000000..8190095
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userAvatar.svg
new file mode 100644 (file)
index 0000000..ce714e6
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M18.75 17.4c-1.08-.36-3.6-1.35-3.6-1.35-.81-.27-.81-.99-.9-1.8v-.09c1.26-1.08 2.25-2.88 2.25-4.86 0-4.23-1.8-5.85-4.5-5.85-1.89 0-4.5 1.08-4.5 5.85 0 1.89.99 3.69 2.25 4.86v.09c0 .81-.09 1.53-.9 1.8 0 0-2.61.99-3.6 1.35-1.17.36-2.25.9-2.25 2.25v.9h18v-.9c0-1.08-.72-1.8-2.25-2.25z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-invert.png
new file mode 100644 (file)
index 0000000..db34f59
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-invert.svg
new file mode 100644 (file)
index 0000000..075ea5c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M16 5H4v12c0 1.7 1.3 3 3 3h12V8c0-1.7-1.3-3-3-3zm-9.3 5.4C6.2 10 6 9.6 6 9c.6.6 1.5.9 2.5.9s1.9-.3 2.5-.9c0 .6-.2 1-.7 1.4-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6zm8.4 4.3c0 .2-.1.3-.3.4-1 .6-2.2.9-3.5.9-1.2 0-2.3-.3-3.3-1-.2-.1-.2-.2-.3-.4s0-.3.1-.5.2-.2.4-.3.3 0 .5.1c.8.5 1.7.8 2.8.8s2-.2 2.8-.7c.1-.1.3-.1.5-.1s.3.1.4.3l-.1.5zm1.2-4.3c-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6S12 9.6 12 9c.6.6 1.5.9 2.5.9s1.9-.3 2.5-.9c0 .6-.2 1-.7 1.4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-progressive.png
new file mode 100644 (file)
index 0000000..4d7f0eb
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..f48929d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M16 5H4v12c0 1.7 1.3 3 3 3h12V8c0-1.7-1.3-3-3-3zm-9.3 5.4C6.2 10 6 9.6 6 9c.6.6 1.5.9 2.5.9s1.9-.3 2.5-.9c0 .6-.2 1-.7 1.4-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6zm8.4 4.3c0 .2-.1.3-.3.4-1 .6-2.2.9-3.5.9-1.2 0-2.3-.3-3.3-1-.2-.1-.2-.2-.3-.4s0-.3.1-.5.2-.2.4-.3.3 0 .5.1c.8.5 1.7.8 2.8.8s2-.2 2.8-.7c.1-.1.3-.1.5-.1s.3.1.4.3l-.1.5zm1.2-4.3c-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6S12 9.6 12 9c.6.6 1.5.9 2.5.9s1.9-.3 2.5-.9c0 .6-.2 1-.7 1.4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr.png
new file mode 100644 (file)
index 0000000..05170e1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-ltr.svg
new file mode 100644 (file)
index 0000000..e58bbc3
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M16 5H4v12c0 1.7 1.3 3 3 3h12V8c0-1.7-1.3-3-3-3zm-9.3 5.4C6.2 10 6 9.6 6 9c.6.6 1.5.9 2.5.9s1.9-.3 2.5-.9c0 .6-.2 1-.7 1.4-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6zm8.4 4.3c0 .2-.1.3-.3.4-1 .6-2.2.9-3.5.9-1.2 0-2.3-.3-3.3-1-.2-.1-.2-.2-.3-.4s0-.3.1-.5.2-.2.4-.3.3 0 .5.1c.8.5 1.7.8 2.8.8s2-.2 2.8-.7c.1-.1.3-.1.5-.1s.3.1.4.3l-.1.5zm1.2-4.3c-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6S12 9.6 12 9c.6.6 1.5.9 2.5.9s1.9-.3 2.5-.9c0 .6-.2 1-.7 1.4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-invert.png
new file mode 100644 (file)
index 0000000..8fe830a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-invert.svg
new file mode 100644 (file)
index 0000000..0b3aa4d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm9.3 5.4c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S12.6 9.6 12 9c0 .6.2 1 .7 1.4.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6zm-8.4 4.3c0 .2.1.3.3.4 1 .6 2.2.9 3.5.9 1.2 0 2.3-.3 3.3-1 .2-.1.2-.2.3-.4.1-.2 0-.3-.1-.5s-.2-.2-.4-.3c-.2-.1-.3 0-.5.1-.8.5-1.7.8-2.8.8-1.1 0-2-.2-2.8-.7-.1-.1-.3-.1-.5-.1s-.3.1-.4.3l.1.5zm-1.2-4.3c.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S6.6 9.6 6 9c0 .6.2 1 .7 1.4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-progressive.png
new file mode 100644 (file)
index 0000000..10ebac4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..76d950c
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm9.3 5.4c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S12.6 9.6 12 9c0 .6.2 1 .7 1.4.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6zm-8.4 4.3c0 .2.1.3.3.4 1 .6 2.2.9 3.5.9 1.2 0 2.3-.3 3.3-1 .2-.1.2-.2.3-.4.1-.2 0-.3-.1-.5s-.2-.2-.4-.3c-.2-.1-.3 0-.5.1-.8.5-1.7.8-2.8.8-1.1 0-2-.2-2.8-.7-.1-.1-.3-.1-.5-.1s-.3.1-.4.3l.1.5zm-1.2-4.3c.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S6.6 9.6 6 9c0 .6.2 1 .7 1.4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl.png
new file mode 100644 (file)
index 0000000..bf953f1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userInactive-rtl.svg
new file mode 100644 (file)
index 0000000..039e662
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm9.3 5.4c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S12.6 9.6 12 9c0 .6.2 1 .7 1.4.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6zm-8.4 4.3c0 .2.1.3.3.4 1 .6 2.2.9 3.5.9 1.2 0 2.3-.3 3.3-1 .2-.1.2-.2.3-.4.1-.2 0-.3-.1-.5s-.2-.2-.4-.3c-.2-.1-.3 0-.5.1-.8.5-1.7.8-2.8.8-1.1 0-2-.2-2.8-.7-.1-.1-.3-.1-.5-.1s-.3.1-.4.3l.1.5zm-1.2-4.3c.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S6.6 9.6 6 9c0 .6.2 1 .7 1.4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-invert.png
new file mode 100644 (file)
index 0000000..332bcba
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-invert.svg
new file mode 100644 (file)
index 0000000..934128f
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm11.2 2.5c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2.6-1.3 1.2-1.3zm-5.4 0c.7 0 1.2.6 1.2 1.2s-.6 1.3-1.2 1.3-1.2-.6-1.2-1.2.5-1.3 1.2-1.3zm2.7 8.5c-5.1 0-6-5-6-5s2 1 6 1l6-1s-1 5-6 5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-progressive.png
new file mode 100644 (file)
index 0000000..2ef91f0
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..232a04a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm11.2 2.5c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2.6-1.3 1.2-1.3zm-5.4 0c.7 0 1.2.6 1.2 1.2s-.6 1.3-1.2 1.3-1.2-.6-1.2-1.2.5-1.3 1.2-1.3zm2.7 8.5c-5.1 0-6-5-6-5s2 1 6 1l6-1s-1 5-6 5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr.png
new file mode 100644 (file)
index 0000000..18981fd
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-ltr.svg
new file mode 100644 (file)
index 0000000..f277ce4
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm11.2 2.5c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2.6-1.3 1.2-1.3zm-5.4 0c.7 0 1.2.6 1.2 1.2s-.6 1.3-1.2 1.3-1.2-.6-1.2-1.2.5-1.3 1.2-1.3zm2.7 8.5c-5.1 0-6-5-6-5s2 1 6 1l6-1s-1 5-6 5z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-invert.png
new file mode 100644 (file)
index 0000000..187f3e6
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-invert.svg
new file mode 100644 (file)
index 0000000..5c48db2
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M19 6v11l3 3H5c-1.7 0-3-1.3-3-3V6h17zM7.8 8.5c-.7 0-1.2.6-1.2 1.2S7.1 11 7.8 11 9 10.4 9 9.8s-.6-1.3-1.2-1.3zm5.4 0c-.7 0-1.2.6-1.2 1.2s.6 1.3 1.2 1.3 1.2-.6 1.2-1.2-.5-1.3-1.2-1.3zM10.5 17c5.1 0 6-5 6-5s-2 1-6 1l-6-1s1 5 6 5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-progressive.png
new file mode 100644 (file)
index 0000000..91c703d
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..2a2b17b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M19 6v11l3 3H5c-1.7 0-3-1.3-3-3V6h17zM7.8 8.5c-.7 0-1.2.6-1.2 1.2S7.1 11 7.8 11 9 10.4 9 9.8s-.6-1.3-1.2-1.3zm5.4 0c-.7 0-1.2.6-1.2 1.2s.6 1.3 1.2 1.3 1.2-.6 1.2-1.2-.5-1.3-1.2-1.3zM10.5 17c5.1 0 6-5 6-5s-2 1-6 1l-6-1s1 5 6 5z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl.png
new file mode 100644 (file)
index 0000000..7122efa
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/userTalk-rtl.svg
new file mode 100644 (file)
index 0000000..0f9a6fb
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M19 6v11l3 3H5c-1.7 0-3-1.3-3-3V6h17zM7.8 8.5c-.7 0-1.2.6-1.2 1.2S7.1 11 7.8 11 9 10.4 9 9.8s-.6-1.3-1.2-1.3zm5.4 0c-.7 0-1.2.6-1.2 1.2s.6 1.3 1.2 1.3 1.2-.6 1.2-1.2-.5-1.3-1.2-1.3zM10.5 17c5.1 0 6-5 6-5s-2 1-6 1l-6-1s1 5 6 5z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-invert.png
new file mode 100644 (file)
index 0000000..e716ba5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-invert.svg
new file mode 100644 (file)
index 0000000..b70f4f9
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="viewCompact">
+        <circle cx="6" cy="6" r="2"/>
+        <circle cx="12" cy="6" r="2"/>
+        <circle cx="18" cy="6" r="2"/>
+        <circle cx="6" cy="12" r="2"/>
+        <circle cx="12" cy="12" r="2"/>
+        <circle cx="18" cy="12" r="2"/>
+        <circle cx="6" cy="18" r="2"/>
+        <circle cx="12" cy="18" r="2"/>
+        <circle cx="18" cy="18" r="2"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-progressive.png
new file mode 100644 (file)
index 0000000..545814b
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact-progressive.svg
new file mode 100644 (file)
index 0000000..a7edfc5
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="viewCompact">
+        <circle cx="6" cy="6" r="2"/>
+        <circle cx="12" cy="6" r="2"/>
+        <circle cx="18" cy="6" r="2"/>
+        <circle cx="6" cy="12" r="2"/>
+        <circle cx="12" cy="12" r="2"/>
+        <circle cx="18" cy="12" r="2"/>
+        <circle cx="6" cy="18" r="2"/>
+        <circle cx="12" cy="18" r="2"/>
+        <circle cx="18" cy="18" r="2"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact.png
new file mode 100644 (file)
index 0000000..13fe420
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewCompact.svg
new file mode 100644 (file)
index 0000000..d96a2e3
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="viewCompact">
+        <circle cx="6" cy="6" r="2"/>
+        <circle cx="12" cy="6" r="2"/>
+        <circle cx="18" cy="6" r="2"/>
+        <circle cx="6" cy="12" r="2"/>
+        <circle cx="12" cy="12" r="2"/>
+        <circle cx="18" cy="12" r="2"/>
+        <circle cx="6" cy="18" r="2"/>
+        <circle cx="12" cy="18" r="2"/>
+        <circle cx="18" cy="18" r="2"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-invert.png
new file mode 100644 (file)
index 0000000..3ea093a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-invert.svg
new file mode 100644 (file)
index 0000000..1e349b3
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="viewDetails">
+        <circle cx="5.5" cy="8.5" r="2.5"/>
+        <path d="M10 6h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/>
+        <circle cx="5.5" cy="16.5" r="2.5"/>
+        <path d="M10 14h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-progressive.png
new file mode 100644 (file)
index 0000000..9cef283
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..c6588c2
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="viewDetails">
+        <circle cx="5.5" cy="8.5" r="2.5"/>
+        <path d="M10 6h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/>
+        <circle cx="5.5" cy="16.5" r="2.5"/>
+        <path d="M10 14h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr.png
new file mode 100644 (file)
index 0000000..4341f0e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-ltr.svg
new file mode 100644 (file)
index 0000000..1a5092a
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="viewDetails">
+        <circle cx="5.5" cy="8.5" r="2.5"/>
+        <path d="M10 6h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/>
+        <circle cx="5.5" cy="16.5" r="2.5"/>
+        <path d="M10 14h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-invert.png
new file mode 100644 (file)
index 0000000..ea861d8
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-invert.svg
new file mode 100644 (file)
index 0000000..f2d6a87
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="viewDetails">
+        <circle cx="18.5" cy="8.5" r="2.5"/>
+        <path d="M14 6H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/>
+        <circle cx="18.5" cy="16.5" r="2.5"/>
+        <path d="M14 14H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-progressive.png
new file mode 100644 (file)
index 0000000..0317820
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..9b7b78d
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="viewDetails">
+        <circle cx="18.5" cy="8.5" r="2.5"/>
+        <path d="M14 6H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/>
+        <circle cx="18.5" cy="16.5" r="2.5"/>
+        <path d="M14 14H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl.png
new file mode 100644 (file)
index 0000000..338294c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/viewDetails-rtl.svg
new file mode 100644 (file)
index 0000000..f43b05f
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="viewDetails">
+        <circle cx="18.5" cy="8.5" r="2.5"/>
+        <path d="M14 6H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/>
+        <circle cx="18.5" cy="16.5" r="2.5"/>
+        <path d="M14 14H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator-invert.png
new file mode 100644 (file)
index 0000000..e18ee17
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator-invert.svg
new file mode 100644 (file)
index 0000000..10edb0f
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff">
+    <path d="M0 10v8h2.3c.3.6 1 1 1.7 1h4c1.5 0 2.7-.8 3-2h2c.3 1.2 1.5 2 3 2h4c.7 0 1.4 0 1.7-1H24v-8zm10 6c0 1-.4 2-2 2H4c-.6 0-1-.4-1-1v-3c0-.6.4-1 1-1h5c.6 0 1 .4 1 1zm11 1c0 .6-.4 1-1 1h-4c-1.6 0-2-1-2-2v-2c0-.6.4-1 1-1h5c.6 0 1 .4 1 1z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator.png
new file mode 100644 (file)
index 0000000..afa5652
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/visionSimulator.svg
new file mode 100644 (file)
index 0000000..ae6ba27
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M0 10v8h2.3c.3.6 1 1 1.7 1h4c1.5 0 2.7-.8 3-2h2c.3 1.2 1.5 2 3 2h4c.7 0 1.4 0 1.7-1H24v-8zm10 6c0 1-.4 2-2 2H4c-.6 0-1-.4-1-1v-3c0-.6.4-1 1-1h5c.6 0 1 .4 1 1zm11 1c0 .6-.4 1-1 1h-4c-1.6 0-2-1-2-2v-2c0-.6.4-1 1-1h5c.6 0 1 .4 1 1z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr-invert.png
new file mode 100644 (file)
index 0000000..7018968
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr-invert.svg
new file mode 100644 (file)
index 0000000..ff99d08
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr-progressive.png
new file mode 100644 (file)
index 0000000..1767614
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr-progressive.svg
new file mode 100644 (file)
index 0000000..6d06ede
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr.png
new file mode 100644 (file)
index 0000000..53e7011
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-ltr.svg
new file mode 100644 (file)
index 0000000..b13df22
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl-invert.png
new file mode 100644 (file)
index 0000000..28008b5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl-invert.svg
new file mode 100644 (file)
index 0000000..50224d0
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl-progressive.png
new file mode 100644 (file)
index 0000000..53c5983
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl-progressive.svg
new file mode 100644 (file)
index 0000000..a2589bd
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl.png
new file mode 100644 (file)
index 0000000..8fc4df5
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/watchlist-rtl.svg
new file mode 100644 (file)
index 0000000..a4ec49a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-invert.png
new file mode 100644 (file)
index 0000000..30ef53e
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-invert.svg
new file mode 100644 (file)
index 0000000..72601da
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="wikiText">
+        <path id="opening-bracket-inner" d="M7 19h3v-2H9V7h1V5H7z"/>
+        <path id="closing-bracket-inner" d="M17 19h-3v-2h1V7h-1V5h3z"/>
+        <path id="closing-bracket-outer" d="M21 19h-3v-2h1V7h-1V5h3z"/>
+        <path id="opening-bracket-outer" d="M3 19h3v-2H5V7h1V5H3z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-progressive.png
new file mode 100644 (file)
index 0000000..e1f516c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText-progressive.svg
new file mode 100644 (file)
index 0000000..f7ba89d
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="wikiText">
+        <path id="opening-bracket-inner" d="M7 19h3v-2H9V7h1V5H7z"/>
+        <path id="closing-bracket-inner" d="M17 19h-3v-2h1V7h-1V5h3z"/>
+        <path id="closing-bracket-outer" d="M21 19h-3v-2h1V7h-1V5h3z"/>
+        <path id="opening-bracket-outer" d="M3 19h3v-2H5V7h1V5H3z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText.png
new file mode 100644 (file)
index 0000000..40309aa
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/wikiText.svg
new file mode 100644 (file)
index 0000000..4512cf5
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="wikiText">
+        <path id="opening-bracket-inner" d="M7 19h3v-2H9V7h1V5H7z"/>
+        <path id="closing-bracket-inner" d="M17 19h-3v-2h1V7h-1V5h3z"/>
+        <path id="closing-bracket-outer" d="M21 19h-3v-2h1V7h-1V5h3z"/>
+        <path id="opening-bracket-outer" d="M3 19h3v-2H5V7h1V5H3z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-invert.png
new file mode 100644 (file)
index 0000000..74c54ff
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-invert.svg
new file mode 100644 (file)
index 0000000..bebd3a8
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff">
+    <g id="window">
+        <path id="title" d="M7 10h10v1H7z"/>
+        <path id="frame" d="M16 19H8c-2.206 0-4-1.794-4-4V9c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v6c0 2.206-1.794 4-4 4zM8 7c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2h8c1.103 0 2-.897 2-2V9c0-1.103-.897-2-2-2H8z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-progressive.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-progressive.png
new file mode 100644 (file)
index 0000000..2a18bea
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-progressive.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-progressive.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window-progressive.svg
new file mode 100644 (file)
index 0000000..9204afe
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c">
+    <g id="window">
+        <path id="title" d="M7 10h10v1H7z"/>
+        <path id="frame" d="M16 19H8c-2.206 0-4-1.794-4-4V9c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v6c0 2.206-1.794 4-4 4zM8 7c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2h8c1.103 0 2-.897 2-2V9c0-1.103-.897-2-2-2H8z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window.png b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window.png
new file mode 100644 (file)
index 0000000..bae13d7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/icons/window.svg
new file mode 100644 (file)
index 0000000..093c822
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="window">
+        <path id="title" d="M7 10h10v1H7z"/>
+        <path id="frame" d="M16 19H8c-2.206 0-4-1.794-4-4V9c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v6c0 2.206-1.794 4-4 4zM8 7c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2h8c1.103 0 2-.897 2-2V9c0-1.103-.897-2-2-2H8z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert-invert.png
new file mode 100644 (file)
index 0000000..035b626
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert-invert.svg
new file mode 100644 (file)
index 0000000..a520175
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
+    <path d="M6 12A6 6 0 1 1 6 0a6 6 0 0 1 0 12zM5 7h2V2H5zm0 3h2V8H5z" id="alert"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert.png
new file mode 100644 (file)
index 0000000..9d25a24
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/alert.svg
new file mode 100644 (file)
index 0000000..f94346a
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <path d="M6 12A6 6 0 1 1 6 0a6 6 0 0 1 0 12zM5 7h2V2H5zm0 3h2V8H5z" id="alert"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-down-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-down-invert.png
new file mode 100644 (file)
index 0000000..ae66af4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-down-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-down-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-down-invert.svg
new file mode 100644 (file)
index 0000000..b5e6144
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
+       <path d="M11.05 3.996l-.965-1.053-4.035 3.86-3.947-3.86L1.05 3.996l5 5 5-5"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-down.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-down.png
new file mode 100644 (file)
index 0000000..34f5041
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-down.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-down.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-down.svg
new file mode 100644 (file)
index 0000000..d3e55d1
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+       <path d="M11.05 3.996l-.965-1.053-4.035 3.86-3.947-3.86L1.05 3.996l5 5 5-5"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-ltr-invert.png
new file mode 100644 (file)
index 0000000..68bf475
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-ltr-invert.svg
new file mode 100644 (file)
index 0000000..78f4b51
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
+       <path d="M4.026 11l-1.052-.965L6.832 6 2.974 2.053 4.026 1l5 5-5 5"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-ltr.png
new file mode 100644 (file)
index 0000000..cadc38f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-ltr.svg
new file mode 100644 (file)
index 0000000..e99855b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+       <path d="M4.026 11l-1.052-.965L6.832 6 2.974 2.053 4.026 1l5 5-5 5"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-rtl-invert.png
new file mode 100644 (file)
index 0000000..fae56f1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-rtl-invert.svg
new file mode 100644 (file)
index 0000000..bc0ff6f
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
+       <path d="M7.974 11l1.052-.965L5.168 6l3.858-3.947L7.974 1l-5 5 5 5"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-rtl.png
new file mode 100644 (file)
index 0000000..5a4c0b6
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-rtl.svg
new file mode 100644 (file)
index 0000000..1647501
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+       <path d="M7.974 11l1.052-.965L5.168 6l3.858-3.947L7.974 1l-5 5 5 5"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-up-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-up-invert.png
new file mode 100644 (file)
index 0000000..56eeea4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-up-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-up-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-up-invert.svg
new file mode 100644 (file)
index 0000000..3c81ae5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
+       <path d="M11 7.974l-.965 1.052L6 5.168 2.053 9.026 1 7.974l5-5 5 5"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-up.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-up.png
new file mode 100644 (file)
index 0000000..672b7f3
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-up.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-up.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/arrow-up.svg
new file mode 100644 (file)
index 0000000..ca93281
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+       <path d="M11 7.974l-.965 1.052L6 5.168 2.053 9.026 1 7.974l5-5 5 5"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear-invert.png
new file mode 100644 (file)
index 0000000..82f5bf1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear-invert.svg
new file mode 100644 (file)
index 0000000..eb45dfc
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
+    <g id="clear">
+        <path id="circle-with-cross" d="M6 0C2.7 0 0 2.7 0 6s2.7 6 6 6 6-2.7 6-6-2.7-6-6-6zM3.5 2.5L6 5l2.5-2.5 1 1L7 6l2.5 2.5-1 1L6 7 3.5 9.5l-1-1L5 6 2.5 3.5z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear.png
new file mode 100644 (file)
index 0000000..a858a03
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/clear.svg
new file mode 100644 (file)
index 0000000..3c010c1
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="clear">
+        <path id="circle-with-cross" d="M6 0C2.7 0 0 2.7 0 6s2.7 6 6 6 6-2.7 6-6-2.7-6-6-6zM3.5 2.5L6 5l2.5-2.5 1 1L7 6l2.5 2.5-1 1L6 7 3.5 9.5l-1-1L5 6 2.5 3.5z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required-invert.png
new file mode 100644 (file)
index 0000000..d9ff42f
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required-invert.svg
new file mode 100644 (file)
index 0000000..efd0840
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
+    <path d="M5 1h2v10H5zm4.83 1.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z" id="required"/>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required.png
new file mode 100644 (file)
index 0000000..aca9239
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/required.svg
new file mode 100644 (file)
index 0000000..94b0066
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <path d="M5 1h2v10H5zm4.83 1.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z" id="required"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-ltr-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-ltr-invert.png
new file mode 100644 (file)
index 0000000..9529803
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-ltr-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-ltr-invert.svg
new file mode 100644 (file)
index 0000000..cc383ee
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
+    <g id="search">
+        <path id="magnifying-glass" d="M10.37 9.474L7.994 7.1l-.17-.1a3.45 3.45 0 0 0 .644-2.01A3.478 3.478 0 1 0 4.99 8.47c.75 0 1.442-.24 2.01-.648l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27a2.21 2.21 0 1 1 2.21-2.21A2.21 2.21 0 0 1 4.99 7.21z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-ltr.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-ltr.png
new file mode 100644 (file)
index 0000000..123fbfa
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-ltr.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-ltr.svg
new file mode 100644 (file)
index 0000000..80c72bb
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="search">
+        <path id="magnifying-glass" d="M10.37 9.474L7.994 7.1l-.17-.1a3.45 3.45 0 0 0 .644-2.01A3.478 3.478 0 1 0 4.99 8.47c.75 0 1.442-.24 2.01-.648l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27a2.21 2.21 0 1 1 2.21-2.21A2.21 2.21 0 0 1 4.99 7.21z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-rtl-invert.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-rtl-invert.png
new file mode 100644 (file)
index 0000000..a727057
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-rtl-invert.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-rtl-invert.svg
new file mode 100644 (file)
index 0000000..19114d8
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff">
+    <g id="search">
+        <path id="magnifying-glass" d="M1.63 9.474L4.006 7.1l.17-.1a3.45 3.45 0 0 1-.644-2.01A3.478 3.478 0 1 1 7.01 8.47 3.43 3.43 0 0 1 5 7.822l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27A2.21 2.21 0 1 0 4.8 4.994 2.21 2.21 0 0 0 7.01 7.21z"/>
+    </g>
+</g></svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-rtl.png b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-rtl.png
new file mode 100644 (file)
index 0000000..db74061
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-rtl.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/indicators/search-rtl.svg
new file mode 100644 (file)
index 0000000..4b3cff4
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="search">
+        <path id="magnifying-glass" d="M1.63 9.474L4.006 7.1l.17-.1a3.45 3.45 0 0 1-.644-2.01A3.478 3.478 0 1 1 7.01 8.47 3.43 3.43 0 0 1 5 7.822l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27A2.21 2.21 0 1 0 4.8 4.994 2.21 2.21 0 0 0 7.01 7.21z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/textures/pending.gif b/resources/lib/oojs-ui/themes/wikimediaui/images/textures/pending.gif
new file mode 100644 (file)
index 0000000..1194eed
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/textures/pending.gif differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/textures/transparency.png b/resources/lib/oojs-ui/themes/wikimediaui/images/textures/transparency.png
new file mode 100644 (file)
index 0000000..dbf69b9
Binary files /dev/null and b/resources/lib/oojs-ui/themes/wikimediaui/images/textures/transparency.png differ
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/images/textures/transparency.svg b/resources/lib/oojs-ui/themes/wikimediaui/images/textures/transparency.svg
new file mode 100644 (file)
index 0000000..cadec2a
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
+    <g id="transparency">
+        <path d="M0 0h8v8H0zm8 8h8v8H8z" fill="#ccc"/>
+        <path d="M8 0h8v8H8zM0 8h8v8H0z" fill="#fff"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/indicators.json b/resources/lib/oojs-ui/themes/wikimediaui/indicators.json
new file mode 100644 (file)
index 0000000..1b99365
--- /dev/null
@@ -0,0 +1,30 @@
+{
+       "selectorWithoutVariant": ".oo-ui-indicator-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-indicator-{name}",
+       "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#fff",
+                       "global": true
+               }
+       },
+       "images": {
+               "alert": { "file": "images/indicators/alert.svg" },
+               "clear": { "file": "images/indicators/clear.svg" },
+               "up": { "file": "images/indicators/arrow-up.svg" },
+               "down": { "file": "images/indicators/arrow-down.svg" },
+               "next": { "file": {
+                       "ltr": "images/indicators/arrow-ltr.svg",
+                       "rtl": "images/indicators/arrow-rtl.svg"
+               } },
+               "previous": { "file": {
+                       "ltr": "images/indicators/arrow-rtl.svg",
+                       "rtl": "images/indicators/arrow-ltr.svg"
+               } },
+               "required": { "file": "images/indicators/required.svg" },
+               "search": { "file": {
+                       "ltr": "images/indicators/search-ltr.svg",
+                       "rtl": "images/indicators/search-rtl.svg"
+               } }
+       }
+}
diff --git a/resources/lib/oojs-ui/themes/wikimediaui/textures.json b/resources/lib/oojs-ui/themes/wikimediaui/textures.json
new file mode 100644 (file)
index 0000000..e90730a
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "prefix": "oo-ui-texture",
+       "intro": "@import '../../../../src/styles/common';",
+       "images": {
+               "pending": { "file": "images/textures/pending.gif" },
+               "transparency": { "file": "images/textures/transparency.svg" }
+       }
+}
diff --git a/resources/lib/oojs/AUTHORS.txt b/resources/lib/oojs/AUTHORS.txt
new file mode 100644 (file)
index 0000000..97fee0a
--- /dev/null
@@ -0,0 +1,10 @@
+Bartosz Dziewoński <matmarex@wikimedia.org>
+C. Scott Ananian <cscott@cscott.net>
+David Chan <dchan@wikimedia.org>
+Ed Sanders <ejsanders@gmail.com>
+James D. Forrester <jforrester@wikimedia.org>
+Moriel Schottlender <moriel@gmail.com>
+Ori Livneh <ori@wikimedia.org>
+Roan Kattouw <roan.kattouw@gmail.com>
+Timo Tijhof <krinklemail@gmail.com>
+Trevor Parscal <trevorparscal@gmail.com>
diff --git a/resources/lib/oojs/LICENSE-MIT b/resources/lib/oojs/LICENSE-MIT
new file mode 100644 (file)
index 0000000..c6bbee2
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright 2011-2017 OOjs Team and other contributors.
+
+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.
diff --git a/resources/lib/oojs/README.md b/resources/lib/oojs/README.md
new file mode 100644 (file)
index 0000000..ec14576
--- /dev/null
@@ -0,0 +1,98 @@
+[![npm](https://img.shields.io/npm/v/oojs.svg?style=flat)](https://www.npmjs.com/package/oojs) [![David](https://img.shields.io/david/dev/wikimedia/oojs.svg?style=flat)](https://david-dm.org/wikimedia/oojs#info=devDependencies)
+
+OOjs
+=================
+
+OOjs is a JavaScript library for working with objects.
+
+Key features include inheritance, mixins and utilities for working with objects.
+
+<pre lang="javascript">
+/* Example */
+( function ( oo ) {
+    function Animal() {}
+    function Magic() {}
+    function Unicorn() {
+        Animal.call( this );
+        Magic.call( this );
+    }
+    oo.inheritClass( Unicorn, Animal );
+    oo.mixinClass( Unicorn, Magic );
+}( OO ) );
+</pre>
+
+Quick start
+----------
+
+This library is available as an [npm](https://npmjs.org/) package! Install it right away:
+<pre lang="bash">
+npm install oojs
+</pre>
+
+Or clone the repo, `git clone https://phabricator.wikimedia.org/diffusion/GOJS/oojs.git`.
+
+ECMAScript 5
+----------
+
+OOjs requires a modern ECMAScript 5 environment. It is not necessarily compatible with ES3 engines (such as for IE 6-8). For ES3 environments, the old 1.x releases are available but not recommended.
+
+jQuery
+----------
+
+If your project uses jQuery, use the optimised `oojs.jquery.js` build instead.
+
+This build assumes jQuery is present and omits various chunks of code in favour of references to jQuery.
+
+jQuery 3.0.0 or higher is required.
+
+Versioning
+----------
+
+We use the Semantic Versioning guidelines as much as possible.
+
+Releases will be numbered in the following format:
+
+`<major>.<minor>.<patch>`
+
+For more information on SemVer, please visit http://semver.org/.
+
+Bug tracker
+-----------
+
+Found a bug? Please report it in the [issue tracker](https://phabricator.wikimedia.org/maniphest/task/edit/form/1/?projects=OOjs)!
+
+Release
+----------
+
+Release process:
+<pre lang="bash">
+$ cd path/to/oojs/
+$ git remote update
+$ git checkout -B release -t origin/master
+
+# Ensure tests pass
+$ npm install && npm test
+
+# Avoid using "npm version patch" because that creates
+# both a commit and a tag, and we shouldn't tag until after
+# the commit is merged.
+
+# Update release notes
+# Copy the resulting list into a new section on History.md
+$ git log --format='* %s (%aN)' --no-merges --reverse v$(node -e 'console.log(require("./package.json").version);')...HEAD
+$ edit History.md
+
+# Update the version number
+$ edit package.json
+
+$ git add -p
+$ git commit -m "Tag vX.X.X"
+$ git review
+
+# After merging:
+$ git remote update
+$ git checkout origin/master
+$ git tag "vX.X.X"
+$ git push --tags
+$ npm publish
+</pre>
index f93051c..8cc6f11 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs v2.0.0 optimised for jQuery
+ * OOjs v2.1.0 optimised for jQuery
  * https://www.mediawiki.org/wiki/OOjs
  *
  * Copyright 2011-2017 OOjs Team and other contributors.
  * Released under the MIT license
  * https://oojs.mit-license.org
  *
- * Date: 2017-04-05T02:18:04Z
+ * Date: 2017-05-30T22:56:52Z
  */
 ( function ( global ) {
 
@@ -683,6 +683,24 @@ oo.isPlainObject = $.isPlainObject;
                }
        }
 
+       /**
+        * @private
+        * @param {OO.EventEmitter} ee
+        * @param {Function|string} method Function or method name
+        * @param {Object} binding
+        */
+       function addBinding( ee, event, binding ) {
+               var bindings;
+               // Auto-initialize bindings list
+               if ( hasOwn.call( ee.bindings, event ) ) {
+                       bindings = ee.bindings[ event ];
+               } else {
+                       bindings = ee.bindings[ event ] = [];
+               }
+               // Add binding
+               bindings.push( binding );
+       }
+
        /* Methods */
 
        /**
@@ -699,21 +717,14 @@ oo.isPlainObject = $.isPlainObject;
         * @chainable
         */
        oo.EventEmitter.prototype.on = function ( event, method, args, context ) {
-               var bindings;
-
                validateMethod( method, context );
 
-               if ( hasOwn.call( this.bindings, event ) ) {
-                       bindings = this.bindings[ event ];
-               } else {
-                       // Auto-initialize bindings list
-                       bindings = this.bindings[ event ] = [];
-               }
-               // Add binding
-               bindings.push( {
+               // Ensure consistent object shape (optimisation)
+               addBinding( this, event, {
                        method: method,
                        args: args,
-                       context: ( arguments.length < 4 ) ? null : context
+                       context: ( arguments.length < 4 ) ? null : context,
+                       once: false
                } );
                return this;
        };
@@ -726,12 +737,16 @@ oo.isPlainObject = $.isPlainObject;
         * @chainable
         */
        oo.EventEmitter.prototype.once = function ( event, listener ) {
-               var eventEmitter = this,
-                       wrapper = function () {
-                               eventEmitter.off( event, wrapper );
-                               return listener.apply( this, arguments );
-                       };
-               return this.on( event, wrapper );
+               validateMethod( listener );
+
+               // Ensure consistent object shape (optimisation)
+               addBinding( this, event, {
+                       method: listener,
+                       args: undefined,
+                       context: null,
+                       once: true
+               } );
+               return this;
        };
 
        /**
@@ -806,6 +821,11 @@ oo.isPlainObject = $.isPlainObject;
                                } else {
                                        method = binding.method;
                                }
+                               if ( binding.once ) {
+                                       // Must unbind before calling method to avoid
+                                       // any nested triggers.
+                                       this.off( event, method );
+                               }
                                method.apply(
                                        binding.context,
                                        binding.args ? binding.args.concat( args ) : args
@@ -823,7 +843,7 @@ oo.isPlainObject = $.isPlainObject;
         * @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
+        *  arguments.
         * @chainable
         */
        oo.EventEmitter.prototype.connect = function ( context, methods ) {
@@ -849,8 +869,13 @@ oo.isPlainObject = $.isPlainObject;
         *
         * @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. Values can be either method names or functions, but must be
-        * consistent with those used in the corresponding call to "connect".
+        *  event bindings keyed by event name. Values can be either method names, functions or arrays
+        *  containing a method name.
+        *  NOTE: To allow matching call sites with connect(), array values are allowed to contain the
+        *  parameters as well, but only the method name is used to find bindings. Tt is discouraged to
+        *  have multiple bindings for the same event to the same listener, but if used (and only the
+        *  parameters vary), disconnecting one variation of (event name, event listener, parameters)
+        *  will disconnect other variations as well.
         * @chainable
         */
        oo.EventEmitter.prototype.disconnect = function ( context, methods ) {
@@ -1109,8 +1134,10 @@ oo.isPlainObject = $.isPlainObject;
                // Remove the item from the current index
                this.items.splice( existingIndex, 1 );
 
-               // Adjust new index after removal
-               newIndex--;
+               // If necessary, adjust new index after removal
+               if ( existingIndex < newIndex ) {
+                       newIndex--;
+               }
 
                // Move the item to the new index
                this.items.splice( newIndex, 0, item );
@@ -1572,6 +1599,8 @@ oo.Factory.prototype.create = function ( name ) {
 };
 
 /* eslint-env node */
+
+/* istanbul ignore next */
 if ( typeof module !== 'undefined' && module.exports ) {
        module.exports = oo;
 } else {
index 3064b42..e00298f 100644 (file)
@@ -1,41 +1,37 @@
 /**
  * @class jQuery.plugin.getAttrs
  */
+( function ( $ ) {
+       function serializeControls( controls ) {
+               var i,
+                       data = {},
+                       len = controls.length;
 
-function serializeControls( controls ) {
-       var i,
-               data = {},
-               len = controls.length;
+               for ( i = 0; i < len; i++ ) {
+                       data[ controls[ i ].name ] = controls[ i ].value;
+               }
 
-       for ( i = 0; i < len; i++ ) {
-               data[ controls[ i ].name ] = controls[ i ].value;
+               return data;
        }
 
-       return data;
-}
+       /**
+        * Get the attributes of an element directy as a plain object.
+        *
+        * If there is more than one element in the collection, similar to most other jQuery getter methods,
+        * this will use the first element in the collection.
+        *
+        * @return {Object}
+        */
+       $.fn.getAttrs = function () {
+               return serializeControls( this[ 0 ].attributes );
+       };
 
-/**
- * Get the attributes of an element directy as a plain object.
- *
- * If there is more than one element in the collection, similar to most other jQuery getter methods,
- * this will use the first element in the collection.
- *
- * @return {Object}
- */
-jQuery.fn.getAttrs = function () {
-       return serializeControls( this[ 0 ].attributes );
-};
-
-/**
- * Get form data as a plain object mapping form control names to their values.
- *
- * @return {Object}
- */
-jQuery.fn.serializeObject = function () {
-       return serializeControls( this.serializeArray() );
-};
-
-/**
- * @class jQuery
- * @mixins jQuery.plugin.getAttrs
- */
+       /**
+        * Get form data as a plain object mapping form control names to their values.
+        *
+        * @return {Object}
+        */
+       $.fn.serializeObject = function () {
+               return serializeControls( this.serializeArray() );
+       };
+}( jQuery ) );
index 7296811..5ce9b1f 100644 (file)
                if ( $defaultToggle === undefined ) {
                        $defaultToggle = null;
                }
-               if ( $defaultToggle !== null && !$defaultToggle.jquery ) {
-                       // is optional (may be undefined), but if defined it must be an instance of jQuery.
-                       // If it's not, abort right away.
-                       // After this $defaultToggle is either null or a valid jQuery instance.
-                       return;
-               }
 
                // Trigger a custom event to allow callers to hook to the collapsing/expanding,
                // allowing the module to be testable, and making it possible to
                if ( e ) {
                        if (
                                e.type === 'click' &&
-                               options.linksPassthru &&
                                e.target.nodeName.toLowerCase() === 'a' &&
-                               $( e.target ).attr( 'href' ) &&
-                               $( e.target ).attr( 'href' ) !== '#'
+                               $( e.target ).attr( 'href' )
                        ) {
-                               // Don't fire if a link with href !== '#' was clicked, if requested  (for premade togglers by default)
+                               // Don't fire if a link was clicked (for premade togglers)
                                return;
                        } else if ( e.type === 'keypress' && e.which !== 13 && e.which !== 32 ) {
                                // Only handle keypresses on the "Enter" or "Space" keys
                                .toggleClass( 'mw-collapsible-toggle-expanded', wasCollapsed );
                }
 
-               // Toggle the text ("Show"/"Hide"), if requested (for default togglers by default)
+               // Toggle the text ("Show"/"Hide") within elements tagged with mw-collapsible-text
                if ( options.toggleText ) {
                        collapseText = options.toggleText.collapseText;
                        expandText = options.toggleText.expandText;
 
-                       $textContainer = $toggle.find( '> a' );
-                       if ( !$textContainer.length ) {
-                               $textContainer = $toggle;
+                       $textContainer = $collapsible.find( '.mw-collapsible-text' );
+                       if ( $textContainer.length ) {
+                               $textContainer.text( wasCollapsed ? collapseText : expandText );
                        }
-                       $textContainer.text( wasCollapsed ? collapseText : expandText );
                }
 
                // And finally toggle the element state itself
 
                this.each( function () {
                        var $collapsible, collapseText, expandText, $caption, $toggle, actionHandler, buildDefaultToggleLink,
-                               premadeToggleHandler, $toggleLink, $firstItem, collapsibleId, $customTogglers, firstval;
+                               $toggleLink, $firstItem, collapsibleId, $customTogglers, firstval;
 
                        // Ensure class "mw-collapsible" is present in case .makeCollapsible()
                        // is called on element(s) that don't have it yet.
                                opts = $.extend( defaultOpts, options, opts );
                                togglingHandler( $( this ), $collapsible, e, opts );
                        };
+
                        // Default toggle link. Only build it when needed to avoid jQuery memory leaks (event data).
                        buildDefaultToggleLink = function () {
-                               return $( '<a>' )
-                                       .attr( {
-                                               role: 'button',
-                                               tabindex: 0
-                                       } )
+                               return $( '<a class="mw-collapsible-text"></a>' )
                                        .text( collapseText )
-                                       .wrap( '<span class="mw-collapsible-toggle"></span>' )
-                                               .parent()
-                                               .prepend( '<span class="mw-collapsible-bracket">[</span>' )
-                                               .append( '<span class="mw-collapsible-bracket">]</span>' )
+                                       .wrap( '<span class="mw-collapsible-toggle"></span>' ).parent()
+                                               .attr( {
+                                                       role: 'button',
+                                                       tabindex: 0
+                                               } )
+                                               .prepend( '<span>[</span>' )
+                                               .append( '<span>]</span>' )
                                                .on( 'click.mw-collapsible keypress.mw-collapsible', actionHandler );
                        };
 
-                       // Default handler for clicking on premade toggles
-                       premadeToggleHandler = function ( e, opts ) {
-                               var defaultOpts = { toggleClasses: true, linksPassthru: true };
-                               opts = $.extend( defaultOpts, options, opts );
-                               togglingHandler( $( this ), $collapsible, e, opts );
-                       };
-
                        // Check if this element has a custom position for the toggle link
                        // (ie. outside the container or deeper inside the tree)
                        if ( options.$customTogglers ) {
                                                if ( !$toggle.length ) {
                                                        $toggleLink = buildDefaultToggleLink().appendTo( $caption );
                                                } else {
-                                                       actionHandler = premadeToggleHandler;
                                                        $toggleLink = $toggle.on( 'click.mw-collapsible keypress.mw-collapsible', actionHandler )
                                                                .prop( 'tabIndex', 0 );
                                                }
                                                if ( !$toggle.length ) {
                                                        $toggleLink = buildDefaultToggleLink().prependTo( $firstItem.eq( -1 ) );
                                                } else {
-                                                       actionHandler = premadeToggleHandler;
                                                        $toggleLink = $toggle.on( 'click.mw-collapsible keypress.mw-collapsible', actionHandler )
                                                                .prop( 'tabIndex', 0 );
                                                }
                                                $toggleLink = buildDefaultToggleLink();
                                                $toggleLink.wrap( '<li class="mw-collapsible-toggle-li"></li>' ).parent().prependTo( $collapsible );
                                        } else {
-                                               actionHandler = premadeToggleHandler;
                                                $toggleLink = $toggle.on( 'click.mw-collapsible keypress.mw-collapsible', actionHandler )
                                                        .prop( 'tabIndex', 0 );
                                        }
                                        if ( !$toggle.length ) {
                                                $toggleLink = buildDefaultToggleLink().prependTo( $collapsible );
                                        } else {
-                                               actionHandler = premadeToggleHandler;
                                                $toggleLink = $toggle.on( 'click.mw-collapsible keypress.mw-collapsible', actionHandler )
                                                        .prop( 'tabIndex', 0 );
                                        }
index f84c091..8d019e5 100644 (file)
 
                // We allow a trailing percent sign, which we just strip. This works fine
                // if percents and regular numbers aren't being mixed.
-               ts.numberRegex = new RegExp( '^(' + '[-+\u2212]?[0-9][0-9,]*(\\.[0-9,]*)?(E[-+\u2212]?[0-9][0-9,]*)?' + // Fortran-style scientific
-               '|' + '[-+\u2212]?' + digitClass + '+[\\s\\xa0]*%?' + // Generic localised
-               ')$', 'i' );
+               ts.numberRegex = new RegExp(
+                       '^(' +
+                               '[-+\u2212]?[0-9][0-9,]*(\\.[0-9,]*)?(E[-+\u2212]?[0-9][0-9,]*)?' + // Fortran-style scientific
+                               '|' +
+                               '[-+\u2212]?' + digitClass + '+[\\s\\xa0]*%?' + // Generic localised
+                       ')$',
+                       'i'
+               );
        }
 
        function buildDateTable() {
                ts.dateRegex[ 0 ] = new RegExp( /^\s*(\d{1,2})[\,\.\-\/'\s]{1,2}(\d{1,2})[\,\.\-\/'\s]{1,2}(\d{2,4})\s*?/i );
 
                // Written Month name, dmy
-               ts.dateRegex[ 1 ] = new RegExp( '^\\s*(\\d{1,2})[\\,\\.\\-\\/\'\\s]+(' + regex + ')' + '[\\,\\.\\-\\/\'\\s]+(\\d{2,4})\\s*$', 'i' );
+               ts.dateRegex[ 1 ] = new RegExp(
+                       '^\\s*(\\d{1,2})[\\,\\.\\-\\/\'\\s]+(' +
+                               regex +
+                       ')' +
+                       '[\\,\\.\\-\\/\'\\s]+(\\d{2,4})\\s*$',
+                       'i'
+               );
 
                // Written Month name, mdy
-               ts.dateRegex[ 2 ] = new RegExp( '^\\s*(' + regex + ')' + '[\\,\\.\\-\\/\'\\s]+(\\d{1,2})[\\,\\.\\-\\/\'\\s]+(\\d{2,4})\\s*$', 'i' );
+               ts.dateRegex[ 2 ] = new RegExp(
+                       '^\\s*(' + regex + ')' +
+                       '[\\,\\.\\-\\/\'\\s]+(\\d{1,2})[\\,\\.\\-\\/\'\\s]+(\\d{2,4})\\s*$',
+                       'i'
+               );
 
        }
 
index f6a9c54..8cde703 100644 (file)
        $( function () {
                var editBox, scrollTop, $editForm;
 
-               // Make sure edit summary does not exceed byte limit
-               // TODO: Replace with this when $wgOOUIEditPage is removed:
-               // OO.ui.infuse( 'wpSummary' ).$input.byteLimit( 255 );
-               $( 'input#wpSummary, #wpSummary > input' ).byteLimit( 255 );
+               if ( $( '#editform' ).hasClass( 'mw-editform-ooui' ) ) {
+                       mw.loader.using( 'oojs-ui-core' ).then( function () {
+                               var wpSummary = OO.ui.infuse( $( '#wpSummaryWidget' ) );
+
+                               // Restore appropriate modifier keys for the accesskey in the 'title' attribute
+                               // TODO: This should be an OOjs UI feature, or somehow happen automatically after infusing.
+                               wpSummary.$input.updateTooltipAccessKeys();
+
+                               // Make sure edit summary does not exceed byte limit
+                               wpSummary.$input.byteLimit( 255 );
+
+                               // Show a byte-counter to users with how many bytes are left for their edit summary.
+                               // TODO: This looks a bit weird, as there is no unit in the UI, just numbers; showing
+                               // 'bytes' confused users in testing, and showing 'chars' would be a lie. See T42035.
+                               function updateSummaryLabelCount() {
+                                       wpSummary.setLabel( String( 255 - $.byteLength( wpSummary.getValue() ) ) );
+                               }
+                               wpSummary.on( 'change', updateSummaryLabelCount );
+                               // Initialise value
+                               updateSummaryLabelCount();
+                       } );
+               } else {
+                       // Make sure edit summary does not exceed byte limit
+                       $( '#wpSummary' ).byteLimit( 255 );
+               }
 
                // Restore the edit box scroll state following a preview operation,
                // and set up a form submission handler to remember this state.
index 15d0a39..53c1fbb 100644 (file)
                                                .revisions[ 0 ].diff.body;
                                        $wikiDiff.find( 'table.diff tbody' ).html( diffHtml );
                                        mw.hook( 'wikipage.diff' ).fire( $wikiDiff.find( 'table.diff' ) );
-                               } catch ( e ) {
+                               } catch ( err ) {
                                        // "result.blah is undefined" error, ignore
-                                       mw.log.warn( e );
+                                       mw.log.warn( err );
                                }
                                $wikiDiff.show();
                        } );
                                preview: true,
                                sectionpreview: section !== '',
                                disableeditsection: true,
+                               useskin: mw.config.get( 'skin' ),
                                uselang: mw.config.get( 'wgUserLanguage' )
                        } );
                        if ( section === 'new' ) {
index 8287264..093a26d 100644 (file)
@@ -25,7 +25,8 @@
        font-size: 0.9em;
 }
 
-#wpSummary {
+.mw-editform-ooui #wpSummaryWidget,
+.mw-editform-legacy #wpSummary {
        display: block;
        width: 80%;
        margin-bottom: 1em;
@@ -75,7 +76,7 @@
        line-height: 1.26;
 }
 
-.mw-editform-ooui #wpSummary {
+.mw-editform-ooui #wpSummaryWidget {
        max-width: none;
 }
 
diff --git a/resources/src/mediawiki.action/mediawiki.action.view.postEdit.css b/resources/src/mediawiki.action/mediawiki.action.view.postEdit.css
deleted file mode 100644 (file)
index a5ca65e..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-.postedit-container {
-       margin: 0 auto;
-       position: fixed;
-       top: 0;
-       height: 0;
-       left: 50%;
-       z-index: 1000;
-       font-size: 13px;
-}
-
-.postedit-container:hover {
-       cursor: pointer;
-}
-
-.postedit {
-       position: relative;
-       top: 0.6em;
-       left: -50%;
-       padding: 0.6em 3.6em 0.6em 1.1em;
-       line-height: 1.5625em;
-       color: #626465;
-       background-color: #f4f4f4;
-       border: 1px solid #dcd9d9;
-       text-shadow: 0 0.0625em 0 rgba( 255, 255, 255, 0.5 );
-       border-radius: 5px;
-       box-shadow: 0 2px 5px 0 #ccc;
-       -webkit-transition: all 0.25s ease-in-out;
-       -moz-transition: all 0.25s ease-in-out;
-       -ms-transition: all 0.25s ease-in-out;
-       -o-transition: all 0.25s ease-in-out;
-       transition: all 0.25s ease-in-out;
-}
-
-.skin-monobook .postedit {
-       top: 6em !important; /* stylelint-disable-line declaration-no-important */
-}
-
-.postedit-faded {
-       opacity: 0;
-}
-
-.postedit-icon {
-       padding-left: 41px; /* 25 + 8 + 8 */
-       /* like min-height, but old IE compatible and keeps text vertically aligned, too */
-       line-height: 25px;
-       background-repeat: no-repeat;
-       background-position: 8px 50%;
-}
-
-.postedit-icon-checkmark {
-       /* @embed */
-       background-image: url( images/green-checkmark.png );
-       background-position: left;
-}
-
-.postedit-close {
-       position: absolute;
-       padding: 0 0.8em;
-       right: 0;
-       top: 0;
-       font-size: 1.25em;
-       font-weight: bold;
-       line-height: 2.3em;
-       color: #000;
-       text-shadow: 0 0.0625em 0 #fff;
-       text-decoration: none;
-       opacity: 0.2;
-       filter: alpha( opacity=20 );
-}
-
-.postedit-close:hover {
-       color: #000;
-       text-decoration: none;
-       opacity: 0.4;
-       filter: alpha( opacity=40 );
-}
index 5dfdede..e25c96a 100644 (file)
         * @member mw.hook
         */
 
-       var config = mw.config.get( [ 'wgAction', 'wgCurRevisionId' ] ),
-               // This should match EditPage::POST_EDIT_COOKIE_KEY_PREFIX:
-               cookieKey = 'PostEditRevision' + config.wgCurRevisionId,
-               cookieVal, $div, id;
-
-       function removeConfirmation() {
-               $div.remove();
-               mw.hook( 'postEdit.afterRemoval' ).fire();
-       }
-
-       function fadeOutConfirmation() {
-               clearTimeout( id );
-               $div.find( '.postedit' ).addClass( 'postedit postedit-faded' );
-               setTimeout( removeConfirmation, 500 );
-
-               return false;
-       }
+       var postEdit = mw.config.get( 'wgPostEdit' );
 
        function showConfirmation( data ) {
+               var $container, $popup, $content, timeoutId;
+
+               function fadeOutConfirmation() {
+                       $popup.addClass( 'postedit-faded' );
+                       setTimeout( function () {
+                               $container.remove();
+                               mw.hook( 'postEdit.afterRemoval' ).fire();
+                       }, 250 );
+               }
+
                data = data || {};
+
                if ( data.message === undefined ) {
                        data.message = $.parseHTML( mw.message( 'postedit-confirmation-saved', data.user || mw.user ).escaped() );
                }
 
-               $div = mw.template.get( 'mediawiki.action.view.postEdit', 'postEdit.html' ).render();
-
+               $content = $( '<div>' ).addClass( 'postedit-icon postedit-icon-checkmark postedit-content' );
                if ( typeof data.message === 'string' ) {
-                       $div.find( '.postedit-content' ).text( data.message );
+                       $content.text( data.message );
                } else if ( typeof data.message === 'object' ) {
-                       $div.find( '.postedit-content' ).append( data.message );
+                       $content.append( data.message );
                }
 
-               $div
-                       .click( fadeOutConfirmation )
-                       .prependTo( 'body' );
+               $popup = $( '<div>' ).addClass( 'postedit mw-notification' ).append(
+                       $content,
+                       $( '<a>' ).addClass( 'postedit-close' ).attr( 'href', '#' ).text( '×' )
+               ).on( 'click', function ( e ) {
+                       e.preventDefault();
+                       clearTimeout( timeoutId );
+                       fadeOutConfirmation();
+               } );
+
+               $container = $( '<div>' ).addClass( 'postedit-container' ).append( $popup );
+               timeoutId = setTimeout( fadeOutConfirmation, 3000 );
 
-               id = setTimeout( fadeOutConfirmation, 3000 );
+               $( 'body' ).prepend( $container );
        }
 
        mw.hook( 'postEdit' ).add( showConfirmation );
 
-       // Only when viewing wiki pages, that exist
-       // (E.g. not on special pages or non-view actions)
-       if ( config.wgCurRevisionId && config.wgAction === 'view' ) {
-               cookieVal = mw.cookie.get( cookieKey );
-               if ( cookieVal ) {
-                       mw.config.set( 'wgPostEdit', true );
-
-                       mw.hook( 'postEdit' ).fire( {
-                               // The following messages can be used here:
-                               // postedit-confirmation-saved
-                               // postedit-confirmation-created
-                               // postedit-confirmation-restored
-                               message: mw.msg(
-                                       'postedit-confirmation-' + cookieVal,
-                                       mw.user
-                               )
-                       } );
-
-                       mw.cookie.set( cookieKey, null );
-               }
+       if ( postEdit ) {
+               mw.hook( 'postEdit' ).fire( {
+                       // The following messages can be used here:
+                       // postedit-confirmation-saved
+                       // postedit-confirmation-created
+                       // postedit-confirmation-restored
+                       message: mw.msg(
+                               'postedit-confirmation-' + postEdit,
+                               mw.user
+                       )
+               } );
        }
 
 }( mediaWiki, jQuery ) );
diff --git a/resources/src/mediawiki.action/mediawiki.action.view.postEdit.less b/resources/src/mediawiki.action/mediawiki.action.view.postEdit.less
new file mode 100644 (file)
index 0000000..8094559
--- /dev/null
@@ -0,0 +1,71 @@
+@import 'mediawiki.mixins';
+
+.postedit-container {
+       margin: 0 auto;
+       position: fixed;
+       top: 0;
+       height: 0;
+       left: 50%;
+       z-index: 1000;
+       font-size: 13px;
+
+       &:hover {
+               cursor: pointer;
+       }
+}
+
+.postedit {
+       position: relative;
+       top: 0.6em;
+       left: -50%;
+       line-height: 1.35;
+       opacity: 1;
+       .transition( opacity 250ms );
+
+       &.mw-notification {
+               padding-right: 3em;
+       }
+}
+
+// TODO: Move to monobook skin
+.skin-monobook .postedit {
+       top: 6em !important; /* stylelint-disable-line declaration-no-important */
+}
+
+.postedit-faded {
+       opacity: 0;
+}
+
+.postedit-icon {
+       padding-left: 41px; /* 25 + 8 + 8 */
+       /* like min-height, but old IE compatible and keeps text vertically aligned, too */
+       line-height: 25px;
+       background-repeat: no-repeat;
+       background-position: 8px 50%;
+}
+
+.postedit-icon-checkmark {
+       /* @embed */
+       background-image: url( images/green-checkmark.png );
+       background-position: left;
+}
+
+.postedit-close {
+       position: absolute;
+       padding: 0 0.8em;
+       right: 0;
+       top: 0;
+       font-size: 1.25em;
+       font-weight: bold;
+       line-height: 2.3em;
+       color: #000;
+       text-shadow: 0 0.0625em 0 #fff;
+       text-decoration: none;
+       opacity: 0.2;
+
+       .postedit:hover & {
+               color: #000;
+               text-decoration: none;
+               opacity: 0.4;
+       }
+}
diff --git a/resources/src/mediawiki.action/templates/postEdit.html b/resources/src/mediawiki.action/templates/postEdit.html
deleted file mode 100644 (file)
index dbb482a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<div class="postedit-container">
-       <div class="postedit">
-               <div class="postedit-icon postedit-icon-checkmark postedit-content"></div>
-               <a href="#" class="postedit-close">&times;</a>
-       </div>
-</div>
index 2933827..f0a86ff 100644 (file)
                                }
                        }
                },
+               {
+                       "label": "‹›",
+                       "action": {
+                               "type": "encapsulate",
+                               "options": {
+                                       "pre": "‹",
+                                       "post": "›"
+                               }
+                       }
+               },
+               {
+                       "label": "⟨⟩",
+                       "action": {
+                               "type": "encapsulate",
+                               "options": {
+                                       "pre": "⟨",
+                                       "post": "⟩"
+                               }
+                       }
+               },
                "¤", "₳", "฿", "₵", "¢", "₡", "₢", "$", "₫", "₯", "€", "₠", "₣", "ƒ", "₴", "₭", "₤", "ℳ", "₥", "₦", "№", "₧", "₰", "£", "៛", "₨", "₪", "৳", "₮", "₩", "¥", "♠", "♣", "♥", "♦", "m²", "m³",
                {
                        "label": "–",
@@ -73,7 +93,7 @@
                                }
                        }
                },
-               "…", "‘", "’", "“", "”", "°", "′", "″", "≈", "≠", "≤", "≥", "±",
+               "…", "‘", "’", "“", "”", "°", "%", "‰", "′", "″", "≈", "≠", "≤", "≥", "±",
                {
                        "label": "−",
                        "titleMsg": "special-characters-title-minus",
index e3e80d8..b4418e5 100644 (file)
@@ -121,7 +121,8 @@ img {
        margin: 0 !important; /* stylelint-disable-line declaration-no-important */
 }
 
-#toc {
+#toc,
+.toc {
        background-color: #f9f9f9;
        border: 1pt solid #aaa;
        padding: 5px;
index 8d7a2a9..8839a2c 100644 (file)
@@ -636,7 +636,8 @@ ol:lang( sdh ) li {
 }
 
 ol:lang( hi ) li,
-ol:lang( mr ) li {
+ol:lang( mr ) li,
+ol:lang( ne ) li {
        list-style-type: -moz-devanagari;
        list-style-type: devanagari;
 }
index 1e952b0..fb3b00e 100644 (file)
        background-image: -o-linear-gradient( transparent, transparent ), url( @fallback );
 }
 
+// Shorthand for background-image-svg. Use if your PNG and SVG have the same name
+// and only if you cannot use ResourceLoaderImage module for some particular reason.
+.background-image-svg-quick( @url ) {
+       .background-image-svg( ~'@{url}.svg', ~'@{url}.png' );
+}
+
 .list-style-image( @url ) {
        list-style-image: e( '/* @embed */' ) url( @url );
 }
        list-style-image: e( '/* @embed */' ) url( @fallback ) e( '\9' );
 }
 
+.transform( @value ) {
+       -webkit-transform: @value; // Safari 3.1-8.0, iOS 3.2-8.4, Android 2.1-4.4.4
+       -moz-transform: @value; // Firefox 3.5-15
+       transform: @value; // Chrome 36+, Firefox 16+, IE 10+, Safari 9+, Opera 23+, iOS 9.2+, Android 5+
+}
+
 .transition( @value ) {
        -webkit-transition: @value; // Safari 3.1-6.0, iOS 3.2-6.1, Android 2.1-4.3
        -moz-transition: @value; // Firefox 4-15
        transition: @value; // Chrome 26+, Firefox 16+, IE 10+, Safari 6.1+, Opera 12.1+, iOS 7+, Android 4.4+
 }
 
+// Provide a hardware accelerated transform transition
+// We can't use `.transition()` because WebKit requires `-webkit-` prefix before `transform`
+// Example usage: `.transition-transform( 1s, opacity 2s );`
+// First parameter is additional options for `transform` transition commencing with
+// duration property @see https://www.w3.org/TR/css3-transitions/#transition-duration-property
+// and remaining parameters are additional transitions."
+.transition-transform( ... ) {
+       -webkit-backface-visibility: hidden; // Older Webkit browsers: Promote element to a composite layer & involve the GPU
+
+       -webkit-transition: -webkit-transform @arguments; // Safari 3.1-8, iOS 3.2-8.4, Android 2.1-4.4.4
+       -moz-transition: -moz-transform @arguments; // Firefox 4-15 for `-moz-transition`
+       transition: transform @arguments; // Chrome 36+, Firefox 16+, IE 10+, Safari 9+, Opera 12.1+, iOS 9.2+, Android 36+
+}
+
 .box-sizing( @value ) {
        -webkit-box-sizing: @value; // Safari 3.1-5.0, iOS 3.2-4.3, Android 2.1-3.0
        -moz-box-sizing: @value; // Firefox 4-28,
index 3ec544c..bec40b4 100644 (file)
@@ -9,11 +9,16 @@
         * @param {string} name Group name
         * @param {Object} [config] Configuration options
         * @cfg {string} [type='send_unselected_if_any'] Group type
+        * @cfg {string} [view='default'] Name of the display group this group
+        *  is a part of.
         * @cfg {string} [title] Group title
         * @cfg {string} [separator='|'] Value separator for 'string_options' groups
         * @cfg {boolean} [active] Group is active
         * @cfg {boolean} [fullCoverage] This filters in this group collectively cover all results
         * @cfg {Object} [conflicts] Defines the conflicts for this filter group
+        * @cfg {string|Object} [labelPrefixKey] An i18n key defining the prefix label for this
+        *  group. If the prefix has 'invert' state, the parameter is expected to be an object
+        *  with 'default' and 'inverted' as keys.
         * @cfg {Object} [whatsThis] Defines the messages that should appear for the 'what's this' popup
         * @cfg {string} [whatsThis.header] The header of the whatsThis popup message
         * @cfg {string} [whatsThis.body] The body of the whatsThis popup message
 
                this.name = name;
                this.type = config.type || 'send_unselected_if_any';
+               this.view = config.view || 'default';
                this.title = config.title;
                this.separator = config.separator || '|';
+               this.labelPrefixKey = config.labelPrefixKey;
 
                this.active = !!config.active;
                this.fullCoverage = !!config.fullCoverage;
@@ -38,6 +45,7 @@
                this.whatsThis = config.whatsThis || {};
 
                this.conflicts = config.conflicts || {};
+               this.defaultParams = {};
 
                this.aggregate( { update: 'filterItemUpdate' } );
                this.connect( this, { filterItemUpdate: 'onFilterItemUpdate' } );
 
        /* Methods */
 
+       /**
+        * Initialize the group and create its filter items
+        *
+        * @param {Object} filterDefinition Filter definition for this group
+        * @param {string|Object} [groupDefault] Definition of the group default
+        */
+       mw.rcfilters.dm.FilterGroup.prototype.initializeFilters = function ( filterDefinition, groupDefault ) {
+               var supersetMap = {},
+                       model = this,
+                       items = [];
+
+               filterDefinition.forEach( function ( filter ) {
+                       // Instantiate an item
+                       var subsetNames = [],
+                               filterItem = new mw.rcfilters.dm.FilterItem( filter.name, model, {
+                                       group: model.getName(),
+                                       label: filter.label || filter.name,
+                                       description: filter.description || '',
+                                       labelPrefixKey: model.labelPrefixKey,
+                                       cssClass: filter.cssClass,
+                                       identifiers: filter.identifiers
+                               } );
+
+                       filter.subset = filter.subset || [];
+                       filter.subset = filter.subset.map( function ( el ) {
+                               return el.filter;
+                       } );
+
+                       if ( filter.subset ) {
+                               subsetNames = [];
+                               filter.subset.forEach( function ( subsetFilterName ) { // eslint-disable-line no-loop-func
+                                       // Subsets (unlike conflicts) are always inside the same group
+                                       // We can re-map the names of the filters we are getting from
+                                       // the subsets with the group prefix
+                                       var subsetName = model.getPrefixedName( subsetFilterName );
+                                       // For convenience, we should store each filter's "supersets" -- these are
+                                       // the filters that have that item in their subset list. This will just
+                                       // make it easier to go through whether the item has any other items
+                                       // that affect it (and are selected) at any given time
+                                       supersetMap[ subsetName ] = supersetMap[ subsetName ] || [];
+                                       mw.rcfilters.utils.addArrayElementsUnique(
+                                               supersetMap[ subsetName ],
+                                               filterItem.getName()
+                                       );
+
+                                       // Translate subset param name to add the group name, so we
+                                       // get consistent naming. We know that subsets are only within
+                                       // the same group
+                                       subsetNames.push( subsetName );
+                               } );
+
+                               // Set translated subset
+                               filterItem.setSubset( subsetNames );
+                       }
+
+                       items.push( filterItem );
+
+                       // Store default parameter state; in this case, default is defined per filter
+                       if ( model.getType() === 'send_unselected_if_any' ) {
+                               // Store the default parameter state
+                               // For this group type, parameter values are direct
+                               // We need to convert from a boolean to a string ('1' and '0')
+                               model.defaultParams[ filter.name ] = String( Number( !!filter.default ) );
+                       }
+               } );
+
+               // Add items
+               this.addItems( items );
+
+               // Now that we have all items, we can apply the superset map
+               this.getItems().forEach( function ( filterItem ) {
+                       filterItem.setSuperset( supersetMap[ filterItem.getName() ] );
+               } );
+
+               // Store default parameter state; in this case, default is defined per the
+               // entire group, given by groupDefault method parameter
+               if ( this.getType() === 'string_options' ) {
+                       // Store the default parameter group state
+                       // For this group, the parameter is group name and value is the names
+                       // of selected items
+                       this.defaultParams[ this.getName() ] = mw.rcfilters.utils.normalizeParamOptions(
+                               // Current values
+                               groupDefault ?
+                                       groupDefault.split( this.getSeparator() ) :
+                                       [],
+                               // Legal values
+                               this.getItems().map( function ( item ) {
+                                       return item.getParamName();
+                               } )
+                       ).join( this.getSeparator() );
+               }
+       };
+
        /**
         * Respond to filterItem update event
         *
                return this.name;
        };
 
+       /**
+        * Get the default param state of this group
+        *
+        * @return {Object} Default param state
+        */
+       mw.rcfilters.dm.FilterGroup.prototype.getDefaultParams = function () {
+               return this.defaultParams;
+       };
+
        /**
         * Get the messags defining the 'whats this' popup for this group
         *
                this.conflicts = conflicts;
        };
 
+       /**
+        * Set conflicts for each filter item in the group based on the
+        * given conflict map
+        *
+        * @param {Object} conflicts Object representing the conflict map,
+        *  keyed by the item name, where its value is an object for all its conflicts
+        */
+       mw.rcfilters.dm.FilterGroup.prototype.setFilterConflicts = function ( conflicts ) {
+               this.getItems().forEach( function ( filterItem ) {
+                       if ( conflicts[ filterItem.getName() ] ) {
+                               filterItem.setConflicts( conflicts[ filterItem.getName() ] );
+                       }
+               } );
+       };
+
        /**
         * Check whether this item has a potential conflict with the given item
         *
         * @return {boolean} All items are selected
         */
        mw.rcfilters.dm.FilterGroup.prototype.areAllSelected = function () {
-               return this.getItems().every( function ( filterItem ) {
-                       return filterItem.isSelected();
+               var selected = [],
+                       unselected = [];
+
+               this.getItems().forEach( function ( filterItem ) {
+                       if ( filterItem.isSelected() ) {
+                               selected.push( filterItem );
+                       } else {
+                               unselected.push( filterItem );
+                       }
+               } );
+
+               if ( unselected.length === 0 ) {
+                       return true;
+               }
+
+               // check if every unselected is a subset of a selected
+               return unselected.every( function ( unselectedFilterItem ) {
+                       return selected.some( function ( selectedFilterItem ) {
+                               return selectedFilterItem.existsInSubset( unselectedFilterItem.getName() );
+                       } );
                } );
        };
 
        /**
         * Get the parameter representation from this group
         *
+        * @param {Object} [filterRepresentation] An object defining the state
+        *  of the filters in this group, keyed by their name and current selected
+        *  state value.
         * @return {Object} Parameter representation
         */
-       mw.rcfilters.dm.FilterGroup.prototype.getParamRepresentation = function () {
-               var i, values,
+       mw.rcfilters.dm.FilterGroup.prototype.getParamRepresentation = function ( filterRepresentation ) {
+               var values,
+                       areAnySelected = false,
+                       buildFromCurrentState = !filterRepresentation,
                        result = {},
-                       filterItems = this.getItems();
+                       filterParamNames = {};
+
+               filterRepresentation = filterRepresentation || {};
+
+               // Create or complete the filterRepresentation definition
+               this.getItems().forEach( function ( item ) {
+                       // Map filter names to their parameter names
+                       filterParamNames[ item.getName() ] = item.getParamName();
+
+                       if ( buildFromCurrentState ) {
+                               // This means we have not been given a filter representation
+                               // so we are building one based on current state
+                               filterRepresentation[ item.getName() ] = item.isSelected();
+                       } else if ( !filterRepresentation[ item.getName() ] ) {
+                               // We are given a filter representation, but we have to make
+                               // sure that we fill in the missing filters if there are any
+                               // we will assume they are all falsey
+                               filterRepresentation[ item.getName() ] = false;
+                       }
 
+                       if ( filterRepresentation[ item.getName() ] ) {
+                               areAnySelected = true;
+                       }
+               } );
+
+               // Build result
                if ( this.getType() === 'send_unselected_if_any' ) {
                        // First, check if any of the items are selected at all.
                        // If none is selected, we're treating it as if they are
                        // all false
 
                        // Go over the items and define the correct values
-                       for ( i = 0; i < filterItems.length; i++ ) {
-                               result[ filterItems[ i ].getParamName() ] = this.areAnySelected() ?
-                                       Number( !filterItems[ i ].isSelected() ) : 0;
-                       }
-
+                       $.each( filterRepresentation, function ( name, value ) {
+                               result[ filterParamNames[ name ] ] = areAnySelected ?
+                                       // We must store all parameter values as strings '0' or '1'
+                                       String( Number( !value ) ) :
+                                       '0';
+                       } );
                } else if ( this.getType() === 'string_options' ) {
                        values = [];
-                       for ( i = 0; i < filterItems.length; i++ ) {
-                               if ( filterItems[ i ].isSelected() ) {
-                                       values.push( filterItems[ i ].getParamName() );
+
+                       $.each( filterRepresentation, function ( name, value ) {
+                               // Collect values
+                               if ( value ) {
+                                       values.push( filterParamNames[ name ] );
                                }
-                       }
+                       } );
 
-                       result[ this.getName() ] = ( values.length === filterItems.length ) ?
+                       result[ this.getName() ] = ( values.length === Object.keys( filterRepresentation ).length ) ?
                                'all' : values.join( this.getSeparator() );
                }
 
                return result;
        };
 
+       /**
+        * Get the filter representation this group would provide
+        * based on given parameter states.
+        *
+        * @param {Object|string} [paramRepresentation] An object defining a parameter
+        *  state to translate the filter state from. If not given, an object
+        *  representing all filters as falsey is returned; same as if the parameter
+        *  given were an empty object, or had some of the filters missing.
+        * @return {Object} Filter representation
+        */
+       mw.rcfilters.dm.FilterGroup.prototype.getFilterRepresentation = function ( paramRepresentation ) {
+               var areAnySelected, paramValues,
+                       model = this,
+                       paramToFilterMap = {},
+                       result = {};
+
+               if ( this.getType() === 'send_unselected_if_any' ) {
+                       paramRepresentation = paramRepresentation || {};
+                       // Expand param representation to include all filters in the group
+                       this.getItems().forEach( function ( filterItem ) {
+                               var paramName = filterItem.getParamName();
+
+                               paramRepresentation[ paramName ] = paramRepresentation[ paramName ] || '0';
+                               paramToFilterMap[ paramName ] = filterItem;
+
+                               if ( Number( paramRepresentation[ filterItem.getParamName() ] ) ) {
+                                       areAnySelected = true;
+                               }
+                       } );
+
+                       $.each( paramRepresentation, function ( paramName, paramValue ) {
+                               var filterItem = paramToFilterMap[ paramName ];
+
+                               result[ filterItem.getName() ] = areAnySelected ?
+                                       // Flip the definition between the parameter
+                                       // state and the filter state
+                                       // This is what the 'toggleSelected' value of the filter is
+                                       !Number( paramValue ) :
+                                       // Otherwise, there are no selected items in the
+                                       // group, which means the state is false
+                                       false;
+                       } );
+               } else if ( this.getType() === 'string_options' ) {
+                       paramRepresentation = paramRepresentation || '';
+
+                       // Normalize the given parameter values
+                       paramValues = mw.rcfilters.utils.normalizeParamOptions(
+                               // Given
+                               paramRepresentation.split(
+                                       this.getSeparator()
+                               ),
+                               // Allowed values
+                               this.getItems().map( function ( filterItem ) {
+                                       return filterItem.getParamName();
+                               } )
+                       );
+                       // Translate the parameter values into a filter selection state
+                       this.getItems().forEach( function ( filterItem ) {
+                               result[ filterItem.getName() ] = (
+                                               // If it is the word 'all'
+                                               paramValues.length === 1 && paramValues[ 0 ] === 'all' ||
+                                               // All values are written
+                                               paramValues.length === model.getItemCount()
+                                       ) ?
+                                       // All true (either because all values are written or the term 'all' is written)
+                                       // is the same as all filters set to true
+                                       true :
+                                       // Otherwise, the filter is selected only if it appears in the parameter values
+                                       paramValues.indexOf( filterItem.getParamName() ) > -1;
+                       } );
+               }
+
+               // Go over result and make sure all filters are represented.
+               // If any filters are missing, they will get a falsey value
+               this.getItems().forEach( function ( filterItem ) {
+                       result[ filterItem.getName() ] = !!result[ filterItem.getName() ];
+               } );
+
+               return result;
+       };
+
+       /**
+        * Get item by its parameter name
+        *
+        * @param {string} paramName Parameter name
+        * @return {mw.rcfilters.dm.FilterItem} Filter item
+        */
+       mw.rcfilters.dm.FilterGroup.prototype.getItemByParamName = function ( paramName ) {
+               return this.getItems().filter( function ( item ) {
+                       return item.getParamName() === paramName;
+               } )[ 0 ];
+       };
+
        /**
         * Get group type
         *
        };
 
        /**
-        * Get the prefix used for the filter names inside this group
+        * Get display group
         *
+        * @return {string} Display group
+        */
+       mw.rcfilters.dm.FilterGroup.prototype.getView = function () {
+               return this.view;
+       };
+
+       /**
+        * Get the prefix used for the filter names inside this group.
+        *
+        * @param {string} [name] Filter name to prefix
         * @return {string} Group prefix
         */
        mw.rcfilters.dm.FilterGroup.prototype.getNamePrefix = function () {
                return this.getName() + '__';
        };
 
+       /**
+        * Get a filter name with the prefix used for the filter names inside this group.
+        *
+        * @param {string} name Filter name to prefix
+        * @return {string} Group prefix
+        */
+       mw.rcfilters.dm.FilterGroup.prototype.getPrefixedName = function ( name ) {
+               return this.getNamePrefix() + name;
+       };
+
        /**
         * Get group's title
         *
index 221d2a5..4e2079d 100644 (file)
@@ -2,36 +2,28 @@
        /**
         * Filter item model
         *
-        * @mixins OO.EventEmitter
+        * @extends mw.rcfilters.dm.ItemModel
         *
         * @constructor
         * @param {string} param Filter param name
         * @param {mw.rcfilters.dm.FilterGroup} groupModel Filter group model
         * @param {Object} config Configuration object
-        * @cfg {string} [group] The group this item belongs to
-        * @cfg {string} [label] The label for the filter
-        * @cfg {string} [description] The description of the filter
-        * @cfg {boolean} [active=true] The filter is active and affecting the result
         * @cfg {string[]} [excludes=[]] A list of filter names this filter, if
         *  selected, makes inactive.
-        * @cfg {boolean} [selected] The item is selected
         * @cfg {string[]} [subset] Defining the names of filters that are a subset of this filter
         * @cfg {Object} [conflicts] Defines the conflicts for this filter
-        * @cfg {string} [cssClass] The class identifying the results that match this filter
         */
        mw.rcfilters.dm.FilterItem = function MwRcfiltersDmFilterItem( param, groupModel, config ) {
                config = config || {};
 
-               // Mixin constructor
-               OO.EventEmitter.call( this );
-
-               this.param = param;
                this.groupModel = groupModel;
-               this.name = this.groupModel.getNamePrefix() + param;
 
-               this.label = config.label || this.name;
-               this.description = config.description;
-               this.selected = !!config.selected;
+               // Parent
+               mw.rcfilters.dm.FilterItem.parent.call( this, param, $.extend( {
+                       namePrefix: this.groupModel.getNamePrefix()
+               }, config ) );
+               // Mixin constructor
+               OO.EventEmitter.call( this );
 
                // Interaction definitions
                this.subset = config.subset || [];
                this.included = false;
                this.conflicted = false;
                this.fullyCovered = false;
-
-               // Highlight
-               this.cssClass = config.cssClass;
-               this.highlightColor = null;
-               this.highlightEnabled = false;
        };
 
        /* Initialization */
 
-       OO.initClass( mw.rcfilters.dm.FilterItem );
-       OO.mixinClass( mw.rcfilters.dm.FilterItem, OO.EventEmitter );
-
-       /* Events */
-
-       /**
-        * @event update
-        *
-        * The state of this filter has changed
-        */
+       OO.inheritClass( mw.rcfilters.dm.FilterItem, mw.rcfilters.dm.ItemModel );
 
        /* Methods */
 
                };
        };
 
-       /**
-        * Get the name of this filter
-        *
-        * @return {string} Filter name
-        */
-       mw.rcfilters.dm.FilterItem.prototype.getName = function () {
-               return this.name;
-       };
-
-       /**
-        * Get the param name or value of this filter
-        *
-        * @return {string} Filter param name
-        */
-       mw.rcfilters.dm.FilterItem.prototype.getParamName = function () {
-               return this.param;
-       };
-
        /**
         * Get the message for the display area for the currently active conflict
         *
+        * @private
         * @return {string} Conflict result message key
         */
        mw.rcfilters.dm.FilterItem.prototype.getCurrentConflictResultMessage = function () {
        /**
         * Get the details of the active conflict on this filter
         *
+        * @private
         * @param {Object} conflicts Conflicts to examine
         * @param {string} [key='contextDescription'] Message key
         * @return {Object} Object with conflict message and conflict items
        };
 
        /**
-        * Get the message representing the state of this model.
-        *
-        * @return {string} State message
+        * @inheritdoc
         */
        mw.rcfilters.dm.FilterItem.prototype.getStateMessage = function () {
                var messageKey, details, superset,
                return this.groupModel.getName();
        };
 
-       /**
-        * Get the label of this filter
-        *
-        * @return {string} Filter label
-        */
-       mw.rcfilters.dm.FilterItem.prototype.getLabel = function () {
-               return this.label;
-       };
-
-       /**
-        * Get the description of this filter
-        *
-        * @return {string} Filter description
-        */
-       mw.rcfilters.dm.FilterItem.prototype.getDescription = function () {
-               return this.description;
-       };
-
-       /**
-        * Get the default value of this filter
-        *
-        * @return {boolean} Filter default
-        */
-       mw.rcfilters.dm.FilterItem.prototype.getDefault = function () {
-               return this.default;
-       };
-
        /**
         * Get filter subset
         * This is a list of filter names that are defined to be included
                return this.superset;
        };
 
-       /**
-        * Get the selected state of this filter
-        *
-        * @return {boolean} Filter is selected
-        */
-       mw.rcfilters.dm.FilterItem.prototype.isSelected = function () {
-               return this.selected;
-       };
-
        /**
         * Check whether the filter is currently in a conflict state
         *
                }
        };
 
-       /**
-        * Toggle the selected state of the item
-        *
-        * @param {boolean} [isSelected] Filter is selected
-        * @fires update
-        */
-       mw.rcfilters.dm.FilterItem.prototype.toggleSelected = function ( isSelected ) {
-               isSelected = isSelected === undefined ? !this.selected : isSelected;
-
-               if ( this.selected !== isSelected ) {
-                       this.selected = isSelected;
-                       this.emit( 'update' );
-               }
-       };
-
        /**
         * Toggle the fully covered state of the item
         *
                        this.emit( 'update' );
                }
        };
-
-       /**
-        * Set the highlight color
-        *
-        * @param {string|null} highlightColor
-        */
-       mw.rcfilters.dm.FilterItem.prototype.setHighlightColor = function ( highlightColor ) {
-               if ( this.highlightColor !== highlightColor ) {
-                       this.highlightColor = highlightColor;
-                       this.emit( 'update' );
-               }
-       };
-
-       /**
-        * Clear the highlight color
-        */
-       mw.rcfilters.dm.FilterItem.prototype.clearHighlightColor = function () {
-               this.setHighlightColor( null );
-       };
-
-       /**
-        * Get the highlight color, or null if none is configured
-        *
-        * @return {string|null}
-        */
-       mw.rcfilters.dm.FilterItem.prototype.getHighlightColor = function () {
-               return this.highlightColor;
-       };
-
-       /**
-        * Get the CSS class that matches changes that fit this filter
-        * or null if none is configured
-        *
-        * @return {string|null}
-        */
-       mw.rcfilters.dm.FilterItem.prototype.getCssClass = function () {
-               return this.cssClass;
-       };
-
-       /**
-        * Toggle the highlight feature on and off for this filter.
-        * It only works if highlight is supported for this filter.
-        *
-        * @param {boolean} enable Highlight should be enabled
-        */
-       mw.rcfilters.dm.FilterItem.prototype.toggleHighlight = function ( enable ) {
-               enable = enable === undefined ? !this.highlightEnabled : enable;
-
-               if ( !this.isHighlightSupported() ) {
-                       return;
-               }
-
-               if ( enable === this.highlightEnabled ) {
-                       return;
-               }
-
-               this.highlightEnabled = enable;
-               this.emit( 'update' );
-       };
-
-       /**
-        * Check if the highlight feature is currently enabled for this filter
-        *
-        * @return {boolean}
-        */
-       mw.rcfilters.dm.FilterItem.prototype.isHighlightEnabled = function () {
-               return !!this.highlightEnabled;
-       };
-
-       /**
-        * Check if the highlight feature is supported for this filter
-        *
-        * @return {boolean}
-        */
-       mw.rcfilters.dm.FilterItem.prototype.isHighlightSupported = function () {
-               return !!this.getCssClass();
-       };
-
-       /**
-        * Check if the filter is currently highlighted
-        *
-        * @return {boolean}
-        */
-       mw.rcfilters.dm.FilterItem.prototype.isHighlighted = function () {
-               return this.isHighlightEnabled() && !!this.getHighlightColor();
-       };
 }( mediaWiki ) );
index 69210be..6825fa4 100644 (file)
                this.defaultParams = {};
                this.defaultFiltersEmpty = null;
                this.highlightEnabled = false;
+               this.invertedNamespaces = false;
                this.parameterMap = {};
 
+               this.views = {};
+               this.currentView = null;
+
                // Events
                this.aggregate( { update: 'filterItemUpdate' } );
                this.connect( this, { filterItemUpdate: [ 'emit', 'itemUpdate' ] } );
         * Filter list is initialized
         */
 
+       /**
+        * @event update
+        *
+        * Model has been updated
+        */
+
        /**
         * @event itemUpdate
         * @param {mw.rcfilters.dm.FilterItem} item Filter item updated
         * Highlight feature has been toggled enabled or disabled
         */
 
+       /**
+        * @event invertChange
+        * @param {boolean} isInverted Namespace selected is inverted
+        *
+        * Namespace selection is inverted or straight forward
+        */
+
        /* Methods */
 
        /**
         * the definition given by an object
         *
         * @param {Array} filters Filter group definition
+        * @param {Object} [namespaces] Namespace definition
+        * @param {Object[]} [tags] Tag array definition
         */
-       mw.rcfilters.dm.FiltersViewModel.prototype.initializeFilters = function ( filters ) {
-               var i, filterItem, filterConflictResult, groupConflictResult, subsetNames,
+       mw.rcfilters.dm.FiltersViewModel.prototype.initializeFilters = function ( filters, namespaces, tags ) {
+               var filterItem, filterConflictResult, groupConflictResult,
                        model = this,
                        items = [],
-                       supersetMap = {},
+                       namespaceDefinition = [],
                        groupConflictMap = {},
                        filterConflictMap = {},
-                       addArrayElementsUnique = function ( arr, elements ) {
-                               elements = Array.isArray( elements ) ? elements : [ elements ];
-
-                               elements.forEach( function ( element ) {
-                                       if ( arr.indexOf( element ) === -1 ) {
-                                               arr.push( element );
-                                       }
-                               } );
-
-                               return arr;
-                       },
+                       /*!
+                        * Expand a conflict definition from group name to
+                        * the list of all included filters in that group.
+                        * We do this so that the direct relationship in the
+                        * models are consistently item->items rather than
+                        * mixing item->group with item->item.
+                        *
+                        * @param {Object} obj Conflict definition
+                        * @return {Object} Expanded conflict definition
+                        */
                        expandConflictDefinitions = function ( obj ) {
                                var result = {};
 
                                                var filter;
 
                                                if ( conflict.filter ) {
-                                                       filterName = model.groups[ conflict.group ].getNamePrefix() + conflict.filter;
+                                                       filterName = model.groups[ conflict.group ].getPrefixedName( conflict.filter );
                                                        filter = model.getItemByName( filterName );
 
                                                        // Rename
                // Reset
                this.clearItems();
                this.groups = {};
+               this.views = {};
 
+               // Filters
+               this.views.default = { name: 'default', label: mw.msg( 'rcfilters-filterlist-title' ) };
                filters.forEach( function ( data ) {
-                       var group = data.name;
+                       var i,
+                               group = data.name;
 
                        if ( !model.groups[ group ] ) {
                                model.groups[ group ] = new mw.rcfilters.dm.FilterGroup( group, {
                                        type: data.type,
-                                       title: mw.msg( data.title ),
+                                       title: data.title ? mw.msg( data.title ) : group,
                                        separator: data.separator,
                                        fullCoverage: !!data.fullCoverage,
                                        whatsThis: {
                                } );
                        }
 
+                       // Filters are given to us with msg-keys, we need
+                       // to translate those before we hand them off
+                       for ( i = 0; i < data.filters.length; i++ ) {
+                               data.filters[ i ].label = data.filters[ i ].label ? mw.msg( data.filters[ i ].label ) : data.filters[ i ].name;
+                               data.filters[ i ].description = data.filters[ i ].description ? mw.msg( data.filters[ i ].description ) : '';
+                       }
+
+                       model.groups[ group ].initializeFilters( data.filters, data.default );
+                       items = items.concat( model.groups[ group ].getItems() );
+
+                       // Prepare conflicts
                        if ( data.conflicts ) {
+                               // Group conflicts
                                groupConflictMap[ group ] = data.conflicts;
                        }
 
                        for ( i = 0; i < data.filters.length; i++ ) {
-                               data.filters[ i ].subset = data.filters[ i ].subset || [];
-                               data.filters[ i ].subset = data.filters[ i ].subset.map( function ( el ) {
-                                       return el.filter;
-                               } );
+                               // Filter conflicts
+                               if ( data.filters[ i ].conflicts ) {
+                                       filterItem = model.groups[ group ].getItemByParamName( data.filters[ i ].name );
+                                       filterConflictMap[ filterItem.getName() ] = data.filters[ i ].conflicts;
+                               }
+                       }
+               } );
 
-                               filterItem = new mw.rcfilters.dm.FilterItem( data.filters[ i ].name, model.groups[ group ], {
-                                       group: group,
-                                       label: mw.msg( data.filters[ i ].label ),
-                                       description: mw.msg( data.filters[ i ].description ),
-                                       cssClass: data.filters[ i ].cssClass
+               namespaces = namespaces || {};
+               if (
+                       mw.config.get( 'wgStructuredChangeFiltersEnableExperimentalViews' ) &&
+                       !$.isEmptyObject( namespaces )
+               ) {
+                       // Namespaces group
+                       this.views.namespaces = { name: 'namespaces', label: mw.msg( 'namespaces' ), trigger: ':' };
+                       $.each( namespaces, function ( namespaceID, label ) {
+                               // Build and clean up the definition
+                               namespaceDefinition.push( {
+                                       name: namespaceID,
+                                       label: label || mw.msg( 'blanknamespace' ),
+                                       description: '',
+                                       identifiers: [
+                                               ( namespaceID < 0 || namespaceID % 2 === 0 ) ?
+                                                       'subject' : 'talk'
+                                       ],
+                                       cssClass: 'mw-changeslist-ns-' + namespaceID
                                } );
+                       } );
 
-                               if ( data.filters[ i ].subset ) {
-                                       subsetNames = [];
-                                       data.filters[ i ].subset.forEach( function ( subsetFilterName ) { // eslint-disable-line no-loop-func
-                                               var subsetName = model.groups[ group ].getNamePrefix() + subsetFilterName;
-                                               // For convenience, we should store each filter's "supersets" -- these are
-                                               // the filters that have that item in their subset list. This will just
-                                               // make it easier to go through whether the item has any other items
-                                               // that affect it (and are selected) at any given time
-                                               supersetMap[ subsetName ] = supersetMap[ subsetName ] || [];
-                                               addArrayElementsUnique(
-                                                       supersetMap[ subsetName ],
-                                                       filterItem.getName()
-                                               );
-
-                                               // Translate subset param name to add the group name, so we
-                                               // get consistent naming. We know that subsets are only within
-                                               // the same group
-                                               subsetNames.push( subsetName );
-                                       } );
-
-                                       // Set translated subset
-                                       filterItem.setSubset( subsetNames );
-                               }
-
-                               // Store conflicts
-                               if ( data.filters[ i ].conflicts ) {
-                                       filterConflictMap[ filterItem.getName() ] = data.filters[ i ].conflicts;
+                       // Add the group
+                       model.groups.namespace = new mw.rcfilters.dm.FilterGroup(
+                               'namespace', // Parameter name is singular
+                               {
+                                       type: 'string_options',
+                                       view: 'namespaces',
+                                       title: 'namespaces', // Message key
+                                       separator: ';',
+                                       labelPrefixKey: { 'default': 'rcfilters-tag-prefix-namespace', inverted: 'rcfilters-tag-prefix-namespace-inverted' },
+                                       fullCoverage: true
                                }
+                       );
+                       // Add namespace items to group
+                       model.groups.namespace.initializeFilters( namespaceDefinition );
+                       items = items.concat( model.groups.namespace.getItems() );
+               }
 
-                               if ( data.type === 'send_unselected_if_any' ) {
-                                       // Store the default parameter state
-                                       // For this group type, parameter values are direct
-                                       model.defaultParams[ data.filters[ i ].name ] = Number( !!data.filters[ i ].default );
+               tags = tags || [];
+               if (
+                       mw.config.get( 'wgStructuredChangeFiltersEnableExperimentalViews' ) &&
+                       tags.length > 0
+               ) {
+                       // Define view
+                       this.views.tags = { name: 'tags', label: mw.msg( 'rcfilters-view-tags' ), trigger: '#' };
+
+                       // Add the group
+                       model.groups.tagfilter = new mw.rcfilters.dm.FilterGroup(
+                               'tagfilter',
+                               {
+                                       type: 'string_options',
+                                       view: 'tags',
+                                       title: 'rcfilters-view-tags', // Message key
+                                       labelPrefixKey: 'rcfilters-tag-prefix-tags',
+                                       separator: '|',
+                                       fullCoverage: false
                                }
+                       );
 
-                               model.groups[ group ].addItems( filterItem );
-                               items.push( filterItem );
-                       }
+                       // Add tag items to group
+                       model.groups.tagfilter.initializeFilters( tags );
 
-                       if ( data.type === 'string_options' && data.default ) {
-                               // Store the default parameter group state
-                               // For this group, the parameter is group name and value is the names
-                               // of selected items
-                               model.defaultParams[ group ] = model.sanitizeStringOptionGroup(
-                                       group,
-                                       data.default.split( model.groups[ group ].getSeparator() )
-                               ).join( model.groups[ group ].getSeparator() );
-                       }
-               } );
+                       // Add item references to the model, for lookup
+                       items = items.concat( model.groups.tagfilter.getItems() );
+               }
 
-               // Add items to the model
+               // Add item references to the model, for lookup
                this.addItems( items );
 
                // Expand conflicts
                        model.groups[ group ].setConflicts( conflicts );
                } );
 
-               items.forEach( function ( filterItem ) {
-                       // Apply the superset map
-                       filterItem.setSuperset( supersetMap[ filterItem.getName() ] );
-
-                       // set conflicts for item
-                       if ( filterConflictResult[ filterItem.getName() ] ) {
-                               filterItem.setConflicts( filterConflictResult[ filterItem.getName() ] );
-                       }
+               // Set conflicts for items
+               $.each( filterConflictResult, function ( filterName, conflicts ) {
+                       var filterItem = model.getItemByName( filterName );
+                       // set conflicts for items in the group
+                       filterItem.setConflicts( conflicts );
                } );
 
                // Create a map between known parameters and their models
                        }
                } );
 
+               this.currentView = 'default';
+
+               // Finish initialization
                this.emit( 'initialize' );
        };
 
                return this.groups;
        };
 
+       /**
+        * Get the object that defines groups that match a certain view by their name.
+        *
+        * @param {string} [view] Requested view. If not given, uses current view
+        * @return {Object} Filter groups matching a display group
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getFilterGroupsByView = function ( view ) {
+               var result = {};
+
+               view = view || this.getCurrentView();
+
+               $.each( this.groups, function ( groupName, groupModel ) {
+                       if ( groupModel.getView() === view ) {
+                               result[ groupName ] = groupModel;
+                       }
+               } );
+
+               return result;
+       };
+
+       /**
+        * Get an array of filters matching the given display group.
+        *
+        * @param {string} [view] Requested view. If not given, uses current view
+        * @return {mw.rcfilters.dm.FilterItem} Filter items matching the group
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getFiltersByView = function ( view ) {
+               var groups,
+                       result = [];
+
+               view = view || this.getCurrentView();
+
+               groups = this.getFilterGroupsByView( view );
+
+               $.each( groups, function ( groupName, groupModel ) {
+                       result = result.concat( groupModel.getItems() );
+               } );
+
+               return result;
+       };
+
+       /**
+        * Get the trigger for the requested view.
+        *
+        * @param {string} view View name
+        * @return {string} View trigger, if exists
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getViewTrigger = function ( view ) {
+               return this.views[ view ] && this.views[ view ].trigger;
+       };
        /**
         * Get the value of a specific parameter
         *
        };
 
        /**
-        * Get the default parameters object
+        * Get an object representing default parameters state
         *
         * @return {Object} Default parameter values
         */
        mw.rcfilters.dm.FiltersViewModel.prototype.getDefaultParams = function () {
-               return this.defaultParams;
-       };
+               var result = {};
 
-       /**
-        * Set all filter states to default values
-        */
-       mw.rcfilters.dm.FiltersViewModel.prototype.setFiltersToDefaults = function () {
-               var defaultFilterStates = this.getFiltersFromParameters( this.getDefaultParams() );
+               // Get default filter state
+               $.each( this.groups, function ( name, model ) {
+                       $.extend( true, result, model.getDefaultParams() );
+               } );
 
-               this.toggleFiltersSelected( defaultFilterStates );
+               return result;
        };
 
        /**
         * Analyze the groups and their filters and output an object representing
         * the state of the parameters they represent.
         *
-        * @param {Object} [filterGroups] An object defining the filter groups to
-        *  translate to parameters. Its structure must follow that of this.groups
-        *  see #getFilterGroups
+        * @param {Object} [filterDefinition] An object defining the filter values,
+        *  keyed by filter names.
         * @return {Object} Parameter state object
         */
-       mw.rcfilters.dm.FiltersViewModel.prototype.getParametersFromFilters = function ( filterGroups ) {
-               var result = {},
-                       groupItems = filterGroups || this.getFilterGroups();
+       mw.rcfilters.dm.FiltersViewModel.prototype.getParametersFromFilters = function ( filterDefinition ) {
+               var groupItemDefinition,
+                       result = {},
+                       groupItems = this.getFilterGroups();
+
+               if ( filterDefinition ) {
+                       groupItemDefinition = {};
+                       // Filter definition is "flat", but in effect
+                       // each group needs to tell us its result based
+                       // on the values in it. We need to split this list
+                       // back into groupings so we can "feed" it to the
+                       // loop below, and we need to expand it so it includes
+                       // all filters (set to false)
+                       this.getItems().forEach( function ( filterItem ) {
+                               groupItemDefinition[ filterItem.getGroupName() ] = groupItemDefinition[ filterItem.getGroupName() ] || {};
+                               groupItemDefinition[ filterItem.getGroupName() ][ filterItem.getName() ] = !!filterDefinition[ filterItem.getName() ];
+                       } );
+               }
 
                $.each( groupItems, function ( group, model ) {
-                       $.extend( result, model.getParamRepresentation() );
+                       $.extend(
+                               result,
+                               model.getParamRepresentation(
+                                       groupItemDefinition ?
+                                               groupItemDefinition[ group ] : null
+                               )
+                       );
+               } );
+
+               return result;
+       };
+
+       /**
+        * This is the opposite of the #getParametersFromFilters method; this goes over
+        * the given parameters and translates into a selected/unselected value in the filters.
+        *
+        * @param {Object} params Parameters query object
+        * @return {Object} Filter state object
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getFiltersFromParameters = function ( params ) {
+               var groupMap = {},
+                       model = this,
+                       result = {};
+
+               // Go over the given parameters, break apart to groupings
+               // The resulting object represents the group with its parameter
+               // values. For example:
+               // {
+               //    group1: {
+               //       param1: "1",
+               //       param2: "0",
+               //       param3: "1"
+               //    },
+               //    group2: "param4|param5"
+               // }
+               $.each( params, function ( paramName, paramValue ) {
+                       var itemOrGroup = model.parameterMap[ paramName ];
+
+                       if ( itemOrGroup instanceof mw.rcfilters.dm.FilterItem ) {
+                               groupMap[ itemOrGroup.getGroupName() ] = groupMap[ itemOrGroup.getGroupName() ] || {};
+                               groupMap[ itemOrGroup.getGroupName() ][ itemOrGroup.getParamName() ] = paramValue;
+                       } else if ( itemOrGroup instanceof mw.rcfilters.dm.FilterGroup ) {
+                               // This parameter represents a group (values are the filters)
+                               // this is equivalent to checking if the group is 'string_options'
+                               groupMap[ itemOrGroup.getName() ] = groupMap[ itemOrGroup.getName() ] || {};
+                               groupMap[ itemOrGroup.getName() ] = paramValue;
+                       }
+               } );
+
+               // Go over all groups, so we make sure we get the complete output
+               // even if the parameters don't include a certain group
+               $.each( this.groups, function ( groupName, groupModel ) {
+                       result = $.extend( true, {}, result, groupModel.getFilterRepresentation( groupMap[ groupName ] ) );
                } );
 
                return result;
        /**
         * Get the highlight parameters based on current filter configuration
         *
-        * @return {object} Object where keys are "<filter name>_color" and values
+        * @return {Object} Object where keys are "<filter name>_color" and values
         *                  are the selected highlight colors.
         */
        mw.rcfilters.dm.FiltersViewModel.prototype.getHighlightParameters = function () {
-               var result = { highlight: Number( this.isHighlightEnabled() ) };
+               var result = {};
 
                this.getItems().forEach( function ( filterItem ) {
-                       result[ filterItem.getName() + '_color' ] = filterItem.getHighlightColor();
+                       result[ filterItem.getName() + '_color' ] = filterItem.getHighlightColor() || null;
                } );
+               result.highlight = String( Number( this.isHighlightEnabled() ) );
+
+               return result;
+       };
+
+       /**
+        * Extract the highlight values from given object. Since highlights are
+        * the same for filter and parameters, it doesn't matter which one is
+        * given; values will be returned with a full list of the highlights
+        * with colors or null values.
+        *
+        * @param {Object} representation Object containing representation of
+        *  some or all highlight values
+        * @return {Object} Object where keys are "<filter name>_color" and values
+        *                  are the selected highlight colors. The returned object
+        *                  contains all available filters either with a color value
+        *                  or with null.
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.extractHighlightValues = function ( representation ) {
+               var result = {};
+
+               this.getItems().forEach( function ( filterItem ) {
+                       var highlightName = filterItem.getName() + '_color';
+                       result[ highlightName ] = representation[ highlightName ] || null;
+               } );
+
                return result;
        };
 
         * @param {string[]} valueArray Array of values
         * @return {string[]} Array of valid values
         */
-       mw.rcfilters.dm.FiltersViewModel.prototype.sanitizeStringOptionGroup = function( groupName, valueArray ) {
-               var result = [],
-                       validNames = this.getGroupFilters( groupName ).map( function ( filterItem ) {
-                               return filterItem.getParamName();
-                       } );
-
-               if ( valueArray.indexOf( 'all' ) > -1 ) {
-                       // If anywhere in the values there's 'all', we
-                       // treat it as if only 'all' was selected.
-                       // Example: param=valid1,valid2,all
-                       // Result: param=all
-                       return [ 'all' ];
-               }
-
-               // Get rid of any dupe and invalid parameter, only output
-               // valid ones
-               // Example: param=valid1,valid2,invalid1,valid1
-               // Result: param=valid1,valid2
-               valueArray.forEach( function ( value ) {
-                       if (
-                               validNames.indexOf( value ) > -1 &&
-                               result.indexOf( value ) === -1
-                       ) {
-                               result.push( value );
-                       }
+       mw.rcfilters.dm.FiltersViewModel.prototype.sanitizeStringOptionGroup = function ( groupName, valueArray ) {
+               var validNames = this.getGroupFilters( groupName ).map( function ( filterItem ) {
+                       return filterItem.getParamName();
                } );
 
-               return result;
+               return mw.rcfilters.utils.normalizeParamOptions( valueArray, validNames );
        };
 
        /**
                if ( this.defaultFiltersEmpty !== null ) {
                        // We only need to do this test once,
                        // because defaults are set once per session
-                       defaultFilters = this.getFiltersFromParameters();
+                       defaultFilters = this.getFiltersFromParameters( this.getDefaultParams() );
                        this.defaultFiltersEmpty = Object.keys( defaultFilters ).every( function ( filterName ) {
                                return !defaultFilters[ filterName ];
                        } );
                return this.defaultFiltersEmpty;
        };
 
-       /**
-        * This is the opposite of the #getParametersFromFilters method; this goes over
-        * the given parameters and translates into a selected/unselected value in the filters.
-        *
-        * @param {Object} params Parameters query object
-        * @return {Object} Filter state object
-        */
-       mw.rcfilters.dm.FiltersViewModel.prototype.getFiltersFromParameters = function ( params ) {
-               var i,
-                       groupMap = {},
-                       model = this,
-                       base = this.getDefaultParams(),
-                       result = {};
-
-               params = $.extend( {}, base, params );
-
-               // Go over the given parameters
-               $.each( params, function ( paramName, paramValue ) {
-                       var itemOrGroup = model.parameterMap[ paramName ];
-
-                       if ( itemOrGroup instanceof mw.rcfilters.dm.FilterItem ) {
-                               // Mark the group if it has any items that are selected
-                               groupMap[ itemOrGroup.getGroupName() ] = groupMap[ itemOrGroup.getGroupName() ] || {};
-                               groupMap[ itemOrGroup.getGroupName() ].hasSelected = (
-                                       groupMap[ itemOrGroup.getGroupName() ].hasSelected ||
-                                       !!Number( paramValue )
-                               );
-
-                               // Add filters
-                               groupMap[ itemOrGroup.getGroupName() ].filters = groupMap[ itemOrGroup.getGroupName() ].filters || [];
-                               groupMap[ itemOrGroup.getGroupName() ].filters.push( itemOrGroup );
-                       } else if ( itemOrGroup instanceof mw.rcfilters.dm.FilterGroup ) {
-                               groupMap[ itemOrGroup.getName() ] = groupMap[ itemOrGroup.getName() ] || {};
-                               // This parameter represents a group (values are the filters)
-                               // this is equivalent to checking if the group is 'string_options'
-                               groupMap[ itemOrGroup.getName() ].filters = itemOrGroup.getItems();
-                       }
-               } );
-
-               // Now that we know the groups' selection states, we need to go over
-               // the filters in the groups and mark their selected states appropriately
-               $.each( groupMap, function ( group, data ) {
-                       var paramValues, filterItem,
-                               allItemsInGroup = data.filters;
-
-                       if ( model.groups[ group ].getType() === 'send_unselected_if_any' ) {
-                               for ( i = 0; i < allItemsInGroup.length; i++ ) {
-                                       filterItem = allItemsInGroup[ i ];
-
-                                       result[ filterItem.getName() ] = groupMap[ filterItem.getGroupName() ].hasSelected ?
-                                               // Flip the definition between the parameter
-                                               // state and the filter state
-                                               // This is what the 'toggleSelected' value of the filter is
-                                               !Number( params[ filterItem.getParamName() ] ) :
-                                               // Otherwise, there are no selected items in the
-                                               // group, which means the state is false
-                                               false;
-                               }
-                       } else if ( model.groups[ group ].getType() === 'string_options' ) {
-                               paramValues = model.sanitizeStringOptionGroup(
-                                       group,
-                                       params[ group ].split(
-                                               model.groups[ group ].getSeparator()
-                                       )
-                               );
-
-                               for ( i = 0; i < allItemsInGroup.length; i++ ) {
-                                       filterItem = allItemsInGroup[ i ];
-
-                                       result[ filterItem.getName() ] = (
-                                                       // If it is the word 'all'
-                                                       paramValues.length === 1 && paramValues[ 0 ] === 'all' ||
-                                                       // All values are written
-                                                       paramValues.length === model.groups[ group ].getItemCount()
-                                               ) ?
-                                               // All true (either because all values are written or the term 'all' is written)
-                                               // is the same as all filters set to true
-                                               true :
-                                               // Otherwise, the filter is selected only if it appears in the parameter values
-                                               paramValues.indexOf( filterItem.getParamName() ) > -1;
-                               }
-                       }
-               } );
-
-               return result;
-       };
-
        /**
         * Get the item that matches the given name
         *
         *  arranged by their group names
         */
        mw.rcfilters.dm.FiltersViewModel.prototype.findMatches = function ( query, returnFlat ) {
-               var i,
+               var i, searchIsEmpty,
                        groupTitle,
                        result = {},
                        flatResult = [],
-                       items = this.getItems();
+                       view = this.getViewByTrigger( query.substr( 0, 1 ) ),
+                       items = this.getFiltersByView( view );
 
-               // Normalize so we can search strings regardless of case
+               // Normalize so we can search strings regardless of case and view
                query = query.toLowerCase();
+               if ( view !== 'default' ) {
+                       query = query.substr( 1 );
+               }
+
+               // Check if the search if actually empty; this can be a problem when
+               // we use prefixes to denote different views
+               searchIsEmpty = query.length === 0;
 
                // item label starting with the query string
                for ( i = 0; i < items.length; i++ ) {
-                       if ( items[ i ].getLabel().toLowerCase().indexOf( query ) === 0 ) {
+                       if (
+                               searchIsEmpty ||
+                               items[ i ].getLabel().toLowerCase().indexOf( query ) === 0 ||
+                               (
+                                       // For tags, we want the parameter name to be included in the search
+                                       view === 'tags' &&
+                                       items[ i ].getParamName().toLowerCase().indexOf( query ) > -1
+                               )
+                       ) {
                                result[ items[ i ].getGroupName() ] = result[ items[ i ].getGroupName() ] || [];
                                result[ items[ i ].getGroupName() ].push( items[ i ] );
                                flatResult.push( items[ i ] );
                        for ( i = 0; i < items.length; i++ ) {
                                groupTitle = items[ i ].getGroupModel().getTitle();
                                if (
+                                       searchIsEmpty ||
                                        items[ i ].getLabel().toLowerCase().indexOf( query ) > -1 ||
                                        items[ i ].getDescription().toLowerCase().indexOf( query ) > -1 ||
-                                       groupTitle.toLowerCase().indexOf( query ) > -1
+                                       groupTitle.toLowerCase().indexOf( query ) > -1 ||
+                                       (
+                                               // For tags, we want the parameter name to be included in the search
+                                               view === 'tags' &&
+                                               items[ i ].getParamName().toLowerCase().indexOf( query ) > -1
+                                       )
                                ) {
                                        result[ items[ i ].getGroupName() ] = result[ items[ i ].getGroupName() ] || [];
                                        result[ items[ i ].getGroupName() ].push( items[ i ] );
                } );
        };
 
+       /**
+        * Get items that allow highlights even if they're not currently highlighted
+        *
+        * @return {mw.rcfilters.dm.FilterItem[]} Items supporting highlights
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getItemsSupportingHighlights = function () {
+               return this.getItems().filter( function ( filterItem ) {
+                       return filterItem.isHighlightSupported();
+               } );
+       };
+
+       /**
+        * Switch the current view
+        *
+        * @param {string} view View name
+        * @fires update
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.switchView = function ( view ) {
+               if ( this.views[ view ] && this.currentView !== view ) {
+                       this.currentView = view;
+                       this.emit( 'update' );
+               }
+       };
+
+       /**
+        * Get the current view
+        *
+        * @return {string} Current view
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getCurrentView = function () {
+               return this.currentView;
+       };
+
+       /**
+        * Get the label for the current view
+        *
+        * @return {string} Label for the current view
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getCurrentViewLabel = function () {
+               return this.views[ this.getCurrentView() ].label;
+       };
+
+       /**
+        * Get an array of all available view names
+        *
+        * @return {string} Available view names
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getAvailableViews = function () {
+               return Object.keys( this.views );
+       };
+
+       /**
+        * Get the view that fits the given trigger
+        *
+        * @param {string} trigger Trigger
+        * @return {string} Name of view
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getViewByTrigger = function ( trigger ) {
+               var result = 'default';
+
+               $.each( this.views, function ( name, data ) {
+                       if ( data.trigger === trigger ) {
+                               result = name;
+                       }
+               } );
+
+               return result;
+       };
+
        /**
         * Toggle the highlight feature on and off.
         * Propagate the change to filter items.
                return !!this.highlightEnabled;
        };
 
+       /**
+        * Toggle the inverted namespaces property on and off.
+        * Propagate the change to namespace filter items.
+        *
+        * @param {boolean} enable Inverted property is enabled
+        * @fires invertChange
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.toggleInvertedNamespaces = function ( enable ) {
+               enable = enable === undefined ? !this.invertedNamespaces : enable;
+
+               if ( this.invertedNamespaces !== enable ) {
+                       this.invertedNamespaces = enable;
+
+                       this.getFiltersByView( 'namespaces' ).forEach( function ( filterItem ) {
+                               filterItem.toggleInverted( this.invertedNamespaces );
+                       }.bind( this ) );
+
+                       this.emit( 'invertChange', this.invertedNamespaces );
+               }
+       };
+
+       /**
+        * Check if the namespaces selection is set to be inverted
+        * @return {boolean}
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.areNamespacesInverted = function () {
+               return !!this.invertedNamespaces;
+       };
+
        /**
         * Set highlight color for a specific filter item
         *
diff --git a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ItemModel.js b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ItemModel.js
new file mode 100644 (file)
index 0000000..aa82e21
--- /dev/null
@@ -0,0 +1,298 @@
+( function ( mw ) {
+       /**
+        * RCFilter base item model
+        *
+        * @mixins OO.EventEmitter
+        *
+        * @constructor
+        * @param {string} param Filter param name
+        * @param {Object} config Configuration object
+        * @cfg {string} [label] The label for the filter
+        * @cfg {string} [description] The description of the filter
+        * @cfg {string|Object} [labelPrefixKey] An i18n key defining the prefix label for this
+        *  group. If the prefix has 'invert' state, the parameter is expected to be an object
+        *  with 'default' and 'inverted' as keys.
+        * @cfg {boolean} [active=true] The filter is active and affecting the result
+        * @cfg {boolean} [selected] The item is selected
+        * @cfg {boolean} [inverted] The item is inverted, meaning the search is excluding
+        *  this parameter.
+        * @cfg {string} [namePrefix='item_'] A prefix to add to the param name to act as a unique
+        *  identifier
+        * @cfg {string} [cssClass] The class identifying the results that match this filter
+        * @cfg {string[]} [identifiers] An array of identifiers for this item. They will be
+        *  added and considered in the view.
+        */
+       mw.rcfilters.dm.ItemModel = function MwRcfiltersDmItemModel( param, config ) {
+               config = config || {};
+
+               // Mixin constructor
+               OO.EventEmitter.call( this );
+
+               this.param = param;
+               this.namePrefix = config.namePrefix || 'item_';
+               this.name = this.namePrefix + param;
+
+               this.label = config.label || this.name;
+               this.labelPrefixKey = config.labelPrefixKey;
+               this.description = config.description || '';
+               this.selected = !!config.selected;
+
+               this.inverted = !!config.inverted;
+               this.identifiers = config.identifiers || [];
+
+               // Highlight
+               this.cssClass = config.cssClass;
+               this.highlightColor = null;
+               this.highlightEnabled = false;
+       };
+
+       /* Initialization */
+
+       OO.initClass( mw.rcfilters.dm.ItemModel );
+       OO.mixinClass( mw.rcfilters.dm.ItemModel, OO.EventEmitter );
+
+       /* Events */
+
+       /**
+        * @event update
+        *
+        * The state of this filter has changed
+        */
+
+       /* Methods */
+
+       /**
+        * Return the representation of the state of this item.
+        *
+        * @return {Object} State of the object
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getState = function () {
+               return {
+                       selected: this.isSelected(),
+                       inverted: this.isInverted()
+               };
+       };
+
+       /**
+        * Get the name of this filter
+        *
+        * @return {string} Filter name
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getName = function () {
+               return this.name;
+       };
+
+       /**
+        * Get a prefixed label
+        *
+        * @return {string} Prefixed label
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getPrefixedLabel = function () {
+               if ( this.labelPrefixKey ) {
+                       if ( typeof this.labelPrefixKey === 'string' ) {
+                               return mw.message( this.labelPrefixKey, this.getLabel() ).parse();
+                       } else {
+                               return mw.message(
+                                       this.labelPrefixKey[
+                                               // Only use inverted-prefix if the item is selected
+                                               // Highlight-only an inverted item makes no sense
+                                               this.isInverted() && this.isSelected() ?
+                                                       'inverted' : 'default'
+                                       ],
+                                       this.getLabel()
+                               ).parse();
+                       }
+               } else {
+                       return this.getLabel();
+               }
+       };
+
+       /**
+        * Get the param name or value of this filter
+        *
+        * @return {string} Filter param name
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getParamName = function () {
+               return this.param;
+       };
+
+       /**
+        * Get the message representing the state of this model.
+        *
+        * @return {string} State message
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getStateMessage = function () {
+               // Display description
+               return this.getDescription();
+       };
+
+       /**
+        * Get the label of this filter
+        *
+        * @return {string} Filter label
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getLabel = function () {
+               return this.label;
+       };
+
+       /**
+        * Get the description of this filter
+        *
+        * @return {string} Filter description
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getDescription = function () {
+               return this.description;
+       };
+
+       /**
+        * Get the default value of this filter
+        *
+        * @return {boolean} Filter default
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getDefault = function () {
+               return this.default;
+       };
+
+       /**
+        * Get the selected state of this filter
+        *
+        * @return {boolean} Filter is selected
+        */
+       mw.rcfilters.dm.ItemModel.prototype.isSelected = function () {
+               return this.selected;
+       };
+
+       /**
+        * Toggle the selected state of the item
+        *
+        * @param {boolean} [isSelected] Filter is selected
+        * @fires update
+        */
+       mw.rcfilters.dm.ItemModel.prototype.toggleSelected = function ( isSelected ) {
+               isSelected = isSelected === undefined ? !this.selected : isSelected;
+
+               if ( this.selected !== isSelected ) {
+                       this.selected = isSelected;
+                       this.emit( 'update' );
+               }
+       };
+
+       /**
+        * Get the inverted state of this item
+        *
+        * @return {boolean} Item is inverted
+        */
+       mw.rcfilters.dm.ItemModel.prototype.isInverted = function () {
+               return this.inverted;
+       };
+
+       /**
+        * Toggle the inverted state of the item
+        *
+        * @param {boolean} [isInverted] Item is inverted
+        * @fires update
+        */
+       mw.rcfilters.dm.ItemModel.prototype.toggleInverted = function ( isInverted ) {
+               isInverted = isInverted === undefined ? !this.inverted : isInverted;
+
+               if ( this.inverted !== isInverted ) {
+                       this.inverted = isInverted;
+                       this.emit( 'update' );
+               }
+       };
+
+       /**
+        * Set the highlight color
+        *
+        * @param {string|null} highlightColor
+        */
+       mw.rcfilters.dm.ItemModel.prototype.setHighlightColor = function ( highlightColor ) {
+               if ( this.highlightColor !== highlightColor ) {
+                       this.highlightColor = highlightColor;
+                       this.emit( 'update' );
+               }
+       };
+
+       /**
+        * Clear the highlight color
+        */
+       mw.rcfilters.dm.ItemModel.prototype.clearHighlightColor = function () {
+               this.setHighlightColor( null );
+       };
+
+       /**
+        * Get the highlight color, or null if none is configured
+        *
+        * @return {string|null}
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getHighlightColor = function () {
+               return this.highlightColor;
+       };
+
+       /**
+        * Get the CSS class that matches changes that fit this filter
+        * or null if none is configured
+        *
+        * @return {string|null}
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getCssClass = function () {
+               return this.cssClass;
+       };
+
+       /**
+        * Get the item's identifiers
+        *
+        * @return {string[]}
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getIdentifiers = function () {
+               return this.identifiers;
+       };
+
+       /**
+        * Toggle the highlight feature on and off for this filter.
+        * It only works if highlight is supported for this filter.
+        *
+        * @param {boolean} enable Highlight should be enabled
+        */
+       mw.rcfilters.dm.ItemModel.prototype.toggleHighlight = function ( enable ) {
+               enable = enable === undefined ? !this.highlightEnabled : enable;
+
+               if ( !this.isHighlightSupported() ) {
+                       return;
+               }
+
+               if ( enable === this.highlightEnabled ) {
+                       return;
+               }
+
+               this.highlightEnabled = enable;
+               this.emit( 'update' );
+       };
+
+       /**
+        * Check if the highlight feature is currently enabled for this filter
+        *
+        * @return {boolean}
+        */
+       mw.rcfilters.dm.ItemModel.prototype.isHighlightEnabled = function () {
+               return !!this.highlightEnabled;
+       };
+
+       /**
+        * Check if the highlight feature is supported for this filter
+        *
+        * @return {boolean}
+        */
+       mw.rcfilters.dm.ItemModel.prototype.isHighlightSupported = function () {
+               return !!this.getCssClass();
+       };
+
+       /**
+        * Check if the filter is currently highlighted
+        *
+        * @return {boolean}
+        */
+       mw.rcfilters.dm.ItemModel.prototype.isHighlighted = function () {
+               return this.isHighlightEnabled() && !!this.getHighlightColor();
+       };
+}( mediaWiki ) );
diff --git a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
new file mode 100644 (file)
index 0000000..3ffc12e
--- /dev/null
@@ -0,0 +1,202 @@
+( function ( mw, $ ) {
+       /**
+        * View model for saved queries
+        *
+        * @mixins OO.EventEmitter
+        * @mixins OO.EmitterList
+        *
+        * @constructor
+        * @param {Object} [config] Configuration options
+        * @cfg {string} [default] Default query ID
+        */
+       mw.rcfilters.dm.SavedQueriesModel = function MwRcfiltersDmSavedQueriesModel( config ) {
+               config = config || {};
+
+               // Mixin constructor
+               OO.EventEmitter.call( this );
+               OO.EmitterList.call( this );
+
+               this.default = config.default;
+
+               // Events
+               this.aggregate( { update: 'itemUpdate' } );
+       };
+
+       /* Initialization */
+
+       OO.initClass( mw.rcfilters.dm.SavedQueriesModel );
+       OO.mixinClass( mw.rcfilters.dm.SavedQueriesModel, OO.EventEmitter );
+       OO.mixinClass( mw.rcfilters.dm.SavedQueriesModel, OO.EmitterList );
+
+       /* Events */
+
+       /**
+        * @event initialize
+        *
+        * Model is initialized
+        */
+
+       /**
+        * @event itemUpdate
+        * @param {mw.rcfilters.dm.SavedQueryItemModel} Changed item
+        *
+        * An item has changed
+        */
+
+       /* Methods */
+
+       /**
+        * Initialize the saved queries model by reading it from the user's settings.
+        * The structure of the saved queries is:
+        * {
+        *    default: (string) Query ID
+        *    queries:{
+        *       query_id_1: {
+        *          data:{
+        *             filters: (Object) Minimal definition of the filters
+        *             highlights: (Object) Definition of the highlights
+        *          },
+        *          label: (optional) Name of this query
+        *       }
+        *    }
+        * }
+        *
+        * @param {Object} [savedQueries] An object with the saved queries with
+        *  the above structure.
+        * @param {Object} [baseState] An object representing the base state
+        *  so we can normalize the data
+        * @fires initialize
+        */
+       mw.rcfilters.dm.SavedQueriesModel.prototype.initialize = function ( savedQueries, baseState ) {
+               var items = [];
+
+               savedQueries = savedQueries || {};
+
+               this.baseState = baseState;
+
+               this.clearItems();
+               $.each( savedQueries.queries || {}, function ( id, obj ) {
+                       var normalizedData = $.extend( true, {}, baseState, obj.data );
+
+                       // Backwards-compat fix: We stored the 'highlight' state with
+                       // "1" and "0" instead of true/false; for already-stored states,
+                       // we need to fix that.
+                       // NOTE: Since this feature is only available in beta, we should
+                       // not need this line when we release this to the general wikis.
+                       // This method will automatically fix all saved queries anyways
+                       // for existing users, who are only betalabs users at the moment.
+                       normalizedData.highlights.highlight = !!Number( normalizedData.highlights.highlight );
+
+                       items.push(
+                               new mw.rcfilters.dm.SavedQueryItemModel(
+                                       id,
+                                       obj.label,
+                                       normalizedData,
+                                       { 'default': savedQueries.default === id }
+                               )
+                       );
+               } );
+
+               this.default = savedQueries.default;
+
+               this.addItems( items );
+
+               this.emit( 'initialize' );
+       };
+
+       /**
+        * Add a query item
+        *
+        * @param {string} label Label for the new query
+        * @param {Object} data Data for the new query
+        */
+       mw.rcfilters.dm.SavedQueriesModel.prototype.addNewQuery = function ( label, data ) {
+               var randomID = ( new Date() ).getTime(),
+                       normalizedData = $.extend( true, {}, this.baseState, data );
+
+               // Add item
+               this.addItems( [
+                       new mw.rcfilters.dm.SavedQueryItemModel(
+                               randomID,
+                               label,
+                               normalizedData
+                       )
+               ] );
+       };
+
+       /**
+        * Get an item that matches the requested query
+        *
+        * @param {Object} fullQueryComparison Object representing all filters and highlights to compare
+        * @return {mw.rcfilters.dm.SavedQueryItemModel} Matching item model
+        */
+       mw.rcfilters.dm.SavedQueriesModel.prototype.findMatchingQuery = function ( fullQueryComparison ) {
+               return this.getItems().filter( function ( item ) {
+                       return OO.compare(
+                               item.getData(),
+                               fullQueryComparison
+                       );
+               } )[ 0 ];
+       };
+
+       /**
+        * Get query by its identifier
+        *
+        * @param {string} queryID Query identifier
+        * @return {mw.rcfilters.dm.SavedQueryItemModel|undefined} Item matching
+        *  the search. Undefined if not found.
+        */
+       mw.rcfilters.dm.SavedQueriesModel.prototype.getItemByID = function ( queryID ) {
+               return this.getItems().filter( function ( item ) {
+                       return item.getID() === queryID;
+               } )[ 0 ];
+       };
+
+       /**
+        * Get the object representing the state of the entire model and items
+        *
+        * @return {Object} Object representing the state of the model and items
+        */
+       mw.rcfilters.dm.SavedQueriesModel.prototype.getState = function () {
+               var obj = { queries: {} };
+
+               // Translate the items to the saved object
+               this.getItems().forEach( function ( item ) {
+                       var itemState = item.getState();
+
+                       obj.queries[ item.getID() ] = itemState;
+               } );
+
+               if ( this.getDefault() ) {
+                       obj.default = this.getDefault();
+               }
+
+               return obj;
+       };
+
+       /**
+        * Set a default query. Null to unset default.
+        *
+        * @param {string} itemID Query identifier
+        * @fires default
+        */
+       mw.rcfilters.dm.SavedQueriesModel.prototype.setDefault = function ( itemID ) {
+               if ( this.default !== itemID ) {
+                       this.default = itemID;
+
+                       // Set for individual itens
+                       this.getItems().forEach( function ( item ) {
+                               item.toggleDefault( item.getID() === itemID );
+                       } );
+               }
+       };
+
+       /**
+        * Get the default query ID
+        *
+        * @return {string} Default query identifier
+        */
+       mw.rcfilters.dm.SavedQueriesModel.prototype.getDefault = function () {
+               return this.default;
+       };
+}( mediaWiki, jQuery ) );
diff --git a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueryItemModel.js b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueryItemModel.js
new file mode 100644 (file)
index 0000000..729aee3
--- /dev/null
@@ -0,0 +1,115 @@
+( function ( mw ) {
+       /**
+        * View model for a single saved query
+        *
+        * @mixins OO.EventEmitter
+        *
+        * @constructor
+        * @param {string} id Unique identifier
+        * @param {string} label Saved query label
+        * @param {Object} data Saved query data
+        * @param {Object} [config] Configuration options
+        * @param {boolean} [default] This item is the default
+        */
+       mw.rcfilters.dm.SavedQueryItemModel = function MwRcfiltersDmSavedQueriesModel( id, label, data, config ) {
+               config = config || {};
+
+               // Mixin constructor
+               OO.EventEmitter.call( this );
+
+               this.id = id;
+               this.label = label;
+               this.data = data;
+               this.default = !!config.default;
+       };
+
+       /* Initialization */
+
+       OO.initClass( mw.rcfilters.dm.SavedQueryItemModel );
+       OO.mixinClass( mw.rcfilters.dm.SavedQueryItemModel, OO.EventEmitter );
+
+       /* Events */
+
+       /**
+        * @update
+        *
+        * Model has been updated
+        */
+
+       /* Methods */
+
+       /**
+        * Get an object representing the state of this item
+        *
+        * @returns {Object} Object representing the current data state
+        *  of the object
+        */
+       mw.rcfilters.dm.SavedQueryItemModel.prototype.getState = function () {
+               return {
+                       data: this.getData(),
+                       label: this.getLabel()
+               };
+       };
+
+       /**
+        * Get the query's identifier
+        *
+        * @return {string} Query identifier
+        */
+       mw.rcfilters.dm.SavedQueryItemModel.prototype.getID = function () {
+               return this.id;
+       };
+
+       /**
+        * Get query label
+        *
+        * @return {label} Query label
+        */
+       mw.rcfilters.dm.SavedQueryItemModel.prototype.getLabel = function () {
+               return this.label;
+       };
+
+       /**
+        * Update the query label
+        *
+        * @param {string} newLabel New label
+        */
+       mw.rcfilters.dm.SavedQueryItemModel.prototype.updateLabel = function ( newLabel ) {
+               if ( newLabel && this.label !== newLabel ) {
+                       this.label = newLabel;
+                       this.emit( 'update' );
+               }
+       };
+
+       /**
+        * Get query data
+        *
+        * @return {Object} Object representing parameter and highlight data
+        */
+       mw.rcfilters.dm.SavedQueryItemModel.prototype.getData = function () {
+               return this.data;
+       };
+
+       /**
+        * Check whether this item is the default
+        *
+        * @return {boolean} Query is set to be default
+        */
+       mw.rcfilters.dm.SavedQueryItemModel.prototype.isDefault = function () {
+               return this.default;
+       };
+
+       /**
+        * Toggle the default state of this query item
+        *
+        * @param {boolean} isDefault Query is default
+        */
+       mw.rcfilters.dm.SavedQueryItemModel.prototype.toggleDefault = function ( isDefault ) {
+               isDefault = isDefault === undefined ? !this.default : isDefault;
+
+               if ( this.default !== isDefault ) {
+                       this.default = isDefault;
+                       this.emit( 'update' );
+               }
+       };
+}( mediaWiki ) );
diff --git a/resources/src/mediawiki.rcfilters/images/clip.svg b/resources/src/mediawiki.rcfilters/images/clip.svg
new file mode 100644 (file)
index 0000000..86d1dbf
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M17.5 4.5v13.2L12 13.5l-5.5 4.2V4.5zM5 21l7-6 7 6V3H5z" fill-rule="evenodd"/>
+</svg>
diff --git a/resources/src/mediawiki.rcfilters/images/pushPin.svg b/resources/src/mediawiki.rcfilters/images/pushPin.svg
new file mode 100644 (file)
index 0000000..b852cd0
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M17.445 12.225c-.813-.935-1.775-.739-2.883-1.768-.55-.511-.498-2.36-.498-2.36s-.041-1.836.524-2.401c.39-.39 1.076-.49 1.475-.883a.973.973 0 0 0 .217-.317c.007-.013.014-.023.018-.035.035-.092.054-.2.064-.316.003-.03.017-.055.017-.085 0-.005-.003-.01-.004-.015.001-.008.004-.014.004-.022 0-.02-.015-.03-.017-.048a1.052 1.052 0 0 0-1.043-.974H8.681c-.555 0-.997.43-1.043.974-.002.018-.017.028-.017.048 0 .008.003.014.003.022 0 .006-.003.01-.003.015 0 .03.014.055.017.085.01.116.029.224.064.316.004.012.012.022.018.035a.965.965 0 0 0 .217.317c.399.393 1.084.493 1.475.883.565.565.523 2.401.523 2.401s.053 1.849-.497 2.36c-1.108 1.03-2.07.833-2.883 1.768C5.979 12.887 6 14 6 14h5.333v4.578L12 21l.668-2.422V14H18s.02-1.113-.555-1.775z"/>
+</svg>
diff --git a/resources/src/mediawiki.rcfilters/images/unClip.svg b/resources/src/mediawiki.rcfilters/images/unClip.svg
new file mode 100644 (file)
index 0000000..68459db
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M5 21l7-6 7 6V3H5z" fill-rule="evenodd"/>
+</svg>
index 669420c..95e11d5 100644 (file)
@@ -1,14 +1,20 @@
 ( function ( mw, $ ) {
+       /* eslint no-underscore-dangle: "off" */
        /**
         * Controller for the filters in Recent Changes
         *
         * @param {mw.rcfilters.dm.FiltersViewModel} filtersModel Filters view model
         * @param {mw.rcfilters.dm.ChangesListViewModel} changesListModel Changes list view model
+        * @param {mw.rcfilters.dm.SavedQueriesModel} savedQueriesModel Saved queries model
         */
-       mw.rcfilters.Controller = function MwRcfiltersController( filtersModel, changesListModel ) {
+       mw.rcfilters.Controller = function MwRcfiltersController( filtersModel, changesListModel, savedQueriesModel ) {
                this.filtersModel = filtersModel;
                this.changesListModel = changesListModel;
+               this.savedQueriesModel = savedQueriesModel;
                this.requestCounter = 0;
+               this.baseFilterState = {};
+               this.uriProcessor = null;
+               this.initializing = false;
        };
 
        /* Initialization */
         * Initialize the filter and parameter states
         *
         * @param {Array} filterStructure Filter definition and structure for the model
+        * @param {Object} [namespaceStructure] Namespace definition
+        * @param {Object} [tagList] Tag definition
         */
-       mw.rcfilters.Controller.prototype.initialize = function ( filterStructure ) {
-               var $changesList = $( '.mw-changeslist' ).first().contents();
+       mw.rcfilters.Controller.prototype.initialize = function ( filterStructure, namespaceStructure, tagList ) {
+               var parsedSavedQueries,
+                       uri = new mw.Uri(),
+                       $changesList = $( '.mw-changeslist' ).first().contents();
+
                // Initialize the model
-               this.filtersModel.initializeFilters( filterStructure );
-               this.updateStateBasedOnUrl();
-
-               // Update the changes list with the existing data
-               // so it gets processed
-               this.changesListModel.update(
-                       $changesList.length ? $changesList : 'NO_RESULTS',
-                       $( 'fieldset.rcoptions' ).first()
-               );
+               this.filtersModel.initializeFilters( filterStructure, namespaceStructure, tagList );
 
-       };
+               this._buildBaseFilterState();
 
-       /**
-        * Update filter state (selection and highlighting) based
-        * on current URL and default values.
-        */
-       mw.rcfilters.Controller.prototype.updateStateBasedOnUrl = function () {
-               var uri = new mw.Uri();
+               this.uriProcessor = new mw.rcfilters.UriProcessor(
+                       this.filtersModel
+               );
 
-               // Set filter states based on defaults and URL params
-               this.filtersModel.toggleFiltersSelected(
-                       this.filtersModel.getFiltersFromParameters(
-                               // Merge defaults with URL params for initialization
-                               $.extend(
-                                       true,
-                                       {},
-                                       this.filtersModel.getDefaultParams(),
-                                       // URI query overrides defaults
-                                       uri.query
-                               )
-                       )
+               try {
+                       parsedSavedQueries = JSON.parse( mw.user.options.get( 'rcfilters-saved-queries' ) || '{}' );
+               } catch ( err ) {
+                       parsedSavedQueries = {};
+               }
+
+               // The queries are saved in a minimized state, so we need
+               // to send over the base state so the saved queries model
+               // can normalize them per each query item
+               this.savedQueriesModel.initialize(
+                       parsedSavedQueries,
+                       this._getBaseFilterState()
                );
 
-               // Initialize highlights
-               this.filtersModel.toggleHighlight( !!uri.query.highlight );
-               this.filtersModel.getItems().forEach( function ( filterItem ) {
-                       var color = uri.query[ filterItem.getName() + '_color' ];
-                       if ( color ) {
-                               filterItem.setHighlightColor( color );
-                       } else {
-                               filterItem.clearHighlightColor();
-                       }
-               } );
+               // Check whether we need to load defaults.
+               // We do this by checking whether the current URI query
+               // contains any parameters recognized by the system.
+               // If it does, we load the given state.
+               // If it doesn't, we have no values at all, and we assume
+               // the user loads the base-page and we load defaults.
+               // Defaults should only be applied on load (if necessary)
+               // or on request
+               this.initializing = true;
+               if (
+                       this.savedQueriesModel.getDefault() &&
+                       !this.uriProcessor.doesQueryContainRecognizedParams( uri.query )
+               ) {
+                       // We have defaults from a saved query.
+                       // We will load them straight-forward (as if
+                       // they were clicked in the menu) so we trigger
+                       // a full ajax request and change of URL
+                       this.applySavedQuery( this.savedQueriesModel.getDefault() );
+               } else {
+                       // There are either recognized parameters in the URL
+                       // or there are none, but there is also no default
+                       // saved query (so defaults are from the backend)
+                       // We want to update the state but not fetch results
+                       // again
+                       this.updateStateFromUrl( false );
+
+                       // Update the changes list with the existing data
+                       // so it gets processed
+                       this.changesListModel.update(
+                               $changesList.length ? $changesList : 'NO_RESULTS',
+                               $( 'fieldset.rcoptions' ).first()
+                       );
+               }
 
-               // Check all filter interactions
-               this.filtersModel.reassessFilterInteractions();
+               this.initializing = false;
+               this.switchView( 'default' );
+       };
+
+       /**
+        * Switch the view of the filters model
+        *
+        * @param {string} view Requested view
+        */
+       mw.rcfilters.Controller.prototype.switchView = function ( view ) {
+               this.filtersModel.switchView( view );
        };
 
        /**
         * Reset to default filters
         */
        mw.rcfilters.Controller.prototype.resetToDefaults = function () {
-               this.filtersModel.setFiltersToDefaults();
-               this.filtersModel.clearAllHighlightColors();
-               // Check all filter interactions
-               this.filtersModel.reassessFilterInteractions();
-
+               this.uriProcessor.updateModelBasedOnQuery( this._getDefaultParams() );
                this.updateChangesList();
        };
 
                this.updateChangesList();
 
                if ( highlightedFilterNames ) {
-                       this.trackHighlight( 'clearAll', highlightedFilterNames );
+                       this._trackHighlight( 'clearAll', highlightedFilterNames );
                }
        };
 
        };
 
        /**
-        * Update the URL of the page to reflect current filters
+        * Clear both highlight and selection of a filter
         *
-        * This should not be called directly from outside the controller.
-        * If an action requires changing the URL, it should either use the
-        * highlighting actions below, or call #updateChangesList which does
-        * the uri corrections already.
+        * @param {string} filterName Name of the filter item
+        */
+       mw.rcfilters.Controller.prototype.clearFilter = function ( filterName ) {
+               var filterItem = this.filtersModel.getItemByName( filterName ),
+                       isHighlighted = filterItem.isHighlighted();
+
+               if ( filterItem.isSelected() || isHighlighted ) {
+                       this.filtersModel.clearHighlightColor( filterName );
+                       this.filtersModel.toggleFilterSelected( filterName, false );
+                       this.updateChangesList();
+                       this.filtersModel.reassessFilterInteractions( filterItem );
+               }
+
+               if ( isHighlighted ) {
+                       this._trackHighlight( 'clear', filterName );
+               }
+       };
+
+       /**
+        * Toggle the highlight feature on and off
+        */
+       mw.rcfilters.Controller.prototype.toggleHighlight = function () {
+               this.filtersModel.toggleHighlight();
+               this._updateURL();
+
+               if ( this.filtersModel.isHighlightEnabled() ) {
+                       mw.hook( 'RcFilters.highlight.enable' ).fire();
+               }
+       };
+
+       /**
+        * Toggle the namespaces inverted feature on and off
+        */
+       mw.rcfilters.Controller.prototype.toggleInvertedNamespaces = function () {
+               this.filtersModel.toggleInvertedNamespaces();
+               this.updateChangesList();
+       };
+
+       /**
+        * Set the highlight color for a filter item
         *
-        * @private
-        * @param {Object} [params] Extra parameters to add to the API call
+        * @param {string} filterName Name of the filter item
+        * @param {string} color Selected color
+        */
+       mw.rcfilters.Controller.prototype.setHighlightColor = function ( filterName, color ) {
+               this.filtersModel.setHighlightColor( filterName, color );
+               this._updateURL();
+               this._trackHighlight( 'set', { name: filterName, color: color } );
+       };
+
+       /**
+        * Clear highlight for a filter item
+        *
+        * @param {string} filterName Name of the filter item
         */
-       mw.rcfilters.Controller.prototype.updateURL = function ( params ) {
-               var updatedUri,
-                       notEquivalent = function ( obj1, obj2 ) {
-                               var keys = Object.keys( obj1 ).concat( Object.keys( obj2 ) );
-                               return keys.some( function ( key ) {
-                                       return obj1[ key ] != obj2[ key ]; // eslint-disable-line eqeqeq
-                               } );
-                       };
-
-               params = params || {};
-
-               updatedUri = this.getUpdatedUri();
-               updatedUri.extend( params );
-
-               if ( notEquivalent( updatedUri.query, new mw.Uri().query ) ) {
-                       window.history.pushState( { tag: 'rcfilters' }, document.title, updatedUri.toString() );
+       mw.rcfilters.Controller.prototype.clearHighlightColor = function ( filterName ) {
+               this.filtersModel.clearHighlightColor( filterName );
+               this._updateURL();
+               this._trackHighlight( 'clear', filterName );
+       };
+
+       /**
+        * Save the current model state as a saved query
+        *
+        * @param {string} [label] Label of the saved query
+        */
+       mw.rcfilters.Controller.prototype.saveCurrentQuery = function ( label ) {
+               var highlightedItems = {},
+                       highlightEnabled = this.filtersModel.isHighlightEnabled();
+
+               // Prepare highlights
+               this.filtersModel.getHighlightedItems().forEach( function ( item ) {
+                       highlightedItems[ item.getName() ] = highlightEnabled ?
+                               item.getHighlightColor() : null;
+               } );
+               // These are filter states; highlight is stored as boolean
+               highlightedItems.highlight = this.filtersModel.isHighlightEnabled();
+
+               // Add item
+               this.savedQueriesModel.addNewQuery(
+                       label || mw.msg( 'rcfilters-savedqueries-defaultlabel' ),
+                       {
+                               filters: this.filtersModel.getSelectedState(),
+                               highlights: highlightedItems,
+                               invert: this.filtersModel.areNamespacesInverted()
+                       }
+               );
+
+               // Save item
+               this._saveSavedQueries();
+       };
+
+       /**
+        * Remove a saved query
+        *
+        * @param {string} queryID Query id
+        */
+       mw.rcfilters.Controller.prototype.removeSavedQuery = function ( queryID ) {
+               var query = this.savedQueriesModel.getItemByID( queryID );
+
+               this.savedQueriesModel.removeItems( [ query ] );
+
+               // Check if this item was the default
+               if ( this.savedQueriesModel.getDefault() === queryID ) {
+                       // Nulify the default
+                       this.savedQueriesModel.setDefault( null );
                }
+               this._saveSavedQueries();
        };
 
        /**
-        * Get an updated mw.Uri object based on the model state
+        * Rename a saved query
         *
-        * @return {mw.Uri} Updated Uri
+        * @param {string} queryID Query id
+        * @param {string} newLabel New label for the query
+        */
+       mw.rcfilters.Controller.prototype.renameSavedQuery = function ( queryID, newLabel ) {
+               var queryItem = this.savedQueriesModel.getItemByID( queryID );
+
+               if ( queryItem ) {
+                       queryItem.updateLabel( newLabel );
+               }
+               this._saveSavedQueries();
+       };
+
+       /**
+        * Set a saved query as default
+        *
+        * @param {string} queryID Query Id. If null is given, default
+        *  query is reset.
+        */
+       mw.rcfilters.Controller.prototype.setDefaultSavedQuery = function ( queryID ) {
+               this.savedQueriesModel.setDefault( queryID );
+               this._saveSavedQueries();
+       };
+
+       /**
+        * Load a saved query
+        *
+        * @param {string} queryID Query id
         */
-       mw.rcfilters.Controller.prototype.getUpdatedUri = function () {
-               var uri = new mw.Uri(),
-                       highlightParams = this.filtersModel.getHighlightParameters();
-
-               // Add to existing queries in URL
-               // TODO: Clean up the list of filters; perhaps 'falsy' filters
-               // shouldn't appear at all? Or compare to existing query string
-               // and see if current state of a specific filter is needed?
-               uri.extend( this.filtersModel.getParametersFromFilters() );
-
-               // highlight params
-               Object.keys( highlightParams ).forEach( function ( paramName ) {
-                       if ( highlightParams[ paramName ] ) {
-                               uri.query[ paramName ] = highlightParams[ paramName ];
-                       } else {
-                               delete uri.query[ paramName ];
+       mw.rcfilters.Controller.prototype.applySavedQuery = function ( queryID ) {
+               var data, highlights,
+                       queryItem = this.savedQueriesModel.getItemByID( queryID );
+
+               if ( queryItem ) {
+                       data = queryItem.getData();
+                       highlights = data.highlights;
+
+                       // Backwards compatibility; initial version mispelled 'highlight' with 'highlights'
+                       highlights.highlight = highlights.highlights || highlights.highlight;
+
+                       // Update model state from filters
+                       this.filtersModel.toggleFiltersSelected( data.filters );
+
+                       // Update namespace inverted property
+                       this.filtersModel.toggleInvertedNamespaces( !!Number( data.invert ) );
+
+                       // Update highlight state
+                       this.filtersModel.toggleHighlight( !!Number( highlights.highlight ) );
+                       this.filtersModel.getItems().forEach( function ( filterItem ) {
+                               var color = highlights[ filterItem.getName() ];
+                               if ( color ) {
+                                       filterItem.setHighlightColor( color );
+                               } else {
+                                       filterItem.clearHighlightColor();
+                               }
+                       } );
+
+                       // Check all filter interactions
+                       this.filtersModel.reassessFilterInteractions();
+
+                       this.updateChangesList();
+               }
+       };
+
+       /**
+        * Check whether the current filter and highlight state exists
+        * in the saved queries model.
+        *
+        * @return {boolean} Query exists
+        */
+       mw.rcfilters.Controller.prototype.findQueryMatchingCurrentState = function () {
+               var highlightedItems = {};
+
+               // Prepare highlights of the current query
+               this.filtersModel.getItemsSupportingHighlights().forEach( function ( item ) {
+                       highlightedItems[ item.getName() ] = item.getHighlightColor();
+               } );
+               highlightedItems.highlight = this.filtersModel.isHighlightEnabled();
+
+               return this.savedQueriesModel.findMatchingQuery(
+                       {
+                               filters: this.filtersModel.getSelectedState(),
+                               highlights: highlightedItems,
+                               invert: this.filtersModel.areNamespacesInverted()
                        }
+               );
+       };
+
+       /**
+        * Get an object representing the base state of parameters
+        * and highlights.
+        *
+        * This is meant to make sure that the saved queries that are
+        * in memory are always the same structure as what we would get
+        * by calling the current model's "getSelectedState" and by checking
+        * highlight items.
+        *
+        * In cases where a user saved a query when the system had a certain
+        * set of filters, and then a filter was added to the system, we want
+        * to make sure that the stored queries can still be comparable to
+        * the current state, which means that we need the base state for
+        * two operations:
+        *
+        * - Saved queries are stored in "minimal" view (only changed filters
+        *   are stored); When we initialize the system, we merge each minimal
+        *   query with the base state (using 'getNormalizedFilters') so all
+        *   saved queries have the exact same structure as what we would get
+        *   by checking the getSelectedState of the filter.
+        * - When we save the queries, we minimize the object to only represent
+        *   whatever has actually changed, rather than store the entire
+        *   object. To check what actually is different so we can store it,
+        *   we need to obtain a base state to compare against, this is
+        *   what #_getMinimalFilterList does
+        */
+       mw.rcfilters.Controller.prototype._buildBaseFilterState = function () {
+               var defaultParams = this.filtersModel.getDefaultParams(),
+                       highlightedItems = {};
+
+               // Prepare highlights
+               this.filtersModel.getItemsSupportingHighlights().forEach( function ( item ) {
+                       highlightedItems[ item.getName() ] = null;
                } );
+               highlightedItems.highlight = false;
 
-               return uri;
+               this.baseFilterState = {
+                       filters: this.filtersModel.getFiltersFromParameters( defaultParams ),
+                       highlights: highlightedItems,
+                       invert: false
+               };
        };
 
        /**
-        * Fetch the list of changes from the server for the current filters
+        * Get an object representing the base filter state of both
+        * filters and highlights. The structure is similar to what we use
+        * to store each query in the saved queries object:
+        * {
+        *    filters: {
+        *        filterName: (bool)
+        *    },
+        *    highlights: {
+        *        filterName: (string|null)
+        *    }
+        * }
         *
-        * @return {jQuery.Promise} Promise object that will resolve with the changes list
-        *  or with a string denoting no results.
+        * @return {Object} Object representing the base state of
+        *  parameters and highlights
         */
-       mw.rcfilters.Controller.prototype.fetchChangesList = function () {
-               var uri = this.getUpdatedUri(),
-                       requestId = ++this.requestCounter,
-                       latestRequest = function () {
-                               return requestId === this.requestCounter;
-                       }.bind( this );
+       mw.rcfilters.Controller.prototype._getBaseFilterState = function () {
+               return this.baseFilterState;
+       };
 
-               return $.ajax( uri.toString(), { contentType: 'html' } )
-                       .then(
-                               // Success
-                               function ( html ) {
-                                       var $parsed;
-                                       if ( !latestRequest() ) {
-                                               return $.Deferred().reject();
-                                       }
+       /**
+        * Get an object that holds only the parameters and highlights that have
+        * values different than the base default value.
+        *
+        * This is the reverse of the normalization we do initially on loading and
+        * initializing the saved queries model.
+        *
+        * @param {Object} valuesObject Object representing the state of both
+        *  filters and highlights in its normalized version, to be minimized.
+        * @return {Object} Minimal filters and highlights list
+        */
+       mw.rcfilters.Controller.prototype._getMinimalFilterList = function ( valuesObject ) {
+               var result = { filters: {}, highlights: {} },
+                       baseState = this._getBaseFilterState();
+
+               // XOR results
+               $.each( valuesObject.filters, function ( name, value ) {
+                       if ( baseState.filters !== undefined && baseState.filters[ name ] !== value ) {
+                               result.filters[ name ] = value;
+                       }
+               } );
 
-                                       $parsed = $( $.parseHTML( html ) );
+               $.each( valuesObject.highlights, function ( name, value ) {
+                       if ( baseState.highlights !== undefined && baseState.highlights[ name ] !== value ) {
+                               result.highlights[ name ] = value;
+                       }
+               } );
 
-                                       return {
-                                               // Changes list
-                                               changes: $parsed.find( '.mw-changeslist' ).first().contents(),
-                                               // Fieldset
-                                               fieldset: $parsed.find( 'fieldset.rcoptions' ).first()
-                                       };
-                               },
-                               // Failure
-                               function ( responseObj ) {
-                                       var $parsed;
+               return result;
+       };
 
-                                       if ( !latestRequest() ) {
-                                               return $.Deferred().reject();
-                                       }
+       /**
+        * Save the current state of the saved queries model with all
+        * query item representation in the user settings.
+        */
+       mw.rcfilters.Controller.prototype._saveSavedQueries = function () {
+               var stringified,
+                       state = this.savedQueriesModel.getState(),
+                       controller = this;
+
+               // Minimize before save
+               $.each( state.queries, function ( queryID, info ) {
+                       state.queries[ queryID ].data = controller._getMinimalFilterList( info.data );
+               } );
 
-                                       $parsed = $( $.parseHTML( responseObj.responseText ) );
+               // Stringify state
+               stringified = JSON.stringify( state );
 
-                                       // Force a resolve state to this promise
-                                       return $.Deferred().resolve( {
-                                               changes: 'NO_RESULTS',
-                                               fieldset: $parsed.find( 'fieldset.rcoptions' ).first()
-                                       } ).promise();
-                               }
-                       );
+               if ( stringified.length > 65535 ) {
+                       // Sanity check, since the preference can only hold that.
+                       return;
+               }
+
+               // Save the preference
+               new mw.Api().saveOption( 'rcfilters-saved-queries', stringified );
+               // Update the preference for this session
+               mw.user.options.set( 'rcfilters-saved-queries', stringified );
+       };
+
+       /**
+        * Synchronize the URL with the current state of the filters
+        * without adding an history entry.
+        */
+       mw.rcfilters.Controller.prototype.replaceUrl = function () {
+               mw.rcfilters.UriProcessor.static.replaceState( this._getUpdatedUri() );
+       };
+
+       /**
+        * Update filter state (selection and highlighting) based
+        * on current URL values.
+        *
+        * @param {boolean} [fetchChangesList=true] Fetch new results into the changes
+        *  list based on the updated model.
+        */
+       mw.rcfilters.Controller.prototype.updateStateFromUrl = function ( fetchChangesList ) {
+               fetchChangesList = fetchChangesList === undefined ? true : !!fetchChangesList;
+
+               this.uriProcessor.updateModelBasedOnQuery( new mw.Uri().query );
+
+               // Only update and fetch new results if it is requested
+               if ( fetchChangesList ) {
+                       this.updateChangesList();
+               }
        };
 
        /**
         * @param {Object} [params] Extra parameters to add to the API call
         */
        mw.rcfilters.Controller.prototype.updateChangesList = function ( params ) {
-               this.updateURL( params );
+               this._updateURL( params );
                this.changesListModel.invalidate();
-               this.fetchChangesList()
+               this._fetchChangesList()
                        .then(
                                // Success
                                function ( pieces ) {
        };
 
        /**
-        * Toggle the highlight feature on and off
+        * Get an object representing the default parameter state, whether
+        * it is from the model defaults or from the saved queries.
+        *
+        * @return {Object} Default parameters
         */
-       mw.rcfilters.Controller.prototype.toggleHighlight = function () {
-               this.filtersModel.toggleHighlight();
-               this.updateURL();
+       mw.rcfilters.Controller.prototype._getDefaultParams = function () {
+               var data, queryHighlights,
+                       savedParams = {},
+                       savedHighlights = {},
+                       defaultSavedQueryItem = this.savedQueriesModel.getItemByID( this.savedQueriesModel.getDefault() );
 
-               if ( this.filtersModel.isHighlightEnabled() ) {
-                       mw.hook( 'RcFilters.highlight.enable' ).fire();
+               if ( mw.config.get( 'wgStructuredChangeFiltersEnableSaving' ) &&
+                       defaultSavedQueryItem ) {
+
+                       data = defaultSavedQueryItem.getData();
+
+                       queryHighlights = data.highlights || {};
+                       savedParams = this.filtersModel.getParametersFromFilters( data.filters || {} );
+
+                       // Translate highlights to parameters
+                       savedHighlights.highlight = String( Number( queryHighlights.highlight ) );
+                       $.each( queryHighlights, function ( filterName, color ) {
+                               if ( filterName !== 'highlights' ) {
+                                       savedHighlights[ filterName + '_color' ] = color;
+                               }
+                       } );
+
+                       return $.extend( true, {}, savedParams, savedHighlights, { invert: data.invert } );
                }
+
+               return $.extend(
+                       { highlight: '0' },
+                       this.filtersModel.getDefaultParams()
+               );
        };
 
        /**
-        * Set the highlight color for a filter item
+        * Get an object representing the default parameter state, whether
+        * it is from the model defaults or from the saved queries.
         *
-        * @param {string} filterName Name of the filter item
-        * @param {string} color Selected color
+        * @return {Object} Default parameters
         */
-       mw.rcfilters.Controller.prototype.setHighlightColor = function ( filterName, color ) {
-               this.filtersModel.setHighlightColor( filterName, color );
-               this.updateURL();
-               this.trackHighlight( 'set', { name: filterName, color: color } );
+       mw.rcfilters.Controller.prototype._getDefaultParams = function () {
+               var data, queryHighlights,
+                       savedParams = {},
+                       savedHighlights = {},
+                       defaultSavedQueryItem = this.savedQueriesModel.getItemByID( this.savedQueriesModel.getDefault() );
+
+               if ( mw.config.get( 'wgStructuredChangeFiltersEnableSaving' ) &&
+                       defaultSavedQueryItem ) {
+
+                       data = defaultSavedQueryItem.getData();
+
+                       queryHighlights = data.highlights || {};
+                       savedParams = this.filtersModel.getParametersFromFilters( data.filters || {} );
+
+                       // Translate highlights to parameters
+                       savedHighlights.highlight = String( Number( queryHighlights.highlight ) );
+                       $.each( queryHighlights, function ( filterName, color ) {
+                               if ( filterName !== 'highlights' ) {
+                                       savedHighlights[ filterName + '_color' ] = color;
+                               }
+                       } );
+
+                       return $.extend( true, {}, savedParams, savedHighlights );
+               }
+
+               return this.filtersModel.getDefaultParams();
        };
 
        /**
-        * Clear highlight for a filter item
+        * Update the URL of the page to reflect current filters
         *
-        * @param {string} filterName Name of the filter item
+        * This should not be called directly from outside the controller.
+        * If an action requires changing the URL, it should either use the
+        * highlighting actions below, or call #updateChangesList which does
+        * the uri corrections already.
+        *
+        * @param {Object} [params] Extra parameters to add to the API call
         */
-       mw.rcfilters.Controller.prototype.clearHighlightColor = function ( filterName ) {
-               this.filtersModel.clearHighlightColor( filterName );
-               this.updateURL();
-               this.trackHighlight( 'clear', filterName );
+       mw.rcfilters.Controller.prototype._updateURL = function ( params ) {
+               var currentUri = new mw.Uri(),
+                       updatedUri = this._getUpdatedUri();
+
+               updatedUri.extend( params || {} );
+
+               if (
+                       this.uriProcessor.getVersion( currentUri.query ) !== 2 ||
+                       this.uriProcessor.isNewState( currentUri.query, updatedUri.query )
+               ) {
+                       mw.rcfilters.UriProcessor.static.replaceState( updatedUri );
+               }
        };
 
        /**
-        * Clear both highlight and selection of a filter
+        * Get an updated mw.Uri object based on the model state
         *
-        * @param {string} filterName Name of the filter item
+        * @return {mw.Uri} Updated Uri
         */
-       mw.rcfilters.Controller.prototype.clearFilter = function ( filterName ) {
-               var filterItem = this.filtersModel.getItemByName( filterName ),
-                       isHighlighted = filterItem.isHighlighted();
+       mw.rcfilters.Controller.prototype._getUpdatedUri = function () {
+               var uri = new mw.Uri();
 
-               if ( filterItem.isSelected() || isHighlighted ) {
-                       this.filtersModel.clearHighlightColor( filterName );
-                       this.filtersModel.toggleFilterSelected( filterName, false );
-                       this.updateChangesList();
-                       this.filtersModel.reassessFilterInteractions( filterItem );
-               }
+               // Minimize url
+               uri.query = this.uriProcessor.minimizeQuery(
+                       $.extend(
+                               true,
+                               {},
+                               // We want to retain unrecognized params
+                               // The uri params from model will override
+                               // any recognized value in the current uri
+                               // query, retain unrecognized params, and
+                               // the result will then be minimized
+                               uri.query,
+                               this.uriProcessor.getUriParametersFromModel(),
+                               { urlversion: '2' }
+                       )
+               );
 
-               if ( isHighlighted ) {
-                       this.trackHighlight( 'clear', filterName );
-               }
+               return uri;
        };
 
        /**
-        * Synchronize the URL with the current state of the filters
-        * without adding an history entry.
+        * Fetch the list of changes from the server for the current filters
+        *
+        * @return {jQuery.Promise} Promise object that will resolve with the changes list
+        *  or with a string denoting no results.
         */
-       mw.rcfilters.Controller.prototype.replaceUrl = function () {
-               window.history.replaceState(
-                       { tag: 'rcfilters' },
-                       document.title,
-                       this.getUpdatedUri().toString()
-               );
+       mw.rcfilters.Controller.prototype._fetchChangesList = function () {
+               var uri = this._getUpdatedUri(),
+                       requestId = ++this.requestCounter,
+                       latestRequest = function () {
+                               return requestId === this.requestCounter;
+                       }.bind( this );
+
+               return $.ajax( uri.toString(), { contentType: 'html' } )
+                       .then(
+                               // Success
+                               function ( html ) {
+                                       var $parsed;
+                                       if ( !latestRequest() ) {
+                                               return $.Deferred().reject();
+                                       }
+
+                                       $parsed = $( $.parseHTML( html ) );
+
+                                       return {
+                                               // Changes list
+                                               changes: $parsed.find( '.mw-changeslist' ).first().contents(),
+                                               // Fieldset
+                                               fieldset: $parsed.find( 'fieldset.rcoptions' ).first()
+                                       };
+                               },
+                               // Failure
+                               function ( responseObj ) {
+                                       var $parsed;
+
+                                       if ( !latestRequest() ) {
+                                               return $.Deferred().reject();
+                                       }
+
+                                       $parsed = $( $.parseHTML( responseObj.responseText ) );
+
+                                       // Force a resolve state to this promise
+                                       return $.Deferred().resolve( {
+                                               changes: 'NO_RESULTS',
+                                               fieldset: $parsed.find( 'fieldset.rcoptions' ).first()
+                                       } ).promise();
+                               }
+                       );
        };
 
        /**
         * @param {string} action
         * @param {array|object|string} filters
         */
-       mw.rcfilters.Controller.prototype.trackHighlight = function ( action, filters ) {
+       mw.rcfilters.Controller.prototype._trackHighlight = function ( action, filters ) {
                filters = typeof filters === 'string' ? { name: filters } : filters;
                filters = !Array.isArray( filters ) ? [ filters ] : filters;
                mw.track(
                        }
                );
        };
+
 }( mediaWiki, jQuery ) );
diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js
new file mode 100644 (file)
index 0000000..b7852d0
--- /dev/null
@@ -0,0 +1,275 @@
+( function ( mw, $ ) {
+       /* eslint no-underscore-dangle: "off" */
+       /**
+        * URI Processor for RCFilters
+        *
+        * @param {mw.rcfilters.dm.FiltersViewModel} filtersModel Filters view model
+        */
+       mw.rcfilters.UriProcessor = function MwRcfiltersController( filtersModel ) {
+               this.emptyParameterState = {};
+               this.filtersModel = filtersModel;
+
+               // Initialize
+               this._buildEmptyParameterState();
+       };
+
+       /* Initialization */
+       OO.initClass( mw.rcfilters.UriProcessor );
+
+       /* Static methods */
+
+       /**
+        * Replace the url history through replaceState
+        *
+        * @param {mw.Uri} newUri New URI to replace
+        */
+       mw.rcfilters.UriProcessor.static.replaceState = function ( newUri ) {
+               window.history.replaceState(
+                       { tag: 'rcfilters' },
+                       document.title,
+                       newUri.toString()
+               );
+       };
+
+       /**
+        * Push the url to history through pushState
+        *
+        * @param {mw.Uri} newUri New URI to push
+        */
+       mw.rcfilters.UriProcessor.static.pushState = function ( newUri ) {
+               window.history.pushState(
+                       { tag: 'rcfilters' },
+                       document.title,
+                       newUri.toString()
+               );
+       };
+
+       /* Methods */
+
+       /**
+        * Get the version that this URL query is tagged with.
+        *
+        * @param {Object} [uriQuery] URI query
+        * @return {number} URL version
+        */
+       mw.rcfilters.UriProcessor.prototype.getVersion = function ( uriQuery ) {
+               uriQuery = uriQuery || new mw.Uri().query;
+
+               return Number( uriQuery.urlversion || 1 );
+       };
+
+       /**
+        * Update the filters model based on the URI query
+        * This happens on initialization, and from this moment on,
+        * we consider the system synchronized, and the model serves
+        * as the source of truth for the URL.
+        *
+        * This methods should only be called once on initialiation.
+        * After initialization, the model updates the URL, not the
+        * other way around.
+        *
+        * @param {Object} [uriQuery] URI query
+        */
+       mw.rcfilters.UriProcessor.prototype.updateModelBasedOnQuery = function ( uriQuery ) {
+               var parameters = this._getNormalizedQueryParams( uriQuery || new mw.Uri().query );
+
+               // Update filter states
+               this.filtersModel.toggleFiltersSelected(
+                       this.filtersModel.getFiltersFromParameters(
+                               parameters
+                       )
+               );
+
+               this.filtersModel.toggleInvertedNamespaces( !!Number( parameters.invert ) );
+
+               // Update highlight state
+               this.filtersModel.toggleHighlight( !!Number( parameters.highlight ) );
+               this.filtersModel.getItems().forEach( function ( filterItem ) {
+                       var color = parameters[ filterItem.getName() + '_color' ];
+                       if ( color ) {
+                               filterItem.setHighlightColor( color );
+                       } else {
+                               filterItem.clearHighlightColor();
+                       }
+               } );
+
+               // Check all filter interactions
+               this.filtersModel.reassessFilterInteractions();
+       };
+
+       /**
+        * Get parameters representing the current state of the model
+        *
+        * @return {Object} Uri query parameters
+        */
+       mw.rcfilters.UriProcessor.prototype.getUriParametersFromModel = function () {
+               return $.extend(
+                       true,
+                       {},
+                       this.filtersModel.getParametersFromFilters(),
+                       this.filtersModel.getHighlightParameters(),
+                       {
+                               highlight: String( Number( this.filtersModel.isHighlightEnabled() ) ),
+                               invert: String( Number( this.filtersModel.areNamespacesInverted() ) )
+                       }
+               );
+       };
+
+       /**
+        * Build the full parameter representation based on given query parameters
+        *
+        * @private
+        * @param {Object} uriQuery Given URI query
+        * @return {Object} Full parameter state representing the URI query
+        */
+       mw.rcfilters.UriProcessor.prototype._expandModelParameters = function ( uriQuery ) {
+               var filterRepresentation = this.filtersModel.getFiltersFromParameters( uriQuery );
+
+               return $.extend( true,
+                       {},
+                       uriQuery,
+                       this.filtersModel.getParametersFromFilters( filterRepresentation ),
+                       this.filtersModel.extractHighlightValues( uriQuery ),
+                       {
+                               highlight: String( Number( uriQuery.highlight ) ),
+                               invert: String( Number( uriQuery.invert ) )
+                       }
+               );
+       };
+
+       /**
+        * Compare two URI queries to decide whether they are different
+        * enough to represent a new state.
+        *
+        * @param {Object} currentUriQuery Current Uri query
+        * @param {Object} updatedUriQuery Updated Uri query
+        * @return {boolean} This is a new state
+        */
+       mw.rcfilters.UriProcessor.prototype.isNewState = function ( currentUriQuery, updatedUriQuery ) {
+               var currentParamState, updatedParamState,
+                       notEquivalent = function ( obj1, obj2 ) {
+                               var keys = Object.keys( obj1 ).concat( Object.keys( obj2 ) );
+                               return keys.some( function ( key ) {
+                                       return obj1[ key ] != obj2[ key ]; // eslint-disable-line eqeqeq
+                               } );
+                       };
+
+               // Compare states instead of parameters
+               // This will allow us to always have a proper check of whether
+               // the requested new url is one to change or not, regardless of
+               // actual parameter visibility/representation in the URL
+               currentParamState = this._expandModelParameters( currentUriQuery );
+               updatedParamState = this._expandModelParameters( updatedUriQuery );
+
+               return notEquivalent( currentParamState, updatedParamState );
+       };
+
+       /**
+        * Check whether the given query has parameters that are
+        * recognized as parameters we should load the system with
+        *
+        * @param {mw.Uri} [uriQuery] Given URI query
+        * @return {boolean} Query contains valid recognized parameters
+        */
+       mw.rcfilters.UriProcessor.prototype.doesQueryContainRecognizedParams = function ( uriQuery ) {
+               var anyValidInUrl,
+                       validParameterNames = Object.keys( this._getEmptyParameterState() )
+                               .filter( function ( param ) {
+                                       // Remove 'highlight' parameter from this check;
+                                       // if it's the only parameter in the URL we still
+                                       // want to consider the URL 'empty' for defaults to load
+                                       return param !== 'highlight';
+                               } );
+
+               uriQuery = uriQuery || new mw.Uri().query;
+
+               anyValidInUrl = Object.keys( uriQuery ).some( function ( parameter ) {
+                       return validParameterNames.indexOf( parameter ) > -1;
+               } );
+
+               // URL version 2 is allowed to be empty or within nonrecognized params
+               return anyValidInUrl || this.getVersion( uriQuery ) === 2;
+       };
+
+       /**
+        * Remove all parameters that have the same value as the base state
+        * This method expects uri queries of the urlversion=2 format
+        *
+        * @private
+        * @param {Object} uriQuery Current uri query
+        * @return {Object} Minimized query
+        */
+       mw.rcfilters.UriProcessor.prototype.minimizeQuery = function ( uriQuery ) {
+               var baseParams = this._getEmptyParameterState(),
+                       uriResult = $.extend( true, {}, uriQuery );
+
+               $.each( uriResult, function ( paramName, paramValue ) {
+                       if (
+                               baseParams[ paramName ] !== undefined &&
+                               baseParams[ paramName ] === paramValue
+                       ) {
+                               // Remove parameter from query
+                               delete uriResult[ paramName ];
+                       }
+               } );
+
+               return uriResult;
+       };
+
+       /**
+        * Get the adjusted URI params based on the url version
+        * If the urlversion is not 2, the parameters are merged with
+        * the model's defaults.
+        *
+        * @private
+        * @param {Object} uriQuery Current URI query
+        * @return {Object} Normalized parameters
+        */
+       mw.rcfilters.UriProcessor.prototype._getNormalizedQueryParams = function ( uriQuery ) {
+               // Check whether we are dealing with urlversion=2
+               // If we are, we do not merge the initial request with
+               // defaults. Not having urlversion=2 means we need to
+               // reproduce the server-side request and merge the
+               // requested parameters (or starting state) with the
+               // wiki default.
+               // Any subsequent change of the URL through the RCFilters
+               // system will receive 'urlversion=2'
+               var base = this.getVersion( uriQuery ) === 2 ?
+                       {} :
+                       this.filtersModel.getDefaultParams();
+
+               return this.minimizeQuery(
+                       $.extend( true, {}, base, uriQuery, { urlversion: '2' } )
+               );
+       };
+
+       /**
+        * Get the representation of an empty parameter state
+        *
+        * @private
+        * @return {Object} Empty parameter state
+        */
+       mw.rcfilters.UriProcessor.prototype._getEmptyParameterState = function () {
+               return this.emptyParameterState;
+       };
+
+       /**
+        * Build an empty representation of the parameters, where all parameters
+        * are either set to '0' or '' depending on their type.
+        * This must run during initialization, before highlights are set.
+        *
+        * @private
+        */
+       mw.rcfilters.UriProcessor.prototype._buildEmptyParameterState = function () {
+               var emptyParams = this.filtersModel.getParametersFromFilters( {} ),
+                       emptyHighlights = this.filtersModel.getHighlightParameters();
+
+               this.emptyParameterState = $.extend(
+                       true,
+                       {},
+                       emptyParams,
+                       emptyHighlights,
+                       { highlight: '0', invert: '0' }
+               );
+       };
+}( mediaWiki, jQuery ) );
index 4a586e4..6cd2d0b 100644 (file)
                init: function () {
                        var filtersModel = new mw.rcfilters.dm.FiltersViewModel(),
                                changesListModel = new mw.rcfilters.dm.ChangesListViewModel(),
-                               controller = new mw.rcfilters.Controller( filtersModel, changesListModel ),
+                               savedQueriesModel = new mw.rcfilters.dm.SavedQueriesModel(),
+                               controller = new mw.rcfilters.Controller( filtersModel, changesListModel, savedQueriesModel ),
                                $overlay = $( '<div>' )
                                        .addClass( 'mw-rcfilters-ui-overlay' ),
                                filtersWidget = new mw.rcfilters.ui.FilterWrapperWidget(
-                                       controller, filtersModel, { $overlay: $overlay } );
+                                       controller, filtersModel, savedQueriesModel, { $overlay: $overlay } );
 
                        // TODO: The changesListWrapperWidget should be able to initialize
                        // after the model is ready.
                        new mw.rcfilters.ui.ChangesListWrapperWidget(
                                filtersModel, changesListModel, $( '.mw-changeslist, .mw-changeslist-empty' ) );
 
-                       controller.initialize( mw.config.get( 'wgStructuredChangeFilters' ) );
+                       controller.initialize(
+                               mw.config.get( 'wgStructuredChangeFilters' ),
+                               mw.config.get( 'wgFormattedNamespaces' ),
+                               mw.config.get( 'wgRCFiltersChangeTags' )
+                       );
 
                        // eslint-disable-next-line no-new
                        new mw.rcfilters.ui.FormWrapperWidget(
                        // Set as ready
                        $( '.rcfilters-head' ).addClass( 'mw-rcfilters-ui-ready' );
 
-                       window.addEventListener( 'popstate', function () {
-                               controller.updateStateBasedOnUrl();
-                               controller.updateChangesList();
-                       } );
-
                        $( 'a.mw-helplink' ).attr(
                                'href',
                                'https://www.mediawiki.org/wiki/Special:MyLanguage/Help:New_filters_for_edit_review'
index 3ddb5a0..8cea27e 100644 (file)
@@ -1,3 +1,45 @@
 ( function ( mw ) {
-       mw.rcfilters = { dm: {}, ui: {} };
+       mw.rcfilters = {
+               dm: {},
+               ui: {},
+               utils: {
+                       addArrayElementsUnique: function ( arr, elements ) {
+                               elements = Array.isArray( elements ) ? elements : [ elements ];
+
+                               elements.forEach( function ( element ) {
+                                       if ( arr.indexOf( element ) === -1 ) {
+                                               arr.push( element );
+                                       }
+                               } );
+
+                               return arr;
+                       },
+                       normalizeParamOptions: function ( givenOptions, legalOptions ) {
+                               var result = [];
+
+                               if ( givenOptions.indexOf( 'all' ) > -1 ) {
+                                       // If anywhere in the values there's 'all', we
+                                       // treat it as if only 'all' was selected.
+                                       // Example: param=valid1,valid2,all
+                                       // Result: param=all
+                                       return [ 'all' ];
+                               }
+
+                               // Get rid of any dupe and invalid parameter, only output
+                               // valid ones
+                               // Example: param=valid1,valid2,invalid1,valid1
+                               // Result: param=valid1,valid2
+                               givenOptions.forEach( function ( value ) {
+                                       if (
+                                               legalOptions.indexOf( value ) > -1 &&
+                                               result.indexOf( value ) === -1
+                                       ) {
+                                               result.push( value );
+                                       }
+                               } );
+
+                               return result;
+                       }
+               }
+       };
 }( mediaWiki ) );
index d47346c..844e41c 100644 (file)
                min-height: 100px;
                margin: 0;
        }
+
+       .mw-changeslist-empty {
+               // Hide the 'empty' message when we load rcfilters
+               // since we replace it anyways with a specific
+               // message of our own
+               display: none;
+       }
 }
 
 .mw-rcfilters-staticfilters-selected {
index 402f0ad..20a78d0 100644 (file)
                }
        }
 
+       ul {
+               // Each li's margin-left should be the width of the highlights
+               // element + the margin
+               margin-left: ~'calc( ( @{result-circle-diameter} + @{result-circle-margin} ) * 5 + @{result-circle-general-margin} )';
+       }
+
        &-highlighted {
                ul {
                        list-style: none;
-                       // Each li's margin-left should be the width of the highlights
-                       // element + the margin
-                       margin-left: ~'calc( ( @{result-circle-diameter} + @{result-circle-margin} ) * 5 + @{result-circle-general-margin} )';
 
                        li {
                                list-style: none;
 
        // Two colors
        .highlight-color-mix( c1, c2 );
-       .highlight-color-mix( c1, c3 );
+       // Overriding .highlight-color-mix( c1, c3 ); to produce
+       // a custom color rather than the computed tint
+       // see https://phabricator.wikimedia.org/T161267
+       .mw-rcfilters-highlight-color-c1.mw-rcfilters-highlight-color-c3 {
+               background-color: #ccdecc;
+       }
        .highlight-color-mix( c1, c4 );
        .highlight-color-mix( c1, c5 );
        .highlight-color-mix( c2, c3 );
diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterFloatingMenuSelectWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterFloatingMenuSelectWidget.less
deleted file mode 100644 (file)
index 194b1b2..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-@import 'mediawiki.mixins';
-
-.mw-rcfilters-ui-filterFloatingMenuSelectWidget {
-       z-index: auto;
-       max-width: 650px;
-
-       &-body {
-               max-height: 70vh;
-       }
-
-       &-footer {
-               background-color: #f8f9fa;
-               text-align: right;
-               padding: 0.5em;
-       }
-}
index 1f3d343..24907b9 100644 (file)
@@ -11,8 +11,8 @@
        &-header {
                border-bottom: 1px solid #c8ccd1;
                background: #f8f9fa;
-               overflow: hidden;
 
+               &-invert,
                &-highlight {
                        width: 1em;
                        vertical-align: middle;
index 9d78f85..28aae6c 100644 (file)
@@ -1,59 +1,20 @@
 @import 'mediawiki.mixins';
 
 .mw-rcfilters-ui-filterMenuOptionWidget {
-       padding: 0 0.5em;
-       .box-sizing( border-box );
-
-       &:not( :last-child ) {
-               border-bottom: solid 1px #eaecf0; // Base 80 AAA
-       }
-
-       &:hover {
-               background-color: #fbfbfb;
-       }
-
-       .mw-rcfilters-ui-table {
-               padding-top: 0.5em;
-       }
-
-       &-muted {
+       &.oo-ui-flaggedElement-muted {
                background-color: #f8f9fa; // Base90 AAA
-               .mw-rcfilters-ui-filterMenuOptionWidget-label-title,
-               .mw-rcfilters-ui-filterMenuOptionWidget-label-desc {
-                       color: #54595d; // Base20 AAA
-               }
-       }
-
-       &.oo-ui-optionWidget-selected {
-               background-color: #eaf3ff; // Accent90 AAA
-       }
 
-       &-label {
-               &-title {
-                       font-weight: bold;
-                       font-size: 1.15em;
-                       color: #222;
-               }
-               &-desc {
-                       color: #464a4f;
-                       white-space: normal;
-               }
-       }
-
-       &-filterCheckbox {
-               .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline {
-                       // Override margin-top and -bottom rules from FieldLayout
-                       margin: 0 !important; /* stylelint-disable-line declaration-no-important */
+               .mw-rcfilters-ui-itemMenuOptionWidget-label-title,
+               .mw-rcfilters-ui-itemMenuOptionWidget-label-desc {
+                       color: #54595d; // Base20 AAA
                }
 
-               .oo-ui-checkboxInputWidget {
-                       // Workaround for IE11 rendering issues. T162098
-                       display: block;
+               &.oo-ui-optionWidget-highlighted {
+                       // Copying over styles from OOUI, since it must
+                       // override our 'muted' state
+                       background-color: #eaecf0;
+                       color: #000;
                }
        }
 
-       &-highlightButton {
-               width: 4em;
-               padding-left: 1em;
-       }
 }
diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuOptionWidget.monobook.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuOptionWidget.monobook.less
new file mode 100644 (file)
index 0000000..01b87c0
--- /dev/null
@@ -0,0 +1,5 @@
+.mw-rcfilters-ui-filterMenuOptionWidget {
+       &.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected > .oo-ui-iconElement-icon {
+               background-image: none;
+       }
+}
diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterTagItemWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterTagItemWidget.less
deleted file mode 100644 (file)
index c82903e..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-@import 'mw.rcfilters.mixins';
-
-.mw-rcfilters-ui-filterTagItemWidget {
-       background-color: #fff;
-       border-color: #979797;
-       color: #222;
-
-       // Background and color of the capsule widget need a bit
-       // more specificity to override ooui internals
-       &-muted.oo-ui-tagItemWidget.oo-ui-widget-enabled {
-               // Muted state
-               background-color: #eaecf0;
-               border-color: #c8ccd1;
-
-               .oo-ui-labelElement-label {
-                       color: #72777d;
-               }
-               .oo-ui-buttonWidget {
-                       opacity: @muted-opacity;
-               }
-       }
-
-       &-conflicted.oo-ui-tagItemWidget.oo-ui-widget-enabled {
-               background-color: #fee7e6; // Red90 AAA
-               border-color: #b32424; // Red30 AAA
-
-               .oo-ui-labelElement-label {
-                       color: #b32424;
-               }
-               .oo-ui-buttonWidget {
-                       opacity: @muted-opacity;
-               }
-       }
-
-       &-selected.oo-ui-tagItemWidget.oo-ui-widget-enabled {
-               background-color: #eaf3ff;
-               border-color: #36c;
-       }
-
-       &-popup-content {
-               padding: 0.5em;
-               color: #54595d;
-       }
-
-       &.oo-ui-labelElement .oo-ui-labelElement-label {
-               vertical-align: middle;
-               cursor: pointer;
-       }
-
-       &-highlight {
-               display: none;
-               margin-right: 0.5em;
-               height: 100%;
-               width: 10px;
-
-               &-highlighted {
-                       display: inline-block;
-               }
-
-               &:before {
-                       content: '';
-                       position: absolute;
-                       display: block;
-                       top: 50%;
-               }
-
-               &[data-color='c1']:before {
-                       .mw-rcfilters-mixin-circle( @highlight-c1, 10px, ~'-5px 0.5em 0 0' );
-               }
-
-               &[data-color='c2']:before {
-                       .mw-rcfilters-mixin-circle( @highlight-c2, 10px, ~'-5px 0.5em 0 0' );
-               }
-
-               &[data-color='c3']:before {
-                       .mw-rcfilters-mixin-circle( @highlight-c3, 10px, ~'-5px 0.5em 0 0' );
-               }
-
-               &[data-color='c4']:before {
-                       .mw-rcfilters-mixin-circle( @highlight-c4, 10px, ~'-5px 0.5em 0 0' );
-               }
-
-               &[data-color='c5']:before {
-                       .mw-rcfilters-mixin-circle( @highlight-c5, 10px, ~'-5px 0.5em 0 0' );
-               }
-       }
-}
index 7371fdd..66e6d96 100644 (file)
@@ -1,6 +1,11 @@
 .mw-rcfilters-ui-filterTagMultiselectWidget {
        max-width: none;
 
+       .oo-ui-tagMultiselectWidget-input input {
+               // Make sure this uses the interface direction, not the content direction
+               direction: ltr;
+       }
+
        &.oo-ui-widget-enabled .oo-ui-tagMultiselectWidget-handle {
                border: 1px solid #a2a9b1;
                border-bottom: 0;
                margin-top: 0.3em;
        }
 
-       &-wrapper-content-title {
-               font-weight: bold;
-               color: #54595d;
+       &-wrapper-content {
+               &-title {
+                       font-weight: bold;
+                       color: #54595d;
+               }
+
+               &-savedQueryTitle {
+                       color: #72777d;
+                       margin-left: 1em;
+               }
        }
 
        &-emptyFilters {
index f52b7ff..1a29459 100644 (file)
@@ -1,17 +1,10 @@
 .mw-rcfilters-ui-filterWrapperWidget {
+       margin-top: 1em;
        width: 100%;
        // Make sure this uses the interface direction, not the content direction
        direction: ltr;
 
-       &-search {
-               max-width: none;
-               margin-top: -1px;
-
-               input {
-                       // We need to reiterate the directionality
-                       // for the input as well to literally override
-                       // a MediaWiki CSS rule that turns it 'ltr'
-                       direction: ltr;
-               }
+       &-viewToggleButtons {
+               margin-top: 1em;
        }
 }
index 88f1195..4a7c3f8 100644 (file)
@@ -9,12 +9,24 @@
 
        &-buttonSelect {
                &-color {
-                       .oo-ui-iconElement-icon {
-                               width: 2em;
-                               height: 2em;
+                       // Make the rule much more specific to override OOUI
+                       .oo-ui-iconElement-icon.oo-ui-icon-check {
+                               // Override OOUI icon dimensions
+                               // The parent is 2em with 0.5em margin
+                               // (see mw-rcfilters-mixin-circle below)
+                               // so here we want 2em - 0.5em = 1.5em
+                               width: 1.5em;
+                               height: 1.5em;
+                               // By eye, this is centered horizontally for the color circle
+                               margin-left: -0.1em;
                        }
 
                        &-none {
+                               .oo-ui-iconElement-icon.oo-ui-icon-check {
+                                       // By eye, this is centered horizontally for the white circle
+                                       margin-left: -0.2em;
+                               }
+
                                .mw-rcfilters-mixin-circle( @highlight-none, 2em, 0.5em, true );
                                // Override border to dashed
                                border: 1px dashed #565656;
diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ItemMenuOptionWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ItemMenuOptionWidget.less
new file mode 100644 (file)
index 0000000..86bfafb
--- /dev/null
@@ -0,0 +1,71 @@
+@import 'mediawiki.mixins';
+
+.mw-rcfilters-ui-itemMenuOptionWidget {
+       min-height: 3.5em;
+       padding: 0 0.5em;
+       .box-sizing( border-box );
+
+       &:not( :last-child ) {
+               border-bottom: solid 1px #eaecf0; // Base 80 AAA
+       }
+
+       &-view-namespaces {
+               border-top: 5px solid #ccc;
+
+               &:first-child,
+               &.mw-rcfilters-ui-itemMenuOptionWidget-identifier-subject + &.mw-rcfilters-ui-itemMenuOptionWidget-identifier-talk {
+                       border-top: 0;
+               }
+       }
+
+       &:hover {
+               background-color: #fbfbfb;
+       }
+
+       .mw-rcfilters-ui-table {
+               padding-top: 0.5em;
+       }
+
+       &.oo-ui-optionWidget-selected {
+               background-color: #eaf3ff; // Accent90 AAA
+       }
+
+       &-label {
+               &-title {
+                       font-weight: bold;
+                       font-size: 1.15em;
+                       color: #222;
+               }
+               &-desc {
+                       color: #464a4f;
+                       white-space: normal;
+               }
+       }
+
+       &-itemCheckbox {
+               .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline {
+                       // Override margin-top and -bottom rules from FieldLayout
+                       margin: 0 !important; /* stylelint-disable-line declaration-no-important */
+               }
+
+               .oo-ui-checkboxInputWidget {
+                       // Workaround for IE11 rendering issues. T162098
+                       display: block;
+               }
+       }
+
+       .mw-rcfilters-ui-cell {
+               vertical-align: middle;
+       }
+
+       &-excludeLabel {
+               width: 5em;
+               padding-left: 1em;
+               color: #54595d; // Base20 AAA
+       }
+
+       &-highlightButton {
+               width: 4em;
+               padding-left: 1em;
+       }
+}
diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.MenuSelectWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.MenuSelectWidget.less
new file mode 100644 (file)
index 0000000..2dd43a8
--- /dev/null
@@ -0,0 +1,30 @@
+@import 'mediawiki.mixins';
+
+.mw-rcfilters-ui-menuSelectWidget {
+       z-index: auto;
+       max-width: 650px;
+
+       &.oo-ui-menuSelectWidget-invisible {
+               display: block;
+       }
+
+       &-noresults {
+               display: none;
+               padding: 0.5em;
+               color: #666;
+
+               .oo-ui-menuSelectWidget-invisible & {
+                       display: inline-block;
+               }
+       }
+
+       &-body {
+               max-height: 70vh;
+       }
+
+       &-footer {
+               background-color: #f8f9fa;
+               text-align: right;
+               padding: 0.5em;
+       }
+}
diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.SaveFiltersPopupButtonWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.SaveFiltersPopupButtonWidget.less
new file mode 100644 (file)
index 0000000..e19c246
--- /dev/null
@@ -0,0 +1,22 @@
+.mw-rcfilters-ui-saveFiltersPopupButtonWidget {
+       &-popup {
+               &-layout {
+                       padding-bottom: 1.5em;
+               }
+
+               > .oo-ui-popupWidget-popup > .oo-ui-popupWidget-head {
+                       > .oo-ui-iconWidget {
+                               margin: 0.75em 0.5em;
+                               float: left;
+                       }
+
+                       > .oo-ui-labelElement-label {
+                               font-size: 1.2em;
+                               padding: 0.3em;
+                               margin-left: 0;
+                               font-weight: bold;
+                       }
+               }
+       }
+
+}
diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.SavedLinksListItemWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.SavedLinksListItemWidget.less
new file mode 100644 (file)
index 0000000..fb0b93b
--- /dev/null
@@ -0,0 +1,53 @@
+.mw-rcfilters-ui-savedLinksListItemWidget {
+       padding: 0.2em 0.7em;
+
+       &:hover {
+               // Mimicking optionWidget styles
+               background-color: #eaecf0;
+               color: #000;
+       }
+
+       .mw-rcfilters-ui-cell {
+               vertical-align: middle;
+       }
+
+       .oo-ui-iconElement-icon {
+               // Since we made the rows narrower (height smaller than usual)
+               // then the icon needs to be slightly smaller as well, so that
+               // when we toggle 'default' the icon doesn't bounce the option
+               // height up a little
+               width: 1.7em;
+               height: 1.7em;
+       }
+
+       &-icon span {
+               display: inline-block;
+       }
+
+       &-input {
+               display: inline-block;
+               margin-right: 0;
+               width: 15em;
+       }
+
+       &-label {
+               max-width: 15em;
+               display: inline-block;
+               vertical-align: middle;
+               text-overflow: ellipsis;
+               overflow: hidden;
+               cursor: pointer;
+               margin-left: 0.5px;
+               color: #36c; // Accent50;
+       }
+
+       &-icon,
+       &-button {
+               width: 2em;
+       }
+
+       &-content {
+               width: 100%;
+       }
+
+}
diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.SavedLinksListWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.SavedLinksListWidget.less
new file mode 100644 (file)
index 0000000..716ed03
--- /dev/null
@@ -0,0 +1,30 @@
+.mw-rcfilters-ui-savedLinksListWidget {
+       float: right;
+
+       &-menu {
+               width: 100%;
+       }
+
+       &-placeholder {
+               &-title {
+                       font-weight: bold;
+                       margin-bottom: 1em;
+               }
+
+               // Extra specificity needed to override OOUI rule that sets white-space: nowrap;
+               // on labels inside options
+               &.oo-ui-optionWidget .oo-ui-labelElement-label {
+                       color: #72777d;
+                       white-space: normal;
+               }
+
+               .oo-ui-iconElement-icon {
+                       opacity: 0.5;
+                       // Override OOUI option widget rules for icons
+                       // we want the icon to appear at the top near the
+                       // title, not in the middle of the multiline option
+                       top: 0.7em !important; /* stylelint-disable-line declaration-no-important */
+                       height: inherit !important; /* stylelint-disable-line declaration-no-important */
+               }
+       }
+}
diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.TagItemWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.TagItemWidget.less
new file mode 100644 (file)
index 0000000..4805f64
--- /dev/null
@@ -0,0 +1,80 @@
+@import 'mw.rcfilters.mixins';
+
+.mw-rcfilters-ui-tagItemWidget {
+       // Background and color of the capsule widget need a bit
+       // more specificity to override ooui internals
+       &.oo-ui-flaggedElement-muted.oo-ui-tagItemWidget.oo-ui-widget-enabled {
+               // Muted state
+               background-color: #eaecf0;
+               border-color: #c8ccd1;
+
+               .oo-ui-labelElement-label {
+                       color: #72777d;
+               }
+               .oo-ui-buttonWidget {
+                       opacity: @muted-opacity;
+               }
+       }
+
+       &.oo-ui-flaggedElement-invalid.oo-ui-tagItemWidget.oo-ui-widget-enabled {
+               .oo-ui-labelElement-label {
+                       color: #b32424;
+               }
+       }
+
+       // OOUI classes require super-specificity in order to override
+       // the white background
+       // The specificity is fixed in the patch: https://gerrit.wikimedia.org/r/#/c/349525/
+       // and will be available in the next OOUI release.
+       .oo-ui-tagMultiselectWidget.oo-ui-widget-enabled.oo-ui-tagMultiselectWidget-outlined .oo-ui-tagMultiselectWidget-handle &-selected.oo-ui-tagItemWidget.oo-ui-widget-enabled {
+               background-color: #eaf3ff;
+               border-color: #36c;
+       }
+
+       &-popup-content {
+               padding: 0.5em;
+               color: #54595d;
+       }
+
+       &.oo-ui-labelElement .oo-ui-labelElement-label {
+               cursor: pointer;
+       }
+
+       &-highlight {
+               display: none;
+               margin-right: 0.5em;
+               height: 100%;
+               width: 10px;
+
+               &-highlighted {
+                       display: inline-block;
+               }
+
+               &:before {
+                       content: '';
+                       position: absolute;
+                       display: block;
+                       top: 50%;
+               }
+
+               &[data-color='c1']:before {
+                       .mw-rcfilters-mixin-circle( @highlight-c1, 10px, ~'-5px 0.5em 0 0' );
+               }
+
+               &[data-color='c2']:before {
+                       .mw-rcfilters-mixin-circle( @highlight-c2, 10px, ~'-5px 0.5em 0 0' );
+               }
+
+               &[data-color='c3']:before {
+                       .mw-rcfilters-mixin-circle( @highlight-c3, 10px, ~'-5px 0.5em 0 0' );
+               }
+
+               &[data-color='c4']:before {
+                       .mw-rcfilters-mixin-circle( @highlight-c4, 10px, ~'-5px 0.5em 0 0' );
+               }
+
+               &[data-color='c5']:before {
+                       .mw-rcfilters-mixin-circle( @highlight-c5, 10px, ~'-5px 0.5em 0 0' );
+               }
+       }
+}
index 957e9e9..c0f24c6 100644 (file)
        }
 }
 
+// Temporary icon classes, until these icons
+// are merged into OOUI properly
+.oo-ui-iconElement-icon.oo-ui-icon-clip {
+       /* @embed */
+       background-image: url( ../images/clip.svg );
+}
+
+.oo-ui-iconElement-icon.oo-ui-icon-unClip {
+       /* @embed */
+       background-image: url( ../images/unClip.svg );
+}
+
+.oo-ui-iconElement-icon.oo-ui-icon-pushPin {
+       /* @embed */
+       background-image: url( ../images/pushPin.svg );
+}
index c7e6961..c7754be 100644 (file)
                        update: 'onModelUpdate'
                } );
 
-               this.$element.addClass( 'mw-rcfilters-ui-changesListWrapperWidget' );
+               this.$element
+                       .addClass( 'mw-rcfilters-ui-changesListWrapperWidget' )
+                       // We handle our own display/hide of the empty results message
+                       .removeClass( 'mw-changeslist-empty' );
 
                // Set up highlight containers
                this.setupHighlightContainers( this.$element );
@@ -92,7 +95,6 @@
                        isEmpty = $changesListContent === 'NO_RESULTS';
 
                this.$element.toggleClass( 'mw-changeslist', !isEmpty );
-               this.$element.toggleClass( 'mw-changeslist-empty', isEmpty );
                if ( isEmpty ) {
                        this.$changesListContent = null;
                        this.$element.empty();
                                                .prop( 'data-color', 'none' )
                                );
 
+               if ( $( '.mw-rcfilters-ui-changesListWrapperWidget-highlights' ).length ) {
+                       // Already set up
+                       return;
+               }
+
                mw.rcfilters.HighlightColors.forEach( function ( color ) {
                        $highlights.append(
                                $( '<div>' )
diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterFloatingMenuSelectWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterFloatingMenuSelectWidget.js
deleted file mode 100644 (file)
index ec85df9..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-( function ( mw ) {
-       /**
-        * A floating menu widget for the filter list
-        *
-        * @extends OO.ui.FloatingMenuSelectWidget
-        *
-        * @constructor
-        * @param {mw.rcfilters.Controller} controller Controller
-        * @param {mw.rcfilters.dm.FiltersViewModel} model View model
-        * @param {Object} [config] Configuration object
-        * @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups
-        * @cfg {jQuery} [$footer] An optional footer for the menu
-        */
-       mw.rcfilters.ui.FilterFloatingMenuSelectWidget = function MwRcfiltersUiFilterFloatingMenuSelectWidget( controller, model, config ) {
-               var header;
-
-               config = config || {};
-
-               this.controller = controller;
-               this.model = model;
-
-               this.inputValue = '';
-               this.$overlay = config.$overlay || this.$element;
-               this.$footer = config.$footer;
-               this.$body = $( '<div>' )
-                               .addClass( 'mw-rcfilters-ui-filterFloatingMenuSelectWidget-body' );
-
-               // Parent
-               mw.rcfilters.ui.FilterFloatingMenuSelectWidget.parent.call( this, $.extend( {
-                       $autoCloseIgnore: this.$overlay,
-                       width: 650
-               }, config ) );
-               this.setGroupElement(
-                       $( '<div>' )
-                               .addClass( 'mw-rcfilters-ui-filterFloatingMenuSelectWidget-group' )
-               );
-               this.setClippableElement( this.$body );
-               this.setClippableContainer( this.$element );
-
-               header = new mw.rcfilters.ui.FilterMenuHeaderWidget(
-                       this.controller,
-                       this.model,
-                       {
-                               $overlay: this.$overlay
-                       }
-               );
-
-               this.$element
-                       .addClass( 'mw-rcfilters-ui-filterFloatingMenuSelectWidget' )
-                       .append(
-                               this.$body
-                                       .append( header.$element, this.$group )
-                       );
-
-               if ( this.$footer ) {
-                       this.$element.append(
-                               this.$footer
-                                       .addClass( 'mw-rcfilters-ui-filterFloatingMenuSelectWidget-footer' )
-                       );
-               }
-       };
-
-       /* Initialize */
-
-       OO.inheritClass( mw.rcfilters.ui.FilterFloatingMenuSelectWidget, OO.ui.FloatingMenuSelectWidget );
-
-       /* Events */
-
-       /**
-        * @event itemVisibilityChange
-        *
-        * Item visibility has changed
-        */
-
-       /* Methods */
-
-       /**
-        * @fires itemVisibilityChange
-        * @inheritdoc
-        */
-       mw.rcfilters.ui.FilterFloatingMenuSelectWidget.prototype.updateItemVisibility = function () {
-               var i,
-                       itemWasHighlighted = false,
-                       inputVal = this.$input.val(),
-                       items = this.getItems();
-
-               // Since the method hides/shows items, we don't want to
-               // call it unless the input actually changed
-               if ( this.inputValue !== inputVal ) {
-                       // Parent method
-                       mw.rcfilters.ui.FilterFloatingMenuSelectWidget.parent.prototype.updateItemVisibility.call( this );
-
-                       if ( inputVal !== '' ) {
-                               // Highlight the first item in the list
-                               for ( i = 0; i < items.length; i++ ) {
-                                       if (
-                                               !( items[ i ] instanceof OO.ui.MenuSectionOptionWidget ) &&
-                                               items[ i ].isVisible()
-                                       ) {
-                                               itemWasHighlighted = true;
-                                               this.highlightItem( items[ i ] );
-                                               break;
-                                       }
-                               }
-                       }
-
-                       if ( !itemWasHighlighted ) {
-                               this.highlightItem( null );
-                       }
-
-                       // Cache value
-                       this.inputValue = inputVal;
-
-                       this.emit( 'itemVisibilityChange' );
-               }
-       };
-
-       /**
-        * Override the item matcher to use the model's match process
-        *
-        * @inheritdoc
-        */
-       mw.rcfilters.ui.FilterFloatingMenuSelectWidget.prototype.getItemMatcher = function ( s ) {
-               var results = this.model.findMatches( s, true );
-
-               return function ( item ) {
-                       return results.indexOf( item.getModel() ) > -1;
-               };
-       };
-
-       /**
-        * Scroll to the top of the menu
-        */
-       mw.rcfilters.ui.FilterFloatingMenuSelectWidget.prototype.scrollToTop = function () {
-               this.$body.scrollTop( 0 );
-       };
-}( mediaWiki ) );
index 1e0c8d5..835cec8 100644 (file)
                        icon: 'highlight',
                        indicator: 'down',
                        popup: {
-                               // TODO: There is a bug in non-anchored popups in
-                               // OOUI, so we set this popup to "anchored" until
-                               // the bug is fixed.
-                               // See: https://phabricator.wikimedia.org/T159906
-                               anchor: true,
+                               anchor: false,
                                padded: true,
                                align: 'backwards',
                                horizontalPosition: 'end',
 
        OO.inheritClass( mw.rcfilters.ui.FilterItemHighlightButton, OO.ui.PopupButtonWidget );
 
+       /* Static Properties */
+
+       /**
+        * @static
+        * @inheritdoc
+        */
+       mw.rcfilters.ui.FilterItemHighlightButton.static.cancelButtonMouseDownEvents = true;
+
        /* Methods */
 
        /**
index 15e7eee..b8b68a7 100644 (file)
                        classes: [ 'mw-rcfilters-ui-filterMenuHeaderWidget-hightlightButton' ]
                } );
 
+               // Invert namespaces button
+               this.invertNamespacesButton = new OO.ui.ToggleButtonWidget( {
+                       icon: '',
+                       label: mw.msg( 'invert' ),
+                       classes: [ 'mw-rcfilters-ui-filterMenuHeaderWidget-invertNamespacesButton' ]
+               } );
+               this.invertNamespacesButton.toggle( this.model.getCurrentView() === 'namespaces' );
+
                // Events
                this.highlightButton
                        .connect( this, { click: 'onHighlightButtonClick' } );
-               this.model.connect( this, { highlightChange: 'onModelHighlightChange' } );
+               this.invertNamespacesButton
+                       .connect( this, { click: 'onInvertNamespacesButtonClick' } );
+               this.model.connect( this, {
+                       highlightChange: 'onModelHighlightChange',
+                       invertChange: 'onModelInvertChange',
+                       update: 'onModelUpdate'
+               } );
 
                // Initialize
                this.$element
                                                                        .addClass( 'mw-rcfilters-ui-cell' )
                                                                        .addClass( 'mw-rcfilters-ui-filterMenuHeaderWidget-header-title' )
                                                                        .append( this.$label ),
+                                                               $( '<div>' )
+                                                                       .addClass( 'mw-rcfilters-ui-cell' )
+                                                                       .addClass( 'mw-rcfilters-ui-filterMenuHeaderWidget-header-invert' )
+                                                                       .append( this.invertNamespacesButton.$element ),
                                                                $( '<div>' )
                                                                        .addClass( 'mw-rcfilters-ui-cell' )
                                                                        .addClass( 'mw-rcfilters-ui-filterMenuHeaderWidget-header-highlight' )
 
        /* Methods */
 
+       /**
+        * Respond to model update event
+        */
+       mw.rcfilters.ui.FilterMenuHeaderWidget.prototype.onModelUpdate = function () {
+               this.setLabel( this.model.getCurrentViewLabel() );
+
+               this.invertNamespacesButton.toggle( this.model.getCurrentView() === 'namespaces' );
+       };
+
        /**
         * Respond to model highlight change event
         *
                this.highlightButton.setActive( highlightEnabled );
        };
 
+       /**
+        * Respond to model invert change event
+        *
+        * @param {boolean} isInverted Namespaces selection is inverted
+        */
+       mw.rcfilters.ui.FilterMenuHeaderWidget.prototype.onModelInvertChange = function ( isInverted ) {
+               this.invertNamespacesButton.setActive( isInverted );
+       };
+
        /**
         * Respond to highlight button click
         */
        mw.rcfilters.ui.FilterMenuHeaderWidget.prototype.onHighlightButtonClick = function () {
                this.controller.toggleHighlight();
        };
+
+       /**
+        * Respond to highlight button click
+        */
+       mw.rcfilters.ui.FilterMenuHeaderWidget.prototype.onInvertNamespacesButtonClick = function () {
+               this.controller.toggleInvertedNamespaces();
+       };
 }( mediaWiki, jQuery ) );
index b46c069..d235c39 100644 (file)
@@ -2,7 +2,7 @@
        /**
         * A widget representing a single toggle filter
         *
-        * @extends OO.ui.MenuOptionWidget
+        * @extends mw.rcfilters.ui.ItemMenuOptionWidget
         *
         * @constructor
         * @param {mw.rcfilters.Controller} controller RCFilters controller
         * @param {Object} config Configuration object
         */
        mw.rcfilters.ui.FilterMenuOptionWidget = function MwRcfiltersUiFilterMenuOptionWidget( controller, model, config ) {
-               var layout,
-                       $label = $( '<div>' )
-                               .addClass( 'mw-rcfilters-ui-filterMenuOptionWidget-label' );
-
                config = config || {};
 
                this.controller = controller;
                this.model = model;
 
                // Parent
-               mw.rcfilters.ui.FilterMenuOptionWidget.parent.call( this, $.extend( {
-                       // Override the 'check' icon that OOUI defines
-                       icon: '',
-                       data: this.model.getName(),
-                       label: this.model.getLabel()
-               }, config ) );
-
-               this.checkboxWidget = new mw.rcfilters.ui.CheckboxInputWidget( {
-                       value: this.model.getName(),
-                       selected: this.model.isSelected()
-               } );
-
-               $label.append(
-                       $( '<div>' )
-                               .addClass( 'mw-rcfilters-ui-filterMenuOptionWidget-label-title' )
-                               .append( this.$label )
-               );
-               if ( this.model.getDescription() ) {
-                       $label.append(
-                               $( '<div>' )
-                                       .addClass( 'mw-rcfilters-ui-filterMenuOptionWidget-label-desc' )
-                                       .text( this.model.getDescription() )
-                       );
-               }
-
-               this.highlightButton = new mw.rcfilters.ui.FilterItemHighlightButton(
-                       this.controller,
-                       this.model,
-                       {
-                               $overlay: config.$overlay || this.$element,
-                               title: mw.msg( 'rcfilters-highlightmenu-help' )
-                       }
-               );
-               this.highlightButton.toggle( this.model.isHighlightEnabled() );
-
-               layout = new OO.ui.FieldLayout( this.checkboxWidget, {
-                       label: $label,
-                       align: 'inline'
-               } );
+               mw.rcfilters.ui.FilterMenuOptionWidget.parent.call( this, controller, model, config );
 
                // Event
-               this.model.connect( this, { update: 'onModelUpdate' } );
                this.model.getGroupModel().connect( this, { update: 'onGroupModelUpdate' } );
 
                this.$element
-                       .addClass( 'mw-rcfilters-ui-filterMenuOptionWidget' )
-                       .append(
-                               $( '<div>' )
-                                       .addClass( 'mw-rcfilters-ui-table' )
-                                       .append(
-                                               $( '<div>' )
-                                                       .addClass( 'mw-rcfilters-ui-row' )
-                                                       .append(
-                                                               $( '<div>' )
-                                                                       .addClass( 'mw-rcfilters-ui-cell mw-rcfilters-ui-filterMenuOptionWidget-filterCheckbox' )
-                                                                       .append( layout.$element ),
-                                                               $( '<div>' )
-                                                                       .addClass( 'mw-rcfilters-ui-cell mw-rcfilters-ui-filterMenuOptionWidget-highlightButton' )
-                                                                       .append( this.highlightButton.$element )
-                                                       )
-                                       )
-                       );
+                       .addClass( 'mw-rcfilters-ui-filterMenuOptionWidget' );
        };
 
        /* Initialization */
-
-       OO.inheritClass( mw.rcfilters.ui.FilterMenuOptionWidget, OO.ui.MenuOptionWidget );
+       OO.inheritClass( mw.rcfilters.ui.FilterMenuOptionWidget, mw.rcfilters.ui.ItemMenuOptionWidget );
 
        /* Static properties */
 
        /* Methods */
 
        /**
-        * Respond to item model update event
+        * @inheritdoc
         */
        mw.rcfilters.ui.FilterMenuOptionWidget.prototype.onModelUpdate = function () {
-               this.checkboxWidget.setSelected( this.model.isSelected() );
+               // Parent
+               mw.rcfilters.ui.FilterMenuOptionWidget.parent.prototype.onModelUpdate.call( this );
 
                this.setCurrentMuteState();
        };
        };
 
        /**
-        * Set the current mute state for this item
+        * Set the current muted view of the widget based on its state
         */
        mw.rcfilters.ui.FilterMenuOptionWidget.prototype.setCurrentMuteState = function () {
-               this.$element.toggleClass(
-                       'mw-rcfilters-ui-filterMenuOptionWidget-muted',
-                       this.model.isConflicted() ||
-                       (
-                               // Item is also muted when any of the items in its group is active
-                               this.model.getGroupModel().isActive() &&
-                               // But it isn't selected
-                               !this.model.isSelected() &&
-                               // And also not included
-                               !this.model.isIncluded()
+               this.setFlags( {
+                       muted: (
+                               this.model.isConflicted() ||
+                               (
+                                       // Item is also muted when any of the items in its group is active
+                                       this.model.getGroupModel().isActive() &&
+                                       // But it isn't selected
+                                       !this.model.isSelected() &&
+                                       // And also not included
+                                       !this.model.isIncluded()
+                               )
                        )
-               );
-
-               this.highlightButton.toggle( this.model.isHighlightEnabled() );
-       };
-
-       /**
-        * Get the name of this filter
-        *
-        * @return {string} Filter name
-        */
-       mw.rcfilters.ui.FilterMenuOptionWidget.prototype.getName = function () {
-               return this.model.getName();
-       };
-
-       mw.rcfilters.ui.FilterMenuOptionWidget.prototype.getModel = function () {
-               return this.model;
+               } );
        };
-
 }( mediaWiki ) );
index cfffc65..8a36eb4 100644 (file)
-( function ( mw, $ ) {
+( function ( mw ) {
        /**
         * Extend OOUI's FilterTagItemWidget to also display a popup on hover.
         *
         * @class
-        * @extends OO.ui.FilterTagItemWidget
-        * @mixins OO.ui.mixin.PopupElement
+        * @extends mw.rcfilters.ui.TagItemWidget
         *
         * @constructor
         * @param {mw.rcfilters.Controller} controller
         * @param {mw.rcfilters.dm.FilterItem} model Item model
         * @param {Object} config Configuration object
-        * @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups
         */
        mw.rcfilters.ui.FilterTagItemWidget = function MwRcfiltersUiFilterTagItemWidget( controller, model, config ) {
-               // Configuration initialization
                config = config || {};
 
-               this.controller = controller;
-               this.model = model;
+               mw.rcfilters.ui.FilterTagItemWidget.parent.call( this, controller, model, config );
 
-               mw.rcfilters.ui.FilterTagItemWidget.parent.call( this, $.extend( {
-                       data: this.model.getName(),
-                       label: this.model.getLabel()
-               }, config ) );
-
-               this.$overlay = config.$overlay || this.$element;
-               this.popupLabel = new OO.ui.LabelWidget();
-
-               // Mixin constructors
-               OO.ui.mixin.PopupElement.call( this, $.extend( {
-                       popup: {
-                               padded: false,
-                               align: 'center',
-                               position: 'above',
-                               $content: $( '<div>' )
-                                       .addClass( 'mw-rcfilters-ui-filterTagItemWidget-popup-content' )
-                                       .append( this.popupLabel.$element ),
-                               $floatableContainer: this.$element,
-                               classes: [ 'mw-rcfilters-ui-filterTagItemWidget-popup' ]
-                       }
-               }, config ) );
-
-               this.positioned = false;
-               this.popupTimeoutShow = null;
-               this.popupTimeoutHide = null;
-
-               this.$highlight = $( '<div>' )
-                       .addClass( 'mw-rcfilters-ui-filterTagItemWidget-highlight' );
-
-               // Events
-               this.model.connect( this, { update: 'onModelUpdate' } );
-
-               // Initialization
-               this.$overlay.append( this.popup.$element );
                this.$element
-                       .prepend( this.$highlight )
-                       .attr( 'aria-haspopup', 'true' )
-                       .on( 'mouseenter', this.onMouseEnter.bind( this ) )
-                       .on( 'mouseleave', this.onMouseLeave.bind( this ) );
-
-               this.setCurrentMuteState();
-               this.setHighlightColor();
+                       .addClass( 'mw-rcfilters-ui-filterTagItemWidget' );
        };
 
        /* Initialization */
 
-       OO.inheritClass( mw.rcfilters.ui.FilterTagItemWidget, OO.ui.TagItemWidget );
-       OO.mixinClass( mw.rcfilters.ui.FilterTagItemWidget, OO.ui.mixin.PopupElement );
+       OO.inheritClass( mw.rcfilters.ui.FilterTagItemWidget, mw.rcfilters.ui.TagItemWidget );
 
        /* Methods */
 
        /**
-        * Respond to model update event
-        */
-       mw.rcfilters.ui.FilterTagItemWidget.prototype.onModelUpdate = function () {
-               this.setCurrentMuteState();
-
-               this.setHighlightColor();
-       };
-
-       mw.rcfilters.ui.FilterTagItemWidget.prototype.setHighlightColor = function () {
-               var selectedColor = this.model.isHighlightEnabled() ? this.model.getHighlightColor() : null;
-
-               this.$highlight
-                       .attr( 'data-color', selectedColor )
-                       .toggleClass(
-                               'mw-rcfilters-ui-filterTagItemWidget-highlight-highlighted',
-                               !!selectedColor
-                       );
-       };
-
-       /**
-        * Set the current mute state for this item
+        * @inheritdoc
         */
        mw.rcfilters.ui.FilterTagItemWidget.prototype.setCurrentMuteState = function () {
-               this.$element
-                       .toggleClass(
-                               'mw-rcfilters-ui-filterTagItemWidget-muted',
+               this.setFlags( {
+                       muted: (
                                !this.model.isSelected() ||
                                this.model.isIncluded() ||
                                this.model.isFullyCovered()
-                       )
-                       .toggleClass(
-                               'mw-rcfilters-ui-filterTagItemWidget-conflicted',
-                               this.model.isSelected() && this.model.isConflicted()
-                       );
-       };
-
-       /**
-        * Respond to mouse enter event
-        */
-       mw.rcfilters.ui.FilterTagItemWidget.prototype.onMouseEnter = function () {
-               var labelText = this.model.getStateMessage();
-
-               if ( labelText ) {
-                       this.popupLabel.setLabel( labelText );
-
-                       if ( !this.positioned ) {
-                               // Recalculate anchor position to be center of the capsule item
-                               this.popup.$anchor.css( 'margin-left', ( this.$element.width() / 2 ) );
-                               this.positioned = true;
-                       }
-
-                       // Set timeout for the popup to show
-                       this.popupTimeoutShow = setTimeout( function () {
-                               this.popup.toggle( true );
-                       }.bind( this ), 500 );
-
-                       // Cancel the hide timeout
-                       clearTimeout( this.popupTimeoutHide );
-                       this.popupTimeoutHide = null;
-               }
-       };
-
-       /**
-        * Respond to mouse leave event
-        */
-       mw.rcfilters.ui.FilterTagItemWidget.prototype.onMouseLeave = function () {
-               this.popupTimeoutHide = setTimeout( function () {
-                       this.popup.toggle( false );
-               }.bind( this ), 250 );
-
-               // Clear the show timeout
-               clearTimeout( this.popupTimeoutShow );
-               this.popupTimeoutShow = null;
-       };
-
-       /**
-        * Set selected state on this widget
-        *
-        * @param {boolean} [isSelected] Widget is selected
-        */
-       mw.rcfilters.ui.FilterTagItemWidget.prototype.toggleSelected = function ( isSelected ) {
-               isSelected = isSelected !== undefined ? isSelected : !this.selected;
-
-               if ( this.selected !== isSelected ) {
-                       this.selected = isSelected;
-
-                       this.$element.toggleClass( 'mw-rcfilters-ui-filterTagItemWidget-selected', this.selected );
-               }
-       };
-
-       /**
-        * Get item name
-        *
-        * @return {string} Filter name
-        */
-       mw.rcfilters.ui.FilterTagItemWidget.prototype.getName = function () {
-               return this.model.getName();
-       };
-
-       /**
-        * Remove and destroy external elements of this widget
-        */
-       mw.rcfilters.ui.FilterTagItemWidget.prototype.destroy = function () {
-               // Destroy the popup
-               this.popup.$element.detach();
-
-               // Disconnect events
-               this.model.disconnect( this );
-               this.closeButton.disconnect( this );
+                       ),
+                       invalid: this.model.isSelected() && this.model.isConflicted()
+               } );
        };
 }( mediaWiki, jQuery ) );
index 2461929..268138f 100644 (file)
@@ -2,17 +2,20 @@
        /**
         * List displaying all filter groups
         *
-        * @extends OO.ui.Widget
+        * @extends OO.ui.MenuTagMultiselectWidget
         * @mixins OO.ui.mixin.PendingElement
         *
         * @constructor
         * @param {mw.rcfilters.Controller} controller Controller
         * @param {mw.rcfilters.dm.FiltersViewModel} model View model
+        * @param {mw.rcfilters.dm.SavedQueriesModel} savedQueriesModel Saved queries model
         * @param {Object} config Configuration object
         * @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups
         */
-       mw.rcfilters.ui.FilterTagMultiselectWidget = function MwRcfiltersUiFilterTagMultiselectWidget( controller, model, config ) {
-               var title = new OO.ui.LabelWidget( {
+       mw.rcfilters.ui.FilterTagMultiselectWidget = function MwRcfiltersUiFilterTagMultiselectWidget( controller, model, savedQueriesModel, config ) {
+               var rcFiltersRow,
+                       areSavedQueriesEnabled = mw.config.get( 'wgStructuredChangeFiltersEnableSaving' ),
+                       title = new OO.ui.LabelWidget( {
                                label: mw.msg( 'rcfilters-activefilters' ),
                                classes: [ 'mw-rcfilters-ui-filterTagMultiselectWidget-wrapper-content-title' ]
                        } ),
 
                this.controller = controller;
                this.model = model;
+               this.queriesModel = savedQueriesModel;
                this.$overlay = config.$overlay || this.$element;
+               this.matchingQuery = null;
+               this.areSavedQueriesEnabled = areSavedQueriesEnabled;
 
                // Parent
                mw.rcfilters.ui.FilterTagMultiselectWidget.parent.call( this, $.extend( true, {
                        }
                }, config ) );
 
+               this.savedQueryTitle = new OO.ui.LabelWidget( {
+                       label: '',
+                       classes: [ 'mw-rcfilters-ui-filterTagMultiselectWidget-wrapper-content-savedQueryTitle' ]
+               } );
+
                this.resetButton = new OO.ui.ButtonWidget( {
                        framed: false,
                        classes: [ 'mw-rcfilters-ui-filterTagMultiselectWidget-resetButton' ]
                } );
 
+               if ( areSavedQueriesEnabled ) {
+                       this.saveQueryButton = new mw.rcfilters.ui.SaveFiltersPopupButtonWidget(
+                               this.controller,
+                               this.queriesModel
+                       );
+
+                       this.saveQueryButton.$element.on( 'mousedown', function ( e ) { e.stopPropagation(); } );
+
+                       this.saveQueryButton.connect( this, {
+                               click: 'onSaveQueryButtonClick',
+                               saveCurrent: 'setSavedQueryVisibility'
+                       } );
+               }
+
                this.emptyFilterMessage = new OO.ui.LabelWidget( {
                        label: mw.msg( 'rcfilters-empty-filter' ),
                        classes: [ 'mw-rcfilters-ui-filterTagMultiselectWidget-emptyFilters' ]
                this.resetButton.$element.on( 'mousedown', function ( e ) { e.stopPropagation(); } );
                this.model.connect( this, {
                        initialize: 'onModelInitialize',
+                       update: 'onModelUpdate',
                        itemUpdate: 'onModelItemUpdate',
                        highlightChange: 'onModelHighlightChange'
                } );
-               this.menu.connect( this, { toggle: 'onMenuToggle' } );
+               this.input.connect( this, { change: 'onInputChange' } );
+               this.queriesModel.connect( this, { itemUpdate: 'onSavedQueriesItemUpdate' } );
+
+               // The filter list and button should appear side by side regardless of how
+               // wide the button is; the button also changes its width depending
+               // on language and its state, so the safest way to present both side
+               // by side is with a table layout
+               rcFiltersRow = $( '<div>' )
+                       .addClass( 'mw-rcfilters-ui-row' )
+                       .append(
+                               this.$content
+                                       .addClass( 'mw-rcfilters-ui-cell' )
+                                       .addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget-cell-filters' )
+                       );
+
+               if ( areSavedQueriesEnabled ) {
+                       rcFiltersRow.append(
+                               $( '<div>' )
+                                       .addClass( 'mw-rcfilters-ui-cell' )
+                                       .addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget-cell-save' )
+                                       .append( this.saveQueryButton.$element )
+                       );
+               }
+
+               rcFiltersRow.append(
+                       $( '<div>' )
+                               .addClass( 'mw-rcfilters-ui-cell' )
+                               .addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget-cell-reset' )
+                               .append( this.resetButton.$element )
+               );
 
                // Build the content
                $contentWrapper.append(
                        title.$element,
+                       this.savedQueryTitle.$element,
                        $( '<div>' )
                                .addClass( 'mw-rcfilters-ui-table' )
                                .append(
-                                       // The filter list and button should appear side by side regardless of how
-                                       // wide the button is; the button also changes its width depending
-                                       // on language and its state, so the safest way to present both side
-                                       // by side is with a table layout
-                                       $( '<div>' )
-                                               .addClass( 'mw-rcfilters-ui-row' )
-                                               .append(
-                                                       this.$content
-                                                               .addClass( 'mw-rcfilters-ui-cell' )
-                                                               .addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget-cell-filters' ),
-                                                       $( '<div>' )
-                                                               .addClass( 'mw-rcfilters-ui-cell' )
-                                                               .addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget-cell-reset' )
-                                                               .append( this.resetButton.$element )
-                                               )
+                                       rcFiltersRow
                                )
                );
 
                // Initialize
                this.$handle.append( $contentWrapper );
                this.emptyFilterMessage.toggle( this.isEmpty() );
+               this.savedQueryTitle.toggle( false );
 
                this.$element
                        .addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget' );
 
-               this.populateFromModel();
                this.reevaluateResetRestoreState();
        };
 
 
        /* Methods */
 
+       /**
+        * Respond to input change event
+        *
+        * @param {string} value Value of the input
+        */
+       mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onInputChange = function ( value ) {
+               var view = this.model.getViewByTrigger( value.substr( 0, 1 ) );
+
+               this.controller.switchView( view );
+       };
+       /**
+        * Respond to query button click
+        */
+       mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onSaveQueryButtonClick = function () {
+               this.getMenu().toggle( false );
+       };
+
+       /**
+        * Respond to save query item change. Mainly this is done to update the label in case
+        * a query item has been edited
+        *
+        * @param {mw.rcfilters.dm.SavedQueryItemModel} item Saved query item
+        */
+       mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onSavedQueriesItemUpdate = function ( item ) {
+               if ( this.matchingQuery === item ) {
+                       // This means we just edited the item that is currently matched
+                       this.savedQueryTitle.setLabel( item.getLabel() );
+               }
+       };
+
        /**
         * Respond to menu toggle
         *
         * @param {boolean} isVisible Menu is visible
         */
        mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onMenuToggle = function ( isVisible ) {
+               // Parent
+               mw.rcfilters.ui.FilterTagMultiselectWidget.parent.prototype.onMenuToggle.call( this );
+
                if ( isVisible ) {
-                       mw.hook( 'RcFilters.popup.open' ).fire( this.getMenu().getSelectedItem() );
+                       mw.hook( 'RcFilters.popup.open' ).fire();
 
                        if ( !this.getMenu().getSelectedItem() ) {
                                // If there are no selected items, scroll menu to top
                        }
                } else {
                        // Clear selection
-                       this.getMenu().selectItem( null );
+                       this.selectTag( null );
+
+                       // Clear input if the only thing in the input is the prefix
+                       if (
+                               this.input.getValue() === this.model.getViewTrigger( this.model.getCurrentView() )
+                       ) {
+                               // Clear the input
+                               this.input.setValue( '' );
+                       }
                }
        };
 
                this.scrollToTop( this.$element );
        };
 
+       /**
+        * @inheritdoc
+        */
+       mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.doInputEscape = function () {
+               // Parent
+               mw.rcfilters.ui.FilterTagMultiselectWidget.parent.prototype.doInputEscape.call( this );
+
+               // Blur the input
+               this.input.$input.blur();
+       };
+
        /**
         * @inheridoc
         */
         * Respond to model initialize event
         */
        mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onModelInitialize = function () {
-               this.populateFromModel();
+               this.setSavedQueryVisibility();
+       };
+
+       /**
+        * Respond to model update event
+        */
+       mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onModelUpdate = function () {
+               this.updateElementsForView();
+       };
+
+       /**
+        * Update the elements in the widget to the current view
+        */
+       mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.updateElementsForView = function () {
+               var view = this.model.getCurrentView(),
+                       inputValue = this.input.getValue(),
+                       inputView = this.model.getViewByTrigger( inputValue.substr( 0, 1 ) );
+
+               if ( inputView !== 'default' ) {
+                       // We have a prefix already, remove it
+                       inputValue = inputValue.substr( 1 );
+               }
+
+               if ( inputView !== view ) {
+                       // Add the correct prefix
+                       inputValue = this.model.getViewTrigger( view ) + inputValue;
+               }
+
+               // Update input
+               this.input.setValue( inputValue );
+       };
+
+       /**
+        * Set the visibility of the saved query button
+        */
+       mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.setSavedQueryVisibility = function () {
+               if ( this.areSavedQueriesEnabled ) {
+                       this.matchingQuery = this.controller.findQueryMatchingCurrentState();
+
+                       this.savedQueryTitle.setLabel(
+                               this.matchingQuery ? this.matchingQuery.getLabel() : ''
+                       );
+                       this.savedQueryTitle.toggle( !!this.matchingQuery );
+                       this.saveQueryButton.toggle(
+                               !this.isEmpty() &&
+                               !this.matchingQuery
+                       );
+               }
        };
 
        /**
                        this.removeTagByData( item.getName() );
                }
 
+               this.setSavedQueryVisibility();
+
                // Re-evaluate reset state
                this.reevaluateResetRestoreState();
        };
         */
        mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.isAllowedData = function ( data ) {
                return (
-                       this.menu.getItemFromData( data ) &&
+                       this.model.getItemByName( data ) &&
                        !this.isDuplicateData( data )
                );
        };
         */
        mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onMenuChoose = function ( item ) {
                this.controller.toggleFilterSelect( item.model.getName() );
+
+               // Select the tag if it exists, or reset selection otherwise
+               this.selectTag( this.getItemFromData( item.model.getName() ) );
+
+               this.focus();
        };
 
        /**
         */
        mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onTagSelect = function ( tagItem ) {
                var widget = this,
-                       menuOption = this.menu.getItemFromData( tagItem.getData() );
+                       menuOption = this.menu.getItemFromModel( tagItem.getModel() ),
+                       oldInputValue = this.input.getValue();
 
                // Reset input
                this.input.setValue( '' );
 
+               // Switch view
+               this.controller.switchView( tagItem.getView() );
+
                // Parent method
                mw.rcfilters.ui.FilterTagMultiselectWidget.parent.prototype.onTagSelect.call( this, tagItem );
 
                this.menu.selectItem( menuOption );
+               this.selectTag( tagItem );
 
                // Scroll to the item
-               // We're binding a 'once' to the itemVisibilityChange event
-               // so this happens when the menu is ready after the items
-               // are visible again, in case this is done right after the
-               // user filtered the results
-               this.getMenu().once(
-                       'itemVisibilityChange',
-                       function () { widget.scrollToTop( menuOption.$element ); }
-               );
+               if ( oldInputValue ) {
+                       // We're binding a 'once' to the itemVisibilityChange event
+                       // so this happens when the menu is ready after the items
+                       // are visible again, in case this is done right after the
+                       // user filtered the results
+                       this.getMenu().once(
+                               'itemVisibilityChange',
+                               function () { widget.scrollToTop( menuOption.$element ); }
+                       );
+               } else {
+                       this.scrollToTop( menuOption.$element );
+               }
        };
 
+       /**
+        * Select a tag by reference. This is what OO.ui.SelectWidget is doing.
+        * If no items are given, reset selection from all.
+        *
+        * @param {mw.rcfilters.ui.FilterTagItemWidget} [item] Tag to select,
+        *  omit to deselect all
+        */
+       mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.selectTag = function ( item ) {
+               var i, len, selected;
+
+               for ( i = 0, len = this.items.length; i < len; i++ ) {
+                       selected = this.items[ i ] === item;
+                       if ( this.items[ i ].isSelected() !== selected ) {
+                               this.items[ i ].toggleSelected( selected );
+                       }
+               }
+       };
        /**
         * @inheritdoc
         */
         * @inheritdoc
         */
        mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.createMenuWidget = function ( menuConfig ) {
-               return new mw.rcfilters.ui.FilterFloatingMenuSelectWidget(
+               return new mw.rcfilters.ui.MenuSelectWidget(
                        this.controller,
                        this.model,
                        $.extend( {
                );
        };
 
-       /**
-        * Populate the menu from the model
-        */
-       mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.populateFromModel = function () {
-               var widget = this,
-                       items = [];
-
-               // Reset
-               this.getMenu().clearItems();
-
-               $.each( this.model.getFilterGroups(), function ( groupName, groupModel ) {
-                       items.push(
-                               // Group section
-                               new mw.rcfilters.ui.FilterMenuSectionOptionWidget(
-                                       widget.controller,
-                                       groupModel,
-                                       {
-                                               $overlay: widget.$overlay
-                                       }
-                               )
-                       );
-
-                       // Add items
-                       widget.model.getGroupFilters( groupName ).forEach( function ( filterItem ) {
-                               items.push(
-                                       new mw.rcfilters.ui.FilterMenuOptionWidget(
-                                               widget.controller,
-                                               filterItem,
-                                               {
-                                                       $overlay: widget.$overlay
-                                               }
-                                       )
-                               );
-                       } );
-               } );
-
-               // Add all items to the menu
-               this.getMenu().addItems( items );
-       };
-
        /**
         * @inheritdoc
         */
index b7ebf34..4626514 100644 (file)
@@ -8,11 +8,12 @@
         * @constructor
         * @param {mw.rcfilters.Controller} controller Controller
         * @param {mw.rcfilters.dm.FiltersViewModel} model View model
+        * @param {mw.rcfilters.dm.SavedQueriesModel} savedQueriesModel Saved queries model
         * @param {Object} [config] Configuration object
         * @cfg {Object} [filters] A definition of the filter groups in this list
         * @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups
         */
-       mw.rcfilters.ui.FilterWrapperWidget = function MwRcfiltersUiFilterWrapperWidget( controller, model, config ) {
+       mw.rcfilters.ui.FilterWrapperWidget = function MwRcfiltersUiFilterWrapperWidget( controller, model, savedQueriesModel, config ) {
                config = config || {};
 
                // Parent
 
                this.controller = controller;
                this.model = model;
+               this.queriesModel = savedQueriesModel;
                this.$overlay = config.$overlay || this.$element;
 
                this.filterTagWidget = new mw.rcfilters.ui.FilterTagMultiselectWidget(
                        this.controller,
                        this.model,
+                       this.queriesModel,
                        { $overlay: this.$overlay }
                );
 
+               this.viewToggle = new OO.ui.ButtonSelectWidget( {
+                       classes: [ 'mw-rcfilters-ui-filterWrapperWidget-viewToggleButtons' ],
+                       items: [
+                               new OO.ui.ButtonOptionWidget( {
+                                       data: 'namespaces',
+                                       label: mw.msg( 'namespaces' ),
+                                       icon: 'article',
+                                       classes: [ 'mw-rcfilters-ui-filterWrapperWidget-viewToggleButtons-namespaces' ]
+                               } ),
+                               new OO.ui.ButtonOptionWidget( {
+                                       data: 'tags',
+                                       label: mw.msg( 'rcfilters-view-tags' ),
+                                       icon: 'tag',
+                                       classes: [ 'mw-rcfilters-ui-filterWrapperWidget-viewToggleButtons-tags' ]
+                               } )
+                       ]
+               } );
+
+               // Events
+               this.model.connect( this, { update: 'onModelUpdate' } );
+               this.viewToggle.connect( this, { select: 'onViewToggleSelect' } );
+
                // Initialize
                this.$element
-                       .addClass( 'mw-rcfilters-ui-filterWrapperWidget' )
-                       .append( this.filterTagWidget.$element );
+                       .addClass( 'mw-rcfilters-ui-filterWrapperWidget' );
+
+               if ( mw.config.get( 'wgStructuredChangeFiltersEnableSaving' ) ) {
+                       this.savedLinksListWidget = new mw.rcfilters.ui.SavedLinksListWidget(
+                               this.controller,
+                               this.queriesModel,
+                               { $overlay: this.$overlay }
+                       );
+
+                       this.$element.append(
+                               this.savedLinksListWidget.$element
+                       );
+
+               }
+
+               this.$element.append(
+                       this.filterTagWidget.$element,
+                       this.viewToggle.$element
+               );
+               this.viewToggle.toggle( !!mw.config.get( 'wgStructuredChangeFiltersEnableExperimentalViews' ) );
        };
 
        /* Initialization */
 
        OO.inheritClass( mw.rcfilters.ui.FilterWrapperWidget, OO.ui.Widget );
        OO.mixinClass( mw.rcfilters.ui.FilterWrapperWidget, OO.ui.mixin.PendingElement );
+
+       /* Methods */
+
+       /**
+        * Respond to model update event
+        */
+       mw.rcfilters.ui.FilterWrapperWidget.prototype.onModelUpdate = function () {
+               // Synchronize the state of the toggle buttons with the current view
+               this.viewToggle.selectItemByData( this.model.getCurrentView() );
+       };
+
+       /**
+        * Respond to namespace toggle button click
+        *
+        * @param {OO.ui.ButtonWidget} buttonWidget The button that was clicked
+        */
+       mw.rcfilters.ui.FilterWrapperWidget.prototype.onViewToggleSelect = function ( buttonWidget ) {
+               if ( buttonWidget ) {
+                       this.controller.switchView( buttonWidget.getData() );
+                       this.filterTagWidget.focus();
+               }
+       };
+
 }( mediaWiki ) );
index d17ffff..4e1ae97 100644 (file)
 
                // Collect all data from form
                $( e.target ).find( 'input:not([type="hidden"],[type="submit"]), select' ).each( function () {
+                       var value = '';
+
                        if ( !$( this ).is( ':checkbox' ) || $( this ).is( ':checked' ) ) {
-                               data[ $( this ).prop( 'name' ) ] = $( this ).val();
+                               value = $( this ).val();
                        }
+
+                       data[ $( this ).prop( 'name' ) ] = value;
                } );
 
                this.controller.updateChangesList( data );
         */
        mw.rcfilters.ui.FormWrapperWidget.prototype.cleanUpFieldset = function () {
                var $namespaceSelect = this.$element.find( '#namespace' ),
-                       $namespaceCheckboxes = this.$element.find( '#nsassociated, #nsinvert' ),
                        collapseCookieName = 'changeslist-state';
 
                this.$element.find( '.rcshowhideoption[data-feature-in-structured-ui=1]' ).each( function () {
                        this.parentNode.removeChild( this );
                } );
 
-               // Bind namespace select to change event
-               // see resources/src/mediawiki.special/mediawiki.special.recentchanges.js
-               $namespaceCheckboxes.prop( 'disabled', $namespaceSelect.val() === '' );
-               $namespaceSelect.on( 'change', function () {
-                       $namespaceCheckboxes.prop( 'disabled', $( this ).val() === '' );
-               } );
+               // Hide namespaces and tags
+               if ( mw.config.get( 'wgStructuredChangeFiltersEnableExperimentalViews' ) ) {
+                       $namespaceSelect.closest( 'tr' ).detach();
+                       this.$element.find( '.mw-tagfilter-label' ).closest( 'tr' ).detach();
+               }
 
                // Collapse legend
                // see resources/src/mediawiki.special/mediawiki.special.changelist.legend.js
diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ItemMenuOptionWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ItemMenuOptionWidget.js
new file mode 100644 (file)
index 0000000..f2e9b1d
--- /dev/null
@@ -0,0 +1,144 @@
+( function ( mw ) {
+       /**
+        * A widget representing a base toggle item
+        *
+        * @extends OO.ui.MenuOptionWidget
+        *
+        * @constructor
+        * @param {mw.rcfilters.Controller} controller RCFilters controller
+        * @param {mw.rcfilters.dm.ItemModel} model Item model
+        * @param {Object} config Configuration object
+        */
+       mw.rcfilters.ui.ItemMenuOptionWidget = function MwRcfiltersUiItemMenuOptionWidget( controller, model, config ) {
+               var layout,
+                       classes = [],
+                       $label = $( '<div>' )
+                               .addClass( 'mw-rcfilters-ui-itemMenuOptionWidget-label' );
+
+               config = config || {};
+
+               this.controller = controller;
+               this.model = model;
+
+               // Parent
+               mw.rcfilters.ui.ItemMenuOptionWidget.parent.call( this, $.extend( {
+                       // Override the 'check' icon that OOUI defines
+                       icon: '',
+                       data: this.model.getName(),
+                       label: this.model.getLabel()
+               }, config ) );
+
+               this.checkboxWidget = new mw.rcfilters.ui.CheckboxInputWidget( {
+                       value: this.model.getName(),
+                       selected: this.model.isSelected()
+               } );
+
+               $label.append(
+                       $( '<div>' )
+                               .addClass( 'mw-rcfilters-ui-itemMenuOptionWidget-label-title' )
+                               .append( this.$label )
+               );
+               if ( this.model.getDescription() ) {
+                       $label.append(
+                               $( '<div>' )
+                                       .addClass( 'mw-rcfilters-ui-itemMenuOptionWidget-label-desc' )
+                                       .text( this.model.getDescription() )
+                       );
+               }
+
+               this.highlightButton = new mw.rcfilters.ui.FilterItemHighlightButton(
+                       this.controller,
+                       this.model,
+                       {
+                               $overlay: config.$overlay || this.$element,
+                               title: mw.msg( 'rcfilters-highlightmenu-help' )
+                       }
+               );
+               this.highlightButton.toggle( this.model.isHighlightEnabled() );
+
+               this.excludeLabel = new OO.ui.LabelWidget( {
+                       label: mw.msg( 'rcfilters-filter-excluded' )
+               } );
+               this.excludeLabel.toggle( this.model.isSelected() && this.model.isInverted() );
+
+               layout = new OO.ui.FieldLayout( this.checkboxWidget, {
+                       label: $label,
+                       align: 'inline'
+               } );
+
+               // Events
+               this.model.connect( this, { update: 'onModelUpdate' } );
+               // HACK: Prevent defaults on 'click' for the label so it
+               // doesn't steal the focus away from the input. This means
+               // we can continue arrow-movement after we click the label
+               // and is consistent with the checkbox *itself* also preventing
+               // defaults on 'click' as well.
+               layout.$label.on( 'click', false );
+
+               this.$element
+                       .addClass( 'mw-rcfilters-ui-itemMenuOptionWidget' )
+                       .addClass( 'mw-rcfilters-ui-itemMenuOptionWidget-view-' + this.model.getGroupModel().getView() )
+                       .append(
+                               $( '<div>' )
+                                       .addClass( 'mw-rcfilters-ui-table' )
+                                       .append(
+                                               $( '<div>' )
+                                                       .addClass( 'mw-rcfilters-ui-row' )
+                                                       .append(
+                                                               $( '<div>' )
+                                                                       .addClass( 'mw-rcfilters-ui-cell mw-rcfilters-ui-itemMenuOptionWidget-itemCheckbox' )
+                                                                       .append( layout.$element ),
+                                                               $( '<div>' )
+                                                                       .addClass( 'mw-rcfilters-ui-cell mw-rcfilters-ui-itemMenuOptionWidget-excludeLabel' )
+                                                                       .append( this.excludeLabel.$element ),
+                                                               $( '<div>' )
+                                                                       .addClass( 'mw-rcfilters-ui-cell mw-rcfilters-ui-itemMenuOptionWidget-highlightButton' )
+                                                                       .append( this.highlightButton.$element )
+                                                       )
+                                       )
+                       );
+
+               if ( this.model.getIdentifiers() ) {
+                       this.model.getIdentifiers().forEach( function ( ident ) {
+                               classes.push( 'mw-rcfilters-ui-itemMenuOptionWidget-identifier-' + ident );
+                       } );
+
+                       this.$element.addClass( classes.join( ' ' ) );
+               }
+       };
+
+       /* Initialization */
+
+       OO.inheritClass( mw.rcfilters.ui.ItemMenuOptionWidget, OO.ui.MenuOptionWidget );
+
+       /* Static properties */
+
+       // We do our own scrolling to top
+       mw.rcfilters.ui.ItemMenuOptionWidget.static.scrollIntoViewOnSelect = false;
+
+       /* Methods */
+
+       /**
+        * Respond to item model update event
+        */
+       mw.rcfilters.ui.ItemMenuOptionWidget.prototype.onModelUpdate = function () {
+               this.checkboxWidget.setSelected( this.model.isSelected() );
+
+               this.highlightButton.toggle( this.model.isHighlightEnabled() );
+               this.excludeLabel.toggle( this.model.isSelected() && this.model.isInverted() );
+       };
+
+       /**
+        * Get the name of this filter
+        *
+        * @return {string} Filter name
+        */
+       mw.rcfilters.ui.ItemMenuOptionWidget.prototype.getName = function () {
+               return this.model.getName();
+       };
+
+       mw.rcfilters.ui.ItemMenuOptionWidget.prototype.getModel = function () {
+               return this.model;
+       };
+
+}( mediaWiki ) );
diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js
new file mode 100644 (file)
index 0000000..d971faf
--- /dev/null
@@ -0,0 +1,285 @@
+( function ( mw ) {
+       /**
+        * A floating menu widget for the filter list
+        *
+        * @extends OO.ui.MenuSelectWidget
+        *
+        * @constructor
+        * @param {mw.rcfilters.Controller} controller Controller
+        * @param {mw.rcfilters.dm.FiltersViewModel} model View model
+        * @param {Object} [config] Configuration object
+        * @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups
+        * @cfg {jQuery} [$footer] An optional footer for the menu
+        */
+       mw.rcfilters.ui.MenuSelectWidget = function MwRcfiltersUiMenuSelectWidget( controller, model, config ) {
+               var header;
+
+               config = config || {};
+
+               this.controller = controller;
+               this.model = model;
+               this.currentView = '';
+               this.views = {};
+
+               this.inputValue = '';
+               this.$overlay = config.$overlay || this.$element;
+               this.$footer = config.$footer;
+               this.$body = $( '<div>' )
+                               .addClass( 'mw-rcfilters-ui-menuSelectWidget-body' );
+
+               // Parent
+               mw.rcfilters.ui.MenuSelectWidget.parent.call( this, $.extend( {
+                       $autoCloseIgnore: this.$overlay,
+                       width: 650
+               }, config ) );
+               this.setGroupElement(
+                       $( '<div>' )
+                               .addClass( 'mw-rcfilters-ui-menuSelectWidget-group' )
+               );
+               this.setClippableElement( this.$body );
+               this.setClippableContainer( this.$element );
+
+               header = new mw.rcfilters.ui.FilterMenuHeaderWidget(
+                       this.controller,
+                       this.model,
+                       {
+                               $overlay: this.$overlay
+                       }
+               );
+
+               this.noResults = new OO.ui.LabelWidget( {
+                       label: mw.msg( 'rcfilters-filterlist-noresults' ),
+                       classes: [ 'mw-rcfilters-ui-menuSelectWidget-noresults' ]
+               } );
+
+               // Events
+               this.model.connect( this, {
+                       update: 'onModelUpdate',
+                       initialize: 'onModelInitialize'
+               } );
+
+               // Initialization
+               this.$element
+                       .addClass( 'mw-rcfilters-ui-menuSelectWidget' )
+                       .append( header.$element )
+                       .append(
+                               this.$body
+                                       .append( this.$group, this.noResults.$element )
+                       );
+
+               if ( this.$footer ) {
+                       this.$element.append(
+                               this.$footer
+                                       .addClass( 'mw-rcfilters-ui-menuSelectWidget-footer' )
+                       );
+               }
+               this.switchView( this.model.getCurrentView() );
+       };
+
+       /* Initialize */
+
+       OO.inheritClass( mw.rcfilters.ui.MenuSelectWidget, OO.ui.MenuSelectWidget );
+
+       /* Events */
+
+       /**
+        * @event itemVisibilityChange
+        *
+        * Item visibility has changed
+        */
+
+       /* Methods */
+
+       /**
+        * Respond to model update event
+        */
+       mw.rcfilters.ui.MenuSelectWidget.prototype.onModelUpdate = function () {
+               // Change view
+               this.switchView( this.model.getCurrentView() );
+       };
+
+       /**
+        * Respond to model initialize event. Populate the menu from the model
+        */
+       mw.rcfilters.ui.MenuSelectWidget.prototype.onModelInitialize = function () {
+               var widget = this,
+                       viewGroupCount = {},
+                       groups = this.model.getFilterGroups();
+
+               // Reset
+               this.clearItems();
+
+               // Count groups per view
+               $.each( groups, function ( groupName, groupModel ) {
+                       viewGroupCount[ groupModel.getView() ] = viewGroupCount[ groupModel.getView() ] || 0;
+                       viewGroupCount[ groupModel.getView() ]++;
+               } );
+
+               $.each( groups, function ( groupName, groupModel ) {
+                       var currentItems = [],
+                               view = groupModel.getView();
+
+                       if ( viewGroupCount[ view ] > 1 ) {
+                               // Only add a section header if there is more than
+                               // one group
+                               currentItems.push(
+                                       // Group section
+                                       new mw.rcfilters.ui.FilterMenuSectionOptionWidget(
+                                               widget.controller,
+                                               groupModel,
+                                               {
+                                                       $overlay: widget.$overlay
+                                               }
+                                       )
+                               );
+                       }
+
+                       // Add items
+                       widget.model.getGroupFilters( groupName ).forEach( function ( filterItem ) {
+                               currentItems.push(
+                                       new mw.rcfilters.ui.FilterMenuOptionWidget(
+                                               widget.controller,
+                                               filterItem,
+                                               {
+                                                       $overlay: widget.$overlay
+                                               }
+                                       )
+                               );
+                       } );
+
+                       // Cache the items per view, so we can switch between them
+                       // without rebuilding the widgets each time
+                       widget.views[ view ] = widget.views[ view ] || [];
+                       widget.views[ view ] = widget.views[ view ].concat( currentItems );
+               } );
+
+               this.switchView( this.model.getCurrentView() );
+       };
+
+       /**
+        * Switch view
+        *
+        * @param {string} [viewName] View name. If not given, default is used.
+        */
+       mw.rcfilters.ui.MenuSelectWidget.prototype.switchView = function ( viewName ) {
+               viewName = viewName || 'default';
+
+               if ( this.views[ viewName ] && this.currentView !== viewName ) {
+                       this.clearItems();
+                       this.addItems( this.views[ viewName ] );
+
+                       this.$element
+                               .data( 'view', viewName )
+                               .removeClass( 'mw-rcfilters-ui-menuSelectWidget-view-' + this.currentView )
+                               .addClass( 'mw-rcfilters-ui-menuSelectWidget-view-' + viewName );
+
+                       this.currentView = viewName;
+               }
+       };
+
+       /**
+        * @fires itemVisibilityChange
+        * @inheritdoc
+        */
+       mw.rcfilters.ui.MenuSelectWidget.prototype.updateItemVisibility = function () {
+               var i,
+                       itemWasSelected = false,
+                       inputVal = this.$input.val(),
+                       items = this.getItems();
+
+               // Since the method hides/shows items, we don't want to
+               // call it unless the input actually changed
+               if ( this.inputValue !== inputVal ) {
+                       // Parent method
+                       mw.rcfilters.ui.MenuSelectWidget.parent.prototype.updateItemVisibility.call( this );
+
+                       // Select the first item in the list
+                       for ( i = 0; i < items.length; i++ ) {
+                               if (
+                                       !( items[ i ] instanceof OO.ui.MenuSectionOptionWidget ) &&
+                                       items[ i ].isVisible()
+                               ) {
+                                       itemWasSelected = true;
+                                       this.selectItem( items[ i ] );
+                                       break;
+                               }
+                       }
+
+                       if ( !itemWasSelected ) {
+                               this.selectItem( null );
+                       }
+
+                       // Cache value
+                       this.inputValue = inputVal;
+
+                       this.emit( 'itemVisibilityChange' );
+               }
+       };
+
+       /**
+        * Get the option widget that matches the model given
+        *
+        * @param {mw.rcfilters.dm.ItemModel} model Item model
+        * @return {mw.rcfilters.ui.ItemMenuOptionWidget} Option widget
+        */
+       mw.rcfilters.ui.MenuSelectWidget.prototype.getItemFromModel = function ( model ) {
+               return this.views[ model.getGroupModel().getView() ].filter( function ( item ) {
+                       return item.getName() === model.getName();
+               } )[ 0 ];
+       };
+
+       /**
+        * Override the item matcher to use the model's match process
+        *
+        * @inheritdoc
+        */
+       mw.rcfilters.ui.MenuSelectWidget.prototype.getItemMatcher = function ( s ) {
+               var results = this.model.findMatches( s, true );
+
+               return function ( item ) {
+                       return results.indexOf( item.getModel() ) > -1;
+               };
+       };
+
+       /**
+        * @inheritdoc
+        */
+       mw.rcfilters.ui.MenuSelectWidget.prototype.onKeyDown = function ( e ) {
+               var nextItem,
+                       currentItem = this.getHighlightedItem() || this.getSelectedItem();
+
+               // Call parent
+               mw.rcfilters.ui.MenuSelectWidget.parent.prototype.onKeyDown.call( this, e );
+
+               // We want to select the item on arrow movement
+               // rather than just highlight it, like the menu
+               // does by default
+               if ( !this.isDisabled() && this.isVisible() ) {
+                       switch ( e.keyCode ) {
+                               case OO.ui.Keys.UP:
+                               case OO.ui.Keys.LEFT:
+                                       // Get the next item
+                                       nextItem = this.getRelativeSelectableItem( currentItem, -1 );
+                                       break;
+                               case OO.ui.Keys.DOWN:
+                               case OO.ui.Keys.RIGHT:
+                                       // Get the next item
+                                       nextItem = this.getRelativeSelectableItem( currentItem, 1 );
+                                       break;
+                       }
+
+                       nextItem = nextItem && nextItem.constructor.static.selectable ?
+                               nextItem : null;
+
+                       // Select the next item
+                       this.selectItem( nextItem );
+               }
+       };
+
+       /**
+        * Scroll to the top of the menu
+        */
+       mw.rcfilters.ui.MenuSelectWidget.prototype.scrollToTop = function () {
+               this.$body.scrollTop( 0 );
+       };
+}( mediaWiki ) );
diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SaveFiltersPopupButtonWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SaveFiltersPopupButtonWidget.js
new file mode 100644 (file)
index 0000000..3f920f0
--- /dev/null
@@ -0,0 +1,157 @@
+( function ( mw ) {
+       /**
+        * Save filters widget. This widget is displayed in the tag area
+        * and allows the user to save the current state of the system
+        * as a new saved filter query they can later load or set as
+        * default.
+        *
+        * @extends OO.ui.PopupButtonWidget
+        *
+        * @constructor
+        * @param {mw.rcfilters.Controller} controller Controller
+        * @param {mw.rcfilters.dm.SavedQueriesModel} model View model
+        * @param {Object} [config] Configuration object
+        */
+       mw.rcfilters.ui.SaveFiltersPopupButtonWidget = function MwRcfiltersUiSaveFiltersPopupButtonWidget( controller, model, config ) {
+               var layout,
+                       $popupContent = $( '<div>' );
+
+               config = config || {};
+
+               this.controller = controller;
+               this.model = model;
+
+               // Parent
+               mw.rcfilters.ui.SaveFiltersPopupButtonWidget.parent.call( this, $.extend( {
+                       framed: false,
+                       icon: 'clip',
+                       $overlay: this.$overlay,
+                       title: mw.msg( 'rcfilters-savedqueries-add-new-title' ),
+                       popup: {
+                               classes: [ 'mw-rcfilters-ui-saveFiltersPopupButtonWidget-popup' ],
+                               padded: true,
+                               head: true,
+                               label: mw.msg( 'rcfilters-savedqueries-add-new-title' ),
+                               $content: $popupContent
+                       }
+               }, config ) );
+               // // HACK: Add an icon to the popup head label
+               this.popup.$head.prepend( ( new OO.ui.IconWidget( { icon: 'clip' } ) ).$element );
+
+               this.input = new OO.ui.TextInputWidget( {
+                       validate: /\S/
+               } );
+               layout = new OO.ui.FieldLayout( this.input, {
+                       label: mw.msg( 'rcfilters-savedqueries-new-name-label' ),
+                       align: 'top'
+               } );
+
+               this.applyButton = new OO.ui.ButtonWidget( {
+                       label: mw.msg( 'rcfilters-savedqueries-apply-label' ),
+                       classes: [ 'mw-rcfilters-ui-saveFiltersPopupButtonWidget-popup-buttons-apply' ],
+                       flags: [ 'primary', 'progressive' ]
+               } );
+               this.cancelButton = new OO.ui.ButtonWidget( {
+                       label: mw.msg( 'rcfilters-savedqueries-cancel-label' ),
+                       classes: [ 'mw-rcfilters-ui-saveFiltersPopupButtonWidget-popup-buttons-cancel' ]
+               } );
+
+               $popupContent
+                       .append(
+                               $( '<div>' )
+                                       .addClass( 'mw-rcfilters-ui-saveFiltersPopupButtonWidget-popup-layout' )
+                                       .append( layout.$element ),
+                               $( '<div>' )
+                                       .addClass( 'mw-rcfilters-ui-saveFiltersPopupButtonWidget-popup-buttons' )
+                                       .append(
+                                               this.cancelButton.$element,
+                                               this.applyButton.$element
+                                       )
+                       );
+
+               // Events
+               this.popup.connect( this, {
+                       ready: 'onPopupReady',
+                       toggle: 'onPopupToggle'
+               } );
+               this.input.connect( this, { enter: 'onInputEnter' } );
+               this.input.$input.on( {
+                       keyup: this.onInputKeyup.bind( this )
+               } );
+               this.cancelButton.connect( this, { click: 'onCancelButtonClick' } );
+               this.applyButton.connect( this, { click: 'onApplyButtonClick' } );
+
+               // Initialize
+               this.$element
+                       .addClass( 'mw-rcfilters-ui-saveFiltersPopupButtonWidget' );
+       };
+
+       /* Initialization */
+       OO.inheritClass( mw.rcfilters.ui.SaveFiltersPopupButtonWidget, OO.ui.PopupButtonWidget );
+
+       /**
+        * Respond to input enter event
+        */
+       mw.rcfilters.ui.SaveFiltersPopupButtonWidget.prototype.onInputEnter = function () {
+               this.apply();
+       };
+
+       /**
+        * Respond to input keyup event, this is the way to intercept 'escape' key
+        *
+        * @param {jQuery.Event} e Event data
+        * @returns {boolean} false
+        */
+       mw.rcfilters.ui.SaveFiltersPopupButtonWidget.prototype.onInputKeyup = function ( e ) {
+               if ( e.which === OO.ui.Keys.ESCAPE ) {
+                       this.popup.toggle( false );
+                       return false;
+               }
+       };
+
+       /**
+        * Respond to popup toggle event
+        *
+        * @param {boolean} isVisible Popup is visible
+        */
+       mw.rcfilters.ui.SaveFiltersPopupButtonWidget.prototype.onPopupToggle = function ( isVisible ) {
+               this.setIcon( isVisible ? 'unClip' : 'clip' );
+       };
+
+       /**
+        * Respond to popup ready event
+        */
+       mw.rcfilters.ui.SaveFiltersPopupButtonWidget.prototype.onPopupReady = function () {
+               this.input.focus();
+       };
+
+       /**
+        * Respond to cancel button click event
+        */
+       mw.rcfilters.ui.SaveFiltersPopupButtonWidget.prototype.onCancelButtonClick = function () {
+               this.popup.toggle( false );
+       };
+
+       /**
+        * Respond to apply button click event
+        */
+       mw.rcfilters.ui.SaveFiltersPopupButtonWidget.prototype.onApplyButtonClick = function () {
+               this.apply();
+       };
+
+       /**
+        * Apply and add the new quick link
+        */
+       mw.rcfilters.ui.SaveFiltersPopupButtonWidget.prototype.apply = function () {
+               var widget = this,
+                       label = this.input.getValue();
+
+               this.input.getValidity()
+                       .done( function () {
+                               widget.controller.saveCurrentQuery( label );
+                               widget.input.setValue( this.input, '' );
+                               widget.emit( 'saveCurrent' );
+                               widget.popup.toggle( false );
+                       } );
+       };
+}( mediaWiki ) );
diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SavedLinksListItemWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SavedLinksListItemWidget.js
new file mode 100644 (file)
index 0000000..7ce9b6a
--- /dev/null
@@ -0,0 +1,299 @@
+( function ( mw ) {
+       /**
+        * Quick links menu option widget
+        *
+        * @extends OO.ui.Widget
+        * @mixins OO.ui.mixin.LabelElement
+        * @mixins OO.ui.mixin.IconElement
+        * @mixins OO.ui.mixin.TitledElement
+        *
+        * @constructor
+        * @param {mw.rcfilters.dm.SavedQueryItemModel} model View model
+        * @param {Object} [config] Configuration object
+        * @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups
+        */
+       mw.rcfilters.ui.SavedLinksListItemWidget = function MwRcfiltersUiSavedLinksListWidget( model, config ) {
+               config = config || {};
+
+               this.model = model;
+
+               // Parent
+               mw.rcfilters.ui.SavedLinksListItemWidget.parent.call( this, $.extend( {
+                       data: this.model.getID()
+               }, config ) );
+
+               // Mixin constructors
+               OO.ui.mixin.LabelElement.call( this, $.extend( {
+                       label: this.model.getLabel()
+               }, config ) );
+               OO.ui.mixin.IconElement.call( this, $.extend( {
+                       icon: ''
+               }, config ) );
+               OO.ui.mixin.TitledElement.call( this, $.extend( {
+                       title: this.model.getLabel()
+               }, config ) );
+
+               this.edit = false;
+               this.$overlay = config.$overlay || this.$element;
+
+               this.popupButton = new OO.ui.ButtonWidget( {
+                       classes: [ 'mw-rcfilters-ui-savedLinksListItemWidget-button' ],
+                       icon: 'ellipsis',
+                       framed: false
+               } );
+               this.menu = new OO.ui.MenuSelectWidget( {
+                       classes: [ 'mw-rcfilters-ui-savedLinksListItemWidget-menu' ],
+                       widget: this.popupButton,
+                       width: 200,
+                       horizontalPosition: 'end',
+                       $floatableContainer: this.popupButton.$element,
+                       items: [
+                               new OO.ui.MenuOptionWidget( {
+                                       data: 'edit',
+                                       icon: 'edit',
+                                       label: mw.msg( 'rcfilters-savedqueries-rename' )
+                               } ),
+                               new OO.ui.MenuOptionWidget( {
+                                       data: 'delete',
+                                       icon: 'close',
+                                       label: mw.msg( 'rcfilters-savedqueries-remove' )
+                               } ),
+                               new OO.ui.MenuOptionWidget( {
+                                       data: 'default',
+                                       icon: 'pushPin',
+                                       label: mw.msg( 'rcfilters-savedqueries-setdefault' )
+                               } )
+                       ]
+               } );
+
+               this.editInput = new OO.ui.TextInputWidget( {
+                       classes: [ 'mw-rcfilters-ui-savedLinksListItemWidget-input' ]
+               } );
+               this.saveButton = new OO.ui.ButtonWidget( {
+                       icon: 'check',
+                       flags: [ 'primary', 'progressive' ]
+               } );
+               this.toggleEdit( false );
+
+               // Events
+               this.model.connect( this, { update: 'onModelUpdate' } );
+               this.popupButton.connect( this, { click: 'onPopupButtonClick' } );
+               this.menu.connect( this, {
+                       choose: 'onMenuChoose'
+               } );
+               this.saveButton.connect( this, { click: 'onSaveButtonClick' } );
+               this.editInput.connect( this, { enter: 'onEditInputEnter' } );
+               this.editInput.$input.on( {
+                       blur: this.onInputBlur.bind( this ),
+                       keyup: this.onInputKeyup.bind( this )
+               } );
+               this.$element.on( { click: this.onClick.bind( this ) } );
+               this.$label.on( { click: this.onClick.bind( this ) } );
+               // Prevent propagation on mousedown for the save button
+               // so the menu doesn't close
+               this.saveButton.$element.on( { mousedown: function () { return false; } } );
+
+               // Initialize
+               this.toggleDefault( !!this.model.isDefault() );
+               this.$overlay.append( this.menu.$element );
+               this.$element
+                       .addClass( 'mw-rcfilters-ui-savedLinksListItemWidget' )
+                       .addClass( 'mw-rcfilters-ui-savedLinksListItemWidget-query-' + this.model.getID() )
+                       .append(
+                               $( '<div>' )
+                                       .addClass( 'mw-rcfilters-ui-table' )
+                                       .append(
+                                               $( '<div>' )
+                                                       .addClass( 'mw-rcfilters-ui-row' )
+                                                       .append(
+                                                               $( '<div>' )
+                                                                       .addClass( 'mw-rcfilters-ui-cell' )
+                                                                       .addClass( 'mw-rcfilters-ui-savedLinksListItemWidget-content' )
+                                                                       .append(
+                                                                               this.$label
+                                                                                       .addClass( 'mw-rcfilters-ui-savedLinksListItemWidget-label' ),
+                                                                               this.editInput.$element,
+                                                                               this.saveButton.$element
+                                                                       ),
+                                                               $( '<div>' )
+                                                                       .addClass( 'mw-rcfilters-ui-cell' )
+                                                                       .addClass( 'mw-rcfilters-ui-savedLinksListItemWidget-icon' )
+                                                                       .append( this.$icon ),
+                                                               this.popupButton.$element
+                                                                       .addClass( 'mw-rcfilters-ui-cell' )
+                                                       )
+                                       )
+                       );
+       };
+
+       /* Initialization */
+       OO.inheritClass( mw.rcfilters.ui.SavedLinksListItemWidget, OO.ui.Widget );
+       OO.mixinClass( mw.rcfilters.ui.SavedLinksListItemWidget, OO.ui.mixin.LabelElement );
+       OO.mixinClass( mw.rcfilters.ui.SavedLinksListItemWidget, OO.ui.mixin.IconElement );
+       OO.mixinClass( mw.rcfilters.ui.SavedLinksListItemWidget, OO.ui.mixin.TitledElement );
+
+       /* Events */
+
+       /**
+        * @event delete
+        *
+        * The delete option was selected for this item
+        */
+
+       /**
+        * @event default
+        * @param {boolean} default Item is default
+        *
+        * The 'make default' option was selected for this item
+        */
+
+       /**
+        * @event edit
+        * @param {string} newLabel New label for the query
+        *
+        * The label has been edited
+        */
+
+       /* Methods */
+
+       /**
+        * Respond to model update event
+        */
+       mw.rcfilters.ui.SavedLinksListItemWidget.prototype.onModelUpdate = function () {
+               this.setLabel( this.model.getLabel() );
+               this.toggleDefault( this.model.isDefault() );
+       };
+
+       /**
+        * Respond to click on the element or label
+        *
+        * @fires click
+        */
+       mw.rcfilters.ui.SavedLinksListItemWidget.prototype.onClick = function () {
+               if ( !this.editing ) {
+                       this.emit( 'click' );
+               }
+       };
+       /**
+        * Respond to popup button click event
+        */
+       mw.rcfilters.ui.SavedLinksListItemWidget.prototype.onPopupButtonClick = function () {
+               this.menu.toggle();
+       };
+
+       /**
+        * Respond to menu choose event
+        *
+        * @param {OO.ui.MenuOptionWidget} item Chosen item
+        * @fires delete
+        * @fires default
+        */
+       mw.rcfilters.ui.SavedLinksListItemWidget.prototype.onMenuChoose = function ( item ) {
+               var action = item.getData();
+
+               if ( action === 'edit' ) {
+                       this.toggleEdit( true );
+               } else if ( action === 'delete' ) {
+                       this.emit( 'delete' );
+               } else if ( action === 'default' ) {
+                       this.emit( 'default', !this.default );
+               }
+               // Reset selected
+               this.menu.selectItem( null );
+               // Close the menu
+               this.menu.toggle( false );
+       };
+
+       /**
+        * Respond to save button click
+        */
+       mw.rcfilters.ui.SavedLinksListItemWidget.prototype.onSaveButtonClick = function () {
+               this.emit( 'edit', this.editInput.getValue() );
+               this.toggleEdit( false );
+       };
+
+       /**
+        * Respond to input enter event
+        */
+       mw.rcfilters.ui.SavedLinksListItemWidget.prototype.onEditInputEnter = function () {
+               this.emit( 'edit', this.editInput.getValue() );
+               this.toggleEdit( false );
+       };
+
+       /**
+        * Respond to input keyup event, this is the way to intercept 'escape' key
+        *
+        * @param {jQuery.Event} e Event data
+        * @returns {boolean} false
+        */
+       mw.rcfilters.ui.SavedLinksListItemWidget.prototype.onInputKeyup = function ( e ) {
+               if ( e.which === OO.ui.Keys.ESCAPE ) {
+                       // Return the input to the original label
+                       this.editInput.setValue( this.getLabel() );
+                       this.toggleEdit( false );
+                       return false;
+               }
+       };
+
+       /**
+        * Respond to blur event on the input
+        */
+       mw.rcfilters.ui.SavedLinksListItemWidget.prototype.onInputBlur = function () {
+               this.emit( 'edit', this.editInput.getValue() );
+               this.toggleEdit( false );
+       };
+
+       /**
+        * Toggle edit mode on this widget
+        *
+        * @param {boolean} isEdit Widget is in edit mode
+        */
+       mw.rcfilters.ui.SavedLinksListItemWidget.prototype.toggleEdit = function ( isEdit ) {
+               isEdit = isEdit === undefined ? !this.editing : isEdit;
+
+               if ( this.editing !== isEdit ) {
+                       this.$element.toggleClass( 'mw-rcfilters-ui-savedLinksListItemWidget-edit', isEdit );
+                       this.editInput.setValue( this.getLabel() );
+
+                       this.editInput.toggle( isEdit );
+                       this.$label.toggleClass( 'oo-ui-element-hidden', isEdit );
+                       this.$icon.toggleClass( 'oo-ui-element-hidden', isEdit );
+                       this.popupButton.toggle( !isEdit );
+                       this.saveButton.toggle( isEdit );
+
+                       if ( isEdit ) {
+                               this.editInput.$input.focus();
+                       }
+                       this.editing = isEdit;
+               }
+       };
+
+       /**
+        * Toggle default this widget
+        *
+        * @param {boolean} isDefault This item is default
+        */
+       mw.rcfilters.ui.SavedLinksListItemWidget.prototype.toggleDefault = function ( isDefault ) {
+               isDefault = isDefault === undefined ? !this.default : isDefault;
+
+               if ( this.default !== isDefault ) {
+                       this.default = isDefault;
+                       this.setIcon( this.default ? 'pushPin' : '' );
+                       this.menu.getItemFromData( 'default' ).setLabel(
+                               this.default ?
+                                       mw.msg( 'rcfilters-savedqueries-unsetdefault' ) :
+                                       mw.msg( 'rcfilters-savedqueries-setdefault' )
+                       );
+               }
+       };
+
+       /**
+        * Get item ID
+        *
+        * @returns {string} Query identifier
+        */
+       mw.rcfilters.ui.SavedLinksListItemWidget.prototype.getID = function () {
+               return this.model.getID();
+       };
+
+}( mediaWiki ) );
diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SavedLinksListWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SavedLinksListWidget.js
new file mode 100644 (file)
index 0000000..3b5e7d9
--- /dev/null
@@ -0,0 +1,153 @@
+( function ( mw ) {
+       /**
+        * Quick links widget
+        *
+        * @extends OO.ui.Widget
+        *
+        * @constructor
+        * @param {mw.rcfilters.Controller} controller Controller
+        * @param {mw.rcfilters.dm.SavedQueriesModel} model View model
+        * @param {Object} [config] Configuration object
+        * @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups
+        */
+       mw.rcfilters.ui.SavedLinksListWidget = function MwRcfiltersUiSavedLinksListWidget( controller, model, config ) {
+               var $labelNoEntries = $( '<div>' )
+                       .append(
+                               $( '<div>' )
+                                       .addClass( 'mw-rcfilters-ui-savedLinksListWidget-placeholder-title' )
+                                       .text( mw.msg( 'rcfilters-quickfilters-placeholder-title' ) ),
+                               $( '<div>' )
+                                       .addClass( 'mw-rcfilters-ui-savedLinksListWidget-placeholder-description' )
+                                       .text( mw.msg( 'rcfilters-quickfilters-placeholder-description' ) )
+                       );
+
+               config = config || {};
+
+               // Parent
+               mw.rcfilters.ui.SavedLinksListWidget.parent.call( this, config );
+
+               this.controller = controller;
+               this.model = model;
+               this.$overlay = config.$overlay || this.$element;
+
+               this.placeholderItem = new OO.ui.DecoratedOptionWidget( {
+                       classes: [ 'mw-rcfilters-ui-savedLinksListWidget-placeholder' ],
+                       label: $labelNoEntries,
+                       icon: 'unClip'
+               } );
+               // The only reason we're using "ButtonGroupWidget" here is that
+               // straight-out "GroupWidget" is a mixin and cannot be initialized
+               // on its own, so we need something to be its widget.
+               this.menu = new OO.ui.ButtonGroupWidget( {
+                       classes: [ 'mw-rcfilters-ui-savedLinksListWidget-menu' ],
+                       items: [ this.placeholderItem ]
+               } );
+               this.button = new OO.ui.PopupButtonWidget( {
+                       classes: [ 'mw-rcfilters-ui-savedLinksListWidget-button' ],
+                       label: mw.msg( 'rcfilters-quickfilters' ),
+                       icon: 'unClip',
+                       indicator: 'down',
+                       $overlay: this.$overlay,
+                       popup: {
+                               width: 300,
+                               anchor: false,
+                               align: 'backwards',
+                               $autoCloseIgnore: this.$overlay,
+                               $content: this.menu.$element
+                       }
+               } );
+
+               this.menu.aggregate( {
+                       click: 'menuItemClick',
+                       'delete': 'menuItemDelete',
+                       'default': 'menuItemDefault',
+                       edit: 'menuItemEdit'
+               } );
+
+               // Events
+               this.model.connect( this, {
+                       add: 'onModelAddItem',
+                       remove: 'onModelRemoveItem'
+               } );
+               this.menu.connect( this, {
+                       menuItemClick: 'onMenuItemClick',
+                       menuItemDelete: 'onMenuItemRemove',
+                       menuItemDefault: 'onMenuItemDefault',
+                       menuItemEdit: 'onMenuItemEdit'
+               } );
+
+               this.placeholderItem.toggle( this.model.isEmpty() );
+               // Initialize
+               this.$element
+                       .addClass( 'mw-rcfilters-ui-savedLinksListWidget' )
+                       .append( this.button.$element );
+       };
+
+       /* Initialization */
+       OO.inheritClass( mw.rcfilters.ui.SavedLinksListWidget, OO.ui.Widget );
+
+       /**
+        * Respond to menu item click event
+        *
+        * @param {mw.rcfilters.ui.SavedLinksListItemWidget} item Menu item
+        */
+       mw.rcfilters.ui.SavedLinksListWidget.prototype.onMenuItemClick = function ( item ) {
+               this.controller.applySavedQuery( item.getID() );
+               this.button.popup.toggle( false );
+       };
+
+       /**
+        * Respond to menu item remove event
+        *
+        * @param {mw.rcfilters.ui.SavedLinksListItemWidget} item Menu item
+        */
+       mw.rcfilters.ui.SavedLinksListWidget.prototype.onMenuItemRemove = function ( item ) {
+               this.controller.removeSavedQuery( item.getID() );
+       };
+
+       /**
+        * Respond to menu item default event
+        *
+        * @param {mw.rcfilters.ui.SavedLinksListItemWidget} item Menu item
+        * @param {boolean} isDefault Item is default
+        */
+       mw.rcfilters.ui.SavedLinksListWidget.prototype.onMenuItemDefault = function ( item, isDefault ) {
+               this.controller.setDefaultSavedQuery( isDefault ? item.getID() : null );
+       };
+
+       /**
+        * Respond to menu item edit event
+        *
+        * @param {mw.rcfilters.ui.SavedLinksListItemWidget} item Menu item
+        * @param {string} newLabel New label
+        */
+       mw.rcfilters.ui.SavedLinksListWidget.prototype.onMenuItemEdit = function ( item, newLabel ) {
+               this.controller.renameSavedQuery( item.getID(), newLabel );
+       };
+
+       /**
+        * Respond to menu add item event
+        *
+        * @param {mw.rcfilters.ui.SavedLinksListItemWidget} item Menu item
+        */
+       mw.rcfilters.ui.SavedLinksListWidget.prototype.onModelAddItem = function ( item ) {
+               if ( this.menu.getItemFromData( item.getID() ) ) {
+                       return;
+               }
+
+               this.menu.addItems( [
+                       new mw.rcfilters.ui.SavedLinksListItemWidget( item, { $overlay: this.$overlay } )
+               ] );
+               this.placeholderItem.toggle( this.model.isEmpty() );
+       };
+
+       /**
+        * Respond to menu remove item event
+        *
+        * @param {mw.rcfilters.ui.SavedLinksListItemWidget} item Menu item
+        */
+       mw.rcfilters.ui.SavedLinksListWidget.prototype.onModelRemoveItem = function ( item ) {
+               this.menu.removeItems( [ this.menu.getItemFromData( item.getID() ) ] );
+               this.placeholderItem.toggle( this.model.isEmpty() );
+       };
+}( mediaWiki ) );
diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.TagItemWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.TagItemWidget.js
new file mode 100644 (file)
index 0000000..886f6d4
--- /dev/null
@@ -0,0 +1,204 @@
+( function ( mw, $ ) {
+       /**
+        * Extend OOUI's TagItemWidget to also display a popup on hover.
+        *
+        * @class
+        * @extends OO.ui.TagItemWidget
+        * @mixins OO.ui.mixin.PopupElement
+        *
+        * @constructor
+        * @param {mw.rcfilters.Controller} controller
+        * @param {mw.rcfilters.dm.FilterItem} model Item model
+        * @param {Object} config Configuration object
+        * @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups
+        */
+       mw.rcfilters.ui.TagItemWidget = function MwRcfiltersUiTagItemWidget( controller, model, config ) {
+               // Configuration initialization
+               config = config || {};
+
+               this.controller = controller;
+               this.model = model;
+               this.selected = false;
+
+               mw.rcfilters.ui.TagItemWidget.parent.call( this, $.extend( {
+                       data: this.model.getName(),
+                       label: $( '<div>' ).html( this.model.getPrefixedLabel() ).contents()
+               }, config ) );
+
+               this.$overlay = config.$overlay || this.$element;
+               this.popupLabel = new OO.ui.LabelWidget();
+
+               // Mixin constructors
+               OO.ui.mixin.PopupElement.call( this, $.extend( {
+                       popup: {
+                               padded: false,
+                               align: 'center',
+                               position: 'above',
+                               $content: $( '<div>' )
+                                       .addClass( 'mw-rcfilters-ui-tagItemWidget-popup-content' )
+                                       .append( this.popupLabel.$element ),
+                               $floatableContainer: this.$element,
+                               classes: [ 'mw-rcfilters-ui-tagItemWidget-popup' ]
+                       }
+               }, config ) );
+
+               this.positioned = false;
+               this.popupTimeoutShow = null;
+               this.popupTimeoutHide = null;
+
+               this.$highlight = $( '<div>' )
+                       .addClass( 'mw-rcfilters-ui-tagItemWidget-highlight' );
+
+               // Events
+               this.model.connect( this, { update: 'onModelUpdate' } );
+
+               // Initialization
+               this.$overlay.append( this.popup.$element );
+               this.$element
+                       .addClass( 'mw-rcfilters-ui-tagItemWidget' )
+                       .prepend( this.$highlight )
+                       .attr( 'aria-haspopup', 'true' )
+                       .on( 'mouseenter', this.onMouseEnter.bind( this ) )
+                       .on( 'mouseleave', this.onMouseLeave.bind( this ) );
+
+               this.setCurrentMuteState();
+               this.setHighlightColor();
+       };
+
+       /* Initialization */
+
+       OO.inheritClass( mw.rcfilters.ui.TagItemWidget, OO.ui.TagItemWidget );
+       OO.mixinClass( mw.rcfilters.ui.TagItemWidget, OO.ui.mixin.PopupElement );
+
+       /* Methods */
+
+       /**
+        * Respond to model update event
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.onModelUpdate = function () {
+               this.setCurrentMuteState();
+
+               // Update label if needed
+               this.setLabel( $( '<div>' ).html( this.model.getPrefixedLabel() ).contents() );
+
+               this.setHighlightColor();
+       };
+
+       mw.rcfilters.ui.TagItemWidget.prototype.setHighlightColor = function () {
+               var selectedColor = this.model.isHighlightEnabled() ? this.model.getHighlightColor() : null;
+
+               this.$highlight
+                       .attr( 'data-color', selectedColor )
+                       .toggleClass(
+                               'mw-rcfilters-ui-tagItemWidget-highlight-highlighted',
+                               !!selectedColor
+                       );
+       };
+
+       /**
+        * Set the current mute state for this item
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.setCurrentMuteState = function () {};
+
+       /**
+        * Respond to mouse enter event
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.onMouseEnter = function () {
+               var labelText = this.model.getStateMessage();
+
+               if ( labelText ) {
+                       this.popupLabel.setLabel( labelText );
+
+                       if ( !this.positioned ) {
+                               // Recalculate anchor position to be center of the capsule item
+                               this.popup.$anchor.css( 'margin-left', ( this.$element.width() / 2 ) );
+                               this.positioned = true;
+                       }
+
+                       // Set timeout for the popup to show
+                       this.popupTimeoutShow = setTimeout( function () {
+                               this.popup.toggle( true );
+                       }.bind( this ), 500 );
+
+                       // Cancel the hide timeout
+                       clearTimeout( this.popupTimeoutHide );
+                       this.popupTimeoutHide = null;
+               }
+       };
+
+       /**
+        * Respond to mouse leave event
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.onMouseLeave = function () {
+               this.popupTimeoutHide = setTimeout( function () {
+                       this.popup.toggle( false );
+               }.bind( this ), 250 );
+
+               // Clear the show timeout
+               clearTimeout( this.popupTimeoutShow );
+               this.popupTimeoutShow = null;
+       };
+
+       /**
+        * Set selected state on this widget
+        *
+        * @param {boolean} [isSelected] Widget is selected
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.toggleSelected = function ( isSelected ) {
+               isSelected = isSelected !== undefined ? isSelected : !this.selected;
+
+               if ( this.selected !== isSelected ) {
+                       this.selected = isSelected;
+
+                       this.$element.toggleClass( 'mw-rcfilters-ui-tagItemWidget-selected', this.selected );
+               }
+       };
+
+       /**
+        * Get the selected state of this widget
+        *
+        * @return {boolean} Tag is selected
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.isSelected = function () {
+               return this.selected;
+       };
+
+       /**
+        * Get item name
+        *
+        * @return {string} Filter name
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.getName = function () {
+               return this.model.getName();
+       };
+
+       /**
+        * Get item model
+        *
+        * @return {string} Filter model
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.getModel = function () {
+               return this.model;
+       };
+
+       /**
+        * Get item view
+        *
+        * @return {string} Filter view
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.getView = function () {
+               return this.model.getGroupModel().getView();
+       };
+
+       /**
+        * Remove and destroy external elements of this widget
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.destroy = function () {
+               // Destroy the popup
+               this.popup.$element.detach();
+
+               // Disconnect events
+               this.model.disconnect( this );
+               this.closeButton.disconnect( this );
+       };
+}( mediaWiki, jQuery ) );
index a49cfeb..737ef5f 100644 (file)
@@ -1,2 +1,4 @@
-var Router = require( 'oojs-router' );
-module.exports = new Router();
+( function () {
+       var Router = require( 'oojs-router' );
+       module.exports = new Router();
+}() );
index b09986f..7a7df7a 100644 (file)
@@ -128,31 +128,33 @@ figure[typeof~='mw:Audio/Frame'] {
        margin: 0.5em 0 1.3em 1.4em;
        clear: right;
        float: right;
-}
 
-figure[typeof~='mw:Image/Thumb'] > *:first-child > img,
-figure[typeof~='mw:Video/Thumb'] > *:first-child > video,
-figure[typeof~='mw:Audio/Thumb'] > *:first-child > video,
-figure[typeof~='mw:Image/Frame'] > *:first-child > img,
-figure[typeof~='mw:Video/Frame'] > *:first-child > video,
-figure[typeof~='mw:Audio/Frame'] > *:first-child > video {
-       border: 1px solid #c8ccd1;
-       margin: 3px;
-       background: #fff;
+       > *:first-child {
+               > img,
+               > video {
+                       border: 1px solid #c8ccd1;
+                       margin: 3px;
+                       background: #fff;
+               }
+       }
 }
 
 /* Same as img.thumbborder in content.css */
-.mw-image-border > *:first-child > img,
-.mw-image-border > *:first-child > video {
-       border: 1px solid #eaecf0;
+.mw-image-border > *:first-child {
+       > img,
+       > video {
+               border: 1px solid #eaecf0;
+       }
 }
 
 /* Hide the caption for frameless and plain floated images */
-figure[typeof~='mw:Image/Frameless'] > figcaption,
-figure[typeof~='mw:Video/Frameless'] > figcaption,
-figure[typeof~='mw:Audio/Frameless'] > figcaption,
-figure[typeof~='mw:Image'] > figcaption,
-figure[typeof~='mw:Video'] > figcaption,
-figure[typeof~='mw:Audio'] > figcaption {
-       display: none;
+figure[typeof~='mw:Image/Frameless'],
+figure[typeof~='mw:Video/Frameless'],
+figure[typeof~='mw:Audio/Frameless'],
+figure[typeof~='mw:Image'],
+figure[typeof~='mw:Video'],
+figure[typeof~='mw:Audio'] {
+       > figcaption {
+               display: none;
+       }
 }
diff --git a/resources/src/mediawiki.special/images/special.search/book-icon.png b/resources/src/mediawiki.special/images/special.search/book-icon.png
deleted file mode 100644 (file)
index 07e3ec7..0000000
Binary files a/resources/src/mediawiki.special/images/special.search/book-icon.png and /dev/null differ
diff --git a/resources/src/mediawiki.special/images/special.search/book-icon.svg b/resources/src/mediawiki.special/images/special.search/book-icon.svg
deleted file mode 100644 (file)
index 6c3fa5f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg width="60px" height="60px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 41.2 (35397) - http://www.bohemiancoding.com/sketch -->
-    <title>wikisource-icon</title>
-    <desc>Created with Sketch.</desc>
-    <defs>
-        <path d="M25.9612634,4.16259168 C25.9612634,3.05318514 26.8209364,1.88015355 27.8804771,1.5831456 C27.8804771,1.5831456 45.019739,-4.60039908 52.9189989,7.7430239 C52.8276879,7.87091176 53.3244937,43.6894771 53.0961715,43.801598 C38.1346526,39.2213878 27.8617804,43.2196252 27.8617804,43.2196252 C26.8121538,43.5410399 25.9612634,42.9124575 25.9612634,41.7928397 L25.9612634,4.16259168 Z" id="path-1"></path>
-        <mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="0" y="0" width="27.195528" height="43.7625003" fill="white">
-            <use xlink:href="#path-1"></use>
-        </mask>
-        <path d="M1.08483248,4.15020908 C1.08483248,3.04080253 1.94450542,1.86777094 3.00404616,1.57076299 C3.00404616,1.57076299 20.1433081,-4.61278168 28.0425679,7.73064129 C27.951257,7.85852916 28.4480627,43.6770945 28.2197406,43.7892154 C13.2582217,39.2090052 2.98534945,43.2072426 2.98534945,43.2072426 C1.93572291,43.5286573 1.08483248,42.9000749 1.08483248,41.7804571 L1.08483248,4.15020908 Z" id="path-3"></path>
-        <mask id="mask-4" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="0" y="0" width="27.195528" height="43.7625003" fill="white">
-            <use xlink:href="#path-3"></use>
-        </mask>
-    </defs>
-    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="wikisource">
-            <g id="Group-2" transform="translate(3.000000, 7.000000)">
-                <g id="Group">
-                    <rect id="Rectangle-3" fill="#000000" x="19.5269846" y="36.730429" width="15.1876547" height="9.47882039" rx="4.7394102"></rect>
-                    <rect id="Rectangle" fill="#000000" x="0" y="8.29396785" width="55.3264563" height="35.5455765" rx="2"></rect>
-                    <use id="Rectangle-2" stroke="#000000" mask="url(#mask-2)" stroke-width="4" fill="#FFFFFF" transform="translate(39.559027, 21.920348) scale(-1, 1) translate(-39.559027, -21.920348) " xlink:href="#path-1"></use>
-                    <use id="Rectangle-2" stroke="#000000" mask="url(#mask-4)" stroke-width="4" fill="#FFFFFF" xlink:href="#path-3"></use>
-                </g>
-                <path d="M5.94322419,22.653192 C15.2672322,19.3261075 22.9765332,23.990418 22.9765332,23.990418" id="Line" stroke="#000000" stroke-width="2" stroke-linecap="round"></path>
-                <path d="M5.94322419,16.7331266 C15.2672322,13.4060421 22.9765332,18.0703525 22.9765332,18.0703525" id="Line" stroke="#000000" stroke-width="2" stroke-linecap="round"></path>
-                <path d="M5.94322419,11.0846878 C15.2672322,7.75760327 22.9765332,12.4219137 22.9765332,12.4219137" id="Line" stroke="#000000" stroke-width="2" stroke-linecap="round"></path>
-                <path d="M5.94322419,28.5732575 C15.2672322,25.246173 22.9765332,29.9104834 22.9765332,29.9104834" id="Line" stroke="#000000" stroke-width="2" stroke-linecap="round"></path>
-                <path d="M5.94322419,34.4933229 C15.2672322,31.1662384 22.9765332,35.8305489 22.9765332,35.8305489" id="Line" stroke="#000000" stroke-width="2" stroke-linecap="round"></path>
-                <path d="M31.8963536,26.2991517 C41.2203616,22.7867165 48.9296626,27.2977748 48.9296626,27.2977748" id="Line" stroke="#000000" stroke-width="2" stroke-linecap="round"></path>
-                <path d="M31.8963536,32.2192172 C41.2203616,28.7067819 48.9296626,33.2178402 48.9296626,33.2178402" id="Line" stroke="#000000" stroke-width="2" stroke-linecap="round"></path>
-                <path d="M32.1957977,11.8254134 C32.1957977,11.8254134 34.7092977,10.1127027 40.1604435,10.1337008 C45.6115894,10.1546989 47.8024685,11.8254134 47.8024685,11.8254134 L47.8024685,21.3219156 C47.8024685,21.3219156 43.8085467,20.1940894 39.931856,20.1940894 C36.0551653,20.1940894 32.1957977,21.3219156 32.1957977,21.3219156 L32.1957977,11.8254134 Z" id="Rectangle-4" fill="#000000"></path>
-            </g>
-        </g>
-    </g>
-</svg>
\ No newline at end of file
diff --git a/resources/src/mediawiki.special/images/special.search/course-icon.png b/resources/src/mediawiki.special/images/special.search/course-icon.png
deleted file mode 100644 (file)
index 9aad230..0000000
Binary files a/resources/src/mediawiki.special/images/special.search/course-icon.png and /dev/null differ
diff --git a/resources/src/mediawiki.special/images/special.search/course-icon.svg b/resources/src/mediawiki.special/images/special.search/course-icon.svg
deleted file mode 100644 (file)
index 4fab1f3..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg width="60px" height="60px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 41.2 (35397) - http://www.bohemiancoding.com/sketch -->
-    <title>wikiversity-icon</title>
-    <desc>Created with Sketch.</desc>
-    <defs>
-        <path d="M1.79361627,13.3306367 C-0.140465792,12.4757391 -0.144839204,11.0916093 1.78234628,10.2397601 L23.5026391,0.639016247 C25.4304969,-0.213130142 28.5529839,-0.214539335 30.4952998,0.64399778 L52.8863837,10.5412429 C54.8204658,11.3961405 54.8248392,12.7802702 52.8976537,13.6321195 L31.1773609,23.2328633 C29.2495031,24.0850097 26.1270161,24.0864189 24.1847002,23.2278818 L1.79361627,13.3306367 Z" id="path-1"></path>
-        <mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-5" y="-5" width="64" height="33.8718796">
-            <rect x="-4.66" y="-5" width="64" height="33.8718796" fill="white"></rect>
-            <use xlink:href="#path-1" fill="black"></use>
-        </mask>
-        <circle id="path-3" cx="7" cy="27" r="5"></circle>
-        <mask id="mask-4" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-3" y="-3" width="16" height="16">
-            <rect x="-1" y="19" width="16" height="16" fill="white"></rect>
-            <use xlink:href="#path-3" fill="black"></use>
-        </mask>
-    </defs>
-    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="wikiversity">
-            <g id="Group-2" transform="translate(3.000000, 11.000000)">
-                <path d="M8,16 L47,16 L47,31.89585 C47,31.89585 42.2783874,38.5113751 27.5,38.8710875 C12.7216126,39.2307999 8,31.89585 8,31.89585 L8,22.2392885 L8,16 Z" id="Rectangle-3" fill="#000000"></path>
-                <g id="Rectangle">
-                    <use fill="#000000" fill-rule="evenodd" xlink:href="#path-1"></use>
-                    <use stroke="#F2F4F7" mask="url(#mask-2)" stroke-width="10" xlink:href="#path-1"></use>
-                </g>
-                <path d="M6.1310053,41.2112479 C5.27479784,42.0096083 10.4373919,43.6053602 11.2296387,43.6053602 C13.2555121,37.7460829 11.8321108,35.5517452 11.8321108,29.1181019 L11.8321108,21.2930015 C11.8321108,21.2930015 16.5515035,18.1566713 21.2216931,16.0206053 C25.8918828,13.8845392 31.215528,12.2538646 31.3550046,12.2096604 C32.1176432,11.9679575 31.2752162,9.09848389 30.5125776,9.34018676 C30.3644648,9.38712813 27.3667572,9.04545881 26.6057472,9.30621378 C24.4302064,10.0516482 11.7945726,16.3687146 9.43776817,19.1164347 C7.08096377,21.8641549 8.67910884,38.8352994 6.1310053,41.2112479 Z" id="Path-3" fill="#F2F4F7"></path>
-                <g id="Oval-3">
-                    <use fill="#000000" fill-rule="evenodd" xlink:href="#path-3"></use>
-                    <use stroke="#F2F4F7" mask="url(#mask-4)" stroke-width="6" xlink:href="#path-3"></use>
-                </g>
-                <path d="M1.13550659,38.2112479 C0.245905063,39.0096083 7.57084983,40.6053602 8.39399608,40.6053602 C9.78724127,36.7270479 9.71041095,34.4853149 9.49920479,31.5470605 C9.43416647,30.6422615 9.35638589,29.6714145 9.30486594,28.5663921 C9.27092907,27.8384991 9.24838677,27.052387 9.24838677,26.1885838 C9.24838677,21.7929074 8.92187195,20.3988432 10.0589683,18.8611032 C10.5891389,18.1441327 14.9624282,15.1566713 19.814766,13.0206053 C24.6671038,10.8845392 30.1983835,9.25386462 30.3432999,9.20966036 C31.1356832,8.96795749 30.2603996,6.09848389 29.4680164,6.34018676 C29.3141268,6.38712813 27.238504,7.04545881 26.4478128,7.30621378 C24.187421,8.05164822 9.84272127,11.7529088 7.39399608,14.500629 C4.94527088,17.2483492 3.78299204,35.8352994 1.13550659,38.2112479 Z" id="Path-3" fill="#000000"></path>
-            </g>
-        </g>
-    </g>
-</svg>
\ No newline at end of file
diff --git a/resources/src/mediawiki.special/images/special.search/definition-icon.png b/resources/src/mediawiki.special/images/special.search/definition-icon.png
deleted file mode 100644 (file)
index b279f4e..0000000
Binary files a/resources/src/mediawiki.special/images/special.search/definition-icon.png and /dev/null differ
diff --git a/resources/src/mediawiki.special/images/special.search/definition-icon.svg b/resources/src/mediawiki.special/images/special.search/definition-icon.svg
deleted file mode 100644 (file)
index 1d58906..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg width="60px" height="60px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 41.2 (35397) - http://www.bohemiancoding.com/sketch -->
-    <title>wiktionary-icon</title>
-    <desc>Created with Sketch.</desc>
-    <defs>
-        <rect id="path-1" x="0" y="0" width="38.7837838" height="45.5813953" rx="3"></rect>
-        <mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="0" y="0" width="38.7837838" height="45.5813953" fill="white">
-            <use xlink:href="#path-1"></use>
-        </mask>
-    </defs>
-    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="wiktionary">
-            <g id="Group" transform="translate(9.000000, 4.000000)">
-                <rect id="Rectangle-5" fill="#000000" x="2.21621622" y="4.55813953" width="38.7837838" height="44.4418605" rx="3"></rect>
-                <use id="Rectangle-5" stroke="#FFFFFF" mask="url(#mask-2)" stroke-width="4" fill="#000000" xlink:href="#path-1"></use>
-                <rect id="Rectangle-5" fill="#000000" x="2.21621622" y="2.27906977" width="3.32432432" height="45.5813953" rx="1.66216216"></rect>
-                <path d="M9.96584688,24.0254991 L12.5526201,16.7046287 L12.5953767,16.7046287 L15.1393934,24.0254991 L9.96584688,24.0254991 Z M11.4837056,14.8139535 L5.54054054,30.5109549 L7.61423481,30.5109549 L9.32449813,25.7842668 L15.7807422,25.7842668 L17.4482489,30.5109549 L19.6929695,30.5109549 L13.7284262,14.8139535 L11.4837056,14.8139535 Z M19.9922656,28.7521872 L19.9922656,30.5109549 L32.1351351,30.5109549 L32.1351351,28.7521872 L22.4080125,28.7521872 L31.8785956,16.5727212 L31.8785956,14.8139535 L20.7191275,14.8139535 L20.7191275,16.5727212 L29.484227,16.5727212 L19.9922656,28.7521872 Z" id="AZ" fill="#FFFFFF"></path>
-            </g>
-        </g>
-    </g>
-</svg>
\ No newline at end of file
diff --git a/resources/src/mediawiki.special/images/special.search/dna-icon.png b/resources/src/mediawiki.special/images/special.search/dna-icon.png
deleted file mode 100644 (file)
index 76ae7b9..0000000
Binary files a/resources/src/mediawiki.special/images/special.search/dna-icon.png and /dev/null differ
diff --git a/resources/src/mediawiki.special/images/special.search/dna-icon.svg b/resources/src/mediawiki.special/images/special.search/dna-icon.svg
deleted file mode 100644 (file)
index b6472d2..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg width="60px" height="60px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 41.2 (35397) - http://www.bohemiancoding.com/sketch -->
-    <title>wikispecies-icon</title>
-    <desc>Created with Sketch.</desc>
-    <defs>
-        <path d="M30.7731558,0.186194824 C30.7731558,0.186194824 35.1530541,17.902764 16.3205992,24.2966289 C-2.5118558,30.6904937 1.3758711,49.1033824 1.3758711,49.1033824" id="path-1"></path>
-        <path d="M30.7473572,49.159218 C30.7473572,49.159218 35.6539441,38.982551 16.3205992,25.0539186 C-3.01274582,11.1252862 1.37060607,0.169606006 1.37060607,0.169606006" id="path-2"></path>
-    </defs>
-    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="wikispecies">
-            <g id="Group-3" transform="translate(29.651065, 29.732290) rotate(-18.000000) translate(-29.651065, -29.732290) translate(3.651065, -0.267710)">
-                <g id="Group-2" transform="translate(-0.000000, 0.000000)">
-                    <path d="M16.0550183,26.1396841 L28.2093366,18.8733993" id="Line"></path>
-                    <path d="M8.04887438,16.7717325 L25.4345247,6.48465118" id="Line" stroke="#000000" stroke-width="4" stroke-linecap="square"></path>
-                    <path d="M25.407947,53.9559038 L42.7935973,43.6688225" id="Line" stroke="#000000" stroke-width="4" stroke-linecap="square"></path>
-                    <path d="M15.372315,23.3571115 L32.7579654,13.0700302" id="Line" stroke="#000000" stroke-width="4" stroke-linecap="square"></path>
-                    <path d="M23.3476093,40.6564377 L35.5019275,33.3901529" id="Line"></path>
-                    <path d="M23.587979,44.4357028 L40.6040246,34.7578672" id="Line" stroke="#000000" stroke-width="4" stroke-linecap="square"></path>
-                    <g id="Group" transform="translate(26.088934, 30.408062) rotate(-27.000000) translate(-26.088934, -30.408062) translate(10.088934, 5.408062)">
-                        <g id="Path-2">
-                            <use stroke="#FFFFFF" stroke-width="10" xlink:href="#path-1"></use>
-                            <use stroke="#000000" stroke-width="5" xlink:href="#path-1"></use>
-                        </g>
-                        <g id="Path-2">
-                            <use stroke="#FFFFFF" stroke-width="10" xlink:href="#path-2"></use>
-                            <use stroke="#000000" stroke-width="5" xlink:href="#path-2"></use>
-                        </g>
-                    </g>
-                </g>
-            </g>
-        </g>
-    </g>
-</svg>
\ No newline at end of file
diff --git a/resources/src/mediawiki.special/images/special.search/image-icon.png b/resources/src/mediawiki.special/images/special.search/image-icon.png
deleted file mode 100644 (file)
index 1ebbc74..0000000
Binary files a/resources/src/mediawiki.special/images/special.search/image-icon.png and /dev/null differ
diff --git a/resources/src/mediawiki.special/images/special.search/image-icon.svg b/resources/src/mediawiki.special/images/special.search/image-icon.svg
deleted file mode 100644 (file)
index b68762e..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg width="60px" height="60px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 41.2 (35397) - http://www.bohemiancoding.com/sketch -->
-    <title>commons-icon</title>
-    <desc>Created with Sketch.</desc>
-    <defs></defs>
-    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="commons">
-            <g id="Group" transform="translate(7.000000, 10.000000)">
-                <rect id="Rectangle-3" fill="#000000" x="0" y="7" width="47" height="32" rx="3"></rect>
-                <path d="M12.5575779,0.983966166 C12.6781522,0.440536658 13.228439,0 13.7774775,0 L33.4411152,0 C33.9942728,0 34.5376987,0.428179934 34.6610148,0.983966166 L36.1940854,7.89352671 C36.3146597,8.43695622 35.9679607,8.87749288 35.4086105,8.87749288 L11.8099821,8.87749288 C11.255602,8.87749288 10.9011913,8.44931294 11.0245073,7.89352671 L12.5575779,0.983966166 Z" id="Rectangle-3" fill="#000000"></path>
-                <ellipse id="Oval" stroke="#FFFFFF" stroke-width="3" cx="23.1981132" cy="23.2091168" rx="10.1981132" ry="10.2091168"></ellipse>
-            </g>
-        </g>
-    </g>
-</svg>
\ No newline at end of file
diff --git a/resources/src/mediawiki.special/images/special.search/news-icon.png b/resources/src/mediawiki.special/images/special.search/news-icon.png
deleted file mode 100644 (file)
index 6b79590..0000000
Binary files a/resources/src/mediawiki.special/images/special.search/news-icon.png and /dev/null differ
diff --git a/resources/src/mediawiki.special/images/special.search/news-icon.svg b/resources/src/mediawiki.special/images/special.search/news-icon.svg
deleted file mode 100644 (file)
index 996bc84..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg width="60px" height="60px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 41.2 (35397) - http://www.bohemiancoding.com/sketch -->
-    <title>wikinews-icon</title>
-    <desc>Created with Sketch.</desc>
-    <defs>
-        <rect id="path-1" x="0" y="0" width="40.3125" height="44.3773585" rx="3"></rect>
-        <mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="0" y="0" width="40.3125" height="44.3773585" fill="white">
-            <use xlink:href="#path-1"></use>
-        </mask>
-    </defs>
-    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="wikinews">
-            <g id="Group-2" transform="translate(7.000000, 2.000000)">
-                <g id="Group">
-                    <use id="Rectangle" stroke="#000000" mask="url(#mask-2)" stroke-width="8" xlink:href="#path-1"></use>
-                    <rect id="Rectangle-2" fill="#000000" x="5.87890625" y="7.10037736" width="14.2773438" height="15.0883019" rx="1"></rect>
-                    <path d="M23.9355469,8.32075472 L33.2060822,8.32075472" id="Line" stroke="#000000" stroke-width="2" stroke-linecap="square"></path>
-                    <path d="M23.9355469,13.8679245 L33.2060822,13.8679245" id="Line" stroke="#000000" stroke-width="2" stroke-linecap="square"></path>
-                    <path d="M23.9355469,19.4150943 L33.2060822,19.4150943" id="Line" stroke="#000000" stroke-width="2" stroke-linecap="square"></path>
-                    <path d="M22.5550667,30.509434 L33.1506715,30.509434" id="Line" stroke="#000000" stroke-width="2" stroke-linecap="square"></path>
-                    <path d="M7.17212403,30.509434 L17.1811761,30.509434" id="Line" stroke="#000000" stroke-width="2" stroke-linecap="square"></path>
-                    <path d="M7.17212403,35.1320755 L17.1811761,35.1320755" id="Line" stroke="#000000" stroke-width="2" stroke-linecap="square"></path>
-                    <path d="M22.5550667,35.1320755 L33.1506715,35.1320755" id="Line" stroke="#000000" stroke-width="2" stroke-linecap="square"></path>
-                    <path d="M7.12514628,24.9622642 L33.2060822,24.9622642" id="Line" stroke="#000000" stroke-width="2" stroke-linecap="square"></path>
-                </g>
-                <path d="M42.1813257,4.62264151 C43.7380365,4.62264151 45,5.85586295 45,7.39864403 L45,46.2239975 C45,47.7571413 43.7493218,49 42.1813257,49 L7.50617429,49 C5.94946346,49 4.6875,47.7667786 4.6875,46.2239975" id="Rectangle" stroke="#000000" stroke-width="4"></path>
-            </g>
-        </g>
-    </g>
-</svg>
\ No newline at end of file
diff --git a/resources/src/mediawiki.special/images/special.search/quotation-icon.png b/resources/src/mediawiki.special/images/special.search/quotation-icon.png
deleted file mode 100644 (file)
index 9d3ade3..0000000
Binary files a/resources/src/mediawiki.special/images/special.search/quotation-icon.png and /dev/null differ
diff --git a/resources/src/mediawiki.special/images/special.search/quotation-icon.svg b/resources/src/mediawiki.special/images/special.search/quotation-icon.svg
deleted file mode 100644 (file)
index 0a24b3e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg width="60px" height="60px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 41.2 (35397) - http://www.bohemiancoding.com/sketch -->
-    <title>wikiquote-icon</title>
-    <desc>Created with Sketch.</desc>
-    <defs></defs>
-    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="wikiquote" fill="#000000">
-            <path d="M25.6795093,50 L25.6795093,29.5241523 L16.904146,29.5241523 C16.904146,26.2444546 17.52462,23.4744813 18.7655867,21.2141491 C20.0065533,18.9538169 22.3111712,17.2475134 25.6795093,16.0951872 L25.6795093,7.31982385 C22.9316545,7.67438575 20.383279,8.49429786 18.0343064,9.77958478 C15.6853338,11.0648717 13.6687932,12.6825361 11.9846241,14.6326266 C10.300455,16.5827171 8.99302762,18.8430154 8.06230261,21.4135892 C7.13157761,23.984163 6.71054166,26.7319766 6.79918214,29.6571123 L6.79918214,50 L25.6795093,50 Z M54,50 L54,29.5241523 L45.2246367,29.5241523 C45.2246367,26.2444546 45.8451107,23.4744813 47.0860774,21.2141491 C48.3270441,18.9538169 50.6316619,17.2475134 54,16.0951872 L54,7.31982385 C51.2521452,7.67438575 48.7037697,8.49429786 46.3547971,9.77958478 C44.0058245,11.0648717 41.9892839,12.6825361 40.3051148,14.6326266 C38.6209458,16.5827171 37.3135183,18.8430154 36.3827933,21.4135892 C35.4520683,23.984163 35.0310324,26.7319766 35.1196729,29.6571123 L35.1196729,50 L54,50 Z" id="“"></path>
-        </g>
-    </g>
-</svg>
\ No newline at end of file
diff --git a/resources/src/mediawiki.special/images/special.search/textbook-icon.png b/resources/src/mediawiki.special/images/special.search/textbook-icon.png
deleted file mode 100644 (file)
index 0de2821..0000000
Binary files a/resources/src/mediawiki.special/images/special.search/textbook-icon.png and /dev/null differ
diff --git a/resources/src/mediawiki.special/images/special.search/textbook-icon.svg b/resources/src/mediawiki.special/images/special.search/textbook-icon.svg
deleted file mode 100644 (file)
index 52446b8..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg width="60px" height="60px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 41.2 (35397) - http://www.bohemiancoding.com/sketch -->
-    <title>wikibooks-icon</title>
-    <desc>Created with Sketch.</desc>
-    <defs></defs>
-    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="wikibooks">
-            <g id="Group-2" transform="translate(7.000000, 6.000000)">
-                <rect id="Rectangle" fill="#000000" x="0" y="0" width="13.4872062" height="46.9333333" rx="1"></rect>
-                <rect id="Rectangle" fill="#000000" x="16.3773218" y="0" width="13.4872062" height="46.9333333" rx="1"></rect>
-                <rect id="Rectangle-2" fill="#FFFFFF" x="18.3040656" y="3.2" width="9.63371872" height="2.13333333" rx="1"></rect>
-                <rect id="Rectangle-2" fill="#FFFFFF" x="18.3040656" y="7.46666667" width="9.63371872" height="2.13333333" rx="1"></rect>
-                <rect id="Rectangle-2" fill="#FFFFFF" x="18.3040656" y="42.6666667" width="9.63371872" height="2.13333333" rx="1"></rect>
-                <g id="Group" transform="translate(41.629197, 24.582549) rotate(-15.000000) translate(-41.629197, -24.582549) translate(36.629197, 2.082549)">
-                    <rect id="Rectangle" fill="#000000" x="-9.14823772e-14" y="1.0658141e-14" width="9.63371872" height="44.8" rx="1"></rect>
-                    <rect id="Rectangle-2" fill="#FFFFFF" x="1.37624553" y="3.05454545" width="6.88122765" height="2.03636364" rx="1"></rect>
-                    <rect id="Rectangle-2" fill="#FFFFFF" x="4.12873659" y="18.3272727" width="2.0643683" height="8.14545455" rx="1"></rect>
-                    <rect id="Rectangle-2" fill="#FFFFFF" x="1.37624553" y="40.7272727" width="6.88122765" height="2.03636364" rx="1"></rect>
-                </g>
-                <rect id="Rectangle-2" fill="#FFFFFF" x="1.92674374" y="42.6666667" width="9.63371872" height="2.13333333" rx="1"></rect>
-                <rect id="Rectangle-2" fill="#FFFFFF" x="3.85348749" y="21.3333333" width="5.78023123" height="6.4" rx="1"></rect>
-                <rect id="Rectangle-2" fill="#FFFFFF" x="20.2308093" y="21.3333333" width="5.78023123" height="6.4" rx="1"></rect>
-                <rect id="Rectangle-2" fill="#FFFFFF" x="1.92674374" y="2.13333333" width="9.63371872" height="6.4" rx="1"></rect>
-            </g>
-        </g>
-    </g>
-</svg>
\ No newline at end of file
diff --git a/resources/src/mediawiki.special/images/special.search/travel-icon.png b/resources/src/mediawiki.special/images/special.search/travel-icon.png
deleted file mode 100644 (file)
index 9540e5b..0000000
Binary files a/resources/src/mediawiki.special/images/special.search/travel-icon.png and /dev/null differ
diff --git a/resources/src/mediawiki.special/images/special.search/travel-icon.svg b/resources/src/mediawiki.special/images/special.search/travel-icon.svg
deleted file mode 100644 (file)
index c61da34..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg width="60px" height="60px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 41.2 (35397) - http://www.bohemiancoding.com/sketch -->
-    <title>wikivoyage-icon</title>
-    <desc>Created with Sketch.</desc>
-    <defs></defs>
-    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="wikivoyage">
-            <circle id="Oval" stroke="#000000" stroke-width="5" cx="30.5" cy="29.5" r="22.5"></circle>
-            <polygon id="Line" fill="#000000" points="7.94117647 26 51.7647059 26 51.7647059 21 7.94117647 21"></polygon>
-            <polygon id="Line" fill="#000000" points="11 41 51.7647059 41 51.7647059 36 11 36"></polygon>
-            <path d="M33.3291453,53.239081 C33.3291453,53.239081 36.1487341,50.645866 37.4655139,48.564933 C41.2810931,42.5350981 43.5882353,36.2426616 43.5882353,29.9411765 C43.5882353,23.6228427 41.2687791,17.4752409 37.4345128,11.7108181 C36.1106408,9.72051335 34.6944337,8.91628537 33.2755423,7.32564334 C32.4145319,6.36041143 26.8207622,5.36041143 25.9597518,6.32564334 C24.5408604,7.91628537 23.1246533,9.72051335 21.8007813,11.7108181 C17.9665151,17.4752409 15.6470588,23.6228427 15.6470588,29.9411765 C15.6470588,36.2426616 17.954201,42.5350981 21.7697802,48.564933 C23.08656,50.645866 26.9061488,53.239081 26.9061488,53.239081 L33.3291453,53.239081 Z M25.9949257,45.8913313 C22.6413872,40.5916685 20.6470588,35.1523918 20.6470588,29.9411765 C20.6470588,24.7468098 22.6290732,19.4935807 25.9639246,14.4799765 C27.1264205,12.7322841 28.3724952,11.1396672 29.6176471,9.73642318 C30.8627989,11.1396672 32.1088737,12.7322841 33.2713695,14.4799765 C36.6062209,19.4935807 38.5882353,24.7468098 38.5882353,29.9411765 C38.5882353,35.1523918 36.5939069,40.5916685 33.2403685,45.8913313 C32.0874519,47.7133081 30.8528466,49.389908 29.6176471,50.8822433 C28.3824475,49.389908 27.1478422,47.7133081 25.9949257,45.8913313 Z" id="Oval" fill="#000000"></path>
-        </g>
-    </g>
-</svg>
\ No newline at end of file
index c3205bd..99d0222 100644 (file)
        /* Leave at least enough space for icon, indicator, and a sliver of text */
        min-width: 6em;
 }
+
+.apihelp-deprecated {
+       font-weight: bold;
+       color: #f00;
+}
+
+.apihelp-deprecated-value .oo-ui-labelElement-label {
+       text-decoration: line-through;
+}
index 7cb67b0..ff6a80c 100644 (file)
                                this.setIcon( ok ? null : 'alert' );
                                this.setIconTitle( ok ? '' : mw.message( 'apisandbox-alert-field' ).plain() );
                                return $.Deferred().resolve( ok ).promise();
+                       },
+                       createItemWidget: function ( data, label ) {
+                               var item = OO.ui.CapsuleMultiselectWidget.prototype.createItemWidget.call( this, data, label );
+                               if ( this.paramInfo.deprecatedvalues &&
+                                       this.paramInfo.deprecatedvalues.indexOf( data ) >= 0
+                               ) {
+                                       item.$element.addClass( 'apihelp-deprecated-value' );
+                               }
+                               return item;
                        }
                },
 
                                        } else if ( Util.apiBool( pi.multi ) ) {
                                                widget = new OO.ui.CapsuleMultiselectWidget( {
                                                        allowArbitrary: true,
-                                                       allowDuplicates: Util.apiBool( pi.allowsduplicates )
+                                                       allowDuplicates: Util.apiBool( pi.allowsduplicates ),
+                                                       $overlay: $( '#mw-apisandbox-ui' )
                                                } );
                                                widget.paramInfo = pi;
                                                $.extend( widget, WidgetMethods.capsuleWidget );
                                                }
 
                                                widget = new OO.ui.CapsuleMultiselectWidget( {
-                                                       menu: { items: items }
+                                                       menu: { items: items },
+                                                       $overlay: $( '#mw-apisandbox-ui' )
                                                } );
                                                widget.paramInfo = pi;
                                                $.extend( widget, WidgetMethods.capsuleWidget );
                                        } else {
                                                widget = new OO.ui.DropdownWidget( {
-                                                       menu: { items: items }
+                                                       menu: { items: items },
+                                                       $overlay: $( '#mw-apisandbox-ui' )
                                                } );
                                                widget.paramInfo = pi;
                                                $.extend( widget, WidgetMethods.dropdownWidget );
                                        }
 
                                        items = $.map( pi.type, function ( v ) {
-                                               return new OO.ui.MenuOptionWidget( { data: String( v ), label: String( v ) } );
+                                               var config = {
+                                                       data: String( v ),
+                                                       label: String( v ),
+                                                       classes: []
+                                               };
+                                               if ( pi.deprecatedvalues && pi.deprecatedvalues.indexOf( v ) >= 0 ) {
+                                                       config.classes.push( 'apihelp-deprecated-value' );
+                                               }
+                                               return new OO.ui.MenuOptionWidget( config );
                                        } );
                                        if ( Util.apiBool( pi.multi ) ) {
                                                if ( pi.allspecifier !== undefined ) {
                                                }
 
                                                widget = new OO.ui.CapsuleMultiselectWidget( {
-                                                       menu: { items: items }
+                                                       menu: { items: items },
+                                                       $overlay: $( '#mw-apisandbox-ui' )
                                                } );
                                                widget.paramInfo = pi;
                                                $.extend( widget, WidgetMethods.capsuleWidget );
                                                }
                                        } else {
                                                widget = new OO.ui.DropdownWidget( {
-                                                       menu: { items: items }
+                                                       menu: { items: items },
+                                                       $overlay: $( '#mw-apisandbox-ui' )
                                                } );
                                                widget.paramInfo = pi;
                                                $.extend( widget, WidgetMethods.dropdownWidget );
                                                if ( Util.apiBool( pi.submodules ) ) {
                                                        widget.getSubmodules = WidgetMethods.submoduleWidget.single;
-                                                       widget.getMenu().on( 'choose', ApiSandbox.updateUI );
+                                                       widget.getMenu().on( 'select', ApiSandbox.updateUI );
+                                               }
+                                               if ( pi.deprecatedvalues ) {
+                                                       widget.getMenu().on( 'select', function ( item ) {
+                                                               this.$element.toggleClass(
+                                                                       'apihelp-deprecated-value',
+                                                                       pi.deprecatedvalues.indexOf( item.data ) >= 0
+                                                               );
+                                                       }, [], widget );
                                                }
                                        }
 
                                widget = new OO.ui.CapsuleMultiselectWidget( {
                                        allowArbitrary: true,
                                        allowDuplicates: Util.apiBool( pi.allowsduplicates ),
+                                       $overlay: $( '#mw-apisandbox-ui' ),
                                        popup: {
                                                classes: [ 'mw-apisandbox-popup' ],
                                                $content: $content
 
                                if ( !formatDropdown ) {
                                        formatDropdown = new OO.ui.DropdownWidget( {
-                                               menu: { items: [] }
+                                               menu: { items: [] },
+                                               $overlay: $( '#mw-apisandbox-ui' )
                                        } );
-                                       formatDropdown.getMenu().on( 'choose', Util.onFormatDropdownChange );
+                                       formatDropdown.getMenu().on( 'select', Util.onFormatDropdownChange );
                                }
 
                                menu = formatDropdown.getMenu();
                                        }
                                } )
                                        .then( null, function ( code, data, result, jqXHR ) {
+                                               var deferred = $.Deferred();
+
                                                if ( code !== 'http' ) {
                                                        // Not really an error, work around mw.Api thinking it is.
-                                                       return $.Deferred()
-                                                               .resolve( result, jqXHR )
-                                                               .promise();
+                                                       deferred.resolve( result, jqXHR );
+                                               } else {
+                                                       // Just forward it.
+                                                       deferred.reject.apply( deferred, arguments );
                                                }
-                                               return this;
-                                       } )
-                                       .fail( function ( code, data ) {
-                                               var details = 'HTTP error: ' + data.exception;
-                                               $result.empty()
-                                                       .append(
-                                                               new OO.ui.LabelWidget( {
-                                                                       label: mw.message( 'apisandbox-results-error', details ).text(),
-                                                                       classes: [ 'error' ]
-                                                               } ).$element
-                                                       );
+                                               return deferred.promise();
                                        } )
-                                       .done( function ( data, jqXHR ) {
+                                       .then( function ( data, jqXHR ) {
                                                var m, loadTime, button, clear,
-                                                       ct = jqXHR.getResponseHeader( 'Content-Type' );
+                                                       ct = jqXHR.getResponseHeader( 'Content-Type' ),
+                                                       loginSuppressed = jqXHR.getResponseHeader( 'MediaWiki-Login-Suppressed' ) || 'false';
 
                                                $result.empty();
+                                               if ( loginSuppressed !== 'false' ) {
+                                                       $( '<div>' )
+                                                               .addClass( 'warning' )
+                                                               .append( Util.parseMsg( 'apisandbox-results-login-suppressed' ) )
+                                                               .appendTo( $result );
+                                               }
                                                if ( /^text\/mediawiki-api-prettyprint-wrapped(?:;|$)/.test( ct ) ) {
                                                        data = JSON.parse( data );
                                                        if ( data.modules.length ) {
                                                                                icon: 'info',
                                                                                popup: {
                                                                                        $content: $( '<div>' ).append( Util.parseMsg( 'apisandbox-continue-help' ) ),
-                                                                                       padded: true
+                                                                                       padded: true,
+                                                                                       width: 'auto'
                                                                                }
                                                                        } ).$element
                                                                )
                                                                .on( 'click', button.setDisabled, [ true ], button )
                                                                .$element.appendTo( $result );
                                                }
+                                       }, function ( code, data ) {
+                                               var details = 'HTTP error: ' + data.exception;
+                                               $result.empty()
+                                                       .append(
+                                                               new OO.ui.LabelWidget( {
+                                                                       label: mw.message( 'apisandbox-results-error', details ).text(),
+                                                                       classes: [ 'error' ]
+                                                               } ).$element
+                                                       );
                                        } );
                        } );
                },
                                        nooptional: true
                                } );
                                button = new OO.ui.ButtonWidget( {
-                                       icon: 'remove',
+                                       icon: 'trash',
                                        flags: 'destructive'
                                } );
                                layout = new OO.ui.ActionFieldLayout(
 
                Util.fetchModuleInfo( this.apiModule )
                        .done( function ( pi ) {
-                               var prefix, i, j, descriptionContainer, widget, $widgetLabel, widgetField, helpField, tmp, flag, count,
+                               var prefix, i, j, descriptionContainer, widget, widgetField, helpField, tmp, flag, count,
                                        items = [],
                                        deprecatedItems = [],
                                        buttons = [],
                                                label: mw.message( 'apisandbox-helpurls' ).text(),
                                                icon: 'help',
                                                popup: {
+                                                       width: 'auto',
+                                                       padded: true,
                                                        $content: $( '<ul>' ).append( $.map( pi.helpurls, function ( link ) {
                                                                return $( '<li>' ).append( $( '<a>', {
                                                                        href: link,
                                                label: mw.message( 'apisandbox-examples' ).text(),
                                                icon: 'code',
                                                popup: {
+                                                       width: 'auto',
+                                                       padded: true,
                                                        $content: $( '<ul>' ).append( $.map( pi.examples, function ( example ) {
                                                                var a = $( '<a>', {
                                                                        href: '#' + example.query,
                                                        }
                                                );
 
-                                               $widgetLabel = $( '<span>' );
                                                widgetField = new OO.ui.FieldLayout(
                                                        widget,
                                                        {
                                                                align: 'left',
                                                                classes: [ 'mw-apisandbox-widget-field' ],
-                                                               label: prefix + pi.parameters[ i ].name,
-                                                               $label: $widgetLabel
+                                                               label: prefix + pi.parameters[ i ].name
                                                        }
                                                );
 
-                                               // FieldLayout only does click for InputElement
-                                               // widgets. So supply our own click handler.
-                                               $widgetLabel.on( 'click', widgetLabelOnClick.bind( widgetField ) );
+                                               // We need our own click handler on the widget label to
+                                               // turn off the disablement.
+                                               widgetField.$label.on( 'click', widgetLabelOnClick.bind( widgetField ) );
 
                                                // Don't grey out the label when the field is disabled,
                                                // it makes it too hard to read and our "disabled"
diff --git a/resources/src/mediawiki.special/mediawiki.special.block.css b/resources/src/mediawiki.special/mediawiki.special.block.css
deleted file mode 100644 (file)
index ae557b4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/*!
- * Styling for Special:Block
- */
-
-label[for='mw-input-wpConfirm'] {
-       font-weight: bold;
-}
-
-tr.mw-block-hideuser {
-       font-weight: bold;
-}
diff --git a/resources/src/mediawiki.special/mediawiki.special.contributions.js b/resources/src/mediawiki.special/mediawiki.special.contributions.js
new file mode 100644 (file)
index 0000000..3f34951
--- /dev/null
@@ -0,0 +1,7 @@
+/* jshint -W024*/
+( function ( mw, $ ) {
+       $( function () {
+               mw.widgets.DateInputWidget.static.infuse( 'mw-date-start' );
+               mw.widgets.DateInputWidget.static.infuse( 'mw-date-end' );
+       } );
+}( mediaWiki, jQuery ) );
index 3ad8005..36dfee6 100644 (file)
@@ -35,6 +35,14 @@ p.mw-ipb-conveniencelinks {
        text-align: right;
 }
 
+label[for='mw-input-wpConfirm'] {
+       font-weight: bold;
+}
+
+tr.mw-block-hideuser {
+       font-weight: bold;
+}
+
 /* Special:BlockList */
 table.mw-blocklist span.mw-usertoollinks,
 span.mw-blocklist-actions {
@@ -116,3 +124,7 @@ table.mw-userrights-groups * td,
 table.mw-userrights-groups * th {
        padding-right: 1.5em;
 }
+
+table.mw-userrights-groups * th {
+       text-align: left;
+}
diff --git a/resources/src/mediawiki.special/mediawiki.special.newFiles.js b/resources/src/mediawiki.special/mediawiki.special.newFiles.js
new file mode 100644 (file)
index 0000000..5e86eaa
--- /dev/null
@@ -0,0 +1,21 @@
+/*!
+ * JavaScript for Special:NewFiles
+ */
+( function ( mw, $ ) {
+       $( function () {
+               var start = mw.widgets.datetime.DateTimeInputWidget.static.infuse( 'mw-input-start' ),
+                       end = mw.widgets.datetime.DateTimeInputWidget.static.infuse( 'mw-input-end' ),
+                       temp;
+
+               // If the start date comes after the end date, swap the two values.
+               // This swap is already done internally when the form is submitted with a start date that
+               // comes after the end date, but this swap makes the change visible in the HTMLForm.
+               if ( start.getValue() !== '' &&
+                       end.getValue() !== '' &&
+                       start.getValue() > end.getValue() ) {
+                       temp = start.getValue();
+                       start.setValue( end.getValue() );
+                       end.setValue( temp );
+               }
+       } );
+}( mediaWiki, jQuery ) );
index 0fa6610..84a9a96 100644 (file)
                        var hash = location.hash,
                                matchedElement, parentSection;
                        if ( hash.match( /^#mw-prefsection-[\w\-]+/ ) ) {
+                               mw.storage.session.remove( 'mwpreferences-prevTab' );
                                switchPrefTab( hash.replace( '#mw-prefsection-', '' ) );
                        } else if ( hash.match( /^#mw-[\w\-]+/ ) ) {
                                matchedElement = document.getElementById( hash.slice( 1 ) );
                                parentSection = $( matchedElement ).closest( '.prefsection' );
                                if ( parentSection.length ) {
+                                       mw.storage.session.remove( 'mwpreferences-prevTab' );
                                        // Switch to proper tab and scroll to selected item.
                                        switchPrefTab( parentSection.attr( 'id' ).replace( 'mw-prefsection-', '' ), 'noHash' );
                                        matchedElement.scrollIntoView();
                if ( previousTab ) {
                        switchPrefTab( previousTab, 'noHash' );
                        // Deleting the key, the tab states should be reset until we press Save
-                       mw.storage.session.remove( previousTab );
+                       mw.storage.session.remove( 'mwpreferences-prevTab' );
                }
 
                $( '#mw-prefs-form' ).on( 'submit', function () {
index 2a93e58..9518283 100644 (file)
@@ -10,7 +10,7 @@
                var resultOutput = '', i, result, imageCaption, imageThumbnailSrc;
 
                for ( i = 0; i < results.length; i++ ) {
-                       result = results[ i ],
+                       result = results[ i ];
                        imageCaption = mw.html.element( 'span', { 'class': 'iw-result__mini-gallery__caption' }, result.title );
                        imageThumbnailSrc = ( result.thumbnail ) ? result.thumbnail.source : '';
                        resultOutput += '<div class="iw-result__mini-gallery">' +
@@ -30,7 +30,6 @@
 
                return '<li class="iw-resultset iw-resultset--image" data-iw-resultset-pos="0">' +
                                '<div class="iw-result__header">' +
-                                       '<span class="iw-result__icon iw-result__icon--image"></span>' +
                                        '<strong>' + imagesText.escaped() + '</strong>' +
                                '</div>' +
                                '<div class="iw-result__content">' +
                        return;
                }
 
-               results.sort( function( a, b ) {
+               results.sort( function ( a, b ) {
                        return a.index - b.index;
                } );
 
                multimediaWidgetTemplate = itemWrapperTemplate( pageUrl.query.search, itemTemplate( results ) );
                /* we really only need to wait for document ready for DOM manipulation */
                $( function () {
-                       $( '.iw-results' ).prepend( multimediaWidgetTemplate );
+                       $( '.iw-results' ).append( multimediaWidgetTemplate );
                } );
        } );
 
index d5e1c48..992ce99 100644 (file)
 /* interwiki search results */
 /*==========================*/
 
-.iw-headline {
-       font-weight: bold;
-       font-size: 1rem;
-       font-size: 16px;
-       opacity: 0.7;
-}
-
-.iw-results {
-       list-style: none;
-       margin: 0;
-}
-
-.iw-resultset {
-       margin-bottom: 1.2em;
-       background-color: #f2f4f7;
-       vertical-align: top;
-       width: 100%;
-       float: left;
-       list-style-type: none;
-}
-
-/* clearfix */
-.iw-result:after {
-       visibility: hidden;
-       display: block;
-       font-size: 0;
-       content: ' ';
-       clear: both;
-       height: 0;
-}
-
-* html .interwiki-result { /* IE6 */
-       zoom: 1;
-}
-*:first-child + html .iw-resultset { /* IE7 */
-       zoom: 1;
-}
-
-/* padding each .iw-resultset section seperately.
-This allows us greater flexibility in the design.
-For example changing the background color on the
-header and footer. */
-.iw-result__header,
-.iw-result__title,
-.iw-result__content,
-.iw-result__footer {
-       padding: 0.25em 0.85em;
-}
-
-/* definition titles appear inline,
-to resemble a traditional dictionary definition */
-.iw-resultset--definition .iw-result__title {
-       display: inline;
-       padding: 0;
-}
-
-.iw-resultset > div:first-child {
-       padding-top: 0.85em;
-}
-
-.iw-resultset > div:last-child {
-       padding-bottom: 0.85em;
-}
-
-.iw-result__title {
-       font-size: 16px; /* rem fallback */
-       font-size: 1rem;
-}
-
-.iw-result__title a.extiw {
-       font-weight: bold;
-}
-
-.iw-result__content:after { /* clearfix */
-       visibility: hidden;
-       display: block;
-       font-size: 0;
-       content: ' ';
-       clear: both;
-       height: 0;
-}
-
-.iw-result__footer {
-       float: right;
-}
-
-.iw-result__icon {
-       display: inline-block;
-       width: 24px;
-       height: 24px;
-       vertical-align: middle;
-       margin-right: 0.25em;
-       background: url( images/special.search/definition-icon.svg ) no-repeat 0 0;
-       background-size: 100% 100%;
-}
+@import 'mediawiki.ui/variables.less';
+@import 'mediawiki.mixins';
 
-@interwikiContentTypes: definition, travel, quotation, book, course, news, textbook, image;
+.mw-searchresults-has-iw {
 
-.generate-iwIcons();
-
-.generate-iwIcons( @i:1 ) when ( @i =< length( @interwikiContentTypes ) ) {
-       @iwIcon: extract( @interwikiContentTypes, @i );
-
-       .iw-result__icon--@{iwIcon} {
-               /*  stylelint-disable-next-line function-url-quotes */
-               background-image: url( 'images/special.search/@{iwIcon}-icon.png' );
-               /*  stylelint-disable-next-line function-url-quotes */
-               background-image: url( 'images/special.search/@{iwIcon}-icon.svg' );
+       .iw-headline {
+               font-weight: bold;
        }
 
-       .generate-iwIcons( @i + 1 );
-}
+       .iw-results {
+               list-style: none;
+               margin: 0;
+       }
 
-/* image search result */
-.iw-result__mini-gallery {
-       position: relative;
-       float: left;
-       width: 60%;
-       height: 200px;
-       box-sizing: border-box;
-       padding: 0.25rem;
-}
+       .iw-resultset {
+               .box-sizing(border-box);
+               padding: 0.5em;
+               vertical-align: top;
+               width: 100%;
+               float: left;
+               background-color: @colorGray15;
+               margin-bottom: 1em;
+               word-break: break-word;
+       }
 
-/* second and third images are small */
-.iw-result__mini-gallery:nth-child( 2 ),
-.iw-result__mini-gallery:nth-child( 3 ) { /* stylelint-disable-line indentation */
-       width: 40%;
-       height: 100px;
-}
+       .iw-result__title {
+               font-size: 108%; /* matching regular search title */
+       }
 
-.iw-result__mini-gallery__image {
-       display: block;
-       position: relative;
-       width: 100%;
-       height: 100%;
-       background-size: cover;
-       background-repeat: no-repeat;
-       background-position: center center;
-}
+       .iw-result:after,
+       .iw-result__content:after { /* clearfix */
+               visibility: hidden;
+               display: block;
+               font-size: 0;
+               content: ' ';
+               clear: both;
+               height: 0;
+       }
 
-.iw-result__mini-gallery__image > .iw-result__mini-gallery__caption { /* image gallery text */
-       visibility: hidden;
-       position: absolute;
-       bottom: 0;
-       left: 0;
-       text-align: center;
-       color: #fff;
-       text-shadow: 0 0 10px rgba( 0, 0, 0, 0.4 ); /* improves legibility on white background */
-       font-size: 0.8em;
-       padding: 5px;
-       background-color: rgba( 0, 0, 0, 0.5 );
-}
+       .iw-result__footer {
+               float: right;
+               font-size: 97%; /* matching main search result font-size */
+               margin-top: 0.5em;
+       }
+       .iw-result__footer a {
+               vertical-align: middle;
+               color: @colorGray7;
+               font-style: italic;
+       }
 
-.iw-result__mini-gallery__image:hover > .iw-result__mini-gallery__caption {
-       visibility: visible;
-}
+       .oo-ui-icon-favicon {
+               padding-right: 1em;
+       }
 
-/* different types of interwiki result boxes */
-/* quotation box */
-.iw-resultset--quotation .iw-result__content {
-       border-left: 4px solid #afb1b5;
-       margin-left: 1em;
-       padding-top: 0;
-       margin-top: 0.25em;
-}
-.iw-resultset--quotation .iw-result__title {
-       margin-left: 1em;
-}
-.iw-result--quotation .iw-result__title:before {
-       content: ' — ';
-       display: inline-block;
-}
-.iw-result--quotation .iw-result__footer {
-       text-align: right;
-}
+       /* image search result */
+       .iw-result__mini-gallery {
+               position: relative;
+               float: left;
+               width: 100%;
+               height: 200px;
+               .box-sizing(border-box);
+               padding: 0.25rem;
+       }
 
-/* desktop only */
+       /* second and third images are small */
+       .iw-result__mini-gallery:nth-child( 2 ),
+       .iw-result__mini-gallery:nth-child( 3 ) { /* stylelint-disable-line indentation */
+               width: 50%;
+               height: 100px;
+       }
 
-@media only screen and ( min-width: @deviceWidthTablet ) {
+       .iw-result__mini-gallery__image {
+               display: block;
+               position: relative;
+               width: 100%;
+               height: 100%;
+               background-size: 100% auto;
+               background-size: cover;
+               background-repeat: no-repeat;
+               background-position: center center;
+       }
 
-       #mw-interwiki-results {
-               width: 30%;
-               display: inline-block; /* used to align iw sidebar with the top of the main search results */
-               margin-left: 10%;
+       /* image gallery text */
+       .iw-result__mini-gallery__image > .iw-result__mini-gallery__caption {
+               visibility: hidden;
+               position: absolute;
+               bottom: 0;
+               left: 0;
+               text-align: center;
+               color: #fff;
+               font-size: 0.8em;
+               padding: 0.5em;
+               background-color: rgba( 0, 0, 0, 0.5 );
        }
-       .searchresults .mw-search-createlink,
-       .searchresults .mw-search-nonefound,
-       .searchresults .mw-search-results {
-               float: left;
-               width: 60%;
+
+       .iw-result__mini-gallery__image:hover > .iw-result__mini-gallery__caption {
+               visibility: visible;
        }
 
+       /* tablet and up */
+
+       @media only screen and ( min-width: @deviceWidthTablet ) {
+
+               #mw-interwiki-results {
+                       width: 30%;
+                       display: inline-block; /* used to align interwiki sidebar with the top of the main search results */
+                       margin-left: 8%; /* since inline-block causes whitespace issues, this is 8 instead of 10% */
+               }
+               .mw-search-createlink,
+               .mw-search-nonefound,
+               .mw-search-results {
+                       float: left;
+                       width: 60%;
+                       clear: left;
+                       max-width: 60%;
+               }
+       }
 }
index 2af8b2f..9ee499c 100644 (file)
        mw.log.deprecate( window, 'insertTags', toolbar.insertTags, 'Use mw.toolbar.insertTags instead.' );
 
        // For backwards compatibility. Used to be called from EditPage.php, maybe other places as well.
-       mw.log.deprecate( toolbar, 'init', $.noop );
+       toolbar.init = $.noop;
 
        // Expose API publicly
-       mw.toolbar = toolbar;
+       // @deprecated since MW 1.29
+       mw.log.deprecate( mw, 'toolbar', toolbar );
 
        $( function () {
                var i, button;
index 3e4c5e2..e42ab25 100644 (file)
                        this.clearButton = new OO.ui.ButtonWidget( {
                                classes: [ 'mw-widgets-datetime-dateTimeInputWidget-field', 'mw-widgets-datetime-dateTimeInputWidget-clearButton' ],
                                framed: false,
-                               icon: 'remove',
+                               icon: 'trash',
                                disabled: disabled
                        } ).connect( this, {
                                click: 'onClearClick'
index 877edba..0346cc1 100644 (file)
                        config.shortMonthNames = {};
                        $.each( config.fullMonthNames, function ( k, v ) {
                                config.shortMonthNames[ k ] = v.substr( 0, 3 );
-                       }.bind( this ) );
+                       } );
                }
                if ( config.shortDayNames && !config.dayLetters ) {
                        config.dayLetters = [];
                        $.each( config.shortDayNames, function ( k, v ) {
                                config.dayLetters[ k ] = v.substr( 0, 1 );
-                       }.bind( this ) );
+                       } );
                }
                if ( config.fullDayNames && !config.dayLetters ) {
                        config.dayLetters = [];
                        $.each( config.fullDayNames, function ( k, v ) {
                                config.dayLetters[ k ] = v.substr( 0, 1 );
-                       }.bind( this ) );
+                       } );
                }
                if ( config.fullDayNames && !config.shortDayNames ) {
                        config.shortDayNames = {};
                        $.each( config.fullDayNames, function ( k, v ) {
                                config.shortDayNames[ k ] = v.substr( 0, 3 );
-                       }.bind( this ) );
+                       } );
                }
                config = $.extend( {
                        fullMonthNames: this.constructor.static.fullMonthNames,
index 5cbd2ec..1cc168a 100644 (file)
        };
 
        /**
-        * Respond to add results event in the results widget.
+        * Respond to change results event in the results widget.
         * Override the way SelectWidget and GroupElement append the items
         * into the group so we can append them in groups of rows.
         *
                        // Go over the added items
                        row = search.getAvailableRow();
                        for ( i = 0, ilen = items.length; i < ilen; i++ ) {
+
+                               // Check item has just been added
+                               if ( items[ i ].row !== null ) {
+                                       continue;
+                               }
+
                                itemWidth = items[ i ].$element.outerWidth( true );
 
                                // Add items to row until it is full
 
                                // Append the item
                                search.rows[ row ].$element.append( items[ i ].$element );
+
                        }
 
                        // If we have less than 4 rows, call for more images
index 57a3d9c..c5a2dd4 100644 (file)
                        }
                        setTimeout( function () {
                                $bodyWrapper.addClass( 'mw-widget-calendarWidget-body-wrapper-fade-' + fade );
-                       }.bind( this ), 0 );
+                       } );
                } else {
                        this.$oldBody.replaceWith( this.$body );
                }
index dd2ce2a..50a84f8 100644 (file)
                } );
                this.$handle.on( {
                        click: this.onClick.bind( this ),
-                       keypress: this.onKeyPress.bind( this )
+                       keypress: this.onKeyPress.bind( this ),
+                       focus: this.activate.bind( this )
                } );
 
                // Initialization
index cad2b02..47f8045 100644 (file)
@@ -1,16 +1,10 @@
 /*!
- * MediaWiki Widgets – DateInputWidget styles.
+ * MediaWiki Widgets – JS DateInputWidget styles.
  *
  * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
  * @license The MIT License (MIT); see LICENSE.txt
  */
 
-.oo-ui-box-sizing( @type: border-box ) {
-       -webkit-box-sizing: @type;
-       -moz-box-sizing: @type;
-       box-sizing: @type;
-}
-
 .oo-ui-unselectable() {
        -webkit-touch-callout: none;
        -webkit-user-select: none;
        user-select: none;
 }
 
-.oo-ui-inline-spacing( @spacing, @cancelled-spacing: 0 ) {
-       margin-right: @spacing;
-
-       &:last-child {
-               margin-right: @cancelled-spacing;
-       }
-}
-
 @indicator-size: unit( 12 / 16 / 0.8, em );
 
 .mw-widget-dateInputWidget {
-       &.oo-ui-textInputWidget {
-               display: inline-block;
-               position: relative;
-               width: 21em;
-               margin-top: 0.25em;
-               .oo-ui-inline-spacing( 0.5em );
-               margin-bottom: 0.25em;
-               margin-left: 0;
-       }
-
-       &-handle,
-       &.oo-ui-textInputWidget input {
-               background-color: #fff;
-               display: inline-block;
-               position: relative;
-               .oo-ui-box-sizing( border-box );
-               width: 100%;
+       &-handle {
                .oo-ui-unselectable();
-               cursor: pointer;
-               padding: 0.5em 1em;
-               border: 1px solid #a2a9b1;
-               border-radius: 2px;
-               outline: 0;
-               line-height: 1.275;
-               /**
-                * Ensures non-infused and infused widget have the same height.
-                * Equal to line height + top padding + bottom padding
-                */
-               height: 2.275em;
 
                > .oo-ui-labelElement-label {
                        padding: 0;
diff --git a/resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.styles.less b/resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.styles.less
new file mode 100644 (file)
index 0000000..18cf723
--- /dev/null
@@ -0,0 +1,53 @@
+/*!
+ * MediaWiki Widgets – PHP DateInputWidget styles.
+ *
+ * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+.oo-ui-box-sizing( @type: border-box ) {
+       -webkit-box-sizing: @type;
+       -moz-box-sizing: @type;
+       box-sizing: @type;
+}
+
+.oo-ui-inline-spacing( @spacing, @cancelled-spacing: 0 ) {
+       margin-right: @spacing;
+
+       &:last-child {
+               margin-right: @cancelled-spacing;
+       }
+}
+
+.mw-widget-dateInputWidget {
+       &.oo-ui-textInputWidget {
+               display: inline-block;
+               position: relative;
+               width: 21em;
+               margin-top: 0.25em;
+               .oo-ui-inline-spacing( 0.5em );
+               margin-bottom: 0.25em;
+               margin-left: 0;
+       }
+
+       // Note that this block applies to both the PHP widget and the JS widget
+       &-handle,
+       &.oo-ui-textInputWidget input {
+               background-color: #fff;
+               display: inline-block;
+               position: relative;
+               .oo-ui-box-sizing( border-box );
+               width: 100%;
+               cursor: pointer;
+               padding: 0.5em 1em;
+               border: 1px solid #a2a9b1;
+               border-radius: 2px;
+               outline: 0;
+               line-height: 1.275;
+               /**
+                * Ensures non-infused and infused widget have the same height.
+                * Equal to line height + top padding + bottom padding
+                */
+               height: 2.275em;
+       }
+}
diff --git a/resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.base.css b/resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.base.css
new file mode 100644 (file)
index 0000000..8c495a5
--- /dev/null
@@ -0,0 +1,20 @@
+/*!
+ * MediaWiki Widgets - base SelectWithInput styles.
+ *
+ * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+.mw-widget-selectWithInputWidget .oo-ui-dropdownInputWidget,
+.mw-widget-selectWithInputWidget .oo-ui-textInputWidget {
+       display: inline-block;
+}
+
+.mw-widget-selectWithInputWidget .oo-ui-dropdownInputWidget {
+       max-width: 20em;
+       margin-right: 0.5em;
+}
+
+.mw-widget-selectWithInputWidget .oo-ui-textInputWidget {
+       max-width: 29.5em;
+}
diff --git a/resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.js b/resources/src/mediawiki.widgets/mw.widgets.SelectWithInputWidget.js
new file mode 100644 (file)
index 0000000..8c60ecf
--- /dev/null
@@ -0,0 +1,135 @@
+/*!
+ * MediaWiki Widgets - SelectWithInputWidget class.
+ *
+ * @copyright 2011-2017 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+( function ( $, mw ) {
+
+       /**
+        * Select with input widget. Displays an OO.ui.TextInputWidget along with
+        * an OO.ui.DropdownInputWidget.
+        * TODO Explain the OTHER option
+        *
+        *     mw.loader.using( 'mediawiki.widgets.SelectWithInputWidget', function () {
+        *       var swi = new mw.widgets.SelectWithInputWidget( {
+        *         or: true,
+        *         dropdowninput: {
+        *           options: [
+        *             { data: 'other', label: 'Other' },
+        *             { data: 'a', label: 'First' },
+        *             { data: 'b', label: 'Second' },
+        *             { data: 'c', label: 'Third' }
+        *           ]
+        *         },
+        *         textinput: {
+        *         }
+        *       } );
+        *
+        *       $( 'body' ).append( swi.$element );
+        *     } );
+        *
+        * @class mw.widgets.SelectWithInputWidget
+        * @extends OO.ui.Widget
+        *
+        * @constructor
+        * @param {Object} [config] Configuration options
+        * @cfg {Object} [dropdowninput] Config for the dropdown
+        * @cfg {Object} [textinput] Config for the text input
+        * @cfg {boolean} [or=false] Config for whether the widget is dropdown AND input
+        *                           or dropdown OR input
+        */
+       mw.widgets.SelectWithInputWidget = function MwWidgetsSelectWithInputWidget( config ) {
+               // Config initialization
+               config = $.extend( { or: false }, config );
+
+               // Properties
+               this.textinput = new OO.ui.TextInputWidget( config.textinput );
+               this.dropdowninput = new OO.ui.DropdownInputWidget( config.dropdowninput );
+
+               if ( config.or === true ) {
+                       this.dropdowninput.on( 'change', this.onChange.bind( this ) );
+                       this.onChange();
+               }
+
+               // Parent constructor
+               mw.widgets.SelectWithInputWidget.parent.call( this, config );
+
+               // Initialization
+               this.$element
+                       .addClass( 'mw-widget-selectWithInputWidget' )
+                       .append(
+                               this.dropdowninput.$element,
+                               this.textinput.$element
+                       );
+       };
+
+       /* Setup */
+       OO.inheritClass( mw.widgets.SelectWithInputWidget, OO.ui.Widget );
+
+       /* Static Methods */
+
+       /**
+        * @inheritdoc
+        */
+       mw.widgets.SelectWithInputWidget.static.reusePreInfuseDOM = function ( node, config ) {
+               config = mw.widgets.SelectWithInputWidget.parent.static.reusePreInfuseDOM( node, config );
+               config.dropdowninput = OO.ui.DropdownInputWidget.static.reusePreInfuseDOM(
+                       $( node ).find( '.oo-ui-dropdownInputWidget' ),
+                       config.dropdowninput
+               );
+               config.textinput = OO.ui.TextInputWidget.static.reusePreInfuseDOM(
+                       $( node ).find( '.oo-ui-textInputWidget' ),
+                       config.textinput
+               );
+               return config;
+       };
+
+       /**
+        * @inheritdoc
+        */
+       mw.widgets.SelectWithInputWidget.static.gatherPreInfuseState = function ( node, config ) {
+               var state = mw.widgets.SelectWithInputWidget.parent.static.gatherPreInfuseState( node, config );
+               state.dropdowninput = OO.ui.DropdownInputWidget.static.gatherPreInfuseState(
+                       $( node ).find( '.oo-ui-dropdownInputWidget' ),
+                       config.dropdowninput
+               );
+               state.textinput = OO.ui.TextInputWidget.static.gatherPreInfuseState(
+                       $( node ).find( '.oo-ui-textInputWidget' ),
+                       config.textinput
+               );
+               return state;
+       };
+
+       /* Methods */
+
+       /**
+        * @inheritdoc
+        */
+       mw.widgets.SelectWithInputWidget.prototype.restorePreInfuseState = function ( state ) {
+               mw.widgets.SelectWithInputWidget.parent.prototype.restorePreInfuseState.call( this, state );
+               this.dropdowninput.restorePreInfuseState( state.dropdowninput );
+               this.textinput.restorePreInfuseState( state.textinput );
+       };
+
+       /**
+        * @inheritdoc
+        */
+       mw.widgets.SelectWithInputWidget.prototype.setDisabled = function ( disabled ) {
+               mw.widgets.SelectWithInputWidget.parent.prototype.setDisabled.call( this, disabled );
+               this.textinput.setDisabled( disabled );
+               this.dropdowninput.setDisabled( disabled );
+       };
+
+       /**
+        * Handle change events on the DropdownInput
+        *
+        * @param {string|undefined} value
+        * @private
+        */
+       mw.widgets.SelectWithInputWidget.prototype.onChange = function ( value ) {
+               value = value || this.dropdowninput.getValue();
+               this.textinput.$element.toggle( value === 'other' );
+       };
+
+}( jQuery, mediaWiki ) );
index 70d7cb5..d7464b9 100644 (file)
@@ -85,7 +85,7 @@
         *
         * @return {Array} usernames
         */
-       mw.widgets.UsersMultiselectWidget.prototype.getSelectedUsernames = function() {
+       mw.widgets.UsersMultiselectWidget.prototype.getSelectedUsernames = function () {
                return this.getItemsData();
        };
 
@@ -94,7 +94,7 @@
         *
         * @private
         */
-       mw.widgets.UsersMultiselectWidget.prototype.updateMenuItems = function() {
+       mw.widgets.UsersMultiselectWidget.prototype.updateMenuItems = function () {
                var inputValue = this.$input.val();
 
                if ( inputValue === this.inputValue ) {
                                // character to uppercase so that "fo" may yield "Foo".
                                auprefix: inputValue[ 0 ].toUpperCase() + inputValue.slice( 1 ),
                                aulimit: this.limit
-                       } ).done( function( response ) {
+                       } ).done( function ( response ) {
                                var suggestions = response.query.allusers,
                                        selected = this.getSelectedUsernames();
 
                                                        label: user.name
                                                } );
                                        }
-                               } ).filter( function( item ) {
+                               } ).filter( function ( item ) {
                                        return item !== undefined;
                                } );
 
         *
         * @private
         */
-       mw.widgets.UsersMultiselectWidget.prototype.updateHiddenInput = function() {
+       mw.widgets.UsersMultiselectWidget.prototype.updateHiddenInput = function () {
                if ( 'hiddenInput' in this ) {
                        this.hiddenInput.val( this.getSelectedUsernames().join( '\n' ) );
                }
index 9d9c0a6..00c04bc 100644 (file)
 
        /* Static Properties */
 
+       /**
+        * @inheritdoc
+        * @property name
+        */
+       mw.Upload.Dialog.static.name = 'mwUploadDialog';
+
        /**
         * @inheritdoc
         * @property title
                        } );
                }
                if ( action === 'cancel' ) {
-                       return new OO.ui.Process( this.close() );
+                       return new OO.ui.Process( this.close().closed );
                }
                if ( action === 'cancelupload' ) {
                        return new OO.ui.Process( this.uploadBooklet.initialize() );
index 9a5a66f..bd4741d 100644 (file)
@@ -40,6 +40,10 @@ div.apihelp-linktrail {
        color: #f00;
 }
 
+.apihelp-deprecated-value {
+       text-decoration: line-through;
+}
+
 .apihelp-unknown {
        color: #888;
 }
index e3a8f7b..ee3bac2 100644 (file)
@@ -98,6 +98,7 @@
                         */
                        trigger: function () {
                                // use confirm to show the message to the user (if options.text() is true)
+                               // eslint-disable-next-line no-alert
                                if ( options.test() && !confirm( message ) ) {
                                        // the user want to keep the actual page
                                        return false;
index f93df3c..7a73e98 100644 (file)
@@ -1,7 +1,8 @@
 /*!
  * Diff rendering
  */
-table.diff {
+
+.diff {
        border: 0;
        border-spacing: 4px;
        margin: 0;
@@ -10,34 +11,34 @@ table.diff {
        table-layout: fixed;
 }
 
-table.diff td {
+.diff td {
        padding: 0.33em 0.5em;
 }
 
-table.diff td.diff-marker {
+.diff td.diff-marker {
        /* Compensate padding for increased font-size */
        padding: 0.25em;
 }
 
-table.diff col.diff-marker {
+.diff col.diff-marker {
        width: 2%;
 }
 
-table.diff col.diff-content {
+.diff .diff-content {
        width: 48%;
 }
 
-table.diff td div {
+.diff td div {
        /* Force-wrap very long lines such as URLs or page-widening char strings */
        word-wrap: break-word;
 }
 
-td.diff-otitle,
-td.diff-ntitle {
+.diff-otitle,
+.diff-ntitle {
        text-align: center;
 }
 
-td.diff-lineno {
+.diff-lineno {
        font-weight: bold;
 }
 
@@ -48,9 +49,9 @@ td.diff-marker {
        line-height: 1.2;
 }
 
-td.diff-addedline,
-td.diff-deletedline,
-td.diff-context {
+.diff-addedline,
+.diff-deletedline,
+.diff-context {
        font-size: 88%;
        line-height: 1.6;
        vertical-align: top;
@@ -61,15 +62,15 @@ td.diff-context {
        border-radius: 0.33em;
 }
 
-td.diff-addedline {
+.diff-addedline {
        border-color: #a3d3ff;
 }
 
-td.diff-deletedline {
+.diff-deletedline {
        border-color: #ffe49c;
 }
 
-td.diff-context {
+.diff-context {
        background: #f9f9f9;
        border-color: #e6e6e6;
        color: #333;
@@ -80,17 +81,17 @@ td.diff-context {
        text-decoration: none;
 }
 
-td.diff-addedline .diffchange,
-td.diff-deletedline .diffchange {
+.diff-addedline .diffchange,
+.diff-deletedline .diffchange {
        border-radius: 0.33em;
        padding: 0.25em 0;
 }
 
-td.diff-addedline .diffchange {
+.diff-addedline .diffchange {
        background: #d8ecff;
 }
 
-td.diff-deletedline .diffchange {
+.diff-deletedline .diffchange {
        background: #feeec8;
 }
 
index 0c9ea97..4fedbea 100644 (file)
@@ -66,8 +66,6 @@
                 * assigned to either the A or B buckets. If the experiment were disabled,
                 * then the user would always be assigned to the control bucket.
                 *
-                * This function is based on the deprecated `mw.user.bucket` function.
-                *
                 * @param {Object} experiment
                 * @param {string} experiment.name The name of the experiment
                 * @param {boolean} experiment.enabled Whether or not the experiment is
index 9c7064f..c0788a4 100644 (file)
 .hlist li ol > li:first-child:before {
        content: '(' counter( list-item ) ' ';
 }
+
+/* Support hlist styles inside *boxes */
+.errorbox .hlist,
+.successbox .hlist,
+.warningbox .hlist {
+       margin-left: 0;
+}
+
+.errorbox .hlist li:after,
+.successbox .hlist li:after,
+.warningbox .hlist li:after {
+       margin-right: 3px;
+}
index 638fba7..9332773 100644 (file)
                                // Use Function.prototype#call to force an exception on Firefox,
                                // which doesn't define console#table but doesn't complain if you
                                // try to invoke it.
+                               // eslint-disable-next-line no-useless-call
                                console.table.call( console, data );
                                return;
                        } catch ( e ) {}
index 216cd5a..5b3519e 100644 (file)
        .background-image-svg('images/arrow-sort-descending.svg', 'images/arrow-sort-descending.png');
 }
 
-.TablePager_nav {
-       margin: 0 auto;
-}
-
-.TablePager_nav td {
-       padding: 3px;
+.TablePager_nav.oo-ui-buttonGroupWidget {
+       display: block;
        text-align: center;
-       vertical-align: center;
-}
-
-.TablePager_nav a {
-       text-decoration: none;
-}
-
-.TablePager_nav td.TablePager_nav-first .TablePager_nav-disabled {
-       padding-top: 25px;
-       background: none center top no-repeat;
-       .background-image-svg('images/pager-arrow-disabled-fastforward-rtl.svg', 'images/pager-arrow-disabled-fastforward-rtl.png');
-}
-
-.TablePager_nav td.TablePager_nav-prev .TablePager_nav-disabled {
-       padding-top: 25px;
-       background: none center top no-repeat;
-       .background-image-svg('images/pager-arrow-disabled-forward-rtl.svg', 'images/pager-arrow-disabled-forward-rtl.png');
-}
-
-.TablePager_nav td.TablePager_nav-next .TablePager_nav-disabled {
-       padding-top: 25px;
-       background: none center top no-repeat;
-       .background-image-svg('images/pager-arrow-disabled-forward-ltr.svg', 'images/pager-arrow-disabled-forward-ltr.png');
-}
-
-.TablePager_nav td.TablePager_nav-last .TablePager_nav-disabled {
-       padding-top: 25px;
-       background: none center top no-repeat;
-       .background-image-svg('images/pager-arrow-disabled-fastforward-ltr.svg', 'images/pager-arrow-disabled-fastforward-ltr.png');
-}
-
-.TablePager_nav td.TablePager_nav-first .TablePager_nav-enabled {
-       padding-top: 25px;
-       background: none center top no-repeat;
-       .background-image-svg('images/pager-arrow-fastforward-rtl.svg', 'images/pager-arrow-fastforward-rtl.png');
-}
-
-.TablePager_nav td.TablePager_nav-prev .TablePager_nav-enabled {
-       padding-top: 25px;
-       background: none center top no-repeat;
-       .background-image-svg('images/pager-arrow-forward-rtl.svg', 'images/pager-arrow-forward-rtl.png');
-}
-
-.TablePager_nav td.TablePager_nav-next .TablePager_nav-enabled {
-       padding-top: 25px;
-       background: none center top no-repeat;
-       .background-image-svg('images/pager-arrow-forward-ltr.svg', 'images/pager-arrow-forward-ltr.png');
-}
-
-.TablePager_nav td.TablePager_nav-last .TablePager_nav-enabled {
-       padding-top: 25px;
-       background: none center top no-repeat;
-       .background-image-svg('images/pager-arrow-fastforward-ltr.svg', 'images/pager-arrow-fastforward-ltr.png');
+       margin: 1em;
 }
index 95c77f8..84e146a 100644 (file)
@@ -32,7 +32,8 @@
         * Retrieve value from device storage.
         *
         * @param {string} key Key of item to retrieve
-        * @return {string|boolean} False when localStorage not available, otherwise string
+        * @return {string|null|boolean} String value, null if no value exists, or false
+        *  if localStorage is not available.
         */
        SafeStorage.prototype.get = function ( key ) {
                try {
index 9ef6c43..53e8d93 100644 (file)
@@ -6,9 +6,7 @@
                $content.find( '.toc' ).addBack( '.toc' ).each( function () {
                        var hideToc,
                                $this = $( this ),
-                               // .toctitle is new so may not exist in HTML caches for a few weeks,
-                               // so keep checking for #toctitle for now
-                               $tocTitle = $this.find( '.toctitle, #toctitle' ),
+                               $tocTitle = $this.find( '.toctitle' ),
                                $tocToggleLink = $this.find( '.togglelink' ),
                                $tocList = $this.find( 'ul' ).eq( 0 );
 
index da2c08f..69e9440 100644 (file)
@@ -1,4 +1,4 @@
-#toc.tochidden,
+.toc.tochidden,
 .toctoggle {
        display: none;
 }
index d1fa84a..65e9e41 100644 (file)
                        return mw.user.getName() || mw.user.sessionId();
                },
 
-               /**
-                * Get the user's bucket (place them in one if not done already)
-                *
-                *     mw.user.bucket( 'test', {
-                *         buckets: { ignored: 50, control: 25, test: 25 },
-                *         version: 1,
-                *         expires: 7
-                *     } );
-                *
-                * @deprecated since 1.23
-                * @param {string} key Name of bucket
-                * @param {Object} options Bucket configuration options
-                * @param {Object} options.buckets List of bucket-name/relative-probability pairs (required,
-                *  must have at least one pair)
-                * @param {number} [options.version=0] Version of bucket test, changing this forces
-                *  rebucketing
-                * @param {number} [options.expires=30] Length of time (in days) until the user gets
-                *  rebucketed
-                * @return {string} Bucket name - the randomly chosen key of the `options.buckets` object
-                */
-               bucket: function ( key, options ) {
-                       var cookie, parts, version, bucket,
-                               range, k, rand, total;
-
-                       options = $.extend( {
-                               buckets: {},
-                               version: 0,
-                               expires: 30
-                       }, options || {} );
-
-                       cookie = mw.cookie.get( 'mwuser-bucket:' + key );
-
-                       // Bucket information is stored as 2 integers, together as version:bucket like: "1:2"
-                       if ( typeof cookie === 'string' && cookie.length > 2 && cookie.indexOf( ':' ) !== -1 ) {
-                               parts = cookie.split( ':' );
-                               if ( parts.length > 1 && Number( parts[ 0 ] ) === options.version ) {
-                                       version = Number( parts[ 0 ] );
-                                       bucket = String( parts[ 1 ] );
-                               }
-                       }
-
-                       if ( bucket === undefined ) {
-                               if ( !$.isPlainObject( options.buckets ) ) {
-                                       throw new Error( 'Invalid bucket. Object expected for options.buckets.' );
-                               }
-
-                               version = Number( options.version );
-
-                               // Find range
-                               range = 0;
-                               for ( k in options.buckets ) {
-                                       range += options.buckets[ k ];
-                               }
-
-                               // Select random value within range
-                               rand = Math.random() * range;
-
-                               // Determine which bucket the value landed in
-                               total = 0;
-                               for ( k in options.buckets ) {
-                                       bucket = k;
-                                       total += options.buckets[ k ];
-                                       if ( total >= rand ) {
-                                               break;
-                                       }
-                               }
-
-                               mw.cookie.set(
-                                       'mwuser-bucket:' + key,
-                                       version + ':' + bucket,
-                                       { expires: Number( options.expires ) * 86400 }
-                               );
-                       }
-
-                       return bucket;
-               },
-
                /**
                 * Get the current user's groups
                 *
index 67e2ebb..4844e21 100644 (file)
@@ -8,42 +8,6 @@
         */
        var util = {
 
-               /**
-                * Initialisation
-                * (don't call before document ready)
-                */
-               init: function () {
-                       util.$content = ( function () {
-                               var i, l, $node, selectors;
-
-                               selectors = [
-                                       // The preferred standard is class "mw-body".
-                                       // You may also use class "mw-body mw-body-primary" if you use
-                                       // mw-body in multiple locations. Or class "mw-body-primary" if
-                                       // you use mw-body deeper in the DOM.
-                                       '.mw-body-primary',
-                                       '.mw-body',
-
-                                       // If the skin has no such class, fall back to the parser output
-                                       '#mw-content-text',
-
-                                       // Should never happen... well, it could if someone is not finished writing a
-                                       // skin and has not yet inserted bodytext yet.
-                                       'body'
-                               ];
-
-                               for ( i = 0, l = selectors.length; i < l; i++ ) {
-                                       $node = $( selectors[ i ] );
-                                       if ( $node.length ) {
-                                               return $node.first();
-                                       }
-                               }
-
-                               // Preserve existing customized value in case it was preset
-                               return util.$content;
-                       }() );
-               },
-
                /* Main body */
 
                /**
                /**
                 * The content wrapper of the skin (e.g. `.mw-body`).
                 *
-                * Populated on document ready by #init. To use this property,
-                * wait for `$.ready` and be sure to have a module depedendency on
-                * `mediawiki.util` and `mediawiki.page.startup` which will ensure
-                * your document ready handler fires after #init.
+                * Populated on document ready. To use this property,
+                * wait for `$.ready` and be sure to have a module dependency on
+                * `mediawiki.util` which will ensure
+                * your document ready handler fires after initialization.
                 *
                 * Because of the lazy-initialised nature of this property,
                 * you're discouraged from using it.
                        block = allowBlock ? '(?:\\/(?:12[0-8]|1[01][0-9]|[1-9]?\\d))?' : '';
                        RE_IPV6_ADD =
                                '(?:' + // starts with "::" (including "::")
-                               ':(?::|(?::' + '[0-9A-Fa-f]{1,4}' + '){1,7})' +
-                               '|' + // ends with "::" (except "::")
-                               '[0-9A-Fa-f]{1,4}' + '(?::' + '[0-9A-Fa-f]{1,4}' + '){0,6}::' +
-                               '|' + // contains no "::"
-                               '[0-9A-Fa-f]{1,4}' + '(?::' + '[0-9A-Fa-f]{1,4}' + '){7}' +
+                                       ':(?::|(?::' +
+                                               '[0-9A-Fa-f]{1,4}' +
+                                       '){1,7})' +
+                                       '|' + // ends with "::" (except "::")
+                                       '[0-9A-Fa-f]{1,4}' +
+                                       '(?::' +
+                                               '[0-9A-Fa-f]{1,4}' +
+                                       '){0,6}::' +
+                                       '|' + // contains no "::"
+                                       '[0-9A-Fa-f]{1,4}' +
+                                       '(?::' +
+                                               '[0-9A-Fa-f]{1,4}' +
+                                       '){7}' +
                                ')';
 
                        if ( new RegExp( '^' + RE_IPV6_ADD + block + '$' ).test( address ) ) {
                        }
 
                        // contains one "::" in the middle (single '::' check below)
-                       RE_IPV6_ADD = '[0-9A-Fa-f]{1,4}' + '(?:::?' + '[0-9A-Fa-f]{1,4}' + '){1,6}';
+                       RE_IPV6_ADD =
+                               '[0-9A-Fa-f]{1,4}' +
+                               '(?:::?' +
+                                       '[0-9A-Fa-f]{1,4}' +
+                               '){1,6}';
 
                        return (
                                new RegExp( '^' + RE_IPV6_ADD + block + '$' ).test( address ) &&
                return true;
        }, 'Use mw.notify instead.' );
 
+       /**
+        * Initialisation of mw.util.$content
+        */
+       function init() {
+               util.$content = ( function () {
+                       var i, l, $node, selectors;
+
+                       selectors = [
+                               // The preferred standard is class "mw-body".
+                               // You may also use class "mw-body mw-body-primary" if you use
+                               // mw-body in multiple locations. Or class "mw-body-primary" if
+                               // you use mw-body deeper in the DOM.
+                               '.mw-body-primary',
+                               '.mw-body',
+
+                               // If the skin has no such class, fall back to the parser output
+                               '#mw-content-text'
+                       ];
+
+                       for ( i = 0, l = selectors.length; i < l; i++ ) {
+                               $node = $( selectors[ i ] );
+                               if ( $node.length ) {
+                                       return $node.first();
+                               }
+                       }
+
+                       // Should never happen... well, it could if someone is not finished writing a
+                       // skin and has not yet inserted bodytext yet.
+                       return $( 'body' );
+               }() );
+       }
+
+       /**
+        * Former public initialisation. Now a no-op function.
+        *
+        * @method util_init
+        * @deprecated since 1.30
+        */
+       mw.log.deprecate( util, 'init', $.noop, 'Remove the call of mw.util.init().', 'mw.util.init' );
+
+       $( init );
+
        mw.util = util;
        module.exports = util;
 
index d5a667e..1f6c8a6 100644 (file)
                         */
                        mw.hook( 'wikipage.categories' ).fire( $nodes );
                }
+
+               $( '#t-print a' ).click( function ( e ) {
+                       window.print();
+                       e.preventDefault();
+               } );
        } );
 
 }( mediaWiki, jQuery ) );
index 076357a..49cfd8a 100644 (file)
@@ -1,10 +1,7 @@
 ( function ( mw, $ ) {
 
-       mw.page = {};
-
        $( function () {
                var $diff;
-               mw.util.init();
 
                /**
                 * Fired when wiki content is being added to the DOM
index 7d35cb7..6322ccd 100644 (file)
@@ -5,8 +5,9 @@
  * @class mw.page.watch.ajax
  */
 ( function ( mw, $ ) {
-       // The name of the page to watch or unwatch
-       var title = mw.config.get( 'wgRelevantPageName' );
+       var watch,
+               // The name of the page to watch or unwatch
+               title = mw.config.get( 'wgRelevantPageName' );
 
        /**
         * Update the link text, link href attribute and (if applicable)
        }
 
        // Expose public methods
-       mw.page.watch = {
+       watch = {
                updateWatchLink: updateWatchLink
        };
+       module.exports = watch;
+
+       // Deprecated since 1.30
+       mw.log.deprecate( mw, 'page',
+               { watch: watch },
+               'Use require( \'mediawiki.page.watch.ajax\' ) instead.',
+               'mw.page'
+       );
 
        $( function () {
                var $links = $( '.mw-watchlink a, a.mw-watchlink' );
index ad06b34..d672d76 100644 (file)
@@ -1,26 +1,23 @@
 /**
- * Code in this file MUST work on even the most ancient of browsers!
+ * This file is where we decide whether to initialise the Grade A run-time.
  *
- * This file is where we decide whether to initialise the modern run-time.
+ * - Beware: This file MUST parse without errors on even the most ancient of browsers!
+ * - Beware: Do not call mwNow before the isCompatible() check.
  */
 
-/* global mw, $VARS, $CODE */
-
-var mwPerformance = ( window.performance && performance.mark ) ? performance : {
-               mark: function () {}
-       },
-       // Define now() here to ensure valid comparison with mediaWikiLoadEnd (T153819).
-       mwNow = ( 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 Date.now(); };
-       }() ),
-       // eslint-disable-next-line no-unused-vars
-       mediaWikiLoadStart = mwNow();
-
-mwPerformance.mark( 'mwLoadStart' );
+/* global mw, mwPerformance, mwNow, isCompatible, $VARS, $CODE */
+
+window.mwPerformance = ( window.performance && performance.mark ) ? performance : {
+       mark: function () {}
+};
+// Define now() here to ensure valid comparison with mediaWikiLoadEnd (T153819).
+window.mwNow = ( 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 Date.now(); };
+}() );
 
 /**
  * See <https://www.mediawiki.org/wiki/Compatibility#Browsers>
@@ -63,7 +60,7 @@ mwPerformance.mark( 'mwLoadStart' );
  * @param {string} [str] User agent, defaults to navigator.userAgent
  * @return {boolean} User agent is compatible with MediaWiki JS
  */
-function isCompatible( str ) {
+window.isCompatible = function ( str ) {
        var ua = str || navigator.userAgent;
        return !!(
                // http://caniuse.com/#feat=es5
@@ -93,7 +90,7 @@ function isCompatible( str ) {
                        ua.match( /PlayStation/i )
                )
        );
-}
+};
 
 // Conditional script injection
 ( function () {
@@ -153,6 +150,9 @@ function isCompatible( str ) {
                };
        }
 
+       window.mediaWikiLoadStart = mwNow();
+       mwPerformance.mark( 'mwLoadStart' );
+
        script = document.createElement( 'script' );
        script.src = $VARS.baseModulesUri;
        script.onload = script.onreadystatechange = function () {
diff --git a/tests/.gitignore b/tests/.gitignore
deleted file mode 100644 (file)
index eb56bcc..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# Puppet-managed dependencies for browser tests
-.bundle
-.gem
-.ruby-version
diff --git a/tests/browser/README.mediawiki b/tests/browser/README.mediawiki
deleted file mode 100644 (file)
index 2265762..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-Purpose:
-
-The purpose of these tests is to validate that a newly installed (or updated, or hacked, or whatever) mediawiki instance presents to the user a set of expected features, regardless of what language the wiki is in, or where it is installed, or what extensions it might have.
-
-The tests are based on the basic definition of a wiki, a website where anyone
-
-* can read a page
-* can create a page
-* can edit a page
-* can link one page to another page
-
-Install:
-
-Ruby 1.9.3 or higher is required
-Firefox browser is required
-::
- cd /tests/browser
- gem update --system
- gem install bundler
- bundle install
-
-Run the tests:
-
-Edit the environment_variables file with appropriate values for your wiki
-$source environment_variables (example shown in bash shell)
-
-bundle exec cucumber features/
-
-Note that the acceptance tests will create three pages in your wiki entitled "Editing Test Page", "Link Source Test Page", and "Link Target Test Page".  These pages may be deleted at any time.  If you wish to re-run the tests at any time, these test pages will be re-created or reset to their original contents at the time that the tests run.
-
-For more information about running Selenium tests please see
-https://github.com/wikimedia/mediawiki-selenium
-
-Details:
-
-create_account.feature
-* Checks three different ways to arrive on page allowing the user to create an account
-
-create_and_follow_wiki_link.feature:
-* uses the mediawiki API to create a link target page
-* uses the mediawiki API to create a link source page
-* navigates a browser to the link source page
-* clicks the link in that page to the link target page
-* validates that the browser has in fact followed the link to the target page correctly
-
-edit_page.feature:
-* uses the mediawiki API to create an editable page on the wiki
-* navigates a browser to the page
-* clicks the Edit button to invoke the basic editor
-* edits the page with a particular string containing a static part and also a quasi-unique random part
-* saves the edited page
-* checks that the saved page contains the particular string with which the page was edited
-
-main_page.feature:
-* navigates a browser to the default landing page of the wiki
-* checks for the View History link on the landing page
-* checks for the full set of of sidebar links that should exist on every mediawiki wiki
-
-view_history.feature
-* similar to edit_page.feature but checks for an older version of the edited page
-
-Notes:
-
-Tested on beta labs hewiki, dewiki, enwiki, and on a local installation of mediawiki
\ No newline at end of file
diff --git a/tests/browser/ci.yml b/tests/browser/ci.yml
deleted file mode 100644 (file)
index 8c9865e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-BROWSER:
-  - firefox
-
-MEDIAWIKI_ENVIRONMENT:
-  - beta
-
-PLATFORM:
-  - Linux
diff --git a/tests/browser/environments.yml b/tests/browser/environments.yml
deleted file mode 100644 (file)
index 3f451f1..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-# Customize this configuration as necessary to provide defaults for various
-# test environments.
-#
-# The set of defaults to use is determined by the MEDIAWIKI_ENVIRONMENT
-# environment variable.
-#
-#   export MEDIAWIKI_ENVIRONMENT=mw-vagrant-host
-#   bundle exec cucumber
-#
-# Additional variables set by the environment will override the corresponding
-# defaults defined here.
-#
-#   export MEDIAWIKI_ENVIRONMENT=mw-vagrant-host
-#   export MEDIAWIKI_USER=Selenium_user2
-#   bundle exec cucumber
-#
-mw-vagrant-host: &default
-  user_factory: true
-  mediawiki_url: http://127.0.0.1:8080/wiki/
-
-mw-vagrant-guest:
-  user_factory: true
-  mediawiki_url: http://127.0.0.1/wiki/
-  headless: 'true'
-
-beta:
-  mediawiki_url: https://en.wikipedia.beta.wmflabs.org/wiki/
-  mediawiki_user: Selenium_user
-  # mediawiki_password: SET THIS IN THE ENVIRONMENT!
-
-test2:
-  mediawiki_url: https://test2.wikipedia.org/wiki/
-  mediawiki_user: Selenium_user
-  # mediawiki_password: SET THIS IN THE ENVIRONMENT!
-
-integration:
-  user_factory: true
-  # mediawiki_url: THIS WILL BE SET BY JENKINS
-
-default: *default
diff --git a/tests/browser/features/create_account.feature b/tests/browser/features/create_account.feature
deleted file mode 100644 (file)
index 8029182..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-@chrome @firefox @vagrant
-Feature: Create account
-
-  Scenario Outline: Go to Create account page
-    Given I go to Create account page at <path>
-    Then form has Create account button
-
-  Examples:
-    | path                          |
-    | Special:CreateAccount         |
-    | Special:UserLogin/signup      |
-    | Special:UserLogin?type=signup |
-
-  Scenario: If no username is entered then an error is displayed
-    Given I go to Create account page at Special:CreateAccount
-    When I submit the form
-    Then an error message is displayed
diff --git a/tests/browser/features/create_and_follow_wiki_link.feature b/tests/browser/features/create_and_follow_wiki_link.feature
deleted file mode 100644 (file)
index 510c467..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-@chrome @firefox @vagrant
-Feature: Create Page With Wiki Link
-
-  Scenario: Create Page With Wiki Link
-    Given I create page "Link Target Test Page" with content "Link Target Test Page"
-      And I go to the "Link Source Test Page" page with content "This is a [[Link Target Test Page|link to the test target page]] right here."
-    When I click the Link Target link
-    Then I should be on the Link Target Test Page
-      And the page content should contain "Link Target Test Page"
diff --git a/tests/browser/features/edit_page.feature b/tests/browser/features/edit_page.feature
deleted file mode 100644 (file)
index 0a5d3cd..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-@chrome @firefox @skip @vagrant
-Feature: Edit Page
-
-  Scenario: Create and edit page
-    Given I go to the "Editing Test Page" page with content "This is a page to test editing"
-    When I click Edit
-      And I edit the page with "Edited and a random string"
-      And I click Preview
-      And I click Show Changes
-      And I save the edit
-    Then the edited page content should contain "Edited and a random string"
diff --git a/tests/browser/features/file.feature b/tests/browser/features/file.feature
deleted file mode 100644 (file)
index 0b59c88..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-@chrome @firefox @vagrant
-Feature: File
-
- Scenario: Anonymous goes to file that does not exist
-   Given I am at file that does not exist
-   Then page should show that no such file exists
-
- Scenario: Logged-in user goes to file that does not exist
-   Given I am logged in
-     And I am at file that does not exist
-   Then page should show that no such file exists
diff --git a/tests/browser/features/login.feature b/tests/browser/features/login.feature
deleted file mode 100644 (file)
index 8922234..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-@chrome @firefox @vagrant
-Feature: Log in
-
-  Background:
-    Given I am at Log in page
-
-  Scenario: Go to Log in page
-    Then Username element should be there
-      And Password element should be there
-      And Log in element should be there
-
-  Scenario: Log in without entering credentials
-    When I log in without entering credentials
-    Then error message should be displayed for username
-
-  Scenario: Log in without entering password
-    When I log in without entering password
-    Then error message should be displayed for password
-
-  Scenario: Log in with incorrect username
-    When I log in with incorrect username
-    Then error box should be visible
-
-  Scenario: Log in with incorrect password
-    When I log in with incorrect password
-    Then error box should be visible
-
-  Scenario: Log in with valid credentials
-    When I log in
-    Then error box should not be visible
diff --git a/tests/browser/features/main_page_links.feature b/tests/browser/features/main_page_links.feature
deleted file mode 100644 (file)
index 1f3621b..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-@chrome @firefox @vagrant
-Feature: Main Page View History Links
-
-  Background:
-  Given I open the main wiki URL
-
-  Scenario: Main Page View History links exist
-    Then I should see a link for View History
-
-  Scenario: Main Page Sidebar Links
-    Then I should see a link for Recent changes
-      And I should see a link for Random page
-      And I should see a link for Help
-      And I should see a link for What links here
-      And I should see a link for Related changes
-      And I should see a link for Special pages
-      And I should see a link for Printable version
-      And I should see a link for Permanent link
-      And I should see a link for Page information
diff --git a/tests/browser/features/preferences.feature b/tests/browser/features/preferences.feature
deleted file mode 100644 (file)
index 23663c2..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-@chrome @firefox @vagrant
-Feature: Preferences
-
-  Scenario: Preferences Appearance
-    Given I am logged in
-    When I navigate to Preferences
-      And I click Appearance
-    Then I can select skin Vector
-      And I can select image size
-      And I can select thumbnail size
-      And I can select Threshold for stub link
-      And I can select underline preferences
-      And I have advanced options checkboxes
-      And I can click Save
-      And I can restore default settings
-      And I can select date format
-      And I can see time offset section
-      And I can see local time
-      And I can select my time zone
-
-  Scenario: Preferences Editing
-    Given I am logged in
-    When I navigate to Preferences
-      And I click Editing
-    Then I can select edit area font style
-      And I can select section editing via edit links
-      And I can select section editing by right clicking
-      And I can select section editing by double clicking
-      And I can select to prompt me when entering a blank edit summary
-      And I can select to warn me when I leave an edit page with unsaved changes
-      And I can select show edit toolbar
-      And I can select show preview on first edit
-      And I can select show preview before edit box
-      And I can select live preview
-
-  Scenario: Preferences User profile
-    Given I am logged in
-    When I navigate to Preferences
-      And I click User profile
-    Then I can see my Basic informations
-      And I can change my language
-      And I can change my gender
-      And I can see my signature
-      And I can change my signature
-      And I can see my email
-      And I can click Save
-      And I can restore default settings
diff --git a/tests/browser/features/step_definitions/create_account_steps.rb b/tests/browser/features/step_definitions/create_account_steps.rb
deleted file mode 100644 (file)
index d9b4f52..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-Given(/^I go to Create account page at (.+)$/) do |path|
-  visit(CreateAccountPage, using_params: { page_title: path })
-end
-
-Then(/^form has Create account button$/) do
-  expect(on(CreateAccountPage).create_account_element).to exist
-end
-
-When(/^I submit the form$/) do
-  on(CreateAccountPage).create_account
-end
-
-Then(/^an error message is displayed$/) do
-  expect(on(CreateAccountPage).error_message_element).to exist
-end
diff --git a/tests/browser/features/step_definitions/create_and_follow_wiki_link_steps.rb b/tests/browser/features/step_definitions/create_and_follow_wiki_link_steps.rb
deleted file mode 100644 (file)
index 504d345..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-Given(/^I go to the "(.+)" page with content "(.+)"$/) do |page_title, page_content|
-  @wikitext = page_content
-  api.create_page page_title, page_content
-  step "I am on the #{page_title} page"
-end
-
-Given(/^I am on the (.+) page$/) do |article|
-  article = article.gsub(/ /, '_')
-  visit(ZtargetPage, using_params: { article_name: article })
-end
-
-Given(/^I create page "(.*?)" with content "(.*?)"$/) do |page_title, page_content|
-  api.create_page page_title, page_content
-end
-
-When(/^I click the Link Target link$/) do
-  on(ZtargetPage).link_target_page_link
-end
-
-Then(/^I should be on the Link Target Test Page$/) do
-  expect(@browser.url).to match /Link_Target_Test_Page/
-end
-
-Then(/^the page content should contain "(.*?)"$/) do |content|
-  expect(on(ZtargetPage).page_content).to match content
-end
diff --git a/tests/browser/features/step_definitions/edit_page_steps.rb b/tests/browser/features/step_definitions/edit_page_steps.rb
deleted file mode 100644 (file)
index 0e0aeb1..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-When(/^I click Edit$/) do
-  on(MainPage).edit_link
-end
-
-When(/^I click Preview$/) do
-  on(EditPage).preview_button
-end
-
-When(/^I click Show Changes$/) do
-  on(EditPage).show_changes_button
-end
-
-When(/^I edit the page with "(.*?)"$/) do |edit_content|
-  on(EditPage).edit_page_content_element.send_keys(edit_content + @random_string)
-end
-
-When(/^I save the edit$/) do
-  on(EditPage).save_button
-end
-
-Then(/^the edited page content should contain "(.*?)"$/) do |content|
-  expect(on(MainPage).page_content).to match(content + @random_string)
-end
diff --git a/tests/browser/features/step_definitions/file_steps.rb b/tests/browser/features/step_definitions/file_steps.rb
deleted file mode 100644 (file)
index 15069b2..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-Given(/^I am at file that does not exist$/) do
-  visit(FileDoesNotExistPage, using_params: { page_name: @random_string })
-end
-
-Then(/^page should show that no such file exists$/) do
-  expect(on(FileDoesNotExistPage).file_does_not_exist_message_element).to be_visible
-end
diff --git a/tests/browser/features/step_definitions/login_steps.rb b/tests/browser/features/step_definitions/login_steps.rb
deleted file mode 100644 (file)
index c13279e..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-Given(/^I am at Log in page$/) do
-  visit LoginPage
-end
-
-When(/^I log in$/) do
-  on(LoginPage).login_with(user, password, false)
-end
-
-When(/^I log in with incorrect password$/) do
-  on(LoginPage).login_with(user, 'incorrect password', false)
-end
-
-When(/^I log in with incorrect username$/) do
-  on(LoginPage).login_with('incorrect username', password, false)
-end
-
-When(/^I log in without entering credentials$/) do
-  on(LoginPage).login_with('', '', false)
-end
-
-When(/^I log in without entering password$/) do
-  on(LoginPage).login_with(user, '', false)
-end
-
-Then(/^error box should be visible$/) do
-  expect(on(LoginPage).error_message_element).to exist
-end
-
-Then(/^error box should not be visible$/) do
-  expect(on(LoginPage).error_message_element).not_to exist
-end
-
-Then(/^error message should be displayed for username$/) do
-  expect(on(LoginPage).username_error_element).to exist
-end
-
-Then(/^error message should be displayed for password$/) do
-  expect(on(LoginPage).password_error_element).to exist
-end
-
-Then(/^feedback should be (.+)$/) do |feedback|
-  on(LoginPage) do |page|
-    page.feedback_element.click
-    expect(page.feedback).to match Regexp.escape(feedback)
-  end
-end
-
-Then(/^Log in element should be there$/) do
-  expect(on(LoginPage).login_element).to exist
-end
-
-Then(/^main page should open$/) do
-  expect(@browser.url).to eq on(MainPage).class.url
-end
-
-Then(/^Password element should be there$/) do
-  expect(on(LoginPage).password_element).to exist
-end
-
-Then(/^there should be a link to (.+)$/) do |text|
-  expect(on(LoginPage).username_displayed_element.text).to eq text
-end
-
-Then(/^Username element should be there$/) do
-  expect(on(LoginPage).username_element).to exist
-end
diff --git a/tests/browser/features/step_definitions/main_page_links_steps.rb b/tests/browser/features/step_definitions/main_page_links_steps.rb
deleted file mode 100644 (file)
index 7f588c0..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-Given(/^I open the main wiki URL$/) do
-  visit(MainPage)
-end
-
-Then(/^I should see a link for View History$/) do
-  expect(on(MainPage).view_history_link_element).to be_visible
-end
-
-Then(/^I should see a link for Edit$/) do
-  expect(on(MainPage).edit_link_element).to be_visible
-end
-
-Then(/^I should see a link for Recent changes$/) do
-  expect(on(MainPage).recent_changes_link_element).to be_visible
-end
-
-Then(/^I should see a link for Random page$/) do
-  expect(on(MainPage).random_page_link_element).to be_visible
-end
-
-Then(/^I should see a link for Help$/) do
-  expect(on(MainPage).help_link_element).to be_visible
-end
-
-Then(/^I should see a link for What links here$/) do
-  expect(on(MainPage).what_links_here_link_element).to be_visible
-end
-
-Then(/^I should see a link for Related changes$/) do
-  expect(on(MainPage).related_changes_link_element).to be_visible
-end
-
-Then(/^I should see a link for Special pages$/) do
-  expect(on(MainPage).special_pages_link_element).to be_visible
-end
-
-Then(/^I should see a link for Printable version$/) do
-  expect(on(MainPage).printable_version_link_element).to be_visible
-end
-
-Then(/^I should see a link for Permanent link$/) do
-  expect(on(MainPage).permanent_link_link_element).to be_visible
-end
-
-Then(/^I should see a link for Page information$/) do
-  expect(on(MainPage).page_information_link_element).to be_visible
-end
diff --git a/tests/browser/features/step_definitions/preferences_appearance_steps.rb b/tests/browser/features/step_definitions/preferences_appearance_steps.rb
deleted file mode 100644 (file)
index b58f7a4..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-When(/^I click Appearance$/) do
-  visit(PreferencesPage).appearance_link_element.click
-end
-
-When(/^I navigate to Preferences$/) do
-  visit(PreferencesPage)
-end
-
-Then(/^I can click Save$/) do
-  expect(on(PreferencesPage).save_button_element).to exist
-end
-
-Then(/^I can restore default settings$/) do
-  expect(on(PreferencesAppearancePage).restore_default_link_element).to exist
-end
-
-Then(/^I can see local time$/) do
-  expect(on(PreferencesAppearancePage).local_time_span_element).to exist
-end
-
-Then(/^I can see time offset section$/) do
-  expect(on(PreferencesAppearancePage).time_offset_table_element).to be_visible
-end
-
-Then(/^I can select date format$/) do
-  on(PreferencesAppearancePage) do |page|
-    expect(page.no_preference_radio_element).to exist
-    expect(page.mo_day_year_radio_element).to exist
-    expect(page.day_mo_year_radio_element).to exist
-    expect(page.year_mo_day_radio_element).to exist
-    expect(page.iso_8601_radio_element).to exist
-  end
-end
-
-Then(/^I can select image size$/) do
-  expect(on(PreferencesAppearancePage).size_select_element).to exist
-end
-
-Then(/^I can select my time zone$/) do
-  on(PreferencesAppearancePage) do |page|
-    expect(page.time_offset_select_element).to exist
-    expect(page.other_offset_element).to exist
-  end
-end
-
-Then(/^I can select skin Vector$/) do
-  on(PreferencesAppearancePage) do |page|
-    expect(page.vector_element).to exist
-  end
-end
-
-Then(/^I can select Threshold for stub link$/) do
-  expect(on(PreferencesAppearancePage).threshold_select_element).to exist
-end
-
-Then(/^I can select thumbnail size$/) do
-  expect(on(PreferencesAppearancePage).thumb_select_element).to exist
-end
-
-Then(/^I can select underline preferences$/) do
-  expect(on(PreferencesAppearancePage).underline_select_element).to exist
-end
-
-Then(/^I have advanced options checkboxes$/) do
-  on(PreferencesAppearancePage) do |page|
-    expect(page.hidden_categories_check_element).to exist
-    expect(page.auto_number_check_element).to exist
-  end
-end
diff --git a/tests/browser/features/step_definitions/preferences_editing_steps.rb b/tests/browser/features/step_definitions/preferences_editing_steps.rb
deleted file mode 100644 (file)
index 96dc491..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-When(/^I click Editing$/) do
-  visit(PreferencesPage).editing_link_element.click
-end
-
-Then(/^I can select edit area font style$/) do
-  expect(on(PreferencesEditingPage).edit_area_font_style_select_element).to exist
-end
-
-Then(/^I can select live preview$/) do
-  expect(on(PreferencesEditingPage).live_preview_check_element).to exist
-end
-
-Then(/^I can select section editing by double clicking$/) do
-  expect(on(PreferencesEditingPage).edit_section_double_click_check_element).to exist
-end
-
-Then(/^I can select section editing by right clicking$/) do
-  expect(on(PreferencesEditingPage).edit_section_right_click_check_element).to exist
-end
-
-Then(/^I can select section editing via edit links$/) do
-  expect(on(PreferencesEditingPage).edit_section_edit_link_element).to exist
-end
-
-Then(/^I can select show edit toolbar$/) do
-  expect(on(PreferencesEditingPage).show_edit_toolbar_check_element).to exist
-end
-
-Then(/^I can select show preview before edit box$/) do
-  expect(on(PreferencesEditingPage).preview_on_top_check_element).to exist
-end
-
-Then(/^I can select show preview on first edit$/) do
-  expect(on(PreferencesEditingPage).preview_on_first_check_element).to exist
-end
-
-Then(/^I can select to prompt me when entering a blank edit summary$/) do
-  expect(on(PreferencesEditingPage).forced_edit_summary_check_element).to exist
-end
-
-Then(/^I can select to warn me when I leave an edit page with unsaved changes$/) do
-  expect(on(PreferencesEditingPage).unsaved_changes_check_element).to exist
-end
diff --git a/tests/browser/features/step_definitions/preferences_user_profile_steps.rb b/tests/browser/features/step_definitions/preferences_user_profile_steps.rb
deleted file mode 100644 (file)
index 6d28ce5..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-When(/^I click User profile$/) do
-  visit(PreferencesPage).user_profile_link_element.click
-end
-
-Then(/^I can change my gender$/) do
-  on(PreferencesUserProfilePage) do |page|
-    expect(page.gender_undefined_radio_element).to exist
-    expect(page.gender_male_radio_element).to exist
-    expect(page.gender_female_radio_element).to exist
-  end
-end
-
-Then(/^I can change my language$/) do
-  expect(on(PreferencesUserProfilePage).lang_select_element).to exist
-end
-
-Then(/^I can change my signature$/) do
-  expect(on(PreferencesUserProfilePage).signature_field_element).to exist
-end
-
-Then(/^I can see my Basic informations$/) do
-  expect(on(PreferencesUserProfilePage).basic_info_table_element).to exist
-end
-
-Then(/^I can see my email$/) do
-  expect(on(PreferencesUserProfilePage).email_table_element).to exist
-end
-
-Then(/^I can see my signature$/) do
-  expect(on(PreferencesUserProfilePage).signature_table_element).to exist
-end
diff --git a/tests/browser/features/step_definitions/view_history_steps.rb b/tests/browser/features/step_definitions/view_history_steps.rb
deleted file mode 100644 (file)
index d9b9381..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-When(/^I click View History$/) do
-  on(ViewHistoryPage).view_history_link
-end
-
-Then(/^I should see a link to a previous version of the page$/) do
-  expect(on(ViewHistoryPage).old_version_link_element).to be_visible
-end
diff --git a/tests/browser/features/support/env.rb b/tests/browser/features/support/env.rb
deleted file mode 100644 (file)
index c1072b2..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-require 'mediawiki_selenium/cucumber'
-require 'mediawiki_selenium/pages'
-require 'mediawiki_selenium/step_definitions'
diff --git a/tests/browser/features/support/hooks.rb b/tests/browser/features/support/hooks.rb
deleted file mode 100644 (file)
index 85309f3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-# Needed for cucumber --dry-run -f stepdefs
-require 'page-object'
diff --git a/tests/browser/features/support/pages/create_account_page.rb b/tests/browser/features/support/pages/create_account_page.rb
deleted file mode 100644 (file)
index de12aee..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-class CreateAccountPage
-  include PageObject
-
-  page_url '<%=params[:page_title]%>'
-
-  button(:create_account, id: 'wpCreateaccount')
-  element(:error_message, css: 'input#wpName2:required:invalid')
-end
diff --git a/tests/browser/features/support/pages/edit_page.rb b/tests/browser/features/support/pages/edit_page.rb
deleted file mode 100644 (file)
index b0f6bff..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-class EditPage
-  include PageObject
-
-  text_area(:edit_page_content, id: 'wpTextbox1')
-  button(:preview_button, id: 'wpPreview')
-  button(:show_changes_button, id: 'wpDiff')
-  button(:save_button, id: 'wpSave')
-end
diff --git a/tests/browser/features/support/pages/file_does_not_exist_page.rb b/tests/browser/features/support/pages/file_does_not_exist_page.rb
deleted file mode 100644 (file)
index 632e303..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-class FileDoesNotExistPage
-  include PageObject
-
-  page_url 'File:<%=params[:page_name]%>'
-
-  div(:file_does_not_exist_message, id: 'mw-imagepage-nofile')
-end
diff --git a/tests/browser/features/support/pages/login_page.rb b/tests/browser/features/support/pages/login_page.rb
deleted file mode 100644 (file)
index 32fc2bb..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-require 'page-object'
-
-class LoginPage
-  include PageObject
-
-  element(:error_message, css: 'div#userloginForm div.error')
-  element(:password_error, css: 'input#wpPassword1:required:invalid')
-  element(:username_error, css: 'input#wpName1:required:invalid')
-end
diff --git a/tests/browser/features/support/pages/main_page.rb b/tests/browser/features/support/pages/main_page.rb
deleted file mode 100644 (file)
index 3092ab5..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-class MainPage
-  include PageObject
-
-  page_url ''
-
-  a(:edit_link, css: '#ca-edit a')
-  li(:help_link, id: 'n-help')
-  div(:page_content, id: 'content')
-  li(:page_information_link, id: 't-info')
-  li(:permanent_link_link, id: 't-permalink')
-  a(:printable_version_link, css: '#t-print a')
-  li(:random_page_link, id: 'n-randompage')
-  li(:recent_changes_link, id: 'n-recentchanges')
-  li(:related_changes_link, id: 't-recentchangeslinked')
-  li(:special_pages_link, id: 't-specialpages')
-  a(:view_history_link, css: '#ca-history a')
-  li(:what_links_here_link, id: 't-whatlinkshere')
-end
diff --git a/tests/browser/features/support/pages/preferences_appearance_page.rb b/tests/browser/features/support/pages/preferences_appearance_page.rb
deleted file mode 100644 (file)
index c871e64..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-class PreferencesAppearancePage
-  include PageObject
-
-  page_url 'Special:Preferences#mw-prefsection-rendering'
-
-  checkbox(:auto_number_check, id: 'mw-input-wpnumberheadings')
-  radio_button(:day_mo_year_radio, id: 'mw-input-wpdate-dmy')
-  checkbox(:dont_show_aft_check, id: 'mw-input-wparticlefeedback-disable')
-  checkbox(:exclude_from_experiments_check, id: 'mw-input-wpvector-noexperiments')
-  checkbox(:hidden_categories_check, id: 'mw-input-wpshowhiddencats')
-  radio_button(:iso_8601_radio, id: 'mw-input-wpdate-ISO_8601')
-  span(:local_time_span, id: 'wpLocalTime')
-  radio_button(:mo_day_year_radio, id: 'mw-input-wpdate-mdy')
-  radio_button(:no_preference_radio, id: 'mw-input-wpdate-default')
-  text_field(:other_offset, id: 'mw-input-wptimecorrection-other')
-  a(:restore_default_link, id: 'mw-prefs-restoreprefs')
-  select_list(:size_select, id: 'mw-input-wpimagesize')
-  select_list(:threshold_select, id: 'mw-input-wpstubthreshold')
-  select_list(:time_offset_select, id: 'mw-input-wptimecorrection')
-  table(:time_offset_table, id: 'mw-htmlform-timeoffset')
-  select_list(:thumb_select, id: 'mw-input-wpthumbsize')
-  select_list(:underline_select, id: 'mw-input-wpunderline')
-  radio_button(:vector, id: 'mw-input-wpskin-vector')
-  radio_button(:year_mo_day_radio, id: 'mw-input-wpdate-ymd')
-end
diff --git a/tests/browser/features/support/pages/preferences_editing_page.rb b/tests/browser/features/support/pages/preferences_editing_page.rb
deleted file mode 100644 (file)
index 3b54d45..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-class PreferencesEditingPage
-  include PageObject
-
-  page_url 'Special:Preferences#mw-prefsection-rendering'
-
-  select_list(:edit_area_font_style_select, id: 'mw-input-wpeditfont')
-  checkbox(:edit_section_double_click_check, id: 'mw-input-wpeditondblclick')
-  checkbox(:edit_section_edit_link, id: 'mw-input-wpeditsectiononrightclick')
-  checkbox(:edit_section_right_click_check, id: 'mw-input-wpeditsectiononrightclick')
-  checkbox(:forced_edit_summary_check, id: 'mw-input-wpforceeditsummary')
-  checkbox(:live_preview_check, id: 'mw-input-wpuselivepreview')
-  checkbox(:preview_on_first_check, id: 'mw-input-wppreviewonfirst')
-  checkbox(:preview_on_top_check, id: 'mw-input-wppreviewontop')
-  checkbox(:show_edit_toolbar_check, id: 'mw-input-wpshowtoolbar')
-  checkbox(:unsaved_changes_check, id: 'mw-input-wpuseeditwarning')
-end
diff --git a/tests/browser/features/support/pages/preferences_page.rb b/tests/browser/features/support/pages/preferences_page.rb
deleted file mode 100644 (file)
index 1d836ea..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-class PreferencesPage
-  include PageObject
-
-  page_url 'Special:Preferences'
-
-  a(:appearance_link, id: 'preftab-rendering')
-  a(:editing_link, id: 'preftab-editing')
-  a(:user_profile_link, id: 'preftab-personal')
-  button(:save_button, id: 'prefcontrol')
-end
diff --git a/tests/browser/features/support/pages/preferences_user_profile_page.rb b/tests/browser/features/support/pages/preferences_user_profile_page.rb
deleted file mode 100644 (file)
index ab5eb93..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-class PreferencesUserProfilePage
-  include PageObject
-
-  page_url 'Special:Preferences#mw-prefsection-personal'
-
-  table(:basic_info_table, id: 'mw-htmlform-info')
-  link(:change_password_link, text: 'Change password')
-  table(:email_table, id: 'mw-htmlform-email')
-  radio_button(:gender_female_radio, id: 'mw-input-wpgender-male')
-  radio_button(:gender_male_radio, id: 'mw-input-wpgender-female')
-  radio_button(:gender_undefined_radio, id: 'mw-input-wpgender-unknown')
-  select_list(:lang_select, id: 'mw-input-wplanguage')
-  checkbox(:remember_password_check, id: 'mw-input-wprememberpassword')
-  text_field(:signature_field, id: 'mw-input-wpnickname')
-  table(:signature_table, id: 'mw-htmlform-signature')
-end
diff --git a/tests/browser/features/support/pages/view_history_page.rb b/tests/browser/features/support/pages/view_history_page.rb
deleted file mode 100644 (file)
index ee4d757..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-class ViewHistoryPage
-  include PageObject
-
-  a(:view_history_link, css: '#ca-history a')
-  a(:old_version_link, css: '#pagehistory a.mw-changeslist-date')
-end
diff --git a/tests/browser/features/support/pages/ztargetpage.rb b/tests/browser/features/support/pages/ztargetpage.rb
deleted file mode 100644 (file)
index da789e5..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-class ZtargetPage < MainPage
-  include PageObject
-
-  page_url '<%=params[:article_name]%>'
-
-  a(:link_target_page_link, text: 'link to the test target page')
-end
diff --git a/tests/browser/features/view_history.feature b/tests/browser/features/view_history.feature
deleted file mode 100644 (file)
index 8e72bcf..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-@chrome @firefox @skip @vagrant
-Feature: View History
-
-  Scenario: Edit page and view history
-    Given I go to the "History Test Page" page with content "This is a page that will have history"
-    When I click Edit
-      And I edit the page with "Edited and a random string"
-      And I save the edit
-      And the edited page content should contain "Edited and a random string"
-      And I click View History
-    Then I should see a link to a previous version of the page
index 2a4c43f..3de3ba7 100644 (file)
@@ -64,7 +64,6 @@ $wgAutoloadClasses += [
 
        # tests/phpunit/includes
        'RevisionStorageTest' => "$testDir/phpunit/includes/RevisionStorageTest.php",
-       'TestingAccessWrapper' => "$testDir/phpunit/includes/TestingAccessWrapper.php",
        'TestLogger' => "$testDir/phpunit/includes/TestLogger.php",
 
        # tests/phpunit/includes/api
@@ -171,4 +170,4 @@ $wgAutoloadClasses += [
        'ParserTestFileSuite' => "$testDir/phpunit/suites/ParserTestFileSuite.php",
        'ParserTestTopLevelSuite' => "$testDir/phpunit/suites/ParserTestTopLevelSuite.php",
 ];
-// @codingStandardsIgnoreEnd
\ No newline at end of file
+// @codingStandardsIgnoreEnd
index 6d1fdf5..5457696 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 class MWHttpRequestTestCase extends PHPUnit_Framework_TestCase {
        protected static $httpEngine;
        protected $oldHttpEngine;
index f100411..f44b0d5 100644 (file)
@@ -747,6 +747,10 @@ class ParserTestRunner {
                $user = $context->getUser();
                $options = ParserOptions::newFromContext( $context );
 
+               if ( !isset( $opts['wrap'] ) ) {
+                       $options->setWrapOutputClass( false );
+               }
+
                if ( isset( $opts['tidy'] ) ) {
                        if ( !$this->tidySupport->isEnabled() ) {
                                $this->recorder->skipped( $test, 'tidy extension is not installed' );
index e12c136..44bcdff 100644 (file)
@@ -32,6 +32,7 @@
 # local         format section links in edit comment text as local links
 # notoc         disable table of contents
 # thumbsize=NNN set the default thumb size to NNNpx for this test
+# wrap          include the normal wrapper <div class="mw-parser-output"> (since 1.30)
 #
 # You can also set the following parser properties via test options:
 #  wgEnableUploads, wgAllowExternalImages, wgMaxTocLevel,
@@ -2310,7 +2311,7 @@ Entities inside <pre>
 <pre>Foo &#8594;bar</pre>
 
 !! html/parsoid
-<pre about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"#tag:pre","function":"#tag"},"params":{"1":{"wt":"Foo &lt;nowiki>&amp;rarr;bar&lt;/nowiki>"}},"i":0}}]}'>Foo <span typeof="mw:Entity">→</span>bar</pre>
+<pre about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"#tag:pre","function":"tag"},"params":{"1":{"wt":"Foo &lt;nowiki>&amp;rarr;bar&lt;/nowiki>"}},"i":0}}]}'>Foo <span typeof="mw:Entity">→</span>bar</pre>
 !! end
 
 ## Don't expect this to rt, Parsoid drops the unmatched closing pre tags that
@@ -2735,6 +2736,39 @@ Templates: Don't strip whitespace from positional-param values
 </pre>
 !! end
 
+!! test
+Templates: Don't recognize targets split by newlines
+!! options
+parsoid=wt2html
+!! wikitext
+{{ech
+o|foo}}
+!! html/php
+<p>{{ech
+o|foo}}
+</p>
+!! html/parsoid
+<p>{{ech
+o|foo}}</p>
+!! end
+
+!! test
+Templates: Recognize targets when newlines and comments don't split the target
+!! options
+parsoid=wt2html
+!! wikitext
+{{  
+ <!--X--> ech<!--X-->o<!--X-->  
+   <!--X-->   <!--X-->
+
+ |foo}}
+!! html/php
+<p>foo
+</p>
+!! html/parsoid
+<p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"ech&lt;!--X-->o&lt;!--X-->  \n   &lt;!--X-->   &lt;!--X-->\n\n ","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</p>
+!! end
+
 !! test
 Templates: Handle empty comment-and-ws-only lines correctly
 !! wikitext
@@ -5271,6 +5305,64 @@ Bracketed external links with template-generated invalid target
 </p>
 !! end
 
+# wt2html only because Parsoid would want to add <nowiki>s coming from html
+!! test
+Broken wikilinks (but not external links) prevent templates from closing
+!! options
+parsoid=wt2html
+!! wikitext
+[http://example.com x
+
+{{echo|[http://example.com x}}
+
+[[Foo
+
+{{echo|[[Foo}}
+!! html/php
+<p>[<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> x
+</p><p>[<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> x
+</p><p>[[Foo
+</p><p>{{echo|[[Foo}}
+</p>
+!! html/parsoid
+<p>[<a rel="mw:ExtLink" href="http://example.com">http://example.com</a> x</p>
+<p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[http://example.com x"}},"i":0}}]}'>[<a rel="mw:ExtLink" href="http://example.com">http://example.com</a> x</p>
+<p>[[Foo</p>
+<p>{{echo|[[Foo}}</p>
+!! end
+
+!! test
+Wikilinks with embedded newlines are not broken
+!! wikitext
+{{echo|[[ Foo
+B
+C]]}}
+!! html/php
+<p>[[ Foo
+B
+C]]
+</p>
+!! html/parsoid
+<p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[ Foo\nB\nC]]"}},"i":0}}]}'>[[ Foo B C]]</p>
+!! end
+
+!! test
+Broken templates
+!! options
+parsoid=wt2html
+!! wikitext
+{{echo|[[Foo|}}]]
+
+[[Foo|{{echo|]]}}
+!! html/php
+<p>{{echo|<a href="/wiki/Foo" title="Foo">}}</a>
+</p><p>[[Foo|]]
+</p>
+!! html/parsoid
+<p>{{echo|<a rel="mw:WikiLink" href="./Foo" title="Foo">}}</a></p>
+<p>[[Foo|<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"]]"}},"i":0}}]}'>]]</span></p>
+!! end
+
 !! test
 T4702: Mismatched <i>, <b> and <a> tags are invalid
 !! wikitext
@@ -7847,7 +7939,7 @@ File containing double quotes and spaces
 !! wikitext
 [[File:Cool "Gator".png]]
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[]}' data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}]}'><a href="./File:Cool_%22Gator%22.png" data-parsoid='{"a":{"href":"./File:Cool_%22Gator%22.png"},"sa":{"href":"File:Cool \"Gator\".png"}}'><img resource='./File:Cool_"Gator".png' src="./Special:FilePath/Cool_%22Gator%22.png" height="220" width="220" data-parsoid='{"a":{"resource":"./File:Cool_\"Gator\".png","height":"220","width":"220","src":"./Special:FilePath/Cool_%22Gator%22.png"},"sa":{"resource":"File:Cool \"Gator\".png","src":"./Special:FilePath/Cool_\"Gator\".png"}}'/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[]}' data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}'><a href="./File:Cool_%22Gator%22.png" data-parsoid='{"a":{"href":"./File:Cool_%22Gator%22.png"},"sa":{"href":"File:Cool \"Gator\".png"}}'><img resource='./File:Cool_"Gator".png' src="./Special:FilePath/Cool_%22Gator%22.png" height="220" width="220" data-parsoid='{"a":{"resource":"./File:Cool_\"Gator\".png","height":"220","width":"220","src":"./Special:FilePath/Cool_%22Gator%22.png"},"sa":{"resource":"File:Cool \"Gator\".png","src":"./Special:FilePath/Cool_\"Gator\".png"}}'/></a></span></p>
 !! end
 
 !! test
@@ -7895,7 +7987,7 @@ Link with double quotes in title part (literal) and alternate part (interpreted)
 </p><p><a href="/index.php?title=%27%27Pentecoste%27%27&amp;action=edit&amp;redlink=1" class="new" title="''Pentecoste'' (page does not exist)"><i>Pentecoste</i></a>
 </p>
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}]}'><a href="./File:Denys_Savchenko_''Pentecoste''.jpg"><img resource="./File:Denys_Savchenko_''Pentecoste''.jpg" src="./Special:FilePath/Denys_Savchenko_''Pentecoste''.jpg" height="220" width="220"/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}'><a href="./File:Denys_Savchenko_''Pentecoste''.jpg"><img resource="./File:Denys_Savchenko_''Pentecoste''.jpg" src="./Special:FilePath/Denys_Savchenko_''Pentecoste''.jpg" height="220" width="220"/></a></span></p>
 <p><a rel="mw:WikiLink" href="./''Pentecoste''" title="''Pentecoste''">''Pentecoste''</a></p>
 <p><a rel="mw:WikiLink" href="./''Pentecoste''" title="''Pentecoste''">Pentecoste</a></p>
 <p><a rel="mw:WikiLink" href="./''Pentecoste''" title="''Pentecoste''"><i>Pentecoste</i></a></p>
@@ -7915,10 +8007,10 @@ Broken image links with HTML captions (T41700)
 <a href="/index.php?title=Special:Upload&amp;wpDestFile=Nonexistent" class="new" title="File:Nonexistent">abc</a>
 </p>
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"&lt;script>&lt;/script>"}]}' data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"&amp;lt;script>&amp;lt;/script>"}'><a href="./File:Nonexistent" data-parsoid='{"a":{"href":"./File:Nonexistent"},"sa":{}}'><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220" data-parsoid='{"a":{"resource":"./File:Nonexistent","height":"220","width":"220"},"sa":{"resource":"File:Nonexistent"}}'/></a></span>
-<span typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"100x100px"},{"ck":"caption","ak":"&lt;script>&lt;/script>"}]}' data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"&amp;lt;script>&amp;lt;/script>"}'><a href="./File:Nonexistent" data-parsoid='{"a":{"href":"./File:Nonexistent"},"sa":{}}'><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="100" width="100" data-parsoid='{"a":{"resource":"./File:Nonexistent","height":"100","width":"100"},"sa":{"resource":"File:Nonexistent"}}'/></a></span>
-<span class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"&amp;lt;"}]}' data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"&lt;span typeof=\"mw:Entity\" data-parsoid=&#39;{\"src\":\"&amp;amp;lt;\",\"srcContent\":\"&amp;lt;\",\"dsr\":[107,111,null,null]}&#39;>&amp;lt;&lt;/span>"}'><a href="./File:Nonexistent" data-parsoid='{"a":{"href":"./File:Nonexistent"},"sa":{}}'><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220" data-parsoid='{"a":{"resource":"./File:Nonexistent","height":"220","width":"220"},"sa":{"resource":"File:Nonexistent"}}'/></a></span>
-<span class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"a&lt;i>b&lt;/i>c"}]}' data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"a&lt;i data-parsoid=&#39;{\"stx\":\"html\",\"dsr\":[134,142,3,4]}&#39;>b&lt;/i>c"}'><a href="./File:Nonexistent" data-parsoid='{"a":{"href":"./File:Nonexistent"},"sa":{}}'><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220" data-parsoid='{"a":{"resource":"./File:Nonexistent","height":"220","width":"220"},"sa":{"resource":"File:Nonexistent"}}'/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"&lt;script>&lt;/script>"}]}' data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}],"caption":"&amp;lt;script>&amp;lt;/script>"}'><a href="./File:Nonexistent" data-parsoid='{"a":{"href":"./File:Nonexistent"},"sa":{}}'><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220" data-parsoid='{"a":{"resource":"./File:Nonexistent","height":"220","width":"220"},"sa":{"resource":"File:Nonexistent"}}'/></a></span>
+<span typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"100x100px"},{"ck":"caption","ak":"&lt;script>&lt;/script>"}]}' data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}],"caption":"&amp;lt;script>&amp;lt;/script>"}'><a href="./File:Nonexistent" data-parsoid='{"a":{"href":"./File:Nonexistent"},"sa":{}}'><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="100" width="100" data-parsoid='{"a":{"resource":"./File:Nonexistent","height":"100","width":"100"},"sa":{"resource":"File:Nonexistent"}}'/></a></span>
+<span class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"&amp;lt;"}]}' data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}],"caption":"&lt;span typeof=\"mw:Entity\" data-parsoid=&#39;{\"src\":\"&amp;amp;lt;\",\"srcContent\":\"&amp;lt;\",\"dsr\":[107,111,null,null]}&#39;>&amp;lt;&lt;/span>"}'><a href="./File:Nonexistent" data-parsoid='{"a":{"href":"./File:Nonexistent"},"sa":{}}'><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220" data-parsoid='{"a":{"resource":"./File:Nonexistent","height":"220","width":"220"},"sa":{"resource":"File:Nonexistent"}}'/></a></span>
+<span class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"a&lt;i>b&lt;/i>c"}]}' data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}],"caption":"a&lt;i data-parsoid=&#39;{\"stx\":\"html\",\"dsr\":[134,142,3,4]}&#39;>b&lt;/i>c"}'><a href="./File:Nonexistent" data-parsoid='{"a":{"href":"./File:Nonexistent"},"sa":{}}'><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220" data-parsoid='{"a":{"resource":"./File:Nonexistent","height":"220","width":"220"},"sa":{"resource":"File:Nonexistent"}}'/></a></span></p>
 !! end
 
 !! test
@@ -8209,6 +8301,21 @@ subpage
 <p><a rel="mw:WikiLink" href="./User:Test/123#a" data-parsoid='{"stx":"piped","a":{"href":"./User:Test/123#a"},"sa":{"href":"#a"}}'>b</a></p>
 !! end
 
+!! test
+Serialization of purely hash wikilink
+!! options
+title=[[User:Test/123]]
+subpage
+parsoid=html2wt
+!! html/parsoid
+<p><a href="#a">[[</a></p>
+!! wikitext
+[[#a|<nowiki>[[</nowiki>]]
+!! html/php
+<p><a href="#a">[[</a>
+</p>
+!! end
+
 !! test
 1. Interaction of linktrail and template encapsulation
 !! wikitext
@@ -10434,15 +10541,26 @@ Parsoid: Page property magic word with magic word contents
 !! wikitext
 {{DISPLAYTITLE:''{{PAGENAME}}''}}
 !! html/parsoid
-<meta property="mw:PageProp/displaytitle" content="Main Page" about="#mwt3" typeof="mw:ExpandedAttrs" data-parsoid='{"src":"{{DISPLAYTITLE:&#39;&#39;{{PAGENAME}}&#39;&#39;}}"}' data-mw='{"attribs":[[{"txt":"content"},{"html":"&lt;i data-parsoid=&#39;{\"dsr\":[15,31,2,2]}&#39;>&lt;span about=\"#mwt2\" typeof=\"mw:Transclusion\" data-parsoid=&#39;{\"pi\":[[]],\"dsr\":[17,29,null,null]}&#39; data-mw=&#39;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"PAGENAME\",\"function\":\"pagename\"},\"params\":{},\"i\":0}}]}&#39;>Main Page&lt;/span>&lt;/i>"}]]}'/>
+<meta property="mw:PageProp/displaytitle" content="Main Page" about="#mwt3" typeof="mw:ExpandedAttrs" data-parsoid='{"src":"{{DISPLAYTITLE:&#39;&#39;{{PAGENAME}}&#39;&#39;}}"}' data-mw='{"attribs":[[{"txt":"content"},{"html":"DISPLAYTITLE:&lt;i data-parsoid=&#39;{\"dsr\":[15,31,2,2]}&#39;>&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=&#39;{\"pi\":[[]],\"dsr\":[17,29,null,null]}&#39; data-mw=&#39;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"PAGENAME\",\"function\":\"pagename\"},\"params\":{},\"i\":0}}]}&#39;>Main Page&lt;/span>&lt;/i>"}]]}'/>
 !! end
 
+# NOTE: mw:ExpandedAttrs is not the best typeof here. mw:Transclusion is better.
+# But, this is a limitation of our representation and is documented in
+# TemplateHandler.js in processSpecialMagicWord
 !! test
 Parsoid: Template-generated DISPLAYTITLE
 !! wikitext
 {{{{echo|DISPLAYTITLE}}:Foo}}
+!! options
+showtitle
+!! config
+wgAllowDisplayTitle=true
+wgRestrictDisplayTitle=false
+!! html/php
+Foo
+
 !! html/parsoid
-<meta property="mw:PageProp/displaytitle" content="Foo" about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"{{echo|DISPLAYTITLE}}:Foo"},"params":{},"i":0}}]}'/>
+<meta property="mw:PageProp/displaytitle" content="Foo" about="#mwt1" typeof="mw:ExpandedAttrs" data-parsoid='{"pi":[[]]}' data-mw='{"attribs":[[{"txt":"content"},{"html":"&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=&#39;{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[2,23,null,null]}&#39; data-mw=&#39;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"DISPLAYTITLE\"}},\"i\":0}}]}&#39;>DISPLAYTITLE&lt;/span>:Foo"}]]}'/>
 !! end
 
 !! test
@@ -11005,6 +11123,39 @@ Template with complex template as argument
 </p>
 !! end
 
+!! test
+Templates with templated name
+!! wikitext
+{{{{echo|echo}}|foo}}
+{{{{echo|inner list}} }}
+!! html
+<p>foo
+</p>
+<ul><li> item 1</li></ul>
+
+!! html/parsoid
+<p about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"{{echo|echo}}","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</p>
+<ul about="#mwt4" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"{{echo|inner list}} ","href":"./Template:Inner_list"},"params":{},"i":0}}]}'><li> item 1</li></ul>
+!! end
+
+# Parsoid markup is deliberate "broken". This is an edge case.
+# See long comment in TemplateHandler.js:convertAttribsToString.
+!! test
+Templates with invalid templated targets
+!! wikitext
+{{echo
+{{echo|foo}}
+}}
+!! html/php
+<p>{{echo
+foo
+}}
+</p>
+!! html/parsoid
+<p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo\n{{echo|foo}}\n"},"params":{},"i":0}}]}'>{{echo
+foo }}</p>
+!! end
+
 !! test
 Template with thumb image (with link in description)
 !! wikitext
@@ -11020,7 +11171,7 @@ This is a test template with parameter <div class="thumb tright"><div class="thu
 </div>
 </div>
 !! html/parsoid
-<p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"paramtest","href":"./Template:Paramtest"},"params":{"param":{"wt":"[[Image:noimage.png|thumb|[[no link|link]] [[no link|caption]]]]"}},"i":0}}]}'>This is a test template with parameter </p><figure class="mw-default-size" typeof="mw:Error mw:Image/Thumb" about="#mwt1" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}]}'><a href="./File:Noimage.png" ><img resource="./File:Noimage.png" src="./Special:FilePath/Noimage.png" height="220" width="220"/></a><figcaption><a rel="mw:WikiLink" href="./No_link" title="No link">link</a> <a rel="mw:WikiLink" href="./No_link" title="No link">caption</a></figcaption></figure>
+<p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"paramtest","href":"./Template:Paramtest"},"params":{"param":{"wt":"[[Image:noimage.png|thumb|[[no link|link]] [[no link|caption]]]]"}},"i":0}}]}'>This is a test template with parameter </p><figure class="mw-default-size" typeof="mw:Error mw:Image/Thumb" about="#mwt1" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}'><a href="./File:Noimage.png" ><img resource="./File:Noimage.png" src="./Special:FilePath/Noimage.png" height="220" width="220"/></a><figcaption><a rel="mw:WikiLink" href="./No_link" title="No link">link</a> <a rel="mw:WikiLink" href="./No_link" title="No link">caption</a></figcaption></figure>
 !! end
 
 !! article
@@ -11097,7 +11248,7 @@ Don't abort table cell attribute parsing if wikilink is found in template arg
 |}
 !! html/parsoid
 <table>
-<tbody><tr><td> Test <ref about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"#tag:ref","function":"#tag"},"params":{"1":{"wt":"One two \"[[three]]\" four"}},"i":0}}]}'>One two "<a rel="mw:WikiLink" href="./Three" title="Three">three</a>" four</ref></td></tr>
+<tbody><tr><td> Test <ref about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"#tag:ref","function":"tag"},"params":{"1":{"wt":"One two \"[[three]]\" four"}},"i":0}}]}'>One two "<a rel="mw:WikiLink" href="./Three" title="Three">three</a>" four</ref></td></tr>
 </tbody></table>
 !! end
 
@@ -11252,17 +11403,23 @@ T2041: Template parameters shown as broken links
 
 !! test
 Template with targets containing wikilinks
+!! options
+parsoid=wt2html
 !! wikitext
 {{[[foo]]}}
 
 {{[[{{echo|foo}}]]}}
 
 {{{{echo|[[foo}}]]}}
-!! html
+!! html/php
 <p>{{<a href="/wiki/Foo" title="Foo">foo</a>}}
 </p><p>{{<a href="/wiki/Foo" title="Foo">foo</a>}}
 </p><p>{{[[foo}}]]
 </p>
+!! html/parsoid
+<p>{{<a rel="mw:WikiLink" href="./Foo" title="Foo">foo</a>}}</p>
+<p>{{<a typeof="mw:ExpandedAttrs" rel="mw:WikiLink" href="./Foo" title="Foo" data-mw='{"attribs":[[{"txt":"href"},{"html":"&lt;span about=\"#mwt3\" typeof=\"mw:Transclusion\" data-parsoid=&#39;{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[17,29,null,null]}&#39; data-mw=&#39;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo\"}},\"i\":0}}]}&#39;>foo&lt;/span>"}]]}'>foo</a>}}</p>
+<p>{{<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[foo}}]]"}},"i":0}}]}'>[[foo}}]]</span></p>
 !! end
 
 !! article
@@ -11713,6 +11870,326 @@ parsoid
 
 !!end
 
+###
+### Preprocessor precedence tests
+### See: https://www.mediawiki.org/wiki/Preprocessor_ABNF
+###
+##{{[[-{{{{{{[[Foo|bar}}]]}-}}}}}]]
+!! test
+Preprocessor precedence 1: link is rightmost opening
+!! wikitext
+{{[[Foo|bar}}]]
+
+But close-brace is not a valid character in a link title:
+{{[[Foo}}|bar]]
+
+However, we can still tell this was handled as a link in the preprocessor:
+{{echo|[[Foo}}|bar]]|bat}}
+!! html
+<p>{{<a href="/wiki/Foo" title="Foo">bar}}</a>
+</p><p>But close-brace is not a valid character in a link title:
+{{[[Foo}}|bar]]
+</p><p>However, we can still tell this was handled as a link in the preprocessor:
+[[Foo}}|bar]]
+</p>
+!! end
+
+!! test
+Preprocessor precedence 2: template is rightmost opening
+!! options
+language=zh
+!! wikitext
+-{{echo|foo}-}}-
+!! html
+<p>-foo}--
+</p>
+!! end
+
+!! test
+Preprocessor precedence 3: language converter is rightmost opening
+!! options
+language=zh
+!! wikitext
+{{echo|hi}}
+
+{{-{R|echo|hi}}}-
+
+[[-{R|raw]]}-
+!! html
+<p>hi
+</p><p>{{echo|hi}}
+</p><p>[[raw]]
+</p>
+!! end
+
+!! test
+Preprocessor precedence 4: left-most angle bracket
+!! options
+language=zh
+!! wikitext
+<!--{raw}-->
+!! html
+!! end
+
+!! article
+Template:Precedence5
+!! text
+{{{{{1}}}}}
+!! endarticle
+
+!! test
+Preprocessor precedence 5: tplarg takes precedence over template
+!! wikitext
+{{Precedence5|Bullet}}
+!! html
+<ul><li> Bar</li></ul>
+
+!! end
+
+!! test
+Preprocessor precedence 6: broken link is rightmost opening
+!! wikitext
+{{echo|[[Foo}}
+
+{{echo|[[Foo|bar|bat=baz}}
+!! html
+<p>{{echo|[[Foo}}
+</p><p>{{echo|[[Foo|bar|bat=baz}}
+</p>
+!! end
+
+# This next test exposes a difference between PHP and Parsoid:
+# Given [[Foo|{{echo|Bar]]x}}y]]z:
+# 1) Both PHP and Parsoid ignore the `]]` inside the `echo` in the
+# "preprocessor" stage.  The `{{echo` extends until the `x}}`, and the
+# outer `[[Foo` extends until the `y]]`
+# 2a) But then the PHP preprocessor emits `[[Foo|Bar]]xy]]z` as an
+# intermediate result (after template expansion), and link processing
+# happens on this intermediate result, which moves the wikilink
+# boundary leftward to `[[Foo|Bar]]`
+# 2b) Parsoid works in a single step, so it's going to keep the
+# wikilink as extending to the `y]]`
+# 3a) Then PHP does linktrail processing which slurps up the trailing
+# `xy` inside the link.
+# 3b) Parsoid will do linktrail processing to slurp up the trailing
+# `z` inside the link.
+# This is "correct" behavior.  Parsoid's basic worldview is that the
+# `]]` inside the template shouldn't be allowed to leak out to affect
+# the surrounding wikilink.  PHP may match Parsoid (in the future)
+# if you use {{#balance}} (T114445).
+
+!! test
+Preprocessor precedence 7: broken template is rightmost opening
+!! wikitext
+[[Foo|{{echo|Bar]]
+
+[[Foo|{{echo|Bar]]-x}}-y]]-z
+
+Careful: linktrails can move the end of the wikilink:
+[[Foo|{{echo|y']]a}}l]]l
+!! html
+<p><a href="/wiki/Foo" title="Foo">{{echo|Bar</a>
+</p><p><a href="/wiki/Foo" title="Foo">Bar</a>-x-y]]-z
+</p><p>Careful: linktrails can move the end of the wikilink:
+<a href="/wiki/Foo" title="Foo">y'al</a>]]l
+</p>
+!! end
+
+!! test
+Preprocessor precedence 8: broken language converter is rightmost opening
+!! options
+language=zh
+!! wikitext
+[[Foo-{R|raw]]
+!! html
+<p>[[Foo-{R|raw]]
+</p>
+!! end
+
+!! article
+Template:Preprocessor_precedence_9
+!! text
+;4: {{{{1}}}}
+;5: {{{{{2}}}}}
+;6: {{{{{{3}}}}}}
+;7: {{{{{{{4}}}}}}}
+!! endarticle
+
+!! test
+Preprocessor precedence 9: groups of braces
+!! wikitext
+{{Preprocessor precedence 9|Four|Bullet|1|2}}
+!! html
+<dl><dt>4</dt>
+<dd> {Four}</dd>
+<dt>5</dt>
+<dd> </dd></dl>
+<ul><li> Bar</li></ul>
+<dl><dt>6</dt>
+<dd> Four</dd>
+<dt>7</dt>
+<dd> {Bullet}</dd></dl>
+
+!! end
+
+!! article
+Template:Preprocessor_precedence_10
+!! text
+;1: -{R|raw}-
+;2: -{{Bullet}}-
+;3: -{{{1}}}-
+;4: -{{{{2}}}}-
+;5: -{{{{{3}}}}}-
+;6: -{{{{{{4}}}}}}-
+;7: -{{{{{{{5}}}}}}}-
+!! endarticle
+
+!! test
+Preprocessor precedence 10: groups of braces with leading dash
+!! options
+language=zh
+!! wikitext
+{{Preprocessor precedence 10|Three|raw2|Bullet|1|2}}
+!! html
+<dl><dt>1</dt>
+<dd> raw</dd>
+<dt>2</dt>
+<dd> -</dd></dl>
+<ul><li> Bar-</li></ul>
+<dl><dt>3</dt>
+<dd> -Three-</dd>
+<dt>4</dt>
+<dd> raw2</dd>
+<dt>5</dt>
+<dd> -</dd></dl>
+<ul><li> Bar-</li></ul>
+<dl><dt>6</dt>
+<dd> -Three-</dd>
+<dt>7</dt>
+<dd> raw2</dd></dl>
+
+!! end
+
+!! test
+Preprocessor precedence 11: found during visual diff testing
+!! wikitext
+{{#tag:span|-{{#tag:span|-{{echo|x}}}}}}
+
+{{echo|-{{echo|-{{echo|x}}}}}}
+
+{{echo|-{{echo|x}}}}
+!! html
+<p><span>-<span>-x</span></span>
+</p><p>--x
+</p><p>-x
+</p>
+!! end
+
+!! test
+Preprocessor precedence 12: broken language converter closed by brace.
+!! wikitext
+This form breaks the template, which is unfortunate:
+* {{echo|foo-{bar}bat}}
+
+But if the broken language converter markup is inside an extension
+tag, nothing bad happens:
+* <nowiki>foo-{bar}bat</nowiki>
+* {{echo|<nowiki>foo-{bar}bat</nowiki>}}
+* <pre>foo-{bar}bat</pre>
+* {{echo|<pre>foo-{bar}bat</pre>}}
+
+<tag>foo-{bar}bat</tag>
+{{echo|<tag>foo-{bar}bat</tag>}}
+
+!! html+tidy
+<p>This form breaks the template, which is unfortunate:</p>
+<ul>
+<li>{{echo|foo-{bar}bat}}</li>
+</ul>
+<p>But if the broken language converter markup is inside an extension tag, nothing bad happens:</p>
+<ul>
+<li>foo-{bar}bat</li>
+<li>foo-{bar}bat</li>
+<li>
+<pre>
+foo-{bar}bat
+</pre></li>
+<li>
+<pre>
+foo-{bar}bat
+</pre></li>
+</ul>
+<pre>
+'foo-{bar}bat'
+array (
+)
+</pre>
+<pre>
+'foo-{bar}bat'
+array (
+)
+</pre>
+!! end
+
+!! test
+Preprocessor precedence, 13: broken language converter in external link
+!! wikitext
+* [http://example.com/-{foo Example in URL]
+* [http://example.com Example in -{link} description]
+* {{echo|[http://example.com/-{foo Breaks template, however]}}
+!! html+tidy
+<ul>
+<li><a rel="nofollow" class="external text" href="http://example.com/-{foo">Example in URL</a></li>
+<li><a rel="nofollow" class="external text" href="http://example.com">Example in -{link} description</a></li>
+<li>{{echo|<a rel="nofollow" class="external text" href="http://example.com/-{foo">Breaks template, however</a>}}</li>
+</ul>
+!! end
+
+!! test
+Preprocessor precedence, 14: broken language converter in comment
+!! wikitext
+* <!--{{foo}}--> ...should be ok
+* <!---{{foo}}--> ...extra dashes
+* {{echo|foo<!-- -{bar} -->bat}} ...should be ok
+!! html+tidy
+<ul>
+<li>...should be ok</li>
+<li>...extra dashes</li>
+<li>foobat ...should be ok</li>
+</ul>
+!! end
+
+!! test
+Preprocessor precedence, 15: broken brace markup in headings
+!! wikitext
+__NOTOC__ __NOEDITSECTION__
+===1 foo[bar 1===
+1
+===2 foo[[bar 2===
+2
+===3 foo{bar 3===
+3
+===4 foo{{bar 4===
+4
+===5 foo{{{bar 5===
+5
+===6 foo-{bar 6===
+6
+!! html+tidy
+<h3><span class="mw-headline" id="1_foo.5Bbar_1">1 foo[bar 1</span></h3>
+<p>1</p>
+<h3><span class="mw-headline" id="2_foo.5B.5Bbar_2">2 foo[[bar 2</span></h3>
+<p>2</p>
+<h3><span class="mw-headline" id="3_foo.7Bbar_3">3 foo{bar 3</span></h3>
+<p>3</p>
+<h3><span class="mw-headline" id="4_foo.7B.7Bbar_4">4 foo{{bar 4</span></h3>
+<p>4</p>
+<h3><span class="mw-headline" id="5_foo.7B.7B.7Bbar_5">5 foo{{{bar 5</span></h3>
+<p>5</p>
+<h3><span class="mw-headline" id="6_foo-.7Bbar_6">6 foo-{bar 6</span></h3>
+<p>6</p>
+!! end
+
 ###
 ### Token Stream Patcher tests
 ###
@@ -13111,6 +13588,17 @@ pst
 [[:Bar:Article (context),context|Article]]
 !! end
 
+!! test
+Parsoid: backwards pipe trick
+!! wikitext
+[[|'''bar''']]
+!! html/php
+<p>[[|<b>bar</b>]]
+</p>
+!! html/parsoid
+<p>[[|<b>bar</b>]]</p>
+!! end
+
 !! test
 pre-save transform: trim trailing empty lines
 !! options
@@ -14317,7 +14805,7 @@ Entities in file name and attributes
 <p><a href="/index.php?title=Special:Upload&amp;wpDestFile=7%25_solution.gif" class="new" title="File:7% solution.gif">7% solution</a>
 </p>
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"bogus","ak":"manualthumb=7%25 solution.gif"},{"ck":"link","ak":"link=7%25 solution"},{"ck":"caption","ak":"[[7%25 solution]]"}]}' data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"&lt;a rel=\"mw:WikiLink\" href=\"./7%25_solution\" title=\"7% solution\" data-parsoid=&#39;{\"stx\":\"simple\",\"a\":{\"href\":\"./7%25_solution\"},\"sa\":{\"href\":\"7%25 solution\"},\"dsr\":[74,91,2,2]}&#39;>7% solution&lt;/a>"}'><a href="./7%25_solution" data-parsoid='{"a":{"href":"./7%25_solution"},"sa":{"href":"link=7%25 solution"}}'><img resource="./File:7%25_solution.gif" src="./Special:FilePath/7%25_solution.gif" height="220" width="220" data-parsoid='{"a":{"resource":"./File:7%25_solution.gif","height":"220","width":"220"},"sa":{"resource":"File:7%25 solution.gif"}}'/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"bogus","ak":"manualthumb=7%25 solution.gif"},{"ck":"link","ak":"link=7%25 solution"},{"ck":"caption","ak":"[[7%25 solution]]"}]}' data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}],"caption":"&lt;a rel=\"mw:WikiLink\" href=\"./7%25_solution\" title=\"7% solution\" data-parsoid=&#39;{\"stx\":\"simple\",\"a\":{\"href\":\"./7%25_solution\"},\"sa\":{\"href\":\"7%25 solution\"},\"dsr\":[74,91,2,2]}&#39;>7% solution&lt;/a>"}'><a href="./7%25_solution" data-parsoid='{"a":{"href":"./7%25_solution"},"sa":{"href":"link=7%25 solution"}}'><img resource="./File:7%25_solution.gif" src="./Special:FilePath/7%25_solution.gif" height="220" width="220" data-parsoid='{"a":{"resource":"./File:7%25_solution.gif","height":"220","width":"220"},"sa":{"resource":"File:7%25 solution.gif"}}'/></a></span></p>
 !! end
 
 !! test
@@ -14532,7 +15020,7 @@ wgEnableUploads=0
 <p><a href="/wiki/File:Foobaz.jpg" title="File:Foobaz.jpg">File:Foobaz.jpg</a>
 </p>
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}]}'><a href="./File:Foobaz.jpg"><img resource="./File:Foobaz.jpg" src="./Special:FilePath/Foobaz.jpg" height="220" width="220"/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}'><a href="./File:Foobaz.jpg"><img resource="./File:Foobaz.jpg" src="./Special:FilePath/Foobaz.jpg" height="220" width="220"/></a></span></p>
 !! end
 
 # Parsoid-specific testing for images
@@ -14865,6 +15353,7 @@ Render invalid page names as plain text (T53090)
 [[.]]
 [[..]]
 [[foo././bar]]
+[[foo[http://example.com]xyz]]
 
 [[{{echo|./../foo}}|bar]]
 [[{{echo|foo/.}}|bar]]
@@ -14888,6 +15377,7 @@ Render invalid page names as plain text (T53090)
 [[.]]
 [[..]]
 [[foo././bar]]
+[[foo<a rel="nofollow" class="external autonumber" href="http://example.com">[1]</a>xyz]]
 </p><p>[[./../foo|bar]]
 [[foo/.|bar]]
 [[foo/..|bar]]
@@ -14910,7 +15400,8 @@ Render invalid page names as plain text (T53090)
 [[foo[bar]]
 [[.]]
 [[..]]
-[[foo././bar]]</p>
+[[foo././bar]]
+[[foo<a rel="mw:ExtLink" href="http://example.com"></a>xyz]]</p>
 
 <p>[[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"./../foo"}},"i":0}}]}'>./../foo</span>|bar]]
 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo/."}},"i":0}}]}'>foo/.</span>|bar]]
@@ -15376,12 +15867,15 @@ Parsoid: Defaultsort
 <meta property="mw:PageProp/categorydefaultsort" content="Foo"/>
 !! end
 
+# NOTE: mw:ExpandedAttrs is not the best typeof here. mw:Transclusion is better.
+# But, this is a limitation of our representation and is documented in
+# TemplateHandler.js in processSpecialMagicWord
 !! test
 Parsoid: Defaultsort (template-generated)
 !! wikitext
 {{{{echo|DEFAULTSORT}}:Foo}}
 !! html/parsoid
-<meta property="mw:PageProp/categorydefaultsort" content="Foo" about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"{{echo|DEFAULTSORT}}:Foo"},"params":{},"i":0}}]}'/>
+<meta property="mw:PageProp/categorydefaultsort" content="Foo" about="#mwt3" typeof="mw:ExpandedAttrs" data-parsoid='{"src":"{{{{echo|DEFAULTSORT}}:Foo}}","dsr":[0,26,null,null]}' data-mw='{"attribs":[[{"txt":"content"},{"html":"&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=&#39;{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[2,22,null,null]}&#39; data-mw=&#39;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"DEFAULTSORT\"}},\"i\":0}}]}&#39;>DEFAULTSORT&lt;/span>:Foo"}]]}'/>
 !! end
 
 ###
@@ -15458,7 +15952,7 @@ Section headings with TOC
 Some text
 ===Another headline===
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Headline_1"><span class="tocnumber">1</span> <span class="toctext">Headline 1</span></a>
 <ul>
@@ -15501,7 +15995,7 @@ __FORCETOC__
 == Headline 2 ==
 == Headline ==
 !! html/php
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Headline_2"><span class="tocnumber">1</span> <span class="toctext">Headline 2</span></a></li>
 <li class="toclevel-1 tocsection-2"><a href="#Headline"><span class="tocnumber">2</span> <span class="toctext">Headline</span></a></li>
@@ -15532,7 +16026,7 @@ Handling of sections up to level 6 and beyond
 ========= Level 9 Heading=========
 ========== Level 10 Heading==========
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Level_1_Heading"><span class="tocnumber">1</span> <span class="toctext">Level 1 Heading</span></a>
 <ul>
@@ -15585,7 +16079,7 @@ TOC regression (T11764)
 == title 2 ==
 === title 2.1 ===
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
 <ul>
@@ -15620,7 +16114,7 @@ TOC for heading containing <span id="..."></span> (T96153)
 __FORCETOC__
 ==<span id="old-anchor"></span>New title==
 !! html/php
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#New_title"><span class="tocnumber">1</span> <span class="toctext">New title</span></a></li>
 </ul>
@@ -15642,7 +16136,7 @@ wgMaxTocLevel=3
 == title 2 ==
 === title 2.1 ===
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
 <ul>
@@ -15678,7 +16172,7 @@ wgMaxTocLevel=3
 ====Section 1.1.1.1====
 ==Section 2==
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Section_1"><span class="tocnumber">1</span> <span class="toctext">Section 1</span></a>
 <ul>
@@ -15771,7 +16265,7 @@ __TOC__
 === title 1.1 ===
 == title 2 ==
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
 <ul>
@@ -15838,7 +16332,7 @@ section 5
 !! html
 <p>The tooltips shall not show entities to the user (ie. be double escaped)
 </p>
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#text_.3E_text"><span class="tocnumber">1</span> <span class="toctext">text &gt; text</span></a></li>
 <li class="toclevel-1 tocsection-2"><a href="#text_.3C_text"><span class="tocnumber">2</span> <span class="toctext">text &lt; text</span></a></li>
@@ -15897,7 +16391,7 @@ section 6
 !! html
 <p>Id should not contain + for spaces
 </p>
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Space_between_Text"><span class="tocnumber">1</span> <span class="toctext">Space between Text</span></a></li>
 <li class="toclevel-1 tocsection-2"><a href="#Space-Entity_between_Text"><span class="tocnumber">2</span> <span class="toctext">Space-Entity&#32;between&#32;Text</span></a></li>
@@ -15943,7 +16437,7 @@ Headers with excess '=' characters
 =''italic'' heading==
 ==''italic'' heading=
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#foo.3D"><span class="tocnumber">1</span> <span class="toctext">foo=</span></a></li>
 <li class="toclevel-1 tocsection-2"><a href="#.3Dfoo"><span class="tocnumber">2</span> <span class="toctext">=foo</span></a></li>
@@ -15973,7 +16467,7 @@ HTML headers vs TOC (T25393)
 == Header 2.2 ==
 __NOEDITSECTION__
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1"><a href="#Header_1"><span class="tocnumber">1</span> <span class="toctext">Header 1</span></a>
 <ul>
@@ -16373,18 +16867,22 @@ Nesting of <bdo>
 Media link
 !! wikitext
 [[Media:Foobar.jpg]]
-!! html
+!! html/php
 <p><a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">Media:Foobar.jpg</a>
 </p>
+!! html/parsoid
+<p><a rel="mw:MediaLink" href="//example.com/images/3/3a/Foobar.jpg" title="Foobar.jpg">Media:Foobar.jpg</a></p>
 !! end
 
 !! test
 Media link with text
 !! wikitext
 [[Media:Foobar.jpg|A neat file to look at]]
-!! html
+!! html/php
 <p><a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">A neat file to look at</a>
 </p>
+!! html/parsoid
+<p><a rel="mw:MediaLink" href="//example.com/images/3/3a/Foobar.jpg" title="Foobar.jpg">A neat file to look at</a></p>
 !! end
 
 # FIXME: this is still bad HTML tag nesting
@@ -16393,21 +16891,29 @@ Media link with text
 Media link with nasty text
 !! wikitext
 [[Media:Foobar.jpg|Safe Link<div style=display:none>" onmouseover="alert(document.cookie)" onfoo="</div>]]
-!! html
+!! html/php
 <a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">Safe Link&lt;div style="display:none"&gt;" onmouseover="alert(document.cookie)" onfoo="&lt;/div&gt;</a>
 
-!! html+tidy
+!! html+php/tidy
 <p><a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">Safe Link</a></p>
 <div style="display:none">" onmouseover="alert(document.cookie)" onfoo="</div>
+!! html/parsoid
+<p><a rel="mw:MediaLink" href="//example.com/images/3/3a/Foobar.jpg" title="Foobar.jpg" data-parsoid='{"autoInsertedEnd":true}'>Safe Link</a></p><div style="display:none" data-parsoid='{"stx":"html"}'><a rel="mw:MediaLink" href="//example.com/images/3/3a/Foobar.jpg" title="Foobar.jpg" data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'>" onmouseover="alert(document.cookie)" onfoo="</a></div>
+
 !! end
 
 !! test
 Media link to nonexistent file (T3702)
 !! wikitext
 [[Media:No such.jpg]]
-!! html
+[[Media:No_such file.jpg]]
+!! html/php
 <p><a href="/index.php?title=Special:Upload&amp;wpDestFile=No_such.jpg" class="new" title="No such.jpg">Media:No such.jpg</a>
+<a href="/index.php?title=Special:Upload&amp;wpDestFile=No_such_file.jpg" class="new" title="No such file.jpg">Media:No_such file.jpg</a>
 </p>
+!! html/parsoid
+<p><a rel="mw:MediaLink" href="./Special:FilePath/No_such.jpg" title="No such.jpg" typeof="mw:Error" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}' data-parsoid='{"a":{"fileName":"No_such.jpg"},"sa":{"fileName":"No such.jpg"}}'>Media:No such.jpg</a>
+<a rel="mw:MediaLink" href="./Special:FilePath/No_such_file.jpg" title="No such file.jpg" typeof="mw:Error" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}' data-parsoid='{"a":{"fileName":"No_such_file.jpg"},"sa":{"fileName":"No_such file.jpg"}}'>Media:No_such file.jpg</a></p>
 !! end
 
 !! test
@@ -16418,7 +16924,7 @@ Image link to nonexistent file (T3850 - good)
 <p><a href="/index.php?title=Special:Upload&amp;wpDestFile=No_such.jpg" class="new" title="File:No such.jpg">File:No such.jpg</a>
 </p>
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}]}'><a href="./File:No_such.jpg"><img resource="./File:No_such.jpg" src="./Special:FilePath/No_such.jpg" height="220" width="220"/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}'><a href="./File:No_such.jpg"><img resource="./File:No_such.jpg" src="./Special:FilePath/No_such.jpg" height="220" width="220"/></a></span></p>
 !! end
 
 !! test
@@ -17396,14 +17902,27 @@ Sanitizer: Validating that <meta> and <link> work, but only for Microdata
 <p>    <meta itemprop="hello" content="world" />
        &lt;meta http-equiv="refresh" content="5"&gt;
        <meta itemprop="hello" content="5" />
-</p>
        <link itemprop="hello" href="http&#58;//example.org" />
        &lt;link rel="stylesheet" href="<a rel="nofollow" class="external free" href="http://example.org">http://example.org</a>"&gt;
        <link itemprop="hello" href="http&#58;//example.org" />
+</p>
 </div>
 
 !! end
 
+!! test
+Sanitizer: Strip comments from CSS attributes
+!! options
+parsoid=wt2html,wt2wt
+!! wikitext
+<span style="margin:/*negate mbox-text padding */-0.125em -0.45em; /*rainbow*/rgba(255, 0, 0, 0.3)">2013</span>
+!! html/php
+<p><span style="margin: -0.125em -0.45em;  rgba(255, 0, 0, 0.3)">2013</span>
+</p>
+!! html/parsoid
+<p><span style="margin: -0.125em -0.45em;  rgba(255, 0, 0, 0.3)">2013</span></p>
+!! end
+
 !! test
 Language converter: output gets cut off unexpectedly (T7757)
 !! options
@@ -17426,14 +17945,12 @@ all additional text is vanished
 
 !! test
 Self closed html pairs (T7487)
-!! options
 !! wikitext
 <center><font id="bug" />Centered text</center>
 <div><font id="bug2" />In div text</div>
-!! html
-<center>&lt;font id="bug" /&gt;Centered text</center>
-<div>&lt;font id="bug2" /&gt;In div text</div>
-
+!! html+tidy
+<center><font id="bug"></font>Centered text</center>
+<div><font id="bug2"></font>In div text</div>
 !! end
 
 #
@@ -17751,7 +18268,7 @@ Fuzz testing: Parser14
 http://__TOC__
 !! html
 <h2><span class="mw-headline" id="onmouseover.3D">onmouseover=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: onmouseover=">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
-http://<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+http://<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#onmouseover.3D"><span class="tocnumber">1</span> <span class="toctext">onmouseover=</span></a></li>
 </ul>
@@ -17762,7 +18279,7 @@ http://<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Content
 <h2><span class="mw-headline" id="onmouseover.3D">onmouseover=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: onmouseover=">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 <p>http://</p>
 <div id="toc" class="toc">
-<div id="toctitle" class="toctitle">
+<div class="toctitle">
 <h2>Contents</h2>
 </div>
 <ul>
@@ -17887,8 +18404,8 @@ MOVE YOUR MOUSE CURSOR OVER THIS TEXT
 
 !! html/parsoid
 <p data-parsoid='{"fostered":true,"autoInsertedEnd":true}'>{{{|
-<u class="|" about="#mwt2" typeof="mw:ExpandedAttrs" data-parsoid='{"stx":"html","a":{"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->&lt;noinclude>}}}}":null},"sa":{"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->&lt;noinclude>}}}}":""},"autoInsertedEnd":true}' data-mw='{"attribs":[[{"txt":"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->}}}}","html":"{&lt;span about=\"#mwt1\" typeof=\"mw:Param\" data-parsoid=&#39;{\"pi\":[[]],\"dsr\":[21,79,null,null]}&#39; data-mw=&#39;{\"parts\":[{\"templatearg\":{\"target\":{\"wt\":\"SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->&amp;lt;noinclude>\"},\"params\":{},\"i\":0}}]}&#39;>{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->}}}&lt;/span>}"},{"html":""}]]}'>
-<br style="onmouseover='alert(document.cookie);' " data-parsoid='{"stx":"html","selfClose":true}'/></u></p><p data-parsoid='{"fostered":true,"autoInsertedEnd":true}'><u class="|" about="#mwt2" typeof="mw:ExpandedAttrs" data-parsoid='{"stx":"html","a":{"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->&lt;noinclude>}}}}":null},"sa":{"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->&lt;noinclude>}}}}":""},"autoInsertedEnd":true,"autoInsertedStart":true}' data-mw='{"attribs":[[{"txt":"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->}}}}","html":"{&lt;span about=\"#mwt1\" typeof=\"mw:Param\" data-parsoid=&#39;{\"pi\":[[]],\"dsr\":[21,79,null,null]}&#39; data-mw=&#39;{\"parts\":[{\"templatearg\":{\"target\":{\"wt\":\"SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->&amp;lt;noinclude>\"},\"params\":{},\"i\":0}}]}&#39;>{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx-->}}}&lt;/span>}"},{"html":""}]]}'>MOVE YOUR MOUSE CURSOR OVER THIS TEXT</u></p><table data-parsoid='{"autoInsertedEnd":true}'>
+<u class="|" data-parsoid='{"stx":"html","a":{"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--":null},"sa":{"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--":""},"autoInsertedEnd":true}'><meta typeof="mw:Includes/NoInclude" data-parsoid='{"src":"&lt;noinclude>"}'/>}}}} >
+<br style="onmouseover='alert(document.cookie);' " data-parsoid='{"stx":"html","selfClose":true}'/></u></p><p data-parsoid='{"fostered":true,"autoInsertedEnd":true}'><u class="|" data-parsoid='{"stx":"html","a":{"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--":null},"sa":{"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--":""},"autoInsertedEnd":true,"autoInsertedStart":true}'>MOVE YOUR MOUSE CURSOR OVER THIS TEXT</u></p><table data-parsoid='{"autoInsertedEnd":true}'>
 
 
 
@@ -17965,7 +18482,7 @@ Fuzz testing: image with bogus manual thumbnail
 <div class="thumb tright"><div class="thumbinner" style="width:182px;">Error creating thumbnail:   <div class="thumbcaption"></div></div></div>
 
 !! html/parsoid
-<figure class="mw-default-size" typeof="mw:Error mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"manualthumb","ak":"thumbnail= "}]}' data-mw='{"errors":[{"key":"missing-thumbnail","message":"This thumbnail does not exist.","params":{"name":""}}],"thumb":""}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="./Special:FilePath/" height="220" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"220"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure>
+<figure class="mw-default-size" typeof="mw:Error mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"manualthumb","ak":"thumbnail= "}]}' data-mw='{"errors":[{"key":"apierror-invalidtitle","message":"Invalid thumbnail title.","params":{"name":""}}],"thumb":""}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{"href":"Image:foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="./Special:FilePath/Foobar.jpg" height="220" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"220"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure>
 !! end
 
 !! test
@@ -19055,9 +19572,8 @@ Special:Search page linking.
 | is not a magic word here but | is still a magic word here
 </p>
 !! html/parsoid
-<p><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","href":"./Template:!"},"params":{},"i":0}}]}'>|</span> is a magic word there and <span about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","href":"./Template:!"},"params":{},"i":0}}]}'>|</span> is still a magic word here
-| is not a magic word here but <span about="#mwt3" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","href":"./Template:!"},"params":{},"i":0}}]}'>|</span> is still a magic word here</p>
-
+<p><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","function":"!"},"params":{},"i":0}}]}'>|</span> is a magic word there and <span about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","function":"!"},"params":{},"i":0}}]}'>|</span> is still a magic word here
+| is not a magic word here but <span about="#mwt3" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","function":"!"},"params":{},"i":0}}]}'>|</span> is still a magic word here</p>
 !! end
 
 !! test
@@ -19987,7 +20503,7 @@ djvu
 <p><a href="/index.php?title=File:LoremIpsum.djvu&amp;page=2" class="image"><img alt="LoremIpsum.djvu" src="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-2480px-LoremIpsum.djvu.jpg" width="2480" height="3508" srcset="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-3720px-LoremIpsum.djvu.jpg 1.5x, http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-4960px-LoremIpsum.djvu.jpg 2x" /></a>
 </p>
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"page","ak":"page=2"}]}'><a href="./File:LoremIpsum.djvu" data-parsoid='{"a":{"href":"./File:LoremIpsum.djvu"},"sa":{}}'><img resource="./File:LoremIpsum.djvu" src="//example.com/images/5/5f/LoremIpsum.djvu" data-file-width="2480" data-file-height="3508" data-file-type="bitmap" height="3508" width="2480" data-parsoid='{"a":{"resource":"./File:LoremIpsum.djvu","height":"3508","width":"2480"},"sa":{"resource":"File:LoremIpsum.djvu"}}'/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"page","ak":"page=2"}]}' data-mw='{"page":"2"}'><a href="./File:LoremIpsum.djvu" data-parsoid='{"a":{"href":"./File:LoremIpsum.djvu"},"sa":{"href":"File:LoremIpsum.djvu"}}'><img resource="./File:LoremIpsum.djvu" src="//example.com/images/5/5f/LoremIpsum.djvu" data-file-width="2480" data-file-height="3508" data-file-type="bitmap" height="3508" width="2480" data-parsoid='{"a":{"resource":"./File:LoremIpsum.djvu","height":"3508","width":"2480"},"sa":{"resource":"File:LoremIpsum.djvu"}}'/></a></span></p>
 !! end
 
 !! test
@@ -20245,7 +20761,7 @@ Out-of-order TOC heading levels
 =====5=====
 ==2==
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#2"><span class="tocnumber">1</span> <span class="toctext">2</span></a>
 <ul>
@@ -20286,9 +20802,11 @@ ISBN ---
 ISBN with space-delimited number
 !! wikitext
 ISBN 92 9017 032 8
-!! html
+!! html/php
 <p><a href="/wiki/Special:BookSources/9290170328" class="internal mw-magiclink-isbn">ISBN 92 9017 032 8</a>
 </p>
+!! html/parsoid
+<p data-parsoid='{"dsr":[0,18,0,0]}'><a href="./Special:BookSources/9290170328" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink","dsr":[0,18,2,2]}'>ISBN 92 9017 032 8</a></p>
 !! end
 
 
@@ -20310,11 +20828,17 @@ ISBN 123456789
 ISBN 1234567890
 
 ISBN 12345678901
-!! html
+!! html/php
 <p>ISBN 123456789
 </p><p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1234567890</a>
 </p><p>ISBN 12345678901
 </p>
+!! html/parsoid
+<p>ISBN 123456789</p>
+
+<p><a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a></p>
+
+<p>ISBN 12345678901</p>
 !! end
 
 
@@ -20324,10 +20848,14 @@ ISBN with trailing year (T9110)
 ISBN 1-234-56789-0 - 2006
 
 ISBN 1 234 56789 0 - 2006
-!! html
+!! html/php
 <p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1-234-56789-0</a> - 2006
 </p><p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1 234 56789 0</a> - 2006
 </p>
+!! html/parsoid
+<p><a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1-234-56789-0</a> - 2006</p>
+
+<p><a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1 234 56789 0</a> - 2006</p>
 !! end
 
 
@@ -20780,6 +21308,28 @@ Raw: -{R|zh:China;zh-tw:Taiwan}-
 </p>
 !! end
 
+!! test
+Nested markup inside raw output of variant escape tags (R flag)
+!! options
+language=zh variant=zh-tw
+!! wikitext
+Nested raw: -{R|nested -{zh:China;zh-tw:Taiwan}- nested}-
+!! html
+<p>Nested raw: nested Taiwan nested
+</p>
+!! end
+
+!! test
+Templates inside raw output of variant escape tags (R flag)
+!! options
+language=zh variant=zh-tw
+!! wikitext
+Nested raw: -{R|nested {{echo|hi}} templates}-
+!! html
+<p>Nested raw: nested hi templates
+</p>
+!! end
+
 !! test
 Strings evaluating false shouldn't be ignored by Language converter (T51072)
 !! options
@@ -20947,12 +21497,10 @@ language=sr variant=sr-ec
 </p>
 !! end
 
-# FIXME: This test is currently broken in the PHP parser T153761
 !! test
 T146304: Don't break template parsing if language converter markup is in the parameter.
 !! options
 language=sr variant=sr-ec
-disabled
 !! wikitext
 {{echo|-{R|foo}-}}
 !! html/php
@@ -22081,7 +22629,7 @@ percent-encoding and + signs in internal links (T28410)
 !! html/parsoid
 <p><a rel="mw:WikiLink" href="./User:+%25" title="User:+%" data-parsoid='{"stx":"simple","a":{"href":"./User:+%25"},"sa":{"href":"User:+%"}}'>User:+%</a> <a rel="mw:WikiLink" href="./Page+title%25" title="Page+title%" data-parsoid='{"stx":"simple","a":{"href":"./Page+title%25"},"sa":{"href":"Page+title%"}}'>Page+title%</a>
 <a rel="mw:WikiLink" href="./%25+" title="%+" data-parsoid='{"stx":"simple","a":{"href":"./%25+"},"sa":{"href":"%+"}}'>%+</a> <a rel="mw:WikiLink" href="./%25+" title="%+" data-parsoid='{"stx":"piped","a":{"href":"./%25+"},"sa":{"href":"%+"}}'>%20</a> <a rel="mw:WikiLink" href="./%25+" title="%+" data-parsoid='{"stx":"simple","a":{"href":"./%25+"},"sa":{"href":"%+ "}}'>%+ </a> <a rel="mw:WikiLink" href="./%25+r" title="%+r" data-parsoid='{"stx":"simple","a":{"href":"./%25+r"},"sa":{"href":"%+r"}}'>%+r</a>
-<a rel="mw:WikiLink" href="./%25" title="%" data-parsoid='{"stx":"simple","a":{"href":"./%25"},"sa":{"href":"%"}}'>%</a> <a rel="mw:WikiLink" href="./+" title="+" data-parsoid='{"stx":"simple","a":{"href":"./+"},"sa":{"href":"+"}}'>+</a> <span class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"bogus","ak":"foo"},{"ck":"caption","ak":"[[bar]]"}]}' data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"&lt;a rel=\"mw:WikiLink\" href=\"./Bar\" title=\"Bar\" data-parsoid=&#39;{\"stx\":\"simple\",\"a\":{\"href\":\"./Bar\"},\"sa\":{\"href\":\"bar\"},\"dsr\":[94,101,2,2]}&#39;>bar&lt;/a>"}'><a href="./File:%25+abc9" data-parsoid='{"a":{"href":"./File:%25+abc9"},"sa":{}}'><img resource="./File:%25+abc9" src="./Special:FilePath/%25+abc9" height="220" width="220" data-parsoid='{"a":{"resource":"./File:%25+abc9","height":"220","width":"220"},"sa":{"resource":"File:%+abc%39"}}'/></a></span>
+<a rel="mw:WikiLink" href="./%25" title="%" data-parsoid='{"stx":"simple","a":{"href":"./%25"},"sa":{"href":"%"}}'>%</a> <a rel="mw:WikiLink" href="./+" title="+" data-parsoid='{"stx":"simple","a":{"href":"./+"},"sa":{"href":"+"}}'>+</a> <span class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"bogus","ak":"foo"},{"ck":"caption","ak":"[[bar]]"}]}' data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}],"caption":"&lt;a rel=\"mw:WikiLink\" href=\"./Bar\" title=\"Bar\" data-parsoid=&#39;{\"stx\":\"simple\",\"a\":{\"href\":\"./Bar\"},\"sa\":{\"href\":\"bar\"},\"dsr\":[94,101,2,2]}&#39;>bar&lt;/a>"}'><a href="./File:%25+abc9" data-parsoid='{"a":{"href":"./File:%25+abc9"},"sa":{}}'><img resource="./File:%25+abc9" src="./Special:FilePath/%25+abc9" height="220" width="220" data-parsoid='{"a":{"resource":"./File:%25+abc9","height":"220","width":"220"},"sa":{"resource":"File:%+abc%39"}}'/></a></span>
 <a rel="mw:WikiLink" href="./3E" title="3E" data-parsoid='{"stx":"simple","a":{"href":"./3E"},"sa":{"href":"%33%45"}}'>3E</a> <a rel="mw:WikiLink" href="./3E+" title="3E+" data-parsoid='{"stx":"simple","a":{"href":"./3E+"},"sa":{"href":"%33%45+"}}'>3E+</a></p>
 !! end
 
@@ -22095,8 +22643,8 @@ Special characters in embedded file links (T29679)
 <a href="/index.php?title=Special:Upload&amp;wpDestFile=Does_not_exist.jpg" class="new" title="File:Does not exist.jpg">Title with &amp; ampersand</a>
 </p>
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}]}'><a href="./File:Contains_&amp;_ampersand.jpg"><img resource="./File:Contains_&amp;_ampersand.jpg" src="./Special:FilePath/Contains_&amp;_ampersand.jpg" height="220" width="220"/></a></span>
-<span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"Title with &amp;amp; ampersand"}'><a href="./File:Does_not_exist.jpg"><img resource="./File:Does_not_exist.jpg" src="./Special:FilePath/Does_not_exist.jpg" height="220" width="220"/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}'><a href="./File:Contains_&amp;_ampersand.jpg"><img resource="./File:Contains_&amp;_ampersand.jpg" src="./Special:FilePath/Contains_&amp;_ampersand.jpg" height="220" width="220"/></a></span>
+<span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}],"caption":"Title with &amp;amp; ampersand"}'><a href="./File:Does_not_exist.jpg"><img resource="./File:Does_not_exist.jpg" src="./Special:FilePath/Does_not_exist.jpg" height="220" width="220"/></a></span></p>
 !! end
 
 !! test
@@ -22219,6 +22767,12 @@ language=en
 </p>
 !! end
 
+# Note that Parsoid doesn't emit an explicit TOC.
+# Note also that the html2wt direction tends to emit an extra newline
+# between the __TOC__ magicword and the first heading unless *both*
+# the <meta> and the <h2> have a data-parsoid attribute set (even if
+# it's "{}").
+
 !! test
 T28375: TOC with italics
 !! options
@@ -22226,8 +22780,8 @@ title=[[Main Page]]
 !! wikitext
 __TOC__
 == ''Lost'' episodes ==
-!! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+!! html/php
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Lost_episodes"><span class="tocnumber">1</span> <span class="toctext"><i>Lost</i> episodes</span></a></li>
 </ul>
@@ -22235,6 +22789,9 @@ __TOC__
 
 <h2><span class="mw-headline" id="Lost_episodes"><i>Lost</i> episodes</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: Lost episodes">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 
+!! html/parsoid
+<meta property="mw:PageProp/toc" data-parsoid='{}'/>
+<h2 data-parsoid='{}'> <i>Lost</i> episodes </h2>
 !! end
 
 !! test
@@ -22244,8 +22801,8 @@ title=[[Main Page]]
 !! wikitext
 __TOC__
 == '''should be bold''' then normal text ==
-!! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+!! html/php
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#should_be_bold_then_normal_text"><span class="tocnumber">1</span> <span class="toctext"><b>should be bold</b> then normal text</span></a></li>
 </ul>
@@ -22253,6 +22810,9 @@ __TOC__
 
 <h2><span class="mw-headline" id="should_be_bold_then_normal_text"><b>should be bold</b> then normal text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: should be bold then normal text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 
+!! html/parsoid
+<meta property="mw:PageProp/toc" data-parsoid='{}'/>
+<h2 data-parsoid='{}'> <b>should be bold</b> then normal text </h2>
 !! end
 
 !! test
@@ -22262,8 +22822,8 @@ title=[[Main Page]]
 !! wikitext
 __TOC__
 == Image [[Image:foobar.jpg]] ==
-!! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+!! html/php
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Image"><span class="tocnumber">1</span> <span class="toctext">Image</span></a></li>
 </ul>
@@ -22271,6 +22831,9 @@ __TOC__
 
 <h2><span class="mw-headline" id="Image">Image <a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: Image">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 
+!! html/parsoid
+<meta property="mw:PageProp/toc" data-parsoid='{}'/>
+<h2 data-parsoid='{}'> Image <span class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></span> </h2>
 !! end
 
 !! test
@@ -22280,8 +22843,8 @@ title=[[Main Page]]
 !! wikitext
 __TOC__
 == <blockquote>Quote</blockquote> ==
-!! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+!! html/php
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Quote"><span class="tocnumber">1</span> <span class="toctext">Quote</span></a></li>
 </ul>
@@ -22289,10 +22852,10 @@ __TOC__
 
 <h2><span class="mw-headline" id="Quote"><blockquote>Quote</blockquote></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: Quote">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 
-!! html+tidy
+!! html/php+tidy
 <p></p>
 <div id="toc" class="toc">
-<div id="toctitle" class="toctitle">
+<div class="toctitle">
 <h2>Contents</h2>
 </div>
 <ul>
@@ -22305,6 +22868,9 @@ __TOC__
 <p><span class="mw-headline" id="Quote">Quote</span></p>
 </blockquote>
 <p><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: Quote">edit</a><span class="mw-editsection-bracket">]</span></span></p>
+!! html/parsoid
+<meta property="mw:PageProp/toc" data-parsoid='{}'/>
+<h2 data-parsoid='{}'> <blockquote>Quote</blockquote> </h2>
 !! end
 
 !! test
@@ -22316,8 +22882,8 @@ __TOC__
 == Proof: 2 < 3 ==
 <small>Hanc marginis exiguitas non caperet.</small>
 QED
-!! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+!! html/php
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Proof:_2_.3C_3"><span class="tocnumber">1</span> <span class="toctext">Proof: 2 &lt; 3</span></a></li>
 </ul>
@@ -22327,6 +22893,11 @@ QED
 <p><small>Hanc marginis exiguitas non caperet.</small>
 QED
 </p>
+!! html/parsoid
+<meta property="mw:PageProp/toc" data-parsoid='{}'/>
+<h2 data-parsoid='{}'> Proof: 2 &lt; 3 </h2>
+<p><small>Hanc marginis exiguitas non caperet.</small>
+QED</p>
 !! end
 
 !! test
@@ -22336,8 +22907,8 @@ __TOC__
 == <i>Foo</i> <b>Bar</b> ==
 
 == <i>Foo</i> <blockquote>Bar</blockquote> ==
-!! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+!! html/php
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Foo_Bar"><span class="tocnumber">1</span> <span class="toctext"><i>Foo</i> <b>Bar</b></span></a></li>
 <li class="toclevel-1 tocsection-2"><a href="#Foo_Bar_2"><span class="tocnumber">2</span> <span class="toctext"><i>Foo</i> Bar</span></a></li>
@@ -22347,10 +22918,10 @@ __TOC__
 <h2><span class="mw-headline" id="Foo_Bar"><i>Foo</i> <b>Bar</b></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 <h2><span class="mw-headline" id="Foo_Bar_2"><i>Foo</i> <blockquote>Bar</blockquote></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 
-!! html+tidy
+!! html/php+tidy
 <p></p>
 <div id="toc" class="toc">
-<div id="toctitle" class="toctitle">
+<div class="toctitle">
 <h2>Contents</h2>
 </div>
 <ul>
@@ -22365,6 +22936,10 @@ __TOC__
 <p><span class="mw-headline" id="Foo_Bar_2">Bar</span></p>
 </blockquote>
 <p><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></p>
+!! html/parsoid
+<meta property="mw:PageProp/toc" data-parsoid='{}'/>
+<h2 data-parsoid='{}'> <i data-parsoid='{"stx":"html"}'>Foo</i> <b data-parsoid='{"stx":"html"}'>Bar</b> </h2>
+<h2> <i data-parsoid='{"stx":"html"}'>Foo</i> <blockquote>Bar</blockquote> </h2>
 !! end
 
 # Don't expect Parsoid to roundtrip this until the php parser comes closer to
@@ -22379,7 +22954,7 @@ __TOC__
 
 == <sup class="a > b">Evilbye</sup> ==
 !! html/php
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Hello"><span class="tocnumber">1</span> <span class="toctext"><sup>Hello</sup></span></a></li>
 <li class="toclevel-1 tocsection-2"><a href="#b.22.3EEvilbye"><span class="tocnumber">2</span> <span class="toctext"><sup> b"&gt;Evilbye</sup></span></a></li>
@@ -22409,8 +22984,8 @@ __TOC__
 == <span style="font-style: italic" dir="ltr">All attributes on these span tags must be deleted from the TOC</span> ==
 
 == <span dir="ltr" style="font-style: italic">Attributes after dir on these span tags must be deleted from the TOC</span> ==
-!! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+!! html/php
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#C.2B.2B"><span class="tocnumber">1</span> <span class="toctext"><span dir="ltr">C++</span></span></a></li>
 <li class="toclevel-1 tocsection-2"><a href="#.D7.96.D7.91.D7.A0.D7.92.21"><span class="tocnumber">2</span> <span class="toctext"><span dir="rtl">זבנג!</span></span></a></li>
@@ -22426,6 +23001,13 @@ __TOC__
 <h2><span class="mw-headline" id="All_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"><span style="font-style: italic" dir="ltr">All attributes on these span tags must be deleted from the TOC</span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: All attributes on these span tags must be deleted from the TOC">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 <h2><span class="mw-headline" id="Attributes_after_dir_on_these_span_tags_must_be_deleted_from_the_TOC"><span dir="ltr" style="font-style: italic">Attributes after dir on these span tags must be deleted from the TOC</span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=5" title="Edit section: Attributes after dir on these span tags must be deleted from the TOC">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 
+!! html/parsoid
+<meta property="mw:PageProp/toc" data-parsoid='{}'/>
+<h2 data-parsoid='{}'> <span dir="ltr">C++</span> </h2>
+<h2> <span dir="rtl">זבנג!</span> </h2>
+<h2> <span style="font-style: italic">The attributes on these span tags must be deleted from the TOC</span> </h2>
+<h2> <span style="font-style: italic" dir="ltr">All attributes on these span tags must be deleted from the TOC</span> </h2>
+<h2> <span dir="ltr" style="font-style: italic">Attributes after dir on these span tags must be deleted from the TOC</span> </h2>
 !! end
 
 !! test
@@ -22433,8 +23015,8 @@ T74884: bdi element in ToC
 !! wikitext
 __TOC__
 == <bdi>test</bdi> ==
-!! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+!! html/php
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#test"><span class="tocnumber">1</span> <span class="toctext"><bdi>test</bdi></span></a></li>
 </ul>
@@ -22442,6 +23024,9 @@ __TOC__
 
 <h2><span class="mw-headline" id="test"><bdi>test</bdi></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: test">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 
+!! html/parsoid
+<meta property="mw:PageProp/toc" data-parsoid='{}'/>
+<h2 data-parsoid='{}'> <bdi>test</bdi> </h2>
 !! end
 
 !! test
@@ -22449,8 +23034,8 @@ T35715: s/strike element in ToC
 !! wikitext
 __TOC__
 == <s>test</s> test <strike>test</strike> ==
-!! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+!! html/php
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#test_test_test"><span class="tocnumber">1</span> <span class="toctext"><s>test</s> test <strike>test</strike></span></a></li>
 </ul>
@@ -22458,6 +23043,9 @@ __TOC__
 
 <h2><span class="mw-headline" id="test_test_test"><s>test</s> test <strike>test</strike></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: test test test">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 
+!! html/parsoid
+<meta property="mw:PageProp/toc" data-parsoid='{}'/>
+<h2 data-parsoid='{}'> <s>test</s> test <strike>test</strike> </h2>
 !! end
 
 # Note that the html output does not have the <p></p>, but the
@@ -22468,8 +23056,8 @@ Empty <p> tag in TOC, removed by Sanitizer (T92892)
 !! wikitext
 __TOC__
 == x ==
-!! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+!! html/php
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#x"><span class="tocnumber">1</span> <span class="toctext">x</span></a></li>
 </ul>
@@ -22477,10 +23065,10 @@ __TOC__
 
 <h2><span class="mw-headline" id="x">x</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: x">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 
-!! html+tidy
+!! html/php+tidy
 <p></p>
 <div id="toc" class="toc">
-<div id="toctitle" class="toctitle">
+<div class="toctitle">
 <h2>Contents</h2>
 </div>
 <ul>
@@ -22489,6 +23077,9 @@ __TOC__
 </div>
 <p></p>
 <h2><span class="mw-headline" id="x">x</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: x">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+!! html/parsoid
+<meta property="mw:PageProp/toc" data-parsoid='{}'/>
+<h2 data-parsoid='{}'> x </h2>
 !! end
 
 !! article
@@ -22857,26 +23448,26 @@ parsoid={
 <meta typeof="mw:Extension/LabeledSectionTransclusion/end" content="2014-04-10 (MW 1.23wmf22)"/></p>
 !! end
 
-## The unconventional output is the result of `usePHPPreProcessor` being
-## disabled in parserTests.js.  This test is mainly just to show <section> is
-## recognized as an extension tag w/o a native handler.
 !! test
 LST Sections: Newfangled approach
 !! wikitext
 <section begin="2011-05-16" />
 <section end="2014-04-10 (MW 1.23wmf22)" />
 !! html/parsoid
-<p><span typeof="mw:Error mw:Extension/section" about="#mwt1" data-mw='{"name":"section","attrs":{"begin":"2011-05-16"},"body":null,"errors":[{"key":"mw-api-extexpand-error","message":"Could not expand extension source."}]}'>&lt;section begin="2011-05-16" /></span>
-<span typeof="mw:Error mw:Extension/section" about="#mwt2" data-mw='{"name":"section","attrs":{"end":"2014-04-10 (MW 1.23wmf22)"},"body":null,"errors":[{"key":"mw-api-extexpand-error","message":"Could not expand extension source."}]}'>&lt;section end="2014-04-10 (MW 1.23wmf22)" /></span></p>
+<p><span typeof="mw:Extension/section" about="#mwt4" data-mw='{"name":"section","attrs":{"begin":"2011-05-16"},"body":null}'>
+</span>
+<span typeof="mw:Extension/section" about="#mwt6" data-mw='{"name":"section","attrs":{"end":"2014-04-10 (MW 1.23wmf22)"},"body":null}'>
+</span></p>
 !! end
 
 #--------- Test stripping of empty nodes in template content ----------
-!!test
+
+!! test
 Empty LI and TR nodes should be stripped from template content
-!!wikitext
+!! wikitext
 {{EmptyLITest}}
 {{EmptyTRTest}}
-!!html/parsoid
+!! html/parsoid
 <ul about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"EmptyLITest","href":"./Template:EmptyLITest"},"params":{},"i":0}}]}'>
 <li>a</li>
 <li>b</li>
@@ -22891,11 +23482,11 @@ Empty LI and TR nodes should be stripped from template content
 </tr>
 </tbody>
 </table>
-!!end
+!! end
 
-!!test
+!! test
 Empty LI and TR nodes should not be stripped from top-level content
-!!wikitext
+!! wikitext
 * a
 *
 * b
@@ -22904,7 +23495,7 @@ Empty LI and TR nodes should not be stripped from top-level content
 |-
 |foo
 |}
-!!html/parsoid
+!! html/parsoid
 <ul>
 <li> a</li>
 <li></li>
@@ -22918,20 +23509,20 @@ Empty LI and TR nodes should not be stripped from top-level content
 </tr>
 </tbody>
 </table>
-!!end
+!! end
 
-!!test
+!! test
 Empty TR nodes should not be stripped if they have any attributes set
-!!wikitext
+!! wikitext
 {{EmptyTRWithHTMLAttrTest}}
-!!html/parsoid
+!! html/parsoid
 <table about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"EmptyTRWithHTMLAttrTest","href":"./Template:EmptyTRWithHTMLAttrTest"},"params":{},"i":0}}]}'>
 <tr align="center"></tr>
 <tr><td>foo</td></tr>
 <tr align="center"></tr>
 <tr><td>bar</td></tr>
 </table>
-!!end
+!! end
 
 #### ----------------------------------------------------------------
 #### The following section of tests are primarily to test
@@ -25253,7 +25844,7 @@ Properly encapsulate empty-content transclusions in fosterable positions
 }}
 </table>
 !! html/parsoid
-<table about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":["&lt;table>\n",{"template":{"target":{"wt":"#if:","function":"#if"},"params":{"1":{"wt":"\n&lt;td>foo&lt;/td>\n"}},"i":0}},"\n&lt;/table>"]}' data-parsoid='{"stx":"html","pi":[[{"k":"1"}]]}'>
+<table about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":["&lt;table>\n",{"template":{"target":{"wt":"#if:","function":"if"},"params":{"1":{"wt":"\n&lt;td>foo&lt;/td>\n"}},"i":0}},"\n&lt;/table>"]}' data-parsoid='{"stx":"html","pi":[[{"k":"1"}]]}'>
 
 </table>
 !! end
@@ -25348,6 +25939,41 @@ parsoid=html2wt
 [[Foo]]
 !! end
 
+!! test
+Parsoid should accept interwiki shortcuts
+!! options
+parsoid=html2wt
+!! html/parsoid
+<p><a rel='mw:WikiLink' href='./fr:Foo'>Foo</a>
+<a rel='mw:ExtLink' href='./fr:Foo'>Foo</a>
+<a href='./fr:Foo'>Foo</a></p>
+<p><a rel='mw:WikiLink' href='fr%3AFoo'>Foo</a>
+<a rel='mw:ExtLink' href='fr%3AFoo'>Foo</a>
+<a href='fr%3AFoo'>Foo</a></p>
+!! wikitext
+[[:fr:Foo|Foo]]
+[[:fr:Foo|Foo]]
+[[:fr:Foo|Foo]]
+
+[[:fr:Foo|Foo]]
+[[:fr:Foo|Foo]]
+[[:fr:Foo|Foo]]
+!! end
+
+!! test
+Parsoid should not accept invalid interwiki shortcuts
+!! options
+parsoid=html2wt
+!! html/parsoid
+<p><a rel='mw:WikiLink' href='news:Foo'>Foo</a>
+<a rel='mw:ExtLink' href='news:Foo'>Foo</a>
+<a href='news:Foo'>Foo</a></p>
+!! wikitext
+[news:Foo Foo]
+[news:Foo Foo]
+[news:Foo Foo]
+!! end
+
 # See T93839
 !! test
 New wikilinks should be serialized properly
@@ -26699,6 +27325,16 @@ parsoid=html2wt
 [http://test.com][[one]] two three
 !! end
 
+!! test
+Catch regression when unpacking misnested links
+!! options
+parsoid=wt2html
+!! wikitext
+{{echo|hi}}[http://example.com [[ho]]]
+!! html/parsoid
+<p><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"hi"}},"i":0}}]}'>hi</span><a rel="mw:ExtLink" href="http://example.com"></a><a rel="mw:WikiLink" href="./Ho" title="Ho" data-parsoid='{"misnested":true}'>ho</a></p>
+!! end
+
 !! test
 Use data-parsoid.firstWikitextNode to compute newline constraints for template content
 !! options
@@ -27509,6 +28145,17 @@ dice
 <span name="foo"></span>
 !! end
 
+!! test
+New transclusion added after a list should be serialized after the list
+!! options
+parsoid=html2wt
+!! html/parsoid
+<ul><li>a</li></ul><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</span>
+!! wikitext
+* a
+{{echo|foo}}
+!! end
+
 # -----------------------------------------------------------------
 # End of section for Parsoid-only html2wt tests for serialization
 # of new content
@@ -27668,3 +28315,20 @@ unclosed internal link XSS (T137264)
 !! html/parsoid
 <p>[[#%3Cscript%3Ealert(1)%3C/script%3E|</p>
 !! end
+
+!! test
+Validating that <style> isn't eaten by tidy (T167349)
+!! options
+# Use $wgRawHtml to inject a <style> tag, since you normally can't in wikitext
+wgRawHtml=1
+!! wikitext
+<div class="foo">
+<html><style>.foo::before { content: "<foo>"; }</style></html>
+<html><style data-mw-foobar="baz">.foo::after { content: "<bar>"; }</style></html>
+</div>
+!! html+tidy
+<div class="foo">
+<style>.foo::before { content: "<foo>"; }</style>
+<style data-mw-foobar="baz">.foo::after { content: "<bar>"; }</style>
+</div>
+!! end
index 29da00d..df3d568 100644 (file)
@@ -1,9 +1,11 @@
 <?php
+
 use MediaWiki\Logger\LegacySpi;
 use MediaWiki\Logger\LoggerFactory;
 use MediaWiki\Logger\MonologSpi;
 use MediaWiki\MediaWikiServices;
 use Psr\Log\LoggerInterface;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @since 1.18
@@ -735,6 +737,11 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                                        $GLOBALS[$globalKey] instanceof FauxRequest
                                ) {
                                        $this->mwGlobals[$globalKey] = clone $GLOBALS[$globalKey];
+                               } elseif ( $this->containsClosure( $GLOBALS[$globalKey] ) ) {
+                                       // Serializing Closure only gives a warning on HHVM while
+                                       // it throws an Exception on Zend.
+                                       // Workaround for https://github.com/facebook/hhvm/issues/6206
+                                       $this->mwGlobals[$globalKey] = $GLOBALS[$globalKey];
                                } else {
                                        try {
                                                $this->mwGlobals[$globalKey] = unserialize( serialize( $GLOBALS[$globalKey] ) );
@@ -746,6 +753,28 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                }
        }
 
+       /**
+        * @param mixed $var
+        * @param int $maxDepth
+        *
+        * @return bool
+        */
+       private function containsClosure( $var, $maxDepth = 15 ) {
+               if ( $var instanceof Closure ) {
+                       return true;
+               }
+               if ( !is_array( $var ) || $maxDepth === 0 ) {
+                       return false;
+               }
+
+               foreach ( $var as $value ) {
+                       if ( $this->containsClosure( $value, $maxDepth - 1 ) ) {
+                               return true;
+                       }
+               }
+               return false;
+       }
+
        /**
         * Merges the given values into a MW global array variable.
         * Useful for setting some entries in a configuration array, instead of
diff --git a/tests/phpunit/data/helpers/WellProtectedClass.php b/tests/phpunit/data/helpers/WellProtectedClass.php
deleted file mode 100644 (file)
index f2b5a14..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-class WellProtectedParentClass {
-       private $privateParentProperty;
-
-       public function __construct() {
-               $this->privateParentProperty = 9000;
-       }
-
-       private function incrementPrivateParentPropertyValue() {
-               $this->privateParentProperty++;
-       }
-
-       public function getPrivateParentProperty() {
-               return $this->privateParentProperty;
-       }
-}
-
-class WellProtectedClass extends WellProtectedParentClass {
-       protected static $staticProperty = 'sp';
-       private static $staticPrivateProperty = 'spp';
-
-       protected $property;
-       private $privateProperty;
-
-       protected static function staticMethod() {
-               return 'sm';
-       }
-
-       private static function staticPrivateMethod() {
-               return 'spm';
-       }
-
-       public function __construct() {
-               parent::__construct();
-               $this->property = 1;
-               $this->privateProperty = 42;
-       }
-
-       protected function incrementPropertyValue() {
-               $this->property++;
-       }
-
-       private function incrementPrivatePropertyValue() {
-               $this->privateProperty++;
-       }
-
-       public function getProperty() {
-               return $this->property;
-       }
-
-       public function getPrivateProperty() {
-               return $this->privateProperty;
-       }
-
-       protected function whatSecondArg( $a, $b = false ) {
-               return $b;
-       }
-}
diff --git a/tests/phpunit/data/media/adobergb.jpg b/tests/phpunit/data/media/adobergb.jpg
new file mode 100644 (file)
index 0000000..470c2d6
Binary files /dev/null and b/tests/phpunit/data/media/adobergb.jpg differ
diff --git a/tests/phpunit/data/media/missingprofile.jpg b/tests/phpunit/data/media/missingprofile.jpg
new file mode 100644 (file)
index 0000000..4085f0a
Binary files /dev/null and b/tests/phpunit/data/media/missingprofile.jpg differ
index b965dc4..f10ced0 100644 (file)
Binary files a/tests/phpunit/data/media/srgb.jpg and b/tests/phpunit/data/media/srgb.jpg differ
index 12a8e09..63b687e 100644 (file)
Binary files a/tests/phpunit/data/media/tinyrgb.jpg and b/tests/phpunit/data/media/tinyrgb.jpg differ
diff --git a/tests/phpunit/data/resourceloader/abc.gif b/tests/phpunit/data/resourceloader/abc.gif
new file mode 100644 (file)
index 0000000..5f454ca
Binary files /dev/null and b/tests/phpunit/data/resourceloader/abc.gif differ
diff --git a/tests/phpunit/data/resourceloader/add.gif b/tests/phpunit/data/resourceloader/add.gif
deleted file mode 100644 (file)
index 5f454ca..0000000
Binary files a/tests/phpunit/data/resourceloader/add.gif and /dev/null differ
diff --git a/tests/phpunit/data/resourceloader/bold-a.svg b/tests/phpunit/data/resourceloader/bold-a.svg
deleted file mode 100644 (file)
index 4b82877..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-a">
-        <path d="M16 18h3l-5-12h-3l-5 12h3l1.25-3h4.5l1.25 3zm-4.917-5l1.417-3.4 1.417 3.4h-2.834z"/>
-    </g>
-</svg>
diff --git a/tests/phpunit/data/resourceloader/bold-b.svg b/tests/phpunit/data/resourceloader/bold-b.svg
deleted file mode 100644 (file)
index 4f64820..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-b">
-        <path id="b" d="M7 18h6c2 0 4-1 4-3 0-1.064.011-1.975-1.989-3 2-.975 1.989-1.935 1.989-3 0-2-2-3-4-3h-6v12zm7-8c0 1.001 0 1-2 1h-2v-3h2c2 0 2 0 2 1v1zm-2 6h-2v-3h2c2 0 2 0 2 1v1s0 1-2 1z"/>
-    </g>
-</svg>
diff --git a/tests/phpunit/data/resourceloader/bold-f.svg b/tests/phpunit/data/resourceloader/bold-f.svg
deleted file mode 100644 (file)
index 357d2e5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-f">
-        <path id="f" d="M16 8v-2h-8v12h3v-5h4v-2h-4v-3z"/>
-    </g>
-</svg>
diff --git a/tests/phpunit/data/resourceloader/def.svg b/tests/phpunit/data/resourceloader/def.svg
new file mode 100644 (file)
index 0000000..6ad7917
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="remove">
+        <path id="trash-can" d="M12 10h-1v6h1v-6zm-2 0h-1v6h1v-6zm4 0h-1v6h1v-6zm0-4v-1h-5v1h-3v3h1v7.966l1 1.031v-.074.077h6.984l.016-.018v.015l1-1.031v-7.966h1v-3h-3zm1 11h-7v-8h7v8zm1-9h-9v-1h9v1z"/>
+    </g>
+</svg>
diff --git a/tests/phpunit/data/resourceloader/def_variantize.svg b/tests/phpunit/data/resourceloader/def_variantize.svg
new file mode 100644 (file)
index 0000000..bcbe871
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="red">
+    <g xmlns:default="http://www.w3.org/2000/svg" id="remove">
+        <path id="trash-can" d="M12 10h-1v6h1v-6zm-2 0h-1v6h1v-6zm4 0h-1v6h1v-6zm0-4v-1h-5v1h-3v3h1v7.966l1 1.031v-.074.077h6.984l.016-.018v.015l1-1.031v-7.966h1v-3h-3zm1 11h-7v-8h7v8zm1-9h-9v-1h9v1z"/>
+    </g>
+</g></svg>
diff --git a/tests/phpunit/data/resourceloader/ghi.svg b/tests/phpunit/data/resourceloader/ghi.svg
new file mode 100644 (file)
index 0000000..02b4e38
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M16.5 13.1l-8.9 8.9c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z" id="path108"/>
+</svg>
diff --git a/tests/phpunit/data/resourceloader/ghi_massage.svg b/tests/phpunit/data/resourceloader/ghi_massage.svg
new file mode 100644 (file)
index 0000000..bbd1a8d
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M 16.5   13.1 l -8.9   8.9 c -0.8  -0.8  -0.8  -2   0  -2.8 l 6.1  -6.1  -6  -6.1 c -0.8  -0.8  -0.8  -2   0  -2.8 l 8.8   8.9 z" id="path108"/>
+</svg>
diff --git a/tests/phpunit/data/resourceloader/help-ltr.svg b/tests/phpunit/data/resourceloader/help-ltr.svg
deleted file mode 100644 (file)
index bb2545c..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="help">
-        <path id="circle" d="M12.001 2.085c-5.478 0-9.916 4.438-9.916 9.916 0 5.476 4.438 9.914 9.916 9.914 5.476 0 9.914-4.438 9.914-9.914 0-5.478-4.438-9.916-9.914-9.916zm.001 18c-4.465 0-8.084-3.619-8.084-8.083 0-4.465 3.619-8.084 8.084-8.084 4.464 0 8.083 3.619 8.083 8.084 0 4.464-3.619 8.083-8.083 8.083z"/>
-        <g id="question-mark">
-            <path id="top" d="M11.766 6.688c-2.5 0-3.219 2.188-3.219 2.188l1.411.854s.298-.791.901-1.229c.516-.375 1.625-.625 2.219.125.701.885-.17 1.587-1.078 2.719-.953 1.186-1 3.655-1 3.655h1.969s.135-2.318 1.041-3.381c.603-.707 1.443-1.338 1.443-2.494s-1.187-2.437-3.687-2.437z"/>
-            <path id="bottom" d="M11 16h2v2h-2z"/>
-        </g>
-    </g>
-</svg>
diff --git a/tests/phpunit/data/resourceloader/help-rtl.svg b/tests/phpunit/data/resourceloader/help-rtl.svg
deleted file mode 100644 (file)
index 255ae95..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="help">
-        <path id="circle" d="M12.001 2.085c-5.478 0-9.916 4.438-9.916 9.916 0 5.476 4.438 9.914 9.916 9.914 5.476 0 9.914-4.438 9.914-9.914 0-5.478-4.438-9.916-9.914-9.916zm.001 18c-4.465 0-8.084-3.619-8.084-8.083 0-4.465 3.619-8.084 8.084-8.084 4.464 0 8.083 3.619 8.083 8.084 0 4.464-3.619 8.083-8.083 8.083z"/>
-        <g id="question-mark" transform="translate(24, 0) scale(-1, 1)">
-            <path id="top" d="M11.766 6.688c-2.5 0-3.219 2.188-3.219 2.188l1.411.854s.298-.791.901-1.229c.516-.375 1.625-.625 2.219.125.701.885-.17 1.587-1.078 2.719-.953 1.186-1 3.655-1 3.655h1.969s.135-2.318 1.041-3.381c.603-.707 1.443-1.338 1.443-2.494s-1.187-2.437-3.687-2.437z"/>
-            <path id="bottom" d="M11 16h2v2h-2z"/>
-        </g>
-    </g>
-</svg>
diff --git a/tests/phpunit/data/resourceloader/jkl.svg b/tests/phpunit/data/resourceloader/jkl.svg
new file mode 100644 (file)
index 0000000..f31ec09
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M7 13.1l8.9 8.9c.8-.8.8-2 0-2.8l-6.1-6.1 6-6.1c.8-.8.8-2 0-2.8l-8.8 8.9z"/>
+</svg>
diff --git a/tests/phpunit/data/resourceloader/mno-ltr.svg b/tests/phpunit/data/resourceloader/mno-ltr.svg
new file mode 100644 (file)
index 0000000..bb2545c
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="help">
+        <path id="circle" d="M12.001 2.085c-5.478 0-9.916 4.438-9.916 9.916 0 5.476 4.438 9.914 9.916 9.914 5.476 0 9.914-4.438 9.914-9.914 0-5.478-4.438-9.916-9.914-9.916zm.001 18c-4.465 0-8.084-3.619-8.084-8.083 0-4.465 3.619-8.084 8.084-8.084 4.464 0 8.083 3.619 8.083 8.084 0 4.464-3.619 8.083-8.083 8.083z"/>
+        <g id="question-mark">
+            <path id="top" d="M11.766 6.688c-2.5 0-3.219 2.188-3.219 2.188l1.411.854s.298-.791.901-1.229c.516-.375 1.625-.625 2.219.125.701.885-.17 1.587-1.078 2.719-.953 1.186-1 3.655-1 3.655h1.969s.135-2.318 1.041-3.381c.603-.707 1.443-1.338 1.443-2.494s-1.187-2.437-3.687-2.437z"/>
+            <path id="bottom" d="M11 16h2v2h-2z"/>
+        </g>
+    </g>
+</svg>
diff --git a/tests/phpunit/data/resourceloader/mno-rtl.svg b/tests/phpunit/data/resourceloader/mno-rtl.svg
new file mode 100644 (file)
index 0000000..255ae95
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="help">
+        <path id="circle" d="M12.001 2.085c-5.478 0-9.916 4.438-9.916 9.916 0 5.476 4.438 9.914 9.916 9.914 5.476 0 9.914-4.438 9.914-9.914 0-5.478-4.438-9.916-9.914-9.916zm.001 18c-4.465 0-8.084-3.619-8.084-8.083 0-4.465 3.619-8.084 8.084-8.084 4.464 0 8.083 3.619 8.083 8.084 0 4.464-3.619 8.083-8.083 8.083z"/>
+        <g id="question-mark" transform="translate(24, 0) scale(-1, 1)">
+            <path id="top" d="M11.766 6.688c-2.5 0-3.219 2.188-3.219 2.188l1.411.854s.298-.791.901-1.229c.516-.375 1.625-.625 2.219.125.701.885-.17 1.587-1.078 2.719-.953 1.186-1 3.655-1 3.655h1.969s.135-2.318 1.041-3.381c.603-.707 1.443-1.338 1.443-2.494s-1.187-2.437-3.687-2.437z"/>
+            <path id="bottom" d="M11 16h2v2h-2z"/>
+        </g>
+    </g>
+</svg>
diff --git a/tests/phpunit/data/resourceloader/next.svg b/tests/phpunit/data/resourceloader/next.svg
deleted file mode 100644 (file)
index 02b4e38..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M16.5 13.1l-8.9 8.9c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z" id="path108"/>
-</svg>
diff --git a/tests/phpunit/data/resourceloader/next_massage.svg b/tests/phpunit/data/resourceloader/next_massage.svg
deleted file mode 100644 (file)
index bbd1a8d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M 16.5   13.1 l -8.9   8.9 c -0.8  -0.8  -0.8  -2   0  -2.8 l 6.1  -6.1  -6  -6.1 c -0.8  -0.8  -0.8  -2   0  -2.8 l 8.8   8.9 z" id="path108"/>
-</svg>
index 4fe3d81..fdb4d12 100644 (file)
@@ -1,6 +1,6 @@
 {
        "prefix": "oo-ui-icon",
        "images": {
-               "search": { "file": "images/icons/search.svg" }
+               "stu": { "file": "images/icons/stu.svg" }
        }
 }
diff --git a/tests/phpunit/data/resourceloader/oouiimagemodule/apex/images/icons/search.svg b/tests/phpunit/data/resourceloader/oouiimagemodule/apex/images/icons/search.svg
deleted file mode 100644 (file)
index 6952997..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="search">
-        <path id="magnifying-glass-apex" d="M18.87 18.375l-3.987-3.99-.286-.17a5.774 5.774 0 0 0 1.082-3.372C15.67 7.616 13.06 5 9.84 5A5.843 5.843 0 0 0 4 10.844a5.84 5.84 0 0 0 5.842 5.842c1.26 0 2.423-.403 3.377-1.08l.16.286 3.99 3.987c.32.31.91.24 1.33-.18.41-.42.49-1.01.17-1.33zM9.837 14.56a3.72 3.72 0 0 1-3.718-3.717c0-2.05 1.67-3.72 3.72-3.72s3.72 1.668 3.72 3.72a3.722 3.722 0 0 1-3.72 3.718z"/>
-    </g>
-</svg>
diff --git a/tests/phpunit/data/resourceloader/oouiimagemodule/apex/images/icons/stu.svg b/tests/phpunit/data/resourceloader/oouiimagemodule/apex/images/icons/stu.svg
new file mode 100644 (file)
index 0000000..27f14df
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="stu">
+        <path id="stu-apex" d="M18.87 18.375l-3.987-3.99-.286-.17a5.774 5.774 0 0 0 1.082-3.372C15.67 7.616 13.06 5 9.84 5A5.843 5.843 0 0 0 4 10.844a5.84 5.84 0 0 0 5.842 5.842c1.26 0 2.423-.403 3.377-1.08l.16.286 3.99 3.987c.32.31.91.24 1.33-.18.41-.42.49-1.01.17-1.33zM9.837 14.56a3.72 3.72 0 0 1-3.718-3.717c0-2.05 1.67-3.72 3.72-3.72s3.72 1.668 3.72 3.72a3.722 3.722 0 0 1-3.72 3.718z"/>
+    </g>
+</svg>
diff --git a/tests/phpunit/data/resourceloader/oouiimagemodule/mediawiki/icons.json b/tests/phpunit/data/resourceloader/oouiimagemodule/mediawiki/icons.json
deleted file mode 100644 (file)
index 4fe3d81..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-       "prefix": "oo-ui-icon",
-       "images": {
-               "search": { "file": "images/icons/search.svg" }
-       }
-}
diff --git a/tests/phpunit/data/resourceloader/oouiimagemodule/mediawiki/images/icons/search.svg b/tests/phpunit/data/resourceloader/oouiimagemodule/mediawiki/images/icons/search.svg
deleted file mode 100644 (file)
index 40438ea..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="search">
-        <path id="magnifying-glass-mediawiki" d="M10.5 4a6.5 6.5 0 1 0 2.844 12.344L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438A6.426 6.426 0 0 0 17 10.5 6.5 6.5 0 0 0 10.5 4zm0 2a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9z"/>
-    </g>
-</svg>
diff --git a/tests/phpunit/data/resourceloader/oouiimagemodule/wikimediaui/icons.json b/tests/phpunit/data/resourceloader/oouiimagemodule/wikimediaui/icons.json
new file mode 100644 (file)
index 0000000..fdb4d12
--- /dev/null
@@ -0,0 +1,6 @@
+{
+       "prefix": "oo-ui-icon",
+       "images": {
+               "stu": { "file": "images/icons/stu.svg" }
+       }
+}
diff --git a/tests/phpunit/data/resourceloader/oouiimagemodule/wikimediaui/images/icons/stu.svg b/tests/phpunit/data/resourceloader/oouiimagemodule/wikimediaui/images/icons/stu.svg
new file mode 100644 (file)
index 0000000..fcaaa8d
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="stu">
+        <path id="stu-wikimediaui" d="M10.5 4a6.5 6.5 0 1 0 2.844 12.344L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438A6.426 6.426 0 0 0 17 10.5 6.5 6.5 0 0 0 10.5 4zm0 2a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9z"/>
+    </g>
+</svg>
diff --git a/tests/phpunit/data/resourceloader/pqr-a.svg b/tests/phpunit/data/resourceloader/pqr-a.svg
new file mode 100644 (file)
index 0000000..4b82877
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="bold-a">
+        <path d="M16 18h3l-5-12h-3l-5 12h3l1.25-3h4.5l1.25 3zm-4.917-5l1.417-3.4 1.417 3.4h-2.834z"/>
+    </g>
+</svg>
diff --git a/tests/phpunit/data/resourceloader/pqr-b.svg b/tests/phpunit/data/resourceloader/pqr-b.svg
new file mode 100644 (file)
index 0000000..4f64820
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="bold-b">
+        <path id="b" d="M7 18h6c2 0 4-1 4-3 0-1.064.011-1.975-1.989-3 2-.975 1.989-1.935 1.989-3 0-2-2-3-4-3h-6v12zm7-8c0 1.001 0 1-2 1h-2v-3h2c2 0 2 0 2 1v1zm-2 6h-2v-3h2c2 0 2 0 2 1v1s0 1-2 1z"/>
+    </g>
+</svg>
diff --git a/tests/phpunit/data/resourceloader/pqr-f.svg b/tests/phpunit/data/resourceloader/pqr-f.svg
new file mode 100644 (file)
index 0000000..357d2e5
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="bold-f">
+        <path id="f" d="M16 8v-2h-8v12h3v-5h4v-2h-4v-3z"/>
+    </g>
+</svg>
diff --git a/tests/phpunit/data/resourceloader/prev.svg b/tests/phpunit/data/resourceloader/prev.svg
deleted file mode 100644 (file)
index f31ec09..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M7 13.1l8.9 8.9c.8-.8.8-2 0-2.8l-6.1-6.1 6-6.1c.8-.8.8-2 0-2.8l-8.8 8.9z"/>
-</svg>
diff --git a/tests/phpunit/data/resourceloader/remove.svg b/tests/phpunit/data/resourceloader/remove.svg
deleted file mode 100644 (file)
index 6ad7917..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="remove">
-        <path id="trash-can" d="M12 10h-1v6h1v-6zm-2 0h-1v6h1v-6zm4 0h-1v6h1v-6zm0-4v-1h-5v1h-3v3h1v7.966l1 1.031v-.074.077h6.984l.016-.018v.015l1-1.031v-7.966h1v-3h-3zm1 11h-7v-8h7v8zm1-9h-9v-1h9v1z"/>
-    </g>
-</svg>
diff --git a/tests/phpunit/data/resourceloader/remove_variantize.svg b/tests/phpunit/data/resourceloader/remove_variantize.svg
deleted file mode 100644 (file)
index bcbe871..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="red">
-    <g xmlns:default="http://www.w3.org/2000/svg" id="remove">
-        <path id="trash-can" d="M12 10h-1v6h1v-6zm-2 0h-1v6h1v-6zm4 0h-1v6h1v-6zm0-4v-1h-5v1h-3v3h1v7.966l1 1.031v-.074.077h6.984l.016-.018v.015l1-1.031v-7.966h1v-3h-3zm1 11h-7v-8h7v8zm1-9h-9v-1h9v1z"/>
-    </g>
-</g></svg>
diff --git a/tests/phpunit/includes/AutopromoteTest.php b/tests/phpunit/includes/AutopromoteTest.php
new file mode 100644 (file)
index 0000000..785aa4e
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+
+class AutopromoteTest extends MediaWikiTestCase {
+       /**
+        * T157718: Verify Autopromote does not perform edit count lookup if requirement is 0 or invalid
+        *
+        * @see Autopromote::getAutopromoteGroups()
+        * @dataProvider provideEditCountsAndRequirements
+        * @param int $editCount edit count of user to be checked by Autopromote
+        * @param int $requirement edit count required to autopromote user
+        */
+       public function testEditCountLookupIsSkippedIfRequirementIsZero( $editCount, $requirement ) {
+               $this->setMwGlobals( [
+                       'wgAutopromote' => [
+                               'autoconfirmed' => [ APCOND_EDITCOUNT, $requirement ]
+                       ]
+               ] );
+
+               /** @var PHPUnit_Framework_MockObject_MockObject|User $userMock */
+               $userMock = $this->getMock( 'User', [ 'getEditCount' ] );
+               if ( $requirement > 0 ) {
+                       $userMock->expects( $this->once() )
+                               ->method( 'getEditCount' )
+                               ->willReturn( $editCount );
+               } else {
+                       $userMock->expects( $this->never() )
+                               ->method( 'getEditCount' );
+               }
+
+               $result = Autopromote::getAutopromoteGroups( $userMock );
+               if ( $editCount >= $requirement ) {
+                       $this->assertContains(
+                               'autoconfirmed',
+                               $result,
+                               'User must be promoted if they meet edit count requirement'
+                       );
+               } else {
+                       $this->assertNotContains(
+                               'autoconfirmed',
+                               $result,
+                               'User must not be promoted if they fail edit count requirement'
+                       );
+               }
+       }
+
+       public static function provideEditCountsAndRequirements() {
+               return [
+                       'user with sufficient editcount' => [ 100, 10 ],
+                       'user with insufficient editcount' => [ 4, 10 ],
+                       'edit count requirement set to 0' => [ 1, 0 ],
+               ];
+       }
+}
diff --git a/tests/phpunit/includes/CollationTest.php b/tests/phpunit/includes/CollationTest.php
deleted file mode 100644 (file)
index bf283aa..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<?php
-
-/**
- * Class CollationTest
- * @covers Collation
- * @covers IcuCollation
- * @covers IdentityCollation
- * @covers UppercaseCollation
- */
-class CollationTest extends MediaWikiLangTestCase {
-       protected function setUp() {
-               parent::setUp();
-               $this->checkPHPExtension( 'intl' );
-       }
-
-       /**
-        * Test to make sure, that if you
-        * have "X" and "XY", the binary
-        * sortkey also has "X" being a
-        * prefix of "XY". Our collation
-        * code makes this assumption.
-        *
-        * @param string $lang Language code for collator
-        * @param string $base Base string
-        * @param string $extended String containing base as a prefix.
-        *
-        * @dataProvider prefixDataProvider
-        */
-       public function testIsPrefix( $lang, $base, $extended ) {
-               $cp = Collator::create( $lang );
-               $cp->setStrength( Collator::PRIMARY );
-               $baseBin = $cp->getSortKey( $base );
-               // Remove sortkey terminator
-               $baseBin = rtrim( $baseBin, "\0" );
-               $extendedBin = $cp->getSortKey( $extended );
-               $this->assertStringStartsWith( $baseBin, $extendedBin, "$base is not a prefix of $extended" );
-       }
-
-       public static function prefixDataProvider() {
-               return [
-                       [ 'en', 'A', 'AA' ],
-                       [ 'en', 'A', 'AAA' ],
-                       [ 'en', 'Д', 'ДЂ' ],
-                       [ 'en', 'Д', 'ДA' ],
-                       // 'Ʒ' should expand to 'Z ' (note space).
-                       [ 'fi', 'Z', 'Ʒ' ],
-                       // 'Þ' should expand to 'th'
-                       [ 'sv', 't', 'Þ' ],
-                       // Javanese is a limited use alphabet, so should have 3 bytes
-                       // per character, so do some tests with it.
-                       [ 'en', 'ꦲ', 'ꦲꦤ' ],
-                       [ 'en', 'ꦲ', 'ꦲД' ],
-                       [ 'en', 'A', 'Aꦲ' ],
-               ];
-       }
-
-       /**
-        * Opposite of testIsPrefix
-        *
-        * @dataProvider notPrefixDataProvider
-        */
-       public function testNotIsPrefix( $lang, $base, $extended ) {
-               $cp = Collator::create( $lang );
-               $cp->setStrength( Collator::PRIMARY );
-               $baseBin = $cp->getSortKey( $base );
-               // Remove sortkey terminator
-               $baseBin = rtrim( $baseBin, "\0" );
-               $extendedBin = $cp->getSortKey( $extended );
-               $this->assertStringStartsNotWith( $baseBin, $extendedBin, "$base is a prefix of $extended" );
-       }
-
-       public static function notPrefixDataProvider() {
-               return [
-                       [ 'en', 'A', 'B' ],
-                       [ 'en', 'AC', 'ABC' ],
-                       [ 'en', 'Z', 'Ʒ' ],
-                       [ 'en', 'A', 'ꦲ' ],
-               ];
-       }
-
-       /**
-        * Test correct first letter is fetched.
-        *
-        * @param string $collation Collation name (aka uca-en)
-        * @param string $string String to get first letter of
-        * @param string $firstLetter Expected first letter.
-        *
-        * @dataProvider firstLetterProvider
-        */
-       public function testGetFirstLetter( $collation, $string, $firstLetter ) {
-               $col = Collation::factory( $collation );
-               $this->assertEquals( $firstLetter, $col->getFirstLetter( $string ) );
-       }
-
-       function firstLetterProvider() {
-               return [
-                       [ 'uppercase', 'Abc', 'A' ],
-                       [ 'uppercase', 'abc', 'A' ],
-                       [ 'identity', 'abc', 'a' ],
-                       [ 'uca-en', 'abc', 'A' ],
-                       [ 'uca-en', ' ', ' ' ],
-                       [ 'uca-en', 'Êveryone', 'E' ],
-                       [ 'uca-vi', 'Êveryone', 'Ê' ],
-                       // Make sure thorn is not a first letter.
-                       [ 'uca-sv', 'The', 'T' ],
-                       [ 'uca-sv', 'Å', 'Å' ],
-                       [ 'uca-hu', 'dzsdo', 'Dzs' ],
-                       [ 'uca-hu', 'dzdso', 'Dz' ],
-                       [ 'uca-hu', 'CSD', 'Cs' ],
-                       [ 'uca-root', 'CSD', 'C' ],
-                       [ 'uca-fi', 'Ǥ', 'G' ],
-                       [ 'uca-fi', 'Ŧ', 'T' ],
-                       [ 'uca-fi', 'Ʒ', 'Z' ],
-                       [ 'uca-fi', 'Ŋ', 'N' ],
-               ];
-       }
-}
index 4e95a30..a4e3bb9 100644 (file)
@@ -26,6 +26,7 @@ class ExtraParserTest extends MediaWikiTestCase {
                // FIXME: This test should pass without setting global content language
                $this->options = ParserOptions::newFromUserAndLang( new User, $contLang );
                $this->options->setTemplateCallback( [ __CLASS__, 'statelessFetchTemplate' ] );
+               $this->options->setWrapOutputClass( false );
                $this->parser = new Parser;
 
                MagicWord::clearCache();
@@ -40,6 +41,7 @@ class ExtraParserTest extends MediaWikiTestCase {
 
                $title = Title::newFromText( 'Unit test' );
                $options = ParserOptions::newFromUser( new User() );
+               $options->setWrapOutputClass( false );
                $this->assertEquals( "<p>$longLine</p>",
                        $this->parser->parse( $longLine, $title, $options )->getText() );
        }
index 2206fbd..33b6e2f 100644 (file)
@@ -102,22 +102,28 @@ class GlobalTest extends MediaWikiTestCase {
        }
 
        /**
+        * Intended to cover the relevant bits of ServiceWiring.php, as well as GlobalFunctions.php
         * @covers ::wfReadOnly
         */
        public function testReadOnlyEmpty() {
                global $wgReadOnly;
                $wgReadOnly = null;
 
+               MediaWiki\MediaWikiServices::getInstance()->getReadOnlyMode()->clearCache();
                $this->assertFalse( wfReadOnly() );
                $this->assertFalse( wfReadOnly() );
        }
 
        /**
+        * Intended to cover the relevant bits of ServiceWiring.php, as well as GlobalFunctions.php
         * @covers ::wfReadOnly
         */
        public function testReadOnlySet() {
                global $wgReadOnly, $wgReadOnlyFile;
 
+               $readOnlyMode = MediaWiki\MediaWikiServices::getInstance()->getReadOnlyMode();
+               $readOnlyMode->clearCache();
+
                $f = fopen( $wgReadOnlyFile, "wt" );
                fwrite( $f, 'Message' );
                fclose( $f );
@@ -127,12 +133,23 @@ class GlobalTest extends MediaWikiTestCase {
                $this->assertTrue( wfReadOnly() ); # Check cached
 
                unlink( $wgReadOnlyFile );
-               $wgReadOnly = null; # Clean cache
-
+               $readOnlyMode->clearCache();
                $this->assertFalse( wfReadOnly() );
                $this->assertFalse( wfReadOnly() );
        }
 
+       /**
+        * This behaviour could probably be deprecated. Several extensions rely on it as of 1.29.
+        * @covers ::wfReadOnlyReason
+        */
+       public function testReadOnlyGlobalChange() {
+               $this->assertFalse( wfReadOnlyReason() );
+               $this->setMwGlobals( [
+                       'wgReadOnly' => 'reason'
+               ] );
+               $this->assertSame( 'reason', wfReadOnlyReason() );
+       }
+
        public static function provideArrayToCGI() {
                return [
                        [ [], '' ], // empty
diff --git a/tests/phpunit/includes/GlobalFunctions/wfArrayFilterTest.php b/tests/phpunit/includes/GlobalFunctions/wfArrayFilterTest.php
new file mode 100644 (file)
index 0000000..afd80ff
--- /dev/null
@@ -0,0 +1,37 @@
+<?php
+
+class WfArrayFilterTest extends \PHPUnit_Framework_TestCase {
+       public function testWfArrayFilter() {
+               $arr = [ 'a' => 1, 'b' => 2, 'c' => 3 ];
+               $filtered = wfArrayFilter( $arr, function( $val, $key ) {
+                       return $key !== 'b';
+               } );
+               $this->assertSame( [ 'a' => 1, 'c' => 3 ], $filtered );
+
+               $arr = [ 'a' => 1, 'b' => 2, 'c' => 3 ];
+               $filtered = wfArrayFilter( $arr, function( $val, $key ) {
+                       return $val !== 2;
+               } );
+               $this->assertSame( [ 'a' => 1, 'c' => 3 ], $filtered );
+
+               $arr = [ 'a', 'b', 'c' ];
+               $filtered = wfArrayFilter( $arr, function( $val, $key ) {
+                       return $key !== 0;
+               } );
+               $this->assertSame( [ 1 => 'b',  2 => 'c' ], $filtered );
+       }
+
+       public function testWfArrayFilterByKey() {
+               $arr = [ 'a' => 1, 'b' => 2, 'c' => 3 ];
+               $filtered = wfArrayFilterByKey( $arr, function( $key ) {
+                       return $key !== 'b';
+               } );
+               $this->assertSame( [ 'a' => 1, 'c' => 3 ], $filtered );
+
+               $arr = [ 'a', 'b', 'c' ];
+               $filtered = wfArrayFilterByKey( $arr, function( $key ) {
+                       return $key !== 0;
+               } );
+               $this->assertSame( [ 1 => 'b',  2 => 'c' ], $filtered );
+       }
+}
index a72662f..037faa6 100644 (file)
@@ -303,7 +303,7 @@ class MediaWikiServicesTest extends MediaWikiTestCase {
                        'MainConfig' => [ 'MainConfig', Config::class ],
                        'SiteStore' => [ 'SiteStore', SiteStore::class ],
                        'SiteLookup' => [ 'SiteLookup', SiteLookup::class ],
-                       'StatsdDataFactory' => [ 'StatsdDataFactory', StatsdDataFactory::class ],
+                       'StatsdDataFactory' => [ 'StatsdDataFactory', MediawikiStatsdDataFactory::class ],
                        'InterwikiLookup' => [ 'InterwikiLookup', InterwikiLookup::class ],
                        'EventRelayerGroup' => [ 'EventRelayerGroup', EventRelayerGroup::class ],
                        'SearchEngineFactory' => [ 'SearchEngineFactory', SearchEngineFactory::class ],
index 58087c1..912bffe 100644 (file)
@@ -1,5 +1,6 @@
 <?php
-use MediaWiki\MediaWikiServices;
+
+use Wikimedia\TestingAccessWrapper;
 
 class MessageTest extends MediaWikiLangTestCase {
 
index 9893f8c..32fa468 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  *
  * @author Matthew Flaschen
@@ -342,6 +344,88 @@ class OutputPageTest extends MediaWikiTestCase {
                $this->assertEquals( $expectedHtml, $actualHtml );
        }
 
+       public static function provideBuildExemptModules() {
+               return [
+                       'empty' => [
+                               'exemptStyleModules' => [],
+                               '<meta name="ResourceLoaderDynamicStyles" content=""/>',
+                       ],
+                       'empty sets' => [
+                               'exemptStyleModules' => [ 'site' => [], 'noscript' => [], 'private' => [], 'user' => [] ],
+                               '<meta name="ResourceLoaderDynamicStyles" content=""/>',
+                       ],
+                       // @codingStandardsIgnoreStart Generic.Files.LineLength
+                       'default logged-out' => [
+                               'exemptStyleModules' => [ 'site' => [ 'site.styles' ] ],
+                               '<meta name="ResourceLoaderDynamicStyles" content=""/>' . "\n" .
+                               '<link rel="stylesheet" href="/w/load.php?debug=false&amp;lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=fallback"/>',
+                       ],
+                       'default logged-in' => [
+                               'exemptStyleModules' => [ 'site' => [ 'site.styles' ], 'user' => [ 'user.styles' ] ],
+                               '<meta name="ResourceLoaderDynamicStyles" content=""/>' . "\n" .
+                               '<link rel="stylesheet" href="/w/load.php?debug=false&amp;lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=fallback"/>' . "\n" .
+                               '<link rel="stylesheet" href="/w/load.php?debug=false&amp;lang=en&amp;modules=user.styles&amp;only=styles&amp;skin=fallback&amp;version=1e9z0ox"/>',
+                       ],
+                       'custom modules' => [
+                               'exemptStyleModules' => [
+                                       'site' => [ 'site.styles', 'example.site.a', 'example.site.b' ],
+                                       'user' => [ 'user.styles', 'example.user' ],
+                               ],
+                               '<meta name="ResourceLoaderDynamicStyles" content=""/>' . "\n" .
+                               '<link rel="stylesheet" href="/w/load.php?debug=false&amp;lang=en&amp;modules=example.site.a%2Cb&amp;only=styles&amp;skin=fallback"/>' . "\n" .
+                               '<link rel="stylesheet" href="/w/load.php?debug=false&amp;lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=fallback"/>' . "\n" .
+                               '<link rel="stylesheet" href="/w/load.php?debug=false&amp;lang=en&amp;modules=example.user&amp;only=styles&amp;skin=fallback&amp;version=0a56zyi"/>' . "\n" .
+                               '<link rel="stylesheet" href="/w/load.php?debug=false&amp;lang=en&amp;modules=user.styles&amp;only=styles&amp;skin=fallback&amp;version=1e9z0ox"/>',
+                       ],
+                       // @codingStandardsIgnoreEnd Generic.Files.LineLength
+               ];
+       }
+
+       /**
+        * @dataProvider provideBuildExemptModules
+        * @covers OutputPage::buildExemptModules
+        */
+       public function testBuildExemptModules( array $exemptStyleModules, $expect ) {
+               $this->setMwGlobals( [
+                       'wgResourceLoaderDebug' => false,
+                       'wgLoadScript' => '/w/load.php',
+                       // Stub wgCacheEpoch as it influences getVersionHash used for the
+                       // urls in the expected HTML
+                       'wgCacheEpoch' => '20140101000000',
+               ] );
+
+               // Set up stubs
+               $ctx = new RequestContext();
+               $ctx->setSkin( SkinFactory::getDefaultInstance()->makeSkin( 'fallback' ) );
+               $ctx->setLanguage( 'en' );
+               $outputPage = $this->getMockBuilder( 'OutputPage' )
+                       ->setConstructorArgs( [ $ctx ] )
+                       ->setMethods( [ 'isUserCssPreview', 'buildCssLinksArray' ] )
+                       ->getMock();
+               $outputPage->expects( $this->any() )
+                       ->method( 'isUserCssPreview' )
+                       ->willReturn( false );
+               $outputPage->expects( $this->any() )
+                       ->method( 'buildCssLinksArray' )
+                       ->willReturn( [] );
+               $rl = $outputPage->getResourceLoader();
+               $rl->setMessageBlobStore( new NullMessageBlobStore() );
+
+               // Register custom modules
+               $rl->register( [
+                       'example.site.a' => new ResourceLoaderTestModule( [ 'group' => 'site' ] ),
+                       'example.site.b' => new ResourceLoaderTestModule( [ 'group' => 'site' ] ),
+                       'example.user' => new ResourceLoaderTestModule( [ 'group' => 'user' ] ),
+               ] );
+
+               $outputPage = TestingAccessWrapper::newFromObject( $outputPage );
+               $outputPage->rlExemptStyleModules = $exemptStyleModules;
+               $this->assertEquals(
+                       $expect,
+                       strval( $outputPage->buildExemptModules() )
+               );
+       }
+
        /**
         * @dataProvider provideVaryHeaders
         * @covers OutputPage::addVaryHeader
index cf2e120..a6cf14a 100644 (file)
@@ -1,4 +1,7 @@
 <?php
+
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @group Search
  * @group Database
@@ -207,6 +210,11 @@ class PrefixSearchTest extends MediaWikiLangTestCase {
 
                $namespaces = isset( $case['namespaces'] ) ? $case['namespaces'] : [];
 
+               if ( wfGetDB( DB_REPLICA )->getType() === 'postgres' ) {
+                       // Postgres will sort lexicographically on utf8 code units (" " before "/")
+                       sort( $case['results'], SORT_STRING );
+               }
+
                $searcher = new StringPrefixSearch;
                $results = $searcher->search( $case['query'], 3, $namespaces );
                $this->assertEquals(
@@ -229,6 +237,11 @@ class PrefixSearchTest extends MediaWikiLangTestCase {
                $searcher = new StringPrefixSearch;
                $results = $searcher->search( $case['query'], 3, $namespaces, 1 );
 
+               if ( wfGetDB( DB_REPLICA )->getType() === 'postgres' ) {
+                       // Postgres will sort lexicographically on utf8 code units (" " before "/")
+                       sort( $case['results'], SORT_STRING );
+               }
+
                // We don't expect the first result when offsetting
                array_shift( $case['results'] );
                // And sometimes we expect a different last result
diff --git a/tests/phpunit/includes/ReadOnlyModeTest.php b/tests/phpunit/includes/ReadOnlyModeTest.php
new file mode 100644 (file)
index 0000000..b14424f
--- /dev/null
@@ -0,0 +1,194 @@
+<?php
+
+/**
+ * @group Database
+ *
+ * @covers ReadOnlyMode
+ * @covers ConfiguredReadOnlyMode
+ */
+class ReadOnlyModeTest extends MediaWikiTestCase {
+       public function provider() {
+               $rawTests = [
+                       'None of anything' => [
+                               'confMessage' => null,
+                               'hasFileName' => false,
+                               'fileContents' => false,
+                               'lbMessage' => false,
+                               'expectedState' => false,
+                               'expectedMessage' => false,
+                               'expectedConfState' => false,
+                               'expectedConfMessage' => false
+                       ],
+                       'File missing' => [
+                               'confMessage' => null,
+                               'hasFileName' => true,
+                               'fileContents' => false,
+                               'lbMessage' => false,
+                               'expectedState' => false,
+                               'expectedMessage' => false,
+                               'expectedConfState' => false,
+                               'expectedConfMessage' => false
+                       ],
+                       'File empty' => [
+                               'confMessage' => null,
+                               'hasFileName' => true,
+                               'fileContents' => '',
+                               'lbMessage' => false,
+                               'expectedState' => false,
+                               'expectedMessage' => false,
+                               'expectedConfState' => false,
+                               'expectedConfMessage' => false
+                       ],
+                       'File has message' => [
+                               'confMessage' => null,
+                               'hasFileName' => true,
+                               'fileContents' => 'Message',
+                               'lbMessage' => false,
+                               'expectedState' => true,
+                               'expectedMessage' => 'Message',
+                               'expectedConfState' => true,
+                               'expectedConfMessage' => 'Message',
+                       ],
+                       'Conf has message' => [
+                               'confMessage' => 'Message',
+                               'hasFileName' => false,
+                               'fileContents' => false,
+                               'lbMessage' => false,
+                               'expectedState' => true,
+                               'expectedMessage' => 'Message',
+                               'expectedConfState' => true,
+                               'expectedConfMessage' => 'Message'
+                       ],
+                       "Conf=false means don't check the file" => [
+                               'confMessage' => false,
+                               'hasFileName' => true,
+                               'fileContents' => 'Message',
+                               'lbMessage' => false,
+                               'expectedState' => false,
+                               'expectedMessage' => false,
+                               'expectedConfState' => false,
+                               'expectedConfMessage' => false,
+                       ],
+                       'LB has message' => [
+                               'confMessage' => null,
+                               'hasFileName' => false,
+                               'fileContents' => false,
+                               'lbMessage' => 'Message',
+                               'expectedState' => true,
+                               'expectedMessage' => 'Message',
+                               'expectedConfState' => false,
+                               'expectedConfMessage' => false
+                       ],
+                       'All three have a message: conf wins' => [
+                               'confMessage' => 'conf',
+                               'hasFileName' => true,
+                               'fileContents' => 'file',
+                               'lbMessage' => 'lb',
+                               'expectedState' => true,
+                               'expectedMessage' => 'conf',
+                               'expectedConfState' => true,
+                               'expectedConfMessage' => 'conf'
+                       ]
+               ];
+               $cookedTests = [];
+               foreach ( $rawTests as $desc => $test ) {
+                       $cookedTests[$desc] = [ $test ];
+               }
+               return $cookedTests;
+       }
+
+       private function createMode( $params, $makeLB ) {
+               $config = new HashConfig( [
+                       'ReadOnly' => $params['confMessage'],
+                       'ReadOnlyFile' => $this->createFile( $params ),
+               ] );
+
+               $rom = new ConfiguredReadOnlyMode( $config );
+
+               if ( $makeLB ) {
+                       $lb = $this->createLB( $params );
+                       $rom = new ReadOnlyMode( $rom, $lb );
+               }
+
+               return $rom;
+       }
+
+       private function createLB( $params ) {
+               $lb = $this->getMockBuilder( \Wikimedia\Rdbms\LoadBalancer::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $lb->expects( $this->any() )->method( 'getReadOnlyReason' )
+                       ->willReturn( $params['lbMessage'] );
+               return $lb;
+       }
+
+       private function createFile( $params ) {
+               if ( $params['hasFileName'] ) {
+                       $fileName = $this->getNewTempFile();
+
+                       if ( $params['fileContents'] === false ) {
+                               unlink( $fileName );
+                       } else {
+                               file_put_contents( $fileName, $params['fileContents'] );
+                       }
+               } else {
+                       $fileName = null;
+               }
+               return $fileName;
+       }
+
+       /**
+        * @dataProvider provider
+        */
+       public function testWithLB( $params ) {
+               $rom = $this->createMode( $params, true );
+               $this->assertSame( $params['expectedMessage'], $rom->getReason() );
+               $this->assertSame( $params['expectedState'], $rom->isReadOnly() );
+       }
+
+       /**
+        * @dataProvider provider
+        */
+       public function testWithoutLB( $params ) {
+               $cro = $this->createMode( $params, false );
+               $this->assertSame( $params['expectedConfMessage'], $cro->getReason() );
+               $this->assertSame( $params['expectedConfState'], $cro->isReadOnly() );
+       }
+
+       public function testSetReadOnlyReason() {
+               $rom = $this->createMode(
+                       [
+                               'confMessage' => 'conf',
+                               'hasFileName' => false,
+                               'fileContents' => false,
+                               'lbMessage' => 'lb'
+                       ],
+                       true );
+               $rom->setReason( 'override' );
+               $this->assertSame( 'override', $rom->getReason() );
+       }
+
+       /**
+        * @covers ReadOnlyMode::clearCache
+        * @covers ConfiguredReadOnlyMode::clearCache
+        */
+       public function testClearCache() {
+               $fileName = $this->getNewTempFile();
+               unlink( $fileName );
+               $config = new HashConfig( [
+                       'ReadOnly' => null,
+                       'ReadOnlyFile' => $fileName,
+               ] );
+               $cro = new ConfiguredReadOnlyMode( $config );
+               $lb = $this->createLB( [ 'lbMessage' => false ] );
+               $rom = new ReadOnlyMode( $cro, $lb );
+
+               $this->assertSame( false, $rom->getReason(), 'initial' );
+
+               file_put_contents( $fileName, 'file' );
+               $this->assertSame( false, $rom->getReason(), 'stale' );
+
+               $rom->clearCache();
+               $this->assertSame( 'file', $rom->getReason(), 'fresh' );
+       }
+}
index 862b7d0..c237c50 100644 (file)
@@ -362,4 +362,25 @@ class SanitizerTest extends MediaWikiTestCase {
                        [ '+1 +2', '+1', '+2' ],
                ];
        }
+
+       /**
+        * @dataProvider provideIsReservedDataAttribute
+        */
+       public function testIsReservedDataAttribute( $attr, $expected ) {
+               $this->assertSame( $expected, Sanitizer::isReservedDataAttribute( $attr ) );
+       }
+
+       public static function provideIsReservedDataAttribute() {
+               return [
+                       [ 'foo', false ],
+                       [ 'data', false ],
+                       [ 'data-foo', false ],
+                       [ 'data-mw', true ],
+                       [ 'data-ooui', true ],
+                       [ 'data-parsoid', true ],
+                       [ 'data-mw-foo', true ],
+                       [ 'data-ooui-foo', true ],
+                       [ 'data-mwfoo', true ], // could be false but this is how it's implemented currently
+               ];
+       }
 }
index 152602a..ab23136 100644 (file)
@@ -8,6 +8,9 @@ require __DIR__ . "/../../../maintenance/runJobs.php";
 class TemplateCategoriesTest extends MediaWikiLangTestCase {
 
        /**
+        * Broken per T165099.
+        *
+        * @group Broken
         * @covers Title::getParentCategories
         */
        public function testTemplateCategories() {
diff --git a/tests/phpunit/includes/TestingAccessWrapper.php b/tests/phpunit/includes/TestingAccessWrapper.php
deleted file mode 100644 (file)
index 7332e15..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-/**
- * Circumvent access restrictions on object internals
- *
- * This can be helpful for writing tests that can probe object internals,
- * without having to modify the class under test to accomodate.
- *
- * Wrap an object with private methods as follows:
- *    $title = TestingAccessWrapper::newFromObject( Title::newFromDBkey( $key ) );
- *
- * You can access private and protected instance methods and variables:
- *    $formatter = $title->getTitleFormatter();
- *
- * TODO:
- * - Organize other helper classes in tests/testHelpers.inc into a directory.
- */
-class TestingAccessWrapper {
-       /** @var mixed The object, or the class name for static-only access */
-       public $object;
-
-       /**
-        * Return the same object, without access restrictions.
-        */
-       public static function newFromObject( $object ) {
-               if ( !is_object( $object ) ) {
-                       throw new InvalidArgumentException( __METHOD__ . ' must be called with an object' );
-               }
-               $wrapper = new TestingAccessWrapper();
-               $wrapper->object = $object;
-               return $wrapper;
-       }
-
-       /**
-        * Allow access to non-public static methods and properties of the class.
-        * Use non-static access,
-        */
-       public static function newFromClass( $className ) {
-               if ( !is_string( $className ) ) {
-                       throw new InvalidArgumentException( __METHOD__ . ' must be called with a class name' );
-               }
-               $wrapper = new TestingAccessWrapper();
-               $wrapper->object = $className;
-               return $wrapper;
-       }
-
-       public function __call( $method, $args ) {
-               $methodReflection = $this->getMethod( $method );
-
-               if ( $this->isStatic() && !$methodReflection->isStatic() ) {
-                       throw new DomainException( __METHOD__ . ': Cannot call non-static when wrapping static class' );
-               }
-
-               return $methodReflection->invokeArgs( $methodReflection->isStatic() ? null : $this->object,
-                       $args );
-       }
-
-       public function __set( $name, $value ) {
-               $propertyReflection = $this->getProperty( $name );
-
-               if ( $this->isStatic() && !$propertyReflection->isStatic() ) {
-                       throw new DomainException( __METHOD__ . ': Cannot set property when wrapping static class' );
-               }
-
-               $propertyReflection->setValue( $this->object, $value );
-       }
-
-       public function __get( $name ) {
-               $propertyReflection = $this->getProperty( $name );
-
-               if ( $this->isStatic() && !$propertyReflection->isStatic() ) {
-                       throw new DomainException( __METHOD__ . ': Cannot get property when wrapping static class' );
-               }
-
-               return $propertyReflection->getValue( $this->object );
-       }
-
-       private function isStatic() {
-               return is_string( $this->object );
-       }
-
-       /**
-        * Return a property and make it accessible.
-        * @param string $name
-        * @return ReflectionMethod
-        */
-       private function getMethod( $name ) {
-               $classReflection = new ReflectionClass( $this->object );
-               $methodReflection = $classReflection->getMethod( $name );
-               $methodReflection->setAccessible( true );
-               return $methodReflection;
-       }
-
-       /**
-        * Return a property and make it accessible.
-        *
-        * ReflectionClass::getProperty() fails if the private property is defined
-        * in a parent class. This works more like ReflectionClass::getMethod().
-        *
-        * @param string $name
-        * @return ReflectionProperty
-        * @throws ReflectionException
-        */
-       private function getProperty( $name ) {
-               $classReflection = new ReflectionClass( $this->object );
-               try {
-                       $propertyReflection = $classReflection->getProperty( $name );
-               } catch ( ReflectionException $ex ) {
-                       while ( true ) {
-                               $classReflection = $classReflection->getParentClass();
-                               if ( !$classReflection ) {
-                                       throw $ex;
-                               }
-                               try {
-                                       $propertyReflection = $classReflection->getProperty( $name );
-                               } catch ( ReflectionException $ex2 ) {
-                                       continue;
-                               }
-                               if ( $propertyReflection->isPrivate() ) {
-                                       break;
-                               } else {
-                                       throw $ex;
-                               }
-                       }
-               }
-               $propertyReflection->setAccessible( true );
-               return $propertyReflection;
-       }
-}
diff --git a/tests/phpunit/includes/TestingAccessWrapperTest.php b/tests/phpunit/includes/TestingAccessWrapperTest.php
deleted file mode 100644 (file)
index 23eb023..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-class TestingAccessWrapperTest extends MediaWikiTestCase {
-       protected $raw;
-       protected $wrapped;
-       protected $wrappedStatic;
-
-       function setUp() {
-               parent::setUp();
-
-               require_once __DIR__ . '/../data/helpers/WellProtectedClass.php';
-               $this->raw = new WellProtectedClass();
-               $this->wrapped = TestingAccessWrapper::newFromObject( $this->raw );
-               $this->wrappedStatic = TestingAccessWrapper::newFromClass( 'WellProtectedClass' );
-       }
-
-       /**
-        * @expectedException InvalidArgumentException
-        */
-       function testConstructorException() {
-               TestingAccessWrapper::newFromObject( 'WellProtectedClass' );
-       }
-
-       /**
-        * @expectedException InvalidArgumentException
-        */
-       function testStaticConstructorException() {
-               TestingAccessWrapper::newFromClass( new WellProtectedClass() );
-       }
-
-       function testGetProperty() {
-               $this->assertSame( 1, $this->wrapped->property );
-               $this->assertSame( 42, $this->wrapped->privateProperty );
-               $this->assertSame( 9000, $this->wrapped->privateParentProperty );
-               $this->assertSame( 'sp', $this->wrapped->staticProperty );
-               $this->assertSame( 'spp', $this->wrapped->staticPrivateProperty );
-               $this->assertSame( 'sp', $this->wrappedStatic->staticProperty );
-               $this->assertSame( 'spp', $this->wrappedStatic->staticPrivateProperty );
-       }
-
-       /**
-        * @expectedException DomainException
-        */
-       function testGetException() {
-               $this->wrappedStatic->property;
-       }
-
-       function testSetProperty() {
-               $this->wrapped->property = 10;
-               $this->assertSame( 10, $this->wrapped->property );
-               $this->assertSame( 10, $this->raw->getProperty() );
-
-               $this->wrapped->privateProperty = 11;
-               $this->assertSame( 11, $this->wrapped->privateProperty );
-               $this->assertSame( 11, $this->raw->getPrivateProperty() );
-
-               $this->wrapped->privateParentProperty = 12;
-               $this->assertSame( 12, $this->wrapped->privateParentProperty );
-               $this->assertSame( 12, $this->raw->getPrivateParentProperty() );
-
-               $this->wrapped->staticProperty = 'x';
-               $this->assertSame( 'x', $this->wrapped->staticProperty );
-               $this->assertSame( 'x', $this->wrappedStatic->staticProperty );
-
-               $this->wrapped->staticPrivateProperty = 'y';
-               $this->assertSame( 'y', $this->wrapped->staticPrivateProperty );
-               $this->assertSame( 'y', $this->wrappedStatic->staticPrivateProperty );
-
-               $this->wrappedStatic->staticProperty = 'X';
-               $this->assertSame( 'X', $this->wrapped->staticProperty );
-               $this->assertSame( 'X', $this->wrappedStatic->staticProperty );
-
-               $this->wrappedStatic->staticPrivateProperty = 'Y';
-               $this->assertSame( 'Y', $this->wrapped->staticPrivateProperty );
-               $this->assertSame( 'Y', $this->wrappedStatic->staticPrivateProperty );
-
-               // don't rely on PHPUnit to restore static properties
-               $this->wrapped->staticProperty = 'sp';
-               $this->wrapped->staticPrivateProperty = 'spp';
-       }
-
-       /**
-        * @expectedException DomainException
-        */
-       function testSetException() {
-               $this->wrappedStatic->property = 1;
-       }
-
-       function testCallMethod() {
-               $this->wrapped->incrementPropertyValue();
-               $this->assertSame( 2, $this->wrapped->property );
-               $this->assertSame( 2, $this->raw->getProperty() );
-
-               $this->wrapped->incrementPrivatePropertyValue();
-               $this->assertSame( 43, $this->wrapped->privateProperty );
-               $this->assertSame( 43, $this->raw->getPrivateProperty() );
-
-               $this->wrapped->incrementPrivateParentPropertyValue();
-               $this->assertSame( 9001, $this->wrapped->privateParentProperty );
-               $this->assertSame( 9001, $this->raw->getPrivateParentProperty() );
-
-               $this->assertSame( 'sm', $this->wrapped->staticMethod() );
-               $this->assertSame( 'spm', $this->wrapped->staticPrivateMethod() );
-               $this->assertSame( 'sm', $this->wrappedStatic->staticMethod() );
-               $this->assertSame( 'spm', $this->wrappedStatic->staticPrivateMethod() );
-       }
-
-       function testCallMethodTwoArgs() {
-               $this->assertSame( 'two', $this->wrapped->whatSecondArg( 'one', 'two' ) );
-       }
-
-       /**
-        * @expectedException DomainException
-        */
-       function testCallMethodException() {
-               $this->wrappedStatic->incrementPropertyValue();
-       }
-
-}
index 238b65f..6c44999 100644 (file)
@@ -716,28 +716,33 @@ class TitleTest extends MediaWikiTestCase {
                return [
                        // ns = 0
                        [
-                               Title::makeTitle( NS_MAIN, 'Foobar' ),
-                               'Foobar'
+                               Title::makeTitle( NS_MAIN, 'Foo bar' ),
+                               'Foo bar'
                        ],
                        // ns = 2
                        [
-                               Title::makeTitle( NS_USER, 'Foobar' ),
-                               'User:Foobar'
+                               Title::makeTitle( NS_USER, 'Foo bar' ),
+                               'User:Foo bar'
+                       ],
+                       // ns = 3
+                       [
+                               Title::makeTitle( NS_USER_TALK, 'Foo bar' ),
+                               'User talk:Foo bar'
                        ],
                        // fragment not included
                        [
-                               Title::makeTitle( NS_MAIN, 'Foobar', 'fragment' ),
-                               'Foobar'
+                               Title::makeTitle( NS_MAIN, 'Foo bar', 'fragment' ),
+                               'Foo bar'
                        ],
                        // ns = -2
                        [
-                               Title::makeTitle( NS_MEDIA, 'Foobar' ),
-                               'Media:Foobar'
+                               Title::makeTitle( NS_MEDIA, 'Foo bar' ),
+                               'Media:Foo bar'
                        ],
                        // non-existent namespace
                        [
-                               Title::makeTitle( 100000, 'Foobar' ),
-                               ':Foobar'
+                               Title::makeTitle( 100777, 'Foo bar' ),
+                               'Special:Badtitle/NS100777:Foo bar'
                        ],
                ];
        }
@@ -749,4 +754,47 @@ class TitleTest extends MediaWikiTestCase {
        public function testGetPrefixedText( Title $title, $expected ) {
                $this->assertEquals( $expected, $title->getPrefixedText() );
        }
+
+       public function provideGetPrefixedDBKey() {
+               return [
+                       // ns = 0
+                       [
+                               Title::makeTitle( NS_MAIN, 'Foo_bar' ),
+                               'Foo_bar'
+                       ],
+                       // ns = 2
+                       [
+                               Title::makeTitle( NS_USER, 'Foo_bar' ),
+                               'User:Foo_bar'
+                       ],
+                       // ns = 3
+                       [
+                               Title::makeTitle( NS_USER_TALK, 'Foo_bar' ),
+                               'User_talk:Foo_bar'
+                       ],
+                       // fragment not included
+                       [
+                               Title::makeTitle( NS_MAIN, 'Foo_bar', 'fragment' ),
+                               'Foo_bar'
+                       ],
+                       // ns = -2
+                       [
+                               Title::makeTitle( NS_MEDIA, 'Foo_bar' ),
+                               'Media:Foo_bar'
+                       ],
+                       // non-existent namespace
+                       [
+                               Title::makeTitle( 100777, 'Foo_bar' ),
+                               'Special:Badtitle/NS100777:Foo_bar'
+                       ],
+               ];
+       }
+
+       /**
+        * @covers Title::getPrefixedDBKey
+        * @dataProvider provideGetPrefixedDBKey
+        */
+       public function testGetPrefixedDBKey( Title $title, $expected ) {
+               $this->assertEquals( $expected, $title->getPrefixedDBkey() );
+       }
 }
index b71e8f4..f31028d 100644 (file)
@@ -21,8 +21,7 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
         */
        private function getMockLoadBalancer(
                $mockDb,
-               $expectedConnectionType = null,
-               $readOnlyReason = false
+               $expectedConnectionType = null
        ) {
                $mock = $this->getMockBuilder( LoadBalancer::class )
                        ->disableOriginalConstructor()
@@ -37,9 +36,6 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
                                ->method( 'getConnectionRef' )
                                ->will( $this->returnValue( $mockDb ) );
                }
-               $mock->expects( $this->any() )
-                       ->method( 'getReadOnlyReason' )
-                       ->will( $this->returnValue( $readOnlyReason ) );
                return $mock;
        }
 
@@ -58,6 +54,19 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
                return $mock;
        }
 
+       /**
+        * @return PHPUnit_Framework_MockObject_MockObject|ReadOnlyMode
+        */
+       private function getMockReadOnlyMode( $readOnly = false ) {
+               $mock = $this->getMockBuilder( ReadOnlyMode::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $mock->expects( $this->any() )
+                       ->method( 'isReadOnly' )
+                       ->will( $this->returnValue( $readOnly ) );
+               return $mock;
+       }
+
        /**
         * @param int $id
         * @return PHPUnit_Framework_MockObject_MockObject|User
@@ -88,10 +97,13 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
                return $fakeRow;
        }
 
-       private function newWatchedItemStore( LoadBalancer $loadBalancer, HashBagOStuff $cache ) {
+       private function newWatchedItemStore( LoadBalancer $loadBalancer, HashBagOStuff $cache,
+               ReadOnlyMode $readOnlyMode
+       ) {
                return new WatchedItemStore(
                        $loadBalancer,
-                       $cache
+                       $cache,
+                       $readOnlyMode
                );
        }
 
@@ -118,7 +130,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertEquals( 12, $store->countWatchedItems( $user ) );
@@ -148,7 +161,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertEquals( 7, $store->countWatchers( $titleValue ) );
@@ -199,7 +213,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $expected = [
@@ -265,7 +280,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $expected = [
@@ -313,7 +329,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertEquals( 7, $store->countVisitingWatchers( $titleValue, '111' ) );
@@ -392,7 +409,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $expected = [
@@ -494,7 +512,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $expected = [
@@ -547,7 +566,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $expected = [
@@ -584,7 +604,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertEquals( 9, $store->countUnreadNotifications( $user ) );
@@ -618,7 +639,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertSame(
@@ -655,7 +677,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertEquals(
@@ -685,7 +708,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $this->getMockCache()
+                       $this->getMockCache(),
+                       $this->getMockReadOnlyMode()
                );
 
                $store->duplicateEntry(
@@ -743,7 +767,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $store->duplicateEntry(
@@ -789,7 +814,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $store->duplicateAllAssociatedEntries(
@@ -882,7 +908,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $store->duplicateAllAssociatedEntries(
@@ -914,7 +941,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $store->addWatch(
@@ -934,7 +962,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $store->addWatch(
@@ -945,8 +974,9 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
        public function testAddWatchBatchForUser_readOnlyDBReturnsFalse() {
                $store = $this->newWatchedItemStore(
-                       $this->getMockLoadBalancer( $this->getMockDb(), null, 'Some Reason' ),
-                       $this->getMockCache()
+                       $this->getMockLoadBalancer( $this->getMockDb() ),
+                       $this->getMockCache(),
+                       $this->getMockReadOnlyMode( true )
                );
 
                $this->assertFalse(
@@ -991,7 +1021,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $mockUser = $this->getMockNonAnonUserWithId( 1 );
@@ -1015,7 +1046,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertFalse(
@@ -1038,7 +1070,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertTrue(
@@ -1072,7 +1105,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $watchedItem = $store->loadWatchedItem(
@@ -1106,7 +1140,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertFalse(
@@ -1128,7 +1163,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertFalse(
@@ -1163,7 +1199,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertTrue(
@@ -1198,7 +1235,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertFalse(
@@ -1221,7 +1259,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertFalse(
@@ -1265,7 +1304,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $watchedItem = $store->getWatchedItem(
@@ -1299,7 +1339,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertEquals(
@@ -1336,7 +1377,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertFalse(
@@ -1359,7 +1401,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertFalse(
@@ -1399,7 +1442,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
                $user = $this->getMockNonAnonUserWithId( 1 );
 
@@ -1449,7 +1493,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $mockLoadBalancer,
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $watchedItems = $store->getWatchedItemsForUser(
@@ -1462,7 +1507,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
        public function testGetWatchedItemsForUser_badSortOptionThrowsException() {
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $this->getMockDb() ),
-                       $this->getMockCache()
+                       $this->getMockCache(),
+                       $this->getMockReadOnlyMode()
                );
 
                $this->setExpectedException( 'InvalidArgumentException' );
@@ -1503,7 +1549,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertTrue(
@@ -1539,7 +1586,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertFalse(
@@ -1562,7 +1610,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertFalse(
@@ -1629,7 +1678,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertEquals(
@@ -1679,7 +1729,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertEquals(
@@ -1740,7 +1791,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertEquals(
@@ -1780,7 +1832,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertEquals(
@@ -1806,7 +1859,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertEquals(
@@ -1830,7 +1884,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertFalse(
@@ -1863,7 +1918,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertFalse(
@@ -1908,7 +1964,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                // Note: This does not actually assert the job is correct
@@ -1948,7 +2005,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                // Note: This does not actually assert the job is correct
@@ -2041,7 +2099,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $callableCallCounter = 0;
@@ -2107,7 +2166,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $addUpdateCallCounter = 0;
@@ -2182,7 +2242,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $callableCallCounter = 0;
@@ -2248,7 +2309,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $addUpdateCallCounter = 0;
@@ -2325,7 +2387,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $addUpdateCallCounter = 0;
@@ -2370,7 +2433,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
        public function testSetNotificationTimestampsForUser_anonUser() {
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $this->getMockDb() ),
-                       $this->getMockCache()
+                       $this->getMockCache(),
+                       $this->getMockReadOnlyMode()
                );
                $this->assertFalse( $store->setNotificationTimestampsForUser( $this->getAnonUser(), '' ) );
        }
@@ -2396,7 +2460,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $this->getMockCache()
+                       $this->getMockCache(),
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertTrue(
@@ -2425,7 +2490,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $this->getMockCache()
+                       $this->getMockCache(),
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertTrue(
@@ -2463,7 +2529,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $this->getMockCache()
+                       $this->getMockCache(),
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertTrue(
@@ -2505,7 +2572,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $this->assertEquals(
@@ -2545,7 +2613,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                $watchers = $store->updateNotificationTimestamp(
@@ -2588,7 +2657,8 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
 
                $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
-                       $mockCache
+                       $mockCache,
+                       $this->getMockReadOnlyMode()
                );
 
                // This will add the item to the cache
index 7327e85..ee0ad94 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @group API
  * @group Database
@@ -172,4 +174,43 @@ class ApiBaseTest extends ApiTestCase {
                ], $user ) );
        }
 
+       /**
+        * @covers ApiBase::dieStatus
+        */
+       public function testDieStatus() {
+               $mock = new MockApi();
+
+               $status = StatusValue::newGood();
+               $status->error( 'foo' );
+               $status->warning( 'bar' );
+               try {
+                       $mock->dieStatus( $status );
+                       $this->fail( 'Expected exception not thrown' );
+               } catch ( ApiUsageException $ex ) {
+                       $this->assertTrue( ApiTestCase::apiExceptionHasCode( $ex, 'foo' ), 'Exception has "foo"' );
+                       $this->assertFalse( ApiTestCase::apiExceptionHasCode( $ex, 'bar' ), 'Exception has "bar"' );
+               }
+
+               $status = StatusValue::newGood();
+               $status->warning( 'foo' );
+               $status->warning( 'bar' );
+               try {
+                       $mock->dieStatus( $status );
+                       $this->fail( 'Expected exception not thrown' );
+               } catch ( ApiUsageException $ex ) {
+                       $this->assertTrue( ApiTestCase::apiExceptionHasCode( $ex, 'foo' ), 'Exception has "foo"' );
+                       $this->assertTrue( ApiTestCase::apiExceptionHasCode( $ex, 'bar' ), 'Exception has "bar"' );
+               }
+
+               $status = StatusValue::newGood();
+               $status->setOk( false );
+               try {
+                       $mock->dieStatus( $status );
+                       $this->fail( 'Expected exception not thrown' );
+               } catch ( ApiUsageException $ex ) {
+                       $this->assertTrue( ApiTestCase::apiExceptionHasCode( $ex, 'unknownerror-nocode' ),
+                               'Exception has "unknownerror-nocode"' );
+               }
+       }
+
 }
diff --git a/tests/phpunit/includes/api/ApiComparePagesTest.php b/tests/phpunit/includes/api/ApiComparePagesTest.php
new file mode 100644 (file)
index 0000000..989d6bb
--- /dev/null
@@ -0,0 +1,611 @@
+<?php
+
+/**
+ * @group API
+ * @group Database
+ * @group medium
+ * @covers ApiComparePages
+ */
+class ApiComparePagesTest extends ApiTestCase {
+
+       protected static $repl = [];
+
+       protected function setUp() {
+               parent::setUp();
+
+               // Set $wgExternalDiffEngine to something bogus to try to force use of
+               // the PHP engine rather than wikidiff2.
+               $this->setMwGlobals( [
+                       'wgExternalDiffEngine' => '/dev/null',
+               ] );
+       }
+
+       protected function addPage( $page, $text, $model = CONTENT_MODEL_WIKITEXT ) {
+               $title = Title::newFromText( 'ApiComparePagesTest ' . $page );
+               $content = ContentHandler::makeContent( $text, $title, $model );
+
+               $page = WikiPage::factory( $title );
+               $user = static::getTestSysop()->getUser();
+               $status = $page->doEditContent(
+                       $content, 'Test for ApiComparePagesTest: ' . $text, 0, false, $user
+               );
+               if ( !$status->isOk() ) {
+                       $this->fail( "Failed to create $title: " . $status->getWikiText( false, false, 'en' ) );
+               }
+               return $status->value['revision']->getId();
+       }
+
+       public function addDBDataOnce() {
+               $user = static::getTestSysop()->getUser();
+               self::$repl['creator'] = $user->getName();
+               self::$repl['creatorid'] = $user->getId();
+
+               self::$repl['revA1'] = $this->addPage( 'A', 'A 1' );
+               self::$repl['revA2'] = $this->addPage( 'A', 'A 2' );
+               self::$repl['revA3'] = $this->addPage( 'A', 'A 3' );
+               self::$repl['revA4'] = $this->addPage( 'A', 'A 4' );
+               self::$repl['pageA'] = Title::newFromText( 'ApiComparePagesTest A' )->getArticleId();
+
+               self::$repl['revB1'] = $this->addPage( 'B', 'B 1' );
+               self::$repl['revB2'] = $this->addPage( 'B', 'B 2' );
+               self::$repl['revB3'] = $this->addPage( 'B', 'B 3' );
+               self::$repl['revB4'] = $this->addPage( 'B', 'B 4' );
+               self::$repl['pageB'] = Title::newFromText( 'ApiComparePagesTest B' )->getArticleId();
+
+               self::$repl['revC1'] = $this->addPage( 'C', 'C 1' );
+               self::$repl['revC2'] = $this->addPage( 'C', 'C 2' );
+               self::$repl['revC3'] = $this->addPage( 'C', 'C 3' );
+               self::$repl['pageC'] = Title::newFromText( 'ApiComparePagesTest C' )->getArticleId();
+
+               $id = $this->addPage( 'D', 'D 1' );
+               self::$repl['pageD'] = Title::newFromText( 'ApiComparePagesTest D' )->getArticleId();
+               wfGetDB( DB_MASTER )->delete( 'revision', [ 'rev_id' => $id ] );
+
+               self::$repl['revE1'] = $this->addPage( 'E', 'E 1' );
+               self::$repl['revE2'] = $this->addPage( 'E', 'E 2' );
+               self::$repl['revE3'] = $this->addPage( 'E', 'E 3' );
+               self::$repl['revE4'] = $this->addPage( 'E', 'E 4' );
+               self::$repl['pageE'] = Title::newFromText( 'ApiComparePagesTest E' )->getArticleId();
+               wfGetDB( DB_MASTER )->update(
+                       'page', [ 'page_latest' => 0 ], [ 'page_id' => self::$repl['pageE'] ]
+               );
+
+               WikiPage::factory( Title::newFromText( 'ApiComparePagesTest C' ) )
+                       ->doDeleteArticleReal( 'Test for ApiComparePagesTest' );
+
+               RevisionDeleter::createList(
+                       'revision',
+                       RequestContext::getMain(),
+                       Title::newFromText( 'ApiComparePagesTest B' ),
+                       [ self::$repl['revB2'] ]
+               )->setVisibility( [
+                       'value' => [
+                               Revision::DELETED_TEXT => 1,
+                               Revision::DELETED_USER => 1,
+                               Revision::DELETED_COMMENT => 1,
+                       ],
+                       'comment' => 'Test for ApiComparePages',
+               ] );
+
+               RevisionDeleter::createList(
+                       'revision',
+                       RequestContext::getMain(),
+                       Title::newFromText( 'ApiComparePagesTest B' ),
+                       [ self::$repl['revB3'] ]
+               )->setVisibility( [
+                       'value' => [
+                               Revision::DELETED_USER => 1,
+                               Revision::DELETED_COMMENT => 1,
+                               Revision::DELETED_RESTRICTED => 1,
+                       ],
+                       'comment' => 'Test for ApiComparePages',
+               ] );
+
+               Title::clearCaches(); // Otherwise it has the wrong latest revision for some reason
+       }
+
+       protected function doReplacements( &$value ) {
+               if ( is_string( $value ) ) {
+                       if ( preg_match( '/^{{REPL:(.+?)}}$/', $value, $m ) ) {
+                               $value = self::$repl[$m[1]];
+                       } else {
+                               $value = preg_replace_callback( '/{{REPL:(.+?)}}/', function ( $m ) {
+                                       return isset( self::$repl[$m[1]] ) ? self::$repl[$m[1]] : $m[0];
+                               }, $value );
+                       }
+               } elseif ( is_array( $value ) || is_object( $value ) ) {
+                       foreach ( $value as &$v ) {
+                               $this->doReplacements( $v );
+                       }
+                       unset( $v );
+               }
+       }
+
+       /**
+        * @dataProvider provideDiff
+        */
+       public function testDiff( $params, $expect, $exceptionCode = false, $sysop = false ) {
+               $this->doReplacements( $params );
+
+               $params += [
+                       'action' => 'compare',
+               ];
+
+               $user = $sysop
+                       ? static::getTestSysop()->getUser()
+                       : static::getTestUser()->getUser();
+               if ( $exceptionCode ) {
+                       try {
+                               $this->doApiRequest( $params, null, false, $user );
+                               $this->fail( 'Expected exception not thrown' );
+                       } catch ( ApiUsageException $ex ) {
+                               $this->assertTrue( $this->apiExceptionHasCode( $ex, $exceptionCode ),
+                                       "Exception with code $exceptionCode" );
+                       }
+               } else {
+                       $apiResult = $this->doApiRequest( $params, null, false, $user );
+                       $apiResult = $apiResult[0];
+                       $this->doReplacements( $expect );
+                       $this->assertEquals( $expect, $apiResult );
+               }
+       }
+
+       public static function provideDiff() {
+               return [
+                       // @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
+                       'Basic diff, titles' => [
+                               [
+                                       'fromtitle' => 'ApiComparePagesTest A',
+                                       'totitle' => 'ApiComparePagesTest B',
+                               ],
+                               [
+                                       'compare' => [
+                                               'fromid' => '{{REPL:pageA}}',
+                                               'fromrevid' => '{{REPL:revA4}}',
+                                               'fromns' => 0,
+                                               'fromtitle' => 'ApiComparePagesTest A',
+                                               'toid' => '{{REPL:pageB}}',
+                                               'torevid' => '{{REPL:revB4}}',
+                                               'tons' => 0,
+                                               'totitle' => 'ApiComparePagesTest B',
+                                               'body' => '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>' . "\n"
+                                                       . '<td colspan="2" class="diff-lineno">Line 1:</td></tr>' . "\n"
+                                                       . '<tr><td class=\'diff-marker\'>−</td><td class=\'diff-deletedline\'><div><del class="diffchange diffchange-inline">A </del>4</div></td><td class=\'diff-marker\'>+</td><td class=\'diff-addedline\'><div><ins class="diffchange diffchange-inline">B </ins>4</div></td></tr>' . "\n",
+                                       ]
+                               ],
+                       ],
+                       'Basic diff, page IDs' => [
+                               [
+                                       'fromid' => '{{REPL:pageA}}',
+                                       'toid' => '{{REPL:pageB}}',
+                               ],
+                               [
+                                       'compare' => [
+                                               'fromid' => '{{REPL:pageA}}',
+                                               'fromrevid' => '{{REPL:revA4}}',
+                                               'fromns' => 0,
+                                               'fromtitle' => 'ApiComparePagesTest A',
+                                               'toid' => '{{REPL:pageB}}',
+                                               'torevid' => '{{REPL:revB4}}',
+                                               'tons' => 0,
+                                               'totitle' => 'ApiComparePagesTest B',
+                                               'body' => '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>' . "\n"
+                                                       . '<td colspan="2" class="diff-lineno">Line 1:</td></tr>' . "\n"
+                                                       . '<tr><td class=\'diff-marker\'>−</td><td class=\'diff-deletedline\'><div><del class="diffchange diffchange-inline">A </del>4</div></td><td class=\'diff-marker\'>+</td><td class=\'diff-addedline\'><div><ins class="diffchange diffchange-inline">B </ins>4</div></td></tr>' . "\n",
+                                       ]
+                               ],
+                       ],
+                       'Basic diff, revision IDs' => [
+                               [
+                                       'fromrev' => '{{REPL:revA2}}',
+                                       'torev' => '{{REPL:revA3}}',
+                               ],
+                               [
+                                       'compare' => [
+                                               'fromid' => '{{REPL:pageA}}',
+                                               'fromrevid' => '{{REPL:revA2}}',
+                                               'fromns' => 0,
+                                               'fromtitle' => 'ApiComparePagesTest A',
+                                               'toid' => '{{REPL:pageA}}',
+                                               'torevid' => '{{REPL:revA3}}',
+                                               'tons' => 0,
+                                               'totitle' => 'ApiComparePagesTest A',
+                                               'body' => '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>' . "\n"
+                                                       . '<td colspan="2" class="diff-lineno">Line 1:</td></tr>' . "\n"
+                                                       . '<tr><td class=\'diff-marker\'>−</td><td class=\'diff-deletedline\'><div>A <del class="diffchange diffchange-inline">2</del></div></td><td class=\'diff-marker\'>+</td><td class=\'diff-addedline\'><div>A <ins class="diffchange diffchange-inline">3</ins></div></td></tr>' . "\n",
+                                       ]
+                               ],
+                       ],
+                       'Basic diff, deleted revision ID as sysop' => [
+                               [
+                                       'fromrev' => '{{REPL:revA2}}',
+                                       'torev' => '{{REPL:revC2}}',
+                               ],
+                               [
+                                       'compare' => [
+                                               'fromid' => '{{REPL:pageA}}',
+                                               'fromrevid' => '{{REPL:revA2}}',
+                                               'fromns' => 0,
+                                               'fromtitle' => 'ApiComparePagesTest A',
+                                               'toid' => 0,
+                                               'torevid' => '{{REPL:revC2}}',
+                                               'tons' => 0,
+                                               'totitle' => 'ApiComparePagesTest C',
+                                               'toarchive' => true,
+                                               'body' => '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>' . "\n"
+                                                       . '<td colspan="2" class="diff-lineno">Line 1:</td></tr>' . "\n"
+                                                       . '<tr><td class=\'diff-marker\'>−</td><td class=\'diff-deletedline\'><div><del class="diffchange diffchange-inline">A </del>2</div></td><td class=\'diff-marker\'>+</td><td class=\'diff-addedline\'><div><ins class="diffchange diffchange-inline">C </ins>2</div></td></tr>' . "\n",
+                                       ]
+                               ],
+                               false, true
+                       ],
+                       'Basic diff, revdel as sysop' => [
+                               [
+                                       'fromrev' => '{{REPL:revA2}}',
+                                       'torev' => '{{REPL:revB2}}',
+                               ],
+                               [
+                                       'compare' => [
+                                               'fromid' => '{{REPL:pageA}}',
+                                               'fromrevid' => '{{REPL:revA2}}',
+                                               'fromns' => 0,
+                                               'fromtitle' => 'ApiComparePagesTest A',
+                                               'toid' => '{{REPL:pageB}}',
+                                               'torevid' => '{{REPL:revB2}}',
+                                               'tons' => 0,
+                                               'totitle' => 'ApiComparePagesTest B',
+                                               'totexthidden' => true,
+                                               'touserhidden' => true,
+                                               'tocommenthidden' => true,
+                                               'body' => '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>' . "\n"
+                                                       . '<td colspan="2" class="diff-lineno">Line 1:</td></tr>' . "\n"
+                                                       . '<tr><td class=\'diff-marker\'>−</td><td class=\'diff-deletedline\'><div><del class="diffchange diffchange-inline">A </del>2</div></td><td class=\'diff-marker\'>+</td><td class=\'diff-addedline\'><div><ins class="diffchange diffchange-inline">B </ins>2</div></td></tr>' . "\n",
+                                       ]
+                               ],
+                               false, true
+                       ],
+                       'Basic diff, text' => [
+                               [
+                                       'fromtext' => 'From text',
+                                       'fromcontentmodel' => 'wikitext',
+                                       'totext' => 'To text {{subst:PAGENAME}}',
+                                       'tocontentmodel' => 'wikitext',
+                               ],
+                               [
+                                       'compare' => [
+                                               'body' => '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>' . "\n"
+                                                       . '<td colspan="2" class="diff-lineno">Line 1:</td></tr>' . "\n"
+                                                       . '<tr><td class=\'diff-marker\'>−</td><td class=\'diff-deletedline\'><div><del class="diffchange diffchange-inline">From </del>text</div></td><td class=\'diff-marker\'>+</td><td class=\'diff-addedline\'><div><ins class="diffchange diffchange-inline">To </ins>text <ins class="diffchange diffchange-inline">{{subst:PAGENAME}}</ins></div></td></tr>' . "\n",
+                                       ]
+                               ],
+                       ],
+                       'Basic diff, text 2' => [
+                               [
+                                       'fromtext' => 'From text',
+                                       'totext' => 'To text {{subst:PAGENAME}}',
+                                       'tocontentmodel' => 'wikitext',
+                               ],
+                               [
+                                       'compare' => [
+                                               'body' => '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>' . "\n"
+                                                       . '<td colspan="2" class="diff-lineno">Line 1:</td></tr>' . "\n"
+                                                       . '<tr><td class=\'diff-marker\'>−</td><td class=\'diff-deletedline\'><div><del class="diffchange diffchange-inline">From </del>text</div></td><td class=\'diff-marker\'>+</td><td class=\'diff-addedline\'><div><ins class="diffchange diffchange-inline">To </ins>text <ins class="diffchange diffchange-inline">{{subst:PAGENAME}}</ins></div></td></tr>' . "\n",
+                                       ]
+                               ],
+                       ],
+                       'Basic diff, guessed model' => [
+                               [
+                                       'fromtext' => 'From text',
+                                       'totext' => 'To text',
+                               ],
+                               [
+                                       'warnings' => [
+                                               'compare' => [
+                                                       'warnings' => 'No content model could be determined, assuming wikitext.',
+                                               ],
+                                       ],
+                                       'compare' => [
+                                               'body' => '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>' . "\n"
+                                                       . '<td colspan="2" class="diff-lineno">Line 1:</td></tr>' . "\n"
+                                                       . '<tr><td class=\'diff-marker\'>−</td><td class=\'diff-deletedline\'><div><del class="diffchange diffchange-inline">From </del>text</div></td><td class=\'diff-marker\'>+</td><td class=\'diff-addedline\'><div><ins class="diffchange diffchange-inline">To </ins>text</div></td></tr>' . "\n",
+                                       ]
+                               ],
+                       ],
+                       'Basic diff, text with title and PST' => [
+                               [
+                                       'fromtext' => 'From text',
+                                       'totitle' => 'Test',
+                                       'totext' => 'To text {{subst:PAGENAME}}',
+                                       'topst' => true,
+                               ],
+                               [
+                                       'compare' => [
+                                               'body' => '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>' . "\n"
+                                                       . '<td colspan="2" class="diff-lineno">Line 1:</td></tr>' . "\n"
+                                                       . '<tr><td class=\'diff-marker\'>−</td><td class=\'diff-deletedline\'><div><del class="diffchange diffchange-inline">From </del>text</div></td><td class=\'diff-marker\'>+</td><td class=\'diff-addedline\'><div><ins class="diffchange diffchange-inline">To </ins>text <ins class="diffchange diffchange-inline">Test</ins></div></td></tr>' . "\n",
+                                       ]
+                               ],
+                       ],
+                       'Basic diff, text with page ID and PST' => [
+                               [
+                                       'fromtext' => 'From text',
+                                       'toid' => '{{REPL:pageB}}',
+                                       'totext' => 'To text {{subst:PAGENAME}}',
+                                       'topst' => true,
+                               ],
+                               [
+                                       'compare' => [
+                                               'body' => '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>' . "\n"
+                                                       . '<td colspan="2" class="diff-lineno">Line 1:</td></tr>' . "\n"
+                                                       . '<tr><td class=\'diff-marker\'>−</td><td class=\'diff-deletedline\'><div><del class="diffchange diffchange-inline">From </del>text</div></td><td class=\'diff-marker\'>+</td><td class=\'diff-addedline\'><div><ins class="diffchange diffchange-inline">To </ins>text <ins class="diffchange diffchange-inline">ApiComparePagesTest B</ins></div></td></tr>' . "\n",
+                                       ]
+                               ],
+                       ],
+                       'Basic diff, text with revision and PST' => [
+                               [
+                                       'fromtext' => 'From text',
+                                       'torev' => '{{REPL:revB2}}',
+                                       'totext' => 'To text {{subst:PAGENAME}}',
+                                       'topst' => true,
+                               ],
+                               [
+                                       'compare' => [
+                                               'body' => '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>' . "\n"
+                                                       . '<td colspan="2" class="diff-lineno">Line 1:</td></tr>' . "\n"
+                                                       . '<tr><td class=\'diff-marker\'>−</td><td class=\'diff-deletedline\'><div><del class="diffchange diffchange-inline">From </del>text</div></td><td class=\'diff-marker\'>+</td><td class=\'diff-addedline\'><div><ins class="diffchange diffchange-inline">To </ins>text <ins class="diffchange diffchange-inline">ApiComparePagesTest B</ins></div></td></tr>' . "\n",
+                                       ]
+                               ],
+                       ],
+                       'Basic diff, text with deleted revision and PST' => [
+                               [
+                                       'fromtext' => 'From text',
+                                       'torev' => '{{REPL:revC2}}',
+                                       'totext' => 'To text {{subst:PAGENAME}}',
+                                       'topst' => true,
+                               ],
+                               [
+                                       'compare' => [
+                                               'body' => '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>' . "\n"
+                                                       . '<td colspan="2" class="diff-lineno">Line 1:</td></tr>' . "\n"
+                                                       . '<tr><td class=\'diff-marker\'>−</td><td class=\'diff-deletedline\'><div><del class="diffchange diffchange-inline">From </del>text</div></td><td class=\'diff-marker\'>+</td><td class=\'diff-addedline\'><div><ins class="diffchange diffchange-inline">To </ins>text <ins class="diffchange diffchange-inline">ApiComparePagesTest C</ins></div></td></tr>' . "\n",
+                                       ]
+                               ],
+                               false, true
+                       ],
+                       'Diff with all props' => [
+                               [
+                                       'fromrev' => '{{REPL:revB1}}',
+                                       'torev' => '{{REPL:revB3}}',
+                                       'totitle' => 'ApiComparePagesTest B',
+                                       'prop' => 'diff|diffsize|rel|ids|title|user|comment|parsedcomment|size'
+                               ],
+                               [
+                                       'compare' => [
+                                               'fromid' => '{{REPL:pageB}}',
+                                               'fromrevid' => '{{REPL:revB1}}',
+                                               'fromns' => 0,
+                                               'fromtitle' => 'ApiComparePagesTest B',
+                                               'fromsize' => 3,
+                                               'fromuser' => '{{REPL:creator}}',
+                                               'fromuserid' => '{{REPL:creatorid}}',
+                                               'fromcomment' => 'Test for ApiComparePagesTest: B 1',
+                                               'fromparsedcomment' => 'Test for ApiComparePagesTest: B 1',
+                                               'toid' => '{{REPL:pageB}}',
+                                               'torevid' => '{{REPL:revB3}}',
+                                               'tons' => 0,
+                                               'totitle' => 'ApiComparePagesTest B',
+                                               'tosize' => 3,
+                                               'touserhidden' => true,
+                                               'tocommenthidden' => true,
+                                               'tosuppressed' => true,
+                                               'next' => '{{REPL:revB4}}',
+                                               'diffsize' => 391,
+                                               'body' => '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>' . "\n"
+                                                       . '<td colspan="2" class="diff-lineno">Line 1:</td></tr>' . "\n"
+                                                       . '<tr><td class=\'diff-marker\'>−</td><td class=\'diff-deletedline\'><div>B <del class="diffchange diffchange-inline">1</del></div></td><td class=\'diff-marker\'>+</td><td class=\'diff-addedline\'><div>B <ins class="diffchange diffchange-inline">3</ins></div></td></tr>' . "\n",
+                                       ]
+                               ],
+                       ],
+                       'Diff with all props as sysop' => [
+                               [
+                                       'fromrev' => '{{REPL:revB2}}',
+                                       'torev' => '{{REPL:revB3}}',
+                                       'totitle' => 'ApiComparePagesTest B',
+                                       'prop' => 'diff|diffsize|rel|ids|title|user|comment|parsedcomment|size'
+                               ],
+                               [
+                                       'compare' => [
+                                               'fromid' => '{{REPL:pageB}}',
+                                               'fromrevid' => '{{REPL:revB2}}',
+                                               'fromns' => 0,
+                                               'fromtitle' => 'ApiComparePagesTest B',
+                                               'fromsize' => 3,
+                                               'fromtexthidden' => true,
+                                               'fromuserhidden' => true,
+                                               'fromuser' => '{{REPL:creator}}',
+                                               'fromuserid' => '{{REPL:creatorid}}',
+                                               'fromcommenthidden' => true,
+                                               'fromcomment' => 'Test for ApiComparePagesTest: B 2',
+                                               'fromparsedcomment' => 'Test for ApiComparePagesTest: B 2',
+                                               'toid' => '{{REPL:pageB}}',
+                                               'torevid' => '{{REPL:revB3}}',
+                                               'tons' => 0,
+                                               'totitle' => 'ApiComparePagesTest B',
+                                               'tosize' => 3,
+                                               'touserhidden' => true,
+                                               'tocommenthidden' => true,
+                                               'tosuppressed' => true,
+                                               'prev' => '{{REPL:revB1}}',
+                                               'next' => '{{REPL:revB4}}',
+                                               'diffsize' => 391,
+                                               'body' => '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>' . "\n"
+                                                       . '<td colspan="2" class="diff-lineno">Line 1:</td></tr>' . "\n"
+                                                       . '<tr><td class=\'diff-marker\'>−</td><td class=\'diff-deletedline\'><div>B <del class="diffchange diffchange-inline">2</del></div></td><td class=\'diff-marker\'>+</td><td class=\'diff-addedline\'><div>B <ins class="diffchange diffchange-inline">3</ins></div></td></tr>' . "\n",
+                                       ]
+                               ],
+                               false, true
+                       ],
+                       'Relative diff, cur' => [
+                               [
+                                       'fromrev' => '{{REPL:revA2}}',
+                                       'torelative' => 'cur',
+                                       'prop' => 'ids',
+                               ],
+                               [
+                                       'compare' => [
+                                               'fromid' => '{{REPL:pageA}}',
+                                               'fromrevid' => '{{REPL:revA2}}',
+                                               'toid' => '{{REPL:pageA}}',
+                                               'torevid' => '{{REPL:revA4}}',
+                                       ]
+                               ],
+                       ],
+                       'Relative diff, next' => [
+                               [
+                                       'fromrev' => '{{REPL:revE2}}',
+                                       'torelative' => 'next',
+                                       'prop' => 'ids|rel',
+                               ],
+                               [
+                                       'compare' => [
+                                               'fromid' => '{{REPL:pageE}}',
+                                               'fromrevid' => '{{REPL:revE2}}',
+                                               'toid' => '{{REPL:pageE}}',
+                                               'torevid' => '{{REPL:revE3}}',
+                                               'prev' => '{{REPL:revE1}}',
+                                               'next' => '{{REPL:revE4}}',
+                                       ]
+                               ],
+                       ],
+                       'Relative diff, prev' => [
+                               [
+                                       'fromrev' => '{{REPL:revE3}}',
+                                       'torelative' => 'prev',
+                                       'prop' => 'ids|rel',
+                               ],
+                               [
+                                       'compare' => [
+                                               'fromid' => '{{REPL:pageE}}',
+                                               'fromrevid' => '{{REPL:revE2}}',
+                                               'toid' => '{{REPL:pageE}}',
+                                               'torevid' => '{{REPL:revE3}}',
+                                               'prev' => '{{REPL:revE1}}',
+                                               'next' => '{{REPL:revE4}}',
+                                       ]
+                               ],
+                       ],
+
+                       'Error, missing title' => [
+                               [
+                                       'fromtitle' => 'ApiComparePagesTest X',
+                                       'totitle' => 'ApiComparePagesTest B',
+                               ],
+                               [],
+                               'missingtitle',
+                       ],
+                       'Error, invalid title' => [
+                               [
+                                       'fromtitle' => '<bad>',
+                                       'totitle' => 'ApiComparePagesTest B',
+                               ],
+                               [],
+                               'invalidtitle',
+                       ],
+                       'Error, missing page ID' => [
+                               [
+                                       'fromid' => 8817900,
+                                       'totitle' => 'ApiComparePagesTest B',
+                               ],
+                               [],
+                               'nosuchpageid',
+                       ],
+                       'Error, page with missing revision' => [
+                               [
+                                       'fromtitle' => 'ApiComparePagesTest D',
+                                       'totitle' => 'ApiComparePagesTest B',
+                               ],
+                               [],
+                               'nosuchrevid',
+                       ],
+                       'Error, page with no revision' => [
+                               [
+                                       'fromtitle' => 'ApiComparePagesTest E',
+                                       'totitle' => 'ApiComparePagesTest B',
+                               ],
+                               [],
+                               'nosuchrevid',
+                       ],
+                       'Error, bad rev ID' => [
+                               [
+                                       'fromrev' => 8817900,
+                                       'totitle' => 'ApiComparePagesTest B',
+                               ],
+                               [],
+                               'nosuchrevid',
+                       ],
+                       'Error, deleted revision ID, non-sysop' => [
+                               [
+                                       'fromrev' => '{{REPL:revA2}}',
+                                       'torev' => '{{REPL:revC2}}',
+                               ],
+                               [],
+                               'nosuchrevid',
+                       ],
+                       'Error, revision-deleted content' => [
+                               [
+                                       'fromrev' => '{{REPL:revA2}}',
+                                       'torev' => '{{REPL:revB2}}',
+                               ],
+                               [],
+                               'missingcontent',
+                       ],
+                       'Error, text with no title and PST' => [
+                               [
+                                       'fromtext' => 'From text',
+                                       'totext' => 'To text {{subst:PAGENAME}}',
+                                       'topst' => true,
+                               ],
+                               [],
+                               'compare-no-title',
+                       ],
+                       'Error, Relative diff, no from revision' => [
+                               [
+                                       'fromtext' => 'Foo',
+                                       'torelative' => 'cur',
+                                       'prop' => 'ids',
+                               ],
+                               [],
+                               'compare-relative-to-nothing'
+                       ],
+                       'Error, Relative diff, cur with no current revision' => [
+                               [
+                                       'fromrev' => '{{REPL:revE2}}',
+                                       'torelative' => 'cur',
+                                       'prop' => 'ids',
+                               ],
+                               [],
+                               'nosuchrevid'
+                       ],
+                       'Error, Relative diff, next revdeleted' => [
+                               [
+                                       'fromrev' => '{{REPL:revB1}}',
+                                       'torelative' => 'next',
+                                       'prop' => 'ids',
+                               ],
+                               [],
+                               'missingcontent'
+                       ],
+                       'Error, Relative diff, prev revdeleted' => [
+                               [
+                                       'fromrev' => '{{REPL:revB3}}',
+                                       'torelative' => 'prev',
+                                       'prop' => 'ids',
+                               ],
+                               [],
+                               'missingcontent'
+                       ],
+
+                       // @codingStandardsIgnoreEnd
+               ];
+       }
+}
index ea8c9ca..3cf1fde 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @group API
  * @group Database
index a1b7a87..ea33a9e 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @group API
  * @group Database
@@ -43,9 +45,11 @@ class ApiMainTest extends ApiTestCase {
         * @param string|bool $error False if no error expected
         */
        public function testAssert( $registered, $rights, $assert, $error ) {
-               $user = new User();
                if ( $registered ) {
-                       $user->setId( 1 );
+                       $user = $this->getMutableTestUser()->getUser();
+                       $user->load(); // load before setting mRights
+               } else {
+                       $user = new User();
                }
                $user->mRights = $rights;
                try {
@@ -55,7 +59,8 @@ class ApiMainTest extends ApiTestCase {
                        ], null, null, $user );
                        $this->assertFalse( $error ); // That no error was expected
                } catch ( ApiUsageException $e ) {
-                       $this->assertTrue( self::apiExceptionHasCode( $e, $error ) );
+                       $this->assertTrue( self::apiExceptionHasCode( $e, $error ),
+                               "Error '{$e->getMessage()}' matched expected '$error'" );
                }
        }
 
index e405b3b..c6f5a8e 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @group API
  */
index f01a670..028d3b4 100644 (file)
  */
 class ApiParseTest extends ApiTestCase {
 
-       protected function setUp() {
-               parent::setUp();
-               $this->doLogin();
+       protected static $pageId;
+       protected static $revIds = [];
+
+       public function addDBDataOnce() {
+               $user = static::getTestSysop()->getUser();
+               $title = Title::newFromText( __CLASS__ );
+               $page = WikiPage::factory( $title );
+
+               $status = $page->doEditContent(
+                       ContentHandler::makeContent( 'Test for revdel', $title, CONTENT_MODEL_WIKITEXT ),
+                       __METHOD__ . ' Test for revdel', 0, false, $user
+               );
+               if ( !$status->isOk() ) {
+                       $this->fail( "Failed to create $title: " . $status->getWikiText( false, false, 'en' ) );
+               }
+               self::$pageId = $status->value['revision']->getPage();
+               self::$revIds['revdel'] = $status->value['revision']->getId();
+
+               $status = $page->doEditContent(
+                       ContentHandler::makeContent( 'Test for oldid', $title, CONTENT_MODEL_WIKITEXT ),
+                       __METHOD__ . ' Test for oldid', 0, false, $user
+               );
+               if ( !$status->isOk() ) {
+                       $this->fail( "Failed to edit $title: " . $status->getWikiText( false, false, 'en' ) );
+               }
+               self::$revIds['oldid'] = $status->value['revision']->getId();
+
+               $status = $page->doEditContent(
+                       ContentHandler::makeContent( 'Test for latest', $title, CONTENT_MODEL_WIKITEXT ),
+                       __METHOD__ . ' Test for latest', 0, false, $user
+               );
+               if ( !$status->isOk() ) {
+                       $this->fail( "Failed to edit $title: " . $status->getWikiText( false, false, 'en' ) );
+               }
+               self::$revIds['latest'] = $status->value['revision']->getId();
+
+               RevisionDeleter::createList(
+                       'revision', RequestContext::getMain(), $title, [ self::$revIds['revdel'] ]
+               )->setVisibility( [
+                       'value' => [
+                               Revision::DELETED_TEXT => 1,
+                       ],
+                       'comment' => 'Test for revdel',
+               ] );
+
+               Title::clearCaches(); // Otherwise it has the wrong latest revision for some reason
        }
 
-       public function testParseNonexistentPage() {
-               $somePage = mt_rand();
+       public function testParseByName() {
+               $res = $this->doApiRequest( [
+                       'action' => 'parse',
+                       'page' => __CLASS__,
+               ] );
+               $this->assertContains( 'Test for latest', $res[0]['parse']['text'] );
+
+               $res = $this->doApiRequest( [
+                       'action' => 'parse',
+                       'page' => __CLASS__,
+                       'disablelimitreport' => 1,
+               ] );
+               $this->assertContains( 'Test for latest', $res[0]['parse']['text'] );
+       }
+
+       public function testParseById() {
+               $res = $this->doApiRequest( [
+                       'action' => 'parse',
+                       'pageid' => self::$pageId,
+               ] );
+               $this->assertContains( 'Test for latest', $res[0]['parse']['text'] );
+       }
+
+       public function testParseByOldId() {
+               $res = $this->doApiRequest( [
+                       'action' => 'parse',
+                       'oldid' => self::$revIds['oldid'],
+               ] );
+               $this->assertContains( 'Test for oldid', $res[0]['parse']['text'] );
+               $this->assertArrayNotHasKey( 'textdeleted', $res[0]['parse'] );
+               $this->assertArrayNotHasKey( 'textsuppressed', $res[0]['parse'] );
+       }
+
+       public function testParseRevDel() {
+               $user = static::getTestUser()->getUser();
+               $sysop = static::getTestSysop()->getUser();
 
                try {
                        $this->doApiRequest( [
                                'action' => 'parse',
-                               'page' => $somePage ] );
+                               'oldid' => self::$revIds['revdel'],
+                       ], null, null, $user );
+                       $this->fail( "API did not return an error as expected" );
+               } catch ( ApiUsageException $ex ) {
+                       $this->assertTrue( ApiTestCase::apiExceptionHasCode( $ex, 'permissiondenied' ),
+                               "API failed with error 'permissiondenied'" );
+               }
+
+               $res = $this->doApiRequest( [
+                       'action' => 'parse',
+                       'oldid' => self::$revIds['revdel'],
+               ], null, null, $sysop );
+               $this->assertContains( 'Test for revdel', $res[0]['parse']['text'] );
+               $this->assertArrayHasKey( 'textdeleted', $res[0]['parse'] );
+               $this->assertArrayNotHasKey( 'textsuppressed', $res[0]['parse'] );
+       }
+
+       public function testParseNonexistentPage() {
+               try {
+                       $this->doApiRequest( [
+                               'action' => 'parse',
+                               'page' => 'DoesNotExist',
+                       ] );
 
                        $this->fail( "API did not return an error when parsing a nonexistent page" );
                } catch ( ApiUsageException $ex ) {
index 0a2cd83..b508928 100644 (file)
@@ -1475,6 +1475,9 @@ class ApiQueryWatchlistIntegrationTest extends ApiTestCase {
 
                $this->watchPages( $otherUser, [ $target ] );
 
+               $reloadedUser = User::newFromName( $otherUser->getName() );
+               $this->assertEquals( '1234567890', $reloadedUser->getOption( 'watchlisttoken' ) );
+
                $result = $this->doListWatchlistRequest( [
                        'wlowner' => $otherUser->getName(),
                        'wltoken' => '1234567890',
index 89e48f7..a3b0df5 100644 (file)
@@ -2,6 +2,8 @@
 
 namespace MediaWiki\Auth;
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @group AuthManager
  * @covers MediaWiki\Auth\AbstractAuthenticationProvider
@@ -9,7 +11,7 @@ namespace MediaWiki\Auth;
 class AbstractAuthenticationProviderTest extends \MediaWikiTestCase {
        public function testAbstractAuthenticationProvider() {
                $provider = $this->getMockForAbstractClass( AbstractAuthenticationProvider::class );
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
 
                $obj = $this->getMockForAbstractClass( 'Psr\Log\LoggerInterface' );
                $provider->setLogger( $obj );
index a57682b..76d8ee9 100644 (file)
@@ -3,6 +3,7 @@
 namespace MediaWiki\Auth;
 
 use MediaWiki\MediaWikiServices;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @group AuthManager
@@ -13,14 +14,14 @@ class AbstractPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestCa
                $provider = $this->getMockForAbstractClass(
                        AbstractPasswordPrimaryAuthenticationProvider::class
                );
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
                $this->assertTrue( $providerPriv->authoritative );
 
                $provider = $this->getMockForAbstractClass(
                        AbstractPasswordPrimaryAuthenticationProvider::class,
                        [ [ 'authoritative' => false ] ]
                );
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
                $this->assertFalse( $providerPriv->authoritative );
        }
 
@@ -29,7 +30,7 @@ class AbstractPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestCa
                        AbstractPasswordPrimaryAuthenticationProvider::class
                );
                $provider->setConfig( MediaWikiServices::getInstance()->getMainConfig() );
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
 
                $obj = $providerPriv->getPasswordFactory();
                $this->assertInstanceOf( 'PasswordFactory', $obj );
@@ -42,7 +43,7 @@ class AbstractPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestCa
                );
                $provider->setConfig( MediaWikiServices::getInstance()->getMainConfig() );
                $provider->setLogger( new \Psr\Log\NullLogger() );
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
 
                $obj = $providerPriv->getPassword( null );
                $this->assertInstanceOf( 'Password', $obj );
@@ -61,7 +62,7 @@ class AbstractPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestCa
                        MediaWikiServices::getInstance()->getMainConfig()
                ] ) );
                $provider->setLogger( new \Psr\Log\NullLogger() );
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
 
                $this->mergeMwGlobalArrayValue( 'wgHooks', [ 'ResetPasswordExpiration' => [] ] );
 
@@ -109,7 +110,7 @@ class AbstractPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestCa
                );
                $provider->setConfig( MediaWikiServices::getInstance()->getMainConfig() );
                $provider->setLogger( new \Psr\Log\NullLogger() );
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
 
                $this->assertEquals( $uppStatus, $providerPriv->checkPasswordValidity( 'foo', 'bar' ) );
 
@@ -133,7 +134,7 @@ class AbstractPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestCa
                $provider->setConfig( $config );
                $provider->setLogger( new \Psr\Log\NullLogger() );
                $provider->setManager( $manager );
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
 
                $manager->removeAuthenticationSessionData( null );
                $status = \Status::newGood();
@@ -161,7 +162,7 @@ class AbstractPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestCa
                        AbstractPasswordPrimaryAuthenticationProvider::class,
                        [ [ 'authoritative' => false ] ]
                );
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
 
                $req = new PasswordAuthenticationRequest;
 
@@ -172,7 +173,7 @@ class AbstractPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestCa
                        AbstractPasswordPrimaryAuthenticationProvider::class,
                        [ [ 'authoritative' => true ] ]
                );
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
 
                $req->password = '';
                $ret = $providerPriv->failResponse( $req );
index 5c268f8..a840599 100644 (file)
@@ -7,6 +7,7 @@ use MediaWiki\Session\UserInfo;
 use Psr\Log\LogLevel;
 use StatusValue;
 use Wikimedia\ScopedCallback;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @group AuthManager
@@ -127,7 +128,7 @@ class AuthManagerTest extends \MediaWikiTestCase {
                }
                $this->manager = new AuthManager( $this->request, $this->config );
                $this->manager->setLogger( $this->logger );
-               $this->managerPriv = \TestingAccessWrapper::newFromObject( $this->manager );
+               $this->managerPriv = TestingAccessWrapper::newFromObject( $this->manager );
        }
 
        /**
@@ -170,7 +171,7 @@ class AuthManagerTest extends \MediaWikiTestCase {
                        'logger' => new \Psr\Log\NullLogger(),
                        'store' => new \HashBagOStuff(),
                ] );
-               \TestingAccessWrapper::newFromObject( $manager )->getProvider( (string)$provider );
+               TestingAccessWrapper::newFromObject( $manager )->getProvider( (string)$provider );
 
                $reset = \MediaWiki\Session\TestUtils::setSessionManagerSingleton( $manager );
 
@@ -196,7 +197,7 @@ class AuthManagerTest extends \MediaWikiTestCase {
                $this->assertSame( \RequestContext::getMain()->getRequest(), $singleton->getRequest() );
                $this->assertSame(
                        \RequestContext::getMain()->getConfig(),
-                       \TestingAccessWrapper::newFromObject( $singleton )->config
+                       TestingAccessWrapper::newFromObject( $singleton )->config
                );
        }
 
@@ -610,7 +611,7 @@ class AuthManagerTest extends \MediaWikiTestCase {
                $this->assertSame( 'de', $user->getOption( 'language' ) );
                $this->assertSame( 'zh', $user->getOption( 'variant' ) );
 
-               $this->setMwGlobals( 'wgContLang', \Language::factory( 'en' ) );
+               $this->setMwGlobals( 'wgContLang', \Language::factory( 'fr' ) );
 
                $user = \User::newFromName( self::usernameForCreation() );
                $user->addToDatabase();
@@ -1404,12 +1405,13 @@ class AuthManagerTest extends \MediaWikiTestCase {
                        $this->manager->checkAccountCreatePermissions( new \User )
                );
 
-               $this->setMwGlobals( [ 'wgReadOnly' => 'Because' ] );
+               $readOnlyMode = \MediaWiki\MediaWikiServices::getInstance()->getReadOnlyMode();
+               $readOnlyMode->setReason( 'Because' );
                $this->assertEquals(
                        \Status::newFatal( 'readonlytext', 'Because' ),
                        $this->manager->checkAccountCreatePermissions( new \User )
                );
-               $this->setMwGlobals( [ 'wgReadOnly' => false ] );
+               $readOnlyMode->setReason( false );
 
                $wgGroupPermissions['*']['createaccount'] = false;
                $status = $this->manager->checkAccountCreatePermissions( new \User );
@@ -1597,7 +1599,8 @@ class AuthManagerTest extends \MediaWikiTestCase {
                $this->assertSame( AuthenticationResponse::FAIL, $ret->status );
                $this->assertSame( 'noname', $ret->message->getKey() );
 
-               $this->setMwGlobals( [ 'wgReadOnly' => 'Because' ] );
+               $readOnlyMode = \MediaWiki\MediaWikiServices::getInstance()->getReadOnlyMode();
+               $readOnlyMode->setReason( 'Because' );
                $this->hook( 'LocalUserCreated', $this->never() );
                $userReq->username = self::usernameForCreation();
                $ret = $this->manager->beginAccountCreation( $creator, [ $userReq ], 'http://localhost/' );
@@ -1605,7 +1608,7 @@ class AuthManagerTest extends \MediaWikiTestCase {
                $this->assertSame( AuthenticationResponse::FAIL, $ret->status );
                $this->assertSame( 'readonlytext', $ret->message->getKey() );
                $this->assertSame( [ 'Because' ], $ret->message->getParams() );
-               $this->setMwGlobals( [ 'wgReadOnly' => false ] );
+               $readOnlyMode->setReason( false );
 
                $this->hook( 'LocalUserCreated', $this->never() );
                $userReq->username = self::usernameForCreation();
@@ -1770,14 +1773,15 @@ class AuthManagerTest extends \MediaWikiTestCase {
 
                $this->request->getSession()->setSecret( 'AuthManager::accountCreationState',
                        [ 'username' => $creator->getName() ] + $session );
-               $this->setMwGlobals( [ 'wgReadOnly' => 'Because' ] );
+               $readOnlyMode = \MediaWiki\MediaWikiServices::getInstance()->getReadOnlyMode();
+               $readOnlyMode->setReason( 'Because' );
                $this->hook( 'LocalUserCreated', $this->never() );
                $ret = $this->manager->continueAccountCreation( [] );
                $this->unhook( 'LocalUserCreated' );
                $this->assertSame( AuthenticationResponse::FAIL, $ret->status );
                $this->assertSame( 'readonlytext', $ret->message->getKey() );
                $this->assertSame( [ 'Because' ], $ret->message->getParams() );
-               $this->setMwGlobals( [ 'wgReadOnly' => false ] );
+               $readOnlyMode->setReason( false );
 
                $this->request->getSession()->setSecret( 'AuthManager::accountCreationState',
                        [ 'username' => $creator->getName() ] + $session );
@@ -2468,7 +2472,8 @@ class AuthManagerTest extends \MediaWikiTestCase {
 
                // Wiki is read-only
                $session->clear();
-               $this->setMwGlobals( [ 'wgReadOnly' => 'Because' ] );
+               $readOnlyMode = \MediaWiki\MediaWikiServices::getInstance()->getReadOnlyMode();
+               $readOnlyMode->setReason( 'Because' );
                $user = \User::newFromName( $username );
                $this->hook( 'LocalUserCreated', $this->never() );
                $ret = $this->manager->autoCreateUser( $user, AuthManager::AUTOCREATE_SOURCE_SESSION, true );
@@ -2481,7 +2486,7 @@ class AuthManagerTest extends \MediaWikiTestCase {
                        [ LogLevel::DEBUG, 'denied by wfReadOnly(): {reason}' ],
                ], $logger->getBuffer() );
                $logger->clearBuffer();
-               $this->setMwGlobals( [ 'wgReadOnly' => false ] );
+               $readOnlyMode->setReason( false );
 
                // Session blacklisted
                $session->clear();
index 68f574b..111c855 100644 (file)
@@ -2,6 +2,8 @@
 
 namespace MediaWiki\Auth;
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @group AuthManager
  * @group Database
@@ -10,7 +12,7 @@ namespace MediaWiki\Auth;
 class CheckBlocksSecondaryAuthenticationProviderTest extends \MediaWikiTestCase {
        public function testConstructor() {
                $provider = new CheckBlocksSecondaryAuthenticationProvider();
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
                $config = new \HashConfig( [
                        'BlockDisablesLogin' => false
                ] );
@@ -20,7 +22,7 @@ class CheckBlocksSecondaryAuthenticationProviderTest extends \MediaWikiTestCase
                $provider = new CheckBlocksSecondaryAuthenticationProvider(
                        [ 'blockDisablesLogin' => true ]
                );
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
                $config = new \HashConfig( [
                        'BlockDisablesLogin' => false
                ] );
index 3fc45a4..9222843 100644 (file)
@@ -2,6 +2,8 @@
 
 namespace MediaWiki\Auth;
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @group AuthManager
  * @covers MediaWiki\Auth\ConfirmLinkSecondaryAuthenticationProvider
@@ -126,7 +128,7 @@ class ConfirmLinkSecondaryAuthenticationProviderTest extends \MediaWikiTestCase
                        ->will( $this->returnValue( "BadReq" ) );
 
                $user = \User::newFromName( 'UTSysop' );
-               $provider = \TestingAccessWrapper::newFromObject(
+               $provider = TestingAccessWrapper::newFromObject(
                        new ConfirmLinkSecondaryAuthenticationProvider
                );
                $request = new \FauxRequest();
@@ -171,7 +173,7 @@ class ConfirmLinkSecondaryAuthenticationProviderTest extends \MediaWikiTestCase
                        $r->action = AuthManager::ACTION_CHANGE;
                        $r->username = $user->getName();
                }
-               $this->assertEquals( $expectReqs, \TestingAccessWrapper::newFromObject( $req )->linkRequests );
+               $this->assertEquals( $expectReqs, TestingAccessWrapper::newFromObject( $req )->linkRequests );
        }
 
        public function testContinueLinkAttempt() {
@@ -190,7 +192,7 @@ class ConfirmLinkSecondaryAuthenticationProviderTest extends \MediaWikiTestCase
                        ->will( $this->returnValue( $obj ) );
                $this->assertSame(
                        $obj,
-                       \TestingAccessWrapper::newFromObject( $mock )->continueLinkAttempt( $user, 'state', $reqs )
+                       TestingAccessWrapper::newFromObject( $mock )->continueLinkAttempt( $user, 'state', $reqs )
                );
 
                // Now test the actual functioning
@@ -224,7 +226,7 @@ class ConfirmLinkSecondaryAuthenticationProviderTest extends \MediaWikiTestCase
                $request = new \FauxRequest();
                $manager = new AuthManager( $request, $config );
                $provider->setManager( $manager );
-               $provider = \TestingAccessWrapper::newFromObject( $provider );
+               $provider = TestingAccessWrapper::newFromObject( $provider );
 
                $req = new ConfirmLinkAuthenticationRequest( $reqs );
 
index ca6689a..3757069 100644 (file)
@@ -3,6 +3,7 @@
 namespace MediaWiki\Auth;
 
 use Psr\Log\LoggerInterface;
+use Wikimedia\TestingAccessWrapper;
 
 class EmailNotificationSecondaryAuthenticationProviderTest extends \PHPUnit_Framework_TestCase {
        public function testConstructor() {
@@ -13,14 +14,14 @@ class EmailNotificationSecondaryAuthenticationProviderTest extends \PHPUnit_Fram
 
                $provider = new EmailNotificationSecondaryAuthenticationProvider();
                $provider->setConfig( $config );
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
                $this->assertTrue( $providerPriv->sendConfirmationEmail );
 
                $provider = new EmailNotificationSecondaryAuthenticationProvider( [
                        'sendConfirmationEmail' => false,
                ] );
                $provider->setConfig( $config );
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
                $this->assertFalse( $providerPriv->sendConfirmationEmail );
        }
 
index 6e2058c..4d60342 100644 (file)
@@ -3,6 +3,7 @@
 namespace MediaWiki\Auth;
 
 use MediaWiki\MediaWikiServices;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @group AuthManager
@@ -131,7 +132,7 @@ class LocalPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestCase
                $provider->setConfig( $this->config );
                $provider->setLogger( new \Psr\Log\NullLogger() );
                $provider->setManager( $this->manager );
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
 
                $user = $this->getMutableTestUser()->getUser();
                $userName = $user->getName();
@@ -508,7 +509,10 @@ class LocalPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestCase
 
                $this->assertSame(
                        $expectExpiry,
-                       $dbw->selectField( 'user', 'user_password_expires', [ 'user_name' => $cuser ] )
+                       wfTimestampOrNull(
+                               TS_MW,
+                               $dbw->selectField( 'user', 'user_password_expires', [ 'user_name' => $cuser ] )
+                       )
                );
        }
 
index 3f90169..9bcab77 100644 (file)
@@ -2,6 +2,8 @@
 
 namespace MediaWiki\Auth;
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @group AuthManager
  * @covers MediaWiki\Auth\RememberMeAuthenticationRequest
@@ -17,7 +19,7 @@ class RememberMeAuthenticationRequestTest extends AuthenticationRequestTestCase
 
        public function testGetFieldInfo_2() {
                $req = new RememberMeAuthenticationRequest();
-               $reqWrapper = \TestingAccessWrapper::newFromObject( $req );
+               $reqWrapper = TestingAccessWrapper::newFromObject( $req );
 
                $reqWrapper->expiration = 30 * 24 * 3600;
                $this->assertNotEmpty( $req->getFieldInfo() );
@@ -28,7 +30,7 @@ class RememberMeAuthenticationRequestTest extends AuthenticationRequestTestCase
 
        protected function getInstance( array $args = [] ) {
                $req = new RememberMeAuthenticationRequest();
-               $reqWrapper = \TestingAccessWrapper::newFromObject( $req );
+               $reqWrapper = TestingAccessWrapper::newFromObject( $req );
                $reqWrapper->expiration = $args[0];
                return $req;
        }
index 90ed542..f454a96 100644 (file)
@@ -2,6 +2,8 @@
 
 namespace MediaWiki\Auth;
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @group AuthManager
  * @covers MediaWiki\Auth\ResetPasswordSecondaryAuthenticationProvider
@@ -85,7 +87,7 @@ class ResetPasswordSecondaryAuthenticationProviderTest extends \MediaWikiTestCas
                ] );
                $manager = new AuthManager( new \FauxRequest, $config );
                $provider->setManager( $manager );
-               $provider = \TestingAccessWrapper::newFromObject( $provider );
+               $provider = TestingAccessWrapper::newFromObject( $provider );
 
                $msg = wfMessage( 'foo' );
                $skipReq = new ButtonAuthenticationRequest(
index 8d9509e..6f45fa4 100644 (file)
@@ -4,6 +4,7 @@ namespace MediaWiki\Auth;
 
 use MediaWiki\MediaWikiServices;
 use Wikimedia\ScopedCallback;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @group AuthManager
@@ -106,13 +107,13 @@ class TemporaryPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestC
                        'PasswordReminderResendTime' => 101,
                ] );
 
-               $p = \TestingAccessWrapper::newFromObject( new TemporaryPasswordPrimaryAuthenticationProvider() );
+               $p = TestingAccessWrapper::newFromObject( new TemporaryPasswordPrimaryAuthenticationProvider() );
                $p->setConfig( $config );
                $this->assertSame( false, $p->emailEnabled );
                $this->assertSame( 100, $p->newPasswordExpiry );
                $this->assertSame( 101, $p->passwordReminderResendTime );
 
-               $p = \TestingAccessWrapper::newFromObject( new TemporaryPasswordPrimaryAuthenticationProvider( [
+               $p = TestingAccessWrapper::newFromObject( new TemporaryPasswordPrimaryAuthenticationProvider( [
                        'emailEnabled' => true,
                        'newPasswordExpiry' => 42,
                        'passwordReminderResendTime' => 43,
@@ -135,7 +136,7 @@ class TemporaryPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestC
                $pwhash = $passwordFactory->newFromPlaintext( 'password' )->toString();
 
                $provider = $this->getProvider();
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
 
                $this->assertFalse( $provider->testUserCanAuthenticate( '<invalid>' ) );
                $this->assertFalse( $provider->testUserCanAuthenticate( 'DoesNotExist' ) );
@@ -249,7 +250,7 @@ class TemporaryPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestC
                $reqs = [ PasswordAuthenticationRequest::class => $req ];
 
                $provider = $this->getProvider();
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
 
                $providerPriv->newPasswordExpiry = 100;
 
@@ -573,7 +574,7 @@ class TemporaryPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestC
                ScopedCallback::consume( $resetMailer );
                $this->assertTrue( $mailed );
 
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
+               $priv = TestingAccessWrapper::newFromObject( $provider );
                $req->username = '<invalid>';
                $status = $priv->sendPasswordResetEmail( $req );
                $this->assertEquals( \Status::newFatal( 'noname' ), $status );
index ee82832..58982de 100644 (file)
@@ -2,6 +2,8 @@
 
 namespace MediaWiki\Auth;
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @group AuthManager
  * @group Database
@@ -10,7 +12,7 @@ namespace MediaWiki\Auth;
 class ThrottlePreAuthenticationProviderTest extends \MediaWikiTestCase {
        public function testConstructor() {
                $provider = new ThrottlePreAuthenticationProvider();
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
                $config = new \HashConfig( [
                        'AccountCreationThrottle' => [ [
                                'count' => 123,
@@ -26,11 +28,11 @@ class ThrottlePreAuthenticationProviderTest extends \MediaWikiTestCase {
                        'accountCreationThrottle' => [ [ 'count' => 123, 'seconds' => 86400 ] ],
                        'passwordAttemptThrottle' => [ [ 'count' => 5, 'seconds' => 300 ] ]
                ], $providerPriv->throttleSettings );
-               $accountCreationThrottle = \TestingAccessWrapper::newFromObject(
+               $accountCreationThrottle = TestingAccessWrapper::newFromObject(
                        $providerPriv->accountCreationThrottle );
                $this->assertSame( [ [ 'count' => 123, 'seconds' => 86400 ] ],
                        $accountCreationThrottle->conditions );
-               $passwordAttemptThrottle = \TestingAccessWrapper::newFromObject(
+               $passwordAttemptThrottle = TestingAccessWrapper::newFromObject(
                        $providerPriv->passwordAttemptThrottle );
                $this->assertSame( [ [ 'count' => 5, 'seconds' => 300 ] ],
                        $passwordAttemptThrottle->conditions );
@@ -39,7 +41,7 @@ class ThrottlePreAuthenticationProviderTest extends \MediaWikiTestCase {
                        'accountCreationThrottle' => [ [ 'count' => 43, 'seconds' => 10000 ] ],
                        'passwordAttemptThrottle' => [ [ 'count' => 11, 'seconds' => 100 ] ],
                ] );
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
                $config = new \HashConfig( [
                        'AccountCreationThrottle' => [ [
                                'count' => 123,
@@ -58,15 +60,15 @@ class ThrottlePreAuthenticationProviderTest extends \MediaWikiTestCase {
 
                $cache = new \HashBagOStuff();
                $provider = new ThrottlePreAuthenticationProvider( [ 'cache' => $cache ] );
-               $providerPriv = \TestingAccessWrapper::newFromObject( $provider );
+               $providerPriv = TestingAccessWrapper::newFromObject( $provider );
                $provider->setConfig( new \HashConfig( [
                        'AccountCreationThrottle' => [ [ 'count' => 1, 'seconds' => 1 ] ],
                        'PasswordAttemptThrottle' => [ [ 'count' => 1, 'seconds' => 1 ] ],
                ] ) );
-               $accountCreationThrottle = \TestingAccessWrapper::newFromObject(
+               $accountCreationThrottle = TestingAccessWrapper::newFromObject(
                        $providerPriv->accountCreationThrottle );
                $this->assertSame( $cache, $accountCreationThrottle->cache );
-               $passwordAttemptThrottle = \TestingAccessWrapper::newFromObject(
+               $passwordAttemptThrottle = TestingAccessWrapper::newFromObject(
                        $providerPriv->passwordAttemptThrottle );
                $this->assertSame( $cache, $passwordAttemptThrottle->cache );
        }
index 33c8ce6..f52048a 100644 (file)
@@ -8,6 +8,7 @@ use InvalidArgumentException;
 use Psr\Log\AbstractLogger;
 use Psr\Log\LoggerInterface;
 use Psr\Log\NullLogger;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @group AuthManager
@@ -25,7 +26,7 @@ class ThrottlerTest extends \MediaWikiTestCase {
                        [ 'type' => 'foo', 'cache' => $cache ]
                );
                $throttler->setLogger( $logger );
-               $throttlerPriv = \TestingAccessWrapper::newFromObject( $throttler );
+               $throttlerPriv = TestingAccessWrapper::newFromObject( $throttler );
                $this->assertSame( [ [ 'count' => 123, 'seconds' => 456 ] ], $throttlerPriv->conditions );
                $this->assertSame( 'foo', $throttlerPriv->type );
                $this->assertSame( $cache, $throttlerPriv->cache );
@@ -33,7 +34,7 @@ class ThrottlerTest extends \MediaWikiTestCase {
 
                $throttler = new Throttler( [ [ 'count' => 123, 'seconds' => 456 ] ] );
                $throttler->setLogger( new NullLogger() );
-               $throttlerPriv = \TestingAccessWrapper::newFromObject( $throttler );
+               $throttlerPriv = TestingAccessWrapper::newFromObject( $throttler );
                $this->assertSame( [ [ 'count' => 123, 'seconds' => 456 ] ], $throttlerPriv->conditions );
                $this->assertSame( 'custom', $throttlerPriv->type );
                $this->assertInstanceOf( BagOStuff::class, $throttlerPriv->cache );
@@ -43,7 +44,7 @@ class ThrottlerTest extends \MediaWikiTestCase {
                        'seconds' => 654 ] ] ] );
                $throttler = new Throttler();
                $throttler->setLogger( new NullLogger() );
-               $throttlerPriv = \TestingAccessWrapper::newFromObject( $throttler );
+               $throttlerPriv = TestingAccessWrapper::newFromObject( $throttler );
                $this->assertSame( [ [ 'count' => 321, 'seconds' => 654 ] ], $throttlerPriv->conditions );
                $this->assertSame( 'password', $throttlerPriv->type );
                $this->assertInstanceOf( BagOStuff::class, $throttlerPriv->cache );
@@ -63,7 +64,7 @@ class ThrottlerTest extends \MediaWikiTestCase {
        public function testNormalizeThrottleConditions( $condition, $normalized ) {
                $throttler = new Throttler( $condition );
                $throttler->setLogger( new NullLogger() );
-               $throttlerPriv = \TestingAccessWrapper::newFromObject( $throttler );
+               $throttlerPriv = TestingAccessWrapper::newFromObject( $throttler );
                $this->assertSame( $normalized, $throttlerPriv->conditions );
        }
 
@@ -85,7 +86,7 @@ class ThrottlerTest extends \MediaWikiTestCase {
        }
 
        public function testNormalizeThrottleConditions2() {
-               $priv = \TestingAccessWrapper::newFromClass( Throttler::class );
+               $priv = TestingAccessWrapper::newFromClass( Throttler::class );
                $this->assertSame( [], $priv->normalizeThrottleConditions( null ) );
                $this->assertSame( [], $priv->normalizeThrottleConditions( 'bad' ) );
        }
index 1d87aeb..0015453 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @covers ChangesListFilter
  */
@@ -21,7 +23,6 @@ class ChangesListFilterTest extends MediaWikiTestCase {
                                'filters' => [],
                        ]
                );
-
        }
 
        // @codingStandardsIgnoreStart
index 308e6de..28818d9 100644 (file)
@@ -98,6 +98,9 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                $recentChange = $this->getEditChange( '20131103092153' );
                $enhancedChangesList->recentChangesLine( $recentChange, false );
 
+               $html = $enhancedChangesList->endRecentChangesList();
+               $this->assertRegExp( '/data-mw-revid="5" class="[^"]*mw-enhanced-rc[^"]*"/', $html );
+
                $recentChange2 = $this->getEditChange( '20131103092253' );
                $enhancedChangesList->recentChangesLine( $recentChange2, false );
 
@@ -105,6 +108,13 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
 
                preg_match_all( '/td class="mw-enhanced-rc-nested"/', $html, $matches );
                $this->assertCount( 2, $matches[0] );
+
+               $recentChange3 = $this->getLogChange();
+               $enhancedChangesList->recentChangesLine( $recentChange3, false );
+
+               $html = $enhancedChangesList->endRecentChangesList();
+               $this->assertContains( 'data-mw-logaction="foo/bar"', $html );
+               $this->assertContains( 'data-mw-logid="25"', $html );
        }
 
        /**
@@ -129,6 +139,15 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                return $recentChange;
        }
 
+       private function getLogChange() {
+               $user = $this->getMutableTestUser()->getUser();
+               $recentChange = $this->testRecentChangesHelper->makeLogRecentChange( 'foo', 'bar', $user,
+                       'Title', '20131103092153', 0, 0
+               );
+
+               return $recentChange;
+       }
+
        /**
         * @return RecentChange
         */
index 51cfadc..f892eb7 100644 (file)
@@ -119,15 +119,17 @@ class OldChangesListTest extends MediaWikiLangTestCase {
                );
        }
 
-       public function testRecentChangesLine_Tags() {
+       public function testRecentChangesLine_Attribs() {
                $recentChange = $this->getEditChange();
                $recentChange->mAttribs['ts_tags'] = 'vandalism,newbie';
 
                $oldChangesList = $this->getOldChangesList();
                $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
 
-               $this->assertRegExp( '/<li class="[\w\s-]*mw-tag-vandalism[\w\s-]*">/', $line );
-               $this->assertRegExp( '/<li class="[\w\s-]*mw-tag-newbie[\w\s-]*">/', $line );
+               $this->assertRegExp( '/<li data-mw-revid="\d+" class="[\w\s-]*mw-tag-vandalism[\w\s-]*">/',
+                       $line );
+               $this->assertRegExp( '/<li data-mw-revid="\d+" class="[\w\s-]*mw-tag-newbie[\w\s-]*">/',
+                       $line );
        }
 
        public function testRecentChangesLine_numberOfWatchingUsers() {
diff --git a/tests/phpunit/includes/collation/CollationTest.php b/tests/phpunit/includes/collation/CollationTest.php
new file mode 100644 (file)
index 0000000..25911a7
--- /dev/null
@@ -0,0 +1,118 @@
+<?php
+
+/**
+ * Class CollationTest
+ * @covers Collation
+ * @covers IcuCollation
+ * @covers IdentityCollation
+ * @covers UppercaseCollation
+ */
+class CollationTest extends MediaWikiLangTestCase {
+       protected function setUp() {
+               parent::setUp();
+               $this->checkPHPExtension( 'intl' );
+       }
+
+       /**
+        * Test to make sure, that if you
+        * have "X" and "XY", the binary
+        * sortkey also has "X" being a
+        * prefix of "XY". Our collation
+        * code makes this assumption.
+        *
+        * @param string $lang Language code for collator
+        * @param string $base Base string
+        * @param string $extended String containing base as a prefix.
+        *
+        * @dataProvider prefixDataProvider
+        */
+       public function testIsPrefix( $lang, $base, $extended ) {
+               $cp = Collator::create( $lang );
+               $cp->setStrength( Collator::PRIMARY );
+               $baseBin = $cp->getSortKey( $base );
+               // Remove sortkey terminator
+               $baseBin = rtrim( $baseBin, "\0" );
+               $extendedBin = $cp->getSortKey( $extended );
+               $this->assertStringStartsWith( $baseBin, $extendedBin, "$base is not a prefix of $extended" );
+       }
+
+       public static function prefixDataProvider() {
+               return [
+                       [ 'en', 'A', 'AA' ],
+                       [ 'en', 'A', 'AAA' ],
+                       [ 'en', 'Д', 'ДЂ' ],
+                       [ 'en', 'Д', 'ДA' ],
+                       // 'Ʒ' should expand to 'Z ' (note space).
+                       [ 'fi', 'Z', 'Ʒ' ],
+                       // 'Þ' should expand to 'th'
+                       [ 'sv', 't', 'Þ' ],
+                       // Javanese is a limited use alphabet, so should have 3 bytes
+                       // per character, so do some tests with it.
+                       [ 'en', 'ꦲ', 'ꦲꦤ' ],
+                       [ 'en', 'ꦲ', 'ꦲД' ],
+                       [ 'en', 'A', 'Aꦲ' ],
+               ];
+       }
+
+       /**
+        * Opposite of testIsPrefix
+        *
+        * @dataProvider notPrefixDataProvider
+        */
+       public function testNotIsPrefix( $lang, $base, $extended ) {
+               $cp = Collator::create( $lang );
+               $cp->setStrength( Collator::PRIMARY );
+               $baseBin = $cp->getSortKey( $base );
+               // Remove sortkey terminator
+               $baseBin = rtrim( $baseBin, "\0" );
+               $extendedBin = $cp->getSortKey( $extended );
+               $this->assertStringStartsNotWith( $baseBin, $extendedBin, "$base is a prefix of $extended" );
+       }
+
+       public static function notPrefixDataProvider() {
+               return [
+                       [ 'en', 'A', 'B' ],
+                       [ 'en', 'AC', 'ABC' ],
+                       [ 'en', 'Z', 'Ʒ' ],
+                       [ 'en', 'A', 'ꦲ' ],
+               ];
+       }
+
+       /**
+        * Test correct first letter is fetched.
+        *
+        * @param string $collation Collation name (aka uca-en)
+        * @param string $string String to get first letter of
+        * @param string $firstLetter Expected first letter.
+        *
+        * @dataProvider firstLetterProvider
+        */
+       public function testGetFirstLetter( $collation, $string, $firstLetter ) {
+               $col = Collation::factory( $collation );
+               $this->assertEquals( $firstLetter, $col->getFirstLetter( $string ) );
+       }
+
+       function firstLetterProvider() {
+               return [
+                       [ 'uppercase', 'Abc', 'A' ],
+                       [ 'uppercase', 'abc', 'A' ],
+                       [ 'identity', 'abc', 'a' ],
+                       [ 'uca-en', 'abc', 'A' ],
+                       [ 'uca-en', ' ', ' ' ],
+                       [ 'uca-en', 'Êveryone', 'E' ],
+                       [ 'uca-vi', 'Êveryone', 'Ê' ],
+                       // Make sure thorn is not a first letter.
+                       [ 'uca-sv', 'The', 'T' ],
+                       [ 'uca-sv', 'Å', 'Å' ],
+                       [ 'uca-hu', 'dzsdo', 'Dzs' ],
+                       [ 'uca-hu', 'dzdso', 'Dz' ],
+                       [ 'uca-hu', 'CSD', 'Cs' ],
+                       [ 'uca-root', 'CSD', 'C' ],
+                       [ 'uca-fi', 'Ǥ', 'G' ],
+                       [ 'uca-fi', 'Ŧ', 'T' ],
+                       [ 'uca-fi', 'Ʒ', 'Z' ],
+                       [ 'uca-fi', 'Ŋ', 'N' ],
+                       [ 'uppercase-ba', 'в', 'В' ],
+               ];
+       }
+}
diff --git a/tests/phpunit/includes/collation/CustomUppercaseCollationTest.php b/tests/phpunit/includes/collation/CustomUppercaseCollationTest.php
new file mode 100644 (file)
index 0000000..5d5317b
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+
+class CustomUppercaseCollationTest extends MediaWikiTestCase {
+
+       public function setUp() {
+               $this->collation = new CustomUppercaseCollation( [
+                       'D',
+                       'C',
+                       'B'
+               ], Language::factory( 'en' ) );
+
+               parent::setUp();
+       }
+
+       /**
+        * @dataProvider providerOrder
+        */
+       public function testOrder( $first, $second, $msg ) {
+               $sortkey1 = $this->collation->getSortKey( $first );
+               $sortkey2 = $this->collation->getSortKey( $second );
+
+               $this->assertTrue( strcmp( $sortkey1, $sortkey2 ) < 0, $msg );
+       }
+
+       public function providerOrder() {
+               return [
+                       [ 'X', 'Z', 'Maintain order of unrearranged' ],
+                       [ 'D', 'C', 'Actually resorts' ],
+                       [ 'D', 'B', 'resort test 2' ],
+                       [ 'Adobe', 'Abode', 'not first letter' ],
+                       [ '💩 ', 'C', 'Test relocated to end' ],
+                       [ 'c', 'b', 'lowercase' ],
+                       [ 'x', 'z', 'lowercase original' ],
+                       [ 'C50D', 'C100', 'Numbers' ]
+               ];
+       }
+
+       /**
+        * @dataProvider provideGetFirstLetter
+        */
+       public function testGetFirstLetter( $string, $first ) {
+               $this->assertSame( $this->collation->getFirstLetter( $string ), $first );
+       }
+
+       public function provideGetFirstLetter() {
+               return [
+                       [ 'Do', 'D' ],
+                       [ 'do', 'D' ],
+                       [ 'Ao', 'A' ],
+                       [ 'afdsa', 'A' ],
+                       [ "\xF3\xB3\x80\x80Foo", 'D' ],
+                       [ "\xF3\xB3\x80\x81Foo", 'C' ],
+                       [ "\xF3\xB3\x80\x82Foo", 'B' ],
+                       [ "\xF3\xB3\x80\x83Foo", "\xF3\xB3\x80\x83" ],
+               ];
+       }
+}
diff --git a/tests/phpunit/includes/config/EtcdConfigTest.php b/tests/phpunit/includes/config/EtcdConfigTest.php
new file mode 100644 (file)
index 0000000..763bfa8
--- /dev/null
@@ -0,0 +1,362 @@
+<?php
+
+class EtcConfigTest extends PHPUnit_Framework_TestCase {
+
+       private function createConfigMock( array $options = [] ) {
+               return $this->getMockBuilder( EtcdConfig::class )
+                       ->setConstructorArgs( [ $options + [
+                               'host' => 'etcd-tcp.example.net',
+                               'directory' => '/',
+                               'timeout' => 0.1,
+                       ] ] )
+                       ->setMethods( [ 'fetchAllFromEtcd' ] )
+                       ->getMock();
+       }
+
+       private function createSimpleConfigMock( array $config ) {
+               $mock = $this->createConfigMock();
+               $mock->expects( $this->once() )->method( 'fetchAllFromEtcd' )
+                       ->willReturn( [
+                               $config,
+                               null, // error
+                               false // retry?
+                       ] );
+               return $mock;
+       }
+
+       /**
+        * @covers EtcdConfig::has
+        */
+       public function testHasKnown() {
+               $config = $this->createSimpleConfigMock( [
+                       'known' => 'value'
+               ] );
+               $this->assertSame( true, $config->has( 'known' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::__construct
+        * @covers EtcdConfig::get
+        */
+       public function testGetKnown() {
+               $config = $this->createSimpleConfigMock( [
+                       'known' => 'value'
+               ] );
+               $this->assertSame( 'value', $config->get( 'known' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::has
+        */
+       public function testHasUnknown() {
+               $config = $this->createSimpleConfigMock( [
+                       'known' => 'value'
+               ] );
+               $this->assertSame( false, $config->has( 'unknown' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::get
+        */
+       public function testGetUnknown() {
+               $config = $this->createSimpleConfigMock( [
+                       'known' => 'value'
+               ] );
+               $this->setExpectedException( ConfigException::class );
+               $config->get( 'unknown' );
+       }
+
+       /**
+        * @covers EtcdConfig::__construct
+        */
+       public function testConstructCacheObj() {
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get' ] )
+                       ->getMock();
+               $cache->expects( $this->once() )->method( 'get' )
+                       ->willReturn( [
+                               'config' => [ 'known' => 'from-cache' ],
+                               'expires' => INF,
+                       ] );
+               $config = $this->createConfigMock( [ 'cache' => $cache ] );
+
+               $this->assertSame( 'from-cache', $config->get( 'known' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::__construct
+        */
+       public function testConstructCacheSpec() {
+               $config = $this->createConfigMock( [ 'cache' => [
+                       'class' =>  HashBagOStuff::class
+               ] ] );
+               $config->expects( $this->once() )->method( 'fetchAllFromEtcd' )
+                       ->willReturn( [
+                               [ 'known' => 'from-fetch' ],
+                               null, // error
+                               false // retry?
+                       ] );
+
+               $this->assertSame( 'from-fetch', $config->get( 'known' ) );
+       }
+
+       /**
+        * Test matrix
+        *
+        * - [x] Cache miss
+        *       Result: Fetched value
+        *       > cache miss | gets lock | backend succeeds
+        *
+        * - [x] Cache miss with backend error
+        *       Result: ConfigException
+        *       > cache miss | gets lock | backend error (no retry)
+        *
+        * - [x] Cache hit after retry
+        *       Result: Cached value (populated by process holding lock)
+        *       > cache miss | no lock | cache retry
+        *
+        * - [x] Cache hit
+        *       Result: Cached value
+        *       > cache hit
+        *
+        * - [x] Process cache hit
+        *       Result: Cached value
+        *       > process cache hit
+        *
+        * - [x] Cache expired
+        *       Result: Fetched value
+        *       > cache expired | gets lock | backend succeeds
+        *
+        * - [x] Cache expired with backend failure
+        *       Result: Cached value (stale)
+        *       > cache expired | gets lock | backend fails (allows retry)
+        *
+        * - [x] Cache expired and no lock
+        *       Result: Cached value (stale)
+        *       > cache expired | no lock
+        *
+        * Other notable scenarios:
+        *
+        * - [ ] Cache miss with backend retry
+        *       Result: Fetched value
+        *       > cache expired | gets lock | backend failure (allows retry)
+        */
+
+       /**
+        * @covers EtcdConfig::load
+        */
+       public function testLoadCacheMiss() {
+               // Create cache mock
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get', 'lock' ] )
+                       ->getMock();
+               // .. misses cache
+               $cache->expects( $this->once() )->method( 'get' )
+                       ->willReturn( false );
+               // .. gets lock
+               $cache->expects( $this->once() )->method( 'lock' )
+                       ->willReturn( true );
+
+               // Create config mock
+               $mock = $this->createConfigMock( [
+                       'cache' => $cache,
+               ] );
+               $mock->expects( $this->once() )->method( 'fetchAllFromEtcd' )
+                       ->willReturn( [ [ 'known' => 'from-fetch' ], null, false ] );
+
+               $this->assertSame( 'from-fetch', $mock->get( 'known' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::load
+        */
+       public function testLoadCacheMissBackendError() {
+               // Create cache mock
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get', 'lock' ] )
+                       ->getMock();
+               // .. misses cache
+               $cache->expects( $this->once() )->method( 'get' )
+                       ->willReturn( false );
+               // .. gets lock
+               $cache->expects( $this->once() )->method( 'lock' )
+                       ->willReturn( true );
+
+               // Create config mock
+               $mock = $this->createConfigMock( [
+                       'cache' => $cache,
+               ] );
+               $mock->expects( $this->once() )->method( 'fetchAllFromEtcd' )
+                       ->willReturn( [ null, 'Fake error', false ] );
+
+               $this->setExpectedException( ConfigException::class );
+               $mock->get( 'key' );
+       }
+
+       /**
+        * @covers EtcdConfig::load
+        */
+       public function testLoadCacheMissWithoutLock() {
+               // Create cache mock
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get', 'lock' ] )
+                       ->getMock();
+               $cache->expects( $this->exactly( 2 ) )->method( 'get' )
+                       ->will( $this->onConsecutiveCalls(
+                               // .. misses cache first time
+                               false,
+                               // .. hits cache on retry
+                               [
+                                       'config' => [ 'known' => 'from-cache' ],
+                                       'expires' => INF,
+                               ]
+                       ) );
+               // .. misses lock
+               $cache->expects( $this->once() )->method( 'lock' )
+                       ->willReturn( false );
+
+               // Create config mock
+               $mock = $this->createConfigMock( [
+                       'cache' => $cache,
+               ] );
+               $mock->expects( $this->never() )->method( 'fetchAllFromEtcd' );
+
+               $this->assertSame( 'from-cache', $mock->get( 'known' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::load
+        */
+       public function testLoadCacheHit() {
+               // Create cache mock
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get', 'lock' ] )
+                       ->getMock();
+               $cache->expects( $this->once() )->method( 'get' )
+                       // .. hits cache
+                       ->willReturn( [
+                               'config' => [ 'known' => 'from-cache' ],
+                               'expires' => INF,
+                       ] );
+               $cache->expects( $this->never() )->method( 'lock' );
+
+               // Create config mock
+               $mock = $this->createConfigMock( [
+                       'cache' => $cache,
+               ] );
+               $mock->expects( $this->never() )->method( 'fetchAllFromEtcd' );
+
+               $this->assertSame( 'from-cache', $mock->get( 'known' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::load
+        */
+       public function testLoadProcessCacheHit() {
+               // Create cache mock
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get', 'lock' ] )
+                       ->getMock();
+               $cache->expects( $this->once() )->method( 'get' )
+                       // .. hits cache
+                       ->willReturn( [
+                               'config' => [ 'known' => 'from-cache' ],
+                               'expires' => INF,
+                       ] );
+               $cache->expects( $this->never() )->method( 'lock' );
+
+               // Create config mock
+               $mock = $this->createConfigMock( [
+                       'cache' => $cache,
+               ] );
+               $mock->expects( $this->never() )->method( 'fetchAllFromEtcd' );
+
+               $this->assertSame( 'from-cache', $mock->get( 'known' ), 'Cache hit' );
+               $this->assertSame( 'from-cache', $mock->get( 'known' ), 'Process cache hit' );
+       }
+
+       /**
+        * @covers EtcdConfig::load
+        */
+       public function testLoadCacheExpiredLockFetchSucceeded() {
+               // Create cache mock
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get', 'lock' ] )
+                       ->getMock();
+               $cache->expects( $this->once() )->method( 'get' )->willReturn(
+                       // .. stale cache
+                       [
+                               'config' => [ 'known' => 'from-cache-expired' ],
+                               'expires' => -INF,
+                       ]
+               );
+               // .. gets lock
+               $cache->expects( $this->once() )->method( 'lock' )
+                       ->willReturn( true );
+
+               // Create config mock
+               $mock = $this->createConfigMock( [
+                       'cache' => $cache,
+               ] );
+               $mock->expects( $this->once() )->method( 'fetchAllFromEtcd' )
+                       ->willReturn( [ [ 'known' => 'from-fetch' ], null, false ] );
+
+               $this->assertSame( 'from-fetch', $mock->get( 'known' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::load
+        */
+       public function testLoadCacheExpiredLockFetchFails() {
+               // Create cache mock
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get', 'lock' ] )
+                       ->getMock();
+               $cache->expects( $this->once() )->method( 'get' )->willReturn(
+                       // .. stale cache
+                       [
+                               'config' => [ 'known' => 'from-cache-expired' ],
+                               'expires' => -INF,
+                       ]
+               );
+               // .. gets lock
+               $cache->expects( $this->once() )->method( 'lock' )
+                       ->willReturn( true );
+
+               // Create config mock
+               $mock = $this->createConfigMock( [
+                       'cache' => $cache,
+               ] );
+               $mock->expects( $this->once() )->method( 'fetchAllFromEtcd' )
+                       ->willReturn( [ null, 'Fake failure', true ] );
+
+               $this->assertSame( 'from-cache-expired', $mock->get( 'known' ) );
+       }
+
+       /**
+        * @covers EtcdConfig::load
+        */
+       public function testLoadCacheExpiredNoLock() {
+               // Create cache mock
+               $cache = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'get', 'lock' ] )
+                       ->getMock();
+               $cache->expects( $this->once() )->method( 'get' )
+                       // .. hits cache (expired value)
+                       ->willReturn( [
+                               'config' => [ 'known' => 'from-cache-expired' ],
+                               'expires' => -INF,
+                       ] );
+               // .. misses lock
+               $cache->expects( $this->once() )->method( 'lock' )
+                       ->willReturn( false );
+
+               // Create config mock
+               $mock = $this->createConfigMock( [
+                       'cache' => $cache,
+               ] );
+               $mock->expects( $this->never() )->method( 'fetchAllFromEtcd' );
+
+               $this->assertSame( 'from-cache-expired', $mock->get( 'known' ) );
+       }
+}
index c76e8bb..a6b220d 100644 (file)
@@ -40,6 +40,7 @@ class GlobalVarConfigTest extends MediaWikiTestCase {
 
        /**
         * @covers GlobalVarConfig::has
+        * @covers GlobalVarConfig::hasWithPrefix
         */
        public function testHas() {
                $this->maybeStashGlobal( 'wgGlobalVarConfigTestHas' );
@@ -72,12 +73,12 @@ class GlobalVarConfigTest extends MediaWikiTestCase {
        }
 
        /**
-        * @param string $name
-        * @param string $prefix
-        * @param string $expected
         * @dataProvider provideGet
         * @covers GlobalVarConfig::get
         * @covers GlobalVarConfig::getWithPrefix
+        * @param string $name
+        * @param string $prefix
+        * @param string $expected
         */
        public function testGet( $name, $prefix, $expected ) {
                $config = new GlobalVarConfig( $prefix );
index bc6d6eb..d1eb510 100644 (file)
@@ -5,6 +5,7 @@ class MultiConfigTest extends MediaWikiTestCase {
        /**
         * Tests that settings are fetched in the right order
         *
+        * @covers MultiConfig::__construct
         * @covers MultiConfig::get
         */
        public function testGet() {
index 4c69d87..b9ce997 100644 (file)
@@ -29,7 +29,7 @@ more stuff
                                "WikitextContentTest_testGetParserOutput",
                                CONTENT_MODEL_WIKITEXT,
                                "hello ''world''\n",
-                               "<p>hello <i>world</i>\n</p>"
+                               "<div class=\"mw-parser-output\"><p>hello <i>world</i>\n</p>\n\n\n</div>"
                        ],
                        // TODO: more...?
                ];
index 97e9b26..f61569a 100644 (file)
@@ -91,7 +91,6 @@ class FakeDatabaseMysqlBase extends DatabaseMysqlBase {
        }
 
        protected function mysqlRealEscapeString( $s ) {
-
        }
 
        function insertId() {
index 57754bc..206655c 100644 (file)
@@ -17,13 +17,13 @@ class DatabaseSQLTest extends MediaWikiTestCase {
 
        protected function assertLastSql( $sqlText ) {
                $this->assertEquals(
-                       $this->database->getLastSqls(),
-                       $sqlText
+                       $sqlText,
+                       $this->database->getLastSqls()
                );
        }
 
        protected function assertLastSqlDb( $sqlText, $db ) {
-               $this->assertEquals( $db->getLastSqls(), $sqlText );
+               $this->assertEquals( $sqlText, $db->getLastSqls() );
        }
 
        /**
@@ -365,7 +365,8 @@ class DatabaseSQLTest extends MediaWikiTestCase {
                        $sql['conds'],
                        __METHOD__,
                        isset( $sql['insertOptions'] ) ? $sql['insertOptions'] : [],
-                       isset( $sql['selectOptions'] ) ? $sql['selectOptions'] : []
+                       isset( $sql['selectOptions'] ) ? $sql['selectOptions'] : [],
+                       isset( $sql['selectJoinConds'] ) ? $sql['selectJoinConds'] : []
                );
                $this->assertLastSql( $sqlTextNative );
 
@@ -380,7 +381,8 @@ class DatabaseSQLTest extends MediaWikiTestCase {
                        $sql['conds'],
                        __METHOD__,
                        isset( $sql['insertOptions'] ) ? $sql['insertOptions'] : [],
-                       isset( $sql['selectOptions'] ) ? $sql['selectOptions'] : []
+                       isset( $sql['selectOptions'] ) ? $sql['selectOptions'] : [],
+                       isset( $sql['selectJoinConds'] ) ? $sql['selectJoinConds'] : []
                );
                $this->assertLastSqlDb( implode( '; ', [ $sqlSelect, $sqlInsert ] ), $dbWeb );
        }
@@ -397,7 +399,7 @@ class DatabaseSQLTest extends MediaWikiTestCase {
                                "INSERT INTO insert_table " .
                                        "(field_insert,field) " .
                                        "SELECT field_select,field2 " .
-                                       "FROM select_table",
+                                       "FROM select_table WHERE *",
                                "SELECT field_select AS field_insert,field2 AS field " .
                                "FROM select_table WHERE *   FOR UPDATE",
                                "INSERT INTO insert_table (field_insert,field) VALUES ('0','1')"
@@ -437,6 +439,28 @@ class DatabaseSQLTest extends MediaWikiTestCase {
                                "FROM select_table WHERE field = '2' ORDER BY field  FOR UPDATE",
                                "INSERT IGNORE INTO insert_table (field_insert,field) VALUES ('0','1')"
                        ],
+                       [
+                               [
+                                       'destTable' => 'insert_table',
+                                       'srcTable' => [ 'select_table1', 'select_table2' ],
+                                       'varMap' => [ 'field_insert' => 'field_select', 'field' => 'field2' ],
+                                       'conds' => [ 'field' => 2 ],
+                                       'selectOptions' => [ 'ORDER BY' => 'field', 'FORCE INDEX' => [ 'select_table1' => 'index1' ] ],
+                                       'selectJoinConds' => [
+                                               'select_table2' => [ 'LEFT JOIN', [ 'select_table1.foo = select_table2.bar' ] ],
+                                       ],
+                               ],
+                               "INSERT INTO insert_table " .
+                                       "(field_insert,field) " .
+                                       "SELECT field_select,field2 " .
+                                       "FROM select_table1 LEFT JOIN select_table2 ON ((select_table1.foo = select_table2.bar)) " .
+                                       "WHERE field = '2' " .
+                                       "ORDER BY field",
+                               "SELECT field_select AS field_insert,field2 AS field " .
+                               "FROM select_table1 LEFT JOIN select_table2 ON ((select_table1.foo = select_table2.bar)) " .
+                               "WHERE field = '2' ORDER BY field  FOR UPDATE",
+                               "INSERT INTO insert_table (field_insert,field) VALUES ('0','1')"
+                       ],
                ];
        }
 
@@ -660,19 +684,31 @@ class DatabaseSQLTest extends MediaWikiTestCase {
                return [
                        [
                                'text',
-                               "LIKE 'text'"
+                               "LIKE 'text' ESCAPE '`'"
                        ],
                        [
                                [ 'text', new LikeMatch( '%' ) ],
-                               "LIKE 'text%'"
+                               "LIKE 'text%' ESCAPE '`'"
                        ],
                        [
                                [ 'text', new LikeMatch( '%' ), 'text2' ],
-                               "LIKE 'text%text2'"
+                               "LIKE 'text%text2' ESCAPE '`'"
                        ],
                        [
                                [ 'text', new LikeMatch( '_' ) ],
-                               "LIKE 'text_'"
+                               "LIKE 'text_' ESCAPE '`'"
+                       ],
+                       [
+                               'more_text',
+                               "LIKE 'more`_text' ESCAPE '`'"
+                       ],
+                       [
+                               [ 'C:\\Windows\\', new LikeMatch( '%' ) ],
+                               "LIKE 'C:\\Windows\\%' ESCAPE '`'"
+                       ],
+                       [
+                               [ 'accent`_test`', new LikeMatch( '%' ) ],
+                               "LIKE 'accent```_test``%' ESCAPE '`'"
                        ],
                ];
        }
index 8b285cb..049f81f 100644 (file)
@@ -409,16 +409,27 @@ class LBFactoryTest extends MediaWikiTestCase {
                        "Correct full table name"
                );
 
-               \MediaWiki\suppressWarnings();
-               $this->assertFalse( $db->selectDB( 'garbage-db' ) );
-               \MediaWiki\restoreWarnings();
-
                $this->assertEquals(
                        $this->quoteTable( $db, 'garbage-db' ) . '.' . $this->quoteTable( $db, 'page' ),
                        $db->tableName( 'garbage-db.page' ),
                        "Correct full table name"
                );
 
+               if ( $db->databasesAreIndependent() ) {
+                       try {
+                               $e = null;
+                               $db->selectDB( 'garbage-db' );
+                       } catch ( \Wikimedia\Rdbms\DBConnectionError $e ) {
+                               // expected
+                       }
+                       $this->assertInstanceOf( '\Wikimedia\Rdbms\DBConnectionError', $e );
+                       $this->assertFalse( $db->isOpen() );
+               } else {
+                       \MediaWiki\suppressWarnings();
+                       $this->assertFalse( $db->selectDB( 'garbage-db' ) );
+                       \MediaWiki\restoreWarnings();
+               }
+
                $factory->closeAll();
                $factory->destroy();
        }
index 0ee7d26..fda3ac6 100644 (file)
@@ -21,7 +21,7 @@
 namespace MediaWiki\Logger;
 
 use MediaWikiTestCase;
-use TestingAccessWrapper;
+use Wikimedia\TestingAccessWrapper;
 
 class MonologSpiTest extends MediaWikiTestCase {
 
index ce21412..88cd2dd 100644 (file)
@@ -22,6 +22,7 @@ namespace MediaWiki\Logger\Monolog;
 
 use MediaWikiTestCase;
 use Monolog\Logger;
+use Wikimedia\TestingAccessWrapper;
 
 class KafkaHandlerTest extends MediaWikiTestCase {
 
@@ -154,7 +155,7 @@ class KafkaHandlerTest extends MediaWikiTestCase {
                        ->method( 'send' )
                        ->will( $this->returnValue( true ) );
                // evil hax
-               \TestingAccessWrapper::newFromObject( $mockMethod )->matcher->parametersMatcher =
+               TestingAccessWrapper::newFromObject( $mockMethod )->matcher->parametersMatcher =
                        new \PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters( [
                                [ $this->anything(), $this->anything(), [ 'words' ] ],
                                [ $this->anything(), $this->anything(), [ 'lines' ] ]
index f33cf7e..2768d32 100644 (file)
@@ -24,7 +24,7 @@ use InvalidArgumentException;
 use LengthException;
 use LogicException;
 use MediaWikiTestCase;
-use TestingAccessWrapper;
+use Wikimedia\TestingAccessWrapper;
 
 class LineFormatterTest extends MediaWikiTestCase {
 
index b96ec08..11b869a 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 class CdnCacheUpdateTest extends MediaWikiTestCase {
        public function testPurgeMergeWeb() {
                $this->setMwGlobals( 'wgCommandLineMode', false );
index d7ad1d1..2c199bc 100644 (file)
@@ -13,8 +13,7 @@ class DeferredUpdatesTest extends MediaWikiTestCase {
                $post = DeferredUpdates::POSTSEND;
                $all = DeferredUpdates::ALL;
 
-               $update = $this->getMockBuilder( 'DeferrableUpdate' )
-                             ->getMock();
+               $update = $this->getMock( DeferrableUpdate::class );
                $update->expects( $this->never() )
                        ->method( 'doUpdate' );
 
index 9cc3ffd..639c323 100644 (file)
@@ -167,7 +167,7 @@ class LinksUpdateTest extends MediaWikiLangTestCase {
 
                $this->assertRecentChangeByCategorization(
                        $title,
-                       $wikiPage->getParserOutput( new ParserOptions() ),
+                       $wikiPage->getParserOutput( ParserOptions::newCanonical() ),
                        Title::newFromText( 'Category:Foo' ),
                        [ [ 'Foo', '[[:Testing]] added to category' ] ]
                );
@@ -177,7 +177,7 @@ class LinksUpdateTest extends MediaWikiLangTestCase {
 
                $this->assertRecentChangeByCategorization(
                        $title,
-                       $wikiPage->getParserOutput( new ParserOptions() ),
+                       $wikiPage->getParserOutput( ParserOptions::newCanonical() ),
                        Title::newFromText( 'Category:Foo' ),
                        [
                                [ 'Foo', '[[:Testing]] added to category' ],
@@ -187,7 +187,7 @@ class LinksUpdateTest extends MediaWikiLangTestCase {
 
                $this->assertRecentChangeByCategorization(
                        $title,
-                       $wikiPage->getParserOutput( new ParserOptions() ),
+                       $wikiPage->getParserOutput( ParserOptions::newCanonical() ),
                        Title::newFromText( 'Category:Bar' ),
                        [
                                [ 'Bar', '[[:Testing]] added to category' ],
@@ -211,7 +211,7 @@ class LinksUpdateTest extends MediaWikiLangTestCase {
 
                $this->assertRecentChangeByCategorization(
                        $templateTitle,
-                       $templatePage->getParserOutput( new ParserOptions() ),
+                       $templatePage->getParserOutput( ParserOptions::newCanonical() ),
                        Title::newFromText( 'Baz' ),
                        []
                );
@@ -221,7 +221,7 @@ class LinksUpdateTest extends MediaWikiLangTestCase {
 
                $this->assertRecentChangeByCategorization(
                        $templateTitle,
-                       $templatePage->getParserOutput( new ParserOptions() ),
+                       $templatePage->getParserOutput( ParserOptions::newCanonical() ),
                        Title::newFromText( 'Baz' ),
                        [ [
                                'Baz',
index 7c36f7d..614a1c9 100644 (file)
@@ -75,53 +75,6 @@ class MWExceptionTest extends MediaWikiTestCase {
                $this->assertTrue( $e->isLoggable() );
        }
 
-       /**
-        * @dataProvider provideRunHooks
-        * @covers MWException::runHooks
-        */
-       public function testRunHooks( $wgExceptionHooks, $name, $args, $expectedReturn ) {
-               $this->setMwGlobals( [
-                       'wgExceptionHooks' => $wgExceptionHooks,
-               ] );
-               $e = new MWException();
-               $this->assertEquals( $expectedReturn, $e->runHooks( $name, $args ) );
-       }
-
-       public static function provideRunHooks() {
-               return [
-                       [ null, null, null, null ],
-                       [ [], 'name', [], null ],
-                       [ [ 'name' => false ], 'name', [], null ],
-                       [
-                               [ 'mockHook' => [ 'MWExceptionTest::mockHook' ] ],
-                               'mockHook', [], 'YAY.[]'
-                       ],
-                       [
-                               [ 'mockHook' => [ 'MWExceptionTest::mockHook' ] ],
-                               'mockHook', [ 'a' ], 'YAY.{"1":"a"}'
-                       ],
-                       [
-                               [ 'mockHook' => [ 'MWExceptionTest::mockHook' ] ],
-                               'mockHook', [ null ], null
-                       ],
-               ];
-       }
-
-       /**
-        * Used in conjunction with provideRunHooks and testRunHooks as a mock callback for a hook
-        */
-       public static function mockHook() {
-               $args = func_get_args();
-               if ( !$args[0] instanceof MWException ) {
-                       return '$caller not instance of MWException';
-               }
-               unset( $args[0] );
-               if ( array_key_exists( 1, $args ) && $args[1] === null ) {
-                       return null;
-               }
-               return 'YAY.' . json_encode( $args );
-       }
-
        /**
         * @dataProvider provideIsCommandLine
         * @covers MWException::isCommandLine
index f777206..ddcf19b 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @group FileRepo
  * @group FileBackend
index db6d002..48310a9 100644 (file)
@@ -133,18 +133,18 @@ class ClassicInterwikiLookupTest extends MediaWikiTestCase {
                // NOTE: CDB setup is expensive, so we only do
                //  it once and run all the tests in one go.
 
-               $dewiki = [
-                       'iw_prefix' => 'de',
-                       'iw_url' => 'http://de.wikipedia.org/wiki/',
-                       'iw_local' => 1
-               ];
-
                $zzwiki = [
                        'iw_prefix' => 'zz',
                        'iw_url' => 'http://zzwiki.org/wiki/',
                        'iw_local' => 0
                ];
 
+               $dewiki = [
+                       'iw_prefix' => 'de',
+                       'iw_url' => 'http://de.wikipedia.org/wiki/',
+                       'iw_local' => 1
+               ];
+
                $cdbFile = $this->populateCDB(
                        'en',
                        [ $dewiki ],
@@ -160,7 +160,7 @@ class ClassicInterwikiLookupTest extends MediaWikiTestCase {
                );
 
                $this->assertEquals(
-                       [ $dewiki, $zzwiki ],
+                       [ $zzwiki, $dewiki ],
                        $lookup->getAllPrefixes(),
                        'getAllPrefixes()'
                );
@@ -185,17 +185,16 @@ class ClassicInterwikiLookupTest extends MediaWikiTestCase {
        }
 
        public function testArrayStorage() {
-               $dewiki = [
-                       'iw_prefix' => 'de',
-                       'iw_url' => 'http://de.wikipedia.org/wiki/',
-                       'iw_local' => 1
-               ];
-
                $zzwiki = [
                        'iw_prefix' => 'zz',
                        'iw_url' => 'http://zzwiki.org/wiki/',
                        'iw_local' => 0
                ];
+               $dewiki = [
+                       'iw_prefix' => 'de',
+                       'iw_url' => 'http://de.wikipedia.org/wiki/',
+                       'iw_local' => 1
+               ];
 
                $hash = $this->populateHash(
                        'en',
@@ -212,7 +211,7 @@ class ClassicInterwikiLookupTest extends MediaWikiTestCase {
                );
 
                $this->assertEquals(
-                       [ $dewiki, $zzwiki ],
+                       [ $zzwiki, $dewiki ],
                        $lookup->getAllPrefixes(),
                        'getAllPrefixes()'
                );
@@ -233,4 +232,42 @@ class ClassicInterwikiLookupTest extends MediaWikiTestCase {
                $this->assertSame( false, $interwiki->isLocal(), 'isLocal' );
        }
 
+       public function testGetAllPrefixes() {
+               $zz = [
+                       'iw_prefix' => 'zz',
+                       'iw_url' => 'https://azz.example.org/',
+                       'iw_local' => 1
+               ];
+               $de = [
+                       'iw_prefix' => 'de',
+                       'iw_url' => 'https://de.example.org/',
+                       'iw_local' => 1
+               ];
+               $azz = [
+                       'iw_prefix' => 'azz',
+                       'iw_url' => 'https://azz.example.org/',
+                       'iw_local' => 1
+               ];
+
+               $hash = $this->populateHash(
+                       'en',
+                       [],
+                       [ $zz, $de, $azz ]
+               );
+               $lookup = new \MediaWiki\Interwiki\ClassicInterwikiLookup(
+                       Language::factory( 'en' ),
+                       WANObjectCache::newEmpty(),
+                       60 * 60,
+                       $hash,
+                       3,
+                       'en'
+               );
+
+               $this->assertEquals(
+                       [ $zz, $de, $azz ],
+                       $lookup->getAllPrefixes(),
+                       'getAllPrefixes() - preserves order'
+               );
+       }
+
 }
index 4754b04..1d62a78 100644 (file)
@@ -60,20 +60,37 @@ class InterwikiLookupAdapterTest extends MediaWikiTestCase {
        }
 
        public function testGetAllPrefixes() {
+               $foo = [
+                       'iw_prefix' => 'foo',
+                       'iw_url' => '',
+                       'iw_api' => '',
+                       'iw_wikiid' => 'foobar',
+                       'iw_local' => false,
+                       'iw_trans' => false,
+               ];
+               $enwt = [
+                       'iw_prefix' => 'enwt',
+                       'iw_url' => 'https://en.wiktionary.org/wiki/$1',
+                       'iw_api' => 'https://en.wiktionary.org/w/api.php',
+                       'iw_wikiid' => 'enwiktionary',
+                       'iw_local' => true,
+                       'iw_trans' => false,
+               ];
+
                $this->assertEquals(
-                       [ 'foo', 'enwt' ],
+                       [ $foo, $enwt ],
                        $this->interwikiLookup->getAllPrefixes(),
                        'getAllPrefixes()'
                );
 
                $this->assertEquals(
-                       [ 'foo' ],
+                       [ $foo ],
                        $this->interwikiLookup->getAllPrefixes( false ),
                        'get external prefixes'
                );
 
                $this->assertEquals(
-                       [ 'enwt' ],
+                       [ $enwt ],
                        $this->interwikiLookup->getAllPrefixes( true ),
                        'get local prefixes'
                );
index b1ad77a..22b1304 100644 (file)
@@ -119,146 +119,4 @@ class InterwikiTest extends MediaWikiTestCase {
                $this->assertNotSame( $interwiki, $interwikiLookup->fetch( 'de' ), 'invalidate cache' );
        }
 
-       /**
-        * @param string $thisSite
-        * @param string[] $local
-        * @param string[] $global
-        *
-        * @return string[]
-        */
-       private function populateHash( $thisSite, $local, $global ) {
-               $hash = [];
-               $hash[ '__sites:' . wfWikiID() ] = $thisSite;
-
-               $globals = [];
-               $locals = [];
-
-               foreach ( $local as $row ) {
-                       $prefix = $row['iw_prefix'];
-                       $data = $row['iw_local'] . ' ' . $row['iw_url'];
-                       $locals[] = $prefix;
-                       $hash[ "_{$thisSite}:{$prefix}" ] = $data;
-               }
-
-               foreach ( $global as $row ) {
-                       $prefix = $row['iw_prefix'];
-                       $data = $row['iw_local'] . ' ' . $row['iw_url'];
-                       $globals[] = $prefix;
-                       $hash[ "__global:{$prefix}" ] = $data;
-               }
-
-               $hash[ '__list:__global' ] = implode( ' ', $globals );
-               $hash[ '__list:_' . $thisSite ] = implode( ' ', $locals );
-
-               return $hash;
-       }
-
-       private function populateCDB( $thisSite, $local, $global ) {
-               $cdbFile = tempnam( wfTempDir(), 'MW-ClassicInterwikiLookupTest-' ) . '.cdb';
-               $cdb = CdbWriter::open( $cdbFile );
-
-               $hash = $this->populateHash( $thisSite, $local, $global );
-
-               foreach ( $hash as $key => $value ) {
-                       $cdb->set( $key, $value );
-               }
-
-               $cdb->close();
-               return $cdbFile;
-       }
-
-       public function testCDBStorage() {
-               // NOTE: CDB setup is expensive, so we only do
-               //  it once and run all the tests in one go.
-
-               $dewiki = [
-                       'iw_prefix' => 'de',
-                       'iw_url' => 'http://de.wikipedia.org/wiki/',
-                       'iw_local' => 1
-               ];
-
-               $zzwiki = [
-                       'iw_prefix' => 'zz',
-                       'iw_url' => 'http://zzwiki.org/wiki/',
-                       'iw_local' => 0
-               ];
-
-               $cdbFile = $this->populateCDB(
-                       'en',
-                       [ $dewiki ],
-                       [ $zzwiki ]
-               );
-
-               $this->setWgInterwikiCache( $cdbFile );
-
-               $interwikiLookup = MediaWikiServices::getInstance()->getInterwikiLookup();
-               $this->assertEquals(
-                       [ $dewiki, $zzwiki ],
-                       $interwikiLookup->getAllPrefixes(),
-                       'getAllPrefixes()'
-               );
-
-               $this->assertTrue( $interwikiLookup->isValidInterwiki( 'de' ), 'known prefix is valid' );
-               $this->assertTrue( $interwikiLookup->isValidInterwiki( 'zz' ), 'known prefix is valid' );
-
-               $interwiki = $interwikiLookup->fetch( 'de' );
-               $this->assertInstanceOf( 'Interwiki', $interwiki );
-
-               $this->assertSame( 'http://de.wikipedia.org/wiki/', $interwiki->getURL(), 'getURL' );
-               $this->assertSame( true, $interwiki->isLocal(), 'isLocal' );
-
-               $interwiki = $interwikiLookup->fetch( 'zz' );
-               $this->assertInstanceOf( 'Interwiki', $interwiki );
-
-               $this->assertSame( 'http://zzwiki.org/wiki/', $interwiki->getURL(), 'getURL' );
-               $this->assertSame( false, $interwiki->isLocal(), 'isLocal' );
-
-               // cleanup temp file
-               unlink( $cdbFile );
-       }
-
-       public function testArrayStorage() {
-               $dewiki = [
-                       'iw_prefix' => 'de',
-                       'iw_url' => 'http://de.wikipedia.org/wiki/',
-                       'iw_local' => 1
-               ];
-
-               $zzwiki = [
-                       'iw_prefix' => 'zz',
-                       'iw_url' => 'http://zzwiki.org/wiki/',
-                       'iw_local' => 0
-               ];
-
-               $cdbData = $this->populateHash(
-                       'en',
-                       [ $dewiki ],
-                       [ $zzwiki ]
-               );
-
-               $this->setWgInterwikiCache( $cdbData );
-
-               $interwikiLookup = MediaWikiServices::getInstance()->getInterwikiLookup();
-               $this->assertEquals(
-                       [ $dewiki, $zzwiki ],
-                       $interwikiLookup->getAllPrefixes(),
-                       'getAllPrefixes()'
-               );
-
-               $this->assertTrue( $interwikiLookup->isValidInterwiki( 'de' ), 'known prefix is valid' );
-               $this->assertTrue( $interwikiLookup->isValidInterwiki( 'zz' ), 'known prefix is valid' );
-
-               $interwiki = $interwikiLookup->fetch( 'de' );
-               $this->assertInstanceOf( 'Interwiki', $interwiki );
-
-               $this->assertSame( 'http://de.wikipedia.org/wiki/', $interwiki->getURL(), 'getURL' );
-               $this->assertSame( true, $interwiki->isLocal(), 'isLocal' );
-
-               $interwiki = $interwikiLookup->fetch( 'zz' );
-               $this->assertInstanceOf( 'Interwiki', $interwiki );
-
-               $this->assertSame( 'http://zzwiki.org/wiki/', $interwiki->getURL(), 'getURL' );
-               $this->assertSame( false, $interwiki->isLocal(), 'isLocal' );
-       }
-
 }
index 1deb7aa..00c47c8 100644 (file)
@@ -91,4 +91,41 @@ class JobTest extends MediaWikiTestCase {
                return $mock;
        }
 
+       /**
+        * @dataProvider provideTestJobFactory
+        *
+        * @param mixed $handler
+        *
+        * @covers Job::factory
+        */
+       public function testJobFactory( $handler ) {
+               $this->mergeMWGlobalArrayValue( 'wgJobClasses', [ 'testdummy' => $handler ] );
+
+               $job = Job::factory( 'testdummy', Title::newMainPage(), [] );
+               $this->assertInstanceOf( NullJob::class, $job );
+
+               $job2 = Job::factory( 'testdummy', Title::newMainPage(), [] );
+               $this->assertInstanceOf( NullJob::class, $job2 );
+               $this->assertNotSame( $job, $job2, 'should not reuse instance' );
+       }
+
+       public function provideTestJobFactory() {
+               return [
+                       'class name' => [ 'NullJob' ],
+                       'closure' => [ function( Title $title, array $params ) {
+                               return new NullJob( $title, $params );
+                       } ],
+                       'function' => [ [ $this, 'newNullJob' ] ],
+                       'static function' => [ self::class . '::staticNullJob' ]
+               ];
+       }
+
+       public function newNullJob( Title $title, array $params ) {
+               return new NullJob( $title, $params );
+       }
+
+       public static function staticNullJob( Title $title, array $params ) {
+               return new NullJob( $title, $params );
+       }
+
 }
index 42f08cc..d0121b1 100644 (file)
@@ -147,6 +147,45 @@ class CSSMinTest extends MediaWikiTestCase {
                ];
        }
 
+       public static function provideIsRemoteUrl() {
+               return [
+                       [ true, 'http://localhost/w/red.gif?123' ],
+                       [ true, 'https://example.org/x.png' ],
+                       [ true, '//example.org/x.y.z/image.png' ],
+                       [ true, '//localhost/styles.css?query=yes' ],
+                       [ true, 'data:image/gif;base64,R0lGODlhAQABAIAAAP8AADAAACwAAAAAAQABAAACAkQBADs=' ],
+                       [ false, 'x.gif' ],
+                       [ false, '/x.gif' ],
+                       [ false, './x.gif' ],
+                       [ false, '../x.gif' ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideIsRemoteUrl
+        * @cover CSSMin::isRemoteUrl
+        */
+       public function testIsRemoteUrl( $expect, $url ) {
+               $this->assertEquals( CSSMinTestable::isRemoteUrl( $url ), $expect );
+       }
+
+       public static function provideIsLocalUrls() {
+               return [
+                       [ false, 'x.gif' ],
+                       [ true, '/x.gif' ],
+                       [ false, './x.gif' ],
+                       [ false, '../x.gif' ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideIsLocalUrls
+        * @cover CSSMin::isLocalUrl
+        */
+       public function testIsLocalUrl( $expect, $url ) {
+               $this->assertEquals( CSSMinTestable::isLocalUrl( $url ), $expect );
+       }
+
        /**
         * This tests funky parameters to CSSMin::remap. testRemapRemapping tests
         * the basic functionality.
@@ -211,45 +250,6 @@ class CSSMinTest extends MediaWikiTestCase {
                $this->assertEquals( $expectedOutput, $realOutput, "CSSMin::remap: $message" );
        }
 
-       public static function provideIsRemoteUrl() {
-               return [
-                       [ true, 'http://localhost/w/red.gif?123' ],
-                       [ true, 'https://example.org/x.png' ],
-                       [ true, '//example.org/x.y.z/image.png' ],
-                       [ true, '//localhost/styles.css?query=yes' ],
-                       [ true, 'data:image/gif;base64,R0lGODlhAQABAIAAAP8AADAAACwAAAAAAQABAAACAkQBADs=' ],
-                       [ false, 'x.gif' ],
-                       [ false, '/x.gif' ],
-                       [ false, './x.gif' ],
-                       [ false, '../x.gif' ],
-               ];
-       }
-
-       /**
-        * @dataProvider provideIsRemoteUrl
-        * @cover CSSMin::isRemoteUrl
-        */
-       public function testIsRemoteUrl( $expect, $url ) {
-               $this->assertEquals( CSSMinTestable::isRemoteUrl( $url ), $expect );
-       }
-
-       public static function provideIsLocalUrls() {
-               return [
-                       [ false, 'x.gif' ],
-                       [ true, '/x.gif' ],
-                       [ false, './x.gif' ],
-                       [ false, '../x.gif' ],
-               ];
-       }
-
-       /**
-        * @dataProvider provideIsLocalUrls
-        * @cover CSSMin::isLocalUrl
-        */
-       public function testIsLocalUrl( $expect, $url ) {
-               $this->assertEquals( CSSMinTestable::isLocalUrl( $url ), $expect );
-       }
-
        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.
@@ -307,8 +307,8 @@ class CSSMinTest extends MediaWikiTestCase {
                        ],
                        [
                                'Remote URL (unnecessary quotes not preserved)',
-                               'foo { background: url("http://example.org/w/foo.png"); }',
-                               'foo { background: url(http://example.org/w/foo.png); }',
+                               'foo { background: url("http://example.org/w/unnecessary-quotes.png"); }',
+                               'foo { background: url(http://example.org/w/unnecessary-quotes.png); }',
                        ],
                        [
                                'Embedded file',
@@ -410,9 +410,39 @@ class CSSMinTest extends MediaWikiTestCase {
                                '@import url(http://doc.example.org/styles.css)',
                        ],
                        [
-                               '@import rule to URL (should we remap this?)',
-                               '@import url(//localhost/styles.css?query=yes)',
-                               '@import url(//localhost/styles.css?query=yes)',
+                               '@import rule to local file (should we remap this?)',
+                               '@import url(/styles.css)',
+                               '@import url(http://doc.example.org/styles.css)',
+                       ],
+                       [
+                               '@import rule to URL',
+                               '@import url(//localhost/styles.css?query=val)',
+                               '@import url(//localhost/styles.css?query=val)',
+                       ],
+                       [
+                               'Background URL (double quotes)',
+                               'foo { background: url("//localhost/styles.css?quoted=double") }',
+                               'foo { background: url(//localhost/styles.css?quoted=double) }',
+                       ],
+                       [
+                               'Background URL (single quotes)',
+                               'foo { background: url(\'//localhost/styles.css?quoted=single\') }',
+                               'foo { background: url(//localhost/styles.css?quoted=single) }',
+                       ],
+                       [
+                               'Background URL (containing parentheses; T60473)',
+                               'foo { background: url("//localhost/styles.css?query=(parens)") }',
+                               'foo { background: url("//localhost/styles.css?query=(parens)") }',
+                       ],
+                       [
+                               'Background URL (double quoted, containing single quotes; T60473)',
+                               'foo { background: url("//localhost/styles.css?quote=\'") }',
+                               'foo { background: url("//localhost/styles.css?quote=\'") }',
+                       ],
+                       [
+                               'Background URL (single quoted, containing double quotes; T60473)',
+                               'foo { background: url(\'//localhost/styles.css?quote="\') }',
+                               'foo { background: url("//localhost/styles.css?quote=\"") }',
                        ],
                        [
                                'Simple case with comments before url',
index 9d12b10..cfc2d91 100644 (file)
@@ -10,7 +10,6 @@ class DnsSrvDiscovererTest extends PHPUnit_Framework_TestCase {
                $record = $discoverer->pickServer( $params );
 
                $this->assertEquals( $expected, $record );
-
        }
 
        public static function provideRecords() {
diff --git a/tests/phpunit/includes/libs/http/HttpAcceptNegotiatorTest.php b/tests/phpunit/includes/libs/http/HttpAcceptNegotiatorTest.php
new file mode 100644 (file)
index 0000000..4415bc9
--- /dev/null
@@ -0,0 +1,151 @@
+<?php
+
+use Wikimedia\Http\HttpAcceptNegotiator;
+
+/**
+ * @covers Wikimedia\Http\HttpAcceptNegotiator
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ */
+class HttpAcceptNegotiatorTest extends \PHPUnit_Framework_TestCase {
+
+       public function provideGetFirstSupportedValue() {
+               return [
+                       [ // #0: empty
+                               [], // supported
+                               [], // accepted
+                               null, // default
+                               null,  // expected
+                       ],
+                       [ // #1: simple
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xzy', 'text/bar' ], // accepted
+                               null, // default
+                               'text/BAR',  // expected
+                       ],
+                       [ // #2: default
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xzy', 'text/xoo' ], // accepted
+                               'X', // default
+                               'X',  // expected
+                       ],
+                       [ // #3: preference
+                               [ 'text/foo', 'text/bar', 'application/zuul' ], // supported
+                               [ 'text/xoo', 'text/BAR', 'text/foo' ], // accepted
+                               null, // default
+                               'text/bar',  // expected
+                       ],
+                       [ // #4: * wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xoo', '*' ], // accepted
+                               null, // default
+                               'text/foo',  // expected
+                       ],
+                       [ // #5: */* wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xoo', '*/*' ], // accepted
+                               null, // default
+                               'text/foo',  // expected
+                       ],
+                       [ // #6: text/* wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'application/*', 'text/foo' ], // accepted
+                               null, // default
+                               'application/zuul',  // expected
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideGetFirstSupportedValue
+        */
+       public function testGetFirstSupportedValue( $supported, $accepted, $default, $expected ) {
+               $negotiator = new HttpAcceptNegotiator( $supported );
+               $actual = $negotiator->getFirstSupportedValue( $accepted, $default );
+
+               $this->assertEquals( $expected, $actual );
+       }
+
+       public function provideGetBestSupportedKey() {
+               return [
+                       [ // #0: empty
+                               [], // supported
+                               [], // accepted
+                               null, // default
+                               null,  // expected
+                       ],
+                       [ // #1: simple
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xzy' => 1, 'text/bar' => 0.5 ], // accepted
+                               null, // default
+                               'text/BAR',  // expected
+                       ],
+                       [ // #2: default
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xzy' => 1, 'text/xoo' => 0.5 ], // accepted
+                               'X', // default
+                               'X',  // expected
+                       ],
+                       [ // #3: weighted
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/foo' => 0.3, 'text/BAR' => 0.8, 'application/zuul' => 0.5 ], // accepted
+                               null, // default
+                               'text/BAR',  // expected
+                       ],
+                       [ // #4: zero weight
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/foo' => 0, 'text/xoo' => 1 ], // accepted
+                               null, // default
+                               null,  // expected
+                       ],
+                       [ // #5: * wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xoo' => 0.5, '*' => 0.1 ], // accepted
+                               null, // default
+                               'text/foo',  // expected
+                       ],
+                       [ // #6: */* wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xoo' => 0.5, '*/*' => 0.1 ], // accepted
+                               null, // default
+                               'text/foo',  // expected
+                       ],
+                       [ // #7: text/* wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/foo' => 0.3, 'application/*' => 0.8 ], // accepted
+                               null, // default
+                               'application/zuul',  // expected
+                       ],
+                       [ // #8: Test specific format preferred over wildcard (T133314)
+                               [ 'application/rdf+xml', 'text/json', 'text/html' ], // supported
+                               [ '*/*' => 1, 'text/html' => 1 ], // accepted
+                               null, // default
+                               'text/html',  // expected
+                       ],
+                       [ // #9: Test specific format preferred over range (T133314)
+                               [ 'application/rdf+xml', 'text/json', 'text/html' ], // supported
+                               [ 'text/*' => 1, 'text/html' => 1 ], // accepted
+                               null, // default
+                               'text/html',  // expected
+                       ],
+                       [ // #10: Test range preferred over wildcard (T133314)
+                               [ 'application/rdf+xml', 'text/html' ], // supported
+                               [ '*/*' => 1, 'text/*' => 1 ], // accepted
+                               null, // default
+                               'text/html',  // expected
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideGetBestSupportedKey
+        */
+       public function testGetBestSupportedKey( $supported, $accepted, $default, $expected ) {
+               $negotiator = new HttpAcceptNegotiator( $supported );
+               $actual = $negotiator->getBestSupportedKey( $accepted, $default );
+
+               $this->assertEquals( $expected, $actual );
+       }
+
+}
diff --git a/tests/phpunit/includes/libs/http/HttpAcceptParserTest.php b/tests/phpunit/includes/libs/http/HttpAcceptParserTest.php
new file mode 100644 (file)
index 0000000..5bd9425
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+
+use Wikimedia\Http\HttpAcceptParser;
+
+/**
+ * @covers Wikimedia\Http\HttpAcceptParser
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ */
+class HttpAcceptParserTest extends \PHPUnit_Framework_TestCase {
+
+       public function provideParseWeights() {
+               return [
+                       [ // #0
+                               '',
+                               []
+                       ],
+                       [ // #1
+                               'Foo/Bar',
+                               [ 'foo/bar' => 1 ]
+                       ],
+                       [ // #2
+                               'Accept: text/plain',
+                               [ 'text/plain' => 1 ]
+                       ],
+                       [ // #3
+                               'Accept: application/vnd.php.serialized, application/rdf+xml',
+                               [ 'application/vnd.php.serialized' => 1, 'application/rdf+xml' => 1 ]
+                       ],
+                       [ // #4
+                               'foo; q=0.2, xoo; q=0,text/n3',
+                               [ 'text/n3' => 1, 'foo' => 0.2 ]
+                       ],
+                       [ // #5
+                               '*; q=0.2, */*; q=0.1,text/*',
+                               [ 'text/*' => 1, '*' => 0.2, '*/*' => 0.1 ]
+                       ],
+                       // TODO: nicely ignore additional type paramerters
+                       //[ // #6
+                       //      'Foo; q=0.2, Xoo; level=3, Bar; charset=xyz; q=0.4',
+                       //      [ 'xoo' => 1, 'bar' => 0.4, 'foo' => 0.1 ]
+                       //],
+               ];
+       }
+
+       /**
+        * @dataProvider provideParseWeights
+        */
+       public function testParseWeights( $header, $expected ) {
+               $parser = new HttpAcceptParser();
+               $actual = $parser->parseWeights( $header );
+
+               $this->assertEquals( $expected, $actual ); // shouldn't be sensitive to order
+       }
+
+}
index 787d9a8..cf891e2 100644 (file)
@@ -57,7 +57,7 @@ class MimeMagicTest extends PHPUnit_Framework_TestCase {
        function testOggRecognize() {
                $oggFile = __DIR__ . '/../../../data/media/say-test.ogg';
                $actualType = $this->mimeAnalyzer->getMediaType( $oggFile, 'application/ogg' );
-               $this->assertEquals( $actualType, MEDIATYPE_AUDIO );
+               $this->assertEquals( MEDIATYPE_AUDIO, $actualType );
        }
 
        /**
@@ -67,6 +67,6 @@ class MimeMagicTest extends PHPUnit_Framework_TestCase {
        function testOpusRecognize() {
                $oggFile = __DIR__ . '/../../../data/media/say-test.opus';
                $actualType = $this->mimeAnalyzer->getMediaType( $oggFile, 'application/ogg' );
-               $this->assertEquals( $actualType, MEDIATYPE_AUDIO );
+               $this->assertEquals( MEDIATYPE_AUDIO, $actualType );
        }
 }
index 38d63e3..775709f 100644 (file)
@@ -98,4 +98,39 @@ class MultiWriteBagOStuffTest extends MediaWikiTestCase {
                // Set in tier 2
                $this->assertEquals( $value, $this->cache2->get( $key ), 'Written to tier 2' );
        }
+
+       /**
+        * @covers MultiWriteBagOStuff::makeKey
+        */
+       public function testMakeKey() {
+               $cache1 = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'makeKey' ] )->getMock();
+               $cache1->expects( $this->once() )->method( 'makeKey' )
+                       ->willReturn( 'special' );
+
+               $cache2 = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'makeKey' ] )->getMock();
+               $cache2->expects( $this->never() )->method( 'makeKey' );
+
+               $cache = new MultiWriteBagOStuff( [ 'caches' => [ $cache1, $cache2 ] ] );
+               $this->assertSame( 'special', $cache->makeKey( 'a', 'b' ) );
+       }
+
+       /**
+        * @covers MultiWriteBagOStuff::makeGlobalKey
+        */
+       public function testMakeGlobalKey() {
+               $cache1 = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'makeGlobalKey' ] )->getMock();
+               $cache1->expects( $this->once() )->method( 'makeGlobalKey' )
+                       ->willReturn( 'special' );
+
+               $cache2 = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'makeGlobalKey' ] )->getMock();
+               $cache2->expects( $this->never() )->method( 'makeGlobalKey' );
+
+               $cache = new MultiWriteBagOStuff( [ 'caches' => [ $cache1, $cache2 ] ] );
+
+               $this->assertSame( 'special', $cache->makeGlobalKey( 'a', 'b' ) );
+       }
 }
index 18729f0..2b04366 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 class WANObjectCacheTest extends PHPUnit_Framework_TestCase  {
        /** @var WANObjectCache */
        private $cache;
@@ -308,10 +310,12 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase  {
                        $keyedIds, 30, $genFunc, [ 'lowTTL' => 0, 'lockTSE' => 5, ] + $extOpts );
                $this->assertEquals( $value, $v[$keyB], "Value returned" );
                $this->assertEquals( 1, $wasSet, "Value regenerated" );
+               $this->assertEquals( 0, $cache->getWarmupKeyMisses(), "Keys warmed yet in process cache" );
                $v = $cache->getMultiWithSetCallback(
                        $keyedIds, 30, $genFunc, [ 'lowTTL' => 0, 'lockTSE' => 5, ] + $extOpts );
                $this->assertEquals( $value, $v[$keyB], "Value returned" );
                $this->assertEquals( 1, $wasSet, "Value not regenerated" );
+               $this->assertEquals( 0, $cache->getWarmupKeyMisses(), "Keys warmed in process cache" );
 
                $priorTime = microtime( true );
                usleep( 1 );
@@ -392,6 +396,27 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase  {
 
                $cache->getMultiWithSetCallback( $keyedIds, 10, $genFunc );
                $this->assertEquals( count( $ids ), $calls, "Values cached" );
+
+               // Mock the BagOStuff to assure only one getMulti() call given process caching
+               $localBag = $this->getMockBuilder( 'HashBagOStuff' )
+                       ->setMethods( [ 'getMulti' ] )->getMock();
+               $localBag->expects( $this->exactly( 1 ) )->method( 'getMulti' )->willReturn( [
+                       WANObjectCache::VALUE_KEY_PREFIX . 'k1' => 'val-id1',
+                       WANObjectCache::VALUE_KEY_PREFIX . 'k2' => 'val-id2'
+               ] );
+               $wanCache = new WANObjectCache( [ 'cache' => $localBag, 'pool' => 'testcache-hash' ] );
+
+               // Warm the process cache
+               $keyedIds = new ArrayIterator( [ 'k1' => 'id1', 'k2' => 'id2' ] );
+               $this->assertEquals(
+                       [ 'k1' => 'val-id1', 'k2' => 'val-id2' ],
+                       $wanCache->getMultiWithSetCallback( $keyedIds, 10, $genFunc, [ 'pcTTL' => 5 ] )
+               );
+               // Use the process cache
+               $this->assertEquals(
+                       [ 'k1' => 'val-id1', 'k2' => 'val-id2' ],
+                       $wanCache->getMultiWithSetCallback( $keyedIds, 10, $genFunc, [ 'pcTTL' => 5 ] )
+               );
        }
 
        public static function getMultiWithSetCallback_provider() {
@@ -401,6 +426,153 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase  {
                ];
        }
 
+       /**
+        * @dataProvider getMultiWithUnionSetCallback_provider
+        * @covers WANObjectCache::getMultiWithUnionSetCallback()
+        * @covers WANObjectCache::makeMultiKeys()
+        * @param array $extOpts
+        * @param bool $versioned
+        */
+       public function testGetMultiWithUnionSetCallback( array $extOpts, $versioned ) {
+               $cache = $this->cache;
+
+               $keyA = wfRandomString();
+               $keyB = wfRandomString();
+               $keyC = wfRandomString();
+               $cKey1 = wfRandomString();
+               $cKey2 = wfRandomString();
+
+               $wasSet = 0;
+               $genFunc = function ( array $ids, array &$ttls, array &$setOpts ) use (
+                       &$wasSet, &$priorValue, &$priorAsOf
+               ) {
+                       $newValues = [];
+                       foreach ( $ids as $id ) {
+                               ++$wasSet;
+                               $newValues[$id] = "@$id$";
+                               $ttls[$id] = 20; // override with another value
+                       }
+
+                       return $newValues;
+               };
+
+               $wasSet = 0;
+               $keyedIds = new ArrayIterator( [ $keyA => 3353 ] );
+               $value = "@3353$";
+               $v = $cache->getMultiWithUnionSetCallback(
+                       $keyedIds, 30, $genFunc, $extOpts );
+               $this->assertEquals( $value, $v[$keyA], "Value returned" );
+               $this->assertEquals( 1, $wasSet, "Value regenerated" );
+
+               $curTTL = null;
+               $cache->get( $keyA, $curTTL );
+               $this->assertLessThanOrEqual( 20, $curTTL, 'Current TTL between 19-20 (overriden)' );
+               $this->assertGreaterThanOrEqual( 19, $curTTL, 'Current TTL between 19-20 (overriden)' );
+
+               $wasSet = 0;
+               $value = "@efef$";
+               $keyedIds = new ArrayIterator( [ $keyB => 'efef' ] );
+               $v = $cache->getMultiWithUnionSetCallback(
+                       $keyedIds, 30, $genFunc, [ 'lowTTL' => 0 ] + $extOpts );
+               $this->assertEquals( $value, $v[$keyB], "Value returned" );
+               $this->assertEquals( 1, $wasSet, "Value regenerated" );
+               $this->assertEquals( 0, $cache->getWarmupKeyMisses(), "Keys warmed yet in process cache" );
+               $v = $cache->getMultiWithUnionSetCallback(
+                       $keyedIds, 30, $genFunc, [ 'lowTTL' => 0 ] + $extOpts );
+               $this->assertEquals( $value, $v[$keyB], "Value returned" );
+               $this->assertEquals( 1, $wasSet, "Value not regenerated" );
+               $this->assertEquals( 0, $cache->getWarmupKeyMisses(), "Keys warmed in process cache" );
+
+               $priorTime = microtime( true );
+               usleep( 1 );
+               $wasSet = 0;
+               $keyedIds = new ArrayIterator( [ $keyB => 'efef' ] );
+               $v = $cache->getMultiWithUnionSetCallback(
+                       $keyedIds, 30, $genFunc, [ 'checkKeys' => [ $cKey1, $cKey2 ] ] + $extOpts
+               );
+               $this->assertEquals( $value, $v[$keyB], "Value returned" );
+               $this->assertEquals( 1, $wasSet, "Value regenerated due to check keys" );
+               $t1 = $cache->getCheckKeyTime( $cKey1 );
+               $this->assertGreaterThanOrEqual( $priorTime, $t1, 'Check keys generated on miss' );
+               $t2 = $cache->getCheckKeyTime( $cKey2 );
+               $this->assertGreaterThanOrEqual( $priorTime, $t2, 'Check keys generated on miss' );
+
+               $priorTime = microtime( true );
+               $value = "@43636$";
+               $wasSet = 0;
+               $keyedIds = new ArrayIterator( [ $keyC => 43636 ] );
+               $v = $cache->getMultiWithUnionSetCallback(
+                       $keyedIds, 30, $genFunc, [ 'checkKeys' => [ $cKey1, $cKey2 ] ] + $extOpts
+               );
+               $this->assertEquals( $value, $v[$keyC], "Value returned" );
+               $this->assertEquals( 1, $wasSet, "Value regenerated due to still-recent check keys" );
+               $t1 = $cache->getCheckKeyTime( $cKey1 );
+               $this->assertLessThanOrEqual( $priorTime, $t1, 'Check keys did not change again' );
+               $t2 = $cache->getCheckKeyTime( $cKey2 );
+               $this->assertLessThanOrEqual( $priorTime, $t2, 'Check keys did not change again' );
+
+               $curTTL = null;
+               $v = $cache->get( $keyC, $curTTL, [ $cKey1, $cKey2 ] );
+               if ( $versioned ) {
+                       $this->assertEquals( $value, $v[$cache::VFLD_DATA], "Value returned" );
+               } else {
+                       $this->assertEquals( $value, $v, "Value returned" );
+               }
+               $this->assertLessThanOrEqual( 0, $curTTL, "Value has current TTL < 0 due to check keys" );
+
+               $wasSet = 0;
+               $key = wfRandomString();
+               $keyedIds = new ArrayIterator( [ $key => 242424 ] );
+               $v = $cache->getMultiWithUnionSetCallback(
+                       $keyedIds, 30, $genFunc, [ 'pcTTL' => 5 ] + $extOpts );
+               $this->assertEquals( "@{$keyedIds[$key]}$", $v[$key], "Value returned" );
+               $cache->delete( $key );
+               $keyedIds = new ArrayIterator( [ $key => 242424 ] );
+               $v = $cache->getMultiWithUnionSetCallback(
+                       $keyedIds, 30, $genFunc, [ 'pcTTL' => 5 ] + $extOpts );
+               $this->assertEquals( "@{$keyedIds[$key]}$", $v[$key], "Value still returned after deleted" );
+               $this->assertEquals( 1, $wasSet, "Value process cached while deleted" );
+
+               $calls = 0;
+               $ids = [ 1, 2, 3, 4, 5, 6 ];
+               $keyFunc = function ( $id, WANObjectCache $wanCache ) {
+                       return $wanCache->makeKey( 'test', $id );
+               };
+               $keyedIds = $cache->makeMultiKeys( $ids, $keyFunc );
+               $genFunc = function ( array $ids, array &$ttls, array &$setOpts ) use ( &$calls ) {
+                       $newValues = [];
+                       foreach ( $ids as $id ) {
+                               ++$calls;
+                               $newValues[$id] = "val-{$id}";
+                       }
+
+                       return $newValues;
+               };
+               $values = $cache->getMultiWithUnionSetCallback( $keyedIds, 10, $genFunc );
+
+               $this->assertEquals(
+                       [ "val-1", "val-2", "val-3", "val-4", "val-5", "val-6" ],
+                       array_values( $values ),
+                       "Correct values in correct order"
+               );
+               $this->assertEquals(
+                       array_map( $keyFunc, $ids, array_fill( 0, count( $ids ), $this->cache ) ),
+                       array_keys( $values ),
+                       "Correct keys in correct order"
+               );
+               $this->assertEquals( count( $ids ), $calls );
+
+               $cache->getMultiWithUnionSetCallback( $keyedIds, 10, $genFunc );
+               $this->assertEquals( count( $ids ), $calls, "Values cached" );
+       }
+
+       public static function getMultiWithUnionSetCallback_provider() {
+               return [
+                       [ [], false ],
+                       [ [ 'version' => 1 ], true ]
+               ];
+       }
+
        /**
         * @covers WANObjectCache::getWithSetCallback()
         * @covers WANObjectCache::doGetWithSetCallback()
@@ -1019,4 +1191,40 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase  {
                        [ null, 86400, 800, .2, 800 ]
                ];
        }
+
+       /**
+        * @covers WANObjectCache::makeKey
+        */
+       public function testMakeKey() {
+               $backend = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'makeKey' ] )->getMock();
+               $backend->expects( $this->once() )->method( 'makeKey' )
+                       ->willReturn( 'special' );
+
+               $wanCache = new WANObjectCache( [
+                       'cache' => $backend,
+                       'pool' => 'testcache-hash',
+                       'relayer' => new EventRelayerNull( [] )
+               ] );
+
+               $this->assertSame( 'special', $wanCache->makeKey( 'a', 'b' ) );
+       }
+
+       /**
+        * @covers WANObjectCache::makeGlobalKey
+        */
+       public function testMakeGlobalKey() {
+               $backend = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'makeGlobalKey' ] )->getMock();
+               $backend->expects( $this->once() )->method( 'makeGlobalKey' )
+                       ->willReturn( 'special' );
+
+               $wanCache = new WANObjectCache( [
+                       'cache' => $backend,
+                       'pool' => 'testcache-hash',
+                       'relayer' => new EventRelayerNull( [] )
+               ] );
+
+               $this->assertSame( 'special', $wanCache->makeGlobalKey( 'a', 'b' ) );
+       }
 }
diff --git a/tests/phpunit/includes/linkeddata/PageDataRequestHandlerTest.php b/tests/phpunit/includes/linkeddata/PageDataRequestHandlerTest.php
new file mode 100644 (file)
index 0000000..666dcf2
--- /dev/null
@@ -0,0 +1,288 @@
+<?php
+
+/**
+ * @covers PageDataRequestHandler
+ *
+ * @group PageData
+ *
+ * @license GPL-2.0+
+ */
+class PageDataRequestHandlerTest extends \MediaWikiTestCase {
+
+       /**
+        * @var Title
+        */
+       private $interfaceTitle;
+
+       /**
+        * @var int
+        */
+       private $obLevel;
+
+       protected function setUp() {
+               parent::setUp();
+
+               $this->interfaceTitle = Title::newFromText( "Special:PageDataRequestHandlerTest" );
+
+               $this->obLevel = ob_get_level();
+       }
+
+       protected function tearDown() {
+               $obLevel = ob_get_level();
+
+               while ( ob_get_level() > $this->obLevel ) {
+                       ob_end_clean();
+               }
+
+               if ( $obLevel !== $this->obLevel ) {
+                       $this->fail( "Test changed output buffer level: was {$this->obLevel}" .
+                               "before test, but $obLevel after test."
+                       );
+               }
+
+               parent::tearDown();
+       }
+
+       /**
+        * @return PageDataRequestHandler
+        */
+       protected function newHandler() {
+               return new PageDataRequestHandler( 'json' );
+       }
+
+       /**
+        * @param array $params
+        * @param string[] $headers
+        *
+        * @return OutputPage
+        */
+       protected function makeOutputPage( array $params, array $headers ) {
+               // construct request
+               $request = new FauxRequest( $params );
+               $request->response()->header( 'Status: 200 OK', true, 200 ); // init/reset
+
+               foreach ( $headers as $name => $value ) {
+                       $request->setHeader( strtoupper( $name ), $value );
+               }
+
+               // construct Context and OutputPage
+               $context = new DerivativeContext( RequestContext::getMain() );
+               $context->setRequest( $request );
+
+               $output = new OutputPage( $context );
+               $output->setTitle( $this->interfaceTitle );
+               $context->setOutput( $output );
+
+               return $output;
+       }
+
+       public function handleRequestProvider() {
+
+               $cases = [];
+
+               $cases[] = [ '', [], [], '!!', 400 ];
+
+               $cases[] = [ '', [ 'target' => 'Helsinki' ], [], '!!', 303,  [ 'Location' => '!.+!' ] ];
+
+               $subpageCases = [];
+               foreach ( $cases as $c ) {
+                       $case = $c;
+                       $case[0] = 'main/';
+
+                       if ( isset( $case[1]['target'] ) ) {
+                               $case[0] .= $case[1]['target'];
+                               unset( $case[1]['target'] );
+                       }
+
+                       $subpageCases[] = $case;
+               }
+
+               $cases = array_merge( $cases, $subpageCases );
+
+               $cases[] = [
+                       '',
+                       [ 'target' => 'Helsinki' ],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki$!' ]
+               ];
+
+               $cases[] = [
+                       '',
+                       [
+                               'target' => 'Helsinki',
+                               'revision' => '4242',
+                       ],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki(\?|&)oldid=4242!' ]
+               ];
+
+               $cases[] = [
+                       '/Helsinki',
+                       [],
+                       [],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki&action=raw!' ]
+               ];
+
+               // #31: /Q5 with "Accept: text/foobar" triggers a 406
+               $cases[] = [
+                       'main/Helsinki',
+                       [],
+                       [ 'Accept' => 'text/foobar' ],
+                       '!!',
+                       406,
+                       [],
+               ];
+
+               $cases[] = [
+                       'main/Helsinki',
+                       [],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki$!' ]
+               ];
+
+               $cases[] = [
+                       '/Helsinki',
+                       [],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki$!' ]
+               ];
+
+               $cases[] = [
+                       'main/AC/DC',
+                       [],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!AC/DC$!' ]
+               ];
+
+               return $cases;
+       }
+
+       /**
+        * @dataProvider handleRequestProvider
+        *
+        * @param string $subpage The subpage to request (or '')
+        * @param array  $params  Request parameters
+        * @param array  $headers  Request headers
+        * @param string $expectedOutput Regex to match the output against.
+        * @param int $expectedStatusCode Expected HTTP status code.
+        * @param string[] $expectedHeaders Expected HTTP response headers.
+        */
+       public function testHandleRequest(
+               $subpage,
+               array $params,
+               array $headers,
+               $expectedOutput,
+               $expectedStatusCode = 200,
+               array $expectedHeaders = []
+       ) {
+               $output = $this->makeOutputPage( $params, $headers );
+               $request = $output->getRequest();
+
+               /* @var FauxResponse $response */
+               $response = $request->response();
+
+               // construct handler
+               $handler = $this->newHandler();
+
+               try {
+                       ob_start();
+                       $handler->handleRequest( $subpage, $request, $output );
+
+                       if ( $output->getRedirect() !== '' ) {
+                               // hack to apply redirect to web response
+                               $output->output();
+                       }
+
+                       $text = ob_get_contents();
+                       ob_end_clean();
+
+                       $this->assertEquals( $expectedStatusCode, $response->getStatusCode(), 'status code' );
+                       $this->assertRegExp( $expectedOutput, $text, 'output' );
+
+                       foreach ( $expectedHeaders as $name => $exp ) {
+                               $value = $response->getHeader( $name );
+                               $this->assertNotNull( $value, "header: $name" );
+                               $this->assertInternalType( 'string', $value, "header: $name" );
+                               $this->assertRegExp( $exp, $value, "header: $name" );
+                       }
+               } catch ( HttpError $e ) {
+                       ob_end_clean();
+                       $this->assertEquals( $expectedStatusCode, $e->getStatusCode(), 'status code' );
+                       $this->assertRegExp( $expectedOutput, $e->getHTML(), 'error output' );
+               }
+
+               // We always set "Access-Control-Allow-Origin: *"
+               $this->assertSame( '*', $response->getHeader( 'Access-Control-Allow-Origin' ) );
+       }
+
+       public function provideHttpContentNegotiation() {
+               $helsinki = Title::newFromText( 'Helsinki' );
+               return [
+                       'Accept Header of HTML' => [
+                               $helsinki,
+                               [ 'ACCEPT' => 'text/html' ], // headers
+                               'Helsinki'
+                       ],
+                       'Accept Header without weights' => [
+                               $helsinki,
+                               [ 'ACCEPT' => '*/*, text/html, text/x-wiki' ],
+                               'Helsinki&action=raw'
+                       ],
+                       'Accept Header with weights' => [
+                               $helsinki,
+                               [ 'ACCEPT' => 'text/*; q=0.5, text/json; q=0.7, application/rdf+xml; q=0.8' ],
+                               'Helsinki&action=raw'
+                       ],
+                       'Accept Header accepting evertyhing and HTML' => [
+                               $helsinki,
+                               [ 'ACCEPT' => 'text/html, */*' ],
+                               'Helsinki&action=raw'
+                       ],
+                       'No Accept Header' => [
+                               $helsinki,
+                               [],
+                               'Helsinki&action=raw'
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideHttpContentNegotiation
+        *
+        * @param Title $title
+        * @param array $headers Request headers
+        * @param string $expectedRedirectSuffix Expected suffix of the HTTP Location header.
+        *
+        * @throws HttpError
+        */
+       public function testHttpContentNegotiation(
+               Title $title,
+               array $headers,
+               $expectedRedirectSuffix
+       ) {
+               /* @var FauxResponse $response */
+               $output = $this->makeOutputPage( [], $headers );
+               $request = $output->getRequest();
+
+               $handler = $this->newHandler();
+               $handler->httpContentNegotiation( $request, $output, $title );
+
+               $this->assertStringEndsWith(
+                       $expectedRedirectSuffix,
+                       $output->getRedirect(),
+                       'redirect target'
+               );
+       }
+}
index c4b52f0..333fd88 100644 (file)
@@ -107,16 +107,10 @@ class NewUsersLogFormatterTest extends LogFormatterTestCase {
                                        'user' => 0,
                                        'user_text' => 'User',
                                        'namespace' => NS_USER,
-                                       'title' => 'UTSysop',
-                                       'params' => [
-                                               '4::userid' => 1,
-                                       ],
+                                       'title' => 'UTSysop'
                                ],
                                [
-                                       'text' => 'User account UTSysop was created by User',
-                                       'api' => [
-                                               'userid' => 1,
-                                       ],
+                                       'text' => 'User account UTSysop was created by User'
                                ],
                        ],
                ];
@@ -126,6 +120,10 @@ class NewUsersLogFormatterTest extends LogFormatterTestCase {
         * @dataProvider provideCreate2LogDatabaseRows
         */
        public function testCreate2LogDatabaseRows( $row, $extra ) {
+               // Make UTSysop user and use its user_id (sequence does not reset to 1 for postgres)
+               $user = static::getTestSysop()->getUser();
+               $row['params']['4::userid'] = $user->getId();
+               $extra['api']['userid'] = $user->getId();
                $this->doTestLogFormatter( $row, $extra );
        }
 
@@ -145,16 +143,10 @@ class NewUsersLogFormatterTest extends LogFormatterTestCase {
                                        'user' => 0,
                                        'user_text' => 'Sysop',
                                        'namespace' => NS_USER,
-                                       'title' => 'UTSysop',
-                                       'params' => [
-                                               '4::userid' => 1,
-                                       ],
+                                       'title' => 'UTSysop'
                                ],
                                [
-                                       'text' => 'User account UTSysop was created by Sysop and password was sent by email',
-                                       'api' => [
-                                               'userid' => 1,
-                                       ],
+                                       'text' => 'User account UTSysop was created by Sysop and password was sent by email'
                                ],
                        ],
                ];
@@ -164,6 +156,10 @@ class NewUsersLogFormatterTest extends LogFormatterTestCase {
         * @dataProvider provideByemailLogDatabaseRows
         */
        public function testByemailLogDatabaseRows( $row, $extra ) {
+               // Make UTSysop user and use its user_id (sequence does not reset to 1 for postgres)
+               $user = static::getTestSysop()->getUser();
+               $row['params']['4::userid'] = $user->getId();
+               $extra['api']['userid'] = $user->getId();
                $this->doTestLogFormatter( $row, $extra );
        }
 
index 47ed67b..3dd7e4c 100644 (file)
@@ -142,61 +142,4 @@ class ExifBitmapTest extends MediaWikiMediaTestCase {
                $res = $this->handler->convertMetadataVersion( $metadata, 1 );
                $this->assertEquals( $expected, $res );
        }
-
-       /**
-        * @dataProvider provideSwappingICCProfile
-        * @covers ExifBitmapHandler::swapICCProfile
-        */
-       public function testSwappingICCProfile(
-               $sourceFilename, $controlFilename, $newProfileFilename, $oldProfileName
-       ) {
-               global $wgExiftool;
-
-               if ( !$wgExiftool || !is_file( $wgExiftool ) ) {
-                       $this->markTestSkipped( "Exiftool not installed, cannot test ICC profile swapping" );
-               }
-
-               $this->setMwGlobals( 'wgUseTinyRGBForJPGThumbnails', true );
-
-               $sourceFilepath = $this->filePath . $sourceFilename;
-               $controlFilepath = $this->filePath . $controlFilename;
-               $profileFilepath = $this->filePath . $newProfileFilename;
-               $filepath = $this->getNewTempFile();
-
-               copy( $sourceFilepath, $filepath );
-
-               $file = $this->dataFile( $sourceFilename, 'image/jpeg' );
-               $this->handler->swapICCProfile( $filepath, $oldProfileName, $profileFilepath );
-
-               $this->assertEquals(
-                       sha1( file_get_contents( $filepath ) ),
-                       sha1( file_get_contents( $controlFilepath ) )
-               );
-       }
-
-       public function provideSwappingICCProfile() {
-               return [
-                       // File with sRGB should end up with TinyRGB
-                       [
-                               'srgb.jpg',
-                               'tinyrgb.jpg',
-                               'tinyrgb.icc',
-                               'IEC 61966-2.1 Default RGB colour space - sRGB'
-                       ],
-                       // File with TinyRGB should be left unchanged
-                       [
-                               'tinyrgb.jpg',
-                               'tinyrgb.jpg',
-                               'tinyrgb.icc',
-                               'IEC 61966-2.1 Default RGB colour space - sRGB'
-                       ],
-                       // File with no profile should be left unchanged
-                       [
-                               'test.jpg',
-                               'test.jpg',
-                               'tinyrgb.icc',
-                               'IEC 61966-2.1 Default RGB colour space - sRGB'
-                       ]
-               ];
-       }
 }
index b2f26ee..876e461 100644 (file)
@@ -40,7 +40,7 @@ class ExifTest extends MediaWikiTestCase {
                $data = $exif->getFilteredData();
 
                $expected = [
-                       'UserComment' => 'test⁔comment'
+                       'UserComment' => 'test⁔comment',
                ];
                $this->assertEquals( $expected, $data );
        }
index 05aed4a..abe0280 100644 (file)
@@ -51,4 +51,73 @@ class JpegTest extends MediaWikiMediaTestCase {
 
                $this->assertEquals( $res, $expected );
        }
+
+       /**
+        * @dataProvider provideSwappingICCProfile
+        * @covers JpegHandler::swapICCProfile
+        */
+       public function testSwappingICCProfile(
+               $sourceFilename, $controlFilename, $newProfileFilename, $oldProfileName
+       ) {
+               global $wgExiftool;
+
+               if ( !$wgExiftool || !is_file( $wgExiftool ) ) {
+                       $this->markTestSkipped( "Exiftool not installed, cannot test ICC profile swapping" );
+               }
+
+               $this->setMwGlobals( 'wgUseTinyRGBForJPGThumbnails', true );
+
+               $sourceFilepath = $this->filePath . $sourceFilename;
+               $controlFilepath = $this->filePath . $controlFilename;
+               $profileFilepath = $this->filePath . $newProfileFilename;
+               $filepath = $this->getNewTempFile();
+
+               copy( $sourceFilepath, $filepath );
+
+               $file = $this->dataFile( $sourceFilename, 'image/jpeg' );
+               $this->handler->swapICCProfile(
+                       $filepath,
+                       [ 'sRGB', '-' ],
+                       [ $oldProfileName ],
+                       $profileFilepath
+               );
+
+               $this->assertEquals(
+                       sha1( file_get_contents( $filepath ) ),
+                       sha1( file_get_contents( $controlFilepath ) )
+               );
+       }
+
+       public function provideSwappingICCProfile() {
+               return [
+                       // File with sRGB should end up with TinyRGB
+                       [
+                               'srgb.jpg',
+                               'tinyrgb.jpg',
+                               'tinyrgb.icc',
+                               'sRGB IEC61966-2.1'
+                       ],
+                       // File with TinyRGB should be left unchanged
+                       [
+                               'tinyrgb.jpg',
+                               'tinyrgb.jpg',
+                               'tinyrgb.icc',
+                               'sRGB IEC61966-2.1'
+                       ],
+                       // File without profile should end up with TinyRGB
+                       [
+                               'missingprofile.jpg',
+                               'tinyrgb.jpg',
+                               'tinyrgb.icc',
+                               'sRGB IEC61966-2.1'
+                       ],
+                       // Non-sRGB file should be left untouched
+                       [
+                               'adobergb.jpg',
+                               'adobergb.jpg',
+                               'tinyrgb.icc',
+                               'sRGB IEC61966-2.1'
+                       ]
+               ];
+       }
 }
index 8441d8f..b75335d 100644 (file)
@@ -69,9 +69,15 @@ class XCFHandlerTest extends MediaWikiMediaTestCase {
 
        public static function provideGetMetadata() {
                return [
-                       [ '80x60-2layers.xcf', 'a:1:{s:9:"colorType";s:16:"truecolour-alpha";}' ],
-                       [ '80x60-RGB.xcf', 'a:1:{s:9:"colorType";s:16:"truecolour-alpha";}' ],
-                       [ '80x60-Greyscale.xcf', 'a:1:{s:9:"colorType";s:15:"greyscale-alpha";}' ],
+                       [ '80x60-2layers.xcf',
+                               'a:1:{s:9:"colorType";s:16:"truecolour-alpha";}'
+                       ],
+                       [ '80x60-RGB.xcf',
+                               'a:1:{s:9:"colorType";s:16:"truecolour-alpha";}'
+                       ],
+                       [ '80x60-Greyscale.xcf',
+                               'a:1:{s:9:"colorType";s:15:"greyscale-alpha";}'
+                       ],
                ];
        }
 }
index 6b911bf..556a348 100644 (file)
@@ -549,7 +549,11 @@ class WikiPageTest extends MediaWikiLangTestCase {
 
        public static function provideGetParserOutput() {
                return [
-                       [ CONTENT_MODEL_WIKITEXT, "hello ''world''\n", "<p>hello <i>world</i></p>" ],
+                       [
+                               CONTENT_MODEL_WIKITEXT,
+                               "hello ''world''\n",
+                               "<div class=\"mw-parser-output\"><p>hello <i>world</i></p></div>"
+                       ],
                        // @todo more...?
                ];
        }
@@ -566,7 +570,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
                $text = $po->getText();
 
                $text = trim( preg_replace( '/<!--.*?-->/sm', '', $text ) ); # strip injected comments
-               $text = preg_replace( '!\s*(</p>)!sm', '\1', $text ); # don't let tidy confuse us
+               $text = preg_replace( '!\s*(</p>|</div>)!sm', '\1', $text ); # don't let tidy confuse us
 
                $this->assertEquals( $expectedHtml, $text );
 
diff --git a/tests/phpunit/includes/pager/RangeChronologicalPagerTest.php b/tests/phpunit/includes/pager/RangeChronologicalPagerTest.php
new file mode 100644 (file)
index 0000000..4721ce6
--- /dev/null
@@ -0,0 +1,99 @@
+<?php
+
+/**
+ * Test class for RangeChronologicalPagerTest logic.
+ *
+ * @group Pager
+ *
+ * @author Geoffrey Mon <geofbot@gmail.com>
+ */
+class RangeChronologicalPagerTest extends MediaWikiLangTestCase {
+
+       /**
+        * @covers       RangeChronologicalPager::getDateCond
+        * @dataProvider getDateCondProvider
+        */
+       public function testGetDateCond( $inputYear, $inputMonth, $inputDay, $expected ) {
+               $pager = $this->getMockForAbstractClass( 'RangeChronologicalPager' );
+               $this->assertEquals(
+                       $expected,
+                       wfTimestamp( TS_MW, $pager->getDateCond( $inputYear, $inputMonth, $inputDay ) )
+               );
+       }
+
+       /**
+        * Data provider in [ input year, input month, input day, expected timestamp output ] format
+        */
+       public function getDateCondProvider() {
+               return [
+                       [ 2016, 12, 5, '20161205235959' ],
+                       [ 2016, 12, 31, '20161231235959' ],
+                       [ 2016, 12, 1337, '20161231235959' ],
+                       [ 2016, 1337, 1337, '20161231235959' ],
+                       [ 2016, 1337, -1, '20161231235959' ],
+                       [ 2016, 12, 32, '20161231235959' ],
+                       [ 2016, 12, -1, '20161231235959' ],
+                       [ 2016, -1, -1, '20161231235959' ],
+               ];
+       }
+
+       /**
+        * @covers       RangeChronologicalPager::getDateRangeCond
+        * @dataProvider getDateRangeCondProvider
+        */
+       public function testGetDateRangeCond( $start, $end, $expected ) {
+               $pager = $this->getMockForAbstractClass( 'RangeChronologicalPager' );
+               $this->assertArrayEquals( $expected, $pager->getDateRangeCond( $start, $end ) );
+       }
+
+       /**
+        * Data provider in [ start, end, [ expected output has start condition, has end cond ] ] format
+        */
+       public function getDateRangeCondProvider() {
+               $db = wfGetDB( DB_MASTER );
+
+               return [
+                       [
+                               '20161201000000',
+                               '20161203000000',
+                               [
+                                       '>=' . $db->addQuotes( $db->timestamp( '20161201000000' ) ),
+                                       '<=' . $db->addQuotes( $db->timestamp( '20161203000000' ) ),
+                               ],
+                       ],
+                       [
+                               '',
+                               '20161203000000',
+                               [
+                                       '<=' . $db->addQuotes( $db->timestamp( '20161203000000' ) ),
+                               ],
+                       ],
+                       [
+                               '20161201000000',
+                               '',
+                               [
+                                       '>=' . $db->addQuotes( $db->timestamp( '20161201000000' ) ),
+                               ],
+                       ],
+                       [ '', '', [] ],
+               ];
+       }
+
+       /**
+        * @covers       RangeChronologicalPager::getDateRangeCond
+        * @dataProvider getDateRangeCondInvalidProvider
+        */
+       public function testGetDateRangeCondInvalid( $start, $end ) {
+               $pager = $this->getMockForAbstractClass( 'RangeChronologicalPager' );
+               $this->assertEquals( null, $pager->getDateRangeCond( $start, $end ) );
+       }
+
+       public function getDateRangeCondInvalidProvider() {
+               return [
+                       [ '-2016-12-01', '2017-12-01', ],
+                       [ '2016-12-01', '-2017-12-01', ],
+                       [ 'abcdefghij', 'klmnopqrstu', ],
+               ];
+       }
+
+}
diff --git a/tests/phpunit/includes/parser/ParserOptionsTest.php b/tests/phpunit/includes/parser/ParserOptionsTest.php
new file mode 100644 (file)
index 0000000..d606142
--- /dev/null
@@ -0,0 +1,238 @@
+<?php
+
+use Wikimedia\TestingAccessWrapper;
+use Wikimedia\ScopedCallback;
+
+class ParserOptionsTest extends MediaWikiTestCase {
+
+       /**
+        * @dataProvider provideIsSafeToCache
+        * @param bool $expect Expected value
+        * @param array $options Options to set
+        */
+       public function testIsSafeToCache( $expect, $options ) {
+               $popt = ParserOptions::newCanonical();
+               foreach ( $options as $name => $value ) {
+                       $popt->setOption( $name, $value );
+               }
+               $this->assertSame( $expect, $popt->isSafeToCache() );
+       }
+
+       public static function provideIsSafeToCache() {
+               return [
+                       'No overrides' => [ true, [] ],
+                       'In-key options are ok' => [ true, [
+                               'thumbsize' => 1e100,
+                               'wrapclass' => false,
+                       ] ],
+                       'Non-in-key options are not ok' => [ false, [
+                               'removeComments' => false,
+                       ] ],
+                       'Canonical override, not default (1)' => [ true, [
+                               'tidy' => true,
+                       ] ],
+                       'Canonical override, not default (2)' => [ false, [
+                               'tidy' => false,
+                       ] ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideOptionsHashPre30
+        * @param array $usedOptions Used options
+        * @param string $expect Expected value
+        * @param array $options Options to set
+        * @param array $globals Globals to set
+        */
+       public function testOptionsHashPre30( $usedOptions, $expect, $options, $globals = [] ) {
+               global $wgHooks;
+
+               $globals += [
+                       'wgRenderHashAppend' => '',
+                       'wgHooks' => [],
+               ];
+               $globals['wgHooks'] += [
+                       'PageRenderingHash' => [],
+               ] + $wgHooks;
+               $this->setMwGlobals( $globals );
+
+               $popt = new ParserOptions();
+               foreach ( $options as $setter => $value ) {
+                       $popt->$setter( $value );
+               }
+               $this->assertSame( $expect, $popt->optionsHashPre30( $usedOptions ) );
+       }
+
+       public static function provideOptionsHashPre30() {
+               $used = [ 'wrapclass', 'printable' ];
+
+               return [
+                       'Canonical options, nothing used' => [ [], '*!*!*!*!*!*', [] ],
+                       'Canonical options, used some options' => [ $used, '*!*!*!*!*!*', [] ],
+                       'Used some options, non-default values' => [
+                               $used,
+                               '*!*!*!*!*!*!printable=1!wrapclass=foobar',
+                               [
+                                       'setWrapOutputClass' => 'foobar',
+                                       'setIsPrintable' => true,
+                               ]
+                       ],
+                       'Canonical options, nothing used, but with hooks and $wgRenderHashAppend' => [
+                               [],
+                               '*!*!*!*!*!wgRenderHashAppend!*!onPageRenderingHash',
+                               [],
+                               [
+                                       'wgRenderHashAppend' => '!wgRenderHashAppend',
+                                       'wgHooks' => [ 'PageRenderingHash' => [ [ __CLASS__ . '::onPageRenderingHash' ] ] ],
+                               ]
+                       ],
+
+                       // Test weird historical behavior is still weird
+                       'Canonical options, editsection=true used' => [ [ 'editsection' ], '*!*!*!*!*', [
+                               'setEditSection' => true,
+                       ] ],
+                       'Canonical options, editsection=false used' => [ [ 'editsection' ], '*!*!*!*!*!edit=0', [
+                               'setEditSection' => false,
+                       ] ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideOptionsHash
+        * @param array $usedOptions Used options
+        * @param string $expect Expected value
+        * @param array $options Options to set
+        * @param array $globals Globals to set
+        */
+       public function testOptionsHash( $usedOptions, $expect, $options, $globals = [] ) {
+               global $wgHooks;
+
+               $globals += [
+                       'wgRenderHashAppend' => '',
+                       'wgHooks' => [],
+               ];
+               $globals['wgHooks'] += [
+                       'PageRenderingHash' => [],
+               ] + $wgHooks;
+               $this->setMwGlobals( $globals );
+
+               $popt = ParserOptions::newCanonical();
+               foreach ( $options as $name => $value ) {
+                       $popt->setOption( $name, $value );
+               }
+               $this->assertSame( $expect, $popt->optionsHash( $usedOptions ) );
+       }
+
+       public static function provideOptionsHash() {
+               $used = [ 'wrapclass', 'printable' ];
+
+               $classWrapper = TestingAccessWrapper::newFromClass( ParserOptions::class );
+               $classWrapper->getDefaults();
+               $allUsableOptions = array_diff(
+                       array_keys( $classWrapper->inCacheKey ),
+                       array_keys( $classWrapper->lazyOptions )
+               );
+
+               return [
+                       'Canonical options, nothing used' => [ [], 'canonical', [] ],
+                       'Canonical options, used some options' => [ $used, 'canonical', [] ],
+                       'Used some options, non-default values' => [
+                               $used,
+                               'printable=1!wrapclass=foobar',
+                               [
+                                       'wrapclass' => 'foobar',
+                                       'printable' => true,
+                               ]
+                       ],
+                       'Canonical options, used all non-lazy options' => [ $allUsableOptions, 'canonical', [] ],
+                       'Canonical options, nothing used, but with hooks and $wgRenderHashAppend' => [
+                               [],
+                               'canonical!wgRenderHashAppend!onPageRenderingHash',
+                               [],
+                               [
+                                       'wgRenderHashAppend' => '!wgRenderHashAppend',
+                                       'wgHooks' => [ 'PageRenderingHash' => [ [ __CLASS__ . '::onPageRenderingHash' ] ] ],
+                               ]
+                       ],
+               ];
+       }
+
+       public static function onPageRenderingHash( &$confstr ) {
+               $confstr .= '!onPageRenderingHash';
+       }
+
+       // Test weird historical behavior is still weird
+       public function testOptionsHashEditSection() {
+               global $wgHooks;
+
+               $this->setMwGlobals( [
+                       'wgRenderHashAppend' => '',
+                       'wgHooks' => [ 'PageRenderingHash' => [] ] + $wgHooks,
+               ] );
+
+               $popt = ParserOptions::newCanonical();
+               $popt->registerWatcher( function ( $name ) {
+                       $this->assertNotEquals( 'editsection', $name );
+               } );
+
+               $this->assertTrue( $popt->getEditSection() );
+               $this->assertSame( 'canonical', $popt->optionsHash( [] ) );
+               $this->assertSame( 'canonical', $popt->optionsHash( [ 'editsection' ] ) );
+
+               $popt->setEditSection( false );
+               $this->assertFalse( $popt->getEditSection() );
+               $this->assertSame( 'canonical', $popt->optionsHash( [] ) );
+               $this->assertSame( 'editsection=0', $popt->optionsHash( [ 'editsection' ] ) );
+       }
+
+       /**
+        * @expectedException InvalidArgumentException
+        * @expectedExceptionMessage Unknown parser option bogus
+        */
+       public function testGetInvalidOption() {
+               $popt = ParserOptions::newCanonical();
+               $popt->getOption( 'bogus' );
+       }
+
+       /**
+        * @expectedException InvalidArgumentException
+        * @expectedExceptionMessage Unknown parser option bogus
+        */
+       public function testSetInvalidOption() {
+               $popt = ParserOptions::newCanonical();
+               $popt->setOption( 'bogus', true );
+       }
+
+       public function testMatches() {
+               $classWrapper = TestingAccessWrapper::newFromClass( ParserOptions::class );
+               $oldDefaults = $classWrapper->defaults;
+               $oldLazy = $classWrapper->lazyOptions;
+               $reset = new ScopedCallback( function () use ( $classWrapper, $oldDefaults, $oldLazy ) {
+                       $classWrapper->defaults = $oldDefaults;
+                       $classWrapper->lazyOptions = $oldLazy;
+               } );
+
+               $popt1 = ParserOptions::newCanonical();
+               $popt2 = ParserOptions::newCanonical();
+               $this->assertTrue( $popt1->matches( $popt2 ) );
+
+               $popt1->enableLimitReport( true );
+               $popt2->enableLimitReport( false );
+               $this->assertTrue( $popt1->matches( $popt2 ) );
+
+               $popt2->setTidy( !$popt2->getTidy() );
+               $this->assertFalse( $popt1->matches( $popt2 ) );
+
+               $ctr = 0;
+               $classWrapper->defaults += [ __METHOD__ => null ];
+               $classWrapper->lazyOptions += [ __METHOD__ => function () use ( &$ctr ) {
+                       return ++$ctr;
+               } ];
+               $popt1 = ParserOptions::newCanonical();
+               $popt2 = ParserOptions::newCanonical();
+               $this->assertFalse( $popt1->matches( $popt2 ) );
+
+               ScopedCallback::consume( $reset );
+       }
+
+}
index 12936ee..06fe272 100644 (file)
@@ -43,18 +43,25 @@ class TagHookTest extends MediaWikiTestCase {
                return [ [ "foo<bar" ], [ "foo>bar" ], [ "foo\nbar" ], [ "foo\rbar" ] ];
        }
 
+       private function getParserOptions() {
+               global $wgContLang;
+               $popt = ParserOptions::newFromUserAndLang( new User, $wgContLang );
+               $popt->setWrapOutputClass( false );
+               return $popt;
+       }
+
        /**
         * @dataProvider provideValidNames
         */
        public function testTagHooks( $tag ) {
-               global $wgParserConf, $wgContLang;
+               global $wgParserConf;
                $parser = new Parser( $wgParserConf );
 
                $parser->setHook( $tag, [ $this, 'tagCallback' ] );
                $parserOutput = $parser->parse(
                        "Foo<$tag>Bar</$tag>Baz",
                        Title::newFromText( 'Test' ),
-                       ParserOptions::newFromUserAndLang( new User, $wgContLang )
+                       $this->getParserOptions()
                );
                $this->assertEquals( "<p>FooOneBaz\n</p>", $parserOutput->getText() );
 
@@ -66,14 +73,14 @@ class TagHookTest extends MediaWikiTestCase {
         * @expectedException MWException
         */
        public function testBadTagHooks( $tag ) {
-               global $wgParserConf, $wgContLang;
+               global $wgParserConf;
                $parser = new Parser( $wgParserConf );
 
                $parser->setHook( $tag, [ $this, 'tagCallback' ] );
                $parser->parse(
                        "Foo<$tag>Bar</$tag>Baz",
                        Title::newFromText( 'Test' ),
-                       ParserOptions::newFromUserAndLang( new User, $wgContLang )
+                       $this->getParserOptions()
                );
                $this->fail( 'Exception not thrown.' );
        }
@@ -82,14 +89,14 @@ class TagHookTest extends MediaWikiTestCase {
         * @dataProvider provideValidNames
         */
        public function testFunctionTagHooks( $tag ) {
-               global $wgParserConf, $wgContLang;
+               global $wgParserConf;
                $parser = new Parser( $wgParserConf );
 
                $parser->setFunctionTagHook( $tag, [ $this, 'functionTagCallback' ], 0 );
                $parserOutput = $parser->parse(
                        "Foo<$tag>Bar</$tag>Baz",
                        Title::newFromText( 'Test' ),
-                       ParserOptions::newFromUserAndLang( new User, $wgContLang )
+                       $this->getParserOptions()
                );
                $this->assertEquals( "<p>FooOneBaz\n</p>", $parserOutput->getText() );
 
@@ -101,7 +108,7 @@ class TagHookTest extends MediaWikiTestCase {
         * @expectedException MWException
         */
        public function testBadFunctionTagHooks( $tag ) {
-               global $wgParserConf, $wgContLang;
+               global $wgParserConf;
                $parser = new Parser( $wgParserConf );
 
                $parser->setFunctionTagHook(
@@ -112,7 +119,7 @@ class TagHookTest extends MediaWikiTestCase {
                $parser->parse(
                        "Foo<$tag>Bar</$tag>Baz",
                        Title::newFromText( 'Test' ),
-                       ParserOptions::newFromUserAndLang( new User, $wgContLang )
+                       $this->getParserOptions()
                );
                $this->fail( 'Exception not thrown.' );
        }
index 8f80362..9b8e01e 100644 (file)
@@ -2,6 +2,10 @@
 
 /**
  * @group large
+ * @covers BcryptPassword
+ * @covers ParameterizedPassword
+ * @covers Password
+ * @covers PasswordFactory
  */
 class BcryptPasswordTest extends PasswordTestCase {
        protected function getTypeConfigs() {
diff --git a/tests/phpunit/includes/password/EncryptedPasswordTest.php b/tests/phpunit/includes/password/EncryptedPasswordTest.php
new file mode 100644 (file)
index 0000000..0c85653
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+
+/**
+ * @covers EncryptedPassword
+ * @covers ParameterizedPassword
+ * @covers Password
+ * @codingStandardsIgnoreStart Generic.Files.LineLength
+ */
+class EncryptedPasswordTest extends PasswordTestCase {
+       protected function getTypeConfigs() {
+               return [
+                       'both' => [
+                               'class' => 'EncryptedPassword',
+                               'underlying' => 'pbkdf2',
+                               'secrets' => [
+                                       md5( 'secret1' ),
+                                       md5( 'secret2' ),
+                               ],
+                               'cipher' => 'aes-256-cbc',
+                       ],
+                       'secret1' => [
+                               'class' => 'EncryptedPassword',
+                               'underlying' => 'pbkdf2',
+                               'secrets' => [
+                                       md5( 'secret1' ),
+                               ],
+                               'cipher' => 'aes-256-cbc',
+                       ],
+                       'secret2' => [
+                               'class' => 'EncryptedPassword',
+                               'underlying' => 'pbkdf2',
+                               'secrets' => [
+                                       md5( 'secret2' ),
+                               ],
+                               'cipher' => 'aes-256-cbc',
+                       ],
+                       'pbkdf2' => [
+                               'class' => 'Pbkdf2Password',
+                               'algo' => 'sha256',
+                               'cost' => '10',
+                               'length' => '64',
+                       ],
+               ];
+       }
+
+       public static function providePasswordTests() {
+               return [
+                       // Encrypted with secret1
+                       [ true, ':both:aes-256-cbc:0:izBpxujqC1YbzpCB3qAzgg==:ZqHnitT1pL4YJqKqFES2KEevZYSy2LtlibW5+IMi4XKOGKGy6sE638BXyBbLQQsBtTSrt+JyzwOayKtwIfRbaQsBridx/O1JwBSai1TkGkOsYMBXnlu2Bu/EquCBj5QpjYh7p3Uq4rpiop1KQlin1BJMwnAa1PovhxjpxnYhlhkM4X5ALoGi3XM0bapN48vt', 'password' ],
+                       [ true, ':secret1:aes-256-cbc:0:izBpxujqC1YbzpCB3qAzgg==:ZqHnitT1pL4YJqKqFES2KEevZYSy2LtlibW5+IMi4XKOGKGy6sE638BXyBbLQQsBtTSrt+JyzwOayKtwIfRbaQsBridx/O1JwBSai1TkGkOsYMBXnlu2Bu/EquCBj5QpjYh7p3Uq4rpiop1KQlin1BJMwnAa1PovhxjpxnYhlhkM4X5ALoGi3XM0bapN48vt', 'password' ],
+                       [ false, ':secret1:aes-256-cbc:0:izBpxujqC1YbzpCB3qAzgg==:ZqHnitT1pL4YJqKqFES2KEevZYSy2LtlibW5+IMi4XKOGKGy6sE638BXyBbLQQsBtTSrt+JyzwOayKtwIfRbaQsBridx/O1JwBSai1TkGkOsYMBXnlu2Bu/EquCBj5QpjYh7p3Uq4rpiop1KQlin1BJMwnAa1PovhxjpxnYhlhkM4X5ALoGi3XM0bapN48vt', 'notpassword' ],
+
+                       // Encrypted with secret2
+                       [ true, ':both:aes-256-cbc:1:m1LCnQVIakfYBNlr9KEgQg==:5yPTctqrzsybdgaMEag18AZYbnL37pAtXVBqmWxkjXbnNmiDH+1bHoL8lsEVTH/sJntC82kNVgE7zeiD8xUVLYF2VUnvB5+sU+aysE45/zwsCu7a22TaischMAOWrsHZ/tIgS/TnZY2d+HNyxgsEeeYf/QoL+FhmqHquK02+4SRbA5lLuj9niYy1r5CoM9cQ', 'password' ],
+                       [ true, ':secret2:aes-256-cbc:0:m1LCnQVIakfYBNlr9KEgQg==:5yPTctqrzsybdgaMEag18AZYbnL37pAtXVBqmWxkjXbnNmiDH+1bHoL8lsEVTH/sJntC82kNVgE7zeiD8xUVLYF2VUnvB5+sU+aysE45/zwsCu7a22TaischMAOWrsHZ/tIgS/TnZY2d+HNyxgsEeeYf/QoL+FhmqHquK02+4SRbA5lLuj9niYy1r5CoM9cQ', 'password' ],
+               ];
+       }
+
+       /**
+        * Wrong encryption key selected
+        * @expectedException PasswordError
+        */
+       public function testDecryptionError() {
+               $hash = ':secret1:aes-256-cbc:0:m1LCnQVIakfYBNlr9KEgQg==:5yPTctqrzsybdgaMEag18AZYbnL37pAtXVBqmWxkjXbnNmiDH+1bHoL8lsEVTH/sJntC82kNVgE7zeiD8xUVLYF2VUnvB5+sU+aysE45/zwsCu7a22TaischMAOWrsHZ/tIgS/TnZY2d+HNyxgsEeeYf/QoL+FhmqHquK02+4SRbA5lLuj9niYy1r5CoM9cQ';
+               $password = $this->passwordFactory->newFromCiphertext( $hash );
+               $password->crypt( 'password' );
+       }
+
+       public function testUpdate() {
+               $hash = ':both:aes-256-cbc:0:izBpxujqC1YbzpCB3qAzgg==:ZqHnitT1pL4YJqKqFES2KEevZYSy2LtlibW5+IMi4XKOGKGy6sE638BXyBbLQQsBtTSrt+JyzwOayKtwIfRbaQsBridx/O1JwBSai1TkGkOsYMBXnlu2Bu/EquCBj5QpjYh7p3Uq4rpiop1KQlin1BJMwnAa1PovhxjpxnYhlhkM4X5ALoGi3XM0bapN48vt';
+               $fromHash = $this->passwordFactory->newFromCiphertext( $hash );
+               $fromPlaintext = $this->passwordFactory->newFromPlaintext( 'password', $fromHash );
+               $this->assertTrue( $fromHash->update() );
+
+               $serialized = $fromHash->toString();
+               $this->assertRegExp( '/^:both:aes-256-cbc:1:/', $serialized );
+               $fromNewHash = $this->passwordFactory->newFromCiphertext( $serialized );
+               $fromPlaintext = $this->passwordFactory->newFromPlaintext( 'password', $fromNewHash );
+               $this->assertTrue( $fromHash->equals( $fromPlaintext ) );
+       }
+}
index 773f033..cf96d06 100644 (file)
@@ -1,5 +1,9 @@
 <?php
 
+/**
+ * @covers LayeredParameterizedPassword
+ * @covers Password
+ */
 class LayeredParameterizedPasswordTest extends PasswordTestCase {
        protected function getTypeConfigs() {
                return [
@@ -26,6 +30,10 @@ class LayeredParameterizedPasswordTest extends PasswordTestCase {
                ];
        }
 
+       protected function getValidTypes() {
+               return [ 'testLargeLayeredFinal' ];
+       }
+
        public static function providePasswordTests() {
                // @codingStandardsIgnoreStart Generic.Files.LineLength.TooLong
                return [
diff --git a/tests/phpunit/includes/password/MWOldPasswordTest.php b/tests/phpunit/includes/password/MWOldPasswordTest.php
new file mode 100644 (file)
index 0000000..51e739c
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @covers MWOldPassword
+ * @covers ParameterizedPassword
+ * @covers Password
+ */
+class MWOldPasswordTest extends PasswordTestCase {
+       protected function getTypeConfigs() {
+               return [ 'A' => [
+                       'class' => 'MWOldPassword',
+               ] ];
+       }
+
+       public static function providePasswordTests() {
+               return [
+                       [ true, ':A:5f4dcc3b5aa765d61d8327deb882cf99', 'password' ],
+                       // Type-B password with incorrect type name is accepted
+                       [ true, ':A:salt:9842afc7cb949c440c51347ed809362f', 'password' ],
+                       [ false, ':A:d529e941509eb9e9b9cfaeae1fe7ca23', 'password' ],
+                       [ false, ':A:salt:d529e941509eb9e9b9cfaeae1fe7ca23', 'password' ],
+               ];
+       }
+}
diff --git a/tests/phpunit/includes/password/MWSaltedPasswordTest.php b/tests/phpunit/includes/password/MWSaltedPasswordTest.php
new file mode 100644 (file)
index 0000000..53a6ad1
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @covers MWSaltedPassword
+ * @covers ParameterizedPassword
+ * @covers Password
+ */
+class MWSaltedPasswordTest extends PasswordTestCase {
+       protected function getTypeConfigs() {
+               return [ 'B' => [
+                       'class' => 'MWSaltedPassword',
+               ] ];
+       }
+
+       public static function providePasswordTests() {
+               return [
+                       [ true, ':B:salt:9842afc7cb949c440c51347ed809362f', 'password' ],
+                       [ false, ':B:salt:d529e941509eb9e9b9cfaeae1fe7ca23', 'password' ],
+               ];
+       }
+}
diff --git a/tests/phpunit/includes/password/PasswordFactoryTest.php b/tests/phpunit/includes/password/PasswordFactoryTest.php
new file mode 100644 (file)
index 0000000..5d585f3
--- /dev/null
@@ -0,0 +1,110 @@
+<?php
+
+/**
+ * @covers PasswordFactory
+ */
+class PasswordFactoryTest extends MediaWikiTestCase {
+       public function testRegister() {
+               $pf = new PasswordFactory;
+               $pf->register( 'foo', [ 'class' => 'InvalidPassword' ] );
+               $this->assertArrayHasKey( 'foo', $pf->getTypes() );
+       }
+
+       public function testSetDefaultType() {
+               $pf = new PasswordFactory;
+               $pf->register( '1', [ 'class' => 'InvalidPassword' ] );
+               $pf->register( '2', [ 'class' => 'InvalidPassword' ] );
+               $pf->setDefaultType( '1' );
+               $this->assertSame( '1', $pf->getDefaultType() );
+               $pf->setDefaultType( '2' );
+               $this->assertSame( '2', $pf->getDefaultType() );
+       }
+
+       /**
+        * @expectedException Exception
+        */
+       public function testSetDefaultTypeError() {
+               $pf = new PasswordFactory;
+               $pf->setDefaultType( 'bogus' );
+       }
+
+       public function testInit() {
+               $config = new HashConfig( [
+                       'PasswordConfig' => [
+                               'foo' => [ 'class' => 'InvalidPassword' ],
+                       ],
+                       'PasswordDefault' => 'foo'
+               ] );
+               $pf = new PasswordFactory;
+               $pf->init( $config );
+               $this->assertSame( 'foo', $pf->getDefaultType() );
+               $this->assertArrayHasKey( 'foo', $pf->getTypes() );
+       }
+
+       public function testNewFromCiphertext() {
+               $pf = new PasswordFactory;
+               $pf->register( 'B', [ 'class' => 'MWSaltedPassword' ] );
+               $pw = $pf->newFromCiphertext( ':B:salt:d529e941509eb9e9b9cfaeae1fe7ca23' );
+               $this->assertInstanceOf( MWSaltedPassword::class, $pw );
+       }
+
+       public function provideNewFromCiphertextErrors() {
+               return [ [ 'blah' ], [ ':blah:' ] ];
+       }
+
+       /**
+        * @dataProvider provideNewFromCiphertextErrors
+        * @expectedException PasswordError
+        */
+       public function testNewFromCiphertextErrors( $hash ) {
+               $pf = new PasswordFactory;
+               $pf->register( 'B', [ 'class' => 'MWSaltedPassword' ] );
+               $pf->newFromCiphertext( $hash );
+       }
+
+       public function testNewFromType() {
+               $pf = new PasswordFactory;
+               $pf->register( 'B', [ 'class' => 'MWSaltedPassword' ] );
+               $pw = $pf->newFromType( 'B' );
+               $this->assertInstanceOf( MWSaltedPassword::class, $pw );
+       }
+
+       /**
+        * @expectedException PasswordError
+        */
+       public function testNewFromTypeError() {
+               $pf = new PasswordFactory;
+               $pf->register( 'B', [ 'class' => 'MWSaltedPassword' ] );
+               $pf->newFromType( 'bogus' );
+       }
+
+       public function testNewFromPlaintext() {
+               $pf = new PasswordFactory;
+               $pf->register( 'A', [ 'class' => 'MWOldPassword' ] );
+               $pf->register( 'B', [ 'class' => 'MWSaltedPassword' ] );
+               $pf->setDefaultType( 'A' );
+
+               $this->assertInstanceOf( 'InvalidPassword', $pf->newFromPlaintext( null ) );
+               $this->assertInstanceOf( 'MWOldPassword', $pf->newFromPlaintext( 'password' ) );
+               $this->assertInstanceOf( 'MWSaltedPassword',
+                       $pf->newFromPlaintext( 'password', $pf->newFromType( 'B' ) ) );
+       }
+
+       public function testNeedsUpdate() {
+               $pf = new PasswordFactory;
+               $pf->register( 'A', [ 'class' => 'MWOldPassword' ] );
+               $pf->register( 'B', [ 'class' => 'MWSaltedPassword' ] );
+               $pf->setDefaultType( 'A' );
+
+               $this->assertFalse( $pf->needsUpdate( $pf->newFromType( 'A' ) ) );
+               $this->assertTrue( $pf->needsUpdate( $pf->newFromType( 'B' ) ) );
+       }
+
+       public function testGenerateRandomPasswordString() {
+               $this->assertSame( 13, strlen( PasswordFactory::generateRandomPasswordString( 13 ) ) );
+       }
+
+       public function testNewInvalidPassword() {
+               $this->assertInstanceOf( 'InvalidPassword', PasswordFactory::newInvalidPassword() );
+       }
+}
index 6357510..7dfb3cf 100644 (file)
@@ -133,4 +133,27 @@ class PasswordPolicyChecksTest extends MediaWikiTestCase {
                $this->assertTrue( $statusLong->isOK(), 'Password matches blacklist, not fatal' );
        }
 
+       public static function providePopularBlacklist() {
+               return [
+                       [ false, 'sitename' ],
+                       [ false, 'password' ],
+                       [ false, '12345' ],
+                       [ true, 'hqY98gCZ6qM8s8' ],
+               ];
+       }
+
+       /**
+        * @covers PasswordPolicyChecks::checkPopularPasswordBlacklist
+        * @dataProvider providePopularBlacklist
+        */
+       public function testCheckPopularPasswordBlacklist( $expected, $password ) {
+               global $IP;
+               $this->setMwGlobals( [
+                       'wgSitename' => 'sitename',
+                       'wgPopularPasswordFile' => "$IP/serialized/commonpasswords.cdb"
+               ] );
+               $user = User::newFromName( 'username' );
+               $status = PasswordPolicyChecks::checkPopularPasswordBlacklist( PHP_INT_MAX, $user, $password );
+               $this->assertSame( $expected, $status->isGood() );
+       }
 }
index e8a4d5c..d0177d0 100644 (file)
  * @file
  */
 
+/**
+ * @covers InvalidPassword
+ */
 class PasswordTest extends MediaWikiTestCase {
-       /**
-        * @covers InvalidPassword::equals
-        */
        public function testInvalidUnequalInvalid() {
                $passwordFactory = new PasswordFactory();
                $invalid1 = $passwordFactory->newFromCiphertext( null );
index 9a142cb..80b9838 100644 (file)
@@ -78,8 +78,7 @@ abstract class PasswordTestCase extends MediaWikiTestCase {
 
        /**
         * @dataProvider providePasswordTests
-        * @covers InvalidPassword::equals
-        * @covers InvalidPassword::toString
+        * @covers InvalidPassword
         */
        public function testInvalidUnequalNormal( $shouldMatch, $hash, $password ) {
                $invalid = $this->passwordFactory->newFromCiphertext( null );
@@ -88,4 +87,26 @@ abstract class PasswordTestCase extends MediaWikiTestCase {
                $this->assertFalse( $invalid->equals( $normal ) );
                $this->assertFalse( $normal->equals( $invalid ) );
        }
+
+       protected function getValidTypes() {
+               return array_keys( $this->getTypeConfigs() );
+       }
+
+       public function provideTypes( $type ) {
+               $params = [];
+               foreach ( $this->getValidTypes() as $type ) {
+                       $params[] = [ $type ];
+               }
+               return $params;
+       }
+
+       /**
+        * @dataProvider provideTypes
+        */
+       public function testCrypt( $type ) {
+               $fromType = $this->passwordFactory->newFromType( $type );
+               $fromType->crypt( 'password' );
+               $fromPlaintext = $this->passwordFactory->newFromPlaintext( 'password', $fromType );
+               $this->assertTrue( $fromType->equals( $fromPlaintext ) );
+       }
 }
diff --git a/tests/phpunit/includes/password/Pbkdf2PasswordFallbackTest.php b/tests/phpunit/includes/password/Pbkdf2PasswordFallbackTest.php
new file mode 100644 (file)
index 0000000..605d190
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+
+
+/**
+ * @group large
+ * @covers Pbkdf2Password
+ */
+class Pbkdf2PasswordFallbackTest extends PasswordTestCase {
+       protected function getTypeConfigs() {
+               return [
+                       'pbkdf2' => [
+                               'class' => 'Pbkdf2Password',
+                               'algo' => 'sha256',
+                               'cost' => '10000',
+                               'length' => '128',
+                               'use-hash-extension' => false,
+                       ],
+               ];
+       }
+
+       public static function providePasswordTests() {
+               return [
+                       [ true, ":pbkdf2:sha1:1:20:c2FsdA==:DGDID5YfDnHzqbUkr2ASBi/gN6Y=", 'password' ],
+                       [ true, ":pbkdf2:sha1:2:20:c2FsdA==:6mwBTcctb4zNHtkqzh1B8NjeiVc=", 'password' ],
+                       [ true, ":pbkdf2:sha1:4096:20:c2FsdA==:SwB5AbdlSJq+rUnZJvch0GWkKcE=", 'password' ],
+                       [ true, ":pbkdf2:sha1:4096:16:c2EAbHQ=:Vvpqp1VICZ3MN9fwNCXgww==", "pass\x00word" ],
+               ];
+       }
+}
index 07cdab0..ff069cd 100644 (file)
@@ -2,6 +2,10 @@
 
 /**
  * @group large
+ * @covers Pbkdf2Password
+ * @covers Password
+ * @covers ParameterizedPassword
+ * @requires function hash_pbkdf2
  */
 class Pbkdf2PasswordTest extends PasswordTestCase {
        protected function getTypeConfigs() {
@@ -10,6 +14,7 @@ class Pbkdf2PasswordTest extends PasswordTestCase {
                        'algo' => 'sha256',
                        'cost' => '10000',
                        'length' => '128',
+                       'use-hash-extension' => true,
                ] ];
        }
 
index 8a69b5c..3bd82b4 100644 (file)
@@ -22,6 +22,7 @@
 
 /**
  * @group Database
+ * @covers UserPasswordPolicy
  */
 class UserPasswordPolicyTest extends MediaWikiTestCase {
 
@@ -56,9 +57,6 @@ class UserPasswordPolicyTest extends MediaWikiTestCase {
                return new UserPasswordPolicy( $this->policies, $this->checks );
        }
 
-       /**
-        * @covers UserPasswordPolicy::getPoliciesForUser
-        */
        public function testGetPoliciesForUser() {
 
                $upp = $this->getUserPasswordPolicy();
@@ -79,9 +77,6 @@ class UserPasswordPolicyTest extends MediaWikiTestCase {
                );
        }
 
-       /**
-        * @covers UserPasswordPolicy::getPoliciesForGroups
-        */
        public function testGetPoliciesForGroups() {
                $effective = UserPasswordPolicy::getPoliciesForGroups(
                        $this->policies,
@@ -103,7 +98,6 @@ class UserPasswordPolicyTest extends MediaWikiTestCase {
 
        /**
         * @dataProvider provideCheckUserPassword
-        * @covers UserPasswordPolicy::checkUserPassword
         */
        public function testCheckUserPassword( $username, $groups, $password, $valid, $ok, $msg ) {
 
@@ -183,7 +177,6 @@ class UserPasswordPolicyTest extends MediaWikiTestCase {
 
        /**
         * @dataProvider provideMaxOfPolicies
-        * @covers UserPasswordPolicy::maxOfPolicies
         */
        public function testMaxOfPolicies( $p1, $p2, $max, $msg ) {
                $this->assertArrayEquals(
index 71f760d..7b56def 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 class ExtensionProcessorTest extends MediaWikiTestCase {
 
        private $dir, $dirname;
@@ -38,6 +40,58 @@ class ExtensionProcessorTest extends MediaWikiTestCase {
                $this->assertArrayNotHasKey( 'AutoloadClasses', $attributes );
        }
 
+       /**
+        * @covers ExtensionProcessor::extractInfo
+        */
+       public function testExtractInfo_namespaces() {
+               // Test that namespace IDs can be overwritten
+               if ( !defined( 'MW_EXTENSION_PROCESSOR_TEST_EXTRACT_INFO_X' ) ) {
+                       define( 'MW_EXTENSION_PROCESSOR_TEST_EXTRACT_INFO_X', 123456 );
+               }
+
+               $processor = new ExtensionProcessor();
+               $processor->extractInfo( $this->dir, self::$default + [
+                       'namespaces' => [
+                               [
+                                       'id' => 332200,
+                                       'constant' => 'MW_EXTENSION_PROCESSOR_TEST_EXTRACT_INFO_A',
+                                       'name' => 'Test_A',
+                                       'content' => 'TestModel'
+                               ],
+                               [ // Test_X will use ID 123456 not 334400
+                                       'id' => 334400,
+                                       'constant' => 'MW_EXTENSION_PROCESSOR_TEST_EXTRACT_INFO_X',
+                                       'name' => 'Test_X',
+                                       'content' => 'TestModel'
+                               ],
+                       ]
+               ], 1 );
+
+               $extracted = $processor->getExtractedInfo();
+
+               $this->assertArrayHasKey(
+                       'MW_EXTENSION_PROCESSOR_TEST_EXTRACT_INFO_A',
+                       $extracted['defines']
+               );
+               $this->assertArrayNotHasKey(
+                       'MW_EXTENSION_PROCESSOR_TEST_EXTRACT_INFO_X',
+                       $extracted['defines']
+               );
+
+               $this->assertSame(
+                       $extracted['defines']['MW_EXTENSION_PROCESSOR_TEST_EXTRACT_INFO_A'],
+                       332200
+               );
+
+               $this->assertArrayHasKey( 'ExtensionNamespaces', $extracted['attributes'] );
+               $this->assertArrayHasKey( 123456, $extracted['attributes']['ExtensionNamespaces'] );
+               $this->assertArrayHasKey( 332200, $extracted['attributes']['ExtensionNamespaces'] );
+               $this->assertArrayNotHasKey( 334400, $extracted['attributes']['ExtensionNamespaces'] );
+
+               $this->assertSame( 'Test_X', $extracted['attributes']['ExtensionNamespaces'][123456] );
+               $this->assertSame( 'Test_A', $extracted['attributes']['ExtensionNamespaces'][332200] );
+       }
+
        public static function provideRegisterHooks() {
                $merge = [ ExtensionRegistry::MERGE_STRATEGY => 'array_merge_recursive' ];
                // Format:
@@ -445,6 +499,72 @@ class ExtensionProcessorTest extends MediaWikiTestCase {
                ];
        }
 
+       /**
+        * Attributes under manifest_version 2
+        *
+        * @covers ExtensionProcessor::extractAttributes
+        * @covers ExtensionProcessor::getExtractedInfo
+        */
+       public function testExtractAttributes() {
+               $processor = new ExtensionProcessor();
+               // Load FooBar extension
+               $processor->extractInfo( $this->dir, [ 'name' => 'FooBar' ], 2 );
+               $processor->extractInfo(
+                       $this->dir,
+                       [
+                               'name' => 'Baz',
+                               'attributes' => [
+                                       // Loaded
+                                       'FooBar' => [
+                                               'Plugins' => [
+                                                       'ext.baz.foobar',
+                                               ],
+                                       ],
+                                       // Not loaded
+                                       'FizzBuzz' => [
+                                               'MorePlugins' => [
+                                                       'ext.baz.fizzbuzz',
+                                               ],
+                                       ],
+                               ],
+                       ],
+                       2
+               );
+
+               $info = $processor->getExtractedInfo();
+               $this->assertArrayHasKey( 'FooBarPlugins', $info['attributes'] );
+               $this->assertSame( [ 'ext.baz.foobar' ], $info['attributes']['FooBarPlugins'] );
+               $this->assertArrayNotHasKey( 'FizzBuzzMorePlugins', $info['attributes'] );
+       }
+
+       /**
+        * Attributes under manifest_version 1
+        *
+        * @covers ExtensionProcessor::extractInfo
+        */
+       public function testAttributes1() {
+               $processor = new ExtensionProcessor();
+               $processor->extractInfo(
+                       $this->dir,
+                       [
+                               'name' => 'FooBar',
+                               'FooBarPlugins' => [
+                                       'ext.baz.foobar',
+                               ],
+                               'FizzBuzzMorePlugins' => [
+                                       'ext.baz.fizzbuzz',
+                               ],
+                       ],
+                       1
+               );
+
+               $info = $processor->getExtractedInfo();
+               $this->assertArrayHasKey( 'FooBarPlugins', $info['attributes'] );
+               $this->assertSame( [ 'ext.baz.foobar' ], $info['attributes']['FooBarPlugins'] );
+               $this->assertArrayHasKey( 'FizzBuzzMorePlugins', $info['attributes'] );
+               $this->assertSame( [ 'ext.baz.fizzbuzz' ], $info['attributes']['FizzBuzzMorePlugins'] );
+       }
+
        public function testGlobalSettingsDocumentedInSchema() {
                global $IP;
                $globalSettings = TestingAccessWrapper::newFromClass(
index 3877288..f53cd06 100644 (file)
@@ -1,37 +1,39 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @group ResourceLoader
  */
 class ResourceLoaderImageModuleTest extends ResourceLoaderTestCase {
 
        public static $commonImageData = [
-               'add' => 'add.gif',
-               'remove' => [
-                       'file' => 'remove.svg',
+               'abc' => 'abc.gif',
+               'def' => [
+                       'file' => 'def.svg',
                        'variants' => [ 'destructive' ],
                ],
-               'next' => [
+               'ghi' => [
                        'file' => [
-                               'ltr' => 'next.svg',
-                               'rtl' => 'prev.svg'
+                               'ltr' => 'ghi.svg',
+                               'rtl' => 'jkl.svg'
                        ],
                ],
-               'help' => [
+               'mno' => [
                        'file' => [
-                               'ltr' => 'help-ltr.svg',
-                               'rtl' => 'help-rtl.svg',
+                               'ltr' => 'mno-ltr.svg',
+                               'rtl' => 'mno-rtl.svg',
                                'lang' => [
-                                       'he' => 'help-ltr.svg',
+                                       'he' => 'mno-ltr.svg',
                                ]
                        ],
                ],
-               'bold' => [
+               'pqr' => [
                        'file' => [
-                               'default' => 'bold-a.svg',
+                               'default' => 'pqr-a.svg',
                                'lang' => [
-                                       'en' => 'bold-b.svg',
-                                       'ar,de' => 'bold-f.svg',
+                                       'en' => 'pqr-b.svg',
+                                       'ar,de' => 'pqr-f.svg',
                                ]
                        ],
                ]
@@ -62,37 +64,37 @@ class ResourceLoaderImageModuleTest extends ResourceLoaderTestCase {
                                        'variants' => self::$commonImageVariants,
                                        'images' => self::$commonImageData,
                                ],
-                               '.oo-ui-icon-add {
+                               '.oo-ui-icon-abc {
        ...
 }
-.oo-ui-icon-add-invert {
+.oo-ui-icon-abc-invert {
        ...
 }
-.oo-ui-icon-remove {
+.oo-ui-icon-def {
        ...
 }
-.oo-ui-icon-remove-invert {
+.oo-ui-icon-def-invert {
        ...
 }
-.oo-ui-icon-remove-destructive {
+.oo-ui-icon-def-destructive {
        ...
 }
-.oo-ui-icon-next {
+.oo-ui-icon-ghi {
        ...
 }
-.oo-ui-icon-next-invert {
+.oo-ui-icon-ghi-invert {
        ...
 }
-.oo-ui-icon-help {
+.oo-ui-icon-mno {
        ...
 }
-.oo-ui-icon-help-invert {
+.oo-ui-icon-mno-invert {
        ...
 }
-.oo-ui-icon-bold {
+.oo-ui-icon-pqr {
        ...
 }
-.oo-ui-icon-bold-invert {
+.oo-ui-icon-pqr-invert {
        ...
 }',
                        ],
@@ -105,37 +107,37 @@ class ResourceLoaderImageModuleTest extends ResourceLoaderTestCase {
                                        'variants' => self::$commonImageVariants,
                                        'images' => self::$commonImageData,
                                ],
-                               '.mw-ui-icon-add:after, .mw-ui-icon-add:before {
+                               '.mw-ui-icon-abc:after, .mw-ui-icon-abc:before {
        ...
 }
-.mw-ui-icon-add-invert:after, .mw-ui-icon-add-invert:before {
+.mw-ui-icon-abc-invert:after, .mw-ui-icon-abc-invert:before {
        ...
 }
-.mw-ui-icon-remove:after, .mw-ui-icon-remove:before {
+.mw-ui-icon-def:after, .mw-ui-icon-def:before {
        ...
 }
-.mw-ui-icon-remove-invert:after, .mw-ui-icon-remove-invert:before {
+.mw-ui-icon-def-invert:after, .mw-ui-icon-def-invert:before {
        ...
 }
-.mw-ui-icon-remove-destructive:after, .mw-ui-icon-remove-destructive:before {
+.mw-ui-icon-def-destructive:after, .mw-ui-icon-def-destructive:before {
        ...
 }
-.mw-ui-icon-next:after, .mw-ui-icon-next:before {
+.mw-ui-icon-ghi:after, .mw-ui-icon-ghi:before {
        ...
 }
-.mw-ui-icon-next-invert:after, .mw-ui-icon-next-invert:before {
+.mw-ui-icon-ghi-invert:after, .mw-ui-icon-ghi-invert:before {
        ...
 }
-.mw-ui-icon-help:after, .mw-ui-icon-help:before {
+.mw-ui-icon-mno:after, .mw-ui-icon-mno:before {
        ...
 }
-.mw-ui-icon-help-invert:after, .mw-ui-icon-help-invert:before {
+.mw-ui-icon-mno-invert:after, .mw-ui-icon-mno-invert:before {
        ...
 }
-.mw-ui-icon-bold:after, .mw-ui-icon-bold:before {
+.mw-ui-icon-pqr:after, .mw-ui-icon-pqr:before {
        ...
 }
-.mw-ui-icon-bold-invert:after, .mw-ui-icon-bold-invert:before {
+.mw-ui-icon-pqr-invert:after, .mw-ui-icon-pqr-invert:before {
        ...
 }',
                        ],
index 84b56d4..aea2776 100644 (file)
@@ -29,20 +29,20 @@ class ResourceLoaderImageTest extends ResourceLoaderTestCase {
 
        public static function provideGetPath() {
                return [
-                       [ 'add', 'en', 'add.gif' ],
-                       [ 'add', 'he', 'add.gif' ],
-                       [ 'remove', 'en', 'remove.svg' ],
-                       [ 'remove', 'he', 'remove.svg' ],
-                       [ 'next', 'en', 'next.svg' ],
-                       [ 'next', 'he', 'prev.svg' ],
-                       [ 'help', 'en', 'help-ltr.svg' ],
-                       [ 'help', 'ar', 'help-rtl.svg' ],
-                       [ 'help', 'he', 'help-ltr.svg' ],
-                       [ 'bold', 'en', 'bold-b.svg' ],
-                       [ 'bold', 'de', 'bold-f.svg' ],
-                       [ 'bold', 'ar', 'bold-f.svg' ],
-                       [ 'bold', 'fr', 'bold-a.svg' ],
-                       [ 'bold', 'he', 'bold-a.svg' ],
+                       [ 'abc', 'en', 'abc.gif' ],
+                       [ 'abc', 'he', 'abc.gif' ],
+                       [ 'def', 'en', 'def.svg' ],
+                       [ 'def', 'he', 'def.svg' ],
+                       [ 'ghi', 'en', 'ghi.svg' ],
+                       [ 'ghi', 'he', 'jkl.svg' ],
+                       [ 'mno', 'en', 'mno-ltr.svg' ],
+                       [ 'mno', 'ar', 'mno-rtl.svg' ],
+                       [ 'mno', 'he', 'mno-ltr.svg' ],
+                       [ 'pqr', 'en', 'pqr-b.svg' ],
+                       [ 'pqr', 'de', 'pqr-f.svg' ],
+                       [ 'pqr', 'ar', 'pqr-f.svg' ],
+                       [ 'pqr', 'fr', 'pqr-a.svg' ],
+                       [ 'pqr', 'he', 'pqr-a.svg' ],
                ];
        }
 
@@ -74,11 +74,11 @@ class ResourceLoaderImageTest extends ResourceLoaderTestCase {
         * @covers ResourceLoaderImage::getMimeType
         */
        public function testGetExtension() {
-               $image = $this->getTestImage( 'remove' );
+               $image = $this->getTestImage( 'def' );
                $this->assertEquals( $image->getExtension(), 'svg' );
                $this->assertEquals( $image->getExtension( 'original' ), 'svg' );
                $this->assertEquals( $image->getExtension( 'rasterized' ), 'png' );
-               $image = $this->getTestImage( 'add' );
+               $image = $this->getTestImage( 'abc' );
                $this->assertEquals( $image->getExtension(), 'gif' );
                $this->assertEquals( $image->getExtension( 'original' ), 'gif' );
                $this->assertEquals( $image->getExtension( 'rasterized' ), 'gif' );
@@ -92,9 +92,9 @@ class ResourceLoaderImageTest extends ResourceLoaderTestCase {
        public function testGetImageData() {
                $context = $this->getResourceLoaderContext();
 
-               $image = $this->getTestImage( 'remove' );
-               $data = file_get_contents( $this->imagesPath . '/remove.svg' );
-               $dataConstructive = file_get_contents( $this->imagesPath . '/remove_variantize.svg' );
+               $image = $this->getTestImage( 'def' );
+               $data = file_get_contents( $this->imagesPath . '/def.svg' );
+               $dataConstructive = file_get_contents( $this->imagesPath . '/def_variantize.svg' );
                $this->assertEquals( $image->getImageData( $context, null, 'original' ), $data );
                $this->assertEquals(
                        $image->getImageData( $context, 'destructive', 'original' ),
@@ -103,8 +103,8 @@ class ResourceLoaderImageTest extends ResourceLoaderTestCase {
                // Stub, since we don't know if we even have a SVG handler, much less what exactly it'll output
                $this->assertEquals( $image->getImageData( $context, null, 'rasterized' ), 'RASTERIZESTUB' );
 
-               $image = $this->getTestImage( 'add' );
-               $data = file_get_contents( $this->imagesPath . '/add.gif' );
+               $image = $this->getTestImage( 'abc' );
+               $data = file_get_contents( $this->imagesPath . '/abc.gif' );
                $this->assertEquals( $image->getImageData( $context, null, 'original' ), $data );
                $this->assertEquals( $image->getImageData( $context, null, 'rasterized' ), $data );
        }
@@ -113,9 +113,9 @@ class ResourceLoaderImageTest extends ResourceLoaderTestCase {
         * @covers ResourceLoaderImage::massageSvgPathdata
         */
        public function testMassageSvgPathdata() {
-               $image = $this->getTestImage( 'next' );
-               $data = file_get_contents( $this->imagesPath . '/next.svg' );
-               $dataMassaged = file_get_contents( $this->imagesPath . '/next_massage.svg' );
+               $image = $this->getTestImage( 'ghi' );
+               $data = file_get_contents( $this->imagesPath . '/ghi.svg' );
+               $dataMassaged = file_get_contents( $this->imagesPath . '/ghi_massage.svg' );
                $this->assertEquals( $image->massageSvgPathdata( $data ), $dataMassaged );
        }
 }
index 4e482c8..491fff6 100644 (file)
@@ -39,7 +39,7 @@ class ResourceLoaderOOUIImageModuleTest extends ResourceLoaderTestCase {
 
                $styles = $module->getStyles( $this->getResourceLoaderContext( [ 'skin' => 'fakemonobook' ] ) );
                $this->assertRegExp(
-                       '/magnifying-glass-apex/',
+                       '/stu-apex/',
                        $styles['all'],
                        'Generated styles use the non-default image (embed)'
                );
@@ -51,7 +51,7 @@ class ResourceLoaderOOUIImageModuleTest extends ResourceLoaderTestCase {
 
                $styles = $module->getStyles( $this->getResourceLoaderContext() );
                $this->assertRegExp(
-                       '/magnifying-glass-mediawiki/',
+                       '/stu-wikimediaui/',
                        $styles['all'],
                        'Generated styles use the default image (embed)'
                );
index 2618e78..79d0784 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 class ResourceLoaderTest extends ResourceLoaderTestCase {
 
        protected function setUp() {
@@ -111,6 +113,58 @@ class ResourceLoaderTest extends ResourceLoaderTestCase {
                );
        }
 
+       public function provideTestIsFileModule() {
+               $fileModuleObj = $this->getMockBuilder( ResourceLoaderFileModule::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               return [
+                       'object' => [ false,
+                               new ResourceLoaderTestModule()
+                       ],
+                       'FileModule object' => [ false,
+                               $fileModuleObj
+                       ],
+                       'simple empty' => [ true,
+                               []
+                       ],
+                       'simple scripts' => [ true,
+                               [ 'scripts' => 'example.js' ]
+                       ],
+                       'simple scripts, raw and targets' => [ true, [
+                               'scripts' => [ 'a.js', 'b.js' ],
+                               'raw' => true,
+                               'targets' => [ 'desktop', 'mobile' ],
+                       ] ],
+                       'FileModule' => [ true,
+                               [ 'class' => ResourceLoaderFileModule::class, 'scripts' => 'example.js' ]
+                       ],
+                       'TestModule' => [ false,
+                               [ 'class' => ResourceLoaderTestModule::class, 'scripts' => 'example.js' ]
+                       ],
+                       'SkinModule (FileModule subclass)' => [ true,
+                               [ 'class' => ResourceLoaderSkinModule::class, 'scripts' => 'example.js' ]
+                       ],
+                       'JqueryMsgModule (FileModule subclass)' => [ true, [
+                               'class' => ResourceLoaderJqueryMsgModule::class,
+                               'scripts' => 'example.js',
+                       ] ],
+                       'WikiModule' => [ false, [
+                               'class' => ResourceLoaderWikiModule::class,
+                               'scripts' => [ 'MediaWiki:Example.js' ],
+                       ] ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideTestIsFileModule
+        * @covers ResourceLoader::isFileModule
+        */
+       public function testIsFileModule( $expected, $module ) {
+               $rl = TestingAccessWrapper::newFromObject( new EmptyResourceLoader() );
+               $rl->register( 'test', $module );
+               $this->assertSame( $expected, $rl->isFileModule( 'test' ) );
+       }
+
        /**
         * @covers ResourceLoader::isModuleRegistered
         */
@@ -141,6 +195,23 @@ class ResourceLoaderTest extends ResourceLoaderTestCase {
                );
        }
 
+       /**
+        * @covers ResourceLoader::getModule
+        */
+       public function testGetModuleFactory() {
+               $factory = function( array $info ) {
+                       $this->assertArrayHasKey( 'kitten', $info );
+                       return new ResourceLoaderTestModule( $info );
+               };
+
+               $rl = new EmptyResourceLoader();
+               $rl->register( 'test', [ 'factory' => $factory, 'kitten' => 'little ball of fur' ] );
+               $this->assertInstanceOf(
+                       ResourceLoaderTestModule::class,
+                       $rl->getModule( 'test' )
+               );
+       }
+
        /**
         * @covers ResourceLoader::getModule
         */
index 2d0d958..78eec6a 100644 (file)
@@ -2,6 +2,7 @@
 
 use MediaWiki\MediaWikiServices;
 use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\TestingAccessWrapper;
 
 class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase {
 
@@ -322,7 +323,6 @@ class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase {
                        $expected,
                        $module->getContent( $titleText )
                );
-
        }
 
        /**
index 6833893..fbbcee5 100644 (file)
@@ -1,5 +1,7 @@
 <?php
+
 use MediaWiki\MediaWikiServices;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @group Search
@@ -26,6 +28,11 @@ class SearchEnginePrefixTest extends MediaWikiLangTestCase {
                $this->insertPage( 'Example Foo' );
                $this->insertPage( 'Example Foo/Bar' );
                $this->insertPage( 'Example/Baz' );
+               $this->insertPage( 'Sample' );
+               $this->insertPage( 'Sample Ban' );
+               $this->insertPage( 'Sample Eat' );
+               $this->insertPage( 'Sample Who' );
+               $this->insertPage( 'Sample Zoo' );
                $this->insertPage( 'Redirect test', '#REDIRECT [[Redirect Test]]' );
                $this->insertPage( 'Redirect Test' );
                $this->insertPage( 'Redirect Test Worse Result' );
@@ -94,15 +101,15 @@ class SearchEnginePrefixTest extends MediaWikiLangTestCase {
                        ] ],
                        [ [
                                'Main namespace with title prefix',
-                               'query' => 'Ex',
+                               'query' => 'Sa',
                                'results' => [
-                                       'Example',
-                                       'Example/Baz',
-                                       'Example Bar',
+                                       'Sample',
+                                       'Sample Ban',
+                                       'Sample Eat',
                                ],
                                // Third result when testing offset
                                'offsetresult' => [
-                                       'Example Foo',
+                                       'Sample Who',
                                ],
                        ] ],
                        [ [
@@ -181,6 +188,7 @@ class SearchEnginePrefixTest extends MediaWikiLangTestCase {
                $results = array_map( function( Title $t ) {
                        return $t->getPrefixedText();
                }, $results );
+
                $this->assertEquals(
                        $case['results'],
                        $results,
index 6b12229..bb7508c 100644 (file)
@@ -51,7 +51,6 @@ class SearchIndexFieldTest extends MediaWikiTestCase {
                        }
                );
                $this->assertEquals( "test", $field1->merge( $field2 ) );
-
        }
 
 }
index 1ea27f3..90550d2 100644 (file)
@@ -4,6 +4,7 @@ namespace MediaWiki\Session;
 
 use Psr\Log\LogLevel;
 use MediaWikiTestCase;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @group Session
@@ -127,7 +128,7 @@ class BotPasswordSessionProviderTest extends MediaWikiTestCase {
                $provider = new BotPasswordSessionProvider( [
                        'priority' => 40
                ] );
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
+               $priv = TestingAccessWrapper::newFromObject( $provider );
                $this->assertSame( 40, $priv->priority );
                $this->assertSame( '_BPsession', $priv->sessionCookieName );
                $this->assertSame( [], $priv->sessionCookieOptions );
@@ -136,7 +137,7 @@ class BotPasswordSessionProviderTest extends MediaWikiTestCase {
                        'priority' => 40,
                        'sessionCookieName' => null,
                ] );
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
+               $priv = TestingAccessWrapper::newFromObject( $provider );
                $this->assertSame( '_BPsession', $priv->sessionCookieName );
 
                $provider = new BotPasswordSessionProvider( [
@@ -144,7 +145,7 @@ class BotPasswordSessionProviderTest extends MediaWikiTestCase {
                        'sessionCookieName' => 'Foo',
                        'sessionCookieOptions' => [ 'Bar' ],
                ] );
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
+               $priv = TestingAccessWrapper::newFromObject( $provider );
                $this->assertSame( 'Foo', $priv->sessionCookieName );
                $this->assertSame( [ 'Bar' ], $priv->sessionCookieOptions );
        }
@@ -289,7 +290,7 @@ class BotPasswordSessionProviderTest extends MediaWikiTestCase {
                $provider->setLogger( $logger );
 
                $backend = TestUtils::getDummySessionBackend();
-               $backendPriv = \TestingAccessWrapper::newFromObject( $backend );
+               $backendPriv = TestingAccessWrapper::newFromObject( $backend );
 
                try {
                        $provider->getAllowedUserRights( $backend );
index 73485c8..a47fd9a 100644 (file)
@@ -5,6 +5,7 @@ namespace MediaWiki\Session;
 use MediaWikiTestCase;
 use User;
 use Psr\Log\LogLevel;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @group Session
@@ -76,7 +77,7 @@ class CookieSessionProviderTest extends MediaWikiTestCase {
                }
 
                $config = $this->getConfig();
-               $p = \TestingAccessWrapper::newFromObject(
+               $p = TestingAccessWrapper::newFromObject(
                        new CookieSessionProvider( [ 'priority' => 1 ] )
                );
                $p->setLogger( new \TestLogger() );
@@ -95,7 +96,7 @@ class CookieSessionProviderTest extends MediaWikiTestCase {
                ], $p->cookieOptions );
 
                $config->set( 'SessionName', 'SessionName' );
-               $p = \TestingAccessWrapper::newFromObject(
+               $p = TestingAccessWrapper::newFromObject(
                        new CookieSessionProvider( [ 'priority' => 3 ] )
                );
                $p->setLogger( new \TestLogger() );
@@ -113,7 +114,7 @@ class CookieSessionProviderTest extends MediaWikiTestCase {
                        'httpOnly' => true,
                ], $p->cookieOptions );
 
-               $p = \TestingAccessWrapper::newFromObject( new CookieSessionProvider( [
+               $p = TestingAccessWrapper::newFromObject( new CookieSessionProvider( [
                        'priority' => 10,
                        'callUserSetCookiesHook' => true,
                        'cookieOptions' => [
@@ -151,7 +152,7 @@ class CookieSessionProviderTest extends MediaWikiTestCase {
 
                $this->assertEquals(
                        $extendedCookies,
-                       \TestingAccessWrapper::newFromObject( $provider )->getExtendedLoginCookies(),
+                       TestingAccessWrapper::newFromObject( $provider )->getExtendedLoginCookies(),
                        'List of extended cookies (subclasses can add values, but we\'re calling the core one here)'
                );
 
@@ -412,7 +413,7 @@ class CookieSessionProviderTest extends MediaWikiTestCase {
                        new \Psr\Log\NullLogger(),
                        10
                );
-               \TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false;
+               TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false;
 
                $mock = $this->getMockBuilder( 'stdClass' )
                        ->setMethods( [ 'onUserSetCookies' ] )
@@ -499,7 +500,7 @@ class CookieSessionProviderTest extends MediaWikiTestCase {
                        new \Psr\Log\NullLogger(),
                        10
                );
-               \TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false;
+               TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false;
                $backend->setUser( $user );
                $backend->setRememberUser( $remember );
                $backend->setForceHTTPS( $secure );
@@ -604,7 +605,7 @@ class CookieSessionProviderTest extends MediaWikiTestCase {
                        new \Psr\Log\NullLogger(),
                        10
                );
-               \TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false;
+               TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false;
 
                // Anonymous user
                $mock = $this->getMockBuilder( 'stdClass' )
@@ -736,7 +737,7 @@ class CookieSessionProviderTest extends MediaWikiTestCase {
        }
 
        public function testSetLoggedOutCookie() {
-               $provider = \TestingAccessWrapper::newFromObject( new CookieSessionProvider( [
+               $provider = TestingAccessWrapper::newFromObject( new CookieSessionProvider( [
                        'priority' => 1,
                        'sessionName' => 'MySessionName',
                        'cookieOptions' => [ 'prefix' => 'x' ],
@@ -783,7 +784,7 @@ class CookieSessionProviderTest extends MediaWikiTestCase {
                $provider->setLogger( new \Psr\Log\NullLogger() );
                $provider->setConfig( $this->getConfig() );
                $provider->setManager( SessionManager::singleton() );
-               $provider = \TestingAccessWrapper::newFromObject( $provider );
+               $provider = TestingAccessWrapper::newFromObject( $provider );
 
                $request = new \FauxRequest();
                $request->setCookies( [
@@ -815,7 +816,7 @@ class CookieSessionProviderTest extends MediaWikiTestCase {
 
        public function testGetLoginCookieExpiration() {
                $config = $this->getConfig();
-               $provider = \TestingAccessWrapper::newFromObject( new CookieSessionProvider( [
+               $provider = TestingAccessWrapper::newFromObject( new CookieSessionProvider( [
                        'priority' => 10
                ] ) );
                $provider->setLogger( new \Psr\Log\NullLogger() );
index 7ef230e..086fa28 100644 (file)
@@ -4,6 +4,7 @@ namespace MediaWiki\Session;
 
 use MediaWikiTestCase;
 use User;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @group Session
@@ -37,7 +38,7 @@ class ImmutableSessionProviderWithCookieTest extends MediaWikiTestCase {
        public function testConstructor() {
                $provider = $this->getMockBuilder( ImmutableSessionProviderWithCookie::class )
                        ->getMockForAbstractClass();
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
+               $priv = TestingAccessWrapper::newFromObject( $provider );
                $this->assertNull( $priv->sessionCookieName );
                $this->assertSame( [], $priv->sessionCookieOptions );
 
@@ -47,7 +48,7 @@ class ImmutableSessionProviderWithCookieTest extends MediaWikiTestCase {
                                'sessionCookieOptions' => [ 'Bar' ],
                        ] ] )
                        ->getMockForAbstractClass();
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
+               $priv = TestingAccessWrapper::newFromObject( $provider );
                $this->assertSame( 'Foo', $priv->sessionCookieName );
                $this->assertSame( [ 'Bar' ], $priv->sessionCookieOptions );
 
@@ -119,7 +120,7 @@ class ImmutableSessionProviderWithCookieTest extends MediaWikiTestCase {
                        'bad' => 'bad',
                ], '' );
 
-               $provider = \TestingAccessWrapper::newFromObject( $this->getProvider( null ) );
+               $provider = TestingAccessWrapper::newFromObject( $this->getProvider( null ) );
                try {
                        $provider->getSessionIdFromCookie( $request );
                        $this->fail( 'Expected exception not thrown' );
@@ -131,28 +132,28 @@ class ImmutableSessionProviderWithCookieTest extends MediaWikiTestCase {
                        );
                }
 
-               $provider = \TestingAccessWrapper::newFromObject( $this->getProvider( 'Foo' ) );
+               $provider = TestingAccessWrapper::newFromObject( $this->getProvider( 'Foo' ) );
                $this->assertSame(
                        'wgfoo---------------------------',
                        $provider->getSessionIdFromCookie( $request )
                );
 
-               $provider = \TestingAccessWrapper::newFromObject( $this->getProvider( 'Foo', 'Bar' ) );
+               $provider = TestingAccessWrapper::newFromObject( $this->getProvider( 'Foo', 'Bar' ) );
                $this->assertSame(
                        'foobar--------------------------',
                        $provider->getSessionIdFromCookie( $request )
                );
 
-               $provider = \TestingAccessWrapper::newFromObject( $this->getProvider( 'Foo', '' ) );
+               $provider = TestingAccessWrapper::newFromObject( $this->getProvider( 'Foo', '' ) );
                $this->assertSame(
                        'foo-----------------------------',
                        $provider->getSessionIdFromCookie( $request )
                );
 
-               $provider = \TestingAccessWrapper::newFromObject( $this->getProvider( 'bad', '' ) );
+               $provider = TestingAccessWrapper::newFromObject( $this->getProvider( 'bad', '' ) );
                $this->assertSame( null, $provider->getSessionIdFromCookie( $request ) );
 
-               $provider = \TestingAccessWrapper::newFromObject( $this->getProvider( 'none', '' ) );
+               $provider = TestingAccessWrapper::newFromObject( $this->getProvider( 'none', '' ) );
                $this->assertSame( null, $provider->getSessionIdFromCookie( $request ) );
        }
 
@@ -185,7 +186,7 @@ class ImmutableSessionProviderWithCookieTest extends MediaWikiTestCase {
 
                $provider = $this->getProvider( 'session' );
                $provider->setLogger( new \Psr\Log\NullLogger() );
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
+               $priv = TestingAccessWrapper::newFromObject( $provider );
                $priv->sessionCookieOptions = [
                        'prefix' => 'x',
                        'path' => 'CookiePath',
@@ -211,7 +212,7 @@ class ImmutableSessionProviderWithCookieTest extends MediaWikiTestCase {
                        new \Psr\Log\NullLogger(),
                        10
                );
-               \TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false;
+               TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false;
                $backend->setRememberUser( $remember );
                $backend->setForceHTTPS( $secure );
 
@@ -281,7 +282,7 @@ class ImmutableSessionProviderWithCookieTest extends MediaWikiTestCase {
        public function testUnpersistSession() {
                $provider = $this->getProvider( 'session', '' );
                $provider->setLogger( new \Psr\Log\NullLogger() );
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
+               $priv = TestingAccessWrapper::newFromObject( $provider );
 
                // No cookie
                $priv->sessionCookieName = null;
index 34e5e44..0a2e84e 100644 (file)
@@ -4,6 +4,7 @@ namespace MediaWiki\Session;
 
 use Psr\Log\LogLevel;
 use MediaWikiTestCase;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @group Session
@@ -26,7 +27,7 @@ class PHPSessionHandlerTest extends MediaWikiTestCase {
                $rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
                $rProp->setAccessible( true );
                if ( $rProp->getValue() ) {
-                       $old = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
+                       $old = TestingAccessWrapper::newFromObject( $rProp->getValue() );
                        $oldManager = $old->manager;
                        $oldStore = $old->store;
                        $oldLogger = $old->logger;
@@ -40,7 +41,7 @@ class PHPSessionHandlerTest extends MediaWikiTestCase {
        }
 
        public function testEnableFlags() {
-               $handler = \TestingAccessWrapper::newFromObject(
+               $handler = TestingAccessWrapper::newFromObject(
                        $this->getMockBuilder( PHPSessionHandler::class )
                                ->setMethods( null )
                                ->disableOriginalConstructor()
@@ -93,7 +94,7 @@ class PHPSessionHandlerTest extends MediaWikiTestCase {
                $this->assertFalse( wfIniGetBool( 'session.use_trans_sid' ) );
 
                $this->assertNotNull( $rProp->getValue() );
-               $priv = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
+               $priv = TestingAccessWrapper::newFromObject( $rProp->getValue() );
                $this->assertSame( $manager, $priv->manager );
                $this->assertSame( $store, $priv->store );
                $this->assertSame( $logger, $priv->logger );
@@ -122,7 +123,7 @@ class PHPSessionHandlerTest extends MediaWikiTestCase {
                        'logger' => $logger,
                ] );
                PHPSessionHandler::install( $manager );
-               $wrap = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
+               $wrap = TestingAccessWrapper::newFromObject( $rProp->getValue() );
                $reset[] = new \Wikimedia\ScopedCallback(
                        [ $wrap, 'setEnableFlags' ],
                        [ $wrap->enable ? $wrap->warn ? 'warn' : 'enable' : 'disable' ]
@@ -323,7 +324,7 @@ class PHPSessionHandlerTest extends MediaWikiTestCase {
                        ->setMethods( null )
                        ->disableOriginalConstructor()
                        ->getMock();
-               \TestingAccessWrapper::newFromObject( $handler )->setEnableFlags( 'disable' );
+               TestingAccessWrapper::newFromObject( $handler )->setEnableFlags( 'disable' );
                $oldValue = $rProp->getValue();
                $rProp->setValue( $handler );
                $reset = new \Wikimedia\ScopedCallback( [ $rProp, 'setValue' ], [ $oldValue ] );
@@ -350,7 +351,7 @@ class PHPSessionHandlerTest extends MediaWikiTestCase {
                        ->setMethods( null )
                        ->disableOriginalConstructor()
                        ->getMock();
-               \TestingAccessWrapper::newFromObject( $handler )->setEnableFlags( 'enable' );
+               TestingAccessWrapper::newFromObject( $handler )->setEnableFlags( 'enable' );
 
                call_user_func_array( [ $handler, $method ], $args );
        }
index 4a28f7a..e0d1c30 100644 (file)
@@ -4,6 +4,7 @@ namespace MediaWiki\Session;
 
 use MediaWikiTestCase;
 use User;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @group Session
@@ -61,13 +62,13 @@ class SessionBackendTest extends MediaWikiTestCase {
                $id = new SessionId( $info->getId() );
 
                $backend = new SessionBackend( $id, $info, $this->store, $logger, 10 );
-               $priv = \TestingAccessWrapper::newFromObject( $backend );
+               $priv = TestingAccessWrapper::newFromObject( $backend );
                $priv->persist = false;
                $priv->requests = [ 100 => new \FauxRequest() ];
                $priv->requests[100]->setSessionId( $id );
                $priv->usePhpSessionHandling = false;
 
-               $manager = \TestingAccessWrapper::newFromObject( $this->manager );
+               $manager = TestingAccessWrapper::newFromObject( $this->manager );
                $manager->allSessionBackends = [ $backend->getId() => $backend ] + $manager->allSessionBackends;
                $manager->allSessionIds = [ $backend->getId() => $id ] + $manager->allSessionIds;
                $manager->sessionProviders = [ (string)$this->provider => $this->provider ];
@@ -168,16 +169,16 @@ class SessionBackendTest extends MediaWikiTestCase {
                $this->assertSame( $info->wasPersisted(), $backend->isPersistent() );
                $this->assertSame( $info->wasRemembered(), $backend->shouldRememberUser() );
                $this->assertSame( $info->forceHTTPS(), $backend->shouldForceHTTPS() );
-               $this->assertSame( $expire, \TestingAccessWrapper::newFromObject( $backend )->expires );
+               $this->assertSame( $expire, TestingAccessWrapper::newFromObject( $backend )->expires );
                $this->assertSame( [ 'foo' ], $backend->getProviderMetadata() );
        }
 
        public function testSessionStuff() {
                $backend = $this->getBackend();
-               $priv = \TestingAccessWrapper::newFromObject( $backend );
+               $priv = TestingAccessWrapper::newFromObject( $backend );
                $priv->requests = []; // Remove dummy session
 
-               $manager = \TestingAccessWrapper::newFromObject( $this->manager );
+               $manager = TestingAccessWrapper::newFromObject( $this->manager );
 
                $request1 = new \FauxRequest();
                $session1 = $backend->getSession( $request1 );
@@ -188,7 +189,7 @@ class SessionBackendTest extends MediaWikiTestCase {
                $this->assertInstanceOf( Session::class, $session2 );
                $this->assertSame( 2, count( $priv->requests ) );
 
-               $index = \TestingAccessWrapper::newFromObject( $session1 )->index;
+               $index = TestingAccessWrapper::newFromObject( $session1 )->index;
 
                $this->assertSame( $request1, $backend->getRequest( $index ) );
                $this->assertSame( null, $backend->suggestLoginUsername( $index ) );
@@ -220,7 +221,7 @@ class SessionBackendTest extends MediaWikiTestCase {
 
        public function testSetProviderMetadata() {
                $backend = $this->getBackend();
-               $priv = \TestingAccessWrapper::newFromObject( $backend );
+               $priv = TestingAccessWrapper::newFromObject( $backend );
                $priv->providerMetadata = [ 'dummy' ];
 
                try {
@@ -265,7 +266,7 @@ class SessionBackendTest extends MediaWikiTestCase {
                        ->will( $this->returnValue( false ) );
                $this->provider->expects( $this->never() )->method( 'sessionIdWasReset' );
                $backend = $this->getBackend( User::newFromName( 'UTSysop' ) );
-               $manager = \TestingAccessWrapper::newFromObject( $this->manager );
+               $manager = TestingAccessWrapper::newFromObject( $this->manager );
                $sessionId = $backend->getSessionId();
                $backend->resetId();
                $this->assertSame( self::SESSIONID, $backend->getId() );
@@ -279,7 +280,7 @@ class SessionBackendTest extends MediaWikiTestCase {
                $backend = $this->getBackend();
                $this->provider->expects( $this->once() )->method( 'sessionIdWasReset' )
                        ->with( $this->identicalTo( $backend ), $this->identicalTo( self::SESSIONID ) );
-               $manager = \TestingAccessWrapper::newFromObject( $this->manager );
+               $manager = TestingAccessWrapper::newFromObject( $this->manager );
                $sessionId = $backend->getSessionId();
                $backend->resetId();
                $this->assertNotEquals( self::SESSIONID, $backend->getId() );
@@ -305,7 +306,7 @@ class SessionBackendTest extends MediaWikiTestCase {
 
                $this->provider = null;
                $backend = $this->getBackend();
-               $wrap = \TestingAccessWrapper::newFromObject( $backend );
+               $wrap = TestingAccessWrapper::newFromObject( $backend );
                $wrap->persist = true;
                $wrap->expires = 0;
                $backend->persist();
@@ -317,7 +318,7 @@ class SessionBackendTest extends MediaWikiTestCase {
                        ->setMethods( [ 'unpersistSession' ] )->getMock();
                $this->provider->expects( $this->once() )->method( 'unpersistSession' );
                $backend = $this->getBackend();
-               $wrap = \TestingAccessWrapper::newFromObject( $backend );
+               $wrap = TestingAccessWrapper::newFromObject( $backend );
                $wrap->store = new \CachedBagOStuff( $this->store );
                $wrap->persist = true;
                $wrap->dataDirty = true;
@@ -329,7 +330,9 @@ class SessionBackendTest extends MediaWikiTestCase {
                $backend->unpersist();
                $this->assertFalse( $backend->isPersistent() );
                $this->assertFalse( $this->store->getSession( self::SESSIONID ) );
-               $this->assertNotFalse( $wrap->store->get( wfMemcKey( 'MWSession', self::SESSIONID ) ) );
+               $this->assertNotFalse(
+                       $wrap->store->get( $wrap->store->makeKey( 'MWSession', self::SESSIONID ) )
+               );
        }
 
        public function testRememberUser() {
@@ -391,7 +394,7 @@ class SessionBackendTest extends MediaWikiTestCase {
 
        public function testDirty() {
                $backend = $this->getBackend();
-               $priv = \TestingAccessWrapper::newFromObject( $backend );
+               $priv = TestingAccessWrapper::newFromObject( $backend );
                $priv->dataDirty = false;
                $backend->dirty();
                $this->assertTrue( $priv->dataDirty );
@@ -401,7 +404,7 @@ class SessionBackendTest extends MediaWikiTestCase {
                $backend = $this->getBackend();
                $data = $backend->getData();
                $this->assertSame( [], $data );
-               $this->assertTrue( \TestingAccessWrapper::newFromObject( $backend )->dataDirty );
+               $this->assertTrue( TestingAccessWrapper::newFromObject( $backend )->dataDirty );
                $data['???'] = '!!!';
                $this->assertSame( [ '???' => '!!!' ], $data );
 
@@ -409,12 +412,12 @@ class SessionBackendTest extends MediaWikiTestCase {
                $this->store->setSessionData( self::SESSIONID, $testData );
                $backend = $this->getBackend();
                $this->assertSame( $testData, $backend->getData() );
-               $this->assertFalse( \TestingAccessWrapper::newFromObject( $backend )->dataDirty );
+               $this->assertFalse( TestingAccessWrapper::newFromObject( $backend )->dataDirty );
        }
 
        public function testAddData() {
                $backend = $this->getBackend();
-               $priv = \TestingAccessWrapper::newFromObject( $backend );
+               $priv = TestingAccessWrapper::newFromObject( $backend );
 
                $priv->data = [ 'foo' => 1 ];
                $priv->dataDirty = false;
@@ -438,7 +441,7 @@ class SessionBackendTest extends MediaWikiTestCase {
        public function testDelaySave() {
                $this->mergeMwGlobalArrayValue( 'wgHooks', [ 'SessionMetadata' => [ $this ] ] );
                $backend = $this->getBackend();
-               $priv = \TestingAccessWrapper::newFromObject( $backend );
+               $priv = TestingAccessWrapper::newFromObject( $backend );
                $priv->persist = true;
 
                // Saves happen normally when no delay is in effect
@@ -509,8 +512,8 @@ class SessionBackendTest extends MediaWikiTestCase {
                $backend = $this->getBackend( $user );
                $this->store->deleteSession( self::SESSIONID );
                $this->assertFalse( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
+               TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
+               TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
                $backend->save();
                $this->assertFalse( $this->store->getSession( self::SESSIONID ), 'making sure it didn\'t save' );
 
@@ -522,11 +525,11 @@ class SessionBackendTest extends MediaWikiTestCase {
                $this->store->setSessionData( self::SESSIONID, $testData );
                $backend = $this->getBackend( $user );
                $this->store->deleteSession( self::SESSIONID );
-               \TestingAccessWrapper::newFromObject( $backend )->persist = false;
-               \TestingAccessWrapper::newFromObject( $backend )->forcePersist = true;
+               TestingAccessWrapper::newFromObject( $backend )->persist = false;
+               TestingAccessWrapper::newFromObject( $backend )->forcePersist = true;
                $this->assertFalse( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
+               TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
+               TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
                $backend->save();
                $this->assertFalse( $this->store->getSession( self::SESSIONID ), 'making sure it didn\'t save' );
 
@@ -535,14 +538,14 @@ class SessionBackendTest extends MediaWikiTestCase {
                $this->mergeMwGlobalArrayValue( 'wgHooks', [ 'SessionMetadata' => [ $neverHook ] ] );
                $this->store->setSessionData( self::SESSIONID, $testData );
                $backend = $this->getBackend( $user );
-               \TestingAccessWrapper::newFromObject( $backend )->requests[100]
+               TestingAccessWrapper::newFromObject( $backend )->requests[100]
                        ->setSessionId( new SessionId( 'x' ) );
                $this->store->deleteSession( self::SESSIONID );
-               \TestingAccessWrapper::newFromObject( $backend )->persist = false;
-               \TestingAccessWrapper::newFromObject( $backend )->forcePersist = true;
+               TestingAccessWrapper::newFromObject( $backend )->persist = false;
+               TestingAccessWrapper::newFromObject( $backend )->forcePersist = true;
                $this->assertFalse( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
+               TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
+               TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
                $backend->save();
                $this->assertFalse( $this->store->getSession( self::SESSIONID ), 'making sure it didn\'t save' );
 
@@ -554,8 +557,8 @@ class SessionBackendTest extends MediaWikiTestCase {
                $backend = $this->getBackend( $user );
                $this->store->deleteSession( self::SESSIONID );
                $this->assertFalse( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = true;
+               TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
+               TestingAccessWrapper::newFromObject( $backend )->dataDirty = true;
                $backend->save();
                $this->assertTrue( $this->onSessionMetadataCalled );
                $blob = $this->store->getSession( self::SESSIONID );
@@ -574,10 +577,10 @@ class SessionBackendTest extends MediaWikiTestCase {
                $this->store->setSessionData( self::SESSIONID, $testData );
                $backend = $this->getBackend( $user );
                $this->store->deleteSession( self::SESSIONID );
-               \TestingAccessWrapper::newFromObject( $backend )->persist = true;
+               TestingAccessWrapper::newFromObject( $backend )->persist = true;
                $this->assertTrue( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
+               TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
+               TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
                $backend->save();
                $this->assertFalse( $this->store->getSession( self::SESSIONID ), 'making sure it didn\'t save' );
 
@@ -589,11 +592,11 @@ class SessionBackendTest extends MediaWikiTestCase {
                $this->store->setSessionData( self::SESSIONID, $testData );
                $backend = $this->getBackend( $user );
                $this->store->deleteSession( self::SESSIONID );
-               \TestingAccessWrapper::newFromObject( $backend )->persist = true;
-               \TestingAccessWrapper::newFromObject( $backend )->forcePersist = true;
+               TestingAccessWrapper::newFromObject( $backend )->persist = true;
+               TestingAccessWrapper::newFromObject( $backend )->forcePersist = true;
                $this->assertTrue( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
+               TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
+               TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
                $backend->save();
                $this->assertFalse( $this->store->getSession( self::SESSIONID ), 'making sure it didn\'t save' );
 
@@ -604,10 +607,10 @@ class SessionBackendTest extends MediaWikiTestCase {
                $this->store->setSessionData( self::SESSIONID, $testData );
                $backend = $this->getBackend( $user );
                $this->store->deleteSession( self::SESSIONID );
-               \TestingAccessWrapper::newFromObject( $backend )->persist = true;
+               TestingAccessWrapper::newFromObject( $backend )->persist = true;
                $this->assertTrue( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = true;
+               TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
+               TestingAccessWrapper::newFromObject( $backend )->dataDirty = true;
                $backend->save();
                $this->assertTrue( $this->onSessionMetadataCalled );
                $blob = $this->store->getSession( self::SESSIONID );
@@ -629,11 +632,11 @@ class SessionBackendTest extends MediaWikiTestCase {
                $this->store->setSessionData( self::SESSIONID, $testData );
                $backend = $this->getBackend( $user );
                $this->store->deleteSession( self::SESSIONID );
-               \TestingAccessWrapper::newFromObject( $backend )->persist = true;
-               \TestingAccessWrapper::newFromObject( $backend )->forcePersist = true;
+               TestingAccessWrapper::newFromObject( $backend )->persist = true;
+               TestingAccessWrapper::newFromObject( $backend )->forcePersist = true;
                $this->assertTrue( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = true;
+               TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
+               TestingAccessWrapper::newFromObject( $backend )->dataDirty = true;
                $backend->save();
                $this->assertTrue( $this->onSessionMetadataCalled );
                $blob = $this->store->getSession( self::SESSIONID );
@@ -655,10 +658,10 @@ class SessionBackendTest extends MediaWikiTestCase {
                $this->store->setSessionData( self::SESSIONID, $testData );
                $backend = $this->getBackend( $user );
                $this->store->deleteSession( self::SESSIONID );
-               \TestingAccessWrapper::newFromObject( $backend )->persist = true;
+               TestingAccessWrapper::newFromObject( $backend )->persist = true;
                $this->assertTrue( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = true;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
+               TestingAccessWrapper::newFromObject( $backend )->metaDirty = true;
+               TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
                $backend->save();
                $this->assertTrue( $this->onSessionMetadataCalled );
                $blob = $this->store->getSession( self::SESSIONID );
@@ -679,11 +682,11 @@ class SessionBackendTest extends MediaWikiTestCase {
                $this->store->setSessionData( self::SESSIONID, $testData );
                $backend = $this->getBackend( $user );
                $this->store->deleteSession( self::SESSIONID );
-               \TestingAccessWrapper::newFromObject( $backend )->persist = true;
+               TestingAccessWrapper::newFromObject( $backend )->persist = true;
                $this->assertTrue( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataHash = 'Doesn\'t match';
+               TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
+               TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
+               TestingAccessWrapper::newFromObject( $backend )->dataHash = 'Doesn\'t match';
                $backend->save();
                $this->assertTrue( $this->onSessionMetadataCalled );
                $blob = $this->store->getSession( self::SESSIONID );
@@ -721,7 +724,7 @@ class SessionBackendTest extends MediaWikiTestCase {
                }
 
                // SessionManager::preventSessionsForUser
-               \TestingAccessWrapper::newFromObject( $this->manager )->preventUsers = [
+               TestingAccessWrapper::newFromObject( $this->manager )->preventUsers = [
                        $user->getName() => true,
                ];
                $this->provider = $neverProvider;
@@ -729,10 +732,10 @@ class SessionBackendTest extends MediaWikiTestCase {
                $this->store->setSessionData( self::SESSIONID, $testData );
                $backend = $this->getBackend( $user );
                $this->store->deleteSession( self::SESSIONID );
-               \TestingAccessWrapper::newFromObject( $backend )->persist = true;
+               TestingAccessWrapper::newFromObject( $backend )->persist = true;
                $this->assertTrue( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = true;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = true;
+               TestingAccessWrapper::newFromObject( $backend )->metaDirty = true;
+               TestingAccessWrapper::newFromObject( $backend )->dataDirty = true;
                $backend->save();
                $this->assertFalse( $this->store->getSession( self::SESSIONID ), 'making sure it didn\'t save' );
        }
@@ -751,7 +754,7 @@ class SessionBackendTest extends MediaWikiTestCase {
                $this->store->setSessionData( self::SESSIONID, $testData );
                $backend = $this->getBackend( $user );
                $this->store->deleteSession( self::SESSIONID );
-               $wrap = \TestingAccessWrapper::newFromObject( $backend );
+               $wrap = TestingAccessWrapper::newFromObject( $backend );
                $this->assertFalse( $backend->isPersistent(), 'sanity check' );
                $wrap->metaDirty = false;
                $wrap->dataDirty = false;
@@ -777,7 +780,7 @@ class SessionBackendTest extends MediaWikiTestCase {
                $this->store->setSessionData( self::SESSIONID, $testData );
                $backend = $this->getBackend( $user );
                $this->store->deleteSession( self::SESSIONID );
-               $wrap = \TestingAccessWrapper::newFromObject( $backend );
+               $wrap = TestingAccessWrapper::newFromObject( $backend );
                $wrap->persist = true;
                $this->assertTrue( $backend->isPersistent(), 'sanity check' );
                $wrap->metaDirty = false;
@@ -804,7 +807,7 @@ class SessionBackendTest extends MediaWikiTestCase {
                $this->store->setSessionData( self::SESSIONID, $testData );
                $backend = $this->getBackend( $user );
                $this->store->deleteSession( self::SESSIONID );
-               $wrap = \TestingAccessWrapper::newFromObject( $backend );
+               $wrap = TestingAccessWrapper::newFromObject( $backend );
                $this->assertFalse( $backend->isPersistent(), 'sanity check' );
                $wrap->metaDirty = false;
                $wrap->dataDirty = false;
@@ -829,7 +832,7 @@ class SessionBackendTest extends MediaWikiTestCase {
                if ( !PHPSessionHandler::isEnabled() ) {
                        $rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
                        $rProp->setAccessible( true );
-                       $handler = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
+                       $handler = TestingAccessWrapper::newFromObject( $rProp->getValue() );
                        $resetHandler = new \Wikimedia\ScopedCallback( function () use ( $handler ) {
                                session_write_close();
                                $handler->enable = false;
@@ -838,27 +841,27 @@ class SessionBackendTest extends MediaWikiTestCase {
                }
 
                $backend = $this->getBackend( static::getTestSysop()->getUser() );
-               \TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = true;
+               TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = true;
 
                $resetSingleton = TestUtils::setSessionManagerSingleton( $this->manager );
 
-               $manager = \TestingAccessWrapper::newFromObject( $this->manager );
+               $manager = TestingAccessWrapper::newFromObject( $this->manager );
                $request = \RequestContext::getMain()->getRequest();
                $manager->globalSession = $backend->getSession( $request );
                $manager->globalSessionRequest = $request;
 
                session_id( '' );
-               \TestingAccessWrapper::newFromObject( $backend )->checkPHPSession();
+               TestingAccessWrapper::newFromObject( $backend )->checkPHPSession();
                $this->assertSame( $backend->getId(), session_id() );
                session_write_close();
 
                $backend2 = $this->getBackend(
                        User::newFromName( 'UTSysop' ), 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
                );
-               \TestingAccessWrapper::newFromObject( $backend2 )->usePhpSessionHandling = true;
+               TestingAccessWrapper::newFromObject( $backend2 )->usePhpSessionHandling = true;
 
                session_id( '' );
-               \TestingAccessWrapper::newFromObject( $backend2 )->checkPHPSession();
+               TestingAccessWrapper::newFromObject( $backend2 )->checkPHPSession();
                $this->assertSame( '', session_id() );
        }
 
@@ -869,7 +872,7 @@ class SessionBackendTest extends MediaWikiTestCase {
                if ( !PHPSessionHandler::isEnabled() ) {
                        $rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
                        $rProp->setAccessible( true );
-                       $handler = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
+                       $handler = TestingAccessWrapper::newFromObject( $rProp->getValue() );
                        $resetHandler = new \Wikimedia\ScopedCallback( function () use ( $handler ) {
                                session_write_close();
                                $handler->enable = false;
@@ -878,11 +881,11 @@ class SessionBackendTest extends MediaWikiTestCase {
                }
 
                $backend = $this->getBackend( User::newFromName( 'UTSysop' ) );
-               \TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = true;
+               TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = true;
 
                $resetSingleton = TestUtils::setSessionManagerSingleton( $this->manager );
 
-               $manager = \TestingAccessWrapper::newFromObject( $this->manager );
+               $manager = TestingAccessWrapper::newFromObject( $this->manager );
                $request = \RequestContext::getMain()->getRequest();
                $manager->globalSession = $backend->getSession( $request );
                $manager->globalSessionRequest = $request;
@@ -905,7 +908,7 @@ class SessionBackendTest extends MediaWikiTestCase {
                if ( !PHPSessionHandler::isEnabled() ) {
                        $rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
                        $rProp->setAccessible( true );
-                       $handler = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
+                       $handler = TestingAccessWrapper::newFromObject( $rProp->getValue() );
                        $resetHandler = new \Wikimedia\ScopedCallback( function () use ( $handler ) {
                                session_write_close();
                                $handler->enable = false;
@@ -914,13 +917,13 @@ class SessionBackendTest extends MediaWikiTestCase {
                }
 
                $backend = $this->getBackend( User::newFromName( 'UTSysop' ) );
-               $wrap = \TestingAccessWrapper::newFromObject( $backend );
+               $wrap = TestingAccessWrapper::newFromObject( $backend );
                $wrap->usePhpSessionHandling = true;
                $wrap->persist = true;
 
                $resetSingleton = TestUtils::setSessionManagerSingleton( $this->manager );
 
-               $manager = \TestingAccessWrapper::newFromObject( $this->manager );
+               $manager = TestingAccessWrapper::newFromObject( $this->manager );
                $request = \RequestContext::getMain()->getRequest();
                $manager->globalSession = $backend->getSession( $request );
                $manager->globalSessionRequest = $request;
index c4b1072..9eb46bc 100644 (file)
@@ -5,6 +5,7 @@ namespace MediaWiki\Session;
 use MediaWikiTestCase;
 use Psr\Log\LogLevel;
 use User;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @group Session
@@ -59,7 +60,7 @@ class SessionManagerTest extends MediaWikiTestCase {
                }
                $rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
                $rProp->setAccessible( true );
-               $handler = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
+               $handler = TestingAccessWrapper::newFromObject( $rProp->getValue() );
                $oldEnable = $handler->enable;
                $reset[] = new \Wikimedia\ScopedCallback( function () use ( $handler, $oldEnable ) {
                        if ( $handler->enable ) {
@@ -100,15 +101,15 @@ class SessionManagerTest extends MediaWikiTestCase {
        }
 
        public function testConstructor() {
-               $manager = \TestingAccessWrapper::newFromObject( $this->getManager() );
+               $manager = TestingAccessWrapper::newFromObject( $this->getManager() );
                $this->assertSame( $this->config, $manager->config );
                $this->assertSame( $this->logger, $manager->logger );
                $this->assertSame( $this->store, $manager->store );
 
-               $manager = \TestingAccessWrapper::newFromObject( new SessionManager() );
+               $manager = TestingAccessWrapper::newFromObject( new SessionManager() );
                $this->assertSame( \RequestContext::getMain()->getConfig(), $manager->config );
 
-               $manager = \TestingAccessWrapper::newFromObject( new SessionManager( [
+               $manager = TestingAccessWrapper::newFromObject( new SessionManager( [
                        'config' => $this->config,
                ] ) );
                $this->assertSame( \ObjectCache::$instances['testSessionStore'], $manager->store );
@@ -418,7 +419,7 @@ class SessionManagerTest extends MediaWikiTestCase {
 
        public function testGetEmptySession() {
                $manager = $this->getManager();
-               $pmanager = \TestingAccessWrapper::newFromObject( $manager );
+               $pmanager = TestingAccessWrapper::newFromObject( $manager );
                $request = new \FauxRequest();
 
                $providerBuilder = $this->getMockBuilder( 'DummySessionProvider' )
@@ -747,14 +748,14 @@ class SessionManagerTest extends MediaWikiTestCase {
 
        public function testGetProviders() {
                $realManager = $this->getManager();
-               $manager = \TestingAccessWrapper::newFromObject( $realManager );
+               $manager = TestingAccessWrapper::newFromObject( $realManager );
 
                $this->config->set( 'SessionProviders', [
                        [ 'class' => 'DummySessionProvider' ],
                ] );
                $providers = $manager->getProviders();
                $this->assertArrayHasKey( 'DummySessionProvider', $providers );
-               $provider = \TestingAccessWrapper::newFromObject( $providers['DummySessionProvider'] );
+               $provider = TestingAccessWrapper::newFromObject( $providers['DummySessionProvider'] );
                $this->assertSame( $manager->logger, $provider->logger );
                $this->assertSame( $manager->config, $provider->config );
                $this->assertSame( $realManager, $provider->getManager() );
@@ -776,7 +777,7 @@ class SessionManagerTest extends MediaWikiTestCase {
        }
 
        public function testShutdown() {
-               $manager = \TestingAccessWrapper::newFromObject( $this->getManager() );
+               $manager = TestingAccessWrapper::newFromObject( $this->getManager() );
                $manager->setLogger( new \Psr\Log\NullLogger() );
 
                $mock = $this->getMockBuilder( 'stdClass' )
@@ -788,7 +789,7 @@ class SessionManagerTest extends MediaWikiTestCase {
        }
 
        public function testGetSessionFromInfo() {
-               $manager = \TestingAccessWrapper::newFromObject( $this->getManager() );
+               $manager = TestingAccessWrapper::newFromObject( $this->getManager() );
                $request = new \FauxRequest();
 
                $id = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
@@ -800,11 +801,11 @@ class SessionManagerTest extends MediaWikiTestCase {
                        'userInfo' => UserInfo::newFromName( 'UTSysop', true ),
                        'idIsSafe' => true,
                ] );
-               \TestingAccessWrapper::newFromObject( $info )->idIsSafe = true;
-               $session1 = \TestingAccessWrapper::newFromObject(
+               TestingAccessWrapper::newFromObject( $info )->idIsSafe = true;
+               $session1 = TestingAccessWrapper::newFromObject(
                        $manager->getSessionFromInfo( $info, $request )
                );
-               $session2 = \TestingAccessWrapper::newFromObject(
+               $session2 = TestingAccessWrapper::newFromObject(
                        $manager->getSessionFromInfo( $info, $request )
                );
 
@@ -813,7 +814,7 @@ class SessionManagerTest extends MediaWikiTestCase {
                $this->assertSame( $session1->getSessionId(), $session2->getSessionId() );
                $this->assertSame( $id, $session1->getId() );
 
-               \TestingAccessWrapper::newFromObject( $info )->idIsSafe = false;
+               TestingAccessWrapper::newFromObject( $info )->idIsSafe = false;
                $session3 = $manager->getSessionFromInfo( $info, $request );
                $this->assertNotSame( $id, $session3->getId() );
        }
@@ -822,7 +823,7 @@ class SessionManagerTest extends MediaWikiTestCase {
                $manager = $this->getManager();
 
                $session = $manager->getSessionForRequest( new \FauxRequest );
-               $backend = \TestingAccessWrapper::newFromObject( $session )->backend;
+               $backend = TestingAccessWrapper::newFromObject( $session )->backend;
                $sessionId = $session->getSessionId();
                $id = (string)$sessionId;
 
@@ -959,7 +960,7 @@ class SessionManagerTest extends MediaWikiTestCase {
                $provider3->expects( $this->any() )->method( '__toString' )
                        ->will( $this->returnValue( 'Mock3' ) );
 
-               \TestingAccessWrapper::newFromObject( $manager )->sessionProviders = [
+               TestingAccessWrapper::newFromObject( $manager )->sessionProviders = [
                        (string)$provider => $provider,
                        (string)$provider2 => $provider2,
                        (string)$provider3 => $provider3,
index 8284d05..052c016 100644 (file)
@@ -3,6 +3,7 @@
 namespace MediaWiki\Session;
 
 use MediaWikiTestCase;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @group Session
@@ -17,7 +18,7 @@ class SessionProviderTest extends MediaWikiTestCase {
                $config = new \HashConfig();
 
                $provider = $this->getMockForAbstractClass( SessionProvider::class );
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
+               $priv = TestingAccessWrapper::newFromObject( $provider );
 
                $provider->setConfig( $config );
                $this->assertSame( $config, $priv->config );
@@ -148,7 +149,7 @@ class SessionProviderTest extends MediaWikiTestCase {
                $provider = $this->getMockForAbstractClass( SessionProvider::class,
                        [], 'MockSessionProvider' );
                $provider->setConfig( $config );
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
+               $priv = TestingAccessWrapper::newFromObject( $provider );
 
                $this->assertSame( 'eoq8cb1mg7j30ui5qolafps4hg29k5bb', $priv->hashToSessionId( 'foobar' ) );
                $this->assertSame( '4do8j7tfld1g8tte9jqp3csfgmulaun9',
@@ -198,7 +199,7 @@ class SessionProviderTest extends MediaWikiTestCase {
                        );
                }
 
-               \TestingAccessWrapper::newFromObject( $backend )->provider = $provider;
+               TestingAccessWrapper::newFromObject( $backend )->provider = $provider;
                $this->assertNull( $provider->getAllowedUserRights( $backend ) );
        }
 
index f6c88ec..adf0f5d 100644 (file)
@@ -5,6 +5,7 @@ namespace MediaWiki\Session;
 use Psr\Log\LogLevel;
 use MediaWikiTestCase;
 use User;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @group Session
@@ -14,16 +15,16 @@ class SessionTest extends MediaWikiTestCase {
 
        public function testConstructor() {
                $backend = TestUtils::getDummySessionBackend();
-               \TestingAccessWrapper::newFromObject( $backend )->requests = [ -1 => 'dummy' ];
-               \TestingAccessWrapper::newFromObject( $backend )->id = new SessionId( 'abc' );
+               TestingAccessWrapper::newFromObject( $backend )->requests = [ -1 => 'dummy' ];
+               TestingAccessWrapper::newFromObject( $backend )->id = new SessionId( 'abc' );
 
                $session = new Session( $backend, 42, new \TestLogger );
-               $priv = \TestingAccessWrapper::newFromObject( $session );
+               $priv = TestingAccessWrapper::newFromObject( $session );
                $this->assertSame( $backend, $priv->backend );
                $this->assertSame( 42, $priv->index );
 
                $request = new \FauxRequest();
-               $priv2 = \TestingAccessWrapper::newFromObject( $session->sessionWithRequest( $request ) );
+               $priv2 = TestingAccessWrapper::newFromObject( $session->sessionWithRequest( $request ) );
                $this->assertSame( $backend, $priv2->backend );
                $this->assertNotSame( $priv->index, $priv2->index );
                $this->assertSame( $request, $priv2->getRequest() );
@@ -98,7 +99,7 @@ class SessionTest extends MediaWikiTestCase {
 
        public function testDataAccess() {
                $session = TestUtils::getDummySession();
-               $backend = \TestingAccessWrapper::newFromObject( $session )->backend;
+               $backend = TestingAccessWrapper::newFromObject( $session )->backend;
 
                $this->assertEquals( 1, $session->get( 'foo' ) );
                $this->assertEquals( 'zero', $session->get( 0 ) );
@@ -158,7 +159,7 @@ class SessionTest extends MediaWikiTestCase {
        public function testArrayAccess() {
                $logger = new \TestLogger;
                $session = TestUtils::getDummySession( null, -1, $logger );
-               $backend = \TestingAccessWrapper::newFromObject( $session )->backend;
+               $backend = TestingAccessWrapper::newFromObject( $session )->backend;
 
                $this->assertEquals( 1, $session['foo'] );
                $this->assertEquals( 'zero', $session[0] );
@@ -222,7 +223,7 @@ class SessionTest extends MediaWikiTestCase {
 
        public function testClear() {
                $session = TestUtils::getDummySession();
-               $priv = \TestingAccessWrapper::newFromObject( $session );
+               $priv = TestingAccessWrapper::newFromObject( $session );
 
                $backend = $this->getMockBuilder( DummySessionBackend::class )
                        ->setMethods( [ 'canSetUser', 'setUser', 'save' ] )
@@ -269,10 +270,10 @@ class SessionTest extends MediaWikiTestCase {
 
        public function testTokens() {
                $session = TestUtils::getDummySession();
-               $priv = \TestingAccessWrapper::newFromObject( $session );
+               $priv = TestingAccessWrapper::newFromObject( $session );
                $backend = $priv->backend;
 
-               $token = \TestingAccessWrapper::newFromObject( $session->getToken() );
+               $token = TestingAccessWrapper::newFromObject( $session->getToken() );
                $this->assertArrayHasKey( 'wsTokenSecrets', $backend->data );
                $this->assertArrayHasKey( 'default', $backend->data['wsTokenSecrets'] );
                $secret = $backend->data['wsTokenSecrets']['default'];
@@ -280,13 +281,13 @@ class SessionTest extends MediaWikiTestCase {
                $this->assertSame( '', $token->salt );
                $this->assertTrue( $token->wasNew() );
 
-               $token = \TestingAccessWrapper::newFromObject( $session->getToken( 'foo' ) );
+               $token = TestingAccessWrapper::newFromObject( $session->getToken( 'foo' ) );
                $this->assertSame( $secret, $token->secret );
                $this->assertSame( 'foo', $token->salt );
                $this->assertFalse( $token->wasNew() );
 
                $backend->data['wsTokenSecrets']['secret'] = 'sekret';
-               $token = \TestingAccessWrapper::newFromObject(
+               $token = TestingAccessWrapper::newFromObject(
                        $session->getToken( [ 'bar', 'baz' ], 'secret' )
                );
                $this->assertSame( 'sekret', $token->secret );
@@ -358,7 +359,7 @@ class SessionTest extends MediaWikiTestCase {
 
                // Unserializable data
                $iv = \MWCryptRand::generate( 16, true );
-               list( $encKey, $hmacKey ) = \TestingAccessWrapper::newFromObject( $session )->getSecretKeys();
+               list( $encKey, $hmacKey ) = TestingAccessWrapper::newFromObject( $session )->getSecretKeys();
                $ciphertext = openssl_encrypt( 'foobar', 'aes-256-ctr', $encKey, OPENSSL_RAW_DATA, $iv );
                $sealed = base64_encode( $iv ) . '.' . base64_encode( $ciphertext );
                $hmac = hash_hmac( 'sha256', $sealed, $hmacKey, true );
index 759eca6..fd02a2e 100644 (file)
@@ -61,7 +61,7 @@ class TestBagOStuff extends \CachedBagOStuff {
                        $expiry = \RequestContext::getMain()->getConfig()->get( 'ObjectCacheSessionExpiry' );
                }
 
-               $this->set( wfMemcKey( 'MWSession', $id ), $blob, $expiry );
+               $this->set( $this->makeKey( 'MWSession', $id ), $blob, $expiry );
        }
 
        /**
@@ -69,7 +69,7 @@ class TestBagOStuff extends \CachedBagOStuff {
         * @return mixed
         */
        public function getSession( $id ) {
-               return $this->get( wfMemcKey( 'MWSession', $id ) );
+               return $this->get( $this->makeKey( 'MWSession', $id ) );
        }
 
        /**
@@ -77,14 +77,14 @@ class TestBagOStuff extends \CachedBagOStuff {
         * @return mixed
         */
        public function getSessionFromBackend( $id ) {
-               return $this->backend->get( wfMemcKey( 'MWSession', $id ) );
+               return $this->backend->get( $this->makeKey( 'MWSession', $id ) );
        }
 
        /**
         * @param string $id Session ID
         */
        public function deleteSession( $id ) {
-               $this->delete( wfMemcKey( 'MWSession', $id ) );
+               $this->delete( $this->makeKey( 'MWSession', $id ) );
        }
 
 }
index f00de55..af29d6b 100644 (file)
@@ -3,6 +3,7 @@
 namespace MediaWiki\Session;
 
 use Psr\Log\LoggerInterface;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * Utility functions for Session unit tests
@@ -70,7 +71,7 @@ class TestUtils {
                }
 
                $ret = $rc->newInstanceWithoutConstructor();
-               \TestingAccessWrapper::newFromObject( $ret )->logger = new \TestLogger;
+               TestingAccessWrapper::newFromObject( $ret )->logger = new \TestLogger;
                return $ret;
        }
 
@@ -95,7 +96,7 @@ class TestUtils {
                }
 
                $session = $rc->newInstanceWithoutConstructor();
-               $priv = \TestingAccessWrapper::newFromObject( $session );
+               $priv = TestingAccessWrapper::newFromObject( $session );
                $priv->backend = $backend;
                $priv->index = $index;
                $priv->logger = $logger ?: new \TestLogger;
index ca001f3..4797652 100644 (file)
@@ -3,6 +3,7 @@
 namespace MediaWiki\Session;
 
 use MediaWikiTestCase;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @group Session
@@ -27,7 +28,7 @@ class TokenTest extends MediaWikiTestCase {
        }
 
        public function testToStringAtTimestamp() {
-               $token = \TestingAccessWrapper::newFromObject( new Token( 'sekret', 'salty', false ) );
+               $token = TestingAccessWrapper::newFromObject( new Token( 'sekret', 'salty', false ) );
 
                $this->assertSame(
                        'd9ade0c7d4349e9df9094e61c33a5a0d5644fde2+\\',
@@ -53,7 +54,7 @@ class TokenTest extends MediaWikiTestCase {
        }
 
        public function testMatch() {
-               $token = \TestingAccessWrapper::newFromObject( new Token( 'sekret', 'salty', false ) );
+               $token = TestingAccessWrapper::newFromObject( new Token( 'sekret', 'salty', false ) );
 
                $test = $token->toStringAtTimestamp( time() - 10 );
                $this->assertTrue( $token->match( $test ) );
index 03e341a..b101857 100644 (file)
@@ -28,6 +28,20 @@ abstract class AbstractChangesListSpecialPageTestCase extends MediaWikiTestCase
                $wgGroupPermissions['patrollers'] = [
                        'patrol' => true,
                ];
+
+               // Deprecated
+               $this->setTemporaryHook(
+                       'ChangesListSpecialPageFilters',
+                       null
+               );
+
+               # setup the ChangesListSpecialPage (or subclass) object
+               $this->changesListSpecialPage = $this->getPage();
+               $context = $this->changesListSpecialPage->getContext();
+               $context = new DerivativeContext( $context );
+               $context->setUser( $this->getTestUser( [ 'patrollers' ] )->getUser() );
+               $this->changesListSpecialPage->setContext( $context );
+               $this->changesListSpecialPage->registerFilters();
        }
 
        protected function tearDown() {
@@ -44,13 +58,6 @@ abstract class AbstractChangesListSpecialPageTestCase extends MediaWikiTestCase
         * @dataProvider provideParseParameters
         */
        public function testParseParameters( $params, $expected ) {
-               $context = $this->changesListSpecialPage->getContext();
-               $context = new DerivativeContext( $context );
-               $context->setUser( $this->getTestUser( [ 'patrollers' ] )->getUser() );
-               $this->changesListSpecialPage->setContext( $context );
-
-               $this->changesListSpecialPage->registerFilters();
-
                $opts = new FormOptions();
                foreach ( $expected as $key => $value ) {
                        // Register it as null so sets aren't rejected.
@@ -73,4 +80,65 @@ abstract class AbstractChangesListSpecialPageTestCase extends MediaWikiTestCase
                        /** named= */ true
                );
        }
+
+       /**
+        * @dataProvider validateOptionsProvider
+        */
+       public function testValidateOptions( $optionsToSet, $expectedRedirect, $expectedRedirectOptions ) {
+               $redirectQuery = [];
+               $redirected = false;
+               $output = $this->getMockBuilder( OutputPage::class )
+                       ->disableProxyingToOriginalMethods()
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $output->method( 'redirect' )->willReturnCallback(
+                       function ( $url ) use ( &$redirectQuery, &$redirected ) {
+                               $urlParts = wfParseUrl( $url );
+                               $query = isset( $urlParts[ 'query' ] ) ? $urlParts[ 'query' ] : '';
+                               parse_str( $query, $redirectQuery );
+                               $redirected = true;
+                       }
+               );
+               $ctx = new RequestContext();
+
+               // Give users patrol permissions so we can test that.
+               $user = $this->getTestSysop()->getUser();
+               $ctx->setUser( $user );
+
+               // Disable this hook or it could break changeType
+               // depending on which other extensions are running.
+               $this->setTemporaryHook(
+                       'ChangesListSpecialPageStructuredFilters',
+                       null
+               );
+
+               $ctx->setOutput( $output );
+               $clsp = $this->changesListSpecialPage;
+               $clsp->setContext( $ctx );
+               $opts = $clsp->getDefaultOptions();
+
+               foreach ( $optionsToSet as $option => $value ) {
+                       $opts->setValue( $option, $value );
+               }
+
+               $clsp->validateOptions( $opts );
+
+               $this->assertEquals( $expectedRedirect, $redirected, 'redirection' );
+
+               if ( $expectedRedirect ) {
+                       if ( count( $expectedRedirectOptions ) > 0 ) {
+                               $expectedRedirectOptions += [
+                                       'title' => $clsp->getPageTitle()->getPrefixedText(),
+                               ];
+                       }
+
+                       $this->assertArrayEquals(
+                               $expectedRedirectOptions,
+                               $redirectQuery,
+                               /* $ordered= */ false,
+                               /* $named= */ true,
+                               'redirection query'
+                       );
+               }
+       }
 }
index e10a97f..e2209eb 100644 (file)
@@ -1,4 +1,7 @@
 <?php
+
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * Test class for ChangesListSpecialPage class
  *
  * @covers ChangesListSpecialPage
  */
 class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase {
-       protected function setUp() {
-               parent::setUp();
-
-               # setup the rc object
-               $this->changesListSpecialPage = $this->getPage();
-       }
-
        protected function getPage() {
-               return TestingAccessWrapper::newFromObject(
-                       $this->getMockForAbstractClass(
-                               'ChangesListSpecialPage',
+               $mock = $this->getMockBuilder( ChangesListSpecialPage::class )
+                       ->setConstructorArgs(
                                [
                                        'ChangesListSpecialPage',
                                        ''
                                ]
                        )
+                       ->setMethods( [ 'getPageTitle' ] )
+                       ->getMockForAbstractClass();
+
+               $mock->method( 'getPageTitle' )->willReturn(
+                       Title::makeTitle( NS_SPECIAL, 'ChangesListSpecialPage' )
+               );
+
+               $mock = TestingAccessWrapper::newFromObject(
+                       $mock
                );
+
+               return $mock;
        }
 
        /** helper to test SpecialRecentchanges::buildMainQueryConds() */
@@ -45,6 +51,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                }
 
                $this->changesListSpecialPage->setContext( $context );
+               $this->changesListSpecialPage->filterGroups = [];
                $formOptions = $this->changesListSpecialPage->setup( null );
 
                #  Filter out rc_timestamp conditions which depends on the test runtime
@@ -106,7 +113,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                        [
                                'namespace' => NS_MAIN,
                        ],
-                       "rc conditions with no options (aka default setting)"
+                       "rc conditions with one namespace"
                );
        }
 
@@ -123,50 +130,56 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                );
        }
 
-       /**
-        * T4429
-        * @dataProvider provideNamespacesAssociations
-        */
-       public function testRcNsFilterAssociation( $ns1, $ns2 ) {
+       public function testRcNsFilterMultiple() {
+               $this->assertConditions(
+                       [ # expected
+                               "rc_namespace IN ('1','2','3')",
+                       ],
+                       [
+                               'namespace' => '1;2;3',
+                       ],
+                       "rc conditions with multiple namespaces"
+               );
+       }
+
+       public function testRcNsFilterMultipleAssociated() {
                $this->assertConditions(
                        [ # expected
-                               "(rc_namespace = '$ns1' OR rc_namespace = '$ns2')",
+                               "rc_namespace IN ('0','1','4','5','6','7')",
                        ],
                        [
-                               'namespace' => $ns1,
+                               'namespace' => '1;4;7',
                                'associated' => 1,
                        ],
-                       "rc conditions with namespace inverted"
+                       "rc conditions with multiple namespaces and associated"
                );
        }
 
-       /**
-        * T4429
-        * @dataProvider provideNamespacesAssociations
-        */
-       public function testRcNsFilterAssociationWithInversion( $ns1, $ns2 ) {
+       public function testRcNsFilterMultipleAssociatedInvert() {
                $this->assertConditions(
                        [ # expected
-                               "(rc_namespace != '$ns1' AND rc_namespace != '$ns2')",
+                               "rc_namespace NOT IN ('2','3','8','9')",
                        ],
                        [
-                               'namespace' => $ns1,
+                               'namespace' => '2;3;9',
                                'associated' => 1,
-                               'invert' => 1,
+                               'invert' => 1
                        ],
-                       "rc conditions with namespace inverted"
+                       "rc conditions with multiple namespaces, associated and inverted"
                );
        }
 
-       /**
-        * Provides associated namespaces to test recent changes
-        * namespaces association filtering.
-        */
-       public static function provideNamespacesAssociations() {
-               return [ # (NS => Associated_NS)
-                       [ NS_MAIN, NS_TALK ],
-                       [ NS_TALK, NS_MAIN ],
-               ];
+       public function testRcNsFilterMultipleInvert() {
+               $this->assertConditions(
+                       [ # expected
+                               "rc_namespace NOT IN ('1','2','3')",
+                       ],
+                       [
+                               'namespace' => '1;2;3',
+                               'invert' => 1,
+                       ],
+                       "rc conditions with multiple namespaces inverted"
+               );
        }
 
        public function testRcHidemyselfFilter() {
@@ -221,22 +234,6 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                );
        }
 
-       public function testRcHidemyselfHidebyothersFilter() {
-               $user = $this->getTestUser()->getUser();
-               $this->assertConditions(
-                       [ # expected
-                               "rc_user_text != '{$user->getName()}'",
-                               "rc_user_text = '{$user->getName()}'",
-                       ],
-                       [
-                               'hidemyself' => 1,
-                               'hidebyothers' => 1,
-                       ],
-                       "rc conditions: hidemyself=1 hidebyothers=1 (logged in)",
-                       $user
-               );
-       }
-
        public function testRcHidepageedits() {
                $this->assertConditions(
                        [ # expected
@@ -363,22 +360,6 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                );
        }
 
-       public function testRcHidepatrolledHideunpatrolledFilter() {
-               $user = $this->getTestSysop()->getUser();
-               $this->assertConditions(
-                       [ # expected
-                               "rc_patrolled = 0",
-                               "rc_patrolled = 1",
-                       ],
-                       [
-                               'hidepatrolled' => 1,
-                               'hideunpatrolled' => 1,
-                       ],
-                       "rc conditions: hidepatrolled=1 hideunpatrolled=1",
-                       $user
-               );
-       }
-
        public function testHideCategorization() {
                $this->assertConditions(
                        [
@@ -393,6 +374,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
        }
 
        public function testFilterUserExpLevel() {
+               $now = time();
                $this->setMwGlobals( [
                        'wgLearnerEdits' => 10,
                        'wgLearnerMemberSince' => 4,
@@ -409,12 +391,12 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                        'Learner3' => [ 'edits' => 460, 'days' => 33 ],
                        'Learner4' => [ 'edits' => 525, 'days' => 28 ],
                        'Experienced1' => [ 'edits' => 538, 'days' => 33 ],
-               ] );
+               ], $now );
 
                // newcomers only
                $this->assertArrayEquals(
                        [ 'Newcomer1', 'Newcomer2', 'Newcomer3' ],
-                       $this->fetchUsers( [ 'newcomer' ] )
+                       $this->fetchUsers( [ 'newcomer' ], $now )
                );
 
                // newcomers and learner
@@ -423,7 +405,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                                'Newcomer1', 'Newcomer2', 'Newcomer3',
                                'Learner1', 'Learner2', 'Learner3', 'Learner4',
                        ],
-                       $this->fetchUsers( [ 'newcomer', 'learner' ] )
+                       $this->fetchUsers( [ 'newcomer', 'learner' ], $now )
                );
 
                // newcomers and more learner
@@ -432,19 +414,19 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                                'Newcomer1', 'Newcomer2', 'Newcomer3',
                                'Experienced1',
                        ],
-                       $this->fetchUsers( [ 'newcomer', 'experienced' ] )
+                       $this->fetchUsers( [ 'newcomer', 'experienced' ], $now )
                );
 
                // learner only
                $this->assertArrayEquals(
                        [ 'Learner1', 'Learner2', 'Learner3', 'Learner4' ],
-                       $this->fetchUsers( [ 'learner' ] )
+                       $this->fetchUsers( [ 'learner' ], $now )
                );
 
                // more experienced only
                $this->assertArrayEquals(
                        [ 'Experienced1' ],
-                       $this->fetchUsers( [ 'experienced' ] )
+                       $this->fetchUsers( [ 'experienced' ], $now )
                );
 
                // learner and more experienced
@@ -453,7 +435,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                                'Learner1', 'Learner2', 'Learner3', 'Learner4',
                                'Experienced1',
                        ],
-                       $this->fetchUsers( [ 'learner', 'experienced' ] ),
+                       $this->fetchUsers( [ 'learner', 'experienced' ], $now ),
                        'Learner and more experienced'
                );
 
@@ -466,25 +448,25 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                /*              'Learner1', 'Learner2', 'Learner3', 'Learner4', */
                /*              'Experienced1', */
                /*      ], */
-               /*      $this->fetchUsers( [ 'newcomer', 'learner', 'experienced' ] ) */
+               /*      $this->fetchUsers( [ 'newcomer', 'learner', 'experienced' ], $now ) */
                /* ); */
        }
 
-       private function createUsers( $specs ) {
+       private function createUsers( $specs, $now ) {
                $dbw = wfGetDB( DB_MASTER );
                foreach ( $specs as $name => $spec ) {
                        User::createNew(
                                $name,
                                [
                                        'editcount' => $spec['edits'],
-                                       'registration' => $dbw->timestamp( $this->daysAgo( $spec['days'] ) ),
+                                       'registration' => $dbw->timestamp( $this->daysAgo( $spec['days'], $now ) ),
                                        'email' => 'ut',
                                ]
                        );
                }
        }
 
-       private function fetchUsers( $filters ) {
+       private function fetchUsers( $filters, $now ) {
                $tables = [];
                $conds = [];
                $fields = [];
@@ -504,12 +486,13 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                                &$conds,
                                &$query_options,
                                &$join_conds,
-                               $filters
+                               $filters,
+                               $now
                        ]
                );
 
                $result = wfGetDB( DB_MASTER )->select(
-                       'user',
+                       $tables,
                        'user_name',
                        array_filter( $conds ) + [ 'user_email' => 'ut' ]
                );
@@ -522,9 +505,9 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                return $usernames;
        }
 
-       private function daysAgo( $days ) {
+       private function daysAgo( $days, $now ) {
                $secondsPerDay = 86400;
-               return time() - $days * $secondsPerDay;
+               return $now - $days * $secondsPerDay;
        }
 
        public function testGetFilterGroupDefinitionFromLegacyCustomFilters() {
@@ -565,6 +548,8 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
        }
 
        public function testGetStructuredFilterJsData() {
+               $this->changesListSpecialPage->filterGroups = [];
+
                $definition = [
                        [
                                'name' => 'gub-group',
@@ -801,4 +786,128 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                        ],
                ];
        }
+
+       public function provideGetFilterConflicts() {
+               return [
+                       [
+                               "parameters" => [],
+                               "expectedConflicts" => false,
+                       ],
+                       [
+                               "parameters" => [
+                                       "hideliu" => true,
+                                       "userExpLevel" => "newcomer",
+                               ],
+                               "expectedConflicts" => true,
+                       ],
+                       [
+                               "parameters" => [
+                                       "hideanons" => true,
+                                       "userExpLevel" => "learner",
+                               ],
+                               "expectedConflicts" => false,
+                       ],
+                       [
+                               "parameters" => [
+                                       "hidemajor" => true,
+                                       "hidenewpages" => true,
+                                       "hidepageedits" => true,
+                                       "hidecategorization" => false,
+                                       "hidelog" => true,
+                                       "hideWikidata" => true,
+                               ],
+                               "expectedConflicts" => true,
+                       ],
+                       [
+                               "parameters" => [
+                                       "hidemajor" => true,
+                                       "hidenewpages" => false,
+                                       "hidepageedits" => true,
+                                       "hidecategorization" => false,
+                                       "hidelog" => false,
+                                       "hideWikidata" => true,
+                               ],
+                               "expectedConflicts" => true,
+                       ],
+                       [
+                               "parameters" => [
+                                       "hidemajor" => true,
+                                       "hidenewpages" => false,
+                                       "hidepageedits" => false,
+                                       "hidecategorization" => true,
+                                       "hidelog" => true,
+                                       "hideWikidata" => true,
+                               ],
+                               "expectedConflicts" => false,
+                       ],
+                       [
+                               "parameters" => [
+                                       "hideminor" => true,
+                                       "hidenewpages" => true,
+                                       "hidepageedits" => true,
+                                       "hidecategorization" => false,
+                                       "hidelog" => true,
+                                       "hideWikidata" => true,
+                               ],
+                               "expectedConflicts" => false,
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideGetFilterConflicts
+        */
+       public function testGetFilterConflicts( $parameters, $expectedConflicts ) {
+               $context = new RequestContext;
+               $context->setRequest( new FauxRequest( $parameters ) );
+               $this->changesListSpecialPage->setContext( $context );
+
+               $this->assertEquals(
+                       $expectedConflicts,
+                       $this->changesListSpecialPage->areFiltersInConflict()
+               );
+       }
+
+       public function validateOptionsProvider() {
+               return [
+                       [
+                               [ 'hideanons' => 1, 'hideliu' => 1, 'hidebots' => 1 ],
+                               true,
+                               [ 'hideliu' => 1, 'hidebots' => 1, ],
+                       ],
+
+                       [
+                               [ 'hideanons' => 1, 'hideliu' => 1, 'hidebots' => 0 ],
+                               true,
+                               [ 'hidebots' => 0, 'hidehumans' => 1 ],
+                       ],
+
+                       [
+                               [ 'hidemyself' => 1, 'hidebyothers' => 1 ],
+                               true,
+                               [],
+                       ],
+                       [
+                               [ 'hidebots' => 1, 'hidehumans' => 1 ],
+                               true,
+                               [],
+                       ],
+                       [
+                               [ 'hidepatrolled' => 1, 'hideunpatrolled' => 1 ],
+                               true,
+                               [],
+                       ],
+                       [
+                               [ 'hideminor' => 1, 'hidemajor' => 1 ],
+                               true,
+                               [],
+                       ],
+                       [
+                               // changeType
+                               [ 'hidepageedits' => 1, 'hidenewpages' => 1, 'hidecategorization' => 1, 'hidelog' => 1, ],
+                               true,
+                               [],
+                       ],
+               ];
+       }
 }
diff --git a/tests/phpunit/includes/specials/ContribsPagerTest.php b/tests/phpunit/includes/specials/ContribsPagerTest.php
new file mode 100644 (file)
index 0000000..d7fc13d
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * @group Database
+ */
+class ContribsPagerTest extends \PHPUnit_Framework_TestCase {
+       /**
+        * @dataProvider dateFilterOptionProcessingProvider
+        * @param array $inputOpts Input options
+        * @param array $expectedOpts Expected options
+        */
+       public function testDateFilterOptionProcessing( $inputOpts, $expectedOpts ) {
+               $this->assertArraySubset( $expectedOpts, ContribsPager::processDateFilter( $inputOpts ) );
+       }
+
+       public static function dateFilterOptionProcessingProvider() {
+               return [
+                       [ [ 'start' => '2016-05-01',
+                               'end' => '2016-06-01',
+                               'year' => null,
+                               'month' => null ],
+                         [ 'start' => '2016-05-01',
+                               'end' => '2016-06-01' ] ],
+                       [ [ 'start' => '2016-05-01',
+                               'end' => '2016-06-01',
+                               'year' => '',
+                               'month' => '' ],
+                         [ 'start' => '2016-05-01',
+                               'end' => '2016-06-01' ] ],
+                       [ [ 'start' => '2016-05-01',
+                               'end' => '2016-06-01',
+                               'year' => '2012',
+                               'month' => '5' ],
+                         [ 'start' => '',
+                               'end' => '2012-05-31' ] ],
+                       [ [ 'start' => '',
+                               'end' => '',
+                               'year' => '2012',
+                               'month' => '5' ],
+                         [ 'start' => '',
+                               'end' => '2012-05-31' ] ],
+                       [ [ 'start' => '',
+                               'end' => '',
+                               'year' => '2012',
+                               'month' => '' ],
+                         [ 'start' => '',
+                               'end' => '2012-12-31' ] ],
+               ];
+       }
+}
diff --git a/tests/phpunit/includes/specials/SpecialPageDataTest.php b/tests/phpunit/includes/specials/SpecialPageDataTest.php
new file mode 100644 (file)
index 0000000..c93fe47
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+
+/**
+ * @covers SpecialPageData
+ *
+ * @group Database
+ *
+ * @group SpecialPage
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ */
+class SpecialPageDataTest extends SpecialPageTestBase {
+
+       protected function newSpecialPage() {
+               $page = new SpecialPageData();
+
+               // why is this needed?
+               $page->getContext()->setOutput( new OutputPage( $page->getContext() ) );
+
+               $page->setRequestHandler( new PageDataRequestHandler() );
+
+               return $page;
+       }
+
+       public function provideExecute() {
+               $cases = [];
+
+               $cases['Empty request'] = [ '', [], [], '!!', 200 ];
+
+               $cases['Only title specified'] = [
+                       '',
+                       [ 'target' => 'Helsinki' ],
+                       [],
+                       '!!',
+                       303,
+                       [ 'Location' => '!.+!' ]
+               ];
+
+               $cases['Accept only HTML'] = [
+                       '',
+                       [ 'target' => 'Helsinki' ],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki$!' ]
+               ];
+
+               $cases['Accept only HTML with revid'] = [
+                       '',
+                       [
+                               'target' => 'Helsinki',
+                               'revision' => '4242',
+                       ],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki(\?|&)oldid=4242!' ]
+               ];
+
+               $cases['Nothing specified'] = [
+                       'main/Helsinki',
+                       [],
+                       [],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki&action=raw!' ]
+               ];
+
+               $cases['Nothing specified'] = [
+                       '/Helsinki',
+                       [],
+                       [],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki&action=raw!' ]
+               ];
+
+               $cases['Invalid Accept header'] = [
+                       'main/Helsinki',
+                       [],
+                       [ 'Accept' => 'text/foobar' ],
+                       '!!',
+                       406,
+                       [],
+               ];
+
+               return $cases;
+       }
+
+       /**
+        * @dataProvider provideExecute
+        *
+        * @param string $subpage The subpage to request (or '')
+        * @param array  $params  Request parameters
+        * @param array  $headers  Request headers
+        * @param string $expRegExp   Regex to match the output against.
+        * @param int    $expCode     Expected HTTP status code
+        * @param array  $expHeaders  Expected HTTP response headers
+        */
+       public function testExecute(
+               $subpage,
+               array $params,
+               array $headers,
+               $expRegExp,
+               $expCode = 200,
+               array $expHeaders = []
+       ) {
+               $request = new FauxRequest( $params );
+               $request->response()->header( 'Status: 200 OK', true, 200 ); // init/reset
+
+               foreach ( $headers as $name => $value ) {
+                       $request->setHeader( strtoupper( $name ), $value );
+               }
+
+               try {
+                       /* @var FauxResponse $response */
+                       list( $output, $response ) = $this->executeSpecialPage( $subpage, $request );
+
+                       $this->assertEquals( $expCode, $response->getStatusCode(), "status code" );
+                       $this->assertRegExp( $expRegExp, $output, "output" );
+
+                       foreach ( $expHeaders as $name => $exp ) {
+                               $value = $response->getHeader( $name );
+                               $this->assertNotNull( $value, "header: $name" );
+                               $this->assertInternalType( 'string', $value, "header: $name" );
+                               $this->assertRegExp( $exp, $value, "header: $name" );
+                       }
+               } catch ( HttpError $e ) {
+                       $this->assertEquals( $expCode, $e->getStatusCode(), "status code" );
+                       $this->assertRegExp( $expRegExp, $e->getHTML(), "error output" );
+               }
+       }
+
+       public function testSpecialPageWithoutParameters() {
+               $this->setContentLang( Language::factory( 'en' ) );
+               $request = new FauxRequest();
+               $request->response()->header( 'Status: 200 OK', true, 200 ); // init/reset
+
+               list( $output, ) = $this->executeSpecialPage( '', $request );
+
+               $this->assertContains(
+                       "Content negotiation applies based on you client's Accept header.",
+                       $output,
+                       "output"
+               );
+       }
+
+}
index 011d8a0..85becff 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * Test class for SpecialRecentchanges class
  *
  * @covers SpecialRecentChanges
  */
 class SpecialRecentchangesTest extends AbstractChangesListSpecialPageTestCase {
-       protected function setUp() {
-               parent::setUp();
-
-               # setup the CLSP object
-               $this->changesListSpecialPage = TestingAccessWrapper::newFromObject(
+       protected function getPage() {
+               return TestingAccessWrapper::newFromObject(
                        new SpecialRecentchanges
                );
        }
 
+       // Below providers should only be for features specific to
+       // RecentChanges.  Otherwise, it should go in ChangesListSpecialPageTest
+
        public function provideParseParameters() {
                return [
                        [ 'limit=123', [ 'limit' => '123' ] ],
@@ -25,9 +27,24 @@ class SpecialRecentchangesTest extends AbstractChangesListSpecialPageTestCase {
 
                        [ 'days=3', [ 'days' => '3' ] ],
 
-                       [ 'namespace=5', [ 'namespace' => 5 ] ],
+                       [ 'namespace=5', [ 'namespace' => '5' ] ],
+
+                       [ 'namespace=5|3', [ 'namespace' => '5|3' ] ],
 
                        [ 'tagfilter=foo', [ 'tagfilter' => 'foo' ] ],
+
+                       [ 'tagfilter=foo;bar', [ 'tagfilter' => 'foo;bar' ] ],
+               ];
+       }
+
+       public function validateOptionsProvider() {
+               return [
+                       [
+                               // hidebots=1 is default for Special:RecentChanges
+                               [ 'hideanons' => 1, 'hideliu' => 1 ],
+                               true,
+                               [ 'hideliu' => 1 ],
+                       ],
                ];
        }
 }
index 66d35a5..b0490ec 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @author Addshore
  *
@@ -41,7 +43,6 @@ class SpecialWatchlistTest extends SpecialPageTestBase {
                                'watchlistreloadautomatically' => 0,
                        ]
                );
-
        }
 
        /**
index 594540f..09cf350 100644 (file)
@@ -2,6 +2,7 @@
 
 use MediaWiki\Session\SessionManager;
 use Wikimedia\ScopedCallback;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @covers BotPassword
@@ -381,6 +382,8 @@ class BotPasswordTest extends MediaWikiTestCase {
                }
 
                $token = $bp->getToken();
+               $this->assertEquals( 42, $bp->getUserCentralId() );
+               $this->assertEquals( 'TestSave', $bp->getAppId() );
                $this->assertFalse( $bp->save( 'insert' ) );
                $this->assertTrue( $bp->save( 'update' ) );
                $this->assertNotEquals( $token, $bp->getToken() );
index feac641..789cf08 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * @covers CentralIdLookup
  * @group Database
index 3363bca..53f02df 100644 (file)
@@ -10,8 +10,7 @@ class PasswordResetTest extends PHPUnit_Framework_TestCase {
         * @dataProvider provideIsAllowed
         */
        public function testIsAllowed( $passwordResetRoutes, $enableEmail,
-               $allowsAuthenticationDataChange, $canEditPrivate, $canSeePassword,
-               $userIsBlocked, $isAllowed
+               $allowsAuthenticationDataChange, $canEditPrivate, $block, $globalBlock, $isAllowed
        ) {
                $config = new HashConfig( [
                        'PasswordResetRoutes' => $passwordResetRoutes,
@@ -25,13 +24,12 @@ class PasswordResetTest extends PHPUnit_Framework_TestCase {
 
                $user = $this->getMockBuilder( User::class )->getMock();
                $user->expects( $this->any() )->method( 'getName' )->willReturn( 'Foo' );
-               $user->expects( $this->any() )->method( 'isBlocked' )->willReturn( $userIsBlocked );
+               $user->expects( $this->any() )->method( 'getBlock' )->willReturn( $block );
+               $user->expects( $this->any() )->method( 'getGlobalBlock' )->willReturn( $globalBlock );
                $user->expects( $this->any() )->method( 'isAllowed' )
-                       ->will( $this->returnCallback( function ( $perm ) use ( $canEditPrivate, $canSeePassword ) {
+                       ->will( $this->returnCallback( function ( $perm ) use ( $canEditPrivate ) {
                                if ( $perm === 'editmyprivateinfo' ) {
                                        return $canEditPrivate;
-                               } elseif ( $perm === 'passwordreset' ) {
-                                       return $canSeePassword;
                                } else {
                                        $this->fail( 'Unexpected permission check' );
                                }
@@ -44,67 +42,103 @@ class PasswordResetTest extends PHPUnit_Framework_TestCase {
 
        public function provideIsAllowed() {
                return [
-                       [
+                       'no routes' => [
                                'passwordResetRoutes' => [],
                                'enableEmail' => true,
                                'allowsAuthenticationDataChange' => true,
                                'canEditPrivate' => true,
-                               'canSeePassword' => true,
-                               'userIsBlocked' => false,
+                               'block' => null,
+                               'globalBlock' => null,
                                'isAllowed' => false,
                        ],
-                       [
+                       'email disabled' => [
                                'passwordResetRoutes' => [ 'username' => true ],
                                'enableEmail' => false,
                                'allowsAuthenticationDataChange' => true,
                                'canEditPrivate' => true,
-                               'canSeePassword' => true,
-                               'userIsBlocked' => false,
+                               'block' => null,
+                               'globalBlock' => null,
                                'isAllowed' => false,
                        ],
-                       [
+                       'auth data change disabled' => [
                                'passwordResetRoutes' => [ 'username' => true ],
                                'enableEmail' => true,
                                'allowsAuthenticationDataChange' => false,
                                'canEditPrivate' => true,
-                               'canSeePassword' => true,
-                               'userIsBlocked' => false,
+                               'block' => null,
+                               'globalBlock' => null,
                                'isAllowed' => false,
                        ],
-                       [
+                       'cannot edit private data' => [
                                'passwordResetRoutes' => [ 'username' => true ],
                                'enableEmail' => true,
                                'allowsAuthenticationDataChange' => true,
                                'canEditPrivate' => false,
-                               'canSeePassword' => true,
-                               'userIsBlocked' => false,
+                               'block' => null,
+                               'globalBlock' => null,
                                'isAllowed' => false,
                        ],
-                       [
+                       'blocked with account creation disabled' => [
                                'passwordResetRoutes' => [ 'username' => true ],
                                'enableEmail' => true,
                                'allowsAuthenticationDataChange' => true,
                                'canEditPrivate' => true,
-                               'canSeePassword' => true,
-                               'userIsBlocked' => true,
+                               'block' => new Block( [ 'createAccount' => true ] ),
+                               'globalBlock' => null,
                                'isAllowed' => false,
                        ],
-                       [
+                       'blocked w/o account creation disabled' => [
                                'passwordResetRoutes' => [ 'username' => true ],
                                'enableEmail' => true,
                                'allowsAuthenticationDataChange' => true,
                                'canEditPrivate' => true,
-                               'canSeePassword' => false,
-                               'userIsBlocked' => false,
+                               'block' => new Block( [] ),
+                               'globalBlock' => null,
                                'isAllowed' => true,
                        ],
-                       [
+                       'using blocked proxy' => [
                                'passwordResetRoutes' => [ 'username' => true ],
                                'enableEmail' => true,
                                'allowsAuthenticationDataChange' => true,
                                'canEditPrivate' => true,
-                               'canSeePassword' => true,
-                               'userIsBlocked' => false,
+                               'block' => new Block( [ 'systemBlock' => 'proxy' ] ),
+                               'globalBlock' => null,
+                               'isAllowed' => false,
+                       ],
+                       'globally blocked with account creation disabled' => [
+                               'passwordResetRoutes' => [ 'username' => true ],
+                               'enableEmail' => true,
+                               'allowsAuthenticationDataChange' => true,
+                               'canEditPrivate' => true,
+                               'block' => null,
+                               'globalBlock' => new Block( [ 'systemBlock' => 'global-block', 'createAccount' => true ] ),
+                               'isAllowed' => false,
+                       ],
+                       'globally blocked with account creation not disabled' => [
+                               'passwordResetRoutes' => [ 'username' => true ],
+                               'enableEmail' => true,
+                               'allowsAuthenticationDataChange' => true,
+                               'canEditPrivate' => true,
+                               'block' => null,
+                               'globalBlock' => new Block( [ 'systemBlock' => 'global-block', 'createAccount' => false ] ),
+                               'isAllowed' => true,
+                       ],
+                       'blocked via wgSoftBlockRanges' => [
+                               'passwordResetRoutes' => [ 'username' => true ],
+                               'enableEmail' => true,
+                               'allowsAuthenticationDataChange' => true,
+                               'canEditPrivate' => true,
+                               'block' => new Block( [ 'systemBlock' => 'wgSoftBlockRanges', 'anonOnly' => true ] ),
+                               'globalBlock' => null,
+                               'isAllowed' => true,
+                       ],
+                       'all OK' => [
+                               'passwordResetRoutes' => [ 'username' => true ],
+                               'enableEmail' => true,
+                               'allowsAuthenticationDataChange' => true,
+                               'canEditPrivate' => true,
+                               'block' => null,
+                               'globalBlock' => null,
                                'isAllowed' => true,
                        ],
                ];
index a297f29..f95e387 100644 (file)
@@ -50,8 +50,7 @@ class UserGroupMembershipTest extends MediaWikiTestCase {
         * @covers UserGroupMembership::delete
         */
        public function testAddAndRemoveGroups() {
-               $user = new User;
-               $user->addToDatabase();
+               $user = $this->getMutableTestUser()->getUser();
 
                // basic tests
                $ugm = new UserGroupMembership( $user->getId(), 'unittesters' );
index fea4a44..b58d71c 100644 (file)
@@ -4,6 +4,7 @@ define( 'NS_UNITTEST', 5600 );
 define( 'NS_UNITTEST_TALK', 5601 );
 
 use MediaWiki\MediaWikiServices;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * @group Database
@@ -24,9 +25,7 @@ class UserTest extends MediaWikiTestCase {
 
                $this->setUpPermissionGlobals();
 
-               $this->user = new User;
-               $this->user->addToDatabase();
-               $this->user->addGroup( 'unittesters' );
+               $this->user = $this->getTestUser( [ 'unittesters' ] )->getUser();
        }
 
        private function setUpPermissionGlobals() {
@@ -99,10 +98,7 @@ class UserTest extends MediaWikiTestCase {
         * @covers User::getRights
         */
        public function testUserGetRightsHooks() {
-               $user = new User;
-               $user->addToDatabase();
-               $user->addGroup( 'unittesters' );
-               $user->addGroup( 'testwriters' );
+               $user = $this->getTestUser( [ 'unittesters', 'testwriters' ] )->getUser();
                $userWrapper = TestingAccessWrapper::newFromObject( $user );
 
                $rights = $user->getRights();
@@ -933,4 +929,50 @@ class UserTest extends MediaWikiTestCase {
 
                $this->assertFalse( $user->getExperienceLevel() );
        }
+
+       public static function provideIsLocallBlockedProxy() {
+               return [
+                       [ '1.2.3.4', '1.2.3.4' ],
+                       [ '1.2.3.4', '1.2.3.0/16' ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideIsLocallBlockedProxy
+        * @covers User::isLocallyBlockedProxy
+        */
+       public function testIsLocallyBlockedProxy( $ip, $blockListEntry ) {
+               $this->setMwGlobals(
+                       'wgProxyList', []
+               );
+               $this->assertFalse( User::isLocallyBlockedProxy( $ip ) );
+
+               $this->setMwGlobals(
+                       'wgProxyList',
+                       [
+                               $blockListEntry
+                       ]
+               );
+               $this->assertTrue( User::isLocallyBlockedProxy( $ip ) );
+
+               $this->setMwGlobals(
+                       'wgProxyList',
+                       [
+                               'test' => $blockListEntry
+                       ]
+               );
+               $this->assertTrue( User::isLocallyBlockedProxy( $ip ) );
+
+               $this->hideDeprecated(
+                       'IP addresses in the keys of $wgProxyList (found the following IP ' .
+                       'addresses in keys: ' . $blockListEntry . ', please move them to values)'
+               );
+               $this->setMwGlobals(
+                       'wgProxyList',
+                       [
+                               $blockListEntry => 'test'
+                       ]
+               );
+               $this->assertTrue( User::isLocallyBlockedProxy( $ip ) );
+       }
 }
index 22fd7b8..a474f20 100644 (file)
@@ -1739,9 +1739,8 @@ class LanguageTest extends LanguageClassesTestCase {
                        [ 'zh', 'zh', 'zh is defined as the parent language of zh, '
                                . 'because zh converter can convert zh-cn to zh' ],
                        [ 'zh-invalid', null, 'do not be fooled by arbitrarily composed language codes' ],
-                       [ 'en-gb', null, 'en does not have converter' ],
-                       [ 'en', null, 'en does not have converter. Although FakeConverter '
-                                       . 'handles en -> en conversion but it is useless' ],
+                       [ 'de-formal', null, 'de does not have converter' ],
+                       [ 'de', null, 'de does not have converter' ],
                ];
        }
 
index d460401..ea5ca8d 100644 (file)
@@ -103,7 +103,7 @@ class TextPassDumperDatabaseTest extends DumpTestCase {
                // increasing
                $this->assertEquals(
                        [ $this->pageId2, $this->pageId3, $this->pageId4 ],
-                       [ $this->pageId1 + 1, $this->pageId2 + 1, $this->pageId3 + 1 ],
+                       [ $this->pageId1 + 1, $this->pageId1 + 2, $this->pageId1 + 3 ],
                        "Page ids increasing without holes" );
        }
 
index aeb9f0f..79232ad 100644 (file)
@@ -8,4 +8,8 @@ class MockChangesListFilter extends ChangesListFilter {
                        'instead of testing the abstract class'
                );
        }
+
+       public function isSelected( FormOptions $opts ) {
+               return false;
+       }
 }
index 8ee45a8..047c03a 100644 (file)
@@ -22,8 +22,8 @@
  */
 
 /**
- * Class representing an in memory fake file.
- * This is intended for unit testing / developement when you do not want
+ * Class representing an in-memory fake file.
+ * This is intended for unit testing / development when you do not want
  * to hit the filesystem.
  *
  * It reimplements abstract methods with some hardcoded values. Might
index bc5a6bd..83585af 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * Checks that all API modules, core and extensions, have documentation i18n messages
  *
@@ -77,7 +79,8 @@ class ApiDocumentationTest extends MediaWikiTestCase {
                }
 
                // Module description messages.
-               $this->checkMessage( $module->getDescriptionMessage(), 'Module description' );
+               $this->checkMessage( $module->getSummaryMessage(), 'Module summary' );
+               $this->checkMessage( $module->getExtendedDescription(), 'Module help top text' );
 
                // Parameters. Lots of messages in here.
                $params = $module->getFinalParams( ApiBase::GET_VALUES_FOR_HELP );
index 30bae78..c8bcd60 100644 (file)
@@ -1,4 +1,7 @@
 <?php
+
+use Wikimedia\TestingAccessWrapper;
+
 /**
  * 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 53362c4..ee3cd5b 100644 (file)
@@ -94,6 +94,7 @@ return [
                        'tests/qunit/suites/resources/mediawiki.special/mediawiki.special.recentchanges.test.js',
                        'tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js',
                        'tests/qunit/suites/resources/mediawiki.rcfilters/dm.FilterItem.test.js',
+                       'tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.cookie.test.js',
index 55bd276..39baf17 100644 (file)
        ( function () {
                var orgModule = QUnit.module;
 
-               QUnit.module = function ( name, localEnv ) {
+               QUnit.module = function ( name, localEnv, executeNow ) {
+                       if ( arguments.length === 2 && typeof localEnv === 'function' ) {
+                               executeNow = localEnv;
+                               localEnv = undefined;
+                       }
+
                        localEnv = localEnv || {};
                        orgModule( name, {
                                setup: function () {
                                                localEnv.teardown.call( this );
                                        }
 
-                                       this.sandbox.verifyAndRestore();
+                                       if ( this.sandbox ) {
+                                               this.sandbox.verifyAndRestore();
+                                       }
                                }
-                       } );
+                       }, executeNow );
                };
        }() );
 
        ( function () {
                var orgModule = QUnit.module;
 
-               QUnit.module = function ( name, localEnv ) {
+               QUnit.module = function ( name, localEnv, executeNow ) {
                        var fixture;
+
+                       if ( arguments.length === 2 && typeof localEnv === 'function' ) {
+                               executeNow = localEnv;
+                               localEnv = undefined;
+                       }
+
                        localEnv = localEnv || {};
                        orgModule( name, {
                                setup: function () {
 
                                        fixture.parentNode.removeChild( fixture );
                                }
-                       } );
+                       }, executeNow );
                };
        }() );
 
                                                        );
                                                } );
                                                // Force animations to stop to give the next test a clean start
+                                               $.timers = [];
                                                $.fx.stop();
 
                                                throw new Error( 'Unfinished animations: ' + timers );
index c7b7cc0..5c1be67 100644 (file)
                $input: $( '<input>' ).attr( 'type', 'text' )
                        .byteLimit( 12 ),
                sample: mbSample,
-               expected: '1234567890' + '12'
+               expected: '123456789012'
        } );
 
        byteLimitTest( {
index 4e77d72..53d29cf 100644 (file)
                $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
        } );
 
-       QUnit.test( 'clicks on links inside toggler pass through (options.linksPassthru)', function ( assert ) {
+       QUnit.test( 'clicks on links inside toggler pass through', function ( assert ) {
                var $collapsible = prepareCollapsible(
                                '<div class="mw-collapsible">' +
                                        '<div class="mw-collapsible-toggle">' +
                assert.assertTrue( $content.is( ':hidden' ), 'click event on non-link inside toggle toggles content' );
        } );
 
+       QUnit.test( 'click on non-link inside toggler counts as trigger', function ( assert ) {
+               var $collapsible = prepareCollapsible(
+                               '<div class="mw-collapsible">' +
+                                       '<div class="mw-collapsible-toggle">' +
+                                               'Toggle <a>toggle</a> toggle <b>toggle</b>' +
+                                       '</div>' +
+                                       '<div class="mw-collapsible-content">' + loremIpsum + '</div>' +
+                               '</div>',
+                               { instantHide: true }
+                       ),
+                       $content = $collapsible.find( '.mw-collapsible-content' );
+
+               $collapsible.find( '.mw-collapsible-toggle a' ).trigger( 'click' );
+               assert.assertTrue( $content.is( ':hidden' ), 'click event on link (with no href) inside toggle toggles content' );
+       } );
+
        QUnit.test( 'collapse/expand text (data-collapsetext, data-expandtext)', function ( assert ) {
                var $collapsible = prepareCollapsible(
                                '<div class="mw-collapsible" data-collapsetext="Collapse me!" data-expandtext="Expand me!">' +
                                        loremIpsum +
                                '</div>'
                        ),
-                       $toggleLink = $collapsible.find( '.mw-collapsible-toggle a' );
+                       $toggleText = $collapsible.find( '.mw-collapsible-text' );
 
-               assert.equal( $toggleLink.text(), 'Collapse me!', 'data-collapsetext is respected' );
+               assert.equal( $toggleText.text(), 'Collapse me!', 'data-collapsetext is respected' );
 
                $collapsible.on( 'afterCollapse.mw-collapsible', function () {
-                       assert.equal( $toggleLink.text(), 'Expand me!', 'data-expandtext is respected' );
+                       assert.equal( $toggleText.text(), 'Expand me!', 'data-expandtext is respected' );
                } );
 
                $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
                                '<div class="mw-collapsible">' + loremIpsum + '</div>',
                                { collapseText: 'Collapse me!', expandText: 'Expand me!' }
                        ),
-                       $toggleLink = $collapsible.find( '.mw-collapsible-toggle a' );
+                       $toggleText = $collapsible.find( '.mw-collapsible-text' );
+
+               assert.equal( $toggleText.text(), 'Collapse me!', 'options.collapseText is respected' );
+
+               $collapsible.on( 'afterCollapse.mw-collapsible', function () {
+                       assert.equal( $toggleText.text(), 'Expand me!', 'options.expandText is respected' );
+               } );
+
+               $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
+       } );
+
+       QUnit.test( 'predefined toggle button and text (.mw-collapsible-toggle/.mw-collapsible-text)', function ( assert ) {
+               var $collapsible = prepareCollapsible(
+                               '<div class="mw-collapsible">' +
+                                       '<div class="mw-collapsible-toggle">' +
+                                               '<span>[</span><span class="mw-collapsible-text">Toggle</span><span>]</span>' +
+                                       '</div>' +
+                                       '<div class="mw-collapsible-content">' + loremIpsum + '</div>' +
+                               '</div>',
+                               { collapseText: 'Hide', expandText: 'Show' }
+                       ),
+                       $toggleText = $collapsible.find( '.mw-collapsible-text' );
 
-               assert.equal( $toggleLink.text(), 'Collapse me!', 'options.collapseText is respected' );
+               assert.equal( $toggleText.text(), 'Toggle', 'predefined text remains' );
 
                $collapsible.on( 'afterCollapse.mw-collapsible', function () {
-                       assert.equal( $toggleLink.text(), 'Expand me!', 'options.expandText is respected' );
+                       assert.equal( $toggleText.text(), 'Show', 'predefined text is toggled' );
+
+                       $collapsible.on( 'afterExpand.mw-collapsible', function () {
+                               assert.equal( $toggleText.text(), 'Hide', 'predefined text is toggled back' );
+                       } );
+
+                       $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
                } );
 
                $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
diff --git a/tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js b/tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js
new file mode 100644 (file)
index 0000000..edaaa39
--- /dev/null
@@ -0,0 +1,262 @@
+/* eslint-disable camelcase */
+/* eslint no-underscore-dangle: "off" */
+( function ( mw, $ ) {
+       var mockFilterStructure = [ {
+                       name: 'group1',
+                       title: 'Group 1',
+                       type: 'send_unselected_if_any',
+                       filters: [
+                               { name: 'filter1', default: true },
+                               { name: 'filter2' }
+                       ]
+               }, {
+                       name: 'group2',
+                       title: 'Group 2',
+                       type: 'send_unselected_if_any',
+                       filters: [
+                               { name: 'filter3' },
+                               { name: 'filter4', default: true }
+                       ]
+               }, {
+                       name: 'group3',
+                       title: 'Group 3',
+                       type: 'string_options',
+                       filters: [
+                               { name: 'filter5' },
+                               { name: 'filter6' }
+                       ]
+               } ],
+               minimalDefaultParams = {
+                       filter1: '1',
+                       filter4: '1'
+               };
+
+       QUnit.module( 'mediawiki.rcfilters - UriProcessor' );
+
+       QUnit.test( 'getVersion', function ( assert ) {
+               var uriProcessor = new mw.rcfilters.UriProcessor( new mw.rcfilters.dm.FiltersViewModel() );
+
+               assert.ok(
+                       uriProcessor.getVersion( { param1: 'foo', urlversion: '2' } ),
+                       2,
+                       'Retrieving the version from the URI query'
+               );
+
+               assert.ok(
+                       uriProcessor.getVersion( { param1: 'foo' } ),
+                       1,
+                       'Getting version 1 if no version is specified'
+               );
+       } );
+
+       QUnit.test( 'updateModelBasedOnQuery & getUriParametersFromModel', function ( assert ) {
+               var uriProcessor,
+                       filtersModel = new mw.rcfilters.dm.FiltersViewModel(),
+                       baseParams = {
+                               filter1: '0',
+                               filter2: '0',
+                               filter3: '0',
+                               filter4: '0',
+                               group3: '',
+                               highlight: '0',
+                               invert: '0',
+                               group1__filter1_color: null,
+                               group1__filter2_color: null,
+                               group2__filter3_color: null,
+                               group2__filter4_color: null,
+                               group3__filter5_color: null,
+                               group3__filter6_color: null
+                       };
+
+               filtersModel.initializeFilters( mockFilterStructure );
+               uriProcessor = new mw.rcfilters.UriProcessor( filtersModel );
+
+               uriProcessor.updateModelBasedOnQuery( {} );
+               assert.deepEqual(
+                       uriProcessor.getUriParametersFromModel(),
+                       $.extend( true, {}, baseParams, minimalDefaultParams ),
+                       'Version 1: Empty url query sets model to defaults'
+               );
+
+               uriProcessor.updateModelBasedOnQuery( { urlversion: '2' } );
+               assert.deepEqual(
+                       uriProcessor.getUriParametersFromModel(),
+                       baseParams,
+                       'Version 2: Empty url query sets model to all-false'
+               );
+
+               uriProcessor.updateModelBasedOnQuery( { filter1: '1', urlversion: '2' } );
+               assert.deepEqual(
+                       uriProcessor.getUriParametersFromModel(),
+                       $.extend( true, {}, baseParams, { filter1: '1' } ),
+                       'Parameters in Uri query set parameter value in the model'
+               );
+
+               uriProcessor.updateModelBasedOnQuery( { highlight: '1', group1__filter1_color: 'c1', urlversion: '2' } );
+               assert.deepEqual(
+                       uriProcessor.getUriParametersFromModel(),
+                       $.extend( true, {}, baseParams, {
+                               highlight: '1',
+                               group1__filter1_color: 'c1'
+                       } ),
+                       'Highlight parameters in Uri query set highlight state in the model'
+               );
+
+               uriProcessor.updateModelBasedOnQuery( { invert: '1', urlversion: '2' } );
+               assert.deepEqual(
+                       uriProcessor.getUriParametersFromModel(),
+                       $.extend( true, {}, baseParams, {
+                               invert: '1'
+                       } ),
+                       'Invert parameter in Uri query set invert state in the model'
+               );
+       } );
+
+       QUnit.test( 'isNewState', function ( assert ) {
+               var uriProcessor,
+                       filtersModel = new mw.rcfilters.dm.FiltersViewModel(),
+                       cases = [
+                               {
+                                       states: {
+                                               curr: {},
+                                               new: {}
+                                       },
+                                       result: false,
+                                       message: 'Empty objects are not new state.'
+                               },
+                               {
+                                       states: {
+                                               curr: { filter1: '1' },
+                                               new: { filter1: '0' }
+                                       },
+                                       result: true,
+                                       message: 'Nulified parameter is a new state'
+                               },
+                               {
+                                       states: {
+                                               curr: { filter1: '1' },
+                                               new: { filter1: '1', filter2: '1' }
+                                       },
+                                       result: true,
+                                       message: 'Added parameters are a new state'
+                               },
+                               {
+                                       states: {
+                                               curr: { filter1: '1' },
+                                               new: { filter1: '1', filter2: '0' }
+                                       },
+                                       result: false,
+                                       message: 'Added null parameters are not a new state (normalizing equals old state)'
+                               },
+                               {
+                                       states: {
+                                               curr: { filter1: '1' },
+                                               new: { filter1: '1', foo: 'bar' }
+                                       },
+                                       result: true,
+                                       message: 'Added unrecognized parameters are a new state'
+                               },
+                               {
+                                       states: {
+                                               curr: { filter1: '1', foo: 'bar' },
+                                               new: { filter1: '1', foo: 'baz' }
+                                       },
+                                       result: true,
+                                       message: 'Changed unrecognized parameters are a new state'
+                               }
+                       ];
+
+               filtersModel.initializeFilters( mockFilterStructure );
+               uriProcessor = new mw.rcfilters.UriProcessor( filtersModel );
+
+               cases.forEach( function ( testCase ) {
+                       assert.equal(
+                               uriProcessor.isNewState( testCase.states.curr, testCase.states.new ),
+                               testCase.result,
+                               testCase.message
+                       );
+               } );
+       } );
+
+       QUnit.test( 'doesQueryContainRecognizedParams', function ( assert ) {
+               var uriProcessor,
+                       filtersModel = new mw.rcfilters.dm.FiltersViewModel(),
+                       cases = [
+                               {
+                                       query: {},
+                                       result: false,
+                                       message: 'Empty query is not valid for load.'
+                               },
+                               {
+                                       query: { highlight: '1' },
+                                       result: false,
+                                       message: 'Highlight state alone is not valid for load'
+                               },
+                               {
+                                       query: { urlversion: '2' },
+                                       result: true,
+                                       message: 'urlversion=2 state alone is valid for load as an empty state'
+                               },
+                               {
+                                       query: { filter1: '1', foo: 'bar' },
+                                       result: true,
+                                       message: 'Existence of recognized parameters makes the query valid for load'
+                               },
+                               {
+                                       query: { foo: 'bar', debug: true },
+                                       result: false,
+                                       message: 'Only unrecognized parameters makes the query invalid for load'
+                               }
+                       ];
+
+               filtersModel.initializeFilters( mockFilterStructure );
+               uriProcessor = new mw.rcfilters.UriProcessor( filtersModel );
+
+               cases.forEach( function ( testCase ) {
+                       assert.equal(
+                               uriProcessor.doesQueryContainRecognizedParams( testCase.query ),
+                               testCase.result,
+                               testCase.message
+                       );
+               } );
+       } );
+
+       QUnit.test( '_getNormalizedQueryParams', function ( assert ) {
+               var uriProcessor,
+                       filtersModel = new mw.rcfilters.dm.FiltersViewModel(),
+                       cases = [
+                               {
+                                       query: {},
+                                       result: $.extend( true, { urlversion: '2' }, minimalDefaultParams ),
+                                       message: 'Empty query returns defaults (urlversion 1).'
+                               },
+                               {
+                                       query: { urlversion: '2' },
+                                       result: { urlversion: '2' },
+                                       message: 'Empty query returns empty (urlversion 2)'
+                               },
+                               {
+                                       query: { filter1: '0' },
+                                       result: { urlversion: '2', filter4: '1' },
+                                       message: 'urlversion 1 returns query that overrides defaults'
+                               },
+                               {
+                                       query: { filter3: '1' },
+                                       result: { urlversion: '2', filter1: '1', filter4: '1', filter3: '1' },
+                                       message: 'urlversion 1 with an extra param value returns query that is joined with defaults'
+                               }
+                       ];
+
+               filtersModel.initializeFilters( mockFilterStructure );
+               uriProcessor = new mw.rcfilters.UriProcessor( filtersModel );
+
+               cases.forEach( function ( testCase ) {
+                       assert.deepEqual(
+                               uriProcessor._getNormalizedQueryParams( testCase.query ),
+                               testCase.result,
+                               testCase.message
+                       );
+               } );
+       } );
+
+}( mediaWiki, jQuery ) );
index 27d3825..233ec76 100644 (file)
@@ -10,6 +10,9 @@
                        'group2filter1-desc': 'Description of Filter 1 in Group 2',
                        'group2filter2-label': 'xGroup 2: Filter 2',
                        'group2filter2-desc': 'Description of Filter 2 in Group 2'
+               },
+               config: {
+                       wgStructuredChangeFiltersEnableExperimentalViews: true
                }
        } ) );
 
                                        }
                                ]
                        } ],
+                       namespaces = {
+                               0: 'Main',
+                               1: 'Talk',
+                               2: 'User',
+                               3: 'User talk'
+                       },
                        model = new mw.rcfilters.dm.FiltersViewModel();
 
-               model.initializeFilters( definition );
+               model.initializeFilters( definition, namespaces );
 
                assert.ok(
                        model.getItemByName( 'group1__filter1' ) instanceof mw.rcfilters.dm.FilterItem &&
                        model.getItemByName( 'group2__filter2' ) instanceof mw.rcfilters.dm.FilterItem &&
                        model.getItemByName( 'group3__filter1' ) instanceof mw.rcfilters.dm.FilterItem &&
                        model.getItemByName( 'group3__filter2' ) instanceof mw.rcfilters.dm.FilterItem,
+                       model.getItemByName( 'namespace__0' ) instanceof mw.rcfilters.dm.FilterItem,
+                       model.getItemByName( 'namespace__1' ) instanceof mw.rcfilters.dm.FilterItem,
+                       model.getItemByName( 'namespace__2' ) instanceof mw.rcfilters.dm.FilterItem,
+                       model.getItemByName( 'namespace__3' ) instanceof mw.rcfilters.dm.FilterItem,
                        'Filters instantiated and stored correctly'
                );
 
                                group2__filter1: false,
                                group2__filter2: false,
                                group3__filter1: false,
-                               group3__filter2: false
+                               group3__filter2: false,
+                               namespace__0: false,
+                               namespace__1: false,
+                               namespace__2: false,
+                               namespace__3: false
                        },
                        'Initial state of filters'
                );
                                group2__filter1: false,
                                group2__filter2: true,
                                group3__filter1: true,
-                               group3__filter2: false
+                               group3__filter2: false,
+                               namespace__0: false,
+                               namespace__1: false,
+                               namespace__2: false,
+                               namespace__3: false
                        },
                        'Updating filter states correctly'
                );
        } );
 
+       QUnit.test( 'Default filters', function ( assert ) {
+               var definition = [ {
+                               name: 'group1',
+                               title: 'Group 1',
+                               type: 'send_unselected_if_any',
+                               filters: [
+                                       {
+                                               name: 'hidefilter1',
+                                               label: 'Show filter 1',
+                                               description: 'Description of Filter 1 in Group 1',
+                                               default: true
+                                       },
+                                       {
+                                               name: 'hidefilter2',
+                                               label: 'Show filter 2',
+                                               description: 'Description of Filter 2 in Group 1'
+                                       },
+                                       {
+                                               name: 'hidefilter3',
+                                               label: 'Show filter 3',
+                                               description: 'Description of Filter 3 in Group 1',
+                                               default: true
+                                       }
+                               ]
+                       }, {
+                               name: 'group2',
+                               title: 'Group 2',
+                               type: 'send_unselected_if_any',
+                               filters: [
+                                       {
+                                               name: 'hidefilter4',
+                                               label: 'Show filter 4',
+                                               description: 'Description of Filter 1 in Group 2'
+                                       },
+                                       {
+                                               name: 'hidefilter5',
+                                               label: 'Show filter 5',
+                                               description: 'Description of Filter 2 in Group 2',
+                                               default: true
+                                       },
+                                       {
+                                               name: 'hidefilter6',
+                                               label: 'Show filter 6',
+                                               description: 'Description of Filter 3 in Group 2'
+                                       }
+                               ]
+                       }, {
+
+                               name: 'group3',
+                               title: 'Group 3',
+                               type: 'string_options',
+                               separator: ',',
+                               default: 'filter8',
+                               filters: [
+                                       {
+                                               name: 'filter7',
+                                               label: 'Group 3: Filter 1',
+                                               description: 'Description of Filter 1 in Group 3'
+                                       },
+                                       {
+                                               name: 'filter8',
+                                               label: 'Group 3: Filter 2',
+                                               description: 'Description of Filter 2 in Group 3'
+                                       },
+                                       {
+                                               name: 'filter9',
+                                               label: 'Group 3: Filter 3',
+                                               description: 'Description of Filter 3 in Group 3'
+                                       }
+                               ]
+                       } ],
+                       model = new mw.rcfilters.dm.FiltersViewModel();
+
+               model.initializeFilters( definition );
+
+               // Empty query = only default values
+               assert.deepEqual(
+                       model.getDefaultParams(),
+                       {
+                               hidefilter1: '1',
+                               hidefilter2: '0',
+                               hidefilter3: '1',
+                               hidefilter4: '0',
+                               hidefilter5: '1',
+                               hidefilter6: '0',
+                               group3: 'filter8'
+                       },
+                       'Default parameters are stored properly per filter and group'
+               );
+       } );
+
        QUnit.test( 'Finding matching filters', function ( assert ) {
                var matches,
                        definition = [ {
                                        }
                                ]
                        } ],
+                       namespaces = {
+                               0: 'Main',
+                               1: 'Talk',
+                               2: 'User',
+                               3: 'User talk'
+                       },
                        testCases = [
                                {
                                        query: 'group',
                                                group2: [ 'group2__filter1', 'group2__filter2' ]
                                        },
                                        reason: 'Finds filters containing the query string in their group title'
+                               },
+                               {
+                                       query: ':Main',
+                                       expectedMatches: {
+                                               namespace: [ 'namespace__0' ]
+                                       },
+                                       reason: 'Finds namespaces when using : prefix'
+                               },
+                               {
+                                       query: ':group',
+                                       expectedMatches: {},
+                                       reason: 'Finds no results if using namespaces prefix (:) to search for filter title'
                                }
                        ],
                        model = new mw.rcfilters.dm.FiltersViewModel(),
                                return result;
                        };
 
-               model.initializeFilters( definition );
+               model.initializeFilters( definition, namespaces );
 
                testCases.forEach( function ( testCase ) {
                        matches = model.findMatches( testCase.query );
                assert.deepEqual(
                        model.getParametersFromFilters(),
                        {
-                               hidefilter1: 0,
-                               hidefilter2: 0,
-                               hidefilter3: 0,
-                               hidefilter4: 0,
-                               hidefilter5: 0,
-                               hidefilter6: 0,
+                               hidefilter1: '0',
+                               hidefilter2: '0',
+                               hidefilter3: '0',
+                               hidefilter4: '0',
+                               hidefilter5: '0',
+                               hidefilter6: '0',
                                group3: ''
                        },
                        'Unselected filters return all parameters falsey or \'\'.'
                        model.getParametersFromFilters(),
                        {
                                // Group 1 (one selected, the others are true)
-                               hidefilter1: 0,
-                               hidefilter2: 1,
-                               hidefilter3: 1,
+                               hidefilter1: '0',
+                               hidefilter2: '1',
+                               hidefilter3: '1',
                                // Group 2 (nothing is selected, all false)
-                               hidefilter4: 0,
-                               hidefilter5: 0,
-                               hidefilter6: 0,
+                               hidefilter4: '0',
+                               hidefilter5: '0',
+                               hidefilter6: '0',
                                group3: ''
                        },
-                       'One filters in one "send_unselected_if_any" group returns the other parameters truthy.'
+                       'One filter in one "send_unselected_if_any" group returns the other parameters truthy.'
                );
 
                // Select 2 filters
                        model.getParametersFromFilters(),
                        {
                                // Group 1 (two selected, the others are true)
-                               hidefilter1: 0,
-                               hidefilter2: 0,
-                               hidefilter3: 1,
+                               hidefilter1: '0',
+                               hidefilter2: '0',
+                               hidefilter3: '1',
                                // Group 2 (nothing is selected, all false)
-                               hidefilter4: 0,
-                               hidefilter5: 0,
-                               hidefilter6: 0,
+                               hidefilter4: '0',
+                               hidefilter5: '0',
+                               hidefilter6: '0',
                                group3: ''
                        },
-                       'One filters in one "send_unselected_if_any" group returns the other parameters truthy.'
+                       'Two filters in one "send_unselected_if_any" group returns the other parameters truthy.'
                );
 
                // Select 3 filters
                        model.getParametersFromFilters(),
                        {
                                // Group 1 (all selected, all false)
-                               hidefilter1: 0,
-                               hidefilter2: 0,
-                               hidefilter3: 0,
+                               hidefilter1: '0',
+                               hidefilter2: '0',
+                               hidefilter3: '0',
                                // Group 2 (nothing is selected, all false)
-                               hidefilter4: 0,
-                               hidefilter5: 0,
-                               hidefilter6: 0,
+                               hidefilter4: '0',
+                               hidefilter5: '0',
+                               hidefilter6: '0',
                                group3: ''
                        },
                        'All filters selected in one "send_unselected_if_any" group returns all parameters falsy.'
                        model.getParametersFromFilters(),
                        {
                                // Group 1 (all selected, all)
-                               hidefilter1: 0,
-                               hidefilter2: 0,
-                               hidefilter3: 0,
+                               hidefilter1: '0',
+                               hidefilter2: '0',
+                               hidefilter3: '0',
                                // Group 2 (nothing is selected, all false)
-                               hidefilter4: 0,
-                               hidefilter5: 0,
-                               hidefilter6: 0,
+                               hidefilter4: '0',
+                               hidefilter5: '0',
+                               hidefilter6: '0',
                                group3: 'filter7'
                        },
                        'One filter selected in "string_option" group returns that filter in the value.'
                        model.getParametersFromFilters(),
                        {
                                // Group 1 (all selected, all)
-                               hidefilter1: 0,
-                               hidefilter2: 0,
-                               hidefilter3: 0,
+                               hidefilter1: '0',
+                               hidefilter2: '0',
+                               hidefilter3: '0',
                                // Group 2 (nothing is selected, all false)
-                               hidefilter4: 0,
-                               hidefilter5: 0,
-                               hidefilter6: 0,
+                               hidefilter4: '0',
+                               hidefilter5: '0',
+                               hidefilter6: '0',
                                group3: 'filter7,filter8'
                        },
                        'Two filters selected in "string_option" group returns those filters in the value.'
                        model.getParametersFromFilters(),
                        {
                                // Group 1 (all selected, all)
-                               hidefilter1: 0,
-                               hidefilter2: 0,
-                               hidefilter3: 0,
+                               hidefilter1: '0',
+                               hidefilter2: '0',
+                               hidefilter3: '0',
                                // Group 2 (nothing is selected, all false)
-                               hidefilter4: 0,
-                               hidefilter5: 0,
-                               hidefilter6: 0,
+                               hidefilter4: '0',
+                               hidefilter5: '0',
+                               hidefilter6: '0',
                                group3: 'all'
                        },
                        'All filters selected in "string_option" group returns \'all\'.'
 
        } );
 
+       QUnit.test( 'getParametersFromFilters (custom object)', function ( assert ) {
+               var originalState,
+                       model = new mw.rcfilters.dm.FiltersViewModel(),
+                       definition = [ {
+                               name: 'group1',
+                               title: 'Group 1',
+                               type: 'send_unselected_if_any',
+                               filters: [
+                                       { name: 'hidefilter1', label: 'Hide filter 1', description: '' },
+                                       { name: 'hidefilter2', label: 'Hide filter 2', description: '' },
+                                       { name: 'hidefilter3', label: 'Hide filter 3', description: '' }
+                               ]
+                       }, {
+                               name: 'group2',
+                               title: 'Group 2',
+                               type: 'send_unselected_if_any',
+                               filters: [
+                                       { name: 'hidefilter4', label: 'Hide filter 4', description: '' },
+                                       { name: 'hidefilter5', label: 'Hide filter 5', description: '' },
+                                       { name: 'hidefilter6', label: 'Hide filter 6', description: '' }
+                               ]
+                       }, {
+                               name: 'group3',
+                               title: 'Group 3',
+                               type: 'string_options',
+                               separator: ',',
+                               filters: [
+                                       { name: 'filter7', label: 'Hide filter 7', description: '' },
+                                       { name: 'filter8', label: 'Hide filter 8', description: '' },
+                                       { name: 'filter9', label: 'Hide filter 9', description: '' }
+                               ]
+                       } ],
+                       cases = [
+                               {
+                                       // This is mocking the cases above, both
+                                       // - 'Two filters in one "send_unselected_if_any" group returns the other parameters truthy.'
+                                       // - 'Two filters selected in "string_option" group returns those filters in the value.'
+                                       input: {
+                                               group1__hidefilter1: true,
+                                               group1__hidefilter2: true,
+                                               group1__hidefilter3: false,
+                                               group2__hidefilter4: false,
+                                               group2__hidefilter5: false,
+                                               group2__hidefilter6: false,
+                                               group3__filter7: true,
+                                               group3__filter8: true,
+                                               group3__filter9: false
+                                       },
+                                       expected: {
+                                               // Group 1 (two selected, the others are true)
+                                               hidefilter1: '0',
+                                               hidefilter2: '0',
+                                               hidefilter3: '1',
+                                               // Group 2 (nothing is selected, all false)
+                                               hidefilter4: '0',
+                                               hidefilter5: '0',
+                                               hidefilter6: '0',
+                                               group3: 'filter7,filter8'
+                                       },
+                                       msg: 'Given an explicit (complete) filter state object, the result is the same as if the object given represented the model state.'
+                               },
+                               {
+                                       // This is mocking case above
+                                       // - 'One filter in one "send_unselected_if_any" group returns the other parameters truthy.'
+                                       input: {
+                                               group1__hidefilter1: 1
+                                       },
+                                       expected: {
+                                               // Group 1 (one selected, the others are true)
+                                               hidefilter1: '0',
+                                               hidefilter2: '1',
+                                               hidefilter3: '1',
+                                               // Group 2 (nothing is selected, all false)
+                                               hidefilter4: '0',
+                                               hidefilter5: '0',
+                                               hidefilter6: '0',
+                                               group3: ''
+                                       },
+                                       msg: 'Given an explicit (incomplete) filter state object, the result is the same as if the object give represented the model state.'
+                               },
+                               {
+                                       input: {},
+                                       expected: {
+                                               hidefilter1: '0',
+                                               hidefilter2: '0',
+                                               hidefilter3: '0',
+                                               hidefilter4: '0',
+                                               hidefilter5: '0',
+                                               hidefilter6: '0',
+                                               group3: ''
+                                       },
+                                       msg: 'Given an explicit empty object, the result is all filters set to their falsey unselected value.'
+                               }
+                       ];
+
+               model.initializeFilters( definition );
+               // Store original state
+               originalState = model.getSelectedState();
+
+               // Test each case
+               cases.forEach( function ( test ) {
+                       assert.deepEqual(
+                               model.getParametersFromFilters( test.input ),
+                               test.expected,
+                               test.msg
+                       );
+               } );
+
+               // After doing the above tests, make sure the actual state
+               // of the filter stayed the same
+               assert.deepEqual(
+                       model.getSelectedState(),
+                       originalState,
+                       'Running the method with external definition to parse does not actually change the state of the model'
+               );
+       } );
+
        QUnit.test( 'getFiltersFromParameters', function ( assert ) {
                var definition = [ {
                                name: 'group1',
                                        }
                                ]
                        } ],
-                       defaultFilterRepresentation = {
-                               // Group 1 and 2, "send_unselected_if_any", the values of the filters are "flipped" from the values of the parameters
+                       baseFilterRepresentation = {
                                group1__hidefilter1: false,
-                               group1__hidefilter2: true,
+                               group1__hidefilter2: false,
                                group1__hidefilter3: false,
-                               group2__hidefilter4: true,
+                               group2__hidefilter4: false,
                                group2__hidefilter5: false,
-                               group2__hidefilter6: true,
-                               // Group 3, "string_options", default values correspond to parameters and filters
+                               group2__hidefilter6: false,
                                group3__filter7: false,
-                               group3__filter8: true,
+                               group3__filter8: false,
                                group3__filter9: false
                        },
                        model = new mw.rcfilters.dm.FiltersViewModel();
                // Empty query = only default values
                assert.deepEqual(
                        model.getFiltersFromParameters( {} ),
-                       defaultFilterRepresentation,
-                       'Empty parameter query results in filters in initial default state'
+                       baseFilterRepresentation,
+                       'Empty parameter query results in an object representing all filters set to false'
                );
 
                assert.deepEqual(
                        model.getFiltersFromParameters( {
                                hidefilter2: '1'
                        } ),
-                       $.extend( {}, defaultFilterRepresentation, {
-                               group1__hidefilter1: false, // The text is "show filter 1"
+                       $.extend( {}, baseFilterRepresentation, {
+                               group1__hidefilter1: true, // The text is "show filter 1"
                                group1__hidefilter2: false, // The text is "show filter 2"
-                               group1__hidefilter3: false // The text is "show filter 3"
+                               group1__hidefilter3: true // The text is "show filter 3"
                        } ),
                        'One truthy parameter in a group whose other parameters are true by default makes the rest of the filters in the group false (unchecked)'
                );
                                hidefilter2: '1',
                                hidefilter3: '1'
                        } ),
-                       $.extend( {}, defaultFilterRepresentation, {
+                       $.extend( {}, baseFilterRepresentation, {
                                group1__hidefilter1: false, // The text is "show filter 1"
                                group1__hidefilter2: false, // The text is "show filter 2"
                                group1__hidefilter3: false // The text is "show filter 3"
                );
 
                // The result here is ignoring the first toggleFiltersSelected call
-               // We should receive default values + hidefilter6 as false
                assert.deepEqual(
                        model.getSelectedState(),
-                       $.extend( {}, defaultFilterRepresentation, {
-                               group2__hidefilter5: false,
+                       $.extend( {}, baseFilterRepresentation, {
+                               group2__hidefilter4: true,
+                               group2__hidefilter5: true,
                                group2__hidefilter6: false
                        } ),
                        'getFiltersFromParameters does not care about previous or existing state.'
                model = new mw.rcfilters.dm.FiltersViewModel();
                model.initializeFilters( definition );
 
-               model.toggleFiltersSelected(
-                       model.getFiltersFromParameters( {
-                               hidefilter1: '0'
-                       } )
-               );
-               model.toggleFiltersSelected(
-                       model.getFiltersFromParameters( {
-                               hidefilter1: '1'
-                       } )
-               );
-
-               // Simulates minor edits being hidden in preferences, then unhidden via URL
-               // override.
-               assert.deepEqual(
-                       model.getSelectedState(),
-                       defaultFilterRepresentation,
-                       'After checking and then unchecking a \'send_unselected_if_any\' filter (without touching other filters in that group), results are default'
-               );
-
                model.toggleFiltersSelected(
                        model.getFiltersFromParameters( {
                                group3: 'filter7'
                );
                assert.deepEqual(
                        model.getSelectedState(),
-                       $.extend( {}, defaultFilterRepresentation, {
+                       $.extend( {}, baseFilterRepresentation, {
                                group3__filter7: true,
                                group3__filter8: false,
                                group3__filter9: false
                );
                assert.deepEqual(
                        model.getSelectedState(),
-                       $.extend( {}, defaultFilterRepresentation, {
+                       $.extend( {}, baseFilterRepresentation, {
                                group3__filter7: true,
                                group3__filter8: true,
                                group3__filter9: false
                );
                assert.deepEqual(
                        model.getSelectedState(),
-                       $.extend( {}, defaultFilterRepresentation, {
+                       $.extend( {}, baseFilterRepresentation, {
                                group3__filter7: true,
                                group3__filter8: true,
                                group3__filter9: true
                );
                assert.deepEqual(
                        model.getSelectedState(),
-                       $.extend( {}, defaultFilterRepresentation, {
+                       $.extend( {}, baseFilterRepresentation, {
                                group3__filter7: true,
                                group3__filter8: true,
                                group3__filter9: true
                );
                assert.deepEqual(
                        model.getSelectedState(),
-                       $.extend( {}, defaultFilterRepresentation, {
+                       $.extend( {}, baseFilterRepresentation, {
                                group3__filter7: true,
                                group3__filter8: false,
                                group3__filter9: true
                );
        } );
 
-       QUnit.test( 'setFiltersToDefaults', function ( assert ) {
-               var definition = [ {
-                               name: 'group1',
-                               title: 'Group 1',
-                               type: 'send_unselected_if_any',
-                               filters: [
-                                       {
-                                               name: 'hidefilter1',
-                                               label: 'Show filter 1',
-                                               description: 'Description of Filter 1 in Group 1',
-                                               default: true
-                                       },
-                                       {
-                                               name: 'hidefilter2',
-                                               label: 'Show filter 2',
-                                               description: 'Description of Filter 2 in Group 1'
-                                       },
-                                       {
-                                               name: 'hidefilter3',
-                                               label: 'Show filter 3',
-                                               description: 'Description of Filter 3 in Group 1',
-                                               default: true
-                                       }
-                               ]
-                       }, {
-                               name: 'group2',
-                               title: 'Group 2',
-                               type: 'send_unselected_if_any',
-                               filters: [
-                                       {
-                                               name: 'hidefilter4',
-                                               label: 'Show filter 4',
-                                               description: 'Description of Filter 1 in Group 2'
-                                       },
-                                       {
-                                               name: 'hidefilter5',
-                                               label: 'Show filter 5',
-                                               description: 'Description of Filter 2 in Group 2',
-                                               default: true
-                                       },
-                                       {
-                                               name: 'hidefilter6',
-                                               label: 'Show filter 6',
-                                               description: 'Description of Filter 3 in Group 2'
-                                       }
-                               ]
-                       } ],
-                       defaultFilterRepresentation = {
-                               // Group 1 and 2, "send_unselected_if_any", the values of the filters are "flipped" from the values of the parameters
-                               group1__hidefilter1: false,
-                               group1__hidefilter2: true,
-                               group1__hidefilter3: false,
-                               group2__hidefilter4: true,
-                               group2__hidefilter5: false,
-                               group2__hidefilter6: true
-                       },
-                       model = new mw.rcfilters.dm.FiltersViewModel();
-
-               model.initializeFilters( definition );
-
-               assert.deepEqual(
-                       model.getSelectedState(),
-                       {
-                               group1__hidefilter1: false,
-                               group1__hidefilter2: false,
-                               group1__hidefilter3: false,
-                               group2__hidefilter4: false,
-                               group2__hidefilter5: false,
-                               group2__hidefilter6: false
-                       },
-                       'Initial state: default filters are not selected (controller selects defaults explicitly).'
-               );
-
-               model.toggleFiltersSelected( {
-                       group1__hidefilter1: false,
-                       group1__hidefilter3: false
-               } );
-
-               model.setFiltersToDefaults();
-
-               assert.deepEqual(
-                       model.getSelectedState(),
-                       defaultFilterRepresentation,
-                       'Changing values of filters and then returning to defaults still results in default filters being selected.'
-               );
-       } );
-
        QUnit.test( 'Filter interaction: subsets', function ( assert ) {
                var definition = [ {
                                name: 'group1',
index 1bc4c06..d6fe744 100644 (file)
                        title = mw.Title.newFromImg( { src: thisCase.url } );
 
                        if ( thisCase.nameText !== undefined ) {
-                               prefix = '[' + thisCase.typeOfUrl + ' URL' + '] ';
+                               prefix = '[' + thisCase.typeOfUrl + ' URL] ';
 
                                assert.notStrictEqual( title, null, prefix + 'Parses successfully' );
                                assert.equal( title.getNameText(), thisCase.nameText, prefix + 'Filename matches original' );
index 7a0de81..06ea9bc 100644 (file)
                function isCssImportApplied() {
                        // Trigger reflow, repaint, redraw, whatever (cross-browser)
                        $element.css( 'height' );
+                       // eslint-disable-next-line no-unused-expressions
                        el.innerHTML;
                        el.className = el.className;
+                       // eslint-disable-next-line no-unused-expressions
                        document.documentElement.clientHeight;
 
                        return $element.css( prop ) === val;
index 70a7e35..477550b 100644 (file)
@@ -7,21 +7,22 @@
        } ) );
 
        QUnit.asyncTest( 'toggleToc', function ( assert ) {
-               var tocHtml, $toggleLink, $tocList;
+               var tocHtml, $toc, $toggleLink, $tocList;
 
-               assert.strictEqual( $( '#toc' ).length, 0, 'There is no table of contents on the page at the beginning' );
+               assert.strictEqual( $( '.toc' ).length, 0, 'There is no table of contents on the page at the beginning' );
 
                tocHtml = '<div id="toc" class="toc">' +
-                       '<div id="toctitle" class="toctitle">' +
+                       '<div class="toctitle">' +
                        '<h2>Contents</h2>' +
                        '</div>' +
                        '<ul><li></li></ul>' +
                        '</div>';
-               $( tocHtml ).appendTo( '#qunit-fixture' );
+               $toc = $( tocHtml );
+               $( '#qunit-fixture' ).append( $toc );
                mw.hook( 'wikipage.content' ).fire( $( '#qunit-fixture' ) );
 
-               $tocList = $( '#toc ul:first' );
-               $toggleLink = $( '#toc .togglelink' );
+               $tocList = $toc.find( 'ul:first' );
+               $toggleLink = $toc.find( '.togglelink' );
 
                assert.strictEqual( $toggleLink.length, 1, 'Toggle link is added to the table of contents' );
 
index 0e88740..da04c8d 100644 (file)
                var pTestTb, pCustom, vectorTabs, tbRL, cuQuux, $cuQuux, tbMW, $tbMW, tbRLDM, caFoo,
                        addedAfter, tbRLDMnonexistentid, tbRLDMemptyjquery;
 
-               pTestTb = '\
-               <div class="portlet" id="p-test-tb">\
-                       <h3>Toolbox</h3>\
-                       <ul class="body"></ul>\
-               </div>';
-               pCustom = '\
-               <div class="portlet" id="p-test-custom">\
-                       <h3>Views</h3>\
-                       <ul class="body">\
-                               <li id="c-foo"><a href="#">Foo</a></li>\
-                               <li id="c-barmenu">\
-                                       <ul>\
-                                               <li id="c-bar-baz"><a href="#">Baz</a></a>\
-                                       </ul>\
-                               </li>\
-                       </ul>\
-               </div>';
-               vectorTabs = '\
-               <div id="p-test-views" class="vectorTabs">\
-                       <h3>Views</h3>\
-                       <ul></ul>\
-               </div>';
+               pTestTb =
+                       '<div class="portlet" id="p-test-tb">' +
+                               '<h3>Toolbox</h3>' +
+                               '<ul class="body"></ul>' +
+                       '</div>';
+               pCustom =
+                       '<div class="portlet" id="p-test-custom">' +
+                               '<h3>Views</h3>' +
+                               '<ul class="body">' +
+                                       '<li id="c-foo"><a href="#">Foo</a></li>' +
+                                       '<li id="c-barmenu">' +
+                                               '<ul>' +
+                                                       '<li id="c-bar-baz"><a href="#">Baz</a></a>' +
+                                               '</ul>' +
+                                       '</li>' +
+                               '</ul>' +
+                       '</div>';
+               vectorTabs =
+                       '<div id="p-test-views" class="vectorTabs">' +
+                               '<h3>Views</h3>' +
+                               '<ul></ul>' +
+                       '</div>';
 
                $( '#qunit-fixture' ).append( pTestTb, pCustom, vectorTabs );
 
index b2d0bdd..d64ada9 100644 (file)
@@ -5,6 +5,9 @@
                "mocha": true,
                "node": true
        },
+       "parserOptions": {
+               "ecmaVersion": 6
+       },
        "globals": {
                "browser": false
        }
index f132899..adbd8c3 100644 (file)
@@ -30,6 +30,14 @@ exports.config = {
                'vagrant' :
                process.env.MEDIAWIKI_PASSWORD,
        //
+       // ======
+       // Sauce Labs
+       // ======
+       //
+       services: [ 'sauce' ],
+       user: process.env.SAUCE_USERNAME,
+       key: process.env.SAUCE_ACCESS_KEY,
+       //
        // ==================
        // Specify Test Files
        // ==================
index d97f8e8..7c3e757 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -530,15 +530,6 @@ function wfExtractThumbParams( $file, $params ) {
        $thumbname = $params['thumbName'];
        unset( $params['thumbName'] );
 
-       // Do the hook first for older extensions that rely on it.
-       if ( !Hooks::run( 'ExtractThumbParameters', [ $thumbname, &$params ] ) ) {
-               // Check hooks if parameters can be extracted
-               // Hooks return false if they manage to *resolve* the parameters
-               // This hook should be considered deprecated
-               wfDeprecated( 'ExtractThumbParameters', '1.22' );
-               return $params; // valid thumbnail URL (via extension or config)
-       }
-
        // FIXME: Files in the temp zone don't set a MIME type, which means
        // they don't have a handler. Which means we can't parse the param
        // string. However, not a big issue as what good is a param string